CN116601601A - 在多过程系统内执行可编程原子单元资源的方法 - Google Patents
在多过程系统内执行可编程原子单元资源的方法 Download PDFInfo
- Publication number
- CN116601601A CN116601601A CN202180084537.9A CN202180084537A CN116601601A CN 116601601 A CN116601601 A CN 116601601A CN 202180084537 A CN202180084537 A CN 202180084537A CN 116601601 A CN116601601 A CN 116601601A
- Authority
- CN
- China
- Prior art keywords
- programmable atomic
- identifier
- atomic transaction
- memory
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- 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/466—Transaction processing
- G06F9/467—Transactional memory
-
- 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/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
Abstract
小芯片系统可包含具有执行可编程原子事务的可编程原子单元的存储器控制器。这些指令存储于所述可编程原子单元中的存储器的一或多个存储器分区中。由于所述可编程原子单元执行针对各种过程定制的可编程原子事务,并且由于所述可编程原子单元是多个过程共享的物理资源,因此所述过程需要向可编程原子单元存储器加载指令的方式及调用那些指令的方法。公开用于注册、调用及虚拟化可编程原子事务的方法、系统及装置。
Description
优先权申请
本申请要求2020年10月20日提交的美国申请序列号17/074,811的优先权权益,所述美国申请以全文引用的方式并入本文中。
关于政府支持的声明
本发明是在美国政府支持下依据DARPA授予的第HR00111890003号合同完成的。美国政府拥有本发明的某些权利。
背景技术
小芯片是一种用于集成各种处理功能性的新兴技术。通常,小芯片系统由精密模块(各自称为“小芯片”)构成,所述精密模块集成在中介层上,并且在许多实例中视需要通过一或多个建立的网络互连,以向系统提供所要功能性。中介层及所包含的小芯片可封装在一起,以便于与较大系统的其它组件互连。每一小芯片可包含一或多个个别集成电路或“芯片”(IC),其可能与离散电路组件组合,并且共同耦合到相应衬底以便于附接到中介层。系统中的大多数或所有小芯片将被个别地配置成用于通过一或多个建立的网络进行通信。
小芯片作为系统的个别模块的配置不同于在单芯片上实施的此系统,所述芯片在一个衬底(例如单个裸片)上含有不同装置块(例如,知识产权(IP)块),例如芯片上系统(SoC),或集成在印刷电路板(PCB)上的多个离散封装装置。一般来说,小芯片提供比离散封装装置更好的性能(例如,更低的功率消耗、减少的时延等),并且小芯片提供比单裸片芯片更大的生产效益。这些生产效益可包含更高的良率或减少的开发成本及时间。
小芯片系统可包含例如一或多个应用(或处理器)小芯片及一或多个支持小芯片。此处,应用小芯片与支持小芯片之间的区别只是对小芯片系统可能的设计情境的参考。因此,举例来说,合成视觉小芯片系统可包含(仅借助于实例)用于产生合成视觉输出的应用小芯片,以及例如存储器控制器小芯片、传感器接口小芯片或通信小芯片等支持小芯片。在典型的用例中,合成视觉设计者可设计应用小芯片并且从其它方获取支持小芯片。因此,由于避免设计及生产支持小芯片中所体现的功能性,因此减少设计支出(例如,在时间或复杂性方面)。小芯片还支持原本可能很困难的IP块紧密集成,例如使用不同处理技术或使用不同特征大小(或利用不同的接触技术或间距)制造的IP块。因此,可以模块化方式组装具有不同物理、电气或通信特性的多个IC或IC组合件,以提供实现所要功能性的组合件。小芯片系统还可促进调适以适应将并入有小芯片系统的不同较大系统的需要。在实例中,IC的组合件或其它组合件可针对具体功能的功率、速度或发热进行优化,如同传感器可能发生的情况一样,相比于在单个裸片上尝试与其它装置集成,所述IC的组合件或其它组合件可更容易地与其它装置集成。此外,通过减小裸片的整体大小,小芯片的良率往往会高于更复杂的单裸片装置的良率。
附图说明
根据下文给出的详细描述及本公开的各种实施例的附图,将更充分地理解本公开。然而,图式不应视为将本公开限制于具体实施例,而是仅用于解释及理解。
图1A及1B说明根据本公开的一些实例的小芯片系统的实例。
图2说明根据本公开的一些实例的存储器控制器小芯片的实例的组件。
图3说明根据本公开的一些实例的可编程原子单元(PAU)的实例中的组件。
图4说明根据本公开的一些实例的用于请求特定可编程原子事务的执行的请求包。
图5说明根据本公开的一些实例的可编程原子事务响应消息。
图6说明根据本公开的一些实例的注册可编程原子事务的方法的流程图。
图7说明根据本公开的一些实例的注册及调用可编程原子事务的方法的流程图。
图8说明根据本公开的一些实例的可编程原子单元处理执行可编程原子事务的请求的方法的流程图。
图9说明根据本公开的一些实例的存储器控制器的框图。
图10是根据本公开的一些实例的机器的实例的框图,本公开的实施例可利用所述机器、在所述机器中或通过所述机器进行操作。
具体实施方式
下文所描述的图1提供小芯片系统及在其中操作的组件的实例。如下所述,此类小芯片系统可包含具有执行可编程原子事务的可编程原子单元的存储器控制器,所述可编程原子事务包括与存储于存储器中的值结合执行的一或多个指令。这些指令存储于可编程原子单元中的存储器的一或多个存储器分区中。由于可编程原子单元执行针对各种过程定制的可编程原子事务,并且由于可编程原子单元是多个过程共享的物理资源,因此过程需要向可编程原子单元存储器加载指令的方式及调用那些指令的方法。公开用于注册、调用及虚拟化可编程原子事务的方法、系统及装置。
图1A及1B说明根据实施例的小芯片系统110的实例。图1A是安装在外围板105上的小芯片系统110的表示,所述小芯片系统可例如通过外围组件互连高速(PCIe)连接到更广泛的计算机系统。小芯片系统110包含封装衬底115、中介层120及四个小芯片:应用小芯片125、主机接口小芯片135、存储器控制器小芯片140及存储器装置小芯片150。其它系统可包含许多额外小芯片以提供额外功能,如将从以下论述中显而易见。小芯片系统110的封装以封盖或盖板165说明,但可使用用于小芯片系统的其它封装技术及结构。图1B是为了清楚起见标记小芯片系统中的组件的框图。
应用小芯片125说明为包含芯片上网络(NOC)130以支持用于小芯片间通信的小芯片网络155。在实例实施例中,NOC 130可包含在应用小芯片125上。在实例中,NOC 130可响应于选定的支持小芯片(例如,小芯片135、140及150)而定义,因此使设计者能够为NOC 130选择适当数目或小芯片网络连接或开关。在实例中,NOC 130可位于单独小芯片上或甚至中介层120内。在如本文所论述的实例中,NOC 130实施小芯片协议接口(CPI)网络。
CPI为基于包的网络,其支持虚拟信道,以实现小芯片之间灵活及高速的交互。CPI实现从小芯片内网络到小芯片网络155的桥接。举例来说,高级可扩展接口(AXI)是设计芯片内通信的广泛使用的规范。然而,AXI规范涵盖大量的物理设计选项,例如物理信道的数目、信号定时、功率等。在单芯片内,通常选择这些选项以满足设计目标,例如功率消耗、速度等。然而,为了实现小芯片系统的灵活性,使用例如CPI等适配器在可实施于各种小芯片中的各种AXI设计选项之间介接。通过实现物理信道到虚拟信道的映射且利用包化协议包封基于时间的信令,CPI跨小芯片网络155桥接小芯片内网络。
CPI可利用多种不同的物理层来传输包。物理层可包含简单的导电连接,或可包含驱动器以增加电压,或以其它方式促进在较长距离上传输信号。一个此类物理层的实例可包含高级接口总线(AIB),其在各种实例中可在中介层120中实施。AIB使用具有转发时钟的源同步数据传送来传输及接收数据。以单数据速率(SDR)或双数据速率(DDR)相对于所传输的时钟跨AIB传送包。AIB支持各种信道宽度。当在SDR模式下操作时,AIB信道宽度为20位的倍数(20、40、60、…),并且对于DDR模式,AIB信道宽度为40位的倍数:(40、80、120、…)。AIB信道宽度包含传输及接收信号。信道可经配置以具有对称数目的发射(TX)及接收(RX)输入/输出(I/O),或者具有非对称数目的发射器及接收器(例如,所有发射器或所有接收器)。AIB信道可充当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信道。在实例中,接口标识符是包括七位小芯片标识符、七位列标识符及六位链路标识符的20位值。AIB物理层使用AIB带外移位寄存器来传输接口标识符。使用移位寄存器的位32到51跨越AIB接口在两个方向上传送20位接口标识符。
AIB将堆叠的一组AIB信道限定为AIB信道列。AIB信道列具有一定数目的AIB信道,外加辅助(AUX)信道。辅助信道含有用于AIB初始化的信号。列内的所有AIB信道(辅助信道除外)具有相同配置(例如,全部TX、全部RX,或者一半TX且一半RX,以及具有相同数目的数据I/O信号)。在实例中,以邻近于AUX信道的AIB信道开始,以连续递增次序对AIB信道编号。与AUX相邻的AIB信道被定义为AIB信道零。
通常,个别小芯片上的CPI接口可包含串行化-反串行化(SERDES)硬件。SERDES互连非常适用于需要高速信令及低信号计数的情境。然而,对于复用及解复用、错误检测或校正(例如,使用块级循环冗余检查(CRC))、链路级重试或前向错误校正,SERDE可能会引起额外的功耗及更长的时延。然而,在低时延或能量消耗为超短距离小芯片到小芯片互连的主要关注点时,可利用具有允许以最小时延进行数据传送的时钟速率的并行接口。CPI包含用于使这些超短距离小芯片互连的时延及能耗两者最小化的元件。
对于流控,CPI采用基于信用的技术。例如应用小芯片125的接收方向例如存储器控制器小芯片140的发送方提供表示可用缓冲器的信用。在实例中,CPI接收方包含用于给定传输时间单位的每一虚拟信道的缓冲器。因此,如果CPI接收方在时间上支持五个消息及单个虚拟信道,则接收方具有布置成五行的五个缓冲器(例如,每一单位时间一行)。如果支持四个虚拟信道,则接收方具有布置成五行的二十个缓冲器。每一缓冲器保持一个CPI包的有效负载。
当发送方向接收方进行传输时,发送方基于传输而使可用信用递减。一旦消耗接收方的所有信用,发送方就停止向接收方发送包。这确保接收方始终具有可用缓冲器以存储传输。
当接收方处理接收到的包并释放缓冲器时,接收方将可用缓冲空间传达回发送方。接着,发送方可使用此信用返回以允许传输额外信息。
还说明小芯片网状网络160,其使用直接小芯片到小芯片技术,而不需要NOC 130。小芯片网状网络160可在CPI或另一小芯片到小芯片协议中实施。小芯片网状网络160通常实现小芯片流水线,其中一个小芯片充当到流水线的接口,而流水线接口中的其它小芯片仅与自身介接。
另外,例如一或多个工业标准存储器接口145(例如,同步存储器接口,例如DDR5、DDR 6)的专用装置接口还可用于互连小芯片。小芯片系统或个别小芯片到外部装置的连接(例如,较大系统可通过所要接口(例如,PCIE接口))。在实例中,可通过主机接口小芯片135实施此外部接口,在所描绘的实例中,所述主机接口小芯片提供小芯片系统110外部的PCIE接口。当行业中的惯例或标准已汇聚在此类专用接口145上时,通常采用此类接口。将存储器控制器小芯片140连接到动态随机存取存储器(DRAM)存储器装置150的双数据速率(DDR)接口145的所说明实例仅为此类行业惯例。
在多种可能的支持小芯片中,存储器控制器小芯片140很可能存在于小芯片系统110中,这是因为几乎无所不在地使用存储来进行计算机处理以及对存储器装置使用先进技术。因此,使用由其它设计者产生的存储器装置小芯片150及存储器控制器小芯片140使小芯片系统设计者能够获得由成熟生产商生产的稳健产品。通常,存储器控制器小芯片140提供存储器装置特定接口来读取、写入或擦除数据。通常,存储器控制器小芯片140可提供额外特征,例如错误检测、错误校正、维护操作或原子操作执行。对于一些类型的存储器,维护操作往往特定于存储器装置150,例如NAND快闪或存储类存储器中的垃圾收集、NAND快闪存储器中的温度调整(例如,交叉温度管理)。在实例中,维护操作可包含逻辑到物理(L2P)映射或管理,以在数据的物理与逻辑表示之间提供间接层级。在例如DRAM的其它类型的存储器中,例如刷新的一些存储器操作可在某些时间由主机处理器或存储器控制器控制,并且在其它时间由DRAM存储器装置或与一或多个DRAM装置相关联的逻辑控制,所述逻辑例如接口芯片(在实例中,缓冲器)。
原子事务是例如可由存储器控制器小芯片140执行的一或多个数据操纵操作。在其它小芯片系统中,原子事务可由其它小芯片执行。举例来说,可由应用小芯片125在命令中指定“增量”的原子事务,所述命令包含存储器地址并且可能包含增量值。在接收到命令后,存储器控制器小芯片140从指定存储器地址检索数字,使所述数字递增命令中所指定的量,并且存储结果。在成功完成后,存储器控制器小芯片140向应用小芯片125提供命令成功的指示。原子事务避免跨小芯片网状网络160传输数据,从而减少执行此类命令的时延。
原子事务可分类为内置原子或可编程(例如,自定义)原子事务。内置原子事务是在硬件中不变地实施的有限的操作集。可编程原子事务是具有可在存储器控制器小芯片140的可编程原子单元(PAU)(例如,自定义原子单元(CAU))上执行的一或多个指令(例如,指令集)的小程序。图1说明论述PAU的存储器控制器小芯片的实例。
存储器装置小芯片150可为或包含易失性存储器装置或非易失性存储器的任何组合。易失性存储器装置的实例包含但不限于随机存取存储器((RAM),例如DRAM)、同步DRAM(SDRAM)及图形双数据速率类型6SDRAM(GDDR6 SDRAM)等等。非易失性存储器装置的实例包含但不限于与非(NAND)型快闪存储器、存储类存储器(例如,相变存储器或基于忆阻器的技术)、铁电RAM(FeRAM)等。所说明实例包含作为小芯片的存储器装置150,然而,存储器装置150可驻存在其它地方,例如在外围板105上的不同封装中。对于许多应用,可提供多个存储器装置小芯片。在实例中,这些存储器装置小芯片可各自实施一或多种存储技术。在实例中,存储器小芯片可包含不同技术的多个堆叠存储器裸片,例如一或多个SRAM装置与一或多个DRAM装置堆叠或以其它方式通信。存储器控制器140还可用于协调小芯片系统110中的多个存储器小芯片之间的操作;例如,在一或多个层级的高速缓存存储装置中利用一或多个存储器小芯片,并且使用一或多个额外存储器小芯片作为主存储器。小芯片系统110还可包含多个存储器控制器140,其可用于提供用于单独处理器、传感器、网络等的存储器控制功能性。例如小芯片系统110的小芯片架构提供允许通过更新的小芯片配置适合于不同存储器存储技术及不同存储器接口,而不需要重新设计系统结构的其余部分的优点。
图2说明根据实施例的存储器控制器小芯片205的实例的组件。存储器控制器小芯片205包含高速缓存210、高速缓存控制器215、裸片外存储器控制器220(例如,用于与裸片外存储器275通信)、网络通信接口225(例如,用于与小芯片网络285介接且与其它小芯片通信),及一组原子及合并单元250。这组的成员可包含例如写入合并单元255、存储器危险单元260、内置原子单元265(用于执行内置原子事务),或可编程原子单元(PAU)270(用于执行可编程原子事务)。各种组件按逻辑说明,并且它们未必会实施。举例来说,内置原子单元265有可能包括沿着到裸片外存储器的路径的不同装置。举例来说,内置原子单元265可在存储器小芯片上的接口装置/缓冲器中,如上文所论述。相比之下,可编程原子单元270可在存储器控制器小芯片205上的单独处理器中实施(但在各种实例中,可在其它位置中实施,例如在存储器小芯片上实施)。
裸片外存储器控制器220直接耦合到裸片外存储器275(例如,经由总线或其它通信连接)以提供向例如裸片外存储器275及裸片外存储器280的所述一或多个裸片外存储器的写入操作及从所述一或多个裸片外存储器的读取操作。在所描绘的实例中,裸片外存储器控制器220还经耦合以输出到原子及合并单元250,并输入到高速缓存控制器215(例如,存储器侧高速缓存控制器)。
在实例配置中,高速缓存控制器215直接耦合到高速缓存210,并且可耦合到网络通信接口225以进行输入(例如传入读取或写入请求),并经耦合以输出到裸片外存储器控制器220。
网络通信接口225包含包解码器230、网络输入队列235、包编码器240及网络输出队列245以支持基于包的小芯片网络285,例如CPI。小芯片网络285可提供处理器、存储器控制器、混合线程处理器、可配置处理电路或通信接口之间及当中的包路由。在此种基于包的通信系统中,每一包通常包含目的地及源寻址,以及任何数据有效负载或指令。在实例中,取决于配置,小芯片网络285可实施为具有折叠Clos配置的交叉开关的集合,或提供额外连接的网状网络。
在各种实例中,小芯片网络285可为异步交换结构的一部分。此处,数据包可沿着各种路径中的任一个路由,使得任何所选择数据包可取决于路由而在多个不同时间中的任何时间到达寻址的目的地。此外,小芯片网络285可至少部分地实施为同步通信网络,例如同步网状通信网络。经考虑,例如根据本公开使用通信网络的两种配置。
存储器控制器小芯片205可接收具有例如源地址、读取请求及物理地址的包。作为响应,裸片外存储器控制器220或高速缓存控制器215将从指定物理地址(其可在裸片外存储器275或高速缓存210中)读取数据,并将响应包汇编成含有所请求数据的源地址。类似地,存储器控制器小芯片205可接收具有源地址、写入请求及物理地址的包。作为响应,存储器控制器小芯片205将数据写入到指定的物理地址(其可在高速缓存210或裸片外存储器275或280中),且将响应包汇编成含有数据被存储到存储器的确认的源地址。
因此,在可能的情况下,存储器控制器小芯片205可经由小芯片网络285接收读取及写入请求,并且使用与高速缓存210介接的高速缓存控制器215来处理所述请求。如果高速缓存控制器215无法处理所述请求,则裸片外存储器控制器220通过与裸片外存储器275或280、原子及合并单元250或两者通信来处理所述请求。如上所述,高速缓存的一或多个层级还可在裸片外存储器275或280中实施,且在一些此类实例中可由高速缓存控制器215直接存取。由裸片外存储器控制器220读取的数据可由高速缓存控制器215高速缓存于高速缓存210中以供后续使用。
原子及合并单元250经耦合以接收(作为输入)裸片外存储器控制器220的输出,且将输出提供到高速缓存210、网络通信接口225,或直接提供到小芯片网络285。存储器危险单元260、写入合并单元255及内置(例如,预定)原子单元265可各自实施为具有其它组合逻辑电路系统(例如加法器、移位器、比较器、AND门、OR门、XOR门或其任何合适的组合)或其它逻辑电路系统的状态机。这些组件还可包含一或多个寄存器或缓冲器以存储操作数或其它数据。PAU 270可实施为一或多个处理器核心或控制电路系统,及具有其它组合逻辑电路系统或其它逻辑电路系统的各种状态机,且还可包含一或多个寄存器、缓冲器或存储器以存储地址、可执行指令、操作数及其它数据,或可实施为处理器。图3中示出实例PAU 270。
写入合并单元255接收读取数据及请求数据,并且合并请求数据及读取数据以产生具有读取数据及将在响应或返回数据包)中使用的源地址的单个单元。写入合并单元255将合并的数据提供到高速缓存210的写入端口(或等效地,提供到高速缓存控制器215以写入到高速缓存210)。任选地,写入合并单元255将合并的数据提供到网络通信接口225以编码且准备响应或返回数据包以在小芯片网络285上进行传输。
当请求数据是用于内置原子操作时,内置原子单元265接收请求并从写入合并单元255或直接从裸片外存储器控制器220读取数据。执行原子事务,并使用写入合并单元255将所得数据写入到高速缓存210或提供到网络通信接口225,以对响应或返回数据包进行编码并使其准备好在小芯片网络285上传输。
内置原子单元265处理预定义原子事务,例如提取并递增或比较并交换。在实例中,这些事务对大小为32字节或更小的单个存储器位置进行简单的读取-修改-写入操作。从通过小芯片网络285传输的请求包发起原子存储器事务。所述请求包具有物理地址、原子操作符类型、操作数大小,及任选地具有至多32字节的数据。原子事务对高速缓存210的高速缓存存储器行进行读取-修改-写入,从而在必要时填充高速缓存存储器。原子事务响应可为简单的完成响应,或具有至多32字节的数据的响应。实例原子存储器事务包含提取并与、提取并或、提取并异或、提取并加、提取并减、提取并递增、提取并递减、提取并最小、提取并最大、提取并交换及比较并交换。在各种实例实施例中,支持32位及64位操作以及对16或32字节的数据的操作。本文所公开的方法还与支持较大或较小操作及较多或较少数据的硬件兼容。
内置原子事务还可涉及对关于所请求数据的“标准”原子标准的请求,例如相对简单的单周期整数原子,例如提取并递增或比较并交换,其吞吐量将与不涉及原子操作的常规存储器读取或写入操作相同。对于这些操作,高速缓存控制器215通常可通过(在硬件中)设置危险位来预留高速缓存210中的高速缓存行,使得高速缓存行在转变时无法由另一过程读取。从裸片外存储器275或高速缓存210获得数据,并且将所述数据提供到内置原子单元265以进行所请求原子事务。在原子事务之后,除了将所得数据提供到包编码器240以对传出数据包进行编码以在小芯片网络285上传输之外,内置原子单元265还将所得数据提供到写入合并单元255,所述写入合并单元还将所得数据写入到高速缓存210。在将所得数据写入到高速缓存210之后,存储器危险单元260将清除所设置的任何对应危险位。
PAU 270实现可编程原子事务(也称为“自定义原子事务”或“自定义原子操作”)的高性能(高吞吐量及低时延),其与内置原子事务的性能相当。代替执行多个存储器存取,响应于原子事务请求指定可编程原子事务及存储器地址,存储器控制器小芯片205中的电路系统将原子事务请求传送到PAU 270,并且设置存储在存储器危险寄存器中的对应于原子操作中所使用的存储器行的存储器地址的危险位,以确保不对所述存储器行执行其它操作(读取、写入或原子事务),接着在原子事务完成后清除所述危险位。为执行可编程原子事务的PAU 270提供的额外、直接数据路径允许额外的写入操作,而不会受到由通信网络的带宽施加的任何限制,并且不会增加通信网络的任何拥塞。
PAU 270包含多线程处理器320,例如基于RISC-V ISA的多线程处理器,其具有一或多个处理器核心,并且进一步具有用于执行可编程原子事务的扩展式指令集。当设置有用于执行可编程原子事务的扩展指令集时,PAU 270的处理器320可实施为一或多个混合线程处理器。在一些实例实施例中,PAU 270的处理器320提供桶式轮循瞬时线程切换以维持较高的每时钟指令速率。
PAU 270可包含本地存储器305,例如静态随机存取存储器(SRAM)、NAND、相变存储器等。本地存储器305可包含寄存器335、指令存储器325及高速缓存330。本地存储器305可通过存储器控制器310由处理器320存取。
可编程原子事务可由PAU 270进行,所述可编程原子事务涉及对关于所请求数据的可编程原子事务的请求。用户可准备呈一或多个指令形式的编程码以提供此类可编程原子事务。举例来说,可编程原子事务可为相对简单的多周期操作,例如浮点加法,或可为相对复杂的多指令操作,例如布隆过滤器插入。可编程原子事务可与预定原子事务相同或不同,只要它们是由用户而非系统供应商定义的。对于这些操作,高速缓存控制器215可通过(在硬件中)设置危险位来保留高速缓存210中的高速缓存行,使得高速缓存行在转变时无法由另一过程读取。从高速缓存210或裸片外存储器275或280获得数据,并且将数据提供到PAU 270以进行所请求可编程原子事务。在原子操作之后,PAU 270将所得数据提供到网络通信接口225以直接编码具有所得数据的传出数据包以在小芯片网络285上进行传输。另外,PAU 270将所得数据提供到高速缓存控制器215,所述高速缓存控制器还将所得数据写入到高速缓存210。在将所得数据写入到高速缓存210之后,高速缓存控制器215将清除所设置的任何对应危险位。
在所选择实例中,针对可编程原子事务所采取的方式是提供多个通用的可编程原子事务请求类型,其可通过小芯片网络285从例如处理器或其它系统组件的起始源发送到存储器控制器小芯片205。高速缓存控制器215或裸片外存储器控制器220将请求识别为可编程原子事务且将所述请求转发到PAU 270。在代表性实施例中,PAU 270:(1)是能够有效地执行用户定义的原子事务的可编程处理元件;(2)可对存储器、算术及逻辑操作以及控制流决策执行加载及存储;并且(3)利用具有一组新的专用指令的RISC-V ISA来促进与此类控制器215、220的交互,从而以原子方式执行用户定义的事务。在合乎需要的实例中,RISC-V ISA含有支持高级语言操作符及数据类型的完整指令集。PAU 270可利用RISC-V ISA,但通常会支持更有限的指令集及有限的寄存器文件大小,以在包含在存储器控制器小芯片205内时减小单元的裸片大小。
如上文所提及,在将读取数据写入到高速缓存210之前,存储器危险单元260将清除预留高速缓存行的所设置的危险位。因此,当写入合并单元255接收到请求及读取数据时,存储器危险单元260可将复位或清除信号传输到高速缓存210以复位预留高速缓存行的所设置的存储器危险位。并且,复位此危险位还将释放涉及所指定(或所保留)的高速缓存行的未决读取或写入请求,从而将未决读取或写入请求提供到入站请求多路复用器以供选择及处理。
图3说明根据本公开的一些实例的可编程原子单元270的框图。如先前所描述,可编程原子单元可包含由存储在指令存储器325中的自定义且对由存储器控制器管理的存储器进行操作的一或多个原子指令集指定的一或多个可编程原子事务。原子事务的指令可由可驻存在存储器控制器小芯片205、其它小芯片(例如应用小芯片125)或小芯片外装置上的可编程原子单元270外部的应用和/或过程指定。在一些实例中,可编程原子事务的指令在由过程注册时由操作系统加载。为了执行可编程原子事务,起始过程发送CPI消息,其包含通过将索引提供到可编程原子单元270的本地存储器中而对可编程原子单元270的本地存储器305执行所请求可编程原子事务的指令。可编程原子事务可在执行期间利用高速缓存330、寄存器335及本地存储器305的其它存储器。本地存储器控制器310可管理本地存储器305。在一些实例中,可编程原子单元270可不需要本地存储器控制器,因为本地存储器305可为SRAM。
如先前所描述,用于可编程原子事务的指令存储于可编程原子单元中的存储器的一或多个存储器分区中。由于可编程原子单元执行针对各种过程定制的可编程原子事务,并且由于可编程原子单元是多个过程共享的物理资源,因此过程需要向可编程原子单元存储器加载指令的方式及调用那些指令的方法。公开用于注册、调用及虚拟化可编程原子事务的方法、系统及装置。
可将可编程原子单元的指令存储器分割成称为分区的连续块。每一分区可容纳多个指令(例如,32个指令)且可由操作系统管理。操作系统可跟踪哪些分区是空闲的且哪些分区供哪些可编程原子事务使用。需要调用可编程原子事务的过程首先通过经由应用程序编程接口(API)调用操作系统的一或多个功能来注册可编程原子事务。API的功能调用可包含要加载的指令(或指令的位置)。操作系统接收此API调用并且接着确定容纳指令所需的大小(例如,通过将提供的指令的数目计数)。操作系统使用所确定的大小来定位可编程原子单元中的指令存储器(例如,指令存储器325)的一系列的一或多个相连自由分区,其大小足以容纳可编程原子事务的指令。所述指令块中的第一分区索引对应于全局地识别可编程原子事务的系统唯一索引(SCAID)。也就是说,关于特定可编程原子操作,SCAID跨所有处理器中的所有过程是唯一的。操作系统接着将指令加载到可编程原子单元的所选择存储器分区。操作系统或可编程原子单元确定分区数目及指令执行限值,并接着将所述分区数目及指令执行限值存储于以SCAID作索引的表中以供稍后使用,以确保可编程原子事务不执行超出加载的分区的指令并且不会进入无限循环。
在注册期间,操作系统也可例如通过将过程特定索引(PCAID)映射到SCAID的映射表来使PCAID与SCAID相关联。可为每一作用中可编程原子事务指派过程唯一自定义原子标识符(PCAID)。PCAID特定于每个过程。PCAID允许系统内的多个过程同时提交可编程原子操作给共享的可编程原子单元资源,而无需知道其它过程正在存取那些资源的个别过程。
在注册之后,过程使用PCAID指定将调用哪些可编程原子事务。PCAID可在应用程序编译时间硬译码并且在注册期间由过程提供给操作系统(例如,作为API的功能参数)。在其它实例中,操作系统可在注册期间指派PCAID(其可由于API调用而返回)。允许操作系统指派PCAID(例如,动态分配)会允许共同可编程原子事务库单独地开发并链接到程序。在一些实例中,系统可支持以下使用PCAID的两种手段:静态地及动态地。在这些实例中,可建立公约,其中静态分配在PCAID 0处开始并且逐渐上升,且动态分配在PCAID 31处开始并且逐渐下降。主机运行时间提供对PCAID的静态分配对比动态分配的支持。
如先前所描述,当请求执行特定可编程原子事务时,请求过程可通过包含PCAID的指令调用可编程原子。指令使处理器从转换表中的PCAID查找SCAID。处理器还可检查表中指示指令是否加载在可编程原子单元中的有效位(所述位可在注册期间设置)。如果位不指示加载指令,则可返回错误。如果位指示加载指令,则处理器形成请求包并且将请求包发送到存储器控制器的可编程原子单元。请求包可包含由SCAID识别的特定存储器位置(例如,本地存储器305内的分区)、由将在其上操作的存储器控制器小芯片205管理的存储器(例如,裸片外存储器275、280)的位置,及一或多个自变量。接着将此消息发送到存储器控制器,在接收到消息后,可编程原子单元的处理器(例如,处理器320)接着开始在所指示的分区处执行指令。也就是说,执行所指示分区处的第一指令。
图4说明用于请求特定可编程原子事务的执行的请求包。将字段描述为:
如所提及,可编程原子事务通过执行位于由自定义原子分区索引(CaPIdx)(SCAID)指定的可编程原子事务的指令RAM(例如,可编程原子单元270的本地存储器305)中的分区处的第一指令而开始。操作在分区内的第一指令处开始。CaPIdx还可用于索引到含有用于操作的额外信息的控制结构中。额外信息包含用于指示事务是否有效的标志、用于事务的分区的数目及指令执行限值。当注册可编程原子事务时,额外信息可由操作系统或可编程原子单元设置。分区的数目用于验证正在适当分区内执行操作。检测到异常,并且如果在不适当的分区中执行,或如果检测到执行的指令数目超过指令执行限值,则终止执行操作。
提供对可编程原子事务的响应作为存储器响应。举例来说,图5说明响应消息。响应消息的字段如下:
如所提及,由操作系统提供的API可由用于注册可编程原子事务的过程使用。图6说明根据本公开的一些实例的注册可编程原子事务的方法的流程图。在操作605处,可从通过操作系统注册可编程原子事务的过程接收指令。所述指令可包含用于事务的指令集(或通过指令集指向存储器位置(例如受存储器控制器管理的存储器位置)的指针)及任选地PCAID。在操作610处,操作系统可确定PCAID是否存在于注册请求中。如果存在PCAID,则在操作615处,从请求消息识别PCAID。在一些实例中,进行检查以确保尚未使用PCAID并且PCAID是有效值。如果PCAID已经在使用或为无效值,则可将失败响应发送到过程。如果在操作610处,PCAID不存在于指令中,或如果指令包含指示应指派PCAID的标志,则在620处,从多个有效值指派PCAID。举例来说,可发现并指派为有效值的未使用PCAID。如果未保留未使用PCAID,则可返回错误。在一些实例中,可基于指派方案指派PCAID。举例来说,通过在数字池中选择未使用的数字。
在操作625处,操作系统可在可编程原子单元的指令存储器中找到一或多个连续分区。举例来说,操作系统可对可编程原子事务中的指令数目进行计数。指令数目可除以可存储在可编程原子单元的指令存储器的每一分区中的指令数目。将这个数字向上取整到下一个分区,得到存储可编程原子事务所需的分区数n。操作系统可利用表来跟踪当前正在使用的分区,并且可使用n个分区中的第一连续块,或否则使用不同的选择逻辑来找到n个连续分区。第一分区的索引是SCAID。
在操作630处,操作系统可将指令加载到指令存储器中。举例来说,通过使用CPI请求包,所述CPI请求包包含指令,或包含由含有指令的存储器控制器管理的存储器中的存储器位置。请求可包含其中将存储第一指令的分区索引(SCAID)、要使用的分区数及要执行的最大指令数字段,所述字段设置可用此可编程原子事务执行的指令数的上限。要执行的最大指令数字段是防止可编程原子事务中的无限循环的检查,并且可基于在注册期间由操作系统计算的可编程原子事务中的指令数来设置。举例来说,指令的最大数目可为可编程原子事务中的指令数目,或可更高以考虑指令(例如,由于资源冲突而可能重试的指令)的潜在重试。
在操作635处,操作系统可用来自操作615或620的所确定PCAID填充PCAID-SCAID表。所述表可为在处理器的寄存器中,或在工作存储器中的表。表可以PCAID或SCAID作索引,并且可提供对应标识符(例如,如果提供PCAID,则可返回SCAID且反之亦然)。在其它实例中,表可具有其它数据,例如关于PCAID/SCAID是否有效且加载有指令的指示符。当调用可编程原子事务时,可检查指示符。在操作640处,可提供响应。如果注册成功,则可返回状态码,并且如果由操作系统指派,则PCAID。过程可存储PCAID,并且稍后可使用PCAID调用可编程原子事务。
图7说明根据本公开的一些实例的注册及调用可编程原子事务的方法700的流程图。在操作705处,过程可通过利用由操作系统提供的API来注册可编程原子。举例来说,通过功能调用。过程可指派PCAID,或可使操作系统指派PCAID。如果过程选择使操作系统指派PCAID,则响应可包含所指派PCAID。
在操作710处,系统可确定将执行可编程原子事务。举例来说,作为过程的指令的一部分,可执行指令以调用可编程原子事务。由过程通过第一标识符(PCAID)识别可编程原子事务。第一标识符唯一地识别在多过程系统的硬件处理器上执行的第一过程内的可编程原子事务,第二过程中的相同第一标识符可指代不同可编程原子事务。
在操作712处,使用第一标识符,处理器可基于第一标识符确定第二标识符(SCAID)。举例来说,第一标识符可为PCAID,并且第二标识符可为SCAID。处理器可使用转换表来将第一标识符转换成第二标识符。转换表可特定于某一过程,并且在这些实例中,可使用过程标识符以及PCAID来查找正确的SCAID。
在操作715处,使用第二标识符(SCAID)调用可编程原子事务。举例来说,通过发送CPI消息来启动具有由转换表确定的第二标识符的事务。由于由过程调用的指令,可创建及发送CPI消息。也就是说,执行过程的处理器(其可为执行可编程原子事务的相同处理器或不同处理器)可具有定义的指令,所述指令获取调用可编程原子事务、将PCAID转换为SCAID、形成包及发送请求所需的所有信息。在操作720处,过程从可编程原子操作接收响应。响应可谓异常、成功响应、失败响应等。
图8说明根据本公开的一些实例的可编程原子单元处理执行可编程原子事务的请求的方法800的流程图。在操作805处,可编程原子单元将指令集存储在可编程原子单元的存储器中。举例来说,可发送请求消息以将特定指令集存储在一或多个特定分区处。举例来说,操作系统可跟踪及管理将哪些分区指派到哪些可编程原子单元,并且可在请求时具体地将分区分配到过程。此时,可初始化控制结构,所述控制结构指定请求有效并且存储指令数及分区数。
在操作810处,可编程原子单元可接收用于执行可编程原子事务的指令。如先前所描述,指令可指令存储在可编程原子单元的存储器内的多个可编程原子指令集中的一个,所述可编程原子指令集定义针对特定可编程原子事务执行的操作。指令可基于如先前所描述的存储器分区标识符而指定特定可编程原子事务。
在操作812处,可编程原子单元可执行可编程原子事务的指令。此类指令可包含来自由存储器控制器控制的存储器(例如,裸片外存储器275、280)的读数值,可编程原子单元270是所述存储器控制器的一部分。此类指令可对从存储器读取的值进行操作,并且可将修改后的值存储回存储器(例如,裸片外存储器275、280)。此类操作为调用PAU的过程提供减少的时延。在操作815处,当达到终止指令或确定异常时,可将响应发送到调用处理器。在异常的实例中,响应可指示可编程原子是正常终止还是异常终止。举例来说,例如图5中所示的响应消息。异常可包含指令数目超过指令执行限值(例如,事务的指令不包含终止指令)、指令在法定分区(例如,如由CAPIdx及分区数定义)外部执行。
图9说明根据本公开的一些实例的存储器控制器900的框图。图9是存储器控制器小芯片205的另一实例,且展示与图2中所展示相同的组件中的许多组件。举例来说,高速缓存902及985是高速缓存210的实例;DRAM 945是裸片外存储器275-280的实例;原子/写入合并980及可编程原子单元995可为原子及合并单元250的实例;图9的其它组件可为图2的其它组件的实例,例如裸片外存储器控制器220及高速缓存控制器215。NOC请求队列905从片上网络接收请求且提供少量排队。原子请求队列910从可编程原子单元接收请求并提供少量排队。入站请求多路复用器(IRM)915在入站存储器请求源之间进行选择。三个源按优先级次序是:存储器危险请求、原子请求及入站NOC请求。高速缓存(读取)902及高速缓存(写入)985是SRAM数据高速缓存。图展示作为两个单独块(902及985)的高速缓存,一个提供读取存取,另一个提供写入存取。延迟块925提供一或多个流水线级以模拟用于SRAM高速缓存读取操作的延迟。高速缓存未命中需要对存储器的存取以将所要数据引入到高速缓存中。在此DRAM存取时间期间,存储器行不可用于其它请求。存储器危险块(设置块930及清除块990)维持指示哪些存储器行不可用于存取的危险位的表。尝试存取具有危险的行的入站请求由存储器危险块保持直到清除危险为止。一旦清除危险,就通过入站请求多路复用器重新发送请求。存储器行标签地址经散列为危险位索引。可选择危险位的数目以将危险冲突概率设置到足够低的水平。入站DRAM控制多路复用器(IDCM)935从入站NOC请求及高速缓存逐出请求进行选择。存储体请求队列940-每一单独管理的DRAM存储体具有专用的存储体请求队列以保持请求,直到它们可在相关联DRAM存储体上调度为止。
调度器942跨存储体请求队列940进行选择以选择针对可用DRAM存储体的请求。DRAM块945表示一或多个外部DRAM装置。请求命中数据队列950保持来自高速缓存命中的请求数据,直到经选择为止。请求未命中数据队列955保持从DRAM读取的数据,直到经选择为止。未命中请求队列960用于保持用于高速缓存未命中的请求包信息,直到请求经选择为止。命中请求队列965保持用于高速缓存命中的请求包信息,直到经选择为止。数据选择多路复用器(DSM)970在DRAM读取数据与高速缓存命中读取数据之间进行选择。.将所选择数据写入到SRAM高速缓存。请求选择多路复用器(RSM)975在命中请求队列960与未命中请求队列965之间进行选择。
原子/写入合并980合并请求数据及DRAM读取数据,或者如果请求为内置原子,则存储器数据及请求数据用作原子操作的输入。高速缓存(写入)块985表示用于SRAM高速缓存的写入端口。将来自NOC写入请求的数据及来自DRAM读取操作的数据写入到SRAM高速缓存。存储器危险(清除)块990表示针对存储器危险结构的危险清除操作。清除危险可释放未决NOC请求且将其发送到入站请求多路复用器。可编程原子单元995处理可编程原子事务。NOC出站响应多路复用器(ORM)997在存储器控制器响应与自定义原子单元响应之间进行选择且将选择发送到NOC。
图10说明实例机器1000的框图,可利用所述机器、在所述机器中或通过所述机器实施本文中所论述的任何一或多种技术(例如,方法)。如本文中所描述,实例可包含机器1000中的逻辑或多个组件或机构,或可由机器1000中的逻辑或多个组件或机构操作。电路系统(例如,处理电路系统)是在机器1000的有形实体中实施的电路集合,其包含硬件(例如,简单电路、门、逻辑等)。电路系统成员资格可随时间推移为灵活的。电路系统包含在操作时可单独或组合地执行特定操作的成员。在实例中,可以不可改变的方式设计电路系统的硬件以进行特定操作(例如,硬连线)。在实例中,电路系统的硬件可包含可变地连接的物理组件(例如,执行单元、晶体管、简单电路等),所述物理组件包含以物理方式修改(例如,不变集中式粒子的磁性、电气可移动放置等)以对特定操作的指令进行编码的机器可读媒体。在连接物理组件时,改变硬件组成部分的根本电性质,例如从绝缘体变为导体,或反之亦然。指令使得嵌入式硬件(例如,执行单元或加载机构)能够经由可变连接以硬件创建电路系统的部件以在处于操作中时实行特定操作的部分。因此,在实例中,机器可读媒体元件是电路系统的一部分或在装置操作时以通信方式耦合到电路系统的其它组件。在实例中,物理组件中的任一个可用于多于一个电路系统中的多于一个部件中。举例来说,在操作下,执行单元可在一个时间点用于第一电路系统中的第一电路,且由第一电路系统中的第二电路重新使用,或在不同时间由第二电路系统中的第三电路重新使用。相对于机器1000的这些组件的额外实例如下。
在替代实施例中,机器1000可作为独立装置操作或可连接(例如,联网)到其它机器。在联网部署中,机器1000可在服务器-客户端网络环境中以服务器机器、客户端机器或这两者的容量操作。在实例中,机器1000可充当对等(P2P)(或其它分布式)网络环境中的对等机器。机器1000可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、移动电话、网络器具、网络路由器、交换机或桥接器,或能够执行(循序或以其它方式)指定待由所述机器采取的动作的指令的任何机器。此外,虽然仅示出单个机器,但术语“机器”还应被视为包含单独或联合执行一组(或多组)指令以执行本文论述的方法论中的任何一或多种的任何机器集合,例如云计算、软件即服务(SaaS)、其它计算机集群配置。
机器(例如,计算机系统)1000可包含硬件处理器1002(例如,中央处理单元(CPU)、图形处理单元(GPU)、硬件处理器核心或其任何组合)、主存储器1004、静态存储器(例如,用于固件、微码、基本输入输出(BIOS)、统一可扩展固件接口(UEFI)等的存储器或存储装置)1006,及大容量存储装置1008(例如,硬盘驱动器、磁带机、快闪存储装置或其它块装置),其中的一些或全部可经由互联件(例如,总线)1030彼此通信。机器1000可进一步包含显示单元1010、字母数字输入装置1012(例如,键盘),及用户接口(UI)导航装置1014(例如,鼠标)。在实例中,显示单元1010、输入装置1012及UI导航装置1014可为触摸屏显示器。机器1000可另外包含大容量存储装置(例如,驱动单元)1008、信号生成装置1018(例如,扬声器)、网络接口装置1020,及一或多个传感器1016,例如全球定位系统(GPS)传感器、指南针、加速度计或其它传感器。机器1000可包含输出控制器1028,例如,串行(例如,通用串行总线(USB)、并行或其它有线或无线(例如,红外(IR)、近场通信(NFC)等)连接以与一或多个外围装置(例如,打印机、读卡器等)通信或控制所述一或多个外围装置。
处理器1002、主存储器1004、静态存储器1006或大容量存储装置1008的寄存器可为或包含其上存储有一或多组数据结构或指令1024(例如,软件)的机器可读媒体1022,所述一或多组数据结构或指令体现本文中所描述的技术或功能中的任何一或多种,或由本文中所描述的技术或功能中的任何一或多种利用。指令1024还可在其由机器1000执行期间完全或至少部分地驻存在处理器1002、主存储器1004、静态存储器1006或大容量存储装置1008的寄存器中的任何一个内。在实例中,硬件处理器1002、主存储器1004、静态存储器1006或大容量存储装置1008中的一个或任何组合可构成机器可读媒体1022。虽然机器可读媒体1022被说明为单个媒体,但术语“机器可读媒体”可包含经配置以存储一或多个指令1024的单个媒体或多个媒体(例如,集中式或分布式数据库,或相关联高速缓存及服务器)。
术语“机器可读媒体”可包含能够存储、编码或载送供机器1000执行且使机器1000执行本公开的技术中的任何一或多者的指令的任何媒体,或能够存储、编码或载送由此类指令使用或与此类指令相关联的数据结构的任何媒体。非限制性机器可读媒体实例可包含固态存储器、光学媒体、磁性媒体及信号(例如,射频信号、其它基于光子的信号、声音信号等)。在实例中,非暂时性机器可读媒体包括具有多个粒子的机器可读媒体,所述粒子具有不变(例如,静止)质量,且因此为物质组成。因此,非暂时性机器可读媒体是不包含暂时性传播信号的机器可读媒体。非暂时性机器可读媒体的特定实例可包含:非易失性存储器,例如半导体存储器装置(例如,电可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM))及快闪存储器装置;磁盘,例如内部硬盘及可移式盘;磁光盘;及CD-ROM及DVD-ROM盘。
在实例中,存储或以其它方式提供在机器可读媒体1022上的信息可表示指令1024,例如指令1024本身或可从其导出指令1024的格式。可从其导出指令1024的此格式可包含源代码、编码指令(例如,呈压缩或加密形式)、封装指令(例如,拆分成多个封装)等。表示机器可读媒体1022中的指令1024的信息可由处理电路系统处理到指令中以实施本文中所论述的操作中的任一个。举例来说,从信息(例如,通过处理电路系统处理)导出指令1024可包含:将信息编译(例如,从源代码、目标代码等)、解译、加载、组织(例如,动态地或静态地链接)、编码、解码、加密、解密、封装、解封装或以其它方式操纵到指令1024中。
在实例中,指令1024的导出可包含(例如,通过处理电路系统)对信息的汇编、编译或解译以从由机器可读媒体1022提供的一些中间或预处理格式创建指令1024。当在多个部分中提供信息时,可组合、解封装及修改所述信息以创建指令1024。举例来说,信息可在一个或若干个远程服务器上的多个经压缩源代码封装(或目标代码,或二进制可执行代码等)中。源代码封装可在通过网络传输时加密,且在必要时解密、解压缩、汇编(例如,链接),且在本地机器处编译或解译(例如,到可独立执行的库中等),且由本地机器执行。
指令1024可进一步利用多个传送协议中的任一个(例如,帧中继、因特网协议(IP)、传输控制协议(TCP)、用户数据报协议(UDP)、超文本传送协议(HTTP)等)经由网络接口装置1020使用传输媒体在通信网络1026上传输或接收。实例通信网络可包含局域网(LAN)、广域网(WAN)、包数据网络(例如,因特网)、移动电话网络(例如,蜂窝网络)、简易老式电话(POTS)网络及无线数据网络(例如,称为的电气电子工程师学会(IEEE)802.11系列标准、称为/>的IEEE 802.16系列标准)、IEEE 802.15.4系列标准、对等(P2P)网络等等。在实例中,网络接口装置1020可包含一个或多个物理插口(例如,以太网、同轴或电话插口)或一或多个天线以连接到通信网络1026。在实例中,网络接口装置1020可包含多个天线以使用单输入多输出(SIMO)、多输入多输出(MIMO)或多输入单输出(MISO)技术中的至少一个无线地通信。术语“传输媒体”应被视为包含能够存储、编码或载送指令以由机器1000执行的任何无形媒体,且包含数字或模拟通信信号或用于促进此软件的通信的其它无形媒体。传输媒体是机器可读媒体。为了更好地说明本文中所描述的方法及设备,一组非限制性实例实施例在下文阐述为带编号的实例。
其它注释及实例
实例1是一种方法,其包括:确定可编程原子事务的第一标识符,所述第一标识符唯一地识别在多过程系统的硬件处理器上执行的第一过程内的所述可编程原子事务,第二过程中的相同第一标识符指代不同可编程原子事务;基于所述第一标识符及映射表确定第二标识符,所述第二标识符唯一地识别在整个所述多过程系统中的所述可编程原子事务;将请求发布到所述多过程系统的存储器控制器以执行所述可编程原子事务,所述请求包含所述可编程原子事务的存储器位置,所述存储器位置基于所述第二标识符;及接收对所述可编程原子事务的响应。
在实例2中,根据实例1所述的标的物包含,其中所述请求包含存储器地址,所述存储器地址存储值,对所述值执行所述可编程原子事务。
在实例3中,根据实例1至2所述的标的物包含,其中所述请求使用请求包发布并且通过通信网络发送。
在实例4中,根据实例3所述的标的物包含,其中所述通信网络是小芯片通信网络。
在实例5中,根据实例1至4所述的标的物包含,注册所述可编程原子事务,所述注册包含将所述第一标识符与所述第二标识符及所述可编程原子事务相关联。
在实例6中,根据实例1至5所述的标的物包含,其中所述请求进一步包含用于所述可编程原子事务的自变量。
在实例7中,根据实例1至6所述的标的物包含,确定将执行第二可编程原子事务,所述第二可编程原子事务使用所述第一标识符识别,所述第一标识符唯一地识别在所述多过程系统的所述硬件处理器上执行的所述第二过程内的所述第二可编程原子事务;确定不同于所述第二标识符的第三标识符,所述第三标识符基于所述第一标识符及所述映射表,所述第三标识符唯一地识别在整个所述多过程系统中的所述可编程原子事务;将请求发布到存储器控制器以执行所述第二可编程原子事务,所述请求包含所述第二可编程原子事务的存储器位置;及接收对所述第二可编程原子事务的响应。
实例8是一种装置,其包括:硬件处理器,所述硬件处理器经配置以:确定可编程原子事务的第一标识符,所述第一标识符唯一地识别在多过程系统上执行的第一过程内的所述可编程原子事务,第二过程中的相同第一标识符指代不同可编程原子事务;基于所述第一标识符及映射表确定第二标识符,所述第二标识符唯一地识别在整个所述多过程系统中的所述可编程原子事务;将请求发布到所述多过程系统的存储器控制器以执行所述可编程原子事务,所述请求包含所述可编程原子事务的存储器位置,所述存储器位置基于所述第二标识符;及接收对所述可编程原子事务的响应。
在实例9中,根据实例8所述的标的物包含,其中所述请求包含存储器地址,所述存储器地址存储值,对所述值执行所述可编程原子事务。
在实例10中,根据实例8至9所述的标的物包含,其中所述请求使用请求包发布并且通过通信网络发送。
在实例11中,根据实例10所述的标的物包含,其中所述通信网络是小芯片通信网络。
在实例12中,根据实例8至11所述的标的物包含,其中所述硬件处理器进一步经配置以注册所述可编程原子事务,包含将所述第一标识符与所述第二标识符及所述可编程原子事务相关联。
在实例13中,根据实例8至12所述的标的物包含,其中所述请求进一步包含用于所述可编程原子事务的自变量。
在实例14中,根据实例8至13所述的标的物包含,其中所述硬件处理器进一步经配置以:确定将执行第二可编程原子事务,所述第二可编程原子事务使用所述第一标识符识别,所述第一标识符唯一地识别在所述多过程系统的所述硬件处理器上执行的所述第二过程内的所述第二可编程原子事务;确定不同于所述第二标识符的第三标识符,所述第三标识符基于所述第一标识符及所述映射表,所述第三标识符唯一地识别在整个所述多过程系统中的所述可编程原子事务;将请求发布到存储器控制器以执行所述第二可编程原子事务,所述请求包含所述第二可编程原子事务的存储器位置;及接收对所述第二可编程原子事务的响应。
实例15是非暂时性机器可读媒体,所述机器可读媒体存储指令,所述指令在由机器执行时使所述机器执行操作,包括:确定可编程原子事务的第一标识符,所述第一标识符唯一地识别在多过程系统的硬件处理器上执行的第一过程内的所述可编程原子事务,第二过程中的相同第一标识符指代不同可编程原子事务;基于所述第一标识符及映射表确定第二标识符,所述第二标识符唯一地识别在整个所述多过程系统中的所述可编程原子事务;将请求发布到所述多过程系统的存储器控制器以执行所述可编程原子事务,所述请求包含所述可编程原子事务的存储器位置,所述存储器位置基于所述第二标识符;及接收对所述可编程原子事务的响应。
在实例16中,根据实例15所述的标的物包含,其中所述请求包含存储器地址,所述存储器地址存储值,对所述值执行所述可编程原子事务。
在实例17中,根据实例15至16所述的标的物包含,其中所述请求使用请求包发布并且通过通信网络发送。
在实例18中,根据实例17所述的标的物包含,其中所述通信网络是小芯片通信网络。
在实例19中,根据实例15至18所述的标的物包含,其中所述操作进一步包括注册所述可编程原子事务,所述注册包含将所述第一标识符与所述第二标识符及所述可编程原子事务相关联。
在实例20中,根据实例15至19所述的标的物包含,其中所述请求进一步包含用于所述可编程原子事务的自变量。
在实例21中,根据实例15至20所述的标的物包含,其中所述操作进一步包括:确定将执行第二可编程原子事务,所述第二可编程原子事务使用所述第一标识符识别,所述第一标识符唯一地识别在所述多过程系统的所述硬件处理器上执行的所述第二过程内的所述第二可编程原子事务;确定不同于所述第二标识符的第三标识符,所述第三标识符基于所述第一标识符及所述映射表,所述第三标识符唯一地识别在整个所述多过程系统中的所述可编程原子事务;将请求发布到存储器控制器以执行所述第二可编程原子事务,所述请求包含所述第二可编程原子事务的存储器位置;及接收对所述第二可编程原子事务的响应。
实例22是一种装置,其包括:用于确定可编程原子事务的第一标识符的装置,所述第一标识符唯一地识别在多过程系统的硬件处理器上执行的第一过程内的所述可编程原子事务,第二过程中的相同第一标识符指代不同可编程原子事务;用于基于所述第一标识符及映射表确定第二标识符的装置,所述第二标识符唯一地识别在整个所述多过程系统中的所述可编程原子事务;用于将请求发布到所述多过程系统的存储器控制器以执行所述可编程原子事务的装置,所述请求包含所述可编程原子事务的存储器位置,所述存储器位置基于所述第二标识符;及用于接收对所述可编程原子事务的响应的装置。
在实例23中,根据实例22所述的标的物包含,其中所述请求包含存储器地址,所述存储器地址存储值,对所述值执行所述可编程原子事务。
在实例24中,根据实例22至23所述的标的物包含,其中所述请求使用请求包发布并且通过通信网络发送。
在实例25中,根据实例24所述的标的物包含,其中所述通信网络是小芯片通信网络。
在实例26中,根据实例22至25所述的标的物包含,用于注册所述可编程原子事务的装置,所述用于注册的装置包含用于将所述第一标识符与所述第二标识符及所述可编程原子事务相关联的装置。
在实例27中,根据实例22至26所述的标的物包含,其中所述请求进一步包含用于所述可编程原子事务的自变量。
在实例28中,根据实例22至27所述的标的物包含,用于确定将执行第二可编程原子事务的装置,所述第二可编程原子事务使用所述第一标识符识别,所述第一标识符唯一地识别在所述多过程系统的所述硬件处理器上执行的所述第二过程内的所述第二可编程原子事务;用于确定不同于所述第二标识符的第三标识符的装置,所述第三标识符基于所述第一标识符及所述映射表,所述第三标识符唯一地识别在整个所述多过程系统中的所述可编程原子事务;用于将请求发布到存储器控制器以执行所述第二可编程原子事务的装置,所述请求包含所述第二可编程原子事务的存储器位置;及用于接收对所述第二可编程原子事务的响应的装置。
实例29是至少一个机器可读媒体,其包含在由处理电路系统执行时使所述处理电路系统执行操作以实施实例1至28中任一项的指令。
实例30是一种设备,其包括用于实施实例1至28中任一项的装置。
实例31是一种用于实施实例1至28中任一项的系统。
实例32是一种用于实施实例1至28中任一项的方法。
以上详细描述包含对附图的参考,所述附图形成所述详细描述的一部分。图式借助于说明展示可实践本发明的特定实施例。这些实施例在本文中也称为“实例”。此类实例可包含除了所示出或所描述的那些元件之外的元件。然而,本发明人还预期其中仅提供所示或所描述的那些元件的实例。此外,本发明人还预期使用相对于特定实例(或其一或多个方面)或相对于本文展示或描述的其它实例(或其一或多个方面)而展示或描述的那些元件的任何组合或排列的实例(或其一或多个方面)。
在本文档中,如专利文件中常见,使用术语“一”或“一个”以包含一个或多于一个,这与“至少一个”或“一或多个”的任何其它例子或用途无关。在本文档中,除非另外指示,否则术语“或”用于指代非排他性的或,使得“A或B”可包含“A而非B”、“B而非A”,及“A及B”。在所附权利要求书中,术语“包含(including)”及“其中(in which)”用作相应术语“包括(comprising)”及“其中(wherein)”的简洁英文等效术语。此外,在以下权利要求书中,术语“包含”及“包括”为开放式的,即,包含除权利要求书中在此术语之后列出的那些元件之外的元件的系统、装置、物品或过程仍被视为在权利要求书的范围内。此外,在以下权利要求书中,术语“第一”、“第二”及“第三”等仅用作标签,并且并不旨在对其对象施加数字要求。
以上描述预期为说明性的而非限制性的。举例来说,上文所描述的实例(或其一或多个方面)可彼此组合使用。如所属领域的一般技术人员在查阅以上描述后可使用其它实施例。其在遵守以下理解的情况下提交:其将不会用于解释或限制权利要求的范围或含义。同样,在以上详细描述中,可将各种特征分组在一起以简化本公开。此情况不应解释为期望未要求的公开特征对任何权利要求来说是必需的。实际上,本发明主题可在于比特定公开的实施例的所有特征要少。因此,特此将所附权利要求书并入到具体实施方式中,其中每一权利要求作为一单独实施例而独立存在,且经考虑此类实施例可以各种组合或排列彼此组合。本发明的范围应该通过参考所附的权利要求书以及所述权利要求书所授予的等效物的完整范围来确定。
Claims (20)
1.一种方法,其包括:
确定可编程原子事务的第一标识符,所述第一标识符唯一地识别在多过程系统的硬件处理器上执行的第一过程内的所述可编程原子事务,第二过程中的相同第一标识符指代不同可编程原子事务;
基于所述第一标识符及映射表确定第二标识符,所述第二标识符唯一地识别在整个所述多过程系统中的所述可编程原子事务;
将请求发布到所述多过程系统的存储器控制器以执行所述可编程原子事务,所述请求包含所述可编程原子事务的存储器位置,所述存储器位置基于所述第二标识符;及
接收对所述可编程原子事务的响应。
2.根据权利要求1所述的方法,其中所述请求包含存储器地址,所述存储器地址存储值,对所述值执行所述可编程原子事务。
3.根据权利要求1所述的方法,其中所述请求使用请求包发布并且通过通信网络发送。
4.根据权利要求3所述的方法,其中所述通信网络是小芯片通信网络。
5.根据权利要求1所述的方法,其进一步包括注册所述可编程原子事务,所述注册包含将所述第一标识符与所述第二标识符及所述可编程原子事务相关联。
6.根据权利要求1所述的方法,其中所述请求进一步包含用于所述可编程原子事务的自变量。
7.根据权利要求1所述的方法,其进一步包括:
确定将执行第二可编程原子事务,所述第二可编程原子事务使用所述第一标识符识别,所述第一标识符唯一地识别在所述多过程系统的所述硬件处理器上执行的所述第二过程内的所述第二可编程原子事务;
确定不同于所述第二标识符的第三标识符,所述第三标识符基于所述第一标识符及所述映射表,所述第三标识符唯一地识别在整个所述多过程系统中的所述可编程原子事务;
将请求发布到存储器控制器以执行所述第二可编程原子事务,所述请求包含所述第二可编程原子事务的存储器位置;及
接收对所述第二可编程原子事务的响应。
8.一种装置,其包括:
硬件处理器,其经配置以:
确定可编程原子事务的第一标识符,所述第一标识符唯一地识别在多过程系统上执行的第一过程内的所述可编程原子事务,第二过程中的相同第一标识符指代不同可编程原子事务;
基于所述第一标识符及映射表确定第二标识符,所述第二标识符唯一地识别在整个所述多过程系统中的所述可编程原子事务;
将请求发布到所述多过程系统的存储器控制器以执行所述可编程原子事务,所述请求包含所述可编程原子事务的存储器位置,所述存储器位置基于所述第二标识符;及
接收对所述可编程原子事务的响应。
9.根据权利要求8所述的装置,其中所述请求包含存储器地址,所述存储器地址存储值,对所述值执行所述可编程原子事务。
10.根据权利要求8所述的装置,其中所述请求使用请求包发布并且通过通信网络发送。
11.根据权利要求10所述的装置,其中所述通信网络是小芯片通信网络。
12.根据权利要求8所述的装置,其中所述硬件处理器进一步经配置以注册所述可编程原子事务,包含将所述第一标识符与所述第二标识符及所述可编程原子事务相关联。
13.根据权利要求8所述的装置,其中所述请求进一步包含用于所述可编程原子事务的自变量。
14.根据权利要求8所述的装置,其中所述硬件处理器进一步经配置以:
确定将执行第二可编程原子事务,所述第二可编程原子事务使用所述第一标识符识别,所述第一标识符唯一地识别在所述多过程系统的所述硬件处理器上执行的所述第二过程内的所述第二可编程原子事务;
确定不同于所述第二标识符的第三标识符,所述第三标识符基于所述第一标识符及所述映射表,所述第三标识符唯一地识别在整个所述多过程系统中的所述可编程原子事务;
将请求发布到存储器控制器以执行所述第二可编程原子事务,所述请求包含所述第二可编程原子事务的存储器位置;及
接收对所述第二可编程原子事务的响应。
15.一种非暂时性机器可读媒体,所述机器可读媒体存储在由机器执行时使得所述机器执行包括以下项的操作的指令:
确定可编程原子事务的第一标识符,所述第一标识符唯一地识别在多过程系统的硬件处理器上执行的第一过程内的所述可编程原子事务,第二过程中的相同第一标识符指代不同可编程原子事务;
基于所述第一标识符及映射表确定第二标识符,所述第二标识符唯一地识别在整个所述多过程系统中的所述可编程原子事务;
将请求发布到所述多过程系统的存储器控制器以执行所述可编程原子事务,所述请求包含所述可编程原子事务的存储器位置,所述存储器位置基于所述第二标识符;及
接收对所述可编程原子事务的响应。
16.根据权利要求15所述的非暂时性机器可读媒体,其中所述请求包含存储器地址,所述存储器地址存储值,对所述值执行所述可编程原子事务。
17.根据权利要求15所述的非暂时性机器可读媒体,其中所述请求使用请求包发布并且通过通信网络发送。
18.根据权利要求17所述的非暂时性机器可读媒体,其中所述通信网络是小芯片通信网络。
19.根据权利要求15所述的非暂时性机器可读媒体,其中所述操作进一步包括注册所述可编程原子事务,所述注册包含将所述第一标识符与所述第二标识符及所述可编程原子事务相关联。
20.根据权利要求15所述的非暂时性机器可读媒体,其中所述请求进一步包含用于所述可编程原子事务的自变量。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/074,811 | 2020-10-20 | ||
US17/074,811 US20230251894A1 (en) | 2020-10-20 | 2020-10-20 | Method of executing programmable atomic unit resources within a multi-process system |
PCT/US2021/055038 WO2022086789A1 (en) | 2020-10-20 | 2021-10-14 | Method of executing programmable atomic unit resources within a multi-process system |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116601601A true CN116601601A (zh) | 2023-08-15 |
Family
ID=81291086
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180084537.9A Pending CN116601601A (zh) | 2020-10-20 | 2021-10-14 | 在多过程系统内执行可编程原子单元资源的方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230251894A1 (zh) |
CN (1) | CN116601601A (zh) |
WO (1) | WO2022086789A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11989556B2 (en) | 2020-10-20 | 2024-05-21 | Micron Technology, Inc. | Detecting infinite loops in a programmable atomic transaction |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11693690B2 (en) | 2020-10-20 | 2023-07-04 | Micron Technology, Inc. | Method of completing a programmable atomic transaction by ensuring memory locks are cleared |
US11740929B2 (en) | 2020-10-20 | 2023-08-29 | Micron Technology, Inc. | Registering a custom atomic operation with the operating system |
US11436187B2 (en) | 2020-10-20 | 2022-09-06 | Micron Technology, Inc. | Method of notifying a process or programmable atomic operation traps |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8825615B2 (en) * | 2004-05-11 | 2014-09-02 | Oracle International Corporation | Simplifying implementation of custom atomic transactions in a programming environment |
US7636829B2 (en) * | 2006-05-02 | 2009-12-22 | Intel Corporation | System and method for allocating and deallocating memory within transactional code |
US8214833B2 (en) * | 2008-05-12 | 2012-07-03 | Oracle America, Inc. | Systems and methods for supporting software transactional memory using inconsistency-aware compilers and libraries |
US8880544B2 (en) * | 2009-06-26 | 2014-11-04 | Simplivity Corporation | Method of adapting a uniform access indexing process to a non-uniform access memory, and computer system |
US9524219B2 (en) * | 2013-09-27 | 2016-12-20 | Intel Corporation | Atomic transactions to non-volatile memory |
US10732865B2 (en) * | 2015-09-23 | 2020-08-04 | Oracle International Corporation | Distributed shared memory using interconnected atomic transaction engines at respective memory interfaces |
US11119972B2 (en) * | 2018-05-07 | 2021-09-14 | Micron Technology, Inc. | Multi-threaded, self-scheduling processor |
-
2020
- 2020-10-20 US US17/074,811 patent/US20230251894A1/en active Pending
-
2021
- 2021-10-14 CN CN202180084537.9A patent/CN116601601A/zh active Pending
- 2021-10-14 WO PCT/US2021/055038 patent/WO2022086789A1/en active Application Filing
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11989556B2 (en) | 2020-10-20 | 2024-05-21 | Micron Technology, Inc. | Detecting infinite loops in a programmable atomic transaction |
Also Published As
Publication number | Publication date |
---|---|
WO2022086789A1 (en) | 2022-04-28 |
US20230251894A1 (en) | 2023-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11740929B2 (en) | Registering a custom atomic operation with the operating system | |
US20230251894A1 (en) | Method of executing programmable atomic unit resources within a multi-process system | |
US11693690B2 (en) | Method of completing a programmable atomic transaction by ensuring memory locks are cleared | |
US11403023B2 (en) | Method of organizing a programmable atomic unit instruction memory | |
CN114388040B (zh) | 通知进程或可编程原子操作捕获的方法 | |
US11989556B2 (en) | Detecting infinite loops in a programmable atomic transaction | |
US11789885B2 (en) | Ordered delivery of data packets based on type of path information in each packet | |
US20230244416A1 (en) | Communicating a programmable atomic operator to a memory controller | |
CN114385237B (zh) | 用于低时延寄存器错误校正的方法和设备及机器可读介质 | |
US11698791B2 (en) | On-demand programmable atomic kernel loading | |
CN114385545B (zh) | 针对可编程原子操作的存储器存取边界检查 | |
US11455262B2 (en) | Reducing latency for memory operations in a memory controller | |
US20220121486A1 (en) | Rescheduling a failed memory request in a processor | |
US20220121483A1 (en) | Thread execution control in a barrel processor | |
CN116569128A (zh) | 存储器热点识别 | |
WO2022086763A1 (en) | Thread scheduling control and memory splitting in a barrel processor | |
CN116583828A (zh) | 管理存储器控制器中的危险 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |