?
??各位看到這一系列的名詞,是否也曾感受到一頭霧水?研究了一上午終于理清了它們之間的關(guān)系,直接上圖說明,相信你看完也能恍然大悟!若有錯誤麻煩在評論區(qū)指出。
這里有幾點需要明確:
- 存BOIS的ROM也屬于內(nèi)存(因為CPU也可以對其直接尋址),但我們生活中常說的內(nèi)存僅指RAM(也稱運行內(nèi)存)。
- PC的內(nèi)存嚴格上把rom也包括進去了,但單片機的內(nèi)存只是RAM,單片機的ROM(FLASH)相當于PC的外存固態(tài)硬盤。
- ROM最開始提出是內(nèi)存概念的范疇,但后來外存發(fā)展出現(xiàn)了固態(tài)硬盤,所用的FLASH技術(shù)屬于E2PROM,沿用了部分ROM的概念,這就使得我們很容易把ROM和外存混淆,實際上ROM和外存沒有關(guān)系,ROM是內(nèi)存。
- 內(nèi)部存儲器 = 內(nèi)存(內(nèi)存儲器)+CPU緩存,外部存儲器 = 外存儲器,是指除計算機內(nèi)存及CPU緩存以外的儲存器,此類儲存器一般斷電后仍然能保存數(shù)據(jù),如硬盤、軟盤、光盤、U盤等。
Q1:有外存,為什么還要內(nèi)存?
Answer:因為CPU需要內(nèi)存運行程序,再問為什么是內(nèi)存?因為快!
??我們知道計算機中存儲程序的部件包括外存和內(nèi)存,但是外存中存儲的程序必須要加載到內(nèi)存中才可以運行,而在外存中是無法直接運行的,這是因為負責解析和運行程序內(nèi)容的CPU,需要通過內(nèi)部程序計數(shù)器來指定內(nèi)存地址,然后才能讀出程序。即使CPU可以直接讀取并運行外存中保存的程序,但外存的讀取速度是非常緩慢的,程序的運行也將非常緩慢。
??內(nèi)存(Memory),也稱內(nèi)存儲器和主存儲器,它用于暫時存放CPU中的運算數(shù)據(jù),以及與硬盤等外部存儲器交換的數(shù)據(jù),它是外存與CPU進行溝通的橋梁,其性能的強弱影響計算機整體發(fā)揮的水平。
Q2:內(nèi)存這么好,為什么還要外存?
Answer:第一點原因是兩個字:“成本”;第二點原因是內(nèi)存是RAM,斷電數(shù)據(jù)丟失,而外存斷電數(shù)據(jù)不丟失。
??內(nèi)存速度確實快,但它造價也高,因此容量有限;外存雖然速度慢,但造價便宜,因此可以大容量擴展。
??此外內(nèi)存是RAM,斷電數(shù)據(jù)丟失,而外存(不是ROM不是ROM不是ROM?。。嚯姅?shù)據(jù)不丟失。
??這兩種存儲器相輔相成,外存可以保存大量待處理數(shù)據(jù)或者處理結(jié)果,內(nèi)存可以利用速度快的優(yōu)勢,將數(shù)據(jù)從外存分小批調(diào)入處理然后再保存到外存去,外存如果容量不足還可以再保存到更便宜、尺寸更大、操作更慢的外存中去,或者從它上面讀取數(shù)據(jù)。內(nèi)存速度快,但容量小,成本高外存速度慢,但存取容量大;內(nèi)存斷電后不能保存數(shù)據(jù),外存斷電后仍能保存數(shù)據(jù)。
Q3:為什么單片機可以不在RAM中運行程序?
Answer:核心還是兩個字:速度,單片機運行的速度較慢,在FLASH(ROM)或RAM中運行都可以。
??我們知道給單片機燒錄程序一般是燒進FLASH(ROM)中的,那單片機的程序運行在哪里呢?答案是 FLASH(ROM)和RAM均可。對于單片機來說,運行的速度也就是幾十上百兆,相對來說較慢,所以程序在RAM和FLASH中運行的差異不是十分明顯。
??一般比較小的系統(tǒng),單片機本身內(nèi)部就有FLASH,這種FLASH不同于通用的FLASH,它支持隨機地址訪問,這樣的單片機,一般程序都存儲在FLASH里,然后運行的時候,PC指針也可以到固定的FLASH地址里去取指令,所以程序是運行在FLASH里。
??相對較大的系統(tǒng),單片機也都是比較強大的,它們的FLASH一般都是外掛的大FLASH,這樣的FLASH的特點是不支持隨機地址訪問,必須逐頁訪問,因此程序不能運行在FLASH里(因為下一條指令會找不到),而RAM支持隨機地址訪問,所以把FLASH里的內(nèi)容搬移到RAM里,就可以運行了,這樣訪問起來也會更快。
Q4:我的內(nèi)存條只有8G,我是不是運行不了超過8G的程序了?
Answer:恭喜你!可以。
??這里要提到虛擬內(nèi)存,虛擬內(nèi)存是指把外存的一部分作為假象的內(nèi)存。當我們運行十幾個G的程序時,其實內(nèi)存運行了一部分,外存也“運行”了一部分。當然這里程序并不是直接在外存中運行的,CPU只能運行內(nèi)存中的程序,當要運行外存上的程序時,系統(tǒng)會把外存上的程序和內(nèi)存中的程序進行部分置換,這樣看起來就是在運行十幾個G的程序,其實運行的只是一部分而已。
??不過這會帶來一個問題,雖然程序是運行起來了,可是既然要置換,那么必然就會減慢程序執(zhí)行的速度,給你的感覺就是很卡頓。加內(nèi)存條吧朋友!文章來源:http://www.zghlxwxcb.cn/news/detail-425448.html
?文章來源地址http://www.zghlxwxcb.cn/news/detail-425448.html
到了這里,關(guān)于ROM、RAM、內(nèi)存、內(nèi)存條、外存、內(nèi)部存儲器、外部存儲器、FLASH等之間的關(guān)系的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!