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