RAM如何与CPU一起工作?


8

我正在读一本汇编语言书。本书的问题在于它试图解释ram如何与CPU一起工作,但没有深入解释。

我想知道在存储或检索数据时存储单元,地址线和数据引脚如何工作。

Answers:


9

所有存储单元的级别均为01。CPU告诉存储设备它需要哪些二进制值的单元,并将该地址提供给存储设备。在存储设备内部,地址在行和列地址中解码,并且允许矩阵中该位置的单元将其数据获取到数据总线,即数据引脚。

假设我们有一个8位地址01100101。这将分为行地址0110(高位半字节)和列地址0101(低位半字节)。该行地址选择了行#06,因此连接到该行的所有单元都将准备好数据。列地址选择该行第05列的单元,因此最终仅允许一个单元将其数据放置到输出引脚。

存储数据遵循相同的模式:仅选择一行,并且该行中给定列的单元将获取存储在引脚上的数据。

这是1位。该操作同时针对整个数据字宽进行,因此,如果您具有字节宽的存储器,则会检索8位并将其值放在8个数据总线引脚上。

编辑
这张图片应该可以帮助您更好地了解事物:

记忆体阵列

这是DRAM阵列的一种表示形式,其中数据存储在电容器电荷中,每个电容器为一位。地址的行部分(此处为A1..A0)选择一行,这意味着它们激活该行上的所有FET,以便该行的电容器的电平在其对应的列上可用。然后,由地址的另一部分A3..A2控制的列地址选择块选择我们要从中获取数据的一位。

DRAM易于构建,但有一个令人讨厌的缺点:读取数据会使电容器放电,从而丢失数据。为了解决这个问题,DRAM具有检测放大器,该放大器检测当前存储单元的状态并在读取时对其进行刷新。此外,必须定期执行此刷新操作,因为即使不读取内存,电容器的电荷也会泄漏掉。由于DRAM单元的紧凑性,可以轻松补偿对刷新电路的需求。

SRAM使用几个晶体管来存储数据,并且它不会像DRAM一样易失(尽管关闭电源后数据仍然消失了)。使用EEPROMFlash,数据存储在FET的(绝缘)浮栅中,因此在断电时不会丢失数据。


进一步阅读:关于闪存中数据保留的
答案


//非常感谢您的回答。我可以问一个新问题吗?你在哪里学的?我仍然不完全了解...可能是因为我无法形象化。您有我可以参考的图片或书籍吗?
月亮

@Moon-很久以前在大学里学到的。我认为我的课程中会有图片,但是我不再有该课程了(那是所有在纸上的时间!)。我将查看是否可以找到它的好图片,如果找到我的照片,我会将其添加到我的答案中。
stevenvh 2011年

1
不一定需要大学才能理解它,但是您确实需要了解电阻器,电容和网络的基础知识,以及对各种转接器如何工作的功能性了解。我想知道在Petzold的CODE书中是否以及如何涵盖该主题,可能值得在图书馆或书店中翻阅。
old_timer 2011年

1
如果您想了解计算的内部知识,我强烈建议您仔细阅读“从nand到tetris”。到本书完成一半时,您已经为自己构建了可以正常工作的CPU和RAM。如果您已经掌握了一些必不可少的知识,则可以快速阅读,如果没有必要的知识,则它不会走出任何一步。
James M. Lay
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.