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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 高性能32位移位寄存器單元的設(shè)計

          高性能32位移位寄存器單元的設(shè)計

          作者: 時間:2011-07-04 來源:網(wǎng)絡(luò) 收藏
          4.2 指令的預(yù)處理

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

            由于要對實現(xiàn)帶進(jìn)位CF的并在操作后對CF進(jìn)行設(shè)置,在一般情況下這需要CPU的控制提供多周期指令節(jié)拍來實現(xiàn)。在本中,將 Abus和Bbus輸入鎖存器為能根據(jù)不同的指令實現(xiàn)清0和帶CF左移一位或右移一位的操作,以便為做好數(shù)據(jù)上的準(zhǔn)備,使輸入數(shù)據(jù)的0~32位移位能在一個指令周期內(nèi)完成。對不同的指令具體設(shè)置情況如圖8所示。圖中CF表示為進(jìn)位標(biāo)志位;len為操作數(shù)長度(如32位數(shù)據(jù)); n為移位數(shù);DATA表示輸入鎖存輸出的數(shù)據(jù)為操作數(shù)據(jù)本身; 0表示輸入鎖存輸出的數(shù)據(jù)為0;CF:DATA(-1)表示輸入鎖存輸出的數(shù)據(jù)為操作數(shù)帶CF右移一位;DATA(-1):CF表示輸入鎖存輸出的數(shù)據(jù)為操作數(shù)帶CF左移一位;SIGN_EXT表示輸入鎖存輸出的數(shù)據(jù)為操作數(shù)帶符號擴(kuò)展。橫線下為移位前Abus和Bbus鎖存器中數(shù)據(jù)預(yù)處理完后的格式,橫線上方位移位完成后數(shù)據(jù)輸出及進(jìn)位CF所處位置。

            

          對不同的指令具體設(shè)置情況

            例:RCL AX , CL 指令

            設(shè)AX=0001H , CL=3 , CF=1

            Abus鎖存器輸出數(shù)據(jù)為操作數(shù)本0001H;

            Bbus鎖存器輸出的數(shù)據(jù)為操作數(shù)帶CF右移一位為1000H;

            在輸出中,CF在輸出結(jié)果的最左端為0。

            5 驗證及結(jié)論

            通過verilog的行為仿真及starsim的時序仿真顯示,性能完全符合要求。對比INTEL X86指令集中移位類指令標(biāo)準(zhǔn)執(zhí)行周期為4~7個機(jī)器周期,本移位類指令平均執(zhí)行時間為2個指令周期,因此大大提高了移位類指令執(zhí)行效率。移位作為CPU中執(zhí)行的專用硬件,其性能的好壞直接影響到CPU處理移位類指令的速度和效率。本文采用的矩陣-樹狀結(jié)構(gòu)移位,配合指令預(yù)處理技術(shù),能有效實現(xiàn)32位數(shù)據(jù)的移位操作,并兼容INTEL X86系列的所有移位類指令還可作為通用硬件方便地移植到其他指令級別的CPU設(shè)計之中。


          上一頁 1 2 3 下一頁

          評論


          相關(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); })();