• 注册 / 登录
  • 切换到窄版
  • 查看: 382|回复: 0

    图解随机存取存储器工作原理

    [复制链接]

    665

    主题

    679

    帖子

    6461

    积分

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    6461
    发表于 2024-5-25 22:55:03 | 显示全部楼层 |阅读模式

    路线栈欢迎您!

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    前言

    RAM:随机访问存储器(Random Access Memory)易失性,它是与CPU直接交换数据的内部存储器,它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。凡是整个程序运行过程中,所用到的需要被改写的量(包括全局变量、局部变量、堆栈段等),都存储在RAM中。

    1.png

    随机访问存储器分为两类:静态随机存取存储器(Static Random-Access Memory,SRAM)是指这种存储器只要保持通电,里面储存的数据就可以恒常保持。动态随机存取存储器(Dynamic Random Access Memory,DRAM)是指这种存储器需要定时刷新,才能保证数据的正常存储。静态的RAM(SRAM)比动态RAM(DRAM)更快,但也贵很多。

    存储器原理

    SRAM存储器单元是计算机存储器的基本构建部分,存储器单元是一个电子电路;它存储一个比特的二进制信息,它必须被设置为存储逻辑1(高电压电平)和复位以存储逻辑0(低电压电平)。它的值一直保持/存储,直到通过设置/重置过程对其进行更改,可以通过读取来访问存储单元中的值。

    2.png

    第一种类型,SRAM单元是一种触发器电路,基本由4 个晶体管和两个电阻器或者6 只晶体管组成,当 SRAM 单元被赋予0 或者1的状态之后,它会保持这个状态直到下次被赋予新的状态或者断电之后才会更改或者消失。正是由于 SRAM 单元结构是通过切换晶体管的状态来实现0 和1 这两个状态,所以SRAM 的读取过程并不会造成SRAM 内存储的的信息的丢失,则不存在刷新的问题。这意味着SRAM在不被访问时需要非常低的功耗,但是它昂贵且存储密度低。

    3.png

    第二种类型,DRAM单元是一个晶体管和一个电容组成,电容的状态决定着内存基本存储单元的逻辑状态是“0”还是“1”,充满电荷的电容器代表逻辑“1”,“空”的电容器代表逻辑“0”。电容存储的电荷一般是会慢慢泄漏的,电容需要电流进行充电,而电流充电的过程也是需要一定时间的,一般是0.2-0.18 微秒,在这个充电的过程中内存是不能被访问的。由于内存工作环境所限制,不可能无限制的提高电流的强度,存储单元大约有1%的时间用在了刷新;由于与SRAM相比简单,可以实现更大的存储密度和更低的单位成本。

    4.png

    存储器结构排列

    其容量由地址线和数据线共同构成;译码驱动方式分为线选法和重合法。

    1.线选法:用一根字选择线,直接选中一个存储单元的各个位。

    5.png

    优点: 结构简单;

    缺点: 不适于容量大的存储芯片,因为是直接通过地址线选择,如果有10根地址线,则容量为1K,需要引出210条字线。

    2.重合法:用两根字选择线,同时选中时,才能选中一个存储单元的一个位。

    6.png

    优点: 适用于容量大的芯片,比如10根地址线,容量为1K,但是只需要引出2*25条字线。

    缺点: 结构复杂

    存储器寻址原理

    RAM 主要的作用就是存储代码和数据供CPU 在需要的时候调用。但是这些数据并不是像用袋子盛米那么简单,更像是图书馆中用有格子的书架存放书籍一样,不但要放进去还要能够在需要的时候准确的调用出来,虽然都是书但是每本书是不同的。对于RAM 等存储器来说也是一样的,虽然存储的都是代表0 和1 的代码,但是不同的组合就是不同的数据。

    7.png

    让我们重新回到书和书架上来,如果有一个书架上有10 行和10 列格子(每行和每列都有0-9 的编号),有100 本书要存放在里面,那么我们使用一个行的编号加一个列的编号就能确定某一本书的位置。如果已知这本书的编号87,那么我们首先锁定第8 行,然后找到第7 列就能准确的找到这本书了。

    在RAM 存储器中也是利用了相似的原理,对于RAM 存储器而言数据总线是用来传入数据或者传出数据的。因为存储器中的存储空间是如果前面提到的存放图书的书架一样通过一定的规则定义的,所以我们可以通过这个规则来把数据存放到存储器上相应的位置,而进行这种定位的工作就要依靠地址总线来实现了。

    1.线性存取

    对于CPU来说,RAM 就象是一条长长的有很多空格的细线,每个空格都有一个唯一的地址与之相对应。如果CPU 想要从RAM 中调用数据,它首先需要给地址总线发送地址数据定位要存取的数据,然后等待若干个时钟周期之后,数据总线就会把数据传输给CPU。下面的示意图可以帮助你很好的理解这个过程。

    8.png

    上图中的小圆点代表RAM 中的存储空间,每一个都有一个唯一的地址线同它相连。当地址解码器接收到地址总线送来的地址数据之后,它会根据这个数据定位CPU 想要调用的数据所在的位置,然后数据总线就会把其中的数据传送到CPU。

    上面所列举的例子中CPU 在一行数据中每次只是存取一个字节的数据,但是在现实世界中是不同的,通常CPU 每次需要调用32bit 或者是64bit 的数据(这是根据不同计算机系统的数据总线的位宽所决定的)。如果数据总线是64bit 的话,CPU 就会在一个时间中存取8个字节的数据,因为每次还是存取1 个字节的数据,64bit 总线将不会显示出来任何的优势,工作的效率将会降低很多。

    2. 从线到矩阵

    如果RAM 对于CPU 来说仅仅是一条“线”的话,还不能体现实际的运行情况。因为如果实际情况真的是这样的话,在实际制造芯片的时候,会有很多实际的困难,特别是在需要设计大容量的RAM 的时候。

    一种更好的能够降低成本的方法是让存储信息的“空格”排列为很多行,每个“空格”对应一个bit 存储的位置。这样要存储1024bits的数据,那么你只要使用32x32 的矩阵就能够达到这个目的了。很明显一个32x32 的矩阵比一个1024bit 的行设备更紧凑,实现起来也更加容易,请看下图:

    9.png

    对于CPU处理器,它通过地址总线发出一个具有22 位二进制数字的地址编码;其中11 位是行地址,另外11 位是列地址,这是通过RAM 地址接口进行分离的。

    行地址解码器(row decoder)将会首先确定行地址,然后列地址解码器(column decoder)将会确定列地址,这样就能确定唯一的存储数据的位置,然后该数据就会通过RAM 数据接口将数据传到数据总线。

    结语

    SRAM 可以比DRAM 高的频率来运行,主要是因为获取前8 个字节的时间延迟大大缩短了;SRAM 需要2-3 个时钟周期来得到想要的数据(这里我们暂时忽略CPU、芯片组和内存DIMM 控制电路之间的延迟),不过同样的过程DRAM 需要大约3-9 个时钟周期。当然因为构造不同,SRAM 比 DRAM 存储1bit 数据的成本的高 4 倍,因为它的所需要的晶体管数目是后者的 4 倍以上。SRAM 因为存取延迟时间非常的短,所以它的工作频率能够达到很高,因此可以带来更高的带宽。

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|路丝栈 ( 粤ICP备2021053448号 )

    GMT+8, 2024-9-8 08:51 , Processed in 0.046709 second(s), 22 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表