CN110659115A - 具有硬件辅助任务调度的多线程处理器核 - Google Patents

具有硬件辅助任务调度的多线程处理器核 Download PDF

Info

Publication number
CN110659115A
CN110659115A CN201910456238.8A CN201910456238A CN110659115A CN 110659115 A CN110659115 A CN 110659115A CN 201910456238 A CN201910456238 A CN 201910456238A CN 110659115 A CN110659115 A CN 110659115A
Authority
CN
China
Prior art keywords
task
processor
hardware
hardware thread
thread
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.)
Pending
Application number
CN201910456238.8A
Other languages
English (en)
Inventor
W·P·格里芬
J·弗莱曼
J·霍华德
S·P·帕克
R·帕洛夫斯基
M·阿博特
S·克莱恩
S·简恩
A·莫尔
V·凯夫
F·佩特里尼
I·甘涅夫
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of CN110659115A publication Critical patent/CN110659115A/zh
Pending legal-status Critical Current

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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Advance Control (AREA)

Abstract

描述了用于利用硬件辅助任务调度的多线程处理器核的装置、方法和系统的实施例。在实施例中,处理器包括第一硬件线程、第二硬件线程和任务管理器。任务管理器用于向第一硬件线程发出任务。任务管理器包括硬件任务队列,其中用于存储多个任务描述符。任务描述符中的每一个用于表示单个任务、迭代任务的集合、和任务的链接列表中的一者。

Description

