日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

一步步编写操作系统 29 cpu缓存简介

發布時間:2023/12/10 windows 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一步步编写操作系统 29 cpu缓存简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

緩存是20世紀最大的發明,其原理用一些存取速度較快的存儲設備做為數據緩沖區,避免頻繁訪問速度較慢的低速存儲設備,歸根結底的原因是,低速存儲設備是整個系統的瓶頸,緩存用來緩解“瓶頸設備”的壓力。

之前介紹實模式下的寄存器時,舉了一個瀏覽器訪問網頁的例子,里面有12步,幾乎步步都用到了緩存。不過,這些緩存都是在內存DRAM中實現的,即動態隨機訪問存儲器,究其原因是數據要么在數據庫中要么在硬盤上,其速度肯定比內存慢。選做用緩存的存儲設備,其存取速度肯定是比其原有存儲設備更快,否則失去了緩存的意義。相對于cpu來說,DRAM太慢了,如果也要用它來做cpu的緩存,反而是拖了后腿,不如不用。

cpu為什么要用緩存?因為待執行的指令和相關數據是存儲在低速的內存中,讓cpu這種高速設備等待慢速的內存,著實太浪費cpu資源了。人們根本無法容忍cpu如此“漫長”的“浪費”,所以需要用一個比內存更快的存取設備做緩沖區,盡量和cpu一個速度,讓cpu不要等待。于是SRAM成了cpu的救世主,成為cpu和內存之間數據緩存的不二之選。

前面在介紹實模式下的寄存器時,也說到了cpu中的緩存。cpu中有一級緩存L1、二級緩存L2,甚至三級緩存L3等。它們都是SRAM,即靜態隨機訪問存儲器,它是最快的存儲器啦。之所以把SRAM和寄存器放到一塊說,是因為很多同學在感觀上覺得寄存器是cpu直接使用的存儲單元,所以寄存器比SRAM更快。其實他們在速度上是同一級別的東西,因為寄存器和SRAM都是用相同的存儲電路實現的,用的都是觸發器,它可是工作速度極快的,屬于納秒級別。至于觸發器是什么,這已屬于硬件范疇,這里咱就不深究了,因為我也不懂,不敢亂說啦^_^,有興趣的同學請自行調研吧。

有哪些東西可以被緩存呢?無論是程序中的數據或指令,在cpu眼里全是一樣形式的二進制01串,沒有任何區別,都是cpu待處理的“數據”。所以我們眼中的指令和數據都可以被緩存到SRAM中。

什么時候能緩存呢?可以根據程序的局部性原理采取緩存策略。局部性原理是:程序90%的時間都運行在程序中10%的代碼上。

局部性分為兩個方面:

一方面是時間局部性:最近訪問過的指令和數據,在將來一段時間內依然經常被訪問。

另一方面空間局部性:靠近當前訪問內存空間的內存地址,在將來一段 時間也會被訪問。

舉一個典型的例子,我們在用高級語言寫程序時,經常會寫到這樣的循環嵌套代碼,如:

int array[100][100]; int sum = 0; … 數組array元素被賦值,略。 … for (int i=0, i<100,i++) {for(int j=0;j<100,j++) {sum+=array[i][j];} }

以上是將二維數組中的所有元素相加求和。循環中經常被用到的地址是sum所在的地址,經常被用到的指令是加法求和指令,這是在時間上的局部性。未來要訪問的地址是與當前訪問地址&array[i][j]相鄰的地址&array[i][j+1],它們之間只差一個整型變量的大小,這是空間上的局部性的。(當然,這些局部性都是編譯器編譯的結果,編譯器就是這樣安排的。)cpu利用此特性,將當前用到的指令和當前位置附近的數據都加載到緩存中,這就大大提高了cpu效率,下次直接從緩存中拿數據,不用再去內存中取啦。

當然,上面說的是理想的狀態,如果緩存中沒有相應的數據,還是要去內存中去加載,然后再放到緩存中。

總結

以上是生活随笔為你收集整理的一步步编写操作系统 29 cpu缓存简介的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。