1.了解基本的儲存技術,
2.程式設計師需要理解儲存器層次結構,因為其對應用程式的效能有巨大影響。
3.理解區域性性原理,縮短程式執行時間。
區域性性通常有兩種不同的形式:時間區域性性和空間區域性性。
在乙個具有良好時間區域性性的程式中,被引用過一次的儲存器位置很可能在不遠的將來再被多次引用。在乙個具有良好空間區域性性的程式中,如果乙個儲存器位置被引用了一次,那麼程式很可能在不遠的將來引用附近的乙個儲存器位置。
乙個編寫良好的電腦程式常常具有良好的區域性性。這種傾向性,稱為區域性性原理。
①對程式資料引用的區域性性
②取指令的區域性性
如for迴圈裡的指令按照連續的記憶體順序執行,迴圈體會被執行多次,所以擁有很好的時間和空間區域性性。
③如何有更好的區域性性
1.儲存器層次結構
2.快取
快取記憶體(cache)是乙個小而快的儲存裝置,作為儲存在更大也更慢的裝置中的資料物件的緩衝區域。使用快取記憶體的過程成為快取。
第k層總是作為第k+1層儲存裝置的資料物件的緩衝區域。在這過程中,總是以傳送單元(塊)在第k層與第k+1層之間來回拷貝資料。
快取命中:需要的第k+1層的資料物件d剛好快取在第k層,直接從第k層讀取d。
快取不命中:第k層沒有資料物件d。
3.快取記憶體儲存器
通用的快取記憶體儲存器組織結構
另:快取記憶體之所以用中間的位作為組索引,不是用高位這是因為使用高位一些連續的儲存器會對映在相同的快取記憶體塊中,造成衝突不命中的情況。
快取記憶體確定乙個請求是否命中,然後抽取出被請求的字的過程:組選擇、行匹配、字抽取。
4.請求是否命中?
直接對映快取記憶體:每個組只有一行(e=1)的快取記憶體。
以 直接對映快取記憶體 為例:
組組相連快取記憶體:e = c/b
全相聯快取記憶體:e = c(乙個組包含所有快取記憶體)
5.有關寫的問題
當字w寫命中時:
直寫在需要寫的時候立即將w的快取記憶體寫回到緊接著的低一層中去
寫回盡可能的推遲儲存器更新,只有當替換演算法要替換掉這乙個塊的時候,才把w寫回緊接著的低一層去」兩種方式。
寫不命中時:
有兩種處理方法:
寫分配載入相應的低一層的快到快取記憶體,然後更新這個快取記憶體塊
非寫分配直接寫入到低一層去,避開快取記憶體。
直寫快取記憶體通常非寫分配,寫回快取記憶體通常寫分配。
程式設計師可以通過編寫有良好空間和時間區域性性的程式顯著改進程式的執行時間,利用基於sram的快取記憶體儲存器特別重要(從快取記憶體取資料的程式比主要從記憶體存資料的程式執行快得多)。
《深入理解計算機系統》 第1章 計算機系統漫遊
4.執行hello程式 最近重啟了寫部落格,都說念念不忘必有迴響。自從上一遍部落格,到現在已經過去了快兩年的時間。在這期間一直在想著什麼時候寫個部落格呀,什麼時候再摸著鍵盤一點點的碼字啊,心裡一直在想,直到現在,終於有了行動。看著乙個乙個的字,隨著鍵盤的敲擊,一串串躍然於螢幕之上,心裡有說不出來的平...
深入理解計算機系統
關鍵路徑是在迴圈的反覆執行中形成的資料相關鏈。迴圈展開是一種程式變換,通過增加每次迭代計算的元素的數量,減少迴圈的迭代次數。重新結合變換能夠減少計算中關鍵路徑上操作的數量,通過更好地利用功能單元的流水線能力得到更好的效能。浮點運算不保證是可結合的,通常迴圈展開和並行地累積在多個值中,是提高程式效能的...
《深入理解計算機系統》
知乎 深入理解計算機系統 這本書需要什麼水平能看懂?15 213 18 218 15 513 introduction to computer systems schedule fall 2016 鏈結失效則 cmu15 213的課程主頁,有ppt,還有錄影,主講人就是這本書的作者。備註 備註 詳細...