新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ARM體系結構之:流水線

        ARM體系結構之:流水線

        作者: 時間:2013-09-13 來源:網絡 收藏

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

        1.3級組織

        3級組織如圖2.2所示,其主要的組成如下:

        ① 處理器狀態寄存器堆(Rigister Bank)。它有兩個讀端口和一個寫端口,每個端口都可以訪問任意寄存器。另外還有附加的可以訪問PC的一個讀端口和一個寫端口。

        注意

        PC的附加寫端口可以在取指地址增加后更新PC,讀端口可以在數據地址發出之后從新開始取指。

        ② 桶形移位寄存器(Barrel Shifter)。它可以把一個操作數移位或循環移位任意位數。

        ③ ALU。完成指令集要求的算術或邏輯功能。

        圖2.2 3級的組織

        ④ 地址寄存器(Address Register)和增值器(Incrementer)??蛇x擇和保存所用的存儲器地址并在需要時產生順序地址。

        ⑤ 數據輸出寄存器(data-out register)和數據輸入寄存器(data-in register)。用于保存傳輸到存儲器和從存儲器輸出的數據。

        和相關的控制邏輯(instruction decode and control)。

        例2.1顯示了一條單周期指令在流水線上的執行過程。

        【例2.1】

        ADD r1,r2

        指令在流水線上的執行過程如圖2.3所示。

        圖2.3 單周期指令在流水線上的執行過程

        在ADD指令中,需要訪問兩個寄存器操作數,B總線上的數據移位后與A總線上的數據在ALU中組合,再將結果寫回寄存器堆。在指令執行過程中,程序計數器的數據放在地址寄存器中,地址寄存器的數據送入增值器。然后將增值后的數據拷貝到寄存器堆的r15(程序計數器),同時還拷貝到地址寄存器,作為下一次取指的地址。

        到ARM7為止的ARM處理器使用簡單的3級流水線,包括下列流水線級:

        · 取指(fetch):從寄存器裝載一條指令。

        · 譯碼(decode):識別被執行的指令,并為下一個周期準備數據通路的控制信號。在這一級,指令占有譯碼邏輯,不占用數據通路。

        · 執行(excute):處理指令并將結果寫回寄存器。

        圖2.4顯示了3級流水線指令執行過程。

        圖2.4 3級流水線

        注意

        在任一時刻,可能有3種不同的指令占有這3級中的每一級,因此,每一級中的硬件必須能夠獨立操作。

        當處理器執行簡單的數據處理指令時,流水線使得平均每個時鐘周期能完成1條指令。但1條指令需要3個時鐘周期來完成,因此,有3個時鐘周期的延時(latency),但吞吐率(throughput)是每個周期一條指令。例2.2通過一個簡單的例子說明了流水線的機制。

        【例2.2】

        指令序列為:

        ADD r1 r2

        SUB r3 r2

        CMP r1 r3

        流水線指令序列如圖2.5所示。

        圖2.5 流水線指令順序

        在第一個周期,內核從存儲器取出指令ADD;在第二個周期,內核取出指令SUB,同時對ADD譯碼;在第三個周期,指令SUB和ADD都沿流水線移動,ADD被執行,而SUB被譯碼,同時又取出CMP指令??梢钥闯觯魉€使得每個時鐘周期都可以執行一條指令。

        當執行多條指令時,流水線的執行不一定會如圖2.5那么規則,圖2.6顯示了有STR指令的流水線狀態。

        圖2.6 含有存儲器訪問指令的流水線狀態

        圖2.6中在單周期指令ADD后出現了一條數據存儲指令STR。訪問主存儲器的指令用陰影表示,可以看出在每個周期都使用了存儲器。同樣,在每一個周期也使用了數據通路。在執行周期、地址計算和數據傳輸周期,數據通路都是被占用的。在譯碼周期,譯碼邏輯負責產生下一周期用到的數據通路的控制信號。

        注意

        對于STR這種存儲器訪問指令,實際是在地址計算時由譯碼邏輯產生下一周期數據傳輸所需要的數據通路控制信號。

        存儲器相關文章:存儲器原理




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 柏乡县| 白朗县| 阳谷县| 策勒县| 丰城市| 佛教| 武城县| 刚察县| 慈利县| 瓮安县| 永和县| 安达市| 滁州市| 龙江县| 湘乡市| 涪陵区| 肇庆市| 丹江口市| 镇雄县| 岑巩县| 比如县| 大邑县| 宾阳县| 信宜市| 苏州市| 盐城市| 扎鲁特旗| 藁城市| 西充县| 德安县| 六枝特区| 锦屏县| 海阳市| 屏边| 蒲江县| 宣汉县| 宜兰县| 嵊泗县| 增城市| 石渠县| 城步|