Re: [理工] 108台大資工 計系 Exception

作者: kyuudonut (善良老百姓)   2021-11-02 22:30:13
回答這題適當的方式我認為不是用排序,而是用歸類的方式回答。
大約分三類 Rank A,B,C,難度為 A > B > C。
Rank A:
Out-of-order (OOO) superscalar
Speculative execution
有翻過 Computer Architecture: A Quantitative Approach 的學生
應該就知道,ILP 章節在講述 OOO technique,主要就是在聊 Register
怎麼做 rename,最後怎麼 commit 回 ROB (Re-Order Buffer)。
而 Exception 自然是一個重點,既然指令被亂序執行,我們要如何確保
precise exception 這件事情?總不能指令 I 觸發 Exception,但是下
面的指令 II 已經被 commit 了吧?走在 false path 上,結果觸發
Exception?
而 Speculative execution 比較常用在具 OOO capability 的 core 上,
因為這些 core 通常也自帶 Register renaming 的功能。
課本可能常舉的例子是,branch 在尚未 resolve 之前,core 可以繼續
往下執行。但值得一提的是,只要是 core 在基於臆測下執行的動作都
可以稱做 speculative。例如為了避 load-to-use latency,在尚未確定
cache/tlb hit/miss 前,ALU 也可以先 issue consumer 去搶 timing。
而我將這兩種 technique 歸在一類的原因是,最後都是使用 ROB 去確保
program order 及 precise exception。
Rank B:
Pipelined implementation
Superscalar implementation
Single issue In-order processor
Pipeline 應該不須多講了。
Superscalar 就定義上來看,是泛指單一 cycle 可以執行一道以上指令的
machine。因為該題有特別把 OOO superscalar 獨立,所以合理推論這是指
In-order superscalar impelementation ...。
如果都是指 In-order implementation,那其實處理 exception 的方式就是
白算盤教的那樣。管你 Single/multiple issue,有指令發生 exception,
都是要 Flush 掉前面年輕的指令,再跳去 exception handler。所以三者
歸在同一類。
Rank C
Hierarchical data caches
Data cache 是 micro-architecture,而 exception 是 ISA 定義的東西,
要不要發生 exception 跟 cache 一點關係都沒有。
推文有提到 page fault,但多層 cache 的機器我又不一定要開 OS :p
兩件不同的事情。
作者: lienasd126 (迷途の獅子)   2021-11-02 22:48:00
謝謝大大回答,很詳細。但是想問一下,假如題目說的 Hierarchical Data Cache,就是 Cache miss的話,是不是就可以看成跟第二類同一類,因為data cache 會造成Memory Stall的關係,只是他是停一個cycle,不是整個flush掉所以difficulty 也比大大說的第二類還要低一些,請大大解答,感謝感謝
作者: jacksoncsie (資工肥宅)   2021-11-02 23:28:00
的確,cache miss跟page fault沒關係 感謝回復
作者: lienasd126 (迷途の獅子)   2021-11-03 00:39:00
喔喔,我搞混了,我再想一下,謝謝大大
作者: TWkobe (中華柯比)   2021-11-03 10:10:00
補充一下 cache 的議題反而會探討coherence與llc memory的penalty, 而page fault或多或少會影響沒錯但通常會講data pattern是否具備locality或可以prefetch,而page fault比較high level且多牽扯os/main mem/disk之間的關聯

Links booklink

Contact Us: admin [ a t ] ucptt.com