計算機組成原理

計算機基礎

1.1 編程語言的做用及與操做系統和硬件的關係

1.1.1 編程語言的做用

編程語言,是事物與事物的溝通介質。想與計算機工做,必須與其溝通,因此須要學習編程語言linux

1.1.2 操做系統和硬件的關係

一套完整的計算機系統分爲:計算機硬件,軟件系統(程序員開發的就是軟件),以下圖。程序員

 

操做系統和硬件的關係以下圖:web

 

操做系統就是處於用戶與計算機系統硬件之間的用於傳遞信息的系統程序軟件。數據庫

操做系統一方面接管了主板對於系統資源的管理,加入了本身的中間層——驅動程序,另外一方面又充分發揮了人機交互的接口——gui界面,成爲了計算機必不可少的組成部分。編程

1.1.2.1 硬件介紹

CPU(中央處理器)---------負責運算、控制緩存

內存---------負責臨時存儲網絡

硬盤---------負責永久存儲編程語言

輸入設備----------負責接收外部的信息傳給CPU性能

輸出設備----------負責通過處理後輸出的結果學習

 

以上全部的硬件設備都是經過總線鏈接,以下圖所示

 

 

1、CPU與寄存器
一、寄存器

因訪問內存以獲得指令或數據的時間比cpu執行指令花費的時間要長得多,因此,全部CPU內部都有一些用來保存關鍵變量和臨時數據的寄存器

①分類

一、通用寄存器

二、程序計數器

三、堆棧指針

四、程序狀態字寄存器(Program Status Word,PSW):包含了條碼位(由比較指令設置)、CPU優先級、模式(用戶態或內核態),以及各類其餘控制位。用戶一般讀入整個PSW,可是隻對其中少許的字段寫入。在系統調用和I/O中,PSW很是很是很是很是很是很是重要

二、CPU

計算機的大腦就是CPU,它從內存中取指令->解碼->執行,而後再取指令->解碼->執行下一條指令,周而復始,直至整個程序被執行完成。

1)、CPU的處理流程

1.最開始取值、解碼、執行這三個過程是同時進行的,這意味着任何一個過程完成都須要等待其他兩個過程執行完畢,時間浪費

2.後來被設計成了流水線式的設計,即執行指令n時,能夠對指令n+1解碼,而且能夠讀取指令n+2,徹底是一套流水線。

 

 

3.超變量cpu,比流水線更加先進,有多個執行單元,能夠同時負責不一樣的事情,好比看片的同時,聽歌,打遊戲。

兩個或更多的指令被同時取出、解碼並裝入一個保持緩衝區中,直至它們都執行完畢。只有有一個執行單元空閒,就檢查保持緩衝區是否還有可處理的指令

 

 

這種設計存在一種缺陷,即程序的指令常常不按照順序執行,在多數狀況下,硬件負責保證這種運算結果與順序執行的指令時的結果相同。

指令-->內存,而後CPU讀取內存並計算,返還值給內存,以後寫入硬盤

2)、CPU的2種工做模式-----內核態和用戶態

一般,PSW中有一個二進制位控制這兩種模式。CPU的2種工做狀態是不斷切換的(ps: 0 1)

  內核態:當cpu在內核態運行時,cpu能夠執行指令集中全部的指令,很明顯,全部的指令中包含了使用硬件的全部功能,(操做系統在內核態下運行,從而能夠訪問整個硬件)

  用戶態:用戶程序在用戶態下運行,僅僅只能執行cpu整個指令集的一個子集,該子集中不包含操做硬件功能的部分,所以,通常狀況下,在用戶態中有關I/O和內存保護(操做系統佔用的內存是受保護的,不能被別的程序佔用),固然,在用戶態下,將PSW中的模式設置成內核態也是禁止的。

簡單來講:

內核態:獲取全部CPU指令集

用戶態:獲取部分CPU指令集(子集),不能操做底層硬件

內核態與用戶態切換  

  用戶態下工做的軟件不能操做硬件,可是咱們的軟件好比暴風影音,必定會有操做硬件的需求,好比從磁盤上讀一個電影文件,那就必須經歷從用戶態切換到內核態的過程,爲此,用戶程序必須使用系統調用(system call),系統調用陷入內核並調用操做系統,TRAP指令把用戶態切換成內核態,並啓用操做系統從而得到服務。

  把的系統調用當作一個特別的的過程調用指令就能夠了,該指令具備從用戶態切換到內核態的特別能力。

 

總結:

一、CPU同一時間只能作一件事

二、CPU會從內存中取出指令而後解碼執行

三、內核態與用戶態的概念及轉換關係

2、存儲器

計算機中第二重要的就是存儲了,全部人都意淫着存儲:速度快(這樣cpu的等待存儲器的延遲就下降了)+容量大+價錢便宜。而後同時兼備三者是不可能的,因此有了以下的不一樣的處理方式

 

 

存儲器系統採用如上圖的分層結構,頂層的存儲器速度較高,容量較小,與底層的存儲器相比每位的成本較高,其差異每每是十億數量級的

