1. 程式人生 > >計算機組成原理-1

計算機組成原理-1

程式語言的作用

語言作為人類交流的工具,它可以將我們腦海中的想法表達出來。程式語言的作用就是我們與計算機之間交流的語言。

作業系統和硬體的關係

作業系統說白了也就是軟體,它可以操控計算機硬體。如果我們只有硬體而沒有作業系統,是沒辦法使用的,程式用程式語言寫程式,最終開發出一款軟體,這些軟體必須執行在作業系統的基礎上。軟體通過作業系統對系統硬體進行控制,從而實現功能。

應用程式、作業系統和硬體的關係

應用程式通過作業系統實現對計算機硬體的控制。

CPU->記憶體->磁碟

CPU是中央處理,執行速度最快,記憶體執行速度次之,磁碟執行速度最慢。資料從作業系統寫入記憶體,記憶體可以向硬碟中寫入資料也可以調出資料,也可以向CPU傳送指令。
* CPU從記憶體中取指令-》解碼啊-》執行*

然後迴圈往復的過程。

cpu與暫存器

CPU向記憶體取指令操作時有一個時間差,因此需要一個執行速度介於兩者之間的暫存器,將地址存入暫存器中。 因訪問記憶體以得到指令或資料的時間比cpu執行指令花費的時間要長得多,所以,所有CPU內部都有一些用來儲存關鍵變數和臨時資料的暫存器,這樣通常在cpu的指令集中專門提供一些指令,用來將一個字(可以理解為資料)從記憶體調入暫存器,以及將一個字從暫存器存入記憶體。cpu其他的指令集可以把來自暫存器、記憶體的操作資料組合,或者用兩者產生一個結果,比如將兩個字相加並把結果存在暫存器或記憶體中。

暫存器分類

1 通用暫存器
儲存變數和臨時結果。
2 程式計數器
儲存了將要取出的下一條指令的記憶體地址。指令取 出後,程式計數器就被更新以便執行後期的指令。 3 堆疊指標
它指向記憶體中當前棧的頂端。
4 程式狀態字暫存器(PSW)
這個暫存器包含了條碼位、CPU優先順序、模式、以及各種其他控制位。

使用者態和核心態

使用者態只從CPU中讀出一部分指令集,並不能對計算機硬體進行全部的操作,從而限制了應用程式的功能。核心態是從CPU中讀出全部指令集,對計算機硬體進行全部的操作。
核心態和使用者態的切換方式為儲存在PSW中的二進位制位資訊所決定。
使用者態下工作的軟體不能操作硬體,但是我們的軟體比如暴風影音,一定會有操作硬體的需求,比如從磁碟上讀一個電影檔案,那就必須經歷從使用者態切換到核心態的過程,為此,使用者程式必須使用系統呼叫(system call),系統呼叫陷入核心並呼叫作業系統,TRAP指令把使用者態切換成核心態,並啟用作業系統從而獲得服務。

暫存器——L1快取

與CPU相同的材質。速度與CPU一樣快,因而CPU訪問它時無延遲,但是容量很小。
訪問時間為1ns,典型的容量小於1KB

快取記憶體——L2快取

主要由硬體控制快取記憶體的存取,記憶體中有快取記憶體行按照0~64位元組為行0,64~127為行1。最常用的快取記憶體行放置在cpu內部或者非常接近cpu的快取記憶體中。當某個程式需要讀一個儲存字時,快取記憶體硬體檢查所需要的快取記憶體行是否在快取記憶體中。如果是,則稱為快取記憶體命中,快取滿足了請求,就不需要通過匯流排把訪問請求送往主存(記憶體),這畢竟是慢的。快取記憶體的命中通常需要兩個時鐘週期。快取記憶體為命中,就必須訪問記憶體,這需要付出大量的時間代價。由於快取記憶體價格昂貴,所以其大小有限,有些機器具有兩級甚至三級快取記憶體,每一級快取記憶體比前一級慢但是容易大。
快取在電腦科學的許多領域中起著重要的作用,並不僅僅只是RAM(隨機存取儲存器)的快取行。只要存在大量的資源可以劃分為小的部分,那麼這些資源中的某些部分肯定會比其他部分更頻發地得到使用,此時用快取可以帶來效能上的提升。一個典型的例子就是作業系統一直在使用快取,比如,多數作業系統在記憶體中保留頻繁使用的檔案(的一部分),以避免從磁碟中重複地呼叫這些檔案,例如一個web頁面的url地址轉換為網路地址(IP)地址後,這個轉換結果也可以快取起來供將來使用。
快取是一個好方法,在現代cpu中設計了兩個快取。第一級快取稱為L1總是在CPU中,通常用來將已經解碼的指令調入cpu的執行引擎,對那些頻繁使用的資料自,多少晶片還會按照第二L1快取 。。。另外往往設計有二級快取L2,用來存放近來經常使用的記憶體字。L1與L2的差別在於對cpu對L1的訪問無時間延遲,而對L2的訪問則有1-2個時鐘週期(即1-2ns)的延遲。
記憶體:再往下一層是主存,此乃儲存器系統的主力,主存通常稱為隨機訪問儲存RAM,就是我們通常所說的記憶體,容量一直在不斷攀升,所有不能再快取記憶體中找到的,都會到主存中找,主存是易失性儲存,斷電後資料全部消失
除了主存RAM之外,許多計算機已經在使用少量的非易失性隨機訪問儲存如ROM(Read Only Memory,ROM),在電源切斷之後,非易失性儲存的內容並不會丟失,ROM只讀儲存器在工廠中就被程式設計完畢,然後再也不能修改。ROM速度快且便宜,在有些計算機中,用於啟動計算機的引導載入模組就存放在ROM中,另外一些I/O卡也採用ROM處理底層裝置的控制。
EEPROM(Electrically Erasable PROM,電可擦除可程式設計ROM)和快閃記憶體(flash memory)也是非易失性的,但是與ROM相反,他們可以擦除和重寫。不過重寫時花費的時間比寫入RAM要多。在行動式電子裝置中中,快閃記憶體通常作為儲存媒介。快閃記憶體是數碼相機中的膠捲,是行動式音譯播放器的磁碟,還應用於固態硬碟。快閃記憶體在速度上介於RAM和磁碟之間,但與磁碟不同的是,快閃記憶體擦除的次數過多,就被磨損了。
還有一類儲存器就是CMOS,它是易失性的,許多計算機利用CMOS儲存器來保持當前時間和日期。CMOS儲存器和遞增時間的電路由一小塊電池驅動,所以,即使計算機沒有加電,時間也仍然可以正確地更新,除此之外CMOS還可以儲存配置的引數,比如,哪一個是啟動磁碟等,之所以採用CMOS是因為它耗電非常少,一塊工廠原裝電池往往能使用若干年,但是當電池失效時,相關的配置和時間等都將丟失.**
這裡寫圖片描述

