當前位置:首頁 » 編程軟體 » 編譯流水線

編譯流水線

發布時間: 2023-01-13 05:20:22

『壹』 DSP中什麼是流水線技術

  1. 原理

    流水線是一種在時間上串列,在空間上並行的技術,其基本原理如圖1所示。將整個電路劃分為若干個流水線級,流水線每級之間設置寄存器鎖存上一級輸出的數據;每一級只完成數據處理的一部分;一個時鍾周期完成一級數據處理,然後在下一個時鍾到來時將處理後的數據傳遞給下一級;第一組數據進入流水線後,經過一個時鍾周期傳到第二級,同時第二組數據進入第一級,數據隊列依次前進。每組數據都要經過所有的流水級後才能得到最後的計算結果,但是對整個流水線而言,每個時鍾都能計算出一組結果,所以平均計算一組數據只需要一個時鍾周期的時間,這樣就大大提高了數據處理速度,電路在單位時間內處理的數據量就愈大,即電路的吞吐量就越大,保證整個系統以較高的頻率工作。

  2. DSP中採用流水線技術的優勢

    (1)採用流水線技術普遍比不用流水線工作速度顯著提高,體現流水線技術在高速DSP運算上的優勢。
    (2)採用流水線技術在資源耗用(邏輯單元與寄存器個數、存儲器位數)上有所增加。
    (3)採用不同的流水線級數在速度指標和資源耗用率上有所不同,流水線級數增加,速度指標不一定增加,但資源耗用大大增加,所以應注意速度和資源耗用指標的權衡。如對16位加法器,如不用M4K(專用存儲器資源),以採用2級流水線最佳;如選用M4K,則取6級流水最佳。8位乘法器則以2級或6級流水最佳。對於其他DSP運算,在設計時必須通過反復比較、設計,選擇符合系統性能要求的流水線級數。

『貳』 加拿大pc演算法教程

1.三級流水線:其實對於PC = PC +8這個問題很簡單,這兩個PC其實代表著不同的意義,第一個PC是對於CPU而言,而第二個PC而言是我們通過編譯器看到的PC(PC指向程序正在運行的那一條指令),但是對於CPU的PC是永遠指向取指那個步,故PC = PC +8。

2.五級流水線; ARM9流水線包括取指(fetch)、解碼(decode)、執行(excute)、緩沖/數據(buffer/data)、回寫(write-back)寄存器堆。ARM9流水線在解碼階段已經開始讀取操作數寄存器,因此解碼階段的PC值和取指階段的PC值關系為:PC(decode)=PC(fetch)+4。因此執行階段的PC值和解碼階段的PC值關系為:PC(excute)=PC(decode)+4。

3.對於軟中斷函數的返回時的PC:如下

ARM Thumb

SWI PC-8 PC-4

xxx 》 PC -4 PC-2 (異常返回將執行這條指令)

yyy PC PC

因此返回指令為: MOV PC , LR

原因:異常是由指令本身引起的,因此內核在計算LR時的PC值並沒有被更新。對於ARM狀態,因為SWI指令表示將跳到異常處理函數,此時SWI這條指令的PC = PC -8,當進入異常處理函數之前,硬體會自動把PC-4保存到LR寄存器中,所以異常處理函數結束後直接MOV PC, LR就行,就會跳到xxx這一條指令去執行。對於Thumb狀態同理。

4.對於IRQ和FIQ中斷函數返回時的PC:

ARM Thumb

xxx PC-12 PC-6 (程序在運行這條代碼時就產生了中斷信號)

yyy 》 PC-8 PC-4 (異常返回將執行這條指令)

zzz PC-4 PC-2

www PC PC

返回指令為: SUBS PC, LR, #4

原因:異常在當前指令執行完成後才會被響應,因此內核在計算LR時的PC值已被更新。對於ARM狀態,程序在執行xxx這條指令時,中斷信號產生,但是由於中斷必須在這一條指令執行完之後才會被響應,執行完後,則此時對於CPU的PC已經指向了www這條指令的取指,在中斷函數函數時應該執行yyy這條指令,雖然硬體會把PC-4的值賦值給LR寄存器,但是這是指向zzz這條指令的,所以返回時應該SUBS PC, LR, #4。對於Thumb狀態同理。

『叄』 c語言文件的編譯與執行的四個階段並分別描述

開發C程序有四個步驟:編輯、編譯、連接和運行。

任何一個體系結構處理器上都可以使用C語言程序,只要該體系結構處理器有相應的C語言編譯器和庫,那麼C源代碼就可以編譯並連接到目標二進制文件上運行。

1、預處理:導入源程序並保存(C文件)。

2、編譯:將源程序轉換為目標文件(Obj文件)。

3、鏈接:將目標文件生成為可執行文件(EXE文件)。

4、運行:執行,獲取運行結果的EXE文件。

