計算機組成原理常見面試題

   本意用於考研複試,如下是博主本身整理,博主是大四本科生,不能保證內容徹底正確,請辯證地看,若是有問題能夠在評論區指出我再修改。java

   整理不易,我就不掛個二維碼請遊客付費了,若是能夠的話,麻煩高擡貴手,點一下右下角的推薦吧!程序員

 

IEEE754標準算法

 

  

符號位S緩存

階碼jvm

尾數ide

總位數模塊化

短實數性能

1優化

8spa

23

32

長實數

1

11

52

64

臨時實數

1

15

64

80

  

 

 

 

 

 

                                                                      數符             小數點位置

根據IEEE 754國際標準,經常使用的浮點數有三種格式:

單精度格式32位,階碼爲8位,尾數爲23位.另有一位符號位S,處在最高位.

因爲IEEE754標準約定在小數點左部有一位隱含位,從而實際有效位數爲24位.這樣使得尾數的有效值變爲1.M .

階碼部分採用移碼錶示,移碼值127,1到254經移碼爲-126到+127.

 

S(1位)

E(8位)

M(23位)

N(共32位)

符號位

0

0

0

符號位

0

不等於0

(-1)S·2-126·(0.M) 爲非規格化數

符號位

1到254之間

-

(-1)S·2E-127·(1.M) 爲規格化數

符號位

255

不等於0

NaN(非數值)

符號位

255

0

無窮大

0 有了精確的表示,無窮大也明確表示.對於絕對值較小的數,能夠採用非規格化數表示,減小下溢精度損失.非規格化數的隱含位是0,不是1.

 

程序訪問的局部性

l  時間局部性:若是一個存儲項被訪問,則可能該項會很快被再次訪問.

l  空間局部性:若是一個存儲項被訪問,則該項及其鄰近的項也可能很快被訪問.

 

解釋

計算機不能直接理解高級語言,只能直接理解機器語言,因此必需要把高級語言翻譯成機器語言,計算機才能執行高級語言編寫的程序。

翻譯的方式有兩種,一個是編譯,一個是解釋。

l  編譯型語言寫的程序在執行以前,須要一個專門的編譯過程,把程序編譯成爲機器語言的文件,好比exe文件,若是源程序不變之後要運行的話就不用從新翻譯。

l  解釋則不一樣,解釋性語言的程序不須要編譯,在運行程序的時候才翻譯,翻譯一句執行一句,不生成目標程序,這樣解釋性語言每執行一次就要翻譯一次,效率比較低。

l  .java文件->編譯->.class文件,編譯成.class字節碼,.class須要jvm解釋,而後解釋執行。Java很特殊,Java程序須要編譯可是沒有直接編譯成機器語言,即二進制語言,而是編譯成字節碼(.class)再用解釋方式執行。java程序編譯之後的class屬於中間代碼,並非可執行程序exe,不是二進制文件,因此在執行的時候須要一箇中介來解釋中間代碼,這就是所謂的java虛擬機(JVM),也叫JDK。

l  C語言編譯過程分紅四個步驟:

1, 由.c文件到.i文件,這個過程叫預處理

將#include包含的頭文件直接拷貝到hell.c當中;將#define定義的宏進行替換,同時將代碼中沒用的註釋部分刪除等

2, 由.i文件到.s文件,這個過程叫編譯

3, 由.s文件到.o文件,這個過程叫彙編

高級語言->彙編語言->機器語言

4, 由.o文件到可執行文件,這個過程叫連接

將翻譯成的二進制與須要用到庫綁定在一塊

 

字長

l  機器字長:計算機能直接處理的二進制位數

l  指令字長:一個指令字中包含的二進制代碼位數

l  存儲字長:一個存儲單元存儲二進制代碼長度

l  CPI:執行一條指令須要的時鐘週期數

l   

 

Cache的基本工做原理

Cache一般由兩部分組成,塊表和快速存儲器.其工做原理是:處理機按主存地址訪問存儲器,存儲器地址的高段經過主存-Cache地址映射機構藉助查塊表斷定該地址的存儲單元是否在Cache中,若是在,則Cache命中,按Cache地址訪問Cache.不然,Cache不命中,則須要訪問主存,並從主存中調入相應數據塊到Cache中,若Cache中已寫滿,則要按某種算法將Cache中的某一塊替換出去,並修改有關的地址映射關係.

 Cache和主存之間的映射方式

