並行指令代碼

並行指令代碼

並行指令代碼是指在計算機的一個指令周期內可以執行多於一條指令。CPU每取出並執行一條指令,都要完成一系列的操作,這一系列操作所需的時間通常叫做一個指令周期。主要是為了減少程式運行的時間。如大家所熟知的並行指令代碼架構:英特爾的64位晶片架構。

定義

並行指令代碼 (EPIC:explicitly parallel instruction code):在計算機的一個指令周期內可以執行多於一條指令。 CPU每取出並執行一條指令,都要完成一系列的操作,這一系列操作所需的時間通常叫做一個指令周期,也就是從取指令、分析指令到執行完所需的全部時間。 主要是為了減少程式的執行時間和提高資源利用率。如我們比較熟悉的英特爾的64位晶片架構就是一個並行指令代碼架構。

指令的分類

在計算機中,指令:指令是指計算機能夠識別並執行的某種操作的命令,指令一般由:操作碼,運算元及下一個指令的地址組成。指令一般分為以下幾類:

傳送類指令

傳送類指令包括數據傳送指令、數據交換指令、堆疊操作指令等。

算術運算類指令

算術運算類指令可提供加、減、乘、除4種基本算術運算的操作指令。這些指令可實現位元組或字的運算,符號數和無符號數的運算,加1、減l運算,比較運算,各種校正操作,以及十進制的算術運算。

邏輯運算指令

邏輯運算指令可以提供與、或、test、異或、取反等操作指令。

移位、循環類指令

移位類指令和循環類指令也是彙編語言巾常用的指令。

程厚控制類指令

程式控制類指令主要是指程式轉移指令、子程式調用、返回等一系列指令。這是一類非
常重要的指令.是實現程式結構的基礎。

處理器控制指令

處理器控制指令用來控制與協處理器之間的互動作用,修改標誌暫存器,以及使處理器
與外部設備同步等。

串操作指令

在存儲器中存放的一串字或位元組可以是二進制數,也可以是刪碼或側I碼。它們存放在某一個連續的記憶體區中,若對它們的每字或位元組均進行同樣的操作,該操作就稱串操作。

位操作指令

位操作指令是對菜一位進行操作的指令,也就是對一個字(位元組)中的某一位進行操作
的指令。

其他指令

除上面所介紹的常用基本指令外,硬體技術的發展和多媒體技術的興起,還要求CPU能夠處理單指令多數據流(SIMD)。因此,在CPU中還會設定一些功能更強的專用指令,如數據轉換指令、特權指令、數字信早處理(DSP)指令、SIMD多媒體指令集(MMX)、路z(多數據流SIMD擴展指令集)、路E2、SSK3、SSE4等。它們構成當今的IntelCPU指令系統,使得現在的計算機具有高速的多媒體處理能力,使計算機的套用更為廣泛。

指令並行技術

以減少程式運行時間為目的,發現和利用程式中的並行性,這樣的過程稱為並行處理(Prallel Processing)。通俗地講,並行處理就是用計算機多個資源的同步套用來解決計算問題。

指令級並行(Instruction—Levcl—Parallelism)是指在指令序列中存在的潛在並行性。現階段,幾乎所有的處理器部採用丁流水線的方式,要保證流水線的性能,就要儘可能少地發生流水線停頓。作為流水線技術的擴展,指令級並行技術是研究的一個重點,它主要是發現指令序列之間的並行性並進行指令級的並行處理,以達到提高計算機性能的目的。指令級並行性又稱綱粒度並行,而粗粒度主要指程式間的並行性。存儲器的訪問指令、整型指令、浮點指令之間的並行性等都屬於指令級並行。

循環展開

循環展開的基本原理是把循環體代碼展開,通過多次複製循環體代碼並調整循環出口代碼而得到一個新的循環體。所以,可以把循環展開看作是一種循環變換。展開後的循環體包含更多的指令,可以使編譯器更加方便地發現互不相關的指令並進行並行處理;同時,循環展開後循環體內的代碼被重複執行的次數相對減少了,這意味著循環展開可以減少循環轉移的開銷。

動態指令調度

動態指令調度是由硬體在程式實際運行時實施的,它通過硬體重新安排指令的執行順序,繞過或防止數據相關導致的錯誤,減少處理器空轉,提高程式的並行性。採用由硬體實現的動態指令調度方法可以對編譯階段無法確定的相關進行最佳化,從而簡化了編譯器的工作。這樣,代碼在不同組織結構的機器上,同樣可以有效地運行,即提高代碼的可移植性。當然,動態指令調度的這些優點是以顯著提高的硬體複雜度為代價的。

動態分支預測

動態分支預測的基本思想就是通過分支指令的歷史記錄來進行當前分文指令的預測,歷史記錄中記錄的內容可能包括分支指令最近一次或多次是否轉移成功的信息、轉移成功的目標地址、目標地址處的一條或多條指令,根據不同處理器的需要,歷史記錄中可能包括以上內容的一種或多種信息。那么很明顯,動態分支預測技術的兩個關鍵技術一個是如何記錄分支指令的歷史記錄信息,另一個是如何根據歷史記錄的信息預測分支指令的轉移方向。大多數的分支指令在真正執行後會根據預測情況和實際執行情況對歷史記錄進行修改。當某條流水指令執行時,根據指令的地址查找歷史記錄,“該指令是否是分支指令?”“如果是,之前執行該指令時是否轉移成功?”根據查找的結果,對那些分支指令的轉移是否能夠成功進行預測。

EPIC體系結構

EPIC體系結構是VLIW(Very LongInstruction Word,超長指令字)體系結構的延伸,同時還結合了RISC體系結構的優點。VLIW(處理器在數值計算方面具有很大的優勢,而RISC處理器可以高效地處理分支密集型的標量應用程式,因此EPIC處理器吸收了兩者的長處,在科學計算和通用程式領域都具有高性能的處理能力。它的基本思想是最大眼度地提高軟硬體之間的合作,增強微處理鋁體系結構與編譯軟體的合力,從而提高計算機系統的並行處理機能力。編譯器會先分析原始碼,檢查指令依賴情況,從原始碼中最大程度地挖掘指令級的並行性,確定可以做並行處理的指令,然後把並行指令放在一起並重新排序,提取並調度其指令級的並行。EPIC編譯器將這種並行性“顯性”地告知硬體設備,硬體只需按序高速並行處理其指令和數據,由此可見,EPIC編譯器等價於協調並行工作必需的一部分控制電路。

IA—64是HP公司和Intel公司合作開發的新一代64位體系結構,它是CPIC體系結構的第一個商業版本,用於安騰(Itan5um)處理器上。 P面簡要地概括了這種體系結構的技術特點,這裡用IA—64來指代EPIC體系結構。它主要有以下特點:

顯性並行

大量的暫存器

編譯器與處理器的通信

改進的“分支預測”技術

猜測執行

高效的函式調用

軟體流水

相關詞條

相關搜尋

熱門詞條

聯絡我們