自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

突破計算機(jī)性能瓶頸的利器CPU Cache

商務(wù)辦公
本文簡單介紹了計算機(jī)性能瓶頸產(chǎn)生的原因,緩存及其發(fā)展歷史,最后講解了緩存彌補(bǔ)CPU和內(nèi)存性能差異的原理,后面我們會繼續(xù)更詳細(xì)深入地介紹Cache的組織結(jié)構(gòu)、緩存一致性,以及如何利用緩存提升我們代碼的性能等。

大家好,我是呼嚕嚕,今天我們來介紹計算機(jī)的儲存器之一,CPU高速緩沖存儲器也叫高速緩存,CPU Cache

緩存這個專業(yè)術(shù)語,在計算機(jī)世界中是經(jīng)常使用到的。它并不是CPU所獨有的,比如cdn緩存網(wǎng)站信息,瀏覽器緩存網(wǎng)頁的圖像視頻等,但本文講述的是狹義Cache,主要指的是CPU Cache,本文將其簡稱為"緩存"或者"Cache"

計算機(jī)性能的瓶頸

在馮諾依曼架構(gòu)下,計算機(jī)存儲器是分層次的,存儲器的層次結(jié)構(gòu)如下圖所示,是一個金字塔形狀的東西。從上到下依次是寄存器、緩存、主存(內(nèi)存)、硬盤等等

圖片圖片

離CPU越近的存儲器,訪問速度越來越快,容量越來越小,每字節(jié)的成本也越來越昂貴

比如一個主頻為3.0GHZ的CPU,寄存器的速度最快,可以在1個時鐘周期內(nèi)訪問,一個時鐘周期(CPU中基本時間單位)大約是0.3納秒,內(nèi)存訪問大約需要120納秒,固態(tài)硬盤訪問大約需要50-150微秒,機(jī)械硬盤訪問大約需要1-10毫秒,最后網(wǎng)絡(luò)訪問最慢,得幾十毫秒左右。

這個大家可能對時間不怎么直觀,那如果我們把一個時鐘周期如果按1秒算的話,那寄存器訪問大約是1s,內(nèi)存訪問大約就是6分鐘 ,固態(tài)硬盤大約是2-6天 ,傳統(tǒng)硬盤大約是1-12個月,網(wǎng)絡(luò)訪問就得幾年了!我們可以發(fā)現(xiàn)CPU的速度和內(nèi)存等存儲器的速度,完全不是一個量級上的。

電子計算機(jī)剛出來的時候,其實CPU是沒有緩存Cache的,那個時候的CPU主頻很低,甚至沒有內(nèi)存高,CPU都是直接讀寫內(nèi)存的

隨著時代的發(fā)展,技術(shù)的革新,從1980年代開始,差距開始迅速擴(kuò)大,CPU的速度遠(yuǎn)遠(yuǎn)超過內(nèi)存的速度,在馮諾依曼架構(gòu)下,CPU訪問內(nèi)存的速度也就成了計算機(jī)性能的瓶頸?。?!

圖片圖片

DRAM為內(nèi)存顆粒,也叫動態(tài)隨機(jī)存取存儲器, 圖片來源于:How L1 and L2 CPU Caches Work, and Why They're an Essential Part of Modern Chips

為了彌補(bǔ)CPU與內(nèi)存兩者之間的性能差異,也就是要加快CPU訪問內(nèi)存的速度,就引入了緩存CPU Cache,緩存的速度僅次于寄存器,充當(dāng)了CPU與內(nèi)存之間的中間角色

緩存及其發(fā)展歷史

緩存CPU Cache用的是 SRAM(Static Random-Access Memory)的芯片,也叫靜態(tài)隨機(jī)存儲器。其只要有電,數(shù)據(jù)就可以保持存在,而一旦斷電,數(shù)據(jù)就會丟失。

CPU Cache 如今通常分為大小不等的3級緩存,分別是 L1 Cache、L2 Cache 和 L3 Cache

圖片圖片

我們可以發(fā)現(xiàn)越靠近 CPU 核心的緩存,其訪問速度越快,其大小越來越小,其制造成本也越昂貴,常見的Cache典型分布圖如下:

圖片圖片

回顧C(jī)ache發(fā)展歷史,我們可以發(fā)現(xiàn)Cache其實一開始并不是在CPU的內(nèi)部,我們這里以Intel系列為例

在80286之前,那個時候是沒有緩存Cache的,那個時候的CPU主頻很低,甚至沒有內(nèi)存高,CPU都是直接讀寫內(nèi)存的

從80386開始,這個CPU速度和內(nèi)存速度不匹配問題已經(jīng)開始展露,并且差距開始迅速擴(kuò)大,慢速度的內(nèi)存成為了計算機(jī)的瓶頸,無法充分發(fā)揮CPU的性能,為解決這個問題,Intel主板支持外部Cache,來配合80386運行

圖片圖片

80486將L1 Cache(大小8KB)放到CPU內(nèi)部,同時支持外接Cache,即L2 Cache(大小從128KB到256KB),但是不分指令和數(shù)據(jù)Cache

圖片圖片

雖然L1 Cache大小只有8KB,但其實對那時候CPU來說夠用了,我們來看一副緩存命中率與L1、L2大小的關(guān)系圖:

圖片圖片

圖片來源于:How L1 and L2 CPU Caches Work, and Why They're an Essential Part of Modern Chips

從上圖我們可以發(fā)現(xiàn),增大L1 cache對于CPU來說好處不太明顯,緩存命中率并沒有顯著提升,成本還會更昂高,所以性價比不高。

