新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 一種高性能32位移位寄存器單元的設計

        一種高性能32位移位寄存器單元的設計

        作者: 時間:2016-12-02 來源:網絡 收藏


        4.1 移位寄存器單元總體結構

        最終設計出的移位寄存器單元總體結構如圖7 所示,其中其核心部分的矩陣-樹狀結構的移位寄存器就是使用上一節所描述的結構。記數器中的數據(sh4~sh0)在移位上一拍由Bbus寫入,并進行譯碼,其中低兩位(sh1,sh0)直接送樹狀結構移位部分,高三位(sh4,sh3,sh2)經過譯碼產生8位控制信號送入矩陣移位部分。Abus和Bbus輸入鎖存器能鎖存32位數據輸入,并根據不同指令的要求進行操作,對指令進行預處理。移位結果送ALU輸出鎖存器,并對CF寄存器進行設置。

        本文引用地址:http://www.104case.com/article/201612/324813.htm

        4.2 指令的預處理

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


        例:RCL AX , CL 指令
        設AX=0001H , CL=3 , CF=1
        Abus鎖存器輸出數據為操作數本0001H;
        Bbus鎖存器輸出的數據為操作數帶CF右移一位為1000H;
        在輸出中,CF在輸出結果的最左端為0。

        5 驗證及結論

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

        上一頁 1 2 3 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 苍溪县| 台北市| 镇赉县| 波密县| 玉林市| 潜山县| 习水县| 嘉义县| 新宁县| 绥江县| 同心县| 图木舒克市| 江西省| 长宁区| 富锦市| 嘉定区| 布尔津县| 满城县| 禄劝| 西乌珠穆沁旗| 宿松县| 米泉市| 华坪县| 莱芜市| 汉阴县| 都昌县| 韩城市| 石首市| 达日县| 荆门市| 乐都县| 广灵县| 云龙县| 敖汉旗| 葫芦岛市| 郸城县| 赤壁市| 金阳县| 洱源县| 得荣县| 当雄县|