CPU學(xué)習(xí)心得續(xù)集1
計(jì)算機(jī)工作速度是很快的,每運(yùn)行一步指令大概也就是幾億分之一秒。即便是51單片機(jī),也能達(dá)到千萬(wàn)分之一秒,如果我們的思緒跟著計(jì)算機(jī)跑,會(huì)被累死的,好囧!
不如我們用慢動(dòng)作將整個(gè)工作過(guò)程放慢,一點(diǎn)點(diǎn)體會(huì)它到底是怎么工作的,至于多慢,一個(gè)小時(shí)一步可以了吧?呵呵,隨便了,能理解了就繼續(xù)下一步。
以單片機(jī)為例,通電后,系統(tǒng)在第一個(gè)周期內(nèi)干什么呢?
單片機(jī)內(nèi)部有很多部門,我們假設(shè)它就是一個(gè)工廠,工廠的中間是一條寬闊的大路,路兩邊是各個(gè)車間和管理部門,然后在廠區(qū)內(nèi)安裝了一個(gè)所有人都能聽到的大喇叭,對(duì)所有部門發(fā)號(hào)施令。
好了,零號(hào)指揮員開始喊了:第一步,指針指向地址0000H,其它部門原地待命!這時(shí)候,所有的沒(méi)有接到任務(wù)的部門什么都不干,只有指針?biāo)查g移動(dòng)到了倉(cāng)庫(kù)的0000H位置。你要是問(wèn)了:指針是個(gè)什么東西???
這么解釋吧,你見(jiàn)過(guò)電唱機(jī)這個(gè)東東嗎?沒(méi)見(jiàn)過(guò)?沒(méi)見(jiàn)過(guò)先去見(jiàn)見(jiàn)......電唱機(jī)都有一個(gè)唱頭,唱頭和唱片接觸的部門是一根針,針和唱片上蝕刻的軌跡摩擦,發(fā)出聲音,經(jīng)過(guò)電路放大送到喇叭就可以聽啦!這時(shí)候,你要是認(rèn)為把唱頭移動(dòng)到另外一個(gè)位置,本來(lái)唱的好好的歌曲就換成別的音樂(lè)了(夜店里面DJ有一種專門磨片的唱機(jī),我沒(méi)去過(guò)夜店,也不知道那個(gè)唱機(jī)叫什么名字,DJ可以把一段節(jié)奏比較好的段落反復(fù)播放,就是利用的唱頭的瞬間移位)!這里的唱頭就像是計(jì)算機(jī)里的指針,指針指向0000H就像唱頭回到唱片起點(diǎn)一個(gè)道理。
地址0000H在單片機(jī)里位于程序存儲(chǔ)器(貌似是,懶得去翻資料了)的第一個(gè)位置,而程序存儲(chǔ)器共有128個(gè)位置,分別是0000H,0001H,0002H,0003H......等等。
至于為什么單片機(jī)通電后會(huì)將指針指向0000H,我們學(xué)習(xí)最最底層的東西,這些都是繞不開的,我暫時(shí)理解為:通電后,系統(tǒng)將所有的部門都訪問(wèn)了一個(gè)遍,然后把別的數(shù)據(jù)都拋棄了,只留下0000H的數(shù)據(jù),相當(dāng)于訪問(wèn)了0000H。
假如說(shuō)0000H里面存放了01010101這些數(shù)據(jù),這些就是CPU下一步的指令,沒(méi)有上帝,CPU的命令從來(lái)都是從上一個(gè)錦囊里面得到的!
我似乎有點(diǎn)開竅了!
這就是單片機(jī)第一個(gè)脈沖周期內(nèi)干的全部工作,是不是感覺(jué)有點(diǎn)浪費(fèi)???就干這一點(diǎn)小事?是的,計(jì)算機(jī)每一個(gè)周期確實(shí)干不了太多的事,但是計(jì)算機(jī)的特長(zhǎng)是這些個(gè)周期都特別短,短到你剛想思考,它就運(yùn)行了千萬(wàn)個(gè)周期......“天下武功,唯快不破”。
CPU系統(tǒng)的工作就是這樣,每個(gè)部門都等著大喇叭里面給自己派任務(wù),絲毫不敢懈怠,但是每次只有一個(gè)部門接到了任務(wù),這就是程序,一步一步執(zhí)行。
第二個(gè)周期,單片機(jī)又要干什么呢?0000H里面的數(shù)據(jù)已經(jīng)告訴你了,如果沒(méi)有告訴你的話,這個(gè)程序員是要被炒掉的,因?yàn)檫@里是一條無(wú)條件跳轉(zhuǎn)指令,必須的,因?yàn)橄旅娴牡刂肥潜A舻刂罚墙麉^(qū)。那么,跳到哪里呢?程序員設(shè)定哪里就是哪里,只要被系統(tǒng)允許。然后指針就去訪問(wèn)那個(gè)地址,再打開那里的錦囊。
同理,系統(tǒng)將所有部門的電平都巡測(cè)了一個(gè)遍,唯獨(dú)留下了指針?biāo)诘刂返臄?shù)據(jù)。在這個(gè)周期,程序不再需要跳轉(zhuǎn)了,開始執(zhí)行正文了,當(dāng)然也不排除繼續(xù)跳轉(zhuǎn),除此之外,指針在沒(méi)有跳轉(zhuǎn)指令的情況下,在下一個(gè)周期自動(dòng)加1,訪問(wèn)下一個(gè)地址。
本期重點(diǎn):1,系統(tǒng)加電后先指向0000H;2,每個(gè)周期內(nèi),所有的部門都在工作,但是只有目標(biāo)地址的數(shù)據(jù)被保留,其它的數(shù)據(jù)扔掉,可以理解為系統(tǒng)只訪問(wèn)了該地址,即指針指向了該地址。
評(píng)論