而隨著 L2 cache 大小的增加,緩存總命中率會急劇上升,因此容量更大、速度較慢、更便宜的L2成為了更好的選擇

等到Pentium-1/80586,也就是我們熟悉的奔騰系列,由于Pentium采用了雙路執(zhí)行的超標(biāo)量結(jié)構(gòu),有2條并行整數(shù)流水線,需要對數(shù)據(jù)和指令進(jìn)行雙重的訪問,為了使得這些訪問互不干涉,于是L1 Cache被一分為二,分為指令Cache和數(shù)據(jù)Cache(大小都是8K),此時的L2 Cache還是在主板上,再后來Intel推出了Pentium Pro/80686,為了進(jìn)一步提高性能L2 Cache被正式放到CPU內(nèi)部

圖片圖片

后來CPU多核時代來臨,Intel的Pentium D、Pentium EE系列,CPU內(nèi)部每個核心都有自己的L1、L2 Cache,但他們并不共享,只能依靠總線來傳遞同步緩存數(shù)據(jù)。最后Core Duo酷睿系列的出現(xiàn),L2 Cache變成多核共享模式,采用Intel的“Smart cache”共享緩存技術(shù),到此為止,就確定了現(xiàn)代緩存的基本模式如今CPU Cache 通常分為大小不等的3級緩存,分別是 L1 Cache、L2 Cache 和 L3 Cache,L3 高速緩存為多個 CPU 核心共用的,而L2則被每個核心單獨占據(jù),另外現(xiàn)在有的CPU已經(jīng)有了L4 Cache,未來可能會更多

緩存如何彌補(bǔ)CPU與內(nèi)存的性能差異?

我們可以思考一個問題:緩存是如何彌補(bǔ)CPU與內(nèi)存兩者之間的性能差異?

緩存主要是利用局部性原理,來提升計算機(jī)的整體性能。因為緩存的性能僅次于寄存器,而CPU與內(nèi)存兩者之間的產(chǎn)生的分歧,主要是二者存取速度數(shù)量級的差距,那盡可能多地讓CPU去存取緩存,同時減少CPU直接訪問主存的次數(shù),這樣計算機(jī)的性能就自然而然地得到巨大的提升

所謂局部性原理,主要分為空間局部性與時間局部性:

  1. 時間局部性:被引用過一次的存儲器位置在未來會被多次引用(通常在循環(huán)中)。
  2. 空間局部性:如果一個存儲器的位置被引用,那么將來他附近的位置也會被引用

緩存這里,會去把CPU最近訪問主存(內(nèi)存)中的指令和數(shù)據(jù),臨時儲存著,因為根據(jù)局部性原理,這些指令和數(shù)據(jù)在較短的時間間隔內(nèi)很可能會被以后多次使用到,其次是當(dāng)從主存中取回這些數(shù)據(jù)時,會同時取回與其位置相鄰的主存單元的存放的數(shù)據(jù) 臨時儲存到緩存中,因為該指令和數(shù)據(jù)附近的內(nèi)存區(qū)域,在較短的時間間隔內(nèi)也可能會被多次訪問。

那以后CPU去訪問這些指令和數(shù)據(jù)時,首先去命中L1 Cache,如果命中會直接從對應(yīng)的緩存中取數(shù)據(jù),而不必每次去訪問主存,如果沒命中,會再去L2 Cache中找,依次類推,如果L3 Cache中不存在,就去內(nèi)存中找。

尾語

本文簡單介紹了計算機(jī)性能瓶頸產(chǎn)生的原因,緩存及其發(fā)展歷史,最后講解了緩存彌補(bǔ)CPU和內(nèi)存性能差異的原理,后面我們會繼續(xù)更詳細(xì)深入地介紹Cache的組織結(jié)構(gòu)、緩存一致性,以及如何利用緩存提升我們代碼的性能等

參考資料:

https://www.extremetech.com/extreme/188776-how-l1-and-l2-cpu-caches-work-and-why-theyre-an-essential-part-of-modern-chips

http://www.cpu-zone.com/80486.htm

責(zé)任編輯:武曉燕 來源: 小牛呼嚕嚕
相關(guān)推薦

2023-08-02 09:28:28

計算機(jī)性能CPU

2023-03-02 07:49:38

2015-07-02 09:47:36

超級計算機(jī)大數(shù)據(jù)

2021-01-04 08:40:47

計算機(jī)AI 技術(shù)

2010-06-22 13:11:18

超級計算機(jī)未來

2016-12-01 14:34:00

2023-09-28 09:00:00

2009-11-25 13:43:02

CDN內(nèi)容分布網(wǎng)絡(luò)

2010-10-19 13:36:23

自旋計算機(jī)

2021-06-11 07:26:16

操作系統(tǒng)內(nèi)存管理Cpu

2009-07-02 15:55:03

2024-01-25 16:19:27

2023-12-18 14:55:00

Oracle數(shù)據(jù)庫監(jiān)控

2013-05-22 13:06:14

aerohive協(xié)同控制WLAN

2020-04-22 11:11:48

Decoder性能應(yīng)用

2011-07-07 10:52:37

IBM記憶體

2019-08-13 08:32:14

MySQL數(shù)據(jù)庫性能調(diào)優(yōu)

2012-05-29 15:30:31

計算機(jī)

2022-08-21 07:30:55

程序并發(fā)Golang編碼

2017-11-21 18:03:00

點贊
收藏

51CTO技術(shù)棧公眾號