以上就是我学习唐溯飞《计算机组成原理》还有找了几本外国教材参考后所得出的回答。但是我觉得还是没有回答到点子上。因为“通过地址总线把地址送至内存”,这里还是没有说明到底如何找到内存的这个地址。然后我深入找了地址总线的资料,发现几本书籍都基本上只是说“地址总线主要用来指出数据总线上的源数据或目的数据在主存单元的地址或I/O设备的地址。(ps:大家有什么好的计算机组成原理教材推荐吗?我找过几本书,但是都不够国人的那本教材详细)
接着去网上搜集了一些资料,基本上都是只有粗略的说法,在wiki上
”When a processor or DMA-enabled device needs to read or write to a memory location, it specifies that memory location on the address bus (the value to be read or written is sent on the data bus). The width of the address bus determines the amount of memory
a system can address. “
和实现
”Early processors used a wire for each bit of the address width. For example, a 16-bit address bus had 16 physical wires making up the bus. As the buses became wider, this approach became expensive in terms of the number of chip pins and board traces. Beginning
with the Mostek 4096 DRAM, address multiplexing implemented with multiplexers became common. In a multiplexed address scheme, the address is sent in two equal parts on alternate bus cycles. This halves the number of address bus signals required to connect
to the memory. For example, a 32-bit address bus can be implemented by using 16 lines and sending the first half of the memory address, immediately followed by the second half.“
开始我以为这样可以解答,但是感觉还是差点。再去看看《编码》,我发现,其实只要知道地址总线传输过去的二进制地址,就可以通过类似这样的选择电路把内存(或里面锁存器【其实就是存放一位信息的触发器】)的信息读出。
补充下:因为有采用虚拟内存,CPU还要将一个虚拟内存空间中的地址转换为物理地址再送至内存。
以上就是我的理解。若有错漏,还望各位不吝指教。