深入理解計算機系統 2

2021-09-30 14:33:49 字數 999 閱讀 7170

第一部分

程式結構和執行

我們對計算機系統的探索是從學習計算機本身開始的

它是由處理器和儲存器子系統組成

在核心部分

我們需要方法來表示基本資料型別

比如整數和實數運算的近似值

然後我們考慮機器級指令如何操作這樣的資料

以及編譯器如何將c程式翻譯成這樣的指令  

接下來研究幾種實現處理器的方法

幫助我們更好的了解硬體資源是如何被用來執行指令

一旦理解了編譯器和機器**

我們就能通過編寫最高效能的c程式 來分析如何最大化程式的效能  本部分以儲存器子系統的設計作為結束

這是現代計算機系統最複雜的部分之一

本書的這一部分將領著你深入了解如何表示和執行應用程式

你將學會一些技巧

他們將幫助你寫出安全

可靠並充分利用計算機資源的程式

第二章資訊的處理和表示

我們研究三種最重要的數字表示

無符號unsigned 編碼基於傳統的二進位制表示法 表示大於或等於零的數字   補碼

two's-complement

編碼表示的是  有符號整數的最常見的方式 有符號整數就是可以為正或者為負的數   浮點數

floating - point  

編碼是表示實數的科學計數法的 以二為基數的版本   

計算機的表示法是用有限數量的位來對乙個數字進行編碼

因此當結果太大以致不能表示時

某些運算就會溢位overflow   另一方面 整數的計算機運算滿足人們所熟知的真正整數運算的定律  

浮點數運算有完全不同的數學屬性

雖然溢位會產生特殊的值+∞ 但是一組正數的乘積總是正的   由於精度有限 浮點運算是不可結合的   整數運算和浮點數運算會有不同的數學屬性是因為他們處理數字表示有限性的方式不同---

整數的表示雖然只編碼乙個相對較小的數值範圍 但是精確  而浮點數雖然可以編碼乙個較大的數值範圍 但是這種表示只是近似的

我們對這部分內容的處理是基於」

深入理解計算機系統 2

程式抽象流程 在c語言中 1 c預處理器 cpp 擴充套件源 插入所有用 include 命名指定的檔案,並擴充套件所有用 define 宣告指定的巨集。2 編譯器 ccl 產生兩個源 的彙編 名字命名分別為p1.s 3 彙編器 as 將彙編 轉化為二進位制目標 為p1.o 目標 是機器 的一種形式...

深入理解計算機系統(2) 計算機系統漫遊

這一節的內容有些枯燥,很多內容都是文字描述。但是對於後續的學習是有幫助的,一些概念提前有個簡單的了解多少會有些幫助。這一節的學習內容都是一些概念和知識的簡要介紹,沒有過多地深入,旨在為後續學習做個鋪墊。上文最後部分提到,計算機內部執行程式時,用到了很多複製的操作,此處為鏈結。從程式設計師的角度來說,...

深入理解計算機系統

關鍵路徑是在迴圈的反覆執行中形成的資料相關鏈。迴圈展開是一種程式變換,通過增加每次迭代計算的元素的數量,減少迴圈的迭代次數。重新結合變換能夠減少計算中關鍵路徑上操作的數量,通過更好地利用功能單元的流水線能力得到更好的效能。浮點運算不保證是可結合的,通常迴圈展開和並行地累積在多個值中,是提高程式效能的...