具有硬件辅助任务调度的多线程处理器核
关于联邦赞助的研究与开发的声明
本发明是在由国防部授予的合同号HR0011-17-3-004的政府支持下进行的。政府享有本发明的某些权利。
技术领域
本发明的领域总体上涉及计算机架构,并且更具体地,但不限于,涉及处理器核设计。
背景
计算机系统的性能可能取决于处理器架构对要执行的应用的合适性。例如,单指令单数据(SISD)架构可适合于通用计算,而单指令多数据(SIMD)架构可能更适合于处理媒体数据。
附图说明
在所附附图中以示例方式而非限制方式说明本发明,在附图中,类似的附图标记指示类似的要素,其中:
图1是示出根据本发明的实施例的处理器核的示图;
图2是示出根据本发明的实施例的多线程处理器流水线的示图;
图3是根据本发明的实施例的任务管理器的示图;
图4是根据本发明的实施例的用于任务管理的方法的示图;
图5是根据本发明的一个实施例的系统的示图;
图6是根据本发明的实施例的第一更具体的示例性系统的示图;
图7是根据本发明的实施例的第二更具体的示例性系统的示图;以及
图8是根据本发明的实施例的SoC的示图。
具体实施方式
在以下描述中,可阐述诸如组件和系统配置之类的众多特定细节以提供对本发明的更透彻理解。然而,本领域技术人员将理解的是,可以在没有这些具体细节的情况下实践本发明。另外,并未详细地示出一些公知的结构、电路和其他特征,以避免不必要地模糊本发明。
“一个实施例”、“实施例”、“示例实施例”、“各实施例”等的引用指示如此描述的本发明的(多个)实施例可包括特定的特征、结构或特性,但是多于一个实施例可包括该特定的特征、结构或特性,并且并非每一个实施例都一定包括该特定的特征、结构或特性。一些实施例可以具有针对其他实施例所描述的特征中的一些、全部或者不具有所述特征。此外,此类短语不一定是指同一实施例。当结合实施例来描述特定的特征、结构或特性时,认为结合无论是否被明确描述的其他实施例来实施此类特征、结构或特性均落在本领域技术人员的知识范围之内。
如在本说明书和权利要求书中所使用的,除非另有说明,使用序数形容词“第一(first)”、“第二(second)”、“第三(third)”等来描述要素,仅仅指示要素的特定实例或相同要素的不同实例被提及,并且不旨在暗示如此描述的要素必须在或者时间上、空间上、排名上、或以任何其他方式处于特定序列中。
此外,如在本发明的实施例的描述中所使用,在多个项之间的“/”字符可以意味着实施例可包括第一项和/或第二项(和/或任何其他附加项),或者可使用、利用和/或根据第一项和/或第二项(和/或任何其他附加项)来实现。
如背景技术部分中所讨论的,计算机系统的性能可取决于处理器架构对于要执行的应用的合适性。与批量同步并行流不同,对于图应用和其他分散和/或混乱的执行流,可能需要本发明的实施例的使用。
图1是示出根据本发明的实施例的处理器核的示图。图1中的核100可以以逻辑门和/或任何其他类型的电路来实现,核100的全部或部分可被包括在分立的组件中和/或被集成到处理设备的电路或者计算机或其他信息处理系统中的任何其他装置中。例如,图1中的核100可以对应于或包括在图5中的处理器510和处理器515中、图6和图7中的处理器670和处理器680中、和/或图8中的核802A到核802N中的任何一个中,每个如下所述。
核100包括单线程流水线102和多线程流水线104、106和108。尽管核100示出了一个单线程流水线和三个多线程流水线,但是根据本发明的实施例的核可以包括:两个或更多个单线程流水线以及没有多线程流水线、任意数量的多线程流水线以及没有单线程流水线、或任意数量的单线程流水线和任意数量的多线程流水线。在实施例中,与复杂的SIMD架构相比,每个流水线可以由少量状态构成。流水线102、104、106和108通过核上的结构、交叉开关或其他互连110进行互连,核上的结构、交叉开关或其他互连110可以连接到核外结构、交叉开关或其他互连112,使得流水线102、104、106和108共享到系统存储器120的公共路径并且具有单个、一致的系统存储器视图,包括数据高速缓存流量,如框122所示。DRAM 120可以通过存储器控制器124连接到核外结构112。核外结构112还可以将核100连接到网络126。
核100还可以包括线程引擎130,以分配和解除分配流水线102、104、106和108的硬件资源。流水线102、104、106和108中的每一个的指令集架构(ISA)是相同的或兼容的。因此,线程引擎130可以将任何线程分配给任何流水线,并且可以将任何线程从任何流水线切换到任何其他流水线。线程引擎130可以执行线程分配和/或切换以改善任何一个或多个线程的性能、改善整体性能、减少功耗、或者出于任何其他原因。
核100还可以包括暂存器存储器140、存储器引擎142、收集引擎144、查询引擎146、和任务管理器148。存储器引擎142可以用于管理存储器操作,诸如直接存储器访问(DMA),用于加速器、输入/输出(I/O)、和其他外围设备。收集引擎144可以用于管理分散/聚集和/或其他数据收集操作。队列引擎146可以用于管理硬件辅助以用于队列操作或其他类似堆栈或非原子软件操作。
图2是示出根据本发明的实施例的多线程处理器流水线200的示图。流水线200可以对应于图1的流水线104、106和108中的任何一个。在实施例中,流水线200可以是简单的有序流水线,仅包括五个阶段:分派(包括分派器210),获取(包括获取硬件220),解码(包括解码器230),执行(包括加载/存储队列242、引擎排序队列244、浮点单元246、和算术逻辑单元248),以及回写(包括回写硬件250)。它可以通过将每个线程限制为一次仅有一个未决的指令/操作,在没有数据依赖性跟踪、分支预测、引退重新排序、和/或加载/存储队列排序的情况下来实现。例如,分派器210可以检取线程标识符和程序计数器以通过具有给定线程的指令/操作的流水线,然后,在回写阶段中的寄存器提交时,通知分派器210可以分派给定线程的另一条指令/操作。
流水线200包括寄存器堆260,使得每个流水线102、104、106、和108具有其自己的独立寄存器堆,以支持每流水线的多个硬件线程。线程引擎130可以在核级别而不是在流水线级别调度线程,而没有所需的关联性,使得可以在任何流水线上调度新线程,而不管它们是从核外部还是在流水线内生成的。线程调度可以基于一系列试探法,以基于任何期望的度量来优化将线程放置在流水线上。例如,为了改善的性能,线程可以跨流水线分布,或者为了功率降低,线程可以针对活动的流水线而不是唤醒非活动的流水线。线程引擎130还可以识别一个或多个在其中线程迁移有利的条件、暂停线程、将线程状态复制到另一个流水线、终止旧线程、并重新启动它作为另一个流水线上的新线程。
流水线200还包括指令高速缓存270、数据高速缓存280、和共享存储器端口290。具有对于其高速缓存的益处是有限的数据访问模式的应用(诸如图应用)的线程可频繁访问核外存储器结构(例如,通过共享存储器端口290)并花费相当大量的时间等待存储器流量。在本发明的各个实施例中,可以选择每核的单线程流水线的数量、每核的多线程流水线的数量、以及每多线程流水线的硬件线程的数量,以便为线程之间的高水平交织提供硬件资源,以使存储器带宽饱和并优化这些类型应用的性能。
图3是根据本发明的实施例的任务管理器300的示图。任务管理器300可以对应于图1的任务管理器148。根据本发明的实施例,任务管理器300包括硬件以辅助细粒度任务调度和切换。可能希望本发明的实施例实现将任务分解成更小的、可独立执行的块的益处。
任务管理器300包括硬件队列、任务队列310以存储表示三个不同任务的集合的任务描述符:单个任务、迭代任务和链接任务。当处理器或处理器核(诸如核100)上的硬件线程完成任务的执行时,它们向任务管理器300发出读取请求。如果任务管理器300已经通过任务队列310被供应任务,则它向请求硬件线程发出任务。否则,硬件线程保持在等待状态,直到任务管理器300具有要分配的任务。
可能期望使用本发明的实施例来为任务分配和管理提供硬件辅助。在实施例中,可以通过对任务队列310的单个添加来创建繁衍(spawn)许多任务的迭代任务。在实施例中,等待给定操作的完成的任务可以作为链接任务在链接列表中链接在一起,并且通过头部元素的单个添加来添加到任务队列310。
在实施例中,表示流水线加载/存储队列(诸如加载/存储队列242)的加载/存储队列320可以通过向任务管理器300发出读取请求来为其流水线请求新线程。然后,请求硬件线程可能被阻止并进入低功率模式,直到任务管理器300向请求流水线发出新任务。将新线程请求实现为对任务管理器300的读取请求允许请求流水线比其在使用中断或轮询机制的基于软件的方法中更快地响应新线程。
任务管理器300包括任务有限状态机(FSM)330、仲裁器332、和响应缓冲器334。仲裁器332接受对来自多个硬件线程的工作的请求并将请求保持在未决的队列、缓冲器、或其他存储结构中,直到每个请求都准备好新任务。对于每个未决请求,FSM 330检查其内部缓冲器状态以确定响应缓冲器334中的任务描述符是否可用于将任务分配给请求硬件线程。如果响应缓冲器334中不存在此类任务以满足请求,则任务管理器300针对可用的任务描述符检查任务队列310。一旦任务描述符在任务队列310上可用,FSM 330就将任务描述符从任务队列310复制到响应缓冲器334,并基于任务描述符将一个任务分配给请求硬件线程。
任务描述符可以包括表1中所示的字段。
Figure BDA0002076670410000051
Figure BDA0002076670410000061
表1
在各种实施例中,任务描述符可以包括表1中所示的任何字段和/或任何其他字段,并且每个字段可以具有表1中指示的大小或具有任何其他大小。
类型字段中的值可以指示任务是三种类型之一:单个、迭代和链接列表。单个任务的描述符包括单个值或指向包含要用作任务的初始状态的多个值的结构的指针。当遇到单个任务时,它被立即处理并然后被解决。迭代任务的描述符包括指向结构的指针,该结构包含要用作任务的初始状态的多个值,以及结构内迭代参数的偏移以及要用作迭代参数的迭代限制的最大值。迭代任务描述符将具有唯一迭代参数的任务分配给等待的硬件线程,直到已经达到迭代限制。链接列表任务的描述符包括指向结构的指针,该结构包含任务的内部状态和指向内部状态的下一个区段的指针。链接列表任务在列表之后继续,直到到达终止值(例如,空指针)。
图4是根据本发明的实施例的用于任务管理的方法400的示图。在实施例中,方法400可以由硬件执行,包括例如任务管理器(例如,包括FSM330的任务管理器300)。
在框410中,具有单线程和/或多线程流水线的处理器核(例如,核100)中的任何ISA兼容硬件线程通过从其流水线(例如,流水线200)的加载/存储队列(例如,加载/存储队列242)向硬件任务管理器(例如,任务管理器300)发出读取请求来请求工作。在框412中,将请求插入到请求队列、缓冲器或其他存储结构中。
在框414中,任务管理器确定请求在请求队列中是否可用。如果不是,则方法400继续到框416,其中任务管理器等待直到请求在请求队列中变得可用。如果是,则方法400继续到框420,其中任务管理器确定当前是否正在处理任务,例如,通过检查任务描述符在响应缓冲器(例如,响应缓冲器334)中是否可用。
如果在框420中,任务管理器确定当前没有正在处理任务,则方法400在框422中继续,其中任务管理器确定任务描述符在任务队列(例如,任务队列310)上是否可用。如果是,则方法400在框426中继续,其中将可用任务描述符复制到响应缓冲器。如果不是,则方法400在框424中继续,其中任务管理器和硬件线程等待,直到任务在任务队列中变得可用,然后到框426。方法400从框426继续到框430。
如果在框420中,任务管理器确定当前正在处理任务,则方法400在框430中继续。
在框430中,任务管理器基于任务描述符的类型字段中的值来确定任务描述符是表示单个任务、迭代任务的集合还是任务的链接列表。
如果在框430中确定任务描述符表示单个任务,则:在框432中,任务管理器针对当前请求发出单个任务,并且在框462中,任务管理器将任务标记为已处理。
如果在框430中确定任务描述符表示迭代任务的集合,则:在框440中,任务管理器针对当前请求发出迭代任务;在框442中,任务管理器更新迭代参数;并且,在框444中,任务管理器确定是否已达到迭代限制。如果是,则在框462中,任务管理器将任务标记为已处理。如果不是,则在框460中,任务管理器识别出任务未完成。
如果在框430中确定任务描述符表示任务的链接列表,则:在框450中,任务管理器针对当前请求发出链接任务;在框452中,任务管理器获取下一个链接任务;并且,在框454中,任务管理器确定是否已达到终止值。如果是,则在框462中,任务管理器将任务标记为已处理。如果不是,则在框460中,任务管理器识别出任务未完成。
方法400从框460和/或框462返回到框414。
示例性计算机系统和架构
图5至图8是可以包括本发明的实施例的示例性计算机系统和架构的框图。本领域中已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也可以包括本发明的实施例。一般地,能够包含如本文中所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备可包括本发明的实施例。
现在参考图5,示出的是根据本发明的一个实施例的系统500的框图。系统500可以包括耦合到控制器中枢520的一个或多个处理器510、515。在一个实施例中,控制器中枢520包括图形存储器控制器中枢(GMCH)590和输入/输出中枢(IOH)550(其可以在分开的芯片上);GMCH 590包括存储器和图形控制器,存储器540和协处理器545耦合到该存储器和图形控制器;IOH 550将输入/输出(I/O)设备560耦合到GMCH 590。可替代地,存储器和图形控制器中的一者或两者被集成在处理器(如本文所述)内,存储器540和协处理器545通过IOH550直接耦合至单个芯片中的处理器510和控制器中枢520。
图5中用虚线表示附加处理器515的可选性质。每一个处理器510、515可包括本文中所描述的处理核中的一个或多个,并且可以是处理器核100的某一版本。
存储器540可以例如是动态随机存取存储器(DRAM)、相变存储器(PCM)或两者的组合。对于至少一个实施例,控制器中枢520经由多点总线(例如,前端总线(FSB)、如快速路径互连(QPI)等点对点接口或类似连接件595)与(多个)处理器510、515通信。
在一个实施例中,协处理器545是专用处理器,诸如,例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。在一个实施例中,控制器中枢520可以包括集成图形加速器。
就一系列指标量度(包括架构、微架构、热、功耗特性等)而言,物理资源510、515之间可能存在多种差异。
在一个实施例中,处理器510执行控制一般类型的数据处理操作的指令。协处理器指令可以被嵌入在所述指令中。处理器510将这些协处理器指令识别为应由附连的协处理器545执行的类型。相应地,处理器510将协处理器总线或其他互连上的这些协处理器指令(或表示协处理器指令的控制信号)发布到协处理器545。(多个)协处理器545接受并执行接收到的协处理器指令。
现在参考图6,示出了根据本发明的实施例的更具体的第一示例性系统600的框图。如图6所示,多处理器系统600是点对点互连系统,且包括经由点对点互连650耦合的第一处理器670和第二处理器680。处理器670和680中的每一个都可以包括处理器核100的某一版本。在本发明的一个实施例中,处理器670和680分别是处理器510和515,而协处理器638是协处理器545。在另一实施例中,处理器670和680分别是处理器510和协处理器545。
处理器670和680被示出为分别包括集成存储器控制器(IMC)单元672和682。处理器670还包括作为其总线控制器单元的一部分的点对点(P-P)接口676和678;类似地,第二处理器680包括P-P接口686和688。处理器670、680可以使用P-P接口电路678、688经由点对点(P-P)接口650交换信息。如图6所示,IMC 672和682将处理器耦合到相应的存储器、即存储器632和存储器634,所述存储器可以是本地附接到对应处理器上的主存储器的一部分。
处理器670、680可以各自使用点对点接口电路676、694、686、698经由单独的P-P接口652、654来与芯片组690交换信息。芯片组690可以可选地经由高性能接口692与协处理器638交换信息。在一个实施例中,协处理器638是专用处理器,诸如,例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。
共享高速缓存(未示出)可以包括在任一处理器中或者在两个处理器外部但经由P-P互连与所述处理器相连接,使得如果处理器被置于低功率模式中,则任一或两个处理器的本地高速缓存信息可以被存储在所述共享高速缓存中。
芯片组690可以经由接口696耦合至第一总线616。在一个实施例中,第一总线616可以是外围组件互连(PCI)总线,或如PCI快速总线或另一种第三代I/O互连总线等总线,尽管本发明的范围不限于此。
如图6所示,各种I/O设备614可以连同总线桥接器618耦合到第一总线616,所述总线桥接器将第一总线616耦合到第二总线620。在一个实施例中,一个或多个附加处理器615(例如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如,例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列、或任何其他处理器)被耦合到第一总线616。在一个实施例中,第二总线620可以是低引脚数(LPC)总线。在一个实施例中,各个设备可以耦合至第二总线620,所述设备包括例如键盘和/或鼠标622、多个通信设备627、以及可以包括指令/代码和数据630的存储单元628(如盘驱动器或者其他大容量存储设备)。进一步地,音频I/O624可以耦合至第二总线620。应注意的是,其他架构是可能的。例如,替代图6的点对点架构,系统可以实现多点总线或其他这样的架构。
现在参考图7,示出了根据本发明的实施例的更具体的第二示例性系统700的框图。图6和图7中的相同元件具有相同的附图标记,并且已经从图7中省略了图6的某些方面以避免使图7的其他方面模糊。
图7示出处理器670和680可分别包括集成存储器和I/O控制逻辑(“CL”)672和682。因此,CL 672、682包括集成存储器控制器单元并且包括I/O控制逻辑。图7展示了不仅存储器632、634被耦合至CL 672、682,而且I/O设备714也被耦合至控制逻辑672、682。传统I/O设备715被耦合至芯片组690。
现在参照图8,所示出的是根据本发明的实施例的SoC 800的框图。虚线框是关于更先进的SoC的可选特征。在图8中,(多个)互连单元802耦合到:应用处理器810,其包括一个或多个核的集合802A-N以及(多个)共享高速缓存单元806,一个或多个核的集合802A-N包括高速缓存单元804A-N;系统代理单元810;(多个)总线控制器单元816;(多个)集成存储器控制器单元814;一个或多个协处理器的集合820,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元830;直接存储器存取(DMA)单元832;以及用于耦合到一个或多个外部显示器的显示单元840。在一个实施例中,(多个)协处理器820包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等。
可以以硬件、软件、固件或此类实现方法的组合来实现本文公开的机制的实施例。本发明的实施例可以被实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备、以及至少一个输出设备。
诸如图6所示的代码630的程序代码可以被应用于输入指令以执行本文所述的功能并且生成输出信息。输出信息可以以已知的方式应用于一个或多个输出设备。出于此应用的目的,处理系统包括具有处理器(诸如,例如,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)、或微处理器)的任何系统。
程序代码可以以高级程序或面向对象的编程语言来实施,以与处理系统通信。如果期望的话,程序代码还可以以汇编或机器语言来实现。事实上,本文描述的机制的范围不限于任何特定的编程语言。在任何情况下,所述语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可通过存储在机器可读介质上的代表性指令来实现,该机器可读介质表示处理器内的各种逻辑,这些指令在由机器读取时使得该机器制备逻辑以执行本文中所描述的技术。称为“IP核”的这些表示可被存储在有形的机器可读介质上且供应给各种客户或制造设施以加载到实际上制作逻辑或处理器的制备机器。
这样的机器可读存储介质可以包括但不限于:由机器或设备制造或形成的物品的非瞬态有形安排,包括诸如硬盘的存储介质;任何其他类型的盘,包括软盘、光盘、紧凑盘只读存储器(CD-ROM)、可重写紧凑盘(CD-RW)、和磁光盘;半导体设备,例如只读存储器(ROM);随机存取存储器(RAM),例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM);可擦可编程只读存储器(EPROM);闪存存储器;电可擦可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或者适合于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括包含指令或包含设计数据(比如,硬件描述语言(HDL))的非瞬态有形机器可读介质,所述非暂态有形机器可读介质限定本文描述的结构、电路、设备、处理器和/或系统特征。这种实施例也可以被称为程序产品。
在实施例中,处理器包括多个硬件线程和任务管理器。任务管理器用于向第一硬件线程发出任务。任务管理器包括硬件任务队列,其中用于存储多个任务描述符。任务描述符中的每一个用于表示单个任务、迭代任务的集合、和任务的链接列表中的一者。
在各个实施例中,以下各项中的任一个或任何组合也可以适用。硬件线程可以包括加载/存储队列,以通过向任务管理器发出读取请求来请求来自任务管理器的任务。表示迭代任务的集合的任务描述符可以包括用于指定迭代的数量的计数值。任务的链接列表的任务描述符可以包括指向任务的链接列表的头部的指针。第一硬件线程的指令集架构和第二硬件线程的指令集架构可以是兼容的。处理器还可以包括线程引擎,用于将软件线程从第一硬件线程迁移到第二硬件线程。线程引擎可以基于不相等的处理需求来迁移软件线程,例如,以提高图应用的性能。第一硬件线程可以在第一单线程流水线中,以及第二硬件线程可以在第二单线程流水线中。第一硬件线程和第二硬件线程可以在单个多线程流水线中。第一硬件线程可以在第一多线程流水线中,以及第二硬件线程可以在第二多线程流水线中。第一硬件线程和第二硬件线程中仅有一个可以在单线程流水线中,并且第一硬件线程和第二硬件线程中的另一个可以在多线程流水线中。单个多线程流水线可以将软件线程限制为一次一个未决的操作。任务描述符可以表示单个任务或多个任务。表示多个任务的任务描述符(多任务描述符)可以表示迭代任务的集合、任务的链接列表、或任务的任何其他集合、列表或组。
在实施例中,一种方法可以包括由多线程处理器核的硬件线程请求来自任务管理器的工作;由任务管理器从硬件队列中读取任务描述符;并由任务管理器发出由任务描述符描述的任务。
在各个方法实施例中,以下各项中的任一个或任何组合也可以适用。该方法还可以包括由任务管理器确定在从硬件队列读取任务描述符之前没有正在处理现有任务。硬件线程可以通过加载/存储队列向任务管理器发送读取请求来请求来自任务管理器的工作。任务描述符可以指定任务是单个任务类型。任务描述符可以指定任务是迭代任务的集合之一,并且可以指定计数值以指示迭代的数量。任务描述符可以指定任务是任务的链接列表之一,并且可以指定指向任务的链接列表的头部的指针。任务描述符可以表示单个任务或多个任务。表示多个任务的任务描述符(多任务描述符)可以表示迭代任务的集合、任务的链接列表、或任务的任何其他集合、列表或组。
在实施例中,设备可以包括用于执行以上所描述的方法中的任一项的装置。在实施例中,一种机器可读有形介质可存储指令,这些指令在由机器执行时,使该机器执行以上所描述的方法中的任一项。
在实施例中,系统可以包括具有多个硬件线程和任务管理器的处理器。任务管理器用于向第一硬件线程发出任务。任务管理器包括硬件任务队列,其中用于存储多个任务描述符。任务描述符中的每一个用于表示单个任务、迭代任务的集合、和任务的链接列表中的一者。系统还可以包括耦合到处理器的系统存储器,其中第一硬件线程和第二硬件线程具有一致的系统存储器视图。
在系统实施例中,如在装置和其他实施例中,以下各项中的任一个或任何组合也可以适用。硬件线程可以包括加载/存储队列,以通过向任务管理器发出读取请求来请求来自任务管理器的任务。表示迭代任务的集合的任务描述符可以包括用于指定迭代的数量的计数值。任务的链接列表的任务描述符可以包括指向任务的链接列表的头部的指针。第一硬件线程的指令集架构和第二硬件线程的指令集架构可以是兼容的。处理器还可以包括线程引擎,用于将软件线程从第一硬件线程迁移到第二硬件线程。线程引擎可以基于不相等的处理需求来迁移软件线程,例如,以提高图应用的性能。第一硬件线程可以在第一单线程流水线中,以及第二硬件线程可以在第二单线程流水线中。第一硬件线程和第二硬件线程可以在单个多线程流水线中。第一硬件线程可以在第一多线程流水线中,以及第二硬件线程可以在第二多线程流水线中。第一硬件线程和第二硬件线程中仅有一个可以在单线程流水线中,并且第一硬件线程和第二硬件线程中的另一个可以在多线程流水线中。单个多线程流水线可以将软件线程限制为一次一个未决的操作。任务描述符可以表示单个任务或多个任务。表示多个任务的任务描述符(多任务描述符)可以表示迭代任务的集合、任务的链接列表、或任务的任何其他集合、列表或组。

