<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 在32位CPU中Load Aligner模塊數(shù)據(jù)通道的設(shè)計與實現(xiàn)

          在32位CPU中Load Aligner模塊數(shù)據(jù)通道的設(shè)計與實現(xiàn)

          作者: 時間:2010-07-06 來源:網(wǎng)絡(luò) 收藏
           在中,訪問寄存器比訪問主存速度要快。所以為了減少訪問存儲器而花的時間或延遲,MIPS4KC處理器采用了/Store。在芯片上有許多寄存器,所有的操作都由存儲在寄存器里的操作數(shù)來完成,而主存只有通過和Store指令來訪問。這樣做不僅可以減少訪問主存的次數(shù),有利于降低對主存儲器容量的要求,而且可以精簡指令集,有利于編譯人員優(yōu)化寄存器分配。 就是存儲器(DCACHE)和之間的接口。所以出性能優(yōu)良的Load 對提高的整體性能是非常重要的。本文介紹了在一款CPU中Load ,其中主要是部分的設(shè)計和。

            設(shè)計目標(biāo)

          本文引用地址:http://www.ex-cimer.com/article/151737.htm

            本設(shè)計中,Load Aligner的指令有LB、LBU、LH、LHU、LW、LWL、LWR。CPU通過這些指令把從數(shù)據(jù)存儲器中取出來的數(shù)據(jù)重新排序,然后放進(jìn)寄存器堆RF中,進(jìn)入CPU的數(shù)據(jù)。表1是對這些指令的介紹。

            如果把從DCACHE中取出的一個的字表示成4字節(jié):A、B、C、D,如表2所示。

            31-24/ 23-16/ 15-18/ 7-0

            A / B / C / D

            那么經(jīng)過上述指令操作后,這個字被重新排列的結(jié)果(即Load Aligner的輸出,也用4字節(jié)來表示)見表3。

            表3中,s表示符號擴(kuò)展,*表示這個字節(jié)上的寄存器中的數(shù)保持不變。不過在Load Aligner模塊,先將這些字節(jié)置0,在寄存器堆模塊再控制這些字節(jié)是否直接寫進(jìn)寄存器。

            以上是Load Aligner模塊要實現(xiàn)的指令目標(biāo),另外由于此模塊是CPU關(guān)鍵路徑的一部分,因此數(shù)據(jù)通道部分最長時延不能超過0.7ns。

            邏輯設(shè)計

            分析比較經(jīng)過上述指令后Load Aligner模塊的輸入輸出變化可以看出:輸入字的每一字節(jié)經(jīng)過Load Aligner模塊后可以在輸出字的任意字節(jié)位置上。換言之,輸出字的每一字節(jié)都可以有A、B、C、D四種情況。所以需要一個8位的控制信號Bit7:0>來控制四個四選一的數(shù)據(jù)選擇器,稱為字節(jié)組合模塊,來獲得所需要的字節(jié)組合。不過,經(jīng)過這個字節(jié)組合模塊選出來的4字節(jié)并不全是所需要的,還需要去掉冗余的字節(jié)或者進(jìn)行符號擴(kuò)展。因此需要有能夠產(chǎn)生符號擴(kuò)展或者0擴(kuò)展的模塊稱為符號產(chǎn)生模塊,然后把它的輸出和一個4位的控制信號Mask3:0>一起控制一組二選一數(shù)據(jù)選擇器,稱為輸出模塊,來獲得最后的排序結(jié)果。邏輯實現(xiàn)流程圖見圖1。


          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();