CPU 的各級快取分別實現什麼樣的功能?

時間 2021-05-12 13:31:10

1樓:jameswhale

在我的另外乙個問題回答裡面,針對CPU的各級快取做了乙個簡單描述,避免重複,直接將鏈結貼在下面了。

CPU如何決定把什麼內容放入快取,程式設計師能控制嗎?

自己的下面一篇文章也講解了CPU的各級快取。

jameswhale:詳解記憶體虛擬位址到實體地址的轉換過程以及對應的應用場景

總結下來,CPU各級快取主要用來解決CPU和主記憶體的訪問速度鴻溝,設想一下,執行一條指令只需要1納秒,從物理記憶體獲取這條指令需要花費100納秒,這個顯然無法接受,下面有乙個對比資料:

2樓:Emerald Z

我之前寫過乙個比喻,在這裡再把它講一遍吧。

CPU核心可以看成是乙個只會算加減乘除以及與或非之類的簡單邏輯運算的小屁孩,它的任務也就是不停地算乙個個的加減乘除與或非這樣的計算題。

那麼,我們可以把正在執行的指令理解為小屁孩腦子裡正在算的那一道題,而L1快取裡所儲存的東西就是小屁孩腦子裡記住的接下來幾道題。(讀寫的速度和計算速度一樣快,而且幾乎沒有延遲。當然,L1快取往往是指令快取和資料快取分開,因為CPU要算的通常不是1+2,而是x+y,xy的值要去另外的地方找)

L2快取呢,則是小屁孩自己草稿紙上抄下來的接下來的幾十道題(讀寫的速度也非常快,但是需要多浪費一點時間去找);L3快取則是同班的所有小屁孩(CPU上的各個核心)共同看的幾本練習冊,每個人都從那上面抄題來做(需要專門去抄所以速度慢了,找起來需要的時間也更多了)。

然後記憶體呢,就是教室外面的書架,裡面放著好幾百本練習冊,讓小屁孩們需要算的時候就來拿(速度更慢,延遲更大)。不過有時候也會有鄰近幾個班共用一組書架的情況(多路CPU)。硬碟,則是學校的圖書館,小屁孩們要算的所有練習冊都存在這裡,而且小屁孩們不能自己進來找,只能拜託書架管理員(DMA)來找到需要的那一本練習冊,並且放到書架上,小屁孩們才能看到。

好了舉個例子,我們先只考慮系統中只有乙個執行緒的情況,它的所有題目(指令)和資料都從0開始排序號,按順序分配在練習冊裡面,讓小屁孩看到序號就能知道該去哪個練習冊裡找,假如小屁孩CPU算的某一道題告訴他,下一道題是編號233的題(跳轉指令),小屁孩就先在自己腦子裡(L1指令快取)找,如果沒記著這道題,就去看自己的草稿紙(L2快取),如果還沒有,就去找公用練習冊看(L3快取),如果還是沒有,就去書架裡找(記憶體),再沒有,就告訴書架管理員(DMA),讓他去圖書館(硬碟)裡找。

多個執行緒的情況會更複雜,再舉第二個例子,假設兩個執行緒吧,這樣就會有兩個小屁孩(叫做小屁孩A和B吧)同時在算數。A算到乙個題,這個題比方說是x+3,然後註明了x是編號666的資料,小屁孩還是和剛才一樣,先在腦子裡找,然後去草稿紙找,結果都沒有。然後他去公用練習冊上一看,哎有這個數字,但是這一頁上有一行字「這頁的數我抄去算了,具體數字以我結果為準——小屁孩B」。

這個時候A有兩種可能的辦法,一種方法是等著B把數算好了寫回到公用練習冊裡面來,另一種方法就是直接跑去B的草稿紙上抄這個數。

在CPU設計裡這兩種方法都是可以的,主流CPU通常是後者,一些追求電路簡單的CPU可能會採用前者。舉這第二個例子主要是為了說明CPU核心之間還會有能夠直接訪問各自L2快取的資料匯流排。

這麼解釋,應該蠻清楚的了?

為什麼MIPS架構的路由器CPU能實現比X86高很多的網路吞吐量?

一開始人們用CPU挖礦,後來GPU礦機出來了。然後人們用GPU挖礦,後來ASIC礦機出來了。MIPS和X86一如上文的GPU和CPU,通用計算CPU肯定比GPU厲害,但只幹某一件事時可就不一定了。而ASIC的意思是 專用積體電路 像上文的ASIC礦機除了挖礦啥都做不了。 宅叔 簡答因為路由不能只比處...

喜歡周杰倫 鹿晗的分別都是什麼樣的人?

Gara 那就是我這種人。93年,鹿晗在我眼中,杰倫在我心裡。兩個人都讓我腎上腺素爆發,除此之外,我的精神家園,我的正能量,來自周杰倫他的言談舉止,他的歌曲裡表達的精神。既然嫁不了杰倫,那就找個也精通樂器 喜歡周杰倫的漢子吧 cat312 鹿晗現在肯定算不上實力派,但是他一直在努力在進步。周董剛出道...

建築如何實現對場地的控制?什麼樣的空間或者是形式具有引導性?

你覺得是建築控制場地,但其實應該是場地控制建築。場地有七線控制,有容積率,建築密度,綠地率,建築限高,包括設計規範上的要求,城市設計的要求,有好多好多控制的條款。你引導的目的是什麼很重要,為了什麼而引導,肯定不是為了引導而引導呀,空間有大小,有高低,有遠近,蘇州園林的空間組合就值得學習,空間組合的層...