【系統分析師之路】第十二章 計算機組成與體系結構記憶敲出

第十二章 計算機組成與體系結構記憶敲出

1. Flynn分類方法

  • Flynn分類方法是按照指令流和數據流對計算機進行了一個大致的分類。指令對應控制部件,數據對應CPU數量
  1. 單指令流單數據流:這種情況一般是在早期的PC中,奔騰,X86的時代,那個時代CPU都只有一個,現在估計只有在嵌入式系統中還會使用單指令流單數據流的CPU了。
  2. 單指令流多數據流:單個控制部件多個CPU處理。陣列處理器就是一個典型的應用。
  3. 多指令流單數據流:這種情況是不存在的,只有理論上存在的可能。
  4. 多指令流多數據流:目前應用最爲廣泛。能夠實現作業,任務,指令等各級全面並行
  • 第一條和第四條很好記也不會搞錯,而第二條和第三條只要記住多指令單數據是理想化的模型,一般不存在就可以了;而單指令多數據流一般使用在陣列,並行處理和超級標量處理器中。多個處理器以異步的方式運行同一條指令。

2. CISC和RISC

  • RISC是精簡指令集,CISC是複雜指令集。在精簡指令集中的指令,都是經過篩選並且長度都是一致的,而且使用的頻率也很高,所以調用起來效率高;
  • CISC和SISC是相反的,複雜指令集中指令的數目繁多,長短不一,使用頻率差別較大;
  • 精簡指令集爲了達到精簡的目的,比如不會把乘法指令放入自己的指令集,而使用多個加法指令來實現乘法操作,這個時候就可以把乘法指令給精簡了。精簡指令集的活用也可以看作是局部性原理的活用。把不常用的複雜指令除去後形成了精簡指令,精簡指令的高效率當然也離不開寄存器。再精簡指令中再把經常用到的指令放入寄存器,這樣對於指令的執行將會迅速的提升。寄存器的活用也用到了局部性的原理。
  • CISC是計算機還沒大規模發展之前的使用使用的指令集。那個時候計算機以及指令系統都是定製的,根據特定的應用場景設計出特定的指令集。所以用戶不同,所支持的指令也就不同,當計算機逐漸由特定領域使用變得需要通用使用的時候,對於指令集的共同化和優化的需求就出來了。
  • 還有需要補充的一點就是精簡指令集支持尋址方式少,因爲有優化編譯的存在,所以可以更好的支持高級語言。

3. 存儲系統層級結構

  • 精簡指令中用到了局部性原理,同樣再多層的存儲系統中也用到了局部性原理。存儲系統可以分爲:寄存器,緩存,內存和外存四個層次,寄存器速度最快但價格最高,外存一般容量最大,價格也是最爲便宜的,既然寄存器速度最快,只要把外存內存空間都放在高速寄存器和高速緩存中不就可以了嗎?事實上寄存器價格昂貴,考慮到性價比採有了存儲的層次結構,纔有了局部性原理。
  • 在四層的存儲結構中,第二層的緩存不是必須的。
  • 還有一個虛擬存儲器。它用在主存-外存之間,使用模擬外存的內存來擴大內存空間,也可以和局部性原理搭上邊,但是現在虛擬存儲器好像已經不怎麼提到了,因爲現在內存容量已經BT一般的得到了提升,且增加Cache的容量和命中算法可以很好的解決性能的瓶頸。

4. 局部性原理

  • 存儲系統的局部性原理包括了時間局部性和空間局部性兩個方面。時間局部性就是剛剛訪問的內存地址可能在不久的將來會再被導入使用;而空間獨立性是指當程序訪問某一個空間之後立即訪問他鄰近的空間的概率很大。
    根據局部性原理,我們把哪些最爲頻繁使用的數據放在價格最昂貴速度最快的寄存器或者Cache中,那麼執行效率將會顯著地提高。
  • 工作集原理是需要頻繁訪問的頁面集合,把它放入高速度內存後一般不需要被替換出去,這樣就可以提高速度了。工作集原理類似於RISC精簡指令集,把常用的指令從複雜指令集中抽出來放在一起,形成精簡指令集。

