论文部分内容阅读
很多年前,电脑装机还是标准的十三大件,而现在很多设备都已经成为板载的形式存在,装机的配件数量也大幅度减少了。除了CPU、主板、硬盘之外,仍必不可少的便是内存了——要知道即便是显卡,也有CPU核显可以替代,小小的内存却一直独立存在(部分笔记本带有板载内存,但仍是物理上的独立存在)。而且听起来都是个“存”字,很多电脑用户实际上并不是非常清楚内存和硬盘存储的区别,所以有时候会有笑话“我的内存是128TB的,硬盘是16GB”。那么,内存究竟是什么,为何如此重要?这个小小的条状物又是如何工作的呢?
“我”不是临时工!
内存究竟是什么?恐怕很多读者并没有深究过它的作用和意义吧?内存的英文是Memory,也被称为内存储器和主存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。 只要计算机在运行中,操作系统就会把需要运算的数据从内存调到CPU中进行运算,当运算完成后CPU再将结果传送出来,内存的运行状态也决定了计算机的是否能稳定运行。
具体来说,我们都知道CPU处理数据、命令的能力非常出众,但是需要不停地接收新的指令和“要求”才能有的放矢。而海量的数据又都存储于硬盘之中,CPU在工作的时候就必须等待硬盘把数据“贡献”给CPU。当然受限于硬盘自身的读写能力,其提供的数据量对比CPU的处理能力少之又少,哪怕是今天我们看到的PCIe 4.0規格的NVME固态硬盘,也远远不能满足CPU的计算能力,这时就需要内存作为一个“协调者”的角色出现了。
CPU的工作流程大致分为三个步骤,第一个是读取指令,即接收指令需求;第二个是翻译指令,将发送过来的指令需求“翻译”;第三步,则是发送信号执行翻译过的这些指令。在第一步读取指令的时候,CPU并非直接读取硬盘发送过来的数据,因为那“太慢了”,CPU调取的是从硬盘发出并暂存于内存中的指令,这些指令会被写入指令寄存器(CPU)中以供后续使用。
或者我们“调过头”来看,硬盘存储着我们的程序、数据,当我们双击某个程序图标的时候,CPU首先接收到我们的命令,然后CPU就会告诉硬盘,运行你保存的程序1,并且把程序1发送到内存中。然后CPU又会和内存说,我已经“命令”硬盘把程序1送到你这里了,你要暂存一下,等程序1的必要数据命令被硬盘传送到内存后,CPU会将其调入到自己的寄存器中,然后执行程序1。
内存远没有你想得那么简单
我们刚刚了解了内存的基本作用,但是内存是不是因为是个“临时工”,它没那么重要呢?在厘清这个问题前,我们还需要了解一下内存究竟是什么。
谈到存储通常我们都会听到这样的英文简称“ROM、R AM”。所谓ROM,全称为Read Only Memor y,即只读存储器,简言之,它只能被读取,而不能被写入。但是,它在断电后依旧可以“记住”信息,不会丢失任何数据。当然了,ROM其实是一个统称,它也细分称集中不同的类型。比如PROM,这是一种可编程的ROM,它可以通过特殊方式写入数据,但是只是一次性的,写入后就不可更改。
另一种则是EPROM,即可擦除可编程ROM,它的写入原理是通过紫外光的照射擦出原先的程序。最后一种是EEPROM,它是EPROM的“升级版”,不同之处是采用电子擦写的方式而不是紫外光照射,并且写入时间很长,写入速度也很慢。另外,我们熟知的NAND FLASH——就是固态硬盘使用的存储颗粒,本质上也属于ROM的一员。
而RAM则是随机存取存储器(Random Access Memory),它的作用是负责直接与CPU交换数据,能够随时读写,而且速度非常快。但是,当电源关闭时RAM不能保留数据,如果需要保存数据,就必须把它暂存的数据写入到一个存储设备例如硬盘中。我们电脑上使用的睡眠功能,就是通过将内存暂存的数据写入硬盘,用以唤醒后快速恢复状态设计而成的。RAM和ROM相比,两者的最大区别是RAM在断电以后保存在上面的数据会自动消失,而ROM不会自动消失,可以长时间断电保存。
同ROM有很多细分种类一样,RAM大体也分为两类,即SRAM(静态随机存储器)和D R AM(动态随机存储器)两种。SRAM(Static RandomAccess Memory,静态随机存储器),它是一种具有静止存取功能的内存,不需要刷新电路即能保存它内部存储的数据。优点是速度快,不必配合内存刷新电路,可提高整体的工作效率。缺点是集成度低且功耗较大,相同的容量体积较大(需要靠超大规模集成电路解决),因而成本昂贵,只能少量用于关键性系统(例如CPU缓存)以提高效率。 前面我们也说到了内存的作用,某种程度上讲它也算一种“缓存”,不过当它暂存的数据发送给CPU的时候,CPU内部也需要缓存来缓冲,这个缓存就是基于SRAM而生的。CPU的缓存和主内存之间信息的调度和传送是由硬件自动进行的,不需要操作系统的干预和“指导”。除了超高的速度,CPU缓存的重要技术指标是它的“命中率”。可以这样理解:CPU的缓存作为内存局部区域的一个副本,用来存放当前最活跃的程序和数据,它利用程序运行的局部性,把局部范围的数据从内存复制到缓存中,使CPU直接高速从缓存中读取程序和数据,从而解决CPU速度和内存速度不匹配的问题——显然,从硬盘保存的数据到CPU计算,为了协调匹配速度的一致性问题,就必须使用多重方式来缓冲保(暂)存数据、命令。
除了SRAM,RAM里的另一類就是我们的主角内存了。DRAM(DynamicRandomAccessMemory,动态随机存储器)是现今最为常见的系统内存,无论是DDR还是DDR5都属于DRAM范畴。DRAM只能将数据保持很短的时间。为了保持数据,DRAM使用电容存储,所以必须隔一段时间“刷新”一次,如果存储单元没有被刷新,存储的信息就会丢失,所以内存也有另一种称谓“易失性存储”。
从EDO讲起
在中国普及电脑之时,EDO内存才是主角。EDO内存全称是E x tended DateOut RAM,中文为扩展数据输出存储器,这其实是Micron公司的专利技术,而且这种内存分为72线和168线两种规格,并且带宽只有32Bit,因此必须成对使用,采用5V电压(DDR4为1.2V电压),速度为40ns(纳秒),一般容量都在4MB至16MB之间。
它的出现实际是为了配合支持16Bit(现今电脑为64Bit)的80486、Pentium CPU而生——EDO的“前辈”FPM内存速度无法跟上时代,只能让位于EDO内存。FPM全称为Fast Page Mode,它的工作方式是每3个时钟工作周期传输一次数据,效率自然是非常之低。不过也正是由于FPM的出现,人们才会有内存条这个概念,因为再此之前,内存还是依附于主板之上的(但不是集成)。
EDO内存的工作模式其实和FPM非常相似,它取消了扩展数据输出内存与传输内存2个存储周期之间的时间间隔,在把数据发送给CPU的同时去访问下一个页面,故而速度要比FPM快15%~30%。
无论是EDO还是更早的FPM内存,他们都采用SIMM(SingleIn-line Memory Modules)接口,即两侧金手指传输相同的信号,早期的内存频率与CPU外频是不同步的,属于异步DRAM设备,EDO内存本身的金属触点看起来和我们现在的内存别无二致,但是内存插槽却有差异——金属弹片一样的接插口看起来十分容易损坏。
在上世纪90年代,EDO内存的普遍装机容量维持在4MB至8MB之间,鲜有16MB的配置(服务器版内存可达256MB),对比今天动辄16GB、32GB的内存容量来说(当时的硬盘容量也不过刚刚迈入GB门槛),真是少得可怜。
EDO内存的最大问题在于运行速度,而且受限于自己的技术规格,提升速度的能力也极为有限,很快,它便被SDRAM取代了。
天价内存的开端SDRAM
内存技术一直在升级,其中一个比较重要的跨越就是从EDO到SDRAM。SDRAM(SynchronousDynamicRandomAccessMemory,同步动态随机存取存储器)也称“同步动态内存”,都是168线、带宽64bit、3.3V电压,其工作原理是将RAM与CPU以相同的时钟频率进行控制,使RAM和CPU的外频同步,彻底取消等待时间。SDRAM是在DRAM的基础上发展而来,也属于DRAM的一种,这里的同步是指内存工作需要同步时钟,内部命令的发送与数据的传输都以时钟为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是由指定地址进行数据读写。
由于内存频率与CPU外频同步,这大幅提升了数据传输效率,再加上64bit的数据位宽与当时CPU的总线一致,只需要一根内存就能让电脑正常工作了,这降低了采购内存的成本,在此之后,除了R AMBUS内存短暂出现过需要成对安装的情况后,再无其他了。
第一代SDR SDRAM的频率是66MHz,通常大家都称之为P C 6 6内存,后来随着Intel与AMD的CPU的频率提升相继出现了PC100与PC133的SDRSDRAM,还有后续的为超频玩家所准备的PC150与PC166内存,SDR SDRAM标准工作电压3.3V,容量从16MB到512MB,相比于EDO内存的容量可谓呈几何状增长。
在SDRAM的时期还经历了历史上第一次内存天价事件——由于内存产能出现严重不足,原本只需要百余元的128MB SDRAM短时间内暴涨身价,达到了1300余元,要知道那还是在20世纪90年代末到21世纪初的时期,这个价格堪比今日显卡的天价,而且这个周期长达近一年之久,很多当年的电脑无奈都只能配备64MB的内存作为标配,一如当前i9 CPU+GT730 GPU的搭配方式。
SDRAM的存在时间也相当的长,Intel从奔腾2、奔腾3到奔腾4(Socket 478),以及Slot 1、Socket 370与Socket 478的赛扬处理器,AMD的K6与K7处理器都可以使用SDRAM内存。当1999年AMD推出K7架构,2000年Intel推出奔腾4处理器,两家处理器的前端总线都在不断攀升,最高只有133MHz的SDRAM再也无法满足带宽需求了,换代在所难免,不过问题是,继承者究竟是谁呢?
巨星的陨落RAMBUS
正如前文所述,随着技术发展,CPU对内存带宽的需求越来越大,SDRAMPC133规格可以提供1064MB/S的带宽,但是远远不能满足新的Pentium4处理器需求,内存的变革迫在眉睫。选择什么样的技术路线才合适呢?在当时,具有市场优势地位的Intel权衡利弊,选择了RAMBUSDRAM内存,简称RDRAM。
RDRAM是由Rambus公司推出的一种新型内存,它与SDRAM不同,采用了新一代高速简单内存架构,基于一种类RISC(Reduced Instruction Set Computing,精简指令集计算机)理论,可以减少数据的复杂性,使得整个系统性能得到提高。
为何Intel会选择一个拥有专利,门槛颇高的内存规格来作为下一代内存标准呢?这是由于在当时唯频率取胜是不二法门,谁的CPU主频高谁就具有更好的性能表现。比如Intel Pentium 4采用的超标量流水线设计,其最大的特点就是频率奇高,虽然因此执行指令的周期会更长(性能不佳),但奈何唯频率致胜的Intel一门心思要保证自己的频率高于竞争对手AMD。为了配合超高频率的CPU,高频内存也必须跟上,所以RDRAM内存几乎成为了唯一的可选项。这是因为RDRAM内存以高时钟频率来简化每个时钟周期的数据量,因此内存带宽相当出色,如PC 1066 1066MHz 32bit带宽就可达到4.2G Byte/s,RDRAM也因此一度被认为是Pentium 4 CPU的绝配。
从本质上讲,RDR AM内存的设计极为超前,而且拥有广阔的发展空间,奈何两大“昏招”让它迅速归于沉寂。其一就是IntelPentium 4不争气,超标量流水线设计让它的频率攀升,但是性能却不升反降,效率非常底下。作为捆绑的RDRAM非常尴尬,有点无用武之地的感觉,而且平台仅仅限于Intel 820、840、850芯片组主板;其二是专利门槛过高,内存制造商想要制造RDRAM就必须繳纳一笔不菲的专利金(制造成本也极为昂贵),这无论是在EDO内存还是SDRAM内存时代都是不存在的事情,甚至时至今日的DDR 1~ 5内存也没有发生过,这就造成了RDRAM的价格极为昂贵;其三,限于技术,RDRAM内存也必须成对使用!甚至在主板上,如果有4条内存插槽,除了要1、3或2、4这样成对安装内存之外,空余的两个内存槽位都需要安装终结器,使用非常麻烦。
最终,Intel的Pentium 4+RDR AM内存组合被AMD的K7+DDR内存击败,Intel也迅速转头支持DDR内存,拥有先进技术特性的RDRAM就此迅速在消费级电脑平台上销声匿迹。
DR内存的崛起
在Intel为自己的Pentium 4强行推广RDRAM的同时,一众消费级I T厂商(包括内存厂商)也在寻找新的“替代品”——SDRAM受限于自身技术天花板,必须找到一个“免费(没有专利限制)”性能还不错的技术路线,于是,DDR内存诞生了。
严格意义上,DDR内存应该被称作DDR SDR AM,所谓的DDR是DoubleData Rate的缩写,全称就是双倍速率同步动态随机存储器。本质上DDR内存就是延续了SDR AM的基本技术特征,这样做的好处显而易见,第一对于内存厂商来说,无需专利金,且针对普通制造SDR AM内存的设备稍加改进就可以继续生产D DR内存,成本控制非常出色;第二也是非常重要的,DDR内存可以为新世代处理器提供足够的内存大带宽。例如DDR 266/DDR333/DDR 400所能提供的内存带宽分别是2.1GB/sec,2.7GB/sec和3.2GB/sec,虽然比不上RDRAM内存,但是对比SDRAM已经是非常出众的成绩了。
SDRAM在一个时钟周期内只传输一次数据,它是在时钟的上升期进行数据传输,DDR内存则是一个时钟周期内传输两次数据,它能够在时钟的上行和下行时各传输一次数据,因此称为双倍速率同步动态随机存储器。DDR内存可以在与SDRAM相同的总线频率下达到更高的数据传输率。 对比SDRAM,DDR内存运用了更先进的同步电路,使指定地址、数据的输送和输出主要步骤既能独立运行,又可以保持与CPU完全同步。 外观上,DDR与SDRAM内存“长得很像”,他们具有同样的尺寸和同样的针脚距离。但DDR为184针脚,比SDRAM多出了16个针脚,主要包含了新的控制、时钟、电源和接地等信号,另外就是在电压上,DDR内存的工作电压为2.5V,比SDRAM使用的工作电压3.3V要低不少。
另外,从DDR内存开始,双通道的内存技术也被引入。普通的单通道内存系统具有一个64bit的内存控制器,而双通道内存系统则有2个64bit的内存控制器,在双通道模式下具有128bit的内存位宽,从而在理论上把内存带宽提高一倍。虽然双64bit内存体系所提供的带宽等同于一个128bit内存体系所提供的带宽,但是二者所达到效果却是不同的。双通道体系包含了两个独立的、具备互补性的智能内存控制器,理论上来说,两个内存控制器都能够在彼此间零延迟的情况下同时运作。比如说两个内存控制器,一个为A、另一个为B。当控制器B准备进行下一次存取内存的时候,控制器A就在读/写主内存,反之亦然。两个内存控制器的这种互补“天性”可以让等待时间缩减50%。双通道DDR的两个内存控制器在功能上是完全一样的,并且两个控制器的时序参数都是可以单独编程设定的。这样的灵活性可以让用户使用两条不同构造、容量、速度的DIMM内存条,此时双通道DDR简单地调整到最低的内存标准来实现128bit带宽,允许不同密度/等待时间特性的DIMM内存条可以可靠地共同运作。
凭借着不错的性能,低廉的制造成本和售价,加之没有专利门槛的种种限制,DDR迅速占领市场,最终连支持RDRAM的Intel都不得不调头转而支持DDR内存,从此,DDR内存走上了高速发展的道路。
DDR2到DDR5我们一直在进步
从DDR2开始,每次升级的不仅仅是频率,包括它同一时钟内传输的数据都在成倍增长,工作电压也在不断降低。例如DDR2为雙信道两次同步动态随机存取内存,内存预读取宽度提升至4bit,是DDR的两倍,即DDR2内存每个时钟能够以4倍外部总线的速度读/写数据,并且能够以内部控制总线4倍的速度运行,也就是说,在同样133MHz的核心频率下,DDR的实际工作频率为133MHz×2≈266MHz,而DDR2则可以达到133MHz×4≈533MHz(最高为166MHz×4≈667MHz)。此外。DDR2采用FBGA封装方式替代了传统的TSOP方式,电气性能与散热性更佳。
到了DDR3则提升为双信道三次同步动态随机存取内存。DDR3内存预读取宽度从4bit提升至8bit,核心同频率下数据传输量更是DDR2的两倍。同时,DDR3分别拥有1066MHz、1333MHz、1600MHz三种频率。此外,DDR3的规格要求将电压控制在1.5V,较1.8V的DDR2节省约30%的功耗。
到了DDR4内存时代功耗明显降低,电压达到1.2V。频率上来看,共有2400MHz、2666MHz、3000MHz、3200MHz、3600MHz、4200MHz几种规格,这也是目前我们最为普及的内存产品。
即将来临的DDR5内存,最高内存传输速度能达到6.4Gbps,与之对比,在DDR4内存标准下最高内存传输速度只能达到3.2Gbps。此外,DDR5也改善了DIMM的工作电压,将电压从DDR4的1.2V降至1.1V,能够进一步提升内存的能效表现。
简言之,就是在同一个频率下上下行的传输能力不断拓宽,同时提升等效频率,达到增加带宽的目的。这种设计最大的优点就是迭代相对容易,设计生产的阻力也更小,普及起来没有那么麻烦。
另类杀手:傲腾内存
我们之前提过,内存和存储介质(机械硬盘或固态硬盘),无论如何也远远达不到CPU所需的带宽需求。而有这么一款产品,它兼具了内存的高速和存储介质的存储能力,非常有特点,缺点自然还是一个字:贵,这便是傲腾内存。
傲腾是英文Optane的音译词,而这个Optane则是类似一种品牌的名词,实际是指英特尔发明的3D XPoint存储技术。3DXPoint与NAND Flash完全不同,它接近于内存的性能(但是可以掉电保存,也就是非易失性存储,而不是内存的易失性存储),延迟、耐擦写性、介质速度等几个关键指标也大大优于NAND Flash。
傲腾现在分成了傲腾SSD和傲腾内存两种,分别是面向企业市场的傲腾SSD和面向主流消费市场的傲腾内存。其实,傲腾的诞生不仅是英特尔为了单纯提升磁盘/内存性能,未来的发展说不定就能将内存、硬盘二合为一,毕竟3D XPoint现在具备了接近内存的性能和磁盘的读写数据保存功能。
3D XPoint是由Intel和美光联合研发的一种全新架构非易失性存储技术,Intel宣称3D XPoint拥有远超NAND的容量和接近DRAM的性能,读写性能是NAND的1000倍以上,寿命是NAND的1000倍以上,数据密度则达到了DRAM的十倍以上。更为厉害的是3D XPoint颗粒可以做成多种形式产品,比方说内存、存储硬盘等。
目前,这个产品已经推出了4年有余,不过受到了成本因素和专利因素的限制,还没有看到普及的可能。但这终归是一个新的尝试,毕竟对于电脑而言,即便现在发展到PCIe 4.0版本的NVMe硬盘,其带宽速度也远远不能满足我们的需求,可以说依旧是电脑性能组成元素中的一个短板。如果能让一个设备拥有内存的速度,还能够进行存储,这才是电脑解决系统瓶颈的一个最好选择。