精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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-02-14 15:18 ? 次閱讀

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

本文將探究什么是寄存器,寄存器的電路結(jié)構(gòu),寄存器與內(nèi)存的異同以及寄存器的慣常用法。*

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ù)總線連接,物理距離SS是所有存儲設(shè)備中最短的。

在前文中我們探究了內(nèi)存的機(jī)理,內(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 = 0;

SET = 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ù)輸出叫:讀取。

如果SET與RESET兩根線不容易記憶,那么可以使用一些邏輯門構(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(目的變址)。

二、段寄存器

80386比8086/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所代表的段基址而言的。

標(biāo)志寄存器也是對8086/80286標(biāo)志寄存器的32位擴(kuò)展,其定義如下(這張圖截自Intel關(guān)于IA32架構(gòu)的最新文檔):

圖片

其中OF、DF、IF、TF、SF、ZF、AF、PF和CF在8086中就已經(jīng)存在,請參考相關(guān)資料。

IOPL (I/O Privilege Level)是從80286開始出現(xiàn)的,占2個bit表示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ù),用于控制中斷返回指令I(lǐng)RET,當(dāng)NT=0時,用堆棧中保存的值恢復(fù)EFLAGS、CS和EIP,從而實現(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)試失敗后,強(qiáng)迫程序恢復(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)頁式管理機(jī)制使能,PG=1時頁式管理機(jī)制工作,否則不工作。

從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)注

    31

    文章

    5322

    瀏覽量

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

    關(guān)注

    68

    文章

    10826

    瀏覽量

    211160
  • 計算機(jī)
    +關(guān)注

    關(guān)注

    19

    文章

    7425

    瀏覽量

    87719
收藏 人收藏

    評論

    相關(guān)推薦

    寄存器是什么?怎么操作寄存器點亮LED燈?

    寄存器,是集成電路中非常重要的一種存儲單元,通常由觸發(fā)組成。在集成電路設(shè)計中,寄存器可分為電路
    的頭像 發(fā)表于 07-21 16:59 ?3906次閱讀
    <b class='flag-5'>寄存器</b>是什么?怎么操作<b class='flag-5'>寄存器</b>點亮LED燈?

    線性移位寄存器

    線性移位寄存器 用移位寄存器可以構(gòu)成序列信號發(fā)生,其電路結(jié)構(gòu)如下圖所示。組合電路從移位
    發(fā)表于 01-12 14:14 ?1956次閱讀
    線性移位<b class='flag-5'>寄存器</b>

    寄存器,寄存器是什么意思

    寄存器,寄存器是什么意思 寄存器定義  寄存器是中央處理內(nèi)的組成部分。寄存器是有限存貯容量
    發(fā)表于 03-08 14:26 ?2.2w次閱讀

    數(shù)據(jù)寄存器,數(shù)據(jù)寄存器是什么意思

    數(shù)據(jù)寄存器,數(shù)據(jù)寄存器是什么意思 數(shù)據(jù)寄存器數(shù)據(jù)寄存器包括累加AX、基址寄存器BX、計數(shù)
    發(fā)表于 03-08 14:38 ?1.2w次閱讀

    CC2530中常用的控制寄存器

    最全最全的CC2530常用到的控制寄存器資料,方便查找。
    發(fā)表于 05-06 16:43 ?2次下載

    寄存器與移位寄存器

    寄存器與移位寄存器:介紹寄存器原理和移位寄存器的原理及實現(xiàn)。
    發(fā)表于 05-20 11:47 ?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>)資源詳解

    移位寄存器怎么用_如何使用移位寄存器_移位寄存器的用途

    移位寄存器是一個具有移位功能的寄存器,是指寄存器中所存的代碼能夠在移位脈沖的作用下依次左移或右移。本文主要介紹了移位寄存器的用途以及移位寄存器
    發(fā)表于 12-22 15:49 ?2w次閱讀

    寄存器的特性和四大種類

    寄存器是由觸發(fā)組成的,一個觸發(fā)是一個一位寄存器。多個觸發(fā)就可以組成一個多位的寄存器。由于
    的頭像 發(fā)表于 06-19 16:44 ?1.9w次閱讀
    <b class='flag-5'>寄存器</b>的特性和四大種類

    【學(xué)習(xí)筆記】51單片機(jī)常用寄存器

    為98H,地址位為98H~9FH。SCON控制寄存器結(jié)構(gòu)SCON寄存器各位定義(1)方式0( SM0 SM1 :0 0):串行口的工作方式0為移位寄存器I/O方式,可外接移位
    發(fā)表于 11-14 16:21 ?9次下載
    【學(xué)習(xí)筆記】51單片機(jī)<b class='flag-5'>常用</b><b class='flag-5'>寄存器</b>

    IO口配置常用的8個寄存器 1.6

    IO 配置常用的 8 個寄存器: MODER、OTYPER、OSPEEDR、PUPDR、ODR、IDR 、AFRH 和 AFRL。MODER 寄存器(輸入狀態(tài)寄存器):STM32F4
    發(fā)表于 11-29 13:51 ?10次下載
    IO口配置<b class='flag-5'>常用</b>的8個<b class='flag-5'>寄存器</b> 1.6

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

    *本文將探究什么是寄存器寄存器電路結(jié)構(gòu)寄存器與內(nèi)存的異同以及寄存器
    的頭像 發(fā)表于 01-30 17:08 ?1070次閱讀
    探究<b class='flag-5'>寄存</b>機(jī)的<b class='flag-5'>電路</b><b class='flag-5'>結(jié)構(gòu)</b>以及<b class='flag-5'>慣常用法</b>

    寄存器的工作原理

    寄存器的工作原理 寄存器是CPU內(nèi)部用來存放數(shù)據(jù)的一些小型存儲區(qū)域,用來暫時存放參與運算的數(shù)據(jù)和運算結(jié)果。其實寄存器就是一種常用的時序邏輯電路
    發(fā)表于 02-20 14:02 ?8334次閱讀

    單片機(jī)工作寄存器作用 單片機(jī)常用專用寄存器

    除了通用寄存器(如累加、通用寄存器等),單片機(jī)中還會有特定功能的寄存器,如定時寄存器、中斷控
    的頭像 發(fā)表于 04-08 14:46 ?7357次閱讀

    STC15系列常用寄存器匯總

    STC15系列常用寄存器匯總
    發(fā)表于 10-21 11:18 ?6次下載