l  直接映射就是將主存地址映射到Cache中的一個指定地址.任什麼時候候,主存中存儲單元的數據只能調入到Cache中的一個位置,這是固定的,若這個位置已有數據,則產生衝突,原來的塊將無條件地被替換出去.

l  全相聯映射就是任何主存地址可映射到任何Cache地址的方式.在這種方式下,主存中存儲單元的數據可調入到Cache中的任意位置.只有在Cache中的塊所有裝滿後纔會出現塊衝突.

l  組相聯映射指的是將存儲空間的頁面分紅若干組,各組之間的直接映射,而組內各塊之間則是全相聯映射.

 

 

 

 

 

 Cache中主存塊的替換算法

 

思想

優勢

缺點

隨機算法RAND

用軟的或硬的隨機數產生器產生上層中要被替換的頁號

簡單,易於實現

沒有利用上層存儲器使用的"歷史信息",沒有反映等程序局部性,命中率低.

先進先出FIFO

選擇最先裝入上層的頁做爲被替換的頁

實現方便,利用了主存歷史的信息

不能正確反映程序局部性原理,命中率不高,可能出現一種異常現象.

近期最少使用法LRU

選擇近期最少訪問的頁做爲被替換的頁

比較正確反映程序局部性,利用訪存的歷史信息,命中率較高

實現較複雜

優化替換算法OPT

將將來近期不用的頁換出去

命中率最高,可做爲衡量其餘替換算法的標準

不現實,只是一種理想算法

 

 

虛擬存儲器的基本概念

虛擬存儲器是指具備請求調入和置換功能,能從邏輯上對內存容量加以擴存的一種存儲器系統

頁式虛擬存儲器

頁式管理:是把虛擬存儲空間和實際空間等分紅固定大小的頁,各虛擬頁可裝入主存中的不一樣實際頁面位置.頁式存儲中,處理機邏輯地址由虛頁號和頁內地址兩部分組成,實際地址也分爲頁號和頁內地址兩部分,由地址映射機構將虛頁號轉換成主存的實際頁號.

頁式管理用一個頁表,包括頁號,每頁在主存中起始位置,裝入位等.頁表是虛擬頁號與物理頁號的映射表.頁式管理由操做系統進行,對應用程序員的透明的.

段式虛擬存儲器

段式管理: 把主存按段分配的存儲管理方式.它是一種模塊化的存儲管理方式,每一個用戶程序模塊可分到一個段,該程序模塊只能訪問分配給該模塊的段所對應的主存空間.段長能夠任意設定,並可放大和縮小.

系統中經過一個段表指明各段在主存中的位置.段表中包括段名(段號),段起點,裝入位和段長等.段表自己也是一個段.段通常是按程序模塊分的.

段頁式虛擬存儲器

段頁式管理:是上述兩種方法的結合,它將存儲空間按邏輯模塊分紅段,每段又分紅若干個頁,訪存經過一個段表和若干個頁表進行.段的長度必須是頁長的整數倍,段的起點必須是某一頁的起點.

TLB(快表)

在虛擬存儲器中進行地址變換時,須要虛頁號變換成主存中實頁號的內部地址變換,這一過程

緩存時首先要到主存查頁表,而後才能根據主存物理地址訪問主存的存取指令或數據。所以採用虛擬存儲器機制後,訪存的次數增長了。爲了減小訪存的次數,每每將頁表中最活躍的幾個頁表項複製到高速緩存中。這種在高速緩存中的頁表項稱爲快表(translation look aside buffer)

查表時,根據虛頁表同時查找快表和慢表,當在快表中查到該虛頁號時,就能很快找到對應的實頁號,將其送入主存實地址寄存器,同時使慢表的查找做廢,這時主存的訪問速度沒下降多少.若是在快表中查不到,則通過一個訪主存的時間延遲後,將從慢表中查到的實頁送入實地址寄存器,同時將此虛頁號和對應的實頁號送入快表

 

 

 

