軟件行業(yè)非常迅速,以前流行C,C++java,spring,現(xiàn)在springcloud,docker,微服務(wù),k8s云原生等概念火熱,還有各種各樣的新技術(shù)在不斷的涌現(xiàn)出來(lái)。但是計(jì)算機(jī)底層原理 這幾十年一直并沒(méi)有太大的變化,與其不斷去嘗試新技術(shù),不如耐住性子,深入學(xué)習(xí)底層的知識(shí),好好修煉“內(nèi)功”。
計(jì)算機(jī)的軟硬件概念
計(jì)算機(jī)系統(tǒng)由"軟件"和"硬件"2大部分組成
其中軟件如果按應(yīng)用范圍分類,一般分為系統(tǒng)軟件和應(yīng)用軟件
:
- 系統(tǒng)軟件是各類操作系統(tǒng),如windows、Linux、UNIX等,還包括操作系統(tǒng)的補(bǔ)丁程序及硬件驅(qū)動(dòng)程序,都是系統(tǒng)軟件類。
- 應(yīng)用軟件可以細(xì)分的種類就更多了,如工具軟件、游戲軟件、管理軟件等都屬于應(yīng)用軟件類。
其中計(jì)算機(jī)硬件經(jīng)過(guò)發(fā)展歷程:
- 電子管時(shí)代,速度每秒幾千次~幾萬(wàn)次
- 晶體管時(shí)代,速度每秒幾萬(wàn)次~幾十萬(wàn)次
- 中小規(guī)模集成電路時(shí)代,速度每秒幾十萬(wàn)次~幾百萬(wàn)次
- 大規(guī)模、超大規(guī)模集成電路時(shí)代,速度每秒上千萬(wàn)次~萬(wàn)億次
馮·諾依曼體系結(jié)構(gòu)
1946年,第一臺(tái)計(jì)算機(jī)ENIAC誕生,人類進(jìn)入計(jì)算機(jī)時(shí)代,馮諾依曼和其他計(jì)算機(jī)科學(xué)家們 提出了計(jì)算機(jī)"存儲(chǔ)程序"
的計(jì)算機(jī)設(shè)計(jì)理念,即將計(jì)算機(jī)指令進(jìn)行編碼后存儲(chǔ)在計(jì)算機(jī)的存儲(chǔ)器中,需要的時(shí)候可以順序地執(zhí)行程序代碼,從而控制計(jì)算機(jī)運(yùn)行。還定義計(jì)算機(jī)基本結(jié)構(gòu)為 5 個(gè)部分,分別是運(yùn)算器、控制器、存儲(chǔ)器、輸入設(shè)備、輸出設(shè)備
,這就是馮.諾依曼計(jì)算機(jī)
。
實(shí)線箭頭表示 數(shù)據(jù)線,虛線箭頭表示 控制線和反饋線
馮·諾依曼計(jì)算機(jī)特點(diǎn):
- 計(jì)算機(jī)由 運(yùn)算器、存儲(chǔ)器、控制器、輸入設(shè)備和輸出設(shè)備 五大部件組成, 側(cè)重于硬件抽象
- 將計(jì)算機(jī)的計(jì)算和記憶分開,負(fù)責(zé)計(jì)算的部分由運(yùn)算器和控制器組成,負(fù)責(zé)記憶的部分稱為存儲(chǔ)器
- 指令和數(shù)據(jù)均用 二進(jìn)制數(shù) 表示
- 指令和數(shù)據(jù)以同等地位存放于存儲(chǔ)器內(nèi),并可 按地址尋訪
- 指令由操作碼和地址碼組成,操作碼用來(lái)表示操作的性質(zhì),地址碼用來(lái)表示操作數(shù)在存儲(chǔ)器中的位置
- 指令在存儲(chǔ)器內(nèi)按順序存放。通常,指令是順序執(zhí)行的,在特定條件下,可根據(jù)運(yùn)算結(jié)果
或根據(jù)設(shè)定的條件改變執(zhí)行順序
- 以運(yùn)算器為中心
現(xiàn)代計(jì)算機(jī)系統(tǒng)與馮·諾依曼計(jì)算機(jī)差別不大,最大的區(qū)別馮·諾依曼計(jì)算機(jī) 是 以運(yùn)算器為中心的 ,而現(xiàn)代計(jì)算機(jī) 以儲(chǔ)存器為中心:
接下來(lái),我們分別介紹一下這幾個(gè)重要組成部分
- 存儲(chǔ)器
存儲(chǔ)器是用來(lái)存放數(shù)據(jù)和程序。存儲(chǔ)器 包含主存和輔存
- 運(yùn)算器
運(yùn)算器也叫算數(shù)邏輯單元
,是進(jìn)行算數(shù)運(yùn)算和邏輯運(yùn)算的部件,在控制器的控制下,對(duì)取自內(nèi)存儲(chǔ)器的數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算或邏輯運(yùn)算,并將運(yùn)算的結(jié)果送到內(nèi)存儲(chǔ)器。
- 控制器
控制器用來(lái)控制、指揮程序和數(shù)據(jù)的輸人、運(yùn)行以及處理運(yùn)算結(jié)果。計(jì)算機(jī)在工作時(shí),控制器首先從內(nèi)存儲(chǔ)器中按順序取出一條指令,并對(duì)該指令進(jìn)行譯碼分析,根據(jù)指令的功能向相關(guān)部件發(fā)出操作命令,使這些部件執(zhí)行該命令所規(guī)定的任務(wù),執(zhí)行之后再取出第二條指令進(jìn)行分析執(zhí)行。如此反復(fù),直到所有指令都執(zhí)行完成。
- 輸入設(shè)備
輸入設(shè)備用來(lái)將人們熟悉的信息形式轉(zhuǎn)換為機(jī)器能識(shí)別的信息形式,常見的有鍵盤、鼠標(biāo)等
- 輸出設(shè)備
輸出設(shè)備可將機(jī)器運(yùn)算結(jié)果轉(zhuǎn)換為人們熟悉的信息形式,如打印機(jī)輸出、顯示器輸出等。
- 中央處理器(CPU)
由于運(yùn)算器和控制器在邏輯關(guān)系和電路結(jié)構(gòu)上聯(lián)系十分精密,特別是大型集成電路時(shí)代的到來(lái),所以往往會(huì)將運(yùn)算器和控制器集成到同一個(gè)芯片上,統(tǒng)稱 在中央處理器(CPU),其功能是從內(nèi)存儲(chǔ)器中取出指令、解釋指令并執(zhí)行指令。
- CPU中 還有一個(gè)常見的組件,寄存器
寄存器是CPU內(nèi)部用來(lái)存放數(shù)據(jù)的一些小型的存儲(chǔ)區(qū)域,用來(lái)暫時(shí)存放參與運(yùn)算的數(shù)據(jù)以及運(yùn)算結(jié)果。寄存器由電子線路組成,存取速度非常快,與CPU的速度相當(dāng),寄存器的成本較高,因而數(shù)量較少。CPU內(nèi)部的寄存器類型有指令寄存器、程序計(jì)數(shù)器、數(shù)據(jù)寄存器、地址寄存器以及狀態(tài)寄存器等。
總線
總線
是貫穿整個(gè)系統(tǒng)的是一組電子管道,稱作總線
,它攜帶信息字節(jié)并負(fù)責(zé)在各個(gè)計(jì)算機(jī)部件間傳遞。通常總線被設(shè)計(jì)成傳送定長(zhǎng)的字節(jié)塊,也就是字(word)。字中的字節(jié)數(shù)(即字長(zhǎng))是一個(gè)基本的系統(tǒng)參數(shù),各個(gè)系統(tǒng)中都不盡相同。現(xiàn)在的大多數(shù)機(jī)器字長(zhǎng)要么是4個(gè)字節(jié)(32位),要么是8個(gè)字節(jié)(64位)。本文我們不對(duì)字長(zhǎng)做任何固定的假設(shè)
另外計(jì)算機(jī)最小的存儲(chǔ)單位
是 字節(jié)( byte ) ,1 字節(jié)等于 8 位(1Byte=8bit
),而 位/比特(bit) 是計(jì)算機(jī)最小的數(shù)據(jù)傳輸單位
。1 字節(jié)等于 8 位(1Byte=8bit)這個(gè)換算規(guī)則大家需要牢記
我們順便把內(nèi)存相關(guān)的知識(shí)串起來(lái):計(jì)算機(jī)將8個(gè)bit歸為一組,為字節(jié),每一個(gè)字節(jié)都對(duì)應(yīng)一個(gè)內(nèi)存地址。內(nèi)存的地址是從 0
開始編號(hào)的,然后自增排列,最后一個(gè)地址為內(nèi)存總字節(jié)數(shù) - 1
。CPU只需要知道某個(gè)數(shù)據(jù)類型的地址, 就可以直接去到對(duì)應(yīng)的內(nèi)存位置去提取數(shù)據(jù)了。
總線可分為 3 種:
- 地址總線 ,一般用于指定 CPU 將要操作的內(nèi)存地址;
- 數(shù)據(jù)總線 ,一般用于讀寫內(nèi)存的數(shù)據(jù);
- 控制總線 ,一般用于發(fā)送和接收信號(hào),比如中斷、設(shè)備復(fù)位等信號(hào),CPU 收到信號(hào)后,通過(guò)控制總線進(jìn)行響應(yīng);
-
cpu
+關(guān)注
關(guān)注
68文章
10855瀏覽量
211610 -
二進(jìn)制
+關(guān)注
關(guān)注
2文章
795瀏覽量
41645 -
儲(chǔ)存器
+關(guān)注
關(guān)注
1文章
93瀏覽量
17471
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論