4.2. 儲存空間的族譜
事實上,目前的電腦使用了非常多種儲存技術。每種技術都為不同的功能所設計,好讓儲存空間的速度與容量能夠互相匹配。
這些技術有:
處理器的暫存器
快取記憶體
隨機存取記憶體(RAM)
硬碟
4.2. 儲存空間的族譜
事實上,目前的電腦使用了非常多種儲存技術。每種技術都為不同的功能所設計,好讓儲存空間的速度與容量能夠互相匹配。
這些技術有:
處理器的暫存器
快取記憶體
隨機存取記憶體(RAM)
硬碟
離線的備份儲存裝置(磁帶機、光碟機等等)
就功能與成本來說,這些技術形成了一個大家族。舉例來說,CPU 暫存器:
速度非常快(存取時間只有幾個奈秒 - nanosecond)
儲存空間不大(多半低於 200 位元組)
擴充性非常有限(得改變處理器的架構)
造價昂貴(每個位元組超過一美元)
然而,在這族譜上的另一端,離線備份裝置:
速度非常慢(如果備份資料必須送到很遠的地方去,那麼存取時間可以用「天」來計算)
容量非常大(數十到數百 GB)
基本上,擴充能力沒有上限(唯一的限制是存放備份磁帶的樓板面積)
非常便宜(每個位元組不到幾美分)
藉由這不同能力的技術,您就得以微調您的系統,用最小的成本,獲得最大的效能。以下章節將為您探索儲存家族中的每一項成員。
4.2.1. CPU 暫存器
所有現今的處理器都包括了許多不同功能的暫存器,從儲存目前執行中指令的位址,到更一般的資料儲存與處理。CPU 暫存器的執行速度跟 CPU 的其他部份一樣;否則暫存器就會變成嚴重的瓶頸,影響系統效能。這是因為 CPU 的所有運作多少都跟暫存器有關。
CPU 暫存器的數目(與使用方式)與 CPU 本身的架構有著非常緊密的依存關係。除非使用另一種架構的處理器,否則您沒有辦法改變 CPU 暫存器的數目。也因為如此,CPU 暫存器的數目可被視為是個常數,要改變的話,必須花上很多精力與成本。
4.2.2. 快取記憶體
快取記憶體的作用是在有限而高速的 CPU 暫存器,以及比起來速度慢但容量大的主系統記憶體 — 通常稱為 RAM[1] — 之間,建立一個緩衝區。快取記憶體的運作速度跟 CPU 一樣,當 CPU 從快取記憶體中存取資料時,就不用花時間等待。
快 取記憶體的設計理念在於當 CPU 要從 RAM 中讀取資料時,系統硬體會先看看資料是不是在快取中。如果是,系統就會直接從快取中讀出資料,交給 CPU 使用,速度非常快;反之,資料如果不在快取裡,系統就會從 RAM 中讀取,再轉給 CPU 使用,同時把這筆資料存放在快取記憶體中(以備不時之需)。從處理器的角度來看,CPU 根本不知道發生了什麼事;而從快取記憶體與主記憶體中讀取資料的分別,僅在於傳回資料所花的時間而已。
就儲存容量而言,快取記憶體比 RAM 小得多。因此,主記憶體中的每筆資料不可能存放在快取中。因此,我們需要把快取切成數個區域,以對應 RAM 的不同區域。同時我們也需要一個機制,讓快取的每個區域在不同時間裡,將 RAM 中的資料讀入。即使快取記憶體與主記憶體的大小相差甚多,但以我們先前提到的循序存取、在近似地點發生的前提來看,一點點快取就可以有效改善大量主記憶體 的存取速度。
當資料從 CPU 寫回記憶體時,情況就有些複雜了。目前有兩種方式可以採用。這兩種方式一開始都是把資料寫到快取記憶體中。然而,快取的作用是在手邊保留部份記憶體的資 料,存取速度才快;如果資料改變,那麼快取記憶體與主記憶體中的資料,也要一起跟著變動。否則的話,兩者的資料就不同步了。
這兩種方法的不同處就在這裡。第一種快取方法稱為 write-through(寫透式、寫通式),會直接把資料寫回記憶體中。另一種快取方式是 write-back,會把資料寫回記憶體的時間延後,如果有個資料常常被修改,就可以降低不斷將資料寫回 RAM 的時間。
前 者的作法比較簡單,也因此最常見。後者就需要點技巧:除了儲存實際資料外,還需要一些機制把快取資料分類為乾淨的(clean,表示快取中的資料跟記憶體 中的相同),或骯髒的(dirty,表示快取中的資料已經被修改,但尚未反應到主記憶體中)。同時,我們還需要系統定期將標示為骯髒的快取資料,寫回主記 憶體裡面。
4.2.2.1. 快取的等級
目前電腦的快取子系統可能是多層式的架構;也就是說,CPU 與主記憶體之間,可能有好幾層快取記憶體。我們通常用數字來標示快取的等級,數字愈小,愈幾近 CPU。許多系統都有兩層快取記憶體:
L1 快取多半位於處理器晶片中,執行速度跟 CPU 一樣
L2 快取通常是 CPU 模組的一部分,執行速度跟 CPU 一樣(或接近),同時容量比 L1 稍大,速度也稍慢
有些系統(通常是高效能的伺服器)也有 L3 快取,多半位於主機板上。您可以猜到,L3 快取會比 L2 來得大(也來得慢)。
但不管是什麼樣的情形、也不管是單層或多層架構,所有快取子系統的作用都一樣 — 都是為了降低記憶體的平均存取時間。
4.2.3. 主記憶體 — RAM
在現代的電腦中,RAM 是電子式儲存空間的大宗,紀錄了正在使用中的程式與資料。目前 RAM 的速度介於快取記憶體與硬碟之間,但大幅偏向前者,而非硬碟。
RAM 的基本概念非常直接扼要。在最底層的是記憶體晶片 — 實際「記憶」資料的整合電子線路。這些晶片會以四種通道與外在世界連接:
電源通道(提供電力讓晶片中的線路運作)
資料通道(讓資料可以寫入或傳出)
讀 / 寫通道(控制資料是要寫入晶片,還是從晶片中讀出)
位址通道(決定要讀 / 寫資料的位置)
底下是將資料存到記憶體的步驟:
要儲存的資料會出現在資料通道上
資料要存放的位置會出現在位址通道上。
讀 / 寫通道會被設定為寫入模式。
而讀取資料的過程也一樣簡單:
要讀出的資料位址會呈現在位址通道上。
讀 / 寫通道會被設為讀取模式。
要讀出的資料會透過資料通道讀出。
這些步驟看起來很簡單,都在彈指間完成,時間只以奈秒來計算。
現在記憶體晶片幾乎都以模組(modules)方式售出。每個模組都由一塊小小的電路板,焊上幾個記憶體晶片而成。不管是機械結構或電子佈線,記憶體模組都承襲的多種業界標準,讓您可以從不同的廠商手上,買到可用的記憶體。
注意 | |
---|---|
使用業界標準 RAM 的最大好處,在於能將記憶體模組的成本壓低。因為您並非只能從系統製造商手上買到模組。 雖然大部分電腦都使用業界標準的記憶體模組;但還是有例外。最常見的例子出現在筆記型電腦(雖然有一些標準化過程正在進行中)以及高階伺服器上。不過即使如此,如果這些系統非常普遍,也不是全新的設計,您可能可以從協力廠商處買到相容的模組。 |
4.2.4. 硬碟
至此我們討論的技術,都屬於揮發性(volatile)的。這意思是,當您關閉系統電源之後,這些資料都會不見。
相反地,硬碟則屬於非揮發性(non-volatile)的儲存裝置 — 即使關機,資料還是存在。也因為這個原因,硬碟在儲存家族中,佔有很獨特的地位。硬碟的非揮發性很適合拿來長期儲存程式與資料。另一個跟主記憶體或快取記憶體完全不同的地方,是您不能在硬碟上執行資料,一定要先將資料讀到 RAM 上面才可以。
另一個不同的地方是資料儲存與讀取的速度:跟快取與主記憶體等使用電子技術的裝置比起來,硬碟的速度慢多了。這速度差距主要來自硬碟的機械結構。硬碟的資料讀寫過程各有四個階段,底下是這四個階段,括弧裡面是高效能硬碟的平均執行時間:
移動存取臂(5.5 毫秒 - millisecond)
轉動磁盤(0.1 毫秒)
讀寫頭讀 / 寫資料(0.00014 毫秒)
資料藉由硬碟的電子結構傳輸(0.003 毫秒)
當然,只有最後一步跟機械結構無關。
注意 | |
---|---|
雖然硬碟還有很多東西值得探討,但這些技術都留待第5章,再為您詳細剖析。現在您只要記得 RAM 跟磁碟技術的分別,後者的容量差距至少是十倍、甚至百倍以上。 |
4.2.5. 離線備份儲存裝置
離線備份儲存空間跟硬碟比起來,又插上一大截:容量更大、但速度更慢。以容量來說,唯一的限制是您取得與儲存可移除媒體的能力。
用在這些裝置的實際技術差異很大,以下是幾種常見的類型:
磁帶
光碟片
當 然,使用可移除媒體(例如磁帶或光碟片)意味著存取時間會更長,特別是媒體不在機器中的時候尤然。您可以使用自動換片或換磁帶的機械裝置,以加快存取過 程;但這些裝置的能力畢竟有限。即使在最好的情形下,存取時間僅有幾秒;但跟使用高速硬碟的幾個毫秒比起來,速度實在太慢。
我們已經簡短瀏覽完目前常見的多種儲存技術,現在,就讓我們來看看基本的虛擬記憶體概念。
注
[1] | 雖然「RAM」是「隨機存取記憶體(Random Access Memory)」的縮寫,但它也常用來泛指不需要循序存取資料的儲存技術。當系統管理者提到 RAM 的時候,他們不一定在說主系統記憶體。 |
文章来源于领测软件测试网 https://www.ltesting.net/
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073