新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > CPU學習心得續集1

        CPU學習心得續集1

        作者: 時間:2016-12-01 來源:網絡 收藏
        癡人說夢繼續。
        計算機工作速度是很快的,每運行一步指令大概也就是幾億分之一秒。即便是51單片機,也能達到千萬分之一秒,如果我們的思緒跟著計算機跑,會被累死的,好囧!
        不如我們用慢動作將整個工作過程放慢,一點點體會它到底是怎么工作的,至于多慢,一個小時一步可以了吧?呵呵,隨便了,能理解了就繼續下一步。

        單片機為例,通電后,系統在第一個周期內干什么呢?
        單片機內部有很多部門,我們假設它就是一個工廠,工廠的中間是一條寬闊的大路,路兩邊是各個車間和管理部門,然后在廠區內安裝了一個所有人都能聽到的大喇叭,對所有部門發號施令。
        好了,零號指揮員開始喊了:第一步,指針指向地址0000H,其它部門原地待命!這時候,所有的沒有接到任務的部門什么都不干,只有指針瞬間移動到了倉庫的0000H位置。你要是問了:指針是個什么東西啊?
        這么解釋吧,你見過電唱機這個東東嗎?沒見過?沒見過先去見見......電唱機都有一個唱頭,唱頭和唱片接觸的部門是一根針,針和唱片上蝕刻的軌跡摩擦,發出聲音,經過電路放大送到喇叭就可以聽啦!這時候,你要是認為把唱頭移動到另外一個位置,本來唱的好好的歌曲就換成別的音樂了(夜店里面DJ有一種專門磨片的唱機,我沒去過夜店,也不知道那個唱機叫什么名字,DJ可以把一段節奏比較好的段落反復播放,就是利用的唱頭的瞬間移位)!這里的唱頭就像是計算機里的指針,指針指向0000H就像唱頭回到唱片起點一個道理。
        地址0000H在單片機里位于程序存儲器(貌似是,懶得去翻資料了)的第一個位置,而程序存儲器共有128個位置,分別是0000H,0001H,0002H,0003H......等等。
        至于為什么單片機通電后會將指針指向0000H,我們學習最最底層的東西,這些都是繞不開的,我暫時理解為:通電后,系統將所有的部門都訪問了一個遍,然后把別的數據都拋棄了,只留下0000H的數據,相當于訪問了0000H。

        假如說0000H里面存放了01010101這些數據,這些就是CPU下一步的指令,沒有上帝,CPU的命令從來都是從上一個錦囊里面得到的!
        我似乎有點開竅了!
        這就是單片機第一個脈沖周期內干的全部工作,是不是感覺有點浪費啊?就干這一點小事?是的,計算機每一個周期確實干不了太多的事,但是計算機的特長是這些個周期都特別短,短到你剛想思考,它就運行了千萬個周期......“天下武功,唯快不破”。
        CPU系統的工作就是這樣,每個部門都等著大喇叭里面給自己派任務,絲毫不敢懈怠,但是每次只有一個部門接到了任務,這就是程序,一步一步執行。

        第二個周期,單片機又要干什么呢?0000H里面的數據已經告訴你了,如果沒有告訴你的話,這個程序員是要被炒掉的,因為這里是一條無條件跳轉指令,必須的,因為下面的地址是保留地址,是禁區。那么,跳到哪里呢?程序員設定哪里就是哪里,只要被系統允許。然后指針就去訪問那個地址,再打開那里的錦囊。
        同理,系統將所有部門的電平都巡測了一個遍,唯獨留下了指針所在地址的數據。在這個周期,程序不再需要跳轉了,開始執行正文了,當然也不排除繼續跳轉,除此之外,指針在沒有跳轉指令的情況下,在下一個周期自動加1,訪問下一個地址。

        本期重點:1,系統加電后先指向0000H;2,每個周期內,所有的部門都在工作,但是只有目標地址的數據被保留,其它的數據扔掉,可以理解為系統只訪問了該地址,即指針指向了該地址。


        關鍵詞: CPU學習心

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 龙胜| 阳东县| 富川| 沾益县| 昌宁县| 舞阳县| 隆化县| 辰溪县| 盐池县| 长岭县| 无为县| 年辖:市辖区| 民权县| 城口县| 遵义市| 伽师县| 囊谦县| 礼泉县| 合川市| 胶州市| 鄂托克旗| 土默特左旗| 瑞安市| 和硕县| 盐津县| 鱼台县| 郯城县| 探索| 清新县| 敦化市| 丰都县| 沁水县| 桂阳县| 曲麻莱县| 抚顺市| 大悟县| 左贡县| 西安市| 凉山| 承德市| 枝江市|