内存控制器(英语:Memory Controller)是一个用于管理与规划从内存到CPU间传输速度的总线电路控制器,它可以是一个单独的晶片,或集成到有关的大型晶片里;如CPU或北桥内建的内存控制器。[1]
工作方式
内存控制器控制着必要的逻辑读取和写入DRAM ,并每隔一段时间刷新动态随机存取存储器(DRAM)里的内容。如果没有不断刷新DRAM将会丢失已写入的数据,因为DRAM的储存单元其实是电容器的一种,电容器会不断泄漏它储存的电荷,根据JEDEC标准只要泄漏速度不小于64毫秒内存就可以正常工作。进行读取和写入动作时,内存控制器会根据数据地址到DRAM中选择行和列,通过一个多路转换器将数据合并以减少操作所需的总线宽度,由DRAM输入端的多路转换器电路承接转换操作,其中经由DRAM的多路分解器为转换后的输入数据选择正确的存储器位置并返回数据,总线宽度是允许同时进行通信的存储单元数目。内存控制器的总线宽度范围从在早期的系统中的8位,演变成在更复杂的系统和显卡中的512位,这通常被实现为数个64位内存控制器同时并行运行,这称为“团体模式”。一些内存控制器,例如集成QUICC内存控制器的Power QUICC II处理器,可在同一时间连接到各种不同类型的装置,如:SDRAM 、SRAM、ROM和内存映射的I/O。一些内存控制器会集成ECC错误检测和校正的功能。现在实验中的内存控制器除了包含执行存储器管理单元地址转换中的第一级,也包含第二级别的地址转换,进一步减少带宽占用率。[2]
历史
一开始内存控制器在主板上有独立的晶片;在英特尔微处理器的传统电脑上,其功能被集成在主板的北桥上;但许多现代微处理器,如Alpha 21364, AMD Athlon 64处理器(和以后的AMD处理器),IBM POWER5(和以后的POWER处理器) ,Sun UltraSPARC T1,Intel Nehalem处理器(和以后的Intel处理器)上集成了内存控制器(英语:Integrated Memory Controller,IMC) ,以减少内存延迟。这提升了系统的性能。当DRAM控制器不在处理器里而是在北桥里,那么相同的CPU可以被安装在一个拥有新北桥的主板上以支持新内存模式,但这样的设计会增大处理器与存储器之间的资料发送延时,因为处理器需经北桥方可存取存储器,而处理器与北桥之间的总线带宽往往是有限的,而这一情况可通过增大CPU缓存的方法来缓解。[3][4]
双倍数据率同步动态随机存储器
DDR内存控制器是用来驱动DDR SDRAM的,通过在系统的时钟的上升沿和下降沿同时数据传输来实现双倍数据存储器访问。 DDR内存控制器明显的比单倍数据速率控制器更复杂,但允许两倍数据的传输是在内存单元不增加时钟速率或增加总线宽度的情况下。
双通道内存
双通道内存控制器(Dual Channel),动态随机存取存储器(DRAM)分别连接两个不同的总线(Bus),让两个内存控制器并行访问它们,这总线理论带宽提高一倍。在理论上可以有更多的信道被建立(为每一个DRAM单元建立单独信道将是理想的解决方案),但由于线路数量、电容器、需要并行接入线路具有相同的的长度,添加越多的信道,设计越复杂。
全缓冲内存模块
全缓冲内存系统(英语:Fully Buffered DIMM,FB-DIMM)将内存的缓冲装置用于每个内存模块连接并串行传输到内存控制器,这是一种新总线设计;它不像传统的内存控制器装置,使用串行数据链路的内存控制器,而不是使用以前的内存设计并行链接。以增加延迟为代价(因串行线路,访问存储器位置的指令必须排队等待),允许使用数量较少层的电路板,令在电路板上连接内存颗粒的导线数量大幅减少,这意味着更多更密集的内存颗粒可以放置在同一电路板上。这种增长是由于在一定的时间内读出的资讯由DRAM单元的FB-DIMM控制器所使用的串行格式转换成并行,内存控制器在电路板上的一个并行形式。从理论上FB-DIMM的内存缓冲装置可以建成访问任何DRAM单元,并允许存储单元访问未知设计的内存控制器,但是这并没有被证实,该技术正处于起步阶段。