寄存器基本原理介紹(上篇)

寄存器的類型衆多,簡要闡述幾個最重要的,在此之前先來看看存儲單元和總線

存儲單元一般應具有存儲數據和讀寫數據的功能,以8位二進制作爲一個存儲單元,也就是一個字節。每個單元有一個地址,是一個整數編碼,可以表示爲二進制整數。程序中的變量和主存儲器的存儲單元相對應。變量的名字對應着存儲單元的地址,變量內容對應着單元所存儲的數據。存儲地址一般用十六進制數表示,而每一個存儲器地址中又存放着一組二進制(或十六進制)表示的數,通常稱爲該地址的內容。

存儲器被劃分爲若干個存儲單元,編號順序是從0開始,,比如一個和存儲器有100個存儲單元,那麼他的編號就是0-99。

微型儲存器的容量是以字節爲最小單位來計算的,對於擁有100的存儲單元的存儲器,他的容量是100個字節。

以上說到,存儲器被劃分爲多個存儲單元,從零開始編號,就像是一條街上的門牌號一樣,那麼CPU要讀取這些數據,就像是在這一條街裏找這個門牌號一樣,先要確定在哪裏住。

由此可見,CPU要相對數據進行讀寫,必須和芯片進行下面3類交互:

  • 存儲單元的地址(地址信息)
  • 器件的選擇,讀或者寫命令(控制信息)
  • 讀或寫的數據(數據信息)

那麼,CPU是如何讓將這些新詞傳輸到存儲器的芯片中的,這就涉及到一個概念,我們都知道,計算機能夠處理的信息都是電信號,也就是高低電平,電信號當然是由導線來傳送。在計算機中,由專門連接CPU和其他芯片的導線,我們通常稱爲總線,總線從物理的概念來講,就是一根根導線的集合。根據傳出信息的不同,總線從邏輯上講主要分爲3類:地址總線,控制總線以及數據總線。

分析上圖,三個基礎導線首先CPU通過地址線將信息發出,然後通過控制線發出內存讀寫任務,選中存儲器芯片,並命令從中讀取數據,最後通過數據線將數據送入CPU。

接下來,詳細介紹一下。

地址總線

現在,我們知道CPU是通過地址總線來指定存儲單元的,那麼可見地址總線上能傳遞多少不同的信息,就能對多少個存貯單元進行尋址。

現在假設,一個CPU有10根地址線,一根導線能傳遞的狀態只有兩種,一種是高電平,一種是低電平,就是二進制的0和1,那麼10根導線就是10位2進制數據,那麼10位進制能組成多少不同的數據呢?2的10次方個,最小爲0,最大是1023。如果一個CPU由N根地址總線,那麼可以說這個CPU的地址總線的寬度爲N,這樣的CPU最多可以尋找2的N次方個內存單元。

地址總線由微處理器產生,主要用來存儲輸入輸出接口,傳送地址信息,是一條單向總線。

上圖就是對地址總線一個簡單的概述,幫助大家理解。上圖共有5條地址線,一次傳輸五位二進制數。

數據總線

數據總線主要負責CPU與其他部件的數據傳送,數據總線的寬度決定了CPU和外界的數據傳輸速度,8根數據線一次性可傳送一個8位二進制數,也就是一根一個數據,共一個字節,16根就是傳輸兩個字節。

數據總線是一條雙向總線,CPU和其他部件的雙向傳輸信號。

8088CPU的數據總線寬度爲8,8086CPU的數據總線寬度爲16,8086的數據傳送要快一些。

控制總線

控制總線控制外部器件,控制總線只是一個總稱,其實是由一些不同的控制線集合,有多少根控制總線就意味着對外部器件有多少種控制,控制總線決定着CPU對外部器件的控制能力。

控制總線主要傳輸控制信號、時序信號和狀態信號,也是一條雙向總線。

以上簡單說了總線相關的問題,對於理解寄存器有很大幫助,接下來聊聊寄存器。寄存器是中央處理器內的組成部分,寄存器是有限存儲容量的高速存儲部件,可用來暫存指令、數據和地址。

寄存器是集成電路中非常重要的一種存儲單元,通常由觸發器組成。在集成電路設計中,寄存器可分爲電路內部使用的寄存器和充當內外部接口的寄存器這兩類。內部寄存器不能被外部電路或軟件訪問,只是爲內部電路的實現存儲功能或滿足電路的時序要求,而接口寄存器可以同時被內部電路和外部電路或軟件訪問,CPU中的寄存器就是其中一種,作爲軟硬件的接口,爲廣泛的通用編程用戶所熟知。

在計算機領域,寄存器是CPU內部的元件,包括通用寄存器、專用寄存器和控制寄存器。寄存器擁有非常高的讀寫速度,所以在寄存器之間數據傳送非常快。不同的CPU寄存器是不相同的,在此以8086CPU爲例,8086CPU一共有14個寄存器。這裏不依次介紹,先介紹最主要的。

通用寄存器

8086CPU所有的寄存器都是16位的,可以存放兩個字節。AX、BX、CX和DX這四個寄存器主要用來存放一般性數據,也稱爲通用寄存器。以AX爲例,來看下其內部結構。

上圖只是一個簡易的邏輯圖,每一個小格就是一個存儲單元,一共16個 ,編號0-15,左邊是高位,右邊低位,這四個寄存器每一個8位都可以當作獨立的寄存器來使用:

  • AX可以分爲AH和AL
  • BX可以分爲BH和BL
  • CX可以分爲CH和CL
  • DX可以分爲DH和DL

AX的低八位,也就是0到7位,構成了AL寄存器,高八位,8到15位,構成了AH寄存器,AH和 AL是可以獨立使用的8位寄存器。例如,數據1001 1100 0100 000(4E20H)是在寄存器中的數據。

寄存器AH(4EH)

寄存器AH(20H)

由此可見,在寄存器中高位存高位,當然以後會涉及到大端小端的問題,目前只需要理解高位存高位,低位存低位就可以了。

最後簡單介紹計算機中較爲常用的單位。我們大家應該都瞭解基本的換算單位,1KB=1024B,1MB=1024KB,1GB=1024MB,1TB=1024GB。在這個裏面有一個新的單位—字(word),一個字由兩個字節構成,這兩個字節稱爲這個字的高位字節和低位字節,這就能夠很好的理解通用寄存器的問題,一個通用寄存器是16位,兩個字節也就是一個字,AH就是對應的高位字節,AL也就是低位字節,這兩個字節可以劃分爲兩個獨立的數據。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章