前幾天上計算機組織學 - 駭客任務

Table of Contents

在下才疏學淺

可能完全誤會老師所講授的知識也說不定

請見諒XDDDD


昨天老師在教管線(pipeline) CPU

其中提到data hazard 的問題

因為管線拆的深度越深

其hazard 現象越嚴重


但是為了解決 data hazard 的問題

學者們提出了 靜態 & 動態的解決方法



其中靜態的方法又分為軟體的方法以及硬體的方法

老師說

軟體的解決方法:

是compiler 從高階語言編譯到組合語言的時候,如果發現有data hazard發生的時候

塞入空指令(NOP)

但這無法有效解決data hazard 的問題

所以學者們又提出一個方法: forward (手邊沒書,可能有錯,回家再修改)

將data hazard 區域 上面或是下面不影響結果的組合指令搬到data hazard 的區域

取代NOP

進而將大多數的NOP殺掉



也就是說

原本

1.-------------
2.-------------
3.-------------
4.-------------
5.-------------
6.-------------
7.-------------
8.-------------


經過forward 之後

可能會變成


1.-------------
2.-------------
5.-------------
6.-------------
3.-------------
4.-------------
7.-------------
8.-------------


雖然指令順序不一樣

但是結果卻是正確的



這時候我突然出神

想到The Matrix

會不會人們有時候會預知、預見

其實都是因為有這樣指令重排的機制在??




以後才會發生的事情 (ex.第5.6道指令)

因為某種原因 (ex.程式速度、系統穩定)

事先發生

但是因為在處理完第 1.2.3.4道指令之前

邏輯上第5.6道是還沒發生的

等到真正1234道指令完成之後

事情才真正發生

但是因為指令前挪

所以發生預知的現象 ??



我黑白想的

可能荒誕不經、胡說八道

各位大大看看就好 XDDDDDDD

--

All Comments

Elma avatarElma2010-04-16
你指的預知是誰的預知?電腦的or人類的?
Eartha avatarEartha2010-04-19
在Matrix裡面這兩種狀況是有分別的
Enid avatarEnid2010-04-23
好多術語看不懂 不過感覺很厲害XD
Oliver avatarOliver2010-04-27
這有趣,沒想到有這樣的看法,不過我有個問題
Enid avatarEnid2010-05-01
在Matrix裡人的意識是觀察者,不是執行者,
Xanthe avatarXanthe2010-05-03
如果以指令的角度來看,人是否就變成執行者的
角色呢?
Iris avatarIris2010-05-08
錯誤!硬解OS看不到 軟解 那得重新compile
Ophelia avatarOphelia2010-05-08
那可能需要很多時間
不過也有可能他是interpreter的方式
Caroline avatarCaroline2010-05-09
那就跟JAVA一樣需要很強大的硬體
Bethany avatarBethany2010-05-09
而系統崩潰是因為他開外掛亂修改啦
Annie avatarAnnie2010-05-12
因為NEO的頭腦好像頓悟可以看到code所以就可
Kumar avatarKumar2010-05-16
亂害進去然後亂改 自己還可以飛天遁地
Necoo avatarNecoo2010-05-17
系統的預知是他可以用機率來算出可能解賭一
Freda avatarFreda2010-05-20
你可以查一下 branch prediction
Callum avatarCallum2010-05-24
其實人是計算之中的變數而已