CN102567090A - 在计算机处理器中创建执行线程的方法和系统 - Google Patents
在计算机处理器中创建执行线程的方法和系统 Download PDFInfo
- Publication number
- CN102567090A CN102567090A CN2011103540493A CN201110354049A CN102567090A CN 102567090 A CN102567090 A CN 102567090A CN 2011103540493 A CN2011103540493 A CN 2011103540493A CN 201110354049 A CN201110354049 A CN 201110354049A CN 102567090 A CN102567090 A CN 102567090A
- Authority
- CN
- China
- Prior art keywords
- thread
- hardware
- sub
- hardware thread
- processor
- 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
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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
本发明涉及一种在计算机处理器中创建执行线程的方法和系统。在计算机处理器中创建执行线程包括:在没有操作系统参与的情况下,由用户级进程所调用的硬件处理器操作码将寄存器内容从父硬件线程复制到处于等待状态的子硬件线程;以及由所述硬件处理器操作码将所述子硬件线程从等待状态更改为短暂运行状态。
Description
技术领域
本发明涉及数据处理,更具体地说,涉及在计算机处理器中创建执行线程的方法、装置和产品。
背景技术
在当前计算机体系结构中,软件应用的执行使用包含任意数量的软件执行线程的进程来实现。软件执行线程在计算机处理器上的硬件线程中执行。由操作系统管理(创建、调度、维护以及退出)软件执行线程。一个进程可包含数百甚至数千的软件线程。但是,管理大量软件线程需要极大的操作系统运行开销。例如,当前线程创建的实现通常效率低下。
发明内容
披露了用于在计算机处理器中创建执行线程的方法、装置和产品。在本发明的各实施例中,在计算机处理器中创建执行线程包括:在没有操作系统参与的情况下,由用户级进程所调用的硬件处理器操作码将寄存器内容从父硬件线程复制到处于等待状态的子硬件线程;以及由所述硬件处理器操作码将所述子硬件线程从等待状态更改为短暂运行状态。
通过下面对附图中所示的本发明的示例性实施例的更具体的描述,本发明的上述和其他目标、特征和优点将是显而易见的,在附图中,相同的标号通常表示本发明的示例性实施例的相同部分。
附图说明
图1示出其中根据本发明的各实施例在计算机处理器中创建执行线程的示例性计算机系统的方块图;
图2示出根据本发明的实施例的计算机处理器中的执行线程的实例状态机;
图3是示出根据本发明的各实施例在计算机处理器中创建执行线程的示例性方法的流程图;
图4是示出根据本发明的各实施例在计算机处理器中创建执行线程的另一示例性方法的流程图;
图5是示出根据本发明的各实施例在计算机处理器中创建执行线程的另一示例性方法的流程图;
图6是示出根据本发明的各实施例在计算机处理器中创建执行线程的另一示例性方法的流程图;以及
图7是示出根据本发明的各实施例在计算机处理器中创建执行线程的另一示例性方法的流程图。
具体实施方式
参考从图1开始的附图描述了根据本发明在计算机处理器中创建执行线程的示例性方法、装置和产品。图1示出其中根据本发明的各实施例在计算机处理器中创建执行线程的实例系统的方块图。执行线程(在本说明书中也称为“软件线程”)是可由操作系统调度以在处理器上执行的最小处理单位。线程一般包含在进程内。多个线程可以存在于同一进程中并共享诸如存储器之类的资源,而不同进程不能共享这些资源。具体而言,进程的各线程共享该进程的指令和上下文(即,变量在执行中的任意给定时刻具有的值)。相比之下,“硬件”线程在计算机处理器的硬件中实现并执行软件线程的指令。也就是说,对硬件线程的支持以用于每个硬件线程的一组单独架构寄存器的形式内置于处理器本身中,因此各个硬件线程可以同时执行而无需在硬件线程之间切换上下文。每个此类硬件线程可以运行通过软件线程(被分配给称为“时间份额”或“时隙”的处理器时间部分)和上下文切换(在软件线程不再拥有其被分配的硬件线程期间保存该软件线程的一组架构寄存器的内容)实现的多个软件执行线程。
图1的系统包括实例计算机(152),它是被配置为根据本发明的各实施例在计算机处理器中实现线程创建的自动计算机器。图1的计算机(152)包括至少一个计算机处理器(156)或‘CPU’以及通过高速存储总线(166)和总线适配器(158)与处理器(156)和计算机(152)的其他组件相连的随机存取存储器(168)(‘RAM’)。
实例计算机(152)的RAM(168)中存储有用户级应用(138)和操作系统(154)。用户级应用是执行用户级数据处理任务的计算机程序指令模块。此类应用的实例包括字处理应用、电子表格应用、数据库管理应用、媒体库应用、多媒体编辑应用以及本领域的技术人员将想到的其他应用。应用被描述为“用户级”以将其与诸如RAM(168)中存储的操作系统(154)之类的“系统级”或“内核级”进程进行区分。典型地,在现有技术中,用户级应用的执行受系统级进程的支持:例如,在执行用户级应用中,操作系统可以实例化进程、为进程分配进程标识符、为进程分配虚拟地址空间、实例化进程内的一个或多个软件执行线程、为每个软件线程分配线程标识符、调度要在计算机处理器上执行的软件线程、在用户级进程和软件线程之间管理存储器分页以及执行本领域的技术人员将想到的其他操作。此外,一旦被实例化,现有技术的用户级进程就可通过对操作系统的系统调用来创建附加线程。每个此类系统调用都导致时间和资源消耗进程。通过这种方式,用户级应用可以被描述为在系统级应用“之上”或“顶层”工作。在其中根据本发明的各实施例在计算机处理器中创建执行线程的计算机内使用的操作系统实例包括UNIXTM、LinuxTM、Microsoft XPTM、AIXTM、IBM的i5/OSTM以及本领域的技术人员将想到的其他操作系统。图1的实例中的用户级应用(138)和操作系统(154)示为位于RAM(168)内,但是此类软件的许多组件一般也存储在非易失性存储器内,例如存储在盘驱动器(170)内。
在图1的实例中,操作系统(154)创建了描述用户级应用(138)的进程的进程描述符(140)。进程描述符(140)可指定进程标识符、分配给进程的地址空间、分配给进程的资源的状态、进程的状态、在上下文切换时用于恢复的处理器寄存器的副本(从中恢复进程)以及本领域的技术人员将想到的其他内容。图1的实例中的操作系统(154)还实例化多个由RAM(168)内存储的线程描述符(142)指定的软件线程。线程描述符可指定线程标识符、为包含线程的进程分配的地址空间、为包含线程的进程分配的资源的状态、线程的状态、在上下文切换时用于恢复的处理器寄存器的副本(从中恢复进程)以及本领域的技术人员将想到的其他内容。
图1的实例中用于用户级应用(138)的软件线程被调度为在处理器(156)中实现的硬件线程(120、122)内执行。也就是说,形成用户级应用(138)的线程的计算机程序指令在硬件线程内执行。计算机程序指令可以通过使用指令解码器(132)、指令分派器(134)和执行单元(136)在硬件线程内执行。指令解码器(132)是处理器(156)内从寄存器集(124、126)中的寄存器检索指令(118)并将所述指令解码成在处理器内的执行单元(136)上执行的微指令的静态和动态逻辑网络。例如,要解码以便执行的指令可包括操作码(操作代码)。操作码是机器语言指令的指定要执行的操作的部分。除了操作码本身以外,指令还可具有一个或多个参数,也称为操作数,将根据此操作数执行操作,但是有些操作可具有隐式操作数或甚至根本没有操作数。取决于解码和执行操作码所依赖的处理器体系结构,操作数可以是寄存器值、调用栈中的值、其他记忆值、I/O端口等。一旦被解码,执行单元(136)就执行微指令。执行单元的实例包括LOAD执行单元、STORE执行单元、浮点执行单元、用于整数算数和逻辑运算的执行单元等。图1的实例中的计算机处理器(156)还包括指令分派器(134),指令分派器(134)在存在资源竞用时,仲裁从硬件执行线程(120、122)分派指令的优先级。指令分派器(134)是处理器(156)内将微指令分派给处理器(156)中的执行单元(136)的静态和动态逻辑网络。
通常,图1的实例系统中的处理器(156)执行操作以便通过以下方式创建执行线程:在没有操作系统(154)参与的情况下,由用户级进程(在图1中,是针对进程描述符(140)所描述的用户级应用(138)实现的进程)所调用的硬件处理器操作码将寄存器内容(118)从父硬件线程(120)复制到子硬件线程(122)。在硬件处理器操作码将寄存器内容(118)从父硬件线程(120)复制到子硬件线程(122)时,子硬件线程(122)处于等待状态(112)。在复制寄存器内容之后,硬件处理器操作码(102)然后将子硬件线程从等待状态(112)更改为短暂运行状态(112)。硬件处理器操作码(102)在此被描述为根据本发明的各实施例在计算机处理器中创建执行线程,因为操作码由处理器执行并且处理器完成操作码指定的操作。
在图1的实例中,用户级应用(138)所调用的硬件处理器操作码是fork操作码(102),fork操作码(102)包括指定从等待状态更改为短暂运行状态的子硬件线程的最大数量(104)的操作数、存储从等待状态更改为短暂运行状态的子硬件线程的数量(108)的位置、处理器在执行操作码时设置的指示是否有任何子硬件线程被从等待状态更改为短暂运行状态的标志(106),以及处理器在执行操作码时设置的将父硬件线程标识为父代(而非子硬件线程)的标志(110)。通过类似的方式,在将子硬件线程(122)从等待状态(112)更改为短暂运行状态(112)时,硬件处理器操作码(102)还可以针对子硬件线程(122)设置将所述子硬件线程标识为子代的标志(116),并且由硬件处理器操作码为子硬件线程分配唯一线程标识符(114),其中包括将一个整数存储在子硬件线程的寄存器中。在图1的实例中,“标志”可通过各种方式实现,包括例如实现为存储在特定寄存器中的值、实现为诸如硬件线程的条件码寄存器之类的公知位置中的一个或多个位,或者以本领域的技术人员将想到的其他方式实现。
图1的实例中的子硬件线程(122)的“状态”被示为与该子硬件线程关联的寄存器(126)中的值。根据本发明的各实施例实现并在以下参考图2更详细描述的硬件线程可以被设置为以下三种状态之一:运行状态、等待状态以及短暂运行状态。当处于运行状态时,硬件线程具有完全的操作系统支持(线程描述符)以及例如其他系统级支持。也就是说,当硬件线程处于运行状态时,操作系统完全了解该硬件线程及其存在和操作。当处于等待状态时,操作系统了解该硬件线程的存在,但是从操作系统的角度而言,该硬件线程不活动。处于等待状态的硬件线程不执行软件线程的指令。当处于等待状态时,硬件线程可以在没有操作系统支持的情况下更改为短暂运行状态并可以开始执行指令。也就是说,在操作系统未实例化硬件线程的规范线程描述符的情况下,一旦处于短暂运行状态,硬件线程便可以执行软件线程指令。短暂运行状态被描述为“短暂”是因为,以短暂运行状态执行的硬件线程可以(但不是必需)在从不使用操作系统支持的情况下完成执行并返回等待状态。
图1的计算机(152)包括通过扩展总线(160)和总线适配器(158)与处理器(156)和计算机(152)的其他组件耦合的盘驱动器适配器(172)。盘驱动器适配器(172)以盘驱动器(170)的形式将非易失性数据存储装置连接到计算机(152)。在计算机中用于根据本发明的各实施例在计算机处理器中创建执行线程的盘驱动器适配器包括集成驱动器电子设备(‘IDE’)适配器、小型计算机系统接口(‘SCSI’)适配器以及本领域的技术人员将想到的其他适配器。非易失性计算机存储器还可以实现为本领域的技术人员将想到的光盘驱动器、电可擦写可编程只读存储器(也称为“EEPROM”或闪存)、RAM驱动器等。
图1的实例计算机(152)包括一个或多个输入/输出(‘I/O’)适配器(178)。I/O适配器通过例如控制到诸如计算机显示屏之类的显示设备的输出,以及控制来自诸如键盘和鼠标之类的输入设备(181)的用户输入的软件驱动器和计算机硬件来实现面向用户的输入/输出。图1的实例计算机(152)包括视频适配器(209),视频适配器(209)是专门设计为将图形输出到诸如显示屏或计算机监视器之类的显示设备(180)的I/O适配器的实例。视频适配器(209)通过高速视频总线(164)、总线适配器(158)以及前端总线(162)(也称为高速总线)与处理器(156)相连。
图1的示例性计算机(152)包括用于与其他计算机(182)进行数据通信以及用于与数据通信网络(100)进行数据通信的通信适配器(167)。此类数据通信可以通过RS-232连接串行地执行,通过诸如通用串行总线(‘USB’)之类的外部总线、通过诸如IP数据通信网络之类的数据通信网络以及本领域的技术人员将想到的其他方式执行。通信适配器实现硬件级数据通信,通过此硬件级数据通信,一台计算机直接或通过数据通信网络将数据通信发送给另一计算机。用于根据本发明的各实施例在计算机处理器中创建执行线程的通信适配器实例包括用于有线拨号通信的调制解调器、用于有线数据通信网络通信的以太网(1EEE 802.3)适配器,以及用于无线数据通信网络通信的802.11适配器。
组成图1中所示的示例性系统的服务器及其他设备的排列仅用于说明而并非进行限制。根据本发明的各种实施例使用的数据处理系统可包括本领域的技术人员将想到的未在图1中示出的其他服务器、路由器、其他设备以及端对端体系结构。此类数据处理系统中的网络可支持许多数据通信协议,包括例如TCP(传输控制协议)、IP(网际协议)、HTTP(超文本传输协议)、WAP(无线接入协议)、HDTP(手持设备传输协议)以及本领域的技术人员将想到的其他协议。本发明的各种实施例可以在除图1所示以外的多种硬件平台上实现。
为了进一步说明,图2示出根据本发明的实施例的计算机处理器中的执行线程的实例状态机。图2的实例状态机(200)包括三种状态:规范运行状态(202)、等待状态(204)和短暂运行状态(206)。根据本发明的实施例实现和配置的计算机处理器的任何硬件线程在任何时刻可处于这三种状态之一。硬件线程的状态可以通过与该硬件线程关联的寄存器中存储的值以及本领域的技术人员将想到的其他方式表示。每当硬件线程的状态更改时,该寄存器中存储的值也会更改以便与硬件线程的当前状态对应。
当处于运行状态(202)时,硬件线程具有完全的操作系统支持(规范线程描述符)。也就是说,当硬件线程处于运行状态(202)时,操作系统完全了解该硬件线程及其存在和操作。软件执行线程根据操作系统的调度,通过上下文切换和时间片在硬件线程中执行。执行处于运行状态(202)的硬件线程的软件线程可通过调用“等待”操作码(210)(“等待”操作码是当由处理器执行时,使处理器将硬件线程的状态从运行状态(202)更改为等待状态(204)的机器指令)使硬件线程(202)进入等待状态。
当处于等待状态(204)时,操作系统了解硬件线程的存在,但是从操作系统的角度而言,该硬件线程不活动。处于等待状态的硬件线程不执行软件线程的指令。硬件线程可以在发生中断(208)时从等待状态返回,从而调用操作系统的中断处理机。备选地,在另一硬件线程(此处被称为父硬件线程)中执行的用户级进程可执行硬件处理器操作码(例如fork.rt、rn(214)),在没有操作系统参与的情况下,将寄存器内容从父硬件线程复制到处于等待状态(204)的硬件线程,并由硬件处理器操作码将该硬件线程从等待状态(204)更改为短暂运行状态(206)。从等待状态(204)更改为短暂运行状态(206)的硬件线程现在被称为子硬件线程。在此实例中,‘rt’和‘rn’是指定实际创建的线程数以及要创建的最大子线程数的fork操作码(214)的参数。
当处于短暂运行状态(206)时,子硬件线程可执行从父硬件线程的寄存器复制的指令。如果子硬件线程完成指令执行,则该子硬件线程可再次在没有操作系统参与的情况下返回到等待状态(204)。也就是说,在子硬件线程中执行的指令可包括上述使处理器将子硬件线程的状态从短暂运行状态(206)更改为等待状态(204)的等待操作码(212)。通过这种方式,子硬件线程可在操作系统不了解子硬件线程的操作的情况下运行完成。
但是,子硬件线程有时可能需要操作系统支持,或者对于某些其他任务,操作系统可能需要使用该子硬件线程。例如,处于短暂运行状态(206)的子硬件线程可调用操作系统函数,处理器可接收该子硬件线程的异步中断,从而调用操作系统的中断处理机,或者该子硬件线程可导致执行异常,从而调用操作系统的中断处理机(216),以及本领域的技术人员将想到的操作。在上述每一种情况下,操作系统然后针对该子硬件线程创建规范操作系统线程描述符并且该子硬件线程返回运行(202)状态。操作系统可从诸如用户级进程的线程描述符或父硬件线程中执行的软件线程的线程描述符之类的另一操作系统线程描述符来创建子线程的规范操作系统线程描述符。
为了进一步说明,图3是示出根据本发明的各实施例在计算机处理器中创建执行线程的示例性方法的流程图。图3的方法包括在没有操作系统参与的情况下,由用户级进程(316)所调用(318)的硬件处理器操作码(102)将寄存器内容(320)从父硬件线程(120)复制(302)到子硬件线程(122)。在图3的方法中,当用户级进程调用(318)硬件处理器操作码(102)时,子硬件线程(122)处于等待状态(204)。复制(302)寄存器内容可包括复制父硬件线程架构寄存器、寄存器内存储的指令、变量值、指令计数器值以及本领域的技术人员将想到的内容。
图3的方法还包括由硬件处理器操作码(102)将子硬件线程(122)从等待状态(204)更改(304)为短暂运行状态(206)。将子硬件线程(122)从等待状态(204)更改(304)为短暂运行状态(206)可通过各种方式实现,包括例如设置预先指定的标志、在公知位置中翻转位,或者将预定值存储在被指定为存储状态信息的寄存器内。在图3的方法中,由硬件处理器操作码(102)将子硬件线程(122)从等待状态(204)更改(304)为短暂运行状态(206)包括由硬件处理器操作码(102)针对子硬件线程(122)设置(306)将子硬件线程(122)标识为子代的标志(116),并且由硬件处理器操作码(102)向该子硬件线程分配(308)唯一线程标识符(106)。向子硬件线程(122)分配(308)唯一线程标识符(106)可通过将一个整数存储在该子硬件线程的寄存器中来实现。
图3的方法还包括由硬件处理器操作码(102)针对父硬件线程(120)设置(310)指示是否有任何子硬件线程(122)被从等待状态(204)更改为短暂运行状态(206)的标志(106)。设置(310)标志可通过各种方式实现,包括例如在指定为用于此目的的条件码寄存器中翻转位、在被指定为存储此类标志的寄存器中存储值以及本领域的技术人员将想到的其他方法。
在图3的方法中,硬件处理器操作码(102)还包括指定从等待状态更改为短暂运行状态的子硬件线程的最大数量的操作数(322),并且图3的方法包括由硬件处理器操作码(102)将从等待状态(204)更改为短暂运行状态(206)的子硬件线程(122)的数量(108)返回(312)到用户级进程(316)。硬件处理器操作码指定的从等待状态更改为短暂运行状态的子硬件线程可多于处于等待状态的子硬件线程,或多于根据预定规则被允许在给定时刻更改的子硬件线程。通过这种方式,硬件处理器操作码有效地创建与可提供的子硬件线程一样多的子硬件线程(最多到最大请求数),同时将实际创建的子硬件线程数告知原来执行硬件处理器操作码的硬件线程。
图3的方法还包括由硬件处理器操作码(102)针对父硬件线程(120)设置(314)将父硬件线程(120)标识为父代的标志(110)。所述标志使得线程能够高效地(快速、低计算开销)确定硬件线程的特性(父代还是子代)。所述标志例如可实现为可以直接由硬件高效地进行比较的条件码寄存器中的位。
如上参考图2所述,处于短暂运行状态(206)的子硬件线程在多种不同的情况下,可以退出此状态并返回到运行状态(202)。这些情况将在下面参考图4、5和6更详细地说明。因此,图4是示出根据本发明的各实施例在计算机处理器中创建执行线程的另一示例性方法的流程图。图4的方法与图3的方法的类似之处在于,图4的方法包括在没有操作系统参与的情况下,由用户级进程(316)所调用(318)的硬件处理器操作码(102)将寄存器内容(320)从父硬件线程(120)复制(302)到处于等待状态(204)的子硬件线程(122);以及由硬件处理器操作码(102)将子硬件线程(122)从等待状态(204)更改(304)为短暂运行状态(206)。
但是,图4的方法与图3的方法的不同之处在于:图4中的方法包括由子硬件线程调用(402)操作系统函数(406),并由操作系统(404)创建(404)子硬件线程(122)的规范操作系统线程描述符(410)。操作系统(404)可从诸如父硬件线程(120)中执行的软件线程的线程描述符之类的另一操作系统线程描述符(408)创建子线程的规范操作系统线程描述符(410)。如上所述,规范线程描述符(410)是操作系统对软件执行线程、其资源、存储器空间、当前变量值、上下文以及本领域的技术人员将想到的其他内容的描述。在创建子硬件线程(122)的规范线程描述符(410)之前,操作系统不知道子硬件线程正在执行指令。通过创建规范线程描述符,子硬件线程(以及在该硬件线程中执行的软件线程)有效地成为成熟的、操作系统了解的、受到维护和管理的执行线程。
为了进一步说明,图5是示出根据本发明的各实施例在计算机处理器中创建执行线程的另一示例性方法的流程图。图5的方法与图3的方法的类似之处在于,图5的方法包括在没有操作系统参与的情况下,由用户级进程(316)所调用(318)的硬件处理器操作码(102)将寄存器内容(320)从父硬件线程(120)复制(302)到处于等待状态(204)的子硬件线程(122);以及由硬件处理器操作码(102)将子硬件线程(122)从等待状态(204)更改(304)为短暂运行状态(206)。
但是,图5的方法与图3的方法的不同之处在于:图5的方法包括由计算机处理器接收(502)子硬件线程(122)的异步中断(506),从而调用操作系统的中断处理机(512),以及由操作系统创建(504)子硬件线程(122)的规范操作系统线程描述符(510)。操作系统可从另一操作系统线程描述符(508)创建子线程的规范操作系统线程描述符(510)。此类异步中断(506)的实例可包括时间份额超时、计时器中断、与子硬件线程无关的导致操作系统使子硬件线程返回运行状态(202)的外部中断、诸如来自另一处理器的意外消息之类的处理器间中断以及本领域的技术人员将想到的其他内容。
为了进一步说明,图6是示出根据本发明的各实施例在计算机处理器中创建执行线程的另一示例性方法的流程图。图6的方法与图3的方法的类似之处在于,图6的方法包括在没有操作系统参与的情况下,由用户级进程(316)所调用(318)的硬件处理器操作码(102)将寄存器内容(320)从父硬件线程(120)复制(302)到处于等待状态(204)的子硬件线程(122);以及由硬件处理器操作码(102)将子硬件线程(122)从等待状态(204)更改(304)为短暂运行状态(206)。
但是,图6的方法与图3的方法的不同之处在于:图6的方法包括由子硬件线程(122)导致(602)执行异常(606),从而调用操作系统的中断处理机(612),以及由操作系统创建(604)子硬件线程(122)的规范操作系统线程描述符(610)。操作系统可从另一操作系统线程描述符(608)创建(604)子线程的规范操作系统线程描述符(610)。执行异常(606)的实例可包括存储器错误、执行非法指令、用0作除数以及本领域的技术人员将想到的其他内容。
图4、5、6示出将子硬件线程从短暂运行状态(206)更改为运行状态(202)的各种方法。但是,根据本发明的实施例配置的子硬件线程还可以从短暂运行状态(206)更改为等待状态(204)。为了进一步说明,图7是示出根据本发明的各实施例在计算机处理器中创建执行线程的另一示例性方法的流程图。图7的方法与图3的方法的类似之处在于,图7的方法包括在没有操作系统参与的情况下,由用户级进程(316)所调用(318)的硬件处理器操作码(102)将寄存器内容(320)从父硬件线程(120)复制(302)到处于等待状态(204)的子硬件线程(122);以及由硬件处理器操作码(102)将子硬件线程(122)从等待状态(204)更改(304)为短暂运行状态(206)。
但是,图7的方法与图3的方法的不同之处在于:图7的方法包括在子硬件线程中执行(704)硬件处理器操作码(702),并且由在子硬件线程(122)中执行的硬件处理器操作码使该子硬件线程返回(704)等待状态(204)。也就是说,除了在父线程中执行的将子线程的状态从等待状态更改为短暂运行状态的硬件处理器操作码之外,图7的方法还包括在子线程中执行的将子线程的状态从短暂运行状态更改回等待状态的硬件处理器操作码。通过这种方式,在没有操作系统交互的情况下,在硬件处理器操作码级别,可以在可用硬件线程(处于等待状态的硬件线程)中创建执行线程、在硬件线程中执行该执行线程,并且可以将该硬件线程返回等待状态以供未来使用。
鉴于上述说明将认识到,根据本发明的各实施例在计算机处理器中创建执行线程的优点包括:
●单个线程的线程创建是非常轻量的,不涉及任何操作系统开销;
●多个线程的线程创建可以并行地按需执行,而非针对多个线程中的每个线程串行地执行;以及
●线程创建在相同计算机时间量内发生以创建任意数量的子线程。
本领域的技术人员将理解,本发明的各方面可以实现为系统、方法或计算机程序产品。因此,本发明的各方面可以采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或组合了在此通常被称为“电路”、“模块”或“系统”的软件和硬件方面的实施例的形式。此外,本发明的各方面可以采取体现在一个或多个计算机可读介质(在介质中具有计算机可读程序代码)中的计算机程序产品的形式。
可以使用一个或多个计算机可读介质的任意组合。所述计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质例如可以是(但不限于)电、磁、光、电磁、红外线或半导体系统、装置或设备或它们的任何适当组合。计算机可读存储介质的更具体的实例(非穷举列表)可以包括以下项:具有一条或多条线的电连接、便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦写可编程只读存储器(EPROM或闪存)、光纤、便携式光盘只读存储器(CD-ROM)、光存储设备、磁存储设备或它们的任何适当组合。在本文档的上下文中,计算机可读存储介质可以是任何能够包含或存储由指令执行系统、装置或设备使用或与所述指令执行系统、装置或设备结合的程序的有形介质。
计算机可读传输介质可以包括其中包含计算机可读程序代码(例如,在基带中或作为载波的一部分)的传播数据信号。此类传播信号可以采取多种形式中的任何形式,包括但不限于电磁、光或它们的任何适当组合。计算机可读传输介质可以是任何并非计算机可读存储介质以及可以传送、传播或传输由指令执行系统、装置或设备使用或与所述指令执行系统、装置或设备结合的程序的计算机可读介质。
可以使用任何适当的介质(包括但不限于无线、有线、光缆、RF等或它们的任何适当组合)来传输计算机可读介质中包含的程序代码。
用于执行本发明的各方面的操作的计算机程序代码可以使用一种或多种编程语言的任意组合来编写,所述编程语言包括诸如Java、Smalltalk、C++或类似语言之类的面向对象的编程语言或者诸如“C”编程语言或类似的编程语言之类的常规过程编程语言。所述程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为独立的软件包、部分地在用户计算机上并部分地在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后者的情况中,所述远程计算机可以通过包括局域网(LAN)或广域网(WAN)的任何类型网络与用户的计算机相连,也可以与外部计算机进行连接(例如,使用因特网服务提供商通过因特网连接)。
下面参考根据本发明的各实施例的方法、装置(系统)和计算机程序产品的流程图和/或方块图对本发明的各方面进行描述。将理解,所述流程图和/或方块图的每个方块以及所述流程图和/或方块图中的方块的组合可以由计算机程序指令来实现。这些计算机程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,以便通过所述计算机或其他可编程数据处理装置的处理器执行的指令产生用于实现在一个或多个流程图和/或方块图方块中指定的功能/操作的装置。
这些计算机程序指令也可以被存储在可引导计算机、其他可编程数据处理装置或其他设备以特定方式执行功能的计算机可读介质中,以便存储在所述计算机可读介质中的指令产生一件包括实现在所述一个或多个流程图和/或方块图方块中指定的功能/操作的指令的制品。
所述计算机程序指令还可被加载到计算机、其他可编程数据处理装置或其他设备,以导致在所述计算机、其他可编程装置或其他设备上执行一系列操作步骤以产生计算机实现的过程,从而在所述计算机或其他可编程装置上执行的指令提供用于实现在一个或多个流程图和/或方块图方块中指定的功能/操作的过程。
附图中的流程图和方块图示出了根据本发明的各实施例的系统、方法和计算机程序产品的可能实施方式的架构、功能和操作。在此方面,所述流程图或方块图中的每个方块都可以表示代码的模块、段或部分,所述代码包括用于实现指定的逻辑功能的一个或多个可执行指令。还应指出,在某些备选实施方式中,在方块中说明的功能可以不按图中说明的顺序发生。例如,示为连续的两个方块可以实际上被基本同时地执行,或者某些时候,取决于所涉及的功能,可以以相反的顺序执行所述方块。还应指出,所述方块图和/或流程图的每个方块以及所述方块图和/或流程图中的方块的组合可以由执行指定功能或操作的基于专用硬件的系统或专用硬件和计算机指令的组合来实现。
从上述描述将理解,可以在不偏离本发明的真实精神的情况下,对本发明的各种实施例做出修改和更改。本说明书中的描述仅用于例示并且不应被理解为进行限制。本发明的范围仅由以下权利要求的语言来限定。
Claims (17)
1.一种在计算机处理器中创建执行线程的方法,所述方法包括:
在没有操作系统参与的情况下,由用户级进程所调用的硬件处理器操作码将寄存器内容从父硬件线程复制到处于等待状态的子硬件线程;以及
由所述硬件处理器操作码将所述子硬件线程从等待状态更改为短暂运行状态。
2.如权利要求1中所述的方法,还包括:
由所述子硬件线程调用操作系统函数;以及
由所述操作系统创建所述子硬件线程的规范操作系统线程描述符。
3.如权利要求1中所述的方法,还包括:
由所述计算机处理器接收所述子硬件线程的异步中断,从而调用所述操作系统的中断处理机;以及
由所述操作系统创建所述子硬件线程的规范操作系统线程描述符。
4.如权利要求1中所述的方法,还包括:
由所述子硬件线程导致执行异常,从而调用所述操作系统的中断处理机;以及
由所述操作系统创建所述子硬件线程的规范操作系统线程描述符。
5.如权利要求1中所述的方法,其中所述硬件处理器操作码进一步包括指定从所述等待状态更改为所述短暂运行状态的子硬件线程的最大数量的操作数,以及所述方法还包括:
由所述硬件处理器操作码将从所述等待状态更改为所述短暂运行状态的子硬件线程的数量返回到所述用户级进程。
6.如权利要求1中所述的方法,还包括:
由所述硬件处理器操作码针对所述父硬件线程设置指示是否有任何子硬件线程被从所述等待状态更改为所述短暂运行状态的标志。
7.如权利要求1中所述的方法,还包括:
由所述硬件处理器操作码针对所述父硬件线程设置将所述父硬件线程标识为父代的标志。
8.如权利要求1中所述的方法,其中由所述硬件处理器操作码将所述子硬件线程从等待状态更改为短暂运行状态进一步包括:由所述硬件处理器操作码针对所述子硬件线程设置将所述子硬件线程标识为子代的标志。
9.如权利要求1中所述的方法,其中由所述硬件处理器操作码将所述子硬件线程从等待状态更改为短暂运行状态进一步包括:由所述硬件处理器操作码向所述子硬件线程分配唯一线程标识符,其中包括将一个整数存储在所述子硬件线程的寄存器中。
10.如权利要求1中所述的方法,还包括:
由在所述子硬件线程中执行的硬件处理器操作码将所述子硬件线程返回到所述等待状态。
11.一种在计算机处理器中创建执行线程的装置,所述装置包括计算机处理器、在操作上与所述计算机处理器耦合的计算机存储器,所述计算机存储器内包含能够执行以下操作的计算机程序指令:
在没有操作系统参与的情况下,由用户级进程所调用的硬件处理器操作码将寄存器内容从父硬件线程复制到处于等待状态的子硬件线程;以及
由所述硬件处理器操作码将所述子硬件线程从等待状态更改为短暂运行状态。
12.如权利要求11中所述的装置,还包括能够执行以下操作的计算机程序指令:
由所述子硬件线程调用操作系统函数;以及
由所述操作系统创建所述子硬件线程的规范操作系统线程描述符。
13.如权利要求11中所述的装置,还包括能够执行以下操作的计算机程序指令:
由所述计算机处理器接收所述子硬件线程的异步中断,从而调用所述操作系统的中断处理机;以及
由所述操作系统创建所述子硬件线程的规范操作系统线程描述符。
14.如权利要求11中所述的装置,还包括能够执行以下操作的计算机程序指令:
由所述子硬件线程导致执行异常,从而调用所述操作系统的中断处理机;以及
由所述操作系统创建所述子硬件线程的规范操作系统线程描述符。
15.如权利要求11中所述的装置,其中所述硬件处理器操作码进一步包括指定从所述等待状态更改为所述短暂运行状态的子硬件线程的最大数量的操作数,以及所述装置还包括能够执行以下操作的计算机程序指令:由所述硬件处理器操作码将从所述等待状态更改为所述短暂运行状态的子硬件线程的数量返回到所述用户级进程。
16.如权利要求11中所述的装置,还包括能够执行以下操作的计算机程序指令:由所述硬件处理器操作码针对所述父硬件线程设置指示是否有任何子硬件线程被从所述等待状态更改为所述短暂运行状态的标志。
17.如权利要求11中所述的装置,还包括能够执行以下操作的计算机程序指令:由所述硬件处理器操作码针对所述父硬件线程设置将所述父硬件线程标识为父代的标志。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/959,075 US8561070B2 (en) | 2010-12-02 | 2010-12-02 | Creating a thread of execution in a computer processor without operating system intervention |
US12/959,075 | 2010-12-02 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102567090A true CN102567090A (zh) | 2012-07-11 |
CN102567090B CN102567090B (zh) | 2016-03-16 |
Family
ID=46163509
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110354049.3A Active CN102567090B (zh) | 2010-12-02 | 2011-11-10 | 在计算机处理器中创建执行线程的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (2) | US8561070B2 (zh) |
CN (1) | CN102567090B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015131542A1 (zh) * | 2014-03-04 | 2015-09-11 | 华为技术有限公司 | 数据处理方法、装置和系统 |
CN109783239A (zh) * | 2019-01-25 | 2019-05-21 | 上海创景信息科技有限公司 | SystemC仿真调度核的多线程优化方法、系统及介质 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8572628B2 (en) | 2010-12-02 | 2013-10-29 | International Business Machines Corporation | Inter-thread data communications in a computer processor |
US8561070B2 (en) | 2010-12-02 | 2013-10-15 | International Business Machines Corporation | Creating a thread of execution in a computer processor without operating system intervention |
US8869172B2 (en) * | 2011-09-30 | 2014-10-21 | Quietus Systems Inc. | Method and system method and system for exception-less system calls for event driven programs |
US10430190B2 (en) * | 2012-06-07 | 2019-10-01 | Micron Technology, Inc. | Systems and methods for selectively controlling multithreaded execution of executable code segments |
US20170090881A1 (en) * | 2014-03-18 | 2017-03-30 | Oxford University Innovation Limited | Methods and devices for executing program code of a probabilistic programming language |
US9747108B2 (en) * | 2015-03-27 | 2017-08-29 | Intel Corporation | User-level fork and join processors, methods, systems, and instructions |
TWI639955B (zh) * | 2017-11-06 | 2018-11-01 | 晨星半導體股份有限公司 | 多處理器系統及其處理器管理方法 |
CN109313623B (zh) * | 2017-11-15 | 2022-04-15 | 深圳配天智能技术研究院有限公司 | 切换串口数据传输状态的方法及装置 |
US12079657B2 (en) * | 2021-06-24 | 2024-09-03 | Hewlett Packard Enterprise Development Lp | Handling ownership of process threads |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060117316A1 (en) * | 2004-11-24 | 2006-06-01 | Cismas Sorin C | Hardware multithreading systems and methods |
CN1842770A (zh) * | 2003-08-28 | 2006-10-04 | 美普思科技有限公司 | 一种在处理器中挂起和释放执行过程中计算线程的整体机制 |
CN100578453C (zh) * | 2003-09-30 | 2010-01-06 | 英特尔公司 | 用于多线程的线程管理的方法和装置 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6760833B1 (en) * | 1997-08-01 | 2004-07-06 | Micron Technology, Inc. | Split embedded DRAM processor |
US6480818B1 (en) | 1998-11-13 | 2002-11-12 | Cray Inc. | Debugging techniques in a multithreaded environment |
US20020199179A1 (en) * | 2001-06-21 | 2002-12-26 | Lavery Daniel M. | Method and apparatus for compiler-generated triggering of auxiliary codes |
JP3702814B2 (ja) * | 2001-07-12 | 2005-10-05 | 日本電気株式会社 | マルチスレッド実行方法及び並列プロセッサシステム |
US20040268093A1 (en) | 2003-06-26 | 2004-12-30 | Samra Nicholas G | Cross-thread register sharing technique |
JP4818919B2 (ja) * | 2003-08-28 | 2011-11-16 | ミップス テクノロジーズ インコーポレイテッド | プロセッサ内での実行の計算スレッドを一時停止して割り当て解除するための統合されたメカニズム |
US7418585B2 (en) * | 2003-08-28 | 2008-08-26 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US7594236B2 (en) | 2004-06-28 | 2009-09-22 | Intel Corporation | Thread to thread communication |
US8607235B2 (en) | 2004-12-30 | 2013-12-10 | Intel Corporation | Mechanism to schedule threads on OS-sequestered sequencers without operating system intervention |
US8230423B2 (en) * | 2005-04-07 | 2012-07-24 | International Business Machines Corporation | Multithreaded processor architecture with operational latency hiding |
US20070083735A1 (en) * | 2005-08-29 | 2007-04-12 | Glew Andrew F | Hierarchical processor |
US7395521B1 (en) | 2005-10-14 | 2008-07-01 | Xilinx, Inc. | Method and apparatus for translating an imperative programming language description of a circuit into a hardware description |
US8453147B2 (en) * | 2006-06-05 | 2013-05-28 | Cisco Technology, Inc. | Techniques for reducing thread overhead for systems with multiple multi-threaded processors |
JP2010500679A (ja) | 2006-10-27 | 2010-01-07 | インテル・コーポレーション | プロセッサ内のマルチスレッド間通信 |
US8145874B2 (en) | 2008-02-26 | 2012-03-27 | Qualcomm Incorporated | System and method of data forwarding within an execution unit |
US8126015B2 (en) | 2008-04-11 | 2012-02-28 | Hewlett-Packard Development Company, L.P. | Multi-stream communication processing |
US8245081B2 (en) * | 2010-02-10 | 2012-08-14 | Vmware, Inc. | Error reporting through observation correlation |
US8561070B2 (en) | 2010-12-02 | 2013-10-15 | International Business Machines Corporation | Creating a thread of execution in a computer processor without operating system intervention |
US8572628B2 (en) | 2010-12-02 | 2013-10-29 | International Business Machines Corporation | Inter-thread data communications in a computer processor |
-
2010
- 2010-12-02 US US12/959,075 patent/US8561070B2/en not_active Expired - Fee Related
-
2011
- 2011-11-10 CN CN201110354049.3A patent/CN102567090B/zh active Active
-
2012
- 2012-04-27 US US13/458,781 patent/US9009716B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1842770A (zh) * | 2003-08-28 | 2006-10-04 | 美普思科技有限公司 | 一种在处理器中挂起和释放执行过程中计算线程的整体机制 |
CN100578453C (zh) * | 2003-09-30 | 2010-01-06 | 英特尔公司 | 用于多线程的线程管理的方法和装置 |
US20060117316A1 (en) * | 2004-11-24 | 2006-06-01 | Cismas Sorin C | Hardware multithreading systems and methods |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015131542A1 (zh) * | 2014-03-04 | 2015-09-11 | 华为技术有限公司 | 数据处理方法、装置和系统 |
US10067793B2 (en) | 2014-03-04 | 2018-09-04 | Huawei Technologies Co., Ltd. | Data processing method and apparatus for executing task code using reservation instruction and release instruction |
CN109783239A (zh) * | 2019-01-25 | 2019-05-21 | 上海创景信息科技有限公司 | SystemC仿真调度核的多线程优化方法、系统及介质 |
CN109783239B (zh) * | 2019-01-25 | 2021-01-15 | 上海创景信息科技有限公司 | SystemC仿真调度核的多线程优化方法、系统及介质 |
Also Published As
Publication number | Publication date |
---|---|
US20120216204A1 (en) | 2012-08-23 |
US8561070B2 (en) | 2013-10-15 |
US20120144396A1 (en) | 2012-06-07 |
US9009716B2 (en) | 2015-04-14 |
CN102567090B (zh) | 2016-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102567090B (zh) | 在计算机处理器中创建执行线程的方法和系统 | |
US7370326B2 (en) | Prerequisite-based scheduler | |
US9569399B2 (en) | Routing data communications packets in a parallel computer | |
US8112559B2 (en) | Increasing available FIFO space to prevent messaging queue deadlocks in a DMA environment | |
US20170185452A1 (en) | Apparatus and method for data processing | |
CN102541630B (zh) | 计算机处理器中线程间数据通信的方法和系统 | |
US9720677B2 (en) | Implementing updates to source code executing on a plurality of compute nodes | |
US8516487B2 (en) | Dynamic job relocation in a high performance computing system | |
JP6537600B2 (ja) | 複数のスレッドを実行する方法、システム、およびコンピュータ・プログラム製品、ならびに複数のスレッドの待ち状態を実現する方法、システム、およびコンピュータ・プログラム | |
CN114168271B (zh) | 一种任务调度方法、电子设备及存储介质 | |
US8631086B2 (en) | Preventing messaging queue deadlocks in a DMA environment | |
EP3516515B1 (en) | Scheduling of tasks in a multiprocessor device | |
CN109002286A (zh) | 基于同步编程的数据异步处理方法及装置 | |
US10277547B2 (en) | Data communications in a distributed computing environment | |
CN110780999A (zh) | 一种多核cpu的调度系统和方法 | |
CN111209079A (zh) | 一种基于鲲鹏处理器的调度方法、装置及介质 | |
JP5678347B2 (ja) | Itシステムの構成方法、そのコンピュータプログラムおよびitシステム | |
CN114281529B (zh) | 分布式虚拟化的客户操作系统调度优化方法、系统及终端 | |
Dao et al. | HPC-Reuse: efficient process creation for running MPI and Hadoop MapReduce on supercomputers | |
US9619277B2 (en) | Computer with plurality of processors sharing process queue, and process dispatch processing method | |
EP3414659B1 (en) | Thread diversion awaiting log call return | |
Ci et al. | Adaptive and transparent task scheduling of GPU‐powered clusters | |
Mohan | Operating Systems | |
CN115951987A (zh) | 一种存储系统中多线程的任务执行方法、装置以及介质 |
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 |