簡單說是因為內存太慢了,實際上內存的誕生也是類似這樣的原因。一台電腦只需要外部儲存裝置就能跑,但這樣速度太慢,尤其是早期用的紙帶、磁帶,完全跟不上處理器的運算速度。因此發明內存作為處理器和外部儲存裝置之間的緩衝,處理器可以把讀取到的數據和指令暫存在內存中,以便利後續立即使用。內存作為隨機存取記憶體,免去了尋址等操作,存取延遲比外部儲存裝置可快上數個時脈周期,這樣大大提升了系統運算速度。
隨機存取記憶體有兩種:SRAM(靜態隨機存取記憶體)和DRAM(動態隨機存取記憶體)。 SRAM無需刷新速度更快,但密度小造價昂貴。 DRAM需要不斷通電刷新,速度比較慢,製造成本低,容量大。內存剛發展時曾有過SRAM時期,隨後被更廉價DRAM取代。一開始DRAM速度還能跟得上處理器,比如處理器的時脈在2MHz時內存的頻率可以達到4MHz。而從上世紀80年代開始,處理器的速度很快就遠遠甩開內存,差距逐漸達到數個時脈周期。
處理器與DRAM的速度差距越來越大。
這時候SRAM來救場了,它的速度能跟得上處理器,廠商因此開始放入處理器內部,處理器緩存也因此誕生。最早有記錄使用緩存的系統是通用電氣的645和IBM360/67,它們配備了TLB轉換檢測緩衝區,用於加快內存尋址,而最早有記錄搭載了數據緩存的系統是IBM System/360 Model 85 。我們比較熟悉的摩托羅拉68k系列處理器中,發佈於1984年的68020是第一款真正搭載了緩存68k的處理器,擁有256Byte的指令緩存。
現在的處理器都有一套多層級緩存系統,緩存分為L1、L2、L3等,有的還有L4。當L1發生緩存命中失敗後,處理器會嘗試去L2中讀取,如果又失敗,則繼續往向下一層緩存尋找。數字越小的緩存速度越快,但成本也越高,因此容量一般更小。緩存並不是越大越好,雖然更大的緩存雖然能存儲更多數據和指令,但每一次尋址需要花費更多的周期,可能最終得不償失。緩存的設計需要平衡時間、空間和製造成本,是處理器架構設計中的一個重要環節。
圖為英特爾CPU結構示意圖。圖片來自AnandTech
來源
謝謝收看
留言列表