制約計算機儲存器設計的問題歸納起來有三個:容量多大?速度多快?價格多貴?容量多大的問題似乎沒有限制,不管容量多大,總要開發出應用來使用它。速度多快的問題在某種意義上更容易回答。為了獲得多大的效能,儲存器速度必須能夠跟上處理器的速度,即當處理器執行指令時,我們不想使它停下來等待指令或運算元。最後一個問題也必須考慮,對於實用的系統,儲存器的價格相對於其他部件必須是合理的。正如人們所預料的,在儲存器的3個關鍵特性即價格、容量和存取時間之間需要進行權衡。任何時候,都有各種技術可用來實現儲存系統。在這個技術領域中,存在如下關係:存取時間越短,每位的價格就越高;容量越大,每位的價格就越低;容量越大,存取時間就越長;很顯然,擺在設計者面前的難題是,不僅需要大容量,而且需要低的每位價格,因此希望採用提供大容量儲存器的技術。但為了滿足效能需求,設計者又必須使用昂貴、容量較小和存取時間快的儲存器。解決這個難題的方法是採用儲存器層次結構,而不只是依賴單一的儲存部件或技術。下圖給出了一個通用儲存層次結構,圖中從上到下,出現下列情況:每位價格降低;容量增大;存取時間增大;處理器訪問儲存器的頻度降低;因此,容量較小、價格較貴、速度較快的儲存器可作為容量較大、速度較慢的儲存器的補充。這種組織方式成功的關鍵是最後一項,即處理器訪問儲存器的頻度降低。條件四有效的基礎是訪問區域性性原理。在程式執行的過程中,處理器訪問儲存器中的指令和資料傾向於成簇(塊)。程式通常通常包含很多迭代迴圈和子程式,一旦進入了一個迴圈和子程式,則需重複訪問一小組指令。同樣,對於表和陣列的操作,包含存取一簇簇的資料。在一長段時間內,使用的簇是變動的;而在一小段時間內,處理器主要訪問儲存器中的固定簇。因此,透過分層結構組織資料,有可能使存取較低層的百分比低於存取高層儲存器的百分比。考慮剛才給出的二級儲存器的例子,讓第二級的儲存器包含所有程式的指令和資料,當前的簇臨時放在第一級,第一級的某些簇會不時地交換回第二級,為將要進入第一級的簇騰出空間。然而,平均來說,多數的訪問是對第一級中的指令和資料。這個原則可以應用到二級以上的儲存器。考察圖所示的分層結構,速度較快、容量較小且價格最貴的儲存器是處理器的內部暫存器。下跳兩層是主儲存器,它是計算機中主要的記憶體系統。主儲存器常用速度更快,容量更小的快取記憶體來擴充。
制約計算機儲存器設計的問題歸納起來有三個:容量多大?速度多快?價格多貴?
容量多大的問題似乎沒有限制,不管容量多大,總要開發出應用來使用它。速度多快的問題在某種意義上更容易回答。為了獲得多大的效能,儲存器速度必須能夠跟上處理器的速度,即當處理器執行指令時,我們不想使它停下來等待指令或運算元。最後一個問題也必須考慮,對於實用的系統,儲存器的價格相對於其他部件必須是合理的。
正如人們所預料的,在儲存器的3個關鍵特性即價格、容量和存取時間之間需要進行權衡。任何時候,都有各種技術可用來實現儲存系統。在這個技術領域中,存在如下關係:
存取時間越短,每位的價格就越高;
容量越大,每位的價格就越低;
容量越大,存取時間就越長;
很顯然,擺在設計者面前的難題是,不僅需要大容量,而且需要低的每位價格,因此希望採用提供大容量儲存器的技術。但為了滿足效能需求,設計者又必須使用昂貴、容量較小和存取時間快的儲存器。
解決這個難題的方法是採用儲存器層次結構,而不只是依賴單一的儲存部件或技術。下圖給出了一個通用儲存層次結構,圖中從上到下,出現下列情況:
每位價格降低;
容量增大;
存取時間增大;
處理器訪問儲存器的頻度降低;
因此,容量較小、價格較貴、速度較快的儲存器可作為容量較大、速度較慢的儲存器的補充。這種組織方式成功的關鍵是最後一項,即處理器訪問儲存器的頻度降低。
條件四有效的基礎是訪問區域性性原理。在程式執行的過程中,處理器訪問儲存器中的指令和資料傾向於成簇(塊)。程式通常通常包含很多迭代迴圈和子程式,一旦進入了一個迴圈和子程式,則需重複訪問一小組指令。同樣,對於表和陣列的操作,包含存取一簇簇的資料。在一長段時間內,使用的簇是變動的;而在一小段時間內,處理器主要訪問儲存器中的固定簇。
因此,透過分層結構組織資料,有可能使存取較低層的百分比低於存取高層儲存器的百分比。考慮剛才給出的二級儲存器的例子,讓第二級的儲存器包含所有程式的指令和資料,當前的簇臨時放在第一級,第一級的某些簇會不時地交換回第二級,為將要進入第一級的簇騰出空間。然而,平均來說,多數的訪問是對第一級中的指令和資料。
這個原則可以應用到二級以上的儲存器。考察圖所示的分層結構,速度較快、容量較小且價格最貴的儲存器是處理器的內部暫存器。下跳兩層是主儲存器,它是計算機中主要的記憶體系統。主儲存器常用速度更快,容量更小的快取記憶體來擴充。