UDIMM:全称Unbuffered DIMM,即无缓冲双列直插内存模块,指地址和控制信号不经缓冲器,无需做任何时序调整,直接到达DIMM上的DRAM芯片。UDIMM由于在CPU和内存之间没有任何缓存,因此同频率下延迟较小。
数据从CPU传到每个内存颗粒时,UDIMM需保证CPU到每个内存颗粒之间的传输距离相等,这样并行传输才有效,而这需要较高的制造工艺,因此UDIMM在容量和频率上都较低。
RDIMM:全称Registered DIMM,带寄存器的双列直插内存模块。RDIMM在内存条上加了一个寄存器进行传输,其位于CPU和内存颗粒之间,既减少了并行传输的距离,又保证并行传输的有效性。由于寄存器效率很高,因此相比UDIMM,RDIMM的容量和频率更容易提高。
LRDIMM:全称Load Reduced DIMM,低负载双列直插内存模块。相比RDIMM,LRDIMM并未使用复杂寄存器,只是简单缓冲,缓冲降低了下层主板上的电力负载,但对内存性能几乎无影响。
此外,LRDIMM内存将RDIMM内存上的Register芯片改为iMB(isolation Memory Buffer)内存隔离缓冲芯片,直接好处就是降低了内存总线负载,进一步提升内存支持容量。
NVDIMM:全程非易失性双列直插式内存模块(英语:non-volatile dual in-line memory module,缩写NVDIMM)是一种用于计算机的随机存取存储器。非易失性存储器是即使断电也能保留其内容的内存,这包括意外断电、系统崩溃或正常关机。双列直插式表示该内存使用DIMM封装。NVDIMM在某些情况下可以改善应用程序的性能、数据安全性和系统崩溃恢复时间。这增强了固态硬盘(SSD)的耐用性和可靠性。
指在一个模块上同时放入传统 DRAM 和 flash 闪存。 计算机可以直接访问传统 DRAM。 支持按字节寻址, 也支持块寻址。通过使用一个小的后备电源,为在掉电时, 数据从DRAM 拷贝到闪存中提供足够的电能。当电力恢复时, 再重新加载到DRAM 中。
目前, 根据 JEDEC 标准化组织的定义, 有三种NVDIMM 的实现。分别是:
NVDIMM-N指在一个模块上同时放入传统 DRAM 和 flash 闪存。 计算机可以直接访问传统 DRAM。 支持按字节寻址, 也支持块寻址。通过使用一个小的后备电源,为在掉电时, 数据从DRAM 拷贝到闪存中提供足够的电能。当电力恢复时, 再重新加载到DRAM 中。
NVDIMM-N 的主要工作方式其实和传统 DRAM是一样的。因此它的延迟也在10的1次方纳秒级。 而且它的容量, 受限于体积, 相比传统的 DRAM 也不会有什么提升。
同时它的工作方式决定了它的 flash 部分是不可寻址的。而且同时使用两种介质的作法使成本急剧增加。 但是, NVDIMM-N 为业界提供了持久性内存的新概念。目前市面上已经有很多基于NVIMM-N的产品。
NVDIMM-F指使用了 DRAM 的DDR3或者 DDR4 总线的flash闪存。我们知道由 NAND flash 作为介质的 SSD, 一般使用SATA, SAS 或者PCIe 总线。使用 DDR 总线可以提高最大带宽, 一定程度上减少协议带来的延迟和开销。 不过只支持块寻址。
NVDIMM-F 的主要工作方式本质上和SSD是一样的。因此它的延迟在 10的1次方微秒级。它的容量也可以轻松达到 TB 以上。
NVDIMM-P这是一个目前还没有发布的标准 (Under Development)。预计将与DDR5 标准一同发布。按照计划,DDR5将比DDR4提供双倍的带宽,并提高信道效率。这些改进,以及服务器和客户端平台的用户友好界面,将在各种应用程序中支持高性能和改进的电源管理。
NVDIMM-P 实际上是真正 DRAM 和 flash 的混合。它既支持块寻址, 也支持类似传统 DRAM 的按字节寻址。 它既可以在容量上达到类似 NAND flash 的TB以上, 又能把延迟保持在10的2次方纳秒级。
通过将数据介质直接连接至内存总线, CPU 可以直接访问数据, 无需任何驱动程序或 PCIe 开销。而且由于内存访问是通过64 字节的 cache line, CPU 只需要访问它需要的数据, 而不是像普通块设备那样每次要按块访问。
Intel 公司在2018年5月发布了基于3D XPoint™ 技术的Intel® Optane™ DC Persistent Memory。可以认为是NVDIMM-P 的一种实现。
硬件支持
应用程序可以直接访问NVDIMM-P, 就像对于传统 DRAM那样。这也消除了在传统块设备和内存之间页交换的需要。但是, 向持久性内存里写数据是和向普通DRAM里写数据共享计算机资源的。包括处理器缓冲区, L1/L2缓存等。
需要注意的是, 要使数据持久, 一定要保证数据写入了持久性内存设备, 或者写入了带有掉电保护的buffer。软件如果要充分利用持久性内存的特性, 指令集架构上至少需要以下支持:
写的原子性
表示对于持久性内存里任意大小的写都要保证是原子性的, 以防系统崩溃或者突然掉电。IA-32 和 IA-64 处理器保证了对缓存数据最大64位的数据访问 (对齐或者非对齐) 的写原子性。 因此, 软件可以安全地在持久性内存上更新数据。这样也带来了性能上的提升, 因为消除了copy-on-write 或者 write-ahead-logging 这种保证写原子性的开销。
高效的缓存刷新(flushing)
出于性能的考虑, 持久性内存的数据也要先放入处理器的缓存(cache)才能被访问。经过优化的缓存刷新指令减少了由于刷新 (CLFLUSH) 造成的性能影响。
提交至持久性内存(Committing to Persistence)
在现代计算机架构下, 缓存刷新的完成表明修改的数据已经被回写至内存子系统的写缓冲区。 但是此时数据并不具有持久性。为了确保数据写入持久性内存, 软件需要刷新易失性的写缓冲区或者在内存子系统的其他缓存。 新的用于持久性写的提交指令 PCOMMIT 可以把内存子系统写队列中的数据提交至持久性内存。
非暂时store操作的优化(Non-temporal Store Optimization)
当软件需要拷贝大量数据从普通内存到持久性内存中时(或在持久性内存之间拷贝), 可以使用弱顺序, 非暂时的store操作 (比如使用MOVNTI 指令)。 因为Non-temporal store指令可以隐式地使要回写的那条cache line 失效, 软件就不需要明确地flush cache line了(see Section 10.4.6.2. of Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 1)。
DCPMM英特尔®傲腾™ 技术是指以3D XPoint™内存介质与英特尔先进系统内存控制器、接口硬件及软件IP的独特组合。这项创新技术提供多种外形规格,以帮助不同系列的产品提升系统性能。它能快速访问用户计算机中的常用文档、图片、视频和应用程序,并在关闭电源后记住它们,使用户能够以更少的等待时间创建内容、畅玩游戏和完成创作。
英特尔®傲腾™ 技术既不基于NAND也非动态随机存取存储器(DRAM):这项创新技术兼具二者之所长,在内存/存储层中建立新的数据层,可以有效填补数据中心的内存和性能缺口。
区别与应用
UDIMM由于并未使用寄存器,无需缓冲,同等频率下延迟较小。此外,UDIMM的另一优点在于价格低廉。其缺点在于容量和频率较低,容量最大支持4GB,频率最大支持2133 MT/s。此外,由于UDIMM只能在Unbuffered 模式工作,不支持服务器内存满配(最大容量),无法最大程度发挥服务器性能。在应用场景上,UDIMM不仅可用于服务器领域,同样广泛运用于桌面市场。
而RDIMM支持Buffered模式和高性能的Registered模式,较UDIMM更为稳定,同时支持服务器内存容量最高容量。此外,RDIMM支持更高的容量和频率,容量支持32GB,频率支持 3200 MT/s 。缺点在于由于寄存器的使用,其延迟较高,同时加大了能耗,此外,价格也比UDIMM昂贵。因此,RDIMM主要用于服务器市场。
LRDIMM可以说是RDIMM的替代品,其一方面降低了内存总线的负载和功耗,另一方面又提供了内存的最大支持容量,虽然其最高频率和RDIMM一样,均为3200 MT/s,但在容量上提高到64GB。并且,相比RDIMM,Dual-Rank LRDIMM内存功耗只有其50%。LRDIMM也同样运于服务器领域,但其价格,较RDIMM也更贵些。
最大的区别就是:服务器内存有数据校验和纠错功能,而普通内存没有。memory是用来存储程序和数据的部件,通过使用内存,计算机才有了记忆功能。memory种类很多,按其用途可分为主存储器和辅助存储器。
主存储器又称内存储器(简称内存),辅助存储器又称外存储器(简称外存)。外存通常是磁性介质或光盘,像硬盘,软盘,磁带,cd 等能长期保存信息,并且不依赖于电来保存信息, 但是由机械部件带动, 速度与cpu相比就显得慢的多。内存指的就是主板上的存储部件,是cpu直接与之沟通,并对其存储数据的部件,存放当前正在使用的(即执行中)的数据和程序,它的物理实质就是一组或多组具备数据输入输出和数据存储功能的集成电路。
1. 内存的分类
主存的分类:主存有许多不同的类别(见图4.1)。按照存储信息的功能,内存可分为ram(随机存取存储器)和rom(只读存储器)。根据信息的可修改性难易,rom也可分为mask rom,prom,flash memory等。现在计算机的发展速度相当快,主板厂商也需经常升级bios, 所以用flash memory存储bios程序就成为首选, ram即是我们通常所说的内存。 ram的分类 ram主要用来存放各种输入、输出数据,中间计算结果,以及与外部存储器交换信息和作堆栈用。它的存储单元根据具体需要可以读出,也可以写入或改写。由于ram由电子器件组成,所以只能用于暂时存放程序和数据,一旦关闭电源或发生断电,其中的数据就会丢失,故属于易失性元件。
dram的分类:主板上使用的主要内存从以前的dram一直到fpm dram、edo dram、sdram等。 fpm dram即快速页面模式的dram。是一种改良过的dram,一般为30线或72线(simm)的内存。工作原理大致是,如果系统中想要存取的数据刚好是在同一列地址或是同一页(page)内,则内存控制器就不会重复的送出列地址,而只需指定下一个行地址就可以了。 edo dram即扩展数据输出dram。速度比fpm dram快15%~30%。它和fpm dram的构架和运作方式相同,只是缩短了两个数据传送周期之间等待的时间,使在本周期的数据还未完成时即可进行下一周期的传送,以加快cpu数据的处理。 edo dram目前广泛应用于计算机主板上,几乎完全取代了fpm dram,工作电压一般为5v,接口方式为72线(simm),也有168线(dimm)。 bedo dram(burst edo dram),即突发式edo dram。是一种改良式edo dram。它和edo dram不同之处是edo dram一次只传输一组数据,而bedo dram则采用了"突发"方式运作,一次可以传输"一批"数据,一般bedo dram能够将edo dram的性能提高40%左右。由于sdram的出现和流行,使bedo dram的社会需求量降低。 sdram(synchronous dram)即同步dram。目前十分流行的一种内存。工作电压一般为3.3v,其接口多为168线的dimm类型。它最大的特色就是可以与cpu的外部工作时钟同步,和我们的cpu、主板使用相同的工作时钟,如果cpu的外部工作时钟是100mhz,则送至内存上的频率也是100mhz。这样一来将去掉时间上的延迟,可提高内存存取的效率。
2. dram相关知识
* 基本工作原理 dram是以逻辑阵列形态的基本储存单位来保持数据的,因此在存取时必须提供一个行地址和一个位地址来确定数据的正确位置。第一步是由列地址信号启动,即ras(row address strobe),当此信号启动时,整列的数据都等待着被输出或输入,接着便是由行地址信号启动,即cas(column address strobe),当行地址信号启动时,便在之前已选中的该列中挑出包含所匹配的行地址数据的基本储存单位,并将该数据输出或输入到数据总线。
* 突发模式 突发模式访问不同于一般模式访问,能一次传输一批数据。第一次的内存访问通常要4-7个时钟周期,这叫做存储器的反应时间(latency)。如果读取连续的4个内存地址,则对第2,3,4次的内存访问就不必再次的提供地址,可以在1-3个时钟周期内完成,这就是突发模式访问的原理。如果总线宽度为64bit,则一次突发访问可以依次读取256bits的数据,系统的二级缓存被设计成使用256bits的宽度来适应这种访问模式,能够存储一次突发访问中读取的所有数据位。突发模式的系统定时通常表示成简写的形式:x-y-y-y。x代表第一次访问所需的时钟周期的数量,y代表进行随后的访问所需的时钟周期的数量。通常fpm的y值为3,edo的y值为2,而sdram的y值只有1。
* 接口类型 simm 是single-in line memory module的简写,即单边接触内存模组,其电路板上焊有数目不等的内存ic芯片,即各种dram芯片,此种内存条又分为30个金属引脚(30线)和72线。 dimm 是dual in-line memory module的简写,即双边接触内存模组,也就是说这种类型接口内存的插板的两边都有数据接口触片,这种接口模式的内存广泛应用于现在的计算机中,通常为84针,但由于是双边的,所以一共有84×2=168线接触,故而人们经常把这种内存称为168线内存,而把72线的simm类型内存模组直接称为72线内存。 edo dram内存既有72线的,也有168线的,而sdram内存通常为168线的。
3. 内存的错误更正功能(ecc) ecc(error check &correct)的功能不但使内存具有数据检查的能力,而且使内存具备了数据错误修正的功能,奇偶校验为系统存储器提供了一位的错误检测能力,但是不能处理多位错误,并且也没有办法纠正错误。它用一个单独的位来为8位数据提供保护。ecc用7位来保护64位,它用一种特殊的算法在这7位中包含了足够的详细信息,所以能够恢复被保护数据中的一个单独位的错误,并且能检测到2,3甚至4位的错误。 大多数支持ecc内存的主板实际上是用标准的奇偶校验内存模块来工作在ecc模式。因为64位的奇偶校验内存实际上是72位宽,所以有足够的位数来做ecc。ecc需要特殊的芯片组来支持,芯片组将奇偶校验位组合成ecc所需的7位一组。 芯片组一般允许ecc包含一种向操作系统报告所纠正错误的方法,但是并不是所有的操作系统都支持。windows nt和linux会检测这些信息。
另外,ecc将会使系统略微变慢,原因是ecc的算法比较复杂,为了纠正一位的错误需要消耗一定的时间,通常是在每次存储器读时序中增加一个等待状态,结果是整个系统的性能约下降2-3%。但由于这种dram内存在整个系统中较稳定,所以仍被用于局域网络的文件服务器或internet服务器,其价格较贵。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)