CN117632403A - 在用于管理危险清除的桶形处理器中停驻线程 - Google Patents

在用于管理危险清除的桶形处理器中停驻线程 Download PDF

Info

Publication number
CN117632403A
CN117632403A CN202310789075.1A CN202310789075A CN117632403A CN 117632403 A CN117632403 A CN 117632403A CN 202310789075 A CN202310789075 A CN 202310789075A CN 117632403 A CN117632403 A CN 117632403A
Authority
CN
China
Prior art keywords
memory
hazard
instruction
chiplet
thread
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310789075.1A
Other languages
English (en)
Inventor
C·巴罗内
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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 CN117632403A publication Critical patent/CN117632403A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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, 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, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)

Abstract

本文中描述用于在用于管理危险清除的桶形处理器中停驻线程的装置及技术。一种桶形处理器包含危险管理电路系统,所述危险管理电路系统用来:接收在所述桶形处理器的计算管线中执行的指令的指示,所述指令已遇到危险且不能够前进通过所述计算管线;将所述指令的所述指示存储在危险存储器中;接收指示所述危险已清除的信号;且响应于所述信号而致使在所述计算管线的起点处重新调度所述指令。

Description

在用于管理危险清除的桶形处理器中停驻线程
政府权利
本发明是在政府支持下根据由西北太平洋国家实验室授予的第PNNL DE-AC05-76RL01830号协议作出的。政府拥有本发明的某些权利。
技术领域
本申请涉及在用于管理危险清除的桶形处理器中停驻线程。
背景技术
各种计算机架构(例如冯·诺依曼架构)通常使用数据的共享存储器、用于存取共享存储器的总线、算术单元及程序控制单元。然而,在处理器与存储器之间移动数据可能需要大量的时间及能量,这又可能约束计算机系统的性能及容量。鉴于这些限制,期望新计算架构及装置来推进计算性能超越晶体管微缩的实践(即,摩尔定律)。
可使用过程内的多个线程来多线程化执行软件,其中每一线程可独立地但并发地执行,同时共享过程资源。可使用线程间通信方法在线程之间传递数据。另外,可协调线程或过程的执行。
发明内容
一方面,本公开提供一种设备,其包括:桶形处理器,其包括:危险管理电路系统;其中所述桶形处理器经配置以通过使用所述危险管理电路系统来执行操作以:接收在所述桶形处理器的计算管线中执行的指令的指示,所述指令已遇到危险且不能够前进通过所述计算管线;将所述指令的所述指示存储在危险存储器中;接收指示所述危险已清除的信号;及响应于所述信号而致使在所述计算管线的起点处重新调度所述指令。
另一方面,本公开提供一种方法,其包括:在危险管理电路系统处接收在桶形处理器的计算管线中执行的指令的指示,所述指令已遇到危险且不能够前进通过所述计算管线;将所述指令的所述指示存储在危险存储器中;接收指示所述危险已清除的信号;及响应于所述信号而致使在所述计算管线的所述起点处重新调度所述指令。
附图说明
从下文所给出的详细描述及从本公开的各个实施例的附图,可更全面地理解本公开。然而,附图不应被理解为将本公开限于特定实施例,而是仅用于解释及理解。
为了便于标识对任何特定元件或动作的论述,附图标记中的最高有效数字或若干最高有效数字是指其中首先介绍那个元件的图号。
图1大体上说明根据实施例的在存储器-计算系统的背景下的第一存储器-计算装置的第一实例。
图2大体上说明根据实施例的存储器-计算装置的存储器子系统的实例。
图3大体上说明根据实施例的用于存储器控制器的可编程原子单元的实例。
图4说明根据实施例的存储器-计算装置的混合线程处理器(HTP)加速器的实例。
图5说明根据实施例的存储器-计算装置的混合线程组构(HTF)的表示的实例。
图6A大体上说明根据实施例的小芯片系统的实例。
图6B大体上说明展示来自图6A的实例的小芯片系统中的各种组件的框图。
图7大体上说明根据实施例的存储器-计算装置的基于小芯片的实施方案的实例。
图8说明根据实施例的存储器-计算装置小芯片的实例平铺。
图9是说明根据实施例的纤程创建指令的表。
图10说明根据实施例的精简指令集计算机(RISC)桶形处理器管线。
图11说明根据实施例的包含用来管理危险的阶段及结构的管线的一部分。
图12是根据实施例的用于线程调度的方法的实例的流程图。
图13说明实例机器的框图,利用所述机器、在所述机器中或通过所述机器可实施本文中所论述的任何一或多种技术(例如,方法)。
具体实施方式
可利用材料、装置及集成技术的最新进展来提供以存储器为中心的计算拓扑。例如,对于受大小、重量或功率要求约束的应用,此类拓扑可实现计算效率及工作负载处理量的提高。所述拓扑可用来促进存储器或其它数据存储元件附近或内部的低延时计算。所述方法可特别适于具有稀疏查找的各种计算密集型操作,例如在变换计算(例如,快速傅里叶变换计算(FFT))中,或在例如神经网络或人工智能(AI)、金融分析或者例如对计算流体动力学(CFD)、增强型工程师声学模拟器(EASE)、以集成电路为重点的模拟程序(SPICE)等等的模拟或建模的应用中。
本文中所论述的系统、装置及方法可包含或使用具有处理器或处理能力的存储器-计算系统,所述处理器或处理能力设置在存储器或数据存储组件中、所述存储器或数据存储组件附近或与其集成在一起。此类系统在本文中通常被称为近存储器计算(CNM)系统。CNM系统可为基于节点的系统,其中系统中的个别节点使用系统缩放组构来耦合。每一节点可包含或使用专用或通用处理器,及具有定制计算组构以特别是在预期高的高速缓存未命中率的环境中促进密集型操作的用户可存取加速器。
在实例中,CNM系统中的每一节点可具有一或若干主处理器。在每一节点内,专用混合线程处理器可占据芯片上网络的离散端点。混合线程处理器可存取所述系统的特定节点中的存储器中的一些或全部,或混合线程处理器可经由系统缩放组构跨多个节点的网络存取存储器。每一节点处的定制计算组构或混合线程组构可具有其自身的(若干)处理器或加速器且可在比混合线程处理器更高的带宽下操作。近存储器计算系统中的不同节点可不同地配置,例如具有不同计算能力、不同类型的存储器、不同接口或其它差异。然而,所述节点可共同耦合以在经定义地址空间内共享数据及计算资源。
在实例中,用户可针对定制操作配置近存储器计算系统或所述系统内的节点。用户可使用高级编程语言(例如C/C++)提供指令,所述指令可被编译且直接映射到所述系统的或者CNM系统中的一或多个节点的数据流架构中。即,所述系统中的节点可包含可经配置以直接实施或支持用户指令以由此增强系统性能且减少延时的硬件块(例如,存储器控制器、原子单元、其它客户加速器等)。
在实例中,近存储器计算系统可特别适于实施指令阶层及嵌套循环(例如,两个、三个或更多个深循环或者多维循环)。标准编译器可用来接受高级语言指令且又直接编译到所述节点中的一或多者的数据流架构中。例如,所述系统中的节点可包含混合线程组构加速器。混合线程组构加速器可在CNM系统的用户空间中执行且可发起其自身的线程或子线程,所述线程或子线程可并行地操作。每一线程可映射到不同循环迭代以由此支持多维循环。凭借发起此类嵌套循环的能力以及其它能力,CNM系统可针对计算密集型操作实现显著的时间节省及延时改进。
近存储器计算系统或者近存储器计算系统的节点或组件可包含或使用各种存储器装置、控制器及互连件等等。在实例中,所述系统可包括各种互连节点且所述节点或节点群组可使用小芯片来实施。小芯片是一种用于集成各种处理功能性的新兴技术。通常,小芯片系统由集成在中介层上且封装在一起的离散芯片(例如,不同衬底或裸片上的集成电路(IC))组成。这种布置不同于在一个衬底(例如,单个裸片)上含有不同装置块(例如,知识产权(IP)块)的单个芯片(例如,IC)(例如芯片上系统(SoC)),或集成在一块板上的离散封装装置。一般来说,与单裸片芯片相比,小芯片提供生产效益,包含更高的产量或减少的开发成本。下文所论述的图6A及图6B大体上说明例如可包括近存储器计算系统的小芯片系统的实例。
在一些计算任务中,数百或甚至数千个线程可用于并行处理。线程可异步地执行。如本文中所讨论,HTP通过执行创建及发送线程创建分组的指令来支持线程创建。线程在HTP中执行,所述HTP是桶形处理器。
一般来说,可实施桶形处理器以通过具有若干阶段的管线处理线程指令。在一些设计中,无法停止计算管线。这种设计相对容易实施。然而,在此处理器中,当辨识出危险时,必须重新调度线程,因为所述管线无法停止。重新调度通常通过在所述管线的前方调度队列而发生。这种类型的管线重新调度迫使线程进行不必要的重新处理且可能重复地遇到相同危险,直到危险被清除为止。需要一种更有效的线程重新调度机制。
本文中所描述的系统及方法提供遇到危险的线程的按需重新调度。在实例中,本文中所描述的技术包含实现使线程休眠且接着在危险清除时按需唤醒的机制。在实例中,线程在其中存取存储器的管线的末端附近停驻在队列中。所述机制由计算管线中的逻辑组成以识别危险且引导遇到危险的线程沿着不同执行路径。所述机制是灵活的且允许到逻辑的任何数目个危险输入。在所述管线中的危险清除之后,将一信号驱动到这个逻辑,所述信号释放由于特定危险而停驻的任何线程,从而以使得在重新进入调度队列及后续执行时可保证所述线程不会遇到相同危险的方式在所述管线的头部处将所述线程重新插入到调度队列中。
本文中所描述的系统及方法缓解在线程遇到危险时桶形处理器中的过度线程调度拥塞。允许线程在遇到危险时被停驻及休眠且接着在那个危险清除时按需用信号通知其唤醒。所述机制重用计算管线中的现存路径以添加最少量的逻辑来支持所述特征。所述机制提高管线处理量及效率,且减少开销。所述机制还通过从主调度器卸载一些调度来减轻处理器的线程调度器的负担。下文阐述额外细节。
近存储器计算系统或者近存储器计算系统的节点或组件可包含或使用各种存储器装置、控制器及互连组构等等。在实例中,所述系统可包括具有各种互连节点的计算组构且所述节点或节点群组可使用小芯片来实施。小芯片是一种用于集成各种处理功能性的新兴技术。通常,小芯片系统由集成在中介层上且封装在一起的离散芯片(例如,不同衬底或裸片上的集成电路(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)或第一NOC118。通常,NOC是装置内连接一组特定端点的互连网络。在图1中,第一NOC 118可提供第一存储器-计算装置112的各种存储器、计算资源与端口之间的通信及连接性。
在实例中,第一NOC 118可包含例如在存储器-计算装置的每一例子中或作为耦合节点中的多个存储器-计算装置的网状网络的折叠式Clos拓扑。所述Clos拓扑(例如可使用多个较小基数的交叉开关来提供与较高基数的交叉开关拓扑相关联的功能性)提供各种益处。例如,所述Clos拓扑可跨NOC展现一致延时及二等分带宽。
第一NOC 118可包含各种不同交换机类型,包含中心交换机、边缘交换机及端点交换机。所述交换机中的每一者可被构造为在输入节点与输出节点之间提供基本上一致的延时及带宽的交叉开关。在实例中,端点交换机及边缘交换机可包含两个单独交叉开关,一者用于去往中心交换机的业务,且另一者用于远离中心交换机的业务。中心交换机可被构造为将所有输入切换到所有输出的单个交叉开关。
在实例中,例如取决于特定中心交换机是否参与芯片间通信,中心交换机可各自具有多个端口(例如,各自四个或六个端口)。参与芯片间通信的中心交换机的数目可按照芯片间带宽要求来设置。
第一NOC 118可支持计算元件与存储器之间的各种有效负载(例如,从8到64字节的有效负载;可类似地使用其它有效负载大小)。在实例中,可针对相对较小的有效负载(例如,8到16字节)优化第一NOC 118以高效地处置对稀疏数据结构的存取。
在实例中,第一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与第一存储器-计算装置112的第一NOC 118或者其它组件或模块通信,这可帮助消除将消耗时间及能量的物理层。在实例中,内部主机处理器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可在使用中,且相应其它存储器-计算装置中的内部主机处理器的其它实例可被停用。
可在第一存储器-计算装置112通电时配置内部主机处理器122,例如以允许主机初始化。在实例中,内部主机处理器122及其相关联数据路径(例如,包含第一物理层接口114、PCIe从属模块116等)可从输入引脚配置到第一存储器-计算装置112。所述引脚中的一或多个者可用来启用或停用内部主机处理器122且相应地配置PCI(或其它)数据路径。
在实例中,第一NOC 118可经由缩放组构接口模块136及第二物理层接口138连接到缩放组构106。缩放组构接口模块136或SIF可促进第一存储器-计算装置112与装置空间(例如分区全局地址空间(PGAS))之间的通信。PGAS可经配置使得特定存储器-计算装置(例如第一存储器-计算装置112)可例如使用加载/存储范例存取不同存储器-计算装置上(例如,同一节点或不同节点上)的存储器或其它资源。可使用各种可缩放组构技术,包含通过CXL桥接的CTCPI、CPI、Gen-Z、PCI或以太网。缩放组构106可经配置以支持各种分组格式。在实例中,缩放组构106支持无序分组通信或支持有序分组,例如可使用路径标识符以跨多个等效路径展开带宽。缩放组构106通常支持远程操作,例如远程存储器读取、写入及其它内置原子操作、远程存储器原子操作、远程存储器-计算装置发送事件以及远程存储器-计算装置调用及返回操作。
在实例中,第一NOC 118可耦合到一或多个不同存储器模块,例如包含第一存储器装置128。第一存储器装置128可包含各种种类的存储器装置,例如LPDDR5或GDDR6等等。在图1的实例中,第一NOC 118可经由可专用于特定存储器模块的存储器控制器130协调与第一存储器装置128的通信。在实例中,存储器控制器130可包含存储器模块高速缓存及原子操作模块。原子操作模块可经配置以提供相对高处理量的原子运算符,例如包含整数及浮点运算符。原子操作模块可经配置以将其运算符应用于存储器模块高速缓存(例如,包括SRAM存储器侧高速缓存)内的数据,由此允许使用同一存储器位置以最小处理量下降进行背对背原子操作。
存储器模块高速缓存可为频繁存取的存储器位置提供存储,例如而不必重新存取第一存储器装置128。在实例中,存储器模块高速缓存可经配置以仅高速缓冲存储存储器控制器130的特定例子的数据。在实例中,存储器控制器130包含经配置以与第一存储器装置128(例如包含DRAM装置)对接的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硬件上运行的模拟器配置文件或二进制文件。HTF 142可提供用于精确地且简明地表达算法同时隐藏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控制器)可提供低级请求缓冲及调度,例如以提供对存储器装置204(例如可包含DRAM装置)的高效存取。在实例中,存储器装置204可包含或使用GDDR6 DRAM装置,例如具有16Gb密度及64Gb/sec峰值带宽。可类似地使用其它装置。
在实例中,可编程原子单元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支持八个线程,从而导致八个寄存器堆。在实例中,一些或所有寄存器堆未集成到PAU核心306中,而是驻留在本地数据高速缓存310或指令SRAM 308中。这通过消除用于此类存储器中的寄存器的传统触发器来降低PAU核心306中的电路复杂性。
本地PAU存储器可包含指令SRAM 308,例如可包含用于各种原子操作指令。所述指令包括用以支持各种应用加载的原子运算符的若干组指令。当例如由应用小芯片请求原子运算符时,由PAU核心306执行对应于原子运算符的一组指令。在实例中,指令SRAM 308可经分区以建立若干组指令。在这个实例中,由请求过程请求的特定可编程原子运算符可通过分区号来识别可编程原子运算符。当向可编程原子单元302登记(例如,加载)可编程原子运算符时,可建立分区号。可编程指令的其它元数据可存储在可编程原子单元302本地的存储器中(例如,分区表中)。
在实例中,原子运算符操纵指令SRAM 308,所述指令SRAM 308通常在原子运算符的线程完成时被同步(例如,刷新)。因此,除了从外部存储器(例如从存储器控制器314)的初始加载之外,可在可编程原子运算符线程的执行期间减少大多数存储器操作的延时。
当执行线程试图发出存储器请求时,如果潜在的危险条件将阻止此请求,那么管线处理器(例如PAU核心306)可能会遇到问题。在此,存储器请求是从存储器控制器314检索数据,无论其是来自存储器控制器314上的高速缓存还是来自裸片外存储器。为了解决这个问题,PAU核心306经配置以拒绝对线程的存储器请求。通常,PAU核心306或线程控制件304可包含用以启用管线中的一或多个线程重新调度点的电路系统。在此,拒绝发生在管线中超出这些线程重新调度点(例如,在这些线程重新调度点之后)的点。在实例中,危险发生在所述重新调度点之后。在此,线程中的前一指令在存储器请求指令经过其中可提出存储器请求的管线阶段之前的最后一个线程重新调度点之后造成危险。
在实例中,为了拒绝存储器请求,PAU核心306经配置以确定(例如,检测到)在存储器请求中指示的存储器上存在危险。在此,危险表示使得允许(例如,执行)存储器请求将导致线程的不一致状态的任何状况。在实例中,危险是飞行中存储器请求。在此,无论指令SRAM 308是否包含经请求存储器地址的数据,飞行中存储器请求的存在都使指令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(例如来自图1的实例的第一NOC 118、来自图2的实例的第二NOC 206或其它NOC)对接的NOC接口416。
在实例中,HTP加速器400包含基于RISC-V指令集的模块,且可包含用以支持低开销、有线程能力的混合线程(HT)语言的相对少量的其它或额外定制指令。HTP加速器400可包含高度线程化的处理器核心(HTP核心402),在所述处理器核心中或利用所述处理器核心,可在单个指令旋转中执行线程,例如以维持高指令处理量。在实例中,线程可在其等待其它未决事件完成时暂停。这可允许计算资源高效地用于相关工作而非轮询。在实例中,多线程屏障同步可使用高效的HTP到HTP及HTP到/从主机的消息传递,例如可允许数千个线程在例如数十个时钟循环内初始化或唤醒。
在实例中,分派接口414可包括用于处置基于硬件的线程管理的HTP加速器400的功能块。即,分派接口414可管理向HTP核心402或其它加速器分派工作。然而,非HTP加速器通常不能分派工作。在实例中,从主机分派的工作可使用驻留在例如主机主存储器(例如,基于DRAM的存储器)中的分派队列。另一方面,从HTP加速器400分派的工作可例如在特定节点内的目标HTP加速器400的分派内使用驻留在SRAM中的分派队列。
在实例中,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集群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的片块可被布置成栅格或其它配置,其中每一片块类似地耦合到其在栅格中的最近邻居中的一者或若干者。设置在集群的边缘处的片块可任选地具有到相邻片块的较少连接。例如,图5的实例中的片块N-2或基础片块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可进一步包含可提供例如集群中的片块、集群中的存储器接口与集群中的分派接口508当中的通信的异步组构(AF)。
在实例中,同步组构可交换包含数据及控制信息的消息。控制信息可尤其包含指令RAM地址信息或线程标识符。控制信息可用来设置数据路径,且可选择数据消息字段作为所述路径的源。通常,可更早地提供或接收控制字段,使得它们可用来配置数据路径。例如,为了帮助最小化通过片块中的同步域管线的任何延迟,控制信息可比数据字段早几个时钟循环到达片块。可提供各种寄存器来帮助协调管线中的数据流时序。
在实例中,HTF集群502中的每一片块可包含多个存储器。每一存储器可具有与数据路径相同的宽度(例如,512位)且可具有所指定深度,例如在512到1024个元素的范围内。片块存储器可用来存储支持数据路径操作的数据。例如,所存储数据可包含作为内核的集群配置的部分加载的常数,或可包含作为数据流的部分计算的变量。在实例中,片块存储器可作为来自另一同步域的数据传送从异步组构写入,或可包含例如由另一同步域发起的加载操作的结果。片块存储器可经由同步域中的同步数据路径指令执行来读取。
在实例中,HTF集群502中的每一片块可具有专用指令RAM(INST RAM)。在带有十六个片块的HTF集群502及带有六十四个条目的指令RAM例子的实例中,所述集群可允许用多达1024个乘法移位及/或ALU运算来映射算法。各种片块可任选地例如使用同步组构管线化在一起,以允许具有最少存储器存取的数据流计算,因此最小化延时且降低功率消耗。在实例中,异步组构可允许存储器引用与计算并行地进行,由此提供更高效的流内核。在实例中,各种片块可包含对基于循环的构造的内置支持,且可支持嵌套循环内核。
同步组构可允许多个片块管线化,例如无需数据排队。例如,参与同步域的片块可充当单个管线数据路径。同步域的第一或基础片块(例如,在图5的实例中是片块N-2)可通过管线片块发起工作线程。基础片块可负责在本文中被称为辐条计数的预定义节奏下起始工作。例如,如果辐条计数是3,那么基础片块可每三个时钟循环发起工作。
在实例中,同步域包括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读取地址输入可源自从零计数到辐条计数减一的计数器。在实例中,可在不同片上(例如在同一HTF集群502内)使用不同辐条计数,以允许由内部循环使用数个切片或唯一片块例子来确定特定应用或指令集的性能。在实例中,辐条RAM可指定何时将同步输入写入到片块存储器,例如何时使用特定片块指令的多个输入及所述输入中的一者先于其它者输入到达。较早到达的输入可写入到片块存储器且可稍后在所有输入可用时被读取。在这个实例中,片块存储器可作为FIFO存储器来存取,且FIFO读取及写入指针可存储在片块存储器中的基于寄存器的存储区或结构中。
图6A及图6B大体上说明可用来实施CNM系统102的一或多个方面的小芯片系统的实例。如上文类似地提及,CNM系统102中的节点或CNM系统102中的节点内的装置可包含基于小芯片的架构或近存储器计算(CNM)小芯片。封装存储器-计算装置可包含例如一个、两个或四个CNM小芯片。所述小芯片可使用高带宽、低延时的互连件(例如使用CPI接口)来互连。通常,小芯片系统由集成在中介层上且在许多实例中根据期望通过一或多个经建立网络互连以提供具有所期望功能性的系统的离散模块(各自为“小芯片”)组成。中介层及所包含的小芯片可封装在一起以促进与更大系统的其它组件互连。每一小芯片可包含潜在地与离散电路组件组合的一或多个个别集成电路(IC)或“芯片”,且可耦合到相应衬底以帮助附接到中介层。系统中的大多数或所有小芯片可个别地经配置用于通过经建立网络进行通信。
将小芯片配置为系统的个别模块不同于此系统被实施于在一个衬底(例如,单个裸片)上含有不同装置块(例如,知识产权(IP)块)的单个芯片上(例如芯片上系统(SoC)),或集成在印刷电路系统板(PCB)上的多个离散封装装置。一般来说,小芯片提供比离散封装装置更好的性能(例如,更低的功率消耗、减少的延时等),且小芯片提供比单裸片芯片更大的生产效益。这些生产效益可包含更高的产量或减少的开发成本及时间。
小芯片系统可包含例如一或多个应用(或处理器)小芯片及一或多个支持小芯片。在此,应用小芯片与支持小芯片之间的区别仅仅是对小芯片系统的可能设计场景的引用。因此,例如,仅举例来说,合成视觉小芯片系统可包含用以产生合成视觉输出的应用小芯片连同支持小芯片,例如存储器控制器小芯片、传感器接口小芯片或通信小芯片。在典型用例中,合成视觉设计者可设计应用小芯片且从其它方获得支持小芯片。因此,设计支出(例如,在时间或复杂性方面)减少,这是因为避免了支持小芯片中体现的功能性的设计及生产。
小芯片还支持原本可能难以实现的IP块(例如使用不同处理技术或使用不同特征大小(或使用不同接触技术或间距)制造的IP块)的紧密集成。因此,具有不同物理、电或通信特性的多个IC或IC组合件可以模块化方式组装以提供具有各种所期望功能性的组合件。小芯片系统还可促进对满足小芯片系统将并入其中的不同更大系统的需求的适应。在实例中,IC或其它组合件可针对特定功能的功率、速度或发热进行优化—如同传感器可发生的那样—可比试图在单个芯片上集成更容易地与其它装置集成在一起。另外,通过减小裸片的整体大小,小芯片的产量往往高于更复杂的单裸片装置的产量。
图6A及图6B大体上说明根据实施例的小芯片系统的实例。例如,图6A是安装在外围板604上的可通过外围组件互连快速(PCIe)连接到更广泛的计算机系统的小芯片系统602的表示。小芯片系统602包含封装衬底606、中介层608及四个小芯片(应用小芯片610、主机接口小芯片612、存储器控制器小芯片614及存储器装置小芯片616)。其它系统可包含用以提供额外功能性的许多额外小芯片,如将从以下论述显而易见。小芯片系统602的封装被说明为具有帽或盖618,但可使用小芯片系统的其它封装技术及结构。图6B是为了清楚起见而标注小芯片系统中的组件的框图。
应用小芯片610被说明为包含小芯片系统NOC 620以支持用于小芯片间通信的小芯片网络622。在实例实施例中,小芯片系统NOC 620可包含在应用小芯片610上。在实例中,可响应于选定支持小芯片(例如,主机接口小芯片612、存储器控制器小芯片614及存储器装置小芯片616)而定义来自图1的实例的第一NOC 118,从而使设计者能够为小芯片系统NOC620选择适当数目的小芯片网络连接或交换机。在实例中,小芯片系统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),所述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通道。在实例中,对于SDR模式,AIB通道以80个I/O单元(即,40TX及40RX)的增量配置且对于DDR模式,以40个I/O单元的增量配置。CPI流协议可在SDR或DDR操作模式下使用AIB通道。在此,在实例中,对于SDR模式及DDR模式两者,AIB通道是以40个I/O单元为增量。在实例中,每一AIB通道被指派唯一的接口标识符。在CPI复位及初始化期间使用所述标识符来确定跨邻近小芯片的成对AIB通道。在实例中,所述接口标识符是包括七位小芯片标识符、七位列标识符及六位链路标识符的20位值。AIB物理层使用AIB带外移位寄存器传输接口标识符。使用所述移位寄存器的位32到51跨AIB接口在两个方向上传送20位接口标识符。
AIB将一组堆叠AIB通道定义为AIB通道列。AIB通道列具有某一数目个AIB通道,外加辅助通道。辅助通道含有用于AIB初始化的信号。列内的所有AIB通道(除了辅助通道外)具有相同配置(例如,全TX、全RX或半TX及半RX,并且具有相同数目个数据I/O信号)。在实例中,AIB通道从邻近于AUX通道的AIB通道开始以连续增加顺序编号。邻近于AUX的AIB通道被定义为AIB通道零。
通常,个别小芯片上的CPI接口可包含串行化-解串行化(SERDES)硬件。SERDES互连非常适合期望具有低信号计数的高速信令的场景。然而,对于复用及分用、错误检测或校正(例如,使用块级循环冗余校验(CRC))、链路级重试或前向错误校正,SERDES可能导致额外功率消耗及更长延时。然而,当低延时或能量消耗是超短距离、小芯片到小芯片互连的主要考虑因素时,可利用具有允许以最小延时传送数据的时钟速率的并行接口。CPI包含用以在这些超短距离小芯片互连件中最小化延时及能量消耗两者的元件。
对于流量控制,CPI采用基于信用的技术。接收者(例如应用小芯片610)可对发送者(例如存储器控制器小芯片614)提供表示可用缓冲器的信用。在实例中,对于给定的传输时间单位,CPI接收者包含用于每一虚拟通道的缓冲器。因此,如果CPI接收者支持时间上的五个消息及单个虚拟通道,那么所述接收者具有布置在五行中的五个缓冲器(例如,每一单位时间一行)。如果支持四个虚拟通道,那么接收者具有布置在五行中的二十个缓冲器。每一缓冲器保存一个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(GDDR6 SDRAM)等等。非易失性存储器装置的实例包含但不限于与非(NAND)型快闪存储器、存储类存储器(例如,相变存储器或基于忆阻器的技术)、铁电RAM(FeRAM)等等。所说明实例包含作为小芯片的存储器装置小芯片616,然而,所述装置可驻留在别处,例如在外围板604上的不同封装中。对于许多应用,可提供多个存储器装置小芯片。在实例中,这些存储器装置小芯片可各自实施一或多种存储技术,且可包含集成计算主机。在实例中,存储器小芯片可包含不同技术的多个堆叠存储器裸片,例如堆叠的或者以其它方式与一或多个动态随机存取存储器(DRAM)装置通信的一或多个静态随机存取存储器(SRAM)装置。在实例中,存储器控制器小芯片614可用来协调小芯片系统602中的多个存储器小芯片之间的操作,例如以使用高速缓存存储装置的一或多层级中的一或多个存储器小芯片,且使用一或多个额外存储器小芯片作为主存储器。小芯片系统602可包含如可用来为单独主机、处理器、传感器、网络等提供存储器控制功能性的多个存储器控制器小芯片614例子。例如所说明系统中的小芯片架构在允许适应不同存储器存储技术方面提供优势;且通过经更新小芯片配置提供不同存储器接口,例如而无需重新设计系统结构的剩余部分。
图7大体上说明根据实施例的存储器-计算装置的基于小芯片的实施方案的实例。所述实例包含具有四个近存储器计算或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包含小芯片的不同近存储器计算集群的四个例子,其中所述集群耦合在一起。近存储器计算小芯片的每一例子本身可包含一或多个构成小芯片(例如,主机处理器小芯片、存储器装置小芯片、接口小芯片等等)。
平铺式小芯片实例800包含来自图7的实例的第一CNM封装700的例子作为其近存储器计算(CNM)集群中的一者或多者。例如,平铺式小芯片实例800可包含第一CNM集群802,所述第一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中的近存储器计算小芯片中的一或多者中的混合线程处理器及混合线程组构分派新执行线程。
当由HTP加速器接收及处理CPI或CTCPI调用分组时,在所述加速器上起始线程。CPI或CTCPI调用分组可源自主机接口(HIF)或HTP加速器。源自所述HIF的调用由主机处理器发出且被定义为主线程。源自HTP的调用被定义为纤程线程。主线程与纤程线程之间的主要差别与创建新纤程的限制有关。
应注意,当在主机处理器上运行的应用进行指示其需要存取HTP资源的系统调用时,为所有线程预分配栈存储器。此后,当在HTP背景下起始线程时,经预分配栈可供使用。主线程的栈大小与纤程的栈大小可不同。通常主线程具有比纤程更大的栈大小。
HTP线程可执行线程创建(例如,ETC或XTC)指令以在加速器资源上发起线程。加速器资源包含HTP及HTF以及通用加速器。通用加速器允许与尚未定义的加速器交互。
线程创建指令指定将在经创建线程完成时返回的信息。在创建线程之前,必须为经返回信息保留空间。当线程最终完成时,所述线程将其返回信息写入到经保留空间中且等待父线程执行线程加入指令。线程加入指令从经保留空间获取经返回信息且将经返回信息传送到所述线程的X寄存器状态以供父线程稍后使用。一旦加入所述线程,就释放经保留空间。
线程创建指令可指示在经创建线程完成时不返回返回信息。这个指示允许HTP加速器创建所述线程,而无需为返回信息保留空间。在这种情况下,使用计数器来记录没有返回信息的未完成线程的数目。
父线程执行加入指令(例如,EFJ、EFJA、XFJ、XFJA)以确定子线程是否已完成且获得经返回结果。所有加速器资源(HTP、HTF及通用)使用这种将线程完成状态返回到发起父线程的通用方法。来自子线程的经返回状态可包含:调用者ID及0、1或2个64位返回参数。可创建指定不返回(nr)的线程。
纤程加入指令(例如,EFJ或XFJ)加入在没有不返回指示的情况下创建的线程且忽略在具有不返回指示的情况下创建的线程。纤程加入指令处理单个经完成子线程且将经返回调用ID及参数写入到线程X寄存器以供父线程存取。
纤程创建指令(例如,EFC或XFC)在混合线程加速器(HTA)上发起线程。在包含HTP及HTF的CNM装置内可存在最多四个HTA。
图9中说明纤程创建指令。图9说明EFC/XFC指令集900。应理解,可使用其它指令集。位0到6是指定EFC/XFC功能的操作码且位27到31是区分EFC/XFC类型(例如,HTA0、HTA1、HTA0H.BF等)的功能码。位7到11、15到19及20到24的位字段是供将来使用的经保留位。
EFC/XFC指令为纤程创建操作指定若干参数。返回自变量计数(rc)字段可取值(NR、0、1、2)。在实例中,当调用HTP具有空间来保存返回信息时,HTP可在加速器资源上创建线程。返回信息包含调用者ID及最多两个64位返回值两者。纤程创建指令指定返回信息所需的存储空间。返回信息后缀选项是NR、R0、R1及R2。NR后缀暗示着不存储任何返回信息(即,加入指令将不提供任何信息)。R0后缀暗示味着调用者ID将可用于加入指令。R1及R2后缀暗示除调用者ID之外的一个或两个64位返回自变量将被存储且可用于加入指令。
当执行纤程创建指令时,分配返回信息存储。如果无足够返回信息空间可用,那么纤程创建指令被暂停直到空间变得可用。具有NR后缀的纤程创建指令不需要返回信息存储且未完成的数目限于用以跟踪未完成的数目的计数器的大小。R0后缀要求存储调用者ID,但不存储返回值,且R1及R2要求调用者ID及返回值空间两者。一组经创建纤程需要的信息越多,所导致的最大未完成纤程就越小。
提供EFC指令的忙碌失效版本以允许加速器资源分派器在受支持的情况下使EFC指令失效。
HTP分派器支持忙碌失效且如果HTP上下文在目标CNM装置上不可用,那么将返回失效状态。纤程创建指令的状态被写入到X寄存器A0。
HTF分派器不支持忙碌失效且将暂停EFC/XFC指令,直到所述分派器能够找到HTF来发起经创建线程。其它加速器资源调度器可选择是否支持忙碌失效。一旦EFC/XFC指令完成,线程就在紧跟EFC/XFC指令的指令处继续。
应注意,主线程(即,由主机创建的线程)可执行经定义EFC/XFC指令中的任一者。HTP纤程线程(即,由HTP创建的线程)可执行以非HTP加速器资源为目标的忙碌失效类型的EFC/XFC指令或EFC/XFC指令。如果纤程试图执行非忙碌失效HTP纤程创建,那么将导致陷阱。
可在加速器(例如HTP 140或HTF 142)上创建线程。在本文献中,线程可指系统或主机线程,而“纤程”可指在HTP 140或HTF 142处创建的线程。换句话说,主机分派给HTP加速器的工作被称为主线程,而HTP分派给HTP加速器的工作被称为纤程线程。在许多情况下,术语“纤程线程”可与术语“线程”互换。
HTP及HTF架构支持多种类型的线程。线程可经设计为返回或“不返回”类型的线程。如果线程是返回类型,那么纤程创建指令指定用于返回信息的存储空间。如果线程是“不返回”类型的线程,那么不需要返回信息存储,且唯一的限制是系统中的可用线程的最大数目。
如上文关于图3所描述,PAU处理器或PAU核心306可被实施为桶形处理器或桶形多线程处理器。在此实施方案中,PAU处理器306是管线处理器,其中在所述管线中具有多个阶段。
图10说明精简指令集计算机(RISC)桶形处理器管线1000,其包含指令提取(IF)1002、指令解码(ID)1004、执行(EX)1006、存储器存取(MA)1008及写回(WB)1010的阶段。应理解,图10中所说明的管线1000是非限制性的且PAU处理器306可实施的管线可更复杂,例如在复杂指令集计算机(CISC)管线中。额外阶段可用来执行子计算、管理微指令、合并操作、指令重新排序或调度操作、指令并行化操作及类似者。
在IF阶段1002中,从指令存储器(例如,指令SRAM 308)读取与线程相关联的当前指令。指令存储器可为专用SRAM或指令高速缓存。指令提取操作需一个时钟循环。这假设指令在指令高速缓存中或SRAM是单循环SRAM。例如,所述指令可为32位或64位指令。在IF阶段1002中,程序计数器(PC)可递增以存取待在管线1000中处理的下一指令。
在下一时钟循环中,将指令移动到下一阶段且在ID阶段1004中对所述指令进行解码。在ID阶段1004中,将指令解码成指示操作数的操作及索引位置(通常是寄存器)的各种控制信号。所述操作可具有任何类型,包含算术运算(例如,加、减、乘、除等)、布尔运算(例如,与(AND)、或(OR)、异或(XOR)等)、位操作(例如,位移位等)、数据操作(例如,移动、复制、加载、存储等)、程序控制流(例如,分支、跳转、返回、无操作(NOP)等)或类似者。寄存器的索引用来从寄存器堆检索操作数值或地址。
在读取寄存器堆的同时,ID阶段1004中的逻辑确定分支条件及指令是否准备好执行。分支致使分支位置处的指令而不是PC处的指令被置于管线中。其它类型的分支处置也被认为是在本论述的范围内。
在EX阶段1006中,执行指令。例如,数学运算可对从寄存器读取的操作数值执行。通常,EX阶段1006包含使用一或多个算术逻辑单元(ALU)及位移位器(用于移位及旋转)。EX阶段1006也可使用乘法器或除法器逻辑。ALU负责执行布尔运算及整数加减法。除了经计算结果之外,ALU通常还提供状态位,例如所述结果是否为0或是否发生溢出。
取决于操作类型及是否存取存储器,EX阶段1006期间的操作可在单个循环内执行或可使用多个循环。例如,对寄存器中的值进行简单操作(例如加、减、比较及逻辑运算)可在单个循环中执行。然而,复杂的整数乘法及除法以及所有浮点运算可能需要多于一个循环。
在MA阶段1008中,可存取数据高速缓存以从存储器(例如,随机存取存储器或存储装置,例如硬盘驱动器)读取。在实例中,使用两个SRAM:一个作为数据高速缓存且一个作为标记存储器。标记存储器(即,标记RAM)用来存储有关数据高速缓存中的高速缓存行的元数据。当检查数据是否在数据高速缓存中时,存储在标记RAM中的值确定高速缓存查找是命中还是未命中。另外,在MA阶段1008期间,线程状态可存储在执行寄存器中。
不必存取数据高速缓存或存储器的线程可通过MA阶段1008转发它们的状态。例如,通过组构将消息发送到另一PAU处理器的线程可能不会与本地数据高速缓存或存储器交互。然而,此指令通过整个管线来处理。
前进通过管线1000的线程可能遇到各种结构危险。一般来说,危险具有各种类型,包含结构危险、数据危险及控制危险。当两个或更多个指令同时需要硬件资源时,发生结构危险。当一个指令取决于另一指令的输出时,发生数据危险。所述两个指令不能够并行地执行,因为后一指令试图在由前一指令修改数据之前使用数据。当错误指令被预取到管线中且必须被丢弃时,发生控制危险。本文中所描述的机制通常用来管理结构危险。
在此提供可由危险管理电路系统处置的结构危险的非排他性列表。
存储器加载危险:等待存储器加载响应到达以填充数据高速缓存。
指令高速缓存加载危险:等待存储器加载响应到达以填充指令高速缓存。
存储-写后读(RAW)危险:管控RAW危险的逻辑无法接受另一存储,等待现存存储完成。
加载-写后读危险:在对同一存储器的存储请求未完成时的潜在加载,等待现存存储完成。
存储-信用危险:没有可用于存储操作的信用,等待现存存储从输出队列抽取且返回信用。
事件-信用危险:没有可用于事件操作的信用,等待现存事件从输出队列抽取且返回信用。
存储-未完成计数溢出危险:管控未完成存储计数的逻辑无法接受另一存储,等待现存存储完成。
浮点危险:操作需要存取与处理器异步地执行的浮点逻辑,等待操作完成。
存储-未完成计数危险:操作要求所有未完成存储静止且存在未完成存储,等待所有现存存储完成。
XFJ-纤程加入等待危险:操作试图加入子线程,但没有子线程可用且准备好加入,等待直到线程返回且可加入。
XFJA-纤程加入所有等待危险:操作试图加入所有子线程,但并非所有子线程均可用且准备好加入,等待直到所有线程返回且可加入。
事件监听等待危险:操作试图接收事件(线程到线程消息)且没有消息可用,等待直到此消息可用。
调用危险:操作试图在另一处理器上启动子线程且在继续执行之前必须等待以查看线程创建的成功/失败状态。成功/失败状态通过从负载平衡器到这个处理器的未来消息用信号通知。
系统调用危险:操作试图执行对主机处理器的系统回调且在继续之前必须等待那个系统调用的执行完成。成功/失败状态通过从负载平衡器到这个处理器的未来消息用信号通知。
事件危险:操作试图将线程到线程消息发送到另一线程且在继续执行之前必须等待以查看消息的成功/失败状态。成功/失败状态通过从负载平衡器到这个处理器的未来消息用信号通知。
可由存储器控制器、事件控制器、线程调度器或者由其它电路、控制器或机构检测危险。在常规系统中,当识别出、检测到或已知存在危险时,可通过插入冒泡(例如,NOP操作)来停止管线或可重新调度指令。
在本系统中,当发生结构危险时(其中由于瞬态问题(例如软件或编译器无法预测的问题),不能发出内部请求),可将指令停驻在由危险管理电路系统管理的存储装置中,而不是必须再循环回到管线1000的起点或延迟整个管线(停止)。这减少调度开销及不必要的处理,从而代替地为指令提供静止直到危险被清除的方式。
遇到危险(例如,包含除基于存储器的危险之外的危险)的指令可停驻在危险存储装置中。在危险被清除之后,将指令释放到管线的前方以由调度器重新调度。因而,在本系统及方法中,当遇到危险时,不是在管线的头部处自动地重新调度指令,而是将指令停驻在存储装置(即,“危险存储装置”)中。当危险清除时,将信号提供到危险管理电路系统且释放指令以在管线的前方重新调度。
图11说明根据实施例的包含用来管理危险的阶段及结构的管线1100的一部分,在某一计算管线阶段N 1102之后,检测到危险且将指令放入由危险管理电路系统1110处置的危险存储装置中。危险存储装置可用来存储线程状态或危险类型连同数据。
在图11中所说明的实例中,线程指令完成计算管线阶段N 1102且接着前进到读取标记RAM(阶段1104),确定标记命中检测阶段1106中是否存在高速缓存命中,且产生存储器请求(阶段1108)。应理解,如果指令不包含存储器存取(例如线程创建指令或线程加入指令),那么通过这些阶段转发指令。在产生存储器请求阶段1108处,管线确定指令存在危险。
例如,由特定逻辑检测加载RAW危险,所述特定逻辑通过在加载地址前进通过存储器请求逻辑时(例如,在阶段1108处)检验加载地址来检查加载操作的危险写后读(原始)条件。
在另一实例中,由观察到存储器请求逻辑中的请求正在请求代表线程进行调用的逻辑检测调用危险。就其本质来说,在允许线程继续执行之前,这个调用必须等待肯定/否定的递送确认,因此其在阶段1108中时自动地继承调用危险。
在确定存在危险时,将指令存储在由危险管理电路系统1110处置的危险存储器中。指令可与其状态、危险类型及其它信息一起存储。危险与管线异步地清除。一旦危险清除,就将信号驱动到危险管理电路系统1110。所述信号可包含危险类型使得危险管理电路系统1110能够仅释放基于某种危险类型暂停的那些指令。替代地,所述信号可为非特定的、一般的或通用的信号,且危险管理电路系统1110可释放暂时存储在危险存储器中的所有指令。被释放的任何指令在存储器响应总线上发送回到调度器。
存储器响应通路包含存储器响应接收阶段1112,所述存储器响应接收阶段1112接收来自存储器请求的响应且询问数据高速缓存。响应合并阶段1114将来自存储器的干净数据与数据高速缓存行中的脏数据集成在一起。指令可通过响应仲裁器1116路由,所述响应仲裁器1116在线程危险管理电路系统1110与存储器响应通路之间仲裁与线程调度器的通信。在实施例中,响应仲裁器1116处置将指令的线程状态与对数据高速缓存的数据更新合并。
返回图10,在WB阶段1010中,对于已成功地前进通过MA阶段1008的指令,可将指令操作的结果写入到寄存器堆中的目的地寄存器。在这个阶段期间,单循环指令及双循环指令两者将它们的结果写入到寄存器堆中。可存在同时存取寄存器堆的两个阶段—读取一或多个源寄存器的ID阶段1004及写入到目的地寄存器的WB阶段1010。
图12是根据实施例的用于线程调度的方法1200的实例的流程图。方法1200的操作由计算机硬件(例如关于图1到8所描述的计算机硬件(例如,主机系统108、主机处理器122、PAU线程控制件304、HTP核心402、线程控制器412或分派接口414)或关于图13所描述的计算机硬件(例如,处理电路系统))来执行。
在1202处,方法1200包含接收在桶形处理器的计算管线中执行的指令的指示的操作,所述指令已遇到危险且不能够前进通过计算管线。指令的指示可为线程标识符。
在1204处,方法1200包含将指令的指示存储在危险存储器中的操作。
在1206处,方法1200包含接收指示危险已清除的信号的操作。
在1208处,方法1200包含响应于所述信号而在计算管线的起点处时重新调度指令的操作。
在实施例中,方法1200包含在致使指令被重新调度之后从危险存储器删除指令的指示。
在实施例中,方法1200包含存储指令的状态。在进一步实施例中,方法1200包含存储对应于指令的指示的危险类型。在各个实施例中,危险类型是存储器存储危险、存储器加载危险、纤程连接危险、调用危险、事件监听危险或返回危险。
在实施例中,指示危险已清除的信号包含危险类型。在此实施例中,响应于所述信号而致使在计算管线的起点处重新调度指令的操作包含致使在计算管线的起点处重新调度危险类型的指令。
在另一实施例中,指示危险已清除的信号不包含危险类型。在此实施例中,方法1200可包含致使在计算管线的起点处重新调度存储在危险存储器中的所有指令。
在实施例中,危险管理电路系统集成在桶形处理器中,且桶形处理器包含在可编程原子单元中。在进一步实施例中,可编程原子单元包含在存储器控制器中。在进一步实施例中,存储器控制器是小芯片系统中的小芯片。
在实施例中,桶形处理器为混合线程处理器。
图13说明实例性机器1300的框图,利用所述机器、在所述机器中或通过所述机器可实施本文中所论述的任何一或多种技术(例如,方法)。如本文中所描述,实例可包含机器1300中的逻辑或数个组件或机制,或者可由其来操作。电路系统(例如,处理电路系统)是在包含硬件(例如,简单电路、门、逻辑等)的机器1300的有形实体中实施的电路系统的集合。电路系统成员资格可随时间推移灵活变化。电路系统包含在操作时可单独地或组合地执行所指定操作的成员。在实例中,电路系统的硬件可不变地经设计以实行特定操作(例如,硬连线)。在实例中,电路系统的硬件可包含可变地连接的物理组件(例如,执行单元、晶体管、简单电路等),所述物理组件包含物理修改(例如,磁性地、电性地、不变聚集粒子的可移动放置等)的机器可读媒体以编码特定操作的指令。在连接物理组件时,硬件构成的基本电性质被改变,例如从绝缘体改变为导体或反之亦然。指令使嵌入式硬件(例如,执行单元或加载机构)能够经由可变连接以硬件创建电路系统的成员以在操作时实行特定操作的部分。因此,在实例中,当装置操作时,机器可读媒体元件是电路系统的部分或通信地耦合到电路系统的其它组件。在实例中,所述物理组件中的任一者可用于多于一个电路系统的多于一个成员中。例如,在操作中,执行单元可在一个时间点用于第一电路系统的第一电路中且由第一电路系统中的第二电路重用,或在不同时间由第二电路系统中的第三电路重用。
在替代实例中,机器1300可作为独立装置操作或可连接(例如,联网)到其它机器。在联网部署中,机器1300可在服务器-客户端网络环境中以服务器机器、客户端机器或两者的身份操作。在实例中,机器1300可充当对等(P2P)(或其它分布式)网络环境中的对等机器。机器1300可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、移动电话、网络设施、网络路由器、交换机或网桥,或能够执行指令(顺序或其它方式)的任何机器,所述指令指定待由那个机器采取的动作。此外,虽然仅说明单个机器,但术语“机器”也应被理解为包含个别地或联合地执行一(或多个)指令集以执行本文中所论述的任何一或多种方法的任何机器集合,例如云计算、软件即服务(SaaS)、其它计算机集群配置。
机器1300(例如,计算机系统)可包含硬件处理器1302(例如,中央处理单元(CPU)、图形处理单元(GPU)、硬件处理器核心或其任何组合)、主存储器1304、静态存储器1306(例如,固件、微码、基本输入输出(BIOS)、统一可扩展固件接口(UEFI)的存储器或存储装置)等)及大容量存储装置1308(例如,硬盘驱动器、磁带驱动器、快闪存储装置或其它块装置),其中的一些或全部可经由互连链路1330(例如,总线)彼此通信。机器1300可进一步包含显示单元1310、字母数字输入装置1312(例如,键盘)及用户接口(UI)导航装置1314(例如,鼠标)。在实例中,显示单元1310、输入装置1312及UI导航装置1314可为触摸屏显示器。机器1300可另外包含大容量存储装置1308(例如,驱动单元)、信号产生装置1318(例如,扬声器)、网络接口装置1320及一或多个传感器1316,例如全球定位系统(GPS)传感器、罗盘、加速度计或其它传感器。机器1300可包含用以与一或多个外围装置(例如,打印机、读卡器等)通信或控制所述一或多个外围装置的输出控制器1328,例如串行(例如,通用串行总线(USB)、并行或者其它有线或无线(例如,红外线(IR)、近场通信(NFC)等)连接。
硬件处理器1302、主存储器1304、静态存储器1306或大容量存储装置1308的寄存器可为或包含机器可读媒体1322,所述机器可读媒体1322上存储有体现本文中所描述的任何一或多种技术或功能或由其使用的一或多组数据结构或指令1324(例如,软件)。指令1324在由机器1300执行期间也可完全或至少部分驻留在硬件处理器1302、主存储器1304、静态存储器1306或大容量存储装置1308的任何寄存器中。在实例中,硬件处理器1302、主存储器1304、静态存储器1306或大容量存储装置1308的一个或任何组合可构成机器可读媒体1322。虽然机器可读媒体1322被说明为单个媒体,但术语“机器可读媒体”可包含经配置以存储一或多个指令1324的单个媒体或多个媒体(例如,集中式或分布式数据库,及/或相关联的高速缓存及服务器)。
术语“机器可读媒体”可包含能够存储、编码或携带用于由机器1300执行且致使机器1300执行本公开的任何一或多种技术的指令,或能够存储、编码或携带由此类指令使用的或与此类指令相关联的数据结构的任何媒体。非限制性机器可读媒体实例可包含固态存储器、光学媒体、磁性媒体及信号(例如,射频信号、其它基于光子的信号、声音信号等)。在实例中,非暂时性机器可读媒体包括具有具不变(例如,静止)质量且因此是物质的组合物的多个粒子的机器可读媒体。因此,非暂时性机器可读媒体是不包含暂时性传播信号的机器可读媒体。非暂时性机器可读媒体的特定实例可包含:非易失性存储器,例如半导体存储器装置(例如,电可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM))及快闪存储器装置;磁盘,例如内部硬盘及可卸除磁盘;磁光盘;及CD-ROM及DVD-ROM磁盘。
在实例中,存储在或以其它方式提供在机器可读媒体1322上的信息可代表指令1324,例如指令1324本身或可从其导出指令1324的格式。可从其导出指令1324的这种格式可包含源代码、编码指令(例如,以压缩或加密形式)、封装指令(例如,分成多个封装)或类似者。机器可读媒体1322中代表指令1324的信息可由处理电路系统处理成指令以实施本文中所论述的任何操作。例如,从信息导出指令1324(例如,由处理电路系统处理)可包含:将信息(例如,从源代码、目标代码等)编译、解译、加载、组织(例如,动态或静态链接)、编码、解码、加密、解密、封装、解封装或以其它方式操纵成指令1324。
在实例中,指令1324的导出可包含汇编、编译或解译(例如,由处理电路系统)信息以从由机器可读媒体1322提供的某种中间或预处理格式创建指令1324。当信息以多个部分提供时,可组合、解包及修改信息以创建指令1324。例如,信息可在一或若干远程服务器上的多个压缩源代码封装(或目标代码,或二进制可执行代码等)中。源代码封装可在通过网络传输时被加密且可被解密、解压缩、汇编(例如,链接)(如果必要的话),且在本地机器处被编译或解译(例如,成库、独立可执行文件等)并由本地机器来执行。
可经由网络接口装置1320,使用传输媒体通过通信网络1326进一步传输或接收指令1324,所述网络接口装置利用数种传送协议(例如,帧中继、因特网协议(IP)、传输控制协议(TCP)、用户数据报协议(UDP)、超文本传送协议(HTTP)等)中的任一者。实例通信网络可包含局域网(LAN)、广域网(WAN)、分组数据网络(例如,因特网)、移动电话网络(例如,蜂窝网络)、普通老式电话(POTS)网络及无线数据网络(例如,被称为的电气及电子工程师协会(IEEE)802.11标准族、被称为/>的IEEE 802.16标准族)、IEEE 802.15.4标准族、对等(P2P)网络等等)。在实例中,网络接口装置1320可包含用以连接到通信网络1326的一或多个物理插孔(例如,以太网、同轴或电话插孔)或一或多根天线。在实例中,网络接口装置1320可包含用以使用单输入多输出(SIMO)、多输入多输出(MIMO)或多输入单输出(MISO)技术中的至少一者进行无线通信的多个天线。术语“传输媒体”应被理解为包含能够存储、编码或携带用于由机器1300执行的指令的任何无形媒体,且包含用以促进此软件的通信的数字或模拟通信信号或其它无形媒体。传输媒体是机器可读媒体。
为了更好地说明本文中所描述的方法及设备,下文将一组非限制性实例实施例阐述为数字标识实例。
实例1是一种设备,其包括:桶形处理器,其包括:危险管理电路系统;其中所述桶形处理器经配置以通过使用所述危险管理电路系统来执行操作以:接收在所述桶形处理器的计算管线中执行的指令的指示,所述指令已遇到危险且不能够前进通过所述计算管线;将所述指令的所述指示存储在危险存储器中;接收指示所述危险已清除的信号;及响应于所述信号而致使在所述计算管线的起点处重新调度所述指令。
在实例2中,根据实例1所述的标的物包含,其中所述桶形处理器经配置以检测所述危险。
在实例3中,根据实例1至2所述的标的物包含,其中所述桶形处理器经配置以通过使用所述危险管理电路系统来执行操作以从所述危险存储器删除所述指令的所述指示。
在实例4中,根据实例1至3所述的标的物包含,其中所述危险存储器经配置以存储所述指令的状态。
在实施例5中,根据实例1至4所述的标的物包含,其中所述危险存储器经配置以存储对应于所述指令的所述指示的危险类型。
在实例6中,根据实例5所述的标的物包含,其中所述危险类型是存储器存储危险。
在实例7中,根据实例5至6所述的标的物包含,其中所述危险类型是存储器加载危险。
在实例8中,根据实例5至7所述的标的物包含,其中所述危险类型是纤程加入危险。
在实例9中,根据实例5至8所述的标的物包含,其中所述危险类型是调用危险。
在实例10中,根据实例5至9所述的标的物包含,其中所述危险类型是事件监听危险。
在实例11中,根据实例5至10所述的标的物包含,其中所述危险类型是返回危险。
在实例12中,根据实例5至11所述的标的物包含,其中指示所述危险已清除的所述信号包含所述危险类型。
在实例13中,根据实例12所述的标的物包含,其中为了响应于所述信号而致使在所述计算管线的所述起点处重新调度所述指令,所述危险管理电路系统经配置以致使在所述计算管线的所述起点处重新调度所述危险类型的指令。
在实例14中,根据实例5至13所述的标的物包含,其中指示所述危险已清除的所述信号不包含所述危险类型。
在实例15中,根据实例14所述的标的物包含,其中为了响应于所述信号而致使在所述计算管线的所述起点处重新调度所述指令,所述危险管理电路系统经配置以致使在所述计算管线的所述起点处重新调度存储在所述危险存储器中的所有指令。
在实例16中,根据实例1至15所述的标的物包含,其中所述桶形处理器包含在可编程原子单元中。
在实例17中,根据实例16所述的标的物包含,其中所述可编程原子单元包含在存储器控制器中。
在实例18中,根据实例17所述的标的物包含,其中所述存储器控制器是小芯片系统中的小芯片。
在实例19中,根据实例1至18所述的标的物包含,其中所述桶形处理器是混合线程处理器。
实例20是一种方法,其包括:在危险管理电路系统处接收在桶形处理器的计算管线中执行的指令的指示,所述指令已遇到危险且不能够前进通过所述计算管线;将所述指令的所述指示存储在危险存储器中;接收指示所述危险已清除的信号;及响应于所述信号而致使在所述计算管线的所述起点处重新调度所述指令。
在实例21中,根据实例20所述的标的物包含,在致使重新调度所述指令之后从所述危险存储器删除所述指令的所述指示。
在实例22中,根据实例20至21所述的标的物包含,存储所述指令的状态。
在实例23中,根据实例20至22所述的标的物包含,存储对应于所述指令的所述指示的危险类型。
在实例24中,根据实例23所述的标的物包含,其中所述危险类型是存储器存储危险。
在实例25中,根据实例23至24所述的标的物包含,其中所述危险类型是存储器加载危险。
在实例26中,根据实例23至25所述的标的物包含,其中所述危险类型是纤程加入危险。
在实例27中,根据实例23至26所述的标的物包含,其中所述危险类型是调用危险。
在实例28中,根据实例23至27所述的标的物包含,其中所述危险类型是事件监听危险。
在实例29中,根据实例23至28所述的标的物包含,其中所述危险类型是返回危险。
在实例30中,根据实例23至29所述的标的物包含,其中指示所述危险已清除的所述信号包含所述危险类型。
在实例31中,根据实例30所述的标的物包含,其中响应于所述信号而致使在所述计算管线的所述起点处重新调度所述指令包括致使在所述计算管线的所述起点处重新调度所述危险类型的指令。
在实例32中,根据实例23至31所述的标的物包含,其中指示所述危险已清除的所述信号不包含所述危险类型。
在实例33中,根据实例32所述的标的物包含,其中响应于所述信号而致使在所述计算管线的所述起点处重新调度所述指令包括致使在所述计算管线的所述起点处重新调度存储在所述危险存储器中的所有指令。
在实例34中,根据实例20至33所述的标的物包含,其中所述危险管理电路系统集成在所述桶形处理器中,且所述桶形处理器包含在可编程原子单元中。
在实例35中,根据实例34所述的标的物包含,其中所述可编程原子单元包含在存储器控制器中。
在实例36中,根据实例35所述的标的物包含,其中所述存储器控制器是小芯片系统中的小芯片。
在实例37中,根据实例20至36所述的标的物包含,其中所述桶形处理器是混合线程处理器。
实例38是至少一种包含指令的机器可读媒体,所述指令在由处理电路系统执行时致使所述处理电路系统执行操作以实施实例1至37中的任一实例。
实例39是一种包括用以实施实例1至37中的任一实例的构件的设备。
实例40是一种用以实施实例1至37中的任一实例的系统。
实例41是一种用以实施实例1至37中的任一实例的方法。
上述详细描述包含对附图的参考,所述附图形成所述详细描述的一部分。附图以说明的方式展示其中可实施本发明的特定实施例。这些实施例在本文中也被称为“实例”。此类实例可包含除所展示或描述的元件之外的元件。然而,本发明人也考虑其中仅提供那些所展示或描述元件的实例。此外,本发明人还考虑使用那些所展示或描述元件(或其一或多个方面)相对于特定实例(或其一或多个方面)或相对于本文中所展示或描述的其它实例(或其一或多个方面)的任何组合或排列的实例。
在本文献中,如专利文件中常见的是,使用术语“一”或“一个”来包含一或多于一个,而与“至少一个”或“一或多个”的任何其它例子或用法无关。在本文献中,术语“或”用来指代非排他性的“或”,使得“A或B”可包含“A而非B”、“B而非A”以及“A及B”,除非另有指示。在所附权利要求书中,术语“包含”及“其中”被用作相应术语“包括”及“其中”的简明英语等效词。而且,在所附权利要求书中,术语“包含”及“包括”是开放式的,即,包含除在权利要求中的此术语之后列出的元件之外的元件的系统、装置、物品或过程仍然被认为落入那个权利要求的范围内。此外,在所附权利要求书中,术语“第一”、“第二”及“第三”等仅仅用作标签,且并不意在对它们的对象强加数值要求。
上述描述意在说明性的而非限制性的。例如,上述实例(或其一或多个方面)可彼此组合使用。例如,所属领域的一般技术人员在审阅上述描述后可使用其它实施例。提交时应理解,上述描述将不被用来解释或限制权利要求书的范围或含义。而且,在上述具体实施方式中,各种特征可分组在一起以简化本公开。这不应被解释为希望未要求保护的所公开特征对于任何权利要求是必要的。而是,发明标的物可在于少于特定所公开实施例的所有特征。因此,所附权利要求书由此并入到具体实施方式中,其中每一权利要求自身作为单独实施例,且经考虑,此类实施例可以各种组合或置换彼此组合。本发明的范围应参考所附权利要求书以及此权利要求书的等效物的全范围来确定。

