※ 引述《dolphinus (鬼扯英吉GTB)》之銘言:
: ※ 引述《sitos (麥子)》之銘言:
: : 它是寫第一次執行的時候放進去,之後執行到的時候就直接拿來用。
: : 至於存回去這件事,我不知道你在指什麼,但 trace cache 的確放執行過的程式碼。
: : 如果我讀錯了就直接告訴我哪裡讀錯了,我引用的就是上面那一段而已。
: "執行後再存回 trace cache" 這段意味著跑玩的東西
: 還會丟回 trace cache, 基本上不要說 trace cache,
: 只要是 instruction cache 都是行不通的...
: 我對這句話大感意外就是...
我不懂為什麼行不通? Instruction cache 裡面放的東西至少也是跑過一次的。
也就是在第一次要用的時候一起 fetch 進來的,那些 code 不算是跑過的嗎?
我不認為有「丟回」這個動作,一面把 code 從 I-cache 送到 decoder ,
一面把一份 code 寫進 trace cache 裡面以便下一次用,設計上並沒有困難。
: : 那我就不知道啦,我對商用品沒研究。我回的只有 trace cache 這個詞
: : 至於你說用 LRU 換掉被使用最少的那組 trace slot ,
: : 那就代表 trace slot 裡面存的的確是用過的程式碼,
: : 至少是準備被重複使用的程式碼,而不單只是為了存 decode 過後的 uOP 。
: 不一定是用過的, 搞不好根本沒使用到那段, 沒被用到過
: 就被替換掉了.
: 不過我查到的結果是有些是用 LRU 有的是 TC 裡還有自己
: 的 BTB..
我想要問的是,那第一次執行到該 code 的時候,到底有沒有真的執行?
如果根本就沒有執行到,為什麼會把那段 code 放到 trace cache?
如果有執行到,應該就算是執行過了,即使沒有 reuse 也算是執行過阿?
: : 是阿,我只是參考它,它上面寫 trace cache 存的是執行過的程式碼。
: 不一定是跑過的喔...
: 最少在這兩種 TC 設計上都只是擺放而已,
: 而且 TC 最重大的意義就是讓執行時能一條鞭一直下去
: (只要 TC 沒滿..), 而已經確定執行過的指令可以存活
: 在 TC 裡較久這樣...
所以有可能把根本不會執行到的指令放到 trace cache 裡面去嗎?
意思是說,當 branch prediction 結果出來以後就先拿進去放,
但是因為可能 prediction 錯了,所以擺進去的東西根本沒用到?
這樣的話擺進去的東西為什麼不用後來知道正確的 branch 結果取代掉呢?
或者一開始就應該要把確定已經確定執行順序的 code 放進去?
: : 有空再去看 :)
: 這個才是它的源頭哩. :)
: intel 打算後期的東西會開始導入 trace processor 的
: 概念.
後期是多後期?
我會去問修課老師關於 intel project 的事情,
他之前是在 intel 做 compiler 的,應該會知道。
: 有得罪之處還請見諒嘍. :)
沒這回事 :)
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.248.178.71