当前位置: 首页 > 专利查询>英特尔公司专利>正文

模拟实模式内存访问时访问扩展内存的系统和方法技术方案

技术编号:2841971 阅读:142 留言:0更新日期:2012-04-11 18:40
在某些实施例中,本发明专利技术包括一种系统和方法,该系统和方法涉及在执行设计成用于实模式内存访问的指令代码的同时切换至保护模式来访问扩展内存。在至少一个实施例中,本发明专利技术希望能在预启动过程中执行复杂的可选ROM代码,而不致破坏由BIOS或其他可选ROM使用的系统内存。也描述和主张了其他实施例。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术的实施例一般涉及计算系统,更具体地,涉及在模拟实模式内存访问的同时在保护模式下访问扩展内存。
技术介绍
尽管多年来计算机均配备了若干兆字节的随机存取存储器(RAM),但是,在实模式下,预启动附加设备可用的总内存仍然仅限于1MB的内存。这1MB的限制已成为预启动期间的负担,因为不存在从640K的基本内存区中分配内存的标准方法。在很多情况下,由一个程序分配的内存将会被另一个程序改写,因为该程序或者未察觉所使用的内存分配方法,或者程序本身存在缺陷。无法阻止一个程序改写内存中的另一个程序的数据,因为在预启动期间不存在保护机制。在实模式下,每个程序均能访问所有可用内存。某些竞争内存的程序是设备特有的可选ROM(option ROM)、基本输入/输出系统和操作系统(OS)启动加载器。为使用扩展内存,可以超越1MB限制,但这通常需要对之前运行于实模式下的程序进行较大的修改。当计算机系统启动时,BIOS取得控制权,且处理器执行于实模式。对处理器而言,实模式通常是16位模式,但由于段地址的缘故,也可以访问20位的地址。16位模式意味着可以访问16位地址。与使用不具有段的16位地址仅能访问64K内存相比,段编址(addressing)允许访问1MB内存。在实模式下,总的可用内存空间是1MB。在实模式下,传统上应用程序能使用640K的基本内存。而扩展内存或超过1MB的内存在实模式下不可用。现在参考图1,其中示出了一种在实模式下使用20位段地址和偏移来访问1MB内存的方法。段寄存器101为16位。偏移寄存器103也为16位。通过将段寄存器左移4位而将这些寄存器组合在一起,使得它成为20位数105。将偏移寄存器103加入段地址105,以生成20位的段+偏移内存引用107。一种理解这种编址方案的简单方法是,想象段寄存器105在较低端总具有不可改变的4个附加位109。因此,该段寄存器实际上是20位的,但在处理器之外,仅有16位可见。以下,根据图1中的数值加入16位偏移103。实际的20位段寄存器是1001 1101 1111 0000 0000其中,用粗体表示的0-3位在处理器之外不可见。按以下方式加入该段寄存器和偏移,以产生1MB范围内的物理地址。可见的段寄存器1001 1101 1111 0000(9DF0)有效偏移+0000 0100 0000 0000(物理(或线性)地址=1001111000110000 00000,也可以写成9DF00400)在内存中,每隔16个字节便开始新的可能段。每一个段均为64K长。这样,段之间将发生相互重叠,即加入段地址的偏移跨度将超过一个段。在内存中的实际地址内,可能存在超过4000个段+偏移的组合。换言之,各物理地址均可能处于多于一个段的范围内。图2示出了具有段地址和64K偏移的16K段地址的重叠。例如,示出了段地址0(201)、段地址1(203)和段地址2(205)。将多达64K的偏移加入段地址0,这引用了与使用段地址2引用的内存(209)重叠的内存207。这种编址方案在业内是众所周知的。保护模式使得程序可以访问超过1MB的内存。处理器可以随时切换到保护模式。上述执行软件启动至保护模式的切换。该执行软件也可以切换回实模式。至保护模式的切换通常是通过启动加载器(boot loader)在加载操作系统(OS)时执行的,这使得OS可以使用所有内存。在保护模式期间,可通过选择器和偏移的组合来访问扩展内存。在应用程序对内存的要求较高时,业内需要使预启动应用程序(如在设备特有的可选ROM上找到的那些应用程序)能使用扩展内存而非较低的1MB内存。也需要使那些原本设计成在实模式下运行的预启动应用程序在无需重写的情况下便能在保护模式下执行。附图说明通过本专利技术的以下详细描述,可以更清楚地理解本专利技术的特征和优点。图1的框图示出了使用段和偏移的实模式内存编址;图2的框图示出,段地址可能在内存中发生重叠;图3的框图示出了使用选择器寄存器、偏移和描述符表的保护模式内存编址的实施例;图4的框图示出了为期望实模式编址的应用程序使用保护模式内存编址的系统的典型实施例;图5的框图示出了使用实模式和保护模式编址访问较低的1MB内存和扩展内存的不同;以及图6的流程图示出了本文所述的、用于使用保护模式来使预启动应用程序能使用扩展内存的方法的实施例。具体实施例方式本专利技术的一个实施例是一种涉及在执行设计成用于实模式内存访问的指令代码的同时切换到保护模式来访问扩展内存的系统和方法。在至少一个实施例中,本专利技术希望在预启动过程中执行复杂的可选ROM代码,而不致破坏由BIOS或其他可选ROM使用的系统内存。说明书中提及的本专利技术的“一个实施例”或“某一实施例”意味着在本专利技术的至少一个实施例中包括了结合这些实施例所述的特定特征、结构或特性。从而,在说明书中的不同处出现的短语“在一个实施例中”不一定指同一实施例。本文所述的方法的实施例将扩展内存映射到基本内存区中的内存。这将允许现有的可选ROM使用更多的基本内存,而不至于与其他程序对基本内存的使用发生冲突,或是使它们自己的内存被其他程序改写。对于需要在整个预启动阶段维持大量数据存储空间的可选ROM而言,这种技术尤其有用。所公开方法的一个实施例将用于存储数据的扩展内存分配给预启动应用程序,其中,该预启动应用程序设计成在实模式下运行。处理器可以切换到保护模式。可以将该预启动应用程序引用的实模式内存地址转换成扩展内存地址引用,且可以使用转换后的扩展内存地址而非实模式内存地址来执行上述预启动应用程序指令。本文所述的方法的一个实施例包括在预启动过程中周期性地将处理器从实模式切换到保护模式。为避免对现有的可选ROM进行程序变更,可以使用保护模式选择器,并将上述长度限制设为小于或等于64KB,且将基址设为可用的扩展内存地址。这样,便无需与门A20接口。如以下所述,门A20控制了1MB地址的回绕(wrap around)特征,并影响了其他预启动系统(如加电自检内存管理器)。参考图3,其中示出了用于访问处于保护模式下的虚拟内存方案。在保护模式下,编址使用16位的选择器301和偏移303。选择器不同于实模式中使用的段地址,因为选择器不是地址,而是描述符表(如全局描述符表(GDT)305)的索引。GDT中的各个描述符包含用于选择器的线性基址307和长度限制309。GDT本身通常被限于64KB,且每个条目占用8个字节,这样,便为总共8192个描述符留出了空间。各个描述符的长度均为8个字节,且选择器311的底部的3个字节用作标志。例如,如果将选择器设置为8h,而偏移量为400h,则使用了GDT中的第二描述符。未使用描述符表中的处于零位置的第一位置。在该实例中,第二描述符包括基址3F00000h和长度限制0FFFFh(64K段)。由于偏移400h小于长度限制,因而将该偏移直接加到基址,以形成以下的线性地址3F00000h+400h=3F00400h。如以下进一步所述,由于不存在关于使用上述选择器的底部3个位的规定,因而,如果必须为小于16个字节的边界编址,则可使用其他方法。本专利技术的一个实施例将保护模式选择器用作伪实模式段地址。这种方法要求切换到保护模式。可以分配64KB的GDT,并将其初始化为零或使本文档来自技高网...

【技术保护点】
一种方法,包括:将用于存储数据的扩展内存分配给预启动应用程序,该预启动应用程序设计成在实模式下运行;将处理器切换至保护模式;将由所述预启动应用程序使用的实模式内存地址转换为扩展内存地址引用;以及使用所述转换后 的扩展内存地址而非所述实模式内存地址执行预启动应用程序指令。

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:DL马瑟尼
申请(专利权)人:英特尔公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利