天天看點

《現代體系結構上的UNIX系統:核心程式員的對稱多處理和緩存技術(修訂版)》——導讀

《現代體系結構上的UNIX系統:核心程式員的對稱多處理和緩存技術(修訂版)》——導讀

**

前言

在計算機系統發展曆史中的許多時期,建構整體上速度更快的系統的願望都集中在系統的三大組成部分——cpu、存儲子系統和i/o子系統——的速度都更快上面。通過提高時脈速度就可以制造出更快的cpu。通過降低存取時間就可以制造出更快的存儲子系統。通過提高資料傳輸速率就可以制造出更快的i/o子系統。但是,随着時脈速度和傳輸速率的提高,要提高系統的整體速度就變得越來越困難了,是以要設計和建構這樣的系統,成本也變得越來越高。随着速度的提高,傳輸延遲(propagation delay)、信号上升時間(signal rise time)、時鐘同步和分發(clock synchronization and distribution)等都變得越發重要起來。這類高速設計的高成本更難獲得有效的性能價格比。

因為受這樣和那樣的因素影響,系統設計人員擴大了他們的關注範圍,以找出提高系統整體性能的其他途徑。精簡指令集計算機(reduced instruction set computer,risc)系統的概念就是其成果之一,在risc系統中對cpu指令集進行了簡化,進而讓一個低成本的快速硬體實作就能完成這些指令。另一項成果是高速緩存存儲系統的開發。高速緩存通過把程式中引用最頻繁的資料和指令儲存在一小塊高速存儲器中,以此降低主存儲系統的負載,進而提高系統的性能。通過增加一小塊成本劃算、高速度的高速緩存(而不是一個成本高、規模大的高速主存儲子系統)就能加速存儲器整體存取速度。采用高速緩存存儲器有可能帶來更快的存儲器整體存取時間,這對于risc系統來說尤為重要,因為要完成相同的任務,使用精簡的指令集通常要求risc cpu比傳統的cpu體系結構取得和執行更多的指令。一般而言,risc系統需要更高的帶寬來以峰值性能運作。

通過并行運作更多台裝置而不是提高任何單台裝置的速度就能獲得更高的i/o傳輸速率。這就導緻了諸如廉價磁盤備援陣列(redundant arrays of inexpensive disks,raid)之類裝置的發展,在raid中,多塊磁盤并行運作以提供更高的整體傳輸率。通過增加一個系統中cpu的數量來建構多處理器,這樣的技術也可以用于提高cpu的速度。多處理器把系統負載分散到多個處理器上來增加整個系統的吞吐率。

多處理器和高速緩存是密切相關的。緊密耦合多處理器系統(tightly coupled multiprocessor system)有一個共享的主存儲子系統,随着處理器數量的增加,它需要更高的主存儲帶寬,因為每個處理器在取得和執行一條獨立的指令流的同時,都必須在存儲器中通路一組獨立的資料。将一塊高速緩存和每個處理器進行耦合,從高速緩存而不是共享的主存儲器來滿足處理器大部分的存儲器通路請求,就可以降低主存儲器的負載。這是一種頗為劃算的提高系統性能的途徑。

雖然高速緩存能夠在多處理器中增加有效的存儲器帶寬,但是高速緩存結構對于管理它所需要的作業系統開銷有很大的影響,這又反過來影響了系統的整體性能。

總而言之,建構速度更快的計算機系統不僅僅是一件諸如提高cpu時脈速度這樣的事。雖然這樣的技術實際上造就了更快的系統,但是它們不一定就是經濟上劃算的解決方法。通過集中研究如何利用現有的系統部件來提供更高的系統性能,人們已經發現高速緩存和多處理器是劃算的解決方案。是以,我們就從這裡開始研究高速緩存和多處理器的體系結構,以及它們給作業系統帶來的問題。

**[第1章 回顧unix核心原理

<a href="https://yq.aliyun.com/articles/102608">1.2 程序、程式和線程</a>

<a href="https://yq.aliyun.com/articles/102615">1.3 程序位址空間</a>

1.3.1 位址空間映射

<a href="https://yq.aliyun.com/articles/102623">1.4 上下文切換</a>

<a href="https://yq.aliyun.com/articles/102630">1.5 記憶體管理和程序管理的系統調用</a>

1.5.1 系統調用fork

1.5.2 系統調用exec

1.5.3 系統調用exit

1.5.4 系統調用sbrk和brk

1.5.5 共享記憶體

1.5.6 i/o操作

1.5.7 映射檔案

<a href="https://yq.aliyun.com/articles/102635">1.6 小結</a>

<a href="https://yq.aliyun.com/articles/102640">1.7 習題</a>

<a href="https://yq.aliyun.com/articles/102680">1.8 進一步的讀物</a>

**[第2章 高速緩存存儲系統概述

<a href="https://yq.aliyun.com/articles/102700">2.2 高速緩存基本原理</a>

2.2.1 如何存取高速緩存

2.2.2 虛拟位址還是實體位址

2.2.3 搜尋高速緩存

2.2.4 替換政策

2.2.5 寫政策

<a href="https://yq.aliyun.com/articles/102717">2.3 直接映射高速緩存</a>

2.3.1 直接映射高速緩存的雜湊演算法

2.3.2 直接映射高速緩存的執行個體

<a href="https://yq.aliyun.com/articles/102725">2.4 雙路組相聯高速緩存</a>

<a href="https://yq.aliyun.com/articles/102730">2.5 n路組相聯高速緩存</a>

<a href="https://yq.aliyun.com/articles/102738">2.6 全相聯高速緩存</a>

<a href="https://yq.aliyun.com/articles/102741">2.7 n路組相聯高速緩存的總結</a>

<a href="https://yq.aliyun.com/articles/102749">2.8 高速緩存沖洗</a>

<a href="https://yq.aliyun.com/articles/102755">2.9 無緩存的操作</a>

<a href="https://yq.aliyun.com/articles/102761">2.10 獨立的指令高速緩存和資料高速緩存</a>

<a href="https://yq.aliyun.com/articles/102771">2.11 高速緩存的性能</a>

<a href="https://yq.aliyun.com/articles/102776">2.12 各種高速緩存體系的差異</a>

<a href="https://yq.aliyun.com/articles/102782">2.13 習題</a>

<a href="https://yq.aliyun.com/articles/102791">2.14 進一步的讀物</a>

繼續閱讀