體系結構學習筆記 白話理解Tomasulo演算法

2021-10-25 07:22:41 字數 2523 閱讀 7893

單位時間執行的指令數目是衡量cpu的一項重要指標,為了讓各個部件盡量處於工作狀態,於是提出了指令流水,但是隨之而來的問題就是因為程式之間的相關性,從而引起的流水線堵塞,影響了流水線效能。

為了進一步提高流水線效能,就提出了亂序執行,也就是部分程式不需按照原先的順序執行。可以試想,若有一指令執行時間非常長,而後邊執行時間短而且運算元都準備就緒的指令和本條指令之間無資料流動,那為何不讓後邊的提前執行以便更進一步的執行隨後的工作呢。這只是乙個例子,這種根據元件狀態以及判斷是否可提前執行的技術就是亂序執行。

add r1,r2,r3

sub r4,r1,r5

add指令的寫入操作,遲於sub的讀取操作,從而sub讀了錯資料。而資料相關就是今天要討論的重點。

mov ax,2	

mov cx,11

s:add ax,ax

loop s

mov ax,2

以下討論幾種亂序執行造成的資料衝突。

sub f0,f1,f2

add f1,f4,f5 //亂序之後sub指令的f1會讀到add的結果

sub f1,f2,f3

add f1,f2,f3 //亂序之後,f1存了sub的運算結果

sub f1,f2,f3

add f4,f1,f5 //亂序之後add指令讀取的是sub運算之前的f1

(這裡借用一下別人的)

簡述一下思想的話就是,待執行的指令分為三個階段,發射,執行,寫回。

op : 操作碼

還是上邊的硬體結構,假設各個暫存器初始的值均為1.0,我們要執行以下**。

div f0,f1,f2  //f0 

mul f3,f0,f2 //f3

add f0,f1,f2 //f0

mul f3,f0,f2 //f3

1. div指令發射,發現f1,f2都準備好了。所以乘法保留站會更新為醬事兒的。div表示操作型別,兩個0表示資料準備好了,1.0        表示運算元(其實這個過程相當於暫存器重新命名了,在資料沒準備好的時候「重新命名」的意義會體現的更明顯)。

浮點暫存器更新,f0的st標號為3,表示"目前我這個f0大家是不能讀取的哈,要等3號保留站記錄訊號"。

2. mul1發射,發現f0需要等待,f2準備好了。所以乘法保留站更新,3表示要等待保留站編號為3的(他上邊那一條記錄)結果,浮點暫存器同上。

3. add發射,重點來了,他發現f1,f2都準備好了而且加法操作的部件空閒,所以無需等待,可以亂序執行。加法保留棧更新,這時候發現浮點計數器中f0還在等待3的寫回,這就是這個演算法的靈魂所在,我要覆蓋掉之前的st標號,也就是說在真正寫回暫存器之前我還得按順序寫回,反正隨後3還會廣播通知別人更新,那我直接覆蓋掉不就完事了嘛,這樣就消除了waw,war:

4. mul2發射發現,f0要等待加法保留站6號保留站記錄的結果,f2直接讀取,另外,浮點暫存器f3的等待st標號也要更新為最新的。

5. 考慮add要比div快太多了,add先寫回,通過資料線(紅線)廣播給浮點暫存器和各個保留站,「兄弟們!你們st號為6的已經被我更新了,你們可以用了!!!」

6. div寫回,廣播  「兄弟們!你們st號為3的也已經被我更新了,你們可以用了」  。

這時就是「重新命名」思想體現的最明顯的時候,無論是div指令之前的讀取還是之後的讀取都會得到正確的值。如果是div指令之前讀f0,那麼保留站中記錄的是該暫存器準備好了。如果是div指令之後讀f0,就需要被div的廣播訊號更新。感覺很巧妙^_^

WINCE6 0體系結構學習

wince6.0的體系結構圖如下圖所示 圖1 wince的體系結構 根據上圖可以把wince6.0體系結構分為硬體層 oem層 作業系統層和應用層,這四層緊密合作,相互配合來完成從應用程式的呼叫到對硬體的操作和互動。1.硬體層 硬體平台的核心是嵌入式處理器,而嵌入式處理器的種類很多,處理能力和主頻的...

體系結構學習15 cache coherence

現代處理器的並行 或執行緒共享記憶體,需要保證資料一致性。從軟體 硬體兩個角度考慮解決cache一致性。現代處理器cache一般對程式設計師透明,isa一般只提供cache flush命令。如果靠軟體解決,對程式設計師負擔太大。要求cache有雙埠,接受匯流排和相應cpu的資訊 cache bloc...

嵌入式系統 體系結構 學習筆記(2)

2007年10月29日星期一 緒論0 馮.諾伊曼計算機體系 l運算器,控制器,儲存器,輸入,輸出 l二進位制 表示 程式和資料 l程式和資料存放在儲存器中,計算機自動執行 1 cpu cpu由控制器和運算器組成 l控制器 統一指揮和協調計算機各部分工作以完成電腦程式指定的各種操作。由程式計數器,指令...