在 SoC 中,存储器是决定性能的另一个重要因素。不同的 SoC 设计中,根据实际需要采用不同类型和大小的存储器,但其基本存储体系大体一致,如图 4-9 所示。典型的 SoC 存储器体系包括处理器内部的寄存器和 Cache(SRAM)、片内 ROM、片外主存和非易失存储器 Flash。其中,寄存器通常由十几到几十个构成,用于缓存程序运行时的频繁使用的数据(如局部变量、函数参数等)。Cache 是提升处理器性能的关键部件,利用程序局部性原理,以块为单位,通过FIFO或LRU替换算法,对指令或数据进行缓存,降低处理器与片外存储的交换频率,提升处理器性能,一般又可细分为指令 Cache 和数据 Cache。此外,Cache 通常采用分层组织,分为1级、2级、3级 Cache。对于多核处理器而言,1级 Cache 为每个核独享,而 2、3 级 Cache 多为多核共享。片内 ROM 作为只读存储器,通常用来存放 SoC 系统的启动程序(如 Bootloader 等),从外存中读取系统程序和应用程序,送到主存。片外主存用于存放当前正在运行的系统程序、应用程序、数据及堆栈等关键信息。通常采用易失存储器,如 SDRAM、DDR2、DDR3 等,系统掉电后,信息丢失。Flash为 SoC的主要外存,可分为Nor Flash 和 Nand Flash。Nor Flash 具有字节寻址能力,支持芯片内执行,通常用来存放系统引导启动程序,可实现 SoC 系统的片外启动。Nand Flash为块设备,存储容量大,非易失,用来存放系统程序,如操作系统等。
由soc存储体系中的各存储器的特性,构成分层存储结构,如图4-10所示。从寄存器到Flash,访问速度越来越慢,存储容量越来越大,成本越来越低,且上一层的存储的内容为下一层的子集。采用分层存储结构后,soc存储体系可在性能、容量以及成本之间获得一个更好的折中设计。
1.存储器的分类
根据存储器的特点和使用方法不同,可以有以下分类方法。
(1)按照存储介质分类
目前可利用的存储介质主要有半导体材料、电磁材料和光介质。用半导体材料构成的存储器称为半导体存储器。磁性材料存储器主要是磁表面存储器,比如磁带、磁盘、硬盘。光介质存储器称为光盘存储器。除上述三种存储介质外,当前还出现了很多基于新介质的新型存储器,如铁电存储器 FeRAM 等。
(2)按照存储方式分类
随机存取存储器(RAM,Random Access Memory)中每个可寻址的存储位置有唯一的物理寻址机制,存取时间与存储位置无关,比如主存储器、Cache 等。
顺序存取存储器(SAM,Sequential Access Memory)的特点是信息按照顺序存放和读取,其存取时间取决于信息存放的位置。磁带存储器就是一种顺序存取存储器,其容量大,但访问速度慢。
相连存储器的访问不是通过地址进行访问的,而是按内容检索到存储位置进行读写。(3)按信息是否可更改分类
按信息的可更改性分读写存储器和只读存储器(ROM,Read Only Memory)。读写存储器中的信息可以读出和写入,比如 RAM 就是一种读写存储器。ROM 通过一定方式将信息写入以后,信息就固定在 ROM 中,即使电源切断之后,信息也不会丢失。
(4)按照断电后信息的可保存性分类
按断电后信息的可保存性分为非易失性存储器(NVM,Non-volatileMemory)和易失性存储器(Volatile Memory)。NVM 中的信息可以一直保留,不需要电源维持,比如 ROM、闪存Flash、光盘存储器等;易失性存储器在电源关闭后信息自动丢失,比如主存、Cache 等。
2.cache
3.静态随机存储器SRAM
静态随机存储器(SRAM,Static Radom Access Memory)一种具有静止存取功能的存储器,即不需要刷新电路,只要不停止供电,就能保持其内部存储数据的状态。通常,SRAM 中每个存储单元需要由6个品体管构成(VT~VT6),如图 4-11所示。存储单元中的数据被存储在由 4个品体管(VT~VT)构成两个交叉耦合的反相器中。另外两个品体管(VT和 VT)是连接存储单元和用于读写的位线(BL,BitLime)之间的控制开关。
对 SRAM 进行访问时,字线被施加高电平,使得品体管 VT与 VT导通,从而将存储单元与两条位线连通。位线用于读或写存储单元的保存的状态。
因为 SRAM 不需要刷新电路来保持其存储单元的状态,所以 SRAM 的访问速度非常快,可达到和处理器的时钟同步。但由于 SRAM 存储每一位需要使用6个品体管,因此其集成度不高,面积较大,功耗较高,价格较贵。综合 SRAM 的上述特性,其常常被作为微处理器的高速缓冲存储器 Cache,如 L1、L2、Cache 等。
相比其他类型存储器,SRAM 存储器的外围引脚信号较少,接口协议简单,比较容易设计。
4.动态随机存储器
动态随机存储器(DRAM,Dynamic Radom Access Memory)是 SoC 中采用最为广泛的存储器,每个存储单元由一个电容和一个品体管(一般是N沟道 MOSFET)构成,如图 4-12 所示。电容可储存1位逻辑值,根据充放电后电荷的多少(电势高低)分别对应逻辑值“0”和“1”,品体管则是控制电容充放电的开关。相比 SRAM,DRAM 的结构更加简单,因此其具有更高的存储密度、体积小、容量大、价格低,在 SoC 中可用于存储大规模的程序和数据。但由于电容存在漏电现象,每隔一段时间电荷就会丢失,导致两极板间电势不足而丢失数据(即从“1”变为“0”),所以需要定期对电容进行充电以使其保持原值不变,这一过程称为刷新,并且在刷新过程中不能对DRAM进行读写。DRAM的动态性就表现在存储阵列需要不断地刷新以抱枕数据不丢失。
DRAM 存储器的种类很多,如SDRAM、DDR、DDR2等,但均以 SDRAM 为基本架构。SDRAM(同步动态随机存储器)需要同步时钟,其内部命令的发送与数据的传输都以该司步时钟为基准。典型SDRAM存储芯片的内部结构如图4-13所示,主要由5部分组成:行列地址译码器、地址数据缓冲器、读出放大器、刷新逻辑及存储阵列。行列地址译码器对访问SDRAM 的行列地址进行译码,确定所访问的存储单元的具体位置。对SDRAM 进行读操作时,读出放大器通过比较感应位线上微小的电压变化,并将这种电压变化放大到可解析的逻辑“0”和“1”。刷新逻辑一般设置在 SDRAM 芯片内部,定时重复地对 SDRAM 进行读出和再写入,以使电容中泄漏的电荷得到补充。一般 SDRAM 包含多个存储阵列,每个存储阵列由若干1位存储单元构成。多个存储阵列又组成一个逻辑 Bank,每次一个 Bank 被选中的存储单元集合称为一个字,其位宽等于 SDRAM 芯片数据引脚的宽度。通常 SDRAM 由多个 Bank 组成,这些 Bank被分时并发访问以提升 SDRAM 的访问速度。
相比 SRAM,SDRAM 外围引脚信号、控制逻辑及访存协议都更加复杂。SDRAM 的访存协议包括:初始化、读操作、写操作、突发传输、预充电及刷新。
(1)初始化:SDRAM加电后,必须按照预定的方式进行初始化,之后才能正常工作。初始化过程一般需要4个阶段:输入稳定期、所有 Bank 预充电、执行8个自动刷新周期及设置模式寄存器。其中,SDRAM 在输入稳定期完成自检。通过设置模式寄存器完成对SDRAM 相关参数的设定,这些参数包括 SDRAM 的操作模式(是否进行突发读操作,是否进行突发写操作等)、突发传输类型(交叉还是按序)、突发长度等。
(2)读操作:首先,通过行地址确定待读取数据所在的行,并使之处于激活状态,该过程称为行有效,同时还需要进行片选并选定 Bank地址。接着,通过列地址确定待读取数据所在的列,并发出读命令,该过程称为列读取。SDRAM访存协议规定时从行有效到列读取必须存在一个时间间隔,称为行选通周期。它由芯片存储阵列电子元件的响应时间决定,以周期为单位,是SDRAM 的一个重要时序参数。
(3)写操作:写操作与读操作的时序类似,包括行有效和列写入。值得注意的是,因为品体管选通与电容的充电必须经过一段时间,所以数据的真正写入需要一定的周期。为了保证数据的可靠写入,都会留出足够的写入/校正时间,称为写恢复时间。
(4)突发传输:突发(Burst)是指在同一行中相邻的存储单元连续进行数据传输的方式,连续传输所涉及到存储单元(列)的数量就是突发长度BL。在突发传输中,只需要指定起始列地址与突发长度,SDRAM 就会依次地自动对后面相应数量的存储单元进行读/写操作而不再需要
控制器连续地提供列地址。(5)预充电:如果要对同一 Bank的另一行进行寻址,就要将原来有效的行关闭,重新发送行/列地址,这一过程就是预充电。预充电可以通过命令控制,也可以通过辅助设定让芯片在每次读写操作之后自动进行预充电。预充电的具体操作是将读出放大器中的数据回写。此时,需要重新加入参考电压,一般是电容电压的 12,以帮助判断读取数据的逻辑电平。超过该参考电压的为逻辑“1”,进行重写:否则为逻辑“0”,不进行重写。在发出预充电命令之后,要经过一段预充电有效周期后才能打开新的工作行。此外,如上所述,向 SDRAM 中写入数据需要一个经过一个写恢复周期,所以预充电不能与写操作同时进行,
(6)刷新:由于 DRAM 采用电容存储数据,因此漏电现象使其需要不断刷新才能保留数据。刷新操作与预充电中重写的操作一样,都是对 SDRAM 进行读出和再写入。两者的区别在于,预充电是对一个或所有 Bank中的当前有效行进行操作,并且是不定期的,而刷新则是按照周期,依次对所有行进行操作,以保留那些长时间没有被重写的数据。在刷新过程中,所有Bank 都停止工作,所有工作指令只能等待而无法执行,这是造成 DRAM 的性能低于 SRAM 的根本原因。在 SDRAM 的基础上,后续又陆续出现了 DDR、DDRII、DDRШ、DDR IV和 GDDR 等高速 SDRAM 存储器。DDR SDRAM(Double Data Rate SDRAM),即双倍速率 SDRAM、普通SDRAM 只在时钟信号的上升沿采样数据,而 DDR SDRAM 在时钟信号的上升沿和下降沿均采样数据,从而增加了数据的吞吐量,其最大带宽可达 SDRAM 的2倍。DDR2和 DDR 一样,也采用了在时钟双沿同时进行数据传输的基本方式。最大的区别在于,DDR2 内存可进行 4bit 预取,2 倍于标准 DDR 内存的 2bit 预取,这就意味着,DDR2拥有2倍于DDR 的预取数据的能力,因此,DDR2理论上可获得2倍于 DDR的数据传输能力。DDR3 采用了8bit预取,相比 DDR2可以获得更高的访存带宽。DDR4采用了16bit预取,同样内核频率下理论速度是 DDR3 的2倍GDDR 是用于图形处理器的专用存储器,主要是为了适应3D图形应用对于存储带宽具体需求,目前包含 GDDR、GDDR2、GDDR3、GDDR4和 GDDR5 共5 种类型。