CN117632256A - 用于处置多元件处理器中的断点的装置及方法 - Google Patents
用于处置多元件处理器中的断点的装置及方法 Download PDFInfo
- Publication number
- CN117632256A CN117632256A CN202310796804.6A CN202310796804A CN117632256A CN 117632256 A CN117632256 A CN 117632256A CN 202310796804 A CN202310796804 A CN 202310796804A CN 117632256 A CN117632256 A CN 117632256A
- Authority
- CN
- China
- Prior art keywords
- memory
- breakpoint
- controller
- chiplet
- tiles
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 230000015654 memory Effects 0.000 claims abstract description 389
- 238000012545 processing Methods 0.000 claims abstract description 123
- 230000000977 initiatory effect Effects 0.000 claims abstract description 7
- 230000004044 response Effects 0.000 claims description 42
- 230000003213 activating effect Effects 0.000 claims 1
- 238000004891 communication Methods 0.000 description 35
- 239000000835 fiber Substances 0.000 description 25
- 230000001360 synchronised effect Effects 0.000 description 13
- 239000000872 buffer Substances 0.000 description 11
- 238000013461 design Methods 0.000 description 11
- 239000004744 fabric Substances 0.000 description 10
- 230000006870 function Effects 0.000 description 10
- 230000002093 peripheral effect Effects 0.000 description 10
- 230000008569 process Effects 0.000 description 10
- 230000008901 benefit Effects 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 239000000758 substrate Substances 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 7
- 238000004519 manufacturing process Methods 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 238000013519 translation Methods 0.000 description 6
- 230000003068 static effect Effects 0.000 description 5
- 238000012937 correction Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000011664 signaling Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000007792 addition Methods 0.000 description 3
- 239000002131 composite material Substances 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 101000872124 Arabidopsis thaliana Histone H2A.6 Proteins 0.000 description 1
- 102100035964 Gastrokine-2 Human genes 0.000 description 1
- 101001075215 Homo sapiens Gastrokine-2 Proteins 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 230000020169 heat generation Effects 0.000 description 1
- 239000012212 insulator Substances 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 235000013599 spices Nutrition 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Multimedia (AREA)
- Multi Processors (AREA)
- Advance Control (AREA)
Abstract
本文中描述用于处置多元件处理器中的断点的装置及方法。一种计算节点包含混合线程处理器及混合线程结构,其中所述混合线程结构包括多个存储器计算片块,其中所述存储器计算片块中的每一者包含用于执行内核的相应处理及存储元件,且其中所述存储器计算片块中的每一者包含用于启动所述多个存储器计算片块的断点的断点控制器。
Description
政府权利
本发明是根据ONR授予的第N00014-21-9-000号协议在政府的支持下完成的。政府对本发明享有一定权利。
技术领域
本公开涉及用于处置多元件处理器中的断点的机制。
背景技术
例如冯·诺依曼架构的各种计算机架构通常使用用于数据的共享存储器、用于存取共享存储器的总线、算术单元及程序控制单元。然而,在处理器与存储器之间移动数据需要大量时间及能量,此又会约束计算机系统的性能及容量。鉴于这些限制,期望新计算架构及装置来提高计算性能超过晶体管扩展的惯例(即,摩尔定律)。
软件执行可使用过程内的多个线程来多线程化,其中每一线程可独立且并发地执行,共享过程资源。数据可使用线程间通信方法在线程之间传送。另外,可协调线程或过程的执行。
发明内容
一方面,本公开提供一种计算节点,其包括:混合线程处理器;及混合线程结构,其中所述混合线程结构包括多个存储器计算片块,其中所述多个存储器计算片块中的每一者包含用于执行内核的相应计算元件及存储元件,且其中所述多个存储器计算片块中的每一者包含经配置以启动所述多个存储器计算片块的断点的断点控制器。
另一方面,本公开提供一种设备,其包括:分派接口电路系统,其经配置以与多个存储器计算片块通信,其中所述多个存储器计算片块中的每一者包含用于执行内核的相应计算元件及存储元件,且其中所述多个存储器计算片块中的每一者包含用于启动所述多个存储器计算片块之间的断点的断点控制器;其中所述分派接口电路系统经配置以:检测由所述多个存储器计算片块中的一者断言的断点请求信号;及响应于检测到所述断点请求信号而向所述多个存储器计算片块断言断点停止信号。
另一方面,本公开提供一种方法,其包括:在粗粒度可重新配置阵列(CGRA)处理器的中央控制器处检测由所述CGRA处理器的多个处理元件中的一者断言的断点请求信号,其中所述中央控制器经配置以与多个处理元件通信,其中所述多个处理元件中的每一者包含用于执行内核的相应功能元件及存储元件,且其中所述多个处理元件中的每一者包含用于启动所述多个处理元件的断点的断点控制器;及响应于检测到所述断点请求信号而向所述多个处理元件断言断点停止信号。
附图说明
将从下文给出的具体实施方案及从本公开的各个实施例的附图更完全理解本公开。然而,图式不应被视为将本公开限于特定实施例,而是仅供解释及理解。
为了容易地识别任何特定元件或动作的论述,参考元件符号中的最高有效数字或前几个最高有效数字是指其中首先介绍所述元件的图号。
图1大体上说明根据实施例的存储器计算系统的背景下的第一存储器计算装置的第一实例。
图2大体上说明根据实施例的存储器计算装置的存储器子系统的实例。
图3大体上说明根据实施例的用于存储器控制器的可编程原子单元的实例。
图4说明根据实施例的存储器计算装置的混合线程处理器(HTP)加速器的实例。
图5说明根据实施例的存储器计算装置的混合线程结构(HTF)的表示的实例。
图6A大体上说明根据实施例的小芯片系统的实例。
图6B大体上说明展示来自图6A的实例的小芯片系统中的各个组件的框图。
图7大体上说明根据实施例的存储器计算装置的基于小芯片的实施方案的实例。
图8说明根据实施例的存储器计算装置小芯片的实例平铺。
图9是说明根据实施例的纤程创建指令的表。
图10是说明根据实施例的粗粒度可重新配置阵列(CGRA)处理器的框图。
图11是说明根据实施例的混合线程结构(HTF)的框图。
图12是根据实施例的用于处置CGRA处理器中的断点的方法的实例的流程图。
图13说明本文中论述的技术(例如方法)中的任何一或多者可用其实施、在其中实施或由其实施的实例机器的框图。
具体实施方式
可利用材料、装置及集成技术的最新进展来提供以存储器为中心的计算拓扑。此类拓扑可实现计算效率及工作量处理量提高,例如,针对受大小、重量或功率要求约束的应用。拓扑可用于促进存储器或其它数据存储元件附近或内部的低延时计算。方法可特别适于具有稀疏查找的各种计算密集操作,例如在变换计算(例如快速傅里叶变换计算(FFT))中或在例如神经网络或人工智能(AI)、金融分析或模拟或建模(例如针对计算流体动力学(CFD)、工程师用增强型声学模拟器(EASE)、模拟集成电路重点项目(SPICE)及其它)的应用中。
本文中论述的系统、装置及方法可包含或使用具有处理器或处理能力的存储器计算系统,处理器或处理能力提供于存储器或数据存储组件中、附近或与存储器或数据存储组件集成。此类系统在本文中通常称为近存储器计算(CNM)系统。CNM系统可为基于节点的系统,其中系统中的个别节点使用系统扩展结构耦合。每一节点可包含或使用具有尤其在其中预期高高速缓存未命中率的环境中促进密集操作的自定义计算结构的专用或通用处理器及用户可存取加速器。
在实例中,CNM系统中的每一节点可具有一或若干主机处理器。在每一节点内,专用混合线程处理器(HTP)可占用芯片上网络的离散端点。混合线程处理器可存取系统的特定节点中的一些或所有存储器,或混合线程处理器可跨多个节点的网络经由系统扩展结构存取存储器。自定义计算结构或混合线程结构(HTF)在每一节点处可具有其自身处理器或加速器且可以比混合线程处理器更高的带宽操作。近存储器计算系统中的不同节点可不同地配置,例如具有不同计算能力、不同类型的存储器、不同接口或其它差异。然而,节点可经共同耦合以共享定义地址空间内的数据及计算资源。
在实例中,近存储器计算系统或系统内的节点可经用户配置用于自定义操作。用户可提供使用例如C/C++的高级编程语言的指令,其可经编译且直接映射成系统或CNM系统中的一或多个节点的数据流架构。即,系统中的节点可包含可经配置以直接实施或支持用户指令以借此增强系统性能且减少延时的硬件块(例如存储器控制器、原子单位、其它客户加速器等)。
在实例中,近存储器计算系统可特别适于实施指令及嵌套循环(例如两个、三个或更多个深度循环或多维循环)的层次。标准编译器可用于接受高级语言指令且又直接编译成节点中的一或多者的数据流架构。举例来说,系统中的节点可包含混合线程结构加速器。混合线程结构加速器可在CNM系统的用户空间中执行且可启动可并行操作的其自身线程或子线程。每一线程可映射到不同循环迭代以借此支持多维循环。使用启动此类嵌套循环的能力以及其它能力,CNM系统可实现计算密集操作的大量时间节省及延时改进。
近存储器计算系统或近存储器计算系统的节点或组件可包含或使用各种存储器装置、控制器及互连件以及其它事物。在实例中,系统可包括各种互连节点,且节点或节点群组可使用小芯片实施。小芯片是用于集成各种处理功能性的新兴技术。通常,小芯片系统由集成于中介层上且封装在一起的离散芯片(例如不同衬底或裸片上的集成电路(IC))组成。此布置不同于在一个衬底(例如单个裸片)上含有相异装置块(例如知识产权(IP)块)的单个芯片(例如IC),例如片上系统(SoC)或集成于板上的离散封装装置。一般来说,小芯片提供相较于单裸片芯片的生产效益,其包含更高良率或降低开发成本。下文论述的图6A及图6B大体上说明例如可包括近存储器计算系统的小芯片系统的实例。
超线程结构(HTF)加速器是粗粒度可重新配置阵列(CGRA)处理器的例子。一般来说,CGRA处理器包含通过网络连接的处理元件阵列,其中每一处理元件含有至少一个算术逻辑单元(ALU)(或类似功能单元)及寄存器文件。功能单元能够执行算术、逻辑或存储器操作。每一处理元件被提供指定操作的指令。处理元件可执行不同存储器功能,例如使用共享数据及地址总线从存储器读取数据/将数据写入到存储器。处理元件能够并行操作以实现高处理量。
单个任务可跨CGRA中的若干处理元件并行化。多个任务可涉及多个数据流。任务可经组件化到内核(也称为“计算内核”)中。内核是为高处理量加速器(例如CGRA或HTF)编译的例程。内核由通常在中央处理单元(CPU)(如CNM系统中的节点中的HTP)上运行的主程序使用。内核可用于常用功能,例如快速傅里叶变换(FFT)、2D卷积或FIR滤波器。内核可用于并行化循环或其它可执行指令。
CGRA(或CGRA的一部分)处理器可经配置用于基于内核的操作。CGRA处理器可经初始化以在内核执行期间执行特定操作。每一内核可能需要CGRA处理器的不同配置执行其特定算法。配置可配置CGRA以供处理元件计算且用于处理元件之间的数据流。举例来说,一个内核可包含阵列中的一个处理元件,其经配置以将其结果传递到相邻处理元件,而不同内核可包含在CGRA中的非相邻处理元件之间传递结果。
在一些实例中,近存储器计算系统经编程以将可重新配置计算结构(例如CGRA)的组件(例如本文中描述的混合线程结构(HTF))布置到一或多个同步流程中。可重新配置计算结构包括可经布置以形成一或多个同步流程的一或多个硬件分派接口控制器及一或多个硬件计算/处理元件,如本文中描述。
计算/处理元件包括形成计算管线用于处理接收到的数据的处理元件存储器及处理器或其它合适逻辑电路系统。在一些实例中,处理元件包括多个并行处理通道,例如单指令多数据(SIMD)处理通道。处理元件可进一步包括电路系统用于将同步及异步消息发送及接收到分派接口控制器、其它处理元件及其它系统组件,如本文中描述。实例处理元件在本文中关于HTF片块(例如图5的片块504、510、512以及其它)进行描述。
分派接口控制器可包含处理器或其它逻辑电路系统用于管理同步流程,如本文中描述。分派接口控制器包括电路系统用于将同步及异步消息发送到处理元件、其它分派接口控制器及其它系统组件,如本文中描述。在一些实例中,分派接口控制器使用本文中描述的HTF片块504、510、512中的一或多者的片块基础来实施。
同步流程可包含或使用布置于可重新配置计算结构中的硬件,可重新配置计算结构包括硬件分派接口控制器及包括一或多个硬件处理元件的有序同步数据路径。同步流程可执行一或多个任务线程。为了执行线程,同步流程的硬件组件传递同步消息且按同步流程的顺序执行一组预定操作。
在操作期间,CGRA处理器同步或并发地执行若干处理元件上的指令。为了更好地评估功能性、调试问题或分析性能,系统设计者可能期望查看处理元件在特定处理点处的状态。使用断点通常提供一种机制来促进此监测及分析。然而,处置多元件处理器中的断点要比在单元件处理器中更复杂,因为在处理元件之间需要协调以同时或以协调方式停止及重启处理元件。需要一种改进机制来处置CGRA中的多个处理元件的断点。
本文中描述的系统及技术呈现CGRA处理器中的分派接口控制器,其可从一个处理元件接收断点已被发出的通知及接着通知CGRA中的其它处理元件同步地协调停止及重启。分派接口控制器可连接到主机或某其它电路或处理器,使得分派接口控制器可向主机通知发生了断点。主机可从被停止的处理元件读出状态信息。接着,主机可恢复具有初始断点的处理元件的操作,处理元件又可通过分派接口控制器将信号传播到其它处理元件,借此同步地重启剩余处理元件。断点/复位信令可在相同时钟循环中执行,使得所有处理元件同时停止及/或重启。下文中陈述额外细节。
近存储器计算系统或近存储器计算系统的节点或组件可包含或使用各种存储器装置、控制器及互连结构以及其它事物。在实例中,系统可包括具有各种互连节点的计算结构,且节点或节点群组可使用小芯片实施。小芯片是用于集成各种处理功能性的新兴技术。通常,小芯片系统由集成于中介层上且封装在一起的离散芯片(例如不同衬底或裸片上的集成电路(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或XTC)指令以在加速器资源上启动线程。加速器资源包含HTP及HTF以及通用加速器。通用加速器允许与尚未定义的加速器交互。
线程创建指令指定将在经创建线程完成时返回的信息。在可创建线程之前,必须为返回信息保留空间。当线程最终完成时,线程将其返回信息写入到保留空间中且等待父线程执行线程加入指令。线程加入指令从保留空间取得返回信息且将其传送到线程的X寄存器状态以稍后由父线程使用。一旦加入线程,则保留空间释放。
线程创建指令可指示在所创建线程完成时无返回信息返回。此指示允许HTP加速器创建线程且无需为返回信息保留空间。在此情况中,计数器用于追踪无返回信息的突出线程的数目。
父线程执行加入指令(例如EFJ、EFJA、XFJ、XFJA)以确定子线程是否完成且获得返回结果。所有加速器资源(HTP、HTF及通用)使用此常见方法使线程完成状态返回到启动父线程。从子线程返回的状态可包含:调用方ID及0、1或2个64位返回参数。线程可在指定无返回(nr)的情况下创建。
纤程加入指令(例如EFJ或XFJ)加入在没有无返回指示的情况下创建的线程且忽略在具有无返回指示的情况下创建的线程。纤程加入指令处理单个完成子线程且将返回的调用ID及参数写入到线程X寄存器供父线程存取。
纤程创建指令(例如EFC或XFC)启动混合线程加速器(HTA)上的线程。高达四个HTA可存在于包含HTP及HTF的CNM装置内。
纤程创建指令在图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后缀暗示一或两个64位返回变元以及调用方ID外将被存储且可用于加入指令。
返回信息存储在执行纤程创建指令时分配。如果没有足够返回信息空间可用,那么暂停纤程创建指令直到空间变得可用。具有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创建的线程)可执行忙碌失败类型的EFC/XFC指令或以非HTP加速器资源为目标的EFC/XFC。如果纤程尝试执行非忙碌失败HTP纤程创建,那么将导致陷阱。
线程可在例如HTP 140或HTF 142的加速器上创建。在本档案中,线程可指代系统或主机线程,而“纤程”可指代在HTP 140或HTF 142处创建的线程。换句话说,主机分派给HTP加速器的工作称为主线程,且HTP分派给HTP加速器的工作称为纤程线程。在许多情况中,术语“纤程线程”与术语“线程”可互换。
多种类型的线程由HTP及HTF架构支持。线程可经设计为返回或“无返回”类型的线程。如果线程是返回类型,那么纤程创建指令指定返回信息的存储空间。如果线程是“无返回”类型的线程,那么无返回信息存储是必要的,且唯一限制是系统中的可用线程的最大数目。
图10是说明根据实施例的粗粒度可重新配置阵列(CGRA)处理器1000的框图。根据各个实例,本文中描述的HTF 142、HTF 500或HTF集群502可被视为CGRA处理器1000的相应例子。
CGRA处理器1000包含多个处理元件1002A、1002B、…、1002N(此处统称为1002)。处理元件1002包含至少一个算术逻辑单元(ALU)(或类似功能单元)及寄存器文件,寄存器文件可经实施为一或多个存储器装置。功能单元能够执行算术、逻辑或存储器操作。处理元件1002可经实施为HTF片块或可包括HTF片块的一部分。
CGRA处理器1000包含连接到处理元件1002中的每一者的控制器1004。应理解,控制器1004可与其它电路系统集成以执行额外功能。例如,控制器1004可与图5的分派接口508集成以控制在基础片块510及HTF集群502上的其它片块(例如504、510或512)中执行。
控制器1004可连接到由处理元件1002共享的总线。替代地,控制器1004可具有到每一处理元件1002的单独线(例如,在集线器及轮辐拓扑中)。在图10中说明的实例中,每一处理元件1002具有到控制器1004的相应专用线,处理元件1002能够经由其断言断点请求信号。
响应于检测到来自处理元件1002中的一者的断点请求(“breakreq”)信号,控制器1004断言可提供到处理元件1002中的每一者的断点停止(“breakstop”)信号。处理元件1002中的每一者中的断点控制器检测“breakstop”信号且设置其相应断点存储器中的断点状态变量。
断点存储器可包含至少两个位。一个位用于指示断点请求是否被断言。此位称为“断点请求”位且在处理元件1002遇到断点指令且向控制器1004断言“breakreq”信号时设置。断点存储器中的另一位是“断点停止”位且指示断点停止是否由控制器1004指示。当“断点停止”位被设置时,断点控制器可中止处理元件1002,例如通过在处理元件1002的指令队列的前面插入无操作(NOP)。此可在每个时钟循环期间在“breakstop”信号被断言时或在断点停止位被设置时执行。
除设置“breakstop”信号之外,控制器1004还可与主机1006通信以向主机1006通知处理元件1002被中止。主机1006可沿着软件栈将通知提供给调试器接口,例如,其中人类工程师或其它调试处理器可检验处理元件1002的状态或执行其它诊断。在完成诊断之后,人类工程师或其它调试处理器可通过改变最初断言了“breakreq”信号的处理元件1002中的断点状态变量来经由主机1006重启处理元件1002的操作。特定来说,主机1006改变断点存储器中的断点请求位的值以使位复原。此致使处理元件1002取消断言“breakreq”信号,其致使控制器1004取消断言“breakstop”信号。当“breakstop”信号被取消断言时,处理元件1002使断点停止位复原且恢复操作。
图11是说明根据实施例的混合线程结构(HTF)1100的实例的框图。在实施例中,CGRA处理器1000使用多个HTF片块的一或多个HTF集群来实施,其中每一HTF片块具有一或多个处理元件及一或多个存储器以处理片块上的指令。如上文例如在图1到5中描述,HTF集群及HTF片块可使用通信结构彼此连接。
HTF 1100包含HTF集群1102,其包括多个HTF片块1104A、1104B、…、1104N(统称为1104)。每一HTF片块1104包含断点控制器1106的相应例子。在实施例中,每一HTF片块1104的断点控制器1106直接连接到HTF集群1102上的分派接口控制器1108。断点控制器1106还包含断点存储器1110或有权使用HTF片块1104上的断点存储器1110来存储断点状态信息。
在遇到断点指令时,断点控制器1106向分派接口控制器1108断言断点请求信号。断点控制器1106设置存储器1110中的软件可见“断点请求”位。
当分派接口控制器1108检测到来自一个片块(即,处理元件)的经断言断点请求信号时,分派接口控制器1108向所有HTF片块1104(即,处理元件)断言“breakstop”信号。如果工作量散布于若干集群上,那么分派接口控制器1108还可将集群外传送到HTF 1100中的其它集群的其它片块。
在从分派接口控制器接收到“breakstop”信号之后,HTF片块1104立即中止。此可通过在其内部状态中设置“断点停止”位(例如,设置存储器1110中的位)来执行。接着,执行在HTF片块1104上停止,同时保存状态。中止可由断点控制器1106通过在指令存储器1112中插入无操作(NOP)来执行,从而基本上致使HTF片块1104暂停另外操作。片块本地存储器寄存器的内容可经保存用于检验或读取。存储器寄存器保持可在内核执行期间修改的变量。存储器寄存器可包含随着内核的执行继续通过数据管线而修改的表。
接着,分派接口控制器1108经由接口(例如,经由主机接口及分派120)向主机系统(例如主机108)传送断点已发生且将被处置的指示。此处置可包含从HTF集群1102中的一或多个HTF片块1104读出状态信息。在处置断点之后,主机向HTF片块1104写入启动了断点,从而修改断点存储器1110中的状态。例如,主机可清除存储器1110中的“断点请求”位。此致使HTF片块1104向分派接口控制器1108取消断言“断点请求”信号。当分派接口控制器1108观察到“断点请求”信号被取消断言时,其通过取消断言“breakstop”信号来命令所有HTF片块1104(即,处理元件)恢复执行。HTF片块1104在相同时钟循环上清除其相应“断点停止”位且同步地重启执行。例如,HTF片块1104可停止将NOP指令插入指令存储器中,从而允许指令存储器1112中先前存在的指令在常规操作中执行。
图12是根据实施例的用于处置粗粒度可重新配置阵列(CGRA)处理器中的断点的方法1200的实例的流程图。方法1200的操作由计算机硬件执行,例如关于图1到10(例如主机系统108、主机处理器122、HTP 140、HTP核心402、分派接口508、控制器1004、分派接口控制器1108)或图13(例如处理电路系统)描述的计算机硬件。
在1202处,检测由CGRA处理器的多个处理元件中的一者断言的断点请求信号。在实施例中,粗粒度可重新配置阵列(CGRA)处理器的中央控制器检测经断言信号。在此实施例中,中央控制器经配置以与多个处理元件通信,其中多个处理元件中的每一者包含用于执行内核的相应功能元件及存储元件,且其中多个处理元件中的每一者包含用于启动多个处理元件的断点的断点控制器。
在1204处,响应于检测到断点请求信号而向多个处理元件断言断点停止信号。
在实施例中,多个处理元件的每一相应断点控制器经配置以设置相应断点状态变量来指示断点停止信号被断言。在实施例中,多个处理元件的每一相应断点控制器经配置以使用NOP指令来致使相应处理元件暂停内核的执行。
在实施例中,方法1200包含检测到断点请求信号由多个处理元件中的一者取消断言及响应于检测到断点请求信号而向多个处理元件取消断言断点停止信号。在另一实施例中,多个处理元件的每一相应断点控制器经配置以使相应断点状态变量复原以指示断点停止信号被取消断言。在另一实施例中,多个处理元件的每一相应断点控制器经配置以中断使用NOP指令以致使相应处理元件继续内核的执行。
在实施例中,中央控制器经集成于混合线程结构中。在另一实施例中,混合线程结构包含于存储器装置中。
图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的寄存器可为或包含其上存储体现本文中描述的技术或功能中的任何一或多者或由本文中描述的技术或功能中的任何一或多者使用的一或多组数据结构或指令1324(例如软件)的机器可读媒体1322。指令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。举例来说,信息可在一或若干远程服务器上的多个压缩源代码封装(或目标代码或二进制可执行码等)中。源代码封装可在经由网络中转时加密且在本地机器处解码、解压、组装(例如链接)(如果有必要)及编译或解译(例如变成库、独立可执行等)且由本地机器执行。
指令1324可进一步通过通信网络1326使用传输媒体经由利用数个传送协议中的任一者(例如帧中继、因特网协议(IP)、传输控制协议(TCP)、用户数据报协议(UDP)、超文本传送协议(HTTP)等)的网络接口装置1320来传输或接收。实例通信网络可包含局域网(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中,根据实例2所述的标的物包含,其中所述中央控制器经配置以响应于检测到来自所述断点控制器的所述断点请求信号而向所述多个存储器计算片块断言断点停止信号。
在实例4中,根据实例2到3所述的标的物包含,其中所述断点控制器经配置以设置断点状态变量来指示所述断点请求信号被断言。
在实例5中,根据实例4所述的标的物包含,其中所述断点控制器经配置以响应于所述断点状态变量被复原而取消断言所述断点请求信号。
在实例6中,根据实例1到5所述的标的物包含,其中所述断点控制器经配置以设置断点状态变量来指示断点停止信号被断言,所述断点停止信号由管理跨所述多个存储器计算片块的断点的中央控制器提供。
在实例7中,根据实例6所述的标的物包含,其中所述断点控制器经配置以使用无操作(NOP)指令来致使所述相应计算元件暂停所述内核的执行。
在实例8中,根据实例1到7所述的标的物包含,其中所述混合线程处理器及所述混合线程结构包含于所述计算节点的存储器装置中。
实例9是一种设备,其包括:分派接口电路系统,其经配置以与多个存储器计算片块通信,其中所述多个存储器计算片块中的每一者包含用于执行内核的相应计算元件及存储元件,且其中所述多个存储器计算片块中的每一者包含用于启动所述多个存储器计算片块之间的断点的断点控制器;其中所述分派接口电路系统经配置以:检测由所述多个存储器计算片块中的一者断言的断点请求信号;及响应于检测到所述断点请求信号而向所述多个存储器计算片块断言断点停止信号。
在实例10中,根据实例9所述的标的物包含,其中所述多个存储器计算片块的每一相应断点控制器经配置以设置相应断点状态变量来指示所述断点停止信号被断言。
在实例11中,根据实例10所述的标的物包含,其中所述多个存储器计算片块的每一相应断点控制器经配置以使用无操作(NOP)指令来致使所述相应存储器计算片块暂停所述内核的执行。
在实例12中,根据实例11所述的标的物包含,其中所述多个存储器计算片块的每一相应断点控制器经配置以中断使用NOP指令以致使所述相应存储器计算片块继续所述内核的执行。
在实例13中,根据实例9到12所述的标的物包含,其中所述分派接口电路系统经配置以:检测到所述断点请求信号由所述多个存储器计算片块中的一者取消断言;及响应于检测到所述断点请求信号而向所述多个存储器计算片块取消断言所述断点停止信号。
在实例14中,根据实例13所述的标的物包含,其中所述多个存储器计算片块的每一相应断点控制器经配置以使相应断点状态变量复原以指示所述断点停止信号被取消断言。
在实例15中,根据实例14所述的标的物包含,其中所述多个存储器计算片块的每一相应断点控制器经配置以中断使用NOP指令以致使所述相应存储器计算片块继续所述内核的执行。
在实例16中,根据实例9到15所述的标的物包含,其中所述分派接口电路系统经集成于混合线程结构中。
在实例17中,根据实例16所述的标的物包含,其中所述混合线程结构包含于存储器装置中。
实例18是一种方法,其包括:在粗粒度可重新配置阵列(CGRA)处理器的中央控制器处检测由所述CGRA处理器的多个处理元件中的一者断言的断点请求信号,其中所述中央控制器经配置以与多个处理元件通信,其中所述多个处理元件中的每一者包含用于执行内核的相应功能元件及存储元件,且其中所述多个处理元件中的每一者包含用于启动所述多个处理元件的断点的断点控制器;及响应于检测到所述断点请求信号而向所述多个处理元件断言断点停止信号。
在实例19中,根据实例18所述的标的物包含,其中所述多个处理元件的每一相应断点控制器经配置以设置相应断点状态变量来指示所述断点停止信号被断言。
在实例20中,根据实例19所述的标的物包含,其中所述多个处理元件的每一相应断点控制器经配置以使用NOP指令来致使所述相应处理元件暂停所述内核的执行。
在实例21中,根据实例18到20所述的标的物包含:检测到所述断点请求信号由所述多个处理元件中的一者取消断言;及响应于检测到所述断点请求信号而向所述多个处理元件取消断言所述断点停止信号。
在实例22中,根据实例21所述的标的物包含,其中所述多个处理元件的每一相应断点控制器经配置以使相应断点状态变量复原以指示所述断点停止信号被取消断言。
在实例23中,根据实例22所述的标的物包含,其中所述多个处理元件的每一相应断点控制器经配置以中断使用无操作(NOP)指令以致使所述相应处理元件继续所述内核的执行。
在实例24中,根据实例18到23所述的标的物包含,其中所述中央控制器经集成于混合线程结构中。
在实例25中,根据实例24所述的标的物包含,其中所述混合线程结构包含于存储器装置中。
实例26是一种至少一个机器可读媒体,其包含指令,所述指令在由处理电路系统执行时致使所述处理电路系统执行用于实施实例1到25中的任何者的操作。
实例27是一种设备,其包括用于实施实例1到25中的任何者的构件。
实例28是一种用于实施实例1到25中的任何者的系统。
实例29是一种用于实施实例1到25中的任何者的方法。
上文详细描述包含参考形成详细描述的一部分的附图。图式通过说明来展示其中可实践本发明的特定实施例。这些实施例在本文中也称为“实例”。此类实例可包含除所展示或描述的元件之外的元件。然而,本发明者还考虑其中仅提供所展示或描述的那些元件的实例。此外,本发明者还考虑使用关于特定实例(或其一或多个方面)或关于本文中展示或描述的其它实例(或其一或多个方面)展示或描述的那些元件的任何组合或排列的实例(或其一或多个方面)。
在本档案中,如专利档案中常见,术语“一(a/an)”用于包含一个或多于一个,其独立于“至少一个”或“一或多个”的任何其它例子或使用。在本档案中,术语“或”用于指代非排他性“或”,使得“A或B”可包含“A但非B”、“B但非A”及“A及B”,除非另有指示。在所附权利要求书中,术语“包含”及“其中(in which)”用作相应术语“包括”及“其中(wherein)”的普通英语等效形式。而且,在所附权利要求书中,术语“包含”及“包括”是开放式的,即,权利要求中包含除此术语之后所列的元件之外的元件的系统、装置、物品或过程仍被认为落于所述权利要求的范围内。此外,在所附权利要求书中,术语“第一”、“第二”及“第三”等仅用作标记,且不希望对其对象强加数值要求。
上文描述希望是说明性而非限制性的。举例来说,上述实例(或其一或多个方面)可彼此组合使用。例如所属领域的一般技术人员可在检视上文描述之后使用其它实施例。应理解,其不会用于解译或限制权利要求书的范围或含义。而且,在上文详细描述中,可将各种特征分组在一起以简化本公开。此不应被解译为希望未主张的公开特征是任何权利要求所必需的。确切来说,发明标的物可具有特定公开实施例的非所有特征。因此,所附权利要求书特此并入具体实施方式中,其中每一权利要求自身作为单独实施例,且预期此类实施例可以各种组合或排列彼此组合。应参考所附权利要求书以及此权利要求书授权的等效物的全范围来确定本发明的范围。
Claims (20)
1.一种计算节点,其包括:
混合线程处理器;及
混合线程结构,其中所述混合线程结构包括多个存储器计算片块,其中所述多个存储器计算片块中的每一者包含用于执行内核的相应计算元件及存储元件,且其中所述多个存储器计算片块中的每一者包含经配置以启动所述多个存储器计算片块的断点的断点控制器。
2.根据权利要求1所述的计算节点,其中所述断点控制器经配置以向中央控制器断言断点请求信号以启动所述断点。
3.根据权利要求2所述的计算节点,其中所述中央控制器经配置以响应于检测到来自所述断点控制器的所述断点请求信号而向所述多个存储器计算片块断言断点停止信号。
4.根据权利要求2所述的计算节点,其中所述断点控制器经配置以设置断点状态变量来指示所述断点请求信号被断言。
5.根据权利要求4所述的计算节点,其中所述断点控制器经配置以响应于所述断点状态变量被复原而取消断言所述断点请求信号。
6.根据权利要求1所述的计算节点,其中所述断点控制器经配置以设置断点状态变量来指示断点停止信号被断言,所述断点停止信号由管理跨所述多个存储器计算片块的断点的中央控制器提供。
7.根据权利要求6所述的计算节点,其中所述断点控制器经配置以使用无操作NOP指令来致使所述相应计算元件暂停所述内核的执行。
8.根据权利要求1所述的计算节点,其中所述混合线程处理器及所述混合线程结构包含于所述计算节点的存储器装置中。
9.一种设备,其包括:
分派接口电路系统,其经配置以与多个存储器计算片块通信,其中所述多个存储器计算片块中的每一者包含用于执行内核的相应计算元件及存储元件,且其中所述多个存储器计算片块中的每一者包含用于启动所述多个存储器计算片块之间的断点的断点控制器;
其中所述分派接口电路系统经配置以:
检测由所述多个存储器计算片块中的一者断言的断点请求信号;及
响应于检测到所述断点请求信号而向所述多个存储器计算片块断言断点停止信号。
10.根据权利要求9所述的设备,其中所述多个存储器计算片块的每一相应断点控制器经配置以设置相应断点状态变量来指示所述断点停止信号被断言。
11.根据权利要求10所述的设备,其中所述多个存储器计算片块的每一相应断点控制器经配置以使用无操作NOP指令来致使所述相应存储器计算片块暂停所述内核的执行。
12.根据权利要求11所述的设备,其中所述多个存储器计算片块的每一相应断点控制器经配置以中断使用NOP指令以致使所述相应存储器计算片块继续所述内核的执行。
13.根据权利要求9所述的设备,其中所述分派接口电路系统经配置以:
检测到所述断点请求信号由所述多个存储器计算片块中的一者取消断言;及
响应于检测到所述断点请求信号而向所述多个存储器计算片块取消断言所述断点停止信号。
14.根据权利要求13所述的设备,其中所述多个存储器计算片块的每一相应断点控制器经配置以使相应断点状态变量复原以指示所述断点停止信号被取消断言。
15.根据权利要求9所述的设备,其中所述分派接口电路系统经集成于混合线程结构中。
16.根据权利要求15所述的设备,其中所述混合线程结构包含于存储器装置中。
17.一种方法,其包括:
在粗粒度可重新配置阵列CGRA处理器的中央控制器处检测由所述CGRA处理器的多个处理元件中的一者断言的断点请求信号,其中所述中央控制器经配置以与多个处理元件通信,其中所述多个处理元件中的每一者包含用于执行内核的相应功能元件及存储元件,且其中所述多个处理元件中的每一者包含用于启动所述多个处理元件的断点的断点控制器;及
响应于检测到所述断点请求信号而向所述多个处理元件断言断点停止信号。
18.根据权利要求17所述的方法,其中所述多个处理元件的每一相应断点控制器经配置以设置相应断点状态变量来指示所述断点停止信号被断言。
19.根据权利要求18所述的方法,其中所述多个处理元件的每一相应断点控制器经配置以使用NOP指令来致使所述相应处理元件暂停所述内核的执行。
20.根据权利要求17所述的方法,其包括:
检测到所述断点请求信号由所述多个处理元件中的一者取消断言;及
响应于检测到所述断点请求信号而向所述多个处理元件取消断言所述断点停止信号。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/899,710 | 2022-08-31 | ||
US17/899,710 US20240069958A1 (en) | 2022-08-31 | 2022-08-31 | Mechanism to handle breakpoints in a multi-element processor |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117632256A true CN117632256A (zh) | 2024-03-01 |
Family
ID=90000526
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310796804.6A Pending CN117632256A (zh) | 2022-08-31 | 2023-06-30 | 用于处置多元件处理器中的断点的装置及方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20240069958A1 (zh) |
CN (1) | CN117632256A (zh) |
-
2022
- 2022-08-31 US US17/899,710 patent/US20240069958A1/en active Pending
-
2023
- 2023-06-30 CN CN202310796804.6A patent/CN117632256A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20240069958A1 (en) | 2024-02-29 |
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 | |
US11789790B2 (en) | Mechanism to trigger early termination of cooperating processes | |
CN117296048A (zh) | 传输具有不同延时的请求类型 | |
CN118043815A (zh) | 调试数据流计算机架构 | |
CN118076944A (zh) | 可重新配置计算组构中的循环执行期间的数据存储 | |
CN118043796A (zh) | 存储器计算系统中的基于片块的结果缓冲 | |
CN117435549A (zh) | 用于硬件组件之间的通信的方法和系统 | |
CN118043792A (zh) | 提供事件消息的可靠接收的机制 | |
US20230058935A1 (en) | Managing return parameter allocation | |
US20230055320A1 (en) | Loop execution in a reconfigurable compute fabric. | |
CN117581200A (zh) | 在分派期间从存储器加载数据 | |
CN117795496A (zh) | 可重新配置计算组构中的并行矩阵运算 | |
CN117546133A (zh) | 缓解具有多个存储器控制器的系统上的存储器热点 | |
CN117280332A (zh) | 通过具有多个片上系统的结构避免死锁 | |
US12038868B2 (en) | Context load mechanism in a coarse-grained reconfigurable array processor | |
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 | |
US20240028526A1 (en) | Methods and systems for requesting atomic operations in a computing system | |
CN117632403A (zh) | 在用于管理危险清除的桶形处理器中停驻线程 | |
WO2023023441A1 (en) | Chained resource locking | |
CN117435548A (zh) | 用于硬件组件之间的通信的方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |