由于單篇文章字?jǐn)?shù)限制,關(guān)于單片機(jī)的存儲(chǔ)器結(jié)構(gòu)的相關(guān)知識(shí)這里我只能分3篇文章來(lái)給大家分享,希望大家理解,大家可以關(guān)注我查看相關(guān)文章內(nèi)容以便大家深入的學(xué)習(xí)。廢話不多說(shuō),干貨直接上。
單片機(jī)的存儲(chǔ)器的結(jié)構(gòu)是什么樣子,是馮諾依曼結(jié)構(gòu)還是哈佛結(jié)構(gòu)?大家知道我們計(jì)算機(jī)系統(tǒng)有兩種基本的存儲(chǔ)器的結(jié)構(gòu),一個(gè)叫做馮諾依曼結(jié)構(gòu),也叫做普雷斯頓結(jié)構(gòu),另外一種叫做哈佛結(jié)構(gòu),51單片機(jī)到底是哪一種體系結(jié)構(gòu)?不同的書(shū)上有的寫(xiě)的是不對(duì),到底是哪一種結(jié)構(gòu),我們首先來(lái)了解一下到底什么是馮諾依曼結(jié)構(gòu),什么又是哈佛結(jié)構(gòu)。
存儲(chǔ)器的劃分一般分成兩種結(jié)構(gòu),就是我給大家講的,一個(gè)叫做啊馮諾依曼結(jié)構(gòu),一個(gè)叫做哈佛結(jié)構(gòu),哈佛大學(xué)的一個(gè)教授提出的計(jì)算機(jī)的體系結(jié)構(gòu)一般稱之為叫哈佛結(jié)構(gòu),普雷斯頓結(jié)構(gòu)也叫做阿馮諾依曼結(jié)構(gòu),馮諾依曼大家都比較熟悉,我們叫做計(jì)算機(jī)之父,它提出了一種存儲(chǔ)器的一個(gè)結(jié)構(gòu)呢,叫做普萊森結(jié)構(gòu),它的特點(diǎn)是程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器是統(tǒng)一編制的方式,它的結(jié)構(gòu)是RAM和ROM是在一個(gè)存儲(chǔ)器上,也就是說(shuō)是一種將程序指令存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器合并在一起的一種存儲(chǔ)器的結(jié)構(gòu),是指令存儲(chǔ)器的地址和數(shù)據(jù)存儲(chǔ)器的地址是指向同一個(gè)存儲(chǔ)器的不同的物理位置,所以你可以發(fā)現(xiàn)它是同一個(gè)存儲(chǔ)器,但是RAM,也就是數(shù)據(jù)存儲(chǔ)器和程序存儲(chǔ)器,它是在這一個(gè)同一個(gè)物理結(jié)構(gòu)當(dāng)中的不同的地方,這種我們叫做馮諾依曼結(jié)構(gòu)。
這是計(jì)算機(jī)的基礎(chǔ),比如說(shuō)我們的英特爾的8086系統(tǒng),也就是8086的CPU它的程序指令和數(shù)據(jù)是16位的就是采取普雷斯頓的體系結(jié)構(gòu),這個(gè)體系結(jié)構(gòu)也就是大家比較熟悉的在計(jì)算機(jī)領(lǐng)域著名的數(shù)學(xué)家馮諾依曼,當(dāng)然了和其它的專家,比如說(shuō)戈德斯坦等人在1945年聯(lián)名發(fā)表了一篇比較著名的報(bào)告,學(xué)計(jì)算機(jī)的應(yīng)該都知道,叫101報(bào)告,在這個(gè)報(bào)告當(dāng)中,它提出了三個(gè)最基本的,也就是說(shuō)計(jì)算機(jī)制造了三個(gè)最基本的原則,第一個(gè)原則就是說(shuō)計(jì)算機(jī)采用二進(jìn)制,這是它們?cè)谶@個(gè)報(bào)告當(dāng)中提出來(lái)的,當(dāng)然了,計(jì)算機(jī)采用二進(jìn)制不是它們首先提出來(lái)的,第二點(diǎn)是報(bào)告指出,程序存儲(chǔ)執(zhí)行,也就是說(shuō)計(jì)算機(jī)按照程序的順序,指令執(zhí)行,就是說(shuō)這個(gè)計(jì)算機(jī)的執(zhí)行它是按照程序,順序存儲(chǔ)取址的辦法來(lái)執(zhí)行,第三個(gè)原則,它指出我們的計(jì)算機(jī)由五個(gè)部分組成,包括運(yùn)算器、控制器、存儲(chǔ)器,輸入設(shè)備和輸出設(shè)備,那這套理論我們稱之為叫做馮諾依曼體系結(jié)構(gòu)。
到目前為止,我們的計(jì)算機(jī)的體系結(jié)構(gòu)還是脫離不了馮諾依曼的體系結(jié)構(gòu),我們計(jì)算機(jī)的體系結(jié)構(gòu)還是由運(yùn)算器控制器,存儲(chǔ)器,輸入設(shè)備和輸出設(shè)備這五大部件構(gòu)成,所以馮諾依曼也被稱之為計(jì)算機(jī)之父,大家要大概的了解一下什么是普林斯頓結(jié)構(gòu),或者叫做馮諾依曼存儲(chǔ)的結(jié)構(gòu)。
哈佛結(jié)構(gòu)它是一種將程序指令存儲(chǔ)和數(shù)據(jù)存儲(chǔ)分開(kāi)的一種存儲(chǔ)結(jié)構(gòu),大家通過(guò)這個(gè)圖也可以發(fā)現(xiàn),這個(gè)RAM和ROM是兩個(gè)結(jié)構(gòu),是兩個(gè)物理存儲(chǔ)空間,不是像馮諾依曼結(jié)構(gòu)是在同一個(gè)物理空間,分了兩個(gè)區(qū)域,程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器是分開(kāi)的,這樣的話,哈佛結(jié)構(gòu)相當(dāng)于是一種并行的體系結(jié)構(gòu),它的主要特點(diǎn)就是將程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器,在不同的存儲(chǔ)空間當(dāng)中,這樣有一個(gè)好處,就是程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器,它是兩個(gè)獨(dú)立的存儲(chǔ)器,就是和我們的數(shù)據(jù)和指令具有不同的數(shù)據(jù)寬度,并且可以同步的進(jìn)行訪問(wèn),這種的結(jié)構(gòu)它使我們的程序總線和數(shù)據(jù)總線就在一個(gè)記憶周期內(nèi),可以同時(shí)獲得指令和數(shù)據(jù),從而能夠提高我們CPU的執(zhí)行效率,提高了數(shù)據(jù)的吞吐率,但是它的結(jié)構(gòu)會(huì)比較復(fù)雜,我們知道哈佛結(jié)構(gòu)的話,它的程序就是程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器,它都要有對(duì)應(yīng)的數(shù)據(jù)總線和地址總線,所以它是有四種總線,也就是程序存儲(chǔ)器有兩個(gè)總線,叫做數(shù)據(jù)總線和地址總線。
數(shù)據(jù)存儲(chǔ)器它也有兩個(gè)總線,也就是數(shù)據(jù)總線和地址總線,所以它的體系結(jié)構(gòu)會(huì)比較復(fù)雜,馮諾依曼結(jié)構(gòu)它就比較簡(jiǎn)單,它的數(shù)據(jù)總線和地址總線是采取統(tǒng)一編制的辦法,就是說(shuō)對(duì)我們的RAM和ROM的尋址都可以通過(guò)一套總線來(lái)進(jìn)行,它的結(jié)構(gòu)會(huì)比較簡(jiǎn)單。
有朋友問(wèn)了,怎么樣區(qū)分這兩種存儲(chǔ)器的結(jié)構(gòu)呢?應(yīng)該看什么呢?主要是看總線,看是一套總線還是兩套總線,就是說(shuō)我指的一套總線就是數(shù)據(jù)總線和地址總線,兩套總線就有兩套數(shù)據(jù)總線和地址總線,就是說(shuō)馮諾依曼結(jié)構(gòu)它是采取的統(tǒng)一的一個(gè)數(shù)據(jù)總線和地址總線,可以訪問(wèn)RAM和ROM,采取的是分時(shí)的辦法,哈佛結(jié)構(gòu)的RAM和ROM分別都有地址總線和數(shù)據(jù)總線,這樣的話大家就可以在后面講完51單片機(jī)的時(shí)候就可以了解51單片機(jī)到底是采用哪一種結(jié)構(gòu),可以先提一下,實(shí)際上51單片機(jī)大概了解過(guò),51單片機(jī)實(shí)際上它是RAM和ROM是占用不同的存儲(chǔ)空間,是有不同的物理空間的,就是ROM是一塊的,這個(gè)大家前面看計(jì)算機(jī)的硬件系統(tǒng)結(jié)構(gòu)圖的時(shí)候也發(fā)現(xiàn),有一片RAM,還有有一塊ROM。
有同學(xué)問(wèn),那我們的51單片機(jī)是不是就是哈佛結(jié)構(gòu)呢?也不見(jiàn)得,實(shí)際上51單片機(jī)它是一種改進(jìn)的哈佛結(jié)構(gòu),這個(gè)很多書(shū)上講的是不對(duì)的,很多書(shū)上都說(shuō)我們的單片機(jī)是哈佛結(jié)構(gòu),但實(shí)際上它不是真正的哈佛結(jié)構(gòu),因?yàn)槲覀冎牢覀?1單片機(jī)內(nèi)部的總線實(shí)際上就是一套,就是數(shù)據(jù)總線和地址總線,沒(méi)有把RAM和ROM分別提供一套數(shù)據(jù)總線和地址總線,就是一套數(shù)據(jù)總線和地址總線,但是它分時(shí)復(fù)用,而且也是采取統(tǒng)一編制的辦法,它怎么樣區(qū)分RAM和ROM呢?學(xué)過(guò)匯編的同學(xué)知道,它是通過(guò)指令來(lái)進(jìn)行區(qū)分的,所以51單片機(jī)的存儲(chǔ)空間的結(jié)構(gòu)應(yīng)該是一種改進(jìn)型的哈佛結(jié)構(gòu),但是它也沒(méi)有脫離馮諾依曼結(jié)構(gòu),所以大家要理解這個(gè),因?yàn)樗且粋€(gè)發(fā)展趨勢(shì),我們計(jì)算機(jī)是一個(gè)發(fā)展的過(guò)程,大家應(yīng)該去把這個(gè)東西大概去了解一下,馮諾依曼結(jié)構(gòu)雖然比較出名,但是實(shí)際上哈佛結(jié)構(gòu)的提出是早于馮諾依曼結(jié)構(gòu)的,老的這種計(jì)算機(jī)的就是馮諾依曼體系結(jié)構(gòu),第一臺(tái)通用的計(jì)算機(jī)是1946年的時(shí)候提出了一種叫做電子數(shù)字積分的一個(gè)計(jì)算機(jī),也是第一臺(tái)通用的計(jì)算機(jī),它的體積比較龐大,它一共占地的話是170個(gè)平方,這是很大的空間放了一個(gè)計(jì)算機(jī),那目前我們用的計(jì)算機(jī),大家知道一臺(tái)筆記本很小,這個(gè)計(jì)算機(jī)當(dāng)時(shí)發(fā)明的原因,大家可以去看計(jì)算機(jī)的歷史,主要是為了二戰(zhàn)期間為軍方服務(wù)的,實(shí)際上剛開(kāi)始都是為了軍方計(jì)算服務(wù)的。
哈佛結(jié)構(gòu)的計(jì)算機(jī),它的結(jié)構(gòu)也比較大,這個(gè)是剛才提到的是霍德華艾肯在1937年的時(shí)候進(jìn)行設(shè)計(jì)啊,1944年交付的一臺(tái)計(jì)算機(jī),叫做馬克一號(hào),它的體積也比較長(zhǎng)也比較大,長(zhǎng)有50英尺,高8英尺,看上去像一列火車(chē),它主要全部是由繼電器來(lái)構(gòu)成的,它一共用了多少個(gè)部件來(lái)構(gòu)成的?它用了大概有75萬(wàn)個(gè)零部件構(gòu)成了這臺(tái)計(jì)算機(jī),可以發(fā)現(xiàn),實(shí)際上哈佛結(jié)構(gòu)的計(jì)算機(jī)是比馮諾依曼要早,但是馮諾依曼,因?yàn)樗目偩€結(jié)構(gòu)比較簡(jiǎn)單,所以很容易實(shí)現(xiàn),之后馮諾依曼體系結(jié)構(gòu)得到很大的發(fā)展,現(xiàn)在我們很多體系結(jié)構(gòu)也都是在馮諾依曼的基礎(chǔ)上和哈佛結(jié)構(gòu)的基礎(chǔ)上做了很大的一個(gè)改進(jìn)。
具體來(lái)看51單片機(jī)的體系結(jié)構(gòu),51單片機(jī)的體系結(jié)構(gòu)剛才提到了,它是一種改進(jìn)的哈佛結(jié)構(gòu),它內(nèi)部一共有四個(gè)物理的存儲(chǔ)空間,一個(gè)叫做片內(nèi)的RAM,一個(gè)叫做這個(gè)片外的RAM,片內(nèi)的RAM和片外的RAM它有四個(gè)存儲(chǔ)空間可以供用戶來(lái)使用。
這個(gè)就是它的硬件結(jié)構(gòu)圖,需要大家重點(diǎn)掌握的一張圖,這張圖是我們的存儲(chǔ)器空間的結(jié)構(gòu)圖,也需要大家重點(diǎn)掌握,單片機(jī)的內(nèi)部的機(jī)器硬件結(jié)構(gòu)圖,理解了它的存儲(chǔ)器的分布圖,對(duì)計(jì)算機(jī)才是或者說(shuō)對(duì)單片機(jī)才是真正的理解。
既然分成片內(nèi)和片外,首先來(lái)看存程序存儲(chǔ)器,程序存儲(chǔ)器的一個(gè)主要作用就是存放程序,當(dāng)然了,除了存放程序之外,我們一般還會(huì)把一些常數(shù)表格也存放在程序存儲(chǔ)器當(dāng)中,因?yàn)槌绦虼鎯?chǔ)器有一個(gè)特點(diǎn),也就是掉電不丟失,程序存儲(chǔ)器不是不可以寫(xiě),只是在程序運(yùn)行的過(guò)程當(dāng)中,它是只讀不可寫(xiě),如果它不可以寫(xiě),我們的程序代碼不是要燒寫(xiě)倒入當(dāng)中去的嘛,所以它也是可以燒寫(xiě)進(jìn)去的,在我們程序,也就是說(shuō)CPU運(yùn)行程序的過(guò)程當(dāng)中,它是不可寫(xiě)的,它是只讀,所以我們才叫做只讀存儲(chǔ)器,只讀存儲(chǔ)器程序運(yùn)行的過(guò)程當(dāng)中只讀,并且掉電之后程序代碼不丟失,這個(gè)叫程序存儲(chǔ)器,它的一個(gè)特點(diǎn)大家要注意。
文章剩余部分會(huì)在接下來(lái)的2期欄目中繼續(xù)分享給大家,喜歡的幫忙收藏點(diǎn)個(gè)贊哦,以上文章內(nèi)容僅代表個(gè)人觀點(diǎn),不喜勿噴,謝謝大家的支持與鼓勵(lì)!
想學(xué)單片機(jī)的朋友,可以私信我,我可以發(fā)一些資料給大家作為參考學(xué)習(xí)的內(nèi)容,有問(wèn)題的朋友也可以在評(píng)論區(qū)評(píng)論,或者私信我,盡量幫大家解決朋友們提出的問(wèn)題,謝謝大家,最后祝看帖的各位朋友身體健康,萬(wàn)事順利。
審核編輯:湯梓紅
評(píng)論
查看更多