1 物理多端口
物理多端口是最常用的一种多端口技术, 它利用真实存在的多个端口在单个时钟周期内对S R A M单元进行多次操作。图1是一个双端口S R A M单元的原理图:
BLC0, BLT0与BLC1, BLT1分别是该S R A M两个端口, 由于两个端口相互隔离, 且具有两套译码系统控制两条相互独立的wordline, 因此在单周期内可以进行的操作和存在冲突的操作如表1所示 (P 0, P 1分别代表端口0和端口1;A, B分别代表整个存储空间中任意两个不同地址的存储单元) 。
物理多端口的优点是设计简单, 对时序的要求不高, 可靠性较高。缺点是面积较大, 两个端口间可能出现冲突。
2 时分多端口
时分多端口的原理是通过时间上的划分对S R A M的单个端口进行多次操作。其操作的单元是标准的6T-SRAM。
时分是指将一个时钟周期划分为上半拍与下半拍, 并分别对单个端口进行两次操作。由于两次操作并不同时进行, 因此理论上, 时分多端口的两次操作不存在冲突。通常为了设计的方便, 上半拍与下半拍进行的操作被固定下来。
图2是时分多端口关键信号的时序关系图 (上半拍读, 下半拍写) 。
时分多端口阵列单周期内可以进行如表2操作 (P 0, P 1分别代表端口0和端口1;A, B分别代表整个存储空间中任意两个不同地址的存储单元) 。
时分多端口的优点是面积小。缺点是时序设计复杂, 难度大。不适合单拍双读或双写的情况。
3 物理多端口 (双读或一写)
由于6T-SRAM的操作端口实际上是由两个差分的反向端口构成的, 在进行读取操作时, 这两个差分的端口可以分别成为两条相互独立的路径, 因此可以在一个节拍内对单个存储单元进行两次读操作。由于两个差分端口存在写冲突, 在一个周期内只能有一个端口对存储单元进行写操作 (对同一个单元的一读一写操作也存在冲突, 读出数据不确定) 。但从整个存储阵列看, 只要操作的两个单元地址不同就可以实现两写或一读一写。图3是“双读或一写”单元的原理图。
BL和BL_bar分别为两条独立的数据路径, 并分别由WL_0和WL_1控制。因此, 该存储阵列需要有两个相互独立的译码模块。由于对该SRAM的读写均为单端口, 其工作速度受到一定影响, 与采用灵敏放大器或双端口写操作的阵列相比速度较慢。
“双读或一写”阵列单周期内可以进行如表3操作 (P0, P1分别代表端口0和端口1;A, B分别代表整个存储空间中任意两个不同地址的存储单元) 。
“双读或一写”单元的优点是面积小结构简单 (但需要对现有WL走线进行改造) , 可靠性较高。缺点是读写速度较慢, 且存在读写冲突。
4 时分多端口 (同一单元一读一写)
如果每个周期只需要对阵列中的一个单元进行两次操作则可以采用以下时分多端口的方式:Wordline打开2/3周期, read column select在前1/3周期打开进行读操作;write column select在接下来1/3周期打开进行写操作, 最后1/3周期进行预充操作。
图4是其对应的读写时序。
“同一单元一读一写”阵列单周期内可以进行如表4操作 (P 0, P 1分别代表端口0和端口1;A, B分别代表整个存储空间中任意两个不同地址的存储单元) 。
“同一单元一读一写”阵列的优点是面积较小, 缺点是应用面狭窄, 时序设计复杂, 难度大, 可靠性较低。
5 分体多端口阵列
分体多端口阵列中的每一个cell一个周期内只能进行一次读或写操作, 但通过分体的方法可以实现整个阵列的单周期多次操作。
具体实现方法如下:
假设阵列存储空间的地址为n位, 则设计存储空间地址为n-m的体, 并利用2^m个体阵列拼接成完整的阵列空间。以32KB Icache为例, 其地址为10位 (n=10) , 则可以将整个空间分为8个体 (m=3) , 并将I c a c h e地址的末三位作为体选择位。由于每个体在一个周期内都可以进行一次写或者读操作, 而体与体之间的操作相互隔离互不影响, 因此整体上看, 整个I c a c h e阵列可以同时进行八个互不冲突 (操作地址后三位不同) 的读写操作。
可以看到, 随机发生的八个操作不发生冲突的概率是非常小的 (p=P88/ (8^8) ) , 但两个操作不发生冲突的概率为p=P 8 2/ (8^2) =0.8 7 5。因此, 对八个分体进行两次操作基本上是可接受的 (发生冲突的概率:0.1 2 5) 。
以SOC-D的ICACHE设计为例, 若采用分体多端口阵列可以在不增加任何设计负担和面积的情况下将ICACHE的工作效率提高很多。
分体多端口阵列单周期内可以进行如表5操作 (P 0, P 1分别代表端口0和端口1;A, B分别代表整个存储空间中任意两个不同地址的存储单元) 。
分体多端口阵列的优点是面积小, 设计简单, 可靠性高。缺点是存在一定冲突的可能, 需要设计额外的逻辑对冲突进行避免或处理。
摘要:在高性能CPU中, 寄存器文件和数据指令缓存常常采用多端口设计, 这是由于为了提高性能, 需要在一个周期内对这些存储器进行多次读写操作。本文将现有的存储器多端口技术依照实现方式的不同分为五类, 并分别对其性能和局限性进行了分析。
关键词:寄存器,SRAM,多端口
【SRAM存储器多端口技术简述】相关文章:
多条件组合算法在数据存储技术中的巧用09-11
多设备控制端口访问在路由器上的实现09-11
端口隔离技术04-28
探究分布式多计算机系统中的存储扩充问题及其解决办法01-30
综述网络存储技术04-24
存储技术论文范文05-09
网络存储技术研究论文04-20
云存储技术科学实验论文04-15
局域网数据存储技术分析论文04-28
IP网络存储技术研究论文04-26