磁碟結構

磁碟有磁頭,磁軌,扇區,柱面。每個磁頭可以讀取一段換新區域,稱為磁軌。把一個戈丁手臂位置上所以的磁軌合起來,組成一個柱面。每個磁軌劃成若干扇區,扇區典型的值是512位元組。
資料都存放於一段一段的扇區,即磁軌這個圓圈的一小段圓圈,從磁碟讀取一段資料需要經歷尋道時間和延遲時間。
平均尋道時間
機械手臂從一個柱面隨機移動到相鄰的柱面的時間成為尋到時間,找到了磁軌就以為著招到了資料所在的那個圈圈,但是還不知道資料具體這個圓圈的具體位置。
平均延遲時間
機械臂到達正確的磁軌之後還必須等待旋轉到資料所在的扇區下,這段時間成為延遲時間。
虛擬記憶體
許多計算機支援虛擬記憶體機制,該機制使計算機可以執行大於實體記憶體的程式,方法是將正在使用的程式放入記憶體取執行,而暫時不需要執行的程式放到磁碟的某塊地方,這塊地方成為虛擬記憶體,在linux中成為swap,這種機制的核心在於快速地對映記憶體地址,由cpu中的一個部件負責,成為儲存器管理單元(Memory Management Unit MMU)。
PS:從一個程式切換到另外一個程式,成為上下文切換(context switch),快取和MMU的出現提升了系統的效能,尤其是上下文切換。

磁帶

在價錢相同的情況下比硬碟擁有更高的儲存容量,雖然速度低於磁碟,但是因其大容量,在地震水災火災時可移動性強等特性,常被用來做備份。
I/O裝置一般包括兩個部分
裝置控制器和裝置本身。
控制器
是查詢主機板上的一塊晶片或一組晶片(硬碟,網絡卡,音效卡等都需要插到一個口上,這個口連的便是控制器),控制器負責控制連線的裝置,它從作業系統接收命令,比如讀硬碟資料,然後就對硬碟裝置發起讀請求來讀出內容。
控制器的功能
通常情況下對裝置的控制是非常複雜和具體的,控制器的任務就是為作業系統遮蔽這些複雜而具體的工作,提供給作業系統一個簡單而清晰的介面
裝置本身
有相對簡單的介面且標準的,這樣大家都可以為其編寫驅動程式了。要想呼叫裝置,必須根據該介面編寫複雜而具體的程式,於是有了控制器提供裝置驅動介面給作業系統。必須把裝置驅動程式安裝到作業系統中。

匯流排

北橋即PCI橋:連線高速裝置
南橋即ISA橋:連線慢速裝置
這裡寫圖片描述

作業系統的啟動流程

1 計算機加點
2 BIOS開始執行,檢測硬體:CPU、記憶體、硬碟等。
3 BIOS讀取CMOS儲存器中的引數,選擇啟動裝置。
4 從啟動裝置讀取第一個扇區的內容(MBR主引導記錄512位元組,前446為引導資訊,最後兩個為標誌位)
5 根據分割槽資訊讀入bootloader啟動裝載模組,啟動作業系統。
6 然後作業系統詢問BIOS,以獲得配置資訊。對於每種裝置,系統會檢查其裝置驅動程式是否存在,如果沒有,系統則會要求使用者按照裝置驅動程式。一旦有了全部的驅動程式,作業系統就會將它們調入核心。然後初始有關的表格,穿件需要的程序,並在每個終端上啟動登入程式或GUI。