計算機的硬件組成:
運算器、控制器、存儲器、輸入設備、輸出設備。
CPU (中央處理單元)由運算器、控制器、寄存器組和內部總線組成
功能:實現程序控制、操作控制、時間控制、數據處理功能。
運算器組成:(執行加減乘除、與或非比較)
1、算術邏輯單元ALU(對數據的算數和邏輯運算)
2、累加寄存器AC(運算結果或源操作數的存放區)
3、數據緩沖寄存器DR(暫時存放內存的指令或數據)
4、狀態寄存器PSW(保存指令運行結果的條件碼內容,如溢出標志)
控制器組成:(程序控制、時序控制)
1、指令寄存器IR(暫存CPU執行指令)
2、程序計數器PC(存放指令執行地址)
3、地址寄存器AR(保存當前CPU所訪問的內存地址)
4、指令譯碼器ID(分析指令操作碼)
二進制用0b表示 =》 0b0011
十六進制用0x或H表示 =》 0x18F 或 18FH
R進制轉10進制:(位權展開法)
如:6進制5043 =》 3*6^0 + 4*6^1 + 0*6^2 + 5*6^3
十進制轉R進制:(除以R倒取余數)下至上記錄 左至右順序
如:10進制200轉6進制 =》 200/6=33...2 , 33/6=5...3 , 5/6=0...5 => 得532
m進制轉n進制:先m進制轉成10進制,10進制轉n進制。
例外:2進制轉8進制、2進制轉16進制 可以直接轉化
二進制轉八進制:(每3位二進制數轉化為 1位八進制數)
二進制數 01101有五位,前面補一個0就有六位,001 101。
001 = 1 , 101 = 1*2^0 + 0*2^1 + 1*2^2 = 5 =》 得八進制為:15
二進制轉十六進制:(每4位二進制數轉化為 1位十六進制數)
二進制數101101,補位得0010 1101。
0010 = 2, 1101 = 13 = D =》 得十六進制為:2D
小數部分進制轉化 暫略。
數的表示:
機器數:數值在計算機中的表示形式,使用二進制計數制,數的符號用0和1表示,小數點隱含,不占位置。
機器數分為 帶符號數 和 無符號數。帶符號數最高位為符號位,正數符號位為0,負數符號位為1。
數的編碼方式:(帶符號數有以下編碼方式)
原碼:一個數的正常二進制表示,最高位表示符號,數值0的源碼有兩種形式:+0(0 0000000)和 -0(1 0000000)
反碼:正數的反碼=原碼 , 負數的反碼在符號位的基礎上按位取反。0的反碼也有兩種形式:+0(0 0000000)和 -0(1 1111111)
補碼:正數的補碼=原碼,負數的補碼 = 反碼 +1 ,若有進位則產生進位,0的補碼只有一種:+0 = -0 = (000 0000)
移碼:無論正數還是負數,將該原碼的補碼的首位(符號位)取反得到移碼
例子:數的機器子長為8,
45的原碼、反碼、補碼 = 0010 1101、移碼 1010 1101
-45的原碼 = 1010 1101、反碼 = 1101 0010、補碼 = 1101 0011、移碼 = 0101 0011
浮點數表示:
N = F * 2^E,E為階碼,F稱為尾數。類似10進制科學計數法。
二進制如:101.011 = 0.101011 * 2^3
階碼為帶符號的純整數,尾數為帶符號的純小數,符號占最高位(正數0負數1)
浮點數所能表示的數值范圍由階碼確定,所表示的精度由尾數確定。
例子:帶符號位的1.0xxxxx 或 0.1xxxxx
浮點數的運算:
1、對階(使兩個數的階碼相同,小階向大階看齊,較小的階碼增加幾位,尾數就右移幾位)
2、尾數計算(相加,若是減運算,則加負數)
3、結果規格化(尾數表示規格化,帶符號尾數轉換為1.0xxxx 或 0.1xxxx)
算術運算和邏輯運算:
數與數的運算:加減乘除、對於二進制還有邏輯運算。
邏輯與&&:一個為0,結果為0,一個為1,結果為1。
邏輯或||:一個為1,結果為1,兩個都為0,才為0。
異或:同 0 ,非 1
邏輯非!:0的非是1,1的非是0
邏輯左移<<:二進制數整體左移,高位若溢出,則舍去,低位補0。
邏輯右移>>:二進制數整體左移,低位若溢出,則舍去,高位補0。
校驗碼:
碼距:從A碼到B碼轉換所需要改變的位數稱為碼距,一般來說碼距越大,越利於糾錯和檢錯。
(1)單個編碼A:00 ,碼距為1;
(2)在兩個編碼中,A:00要轉換為B:11,碼距為2。
奇偶校驗碼:在編碼中增加1位校驗位來使編碼中1的個數變為奇數(奇校驗)或者偶數(偶檢驗),從而使碼距變為2。
例子:編碼 01101,使用奇校驗,編碼成011010。(規則是1的個數為奇數個)
偶檢驗同理,只是編碼中有偶數個1,奇偶校驗只能檢1位錯,並且無法糾錯。
循環冗余校驗碼CRC:
CRC只能檢錯,不能糾錯,其原理是找出一個能整除多項式的編碼,將原始報文除以多項式,將所得的余數作為檢驗位加在原始報文之后,作為發送數據發給接收方。
CRC由兩部分組成,左邊為信息碼(原始數據),右邊為校驗碼,檢驗碼是由信息碼產生的,校驗碼位數越長,校驗能力越強。求CRC編碼時,采用的是模2運算(按位運算,不發生借位和進位)。
例子:原始報文為:11001010101,生成多項式為:x^4+x^3+x+1(得11011,根據是否有x^k得來)
(1)首先根據多項式得出除數11011,在原始多項式后面加上多項式最高指數個數個0,即4個0
(2)和除數進行模2除法(同0非1),被除數一直上1,最終得出四位的余數為0011。
(3)最終編碼為11001010101 0011,然后發送出去。
(4)接收方將收到的數據110010101010011與多項式的11011進行模2運算,若余數為0,說明校驗正確,數據傳輸正確。
海明校驗碼:
海明碼:本質也是利用奇偶性來檢錯和糾錯的檢驗方法,構成方法是在數據位之間確定的位置上插入k個校驗位,通過擴大碼距實現檢錯和糾錯。
設數據位是n位,校驗位是k位,則n和k必須滿足:2^k-1 >= n+k
例:求信息1011的海明碼
(1)校驗位的位數和具體的數據位的位數之間的關系:所有位都編號,從最低位編號開始,從1開始遞增,校驗位處於2的n次方中,即處於第1,2,4,8,16,32,...位上,其余位才能填充真正的數據位。
(2)若信息數據為1011,則第1,2,4位為校驗位,第3,5,6,7位為數據位,用來從低位開始存放1011。
(3)每一位校驗碼的計算公式:
1、將信息位拆分為二進制表示方式,如7=4+2+1,由第4校驗位(r2)、第2校驗位(r1)、第1校驗位(r0)共同校驗,同理,6=4+2,5=4+1,3=2+1
2、2^n都是校驗位,可知,第4位校驗位校驗第7 6 5三位數據位,因此第4位校驗位r2等於這3位數據位的值得異或。(第2校驗位和第1校驗位原理同上)。
3、計算完成后結果為:1010101。
檢錯和糾錯原理:
(1)接收方接收到海明碼后,會將每一位校驗位與其校驗的位數分別異或,
如果是偶校驗,那么運算結果應該全為0,如果是奇校驗,應該全為1,才是正確的。
假設是偶校驗,且接收到的數據為1011101(第4位出錯),此時,運算的結果為:
這里不全為0,表明傳輸過程有誤,並且按照r2r1r0排列為二進制100,這里指出的就是錯誤的位數,表示第100,
發現錯誤位置的方法就是二進制100轉換成十進制4,就是第4位出錯,糾錯方法就是將該位逆轉。
計算機體系結構分類
Flynn分類法:
(1)SISD 單指令流單數據流,
(2)SIMD 單指令流多數據流,各處理器以異步的形式執行同一條指令,如:並行處理機、
(3)MISD 多指令流單數據流,被證明不可能,
(4)MIMD 多指令流多數據流,
指令流對應控制部分,數據流對應處理器。
計算機指令:
計算機指令的組成:由操作碼和操作數兩部分組成。
操作碼:要完成的操作
操作數:參加運算的數據及其所在的單元地址
計算機指令執行過程:取指令--分析指令--執行指令三個步驟:
(1)將程序計數器PC中的指令地址取出,送入地址總線,
(2)CPU依據指令地址去內存中取出指令內容存入指令寄存器IR,
(3)由指令譯碼器進行分析,分析指令操作碼,
(4)執行指令,取出指令執行所需的源操作數。
指令尋址方式:
(1)順序尋址方式,當執行一段程序時,是一條指令接着另一條指令地順序執行
(2)跳躍尋址方式,下一條指令的地址碼不是由程序計數器給出,而是由本條指令直接給出。程序跳躍后,按新的指令地址開始順序執行。因此程序計數器的內容也必須相應改變,以便及時跟蹤新的指令地址。
指令操作數的尋址方式:
(1)立即尋址方式:指令的地址碼字段指出的不是地址,而是操作數本身。
(2)直接尋址方式:指令的地址字段中直接指出操作數在主存中的地址。
(3)間接尋址方式:指令地址字段所指向的存儲單元中存儲的是操作數的地址。
(4)寄存器尋址方式:指令中的地址碼是寄存器的編號。
指令系統:
(1)CISC(復雜指令系統),指令數量多,使用頻率差別大2,8,可變長格式,尋址方式支持多,微程序控制技術,兼容性強。
(2)RISC(精簡指令系統),指令數量少,使用頻率接近,定長格式,大部分單周期指令,尋址方式少,增加了通用寄存器,采用硬布線邏輯控制為主,適合采用流水線,優化編譯,有效支持高級語言。
指令流水線:
指令分成不同段,每段由不同的部分去處理,因此可以產生疊加的效果,所有的部件去處理指令的不同段。
流水線相關計算:
流水線周期:(一條指令開始到下一條指令的最晚開始時間)指令分成不同執行段,其中執行時間最長的段為流水線周期。
流水線執行時間:1條指令總執行時間 +(總指令條數-1)* 流水線周期。
流水線吞吐率:總指令條數 / 流水線執行時間
流水線加速比:不使用流水線總執行時間 / 使用流水線總執行時間
注意:1秒=10^9納秒,k段流水線,時間t,那么1條指令總執行時間為kt。
超標量流水線技術:常規流水線是度為1的,即每個流水線階段只執行一個部分,當度大於1,就是超標量技術。
當度為3時,相當於3條流水線並行執行,即取指、分析、執行每個階段都同時處理3條指令,因此,當題目提到度的概念時,計算時需要將:指令條數=指令條數 / 度,然后再套流水線執行時間的公式。
存儲系統
兩級存儲:Cache-主存,主存-輔存(虛擬存儲體系)
局部性原理:在cpu運行時,所訪問的數據會趨向於一個較小的局部空間地址內。
時間局部性原理:相鄰的時間里會訪問同一個數據項。
空間局部性原理:相鄰的空間地址會被連續訪問。
高速緩存Cache
高速緩存Cache用來存儲當前最活躍的程序和數據,直接與CPU交互,位於CPU和主存之間,容量小,速度為內存的5-10倍,內容是主存內存的副本拷貝,對於程序員來說是透明的。
Cache由控制部分和存儲器組成,存儲器存儲數據,控制部分判斷cpu要訪問的數據是否在Cache中,在則命中,不在則依據一定的算法從主存中替換。
地址映射:在CPU工作時,送出的是主存單元的地址,而應從Cache存儲器中讀/寫信息。這就需要將主存地址轉換為Cache存儲器地址,這種地址的轉換稱為地址映像,由硬件自動完成映射,分為以下三種:
(1)直接映射:將Cache存儲器等分成塊,主存也等分成塊並編號。主存中的塊與Cache中塊的對應關系是固定的,也即二者塊號相同才能命中,最容易發成沖突。
(2)全相聯映像:同樣都等分成塊並編號。主存中任意一塊都與Cache中任意一塊對應。最不容易發生塊沖突的映像方式。
(3)組組相連映像:前面兩種方式的結合,將Cache存儲器先分塊再分組,主存也同樣先分塊再分組,組間采用直接映像,即主存中組號與Cache中組號相同的組才能命中,但是組內全相聯映像,也即組號相同的兩個組內的所有塊可以任意調換。
Cache置換算法:
(1)隨機算法。簡單地根據一個隨機數,選擇一塊替換掉。
(2)先進先出算法。按調入Cache的先后決定淘汰的順序,在需要更新時,將最先進入cache的塊作為被替換的塊。
(3)近期最少使用LRU,把CPU近期最少使用的塊作為被替換的塊。隨時記錄cache中各塊使用情況。
(4)最不經常使用頁置換LFU,置換引用計數最小的頁,LFU復雜度以及計數器規模都比比LRU大。LRU只關注近期訪問情況,而LFU會統計累計訪問次數作為淘汰的依據。
主存編址:
地址編號從80000H到BFFFFH且按字節編址的內存容量為()KB,若用16K*4bit的存儲器芯片構成該內存,共需()片。
1、1K = 1024 ,1Byte字節 = 8bit位,內存單元個數*內存單元大小。
內存單元個數 = 末地址 - 首地址 + 1。
C0000H - 80000H = 40000H,按字節編址 = 每個內存單元占1字節,按雙字節編址則*2。
40000HB * 1B = 4*16^4 = 4 * (2^4)^4 = 4*2^16 = 2^18 B = 2^8KB ,( 2^10 = 1024)
2、16K*4bit = 8KB = 2^13B ,2^18 / 2^13 = 32
磁盤結構:
磁盤有正反兩個盤面,每個盤面有多個同心圓,每個同心圓是一個磁道,每個同心圓又被划分為多個扇區,數據就被存放在一個個扇區中。
磁頭首先要尋找到對應的磁道,然后等待磁盤進行周期旋轉,旋轉到指定的扇區,才能讀取到對應的數據,因此,會產生尋道時間和等待時間。
存取時間 = 尋道時間 + 等待時間(平均定位時間+轉動延遲)
注意:尋道時間是指磁頭移動到磁道所需的時間;等待時間為等待讀寫的扇區轉到磁頭下方所用的時間。
總線結構:
任何連接兩個以上電子元器件的導線都可以稱為總線。通常分為以下三類:
內部總線:內部芯片級別的總線,芯片與處理器之間通信的總線。
系統總線:板級總線,用於計算機內各部分之間的連接,具體分為數據總線(並行數據傳輸位數)
地址總線:系統可管理的內存空間大小
控制總線:傳送控制命令,ISA總線、EASI總線、PCI總線。
外部總線:設備一級的總線,微機和外部設備的總線,RS232(串行總線)SCSI(並行總線)USB(通用串行總線)
串行總線:適合長距離低速數據傳輸
並行總線:適合短距離高速數據傳輸
半雙工/全雙工:同一時間只有1個還是兩個方向上數據傳輸。
系統可靠性分析:
平均無故障時間MTTF = 1/失效率
平均故障修復時間MTTR = 1/修復率
平均故障間隔時間MTBF = MTTF + MTTR
系統可靠性 = MTTF / (MTTF + MTTR) * 100%
串聯系統:一個設備不可靠,整個系統奔潰:R = R1 * R2 * ... * Rn
並聯系統:所有設備都不可靠,整個系統奔潰(先計算不可靠時間):R = 1- (1 - R1)*(1 - R2)* ... *(1-Rn)
混合系統:划分串聯、並聯。
例題: