硬件基本組成 計算機硬件系統由運算器、控制器、存儲器、輸入設備、輸出設備五大部件組成。
運算器和控制器等部件組成CPU。
存儲器分外部存儲和內部存儲,前者速度快、容量小,後者速度慢、容量大。
CPU的功能和組成 中央處理單元(CPU)是計算機系統的核心部件,它負責獲取程序指令、對指令進行譯碼並加以執行。
CPU的功能 程序控制 CPU 通過執行指令來控制程序的執行順序,這是 CPU 的重要功能。
操作控制 一條指令功能的實現需要若干操作信號配合來完成,CPU 產生每條指令的操作信號並將操作信號送往對應的部件,控制相應的部件按指令的功能要求進行操作。
時間控制 CPU對各種操作進行時間上的控制,即指令執行過程中操作信號的出現時間、持續時間及出現的時間順序都需要進行嚴格控制。
數據處理 CPU通過對數據進行算術運算及邏輯運算等方式進行加工處理,數據加工處理的結果被人們所利用。所以,對數據的加工處理也是 CPU 最根本的任務。
中斷處理 此外,CPU還需要對系統內部和外部的中斷(異常)做出響應,進行相應的處理。
CPU的組成 CPU 主要由運算器、控制器、寄存器組和內部總線等部件組成。其中寄存器是計算機CPU內部的小型高速存儲單元,用於暫存指令、數據和地址。其存取速度遠高於內存,直接參與運算和控制操作。
運算器 運算器是數據加工處理部件,用於完成計算機的各種算術和邏輯運算。相對於控制器而言,運算器為執行部件,其由以下的幾個部件構成:
算數邏輯單元(ALU) 處理數據,實現算術運算(加法器、減法器……)及邏輯運算。
累加寄存器(AC) 是一個通用寄存器,在ALU執行時提供一個工作區,負責提供運算的數據、暫存運算結果。
例如:在執行一個減法運算前,先將被減數取出暫存在 AC 中,再從內存儲器中取出減數,然後同 AC 的內容相減(在ALU中),將所得的結果送回 AC中。運算的結果是放在累加器中的,運算器中至少要有一個累加寄存器。
數據緩衝寄存器(DR) 在對內存儲器進行讀/寫操作時,用 DR 暫時存放由內存儲器讀/寫的一條指令或一個數據字,將不同時間段內讀/寫的數據隔離開來。作為CPU和內存、外部設備之間數據的中轉站,是操作速度上的緩衝,在單累加器結構的運算器中,數據緩衝寄存器還可兼作為操作數寄存器。
狀態條件寄存器(PSW) 保存由算術指令和邏輯指令運行或測試的結果建立的各種條件碼內容,主要分為狀態標誌和控制標誌,這些標誌通常分別由1位觸發器保存,保存了當前指令執行完成之後的狀態。通常,一個算術操作產生一個運算結果,而一個邏輯操作產生一個判決。
控制器 控制器控制整個CPU的運行,其核心功能是從內存中讀取指令,解碼指令的含義,並生成控制信號以驅動其他硬件組件。不僅保證程序的正確執行,同時還要處理各種異常事件,控制器一般包括指令控制邏輯、時序控制邏輯、總線控制邏輯和中斷控制邏輯等幾個部分。
指令控制 指令寄存器(IR) 當 CPU執行一條指令時,先把它(包括操作碼和地址碼)從內存儲器取到緩衝寄存器中,再送入指令寄存器IR暫存,指令譯碼器根據IR的內容產生各種微操作指令,控制其他的組成部件工作,成所需的功能。
程序計數器(PC) 具有寄存信息和計數兩種功能,又稱為指令計數器。程序的執行分為兩種情況,一是順序執行(對PC+1),二是轉移執行(根據當前指令的地址加上一個向前或向後轉移的位移量得到,或者轉移指令給出的直接轉移的地址得到)。保存下一條待執行指令的內存地址,確保指令按順序或跳轉邏輯執行。
地址寄存器(AR) AR 保存當前 CPU 所訪問的內存單元的地址。由於內存和 CPU存在着操作速度上的差異,所以需要使用 AR 保持地址信息,直到內存的讀/寫操作完成為止。
指令譯碼器(ID) 指令分為操作碼和地址碼兩個部分,為了執行任何給定的命令,必須對操作碼進行分析,以便識別所有完成的操作,向操作器發送具體控制信號。
時序控制 時序控制邏輯要為每條指令按時間順序提供應有的控制信號。
總線控制 總線邏輯是為多個功能部件服務的信息通路的控制電路。
中斷控制 中斷控制邏輯用於控制各種中斷請求,並根據優先級的高低對中斷請求進行排隊,逐個交給 CPU 處理。
寄存器組 寄存器組可分為專用寄存器和通用寄存器。運算器和控制器中的寄存器是專用寄存器,其作用是固定的。通用寄存器用途廣泛並可由程序員規定其用途,其數目因處理器不同有所差異。
tips:
用户可以訪問的寄存器: 程序計數器、通用寄存器、狀態條件寄存器等
用户不可以訪問的(完全透明)寄存器: 指令寄存器、控制寄存器等
數據表示 各種數值在計算機中表示的形式稱為機器數,特點是採用二進制計數制,數的符號用 0 和 1 表示,小數點則隱含,表示不佔位置。機器數對應的實際數值稱為數的真值。 編碼方法 原碼 在原碼錶示中,機器數的最高位是符號位,0代表正號,1代表負號,餘下各位是數的絕對值。零有兩個編碼,即[+0]原=00000000,[-0]原=10000000。
優點:與真值之間轉換簡單 缺點:加減運算不方便,零的表示不唯一(+0和-0),加減運算複雜,需判斷符號位,硬件設計複雜度高。 例子:設字長為8
反碼 在反碼錶示中,機器數的最高位是符號位,0代表正號,1代表負號。當符號位為0時,其餘幾位即為此數的二進制值;但當符號位為1時,則要把其餘幾位按位取反,才是它的二進制值。零有兩個編碼,即[+0]反00000000,[-0]反=11111111。
優點:符號位參與運算,簡化部分加減操作。 缺點:仍存在正負零問題,加減運算需處理進位循環,硬件實現較複雜。 例子:
補碼 補碼就是在反碼地基礎上加以改進,當符號位為0(即正數時)與反碼一致,但是當符號位為1(即為負數時),需要按位取反並在最低位加1。
對於補碼,零有唯一的編碼,即[+0]補=[-0]補=00000000。
優點:補碼錶示的兩個數在進行加法運算時,只要結果不超出機器所能表示的數值範圍,可以把符號位與數值位同等處理 缺點:數值表示範圍不對稱(如8位補碼範圍-128~127),負數轉換為補碼需按位取反加1,稍顯複雜。 例子:
移碼 移碼就是在補碼的基礎上取反(符號位取反),所以移碼的0也只有一種表示方式。
優點:用於浮點數階碼錶示,便於比較大小(無符號比較即可判斷實際值),簡化浮點運算邏輯。 缺點:僅適用於特定場景(如浮點數),不直接用於常規整數運算,需額外轉換步驟。 例子:
定位數和浮點數 定點數 所謂定點數,就是小數點的位置固定不變的數。小數點的位置通常有兩種約定方式:
定點整數(純整數,小數點在最低有效數值位之後)。 定點小數(純小數,小數點在最高有效數值位之前)。
浮點數 浮點數是小數點位置不固定的數,它能表示更大範圍的數,例如在十進制中,83.125 可寫成 10^3x0.083125 或10^4x0.0083125 等。在浮點表示法中,階碼通常為帶符號的純整數,尾數為帶符號的純小數。浮點數通常表示成:
式中,M稱為尾數(為了充分利用尾數來表示更多的有效數字,通常採用規格化浮點數。規格化就是將尾數的絕對值限定在區間[0.5,1](這裏之所以是0.5到1,是因為0.5的二進制為0.1,也就是説規格化的尾數希望小數點後一位是1而不是0,這一點和平時十進制中的習慣一致));R稱為基數;E稱為階碼。因此,若表示一個浮點數,要給出尾數M,它決定了浮點數的表示精度;同時要給出階碼E,它指出了小數點在數據中的位置,決定了浮點數的表示範圍(若表示範圍超出了計算機的表達範圍,就稱為溢出)。
如果浮點數的階碼(包括1位階符)用R位的移碼錶示,尾數(包括1位數符)用 M位的補碼錶示,則這種浮點數所能表示的數值範圍如下(參考上面定點數中各碼制的取值範圍):
最大正數: 最小負數: 工業標準 TEEE 754 [EEE 754 是由 正EEE 制定的有關浮點數的工業標準,被廣泛採用。該標準的表示形式如下:
其中,為該浮點數的數符,當S為0時表示正數,S為1時表示負數;E為指數(階碼),用移碼錶示;為尾數,其長度為P位,用原碼錶示。
目前,計算機中主要使用3種形式的IEEE 754 浮點數:
校驗碼 在計算機系統運行時,各部位之間要進行數據交換,為了確保數據在傳送過程中正確無誤:
一是提高硬件電路的可靠性 二是提高代碼的校驗能力,包括查錯和糾錯。 常用的三種校驗碼:
奇偶校驗碼 奇偶校驗碼(Parity Code)是一種簡單有效的校驗方法。這種方法通過在編碼中增加一位校驗 位,使編碼中 1 的個數為奇數(奇校驗)或偶數(偶校驗),從而使碼距(任意兩個合法編碼之間有至少多少個二進制位不同)變為 2,發送方計算校驗位並附加到數據中,接收方通過重新計算校驗位驗證數據是否在傳輸過程中發生錯誤。
發送方 1、統計原始數據中“1”的個數。
2、根據校驗類型(奇校驗或偶校驗)決定校驗位的值:
奇校驗:若“1”的個數為奇數,校驗位為0;否則為1。
偶校驗:若“1”的個數為偶數,校驗位為0;否則為1。
3、將校驗位附加到原始數據末尾,形成傳輸碼字。
接收方 1、接收完整的碼字(含校驗位)。
2、統計碼字中“1”的總數。
3、根據校驗類型判斷是否滿足條件:
奇校驗:總數應為奇數。
偶校驗:總數應為偶數。
4、若不滿足條件,則判定傳輸過程中出現錯誤。
例子 假設原始數據為 1010,採用偶校驗:
發送方:“1”的個數為2(偶數),校驗位為0,傳輸碼字為 10100。 接收方:收到碼字後統計“1”的個數為2(偶數),校驗通過。 若傳輸中某位翻轉(如 11100),接收方統計“1”的個數為3(奇數),校驗失敗。
侷限性 奇偶校驗僅能檢測奇數個位錯誤,無法糾正錯誤或檢測偶數個位錯誤。
海明校驗碼 海明碼(Hamming Code)是利用奇偶性來查錯和糾錯的校驗方法,其構成方法是:在數據位之間插入k個校驗碼,通過擴大碼距來實現檢錯和糾錯。設數據位是n位,校驗位是k位,則n和k必須滿足的關係。
循環冗餘校驗碼 循環冗餘校驗碼(Cyclic Redundancy Check,CRC)利用生成多項式為k個數據位產生,r個校驗位來進行編碼,其編碼長度為k+r。由兩部分組成,左邊為信息碼(數據), 右邊為校驗碼,校驗碼位數越長,該代碼的校驗能力就越強。
侷限性 可差錯但不能糾錯。 ———————————————— 版權聲明:本文為CSDN博主「Minato」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。 原文鏈接:https://blog.csdn.net/omroji/article/details/154988278