(3)編譯流水線擴展閱讀:

將C語言代碼分為程序的幾個階段:

1、首先,源代碼文件測試。以及相關的頭文件,比如stdio。H、由預處理器CPP預處理為.I文件。預編譯的。文件不包含任何宏定義,因為所有宏都已展開,並且包含的文件已插入。我歸檔。

2、編譯過程是對預處理文件進行詞法分析、語法分析、語義分析和優化,生成相應的匯編代碼文件。這個過程往往是整個程序的核心部分,也是最復雜的部分之一。

3、匯編程序不直接輸出可執行文件,而是輸出目標文件。匯編程序可以調用LD來生成可以運行的可執行程序。也就是說,您需要鏈接大量的文件才能獲得「a.out」,即最終的可執行文件。

4、在鏈接過程中,需要重新調整其他目標文件中定義的函數調用指令,而其他目標文件中定義的變數也存在同樣的問題。

『肆』 超標量流水線是指運算操作並行為什麼不對

超標量流水線是指運算操作並行不對,是因為超標量流水線是指令編譯並執行。在超標量流水線中,不僅運算操作並行,取指、解碼、執行、回寫也在並行,超標量流水線指的是以並行操作方式將兩條或多條指令編譯並執行,不是說將運算操作並行。

『伍』 cpu的流水線技術是什麼說的詳細點好嗎我很菜的

CPU的流水線
1.主頻

主頻也叫時鍾頻率,單位是MHz,用來表示CPU的運算速度。CPU的主頻=外頻×倍頻系數。很多人認為主頻就決定著CPU的運行速度,這不僅是個片面的,而且對於伺服器來講,這個認識也出現了偏差。至今,沒有一條確定的公式能夠實現主頻和實際的運算速度兩者之間的數值關系,即使是兩大處理器廠家Intel和AMD,在這點上也存在著很大的爭議,我們從Intel的產品的發展趨勢,可以看出Intel很注重加強自身主頻的發展。像其他的處理器廠家,有人曾經拿過一快1G的全美達來做比較,它的運行效率相當於2G的Intel處理器。
所以,CPU的主頻與CPU實際的運算能力是沒有直接關系的,主頻表示在CPU內數字脈沖信號震盪的速度。在Intel的處理器產品中,我們也可以看到這樣的例子:1 GHz Itanium晶元能夠表現得差不多跟2.66 GHz Xeon/Opteron一樣快,或是1.5 GHz Itanium 2大約跟4 GHz Xeon/Opteron一樣快。CPU的運算速度還要看CPU的流水線的各方面的性能指標。

當然,主頻和實際的運算速度是有關的,只能說主頻僅僅是CPU性能表現的一個方面,而不代表CPU的整體性能。

3.前端匯流排(FSB)頻率

前端匯流排(FSB)頻率(即匯流排頻率)是直接影響CPU與內存直接數據交換速度。有一條公式可以計算,即數據帶寬=(匯流排頻率×數據帶寬)/8,數據傳輸最大帶寬取決於所有同時傳輸的數據的寬度和傳輸頻率。比方,現在的支持64位的至強Nocona,前端匯流排是800MHz,按照公式,它的數據傳輸最大帶寬是6.4GB/秒。

6.緩存

緩存大小也是CPU的重要指標之一,而且緩存的結構和大小對CPU速度的影響非常大,CPU內緩存的運行頻率極高,一般是和處理器同頻運作,工作效率遠遠大於系統內存和硬碟。實際工作時,CPU往往需要重復讀取同樣的數據塊,而緩存容量的增大,可以大幅度提升CPU內部讀取數據的命中率,而不用再到內存或者硬碟上尋找,以此提高系統性能。但是由於CPU晶元面積和成本的因素來考慮,緩存都很小。

11.超流水線與超標量

在解釋超流水線與超標量前,先了解流水線(pipeline)。流水線是Intel首次在486晶元中開始使用的。流水線的工作方式就象工業生產上的裝配流水線。在CPU中由5—6個不同功能的電路單元組成一條指令處理流水線,然後將一條X86指令分成5—6步後再由這些電路單元分別執行,這樣就能實現在一個CPU時鍾周期完成一條指令,因此提高CPU的運算速度。經典奔騰每條整數流水線都分為四級流水,即指令預取、解碼、執行、寫回結果,浮點流水又分為八級流水。

超標量是通過內置多條流水線來同時執行多個處理器,其實質是以空間換取時間。而超流水線是通過細化流水、提高主頻,使得在一個機器周期內完成一個甚至多個操作,其實質是以時間換取空間。例如Pentium 4的流水線就長達20級。將流水線設計的步(級)越長,其完成一條指令的速度越快,因此才能適應工作主頻更高的CPU。但是流水線過長也帶來了一定副作用,很可能會出現主頻較高的CPU實際運算速度較低的現象,Intel的奔騰4就出現了這種情況,雖然它的主頻可以高達1.4G以上,但其運算性能卻遠遠比不上AMD 1.2G的速龍甚至奔騰III。

