CN107077373B - 在计算机处理器核心上执行多个线程的方法和系统 - Google Patents

在计算机处理器核心上执行多个线程的方法和系统 Download PDF

Info

Publication number
CN107077373B
CN107077373B CN201580056502.9A CN201580056502A CN107077373B CN 107077373 B CN107077373 B CN 107077373B CN 201580056502 A CN201580056502 A CN 201580056502A CN 107077373 B CN107077373 B CN 107077373B
Authority
CN
China
Prior art keywords
thread
threads
determining
grace period
begin
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.)
Active
Application number
CN201580056502.9A
Other languages
English (en)
Other versions
CN107077373A (zh
Inventor
L·海勒
F·Y·布萨巴
J·D·布拉德伯里
M·法雷尔
D·格雷纳
J·P·库巴拉
D·L·奥西塞克
T·什莱格尔
D·W·施密特
C·小盖尼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN107077373A publication Critical patent/CN107077373A/zh
Application granted granted Critical
Publication of CN107077373B publication Critical patent/CN107077373B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/522Barrier synchronisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

一种在计算机处理器核心上执行包括第一线程和一组剩余线程的多个线程的系统及方法。所述系统和方法包括:确定存在开始解释执行退出条件;确定所述计算机处理器核心在宽限期内;以及所述第一线程进入开始解释执行退出同步循环而不用信号通知所述一组剩余线程中的任一者。转而,所述第一线程保持处于所述开始解释执行退出同步循环,直至所述宽限期到期或者所述剩余线程中的每一者进入对应的开始解释执行退出同步循环。

Description

在计算机处理器核心上执行多个线程的方法和系统
背景技术
本发明一般地涉及多线程处理器的协调式开始解释执行退出,更具体地说,涉及在多线程环境中结合协调式开始解释执行退出来提供等待状态及警告跟踪以降低多线程环境中的资源成本。
一般而言,多线程增加了能够在单个处理器核心内并行操作的处理器线程数。多线程通过使一个或多个处理器线程使用单个处理器核心的硬件的多个部分(这些部分当前未被在该单个处理器核心上运行的一个或多个其他处理器线程使用)来提供这种增加的容量。例如,在由第一处理器线程中的高速缓存未命中或其他延迟导致的延时期间,一个或多个其他处理器线程能够利用在高速缓存未命中期间分派给第一处理器线程的核心资源,从而提高这些核心资源的利用率。
虽然多线程提供了硬件节省,但与使用额外的单独处理器核心提供增加的容量相比,添加另一线程在软件级别消耗更多的协调成本。在许多情况下,在实现某一缩放比之后,在线程(无论是在单个还是共享处理器核上运行)之间协调核心资源的开销相当大,并且会降低或者甚至超过独立处理器线程的益处。
发明内容
根据本发明的一个实施例,提供一种在计算机处理器核心上执行多个线程的方法,所述多个线程包括第一线程和一组剩余线程,所述方法包括:确定存在开始解释执行退出条件;确定所述计算机处理器核心在宽限期内;所述第一线程进入开始解释执行退出同步循环而不用信号通知所述一组剩余线程中的任一者;以及所述第一线程保持处于所述开始解释执行退出同步循环,直至所述宽限期到期或者所述剩余线程中的每一者进入对应的开始解释执行退出同步循环。
经由本发明的技术实现额外特征及优点。本发明的其他实施例及方面在本文中经详细描述并且被视为所要求保护的发明的一部分。为更好地理解具有这些优点及特征的本发明,参考描述及附图。
附图说明
在本说明书的结尾部分处的权利要求书中特别指出并且清楚地要求保护被视为本发明的主题。本发明的前述内容及其他特征以及优势自结合附图进行的以下详细描述显而易见,其中:
图1示出多线程系统的计算设备示意图;
图2示出多线程系统的处理器示意图;
图3A-3B示出多线程系统的关于等待状态的处理流程;
图4A-4B示出多线程系统的关于核心分派环境中的等待状态的另一处理流程;
图5示出多线程系统的关于核心分派环境中的警告跟踪的处理流程;以及
图6A-6C示出多线程系统的关于核心分派环境中的警告跟踪的另一处理流程。
具体实施方式
如上所指出,处理器线程之间的多线程中的协调成本相当大,并且会降低或者甚至超过独立处理器线程的益处。因此,需要这样的多线程环境:其结合协调式开始解释执行退出来提供等待状态及警告跟踪以降低多线程环境中的资源成本。
一般而言,本文揭示的本发明的实施例可包括一种多线程系统、方法和/或计算机程序产品,其利用软件在粒度线程基础上有效地管理核心上的基础架构以降低核心的资源成本。这通过以下操作实现:允许在单个线程上运行的系统管理程序使用核心分派在单个核心上分派多个客机线程(guest thread),以及结合协调式开始解释执行退出来利用等待状态及警告跟踪。
现在将描述由所述多线程系统、方法和/或计算机程序(“多线程系统”)通过协调式开始解释执行(“SIE”)退出的核心分派。亦即,经由核心分派,多线程系统允许单线程运行的系统管理程序使用单个指令在其核心上分派多线程客机(注意,每个多线程客机表示一个客机逻辑处理器或客机线程)。单个指令的操作数可指定包含所有客机线程的状态的单个状态描述,或者一组状态描述,例如每个状态描述表示单个客机线程的状态。另外,为了支持核心分派的使用并且考虑到单线程运行的系统管理程序,由所述多线程系统提供协调式SIE退出以使所有客机线程能够同时退出。
例如,当客机核心的每个线程确定其必须退出解释执行模式时,它进入SIE退出状态,并且在初始SIE退出同步循环中等待,直至同一核心的所有其他有效线程也准备好退出。在某些情况下,在进入该同步循环之前每个线程用信号通知其他线程退出。
现在将描述多线程系统的非多线程和/或多线程环境中的等待状态。关于非多线程环境,当客机线程已完成来自队列的任务并且队列上没有额外任务时,多线程系统将等待状态代码或位加载至程序状态字(“PSW”)中。PSW中的等待状态位导致客机线程暂停指令执行,直至提供中断。当客机线程在专用非多线程环境中运行(例如,物理处理器专门由单个客机线程使用),并且单个客机线程进入已启用的(亦即,针对异步中断启用客机)等待状态时,单个客机线程将保持在物理处理器上分派,直至识别到中断。如果客机线程在共享环境中运行(亦即,物理处理器被在不同客机逻辑处理器之间共享),则当客机线程进入等待状态时,共享环境将通过等待状态拦截退出解释执行,因此系统管理程序能够(如果适用)分派具有要执行的工作的不同客机线程。
关于多线程环境,如果核心上的客机线程仍然正在执行客机指令,则对于核心而言更有效的是继续运行,直至核心上的所有有效线程已进入等待状态或者由于另一原因需要协调式SIE退出。另外,处于已启用的等待状态的线程进入固件等待状态循环;以及如果在所有其他线程已进入等待状态之前向该线程呈现中断,则该线程可处理中断并且退出固件等待状态循环(例如,中断包括另一线程对协调式SIE退出的任何请求)。
现参考图1,展示包括计算设备112的多线程系统100的一个实例。多线程系统100仅为合适的计算节点的一个实例且并不意欲表示对本文所述的本发明的实施例的使用或可操作性的范围的任何限制(实际上可使用额外或替代的组件和/或实施方式)。亦即,多线程系统100及其中的组件可采用多个不同形式且包括多个和/或替代组件及设施。另外,如本文所描述,多线程系统100可包括和/或采用任何数目和组合的计算设备及利用各种通信技术的网络。无论如何,多线程系统100能够被实施和/或执行本文所阐述的任何可操作性。
在多线程系统100中,存在计算设备112,所述计算设备与大量其他通用或专用计算系统环境或配置一起操作。系统和/或计算设备(诸如多线程系统100和/或计算设备112)可采用多个计算机操作系统中的任一者,包括(但不限于)由纽约阿蒙克的国际商业机器公司发行的AIX UNIX及z/OS操作系统的版本和/或种类、微软Windows操作系统、Unix操作系统(例如,由加利福尼亚红木海岸的甲骨文公司发行的Solaris操作系统)、Linux操作系统、由加利福尼亚库珀蒂诺的Apple公司发行的Mac OS X及iOS操作系统、由加拿大滑铁卢的动态研究公司发行的黑莓OS及由开放手机联盟开发的Android操作系统。可适用于与计算设备112一起使用的计算系统、环境和/或配置的实例包括(但不限于)个人计算机系统、服务器计算机系统、瘦客户端、复杂型客户端、手持设备或膝上计算机设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子设备、网络PC、小型计算机系统、计算机工作站、服务器、桌面计算机、笔记本电脑、网络设备、大型计算机系统,及包括以上系统或设备中任一者的分布式云端计算环境及其类似物。
可在由计算机系统执行的诸如程序模块的计算机系统可执行指令的总体上下文中描述计算设备112。通常,程序模块可包括执行特定任务或实施特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算设备112可在分布式云端计算环境中实现,在所述环境中,任务由经由通信网路链接的远程处理设备执行。在分布式云端计算环境中,程序模块可位于包括存储设备的本地及远程计算机系统存储介质两者中。
如图1中所示,多线程系统100中的计算设备112以基于多线程系统100、其方法和/或其组件的操作及功能改进的通用计算设备的形式展示。计算设备112的组件可包括(但不限于)一个或多个处理器或处理单元(例如,包括支持多个线程115的至少一个核心114a的处理器114;例如多线程系统100包括包含两个或两个以上线程115的处理器114的核心114a)、存储器116、以及耦接包括处理器114及存储器116的各种系统组件的总线118。计算设备112通常亦包括多种计算机系统可读介质。此类介质可为可由计算设备112存取的任何可用介质,并且其包括易失性及非易失性介质、可移除式及不可移除式介质两者。
处理器114可接收来自存储器116的计算机可读程序指令且执行这些指令,由此执行由多线程系统100定义的一个或多个处理。处理器114可包括任何处理硬件、软件或由计算设备114利用的硬件及软件的组合,计算设备114通过执行算术、逻辑和/或输入/输出操作来执行计算机可读程序指令。处理器114及核心114a的实例包括(但不限于):算术逻辑单元,其执行算术及逻辑运算;控制单元,其提取、解码及执行来自存储器的指令;以及阵列单元,其利用多个并行计算元件。
图2示出包括耦接至控制器215的处理器114的计算环境的一个实施例。在一个实例中,基于z/Architecture的计算环境包括System z服务器,所述服务器由纽约阿蒙克的国际商业机器公司提供。举例而言,处理器114可包括一个或多个分区(例如,逻辑分区LP1至逻辑分区LPn)、一个或多个物理核心(例如,核心1至核心m)及0级系统管理程序214(例如,逻辑分区管理器)。控制器215可包括负责在发布请求的不同处理器之间仲裁的集中式逻辑。举例而言,当控制器215接收存储器存取请求时,其判定是否允许存取该存储器位置,且如果允许,则将该存储器位置的内容提供至处理器114,同时维持该复合体内的处理器之间的存储器一致性。另一控制器215可管理至/自图1中所示的I/O接口130和/或网络适配器132的请求。
物理核心包括分配至逻辑分区的物理处理器资源。逻辑分区可包括一个或多个逻辑处理器,其中的每一者表示分配至该分区的所有或一部分物理处理器资源。物理核心可专用于特定分区的逻辑核心,使得基础核心的物理处理器资源被保留用于该分区;或与另一分区的逻辑核心共享,使得基础核心资源的物理处理器资源潜在地可用于另一分区。每个逻辑分区能够充当单独系统。亦即,每个逻辑分区可独立地被重设,初始被加载操作系统(例如,操作系统OS1至操作系统OSn)(如果需要),并且使用不同程序操作。在逻辑分区中运行的操作系统或应用程序似乎可存取整个完整的系统,但实际上,仅该整个系统的一部分可供使用。硬件及授权内部代码(亦被称作固件、微码或毫码)的组合阻止一个逻辑分区中的程序观察、存取或干扰不同逻辑分区中的程序。这允许若干不同逻辑分区以时间分片方式在单个或多个物理核心上操作。在一个实施例中,每个物理核心包括一个或多个中央处理器(在本文中亦被称作“物理线程”)。在图2中所示的实例中,每个逻辑分区具有常驻操作系统,所述操作系统可针对一个或多个逻辑分区而不同。每个逻辑分区是操作系统能够在其中运行的虚拟机或客机配置的一个实例。
在图2中所示的实施例中,逻辑分区LP1至逻辑分区LPn由0级系统管理程序214管理,所述系统管理程序由在物理核心1至物理核心m上运行的固件实施。逻辑分区LP1至逻辑分区LPn及系统管理程序214各自包括驻留于与物理核心1至物理核心m相关联的中央存储装置(存储器)的相应部分中的一个或多个程序。系统管理程序214的一个实例为由纽约阿蒙克的国际商业机器公司提供的Processor Resource/Systems Manager(PR/SMTM)。
返回到图1,存储器116可包括有形设备,所述有形设备保留及存储计算机可读程序指令(如由多线程系统100提供)以由计算设备112的处理器114使用。存储器116可包括呈易失性存储器形式的计算机系统可读介质,诸如随机存取存储器(RAM)120、高速缓存122和/或存储系统124。总线118表示若干类型的总线结构中的任一种中的一者或多者,包括存储器总线或存储器控制器、外围总线、加速图形端口及使用各种总线架构中的任一者的处理器或本地总线。通过实例且不加以限制,此类架构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)本地总线及外围组件互连(PCI)总线。
仅藉助于实例,可提供存储系统124以用于自不可移除式非易失性磁性介质(图中未展示且通常称为“硬盘驱动器”)读取且写入至所述磁性介质。虽然未展示,但是可提供用于自可移除式非易失性磁盘(例如,“软盘”)读取且写入至所述磁盘的磁盘驱动器,及用于自可移除式非易失性光盘(诸如CD-ROM、DVD-ROM或其他光学介质)读取或写入至所述光盘的光盘驱动器。在此类情况下,每个驱动器可由一个或多个数据介质接口连接至总线118。如下文将进一步描绘及描述,存储器116可包括具有被配置为执行本发明的实施例的操作的程序模块集合(例如,至少一个集合)的至少一个程序产品。存储系统124(和/或存储器116)可包括数据库、数据存储库或其他数据存储器且可包括用于存储、存取及取回各种类型的数据的各种类型的机构,包括分层数据库、文件系统中的文件集合、专有格式的应用数据库、关系数据库管理系统(RDBMS)等。存储系统124大体上可包括在计算设备112内(如所示出,所述计算设备采用诸如上述操作系统中的一者的计算机操作系统)且以多种方式中的任何一种或多种方式经由网络进行存取。
通过实例且不加以限制,具有程序模块128的集合(至少一个集合)的程序/实用程序126以及操作系统、一个或多个应用程序、其他程序模块及程序数据可存储于存储器116中。操作系统、一个或多个应用程序、其他程序模块及程序数据中的每一者或其某一组合可包括网络连接环境的实施。
计算设备112亦可经由输入/输出(I/O)接口130和/或经由网络适配器132通信。I/O接口130和/或网络适配器132可包括由计算设备112用于在计算设备112内部和/或外部的组件之间通信的物理和/或虚拟机构。举例而言,I/O接口130可与以下各者通信:诸如键盘、指点设备、显示器142等的一个或多个外部设备140;使用户能够与计算设备112交互的一个或多个设备;和/或使计算设备112能够与一个或多个其他计算设备通信的任何设备(例如,网络卡、调制解调器等)。此外,计算设备112可经由网络适配器132与诸如局域网(LAN)、一般广域网(WAN)和/或公用网络(例如,因特网)的一个或多个网络通信。因此,I/O接口130和/或网络适配器132可被配置为在计算设备112内或为其接收或发送信号或数据。如所描绘,I/O接口130及网络适配器132经由总线118与计算设备112的其他组件通信。应理解,虽然未展示,但是其他硬件和/或软件组件可与计算设备112结合使用。实例包括(但不限于):微码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器、以及数据归档存储系统等。
虽然图1针对多线程系统100(及其他项目)示出单个项目,但这些表示并非意在限制及因此,任意项目可表示多个项目。举例而言,处理器114可包括多个处理核心,所述处理核心中的每一者执行多个线程且能够处理本文所述的协调式SIE退出。
将参考图3A-3B描述所述多线程系统,这些图示出关于等待状态及协调式SIE退出的处理流程300的一个实例。
如图所示,处理流程300由多个线程(例如,线程X、线程Y及线程Z)执行。在块310、312及314处,线程X(例如,主线程)执行客机指令,加载已启用的等待状态PSW,并且进入固件等待状态循环。线程X在此时不退出SIE,因为线程Y及线程Z(例如,辅助线程)两者仍然正在执行客机指令流(例如,块330、340)。线程X保持处于固件等待状态循环,直至在块316处客机异步中断变为待决。在块318处,客机异步中断导致线程X退出等待状态循环并且进入固件异步中断处理程序。固件异步中断处理程序将中断旧PSW及中断信息保存至客机存储器的第一块中的固定存储位置,将客机中断新PSW加载至硬件中。接下来,在块320处,线程X开始执行客机软件中断处理程序。当线程X完成执行软件中断处理程序时,客机操作系统在块322处重新加载已启用的等待PSW,这再次调用/进入固件等待状态循环。
同时,线程Y独立地在块330处执行客机指令,在块332处加载已启用的等待状态PSW,并且在块334处进入固件等待状态循环。同样,线程Z独立地在块340处执行客机指令,在块342处加载已启用的等待状态PSW,并且在块344处进入固件等待状态循环。亦即,每个线程Y、Z在某一相应时间Y1、Z1之后加载对应的已启用的等待状态PSW(块332、342),使得这些事件独立地发生。另外,每个线程Y、Z在某一相应时间Y2、Z2之后进入对应的固件等待状态PSW(块334、344),使得这些事件独立地发生。在块350处,线程X确定核心的所有有效线程(例如,线程X、Y、Z)现在处于等待状态,并且调用SIE退出以进行等待状态拦截。接下来,在线352处,线程X到达初始SIE退出同步点,这导致线程X用信号通知线程Y、Z使用内部中断机制退出SIE,如块354中所示。检测所有线程处于等待状态并且用信号通知其他线程退出SIE的处理可由任一线程执行,并且通常由进入等待状态的最后一个线程完成。
从块354接收内部中断信号之后,线程Y及Z独立地退出。亦即,线程Y及Z针对SIE退出请求独立地退出它们的固件等待状态循环、处理内部中断、以及调用SIE退出(如块356及358中所指示)。最后线程Y及Z在线362、364处到达初始SIE退出同步循环。一旦所有有效线程(例如,线程X、Y、Z)均已到达初始同步点(线366),每个线程独立地完成其状态描述的更新并且指示等待状态拦截(例如,块370、372、374)。一旦每个线程(例如,线程Y、Z)已完成更新其状态描述,该线程就设定硬件控制位。具体地说,在块382处,线程Y设定硬件控制位以指示已到达最终SIE退出同步点并且停止指令执行。同样,在块384处,线程Z设定硬件控制位以指示已到达最终SIE退出同步点并且停止指令执行。接下来,在块390处,线程X(例如,主线程)等待所有线程Y、Z到达最终同步点,这意味着所有线程已完成所有状态描述更新,并且完成协调式SIE退出。最后,在块392处,线程X然后向主机呈现多线程SIE拦截,主机处理该多线程SIE拦截。
作为多线程系统的关于等待状态及协调式SIE退出的另一实例,将参考图4A-B描述处理流程400。类似于处理流程300,处理流程400由多个线程(例如,线程X、线程Y及线程Z)执行。为了开始处理流程400,在块410、412及414处,线程X执行客机指令、加载已启用的等待状态PSW、以及进入固件等待状态循环。同样,在块420及430处,线程Y及线程Z也执行客机指令,这导致线程X保持处于等待状态循环而不是调用SIE退出。
另外,在块432处,当线程X仍然在固件等待状态循环中时,线程Z执行某一操作,该操作导致针对类型N拦截调用SIE退出。在线434处,线程Z到达初始SIE退出同步点,这转而用信号通知其他线程使用对应的内部中断机制退出SIE(例如,块436)。作为响应,在块440处线程X针对SIE退出请求退出固件等待状态循环、针对SIE退出进入固件中断处理程序、以及调用SIE退出。因此,在线442处线程X到达初始SIE退出同步点。接下来,在块444处,客机异步中断在线程X上变为待决,但它未被呈现,因为该线程已经在SIE退出中。当线程Y到达可中断点时,它在块450处针对SIE退出请求采取内部中断并且调用SIE退出。线程Y然后在线452处到达初始SIE退出同步循环。
一旦所有有效线程(例如,线程X、Y、Z)均已到达初始同步点(例如,线460),每个线程独立地完成其状态描述的更新并且指示可应用拦截(例如,块470、472、474)。例如,线程X在块470处采取等待状态拦截,因为PSW位14等于1;线程Y在块472处采取无操作拦截;以及线程Z在块474处采取原始类型N拦截。如上面针对处理流程300所描述,在该实例中,一旦每个线程Y及Z已完成其所有状态描述更新,它就已到达最终SIE退出同步点并且停止它自己的指令执行(472、474)。例如,在块482、484处,线程Y及Z设定硬件控制位以指示已到达最终SIE退出同步点并且停止指令执行。接下来,在块490处,线程X等待所有线程到达最终同步点,这意味着所有线程已完成所有状态描述更新,并且完成协调式SIE退出。最后,在块492处,线程X然后向主机呈现多线程SIE拦截,主机处理该多线程SIE拦截。
例如,可经由警告跟踪中断用信号通知非多线程客机操作系统其时间片即将到期。系统管理程序使用主机CPU计时器来确定一个客机处理器核心的时间片何时到期,使得另一客机核心可开始其时间片。另外,系统管理程序可通过在目标状态描述中设定位,从另一处理器远程地指示应该向客机逻辑核心呈现警告跟踪中断。当机器在宽限期未活动的期间检测到主机计时器中断为待决,或者机器在状态描述中检测到警告跟踪中断为待决时,它进入宽限期。宽限期通过向时间片添加最小额外时间来实施,并且当被启用时,经由警告跟踪中断用信号通知客机操作系统其时间片即将到期。该额外时间允许能够识别警告跟踪中断的客机在离开处理器之前采取适当操作(通常称为“清理”);此类操作例如可包括释放系统级锁。一旦客机已完成其清理,预期通过发出诊断确认来用信号通知清理完成(例如,客机执行具有指示警告跟踪确认的代码“049C”的DIAGNOSE指令)。如果在宽限期到期之前发出DIAG“049C”警告跟踪中断确认,则系统通过指令拦截而拦截回系统管理程序,并且系统管理程序将其作为时间片的结束来处理。相反,如果在客机操作系统已发出DIAG“049C”警告跟踪中断确认之前宽限期到期,则呈现主机计时器中断,并且系统管理程序处理时间片结束。
现在将描述在所述多线程系统中执行的警告跟踪中断(“WTI”)处理。当多线程在客户机中活动时,系统管理程序在核心的基础上管理客机时间片。存在单个主机计时器,并且其关联的中断指示客机时间片何时已针对核心中的所有线程结束。另外,当系统管理程序在主状态描述中使WTI待决时,多线程系统的责任是在辅助状态描述中使WTI中断待决。当发生主机计时器中断时,或者当在主状态描述中检测到待决WTI时,核心进入宽限期。所产生的WTI中断保持待决,并且当被启用时,分别在每个有效客机线程上呈现。如上文所描述,在适当时,加载已启用的等待的客机进入固件等待状态循环。然而,如果宽限期是活动的或者当加载已启用的等待状态时WTI待决,则客机将改为进入SIE退出同步循环。两个循环之间的区别在于等待状态循环将处理待决中断,这可能延长完成SIE退出所需的时间,并且将与响应于WTI而期望的结果直接相反。
将参考图5描述所述多线程系统,图5示出关于WTI及核心分派的处理流程500的一个实例。如图所示,处理流程500从警告跟踪的角度描述主机处理器计时器(“CPT”)中断的处理。如果CPT变为待决并且启用主机以采取该中断,则调用固件以处理该中断。亦即,处理流程500在决策块502处检查处理器核心是否正在主机模式下运行。如果核心正在主机模式下运行,则处理流程500进行至块504,在该块处呈现主机CPT中断(例如,如通过“是”箭头所指示)。如果核心未在主机模式下运行(例如,如通过“否”箭头所指示),则它正在客机模式下运行并且处理流程500进行至决策块506。
在决策块506处,处理流程500检查宽限期是否活动。当宽限期尚未在进行中时,处理流程500进行(例如,如通过“否”箭头所指示)以在决策块508处判定是否针对该客机支持警告跟踪。当支持警告跟踪时,处理流程500进行至块510(例如,如通过“是”箭头所指示)以在该核心的主状态描述中设定T位,该T位驻留于状态描述中并且指示警告跟踪请求待决。否则,如果宽限期未在进行中和/或不支持警告跟踪,则处理流程500进行至块512。在块512处,调用SIE退出,因此能够向主机呈现主机CPT中断,并且在客机多线程模式下,用信号通知其他线程退出SIE。此行为与非多线程环境中的WTI行为相同,只是在多线程环境中,当要呈现主机CPT中断时,用信号通知其他线程退出SIE。
现在将描述结合所述多线程系统的协调式SIE退出的WTI。为了实施当采取客机中断时用信号通知其他线程退出SIE,不应该当WTI待决或者核心在宽限期内时执行此类信号通知。相反,在发生SIE退出之前,多线程系统将为其他线程提供完成其清理并发出诊断确认(例如,客机执行具有指示警告跟踪确认的代码“049C”的DIAGNOSE指令)的机会。如果在所有有效线程已同步之前宽限期到期,则将用信号通知剩余线程退出。
在多线程环境中,任何现有处理器将保持处于SIE退出同步循环,直至所有其他有效处理器1)在宽限期内进入等待状态,2)当核心进入宽限期时处于等待状态,3)由于独立原因退出SIE,包括由于在发出DIAG 049C以指示清理完成之后的指令拦截,或者4)响应于来自另一线程的信号通知而退出SIE。典型及期望的情况是所有线程将在宽限期到期之前独立地完成清理并且发出DIAG 049C WTI确认,或者当在该核心上进入宽限期时将处于等待状态。警告跟踪的多线程特定行为是在宽限期内SIE退出信号通知的延迟,以试图允许每个线程上的操作系统在被从处理器移除之前进行清理。
将参考图6A-6C描述所述多线程系统,图6A-6C示出关于核心分派环境中的警告跟踪的处理流程600的一个实例。一般而言,处理流程600示出一旦警告跟踪请求未决在任何给定线程上的行为。因此,当针对任何线程(例如,主线程或辅助线程)开启T位时,处理流程600在块602处开始。当处理主机计时器中断时可以由多线程系统(如图5中所示)或者由系统管理程序设定主状态描述中的T位。一旦多线程系统检测到T位,多线程系统在决策块604处判定核心是否在宽限期内。如果核心未在宽限期内(例如,如通过“否”箭头所指示),则多线程系统在决策块606处判定核心是否正在客机多线程环境中运行。当核心正在客机多线程环境中运行时,处理流程600进行至块608,在块608处多线程系统针对状态描述组中的所有有效辅助线程设定辅助状态描述中的T位。注意,仅当正在主线程上执行该处理流程时,才将T位传播至辅助线程的状态描述。另外,无论核心是否正在客机多线程环境中运行,处理600都进行至块610,在块610处核心进入宽限期(例如,假设开启T位,如在块602中所见,以及未进入宽限期,如在块604中所见)。进入宽限期包括少量延长客机时间片及设定宽限期是活动的指示。即使不能向任何或所有线程呈现WTI,宽限期也会开始。接下来,在决策块612处,多线程系统判定是否针对WTI启用了客机线程。当多线程系统判定针对WTI启用了客机线程时,则在块614处呈现中断,并且客机操作系统可在616处采取适当操作,例如开始清理(处理流程600然后经由流程连接符“a”进行至图6B的决策块618)。当多线程系统判定未针对WTI启用客机时,则不能呈现WTI并且客机执行继续,直至它变为启用或者直至发生另一SIE退出条件(处理流程600然后经由流程连接符“b”进行至图6C的决策块642)。
如图6B中所示,一旦已向客机呈现WTI中断,多线程系统就在完成清理的同时监视特定条件。处理流程600进行至决策块618,在块618处多线程系统判定是否在清理完成之前宽限期已结束。如果宽限期已结束(例如,如通过“是”箭头所指示),则处理流程600进行至块620,在块620处调用SIE退出并且用信号通知其他线程退出。注意,如果由于任何其他原因在宽限期内调用SIE退出,则不用信号通知其他线程以便为它们提供完成其清理的时间。如果宽限期未结束(例如,如通过“否”箭头所指示),则处理流程600进行至决策块622,在块622处多线程系统判定是否在清理完成之前加载了等待状态PSW。当加载了等待状态PSW时(例如,如通过“是”箭头所指示),处理流程600进行至块624,在块624处在该线程上呈现等待状态拦截。如果未加载等待状态PSW(例如,如通过“否”箭头所指示),则处理流程600进行至决策块626,在块626处多线程系统判定是否在清理完成之前发生客机拦截。如果发生客机拦截(例如,如通过“是”箭头所指示),则处理流程600进行至块628,在块628处在该线程上采取该拦截。如果未发生客机拦截(例如,如通过“否”箭头所指示),则处理流程600进行至决策块630,在块630处多线程系统判定是否在清理完成之前发生主机中断。如果发生主机中断(例如,如通过“是”箭头所指示),则处理流程600进行至块632,在块632处调用SIE退出,因此能够呈现中断。如果未发生主机中断(例如,如通过“否”箭头所指示),则处理流程600进行至决策块634,在块634处多线程系统判定是否在清理完成之前接收到来自另一线程的SIE退出请求。如果从另一线程接收到SIE退出请求(例如,如通过“是”箭头所指示),则处理流程600进行至块636,在块636处在该线程上发生无操作拦截。如果未从另一线程接收SIE退出请求(例如,如通过“否”箭头所指示),则处理流程600进行至块638,在块638处如果客机操作系统能够完成清理并且在发生任何其他条件之前,则发出DIAG“049C”WTI确认。接下来,在块640处,发生DIAG的指令拦截。一旦所有线程已到达SIE退出最终同步循环,则在主线程上向主机呈现客机拦截(多个)和/或主机中断。
如图6C中所示,如果未启用WTI中断,则客机线程继续监视WTI中断的启用,使得将发生清理,并且监视包括宽限期结束的其他条件。处理流程600进行至决策块642,在块642处多线程系统判定是否在WTI变为启用并且向软件呈现中断之前宽限期已结束。如果宽限期已结束(例如,如通过“是”箭头所指示),则处理流程600进行至块620,在块620处调用SIE退出并且用信号通知其他线程退出。再次注意,如果由于任何其他原因在宽限期内调用SIE退出,则不用信号通知其他线程以便为它们提供完成其清理的时间。如果宽限期未结束(例如,如通过“否”箭头所指示),则处理流程600进行至决策块644,在块644处多线程系统判定是否在呈现WTI之前加载了等待状态PSW。如果加载了等待状态PSW(例如,如通过“是”箭头所指示),则处理流程600进行至块624,在块624处在该线程上呈现等待状态拦截。如果未加载等待状态PSW(例如,如通过“否”箭头所指示),则处理流程600进行至决策块646,在块646处多线程系统判定该线程是否需要客机拦截。如果发生客机拦截(例如,如通过“是”箭头所指示),则处理流程600进行至块628,在块628处在该线程上采取拦截。如果未发生客机拦截(例如,如通过“否”箭头所指示),则处理流程600进行至决策块648,在块648处多线程系统判定是否在呈现WTI之前发生了主机中断。如果发生了主机中断(例如,如通过“是”箭头所指示),则处理流程600进行至块632,在块632处调用SIE退出,因此能够呈现中断。如果未发生主机中断(例如,如通过“否”箭头所指示),则处理流程600进行至决策块650,在块650处多线程系统判定是否接收到来自另一线程的SIE退出请求。如果从另一线程接收到SIE退出请求(例如,如通过“是”箭头所指示),则处理流程600进行至块636,在块636处发生无操作拦截。如果未从另一线程接收到SIE退出请求(例如,如通过“否”箭头所指示),则处理流程600进行至图6A的决策块612(经由流程连接符“c”),在块612处多线程系统判定是否针对WTI启用了客机。
还可扩展多线程环境中的WTI,以包含在执行SIE退出同步信号通知之前另外用信号通知操作系统。在对导致SIE退出的中断或拦截的预期系统管理程序响应将是分派另一不同的客机核心的情况下,使用WTI向仍在执行的线程警告它们即将被从处理器移除通常是有益的。
一般而言,计算设备可包括处理器(例如,图1的处理器114)及计算机可读存储介质(例如,图1的存储器116),其中处理器接收计算机可读程序指令(例如,来自计算机可读存储介质)且执行这些指令,藉此执行一个或多个处理,包括本文所述的处理中的一者或多者。
可自使用以一种或多种编程语言的任何组合编写的编译器指令、指令集架构(ISA)指令、机器指令、机器相关指令、微码、固件指令、状态设定数据或源代码或目标程序代码产生的计算机程序编译或解译计算机可读程序指令,所述一种或多种编程语言包括诸如Smalltalk、C++或其类似者的面向对象式编程语言,及常规过程式编程语言,诸如“C”编程语言或类似编程语言。计算机可读程序指令可完全在计算设备上执行,部分在计算设备上执行,作为独立软件包执行,部分在本地计算设备上执行且部分在远程计算机设备上执行,或完全在远程计算机设备上执行。在后一情形中,远程计算机可经由任一类型的网络(包括局域网(LAN)或广域网(WAN))连接至本地计算机,或可(例如,经由使用因特网服务提供商的因特网)连接至外部计算机。在一些实施例中,电子电路(包括(例如)可编程逻辑电路、场可编程门阵列(FPGA)或可编程逻辑阵列(PLA))可通过利用计算机可读程序指令的状态信息将电子电路个性化来执行计算机可读程序指令,以便执行本发明的方面。本文所述的计算机可读程序指令亦可经由网络自计算机可读存储介质下载至相应计算/处理设备或下载至外部计算机或外部存储设备(例如,支持通信的计算设备及连接的任意组合)。举例而言,网络可为因特网、局域网、广域网和/或无线网络,包括铜传输线缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器,且利用多种通信技术,诸如无线电技术、蜂窝技术等。
计算机可读存储介质可为保持及存储由指令执行设备(例如,如上文所描述的计算设备)使用的指令的有形设备。计算机可读存储介质可为(例如,但不限于)电子存储设备、磁性存储设备、光学存储设备、电磁存储设备、半导体存储设备或前述各者的任何合适组合。计算机可读存储介质的更特定实例的非穷尽性列表包括以下项:便携计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携光盘只读存储器(CD-ROM)、数字化通用光盘(DVD)、记忆棒、软盘、机械编码的设备(诸如其上记录有指令的打孔卡片或凹槽中的凸起结构)及前述各项的任何合适组合。如本文中所使用,不将计算机可读存储介质本身理解为暂时性信号,诸如无线电波或其他自由传播的电磁波、经由波导或其他传输介质传播的电磁波(例如,经由光缆传递的光脉冲),或经由导线传输的电信号。
因此,所述多线程系统和方法和/或其组件可作为一个或多个计算设备上的计算机可读程序指令实施,这些指令存储在与之相关联的计算机可读存储介质上。计算机程序产品可包括存储在计算机可读存储介质上的此类计算机可读程序指令以用于执行和/或使处理器执行多线程系统和方法的操作。所述多线程系统和方法和/或其组件(如所实施和/或所要求保护的)改进计算机和/或处理器自身的功能,因为所利用的等待状态及警告跟踪结合协调式开始解释执行退出降低了资源成本。另外,所述多线程系统、方法和/或计算机程序产品提供在多线程环境中提供等待状态及警告跟踪支持的更有效手段。例如,在共享环境中运行的第一线程的修改后的等待状态延迟开始解释执行退出,直至共享环境的所有线程处于修改后的等待状态。在宽限期内,警告跟踪延迟线程之间的信号通知以开始协调式开始解释执行退出,以便为每个线程提供在它们退出之前的“清理”时间。
换言之,所述改进包括提供这样的机制:使核心保持分派,直至该核心上的所有线程已在共享物理处理器环境中进入等待状态;识别到核心中的线程处于“清理”处理中并且延迟用信号通知其他线程进行“立即”SIE退出以便为它们提供在被强制退出之前完成清理的机会;以及利用对警告跟踪中断工具的使用以在多线程环境中更有效地退出SIE。
本文参考根据本发明的实施例的方法、装置(系统)及计算机程序产品的流程图和/或方块图描述本发明的多个方面。应理解,可通过计算机可读程序指令实现流程图和/或方块图的每个块,及流程图和/或方块图中的块的组合。
可将这些计算机可读程序指令提供至通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,以使得经由所述计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现一个或多个流程图和/或方块图块中所指定的操作/动作的构件。亦可将这些计算机可读程序指令存储于计算机可读存储介质中,这些指令可引导计算机、可编程数据处理装置和/或其他设备以特定方式操作,使得存储有指令的计算机可读存储介质包括制品,所述制品包括实现一个或多个流程图和/或方块图块中指定的操作/动作的多个方面的指令。
计算机可读程序指令亦可加载至计算机、其他可编程数据处理装置或其他设备上,以使一系列操作步骤在所述计算机、其他可编程装置或其他设备上执行以产生计算机实现的处理,使得在所述计算机、其他可编程装置或其他设备上执行的指令实现一个或多个流程图和/或方块图块中所指定的操作/动作。
附图中的流程图及方块图示出根据本发明的各种实施例的系统、方法及计算机程序产品的可能实施方式的架构、可操作性及操作。就此而言,流程图或方块图中的每个块可表示指令的模块、区段或部分,其包括用于实现指定逻辑运算的一个或多个可执行指令。在一些备选实施方式中,块中提及的操作可不按附图中所提及的次序发生。举例而言,视所涉及的可操作性而定,以连续方式展示的两个块实际上可基本上同时执行,或这些块有时可以以相反次序执行。亦应注意,可通过执行指定操作或动作或执行专用硬件及计算机指令的组合的基于硬件的专用系统实现方块图和/或流程图的每个块,及方块图和/或流程图中的块的组合。
已出于例示目的呈现本发明的各实施例的描述,但这些描述并不意欲为穷举的或限于所披露的实施例。在不背离所描述实施例的范围及精神的情况下,对于本领域技术人员而言,许多修改及变化将显而易见。本文中所使用术语经选择以最佳地解释实施例的原理、实际应用或相较于市场中发现的技术的技术改进,或使得本领域技术人员能够理解本文所披露的实施例。
本文中所使用的术语仅出于描述特定实施例的目的,且并不意欲限制本发明。如本文中所使用,除非上下文另外清楚地指示,否则单数形式“一”及“该”意欲同样包括复数形式。将进一步理解,当在本说明书中使用时,术语“包括”指定所陈述特征、整体、步骤、操作、元素和/或组件的存在,但不排除一个或多个其他特征、整体、步骤、操作、元素和/或其组合的存在或添加。
本文描绘的流程图仅为一实例。在不背离本发明的范围的情况下,可存在本文描述的图或步骤(或操作)的多个变体。举例来说,可以不同次序执行所述步骤或可添加、删除或修改步骤。所有这些变体被视为所要求保护的发明的一部分。
虽然已描述本发明的优选实施例,但将理解,本领域技术人员现在及将来可进行属于随后的权利要求书范围内的各种改进及增强。这些权利要求应被视为维护对最初描述的本发明的恰当保护。

