forked from ccccourse/co111a
-
Notifications
You must be signed in to change notification settings - Fork 0
Computer Organization final
XuanLin123 edited this page Jan 5, 2023
·
1 revision
計算機組織與設計 Computer Organization and Design (譯自 Computer Organization and Design: The Hardware/Software Interface, 5/e) 閱讀學習心得筆記
- 計算機的革命持續在進行,每當計算機成本下降成1/10,原本不符合經濟效益的應用就有機會突然可行,在近幾十年來「計算機在汽車中」、「手機」、「人類基因計畫」、「全球網路」、「搜尋引擎」等,都曾是「計算機科學的空想」。而計算機的效能主要受限於記憶體的大小,因此工程遵從一個原則,用最小的記憶體空間讓程式更快。
- 計算機架構中的八大理念「配合摩爾定律做設計」、「用抽象化來簡化設計」、「使經常的情形變快」、「經由平行性提升效能」、「經由管道處理提升效能」、「經由預測提升效能」、「記憶體的階層」、「經由冗餘提升可靠性」(下面三張圖代表摩爾定律、平行性及階層)
- 影響計算機效能的主因 1.指令個數 2.時脈週期 3.每個指令的平均時脈周期數
- 計算機中的硬體僅能執行極為簡單的低階指令,系統軟體最重要的兩類是「作業系統」、「編譯器」。
作業系統的主要工作: 1.處理基本輸出入動作 2.配置儲存體與記憶體 3.在多個應用同時使用計算機時提供有保護的分享
編譯器的工作則是將語言如:C, C++, Java, Visual Basic所寫的程式翻譯成硬體可至執行的指令- 最初與電腦溝通必須使用2進制數字,之後發明了將符號標記翻譯成2進制的程式(同計算機結構課程期中前所學),最後高階程式語言的出現(C, C++, JAVA)讓我們與計算機的溝通更為方便
- 計算機的五大傳統標準「輸入」、「輸出」、「記憶體」、「數據通道」、「控制」
- 在CPU的設計上,最常被關注的就是處理時間 公式--> 中央處理器執行某程式需時 = 中央處理器執行該程式所需時脈數 * 時脈週期時間
- 有號及無號數字,與一年級的數位邏輯的關聯性非常大,敘述了在暫存器中如何儲存正數與負數等,以及補數的出現。能做決定的指令,在此提到的語言和實作nand2tetris的寫法有幾分相似。
- 在我們寫的程式到電腦看得懂的寫法中,有「編譯器」、「組譯器」、「連結器」、「載入器」替我們執行翻譯的部分。
- 內存程式計算機的兩個原則 1.使用與數字看起來一樣的指令形式 2.將程式儲存於可更改的記憶體中,這兩個原則使計算機能夠被不同領域的使用者各取所需的使用。 而為機器選擇一套指令有幾個設計原則1.規律性易導致簡單的設計(指令在暫存器中所佔的大小都相同) 2.越小越快 3.好的設計需要有好的初衷
- 在這本書的其中一章,談到了計算機的運算,內容與期中前用nand2tetris所使用到觀念相似,其中所包含的圖例解說也有助於理解運作過程
- 管道化處理是一種能讓多個指令在執行時重疊的技巧。MIPS指令上的管道化 1.從記憶體中擷取指令 2.解碼並同時讀取暫存氣得值 3.執行或計算位址 4.存取數據記憶體中的運算元 5.將結果寫回暫存器 此做法可以提升執行的效率。
- 管道化處理是平行性的重要關鍵之一,這種平行性被稱之為「指令階層平行性」。而提高指令階層平行性的效能方法主要有兩種,增加管道深度及複製計算機內部的元件讓它能在每個不同的層級執行多道指令(稱為多重派發)。
- 管道的指令不能在上個剛結束就接著下指令否則會出現危障(hazards),危障分為三種 1.結構危障(ex:洗、烘衣服的機器是同一台,洗衣時無法烘衣) 2.數據危障(ex:某一個步驟已經完成了,必須等待其他步驟而停滯) 3.控制危障(某些指令正在進行時,同時又需要另一個指令的結果來決定該指令是否執行)
- 管道化處理及多重指令派發都是為了發掘指令階層的平行性
- 記憶體階層的區域性原則1.時間區域性 2.空間區域性。 記憶體階層中,主要使用的四種有SRAM DRAM 快閃記憶體 磁碟
- 記憶體階層速度很快但不佳的話,並非設計者所想設計的。在前面有提到「經由冗餘提升可靠性」,因此可以透過「冗餘」,提升記憶體的可靠性
- 虛擬機器(關注度不斷增加) 1.其隔離性與安全性在現代越來越重要 2.標準作業系統的安全性與可靠性不足 3.許多不相關的使用者共用一台計算機 4.處理器的速度快速成長,使用虛擬機的額外負擔減少
- 雖然中譯本的頁數比原文書看起來少了許多,但其中涵蓋的內容並沒有少。每個章節後面都有回顧與評論,以及某個技術或設備的演進歷史等,在學習結構與設計的同時去了解它的演進史,這對於理解一個原理有很大的幫助。
- 在蠻前面的部分就有提到 C語言與組合語言的關係,從一年級的數位邏輯、這學期的計算機結構、下學期的系統程式,一系列的課程都相互有關聯。
圖源:
平行性、階層
nanf2tetris
以上筆記、圖皆參考自計算機組織與設計:硬體/軟體的介面, 5/e原文書