12.封裝形式

CPU封裝是採用特定的材料將CPU晶元或CPU模塊固化在其中以防損壞的保護措施,一般必須在封裝後CPU才能交付用戶使用。CPU的封裝方式取決於CPU安裝形式和器件集成設計,從大的分類來看通常採用Socket插座進行安裝的CPU使用PGA(柵格陣列)方式封裝,而採用Slot x槽安裝的CPU則全部採用SEC(單邊接插盒)的形式封裝。現在還有PLGA(Plastic Land Grid Array)、OLGA(Organic Land Grid Array)等封裝技術。由於市場競爭日益激烈,目前CPU封裝技術的發展方向以節約成本為主。

好了,上面貼的一些都是和CPU的運行效率直接相關的參數,剩下的參數,有的太簡單,有的我們不常接觸到.沒有貼,
好,看一下流水線的來由,大家都知道,兩個CPU會比一個CPU快,但是為什麼呢,也不會出現,一個CPU,運行WORD,一個CPU,運行CS呀, 那是因為,把指令細分成線程後,他們可以分別運行,cyrix的MII,當時不是有個技術么,亂序運行!!就是提高運行效率的一個手段,流水線,也是這種目的,P4,的時候,就20級流水線了,就是說,CPU運行一次的時候,等於,20個CPU(沒有流水線),同時運行一樣,這本來是什麼呢,運行速度一下子,提高了20倍

但是,事實上並不是這樣,為什麼呢,這20個東東運行完了,得把他們再拼一起呀,還有一件事,如果拼錯了,(下面的工人裝不上,就認為是原料有問題)他就認為,這次的運行結果是錯的,說,"重來"吧. 那麼,有一個CPU,只有10級流水線,但是由於他們的管理很好,每次運行都不返工,所以,他們的生產效率反而更高!!!

AMD,和INTEL,現在正是這種情況,一個抓管理,管理上去了,下面的工人出錯的才少,(返工次數少)
一個抓技術,工人熟練了,生產的東西,質量才高!!(每次出來的東西多)
當然,又抓管理,又抓技術,兩手都要抓,兩手都要硬,這是中國人的想法,都抓的人,顯然什麼都沒抓好,都破產了,現在只有這兩家還存活著,......現在我想給流水線一個公正一點的說法, 如果你的CPU組裝的水平很差,那當然,流水線越多,你越亂,就像,你的水平不行, 管理了,10000多個程序員高手, 項目亂的一團糟, 但是,如果你是一個管理經驗豐富的人, 下面的人一下也不會做活, 那麼,項目也是一個失敗, 幸好,事實上,並不是這樣絕對,管理員也是差不多的水平, 程序員也是差不多的水平, 那麼你建一個項目, 你選好的程序員,還是好的管理員!!!

我說,不一定,我得看是什麼項目, 如果項目是一般的項目, 一般的管理員就可以了,那麼,我當然選好的程序員, 項目完成的又快又好, 一個程序,本身就可以亂序運行, 那麼,INTEL的CPU當然就是最好了, 反正,大家都不會返工!!!!! 但是一個項目是很復雜的, 而代碼量並不多, 那麼,當然是選好的管理員, 如果一個程序,就是針對測試而測試的, 導致,CPU運算不斷的返工, 那當然就是AMD的CPU好, 比如,大浮點數的運行,AMD,比INTEL的高50%現在看不到這種比較了, 但是,你可以查一查,以前的資料, 有PIII1G,與AMD速龍1G的比較, 這個差異到現在也沒有改變, 這就是為什麼AMD的CPU,顯卡得分,會比INTEL的高, 3Dmark2001的得分,一般都比INTEL的高, 而,business stone,INTEL 一般都比AMD要高, SYSMARK,也是,INTEL 比AMD要高, 因為這些程序不復雜,(線程復雜,和我們想的程序本身復雜是兩回事)

買CPU也是一樣, AMD,和INTEL誰好,????? 我也不知道,我喜歡AMD,但我目前確實使用的是INTEL, 家裡的兩台機子全是INTEL. 沒有AMD,INTEL不會這么便宜, 沒有AMD,中國的D版軟體..... 中國的組裝機.............但是,我要為流水線正一正名, 並不是流水線長了,運行效率就低了, 流水線長了,運行效率絕對是高了, 但是,運行出錯的代價是大了,流水線,這本身是一個提高效率的技術, 怎麼現在的人,都當成是,因為提高頻率,所必須採用的手段呢????? 當時沒有流水線的時候, 流水線一出來的時候, 大家都認為這是提高效率的秘密武器呀!!!

