存储器控制器(Memory Controller)是存储器与CPU之间交换数据的中介。存储器控制器根据不同的存储器规格或者接口规范衍生出不同类型,如用于动态随机存取存储器(DRAM)的控制器和用于闪存(Flash)的控制器。
存储器控制器(Memory Controller)是存储器与CPU之间交换数据的中介。存储器控制器根据不同的存储器规格或者接口规范衍生出不同类型,如用于动态随机存取存储器(DRAM)的控制器和用于闪存(Flash)的控制器。
在计算机中的,CPU 和内存之间交换数据需要内存控制器。它决定了计算机系统所能使用的最大内存容量、内存存储体(Bank) 数、内存类型和速度、内存颗粒数据深度(Depth) 和数据宽度( Width)等重要参数,对计算机系统的整体性能有较大影响。目前内存控制器一般集成在 CPU里面,缺点是对内存的适应性比较差,只能使用特定类型的内存;但优点是能够减小数据延迟,提升系统性能。为了进一步解决内存性能对系统整体性能的制约,业界研发出了全缓冲模组(Fully Buffered DIMM,,FB-DIMM)技术。该项技术在内存控制器与内存之间增加了高级内存缓冲器(Advanced Memory Buffer, AMB),通过高速、多通道串行、点对点的接口与内存控制器及其他内存通信,解决了传统并行式内存架构速度与容量难以兼顾的问题。
不同于内存控制器,闪存控制器不但负责CPU与闪存之间的通信,还对闪存进行管理,包括坏块管理(Bad Block Management)、 磨损均衡(Wear Leveling)等。闪存的耐擦写次数是有限的。通过磨损均衡技术,闪存控制器会记录闪存存储空间的使用情况,使得数据每次改写时能够写到闪存中的不同位置,而不是一直重复写入同一个位置。在理想状态下,磨损均衡技术可以保证在重新使用某一空间之前,闪存的所有其他物理空间都已经被均匀使用过。这种方式最大限度地使用了闪存单元,减少了对特定闪存单元的损耗,可以延长整个闪存的寿命。但是随着擦写次数增多,闪存单元还是会逐渐达到最大擦写次数,失效的存储单元会逐渐增加,最终体现为闪存中的坏块在使用过程中不断增加。坏块管理技术会将发现的坏块做上标记,闪存控制器通过读取这些标记建立坏块表,表中包含的块将不被寻址,即当寻址到一一个坏块时重定向到一个好块。
从使用的角度来看,虽然闪存的容量有所损失但是仍然能够使用,直至坏块数达到预设值时整个闪存才算损坏。日前常见的方案有独立式闪存控制器和嵌入式多媒体卡( Embedded Multi- Media Card, eMMC)。eMMC将闪存控制器和闪存封装在一起,主要应用于手机或平板电脑等产品。它提供标准接口并管理闪存,使得产品厂商只专注于产品开发,不需要处理闪存兼容性和管理问题,缩短了新产品的上市周期和研发成本。

纠错编码(ECC) 技术能发现并纠正存储器数据的错误从而提高存储器的可靠性。存储器控制器支持ECC技术,存储器只需要提供额外的监督位存储容量即可。控制器支持ECC功能的优势是,算法没有固化在存储器中,因此选择更具灵活性;缺点是没有结合存储器本身进行针对性的性能优化。如图5-74所示,k位的原始数据D(k)经过ECC编码后生成带有监督位的n位数据C(n,k),控制器将该数据写入存储器。从存储器读出数据C(n,k),如果C'中出现的错误位数没有超过控制器ECC编码的纠错能力,经过存储器控制器的解码纠正可得到正确的数据Q(k)=D(k);反之,则有可能不能纠正。从只能纠正1位错误的汉明码开始,随着存储器误码率的增加能够纠正2位其至更多位错误的ECC编码被逐渐采用,目前常用的有BCH码,RS码和LDPC码等。
