CN101038543A - 用于持续性用户级线程的设备、系统和方法 - Google Patents
用于持续性用户级线程的设备、系统和方法 Download PDFInfo
- Publication number
- CN101038543A CN101038543A CNA2006101444908A CN200610144490A CN101038543A CN 101038543 A CN101038543 A CN 101038543A CN A2006101444908 A CNA2006101444908 A CN A2006101444908A CN 200610144490 A CN200610144490 A CN 200610144490A CN 101038543 A CN101038543 A CN 101038543A
- Authority
- CN
- China
- Prior art keywords
- thread
- timer
- operating system
- level
- user
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 21
- 230000002085 persistent effect Effects 0.000 title abstract 4
- 230000000694 effects Effects 0.000 claims abstract description 7
- 238000012545 processing Methods 0.000 claims description 20
- 230000005540 biological transmission Effects 0.000 claims description 14
- 238000010586 diagram Methods 0.000 description 6
- 238000002955 isolation Methods 0.000 description 5
- 101100064323 Arabidopsis thaliana DTX47 gene Proteins 0.000 description 4
- 101150026676 SID1 gene Proteins 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 101100256921 Ajellomyces capsulatus SID3 gene Proteins 0.000 description 3
- 101100366400 Schizosaccharomyces pombe (strain 972 / ATCC 24843) spg1 gene Proteins 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000014616 translation Effects 0.000 description 3
- 101000840469 Arabidopsis thaliana Isochorismate synthase 1, chloroplastic Proteins 0.000 description 2
- 208000032826 Ring chromosome 3 syndrome Diseases 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 101000822695 Clostridium perfringens (strain 13 / Type A) Small, acid-soluble spore protein C1 Proteins 0.000 description 1
- 101000655262 Clostridium perfringens (strain 13 / Type A) Small, acid-soluble spore protein C2 Proteins 0.000 description 1
- 101000655256 Paraclostridium bifermentans Small, acid-soluble spore protein alpha Proteins 0.000 description 1
- 101000655264 Paraclostridium bifermentans Small, acid-soluble spore protein beta Proteins 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 230000001143 conditioned effect Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/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/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/323—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch 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 or 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 or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- 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 or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- 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 or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- 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/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明的实施例提供一种方法,其基于在操作系统可见的程序装置上运行并使用指令集扩展的操作系统调度线程,来创建持续性用户级线程,以独立于在操作系统调度线程上的上下文切换活动而在操作系统隔离的程序装置上运行。所述操作系统调度线程和所述持续性用户级线程共享一个公用虚拟地址空间。本发明的实施例还提供一种方法,用来使在附加的操作系统可见的程序装置上运行的服务线程向所述持续性用户级线程提供操作系统服务。本发明的实施例还提供其的设备、系统和计算机可读媒体。
Description
背景技术
在多程序装置(multi-sequencer)的计算机系统或计算机平台中,技术和经济约束证明一种非对称结构的专用计算机资源或处理器或处理单元是合理的。在本申请中,处理器或处理单元在下文也被称为程序装置或处理核。通常,操作系统不能很好地衡量已经实现有很多程序装置的计算机平台。特别是,该操作系统不能高效地处理非对称结构的多个程序装置。
对于计算机平台实现的程序装置的类型来说,该计算机平台的结构可以是非对对称的。例如,有一种程序装置对操作系统(OS)来说是可见的,在这里被称为OS可见的程序装置,其由OS内核管理。OS内核能够控制OS可见的程序装置的特权状态并提供异常处理以在OS可见的程序装置执行线程期间处理中断和/或异常。另一方面,还有一种程序装置对OS来说是“不可见的”,在这里被称为OS隔离(OS-sequestered)的程序装置。OS隔离的程序装置不能执行操作系统代码并由程序装置管理器管理。
近来,提出了多程序装置多指令流多数据流(MIMD)ISA(指令集架构)扩展,它定义一组指令,能够允许OS隔离的程序装置被当作为ring-3用户级结构资源,以用于在单个OS线程的上下文中并发执行多个用户级线程。因此,OS隔离的程序装置对用户级程序来说变得可用。通过使用用户级多程序装置MIMD ISA扩展,在OS可见的程序装置上运行的程序线程能够使用与隔离该OS的附加程序装置。通过把工作提交给该OS可见或不可见的程序装置,该多程序装置MIMD ISA扩展能够独立于该OS来衡量很多程序装置。同时,操作系统可以继续在OS可见的程序装置的一个子集上运行。用户级MIMD ISA扩展允许执行用户级线程以在OS隔离的程序装置上运行用户级线程,以及该用户级线程与创建该用户级线程并且在OS可见的程序装置上运行的OS线程并发地运行。
附图说明
通过在下面结合附图对本发明的实施例进行详细的说明,可以更全面地了解和理解本发明,其中:
图1是一个根据本发明的一个示意性实施例的多程序装置系统的框图说明;
图2是一个根据本发明的一个示意性实施例的硬件的简化逻辑图,它构成多程序装置系统的一部分;
图3是一个根据本发明的一个示意性实施例的多程序装置的简化说明,其能够提供持续性用户级线程服务;
图4是一个根据本发明的一个示意性实施例的多程序装置的概念说明,其能够提供持续性用户级线程服务;
图5是一个根据本发明的一个示意性实施例的多程序装置系统的指令集架构的示意性图;
图6是一个根据本发明的一个示意性实施例的控制传输指令的简单指令格式的简化说明;
图7是一个根据本发明的一个示意性实施例的监控指令的简单指令格式的简化说明;
图8和图9是一个根据本发明的一个示意性实施例执行持续性用户级线程的简化流程图说明。
应当理解,为了简化和清楚地说明,没有必要对图中示出的单元画出比例来。例如,为了清楚起见某些单元的尺寸可以相对于其他单元进行放大。
具体实施方式
在下面的详细说明中,为了提供对本发明的实施例的一个全面的了解,陈述了很多特定细节。然而,本领域普通的技术人员应当理解,无需这些特定细节也能实现本发明的实施例。在其他情况下,为了不混淆本发明的实施例,没有详细描述已知知的方法和过程。
在下面,按照在计算机存储器中的数据或二进制数字符号上进行操作的算法和符号表示的形式来提出该详细说明的某些部分。这些算法说明或表示可以是本领域技术人员用来在数据处理领域向其他本领域技术人员传达要点的技术。
一种算法在这里通常被认为是将引起所要结果的自相一致的动作或操作序列。这些包括对物理量的物理操作。通常,但又不是必须地,这些物理量采用能够被存储、传输、合并、比较和其他操作的电或磁信号的形式。有时为了方便,主要为了公用的原因,这些符号已经称为比特、值、元素、符号、字符、术语、数字或者类似表示。然而,应当知道所有这些和类似术语是与适当的物理量有关的并且仅仅是应用于这些物理量的方便标记。
除非特别说明,否则如下面说明中清楚地示出的那样,应当知道整个说明书的论述利用了诸如“处理”、“运算”、“计算”、“确定”和类似的术语,它指的是计算机或计算系统,或类似的电子计算设备的动作和/或处理,它管理和/或把在计算机系统的寄存器和/或存储器中表示物理量,诸如电形式的数据转换为在计算机系统的存储器、寄存器或其他这样的信息存储、传输或显示装置中的同样表示物理量的其他数据。
例如使用那些存储有一条指令或一组指令的机器可读介质或物品可以实现本发明的某些实施例,如果机器执行这些指令,可使机器执行根据本发明的实施例的方法和操作。这些机器例如可以包括任何适当的处理平台、计算机平台、计算机设备、处理设备、计算机系统、处理系统、计算机、处理器、或类似装置,并且可以使用硬件和/或软件的任何适当组合来实现。机器可读介质或物品例如可以包括任何适当类型的存储器单元、存储器设备、存储器物品、存储器介质、存储设备、存储物品、存储介质和/或存储单元,例如存储器、可移除或不可移除介质、可擦处或不可擦处介质、可写或可重写介质、数字或模拟介质、硬盘、软盘、光盘只读存储器(CD-ROM)、可记录光盘驱动器(CD-R)、可重写光盘驱动器(CD-RW)、光盘、磁介质、各种类型的数字化通用盘(DVD)、磁带、盒式磁带、或类似介质。指令可以包括任何适当类型的代码,例如源代码、目标代码、编译代码、解释代码、可执行代码、静态代码、动态代码、或类似代码,并且可以使用任何适当的高级、低级、面向对象、可视化、编译和/或解释变成语言来实现,诸如C、C++、Java、BASIC、Pascal、Fortorn、Cobol、汇编语言、机器代码或类似语言。
本发明的实施例可以包括用来执行这里的操作的装置。可以为所要求的目的构建这些装置,或者它们可以包括一个通用计算机,它由存储在该计算机中的计算机程序选择性地激活或重新配置。这些计算机程序可以存储在计算机可读介质中,诸如但又不局限于任何类型的盘,包括软盘、光盘、CD-ROM,磁光盘、只读存储器(ROM)、随机访问存储器(RAM)、电可编程只读存储器(EPROM)、电可擦除和可编程只读存储器(EEPROM)、磁卡或光卡,或适用于存储电指令并能够连接到计算机系统总线上的任何其他类型的介质。
这里所提出的处理和显示并不必然与任何特定计算机或其他装置有关。根据这里的教导可以使用具有程序的多种类型的通用系统,或者可以方便地构建一个专门的装置来执行所要求的方法。根据下面的说明,用于各种这些系统的所要求结构可以从下文看出。另外,没有参照任何特定的编程语言来描述本发明的实施例。应当知道,可以使用多种编程语言来实现如下所述的本发明的教导。
在下面的说明中,提供各种图像、图表、模块、和描述来作为有效传达和说明本申请中提出的本发明的不同实施例的不同方式。本领域技术人员应当理解,提出它们仅仅作为示例性的例子,不应被看作是限制。
图1是一个根据本发明的一个示意性实施例的多程序装置系统100的框图说明。
如图1所示,多程序装置系统100可包括存储器102和多程序装置硬件104。存储器102例如可包含用户级程序106、调度程序108、应用程序接口(API)110、和操作系统(OS)112。多程序装置硬件104例如可包括程序装置管理器114和多个程序装置,例如程序装置116,118,120和122,它们在图1中分别被表示为SID0,SID1,SID2和SID3。尽管在图1中示出4个程序装置,但是本领域技术人员理解程序装置硬件104可以包括其他数量的程序装置。
程序装置管理器114可被实现为驱动器、诸如OS 112扩展的操作系统扩展、任何其他硬件或者硬件和软件的组合。在程序装置116,118,120和/或122的类型方面,多程序装置硬件104可以是对称的或非对称的。程序装置116,118,120和122中的一个或者多个可以是一个具有属于自己的一组执行资源的物理处理器。可选择地,程序装置116,118,120和122中的一个或者多个可以是逻辑处理器(例如超线程处理器),它可以与其他逻辑处理器共享物理资源。可以在单个硬件内核或多个分开的硬件内核中实现程序装置116,118,120和122。
多程序装置系统100的非穷尽例子列表可包括桌上型个人计算机、工作站、服务器计算机、膝上型计算机、笔记本电脑、手持式计算机、个人数字助理(PDA)、移动电话、游戏控制台、和类似装置。
存储器102的非穷尽例子列表可包括下面半导体设备中的一个或者任何组合,诸如同步动态随机访问存储器(SDRAM)、RAMBUS动态随机访问存储器(RDRAM)设备、双数据率(DDR)存储器设备、静态随机存储器(SRAM)、闪存(FM)设备、电可擦除只读存储器(EEPROM)设备、非易失性随机访问存储器(NVRAM)、通用串行总线(USB)可移动存储器设备、等等;光盘设备,诸如光盘只读存储器(CD ROM)等等;以及磁盘设备,诸如硬盘、软盘、磁带等等。存储器102可以固定在系统100中或者可以从系统100中移走。
根据本发明一个示意性的实施例,用户级程序106可以通过应用程序接口(API)110访问线程库。API 110可以向用户级程序106提供线程的创建、控制和同步。调度程序108可以调度线程的指令以在多程序装置硬件104上执行。
多程序装置硬件104的非穷尽例子列表可包括多个单线程或多线程中央处理单元(CPU)、数字信号处理器(DSP)、精简指令集计算机(RISC)、复杂指令集计算机(CISC)等等。另外,多程序装置104可以是特定用途集成电路(ASIC)的一部分,或者是特定用途标准产品(ASSP)的一部分。
根据本发明一个示意性的实施例,多程序装置硬件104可以是已实现程序装置116,118,120和122(SID0-SID3)的单核处理器,这些程序装置例如可以是逻辑处理器。单核处理器104例如可以支持并发、并行、和/或基于事件切换(switch-on-event)的多线程。根据一个示意性的实施例,每个程序装置SID0-SID3可具有自己的下一个指令指针逻辑,而同一个单核处理器104可以执行所有的线程指令。尽管单核处理器104的执行资源可以在并发、并行、和/或基于事件切换的线程中共享,但是每个逻辑处理器SID0-SID3可以保持一个它自己的结构状态的版本。
尽管上述的多程序装置硬件104的示意性实施例对于每个程序装置针对的是单线程,然而本领域技术人员知道在这里本申请并不局限于单线程的处理器。这里所述的技术同样地可应用于任何芯片多处理(CMP)或并行多线程处理器(SMP)系统,包括具有CMP处理器核SMP处理器的混合系统,其中CMP处理器中的每个核是SMP处理器或基于事件切换的多处理器(SoeMP)。例如,这里所述的技术可用于这样的一种系统,其在一个单芯片硬件保104中包括多线程的处理核。
如上所述,程序装置SID0-SID3没有必要是统一的,而在影响计算质量的因素方面可以是非对称的,所述因素诸如是处理速度、处理能力、和功率消耗。例如,程序装置SID0可以是“重量级”程序装置,因为它可被设计为在给定的指令集架构(例如与32位处理器相关的IA-32指令集架构)中处理大多数指令。而SID1可以是“轻量级”程序装置,因为它处理在这些指令中所选择的子集。在本发明的另一个实施例中,重量级处理器可以是这样的一个处理器,其可以用比轻量级处理器更快的速度来处理指令。另外,某些程序装置对于操作系统来说是可见的,而其他程序装置对操作系统来说是不可见的。例如,程序装置SID0对OS 112是可见的,而程序装置SID1至SID3对OS 112是不可见的。然而,这并不意味着重量级程序装置是OS可见的和/或轻量级程序装置是OS隔离的。操作系统不在一个处于隔离状态下的程序装置(诸如在这里被称为OS隔离的程序装置)上调度指令。
根据本发明某些示意性的实施例,如下面参照图2-8所详细描述的那样,多程序装置系统100能够提供持续性用户级线程(PULT)服务。在本申请中,常规的用户级线程,或者在下面被简称为用户级线程,可以是一序列指令,它仅包含在用户级或ring-3级运行的非特权指令。通常,OS线程在后台支持用户级线程,OS线程也被称为本地OS线程或真正本地线程。在该OS线程上下文中,至少一个用户级线程可以在OS可见的程序装置或OS隔离的程序装置上运行。当OS线程被OS换出(和换入)时,属于该OS线程的所有程序装置的上下文将被保存(和还原)。由此,在这些程序装置上运行的用户级线将被挂起(和重新开始)。根据本发明的一个实施例,持续性用户级线程(PULT)是在OS隔离的程序装置上运行的用户级线程。该PULT可以在例如创建该PULT的另一个用户级线程的虚拟地址空间(VAS)的环境下执行。该PULT的执行可以独立于创建该PULT的另一个用户级线程的执行,并因此可以不与其同步。即使当该用户级线程所属的OS线程处于上下文换出状态时,该PULT仍可以在OS隔离的程序装置上继续执行。在这里概念“持续性”是指用户级线程继续执行,而与有关产生或创建PULT的线程上的OS线程上下文切换活动无关。
图2是一个根据本发明的一个示意性实施例的硬件200的简化逻辑图,它构成多程序装置系统的一部分。
硬件200可对应于构成图1的多程序装置系统100的一部分的多程序装置硬件104。如图1所示,多程序装置104可包括程序装置管理器114和例如多个程序装置116,118,120和122。根据本发明的一个实施例,程序装置管理器114能够以这样一种方式虚拟化程序装置116,118,120和122,在该方式下程序装置116,118,120和122以统一和对称的形式出现在用户级程序106中。换句话说,对应于图1中程序装置管理器114的程序装置管理器201可以掩饰程序装置211,212,213和214的非对称性,使得从汇编语言程序员的逻辑视角来看,如图2所示,程序装置211,212,213和214看起来是统一的和对称的,并由相同大小的正方形表示。程序装置211,212,213和214可以表示图1中的逻辑处理器SID0,SID1,SID2和SID3。
图3是一个多程序装置300的简化说明,根据本发明的一个示意性实施例其能够提供持续性用户级线程服务。
根据本发明的一个实施例,应用程序301的执行可以由操作系统(OS)302管理,而该程序例如可以是图1的用户级程序106。OS 302可以通过创建并调度一个或多个本地线程来管理应用程序301的执行,每个本地线程潜在地包含用户级线程,诸如在图3中运行在一组程序装置之一中的本地线程303,这些程序装置对OS 302是可见的,例如是程序装置311和312。OS 302可以通过一个或多个自身的内核来管理程序装置311和312。OS 302还可以控制程序装置311和312的特权状态并响应在程序装置311和312上发生的中断和异常处理。
根据本发明的一个实施例,程序装置管理器310可以控制对OS可见的程序装置311和312以及另一组程序装置的访问,另一组程序装置例如是与OS 302隔离并不受OS 302的内核管理的程序装置313,314,315,316,317和318。程序装置313,314,315,316,317和318是OS隔离的程序装置,或“OS不可见”的程序装置。
根据本发明一个实施例,OS调度线程(例如潜在地包含用户级线程的本地线程)可以通过一个接口与程序装置管理器310进行交互,该接口通过硬件或软件或者它们的组合来提供。为了使用OS 302不可见的程序装置,诸如程序装置313,314,315,316,317和318,例如本地线程303的OS调度线程可以向程序装置管理器310发送一个请求以创建例如线程304的用户线程,来运行OS隔离的程序装置,例如程序装置313。根据本发明一个实施例,用户级线程304可以独立于本地线程303的OS上下文切换活动而在程序装置313上运行,并因此可以是持续性用户级线程(PULT)。
在下面的说明中,本地线程303被用作示出创建和执行持续性用户级线程的例子。本领域技术人员将理解,下面的说明也适用于其他线程,例如属于本地线程的用户级线程。
根据本发明的一个示例性实施例,OS隔离的程序装置313可以在虚拟地址空间(VAS)320中执行PULT 304,该空间由在OS可见的程序装置311上运行的用户级线程303共享。OS 302可以创建VAS320,以执行应用程序301。根据本发明的一个示例性实施例,通过共享通用VAS 320,程序装置管理器310能够捕获在OS可见的程序装置311上运行的用户级线程303的执行环境,例如一个虚拟地址映射,并接着把该执行环境应用到在OS隔离的程序装置313上运行的PULT 304。根据本发明的一个实施例,0S隔离的程序装置313可以具有一个或者多个窥探TLB(转换后备缓冲器),其能够自动跟踪虚拟地址空间的未来变化。TLB可以是存在于处理器中的一个小高速缓冲器,其跟踪虚拟地址到物理地址转换以便快速查找。处理器使用该TLB来避免不必要的页面移动,以便把虚拟地址转换为物理地址。
图4是一个根据本发明的一个示意性实施例的多程序装置系统400的概念说明,其能够提供持续性用户级线程服务。
根据本发明的一个实施例,多程序装置系统400可以包括一个程序装置管理器410,该管理器管理多个OS隔离的程序装置,例如程序装置411,412,413和414和其他OS可见的程序装置,例如程序装置405和406。操作系统(OS)402可管理一个或多个用户级程序,诸如应用程序401A和401B的执行。操作系统(OS)402通过创建一个或者多个线程来管理应用程序401A和401B的执行,这些线程例如包括用户级线程403和404,以及其他本地线程,其中用户级线程403和404在OS可见的程序装置405和406上运行。
程序装置管理器410可以通过访问程序装置411,412,413和414来向应用程序401A和401B提供执行资源,而这些程序装置与OS402隔离且不由OS 402管理。可以通过由在OS可见的程序装置405和406上运行的线程403和404或者由OS调度的其他本地线程作出的请求来提供这种访问。因此,应用程序401A和401B可以通过用户级线程403和/或404或其他本地线程来访问OS隔离的程序装置411,412,413和414。
根据本发明的一个实施例,程序装置管理器410可以在程序装置411,412,413和414上为应用程序401A和401B分配不同时隙来执行一个或多个由用户级线程403和404创建的持续性用户级线程。例如,图4中的符号t1,t2,t3,t4,t5和t6表示分别为执行PULT T1,T2,T3,T4,T5和T6而分配的时隙。
根据本发明的一个实施例,程序装置管理器410可以为一个或多个0S隔离的程序装置,例如程序装置411,412,413和414,建立一个或多个中断描述符表,例如表421,422,423和424。中断描述符表,例如表421,可以包括事件句柄431来管理在程序装置411上正在发生的事件。在例如PULT T3在OS隔离的程序装置,例如程序装置411上的执行时间期间t3,PULT T3可能遇到一种需要OS 402处理或注意的事件或情形,诸如页面错误或系统调用。那么在该事件发生时间,事件句柄431挂起PULT T3的执行并保存PULT T3的执行状态。
根据本发明的另一个实施例,当遇到页面错误或系统调用时,OS不可见的程序装置,例如程序装置411,可以直接中断OS可见的程序装置的执行,例如这个调用PULT T3的程序装置405。接着,程序装置411可以向程序装置管理器410发送一个触发器来请求处理这个中断。根据本发明又一个实施例,OS隔离的程序装置411可以设计ring-0服务信道或用来处理页面错误或系统调用的信道。信道可以是一个保存结构状态的寄存器,这些状态例如包括触发器-响应映射,其中触发器是在体系结构上定义的一个或多个处理器状态的集合,其中响应是服务例程。另外,例如可以由用户级指令来设计信道。当出现页面错误或系统调用时,OS隔离的程序装置411可以调用一个句柄,该句柄的地址在信道被指定。
PULT T3可以一直保持挂起直到当新的用户级线程,例如运行同一应用程序401A的线程409,被调度来在OS可见的程序装置上运行时为止。线程409,也被称为服务线程,可以向程序装置管理器410做出一个请求以确认或验证是否有一个PULT已经被挂起并等待例如通过如下面详细说明的代理执行所提供的OS服务。线程通过从程序装置管理器410中获得的PULT T3状态来模仿或初始化PULT T3,由此来实现代理执行。共享通用地址空间,例如通用共享虚拟地址空间(VAS)(图3)的服务线程409重新开始PULT T3的执行状态。接着线程409服务已经使PULT T3挂起的执行状态。在该服务后,线程409保存过去执行状态并将该状态返回到程序装置管理器410。接着,程序装置管理器410把该状态传递到PULT T3以重新开始它的执行。
上述代理执行给应用程序程序员创建了对称的错觉并因此掩盖了如何构建一个多程序装置系统,例如系统100的固有的非对称性属性。
图5是一个根据本发明的一个示意性实施例的多程序装置系统的指令组结构(ISA)500的示意性图。
ISA定义一个系统的逻辑视图,如汇编语言程序员、二进制翻译器、汇编器等等所看到的那样。ISA 500可包括逻辑存储器502和指令集504。逻辑存储器502可以为多程序装置系统,诸如图1中所示的多程序装置系统100定义可见的分级存储器体系、寻址方案、寄存器组等,而指令集504可以定义多程序装置系统100支持的指令和指令格式。
根据本发明的示例性实施例,指令集504可包括称为IA-32指令集的指令集及其扩展,尽管本发明并不局限于这个方面,并且其他指令集也是可能的。根据本发明的一个实施例,指令集504例如可包括E-SXFR指令和E-SEMONITOR指令,其中E-SXFR指令包括SXFR控制传输指令及其扩展,E-SEMONITOR指令包括SEMONITOR监控指令及其扩展。与可以在属于同一个OS本地线程中的两个程序装置之间执行的SXFR和SEMONITOR相比较,可以在分别属于不同的OS本地线程中的两个程序装置之间执行E-SXFR和E-SEMONITOR,它们可以在不同的特权级上运行。例如,一个线程可以是受OS上下文切换影响的用户级应用程序,而另一个线程可以是以该特权级持续运行的PULT,像一个设备驱动器,并不受OS上下文切换支配。
根据本发明的一个实施例,E-SXFR指令可以用来从第一程序装置向第二程序装置发送信号,而E-SEMONITOR指令可以用来配置所述第二程序装置以监控来自所述第一程序装置的信号。另外,SXFR控制传输指令和SEMONITOR监控指令是程序装置可知道的,并可用来创建其他程序装置可知道的组合指令。
根据本发明的一个实施例,E-SXFR指令可以具有如图6所示的简单指令格式。在图6中示出该E-SXFR指令可以包括操作码602,以及操作对象604,606,608和612。根据本发明的一个实施例,程序装置管理器可以提供具有操作对象的E-SXFR指令,该操作对象可包括程序装置的特权状态,诸如来创建一个执行环境以服务所挂起的持续性用户级线程。
根据一个实施例,操作对象604可对应于目的/目标程序装置的程序装置ID(SID),其中该E-SXFR指令信号将被发送到该目的/目标程序装置上。操作对象606可包括场景(scenario)或控制消息,其可以是用来表示条件或预期事件的在体系结构上定义的标识符代码。如下面参照表1详细说明的那样,场景可被用来影响异步控制传输。
根据一个实施例,操作对象608可以包括一个参数,该参数设置在程序装置上的执行该E-SXFR指令的指令条件。例如,参数在图6中被示为条件参数,可包括一个“WAIT”或“NO-WAIT”参数。例如,当在代理执行场景下使用E-SXFR指令时,WAIT条件参数可以使在执行该E-SXFR指令的程序装置上的指令停止,直到另一个程序装置上代理执行的完成。NO-WAIT条件参数可以规定在执行该E-SXFR指令的程序装置上的指令可以与在另一个指令程序装置上代理执行并行地进行。
根据一个实施例,操作对象610可包括场景特定的有效载荷或数据消息。例如,在FORK场景的情况下,有效载荷可包括一个指令指针,其指向由操作对象604所标识的程序装置要开始执行的位置。根据另一个实施例,有效载荷操作对象610可包括指令指针、栈指针、一组控制寄存器等等。包含在有效载荷操作对象610中的地址可以被表示为多种寻址模式,诸如直接寻址、间接寄存器寻址,和/或基地址/偏移寻址。
根据一个实施例,操作对象612可以规定包含在操作对象604中的SID上的路由方法或函数。路由函数控制由于执行E-SXFR指令而产生的信号是否作为广播、单播、或多播信号来发送。路由函数还可以编码信息,诸如可被用来在路由中帮助基本程序装置间互连传送信号的特定拓扑提示。
根据一个实施例,E-SEMONITOR指令可以具有如图7所示的简单指令格式。在图6中示出该E-SEMONITOR指令可以包括操作码702,和操作对象704,706和708。操作对象704,706和708可以包含程序装置的特权状态信息,以帮助持续性用户级线程创建一个执行环境。例如,操作对象704可以通过包括场景ID来规定场景。操作对象706可以包括与程序装置ID(SID)和指令指针(EIP)相关的信息。为了方便说明,如图7所示,包含在操作对象706中的信息可被称为“SIDEIP”。
E-SEMONITOR指令可以把在操作对象704中规定的场景映射到在操作对象706中指定的SIDEIP上。从场景到SIDEIP的映射在这里被称为“服务信道”的映射。操作对象708允许程序员输入一个或多个控制参数来规定或控制如何服务这个特定服务信道。例如,程序员可以使用E-SEMONITOR指令来设计程序装置监控的服务信道。
根据上述说明,应该理解E-SXFR和E-SEMONITOR指令都是“程序装置可识别的”指令,因为它们包含可以识别特定程序装置的操作对象。
图8和图9是一个根据本发明的一个示意性实施例执行持续性用户级线程的简化流程图说明。相同模块数字被用来表示相同的操作。
根据本发明的个实施例,如模块801所示,OS隔离的程序装置822可以执行持续性用户级线程。为了方便说明,该持续性用户级线程在这里被称为PULT-1。例如可以由第一用户级线程创建PULT-1,其中第一用户级线程由第一OS可见的程序装置执行。在执行期间,PULT-1可能遇到一个或多个需要OS服务或注意的事件。第二用户级线程可以与创建PULT-1的第一用户级线程是同一个用户级线程,也可与其不同,并在例如OS可见的程序装置821的第二OS可见的程序装置上执行,如下面详细描述的那样,第二用户级线程向PULT-1提供所请求的OS服务。
根据本发明的一个实施例,如在图8和9的模块802中所示的那样,PULT-1在时间t1遇到需要OS服务的事件。如模块803指出的那样,在检测到事件时,程序装置器管理器820在时间t1调用一个过程来保存PULT-1的状态,诸如例如一个逻辑指针。PULT-1的状态如模块803所示那样已经被保存后,接着如模块804所示从时间t2挂起PULT-1的执行并向前进行。根据本发明的一个实施例,在接收到一个有关需要操作系统服务的事件的通知后,通过一个外部中断,程序装置管理器820也可以挂起PULT-1的执行。PULT-1一直被挂起直到服务线程例如通过代理执行提供所要求的OS服务。
根据本发明的一个示例性实施例,如模块805所示,诸如新用户级线程的OS调度线程可以在OS可见的程序装置821上开始运行。该新的用户级线程可以为如PULT-1的同一个应用程序来执行。该线程能够通过例如代理执行向PULT-1提供OS服务并因此在这里被称为服务线程。如模块806所示,该服务线程可能检查或验证程序装置管理器820,来判定是否存在任何等待OS服务的被挂起的PULT。
服务线程可以识别PULT-1为一个正等待OS服务的线程。根据本发明的一个实施例,如模块807所示,服务线程接着例如通过它们通用的共享地址空间(VAS)来获取PULT-1的执行状态,来模仿PULT-1,换句话说模拟PULT-1。由服务线程模仿的PULT-1可接着在执行服务线程的OS可见的程序装置上执行,以接收OS服务。因此,如模块808所示,通过服务线程的代理执行把OS服务提供给PULT-1,并且PULT-1挂起的状态现在有操作系统来服务。根据本发明的一个实施例,运行在OS可见的程序装置,例如OS可见的程序装置821上的用户级线程,可以通过监控使用一个场景的地址位置来检测被挂起的PULT。服务场景可用来监控高速缓冲器未命中的条件,并且当发生高速缓冲器未命中时,例如将导致阈值被越过,则在服务信道中的一个句柄被调用。
根据本发明的一个实施例,如模块809所示,在操作系统完成服务所挂起的PULT-1的条件后,PULT-1的后执行状态被保存,并接着通过程序装置管理器820被返回到OS隔离的程序装置822。如模块810所示,从服务线程中接收到后执行状态后,OS隔离的程序装置822可以重新开始其PULT-1的执行。
表1包含根据本发明的某些实施例的,示例场景列表。
表1
SPU特征 | 出口服务场景 | 入口服务场景 | |
OS可见性 | OS不可见 | 需要OS处理并造成交叉环-级转变的操作,例如:□页面错误处理□I/O访问 | 进来的控制消息□Go_shred□Halt_shred□Report/self□Save/Restore_shred□Single-step_shred |
OS可见 | 出去的控制消息□Fork□Jion□Yield□Wait□Scatter/Set□Gather/Get□CSAVE/RSTOR□Go/Halt/Single-step | 需要OS处理并造成交叉环-级切换的操作,例如:□页面错误处理□I/O访问 | |
核的复杂性 | 简单 | SSE 13指令 | |
复杂 | SSE 13执行 |
根据本发明的示例性实施例,表1中的场景可以被分为出口服务和入口服务。在每种服务之中,操作和控制消息可以由它们的OS可见性来特征化,OS可见性可以是微处理单元(SPU)特征的一部分。在出口服务中,有些操作场景落入资源不可用(RNA)的类别,该类别是用于在程序装置上执行期间由于访问了在OS隔离的程序装置上不可用的资源所所生成事件的类别。根据本发明的一个实施例,落入RNA类别的场景可包括例如在OS隔离的程序装置上的页面错误处理和/或I/O访问,这些程序装置不能直接启动OS服务。
根据本发明的示例性实施例,这些上述的操作场景是一组出去的控制消息。在一个示例性实施例中,消息例如可包括表1中出口服务场景所列出的消息。然而,本发明并不局限于这些方面,可以使用其他消息。该控制消息转到一个或多个OS可见的程序装置。
与上述出口服务场景相对,存在入口服务场景,它们落入OS可见的程序装置的类别,这些OS可见的程序装置向来自OS隔离的程序装置的服务请求提供资源。如表1所示在入口服务场景,这些服务场景直接对应于出口服务下的场景,但从OS可见的程序装置上是可用的。在一个示例性实施例中,附带有入口服务的进来的控制消息可以包括表1中入口服务场景中列出的消息。然而,本发明并不局限于这些方面,可以使用其他消息。进来的消息可以来自一个或多个OS隔离的程序装置。
根据本发明的示例性实施例,那些服务出口服务的指令在内核的复杂性方面例如是相对简单的SSE 13指令,而例如服务来自OS隔离的程序装置的入口服务或请求的指令通常是更复杂的。
尽管本发明的某些特征已经在这里被说明和描述,然而对本领域普通技术人员来说可以出现很多的改变、替换、变化和等同。因此应当知道附后的权利要求书希望覆盖所有这些在本发明精神范围内的改变和变化。
Claims (29)
1.一种方法包括:
基于在操作系统可见的程序装置上运行并使用指令集扩展的操作系统调度线程,来创建持续性用户级线程,以独立于在操作系统调度线程上的上下文切换活动而在操作系统隔离的程序装置上运行。
2.如权利要求1所述的方法,其中所述操作系统调度线程和所述持续性用户级线程共享一个公用虚拟地址空间。
3.如权利要求1所述的方法,包括当所述持续性用户级线程遇到需要操作系统处理的事件时,挂起该持续性用户级线程的运行。
4.如权利要求1所述的方法,包括使在附加的操作系统可见的程序装置上运行的服务线程向被挂起的持续性用户级线程提供操作系统服务。
5.如权利要求4所述的方法,其中所述服务线程和所述持续性用户级线程在同一个应用程序的上下文中运行。
6.如权利要求4所述的方法,其中向持续性用户级线程提供操作系统服务包括:
向所述附加的操作系统可见的程序装置传递控制传输指令;并且
在特权级上执行所述控制传输指令。
7.如权利要求6所述的方法,其中所述特权级包括ring-0级。
8.如权利要求6所述的方法,包括:
使所述服务线程获得持续性用户级线程的状态;
向所述持续性用户级线程提供代理执行;和
返回后执行状态到所述持续性用户级线程。
9.如权利要求8所述的方法,还包括从所述后执行状态重新开始所述持续性用户级线程的运行。
10.一种设备,包括:
程序装置管理器,用来基于在操作系统可见的程序装置上运行并使用指令集扩展的操作系统调度线程,来创建持续性用户级线程,以独立于在操作系统调度线程上的上下文切换活动而在操作系统隔离的程序装置上运行。
11.如权利要求10所述的设备,其中所述操作系统调度线程和所述持续性用户级线程共享一个公用虚拟地址空间。
12.如权利要求10所述的设备,其中所述程序装置管理器用来当所述持续性用户级线程遇到需要操作系统处理的事件时,挂起该持续性用户级线程的运行。
13.如权利要求10所述的设备,其中所述程序装置管理器适于使在附加的操作系统可见的程序装置上运行的服务线程向所述持续性用户级线程提供操作系统服务。
14.如权利要求13所述的设备,其中所述服务线程和所述持续性用户级线程在同一个应用程序的上下文中运行。
15.如权利要求13所述的设备,其中所述程序装置管理器适于向所述附加的操作系统可见的程序装置传递控制传输指令,并且在特权级上执行所述控制传输指令。
16.如权利要求15所述的设备,所述程序装置管理器用来使所述服务线程获得所述持续性用户级线程的状态;向所述持续性用户级线程提供代理执行;和返回后执行状态到所述持续性用户级线程。
17.如权利要求16所述的设备,其中从所述后执行状态重新开始所述持续性用户级线程的运行。
18.一种系统,包括:
存储器,其上面存储有操作系统、至少一个用户级程序、与该程序对接的应用程序接口;和用来调度所述程序的执行的调度程序;
多程序装置,其具有至少一个操作系统可见的程序装置和至少一个操作系统隔离的程序装置;和
程序装置管理器,用来基于在操作系统可见的程序装置上运行并使用指令集扩展的操作系统调度线程,来创建持续性用户级线程,以独立于在操作系统调度线程上的上下文切换活动而在操作系统隔离的程序装置上运行。
19.如权利要求18所述的系统,其中所述操作系统调度线程和所述持续性用户级线程共享一个公用虚拟地址空间。
20.如权利要求18所述的系统,其中所述程序装置管理器用来当所述持续性用户级线程遇到需要操作系统处理的事件时,挂起该持续性用户级线程的运行。
21.如权利要求18所述的系统,其中所述程序装置管理器适于使在附加的操作系统可见的程序装置上运行的服务线程向所述持续性用户级线程提供操作系统服务。
22.如权利要求21所述的系统,其中所述程序装置管理器适于向所述操作系统可见的程序装置传递控制传输指令,并在特权级上执行所述控制传输指令。
23.如权利要求22所述的系统,所述程序装置管理器适于使所述服务线程获得所述持续性用户级线程的状态;向所述持续性用户级线程提供代理执行;和返回后执行状态到所述持续性用户级线程。
24.如权利要求23所述的系统,其中从所述后执行状态重新开始所述持续性用户级线程的运行。
25.一种计算机可读媒体,其上面保存有一组指令,当机器执行该指令时,导致基于在操作系统可见的程序装置上运行并使用指令集扩展的操作系统调度线程,来创建持续性用户级线程,以独立于在操作系统调度线程上的上下文切换活动而在操作系统隔离的程序装置上运行。
26.如权利要求25所述的计算机可读媒体,其中所述指令导致所述操作系统调度线程和所述持续性用户级线程共享一个公用虚拟地址空间。
27.如权利要求25所述的计算机可读媒体,其中所述指令导致当所述持续性用户级线程遇到需要操作系统处理的事件时,挂起该持续性用户级线程的运行。
28.如权利要求25所述的计算机可读媒体,其中所述指令导致在附加的操作系统可见的程序装置上运行的服务线程向所述持续性用户级线程提供操作系统服务。
29.如权利要求28所述的计算机可读媒体,其中所述指令导致向所述附加的操作系统可见的程序装置传递控制传输指令,并在特权级上执行所述控制传输指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210472991.4A CN102981808B (zh) | 2005-09-30 | 2006-09-29 | 用于持续性用户级线程的设备、系统和方法 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/239,475 US8028295B2 (en) | 2005-09-30 | 2005-09-30 | Apparatus, system, and method for persistent user-level thread |
US11/239475 | 2005-09-30 | ||
US11/239,475 | 2005-09-30 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210472991.4A Division CN102981808B (zh) | 2005-09-30 | 2006-09-29 | 用于持续性用户级线程的设备、系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101038543A true CN101038543A (zh) | 2007-09-19 |
CN101038543B CN101038543B (zh) | 2013-01-02 |
Family
ID=37887229
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006101444908A Expired - Fee Related CN101038543B (zh) | 2005-09-30 | 2006-09-29 | 用于持续性用户级线程的设备、系统和方法 |
CN201210472991.4A Expired - Fee Related CN102981808B (zh) | 2005-09-30 | 2006-09-29 | 用于持续性用户级线程的设备、系统和方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210472991.4A Expired - Fee Related CN102981808B (zh) | 2005-09-30 | 2006-09-29 | 用于持续性用户级线程的设备、系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (5) | US8028295B2 (zh) |
JP (1) | JP4690988B2 (zh) |
CN (2) | CN101038543B (zh) |
DE (1) | DE102006046129A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101742697B (zh) * | 2008-11-04 | 2014-05-28 | 宏达国际电子股份有限公司 | 改善半持续性排程资源解除程序的方法及相关装置 |
CN108701040A (zh) * | 2016-02-09 | 2018-10-23 | 英特尔公司 | 用户级别线程暂停的方法、设备、和指令 |
CN113946528A (zh) * | 2020-07-16 | 2022-01-18 | 华为技术有限公司 | 切换系统架构的方法与装置 |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8719819B2 (en) * | 2005-06-30 | 2014-05-06 | Intel Corporation | Mechanism for instruction set based thread execution on a plurality of instruction sequencers |
US8028295B2 (en) | 2005-09-30 | 2011-09-27 | Intel Corporation | Apparatus, system, and method for persistent user-level thread |
US8689215B2 (en) * | 2006-12-19 | 2014-04-01 | Intel Corporation | Structured exception handling for application-managed thread units |
JP4450242B2 (ja) | 2007-04-10 | 2010-04-14 | ヒロセ電機株式会社 | 同軸コネクタ |
US20080307419A1 (en) * | 2007-06-06 | 2008-12-11 | Microsoft Corporation | Lazy kernel thread binding |
US20080313656A1 (en) * | 2007-06-18 | 2008-12-18 | Microsoft Corporation | User mode stack disassociation |
US20080320475A1 (en) * | 2007-06-19 | 2008-12-25 | Microsoft Corporation | Switching user mode thread context |
US8261284B2 (en) * | 2007-09-13 | 2012-09-04 | Microsoft Corporation | Fast context switching using virtual cpus |
JP4978914B2 (ja) * | 2007-10-19 | 2012-07-18 | インテル・コーポレーション | マイクロプロセッサ上での複数命令ストリーム/複数データストリームの拡張を可能にする方法およびシステム |
JP5167844B2 (ja) * | 2008-02-05 | 2013-03-21 | 日本電気株式会社 | プロセッサ、電子機器、割込み制御方法及び割込み制御プログラム |
US9354944B2 (en) | 2009-07-27 | 2016-05-31 | Advanced Micro Devices, Inc. | Mapping processing logic having data-parallel threads across processors |
US8464035B2 (en) * | 2009-12-18 | 2013-06-11 | Intel Corporation | Instruction for enabling a processor wait state |
US9720730B2 (en) * | 2011-12-30 | 2017-08-01 | Intel Corporation | Providing an asymmetric multicore processor system transparently to an operating system |
KR101691063B1 (ko) * | 2012-01-10 | 2016-12-29 | 인텔 코포레이션 | 콜백을 이용하는 isa 브리징 |
US10185566B2 (en) * | 2012-04-27 | 2019-01-22 | Intel Corporation | Migrating tasks between asymmetric computing elements of a multi-core processor |
US10162687B2 (en) * | 2012-12-28 | 2018-12-25 | Intel Corporation | Selective migration of workloads between heterogeneous compute elements based on evaluation of migration performance benefit and available energy and thermal budgets |
US9384036B1 (en) | 2013-10-21 | 2016-07-05 | Google Inc. | Low latency thread context caching |
US10037227B2 (en) * | 2015-12-17 | 2018-07-31 | Intel Corporation | Systems, methods and devices for work placement on processor cores |
CN108009007B (zh) * | 2016-10-27 | 2021-01-15 | 华为技术有限公司 | 轻量级线程的调度方法及协同管理器、vCPU调度器 |
Family Cites Families (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0497445A (ja) | 1990-08-16 | 1992-03-30 | Nec Corp | 情報処理装置の診断方式 |
JPH05265876A (ja) | 1992-03-19 | 1993-10-15 | Fujitsu Ltd | エラー報告処理方式 |
US5485626A (en) * | 1992-11-03 | 1996-01-16 | International Business Machines Corporation | Architectural enhancements for parallel computer systems utilizing encapsulation of queuing allowing small grain processing |
US6732138B1 (en) * | 1995-07-26 | 2004-05-04 | International Business Machines Corporation | Method and system for accessing system resources of a data processing system utilizing a kernel-only thread within a user process |
US5991790A (en) * | 1996-07-01 | 1999-11-23 | Sun Microsystems, Inc. | Generation and delivery of signals in a two-level, multithreaded system |
US6223204B1 (en) * | 1996-12-18 | 2001-04-24 | Sun Microsystems, Inc. | User level adaptive thread blocking |
US5872963A (en) * | 1997-02-18 | 1999-02-16 | Silicon Graphics, Inc. | Resumption of preempted non-privileged threads with no kernel intervention |
US6766515B1 (en) * | 1997-02-18 | 2004-07-20 | Silicon Graphics, Inc. | Distributed scheduling of parallel jobs with no kernel-to-kernel communication |
US6175916B1 (en) * | 1997-05-06 | 2001-01-16 | Microsoft Corporation | Common-thread inter-process function calls invoked by jumps to invalid addresses |
US6189023B1 (en) * | 1997-09-30 | 2001-02-13 | Tandem Computers Incorporated | Simulating shared code thread modules with shared code fibers |
US5923892A (en) | 1997-10-27 | 1999-07-13 | Levy; Paul S. | Host processor and coprocessor arrangement for processing platform-independent code |
US6289369B1 (en) * | 1998-08-25 | 2001-09-11 | International Business Machines Corporation | Affinity, locality, and load balancing in scheduling user program-level threads for execution by a computer system |
US6366946B1 (en) * | 1998-12-16 | 2002-04-02 | Microsoft Corporation | Critical code processing management |
EP1037147A1 (en) * | 1999-03-15 | 2000-09-20 | BRITISH TELECOMMUNICATIONS public limited company | Resource scheduling |
JP3557947B2 (ja) * | 1999-05-24 | 2004-08-25 | 日本電気株式会社 | 複数のプロセッサで同時にスレッドの実行を開始させる方法及びその装置並びにコンピュータ可読記録媒体 |
US7043725B1 (en) * | 1999-07-09 | 2006-05-09 | Hewlett-Packard Development Company, L.P. | Two tier arrangement for threads support in a virtual machine |
US7421572B1 (en) * | 1999-09-01 | 2008-09-02 | Intel Corporation | Branch instruction for processor with branching dependent on a specified bit in a register |
JP2001255961A (ja) | 2000-03-01 | 2001-09-21 | Internatl Business Mach Corp <Ibm> | コンピュータ及び冷却ファンの制御方法 |
US6651163B1 (en) * | 2000-03-08 | 2003-11-18 | Advanced Micro Devices, Inc. | Exception handling with reduced overhead in a multithreaded multiprocessing system |
US6961941B1 (en) * | 2001-06-08 | 2005-11-01 | Vmware, Inc. | Computer configuration for resource management in systems including a virtual machine |
JP3702813B2 (ja) * | 2001-07-12 | 2005-10-05 | 日本電気株式会社 | マルチスレッド実行方法及び並列プロセッサシステム |
US20030191730A1 (en) * | 2002-04-05 | 2003-10-09 | Compaq Information Technologies Group, L.P. | Unobtrusive rule-based computer usage enhancement system |
US7200846B2 (en) * | 2002-08-05 | 2007-04-03 | Sun Microsystems, Inc. | System and method for maintaining data synchronization |
US7962545B2 (en) * | 2002-12-27 | 2011-06-14 | Intel Corporation | Dynamic service registry for virtual machines |
US7216346B2 (en) * | 2002-12-31 | 2007-05-08 | International Business Machines Corporation | Method and apparatus for managing thread execution in a multithread application |
US7406699B2 (en) * | 2003-04-02 | 2008-07-29 | Microsoft Corporation | Enhanced runtime hosting |
US7093147B2 (en) * | 2003-04-25 | 2006-08-15 | Hewlett-Packard Development Company, L.P. | Dynamically selecting processor cores for overall power efficiency |
US7376954B2 (en) * | 2003-08-28 | 2008-05-20 | Mips Technologies, Inc. | Mechanisms for assuring quality of service for programs executing on a multithreaded processor |
US7496928B2 (en) * | 2003-08-28 | 2009-02-24 | Microsoft Corporation | Method and system for moderating thread priority boost for I/O completion |
US7360223B2 (en) * | 2003-09-24 | 2008-04-15 | Hewlett-Packard Development Company, L.P. | Arrangements and methods for invoking an upcall in a computer system |
US20050076186A1 (en) * | 2003-10-03 | 2005-04-07 | Microsoft Corporation | Systems and methods for improving the x86 architecture for processor virtualization, and software systems and methods for utilizing the improvements |
US7380039B2 (en) * | 2003-12-30 | 2008-05-27 | 3Tera, Inc. | Apparatus, method and system for aggregrating computing resources |
US8533716B2 (en) * | 2004-03-31 | 2013-09-10 | Synopsys, Inc. | Resource management in a multicore architecture |
US9189230B2 (en) * | 2004-03-31 | 2015-11-17 | Intel Corporation | Method and system to provide concurrent user-level, non-privileged shared resource thread creation and execution |
US20060075404A1 (en) * | 2004-10-06 | 2006-04-06 | Daniela Rosu | Method and system for scheduling user-level I/O threads |
US7669204B2 (en) * | 2004-10-14 | 2010-02-23 | International Business Machines Corporation | Autonomic SMT System tuning |
US8621458B2 (en) * | 2004-12-21 | 2013-12-31 | Microsoft Corporation | Systems and methods for exposing processor topology for virtual machines |
US8719819B2 (en) | 2005-06-30 | 2014-05-06 | Intel Corporation | Mechanism for instruction set based thread execution on a plurality of instruction sequencers |
US8607235B2 (en) | 2004-12-30 | 2013-12-10 | Intel Corporation | Mechanism to schedule threads on OS-sequestered sequencers without operating system intervention |
US7992144B1 (en) * | 2005-04-04 | 2011-08-02 | Oracle America, Inc. | Method and apparatus for separating and isolating control of processing entities in a network interface |
US8516483B2 (en) | 2005-05-13 | 2013-08-20 | Intel Corporation | Transparent support for operating system services for a sequestered sequencer |
US7752620B2 (en) * | 2005-06-06 | 2010-07-06 | International Business Machines Corporation | Administration of locks for critical sections of computer programs in a computer that supports a multiplicity of logical partitions |
US8028295B2 (en) * | 2005-09-30 | 2011-09-27 | Intel Corporation | Apparatus, system, and method for persistent user-level thread |
-
2005
- 2005-09-30 US US11/239,475 patent/US8028295B2/en not_active Expired - Fee Related
-
2006
- 2006-09-28 DE DE102006046129A patent/DE102006046129A1/de not_active Ceased
- 2006-09-29 JP JP2006266590A patent/JP4690988B2/ja not_active Expired - Fee Related
- 2006-09-29 CN CN2006101444908A patent/CN101038543B/zh not_active Expired - Fee Related
- 2006-09-29 CN CN201210472991.4A patent/CN102981808B/zh not_active Expired - Fee Related
-
2011
- 2011-08-30 US US13/221,119 patent/US8479217B2/en active Active
-
2013
- 2013-06-11 US US13/914,830 patent/US9383997B2/en active Active
-
2016
- 2016-05-27 US US15/166,469 patent/US9766891B2/en active Active
- 2016-12-21 US US15/386,615 patent/US9875102B2/en active Active
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101742697B (zh) * | 2008-11-04 | 2014-05-28 | 宏达国际电子股份有限公司 | 改善半持续性排程资源解除程序的方法及相关装置 |
CN108701040A (zh) * | 2016-02-09 | 2018-10-23 | 英特尔公司 | 用户级别线程暂停的方法、设备、和指令 |
CN108701040B (zh) * | 2016-02-09 | 2022-05-13 | 英特尔公司 | 用户级别线程暂停的方法、设备、和指令 |
US12020031B2 (en) | 2016-02-09 | 2024-06-25 | Intel Corporation | Methods, apparatus, and instructions for user-level thread suspension |
CN113946528A (zh) * | 2020-07-16 | 2022-01-18 | 华为技术有限公司 | 切换系统架构的方法与装置 |
Also Published As
Publication number | Publication date |
---|---|
US8479217B2 (en) | 2013-07-02 |
JP2007102781A (ja) | 2007-04-19 |
US9766891B2 (en) | 2017-09-19 |
DE102006046129A1 (de) | 2007-04-12 |
US9383997B2 (en) | 2016-07-05 |
US8028295B2 (en) | 2011-09-27 |
US20130275735A1 (en) | 2013-10-17 |
JP4690988B2 (ja) | 2011-06-01 |
CN101038543B (zh) | 2013-01-02 |
CN102981808B (zh) | 2015-07-29 |
US9875102B2 (en) | 2018-01-23 |
US20110314480A1 (en) | 2011-12-22 |
US20070079301A1 (en) | 2007-04-05 |
US20160274910A1 (en) | 2016-09-22 |
US20170102944A1 (en) | 2017-04-13 |
CN102981808A (zh) | 2013-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101038543A (zh) | 用于持续性用户级线程的设备、系统和方法 | |
CN102081556B (zh) | 与不同种类的资源通信的基于指令系统结构的内定序器 | |
CN101189575B (zh) | 定序器地址管理 | |
CN101160565B (zh) | 无操作系统干预情况下调度os隔离定序器上的线程的机制 | |
US7130949B2 (en) | Managing input/output interruptions in non-dedicated interruption hardware environments | |
CN103777926A (zh) | 多线程处理单元中的高效存储器虚拟化 | |
KR102187912B1 (ko) | 인터럽트들의 세트들을 구성하는 장치 및 방법 | |
CN103197916A (zh) | 用于源操作数收集器高速缓存的方法和装置 | |
JP2013516021A (ja) | プロセッサコアのハイパーバイザ離隔 | |
CN101268445A (zh) | 用于分区的多处理器系统的实时线程服务 | |
WO2006021473A1 (en) | Message delivery across a plurality of processors | |
CN103207774A (zh) | 用于解决线程发散的方法和系统 | |
EP3588288A1 (en) | A multithreaded processor core with hardware-assisted task scheduling | |
KR101900436B1 (ko) | 결합된 cpu/gpu 아키텍처 시스템에서의 디바이스의 발견 및 토폴로지 보고 | |
US10241885B2 (en) | System, apparatus and method for multi-kernel performance monitoring in a field programmable gate array | |
US8656375B2 (en) | Cross-logical entity accelerators |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130102 Termination date: 20190929 |