推 b10007034: 嗯對的,總體來說蠻複雜的,我翻了恐龍跟算盤 01/16 12:52
→ b10007034: 大致上的心得跟你說得差不多 01/16 12:53
→ b10007034: 首先看到TLB(恐龍397),看CPU可以讓HW處理或是透過中斷 01/16 12:56
→ b10007034: 然後是TLB(RISC-V算盤839),TLB miss,HW儲存暫存器值 01/16 13:01
→ b10007034: 然後產生exception 01/16 13:01
→ b10007034: exception調用OS,並用一組特殊的instr.(ISR?)更新TLB 01/16 13:02
推 b10007034: 看了一些之後我只能說有三種情況,1全都HW處理2全都OS處 01/16 13:06
→ b10007034: 3.HW+OS處理 01/16 13:06
You got it. 現實情況就是這樣。但這會牽扯到 ISA 是如何設計的。
"通常" RISC-style 的 ISA 會盡量避免牽扯到 micro-architecture 相關的指令,
因為 TLB 主要是 micro-architecture level 的最佳化,會讓整個 ISA 不夠簡潔。
但 Intel 就會有 TLB 相關的指令,例如 flush, invalidate, ...
→ b10007034: 目前能確定的是cache一定是HW處理,猜測是為了快 01/16 13:08
→ b10007034: 而memory那部分就是HW(MMU)+OS(決定replacement algo.) 01/16 13:09
→ b10007034: TLB也是HW+OS(參照算盤) *[m 01/16 13:09
這倒不一定,Cache 的部分還會有 prefetch 相關的指令可以用
→ b10007034: 源來做trade-off,而這也就是現實的複雜之處 01/16 13:15
→ b10007034: 說得還蠻模糊的,希望有大神出來點破我XD 01/16 13:17
--
◢ ◣ ▁▂█▂▁◢茄你老木! ◥ ▁▂▁
你這個茄子 ◤◥◤◥ 你有得茄嗎? ◢█ ◆ █◣ 【茄~】
◣ ◤ ˋ ˊ ◥ 你有得茄嗎?◢ ◤ ◥◥◤◤ ◥ ◤
◤ ㄧ ◣ ◤ (因為很重要 ▉ ⊙ ⊙ ▏
… ▍ 所以說兩次)▉ △ ◢ ▏
◣ ◤◤ ◣ ◤◢ ψJeans1020 ◢ ◣ ▁▂█▂▁◢茄你老木! ◥ ▁▂▁
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.16.173
※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1547618826.A.7CD.html
推 b10007034: 謝拉,原來是ISA,柱子本會講到這邊嗎? 01/16 14:32
→ b10007034: Intel flush指令我知道,如果TLB entry沒有ASIDs(恐龍) 01/16 14:36
→ b10007034: 為了確保context switch時,下個process不會轉換到上個 01/16 14:37
→ b10007034: process的PPN,會用flush來保證這件事情 01/16 14:38
→ skyHuan: 長知識了 01/16 23:11
推 skyHuan: 感謝b大跟原po 01/16 23:11