計算機組成原理在軟體設計考試分值占比較高,主要會考
1、數據的表示:數據進位轉化。(日常生活中使用的都是十進位的數據,但是計算機都是使用二進位,為了方便轉換還有八進位和十六進位)
計算機結構、Flynn分類法、CISC與RISC、流水線技術、存儲系統、總線系統、可靠性及校驗碼。
一、數據的表示
任意進位轉十進位
例如二進位的轉換。
二進位轉十進位可以按權展開法,當小數點左邊的是正數次方,右邊的則是負數。
比如:二進位 10100.01
轉成十進位:1*2的四次方+1*2的二次方+1*2的負二次方
比如:七進位 603.01
轉成十進位:6*7的二次方+33*7的零次方+1*7的負二次方
十進位轉二進位
可以使用短除法。
例如:十進位94
二進位:
94除以2 等於47 餘0
47除以2 等於23 餘1
23除以2 等於11 餘1
11除以2 等於5 餘1
5除以 2 等於2 餘1
2除以2 等於1 餘0
1除以2 等於0 餘1
1011110
二進位轉八進位與十六進位數
每三個2進位位可以轉一個8進位位,高位補0,然後把每個位子轉8進位。
10 001 110
那麼二進位110轉八進位是 1*2的二次方+1*二的一次方 = 6
二進位001轉八進位 1*2的零次方 = 1
二進位010轉八進位 1*2的一次方 = 2
所以 八進位是 216
每四個2進位可以轉一個16進位,高位補0。
十六進位到兩位則用字母代替,10是A,11是B,12是C,依次類推。
1000 1110
那麼二進位1000轉十六進位 1*2的三次方 = 8
二進位1110轉十六進位 1*2的三次方 + 1*2的二次方 + 1*2的1次方 = 8+4+2=14
所以十六進位 8E
問:反碼1111 1111 代表十進位的多少?
第一步:先把反碼轉成原碼 1000 0000
第二步:首位1代表負數,所以是 -0
問:補碼0000 0000 代表十進位的多少?
0
問:移碼1000 000代表十進位多少?
移碼首位1代表正數,所以是 0。
原碼反碼範圍 -127~127
補碼:-128~127
浮點數
1000的科學計數法是1.0 * 10的三次方,這就是計算機里的浮點數。
119則是1.19*10的平方。
所以公式為:
N = M * R的e次方。
其中M稱為尾數,R稱為基數,e稱為指數。
所以1.19是尾數 ,10是基數、2是指數。
問:如何把兩個浮點數相加?
1.0*10的三次方 + 1.19乘以10的平方
對階,把平方轉成三次方,0.119*10的三次方
所以等於1.119 * (10的三次方)
對階 -> 尾數相加 ->結果格式化。
當小數點左邊是0或者超過一位,則需要格式化。
二、計算器結構
運算器、控制器、主存儲器 這些都屬於主機。
而主機里最重要的部分是 運算器 + 控制器 = cpu (Central Processing Unit)
運算器包含 算術邏輯單元ALU、累加寄存器AC、數據緩衝寄存器DR(作用讀寫操作的時候,暫存數據)、狀態條件寄存器PSW(作用在運算過程中存儲標誌位)。
控制器包含 程序計數器PC、指令寄存器IR、指令解碼器、時序部件。
三、flynn分類法
單指令流單數據流SISD:意味著控制部件 是一個,處理器 是一個,主存模式 一個。代表就是單處理系統,老計算機。 (後面多核,4g8g就不屬於此類)
單指令流多數據流SIMD:控制部件 一個,處理部件 多個,主存模式 多個。處理器以異步的形式執行同一條指令。代表有 陣列處理器、並行處理機。
多指令流單數據流:控制器多個 處理器 一個,主存模式。並不存在,理論模型,沒有實際意義和價值。
多指令流多數據流:控制器,處理器和主存模式 都是多個。代表多處理器系統。
四、CISC與RISC
CISC複雜模式,RISC精簡模式。
CISC是計算機沒有大規模通用化時候提出來的,數量多,使用頻率差別大,可變長格式,支持多種。
RISC大部分都是操作寄存器,只有load/store操作內存,優化編譯,有效支持高級語言。
五、流水線
執行一條指令分為 取指、分析、執行。
如果沒有流水線,當有三條指令的情況下,則執行順序是:
第一條指令 取指、分析、執行。
第二條指令 取指、分析、執行。
第三條指令 取指、分析、執行。
如果有流水線,則他們的執行順序是:
第一條指令 第二條指令 第三條指令 取指。
第一條指令 第二條指令 第三條指令 分析。
第一條指令 第二條指令 第三條指令 執行。
流水線所做的工作,是把空閒時間利用起來。
流水線的計算
問:把一條指令分為 取指、分析、執行三個部分,且三部分的時間分別是取指2ns、分析2ns、執行2ns。那麼流水線周期多少?100條指令全部執行完畢需要時間是多少?
分析:流水線周期指執行時間最長的一段,所以流水線周期最長的是2ns。
一條指令執行時間 + n-1條指令的執行時間
2+2+1 + 99 *2= 5+198 = 203
這是理論公式,第一條指令時間, 後面指令乘以 周期時長。
實踐公式:(k+n-1)*流水線周期。這裡k代表分成幾段。
(3+100-1)*2 = 204
流水線吞吐率計算
指單位時間內流水線所完成的任務數量或者輸出結果數量。
TP=指令條數 除以 流水線執行時間
TP = 100/203nm