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