初步瞭解CPU

瞭解CPU

By JackKing_defier算法

首先說明一下,本文內容主要是簡單說明CPU的大體原理,所須要的前提知識我會提出,可是因爲篇幅我不會再詳細講解須要的其餘基礎知識。默認學過工科基礎課。學習

1、總述

先從計算機的結構提及,在現代計算機中,CPU是核心,經常被比喻爲人的大腦。如今的計算機都爲「馮·諾依曼機」,「馮諾依曼機」的一個顯著的特色就是由運算器、存儲器、控制器、輸入設備和輸出設備組成。CPU是運算器和控制器合起來的統稱,由於運算器和控制器在邏輯關係和電路結構上聯繫十分緊密,尤爲在大規模集成電路製做工藝出現以後,因此這兩個部件就集成在同一芯片上。設計

瞭解CPU怎麼工做就轉化爲了解運算器和控制器的做用和功能。排序

2、CPU的運算

運算器由ALU(算術邏輯單元)和若干通用寄存器組成。//寄存器須要數字邏輯知識遊戲

ALU即爲一個芯片,有相應的輸入,會給出相應的輸出,由邏輯運算功能表可肯定不一樣針腳會有的相應的運算輸出。//這裏能夠類比於數字邏輯中的74LS138芯片,只不過74181給出的是相應輸入的運算結果。 
在這裏我想到,不少同窗並無學習過數字邏輯這門課,簡單介紹一下。咱們高中物理就學過「與門」、「或門」和「非門」,也就是經過電路能夠實現邏輯上的「與」、「或」和「非」運算。同時呢,有一個門叫作「與非門」,也就是A和B先作與運算,再作非運算取反。經過布爾代數的運算法則能夠把全部「門」的運算都用「與非門」表示出來,也就是等價變換。這樣咱們就有了異或、同或、或非等各類門電路。內存

經過若干個輸入的信號經過各類門電路以後會產生一個或多個結果,知足咱們須要的功能。好比加法器、移位器、觸發器、寄存器、譯碼器。基礎

ALU就是這樣一個知足咱們運算功能的部件。因爲ALU功能不少,你能夠理解爲能作各類基本算術運算和基本邏輯運算。原理

說到如今,你如今應該清楚CPU內部有一個專職作運算的部件ALU了,並且由電路就能夠實現。用電路能夠很方便地表達出二進制信息,好比高電平爲「1」,低電平爲「0」。CPU處理的數據都爲二進制,能夠經過原碼、反碼和補碼完成加減乘除運算,這樣就把一切運算經過電路實現。擴展

3、指令系統

機器能作解題的運算是由於人們利用了機器語言,機器語言能被機器自身識別,同時也能夠被人理解。機器語言是由一條條語句構成的,每一條語句有必定的含義。好比,它能夠規定機器作什麼操做,指出參與操做的數或其餘信息在什麼地方等。咱們習慣把每一條機器語言的語句稱爲機器指令,所有機器指令系統的集合稱爲機器的指令系統。計算機的設計者主要研究如何肯定機器的指令系統,如何用硬件電路、芯片、設備來實現機器指令系統的功能。計算機使用者則是依據指令系統,使用匯編語言來編制各類程序。軟件

上面一段話的內容也就是說:咱們利用計算機作的全部操做,本質上都被還原成一個個指令。

指令是由操做碼和地址碼組成的。也就是分爲不一樣的字段。操做碼來指明要進行的操做,地址碼來指出該指令的源操做數的地址、結果的地址以及下一條指令的地址。(這裏又涉及到指令的格式,指令以及數據的尋址方式等,容易繞並且限於篇幅,略)一條指令包含的信息:它是幹什麼的,它須要的參數在哪裏。

指令存儲在存儲器中,也就是咱們日常說的內存。

4、CPU的控制器

在第二小節中,我說了CPU的運算,這一段主要闡述CPU的控制。CPU的實質包含運算器和控制器兩部分。對於馮·諾依曼結構的計算機來講,一旦程序放入存儲器後,就能夠經過計算機自動完成取指令和分析指令的任務,控制器就是專門作這個工做的。它負責協調而且控制計算機各部件執行程序的指令序列,其基本功能是取指令、分析指令和執行指令。

取指令,控制器必須具有能自動地從存儲器中取出指令的功能。 
分析指令,第一,要分析完成什麼操做,即爲控制器須要發出什麼樣的操做命令;第二要分析參與此次操做的操做數的有效地址。 
執行指令,這一階段就是根據分析指令產生的「操做命令」和「操做數地址」的要求,造成操做控制信號序列(不一樣的指令有不一樣的操做控制信號序列),經過對運算器、存儲器以及I/O設備的操做,執行每一條指令。

除此以外,控制器還有其它控制的功能,所有羅列會讓人頭大。簡短地講,就是控制!

