你的位置:首页 > 知识课堂 > 正文

什么叫控制寄存器?

发布时间:2013-03-26

控制寄存器的简介


控制寄存器
 
在如今的迅猛发展的社会中,控制寄存器的应用也越来越广泛,控制寄存器有CR0、CR1、CR2、CR3,并且控制寄存器也就是众所周知的页目录基地址寄存器。今天我就来为大家重点的讲解CR0中协处理器控制位、CR2和CR3的区别等。

控制寄存器(CR0~CR3)用于控制和确定处理器的操作模式以及当前执行任务的特性。CR0中含有控制处理器操作模式和状态的系统控制标志;CR1保留不用;CR2含有导致页错误的线性地址;CR3中含有页目录表物理内存基地址,因此该寄存器也被称为页目录基地址寄存器PDBR(Page-Directory Base address Register)。

CR0中协处理器控制位

CR0的4个位:扩展类型位ET、任务切换位TS、仿真位EM和数学存在位MP用于控制80x86浮点(数学)协处理器的操作。有关协处理器的详细说明请参见第11章内容。CR0的ET位(标志)用于选择与协处理器进行通信所使用的协议,即指明系统中使用的是80387还是80287协处理器。EM、MP和TS位用于确定浮点指令或WAIT指令是否应该产生一个设备不存在(Device Not Available,DNA)异常。这个异常可用来仅为使用浮点运算的任务保存和恢复浮点寄存器。对于没有使用浮点运算的任务,这样做可以加快它们之间的切换操作。

(1)ET:CR0的位4是扩展类型(Extension Type)标志。当该标志为1时,表示指明系统中有80387协处理器,并使用32位协处理器协议。ET=0指明使用80287协处理器。如果仿真位EM=1,则该位将被忽略。在处理器复位操作时,ET位会被初始化指明系统中使用的协处理器类型。如果系统中有80387,则ET被设置成1,否则若有一个80287或者没有协处理器,则ET被设置成0。

(2)MP:CR0的位1是监控协处理器(Monitor coProcessor或Math Present)标志。用于控制WAIT/FWAIT指令与TS标志的交互作用。如果MP=1、TS=1,那么执行WAIT指令将产生一个设备不存在异 常;如果MP=0,则TS标志不会影响WAIT的执行。


寄存器
 
(3)EM:CR0的位2是仿真(EMulation)标志。当该位设置时,表示处理器没有内部或外部协处理器,执行协处理器指令时会引起设备不存在异常;当清除时,表示系统有协处理器。设置这个标志可以迫使所有浮点指令使用软件来模拟。

(4)TS:CR0的位3是任务已切换(Task Switched)标志。该标志用于推迟保存任务切换时的协处理器内容,直到新任务开始实际执行协处理器指令。处理器在每次任务切换时都会设置该标志,并且在执行协处理器指令时测试该标志。

如果设置了TS标志并且CR0的EM标志为0,那么在执行任何协处理器指令之前会产生一个设备不存在异常。如果设置了TS标志但没有设置CR0的MP和 EM标志,那么在执行协处理器指令WAIT/FWAIT之前不会产生设备不存在异常。如果设置了EM标志,那么TS标志对协处理器指令的执行无影响。

在任务切换时,处理器并不自动保存协处理器的上下文,而是会设置TS标志。这个标志会使得处理器在执行新任务指令流的任何时候遇到一条协处理器指令时产生 设备不存在异常。设备不存在异常的处理程序可使用CLTS指令清除TS标志,并且保存协处理器的上下文。如果任务从没有使用过协处理器,那么相应协处理器上下文就不用保存。

CR2和CR3的区别

CR2和CR3用于分页机制。CR3含有存放页目录表页面的物理地址,因此CR3也被称为PDBR。因为页目录表页面是页对齐的,所以该寄存器只有高20位是有效的。而低12位保留供更高级处理器使用,因此在往CR3中加载一个新值时低12位必须设置为0。

使用MOV指令加载CR3时具有让页高速缓冲无效的副作用。为了减少地址转换所要求的总线周期数量,最近访问的页目录和页表会被存放在处理器的页高速缓冲器件中,该缓冲器件被称为转换查找缓冲区(Translation Lookaside Buffer,TLB)。只有当TLB中不包含要求的页表项时才会使用额外的总线周期从内存中读取页表项。

即使CR0中的PG位处于复位状态(PG=0),我们也能先加载CR3。以允许对分页机制进行初始化。当切换任务时,CR3的内容也会随之改变。但是如果新任务的CR3值与原任务的一样,处理器就无需刷新页高速缓冲。这样共享页表的任务可以执行得更快。

CR2用于出现页异常时报告出错信息。在报告页异常时,处理器会把引起异常的线性地址存放在CR2中。因此操作系统中的页异常处理程序可以通过检查CR2的内容来确定线性地址空间中哪一个页面引发了异常。

控制寄存器中的程序计数器PC和控制寄存器IP的关系

程序计数器PC

是程序计数器,它是一个16位寄存器,专门用来产生和存放下一条需要执行的指令的地址。实际上它是指令地址寄存器。其寻址能力为64K字节。PC每输出一次代码,它的内容自动加1。因此,称它为程序计数器,PC在物理上是一个独立的寄存器,不属于内部数据存储器。PC每输出一次地址,就指向程序存储器的一个单元,CPU自动取出一个字节的指令代码而后执行。PC中内容一次次自动加1,指令就一条条被取出并执行。

控制寄存器IP

是中断优先级控制寄存器。用其每位的状态对应控制一种中断的优先级,高优先级或低优先级。各中断源处于哪个级别,视情由用户对IP进行赋值设定。相应位为“1”则该位所控制中断源为高优先级,该位为“0”则为低优先级。

总而言之,通过今天的讲解,相信大家对控制寄存器的了解越来越深入了,知道CR0中协处理器控制位、CR2和CR3的区别、控制寄存器中的程序计数器PC和控制寄存器IP的关系等。

相关阅读:

矩阵式变换器的电磁干扰设计

http://www.cntronics.com/emc-art/80020664

无线网络电磁干扰分析

http://www.cntronics.com/emc-art/80020665

系统设计中接地问题介绍
http://www.cntronics.com/cp-art/80020679

要采购缓冲器么,点这里了解一下价格!
特别推荐
技术文章更多>>
技术白皮书下载更多>>
热门搜索
 

关闭

 

关闭