第012课 内存控制器与SDRAM

参考文章:高手进阶,终极内存技术指南——完整/进阶版

文章原载于《电脑高手》杂志2002年第12期,作者赵效民。

 

名词释义:

【内存类设备】有地址线,可以由CPU直接通过地址线访问的设备,如SDRAM、Nor flash、网卡等;

【内存控制器】CPU通过内存控制器(MC)与内存交换信息,CPU将地址发送给MC,MC把地址分解后到相应内存芯片取相应地址的数据;

【北桥与南桥】CPU通过北桥和南桥连接其他设备,北桥连接高速设备和南桥,南桥连接低速设备;目前已将北桥整合到了CPU中,南桥也将进一步整合;

【SDRAM】同步动态随机存取内存,同步是指内存与CPU时钟频率相同,动态是因为DRAM使用电容作为数据存储单元,需要不断刷新为电容充电来保证数据不丢失。

名称 功能 基本存储单元
DRAM 读、写 电容,RAM读写速度都很快,但掉电后数据丢失,不能存储数据
SRAM 读、写 锁存器(4个晶体管构成)
ROM 读、存储 晶体管,满足特定条件时才能写ROM和flash
flash 读、存储 特殊场效应管,读取速度比ROM快
Nor flash   读速度快,写速度慢,价格高,支持XIP(eXecute In Place,即芯片内执行),常用于存放BootLoader
Nand flash   读速度慢,写速度快,价格低,通常有坏块,常用于在BootLoader引导下烧录大体积程序

【模式寄存器】内存芯片内部的寄存器,芯片初始化时,内存控制器通过地址线写模式寄存器,设置内存芯片的工作参数。

 

以JZ2440开发板使用的K4S561632N内存芯片为例:

第012课 内存控制器与SDRAM

 

一、结构

关键词:P-BankL-Bank

内存芯片组输出数据的位宽必须与CPU数据总线位宽相同,如32位系统中内存芯片组输出的数据位宽必须为32位,这样的一组内存芯片称为一个物理Bank(Physical Bank,简称P-Bank)。K4S561632N的数据位宽为16位,因此需要两个芯片并联才能组成一个P-Bank,一个芯片存储低16位,另一个存储高16位,组成一个32位数据。一个内存控制器可以接多个P-Bank,通过片选信号CS来选择。

为避免寻址冲突造成内存效率降低,将芯片分为多个逻辑Bank(Logic Bank,简称L-Bank),根据芯片连线BA0、BA1可知,该芯片内部分为4个L-Bank,通过BA0和BA1进行选择。

每个L-Bank相当于一张表格,有行和列,芯片在RAS和CAS控制下从地址总线接收行地址和列地址。由芯片手册可知,K4S561632N的行地址由A0-A12确定,共2^13个,列地址A0-A8确定,共2^9个。

综上,K4S561632N的容量 = L-Bank数 * 行数 * 列数 * 芯片位宽(基本存储单元位数) = 4 * 2^13 * 2^9 * 16 bit= 256Mb = 32MB。

 

二、读写方法

以读数据为例,CPU发出32位地址信号,内存控制器根据地址发出片选信号CS选中SDRAM,并将地址信号拆分为L-Bank地址、行地址、列地址,可将L-Bank地址信号BAn、行地址信号An、行选通信号RAS同时发给内存,选中待读取数据所在的行,然后发送列选通信号CAS和列地址信号An,选中待读取数据所在的位置,芯片把该数据通过DQn发送到数据总线上。

写操作与读操作类似,但要使能写信号WE。

 

三、时序

tRCD: RAS to CAS delay,行选通到列选通之间的间隔时间,必须设置足够的预留时间,以保证从 地址总线依次得到的行地址信号和列地址信号不会互相干扰;

CL: CAS latency,CAS潜伏期,指从发出CAS信号到数据总线上出现有效的数据所经过的时间;

BL: Brust Length,突发长度,可以设置一个BL值用于操作连续的BL个数据,只要指定起始地址,内存芯片就可以自动依次对接下来的BL-1个数据进行操作,而不需要再提供地址;

tRP: RAS pre-charge Time,行地址每次改变需要的时间,又称为预充电有效周期。SDRAM每次只 能寻址一行,如果接下来要对另一行进行寻址,就要对当前行所有存储体进行数据重写(从 S-AMP写回存储体,即按照S-AMP对存储体重新充电),并复位行地址,这个操作叫做预充 电;

tRC: Row cycle time,行周期时间,从开始操作某行到开始操作另一行的最短时间。

 

四、其它概念

初始化: 系统启动时,内存控制器在BootLoader控制下通过地址线对芯片内的模式寄存器进 行设置,设置内容包括上述时序要求等;

S-AMP: 相当于一个缓存,读取某个存储体时,数据先发送到S-AMP,再发往数据总线,S-AMP会 暂存这个数据,再次读取时可以直接发送到数据总线,不用再读取存储体,预充电刷新 操作时,释放S-AMP,对存储体重新充电;

刷新: DRAM为电容存储,存储体中电容的数据有效保存期上限为64ms,因此每64ms要对所有 存储体进行一次重写操作(即刷新,与预充电中的重写操作一样)。每次花费数个时钟 周期时间刷新一行,64ms/2^13时间后刷新下一行;

DQM: Data I/O Mask,数据掩码,用于屏蔽某些不需要的字节,该芯片组输出32位数据,因 此有4条DQM线。