根據上文的內容,能夠得出CPU必須有的功能:

  • 指令控制,控制程序的順序執行。//程序運行時,指令通常是順序執行的。
  • 操做控制,產生完成每條指令所需的控制命令。//根據指令的要求對硬件產生操做控制信號序列,通俗來說,就是把指令轉化爲對硬件的直接操做。
  • 時間控制,對各類操做加以時間上的控制。//計算機的操做對時間比較敏感,後面會提到週期的概念。
  • 數據加工,對數據進行算數運算和邏輯運算。//這裏主要是靠ALU。
  • 處理中斷,//即爲CPU被打斷的操做,後面會提到中斷,在CPU也是挺重要的一個概念。

5、CPU的結構

根據前面提到的CPU必須有的功能,要取指令,必須有一個寄存器專用存放當前指令的地址,告訴你從哪裏取出如今須要執行的指令;要分析指令,必須有存放當前指令的寄存器和對指令操做碼進行譯碼的部件,即爲分析出這一個指令對應着什麼操做,須要幹什麼;要執行指令,必須有一個可以發出各類操做命令序列的控制部件CU;要完成算術運算和邏輯運算,必需要有存放操做數的寄存器和實現運算的部件ALU;爲了處理一些異常狀況和特殊請求,還須要有中斷系統。

CPU主要由四大部分組成:ALU、CU、寄存器、中斷系統。

在數字邏輯中學到,寄存器就能夠存放二進制信息。CPU中一些主要的寄存器和它們的功能:

  • MAR:存儲器地址寄存器,用於存放將要被訪問的存儲單元的地址。
  • MDR:存儲器數據寄存器,用於存放數據。這些數據將要被存放到存儲單元或者剛從存儲單元中讀出。
  • PC:程序計數器,存放現行指令的地址,有計數功能。//通常下一條指令地址就是PC+1,即爲順序執行。直接修改這個值就是轉移類指令,跳轉到其餘位置繼續執行。
  • IR:指令寄存器,存放當前將要執行的指令。 
    主要經過這四個寄存器,CPU就能夠和主存交換信息。//由於程序以及程序須要的數據都存在主存中。

這裏能夠舉例,CPU從主存中取指令的通路。/MM表明存儲器
取指令:PC–>MAR–>MM–>MDR–>IR 
解釋:PC中存儲着咱們將要執行的指令的地址,將現行指令地址存入地址寄存器MAR,而後進行命令存儲器讀操做,現行指令從存儲器中讀到數據寄存器MDR中,再將現行指令從MDR送至指令寄存器IR,接下來就進行譯碼執行部分了,後面根據指令的操做碼,由CU譯碼去執行。

控制單元CU提供微操做命令序列,以完成計算機的所有指令操做。

6、指令週期

CPU取出並執行一條指令所需的時間稱爲指令週期,也就是CPU完成一條指令的時間。

指令週期簡單來說,分爲兩個階段:取指週期執行週期。 
大多數狀況下,CPU就是「取指–執行–取指–執行·······」的順序自動工做。剛纔提到過取指令的通路,全部的指令取指令都是這個通路,因此取指週期都相同。根據指令狀況,執行週期長短不一,有的甚至沒有,直接就是轉移指令。

這裏要提到一個比較重要的概念:中斷 
中斷比較好理解,就是CPU執行過程當中被打斷。這裏面講太細了就太多了。我能夠用個人語言通俗地讓你理解一下:這就比如你去網吧上網,是按照時間計費的,這個時間能夠理解爲指令週期。在你還正玩着的時候,有人不當心把網線拔了,你就得中斷,你得去把網線插好繼續玩。這裏面就涉及到你得保留以前的位置,不要被別人佔了,遊戲不退出,讓你可以在處理完以後還能繼續玩。因爲你也比較喜歡玩這個遊戲,通常的事情是叫不動你的,這時候哥們叫你去打球,你就說正忙着呢,打完遊戲再去打球。這個就說明有個優先級排序,打球的優先級不如玩遊戲,因此你屏蔽掉了這個能夠干擾你的中斷,繼續你目前的操做,去玩遊戲。 
由於在CPU中也會被各類狀況打斷,能夠軟件調控的就按照規矩來了,若是是斷電什麼的,那就是不可操做的了。 
在週期這一塊有不少劃分和概念,好比機器週期,節拍週期等。不說太多,怕你繞。 
你就能夠理解爲一點,CPU對時間把控的很緊,一切按照時間步驟來。

7、FINAL

CPU部件之間傳輸數據也是依靠總線,總線擴展也不少,你能夠簡單理解爲傳輸數據。 這裏面有不少我都沒細說,細說確定扯不完,由於我一開始寫就發現,這其中都是有聯繫的,我不可能只說一部分,因此基本就把計算機組成原理都說了一下,CPU是計算機的核心,CPU是怎麼工做的,詳細內容仍是來自《計算機組成原理》。 我回顧了一下,我貌似就是把這本教材極致簡化了,不少都是一筆帶過,不過能夠做爲非計算機專業同窗去初步瞭解CPU的文章。

相關文章
相關標籤/搜索