Claims (20)

1.一种用于硬件辅助任务调度的处理器,包括:
第一硬件线程;
第二硬件线程;以及
任务管理器,用于向所述第一硬件线程发出任务,所述任务管理器包括硬件任务队列,其中用于存储多个任务描述符,所述任务描述符中的每一个用于表示单个任务、迭代任务的集合、和任务的链接列表中的一者。
2.如权利要求1所述的处理器,其特征在于,所述第一硬件线程包括加载/存储队列,以通过向所述任务管理器发出读取请求来请求来自所述任务管理器的任务。
3.如权利要求1所述的处理器,其特征在于,表示迭代任务的集合的任务描述符用于包括用于指定迭代的数量的计数值。
4.如权利要求1所述的处理器,其特征在于,任务的链接列表的任务描述符用于包括指向所述任务的链接列表的头部的指针。
5.如权利要求1所述的处理器,其特征在于,所述第一硬件线程的指令集架构和所述第二硬件线程的指令集架构是兼容的。
6.如权利要求5所述的处理器,进一步包括:线程引擎,用于将软件线程从所述第一硬件线程迁移到所述第二硬件线程。
7.如权利要求6所述的处理器,其特征在于,所述线程引擎用于迁移所述软件线程以改善图应用的性能。
8.如权利要求6所述的处理器,其特征在于,所述第一硬件线程位于第一单线程流水线中,并且所述第二硬件线程位于第二单线程流水线中。
9.如权利要求6所述的处理器,其特征在于,所述第一硬件线程和所述第二硬件线程位于单个多线程流水线中。
10.如权利要求6所述的处理器,其特征在于,所述第一硬件线程位于第一多线程流水线中,并且所述第二硬件线程位于第二多线程流水线中。
11.如权利要求6所述的处理器,其特征在于,所述第一硬件线程和所述第二硬件线程中仅有一个位于单线程流水线中,并且所述第一硬件线程和所述第二硬件线程中的另一个位于多线程流水线中。
12.如权利要求9所述的处理器,其特征在于,所述单个多线程流水线将软件线程限制为一次一个未决的操作。
13.一种用于硬件辅助任务调度的方法,包括:
由多线程处理器核的硬件线程请求来自任务管理器的工作;
由所述任务管理器来读取来自硬件队列的任务描述符;以及
由所述任务管理器发出由所述任务描述符描述的任务。
14.如权利要求13所述的方法,进一步包括:由所述任务管理器确定在读取来自所述硬件队列的所述任务描述符之前没有正在处理现有任务。
15.如权利要求13所述的方法,其特征在于,所述硬件线程通过加载/存储队列向所述任务管理器发送读取请求来请求来自所述任务管理器的工作。
16.如权利要求13所述的方法,其特征在于,所述任务描述符指定所述任务是单个任务类型。
17.如权利要求13所述的方法,其特征在于,所述任务描述符:
指定所述任务是迭代任务的集合之一;以及
指定计数值以指示迭代的数量。
18.如权利要求13所述的方法,其特征在于,所述任务描述符:
指定所述任务是任务的链接列表之一;以及
指定指向所述任务的链接列表的头部的指针。
19.一种用于硬件辅助任务调度的系统,包括:
处理器,包括:
第一硬件线程;
第二硬件线程;以及
任务管理器,用于向所述第一硬件线程发出任务,所述任务管理器包括硬件任务队列,其中用于存储多个任务描述符,所述任务描述符中的每一个用于表示单个任务、迭代任务的集合、和任务的链接列表中的一者;以及
耦合到所述处理器的系统存储器,其中所述第一硬件线程和所述第二硬件线程具有一致的所述系统存储器的视图。
20.如权利要求19所述的系统,其特征在于,所述处理器还包括线程引擎,用于将软件线程从所述第一硬件线程迁移到所述第二硬件线程,以改善图应用的性能。
CN201910456238.8A 2018-06-29 2019-05-29 具有硬件辅助任务调度的多线程处理器核 Pending CN110659115A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/024,343 2018-06-29
US16/024,343 US11360809B2 (en) 2018-06-29 2018-06-29 Multithreaded processor core with hardware-assisted task scheduling

