【軟件設計師】計算機組成原理與體系結構

數據的表示

進制的轉換

  • R進制轉十進制使用按權展開法

    • 將R進制數的每一位數乘以它的權,然後相加,即可求得對應的十進制數值
    • 十進制:(1010)_{10}=1\times 10^{3}+0\times 10^{2}+1\times 10^{1}+0\times 10^{0}
    • 二進制:(1010)_{2}=1\times2^{3}+0\times2^{2}+1\times2^{1}+0\times2^{0}
    • 其中,十進制第2位的位權爲10,第3位的位權爲100;而二進制第2位的位權爲2,第3位的位權爲4。對於 N 進制數,整數部分第 i 位的位權爲Ni-1,而小數部分第 j 位的位權爲N-j
  • 十進制轉R進制使用短除法
    • 整數部分:除R取餘,直到商爲0時爲止,將餘數逆序排列
    • 小數部分:乘R取整,直到小數部分爲零,將整數順序排列
  • 二進制轉八進制與十六進制
    • 二進制數轉換成八或十六進制數時,從小數點向左和向右把每3或者4個二進制數分成一組,直接寫出每一組所代表的數值,小數點後不足位數補0
    • 八或十六進制數轉換成二進制數時,從小數點向左和向右將一個數分成3或者4個二進制數。按順序排列,得到的就是轉換後的二進制數

原碼、反碼、補碼、移碼

  • 原碼:二進制數(最高位是符號位,0爲正,1爲負)
  • 反碼:正數的反碼與原碼相同。負數的反碼則是在原碼的基礎上,符號位不變,數值位取反
  • 補碼:正數的補碼與原碼相同。負數的補碼則是在反碼的基礎上,末尾加1。最適合加減運算的數字編碼(符號位參與運算)
  • 移碼:在補碼的基礎上,符號位取反,常用於表示浮點數的階碼部分(碼值大者對應的真值就大)
  • 範圍
    碼制 定點整數(階碼) 定點小數(尾數) n=8
    原碼  -(2^{\left ( n-1 \right )}-1)\sim+(2^{\left ( n-1 \right )}-1) -(1-2^{\left ( -n+1 \right )})\sim+(1-2^{\left ( -n+1 \right )}) -127~127
    反碼 -(2^{\left ( n-1 \right )}-1)\sim+(2^{\left ( n-1 \right )}-1) -(1-2^{\left ( -n+1 \right )})\sim+(1-2^{\left ( -n+1 \right )}) -127~127
    補碼 -2^{n-1}\sim+(2^{n-1}-1) -1\sim+(1-2^{-n+1}) -128~127
    移碼 -2^{n-1}\sim+(2^{n-1}-1) -1\sim+(1-2^{-n+1}) -128~127

定點數與浮點數

  • 定點數:所有數據的小數點位置是固定的,小數點位置在數據最高位是定點小數,在最低位是定點整數,會有溢出的情況發生
  • 浮點數:一個含小數點的R進制數N可以表示爲N=M\times R^{e}
    • M是尾數,決定數值的精度。e是指數(階碼),決定數值的範圍。當尾數M≥0,M的範圍在區間[0.5,1)。當尾數M<0,M的範圍在區間(−1,−0.5]
    • 浮點數運算時,先對階,小階對大階,尾數右移階差位,然後尾數相加對結果規格化,既尾數範圍
    • 數值範圍:最大正數(M最大正數,E最大正數)、最小負數(M最小負數,E最大正數)

校驗碼

  • 奇偶校驗碼:通過在編碼中增加一位校驗位來使編碼中1的個數爲奇數(奇校驗)或偶數(偶校驗)
  • 海明校驗碼:在n位被校驗數據位中,插入K個校驗碼,通過擴大碼距來實現檢錯和糾錯。其校驗位的個數滿足關係2^{k}-1\geqslant n+k
    • 校驗位在海明碼中的位置是固定在2i,即海明碼的1,2,4,8,16…位
    • 一個校驗位可校驗多個數據位,每個校驗位的取值等於其被校驗數據位之和,被校數據位海明位號等於各校驗位海明位號之和
    • 糾正錯誤只要將出錯位變反即可,自動糾正1位錯
  • 循環冗餘校驗碼(CRC):用於發現和糾正信息傳送過程中連續出現的多位錯誤。只不過實際應用的時候基本不糾錯而是直接丟棄,因爲糾錯的代價太高
    • 在K位被校驗數據位之後再拼接R位校驗碼,得到K+R位編碼。能夠與生成多項式相除,餘數爲0,則說明傳送正確
    • 存在一個最高次冪爲R的多項式G(X),根據G(X)可以生成K位信息的校驗碼,G(X)叫做這個CRC碼的生成多項式
    • 校驗碼的具體生成過程爲:假設發送信息用信息多項式C(X)表示,將C(x)左移R位,則可表示成C(x)*2R,這樣C(x)的右邊就會空出R位,這就是校驗碼的位置。通過C(x)*2R除以生成多項式G(x)得到的餘數就是校驗碼。

