内存控制器
what is memory controller?
内存控制器是一个用于管理与规划从内存到CPU间传输速度的总线电路控制器。
工作方式
内存控制器控制着必要的逻辑读写DRAM,每隔一段时间刷新动态随机存取存储器(DRAM)的内容。进行读取和写入动作时,内存控制器会根据数据到DRAM中选择行和列,通过一个多路转换器将数据合并以减少操作所需的总线宽度,总线宽度是允许同时进行通信的存储单元数目。内存控制器的总线宽度范围为512位,通常被实现为数个64位内存控制器同时并行运行。(团体模式)。现在实验中的内存控制器除了包含执行存储器管理单元地址转换中的第一级,也包含第二级别的地址转换,进一步减少带宽占用率。
现在的内存控制器一般集成在处理器上(从Intel Nehalem开始,NUMA)
NUMA的设计,提高了CPU访问内存和外设的速率,奈何CPU处理速率远远超过了内存的吞吐速率,就给CPU带来了不必要的开销。一般地,CPU从DDR中取指令,大概需要花费几百个时钟周期,在这几百个时钟周期中,处理器除了等待什么也不能做。于是有了Cache。
Cache主要有3级:
- L1:最快,但是容量最小,一级cache分为指令cache和数据cache
-LLC:最慢,但是容量最大。当CPU需要访问某个地址时,首先在cache目录表中查询是否有该内容。L3 cache命中,大约需要40个时钟周期,L3cache没命中,一个内存读需要140个时钟周期。