處理器訪問內存時,CPU核、cache、…

處理器訪問內存時,CPU核、cache、MMU如何協同工作


                                                  圖1  CPU訪問內存時的硬件操作順序


CPU訪問內存時的硬件操作順序,各步驟在圖中有對應的標號:

1:CPU內核(圖1中的ARM)發出VA請求讀數據,TLB(translation lookaside buffer)接收到該地址,那爲什麼是TLB先接收到該地址呢?因爲TLBMMU中的一塊高速緩存(也是一種cache,是CPU內核和物理內存之間的cache),它緩存最近查找過的VA對應的頁表項,如果TLB裏緩存了當前VA的頁表項就不必做translation table walk了,否則就去物理內存中讀出頁表項保存在TLB中,TLB緩存可以減少訪問物理內存的次數。

 

2:頁表項中不僅保存着物理頁面的基地址,還保存着權限和是否允許cache的標誌。MMU首先檢查權限位,如果沒有訪問權限,就引發一個異常給CPU內核。然後檢查是否允許cache,如果允許cache就啓動cacheCPU內核互操作。

 

3: 如果不允許cache,那直接發出PA從物理內存中讀取數據到CPU內核。

 

4:如果允許cache,則以VA爲索引到cache中查找是否緩存了要讀取的數據,如果cache中已經緩存了該數據(稱爲cache hit)則直接返回給CPU內核,如果cache中沒有緩存該數據(稱爲cache miss),則發出PA從物理內存中讀取數據並緩存到cache中,同時返回給CPU內核。但是cache並不是只去CPU內核所需要的數據,而是把相鄰的數據都取上來緩存,這稱爲一個cache lineARM920Tcache line32個字節,例如CPU內核要讀取地址0x30000134~0x30001374個字節數據,cache會把地址0x30000120~0x3000137(對齊到32字節地址邊界)32字節都取上來緩存。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章