Claims (11)

1.一种在计算机处理器核心上执行多个线程的方法,所述多个线程包括第一线程和一组剩余线程,所述方法包括:
确定存在开始解释执行退出条件;
确定所述计算机处理器核心在宽限期内;
所述第一线程进入开始解释执行退出同步循环而不用信号通知所述一组剩余线程中的任一者;
所述第一线程保持处于所述开始解释执行退出同步循环,直至所述宽限期到期或者所述剩余线程中的每一者进入对应的开始解释执行退出同步循环;
确定对于所述计算机处理器核心,所述宽限期已到期;以及
基于所述宽限期的到期,由所述第一线程用信号通知所述剩余线程中的每一者进行至所述对应的开始解释执行退出同步循环。
2.如权利要求1所述的方法,进一步包括:
确定对于警告跟踪中断,所述第一线程为待决的;
由所述第一线程将警告跟踪中断待决条件传播至剩余线程中的每一者;以及
由所述第一线程导致所述计算机处理器核心进入所述宽限期。
3.如权利要求1所述的方法,进一步包括:
确定对于所述第一线程,等待状态为待决的;
确定对于所述第一线程,存在警告跟踪中断待决条件;以及
基于确定存在所述警告跟踪中断待决条件,进入所述开始解释执行退出同步循环。
4.如权利要求3所述的方法,其中基于确定存在所述警告跟踪中断待决条件进入所述开始解释执行退出同步循环,而不呈现警告跟踪中断并且不用信号通知所述剩余线程中的每一者。
5.如权利要求1所述的方法,其中所述第一线程是所述多个线程中的主线程。
6.一种在处理器的计算机处理器核心上执行多个线程的系统,所述多个线程包括第一线程和一组剩余线程,所述系统包括所述处理器和存储器:
所述处理器被配置为:
确定存在开始解释执行退出条件;
确定所述计算机处理器核心在宽限期内;
所述第一线程进入开始解释执行退出同步循环而不用信号通知所述一组剩余线程中的任一者;
所述第一线程保持处于所述开始解释执行退出同步循环,直至所述宽限期到期或者所述剩余线程中的每一者进入对应的开始解释执行退出同步循环;
确定对于所述计算机处理器核心,所述宽限期已到期;以及
基于所述宽限期的到期,由所述第一线程用信号通知所述剩余线程中的每一者进行至所述对应的开始解释执行退出同步循环。
7.如权利要求6所述的系统,所述处理器进一步被配置为:
确定对于警告跟踪中断,所述第一线程为待决的;
由所述第一线程将警告跟踪中断待决条件传播至剩余线程中的每一者;以及
由所述第一线程导致所述计算机处理器核心进入所述宽限期。
8.如权利要求6所述的系统,所述处理器进一步被配置为:
确定对于所述第一线程,等待状态为待决的;
确定对于所述第一线程,存在警告跟踪中断待决条件;以及
基于确定存在所述警告跟踪中断待决条件,进入所述开始解释执行退出同步循环。
9.如权利要求8所述的系统,其中基于确定存在所述警告跟踪中断待决条件进入所述开始解释执行退出同步循环,而不呈现警告跟踪中断并且不用信号通知所述剩余线程中的每一者。
10.如权利要求6所述的系统,其中所述第一线程是所述多个线程中的主线程。
11.一种计算机可读存储介质,所述计算机可读存储介质具有包含在其上的用于在处理器的计算机处理器核心上执行多个线程的程序指令,所述多个线程包括第一线程和一组剩余线程,所述程序指令能够由所述处理器执行以导致所述处理器:
确定存在开始解释执行退出条件;
确定所述计算机处理器核心在宽限期内;
所述第一线程进入开始解释执行退出同步循环而不用信号通知所述一组剩余线程中的任一者;
所述第一线程保持处于所述开始解释执行退出同步循环,直至所述宽限期到期或者所述剩余线程中的每一者进入对应的开始解释执行退出同步循环;
确定对于所述计算机处理器核心,所述宽限期已到期;以及
基于所述宽限期的到期,由所述第一线程用信号通知所述剩余线程中的每一者进行至所述对应的开始解释执行退出同步循环。
CN201580056502.9A 2014-10-20 2015-09-14 在计算机处理器核心上执行多个线程的方法和系统 Active CN107077373B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/518,095 2014-10-20
US14/518,095 US9898289B2 (en) 2014-10-20 2014-10-20 Coordinated start interpretive execution exit for a multithreaded processor
PCT/EP2015/070984 WO2016062460A1 (en) 2014-10-20 2015-09-14 Improved efficiency for coordinated start interpretive execution exit for a multithreaded processor

Publications (2)

Publication Number Publication Date
CN107077373A CN107077373A (zh) 2017-08-18
CN107077373B true CN107077373B (zh) 2020-09-29

Family

ID=54106366

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580056502.9A Active CN107077373B (zh) 2014-10-20 2015-09-14 在计算机处理器核心上执行多个线程的方法和系统

Country Status (7)

Country Link
US (4) US9898289B2 (zh)
EP (1) EP3210115B1 (zh)
JP (1) JP6537600B2 (zh)
CN (1) CN107077373B (zh)
HU (1) HUE046174T2 (zh)
LT (1) LT3210115T (zh)
WO (1) WO2016062460A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE602007010669D1 (de) 2006-12-28 2010-12-30 Boston Scient Ltd Hren dafür
US20100217370A1 (en) 2009-02-20 2010-08-26 Boston Scientific Scimed, Inc. Bioerodible Endoprosthesis
US20110160839A1 (en) 2009-12-29 2011-06-30 Boston Scientific Scimed, Inc. Endoprosthesis
JP5834071B2 (ja) 2010-05-14 2015-12-16 ボストン サイエンティフィック サイムド,インコーポレイテッドBoston Scientific Scimed,Inc. ステント
US9898289B2 (en) 2014-10-20 2018-02-20 International Business Machines Corporation Coordinated start interpretive execution exit for a multithreaded processor
CN111723920B (zh) * 2019-03-22 2024-05-17 中科寒武纪科技股份有限公司 人工智能计算装置及相关产品
CN110716755B (zh) * 2019-10-14 2023-05-02 浙江诺诺网络科技有限公司 一种线程退出方法、装置、设备及可读存储介质
CN112182770A (zh) * 2020-10-10 2021-01-05 中国运载火箭技术研究院 在线迭代计算方法、装置及计算机存储介质、电子设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100382035C (zh) * 1999-12-09 2008-04-16 英特尔公司 进入和退出多线程处理器中多线程的方法和装置

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5060139A (en) * 1989-04-07 1991-10-22 Tektronix, Inc. Futurebus interrupt subsystem apparatus
US6643765B1 (en) * 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US6842796B2 (en) 2001-07-03 2005-01-11 International Business Machines Corporation Information extraction from documents with regular expression matching
US20050015768A1 (en) * 2002-12-31 2005-01-20 Moore Mark Justin System and method for providing hardware-assisted task scheduling
US7774585B2 (en) 2003-11-12 2010-08-10 Infineon Technologies Ag Interrupt and trap handling in an embedded multi-thread processor to avoid priority inversion and maintain real-time operation
JP2005284749A (ja) 2004-03-30 2005-10-13 Kyushu Univ 並列処理コンピュータ
US7765547B2 (en) 2004-11-24 2010-07-27 Maxim Integrated Products, Inc. Hardware multithreading systems with state registers having thread profiling data
US7853960B1 (en) 2005-02-25 2010-12-14 Vmware, Inc. Efficient virtualization of input/output completions for a virtual device
US7493436B2 (en) 2006-10-26 2009-02-17 International Business Machines Corporation Interrupt handling using simultaneous multi-threading
US8060881B2 (en) * 2007-05-15 2011-11-15 Microsoft Corporation Small barrier with local spinning
US8826299B2 (en) * 2007-08-13 2014-09-02 International Business Machines Corporation Spawned message state determination
US9201673B2 (en) 2008-07-30 2015-12-01 Microsoft Technology Licensing, Llc Efficient detection and response to spin waits in multi-processor virtual machines
US9213586B2 (en) 2009-03-18 2015-12-15 Sas Institute Inc. Computer-implemented systems for resource level locking without resource level locks
JP2011150422A (ja) 2010-01-19 2011-08-04 Renesas Electronics Corp データ処理装置
US8407701B2 (en) 2010-06-24 2013-03-26 International Business Machines Corporation Facilitating quiesce operations within a logically partitioned computer system
US8595469B2 (en) * 2010-06-24 2013-11-26 International Business Machines Corporation Diagnose instruction for serializing processing
US9104508B2 (en) 2012-01-18 2015-08-11 International Business Machines Corporation Providing by one program to another program access to a warning track facility
US9110878B2 (en) 2012-01-18 2015-08-18 International Business Machines Corporation Use of a warning track interruption facility by a program
US8850450B2 (en) * 2012-01-18 2014-09-30 International Business Machines Corporation Warning track interruption facility
US20140282564A1 (en) 2013-03-15 2014-09-18 Eli Almog Thread-suspending execution barrier
US9898289B2 (en) 2014-10-20 2018-02-20 International Business Machines Corporation Coordinated start interpretive execution exit for a multithreaded processor

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100382035C (zh) * 1999-12-09 2008-04-16 英特尔公司 进入和退出多线程处理器中多线程的方法和装置

