CN114691354A - 动态分解及线程分配 - Google Patents

动态分解及线程分配 Download PDF

Info

Publication number
CN114691354A
CN114691354A CN202111626756.3A CN202111626756A CN114691354A CN 114691354 A CN114691354 A CN 114691354A CN 202111626756 A CN202111626756 A CN 202111626756A CN 114691354 A CN114691354 A CN 114691354A
Authority
CN
China
Prior art keywords
thread
memory
sub
workloads
request
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
CN202111626756.3A
Other languages
English (en)
Inventor
S·A·温德
T·M·布鲁尔
P·艾斯特普
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 CN114691354A publication Critical patent/CN114691354A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3433Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment for load management
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17312Routing techniques specific to parallel machines, e.g. wormhole, store and forward, shortest path problem congestion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17318Parallel communications techniques, e.g. gather, scatter, reduce, roadcast, multicast, all to all
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7825Globally asynchronous, locally synchronous, e.g. network on chip
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3888Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/501Performance criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5022Workload threshold

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请案涉及动态分解及线程分配。本文中描述用于处理器中的线程调度控制及存储器分割的装置及技术。一种设备包含:硬件接口,其经配置以接收执行第一线程的第一请求,所述第一请求包含工作量的指示;及处理电路系统,其经配置以:确定所述工作量以至少部分基于所述指示产生度量;比较所述度量与阈值以确定所述度量超过所述阈值;至少部分基于所述比较来将所述工作量分成由来自所述工作量的预定义数目个相同部分组成的一组子工作量;创建执行第二线程的第二请求,所述第二请求包含所述一组子工作量的第一构件;及在所述第一线程中处理所述一组子工作量的第二构件。

Description