計算機結構

硬件系統

  • 主機
    • CPU:按訪問速度排序爲(通用寄存器> Cache>內存>硬盤)
      • 運算器:負責數據的處理和加工。執行所有算術運算,執行所有邏輯運算並進行邏輯測試(與或非,值比較,零值測試)
        1. 算術邏輯單元ALU:執行各種算術運算(加、減、乘、除)、邏輯運算(與、或、非、異或)、移位運算
        2. 累加寄存器AC:是一個通用寄存器,暫時存放ALU運算的結果信息
        3. 數據緩衝寄存器DR:CPU與內存儲器溝通的橋樑。當我們對內存儲器進行讀(出)寫(入)操作時,用來暫時存放數據
        4. 狀態條件寄存器PSW:一個由各種狀態條件標誌拼湊而成的寄存器,用來存儲在運算的過程中相關的標誌位
      • 控制器:決定程序中指令執行順序和產生完成每條指令功能的全部控制命令
        1. 程序計數器(PC):用於指出當前指令在主存中存放的地址,通常程序順序執行是(PC)+1,自動產生下一條要執行指令的地址。
          * PC具有寄存信息和計數兩種功能,又稱爲指令計數器。程序執行分爲:順序執行,轉移執行。
          * 程序開始執行之前,將程序的起始地址送入PC,該地址在程序加載到內存時確定,因此PC的內容即是程序第一條指令的地址
          執行指令時,CPU會自動修改PC內容,確保永遠是將要執行的下一條指令地址,順序執行的話,只是簡單的加一
          轉移指令時,指令地址根據當前地址加上一個向前或向後的偏移量得到,或者根據轉移指令給出的直接轉移地址得到
        2. 指令寄存器(IR):存放正執行的指令,直到本條指令結束,對用戶完全透明,位數取決於指令字長
          CPU執行指令的時候,先把它從內存中加載到緩衝寄存器中,再送入IR暫存,指令譯碼器根據IR的內容來產生各種微操作指令
        3. 指令譯碼器(ID):用來分析指令功能,決定控制器產生完成指令功能的控制命令
          * 時序控制邏輯:控制指令的執行時間順序
          * 總線邏輯:爲多個功能部件服務的信息通路的控制電路
          * 中斷邏輯:控制各種中斷請求,根據優先級來對中斷請求排隊。逐個交給CPU執行
        4. 時序部件:產生控制命令所需的時間信號
      • 寄存器組:專用寄存器,通用寄存器。上面的都是專用的,通用的可以給程序猿控制(提高速度,貌似沒卵用)
    • 內存儲器(主存儲器)
  • 外部設備
    • 輸入設備
    • 輸出設備
    • 外存儲器(輔助存儲器)

軟件系統

  • 系統軟件
  • 中間件
  • 應用軟件

Flynn分類法

基於指令流和數據流的數量對計算機進行分類的方法
體系結構類型 結構 關鍵特性 代表 具體
單指令流單數據流(SISD) 控制部分:一個
處理器:一個
主存模塊:一個
指令部件每次只對一條指令進行譯碼,並只對一個操作部件分配數據 單處理器系統 SISD機器是一種傳統的串行計算機,它的硬件不支持任何形式的並行計算,所有的指令都是串行執行。並且在某個時鐘週期內,CPU只能處理一個數據流。早期的計算機都是SISD機器,如馮諾.依曼架構,如IBM PC機,早期的巨型機和許多8位的家用機等
單指令流多數據流(SIMD) 控制部分:一個
處理器:多個
主存模塊:多個
各處理機以同步的形式執行同一條指令 並行處理機
陣列處理機
超級向量處理機
SIMD是採用一個指令流處理多個數據流。這類機器在數字信號處理、圖像處理、以及多媒體信息處理等領域非常有效。Intel處理器實現的MMXTM、SSE(Streaming SIMD Extensions)、SSE2及SSE3擴展指令集,都能在單個時鐘週期內處理多個數據單元。也就是說我們現在用的單核計算機基本上都屬於SIMD機器
多指令流單數據流(MISD) 控制部分:多個
處理器:一個
主存模塊:多個
被證明不可能,至少是不實際 目前沒有,有文獻稱流水線計算機爲此類 MISD是採用多個指令流來處理單個數據流。由於實際情況中,採用多指令流處理多數據流纔是更有效的方法,因此MISD只是作爲理論模型出現,沒有投入到實際應用之中
多指令流多數據流(MIMD) 控制部分:多個
處理器:多個
主存模塊:多個
能夠實現作業、任務、指令等各級全面並行 多處理機系統
多核計算機
MIMD機器可以同時執行多個指令流,這些指令流分別對不同數據流進行操作。最新的多核計算平臺就屬於MIMD的範疇,例如Intel和AMD的雙核處理器等都屬於MIMD

