32位高性能嵌入式CPU中Load Aligner 模塊的設計與實(shí)現
引言
一般的,在cpu中,訪(fǎng)問(wèn)寄存器比訪(fǎng)問(wèn)主存速度要快。所以為了減少訪(fǎng)問(wèn)存儲器而花的時(shí)間或延遲,mips4kc處理器采用了load/store設計。在cpu芯片上有許多寄存器,所有的操作都由存儲在寄存器里的操作數來(lái)完成,而主存只有通過(guò)load和store指令來(lái)訪(fǎng)問(wèn)。這樣做不僅可以減少訪(fǎng)問(wèn)主存的次數,有利于降低對主存儲器容量的要求,而且可以精簡(jiǎn)指令集,有利于編譯人員優(yōu)化寄存器分配。load
aligner就是數據存儲器(dcache)和數據通道之間的接口。所以設計出性能優(yōu)良的load aligner對提高cpu的整體性能是非常重要的。本文介紹了在一款32位cpu中load
aligner模塊的設計與實(shí)現,其中主要是數據通道部分的設計和實(shí)現。
設計目標
本設計中,load aligner模塊要實(shí)現的指令有lb、lbu、lh、lhu、lw、lwl、lwr。cpu通過(guò)這些指令把從數據存儲器中取出來(lái)的數據重新排序,然后放進(jìn)寄存器堆rf中,進(jìn)入cpu的數據通道。表1是對這些指令的介紹。

如果把從dcache中取出的一個(gè)32位的字表示成4字節:a、b、c、d,如表2所示。
31-24/ 23-16/ 15-18/ 7-0
a / b / c / d
那么經(jīng)過(guò)上述指令操作后,這個(gè)字被重新排列的結果(即load aligner模塊的輸出,也用4字節來(lái)表示)見(jiàn)表3。
表3中,s表示符號擴展,*表示這個(gè)字節上的寄存器中的數保持不變。不過(guò)在load aligner模塊,先將這些字節置0,在寄存器堆模塊再控制這些字節是否直接寫(xiě)進(jìn)寄存器。

以上是load aligner模塊要實(shí)現的指令目標,另外由于此模塊是cpu關(guān)鍵路徑的一部分,因此數據通道部分最長(cháng)時(shí)延不能超過(guò)0.7ns。
邏輯設計
分析比較經(jīng)過(guò)上述指令后load aligner模塊的輸入輸出變化可以看出:輸入字的每一字節經(jīng)過(guò)load aligner模塊后可以在輸出字的任意字節位置上。換言之,輸出字的每一字節都可以有a、b、c、d四種情況。所以需要一個(gè)8位的控制信號bit<7:0>來(lái)控制四個(gè)四選一的數據選擇器,稱(chēng)為字節組合模塊,來(lái)獲得所需要的字節組合。不過(guò),經(jīng)過(guò)這個(gè)字節組合模塊選出來(lái)的4字節并不全是所需要的,還需要去掉冗余的字節或者進(jìn)行符號擴展。因此需要有能夠產(chǎn)生符號擴展或者0擴展的模塊稱(chēng)為符號產(chǎn)生模塊,然后把它的輸出和一個(gè)4位的控制信號mask<3:0>一起控制一組二選一數據選擇器,稱(chēng)為輸出模塊,來(lái)獲得最后的排序結果。邏輯實(shí)現流程圖見(jiàn)圖1。

以上是load aligner模塊數據通道部分的設計。它還需要有控制模塊來(lái)產(chǎn)生上述控制信號,此外由于任何一個(gè)控制信號都要驅動(dòng)數據通道子模塊中的32個(gè)cell,所以還要有一個(gè)驅動(dòng)模塊來(lái)使控制信號有足夠的驅動(dòng)能力。由以上分析,整個(gè)load
aligner模塊的框圖如圖2所示。其中,控制模塊采用自動(dòng)布局布線(xiàn)生成,而驅動(dòng)模塊和數據通道模塊均采用全定制設計。

功能驗證
對此模塊的rtl代碼和所設計的電路分別進(jìn)行了功能驗證。設從dcache取出的32位數據用十六進(jìn)制表示為aabbccdd,對表3中的所有指令進(jìn)行測試。圖3所示的波形圖就是依次測試指令lw、lh00、lhu00、lh10、lhu10、lb00、lbu00、lb01、lbu01、lb10等的結果??梢钥闯?,結果與表3完全吻合。說(shuō)明所設計的電路滿(mǎn)足設計目標,可以實(shí)現所要求的所有指令。

電路仿真
根據圖1可以看出,從符號選擇信號sandz<4:0>到輸出的路徑為最長(cháng)路徑,我們選取這條路徑進(jìn)行仿真,并考慮在0.18μm時(shí)線(xiàn)電阻電容對時(shí)延的影響,用hspice確定了所需器件的尺寸。仿真結果如圖4所示。上升時(shí)時(shí)延為0.52ns,下降時(shí)時(shí)延為0.47ns,均滿(mǎn)足小于0.7ns
的要求。

結論
在cpu中,load aligner模塊是dcache和數據通道之間的接口。從dcache中取出的數據只有通過(guò)load aligner模塊重新排序,才能進(jìn)入cpu的數據通道。在設計中應用了自上而下的設計方法,所設計的電路實(shí)現了所有的指令,在時(shí)延上也達到了設計目標。
評論