CN1334936A - 为不同的指令集结构所编写的固件之间进行通信的方法 - Google Patents

为不同的指令集结构所编写的固件之间进行通信的方法 Download PDF

Info

Publication number
CN1334936A
CN1334936A CN99815938A CN99815938A CN1334936A CN 1334936 A CN1334936 A CN 1334936A CN 99815938 A CN99815938 A CN 99815938A CN 99815938 A CN99815938 A CN 99815938A CN 1334936 A CN1334936 A CN 1334936A
Authority
CN
China
Prior art keywords
data structure
routine
firmware
firmware module
isa
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN99815938A
Other languages
English (en)
Other versions
CN1258702C (zh
Inventor
S·达塔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN1334936A publication Critical patent/CN1334936A/zh
Application granted granted Critical
Publication of CN1258702C publication Critical patent/CN1258702C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping

Abstract

一种固件系统(204,208)包括分别为本机和传统的指令集结构(ISA)编写的传统固件模块(204)和本机固件模块。数据结构(234)与传统固件模块相关,以便通过第一分配器(220)对一个或者是多个传统程序进行访问。本机固件模块包括一个序言程序(250)。序言程序对与传统固件模块相关的数据结构进行定位,并对其进行初始化,提供在第一和第二固件模块之间的链接。

Description

为不同的指令集结构所编写的固件之间进行通信的方法
发明背景
技术领域
本发明涉及固件,特别是在为不同指令集结构编写的固件之间的通信的系统和方法。
背景技术
固件是指存储在诸如只读存储器(ROM),闪存储器等非易失型存储器结构之中的处理器例程。这些存储器结构保存了存储于其中的代码,即使在断电的时候也是如此。固件所使用的原则之一就是当计算机从断电状态中启动,在检验和配置易失型存储器的结构之前,提供控制计算机系统的例程。将计算机从断电状态带入到操作状态的进程叫做自举。固件程序也可以应用于根据不同的硬件事件,对计算机系统进行重新初始化或者是重新配置,并处理一些诸如系统中断的平台水平的事件。
自举过程通常始于计算机系统中的处理器,然后向外进行到系统水平的资源。首先,每一个处理器检验它自己的内部部件和接口。在多处理器系统中,通常选择单个自举处理器(BSP)来处理整个系统的初始化程序。这些程序包括检验存储器的完整性,对计算机系统中的其它资源进行确认和初始化,把操作系统加载到存储器中,以及对剩下的处理器进行初始化。由于诸如高速缓冲存储器和随机存取存储器(RAM)之类的易失型存储器结构在启动进程之前都是不够可靠的,因此处理器会为在非易失型存储器中的各种自举过程执行一些早期的固件例程。
在通常情况之下,固件是以汇编语言编写的。汇编语言是一种低级计算机语言,它提供对处理器硬件的直接访问,因此,汇编语言与处理器结构紧密相关。处理器结构在剩下的平台上反映,部分原因就是由于用于对平台水平的资源进行初始化,配置并为其服务的汇编语言。举例来说,平台资源可以通过指定的寄存器和/或者由指令集结构(ISA)定义的存储器位置进行数据的传输,平台水平的中断可以通过引用特定的处理器寄存器来解决。这样,平台水平的资源的初始化和配置就都与基础处理器的ISA有联系。在汇编水平的固件和ISA之间的联系也就意味着如果没有大量的重写的话,固件就不能够转换成不同的ISA固件。
固件特定于ISA的特性对于那些支持一个以上的ISA的处理器来说意义重大。举例来说,MercedTM处理器是由Santa Clare,California的Intel公司设计用于执行Intel结构64位的一系列ISA(IA-64)处理器的第一个。这些IA-64处理器还包括用于执行在Intel结构32位编码的ISA(IA-32)中的程序的资源。当MercedTM处理器以及它的支持IA-32指令的时候,它们就不是IA-32处理器了。与其它因素一起,它们的寄存器结构,存储器寻址方案和总线反映的是它们本机的IA-64结构而不是传统的IA-32结构。
IA-64平台是新建的平台,因此,专门为IA-64平台设计的资源相对来说也较少。但在另一方面,IA-32平台可用的资源则非常的多,这其中包括海量存储媒体控制器,键盘,鼠标,监视器,外围设备以及支持它们的IA-32固件。并且还有大量的资金投入在IA-32固件中,以开发诸如高级配置和能源管理接口(ACPI),有线管理(WFM)等更新的技术。此外,还可以应用压缩技术大幅度地减少用于存储IA-32固件的空间。一般而言,使用IA-32固件,1兆字节(“Mbyte”)的固件代码可以被压缩到大约512千字节(Kbytes)。对这些在IA-64平台上的传统资源和技术的支持使得开发商可以保存他们用于IA-32平台上的资金投入,并可以缩短为IA-64系统开拓市场的时间。
支持在新处理器结构(IA-64)上的传统固件是一项相对复杂的任务。举例来说,除了在寄存器尺寸和可寻址存储器方面存在的明显差异之外,在IA-32 ISA当中还有多个没有出现在IA-64 ISA中的寻址模式。IA-32使用一种称为保护模式的模式,这种模式可以把可寻址存储器的尺寸从1兆字节增加到40千兆字节。本发明解决与在不同本机环境中支持传统固件的问题以及其它问题。
发明概述
本发明提供了支持基于不同ISA的固件模块之间通信的系统和方法。
根据本发明,系统包括一个为传统ISA编写的第一固件模块和一个为本机ISA编写的第二固件模块。数据结构与第一固件模块相关,以提供通过第一分配器对一个或者是多个传统例程的访问。第二固件模块则包括一个序言程序,该序言程序对与第一固件模块相关的数据结构进行定位并将其初始化,以提供在第一固件模块和第二固件模块之间的链接。
附图简述
参考以下附图有助于理解本发明,在下列附图中,相同的标号表示相同的部件。这些附图表示出本发明的实施方案,同时它也并没有限制发明的范围。
图1是计算机系统的方框块,该系统包括根据本发明的固件系统。
图2是存储在图1非易失型存储器中的固件系统的方框块。
图3是表示引导资源方法的流程图,引导资源是用于在为第二指令集结构所设计的平台之上执行第一指令集结构的平台。
图4是表示分别为第一指令集结构和第二指令集结构所编写的软件模块之间的通信方法的流程图。
发明详述
接下来的说明会详细介绍本发明中的各个细节,以便让读者对本发明有全面透彻的了解。但是,由于本公开,本领域普通技术人员可以理解,本发明即使不依赖于这些特定细节也一样可以执行。此外,为了着重介绍本发明的特性,这里并没有对一些公知的方法,程序,部件和线路进行的详细介绍。
图1是一个适用于执行本发明的计算机系统100的方框图。计算机系统100的公开的实施方案包括一个或者是多个处理器110(1)-110(n)(总体为处理器110),这些处理器通过一条处理器总线120连接到系统逻辑电路130上。系统存储器140通过总线150连接到系统逻辑线路120上。非易失型存储器170和一个或者是多个外围设备180(1)-180(j)(总体为设备180)通过外围总线160连接到系统逻辑线路130上。举例来说,外围总线160表示一个或者是多个外围部件相互连接(PCI)总线,工业标准结构(ISA)总线,扩展ISA(EISA)总线,以及兼容的外围总线。非易失型存储器170可以是诸如只读存储器(ROM)或者是闪存储器之类的静态存储器设备。外围设备180则包括诸如键盘,鼠标或者是其它的定点设备,硬盘驱动器和和数字化视频光盘(DVD)之类的海量存储设备,显示器等等。这些设备和系统逻辑总线130共同定义了系统100的计算机平台。
对于系统100的公开实施方案,处理器110既可以执行第一指令集结构(ISA),例如IA-2,也可以执行第二ISA,例如IA-64。正如前面所提到的那样,IA-32已经投入广泛使用,并且还有一个重要的基础设备可以支持基于IA-32的平台。这个基础设备包括大量的外围设备180,以及引导,配置和支持这些设备所需要的基础的输入输出系统(BIOS或者是固件)。在另一方面,IA-64则是相对来说较新的平台,因此基础设备的支持就相对较少。
本发明提供了支持传统资源的装置,例如在比方说是IA-64的不同平台上,为IA-32平台开发的资源。对于一个实施方案来说,非易失型存储器170存储了一个混合固件系统,该系统包括分别为传统平台编写的第一模块和为本机平台编写的第二模块。还有一个允许在第一模块和第二模块之间进行通信的机制。
图2是固件系统200的扩展的方框图,它包括第一固件模块(FW1)204和第二固件模块(FW2)208。FW1204的公开实施方案包括一个或者是多个例程210,分配器220和数据结构230。数据结构230由一个标识符块240标识,该标识符块使FW2 208可以对数据结构230进行确认和验证。
例程210提供对传统平台相关资源的固件水平支持。举例来说,例程210可以包括IA-32代码序列,这些代码序列可以对键盘,输入设备,视频显示器或者是其它为IA-32平台开发的类似设备进行初始化和配置。例程210也可以包括处理平台水平的中断的过程以及执行诸如ACPI,WFM之类的更新的计算机技术的过程。
对于固件系统200的实施方案,与FW1 204相关的调用表242可以用于把指针244存储到各个不同的例程210中。每一个指针244都被指定一个索引,通过该索引,就可以对指针(以及与它有关的例程210)进行访问了。举例来说,分配器220可能会接收到来自于FW2 208的索引输入,并使用这个包括在内的索引通过调用表242对一个例程210进行访问。
数据结构230包括多个存储位置234,这些存储位置可以用于指向固件系统200的各个不同部件。这条信息允许来自于一个固件模块的例程对另一个固件模块的例程进行访问。对于公开实施方案,位置234是用于把指针存储到分配器220(DISPI),在FW1 204中的返回地址(RADD1),共享存储器位置278(SH_DATA),在FW2中的分配器260(DISP2)和在FW2 208中的返回地址(RADD2)。在FW2 208第一次对数据结构230进行访问的时候,它会提供DISP2,SH_DATA和RADD2的初始值。对于公开实施方案,共享存储器位置278是与FW2 208相关的,但是它既可以由FW1 204定义,也可以由FW2 208来定义。
由于分配器220的相对位置在建立时间中就可以取用,因此,当数据结构230被编译并建立进入FW1 204的时候,DISP1就会被设置。在FW1 204中的例程210对在FW2 208中的程序进行访问的时候,RADD1就会被设置。在FW2 208执行后,控制返回RADD1指向的固件模块204中的位置。同样地,当FW2 208中的例程对FW1 204中的一个程序进行访问的时候,RADD2就会被设置。在FW1 204执行之后,控制返回RADD2指向的FW2 208中的位置。SH_DATA是指向在定义块278中的共享存储器位置的指针。当数据结构被复制到系统存储器140,存储器被分配给SH_DATA的时候,SH_DATA的值就可以被设置。共享存储器位置是当固件块中的一个特别过程调用另一个固件块的过程的时候,用于存储输入参数和输出参数的。
标识符块240与数据结构230相关,它包括允许FW2 208对数据结构230进行定位和验证的信息。标识符块240的实施方案包括一个确认字符串(ID_STRING),一个尺寸大小参数(DS_SIZE),一个校验和值(CHK_SUM)。ID_STRING是FW1 204可以被浏览的字符串。DS_SIZE表示数据结构230的尺寸大小,CHK_SUM是从数据结构230派生出来的值。FW2 208可以通过处理在标识符块240之后的DS_SIZE的数据大小来确定一个值。把这个值与CHK_SUM作比较会显示出在数据结构230的传输或者是存储过程中是否产生任何错误。
FW2 208包括序言程序250,分配器260和例程270。FW2 208的公开实施方案还定义一个共享存储器位置278。例程270提供对与第二ISA相关的平台基础设备的固件支持。举例来说,例程270可能包括对处理器(一个或者是多个)110,系统逻辑线路130,系统存储器以及其它在本机的IA-64环境中运行的资源进行初始化和配置的IA-64代码序列。分配器260提供对程序270的访问。FW2 208的实施方案使用与FW1 204所使用的调用表类似的调用表274对分配器260进行调用。
对于本发明的公开实施方案,在启动和重新启动的状态之下,序言程序250调整对系统100进行初始化和配置的程序。举例来说,在完成处理器水平的初始化和检验过程之后,序言程序250就可以建立一个对FW1 204的传输链接。这可以通过浏览FW1 204的标识符块240和处理它对数据结构230进行定位和验证来完成。数据结构230的位置被存储以备以后引用,在数据结构230中的一个或者是多个条目(DISP2,SH_DATA)都会被初始化以备后来的传输之用。
对于本发明的实施方案,FW2 208包括系统水平软件,例如系统提取层(SAL),系统提取层可以提取计算机系统100的特性,以确保可采用系统水平特性的统一集合。FW2 208也可以包括处理器提取层(PAL),处理器提取层主要应用于与IA-64平台的处理器核心进行交互。在该实施方案中,FW2 204通过FW1 204对传统固件(例如IA-32 BI0S)的访问,对传统平台进行初始化,检验和配置。FW2 208,例如SAL,模仿IA-32执行环境,传统的固件例如IA-32 BIOS就在该环境中运行。
对于本发明的实施方案,在启动运行的状态之下,FW2 208浏览在稳定的存储器170中传统FW1 204,并把其中的一部分拷贝到系统存储器140中。把传统的FW1 204加载到系统存储器140中,FW2 208就可以对数据结构230中选定的条目进行初始化,并创建传统程序210可能在其中运行的环境。从系统存储器140中运行程序也比从非易失型存储器170中运行这些程序要快得多。
接下来的讨论着重于由FW1 204和FW2 208执行的操作和过程等等。在本领域中的技术人员可以理解它实际上就是例如BSP的处理器110,该处理器通过执行在固件模块中的指令来执行这些性能。
图3是表示根据本发明的引导系统100的方法300的流程图。当监测到重新启动状态时,本机固件模块,例如FWM2,启动310在处理器(一个或者是多个)110的引导序列。这可能包括,举例来说,内置自检和处理器身份(ID)检验。对于本发明的实施方案,这些引导步骤是由PAL固件部件执行的,在这些初始步骤完成之后,PAL固件部件会把控制权转交给SAL固件部件。
本机固件模块也确定330计算机系统是否是对称多处理器系统(SMP)。如果是的话,就会选择334自举处理器(BSP)来继续这个引导进程。如果不是的话,单个处理器就是BSP。在任一种情况下,BSP都会执行本机固件对本机和/或传统的固件模块的一部分存储器340进行初始化和分配。传统固件以及与它相关的数据结构被定位在非易失型存储器170的350中。举例来说,传统固件模块可以通过固件接口表(FIT)来定位,固件接口表列举出在非易失型存储器中的固件部件地址和尺寸。数据结构可以通过浏览与数据结构相关的标识符块的传统固件模块进行定位。
对于方法300的实施方案,在本机固件模块的初始化例程,例如序言程序250,会把传统固件模块拷贝360到系统存储器中,并对相关的数据结构进行定位和验证370。然后数据结构就可以根据指向本机固件模块中的资源的一个或者是多个指针更新380。图3中所表示的事件顺序对于本发明来说并不是十分必要的。举例来说,在数据结构拷贝到主存储器中之前,数据结构会在传统固件结构中被定位和验证。在这种情况之下,当数据结构的位置被拷贝到主存储器的时候,数据结构的位置被更新。本机固件模块可以使用在数据结构中的指针信息调用在传统固件模块中的例程,以便对390传统平台资源进行初始化。这些传统例程也可以引用在本机固件模块中的例程(通过分配器260),来完成使用FW2(208)进行的不同的初始化步骤。在引导进程中被激活的传统程序可包括为IA-32平台资源建立中断表的例程,以及对这些资源进行初始化的各种例程。将要被初始化的IA-32平台资源可能包括一个直接存储器访问(DMA)控制器,键盘,鼠标,视频显示器以及PCI卡。传统的固件程序也可以执行ACPI,WFM,系统管理BIOS2.0(SMBIOS)等标准。
为了正确地执行这些和其它的IA-32程序,本机的平台,例如IA-64,会将例如IA-32的传统环境虚拟化。在上面的示例中,虚拟环境提供IA-32程序的模式转换行为,该结构的其它特性和这些例程所编写的存储器模式。举例来说,在IA-32存储器模式中,IA-32 BIOS被拷贝到低于4GB的16字节的系统存储器中的一个条目点,IA-32固件的主体被拷贝到开始于1MB的系统存储器。正如下文中描述的那样,虚拟环境复制了在IA-64环境中的IA-32BIOS的条目点和地址范围。它还处理在单一模式(大实模式Big Real Mode或者是BRM)中的IA-32BIOS所寻址的所有存储器范围,而只对传统代码做一些微小的调整。
对于本发明的实施方案,本机固件的条目点被定位在低于4GB的系统存储器中。条目点提供对本机固件模块的访问,这样就可以把传统的固件(IA-32BIOS)拷贝到在1MB到1MB-128KB的存储器位置中。这在系统被自举,固件被映射到系统存储器中的时候会发生。然后,当由传统的资源生成的中断或者是硬件事件发生的时候,控制权就被传输到本机固件中。然后本机固件使用传统的固件分配器(由数据结构指向它)来访问正确的传统例程。
在传统例程中的模式转换行为可以通过从传统固件中删除转换函数来完成。在传统环境中,模式转换函数必须让调用优先于高于1MB的存储器地址,它只能在保护代码中进行处理。从传统固件中删除这些函数消除了模式转换行为,但是却留下后来的调用对保护模式地址中的数据进行访问。因为本机固件在调用任何传统固件程序之前就建立了BRM,高于1MB的地址就会被正确地访问而无需进行任何模式的转换。
图4是表示用于例如数据结构230的数据结构的方法400的实施方案的流程图,数据结构230作为在本机和传统的固件模块之间的传输链接。假想固件模块(或者是它的部分)已经被拷贝到系统存储器中,数据结构已经被初始化以指明它们分配器的位置,例如分别是本机和传统固件模块的分配器260和220。
当监测到410中断,处理器控制跳到420本机固件模块(FW2)的时候,方法400被初始化。这会在公开处理器基础结构之下自动发生,因此在中断事件发生时将控制交给本机代码。FW2用返回地址更新430数据结构,这样当中断处理器完成任务之后,控制权就可以返还到FW2的正确位置中。FW2通过使用在数据结构中指定的传统的分配器地址和与中断信号有关的索引,还生成440索引调用。中断硬件可以识别中断源。传统的分配器地址可以由FW2来存储,或者是从数据结构中在运行时(on the fly)读取。在任一种情况之下,被索引调用访问450在由索引确定的FW1中的传统例程(中断处理器)。对于实施方案,传统分配器使用调用表来确定与索引有关的处理器。
传统程序处理460由本机代码所提供的虚拟化传统代码中的中断。当中断处理完成时,使用在链接数据结构中指定的返回地址,把控制权返还470到本机固件中。在中断完成480时,本机固件就可以把任何状态变化映射到本机模式中断资源中。
当操作系统加载器程序请求固件进行传统固件的调用,以及当硬件中断信号发生的时候,也可以使用上面提到的结构。以下提到的该结构的变体也可以应用于处理选定的硬件中断。举例来说,选定的硬件中断信号可以通过传统中断信号向量表来处理。这个向量表位于由地址位置所指定的结构中,这样就不再需要通过上面描述的数据结构对其进行访问。当硬件中断发生的时候,处理器控制权会回复到本机代码(IA-64)中,本机固件会确定中断信号处理器是否是传统的中断程序。如果是这样的话,本机固件模块使用建立的传统地址位置对传统中断信号向量进行读取,以便确定传统中断信号例程的地址。本机固件在调整了指向IA-32不合法指令的返还堆栈指针之后,把CPU直接发送到传统服务例程。不合法的指令可能由本机固件模块放置在传统固件模块中。传统处理器执行了之后,就会遇到不合法的指令,然后会生成自发错误从而把控制权返还到本机代码。第二种方法是不可以用于访问嵌入在代码中的传统固件例程。对这些例程进行定位需要上面提到的数据结构的资源。
本发明所提供的系统和方法允许为第一指令集结构所编写的例程由为第二指令集结构所编写的程序来实现。这些程序最初在第一和第二固件模块中实施。第一固件模块包括指定第一分配器的指针的数据结构。第一分配器提供对第一ISA所编写的一套例程的访问权。第二固件模块则包括把数据结构定位在第一固件程序的序言程序,用第二指针更新数据结构,并把这两个模块的部分拷贝到动态的存储器结构中。第二指针提供对为第二ISA编写的第二套例程的访问。
这里参考特定实施方案描述了本发明。本领域中的技术人员在公开的教导下可以理解这些实施方案可以用不同的方式来修改,而不背离本发明的宗旨。举例来说,当公开的实施方案指向IA-32和IA-64ISA的时候,本发明也可以应用于其它的ISA。同样地,这里还介绍了本发明支持传统平台资源的固件。但是,它可能应用于为在其它媒体上的其它目的所提供的代码,在这些媒体上,不同的ISA之间进行的编译原本是非常昂贵的。这里所提供的特定示例可以更好地说明本发明的各种特性,本发明由附加权利要求限定。

Claims (23)

1.一种系统,包括:
包含一个或者多个为第一指令集结构(ISA)所编写的例程的第一固件模块,可以通过第一分配器进行访问的该例程;
与第一固件模块相关的数据结构,该数据结构包括第一条目,把指针存储到第一分配器中;以及
包含为第二ISA所编写的序言程序的第二固件模块,用于对数据结构进行定位并使用第一分配器对在第一固件模块的例程进行访问。
2.权利要求1的系统,其中数据结构包括签名代码,标识数据结构到第二固件模块中。
3.权利要求1的系统,其中数据结构包括第二条目,把指针存储到与第二固件有关的分配器。
4.权利要求3的系统,其中第二固件模块包括在第二ISA中的一个或者多个例程,一个或者多个例程通过相关的分配器是可访问的。
5.权利要求1的系统,其中第二固件模块包括一个或者多个在第二ISA中的例程和在第二固件模块中被定义的共享存储器区域,容纳来自于第一和第二指令集中的一个或者是多个例程的数据。
6.权利要求1的系统,其中第二固件模块中的序言程序把第一固件模块的一部分拷贝到在随意访问存储器中的一个位置中,存储与数据结构有关的位置,并用第二固件模块的分配器地址更新数据结构的第二条目。
7.处理器系统包括:
处理器;
系统存储器,以及
非易失型存储器,该存储器中存储有:
包含在可以通过数据结构来访问的第一指令集结构(ISA)中的数据结构和例程,例程提供对在系统中的传统资源的访问;和
第二固件模块包括一个序言例程,用于标识第一固件模块中的数据结构,并访问第一套例程。
8.权利要求7的系统,其中第二固件模块还包括在第二ISA中的例程以便对系统之中的资源进行访问。
9.权利要求8的系统,其中序言例程把第一固件模块的部分拷贝进入系统存储器,并对更新数据结构以便为第一固件模块提供对第二ISA中的例程的访问。
10.权利要求7的系统,其中第二固件模块包括一个引导例程,当系统引导时,该引导例程为第一固件模块生成一个操作环境。
11.权利要求10的系统,其中第一ISA包括第一和第二操作模式,和其中由第二固件模块生成的操作系统将ISA的第一和第二操作模式虚拟化。
12.一种用于在分别被写入第一和第二指令集的第一和第二固件例程之间进行通信的方法,该方法包括:
把数据结构与第一固件程序联系起来,数据结构包括一个条目,通过该条目可以访问在第一固件模块中的例程;
分配一个签名代码,以标识数据结构;和
提供带有序言函数的第二固件例程,用于定位数据结构,并用第二固件模块的指针信息更新数据结构。
13.权利要求12的方法,指针信息为第一固件模块提供对在第二固件模块中的例程的访问。
14.权利要求12的方法,还包括使用序言函数,把第一和第二固件模块的部分拷贝到动态存储器结构中。
15.一种在实现第二ISA的平台上实现为第一指令集结构(ISA)所编写的传统例程的方法,该方法包括:
定全与传统例程相关的数据结构;
把第二ISA所编写的例程的返回地址存储到数据结构中;以及
通过由数据结构标识的分配器调用选定的传统例程。
16.权利要求15的方法,其中定位数据结构包括:
对为第二ISA所编写的引导例程进行初始化;
浏览为第一ISA所编写的引导例程中的数据结构,引导例程包括传统程序;和
记录数据结构的位置。
17.权利要求15的方法,其中调用选定的程序包括把被索引调用生成到确认的分配器中,被索引调用则包括标识选定程序的指针的索引。
18.权利要求15的方法,还包括当选定的传统程序完成时,使用存储的返回地址,返还控制给为第二ISA所编写的例程。
19.权利要求15的方法,还包括执行选定的传统程序。
20.权利要求19的方法,执行选定的传统程序包括:
在数据结构中存储与选定传统程序有关的返回地址;
通过在数据结构中由本机引导例程指定的第二分配器,访问本机程序;以及
在本机程序完成时,通过存储的返回地址,返回到选定的传统程序。
21.一种机器可读媒体,其中存储在本机ISA中的并可由处理器执行的指令实现一种方法包括:
浏览写在传统ISA中的代码块,以定位数据结构;
确定在数据结构中指定的分配器的位置,分配器的位置提供对多传统程序的访问;和
把返回地址写入数据结构之中,返回地址指本机ISA中的指令块位置的返回地址;和
通过分配器对多个传统程序的选定例程进行访问。
22.权利要求21的机器可读媒体,浏览代码块包括:
使用固件标识表对代码块进行定位;和
在已定位的代码块中浏览与数据结构相关的定位器块。
23.权利要求22的机器可读媒体,其中浏览已定位的代码块包括:
把已定位的代码块的一部分拷贝到系统存储器中;和
在拷贝部分中浏览定位器块。
CNB998159387A 1998-11-30 1999-11-04 为不同的指令集结构所编写的固件之间进行通信的方法 Expired - Fee Related CN1258702C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/201,350 1998-11-30
US09/201,350 US6081890A (en) 1998-11-30 1998-11-30 Method of communication between firmware written for different instruction set architectures

Publications (2)

Publication Number Publication Date
CN1334936A true CN1334936A (zh) 2002-02-06
CN1258702C CN1258702C (zh) 2006-06-07

Family

ID=22745489

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB998159387A Expired - Fee Related CN1258702C (zh) 1998-11-30 1999-11-04 为不同的指令集结构所编写的固件之间进行通信的方法

Country Status (6)

Country Link
US (1) US6081890A (zh)
CN (1) CN1258702C (zh)
AU (1) AU1344000A (zh)
DE (1) DE19983768B4 (zh)
GB (1) GB2359166B (zh)
WO (1) WO2000033170A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1312577C (zh) * 2003-05-07 2007-04-25 中兴通讯股份有限公司 一种实现通信过程零拷贝消息队列的方法

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6272453B1 (en) * 1998-01-05 2001-08-07 Trw Inc. Concurrent legacy and native code execution techniques
US6381693B2 (en) * 1998-12-31 2002-04-30 Intel Corp. Arrangements having firmware support for different processor types
US6401201B2 (en) * 1998-12-31 2002-06-04 Intel Corporation Arrangements offering firmware support for different input/output (I/O) types
US6954923B1 (en) 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US8065504B2 (en) 1999-01-28 2011-11-22 Ati International Srl Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor
US7111290B1 (en) 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US6763452B1 (en) 1999-01-28 2004-07-13 Ati International Srl Modifying program execution based on profiling
US8074055B1 (en) 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US6779107B1 (en) 1999-05-28 2004-08-17 Ati International Srl Computer execution by opportunistic adaptation
US6754828B1 (en) * 1999-07-13 2004-06-22 Intel Corporation Algorithm for non-volatile memory updates
US6272630B1 (en) * 1999-12-14 2001-08-07 Winbond Electronics Corporation Method and device for reserving wake-up functions of computer system after power loss
US6601163B1 (en) * 2000-05-08 2003-07-29 International Business Machines Corporation Method and system for executing adapter configuration routines utilizing different operating modes
US6968469B1 (en) 2000-06-16 2005-11-22 Transmeta Corporation System and method for preserving internal processor context when the processor is powered down and restoring the internal processor context when processor is restored
US20050114639A1 (en) * 2001-05-11 2005-05-26 Zimmer Vincent J. Hardened extensible firmware framework to support system management mode operations using 64-bit extended memory mode processors
US6961848B2 (en) 2001-12-11 2005-11-01 Intel Corporation System and method for supporting legacy operating system booting in a legacy-free system
US20030110369A1 (en) * 2001-12-11 2003-06-12 Fish Andrew J. Firmware extensions
US7392371B2 (en) * 2001-12-20 2008-06-24 Zimmer Vincent J Method and apparatus for using a volume top file to boot firmware modules
US6920581B2 (en) * 2002-01-02 2005-07-19 Intel Corporation Method and apparatus for functional redundancy check mode recovery
US7454603B2 (en) * 2002-02-11 2008-11-18 Intel Corporation Method and system for linking firmware modules in a pre-memory execution environment
US6725324B2 (en) * 2002-04-23 2004-04-20 Hewlett-Packard Development Company, L.P. Method and apparatus for increasing flash ROM programming performance in a multiple processor computer system
US6907522B2 (en) * 2002-06-07 2005-06-14 Microsoft Corporation Use of hashing in a secure boot loader
US6976119B2 (en) * 2002-06-14 2005-12-13 Hewlett-Packard Development Company, L.P. Method and system for providing a location of a data interface
US7225427B2 (en) * 2002-06-14 2007-05-29 Hewlett-Packard Development Company, L.P. Method and device for providing computer system component data
US6986032B2 (en) * 2002-08-07 2006-01-10 Hewlett-Packard Development Company, L.P. System and method for using an operating system defined field in ACPI support multiple operating systems
US6990576B2 (en) * 2002-08-07 2006-01-24 Hewlett-Packard Development Company, L.P. System and method for using a firmware interface table to dynamically load an ACPI SSDT
US7017034B2 (en) * 2002-08-07 2006-03-21 Hewlett-Packard Development Company, L.P. System and method for using a firmware interface table to dynamically load multiple ACPI SSDT tables
US7143277B2 (en) * 2002-08-19 2006-11-28 Intel Corporation Methods and apparatus for event based console variable coherence maintenance in a pre-boot environment
US6941411B2 (en) * 2002-08-21 2005-09-06 Micron Technology, Inc. Non-contiguous address erasable blocks and command in flash memory
US7653808B2 (en) * 2002-11-27 2010-01-26 Intel Corporation Providing selectable processor abstraction layer components within one BIOS program
US20040123070A1 (en) * 2002-12-23 2004-06-24 Shidla Dale J. Automatic detection of different microprocessor architectures
US7194601B2 (en) * 2003-04-03 2007-03-20 Via-Cyrix, Inc Low-power decode circuitry and method for a processor having multiple decoders
US20040205322A1 (en) * 2003-04-10 2004-10-14 Shelor Charles F. Low-power decode circuitry for a processor
US20040267998A1 (en) * 2003-06-26 2004-12-30 Zimmer Vincent J Method to support legacy and native mode interrupts with multiplexed execution of legacy and native interrupt service
US7134007B2 (en) * 2003-06-30 2006-11-07 Intel Corporation Method for sharing firmware across heterogeneous processor architectures
US7143280B2 (en) * 2003-09-30 2006-11-28 Intel Corporation Methods and apparatus to provide conditional legacy support through a compatibility support module stored on a secure area or network
US20050188064A1 (en) * 2004-02-24 2005-08-25 Ioannis Schoinas Using a configuration mode for partition management in server platforms
US7562209B2 (en) * 2004-04-07 2009-07-14 Marvell International, Ltd. Supporting different instruction set architectures during run time
US7434201B2 (en) * 2004-06-21 2008-10-07 Hewlett-Packard Development Company, L.P. Method and apparatus providing for extendable interaction between firmware and operating systems on digital devices
US7305544B2 (en) * 2004-12-10 2007-12-04 Intel Corporation Interleaved boot block to support multiple processor architectures and method of use
WO2006069493A1 (en) * 2004-12-31 2006-07-06 Intel Corporation An apparatus and method for cooperative guest firmware
US8214830B2 (en) * 2005-01-19 2012-07-03 Intel Corporation Performance in a virtualization architecture with a processor abstraction layer
US7516252B2 (en) * 2005-06-08 2009-04-07 Intel Corporation Port binding scheme to create virtual host bus adapter in a virtualized multi-operating system platform environment
US7831778B2 (en) * 2006-03-30 2010-11-09 Silicon Image, Inc. Shared nonvolatile memory architecture
US7689566B1 (en) * 2006-12-12 2010-03-30 Sun Microsystems, Inc. Method for defining non-native operating environments
US8458726B2 (en) * 2007-12-03 2013-06-04 Intel Corporation Bios routine avoidance
US7886138B2 (en) * 2007-03-16 2011-02-08 Sharp Laboratories Of America, Inc. Methods and systems for firmware access and modification
US8185886B2 (en) * 2007-06-26 2012-05-22 Intel Corporation Method and apparatus to enable dynamically activated firmware updates
JP5048526B2 (ja) * 2008-01-10 2012-10-17 株式会社日立製作所 計算機システム及びその計算機システムへのレガシーブート方法
US8219797B2 (en) * 2008-12-31 2012-07-10 Intel Corporation Method and system to facilitate configuration of a hardware device in a platform
JP4803275B2 (ja) * 2009-03-23 2011-10-26 日本電気株式会社 プロセッサ、サーバシステム、プロセッサ追加方法およびプロセッサ追加プログラム
US9563432B2 (en) 2013-04-19 2017-02-07 Nvidia Corporation Dynamic configuration of processing pipeline based on determined type of fetched instruction
US9495177B2 (en) * 2013-10-24 2016-11-15 Intel Corporation Techniques for pre-OS image rewriting to provide cross-architecture support, security introspection, and performance optimization
US10296353B2 (en) * 2016-01-25 2019-05-21 Hewlett-Packard Development Company, L.P. Protecting basic input/output (BIOS) code

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2253430A5 (zh) * 1973-11-30 1975-06-27 Honeywell Bull Soc Ind
US3891974A (en) * 1973-12-17 1975-06-24 Honeywell Inf Systems Data processing system having emulation capability for providing wait state simulation function
US5155809A (en) * 1989-05-17 1992-10-13 International Business Machines Corp. Uncoupling a central processing unit from its associated hardware for interaction with data handling apparatus alien to the operating system controlling said unit and hardware

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1312577C (zh) * 2003-05-07 2007-04-25 中兴通讯股份有限公司 一种实现通信过程零拷贝消息队列的方法

Also Published As

Publication number Publication date
GB2359166A (en) 2001-08-15
CN1258702C (zh) 2006-06-07
DE19983768B4 (de) 2010-12-09
GB0112361D0 (en) 2001-07-11
AU1344000A (en) 2000-06-19
WO2000033170A1 (en) 2000-06-08
GB2359166B (en) 2003-05-14
DE19983768T1 (de) 2001-11-29
US6081890A (en) 2000-06-27

Similar Documents

Publication Publication Date Title
CN1258702C (zh) 为不同的指令集结构所编写的固件之间进行通信的方法
US7934209B2 (en) Method for firmware variable storage with eager compression, fail-safe extraction and restart time compression scan
US5835760A (en) Method and arrangement for providing BIOS to a host computer
US7082509B2 (en) Method and system for allocating memory during system boot to reduce operating system memory resource consumption at run-time
US7765395B2 (en) Operating system rebooting method and apparatus for continuing to execute a non-stop module even during rebooting
US9164787B2 (en) Methods and systems for running multiple operating systems in a single mobile device
US6421776B1 (en) Data processor having BIOS packing compression/decompression architecture
US5784638A (en) Computer system supporting control transfers between two architectures
US6230259B1 (en) Transparent extended state save
JPH11327916A (ja) コンパイル済コ―ドにおけるダイナミッククラス初期化チェックのコスト低減技術
CN1977243A (zh) 模拟实模式内存访问时访问扩展内存的系统和方法
WO1999030227A1 (en) Method and apparatus standardizing use of non-volatile memory within a bios-rom
CN100353320C (zh) 引导过程
WO1994027219A1 (en) Method and apparatus for patching code residing on a read only moemory device
US7996833B2 (en) Method and system for replacing instructions and instruction blocks in computer code
CN101038555A (zh) 用于对系统bios本地及远程更新及配置的独立于芯片组的方法
WO1994027220A1 (en) Method and apparatus for vectorizing the contents of a read only memory device without modifying underlying source code
US20020083278A1 (en) Method and data processing system for performing atomic multiple word writes
EP1429246A1 (en) Apparatus and method for switching mode in a computer system
US20060149940A1 (en) Implementation to save and restore processor registers on a context switch
US7293207B2 (en) Method for testing memory in a computer system utilizing a CPU with either 32-bit or 36-bit memory addressing
US6971003B1 (en) Method and apparatus for minimizing option ROM BIOS code
US6922666B2 (en) Method and data processing system for performing atomic multiple word reads
CN115994348A (zh) 程序流水线的控制方法、处理装置和存储介质
CN100476730C (zh) Pci选项rom程序的驻留和调用方法

Legal Events

Date Code Title Description
C06 Publication
C10 Entry into substantive examination
PB01 Publication
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20060607

Termination date: 20121104