CN102981800B - 处理异构资源的地址转换和异常 - Google Patents
处理异构资源的地址转换和异常 Download PDFInfo
- Publication number
- CN102981800B CN102981800B CN201210375247.2A CN201210375247A CN102981800B CN 102981800 B CN102981800 B CN 102981800B CN 201210375247 A CN201210375247 A CN 201210375247A CN 102981800 B CN102981800 B CN 102981800B
- Authority
- CN
- China
- Prior art keywords
- sequencer
- address
- exception
- processor
- fault
- 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
- 238000000034 method Methods 0.000 title claims abstract description 78
- 230000008569 process Effects 0.000 title claims description 55
- 238000006243 chemical reaction Methods 0.000 title claims description 25
- 230000002159 abnormal effect Effects 0.000 claims abstract description 16
- 230000004044 response Effects 0.000 claims abstract description 6
- 230000007246 mechanism Effects 0.000 claims description 35
- 238000012545 processing Methods 0.000 claims description 31
- 238000013519 translation Methods 0.000 claims description 31
- 230000006870 function Effects 0.000 claims description 9
- 230000008859 change Effects 0.000 claims description 6
- 230000007704 transition Effects 0.000 claims description 4
- 238000013507 mapping Methods 0.000 claims description 3
- 239000000758 substrate Substances 0.000 claims 1
- 230000005540 biological transmission Effects 0.000 abstract description 5
- 230000005856 abnormality Effects 0.000 description 19
- 238000004891 communication Methods 0.000 description 17
- 230000014616 translation Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 13
- 238000012546 transfer Methods 0.000 description 4
- 239000002131 composite material Substances 0.000 description 3
- 230000008034 disappearance Effects 0.000 description 3
- 230000011664 signaling Effects 0.000 description 3
- 239000003795 chemical substances by application Substances 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000008439 repair process Effects 0.000 description 2
- 230000007727 signaling mechanism Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 210000000352 storage cell Anatomy 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Hardware Redundancy (AREA)
Abstract
在一个实施例中,本发明包括一种用于向耦合到加速器上的第一指令定序器传送要求对在所述加速器上出现的故障或异常进行处理的请求的方法。所述加速器可以是相对于所述第一指令定序器异构的资源,例如,具有不同的指令集架构。响应于所述请求,可以在所述第一指令定序器中处理所述故障或异常。还描述并要求了其它实施例。
Description
本申请是申请日为2007年6月27日、申请号为200780019982.7的同名专利申请的分案申请。
技术领域
本发明的实施例涉及基于处理器的系统,并且尤其涉及包括具有不同指令集架构的多个定序器(sequencer)的系统。
背景技术
计算机系统包括各种用于处理和传送数据的组件。典型的系统包括一个或多个处理器(其中每个处理器可以包括多个内核)、以及关联的存储器、输入/输出(I/O)设备和其它这类组件。为了提高计算效率,可以通过一个或更多专用组件(这里一般将其称为辅助单元)来提供计算加速器、专用I/O设备以及其它这类专用单元。然而,使用这类辅助单元可能出现低效率的情况,这是因为在典型的其中实现了通用处理器和行业标准操作系统(OS)环境的计算环境下,软件栈会阻碍高效利用。也就是说,在典型的OS环境下,通过不同的特权级隔离了系统软件和应用软件,并且在这些不同特权级中的每一个上的操作要经受OS上下文保存和恢复操作以及其它限制等等。此外,辅助单元典型地缺乏处理异常和故障处理的能力,所述异常和故障处理使得能够对执行期间的某些事件进行健壮的处理。
计算加速器的经典例子是协处理器,例如像用于早期32位英特尔架构(IA)处理器的所谓的x87浮点协处理器这样的数学协处理器。典型地,这种协处理器通过协处理器接口被耦合到主处理器(例如,中央处理单元(CPU))上,该协处理器接口与主处理器同具有一种指令集架构(ISA)。最近,在系统中出现具有不同指令集架构(ISA)的分立资源。
在运行着针对单一ISA而写的单映像OS(例如,行业标准OS)的系统中出现具有不同ISA的多个资源的情况下,典型地,对于处理在具有异构ISA的资源上执行代码期间引发的异常或故障,仅提供有限的支持或不提供支持。即使存在这种处理,不同ISA的可能完全不同的架构机制也可能会要求对该OS进行大量重写。因此,异构资源通常并不提供对异常和故障处理的支持,这降低了异构资源对各种任务的适用性。
附图说明
图1是根据本发明的一个实施例的处理器的框图。
图2是根据本发明的一个实施例的系统的一部分的框图。
图3是根据本发明的一个实施例的用于处理异构资源中的故障状况的方法的流程图。
图4是根据本发明的另一个实施例的系统的一部分的框图。
图5是根据本发明的一个实施例的用于处理异构资源中的异常的方法的流程图。
图6示出根据本发明的一个实施例的系统的框图。
具体实施方式
在各种实施例中,提供了各种机制来支持基于指令集架构(ISA)的异常处理和地址转换机制。如这里所用到的,“定序器”是独特的线程执行资源,并且可以是任何能够执行线程的物理或逻辑单元。定序器可以是逻辑线程单元或物理线程单元,并且可以包括下一指令指针逻辑以便确定针对给定线程将要执行的下一条指令。
在许多实现中,系统可以包括具有第一ISA的第一定序器和具有异构性质的第二计算资源(其可以是定序器或非定序器)。也就是说,第二资源可以是具有不同ISA的定序器或可以是诸如固定功能单元(FFU)、专用集成电路(ASIC)或其它预编程逻辑这样的非定序器资源。在各种实施例中,在这里被称为“外框架(exo-skeleton)”的媒介或接口可以提供这种异构资源之间的通信。在不同的实施例中,外框架可以采用包括软件、硬件和/或固件在内的各种形式。在一些实施例中,外框架可以被实现在紧密耦合到异构资源的有限状态机(FSM)中。当然,可以允许其它实现。
现在参考图1,示出的是根据本发明的一个实施例的处理器的框图。如图1所示,处理器10包括多种不同的资源。在不同的实现中,处理器10可以是单核处理器或多核处理器。这样的处理器可以被实现在不同类型的系统中,包括单芯片多处理器(CMP)系统、同时多线程(SMT)系统或基于事件切换的多线程(SoeMT)系统以及其它这类系统等等。
如图1所示,处理器10包括多个定序器20a、20b、20c和20d(即,定序器1-4,统称为定序器20)。尽管在图1的实施例中示出四个这种定序器,但是可以理解本发明的范围并不受此限制。如图1所示,处理器10中的定序器20实施了ISA 30,在一个实施例中,所述ISA 30可以是英特尔架构(IA-32)指令集架构和/或其64位扩展(也被称为英特尔64位扩展存储器技术(EM64T))。处理器10还具有其它资源,包括第一资源(即资源1)50a、第二资源(即资源2)50b和第三资源50c(即资源3)(统称为资源50)。这些资源可以是并未实施处理器10的ISA 30的异构资源。尽管在图1示出的实施例中包括三个这种资源,但是在不同的实施例中可以允许更多或更少这种资源。
每个资源50包括定序器(其可以实现与ISA30不同的ISA)、非定序器处理引擎或其它专用功能逻辑,这里统称为加速器。在不同的实施例中,不同类型的资源可以被实现为加速器,包括图形处理单元(GPU)(典型地,定序器)、加密单元(典型地,非定序器)、物理处理单元(PPU)(典型地,非定序器)、固定功能单元(FFU)(典型地,非定序器)等等。如图1所示,每个资源50可以包括加速器52(统称),并且更具体地,包括加速器52a、52b和52c,每个加速器与资源50a-50c其中之一相关联。这里,加速器52也被称为辅助单元。因为资源50a-50c可以具有另一种ISA或者甚至可以是非定序器,以及同样能够是相对于定序器20异构的资源,因此可以使用接口来提供与这样的资源进行通信的能力。具体地,如图1所示,外框架54a、54b和54c(统称外框架54)可以与资源50其中之一相关联。因此,每个资源50可以被称为“外定序器”,指示出外框架54与其相关加速器52之间的紧密耦合。这样,这些异构资源可以与异构的定序器资源一起被集成到一个支持定序器间通信的统一ISA框架中。
然而在其它实施例中,资源50可以是相对于定序器20异构的定序器资源,并且可以是对称内核,使得它们包括与定序器20相同或相似的架构。这样,可以实现并发纤程(fiber)并且能够增强遗留OS的可扩展性。此外,在其它实现中,资源50可以是非对称内核。换句话说,这些资源可以与定序器20具有相同的ISA,但是具有不同的微架构。这种实施例可以帮助管理非对称性并提供与遗留OS的兼容性。
对于实现了异构资源的实施例,外框架可以提供这样的效应:这些异构资源具有公共的ISA,以便达到定序器间通信的最小顺应性。于是,在各种实施例中,异构资源能够用作用户级功能单元资源(而不是系统级设备)。
尽管在图1的实施例中示出特定资源,但是可以理解,处理器10可以是能够支持多个硬件线程上下文(在不失明晰的情况下,其也被称作“线程上下文”,注意这与软件线程上下文是不同的)的单个物理处理器,每一个硬件线程上下文包括一组架构状态。在一些实施例中,某些资源对这些线程上下文是可见的,而其它资源是不可见的。因此,如图1所示,定序器20中的每一个可以对应一个线程上下文。当使得这些线程上下文中的至少一些(例如,n个中的m个,m≤n)对操作系统可见时,这些线程上下文有时被称为逻辑处理器或受OS管理的定序器(OMS)。每个线程上下文分别维护一组架构状态AS1-ASn。所述架构状态包括,例如,数据寄存器、段寄存器、控制寄存器、调试寄存器和大部分模式相关寄存器。线程上下文可以共享物理处理器的大部分微架构资源,例如高速缓存、执行单元、分支预测器、控制逻辑和总线。尽管可以共享这样的功能部件,但是处理器10的每个线程上下文能够独立地生成下一指令地址(并且执行例如从指令高速缓存、指令执行高速缓存或追踪高速缓存中进行取指(fetch))。与一个线程上下文对应的每一个定序器20与相应的架构状态40(统称)相关联。更具体地,例如,架构状态(AS1)40a可以与定序器20a相关联,AS240b可以与定序器20b相关联,AS340c可以与定序器20c相关联,并且AS440d可以与定序器20d相关联。
使用处理器10或类似的这种处理器的时候,可以发生基于ISA的定序器间通信而不涉及OS。例如,在共享存储器多处理范型中,应用程序员可以将一个软件程序(即,应用程序或进程)分成多个并发运行的任务,以便体现并行性。同一个软件程序(“进程”)的所有线程共享存储器地址空间的公共逻辑视图。然而,OS线程可以与多个可能不是由操作系统生成、调度或管理的用户级线程相关联。为了区别于OS线程,这种用户级线程可以被称为“shred”。这些shred可能对OS调度器是不可见的,因此OS并不管理相关的OS线程何时或如何调度shred在指定的逻辑定序器地址上运行。通常OS线程自己负责调度何时及如何运行它的其中一个shred。
在架构上对于基于ISA的定序器间通信的支持可以包括对ISA的扩展,从而提供一个或更多指令以允许用户直接地操纵定序器之间的控制和状态转移。这种指令可以包括这样的指令:或者令第一定序器向另一个(即,第二)定序器发送信号(这里,一条指令被称为shred转移或“SXFR”指令,其可以发送被称为外出情景(egress scenario)的外出控制信息,并且也可以携带数据有效载荷),或者设置第二定序器来监视这种信号(这里被称作shred监视器或“SEMONITOR”指令)以及在接收到该信号时(被称为进入情景(ingress scenario))异步地把控制转移到处理机(handler)。
在其中加速器52具有异构ISA或者是非定序器的实施例中,可以实现(用硬件、固件或者甚至用软件,取决于具体实施例)对应的外框架54(可以是有限状态机(FSM)或虚拟化层),使得加速器52能够参与到定序器间通信中。这种基于ISA的定序器间通信在到加速器52的进入方向提供了一种信令协议,使得其可以监视并响应来自另一个定序器或外定序器的、用SXFR发送的进入情景,所述进入情景包括针对外定序器的架构状态的GET和/或SET指令。此外,信令协议包括从加速器52用外出情景来通知相应的定序器20的外出通信,所述外出情景包括用于异常处理的指示,例如,针对诸如页故障这样的事件的代理执行请求。
为了降低开销,定序器20与加速器52之间通过定序器感知(sequencer-aware)指令进行的基于ISA的定序器间通信可以不需要涉及OS。这样,能够避免使用OS的设备驱动程序栈,而是能够实现定序器20和加速器52之间的直接通信。
在各种实施例中,可以在诸如集成具有异构ISA的受应用程序管理的外定序器的CMP系统这样的系统中实现地址转换重映射(ATR)和协作异常处理(CEH),在所述外定序器上执行程序时可能引发页故障或异常。使用本发明的实施例,OMS和在OMS上运行的OS能够很好地处理在受应用程序管理的外定序器上遇到的页故障和异常。例如,为了简便包含具有不同ISA的外定序器的CMP的程序设计(尤其在单映像OS环境下),在OMS和外定序器之间可以支持虚拟共享存储器,即使当外定序器可能与OMS具有不同的地址转换硬件机制时也是如此。当在外定序器上运行的代码引发关于虚拟地址到物理地址转换的架构或微架构上的故障状况时,实施例可以由在OMS上运行的OS来处理该故障状况(架构上的或微架构上的)。
类似地,可以对不同的定序器中的不同的数据类型执行操作。作为一个例子,各种定序器可以以并行方式(例如,以单指令多数据(SIMD)或多指令多数据(MIMD)方式)执行,使得可以并发地使用每个资源以提高性能。当在外定序器上出现异常时,所述异常可以被避开而转给OMS。然而,不同的数据类型会使这很困难。因此,在一些实施例中,外定序器可以包括用于辅助把该外定序器的本地数据类型变换为更适合OMS的格式的硬件。例如,外框架可以和外定序器相耦合,以处理这种数据变换并且支持定序器间通信。作为一个例子,外定序器的SIMD数据类型能够被变换为标量值,用于在OMS上进行异常处理。
现在参考图2,示出的是根据本发明的一个实施例的系统的一部分的框图。如图2所示,系统100包括处理器110,其可以是具有多个定序器的CMP。具体地,图2的实施例包括四个定序器120a-120d(统称定序器120)。尽管为了便于说明,示出了四个这种定序器,但是可以理解本发明的范围在这点上并不限于此。在许多实现中,定序器120a-120d中的一个或多个可以具有异构ISA或者是相对于系统100的本地ISA115异构的其它资源。为了便于说明,第一定序器120a可以是具有本地ISA的定序器。例如,在一个实施例中,第一定序器120a可以是IA-32CPU,尽管本发明的范围在这点上并不限于此。相应地,第一定序器120a作为OMS。一个或更多其它定序器120也可以是基于ISA-32的、实现本地ISA操作的定序器。然而,至少其中一个定序器120,例如,第三定序器120c,可以是异构定序器。为了便于说明,第三定序器120c可以是异构资源,例如,图形处理单元(GPU)或其它这种具有不同(非本地)ISA的异构引擎。这样,第三定序器120c作为受应用管理的外定序器。作为一个例子,第一定序器120a可以运行像WindowsTM或LinuxTM这样的基于IS-32的单映像OS,并且其通过定序器间信令机制与第三定序器120c进行互操作,例如,经由基于SXFR的定序器间信令机制。为了支持基于ISA的定序器间通信,第三定序器120c可以包括外框架。同时,这里,外框架和其基础的第三定序器120c一起也被称为外定序器。
在各种实施例中,可以实现地址转换重映射(ATR),以便通过代理执行页故障处理,支持在多个定序器之间的共享虚拟存储器。更具体地,可以使用第三定序器120c和第一定序器120a之间的定序器间通信机制,来在第一定序器120a中用代理执行的方式执行这种页故障处理。因此,当在第三定序器120c上运行的代码引发例如关于虚拟地址到物理地址的转换的架构故障(例如,页故障)或微架构故障状况(例如,TLB缺失)时,可以通过第一定序器120a上的地址转换机制处理第三定序器120c上的故障状况,就像被本地OS实现一样。因此,如图2所示,在遇到这种故障状况时,第三定序器120c向第一定序器120a传送一条消息,例如,经由SXFR消息。接着,第一定序器120a可以执行故障处理过程(可以是基于硬件、软件或固件的或其组合),以便确定故障地址是否存在于耦合到处理器110上的第一旁路转换缓冲(TLB)130中。如果没有存在,则启动翻页(pagewalk)机制,以使得从页表135获得所请求的页并将其存储在第一TLB130中。注意,从第一TLB130到页表135的翻页机制是根据OS支持的翻页机制实现的,在包括常规处理器TLB设计的硬件和包括虚拟存储器系统的OS软件中支持所述OS支持的翻页机制。因此,根据地址转换重映射机制(重映射器)145,这种用定序器120a的格式表示的虚拟地址到物理地址的转换(例如,页表项)被重映射为第三定序器120c的本地格式。然后,能够向耦合到第三定序器120c上的第二TLB140提供该被重映射的页转换。接着,现在第三外定序器120c能够访问由第一定序器120a提供的同一个物理页。实质上,定序器120a和120c都能够共享公共的虚拟地址空间而不管这两个定序器之间的异构性。重映射器145可以被实现为硬件、软件或固件、或其组合。此外,如图2的虚线框所示,重映射器145的功能可以被实现为例如第一定序器120a或第三定序器120c的一部分。这样,以本地模式处理了故障状况,并且向第三定序器120c提供被请求的信息,使得在OMS(例如,第一定序器120a)上运行的OS可以很好地处理异构资源(例如,第三定序器120c)的故障状况。
还要注意,在图2的实施例中,存在着存储器分级结构的附加层。具体地,如图2所示,高速缓存150被耦合到第一TLB 130上,并且对应的高速缓存160被耦合到第二TLB 140上。而高速缓存150和160又被耦合到存储器170上,在一个实施例中,存储器170可以是动态随机存取存储器(DRAM)。尽管在图2的实施例中,示出这种特定的实现,但是可以理解,本发明的范围在这点上并不限于此。
在各种实现中,可以实现执行故障处理的不同方式。现在参考图3,示出的是根据本发明的一个实施例的用于处理异构资源中的故障状况的方法的流程图。如图3所示,方法200可以开始于确定在外定序器上是否遇到转换故障(菱形210)。这种转换故障可以对应于关于虚拟地址到物理地址的转换的架构或微架构故障状况。在遇到这种故障后,外定序器可以挂起其代码执行并且记录关于该故障的信息(块220)。更具体地,外定序器可以记录故障指令状况,包括故障虚拟地址。这种故障地址可以对应在外定序器的转换缓冲器(例如TLB)中不可用的一个或更多虚拟地址。如果没有遇到这种故障,则控制传到块215,在这里,会继续在该外定序器上执行指令,则控制循环回菱形210。
继续参考图3,控制从块220传到块230。这里,可以用信号向OMS通知该故障(块230)。更具体地,外定序器可以向OMS发信号以向其通知该故障。在一个实施例中,可以发送代理执行请求信号。发送该信号时可以带有关于该故障的消息信息。这种信息可以包括故障类型的标识和故障地址。在一些实施例中,在该消息中关于该故障的信息可以提供指向可由外定序器和OMS访问的诸如寄存器或物理存储器这样的存储位置的指针,在所述存储位置中存储着该故障细节的描述符。于是,OMS在其代理执行期间能够取回这种信息,并且反过来,代理执行的结果能够被存储在那里以便随后外定序器取回该结果。在一些实施例中,引发该故障指令的外定序器的用于承载地址的本地数据类型可能拥有多个遇到故障的地址。例如,GPU外定序器可能遇到涉及本地数据类型向量或数组的转换故障,而OMS(像IA-32处理器)通常仅仅支持诸如字、字节等等这样的标量数据类型用于存储器访问。因此,在这种实施例中,外定序器可以负责向OMS发信号以告知应如何进行故障处理,例如,一次一个地址或者在一个组合式代理执行请求中打包多个地址。
响应代理执行请求信号,OMS可以处理该转换故障(块240)。更具体地,可以启动OMS的本地转换故障处理机制以便执行该处理。处理机可以对故障地址进行访问,以便保证在OMS处解决该故障。如果所期望的对应该故障地址的存储器区域(例如,页)没有驻留在与该OMS相关的转换缓冲器(例如TLB)中,则当执行访问时,处理机会引发TLB缺失故障。而这又会启动OMS的翻页器从存储器获得所要求的页项,并且相应地对TLB进行更新。而如果该访问又遇到页故障,则将在OMS上启动OS换页(paging)机制,其将把所要求的页从外部存储装置(例如磁盘)取到主存储器中,然后相应地对页表进行更新,并且对应的页项将被填入到OMS的TLB中。在任一情况下,对应于所要求的页的页表项然后可以被转换为外定序器的格式(块250)。因此,可以执行地址转换重映射过程。也就是说,由于OMS和外定序器的换页系统的格式不同,OMS的页表项的格式可以被“变换”或“译码”为外定序器的格式。在各种实施例中,可由OMS或外定序器或者媒介来执行这种处理。
仍旧参考图3,当OMS完成对于访问缺失页的代理执行时,其可以用信号向外定序器通知代理执行完成(块260)。于是,可以继续外定序器上的执行。因此,外定序器可以恢复被挂起的执行并且重新执行该故障指令(块270)。如图3所示,控制从块270传到块215,以便继续外定序器的执行。通过OMS执行的页更新,先前的故障指令应该不会再引发故障,并且外定序器能够继续向前。否则,在菱形210处,可以产生关于另一个所引发的转换故障的判定,并且可以进行方法200的进一步执行。尽管在图3的实施例中用特定的实现进行描述,但是可以理解,本发明的范围在这点上并不限于此。
尽管转换机制不同,但使用方法200或类似的这种方法在系统的OMS中处理转换故障,通用OMS能够用代理执行模式来处理外定序器上的页故障或TLB故障。因此,在外定序器中不需要支持对OMS的本地ISA的正确地址转换进行仿真或执行。如此,外定序器不需要被扩展成带有OMS的本地翻页机制。例如,对于IA-32OMS,支持ATR的GPU外定序器不需要直接在其硬件中实现对IA-32的换页机制的支持。相反,其仅仅需要检测它自己的换页支持机制上的页故障或TLB缺失,然后启动ATR机制并求助于OMS的代理执行,以便使用OMS上的OS来代表该外定序器执行地址转换。在代理执行之后,页项能够被重映射为GPU的格式并且被装在GPU的TLB中。如此,当从OMS向外定序器提供被重新映射的转换(例如,页表项)时,可以实现外定序器的本地翻页机制(例如,Windows Advanced SchedulerTM配置的GPU页项格式),以便该虚拟地址到物理地址的转换对应于共享虚拟存储器空间或地址空间中的正确位置。结果,尽管OMS和外定序器用于支持地址转换的硬件机制不同,但是它们都能够实现共享的虚拟存储器。
现在参考图4,示出的是根据本发明的另一个实施例的系统的一部分的框图。如图4所示,系统300包括处理器110,其可以遵从图2的处理器110。为了简化说明,在图4中仅仅示出针对处理器110的定序器120a-d和ISA115。
为了通过OMS机制,如OMS代码流中的结构化异常处理(SEH),对在外定序器上遇到的异常(例如,FP上溢(overflow)或下溢(underflow))进行处理,代理执行可以通过协作异常处理机(CEH)机制来支持在外定序器上遇到的异常。在某些情况下可以使用CEH,因为一方面,某种异常处理(例如,遵从电气电子工程师协会(IEEE)的双精度FP异常处理)要求相当复杂的硬件(以及软件)实现;另一方面,行业标准的微处理器和传统OS已经扩展支持异常处理。对于给定的外定序器,通过利用OMS(通常是诸如IA-32处理器这样的通用处理器)来使用已有的OS机制(诸如结构化异常处理)代表外定序器对异常进行处理,CEH使得能够简化外定序器的硬件。外定序器的硬件可以检测异常并且通知OMS,以请求代理执行。
在各种实施例中,第三定序器120c可以具有不同的被执行操作的本地数据类型。因此,如果在第三定序器120c上在操作期间出现异常,这些不同的本地数据类型将会产生与在第一定序器120a上执行的异常处理不同的异常处理。例如,当浮点(FP)是第一定序器120a上的本地数据类型时,第一定序器120a和本地OS可以支持标准FP异常处理。然而,第三定序器120c的一些实现可以支持FP向量,因此,单指令多数据(SIMD)操作适用于第三定序器120c上的这种复合数据类型。因此,如果发生异常,则对异常进行处理将会涉及到第一定序器120a或底层OS不理解的复合本地数据类型。
为了在定序器中产生不同的异常处理,与第一定序器120a相关联的第一异常处理机320可以具有和与第三定序器120c相关联的第二异常处理机350不同的机制。为了最小化在第三定序器120c中需要的支持,异常处理功能可以被转移给第一定序器120a。于是,第三定序器120c将向第一定序器120a发送信号,并向其通知该异常。在其上引发异常的本地数据类型与第一定序器120a上的数据类型(可架构性地处理其异常)不同的情况下,可以执行变换,例如,通过把FP向量分成FP标量,并且把向量FP上的异常状况映射为第一定序器120a能够理解的标量FP异常。然后,第三定序器120c可以向第一定序器120a发送信号,以便对针对该异常的请求进行代理处理。在其它一些实施例中,第三定序器120c可以挂起执行,并且依靠第一定序器120a随后请求其状态(通过状态SAVE(保存)机制),然后使用软件方法来仿真第三定序器的异常出现。同样,在不失一般性的情况下,可以假设第一定序器120a是OMS,尽管通常其可以是能够处理异常而不引发OS服务的受应用管理的定序器(例如,通过应用软件仿真能够完成对某异常的修复(fixup))。
当在第一定序器120a上处理来自第三定序器120c的代理执行请求信号时,处理机可以访问异常记录并且确保在那里解决该异常。在OMS上对该异常的处理可以由硬件、固件或在第一定序器120a上运行的软件(包括,例如,OS异常处理机和SHE处理软件栈)执行。
由于第一定序器120a和第三定序器120c的本地数据格式的不同,第一定序器120a上的异常修复数据格式可能需要被“变换”或“译码”为第三定序器120c的格式。这种变换能够用硬件、固件或软件来完成,取决于与异常相关的数据类型(单精度、双精度等等)。当第一定序器120a完成对于修复异常的代理执行时,其用信号通知第三定序器120c该代理执行完成,并且在第三定序器120c上被挂起的执行恢复。因此,第三定序器120c将恢复执行(就好像是在本地执行修复一样)并且开始向前进展。
如图4所示,被称为CEH 340的转换机制可以向第二异常处理机350提供用其本地格式表示的、在第一异常处理机320中执行的被请求的异常的结果。如图4中虚线框所示,CEH 340的功能可以被实现为例如第一定序器120a或第三定序器120c的一部分。这样,用这样一种模式处理了异常状况,使得异构资源(例如,第三定序器120c)的异常可以被在OMS上运行的OS很好地处理,并且代理执行的结果被提供给第三定序器120c。
在各种实现中,可以实现执行异常处理的不同方式。现在参考图5,示出的是根据本发明的一个实施例的用于处理异构资源中的异常状况的方法的流程图。如图5所示,方法400可以开始于确定在外定序器中是否出现异常(菱形410)。这种异常可以对应于数值异常,例如FP异常。在引发这种异常后,外定序器可以挂起其代码执行并且记录关于该异常的信息(块420)。更具体地,外定序器可以记录导致该异常状况和异常记录的指令。如果没有引发这种异常,则控制传到块415,在这里,会继续在该外定序器上执行指令,则控制循环回菱形410。
继续参考图5,控制从块420传到块430。这里,可以用信号向OMS通知该异常(块430)。更具体地,外定序器可以向OMS发信号以向其通知该异常。在一个实施例中,可以发送代理执行请求信号。发送该信号时可以带有关于该异常的消息信息。这种信息可以包括异常类型的标识和导致该异常的指令的地址。能够实现向OMS传送异常的不同方式。例如,在一些实施例中,外定序器可以发送定序器间通信,包括异常的标识以及指令指针(例如,EIP),以使得OMS能够处理该异常,或者也可以实现如上所述的基于指针的方法。
响应于代理执行请求信号,OMS可以对该异常进行处理(块440)。更具体地,可以启动OMS的本地异常处理机制以便执行该处理。处理机可以访问异常记录并解决该异常。作为一个例子,OMS可以重放所述指令指针指向的指令并且用软件仿真所请求的操作。在一些实施例中,这种仿真可以被包含在本地OS里面。当完成在OMS上的代理执行处理之后,异常结果可以被转换为外定序器的格式(块450)。因此,可以发生协作异常处理转换过程。在不同实施例中,该处理过程可由OMS或外定序器或媒介执行,以便把结果变换为外定序器的格式。例如,在一个实施例中,在异常处理的修复之后,OMS能够更新外定序器的存储器映象,然后在外定序器恢复执行之前,使用复原指令把存储器映像复原回外定序器。
仍旧参考图5,当OMS完成对于异常处理的代理执行时,其可以用信号向外定序器通知代理执行完成(块460)。因此,可以继续外定序器上的执行(块415)。尽管在图5的实施例中用特定的实现进行描述,但是可以理解,本发明的范围在这点上并不限于此。尽管异常处理机制不同,但是使用方法400或类似的这种方法在系统的OMS上处理异常,通用OMS能够用代理执行模式来处理外定序器上的异常。因此,在外定序器中不需要支持对异常处理的仿真或执行。
因此使用本发明的实施例,可以简化外定序器的硬件和软件中的设计,并且用于处理各种异常(例如架构的浮点异常或与其它架构事件相关的异常)的功能能够被通过代理执行而转移给OMS。如此,能够配置并优化外定序器,以处理诸如图形处理或其它固定功能操作这样的特定功能的计算处理,而不增加用于支持异常处理的逻辑或延迟关键路径。作为替代,当出现这种架构事件时外定序器能够引起异常并且把处理转移给OMS。
在其它实施例中,通过根据本发明的实施例的异常处理,可以实现对外定序器的硬件的未来增强的支持。也就是说,可以实现指令或其它程序设计结构,使得在硬件中支持新特性。然而,为了有助于各种开发过程,例如,早期软件实现,可以在硬件被完全实现在外定序器中之前就定义和利用这些指令或结构。
相应地,为了支持执行这些指令或结构并且加速开发周期,实施例可以实现异常处理来处理这些操作的仿真。当外定序器面对这样的指令或结构时,外定序器可以引发一个异常,该异常被经由CEH(例如,通过定序器间通信)提供给OMS。OMS可以处理这种异常,例如,通过在OMS上用软件来仿真该操作。因此,可以改进开发周期,这是因为能够实现众多的补丁来支持对新增的外定序器功能的仿真,而无需修补外定序器有限的微代码空间,也无需多个硬件版本(这需要与新的掩膜和晶片制备有关的延迟)。
例如,为了支持开发,外定序器可以提供用于新指令的指令译码机制。然而,其全部需求是针对这些将要进行译码的指令,使外定序器能够引起异常,从而使得OMS能够处理该异常。这样,在外定序器中提供实际的全部硬件功能之前,就可以进行软件开发。
通过使用本发明的实施例,外定序器和OMS可以使用共享的虚拟存储器空间。因此,能够避免对基于OS的驱动程序的需求和与其相关的开销。此外,也能够消除用于OMS和外定序器的独立的地址空间的开销。相应地,能够避免经由OS机制在外定序器和OMS之间进行的低效的直接存储器存取(DMA)数据传送。而是,通过传送指向共享存储器中的位置的指针,可以实现从外定序器到OMS的数据传送(反之亦然)而不需要实际的数据传送,这降低了时间和补偿消耗。同样,能够用独立于OS的方式执行定序器间通信和它们之间的数据操作,这降低了复杂性和开销。
因此,能够在架构上集成具有不同故障和异常结构的定序器,使得单个映像OS能够处理多种异常,以支持已知的(例如,遗留的)异常处理模型,例如SHE等等,并且能够健壮地支持虚拟共享存储器系统。结果,外定序器的硬件不需要包含或重复OMS的ISA功能和复杂性来自发地处理异常和故障状况。而是,外定序器仅需要检测它自己的故障或异常,并且伪装桩(veneer stub)(例如,外框架)或其它机制可以转换数据格式并且向能够执行全面处理的OMS报告异常或故障状况。然后,结果被转换回外定序器的本地格式(例如,页表项格式或本地的复合数据格式)。
因此,外定序器的硬件并不需要重复OMS的换页机制和/或异常处理机制的逻辑和复杂性。而是,外定序器可以提供一个最小化的钩子(hook),来检测异常/故障、挂起执行、用信号通知OMS进行代理执行以及接收并转换返回给外定序器的结果。这样的活动可以以最小代价完成并且不进入关键路径。因此,从程序设计模型的角度看,因为能够应用基于共享存储器的同步软件范型,所以编程实现与OMS共享虚拟存储器的外定序器会更简单。此外,应用程序能够直接利用外定序器的计算能力而不必依赖可能导致更高系统开销并降低集成效果的OS驱动程序。例如,在没有共享存储器的情况下,即使OMS和外定序器共享最后一级高速缓存,但是一些数据计算业务将必须去片外,并且通过例如OMS和外定序器之间的前端总线。相反,使用本发明的实施例支持的共享存储器模型,OMS和外定序器之间的共享工作集能够驻留在相干的最后一级高速缓存中,并且不需要到片外进行通信。结果,在同一个线程上下文中使用OMS和外定序器的应用程序可以受益于片上存储器分级结构的带宽并且获得基于驱动程序的方法不可能达到的性能。
这些实施例可以被实现在许多不同的系统类型中。现在参考图6,示出的是根据本发明的一个实施例的系统的框图。如图6所示,多处理器系统500是一个点到点互连系统,并且包括通过点到点互连550相耦合的第一处理器570和第二处理器580。如图6所示,处理器570和580中的每一个可以是包括第一和第二处理器内核(即,处理器内核574a和574b以及处理器内核584a和584b)的多核处理器。处理器570和580中的每一个还可以包括外定序器,即,第一外定序器575和第二外定序器585。如上所述,外定序器575和585可以是相对于处理器内核570和580的剩余资源异构的资源。尽管每个处理器仅示出一个外定序器,但是可以理解,本发明的范围不受限于此,并且在给定的处理器中可以存在多个外定序器。
第一处理器570还包括存储器控制中心(MCH)572和点到点(P-P)接口576和578。类似地,第一处理器580包括MCH 582和P-P接口586和588。如图6所示,MCH 572和MCH 582把处理器耦合到各自的存储器,即存储器532和存储器534,其可以是本地接到各自处理器的主存储器的一部分。
通过P-P互连552和554,第一处理器570和第二处理器580可以分别被耦合到芯片组590上。如图6所示,芯片组590包括P-P接口594和598。此外,芯片组590包括用于将芯片组590和高性能图形引擎538相耦合的接口592。在一个实施例中,可以使用高级图形端口(AGP)总线539把图形引擎538耦合到芯片组590上。AGP539可以遵守由位于Santa Clara,California的英特尔公司在1998年5月4日发布的AcceleratedGraphics Port Interface Specification,Revision 2.0。作为选择,点到点互连539可以耦合这些部件。
反过来,芯片组590可以经由接口596被耦合到第一总线516上。在一个实施例中,第一总线516可以是如在日期为1995年6月的PCILocal Bus Specification,Production Version,Revision 2.1中定义的外围组件互连(PCI)总线,或诸如PCI Express总线或其它第三代输入/输出(I/O)互连总线这样的总线,但是本发明的范围并不受限于此。
如图6所示,各种I/O设备514连同总线桥518可以被耦合到第一总线516上,其中所述总线桥518把第一总线516耦合到第二总线520上。在一个实施例中,第二总线520可以是少针脚型(LPC)总线。在一个实施例中,可以被耦合到第二总线520上的各种设备包括,例如,键盘/鼠标522、通信设备526和诸如磁盘驱动或其它大容量存储设备这样的可以包括代码530的数据存储单元528。此外,音频I/O524可以被耦合到第二总线520上。注意,也可以是其它架构。例如,系统可以实现多点总线或其它这种架构,以代替图6的点到点架构。
所述实施例可以用代码来实现,并且可以被存储在存储介质中,所述存储介质上所存的指令能够被用于对系统进行编程以使其执行所述指令。存储介质可以包括但并不限于:任意类型的盘,包括软盘、光盘、光盘只读存储器(CD-ROM)、可重写光盘(CD-RW)和磁光盘;半导体器件,例如只读存储器(ROM)、随机存取存储器(RAM)(诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦可编程只读存储器(EPROM)、闪速存储器、电可擦可编程只读存储器(EEPROM);磁卡或光卡;或任何其它类型的适合存储电子指令的媒体。
尽管本发明是参考有限数目的实施例来描述的,但本领域的技术人员应该理解,能够进行很多修改和变化。所附权利要求旨在涵盖落在本发明的实质和范围之内的所有这种修改和变化。
Claims (22)
1.一种用于处理故障或异常的方法,包括:
向处理器的第一定序器传送要求处理在所述处理器的加速器上出现的所述故障或异常的请求,其中所述加速器包括相对于所述第一定序器异构的资源;以及
响应于所述请求,在所述第一定序器中根据所述第一定序器的存储器换页机制来处理所述故障或异常以得到地址转换,并且根据所述加速器的存储器换页机制来在重映射器中转换所述地址转换,以使所述第一定序器和所述加速器能够共享公共的虚拟地址空间。
2.根据权利要求1所述的方法,其中,传送所述请求包括:通过定序器间协议发送所述请求,并且没有操作系统的支持,其中所述加速器对所述操作系统是透明的。
3.根据权利要求1所述的方法,还包括:通过与所述第一定序器的第一指令集架构相关的、基于操作系统的处理机来处理所述故障或异常,其中所述加速器包括具有第二指令集架构的资源。
4.根据权利要求1所述的方法,还包括:把所述处理的结果转换为所述加速器的格式。
5.根据权利要求1所述的方法,还包括:通过与所述第一定序器相关的、基于操作系统的处理机来处理所述异常以得到所述第一定序器的格式的结果,并且把所述结果转换为所述加速器的格式。
6.根据权利要求1所述的方法,还包括:在所述加速器上执行处理任务,并且将结果存储在所述第一定序器能够访问的共享存储器中,而不涉及操作系统。
7.根据权利要求1所述的方法,还包括:通过开发补丁代码,在所述第一定序器中处理所述异常,其中所述开发补丁代码用于对处于开发中的所述加速器的硬件的功能进行仿真。
8.一种能够处理地址转换故障的处理器,包括:
用于执行指令的第一定序器;
耦合到所述第一定序器的第二定序器,所述第二定序器包括相对于所述第一定序器异构的资源,其中,当所述第二定序器引发所述地址转换故障时,所述第二定序器向所述第一定序器发送要求进行代理执行的请求;以及
重映射器,用于把在所述第一定序器中生成的地址转换映射为所述第二定序器的地址转换格式,所述地址转换格式是所述第二定序器的本地格式。
9.根据权利要求8所述的处理器,其中,所述第一定序器和所述第二定序器在单基底上。
10.根据权利要求8所述的处理器,其中,所述第一定序器包括具有第一指令集架构的处理引擎,并且所述第二定序器包括具有第二指令集架构的处理引擎。
11.根据权利要求10所述的处理器,其中,所述第一定序器包括与所述第一指令集架构相关的第一地址转换机制,并且所述第二定序器包括与所述第二指令集架构相关的第二地址转换机制。
12.根据权利要求8所述的处理器,其中,所述第一定序器用于响应所述第二定序器中的、与所述第一定序器的非本地数据类型相关的异常而执行异常处理机。
13.根据权利要求12所述的处理器,其中,所述第二定序器包括变换器,所述变换器用于把所述非本地数据类型的异常变换为所述第一定序器的本地数据类型。
14.根据权利要求8所述的处理器,其中,所述第二定序器用于发送带有聚集的故障地址的代理执行请求,所述聚集的故障地址对应于在所述第二定序器的转换缓冲器中不可用的所述第二定序器的本地数据类型的多个地址。
15.根据权利要求8所述的处理器,还包括:耦合到所述第一定序器的第一转换缓冲器,和耦合到所述第二定序器的第二转换缓冲器。
16.根据权利要求15所述的处理器,其中,所述第一转换缓冲器用于存储响应于所述地址转换故障而从页表接收到的地址转换,并且用于向耦合到所述第一转换缓冲器和所述第二转换缓冲器的重映射器提供所述地址转换。
17.根据权利要求16所述的处理器,其中,所述重映射器用于把所述地址转换从所述第一定序器的格式映射为所述第二定序器的格式。
18.根据权利要求8所述的处理器,其中,所述第一定序器用于根据所述第一定序器的换页机制得到地址转换,并且根据所述第二定序器的换页机制来转换所述地址转换。
19.一种能够处理转换故障状况或异常状况的系统,包括:
第一定序器,用于执行第一操作系统的指令,所述第一定序器包括第一地址转换处理机和第一异常处理机;
耦合到所述第一定序器的第二定序器,所述第二定序器包括相对于所述第一定序器异构的计算资源,其中所述第二定序器用于请求所述第一定序器来处理在所述第二定序器上出现的所述转换故障状况或异常状况;
重映射器,用于把响应于所述转换故障状况而在所述第一定序器中生成的地址转换映射为所述第二定序器的地址转换格式,所述地址转换格式是所述第二定序器的本地格式;以及
耦合到所述第一定序器和所述第二定序器的动态随机存取存储器。
20.根据权利要求19所述的系统,其中,所述第一定序器和所述第二定序器包括处理器的异构资源。
21.根据权利要求20所述的系统,其中,所述动态随机存取存储器包括用于所述第一定序器和所述第二定序器的共享虚拟存储器,其中,所述第一定序器包括中央处理器而所述第二定序器包括图形协处理器。
22.根据权利要求19所述的系统,其中,所述第二定序器用于把具有第二数据类型的数据转换为所述第一定序器的第一数据类型,其中在所述第二数据类型上出现了所述异常状况。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/477,643 US7487341B2 (en) | 2006-06-29 | 2006-06-29 | Handling address translations and exceptions of a heterogeneous resource of a processor using another processor resource |
US11/477,643 | 2006-06-29 | ||
CN2007800199827A CN101454753B (zh) | 2006-06-29 | 2007-06-27 | 处理异构资源的地址转换和异常 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800199827A Division CN101454753B (zh) | 2006-06-29 | 2007-06-27 | 处理异构资源的地址转换和异常 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102981800A CN102981800A (zh) | 2013-03-20 |
CN102981800B true CN102981800B (zh) | 2015-08-05 |
Family
ID=38845982
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800199827A Expired - Fee Related CN101454753B (zh) | 2006-06-29 | 2007-06-27 | 处理异构资源的地址转换和异常 |
CN201210375247.2A Expired - Fee Related CN102981800B (zh) | 2006-06-29 | 2007-06-27 | 处理异构资源的地址转换和异常 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800199827A Expired - Fee Related CN101454753B (zh) | 2006-06-29 | 2007-06-27 | 处理异构资源的地址转换和异常 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7487341B2 (zh) |
CN (2) | CN101454753B (zh) |
DE (1) | DE112007001466T5 (zh) |
WO (1) | WO2008002978A1 (zh) |
Families Citing this family (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8051247B1 (en) | 2005-09-28 | 2011-11-01 | Oracle America, Inc. | Trace based deallocation of entries in a versioning cache circuit |
US7606975B1 (en) | 2005-09-28 | 2009-10-20 | Sun Microsystems, Inc. | Trace cache for efficient self-modifying code processing |
US7966479B1 (en) | 2005-09-28 | 2011-06-21 | Oracle America, Inc. | Concurrent vs. low power branch prediction |
US7877630B1 (en) | 2005-09-28 | 2011-01-25 | Oracle America, Inc. | Trace based rollback of a speculatively updated cache |
US8019944B1 (en) | 2005-09-28 | 2011-09-13 | Oracle America, Inc. | Checking for a memory ordering violation after a speculative cache write |
US7870369B1 (en) | 2005-09-28 | 2011-01-11 | Oracle America, Inc. | Abort prioritization in a trace-based processor |
US8499293B1 (en) | 2005-09-28 | 2013-07-30 | Oracle America, Inc. | Symbolic renaming optimization of a trace |
US7949854B1 (en) | 2005-09-28 | 2011-05-24 | Oracle America, Inc. | Trace unit with a trace builder |
US8037285B1 (en) | 2005-09-28 | 2011-10-11 | Oracle America, Inc. | Trace unit |
US8032710B1 (en) | 2005-09-28 | 2011-10-04 | Oracle America, Inc. | System and method for ensuring coherency in trace execution |
US8024522B1 (en) | 2005-09-28 | 2011-09-20 | Oracle America, Inc. | Memory ordering queue/versioning cache circuit |
US7987342B1 (en) | 2005-09-28 | 2011-07-26 | Oracle America, Inc. | Trace unit with a decoder, a basic-block cache, a multi-block cache, and sequencer |
US7953961B1 (en) | 2005-09-28 | 2011-05-31 | Oracle America, Inc. | Trace unit with an op path from a decoder (bypass mode) and from a basic-block builder |
US7937564B1 (en) | 2005-09-28 | 2011-05-03 | Oracle America, Inc. | Emit vector optimization of a trace |
US8370576B1 (en) | 2005-09-28 | 2013-02-05 | Oracle America, Inc. | Cache rollback acceleration via a bank based versioning cache ciruit |
US8015359B1 (en) * | 2005-09-28 | 2011-09-06 | Oracle America, Inc. | Method and system for utilizing a common structure for trace verification and maintaining coherency in an instruction processing circuit |
US8214574B2 (en) * | 2006-09-08 | 2012-07-03 | Intel Corporation | Event handling for architectural events at high privilege levels |
US8370609B1 (en) | 2006-09-27 | 2013-02-05 | Oracle America, Inc. | Data cache rollbacks for failed speculative traces with memory operations |
US7768518B2 (en) * | 2006-09-27 | 2010-08-03 | Intel Corporation | Enabling multiple instruction stream/multiple data stream extensions on microprocessors |
US8010745B1 (en) | 2006-09-27 | 2011-08-30 | Oracle America, Inc. | Rolling back a speculative update of a non-modifiable cache line |
US8689215B2 (en) * | 2006-12-19 | 2014-04-01 | Intel Corporation | Structured exception handling for application-managed thread units |
US20080195896A1 (en) * | 2007-02-14 | 2008-08-14 | International Business Machines Corporation | Apparratus and method for universal programmable error detection and real time error detection |
GB2448523B (en) * | 2007-04-19 | 2009-06-17 | Transitive Ltd | Apparatus and method for handling exception signals in a computing system |
US8060729B1 (en) * | 2008-10-03 | 2011-11-15 | Altera Corporation | Software based data flows addressing hardware block based processing requirements |
US8719547B2 (en) | 2009-09-18 | 2014-05-06 | Intel Corporation | Providing hardware support for shared virtual memory between local and remote physical memory |
US8650337B2 (en) * | 2010-06-23 | 2014-02-11 | International Business Machines Corporation | Runtime determination of translation formats for adapter functions |
JP5533538B2 (ja) * | 2010-10-12 | 2014-06-25 | 富士通株式会社 | 情報処理装置、エミュレーション処理プログラム及びエミュレーション処理方法 |
US9417873B2 (en) | 2012-12-28 | 2016-08-16 | Intel Corporation | Apparatus and method for a hybrid latency-throughput processor |
US9361116B2 (en) | 2012-12-28 | 2016-06-07 | Intel Corporation | Apparatus and method for low-latency invocation of accelerators |
US10140129B2 (en) | 2012-12-28 | 2018-11-27 | Intel Corporation | Processing core having shared front end unit |
US10346195B2 (en) * | 2012-12-29 | 2019-07-09 | Intel Corporation | Apparatus and method for invocation of a multi threaded accelerator |
US20140244987A1 (en) * | 2013-02-22 | 2014-08-28 | Mips Technologies, Inc. | Precision Exception Signaling for Multiple Data Architecture |
DE102013022166B4 (de) | 2013-03-14 | 2024-04-25 | Nvidia Corporation | Seitenzustandsverzeichnis zur verwaltung eines vereinheitlichten virtuellen speichers |
DE102013022169A1 (de) | 2013-03-14 | 2014-09-18 | Nvidia Corporation | Fehlerpuffer zur verfolgung von seitenfehlern in einem vereinheitlichten virtuellen speichersystem |
US10031856B2 (en) | 2013-03-14 | 2018-07-24 | Nvidia Corporation | Common pointers in unified virtual memory system |
CN103970214B (zh) * | 2014-05-19 | 2018-05-04 | 浪潮电子信息产业股份有限公司 | 一种异构加速刀片式计算机系统架构 |
GB2530050B (en) * | 2014-09-10 | 2021-07-21 | Advanced Risc Mach Ltd | Debugging in a data processing apparatus |
US10296338B2 (en) * | 2016-12-09 | 2019-05-21 | Intel Corporation | System, apparatus and method for low overhead control transfer to alternate address space in a processor |
US10545816B2 (en) | 2017-05-01 | 2020-01-28 | International Business Machines Corporation | Managed hardware accelerator address translation fault resolution utilizing a credit |
US10289479B2 (en) | 2017-05-01 | 2019-05-14 | International Business Machines Corporation | Hardware accelerator address translation fault resolution |
US10572337B2 (en) | 2017-05-01 | 2020-02-25 | International Business Machines Corporation | Live partition mobility enabled hardware accelerator address translation fault resolution |
KR102482896B1 (ko) | 2017-12-28 | 2022-12-30 | 삼성전자주식회사 | 이종 휘발성 메모리 칩들을 포함하는 메모리 장치 및 이를 포함하는 전자 장치 |
US10846235B2 (en) | 2018-04-28 | 2020-11-24 | International Business Machines Corporation | Integrated circuit and data processing system supporting attachment of a real address-agnostic accelerator |
CN113806006A (zh) * | 2020-06-12 | 2021-12-17 | 华为技术有限公司 | 一种异构指令集架构下异常或中断的处理方法、装置 |
CN112217919B (zh) * | 2020-12-11 | 2021-03-23 | 广东省新一代通信与网络创新研究院 | 一种用于实现网络地址转换的方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6252612B1 (en) * | 1997-12-30 | 2001-06-26 | Micron Electronics, Inc. | Accelerated graphics port for multiple memory controller computer system |
US6408386B1 (en) * | 1995-06-07 | 2002-06-18 | Intel Corporation | Method and apparatus for providing event handling functionality in a computer system |
US6418523B2 (en) * | 1997-06-25 | 2002-07-09 | Micron Electronics, Inc. | Apparatus comprising a translation lookaside buffer for graphics address remapping of virtual addresses |
CN1650263A (zh) * | 2002-04-08 | 2005-08-03 | 国际商业机器公司 | 用于在分布式企业应用中进行问题确定的方法和系统 |
US7065633B1 (en) * | 1999-01-28 | 2006-06-20 | Ati International Srl | System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IT1228728B (it) * | 1989-03-15 | 1991-07-03 | Bull Hn Information Syst | Sistema multiprocessore con replicazione di dati globali e due livelli di unita' di traduzione indirizzi. |
DE69132300T2 (de) * | 1990-03-12 | 2000-11-30 | Hewlett Packard Co | Durch Anwender festgelegter direkter Speicherzugriff mit Anwendung von virtuellen Adressen |
US5953741A (en) * | 1996-11-27 | 1999-09-14 | Vlsi Technology, Inc. | Stack cache for stack-based processor and method thereof |
US6317706B1 (en) * | 1998-03-31 | 2001-11-13 | Sony Corporation | Simulation development tool for an embedded system |
US6282601B1 (en) * | 1999-03-31 | 2001-08-28 | International Business Machines Corporation | Multiprocessor data processing system and method of interrupt handling that facilitate identification of a processor requesting a system management interrupt |
US6651163B1 (en) * | 2000-03-08 | 2003-11-18 | Advanced Micro Devices, Inc. | Exception handling with reduced overhead in a multithreaded multiprocessing system |
US6925547B2 (en) * | 2000-12-14 | 2005-08-02 | Silicon Graphics, Inc. | Remote address translation in a multiprocessor system |
US6907519B2 (en) * | 2001-11-29 | 2005-06-14 | Hewlett-Packard Development Company, L.P. | Systems and methods for integrating emulated and native code |
US20070005927A1 (en) * | 2005-06-30 | 2007-01-04 | Khosravi Hormuzd M | Systems and methods for remote triggering of page faults |
CN100375067C (zh) * | 2005-10-28 | 2008-03-12 | 中国人民解放军国防科学技术大学 | 异构多核微处理器局部空间共享存储方法 |
-
2006
- 2006-06-29 US US11/477,643 patent/US7487341B2/en active Active
-
2007
- 2007-06-27 CN CN2007800199827A patent/CN101454753B/zh not_active Expired - Fee Related
- 2007-06-27 WO PCT/US2007/072243 patent/WO2008002978A1/en active Application Filing
- 2007-06-27 DE DE112007001466T patent/DE112007001466T5/de not_active Ceased
- 2007-06-27 CN CN201210375247.2A patent/CN102981800B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6408386B1 (en) * | 1995-06-07 | 2002-06-18 | Intel Corporation | Method and apparatus for providing event handling functionality in a computer system |
US6418523B2 (en) * | 1997-06-25 | 2002-07-09 | Micron Electronics, Inc. | Apparatus comprising a translation lookaside buffer for graphics address remapping of virtual addresses |
US6252612B1 (en) * | 1997-12-30 | 2001-06-26 | Micron Electronics, Inc. | Accelerated graphics port for multiple memory controller computer system |
US7065633B1 (en) * | 1999-01-28 | 2006-06-20 | Ati International Srl | System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU |
CN1650263A (zh) * | 2002-04-08 | 2005-08-03 | 国际商业机器公司 | 用于在分布式企业应用中进行问题确定的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
DE112007001466T5 (de) | 2009-05-07 |
US7487341B2 (en) | 2009-02-03 |
WO2008002978A1 (en) | 2008-01-03 |
CN101454753A (zh) | 2009-06-10 |
CN101454753B (zh) | 2012-11-28 |
US20080005546A1 (en) | 2008-01-03 |
CN102981800A (zh) | 2013-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102981800B (zh) | 处理异构资源的地址转换和异常 | |
KR100879825B1 (ko) | 이질적 리소스와의 명령어 세트 아키텍처-기반 시퀀서간통신 | |
CN109375949B (zh) | 一种具有多个核的处理器 | |
Johns et al. | Introduction to the cell broadband engine architecture | |
CN104204990B (zh) | 在使用共享虚拟存储器的处理器中加速操作的装置和方法 | |
EP2831721B1 (en) | Context switching mechanism for a processing core having a general purpose cpu core and a tightly coupled accelerator | |
TWI550516B (zh) | 用於警告追蹤中斷之電腦程式產品、電腦系統及方法 | |
JP4690988B2 (ja) | 持続的なユーザレベルスレッド用の装置、システムおよび方法 | |
JP2017532643A (ja) | 永続ストアフェンスプロセッサ、方法、システム、及び命令 | |
CN104813278B (zh) | 对二进制转换的自修改代码以及交叉修改代码的处理 | |
JP2001051959A (ja) | 少なくとも1つのnuma(non−uniformmemoryaccess)データ処理システムとして構成可能な相互接続された処理ノード | |
CN111880925A (zh) | 用于提供带外处理器遥测的技术 | |
TW201351288A (zh) | 藉由程式對警告追蹤中斷設備之使用 | |
JP2024514370A (ja) | リソース使用量を監視するためのアプリケーション・プログラミング・インターフェース |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150805 Termination date: 20180627 |
|
CF01 | Termination of patent right due to non-payment of annual fee |