越是實際的程序,越容易發生流水線返工,因此P4效能越差。
倒是純粹的理論測試,比如sandra,pcmark還有3dmark之類P4表現不錯(老實說P4在3dmark裡面的表現相對於在bussiness winstone裡面算好的了),而到了實際測試,特別是bussiness winstone(直接調用office源代碼)或者sciencemark(直接編譯的標准量子化學代碼)裡面,p4的表現那叫一個菜。。。。連P4c都不是同PR的AthlonXP的對手。
至於sysmark裡面Intel的分高,那是一個著名的bug,因為sysmark認為AthlonXP不支持SSE,結果是AthlonXP用x87浮點對抗專門為SSE優化的多媒體代碼,自然性能不成(即使這樣Intel也沒有多少優勢)
在bussiness winstone 2002的測試結果,看看就會發現,P4 3.2c的性能剛剛可以匹敵公認為虛標最嚴重的AthlonXp 3200+。 當然,多媒體性能上P4 3.2c還是毫無疑問的戰勝AXP 3200+,畢竟,AXP不支持SSE2。

即使沒有流水線返工,長流水線的性能也就和短流水線相同,因為每條流水線每周期就只能執行一條指令(p4有個怪異的設計就是如果跑配對的兩個簡單微指令,那麼兩個可以並成一個執行,所以如果你反復執行完全相同的指令比如a=a+1一百億次,那麼P4比AthlonXP要快一倍),所以長流水在任何角度也不可能提升效率。
長流水的唯一好處就是,電路比較簡單,設計起來比較容易.解釋的詳細一點就是,並不是說20級流水線每次執行的動作比10級流水線多一倍,相反,他們能執行的實際功能是一樣的,只是每級執行的操作簡單了一些。
比如,一個工廠造螺絲,可以分成兩級流水,一個人造螺絲,一個人車螺紋。也可以分成100個步驟,第一個人負責拿鐵塊,第二個人負責遞,第三個人負責往上畫線。。。。第99個人車單數螺紋,第100個人負責擦掉粉塵。
如果每個步驟耗費的時間都一樣,那麼兩種做法速度完全一樣,唯一的區別是,前面的辦法工人素質必須很高,因為他每個人幹了對方50個人的活
看看吧,多少能了解點
http://rediceberg.bokee.com/viewdiary.11290690.html

『陸』 編譯程序中使用的關鍵技術都有哪些應用方向

在RISC處理機中採用流水線工作方式,取指令和執行指令並行工作,那麼當遇到條件轉移指令時,流水線可能斷流。為了盡量保證流水線的執行效率,在轉移指令之後插入一條有效的指令

『柒』 ARM Cortex A9的流水線介紹

● 先進的取指及分支預測處理——避免因訪問指令的延時而影響跳轉指令的執行。
● 最多支持四條指令Cache Line預取掛起 (prefetch-pending)——進一步減少了內存延時的影響,從而促進
指令的順利傳輸。
● 每個周期內可連續將兩至四條指令發送到指令解碼——確保充分利用超標量流水線性能。
● Fast-loop模式——執行小循環時提供低功耗運行。
●超標量解碼器——每個周期可完成兩條完全指令的解碼。
● 支持指令預測執行——通過將物理寄存器動態地重新命名至虛擬寄存器池來實現。
● 提升了流水線的利用效率——消除了相鄰指令之間的數據依賴性,減少了中斷延時。
● 支持寄存器的虛擬重命名——以一種有效的、基於硬體的循環展開方法,提高了代碼執行效率,而不會增
加代碼大小和功耗水平。
● 四個後續流水線(subsequent pipeline)中的任何一個均可從發射隊列中選擇執行指令—提供了無序分配,進一步提高了流水線利用效率,無需藉助於開發者或編譯器指令調度。確保專為上一代處理器進行優化的代碼
能夠發揮最大性能,也維護了現有軟體投資。
● 每周期支持兩個算術流水線 (fullal arithmetic pipeline) 、載入-存儲(load-store) 或計算引擎以及分支跳轉的並行執行。
● 可將有相關性load-store指令提前傳送至內存系統進行快速處理,進一步減少了流水線暫停,大幅提高了
涉及存取復雜數據結構或C++函數的高級代碼的執行效率。
● 支持四個數據Cache Line的填充請求——而且還能通過自動或用戶控制預取操作,保證了關鍵數據的可用
性,從而進一步減少了內存延時導致的暫停現象。
● 支持無序指令完成回寫 (write back)——允許釋放流水線資源,無需受限於系統提供所需數據的順序。

『捌』 為何我寫的混合匯編與c語言的程序編譯後出現流水線失敗呢

流水線沖突
,如果全C寫沒有問題,匯編就需要考慮一些問題,TI文檔上都有說明

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:649
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:940
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:635
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:824
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:734
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1070
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:302
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:164
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:855
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:766