CN112119376B - 具有自调度处理器和混合线程组构的系统 - Google Patents

具有自调度处理器和混合线程组构的系统 Download PDF

Info

Publication number
CN112119376B
CN112119376B CN201980031019.3A CN201980031019A CN112119376B CN 112119376 B CN112119376 B CN 112119376B CN 201980031019 A CN201980031019 A CN 201980031019A CN 112119376 B CN112119376 B CN 112119376B
Authority
CN
China
Prior art keywords
thread
execution
processor
memory
instruction
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
CN201980031019.3A
Other languages
English (en)
Other versions
CN112119376A (zh
Inventor
T·M·布鲁尔
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.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
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 Micron Technology Inc filed Critical Micron Technology Inc
Publication of CN112119376A publication Critical patent/CN112119376A/zh
Application granted granted Critical
Publication of CN112119376B publication Critical patent/CN112119376B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/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/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/30098Register arrangements
    • 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/30181Instruction operation extension or modification
    • G06F9/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
    • 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/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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
    • 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/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • 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/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/141Discrete Fourier transforms
    • G06F17/142Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool
    • 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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明揭示用于自调度处理器的代表性设备、方法和系统实施例,所述自调度处理器还提供额外功能性。代表性实施例包含自调度处理器,其包括:处理器核心,其用于执行接收到的指令;以及核心控制电路,其用于响应于接收到的工作描述符数据包而自动调度指令以供所述处理器核心执行。在另一实施例中,所述核心控制电路还用于调度纤程创建指令以供所述处理器核心执行,在线程控制存储器中保留预定量的存储器空间以存储返回变量参数,并且生成到另一处理器或混合线程组构电路的一或多个工作描述符数据包以用于执行对应的多个执行线程。本发明还揭示事件处理、数据路径管理、系统调用、存储器请求和其它新指令。

Description

具有自调度处理器和混合线程组构的系统
相关申请案的交叉引用
本申请案主张发明人Tony M.Brewer在2019年4月30日提交的标题“具有自调度处理器和混合线程组构的系统中使用工作描述符包的线程开始和完成(ThreadCommencement and Completion Using Work Descriptor Packets in a System Havinga Self-Scheduling Processor and a Hybrid Threading Fabric)”的美国专利申请案第16/399,642号的权益和优先权,所述美国专利申请案是发明人Tony M.Brewer在2018年5月7日提交的标题“具有多线程自调度处理器和混合线程组构的系统中使用单词[应为:工作]描述符包的线程开始和完成(Thread Commencement and Completion Using Word[sic-Work]Descriptor Packets in a System Having a Self-Scheduling Processor and aHybrid Threading Fabric)”的美国临时专利申请案第62/667,691号的非临时申请且主张其权益和优先权,所述专利申请案共同受让于此且全部特此以全文引用的方式并入本文中就如同其全部内容在本文中阐述一般具有相同的完整效力和效果(在下文被称为“相关申请案”)。
技术领域
本发明大体涉及可配置计算电路系统,且更具体地说,涉及包含自调度处理器的异构计算系统,其为一种具有嵌入式互连网络、动态重新配置和对能耗或功耗的动态控制的可配置计算电路系统。
背景技术
大多现有计算系统在计算处理能力上在计算速度、能量(或功率)消费以及相关联热消散方面受到显著限制。举例来说,由于对先进计算技术的需求不断增长,例如以便适应人工智能和其它重要计算应用程序,现有的计算解决方案已变得越来越不足。
因此,当前需要一种能够使用稀疏数据集提供高性能的计算架构,其涉及有限的数据重复使用或没有数据重复使用,这通常会导致较差的缓存命中率。这类计算架构应容忍对存储器的时延,并允许每时钟执行指令数持续为高。
当前还需要能够为计算密集型内核提供高性能节能解决方案的计算架构,例如,以便计算用于传感、通信和分析应用程序的快速傅立叶变换(FFT)和有限脉冲响应(FIR)滤波器,例如合成孔径雷达、5G基站和图形分析应用程序,如使用光谱技术的图形聚类、机器学习、5G联网算法和大型模具代码,但不限于此。
当前还需要能够进行大量并行处理并且进一步与可配置计算架构交互并且控制可配置计算架构以进行这些各种应用程序中的任一者的处理器架构。
发明内容
如下文更详细地论述,代表性设备、系统和方法提供能够为计算密集型核提供高性能和节能解决方案的计算架构,例如,以便计算用于传感、通信和分析应用的快速傅立叶变换(FFT)和有限脉冲响应(FIR)滤波器,例如合成孔径雷达、5G基站和图形分析应用程序,例如使用光谱技术的图形聚类、机器学习、5G联网算法和大型模具代码,但不限于此。
如上文所提及,稀疏数据集通常会导致较差的缓存命中率。代表性设备、系统和方法提供一种能够允许一些线程等待来自存储器的响应而其它线程继续执行指令的计算架构。此样式的计算容忍对存储器的时延,并允许每时钟执行指令持续为高。
还如下文更详细地论述,代表性设备、系统和方法提供一种处理器架构,其能够进行自调度、大量并行处理并且进一步与可配置计算架构交互并且控制可配置计算架构以进行这些各种应用程序中的任一者的处理器架构。
公开一种自调度处理器。在代表性实施例中,处理器包括:处理器核心,其用于执行接收到的指令;以及核心控制电路,其耦合到处理器核心,核心控制电路用于响应于接收到的工作描述符数据包而自动调度指令以供处理器核心执行。在另一代表性实施例中,处理器包括:处理器核心,其用于执行接收到的指令;以及核心控制电路,其耦合到处理器核心,核心控制电路用于响应于接收到的事件数据包而自动调度指令以供处理器核心执行。
还公开一种多线程自调度处理器,其可在本地或远程计算元件上创建线程。在代表性实施例中,处理器包括:处理器核心,其用于执行纤程创建指令;以及核心控制电路,其耦合到处理器核心,核心控制电路用于自动调度纤程创建指令以供处理器核心执行并且生成到另一处理器或混合线程组构电路的一或多个工作描述符数据包以供对应的多个执行线程执行。在另一代表性实施例中,处理器包括:处理器核心,其用于执行纤程创建指令;以及核心控制电路,其耦合到处理器核心,核心控制电路用于调度纤程创建指令以供处理器核心执行,以在线程控制存储器中保留预定量的存储器空间以存储返回便良参数,并且生成到另一处理器或混合线程组构电路的一或多个工作描述符数据包以供对应的多个执行线程执行。
在另一代表性实施例中,一种处理器包括:核心控制电路,其包括:互连网络接口;线程控制存储器,其耦合到互连网络接口;执行队列,其耦合到线程控制存储器;控制逻辑和线程选择电路,其耦合到执行队列和线程控制存储器;以及指令缓存,其耦合到控制逻辑和线程选择电路;并且处理器进一步包括处理器核心,其耦合到核心控制电路的指令缓存。
在另一代表性实施例中,一种处理器包括:核心控制电路,其包括:互连网络接口;线程控制存储器,其耦合到互连网络接口;网络响应存储器;执行队列,其耦合到线程控制存储器;控制逻辑和线程选择电路,其耦合到执行队列和线程控制存储器;指令缓存,其耦合到控制逻辑和线程选择电路;以及命令队列;处理器进一步包括处理器核心,其耦合到指令缓存和核心控制电路的命令队列。
在另一代表性实施例中,一种处理器包括:处理器核心和耦合到处理器核心的核心控制电路,其中核心控制电路包括:互连网络接口,其可耦合到互连网络以接收工作描述符数据包、将接收到的工作描述符数据包解码成具有初始程序计数和任何接收到的变量参数的执行线程;执行队列,其耦合到线程控制存储器;以及控制逻辑和线程选择电路,其耦合到执行队列,控制逻辑和线程选择电路用于将可用线程标识符指配到执行线程,自动将线程标识符放置在执行队列中,以及周期性地选择线程标识符以执行执行线程。
在另一代表性实施例中,一种处理器包括:处理器核心和耦合到处理器核心的核心控制电路,其中核心控制电路包括:互连网络接口,其可耦合到互连网络以接收工作描述符数据包、将接收到的工作描述符数据包解码成具有初始程序计数和任何接收到的变量参数的执行线程;执行队列,其耦合到线程控制存储器;以及控制逻辑和线程选择电路,其耦合到执行队列,控制逻辑和线程选择电路用于将可用线程标识符指配到执行线程,自动将线程标识符放置在执行队列中,以及周期性地选择线程标识符以供处理器核心执行执行线程的指令。
在另一代表性实施例中,一种处理器包括:处理器核心和耦合到处理器核心的核心控制电路,其中核心控制电路包括:执行队列,其耦合到线程控制存储器;以及控制逻辑和线程选择电路,其耦合到执行队列,控制逻辑和线程选择电路用于将可用线程标识符指配到执行线程,自动将线程标识符放置在执行队列中,以及周期性地选择线程标识符以供处理器核心执行执行线程的指令。
在另一代表性实施例中,一种处理器包括:处理器核心和耦合到处理器核心的核心控制电路,其中核心控制电路包括:线程控制存储器,其包括多个寄存器,多个寄存器包括存储多个线程标识符的线程标识符池寄存器、存储接收到的程序计数的程序计数寄存器、数据缓存和存储接收到的变量参数的通用寄存器;执行队列,其耦合到线程控制存储器;以及控制逻辑和线程选择电路,其耦合到执行队列,控制逻辑和线程选择电路用于将可用线程标识符指配给执行线程,自动将线程标识符放置在执行队列中,以及周期性地选择线程标识符以供处理器核心执行执行线程的指令,处理器核心使用存储在数据缓存或通用寄存器中的数据。
在另一代表性实施例中,一种处理器包括:处理器核心和耦合到处理器核心的核心控制电路,其中核心控制电路包括:线程控制存储器,其包括多个寄存器,多个寄存器包括存储多个线程标识符的线程标识符池寄存器、存储接收到的程序计数的程序计数寄存器和存储多个线程标识符中的每一线程标识符的有效状态或暂停状态的线程状态寄存器;执行队列,其耦合到线程控制存储器;以及控制逻辑和线程选择电路,其耦合到执行队列,控制逻辑和线程选择电路用于将可用线程标识符指配到执行线程,当线程标识符具有有效状态时自动将线程标识符放置在执行队列中,以及在有效状态保持不变的持续时间内周期性地选择线程标识符以供处理器核心执行执行线程的指令,直到完成执行线程为止。
在另一代表性实施例中,一种处理器包括:处理器核心和耦合到处理器核心的核心控制电路,其中核心控制电路包括:线程控制存储器,其包括多个寄存器,多个寄存器包括存储多个线程标识符的线程标识符池寄存器、存储接收到的程序计数的程序计数寄存器和存储多个线程标识符中的每一线程标识符的有效状态或暂停状态的线程状态寄存器;执行队列,其耦合到线程控制存储器;以及控制逻辑和线程选择电路,其耦合到执行队列,控制逻辑和线程选择电路用于将可用线程标识符指配给执行线程,当线程标识符具有有效状态时自动将线程标识符放置在执行队列中,在有效状态保持不变的持续时间内周期性地选择线程标识符以供处理器核心执行执行线程的指令,以及当线程标识符具有暂停状态时通过不将线程标识符返回到执行队列来暂停线程执行。
在另一代表性实施例中,一种处理器包括:处理器核心和耦合到处理器核心的核心控制电路,其中核心控制电路包括:线程控制存储器,其包括多个寄存器,多个寄存器包括存储多个线程标识符的线程标识符池寄存器、线程状态寄存器、存储接收到的程序计数的程序计数寄存器、数据缓存和存储接收到的变量参数的通用寄存器;执行队列,其耦合到线程控制存储器;以及控制逻辑和线程选择电路,其耦合到执行队列,控制逻辑和线程选择电路用于将可用线程标识符指配给执行线程,自动将线程标识符放置在执行队列中,以及周期性地选择线程标识符以供处理器核心执行执行线程的指令。
在另一代表性实施例中,一种处理器包括:处理器核心,其用于执行多个指令;以及核心控制电路,其耦合到处理器核心,其中核心控制电路包括:互连网络接口,其可耦合到互连网络以接收工作描述符数据包、将接收到的工作描述符数据包解码成具有初始程序计数和任何接收到的变量参数的执行线程;线程控制存储器,其耦合到互连网络接口且包括多个寄存器,多个寄存器包括存储多个线程标识符的线程标识符池寄存器、线程状态寄存器、存储接收到的程序计数的程序计数寄存器、数据缓存和存储接收到的变量参数的通用寄存器;执行队列,其耦合到线程控制存储器;控制逻辑和线程选择电路,其耦合到执行队列和线程控制存储器,控制逻辑和线程选择电路用于将可用线程标识符指配给执行线程,将线程标识符放置在执行队列中,选择线程标识符以供执行,使用线程标识符作为索引来存取线程控制存储器从而选择执行线程的初始程序计数;以及指令缓存,其耦合到处理器核心及控制逻辑和线程选择电路,以接收初始程序计数并向处理器核心提供多个指令中用于执行的对应指令。
在另一代表性实施例中,一种处理器包括:核心控制电路,其包括:互连网络接口,其可耦合到互连网络以接收工作描述符数据包、将接收到的工作描述符数据包解码成具有初始程序计数和任何接收到的变量参数的执行线程;线程控制存储器,其耦合到互连网络接口且包括多个寄存器,多个寄存器包括存储多个线程标识符的线程标识符池寄存器、线程状态寄存器、存储接收到的程序计数的程序计数寄存器、数据缓存和存储接收到的变量参数的通用寄存器;执行队列,其耦合到线程控制存储器;控制逻辑和线程选择电路,其耦合到执行队列和线程控制存储器,控制逻辑和线程选择电路用于将可用线程标识符指配给执行线程,自动地将线程标识符放置在执行队列中,周期性地选择线程标识符以供执行,使用线程标识符作为索引来存取线程控制存储器从而选择执行线程的初始程序计数;以及指令缓存,其耦合到控制逻辑和线程选择电路以接收初始程序计数并提供对应指令以供执行;处理器另外还包括处理器核心,其耦合到核心控制电路的指令缓存,处理器核心用于执行对应指令。
在另一代表性实施例中,一种处理器包括:核心控制电路,其包括:互连网络接口,其可耦合到互连网络以接收工作描述符数据包、将接收到的工作描述符数据包解码成具有初始程序计数和任何接收到的变量参数的执行线程;线程控制存储器,其耦合到互连网络接口且包括多个寄存器,多个寄存器包括存储多个线程标识符的线程标识符池寄存器、线程状态寄存器、存储接收到的程序计数的程序计数寄存器和存储接收到的变量参数的通用寄存器;执行队列,其耦合到线程控制存储器;控制逻辑和线程选择电路,其耦合到执行队列和线程控制存储器,控制逻辑和线程选择电路用于将可用线程标识符指配给执行线程,将线程标识符放置在执行队列中,选择线程标识符以供执行,使用线程标识符作为索引来存取线程控制存储器从而选择执行线程的初始程序计数;指令缓存,其耦合到控制逻辑和线程选择电路以接收初始程序计数并提供对应指令以供执行;以及命令队列;处理器另外还包括处理器核心,其耦合到核心控制电路的指令缓存和命令队列,处理器核心用于执行对应指令。
在另一代表性实施例中,一种处理器包括:核心控制电路,其耦合到互连网络接口且包括:互连网络接口,其可耦合到互连网络以接收工作描述符数据包、将接收到的工作描述符数据包解码成具有初始程序计数和任何接收到的变量参数的执行线程;线程控制存储器,其耦合到互连网络接口且包括多个寄存器,多个寄存器包括存储多个线程标识符的线程标识符池寄存器、线程状态寄存器、存储接收到的程序计数的程序计数寄存器和存储接收到的变量参数的通用寄存器;执行队列,其耦合到线程控制存储器;控制逻辑和线程选择电路,其耦合到执行队列和线程控制存储器,控制逻辑和线程选择电路用于将可用线程标识符指配给执行线程,将线程标识符放置在执行队列中,选择线程标识符以供执行,使用线程标识符作为索引来存取线程控制存储器从而选择执行线程的初始程序计数;以及指令缓存,其耦合到控制逻辑和线程选择电路以接收初始程序计数并提供对应指令以供执行;处理器另外还包括处理器核心,其耦合到核心控制电路的指令缓存,处理器核心用于执行对应指令。
在另一代表性实施例中,一种处理器包括:核心控制电路,其包括:互连网络接口,其可耦合到互连网络以接收调用工作描述符数据包、将接收到的工作描述符数据包解码成具有初始程序计数和任何接收到的变量参数的执行线程并对工作描述符包进行编码以传输到其它处理元件;线程控制存储器,其耦合到互连网络接口且包括多个寄存器,多个寄存器包括存储多个线程标识符的线程标识符池寄存器、线程状态寄存器、存储接收到的程序计数的程序计数寄存器和存储接收到的变量参数的通用寄存器;执行队列,其耦合到线程控制存储器;网络响应存储器,其耦合到互连网络接口;控制逻辑和线程选择电路,其耦合到执行队列、线程控制存储器和指令缓存,控制逻辑和线程选择电路用于将可用线程标识符指配给执行线程,将线程标识符放置在执行队列中,选择线程标识符以供执行,使用线程标识符作为索引来存取线程控制存储器从而选择执行线程的初始程序计数;指令缓存,其耦合到控制逻辑和线程选择电路以接收初始程序计数并提供对应指令以供执行;以及命令队列,其存储一或多个命令以生成一或多个工作描述符包;处理器另外还包括处理器核心,其耦合到核心控制电路的指令缓存和命令队列,处理器核心用于执行对应指令。
对于各种代表性实施例中的任一者,核心控制电路可进一步包括:互连网络接口,其可耦合到互连网络,互连网络接口,其用于接收工作描述符数据包,以将接收到的工作描述符数据包解码成具有初始程序计数和任何接收到的变量参数的执行线程。对于各种代表性实施例中的任一者,互连网络接口可进一步用于接收事件数据包,以将接收到的事件数据包解码成事件标识符和任何接收到的变量参数。
对于各种代表性实施例中的任一者,核心控制电路可进一步包括:控制逻辑和线程选择电路,其耦合到互连网络接口,控制逻辑和线程选择电路用于将可用线程标识符指配给执行线程。
对于各种代表性实施例中的任一者,核心控制电路可进一步包括:线程控制存储器,其具有多个寄存器,其中多个寄存器包括呈任何选定组合形式的以下中的一或多个:存储多个线程标识符的线程标识符池寄存器;线程状态寄存器;存储接收到的初始程序计数的程序计数寄存器;存储接收到的变量参数的通用寄存器;未决纤程返回计数寄存器;返回变量参数缓冲器或寄存器;返回变量参数链表寄存器;自定义原子交易标识符寄存器;事件状态寄存器;事件掩码寄存器;以及数据缓存。
对于各种代表性实施例中的任一者,互连网络接口可进一步用于使用线程标识符作为线程控制存储器的索引在线程控制存储器中存储具有初始程序计数和任何接收到的变量参数的执行线程。
对于各种代表性实施例中的任一者,核心控制电路可进一步包括:控制逻辑和线程选择电路,其耦合到线程控制存储器和互连网络接口,控制逻辑和线程选择电路用于将可用线程标识符指配给执行线程。
对于各种代表性实施例中的任一者,核心控制电路可进一步包括:执行队列,其耦合到线程控制存储器,执行队列存储一或多个线程标识符。
对于各种代表性实施例中的任一者,核心控制电路可进一步包括:控制逻辑和线程选择电路,其耦合到执行队列、互连网络接口和线程控制存储器,控制逻辑和线程选择电路用于将可用线程标识符指配给执行线程,将线程标识符放置在执行队列中,选择线程标识符以供执行,以及使用线程标识符作为索引来存取线程控制存储器,从而选择执行线程的初始程序计数。
对于各种代表性实施例中的任一者,核心控制电路可进一步包括:指令缓存,其耦合到控制逻辑和线程选择电路以接收初始程序计数并提供对应指令以供执行。
在另一代表性实施例中,处理器可进一步包括:处理器核心,其耦合到核心控制电路的指令缓存,处理器核心用于执行对应指令。
对于各种代表性实施例中的任一者,核心控制电路可进一步用于将初始有效状态指配到执行线程。对于各种代表性实施例中的任一者,核心控制电路可进一步用于响应于处理器核心执行存储器加载指令而将暂停状态指配到执行线程。对于各种代表性实施例中的任一者,核心控制电路可进一步用于响应于处理器核心执行存储器存储指令而将暂停状态指配到执行线程。
对于各种代表性实施例中的任一者,核心控制电路可进一步用于响应于由处理器核心执行返回指令而结束选定线程的执行。对于各种代表性实施例中的任一者,核心控制电路可进一步用于响应于由处理器核心执行返回指令而将选定线程的对应线程标识符返回到线程标识符池寄存器。对于各种代表性实施例中的任一者,核心控制电路可进一步用于响应于处理器核心执行返回指令而清里以选定线程的对应线程标识符作索引的线程控制存储器的寄存器。
对于各种代表性实施例中的任一者,互连网络接口可进一步用于响应于处理器核心执行返回指令而生成返回工作描述符包。
对于各种代表性实施例中的任一者,核心控制电路可进一步包括:网络响应存储器。对于各种代表性实施例中的任一者,网络响应存储器可包括以下各项中的一或多个,以任何选定组合:存储器请求寄存器;线程标识符和交易标识符寄存器;请求缓存行索引寄存器;字节寄存器;以及通用寄存器索引和类型寄存器。
对于各种代表性实施例中的任一者,互连网络接口可用于生成点到点事件数据消息。对于各种代表性实施例中的任一者,互连网络接口可用于生成广播事件数据消息。
对于各种代表性实施例中的任一者,核心控制电路可进一步用于使用存储在事件掩码寄存器中的事件掩码以对接收到的事件数据包作出响应。对于各种代表性实施例中的任一者,核心控制电路可进一步用于确定对应于接收到的事件数据包的事件编号。对于各种代表性实施例中的任一者,核心控制电路可进一步用于响应于接收到的事件数据包而将线程标识符的状态从暂停变成有效以恢复对应执行线程的执行。对于各种代表性实施例中的任一者,核心控制电路可进一步用于响应于接收到的事件数据包的事件编号而将线程标识符的状态从暂停变成有效以恢复对应执行线程的执行。
对于各种代表性实施例中的任一者,控制逻辑和线程选择电路可进一步用于从执行队列连续选择下一线程标识符以用于执行对应执行线程的单个指令。对于各种代表性实施例中的任一者,控制逻辑和线程选择电路可进一步用于进行对多个线程标识符中来自执行队列的下一线程标识符的循环选择,分别用于执行对应执行线程的单个指令。对于各种代表性实施例中的任一者,控制逻辑和线程选择电路可进一步用于进行对多个线程标识符中来自执行队列的下一线程标识符的循环选择,分别用于执行对应执行线程的单个指令,直到完成执行线程为止。对于各种代表性实施例中的任一者,控制逻辑和线程选择电路可进一步用于进行对多个线程标识符中来自执行队列的下一线程标识符的桶选择,分别用于执行对应执行线程的单个指令。
对于各种代表性实施例中的任一者,控制逻辑和线程选择电路可进一步用于将有效状态或暂停状态指配到线程标识符。对于各种代表性实施例中的任一者,控制逻辑和线程选择电路可进一步用于将优先级状态指配到线程标识符。对于各种代表性实施例中的任一者,控制逻辑和线程选择电路可进一步用于在执行对应指令之后通过所指配的有效状态和所指配的优先级将对应线程标识符返回到执行队列。
对于各种代表性实施例中的任一者,核心控制电路可进一步包括:网络命令队列,其耦合到处理器核心。
对于各种代表性实施例中的任一者,互连网络接口可包括:输入队列;包解码器电路,其耦合到输入队列、控制逻辑和线程选择电路以及线程控制存储器;输出队列;以及包编码器电路,其耦合到输出队列、网络响应存储器和网络命令队列。
对于各种代表性实施例中的任一者,执行队列可进一步包括:第一优先级队列;以及第二优先级队列。对于各种代表性实施例中的任一者,控制逻辑和线程选择电路可进一步包括:线程选择控制电路系统,其耦合到执行队列,线程选择控制电路系统,其用于在第一频率下选择来自第一优先级队列的线程标识符并且在第二频率下选择来自第二优先级队列的线程标识符,第二频率低于第一频率。对于各种代表性实施例中的任一者,线程选择控制电路系统可用于从来自第一优先级队列的线程标识符的选择确定第二频率为跳过计数。
对于各种代表性实施例中的任一者,核心控制电路可进一步包括:数据路径控制电路系统,其用于控制第一互连网络上的存取大小。对于各种代表性实施例中的任一者,核心控制电路可进一步包括:数据路径控制电路系统,其用于响应于时间平均使用水平而增加或减小存储器加载存取大小。对于各种代表性实施例中的任一者,核心控制电路可进一步包括:数据路径控制电路系统,其用于响应于时间平均使用水平而增加或减小存储器存储存取大小。对于各种代表性实施例中的任一者,控制逻辑和线程选择电路可进一步用于将存储器加载存取请求的大小增加到对应于数据缓存的缓存行边界。
对于各种代表性实施例中的任一者,核心控制电路可进一步包括:系统调用电路系统,其用于生成到主机处理器的一或多个系统调用。对于各种代表性实施例中的任一者,系统调用电路系统可进一步包括:多个系统调用信用寄存器,其存储预定信用计数以在任何预定时间段中调变多个系统调用。
对于各种代表性实施例中的任一者,核心控制电路可进一步用于响应于来自主机处理器的请求,生成使互连网络接口的命令队列复制和传输来自线程控制存储器的对应于选定线程标识符的全部数据以监测线程状态的命令。
对于各种代表性实施例中的任一者,处理器核心可用于执行纤程创建指令以生成到用于互连网络接口的命令队列的一或多个命令,以生成到另一处理器核心或到混合线程组构电路的一或多个调用工作描述符包。对于各种代表性实施例中的任一者,核心控制电路可进一步用于响应于处理器核心执行纤程创建指令而在通用寄存器或返回变量参数寄存器中保留预定量的存储器空间。
对于各种代表性实施例中的任一者,响应于生成到另一处理器核心或到混合线程组构的一或多个调用工作描述符包,核心控制电路可用于将线程返回计数存储在线程返回寄存器中。对于各种代表性实施例中的任一者,响应于接收到返回数据包,核心控制电路可用于使存储在线程返回寄存器中的线程返回计数递减。对于各种代表性实施例中的任一者,响应于线程返回寄存器中的线程返回计数递减到零,核心控制电路可用于将对应线程标识符的暂停状态变成有效状态,以供随后执行线程返回指令来完成创建的纤程或线程。
对于各种代表性实施例中的任一者,处理器核心可用于执行等待或非等待纤程加入指令。对于各种代表性实施例中的任一者,处理器核心可用于执行纤程加入所有指令。
对于各种代表性实施例中的任一者,处理器核心可用于执行非缓存读取或加载指令以指定用于存储从存储器接收到的数据的通用寄存器。对于各种代表性实施例中的任一者,处理器核心可用于执行非缓存写入或存储指令以指定通用寄存器中的数据以供存储在供存储器中。
对于各种代表性实施例中的任一者,核心控制电路可用于将交易标识符指配到针对存储器的任何加载或存储请求,并使交易标识符与线程标识符相关。
对于各种代表性实施例中的任一者,处理器核心可用于执行第一线程优先级指令以将第一优先级指配到具有对应线程标识符的执行线程。对于各种代表性实施例中的任一者,处理器核心可用于执行第二线程优先级指令以将第二优先级指配到具有对应线程标识符的执行线程。
对于各种代表性实施例中的任一者,处理器核心可用于执行自定义原子返回指令以完成自定义原子操作的执行线程。对于各种代表性实施例中的任一者,结合存储器控制器,处理器核心可用于执行浮点原子存储器操作。对于各种代表性实施例中的任一者,结合存储器控制器,处理器核心可用于执行自定义原子存储器操作。
还公开一种指令的自调度执行的方法,其中一个代表性方法实施例包括:接收工作描述符数据包;以及响应于接收到的工作描述符数据包而自动调度指令以供执行。
还公开指令的自调度执行的另一方法,其中一个代表性方法实施例包括:接收事件数据包;以及响应于接收到的事件数据包而自动调度指令以供执行。
还公开一种第一处理元件生成多个执行线程以供第二处理元件进行的方法,其中一个代表性方法实施例包括:执行纤程创建指令;以及响应于纤程创建指令的执行,生成去往第二处理元件的一或多个工作描述符数据包以执行多个执行线程。
还公开一种第一处理元件生成多个执行线程以供第二处理元件进行的方法,其中一个代表性方法实施例包括:执行纤程创建指令;以及响应于执行纤程创建指令,在线程控制存储器中保留预定量的存储器空间以存储返回变量参数,并生成去往第二处理元件的一或多个工作描述符数据包以执行多个执行线程。
还公开一种指令的自调度执行的方法还公开一种指令的自调度执行的方法,其中一个代表性方法实施例包括:接收工作描述符数据包;将接收到的工作描述符数据包解码成具有初始程序计数和任何接收到的变量参数的执行线程;将可用线程标识符指配到执行线程;使线程标识符自动排队以执行执行线程;以及周期性地选择线程标识符以执行执行线程。
还公开指令的自调度执行的另一方法,其中一个代表性方法实施例包括:接收工作描述符数据包;将接收到的工作描述符数据包解码成具有初始程序计数和任何接收到的变量参数的执行线程;将可用线程标识符指配到执行线程;当线程标识符具有有效状态时,使线程标识符自动排队以执行执行线程;以及在有效状态保持不变的持续时间内周期性地选择线程标识符以执行执行线程的指令,直到完成执行线程为止。
还公开指令的自调度执行的另一方法,其中一个代表性方法实施例包括:接收工作描述符数据包;将接收到的工作描述符数据包解码成具有初始程序计数和任何接收到的变量参数的执行线程;将可用线程标识符指配到执行线程;当线程标识符具有有效状态时,使线程标识符在执行队列中自动排队以执行执行线程;以及在有效状态保持不变的持续时间内周期性地选择线程标识符以执行执行线程的指令;并且当线程标识符具有暂停状态时,通过不将线程标识符返回到执行队列来暂停线程执行。
还公开指令的自调度执行的另一方法,其中一个代表性方法实施例包括:接收工作描述符数据包;将接收到的工作描述符数据包解码成具有初始程序计数和任何接收到的变量参数的执行线程;将初始程序计数和任何接收到的变量参数存储在线程控制存储器中;将可用线程标识符指配到执行线程;当执行线程具有有效状态时,使线程标识符自动排队以执行执行线程;
使用线程标识符作为选择执行线程的初始程序计数的索引来存取线程控制存储器;以及只要有效状态保持不变,就周期性地选择线程标识符以用于执行执行线程的指令直到完成执行线程为止。
对于各种代表性实施例中的任一者,方法可进一步包括:接收事件数据包;以及将接收到的事件数据包解码成事件标识符和任何接收到的变量参数。
对于各种代表性实施例中的任一者,方法可进一步包括:将初始有效状态指配到执行线程。
对于各种代表性实施例中的任一者,方法可进一步包括:响应于存储器加载指令的执行而将暂停状态指配到执行线程。对于各种代表性实施例中的任一者,方法可进一步包括:响应于存储器存储指令的执行而将暂停状态指配到执行线程。
对于各种代表性实施例中的任一者,方法可进一步包括:响应于返回指令的执行而终止选定线程的执行。对于各种代表性实施例中的任一者,方法可进一步包括:响应于返回指令的执行而将选定线程的对应线程标识符返回到线程标识符池。对于各种代表性实施例中的任一者,方法可进一步包括:响应于返回指令的执行而清理以选定线程的对应线程标识符作索引的线程控制存储器的寄存器。对于各种代表性实施例中的任一者,方法可进一步包括:响应于返回指令的执行而生成返回工作描述符包。
对于各种代表性实施例中的任一者,方法可进一步包括:生成点到点事件数据消息。对于各种代表性实施例中的任一者,方法可进一步包括:生成广播事件数据消息。
对于各种代表性实施例中的任一者,方法可进一步包括:使用事件掩码以对接收到的事件数据包作出响应。对于各种代表性实施例中的任一者,方法可进一步包括:确定对应于接收到的事件数据包的事件编号。对于各种代表性实施例中的任一者,方法可进一步包括:响应于接收到的事件数据包而将线程标识符的状态从暂停变成有效以恢复对应执行线程的执行。对于各种代表性实施例中的任一者,方法可进一步包括:响应于接收到的事件数据包的事件编号而将线程标识符的状态从暂停变成有效以恢复对应执行线程的执行。
对于各种代表性实施例中的任一者,方法可进一步包括:从执行队列连续选择下一线程标识符以用于执行对应执行线程的单个指令。对于各种代表性实施例中的任一者,方法可进一步包括:进行对多个线程标识符中来自执行队列的下一线程标识符的循环选择,分别用于执行对应执行线程的单个指令。对于各种代表性实施例中的任一者,控制逻辑和线程选择电路可进一步包括:进行对多个线程标识符中来自执行队列的下一线程标识符的循环选择,分别用于执行对应执行线程的单个指令,直到完成执行线程为止。对于各种代表性实施例中的任一者,方法可进一步包括:进行对多个线程标识符中来自执行队列的下一线程标识符的桶选择,分别用于执行对应执行线程的单个指令。
对于各种代表性实施例中的任一者,方法可进一步包括:将有效状态或暂停状态指配到线程标识符。对于各种代表性实施例中的任一者,方法可进一步包括:将优先级状态指配到线程标识符。
对于各种代表性实施例中的任一者,方法可进一步包括:在执行对应指令之后,将具有经指配的有效状态和经指配的优先级的对应线程标识符返回到执行队列。
对于各种代表性实施例中的任一者,方法可进一步包括:在第一频率下选择来自第一优先级队列的线程标识符,并且在第二频率下选择来自第二优先级队列的线程标识符,第二频率低于第一频率。对于各种代表性实施例中的任一者,方法可进一步包括:从来自第一优先级队列的线程标识符的选择确定第二频率为跳过计数。
对于各种代表性实施例中的任一者,方法可进一步包括:控制数据路径存取大小。对于各种代表性实施例中的任一者,方法可进一步包括:响应于时间平均使用水平而增加或减少存储器加载存取大小。对于各种代表性实施例中的任一者,方法可进一步包括:响应于时间平均使用水平而增加或减少存储器存储存取大小。对于各种代表性实施例中的任一者,方法可进一步包括:将存储器加载存取请求的大小增加到对应于数据缓存的缓存行边界。
对于各种代表性实施例中的任一者,方法可进一步包括:生成到主机处理器的一或多个系统调用。对于各种代表性实施例中的任一者,方法可进一步包括:使用预定信用计数,在任何预定时间段中调变多个系统调用。
对于各种代表性实施例中的任一者,方法可进一步包括:响应于来自主机处理器的请求,复制和传输来自线程控制存储器的对应于选定线程标识符的全部数据以监测线程状态。
对于各种代表性实施例中的任一者,方法可进一步包括:执行纤程创建指令以生成一或多个命令,以生成到另一处理器核心或到混合线程组构电路的一或多个调用工作描述符包。对于各种代表性实施例中的任一者,方法可进一步包括:响应于纤程创建指令的执行,保留预定量的存储器空间以用于存储任何返回变量参数。对于各种代表性实施例中的任一者,方法可进一步包括:响应于一或多个调用工作描述符包的生成,在线程返回寄存器中存储线程返回计数。对于各种代表性实施例中的任一者,方法可进一步包括:响应于接收到返回数据包,递减存储在线程返回寄存器中的线程返回计数。对于各种代表性实施例中的任一者,方法可进一步包括:响应于线程返回寄存器中的线程返回计数递减到零,将对应线程标识符的暂停状态变成有效状态,以供随后执行线程返回指令来完成创建的纤程或线程。
对于各种代表性实施例中的任一者,方法可进一步包括:执行等待或非等待纤程加入指令。对于各种代表性实施例中的任一者,方法可进一步包括:执行纤程加入所有指令。
对于各种代表性实施例中的任一者,方法可进一步包括:执行非缓存读取或加载指令,以指定用于存储从存储器接收到的数据的通用寄存器。
对于各种代表性实施例中的任一者,方法可进一步包括:执行非缓存写入或存储指令,以指定通用寄存器中的数据以供存储在存储器中。
对于各种代表性实施例中的任一者,方法可进一步包括:将交易标识符指配到针对存储器的任何加载或存储请求,并使交易标识符与线程标识符相关。
对于各种代表性实施例中的任一者,方法可进一步包括:执行第一线程优先级指令以将第一优先级指配到具有对应线程标识符的执行线程。对于各种代表性实施例中的任一者,方法可进一步包括:执行第二线程优先级指令以将第二优先级指配到具有对应线程标识符的执行线程。
对于各种代表性实施例中的任一者,方法可进一步包括:执行自定义原子返回指令以完成自定义原子操作的执行线程。
对于各种代表性实施例中的任一者,方法可进一步包括:执行浮点原子存储器操作。
对于各种代表性实施例中的任一者,方法可进一步包括:执行自定义原子存储器操作。
根据本发明的以下详细描述和其实施例、根据权利要求书以及根据附图,本发明的大量其它优点和特征将变的显而易见。
附图说明
当结合附图考虑以下公开内容时,将更容易理解本发明的目标、特征和优点,附图中相似的参考标号用于在各图中表示相同的组件,并且附图中带有字母符号的参考标号用于在各图中表示选定组件实施例的额外类型、示例或变化,其中:
图1是混合计算系统的代表性第一实施例的框图。
图2是混合计算系统的代表性第二实施例的框图。
图3是混合计算系统的代表性第三实施例的框图。
图4是混合线程组构电路群的代表性实施例的一部分的高级框图。
图5是混合线程处理器300的代表性实施例的高级框图。
图6是混合线程处理器的线程存储器的代表性实施例的详细框图。
图7是混合线程处理器的网络响应存储器的代表性实施例的详细框图。
图8是混合线程处理器的代表性实施例的详细框图。
图9A和9B(统称为图9)是用于混合线程处理器的自调度和线程控制的方法的代表性实施例的流程图。
图10是混合线程处理器的控制逻辑和线程选择电路系统的线程选择控制电路系统的代表性实施例的详细框图。
图11是第一互连网络的一部分的代表性实施例和代表性数据包的框图。
图12是混合线程处理器的数据路径控制电路系统的代表性实施例的详细框图。
图13是混合线程处理器的系统调用电路系统以及主机接口电路系统的代表性实施例的详细框图。
具体实施方式
虽然本发明容许许多不同形式的实施例,但在理解本公开将被视为本发明的原理的范例且并不希望将本发明限制于所示出的具体实施例的情况下,在图式中示出且将在本文中详细地描述本发明的具体示范性实施例。在这方面,在详细解释根据本发明的至少一个实施例之前,应理解,本发明不限于应用于上文和下文阐述、图式中示出或者示例中描述的构造细节以及组件布置。根据本发明的方法和设备能够有其它实施例并且能够以各种方式实践和执行。并且,应理解,本文中采用的措词和术语以及下面包含的摘要,是出于描述的目的并且不应当被看作是限制性的。
图1、2和3是混合计算系统100A、100B、100C(统称为系统100)的代表性第一、第二和第三实施例的框图。图4是具有第二互连网络250的混合线程组构电路群205的代表性实施例的一部分的高级框图。图5是混合线程处理器(“HTP”)300的代表性实施例的高级框图。图6是HTP 300的线程存储器320(还等效地称为线程控制存储器320或线程上下文存储器320)的代表性实施例的详细框图。图7是HTP 300的网络响应存储器325的代表性实施例的详细框图。图8是HTP 300的代表性实施例的详细框图。图9是用于HTP 300的自调度和线程控制的方法的代表性实施例的流程图。
参考图1-9,混合计算系统100包含混合线程处理器(“HTP”)300,其通过第一互连网络150耦合到一或多个混合线程组构(“HTF”)电路200。应理解,如本文中所使用,术语“组构”是指并包含计算电路阵列,其在此情况下是可重新配置的计算电路。图1、2和3示出不同系统100A、100B和100C布置,其包含形成相对较大和较小系统100的额外组件,其中任何和所有组件均在本公开的范围内。如在图1和2中所示,其各自可为适用于例如但不限于芯片上系统(“SOC”)的布置,在如所说明的各种组合中,混合计算系统100A、100B任选地还可包含可耦合到存储器125的存储器控制器120(其还可为单独集成电路)、各种通信接口130(例如PCIe通信接口)中的任一者、一或多个主机处理器110和主机接口(“HIF”)115。如图3所示,其各自可为适用于例如但不限于共同衬底101上的“小芯片”配置的布置,混合计算系统100C任选地还可包含具有或不具有这些其它组件的通信接口130。任何和所有这些布置在本公开的范围内,且在本文中统称为系统100。这些混合计算系统100中的任一者还可被视为“节点”,其在单一操作系统(“OS”)下操作,并且还可耦合到其它这类本地和远程节点。
如本文中所使用,混合线程化是指跨不同的异构类型的处理电路(硬件),例如跨HTF电路200(如可重新配置的计算组构)和跨处理器,例如HTP 300或另一类型的RISC-V处理器引发多个计算纤程和线程的能力。混合线程化还指其中工作线程从一个计算元件转变到下一个计算元件以将计算移动到数据所在处的编程语言/风格,其还实施于代表性实施例中。主机处理器110通常是多核心处理器,其可嵌入于混合计算系统100内,或可为经由通信接口130(例如基于PCIe的接口)耦合到混合计算系统100中的外部主机处理器。下文更详细地描述这些处理器,例如HTP 300和一或多个主机处理器110。
可以在电子领域中已知或将变得已知的方式实施存储器控制器120。替代地,在代表性实施例中,可如相关申请案中所描述地实施存储器控制器120。还可以在电子领域中已知或将变得已知并且如下文更详细地描述的方式实施第一存储器125。
还在代表性实施例中,HTP 300是基于RISC-V ISA的多线程处理器,其具有包括扩展式指令集的处理器核心305,并且具有一或多个核心控制电路310和一或多个第二存储器315(被称为核心控制存储器315),如下文更详细地论述。一般来说,HTP 300提供桶式循环瞬时线程交换以维持每时钟指令率为高。
出于本文中的目的,HIF 115使得主机处理器110将工作发送到HTP 300和HTF电路200,且HTP 300将工作发送到HTF电路200,两者均是在第一互连网络150上发射的“工作描述符包”。提供统一机制开始和结束HTP 300和HTF电路200上的工作:利用调用工作描述符包开始HTP 300和HTF电路200上的工作,并且利用返回工作描述符包结束HTP 300和HTF电路200上的工作。HIF 115包含调度电路和队列(简称为“调度队列”105),其还提供管理用于监测提供给HTF电路200和/或HTP 300的加载以及HTF电路200和/或HTP 300的资源可用性的功能性。当HTF电路200和/或HTP 300上的资源可用时,调度队列105确定最少加载的HTF电路200和/或HTP 300资源。在具有相同或类似工作加载的多个HTF电路群205的情况下,如果可能的话,选择目前正在执行相同内核的HTF电路群205(以避免必须加载或重新加载内核配置)。HIF 115的类似功能性也可包含在HTP 300中,举例来说,尤其是对于可不包含单独HIF 115的系统100布置。下文更详细地描述其它HIF 115功能。可以在电子领域中已知或将变得已知的方式实施HIF 115,例如实施为一或多个具有寄存器的状态机(形成FIFO、队列等)。
第一互连网络150是基于包的通信网络,其提供HTF电路200、混合线程处理器300和其它任选组件(例如存储器控制器120、通信接口130和主机处理器110)之间和当中的数据包路由。第一互连网络150通常实现为具有折叠式克劳斯配置的多个交叉开关,且通常是用于额外连接的网状网络,这取决于系统100实施例。出于本公开的目的,第一互连网络150形成异步交换组构(“AF”)的部分,这意味着可沿着各种路径中的任一者路由数据包,使得任何所选数据包可在多个不同时间中的任一者到达定址的目的地,这取决于路由。这与下文更详细地论述的第二互连网络250的同步网状通信网络275形成对比。在下文参考图10和11更详细地论述第一互连网络150的方面。
HTF电路200又通常包括多个HTF电路群205,其中每一HTF电路群205耦合到第一互连网络150以用于数据包通信。每一HTF电路群205可独立于其它HTF电路群205中的每一个地操作。每一HTF电路群205又包括多个HTF可重新配置计算电路210的阵列(其在本文中等效地称为“拼片”210),以及第二互连网络250。拼片210嵌入于第二互连网络250中或以其它方式耦合到第二互连网络250,所述第二互连网络包括两种不同类型的网络,如在相关申请案中所论述。作为概述,HTF电路200是包括互连计算拼片210以用于执行多个不同计算操作的粗粒度可重新配置计算组构。
HTP 300是桶式多线程处理器,其被设计成在各应用程序中以作用于稀疏数据集的高并行性程度表现良好(即,应用程序具有最低程度的数据重复使用)。HTP 300是基于开放源RISC-V处理器,并在用户模式中执行。HTP 300包含更多RISC-V用户模式指令,加上允许线程管理、发送和接收去往/来自其它HTP 300、HTF电路200和一或多个主机处理器110的事件的一组自定义指令,以及用于高效存取存储器125的指令。
处理器核心305具有相关联高速缓冲存储器,例如说明为核心控制存储器315的部分或可布置在处理器核心305内部和/或含于处理器核心305内(不单独地说明)的数据缓存346。这类缓存346通常用于存储将重复使用的数据,使得可从缓存提取所述数据并且不需要对存储器125的存储器加载操作。然而,多个应用程序重复使用极少数据,且应用程序通常需要对存储器125的一或多个存储器加载操作。由于未来不重复使用所述数据,因此在代表性实施例中,保持于与处理器核心305相关联的这类缓存346中的数据在存储器加载操作期间将不被逐出或不被从存储器125提取的数据覆写,如下文更详细地论述,而是出于潜在重复使用目的将在缓存中保持可用。
因而,稀疏数据集通常致使不佳缓存命中率。每HTP处理器核心305具有多个线程的HTP 300允许一些线程在其它线程继续执行指令的同时等待来自存储器125的响应。此计算风格容许对存储器125的时延并允许每时钟执行指令数持续为高。事件机制允许来自多个HTP核心305的线程以高效方式传送。线程在等待存储器125响应或事件消息时暂停执行指令,从而允许其它线程使用指令执行资源。HTP 300是自调度且事件驱动的,从而允许线程高效地创建、破坏和与其它线程通信。
工作描述符包用于开始HTP 300和HTF电路200上的工作。通过HTP 300接收工作描述符包构成如下“事件”:在HTP 300中将触发基于硬件的自调度和相关联功能或工作的后续执行(被称为线程执行),且不需要进一步存取主存储器125。一旦线程开始,就一直执行指令到执行线程返回指令。线程返回指令将返回工作描述符包发送到原始调用器。
出于本公开的目的,在高层级或一般层级,工作描述符包包含(例如但不限于)初始化用于HTP 300的线程上下文所需的信息(例如在所存储指令(存储于指令缓存340中)中开始线程执行的程序计数(例如,64位地址)),以及第一存储器125中的用以获得变量参数或将在线程执行中使用的其它信息的任何变量参数或地址,以及用于传输计算结果的返回地址。可存在多种不同类别的工作描述符包,这取决于将进行的操作或指令,在下文说明和论述多个示例。已在任何执行之前例如在初始系统100配置中,填充指令缓存340。
因此,在许多情况下,HTP 300允许创建线程并且在无需单一存取主存储器125的情况下开始执行。此“轻量”线程创建允许当以最小延迟和极低时延进入应用程序的并行区时创建多个线程,这与现有技术计算架构形成鲜明对比,在现有技术计算架构中,通过以下操作完成线程创建:初始化硬件中的小(64B)工作描述符包,接着将所述包发送到将在其中开始线程的目的地HTP 300。接收HTP 300会获取所述包并且从工作描述符包初始化线程的硬件上下文。所述线程是立即开始的执行指令。如上文所提及,工作描述符包仅含有其中即将开始执行的指令PC以及某一数目的调用变量参数(例如,至多四个)。接收HTP 300会自主初始化线程上下文状态的剩余部分以准备开始线程执行指令。
执行线程具有存储器堆叠空间和主存储器125上下文空间。上下文空间仅在线程的状态需要写入到将被主机处理器110存取的存储器125时使用。通过核心堆叠基地址和核心上下文基地址初始化每一HTP 300,其中基地址指向堆叠块和上下文空间块。通过取得核心堆叠基地址并且添加乘以线程堆叠大小的线程ID来获得线程堆叠基地址。以类似方式获得线程上下文基地址。
HTP 300通常包括一或多个处理器核心305,其可为任何类型的处理器核心,例如RISC-V处理器核心、ARM处理器核心等,这全都是举例而不具有限制性。核心控制电路310和核心控制存储器315提供用于每个处理器核心305,并且在图5中针对一个处理器核心305说明。举例来说,当例如在一或多个HTP 300中实施多个处理器核心305时,还实施对应的多个核心控制电路310和核心控制存储器315,其中每个核心控制电路310和核心控制存储器315用于控制对应处理器核心305。另外,HTP 300中的一或多个还可包含数据路径控制电路系统395,其用于控制第一互连网络150上的存取大小(例如,存储器125的加载请求)以管理数据路径的潜在拥塞。
核心控制电路310又包括控制逻辑和线程选择电路系统330和网络接口电路系统335。核心控制存储器315包括多个寄存器或其它存储器电路,在概念上划分且在本文中称为线程存储器(或线程控制存储器)320和网络响应存储器325。例如但不限于,线程存储器320包含多个寄存器,用于存储与线程状态和执行有关的信息,而网络响应存储器325包含多个寄存器,用于存储与在第一互连网络150上传输到第一存储器125和从第一存储器125传输的数据包有关的信息,例如针对第一存储器125的读取或存储数据的请求。
参考图6,线程存储器320包含多个寄存器,包含:线程ID池寄存器322(例如但不限于存储可利用的且通常在系统100经配置时例如针对总共32个线程ID用标识号0到31填充的预定数目个线程ID);线程状态(表格)寄存器324(存储线程信息,例如有效、空闲、暂停、等待指令、第一(正常)优先级、第二(低)优先级、在资源不可用时优先级的临时改变);程序计数器寄存器326(例如,存储在指令缓存340中线程接下来开始的地址或虚拟地址);通用寄存器328,用于存储整数和浮点数据;未决纤程返回计数寄存器332(跟踪将返回以完成执行的未决线程的数目);返回变量参数缓冲器334(“RAB”,例如作为具有返回变量参数缓冲器的链表的标头的标头RAB);线程返回寄存器336(例如,存储返回地址、调用标识符、与调用线程相关联的任何线程标识符);自定义原子交易标识符寄存器338;事件已接收掩码寄存器342(用于指定要“收听”哪些事件,如下文更详细地论述);事件状态寄存器344;和数据缓存346(通常为每一线程提供高速缓冲存储器的4-8个缓存行)。线程存储器320的所有不同寄存器都使用给定或选定线程的经指配线程ID来编索引。
参考图7,网络响应存储器325包含多个寄存器,例如存储器请求(或命令)寄存器348(例如,读取、写入或进行自定义原子操作的命令);线程ID和交易标识符(“交易ID”)寄存器352(其中交易ID用于跟踪针对存储器的任何请求,并使每个此类交易ID与生成针对存储器125的请求的线程的线程ID相关联);请求缓存行索引寄存器354(用于指定当从给定线程(线程ID)的存储器接收到数据时要写入数据缓存346中的哪一缓存行);寄存器字节寄存器356(指定写入到通用寄存器328的字节的数目);和通用寄存器索引和类型寄存器358(指示要写入哪一通用寄存器328,以及其为符号扩展还是浮点)。
如下文更详细地描述,HTP 300将接收工作描述符包。作为响应,HTP 300将找到空闲或空上下文并且初始化上下文块,在线程ID可用的情况下为所述执行线程(在本文中通常称为“线程”)指配线程ID,并且将所述线程ID置于执行(即,“准备好运行”)队列345。执行(准备好运行)队列345中的线程针对执行进行选择,通常是在循环或“桶”式选择过程中,其中将用于第一线程的单一指令提供给处理器核心305的执行管线350,随后将用于第二线程的单一指令提供给执行管线350,随后将用于第三线程的单一指令提供给执行管线350,随后将用于下一线程的单一指令提供给执行管线350等,直到执行(准备好运行)队列345中的所有线程均已具有提供给执行管线350的对应指令,此时,线程选择针对以下情况而再次开始:用于执行(准备好运行)队列345的第一线程的下一指令提供给执行管线350,随后用于第二线程的下一指令提供给执行管线350等,以此循环通过执行(准备好运行)队列345的所有线程。此执行将针对每一这类线程继续直到例如通过执行线程返回指令已完成用于所述线程的执行,此时,响应包(具有所述线程执行的结果)发射回到工作描述符包的来源,即,发射回到工作描述符调用包的来源。另外,在代表性实施例中并且如下文更详细地论述,任选地为执行(准备好运行)队列345提供不同水平的优先权,说明为第一优先级队列355和第二(较低)优先级队列360,其中第一优先级队列355中的线程的执行比第二(较低)优先级队列360中的线程执行更频繁地发生。
因此,HTP 300是“事件驱动型”处理器,并且在接收到工作描述符包后将自动开始线程执行(条件是线程ID是可用的,但不具有起始若执行的任何其它要求),即,工作描述符包的到达自动触发本地线程执行的开始,而不用参考存储器125或针对存储器125的额外请求。这极为有用,因为并行开始执行许多线程(例如数千线程)的响应时间相当低。HTP 300将继续线程执行,直到线程执行完成为止,或者等待响应,在响应时,线程将进入“暂停”状态,如下文更详细地论述。下文更详细地论述数个不同暂停状态。在接收到所述响应之后,线程返回到活动状态,在活动状态中线程恢复执行,其中其线程ID返回到执行(准备好运行)队列345。结合存储在线程存储器320中的线程状态信息,通过控制逻辑和线程选择电路系统330用硬件进行对此线程执行的控制。
除了主机处理器110生成工作描述符包之外,HTP 300也可生成和传输工作描述符包以在另一计算资源(例如,另一HTP 300或任何HTF电路200)上将工作作为一或多个计算线程来起始。这类工作描述符包是“调用”工作描述符包,并且大体上包括正在生成调用工作描述符包的主机处理器110或HTP 300的源标识符或地址、用于标识返回或使返回与原始调用相关的线程ID(例如,16位调用标识符(ID))、64位虚拟内核地址(作为程序计数,用于定位第一指令以开始执行线程,通常保存在HTP 300(或HTF电路200)的指令缓存340中,其还可为虚拟地址空间),以及一或多个调用变量参数(例如,最多四个调用变量参数)。
类似地,当线程已经完成时,HTP 300或HTF电路200生成另一工作描述符包,被称为“返回”工作描述符包,其大体上在HTP 300或HTF电路200执行线程的最后指令(被称为返回指令)时创建,其中返回工作描述符包由包编码器380汇编,如下文论述。返回包将寻址回到源(使用在调用工作描述符包中提供的标识符或地址)、来自调用工作描述符包的线程ID(或调用ID)(以允许源使返回与发出的调用相关,特别是在多个调用已经由源生成且同时未决时),以及一或多个返回值(作为结果),例如最多四个返回值。
图8是HTP 300的代表性实施例的详细框图。为易于说明和论述,应注意,在图8中并未说明线程存储器320和网络响应存储器325的全部寄存器。参考图8,核心控制电路310包括控制逻辑和线程选择电路系统330和网络接口电路系统335。控制逻辑和线程选择电路系统330包括例如但不限于使用多个各种逻辑门(例如,NAND、NOR、AND、OR、EXCLUSIVE OR等)和各种状态机电路(控制逻辑331)中的任一者的组合形成的电路系统,以及多路复用器(例如,输入多路复用器387、线程选择多路复用器385)。网络接口电路系统335包含AF输入队列365,其从第一互连网络150接收数据包(包含工作描述符包);AF输出队列370,其将数据包(包含工作描述符包)传送到第一互连网络150;数据包解码器电路375,其解码来自第一互连网络150的传入数据包,获取数据(在指定字段中)并且将提供于所述包中的数据传送到线程存储器320和网络响应存储器325的相关寄存器(结合通过控制逻辑和线程选择电路系统330指配给线程的线程ID,如下文更详细地论述,所述线程ID还提供或形成线程存储器320的索引);和数据包编码器电路380,其编码传出数据包(例如对存储器125的请求,使用来自线程ID和交易标识符(“交易ID”)寄存器352的交易ID)以供在第一互连网络150上发射。数据包解码器电路375和数据包编码器电路380可各自实施为状态机或其它逻辑电路系统。
当工作描述符包到达时,控制逻辑和线程选择电路系统330从线程ID池寄存器322向工作描述符包的线程指配可用线程ID,其中经指配线程ID用作线程存储器320中的其它寄存器的索引,然后用来自工作描述符包的对应数据,通常是程序计数和一或多个变量参数,填充所述寄存器。例如但不限于,在准备开始线程执行指令时,控制逻辑和线程选择电路系统330自主地初始化线程上下文状态的剩余部分,例如加载数据缓存寄存器346并且加载线程返回寄存器336。又例如,执行线程具有主存储器堆叠空间和主存储器上下文空间。上下文空间只在线程的状态需要写入到将由主机存取的存储器时使用。每个HTP 300处理器核心305利用核心堆叠基地址和核心上下文基地址初始化,其中基地址指向堆叠块和上下文空间块。通过获取核心堆叠基地址并添加乘以线程堆叠大小的线程ID来获得线程堆叠基地址。以类似方式获得线程上下文基地址。
为所述线程ID提供有效状态(指示其准备好执行),并且将线程ID推送给执行(准备好运行)队列345的第一优先级队列355,这是由于通常为线程指配第一(或正常)优先权。控制逻辑和线程选择电路系统330的选择电路(例如多路复用器385)选择执行(准备好运行)队列345中的下一线程ID用作线程存储器320的索引(程序计数寄存器326和线程状态寄存器324),以从指令缓存340选择指令,接着将所述指令提供给执行管线350以供执行。执行管线接着执行所述指令。
在完成指令的执行时,在控制逻辑和线程选择电路系统330的控制下,取决于各种条件,相同三元组信息(线程ID、有效状态和优先权)可返回到执行(准备好运行)队列345,以用于针对循环执行继续选择。举例来说,如果用于选定线程ID的最后指令是返回指令(指示所述线程执行完成且正在提供返回数据包),那么控制逻辑和线程选择电路系统330将线程ID返回到线程ID池寄存器322中的可用线程ID池,从而可供另一不同线程使用。并且,举例来说,有效指示符可改变,例如变成暂停状态(例如此时,线程可正在等待从存储器125返回或写入到存储器125的信息或正在等待另一事件),且在此情况下,线程ID(现在具有暂停状态)在状态改变回到有效之前不返回到执行(准备好运行)队列345。
继续前一示例,当选定线程ID的最后指令是返回指令时,接着通过执行管线350将返回信息(线程ID和返回变量参数)推送给网络命令队列390,所述网络命令队列通常实施为先进先出(FIFO)。线程ID用作线程返回寄存器336的索引以获得返回信息,例如交易ID和源(调用器)地址(或其它标识符),然后包编码器电路(在第一互连网络150上)生成传出的返回数据包。
继续后一示例,线程的指令可为加载指令,即,对存储器125的读取请求,接着通过执行管线350将所述指令推送给网络命令队列390。包编码器电路接着生成具有对存储器125的请求(读取或写入请求)的传出数据包(在第一互连网络150上),包含所述请求的大小和经指配交易ID(来自线程ID和交易ID寄存器352,所述交易ID还用作网络响应存储器325的索引)、HTP 300的地址(如请求的信息的返回地址)。当随后从第一互连网络150接收到包并且所述包经解码时,交易ID用作网络响应存储器325的索引,获得做出所述请求的线程的线程ID,还提供数据缓存346中的写入在响应中返回的数据的方位,交易ID接着返回到线程ID和交易ID寄存器352以供重复使用,且将对应线程ID的状态再次设置为有效的并且将线程ID再次推送到执行(准备好运行)队列345,以恢复执行。
类似地执行对存储器125的存储请求,其中传出包还具有将写入到存储器125的数据、经指配交易ID、HTP 300的源地址,且返回包是具有交易ID的应答。交易ID接着还返回到线程ID和交易ID寄存器352以供重复使用,且将对应线程ID的状态再次设置为有效的并且将线程ID再次推送给执行(准备好运行)队列345,以恢复执行。
图9是用于HTP 300的自调度和线程控制的方法的代表性实施例的流程图,其提供有用概述,其中HTP 300已被填充指令缓存340中的指令和线程标识符池寄存器322中的预定数目个线程ID。方法在步骤400,在接收到工作描述符包后即刻开始。在步骤402,将工作描述符包解码,并且在步骤404,将工作描述符包中接收到的信息填入线程存储器320的各个寄存器,从而初始化上下文块。当在步骤406,线程ID可用时,在步骤408,指配线程ID(且如果在步骤406中线程ID不可用,那么在步骤410,线程将等待直到线程ID变成可用)。在步骤412,最初将有效状态指配给线程(与任何最初指配的优先权(例如第一或第二优先权)一起),且在步骤414,将线程ID提供给执行(准备好运行)队列345。接着在步骤416,针对执行来选择执行(准备好运行)队列345中的线程ID(以预定频率,在下文更详细地论述)。在步骤418,使用线程ID,存取线程存储器320,并且获得程序计数(或地址)。在步骤420,从指令缓存340获得对应于程序计数(或地址)的指令并且将所述指令提供给执行管线350以供执行。
当在步骤422,线程执行完成时,即,当正在被执行的指令是返回指令时,在步骤424,将线程ID返回到线程ID池寄存器322以供另一线程重复使用,在步骤426,(任选地)可清理与线程ID相关联的线程存储器320的寄存器,并在返回步骤434,用于所述线程的线程控制可结束。当在步骤422中线程执行未完成时,并且当在步骤428,线程状态保持有效时,将线程ID(以及其有效状态和优先级)返回到执行(准备好运行)队列345,返回到步骤414以继续执行。当在步骤428中线程状态不再有效(即,线程暂停)时,其中在线程存储器320中指示所述线程ID的暂停状态,在步骤430,暂停所述线程的执行,直到在步骤432,所述线程ID的状态返回到有效并且线程ID(以及其有效状态和优先级)返回到执行(准备好运行)队列345,返回到步骤414以继续执行。
类似地,HTP 300可生成调用,以便在本地或远程计算元件上创建线程,从而在其它HTP 300或HTF电路200上创建线程。此类调用还创建作为传出数据包,且更确切地说,作为第一互连网络150上的传出工作描述符包。举例来说,正在被执行的当前线程的指令可为“纤程创建”指令(在指令缓存340中存储为可能指令),以使多个线程在各个计算资源上执行。如下文更详细地论述,此类纤程创建指令指定(使用地址或虚拟地址(节点标识符))什么计算资源将执行线程,并且还将提供相关联的变量参数。当在执行管线350中执行纤程创建指令时,纤程创建命令被推送到网络命令队列390中,并且在执行管线350中执行下一指令。命令被拉出网络命令队列390,并且包编码器电路380具有创建和向指定目的地HTF 200或HTP 300发送工作描述符包所需要的信息。
如果创建的线程将具有返回变量参数,那么此类指令例如在返回变量参数缓冲器334中还将分配和保留相关联的存储器空间。如果返回变量参数缓冲器334中的空间不够,那么指令将一直暂停到返回变量参数缓冲器334可用为止。创建的纤程或线程的数目只受保存响应变量参数的空间量限制。创建的不具有返回变量参数的线程可免去保留返回变量参数空间,从而避免可能的暂停状态。此机制确保来自已完成线程的返回始终有位置存储其变量参数。当返回作为第一互连网络150上的数据包回到HTP 300时,解码那些包,如上文所论述,其中返回数据存储在线程存储器320的返回变量参数缓冲器334中的相关联经保留空间中,所述空间以与纤程创建指令相关联的线程ID作索引。因为许多寄存器都可用于返回变量参数,所以可提供返回变量参数缓冲器334作为所有经创建线程的链表或为所述线程ID分配的返回变量参数缓冲器或寄存器。值得注意的是,此机制可使得有可能极其快速地创建数千个线程,从而有效地最小化从单个线程执行转变到高线程计数并行所涉及的时间。
如下文更详细地论述,利用各种类型的纤程加入指令来确定所有经创建线程何时完成,并且可为具有或不具有等待的指令。经创建线程的数目的计数保存在未决纤程返回计数寄存器332中,所述计数在HTP 300接收线程返回时递减。加入操作可通过将返回复制到与经创建线程ID相关联的寄存器中来实施。如果加入指令是等待指令,那么其将保持处于暂停状态,直到指定经创建线程的线程ID的返回到达为止。在这期间,其它指令由执行管线350执行,直到加入指令的暂停状态变成有效状态且加入指令返回到执行(准备好运行)队列345为止。
线程返回指令还可用作纤程创建指令之后的指令,而不是加入指令。当未决纤程返回计数寄存器332中的计数达到零并且接收到最后线程返回数据包时,线程返回指令也可被执行,并且指示纤程创建操作已经完成且已接收到所有返回,从而允许释放线程ID、返回变量参数缓冲器334和链表以用于其它用途。另外,还可生成并向称为主要线程的源(例如,生成调用的源的标识符或地址)传输工作描述符返回包(例如,具有结果数据)。
加入全部指令不需要返回变量参数,只要使未决纤程返回计数寄存器332中的计数递减的确认即可。当所述计数达到零时,所述线程重新开始,因为全部加入现已完成。
需要处理元件之间的通信来促进并行算法的处理。代表性实施例提供一种用于一组处理资源的线程使用各个事件消息进行通信的高效装置,所述事件消息还可包含数据(例如变量参数或结果)。事件消息传递允许具有硬件维持缓存一致性的任何主机处理器110和具有软件维持缓存一致性的任何加速度处理器(例如HTP 300)高效地参与事件消息传递。
事件消息传递支持点对点和广播事件消息。每个处理资源(HTP 300)可确定接收到的事件操作完成以及应通知处理资源的时间。事件接收模式包含简单(单个接收到的事件完成操作)、收集(计数器用于确定已经接收到足够的事件来完成操作的时间)以及广播(在特定通道上接收到的事件完成事件)。另外,事件可与可选的64位数据值一起发送。
HTP 300具有由2位接收模式、16位计数器/通道号和64位事件数据值组成的一组事件接收状态,其存储在事件状态寄存器344中。HTP 300可针对每一线程上下文具有多组事件接收状态,其中每一组事件接收状态以事件编号作索引。因此,事件可针对特定线程(线程ID)和事件编号。发送的事件可为具有单个目的地线程的点到点消息,或者是发送到属于相同进程的一组处理资源内的所有线程的广播消息。当接收到此类事件时,可重新激活暂停或睡眠线程以恢复处理。
对事件状态寄存器344的这一使用比基于标准Linux的主机处理器高效得多,所述基于标准Linux的主机处理器可通过接口发送和接收事件,所述接口允许主机处理器110周期性地轮询完成的接收事件。等待事件消息的线程可暂停执行,直到接收操作完成为止,即,HTP 300可暂停执行接收事件的完成未决的线程,而不是因为轮询而浪费资源,从而允许其它线程在这些间隔期间执行。每个HTP 300还保存应参与接收事件以免发生进程安全性问题的处理资源的列表。
点到点消息将指定事件编号和目的地(例如,节点号、哪一HTP 300、哪一核心和哪一线程ID)。在接收侧,HTP 300将配置或编程有保存在事件状态寄存器344中的一或多个事件编号。如果所述HTP 300接收具有所述事件编号的事件信息,那么其被触发并从暂停状态转变到有效状态以恢复执行,例如执行事件已接收指令(例如,下文的EER)。接着,所述指令将确定是否接收到正确的事件编号,如果是,就将任何相关联的64位数据写入到通用寄存器328中以供另一指令使用。如果事件已接收指令执行并且未接收到正确的事件编号,那么其将一直暂停到接收到所述特定事件编号为止。
还可利用事件收听(EEL)指令,其中事件掩码存储在事件已接收掩码寄存器342中,指示将用于触发或唤醒线程的一或多个事件。当具有那些指定事件中的任一者的事件信息到达时,接收HTP 300将知晓触发的是哪一事件编号,例如,其它哪一进程可能已完成,并且将从那些已完成事件接收事件数据。事件收听指令还可具有等待和非等待变化,如下文更详细地论述。
对于处于收集模式中的事件消息传递,接收HTP 300将在触发之前收集(等待)一组接收事件,从而将事件状态寄存器344中的计数设置为所需要的值,所述值在接收到所需要的事件消息时递减,并且在计数递减到零时触发。
在广播模式中,发送器处理资源可将消息发射到节点内的任何线程。举例来说,发送HTP 300可将一系列点到点消息发射到节点内的每一其它HTP 300,且每一接收HTP 300接着将所述消息传送到每一内部核心305。每一核心控制电路310将通过其线程列表以确定其是否对应于已初始化为接收的事件编号,并且确定可能已在第一互连网络150上指定哪个通道。
当可并行执行数千个线程时,此广播模式特别有用,其中最后执行的线程发射指示完成的广播事件信息。举例来说,需要完成的所有线程的第一计数可维持在事件状态寄存器344中,而已经执行的所有线程的第二计数可维持在存储器125中。在每个线程执行时,还对第二计数进行提取和递增原子操作,例如通过存储器125的原子操作(并将其与第一计数比较),并且通过执行一直等到其接收广播消息的EER指令来将其模式设置成接收广播消息。最后执行的线程将第二计数的所提取值视为所需要的第一计数减去一,指示其为最后执行的线程,并且因此发送广播消息,这是一种极其快速和高效地指示大量并行处理完成的方式。
如上文所提及,虽然HTP 300可利用标准RISC-V指令,但提供显著扩展指令集以利用所有系统100计算资源,如下文更详细地论述。从主机处理器110创建的线程通常被称为主要线程,且从HTP 300创建的线程通常被称为纤程或纤程线程,其全部相同地在目的地HTP 300和HTF 200上执行,而不用通过存储器125。
加载指令:
HTP 300针对每一线程具有相当少的读取/写入缓冲器,也称为数据缓存寄存器346。缓冲器(数据缓存寄存器346)临时存储供自有线程使用的共享存储器数据。数据缓存寄存器346受硬件与软件的组合管理。在需要时,硬件自动分配缓冲器并收回数据。通过使用RISC-V指令,软件决定哪些数据应缓存(读取和写入数据),以及数据缓存寄存器346应何时无效(若干净或写回到存储器(若为脏)。RISC-V指令集提供FENCE指令,并且获取和释放原子指令上的指示符。
标准RISC-V加载指令自动使用读取数据缓存寄存器346。标准加载进行检查以确定所需数据是否在现有数据缓存寄存器346中。如果是,那么从数据缓存寄存器346获得数据,并且执行线程能够继续执行而不用暂停。如果所需数据不在数据缓存寄存器346中,那么HTP 300查找可用的数据缓存寄存器346(需要从缓冲器中收回数据),并且将64字节从存储器读取到数据缓存寄存器346中。执行线程一直暂停到存储器读取完成且加载数据写入到RISC-V寄存器中为止。
读取缓冲具有两个主要益处:1)对存储器控制器120的更大的存取更高效,和2)对缓冲器的存取允许执行线程不会停止。但是,存在缓冲器的使用产生问题的情境。示例是收集操作,其中存取通常会导致数据缓存寄存器346的颠簸(thrashing)。出于此原因,提供一组特殊加载指令,迫使加载指令检查缓存命中,但在缓存未命中时,仅对所请求的运算元发出存储器请求并且不将获得的数据置于数据缓存寄存器346中,而是将数据放置到一个通用寄存器328中。
针对频繁使用的数据相较于偶尔或很少使用的数据,这些加载指令基于预期存取频率提供“概率性”缓存。这与稀疏数据集一起使用时尤其重要,如果稀疏数据集放置到数据缓存寄存器346中,那么将同样将更频繁地覆写所需要的其它数据,这实际上污染了数据缓存寄存器346。加载指令(NB或NC)允许频繁使用的数据保持在数据缓存寄存器346中,而通常会缓存的非频繁使用(稀疏)的数据实际上指定成在通用寄存器328中进行非缓存存储。
这种类型的指令具有NB后缀(非缓冲)或同等地,NC后缀(非缓存):
LB.NB RA,40(SP)。
NB(NC)加载指令预期用于写入程序集中的运行库。
在表1中,以下加载指令添加为32位指令,其中Imm是立即字段,RA是寄存器名称,rs1是源索引,rd是目的地索引,且字段14-12和6-0中的位指定指令。
表1:
到存储器的带宽通常是限制应用程序性能的主要因素。代表性实施例提供通知HTP 300关于应发布到存储器125的存储器加载请求的大小的手段。由于存取存储器数据不供应用程序使用,代表性实施例减少了存储器的浪费和第一互连网络150的带宽。
存在另一优化,其中应用程序知晓所存取的数据结构的大小,并且可指定要加载到数据缓存寄存器346中的数据量。作为示例,如果算法使用大小为16字节的结构,且结构分散在存储器中,那么发出16字节存储器读取并将数据放置到数据缓存寄存器346中将是最优的。代表性实施例限定一组存储器加载指令,其提供要加载到HTP 300寄存器中的运算元的大小以及在加载未命中数据缓存寄存器346的情况下对存储器的存取的大小。如果存储器存取跨越缓存行边界,那么存储器125的实际加载可小于指令指定的大小。在此情况下,减小存取大小,以确保响应数据写入到数据缓存寄存器346的单个缓存行。
当所请求的数据小于缓存行时,加载指令还可请求HTP 300当前不需要但将来可能需要的额外数据,其值得同时获得(例如,作为预取),从而优化对存储器125的读取大小存取。此指令还可覆写(如下文更详细地论述,参考图12)可能已经使用的存取大小的任何减小,以进行带宽管理。
因此,代表性实施例通过仅请求已知需要的存储器数据来最大限度地减少带宽浪费。结果是应用程序性能的提高。
已经限定允许指定待存取数据量的一组加载指令。数据写入到缓冲器中,并通过收回、FENCE或具有指定获取的原子变得无效。加载指令提供关于将从存储器存取和向存储缓冲器写入多少额外数据(以8字节递增)的提示。加载将只存取下一64字节边界的额外数据。加载指令指定使用操作后缀RB0-RB7加载的额外8字节元素的数目:
LD.RB7 RA,40(SP)
表2中示出指令格式。将加载到缓冲器中的8字节数据元素的数目指定为32位指令的位6和4:3。这些加载指令可在组合件写入常式中使用,或理想地通过编译器使用。预期最初仅手写组合件将利用这些指令。
表2:
存储指令
HTP 300具有临时存储共享存储器数据的少量存储器缓冲器。存储器缓冲器允许将对存储器的多个写入合并到较小数目个存储器写入请求中。这具有两个益处:1)较少写入请求对于第一互连网络150和存储器控制器120更有效,且2)HTP 300暂停进行存储器存储的线程,直到数据存储到HTP 300存储器缓冲器或存储在存储器控制器120处。到HTP 300存储器缓冲器的存储非常快速且将通常不导致线程暂时执行。当将缓冲器写入到存储器控制器120时,随后暂停线程直到接收到完成以便确保存储器125的一致性为止。
标准RISC-V存储指令将数据写入到HTP 300存储器缓冲器。然而,存在已知将数据直接写入到存储器且不写入到存储器缓冲器的情形。一个此类情形为散射操作。散射操作将通常将仅单个数据值写入到存储器缓冲器。写入到缓冲器使得缓冲器抖动且将得益于写入合并的其它存储数据被迫返回到存储器。针对HTP 300限定一组存储指令以指示不应使用写入缓冲。这些指令将数据直接写入到存储器125,使得执行线程暂停直到写入完成为止。
预期存储无缓冲指令用于手动汇编的库,并用NB后缀指示:
ST.NB RA,40(SP)
添加以下存储指令,如表3中所示。
表3:
自定义原子存储和清理锁(CL)指令:
当通过存储器控制器观察到原子操作时,自定义原子运算在所提供的地址上设置锁。在相关联的HTP 300上进行原子操作。当锁应被清理时,HTP 300应告知存储器控制器。这应在HTP 300针对自定义原子操作进行的最后的存储操作上(或在不需要存储的情况下,在纤程终止指令上)。HTP 300通过执行特定存储操作来指示锁定将被清理。存储和清理锁指令。
可使用以下指令序列来实施自定义原子DCAS操作。
//a0-原子地址
//a1-64位存储器值a0
//a2-DCAS比较值1
//a3-DCAS比较值2
//a4-DCAS交换值1
//a5-DCAS交换值2
原子_dcas:
bne a1,a2,失败//第一8字节比较
ld.nb a6,8(a0) //加载第二8字节存储器值-应命中存储器缓存
bne a6,a3,失败//第二8字节比较
sd a4,0(a0) //将第一8字节交换值存储到线程存储缓冲器
sd.cl a5,8(a0) //存储第二8字节值并清理存储器锁
eft x0 //AMO成功响应
失败:
li a1,1
eft.cl a1,(a0) //AMO失败响应(并清理存储器锁)
原子_浮动_添加:
fadd.d a2,a1,a2 //a1含有存储器值,a2含有待添加的值
fsd.cl a2,0(a0) //a0含有存储器地址,清理锁并终止原子
eft //逐出来自缓冲器的所有行,终止原子线程
指示应该清理锁的存储指令是:
SB.CL RA,40(SP)
SH.CL RA,40(SP)
SW.CL RA,40(SP)
SD.CL RA,40(SP)
FSW.CL RA,40(SP)
FSD.CL RA,40(SP)
表4中示出这些存储指令的格式。
表4:
纤程创建指令:
纤程创建(“EFC”)指令发起HTP 300或HTF 200上的线程。
EFC.HTP.A4
EFC.HTF.A4
此指令在HTP 300(或HTF 200)上进行调用,在寄存器a0中的地址处开始执行。(可选地,可利用后缀.DA。指令后缀DA指示目标HTP 300由寄存器a1中的虚拟地址确定。如果不存在DA后缀,则将本地系统100上的HTP 300定为目标。)后缀A1、A1、A2和A4指定待传递到HTP 300或HTF 200的额外变量参数的数目。变量参数计数限于值0、1、2或4(例如,包应拟合在64B中)。额外变量参数来自寄存器状态(a2-a5)。
应注意,如果在执行EFC指令时返回缓冲器不可用,则EFC指令将等待直到返回变量参数缓冲器可用以开始执行为止。一旦EFC指令成功地创建纤程,线程在紧接在EFC指令后的指令处继续。
还应注意,允许由主机处理器110创建的线程执行EFC指令和创建纤程。不允许由EFC指令创建的纤程执行EFC指令,并且将迫使异常,可选地。表5中示出这些纤程创建指令的格式。
表5:
ac编码 后缀 变量参数计数
0 无后缀 0
1 .A1 1
2 .A2 2
3 .A4 4
线程返回指令:
线程返回(ETR)指令将变量参数传递回到发起当前线程的父线程(通过主机处理器110线程创建或HTP 300纤程创建)。一旦线程已完成返回指令,就终止线程。
ETR.A2
此指令进行到HTP 300或主机处理器110的返回。ac后缀指定待传递到HTP或主机的额外变量参数的数目。变量参数计数可为值0、1、2或4。变量参数来自寄存器状态(a0-a3)。表6中示出这些线程返回指令的格式。
表6:
ac编码 后缀 变量参数计数
0 无后缀 0
1 .A1 1
2 .A2 2
3 .A4 4
纤程加入指令:
纤程加入(EFJ)指令检查以查看所创建的纤程是否已返回。指令具有两个变型,即加入等待和非等待。等待变型将暂停线程执行直到纤程已返回为止。加入非等待不暂停线程执行,而是提供成功/失败状态。对于两个变型,如果指令在没有未完成的纤程返回的情况下执行,则生成异常。
将来自返回纤程(最多四个)的变量参数写入到寄存器a0-a3。
EFJ
EFJ.NW
表7中示出这些纤程加入指令的格式。
表7:
纤程加入所有指令:
纤程加入所有指令(EFJ.ALL)未决直到所有未完成的纤程已返回为止。可在零或更多个未决纤程返回的情况下调用指令。不生成指令状态或异常。忽略来自纤程返回的任何返回变量参数。
EFJ.ALL
表8中示出这些纤程加入所有指令的格式。
表8:
原子返回指令:
EMD原子返回指令(EAR)用于完成自定义原子操作的执行线程,并且有可能提供回到发出自定义原子请求的源的响应。
EAR指令可将零个、一个或两个8字节变量参数值发送回到发出计算元件。待发送回的变量参数的数目由ac2后缀(A1或A2)确定。无后缀意味着零个变量参数,A1暗示单个8字节变量参数,并且A2暗示两个8字节变量参数。如果需要,从X寄存器a1和a2获得变量参数。
EAR指令还能够清理与原子指令相关联的存储器行锁。EAR使用a0寄存器中的值作为发送清理锁操作的地址。如果指令含有后缀CL,则发出清理锁操作。
以下DCAS示例使用EAR指令将成功或失败发送回到请求处理器。
//a0-原子地址
//a1-64位存储器值a0
//a2-DCAS比较值1
//a3-DCAS比较值2
//a4-DCAS交换值1
//a5-DCAS交换值2
原子_dcas:
bne a1,a2,失败 //第一8字节比较
ld.nb a6,8(a0) //加载第二8字节存储器值-应命中存储器缓存
bne a6,a3,失败 //第二8字节比较
sd a4,0(a0) //将第一8字节交换值存储到线程存储缓冲器
sd.cl a5,8(a0) //存储第二8字节值并清理存储器锁
li a1,0
ear. a1 //AMO成功响应
失败:
li a1,1
ear.cl. a1 //AMO失败响应(并清理存储器锁)
指令具有允许EFT指令还清理与原子操作相关联的存储器锁的两个变型。表9中示出所支持指令的格式。
图9:
ac2编码 后缀 变量参数计数
0 无后缀 0
1 .A1 1
2 .A2 2
第一和第二优先级指令:
第二(或低)优先级指令将具有第一优先级的当前线程转变为第二低优先级。当线程在待发生的事件(即,屏障)上轮询时,通常使用指令。
ELP
表10中示出ELP指令的格式。
表10:
第一(或高)优先级指令将具有第二(或低)优先级的当前线程转变为第一(或高或正常)优先级。当线程轮询并且事件已发生(即,屏障),通常使用指令。
ENP
表11中示出ELP指令的格式。
表11:
浮点原子存储器操作:
浮点原子存储器操作由与存储器控制器120相关联的HTP 300进行。对于32和64位数据类型来说,所进行的浮点操作均是MIN、MAX和ADD。
指令中的aq位和rl位指定在发出原子操作(aq)之前所有写入数据是否对于其它线程可见,并且在原子完成(rl)之后所有先前写入的数据是否对于此线程应可见。换句话说,aq位迫使所有写入缓冲器写回到存储器,并且rl位迫使所有读取缓冲器失效。应注意,rs1是X寄存器值,而rd和rs2是F寄存器值。
AMOFADD.S rd,rs2,(rs1)
AMOFMIN.S rd,rs2,(rs1)
AMOFMAX.S rd,rs2,(rs1)
AMOFADD.D rd,rs2,(rs1)
AMOFMIN.D rd,rs2,(rs1)
AMOFMAX.D rd,rs2,(rs1)
表12中示出这些浮点原子存储器操作指令的格式。
表12:
自定义原子存储器操作:
自定义原子操作由与存储器控制器120相关联的HTP 300进行。操作通过执行RISC-V指令来进行。
系统100的存储器控制器120内可用多达32个自定义原子操作。自定义原子是系统级资源,可用于附接到系统100上的任何进程。
指令中的aq位和rl位指定在发出原子操作(rl)之前所有写入数据是否对于其它线程可见,并且在原子完成(aq)之后所有先前写入的数据是否对于此线程应可见。换句话说,rl位迫使所有写入缓冲器写回到存储器,并且aq位迫使所有读取缓冲器失效。
自定义原子使用a0寄存器以指定存储器地址。源变量参数的数目由后缀(A0、A1、A2或A4)提供,并且从寄存器a1-a4获得。从存储器返回的结果值的数目可为0到2,并且由自定义存储器操作限定。将结果值写入到寄存器a0-a1。
AMOCUST0.A4
限定以下自定义原子指令,如表13中所示。
表13:
ac字段用于指定变量参数的数目(0、1、2或4)。下表14示出编码。
表14:
ac编码 后缀 变量参数计数
0 无后缀 0
1 .A1 1
2 .A2 2
3 .A4 4
限定八个自定义原子指令,其中每个自定义原子指令具有4个变量参数计数变化形式,得到总共32个可能的自定义原子算子。
事件管理:
系统100是事件驱动型架构。每一线程具有能够利用事件已接收掩码寄存器342和事件状态寄存器344监测的事件的集合。事件0被保留以用于从所创建的纤程(HTP 300或HTF 200)返回。事件的剩余部分可用于事件传信,线程到线程、广播或收集。线程到线程允许线程将事件发送到在相同或不同节点上的一个特定目的地线程。广播允许线程将指定事件发送到在其节点上的线程的子集。接收线程应指定期望哪些指定的广播事件。收集是指指定在事件变得活动之前待接收的事件的数目的能力。
可清理事件触发位(使用EEC指令),并且可监听所有事件(使用EEL指令)。监听操作可暂停线程直到事件已被触发为止,或在非等待模式(.NW)中,允许线程在其它执行进行时周期性地轮询。
线程能够使用事件发送指令(EES)将事件发送到特定线程,或使用事件广播指令(EEB)将事件广播到节点内的所有线程。所广播的事件是指定事件,其中传送线程指定事件名称(16位标识符),并且接收线程过滤接收到的广播事件以用于预先指定的事件标识符。一旦接收到,则事件应被明确地清理(EEC)以避免再次接收相同事件。应注意,当线程开始执行时所有事件触发位都是清楚的。
事件模式指令:
事件模式(EEM)指令设置事件的操作模式。事件0被保留以用于线程返回事件,事件的剩余部分可在三个接收模式中的一个接收模式中:简单、广播或收集。
在简单模式中,接收到的事件立即使得触发位被设置并且将接收到的消息计数递增一。每一最新接收到的事件使得接收到的事件计数递增。接收事件指令(EER)使得接收到的事件计数递减一。当计数转变回零时,事件触发位被清理。
在广播模式中,将接收到的事件的信道与事件编号的广播信道进行比较。如果信道匹配,则事件触发位被设置。EER指令使得触发位被清理。
在收集模式中,接收到的事件使得事件触发计数递减一。当计数达到零时,则事件触发位被设置。EER指令使得触发位被清理。
EEM指令为所选择的操作模式准备事件编号。在简单模式中,16位事件计数器被设置成零。对于广播模式,16位事件信道编号被设置成由EEM指令指定的值。对于收集模式,16位事件计数被设置成由EEM指令指定的值。三个模式中的每一模式以不同方式使用相同的16位值。
EEM.BM rs1,rs2 ;rs1=事件#,rs2=广播信道
EEM.CM rs1,rs2 ;rs1=事件#,rs2=收集计数
EEM.SM rs1 ;rs1=事件#
表15中示出事件模式指令的格式。
表15:
事件目的地指令:
事件目的地(EED)指令向执行线程内的事件提供标识符。标识符在节点内的所有执行线程中是独特的。标识符可与事件发送指令一起使用以使用EES指令将事件发送到线程。标识符是含有将事件从源线程发送到特定目的地线程所需的信息的不透明值。
标识符还可用于获得用于传送广播事件的独特值。标识符包含用于事件编号的空间。输入寄存器rs1指定待在目的地线程标识符内进行编码的事件编号。在指令执行之后,输出rd寄存器含有标识符。
EED rd,rs1
表16中示出事件目的地指令的格式。
表16:
事件目的地指令还可由进程用于获得其自身的地址,所述地址接着可用于其它广播消息,例如,以启用进程接收其它事件消息作为目的地,例如,用于当进程是主要线程时接收返回消息。
事件发送指令:
事件发送(EES)指令将事件发送到特定线程。寄存器rs1提供目的地线程和事件编号。寄存器rs2提供可选的8字节事件数据。
EES rs1
EES.A1 rs1,rs2
rs2寄存器向事件发送操作提供目标HTP 300。寄存器rs1提供待发送的事件编号。rs1的法定值是2到7。表17中示出事件发送指令的格式。
表17:
事件广播指令:
事件广播(EEB)指令将事件广播到节点内的所有线程。寄存器rs1提供待发送的广播信道(0到65535)。寄存器rs2提供可选的8字节事件数据。
EEB rs1
EEB.A1 rs1,rs2
表18中示出事件广播指令的格式。
表18:
事件监听指令:
事件监听(EEL)指令允许线程监测接收到的事件的状态。指令可在两个模式中的一个模式中操作:等待和非等待。等待模式将暂停线程直到事件被接收到为止,非等待模式在指令被执行时提供接收到的事件。
EEL rd,rs1
EEL.NW rd,rs1
寄存器rs1提供可用事件的掩码作为监听操作的输出。如果没有事件可用,则非等待模式将返回rs1中的值零。表19中示出事件监听指令的格式。
表19:
事件接收指令:
事件接收(EER)指令用于接收事件。接收事件包含确认事件被观察到,并且接收可选的8字节事件数据。寄存器rs1提供事件编号。寄存器rd含有可选的8字节事件数据。
EER rs1
EER.A1 rd,rs1
表20中示出事件接收指令的格式。
表20:
图10是HTP 300的控制逻辑和线程选择电路系统330的线程选择控制电路系统405的代表性实施例的详细框图。如上文所提及,提供第二或低优先级队列360,并且在线程选择控制电路系统405的控制下使用线程选择多路复用器385从第一(或高)优先级队列355或第二或低优先级队列360选择线程ID。第二优先级队列360中的线程从队列拉动并且以比第一优先级队列355中的线程更低的速率执行。
如上文所提及,一对指令ENP和ELP用于将线程从第一优先级转变到第二优先级(ELP)和将其从第二优先级转变到第一优先级(ENP)。
并行应用程序中的线程通常必须等待其它线程完成优先级以恢复执行(即,屏障操作)。通过线程之间的通信完成等待操作。此通信可由唤醒暂停的线程的事件或在存储器位置上轮询的等待线程支持。当线程轮询时,其浪费可由线程使用的处理资源,所述线程必须结束其工作以允许所有线程恢复生产性执行。第二或低优先级队列360允许等待线程进入将减少轮询线程的额外负荷的低优先级模式。这用以减少轮询线程的线程执行额外负荷,使得必须完成生产性工作的线程消耗大部分可用的处理资源。
配置寄存器用于确定待针对每一低优先级线程运行的高优先级线程的数目,如图10中说明为提供到线程选择控制电路系统405的低优先级“跳过”计数,所述线程选择控制电路系统以预定间隔从第二优先级队列360选择线程。换句话说,线程选择多路复用器385将依次从第一优先级队列355选择预定数目(即,跳过计数)的线程,“跳过”从第二或低优先级队列360选择任何线程。一旦已选择来自第一优先级队列355的预定数目的线程,线程选择多路复用器385将接着从第二优先级队列360选择用于执行的线程,即,针对每一低优先级线程运行预定数目的高优先级线程。如所说明,线程选择控制电路系统405递减跳过计数(寄存器442、多路复用器444和加法器446)直到其等于零(逻辑块448)为止,此时线程选择多路复用器385的选择输入切换到从第二或低优先级队列360选择线程。
因此,第二优先级队列360中的线程从队列拉动并且以比第一优先级队列355中的线程更低的速率执行。配置寄存器(例如,在线程存储器320中)用于确定待针对每一低优先级线程运行的高优先级线程的数目。一对指令ENP和ELP用于将线程从第一(或正常)优先级转变到第二低优先级(ELP),并且从第二低优先级转变到第一正常优先级(ENP)。
图11是第一互连网络150的一部分的代表性实施例和代表性数据包的框图。在代表性实施例中,第一互连网络150包含网络总线结构152(多个电线或管线),其中第一多个网络线路154专用于编址(或路由)数据包(158),并且用于通过各种交叉开关设置数据路径,并且剩余的第二多个网络线路156专用于在通过编址管线(第一多个网络线路154)建立的路径上传送数据包(数据加载,说明为从1621到162N的一系列或一序列的“N”个数据包)含有操作数数据、变量参数、结果等)。通常将两个此类网路总线结构152提供到每一计算资源中或从每一计算资源中提供,作为信道,第一信道用于接收数据,并且第二信道用于传输数据。单个第一编址(或路由)数据包(说明为编址(或路由)数据包1581)可用于建立到第一指定目的地的路由,并且可遵循(通常若干时钟循环,以允许设置开关)待传送到第一指定目的地的一或多个数据包162,多达预定数目的数据包162(例如,多达N个数据包)。虽然预定数目的数据包162正被路由,但是另一第二编址(或路由)数据包(说明为编址(或路由)数据包1582可传送和用于建立到第二指定目的地的路由,用于将去往此第二指定目的地(说明为数据包162N+1)的其它后续一或多个数据包162。
图12是HTP 300的数据路径控制电路系统395的代表性实施例的详细框图。如上文所提及,HTP 300中的一或多个还可包含数据路径控制电路系统395,所述数据路径控制电路系统用于控制第一互连网络150上的存取大小(例如,存储器125加载请求)以管理潜在堵塞,从而提供自适应性带宽。
应用程序性能通常受限于可来自存储器的可用于处理器的带宽。通过确保将应用程序所需的仅数据引入到HTP 300中,可缓解性能限制。数据路径控制电路系统395自动(即,无用户干预)减小对主存储器125的请求的大小以减少处理器接口和存储器125子系统的利用率。
如上文所提及,系统100的计算资源可具有使用稀疏数据集的许多应用程序,具有对遍及数据集分布的小数据段的频繁访问。其结果是,如果存取相当大量的数据,则其大部分可能未使用,从而浪费带宽。例如,缓存行可为64字节,但将不利用其全部。在其它时间,将有益的是使用所有可用的带宽,例如用于有效电力使用。数据路径控制电路395提供第一互连网络150上的动态自适应性带宽,调整数据路径加载的大小以优化任何给定应用程序的性能,例如基于返回到HTP 300的第一互连网络150的接收(例如,响应)信道的利用率将数据路径加载下调到8到32字节(作为示例)。
数据路径控制电路395监测第一互连网络150上的利用率水平,并且随着利用率增加而减小来自网络接口电路系统335的存储器125加载(即,读取)请求的大小。在代表性实施例中,数据路径控制电路395进行第一互连网络150的响应通道的利用率水平的时间平均加权(时间平均利用率块364)。如果在使用阈值逻辑电路366(具有多个比较器482和选择多路复用器484、486)的固定时段(调整间隔定时器362)之后利用率高于阈值(并且加载请求大小大于最小值),则通过加载请求存取大小逻辑电路368(通常通过2的幂(例如,8字节)从阈值逻辑电路366,使用负增量492)减小加载请求的大小,使得:(a)较少数据包162将包含在数据包162的系列中,从而允许带宽用于数据包到另一位置或用于另一处理的路由;或(b)存储器125利用更有效(例如,当将利用仅16字节时,不请求64字节)。如果在使用阈值逻辑电路366的固定时段之后利用率低于阈值(并且加载请求大小小于最大值),则通过加载请求存取大小逻辑电路368,通常也通过2的幂(例如,8字节),使用正增量488增加加载请求的大小。用于加载请求的大小的最小值和最大值可为用户配置的,然而,最小大小通常是发出加载指令的大小(例如,HTP 300的最大操作数大小,例如8字节),并且最大大小是缓存行大小(例如,32或64字节)。在替代性实施例中,数据路径控制电路395可位于存储器控制器120处,适应来自多个HTP 300的带宽压力。
图13是HTP 300的系统调用电路系统415和主机接口电路系统115的代表性实施例的详细框图。代表性系统100实施例允许例如HTP 300的仅用户模式计算元件进行系统调用、断裂点和其它特许操作而无需运行操作系统,以便打开文件、打印等。为了这样做,这些系统操作中的任一者源于执行用户模式指令的HTP 300。处理器的指令执行识别处理器必须将请求转发到主机处理器110以供执行。来自HTP 300的系统请求具有发送到主机处理器110的系统调用工作描述符包的形式,并且作为响应,HTP 300可接收系统调用返回工作描述符包。
系统调用工作描述符包,由包编码器380组合和传送,包含系统调用标识符(例如,线程ID、核心305编号、由程序计数器指示的虚拟地址、系统调用变量参数或参数(其通常存储在通用寄存器328中)和返回信息。将包发送到主机接口115(SRAM FIFO 464),所述主机接口将系统调用工作描述符包写入到主存储器队列中并使其排队,例如主机处理器110主存储器中所说明的DRAM FIFO 466,递增写入指针,并且主机接口115接着进一步将中断发送到主机处理器110以用于主机处理器110轮询存储器中的系统调用工作描述符包。主机处理器的操作系统存取队列(DRAM FIFO 466)条目,进行所请求的操作并将返回工作描述符数据放置在主存储器队列(DRAM FIFO 468),并且还可发信号通知主机接口115。主机接口115监测返回队列(DRAM FIFO 468)的状态,并且当条目存在时,将数据移动到输出队列(SRAM输出队列472)中,并且将具有所提供的工作描述符数据的返回工作描述符包格式化,以及将返回工作描述符包发送到发起系统调用包的HTP 300。
HTP 300的包解码器375接收返回工作描述符包,并且将返回变量参数放置在通用寄存器328中,如本地处理器(HTP 300)独自进行操作一样。如由在用户模式HTP 300上运行的应用程序所查看的此透明执行产生使用当处理器具有本地操作系统时使用的相同编程环境和运行时间库的能力,并且高度适用于使用插入的断点的广泛多种情形,例如编程软件调测。
然而,主机接口115通常具有有限的FIFO空间,当利用多个HTP 300时这可能成问题,每一HTP具有大数目的核心(例如,96),所述核心中的每一者可运行大数目的线程(例如,32/核心)。为了避免将大量存储器添加到主机接口115,使用用于每一HTP 300和HTP300内的每一处理器核心305的系统调用信用机构,可提交的系统调用的总数目受到限制。
每一处理器核心305包含维持第一信用计数的第一寄存器452,作为系统调用电路系统415的一部分。根据HTP 300提供的系统调用电路系统415包含第二寄存器458,所述第二寄存器包含第二信用计数,作为可用信用的池。当生成系统调用工作描述符包时,如果第一寄存器452中存在足够可用的信用,则(多路复用器454)可选择系统调用工作描述符包并且传送所述系统调用工作描述符包,并且如果不存在,则在系统调用工作描述符(系统调用)包表462中使系统调用工作描述符包排队,可能地与来自给定HTP 300的其它处理器核心305的其它系统调用工作描述符包一起。如果第二寄存器458中存在足够可用的信用,提供用于系统调用的突发并在HTP 300的所有处理器核心305中共享的额外信用池,则可传送下一系统调用工作描述符包,否则将其保持在表中。
当那些系统调用工作描述符包由主机接口115处理并从FIFO 464读出时,主机接口115生成返回系统调用电路系统415的确认,使得寄存器456中的每核心信用计数递增,继而可针对每一处理器核心305,使第一寄存器452中的第一信用计数递增。
替代地,寄存器456可等效地利用到第一寄存器452,而不需要每核心单独的第一寄存器452,并且替代地维持寄存器456中的第一计数,同样每核心305。作为另一替代方案,所有系统调用工作描述符包可在系统调用工作描述符包表462中以每核心305为基础排队,并且当核心具有其对应的寄存器456中的足够第一信用计数或第二寄存器458中的足够可用的信用时传送。
还提供一种用于线程状态监测的机构,以在硬件中收集HTP 300上运行的线程集的状态,这允许编程者对应用程序的工作具有可见性。通过此特征,主机处理器110可周期性地存取和存储信息以便后续在例如生成用户分布报导时使用。通过所提供的可见性,编程者可对应用程序作出改变以改进其性能。
可监测所有线程状态改变,并且在每一状态下保持在时间量上的统计数据。收集统计数据的处理器(110或300)提供用于单独的第二处理器(110或300)存取和存储数据的装置。当应用程序正运行时收集数据,使得可向应用程序分析员提供报告,所述报告示出在周期性基础上所报告的每一状态中的时间量,这提供正运行的应用程序上的详细可见性以供应用程序分析员后续使用。
根据可在硬件或软件中实施的代表性实施例,关于线程的所有信息存储在线程存储器320的各种寄存器中,并且可在常规基础上复制和保存在另一位置中。计数器可用于捕捉在例如暂停状态的选定状态中的任何给定线程耗费的时间量。例如,主机处理器110可记录或捕捉所有线程和线程计数器的当前状态(状态中耗费的时间量),或状态与随时间计数之间的差(Δ),并且将其写入文件或以其它方式将其保存在存储器中。并且,例如,程序或线程可为屏障,其中所有线程必须在任何其它事情可开始之前完成,并且有助于监测哪些线程在其进行通过各种屏障时或在其改变状态时处于何种状态。所说明的代码(在下文)是将执行为硬件或可转移到硬件的仿真器代码的示例:
InStateCount[N]-6b
InStateTimeStamp[N]-64b
InStateTotalTime[N]-64b
代表性实施例的许多优点是显而易见的。代表性设备、系统和方法提供能够为计算密集型核提供高性能和节能解决方案的计算架构,例如,以便计算用于传感、通信和分析应用的快速傅立叶变换(FFT)和有限脉冲响应(FIR)滤波器,例如合成孔径雷达、5G基站和图形分析应用,例如使用光谱技术的图形聚类、机器学习、5G联网算法和大型模具代码,但不限于此。
如本文中所使用,“处理器核心”可为任何类型的处理器核心,且可实现为被配置成、设计成、编程成或以其它方式用于进行本文中所论述的功能性的一或多个处理器核心。如本文中所使用,“处理器”110可为任何类型的处理器,并且可实现为被配置成、设计成、编程成或以其它方式调适成进行本文中所论述的功能性的一或多个处理器。作为本文中使用的术语处理器,处理器110或300可包含使用单个集成电路(“IC”),或可包含使用多个集成电路或其它连接、布置或分组在一起的组件,例如控制器、微处理器、数字信号处理器(“DSP”)、阵列处理器、图形或图像处理器、并行处理器、多核处理器、定制IC、专用集成电路(“ASIC”)、现场可编程门阵列(“FPGA”)、自适应计算IC、相关联存储器(例如,RAM、DRAM和ROM),以及其它IC和组件(不管是模拟的还是数字的)。因此,如本文中所使用,术语处理器或控制器应理解为等效地意指和包含单个IC,或定制IC、ASIC、处理器、微处理器、控制器、FPGA、自适应计算IC的布置,或与相关联存储器一起进行本文中所论述的功能的集成电路的一些其它分组,所述相关联存储器例如微处理器存储器或额外RAM、DRAM、SDRAM、SRAM、MRAM、ROM、FLASH、EPROM或E2PROM。如本文中所论述,处理器110或300与相关联的存储器可被调适或配置成(经由编程、FPGA互连,或硬布线)进行本发明的方法。例如,方法可当处理器110或300是操作性的(即,通电并且起作用)时作为用于连续执行的程序指令或其它代码集(或等效配置或其它程序),通过其相关联的存储器(和/或存储器125)和其它等效组件编程并存储于处理器300中。等效地,当处理器300可整体或部分地实施为FPGA、定制IC和/或ASIC时,FPGA、定制IC或ASIC还可被设计、配置和/或硬接线成实施本发明的方法。例如,处理器110或300可实施为模拟和/或数字电路、控制器、微处理器DSP和/或ASIC的布置,统称为“处理器”或“控制器”,其分别被硬接线、编程、设计、调适或配置成实施本发明的方法,包含可能地结合存储器125实施本发明的方法。
取决于选定的实施例,存储器125可包含数据存储库(或数据库),可以任何数目的形式实现,包含实现在任何计算机或其它机器可读数据存储介质、存储器装置或目前已知或将来变得可用的其它用于信息存储或通信的存储或通信装置内,包含但不限于存储器集成电路(“IC”),或集成电路的存储器部分(例如处理器或处理器IC内的常驻存储器),不管是易失性的还是非易失性的,是可拆卸的还是不可拆卸的,包含但不限于RAM、FLASH、DRAM、SDRAM、SRAM、MRAM、FeRAM、ROM、EPROM或E2PROM,或任何其它形式的存储器装置,例如磁性硬盘驱动器、光盘驱动器、磁盘或磁带驱动器、硬盘驱动器、其它机器可读存储或存储器介质,例如软盘、CDROM、CD-RW、数字通用光盘(DVD)或其它光学存储器,或已知或变成已知的任何其它类型的存储器、存储介质、或数据存储设备或电路。存储器125可用于存储各种查找表、参数、系数、其它信息和数据、(本发明的软件的)程序或指令,以及其它类型的表,例如数据库表。
如上文所指示,处理器110或300使用本发明的软件和数据结构经硬接线或编程以例如进行本发明的方法。因此,本发明的系统和相关方法包含各种指令,其可实现为提供上文所论述的这类编程或其它指令(例如实现于非暂时性计算机可读介质内的指令集和/或元数据)的软件。另外,元数据也可用于定义查找表或数据库的各种数据结构。借助于示例但非限制,这类软件可呈源或目标代码的形式。源代码另外可编译成某一形式的指令或目标代码(包含汇编语言指令或配置信息)。本发明的软件、源代码或元数据可实现为任何类型的代码,例如C、C++、Matlab、SystemC、LISA、XML、Java、Brew、SQL和其变型(例如,SQL 99或专属版本的SQL)、DB2、Oracle或进行本文中所论述的功能性的任何其它类型的编程语言,包含各种硬件定义或硬件建模语言(例如,Verilog、VHDL、RTL)和所得数据库文件(例如,GDSII)。因此,如本文中等效地使用的“构造”、“程序构造”、“软件构造”或“软件”意指且指代具有任何语法或特征标志的任何类别的任何编程语言,其提供或可解释为提供指定的相关联功能性或方法(当示例化或加载到处理器或计算机中并且被执行时,包含例如处理器300)。
本发明的软件、元数据或其它源代码和任何所得位文件(目标代码、数据库或查找表)可体现在任何有形的非暂时性存储介质(例如,计算机或其它机器可读数据存储介质中的任一者)内,作为计算机可读指令、数据结构、程序模块或其它数据,例如上文关于存储器125(例如,软盘、CDROM、CD-RW、DVD、磁性硬盘驱动器、光盘驱动器或任何其它类型的数据存储设备或介质,如上文所提及)所论述。
本公开应被视为本发明的原理的范例,并且不意图使本发明限于所示的特定实施例。就此而言,应理解,本发明的应用不限于上文和下文所阐述的、图式中所示的或示例中所描述的构造细节及组件布置。根据本发明的系统、方法和设备能够有其它实施例并且能够用各种方式实践和实行。
尽管本发明已相对于其具体实施例描述,这些实施例仅为说明性的,并不限制本发明。在本文的描述中,提供许多特定细节,例如电子组件、电子和结构连接、材料以及结构变化的示例,以提供对本发明的实施例的透彻理解。然而,相关领域的技术人员将认识到,可在没有具体细节中的一或多个的情况下,或利用其它设备、系统、组合件、组件、材料、零件等实践本发明的实施例。在其它情况下,为了避免混淆本发明的实施例的各方面,未专门示出或详细描述熟知的结构、材料或操作。此外,各种图式未按比例绘制,并且不应该被看作具有限制性。
贯穿本说明书对“一个实施例”、“实施例”或特定“实施例”的参考意味着结合实施例描述的特定特征、结构或特性包含在本发明的至少一个实施例中且不必在所有实施例中,并且另外,不必指代相同实施例。此外,本发明的任何具体实施例的特定特征、结构或特性可以任何合适方式和与一或多个其它实施例的任何适当的组合(包含使用没有其它特征的对应使用的所选特征)组合。此外,可作出许多修改以使具体应用、情形或材料适配本发明的基本范畴和精神。应理解,本文中所描述的和所示出的本发明的实施例的其它变化和修改根据本文中的教示是可能的,并且将被视为本发明的精神和范畴的部分。
为了叙述本文的数值范围,明确涵盖它们之间具有相同精确度的每一插入数值。例如,对于范围6到9,除了6和9之外涵盖数值7和8,并且对于范围6.0到7.0,明确涵盖数值6.0、6.1、6.2、6.3、6.4、6.5、6.6、6.7、6.8、6.9以及7.0。另外,设想了呈任何组合形式的范围内的每个插入子范围,它们在本公开的范围内。例如,对于范围5到10,设想了子范围5到6、5到7、5到8、5到9、6到7、6到8、6到9、6到10、7到8、7到9、7到10、8到9、8到10和9到10,它们在所公开的范围的范畴内。
同样将了解,图式中所描绘的元件中的一者或多者还可以更独立或集成的方式实施,或甚至如当其根据具体应用可为有用的时候,在某些情况下可被移除或呈现为不可操作。组件的一体化形成组合也在本发明的范畴内,尤其是对于其中离散组件的分离或组合不明确或难以辨别的实施例。另外,本文使用的术语“耦合(coupled)”,包含其各种形式(“coupling”或“couplable”),是指并包含任何直接或间接的电、结构或磁耦合、连接或附接,或用于这种直接或间接的电、结构或磁耦合、连接或附接的适配或能力,包含一体形成的组件和经由或通过另一组件耦合的组件。
至于信号,在本文中指代的是“表示”给定度量或“代表”给定度量的参数,其中度量是调节器的至少部分的状态或其输入或输出的量度。如果参数与度量充分直接相关,使得调节参数能够令人满意地调节度量,那么参数被视为表示度量。如果参数表示多个或一部分度量,那么参数可被视为度量的可接受表示。
此外,附图/图式中的任何信号箭头应被视为仅仅是示例性的且不具有限制性,除非另外特别指出。步骤的组成部分的组合也将被视为在本发明的范围内,尤其是在分离或组合的能力不明确或可预见的时候。如在本文中和遍及所附权利要求书使用的分离性术语“或”大体上意在意味着“和/或”,除非另有指示,否则其具有结合和分离性含义两者(并且并不限于“异或”含义)。如在本文中的描述和遍及所附权利要求书所使用的,除非上下文另外明确规定,否则“一种(a/an)”和“所述”包含多个提及物。并且,除非上下文另外明确规定,否则如在本文中的描述中和贯穿所附权利要求书所使用,“在…中(in)”的含义包括“在…中(in)”和“在…上(on)”。
所示出的本发明的实施例的前述描述,包含发明内容或摘要中的描述,并不意图为穷尽性的或将本发明限制于本文所公开的精确形式。根据前述,将观察到,可在不脱离本发明的新颖概念的精神和范围的情况下,预期并且可实现大量的变化、修改和替代。应理解,不意在限制本文所示出的特定方法和设备或不应推断限制。当然,本发明意在通过所附权利要求书将所有此类修改涵盖为属于权利要求书的范围。

Claims (19)

1.一种处理器(300),其包括:
多个处理器核心(305),所述多个处理器核心中的每一处理器核心用于执行多个指令;以及
多个核心控制电路(310),所述多个核心控制电路中的每一核心控制电路耦合到所述多个处理器核心中的对应处理器核心,每一核心控制电路包括:
互连网络接口(335),其能够耦合到互连网络(150)以接收工作描述符数据包,所述互连网络接口用于将所述接收到的工作描述符数据包解码成执行线程的初始程序计数和至少一个接收到的变量参数,所述互连网络接口进一步用于响应于对应处理器核心执行返回指令而生成返回工作描述符包;
线程控制存储器(320),其包括多个寄存器,所述多个寄存器包括存储多个线程标识符的线程标识符池寄存器(322)、存储所述初始程序计数的程序计数寄存器(326)、存储经缓存数据的数据缓存(346),以及存储所述至少一个接收到的变量参数和非缓存数据的通用寄存器(328);
执行队列(345),其耦合到所述线程控制存储器;以及
控制逻辑和线程选择电路(330),其耦合到所述执行队列,所述控制逻辑和线程选择电路用于响应于接收到具有所述初始程序计数和所述至少一个接收到的变量参数的所述工作描述符数据包,自动将所述多个线程标识符中的可用线程标识符指配到多个执行线程中的对应执行线程,自动将所述多个所述线程标识符中的每一经指配线程标识符放置在所述执行队列中,自动和周期性地循环选择所述执行队列中的所述多个线程标识符中的每一线程标识符以供所述对应处理器核心执行所述多个指令中的所述对应执行线程的单个指令,所述对应处理器核心使用其存储在所述数据缓存或通用寄存器中的至少一个接收到的变量参数自动开始执行对应于其初始程序计数的所述单个指令,所述控制逻辑和线程选择电路进一步用于自动和反复地循环所述执行队列中的所述多个线程标识符中的每一线程标识符的循环选择,以便在每一执行线程的线程标识符在所述执行队列中时由所述对应处理器核心执行所述执行线程的单个指令,以及响应于所述对应处理器核心执行所述返回指令而结束执行选定执行线程。
2.根据权利要求1所述的处理器,其中所述控制逻辑和线程选择电路(330)进一步用于响应于接收到的事件数据包,自动开始由所述对应处理器核心执行所述多个指令中的所述单个指令,以供所述对应处理器核心执行。
3.根据权利要求2所述的处理器,其中所述互连网络接口(335)进一步用于接收事件数据包,并且用于将所述接收到的事件数据包解码成事件标识符和任何接收到的变量参数。
4.根据权利要求1所述的处理器,其中所述互连网络接口(335)进一步用于使用所述经指配线程标识符作为所述线程控制存储器的索引,针对所述多个执行线程中的每一执行线程,在所述线程控制存储器中存储所述接收到的程序计数和所述至少一个接收到的变量参数。
5.根据权利要求1所述的处理器,其中所述互连网络接口(335)进一步用于生成和接收点到点事件数据消息和广播事件数据消息。
6.根据权利要求1所述的处理器,其中所述对应处理器核心(305)用于执行纤程创建指令,并且其中对应核心控制电路(310)进一步用于生成到另一处理器或混合线程组构电路的一或多个工作描述符数据包以用于执行对应的多个执行线程。
7.根据权利要求6所述的处理器,其中所述控制逻辑和线程选择电路(330)进一步用于在线程控制存储器中保留预定量的存储器空间以存储返回变量参数。
8.根据权利要求1所述的处理器,其中所述控制逻辑和线程选择电路(330)进一步用于确定对应于接收到的事件数据包的事件编号,并且用于使用存储在事件掩码寄存器(342)中的事件掩码以对接收到的事件数据包作出响应。
9.根据权利要求1所述的处理器,其中每一核心控制电路(310)进一步包括:
网络响应存储器(325);
指令缓存(340),其耦合到所述控制逻辑和线程选择电路;以及
网络命令队列(390),其存储一或多个请求或返回信息以供所述互连网络接口在所述互连网络上传输,并且进一步存储命令以生成所述返回工作描述符包。
10.根据权利要求1所述的处理器,其中所述控制逻辑和线程选择电路(330)进一步用于将有效状态或暂停状态指配到所述多个线程标识符中的每一经指配线程标识符,并且在所述有效状态保持不变的持续时间内,将所述有效状态线程标识符返回到所述执行队列以供所述对应处理器核心继续执行单个指令,并通过在所述线程标识符的状态返回到有效之前不将所述暂停状态线程标识符返回到所述执行队列来暂停线程执行。
11.根据权利要求1所述的处理器,其中所述线程控制存储器(320)进一步包括寄存器,所述寄存器选自由以下各者组成的群组:线程状态寄存器(324);未决纤程返回计数寄存器(332);线程返回缓冲器或寄存器(336);返回变量参数链表寄存器(334);自定义原子交易标识符寄存器(338);事件已接收掩码寄存器(342);事件状态寄存器(344);以及其组合。
12.根据权利要求10所述的处理器,其中所述控制逻辑和线程选择电路(330)进一步用于当所述多个线程标识符中的线程标识符的所述执行线程已执行存储器加载指令或存储器存储指令时,将所述暂停状态指配到所述线程标识符。
13.根据权利要求10所述的处理器,其中所述控制逻辑和线程选择电路(330)进一步用于响应于接收到的事件数据包而将所述多个线程标识符中的线程标识符的所述状态从所述暂停状态改变成所述有效状态以恢复对应执行线程的单个指令执行,或响应于接收到的事件数据包的事件编号而将所述多个线程标识符中的线程标识符的所述状态从所述暂停状态改变成所述有效状态以恢复所述对应执行线程的执行。
14.根据权利要求1所述的处理器,其中所述控制逻辑和线程选择电路(330)进一步用于响应于所述对应处理器核心执行所述返回指令而结束执行选定线程并将所述多个线程标识符中的所述选定线程的对应线程标识符返回到所述线程标识符池寄存器(322)。
15.根据权利要求14所述的处理器,其中所述控制逻辑和线程选择电路(330)进一步用于响应于所述对应处理器核心执行所述返回指令而清理以所述选定线程的所述对应线程标识符作索引的所述线程控制存储器(320)的所述寄存器。
16.根据权利要求1所述的处理器,其中所述执行队列进一步包括:
第一优先级队列(355),其存储第一优先级执行线程的一或多个线程标识符;以及
第二优先级队列(360),其存储第二优先级执行线程的一或多个线程标识符。
17.根据权利要求16所述的处理器,其中所述控制逻辑和线程选择电路(330)进一步包括:
线程选择控制电路系统(405),其耦合到所述执行队列,所述线程选择控制电路系统用于在第一频率下从所述第一优先级队列中选择第一优先级执行线程的所述一或多个线程标识符中的线程标识符,以供所述处理器核心执行所述对应执行线程的下一单个指令,并且用于在第二频率下从所述第二优先级队列中选择第二优先级执行线程的所述一或多个线程标识符中的线程标识符,以供所述处理器核心执行所述对应执行线程的所述下一单个指令,所述第二频率低于所述第一频率。
18.一种处理器(300),其包括:
多个处理器核心(305),所述多个处理器核心中的每一处理器核心用于执行多个指令;以及
多个核心控制电路(310),所述多个核心控制电路中的每一核心控制电路耦合到所述多个处理器核心中的对应处理器核心,每一核心控制电路包括:
互连网络接口(335),其能够耦合到互连网络(150)以接收工作描述符数据包,将所述接收到的工作描述符数据包解码成执行线程的初始程序计数和至少一个接收到的变量参数,所述互连网络接口进一步用于响应于所述对应处理器核心执行返回指令而自动生成返回工作描述符包;
线程控制存储器(320),其耦合到所述互连网络接口且包括多个寄存器,所述多个寄存器包括存储多个线程标识符的线程标识符池寄存器(322)、线程状态寄存器(324)、存储所述初始程序计数的程序计数寄存器(326)、存储经缓存数据的数据缓存(346),以及存储所述至少一个接收到的变量参数和非缓存数据的通用寄存器(328);
执行队列(345),其耦合到所述线程控制存储器;
指令缓存(340),其耦合到所述多个处理器核心中的所述对应处理器核心以接收所述初始程序计数并向所述对应处理器核心提供所述多个指令中的对应单个指令以供执行;以及
控制逻辑和线程选择电路(330),其耦合到所述执行队列、所述指令缓存和所述线程控制存储器,所述控制逻辑和线程选择电路用于响应于接收到具有所述初始程序计数和所述至少一个接收到的变量参数的所述工作描述符数据包,自动将所述多个线程标识符中的可用线程标识符指配到多个执行线程中的对应执行线程,自动将所述多个线程标识符中的每一经指配线程标识符放置在所述执行队列中,自动循环选择所述执行队列中的所述多个线程标识符中的每一线程标识符,使用选定线程标识符作为索引来存取所述线程控制存储器从而选择所述初始程序计数以供所述对应处理器核心执行所述多个指令中的所述对应执行线程的所述单个指令,所述对应处理器核心使用其存储在所述数据缓存或通用寄存器中的至少一个接收到的变量参数和其它数据自动开始执行对应于其初始程序计数的所述单个指令,所述控制逻辑和线程选择电路进一步用于自动和反复地循环所述执行队列中的所述多个线程标识符中的每一线程标识符的循环选择,以便在每一执行线程的线程标识符在所述执行队列中时由所述对应处理器核心执行所述执行线程的单个指令,以及响应于所述对应处理器核心执行所述返回指令而结束执行所述选定线程。
19.一种处理器(300),其包括:
多个处理器核心(305),所述多个处理器核心中的每一处理器核心用于执行多个指令;以及
多个核心控制电路(310),所述多个核心控制电路中的每一核心控制电路耦合到所述多个处理器核心中的对应处理器核心,每一核心控制电路包括:
互连网络接口(335),其能够耦合到互连网络(150)以接收调用工作描述符数据包,将所述调用工作描述符数据包解码成执行线程的初始程序计数和至少一个接收到的变量参数,对工作描述符包进行编码以用于传输到其它处理元件,接收一或多个加载响应数据包,并且所述互连网络接口进一步用于响应于对应处理器核心执行返回指令而生成返回工作描述符包;
线程控制存储器(320),其耦合到所述互连网络接口且包括多个寄存器,所述多个寄存器包括存储多个线程标识符的线程标识符池寄存器(322)、线程状态寄存器(324)、存储所述初始程序计数的程序计数寄存器(326)、存储经缓存数据的数据缓存(346),以及存储所述至少一个接收到的变量参数和非缓存数据的通用寄存器(328);
执行队列(345),其耦合到所述线程控制存储器,所述执行队列包括第一优先级队列(355)和第二优先级队列(360);
控制逻辑和线程选择电路(330),其耦合到所述执行队列和所述线程控制存储器,所述控制逻辑和线程选择电路用于响应于接收到具有所述初始程序计数和所述至少一个接收到的变量参数的所述调用工作描述符数据包,自动将所述多个线程标识符中的可用线程标识符和初始有效状态指配到多个执行线程中的对应执行线程,自动将所述多个线程标识符中的每一经指配线程标识符放置在所述执行队列的所述第一或第二优先级队列中,自动和周期性地在第一频率下循环选择所述第一优先级队列中的所述多个线程标识符中的每一线程标识符以供所述对应处理器核心执行所述多个指令中的所述对应执行线程的单个指令,自动和周期性地在第二频率下循环选择,所述第二频率低于所述第一频率,其中所述对应处理器核心使用其存储在所述数据缓存或通用寄存器中的至少一个接收到的变量参数自动开始执行对应于其初始程序计数的所述单个指令;所述控制逻辑和线程选择电路进一步用于通过不将所述对应线程标识符返回到所述执行队列来暂停执行生成存储器请求的执行线程,以及自动和反复地循环所述第一优先级队列和所述第二优先级队列中的所述多个线程标识符中的每一线程标识符在所述第一和第二频率下的循环选择,以便在每一执行线程的线程标识符在所述执行队列中时由所述对应处理器核心执行所述执行线程的单个指令;以及响应于所述对应处理器核心执行所述返回指令而结束执行选定线程;
指令缓存(340),其耦合到所述控制逻辑和线程选择电路以接收选定程序计数并提供对应单个指令以供所述对应处理器核心执行;以及
网络命令队列(390),其存储一或多个命令以生成到所述其它处理元件的一或多个工作描述符包;以及
网络响应存储器(325),其耦合到所述互连网络接口,所述网络响应存储器包括一或多个存储器请求寄存器和存储多个交易标识符的交易标识符寄存器,所述多个交易标识符中的每一交易标识符与生成所述存储器请求的执行线程的选定线程标识符相关联。
CN201980031019.3A 2018-05-07 2019-05-06 具有自调度处理器和混合线程组构的系统 Active CN112119376B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862667691P 2018-05-07 2018-05-07
US62/667,691 2018-05-07
US16/399,642 US11513837B2 (en) 2018-05-07 2019-04-30 Thread commencement and completion using work descriptor packets in a system having a self-scheduling processor and a hybrid threading fabric
US16/399,642 2019-04-30
PCT/US2019/030870 WO2019217290A1 (en) 2018-05-07 2019-05-06 Thread commencement and completion using work descriptor packets in a system having a self-scheduling processor and a hybrid threading fabric

Publications (2)

Publication Number Publication Date
CN112119376A CN112119376A (zh) 2020-12-22
CN112119376B true CN112119376B (zh) 2024-04-16

Family

ID=68384883

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980031019.3A Active CN112119376B (zh) 2018-05-07 2019-05-06 具有自调度处理器和混合线程组构的系统

Country Status (5)

Country Link
US (1) US11513837B2 (zh)
EP (1) EP3791266A1 (zh)
KR (1) KR20210003263A (zh)
CN (1) CN112119376B (zh)
WO (1) WO2019217290A1 (zh)

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111506432A (zh) * 2020-04-30 2020-08-07 中科院计算所西部高等技术研究院 具有ooda多分区io资源池机制的服务器主机
US11588745B2 (en) 2020-08-31 2023-02-21 Micron Technology, Inc. Early credit return for credit-based flow control
US11362939B2 (en) 2020-08-31 2022-06-14 Micron Technology, Inc. Flow control for a multiple flow control unit interface
US11412075B2 (en) 2020-08-31 2022-08-09 Micron Technology, Inc. Multiple protocol header processing
US11539623B2 (en) 2020-08-31 2022-12-27 Micron Technology, Inc. Single field for encoding multiple elements
US11360920B2 (en) 2020-08-31 2022-06-14 Micron Technology, Inc. Mapping high-speed, point-to-point interface channels to packet virtual channels
US11418455B2 (en) 2020-08-31 2022-08-16 Micron Technology, Inc. Transparent packet splitting and recombining
US11296995B2 (en) 2020-08-31 2022-04-05 Micron Technology, Inc. Reduced sized encoding of packet length field
US11356378B2 (en) 2020-08-31 2022-06-07 Micron Technology, Inc. Combined write enable mask and credit return field
US11580044B2 (en) 2020-08-31 2023-02-14 Micron Technology, Inc. Network credit return mechanisms
US11294848B1 (en) 2020-10-20 2022-04-05 Micron Technology, Inc. Initialization sequencing of chiplet I/O channels within a chiplet system
US11693690B2 (en) 2020-10-20 2023-07-04 Micron Technology, Inc. Method of completing a programmable atomic transaction by ensuring memory locks are cleared
US11526361B2 (en) 2020-10-20 2022-12-13 Micron Technology, Inc. Variable pipeline length in a barrel-multithreaded processor
US11614891B2 (en) 2020-10-20 2023-03-28 Micron Technology, Inc. Communicating a programmable atomic operator to a memory controller
US11409533B2 (en) 2020-10-20 2022-08-09 Micron Technology, Inc. Pipeline merging in a circuit
US11586443B2 (en) 2020-10-20 2023-02-21 Micron Technology, Inc. Thread-based processor halting
US11436187B2 (en) 2020-10-20 2022-09-06 Micron Technology, Inc. Method of notifying a process or programmable atomic operation traps
US11803391B2 (en) 2020-10-20 2023-10-31 Micron Technology, Inc. Self-scheduling threads in a programmable atomic unit
US11379365B2 (en) 2020-10-20 2022-07-05 Micron Technology, Inc. Memory access bounds checking for a programmable atomic operator
US11409539B2 (en) 2020-10-20 2022-08-09 Micron Technology, Inc. On-demand programmable atomic kernel loading
US11586439B2 (en) 2020-10-20 2023-02-21 Micron Technology, Inc. Detecting infinite loops in a programmable atomic transaction
US11507453B2 (en) 2020-10-20 2022-11-22 Micron Technology, Inc. Low-latency register error correction
US11614942B2 (en) 2020-10-20 2023-03-28 Micron Technology, Inc. Reuse in-flight register data in a processor
US11431653B2 (en) 2020-10-20 2022-08-30 Micron Technology, Inc. Packet arbitration for buffered packets in a network device
US12020062B2 (en) 2020-10-20 2024-06-25 Micron Technology, Inc. Method of executing programmable atomic unit resources within a multi-process system
US11740929B2 (en) 2020-10-20 2023-08-29 Micron Technology, Inc. Registering a custom atomic operation with the operating system
US11403023B2 (en) 2020-10-20 2022-08-02 Micron Technology, Inc. Method of organizing a programmable atomic unit instruction memory
US11907718B2 (en) 2020-12-31 2024-02-20 Micron Technology, Inc. Loop execution in a reconfigurable compute fabric using flow controllers for respective synchronous flows
US11698853B2 (en) 2020-12-31 2023-07-11 Micron Technology, Inc. Saturating local cache in memory-compute systems
CN113179227B (zh) * 2021-04-26 2023-05-19 哈尔滨铁路科研所科技有限公司 基于队列的at指令控制方法
US12020066B2 (en) * 2021-06-11 2024-06-25 International Busin ess Machines Corporation Asynchronous completion notification in a multi-core data processing system
US11740800B2 (en) 2021-06-22 2023-08-29 Micron Technology, Inc. Alleviating memory hotspots on systems with multiple memory controllers
US11762661B2 (en) 2021-07-28 2023-09-19 Micron Technology, Inc. Counter for preventing completion of a thread including a non-blocking external device call with no-return indication
US11768626B2 (en) 2021-08-11 2023-09-26 Micron Technology, Inc. Stencil data access from tile memory
US11604650B1 (en) 2021-08-11 2023-03-14 Micron Technology, Inc. Packing conditional branch operations
US11861366B2 (en) 2021-08-11 2024-01-02 Micron Technology, Inc. Efficient processing of nested loops for computing device with multiple configurable processing elements using multiple spoke counts
US11886728B2 (en) 2021-08-13 2024-01-30 Micron Technology, Inc. Undo capability for memory devices
US11782725B2 (en) 2021-08-16 2023-10-10 Micron Technology, Inc. Mask field propagation among memory-compute tiles in a reconfigurable architecture
US11704130B2 (en) 2021-08-16 2023-07-18 Micron Technology, Inc. Indexing external memory in a reconfigurable compute fabric
US11853216B2 (en) 2021-08-16 2023-12-26 Micron Technology, Inc. High bandwidth gather cache
US11841823B2 (en) 2021-08-16 2023-12-12 Micron Technology, Inc. Connectivity in coarse grained reconfigurable architecture
US11709796B2 (en) 2021-08-16 2023-07-25 Micron Technology, Inc. Data input/output operations during loop execution in a reconfigurable compute fabric
US11507493B1 (en) 2021-08-18 2022-11-22 Micron Technology, Inc. Debugging dataflow computer architectures
US11675588B2 (en) 2021-08-20 2023-06-13 Micron Technology, Inc. Tile-based result buffering in memory-compute systems
US11860800B2 (en) 2021-08-20 2024-01-02 Micron Technology, Inc. Kernel mapping to nodes in compute fabric
US12118224B2 (en) 2022-04-08 2024-10-15 Micron Technology, Inc. Fine grained resource management for rollback memory operations
US11940919B2 (en) 2022-08-30 2024-03-26 Micron Technology, Inc. Recall pending cache line eviction
US11899953B1 (en) 2022-08-30 2024-02-13 Micron Technology, Inc. Method of efficiently identifying rollback requests
US11960403B2 (en) 2022-08-30 2024-04-16 Micron Technology, Inc. Variable execution time atomic operations
US12038868B2 (en) 2022-08-31 2024-07-16 Micron Technology, Inc. Context load mechanism in a coarse-grained reconfigurable array processor
US11954492B1 (en) 2022-09-19 2024-04-09 Apple Inc. Fence enforcement techniques based on stall characteristics

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101627367A (zh) * 2007-02-21 2010-01-13 高通股份有限公司 按需多线程多媒体处理器

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5430850A (en) 1991-07-22 1995-07-04 Massachusetts Institute Of Technology Data processing system with synchronization coprocessor for multiple threads
JP3169779B2 (ja) 1994-12-19 2001-05-28 日本電気株式会社 マルチスレッドプロセッサ
AU1424697A (en) 1995-12-29 1997-07-28 Powertv, Inc. Event filtering feature for a computer operating system in home communications terminal
US6131155A (en) 1997-11-07 2000-10-10 Pmc Sierra Ltd. Programmer-visible uncached load/store unit having burst capability
US6223258B1 (en) 1998-03-31 2001-04-24 Intel Corporation Method and apparatus for implementing non-temporal loads
US6590901B1 (en) * 1998-04-01 2003-07-08 Mosaid Technologies, Inc. Method and apparatus for providing a packet buffer random access memory
US7137116B2 (en) 1999-11-09 2006-11-14 Microsoft Corporation Method and system for performing a task on a computer
US6973650B1 (en) 1999-11-09 2005-12-06 Microsoft Corporation Method of pipelined processing of program data
US6804631B2 (en) * 2002-05-15 2004-10-12 Microsoft Corporation Event data acquisition
CN100449478C (zh) 2002-05-31 2009-01-07 德拉华州大学 用于实时多线程处理的方法和装置
US20040034759A1 (en) 2002-08-16 2004-02-19 Lexra, Inc. Multi-threaded pipeline with context issue rules
US7467377B2 (en) 2002-10-22 2008-12-16 Intel Corporation Methods and apparatus for compiler managed first cache bypassing
US7441101B1 (en) 2003-12-10 2008-10-21 Cisco Technology, Inc. Thread-aware instruction fetching in a multithreaded embedded processor
US7310722B2 (en) 2003-12-18 2007-12-18 Nvidia Corporation Across-thread out of order instruction dispatch in a multithreaded graphics processor
US7970823B2 (en) * 2004-09-02 2011-06-28 Broadway Technology, Llc System for sharing data objects among applications
US7895431B2 (en) * 2004-09-10 2011-02-22 Cavium Networks, Inc. Packet queuing, scheduling and ordering
US7853777B2 (en) * 2005-02-04 2010-12-14 Mips Technologies, Inc. Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions
US8108659B1 (en) 2006-11-03 2012-01-31 Nvidia Corporation Controlling access to memory resources shared among parallel synchronizable threads
JP2008123045A (ja) * 2006-11-08 2008-05-29 Matsushita Electric Ind Co Ltd プロセッサ
US8032711B2 (en) 2006-12-22 2011-10-04 Intel Corporation Prefetching from dynamic random access memory to a static random access memory
GB2447907B (en) 2007-03-26 2009-02-18 Imagination Tech Ltd Processing long-latency instructions in a pipelined processor
US8423972B2 (en) 2009-02-27 2013-04-16 International Business Machines Corporation Collecting profile-specified performance data on a multithreaded data processing system
US20100274961A1 (en) 2009-04-22 2010-10-28 Golla Robert T Physically-indexed logical map table
US8514874B2 (en) 2010-03-12 2013-08-20 Lsi Corporation Thread synchronization in a multi-thread network communications processor architecture
US8949838B2 (en) 2009-04-27 2015-02-03 Lsi Corporation Multi-threaded processing with hardware accelerators
GB2471067B (en) 2009-06-12 2011-11-30 Graeme Roy Smith Shared resource multi-thread array processor
US8732711B2 (en) 2010-09-24 2014-05-20 Nvidia Corporation Two-level scheduler for multi-threaded processing
CN102480337B (zh) * 2010-11-30 2016-04-13 国际商业机器公司 无线电软件系统以及用于其的解码装置和方法
US8752064B2 (en) 2010-12-14 2014-06-10 Advanced Micro Devices, Inc. Optimizing communication of system call requests
US9286118B2 (en) 2012-06-15 2016-03-15 Freescale Semiconductor, Inc. System and method for improved job processing to reduce contention for shared resources
US9404970B2 (en) * 2014-11-14 2016-08-02 Cavium, Inc. Debug interface for multiple CPU cores

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101627367A (zh) * 2007-02-21 2010-01-13 高通股份有限公司 按需多线程多媒体处理器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于Win32的多线程技术及其应用;刘红海, 侯向华, 蔡勇;计算机工程与设计(第10期);全文 *

Also Published As

Publication number Publication date
US11513837B2 (en) 2022-11-29
EP3791266A1 (en) 2021-03-17
KR20210003263A (ko) 2021-01-11
CN112119376A (zh) 2020-12-22
US20190340019A1 (en) 2019-11-07
WO2019217290A1 (en) 2019-11-14

Similar Documents

Publication Publication Date Title
CN112119376B (zh) 具有自调度处理器和混合线程组构的系统
CN112088359B (zh) 多线程自调度处理器
CN112088356B (zh) 自调度处理器中使用工作描述符包的线程开始
CN112106026B (zh) 用于管理网络拥塞的多线程自调度处理器
CN112106027B (zh) 多线程自调度处理器中的存储器请求大小管理
CN112088358B (zh) 具有线程优先级管理的多线程自调度处理器
CN112088355B (zh) 多线程自调度处理器在本地或远程计算元件上的线程创建
CN112088357B (zh) 用户模式多线程自调度处理器中的系统调用管理
US11513838B2 (en) Thread state monitoring in a system having a multi-threaded, self-scheduling processor
CN112088363A (zh) 具有自调度处理器和混合线程结构的系统中的事件消息传递
US11157286B2 (en) Non-cached loads and stores in a system having a multi-threaded, self-scheduling processor

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
GR01 Patent grant
GR01 Patent grant