0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

探究寄存機的電路結(jié)構(gòu)以及慣常用法

jf_78858299 ? 來源:硬件底褲酸奶蓋子 ? 作者:硬件底褲酸奶蓋子 ? 2023-01-30 17:08 ? 次閱讀

寄存器對于學(xué)習(xí)集成電路知識十分重要,不管是單片機亦或是現(xiàn)代計算機的CPU離開寄存器都無法快速的進(jìn)行操作。


1、寄存器

寄存器是處理器中用來存儲數(shù)據(jù)指令的電子元部件。例如在PC中數(shù)據(jù)由硬盤讀取到內(nèi)存,當(dāng)CPU發(fā)起請求后數(shù)據(jù)由內(nèi)存轉(zhuǎn)儲到CPU緩存中。

    CPU緩存是SRAM,位于處理器內(nèi)部,與ALU通過數(shù)據(jù)總線連接,物理距離S~S~是所有存儲設(shè)備中最短的。



    在前文中我們探究了內(nèi)存的機理,內(nèi)存由DRAM組成,每位DRAM由一個MOS管與電容構(gòu)成,而電容充電充電時間常數(shù)的大小與電路的電阻有關(guān),按照下式計算:

其中R是電阻;C是電容。

電路電阻和電容決定了DRAM響應(yīng)速度有最大極限,SRAM由觸發(fā)器組成,沒有如電容、電感類的元器件,那么我們可以通過麥克斯韋電磁學(xué)方程對導(dǎo)體中電流速度進(jìn)行定量描述。



    電流在無損耗下,SRAM速度為真空中光速,考慮到電路中的阻抗,速度遠(yuǎn)小于C。并可得出以下公式:

其中圖片為電子在阻抗電路中移動速度;Z是阻抗;分別是SRAM速度、DRAM速度;S為與ALU距離。

2、寄存器電路結(jié)構(gòu)

寄存器由觸發(fā)器與鎖存器組成,觸發(fā)器負(fù)責(zé)儲存數(shù)據(jù),鎖存器負(fù)責(zé)保持?jǐn)?shù)據(jù)。



    我們制造一個由或門構(gòu)成的反饋電路,如圖①。

        0 OR 0 = 0;經(jīng)反饋為0;

        1 OR 0 = 1;& 1 OR 0 = 1;經(jīng)反饋后為1;

        1 OR 1 = 1;經(jīng)反饋后為1;

    在此電路中一旦輸出為1不管如何改變A都無法改變輸出。此電路正好可以用作記錄1的電路。

同樣的,如果我們用與門構(gòu)建反饋電路。

        1 AND 1 =1;經(jīng)反饋后輸出1。

        0 AND 0 = 0;0 AND 1 = 0;1 AND 0 = 0;經(jīng)反饋后都為0。

    在此電路中一旦輸出為0不管如何改變A都無法改變輸出。此電路正好可以用作記錄0的電路。

此時將兩個電路以下圖方式組合起來便稱為:AND-OR鎖存器。

圖片

它有兩個輸入,SET 將輸出置1,RESET輸出置0。

        SET = 1;RESET = 1;OUTPUT = 0SET = 1;RESET = 0;OUTPUT = 1;

        SET = 0;RESET = 1;OUTPUT = 0;

        SET = 0;RESET = 0;OUTPUT = 之前數(shù)據(jù),也就說電路將數(shù)據(jù)鎖存起來了。

之所以叫“鎖存”,是因為它“鎖定”一個數(shù)據(jù)并保存狀態(tài)。將數(shù)據(jù)放入叫:寫入;數(shù)據(jù)輸出叫:讀取。

如果SETRESET兩根線不容易記憶,那么可以使用一些邏輯門構(gòu)成數(shù)據(jù)輸入與寫入使能。

將相關(guān)電路封裝起來,并使用線矩陣進(jìn)行連接就可以支持多位數(shù)據(jù)位輸入輸出。

處理器中寄存器有很多,為了方便使用,我們一般將寄存器編號、命名。名字對應(yīng)寄存器功能,寄存器編號對應(yīng)寄存器地址。

3、寄存器慣常用法

我們本次匯編學(xué)習(xí)是基于80386進(jìn)行的。

80386共提供7種類型的32位寄存器,如下:

通用寄存器(EAX、EBX、ECX、EDX、ESP、EBP、ESI、EDI)

段寄存器(CS、SS、DS、ES、FS、GS)

指令指針寄存器和標(biāo)志寄存器(EIP、EFLAGS)

