第1章 計算機系統概論
教材課後思考題與習題:
1.1 什麼是計算機系統、計算機硬件和計算機軟件?硬件和軟件哪個更重要?
- 計算機系統:由硬件和軟件兩大部分組成。
- 計算機硬件:是指計算機的實體部分,它由看得見摸得着的各種電子元器件,各類光、電、機設備的實物組成,如主機、外部設備等。
- 計算機軟件:看不見摸不着,由人們事先編制的具有各類特殊功能的程序組成。用來充分發揮硬件功能,提高機器工作效率,便於人們使用機器,指揮整個計算機硬件系統工作的程序集合。
- 軟件和硬件都很重要。
1.2 如何理解計算機系統的層次結構?
從上至下進行分層,一般可分爲5層:
1.3 說明高級語言、彙編語言和機器語言的差別及其聯繫?
- 機器語言:由0、1代碼組成,是機器能夠識別的一種語言
- 彙編語言:是面向機器的語言,它由一些特殊的符號表示指令
- 高級語言:是面向用戶的語言,它是一種接近於數學的語言,直觀,通用,與具體的機器無關
1.4 如何理解計算機組成和計算機體系結構
計算機體系結構:
- 指那些能夠被程序員所見到的計算機系統的屬性,即概念性的結構與功能特性。
- “計算機系統的屬性”通常是指用機器語言編程的程序員所看到的傳統機器的屬性,包括指令集、數據類型、存儲器尋址技術、I/O機理等,大都屬於抽象的屬性。
計算機組成:
- 是指如何實現計算機體系結構所體現的屬性,它包含了許多對程序員來說是透明的硬件細節
舉例說明區別:
- 指令系統體現了機器的屬性,這是屬於計算機結構的問題。但是指令的實現,即如何取指令、分析指令、取操作數、運算、送結果等,這些都是屬於計算機組成問題。
1.5 馮·諾依曼計算的特點是什麼?
特點:
- 計算機由運算器、存儲器、控制器、輸入設備和輸出設備五大部件組成。
- 指令和數據以同等地位存放於存儲器內,並可按地址尋訪。
- 指令和數據均以二進制數表示。
- 指令由操作碼和地址嗎組成,操作碼用來表示操作的性質,地址碼用來表示操作數在存儲器中的位置。
- 指令在存儲器內按順序存放。通常,指令是順序執行的,在特定條件下,可根據運算結果或根據設定的條件改變執行順序。
- 機器以運算器爲中心,輸入輸出設備與存儲器間的數據傳送通過運算器完成。
1.6 畫出計算機硬件組成框圖,說明各部件的作用及計算機硬件的主要技術指標。
運算器:用來完成算數運算和邏輯運算,並將運算的中間結果暫存在運算器的寄存器內,包括3個寄存器和1個算邏運算單元
- ALU:(Arithmetic Logic Unit),算邏部件,用來完成算數邏輯運算
- ACC:(Accumulator),累加器,是寄存器,用來存放操作數,如被加數及和,被減數及差,乘積高位,被除數及係數。
- MQ:(Multiplier-Quotient Register),乘商寄存器,在乘法中用來存放乘數及乘積低位,在除法中用來存放商
- X:操作數寄存器,用來存放:加數、減數、被乘數、除數
控制器:用來控制、指揮程序和數據的輸入、運行及處理運算結果
- CU:(Control Unit),控制單元,用來解釋存儲器中的指令,併發出各種操作命令來執行指令
- PC:(Program Counter),程序計數器,也是一個寄存器,用來存放當前欲執行指令的地址,它與主存的MAR之間有一條直接通路,且具有自動加1的功能,即可自動形成下一條指令的地址。
- IR:(Instruction Register),指令寄存器,用來存放當前的指令,IR的內容來自主存的MDR。
主存儲器:用來存放數據和程序
- MAR:(Memory Address Register),是存儲地址寄存器,用來存放欲訪問的存儲單元的地址
- MDR:(Memory Data Register),是存儲器數據寄存器,用來存放從存儲體某單元取出的代碼或者準備往某存儲單元存入的代碼,其位數與存儲字長相等。
硬件的主要技術指標:
- 機器字長:指CPU一次能處理數據的位數,通常與CPU的寄存器位數有關
- 存儲容量:包括主存儲容量和輔存儲容量,存放二進制代碼的總數=存儲單元個數 * 存儲字長
- 運算速度:
- 主頻、Gibson法
- MIPS(Million Instruction Per Second)每秒執行百萬條指令
- CPI(Cycle Per Instruction)執行一條指令所需時鐘週期數
- FLOPS(Floating Point Operation Per Second)每秒的浮點運算次數
1.7 解釋概念:主機、CPU、主存、存儲單元、存儲元件、存儲基元、存儲元、存儲字、存儲字長、存儲容量、機器字長、指令字長
- 主機:CPU和主存儲器合起來又可稱爲主機
- CPU:運算器和控制器合起來統稱爲中央處理器(CPU)
- 主存:是存儲器子系統的一類,用來存放程序和數據,可以直接與CPU交換信息
- 存儲單元:由若干個連續的存儲元件構成,是組成存儲體的單元
- 存儲元件、存儲基元、存儲元:是構成存儲單元的單位,每個存儲(基)元只能寄存一位二進制代碼0或1
- 存儲字:一個存儲單元可存儲一串二進制代碼,稱這串二進制代碼爲一個存儲字
- 存儲字長:存儲字所對應的二進制代碼的個數稱爲存儲字長
- 存儲容量:存儲單元個數 * 存儲字長,存儲容量包括主存容量和輔存容量
- 機器字長:指CPU一次能處理數據的位數,通常與CPU寄存器位數有關
- 指令字長:一條指令在計算機中用一串二進制代碼表示,此二進制代碼的個數稱爲指令字長
1.8 解釋英文代號:CPU、PC、IR、CU、ALU、ACC、MQ、X、MAR、MDR、I/O、MIPS、CPI、FLOPS
- CPU:(Central Processing Unit),中央處理器
- PC:(Program Counter),程序計數器(控制器中的一個寄存器)
- IR:(Instruction Register),指令寄存器(控制器中的一個寄存器)
- CU:(Control Unit),控制單元
- ALU:(Arithmetic Logic Unit),算術邏輯運算單元
- ACC:(Accumulator),累加器(運算器中的一個寄存器)
- MQ:(Multiplier-Quotient Register),乘商寄存器(運算器中的一個寄存器)
- X:操作數寄存器(運算器中的一個寄存器)
- MAR:(Memory Address Register),是存儲器地址寄存器
- MDR:(Memory Data Register),是存儲器數據寄存器
- I/O:(Input / Output Equipment),輸入輸出設備
- MIPS:(Million Instruction Per Second)每秒執行百萬條指令
- CPI:(Cycle Per Instruction)執行一條指令所需時鐘週期數
- FLOPS:(Floating Point Operation Per Second)每秒的浮點運算次數
1.9 畫出主機框圖,分別以存數指令“STA M”和加法指令“ADD M”(M均爲主存地址)爲例,在圖中按序標出完成該指令(包括取指階段)的信息流程。假設主存容量爲256M*32位,在指令字長、存儲字長、機器字長相等的條件下,指出圖中各寄存器的位數。
- STA M指令:將ACC中的數據,存放進主存儲器
- 取指令:PC→MAR,MAR→[M],[M]→MDR,MDR→IR
- 分析指令:OP(IR)→CU
- 執行指令:Ad(IR)→MAR,ACC→MDR,MAR→[M]
- ADD M指令:將地址爲M的存儲單元中的加數取出並送至運算器中,然後和存放在運算器的被加數通過ALU(算術邏輯單元)相加,結果仍放在運算器中。結合上面的主機框圖,設運算器中ACC存放被加數,X存放加數,求和結果存放在ACC中 。故完成ADD M指令的信息流程爲:
- 取指令:PC→MAR,MAR→[M],[M]→MDR,MDR→IR
- 分析指令:OP(IR)→CU,
- 執行指令:
- Ad(IR)→MAR,[M]→MDR,MDR→X
- ACC→ALU,同時 X→ALU
- ALU→ACC
- 假設主存容量256M*32位,在指令字長、存儲字長、機器字長相等的條件下,ACC、X、IR、MDR寄存器均爲32位,256M=2^28,因此PC和MAR寄存器均爲28位。
1.10 根據迭代公式 ,設初態 ,要求精度爲,試編制求的解題程序(指令系統自定),並結合所編程序簡述計算機的解題過程。
牛頓迭代法開根號:精度是
自定義一個指令系統如下:
操作碼 | 操作性質 |
000111 | 除:將ACC中的數與指令地址碼指示的存儲單元中的數相除,結果存於ACC中 |
001000 | 減:將ACC中的數與指令地址碼指示的存儲單元中的數相減,結果存於ACC中 |
001001 | 取絕對值:將ACC中的數取絕對值,結果存於ACC中 |
001010 | 將ACC中的數與0做比較,小於則繼續執行下一條指令,大於則跳轉到地址碼指示的存儲單元上的指令 |
題中事先存入單元中:
主存地址 | 指令 | 註釋 | |
操作碼 | 地址碼 | ||
0 | 000001 | 17 | 取數至ACC |
1 | 000010 | 16 | 將ACC中存到所在的單元中 |
2 | 000001 | 13 | 取數x至ACC中 |
3 | 000111 | 16 | 除得 x/ 存於ACC中 |
4 | 000100 | 16 | 加得 + x/ 存於ACC中 |
5 | 000111 | 15 | 除2得( + x/)/2 存於ACC中 |
6 | 000010 | 17 | 存數,將( + x/)/2 存於單元中 |
7 | 001000 | 16 | 減得 - 存於ACC中 |
8 | 001001 | - | 取絕對值 得| - | 存於ACC中 |
9 | 001000 | 14 | | - | - 存於ACC中 |
10 | 001010 | 0 | 比較 |
11 | 000101 | 17 | 打印 |
12 | 000110 | - | 停機 |
13 | x | ||
14 | |||
15 | 2 | ||
16 | |||
17 |
1.11 指令和數據都存於存儲器中,計算機如何區分它們?
計算機硬件主要通過不同的時間段來區分指令和數據,即:取指週期(或取指微程序)取出的即爲指令,執行週期(或相應微程序)取出的即爲數據。
另外也可以通過地址來源區分,從PC指出的存儲單元取出的是指令,由指令地址碼部分提供操作數地址。
1.12 什麼是指令?什麼是程序?
指令:認爲輸入計算機,由計算機識別並執行一步步操作的命令的形式稱爲指令。
程序:一系列指令的有序集合稱爲程序。
配套學習指導與習題解答:(部分)
1.1 設主存儲器通量爲64K * 32位,並且指令字長、存儲字長、機器字長三者相等。寫出主機框圖中各寄存器的位數,並指出哪些寄存器之間有信息通路。
由主存儲器容量可知,2^16 = 64 K,因此MAR爲16位,由於PC到MAR有一條直接的信息通路,因此PC也是16位。MDR爲32位,因指令字長=存儲字長=機器字長,則IR、ACC、MQ、X均爲32位。
寄存器之間的通路有:
- PC→MAR
- Ad(IR)→MAR
- MDR→IR
- 取數 MDR→ACC, 存數 ACC→MDR
- MDR→X