微機原理知識梳理


微型計算機

理解微型計算機的工作原理才能更好的理解計算機、芯片、單片機等等的工作機理。本文從微機原理出發,整理相關知識並梳理,加深對計算機的理解。

基礎電路

計算機由集成電路構成,可以說計算機是跑在芯片上的,芯片包括CPU芯片例如Intel生產的芯片,以及外設更多的單片機芯片如ARM等,后者是將CPU和一些存儲器和外設集成在一個芯片上。所有的芯片均是由基本的門電路構成的,而門電路可以由硅單質摻雜形成的二極管和三級管構成,因此芯片通電后才能實現電平邏輯的變化。

上面大概梳理了一下不同器件的組成關系,可以看出芯片最終是由無數個門電路和相連的導線構成的,這也是為什么今天的芯片設計相關的視頻介紹中往往以P型或N型半導體的構造為起點,由PN結構成的二極管和三極管組成的門電路是這個龐大工程的起點。

邏輯電路

邏輯電路是集成電路的最小單元,由3種基本門電路組成,

  • 門電路
    • 基本門電路
      • 非門:$Y = \overline {A} $ ,或門:\(Y=A+B\),與門:\(Y=AB\)
    • 復雜邏輯電路(自行查找)
      • 或非門,與非門,異或門,異或非門,異或同門,緩沖器(\(Y=A\),阻值變小)
  • 門電路在芯片中的實現:
    • 由硅單質經摻雜腐蝕等工藝形成P型半導體N型半導體,兩者相連部分叫PN結,PN結在正向電流時可導通,反向電流時阻斷,具備單向導電性。在PN結上加入導線和封裝,則構成一個二極管,由兩個PN結構成一個三極管
    • 由於二極管的單向導電性,可以構成門電路(以與門為例):

基本運算與加法電路

  • 半加器
    • 兩個二進制數(A和B)相加,最低位會產生兩個結果,分別是和(S)和進位(C),能夠實現一個二進制位加法運算的電路即半加器,半加器可以這樣設計門電路(根據A、B相加后的運算結果):\(S=A \oplus B\),\(C=AB\)
  • 全加器
    • 將A、B、C一同運算產生S和新的進位C稱之為全加器,全加器和半加器統稱加法器,全加器相互串聯即構成了二進制數的加法運算,常見的8位、16位、32位、64位為CPU的寄存器位數,不要混淆為加法器的個數(也和總線位數有關)。
    • 現在一個CPU中含有的加法器個數非常巨大。
  • 基本運算的實現(二進制):
    • 減法:由加法計算A和B的補碼即為減法
    • 乘除法:由移位實現

基本組成電路

算數邏輯單元ALU

可進行加減法運算和邏輯運算的單元,計算機程序可以認為是程序和數據的組合,ALU即負責執行程序運算邏輯

觸發器

  • RS觸發器,S指置位,R指復位,RS觸發器可接一個時鍾CLK用於運算同步,由於RS同時為低時會使輸出無法確定,因此引入D觸發器
  • D觸發器,D端為高,表現為S置位,D端為低表現為R復位,CLK在邊沿變化時執行D觸發器動作可以做到動作一致
  • JK觸發器是RS觸發器的改進,相比RS觸發器,在RS(JK)端同時為高時Q表現為反碼,同時為低時Q表現為鎖定,JK觸發器可用用在計數器中。
  • JK觸發器在JK均為低時

寄存器

  • 一個觸發器即一位寄存器,可知32位寄存器至少含有32個觸發器
  • 寄存器包括累加器,緩存器,計數器,可以知道用於緩存數據的寄存器由多個觸發器連接而成,而每個觸發器又是由多個門電路構成。

總線結構

  • 三態輸出電路:為了能夠使用一組數據線(數據線條數取決於寄存器位數)便可以使任意兩個寄存器相連

    E A B
    0 1 高阻
    0 0 高阻
    1 1 1
    1 0 0
    • E為控制,記L為裝入門,L管理對寄存器裝入數據,E管理由寄存器的輸出。即在L打開時,寄存器可寫入數據,而此時總線上的數據即被寫入寄存器,當L關閉E打開時,總線上數據被寄存器更新。
  • 根據寄存器位數可以得到總線的位數,同時還需要總線控制字CON確定數據的流向(從A寄存器到B寄存器還是從B寄存器到A寄存器),每次控制字中只有兩位為高,其余均為低。

存儲器

  • 存儲器可以認為是一大群寄存器構成的寄存器堆,根據使用的需要分為ROM和RAM,PROM可以認為是RAM和ROM的功能均支持。
  • 數據線個數決定了每個地址有多少位數據可以取,地址線的個數決定了可以訪問多少個地址。

基本工作原理

一個簡化的微型計算機

該計算機實現一個簡單的功能,計算A和B的加減法后停止。
圖片名稱

  • 虛線框內可以認為是計算機的CPU,MAR和PROM構成存儲器,O和D構成外設,將這些電路集成到一個芯片即為單片機。

  • PROM為8位,16個單元,即16個字節

  • CON總線控制字共12位,PROM存8位的指令字,經IR通過總線W取出后取高4位為指令,低4位為地址

指令系統與程序設計

  • 假設支持5條指令,LDA:將數據送入累加器A,ADD:加法運算,SUB:減法運算,OUT輸出,HLT停機

  • 將指令與二進制操作碼對應起來:LDA:0000,ADD:0001,SUB:0010,OUT:1110,HLT:1111

  • 操作碼的定義與xx有關

  • 程序設計:

    • 將PROM前8個字節給程序,后8個字節給數據,可知這個計算機只能執行8條指令以內的操作,操作的數據只有8個字節

    • 假設執行的操作為(R9表示PROM第9個字節,RA等以此類推):

    • LDA R9
      ADD RA
      ADD RB
      ADD RC
      SUB RD
      OUT
      HLT
      
    • 翻譯為目的程序:

    • ;PROGRAM:16+20+24+28-32
      0000 1001
      0001 1010
      0001 1011
      0001 1100
      0010 1101
      1110 0000
      1111 0000
      0000 0000
      ;DATA
      0001 0000;16
      0001 0100;20
      0001 1000;24
      0001 1100;28
      0010 0000;32
      0000 0000
      0000 0000
      0000 0000
      
    • 注意,這里只是將匯編翻譯為操作碼

執行過程

假設環形計數器的位數是6位,則一個固定周期的CPU在可分為3個機器節拍的取指周期和3個節拍的執行周期,即一條指令的執行占用6個機器節拍,6個最小的時鍾。不同的CPU在指令節拍個數上有所不同

  • 取指周期:
    • PC是程序計數器,這里計數范圍為0-15,即0000-1111,上電復位時為0,PC被送入MAR時表示要取出的地址為0,即程序0000 1001,因此可以理解為程序從0地址開始執行。CON為011000000000
    • 從MAR取出的指令被送入IR,將高4位解析給CON,低4位解析為地址,CON為000110000000
    • PC加1,CON為100000000000
  • 執行周期:
    • 以LDA R9為例:LDA的操作碼為0,設計邏輯門使CON送入0時執行以下動作:
      • \(E_I=1\)將IR低4位送入總線,\(L_M=1\),MAR將總線的地址數據送給PROM,CON變為001001000000
        • 將R9放入累加器A,CON變為000100100000
        • 空拍,保持指令執行時間固定,CON為000000000000

控制部件

以LDA R9為例,LDA的操作碼被定義為0000,而將0000翻譯為CON的控制字的邏輯實現則需要指令譯碼器。譯碼器將操作碼翻譯為指令動作,在控制部件中,一個指令動作相當於一條信號線,假設一個CPU支持100條指令,則相當於操作碼需要8位,輸出100條信號線,再將這100條信號線與CON字映射起來:
圖片名稱

這個過程中,操作碼首先經過譯碼器電路翻譯出執行的指令動作信號線,指令動作與一組CON控制字對應(上面的例子中LDA對應了3條CON),控制矩陣電路將RC和指令動作組合成一系列總線控制字,實現程序執行。

計算機的功能取決於CPU部分,而CPU部分取決於控制器的功能

其他技術

  • 流水線技術:取指和執行可同時進行,采用流水線方式
  • CACHE:高速緩存,CPU在訪問存儲器前先通過CACHE進行訪問,如果指令存在則直接取走,不存在則訪問存儲器,提高了CPU訪問存儲器的速度
  • 虛擬存儲器:通過虛擬映射方式擴大可執行的范圍,當程序大於RAM時可分批從存儲器拷貝


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM