用于在多处理器系统中进行异常处理的方法和系统的制作方法

文档序号:6650758阅读:200来源:国知局
专利名称:用于在多处理器系统中进行异常处理的方法和系统的制作方法
技术领域
本发明涉及管理多处理器操作中的异常。
背景技术
在某些计算环境中,多个主机系统可以和控制单元例如IBMEnterprise Storage Server(ESS)通信,以便获得由接收所述请求的ESS管理的存储设备中的数据,所述ESS通过一个或多个逻辑通路提供对存储设备诸如互连的硬盘驱动器的访问(IBM和ESS是IBM的注册商标)。这些互连的驱动器可被配置为直接访问存储设备(DASD)、独立磁盘冗余阵列(RAID)、磁盘捆绑(JBOD)等。控制单元可以是一种多处理器类型的系统。例如,控制单元可以包括双重的和冗余的处理复合体,也称为群集,从而允许在其中的一个发生故障的情况下故障转移到幸存的群集。
具有各种类型的多处理器系统。在一种类型中,每个处理器可以具有其自己的存储器和高速缓存。这些处理器可以并行运行并且共享盘。在一种类型的多处理器系统中每个处理器可以运行操作系统的一个拷贝,并且这些处理器可以通过(例如)局域网(LAN)松散地连接。处理器之间的通信可以通过消息传送来实现。
在另一种类型的多处理器系统中,处理器可被更紧密地连接,例如通过开关或桥连接。处理器之间的通信可以通过(例如)共享的存储器来实现。
在另一种类型的多处理器系统中,在所有的处理器上只运行操作系统的一个拷贝。这些类型的多处理器系统趋于使用高速总线或开关在同一底板内紧密地连接。而且,这些处理器可以共享同一个全局存储器、盘和输入/输出(I/O)设备。
在指令的执行中,可能产生通常被称为“异常”的各种状态、错误或外部信号。在许多处理器体系结构例如由IBM公司销售的PowerPC处理器中,处理器一般改变为管理器状态以便处理异常。此外,关于在发生异常之前处理器的状态的信息可被保存到某个处理器寄存器,并且处理器在一般为每种类型的异常预先规定的存储地址处开始指令的执行。
处理器可以在存储器的“便笺”部分存储关于处理器的状态的信息,该信息可被保留以供异常处理程序使用。便笺存储器的地址可被存储在“便笺寄存器”中以便向异常处理程序指示便笺存储器的位置。
异常处理程序被存储在该处的预定的存储地址通常被称为“异常向量”。因而例如,当由于某种原因不能进行数据存储器访问时可能发生“数据存储中断(DSI)”异常。DSI异常可被(例如)分配0x00300的异常向量。因而,用于处理DSI异常的指令代码被存储在物理存储器地址0x00300中。在DSI异常发生时,处理器开始执行在物理存储器地址0x00300处的指令代码以处理DSI异常。
在许多处理器中,被分配给特定异常的特定异常向量可以由处理器体系结构设置,并且因而不能容易地由用户确定。例如,异常向量可以由处理器硬件、固件或硬件和固件的一些组合来定义。因而,体系结构定义的异常向量通常不能由用户容易地进行修改。
在一些处理器中,体系结构可以允许对体系结构定义的异常向量的有限的修改。例如,通过使用用于确定偏移地址的体系结构定义的偏移向量可以导出体系结构定义的异常向量。这个偏移地址被加到可由用户设置的处理器寄存器所指出的体系结构定义的物理基地址上。因而,例如DSI异常可以具有0x00300的硬件分配的向量偏移地址。如果在合适的处理器寄存器中清除一个特定位,则所述物理基地址可以具有硬件分配的值0x00000,从而处理器在总计为0x00300的物理地址处开始执行用于DSI异常的指令代码。不过,如果在合适的处理器寄存器中设置所述特定位,例如,所述物理基地址可以具有(例如)硬件分配值0XFFF00000,从而处理器可以在总计为0XFFF00300的物理地址处开始执行用于DSI异常的指令代码。
异常的其它的例子包括“机器检查”异常,其中指令的处理可以被挂起,“指令存储中断”(ISI)异常,其在取下一条指令的各种故障时发生,“外部中断”异常,其在断定外部中断信号时向处理器发送信号,“定位”异常,其在执行存储器访问的各种故障时发生,“程序”异常,其中可能尝试执行了不正确的指令,以及“系统调用”异常,其在执行系统调用指令时发生。根据特定的处理器和所述处理器的应用,可以发生其它类型的异常。
每个异常可以具有指向所述异常的异常处理程序代码的体系结构定义的异常向量。因而,在多处理器系统中,一个处理器在遇到异常时可以开始执行用于该异常的体系结构定义的异常向量处的异常处理代码。在执行异常向量处的异常处理代码时,该处理器可以访问并配置由系统的一个或多个其它处理器共享的资源。这些共享的资源可以包括处理器总线,存储器控制器,桥,中断控制器,存储器等。
系统的另一个处理器在遇到异常时可以被同一个异常向量引导。结果,第二处理器可以开始执行和第一个处理器相同的异常处理代码,并可能开始访问和配置和第一个处理器相同的共享资源。这种状态可以引起可能打断系统的操作的冲突,特别是如果两个处理器的异常处理操作重叠的话。
在一些多处理器系统中,系统的各个处理器可能正在执行被设计为用于多处理器操作的公共的操作系统。因而,公共的操作系统可被设计为尽管一个以上的处理器在特定的异常向量处执行相同的异常处理代码也可避免冲突。
在其它的多处理器系统中,系统的每个处理器可以执行不同的操作系统。这种系统中的一个方法是重写不同操作系统的几个部分以适应一个以上的处理器在特定的异常向量处执行相同的异常处理代码的情况。另一个方法是提供用于协调各个处理器的操作以便减少冲突的硬件。

