作者blackZ2 (BB)
看板Grad-ProbAsk
標題Re: [理工] [計組] pipeline
時間Thu Sep 22 01:33:58 2011
※ 引述《ceo890710 (Drinking)》之銘言:
If the data requested by a load instruction has not yet become available
when it is requested, the load-use data hazard occurs.
這題答案是給false 我想問為什麼? 看怎麼看都覺得是true= ="
這人覺得是英文問題,感覺是陷阱
不過我不敢掛保證,我英文很爛
再念一次題目
If the data requested by a load instruction
has not yet become available when it is requested,
the load-use data hazard occurs.
如果當load指令要求data時,data尚未變得可用,則發生load-use data hazard。
現在發現嗎?? 其實他只是一般的 data hazard,只是剛好是load 指令而已
所以並不屬於load-use data hazard
(load-use data hazard 不需要我多講吧...)
希望我沒有講錯,因為英文真的沒有把握,希望有人告訴我有沒有講錯
另外,我想問stall和nop的差別
stall是在stage中插入bubble然後在清成nop的指令吧(!?)
可是我看到一個題目說假使沒有插入bubble的話
compiler會做什麼動作來防止hazard,答案是說在指令中插入NOP
這邊讓我有點搞混..還是他們是一樣的東西?
那為什麼要多出bubble這個步驟而不直接插入NOP呢?
想當初我也以為一樣,不過會來再看看書,發現了其中的不同
就最終目的是一樣的,就是藉由延遲避免 hazard
但是屬於階層不一樣的
nop指令 雖然沒有做事,但還是指令,是compiler(軟體)的事情
而stall是硬體層面
暫停某一段與其後面的資料流,但是前面的資料流還是得前進,
所以中間空白的部分,就須要bubble填補,由直接輸入NOP的機械碼代替
這樣可以嗎??
請高手解答...感激不盡!!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.251.246.100
※ 編輯: ceo890710 來自: 111.251.246.100 (09/22 00:33)
※ 編輯: ceo890710 來自: 111.251.246.100 (09/22 00:35)
--
其實我是來賺P幣的
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.21.245.173
推 ceo890710:上面那題懂了..是英文的問題QQ 09/22 09:17
→ ceo890710:那插入bubble後再轉NOP和直接插入NOP兩個效能有差別嗎? 09/22 09:18
→ ceo890710:不然怎麼需要多出bubble這個步驟呢? 09/22 09:21
推 genius945:因為一個是硬體層面,一個是軟體層面吧,至於效能有請高手 09/22 22:34
推 Numbstu:一個是指另一個不是 09/23 19:45
→ Numbstu: 令 09/23 19:45
推 Numbstu:我記得有一題是結構危障的 有講說nop無解 09/23 19:47