contributed by < qwe661234 >
10/8/2023在多處理器的機器上,每個 CPU 都有自己的 cache,以彌補 CPU 和主記憶體(Main memory) 之間較慢的存取速度,當一個特定資料首次被特定的 CPU 讀取時,此資料顯然不存在於該 CPU 的 cache 中 (即 cache miss),意味著 CPU 需要自主記憶體中讀取資料 (為此,CPU 通常要等待數百個 cycle),此資料最終將會存放於 CPU 的 cache 中,這樣後續就能直接自 cache 上快速存取,不需要再透過主記憶體。因為每個 CPU 上的 cache 資料是 private 的,因此在進行寫入操作時,會造成其他 CPU 上的 cache 資料不一致的問題。
10/2/2023(15pt) 1. Assume there is no forwarding in a 5-stage pipline processor 1 (1) (5pt) Please indicate all the potential hazards in the following instruction sequence ? xori x1, x1, 2 addi x6, x5, -4 lw x10, 8(x6) add x5, x6, x6 sub, x2, x2, x1 Ans: addi && lw (2.5pt)
6/8/2023按照 EBB 的定義,single entry and multiple exit,我們必須記錄 block 的進入點,如果該 block 的進入點有多個,就表示這個 block 不能 merge 到其他 block 之下,因為 merge 後這個 EBB 會變成有多個進入點而違反 EBB 的定義。 記錄方式,先紀錄第一個 previous block 的 program counter,如果之後紀錄的 previous block 的 program counter 不同,那就代表有多個進入點,就把 can_merge 設定為 false. if (prev && next->can_merge) { if (!next->prev_pc) { next->prev_pc = prev->pc_start; if (prev->left) prev->right = next; else
4/15/2023or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up