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

計(jì)算機(jī)硬件的讀寫速度差異

開發(fā) 前端
一開始進(jìn)程中 只有一個(gè)"執(zhí)行流",干活的人就一個(gè)。隨著任務(wù)越來越多,發(fā)現(xiàn)進(jìn)程不夠用了,經(jīng)常導(dǎo)致整個(gè)程序被阻塞,這時(shí)計(jì)算機(jī)讓進(jìn)程有多個(gè)執(zhí)行流,干活的人變多了,那程序就不會(huì)再被阻塞了,"執(zhí)行流" 就是線程。

?現(xiàn)代計(jì)算機(jī)系統(tǒng)

現(xiàn)代計(jì)算機(jī)系統(tǒng)與馮·諾依曼計(jì)算機(jī)差別不大,最大的區(qū)別馮·諾依曼計(jì)算機(jī) 是 以運(yùn)算器為中心的,而現(xiàn)代計(jì)算機(jī) 以儲(chǔ)存器為中心:

圖片

我們主要來看一下其中與儲(chǔ)存相關(guān)的組件:

存儲(chǔ)器

存儲(chǔ)器是用來存放數(shù)據(jù)和程序。存儲(chǔ)器 包含主存和輔存

  • 主存:直接與CPU交換信息,就是我們熟悉的內(nèi)存。斷電后內(nèi)存的數(shù)據(jù)是會(huì)丟失的
  • 輔存:輔存可作為主存的后備存儲(chǔ)器,不直接與CPU交換信息,容量比主存大,但速度比主存慢。比如機(jī)械硬盤、固態(tài)硬盤等。斷電后硬盤的數(shù)據(jù)是不會(huì)丟失,硬盤是持久化存儲(chǔ)設(shè)備。
  • 輔存、輸入設(shè)備、輸出設(shè)備? 統(tǒng)稱為IO設(shè)備;主機(jī)一般包含:CPU、主存

我們先來看看存儲(chǔ)器的層次結(jié)構(gòu),來初步對(duì)各個(gè)儲(chǔ)存器部件有所認(rèn)識(shí)

圖片

我們可以發(fā)現(xiàn)存儲(chǔ)器速度越快的話,相應(yīng)的價(jià)格也會(huì)越發(fā)昂貴!

寄存器

CPU中 還有一個(gè)常見的組件: 寄存器,是CPU內(nèi)部用來存放數(shù)據(jù)的一些小型的存儲(chǔ)區(qū)域,用來暫時(shí)存放參與運(yùn)算的數(shù)據(jù)以及運(yùn)算結(jié)果。寄存器由電子線路組成,存取速度非??欤拇嫫鞯某杀据^高,因而數(shù)量較少。

CPU時(shí)鐘周期

CPU時(shí)鐘周期:通常為節(jié)拍脈沖或T周期,即主頻的倒數(shù),它是CPU中基本時(shí)間單位。平時(shí)我們打游戲常說的超頻,超的就是這個(gè)CPU主頻。

舉個(gè)例子,主頻為3.0GHZ的CPU,一個(gè)時(shí)鐘周期大約是0.3納秒,內(nèi)存訪問大約需要120納秒,固態(tài)硬盤訪問大約需要50-150微秒,機(jī)械硬盤訪問大約需要1-10毫秒,最后網(wǎng)絡(luò)訪問最慢,得幾十毫秒左右。

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

高速緩存

為了彌補(bǔ) CPU 與內(nèi)存兩者之間的性能差異,就在 CPU 內(nèi)部引入了 CPU Cache?,也稱高速緩存。CPU Cache用的是 SRAM(Static Random-Access Memory)的芯片,也叫靜態(tài)隨機(jī)存儲(chǔ)器。其只要有電,數(shù)據(jù)就可以保持存在,而一旦斷電,數(shù)據(jù)就會(huì)丟失。

CPU Cache 通常分為大小不等的三級(jí)緩存,分別是 L1 Cache、L2 Cache 和 L3 Cache

部件

CPU訪問所需時(shí)間

備注

L1 高速緩存

2~4 個(gè)時(shí)鐘周期

每個(gè) CPU 核心都有一塊屬于自己的 L1 高速緩存,L1 高速緩存通常分成指令緩存和數(shù)據(jù)緩存。

L2 高速緩存

10~20 個(gè)時(shí)鐘周期

L2 高速緩存同樣是每個(gè) CPU 核心都有的

L3 高速緩存

20~60個(gè)時(shí)鐘周期

L3 高速緩存是多個(gè) CPU 核心共用的

我們可以發(fā)現(xiàn)越靠近 CPU 核心的緩存其訪問速度越快。

程序執(zhí)行時(shí),會(huì)先將內(nèi)存中的數(shù)據(jù)加載到共享的 L3 Cache 中,再加載到每個(gè)核心獨(dú)有的 L2 Cache,最后 進(jìn)入到最快的 L1 Cache,之后才會(huì)被 CPU 讀取。層級(jí)關(guān)系如下圖:

