60道系統結構的簡答題,全部由個人整理,可能會有錯誤ORZ
歡迎捉蟲,捉蟲請直接留言_(:3」∠❀)_
1.簡述計算機系統的層次結構(從計算機語言的角度)。
- 第一級:微程序機器級
- 第二級:機器語言級(傳統機器級)
- 第三極:操作系統虛擬機
- 第四級:匯編語言虛擬機
- 第五級:高級語言虛擬機
- 第六級:應用語言虛擬機
2.什么是虛擬機?為什么要使用虛擬機?
- 虛擬機:由軟件實現的機器
- 以區別由硬件/固件直接實現的物理機器
3.什么是翻譯?什么是解釋?
- 翻譯:先把N+1級程序全部轉換成N級程序后,再去執行新產生的N級程序,在執行過程中N+1級程序不再被訪問
- 解釋:每當一條N+1級指令被譯碼后,就直接去執行一串等效的N級指令,然后再去取下一條N+1級的指令。依次重復進行
即 翻譯:逐程序譯碼,一起執行;解釋:逐句譯碼逐句執行
解釋執行比編譯后執行所畫的時間多但占用的存儲空間少
4.計算機系統結構、計算機組成和計算機實現三者之間的關系,並舉例說明。
- 計算機系統結構:計算機系統的軟、硬件的界面
即機器語言程序員所看到的傳統機器級所具有的屬性。
- 計算機組成:計算機系統結構的邏輯實現
包含物理機器級中的數據流和控制流的組成以及邏輯設計等。
着眼於:物理機器級內各事件的排序方式與控制方式、各部件的功能以及各部件之間的聯系。 - 計算機實現:計算機組成的物理實現
包括處理機、主存等部件的物理結構,器件的集成度和速度,模塊、插件、底板的划分與連接,信號傳輸,電源、冷卻及整機裝配技術等。
着眼於:器件技術(起主導作用)、微組裝技術。
例:
指令集中是否有乘法指令-->計算機系統結構的內容
是專門的乘法器完成?由多個加法器經過多步操作實現 -->組成原理
乘法器的硬件實現 --> 計算機實現
系統結構:目的
組成:方式
實現:底層
5.什么是軟件的可移植性?實現軟件可移植性的常用方法有哪三種?
- 可移植性即軟件兼容,指一個軟件不經修改或者秩序少量修改就可以由一台計算機移植到另一台計算機上運行
- 常用實現方法
- 系列機
- 模擬與仿真
- 統一高級語言
6.什么是模擬?什么是仿真?
- 模擬:用軟件方法在一台現有的宿主機上的微程序去解釋目標機的指令集,純軟件解釋執行
- 仿真:在一台現有的宿主機上的微程序去解釋目標機的指令集,用仿真微程序
模擬程序存放在主存中,仿真微程序存儲在控制存儲器中。
7.Flynn分類法將計算機系統結構分成哪四類?請簡述。
- SISD:單指令流單數據流
- SIMD:單指令多數據流(eg:分布式存儲器的SIMD處理機,向量超級計算機)
- MISD:多指令單數據流
- MIMD:多指令多數據流
8.請簡述程序局部性原理。
程序執行時所訪問的存儲器地址分布不是隨機的,而是相對地簇聚。
- 常用的一個經驗規則:程序執行時間的90%都是在執行程序中10%的代碼。
- 程序的時間局部性:程序即將用到的信息很可能就是目前正在使用的信息。
- 程序的空間局部性:程序即將用到的信息很可能與目前正在使用的信息
在空間上相鄰或者臨近。
9.簡述Amdahl定律。
- Amdahl定律內容:加快某部件執行速度所能獲得的系統性能加速比,受限於該部件的執行時間占系統中總執行時間的百分比。
- 系統性能加速比:\(加速比=\frac{系統性能_{改進后}}{系統性能_{改進前}}=\frac{總執行時間_{改進前}}{總執行時間_{改進后}}\)
- 程序執行的CPU時間公式:\(CPU時間=IC \times CPI \times 時鍾周期時間\)
10.影響CPU時間的因素包括什么?(提示:從CPU公式入手,考慮3個參數的影響因素)
- 時鍾周期時間:取決於硬件實現技術和計算機組成
- CPI:取決於計算機組成和指令集結構
- IC:取決於指令集結構和編譯技術
11.馮諾依曼體系結構的特點。
- 以運算器為中心。
- 在存儲器中,指令和數據同等對待。
- 存儲器是按地址訪問,順序編址
- 指令順序執行、分支轉移、PC計數
- 指令=操作碼+操作數
- 指令、數據二進制表示
12.簡述現代計算機對比馮諾依曼體系結構,在哪幾個方面進行了改進。
- 輸入輸出方式
- 並行處理技術
- 存儲器組織結構的發展
- 指令集的發展
13.什么是系列機?什么是兼容機?
- 系列機:由同一廠家生產的具有相同系統結構、但具有不同組成和實現的一系列不同型號的計算機。
- 兼容機:由不同公司廠家生產的具有相同系統結構的計算機 。
14.什么是軟件兼容?軟件兼容有幾種?其中哪一種是軟件兼容的根本特征?
- 一個軟件可以不經修改或者只需少量修改就可以由一台計算機移植到另一台計算機上正確地運行。差別只是執行時間的不同。我們稱這兩台計算機是軟件兼容的。
- 軟件兼容:
- 向上(下)兼容:按某檔機器編制的程序,不加修改就能運行於比它高(低)檔的機器。
- 向前(后)兼容:按某個時期投入市場的某種型號機器編制的程序,不加修改地就能運行於在它之前(后)投入市場的機器。
向后兼容是系列機的根本特征。
15.什么是並行性?
- 並行性:計算機系統在同一時刻或者同一時間間隔內進行多種運算或操作。只要在時間上相互重疊,就存在並行性。
- 同時性:兩個或兩個以上的事件在同一時刻發生。
- 並發性:兩個或兩個以上的事件在同一時間間隔內發生。
16.簡要說明提高計算機系統並行性的3種技術途徑,並分別從單機和多機系統的角度舉例。
- 時間重疊:
引入時間因素,讓多個處理過程在時間上相互錯開,輪流重疊地使用同一套硬件設備的各個部分,以加快硬件周轉而贏得速度。原則上不重復設置硬件設備。 - 資源重復:
引入空間因素,以數量取勝。通過重復設置硬件資源,大幅度地提高計算機系統的性能。 - 資源共享:
這是一種軟件方法,它使多個任務按一定時間順序輪流使用同一套硬件設備。如,多道程序。
17.增強CISC機器的指令功能主要從哪幾方面着手?
- 面向目標程序增強指令功能;
- 面向高級語言和編譯程序改進指令系統;
- 面向操作系統的優化實現改進指令系統。
18.簡述CISC存在的主要問題。
- CISC結構的指令系統中,各種指令的使用頻率相差懸殊。
- CISC結構指令系統的復雜性帶來了計算機系統結構的復雜性,這不僅增加了研制時間和成本,而且還容易造成設計錯誤。
- CISC結構指令系統的復雜性給VLSI設計增加了很大負擔,不利於單片集成。
- CISC結構的指令系統中,許多復雜指令需要很復雜的操作,因而運行速度慢。
- 在CISC結構的指令系統中,由於各條指令的功能不均衡性,不利於采用先進的計算機系統結構技術來提高統的性能。
19.簡述RISC的優缺點及設計RISC機器的一般原則。
- 選取使用頻率最高的指令,並補充一些最有用的指令。
- 條指令的功能應盡可能簡單,在一個機器周期內完成。
- 所有指令長度均相同。
- 只有load和store操作指令才訪問存儲器,其他指令操作均在寄存器之間進行。
- 以簡單、有效的方式支持高級語言。
20.根據CPU內部存儲單元類型,可將指令集結構分為哪幾類?
- 堆棧型指令集結構
- 累加器型指令結構
- 通用寄存器型指令結構
21.常見的三種通用寄存器型指令集結構是什么?
- 寄存器-寄存器型
- 寄存器-存儲器型
- 存儲器-存儲器型
22.計算機指令集結構設計所涉及的內容有哪些?
- 指令集功能設計:主要有RISC和CISC兩種技術發展方向。
- 尋址方式的設計。
- 操作數表示和操作數類型。
- 尋址方式的表示:可以將尋址方式編碼於操作碼中,也可以將尋址方式作為一個單獨的域來表示。
- 指令集格式的設計:有變長編碼格式、固定長度編碼格式和混合型編碼格式三種。
23.流水技術有哪些特點?
- 將處理過程分解為若干子過程,專門的功能部件來實現
- 各段的時間盡可能相等
- 各部件間都有一個緩沖寄存器
- 適於大重復的時序過程
- 需要通過時間和排空時間。
24.什么是靜態流水線?什么是動態流水線?
- 靜態流水線:同一時間段內,多功能流水線中的各段只能按同種功能的連接方式工作;
- 動態流水線:同時間段內,多功能流水線中的各段可以按照不同的方式連接同時執行多種功能。
25.什么是單功能流水線?什么是多功能流水線?
- 單功能流水線:只能完成一種固定功能的流水線。
- 多功能流水線:流水線的各段可以進行不同的連接,以實現不同的功能。
26.什么是線性流水線?什么是非線性流水線?
- 線性流水線:流水線的各段串行連接,沒有反饋回路。
- 非線性流水線:流水線中除了有串行的連接外,還有反饋回路。
27.列舉3種相關。
- 數據相關
- 名相關
- 控制相關
28.流水線中有哪三種沖突?各是什么原因造成的?
- 結構沖突:硬件資源滿足不了指令重疊執行的要求;
- 數據沖突:指令在流水線中重疊執行時需要用到前面指令的執行結果;
- 控制沖突:流水線遇到分支指令和其他會改變PC值的指令。
29.選擇至少2種解決流水線結構沖突的方法簡述。
- 流水線停頓一個時鍾周期,推遲后面的指令操作。
- 設置相互獨立的指令存儲器和數據存儲器。
30.選擇至少2種解決流水線數據沖突的方法簡述。
- 定向技術,將計算結果從其產生的地方直接送到其他指令需要的地方。
- 通過編譯時讓編譯器重新組織指令順來消除沖突。
31.選擇至少2種解決流水線控制沖突的靜態方法簡述。
- 預測分支失敗
- 預測分支成功
- 延遲分支
32.簡述流水寄存器的作用。
將各段的工作隔開使得相互不會干擾,保存相應各段的處理結果,向后傳到后面將要用到的數據或者控制信息。
33.簡述分支延遲槽的主要思想。
編譯器每當遇到分支指令,就在其后連續生成k個空指令位,稱為延遲槽,並根據不同的調度規則將原始代碼中分支指令附近的指令放進延遲槽中,如果延遲槽沒有填滿,剩余部分用nop指令填充,即氣泡。
延遲槽中的指令同分支指令都看做普通的指令順序流水,無論分支指令成功與否,都先按順序執行延遲槽中的指令。
延遲槽中的指令"掩蓋"了流水線原來必須插入的暫停周期,減少了分支指令帶來的延遲。
34.簡述分支延遲槽的三種調度策略。
- 從前調度:從分支指令之前找一條獨立的指令 移動到延遲槽中。
- 從目標處調度:把分支成功的目標地址指令復制到延遲槽中,並把分支目標地址改成分支后繼地址。永遠猜測分支是成功的,如果猜錯,則丟棄延遲槽中指令的結果。
- 從失敗處調度:把分支失敗的目標地址指令移動到延遲槽中。永遠猜測分支是失敗的。如果猜錯,則丟棄延遲槽中指令的結果。
35.簡述流水線凍結/排空策略。
在流水線中停住或刪除分支后的指令,直到知道轉移目標地址。
36.什么是靜態調度?什么是動態調度?動態調度的優點是什么?
- 靜態調度:依靠編譯器對代碼進行靜態調度,以減少相關和沖突。
它不是在程序執行的過程中、而是在編譯期間進行代碼調度和優化。通過把相關的指令拉開距離來減少可能產生的停頓。
- 動態調度
在程序的執行過程中,依靠專門硬件對代碼進行調度,減少數據相關導致的停頓。
能夠處理一些在編譯時情況不明的相關(比如涉及到存儲器訪問的相關),並簡化了編譯器;
能夠使本來是面向某一流水線優化編譯的代碼在其他的流水線(動態調度)上也能高效地執行。
37.簡述Tomasulo算法的基本思想。
- 記錄和檢測指令相關,操作數一旦就緒就立即執行,把發生RAW沖突的可能性減少到最小;
- 通過寄存器換名來消除WAR沖突和WAW沖突。
38.什么是動態分支預測?有何優點?
- 動態分支預測:在程序運行時,根據分支指令過去的表現來預測其將來的行為。如果分支行為發生了變化,預測結果也跟着改變。
有更好的預測准確度和適應性。 - 優點:
- 提高准確性
- 減少開銷,盡快找到分支目標地址(或指令)(避免控制相關造成流水線停頓)
- 有效的恢復現場
39.簡述分支歷史表BHT的基本思想。
- 用BHT來記錄分支指令最近一次或幾次的執行情況(成功或不成功),並據此進行預測。
40.簡述分支目標緩沖器BTB的基本思想。
將分支成功的分支指令的地址和它的分支目標地址都放到一個緩沖區中保存起來,緩沖區以分支指令的地址作為標識。
這個緩沖區就是分支目標緩沖器(Branch-Target Buffer,簡記為BTB,或者Branch-Target Cache)。
41.簡述基於硬件的前瞻算法基本思想。
對分支指令的結果進行猜測,並假設這個猜測總是對的,然后按這個猜測結果繼續取、流出和執行后續的指令。只是執行指令的結果不是寫回到寄存器或存儲器,而是放到一個稱為ROB(ReOrder Buffer)的緩沖器中。等到相應的指令得到“確認”(commit)(即確實是應該執行的)之后,才將結果寫入寄存器或存儲器。
- 實現前瞻的關鍵思想:
允許指令亂序執行,但必須順序確認。
42.單級存儲器的主要矛盾是什么?通常采取什么方法來解決?
(1)速度越快,每位價格就越高。
(2)容量越大,每位價格就越低。
(3)容量越大,速度越慢。
采取多級存儲層次方法來解決。
43.“Cache-主存”和“主存-輔存”層次的主要區別是什么?
存儲層次 | “Cache-主存”層次 | “主存-輔存”層次 |
---|---|---|
目的 | 為例彌補主存速度的不足 | 為了彌補主存容量的不足 |
存儲管理的實現 | 全部由專用硬件實現 | 主要由軟件實現 |
訪問速度的比值(第一級比第二級) | 幾比一 | 幾萬比一 |
典型的塊(頁)大小 | 幾十個字節 | 幾百到幾千個字節 |
CPU對第二級的訪問方式 | 可直接訪問 | 均通過第一級 |
不命中時CPU是否切換 | 不切換 | 切換到其他進程 |
44.在存儲層次中應解決哪四個問題?
- 映像規則:當把一個塊調入高一層存儲器時,可以放到哪些位置上。
- 查找算法:當所要訪問的塊在高一層存儲器中時,如何找到該塊。
- 替換算法:當發生失效時,應替換哪-塊。
- 寫策略:當進行寫訪問時,應進行哪些操作。
45.簡述Cache的基本工作原理。
(1)CPU要訪存,給出主存地址。
(2)主存地址轉換成Cache地址。 主存塊地址轉換為Cache塊地址,直接拼接上塊內位移。這里注意,這個是理論上的,其實目的就是找到該主存塊可能在Cache的哪一塊上。
(3)看看要訪問的在不在Cache中,可能有兩種情況:
I. 命中。把Cache中的數據送至CPU。
II. 不命中。訪問主存,並從主存中把一整塊調入Cache。
46.在Cache-主存層中,地址映像方法有哪幾種?它們各有什么優缺點?
- 全相聯映像。實現查找的機制復染,代價高,速度慢。Cache空間的利用率較高,塊沖突概率較低,因而Cache的失效率也低。
- 直接映像。實現查找的機制簡單,速度快。 Cache空間的利用率較低, 塊沖突概率較高,因而Cache的失效率也高。
- 組相聯映像。組相聯是直接映像和全相聯的一種折中。
47.簡單使用比較器進行4路組相聯Cache並行查找的過程。
48.Cache-主存層常用的替換算法有哪些?
- 隨機法
- 先入先出法
- LRU法。
49.簡述Cache寫命中時的兩種寫策略。
- 寫直達法。寫Cache的同時,寫主存。但是有一個問題,寫Cache快,寫主存慢。所以一般加一個寫緩沖區,CPU只要寫到寫緩沖區里面了,就當做寫完了,繼續執行。
- 寫回法。只寫Cache,先不寫主存。每塊設置一個修改標志位,如果該塊被修改了,當它被替換的時候,需要寫回主存。如果沒有被修改,就不用寫回了,直接覆蓋就行了。寫回法的好處是,如果對同一塊進行多次寫操作,只要寫回最后一次的就好。
50.簡述Cache寫失效的兩種處理方法。
- 按寫分配法。先把要訪問的存儲單元所在的塊從主存中調入Cache中,然后再寫入。
- 不按寫分配法。直接寫入主存。
51.影響平均訪存時間的因素有哪些?針對每個因素,各舉出1種改進方法。
- 命中時間
- 簡單小Cache
- 虛擬Cache
- Cache訪問流水化
- 蹤跡Cache
- 不命中率
- 減少強制性不命中 -- 增加塊大小;
- 減少容量不命中 -- 增加容量
- 減少沖突不命中 -- 提高相聯度
- 不命中開銷
- 兩級Cache
- 讀不命中優先於寫不命中
- 寫緩沖合並
- 非阻塞Cache
52.Cache的3C失效是哪三種失效?針對每種失效給出一種降低失效率的方法。
- 強制性失效
- 容量失效
- 沖突失效
53.多體交叉存儲器有哪兩種編址方式?各有什么特點。
- 高位交叉編址
(1)高位是體號。所以當給出訪問地址時,根據高位能夠定位存儲體;
(2)低位是體內地址,因此當給出訪問地址時,使用低位確定是某個存儲體中的哪個存儲單元;
(3)這種編址方式,在一個存儲體內,地址是連續的,因此易於擴展;
(4)這種編址方式,也是由於在一個存儲體內,地址是連續的,因此當訪問連續地址的時候,並不能發揮並行的特點;
(5)訪問合理時,能夠使不同的請求源訪問不同的存儲體,實現並行工作,比如說CPU訪問一個存儲體時,I/O訪問另一個存儲體。 - 低位交叉編址
(1)低位是體號。所以當給出訪問地址時,根據低位能夠定位存儲體;
(2)高位是體內地址,因此當給出訪問地址時,使用高位確定是某個存儲體中的哪個存儲單元;
(3)這種編址方式,連續的地址,是存放在相鄰的存儲體中,能夠實現並行訪問;
(4)分時啟動存儲體,在不改變存儲周期的情況下,增加存儲器的帶寬。
54.反映輸入/輸出系統可靠性能的參數有哪些?
- 可靠性:統從初始狀態開始一直提供服務的能力。
- 可用性:系統正常工作時間在連續兩次正常服務間隔時間中所占的此率。
- 可信性:服務的質量,即在多大程度上可以合理地認為服務可靠的。
55.總線仲裁要解決的是什么問題,總線仲裁的方法有哪些,各有什么特點。
(1)總線的仲裁要解決的是多個主設備要同時使用總線,誰先使用,誰后使用的問題;(2)總線仲裁大致分為集中式和分布式,集中式包括鏈式、計時器和獨立請求。
56.總線的通信控制解決的是什么問題?大致有哪些方式。
- 總線的通信控制解決的是通信雙方如何協調工作,何時開始,何時結束。
- 大致包括同步通信、異步通信、版同步通信和分離式通信(分離事務總線)。
57.試比較程序查詢、程序中斷、DMA三種I/O方式的區別。
- 程序查詢是由CPU發起的,檢查外部設備是否就緒;
- 程序中斷是由外部設備發起中斷請求,CPU接到中斷請求之后去處理。
這兩者都是由CPU和外部設備進行的。 - DMA是當主存與外設進行數據傳輸時,不需要CPU介入,而由DMA控制器來控制,CPU只是將總線的控制權交給DMA,並不直接參與這個過程。
58.簡述通道的主要功能。
- 選擇連接設備
- 執行通道程序
- 給出外圍設備的操作地址
- 給出主存緩沖區的首地址
- 傳送計數
- 傳送后處理
- 設備監測
- 格式變換。
59.簡述通道完成一次數據傳輸的主要過程。
- 在用戶程序中使用訪管指令進入管理程序,由CPU通過管理程序組織-個通道程序,並啟動通道。
- 通道處理機執行CPU為它組織的通道程序,成指定的數據I/0工作。
- 通道程序結束后向CPU發中斷請求。CPU響應這個中斷請求后,第_次進入操作系統,調用管理程序對I/O中斷請求進行處理。
60.簡述三種通道傳輸方式及其傳輸過程
- 字節多路通道:通道每連接一個外圍設備, 只傳送一個字節, 然后與另一台設備連接, 並傳送一個字節。
- 數組多路通道:通道每連接-台外圍設備, 傳送個數據塊, 傳送完成后,又與另一台高速設備連接, 再傳送一個數據塊。
- 選擇通道:通道每連接個外圍設備, 就把這個設備的多有待傳字節全部傳送完成,然后與另一台設備相連接。
-END