RISC-V取指剩余缓存技术
扫描二维码
随时随地手机看文章
胡振波老师的E203处理器让小编受益匪浅,十分感激!E203 CPU的设计非常经典且精简,大量逻辑复用,追求极低功耗、极小面积。
小编基于胡振波老师的E203处理器,进一步简化了CPU处理器的功能设计,分享一下小编的简化的设计架构,如下:
为了提高代码密度,处理器选择支持16位的压缩指令集,因此程序会出现32bit和16bit同时出现的场景,32bit指令可能存在与32位地址边界不对齐的情况,E203采用剩余缓存技术(Leftover Buffer)。
ITCM小编采用SMIC的64bit SRAM实现,读一次有64bit数据即2条指令,SRAM有读保持功能,不用外部再次寄存从而节省64bit寄存器。注意,每8个byte为一个lane。
以下波形为例,从0x8000_0810开始读,也就是一个lane的开始点开始读,
Case1:当地址边界不对齐时:
0x8000_0816时,地址0816是和0810一个lane的,但是0x16需要下一个lane的2个byte来满足每次读取32bit数据给取指令模块(16bit指令则丢弃16bit,但读取还是统一读取32bit)。此时sram数据还是data_hold状态的,因此只需要再读一下0x818的地址数据拼接即可,即0x8000_0816转成0x8000_0818读取数据取低16bit为0x0ff0,与leftover buffer的数据0x0713拼接得到最终指令数据0xff0_0713。
Case2:当地址边界不对齐时:
Sram的数据没有保持住(其他模块访问了SRAM)
或指令跳转造成的lane cross则需要读取2次sram,第一次取读取数据的高16bit,第二次取读取数据的低16bit拼接成0x06b3_9736。
后端设计实现如下,E203 CPU的设计非常经典且精简,大量逻辑复用,追求极低功耗、极小面积。
欢迎加入【全栈芯片工程师】知识星球,深入探讨CIS、MCU芯片设计。