Claims (20)

1.一种设备,其包括:
桶形处理器,其包括:
危险管理电路系统;
其中所述桶形处理器经配置以通过使用所述危险管理电路系统来执行操作以:
接收在所述桶形处理器的计算管线中执行的指令的指示,所述指令已遇到危险且不能够前进通过所述计算管线;
将所述指令的所述指示存储在危险存储器中;
接收指示所述危险已清除的信号;及
响应于所述信号而致使在所述计算管线的起点处重新调度所述指令。
2.根据权利要求1所述的设备,其中所述桶形处理器经配置以检测所述危险。
3.根据权利要求1所述的设备,其中所述桶形处理器经配置以通过使用所述危险管理电路系统来执行操作以从所述危险存储器删除所述指令的所述指示。
4.根据权利要求1所述的设备,其中所述危险存储器经配置以存储所述指令的状态。
5.根据权利要求1所述的设备,其中所述危险存储器经配置以存储对应于所述指令的所述指示的危险类型。
6.根据权利要求5所述的设备,其中所述危险类型是存储器存储危险。
7.根据权利要求5所述的设备,其中所述危险类型是存储器加载危险。
8.根据权利要求5所述的设备,其中所述危险类型是纤程加入危险。
9.根据权利要求5所述的设备,其中所述危险类型是调用危险。
10.根据权利要求5所述的设备,其中所述危险类型是事件监听危险。
11.根据权利要求5所述的设备,其中所述危险类型是返回危险。
12.根据权利要求5所述的设备,其中指示所述危险已清除的所述信号包含所述危险类型。
13.根据权利要求12所述的设备,其中为了响应于所述信号而致使在所述计算管线的所述起点处重新调度所述指令,所述危险管理电路系统经配置以致使在所述计算管线的所述起点处重新调度所述危险类型的指令。
14.根据权利要求5所述的设备,其中指示所述危险已清除的所述信号不包含所述危险类型。
15.根据权利要求14所述的设备,其中为了响应于所述信号而致使在所述计算管线的所述起点处重新调度所述指令,所述危险管理电路系统经配置以致使在所述计算管线的所述起点处重新调度存储在所述危险存储器中的所有指令。
16.根据权利要求1所述的设备,其中所述桶形处理器包含在可编程原子单元中。
17.根据权利要求16所述的设备,其中所述可编程原子单元包含在存储器控制器中。
18.根据权利要求17所述的设备,其中所述存储器控制器是小芯片系统中的小芯片。
19.根据权利要求1所述的设备,其中所述桶形处理器是混合线程处理器。
20.一种方法,其包括:
在危险管理电路系统处接收在桶形处理器的计算管线中执行的指令的指示,所述指令已遇到危险且不能够前进通过所述计算管线;
将所述指令的所述指示存储在危险存储器中;
接收指示所述危险已清除的信号;及
响应于所述信号而致使在所述计算管线的起点处重新调度所述指令。
CN202310789075.1A 2022-08-29 2023-06-29 在用于管理危险清除的桶形处理器中停驻线程 Pending CN117632403A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/897,926 2022-08-29
US17/897,926 US20240070011A1 (en) 2022-08-29 2022-08-29 Parking threads in barrel processor for managing hazard clearing

