精華區beta hardware 關於我們 聯絡資訊
※ 引述《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