RISC-V取指剩余緩存技術(shù)
胡振波老師的E203處理器讓小編受益匪淺,十分感激!E203 CPU的設(shè)計非常經(jīng)典且精簡,大量邏輯復(fù)用,追求極低功耗、極小面積。
小編基于胡振波老師的E203處理器,進一步簡化了CPU處理器的功能設(shè)計,分享一下小編的簡化的設(shè)計架構(gòu),如下:
為了提高代碼密度,處理器選擇支持16位的壓縮指令集,因此程序會出現(xiàn)32bit和16bit同時出現(xiàn)的場景,32bit指令可能存在與32位地址邊界不對齊的情況,E203采用剩余緩存技術(shù)(Leftover Buffer)。
ITCM小編采用SMIC的64bit SRAM實現(xiàn),讀一次有64bit數(shù)據(jù)即2條指令,SRAM有讀保持功能,不用外部再次寄存從而節(jié)省64bit寄存器。注意,每8個byte為一個lane。
以下波形為例,從0x8000_0810開始讀,也就是一個lane的開始點開始讀,
Case1:當?shù)刂愤吔绮粚R時:
0x8000_0816時,地址0816是和0810一個lane的,但是0x16需要下一個lane的2個byte來滿足每次讀取32bit數(shù)據(jù)給取指令模塊(16bit指令則丟棄16bit,但讀取還是統(tǒng)一讀取32bit)。此時sram數(shù)據(jù)還是data_hold狀態(tài)的,因此只需要再讀一下0x818的地址數(shù)據(jù)拼接即可,即0x8000_0816轉(zhuǎn)成0x8000_0818讀取數(shù)據(jù)取低16bit為0x0ff0,與leftover buffer的數(shù)據(jù)0x0713拼接得到最終指令數(shù)據(jù)0xff0_0713。
Case2:當?shù)刂愤吔绮粚R時:
Sram的數(shù)據(jù)沒有保持?。ㄆ渌K訪問了SRAM)
或指令跳轉(zhuǎn)造成的lane cross則需要讀取2次sram,第一次取讀取數(shù)據(jù)的高16bit,第二次取讀取數(shù)據(jù)的低16bit拼接成0x06b3_9736。
后端設(shè)計實現(xiàn)如下,E203 CPU的設(shè)計非常經(jīng)典且精簡,大量邏輯復(fù)用,追求極低功耗、極小面積。
歡迎加入【全棧芯片工程師】知識星球,深入探討CIS、MCU芯片設(shè)計。