CCM是Closely coupled memories的缩写,中文名称是紧耦合存储器,哈佛架构下,一般有两种CCM,分别是ICCM和DCCM, ICCM主要用来存储指令和数据,DCCM仅用来存储数据。一般中低端MCU上没有提供多级Cache,再加上指令和数据规模较小,会配备CCM存储器。而高性能AP级处理器一般提供了多级CACHE减少存储访问的Latency,不采用CCM的方式。
比如ARM的TCM(Tightly Coupled Memory)就是一种CCM,它加速了核心对指令和数据的访问速度,通常一拍就可以拿到数据:
CCM和Cache的区别
CCM和CACHE在物理上都是一个片上RAM,由SRAM实现,可以实现在一个时钟周期读取其中存储内容(指令,数据)。但是不能将CCM和Cache之间画等号,Cache是影子内存,是不可以寻址的,Cacheline没有一个固定的地址,而CCM不同,CCM本质上是一个可寻址的片上存储器,每个存储单元有一个独立无二的地址,而且CCM也没有Cache中的替换问题。
打一个不太恰当的比喻,CCM是商品房,70年产权,有产权证,可以落户,而CACHE则是公租房,没有产权,不能继承,只能作为临时委身之所。
OR1200验证CCM
OR1200上的QMEM(Quick memory)就是一种CCM(CCM有很多马甲,比如ARM中的TCM,GPU中的 Scraptch Pad).OR1200是开源处理器,可以对它的RTL代码进行仿真看看CCM的实现细节。
QMEM在OR1200中的位置:
QEMU内部的实现细节
参考资料
TCM(Tightly Coupled Memory)紧耦合存储器前身 - 知乎