計算機系統構成及基礎硬件知識
占比:5%
一、數值轉換
1.1數的轉換
1.1.1 R進制轉換成十進制
例:
指數K:小數點左邊為當前位為小數點左邊的第幾位-1
小數點右邊為當前位為小數點右邊的第幾位取負號
1.1.2 十進制轉換成R進制
使用的方法為短除法
十進制轉換成二進制
例:
1.1.3 二進制轉換成八進制
二進制轉換成八進制,將二進制的數字從右邊開始,每三個一組(最左邊的一組不夠三個的話從左邊補零),將分好組的三個二進制數對應換算成八進制數(按照換成十進制數的方法)
1.1.4 二進制轉換成十六進制
二進制轉換成十六進制,將二進制的數字從右邊開始,每四個一組(最左邊的一組不夠四個的話從左邊補零),將分好組的四個二進制數對應換算成十六進制數(按照換成十進制數的方法)
二、數的表示
2.1原碼
符號位(SF):0代表正,1代表負
2.2反碼
符號位(SF):0代表正,1代表負
正數的反碼等於原碼,負數的反碼等於原碼除符號位外按位取反
2.3補碼
符號位(SF):0代表正,1代表負
證書的補碼等於原碼,負數的補碼等於反碼末尾加一
2.4移碼
補碼的符號位取反
2.5浮點數
2.5.1 浮點數表示
2.5.2 浮點數運算
- 對階:對階的目的是讓兩個數小數點的位置看齊,使這兩個數的階碼相等。顯然1×2^3和1.1×2^4是不能直接相加減的。原則是小階向大階看齊,像這個例子,就是1.1×2^3的尾數右移一位,階碼加一,直到兩個數的階碼相等。
- 尾數求和:階碼對齊之后就可以直接按照定點數的加減法則運算尾數了。
- 規格化:尾數求和后的結果如果不是規格化數需要規格化,以雙符號位運算為例的話,如果運算結果為正數,規格化的形式應該是1xxx......x,如果運算結果為負數,規格化后的形式應該是11.0xxx......x,不符合這種形式的數要進行左規或者右規的操作讓其變成這種形式。(在尾數沒有溢出的情況下,即尾數結果的雙符號為不是10或01的時候,操作都是左規操作,左規操作可能不止進行一次,倘若雙符號位為01或10則表明尾數已經溢出了,就要進行右規操作,右規只需要進行一次)
- 舍入:在對階和右規的操作中,我們都是將尾數右移,階碼加一,由於我們的位數是有限的,在右移的操作過程中很有可能就將低位的尾數丟失了,這會引起誤差和精度問題。常用的減小誤差的方法有“0”舍“1”入法:即在尾數右移時,被移去的最高數值位為0則舍去,如果被移去的最高數值位為1則在尾數末位加1,如果加1之后又產生溢出則再右規操作一次。恆置“1”法:看名字就可以知道,無論丟掉的最高數值位是1還是0,都使右移后的尾數末位置1。這種方法可能使尾數變大或者變小。
- 溢出判斷:既然定點數運算可能溢出,浮點數同樣也會溢出,我們已經知道浮點數的表示方法和加減運算規則,既然是溢出,那么肯定是超出了浮點數能表示的范圍,浮點數的范圍主要是由階碼決定的,如果運算結果規格化后階碼產生了溢出,那才是浮點數的溢出。浮點數的溢出與否是由階碼的符號決定的。以雙符號位的補碼為例,如果階碼的符號位出現01或10則說明階碼溢出了,01表示階碼大於最大階碼,上溢,進入中斷處理;10表示階碼小於最下階碼,下溢,按機器零處理。(溢出時真值的符號位和高位符號位保持一致)還要注意的一點是尾數之和(差)可能會造成尾數的溢出,這並不代表整個的溢出,需要右規一次看階碼是否溢出才能判斷。
三、計算機體系結構
完整的計算機硬件系統:
- CPU中央處理器(由運算器和控制器)控制器(Control):是整個計算機的中樞神經,其功能是對程序規定的控制信息進行解釋,根據其要求進行控制,...
內存儲器和中央處理器合稱為主機
不屬於主機的有外存儲器、輸入設備、輸出設備稱為外設
- 存儲器(Memory):存儲器的功能是存儲程序、數據和各種信號、命令等信息,並在需要時提供這些信息。
3.輸入(Input system):輸入設備是計算機的重要組成部分,輸入設備與輸出設備合稱為外部設備,簡稱外設,輸入設備的作用是將程序、...
4.輸出(Output system):輸出設備與輸入設備同樣是計算機的重要組成部分,它把外算機的中間結果或最后結果、機內的各種數據符號及...
3.1 運算器
進行算數和邏輯運算的部件,運算數據以二進制格式數據
運算數據可以來在存儲器,也可以來自輸入設備
運算結果可以寫入存儲器,也可以由輸出設備輸出
運算器由算數邏輯運算部件和一些寄存器組成,寄存器主要用於存放操作數、結果、操作數地址
3.2 控制器
主要是協調整個計算機的正常工作,主要包括:
四、計算機的組成
4.1 計算機體系結構
計算機由硬件和軟件組成,硬件是軟件組成的物理基礎
4.2 基本概念
總線
CPU性能指標
CMOS:
指令:
計算機體系結構的分類:
CISC與RISC
並行/多處理機
流水線
周期:2=2>1 周期是2
100條指令全部執行完畢所需要的時間:(2+2+1)+(100-1)*2
流水線的吞吐率與效率
4.3 計算機基礎
多吸存儲器結構
Cache
主存-編址與計算
首先計算內存空間的大小:43FFH-4000H+1=1024 共有1024個存儲單元
每個單元可存儲16位 則共有1024*16bit
4片存儲芯片構成,求每一片的存儲容量:(1024*16bit)/4=256*16bit
存儲器的分類:
五、尋址方式
5.1 立即尋址
5.2 直接尋址
5.3 間接尋址
5.4 寄存器尋址
5.5 寄存器間接尋址
5.6 變址尋址
5.7 基址尋址
5.8 相對尋址
5.9 計算機可靠性模型
串聯系統與並聯系統
混合系統
六、校驗碼
為保證數據傳輸的准確性
碼距是指一個編碼系統中任意兩個合法編碼之間至少有多少個二進制位不同。
6.1 奇偶校驗碼
6.2 CRC
CRC校檢碼的計算
設信息字段為K位,校驗字段為R位,則碼字長度為N(N=K+R)。設雙方事先約定了一個R次多項式g(x),則CRC碼:
V(x)=A(x)g(x)=xRm(x)+r(x)
其中: m(x)為K次信息多項式, r(x)為R-1次校驗多項式。
這里r(x)對應的代碼即為冗余碼,加在原信息字段后即形成CRC碼。
r(x)的計算方法為:在K位信息字段的后面添加R個0,再除以g(x)對應的代碼序列,得到的余數即為r(x)對應的代碼(應為R-1位;若不足,而在高位補0)。
計算示例:
設需要發送的信息為M = 1010001101,產生多項式(g(x)=x5+x4+x2+1)對應的代碼為P = 110101,R=5(最高項的次數是5)。在M后加5個0,然后對P做模2除法運算,得余數r(x)對應的代碼:01110。故實際需要發送的數據是101000110101110。(101000110100000/110101)=a……01110
當接收方收到數據后,用收到的數據對P(事先約定的)進行模2除法,若余數為0,則認為數據傳輸無差錯;若余數不為0,則認為數據傳輸出現了錯誤,由於不知道錯誤發生在什么地方,因而不能進行自動糾正,一般的做法是丟棄接收的數據。
6.3 海明校驗碼
設數據位是n位,校驗位是k位,則n和k必須滿足關系: 2ᵏ-1>=n+k
設有數據為8位,那么 2⁴-1=15>8+4=12,則校驗位為4位,即這個海明碼長12位
令信息位為D7,D6,D5,D4,D3,D2,D1,D0,信息位從高往低占據編碼位;
令校驗位為P3,P2,P1,P0,校驗位P0=2⁰=1,P1=2¹=2,P2=2²=4,P3=2³=8;
形成的海明碼編碼過程如下:
信息位D7的位數為12,12=8+4,所以D7的校驗位組為P3(位數:8)和P2(位數:4),即信息位的位數=校驗位組的位數之和。
由上表可得,P0參與了D0,D1,D3,D4,D6的檢驗,其他由此類推
P0=D0⊕D1⊕D3⊕D4⊕D6
P1=D0⊕D2⊕D3⊕D5⊕D6
P2=D1⊕D2⊕D3⊕D7
P3=D4⊕D5⊕D6⊕D7
這樣子就可以算出整個海明碼的值了。
例子:
設數據為01101001,求海明碼。
數據位為8,則2⁴-1=15>8+4=12,則校驗位為4位,即這個海明碼長12位;
D7D6D5D4D3D2D1D0=01101001;
P0=2⁰=1,P1=2¹=2,P2=2²=4,P3=2³=8;
P0=D0⊕D1⊕D3⊕D4⊕D6=1⊕0⊕1⊕0⊕1=1
P1=D0⊕D2⊕D3⊕D5⊕D6=1⊕0⊕1⊕1⊕1=0
P2=D1⊕D2⊕D3⊕D7=0⊕0⊕1⊕0=1
P3=D4⊕D5⊕D6⊕D7=0⊕1⊕1⊕0=0
則海明碼為011001001101
七、習題練習
1、計算機的用途不同,對其部件的性能指標要求也有所不同。以科學計算為主的計算機,對(B)要求較高,而且應該注重考慮(A)
(1)
A、外存儲器的讀寫速度
B、主機的運算速度
C、I/O設備的速度
D、顯示分辨率
(2)
A、CPU的主頻和字長
B、硬盤的讀寫速度和字長
C、CPU的主頻和顯示分辨率
D、硬盤讀寫速度和顯示分辨率
考點:
計算機的用途不同,對其部件的性能指標要求也有所不同。
- 用作科學計算為主的計算機,對主機的運算速度要求較高
- 用作大型數據庫處理為主的計算機,其對主機的內存容量、存取速度和外存儲器的讀寫速度要求較高
- 用作網絡傳輸的計算機,則要求有很高的I/O速度,因此應當由高速的I/O總線和相應的I/O接口。計算機的運算速度常用每秒鍾執行的指令的數量來衡量。
2、(B)按內容訪問的存儲器。
A、虛擬存儲器
B、相聯存儲器
C、磁盤
D、隨機訪問存儲器
考點:
計算機系統的存儲器按所處的位置可分為內存和外存。
按構成存儲器的材料可分為磁存儲器、半導體存儲器和光存儲器
按存儲器的工作方式可分為讀寫存儲器和只讀存儲器
按訪問方式可分為按地址訪問的存儲器和按內容訪問的存儲器
按尋址方式可分為隨機存儲器、順序存儲器、直接存儲器
(磁盤時一種直接存取存儲器、相聯存儲器是一種按內容訪問的存儲器)
3、處理機主要由處理器、存儲器、和總線組成,總線包括(A)
A、數據總線、地址總線、控制總線
B、並行總線、串行總線、邏輯總線
C、單工總線、雙工總線、外部總線
D、邏輯總線、物理總線、內部總線
4、在輸入輸出控制方法中,采用(C)可以使得設備與主存間的數據塊傳輸無需CPU的干預
A、程序控制輸入輸出
B、中斷
C、DMA
D、總線控制
考點:
DMA的出現就是為了解決批量數據的輸入/輸出問題。DMA是指外部設備不通過CPU而直接與系統內存交換數據的接口技術。這樣數據的傳送速度就取決於存儲器和外設的工作速度。
通常系統總線是由CPU管理的,在DMA方式時,就希望CPU把這些總線讓出來,即CPU連到這些總線上的線處於第三態(高阻狀態),而由DMA控制器接管,控制傳送的字節數,判斷DMA是否結束,以及發出DMA結束信號。因此DMA控制器必須有以下功能:
1、能向CPU發出系統保持(HOLD)信號,提出總線接管請求;
2、當CPU發出允許接管信號后,負責對總線的控制,進入DMA方式;
3、能對存儲器尋址及能修改地址指針,實現對內存的讀寫;
4、能決定本次DMA傳送的字節數,判斷DMA傳送是否借宿。
5、發出DMA結束信號,使CPU恢復正常工作狀態。
5、若計算機采用8位整數補碼標識數據,則運算(A)將產生溢出
A、127+1
B、-127-1
C、-127+1
D、127-1
考點:
-28-1~28-1-1=-128~127
6、若內存的容量為4GB,字長32,則(A)
A、地址總線和數據總線的寬度都為32
B、地址總線的寬度是30,數據總線的寬度是32
C、地址總線的寬度是30,數據總線的寬度是8
D、地址總線的寬度是32,數據總線的寬度是8
2^10=1024
1K=1024字節
1M=1024K=1024*1024
1G=1024M=1024*1024K=1024*1024*1024
也就是1G=2^30次方
4GB=4*230=232
考點:
字長是指在同一時間中CPU處理二進制數的位數
數據總線是用於計算機中傳輸數據的總線,它可以把CPU的數據傳送到存儲器或者輸入輸出接口等其他部件,也可以將其他部件的數據傳送到CPU。
數據總線的位數是微型計算機的一個重要指標,通常與微處理的字長一致。
地址總線是傳輸地址信息的總線,根據地址總線的多少可以確定內存容量的大小。
例子:
1、地址總線與存儲容量的關系
以32位地址總線為例
存儲容量=2^32=4*1024Mb=4*1024*1024Kb=4*1024*1024*1024BYTE=4G的容量
2、數據總線
數據總線決定處理機字長,處理機字長是指處理機能同事處理的位數。即32位數據總線決定它能處理32位字長。
7、設用2K*4位的存儲芯片組成16K*8位的存儲器(地址單元為0000H-3FFFH,每個芯片的地址空間連續),則地址單元0B1FH所在的芯片最小地址編號為()
A、0000H
B、2800H
C、2000H
D、0800H
考點:
位擴展:
字擴展:
字位擴展:
芯片的大小為2K*4位。要求的存儲器的大小為16K*8位,因此要得到這樣的一個存儲器,需要
(16/2)*(8/4)=16片 8組每組兩片
16K*8位的存儲器 需要14位的地址,2K是11位地址對應連接A0~A10,高三位做片選(23=8),
8組的地址范圍分別是:
一組:000 00000000000~000 11111111111
二組:001 00000000000~001 11111111111
三組:010 00000000000~010 11111111111
四組:011 00000000000~011 11111111111
五組:100 00000000000~100 11111111111
六組:101 00000000000~101 11111111111
七組:110 00000000000~110 11111111111
八組:111 00000000000~111 11111111111
題目中給出的0B1FHà00 1011 0001 1111 在二組的范圍里面 0800H
8、編寫匯編語言程序時,下列寄存器中程序員可訪問的是(D)
A、存儲器地址寄存器 MAR
B、指令寄存器 IR
C、存儲器數據寄存器 MDR
D、程序計數器 PC
考點:
程序計數器適用於存放下一條指令所在單元地址的地方。在程序執行前,必須將程序的起始地址,即程序第一條指令所在的內存單元的地址送入程序計數器,當指令執行的時候,CPU自動修改程序計數器中的內容,即每執行一條指令程序計數器增加一個量,使其指向下一個待執行的指令。程序的轉移等操作也是通過該寄存器實現的。
指令寄存器一般用來保存當前正在執行的一條指令。
存儲器數據寄存器主要是用來保存操作數和運算結果等信息的,其目的是為了節省讀取操作數所需占用總線和訪問存儲器的時間
存儲器地址寄存器一般用來保存當前CPU所訪問的內存單元的地址,以方便堆內存的讀寫操作。
作為程序員,應該要能控制其所編寫的程序的執行過程,這就需要程序計數器來實現。
9、若某無條件轉移匯編指令采用直接尋址,則該指令的功能是將指令中的地址碼送入(A)
A、PC(程序計數器)
B、AR(地址寄存器)
C、AC(累加器)
D、ALU(算數邏輯單元)
考點:
該無條件轉移指令:
操作碼(跳轉) |
操作數(直接地址) |
直接尋址:
10、若計算機系統的I/O接口與主存采用統一的編址,則輸入輸出操作時通過()指令來完成的(D)。
A、控制
B、中斷
C、輸入輸出
D、訪存
考點:
I/O接口與主存采用統一的編址,即I/O設備的編址與主存單元一樣看待,每個端口占用一個存儲單元的地址,其實就時將主存的一部分划出來作為I/O空間。訪存指令是指訪問內存的指令,顯然這里需要訪問內存才能找到相應的輸入輸出設備,因此需要訪存指令。
控制類指令通常是指程序控制類指令,用於控制程序流程改變的指令,包括條件轉移指令、無條件轉移指令、循環控制指令、程序調用和返回指令、中斷指令。