2016-02-06 83 views
1

所以我正在研究建築模擬器(主要是simplescalar)以找出真正發生在微處理器內部的事情。我注意到的一件令人着迷的事情是,整個管道都是反寫的!也就是說,在純循環while循環中,回寫階段位於解碼階段之前的問題階段之前,等等。流水線在建築模擬器

這是什麼意思?假設fetch()階段的輸出存儲在由decode()階段的輸入訪問的共享緩衝區('latch')中。由於它是一個純循環順序循環,所以我看不到這個鎖存/緩衝區將被覆蓋的問題。然而,對如this這樣的問題的回答:聲稱以某種方式反向模擬管道可以避免這個「問題」?對正確方向的一些見解/指導將非常感謝!

回答

2

我不太瞭解Simplescalar,但我在其他架構模擬器中看到過這一點。

流水線的外環應該表示處理器的一個週期。想象一下,這是第一個週期,爲了簡單起見,前端的寬度爲1。如果每個階段按照fetchcommmit的順序執行,會發生什麼情況?

cycles 1 
- fetch: instruction 1 (place it in fetch/decode latch) 
- decode: instruction 1 (place it in decode/rename latch) 
- rename: instruction 1 (place it in rename/dispach latch) 
- dispatch: instruction 1 (place it in issue queue) 
- issue: instruction 1 
etc... 

你還沒有模擬任何有用的東西,因爲這不是管道。當循環以commitfetch的順序執行每個階段時會發生什麼?

cycle 1 
- issue: noop 
- dispatch: noop 
- rename: noop 
- decode: noop 
- fetch: instruction 1 (place it in fetch/decode latch) 

cycle 2 
- issue: noop 
- dispatch: noop 
- rename: noop 
- decode: instruction 1 (place it in decode/rename latch) 
- fetch: instruction 2 (place it in fetch/decode latch) 

這不是一個非常複雜的想法,但它有助於簡化模擬器。

+0

從來沒有想過這樣...很多謝謝你,先生! – nirvanaswap