6.4. 多執行緒最佳化
關於多執行緒,有三個快取使用的面向是很重要的:
- 並行(Concurrency)
- 原子性(Atomicity)
- 頻寬
這些面向也適用於多行程的情況,但因為多行程(大多數)是獨立的,因此為它們最佳化並沒有那麼容易。可能的多行程最佳化是那些可用於多執行緒情況的子集。所以這裡我們會專門討論後者。
在這種前後文下,並行指的是在一次執行多於一條執行緒時,一個行程所歷經的記憶體影響。執行緒的一個特性是它們全都共享相同的位址空間,因此全都能夠存取相同的記憶體。在理想的情況下,執行緒所使用的記憶體區域在多數時候都是不同的。在這種情況下,那些執行緒僅稍許耦合(couple)(舉例來說,共有的輸入與/或輸出)。若是多於一條執行緒使用了相同的資料,就需要協調了:這即是原子性發揮作用的時候。最後,視機器架構而定,可用的記憶體與可用於處理器的處理器之間的匯流排頻寬是有限的。我們將會在接下來的章節分別論及這三個面向––雖然它們是緊密相連的。