精华内容
下载资源
问答
  • 处理器性能每年以60%的速率增长,存储器芯片每年仅仅增加10%的带宽,本文就如何设计一种符合当代DRAM结构的高效存储器控制器进行研究。  本文第二部分介绍当代DRAM结构特点;第三部分介绍存储器控制器结构以及...
  • 分别基于Hynix公司的SRAM HY64UD16322A和DRAM HY57V281620E,介绍了采用两种不同的RAM结构,通过CPLD来设计并实现大容量FIFO的方法。
  • 本文分别针对Hynix公司的两款SRAM和DRAM器件,介绍了使用CPLD进行接口连接和编程控制,来构成低成本、大容量、高速度FIFO的方法。该方法具有通用性,可以方便地移植到与其他
  • DRAM存储系统结构

    千次阅读 2020-02-28 11:52:48
    这几天在学习DRAM存储结构的基本知识,为了更好地理解DRAM结构的基本知识,仔细阅读了Memory Systems Cache, DRAM, Disk这本书中第十章节的内容,并翻译了所述内容。为了方便以后查阅,把所做笔记记录一下。 DRAM...

    这几天在学习DRAM存储结构的基本知识,为了更好地理解DRAM结构的基本知识,仔细阅读了Memory Systems Cache, DRAM, Disk这本书中第十章节的内容,并翻译了所述内容。为了方便以后查阅,把所做笔记记录一下。

    DRAM存储系统结构
    前几章研究了DRAM设备的基本组成部分和信号问题,这些问题限制了数据在DRAM设备中的传输和后续的存储。在本章中,描述了DRAM存储系统的基本术语和构建块。利用前几章所述的构建块,本章将研究大型存储系统中多个DRAM设备的构造,组织和操作问题。本章包括术语和拓扑,以及各种类型的内存模块的组织结构。
    10.1常规存储系统
    在一个给定的DRAM设备中所包含的存储位数受到制造工艺技术、单元大小、阵列效率和缺陷单元重映射机制对提高产量的有效性的限制。 随着制造工艺技术按照摩尔定律的发展,给定DRAM设备中包含的存储位数每隔几年将翻一番。然而,按照摩尔定律发展的必然结果是西北太平洋地区和其他地区的软件公司编写的软件将会把可用的存储自动的扩展到给定的系统当中。因此,在任何给定的实例中,除了专业嵌入式系统外,单个DRAM设备中包含的存储位数将无法继续用作大多数计算平台的主存储器。
    在过去的几十年中,DRAM设备的存储容量的增长速度与台式计算机,工作站和服务器的内存系统大小的增长速度大致相当。并行增长率决定了系统设计,因为在大多数计算平台中,多个DRAM设备必须连接在一起才能形成内存系统。在本章中,探讨了针对成本和性能问题而设计的不同多芯片DRAM存储系统的组织结构和不同的互联策略。
    在图10.1中,多个DRAM设备相互连接在一起,形成一个由单个内存控制器管理的单个内存系统。在现代计算机系统中,一个或多个DRAM内存控制器(DMC)可以包含在处理器中,也可以集成到驻留在处理器之外的系统控制器中。不管DRAM内存控制器的位置如何,它的功能是接受对内存中给定地址的读和写请求,将请求转换为一个或多个命令给内存系统,按照适当的时间序列向DRAM设备发出这些命令,并从系统中的处理器或I/O设备中检索或存储数据。系统控制器的内部结构在另一章中进行了研究。本章重点介绍多设备存储系统中DRAM设备的组织结构。

    10.2基本术语
    将多个DRAM设备组织到一个内存系统中,可能会影响内存系统在系统存储容量、操作数据速率、访问延迟和可持续带宽特性方面的性能。因此,至关重要的是,详细检查将多个DRAM设备组织到更大的存储系统中的情况。然而,由于缺乏普遍接受的命名法,阻碍了对DRAM存储器系统组织的研究。在没有明确定义通用术语的情况下,技术文章和数据表在讨论DRAM存储系统结构时有时会成功引起混乱,而不是更清晰。在第一个例子中,系统控制器的数据表在同一页面的两个项目符号项中使用了单词bank来表示两种不同的含义。在此数据表中,一个项目编号表示系统控制器可以支持6个(DRAM设备的)bank。然而,同一数据表中的后面几个编号表示同一系统控制器可以支持具有4个bank的SDRAM设备。在第二个例子中,著名技术期刊上的一篇文章研究了当时来自英特尔的新i875P系统控制器,并讨论了系统控制器的性能优势,因为i875P系统控制器可以控制2个bank的DRAM设备(它可以控制两个完整的通道)。
    在这里插入图片描述
    在这两个示例中,单词bank被用来表示了三种不同的意思。 虽然在每种情况下都可以从上下文中推断出单词bank的含义,但该词的重载和重复使用给关于DRAM存储系统的讨论带来了不必要的混乱。在本节中,channel、rank、bank、row和column的使用都会被定义,本章和后续章节中的讨论将符合本章的使用。

    10.2.1 channel(通道)
    图10.2显示了三个不同的系统控制器,它们对DRAM内存系统的配置略有不同。在图10.2中,每个系统控制器都有一个DRAM存储控制器(DMC),每个DRAM内存控制器控制一个内存通道。在标记为典型系统控制器的示例中,系统控制器控制单个64位宽通道。在现代DRAM存储系统中,商品DRAM存储模块是标准化64位宽的数据总线,内存模块的64位数据总线宽度与典型的个人计算机系统控制器的数据总线宽度匹配。在标记为Inteli875P系统控制器的示例中,系统控制器连接到带有128位宽数据总线的DRAM的单通道。然而,由于商品DRAM模块具有64位范围的数据总线,i875P系统控制器需要匹配一对64位宽存储器模块才能与128位宽数据总线操作。i875P的配对内存模块配置规范通常被称为双通道配置规范。但是,由于只有一个内存控制器,而且由于两个内存模块都按锁定步骤操作,并通过128位宽的数据总线存储和检索数据,从逻辑上讲,配对内存模块配置是一个128位宽的单通道内存系统。此外,与SDRAM和DDRSD RAM内存系统类似,标准的直接RDRAM内存模块采用16位宽数据总线设计,以及使用直接RDRAM的高性能系统控制器, 例如Inteli850系统控制器,使用匹配的直接RDRAM内存模块对形成一个32位宽的通道,在内存的两个物理通道之间进行锁定操作。
    在这里插入图片描述
    与使用单个DRAM内存控制器来控制整个内存系统的系统控制器不同,图10.3显示Alpha EV7处理器和Intel i925x系统控制器均具有两个独立控制64位宽的数据总线的DRAM控制器。使用独立的DRAM内存控制器可以导致更高的可持续带宽特性,因为较窄的信道会导致每个缓存线请求更长的数据突发,而由DRAM访问协议决定的各种无效性可以得到更好的摊销。因此,较新的系统控制器通常设计有多个内存控制器,尽管增加了额外的模具成本。
    在这里插入图片描述
    具有一个DRAM内存控制器和DRAM设备的多个物理通道的现代内存系统,如图10.2所示是一种典型设计,通常被设计为物理通道相对于彼此按顺序执行。然而,单控制器多物理信道控制有两种变化。单控制器多物理通道配置的一个变化是,一些系统控制器,如Inteli875P系统控制器,允许在不同的物理信道中使用不匹配的成对的内存模块。在这种情况下,i875P系统控制器将以非对称模式运行并独立控制DRAM模块的物理通道。然而,由于只有一个DRAM内存控制器,不匹配内存模块的多个物理通道不能并发访问,并且只能在任何给定的情况下及时访问一个内存通道。在不对称配置中,最大系统带宽是单个物理信道的最大带宽。
    单控制器多物理信道配置的第二个变化可以在高性能FPM DRAM存储器中看到,该系统是在可以使用给定的列访问命令突发多列数据的SDRAM型DRAM设备出现之前设计的。图10.4给出了SDRAM内存系统中列访问的示例时序图。图10.4显示了SDRAM设备能够返回单个数据的多列突发列访问命令。但是,FPM DRAM设备既不支持单次访问多突发功能也不支持流水线多列访问命令的能力。结果是FPM DRAM设备需要多个列访问来检索给定的缓存线访问的多列数据,不能以流水线的方式进行单个FPMD RAM设备的列访问。
    为克服FPMD RAM设备的缺点而部署的一个解决方案是使用多个FPMD RAM通道以交错的方式工作。图10.4还展示了复杂的FPMD RAM控制器如何将多个列访问发送到不同的物理内存通道,使各列访问的数据连续出现在数据总线上。在此配置中,多个FPMD RAM通道能够在现代同步的可以在连续周期中突发多列数据的DRAM设备出现之前提供高性能工作站和服务器所需的持续吞吐量。
    在这里插入图片描述

    10.2.2 Rank(等级)
    图10.5显示了一个由2级DRAM设备组成的内存系统。从本质上讲,存储等级是一个或多个响应给定的命令时按锁定步骤操作的DRAM设备的“bank”。然而,单词bank已经被用来描述DRAM设备中独立的DRAM阵列的数量。为了减少与重载命名相关的混淆,现在使用单词rank来表示一组DRAM设备,这些设备按照锁定步骤操作,以响应存储系统中给定的命令。
    图10.5展示了典型DRAM存储系统拓扑中2级DRAM设备的配置。在典型的DRAM存储系统拓扑结构中,地址总线和命令总线连通内存系统中的每个DRAM设备,但是,宽数据总线被划分并连接到不同的DRAM设备。这种典型系统拓扑中的存储控制器使用芯片选择信号来选择DRAM设备的适当等级以响应给定命令的RAM设备。
    在现代存储系统中,多个DRAM设备通常被组合在一起以提供给定内存系统所需的数据总线宽度和容量。 例如,需要18个DRAM设备,每个设备都有一个4位宽的数据总线,在给定的内存等级中形成一个72位宽的数据总线。 相比之下,不需要多大容量或数据总线宽度的嵌入式系统通常在每个内存等级中使用较少的设备——有时每个等级只使用一个设备。
    在这里插入图片描述
    10.2.3 Bank(块)
    如前所述,单词bank被用来描述DRAM设备内部的一组独立的内存阵列,一组DRAM设备同时响应命令和不同的存储物理通道。 在这在本章中,“bank”一词仅用于表示一组DRAM设备内部的独立内存阵列。
    图10.6显示了一个SDRAM设备具有4个bank的DRAM阵列。现代DRAM设备包含多个存储库,因此可以并行执行不同DRAM阵列的多个独立访问。在本设计中,每个存储bank都是一个独立的可以处于行访问周期的不同阶段的阵列。一些通用资源,如允许访问数据引脚的I/O门控,必须在不同的bank之间共享。但是,多bank体系结构允许对不同bank的读取请求等命令进行流水线处理。某些命令,如刷新命令,也可以并行参与多个bank。以这种方式,多个bank可以根据命令独立或并发执行。例如,给定DRAM设备中的多个bank可以彼此独立地激活,但在给定的时间段内激活发生的密集程度受到DRAM设备功率的限制。根据DRAM设备的设计,给定D RAM设备中的多个bank也可以并行预充电或刷新。在这里插入图片描述

    10.2.4 Row(行)
    在DRAM设备中,行只是一组简单的存储单元,并行地响应行激活命令而被激活。在利用常规系统拓扑例如SDRAM,DDR SDRAM和DDR2 SDRAM的DRAM存储器系统中,通常在给定的存储器等级中并行连接多个DRAM设备。图10.7显示了如何使用DRAM设备并行连接以形成存储等级。以DRAM设备的等级连接的DRAM设备的效果是,行激活命令按照锁定步骤执行将激活给定存储等级的所有DRAM设备中相同的寻址行。这种排列方式意味着,从内存控制器的角度来看,行的大小仅仅是给定DRAM设备中行的大小乘以给定等级的DRAM设备的数目,其中DRAM行跨越给定内存等级的多个DRAM设备。
    行也被称为DRAM页,因为行激活命令本质上是将一页内存缓存在感应放大器上,直到DRAM存储控制器产生后续预充电指令。已经提出了各种方案来利用DRAM页的局部性。然而,在DRAM页使用局部性的一个问题是,DRAM页面的大小取决于DRAM设备和内存模块的配置,而不是处理器架构页的大小。
    在这里插入图片描述

    10.2.5 Column(列)
    在DRAM内存系统中,一列数据为内存的最小可寻址存储单元。图10.8说明,在SDRAM和DDRx3SDRAM等内存系统中,具有类似于图10.5所示内存系统的拓扑结构,一列数据的大小与数据总线的宽度相同。在直接RDRAM设备中,列被定义为16字节的数据,每个读取命令从直接RDRAM设备的每个物理通道中获取一列长度为16字节的数据。
    在这里插入图片描述
    节拍只是数据总线上的数据转换。在SDRAM内存系统中,每个时钟周期有一个数据转换,因此每个时钟周期传输一个节拍的数据。在DDRxS DRAM内存系统中,每个时钟周期可以发生两次数据传输,因此在一个时钟周期中传输两次数据。节拍术语的使用避免了DDRxSD RAM设备中单词cycle的重载。
    在DDRx SDRAM内存系统中,每个列访问命令根据编程突发长度获取多列数据。例如,在DDR2D RAM设备中,每个内存读取命令至少返回4列数据。返回4拍数据的最小突发长度的DDR2设备和返回8拍以上单列数据的直接RDRAM设备之间的区别是:DDR2设备接受特定列的地址,并根据DRAM设备的编程行为按不同顺序返回请求的列。通过这种方式,每一列都是可单独寻址的。相反,直接RDRAM设备不会在给定的突发内重新排序数据,并且从直接RDRAM设备的单个通道中传输16字节突发,并将其视为单列数据。

    10.2.6内存系统组织:例子
    图10.9所示有4个内存等级的DRAM内存系统,其中每个内存等级由4个并行连接的设备组成,每个设备内部包含4组DRAM阵列, 每个bank包含8192行,每行由512列数据组成。为了访问基于DRAM的存储系统中的数据,DRAM存储器控制器接受一个物理地址并将其分解为各自的地址指向特定通道,等级,和数据所在的bank,行和列。
    虽然图10.9显示了一个统一组织的内存系统,但许多计算机系统的内存系统组织,特别是用户终端配置系统,通常可能是典型的非统一组织。 许多计算机系统中的DRAM存储系统组织通常是不统一的,这是因为大多数计算机系统的设计都允许用户终端通过插入和删除商品内存模块来升级内存系统的容量。为了支持通过用户终端更新存储容量,DRAM控制器的设计必须能够灵活地适应DRAM设备和模块的不同配置,用户终端可以将其放入计算机系统。这种支持是通过使用地址范围寄存器提供的,其功能将在关于内存控制器一章中单独介绍。
    在这里插入图片描述
    10.3内存模块
    第一代计算机系统允许用户终端通过在系统板上提供socket(套接字)来增加存储容量,在系统板上可以插入更多的DRAM设备。在DRAM设备的价格相对于系统板上插槽的成本相当昂贵的时代,在系统板上使用插槽是有意义的。在这些早期的计算机系统中,系统板通常是用socket设计的,允许用户终端删除和插入通常包含在双列直插式封装(DIP)中的单个DRAM设备中。但是内存升级的过程是繁琐和困难的,因为DRAM设备必须单独移除并插入到每个socket中。并且DRAM设备上的引脚可能是弯曲的,但是在视觉上却不能被察觉。有些有缺陷的DRAM芯片很难被发现,而且大型内存系统的socket路由需要在系统板上占有较大的表面积。而且,这在物理上有可能将DRAM设备在插槽中放反。正确的位置和正确的方向取决于清楚的标签插槽,明确的标签设备,以及最终用户在将设备插入插座时要格外注意。解决与内存升级相关的问题的方法是创建和使用内存模块。
    内存模块本质上是微型系统板,可以容纳许多DRAM设备。内存模块在模块接口处提供了一个抽象接口,以便不同的制造商可以为具有不同DRAM设备的给定计算机系统进行内存升级。 DRAM内存模块还降低了内存升级过程的复杂性。包含多个DRAM芯片的模块的内存升级可以快速和容易地插入并从模块socket中删除,而不是移除和插入单个DRAM芯片。第一代内存模块通常由专门创建的、系统专用的存储器模块组成,计算机制造商在特定的计算机系统中使用这些模块。多年来 存储模块已经具备了一定的复杂性,现在被指定为内存系统定义过程的一部分。

    10.3.1单列直插式内存模块(SIMM)
    在20世纪80年代末和90年代初,个人计算机行业第一次标准化使用30针SIMM,然后又转向了72针SIMM。SIMM或单列直插式内存模块,之所以这样称呼是因为以下事实:模块底部任一侧的接触电气相同。
    30引脚的SIMM提供与数据总线上的8或9个信号的互连,以及系统板和DRAM设备之间的电源、接地、地址、命令和芯片选择信号线。72引脚的SIMM除了提供电源,接地,地址,命令和芯片选择信号线之外,还提供了数据总线上的32到36个信号的互连。通常,30引脚上的DRAM设备和1兆字节SIMM共同提供一个9位的奇偶校验保护数据总线接口给内存系统。上世纪80年代末的个人计算机系统通常使用四组匹配的30针SIMM来提供36位宽的内存接口,以支持内存控制器的奇偶校验。然后,随着个人计算机系统逐渐支持具有更广泛数据总线的内存系统,在20世纪90年代初,30引脚SIMM被72引脚SIMM所取代。

    10.3.2双列直插式内存模块(DIMM)
    在20世纪90年代后期,随着个人计算机行业从FPM/EDO DRAM向SDRAM过渡,72引脚的SIMM又被逐步淘汰,取而代之的是双列直插式内存模块(DIMM)。DIMM相比于SIMM存储体积较大,可以为内存系统提供64或72位宽的数据总线接口。SIMM和DIMM的区别在于DIMM两侧的触点在电气上是不同的。不同的电气连接允许来自于系统板的电信号密集路由通过连接器接口传送到存储模块。
    通常,设计的商用DIMM台式机市场仅包含DRAM器件以及无源电阻器和电容器。这些DIMM不在从存储器控制器到DRAM设备的地址路径上缓冲,也不在DRAM设备和存储器控制器之间的数据路径上缓冲。因此,这些DIMM也称为无缓冲DIMM(UDIMM)。

    10.3.3寄存器存储模块(RDIMM)
    为了满足具有用户终端可配置内存系统的广泛不同的要求,需要将具有不同容量和定时特性的内存模块添加到UDIMM中。 例如,工作站和服务器通常需要比台式计算机系统更大的内存容量。与大存储容量内存模块相关的问题是,内存系统中的大量DRAM设备往往会重载各种多点通信总线。
    通过在存储器模块的接口处使用缓冲地址和控制信号的寄存器,注册双列直插式内存模块(RDIMM)可以减轻大型存储器系统中大量DRAM设备的电气负载问题
    图10.10所示已注册的存储器模块使用存储器模块接口上的寄存器来缓冲地址和控制信号。通过这种方式,寄存器大大减少了存储控制器直接驱动的电气负载的数量,并且将存储系统中相互连接的信号分为两个单独的部分:存储控制器和寄存器之间以及寄存器和DRAM设备之间。分段允许通过限制电负载的数量以及通过减小关键控制信号在存储系统的各个段中的路径长度来优化存储系统的时序特性。然而,使用内存模块上的注册锁存器的缺点是将地址和控制信号的缓冲延迟引入到了内存访问延迟中,并且在大型内存系统中确保信号完整性的成本是以所有内存事务的额外延迟来支付的。
    在这里插入图片描述

    10.3.4小型DIMM(SO-DIMM)
    多年来,随着新一代DRAM设备的出现,内存模块设计变得越来越复杂。目前,不同的模块作为标准化的、多源的组件存在,终端用户可以购买这些组件,并合理地期望内存模块之间的兼容性不会有问题 由不同的模块制造商在不同的时间进行加工。
    当前,存在不同的模块规范,这些规范是最终用户可以购买并合理期望不同模块制造商在不同时间制造的内存模块之间实现无故障兼容性。 为确保系统级的兼容性,在内存系统标准定义过程中指定了内存模块。更具体地,指定了不同类型的存储器模块,每种存储器模块针对不同的市场。 通常,UDIMM用于台式计算机,RDIMM用于工作站和服务器系统,而小型双列直插式内存模块(SO-DIMM)能够适应移动笔记本计算机的有限空间。图10.11显示了在精细球栅阵列(FBGA)封装中八个DDR2 SDRAM器件的标准化放置以及在200引脚的SO-DIMM上所需的串行终端电阻和去耦电容器。图10.11显示了SO-DIMM的轮廓并按照以下规格进行了标准化:30 mm * 67.6 mm。 SO-DIMM尺寸规格说明了:为了确保不同内存模块和系统板之间的系统级兼容性,SO-DIMM、UDIMM和RDIMM的机械和电气特性已经被仔细地定义。当前,DRAM设备制造商和计算机系统设计公司通过漫长而艰巨的标准制定过程来定义商用DRAM设备和存储器模块。
    标准制定过程使DRAM制造商能够生产功能兼容的DRAM设备。标准制定过程还使存储模块制造商能够采用功能兼容的DRAM设备并构建彼此功能兼容的存储模块。最终,多级标准化能够使终端用户可以自由地购买使用了不同DRAM制造商的DRAM设备的不同模块制造商的存储器模块,并且具有合理的无故障互操作性。当前,标准的商用DRAM设备和内存模块是由被称为JEDEC固态技术协会的行业组织指定。
    在这里插入图片描述
    最后,为了进一步减少不同DRAM器件与存储模块制造商之间实现无故障兼容性的问题,JEDEC为存储模块制造商提供了参考设计,其中包括存储模块原始卡规范,信号跟踪路由和材料清单。该参考设计还使存储器模块制造商能够最大限度地减少其在创建和验证内存模块设计的过程中花费的工程资源,从而降低了进入高质量内存模块制造的门槛,并提高了内存模块制造业务的竞争。

    10.3.5内存模块的组织
    现代DRAM存储器系统通常支持各种各样的存储器模块,以使终端用户可以灵活地选择和配置所需的存储器容量。由于DRAM设备的价格受到不可预测的商品市场的波动,因此在给定的情况下一个存储器模块组织的制造成本可能会比另一组织的制造成本低,而在不同的情况下,相反的情况可能是正确的。结果,支持不同配置存储模块的存储系统使终端用户可以灵活地购买和使用最经济的组织化存储模块。但是,在为终端用户提供灵活的存储系统配置时,存储系统设计工程师必须解决的一个问题是,这种灵活性能够转化为可以一次性放入内存系统的存储模块的大型组合。此外,对于给定的内存模块容量,通常存在多个组织,内存系统设计工程师不仅必须考虑不同容量的内存模块的不同组合,而且还要考虑不同组织在给定能力下的不同模块。
    表10.1显示,一个128-MB内存模块可以由16个64-Mbit的DRAM设备、8个128-Mbit的DRAM设备或4个256-Mbit的DRAM设备组成。表10.1显示不同的内存模块组织不仅使用不同数量的DRAM设备,而且还向内存控制器提供不同数量的行和列。要访问内存模块上的内存,DRAM控制器必须识别并支持终端用户插入存储系统的存储模块的组织。在某些情况下,新一代DRAM设备能够使能存储模块组织,这种存储组织的存储控制器不是为了支持自然产生的兼容性而设计的。
    在这里插入图片描述

    10.3.6串行状态检测(SPD)
    随着每一代新存储模块的复杂性的提高,存储模块也逐渐发展。 表10.1显示了DRAM存储器模块可以在同一存储模块上由多个DRAM设备rank组成,每个rank由多个DRAM设备组成,并且该存储模块可以具有不同数量的行和列。实际上,表10.1中没有显示的是,每个DRAM内存模块在最小tCAS、tRAS、tRCD和TRP延迟方面可能具有不同的最小定时特性。相反,DRAM模块的可变性增加了内存系统设计工程师必须处理的复杂性。
    为了降低内存升级过程中的复杂性并消除其中的混乱,计算机行业采用的解决方案是将内存模块的配置信息存储在只读内存设备上,其内容可以由内存控制器作为系统初始化过程的一部分进行检索。通过这种方式,存储器控制器可以从存储器模块上的DRAM设备中获得访问数据所需的最优配置参数和定时参数。 图10.12显示了DIMM上一个小型闪存设备的映像。 小型只读存储设备被称为串行状态检测(SPD)设备,并且它可以存储不同内存模块之间可能存在的多种变化。表10.2显示了存储在DDR SDRAM内存模块的SPD中的一些参数和值。
    在这里插入图片描述
    10.4存储系统拓扑结构
    在图10.13中,显示了一个内存系统,其中有16个DRAM设备连接到单个DRAM控制器。这16个DRAM设备被组织成4个独立的存储器rank。虽然16个DRAM设备都连接到了同一个DRAM控制器,但将不同数量的DRAM设备连接到了用于单向地址和命令总线,双向数据总线和单向片选线的不同网络。 在这种拓扑结构中,当发出命令时,地址和命令总线上的电信号将发送到内存系统中的16个DRAM设备,但是单独的片选信号会在单个rank中选择一组4个DRAM设备,以提供读取命令的数据或接收写入命令的数据。 在这种拓扑中,给定存储等级的每个DRAM设备也与不同存储级别中的三个其他DRAM设备一起连接到数据总线上。
    在这里插入图片描述
    内存系统拓扑决定了内存系统中的信号路径长度和电负载特性。 因此,现代高性能DRAM存储器系统的设计人员必须密切注意DRAM存储系统的拓扑和组织结构。然而,由于存储访问系统的不断变化,对于快速页面模式DRAM(FPM)、同步DRAM(SDRAM)和双数据速率SDRAM(DDR)内存系统,上述经典系统拓扑基本保持不变。此外,具有较少rank的经典拓扑结构将用于DDR2和DDR3内存系统。

    10.4.1直接RDRAM系统拓扑
    Direct RDRAM存储系统是一种具有与经典拓扑显着不同的拓扑结构的存储系统。在图10.14中,四个Direct RDRAM设备连接到一个单个Direct RDRAM存储器控制器。图10.14显示,在Direct RDRAM存储器系统中,DRAM设备连接到匹配良好的互连网络,其中时钟网络,数据总线和命令总线的路径长度均与设计相匹配。良好匹配的互连网络的好处是,通过这种设计,信号偏斜最小,并且与具有传统存储系统拓扑的存储系统相比,Direct RDRAM存储系统中的电信号传输速率可以提高到更高的频率。具有常规多级拓扑的现代DRAM系统也可以匹配Direct RDRAM的原始信令速率的内存系统。但是,缺点是必须将空闲周期设计到访问协议中,并专门用于系统级同步。结果,即使推向可比的数据速率,对于具有传统系统的多级DRAM存储系统的每个引脚的每个周期的传输数据而言,拓扑结构效率稍差。

    Direct RDRAM存储系统通过使用新颖的系统拓扑,在每个引脚每个周期的数据传输方面实现了更高的效率。 但是,为了使系统拓扑结构具有更高的引脚数据传输率和更高的数据传输效率,直接RDRAM存储设备在设计上比使用传统存储系统拓扑结构的同类DRAM存储设备更为复杂。 在DRAM装置中复杂性直接导致成本增加。 因此,必须权衡Direct RDRAM存储系统的更高数据传输效率与相对较高的DRAM设备成本。
    在这里插入图片描述
    10.5小结
    图10.15显示了DDR SDRAM等商用SDRAM变体设备和Direct RDRAM和XDR DRAM等高数据速率DRAM存储设备在原理上的差异。与SDRAM变体存储系统相似,直接RDRAM和XDR DRAM存储系统经过设计,可将数十个DRAM设备连接到单个DRAM控制器。 然而,为了实现高信令数据速率,直接RDRAM和XDR DRAM存储器系统依赖于存储器控制器和DRAM设备之间互连接口的重新设计。 在这些高数据速率DRAM器件中,更多的电路设计被放置在DRAM设备的引脚接口阻抗控制和信号驱动电流强度方面。
    在这里插入图片描述

    展开全文
  • DRAM单元结构的概况

    2020-11-14 13:47:09
    图对DRAM单元结构进行了较为详细的描述,这是平面式的最基本的结构,在1MB的DRAM占据主导地位之前一般都是这样结构的单元。与刚才的图相比较更容易理解,图的左侧为FET部分,右侧为电容器部分。氧化膜为电介质,...
  • DRAM的单元结构

    2020-11-14 13:44:04
    DRAM单元的基本结构如图所示,负责数据存储的是图中的电容器,根据是否存储电荷来判断数据的“0”、“1”。图中电容器的一端接地,因为是交流接地,所以不是形成GND电平的意思。电容器的另—端与用于存取开关FET的漏...
  • DRAM的单元结构刷新

    2020-11-14 13:50:15
    DRAM的电容器存储了电荷时,对于FET来说,形成反偏置状态,必然会发生漏电流,图1中图示了这一点。因为在如图所示的方向上存在电流,因此DRAM单元的电容器将必然进行放电。所以,需要定期将单元的状态恢复为初始...
  • DRAM结构原理剖析

    千次阅读 2019-10-23 18:27:43
    https://www.cnblogs.com/yilang/p/11103061.html https://www.techbang.com/posts/18381-from-the-channel-to-address-computer-main-memory-structures-to-understand http://lackingrhoticity.blogspot.com/2015/05/how-physical-addresses-map-to-rows-and-banks.html  一、DRAM的存储结构...channel>DIMM>rank>chip>bank>Memory Array>row/column 1、channel 和 DIMM,DIMM和RANK SIMM----->DIMM 2、rank 和 chip 现在市场上的DIMM条一般都有2个RANK。rank 指的是连接到同 ...

    文字参考:

    https://www.cnblogs.com/yilang/p/11103061.html

    https://www.techbang.com/posts/18381-from-the-channel-to-address-computer-main-memory-structures-to-understand

    http://lackingrhoticity.blogspot.com/2015/05/how-physical-addresses-map-to-rows-and-banks.html

    视频学习详情参见:

    https://www.bilibili.com/video/BV19b411i784?p=49

     

    一、DRAM的存储结构

    channel>DIMM>rank>chip>bank>Memory Array>row/column

     

    1、channel 和 DIMM,DIMM和RANK

     

    å解RAMçµæ§èåçï¼ç³»çµ±è¨æ¶é«çChannelãChipèBank

    SIMM----->DIMM

     

    2、rank 和 chip

    å解RAMçµæ§èåçï¼ç³»çµ±è¨æ¶é«çChannelãChipèBank

    现在市场上的DIMM条一般都有2个RANK。rank 指的是连接到同 一个CS(Chip Select)的chip,内存控制器能对同 一 rank 的 chip 进行读写操作。

    Rank
    CPU与内存之间的接口位宽是64bit,也就意味着CPU在一个时钟周期内会向内存发送或从内存读取64bit的数据。可是,单个内存颗粒的位宽仅有4bit、8bit或16bit,个别也有32bit的。因此,必须把多个颗粒并联起来,组成一个位宽为64bit的数据集合,才可以和CPU互连。生产商把64bit集合称为一个物理BANK(Physical BANK),简写为P-BANK。为了和逻辑BANK相区分,也经常把P-BANK称为RANK或Physical RANK,把L-BANK则简称为BANK。如果每个内存颗粒的位宽是8bit,应该由8个颗粒并联起来,组成一个RANK(64bit);同理,如果颗粒的位宽是16bit,应该由4个颗粒组成一个RANK。由此可知:Rank其实就是一组内存颗粒位宽的集合,也可以叫Chips,在PCB上,往往把一面上的内存颗粒组成一个Rank,另一面是另外一个Rank(假若有的话),这样也可以将Rank理解内存条的Side(面)。具体说,当颗粒位宽×颗粒 数=64bits时,这个模组就是有一个RANK。为了保证和CPU的沟通,一个模组至少要有一个RANK。但是,为了保证有一定的内存容量,目前,DDR2内存,经常是采用一个模组两个RANK的架构。“模组构成”中的“R”“RANK”的意思。“2R”是说组成模组的RANK数(Number of ranks of memory installed)是2个。有“1R”和“2R”两种;“模组构成”中的“×8”是颗粒的位宽(bit width),有×4、×8和×16三种.

    Chip(Memory)
    存储芯片,又叫内存颗粒。真正提供存储的器件。

     

    3、chip 和 bank

    å解RAMçµæ§èåçï¼ç³»çµ±è¨æ¶é«çChannelãChipèBank

    chip 往下拆分為 bank,如图所示,一个chip有8个bank。

     

    4、bank 和 memory array

                                          

    一个Bank包含多个memory arrays,比如4个、8个或者16个,这个memory arrays的数量也代表个一个chip的数据位宽。我们日常接触到的三星的8Gb 的DDR4颗粒的数据位宽就是8bit,说明这个颗粒(chip)的一个bank有8个arrays。

     

    5、memory array和row/column

    memory array往下拆就是 1 個個的儲存單元,橫向 1 排稱之為 row,直向 1 排稱之為 column,每排 column 的下方都有個 row buffer,用以暫存讀出來的 row 排資料。

    一般來說橫向選擇排數的線路稱為 row(row enable、row select、word line),直向負責傳遞訊號的線路為column(bitline),每組 bank 的下方還會有個 row buffer(sense amplifier),負責將獨出的 row 資料暫存,等待 column 位址送到後輸出正確的位元,以及判斷儲存的逻辑值是 0 還是 1。

     

    二、内存的读写

    内存控制器和DIMM之间的线路连接如下:

    å解RAMçµæ§èåçï¼ç³»çµ±è¨æ¶é«çChannelãChipèBank

    一个bank的读操作如下:

    å解RAMçµæ§èåçï¼ç³»çµ±è¨æ¶é«çChannelãChipèBank

    一个bank的写操作如下:

    å解RAMçµæ§èåçï¼ç³»çµ±è¨æ¶é«çChannelãChipèBank

    读操作时,首先内存控制器會將 1 組地址由位址線傳到内存上,控制線跟著傳送控制訊號;如果是多 rank 的安裝情形,CS 也會送出對應的訊號選擇目標 rank。接著由於每個 rank 由許多 chip 組成,1 個 chip 僅負責部分的資料讀取,chip 接收到位址訊號後,將位址丟入內部的 row/column 解碼器找出相對應的 bank 位址(每家每款產品的內部 bank 組合有可能不同,因此對應也會有所不同),接著開啟 row 線,同 1 排 row 的內部資料就會流到 row buffer 內部,row buffer 判斷訊號為 0 或是 1 之後就輸出資料。

    写操作时,除了地址数据外,还会传送欲写入的数据至晶片內部的 input buffer,同樣的也是依照 row/column 解碼器找出對應位置之后再写入。

     

     

    一个DRAM 晶片的内部功能图如下所示:

    å解RAMçµæ§èåçï¼ç³»çµ±è¨æ¶é«çChannelãChipèBank

     

    三、How physical addresses map to rows and banks in DRAM

    参考:http://lackingrhoticity.blogspot.com/2015/05/how-physical-addresses-map-to-rows-and-banks.html

    Now I'll discuss how these CPUs' memory controllers map physical addresses to locations in DRAM -- specifically, to row, bank and column numbers in DRAM modules. Let's call this the DRAM address mapping. I'll use one test machine as a case study.

    Motivation: the rowhammer bug

    I am interested in the DRAM address mapping because it is relevant to the "rowhammer" bug.

    Rowhammer is a problem with some DRAM modules whereby certain pessimal memory access patterns can cause memory corruption. In these DRAMs, repeatedly activating a row of memory (termed "row hammering") can produce electrical disturbances that produce bit flips in vulnerable cells in adjacent rows of memory.

    These repeated row activations can be caused by repeatedly accessing a pair of DRAM locations that are in different rows of the same bank of DRAM. Knowing the DRAM address mapping is useful because it tells us which pairs of addresses satisfy this "same bank, different row" (SBDR) property.

    Guessing and checking an address mapping

    For my case study, I have a test machine containing DRAM that is vulnerable to the rowhammer problem. Running rowhammer_test on this machine demonstrates bit flips.

    I'd like to know what the DRAM address mapping is for this machine, but apparently it isn't publicly documented: This machine has a Sandy Bridge CPU, but Intel don't document the address mapping used by these CPUs' memory controllers.

    rowhammer_test does not actually need to identify SBDR address pairs.rowhammer_test just repeatedly tries hammering randomly chosen address pairs. Typically 1/8 or 1/16 of these pairs will be SBDR pairs, because our machine has 8 banks per DIMM (and 16 banks in total). So, while we don't need to know the DRAM address mapping to cause bit flips on this machine, knowing it would help us be more targeted in our testing.

    Though the address mapping isn't documented, I found that I can make an educated guess at what the mapping is, based on the DRAM's geometry, and then verify the guess based on the physical addresses that rowhammer_test reports. rowhammer_test can report the physical addresses where bit flips occur ("victims") and the pairs of physical addresses that produce those bit flips ("aggressors"). Since these pairs must be SBDR pairs, we can check a hypothesised address mapping against this empirical data.

    Memory geometry

    The first step in hypothesising an address mapping for a machine is to check how many DIMMs the machine has and how these DIMMs are organised internally.

    I can query information about the DIMMs using the decode-dimms tool on Linux. (In Ubuntu, decode-dimms is in the i2c-tools package.) This tool decodes the DIMMs' SPD (Serial Presence Detect) metadata.

    My test machine has 2 * 4GB SO-DIMMs, giving 8GB of memory in total.

    decode-dimms reports the following information for both of the DIMMs:

    Size                                            4096 MB
    Banks x Rows x Columns x Bits                   8 x 15 x 10 x 64
    Ranks                                           2
    

    This means that, for each DIMM:

    • Each of the DIMM's banks contains 2^15 rows (32768 rows).
    • Each row contains 2^10 * 64 bits = 2^16 bits = 2^13 bytes = 8 kbytes.

    Each DIMM has 2 ranks and 8 banks. Cross checking the capacity of the DIMM gives us the reported size, as expected:

    8 kbytes per row * 32768 rows * 2 ranks * 8 banks = 4096 MB = 4 GB

    The DRAM address mapping

    On my test machine, it appears that the bits of physical addresses are used as follows:

    • Bits 0-5: These are the lower 6 bits of the byte index within a row (i.e. the 6-bit index into a 64-byte cache line).
    • Bit 6: This is a 1-bit channel number, which selects between the 2 DIMMs.
    • Bits 7-13: These are the upper 7 bits of the index within a row (i.e. the upper bits of the column number).
    • Bits 14-16: These are XOR'd with the bottom 3 bits of the row number to give the 3-bit bank number.
    • Bit 17: This is a 1-bit rank number, which selects between the 2 ranks of a DIMM (which are typically the two sides of the DIMM's circuit board).
    • Bits 18-32: These are the 15-bit row number.
    • Bits 33+: These may be set because physical memory starts at physical addresses greater than 0.

    Why is the mapping like that?

    This mapping fits the results from rowhammer_test (see below), but we can also explain that the address bits are mapped this way to give good performance for typical memory access patterns, such as sequential accesses and strided accesses:

    • Channel parallelism: Placing the channel number at bit 6 means that cache lines will alternate between the two channels (i.e. the two DIMMs), which can be accessed in parallel. This means that if we're accessing addresses sequentially, the load will be spread across the two channels.

      As an aside, Ivy Bridge (the successor to Sandy Bridge) apparently makes the mapping of the channel number more complex. An Intel presentation mentions "Channel hashing" and says that this "Allows channel selection to be made based on multiple address bits. Historically, it had been "A[6]". Allows more even distribution of memory accesses across channels."

    • Bank thrashing: Generally, column, bank and row numbers are arranged to minimise "bank thrashing" (frequently changing a bank's currently activated row).

      Some background: DRAM modules are organised into banks, which in turn are organised into rows. Each bank has a "currently activated row" whose contents are copied into a row buffer which acts as a cache that can be accessed quickly. Accessing a different row takes longer because that row must be activated first. So, the DRAM address mapping places SBDR pairs as far apart as possible in physical address space.

      Row hammering is a special case of bank thrashing where two particular rows are repeatedly activated (perhaps deliberately).

    • Bank parallelism: Banks can be accessed in parallel (though to a lesser degree than channels), so the bank number changes before the row number as the address is increased.

    • XOR scheme: XORing the row number's lower bits into the bank number is a trick to avoid bank thrashing when accessing arrays with large strides. For example, in the mapping above, the XORing causes addresses X and X+256k to be placed in different banks instead of being an SBDR pair.

      Bank/row XORing schemes are described in various places, such as:

    Checking against rowhammer_test's output

    I ran rowhammer_test_ext (the extended version of rowhammer_test) on my test machine for 6 hours, and it found repeatable bit flips at 22 locations. (See the raw data and analysis code.)

    The row hammering test generates a set of (A1, A2, V) triples, where:

    • V is the victim address where we see the bit flip.
    • A1 and A2 are the aggressor addresses that we hammer.
    • We sort A1 and A2 so that A1 is closer to V than A2 is. We tentatively assume that the closer address, A1, is the one that actually causes the bit flips (though this wouldn't necessarily be true if the DRAM address mapping were more complicated).

    There are three properties we expect to hold for all of these results:

    • Row: A1 and V's row numbers should differ by 1 -- i.e. they should be in adjacent rows. (A2 can have any row number.)

      This property makes it easy to work out where the bottom bits of the row number are in the physical address.

      We find this property holds for all but 2 of the results. In those 2 results, the row numbers differ by 3 rather than 1.

    • Bank: V, A1 and A2 should have the same bank number. Indeed, we find this property holds for all 22 results. This only holds when applying the row/bank XORing scheme.

    • Channel: V, A1 and A2 should have the same channel number. This holds for all the results. It happens that all of our results have channel=0, because rowhammer_test only selects 4k-aligned addresses and so only tests one channel. (Maybe this could be considered a bug.)

    Possible further testing

    There are two further experiments we could run to check whether the DRAM address mapping evaluates the SBDR property correctly, which I haven't tried yet:

    • Timing tests: Accessing SBDR address pairs repeatedly should be slower than accessing non-SBDR pairs repeatedly, because the former cause row activations and the latter don't.

    • Exhaustive rowhammer testing: Once we've found an aggressor address, A1, that causes a repeatable bit flip, we can test this against many values of address A2. Hammering (A1, A2) can produce bit flips only if this is an SBDR pair.

    Furthermore, taking out one DIMM from our test machine should remove the channel bit from the DRAM address mapping and change the aggressor/victim addresses accordingly. We could check whether this is the case.

     

     

     

     

    展开全文
  • 电子行业周报:DRAM供需结构健康,行业前景向好.pdf
  • 【转载】图解DRAM结构原理

    千次阅读 2019-06-08 12:51:46
    圖解RAM結構與原理,系統記憶體的Channel、Chip與Bank R.F. 發表於 2014年5月31日 09:00 2014-05-31 收藏此文 bank、rank、channel這些關於記憶體的名詞是否已困繞...揮發性記憶體分 2 種,SRAM 和 DRAM RAM...

    圖解RAM結構與原理,系統記憶體的Channel、Chip與Bank

    R.F.R.F. 發表於 2014年5月31日 09:00 2014-05-31 收藏此文

    •  

     

    Bd23113ce5b92317e60fb01ffb8917bf bank、rank、channel這些關於記憶體的名詞是否已困繞許久,疑似了解卻又說不出個所以然來。就讓我們一步步拆解記憶體的面紗,從架構到讀寫方式逐步揭開記憶體的秘密。

    揮發性記憶體分 2 種,SRAM 和 DRAM

    RAM(Ramdom Access Memory)隨機存取記憶體,之所以稱作「隨機存取」,是因為相較於早期的線性儲存媒體(磁帶)而言,因為磁帶的存取是線性的,存取時間會依目前磁帶位置和欲存取位置的距離而定,需轉動磁帶至應有的位置,距離越長、轉得越久、存取時間也就越久。而 RAM 沒有這種煩惱,存取時間為固定值,不會因為資料在記憶體的位置而影響存取時間。

    而 RAM 在電腦裡又可大致上分為 2 種:SRAM 和 DRAM,兩者的基礎原理差不多,都是將電荷儲存至內部,藉由改變不同的電荷儲存 0 或是 1。SRAM(Static Random Access Memory)靜態隨機存取記憶體和 DRAM(Dynamic Random Access Memory)有著幾點不同,SRAM 的結構較複雜、單位面積的容量較少、存取速度快,DRAM 則是構造簡單、單位面積內的容量較多、存取時間較 SRAM 慢,同時 DRAM 也因為構造較簡單的關係,儲存的電荷會隨著時間漸漸消失,因此需要有個再充電(Refresh)的動作保持電容儲存的資料。

    圖解RAM結構與原理,系統記憶體的Channel、Chip與Bank
    ▲SRAM 單一位元儲存區的構造。

    圖解RAM結構與原理,系統記憶體的Channel、Chip與Bank
    ▲DRAM 單一位元儲存區的構造。

    由圖中 SRAM 和 DRAM 構造可得知,SRAM 採用正反器(flip-flop)構造儲存,DRAM 則是採用電容儲存。因為 SRAM 和 DRAM 種種的特性不同,SRAM 適合做為暫存器和 CPU 快取使用,DRAM 則是適合做為主記憶體或是其他裝置間的快取使用。

    揮發與非揮發性記憶體

    揮發性記憶體(Volatile Memory)和非揮發性記憶體(Non-Volatile Memory)之間的差異在於,斷電之後是否可保存內部資料,揮發性記憶體的資料會隨著失去電力供應而消失,而非揮發性記憶體依然可以保有內部資料。

    揮發性記憶體包含了SRAM和DRAM,而非揮發性記憶體包含ROM(Read-Only Memory)和Flash Memory快閃記憶體。

    主記憶體子系統

    DRAM 由於製造簡單、高密度,作為電腦內部的主記憶體再適合不過了。但是由於主記憶體擺放在 CPU 之外,從工廠出來的晶粒需要封裝和組合之後才可和 CPU 連結,因此從 CPU 至 DRAM 晶粒之間依據層級由大至小為 channel>DIMM>rank>chip>bank>row/column,接下來就一一說明這些部分。

    圖解RAM結構與原理,系統記憶體的Channel、Chip與Bank
    ▲主記憶體由大至小,由上往下可做這樣的拆分。

    圖解RAM結構與原理,系統記憶體的Channel、Chip與Bank
    ▲主記憶體從 channel 至 chip 的相對應關係。

    圖解RAM結構與原理,系統記憶體的Channel、Chip與Bank

    ▲chip 往下拆分為 bank。

    圖解RAM結構與原理,系統記憶體的Channel、Chip與Bank
    ▲bank 往下拆就是 1 個個的儲存單元,橫向 1 排稱之為 row,直向 1 排稱之為 column,每排 column 的下方都有個 row buffer,用以暫存讀出來的 row 排資料。

    圖解RAM結構與原理,系統記憶體的Channel、Chip與Bank
    ▲單一 DRAM 晶片的內部功能區塊圖(圖片取自Micron)。

    channel 和 DIMM

    從記憶體控制器出來之後,最先遇到的就是 channel,每個 channel 需要配有 1 組記憶體控制器、2 個 channel 配置 2 組……以此類推。而每個 channel 中能夠擁有許多組 DIMM(Dual In-line Memory Module),DIMM 也就是目前消費者能夠在市場上買到的記憶體模組,因為多年前的主機板必須購買記憶體顆粒(chip)直接插在主機板上,而後發展出 SIMM(Single In-line Memory Module),將多組記憶體顆粒焊在 1 片電路板上,成為記憶體模組,再將此電路板插在主機板上。接著為了增加資料吞吐量,將 1 條記憶體模組的頻寬從 SIMM 的 32bit 改換成 DIMM 的 64bit,這設計依然沿用至今。

    從記憶體顆粒過度到 SIMM 的時代,坊間出現了替使用者將記憶體顆粒焊到 SIMM 電路板上的服務,因為當時記憶體非常昂貴,花一些小錢就可以把記憶體延用至新的電腦上。

    rank 和 chip

    rank 指的是連結到同 1 個CS(Chip Select)的記憶體顆粒 chip,記憶體控制器能夠對同 1 rank 的 chip 進行讀寫操作,而在同 1 rank 的 chip 也分享同樣的控制訊號。以目前的電腦來說,因為 1 組 channel 的寬度為 64bit,所以能夠同時讀寫 8byte 的資料,如果是具有 ECC 功能的記憶體控制器和 ECC 記憶體模組,那麼 1 組 channel 的寬度就是 72bit。

    圖解RAM結構與原理,系統記憶體的Channel、Chip與Bank
    ▲rank 1 和 rank 2 共享同組 address/comand 訊號線,利用 chip select 線選擇欲讀取或是寫入的那一組,之後將資料經由 MUX 多工器送出。

    有些人會有錯誤觀念,以 chip 的數量或是以記憶體模組的單、雙面進行 rank 的判斷,但其實要以記憶體控制器和記憶體顆粒的規格進行判斷,目前家用 PC 的記憶體控制器通道絕大部分都是 64bit 寬,記憶體顆粒則是 8bit 寬,因此 8 顆並聯即可滿足記憶體控制器的需求,也就是 1 組 rank。但偶爾也有以 16bit 寬的記憶體顆粒製成的記憶體模組,此時 4 個 chip 就是 1 組 rank。

    這在採用 Intel H61/H81 晶片組和傳統單channel的主機板時須特別注意,因為 Intel 限制 H61/H81 每個 channel 僅能支援 2 組 rank,而不是 4 組 rank,部分主機板每個 channel 又做了 2 組記憶體模組插槽,造成部分使用者同組 channel 放入 2 條記憶體模組時能夠辨識全部的記憶體容量(雙面單 rank 的記憶體模組),部分使用者則是僅能辨識一半的容量(雙面雙 rank 的記憶體模組)。

    bank、row、column

    bank 再往下分拆就是實際儲存位元的電路,一般來說橫向選擇排數的線路稱為 row(row enable、row select、word line),直向負責傳遞訊號的線路為column(bitline),每組 bank 的下方還會有個 row buffer(sense amplifier),負責將獨出的 row 資料暫存,等待 column 位址送到後輸出正確的位元,以及判斷儲存的資料是 0 還是 1。

    圖解RAM結構與原理,系統記憶體的Channel、Chip與Bank
    ▲1 個 bank 的讀取操作。

    圖解RAM結構與原理,系統記憶體的Channel、Chip與Bank

    ▲1 個 bank 的寫入操作。

     

    展开全文
  • DRAM结构之概括(一)

    千次阅读 2016-10-10 21:51:43
    桌面计算机系统存储器DRAM发展到现在,大多数采用的是DDR SDRAM,即双倍速率同步动态随机存储器,简称为DDR。最新产品已经更新到DDR5。DDR由DDR控制器和DDR颗粒组成。 在存储系统设计中,最重要的是存储控制器。...

    桌面计算机系统存储器DRAM发展到现在,大多数采用的是DDR SDRAM,即双倍速率同步动态随机存储器,简称为DDR。最新产品已经更新到DDR5。DDR由DDR控制器和DDR颗粒组成。

    在存储系统设计中,最重要的是存储控制器。存储控制器接收访存请求,进行地址转换、命令调度,返回或写入数据,通过最优化的行缓冲管理机制、地址映射机制、命令调度机制等来尽可能的提高访存带宽、减小访存延迟。

    CPU访存过程:


    DDR访存结构


    对于DDR颗粒,以4GB内存条为例,一个4GB的内存条,双面DIMM,其中有2个rank,每个rank包含8个物理bank,而每个物理bank中包含8个DDR颗粒(逻辑bank),每个逻辑bank数据位宽为8bit。根据JEDEC标准,每个Rank总线位宽必须为64比特,即每个物理bank中的8个逻辑bank组成。


    1)DDR控制器


    2)DDR颗粒

    DDR颗粒是一个由行和列组成二维阵列,在行和列的交叉处是存储单元。DRAM是依靠电容的充放电来存放数据的。



    DDR工作过程

    一、DDR控制器工作过程

    1)在DDR控制器接收访存请求时,首先要进行的是端口仲裁,端口仲裁就是选择不同的服务主设备,如:CPU、GPU、LCDC等,这一步是为了向各个主设备提供QoS保证,CPU是延迟敏感型设备,存储器控制器必须保证来到的CPU访存请求能够足够快的被服务;GPU是带宽敏感型设备,存储器控制器必须保证有足够的带宽满足GPU多数据访问;LCDC是延迟紧迫型设备,处于CPU和GPU之间。

    2)端口仲裁之后,访存请求进入交易队列,交易队列是一个先入先出的队列,顺序输出访存请求进入地址映射模块。地址映射是将访存请求地址与相应的DDR颗粒的物理相对应。访存请求携带的DDR bank的状态信息用来判断所访问是否busy或空闲,携带的L/S信息指出当前访存请求是读请求还是写请求等。

    3)经过地址映射之后,访存请求进入命令队列,命令队列的调度比较复杂,最典型的调度机制为FC-FRFS调度,即:first coming-first ready first serve。FC-FRFS调度保证最大的行缓冲命中和最老请求优先服务。命令类型一共有五类:刷新命令、读命令、写命令、激活命令、和预充电命令

    二、DDR颗粒工作过程

    1)读请求

    当命令队列中的命令发出至DDR颗粒时,首次访存发出行激活命令,行激活命令的作用是将相应的行里的数据搬移到行缓冲中,经历的时间为tRCD,这时被搬移的DDR阵列里的行处于不定状态,接着发出列选通命令,选择行缓冲里某一列开始传输数据,DRAM通常是突发传输,突发传输就是一次传输连续多次取数据或写数据。若突发传输长度为8,那么在列地址选通过后,选中的列地址和随后的7列数据都将被读取或写入。列选通经过一定的时间tCAS,开始将数据传输到数据总线上,数据在数据总线上传输花费时间为tBURST,对于双倍数据速率同步动态随机存储器DDR SDRAM,tBURST为突发传输长度的一半。数据经过数据总线被传送到存储器控制器,返回给访存主设备。


    2)写请求

    与读请求不同的是,写请求在发出行激活命令后,列地址选通的时间为tCWD,为了保证数据的完整性,在突发传输后必须经过写回过程,经历时间tWR。



    DDR时序要求

    根据JEDEC标准,DDR需要满足时序上的约束关系,才能保证DDR的正常工作。


    (1)基本操作时序


    (2)行激活约束


    (3)读写切换



    (4)读时序











    展开全文
  • DRAM

    千次阅读 2016-08-23 17:47:39
    如图所示为DRAM结构款图,bank = n*Array。即一个bank由若干个array组成。一片内存由若干个bank组成。 1Gb:是指1G位空间。Array可寻址的范围不一样。 MUX;多路复选器。8个bank公用IO数据接口。地址线每个bank是...
  • 基于SSD和DRAM的元数据协同缓存体系结构,用于文件系统
  • DRAM内存原理(二)结构和功能

    万次阅读 2014-12-08 09:03:22
    内存最基本的单位是内存“细胞”——也就是我们前面展示给大家DRAM基本单元示意图所示的部分,下面我们对这个部分通称为DRAM基本单元。每个DRAM基本单元代表一个“位”——Bit(也就是一个比特),并且有一个由列...
  • DRAM Introduction

    2011-01-20 17:44:30
    DRAM Introduction 关于钰创科技的DRAM、DDR、DDR2的资料,介绍储存器的内部结构很详细,值得学习
  • DRAM原理

    千次阅读 多人点赞 2019-11-20 16:11:35
    从原理层面上看,一个最简单的,存储一个 Bit 信息的 DRAM Storage Cell 的结构如下图所示: 由以下 4 个部分组成: Storage Capacitor,即存储电容,它通过存储在其中的电荷的多和少,或者说电容两端...
  • 计算机组成与结构A/B卷填空1. 原码一位乘法中,符号位与数值位(分开计算),运算结果的符号位等于(相乘两数符号位的异或值)。2. 微程序,微指令只存放在只读存储器中。3. 辅助磁道被分为若干个扇区4. 总线数据传输...
  • DRAM存储器

    千次阅读 2015-04-22 13:38:55
    一、 DRAM存储位元的记忆原理  动态MOS随机读写存储器DRAM的存储容量很大,通常用作计算机的主存储器。  DRAM存储器的存储元是由一个...二、DRAM芯片的逻辑结构 DRAM与SRAM的不同点: •地址线采用了重用
  • DRAM模块原理

    2020-11-12 17:31:53
     上图只是DRAM一个基本单位的结构示意图:电容器的状态决定了这个DRAM单位的逻辑状态是1还是0,但是电容的被利用的这个特性也是它的缺点。一个电容器可以存储一定量的电子或者是电荷。一个充电的电容器在数字电子中...
  • DRAM Device

    2021-01-04 21:56:19
    DRAM Device 本文以 SDR SDRAM 为例,描述 DRAM Device 与 Host 端的接口,以及其内部的其他模块,包括 Control Logic、IO、Row & Column Decoder 等。 1. SDRAM Interface SDR SDRAM 是 DRAM 的一种,它与 Host...
  • DRAM内部电路

    2020-11-14 13:59:29
     图 DRAM的基本结构  数据线上具有读出放大器,在这里对数据线上的状态“1”/“0”进行判定以及放大数据线上的电压电平。 图中虚线表示的电容器符号是数据线的寄生电容,正如后面将要叙述的那样,在读出DRAM上...
  • http://www.wowotech.net/basic_tech/309.html在 DRAM ...为了更清晰的描述 Cells 的组织方式,我们先对上一章节中的 DRAM Storage Cell 进行抽象,最后得到新的结构图,如下:相关文章:DRAM 原理 1 :DRAM ...
  • DRAM Memory Organization

    2021-01-03 19:20:27
    为了更清晰的描述 Cells 的组织方式,我们先对上一章节中的 DRAM Storage Cell 进行抽象,最后得到新的结构图,如下: 1. Memory Array DRAM 在设计上,将所有的 Cells 以特定的方式组成一个 Memory Array。本小节...
  • DRAM 原理 1 :DRAM Storage Cell

    千次阅读 2018-04-03 15:29:45
    http://www.wowotech.net/basic_tech/307.html相关文章:DRAM 原理 2 :DRAM Memory OrganizationDRAM 原理 3 :DRAM DeviceDRAM 原理 4 :DRAM TimingDRAM 原理 5 :DRAM Devices Organization1. Storage ...
  • 同步DRAM的信号

    2020-11-14 12:23:07
    同步DRAM的信号类型如图1所示,其中存在时钟(CLK)、时钟使能(CKE)以及存储块(Bank)编号指定等若干信号的更改,但可以看出,同步DRAM沿用了异步DRAM的信号。SDRAM将内部分割为若干个存储块,这是SDRAM的一大...
  • DRAM 原理 3 :DRAM Device

    千次阅读 2018-04-03 15:31:54
    本文则以 SDR SDRAM 为例,描述 DRAM Device 与 Host 端的接口,以及其内部的其他模块,包括 Control Logic、IO、Row & Column Decoder 等。相关文章:DRAM 原理 1 :...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,230
精华内容 6,892
关键字:

dram结构