記憶體功用和結構 功用 是電腦用來儲存資料的地方 類似於CPU的暫存器的功能,可以暫存CPU所需要的資料 它可以暫存資料(沒有電源即消失),也可以永久保留資料(自備電源,所以資料不會消失),在本節中會介紹各種記憶體的類型 記憶體的儲存單位也是位元組 容量由數KB到數百MB或GB
4-3-1 記憶體功用和結構 程式要載入到記憶體才能執行 一般應用程式或資料都儲存在磁碟機(磁碟、硬碟、光碟等)上,但儲存在這些媒體上的應用程式無法由CPU直接控制和執行,因為CPU的處理速度是每秒數億個運算,而這些媒體是由步進馬達來驅動和讀寫資料,兩者速度相差甚遠,所以要有記憶體來當中介,因此CPU只對記憶體存取資料,不會直接存取磁碟機媒體的資料
記憶體功用和結構(Cont’d) 記憶體的邏輯觀念 為了管理方便,我們會將記憶體編號,賦予特定的位址(Address),就像是我們家裡的住址或是信箱編號一樣,這樣中央處理器就可以照著位址來存取資料。 記憶體的存取的資料一般是以1個位元組(Byte)為單位 如果你有1KB的記憶體則可畫分出210=1024個位址 記憶體的邏輯(logical)觀念可以看成一棟高樓或方塊來表示
記憶體功用和結構(Cont’d) 記憶體的實體構造 記憶體的實體構造是一種稱為記憶體IC的電子零件(記憶體IC可分為DRAM、SRAM、ROM等等,但外觀上大致相同,稍後會分別介紹) 每個記憶體IC都有很多針腳(pin),以負責輸入出控制訊、位址訊號、資料訊號和電源訊號等
記憶體功用和結構(Cont’d) 上圖為記憶體IC(以RAM為例)的針腳位置圖,每個針腳都有特定的功能,主要有VCC及GND為電源,RD及WR用來控制訊號,A0到A9為位址訊號,D0到D7為資料訊號。一般以+5V的直流電為訊號1,0V直流電為訊號0。 由上圖可知位址線路有10個,可以表示的位址種類有210=1024,編號可從0到1023。每個位址可放1個Byte,所以此記憶體IC的容量是1KB。更大容量的記憶體(例如32MB,128MB,256MB等),其構造和存取資料的原理相類似,但針腳數不同。
記憶體功用和結構(Cont’d) 在1100000101位址寫入A(ASCII碼4116=010000012)為例,則設定RD=0、WR=1,A0到A9分別為1100000101,D0到D7分別為01000001,VCC=+5V。如下圖
記憶體功用和結構(Cont’d) 如果在1100000110位址有B(ASCII碼4216=010000102)要讀出,則設定RD=1、WR=0,A0到A9分別為1100000110,D0到D7分別為01000010,VCC=+5V。如下圖:
記憶體功用和結構(Cont’d) 分類 記憶體一般可分類為主記憶體(Main Memory)和輔助記憶體(Secondary Memory)二大類 主記憶體(Main Memory)為CPU運算和儲存程式、資料用途之元件,是微電腦內部的儲存裝置,屬於內部記憶體(Internal Memory)。依功能和特性的不同又可區分為唯讀記憶體(Read Only Memory, ROM)、靜態隨機存取記憶體(Static Random Access Memory , SRAM)、動態隨機存取記憶體(Dynamic Random Access Memory, DRAM)。 輔助記憶體(secondary memory)是用來儲存程式、資料檔及備份資料等,如磁碟機、磁帶機、光碟機等。具有輸入輸出的功能,又稱為外部記憶體(external memory),為大量資料儲放的空間,用到時才放入主記憶體中。
主記憶體(Main Memory) 除了在CPU內的暫存器之外,電腦的記憶體可以分為主要記憶體(main memory)與次要記憶體(secondary memory);通常分別由半導體與磁性元件構成;最常見的例子就是RAM和硬碟(HardDisk)。 主要記憶體簡稱主記憶體(又稱為內部記憶體),目前以半導體元件製成,特性為存取速度快、成本高。 主記憶體依照存取特性又可以分為隨機存取記憶體(Random Access Memory;簡稱RAM)及唯讀記憶體(Read Only Memory;簡稱ROM)。 RAM的成本較低,但是無法於電力消失時保存資料,故為揮發性記憶體的一種。 ROM成本較高,但卻可以在無電力的狀況下保存資料,屬於非揮發性記憶體的一種 傳統的ROM只能寫入資料一次,因此通常只會把啟動電腦所需要的小程式儲存在ROM裡面,例如BIOS就是使用ROM做為儲存處的常見應用。
主記憶體(Main Memory) (Cont’d) RAM ROM 揮發性 非揮發性 讀取 可讀取資料 寫入 可寫入資料 傳統的ROM只能寫入資料一次。 EPROM、EEPOM等可程式化的ROM可透過特殊方式重新寫入資料。 容量 較大 非常小 擴充 通常可擴充至數百MB以上 無法擴充 功能 儲存電腦運作中的各類一般程式與資料。 儲存固定不變的程式,例如開機程式。 RAM與ROM比較表 RAM也分為動態隨機存取記憶體(DRAM)與靜態隨機存取記憶體(SRAM)兩種。 DRAM也就是一般購買電腦時常聽到的RAM SRAM由於速度較快,一般是用在需要快速記憶體的場合,例如快取記憶體(Cache) 。
主記憶體(Main Memory) (Cont’d) SRAM DRAM 揮發性 揮發性(無法在電源消失時保存資料) 充電 不需要 需要 成本及價格 高 低 容量 較小 較大 速度 較快 較慢 SRAM與DRAM比較表 【註】: 主要記憶體包含RAM(DRAM、SRAM)與ROM,但一般我們所謂的主記憶體若未特別提及,則通常指的是RAM,而且是DRAM。
動態隨機存取記憶體(DRAM) DRAM的全名為Dynamic Random Access Memory,中文可譯為『動態隨機存取記憶體』,通常充當電腦系統的主記憶體元件(也就是一般俗稱的RAM)。 使用DRAM作為主記憶體時,將可以暫時儲存指令及資料,以供CPU執行程式之用。事實上,所有準備要執行的程式都必須存放在主記憶體中,CPU才能夠執行程式。 DRAM無法在電腦的電源消失時保持資料,因此,資料若在電源消失前,尚未從主記憶體搬移到磁碟中,在電源消失後(例如關機或重新開機),將會遺失這些資料。 DRAM從過去到現在,隨著技術的進步,也出現了許多種類,如:Conventional RAM、FPM DRAM、EDO RAM、Burst EDO RAM、SDRAM、DRDRAM、DDR SDRAM等等。
動態隨機存取記憶體(Cont’d) FPM DRAM (Fast Page Mode DRAM) FPM RAM在486/Pentium時代,一度是個人電腦最常見的DRAM。 內部以分頁(page)為單位,供CPU存取資料,每個分頁從512位元組到數K位元組,具有快速切換分頁的效果。 一般為30-Pin或72-Pin記憶體模組。在屬於它的年代,由於全名過長且無其他競爭對手,因此,許多人將FPM省略,直接簡稱為DRAM。 FPM之所以稱為Fast Page,是因為它以更快的速度存取位於同一列的資料(也就是同一分頁),因此,FRM改善了更早期的記憶體存取速度。它的存取速度約為70ns~60ns(ns為10-9秒)。
動態隨機存取記憶體(Cont’d) EDO RAM (Extended Data Out RAM) 在1995年,一項新的EDO技術取代了FPM RAM,並且EDO RAM在Pentium等級的電腦中,成為必備的主記憶體元件。 EDO與FPM技術其實大同小異,主要的差別在於 (1)EDO不採用分頁方式,而是將資料放在連續的記憶體位置內。 (2)EDO延長了資料輸出的時間,使得下一次讀取記憶體的動作可以在這一次資料傳送尚未完成時就開始 (3)記憶體控制器能夠在下達指令的過程中省略數個步驟,以便節省時間。 實際上,EDO技術只比FPM技術快了15%~20%左右,差距並不大,不過由於EDO RAM的市場需求較大,因此平均售價得以降低,而取代了FPM的市場。不過,由於EDO RAM無法支援高速的系統時脈(超過66MHz),因此後來又被SDRAM取代。 EDO RAM
動態隨機存取記憶體(Cont’d) 【BEDO RAM】 BEDO RAM 是Burst EDO RAM的簡稱,它只是將原有的EDO RAM加以改良,在EDO RAM中加入管線技術,使得記憶體的存取時間更快,Burst EDO RAM可以適用於更高速的系統時脈,在效能上,和後來出現的第一代SDRAM差不多,不過由於價格較高,在主機板支援不夠普遍的環境下,被SDRAM擊敗。
動態隨機存取記憶體(Cont’d) SDRAM (Synchronous DRAM) 在1996年底,出現了一種新的DRAM技術-『Synchronous DRAM;同步動態存取記憶體;簡稱SDRAM』。 為了因應更高時脈的高效能CPU,主記憶體勢必須要改變EDO RAM的非同步特性。SDRAM最重要的變化就是『同步』(早期的DRAM為非同步),『同步』代表記憶體的時脈與電腦時脈相同,使得記憶體控制器能夠掌握準確的時鐘週期,如此一來,CPU就不需要延後下一次的資料存取。 SDRAM同時透過Interleaving與Bursting技術,加快記憶的讀取速度,並且SDRAM擁有多種不同的速度,以便和系統時鐘同步。 舉例來說,市面上曾經出現的SDRAM有PC66/100/133/150等等,恰好搭配主機板的66/100/133/150等外頻,而外頻又可以透過倍頻方式獲得CPU所需的內部頻率,因此,整個系統的效能得以完全發揮。
動態隨機存取記憶體(Cont’d) SDRAM的資料傳輸寬度為64位元,一般採用DIMM記憶體模組,且分為buffered與unbuffered兩種,工作電壓有3.3及5伏特等規格。但市面上常見的SDRAM則通常採用unbuffered及3.3伏特電壓的規格,封裝則採用TSOP。 值得注意的是,SDRAM和SRAM完全不同,SDRAM仍舊屬於DRAM的架構,因此必須充電,充電則將產生時間延遲的問題。 SDRAM 【註】:廣義的SDRAM專指Synchronous DRAM,也就是包含PC XXX SDRAM及DDR SDRAM,但一般市面上所稱之SDRAM產品,通常是狹義的SDRAM,也就是PC XXX SDRAM。
動態隨機存取記憶體(Cont’d) 【記憶體模組設計】 常見的記憶體模組有:SIMM、DIMM、SO-DIMM、RIMM(Rambus Module)、C-RIMM(Continuity RIMM)、SO-RIMM、DDR DIMM、等等。並且可分為SIMM、DIMM、RIMM三大類。 SIMM (single in-line memory module;單面針腳記憶體模組): SIMM的封裝方式有兩種,30pin與72pin,30pin通常是在486以前的電腦使用,早期的FPM RAM、EDO RAM都是採用30 pin SIMM記憶體模組,SIMM對外傳輸單位則是8位元,由於使用在32位元的系統,因此資料傳輸也以32位元為單位。插入30pin記憶體模組時,必須4支一組插入(32位元=4*8位元)。而72pin對外傳輸單位則是32位元,而Pentium系統為64位元,所以需要以2隻一組方式插入(64位元=2*32位元)。 30 pin SIMM上面的記憶體晶片為單面晶片結構,而72 pin SIMM則是單面或雙面晶片的產品都曾出現過,一般來說,每一隻SIMM DRAM上面可能會有8個或9個(或其倍數)記憶體晶片,而9個中的其中一個晶片的功用則是偵錯。 DIMM (dual in-line memory module;雙面針腳記憶體模組): DIMM與主機板的接觸點有168 pin,對外傳輸單位則是64位元,因此在64位元的Pentium系統中,只需要一支就可以獨立運作。最常見到的應用就是SDRAM。除了168 pin的DIMM之外,後來又發展出184 pin的DDR DIMM,目前應用於DDR SDRAM,是目前個人電腦的主流。 RIMM(Rambus in-line memory module;Rambus專用記憶體模組): 這是針對Rambus DRAM而特殊設計的規格,又稱為Rambus module,與主機板的接觸點也是184 pin。
動態隨機存取記憶體(Cont’d) DRDRAM (Direct Rambus DRAM) DRDRAM是Intel與RAMBus公司合作開發的一種記憶體規格,使用的記憶體模組為RIMM,封裝方式使用的是μBGA。與主機板的接觸點為184 pin,工作頻率可達800MHz。 Direct Rambus與傳統DRAM的結構及介面皆不相同。早期記憶體的資料傳輸寬度大多為64位元,而Direct Rambus卻只有16位元(最新技術為32位元)。 或許讀者覺得奇怪,如此不是降低了資料傳輸的速度嗎?答案當然是否定的,因為Direct Rambus去除了傳統SDRAM所存在的時間延遲問題,因此使得整體速度更為驚人。 它以800MHz的速度透過狹窄的16位元匯流排來傳輸資料(此匯流排稱為Direct Rambus Channel),並在時鐘週期波峰及波谷都可執行作業(稱為double clocked),使得每個RDRAM模組上的記憶體能夠提供每秒1.6GB的高速頻寬。
動態隨機存取記憶體(Cont’d) 雖然DRDRAM的速度非常快,但仍可能被淘汰,原因大致有下列幾點: (1)工作時脈過高, 因此通常必須搭配 散熱片。 (2)DRDRAM的技術 門檻較高,因此在 記憶體顆粒的良率上 ,表現並不理想。 (3)DRDRAM採用不 同的製程,因此必須 使用新的設備製作。 (4)最重要的一點, DRDRAM並非開放 的標準,每一家製造 DRDRAM的廠商都 必須支付RAMBus公司 2%權利金。 DRDRAM 與主機板
動態隨機存取記憶體(Cont’d) DDR SDRAM (Double Data Rate SDRAM) DDR SDRAM(又稱DDR RAM)是目前最新的SDRAM。 它和DRDRAM有很多方面類似,例如它的主機板接觸點也是184 pin,也能夠在時鐘周期的波峰及波谷傳送資料。 但不同的是,DDR是開放標準,並且延續SDRAM的設計,採用TSOP封裝,因此相對於DRDRAM,DDR SDRAM更容易獲得製造商的喜愛。 DDR SDRAM是目前個人電腦主記憶體的主流,其規格發展非常快,到目前為止出現的DDR SDRAM順序分別是DDR-200(又稱PC1600)、DDR-266(又稱PC2100)、DDR-333(又稱PC2700)、DDR-400(又稱PC3200)、DDR-533(又稱PC4300)、DDR-667(又稱PC5400)及DDR-800(又稱PC6400)。 DDR之所以稱為Double Data Rate,原因是因為,它可以達到雙倍資料傳輸速率的緣故 舉例來說,DDR-266與PC133都是在同樣的133MHz頻率下工作,但DDR-266的傳輸速率是266MHz,為PC133的兩倍,這是因為它在一個時鐘週期中,可以傳送兩次資料(分別在波峰及波谷)。
動態隨機存取記憶體(Cont’d) 184 Pin的DDR RAM 與主機板
動態隨機存取記憶體(Cont’d) 各類DRAM比較表-1 DRAM 應用場合 存取速度 模組 接腳 特色 FPM DRAM 主記憶體 低價位顯示記憶體 慢 SIMM 30 Pin 在EDO DRAM出現之前,大多數DRAM, 都是FPM DRAM。 EDO DRAM 比FPM DRAM快約5-20% 72 Pin 取代了FPM DRAM 下一次讀取動作可在這一次資料傳送尚未完成時就開始 PC xxx SDRAM 66/100/133/150 MHz DIMM 168 Pin 取代了EDO RAM 早期Pentium主機板支援的主流記憶體 DRDRAM 資料寬度16位元,可達 800 MHz RIMM 184 Pin 必須由Intel及Rambus授權 DDR SDRAM 目前最快的DDR 800之內頻為800 MHz、外頻為400MHz DDR DIMM 取代了SDRAM 波峰與波谷都可以傳送資料,所以是SDRAM的兩倍。 是目前的主流並仍在發展中。 各類DRAM比較表-1
靜態隨機存取記憶體(SRAM) SRAM(Static Random Access Memory),中文稱為靜態隨機存取記憶體。名稱中的『靜態』是它與動態隨機存取記憶體(Dynamic RAM)最大的不同。 首先,我們必須了解DRAM維持資料的方式,事實上,DRAM儲存每一個位元都必須使用1個電晶體和1個電容,電晶體由於是半導體,因此可以透過電壓/電流的改變表現位元的0與1,而電容則是維持電壓的來源,但由於電容會慢慢放電,因此必須充電 DRAM之所以稱之為『動態』,是因為DRAM在實際上運作時,一直在重複著充電、放電的過程。(這也就是之前所提到產生時間延遲的原因)。 即使電源未曾中斷,DRAM若不經過充電過程,其中的資料仍將消失。 SRAM使用6個電晶體來儲存1個位元,而且不需要反覆充電(所以速度較快),因此稱之為『靜態』,代表的就是,只要電源不中斷,SRAM的資料就不會消失。 由於SRAM使用的電晶體較多,因此價格較貴,而且無法製作成大容量的記憶體,因此不符合主記憶體的需求 SRAM非常適合充當快取記憶體,因為快取記憶體需要更快的傳輸速度,但容量卻不用很大。
靜態隨機存取記憶體(Cont’d) Pentium主機板上面的外部快取記憶體(L2 Cache)、Pentium II/III的L2 Cache on die通常採用SRAM。 此外,快取記憶體的觀念也被應用於硬碟中,所以有些附有快取記憶體的硬碟也使用SRAM做為磁碟快取(disk cache)。 Maxtox硬碟上面使用 Samsung出廠的SRAM(disk cache) Pentium III 450的SRAM(L2 Cache on die)
唯讀記憶體 功能 為只能讀取不能寫入的記憶體,關閉電源後內容不會消失,可永久保存資料(此特性稱為非揮發性[nonvolatile],如果關閉電源後內容不會消失,可永久保存資料的特性則稱為揮發性[volatile]) 因為電腦系統打開電源後要經過自我測試和開機程序後,才會載入作業系統開始工作,而個人電腦的開機程序即儲存於ROM中,由ROM中的程式負責啟動電腦的開機作業程序。
唯讀記憶體(ROM)(Cont’d) 【BIOS與CMOS】: BIOS是Basic Input/Output System的縮寫,也就是基本輸入輸出系統。BIOS其實是一套程式,儲存在主機板上的ROM裡面,這套程式包含了電腦系統最重要的基本輸入輸出程序、系統開機時的檢查程序等等。當透過它來開機時,它會對系統各項硬體進行測試和初始化,以保證系統能夠正常運作。早期的BIOS功能非常簡單,但現今的BIOS還必須支援隨插即用功能以及負責電源管理。 CMOS是Complementary Metal Oxide Semi-conductor的縮寫,中文可譯為互補金屬氧化物半導體。它其實就是一種半導體(為PMOS與NMOS的組合,故稱之為互補),但目前大多是指由CMOS半導體製作而成的IC。對於個人電腦而言,CMOS指的是主板上一塊可讀寫的晶片,它存放著許多系統的參數,例如系統時脈、系統時間、硬碟型態、軟碟規格等等。開機時,由於需要讀取CMOS資訊,以便設定各個元件的初始狀態,因此它的資料也不可以消失,但事實上使用CMOS製作而成的IC並不能保持資料,因此在系統電源消失時,仍需使用電池來保持電力。 BIOS與CMOS都跟電腦系統的初始化設定有關,因此,一般使用者很難分清楚兩者的差別,事實上,CMOS存放的是系統參數,而BIOS儲存的則是開機的程式,這些程式包含了設定系統參數的功能。或者,我們可以這樣說,透過BIOS的設定程式,可以對於CMOS儲存的參數進行讀取與修改。請勿對兩者產生混淆。
唯讀記憶體(ROM)(Cont’d) 【韌體】 硬體是電腦的實際元件,軟體是某些資料的排列方式。電腦的運作是在固定不變的硬體之中執行各式各樣的軟體(例如程式),因此,可以完成各種的工作。這好比電視是硬體,而電視節目則是軟體,我們可以在電視中觀看各式各樣的節目,這是因為每次資料線(如Cable線)傳來的資料都不同。然而如果我們將軟體程式寫死在某一個硬體內,使得該硬體不再能夠接受其他具有變化的資料,則我們將之稱為韌體(Firmware),例如BIOS就是一種韌體,因為它雖然是一套軟體程式,但卻被寫死在ROM之內不再更動(或極少更動)。 BIOS設定畫面
唯讀記憶體(ROM)(Cont’d) 分類 PROM(Programmable ROM): 是可程式規劃的ROM,資料或程式可依使用者(廠商)的需求來燒錄,程式或資料一經燒錄便無法更改 EPR(Erasable PROM): 可抹拭可程式規劃的ROM,舊有的資料或程式可利用紫外線照射來加以消除 EEPROM(Electrically Erase PROM): 是電子式可抹拭可程式規劃的ROM,資料利用較高電流與電壓抹去後重寫 Flash Memory或Flash ROM: 稱為快閃記憶體,資料可重複讀寫,電源消失資料仍留存。除了應用於個人電腦的基本輸入輸出系統(Basic Input/Output System, BIOS)外,也應用在數位錄音棒、MP3隨身聽、數位相機
虛擬記憶體 功能和架構 是利用驅動程式將輔助記憶體(硬碟)模擬成主記憶體來用的技術,以加快電腦的執行效能。 應用程式要執行時,可以把全部的程式放入記憶體或者只放入部份的程式,不在記憶體中的程式,當要使用時,可以用切換(swapping)技術來載入其它的部份程式,但這樣速度較慢。但假如我們用虛擬記憶體技術,則可以延伸記憶體的容量,此比切換(swapping)技術的速度還快
虛擬記憶體(Cont’d) DRAM一般只有128MB、256MB、512MB或更多,但硬碟現在則有20GB、40GB、80GB或更多。所以硬碟切割一部份當記憶體來用可以提升電腦的效能。虛擬記憶體的架構如上圖。
虛擬記憶體(Cont’d) 範例 虛擬記憶體的技術已應用在很多作業系統,例如在Windows XP作業系統中,可執行【控制台/系統/進階】功能於「效能」框中按「設定」按鈕,再選「進階」頁籤,你將會看到虛擬記憶體的配置設定,如圖;如果按【變更】鈕可以進行虛擬記憶體細部設定,如圖 。
虛擬記憶體(Cont’d) 技術 虛擬記憶體的技術分為分頁法和分段法 Windows作業系統以採用分頁法。分頁法是指把一個檔案切割成許多固定大小的頁(例如Windows系統一般1頁的容量為4KB) 在分頁法中,把記憶體的內容移到硬碟的動作稱為「page-out」,相反地,把硬碟的內容移到記憶體的動作稱為「page-in」
虛擬記憶體(Cont’d) 如果你的電腦系統是執行Windows作業系統,則分頁法的架構如上圖 CPU 硬碟 第1頁 第3頁 第2頁 第4頁 (2).page-in 第1,3頁 (4).page-out 第3頁 (1).需要第1,3頁 (3).現在需要第4頁 (5). page-in 第4頁 (6).執行第4頁 如果你的電腦系統是執行Windows作業系統,則分頁法的架構如上圖
暫存器(Register) > 快取記憶體(Cache Memory) > 靜態隨機存取記憶體(SRAM) > 動態隨機存取記憶體(DRAM) > 唯讀記憶體(ROM) > 硬碟(Hard Disk) > 光碟(CD) >軟碟(Floppy Disk) > (磁帶)Tape