====================================================================
本文用于汇总整理Intel80386对协处理器与多处理器的支持,
参考文献:
- 《INTEL 80386 programmer's reference manual 1986》
本文是系列文章《Intel80386知识总结》的一部分。
===================================================================
协处理器与多处理器都是i386提供的并行计算支持。其中协处理器提供专门领域的辅助并行处理,多处理器机制提供通用的并行计算接口。
1. 协处理器
i386可以使用80287或者80387作为协处理器,自检后,若ET位=1,则处理器正在使用协处理器80387,否则正在使用协处理器80287或者没有协处理器。
1.1 ESC指令和WAIT指令
ESC指令和WAIT指令用以控制处理器与协处理器交互。以11011开头的指令被称作ESC指令,用来向协处理器发送指令。处理器在遇到ESC指令之后会进行以下操作,然后将指令发送给协处理器:
- 检查标志位EM,确定协处理器功能是否由软件模拟。若使用软件模拟协处理器,则在此时触发7号异常,由软件介入模拟。
- 检查标志位TS,确定自上一条ESC指令始到现在,有没有发生过上下文切换。
- 检查ERROR针脚,确定上一条ESC指令有没有发生错误
WAIT指令用以同步处理器与协处理器的协作执行,当处理器遇到WAIT指令时进行如下操作:
- 检查MP(Monitor Coprocesser)标志位是否为1,若为1,则进一步检查TS标志位,若TS=1,则触发7号异常。系统软件可以借此机会,切换协处理器的上下文,来保持当前任务上下文一致。
- 等待,直到协处理器释放BUSY针脚
- 检查ERROR针脚确定是否出错,若出错则触发17号异常
1.2 协处理器异常
共包括3个:
- 7号:协处理器不可用
- 9号:协处理器段用尽
- 16号:协处理器错误
2. 多处理器
多处理器支持的题中之义主要在于多处理器并发访问内存时的同步控制。
2.1 LOCK指令
LOCK是一个指令前缀,用它可以设置处理器的LOCK针脚,LOCK指令的目标操作数所在的内存区域将被锁定,LOCK之后的指令将获得独占修改该区域的权力。LOCK指令必须被用在下列指令之前,否则将会产生undefined-opcode异常:
- Bit test and change: BTS, BTR, BTC.
- Exchange: XCHG.
- Two-operand arithmetic and logical: ADD, ADC, SUB, SBB, AND, OR, XOR.
- One-operand arithmetic and logical: INC, DEC, NOT, and NEG.
2.2 隐式的内存同步访问
在下列情形中,处理器将自动设置LOCK针脚,同步内存访问,而不需要显示的调用LOCK指令:
- 接收中断时:中断发生后,中断处理器需要把中断ID和中断源通过数据总线发送给处理器,此时处理器将会通过LOCK信号保证在此期间不会有其他数据出现在数据总线上。
- 设置TSS的Busy位时:处理器通过设置TSS的Type字段Busy位来保证任务不可重入,在设置和检查Busy的时候,处理器会自动建立LOCK信号。
- 载入段描述符时:载入段描述符到段寄存器时,处理器将通过建立LOCK信号保证在此期间段描述符不会被其他处理器修改。为了避免在修改一个段描述符时处理器对其进行载入操作,系统软件在修改段描述符前应显式的设置标志,即遵循这样三步:1)使用带LOCK的修改指令修改段描述符的access-rights byte,使其处于not-present状态;2)更新段描述符(这一步可能多次访存,在此期间使用LOCK前缀是无效的);3)使用带LOCK的修改指令修改段描述符的access-rights byte,使其再次处于present状态。
- 更新页表的Access位和Dirty位时:更新页表的Access位和Dirty位时将通过建立LOCK信号保证原子性,同时这些更新也会绕过页表缓存
- 执行XCHG指令时:XCHG是由处理器保证的原子指令,该指令的多次访存被保证有原子性。
分享到:
相关推荐
MCS9990:协处理器.pdf
处理器和协处理器 编译 调试 数学处理 性能分析
arm 协处理器的使用 协处理器的介绍
ARM协处理器 ARM协处理器知识详细讲解了ARM协处理器
OMAP-DM510:多媒体协处理器.pdf
arm协处理器指令经常让人头疼,资料也不好找。这是我自己查阅众多资料后而成的arm协处理器指令解析,比较全希望对你有所帮助。
英特尔发布全新架构英特尔至强融核协处理器.pdf
C29x:加密协处理器.pdf
该文档是介绍hbase的rowkey设计与hbase的协处理器运用,与大家分享!
网络游戏-把外部网络协处理器连接到网络处理器分组解析器.zip
使用协处理器的数据处理.pdf
协处理器是一种芯片,用于减轻系统微处理器的特定处理任务。例如,数学协处理器可以控制数字处理;图形协处理器可以处理视频绘制。例如,intel pentium 微处理器就包括内置的数学协处理器。。。
ARM协处理器及其指令,主要介绍ARM协处理器的相关指令的用法
立足于处理器体系结构的研究,结合可重构设计技术以确保密码处理的灵活性是密码协处理器研究的重要方法,其中如何提升密码协处理器的性能是至关重要的问题。基于VLIW体系结构以及可重构设计技术,设计专用指令密码协...
网络处理器高速AES协处理器设计.pdf
对arm的协处理器15有比较深入的介绍,如果相对arm cpu有深层次的理解的话,可一看看
Intel 80387SX协处理器的DataSheet,这个在网上好像并不太好找,所以上传到这里方便大家。
基于EFI和双核处理器的协处理器模型.pdf
本文章介绍了ARM协处理器CP15的使用介绍,附带一个例子。 访问CP15寄存器指令的编码格式及语法说明如下: ······ 说明: <opcode>:协处理器行为操作码,对于CP15来说,永远为0b000,否则结果未知。 <rd>...
CP15协处理器的使用方法CP15协处理器的使用方法CP15协处理器的使用方法CP15协处理器的使用方法CP15协处理器的使用方法