Also Published As

Publication number Publication date
HUE046174T2 (hu) 2020-02-28
EP3210115A1 (en) 2017-08-30
LT3210115T (lt) 2019-09-25
US20180018174A1 (en) 2018-01-18
US9898289B2 (en) 2018-02-20
US20160110195A1 (en) 2016-04-21
EP3210115B1 (en) 2019-08-21
US20160110218A1 (en) 2016-04-21
US9898290B2 (en) 2018-02-20
JP6537600B2 (ja) 2019-07-03
JP2017534970A (ja) 2017-11-24
US10908903B2 (en) 2021-02-02
US20180018175A1 (en) 2018-01-18
US11150905B2 (en) 2021-10-19
CN107077373A (zh) 2017-08-18
WO2016062460A1 (en) 2016-04-28

Similar Documents

Publication Publication Date Title
CN107077373B (zh) 在计算机处理器核心上执行多个线程的方法和系统
US8935698B2 (en) Management of migrating threads within a computing environment to transform multiple threading mode processors to single thread mode processors
CA2961690C (en) Efficient interruption routing for a multithreaded processor
US9009716B2 (en) Creating a thread of execution in a computer processor
CN107111482B (zh) 控制线程在多线程处理器中的执行
US10176002B2 (en) Quiesce handling in multithreaded environments
CN107111483B (zh) 控制对多线程处理器的共享寄存器的存取的指令
US20140095851A1 (en) Delaying Interrupts for a Transactional-Execution Facility
US10534557B2 (en) Servicing multiple counters based on a single access check
US9703614B2 (en) Managing a free list of resources to decrease control complexity and reduce power consumption
US11243800B2 (en) Efficient virtual machine memory monitoring with hyper-threading
US20200142807A1 (en) Debugger with hardware transactional memory
US10152341B2 (en) Hyper-threading based host-guest communication
JP2007157125A (ja) サーバ内のブロック化された処理を安全に中断するための方法、システム、プログラム

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1237090

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant