可编程原子操作符资源锁定的制作方法

未命名 08-15 阅读:116 评论:0

可编程原子操作符资源锁定
1.优先权申请
2.本技术要求2020年10月20日申请的序列号为17/075,384的美国申请的优先权权益,所述美国申请以其全文引用的方式并入本文中。
3.关于政府支持的声明
4.本发明是根据美国国防部高级研究计划局(darpa)授予的第hr00111890003号协议在美国政府的支持下完成的。美国政府对本发明享有一定权利。


背景技术:

5.小芯片是用于集成各种处理功能性的新兴技术。一般来说,小芯片系统是由离散模块(每一者是“小芯片”)组成,所述离散模块经集成于中介层上且在许多实例中根据需要通过一或多个已建立的网络互连,以向系统提供所期望的功能性。中介层及所包含的小芯片可被封装在一起以促进与较大系统的其它组件互连。每一小芯片可包含一或多个个别集成电路(ic)或“芯片”,其潜在地与离散电路组件组合且共同耦合到相应衬底以促进附接到中介层。系统中的大多数小芯片或所有小芯片将个别地经配置以通过一或多个已建立的网络进行通信。
6.小芯片作为系统的个别模块的配置不同于实施在若干单芯片(其在一个衬底(例如单个裸片)上含有不同装置块(例如知识产权(ip)块))上的此类系统(例如单芯片系统(soc)),或集成于印刷电路板(pcb)上的多个离散封装装置。一般来说,小芯片提供比离散封装装置更好的性能(例如低功耗、减小的延时等),且小芯片提供比单裸片芯片更大的生产效益。这些生产效益可包含更高良率或减小的开发成本及时间。
7.例如,小芯片系统可包含一或多个应用程序(或处理器)小芯片及一或多个支持小芯片。在此,应用程序与支持小芯片之间的区别仅仅是对小芯片系统的可能设计场景的参考。因此,例如,合成视觉小芯片系统可包含(仅作为实例)用于产生合成视觉输出的应用程序小芯片以及支持小芯片,例如存储器控制器小芯片、传感器接口小芯片或通信小芯片。在典型用例中,合成视觉设计者可设计应用程序小芯片且从其他方获得支持小芯片。因此,因为通过避免体现于支持小芯片中的功能性的设计及生产,设计支出(例如,在时间或复杂性方面)减小。小芯片还支持原本可能很难的ip块的紧密集成,例如使用不同处理技术或使用不同特征大小(或利用不同接触技术或间隔)制造的ip块。因此,具有不同物理、电或通信特性的多个ic或ic组合件可以模块化方式组装以提供组合件,所述组合件提供所期望的功能性。小芯片系统还可促进调适以适应小芯片系统将并入到其中的不同较大系统的需求。在实例中,ic或其它组合件可针对功率、速度或热产生进行优化以用于特定功能——正如传感器可发生——与尝试在单个裸片上这么做相比,可更容易地与其它装置集成。另外,通过减小裸片的整体大小,小芯片的良率趋向于比更复杂的单个裸片装置的良率更高。
附图说明
8.从下文给出的详细描述及从本公开的各个实施例的附图将更加完全地理解本公
开。然而,图式不应理解为将本公开限于特定实施例,而仅是为了解释及理解。
9.图1a及1b说明根据实施例的小芯片系统的实例。
10.图2说明根据实施例的存储器控制器小芯片的实例的组件。
11.图3说明根据实施例的存储器控制器小芯片的实例的组件。
12.图4说明根据实施例的可编程原子单元(pau)的实例中的组件。
13.图5说明根据实施例的小芯片协议接口请求分组。
14.图6说明根据实施例的小芯片协议接口响应分组。
15.图7是根据实施例的用于可编程原子操作符资源锁定的方法的实例的流程图。
16.图8是本公开的实施例可利用其、在其中或通过其操作的机器的实例的框图。
具体实施方式
17.下文描述的图1提供小芯片系统及在其中操作的组件的实例。所说明的小芯片系统包含存储器控制器。小芯片系统包含用于在小芯片之间通信的基于分组的网络。存储器控制器包含具有处理器的可编程原子单元(pau),其响应于对可编程原子操作符(pao)的存储器请求而执行定制程序(可编程原子操作符(pao))。关于pau的额外细节在下文关于图2及4描述。
18.为了成为“原子的”,原子操作符排他地修改资源(例如,存储器中的数据)。因此,给定关于相同资源的两个原子操作符,一个操作符必须在第二操作符可开始之前开始且结束操作。因此,需要由原子操作符对其进行操作的资源的排他性机制。
19.排他性机制可使用pao请求中的基地址作为资源的标识符来实施。通常,pao请求包含可用于定义pao应对其操作的数据的至少一个存储器地址。然而,不要求pao实际上存取存储器地址处的数据。确切来说,pao可存取关于此基地址的数据。此外,pao可使用其它资源,例如内置原子、加密组件等,其全部都可表示在其操作期间pao应对其具有排他存取的资源。即使pao不一定存取基地址,pao请求中的基础存储器地址用于表示针对其执行排他性的pao的所有资源。
20.pao请求的基础存储器地址用作pao的锁或危险地址。基础存储器地址可例如由存储器控制器的危险组件或由pau散列到索引。在实例中,索引是锁位阵列的索引。在这些实例中,当从散列基础存储器地址确定的索引处的锁位未设置(例如,未锁定)时,pao继续执行。在此,因为pao准备好执行,因此锁位可被成功设置。具有相同索引的后续pao在锁被清除之前无法设置锁位。一旦pao完成,锁位就被清除,从而使等待的pao能够继续进行。在实例中,散列函数使用来自基础存储器地址的所有地址位产生锁阵列索引。此方法可确保在一组给定pao地址上的散列结果冲突数目最小。
21.本文中描述的排他性机制可在操作时如下般进行操作。当pao请求由存储器控制器接收时,将pao中的存储器地址散列到锁位阵列的索引中。如果锁位是逻辑0,那么将锁位设置到逻辑1且pao在pau中开始。当pao完成时,锁位被清除(例如,设置回到逻辑0)。如果当pao请求被存储器控制器接收时锁位已经被设置,那么pao请求被链接到锁位且暂停直到锁位被清除。多个pao请求可被链接到相同锁位。此导致如此链接到锁位的pao请求循序执行,从而提供原子性。即使由pao进行的实际操作且因此由pao使用的资源在设计硬件时是未知的,资源排他性机制也利用pao请求中提供的存储器地址作为pao的锁地址及基地址。下文
提供额外细节及实例。
22.图1a及1b说明根据实施例的小芯片系统110的实例。图1a是安装在外围板105上的小芯片系统110的表示,外围板105可通过例如外围组件互连高速(pcie)连接到更大计算机系统。小芯片系统110包含封装衬底115、中介层120及四个小芯片(应用程序小芯片125、主机接口小芯片135、存储器控制器小芯片140及存储器装置小芯片150)。如将从以下论述明显看出,其它系统可包含许多额外小芯片以提供额外功能性。小芯片系统110的封装被说明为具有盖子或覆盖物165,但可使用用于小芯片系统的其它封装技术及结构。图1b是为了清楚起见标记小芯片系统中的组件的框图。
23.应用程序小芯片125被说明为包含用于支持小芯片网络155进行小芯片间通信的片上网络(noc)130。在实例实施例中,noc 130可被包含于应用程序小芯片125上。在实例中,noc 130可响应于所选择的支持小芯片(例如小芯片135、140及150)而定义,从而使得设计者能够选择适当数目的小芯片网络连接或交换机以用于noc 130。在实例中,noc 130可经定位于单独小芯片上,或甚至经定位于中介层120内。在本文中所论述的实例中,noc 130实施小芯片协议接口(cpi)网络。
24.cpi是支持虚拟通道以在小芯片之间实现灵活且高速交互的基于分组的网络。cpi实现从小芯片内网络到小芯片网络155的桥接。举例来说,高级可扩展接口(axi)是广泛用于设计芯片内通信的规范。然而,axi规范涵盖各种各样的物理设计选项,例如物理通道的数目、信号时序、功率等。在单个芯片内,这些选项通常经选择以满足设计目标,例如功耗、速度等。然而,为了实现小芯片系统的灵活性,使用适配器(例如cpi)以介接于可经实施于各个小芯片中的各个axi设计选项之间。通过启用物理通道到虚拟通道映射及利用分组化协议包封基于时间的信令,cpi跨小芯片网络155桥接小芯片内网络。
25.cpi可使用各种不同物理层来传输分组。物理层可包含简单的导电连接,或可包含用于增加电压的驱动器,或以其它方式促进在较长距离内传输信号。一个此类物理层的实例可包含高级接口总线(aib),在各个实例中,其可经实施于中介层120中。aib使用源同步数据传送以及转发时钟来传输及接收数据。分组相对于所传输的时钟以单倍数据速率(sdr)或双倍数据速率(ddr)跨aib传送。各个通道宽度由aib支持。当以sdr模式操作时,aib通道宽度是20位的倍数(20、40、60、

),且对于ddr模式是40位的倍数:(40、80、120、

)。aib通道宽度包含传输及接收信号两者。通道可经配置以具有对称数目个传输(tx)及接收(rx)输入/输出(i/o),或具有非对称数目个传输器及接收器(例如全部是传输器或全部是接收器)。通道可用作aib主体或从属,这取决于哪个小芯片提供主时钟。aib i/o单元支持三种时控模式:异步(即非计时)、sdr及ddr。在各个实例中,非计时模式用于时钟及一些控制信号。sdr模式可使用仅专用的sdr i/o单元或双重使用的sdr/ddr i/o单元。
26.在实例中,cpi分组协议(例如点到点或可路由)在aib通道内可使用对称接收及传输i/o单元。cpi串流协议允许更灵活地使用aib i/o单元。在实例中,用于串流模式的aib通道可将i/o单元配置为全部tx、全部rx或一半tx及一半rx。cpi分组协议可以sdr或ddr操作模式使用aib通道。在实例中,针对sdr模式,以80个i/o单元(即40个tx及40个rx)的增量来配置aib通道,而针对ddr模式是40个i/o单元。cpi串流协议可以sdr或ddr操作模式使用aib通道。在此,在实例中,针对sdr及ddr模式两者,aib通道采用40个i/o单元为增量。在实例中,每一aib通道被指派唯一接口标识符。标识符在cpi复位及初始化期间用于确定跨邻近
小芯片的成对aib通道。在实例中,接口标识符是包括七位小芯片标识符、七位列标识符及六位链路标识符的20位值。aib物理层使用aib带外移位寄存器来传输接口标识符。20位接口标识符使用移位寄存器的位32到51跨aib接口在两个方向上传送。
27.aib将一组堆叠aib通道定义为aib通道列。aib通道列具有某一数目的aib通道加辅助通道。辅助通道含有用于aib初始化的信号。列内的所有aib通道(除了辅助通道之外)都具有相同配置(例如全部tx、全部rx或一半tx及一半rx,以及具有相同数目的数据i/o信号)。在实例中,以邻近于aux通道的aib通道开始,以连续增加的顺序对aib通道进行编号。邻近于aux的aib通道被定义为aib通道0。
28.一般来说,个别小芯片上的cpi接口可包含序列化-反序列化(serdes)硬件。serdes互连对于其中期望具有低信号计数的高速信令的场景作用很好。然而,serdes可导致用于多路复用及解复用、错误检测或校正(例如,使用块级循环冗余校验(crc))、链路级重试或前向错误校正的额外功耗及更长延时。然而,当低延时或能量消耗是超短距离(ultra-short reach)小芯片到小芯片互连的主要关注点时,可利用具有允许以最小延时进行数据传送的时钟速率的并行接口。cpi包含用于使这些超短距离小芯片互连中的延时及能量消耗两者最小化的元件。
29.针对流控制,cpi采用基于信用的技术。接收方(例如应用程序小芯片125)向发送方(例如存储器控制器小芯片140)提供表示可用缓冲器的信用。在实例中,cpi接收方在给定的传输时间单位内包含用于每一虚拟通道的缓冲器。因此,如果cpi接收方在时间上支持五条消息及单个虚拟通道,那么接收方具有布置成五行的五个缓冲器(每一单位时间一行)。如果支持四个虚拟通道,那么接收方具有布置成五行的二十个缓冲器。每一缓冲器保持一个cpi分组的有效载荷。
30.当发送方传输到接收方时,发送方基于所述传输而递减可用信用。一旦接收方的所有信用都被消耗,发送方就停止向接收方发送分组。这确保接收方总是具有可用缓冲器来存储传输。
31.随着接收方处理接收到的分组及释放缓冲器,接收方将可用缓冲器空间传递回到发送方。接着,此信用返回可由发送方使用以允许额外信息的传输。
32.还说明在无需noc 130的情况下使用直接小芯片到小芯片技术的小芯片网状网络160。小芯片网状网络160可以cpi或另一小芯片到小芯片协议实施。小芯片网状网络160通常启用小芯片管线,其中一个小芯片用作到管线的接口,而管线中的其它小芯片仅与其本身介接。
33.另外,例如一或多个行业标准存储器接口145(举例来说,例如同步存储器接口,例如ddr5、ddr 6)的专用装置接口也可用于互连小芯片。小芯片系统或个别小芯片到外部装置(例如较大系统)的连接可通过所期望的接口(例如pcie接口)实现。在实例中,例如外部接口可通过主机接口小芯片135实施,在所描绘的实例中,主机接口小芯片135提供小芯片系统110外部的pcie接口。此类专用接口145通常在行业中的惯例或标准已汇聚在这样的接口上时被采用。所说明的将存储器控制器小芯片140连接到动态随机存取存储器(dram)存储器装置150的双倍数据速率(ddr)接口145的实例恰好就是这样的行业惯例。
34.在各种可能的支持小芯片中,由于几乎无所不在地使用存储以进行计算机处理以及用于存储器装置的复杂最先进技术,存储器控制器小芯片140很可能存在于小芯片系统
110中。因此,使用由其他人生产的存储器装置小芯片150及存储器控制器小芯片140使小芯片系统设计者能够获得复杂的生产商的稳健产品。一般来说,存储器控制器小芯片140提供存储器装置特定接口来读取、写入或擦除数据。通常,存储器控制器小芯片140可提供额外特征,例如错误检测、错误校正、维护操作或原子操作符执行。对于一些类型的存储器,维护操作趋向于特定于存储器装置150,例如nand快闪或存储类存储器中的废弃项目收集、nand快闪存储器中的温度调整(例如,交叉温度管理)。在实例中,维护操作可包含逻辑到物理(l2p)映射或管理来提供数据的物理与逻辑表示之间的间接水平。在例如dram的其它类型的存储器中,例如刷新的一些存储器操作在某些时间可由主机处理器或存储器控制器的控制,而在其它时间由dram存储器装置或由与例如接口芯片(在实例中,缓冲器)的一或多个dram装置相关联的逻辑控制。
35.原子操作符是例如可由存储器控制器小芯片140执行的数据操纵。在其它小芯片系统中,原子操作符可由其它小芯片执行。举例来说,原子操作符“递增”可由应用程序小芯片125在命令中指定,所述命令包含存储器地址及可能包含递增值。在接收到命令之后,存储器控制器小芯片140便从指定的存储器地址检索数字、将所述数字递增命令中指定的量及存储结果。在成功完成之后,存储器控制器小芯片140便将命令成功的指示提供到应用程序小芯片125。原子操作符避免跨小芯片网络160传输数据,从而导致此类命令的较低延时执行。
36.原子操作符可经分类为内置原子或可编程(例如定制)原子。内置原子是不可变地实施于硬件中的一组有限操作。可编程原子是可在存储器控制器小芯片140的可编程原子单元(pau)(例如定制原子单元(cau))上执行的小程序。图1说明论述pau的存储器控制器小芯片的实例。
37.存储器装置小芯片150可为或可包含易失性存储器装置或非易失性存储器的任何组合。易失性存储器装置的实例包含(但不限于)随机存取存储器(ram)——例如dram)、同步dram(sdram)、图形双倍数据速率类型6sdram(gddr6 sdram)等。非易失性存储器装置的实例包含(但不限于)与非(nand)型快闪存储器、存储类存储器(例如相变存储器或基于忆阻器的技术)、铁电ram(feram)等。所说明的实例包含存储器装置150作为小芯片,然而,存储器装置150可驻留在别处,例如在外围板105上的不同封装中。针对许多应用,可提供多个存储器装置小芯片。在实例中,这些存储器装置小芯片每一者可实施一个或多个存储技术。在实例中,存储器小芯片可包含不同技术的多个堆叠式存储器裸片,例如与一或多个动态随机存取存储器(dram)装置一起堆叠或以其它方式与其通信的一或多个静态随机存取存储器(sram)装置。存储器控制器140还可用于协调小芯片系统110中的多个存储器小芯片之间的操作;例如,在一或多个高速缓存存储级中利用一或多个存储器小芯片,及将一或多个额外存储器小芯片用作主存储器。小芯片系统110还可包含多个存储器控制器140,如可用于为单独处理器、传感器、网络等提供存储器控制功能性。例如小芯片系统110的小芯片架构提供允许在无需重新设计系统结构的剩余部分的情况下通过更新的小芯片配置而适应不同存储器存储技术及适应不同存储器接口的优点。
38.图2说明根据实施例的存储器控制器小芯片205的实例的组件。存储器控制器小芯片205包含高速缓存210、高速缓存控制器215、裸片外存储器控制器220(例如,用于与裸片外存储器275通信)、网络通信接口225(例如,用于与小芯片网络285介接及与其它小芯片通
信)及一组原子及合并单元250。这组的成员可包含例如写入合并单元255、存储器危险单元260、内置原子单元265或pau 270。各个组件是在逻辑上进行说明的,而非其必然会被实施的样子。举例来说,内置原子单元265很可能沿着到裸片外存储器的路径包括不同的装置。举例来说,内置原子单元265可在存储器小芯片上的接口装置/缓冲器中,如上文论述。相比之下,可编程原子单元270可经实施于存储器控制器小芯片205上的单独处理器中(但在各个实例中,可经实施于其它位置,例如经实施于存储器小芯片上)。
39.裸片外存储器控制器220直接耦合到裸片外存储器275(例如,经由总线或其它通信连接)以提供到一或多个裸片外存储器(例如裸片外存储器275及裸片外存储器280)的写入操作及来自所述一或多个裸片外存储器的读取操作。在所描绘的实例中,裸片外存储器控制器220还经耦合用于输出到原子及合并单元250,及用于输入到高速缓存控制器215(例如存储器侧高速缓存控制器)。
40.在实例配置中,高速缓存控制器215直接耦合到高速缓存210,且可经耦合到网络通信接口225以用于输入(例如传入读取或写入请求),且可经耦合用于输出到裸片外存储器控制器220。
41.网络通信接口225包含分组解码器230、网络输入队列235、分组编码器240及网络输出队列245来支持基于分组的小芯片网络285,例如cpi。小芯片网络285可提供处理器、存储器控制器、混合线程处理器、可配置处理电路或通信接口之间及之中的分组路由。在此类基于分组的通信系统中,每一分组通常包含目的地及源寻址以及任何数据有效载荷或指令。在实例中,取决于配置,小芯片网络285可经实施为具有折叠式克劳斯(clos)配置的交叉开关集合或提供额外连接的网状网络。
42.在各个实例中,小芯片网络285可为异步交换构造的部分。在此,数据分组可沿着各个路径中的任何者路由,使得任何所选择的数据分组到达经寻址目的地可取决于路由在多个不同时间中的任何时间发生。另外,小芯片网络285可至少部分经实施为同步通信网络,例如同步网状通信网络。考虑两种通信网络配置都用于根据本公开的实例。
43.存储器控制器小芯片205可接收具有例如源地址、读取请求及物理地址的分组。作为响应,裸片外存储器控制器220或高速缓存控制器215将从指定的物理地址(其可在裸片外存储器275中或在高速缓存210中)读取数据,且将含有所请求数据的响应分组汇编到源地址。类似地,存储器控制器小芯片205可接收具有源地址、写入请求及物理地址的分组。作为响应,存储器控制器小芯片205将数据写入到指定的物理地址(其可在高速缓存210中或在裸片外存储器275或280中),且将含有确认数据被存储到存储器的响应分组汇编到源地址。
44.因此,存储器控制器小芯片205可经由小芯片网络285接收读取及写入请求,且(如果可能的话)使用与高速缓存210介接的高速缓存控制器215处理所述请求。如果请求不能由高速缓存控制器215处置,那么裸片外存储器控制器220通过与裸片外存储器275或280、原子及合并单元250或两者通信来处置所述请求。如上文指出,一或多个高速缓存级也可经实施于裸片外存储器275或280中;且在一些此类实例中可由高速缓存控制器215直接存取。由裸片外存储器控制器220读取的数据可由高速缓存控制器215高速缓存于高速缓存210中以供稍后使用。
45.原子及合并单元250经耦合以接收裸片外存储器控制器220的输出(作为输入),且
将输出提供到高速缓存210、网络通信接口225或直接提供到小芯片网络285。存储器危险单元260、写入合并单元255及内置(例如,预定)原子单元265每一者可与另一组合逻辑电路系统(例如加法器、移位器、比较器、与(and)门、或(or)门、异或(xor)门或其任何合适组合)或其它逻辑电路系统一起经实施为状态机。这些组件还可包含用于存储操作数或其它数据的一或多个寄存器或缓冲器。pau 270可经实施为一或多个处理器核心或控制电路系统,且与其它组合逻辑电路系统或其它逻辑电路系统一起经实施为各种状态机,且还可包含用于存储地址、可执行指令、操作数及其它数据的一或多个寄存器、缓冲器或存储器,或可经实施为处理器。
46.写入合并单元255接收读取数据及请求数据,且将请求数据与读取数据合并以创建具有读取数据及源地址的单个单元以在响应或返回数据分组中使用)。写入合并单元255将经合并数据提供到高速缓存210的写入端口(或等效地,提供到高速缓存控制器215以写入到高速缓存210)。任选地,写入合并单元255将经合并数据提供到网络通信接口225以编码及准备响应或返回传数据分组以在小芯片网络285上进行传输。
47.当请求数据用于内置原子操作符时,内置原子单元265从写入合并单元255或直接从裸片外存储器控制器220接收请求及读取数据。执行原子操作符,及使用写入合并单元255将所得数据写入到高速缓存210、或提供到网络通信接口225以编码及准备响应或返回数据分组以在小芯片网络285上进行传输。
48.内置原子单元265处置预定义原子操作符,例如提取及递增或比较及交换。在实例中,这些操作对大小为32字节或更少的单个存储器位置执行简单读取-修改-写入操作。从经由小芯片网络285传输的请求分组发起原子存储器操作。请求分组具有物理地址、原子操作符类型、操作数大小及任选地高达32字节的数据。原子操作符对高速缓存210的高速缓存存储器行执行读取-修改-写入,如果必要的话,填充高速缓存存储器。原子操作符响应可为简单的完成响应,或具有高达32字节数据的响应。实例原子存储器操作符包含提取及与(and)、提取及或(or)、提取及异或(xor)、提取及加、提取及减、提取及递增、提取及递减、提取及最小化、提取及最大化、提取及交换,以及比较及交换。在各个实例实施例中,支持32位及64位操作以及对16或32个字节数据的操作。本文中公开的方法还可与支持更大或更小操作及更多或更少数据的硬件兼容。
49.内置原子操作符还可涉及对所请求数据的“标准”原子操作符的请求,例如相对简单的单个循环整数原子——例如提取及递增或比较及交换——其将以与不涉及原子操作符的常规存储器读取或写入操作相同的吞吐量发生。对于这些操作,高速缓存控制器215通常可通过设置危险位(在硬件中)来保留高速缓存210中的高速缓存行,使得高速缓存行在其正转变时不能被另一过程读取。数据从裸片外存储器275或高速缓存210获得且经提供到内置原子单元265以执行所请求原子操作符。在原子操作符之后,除了将所得数据提供到分组编码器240以对传出数据分组进行编码以供在小芯片网络285上传输之外,内置原子单元265将所得数据提供到写入合并单元255,其还将所得数据写入到高速缓存210。在将所得数据写入到高速缓存210之后,被设置的任何对应危险位将由存储器危险单元260清除。
50.pau 270实现可编程原子操作符(还称为“定制原子事务”或“定制原子操作符”)的高性能(高吞吐量及低延时),其与内置原子操作符的性能相当。不同于执行多个存储器存取,响应于指定可编程原子操作符及存储器地址的原子操作符请求,存储器控制器小芯片
205中的电路系统将原子操作符请求传送到pau 270且设置存储在存储器危险寄存器中的对应于原子操作符中使用的存储器行的存储器地址的危险位,以确保不会对那个存储器行执行其它操作(读取、写入或原子),接着,在原子操作符完成之后便清除所述危险位。经提供用于pau 270执行可编程原子操作符的额外直接数据路径允许额外写入操作,而不会受到由通信网络的带宽施加的任何限制且不会增加通信网络的任何拥塞。
51.pau 270包含多线程处理器,例如(举例来说)基于risc-v isa的多线程处理器,其具有一或多个处理器核心且进一步具有用于执行可编程原子操作符的扩展指令集。当具有用于执行可编程原子操作符的扩展指令集时,pau 270可经体现为一或多个混合线程处理器。在一些实例实施例中,pau 270提供桶式(barrel-style)轮询瞬时线程切换以维持高的每时钟指令速率。
52.可编程原子操作符可由pau 270执行,涉及对所请求数据的可编程原子操作符的请求。用户可准备编程代码来提供此类可编程原子操作符。举例来说,可编程原子操作符可为相对简单的多循环操作,例如浮点加法,或相对复杂的多指令操作,例如布隆(bloom)过滤器插入。可编程原子操作符可与预定原子操作符相同或不同,只要它们是由用户定义而非由系统供应商定义的。对于这些操作,高速缓存控制器215可通过设置危险位(在硬件中)来保留高速缓存210中的高速缓存行,使得高速缓存行在其正转变时不能被另一过程读取。数据从高速缓存210或裸片外存储器275或280获得且经提供到pau 270以执行所请求可编程原子操作符。在原子操作符之后,pau 270将所得数据提供到网络通信接口225,以对具有所得数据的传出数据分组直接进行编码以供在小芯片网络285上传输。另外,pau 270将所得数据提供到高速缓存控制器215,其还将所得数据写入到高速缓存210。在将所得数据写入到高速缓存210之后,被设置的任何对应危险位将由高速缓存控制电路215清除。
53.在所选择的实例中,为可编程原子操作符采用的方法将提供多个通用定制原子请求类型,其可通过小芯片网络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内时,通常将支持一组更有限的指令及有限的寄存器堆大小以减小单元的裸片大小。
54.如上文提及,在将读取数据写入到高速缓存210之前,用于经保留高速缓存行的设置危险位将被存储器危险清除单元260清除。因此,当请求及读取数据被写入合并单元255接收时,复位或清除信号可由存储器危险清除单元260传输到高速缓存210以将用于经保留高速缓存行的设置存储器危险位复位。而且,将此危险位复位还将释放涉及经指定(或经保留)高速缓存行的待决读取或写入请求,从而将待决读取或写入请求提供到入站请求多路复用器以供选择及处理。
55.图3说明根据实施例的存储器控制器小芯片的实例的组件。图3是来自图2中说明的存储器控制器205的存储器控制器的另一表示。图2中展示的许多相同组件在此说明。举例来说,高速缓存302及385是高速缓存210的实例;dram 340是裸片外存储器275到280的实
例;原子/写入合并370及可编程原子单元380可为原子及合并单元250的实例。图3的其它组件可为图2的其它组件(例如裸片外存储器控制器220及高速缓存控制器215)的实例。
56.未在存储器控制器205中明确表示的其它组件可包含以下组件。noc请求队列305,其用于从片上网络接收请求及提供少量排队。原子请求队列310,其从可编程原子单元380接收请求及提供少量排队。入站请求多路复用器(irm),其在入站存储器请求源之间作出选择。在实例中,三个存储器请求源的优先级顺序是:存储器危险请求、原子请求及入站noc请求。
57.在实例中,高速缓存(读取)325及高速缓存(写入)375是实施为sram数据高速缓存的单个装置。图式将高速缓存说明为两个单独块(325及375),一者提供读取存取,另一者提供写入存取。延迟块320提供一或多个管线级来模仿sram高速缓存读取操作的延迟。一般来说,高速缓存未命中对裸片外存储器340(例如裸片外存储器280)的存取以将所期望数据带到高速缓存中。在等待存储器响应(例如,用于dram 340的存取时间)时,存储器行不可用于其它请求。
58.存储器危险块(危险设置块315及危险清除块360)可维持指示哪些存储器行不可用于存取的危险位表。因此,尝试存取具有危险的行的入站请求由存储器危险块保持,直到危险被清除。一旦危险被清除,那么请求就通过入站请求多路复用器重新发送。在实例中,存储器行标签地址经散列到危险位索引。危险位的数目可经选取以将危险冲突概率设置到足够低的等级。
59.存储器危险块还可经配置以向pao资源提供原子性。为此,存储器危险块(例如危险设置块315)经配置以接收针对pao的请求。接收到的请求包含pao的标识符及存储器地址(例如,pao的基础存储器地址或基地址)。再次,由pao对其进行操作的所有存储器与基础存储器地址有关。在实例中,请求经由noc接收作为cpi请求,例如下文关于图5描述的cpi请求500。
60.存储器危险块经配置以处理存储器地址以识别锁值。锁值是指示pao的资源是否被锁定(例如,在使用中)的值。在实例中,锁值中的条目是单个位,例如逻辑1意味着pao的资源被锁定且逻辑0意味着资源未被锁定。
61.存储器地址与变换(例如,处理)一起使用以查找例如数据结构中的锁值。在实例中,处理存储器地址以识别锁值包含散列存储器地址。散列存储器地址是直接使用存储器地址以大体上更精简地表示存储器地址。接着,此精简表示可用于识别锁值。散列可由存储器危险块执行或由存储器危险块发起。举例来说,在接收到pao请求之后,便可调用pau 380以执行散列并提供锁值。此处或在图2中说明的存储器控制器的其它组件还可用于从pao请求中的存储器地址产生锁值。
62.在实例中,散列对应于数据结构的条目。因此,散列产生一值,其是进入数据结构中的键或索引。在实例中,数据结构是阵列。在此实例中,将存储器地址散列到对应于阵列的条目的整数。因此,存储器地址经散列到阵列的索引。在此实例中,锁值被保持于阵列中的索引处。
63.在实例中,数据结构具有比存储器控制器的可寻址空间中的存储器地址更少的条目。此实例示范使用存储器地址的散列(而非存储器地址本身)的能力。通常,存储器控制器中的所有存储器地址不太可能同时经受请求。如果直接使用存储器地址,数据结构可能将
维持许多经常未使用的条目。这导致浪费专用于维持很少咨询的锁值的硬件资源。在此实例中,使用比所有可能存储器地址更少数目的锁值条目,从而减少用于存储锁值的硬件量。调整数据结构中的全部锁值条目的散列及数目以控制冲突。在此,当两个不同存储器地址散列到相同锁值时,发生冲突。因此,在此情况中,具有两个不同存储器地址的两个不同pao请求可彼此锁定。通常,锁值数据结构越小,任两个请求将冲突的可能性越大。因此,较小的数据结构用来保持锁值在容纳数据结构的硬件方面是有效的,但可能导致更大冲突(例如,争用)并降低吞吐量。
64.存储器危险块(例如,存储器危险设置块315)经配置以验证锁值指示不存在对应于存储器地址的锁。因此,在此,可使用来自pao请求的经处理的(例如,散列)存储器地址查找数据结构。如果锁值指示锁(例如,逻辑1),那么pao请求无法立即执行。如果查找值指示不存在锁(例如,逻辑0),那么pao请求可在没有延迟的情况下执行。
65.存储器危险块经配置以响应于验证锁值指示不存在对应于存储器地址的锁而设置锁值以指示对应于存储器地址的锁。设置锁值通常在pao执行之前发生以确保与另一pao请求不存在竞争条件。因此,一旦验证了锁值以指示不存在锁,就设置代表pao请求的锁值。
66.一旦pao请求的存储器地址的锁值经设置以指示锁,就可例如由pau 380调用pao。在此,获得请求的其它方面(例如pao标识符(例如分区)、自变量等)(例如,由pau 380检索、由pau 380接收或提供到pau 380)pau 380以执行pao。
67.存储器危险块(例如,存储器危险清除块365)经配置以响应于pao完成而设置锁值以指示不存在对应于存储器地址的锁。在实例中,pau 380可包含向存储器危险块通知pao何时完成的写回(例如,寄存器存储)指令。在实例中,存储器控制器的组件(例如noc的出站路径)(例如,图2的分组编码器240)可发信号向存储器危险块通知pao何时完成。在任何情况中,一旦pao完成,便释放存储器地址上的对应锁以使下一pao请求能继续。
68.当接收到pao请求且锁值指示资源已被锁定时,pao请求被保持直到资源被释放。请求可在锁值指示锁时被暂停且在锁值被清除时继续。在实例中,暂停第二请求包含将第二请求链接到数据结构中对应于存储器地址的锁值的条目。在此实例中,链接可使用各种技术实施。在实例中,数据结构中的条目包含先进先出(fifo)队列。在此,除了锁值之外,阵列中的每一索引具有fifo。因此,被暂停的pao请求被放置于fifo中(例如,入列)。随着锁值被清除,fifo的头部出列,锁值再次被设置以指示锁,且执行出列的pao请求。因此,随着pao请求到达fifo的头部且出列,pao请求被恢复。
69.入站dram控制多路复用器(idcm)从入站noc请求及高速缓存逐出请求中选择。对于存储体请求队列330,每一单独管理的dram存储体具有专用存储体请求队列来保持请求直到它们可在相关联dram存储体上被调度。
70.调度器335跨存储体请求队列335进行选择以选取可用dram存储体的请求。请求命中数据队列360保持来自高速缓存命中的请求数据直到被选择。请求未命中数据队列355保持从dram读取的数据直到被选择。未命中请求队列350用于保持高速缓存未命中的请求分组信息直到请求被选择。命中请求队列345保持高速缓存命中的请求分组信息直到被选择。数据选择多路复用器(dsm)在dram读取数据与高速缓存命中读取数据之间作出选择。所选择的数据被写入到sram高速缓存。请求选择多路复用器(rsm)在命中与未命中请求队列345与355之间作出选择。
71.原子/写入合并370合并所请求数据与dram读取数据,或者,如果请求是内置原子(例如内置原子操作块265),那么存储器数据及请求数据用作用于原子操作的输入。高速缓存(写入)块375表示用于sram高速缓存的写入端口。来自noc写入请求的数据及来自dram读取操作的数据被写入到sram高速缓存。存储器危险(清除)块365表示用于存储器危险结构的危险清除操作。清除危险可释放待决noc请求并将其发送到入站请求多路复用器。可编程原子单元380处理可编程原子操作(例如事务)。noc出站响应多路复用器(orm)在存储器控制器响应与定制原子单元响应之间作出选择并将所述选择发送到noc。
72.图4说明根据实施例的可编程原子单元400(pau)的实例中的组件,例如上文关于图1(例如,在存储器控制器140中)及图2(例如pau 270)提到的组件。如说明,pau 400包含处理器405、本地存储器410(例如sram)及用于本地存储器410的控制器415。
73.在实例中,处理器405是管线式的使得多级不同指令在每时钟循环一起执行。处理器405还为桶多线程处理器,其具有在处理器405的每一时钟循环在不同寄存器堆(例如,含有当前处理状态的寄存器组)之间切换的电路系统。此使得能够在当前执行的线程之间进行有效的上下文切换。在实例中,处理器405支持八个线程,从而导致八个寄存器堆。在实例中,一些或所有寄存器堆未被集成到处理器405中,而是驻留于本地存储器410(寄存器420)中。此通过消除用于这些寄存器420的传统触发器来减小处理器405中的电路复杂性。
74.本地存储器410还可容纳高速缓存430及用于原子操作符的指令425。原子指令425包括用于支持各种应用程序加载的原子操作符的指令集。当原子操作符被例如应用程序小芯片125请求时,对应于原子操作符的一组指令(例如内核)由处理器405执行。在实例中,原子指令425经分区以建立指令集。在此实例中,由请求过程请求的特定可编程原子操作符可通过分区号识别可编程原子操作符。分区号可在可编程原子操作符向pau 400注册(例如,经加载到其上)时建立。可编程原子指令425的额外元数据还可经存储于本地存储器410中,例如分区表。
75.原子操作符操纵高速缓存430,在原子操作符的线程完成时高速缓存430通常被同步(例如刷新)。因此,除从例如裸片外存储器275或280的外部存储器初始加载之外,在可编程原子操作符线程执行期间大多数存储器操作的延时减小。
76.图5说明根据实施例的小芯片协议接口请求分组500。以下是对应于cpi请求分组500的cpi字段描述及位长度的实例的表。
[0077][0078]
[0079]
如说明,第4行阴影行是扩展标头510。命令字段505指示请求500是针对pao的。然而,对请求500进行解码且将pao参数提供到pau(例如pau 270)的实体会将扩展标头510信息传递到pau或对扩展标头510进行解码且将构成字段作为输入提供到pau。
[0080]
图6说明根据实施例的小芯片协议接口响应分组600。以下是对应于cpi响应分组600的cpi字段描述及位长度的实例的表。
[0081][0082]
图7是根据实施例的用于可编程原子操作符资源锁定的方法700的实例的流程图。方法700的操作由计算机硬件执行,所述计算机硬件例如参考图1(例如存储器控制器小芯片)、图2、图3、图4(例如pau 400)或图8(例如处理电路系统)描述。
[0083]
在操作705处,接收针对pao的请求(例如,包含pau的存储器控制器)。在此,所述请求包含pao的标识符及存储器地址。请求的实例是下文关于图5描述的cpi请求500。
[0084]
在操作710处,处理存储器地址以识别锁值。在实例中,处理存储器地址以识别锁值包含将存储器地址散列到数据结构的条目。在实例中,数据结构是阵列。在此实例中,将存储器地址散列到数据结构的条目包含将存储器地址散列到阵列的索引。在实例中,数据结构具有比存储器控制器的可寻址空间中的存储器地址更少的条目。在实例中,锁值是单
个位。
[0085]
在操作715处,验证锁值指示不存在对应于存储器地址的锁。
[0086]
在操作720处,响应于请求的接收及验证锁值指示不存在对应于存储器地址的锁,设置锁值以指示存在对应于存储器地址的锁。
[0087]
在操作725处,基于pao的标识符调用pao。
[0088]
在操作730处,响应于pao完成,设置锁值以指示不存在对应于存储器地址的锁。
[0089]
在实例中,可扩展方法700的操作,包含接收针对pao的第二请求。在此,第二请求包含存储器地址及pao的标识符且在从请求调用的pao完成之前到达。接着,可处理第二请求的存储器地址以识别锁值。可执行锁值指示存在对应于存储器地址的锁的另一验证。响应于验证锁值指示已经存在对应于存储器地址的锁,暂停第二请求。在锁值指示不存在对应于存储器地址的锁时恢复第二请求。在实例中,暂停第二请求包含将第二请求链接到数据结构中对应于存储器地址的锁值的条目。在实例中,条目是先进先出(fifo)队列。在此实例中,将第二请求链接到数据结构中的条目包含使第二请求入列到fifo中。在实例中,恢复第二请求在第二请求处于队列的头部(例如,出队)时发生。
[0090]
图8说明本文中论述的技术(例如方法)中的任一者或多者可利用其、在其中或通过其实施的实例机器800的框图。如本文中描述,实例可包含机器800中的逻辑或数个组件或机构或可由机器800中的逻辑或数个组件或机构操作。电路系统(例如处理电路系统)是实施于包含硬件(例如简单电路、门、逻辑等)的机器800的有形实体中的电路集合。电路系统成员关系可随着时间为灵活的。电路系统包含在操作时可单独或组合地执行指定操作的成员。在实例中,电路系统的硬件可经不变地设计以实行特定操作(例如硬接线)。在实例中,电路系统的硬件可包含可变连接的物理组件(例如执行单元、晶体管、简单电路等),包含物理上经修改(例如,不变质量粒子的磁性、电、可移动置放等)以对所述特定操作的指令进行编码的机器可读媒体。在连接物理组件中,硬件构成的基础电性质(例如)从绝缘体改变为导体或反之亦然。指令使得嵌入式硬件(例如,执行单元或加载机构)能够经由可变连接创建硬件中的电路系统的成员以在操作中实行特定操作的部分。因此,在实例中,机器可读媒体元件是电路系统的部分或当装置操作时通信地耦合到电路系统的其它组件。在实例中,物理组件中的任何者可用于多于一个电路系统的多于一个成员中。例如,在操作下,执行单元可在一时间点用于第一电路系统的第一电路中,且在不同时间由第一电路系统中的第二电路或由第二电路系统中的第三电路再使用。关于机器800的这些组件的额外实例如下。
[0091]
在替代性实施例中,机器800可作为独立装置操作或可连接(例如联网)到其它机器。在联网部署中,机器800可在服务器-客户端网络环境中作为服务器机器、客户端机器或两者而操作。在实例中,机器800可在对等(p2p)(或其它分布式)网络环境中充当对等机器。机器800可为个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、移动电话、网络设备、网络路由器、交换机或桥接器或能够(循序或以其它方式)执行指定由所述机器所采取的动作的指令的任何机器。此外,虽然仅说明单个机器,但术语“机器”还应被视为包含个别或联合执行一组(或多组)指令以执行本文中论述的方法中的任一或多者的机器的任何集合,例如云计算、软件即服务(saas)、其它计算机集群配置。
[0092]
机器(例如计算机系统)800可包含硬件处理器802(例如中央处理单元(cpu)、图形
处理单元(gpu)、硬件处理器核心或其任何组合)、主存储器804、静态存储器(例如用于固件的存储器或存储装置、微代码、基本输入输出(bios)、统一可扩展固件接口(uefi)等)806及大容量存储装置808(例如硬盘驱动器、磁带驱动器、快闪存储装置或其它块装置),其中一些或所有可经由互链(例如总线)830彼此通信。机器800可进一步包含显示器单元810、字母数字输入装置812(例如键盘)及用户接口(ui)导航装置814(例如鼠标)。在实例中,显示器单元810、输入装置812及ui导航装置814可为触摸屏显示器。机器800可另外包含存储装置(例如驱动单元)808、信号产生装置818(例如扬声器)、网络接口装置820及一或多个传感器816(例如全球定位系统(gps)传感器、指南针、加速度计或其它传感器)。机器800可包含输出控制器828,例如用以通信或控制一或多个外围装置(例如打印机、读卡器等)的串行(例如通用串行总线(usb)、并行、或其它有线或无线(例如红外(ir)、近场通信(nfc)等)连接。
[0093]
处理器802、主存储器804、静态存储器806或大容量存储装置808的寄存器可为或包含机器可读媒体822,在其上存储体现本文中描述的技术或功能中的任一或多者或由本文中描述的技术或功能中的任一或多者利用的一或多组数据结构或指令824(例如软件)。指令824还可在其由机器800执行期间完全或至少部分驻留于处理器802、主存储器804、静态存储器806或大容量存储装置808的寄存器中的任何者内。在实例中,硬件处理器802、主存储器804、静态存储器806或大容量存储装置808中的一者或任何组合可构成机器可读媒体822。虽然将机器可读媒体822说明为单个媒体,但术语“机器可读媒体”可包含经配置以存储一或多个指令824的单个媒体或多个媒体(例如集中式或分布式数据库或相关联高速缓存及服务器)。
[0094]
术语“机器可读媒体”可包含能够存储、编码或携载由机器800执行的指令且致使机器800执行本公开的技术中的任一或多者,或能够存储、编码或携载由此类指令使用或与此类指令相关联的数据结构的任何媒体。非限制性机器可读媒体实例可包含固态存储器、光学媒体、磁性媒体及信号(例如射频信号、其它基于光子的信号、声音信号等)。在实例中,非暂时性机器可读媒体包括具有含不变(例如静止)质量的多个粒子的机器可读媒体,且因此是物质的组合物。因此,非暂时性机器可读媒体是不包含暂时性传播信号的机器可读媒体。非暂时性机器可读媒体的特定实例可包含:非易失性存储器,例如半导体存储器装置(例如电可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom))及快闪存储器装置;磁盘,例如内部硬盘及可装卸磁盘;磁光盘;及cd-rom及dvd-rom磁盘。
[0095]
在实例中,存储或以其它方式提供于机器可读媒体822上的信息可表示指令824,例如指令824本身或可从其导出指令824的格式。可从其导出指令824的此格式可包含源代码、经编码指令(例如呈压缩或加密形式)、经封装指令(例如,分为多个包)或类似物。表示机器可读媒体822中的指令824的信息可由处理电路系统处理成用于实施本文中论述的任何操作的指令。举例来说,从信息导出指令824(例如,由处理电路系统处理)可包含:编译(例如,从源代码、目标代码等)、解译、加载、组织(例如,动态或静态链接)、编码、解码、加密、解密、封装、解封装或以其它方式将信息操纵成指令824。
[0096]
在实例中,指令824的导出可包含信息的汇编、编译或解译(例如,通过处理电路系统)以从由机器可读媒体822提供的一些中间或经预处理格式创建指令824。信息当被提供于多个部分中时可经组合、解包及修改以创建指令824。举例来说,信息可在一或若干远程服务器上的多个压缩源代码包(或目标代码或二进制可执行代码等)中。如果必要的话,源
代码包可在经由网络输送时被加密及解密、解压缩、汇编(例如链接),并在本地机器处进行编译或解译(例如编译或解译成库、独立可执行等)且由本地机器执行。
[0097]
指令824可进一步利用数个传送协议(例如帧中继、因特网协议(ip)、传输控制协议(tcp)、用户数据报协议(udp)、超文本传送协议(http)等)中的任一者经由网络接口装置820使用传输媒体通过通信网络826发射或接收。实例通信网络可包含局域网(lan)、广域网(wan)、分组数据网络(例如因特网)、移动电话网络(例如蜂窝网络)、普通老式电话(pots)网络及无线数据网络(例如电气及电子工程师协会(ieee)802.11系列标准(称为)、ieee 802.16系列标准(称为))、ieee 802.15.4系列标准、对等(p2p)网络,等等。在实例中,网络接口装置820可包含一或多个物理插孔(例如以太网络、同轴或电话插孔)或一或多个天线以连接到通信网络826。在实例中,网络接口装置820可包含多个天线以使用单输入多输出(simo)、多输入多输出(mimo)或多输入单输出(miso)技术中的至少一者进行无线通信。术语“传输媒体”应被视为包含能够存储、编码或携载由机器800执行的指令的任何无形媒体,且包含用于促进此软件的通信的数字或模拟通信信号或其它无形媒体。传输媒体是机器可读媒体。
[0098]
实例1是一种设备,其包括:接口,其经配置以接收针对可编程原子操作符(pao)的请求,所述请求发送到存储器控制器且包含所述pao的标识符及存储器地址;数据结构,其经配置以保持锁值;危险电路系统,其经配置以:处理所述存储器地址以识别所述锁值;验证所述锁值指示不存在对应于所述存储器地址的锁;响应于所述请求的接收及验证所述锁值指示不存在对应于所述存储器地址的锁,设置所述锁值以指示存在对应于所述存储器地址的锁;及响应于所述pao完成,设置所述锁值以指示不存在对应于所述存储器地址的锁;及可编程原子单元,其经配置以基于所述pao的所述标识符调用所述pao。
[0099]
在实例2中,根据实例1所述的主题,其中为了处理所述存储器地址以识别所述锁值,所述危险电路系统经配置以将所述存储器地址散列到数据结构的条目。
[0100]
在实例3中,根据实例2所述的主题,其中所述数据结构是阵列,且所述存储器地址的所述散列是所述阵列的索引。
[0101]
在实例4中,根据实例2到3中任一实例所述的主题,其中所述数据结构具有比所述存储器控制器的可寻址空间中的存储器地址更少的条目。
[0102]
在实例5中,根据实例2到4中任一实例所述的主题,其中所述锁值是单个位。
[0103]
在实例6中,根据实例1到5中任一实例所述的主题,其中:所述接口经配置以接收针对所述pao的第二请求,所述第二请求包含所述存储器地址及所述pao的所述标识符,所述第二请求在从所述请求调用的所述pao完成之前到达;且所述危险电路系统经配置以:处理所述第二请求的所述存储器地址以识别所述锁值;验证所述锁值指示存在对应于所述存储器地址的锁;响应于所述验证所述锁值指示存在对应于所述存储器地址的锁,暂停所述第二请求;及当所述锁值指示不存在对应于所述存储器地址的锁时恢复所述第二请求。
[0104]
在实例7中,根据实例6所述的主题,其中为了暂停所述第二请求,所述危险电路系统经配置以将所述第二请求链接到数据结构中对应于所述存储器地址的所述锁值的条目。
[0105]
在实例8中,根据实例7所述的主题,其中所述条目是先进先出(fifo)队列,且其中为了将所述第二请求链接到所述数据结构中的所述条目,所述危险电路系统经配置以使所述第二请求入列。
[0106]
在实例9中,根据实例8所述的主题,其中当所述第二请求处于所述队列的头部处时,恢复所述第二请求。
[0107]
实例10是一种方法,其包括:在包含可编程原子单元(pau)的存储器控制器处接收针对可编程原子操作符(pao)的请求,所述请求包含所述pao的标识符及存储器地址;处理所述存储器地址以识别锁值;验证所述锁值指示不存在对应于所述存储器地址的锁;响应于所述请求的接收及验证所述锁值指示不存在对应于所述存储器地址的锁,设置所述锁值以指示存在对应于所述存储器地址的锁;基于所述pao的所述标识符调用所述pao;及响应于所述pao完成,设置所述锁值以指示不存在对应于所述存储器地址的锁。
[0108]
在实例11中,根据实例10所述的主题,其中处理所述存储器地址以识别所述锁值包含将所述存储器地址散列到数据结构的条目。
[0109]
在实例12中,根据实例11所述的主题,其中所述数据结构是阵列,且其中将所述存储器地址散列到所述数据结构的所述条目包含将所述存储器地址散列到所述阵列的索引。
[0110]
在实例13中,根据实例11到12中任一实例所述的主题,其中所述数据结构具有比所述存储器控制器的可寻址空间中的存储器地址更少的条目。
[0111]
在实例14中,根据实例11到13中任一实例所述的主题,其中所述锁值是单个位。
[0112]
在实例15中,根据实例10到14中任一实例所述的主题,其包括:接收针对所述pao的第二请求,所述第二请求包含所述存储器地址及所述pao的所述标识符,所述第二请求在从所述请求调用的所述pao完成之前到达;处理所述第二请求的所述存储器地址以识别所述锁值;验证所述锁值指示存在对应于所述存储器地址的锁;响应于所述验证所述锁值指示存在对应于所述存储器地址的锁,暂停所述第二请求;及当所述锁值指示不存在对应于所述存储器地址的锁时恢复所述第二请求。
[0113]
在实例16中,根据实例15所述的主题,其中暂停所述第二请求包含将所述第二请求链接到数据结构中对应于所述存储器地址的所述锁值的条目。
[0114]
在实例17中,根据实例16所述的主题,其中所述条目是先进先出(fifo)队列,且其中将所述第二请求链接到所述数据结构中的所述条目包含使所述第二请求入列。
[0115]
在实例18中,根据实例17所述的主题,其中恢复所述第二请求在所述第二请求处于所述队列的头部处时发生。
[0116]
实例19是一种包含指令的机器可读媒体,当所述指令由存储器控制器的电路系统执行时致使所述存储器控制器执行以下操作:接收针对可编程原子操作符(pao)的请求,所述请求包含所述pao的标识符及存储器地址;处理所述存储器地址以识别锁值;验证所述锁值指示不存在对应于所述存储器地址的锁;响应于所述请求的接收及验证所述锁值指示不存在对应于所述存储器地址的锁,设置所述锁值以指示存在对应于所述存储器地址的锁;基于所述pao的所述标识符调用所述pao;及响应于所述pao完成,设置所述锁值以指示不存在对应于所述存储器地址的锁。
[0117]
在实例20中,根据实例19所述的主题,其中处理所述存储器地址以识别所述锁值包含将所述存储器地址散列到数据结构的条目。
[0118]
在实例21中,根据实例20所述的主题,其中所述数据结构是阵列,且其中将所述存储器地址散列到所述数据结构的所述条目包含将所述存储器地址散列到所述阵列的索引。
[0119]
在实例22中,根据实例20到21中任一实例所述的主题,其中所述数据结构具有比
所述存储器控制器的可寻址空间中的存储器地址更少的条目。
[0120]
在实例23中,根据实例20到22中任一实例所述的主题,其中所述锁值是单个位。
[0121]
在实例24中,根据实例19到23中任一实例所述的主题,其中所述操作包括:接收针对所述pao的第二请求,所述第二请求包含所述存储器地址及所述pao的所述标识符,所述第二请求在从所述请求调用的所述pao完成之前到达;处理所述第二请求的所述存储器地址以识别所述锁值;验证所述锁值指示存在对应于所述存储器地址的锁;响应于所述验证所述锁值指示存在对应于所述存储器地址的锁,暂停所述第二请求;及当所述锁值指示不存在对应于所述存储器地址的锁时恢复所述第二请求。
[0122]
在实例25中,根据实例24所述的主题,其中暂停所述第二请求包含将所述第二请求链接到数据结构中对应于所述存储器地址的所述锁值的条目。
[0123]
在实例26中,根据实例25所述的主题,其中所述条目是先进先出(fifo)队列,且其中将所述第二请求链接到所述数据结构中的所述条目包含使所述第二请求入列。
[0124]
在实例27中,根据实例26所述的主题,其中恢复所述第二请求在所述第二请求处于所述队列的头部处时发生。
[0125]
实例28是一种系统,其包括:用于在包含可编程原子单元(pau)的存储器控制器处接收针对可编程原子操作符(pao)的请求的构件,所述请求包含所述pao的标识符及存储器地址;用于处理所述存储器地址以识别锁值的构件;用于验证所述锁值指示不存在对应于所述存储器地址的锁的构件;用于响应于所述请求的接收及验证所述锁值指示不存在对应于所述存储器地址的锁而设置所述锁值以指示存在对应于所述存储器地址的锁的构件;用于基于所述pao的所述标识符调用所述pao的构件;及用于响应于所述pao完成而设置所述锁值以指示不存在对应于所述存储器地址的锁的构件。
[0126]
在实例29中,根据实例28所述的主题,其中用于处理所述存储器地址以识别所述锁值的所述构件包含用于将所述存储器地址散列到数据结构的条目的构件。
[0127]
在实例30中,根据实例29所述的主题,其中所述数据结构是阵列,且其中用于将所述存储器地址散列到所述数据结构的所述条目的所述构件包含用于将所述存储器地址散列到所述阵列的索引的构件。
[0128]
在实例31中,根据实例29到30中任一实例所述的主题,其中所述数据结构具有比所述存储器控制器的可寻址空间中的存储器地址更少的条目。
[0129]
在实例32中,根据实例29到31中任一实例所述的主题,其中所述锁值是单个位。
[0130]
在实例33中,根据实例28到32中任一实例所述的主题,其包括:用于接收针对所述pao的第二请求的构件,所述第二请求包含所述存储器地址及所述pao的所述标识符,所述第二请求在从所述请求调用的所述pao完成之前到达;用于处理所述第二请求的所述存储器地址以识别所述锁值的构件;用于验证所述锁值指示存在对应于所述存储器地址的锁的构件;用于响应于所述验证所述锁值指示存在对应于所述存储器地址的锁而暂停所述第二请求的构件;及用于当所述锁值指示不存在对应于所述存储器地址的锁时恢复所述第二请求的构件。
[0131]
在实例34中,根据实例33所述的主题,其中所述用于暂停所述第二请求的构件包含用于将所述第二请求链接到数据结构中对应于所述存储器地址的所述锁值的条目的构件。
[0132]
在实例35中,根据实例34所述的主题,其中所述条目是先进先出(fifo)队列,且其中用于将所述第二请求链接到所述数据结构中的所述条目的所述构件包含用于使所述第二请求入列的构件。
[0133]
在实例36中,根据实例35所述的主题,其中恢复所述第二请求在所述第二请求处于所述队列的头部处时发生。
[0134]
实例37包含指令的至少一种机器可读媒体,当所述指令由处理电路系统执行时致使所述处理电路系统执行操作以实施实例1到36中的任一者。
[0135]
实例38是一种包括用于实施实例1到36中的任一者的构件的设备。
[0136]
实例39是一种用于实施实例1到36中的任一者的系统。
[0137]
实例40是一种用于实施实例1到36中的任一者的方法。
[0138]
上文详细描述包含对形成具体实施方式的一部分的附图的参考。图式通过说明的方式展示可实践本发明的特定实施例。这些实施例在本文中还称为“实例”。此类实例可包含除展示或描述的元件之外的元件。然而,本发明人还考虑其中仅提供展示或描述的那些元件的实例。此外,本发明人还考虑使用关于特定实例(或其一或多个方面)或关于本文中展示或描述的其它实例(或其一或多个方面)展示或描述的那些元件的任何组合或排列的实例(或其一或多个方面)。
[0139]
在此文件中,如专利文件中常见的,使用术语“一”或“一个”来包含一个或多于一个,其独立于“至少一个”或“一或多个”的任何其它例子或使用。在此文件中,使用术语“或”指非排他性或,使得“a或b”可包含“a但非b”、“b但非a”及“a及b”,除非另有指示。在所附权利要求书中,术语“包含”及“其中(in which)”用作相应术语“包括”及“其中(wherein)”的普通英语等效形式。而且,在所附权利要求书中,术语“包含”及“包括”是开放式的,即,包含除了权利要求中在此术语之后所列的元件之外的元件的系统、装置、物品或过程仍被认为落于所述权利要求的范围内。此外,在所附权利要求书中,术语“第一”、“第二”及“第三”等仅用作标记,且不希望对其对象强加数字要求。
[0140]
上文描述希望是说明性而非限制性。举例来说,上述实例(或其一或多个方面)可彼此组合使用。例如所属领域的一般技术人员在检视上文描述后可使用其它实施例。应理解提交上文描述并非用于解释或限制权利要求书的范围或含义。而且,在上文具体实施方式中,可将各种特征组合在一起以简化本公开。此不应被解译为希望未要求的公开特征是任何权利要求所必需的。确切来说,发明主题可在于少于特定公开实施例的所有特征。因此,所附权利要求书特此并入具体实施方式中,其中每一权利要求自身作为单独实施例,且考虑此类实施例可以各种组合或排列彼此组合。应参考所附权利要求连同这些权利要求所赋予的等效物的全范围来确定本发明的范围。