圖片

主存

主存,直接與CPU交換信息,就是我們熟悉的內(nèi)存。它使用的是一種叫作 DRAM(Dynamic Random Access Memory)的芯片,也叫動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器。斷電后內(nèi)存的數(shù)據(jù)是會(huì)丟失。DRAM 芯片的密度更高,功耗更低,有更大的容量,造價(jià)比 SRAM 芯片便宜很多,但速度比SRAM 芯片慢的多。

內(nèi)存速度大概在 200~300 個(gè) 時(shí)鐘周期之間

固態(tài)硬盤

固體硬盤(Solid-state Disk, SSD),數(shù)據(jù)直接存在閃存顆粒中,并且由主控單元記錄數(shù)據(jù)存儲(chǔ)位置和數(shù)據(jù)操作,每一個(gè)閃存顆粒的存儲(chǔ)容量是有限的;

但是它相比內(nèi)存的優(yōu)點(diǎn)是斷電后數(shù)據(jù)還是存在的,SSD固體硬盤的讀寫速度雖然比內(nèi)存的大概慢10~1000 倍,但比機(jī)械硬盤快多了,當(dāng)然價(jià)格也昂貴很多。不過隨著時(shí)代的發(fā)展,固態(tài)硬盤的價(jià)格慢慢趨向接近機(jī)械硬盤。

機(jī)械硬盤

機(jī)械硬盤(_Hard Disk Drive, HDD_),它是通過物理讀寫的方式來訪問數(shù)據(jù)的,機(jī)械硬盤在盤面上寫數(shù)據(jù)、磁盤轉(zhuǎn)動(dòng),機(jī)械臂移動(dòng),比較原始的數(shù)據(jù)讀寫方式,就像近現(xiàn)代的留聲機(jī)發(fā)聲原理一樣。

由于受限于轉(zhuǎn)盤轉(zhuǎn)速與指針尋址的時(shí)間限制,因此它訪問速度是非常慢的,它的速度比內(nèi)存慢 10W 倍左右。當(dāng)然機(jī)械硬盤也是有其優(yōu)點(diǎn)的:容量大,價(jià)格便宜,恢復(fù)數(shù)據(jù)難度低,因此數(shù)據(jù)放在機(jī)械硬盤中比較保險(xiǎn)。

壓榨CPU性能帶來的問題

由于CPU速度非???,且價(jià)格非常昂貴,我們必須得充分壓榨CPU,得像生產(chǎn)隊(duì)的驢一樣,讓它不停地工作

為了合理利用 CPU 的高性能,同時(shí)盡可能地節(jié)約成本,現(xiàn)代計(jì)算機(jī)將這些儲(chǔ)存器充分的結(jié)合起來,由于這些硬件的數(shù)據(jù)存取速度差異導(dǎo)致了計(jì)算機(jī)系統(tǒng)編程中的各種問題:

有序性問題

為了充分壓榨CPU的性能,CPU 會(huì)對(duì)指令亂序執(zhí)行或者語言的編譯器會(huì)指令重排,讓CPU一直工作不停歇,但同時(shí)會(huì)導(dǎo)致有序性問題。

在CPU中為了能夠讓指令的執(zhí)行盡可能地同時(shí)運(yùn)行起來,采用了指令流水線。一個(gè) CPU 指令的執(zhí)行過程可以分成 4 個(gè)階段:取指、譯碼、執(zhí)行、寫回。這 4 個(gè)階段分別由 4 個(gè)獨(dú)立物理執(zhí)行單元來完成。

理想的情況是:指令之間無依賴,可以使流水線的并行度最大化。但是如果兩條指令的前后存在依賴關(guān)系,比如數(shù)據(jù)依賴,控制依賴等,此時(shí)后一條語句就必需等到前一條指令完成后,才能開始。所以CPU為了提高流水線的運(yùn)行效率,對(duì)無依賴的前后指令做適當(dāng)?shù)膩y序和調(diào)度。

還有一種情況編譯器會(huì)指令重排,比如java語言,JVM 的編譯器會(huì)對(duì)其指令進(jìn)行重排序的優(yōu)化(指令重排)。

所謂指令重排是指在不改變?cè)Z義的情況下,通過調(diào)整指令的執(zhí)行順序讓程序運(yùn)行的更快。JVM中并沒有規(guī)定編譯器優(yōu)化相關(guān)的內(nèi)容,也就是說JVM可以自由的進(jìn)行指令重排序的優(yōu)化。

無論是編譯期的指令重排還是CPU 的亂序執(zhí)行,主要都是為了讓 CPU 內(nèi)部的指令流水線可以“填滿”,提高指令執(zhí)行的并行度,充分利用CPU的高性能。

可見性問題