CISC與RISC

CISC是複雜指令系統計算機,RISC是精簡指令系統計算機

RISC有下列特點

指令系統中只包含使用頻率較高但不復雜的指令

指令長度固定,指令格式少,尋址方式少

只有存取數指令訪問主存,其他指令都在寄存器之間運算

大部分指令在一個機器週期內完成,採用流水技術

CPU中增加了通用寄存器的數量

硬聯邏輯控制,不用微程序控制技術

採用優化的編譯,以有效地支持高級語言

流水線技術

  • 基本概念
    • 流水線(pipeline)技術是指在程序執行時多條指令重疊進行操作的一種準並行處理實現技術。各個部件同時處理是針對不同指令而言的,它們可同時爲多條指令的不同部分進行工作,以提高各部件的利用率和指令的平均執行速度
    • 流水線是Intel首次在486芯片中開始使用的。流水線的工作方式就像工業生產上的裝配流水線。在CPU中由5—6個不同功能的電路單元組成一條指令處理流水線,然後將一條X86指令分成5—6步後再由這些電路單元分別執行,這樣就能實現在一個CPU時鐘週期完成一條指令,因此提高CPU的運算速度。經典奔騰每條整數流水線都分爲四級流水,即取指令、譯碼、執行、寫回結果,浮點流水又分爲八級流水
    • 流水線釆用異步控制並不會給流水線性能帶來改善,反而會增加控制電路的複雜性
  • 週期及執行時間計算
    • 流水線週期是執行時間最長的一段,即取指、分析、執行三個裏面時間最長的
    • 流水線計算公式:1條指令執行時間+(所求指令條數-1)×流水線週期
      • 理論公式:(取值時間+分析時間+執行時間)+(所求指令條數-1)×流水線週期
      • 實際公式:(一條指令分多少部分×流水線週期)+(所求指令條數-1)×流水線週期
        考試時,先用理論公式,如果沒有正確答案,再使用實際公式
  • 吞吐率計算
    • 流水線吞吐率(TP)是指在單位時間內流水線所完成的任務數量或輸出的結果數量
    • TP=指令條數/流水線執行時間
    • 流水線最大吞吐率:TP_{max}=\lim_{n\rightarrow \propto}\frac{n}{(k+n-1)}=\frac{1}{\Delta t},Δt是流水線週期
  • 加速比計算
    • 流水線加速比是在完成同樣任務,不使用流水線所用的時間與使用流水線所用的時間之比
    • 加速比S=不使用流水線執行時間/使用流水線執行時間
  • 效率
    • 流水線效率是指流水線的設備利用率
    • 流水線效率E=n個任務佔有時空區/K個流水段的總時空區
    • E=吞吐率×週期

存儲系統

主存儲器

  • 存取週期:連續兩次訪問同一個存儲單元的最小間隔時間
  • 主存容量:由指令尋址方式產出的操作數有效地址的位數決定。
  • 分類
    隨機讀寫存儲器(RAM)

    動態隨機存儲器DRAM採用動態MOS電路,需要定時刷新保存當前信息。(單管MOS電路集成度高、功耗小,是當前RAM的主流型號)

    靜態隨機存儲器SRAM不需要刷新,速度快,但線路複雜,集成度低,寫入數據後只要不斷電,即可長久保持數據不變

    只讀存儲器(RPM)

    掩模ROM出廠時廠家已經把ROM制好,用戶不能改動

    可編程只讀存儲器PROM,用戶只能編程一次寫入所需的數據,以後不能再改動

    可擦除可編程EPROM,用紫外線照射15分鐘擦除,再用高壓電路寫入新內容。(EEPROM帶電可擦寫可編程只讀存儲器,使用比EPROM方便)

    FM爲FlashM,又叫閃存,爲快速聯機可改寫只讀存儲器,但擦除時只能成塊地擦去。

高速緩存Cache

  • 地址映像方式
    • 直接映像:主存按Cache的大小分成區,每個區的塊數和Cache總塊數相同,塊號相同的映像到Cache中同一個塊號那裏(多個區中的同號塊映像到Cache同號塊上)
    • 全相聯映像:主存的塊調入Cache不受限制(任意位置),塊衝突最小
    • 組相聯映像:介於全相聯和組相聯之間
  • 替換算法
    • 隨機替換算法 RAND:隨機的
    • 先進先出 FIFO : 總是把最先調用的Cache替換出去
    • 最近最少使用 LRU:把當前近期Cache使用次數最少的那塊替換出去(先看訪問,再看修改狀態)
    • 優化替換算法:先執行一次程序統計Cache使用情況,第二次執行程序再選擇最優的算法來替換

