【軟件開發底層知識修煉】一 深刻淺出處理器之一 微處理器與微控制器

學習交流加微信

  • 我的qq: 1126137994
  • 我的微信: liu1126137994
  • 學習交流資源分享qq羣: 962535112

深刻淺出處理器這幾篇文章可能你以爲對軟件開發用處不大,這個看我的理解吧,如果想貫通上下,知其然還要知其因此然的話,或許仍是有點用處的。學習處理器的篇章很是少,花一點時間學一下也無所謂的!函數

在我以前仍是作硬件的時候,我一直不理解微處理器和微控制器的區別。 以前寫過一篇文章,講X86處理器的,能夠點擊查看:X86處理器學習

一、 處理器

處理器分爲兩種:微處理器和微控制器。操作系統

微處理器與微控制器有如下區別:.net

  • 微處理器設計

    -- CPU3d

  • 微控制器指針

    --CPU + 片內內存 + 片內外設cdn

注意:blog

  1. 微控制器具備成本低,功耗低等優勢,經常使用於嵌入式系統設計
  2. 對於軟件工程師而言,微處理器與微控制器沒有任何區別

其中,CPU與外設(包括微控制器的片內外設與片外外設)都有寄存器,可是它們的用處倒是很是的不同。以前寫過的X86處理器那篇文章中,已經講了一些X86處理器的寄存器的用處,大體就是存儲數據的,可是微控制器上的外設中的寄存器,不是用來存儲數據的,而是用來控制外設的行爲和工做方式的。

1.一、寄存器分類

  1. CPU寄存器

    -- 專用指令執行,數據運算, 變量處理,參數傳遞

  2. 外設寄存器

    -- 用於控制外設的行爲和工做方式、

    --寄存器值的配置須要查看相應的硬件手冊

1.二、處理器中的關鍵寄存器

今天咱們只瞭解兩個寄存器:PC程序計數器寄存器,SP棧指針寄存器。

  • PC程序計數器(指令指針寄存器IP)

    -- PC實際上就是代碼中的每一條指令的地址,這個地址恰好就是內存中代碼段中的偏移地址

    --每執行一條指令,PC中的值,就會發生變化

    -- PC始終保存着一條指令,這條指令就是CPU即將要執行的那條指令(下一條要執行的指令)

  • SP棧指針(Stack Pointer)

    --SP寄存器,始終保存着棧空間的棧頂地址,實現LIFO特性

    -- SP棧指針用於保護函數調用的現場,好比中斷斷點,通用寄存器,函數的返回值等。具體如何保護,在之後的文章中會講解

具體使用方法,會在後面的文章中講解,今天暫時知道這兩個寄存器的概念與用法。

1.三、處理器的IO操做

衆所周知,一臺電腦有不少外設,USB,聲卡,顯卡等,這些都是外設。那麼處理器是如何與外設進行數據通訊的呢?

處理器與外設之間的通訊經過IO操做完成。

那麼既然有IO操做,確定是要有CPU去尋址的過程,在CPU所能尋址的範圍內,找到外設的地址,對該地址進行讀寫就能夠與外設進行通訊。那麼外設如何經過IO將本身的地址空間映射給CPU的尋址空間呢?

  • 經過內存映射IO空間

    -- 外設經過精密的硬件連接映射到CPU的尋址空間。

    -- 而後CPU經過地址訪問與外設進行數據讀寫訪問

  • 獨立的IO空間

    --外設獨立於CPU的地址空間,沒法經過CPU的尋址來與外設進行通訊

    -- 此時,須要使用專用的指令與外設進行通訊

上面是CPU與外設的基本通訊方式,咱們沒必要糾結於具體的硬件實現,畢竟咱們是作軟件開發。

那麼,CPU如今能夠與外設進行通訊了,那麼CPU如何操做外設呢?

  1. 經過IO端口配置控制寄存器
  2. 經過IO端口讀取數據寄存器

從軟件工程師的角度來看,只要對不一樣的IO端口讀寫,就能夠操做外設;讀寫IO端口時候的具體值和意義須要查詢具體的硬件手冊。

二、硬件設計的關鍵

上一節咱們知道了CPU是如何與外設打交道的。那麼在硬件上,大概設怎樣的設計呢?

首先CPU與外設之間要有地址總線與數據總線,而後須要有一個片選信號用來確保是否「啓動」該外設。

在這裏插入圖片描述

經過具體的硬件設計,可使地址總線上的值在某個範圍時,片選信號爲「真」,即:使能鏈接的外設,從而讀取相應地址中的數據!!!

具體的硬件如何設計不去細究,這裏知道大概原理便可,

三、處理器的啓動過程

在一開始,咱們的電腦是沒有操做系統的,那麼處理器是如何啓動的呢?

  • 處理器啓動後,PC(IP)寄存器固話了一個默認值
  • PC默認值決定了CPU上電後第一條執行指令在哪
  • 第一條執行指令,是CPU的啓動程序BIOS(BIOS之後講解)

下圖爲CPU簡易的啓動過程

在這裏插入圖片描述

大體瞭解一下BIOS:

固化於硬件中的一個程序,用於初始化硬件,而後將指令指針寄存器PC(IP)指向主引導扇區程序,主引導扇區程序再來引導操做系統內核的自舉程序,而後啓動操做系統。(後期會專門學習操做系統,如今暫時不用瞭解)

四、總結

本系列文章學習記錄軟件開發底層的基礎知識。

相關文章
相關標籤/搜索