為什麼將指令cache和資料cache相分離?

2021-09-02 20:26:03 字數 314 閱讀 9141

為什麼將指令cache和資料cache相分離?

主要是為了避免資源衝突,在五級指令流水線中,分為if(取址),id(解碼),exe(執行),mem(訪存),wb(寫回)。當然也不一定是五級,現在處理器流水線的長度都在15級左右。但是if和mem這兩步總是有的。

其中if和mem都會訪問cache。但是if訪問cache是取指令,mem訪問記憶體是取資料。

當前指令的mem和後面指令if同時在流水線上執行,會產生同時訪問cache的衝突(資源衝突),但是將指令cache和資料cache分開就能滿足兩者的同時訪問了。就不會因為衝突,造成流水線暫停了,提高了流水線執行效率。

c語言 為什麼不進行下標檢查,總結下指標和陣列

假設 int array 10 int ap array 2 ap 1 下標引用就是間接訪問表示式,只要將它轉換成那種形式對它進行求值即可。只想第三個元素 下標為 所以使用偏移量 使我們得到它的前乙個元素,也就是 array 1 ap 9 表示式看上去正常,但是實際上存在問題。它對等的表示式是 ap...

C 為什麼空格無法輸出 資料的輸入輸出舉例

前面已經看到了利用printf函式進行資料輸出的程式,現在再介紹乙個包含輸入和輸出的程式。例 求方程ax 2 bx c 0的根。a b c由鍵盤輸入,設b 2 4ac 0 解題思路 首先要知道求方程式的根的方法。有數學知識已知 如果b 2 4ac 0,則一元二次方程有兩個實根 可以將上面的分式分為兩...

C 類的靜態資料為什麼一定要初始化

我們知道c 類的靜態成員變數是需要初始化的,但為什麼要初始化呢。其實這句話 靜態成員變數是需要初始化的 是有一定問題的,應該說 靜態成員變數需要定義 才是準確的,而不是初始化。兩者的區別在於 初始化是賦乙個初始值,而定義是分配記憶體。靜態成員變數在類中僅僅是宣告,沒有定義,所以要在類的外面定義,實際...