系統(tǒng)表寄存器(GDTR、IDTR、LDTR、TR)

控制寄存器(CR0、CR1、CR2、CR3、CR4)

調(diào)試寄存器(DR0、DR1、DR2、DR3、DR4、DR5、DR6、DR7)

** 測試寄存器(TR6、TR7)**

一、通用寄存器

一組八個通用寄存器是對8086/80286通用寄存器的32位擴(kuò)展,其用法與在8086/80286中相似,支持8位、16位、32位操作,進(jìn)行32位操作是,寄存器名稱前面冠以“E”。

這八個寄存器的名稱如下:EAX(累加器)、EBX(基址)、ECX(計數(shù))、EDX(數(shù)據(jù))、ESP(棧指針)、EBP(基址指針)、ESI(源變址)、EDI(目的變址)。

二、段寄存器

803868086/80286增加了兩個段寄存器FS、GS。

除CS支持代碼段,SS支持堆棧段外,程序員可以利用其它的所有段寄存器支持?jǐn)?shù)據(jù)段。

每個段寄存器對應(yīng)這一個64位高速緩存器(有些資料中說有96位,但值使用其中的64位),這在8086中是沒有的(在80286中為48位),它的具體作用將另文介紹。

三、指令指針寄存器和標(biāo)志寄存器

指令寄存器EIP是對8086/80286指令指針寄存器的32位擴(kuò)展,它包含著待執(zhí)行指令的32位偏移量,該值總是相對CS所代表的段基址而言的。

**IOPL**I/O Privilege Level)是從80286開始出現(xiàn)的,占2bit表示I/O特權(quán)級,如果當(dāng)前特權(quán)級小于或等于IOPL,則可以執(zhí)行I/O操作,否則將出現(xiàn)一個保護(hù)性異常。IOPL只能由特權(quán)級為0的程序或任務(wù)來修改。

**NT**Nested Task)也是從80286開始出現(xiàn)的,表示嵌套任務(wù),用于控制中斷返回指令IRET,當(dāng)NT=0時,用堆棧中保存的值恢復(fù)EFLAGS、CSEIP,從而實現(xiàn)返回;若NT=1,則通過任務(wù)切換實現(xiàn)中斷返回。

下面的標(biāo)志位是80386以后的CPU才有的標(biāo)志。

**VM** (Virtual-8086 mode)表示虛擬8086模式,如果VM被置位且80386已出于保護(hù)模式下,則CPU切換到虛擬8086模式,此時,對段的任何操作又回到了實模式,如同在8086下運行一樣。

RF(Resume flag)表示恢復(fù)標(biāo)志(也叫重啟標(biāo)志),與調(diào)試寄存器一起用于斷點和單步操作,當(dāng)RF=1 時,下一條指令的任何調(diào)試故障將被忽略,不產(chǎn)生異常中斷。當(dāng)RF=0時,調(diào)試故障被接受,并產(chǎn)生異常中斷。用于調(diào)試失敗后,強迫程序恢復(fù)執(zhí)行,在成功執(zhí)行每條指令后,RF自動復(fù)位。

**AC** (Alignment check)表示對齊檢查。這個標(biāo)志是80486以后的CPU才有的。當(dāng)AC=1且CR0中的AM=1時,允許存儲器進(jìn)行地址對齊檢查,若發(fā)現(xiàn)地址未對齊,將產(chǎn)生異常中斷。所謂地址對齊,是指當(dāng)訪問一個字(2字節(jié)長)時,其地址必須是偶數(shù)(2的倍數(shù)),當(dāng)訪問雙字(4字節(jié)長)時,其地址必須是4的倍數(shù)。

但是只有運行在特權(quán)級3的程序才執(zhí)行地址對齊檢查,特權(quán)級0、1、2忽略該標(biāo)志。

**VIF** (Virtual interrupt flag)表示虛擬中斷標(biāo)志。以下的三個標(biāo)志是Pentium以后的CPU才有的。當(dāng)VIF=1時,可以使用虛擬中斷,當(dāng)VIF=0時不能使用虛擬中斷。該標(biāo)志要和下面的VIP和CR4中的VME配合使用。

**VIP** (Virtual interrupt pending flag)表示虛擬中斷掛起標(biāo)志。當(dāng)VIP=1時,VIF有效,VIP=0時VIF無效。

**ID** (Identification flag)表示鑒別標(biāo)志。該標(biāo)志用來只是Pentium CPU是否支持CPUID的指令。

實際上,如果不編寫操作系統(tǒng),大部分標(biāo)志可能很難得用到一次,有個印象就好了,用到了再去查不遲。

