2.4只讀存儲器(ROM)
- 早期只讀存儲器--廠家提前寫好內容
- 改進1 --用戶可以自己寫--一次性
- 改進2--可以多次寫--要能對信息進行擦除
- 改進3--電可擦寫--特定設備
- 改進3--電可擦寫--直接連接到計算機
一、掩模ROM(MROM)
廠家把信息直接寫在ROM上
- 1K*1的掩模ROM
- 最上面一排晶體管是預充電管
- 經過預充電管預充電後(當作限流電阻使用),所有V線都是高電平,在行列交叉點上有的有晶體管,有的沒有晶體管
- 假設某交叉點被選中且有晶體管,若被選中晶體管被導通,兩端被導通,V線高電平會變成低電平
- 輸出放大器會對數據進行反向
- 行列選擇線交叉處有MOS管爲1否則爲0
二、PROM(一次性編程)
- 熔絲如果進行讀出和寫入可以用熔絲的通和斷來保存信息,如果想保存0用大電流燒斷熔絲
- 編程後如果程序需要修改,只能重新購買芯片
三、EPROM(多次性編程)
N型溝道浮動柵MOS電路
- G 柵極、S 源、D漏
- 若在D加正電壓,就會在源和漏之間形成浮動柵,使源和漏不導通,保存的信息認爲是0
- 如果在D不加電壓,不形成浮動柵 S與D導通 爲1
- 如果要進行修改,重新寫入,需要驅散浮動柵
- 使用紫外線照射進行擦洗
四、EEPROM(多次性編程)
- 電可擦寫
- 局部擦寫
- 全部擦寫
五、Flash Memory(閃速型存儲器)
用在u盤或者硬盤,緩存
2.5存儲器與CPU的連接
一、存儲器容量的擴展
1、位擴展(增加存儲字長)
- 用 2片 1K*4位存儲芯片組成1K*8位的存儲器
- 2114 1K的容量需要10根地址線,將十根地址線輸入到每一個2114地址管腳
- 2114是4位的 2個2114提供8位數據 每個2114數據線分別和cpu數據線上的四條進行連接,這樣可以滿足cpu需要8位數據的要求
- 兩個芯片的片選要連接在一起,使兩個芯片同時進行工作
- 一旦有讀寫信號會從兩個芯片內部相同的地址單元各讀出4位數據信息放在8條不同的數據線上
2、字擴展(增加存儲字的數量)
- 用 2片 1K*8位 存儲芯片組成2K*8位的存儲器 2K需要11條地址線
- 每個芯片用的是A0-A9,系統餘了一條地址線A10
- 若A10=0選擇第一個芯片如果A10=1就選擇第二個芯片,A10就是片選信號
3、字、位擴展
- 用 8片 1K*4位 存儲芯片組成 4K*8位的存儲器 12根地址線 8根數據線
- 使用2-4譯碼器 00第一組 01第二組 10第三組 11第四組
二、存儲器與CPU的連接
1、地址線的連接
CPU給出地址,存儲器找到相應存儲單元,一般地址連接時,地址低位作爲地址送到存儲器地址線中,高位作爲芯片選擇信號
2、數據線的連接
CPU的數據線條數可能比存儲器長度多,這時要做位擴展,使存儲器輸入輸出數據滿足CPU要求。
3、讀/寫命令線的連接
ROM除外(只讀不寫)
4、片選線的連接
片選線連接時要確認CPU要訪問存儲器,每一個內存芯片都有自己的地址範圍,這個地址範圍要滿足CPU的要求
5、合理選擇芯片
保存系統程序用ROM,保存配置信息的部分用ROM,用戶程序或者系統程序運行區域是可讀可寫的用RAM芯片
- MREQ信號一定要用,只有這個信號是低電平時這次訪問的地址纔在存儲器當中
2.6存儲器的校驗
內存爲例,內存是電子設備,信息保存在電容當中,如果採用靜態RAM,會保存在四管觸發器當中,如果內存所處的電磁環境比較複雜,或者是在空間環境下收到帶電粒子的打擊,就可能會造成電容的充電放電,或者是觸發器的反轉,存放在存儲器當中的信息就可能會出錯。存儲器中保存了程序運行需要用的代碼,如果不進行校驗,會導致程序的運行錯誤
合法代碼集合
1、{000,001,010,011,100,101,110,111} 檢0位錯、糾0位錯
從000-111連續變換,其中任何代碼出錯變化之後依然是集合中的合法代碼,計算機檢測不出代碼出錯。
2、{000,011,101,110} 檢1位錯,糾0位錯
000 101 110 錯1位都可以轉爲100
3、{000,111}檢1位錯,糾1位錯
4、{0000,1111}檢2位錯,糾1位錯
5、{00000,11111}檢2位錯,糾2位錯
一、編碼的最小距離
最小距離:合法代碼集中,任意兩組合法代碼之間二進制位數的最小差異。
編碼的檢錯、糾錯能力與編碼的最小距離有關
二、漢明碼的組成
漢明碼採用奇偶檢驗
- 奇校驗:加上一個校驗位,加上原來的數據位,讓代碼1的個數是奇數個
- 偶校驗:加上一個校驗位,加上原來的數據位,讓代碼1的個數是偶數個
漢明碼採用分組校驗
00100011 -> 100100011 第一位校驗位,總共偶數個1 偶校驗 ->1001000011 兩位校驗位分兩組校驗
漢明碼的分組是一種非劃分方式
三個圈爲P3 P2 P1三組
分成三組,每組1位校驗位,幷包括4位數據位,1、2、4、8位置放校驗碼
2.7 提高訪存速度的措施
內存速度與cpu速度提升速度相差很多,但是cpu運行程序的時候,需要的數據和指令都要來自於內存,訓醒的結果要保存的內存當中去,如果存儲器很慢,cpu再快也無法提升整機的速度,cpu得不到所需要的數據和指令就只能空等,這種現象叫做存儲牆。
- 採用高速器件
- 採用Cashe-主存
- 調整主存的結構
一、單體多字系統
把存儲器的存儲字長加長,CPU的字長是16位,存儲器的存儲字長設爲64位,cpu每次存儲器,都可以訪問出4個機器字,每一個都可以是一個機器指令,或者是長度爲16的數字,一次性把這個4個字取出存到數據寄存器當中,用的時候從數據寄存器中將其取走即可提升速度。
問題1:cpu向存儲器中某單元寫一個長度爲16的字,先寫到單字長寄存器,再寫到4個字長的數據寄存器中,再寫入到存儲器當中。會造成,我們可能只需要寫16位,但剩下的48位也會被寫入到給定的存儲單元,會造成給定的存儲字有48位被修改,修改可能是錯誤修改。
問題2:如果我們要取的數據或指令不是連續存儲的,比如一次取出了4條指令,第一條就是跳轉指令,但是跳轉比較大,不在這4條當中,這時取出的4位只有一條有用。
二、多體並行系統
1、高位交叉 順序編址
給存儲體構成的存儲器進行編址時,從某一個存儲體開始順序對其中單元進行編址
若每個存儲體都有自己的控制電路,都有自己的MAR、MDR、地址譯碼器,能夠對讀寫信號進行鎖存,那麼4個存儲體就可以進行並行操作了
把多個存儲體進行獨立,並且每個存儲體都有自己的控制電路來進行訪存操作,四個存儲體就有了並行操作的基礎
問題:如果用戶使用一個程序,程序在計算機中是按序存儲的,若一條指令存在000000,下一條存在000001,指令按序執行,在執行程序過程中M0被CPU不停訪問,其他存儲體是空閒的,按照程序存取特徵來說,會造成一個繁忙其他空閒的問題
用高位作爲選擇信號,選擇存儲體,低位作爲存儲體內部的地址輸入到存儲體當中尋找存儲單元。適合存儲器容量擴展不適合提高帶寬和訪存速度
2、低位交叉 各個體輪流編址
代碼在存儲體當中按地址進行順序存儲,000000,000001,cpu取指令時,在一個訪存週期的開始給出要訪問的地址包括體號和體內地址。這個信號假如訪問M0,M0會把內部地址和讀寫命令進行鎖存,自己完成讀操作,cpu在同一個主存週期中繼續傳輸地址給M1、M2,輪流的對M0、M1、M2、M3進行訪問。如果M0準備好了數據,在一個存取週期要結束時,可以向cpu進行傳送。此方法爲分離式通訊提高存儲器帶寬
三、高性能存儲芯片
1、SDRAM(同步DRAM)
在系統時鐘的控制下進行讀出和寫入
如果採用同步方式要求CPU和存儲器之間在給定的時間點上必須開始或者完成給定的操作,這樣存儲器的操作就可以和cpu的速度保持一致,cpu不需要等待
這要求存儲器芯片速度非常快
2、RDRAM
主要解決存儲器帶寬問題
3、帶Cashe的DRAM
在DRAM的芯片內集成了一個由SRAM組成的Cashe,有利於猝發式讀取
讀第一個數據時要從內存中讀,速度比較慢,但是讀後續的數據,因爲已經被緩衝到Cashe當中,速度會非常快。