芯片设计中经常用到SRAM来存储数据,例如使用SRAM来实现FIFO、Queue、cache等存储体。但是SRAM的种类和参数比较多,因此选择一个合适的SRAM非常重要,本文主要介绍SRAM的原理和常见使用原则。
1. SRAM的基本原理
SRAM的全称为Static Random Access Memory,即静态随机存取存储器。SRAM是一种基于触发器存储数据的存储器,其存储单元通常由六个晶体管组成,形成一个双稳态电路,如下图所示。
这种电路有两个稳定状态,代表数据的0和1。只要保持通电,数据就可以稳定保存,不需要像DRAM那样定期刷新。所以,“静态”就是指SRAM在通电时数据稳定保存,但断电后数据会消失。
2. SRAM常见分类
按照端口分类:SRAM可以分为单端口(Single-Port,SP)、伪双端口(Two-Port,TP)、(真)双端口(Dual-Port,DP)等。
单端口SRAM:只有一个端口,即只有一组数据和地址线,每次只能单独进行读或写操作,不能同时读和写。如下图所示。
伪双端口SRAM:有两个端口,但是一个端口只能读,一个端口只能写。因此有一组写地址和写数据线,还有一组读地址和读数据线,可以同时进行读和写操作。如下图所示。
双端口SRAM:有两个端口,有两组地址和数据线,每个端口都可以进行读/写操作,因此可以同时进行读和写操作。如下图所示。
按照电压阈值(Voltage Threshold,VT)分类:可以分为HVT(High VT)、SVT(Standard VT)、LVT(Low VT)、ULVT(Ultra Low VT)等。阈值电压越低,速度越快,但功耗也越大。因此需要在速度(时序)和功耗之间做权衡处理。
按照校验方式,可以分为奇偶校验、ECC校验等。
奇偶校验算法实现方简单,具有成本低的优势。只需在数据中添加一位奇偶校验位,通过计算数据中 1 的个数,若采用奇校验,则使包括校验位在内的 1 的总数为奇数;若采用偶校验,则使 1 的总数为偶数。奇偶校验仅能检测奇数位的翻转,对于偶数位的错误则检测不出来,并且没有纠错能力。
ECC校验通常使用1 - bit 纠错、2 - bit 检测机制(SEC - DED),该机制在编码和解码过程中产生的延迟较小,适合应用于高速路径。
按照厂商来分,SRAM厂商有台积电、Synopsys、三星等。
3. SRAM使用一般原则
在芯片设计中,需要综合考虑时序、面积、功耗等因素来选择合适的SRAM。
端口类型选择:一般优先选择单端口SRAM,其次是选用伪双端口SRAM。不建议使用真双端口SRAM,因为真双端口SRAM的面积和功耗会比较大。
SRAM阈值电压类型选择:一般优先选择SVT、LVT阈值电压,在满足时序的情况下降低功耗。
SRAM校验方式选择:奇偶校验的成本低、检测方式比较简单,常用于对成本敏感、对错误检测要求不高、不需要场景,如FIFO校验等。片上SRAM通常采用SEC - DED ECC,这种配置能够有效检测并纠正单比特错误,并且可以检测双比特错误。
SRAM的supply分为dual-rail和single-rail。dual-rail有两根电源线VDDCORE和VDDM,要求压降小于0.5mV。如果统一使用single-rail代替dual-rail,面积收益大概为3%。同时又10%的静态功耗收益。但是很少有公司这么做,因为一个vdd的话,外部数字逻辑负载对vdd压降影响比较大。可能导致相邻bit数据出现问题。
参考:
ic基础|存储器篇03-一文带你了解芯片中的单口ram、伪双口ram和真双口ram
https://zhuanlan.zhihu.com/p/460654301?share_code=1a4Dy3aUsDS3h&utm_psn=1940440380286953270
4590