Halbleiterspeicher
在現代計算機中,半導體存儲器已廣泛用於實現主存
分類
1.隨機存取存儲器(RAM)
由於大多數隨機存取存儲器在斷電後會丟失其中存儲的內容,所以這類隨機存取存儲器又被稱爲==易失性(flüchtig)存儲器==。由於隨機存取存儲器可讀可寫,所以有時它們又被稱爲==可讀寫存儲器==。
分爲三類:
1. static RAM(SRAM)
每一個存儲單位都由一個觸發器構成,可以存儲一個二進制位,只要不斷電就可以保證其中存儲的二進制數據不丟失。
使用觸發器作爲存儲單位的問題是,每個存儲單位至少需要6個MOS管來構造一個觸發器。–> SRAM存儲芯片的存儲密度較低。
大容量SRAM:四個MOS管加上CMOS技術
2. dynamic RAM(DRAM)
使用一個MOS管和一個電容來存儲一位二進制信息。用電容來存儲信息減少了構成一個存儲單位所需要的晶體管數目。==但由於電容本身不可避免的會產生漏電,因此DRAM需要頻繁的刷新。==
3. 非易失性RAM(non volatile RAM, NV RAM)
一般情況下,不論DRAM還是SRAM都是易失性的,斷電後存儲的信息會丟失。
但NV RAM結合了RAM和ROM的優點:允許CPU對其進行隨機讀寫,同時又像ROM一樣,斷電後內容不丟失。
2.只讀存儲器(ROM)
在系統斷電以後,只讀存儲器中的內容不會丟失。因此是非易失性存儲器。
分類:
1. 可編程ROM(programmable ROM, PROM)
是一種提供給用戶,把他們要寫入的信息==“燒”==入其中的ROM
是==一次可編程ROM(one time programmable ROM, OTPROM)==
對PROM寫入信息需要一個叫==ROM編程器==的特殊設備來實現
2. 用紫外光實現擦除的ROM(erasable programmable ROM, EPROM)
使已寫入PROM的信息能被修改 –> EPROM芯片可被編程、擦除幾千次(與PROM有本質的不同, PROM是一次可編程ROM)
一次擦除擦除的是整個芯片上的內容
擦除其中的內容大概需要20分鐘左右
所有的EPROM都有一個窗口用於接收照射它的紫外線,通過紫外線照射來擦除其內容,所以EPROM又被稱爲==紫外線可擦除可編程ROM(UV-EPROM)==
主要缺點:不能在系統電路板上對其直接編程
3. 用電實現擦除的PROM(electriaclly erasable programmable ROM, EEPROM)
優點:
用==電來擦除原有信息==,因此可以實現==瞬間擦除==,不像UV-EPROM需要20min
可以==有選擇的擦除某個具體字節單元的內容==,而不像UV-EPROM那樣,擦除的時整個芯片的內容
最主要: 使用者可以直接在電路板上對其進行擦除和編程,而不需要額外的擦除和編程設備。
4. 閃爍可編程可擦除的ROM(flash memory EPROM)
5. 掩膜ROM
RAM結構及工作原理
結構
–
一個==存儲單元電路==存儲一位二進制信息
把大量存儲單元電路==按一定的形式排列起來, 就構成存儲體==
存儲體一般都排列成陣列形式,所以又稱作==存儲陣列==。
把存儲體及其外圍電路(包括店址譯碼與驅動電路,讀寫放大電路,時序控制電路等)集成在一塊硅片上, 稱爲==存儲器組件==
存儲器組件經過各種形式的封裝後,通過引腳引出地址線、數據線、控制線、電源與地線等 –> 構成==半導體存儲器芯片==
內部組織一般有兩種結構:
1. 字片式(見 計算機組成原理 p145)
由於採用單譯碼方案,有多少個存儲單元就有多少個譯碼驅動電路,所需譯碼驅動電路較多。爲減少譯碼驅動電路的數量,多數存儲器芯片都採用雙譯碼方案(位片式結構)
2. 位片式((見 計算機組成原理 p146)
假設 4k * 1位, 共有4096個存儲單元電路, 排列成 64 * 64:
4096 = 2 ^ 12
--> 分爲6位行地址、6位列地址
對於一個給定的訪問某個存儲單元電路的地址,分別經過行、列地址譯碼器的譯碼後,==使一根行地址選擇線(RAS)和一根列地址選擇線(CAS)有效==。
行地址選擇選中的某一行的64個存儲單元電路可以==同時==進行讀寫操作
列地址選擇線用於控制這一行64個多路轉接開關的一個,即==表示選中一列==。每個多路轉接開關由兩個MOS管組成,分別控制兩條位線。選中的那一個多路轉接開關(即選中的那一列)的兩個MOS管呈現“開”狀態,使這一列的位線與R/W電路連通;其餘63個的多路轉接開關的兩個MOS管呈現“關”狀態,使其餘63列的位線與R/W電路斷開。
流程:
當選中該芯片工作時,
首先給定要訪問的存儲單元的地址,並給出有效的片選信號(CS, chip select)和讀寫信號(R/W)
通過對行、列地址的譯碼,找到有由行、列地址確定的唯一一個存儲單元電路,根據RW信號讀出或寫入一位二進制信息。
優點:
對於4096只需128個譯碼驅動電路(行64個, 列64個)。對於單譯碼字片式,4096需要4096個譯碼驅動電路。
DRAM的存取模式
分爲四類:
標準模式
頁模式(FPM)
靜態列模式
半字節模式
1. 標準模式(存取模式四種模式中最長)
訪問存儲器一位信息的步驟:
給出要訪問存儲單元的行地址並保持地址信號穩定
給出有效的RAS(行地址選擇)信號,將行地址鎖存到行地址譯碼器中
此後再給出該單元的列地址
地址信號穩定後,再給出有效的CAS(列地址選擇)信號,將列地址鎖存的地址譯碼器中(這樣可以通過行、列譯碼器的譯碼,找到對應的存儲單元)
再根據R/W的狀態,決定對該單元實施讀或寫操作。
–
訪問時間(Memory access time)
tAA:指 ==從在芯片的地址引腳上給出行地址開始, 到可以使用出現在芯片的數據輸出引腳上的數據爲止所需的時間==(siehe Folien 13 s31)
通常給出的是==tRAC==(而非標準的tAA),即 ==RAS訪問時間==,是指 ==從給出有效的RAS信號那一刻算起,到可以使用出現在芯片的數據輸出引腳上的數據(或指令)爲止所需的時間。==
如果以隨機方式訪問存儲芯片中的存儲單元,即連續兩次訪問的兩個存儲單元的兩個地址之間不存在任何聯繫的話,把tRAC視作tAA也未嘗不可。但是,若連續兩次讀寫同一塊DRAM芯片,是不能在tRAC規定的時間內完成讀寫的。==這是因爲在每個RAS失效之後(低電平變爲高電平),DRAM芯片需要一個precharge時間,以便爲下次訪問做準備。==
存取週期tRC:存儲器連續兩次讀寫操作之間的最小時間間隔
SRAM和ROM的存取週期和訪問事假總是相等的
DRAM卻不是,只是因爲當RAS信號變爲無效後(低電平變爲高電平),==它保持高電平的狀態持續時間至少要有tRP(pre charge time)規定的那麼長時間,以便預充內部電路,爲下次訪問做準備==。因此在DRAM中存取週期tRC與訪問時間的近似關係爲:
tRC = tRAC + tRP
==!!!存取週期不等於訪問時間是SRAM和DRAM的主要區別之一。==
消除DRAM的預充帶來的負面影響:
==將DRAM芯片交錯的連接起來,將兩個內存條安排在一起使用,讓CPU交替的訪問兩個內存條。==
好處:
當CPU在訪問一個內存條的時候,另一個內存條對其存儲單元執行預充操作,這樣預充時間就可以隱藏在訪問時間中(有點像Pipeline)
2. 頁模式(Fast page mode,FPM)
頁(page)指的是==行==
設計思想
在絕大多數情況下, CPU對存儲器訪問都是按照連續的單元地址進行訪問的,所以沒有必要像在標準模式中的那樣,每次都要給出行、列地址。
–
訪問步驟
給出行地址,隨後有效的RAS信號將行地址鎖存到行地址譯碼器。自此,如果下面要訪問的存儲單元電路全部在同一行中,則鎖存的地址就不再變化,在此期間不斷地向存儲器送出不同的列地址。
每當向送出新的列地址,CAS信號變爲有效(高電平變爲低電平),將列地址鎖存到列地址譯碼器,之後CAS又變爲無效。
這個過程直到給出的地址是該頁中的最後一個列地址爲止。
接下來給出新頁(行)地址,重複步驟1到3.
分析(siehe Folien13 s30 und s34)
當訪問一頁中==第一個存儲單元電路==時,既需要給出行地址,又需要給出列地址,所以訪問這個存儲單元電路所花時間爲==標準訪問時間tRAC==
從第二個存儲單元電路開始,到同一頁的最後一個存儲單元電路,訪問其中一個存儲單元電路時間要比訪問第一個短得多,這個時間通常稱爲==tCAC(列訪問時間,指從CAS信號開始下降到數據可用的最短時間)==
當訪問的存儲單元電路處於給定頁時,對其中每個連續存儲單元電路訪問的時間==不能小於tPC(頁週期時間(page mode cycle), 指從一個Spaltenzugriff到下一個的最短時間)==
注意: 對於FPM-DRAM, 它不==僅支持頁模式, 也支持標準模式==。
在FPM-DRAM中,tRCD(RAS-CAS-Delay) 和 tRP(RAS-Precharge-Zeit) 沒有了,從而節省了時間,提高了速度。
3. EDO DRAM(extended Data output DRAM)
FPM DRAM的侷限性:
訪問同一行下一列的數據所需時間不能少於tPC,即訪問已打開頁的連續時間所需時間不能少於tPC,而tPC的大小取決於CAS信號在變高之前要保持低電平的時間長度。
既然tPC的大小取決於CAS信號在變高之前要保持低電平的時間長度,那麼縮短CAS保持低電平的時間不久可以從而減少tPC,提高DRAM的訪問時間?
但是並不可行。==因爲CAS變高之後,DRAM會停止輸出數據,所以CAS必須保持一段時間的低電平,以確保數據能正確送到數據總線上==。
一個可行的方法:
改變快速頁模式DRAM的內部電路,使數據在CAS變高後保持更長時間,從而縮短CAS保持低電平的時間按,而不會影響數據的輸出操作。
die Daten stehen länger am Ausgang zur Verfügung –> Die gelesenen Daten bleiben **==bis zum nächsten Aktivieren des CAS-
Signal gültig==**.Der Prozessor kann Daten auslesen, während die Speichersteuerung eine ==neue Spaltenadresse== an das DRAM übergibt.
Durch dieses „Pipelining“ verkürzt sich die Wartezeit zwischen zwei aufeinander folgenden CAS-Impulsen –> höherer Datendurchsatz
個人理解:
原來FPM DRAM中,當CAS從低電平變爲高電平的時候,數據就會失效。所以爲了保證CPU能讀到數據,CAS必須保持一段時間的低電平,然後才能升高。
但是改變FPM DRAM的電路,變成EDO DRAM之後,數據保持更長時間,即:在CAS由低電平轉高電平的時候,數據依然在數據總線上有效,可以讓CPU讀。相當於CAS和數據解耦,互相沒有影響(流水線),在CPU讀數據的時候新的列地址被傳進來;當CAS從高電平轉低電平的時候,上一個數據失效。
因爲數據和CAS解耦,所以CAS不需要保持像FPM DRAM那麼長時間的低電平,來保證CPU能讀到數據(在EDO DRAM中CPU讀數據的時候CAS可以由低轉高),從而達到了縮短CAS的目的 –> 達到了縮短tPC的目的,提高了DRAM的速度。
4. SDRAM(synchron DRAM)
在所有傳統DRAM中(FPM DRAM, EDO DRAM),DRAM的時序與CPU的時序是不同步的,即==CPU和DRAM間沒有一個公共的參考時鐘==。在這種系統中,DRAM與微處理器是異步的。因爲CPU把地址提供給DRAM後,DRAM是以主/從方式爲CPU提供數據的。若DRAM不能及時給出數據,它會發出NOT READY
信號告知CPU,CPU通過在總線時序中插入等待狀態(Wartezyklen)來響應NOT READY
信號,等待DRAM準備好數據。
==–> CPU總線時序是依賴於DRAM時序的==!
在SDRAM系統中,微處理器與SDRAM之間有一個公共時鐘(系統時鐘)信號。==在CPU和SDRAM之間的所有總線行爲(送地址、送數據、送控制信號)都與這個公共時鐘信號同步(synchron zum Systemtakt)== –> ==公共時鐘是CPU和SDRAM的參考點,任何操作都不會偏離它== –> 因此CPU就無需等待了。(見 計算機組成原理 p160)
突發模式
–
==突發模式既可用於讀,也可用於寫。==
讀
CPU像正常情況下提供第一個單元的地址,先給RAS信號,接着爲CAS信號。
但是由於CPU讀DRAM的內容是用於填充cache,所以要一次讀幾個連續的單元(所讀單元的個數取決於Cache的結構)。因此,CPU在給出第一個單元的地址之後,後續單元的地址就無需再給出了,從而節省了用於建立地質和保持信號的時間。
–> ==即可簡單的通過編程把SERAM設置爲突發模式,告訴它一次要連續讀的單元數就可以了。==這就是許多SDRAM的設計思想。
它們課通過預先編程設置成一次從DRAM內部以突發模式讀出1、2、3、8、16或256個連續單元。
每次突發讀出的單元數目稱爲==突發長度(burst length)==
例如:
若突發長度爲8,則首先要給出第一個單元的地址,即首先是RAS信號,然後是CAS信號。==但後續的第二到八個單元的地址無需給出==,利用突發模式可以已最小延遲直接讀出它們的內容
–
交錯連接
爲了提高性能,SDRAM採用了前面討論的==交錯連接==的概念。
在傳統的交錯設計方法中,是由主板設計者來實現DRAM內存的交錯連接(兩個DRAM芯片,Speicherband交錯連接),從而使一個內存條的預充時間與另一個內存條的訪問時間重疊。
而SDRAM的交錯連接是在==芯片內部==實現的。即在SDRAM芯片內部,存儲元件的安排是遵循交錯的方式,==實現了在訪問一組存儲單元電路的同時刷新另一組存儲單元電路==。
–
read latency
在CAS有效後,數據出現在數據引腳上所需的時鐘數是可通過編程控制的,這個時鐘數稱爲==讀延遲(read latency==),可以是1、2或3個時鐘。