动态分解及线程分配
相关申请案
本申请案主张2020年12月31日申请的序列号为63/132,754的美国临时申请案的优先权,所述美国临时申请案以其全文引用方式并入本文中。
技术领域
本申请案涉及动态分解及线程分配。
背景技术
例如冯·诺依曼架构的各种计算机架构通常使用用于数据的共享存储器、用于存取共享存储器的总线、算术单元及程序控制单元。然而,在处理器与存储器之间移动数据需要大量时间及能量,此又会约束计算机系统的性能及容量。鉴于这些限制,期望新计算架构及装置来提高计算性能超过晶体管扩展的惯例(即,摩尔定律)。
发明内容
本公开的一个实施例提供一种设备,其包括:硬件接口,其经配置以接收执行第一线程的第一请求,所述第一请求包含工作量的指示;及处理电路系统,其经配置以:确定所述工作量以至少部分基于所述指示产生度量;比较所述度量与阈值以确定所述度量超过所述阈值;至少部分基于所述比较来将所述工作量分成由来自所述工作量的预定义数目个相同部分组成的一组子工作量;创建执行第二线程的第二请求,所述第二请求包含所述一组子工作量的第一构件;及在所述第一线程中处理所述一组子工作量的第二构件。
本公开的另一实施例提供一种方法,其包括:接收执行第一线程的第一请求,所述第一请求包含工作量的指示;确定所述工作量以至少部分基于所述指示产生度量;比较所述度量与阈值以确定所述度量超过所述阈值;至少部分基于所述比较来将所述工作量分成由来自所述工作量的预定义数目个相同部分组成的一组子工作量;创建执行第二线程的第二请求,所述第二请求包含所述一组子工作量的第一构件;及在所述第一线程中处理所述一组子工作量的第二构件。
本公开的又一实施例提供一种设备,其包括:硬件接口,其经配置以接收执行第一线程的第一请求,所述第一请求包含工作量的指示;及处理电路系统,其经配置以:递归地将所述工作量分成多个子工作量且引起子线程处理所述多个子工作量中的每一者,直到子工作量小于阈值大小;及在子线程中处理小于所述阈值大小的所述子工作量。
附图说明
将从下文给出的具体实施方案及从本公开的各个实施例的附图更完全理解本公开。然而,图式不应被视为将本公开限于特定实施例,而是仅供解释及理解。
为了容易地识别任何特定元件或动作的论述,参考元件符号中的最高有效数字或前几个最高有效数字是指其中首先介绍所述元件的图号。
图1大体上说明根据实施例的存储器计算系统的背景下的第一存储器计算装置的第一实例。
图2大体上说明根据实施例的存储器计算装置的存储器子系统的实例。
图3大体上说明根据实施例的用于存储器控制器的可编程原子单元的实例。
图4说明根据实施例的存储器计算装置的混合线程处理器(HTP)加速器的实例。
图5说明根据实施例的存储器计算装置的混合线程结构(HTF)的表示的实例。
图6A大体上说明根据实施例的小芯片系统的实例。
图6B大体上说明展示来自图6A的实例的小芯片系统中的各个组件的框图。
图7大体上说明根据实施例的存储器计算装置的基于小芯片的实施方案的实例。
图8说明根据实施例的存储器计算装置小芯片的实例平铺。
图9是说明根据实施例的纤程创建指令的表。
图10是说明根据实施例的分治过程的伪代码列表。
图11是说明根据实施例的分治过程的另一代码列表。
图12是说明根据实施例的线程调用树的图。
图13是根据实施例的用于线程执行控制的方法的实例的流程图。
图14说明本文中论述的技术(例如方法)中的任何一或多者可用其实施、在其中实施或由其实施的实例机器的框图。
具体实施方式
可利用材料、装置及集成技术的最新进展来提供以存储器为中心的计算拓扑。此类拓扑可实现计算效率及工作量处理量提高,例如,针对受大小、重量或功率要求约束的应用。拓扑可用于促进存储器或其它数据存储元件附近或内部的低延时计算。方法可特别适于具有稀疏查找的各种计算密集操作,例如在变换计算(例如快速傅里叶变换计算(FFT))中或在例如神经网络或人工智能(AI)、金融分析或模拟或建模(例如针对计算流体动力学(CFD)、工程师用增强型声学模拟器(EASE)、模拟集成电路重点项目(SPICE)及其它)的应用中。
本文中论述的系统、装置及方法可包含或使用具有处理器或处理能力的存储器计算系统,处理器或处理能力提供于存储器或数据存储组件中、附近或与存储器或数据存储组件集成。此类系统在本文中通常称为近存储器计算(CNM)系统。CNM系统可为基于节点的系统,其中系统中的个别节点使用系统扩展结构耦合。每一节点可包含或使用具有尤其在其中预期高高速缓存未命中率的环境中促进密集操作的自定义计算结构的专用或通用处理器及用户可存取加速器。
在实例中,CNM系统中的每一节点可具有一或若干主机处理器。在每一节点内,专用混合线程处理器可占用芯片上网络的离散端点。混合线程处理器可存取系统的特定节点中的一些或所有存储器,或混合线程处理器可跨多个节点的网络经由系统扩展结构存取存储器。自定义计算结构或混合线程结构在每一节点处可具有其自身处理器或加速器且可以比混合线程处理器更高的带宽操作。近存储器计算系统中的不同节点可不同地配置,例如具有不同计算能力、不同类型的存储器、不同接口或其它差异。然而,节点可经共同耦合以共享定义地址空间内的数据及计算资源。
在实例中,近存储器计算系统或系统内的节点可经用户配置用于自定义操作。用户可提供使用例如C/C++的高级编程语言的指令,其可经编译且直接映射成系统或CNM系统中的一或多个节点的数据流架构。即,系统中的节点可包含可经配置以直接实施或支持用户指令以借此增强系统性能且减少延时的硬件块(例如存储器控制器、原子单位、其它客户加速器等)。
在实例中,近存储器计算系统可特别适于实施指令及嵌套循环(例如两个、三个或更多个深度循环或多维循环)的层次。标准编译器可用于接受高级语言指令且又直接编译成节点中的一或多者的数据流架构。举例来说,系统中的节点可包含混合线程结构加速器。混合线程结构加速器可在CNM系统的用户空间中执行且可启动可并行操作的其自身线程或子线程。每一线程可映射到不同循环迭代以借此支持多维循环。使用启动此类嵌套循环的能力以及其它能力,CNM系统可实现计算密集操作的大量时间节省及延时改进。
近存储器计算系统或近存储器计算系统的节点或组件可包含或使用各种存储器装置、控制器及互连件以及其它事物。在实例中,系统可包括各种互连节点,且节点或节点群组可使用小芯片实施。小芯片是用于集成各种处理功能性的新兴技术。通常,小芯片系统由集成于中介层上且封装在一起的离散芯片(例如不同衬底或裸片上的集成电路(IC))组成。此布置不同于在一个衬底(例如单个裸片)上含有相异装置块(例如知识产权(IP)块)的单个芯片(例如IC),例如片上系统(SoC)或集成于板上的离散封装装置。一般来说,小芯片提供相较于单裸片芯片的生产效益,其包含更高良率或降低开发成本。下文论述的图6A及图6B大体上说明例可包括近存储器计算系统的小芯片系统的实例。
在一些计算任务中,数百或甚至数千个线程可用于并行处理。在此规模下,例如具有数千个线程,能够并行化的工作量是实现性能的关键因素。另一考虑是可多快开始线程。
为了并行处理大列表,一种策略是具有致力于将列表分成分块及创建子线程以处理分块的主线程。此可以非常小调度开销完成,且循环可快速迭代。然而,此策略具有两个主要缺点。第一,如果存在许多分块要开始,那么单个工作产生源意味着使每个工作单元开始所需的时间变得很重要。第二,任务的此线性调度还在任务接口中产生压力,因为存在单点加入及释放子线程。
需要一种更高效机制来并行处理大任务。本文描述的系统及方法使用分治策略来分割工作。不是单个主线程创建所有工作线程,而是每个线程参与调度。如果指派给线程的工作量大于某阈值大小分块,那么线程先尝试将工作分成两半。线程创建新线程以处理工作的一半且继续处理剩余一半。如果线程创建失败(例如,所有系统线程已在运行),那么线程将在尝试再次分割之前处理一个阈值大小的工作分块。此机制提供线程的对数调度树。
效率可通过利用混合线程处理器(HTP)运行时提供的忙碌失败线程创建应用编程接口(API)来进一步提高。对数线程创建树还作为日志深度返回路径。如果需要来自每一子任务的单个结果,那么此必须完成。然而,如果不需要结果(例如,所有结果已在存储器中),那么我们可利用线程创建的特殊“无返回”变体。没有返回的线程一完成执行就由主机接口自动终止。这意味着其可再次自由重用,且调用代码不必处置加入及释放线程。此大大增加工作分割的灵活性,因为线程可随着新工作产生而容易地继续再循环。
使用此策略,工作继续被处理且动态线程创建不僵持。额外优点是调度机制导致具有在几个级别上运行的指数数目个线程的对数深度的平衡树调度。可通过使用向系统中的所有资源提供快速分派及返回的“忙碌失败”线程及实现系统线程的快速终止及重用的“无返回”线程变体来获得另外处理优点。
近存储器计算系统或近存储器计算系统的节点或组件可包含或使用各种存储器装置、控制器及互连结构以及其它事物。在实例中,系统可包括具有各种互连节点的计算结构,且节点或节点群组可使用小芯片实施。小芯片是用于集成各种处理功能性的新兴技术。通常,小芯片系统由集成于中介层上且封装在一起的离散芯片(例如不同衬底或裸片上的集成电路(IC))组成。此布置不同于在一个衬底(例如单个裸片)上含有相异装置块(例如知识产权(IP)块)的单个芯片(例如IC),例如片上系统(SoC)或集成于板上的离散封装装置。一般来说,小芯片提供比离散封装装置更好的性能(例如更低功耗、减少延时等),且小芯片提供比单裸片芯片更大的生产效益。这些生产效益可包含更高良率或降低开发成本及时间。
图1大体上说明近存储器计算系统或CNM系统102的第一实例。CNM系统102的实例包含多个不同存储器计算节点,例如可各自包含各种近存储器计算装置。系统中的每一节点可在其自身操作系统(OS)域(例如Linux以及其它)中操作。在实例中,节点可共同存在于CNM系统102的共同OS域中。
图1的实例包含CNM系统102的第一存储器计算节点104的实例。CNM系统102可具有使用扩展结构106耦合的多个节点,例如包含第一存储器计算节点104的不同例子。在实例中,CNM系统102的架构可支持使用扩展结构106对高达n个不同存储器计算节点(例如n=4096)进行缩放。如下文进一步论述,CNM系统102中的每一节点可为多个装置的组合件。
CNM系统102可包含用于系统中的各种节点的全局控制器,或系统中的特定存储器计算节点可任选地用作相同系统中的一或多个其它存储器计算节点的主机或控制器。因此,CNM系统102中的各个节点可类似或不同地配置。
在实例中,CNM系统102中的每一节点可包括使用指定操作系统的主机系统。操作系统可在CNM系统102中的各个节点之间共同或不同。在图1的实例中,第一存储器计算节点104包括主机系统108、第一交换机110及第一存储器计算装置112。主机系统108可包括处理器,例如可包含X86、ARM、RISC-V或其它类型的处理器。第一交换机110可经配置以例如使用本文中通常称为芯片到芯片协议接口(CTCPI)的专用或其它通信协议促进第一存储器计算节点104或CNM系统102的装置之间或中的通信。即,CTCPI可包含CNM系统102独有的专用接口,或可包含或使用例如计算高速链接(CXL)接口、外围组件互连高速(PCIe)接口或小芯片协议接口(CPI)等的其它接口。第一交换机110可包含经配置以使用CTCPI的交换机。举例来说,第一交换机110可包含CXL交换机、PCIe交换机、CPI交换机或其它类型的交换机。在实例中,第一交换机110可经配置以耦合不同配置的端点。举例来说,第一交换机110可经配置以例如在PCIe与CPI格式以及其它之间转换分组格式。
CNM系统102在本文中以各种实例配置描述,例如包括节点的系统,且每一节点可包括各种芯片(例如处理器、交换机、存储器装置等)。在实例中,CNM系统102中的第一存储器计算节点104可包含使用小芯片实施的各种芯片。在下文论述的CNM系统102的基于小芯片的配置中,小芯片间通信以及系统内的额外通信可使用CPI网络。本文中描述的CPI网络是CTCPI的实例,即,作为CTCPI的小芯片特定实施方案。因此,CPI的下述结构、操作及功能性可同样适用于原本可使用非基于小芯片的CTCPI实施方案实施的结构、操作及功能。除非另外明确指示,否则本文中CPI的任何论述同样适用于CTCPI。
CPI接口包含支持虚拟通道实现小芯片之间的灵活且高速交互的基于分组的网络,例如可包括第一存储器计算节点104或CNM系统102的部分。CPI可实现从小芯片内网络桥接到更广泛小芯片网络。举例来说,高级可扩展接口(AXI)是芯片内通信的规格。然而,AXI规格涵盖各种物理设计选项,例如物理通道数、信号时序、功率等。在单个芯片内,这些选项通常经选择以满足设计目标,例如功耗、速度等。然而,为了实现基于小芯片的存储器计算系统的灵活性,例如使用CPI的适配器可介接于可经实施于各个小芯片中的各个AXI设计选项之间。通过实现物理通道到虚拟通道映射及用分组协议囊封基于时间的信令,CPI可用于桥接小芯片内网络,例如在特定存储器计算节点内、跨更广泛小芯片网络,例如跨第一存储器计算节点104或跨CNM系统102。
CNM系统102可扩展以包含多节点配置。即,第一存储器计算节点104或其它不同配置的存储器计算节点的多个不同例子可使用扩展结构106耦合以提供扩展系统。存储器计算节点中的每一者可运行其自身操作系统且可经配置以共同协调全系统资源使用。
在图1的实例中,第一存储器计算节点104的第一交换机110经耦合到扩展结构106。扩展结构106可提供可促进不同存储器计算节点中及之间的通信的交换机(例如CTCPI交换机、PCIe交换机、CPI交换机或其它交换机)。在实例中,扩展结构106可有助于各个节点在分区全局地址空间(PGAS)中通信。
在实例中,来自第一存储器计算节点104的第一交换机110经耦合到一或多个不同存储器计算装置,例如包含第一存储器计算装置112。第一存储器计算装置112可包括本文中称为近存储器计算(CNM)小芯片的基于小芯片的架构。第一存储器计算装置112的封装版本可包含例如一或多个CNM小芯片。小芯片可使用CTCPI通信耦合以实现高带宽及低延时。
在图1的实例中,第一存储器计算装置112可包含片上网络(NOC)或第一NOC 118。通常,NOC是装置内的连接一组特定端点的互连网络。在图1中,第一NOC 118可在第一存储器计算装置112的各种存储器、计算资源及端口之间提供通信及连接性。
在实例中,第一NOC 118可包括折叠Clos拓扑,例如在存储器计算装置的每一例子内或作为耦合节点中的多个存储器计算装置的网格。Clos拓扑(例如可使用多个较小基数交叉开关提供与较高基数交叉开关拓扑相关联的功能性)提供各种益处。举例来说,Clos拓扑可跨NOC展现一致延时及对分带宽。
第一NOC 118可包含各种相异交换机类型,包含集线器交换机、边缘交换机及端点交换机。交换机中的每一者可经构造为在输入与输出节点之间提供基本上均匀延时及带宽的交叉开关。在实例中,端点交换机及边缘交换机可包含两个单独交叉开关:一个用于前往集线器交换机的业务,且另一个用于离开集线器交换机的业务。集线器交换机可经构造为将所有输入切换到所有输出的单个交叉开关。
在实例中,集线器交换机可各自具有多个端口(例如各自四个或六个端口),例如取决于特定集线器交换机是否参与芯片间通信。参与芯片间通信的集线器交换机数目可由芯片间带宽要求设置。
第一NOC 118可支持计算元件与存储器之间的各种有效负载(例如,从8到64字节有效负载;可类似地使用其它有效负载大小)。在实例中,第一NOC 118可经优化用于相对较小有效负载(例如8到16个字节)以高效处置对稀疏数据结构的存取。
在实例中,第一NOC 118可经由第一物理层接口114、PCIe从属模块116或端点及PCIe主模块126或根端口耦合到外部主机。即,第一物理层接口114可包含允许外部主机处理器耦合到第一存储器计算装置112的接口。外部主机处理器可例如使用PCIe交换机或其它本机协议交换机任选地耦合到一或多个不同存储器计算装置。通过基于PCIe的交换机与外部主机处理器通信可将装置到装置通信限于由交换机支持的通信。相比之下,例如使用CTCPI通过存储器计算装置本机协议交换机的通信可允许不同存储器计算装置之间或中的更全通信,其包含支持分区全局地址空间,例如用于创建工作线程及发送事件。
在实例中,CTCPI协议可由第一存储器计算装置112中的第一NOC 118使用,且第一交换机110可包含CTCPI交换机。CTCPI交换机可允许CTCPI分组从例如第一存储器计算装置112的源存储器计算装置传送到不同目的地存储器计算装置(例如,在相同或其它节点上),例如无需转换成另一分组格式。
在实例中,第一存储器计算装置112可包含内部主机处理器122。内部主机处理器122可经配置以例如使用内部PCIe主模块126与第一NOC 118或第一存储器计算装置112的其它组件或模块通信,此可有助于消除会消耗时间及能量的物理层。在实例中,内部主机处理器122可基于RISC-V ISA处理器,且可使用第一物理层接口114在第一存储器计算装置112外部例如与到第一存储器计算装置112的其它存储装置、联网或其它外围设备通信。内部主机处理器122可控制第一存储器计算装置112且可用作用于操作系统相关功能性的代理。内部主机处理器122可包含相对少量处理核心(例如2到4个核心)及主机存储器装置124(例如,包括DRAM模块)。
在实例中,内部主机处理器122可包含PCI根端口。当内部主机处理器122在使用中时,其根端口中的一者可经连接到PCIe从属模块116。内部主机处理器122的根端口中的另一者可经连接到第一物理层接口114以例如提供与外部PCI外围设备的通信。当内部主机处理器122停用时,PCIe从属模块116可耦合到第一物理层接口114以允许外部主机处理器与第一NOC 118通信。在具有多个存储器计算装置的系统的实例中,第一存储器计算装置112可经配置以用作系统主机或控制器。在此实例中,内部主机处理器122可在使用中,且相应其它存储器计算装置中的内部主机处理器的其它例子可停用。
内部主机处理器122可在第一存储器计算装置112加电时配置以例如允许主机初始化。在实例中,内部主机处理器122及其相关联数据路径(例如,包含第一物理层接口114、PCIe从属模块116等)可从输入引脚配置到第一存储器计算装置112。引脚中的一或多者可用于启用或停用内部主机处理器122且相应地配置PCI(或其它)数据路径。
在实例中,第一NOC 118可经由扩展结构接口模块136及第二物理层接口138耦合到扩展结构106。扩展结构接口模块136或SIF可促进第一存储器计算装置112与例如分区全局地址空间(PGAS)的装置空间之间通信。PGAS可经配置使得例如第一存储器计算装置112的特定存储器计算装置可例如使用加载/存储范例存取不同存储器计算装置上(例如,在相同或不同节点上)的存储器或其它资源。可使用各种可扩展结构技术,其包含CTCPI、CPI、Gen-Z、PCI或经由CXL桥接的以太网。扩展结构106可经配置以支持各种分组格式。在实例中,扩展结构106支持无序分组通信或支持有序分组,例如可使用路径标识符跨多个等效路径扩展带宽。扩展结构106通常可支持远程操作,例如远程存储器读取、写入及其它内置原子学、远程存储器原子学、远程存储器计算装置发送事件及远程存储器计算装置调用及返回操作。
在实例中,第一NOC 118可耦合到一或多个不同存储器模块,例如包含第一存储器装置128。第一存储器装置128可包含各种存储器装置,例如LPDDR5或GDDR6等。在图1的实例中,第一NOC 118可经由可专用于特定存储器模块的存储器控制器130协调与第一存储器装置128的通信。在实例中,存储器控制器130可包含存储器模块高速缓存及原子操作模块。原子操作模块可经配置以提供相对高处理量原子运算符,例如包含整数及浮点运算符。原子操作模块可经配置以将其运算符应用到存储器模块高速缓存(例如包括SRAM存储器侧高速缓存)内的数据,借此允许使用相同存储器位置在最小处理量降级下进行背靠背原子操作。
存储器模块高速缓存可提供频繁存取的存储器位置的存储,例如不必重新存取第一存储器装置128。在实例中,存储器模块高速缓存可经配置以高速缓存仅用于存储器控制器130的特定例子的数据。在实例中,存储器控制器130包含经配置以对接例如包含DRAM装置的第一存储器装置128的DRAM控制器。存储器控制器130可提供存取调度及位错误管理以及其它功能。
在实例中,第一NOC 118可耦合到混合线程处理器(HTP 140)、混合线程结构(HTF142)及主机接口及分派模块(HIF 120)。HIF 120可经配置以促进对基于主机的命令请求队列及响应队列的存取。在实例中,HIF 120可分派在HTP 140或HTF 142的处理器或计算元件上执行的新线程。在实例中,HIF 120可经配置以跨HTP 140模块及HTF 142模块维持工作量平衡。
混合线程处理器或HTP 140可包含加速器,例如可基于RISC-V指令集。HTP 140可包含高度线程、事件驱动处理器,其中线程可在单个指令旋转中执行以例如维持高指令处理量。HTP 140包括支持低开销线程能力、事件发送/接收及共享存储器原子运算符的相对较少自定义指令。
混合线程结构或HTF 142可包含加速器,例如可包含非冯·诺依曼、粗粒度、可重新配置处理器。HTF 142可经优化用于高级语言操作及数据类型(例如整数或浮点)。在实例中,HTF 142可支持数据流计算。HTF 142可经配置以使用可用于第一存储器计算装置112上的基本上所有存储器带宽,例如当执行存储器限制计算内核时。
CNM系统102的HTP及HTF加速器可使用各种高级结构化编程语言编程。举例来说,HTP及HTF加速器可使用C/C++编程,例如使用LLVM编译器框架。HTP加速器可利用开源编译器环境,例如具有经配置以改进存储器存取效率、提供消息传递机制及管理事件以及其它事情的各种附加自定义指令集。在实例中,HTF加速器可经设计以能够使用高级编程语言编程HTF 142,且编译器可产生在HTF 142硬件上运行的模拟器配置文件或二进制文件。HTF142可提供中级语言来精确且简洁地表达算法,同时隐藏HTF加速器本身的配置细节。在实例中,HTF加速器工具链可使用LLVM前端编译器及LLVM中间表示(IR)对接HTF加速器后端。
图2大体上说明根据实施例的存储器计算装置的存储器子系统200的实例。存储器子系统200的实例包含控制器202、可编程原子单元208及第二NOC 206。控制器202可包含或使用可编程原子单元208以使用存储器装置204中的信息实施操作。在实例中,存储器子系统200包括来自图1的实例的第一存储器计算装置112的一部分,例如包含第一NOC 118或存储器控制器130的部分。
在图2的实例中,第二NOC 206耦合到控制器202,且控制器202可包含存储器控制模块210、本地高速缓存模块212及内置原子模块214。在实例中,内置原子模块214可经配置以处置相对简单、单循环整数原子。内置原子模块214可以相同于例如正常存储器读取或写入操作的处理量执行原子。在实例中,原子存储器操作可包含将数据存储到存储器、执行原子存储器操作及接着对来自存储器的加载数据作出响应的组合。
本地高速缓存模块212(例如可包含SRAM高速缓存)可经提供以有助于减少重复存取的存储器位置的延时。在实例中,本地高速缓存模块212可为子存储器线存取提供读取缓冲。本地高速缓存模块212可特别有益于具有相对小或无数据高速缓存的计算元件。
存储器控制模块210(例如可包含DRAM控制器)可提供低级请求缓冲及调度以例如提供对例如可包含DRAM装置的存储器装置204的高效存取。在实例中,存储器装置204可包含或使用GDDR6 DRAM装置,例如具有16Gb密度及64Gb/秒峰值带宽。可类似地使用其它装置。
在实例中,可编程原子单元208可包括单循环或多循环运算符,例如可经配置以执行整数加法或例如布隆过滤器插入的更复杂多指令操作。在实例中,可编程原子单元208可经配置以执行加载及存储到存储器操作。可编程原子单元208可经配置以利用具有一组专用指令的RISC-V ISA促进与控制器202交互以原子执行用户定义操作。
可编程原子请求(例如从节点上或节点外主机接收)可经由第二NOC 206及控制器202路由到可编程原子单元208。在实例中,自定义原子操作(例如,由可编程原子单元208实施)可相同于内置原子操作(例如,由内置原子模块214实施),只是可编程原子操作可由用户而非系统架构师定义或编程。在实例中,可编程原子请求分组可通过第二NOC 206发送到控制器202,且控制器202可将请求识别为自定义原子。接着,控制器202可将经识别请求转发到可编程原子单元208。
图3大体上说明根据实施例的用于与存储器控制器一起使用的可编程原子单元302的实例。在实例中,可编程原子单元302可包括或对应于来自图2的实例的可编程原子单元208。即,图3说明可编程原子单元302(PAU)的实例中的组件,例如上文关于图2(例如,在可编程原子单元208中)或图1(例如,在存储器控制器130的原子操作模块中)指出的组件。如图3中说明,可编程原子单元302包含PAU处理器或PAU核心306、PAU线程控制304、指令SRAM 308、数据高速缓存310及对接存储器控制器314的存储器接口312。在实例中,存储器控制器314包括来自图2的实例的控制器202的实例。
在实例中,PAU核心306是管线式处理器,使得多个级的不同指令每时钟循环一起执行。PAU核心306可包含桶形多线程处理器,其具有在每一时钟循环之后在不同寄存器文件(例如含有当前处理状态的若干组寄存器)之间切换的线程控制304电路系统。此实现在当前执行线程之间进行高效上下文切换。在实例中,PAU核心306支持8个线程,从而导致8个寄存器文件。在实例中,一些或所有寄存器文件未集成到PAU核心306中,而是驻留于本地数据高速缓存310或指令SRAM 308中。此通过消除用于此类存储器中的寄存器的传统触发器来降低PAU核心306的电路复杂性。
本地PAU存储器可包含指令SRAM 308,例如可包含用于各个原子的指令。指令包括支持各种基于应用的原子运算符的指令集。当原子运算符例如由应用小芯片请求时,对应于原子运算符的一组指令由PAU核心306执行。在实例中,指令SRAM 308经分区以建立指令集。在此实例中,由请求过程请求的特定可编程原子运算符可按分区号识别可编程原子运算符。分区号可在可编程原子运算符在可编程原子单元302上注册(例如,加载到可编程原子单元302上)时建立。用于可编程指令的其它元数据可经存储于存储器中(例如,在分区表中),在可编程原子单元302本地的存储器中。
在实例中,原子运算符操纵指令SRAM 308,其通常在原子运算符的线程完成时同步(例如刷新)。因此,除从外部存储器(例如从存储器控制器314)初始加载之外,可减少可编程原子运算符线程执行期间大多数存储器操作的延时。
如果潜在危险状况将防止存储器请求,那么例如PAU核心306的管线式处理器会在执行线程尝试发出此请求时发生问题。此处,存储器请求将从存储器控制器314检索数据,无论其是来自存储器控制器314上的高速缓存还是裸片外存储器。为了解决此问题,PAU核心306经配置以拒绝线程的存储器请求。通常,PAU核心306或线程控制304可包含启用管线中的一或多个线程重新调度点的电路系统。此处,拒绝发生于管线中超过这些线程重新调度点(例如,在这些线程重新调度点之后)的点处。在实例中,危险发生于重新调度点外。此处,线程中的前一指令在存储器请求指令通过其中可提出存储器请求的管线阶段之前的最后一个线程重新调度点之后造成危险。
在实例中,为了拒绝存储器请求,PAU核心306经配置以确定(例如检测到)存储器请求中指示的存储器上存在危险。此处,危险表示使得允许(例如执行)存储器请求将导致线程的不一致状态的任何状况。在实例中,危险是飞行中存储器请求。此处,无论指令SRAM308是否包含用于所请求存储器地址的数据,存在飞行中存储器请求不确定所述地址处的指令SRAM 308中的数据应为何。因此,线程必须等待飞行中存储器请求完成以对当前数据进行操作。当存储器请求完成时,危险清除。
在实例中,危险是用于所请求存储器地址的指令SRAM 308中的脏高速缓存线。尽管脏高速缓存线通常指示高速缓存中的数据是当前的且此数据的存储器控制器版本不是,问题可出现于不从高速缓存操作的线程指令上。此指令的实例使用存储器控制器314的内置原子运算符或其它单独硬件块。在存储器控制器的背景下,内置原子运算符可与可编程原子单元302分离且不存取PAU内部的高速缓存或指令SRAM 308。因此,对内置原子运算符的存储器请求从高速缓存或裸片外存储器处理。如果高速缓存线是脏的,那么内置原子运算符不会对大多数当前数据进行操作直到高速缓存经刷新以使高速缓存或其它或裸片外存储器同步。此相同情况可发生于例如加密块、编码器等的存储器控制器的其它硬件块。
PAU核心306可经配置以将线程放入到存储器响应路径中。尽管线程的存储器请求未发出,但可宛如提出存储器请求那样在很大程度上处置线程。此实现线程的平滑重新调度且不影响其它线程且无需将线程停止电路系统添加到PAU核心306的各种管线阶段。此方法会产生两个问题。第一,因为存储器请求实际上未发出,所以线程可跳过存储器请求及响应路径的一些阶段。第二,因为没有存储器响应即将发生,所以数据不会由线程更新(例如,将没有寄存器回写)。
为了解决第一问题,PAU核心306可经配置以将线程添加到等待插入到存储器响应路径中的线程队列。此处,PAU核心306维持队列且将线程推送到队列上。以此方式,处理器核心的存储器响应路径可从队列弹出下一线程以放入到标准存储器响应路径中。
为了解决第二问题,PAU核心306经配置以提供线程不会发生寄存器回写的指示符。指示符(例如旗标)可为添加到队列中的线程元数据或别处的一些位以指示回写机制不会关于此例子中的线程操作。因此,当线程出现于存储器响应路径中的寄存器文件写入块处时,不会发生寄存器文件写入。
在实例中,为了提供线程不会发生寄存器回写的指示符,PAU核心306经配置以创建包含指示符的存储器响应。此处,线程插入到存储器响应路径中的方式是通过由PAU核心306制造而非来自存储器控制器314的存储器响应。因此,关于存储器响应路径,线程处置标准存储器响应。然而,包含指示符意味着寄存器或高速缓存写入块不会执行任何动作。在实例中,存储器响应被放入到队列中以等待在存储器响应路径中的较早阶段(例如从存储器控制器解码、错误校正等)之后插入到存储器响应路径中。
线程控制304可经配置以重新调度一线程与存储器响应路径中的其它线程。在实例中,线程从等待插入到存储器响应路径中的线程队列弹出。在实例中,指示符由存储器响应路径处理以将线程从等待来自存储器的响应的线程队列移动到存储器响应路径中的存储器响应重新调度队列。此处,指示符或其它元数据由存储器响应路径用于确定其它待决线程中的线程的正确插入时间。
图4说明混合线程处理器(HTP)加速器或HTP加速器400的实例。根据实施例,HTP加速器400可包括存储器计算装置的一部分。在实例中,HTP加速器400可包含或包括来自图1的实例的HTP 140。HTP加速器400包含例如HTP核心402、指令高速缓存404、数据高速缓存406、转译块408、存储器接口410及线程控制器412。HTP加速器400可进一步包含分派接口414及NOC接口416,例如用于对接NOC,例如来自图1的实例的第一NOC 118、来自图2的实例的第二NOC 206或其它NOC。
在实例中,HTP加速器400包含基于RISC-V指令集的模块,且可包含支持低开销、具线程能力的混合线程(HT)语言的相对少量其它或额外自定义指令。HTP加速器400可包含高度线程处理器核心(HTP核心402),其中或用其可在单个指令旋转中执行线程以例如维持高指令处理量。在实例中,线程可在其等待其它待决事件完成时暂停。此可允许计算资源高效用于相关工作而非轮询上。在实例中,多线程屏障同步可使用高效HTP到HTP及HTP到主机/从主机消息发送,例如可允许数千个线程在例如数十个时钟循环中初始化或醒来。
在实例中,分派接口414可包括HTP加速器400的功能块用于处置基于硬件的线程管理。即,分派接口414可管理工作到HTP核心402或其它加速器的分派。然而,非HTP加速器通常无法分派工作。在实例中,从主机分派的工作可使用驻留于例如主机主存储器(例如基于DRAM的存储器)中的分派队列。另一方面,从HTP加速器400分派的工作可使用驻留于SRAM中(例如在特定节点内的目标HTP加速器400的分派内)的分派队列。
在实例中,HTP核心402可包括代表线程执行指令的一或多个核心。即,HTP核心402可包含指令处理块。HTP核心402可进一步包含或可耦合到线程控制器412。线程控制器412可提供HTP核心402内的每一有效线程的线程控制及状态。数据高速缓存406可包含用于主机处理器(例如,用于本地及远程存储器计算装置,包含用于HTP核心402)的高速缓存,且指令高速缓存404可包含由HTP核心402使用的高速缓存。在实例中,数据高速缓存406可经配置用于读取及写入操作,且指令高速缓存404可经配置用于只读操作。
在实例中,数据高速缓存406是每硬件线程提供的小高速缓存。数据高速缓存406可临时存储由拥有线程使用的数据。数据高速缓存406可由HTP加速器400中的硬件或软件管理。举例来说,硬件可经配置以根据需要自动分配或驱逐线,因为加载及存储操作由HTP核心402执行。软件(例如使用RISC-V指令)可确定应高速缓存哪些存储器存取及应何时使线无效或回写到其它存储器位置。
HTP加速器400上的数据高速缓存具有各种益处,其包含使较大存取更高效用于存储器控制器,从而允许执行线程避免停止。然而,在某些情况下,使用高速缓存导致低效率。实例包含其中仅存取数据一次的存取且致使高速缓存线颠簸。为了帮助解决此问题,HTP加速器400可使用一组自定义加载指令来迫使加载指令检查高速缓存命中且在高速缓存未命中时发出对所请求操作数的存储器请求且不将所获得数据放入数据高速缓存406中。因此,HTP加速器400包含各种不同类型的加载指令,其包含非高速缓存及高速缓存线加载。如果脏数据存在于高速缓存中,那么非高速缓存加载指令使用高速缓存数据。非高速缓存加载指令忽略高速缓存中的干净数据,且不将所存取数据写入到数据高速缓存。针对高速缓存线加载指令,完整数据高速缓存线(例如,包括64个字节)可从存储器加载到数据高速缓存406中,且可将经寻址存储器加载到指定寄存器中。如果干净或脏数据在数据高速缓存406中,那么这些加载可使用高速缓存数据。如果所引用存储器位置不在数据高速缓存406中,那么整个高速缓存线可从存储器存取。当引用顺序存储器位置(例如存储器复制操作)时,使用高速缓存线加载指令可减少高速缓存未命中,但如果所引用存储器数据未被使用,那么还会浪费NOC接口416处的存储器及带宽。
在实例中,HTP加速器400包含非高速缓存的自定义存储指令。非高速缓存存储指令可有助于避免用未循序写入到存储器的写入数据使数据高速缓存406颠簸。
在实例中,HTP加速器400进一步包含转译块408。转译块408可包含用于存储器计算装置的本地存储器的虚拟到物理转译块。举例来说,主机处理器(例如在HTP核心402中)可执行加载或存储指令,且指令可产生虚拟地址。虚拟地址可经转译成主机处理器的物理地址,例如使用来自转译块408的转译表。存储器接口410例如可包含HTP核心402与NOC接口416之间的接口。
图5说明根据实施例的存储器计算装置的混合线程结构(HTF)或HTF 500的表示的实例。在实例中,HTF 500可包含或包括来自图1的实例的HTF 142。HTF 500是粗粒度、可重新配置的计算结构,其可经优化用于高级语言操作数类型及运算符(例如,使用C/C++或其它高级语言)。在实例中,HTF 500可包含使硬化SIMD算术单元互连的可配置、n位宽(例如512位宽)数据路径。
在实例中,HTF 500包括HTF集群502,其包含多个HTF片块,包含实例片块504或片块N。每一HTF片块可包含具有本地存储器及算术函数的一或多个计算元件。举例来说,每一片块可包含支持整数及浮点运算的计算管线。在实例中,数据路径、计算元件及其它基础设施可经实施为硬化IP以提供最大性能同时最小化功耗及重新配置时间。
在图5的实例中,构成HTF集群502的片块经线性布置,且集群中的每一片块可耦合到HTF集群502中的一或多个其它片块。在图5的实例中,实例片块504或片块N耦合到四个其它片块,其包含经由标记为SF IN N-2的端口耦合到基础片块510(例如片块N-2)、经由标记为SF IN N-1的端口耦合到相邻片块512(例如片块N-1)、及经由标记为SF IN N+1的端口耦合到片块N+1及经由标记为SF IN N+2的端口耦合到片块N+2。实例片块504可经由相应输出端口(例如标记为SF OUT N-1、SF OUT N-2、SF OUT N+1及SF OUT N+2的输出端口)耦合到相同或其它片块。在此实例中,各个片块的名称的有序列表是片块的位置的概念指示。在其它实例中,构成HTF集群502的片块可布置成网格或其它配置,其中每一片块类似地耦合到网格中的其最近相邻者中的一或若干者。提供于集群的边缘处的片块可任选地具有到相邻片块的较少连接。举例来说,片块N-2或图5的实例中的基础片块510可仅耦合到相邻片块512(片块N-1)及实例片块504(片块N)。可类似地使用更少或额外片块间连接。
HTF集群502可进一步包含存储器接口模块,其包含第一存储器接口模块506。存储器接口模块可将HTF集群502耦合到NOC,例如第一NOC 118。在实例中,存储器接口模块可允许集群内的片块对存储器计算系统中(例如,在系统中的相同或不同节点中)的其它位置提出请求。即,HTF 500的表示可包括可跨多个节点分布的较大结构的一部分,例如每一节点处具有一或多个HTF片块或HTF集群。可在较大结构的背景内的片块或节点之间提出请求。
在图5的实例中,HTF集群502中的片块使用同步结构(SF)耦合。同步结构可提供HTF集群502中的特定片块与其相邻片块之间的通信,如上文描述。每一HTF集群502可进一步包含异步结构(AF),其可提供例如集群中的片块、集群中的存储器接口及集群中的分派接口508之间的通信。
在实例中,同步结构可交换包含数据及控制信息的消息。控制信息可尤其包含指令RAM地址信息或线程标识符。控制信息可用于建立数据路径,且数据消息字段可经选择为路径的源。通常,控制字段可较早提供或接收,使得其可用于配置数据路径。举例来说,为了帮助最小化通过片块中的同步域管线的任何延迟,控制信息可在数据字段之前的几个时钟循环到达片块。各个寄存器可经提供以帮助协调管线中的数据流时序。
在实例中,HTF集群502中的每一片块可包含多个存储器。每一存储器可具有相同于数据路径的宽度(例如512个位)且可具有指定深度,例如在512到1024个元素的范围内。片块存储器可用于存储支持数据路径操作的数据。所存储数据可包含例如作为内核的集群配置的部分加载的常数或可包含作为数据流的部分计算的变量。在实例中,片块存储器可从异步结构写入作为来自另一同步域的数据传送,或可包含例如由另一同步域启动的加载操作的结果。片块存储器可经由同步域中的同步数据路径指令执行来读取。
在实例中,HTF集群502中的每一片块可具有专用指令RAM(INST RAM)。在具有16个片块的HTF集群502及具有64个条目的指令RAM例子的实例中,集群可允许算法与高达1024个乘法移位及/或ALU操作映射。各个片块可例如使用同步结构任选地一起用管线运输以允许以最小存储器存取进行数据流计算,因此最小化延时且降低功耗。在实例中,异步结构可允许存储器引用与计算并行进行,借此提供更高效串流内核。在实例中,各个片块可包含对基于循环的构造的内置支持,且可支持嵌套循环内核。
同步结构可允许多个片块用管线运输,例如无需数据排队。参与同步域的瓦片可例如用作单个管线式数据路径。同步域的第一或基础片块(例如图5的实例中的片块N-2)可通过管线式片块启动工作线程。基础片块可负责依预定义节奏开始工作,本文中称为轮辐计数。举例来说,如果轮辐计数是3,那么基础片块可每隔2个时钟循环启动工作。
在实例中,同步域包括HTF集群502中的一组经连接片块。线程的执行可在域的基础片块处开始且可从基础片块经由同步结构进展到相同域中的其它片块。基础片块可提供对第一片块执行的指令。第一片块可默认提供其它经连接片块执行的相同指令。然而,在一些实例中,基础片块或后续片块可有条件地指定或使用替代指令。替代指令可通过使片块的数据路径产生布尔条件值来选择,且接着可使用布尔值在当前片块的指令集与替代指令之间作出选择。
异步结构可用于执行相对于同步域异步发生的操作。HTF集群502中的每一片块可包含到异步结构的接口。入站接口可包含例如为无法立即处理的消息提供存储的FIFO缓冲或队列(例如AF IN QUEUE)。类似地,异步结构的出站接口可包含为无法立即发出的消息提供存储的FIFO缓冲或队列(例如AF OUT QUEUE)。
在实例中,异步结构中的消息可被分类为数据消息或控制消息。数据消息可包含写入到片块存储器0(MEM_0)或存储器1(MEM_1)的SIMD宽度数据值。控制消息可经配置以控制线程创建、释放资源或发出外部存储器引用。
HTF集群502中的片块可对HTF执行各种计算操作。计算操作可通过配置片块内的数据路径来执行。在实例中,片块包含对片块执行计算操作的两个功能块:乘法及移位运算块(MS OP)及算术、逻辑及位运算块(ALB OP)。两个块可经配置以执行管线式操作,例如乘法及加法或移位及加法以及其它。
在实例中,系统中的存储器计算装置的每一例子可具有用于其运算符块(例如MSOP及ALB OP)的完整支持指令集。在此情况中,二进制兼容性可跨系统中的所有装置实现。然而,在一些实例中,其可有助于维持一组基础功能性及任选指令集类,例如满足各种设计权衡,例如裸片大小。方法可类似于RISC-V指令集如何具有基础集及多个任选指令子集。
在实例中,实例片块504可包含轮辐RAM。轮辐RAM可用于指定哪一输入(例如,来自四个SF片块输入及基础片块输入中)是用于每一时钟循环的主要输入。轮辐RAM读取地址输入可源于从零计数到轮辐计数减1的计数器。在实例中,不同轮辐计数可在不同片块上(例如在相同HTF集群502内)用于允许数个切片或唯一片块例子由内循环用于确定特定应用程序或指令集的执行。在实例中,轮辐RAM可指定同步输入何时写入到片块存储器,例如当使用特定片块指令的多个输入且输入中的一者在其它者之前到达时。先到达的输入可写入到片块存储器且稍后可在所有输入可用时被读取。在此实例中,片块存储器可作为FIFO存储器被存取,且FIFO读取及写入指针可经存储于片块存储器中的基于寄存器的存储器区域或结构中。
图6A及图6B大体上说明可用于实施CNM系统102的一或多个方面的小芯片系统的实例。如上文类似地提及,CNM系统102中的节点或CNM系统102中的节点内的装置可包含基于小芯片的架构或近存储器计算(CNM)小芯片。经封装存储器计算装置可包含例如1个、2个或4个CNM小芯片。小芯片可使用高带宽低延时互连件(例如使用CPI接口)互连。通常,小芯片系统由集成于中介层上且在许多实例中根据需要通过一或多个已建网络互连以向系统提供期望功能性的离散模块(各自一“小芯片”)组成。中介层及所包含小芯片可封装在一起以促进与较大系统的其它组件互连。每一小芯片可包含一或多个个别集成电路(IC)或“芯片”(可能与离散电路组件组合),且可耦合到相应衬底以促进附接到中介层。系统中的大多数或所有小芯片可个别经配置以通过已建网络通信。
小芯片配置为系统的个别模块不同于此系统实施于在一个衬底(例如单个裸片)上含有相异装置块(例如知识产权(IP)块)的单个芯片上,例如片上系统(SoC)或集成于印刷电路板(PCB)上的多个离散封装装置。一般来说,小芯片提供比离散封装装置更好的性能(例如更低功耗、减少延时等),且小芯片提供比单裸片芯片更大的生产效益。这些生产效益可包含更高良率或减少开发成本及时间。
小芯片系统可包含例如一或多个应用(或处理器)小芯片及一或多个支持小芯片。此处,应用与支持小芯片之间的相异性仅为参考小芯片系统的可能设计案例。因此,例如,合成视觉小芯片系统可包含(仅通过实例)产生合成视觉输出的应用小芯片以及支持小芯片,例如存储器控制器小芯片、传感器接口小芯片或通信小芯片。在典型用例中,合成视觉设计者可设计应用小芯片且从其他方供应支持小芯片。因此,设计支出(例如,在时间或复杂性方面)因为避免体现于支持小芯片中的功能性的设计及生产而降低。
小芯片还支持原本可能很难的IP块的紧密集成,例如使用不同处理技术或使用不同特征大小(或利用不同接触技术或间隔)制造的IP块。因此,具有不同物理、电或通信特性的多个IC或IC组合件可以模块化方式组装以向组合件提供各种期望功能性。小芯片系统还可促进调适以适应小芯片系统将并入到其中的不同较大系统的需求。在实例中,IC或其它组合件可针对特定功能优化功率、速度或发热(如传感器可发生),可比尝试在单个裸片上如此做更容易地与其它装置集成。另外,通过减小裸片的整体大小,小芯片的良率趋向于高于更复杂单裸片装置的良率。
图6A及图6B大体上说明根据实施例的小芯片系统的实例。图6A是安装于外围板604上的小芯片系统602的表示,外围板604可通过例如外围组件互连高速(PCIe)连接到更大计算机系统。小芯片系统602包含封装衬底606、中介层608及四个小芯片:应用小芯片610、主机接口小芯片612、存储器控制器小芯片614及存储器装置小芯片616。其它系统可包含许多额外小芯片以提供将从以下论述明白的额外功能性。小芯片系统602的封装用盖/盖子618说明,但可使用用于小芯片系统的其它封装技术及结构。图6B是为清楚起见而标记小芯片系统中的组件的框图。
应用小芯片610被说明为包含小芯片系统NOC 620以支持小芯片网络622进行小芯片间通信。在实例实施例中,小芯片系统NOC 620可经包含于应用小芯片610上。在实例中,来自图1的实例的第一NOC 118可响应于所选择的支持小芯片(例如主机接口小芯片612、存储器控制器小芯片614及存储器装置小芯片616)而定义,因此使设计者能够选择适于小芯片系统NOC 620的数目或小芯片网络连接或交换机。在实例中,小芯片系统NOC 620可经定位于单独小芯片上或中介层608内。在本文中论述的实例中,小芯片系统NOC 620实施小芯片协议接口(CPI)网络。
在实例中,小芯片系统602可包含或包括第一存储器计算节点104或存储器第一存储器计算装置112的一部分。即,第一存储器计算装置112的各个块或组件可包含可安装于外围板604、封装衬底606及中介层608上的小芯片。第一存储器计算装置112的接口组件可大体上包括主机接口小芯片612,第一存储器计算装置112的存储器及存储器控制相关组件可大体上包括存储器控制器小芯片614,第一存储器计算装置112的各个加速器及处理器组件可大体上包括应用小芯片610或其例子,等等。
CPI接口(例如可用于系统中的小芯片之间或中的通信)是支持虚拟通道实现小芯片之间的灵活及高速交互的基于分组的网络。CPI实现从小芯片内网络桥接到小芯片网络622。举例来说,高级可扩展接口(AXI)是设计芯片内通信的广泛使用规格。然而,AXI规格涵盖各种物理设计选项,例如物理通道数目、信号时序、功率等。在单个芯片内,这些选项通常经选择以满足设计目标,例如功耗、速度等。然而,为了实现小芯片系统的灵活性,例如CPI的适配器用于介接于可经实施于各个小芯片中的各个AXI设计选项之间。通过启用物理通道到虚拟通道映射及用分组协议囊封基于时间的信令,CPI跨小芯片网络622桥接小芯片内网络。
CPI可使用各种不同物理层来传输分组。物理层可包含简单导电连接,或可包含驱动器以增大电压或否则促进在较长距离内传输信号。一个此物理层的实例可包含高级接口总线(AIB),在各个实例中,其可经实施于中介层608中。AIB使用源同步数据传送在转发时钟内传输及接收数据。分组以关于所传输时钟的单倍数据速率(SDR)或双倍数据速率(DDR)跨AIB传送。各个通道宽度由AIB支持。通道可经配置以具有对称数目个传输(TX)及接收(RX)输入/输出(I/O),或具有非对称数目个传输器及接收器(例如全传输器或全接收器)。通道可取决于哪一小芯片提供主时钟而用作主或从属AIB。AIB I/O单元支持三种时钟模式:异步(即,非时钟)、SDR及DDR。在各个实例中,非时钟模式用于时钟及一些控制信号。SDR模式可使用专用仅SDR I/O单元或使用双SDR/DDR I/O单元。
在实例中,CPI分组协议(例如点到点或可路由)可在AIB通道内使用对称接收及传输I/O单元。CPI串流协议允许更灵活使用AIB I/O单元。在实例中,用于串流模式的AIB通道可将I/O单元配置为全TX、全RX或一半TX及一半RX。CPI分组协议可在SDR或DDR操作模式中使用AIB通道。在实例中,AIB通道以用于SDR模式的80个I/O单元(即,40个TX及40个RX)及用于DDR模式的40个I/O单元的增量配置。CPI串流协议可在SDR或DDR操作模式中使用AIB通道。此处,在实例中,AIB通道以用于SDR及DDR两种模式的40个I/O单元递增。在实例中,每一AIB通道被指派唯一接口标识符。标识符在CPI复位及初始化期间用于确定跨相邻小芯片的成对AIB通道。在实例中,接口标识符是包括7位小芯片标识符、7位列标识符及6位链路标识符的20位值。AIB物理层使用AIB带外移位寄存器传输接口标识符。20位接口标识符使用移位寄存器的位32到51跨AIB接口在两个方向上传送。
AIB将一组堆叠AIB通道定义为AIB通道列。AIB通道列具有某数目个AIB通道加辅助通道。辅助通道含有用于AIB初始化的信号。列内的所有AIB通道(除辅助通道之外)具有相同配置(例如全TX、全RX或一半TX及一半RX,以及具有相同数目个数据I/O信号)。在实例中,AIB通道从相邻于AUX通道的AIB通道开始以连续递增顺序编号。相邻于AUX的AIB通道被定义为AIB通道0。
通常,个别小芯片上的CPI接口可包含序列化-反序列化(SERDES)硬件。SERDES互连件非常适于其中期望具有低信号计数的高速信令的案例。然而,SERDES可导致用于多路复用及解多路复用、错误检测或校正(例如,使用块级循环冗余校验(CRC))、链路级重试或转发错误校正的额外功耗及更长延时。然而,当低延时或能量消耗是超短距离小芯片到小芯片互连件的主要关注点时,可利用具有允许以最小延时进行数据传送的时钟速率的并行接口。CPI包含最小化这些超短距离小芯片互连件中的延时及能量消耗两者的元件。
针对流量控制,CPI采用基于信用的技术。例如应用小芯片610的接收者向例如存储器控制器小芯片614的发送者提供表示可用缓冲器的信用。在实例中,针对给定时间单位的传输,CPI接收者包含用于每一虚拟通道的缓冲器。因此,如果CPI接收者支持5条时间消息及单个虚拟通道,那么接收者具有布置于5个行中的5个缓冲器(例如,每单位时间1个行)。如果支持4个虚拟通道,那么接收者具有布置于5个行中的20个缓冲器。每一缓冲器保持1个CPI分组的有效负载。
当发送者传输到接收者时,发送者基于传输递减可用信用。一旦接收者的所有信用被消耗,则发送者停止向接收者发送分组。此确保接收者始终具有存储传输的可用缓冲器。
随着接收者处理接收到的分组及释放缓冲器,接收者将可用缓冲器空间传回给发送者。接着,此信用返回可由发送者用于允许传输额外信息。
图6A的实例包含在无需小芯片系统NOC 620的情况下使用直接小芯片到小芯片技术的小芯片网状网络624。小芯片网状网络624可经实施于CPI或另一小芯片到小芯片协议中。小芯片网状网络624通常启用小芯片管线,其中一个小芯片用作到管线的接口而管线中的其它小芯片仅对接其本身。
另外,例如一或多个工业标准存储器接口(例如(举例来说)同步存储器接口,例如DDR5、DDR6)的专用装置接口可用于将装置连接到小芯片。小芯片系统或个别小芯片到外部装置(例如较大系统)的连接可通过期望接口(例如PCIe接口)。在实例中,此外部接口可通过主机接口小芯片612实施,在所描绘实例中,主机接口小芯片612提供小芯片系统外部的PCIe接口。此专用小芯片接口626通常在工业中的公约或标准已汇集于此接口上时采用。将存储器控制器小芯片614连接到动态随机存取存储器(DRAM)存储器装置小芯片616的双倍数据速率(DDR)接口的所说明实例恰好是此工业公约。
关于各种可能支持小芯片,存储器控制器小芯片614由于几乎无所不在地使用用于存储装置用于计算机处理以及高级先进的存储器装置而可能存在于小芯片系统中。因此,使用由其他人生产的存储器装置小芯片616及存储器控制器小芯片614使小芯片系统设计者能使用由高级生产商生产的稳健产品。通常,存储器控制器小芯片614提供读取、写入或擦除数据的存储器装置特定接口。通常,存储器控制器小芯片614可提供额外特征,例如错误检测、错误校正、维护操作或原子运算符执行。针对一些类型的存储器,维护操作趋向于特定于存储器装置小芯片616,例如NAND快闪或存储类存储器中的废弃项目收集、NAND快闪存储器中的温度调整(例如交叉温度管理)。在实例中,维护操作可包含逻辑到物理(L2P)映射或管理以提供数据的物理与逻辑表示之间的间接级别。在例如DRAM的其它类型的存储器中,例如刷新的一些存储器操作在一些时间可由存储器控制器的主机处理器控制,且在其它时间由DRAM存储器装置或由与例如接口芯片(在实例中,缓冲器)的一或多个DRAM装置相关联的逻辑控制。
原子运算符是例如可由存储器控制器小芯片614执行的数据操纵。在其它小芯片系统中,原子运算符可由其它小芯片执行。举例来说,“递增”的原子运算符可由应用小芯片610在命令中指定,命令包含存储器地址及可能递增值。在接收命令之后,存储器控制器小芯片614从指定存储器地址检索数目,按在命令中指定的量递增数目,且存储结果。在成功完成之后,存储器控制器小芯片614将命令成功的指示提供到应用小芯片610。原子运算符避免跨小芯片网状网络624传输数据,从而导致此类命令的较低延时执行。
原子运算符可经分类为内置原子或可编程(例如自定义)原子。内置原子是不变地实施于硬件中的一组有限操作。可编程原子是可在存储器控制器小芯片614的可编程原子单元(PAU)(例如自定义原子单元(CAU))上执行的小程序。
存储器装置小芯片616可为易失性存储器装置或非易失性存储器,或包含易失性存储器装置或非易失性存储器的任何组合。易失性存储器装置的实例包含(但不限于)随机存取存储器(RAM),例如DRAM、同步DRAM(SDRAM)、图形双倍数据速率型6SDRAM(GDDR6SDRAM)等。非易失性存储器装置的实例包含(但不限于)与非(NAND)型快闪存储器、存储类存储器(例如相变存储器或基于忆阻器的技术)、铁电RAM(FeRAM)等。所说明实例包含存储器装置小芯片616作为小芯片,然而,装置可驻留于别处,例如在外围板604上的不同封装中。针对许多应用,可提供多个存储器装置小芯片。在实例中,这些存储器装置小芯片可各自实施一或多种存储技术,且可包含集成计算主机。在实例中,存储器小芯片可包含不同技术的多个堆叠存储器裸片,例如与一或多个动态随机存取存储器(DRAM)装置堆叠或否则通信的一或多个静态随机存取存储器(SRAM)装置。在实例中,存储器控制器小芯片614可用于协调小芯片系统602中的多个存储器小芯片之间的操作,例如在一或多个高速缓存存储级中使用一或多个存储器小芯片及将一或多个额外存储器小芯片用作主存储器。小芯片系统602可包含多个存储器控制器小芯片614例子,如可用于为单独主机、处理器、传感器、网络等提供存储器控制功能性。小芯片架构(例如在所说明系统中)提供允许适应不同存储器存储技术的优点及通过升级小芯片配置提供不同存储器接口,例如无需重新设计系统结构的剩余部分。
图7大体上说明根据实施例的存储器计算装置的基于小芯片的实施方案的实例。实例包含具有4个近存储器计算或CNM小芯片的实施方案,且CNM小芯片中的每一者可包含或包括来自图1的实例的第一存储器计算装置112或第一存储器计算节点104的部分。各个部分本身可包含或包括相应小芯片。基于小芯片的实施方案可包含或使用基于CPI的系统内通信,如上文来自图6A及图6B的实例小芯片系统602中类似地论述。
图7的实例包含第一CNM封装700,其包括多个小芯片。第一CNM封装700包含耦合到CNM NOC集线器710的第一小芯片702、第二小芯片704、第三小芯片706及第四小芯片708。第一到第四小芯片中的每一者可包括相同或基本上相同组件或模块的例子。举例来说,小芯片可各自包含HTP加速器、HTF加速器及用于存取内部或外部存储器的存储器控制器的相应例子。
在图7的实例中,第一小芯片702包含耦合到CNM NOC集线器710的第一NOC集线器边缘714。第一CNM封装700中的其它小芯片类似地包含NOC集线器边缘或端点。NOC集线器边缘中的交换机促进经由CNM NOC集线器710的小芯片内或小芯片内系统通信。
第一小芯片702可进一步包含一或多个存储器控制器716。存储器控制器716可对应于对接第一NOC集线器边缘714的相应不同NOC端点交换机。在实例中,存储器控制器716包括存储器控制器小芯片614,或包括存储器控制器130,或包括存储器子系统200或其它存储器计算实施方案。存储器控制器716可耦合到相应不同存储器装置,例如包含第一外部存储器模块712A或第二外部存储器模块712B。外部存储器模块可包含例如可由系统中的相应不同小芯片选择性存取的GDDR6存储器。
第一小芯片702可进一步包含例如经由相应不同NOC端点交换机耦合到第一NOC集线器边缘714的第一HTP小芯片718及第二HTP小芯片720。HTP小芯片可对应于HTP加速器,例如来自图1的实例的HTP 140或来自图4的实例的HTP加速器400。HTP小芯片可与HTF小芯片722通信。HTF小芯片722可对应于HTF加速器,例如来自图1的实例的HTF 142或来自图5的实例的HTF 500。
CNM NOC集线器710可通过各种接口及交换机耦合到其它小芯片或其它CNM封装中的NOC集线器例子。举例来说,CNM NOC集线器710可通过第一CNM封装700上的多个不同NOC端点耦合到CPI接口。多个不同NOC端点中的每一者可例如耦合到第一CNM封装700外部的不同节点。在实例中,CNM NOC集线器710可使用CTCPI或其它非CPI协议耦合到其它外围设备、节点或装置。举例来说,第一CNM封装700可包含经配置以使第一CNM封装700与其它装置对接的PCIe扩展结构接口(PCIE/SFI)或CXL接口(CXL)。在实例中,第一CNM封装700使用各种CPI、PCIe、CXL或其它结构耦合到的装置可组成共同全局地址空间。
在图7的实例中,第一CNM封装700包含主机接口724(HIF)及主机处理器(R5)。主机接口724可对应于例如来自图1的实例的HIF 120。主机处理器或R5可对应于来自图1的实例的内部主机处理器122。主机接口724可包含用于将第一CNM封装700耦合到其它外部装置或系统的PCI接口。在实例中,工作可由主机接口724在第一CNM封装700或第一CNM封装700内的片块集群上启动。举例来说,主机接口724可经配置以命令例如第一CNM封装700中的各种小芯片中的个别HTF片块集群进出功率/时钟门模式。
图8说明根据实施例的存储器计算装置的实例平铺。在图8中,经平铺小芯片实例800包含小芯片的不同近存储器计算集群的4个例子,其中集群耦合在一起。近存储器计算小芯片的每一例子本身可包含一或多个构成小芯片(例如主机处理器小芯片、存储器装置小芯片、接口小芯片等)。
经平铺小芯片实例800包含来自图7的实例的第一CNM封装700的例子作为其近存储器计算(CNM)集群中的一或多者。举例来说,经平铺小芯片实例800可包含第一CNM集群802,其包含第一小芯片810(例如,对应于第一小芯片702)、第二小芯片812(例如,对应于第二小芯片704)、第三小芯片814(例如,对应于第三小芯片706)及第四小芯片816(例如,对应于第四小芯片708)。第一CNM集群802中的小芯片可耦合到共同NOC集线器,共同NOC集线器又可耦合到一或若干相邻集群中(例如,在第二CNM集群804或第四CNM集群808中)的NOC集线器。
在图8的实例中,经平铺小芯片实例800包含第一CNM集群802、第二CNM集群804、第三CNM集群806及第四CNM集群808。各种不同CNM小芯片可经配置于共同地址空间中,使得小芯片可跨不同片块分配及共享资源。在实例中,集群中的小芯片可彼此通信。举例来说,第一CNM集群802可经由小芯片间CPI接口818通信耦合到第二CNM集群804,且第一CNM集群802可经由另一或相同CPI接口通信耦合到第四CNM集群808。第二CNM集群804可经由相同或另一CPI接口通信耦合到第三CNM集群806,等等。
在实例中,经平铺小芯片实例800中的近存储器计算小芯片中的一者可包含负责跨经平铺小芯片实例800的工作量平衡的主机接口(例如,对应于来自图7的实例的主机接口724)。主机接口可促进例如从经平铺小芯片实例800外部对基于主机的命令请求队列及响应队列进行存取。主机接口可使用经平铺小芯片实例800中的近存储器计算小芯片中的一或多者中的混合线程处理器及混合线程结构来分派新执行线程。
线程在CPI或CTCPI调用分组由HTP加速器接收及处理时在加速器上开始。CPI或CTCPI调用分组可源自主机接口(HIF)或HTP加速器。源自HIF的调用由主机处理器发出且定义为主线程。源自HTP的调用被定义为纤程线程。主线程与纤程线程之间的主要差异必须与创建新纤程的限制相关。
应注意,用于所有线程的堆叠存储器在主机处理器上运行的应用程序进行系统调用以指示其需要存取HTP资源时被预分配。此后,当线程在HTP背景下开始时,经预分配堆叠可供使用。主线程的堆叠大小与纤程的堆叠大小可不同。通常,主线程具有比纤程更大的堆叠大小。
HTP线程可执行线程创建(ETC)指令以在加速器资源上启动线程。加速器资源包含HTP及HTF以及通用加速器。通用加速器允许与尚未定义的加速器交互。
ETC指令指定将经创建线程完成时返回的信息。在可创建线程之前,必须为返回信息保留空间。当线程最终完成时,线程将其返回信息写入到保留空间中且等待父线程执行线程加入指令。线程加入指令从保留空间取得返回信息且将其传送到线程的X寄存器状态以稍后由父线程使用。一旦加入线程,则保留空间释放。
ETC指令可指示在所创建线程完成时无返回信息返回。此指示允许HTP加速器创建线程且无需为返回信息保留空间。在此情况中,计数器用于追踪无返回信息的突出线程的数目。
父线程执行加入指令(EFJ、EFJA)以确定子线程是否完成且获得返回结果。所有加速器资源(HTP、HTF及通用)使用此常见方法使线程完成状态返回到启动父线程。从子线程返回的状态可包含:调用方ID及0、1或2个64位返回参数。线程可在指定无返回(nr)的情况下创建。
纤程加入(EFJ)指令加入在没有无返回指示的情况下创建的线程且忽略在具有无返回指示的情况下创建的线程。EFJ指令处理单个完成子线程且将返回的调用ID及参数写入到线程X寄存器供父线程存取。
纤程创建(EFC)指令启动混合线程加速器(HTA)上的线程。高达四个HTA可存在于包含HTP及HTF的CNM装置内。
纤程创建指令在图9中说明。位0到6是指定EFC功能的操作码,且位27到31是区分EFC类型(例如HTA0、HTA1、HTA0.BF等)的功能码。位7到11、15到19及20到24的位字段是供未来使用的保留位。
EFC指令指定用于纤程创建操作的若干参数。返回变元计数(rc)字段可取得值(NR、0、1、2)。如果调用HTP具有保存返回信息的空间,那么HTP可仅在加速器资源上创建线程。返回信息包含调用方ID及高达两个64位返回值两者。纤程创建指令指定返回信息所需的存储空间。返回信息后缀选项是NR、R0、R1及R2。NR后缀暗示将存储无返回信息(即,加入指令不会提供任何信息)。R0后缀暗示调用方ID将可用于加入指令。R1及R2后缀暗示一或两个64位返回变元以及调用方ID外将被存储且可用于加入指令。
返回信息存储在执行纤程创建指令时分配。如果没有足够返回信息空间可用,那么暂停纤程创建指令直到空间变得可用。具有NR后缀的纤程创建指令需要无返回信息存储且突出数目受限于追踪突出数目的计数器的大小。R0后缀需要存储调用方ID但无返回值,且R1及R2需要调用方ID及返回值空间两者。一组所创建纤程需要的信息越多,导致的最大突出纤程越小。
EFC指令的忙碌失败版本经提供以允许加速器资源分派器在支持时使EFC指令失败。
HTP分派器支持忙碌失败且将在HTP上下文不可用于目标CNM装置上返回失败状态。纤程创建指令的状态写入到X寄存器A0。
HTF分派器不支持忙碌失败且将暂停EFC指令直到分派器能够找到HTF来开始所创建线程。
其它加速器资源分派器可选择是否支持忙碌失败。
实例汇编:
a.EFC.HTF
b.EFC.HTP.C4.NR
c.EFC.HTP.C2.R1
d.EFC.HTP.BF.C2.R1
一旦EFC指令完成,则线程在EFC指令之后立即继续指令。
应注意,主线程(即,由主机创建的线程)可执行经定义EFC指令中的任何者。HTP纤程线程(即,由HTP创建的线程)可执行忙碌失败类型的EFC指令或以非HTP加速器资源为目标的EFC。如果纤程尝试执行非忙碌失败HTP纤程创建,那么将导致陷阱。
线程可在例如HTP 140或HTF 142的加速器上创建。在本档案中,线程可指代系统或主机线程,而“纤程”可指代在HTP 140或HTF 142处创建的线程。换句话说,主机分派给HTP加速器的工作称为主线程,且HTP分派给HTP加速器的工作称为纤程线程。在许多情况中,术语“纤程线程”与术语“线程”可互换。
多种类型的线程由HTP及HTF架构支持。线程可经设计为返回或“无返回”类型的线程。如果线程是返回类型,那么纤程创建指令指定返回信息的存储空间。如果线程是“无返回”类型的线程,那么无返回信息存储是必要的,且唯一限制是系统中的可用线程的最大数目。
忙碌失败指令特征经提供以允许加速器资源分派器使线程创建指令失败。HTP分派器支持忙碌失败且将在HTP上下文不可用于目标存储器计算系统上时返回失败状态。使用此失败状态,尝试引起子纤程致力于一些工作量的线程或纤程能够确定是继续处理工作量还是划分工作量且将经划分工作量的一部分指派给所引起纤程。此在下文更详细描述。
图10是说明根据实施例的分治过程1000的伪代码列表。说明将阵列WORK[]视作一参数的Main()函数。WORK[]阵列的大小被保存于本地变量SIZE_WORK中。如果WORK[]阵列的大小大于阈值,那么WORK[]阵列被分成大小粗略相等的两个部分。线程被分配且WORK[]阵列的第二半作为参数传递到线程。线程类型被设置为NO_RETURN,此允许线程在线程完成其分配工作之后以不返回值终止。接着,线程用Start()函数启动。
如果线程成功开始,那么子线程使用WORK[]阵列的第二半作为其本地WORK[]阵列以递归方式执行主程序。
如果线程无法开始,那么当前线程可本地处理一些工作。举例来说,可处理高达阈值量的WORK[]阵列且接着可分配及开始另一线程。
当WORK[]阵列的大小小于阈值时,当前线程可处理WORK[]阵列,无需引起任何另外线程(纤程)。
应理解,作用于WORK[]阵列的Process()函数仅供说明。此外,应理解,到Main()函数的输入(即,WORK[]阵列)仅供说明。输入可为待处理地址范围、链表或其它枚举数据结构。处理到Main()函数的输入可使用逐位运算(例如位移位、逻辑逐位生成运算或其它位运算)执行。此外,尽管此处提供高级语言中的伪代码,但应理解,伪代码可用于编程硬件组件,例如专用集成电路(ASIC)或其它可编程单元。
此外,应理解,图9中的阈值比较用于说明。阈值可基于可例如在单个时钟循环中执行的操作数或能够在给定时间内由HTP执行的工作的某其它度量。
图11是说明根据实施例的分治过程1100的另一代码列表。在代码列表中,fiber_init_parent()函数采用lower_bound、upper_bound及指向parent_segment阵列的指针且在向阵列的每一元素指派-1的范围内循环。函数init_parent_divide_and_conquer()采用两个界限:指向parent_segment的指针及粒度(即,用于待处置个别过程的工作的阈值大小)。在此代码中,emd_create_fiber_htp_c4_nr_bf()进行显式调用以创建线程,其中第二参数是对此相同函数init_parent_divide_and_conquer()的递归引用(作为函数指针)。还添加界限计算以建立子线程。
图12是说明根据实施例的线程调用树1200的图。线程0接收具有说明为数字0到7的8个工作单元的工作成果。阈值等于1个工作单元。因而,因为存在8个工作单元(其超过阈值),所以线程0划分工作且引起线程1处置一半工作。在下一循环中,线程0再次检查且发现其已指派4个工作单元([0,1,2,3])(其超过阈值)且随后引起另一线程(线程2)。同时,线程1还使用类似评估且引起线程3完成由线程0指派给线程1的一半工作。此工作划分继续直到有效线程具有单个工作单元(处于或低于阈值量)。
所引起的线程(纤程)可经配置为无返回线程。在此情况中,当线程完成其工作单元的处理时,其可直接终止。
图13是根据实施例的用于线程执行控制的方法1300的实例的流程图。方法1300的操作由计算机硬件执行,例如关于图1到8(例如主机系统108、主机处理器122、PAU线程控制304、HTP核心402、线程控制器412或分派接口414)或图14(例如处理电路系统)描述的计算机硬件。
在1302,接收执行第一线程的请求,请求包含工作量。在各个实施例中,请求可通过在引起新线程的编译器处、在线程管理器处或在线程分派器处解译代码来接收。
在1304,方法1300在第一线程中测量工作量以产生度量。在实施例中,第一线程是主线程。
在1306,比较度量与阈值以确定度量超过阈值。
在1308,响应于度量超过阈值,将工作量分成由来自工作量的预定义数目个相同部分组成的一组子工作量。例如,工作量可大致分成两半,使得多个线程可处理每一半工作量。因此,在实施例中,预定义数目是2。
在1310,创建执行第二线程的第二请求,其中第二请求包含所述一组子工作量的第一构件。在实施例中,第二线程是纤程线程。
在实施例中,请求包含经设置的忙碌失败字段。在另一实施例中,执行第二线程的第二请求失败,且响应于执行第二线程的第二请求失败且忙碌失败字段被设置,方法1300通过继续处理所述一组子工作量的第二构件且创建执行第二线程的第三请求来继续,第三请求包含所述一组子工作量的第一构件。在实施例中,忙碌失败字段是芯片到芯片协议接口(CTCPI)分组中的位。
在实施例中,第二请求包含经设置的无返回字段。在另一实施例中,无返回字段是芯片到芯片协议接口(CTCPI)分组中的位。在另一实施例中,无返回字段用于发信号通知第二线程不向堆叠位置返回值。在另一实施例中,无返回字段使第一线程不必等待第二线程返回。
在1312,第一线程继续处理所述一组子工作量的第二构件。
在实施例中,继续处理所述一组子工作量的第二构件包含以下操作:测量第二构件以产生第二度量;比较度量与阈值以确定第二度量超过阈值;响应于第二度量超过阈值,将第二构件分成由来自第二构件的预定义数目个相同部分组成的另一组子工作量;创建执行第三线程的第三请求,第三请求包含所述另一组子工作量的第一构件;及继续处理所述另一组子工作量的第二构件。
在实施例中,响应于当创建执行第二线程的第二请求失败时,第一线程将在第一线程中处理所述一组子工作量的第二构件直到阈值。在另一实施例中,方法1300包含在处理所述一组子工作量的第二构件直到阈值之后重复创建执行第二线程的第二请求的操作。
图14说明本文中论述的技术(例如方法)中的任何一或多者可用其实施、在其中实施或由其实施的实例机器1400的框图。如本文中描述,实例可包含机器1400中的逻辑或数个组件或机构或可由所述逻辑或数个组件或机构操作。电路系统(例如处理电路系统)是实施于包含硬件(例如简单电路、门、逻辑等)的机器1400的有形实体中的电路集合。随时间推移,电路系统成员关系可灵活变化。电路系统包含可在操作时单独或组合地执行指定操作的成员。在实例中,电路系统的硬件可经不变设计以实施特定操作(例如硬连线)。在实例中,电路系统的硬件可包含可变连接的物理组件(例如执行单元、晶体管、简单电路等),其包含物理上经修改(例如,不变质量粒子等的磁性、电、可移动放置)以编码特定操作的指令的机器机可读媒体。在连接物理组件时,硬件构成的基本电性质例如从绝缘体变成导体,或反之亦然。指令使嵌入式硬件(例如执行单元或负载机构)能够经由可变连接产生硬件中的电路系统的成员以在操作中实施特定操作的部分。因此,在实例中,机器可读媒体元件是电路系统的部分或在装置操作时通信地耦合到电路系统的其它组件。在实例中,物理组件中的任何者可用于一个以上电路系统的一个以上成员中。例如,在操作下,执行单元可在一时间点用于第一电路系统的第一电路中且在不同时间由第一电路系统中的第二电路或由第二电路系统中的第三电路重用。关于机器1400的这些组件的额外实例。
在替代实施例中,机器1400可作为独立装置操作或可连接(例如联网)到其它机器。在联网部署中,机器1400可以服务器-客户端网络环境中的服务器机器、客户端机器或两者的身份操作。在实例中,机器1400可充当对等(P2P)(或其它分布式)网络环境中的对等机器。机器1400可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、移动电话、网络设备、网络路由器、交换机或网桥或能够(循序或以其它方式)执行指定由机器所采取的动作的指令的任何机器。此外,虽然仅说明单个机器,但术语“机器”还应被视为包含个别或联合执行一(或多个)指令集以执行本文中论述的方法中的任何一或多者(例如云计算、软件即服务(SaaS)、其它计算机集群配置)的机器的任何集合。
机器1400(例如计算机系统)可包含硬件处理器1402(例如中央处理单元(CPU)、图形处理单元(GPU)、硬件处理器核心或其任何组合)、主存储器1404、静态存储器1406(例如用于固件、微代码、基本输入-输出(BIOS)、统一可扩展固件接口(UEFI)等的存储器或存储装置)及大容量存储装置1408(例如硬驱动、磁带驱动、快闪存储装置或其它块装置),其中的部分或全部可经由互连1430(例如总线)彼此通信。机器1400可进一步包含显示器装置1410、字母数字输入装置1412(例如键盘)及用户接口(UI)导航装置1414(例如鼠标)。在实例中,显示器装置1410、输入装置1412及UI导航装置1414可为触摸屏显示器。机器1400可另外包含大容量存储装置1408(例如驱动单元)、信号产生装置1418(例如扬声器)、网络接口装置1420及一或多个传感器1416,例如全球定位系统(GPS)传感器、指南针、加速度计或其它传感器。机器1400可包含输出控制器1428,例如用于通信或控制一或多个外围装置(例如打印机、读卡器等)的串行(例如通用串行总线(USB))、并行或其它有线或无线(例如红外(IR)、近场通信(NFC)等)连接。
硬件处理器1402、主存储器1404、静态存储器1406或大容量存储装置1408的寄存器可为或包含其上存储体现本文中描述的技术或功能中的任何一或多者或由本文中描述的技术或功能中的任何一或多者使用的一或多组数据结构或指令1424(例如软件)的机器可读媒体1422。指令1424还可在其由机器1400执行期间完全完全或至少部分驻留于硬件处理器1402、主存储器1404、静态存储器1406或大容量存储装置1408的寄存器中的任何者内。在实例中,硬件处理器1402、主存储器1404、静态存储器1406或大容量存储装置1408中的一者或任何组合可构成机器可读媒体1422。虽然将机器可读媒体1422说明为单个媒体,但术语“机器可读媒体”可包含经配置以存储一或多个指令1424的单个媒体或多个媒体(例如集中式或分布式数据库或相关联高速缓存及服务器)。
术语“机器可读媒体”可包含能够存储、编码或载送由机器1400执行的指令且致使机器1400执行本公开的技术中的任何一或多者或能够存储、编码或载送由此类指令使用或与此类指令相关联的数据结构的任何媒体。非限制性机器可读媒体实例可包含固态存储器、光学媒体、磁性媒体及信号(例如射频信号、其它基于光子的信号、声音信号等)。在实例中,非暂时性机器可读媒体包括具有含不变(例如静止)质量的多个粒子的机器可读媒体,且因此为物质组成。因此,非暂时性机器可读媒体是不包含暂时性传播信号的机器可读媒体。非暂时性机器可读媒体的特定实例可包含:非易失性存储器,例如半导体存储器装置(例如电可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM))及快闪存储器装置;磁盘,例如内部硬盘及可装卸磁盘;磁光盘;及CD-ROM及DVD-ROM磁盘。
在实例中,存储或否则提供于机器可读媒体1422上的信息可表示指令1424,例如指令1424本身或指令1424可从其导出的格式。指令1424可从其导出的此格式可包含源代码、经编码指令(例如呈压缩或加密形式)、封装指令(例如,分成多个封装)或类似物。在机器可读媒体1422中表示指令1424的信息可由处理电路系统处理成实施本文中论述的任何操作的指令。举例来说,从信息导出指令1424(例如,由处理电路系统处理)可包含:将信息编译(例如,从源代码、目标代码等)、解译、加载、组织(例如,动态或静态链接)、编码、解码、加密、解密、封装、解封或否则操纵成指令1424。
在实例中,指令1424的导出可包含组装、编译或解译信息(例如,通过处理电路系统)以从由机器可读媒体1422提供的一些中间或经预处理格式创建指令1424。信息在提供于多个部分中时可经组合、拆包及修改以创建指令1424。举例来说,信息可在一或若干远程服务器上的多个压缩源代码封装(或目标代码或二进制可执行码等)中。源代码封装可在经由网络中转时加密且在本地机器处解码、解压、组装(例如链接)(如果有必要)及编译或解译(例如变成库、独立可执行等)且由本地机器执行。
指令1424可进一步通过通信网络1426使用传输媒体经由利用数个传送协议中的任一者(例如帧中继、因特网协议(IP)、传输控制协议(TCP)、用户数据报协议(UDP)、超文本传送协议(HTTP)等)的网络接口装置1420来传输或接收。实例通信网络可包含局域网(LAN)、广域网(WAN)、分组数据网络(例如因特网)、移动电话网络(例如蜂窝网络)、简易老式电话(POTS)网络及无线数据网络(例如称为
Figure BDA0003440184490000311
的电气及电子工程师协会(IEEE)802.11系列标准、称为
Figure BDA0003440184490000312
的IEEE 802.16系列标准)、IEEE 802.15.4系列标准、对等(P2P)网络等。在实例中,网络接口装置1420可包含一或多个物理插孔(例如以太网、同轴或电话插孔)或一或多个天线以连接到网络1426。在实例中,网络接口装置1420可包含多个天线以使用单输入多输出(SIMO)、多输入多输出(MIMO)或多输入单输出(MISO)技术中的至少一者进行无线通信。术语“传输媒体”应被视为包含能够存储、编码或载送由机器1400执行的指令的任何无形媒体,且包含促进此软件通信的数字或模拟通信信号或其它无形媒体。传输媒体是机器可读媒体。
为了更好说明本文中描述的方法及设备,下文将一组非限制性实例实施例阐述为数字识别实例。
实例1是一种设备,其包括:硬件接口,其经配置以接收执行第一线程的第一请求,所述第一请求包含工作量的指示;及处理电路系统,其经配置以:确定所述工作量以至少部分基于所述指示产生度量;比较所述度量与阈值以确定所述度量超过所述阈值;至少部分基于所述比较来将所述工作量分成由来自所述工作量的预定义数目个相同部分组成的一组子工作量;创建执行第二线程的第二请求,所述第二请求包含所述一组子工作量的第一构件;及在所述第一线程中处理所述一组子工作量的第二构件。
在实例2中,根据实例1所述的标的物包含,其中所述预定义数目是2。
在实例3中,根据实例1到2所述的标的物包含,其中所述第一线程是主线程。
在实例4中,根据实例1到3所述的标的物包含,其中所述第二线程的纤程线程。
在实例5中,根据实例1到4所述的标的物包含,其中所述第一请求包含经设置的忙碌失败字段。
在实例6中,根据实例5所述的标的物包含,其中执行所述第二线程的所述第二请求失败,且其中响应于执行所述第二线程的所述第二请求失败且所述忙碌失败字段被设置,所述处理电路系统经配置以:继续处理所述一组子工作量的所述第二构件;及创建执行所述第二线程的第三请求,所述第三请求包含所述一组子工作量的所述第一构件。
在实例7中,根据实例5到6所述的标的物包含,其中所述忙碌失败字段是芯片到芯片协议接口(CTCPI)分组中的位。
在实例8中,根据实例1到7所述的标的物包含,其中所述第二请求包含经设置的无返回字段。
在实例9中,根据实例8所述的标的物包含,其中所述无返回字段是芯片到芯片协议接口(CTCPI)分组中的位。
在实例10中,根据实例8到9所述的标的物包含,其中所述无返回字段用于发信号通知所述第二线程不向堆叠位置返回值。
在实例11中,根据实例8到10所述的标的物包含,其中所述无返回字段使所述第一线程不必等待所述第二线程返回。
在实例12中,根据实例1到11所述的标的物包含,其中为了处理所述一组子工作量的所述第二构件,所述处理电路系统经配置以:确定所述第二构件以产生第二度量;比较所述第二度量与所述阈值以确定所述第二度量超过所述阈值;至少部分基于所述比较来将所述第二构件分成由来自所述第二构件的所述预定义数目个相同部分组成的另一组子工作量;创建执行第三线程的第三请求,所述第三请求包含所述另一组子工作量的第一构件;及处理所述另一组子工作量的第二构件。
在实例13中,根据实例1到12所述的标的物包含,其中创建执行所述第二线程的所述第二请求的所述操作失败,且作为响应,所述第一线程将在所述第一线程中处理所述一组子工作量的所述第二构件直到所述阈值。
在实例14中,根据实例13所述的标的物包含,其中所述处理电路系统将在处理所述一组子工作量的所述第二构件直到所述阈值之后重复创建执行所述第二线程的所述第二请求的所述操作。
实例15是一种方法,其包括:接收执行第一线程的第一请求,所述第一请求包含工作量的指示;确定所述工作量以至少部分基于所述指示产生度量;比较所述度量与阈值以确定所述度量超过所述阈值;至少部分基于所述比较来将所述工作量分成由来自所述工作量的预定义数目个相同部分组成的一组子工作量;创建执行第二线程的第二请求,所述第二请求包含所述一组子工作量的第一构件;及在所述第一线程中处理所述一组子工作量的第二构件。
在实例16中,根据实例15所述的标的物包含,其中所述预定义数目是2。
在实例17中,根据实例15到16所述的标的物包含,其中所述第一线程是主线程。
在实例18中,根据实例15到17所述的标的物包含,其中所述第二线程的纤程线程。
在实例19中,根据实例15到18所述的标的物包含,其中所述第一请求包含经设置的忙碌失败字段。
在实例20中,根据实例19所述的标的物包含,其中执行所述第二线程的所述第二请求失败,且其中响应于执行所述第二线程的所述第二请求失败且所述忙碌失败字段被设置,所述方法包括:继续处理所述一组子工作量的所述第二构件;及创建执行所述第二线程的第三请求,所述第三请求包含所述一组子工作量的所述第一构件。
在实例21中,根据实例19到20所述的标的物包含,其中所述忙碌失败字段是芯片到芯片协议接口(CTCPI)分组中的位。
在实例22中,根据实例15到21所述的标的物包含,其中所述第二请求包含经设置的无返回字段。
在实例23中,根据实例22所述的标的物包含,其中所述无返回字段是芯片到芯片协议接口(CTCPI)分组中的位。
在实例24中,根据实例22到23所述的标的物包含,其中所述无返回字段用于发信号通知所述第二线程不向堆叠位置返回值。
在实例25中,根据实例22到24所述的标的物包含,其中所述无返回字段使所述第一线程不必等待所述第二线程返回。
在实例26中,根据实例15到25所述的标的物包含,其中处理所述一组子工作量的所述第二构件包括:确定所述第二构件以产生第二度量;比较所述第二度量与所述阈值以确定所述第二度量超过所述阈值;至少部分基于所述比较来将所述第二构件分成由来自所述第二构件的所述预定义数目个相同部分组成的另一组子工作量;创建执行第三线程的第三请求,所述第三请求包含所述另一组子工作量的第一构件;及处理所述另一组子工作量的第二构件。
在实例27中,根据实例15到26所述的标的物包含,其中响应于当创建执行所述第二线程的所述第二请求失败时,所述第一线程将在所述第一线程中处理所述一组子工作量的所述第二构件直到所述阈值。
在实例28中,根据实例27所述的标的物包含,在处理所述一组子工作量的所述第二构件直到所述阈值之后重复所述创建执行所述第二线程的所述第二请求。
实例29是一种设备,其包括:硬件接口,其经配置以接收执行第一线程的第一请求,所述第一请求包含工作量的指示;及处理电路系统,其经配置以:递归地将所述工作量分成多个子工作量且引起子线程处理所述多个子工作量中的每一者,直到子工作量小于阈值大小;及在子线程中处理小于所述阈值大小的所述子工作量。
在实例30中,根据实例29所述的标的物包含,其中工作量被分成两个子工作量。
在实例31中,根据实例29到30所述的标的物包含,其中所述第一线程是主线程。
在实例32中,根据实例29到31所述的标的物包含,其中所述子线程的纤程线程。
在实例33中,根据实例29到32所述的标的物包含,其中所述第一请求包含经设置的忙碌失败字段。
在实例34中,根据实例29到33所述的标的物包含,其中处理所述子工作量的所述子线程不向调用线程返回值。
在实例35中,根据实例29到34所述的标的物包含,其中执行所述子线程以处理所述子工作量的指令包含经设置的无返回字段。
在实例36中,根据实例35所述的标的物包含,其中所述无返回字段是芯片到芯片协议接口(CTCPI)分组中的位。
在实例37中,根据实例35到36所述的标的物包含,其中所述无返回字段用于发信号通知所述子线程不向堆叠位置返回值。
在实例38中,根据实例35到37所述的标的物包含,其中所述无返回字段使所述第一线程不必等待所述子线程返回。
实例39是一种至少一个机器可读媒体,其包含指令,所述指令在由处理电路系统执行时致使所述处理电路系统执行实施实例1到38中任一者的操作。
实例40是一种设备,其包括用于实施实例1到38中任一者的构件。
实例41是一种系统,其实施实例1到38中任一者。
实例42是一种实施实例1到38任一者的方法。
上文详细描述包含参考形成详细描述的一部分的附图。图式通过说明来展示其中可实践本发明的特定实施例。这些实施例在本文中也称为“实例”。此类实例可包含除所展示或描述的元件之外的元件。然而,本发明者还考虑其中仅提供所展示或描述的那些元件的实例。此外,本发明者还考虑使用关于特定实例(或其一或多个方面)或关于本文中展示或描述的其它实例(或其一或多个方面)展示或描述的那些元件的任何组合或排列的实例(或其一或多个方面)。
在本档案中,如专利档案中常见,术语“一(a/an)”用于包含一个或多于一个,其独立于“至少一个”或“一或多个”的任何其它例子或使用。在本档案中,术语“或”用于指代非排他性“或”,使得“A或B”可包含“A但非B”、“B但非A”及“A及B”,除非另有指示。在所附权利要求书中,术语“包含”及“其中(in which)”用作相应术语“包括”及“其中(wherein)”的普通英语等效形式。而且,在所附权利要求书中,术语“包含”及“包括”是开放式的,即,权利要求中包含除此术语之后所列的元件之外的元件的系统、装置、物品或过程仍被认为落于所述权利要求的范围内。此外,在所附权利要求书中,术语“第一”、“第二”及“第三”等仅用作标记,且不希望对其对象强加数值要求。
上文描述希望是说明性而非限制性的。举例来说,上述实例(或其一或多个方面)可彼此组合使用。例如所属领域的一般技术人员可在检视上文描述之后使用其它实施例。应理解,其不会用于解译或限制权利要求书的范围或含义。而且,在上文详细描述中,可将各种特征分组在一起以简化本公开。此不应被解译为希望未主张的公开特征是任何权利要求所必需的。确切来说,发明标的物可具有特定公开实施例的非所有特征。因此,所附权利要求书特此并入具体实施方式中,其中每一权利要求自身作为单独实施例,且预期此类实施例可以各种组合或排列彼此组合。应参考所附权利要求书以及此权利要求书授权的等效物的全范围来确定本发明的范围。