一、寄存器即L1緩存:

用與cpu相同材質製造,與cpu同樣快,於是cpu訪問它無時延,典型容量是:在32位cpu中爲32*32,在64位cpu中爲64*64,在兩種狀況下容量均<1KB。

二、高速緩存即L2緩存:

主要由硬件控制高速緩存的存取,內存中有高速緩存行按照0~64字節爲行0,64~127爲行1。最經常使用的高速緩存行放置在cpu內部或者很是接近cpu的高速緩存中。當某個程序須要讀一個存儲字時,高速緩存硬件檢查所須要的高速緩存行是否在高速緩存中。若是是,則稱爲高速緩存命中,緩存知足了請求,就不須要經過總線把訪問請求送往主存(內存),這畢竟是慢的。高速緩存的命中一般須要兩個時鐘週期。高速緩存爲命中,就必須訪問內存,這須要付出大量的時間代價。因爲高速緩存價格昂貴,因此其大小有限,有些機器具備兩級甚至三級高速緩存,每一級高速緩存比前一級慢可是容易大。

  緩存在計算機科學的許多領域中起着重要的做用,並不只僅只是RAM(隨機存取存儲器)的緩存行。只要存在大量的資源能夠劃分爲小的部分,那麼這些資源中的某些部分確定會比其餘部分更頻發地獲得使用,此時用緩存能夠帶來性能上的提高。一個典型的例子就是操做系統一直在使用緩存,好比,多數操做系統在內存中保留頻繁使用的文件(的一部分),以免從磁盤中重複地調用這些文件,相似的/root/a/b/c/d/e/f/a.txt的長路徑名轉換成該文件所在的磁盤地址的結果真後放入緩存,能夠避免重複尋找地址,還有一個web頁面的url地址轉換爲網絡地址(IP)地址後,這個轉換結果也能夠緩存起來供未來使用。

  緩存是一個好方法,在現代cpu中設計了兩個緩存,再看4.1中的兩種cpu設計圖。第一級緩存稱爲L1老是在CPU中,一般用來將已經解碼的指令調入cpu的執行引擎,對那些頻繁使用的數據自,多少芯片還會按照第二L1緩存 。。。另外每每設計有二級緩存L2,用來存放近來常用的內存字。L1與L2的差異在於對cpu對L1的訪問無時間延遲,而對L2的訪問則有1-2個時鐘週期(即1-2ns)的延遲。

三、內存(主存):

存儲器系統的主力,主存一般稱爲隨機訪問存儲RAM,就是咱們一般所說的內存,容量一直在不斷攀升,全部不能再高速緩存中找到的,都會到主存中找,主存是易失性存儲,斷電後數據所有消失

除了主存RAM以外,許多計算機已經在使用少許的非易失性隨機訪問存儲如ROMRead Only Memory,ROM),在電源切斷以後,非易失性存儲的內容並不會丟失,ROM只讀存儲器在工廠中就被編程完畢,而後不再能修改。ROM速度快且便宜,在有些計算機中,用於啓動計算機的引導加載模塊就存放在ROM中,另一些I/O卡也採用ROM處理底層設備的控制。

EEPROM(Electrically Erasable PROM,電可擦除可編程ROM)和閃存(flash memory)也是非易失性的,可是與ROM相反,他們能夠擦除和重寫。不太重寫時花費的時間比寫入RAM要多。在便攜式電子設備中中,閃存一般做爲存儲媒介。閃存是數碼相機中的膠捲,是便攜式音譯播放器的磁盤,還應用於固態硬盤。閃存在速度上介於RAM和磁盤之間,但與磁盤不一樣的是,閃存擦除的次數過多,就被磨損了。

 

還有一類存儲器就是CMOS,它是易失性的,許多計算機利用CMOS存儲器來保持當前時間和日期。CMOS存儲器和遞增時間的電路由一小塊電池驅動,因此,即便計算機沒有加電,時間也仍然能夠正確地更新,除此以外CMOS還能夠保存配置的參數,好比,哪個是啓動磁盤等,之因此採用CMOS是由於它耗電很是少,一塊工廠原裝電池每每能使用若干年,可是當電池失效時,相關的配置和時間等都將丟失

3、磁盤
①磁盤結構

一、 磁道:盤片表面以盤片中心爲圓心,用於記錄數據的不一樣半徑的圓形磁化軌跡就稱爲磁道,道看起來是一個平面圓周形。

柱面:磁盤中,不一樣的盤片(或盤面)相同半徑的磁道軌跡從上倒下所組成的圓柱型區域就稱爲柱面,柱面看起來是一個圓柱體。

扇區:盤面由圓心向四周畫直線,不一樣的磁道被直線分紅許多扇形(弧形)的區域,每一個弧形的區域叫作扇區

二、 磁盤的容量計算

計算方法一:

存儲容量=磁頭數*磁道數(柱面數)*每磁道的扇區數*每扇區的字節數

計算方法二:

存儲容量=柱面大小(每磁道的扇區數*每扇區的字節數*磁頭數)*柱面數(磁道數)

一塊磁盤的磁道數和柱面數的數量永遠是相等的。

三、 磁盤讀寫數據的原理。

a.磁盤是按照柱面爲單位讀寫數據的,即先讀取同一個盤面的某一個磁道,讀完以後,若是數據沒有讀完,磁頭也不會切換其餘的磁道,而是選擇切換磁頭,讀取下一個盤面相同半徑的磁道,知道全部盤面相同半徑的磁道讀取完以後,若是數據尚未讀寫完成,纔會切換其餘不一樣半徑的磁道,這個切換磁道的過程稱爲尋道。

b.不一樣磁頭間的切換是電子切換,而不一樣磁道間的切換須要磁頭作徑向運動,這個徑向運動須要步進電機調節,這個動做是機械切換。

尋道:機械切換。

磁頭尋道是機械運動,切換磁頭是電子切換。

②平均尋道時間

機械手臂從一個柱面隨機移動到相鄰的柱面的時間成爲尋道時間,找到了磁道就找到了數據所在的那個圈圈,可是還不知道數據具體這個圓圈的具體位置

③平均延遲時間

機械臂到達正確的磁道以後還必須等待旋轉到數據所在的扇區下,這段時間成爲延遲時間

④虛擬內存與MMU

許多計算機支持虛擬內存機制,該機制使計算機能夠運行大於物理內存的程序,方法是將正在使用的程序放入內存取執行,而暫時不須要執行的程序放到磁盤的某塊地方,這塊地方成爲虛擬內存,在linux中成爲swap,這種機制的核心在於快速地映射內存地址,由cpu中的一個部件負責,成爲存儲器管理單元(Memory Management Unit MMU)

 

PS:從一個程序切換到另一個程序,成爲上下文切換(context switch),緩存和MMU的出現提高了系統的性能,尤爲是上下文切換

4、磁帶

在價錢相同的狀況下比硬盤擁有更高的存儲容量,雖然速度低於磁盤,可是因其大容量,在地震水災火災時可移動性強等特性,常被用來作備份。(常見於大型數據庫系統中)。

5、設備控制器和設備自己

I/O設備通常包括兩個部分:設備控制器和設備自己

控制器:是查找主板上的一塊芯片或一組芯片(硬盤,網卡,聲卡等都須要插到一個口上,這個口連的即是控制器),控制器負責控制鏈接的設備,它從操做系統接收命令,好比讀硬盤數據,而後就對硬盤設備發起讀請求來讀出內容。

 

控制器的功能:一般狀況下對設備的控制是很是複雜和具體的,控制器的任務就是爲操做系統屏蔽這些複雜而具體的工做,提供給操做系統一個簡單而清晰的接口。

 

設備自己:有相對簡單的接口且標準的,這樣你們均可覺得其編寫驅動程序了。要想調用設備,必須根據該接口編寫複雜而具體的程序,因而有了控制器提供設備驅動接口給操做系統。必須把設備驅動程序安裝到操做系統中。

6、總線與南橋北橋

隨着處理器和存儲器速度愈來愈快,單總線很難處理總線的交通流量了,因而出現了下圖的多總線模式,他們處理I/O設備及cpu到存儲器的速度都更快。

北橋即PCI橋:鏈接高速設備

南橋即ISA橋:鏈接慢速設備

 

 

1.1.2.2 操做系統的啓動流程

在計算機的主板上有一個基本的輸入輸出程序(Basic  Input Output system)

BIOS就至關於一個小的操做系統,它有底層的I/O軟件,包括讀鍵盤,寫屏幕,進行磁盤I/O,該程序存放於一非易失性閃存RAM中。

 

啓動流程

一、計算機加電

二、BIOS開始運行,檢測硬件:cpu、內存、硬盤等

三、BIOS讀取CMOS存儲器中的參數,選擇啓動設備

四、從啓動設備上讀取第一個扇區的內容(MBR主引導記錄512字節,前446爲引導信息,後64爲分區信息,最後兩個爲標誌位)

五、根據分區信息讀入bootloader啓動裝載模塊,啓動操做系統

六、而後操做系統詢問BIOS,以得到配置信息。對於每種設備,系統會檢查其設備驅動程序是否存在,若是沒有,系統則會要求用戶按照設備驅動程序。一旦有了所有的設備驅動程序,操做系統就將它們調入內核。而後初始有關的表格(如進程表),穿件須要的進程,並在每一個終端上啓動登陸程序或GUI

 

1.1.2.3 應用程序的啓動流程

一、用戶打開程序

 

二、系統把程序代碼段和數據段送入計算機的內存

 

三、控制器從存儲器中取指令

 

四、控制器分析,執行指令,爲取下一條指令作準備

 

五、取下一條指令,分析執行,如此重複操做,直至執行完程序中所有指令,即可得到所有指令

 

 

附錄:

二進制的換算方法例題:

二進制的換算

1010101

1*2^6+1*2^4+1*2^2+1*2^0=64+16+4+1=85

相關文章
相關標籤/搜索