RAM和ROM
RAM和ROM的存儲器的存儲介質(zhì)是半導(dǎo)體存儲器
RAM是易失性存儲器,斷電后存儲的信息就會(huì)消失,但是操作系統(tǒng)的在啟動(dòng)的時(shí)候,我們是需要讀取內(nèi)存的信息的。如果存儲體中只是RAM就無法啟動(dòng)操作系統(tǒng),所以存儲體一般由兩部分組成,一部分是RAM,速度快,易失性的存儲器,另一部分是ROM,存儲速度相對于RAM慢一些,但是是非易失性存儲器。
ROM:是只讀存儲器。
RAM也可以分為兩個(gè)部分:
RAM:隨機(jī)存取存儲器。它的信息都是以電信號的方式來存儲的,所以斷電就會(huì)丟失信息。
SRAM:它是一種非破壞性的存儲器,所以不需要對SRAM里面存儲信息進(jìn)行刷新。它的存儲信息一般是觸發(fā)器,運(yùn)行的速度快,但是價(jià)格高。
DRAM:它是一種破壞性讀出的存儲器,所以為了保證DRAM里面的信息的正確性,需要對DRAM的存儲信息進(jìn)行刷新。它的存儲信息一般是電容,速度相對于SRAM來說會(huì)慢一些,當(dāng)然價(jià)格對于SRAM也低一些。
SRAM的行地址和列地址是不等的,DRAM的行地址和列地址是相等的。對于DRAM來說,由于行地址和列地址相等,所以地址線可以復(fù)用。
一般cache的存儲器就是SRAM,主存就是DRAM+ROM
DRAM刷新
前面我們提到,DRAM的讀出是一種破壞性的讀出,所以我們對DRAM需要刷新。刷新的方法有三種。
分散刷新:就是每次讀寫完都刷新一行
集中刷新:就是專門留一段時(shí)間進(jìn)行刷新,在這段時(shí)間內(nèi),是無法訪問存儲器的,這段時(shí)間被稱為“死區(qū)”。
異步刷新:每隔一段時(shí)間刷新一次即可。
提高CPU訪問主存的速度。
1. 雙端口RAM,這樣就可以連兩個(gè)CPU,兩個(gè)CPU在有些時(shí)候就可以同時(shí)訪問RAM。

2. 多模塊的存儲器。將存儲器分為多個(gè)模塊,CPU訪問一個(gè)模塊之后,馬上就可以訪問下一個(gè)模塊的存儲器。這樣就可以跳過存儲器的恢復(fù)期,節(jié)省訪問時(shí)間。
3. 利用cache。將一些數(shù)據(jù)存儲到cache中,如果CPU訪問的數(shù)據(jù)在Cache中命中了,就可以提高訪問速率。
Cache的地址映射方式
1. 全相聯(lián):就是主存到cache的映射是,如果cache中用空位,就將數(shù)據(jù)放到cache中(空位隨意放)。
2. 直接映射:主存的某一塊只能對應(yīng)cache的固定某一塊(對號入座)。
3. 組相聯(lián)映射:主存的某一塊只能對應(yīng)cache的某一區(qū)間,但是在這個(gè)區(qū)間內(nèi)是可以隨意的存放的。(按號分組,組內(nèi)隨意放)。
替換算法
隨機(jī)算法(RAND):隨機(jī)確定替換的cache塊。它的實(shí)現(xiàn)比較簡單,但沒有依據(jù)程序訪問的局部性原理,故可能命中率較低。
先進(jìn)先出(FIFO):選擇最早調(diào)入的塊進(jìn)行替換。它比較容易實(shí)現(xiàn),但也沒有一句程序訪問的局部性余力,可能會(huì)把一些需要經(jīng)常訪問的程序塊也作為最早進(jìn)入Cache的塊替換掉。
近期最少使用算法(LRU):依據(jù)程序訪問的局部性原理選擇近期內(nèi)長久未訪問的存儲行作為替換的行,平均命中率要比FIFO高。
最不進(jìn)場使用算法(LFU):將一段時(shí)間內(nèi)被訪問次數(shù)最少的存儲行換出。每行先設(shè)置一個(gè)計(jì)數(shù)器,新行簡歷后從0開始計(jì)數(shù),每訪問一次,被訪問一次,被訪問的行計(jì)數(shù)器加1,需要替換時(shí)比較各特定行的計(jì)數(shù)值,將計(jì)數(shù)值最小的行換出。