Claims (24)

1.一种设备,其包括:
硬件接口,其经配置以接收执行第一线程的第一请求,所述第一请求包含工作量的指示;及
处理电路系统,其经配置以:
确定所述工作量以至少部分基于所述指示产生度量;
比较所述度量与阈值以确定所述度量超过所述阈值;
至少部分基于所述比较来将所述工作量分成由来自所述工作量的预定义数目个相同部分组成的一组子工作量;
创建执行第二线程的第二请求,所述第二请求包含所述一组子工作量的第一构件;及
在所述第一线程中处理所述一组子工作量的第二构件。
2.根据权利要求1所述的设备,其中所述预定义数目是2。
3.根据权利要求1所述的设备,其中所述第一线程是主线程。
4.根据权利要求1所述的设备,其中所述第二线程是纤程线程。
5.根据权利要求1所述的设备,其中所述第一请求包含经设置的忙碌失败字段。
6.根据权利要求5所述的设备,其中执行所述第二线程的所述第二请求失败,且其中响应于执行所述第二线程的所述第二请求失败且所述忙碌失败字段被设置,所述处理电路系统经配置以:
继续处理所述一组子工作量的所述第二构件;及
创建执行所述第二线程的第三请求,所述第三请求包含所述一组子工作量的所述第一构件。
7.根据权利要求5所述的设备,其中所述忙碌失败字段是芯片到芯片协议接口CTCPI分组中的位。
8.根据权利要求1所述的设备,其中所述第二请求包含经设置的无返回字段。
9.根据权利要求8所述的设备,其中所述无返回字段是芯片到芯片协议接口CTCPI分组中的位。
10.根据权利要求8所述的设备,其中所述无返回字段用于发信号通知所述第二线程不向堆叠位置返回值。
11.根据权利要求8所述的设备,其中所述无返回字段使所述第一线程不必等待所述第二线程返回。
12.根据权利要求1所述的设备,其中为了处理所述一组子工作量的所述第二构件,所述处理电路系统经配置以:
确定所述第二构件以产生第二度量;
比较所述第二度量与所述阈值以确定所述第二度量超过所述阈值;
至少部分基于所述比较来将所述第二构件分成由来自所述第二构件的所述预定义数目个相同部分组成的另一组子工作量;
创建执行第三线程的第三请求,所述第三请求包含所述另一组子工作量的第一构件;及
处理所述另一组子工作量的第二构件。
13.根据权利要求1所述的设备,其中创建执行所述第二线程的所述第二请求的所述操作失败,且作为响应,所述第一线程将在所述第一线程中处理所述一组子工作量的所述第二构件直到所述阈值。
14.根据权利要求13所述的设备,其中所述处理电路系统将在处理所述一组子工作量的所述第二构件直到所述阈值之后重复创建执行所述第二线程的所述第二请求的所述操作。
15.一种方法,其包括:
接收执行第一线程的第一请求,所述第一请求包含工作量的指示;
确定所述工作量以至少部分基于所述指示产生度量;
比较所述度量与阈值以确定所述度量超过所述阈值;
至少部分基于所述比较来将所述工作量分成由来自所述工作量的预定义数目个相同部分组成的一组子工作量;
创建执行第二线程的第二请求,所述第二请求包含所述一组子工作量的第一构件;及
在所述第一线程中处理所述一组子工作量的第二构件。
16.根据权利要求15所述的方法,其中处理所述一组子工作量的所述第二构件包括:
确定所述第二构件以产生第二度量;
比较所述第二度量与所述阈值以确定所述第二度量超过所述阈值;
至少部分基于所述比较来将所述第二构件分成由来自所述第二构件的所述预定义数目个相同部分组成的另一组子工作量;
创建执行第三线程的第三请求,所述第三请求包含所述另一组子工作量的第一构件;及
处理所述另一组子工作量的第二构件。
17.一种设备,其包括:
硬件接口,其经配置以接收执行第一线程的第一请求,所述第一请求包含工作量的指示;及
处理电路系统,其经配置以:
递归地将所述工作量分成多个子工作量且引起子线程处理所述多个子工作量中的每一者,直到子工作量小于阈值大小;及
在子线程中处理小于所述阈值大小的所述子工作量。
18.根据权利要求17所述的设备,其中工作量被分成两个子工作量。
19.根据权利要求17所述的设备,其中所述第一请求包含经设置的忙碌失败字段。
20.根据权利要求17所述的设备,其中处理所述子工作量的所述子线程不向调用线程返回值。
21.根据权利要求17所述的设备,其中执行所述子线程以处理所述子工作量的指令包含经设置的无返回字段。
22.根据权利要求21所述的设备,其中所述无返回字段是芯片到芯片协议接口CTCPI分组中的位。
23.根据权利要求21所述的设备,其中所述无返回字段用于发信号通知所述第二线程不向堆叠位置返回值。
24.根据权利要求21所述的设备,其中所述无返回字段使所述第一线程不必等待所述子线程返回。
CN202111626756.3A 2020-12-31 2021-12-28 动态分解及线程分配 Pending CN114691354A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202063132754P 2020-12-31 2020-12-31
US63/132,754 2020-12-31
US17/465,021 2021-09-02
US17/465,021 US20220206846A1 (en) 2020-12-31 2021-09-02 Dynamic decomposition and thread allocation

