存儲器是計算機(jī)系統(tǒng)中的記憶設(shè)備,,用來存放程序和數(shù)據(jù)?,F(xiàn)代計算機(jī)系統(tǒng)都是以存儲器為中心,計算機(jī)若要開始工作,,必須先把有關(guān)程序和數(shù)據(jù)裝到存儲器中,,程序才能開始運(yùn)行。 在程序執(zhí)行過程中,CPU所需的指令要從存儲器中取出,,運(yùn)算器所需的原始數(shù)據(jù)要從存儲器中取出,,運(yùn)算結(jié)果必須在程序執(zhí)行完畢之前全部寫到存儲器中,各種輸入輸出設(shè)備也直接與存儲器交換數(shù)據(jù),。因此,,在計算機(jī)運(yùn)行過程中,存儲器是各種信息存儲和交換的中心,。 存儲器就是用來存放數(shù)據(jù)的地方,。它是利用電平的高低來存放數(shù)據(jù)的,也就是說,,它存放的實際上是電平的高,、低,而不是我們所習(xí)慣認(rèn)為的1234這樣的數(shù)字,,這樣,,我們的一個謎團(tuán)就解開了,計算機(jī)也沒什么神秘的嗎,。 單片機(jī)里面都有這樣的存儲器,,這是一個存儲器的示意圖:一個存儲器就象一個個的小抽屜,一個小抽屜里有八個小格子,,每個小格子就是用來存放“電荷”的,,電荷通過與它相連的電線傳進(jìn)來或釋放掉,至于電荷在小格子里是怎樣存的,,就不用我們操心了,,你能把電線想象成水管,小格子里的電荷就象是水,,那就好理解了,。存儲器中的每個小抽屜就是一個放數(shù)據(jù)的地方,我們稱之為一個“單元”,。 有了這么一個構(gòu)造,,我們就能開始存放數(shù)據(jù)了,想要放進(jìn)一個數(shù)據(jù)12,,也就是00001100,,我們只要把第二號和第三號小格子里存滿電荷,而其它小格子里的電荷給放掉就行了,。 可是問題出來了,,一個存儲器有好多單元,線是并聯(lián)的,,在放入電荷的時候,,會將電荷放入所有的單元中,而釋放電荷的時候,會把每個單元中的電荷都放掉,,這樣的話,,不管存儲器有多少個單元,都只能放同一個數(shù),,這當(dāng)然不是我們所希望的 因此,,要在結(jié)構(gòu)上稍作變化,在每個單元上有個控制線,,我想要把數(shù)據(jù)放進(jìn)哪個單元,,就給一個信號這個單元的控制線,這個控制線就把開關(guān)打開,,這樣電荷就能自由流動了,,而其它單元控制線上沒有信號,所以開關(guān)不打開,,不會受到影響,,這樣,只要控制不一樣單元的控制線,,就能向各單元寫入不一樣的數(shù)據(jù)了,,同樣,如果要某個單元中取數(shù)據(jù),,也只要打開對應(yīng)的控制開關(guān)就行了,。 構(gòu)成存儲器的存儲介質(zhì),目前主要采用半導(dǎo)體器件和磁性材料,。存儲器中最小的存儲單位可以是一個雙穩(wěn)態(tài)半導(dǎo)體電路或一個CMOS晶體管或磁性材料的存儲元,,它可存儲一個二進(jìn)制代碼,。這個二進(jìn)制代碼位是存儲器中最小的存儲單位,,稱為一個存儲位或存儲元,若干個存儲位可以組成一個存儲單元,,許多存儲單元可以組成一個存儲器,,這些存儲單元的集合也稱為存儲體。 根據(jù)存儲材料的性能及使用方法的不同,,存儲器可以有各種不同的分類方法,。 按存儲介質(zhì)分類 半導(dǎo)體存儲器用半導(dǎo)體器件組成的存儲器,。 特點:集成度高,、容量大、體積小,、存取速度快,、功耗低、價格便宜、維護(hù)簡單,。 主要分兩大類:雙極型存儲器:TTL型和ECL型.金屬氧化物半導(dǎo)體存儲器(簡稱MOS存儲器):靜態(tài)MOS存儲器和動態(tài)MOS存儲器,。 磁表面存儲器用磁性材料做成的存儲器稱為磁表面存儲器,,它包括磁盤存儲器,、 磁帶存儲器等。 特點:體積大,、生產(chǎn)自動化程度低,、存取速度慢,但存儲容量比半導(dǎo)體存儲器大得多且不易丟失,。 信息以刻痕的形式保存在盤面上,用激光束照射盤面,,靠盤面的不同反射率來讀出信息,。可分為只讀型光盤(CD-ROM),、只寫一次型光盤(WORM)和磁光盤(MOD)三種,。 按存取方式分類 如果存儲器中任何存儲單元的內(nèi)容都能被隨機(jī)存取,,且存取時間與存儲單元的物理位置無關(guān),,則這種存儲器稱為隨機(jī)存儲器(RAM)。 RAM主要用來存放各種輸入/輸出的程序,、數(shù)據(jù),、中間運(yùn)算結(jié)果以及存放與外界交換的信息和做堆棧用。隨機(jī)存儲器主要充當(dāng)高速緩沖存儲器和主存儲器,。 如果存儲器只能按某種順序來存取,也就是說,,存取時間與存儲單元的物理位置有關(guān),,則這種存儲器稱為串行訪問存儲器。 串行存儲器又可分為順序存取存儲器(SAM)和直接存取存儲器(DAM),。順序存取存儲器是完全的串行訪問存儲器,,如磁帶,信息以順序的方式從存儲介質(zhì)的始端開始寫入(或讀出),;直接存取存儲器是部分串行訪問存儲器,,如磁盤存儲器,它介于順序存取和隨機(jī)存取之間,。 只讀存儲器是一種對其內(nèi)容只能讀不能寫入的存儲器,,即預(yù)先一次寫入的存儲器。通常用來存放固定不變的信息,。如經(jīng)常用作微程序控制存儲器,。 目前已有可重寫的只讀存儲器。常見的有掩模ROM(MROM),,可擦除可編程ROM(EPROM),,電可擦除可編程ROM(EEPROM)。ROM的電路比RAM的簡單,、集成度高,,成本低,且是一種非易失性存儲器,,計算機(jī)常把一些管理,、監(jiān)控程序、成熟的用戶程序放在ROM中,。 按信息的可保存性分類 非永久記憶的存儲器:斷電后信息就消失的存儲器,,如半導(dǎo)體讀/寫存儲器RAM。 永久性記憶的存儲器:斷電后仍能保存信息的存儲器,,如磁性材料做成的存儲器以及半導(dǎo)體ROM,。 按在計算機(jī)系統(tǒng)中的作用分 根據(jù)存儲器在計算機(jī)系統(tǒng)中所起的作用,可分為主存儲器,、輔助存儲器,、高速緩沖存儲器、控制存儲器等,。為了解決對存儲器要求容量大,,速度快,成本低三者之間的矛盾,,目前通常采用多級存儲器體系結(jié)構(gòu),,即使用高速緩沖存儲器、主存儲器和外存儲器,。 一個存儲器的性能通常用速度,、容量,、價格三個主要指標(biāo)來衡量,。計算機(jī)對存儲器的要求是容量大、速度快,、成本低,,需要盡可能地同時兼顧這三方面的要求。但是一般來講,,存儲器速度越快,,價格也越高,,因而也越難滿足大容量的要求。目前通常采用多級存儲器體系結(jié)構(gòu),,使用高速緩沖存儲器,、主存儲器和外存儲器,如圖所示,。 CPU能直接訪問的存儲器稱為內(nèi)存儲器(簡稱內(nèi)存),,包括高速緩沖存儲器和主存儲器。CPU不能直接訪問的存儲器稱為外存儲器(簡稱外存,,也叫輔助存儲器),,外存的信息必須調(diào)入內(nèi)存才能被CPU使用。 高速緩沖存儲器(Cache)是計算機(jī)系統(tǒng)中的一個高速,、小容量的半導(dǎo)體存儲器,,它位于高速的CPU和低速的主存之間,用于匹配兩者的速度,,達(dá)到高速存取指令和數(shù)據(jù)的目的,。和主存相比,Cache的存取速度快,,但存儲容量小,。 主存儲器,簡稱主存,,是計算機(jī)系統(tǒng)的主要存儲器,,用來存放計算機(jī)正在執(zhí)行的大量程序和數(shù)據(jù),主要由MOS半導(dǎo)體存儲器組成,。 外存儲器,,簡稱外存,是計算機(jī)系統(tǒng)的大容量輔助存儲器,,用于存放系統(tǒng)中的程序,、數(shù)據(jù)文件及數(shù)據(jù)庫。與主存相比,,外存的特點是存儲容量大,,位成本低,但訪問速度慢,。目前,,外存儲器主要有磁盤存儲器、磁帶存儲器和光盤存儲器,。 由Cache和主存儲器構(gòu)成的Cache-主存系統(tǒng),,其主要目標(biāo)是利用與CPU速度接近的Cache來高速存取指令和數(shù)據(jù)以提高存儲器的整體速度,從CPU角度看,,這個層次的速度接近Cache,,而容量和每一位的價格則接近主存,;由主存和外存構(gòu)成的虛擬存儲器系統(tǒng),其主要目的是增加存儲器的容量,,從整體上看,,其速度接近于主存的速度,其容量則接近于外存的容量,。 計算機(jī)存儲系統(tǒng)的這種多層次結(jié)構(gòu),,很好地解決了容量、速度,、成本三者之間的矛盾,。這些不同速度、不同容量,、不同價格的存儲器,,用硬件、軟件或軟硬件結(jié)合的方式連接起來,,形成一個系統(tǒng),。這個存儲系統(tǒng)對應(yīng)用程序員而言是透明的,在應(yīng)用程序員看來它是一個存儲器,,其速度接近于最快的那個存儲器,,存儲容量接近于容量最大的那個存儲器,單位價格則接近最便宜的那個存儲器,。 半導(dǎo)體存儲器芯片按照讀寫功能可分為隨機(jī)讀寫存儲器(Random Access Memory,,RAM)和只讀存儲器(Read Only Memory,ROM)兩大類,。RAM可讀可寫,,斷電時信息會丟失;ROM中的內(nèi)容只能讀出,,不能寫入,,信息可永久保存,不會因為斷電而丟失,。 隨機(jī)讀寫存儲器 目前廣泛使用的半導(dǎo)體隨機(jī)讀寫存儲器是MOS半導(dǎo)體存儲器,,按保存數(shù)據(jù)的機(jī)理分為靜態(tài)存儲器(Static RAM,SRAM)和動態(tài)存儲器(Dynamic RAM,,DRAM),。 利用雙穩(wěn)態(tài)觸發(fā)器來保存信息,,只要不斷電信息就不會丟失,。靜態(tài)存儲器的集成度低,,成本高,,功耗較大,,通常作為Cache的存儲體。 利用MOS電容存儲電荷來保存信息,,使用時需要不斷給電容充電才能保持信息。動態(tài)存儲器電路簡單,,集成度高,,成本低,功耗小,,但需要反復(fù)進(jìn)行刷新(Refresh)操作,,工作速度較慢,適合作為主存儲器的主體部分,。 刷新操作:為防止存儲的信息電荷泄漏而丟失信息,,由外界按一定規(guī)律不斷地給柵極進(jìn)行充電,補(bǔ)足柵極的信息電荷,。 DRAM工作時必須要有刷新控制電路,,操作比較復(fù)雜。由于要不間斷地進(jìn)行刷新,,故稱這種存儲器為動態(tài)存儲器,。動態(tài)MOS存儲器主要采用“讀出”的方式進(jìn)行刷新,依次讀出存儲器的每一行,,就可完成對整個DRAM的刷新,。 DRAM存儲器的刷新需要有硬件線路的支持,這些控制線路可以集成在一個半導(dǎo)體芯片上,,形成DRAM控制器,。借助于DRAM控制器,可以把DRAM當(dāng)作SRAM一樣使用,,從而為系統(tǒng)設(shè)計帶來很大的方便,。 EDRAM芯片是在DRAM芯片上集成一個高速小容量的SRAM芯片而構(gòu)成的,,這個小容量的SRAM芯片起到高速緩存的作用,,從而使DRAM芯片的性能得到顯著改進(jìn)。 當(dāng)CPU從主存DRAM中讀取數(shù)據(jù)時,,會將包含此數(shù)據(jù)的整個數(shù)據(jù)塊都寫入高速緩存SRAM內(nèi),,下次讀取連續(xù)地址數(shù)據(jù)時,CPU就可以從這個SRAM中直接取用,,而不必到較慢的DRAM中讀取,,如此即可加快CPU的存取速度。 將由若干EDRAM芯片組成的存儲模塊做成小電路插件板形式,,就是目前普遍使用的內(nèi)存條,。 只讀存儲器 只讀存儲器ROM是一種存儲固定信息的存儲器,,其特點是在正常工作狀態(tài)下只能讀取數(shù)據(jù),不能即時修改或重新寫入數(shù)據(jù),。 只讀存儲器電路結(jié)構(gòu)簡單,,且存放的數(shù)據(jù)在斷電后不會丟失,特別適合于存儲永久性的,、不變的程序代碼或數(shù)據(jù)(如常數(shù)表,、函數(shù)、表格和字符等),,計算機(jī)中的自檢程序就是固化在ROM中的,。 ROM的最大優(yōu)點是具有不易失性。 只讀存儲器有不可重寫只讀存儲器(MROM,、PROM)和可重寫只讀存儲器(EPROM,、EEPROM、閃速存儲器等)兩大類,。 不可重寫只讀存儲器 掩模只讀存儲器,又稱固定ROM,。這種ROM在制造時,,生產(chǎn)廠家利用掩模(Mask)技術(shù)把信息寫入存儲器中,使用時用戶無法更改,,適宜大批量生產(chǎn),。 掩模只讀存儲器可分為二極管ROM、雙極型三極管ROM和MOS管ROM三種類型,。 可編程只讀存儲器(Programmable ROM,簡稱PROM),,是可由用戶一次性寫入信息的只讀存儲器,,是在MROM的基礎(chǔ)上發(fā)展而來的。 PROM的缺點是用戶只能寫入一次數(shù)據(jù),,一經(jīng)寫入就不能再更改,。 可重寫只讀存儲器 這類ROM由用戶寫入數(shù)據(jù)(程序),當(dāng)需要變動時還可以進(jìn)行修改,,使用起來比較方便,。可重寫ROM有紫外線擦除EPROM,、電擦除EEPROM和閃速存儲器Flash ROM三種類型,。 EPROM 的特點是其中的內(nèi)容可以用特殊的裝置進(jìn)行擦除和重寫。EPROM出廠時,,其存儲內(nèi)容為全“1”,,用戶可根據(jù)需要改寫為“0”,當(dāng)需要更新存儲內(nèi)容時,,可將原存儲內(nèi)容擦除(恢復(fù)為全“1”),,以便寫入新的內(nèi)容,。 EPROM一般是將芯片置于紫外線下照射15~20分鐘左右,,以擦除其中的內(nèi)容,然后用專用的設(shè)備(EPROM寫入器)將信息重新寫入,,一旦寫入則相對固定,。 在閃速存儲器大量應(yīng)用之前,EPROM常用于軟件開發(fā)過程中,。 用紫外線擦除EPROM的操作復(fù)雜,速度很慢,。EEPROM可以用電氣方法將芯片中的存儲內(nèi)容擦除,,擦除時間較快,甚至可以在聯(lián)機(jī)狀態(tài)下操作,。 EEPROM既可使用字擦除方式又可使用塊擦除方式,,使用字擦除方式可擦除一個存儲單元,使用塊擦除方式可擦除數(shù)據(jù)塊中所有存儲單元,。 閃速存儲器Flash ROM是20世紀(jì)80年代中期出現(xiàn)的一種塊擦寫型存儲器,是一種高密度,、非易失性的讀/寫半導(dǎo)體存儲器,,它突破了傳統(tǒng)的存儲器體系,改善了現(xiàn)有存儲器的特性,。 Flash ROM中的內(nèi)容或數(shù)據(jù)不像RAM一樣需要電源支持才能保存,,但又像RAM一樣具有可重寫性。在某種低電壓下,,其內(nèi)部信息可讀不可寫,,類似于ROM,而在較高的電壓下,,其內(nèi)部信息可以更改和刪除,,類似于RAM。 Flash ROM 可以用軟件在PC機(jī)中改寫或在線寫入,,信息一旦寫入即相對固定,。因此,在PC 機(jī)中可用于存儲主板的BIOS程序。由于能進(jìn)行改寫,,便于用戶自行升級BIOS,,但這也給病毒以可乘之機(jī),著名的CIH病毒正是利用這個特點來破壞BIOS,,從而導(dǎo)致整個系統(tǒng)癱瘓的,。 另外,由于單片存儲容量大,,易于修改,,F(xiàn)lash ROM也常用于數(shù)碼相機(jī)和U盤中,因其具有低功耗,、高密度等特點,,且沒有機(jī)電移動裝置,特別適合于便攜式設(shè)備,。 隨著電子世界的發(fā)展,,出現(xiàn)了FLASH存儲器,F(xiàn)LASH存儲器又稱閃存,,它結(jié)合了ROM和RAM的長處,,不僅具備電子可擦除可編程(EEPROM)的性能,還不會斷電丟失數(shù)據(jù)同時可以快速讀取數(shù)據(jù) (NVRAM的優(yōu)勢),,U盤和MP3里用的就是這種存儲器,。 在過去的20年里,嵌入式系統(tǒng)一直使用ROM(EPROM)作為它們的存儲設(shè)備,,然而近年來 Flash全面代替了ROM(EPROM)在嵌入式系統(tǒng)中的地位,,用作存儲Bootloader以及操作系統(tǒng)或者程序代碼或者直接當(dāng)硬盤使用(U盤)。 目前Flash主要有兩種NOR Flash和NADN Flash NOR Flash的讀取和我們常見的SDRAM的讀取是一樣,,用戶可以直接運(yùn)行裝載在NOR FLASH里面的代碼,,這樣可以減少SRAM的容量從而節(jié)約了成本。 NAND Flash沒有采取內(nèi)存的隨機(jī)讀取技術(shù),,它的讀取是以一次讀取一塊的形式來進(jìn)行的,,通常是一次讀取512個字節(jié),采用這種技術(shù)的Flash比較廉價,。用戶不能直接運(yùn)行NAND Flash上的代碼,,因此好多使用NAND Flash的開發(fā)板除了使用NAND Flah以外,還作上了一塊小的NOR Flash來運(yùn)行啟動代碼,。 一般小容量的用NOR Flash,,因為其讀取速度快,多用來存儲操作系統(tǒng)等重要信息,,而大容量的用NAND FLASH,,最常見的NAND FLASH應(yīng) 用是嵌入式系統(tǒng)采用的DOC(Disk On Chip)和我們通常用的"閃盤",,可以在線擦除。 NOR和NAND是現(xiàn)在市場上兩種主要的非易失閃存技術(shù),。Intel于1988年首先開發(fā)出NOR flash技術(shù),,徹底改變了原先由EPROM和EEPROM一統(tǒng)天下的局面。緊接著,,1989年,,東芝公司發(fā)表了NAND flash結(jié)構(gòu),強(qiáng)調(diào)降低每比特的成本,,更高的性能,,并且象磁盤一樣可以通過接口輕松升級。 “flash存儲器”經(jīng)??梢耘c“NOR存儲器”互換使用,。大多數(shù)情況下閃存只是用來存儲少量的代碼,,這時NOR閃存更適合一些,。而NAND則是高數(shù)據(jù)存儲密度的理想解決方案。 NOR是現(xiàn)在市場上主要的非易失閃存技術(shù),。NOR主要應(yīng)用在代碼存儲介質(zhì)中,。NOR的特點是應(yīng)用簡單、無需專門的 接口電路,、傳輸效率高,,它是屬于芯片內(nèi)執(zhí)行(XIP, eXecute In Place),這樣應(yīng)用程序可以直接在(NOR型)flash閃存內(nèi)運(yùn)行,,不必再把代碼讀到系統(tǒng)RAM中,。 當(dāng)代計算機(jī)系統(tǒng)的主存主要由半導(dǎo)體存儲器組成,由于工藝和成本的原因,,主存的容量受到限制,。然而,計算機(jī)系統(tǒng)軟件和應(yīng)用軟件的功能不斷增強(qiáng),,程序規(guī)模迅速擴(kuò)大,,要求主存的容量越大越好,這就產(chǎn)生了矛盾,。 為了給大的程序提供方便,,使它們擺脫主存容量的限制,可以由操作系統(tǒng)把主存和輔存這兩級存儲系統(tǒng)管理起來,,實現(xiàn)自動覆蓋,。 也就是說,一個大作業(yè)在執(zhí)行時,,其一部分地址空間在主存,,另一部分在輔存,當(dāng)所訪問的信息不在主存時,則由操作系統(tǒng)而不是程序員來安排I/O指令,,把信息從輔存調(diào)入主存,。 從效果上來看,好像為用戶提供了一個存儲容量比實際主存大得多的存儲器,,用戶無需考慮所編程序在主存中是否放得下或放在什么位置等問題,。我們稱這種存儲器為虛擬存儲器。 虛擬存儲器只是一個容量非常大的存儲器的邏輯模型,,不是任何實際的物理存儲器,。它借助于磁盤等輔助存儲器來擴(kuò)大主存容量,使之為更大或更多的程序所使用,。虛擬存儲器指的是主存-外存層次,,它以透明的方式為用戶提供了一個比實際主存空間大得多的程序地址空間。
|