為了平衡CPU的寄存器和內(nèi)存的速度差異,計(jì)算機(jī)的CPU 增加了高速緩存,但同時(shí)導(dǎo)致了 可見性問題。我們知道當(dāng)程序執(zhí)行時(shí),一般CPU會(huì)去從內(nèi)存中讀取數(shù)據(jù),來進(jìn)行計(jì)算。CPU計(jì)算完之后,需要把數(shù)據(jù)重新放回到內(nèi)存中。

當(dāng)CPU的多個(gè)核心參與一個(gè)程序的運(yùn)行,從內(nèi)存中讀取一個(gè)共享變量的數(shù)據(jù),當(dāng)不同核心間進(jìn)行了各自的計(jì)算,把計(jì)算后的值放入自己的緩存中而不選擇立即寫入內(nèi)存中(CPU寫入內(nèi)存的時(shí)機(jī)是不確定的)。那么在CPU的緩存中,這個(gè)共享變量有可能存放著不同的數(shù)據(jù),這就導(dǎo)致了緩存的可見性問題。即一個(gè)線程對(duì)數(shù)據(jù)的修改無法對(duì)其他線程可見。

原子性問題

為了平衡CPU 與 I/O 設(shè)備?的速度差異,操作系統(tǒng)增加了進(jìn)程、線程?概念,以分時(shí)復(fù)用 CPU,但同時(shí)導(dǎo)致了原子性問題。

原子操作就是不可分割的操作,在計(jì)算機(jī)中,就是指不會(huì)因?yàn)榫€程調(diào)度被打斷的操作。

當(dāng)一個(gè)程序去I/O 設(shè)備讀取數(shù)據(jù), 由于I/O 設(shè)備數(shù)據(jù)存入讀取速度,相比于CPU的執(zhí)行速度來說度日如年,CPU這么牛逼這么昂貴的寶貝,怎么能讓它歇著,得讓它一直干活,去切換執(zhí)行其他程序。也就是將CPU的時(shí)間進(jìn)行分片,讓各個(gè)程序在CPU上輪轉(zhuǎn)執(zhí)行。但被剝奪執(zhí)行權(quán)的程序,等它從IO讀取完數(shù)據(jù)后,還是得讓CPU繼續(xù)執(zhí)行的,這時(shí)需要一個(gè)數(shù)據(jù)結(jié)構(gòu)來保存,以便之后恢復(fù)繼續(xù)執(zhí)行,這個(gè)就是進(jìn)程。

一開始進(jìn)程中 只有一個(gè)"執(zhí)行流",干活的人就一個(gè)。隨著任務(wù)越來越多,發(fā)現(xiàn)進(jìn)程不夠用了,經(jīng)常導(dǎo)致整個(gè)程序被阻塞,這時(shí)計(jì)算機(jī)讓進(jìn)程有多個(gè)執(zhí)行流,干活的人變多了,那程序就不會(huì)再被阻塞了,"執(zhí)行流" 就是線程。

如何解決這3個(gè)問題,就是并發(fā)、多線程需要處理的事,當(dāng)然這是后話。

參考資料:

《深入理解計(jì)算機(jī)系統(tǒng)》

《計(jì)算機(jī)組成原理》

《計(jì)算機(jī)組成原理》--唐朔飛

https://zhuanlan.zhihu.com/p/379947484

本文轉(zhuǎn)載自微信公眾號(hào)「 小牛呼嚕?!?,作者「小牛呼嚕?!?,可以通過以下二維碼關(guān)注。

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

2022-11-30 07:47:36

硬件速度差異讀寫

2021-03-12 18:26:27

云計(jì)算邊緣計(jì)算硬件

2011-08-29 15:37:32

A10網(wǎng)絡(luò)

2012-06-19 09:27:37

IBM超級(jí)計(jì)算機(jī)

2011-01-06 10:46:10

微軟認(rèn)證

2012-11-15 09:58:49

超級(jí)計(jì)算機(jī)HPC

2015-12-09 14:35:55

量子計(jì)算機(jī)谷歌

2013-11-25 13:39:29

超級(jí)計(jì)算機(jī)500強(qiáng)天河二號(hào)

2015-09-30 11:22:19

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

2023-10-11 18:30:39

Web系統(tǒng)程序

2011-12-16 16:50:57

硬件配置檢測軟件查看信息

2021-05-20 11:43:57

操作系統(tǒng)硬件軟件

2011-07-28 13:18:23

2012-06-04 10:28:54

2021-02-20 20:55:06

USB接口總線

2021-01-27 14:18:17

量子計(jì)算傳統(tǒng)計(jì)算量子機(jī)器

2014-04-10 09:40:51

System 360計(jì)算機(jī)計(jì)算機(jī)系統(tǒng)

2009-05-28 10:50:21

超級(jí)計(jì)算機(jī)Jugene走鵑

2009-10-15 11:16:06

摩爾定律計(jì)算機(jī)速度

2023-03-02 07:49:38

點(diǎn)贊
收藏

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