Intel 80386

编辑
本词条由“匿名用户” 建档。
80386 是 Intel 开发的 32 位架构 x86 处理器,品牌名称为 i386(最初为 iAPX 386)作为 80286 的后继产品,生产时间为 1985 年至 2007 年 9 月。 386 设计后来在 AMD 许可下制造,处理器作为 Am386 出售; IBM 许可了 i386SX 并从中开发了改进的 IBM 386SLC。 几家公司开发了自己的兼容处理器,例如 Chips &a...

Intel 80386

编辑

80386 是 Intel 开发的 32 位架构 x86 处理器,品牌名称为 i386(最初为 iAPX 386)作为 80286 的后继产品,生产时间为 1985 年至 2007 年 9 月。 386 设计后来在 AMD 许可下制造,处理器作为 Am386 出售; IBM 许可了 i386SX 并从中开发了改进的 IBM 386SLC。 几家公司开发了自己的兼容处理器,例如 Chips & 技术、Cyrix 或 NexGen。

历史意义

编辑

借助 80386,英特尔从 x86 架构(最初是纯 16 位架构)切换到成熟的 32 位架构。 作为 i386 推出,英特尔的 32 位 x86 架构被重新命名为“英特尔架构 32 位”,简称 IA-32。 i386 的功能在直到 Core i9的所有后续型号中仍然可用,同时,IA-32 还为其他制造商提供了自己的 x86 处理器的模板。 该处理器系列的寄存器和架构的地址空间为 32 位宽。 AMD 在世纪之交开发的 64 位扩展“x86-64”也是基于 i386 架构和后来的扩展。

80386 继续用于控制任务和航空航天工业。 原因是它的计算能力完全足以完成这些任务,并且它被认为是经过全面测试的——也就是说,它已经暴露在所有可能的情况下,因此任何现有或未来的软件都不会出现不可预见的行为。 另一个原因是它的高抗辐射性。

架构

编辑

变体

该 CPU 有四种变体,它们在数据总线和应用程序方面有所不同。 作为 i386SX 嵌入式版本的 i386EX 的生产直到 2007 年才结束。

Intel386SX

80386 的一个变体是 80386SX。 它只有16位的外部数据总线和24位的地址总线,但内部保留了32位的80386微架构。 24 位地址总线将 386SX 的可寻址物理内存限制为 16 MiB; 鉴于 1990 年代初期家庭中常见的xxx 4 MiB 内存扩展,这并不是一个严重的限制,尤其是因为许多 386SX 主板也不允许 16 MiB 内存扩展。 从程序员的角度来看,除了内存限制外,386SX 与“真正的”80386 几乎没有区别,80386 推出后更名为 80386DX,以区别于它的小兄弟。 由于减少了数据总线宽度和较低的可用时钟频率,386SX 的执行速度仅比 386DX 低得多。

Intel386SL

Intel386SL 是 i386SX 的便携式计算机版本。 有了它,引入了系统管理模式(SMM),可以让CPU进入深度睡眠以节省能源

快速CAD

RapidCad 是基于 486 技术的 386 系统升级。 RapidCad由RapidCad1和RapidCad2两个芯片组成,前者取代了80386 CPU,后者取代了80387协处理器。 然而,RapidCad2 绝不包含协处理器的电子元件,而只包含用于生成外部总线信号的逻辑。 实际的协处理器已经集成在 RapidCad1 中。

与带有 i387 协处理器的 i386 系统相比,RapidCad 带来了约 30% 的适度性能提升,具体取决于应用程序; 但是,性能达不到配备 80486 处理器的系统。 除了高昂的价格之外,这种情况还导致 RapidCad 没有被广泛使用,这就是为什么这两款芯片如今成为抢手的收藏品。

细分

80386 可以直接寻址多达 4 GiB 的主内存(386SX:16 MiB)。 逻辑地址空间为 2 字节 = 64 TiB,理论上只能完整使用。在保护模式下,处理器使用带 16 位宽选择器的分段内存寻址,并且 - 根据操作模式 - 16 或 32-位宽偏移量。

与 80286 一样,分段单元支持四种特权级别,用于以下任务:

  • Ring 0 - 用于内核设备驱动程序
  • Ring 1 - 很少用于不需要不受限制的硬件访问的驱动程序(例如文件系统驱动程序)
  • Ring 2 - 用于系统服务
  • Ring 3 - 用于运行普通应用程序

很少有 PC 操作系统利用这四个特权级别。 通常仅使用环 0和环 3。

在安全性方面,保护模式明显优于现在已经确立的平面寻址模式。 尽管如此,几乎所有用于应用程序的较新的 PC 操作系统都专门使用“平面内存”模型。 这简化了编程,并且可以转移到没有分段单元的其他处理器架构。

在硬件方面也可以并行使用分段和分页。 线性地址首先通过分段计算,然后通过分页转换为物理地址。 在没有分页的情况下,线性地址与物理地址相同。

使用所谓的“平面内存”模型,其中数据、代码和堆栈段被映射到应用程序的线性 4 GiB 地址空间,应用程序中的内存可通过简单的 32 位偏移量寻址。 这破坏了分段单元提供的内存保护。 在 AMD 在 64 位 x86 处理器中引入的长模式中,没有计划扩展分段,因此 x64 只能使用“平面内存”模型。

分页单元只允许相对简单的基于页面的内存保护。 现在正在尝试使用 NX-Bit(来自 Athlon 64)或 SMEP 等新硬件扩展来解决与“平面内存”模型相关的安全漏洞。

分页

一个额外的级别现在用于管理,它使用 4 KiB 内存页面。 所有页的基地址都记录在页表中。 这些存储在具有 1024 个条目的页目录中。 因此,一个 4 GiB 地址空间被分成 1024 × 1024 个 4 KiB 页。 因此,32位线性地址可以分解为三部分:

  • 12 位 - 内存页中的偏移量
  • 10 位 - 页表索引
  • 10 位 - 页目录索引

页面级别有两个权限级别:

  • 管理员模式 - 用于操作系统和驱动程序
  • 用户模式——用于应用程序

段特权等价物在括号中给出。

注册

它有八个 32 位寄存器。 尽管这些寄存器中的七个有时在与各种指令相关的情况下有特殊用途,但它们可以自由地用于算术和一般数据交换

还有其他寄存器用于控制 CPU 的行为:

所有通用寄存器,以及 EIP 和 EFLAGS,都是前身 8086 到 80286 对应的 16 位寄存器的 32 位扩展版本。

Intel 80386

处理器错误

编辑

POPA/POPAD 错误

错误发生在所有 386 上。 如果 POPA 或 POPAD 指令后面紧跟着一条从基址寄存器和变址寄存器计算内存地址的指令,则 EAX 寄存器中的值将是未定义的。 如果 EAX 被用作内存访问的基址或变址寄存器,则处理器挂起。

检查TSS的边界

处理器检查输入的任务状态段 (TSS) 大小是否足够大。 只要 TSS 小于 101 字节,就会抛出异常 10,但实际上应该在小于 103 字节时抛出。

内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/376332/

(10)
词条目录
  1. Intel 80386
  2. 历史意义
  3. 架构
  4. 变体
  5. 细分
  6. 分页
  7. 注册
  8. 处理器错误
  9. POPA/POPAD 错误
  10. 检查TSS的边界

轻触这里

关闭目录

目录