存儲器

  • 相聯存儲器:一種按存儲內容來存儲和訪問的存儲器,不屬於按尋址方式劃分的

尋址方式

  • 立即尋址:直接指出操作數本身
  • 直接尋址:操作數地址
  • 間接尋址:操作數地址的主存單元的地址,簡稱操作數地址的地址。
  • 寄存器尋址:通用寄存器的編號Ri,這個指定的寄存器中存放着操作數

磁盤

  • 磁盤存儲器:由盤片,驅動器,控制器和接口組成。其存儲容量有兩種指標:格式化容量和非格式化容量
    • 非格式化容量 = 面數(磁道數/面)內圓周長*最大位密度
    • 格式化容量 = 面數 (磁道數/面)(扇區數/道)*(字節數/扇區)
  • 讀記錄
    • 處理記錄時間=讀記錄的時間+處理時間
    • 總時間=總記錄數×(讀記錄+處理記錄)
  • 讀取磁盤數據
    • 找磁道的時間。
    • 找塊(扇區)的時間,即旋轉延遲時間
    • 傳輸時間
    • 讀取磁盤數據=總數據塊×(找磁道的時間+找扇區的時間+傳輸時間)

總線系統

  • 內部總線: 用於芯片一級的互聯,分爲芯片內總線和元件級總線
    • 芯片內總線用在集成多芯片
    • 元件級總線用於一塊電路板內元器件的連接
  • 系統總線:插件板一級的互聯,用於構成計算機各組成部分(CPU,內存,接口)
    • 數據總線:傳送數據信息,CPU一次傳輸的數據與數據總線帶寬相等
    • 地址總線:傳送控制信號和時序信號,如讀/寫、片選、中斷響應信號等
    • 控制總線:傳送地址,它決定了系統的尋址空間
    • PC總線、ISA總線、EISA總線、PCI總線等都屬於系統總線
  • 外部總線:又稱通信總線,用於設備一級的互聯,通過該總線與其他設備進行信息與
  • 總線複用,顧名思義就是一條總線實現多種功能。採用這種方式的目的是減少總線數量,提高總線的利用率

可靠性

  • 串聯繫統
    • 可靠性:R=R_{1}\times R_{2}\times ...\times R_{n}
    • 失效率:\lambda =\lambda _{1}+\lambda _{2}+...+\lambda _{n}
  • 並聯系統
    • 可靠性:R=1-(1-R_{1})\times (1-R_{2})\times ...\times (1-R_{n})
    • 失效率:R=(1-R_{1})\times (1-R_{2})\times ...\times (1-R_{n})
  • 模冗餘系統
  • 混合系統
  • 冗餘技術:是容錯技術的基礎,通過冗餘資源的加入,可以使系統的可靠性得到較大的提高
    • 結構冗餘:常用的冗餘技術,按其工作方式,可分爲靜態冗餘、動態冗餘和混合冗餘三種
      • 靜態冗餘:又稱爲屏蔽冗餘或被動冗餘,常用的有三模冗餘和多模冗餘。靜態冗餘通過表決和比較來屏蔽系統中出現的錯誤
      • 動態冗餘:又稱爲主動冗餘,它是通過故障檢測、故障定位及故障恢復等手段達到容錯的目的。其主要方式是多重模塊待機儲備,當系統檢測到某工作模塊出現錯誤時,就用一個備用的模塊來頂替它並重新運行
      • 混合冗餘:將靜態冗餘和動態冗餘結合起來,且取二者之長處。它先使用靜態冗餘中的故障屏蔽技術,使系統免受某些可以被屏蔽的故障的影響。而對那些無法屏蔽的故障則採用主動冗餘中的故障檢測、故障定位和故障恢復等技術,並且對系統可以作重新配置。(效果好,開銷大,成本高)
    • 信息冗餘:在實現正常功能所需要的信息外,再添加一些信息,以保證運行結果的正確性
    • 時間冗餘:以時間(即降低系統運行速度)爲代價以減少硬件冗餘和信息冗餘的開銷來達到提高可靠性的目的
    • 冗餘附加技術:是指爲實現上述冗餘技術所需的資源和技術,包括程序、指令、數據,以及存放和調用它們的空間等
      • 冗餘備份程序的存儲及調用
      • 實現錯誤檢測和錯誤恢復的程序
      • 實現容錯軟件所需的固化程序
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章