Publications (1)

Publication Number Publication Date
CN114691354A true CN114691354A (zh) 2022-07-01

Family

ID=82119884

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111626756.3A Pending CN114691354A (zh) 2020-12-31 2021-12-28 动态分解及线程分配

Country Status (2)

Country Link
US (1) US20220206846A1 (zh)
CN (1) CN114691354A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116663465A (zh) * 2023-06-21 2023-08-29 南京邮电大学 基于深度学习的考虑mis效应的单元统计延时模型构建方法

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11481343B1 (en) * 2021-04-02 2022-10-25 Micron Technology, Inc. Transporting request types with different latencies
CN116860436A (zh) * 2023-06-15 2023-10-10 重庆智铸达讯通信有限公司 线程数据处理方法、装置、设备及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116663465A (zh) * 2023-06-21 2023-08-29 南京邮电大学 基于深度学习的考虑mis效应的单元统计延时模型构建方法
CN116663465B (zh) * 2023-06-21 2023-10-27 南京邮电大学 基于深度学习的考虑mis效应的单元统计延时模型构建方法

Also Published As

Publication number Publication date
US20220206846A1 (en) 2022-06-30

Similar Documents

Publication Publication Date Title
US11907718B2 (en) Loop execution in a reconfigurable compute fabric using flow controllers for respective synchronous flows
US20220206846A1 (en) Dynamic decomposition and thread allocation
US11782725B2 (en) Mask field propagation among memory-compute tiles in a reconfigurable architecture
CN118076944A (zh) 可重新配置计算组构中的循环执行期间的数据存储
WO2023022906A1 (en) Tile-based result buffering in memory-compute systems
US20240086324A1 (en) High bandwidth gather cache
US11789790B2 (en) Mechanism to trigger early termination of cooperating processes
US11762661B2 (en) Counter for preventing completion of a thread including a non-blocking external device call with no-return indication
CN118043792A (zh) 提供事件消息的可靠接收的机制
US20230058935A1 (en) Managing return parameter allocation
CN117795496A (zh) 可重新配置计算组构中的并行矩阵运算
CN117581200A (zh) 在分派期间从存储器加载数据
US20240070112A1 (en) Context load mechanism in a coarse-grained reconfigurable array processor
US11861366B2 (en) Efficient processing of nested loops for computing device with multiple configurable processing elements using multiple spoke counts
US20240028526A1 (en) Methods and systems for requesting atomic operations in a computing system
US20230055320A1 (en) Loop execution in a reconfigurable compute fabric.
US20240070011A1 (en) Parking threads in barrel processor for managing hazard clearing
CN117632256A (zh) 用于处置多元件处理器中的断点的装置及方法
CN115705167A (zh) 在可重新配置计算结构中对外部存储器进行索引

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