Publications (1)

Publication Number Publication Date
CN117632403A true CN117632403A (zh) 2024-03-01

Family

ID=90000552

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310789075.1A Pending CN117632403A (zh) 2022-08-29 2023-06-29 在用于管理危险清除的桶形处理器中停驻线程

Country Status (2)

Country Link
US (1) US20240070011A1 (zh)
CN (1) CN117632403A (zh)

Also Published As

Publication number Publication date
US20240070011A1 (en) 2024-02-29

Similar Documents

Publication Publication Date Title
US20220206846A1 (en) Dynamic decomposition and thread allocation
US11709796B2 (en) Data input/output operations during loop execution in a reconfigurable compute fabric
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
US11789642B2 (en) Loading data from memory during dispatch
US20230056665A1 (en) Mechanism to provide reliable receipt of event messages
US11940928B2 (en) Parking threads in barrel processor for managing cache eviction requests
US20240070011A1 (en) Parking threads in barrel processor for managing hazard clearing
US20230058935A1 (en) Managing return parameter allocation
US20240069958A1 (en) Mechanism to handle breakpoints in a multi-element processor
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
US20230056500A1 (en) Chained resource locking
US20230055320A1 (en) Loop execution in a reconfigurable compute fabric.
US20240028526A1 (en) Methods and systems for requesting atomic operations in a computing system
US20240069984A1 (en) Queueing asynchronous events for acceptance by threads executing in a barrel processor
CN118043792A (zh) 提供事件消息的可靠接收的机制
CN118043815A (zh) 调试数据流计算机架构
CN118056181A (zh) 链式资源锁定
CN118043796A (zh) 存储器计算系统中的基于片块的结果缓冲
CN117435549A (zh) 用于硬件组件之间的通信的方法和系统
CN117435548A (zh) 用于硬件组件之间的通信的方法和系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication