引言 一般的,在CPU中,訪問(wèn)寄存器比訪問(wèn)主存速度要快。所以為了減少訪問(wèn)存儲(chǔ)器而花的時(shí)間或延遲,MIPS4KC處理器采用了Load/Store設(shè)計(jì)。在CPU芯片上有許多寄存器,所有的操作都由存儲(chǔ)在寄存器里的操作數(shù)來(lái)完成,而主存只有通過(guò)Load和Store指令來(lái)訪問(wèn)。這樣做不僅可以減少訪問(wèn)主存的次數(shù),有利于降低對(duì)主存儲(chǔ)器容量的要求,而且可以精簡(jiǎn)指令集,有利于編譯人員優(yōu)化寄存器分配。Load Aligner就是數(shù)據(jù)存儲(chǔ)器(DCACHE)和數(shù)據(jù)通道之間的接口。所以設(shè)計(jì)出性能優(yōu)良的Load Aligner對(duì)提高CPU的整體性能是非常重要的。本文介紹了在一款32位CPU中Load Aligner模塊的設(shè)計(jì)與實(shí)現(xiàn),其中主要是數(shù)據(jù)通道部分的設(shè)計(jì)和實(shí)現(xiàn)。 設(shè)計(jì)目標(biāo) 本設(shè)計(jì)中,Load Aligner模塊要實(shí)現(xiàn)的指令有LB、LBU、LH、LHU、LW、LWL、LWR。CPU通過(guò)這些指令把從數(shù)據(jù)存儲(chǔ)器中取出來(lái)的數(shù)據(jù)重新排序,然后放進(jìn)寄存器堆RF中,進(jìn)入CPU的數(shù)據(jù)通道。表1是對(duì)這些指令的介紹。 如果把從DCACHE中取出的一個(gè)32位的字表示成4字節(jié):A、B、C、D,如表2所示。 31-24/ 23-16/ 15-18/ 7-0 A / B / C / D 那么經(jīng)過(guò)上述指令操作后,這個(gè)字被重新排列的結(jié)果(即Load Aligner模塊的輸出,也用4字節(jié)來(lái)表示)見(jiàn)表3。 表3中,s表示符號(hào)擴(kuò)展,*表示這個(gè)字節(jié)上的寄存器中的數(shù)保持不變。不過(guò)在Load Aligner模塊,先將這些字節(jié)置0,在寄存器堆模塊再控制這些字節(jié)是否直接寫(xiě)進(jìn)寄存器。 以上是Load Aligner模塊要實(shí)現(xiàn)的指令目標(biāo),另外由于此模塊是CPU關(guān)鍵路徑的一部分,因此數(shù)據(jù)通道部分最長(zhǎng)時(shí)延不能超過(guò)0.7ns。 邏輯設(shè)計(jì) 分析比較經(jīng)過(guò)上述指令后Load Aligner模塊的輸入輸出變化可以看出:輸入字的每一字節(jié)經(jīng)過(guò)Load Aligner模塊后可以在輸出字的任意字節(jié)位置上。換言之,輸出字的每一字節(jié)都可以有A、B、C、D四種情況。所以需要一個(gè)8位的控制信號(hào)Bit<7:0>來(lái)控制四個(gè)四選一的數(shù)據(jù)選擇器,稱(chēng)為字節(jié)組合模塊,來(lái)獲得所需要的字節(jié)組合。不過(guò),經(jīng)過(guò)這個(gè)字節(jié)組合模塊選出來(lái)的4字節(jié)并不全是所需要的,還需要去掉冗余的字節(jié)或者進(jìn)行符號(hào)擴(kuò)展。因此需要有能夠產(chǎn)生符號(hào)擴(kuò)展或者0擴(kuò)展的模塊稱(chēng)為符號(hào)產(chǎn)生模塊,然后把它的輸出和一個(gè)4位的控制信號(hào)Mask<3:0>一起控制一組二選一數(shù)據(jù)選擇器,稱(chēng)為輸出模塊,來(lái)獲得最后的排序結(jié)果。邏輯實(shí)現(xiàn)流程圖見(jiàn)圖1。 以上是Load Aligner模塊數(shù)據(jù)通道部分的設(shè)計(jì)。它還需要有控制模塊來(lái)產(chǎn)生上述控制信號(hào),此外由于任何一個(gè)控制信號(hào)都要驅(qū)動(dòng)數(shù)據(jù)通道子模塊中的32個(gè)cell,所以還要有一個(gè)驅(qū)動(dòng)模塊來(lái)使控制信號(hào)有足夠的驅(qū)動(dòng)能力。由以上分析,整個(gè)Load Aligner模塊的框圖如圖2所示。其中,控制模塊采用自動(dòng)布局布線生成,而驅(qū)動(dòng)模塊和數(shù)據(jù)通道模塊均采用全定制設(shè)計(jì)。 功能驗(yàn)證 對(duì)此模塊的RTL代碼和所設(shè)計(jì)的電路分別進(jìn)行了功能驗(yàn)證。設(shè)從DCACHE取出的32位數(shù)據(jù)用十六進(jìn)制表示為AABBCCDD,對(duì)表3中的所有指令進(jìn)行測(cè)試。圖3所示的波形圖就是依次測(cè)試指令LW、LH00、LHU00、LH10、LHU10、LB00、LBU00、LB01、LBU01、LB10等的結(jié)果。可以看出,結(jié)果與表3完全吻合。說(shuō)明所設(shè)計(jì)的電路滿足設(shè)計(jì)目標(biāo),可以實(shí)現(xiàn)所要求的所有指令。 電路仿真 根據(jù)圖1可以看出,從符號(hào)選擇信號(hào)Sandz<4:0>到輸出的路徑為最長(zhǎng)路徑,我們選取這條路徑進(jìn)行仿真,并考慮在0.18μm時(shí)線電阻電容對(duì)時(shí)延的影響,用Hspice確定了所需器件的尺寸。仿真結(jié)果如圖4所示。上升時(shí)時(shí)延為0.52ns,下降時(shí)時(shí)延為0.47ns,均滿足小于0.7ns 的要求。 結(jié)論 在CPU中,Load Aligner模塊是DCACHE和數(shù)據(jù)通道之間的接口。從DCACHE中取出的數(shù)據(jù)只有通過(guò)Load Aligner模塊重新排序,才能進(jìn)入CPU的數(shù)據(jù)通道。在設(shè)計(jì)中應(yīng)用了自上而下的設(shè)計(jì)方法,所設(shè)計(jì)的電路實(shí)現(xiàn)了所有的指令,在時(shí)延上也達(dá)到了設(shè)計(jì)目標(biāo)。 參考文獻(xiàn) 1 李學(xué)干.計(jì)算機(jī)系統(tǒng)結(jié)構(gòu).西安電子科技出版社.2000 2 CMOS Circuit Design, Layout, and Simulation. R. Jacob Baker and Harry W. Li and David E. Boyce. The Institute of Electrical and Electronics Engineers, Inc. New York. 1998 3 Digital Logic Circuit Analysis & Design, by N. P. Nelson.1997 |