cpu怎么知道某个内存地址对应的哪个物理内存块的?另外,已知地址后,读取数据的原理是什么?

是否有个专门的硬件或机制来存储内存的地址和实际物理内存单元的对应关系?

你的问题挺有意思,说下我个人理解,交流一下。问题可以转化为内存地址、内存空间、寻址的问题。这些是从硬件的角度实现的,所以从硬件角度会比较好理解。
一、是否有个专门的硬件或机制来存储内存的地址和实际物理内存单元的对应关系?
虽然说 内存地址一个编号,代表一个内存空间;内存的地址和空间是一一对应且永久绑定的;但内存有地址却没有目录。为什么没有呢?因为划不来。
一个内存地址代表一个字节(8bit)的存储空间,但存储一个地址需要4个字节(以32位为例),如果做个对应表那就是亏大了。那么,怎么告诉CPU去哪个地址取数据呢?这就是你说的另一个问题。
二、cpu怎么知道某个内存地址对应的哪个物理内存块的?
其实cpu是不知道的(呵呵,别拍我-_-!!),cpu是个只有夹娃娃机智商的快递员。
假设cpu是个快递员(指读取数据部分),那内存就是个蜂巢柜。内存就好像是一些格子,比如一个3行3列的柜子,一共9格(0是起始位置,后面用到)。
0
123
456
789
我们想拿出2行2列的数据,那么怎么告诉cpu呢?重点来了,cpu是个只有夹娃娃机智商的快递员。
方法一:我们告诉CPU快递,请你拿出第2行第2列的数据,然儿CPU是个没目录的2货,这超出了他理解的范围,没懂。
方法二:我们只好直接命令cpu(假设cpu手放起始位置0):右移2格,下移2格,拿出。这样cpu就听懂了,因为它就是个夹娃娃机的智商,只能用夹娃娃机的方式工作。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-12-04
信号卫星定位、读取软件设备
相似回答