发明内容
在一个实施例中,多处理器系统中的第一处理器遇到异常并跳转到体系结构定义的异常向量处的异常处理程序代码。该处理器被引导到一个数据结构,该数据结构提供了指向附加的异常处理程序代码的可编程异常向量。这个附加的代码可以如同其位于体系结构定义的异常向量处那样被执行。描述并提出了其它的实施例。


图1表示用于实施本发明的实施例的计算环境;以及图2表示用于管理多处理器异常处理操作的操作。
具体实施例方式
图1表示一种计算环境的一个例子,其中可以使用此处提供的说明的各个方面。一个或多个主机2将定向到存储系统4的输入/输出(I/O)请求传递到控制单元6,控制单元6管理对存储系统4的访问。在一个实施例中,控制单元6由两个处理复合体8a,8b构成,它们中的每个包括处理器10a,10c和主机适配器22a,22b。每个主机适配器22a,22b使相关联的处理复合体能够和主机2通信,并包括处理器10b,10d。每个处理器10a,10b,10c,10d可以具有相同的体系结构例如PowerPC处理器体系结构。应当理解,处理器10a,10b,10c,10d可以具有其它型号和制造者的其它类型的体系结构。还应当理解,处理器10a,10b,10c,10d可以彼此不同,并且因而每个具有不同的体系结构或制造者。
在所示的实施例中,每个处理器10a,10b,10c,10d分别具有相关联的存储器12a,12b,12c,12d,并分别单独执行操作系统18a,18b,18c,18d,并且分别具有设备驱动器20a,20b,20c,20d。操作系统18a,18b,18c,18d的类型可以彼此相同,或者每一个可以是完全不同类型的操作系统。例如操作系统18a,18c中的每一个可以是嵌入式多线程操作系统,例如LINUX,而操作系统18b,18d中的每一个可以是(例如)执行用于主机适配器的实时任务的嵌入式硬件抽象层。应当理解,根据特定的应用,可以使用各种类型的操作系统及其组合。
每个处理器10a,10b,10c,10d可以具有若干个内部存储器资源,例如分别由内部寄存器19a,19b,19c,19d表示的寄存器。每个设备驱动器20a,20b,20c,20d提供设备驱动器20a,20b,20c,20d执行于其中的处理复合体8a,8b内的相关操作系统18a,18b,18c,18d和内部或外部设备例如主机适配器22a,22b以及各种设备适配器24a,24b之间的接口。虽然所示的实施例示出了具有两个不同组件例如处理复合体8a,8b,设备适配器24a,24b等的控制单元6,应当理解,控制单元6可以具有更多或更少的这种组件。
处理复合体8a可以具有和总线31a相连的并由该处理复合体8a的处理器10a和处理器10b共享的共享存储器30a。每个存储器12a,12b可以具有高速缓存28a,28b,其中可以高速缓存共享的存储器30a的一个或多个行。类似地,处理复合体8b可以具有和总线31b相连的并由该处理复合体8b的处理器10c和处理器10d共享的共享存储器30b。每个存储器12c,12d可以具有高速缓存28c,28d,其中可以高速缓存共享的存储器30b的一个或多个行。高速缓存28a,28b,28c,28d可以高速缓存控制单元6的其它存储器的行。
每个处理复合体8a,8b可以处于的单独的功率边界(power boundary)上。处理复合体8a,8b可被分配为处理定向到被配置在存储系统4中的特定卷的I/O请求。处理复合体8a,8b通过设备适配器24a,24b,24c,24d在设备网络(未示出)上和存储系统4通信,所述设备网络可以包括局域网(LAN),存储区域网络(SAN),总线接口,串行接口等。此外,处理复合体8a,8b在包括桥34的连接32上进行通信,使得能够进行处理器间的通信以便管理对共享的设备例如共享的适配器22a,22b进行的配置操作。
控制单元6可以包括任何类型的服务器,例如企业存储服务器、存储控制器等,或用于管理对所附的存储系统4(多个)的I/O请求的其它设备,其中所述存储系统可以包括本领域已知的一个或多个存储设备,例如互连的硬盘驱动器(例如,被配置成DASD,RAID,JBOD等)、磁带、电子存储器等。主机2可以通过适配器22a,22b...22n在网络(未示出)上和控制单元6通信,所述网络例如是局域网(LAN)、存储区域网络(SAN)、广域网(WAN)、无线网等。可替换地,主机2可以在总线接口(例如,外围组件互连(PCI)总线或串行接口)上和控制单元6通信。
共享的设备例如共享的适配器22a,22b处的故障可以给处理复合体8a,8b中的操作系统18a,18b,18c,18d产生机器检查状态,如果共享的硬件具有致命类型的错误,其可以引起两个处理复合体的崩溃。2004年11月12日申请的、代理卷号为TUC9200400139US1、序列号为No.10/987572、名称为“METHOD,SYSTEM,AND PROGRAM FOR HANDLING ADEVICE FAILURE”的未决的和共同转让的专利申请描述了一种用于隔离有故障的共享设备以避免出现致命的设备错误导致两个处理复合体8a,8b崩溃的情况的技术,该专利申请的全部内容通过引用被包括在此。在一个实施例中,可以通过共享的设备例如桥34协调这些恢复操作。
提交于2004年11月30日、代理卷号为TUC9200400178US1、序列号为11/000705、名称为“MANAGING MULTIPROCESSOROPERATIONS”的未决的共同转让的专利申请描述了使用处理器高速缓存28a,28b,28c,28d和高速缓存一致性协议的处理器活动的协调,该专利申请的全部内容通过引用被包括在此。例如,在本实施例中作为共享资源的桥34可能发生故障,并且可能需要被复位以恢复正确的功能。可以使用一个或多个处理器高速缓存28a,28b,28c,28d以及高速缓存一致性协议在处理器10a,10b,10c,10d之间协调这个恢复操作。
如下面详细解释的那样,可以提供在异常向量处的异常处理代码,以便将一个处理器引导向一个数据结构,所述数据结构例如可以是该处理器的内部寄存器。用于这个处理器的所述数据结构可以提供到一个地址的另一个异常向量,该地址含有用于该处理器的相关的异常处理代码。可以由该处理器如同该异常处理代码位于原始的异常向量地址处那样以相同的方式执行由该数据结构在该异常向量处提供的这个异常处理代码。
类似地,在相同的异常向量处执行相同的异常处理代码的第二处理器可以被引导向一个数据结构,例如该处理器内部的寄存器。用于第二处理器的这个数据结构同样可以包括到另一个地址的异常向量,其可以含有用于第二处理器的单独的异常处理代码。可以由第二处理器如同该异常处理代码位于原始异常向量地址处那样以相同的方式执行由第二数据结构在该异常向量处提供的这个异常处理代码。用这种方式,单独的处理器可以执行单独的异常处理程序,尽管最初每个处理器由公共的体系结构定义的异常向量引导向相同的物理存储器地址。结果,可以减少或避免冲突。应当理解,在其它应用中,根据特定的应用可以利用其它的特征。
图2表示操作的实施例,其中可以在多处理器系统例如控制单元6中由多个处理器执行异常处理程序。在一个操作中,第一处理器例如处理器10a在执行指令时遇到异常(块200)。遇到的异常可以是若干个异常例如DSI、机器检查、ISI、外部中断、定位、程序或系统调用异常中的任何异常。应当理解,根据特定的处理器和该处理器的应用,遇到的异常可以是另一种类型的异常。
在另一个操作中,第一处理器10a跳转到(块202)在第一预定地址处的异常处理程序代码。在所述的实施例中,遇到的异常具有体系结构定义的异常向量。例如,遇到的异常可以是DSI异常,其具有例如共享的存储器30a的物理地址0x00300的硬件定义的异常向量。因而,处理器10a跳转到存储在物理存储器地址0x00300处的指令代码。
在一种类型的处理器中,可以由快闪存储器或只读存储器定义体系结构定义的异常向量。在其它的处理器中,异常向量可以由硬件电路定义。应当理解,体系结构定义的异常向量可以由各种技术定义,包括硬件、固件或用于限制或消除体系结构定义的异常向量的用户可编程性的其它技术。
体系结构定义的异常向量的另一个例子是可以通过使用体系结构定义的偏移向量导出异常向量的地址,所述偏移向量定义一个偏移地址,该偏移地址被加到可由用户设置的处理器寄存器所指示的体系结构定义的物理基地址上。因此例如,DSI异常可以具有0x00300的硬件分配的向量偏移地址。如果在合适的处理器寄存器中清除一个特定的位,则所述物理基地址可以具有硬件分配的值0x00000,从而处理器10a在预定的物理地址0x00300处开始执行用于DSI异常的指令代码。然而如果在合适的处理器寄存器中设置所述特定的位,所述物理基本地址可以具有(例如)硬件分配值0XFFF00000,从而处理器10a可以在(例如)共享的存储器30a的预定的物理地址0XFFF00300处开始执行用于DSI异常的指令代码。
在另一个操作中,处理器10a执行(块204)例如存储在预定地址诸如DSI异常向量物理地址0x00300的代码。在这个例子中,存储在该异常向量处的异常处理程序代码是能够被控制单元6的任何一个处理器10a,10b执行的代码。因而,存储在体系结构定义的异常向量处的异常处理程序代码对于两个处理器10a,10b是公共的异常处理程序代码。在执行物理地址0x00300处的公共异常处理程序代码时,第一处理器10a在第一数据结构读出一个值。处理器10a可以跳转到(块206)另一个地址,该地址的等式是从所述数据结构读出的值的函数。
在所示的实施例中,该数据结构可以是处理器10a的内部寄存器19a。例如在PowerPC处理器中,当执行存储在原始异常向量物理地址处的代码时,处理器10a可以读专用寄存器(SPRG0)。因而,在体系结构定义的异常向量处的异常处理程序代码可以引导处理器10a读出存储在SPRG0寄存器19a内的值。应当理解,可以利用处理器10能够访问的其它资源存储这个值。
例如在这个例子中,由处理器10a从其SPRG0寄存器19a读出的值是可编程的异常向量,其标识一个物理存储器地址,附加的异常处理程序代码可以被存储在该地址处以便处理遇到的异常诸如DSI异常。该可编程异常向量的物理存储器地址例如可以位于存储器12a中,其可以是例如用于处理器10a的私有存储器。在跳转到由存储处理器寄存器19a内的可编程异常向量标识的物理存储器地址之后,可以执行(块208)存储在该可编程异常向量处的附加的异常处理程序代码。
在所示的实施例中,存储在处理器10a的SPRG0内的异常向量可被容易地编程,从而软件可以将合适的地址存储在该寄存器中。应当理解,根据特定的应用,存储在寄存器中的特定地址可以由操作系统18a、应用程序、固件、硬件或其它的源进行选择。
此外,实际的异常向量可以被整个存储在处理器寄存器10a中。应当理解,可以使用所存储的值的其它函数确定所述异常向量。例如,所存储的值可以是偏移向量,它被加到基地址上以提供最后的异常向量。可以对存储在处理器寄存器19a中的值进行其它处理以提供异常向量。
在由处理器寄存器19a存储的可编程异常向量处的附加的异常处理代码可以由处理器10a以与实际上的第一级异常处理代码相同的方式执行,就如同附加的异常处理代码位于体系结构定义的异常向量的物理地址处一样。此外,因为附加的异常处理程序代码位于由处理器10a的寄存器19a定义的单独的物理地址,附加的异常处理程序代码可以由处理器10a单独地执行,并且因而可以不是两个处理器10a,10b公共的异常处理程序代码。这个附加的异常处理程序代码可以是单独的并专用于第一处理器10a的操作系统18a。以这种方式,在由多处理器执行异常处理程序代码时可以减少或消除冲突。
在所示的例子中,第二处理器诸如主机适配器22a的处理器10b也遇到(块210)异常。这可以在第一处理器10a遇到(块200)异常的同时发生或者在足够接近的时间发生,因而由两个处理器10a,10b进行的异常处理程序的操作导致了冲突。例如在这个例子中,遇到的异常也是DSI异常,但是遇到的异常可以是若干个异常例如机器检查、ISI、外部中断、定位、程序或系统调用异常中的任何异常。
在另一个操作中,第二处理器10b跳转到(块212)和第一处理器10a跳转到(块202)的相同的预定地址处的异常处理程序代码。在所示的实施例中,由第二处理器10b遇到的异常也具有体系结构定义的异常向量。例如,遇到的异常可以也是DSI异常向量,其具有例如相同的共享存储器30a的物理地址(例如)0x00300的硬件定义的异常向量。因而,处理器10b跳转到存储在物理存储器地址0x00300处的指令代码,与本例中的处理器10a相同。
在另一个操作中,处理器10b执行(块214)存储在预定地址例如在这个例子中的DSI异常向量物理地址0x00300处的代码。如前所述,在这个例子中,存储在该异常向量处的异常处理程序代码是可以由控制单元6的任何一个处理器10a,10b执行的公共代码。在执行物理地址0x00300处的公共异常处理程序代码时,第二处理器10b读出第二数据结构处的一个值。处理器10b可以跳转到(块216)另一个地址,该地址的等式是从所述第二数据结构读出的值的函数。
在所示的实施例中,第二数据结构可以是处理器10b的内部寄存器19b,例如处理器10b的专用寄存器(SPRG0)。因而,存储在公共的体系结构定义的异常向量处的公共异常处理程序代码可以将执行该代码的每个处理器10a,10b引导到被公共标识确定的数据结构例如诸如SPRG0。然而,每个处理器10a,10b在执行该代码时实际上被引导到不同的内部寄存器19a,19b,不过它们具有公共的标识SPRG0。因而,当执行存储在原始的体系结构定义的异常向量的物理地址处的代码时,处理器10b可以读SPRG0寄存器19b。应当理解,可以利用处理器10b可以访问的其它资源来存储这个值。
在这个例子中,由处理器10b读出的值也是可编程异常向量,其标识一个物理存储器地址,在该地址处可以存储附加的异常处理程序代码以便处理遇到的异常例如诸如DSI异常。可编程异常向量的物理存储器地址例如可以是存储器12b的物理地址,例如其可以是处理器10b的私有存储器。因而,由处理器10b的SPRG0寄存器19b存储的可编程异常向量可以和由处理器10a的SPRG0寄存器19a存储的可编程异常向量不同。因而,存储在处理器10b的寄存器19b的可编程异常向量处的附加的异常处理程序代码可以和存储在处理器10a的寄存器19a的可编程异常向量处的附加的异常处理程序代码分开。例如,存储在存储器12b内处理器10b的寄存器19b的可编程异常向量处的附加的异常处理程序代码可以和存储在存储器12a内处理器10a的寄存器19a的可编程异常向量处的附加的异常处理程序代码分开。此外,这个单独的异常处理程序代码可以是第二处理器10b的操作系统18b专用的。
在跳转到由存储在处理器10b的寄存器19b中的可编程异常向量标识的物理存储器地址之后,可以由第二处理器10b执行(块218)存储在该可编程异常向量处的单独的、附加的异常处理程序代码。在由处理器10b的寄存器19b标识的可编程异常向量处的(并被存储在存储器12b中)这个附加的异常处理代码可以由处理器10b如同该附加的异常处理代码位于体系结构定义的异常向量的物理地址处那样(在这个例子中,在共享的存储器30a内)以相同的方式执行。此外,因为该附加的异常处理程序代码位于由处理器10b的寄存器19b定义的物理地址处,这个附加的异常处理程序代码可以由处理器10b单独地执行,并且因而可以不是两个处理器10a,10b公共的异常处理程序代码。以这种方式,在由多处理器执行异常处理程序代码时可以减少或消除冲突。
复合体8b的处理器10c,10d可以用类似的方式利用共享的存储器30b和内部寄存器19c,19d以便协调异常处理并减少或消除冲突。可以理解,处理器10a,10b,10c,10d的各种实施例可以利用共享的存储器以及各种数据结构来进行异常处理。
附加的实施例的详细说明上述的实施例可以被实现为使用标准的编程和/或工程技术生产软件、固件、硬件或其组合的方法、设备或制造产品。这里使用的术语“制造产品”指的是以硬件逻辑(例如集成电路芯片、可编程门阵列(PGA),专用集成电路(ASIC)等)或计算机可读介质例如磁存储介质(例如,硬盘驱动器、软盘、磁带等)、光存储器(CD-ROM,光盘等)、易失的和非易失的存储器设备(例如EEPROM,ROM,PROM,RAM,DRAM,SRAM,固件,可编程逻辑等)实现的代码或逻辑。由处理器访问和执行计算机可读介质中的代码。还可以通过传输介质或从网络上的文件服务器访问实施优选实施例的代码。在这种情况下,其中实现代码的制造产品可以包括传输介质例如网络传输线、无线电传输介质、通过空间传播的信号、无线电波、红外线信号等。因而,“制造产品”可以包括其中包含代码的介质。此外,“制造产品”可以包括所述代码被包含在其中、被在其中处理和执行的硬件和软件组件的组合。当然,本领域技术人员应当理解,不脱离本说明的范围,可以对该配置做出许多改变,并且制造产品可以包括本领域已知的任何信息承载介质。
某些实施例可能涉及用于由人或将计算机可读代码集成到计算系统中的自动处理部署计算指令的方法,其中与计算系统相结合的代码能够执行所述实施例的操作。
在所述的实施例中,控制单元6包括两个处理复合体8a,8b。在另一些实施例中,可以具有两个以上的访问共享设备的系统。
图2所示的操作示出了按照某个顺序发生的某些事件。在另外的实施例中,某些操作可以按照不同顺序被执行、被修改或被删除。此外,可以对上述的逻辑附加一些步骤并仍然符合所述的实施例。此外,此处所述的操作可以顺序地发生,或者某些操作可被并行地处理。此外,这些操作可以由单个处理单元或者由分布式处理单元执行。
出于说明和解释的目的给出了对各种实施例的上述说明。其不旨在是无遗露的或者把本发明限制于所披露的精确的形式。根据上述的教导,可以做出许多改变和改型。
权利要求
1.一种用于在具有第一和第二处理器的系统中执行代码的方法,包括所述第一处理器遇到第一异常;所述第一处理器跳转以便执行在第一预定地址处的第一异常处理程序代码;所述第一处理器执行在所述第一预定地址处的所述第一异常处理程序代码,其中所述第一指令处理程序代码引导所述第一处理器读取在第一数据结构处的值;所述第一处理器跳转以便执行作为从所述第一数据结构读取的值的函数的第二地址处的第二异常处理程序代码;以及所述第一处理器执行所述第二异常处理程序代码以便处理所述第一异常。
2.如权利要求1所述的方法,还包括所述第二处理器遇到第二异常;所述第二处理器跳转以便执行在所述第一预定地址处的所述第一异常处理程序代码;所述第二处理器执行在所述第一预定地址处的所述第一异常处理程序代码,其中所述第一指令处理程序代码引导所述第二处理器读取在第二数据结构处的值;所述第二处理器跳转以便执行作为从所述第二数据结构读取的值的函数的第三地址处的第三异常处理程序代码;以及所述第二处理器执行所述第三异常处理程序代码以便处理所述第二异常。
3.如权利要求2所述的方法,其中所述第一数据结构是所述第一处理器内部的寄存器。
4.如权利要求3所述的方法,其中所述第二数据结构是所述第二处理器内部的寄存器。
5.如权利要求4所述的方法,其中所述第一处理器的所述内部寄存器和所述第二处理器的所述内部寄存器在所述第一异常处理程序代码内具有公共标识。
6.如权利要求1所述的方法,其中所述第一预定地址是由所述第一和第二处理器的体系结构定义的异常向量。
7.如权利要求6所述的方法,其中所述体系结构定义的异常向量由第一和第二处理器的快闪存储器定义。
8.如权利要求6所述的方法,其中所述体系结构定义的异常向量包括体系结构定义的偏移向量。
9.一种系统,包括具有适用于存储值的第一数据结构的第一处理器;第二处理器;适用于在第一预定地址处存储第一异常处理程序代码和在第二地址处存储第二异常处理程序代码的存储器;所述第一处理器具有适用于下述的逻辑遇到第一异常;跳转以便执行在所述第一预定地址处的所述第一异常处理程序代码;执行在所述第一预定地址处的所述第一异常处理程序代码,其中所述第一指令处理程序代码引导所述第一处理器从第一数据结构读取值;跳转以便执行作为从所述第一数据结构读出的值的函数的所述第二地址处的所述第二异常处理程序代码;以及执行所述第二异常处理程序代码以便处理所述第一异常。
10.如权利要求9所述的系统,其中所述第二处理器具有适用于存储值的第二数据结构,所述存储器适用于在第三地址处存储第三异常处理程序代码,其中所述第二处理器具有适用于下述的逻辑遇到第二异常;跳转以便执行在所述第一预定地址处的所述第一异常处理程序代码;执行在所述第一预定地址处的所述第一异常处理程序代码,其中所述第一指令处理程序代码引导所述第二处理器读取在所述第二数据结构处的值;跳转以便执行作为从所述第二数据结构读取的值的函数的第三地址处的所述第三异常处理程序代码;以及执行所述第三异常处理程序代码以便处理所述第二异常。
11.如权利要求10所述的系统,其中所述第一数据结构是所述第一处理器内部的寄存器。
12.如权利要求11所述的系统,其中所述第二数据结构是所述第二处理器内部的寄存器。
13.如权利要求12所述的系统,其中所述第一处理器的所述内部寄存器和所述第二处理器的所述内部寄存器在所述第一异常处理程序代码内具有公共标识。
14.如权利要求9所述的系统,其中所述第一和第二处理器的每一个定义一个体系结构,并且其中所述第一预定地址是由所述第一和第二处理器的体系结构定义的异常向量。
15.如权利要求14所述的系统,其中所述第一和第二处理器的每一个具有快闪存储器,并且其中所述体系结构定义的异常向量由所述第一和第二处理器的所述快闪存储器定义。
16.如权利要求14所述的系统,其中所述体系结构定义的异常向量包括体系结构定义的偏移向量。
17.一种制造产品,包括能够由一个系统执行以便执行操作的代码,其中所述系统具有适用于存储值的第一数据结构的第一处理器,第二处理器,和适用于在第一预定地址处存储第一异常处理程序代码和在第二地址处存储第二异常处理程序代码的存储器,其中所述操作包括所述第一处理器遇到第一异常;所述第一处理器跳转以便执行在所述第一预定地址处的所述第一异常处理程序代码;所述第一处理器执行在所述第一预定地址处的所述第一异常处理程序代码,其中所述第一指令处理程序代码引导所述第一处理器读取在第一数据结构处的值;所述第一处理器跳转以便执行作为从所述第一数据结构读取的值的函数的所述第二地址处的所述第二异常处理程序代码;以及所述第一处理器执行所述第二异常处理程序代码以便处理所述第一异常。
18.如权利要求17所述的制品,其中所述第二处理器具有适用于存储值的第二数据结构,所述存储器适用于在第三地址处存储第三异常处理程序代码,并且其中所述操作还包括所述第二处理器遇到第二异常;所述第二处理器跳转以便执行在所述第一预定地址处的所述第一异常处理程序代码;所述第二处理器执行在所述第一预定地址处的所述第一异常处理程序代码,其中所述第一指令处理程序代码引导所述第二处理器读取所述第二数据结构处的值;所述第二处理器跳转以便执行作为从所述第二数据结构读取的值的函数的所述第三地址处的所述第三异常处理程序代码;以及所述第二处理器执行所述第三异常处理程序代码以便处理所述第二异常。
19.如权利要求18所述的制品,其中所述第一数据结构是所述第一处理器内部的寄存器。
20.如权利要求19所述的制品,其中所述第二数据结构是所述第二处理器内部的寄存器。
21.如权利要求20所述的制品,其中所述第一处理器的所述内部寄存器和所述第二处理器的所述内部寄存器在所述第一异常处理程序代码内具有公共标识。
22.如权利要求17所述的制品,其中所述第一和第二处理器的每一个定义一个体系结构,并且其中所述第一预定地址是由所述第一和第二处理器的体系结构定义的异常向量。
23.如权利要求22所述的制品,其中所述第一和第二处理器的每一个具有快闪存储器,并且其中所述体系结构定义的异常向量由所述第一和第二处理器的所述快闪存储器定义。
24.如权利要求22所述的制品,其中所述体系结构定义的异常向量包括体系结构定义的偏移向量。
25.一种用于部署计算指令的方法,包括把计算机可读代码集成在一个系统中,其中所述系统具有适用于存储值的第一数据结构的第一处理器,第二处理器,和适用于在第一预定地址处存储第一异常处理程序代码和在第二地址处存储第二异常处理程序代码的存储器,并且其中与所述系统相结合的代码能够使所述系统执行所述第一处理器遇到第一异常;所述第一处理器跳转以便执行在所述第一预定地址处的所述第一异常处理程序代码;所述第一处理器执行在所述第一预定地址处的所述第一异常处理程序代码,其中所述第一指令处理程序代码引导所述第一处理器读取在第一数据结构处的值;所述第一处理器跳转以便执行作为从所述第一数据结构读取的值的函数的所述第二地址处的所述第二异常处理程序代码;以及所述第一处理器执行所述第二异常处理程序代码以便处理所述第一异常。
26.如权利要求25所述的方法,其中所述第二处理器具有适用于存储值的第二数据结构,所述存储器适用于在第三地址处存储第三异常处理程序代码,其中与所述系统相结合的代码能够使所述系统进行所述第二处理器遇到第二异常;所述第二处理器跳转以便执行在所述第一预定地址处的所述第一异常处理程序代码;所述第二处理器执行在所述第一预定地址处的所述第一异常处理程序代码,其中所述第一指令处理程序代码引导所述第二处理器读取在所述第二数据结构处的值;所述第二处理器跳转以便执行作为从所述第二数据结构读取的值的函数的所述第三地址处的第三异常处理程序代码;以及所述第二处理器执行所述第三异常处理程序代码以便处理所述第二异常。
27.如权利要求26所述的方法,其中所述第一数据结构是所述第一处理器内部的寄存器。
28.如权利要求27所述的方法,其中所述第二数据结构是所述第二处理器内部的寄存器。
29.如权利要求28所述的方法,其中所述第一处理器的所述内部寄存器和所述第二处理器的所述内部寄存器在所述第一异常处理程序代码内具有公共标识。
30.如权利要求25所述的方法,其中所述第一和第二处理器的每一个定义一个体系结构,并且其中所述第一预定地址是由所述第一和第二处理器的体系结构定义的异常向量。
31.如权利要求30所述的方法,其中所述第一和第二处理器的每一个具有快闪存储器,并且其中所述体系结构定义的异常向量由所述第一和第二处理器的所述快闪存储器定义。
32.如权利要求30所述的方法,其中所述体系结构定义的异常向量包括体系结构定义的偏移向量。
全文摘要
在一个实施例中,多处理器系统的第一处理器遇到异常并跳转以便执行在体系结构定义的异常向量处的异常处理程序代码。该处理器被引导到一个数据结构,其提供了指向附加的异常处理程序代码的可编程异常向量。这个附加的代码可以被如同其位于体系结构定义的异常向量处那样执行。描述了并提出了其它的实施例。
文档编号G06F15/16GK1783021SQ20051012351
公开日2006年6月7日 申请日期2005年11月17日 优先权日2004年11月30日
发明者S·L·布林尼克, R·S·帕迪利亚 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1