指令的執行過程

         讀取指令

               指令地址(在PC中)送到地址寄存器                       

               讀主存,讀出內容(指令代碼)送入指令寄存器IR

 

         分析指令

                  造成下一條指令的地址並送到PC中

 

         執行指令

               用一到幾個執行步驟,完成指令的運算、操做功能,

               不一樣的指令操做步驟和具體運算、操做功能各不相同        

         檢查有無中斷請求

               無中斷請求、進入下一條指令的執行過程

 

 

 

CISC(複雜指令集計算機

RISC(簡單指令集計算機

指令系統

指令數

尋址方式

可訪存指令

各類指令使用頻率

各類指令執行時間

複雜,龐大

通常大於200

不固定

不加限制

相差很大

相差很大

簡單,精簡

通常小於100

固定32位

只有LOAD/STORE指令

相差不大

絕大多數在一個機器週期完成

優化編譯實現

很難

較容易

程序源代碼長度

較短

較長

控制邏輯實現方式

絕大多數爲微程序控制

絕大多數爲硬連線控制,應用流水線技術

RISC機的主要優勢可概括以下

①充分利用VLSI芯片的面積

②提升了計算機運行速度

③便於設計,下降成本,提升可靠性

④有效支持高級語言程序

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

指令流水線的基本概念

(1)流水線基本原理

流水線技術是一種顯著提升指令執行速度與效率的技術.方法是:指令取指完成後,不等該指令執行完畢便可取下一條指令.

若是把一條指令的解釋過程進一步細分,例如分紅取指,譯碼, 訪存,執行,和寫回五個子過程,並用五個子部件分別處理這五個子過程.這樣只需在上一指令的第一子過程處理完畢進入第二子過程處理時,在第一子部件中就開始對第二條指令的第一子過程進行處理.隨着時間推移,這種重疊操做最後可達到五個子部件同時對五條指令的子過程進行操做.

 

(2)影響流水線性能的因素

l  結構相關是當多條同一時刻爭用同一資源造成衝突

²  暫停一個時鐘週期

²  單獨設置數據存儲器和指令存儲器

l  數據相關是指令在流水線中重疊執行時,當後繼指令須要用到前面指令的執行結果時發生的.

²  暫停時鐘週期

²  數據旁路:把前一條指令的ALU計算結果直接輸入到下一條指令

l  控制相關是當流水線遇到分支指令和其餘改變PC值的指令時引發的.

 

 

 

2)RAID分類

其原理是將並行處理原理引入磁盤系統.它採用低成本的小溫盤,使多臺磁盤構成同步化的磁盤陣列,數據展開存儲在多臺磁盤上,提升了數據傳輸的帶寬,並利用冗餘技術提升可靠性

RAID-0級採用無冗餘無校驗,數據分佈在多個物理磁盤.

RAID-1級採用磁盤鏡像陣列技術.

RAID-2級採用海明糾錯碼的磁盤陣列,經過增長校驗磁盤實現單糾錯雙檢錯功能.

RAID-3級是採用奇偶校驗冗餘的磁盤陣列,它也採用數據位交叉,陣列中只用一個校驗盤.

RAID-4級是一種獨立傳送磁盤陣列,它採用數據塊交叉,用一個校驗盤.

RAID-5也是一種獨立傳送磁盤陣列,它採用數據塊交叉和分佈的冗餘校驗,將數據和校驗位都分佈在各磁盤中,沒有專門的奇偶校驗驅動器.

 

I/O方式

1. 程序查詢方式

程序查詢方式的核心問題是每時每刻須要不斷查詢I/O設備是否準備好.CPU不斷地詢問外設是否準備好:若是準備好,CPU執行IO操做;不然,CPU一直等待.CPU大部分時間處於等待狀態,利用率不高.

2. 程序中斷方式

  中斷處理過程

中斷處理過程可分如下幾個步驟:

請求中斷→響應中斷→關閉中斷→保留斷點→中斷源識別→保護現場→中斷服務子程序→恢復現場→中斷返回

3. DMA方式

DMA是指外部設備不經過CPU而直接與系統內存交換數據的接口技術。

DMA 方式與程序中斷方式的比較

 

中斷方式

DMA方式

(1) 數據傳送

程序

硬件

(2) 響應時間

指令執行結束     

存取週期結束

(3) 處理異常狀況

不能

(4) 中斷請求

傳送數據             

後處理

(5) 優先級

相關文章
相關標籤/搜索