Publications (1)

Publication Number Publication Date
CN110659115A true CN110659115A (zh) 2020-01-07

Family

ID=66676290

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910456238.8A Pending CN110659115A (zh) 2018-06-29 2019-05-29 具有硬件辅助任务调度的多线程处理器核

Country Status (3)

Country Link
US (1) US11360809B2 (zh)
EP (1) EP3588288B1 (zh)
CN (1) CN110659115A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115904505A (zh) * 2021-09-30 2023-04-04 想象技术有限公司 具有硬件流水线的处理器

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11106494B2 (en) * 2018-09-28 2021-08-31 Intel Corporation Memory system architecture for multi-threaded processors
GB2579112B (en) 2019-05-31 2021-04-21 Imagination Tech Ltd Graphics processing units and methods using render progression checks
US11449339B2 (en) * 2019-09-27 2022-09-20 Red Hat, Inc. Memory barrier elision for multi-threaded workloads
GB2603618B (en) 2020-12-18 2023-04-26 Imagination Tech Ltd Graphics processing systems and methods
CN112764895A (zh) * 2020-12-31 2021-05-07 广州技象科技有限公司 多核物联网芯片的任务调度方法、装置、系统和存储介质
GB2605664B (en) * 2021-09-30 2023-03-29 Imagination Tech Ltd Processor with hardware pipeline

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7653710B2 (en) * 2002-06-25 2010-01-26 Qst Holdings, Llc. Hardware task manager
US20050015768A1 (en) * 2002-12-31 2005-01-20 Moore Mark Justin System and method for providing hardware-assisted task scheduling
US20050165881A1 (en) * 2004-01-23 2005-07-28 Pipelinefx, L.L.C. Event-driven queuing system and method
US9038070B2 (en) * 2004-09-14 2015-05-19 Synopsys, Inc. Debug in a multicore architecture
DE102004059972B4 (de) * 2004-12-13 2010-07-01 Infineon Technologies Ag Thread-Scheduling-Verfahren, und Thread-List-Scheduler-Vorrichtung
JP2007133723A (ja) * 2005-11-11 2007-05-31 Hitachi Ltd マルチプロセッサ、タスクスケジューリング方法、及びコンパイラ
US8458380B2 (en) * 2008-03-26 2013-06-04 Qualcomm Incorporated Off-line task list architecture utilizing tightly coupled memory system
JP5173711B2 (ja) * 2008-09-30 2013-04-03 ルネサスエレクトロニクス株式会社 マルチスレッドプロセッサ及びそのハードウェアスレッドのスケジュール方法
US20110055838A1 (en) * 2009-08-28 2011-03-03 Moyes William A Optimized thread scheduling via hardware performance monitoring
US20120284720A1 (en) * 2011-05-06 2012-11-08 International Business Machines Corporation Hardware assisted scheduling in computer system
US9286106B1 (en) * 2013-04-16 2016-03-15 Ca, Inc. Scheduling periodic tasks with dependencies and determining improper loop dependencies between tasks placed in a waiting tasks set and in a unfinished dependent tasks set
CN104239134B (zh) * 2013-06-21 2018-03-09 华为技术有限公司 一种众核系统的任务管理方法和装置
US9396039B1 (en) * 2013-09-20 2016-07-19 Amazon Technologies, Inc. Scalable load testing using a queue
US20150127927A1 (en) * 2013-11-01 2015-05-07 Qualcomm Incorporated Efficient hardware dispatching of concurrent functions in multicore processors, and related processor systems, methods, and computer-readable media
WO2015103094A1 (en) * 2013-12-30 2015-07-09 H. Lee Moffitt Cancer Center And Research Institute, Inc. Locking brakes for enteral feeding tube retention member
US9575800B2 (en) * 2014-05-13 2017-02-21 International Business Machines Corporation Using queues corresponding to attribute values and priorities associated with units of work and sub-units of the unit of work to select the units of work and their sub-units to process
US20160098306A1 (en) * 2014-10-01 2016-04-07 HGST Netherlands B.V. Hardware queue automation for hardware engines
CN105677455A (zh) * 2014-11-21 2016-06-15 深圳市中兴微电子技术有限公司 一种设备调度方法及任务管理器
US20170351555A1 (en) * 2016-06-03 2017-12-07 Knuedge, Inc. Network on chip with task queues
PL3563235T3 (pl) * 2016-12-31 2023-03-13 Intel Corporation Systemy, sposoby i aparaty do obliczania heterogenicznego
US10496577B2 (en) * 2017-02-09 2019-12-03 Hewlett Packard Enterprise Development Lp Distribution of master device tasks among bus queues
US10261835B2 (en) * 2017-03-21 2019-04-16 Arm Limited Hardware thread scheduling
KR101889749B1 (ko) * 2017-07-21 2018-09-20 주식회사 티맥스데이터 메시지 스케줄링 방법
EP3776239A1 (en) * 2018-03-31 2021-02-17 Micron Technology, Inc. Loop execution control for a multi-threaded, self-scheduling reconfigurable computing fabric using a reenter queue
US11537838B2 (en) * 2018-05-04 2022-12-27 Apple Inc. Scalable neural network processing engine
US11740932B2 (en) * 2018-05-04 2023-08-29 Apple Inc. Systems and methods for task switching in neural network processor

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115904505A (zh) * 2021-09-30 2023-04-04 想象技术有限公司 具有硬件流水线的处理器
CN115904505B (zh) * 2021-09-30 2024-07-16 想象技术有限公司 处理器、电路制造系统、控制对任务的处理的方法和介质

Also Published As

Publication number Publication date
EP3588288B1 (en) 2024-08-21
US20200004587A1 (en) 2020-01-02
US11360809B2 (en) 2022-06-14
EP3588288A1 (en) 2020-01-01

Similar Documents

Publication Publication Date Title
US12086603B2 (en) Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions
US12020031B2 (en) Methods, apparatus, and instructions for user-level thread suspension
CN110659115A (zh) 具有硬件辅助任务调度的多线程处理器核
CN107408036B (zh) 用户级分叉与结合处理器、方法、系统和指令
EP1839146B1 (en) Mechanism to schedule threads on os-sequestered without operating system intervention
US9830158B2 (en) Speculative execution and rollback
US6671827B2 (en) Journaling for parallel hardware threads in multithreaded processor
US8180997B2 (en) Dynamically composing processor cores to form logical processors
JP6450705B2 (ja) 永続コミットプロセッサ、方法、システムおよび命令
US8635621B2 (en) Method and apparatus to implement software to hardware thread priority
CN110647404A (zh) 用于多线程处理器中的屏障同步的系统、设备和方法
US20170147345A1 (en) Multiple operation interface to shared coprocessor
TWI428755B (zh) 用於配置直接記憶體存取(dma)頻道識別符之方法、電腦可讀取儲存媒體、及資料處理系統
JP2024523339A (ja) ニアメモリコンピューティングを用いた複合操作のアトミック性の提供
US8447960B2 (en) Pausing and activating thread state upon pin assertion by external logic monitoring polling loop exit time condition
US11451241B2 (en) Setting values of portions of registers based on bit values
US11829762B2 (en) Time-resource matrix for a microprocessor with time counter for statically dispatching instructions
US20110173420A1 (en) Processor resume unit
US12099841B2 (en) User timer directly programmed by application
US20220147393A1 (en) User timer directly programmed by application

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