计算机组成原理详解
目錄
- 一、計(jì)算機(jī)組成原理
- 1. 什么是計(jì)算機(jī)?
- 2. 為什么要用計(jì)算機(jī)?
- 3. 計(jì)算機(jī)的五大組成部分
- 4. 操作系統(tǒng)概述
- 二、CPU工作原理
- CPU工作流程
- CPU指令集
- 啟動(dòng)計(jì)算機(jī)
一、計(jì)算機(jī)組成原理
1. 什么是計(jì)算機(jī)?
俗稱電腦,即通電的大腦,電腦二字蘊(yùn)含了人類對(duì)計(jì)算機(jī)的終極期望,希望它能真的像人腦一樣去工作,從而解放人力。
2. 為什么要用計(jì)算機(jī)?
世界是由聰明的懶人統(tǒng)治的,任何時(shí)期,總有一群聰明的懶人想要奴隸別人。在奴隸制社會(huì),聰明的懶人奴役的是真正的人,而人是無法不吃、不喝、不睡覺一直工作的,但是計(jì)算機(jī)作為一臺(tái)機(jī)器是可以做到的,所以把計(jì)算機(jī)當(dāng)奴隸是上上之選。
3. 計(jì)算機(jī)的五大組成部分
計(jì)算機(jī)有五大組成部分,既然計(jì)算機(jī)是人的奴隸,那么計(jì)算機(jī)設(shè)計(jì)核心肯定也是在模仿真正的人,所以我們完全可以把計(jì)算機(jī)的五大組件比喻成人類的各種器官
- 控制器
控制器是計(jì)算機(jī)的指揮系統(tǒng),用來控制計(jì)算機(jī)其他組件的運(yùn)行,相當(dāng)于人類的大腦 - 運(yùn)算器
運(yùn)算器是計(jì)算機(jī)的運(yùn)算功能,用來做算術(shù)運(yùn)算和邏輯運(yùn)算,相當(dāng)于人腦。
ps:控制器+運(yùn)算器=CPU,cpu相當(dāng)于人的大腦 - 存儲(chǔ)器
存儲(chǔ)器是計(jì)算機(jī)的記憶功能,用來存取數(shù)據(jù)。
存儲(chǔ)器主要分為內(nèi)存與外存:
? 內(nèi)存相當(dāng)于人的短期記憶。斷電數(shù)據(jù)丟失
? 外存(如磁盤),相當(dāng)于記事的本子,斷電數(shù)據(jù)不會(huì)丟失,是用來永久保存數(shù)據(jù)的
? ps:內(nèi)存的存取速度要遠(yuǎn)遠(yuǎn)高于外存 - 輸入設(shè)備input
輸入設(shè)備是計(jì)算接收外界輸入數(shù)據(jù)的工具,如鍵盤、鼠標(biāo),相當(dāng)于人的眼睛或耳朵。 - 輸出設(shè)備output
輸出設(shè)備是計(jì)算機(jī)向外輸出數(shù)據(jù)的工具,如顯示器、打印機(jī),相當(dāng)于人說的話,寫出的文章。
ps:存儲(chǔ)器如內(nèi)存、磁盤等既是輸入設(shè)備又是輸出設(shè)備,統(tǒng)稱為IO設(shè)備
一個(gè)非常重要的基礎(chǔ)知識(shí):與運(yùn)行程序相關(guān)的三大核心硬件
我們編寫的程序一定是要運(yùn)行于計(jì)算機(jī)硬件之上,而站在硬件的角度,與運(yùn)行程序有關(guān)的三大核心硬件為CPU、內(nèi)存、硬盤。
程序最先是存放于硬盤中的,程序的運(yùn)行是先從硬盤把代碼加載到內(nèi)存中,然后cpu是從內(nèi)存中讀取指令運(yùn)行。
4. 操作系統(tǒng)概述
-
操作系統(tǒng)的由來
? 大前提:我們編程目的就是為了奴役計(jì)算機(jī),讓計(jì)算機(jī)硬件自發(fā)地運(yùn)行起來,然而硬件畢竟是”死的“,硬件的運(yùn)行都是由軟件支配。倘若我們要開發(fā)一個(gè)應(yīng)用程序,比如暴風(fēng)音影,該軟件的一個(gè)核心業(yè)務(wù)就是播放視頻,開發(fā)者若要編寫程序完成播放視頻這個(gè)業(yè)務(wù)邏輯,必先涉及到底層硬件硬盤的基本運(yùn)作(視頻文件都是先存放于硬盤中),這意味著開發(fā)者在編寫業(yè)務(wù)邏輯代碼之前,必須先編寫一個(gè)控制硬盤基本運(yùn)行的控制程序,然而這僅僅只是一個(gè)開始,事實(shí)上,在編寫應(yīng)用程序的業(yè)務(wù)邏輯前,需要開發(fā)者編寫出一套完整的控制程序用來控制所有硬件的基本運(yùn)行(這要求開發(fā)者需要詳細(xì)了解計(jì)算機(jī)硬件的各種控制細(xì)節(jié),例如我們必須把CPU里面所有指令集都掌握一遍),如此,所有的開發(fā)者在開發(fā)程序時(shí)都必須依次開發(fā)兩種:
1、編寫一套完整的的控制程序,用來控制硬件的基本運(yùn)行,以及把復(fù)雜的硬件的操作封裝成簡(jiǎn)單的接口
2、基于控制程序的接口開發(fā)包含一系列業(yè)務(wù)邏輯的程序,為了與控制程序區(qū)分,可以稱為應(yīng)用程序,以ATM這款應(yīng)用程序?yàn)槔?#xff0c;業(yè)務(wù)邏輯有提款、轉(zhuǎn)賬、查詢余額等
? 綜上,對(duì)于不同公司的開發(fā)者來說,應(yīng)用程序的業(yè)務(wù)邏輯各不相同,但硬件的控制程序都大致相同,為了避免所有程序員做重復(fù)勞動(dòng),以及不用再耗費(fèi)精力去了解所有硬件的運(yùn)行細(xì)節(jié),有公司專門跳出來承擔(dān)起控制程序的開發(fā)任務(wù),這里所說的控制程序指的就是操作系統(tǒng)。
? 操作系統(tǒng)的功能就是幫我們把復(fù)雜的硬件的控制封裝成簡(jiǎn)單的接口,對(duì)于開發(fā)應(yīng)用程序來說只需要調(diào)用操作系統(tǒng)提供給我們的接口即可 -
系統(tǒng)軟件與應(yīng)用軟件
硬件以上運(yùn)行的都是軟件,而軟件分為兩類: - 應(yīng)用軟件(例如qq、word、暴風(fēng)影音、酷我音樂、pycharm等)
- 操作系統(tǒng),操作系統(tǒng)應(yīng)用軟件與硬件之間的一個(gè)橋梁,是協(xié)調(diào)、管理、控制計(jì)算機(jī)硬件與應(yīng)用軟件資源的控制程序。
-
計(jì)算機(jī)系統(tǒng)三層結(jié)構(gòu)
綜上,我們開發(fā)應(yīng)用程序本質(zhì)是在控制硬件,但是我們直接打交道的是操作系統(tǒng),應(yīng)用程序都是通過操作系統(tǒng)來間接地操作硬件的,所以一套完整的計(jì)算機(jī)系統(tǒng)分為三層,如下
-
平臺(tái)
應(yīng)用程序都是運(yùn)行于操作系統(tǒng)之上,而操作系統(tǒng)則是運(yùn)行于硬件之上的,所以承載應(yīng)用程序的是一臺(tái)運(yùn)行有操作系統(tǒng)的計(jì)算機(jī),稱之為應(yīng)用程序的運(yùn)行平臺(tái),即:硬件 + 操作系統(tǒng) == 平臺(tái)
常見的平臺(tái)有:windows系統(tǒng)+某款硬件、linux系統(tǒng)+某款硬件、ubuntu+某款硬件等,我們?cè)陂_發(fā)應(yīng)用程序時(shí)就需要考慮到應(yīng)用程序的跨平臺(tái)性,如果能開發(fā)出一款可以在任意平臺(tái)運(yùn)行的應(yīng)用程序,那對(duì)于開發(fā)者來說真是極大的福音。而決定應(yīng)用軟件的跨平臺(tái)性的關(guān)鍵因素往往是編程語言的選擇,python恰好是一款跨平臺(tái)性語言,這也是我們學(xué)習(xí)它的原因之一。
二、CPU工作原理
CPU工作流程
CPU的核心工作在于進(jìn)行運(yùn)算和判斷,那么要被運(yùn)算與判斷的數(shù)據(jù)是從哪里來的?
CPU讀取的數(shù)據(jù)都是從主存儲(chǔ)器(內(nèi)存)來的,主存儲(chǔ)器內(nèi)的數(shù)據(jù)則是從輸入單元所傳輸進(jìn)來!而CPU處理完畢的數(shù)據(jù)也必須先寫回主存儲(chǔ)器中,最后數(shù)據(jù)才從主存儲(chǔ)器傳輸?shù)捷敵鰡卧?br /> 所以計(jì)算機(jī)五大組成部分的基本工作流程就是:輸入單元=>主存儲(chǔ)器=>CPU=>主存儲(chǔ)器=>輸出單元
而CPU會(huì)從內(nèi)存中取指令->解碼->執(zhí)行,然后再取指->解碼->執(zhí)行下一條指令,周而復(fù)始,直至整個(gè)程序被執(zhí)行完成。
總結(jié)CPU的大致工作流程就是:獲取指令—>解碼—>執(zhí)行,詳細(xì)見下圖
CPU指令集
cpu是計(jì)算機(jī)的大腦,大腦里集成了一系列具體控制身體其他器官做事的指令集,所以站在純硬件角度去看,計(jì)算機(jī)所有其他組件都由cpu發(fā)出的指令控制。
我們程序員編程的目的是為了控制計(jì)算機(jī)硬件工作,程序員的代碼都會(huì)轉(zhuǎn)換成cpu的指令集才能去控制其他硬件,所以程序員是通過直接控制cpu來達(dá)到間接控制其他硬件的目的,具體流程如下:
內(nèi)存中存放的是程序員的代碼/指令,cpu從內(nèi)存中取出這些指令后需要翻譯成自己的指令去執(zhí)行,即cpu在出場(chǎng)時(shí)內(nèi)部就集成了一系列的指令集(指令集是cpu的靈魂)。
? 在超大規(guī)模集成電路構(gòu)成的微型計(jì)算機(jī)中,往往將CPU制成一塊具有特定功能的芯片,稱為微處理器,芯片里邊有編寫好的微指令集,我們?cè)谥鳈C(jī)上的所有操作或者說任何軟件的執(zhí)行最終都要轉(zhuǎn)化成cpu的指令去執(zhí)行,如輸入輸出,閱讀,視頻,上網(wǎng)等這些都要參考CPU是否內(nèi)置有相關(guān)微指令集才行,如果沒有,那么CPU無法處理這些操作。
? 不同的CPU指令集不同對(duì)應(yīng)的功能也不同,這就好比不同的人腦,對(duì)于大多數(shù)人類來說,人腦的結(jié)構(gòu)一樣,但是大家的智商都有差別。
那么目前世界上的主流CPU由那些呢?我們筆記本上貼的Intel、AMD是怎么回事呢?
1、CPU的分類(了解)
我們已經(jīng)知道CPU內(nèi)部是含有微指令集的,我們所使用的的軟件都要經(jīng)過CPU內(nèi)部的微指令集來完成才行。這些指令集的設(shè)計(jì)主要又被分為兩種設(shè)計(jì)理念,這就是目前世界上常見到的兩種主要的CPU種類:分別是精簡(jiǎn)指令集(RISC)與復(fù)雜指令集(CISC)系統(tǒng)。下面我們就來談?wù)勥@兩種不同CPU種類的差異!
-
精簡(jiǎn)指令集(了解)
精簡(jiǎn)指令集(Reduced Instruction Set Computing,RISC):這種CPU的設(shè)計(jì)中,微指令集較為精簡(jiǎn),每個(gè)指令的運(yùn)行時(shí)間都很短,完成的動(dòng)作也很單純,指令的執(zhí)行效能較佳;但是若要做復(fù)雜的事情,就要由多個(gè)指令來完成。常見的RISC指令集CPU主要例如Sun公司的SPARC系列、IBM公司的Power Architecture(包括PowerPC)系列、與ARM系列等。【注:Sun已經(jīng)被Oracle收購;】
SPARC架構(gòu)的計(jì)算機(jī)常用于學(xué)術(shù)領(lǐng)域的大型工作站中,包括銀行金融體系的主服務(wù)器也都有這類的計(jì)算機(jī)架構(gòu);
PowerPC架構(gòu)的應(yīng)用,如Sony出產(chǎn)的Play Station 3(PS3)使用的就是該架構(gòu)的Cell處理器。
ARM是世界上使用范圍最廣的CPU了,常用的各廠商的手機(jī)、PDA、導(dǎo)航系統(tǒng)、網(wǎng)絡(luò)設(shè)備等,幾乎都用該架構(gòu)的CPU。 -
復(fù)雜指令集
復(fù)雜指令集(Complex Instruction Set Computer,CISC)與RISC不同,在CISC的微指令集中,每個(gè)小指令可以執(zhí)行一些較低階的硬件操作,指令數(shù)目多而且復(fù)雜,每條指令的長(zhǎng)度并不相同。因此指令執(zhí)行較為復(fù)雜所以每條指令花費(fèi)的時(shí)間較長(zhǎng),但每條個(gè)別指令可以處理的工作較為豐富。常見的CISC微指令集CPU主要有AMD、Intel、VIA等的x86架構(gòu)的CPU。 -
總結(jié):
CPU按照指令集可以分為精簡(jiǎn)指令集CPU和復(fù)雜指令集CPU兩種,區(qū)別在于前者的指令集精簡(jiǎn),每個(gè)指令的運(yùn)行時(shí)間都很短,完成的動(dòng)作也很單純,指令的執(zhí)行效能較佳;但是若要做復(fù)雜的事情,就要由多個(gè)指令來完成。后者的指令集每個(gè)小指令可以執(zhí)行一些較低階的硬件操作,指令數(shù)目多而且復(fù)雜,每條指令的長(zhǎng)度并不相同。因?yàn)橹噶顖?zhí)行較為復(fù)雜所以每條指令花費(fèi)的時(shí)間較長(zhǎng),但每條個(gè)別指令可以處理的工作較為豐富。
2、x86架構(gòu)64位
- x86架構(gòu)
x86是針對(duì)cpu的型號(hào)或者說架構(gòu)的一種統(tǒng)稱,詳細(xì)地講,最早的那顆Intel發(fā)明出來的CPU代號(hào)稱為8086,后來在8086的基礎(chǔ)上又開發(fā)出了80285、80386…,因此這種架構(gòu)的CPU就被統(tǒng)稱為x86架構(gòu)了。
由于AMD、Intel、VIA所開發(fā)出來的x86架構(gòu)CPU被大量使用于個(gè)人計(jì)算機(jī)上面,因此,個(gè)人計(jì)算機(jī)常被稱為x86架構(gòu)的計(jì)算機(jī)!
程序員開發(fā)出的軟件最終都要翻譯成cpu的指令集才能運(yùn)行,因此軟件的版本必須與cpu的架構(gòu)契合,舉個(gè)例子,我們?cè)贛ySQL官網(wǎng)下載軟件MySQL時(shí)名字為:
Windows(x86,32-bit),ZIP Archive
(mysql-5.7.20-win32.zip)
我們發(fā)現(xiàn)名字中有x86,這其實(shí)就是告訴我們:該軟件應(yīng)該運(yùn)行在x86架構(gòu)的計(jì)算機(jī)上。 - 64位
cpu的位數(shù)指的是cpu一次性能從內(nèi)存中取出多少位二進(jìn)制指令,64bit指的是一次性能從內(nèi)存中取出64位二進(jìn)制指令。
在2003年以前由Intel所開發(fā)的x86架構(gòu)CPU由8位升級(jí)到16、32位,后來AMD依此架構(gòu)修改新一代的CPU為64位,到現(xiàn)在,個(gè)人計(jì)算機(jī)CPU通常都是x86_64的架構(gòu)。
cpu具有向下兼容性,指的是64位的cpu既可以運(yùn)行64位的軟件,也可以運(yùn)行32位的軟件,而32位的cpu只能運(yùn)行32位的軟件。這其實(shí)很好理解,如果把cpu的位數(shù)當(dāng)成是車道的寬,而內(nèi)存中軟件的指令當(dāng)做是待通行的車輛,寬64的車道每次肯定既可以通行64輛車,也可以通信32輛車,而寬32的車道每次卻只能通行32輛車
3、CPU歷史(了解)
微處理器由一片或少數(shù)幾片大規(guī)模集成電路組成的中央處理器。這些電路執(zhí)行控制部件和算術(shù)邏輯部件的功能。微處理器能完成取指令、執(zhí)行指令,以及與外界存儲(chǔ)器和邏輯部件交換信息等操作,是微型計(jì)算機(jī)的運(yùn)算控制部分。它可與存儲(chǔ)器和外圍電路芯片組成微型計(jì)算機(jī)。
計(jì)算機(jī)的發(fā)展主要表現(xiàn)在其核心部件——微處理器的發(fā)展上,每當(dāng)一款新型的微處理器出現(xiàn)時(shí),就會(huì)帶動(dòng)計(jì)算機(jī)系統(tǒng)的其他部件的相應(yīng)發(fā)展,如計(jì)算機(jī)體系結(jié)構(gòu)的進(jìn)一步優(yōu)化,存儲(chǔ)器存取容量的不斷增大、存取速度的不斷提高,外圍設(shè)備的不斷改進(jìn)以及新設(shè)備的不斷出現(xiàn)等。根據(jù)微處理器的字長(zhǎng)和功能,可將其發(fā)展劃分為以下幾個(gè)階段。
第1階段(1971——1973年)是4位和8位低檔微處理器時(shí)代,通常稱為第1代。
第2階段(1974——1977年)是8位中高檔微處理器時(shí)代,通常稱為第2代。
第3階段(1978——1984年)是16位微處理器時(shí)代,通常稱為第3代。
第4階段(1985——1992年)是32位微處理器時(shí)代,又稱為第4代。
第5階段(1993-2005年)是奔騰(pentium)系列微處理器時(shí)代,通常稱為第5代。
第6階段(2005年至今)是酷睿(core)系列微處理器時(shí)代,通常稱為第6代。“酷睿”是一款領(lǐng)先節(jié)能的新型微架構(gòu),設(shè)計(jì)的出發(fā)點(diǎn)是提供卓然出眾的性能和能效,提高每瓦特性能,也就是所謂的能效比。
4、 運(yùn)算器與控制器(了解)
常將運(yùn)算器和控制器合稱為中央處理器(Central Processing Unit,CPU)。
其中運(yùn)算器用來主要負(fù)責(zé)程序運(yùn)算與邏輯判斷,控制器則主要協(xié)調(diào)各組件和各單元的工作,所以CPU的工作主要在于管理和運(yùn)算。可以說計(jì)算機(jī)的大腦就是CPU
運(yùn)算器
運(yùn)算器是對(duì)信息進(jìn)行處理和運(yùn)算的部件。經(jīng)常進(jìn)行的運(yùn)算是算術(shù)運(yùn)算和邏輯運(yùn)算,所以運(yùn)算器又可稱為算術(shù)邏輯運(yùn)算部件(Arithmetic and Logical,ALU)。
運(yùn)算器的核心是加法器。運(yùn)算器中還有若干個(gè)通用寄存器或累加寄存器,用來暫存操作數(shù)并存放運(yùn)算結(jié)果。寄存器的存取速度比存儲(chǔ)器的存放速度快很多。
控制器
控制器是整個(gè)計(jì)算機(jī)的指揮中心,它的主要功能是按照人們預(yù)先確定的操作步驟,控制整個(gè)計(jì)算機(jī)的各部件有條不紊的自動(dòng)工作。
控制器從主存中逐條地讀取出指令進(jìn)行分析,根據(jù)指令的不同來安排操作順序,向各部件發(fā)出相應(yīng)的操作信號(hào),控制它們執(zhí)行指令所規(guī)定的任務(wù)。控制器中包括一些專用的寄存器。
5、cpu工作的兩種狀態(tài)內(nèi)核態(tài)與用戶態(tài)
內(nèi)核態(tài):運(yùn)行的程序是操作系統(tǒng),可以操作計(jì)算機(jī)硬件
用戶態(tài):運(yùn)行的程序是應(yīng)用程序,不可以直接操作計(jì)算機(jī)硬件
應(yīng)用程序的運(yùn)行必然涉及到計(jì)算機(jī)硬件的操作,所以計(jì)算機(jī)在工作時(shí)候頻繁發(fā)生內(nèi)核態(tài)與用戶態(tài)的切換
6、多線程和多核芯片
moore定律指出,芯片中的晶體管數(shù)量每18個(gè)月翻一倍,隨著晶體管數(shù)量的增多,更強(qiáng)大的功能成為了可能,如
第一步增強(qiáng):在cpu芯片中加入更大的緩存,一級(jí)緩存L1,用和cpu相同的材質(zhì)制成,cpu訪問它沒有時(shí)延
第二步增強(qiáng):一個(gè)cpu中的處理邏輯增多,intel公司首次提出,稱為多線程(multithreading)或超線程(hyperthreading),對(duì)用戶來說一個(gè)有兩個(gè)線程的cpu就相當(dāng)于兩個(gè)cpu,我們后面要學(xué)習(xí)的進(jìn)程和線程的知識(shí)就起源于這里,進(jìn)程是資源單位而線程才是cpu的執(zhí)行單位。
多線程運(yùn)行cpu保持兩個(gè)不同的線程狀態(tài),可以在納秒級(jí)的時(shí)間內(nèi)來回切換,速度快到你看到的結(jié)果是并發(fā)的,偽并行的,然而多線程不提供真正的并行處理,一個(gè)cpu同一時(shí)刻只能處理一個(gè)進(jìn)程(一個(gè)進(jìn)程中至少一個(gè)線程)
第三步增強(qiáng):除了多線程,還出現(xiàn)了包含2個(gè)或者4個(gè)完整處理器的cpu芯片,如下圖。要使用這類多核芯片肯定需要有多處理操作系統(tǒng)
7、 存儲(chǔ)器
-
寄存器即L1緩存:
用與cpu相同材質(zhì)制造,與cpu一樣快,因而cpu訪問它無時(shí)延,典型容量是:在32位cpu中為3232,在64位cpu中為6464,在兩種情況下容量均<1KB。 -
高速緩存即L2緩存:
主要由硬件控制高速緩存的存取,內(nèi)存中有高速緩存行按照064字節(jié)為行0,64127為行1。。。最常用的高速緩存行放置在cpu內(nèi)部或者非常接近c(diǎn)pu的高速緩存中。當(dāng)某個(gè)程序需要讀一個(gè)存儲(chǔ)字時(shí),高速緩存硬件檢查所需要的高速緩存行是否在高速緩存中。如果是,則稱為高速緩存命中,緩存滿足了請(qǐng)求,就不需要通過總線把訪問請(qǐng)求送往主存(內(nèi)存),這畢竟是慢的。高速緩存的命中通常需要兩個(gè)時(shí)鐘周期。高速緩存為命中,就必須訪問內(nèi)存,這需要付出大量的時(shí)間代價(jià)。由于高速緩存價(jià)格昂貴,所以其大小有限,有些機(jī)器具有兩級(jí)甚至三級(jí)高速緩存,每一級(jí)高速緩存比前一級(jí)慢但是容易大。
緩存在計(jì)算機(jī)科學(xué)的許多領(lǐng)域中起著重要的作用,并不僅僅只是RAM(隨機(jī)存取存儲(chǔ)器)的緩存行。只要存在大量的資源可以劃分為小的部分,那么這些資源中的某些部分肯定會(huì)比其他部分更頻發(fā)地得到使用,此時(shí)用緩存可以帶來性能上的提升。一個(gè)典型的例子就是操作系統(tǒng)一直在使用緩存,比如,多數(shù)操作系統(tǒng)在內(nèi)存中保留頻繁使用的文件(的一部分),以避免從磁盤中重復(fù)地調(diào)用這些文件,類似的/root/a/b/c/d/e/f/a.txt的長(zhǎng)路徑名轉(zhuǎn)換成該文件所在的磁盤地址的結(jié)果然后放入緩存,可以避免重復(fù)尋找地址,還有一個(gè)web頁面的url地址轉(zhuǎn)換為網(wǎng)絡(luò)地址(IP)地址后,這個(gè)轉(zhuǎn)換結(jié)果也可以緩存起來供將來使用。
緩存是一個(gè)好方法,在現(xiàn)代cpu中設(shè)計(jì)了兩個(gè)緩存,再看4.1中的兩種cpu設(shè)計(jì)圖。第一級(jí)緩存稱為L(zhǎng)1總是在CPU中,通常用來將已經(jīng)解碼的指令調(diào)入cpu的執(zhí)行引擎,對(duì)那些頻繁使用的數(shù)據(jù)自,多少芯片還會(huì)按照第二L1緩存 。。。另外往往設(shè)計(jì)有二級(jí)緩存L2,用來存放近來經(jīng)常使用的內(nèi)存字。L1與L2的差別在于對(duì)cpu對(duì)L1的訪問無時(shí)間延遲,而對(duì)L2的訪問則有1-2個(gè)時(shí)鐘周期(即1-2ns)的延遲。
內(nèi)存:
RAM: 主存通常稱為隨機(jī)訪問存儲(chǔ)RAM,就是我們通常所說的內(nèi)存,容量一直在不斷攀升,所有不能再高速緩存中找到的,都會(huì)到主存中找,主存是易失性存儲(chǔ),斷電后數(shù)據(jù)全部消失
ROM: 除了主存RAM之外,許多計(jì)算機(jī)已經(jīng)在使用少量的非易失性隨機(jī)訪問存儲(chǔ)如ROM(Read Only Memory,ROM),在電源切斷之后,非易失性存儲(chǔ)的內(nèi)容并不會(huì)丟失,ROM只讀存儲(chǔ)器在工廠中就被編程完畢,然后再也不能修改。ROM速度快且便宜,在有些計(jì)算機(jī)中,用于啟動(dòng)計(jì)算機(jī)的引導(dǎo)加載模塊就存放在ROM中,另外一些I/O卡也采用ROM處理底層設(shè)備的控制。
EEPROM(Electrically Erasable PROM,電可擦除可編程ROM)和閃存(flash memory)也是非易失性的,但是與ROM相反,他們可以擦除和重寫。不過重寫時(shí)花費(fèi)的時(shí)間比寫入RAM要多。在便攜式電子設(shè)備中中,閃存通常作為存儲(chǔ)媒介。閃存是數(shù)碼相機(jī)中的膠卷,是便攜式音譯播放器的磁盤,還應(yīng)用于固態(tài)硬盤。閃存在速度上介于RAM和磁盤之間,但與磁盤不同的是,閃存擦除的次數(shù)過多,就被磨損了。
CMOS: 還有一類存儲(chǔ)器就是CMOS,它是易失性的,許多計(jì)算機(jī)利用CMOS存儲(chǔ)器來保持當(dāng)前時(shí)間和日期。CMOS存儲(chǔ)器和遞增時(shí)間的電路由一小塊電池驅(qū)動(dòng),所以,即使計(jì)算機(jī)沒有加電,時(shí)間也仍然可以正確地更新,除此之外CMOS還可以保存配置的參數(shù),比如,哪一個(gè)是啟動(dòng)磁盤等,之所以采用CMOS是因?yàn)樗碾姺浅I?#xff0c;一塊工廠原裝電池往往能使用若干年,但是當(dāng)電池失效時(shí),相關(guān)的配置和時(shí)間等都將丟失
# TB,PB, Eb, Zb, YB 1B= 8bit 1KB=2(10)B=1024B; 括號(hào)中的數(shù)字為2的指數(shù)(即多少次方) 1MB=2(10)KB=1024KB=2(20)B; 1GB=2(10)MB=1024MB=2(30)B。 1TB=2(10) GB=1024GB=2(40)B 1PB=2(10) TB=1024TB=2(50)B 1EB=2(10) PB=1024PB=2(60)B 1ZB=2(10) EB=1024EB=2(70)B 1YB=2(10) ZB=1024ZB=2(80)B 1Byte相當(dāng)於一個(gè)英文字母 Kilobyte(KB)=1024B相當(dāng)於一則短篇故事的內(nèi)容。 Megabyte(MB)=l024KB相當(dāng)於一則短篇小說的文字內(nèi)容。 Gigabyte(GB)=1024MB相當(dāng)於貝多芬第五樂章交響曲的樂譜內(nèi)容。 Terabyte(TB)=1024GB相當(dāng)於一家大型醫(yī)院中所有的X光圖片資訊量。 Petabyte(PB)=l024TB相當(dāng)於50%的全美學(xué)術(shù)研究圖書館藏書資訊內(nèi)容。 Exabyte (EB)=1024PB;5EB相當(dāng)於至今全世界人類所講過的話語。 Zettabyte(ZB)=1024EB如同全世界海灘上的沙子數(shù)量總和。 Yottabyte(YB)=1024ZB相當(dāng)於7000位人類體內(nèi)的微細(xì)胞總和。8、虛擬內(nèi)存:
許多計(jì)算機(jī)支持虛擬內(nèi)存機(jī)制,該機(jī)制使計(jì)算機(jī)可以運(yùn)行大于物理內(nèi)存的程序,方法是將正在使用的程序放入內(nèi)存取執(zhí)行,而暫時(shí)不需要執(zhí)行的程序放到磁盤的某塊地方,這塊地方成為虛擬內(nèi)存,在linux中成為swap,這種機(jī)制的核心在于快速地映射內(nèi)存地址,由cpu中的一個(gè)部件負(fù)責(zé),成為存儲(chǔ)器管理單元(Memory Management Unit MMU)
PS:從一個(gè)程序切換到另外一個(gè)程序,成為上下文切換(context switch),緩存和MMU的出現(xiàn)提升了系統(tǒng)的性能,尤其是上下文切換
啟動(dòng)計(jì)算機(jī)
在計(jì)算機(jī)的主板上有一個(gè)基本的輸入輸出程序(Basic Input Output system)
BIOS就相當(dāng)于一個(gè)小的操作系統(tǒng),它有底層的I/O軟件,包括讀鍵盤,寫屏幕,進(jìn)行磁盤I/O,該程序存放于一非易失性閃存RAM中。
啟動(dòng)流程:
1.計(jì)算機(jī)加電
2.BIOS開始運(yùn)行,檢測(cè)硬件:cpu、內(nèi)存、硬盤等
3.BIOS讀取CMOS存儲(chǔ)器中的參數(shù),選擇啟動(dòng)設(shè)備
4.從啟動(dòng)設(shè)備上讀取第一個(gè)扇區(qū)的內(nèi)容(MBR主引導(dǎo)記錄512字節(jié),前446為引導(dǎo)信息,后64為分區(qū)信息,最后兩個(gè)為標(biāo)志位)
5.根據(jù)分區(qū)信息讀入bootloader啟動(dòng)裝載模塊,啟動(dòng)操作系統(tǒng)
6.然后操作系統(tǒng)詢問BIOS,以獲得配置信息。對(duì)于每種設(shè)備,系統(tǒng)會(huì)檢查其設(shè)備驅(qū)動(dòng)程序是否存在,如果沒有,系統(tǒng)則會(huì)要求用戶按照設(shè)備驅(qū)動(dòng)程序。一旦有了全部的設(shè)備驅(qū)動(dòng)程序,操作系統(tǒng)就將它們調(diào)入內(nèi)核。然后初始有關(guān)的表格(如進(jìn)程表),穿件需要的進(jìn)程,并在每個(gè)終端上啟動(dòng)登錄程序或GUI
linux系統(tǒng)centos7啟動(dòng)順序:https://www.cnblogs.com/linhaifeng/articles/13274099.html
總結(jié)
- 上一篇: 排队论
- 下一篇: 冰河木马实验(V8.4)