技术特征:
1.一种设备,其包括:接口,其能耦合到主机或小芯片系统中的小芯片且经配置以接收针对可编程原子操作符的请求,所述请求发送到存储器控制器且包含所述可编程原子操作符的标识符及存储器地址;存储器,其经布置以保持经配置以保持锁值的数据结构;危险电路系统,其经配置以:处理所述存储器地址以识别所述锁值;验证所述锁值指示不存在对应于所述存储器地址的锁;响应于所述请求的接收及验证所述锁值指示不存在对应于所述存储器地址的锁,设置所述锁值以指示存在对应于所述存储器地址的锁;及响应于所述可编程原子操作符完成,设置所述锁值以指示不存在对应于所述存储器地址的锁;及可编程原子单元,其经配置以基于所述可编程原子操作符的所述标识符调用所述可编程原子操作符。2.根据权利要求1所述的设备,其中为了处理所述存储器地址以识别所述锁值,所述危险电路系统经配置以将所述存储器地址散列到数据结构的条目。3.根据权利要求2所述的设备,其中所述数据结构是阵列,且所述存储器地址的所述散列是所述阵列的索引。4.根据权利要求2所述的设备,其中所述数据结构具有比所述存储器控制器的可寻址空间中的存储器地址更少的条目。5.根据权利要求2所述的设备,其中所述锁值是单个位。6.根据权利要求1所述的设备,其中:所述接口经配置以接收针对所述可编程原子操作符的第二请求,所述第二请求包含所述存储器地址及所述可编程原子操作符的所述标识符,所述第二请求在从所述请求调用的所述可编程原子操作符完成之前到达;且所述危险电路系统经配置以:处理所述第二请求的所述存储器地址以识别所述锁值;验证所述锁值指示存在对应于所述存储器地址的锁;响应于所述验证所述锁值指示存在对应于所述存储器地址的锁,暂停所述第二请求;及当所述锁值指示不存在对应于所述存储器地址的锁时恢复所述第二请求。7.根据权利要求6所述的设备,其中为了暂停所述第二请求,所述危险电路系统经配置以将所述第二请求链接到数据结构中对应于所述存储器地址的所述锁值的条目。8.根据权利要求7所述的设备,其中所述条目是先进先出(fifo)队列,且其中为了将所述第二请求链接到所述数据结构中的所述条目,所述危险电路系统经配置以使所述第二请求入列。9.根据权利要求8所述的设备,其中当所述第二请求处于所述队列的头部处时,恢复所述第二请求。10.一种方法,其包括:
在包含可编程原子单元(pau)的存储器控制器处接收针对可编程原子操作符的请求,所述请求包含所述可编程原子操作符的标识符及存储器地址;处理所述存储器地址以识别锁值;验证所述锁值指示不存在对应于所述存储器地址的锁;响应于所述请求的接收及验证所述锁值指示不存在对应于所述存储器地址的锁,设置所述锁值以指示存在对应于所述存储器地址的锁;基于所述可编程原子操作符的所述标识符调用所述可编程原子操作符;及响应于所述可编程原子操作符完成,设置所述锁值以指示不存在对应于所述存储器地址的锁。11.根据权利要求10所述的方法,其中处理所述存储器地址以识别所述锁值包含将所述存储器地址散列到数据结构的条目。12.根据权利要求11所述的方法,其中所述数据结构是阵列,且其中将所述存储器地址散列到所述数据结构的所述条目包含将所述存储器地址散列到所述阵列的索引。13.根据权利要求11所述的方法,其中所述数据结构具有比所述存储器控制器的可寻址空间中的存储器地址更少的条目。14.根据权利要求11所述的方法,其中所述锁值是单个位。15.根据权利要求10所述的方法,其包括:接收针对所述可编程原子操作符的第二请求,所述第二请求包含所述存储器地址及所述可编程原子操作符的所述标识符,所述第二请求在从所述请求调用的所述可编程原子操作符完成之前到达;处理所述第二请求的所述存储器地址以识别所述锁值;验证所述锁值指示存在对应于所述存储器地址的锁;响应于所述验证所述锁值指示存在对应于所述存储器地址的锁,暂停所述第二请求;及当所述锁值指示不存在对应于所述存储器地址的锁时恢复所述第二请求。16.根据权利要求15所述的方法,其中暂停所述第二请求包含将所述第二请求链接到数据结构中对应于所述存储器地址的所述锁值的条目。17.根据权利要求16所述的方法,其中所述条目是先进先出(fifo)队列,且其中将所述第二请求链接到所述数据结构中的所述条目包含使所述第二请求入列。18.根据权利要求17所述的方法,其中恢复所述第二请求在所述第二请求处于所述队列的头部处时发生。19.一种包含指令的非暂时性机器可读媒体,当所述指令由存储器控制器的电路系统执行时致使所述存储器控制器执行以下操作:接收针对可编程原子操作符的请求,所述请求包含所述可编程原子操作符的标识符及存储器地址;处理所述存储器地址以识别锁值;验证所述锁值指示不存在对应于所述存储器地址的锁;响应于所述请求的接收及验证所述锁值指示不存在对应于所述存储器地址的锁,设置所述锁值以指示存在对应于所述存储器地址的锁;
基于所述可编程原子操作符的所述标识符调用所述可编程原子操作符;及响应于所述可编程原子操作符完成,设置所述锁值以指示不存在对应于所述存储器地址的锁。20.根据权利要求19所述的机器可读媒体,其中处理所述存储器地址以识别所述锁值包含将所述存储器地址散列到数据结构的条目。21.根据权利要求20所述的机器可读媒体,其中所述数据结构是阵列,且其中将所述存储器地址散列到所述数据结构的所述条目包含将所述存储器地址散列到所述阵列的索引。22.根据权利要求20所述的机器可读媒体,其中所述数据结构具有比所述存储器控制器的可寻址空间中的存储器地址更少的条目。23.根据权利要求20所述的机器可读媒体,其中所述锁值是单个位。24.根据权利要求19所述的机器可读媒体,其中所述操作包括:接收针对所述可编程原子操作符的第二请求,所述第二请求包含所述存储器地址及所述可编程原子操作符的所述标识符,所述第二请求在从所述请求调用的所述可编程原子操作符完成之前到达;处理所述第二请求的所述存储器地址以识别所述锁值;验证所述锁值指示存在对应于所述存储器地址的锁;响应于所述验证所述锁值指示存在对应于所述存储器地址的锁,暂停所述第二请求;及当所述锁值指示不存在对应于所述存储器地址的锁时恢复所述第二请求。25.根据权利要求24所述的机器可读媒体,其中暂停所述第二请求包含将所述第二请求链接到数据结构中对应于所述存储器地址的所述锁值的条目。26.根据权利要求25所述的机器可读媒体,其中所述条目是先进先出(fifo)队列,且其中将所述第二请求链接到所述数据结构中的所述条目包含使所述第二请求入列。27.根据权利要求26所述的机器可读媒体,其中恢复所述第二请求在所述第二请求处于所述队列的头部处时发生。

技术总结
本文中描述用于可编程原子操作符资源锁定的装置及技术。针对可编程原子操作符(PAO)的请求可在包含可编程原子单元(PAU)的存储器控制器处接收。在此,所述请求包含所述PAO的标识符及存储器地址。处理所寻址的存储器以识别锁值。可执行验证以确定所述锁值指示不存在对应于所述存储器地址的锁。接着,设置所述锁值以指示现在存在对应于所述存储器地址的锁,且基于所述PAO的所述标识符调用所述PAO。响应于所述PAO完成,设置所述锁值以指示不再存在对应于所述存储器地址的锁。应于所述存储器地址的锁。应于所述存储器地址的锁。


技术研发人员:T
受保护的技术使用者:美光科技公司
技术研发日:2021.10.13
技术公布日:2023/8/14
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