段描述符缓冲.pdf

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
段描述符缓冲

段描述符缓冲 作者:Robert R. Collins 翻译:coly li 当你不知道一个东西是什么或者它是怎么工作的,你很可能会低估它的重要性。早在 80286 时期 ,所有的 Intel x86 处理器都包含 个叫做 “段描述符缓冲” (segment-descriptor cache)的实体,它藏在后面,让我们感觉不到。每一个一个段寄存器被加载时他都会被更新。 自从80286 之后他被所有的 Intel x86处理器的内存访问机制中所使用。如果你是一个最终 用户,你很有可能使用到了以来于段描述符缓冲功能的软件程序;如果你是 个工程师, 很有可能你就整天指望着它干活——但是从来没有认出它来。如果你是编写底层代码的工程 师,对硬件编程 ,或者在保护模式下编程,那你可能需要了解段描述符缓冲,以及它是怎 么工作的。 从 80286 到 80486,段描述符缓冲的含义是含糊不定的,取决于保存段寄存器内部表现形 式的内部处理器结构。这个表现形式包括段基址 (segment base address ),范围限制 (limit ),访问权限 (access right )。在 Pentium 中,Intel为段描述符缓冲项引入了 一个 94项、2 路的联合缓冲。因此,术语“段描述符缓冲”现在是不明确的,有两种可能的 含义。更糟的是 ,新的断描述符缓冲被从 Pentium Pro 的设计中去掉了,但是在 Pentium II 中(缺少新的段描述符缓冲的Pentium Pro 说明了它那可怜的 16位性能)有引入回来了。 这里 ,我将讨论 自从 80286 就开始存在 (并保持在所有现代的 Intel x86 处理器中 )的原 先的段描述符缓冲,和段描述符缓冲在微处理器内存管理中的角色。 加载描述符缓冲寄存器 无论在实模式、保护模式、虚拟 8086模式或者系统管理模式下,微处理都将每一个段的基地 址保存在一些隐藏的描述符缓冲寄存器中。每一个一个段寄存器被加载时,这个段的基地址, 段大小限制和段的访问属性(访问权限)都被加载(缓冲)到这些隐藏的寄存器中。为了提 高性能,之后的内存引用的访问都是通过访问这些描述符缓冲寄存器来实现的 (而不是再 次从内存中加载段寄存器)。如果没有这种优化,每一次内存访问都需要微处理器处理很多 很消耗时间的任务。在实模式下,微处理器需要根据段寄存器的数值计算物理内存地址。访 问权限总是同一个读/写数据段(甚至于代码段)关联起来。而 limit将差不多总是 64KB的 内存。在保护模式下,段必须在适当的描述符表中进行查找。段基址是由描述符表的各个域 联合起来构成的。段访问权限和段大小限制也是包含在描述符表中。对于每一次内存访问, 微处理器总是需要访问这些数据结构。而这些信息都保存在内存中,因此相比较于微处理的 速度而言,访问这些数据的速度实在是太慢了。如果没有一个内部的描述符缓冲将这些数值 缓冲起来的话,每一次内存访问将会暗中需要很多其他的内存访问。 现在考虑到实模式和保护模式下的不同。如果段描述符缓冲不存在,测定段基址、大小限制、 访问权限将需要多于一个 CPU周期去完成。因此,段描述符缓冲的存在就消除了这些根本的 差异。他的存在允许当每一个段被加载的时候,这些差异都可以被解决。对于性能的损失只 会发生一次,内存管理中总是使用保存在段描述符缓冲中的对应于各自的段寄存器的数值。 当上电时,描述符缓冲寄存器们按照缺省的固定的数值被加载——CPU处于实模式下 ,所 有的段都数据段 样被标志为可读写,包括代码段。如果按照Intel所说的,每一个在实模 式下加载段寄存器时,基地址通过段的值的 16倍得到,而访问权限和大小限制都是由固定 的“实模式兼容”数值给定的。但事实不是这样的。实际上,对于286、386 和 486, 每次段 寄存器被加载时,只有 CS描述符缓冲是按照固定值加载的。对于之后的 Intel处理器,在 实模式下无论是加载 CS或者其他任何的段寄存器,都不会改变访问权限和大小限制。从保 存在描述符缓冲寄存器们中的先前设置的属性会被继承下来。因此我们甚至可以在 80386 的 实模式下获得 个 4GB的只读数据段——但是 Intel从不承认这种操作模式 ,虽然暗中支 持它。进 步,考虑到不让已有的利用到这点的程序失效,Intel也不会将这个操作模式去 除掉。 在以下方面,保护模式同实模式是不同的:当每 次某 个段寄存器被加载时,描述符缓 冲

文档评论(0)

jgx3536 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档