5. Cache技術

  • Cache中有一種按內容存儲,在存取的時候考慮了內容,不同的內容存在不同的分區,所以它的速度效率遠高於按地址的存儲器。這種方式也叫做相聯存儲器。
  • 在Cache中還有一個命中率(失效率)的概念,需要訪問的數據正好就在Cache中即爲命中,此時可以享受Cache較快的速度;當不命中時也就是失效時只能回到主存去找了,所以命中率越高,讀取速度就越快;命中率越高,使用Cache達到加速的加速比就越大,一般使用Cache和不使用Cache速度相差20倍。

6. 流水線技術

  • 說到流水線,其實理論上也是可以應用在軟件領域的,比如我們可以在團隊中設置三個角色:開發專員,測試專員,文檔確認驗收專員。(實際情況是不可能應用的,因爲開發不是流水線作業,人也不是機器)
  • 開發專員只做開發,開發好的成果給測試專員測試;測試專員測試好了以後再把成果物給確認驗收專員;文檔確認驗收專員在驗收通過以後,提交成果物到產品庫。當我們對應的任務有10多個的時候,一個要件不會等到開發測試確認完以後再做下一個要件,而是多個開發再對應完要件01以後,馬上對應要件02,以此類推。這就是流水線技術在軟件領域的應用。
  • 按照這個理論,開發專員也好測試專員也好,就像流水線上的一個兵,不斷的加工要件,完成後給下一個人。
    當然這裏只是一個比喻,軟件開發往往很少有重複性機械性的工作,所以流水線很難在軟件項目管理領域得到廣泛的使用。
  • 但有一個思想是通用的,就是讓流水線上的每個部件(或資源)較少地空閒下來,這就和進度管理中資源平滑的概念有類似之處。
  • 接下來說說什麼叫流水線週期,比如開發一個要件開發需要用5天,測試3天,確認2天,那麼流水線週期就是5天。它取的是最長的節點作爲一個週期。
  • 流水線的加速比這個也比較容易理解,不使用流水線的時間除以使用流水線的時間便可以得到加速比。
  • 流水線的吞吐率:就是在這個三人團隊中,10條指令除以使用流水線完成10條指令的時間。假設採用流水線完成10條指令耗時50,不採用流水線100,那麼採用流水線吞吐率爲0.2,不採用流水線吞吐率僅僅爲0.1。由此可見流水線技術對於吞吐率的提升。
  • 流水線最大的吞吐率就是1除以deta t。流水線計算公式爲1條指令執行時間+(指令條數-1)*流水線週期
    簡單來說一個要件的開發,測試,確認所有時間之和+(要件總數-1)*流水線週期(開發專員所需要的時間)就是流水線時間。
  • 超標量流水線:到這裏已經不把開發測試專員當人看了,把他們一個人當多個人用,無限地壓榨他們的剩餘價值。比如在4標量流水線的情況下做40個同樣大小的要件,這個時候一個人當四個人來用,所以可以理解爲只做10個要件了。

7. 主存-緩存之間的三種地址映象方式

  • 地址映像是某個地址在內存中,在緩存中的地址,以及它們之間的對應映射關係。地址映像一般分爲三種方式:包括全相聯映像,組相聯映像,直接相聯映像。地址映像技術一般在操作系統的存儲管理中會涉及到。還有主存單元到Cache單元的地址轉換由硬件來完成。
  1. 直接相聯映像
    比如Cache中我們把存儲空間分爲四塊,分別是0~3號地址空間。那麼在做地址映像時必須4個空間同時換入換出。這種方式類似於赤壁之戰中龐統獻計曹操的連環船計,把整塊整塊的替換。
    • 優點:地址映象方式簡單,訪問速度快
    • 缺點:命中率不高(衝突率高),所以需要經常的換入換出來保證命中率
  2. 全相聯映像
    主存任意的一塊對應Cache中的任意一塊。
    1. 優點:命中率高,Cache存儲空間利用率高
    2. 缺點:一般很少使用,因爲成本高,每次替換都要逐個比較所有的"船",不像直接相聯可以整體換入換出,所以算法速度低
  3. 組相聯映象
    綜合了直接相聯和全相聯映像各自的優點,是一個折衷的方案。
  • 個人感覺:直接相聯,組相聯,全相聯很像操作系統中段式存儲,頁式存儲和段頁式存儲之間的關係。

