找回密碼
 _註_冊_

QQ登錄

只需一步,快速開始

秋風之家論壇 門戶 科技世界 查看內容

高檔微處理器新技術─超順序執行技術

2007-6-9 03:15 AM| 發佈者: 思思| 查看: 109| 評論: 0

超順序執行技術
  1.什麼是超順序執行技術
  超順序執行技術是一種新型的計算機執行技術。顧名思義,這種技術突破傳統的計算機順序執行模式,在可能的情況下,讓位于執行方向前面的指令提前執行。這樣,最大限度地利用計算機中各種資源,以計算機所能支持的最大限度最快地執行指令。
    超順序執行主要表現在兩個方面。一是一些因用到的寄存器而存在依賴關系的指令,暫時不考慮它們的依賴關系,而讓它們能並行執行。這需要借助于寄存器更名映射技術。該技術在前面已經提到,即把程序中的寄存器(邏輯寄存器)和微處理器內部的程序員不可見的物理寄存器建立對應關系,以便去掉指令之間因邏輯寄存器而存在的依賴性。再看下面的例子,其中右邊是寄存器更名映射後的指令。
    MOV EAX,5                  →    MOV r1,5
    ADD MEMl,EAX           →    ADD MEMl,r1
    MOV EAX,2                  →    MOV r2,2
    ADD MEM2.EAX          →    ADD MEMl.r2
    左邊的第三條指令和第二條指令之間存在依賴關系。在指令執行過程中,必須在第二條指令執行完畢之後,才能執行第三條指令。經過更名映射後(見右邊),第三條指令和第二條指令之間不再存在依賴關系,如果有並行的超順序執行機制執行這些指令,則可以在執行第二條指令的同時即開始執行第三條指令。
    超順序執行的第二個方面在于:當一些需時較長的指令在執行時,使位于它後面的指令提前開始執行,而不要等這條指令執行完畢。看下面的例子,該例是經過更名映射後的一個程序段(採用偽碼表示)。
    r1=mem[r0]
    r2=r1+r2
    r5=r5+1
    r6=r6一r3
其中,r為寄存器,mem為存儲器。第一條指令是從寄存器r0所指的存儲器單元中取數,並送到內部物理寄存器r1中。如果所要讀取的數據不在Cache中,則需要通過總線接口部件從主存儲器中讀取數據。盡管現代微機中主存儲器的速度也在不斷提高,但相對微處理器的速度還是相差甚遠(現代的微處理器執行一條指令只需要1 ns左右的時間,而微處理器從系統主存儲器取一次數據項的時間可能在10 ns左右或更長)。如果不採用超順序執行,則在該例的第一條指令執行時必須等待較長一段時間,通常把這種現象說成執行指令出現了“阻塞”。而採用超順序執行技術可以克服或改善這種“阻塞”。具體做法是“向前看”,即對譯碼好的指令流中後續指令繼續搜索(搜索的範圍可達20~30條指令),做一些有用的工作而不是停止不前。對于上例中的第二條指令,由于它依賴于第一條指令的結果,因此,第
二條指令也不能執行。然而,第三條指令和第四條指令與前兩條指令獨立,因此,可以提前執行。這樣,微處理器在訪問主存取第一條指令所需要的操作數的同時,以超越源程序指令順序的次序首先執行第三條指令和第四條指令。待這些可以被微處理器提前執行的指令執行完畢後,再返回來執行前面因訪問主存儲器而“阻塞”的指令。這時,為第一條指令所取的操作數也可能到達,可以立即執行或稍微等待即可執行第一條指令,從而提高微處理器的執行速度。實際上,這節省了執行第三、第四條指令所需要的時間。
    2.超順序方式執行指令的基本過程
    要使微處理器能夠按超順序的方式執行指令,除必須具有取指部件與指令譯碼部件之外,還必須具有傳統微處理器所不具備的一些特殊部件,主要包括:寄存器更名表、指令池[又稱重新排序緩衝器(ReOrder Buffer,ROB)]、駐留站、派遣/執行部件、結果退回部件等。圖8.2中標明了這些部件,該圖是第六代微處理器的功能框圖。



    超順序方式執行指令的過程大致如下(以第六代微處理器為例):
    微處理器將待執行的指令從存儲器中取出,通過3個並行的譯碼器將機器指令(x86指令)轉換成微操作碼,並在其上加好為變序執行指令而準備的標記和狀態位。其中,兩個譯碼器處理簡單指令(大多為整數指令);另一個處理較復雜的指令;對于這三個譯碼器處理不了的復雜的指令,將它們送到微碼指令序列器(相當于早期x86芯片存放微程序的控制ROM)中,由它生成微操作碼。每條微操作碼包括操作碼和3個操作數(2個源和一個目標)。
    微操作碼首先被送往寄存器更名部件,作更名處理,然後被送到指令池中。指令池將對每一條微操作碼作順序登記,以便它們在執行結束時能按程序順序退回。
    派遣部件[即派遣/執行部件中的駐留站(Reservation Station,RS)]不停地掃描指令池中的微操作碼。當發現某條微操作碼的所有操作數都到齊時,再檢查它所需要的執行資源(圖8.2中與RS的5個端口相連的執行部件)是否可用,如果操作數和執行資源兩個條件都已具備,則派遣部件RS將該微操作碼送到相應的執行部件去執行。執行的結果被回送到指令池中,並修改狀態標記以表明它已執行完畢。派遣部件在調度與派遣微操作碼的過程中是基于超順序的,即被派遣到執行部件的微操作碼嚴格按照數據流的約束關系和執行資源的有效性來執行,而不按指令的原始順序來執行。
    與派遣部件一樣,退回部件不停地檢查指令池中微操作碼的狀態,尋找那些已經被執行且不再與指令緩衝池中的其他指令有任何關系的微操作碼,然後,按照原始程序的順序退回已經完成的微操作碼,並將執行結果送到機器指令所指定的寄存器即程序員所能見到的寄存器以及存儲器中。當然,退回是一個十分復雜的過程,此時,還必須考慮到中斷、異常、斷點和分支失敗等情況。


鮮花

握手

雷人

路過

雞蛋

最新評論

相關分類

Archiver|手機版|小黑屋|秋風之家論壇

GMT+8, 2025-9-5 10:21 AM , Processed in 0.025382 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回頂部