四、系統(tǒng)表寄存器

80386 中有4個系統(tǒng)表寄存器,分別是全局描述符表寄存器(GDTR)、中斷描述符表寄存器(IDTR)、局部描述符表寄存器(LDTR)、任務(wù)狀態(tài)寄存器(TR)。系統(tǒng)表寄存器用于在保護(hù)方式下,管理4 個系統(tǒng)表,由于只能在保護(hù)方式下使用,因此又稱為保護(hù)方式寄存器。有關(guān)描述附表的問題,另文介紹。

五、控制寄存器

80386的控制寄存器有4個,其中CR1保留以后使用,從Pentium開始,又增加了一個CR4,CR0的低16位包含了與80286的MSW一致的位定義,保持了和80286的兼容,同時也兼容了從80286開始的兩條指令LMSW/SMSW,其基本定義如下:

圖片

CR0中各位含義如下:

·PE (Protection Enable)保護(hù)模式允許,PE=0表示CPU工作在實模式,PE=1表示CPU工作在保護(hù)模式

·MP (Monitor Coprocessor)監(jiān)控協(xié)處理器,MP=1表示協(xié)處理器在工作,MP=0表示協(xié)處理器未工作。

·EM (Emulation)協(xié)處理器仿真,當(dāng)MP=0,EM=1時,表示正在使用軟件仿真協(xié)處理器工作。

·TS (Task Switched)任務(wù)轉(zhuǎn)換,每當(dāng)進(jìn)行任務(wù)轉(zhuǎn)換時,TS=1,任務(wù)轉(zhuǎn)換完畢,TS=0。TS=1時不允許協(xié)處理器工作。

以上4個定義從80286開始,下面的2個定義從80386開始存在

·ET (Extension Type)處理器擴(kuò)展類型,反映了所擴(kuò)展的協(xié)處理器的類型,ET=0為80287,ET=1為80387。

·PG (Paging)頁式管理機制使能,PG=1時頁式管理機制工作,否則不工作。

從80486開始又增加了如下位定義。

·NE (Numeric Error)數(shù)值異常中斷控制,NE=1時,如果運行協(xié)處理器指令發(fā)生故障,則用異常中斷處理,NE=0時,則用外部中斷處理。

·WP (Write Protect)寫保護(hù),當(dāng)WP=1時,對只讀頁面進(jìn)行寫操作會產(chǎn)生頁故障。

·AM(Alignment Mask)對齊標(biāo)志,AM=1時,允許對齊檢查,AM=0時不允許,關(guān)于對齊,在EFLAGS的AC標(biāo)志時介紹過,在80486以后的CPU中,CPU進(jìn)行對齊檢查需要滿足三個條件,AC=1、AM=1并且當(dāng)前特權(quán)級為3。

·NW (Not Write-through)和CD(Cache Disable),這兩個標(biāo)志都是用來控制CPU內(nèi)部的CACHE的,當(dāng)NW=0且CD=0時,CACHE使能,其它的組合說起來比較復(fù)雜,如果有讀者真的想搞清楚的話,可以參閱《Intel? 64 and IA-32 Architectures》中的“Software Developer’s Manual Volume 3A”這一冊,在第10章對這兩個標(biāo)志的各種組合有比較詳細(xì)的說明。

CR1保留未用;CR2存放引起頁故障的線性地址,只有在PG=1時,CR2才有效,當(dāng)頁故障處理程序被激活時,壓入頁故障處理程序堆棧中的錯誤碼提供頁故障的狀態(tài)信息

CR3的bit12--bit31存放頁目錄的基地址,因為也目錄總是頁對齊的(一頁為4K),所以頁目錄基地址從bit12開始就可以了。只有當(dāng)CR0中的PG=1時,CR3的頁目錄基地址才有效。

從80486開始,在CR3的低12位定義了兩個控制位,如下:

·PCD (Page-level Cache Disable)頁CACHE禁止,當(dāng)PCD=0時,頁目錄表進(jìn)行高速緩存,PCD=1時,不進(jìn)行高速緩存;該位控制PCD引腳控制外部CACHE工作還是不工作。

·PWT (Page-level Writes Transparent),CACHE的寫入分為透寫(Write-Through)和回寫(Write-Back),80486以上的CPU內(nèi)部的CACHE都是透寫的,但對外部CACHE而言,允許某些頁是回寫的,而另一些頁是透寫的,當(dāng)PWT=1時,外部CACHE對頁目錄進(jìn)行透寫,否則進(jìn)行回寫;此位驅(qū)動PWT引腳以控制外部CACHE是透寫還是回寫。

