計算機組成原理是計算機科目中偏向於硬件的,我真的沒學好。惟一作的好的筆記仍是比較完整的。哈哈。這門課真的是博大精深。現在把組成原理的基本知識點與你們分享。但願你們在這門課的學習中少走彎路。git
計算機系統概論
把以軟件爲主實現的機器稱爲虛擬機器。把由硬件和固件實現的機器稱爲實際機器。
高級語言的翻譯程序有編譯程序和解釋程序兩種。github
計算機系統的層次結構從低到高:
(1)微程序機器(第0級)、
(2)傳統機器(第1級)、
(3)操做系統機器(第2級)、
(4)彙編語言機器(第3級)、
(5)高級語言機器(第4級)、
(6)應用語言機器(第5級)。
在計算機技術中,一種原本存在的事物或屬性。從某種角度看卻好像不存在,稱爲透明性。
一個完整的計算機系統由硬件和軟件兩大部分組成。
計算機硬件由運算器、控制器、存儲器、輸入設備和輸出設備五大部分組成。算法
存儲器由內存(cache,主存(ROM,RAM))和輔存組成。
主機由CPU(控制器、運算器、cache)和內存組成。
輔存又叫外存。輔存中的信息既可以讀出又可以寫入,因此輔存是輸入輸出設備。數據庫
輸入設備、輸出設備和輔助存儲器都位於主機以外,稱爲外圍設備。簡稱外設。由於外設的做用是完畢輸入輸出操做,因此外設又稱IO設備。編程
系統總線包含地址總線、數據總線、控制總線。
運算器由ALU(核心)、GR、PSW寄存器組成。
控制器由PC、IR、指令譯碼器、時序產生器和操做控制器組成。緩存
系統軟件包含:
(1)語言處理程序、
(2)操做系統、
(3)服務性程序、
(4)數據庫管理系統。併發
邏輯等價性:軟件和硬件在邏輯功能上是等效的,同一功能既可以用軟件也可以用硬件或固件實現。從原理上講,軟件實現的功能全然可以用硬件或固件完畢。相同,硬件實現的邏輯功能也可以用軟件完畢。
用硬件實現的功能有較高的運行速度,成本也相對較高,而且硬件也不易更改。靈活性也較差。一般硬件實現一些最主要的功能。軟件實現一些比較複雜的功能。
運算方法和運算器
符號位相加向前產生的進位要丟掉。
正溢:兩個正數相加,若運算結果大於機器所能表示的最大正數。
負溢:兩個負數相加,若運算結果小於機器所能表示的最小負數。
定點數(定點整數、定點小數)推斷溢出方法:
單符號位法。在同符號數相加時,結果的符號位與被加數和加數的符號位相異時才發生溢出。
進位推斷法。當符號位向前產生的進位值與尾數最高位向前產生的進位值相異時才發生溢出。
雙符號位法。將數的兩個符號位都看做是數的一部分參與運算,運算結果的最高符號位向前產生的進位要丟掉。若運算結果的雙符號位一樣,即00,11時。表示結果沒有發生溢出。若運算結果的雙符號位不一樣。即01,10時。運算結果發生溢出。異步
01表示正溢,10表示負溢。性能
原碼一位乘法:兩個n位小數相乘,要進行n次加、n次右移。
邏輯非就是按位求反。(注意邏輯非的符號)
邏輯加就是邏輯或。學習
(注意有兩種符號)
邏輯乘就是邏輯與。
(注意有兩種符號)
碼距:依據隨意兩個合法碼之間至少有幾個二進制位不一樣樣而肯定的。若隨意兩個合法碼之間僅有一位不一樣,則碼距爲1.
合理增大碼距。就能提升發現錯誤的能力。
奇偶校驗碼是一種開銷最小,能發現數據中一位出錯狀況的編碼,常用於存儲器的讀寫檢查。
實現原理:在每組代碼代碼中添加一個冗餘位,使碼距由1到2.假設合法編碼中有奇數個位發生了錯誤,則該編碼成爲非法編碼。
添加的冗餘位稱爲奇偶校驗位。
奇偶校驗碼僅僅能發現一位錯或奇數個位錯,但不能肯定是哪一位。所以沒有糾錯能力。不能發現偶數個位錯。
存儲系統
存儲器用來存放程序和數據。
存儲元(存儲位元)可以存儲一位二進制代碼。這個二進制代碼是存儲器中最小的存儲單元。
若干個存儲位元組成一個存儲單元,一個存儲單元可以存儲一個機器字或一個字節。存放一個機器字的存儲單元是字存儲單元。存放一個字節的存儲單元是字節存儲單元。相應的存儲單元地址稱爲字地址和字節地址。
存儲器分類:
按存儲介質分:半導體存儲器(主存)、磁表面存儲器(磁盤)、光盤存儲器(CD)。
按存取方式分:隨機存儲器(半導體存儲器)、順序存儲器(磁帶)、半順序存儲器(磁盤)。
按讀寫功能分:僅僅讀存儲器(ROM)、讀寫存儲器(RAM)。
半導體存儲器按讀寫功能分:ROM、RAM
按信息的可保存性分:易失性存儲器(RAM)、非易失性存儲器(ROM)。
按在計算機中的做用分:主存、緩存、輔存、控制存儲器
存儲層次設計的主要根據是程序的局部性原理。包含時間局部性和空間局部性。
三級存儲層次:cache、主存、輔存。
RAM按在執行中是否能長時間保存信息分SRAM和DRAM。(注意:當掉電時。存儲的信息都消失,是易失性存儲器。
)
SRAM利用雙穩態觸發器保存信息,僅僅要不斷電,信息不會丟失。
DRAM利用電容存儲電荷保存信息,要按期給電容充電才幹保存信息。
SRAM速度快。但是集成度低,功耗大。DRAM相反。
MROM:掩膜式ROM
PROM:可編程ROM
EPROM:紫外線擦除可編程ROM
EEPROM:電擦除可編程ROM
半導體存儲器的容量擴展方法:字擴展法、位擴展法、字位擴展法
位擴展法:用多個存儲器芯片對字長進行擴充。
字擴展法:添加存儲器中的字的數量。
快速存儲器有雙portRAM(按地址訪問)、多模塊交叉存儲器(按地址訪問)、相聯存儲器(按內容訪問)。都可以提升CPU和主存之間的傳輸數據速率。
雙portRAM同一存儲器有兩組相互獨立的讀寫控制電路。
由於並行的獨立操做。所以是一種快速存儲器。
多模塊交叉存儲器實現流水式並行存取提升存儲器帶寬。(各模塊並行操做。)
存儲器模塊的兩種組織方式:順序方式、交叉方式。
相聯存儲器的基本原理是把存儲單元所存內容的某一部分做爲檢索項,去檢索該存儲器,把符合的存儲單元內容讀入讀出。
cache從功能上看,是主存的緩衝存儲器,由快速的SRAM組成。全部功能由硬件實現。Cache對系統程序猿和應用程序猿都是透明的。
CPU和cache之間的數據交換以字爲單位,cache和主存之間數據交換以塊爲單位。
重點:cache的工做過程。每當給出一個主存地址進行訪存時,都必須經過主存—cache地址映像變換機構推斷該訪問字是否已在cache中。假設在cache中(cache命中),則地址映像變換機構將主存地址變換成cache地址去訪問cache;假設不在cache中(cache不命中),則產生cache塊失效,此時就需要從訪問主存的通路中把塊調入cache。並直接送往處理機。假設cache已經裝不進了,則發生cache塊衝突,就需要使用對應的替換算法調出塊,並改動地址映像表。
在有cache的主存系統中都採用多模塊交叉存儲器。
cache訪存的優先級高於通道和CPU。
cache性能參數計算!
cache和主存的地址映像變換(理解)
全相聯映像(硬件本身主動完畢):主存中的任一塊可以被放置到cache中的隨意一個位置。衝突機率最低。Cache空間利用率最高。
直接映像(硬件本身主動完畢):主存中的每一塊僅僅能映像到cache的惟一一個位置。把主存空間按cache的空間分紅區。衝突機率很是高。Cache空間利用率很是低。
組相聯映像:組間直接映像、組內全相聯。
指令系統
指令系統性能要求
完備性
有效性
規整性
兼容性
依照指令地址碼個數不一樣,分爲零地址指令、一地址指令、二地址指令、三地址指令
操做碼的位數決定了不一樣功能指令的多少。位數越多,所能表示的操做功能越豐富。
指令的操做碼兩種編碼格式:等長操做碼、變長操做碼(哈夫曼編碼、擴展操做碼)
尋址方式是指尋找指令或操做數有效地址的方式方法。
指令的尋址方式(簡單) 數據的尋址方式(複雜)
指令的尋址方式
順序尋址方式:當運行一段程序時。要運行的下一條指令即是程序其中正在運行指令的下一條(PC)。
跳躍尋址方式
操做數的尋址方式
隱含尋址
立刻尋址
寄存器直接尋址
寄存器間接尋址
直接尋址
間接尋址
相對尋址
基址尋址
變址尋址
本身主動增量減量尋址
堆棧尋址
隱含尋址:有些類型的指令不是明顯給出操做數的地址,而是隱含地由累加器給出操做數。
立刻尋址:指令的形式地址給出的是操做數自己。
寄存器直接尋址:理解
寄存器間接尋址:寄存器的內容爲操做數在主存中的有效地址,由寄存器的內容訪存所獲得的內容纔是真正的操做數。
(和寄存器直接尋址比較。寄存器直接尋址的操做數在寄存器中;寄存器間接尋址的操做數在內存中。)
直接尋址:理解
間接尋址:理解
相對尋址:相對於PC而言的。操做數在主存中的有效地址等於PC的內容加上指令中的位移量。
基址尋址:對於基址寄存器而言的。
操做數在主存中的有效地址等於基址寄存器的內容加上指令中的位移量。
變址尋址:對於變址寄存器而言的。操做數在主存中的有效地址等於變址寄存器的內容加上指令中的位移量。
CISC大多數採用微程序控制。
CISC中的各類指令的使用頻度至關懸殊。最常使用的是一些比較簡單的指令,僅佔指令總數的20%,但在程序中出現的頻度卻佔80%,這意味着由硬件支持的指令約有80%是很是少使用的。
RISC經過精簡指令系統來簡化控制器設計。添加片內寄存器和快速緩存的容量,以及添加浮點運算部件和採用流水線技術提升處理器性能。
RISC以硬連線控制爲主。
退耦的CISC/RISC既不採用純RISC。也不採用經典的CISC,而是採用混合式的CISC/RISC體系結構。
在指令系統的發展過程當中出現過兩種大相徑庭的方向,即CISC和RISC,他們都具備各自的優缺點。隨着退耦CISC/RISC和後RISC出現,關於RISC和CISC兩種體系結構性能好壞已經在很是大程度上平息下來了,二者都從對方陣營參考了很是多概念和技術,兩種技術逐漸交融,結構上的差異也逐漸模糊。
中央處理器
程序一旦裝入內存,中央處理器就能本身主動地、逐條地取指令、分析指令和運行指令。
CPU基本功能:
指令控制
操做控制
時間控制
數據加工(這是最主要的功能)
CPU基本組成
控制器
運算器
Cache。有指令cache和數據cache
CPU中的主要寄存器
PC。
程序計數器、指令地址寄存器、指令指針。
IR。指令寄存器。
AR。
數據地址寄存器
GR。
通用寄存器
PSW。狀態字寄存器
CPU取指令時,將PC的內容送入指令cache,經地址譯碼後選中對應的存儲單元。取出一條指令並將取出的指令代碼送往IR,同一時候本身主動改動PC的值造成下一條指令的地址。
指令寄存器的做用是保存當前正在運行的一條指令。當解釋一條指令時。首先依據PC的值從指令cache中取出一條指令,並將其送往IR。在這條指令運行的過程當中。指令寄存器的內容始終保持不變。直到有新的指令被取出並送往IR爲止。
指令譯碼器用來完畢對指令寄存器中的操做碼字段進行譯碼。
AR保存當前CPU所訪問的數據cache單元的地址。
產生控制信號並創建正確數據通路的部件叫作操做控制器。依據指令的操做碼和時序信號,產生各類具備時間標誌的操做控制信號。以創建正確的數據通路。
操做控制信號的造成方法:
微程序設計方法(微程序控制器)
組合邏輯設計方法(硬連線控制器)
時序產生器產生一組時序信號,及一系列的節拍電位信號和節拍脈衝信號。
做用就是對各類操做控制信號實施時間上的控制。
指令週期是指從CPU送出取指令地址到取出本條指令並運行完成所花的時間。
取出和運行不論什麼一條指令所需的最短期爲兩個CPU週期。
CPU週期又叫機器週期,由若干個時鐘週期組成。
時鐘週期一般又稱節拍脈衝週期或T週期,是處理操做的最基本單位。
用方框圖語言表示指令週期。
一個方框表示一個CPU週期。
在一樣的CPU結構上解釋指令,所有指令的取值週期是一樣的。
從時間上看,取指令事件發生在指令週期的第一個CPU週期內。即發生在取值週期,而取數據事件發生在取值週期以後的幾個CPU週期內。即發生在運行週期。
從空間上看,假設取出的代碼是指令,必定送往指令寄存器。假設取出的代碼是數據,則必定送往通用寄存器或地址寄存器。
時序信號最主要的體制是電位—脈衝制。
一個節拍電位表示一個CPU週期的時間,包括若干個節拍脈衝。
實現時序控制所需的時序信號,主要包括節拍電位和節拍脈衝。它們構成了CPU的時序系統。
造成控制不一樣操做序列時序信號的方法。稱爲控制器的控制方式。
控制器的控制方式:
同步控制方式
異步控制方式
聯合控制方式
人工控制方式
同步控制方式又稱固定時序控制方式。基本思想是:選取部件中最長的操做時間做爲統一的CPU週期時間,使所有的部件都能在一個CPU週期內啓動並完畢操做,同一時候,以最複雜指令所需的CPU週期數爲標準做爲所有指令的解釋時間。即指令中所有指令的解釋具備一樣的CPU週期數和時鐘週期數。
異步控制方式又稱可變時序控制方式。基本思想是:系統不設立統一的CPU週期數和時鐘週期數。各部件按自己的速度需要佔用時間。
微程序控制基本思想:把操做控制信號編成所謂的「微指令」,存放到一個僅僅讀存儲器裏。
當機器執行時。一條一條讀出這些微指令,從而產生全機所需要的各類操做控制信號,控制對應的執行部件完畢規定的操做。
控制部件與運行部件的聯繫有兩種,一種是經過控制線,一種是經過狀態線。
微命令:控制部件經過控制線發往運行部件的各類控制命令。
微操做:運行部件在微命令的控制下所進行的操做。
微操做分爲相容性和相斥性。
在機器的一個CPU週期內,一組實現必定操做功能的微命令的組合,構成一條微指令。
在一個CPU週期內完畢的操做功能由一條微指令來實現。
微指令組成
操做控制字段
順序控制字段:P字段和直接微地址組成
一條機器指令的功能是由若干條微指令組成的序列來實現的。這個微指令序列又叫微程序。
肯定微地址方法:
計數器方式
多路轉移方式(用組合邏輯方法設計)
微程序控制器組成
控制存儲器
微指令寄存器(微地址寄存器、微命令寄存器)
地址轉移邏輯
控制存儲器存放指令系統的所有微程序,是僅僅讀存儲器。
微指令寄存器用來存放控制存儲器讀出的一條微指令信息。當中,微地址寄存器決定將要訪問的下一條微指令的微地址。
微命令寄存器保存一條微命令的操做控制字段和P字段。
機器指令和微指令關係:
一條機器指令的功能由若干條微指令組成的序列來實現。
機器指令存放在內存中。微指令固化在控制存儲器中。
每一個CPU週期相應一條微指令。
微命令的編碼方法:
直接表示法
編碼表示法(注意:僅僅能表示2的n次減一)
混合表示法
微指令格式:
水平型微指令
垂直型微指令
水平型微指令:在一個CPU週期內,一次能定義並運行多個並行操做微命令的微指令。
垂直型微指令:每條垂直型微指令僅僅能完畢一個操做。僅僅包括一個或兩個微操做。
用垂直型微指令編寫的微程序比用水平型微指令編寫的微程序要長的多。是採用較長的微程序去換取較短的微指令結構。
水平型微指令運行一條指令的時間短,垂直型微指令運行的時間長。
微程序設計技術:
靜態微程序設計
動態微程序設計
微程序控制器的控制功能是在控制存儲器和微指令寄存器直接控制下實現的。而硬連線控制器則由邏輯門組合實現的(門電路、觸發器)。
並行性的兩重含義:
同一時候性
併發性
顆粒度用來衡量軟件進程所含計算量的大小。最簡單的方法是用程序段的指令條數來表示。
顆粒度的大小分爲
細粒度:小於500
中粒度:500~2000
粗粒度:大於2000
並行性的等級劃分(按顆粒度大小不一樣):
做業級
任務級
例行程序或子程序級
循環和迭代級
語句和指令級
層次越高的並行處理的粒度就越粗;低層次上的並行處理粒度較細。
並行處理技術:
時間並行
空間並行
時間並行+空間並行
指令的解釋方式:
順序解釋方式
流水解釋方式
流水線的三個階段:
創建
滿載
排空
流水解釋的三種相關:
資源相關
數據相關
控制相關
56.計算吞吐率、加速比、效率。
總線結構
總線不不過一組傳輸線,還包含一套管理信息傳輸的規則(協議)。
總線的特性:
物理特性
功能特性
電氣特性
時間特性
地址總線的寬度指明瞭總線能夠直接訪問存儲器的地址空間範圍。
數據總線的寬度指明瞭訪問一次存儲器或外設時能夠交換數據的位數。
總線相對於CPU的位置分爲:
內部總線
外部總線
外部總線按功用劃分:
局部總線
系統總線
通訊總線
總線按功能劃分爲:
地址總線
數據總線
控制總線
按總線在微機中的位置分:
機內總線
機外總線
按數據在總線中傳輸位數分:
串行總線
並行總線
總線按信息傳送方向分:
單向總線
雙向總線
輸入輸出系統
輸入輸出系統包含:
輸入輸出設備
設備控制器
輸入輸出操做有關的軟硬件
爲事件服務的程序稱爲中斷服務程序或中斷處理程序。
中斷是一個過程,是CPU在執行當前程序的過程當中因硬件或軟件的緣由插入了還有一段程序執行的過程。硬件緣由引發的中斷是不可預測的,隨機的。
而軟中斷是事先安排的。
凡是能引發中斷的設備或事件都是中斷源。
中斷源向中斷系統發出請求中斷的申請,稱中斷請求。
中斷過程的4個階段:
中斷請求
中斷響應
中斷處理
中斷返回
在處理某級中的某個中斷請求時,與它同級的或比它低級的中斷請求是不能中斷它的處理的,僅僅有比它高級的中斷請求才幹中斷其處理過程。
等響應和處理完後。再繼續處理原先的那個中斷請求。
沒有得到贊成的中斷請求稱爲中斷被屏蔽。
鼠標和鍵盤以中斷方式鏈接。
github主頁:https://github.com/chenyufeng1991 。歡迎你們訪問!