CN1258702C - 为不同的指令集结构所编写的固件之间进行通信的方法 - Google Patents
为不同的指令集结构所编写的固件之间进行通信的方法 Download PDFInfo
- Publication number
- CN1258702C CN1258702C CNB998159387A CN99815938A CN1258702C CN 1258702 C CN1258702 C CN 1258702C CN B998159387 A CNB998159387 A CN B998159387A CN 99815938 A CN99815938 A CN 99815938A CN 1258702 C CN1258702 C CN 1258702C
- Authority
- CN
- China
- Prior art keywords
- routine
- data structure
- firmware module
- firmware
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
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。FW1 204的公开实施方案包括一个或者是多个例程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 BIOS)的访问,对传统平台进行初始化,检验和配置。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,系统管理BIOS 2.0(SMBIOS)等标准。
为了正确地执行这些和其它的IA-32程序,本机的平台,例如IA-64,会将例如IA-32的传统环境虚拟化。在上面的示例中,虚拟环境提供IA-32程序的模式转换行为,该结构的其它特性和这些例程所编写的存储器模式。举例来说,在IA-32存储器模式中,IA-32 BIOS被拷贝到低于4GB的16字节的系统存储器中的一个条目点,IA-32固件的主体被拷贝到开始于1MB的系统存储器。正如下文中描述的那样,虚拟环境复制了在IA-64环境中的IA-32 BIOS的条目点和地址范围。它还处理在单一模式(大实模式Big Real Mode或者是BRM)中的IA-32 BIOS所寻址的所有存储器范围,而只对传统代码做一些微小的调整。
对于本发明的实施方案,本机固件的条目点被定位在低于4GB的系统存储器中。条目点提供对本机固件模块的访问,这样就可以把传统的固件(IA-32 BIOS)拷贝到在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 (19)
1.一种系统,包括:
包含一个或者多个为第一指令集结构(ISA)所编写的例程的第一固件模块,可以通过第一分配器进行访问该例程;
与第一固件模块相关的数据结构,该数据结构包括用于存储指向第一分配器的指针的第一条目和相关的标识符块;
包含一个或多个为第二ISA所编写并可通过第二分配器访问的例程和为第二ISA所编写的序言例程的第二固件模块,用于利用标识符块对数据结构进行定位并使用第一分配器对在第一固件模块中的例程进行访问;以及
一个与第二固件模块相关的共享存储器位置,用于为一个或者多个例程存储参数。
2.权利要求1的系统,其中数据结构包括签名代码,标识数据结构到第二固件模块中。
3.权利要求1的系统,其中数据结构包括第二条目,用于存储指向与第二固件有关的分配器的指针。
4.权利要求3的系统,其中第二固件模块包括在第二ISA中的一个或者多个例程,一个或者多个例程通过相关的分配器是可访问的。
5.权利要求1的系统,其中第二固件模块包括一个或者多个在第二ISA中的例程和在第二固件模块中被定义的共享存储器区域,容纳来自于第一和第二指令集中的一个或者是多个例程的数据。
6.权利要求1的系统,其中第二固件模块中的序言程序把第一固件模块的部分拷贝到在随意访问存储器中的一个位置中,存储与数据结构有关的位置,并用第二固件模块的分配器地址更新数据结构的第二条目。
7.处理器系统包括:
处理器;
系统存储器,以及
非易失型存储器,该存储器中存储有:
第一固件模块,包含数据结构、标识符块、第一分配器和可以通过第一分配器来访问的第一指令集结构(ISA)中的例程,例程提供对在系统中的传统资源的访问;和
第二固件模块,包括第二分配器、可通过第二分配器访问的第二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的方法,执行选定的传统例程包括:
在数据结构中存储与选定传统例程有关的返回地址;
通过在数据结构中由本机引导例程指定的第二分配器,访问本机例程;以及
在本机程序完成时,通过存储的返回地址,返回到选定的传统例程。
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 CN1334936A (zh) | 2002-02-06 |
CN1258702C true 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) |
Families Citing this family (56)
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 |
CN1312577C (zh) * | 2003-05-07 | 2007-04-25 | 中兴通讯股份有限公司 | 一种实现通信过程零拷贝消息队列的方法 |
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)
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 |
-
1998
- 1998-11-30 US US09/201,350 patent/US6081890A/en not_active Expired - Lifetime
-
1999
- 1999-11-04 DE DE19983768T patent/DE19983768B4/de not_active Expired - Fee Related
- 1999-11-04 CN CNB998159387A patent/CN1258702C/zh not_active Expired - Fee Related
- 1999-11-04 WO PCT/US1999/026161 patent/WO2000033170A1/en active Application Filing
- 1999-11-04 AU AU13440/00A patent/AU1344000A/en not_active Abandoned
- 1999-11-04 GB GB0112361A patent/GB2359166B/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
GB2359166A (en) | 2001-08-15 |
DE19983768B4 (de) | 2010-12-09 |
CN1334936A (zh) | 2002-02-06 |
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 | |
US7765395B2 (en) | Operating system rebooting method and apparatus for continuing to execute a non-stop module even during rebooting | |
US7082509B2 (en) | Method and system for allocating memory during system boot to reduce operating system memory resource consumption at run-time | |
US6421776B1 (en) | Data processor having BIOS packing compression/decompression architecture | |
US6009520A (en) | Method and apparatus standardizing use of non-volatile memory within a BIOS-ROM | |
US5999732A (en) | Techniques for reducing the cost of dynamic class initialization checks in compiled code | |
US9164787B2 (en) | Methods and systems for running multiple operating systems in a single mobile device | |
US5790860A (en) | Method and apparatus for patching code residing on a read only memory device | |
US5784638A (en) | Computer system supporting control transfers between two architectures | |
US6230259B1 (en) | Transparent extended state save | |
US8176142B2 (en) | Shared JAVA jar files | |
US20060064576A1 (en) | Boot systems and methods | |
CN108369520B (zh) | 保护基本输入/输出(bios)代码 | |
CN1977243A (zh) | 模拟实模式内存访问时访问扩展内存的系统和方法 | |
WO1994027220A1 (en) | Method and apparatus for vectorizing the contents of a read only memory device without modifying underlying source code | |
CN1894662A (zh) | 作为用于执行引导码的ram的处理器缓存存储器 | |
US7996833B2 (en) | Method and system for replacing instructions and instruction blocks in computer code | |
US20040111707A1 (en) | Debugger for multiple processors and multiple debugging types | |
CN1606731A (zh) | 引导过程 | |
CN1183458C (zh) | 将应用程序从系统固件传递到存储设备的方法和系统 | |
EP1429246A1 (en) | Apparatus and method for switching mode in a computer system | |
US7293207B2 (en) | Method for testing memory in a computer system utilizing a CPU with either 32-bit or 36-bit memory addressing | |
CN115994348A (zh) | 程序流水线的控制方法、处理装置和存储介质 |
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 |