CR4是從Pentium CPU開始出現(xiàn)的。

·VME (Virtual-8086 Mode Extensions)虛擬8086方式擴(kuò)展,VME=1允許使用虛擬8086擴(kuò)展模式,否則只能使用80386/80486的虛擬8086模式。

·PVI (Protected-Mode Virtual Interrupts)保護(hù)模式虛擬中斷,PVI=1時,在保護(hù)模式下支持虛擬中斷標(biāo)志VIF(EFLAGS中),PVI=0則不支持虛擬中斷標(biāo)志。

·TSD (Time Stamp Disable)時間戳禁止,TSD=1時,允許在特權(quán)級為0的程序中執(zhí)行RDTSC指令(讀時間戳計數(shù)指令),TSD=0時,允許任何特權(quán)級執(zhí)行RDTSC指令。

·DE (Debugging Extensions)調(diào)試擴(kuò)展,

·PSE (Page Size Extensions)頁大小擴(kuò)展,PSE=1時,頁大小可以擴(kuò)展到2M或4M,PSE=0時,頁大小只能是4K.

·PAE (Physical Address Extension)物理地址擴(kuò)展,PAE=1時,頁物理地址可以擴(kuò)展到36bits以上,PAE=0時只能用32bits的物理地址。

·MCE (Machine-Check Enable)硬件檢查使能,Pentium以后的CPU有一種硬件檢測功能,MCE=1時允許使用該功能。

·PGE (Page Global Enable)全局頁使能,PGE=1時,允許使用全局頁,PGE=0時禁止使用全局頁。

·PCE (Performance-Monitoring Counter Enable)性能監(jiān)視計數(shù)器使能,當(dāng)PCE=1時,允許在任何保護(hù)級下執(zhí)行RDPMC指令,PCE=0時,只有特權(quán)級0的程序可以執(zhí)行RDPMC指令。

·OSFXSR (Operating System Support for FXSAVE and FXRSTOR instructions)

·OSXMMEXCPT (Operating System Support for Unmasked SIMD Floating-Point Exceptions)

·VMXE (VMX-Enable Bit)VMX使能位,VMXE=1時,允許VMX操作。

·SMXE (SMX-Enable Bit)SMX使能位,SMXE=1時,允許SMX操作。

·OSXSAVE (XSAVE and Processor Extended States-Enable Bit)

六、調(diào)試寄存器

一共有8個調(diào)試寄存器DR0--DR7,DR0-DR3可以分別設(shè)置4個斷點的線性地址,DR4-DR5保留未用,DR6是斷點狀態(tài)寄存器,DR7是斷點控制寄存器(包括斷點類型、斷點長度,斷點開放/禁止)

七、測試寄存器

一共有8個測試寄存器TR0--TR7,TR0-TR2保留,TR3-TR5用作CACHE測試,TR6為命令測試寄存器,TR7為測試數(shù)據(jù)寄存器。

參考文獻(xiàn):

1、 INTEL 80386 PROGRAMMER'S REFERENCE MANUAL 1986 (mit.edu)

2、 https://www.cnblogs.com/darknife/p/3159059.html

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 集成電路
    +關(guān)注

    關(guān)注

    5367

    文章

    11162

    瀏覽量

    358408
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5253

    瀏覽量

    119212
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10702

    瀏覽量

    209413
收藏 人收藏

    評論

    相關(guān)推薦

    Labview 事件結(jié)構(gòu)中級用法 ,用戶事件。

    Labview事件結(jié)構(gòu)中級用法,用戶事件。源代碼如下,版本是2015
    發(fā)表于 09-14 08:23

    華為NFC有哪些常用用法?

    什么是華為NFC功能?華為NFC有哪些常用用法?
    發(fā)表于 11-03 06:01

    定時器A各寄存器的用法以及功能

    ,這次將整理一些關(guān)于定時器A的,各寄存器的用法以及功能1.0 首先說一下TACTL控制寄存器先大概解釋下這幾個位的作用:Unused bits 15-10 未定義TASSELx bit
    發(fā)表于 11-29 07:41

    常用燈頭規(guī)格及用法介紹

    常用燈頭規(guī)格及用法介紹 簡述常用燈頭規(guī)格及用法介紹
    發(fā)表于 04-19 15:40 ?56次下載

    常用法蘭標(biāo)準(zhǔn)查詢

    本內(nèi)容提供了常用法蘭標(biāo)準(zhǔn)查詢的小工具,希望對大家有所幫助
    發(fā)表于 04-18 15:10 ?91次下載
    <b class='flag-5'>常用法</b>蘭標(biāo)準(zhǔn)查詢

    狀態(tài)原理及用法

    狀態(tài)原理及用法狀態(tài)原理及用法狀態(tài)原理及用法
    發(fā)表于 03-15 15:25 ?0次下載

    51寄存器的所有寄存器名稱,(包括寄存器每一位的作用及用法)資源詳解

    51寄存器的所有寄存器名稱,(包括寄存器每一位的作用及用法)資源詳解
    發(fā)表于 10-16 13:04 ?14次下載
    51<b class='flag-5'>寄存</b>器的所有<b class='flag-5'>寄存</b>器名稱,(包括<b class='flag-5'>寄存</b>器每一位的作用及<b class='flag-5'>用法</b>)資源詳解

    ADC0809用法詳解_引腳圖及功能_工作原理_內(nèi)部結(jié)構(gòu)及應(yīng)用電路

    本文主要介紹了ADC0809用法詳解_引腳圖及功能_工作原理_內(nèi)部結(jié)構(gòu)及應(yīng)用電路。ADC0809是采用CMOS工藝制造的雙列直插式單片8位A/D轉(zhuǎn)換器。A/D轉(zhuǎn)換后得到的數(shù)據(jù)應(yīng)及時傳送給單片
    發(fā)表于 12-13 09:32 ?19.2w次閱讀
    ADC0809<b class='flag-5'>用法</b>詳解_引腳圖及功能_工作原理_內(nèi)部<b class='flag-5'>結(jié)構(gòu)</b>及應(yīng)用<b class='flag-5'>電路</b>

    Java數(shù)組的常用方法_Java:數(shù)組工具類Arrays類的常用方法的用法及代碼

    本文主要詳細(xì)介紹了Java數(shù)組的常用方法以及數(shù)組工具類Arrays類的常用方法的用法及代碼。
    發(fā)表于 01-29 10:25 ?2856次閱讀

    ad623典型電路用法介紹_ad623結(jié)構(gòu)與工作原理

    本文開始介紹了ad623的相關(guān)概念和ad623工作原理,其次介紹了 ad623基本電路結(jié)構(gòu),最后對ad623典型電路用法進(jìn)行了介紹。
    發(fā)表于 04-02 16:28 ?1.9w次閱讀
    ad623典型<b class='flag-5'>電路</b><b class='flag-5'>用法</b>介紹_ad623<b class='flag-5'>結(jié)構(gòu)</b>與工作原理

    51單片常用寄存器速查表免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是51單片常用寄存器速查表免費下載。
    發(fā)表于 08-22 17:30 ?3次下載
    51單片<b class='flag-5'>機</b><b class='flag-5'>常用</b><b class='flag-5'>寄存</b>器速查表免費下載

    51單片常用的特殊功能寄存器有哪些

    本文檔的主要內(nèi)容詳細(xì)介紹的是51單片常用的特殊功能寄存器包括了:中斷,串口,定時器,電源。
    發(fā)表于 07-08 17:41 ?1次下載
    51單片<b class='flag-5'>機</b><b class='flag-5'>常用</b>的特殊功能<b class='flag-5'>寄存</b>器有哪些

    51單片的原理,指令,寄存器,以及接口

    因為本人最近在學(xué)習(xí)51單片這門課。下面的這一系列教程是www.51hei.com 專門為初學(xué)者入門而準(zhǔn)備的,從底層硬件入手基于匯編和c兩種語言,詳細(xì)的介紹了單片的原理,指令,寄存器,以及
    發(fā)表于 11-11 14:21 ?9次下載
    51單片<b class='flag-5'>機</b>的原理,指令,<b class='flag-5'>寄存</b>器,<b class='flag-5'>以及</b>接口

    STC單片常用特殊功能寄存器速查

    STC單片常用特殊功能寄存器速查(STC-SFR2-b9正式版)
    發(fā)表于 09-30 17:20 ?0次下載

    寄存器的電路結(jié)構(gòu)慣常用法

    寄存器對于學(xué)習(xí)集成電路知識十分重要,不管是單片亦或是現(xiàn)代計算機的CPU離開寄存器都無法快速的進(jìn)行操作
    的頭像 發(fā)表于 02-14 15:18 ?4102次閱讀
    <b class='flag-5'>寄存</b>器的<b class='flag-5'>電路</b><b class='flag-5'>結(jié)構(gòu)</b>與<b class='flag-5'>慣常用法</b>