8. 浮點數操作

  • 表示方式:尾數*10的階碼次方;那麼尾數越多,表示的浮點數的精度就越精;階碼越大,表示的浮點數範圍也越大。
  • 對階是指將兩個進行運算的浮點數的階碼對齊的操作。對階的目的是爲使兩個浮點數的尾數能夠進行加減運算。
  • 對階的原則是小階對大階。只有完成了對階以後纔可以尾數加減計算。計算完以後爲什麼更加好的表示浮點數,我們還要對結果實施格式化操作。
  • 在計算機性能評價中有MIPS和MFLOPS兩種方式,MIPS是每秒處理百萬級的機器指令數,MFLOPS則是每秒百萬個浮點數操作。

9. 外存–磁盤的存儲結構與讀取時間計算

  • 計算機系統中外存有很多種,早期得軟盤,USB盤,機械硬盤都屬於外盤。
  • 其中1.44英寸得軟盤,硬盤都採用了磁盤盤片得結構來保存數據,所以可以看成是一個個的圓型盤片,
    而磁道就是每個盤片中的一個個同心圓,扇區就是磁道同心圓上再均等分以後的一塊塊小的存儲空間。
    尋道時間就是在原型盤片中尋找到要讀的盤片以及盤片上同心圓的時間;
  • 等待時間也叫做旋轉延遲時間,它由旋轉定位時間和延遲時間組成。磁頭已經定位到了特定的磁道,但是需要旋轉以便找到在磁道某個扇區中我們所需要的信息。

10. 校驗碼

  • 校驗碼說白了就是在原本信息的基礎上,增加冗餘信息,來保證信息完整性。增加的冗餘信息可以用來驗證是否有錯誤,也可以用來糾正錯誤,這取決於冗餘信息的數量。
  • 比如我們傳輸A和B兩個數據。用11表示A用00表示B,並且約定01和10是不合法的數據,如果收到不合法的數據的時候,就說明信息在傳輸過程中實現了丟失。
  • 如果用111代表A,000代表B,如果收到101的話,就可以糾正爲111,這說明當使用2bit來傳輸A和B的時候只能檢錯,當使用3bit來傳輸A和B的時候,除了檢錯還可以進行糾錯了。
  • 奇校驗是在一串二進制的數據中,確認有幾個1,如果奇數個1,最後一位補0;如果偶數個1,最後一位補1;收到數據後先對奇偶判段,來確認真假。偶數校驗與奇校驗的原理是一樣的。
  • 海明碼校驗是把冗餘位存放在2的N次方的地址,其餘的地址用來放置信息位。

11. Cache頁面淘汰算法

  • 因爲緩存容量很小,所以對載入緩存的內容需要進行篩選和淘汰。需要依賴的算法有:先進先出(最簡單的算法),最近最早使用(運用了局部性原理),LFU(根據統計數據來淘汰原理),有了這些算法的保證,纔可以讓Cache的價值和局部性原理得到最大的發揮。頁面淘汰算法和操作系統的內存管理的內容是有重疊的。

12. Cache的讀寫方法與讀寫策略

  • 一共有三種方法:寫直達,寫回,標記法;寫直達就是同時更新高速緩存和較爲慢速的內存,這種方法效率不高;而寫回就是隻要更新的數據在緩存,就只更新緩存,直到該內容置換出Cache;最後一種是標記法,只更新內存並同時更新標誌位,這樣只要命中該地址時就更新進入緩存。

13. 主存的編址計算

  • 主存是由若干芯片拼湊而成的。既可以橫着拼也可以豎着拼,它們所組成的內存的面積是一樣的。在計算的時候要明白的是2的10次方爲1K;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章