Exactly. If you want to read it from the same address it'll work, but if you need one 32-bit word from one address and another 32-bit from a different address (which is called random access), 64-bit wide memory won't help.
This is not a random access. Random access implies access to random addresses sequentially, not simultaneously. And doubling the data means you process double word per cycle by doubling your processing pipeline.
Yeap. Originally, we want to fetch 32-bit data
sequentially at random addresses (such as 0x04, 0x20, 0x1e, 0x03 etc.). But we want to do it 2x faster than the memory can sustain.
You suggest using fetches from 64-bit memory (two halves
simultaneously) to solve this problem. This way you do get two 32-bit data pieces at once, thus meeting the speed requirement. But your method implies that both upper and lower halves of the 64-bit data you have fetched must go from the same place (e.g. if we fetched the first 32-bit data from 0x04, the second one will not be from 0x20), which is not what we originally wanted. Thus the random access requirement is not met.