一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

完成可编程原子事务的方法与流程

2022-04-24 17:36:37 来源:中国专利 TAG:

完成可编程原子事务的方法
1.关于政府支持的声明
2.根据darpa授予的hr00111890003号协议,本发明是在美国政府的支持下完成的。美国政府对这项发明拥有某些权利。
技术领域
3.一般来说,本技术涉及小芯片。具体地说,本技术涉及一种完成可编程原子事务的方法。


背景技术:

4.小芯片是一种用于集成各种处理功能性的新兴技术。通常,小芯片系统由精密模块(各自被称为“小芯片”)构成,所述精密模块集成在中介层上,并且在许多实例中视需要通过一或多个已建立的网络互连,以向系统提供所要功能性。中介层和所包含的小芯片可封装在一起,以便于与较大系统的其它组件互连。每一小芯片可包含一或多个个别集成电路或“芯片”(ic),其可能与离散电路组件组合,并且共同耦合到相应衬底以便于附接到中介层。系统中的大多数或所有小芯片将被个别地配置成用于通过一或多个已建立的网络进行通信。
5.小芯片作为系统的个别模块的配置不同于在单芯片上实施的此类系统,所述单芯片在一个衬底(例如,单个裸片)上含有不同装置块(例如,知识产权(ip)块),例如片上系统(soc),或集成在印刷电路板(pcb)上的多个离散封装装置。一般来说,小芯片提供比离散封装装置更好的性能(例如,更低的功率消耗、减少的时延等),并且小芯片提供比单裸片芯片更大的生产效益。这些生产效益可包含更高的良率或减少的开发成本和时间。
6.小芯片系统可包含例如一或多个应用程序(或处理器)小芯片和一或多个支持小芯片。此处,应用程序小芯片与支持小芯片之间的区别只是对小芯片系统可能的设计场景的参考。因此,举例来说,合成视觉小芯片系统可包含(仅借助于实例)用以产生合成视觉输出的应用程序小芯片,以及例如存储器控制器小芯片、传感器接口小芯片或通信小芯片等支持小芯片。在典型的用例中,合成视觉设计者可设计应用程序小芯片并且从其它方获取支持小芯片。因此,由于避免设计和生产支持小芯片中所包含的功能性,因此减少了设计支出(例如,在时间或复杂性方面)。小芯片还支持原本可能很困难的ip块的紧密集成,例如使用不同的处理技术或使用不同的特征大小(或利用不同的接触技术或间距)制造的ip块。因此,可以模块化方式组装具有不同物理、电气或通信特性的多个ic的组合件或ic组合件,以提供实现所要功能性的组合件。小芯片系统还可促进调适以适应将并入有小芯片系统的不同较大系统的需要。在实例中,ic的组合件或其它组合件可针对具体功能的功率、速度或发热进行优化,如同传感器可能发生的情况一样,相比于在单个裸片上尝试与其它装置集成,所述ic的组合件或其它组合件可更容易地与其它装置集成。另外,通过减小裸片的整体大小,小芯片的良率往往高于更复杂的单裸片装置的良率。


技术实现要素:

7.在一方面,本技术提供一种设备,其包括:存储器阵列;存储器控制器,其耦合到存储器阵列,存储器控制器包括存储用于控制对存储器阵列的一或多个存储器位置的存取的锁定结构的内部存储器;可编程原子单元,其耦合到存储器控制器且包括:指令存储器,其被配置成存储一或多个指令集;以及处理器,处理器被配置成:接收用以执行对应于可编程原子事务的指令集的命令,指令集存储在指令存储器中;在存储器控制器的内部存储器的锁定结构中为存储器阵列的部分设置锁,锁阻止对存储器阵列的部分的后续存取;执行指令集;以及执行用以终止指令集的执行的指令,用以终止指令集的执行的指令包括用以清除锁的操作。
8.在另一方面,本技术提供一种方法,其包括:在耦合到存储器控制器且包含处理器的可编程原子单元处:接收用以执行对应于可编程原子事务的指令集的命令,指令集存储在可编程原子单元的存储器中;在耦合到可编程原子单元的存储器控制器的内部存储器的锁定结构中设置锁,锁阻止对耦合到存储器控制器的存储器的存储器阵列的部分的后续存取;执行指令集;以及执行用以终止指令集的执行的指令,用以终止指令集的执行的指令包括用以清除锁的操作。
9.在另一方面,本技术提供一种存储指令的非暂时性机器可读媒体,所述指令在由机器执行时使得机器进行操作,所述操作包括:接收用以执行对应于可编程原子事务的指令集的命令,指令集存储在可编程原子单元的存储器中;在耦合到可编程原子单元的存储器控制器的锁定结构中设置锁,锁阻止对耦合到存储器控制器的存储器的存储器阵列的部分的后续存取;执行指令集;以及执行用以终止指令集的执行的指令,用以终止指令集的执行的指令包括用以清除锁的操作。
附图说明
10.根据下文给出的详细描述和本公开的各种实施例的附图,将更充分地理解本公开。然而,图式不应视为将本公开限于具体实施例,而是仅用于阐释和理解。
11.图1a和1b说明根据本公开的一些实例的小芯片系统的实例。
12.图2说明根据本公开的一些实例的存储器控制器小芯片的实例的组件。
13.图3说明根据本公开的一些实例的可编程原子单元(pau)的实例中的组件。
14.图4说明根据本公开的一些实例的用于请求特定可编程原子事务的执行的请求包。
15.图5说明根据本公开的一些实例的可编程原子事务响应消息。
16.图6说明根据本公开的一些实例的执行可编程原子终止指令的方法的流程图。
17.图7说明根据本公开的一些实例的实例终止指令。
18.图8是根据本公开的一些实例的存储器控制器的框图。
19.图9是根据本公开的一些实例的机器的实例的框图,本公开的实施例可利用所述机器、在所述机器中或通过所述机器进行操作。
具体实施方式
20.下文所描述的图1提供小芯片系统和在其中操作的组件的实例。如下文所解释,此
类小芯片系统可包含具有执行包括一或多个指令的可编程原子事务的可编程原子单元的存储器控制器。可编程原子单元在可编程原子事务开始执行时设置锁,所述锁提供对由存储器控制器控制的存储器的一或多个存储器位置的排它性存储器存取。举例来说,如果可编程原子事务为使指定存储器位置的值递增的递增操作,则可编程原子单元在指定存储器位置上设置锁,所述锁持续直到可编程原子事务完成为止。此锁由可编程原子单元在可编程原子事务开始执行时设置且必须在可编程原子事务完成时清除。如果锁未被清除,则需要所述具体锁的未来可编程原子事务将不被允许执行。在一些实例中,如本文中所公开,定义终止指令,所述终止指令经执行为可编程原子事务的最后指令,其终止执行线程,等待所有未完成的存储完成,清除可编程原子锁,并且将完成响应发送回发布处理器。这确保在可编程原子事务完成时清除可编程原子锁。
21.在一些实例中,终止指令包含在如由可编程原子事务的创建者供应(例如,由应用程序小芯片上的进程供应)的可编程原子事务指令集中。可编程原子单元可检查以确保终止指令是指令集中的最后指令且拒绝未满足此条件的指令集。在其它实例中,终止指令不包含在指令集中,并且在到达可编程原子事务的最后指令之后或在指令集中的阈值数目个指令之后由可编程原子单元的处理器自动地进行。
22.图1a和1b说明根据实施例的小芯片系统110的实例。图1a是安装在外围板105上的小芯片系统110的表示,所述外围板可例如通过外围组件互连高速(pcie)连接到更广泛的计算机系统。小芯片系统110包含封装衬底115、中介层120和四个小芯片,即应用程序小芯片125、主机接口小芯片135、存储器控制器小芯片140和存储器装置小芯片150。其它系统可包含许多额外小芯片以提供额外功能性,如将从以下论述中显而易见。小芯片系统110的封装以封盖或盖板165说明,但可使用用于小芯片系统的其它封装技术和结构。图1b是为了清楚起见标记小芯片系统中的组件的框图。
23.应用程序小芯片125说明为包含片上网络(noc)130以支持用于小芯片间通信的小芯片网络155。在实例实施例中,noc 130可包含在应用程序小芯片125上。在实例中,可响应于所选择的支持小芯片(例如,小芯片135、140和150)而定义noc 130,因此使得设计者能够为noc 130选择适当数目或小芯片网络连接或交换机。在实例中,noc130可位于单独小芯片上,或甚至位于中介层120内。在如本文中所论述的实例中,noc130实施小芯片协议接口(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模式,aib信道宽度为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信道。在实例中,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位接口标识符。
27.aib将堆叠的aib信道集定义为aib信道列。aib信道列具有一定数目个aib信道,外加辅助信道。辅助信道含有用于aib初始化的信号。列内的所有aib信道(辅助信道除外)具有相同配置(例如,全部为tx、全部为rx,或一半为tx且一半为rx,以及具有相同数目个数据i/o信号)。在实例中,从邻近于aux信道的aib信道开始,以连续增加次序对aib信道进行编号。邻近于aux的aib信道被定义为aib信道零。
28.通常,个别小芯片上的cpi接口可包含串行化-反串行化(serdes)硬件。serdes互连非常适用于需要高速信令以及低信号计数的情境。然而,对于多路复用和解复用、错误检测或校正(例如,使用块级循环冗余校验(crc))、链路级重试或前向错误校正,serdes可能会引起额外的功率消耗和更长的时延。然而,在低时延或能量消耗是超短距离小芯片到小芯片互连的主要关注点时,可利用时钟速率允许以最少时延进行数据传送的并行接口。cpi包含用于使这些超短距离小芯片互连的时延和能量消耗两者最小化的元件。
29.对于流量控制,cpi采用基于信用的技术。例如应用程序小芯片125的接收方向例如存储器控制器小芯片140的发送方提供表示可用缓冲器的信用。在实例中,cpi接收方包含用于给定发射时间单位的每一虚拟信道的缓冲器。因此,如果cpi接收方在时间上支持五个消息和单个虚拟信道,则接收方具有布置成五行的五个缓冲器(例如,每一单位时间一行)。如果支持四个虚拟信道,则接收方具有布置成五行的二十个缓冲器。每一缓冲器保持一个cpi包的有效负载。
30.在发送方向接收方进行发射时,发送方基于发射而使可用信用递减。一旦接收方的所有信用都用完,发送方就停止向接收方发送包。这确保接收方始终具有可用缓冲器以存储发射。
31.在接收方处理接收到的包并且释放缓冲器时,接收方将可用缓冲空间传达回发送方。发送方可接着使用此信用返回以允许发射额外信息。
32.还说明了小芯片网状网络160,其使用直接小芯片到小芯片技术,而不需要noc130。小芯片网状网络160可在cpi或另一小芯片到小芯片协议中实施。小芯片网状网络160通常实现小芯片流水线,其中一个小芯片充当到流水线的接口,而流水线接口中的其它小芯片仅与自身介接。
33.另外,专用装置接口,例如一或多个工业标准存储器接口145(例如,同步存储器接口,例如ddr5、ddr 6),还可用于互连小芯片。小芯片系统或个别小芯片到外部装置(例如较大系统)的连接可通过所要接口(例如,pcie接口)。在实例中,例如可通过主机接口小芯片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可各自实施为具有其它组合逻辑电路系统(例如加法器、移位器、比较器、与门、或门、异或门或其任何合适的组合)或其它逻辑电路系统的状态机。这些组件还可包含一或多个寄存器或缓冲器以存储操作数或其它数据。pau 270可实施为一或多个处理器核心或控制电路系统,以及具有其它组合逻辑电路系统或其它逻辑电路系统的各种状态机,并且还可包含一或多个寄存器、缓冲器或存储器以存储地址、可执行指令、操作数和其它数据,或可实施为处理器。在图3中展示实例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字节的数据的响应。实例原子存储器事务包含提取并与、提取并或、提取并异或、提取并加、提取并减、提取并递增、提取并递减、提取并最小、提取并最大、提取并交换和比较并交换。在各种实例实施例中,支持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包含多线程处理器320,例如基于risc-v isa的多线程处理器,其具有一或多个处理器核心,并且进一步具有用于执行可编程原子事务的扩展式指令集。在具备用于执行可编程原子事务的扩展式指令集时,pau 270的处理器320可体现为一或多个混合线程处理器。在一些实例实施例中,pau 270的处理器320提供桶式轮循瞬时线程切换以维持较高的每时钟指令速率。
52.pau 270可包含本地存储器305,例如静态随机存取存储器(sram)、nand、相变存储器等。本地存储器305可包含寄存器335、指令存储器325和高速缓存330。本地存储器305可通过存储器控制器310由处理器320存取。
53.可编程原子事务可由pau 270进行,所述可编程原子事务涉及对关于所请求数据的可编程原子事务的请求。用户可准备呈一或多个指令形式的编程码以提供此类可编程原子事务。举例来说,可编程原子事务可为相对简单的多周期操作,例如浮点加法,或可为相对复杂的多指令操作,例如布隆过滤器插入(bloom filter insert)。可编程原子事务可与预定原子事务相同或不同,只要它们是由用户而非系统供应商定义的。对于这些操作,高速缓存控制器215可通过(在硬件中)设置危险位来保留高速缓存210中的高速缓存行,使得高速缓存行在转换时无法被另一进程读取。从高速缓存210或裸片外存储器275或280获得数据,并且提供到pau 270以进行所请求可编程原子事务。在原子操作之后,pau 270将所得数据提供到网络通信接口225以直接编码具有所得数据的传出数据包以在小芯片网络285上进行发射。另外,pau 270将所得数据提供到高速缓存控制器215,所述高速缓存控制器还将所得数据写入到高速缓存210。在将所得数据写入到高速缓存210之后,高速缓存控制器215将清除所设置的任何对应危险位。
54.在所选择实例中,针对可编程原子事务所采取的方式是提供多个通用的可编程原子事务请求类型,其可通过小芯片网络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内时减小单元的裸片大小。
55.如上文所提及,在将读取数据写入到高速缓存210之前,存储器危险清除单元260将清除所保留高速缓存行的所设置危险位。因此,在写入合并单元255接收到请求和读取数据时,存储器危险清除单元260可将复位或清除信号发射到高速缓存210以复位所保留高速缓存行的所设置存储器危险位。并且,复位此危险位还将释放涉及所指定(或所保留)高速缓存行的未决读取或写入请求,从而将未决读取或写入请求提供到入站请求多路复用器以供选择和处理。
56.图3说明根据本公开的一些实例的可编程原子单元270的框图。如先前所描述,可编程原子单元可包含由存储在指令存储器325中的自定义且对由存储器控制器管理的存储器进行操作的一或多个原子指令集指定的一或多个可编程原子事务。原子事务的指令可由可驻留在存储器控制器小芯片205、其它小芯片(例如应用程序小芯片125)或小芯片外装置上的可编程原子单元270外部的应用程序和/或进程指定。在一些实例中,可编程原子事务的指令在由进程登记时由操作系统加载。为了执行可编程原子事务,发起进程通过将索引提供到可编程原子单元270的本地存储器中来在可编程原子单元270的本地存储器305上发送包含用以执行所请求可编程原子事务的指令的cpi消息。可编程原子事务可在执行期间利用高速缓存330、寄存器335和本地存储器305的其它存储器。本地存储器控制器310可管理本地存储器305。在一些实例中,可编程原子单元270可不需要本地存储器控制器,因为本地存储器305可为sram。
57.在请求特定可编程原子事务的执行时,请求处理器可发送指示可编程原子单元内的特定存储器位置(例如,本地存储器305内的分区)的cpi请求包,所述cpi请求包含有待执行的先前加载的可编程原子指令、待对其进行操作的由存储器控制器小芯片205管理的存储器(例如,裸片外存储器275、280)的位置,以及一或多个变量参数。处理器(例如,处理器320)接着开始在所指示分区处执行指令。图4说明用于请求特定可编程原子事务的执行的请求包。将字段描述为:
[0058][0059]
可编程原子事务通过执行位于由自定义原子分区索引(capidx)指定的可编程原子事务的指令ram(例如,可编程原子单元270的本地存储器305)中的分区处的第一指令来开始。操作在分区内的第一指令处开始。capidx还可用于索引到含有用于操作的额外信息的控制结构中。额外信息包含用以指示事务是否有效的旗标、用于事务的分区的数目和指令执行限制。分区的数目用于验证正在适当分区内执行操作。如果检测到不当分区中的执行,则检测到异常且终止执行操作。
[0060]
提供对可编程原子事务的响应作为存储器响应。举例来说,图5说明响应消息。响应消息的字段如下:
[0061][0062]
可编程原子单元可在执行可编程原子事务之前设置锁,所述锁提供对由存储器控制器控制的系统存储器(例如,存储器275、280)的地址范围的排它性存储器存取。所述锁可在可编程原子事务开始执行时自动地设置,并且所述锁必须在可编程原子事务完成时清除。如果锁未被清除,则需要所述具体锁定位的未来可编程原子事务将不被允许开始执行。
[0063]
在一些实例中所公开的为定义用于可编程原子单元的指令的方法、系统、计算装置和机器可读媒体,所述指令经执行为最后指令且终止执行线程,等待所有未完成的存储操作完成,清除可编程原子锁,并且将完成响应发送回发布进程。这确保在事务完成时清除可编程原子锁。通过将线程终止与清除锁定位耦合,这确保线程无法在不清除锁的情况下终止。
[0064]
图6说明根据本公开的一些实例的执行可编程原子事务和终止指令的方法600的流程图。在操作605处,可编程原子单元可接收用以执行可编程原子事务的指令。如先前所描述,指令可指定存储在可编程原子单元的存储器内的定义针对特定可编程原子事务进行的操作的多个可编程原子事务中的一个。指令可基于如先前所描述的存储器分区标识符而指定特定可编程原子事务。在操作610处,可设置与具备可编程原子事务请求的存储器地址相关联的锁,存储器(例如,裸片外存储器275、280)由存储器控制器控制。在一些实例中,锁可用于一或多个存储器位置,例如,由基础地址指定的存储器位置的范围。
[0065]
在操作612处,可编程原子单元可进行可编程原子事务的指令。此类指令可包含从由可编程原子单元270为其部分的存储器控制器控制的存储器(例如,裸片外存储器275、280)读取值。此类指令可对从存储器读取的值进行操作,并且可将修改后的值存储回存储器(例如,裸片外存储器275、280)。此类操作提供对调用pau的进程的减少的时延。在操作615处,可执行可编程原子事务的最后可编程原子指令。指令可为终止指令。指令可在操作620处等待未完成的存储操作,在操作625处清除锁,并且在操作630处发送响应。响应展示于图5中且可包含状态码、操作的结果等。
[0066]
在一些实例中,锁可为寄存器(例如,存储在寄存器335中的寄存器)中的位、存储在存储器位置上(例如,在本地存储器305、裸片外存储器275、280中)的值等。锁可为更复杂的且可存储关于何时设置锁、设置锁的调用进程等的信息。在一些实例中,可通过将存储器
地址提交到索引到链表的表中的散列函数来设置和清除锁。通过将指示当前具有锁的可编程原子的结构添加到链表来设置锁。
[0067]
图7说明根据本公开的一些实例的实例终止指令700。图7中所展示的emd原子返回(ear)指令包含以下变量参数:
[0068][0069]
rc2后缀选项如下:
[0070]
rc2编码后缀变量参数计数0.r0或无后缀01.r112.r22
[0071]
实例组合件将如下:
[0072]
实例组合件注解ear.r0#0返回变量参数ear.r1 rs1rs1中的#1返回变量参数ear.r2 rs1,rs2rs1、rs2中的#2返回变量参数
[0073]
图8说明根据本公开的一些实例的存储器控制器800的示意图。图8为存储器控制器205的另一实例且展示与图2中所展示的组件相同的组件中的许多者。举例来说,高速缓存820和885是高速缓存210的实例;dram 845是裸片外存储器275-280的实例;原子/写入合并880和可编程原子单元895可为原子和合并单元250的实例;图8的其它组件可为例如裸片外存储器控制器220和高速缓存控制器215的图2的其它组件的实例。noc请求队列805从片上网络接收请求且提供少量的列队。原子请求队列810从可编程原子单元接收请求且提供少量的列队。入站请求多路复用器(irm)815在入站存储器请求源之间进行选择。三个源按优先级次序是:存储器危险请求、原子请求和入站noc请求。高速缓存(读取)802和高速缓存(写入)885是sram数据高速缓存。图展示作为两个单独块的高速缓存(802和885),一个提供读取存取,另一个提供写入存取。延迟块825提供一或多个流水线级以模拟用于sram高速缓存读取操作的延迟。高速缓存未命中需要对存储器的存取以将所要数据引入到高速缓存中。在此dram存取时间期间,存储器行不可用于其它请求。存储器危险块(设置块830和清除块890)维持指示哪些存储器行不可用于存取的危险位的表。尝试存取具有危险的行的入站请求由存储器危险块保持直到清除危险为止。一旦清除危险,就通过入站请求多路复用器重新发送请求。存储器行标签地址经散列处理为危险位索引。可挑选危险位的数目以将危险冲突概率设置到足够低的水平。入站dram控制多路复用器(idcm)835从入站noc请求和高速缓存逐出请求进行选择。组请求队列840-每一单独管理的dram组具有专用的组请求队列以保持请求,直到它们可在相关联dram组上调度为止。
[0074]
调度器842跨组请求队列840进行选择以挑选对可用dram组的请求。dram 845表示
一或多个外部dram装置。请求命中数据队列850保持来自高速缓存命中的请求数据直到经选择为止。请求未命中数据队列855保持从dram读取的数据直到经选择为止。未命中请求队列860用于保持用于高速缓存未命中的请求包信息直到请求经选择为止。命中请求队列865保持用于高速缓存命中的请求包信息直到经选择为止。数据选择多路复用器(dsm)870在dram读取数据与高速缓存命中读取数据之间进行选择。将所选择数据写入到sram高速缓存。请求选择多路复用器(rsm)875在命中请求队列860与未命中请求队列865之间进行选择。
[0075]
原子/写入合并880合并请求数据和dram读取数据,或者,如果请求为内置原子,则存储器数据和请求数据用作用于原子操作的输入。高速缓存(写入)块885表示用于sram高速缓存的写入端口。来自noc写入请求的数据和来自dram读取操作的数据写入到sram高速缓存。存储器危险(清除)块890表示针对存储器危险结构的危险清除操作。清除危险可释放未决noc请求且将其发送到入站请求多路复用器。可编程原子单元895处理可编程原子事务。noc出站响应多路复用器(orm)897在存储器控制器响应与自定义原子单元响应之间进行选择且将选择发送到noc。
[0076]
图9说明实例机器900的框图,可利用所述机器、在所述机器中或通过所述机器实施本文中所论述的技术(例如,方法)中的任一或多种。如本文中所描述,实例可包含机器900中的逻辑或多个组件或机构,或可由其操作。电路系统(例如,处理电路系统)是在机器900的有形实体中实施的电路集合,其包含硬件(例如,简单电路、门、逻辑等)。电路系统成员资格可随时间推移而变得灵活。电路系统包含可在操作时单独或以组合形式进行指定操作的部件。在实例中,电路系统的硬件可被永恒地设计成实行具体操作(例如,硬连线)。在实例中,电路系统的硬件可包含可变地连接的物理组件(例如,执行单元、晶体管、简单电路等),所述物理组件包含以物理方式修改(例如,不变集中式粒子的磁性、电气可移动放置等)以编码具体操作的指令的机器可读媒体。在连接物理组件时,硬件构成的基础电气性质例如从绝缘体改变为导体或反之亦然。指令使得嵌入式硬件(例如,执行单元或加载机构)能够经由可变连接产生硬件中的电路系统的部件以在处于操作中时实行具体操作的部分。因此,在实例中,机器可读媒体元件是电路系统的部分或在装置操作时通信地耦合到电路系统的其它组件。在实例中,物理组件中的任一个可在多于一个电路系统中的多于一个部件中使用。举例来说,在操作下,执行单元可在一个时间点在第一电路系统的第一电路中使用,并且由第一电路系统中的第二电路重新使用,或在不同时间由第二电路系统中的第三电路重新使用。下面是关于机器900的这些组件的额外实例。
[0077]
在替代实施例中,机器900可作为独立装置而操作,或可连接(例如,联网)到其它机器。在联网部署中,机器900可在服务器-客户端网络环境中作为服务器机器、客户端机器或两者操作。在实例中,机器900可充当对等式(p2p)(或其它分布式)网络环境中的对等式机器。机器900可为个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、移动电话、网络设备、网络路由器、交换机或桥接器,或能够(依序或以其它方式)执行指定将由所述机器采取的动作的指令的任何机器。此外,虽然仅说明单个机器,但术语“机器”也应被视为包含个别地或共同地执行指令集(或多个指令集)以进行本文中所论述的方法中的任一或多种(例如,云计算、软件即服务(saas)、其它计算机集群配置)的任何机器集合。
[0078]
机器(例如,计算机系统)900可包含硬件处理器902(例如,中央处理单元(cpu)、图
形处理单元(gpu)、硬件处理器核心或其任何组合)、主存储器904、静态存储器(例如,固件、微码的存储器或存储装置、基本输入输出(bios)、统一可扩展固件接口(uefi)等)906,以及大容量存储装置908(例如,硬盘驱动器、磁带机、快闪存储装置或其它块装置),其中的一些或全部可经由互联件(例如,总线)930彼此通信。机器900可进一步包含显示单元910、字母数字输入装置912(例如,键盘)和用户接口(ui)导航装置914(例如,鼠标)。在实例中,显示单元910、输入装置912和ui导航装置914可为触摸屏显示器。机器900可另外包含大容量存储装置(例如,驱动单元)908、信号产生装置918(例如,扬声器)、网络接口装置920和一或多个传感器916,例如全球定位系统(gps)传感器、指南针、加速度计或其它传感器。机器900可包含输出控制器928,例如串行(例如,通用串行总线(usb)、并行或其它有线或无线(例如,红外(ir)、近场通信(nfc)等)连接,以与一或多个外围装置(例如,打印机、读卡器等)通信或控制所述一或多个外围装置。
[0079]
处理器902、主存储器904、静态存储器906或大容量存储装置908的寄存器可为或包含其上存储有一或多组数据结构或指令924(例如,软件)的机器可读媒体922,所述数据结构或指令体现本文中所描述的技术或功能中的任一或多种,或被所述技术或功能利用。指令924还可在其由机器900执行期间完全或至少部分地驻留在处理器902、主存储器904、静态存储器906或大容量存储装置908的寄存器中的任一个内。在实例中,硬件处理器902、主存储器904、静态存储器906或大容量存储装置908中的一个或任何组合可构成机器可读媒体922。虽然机器可读媒体922说明为单个媒体,但术语“机器可读媒体”可包含被配置成存储一或多个指令924的单个媒体或多个媒体(例如,集中式或分布式数据库,或相关联的高速缓存和服务器)。
[0080]
术语“机器可读媒体”可包含能够存储、编码或携带用于由机器900执行且使机器900进行本公开的技术中的任何一或多种的指令,或能够存储、编码或携带由此类指令使用或与此类指令相关联的数据结构的任何媒体。非限制性机器可读媒体实例可包含固态存储器、光学媒体、磁性媒体和信号(例如,射频信号、其它基于光子的信号、声音信号等)。在实例中,非暂时性机器可读媒体包括具有多个粒子的机器可读媒体,所述粒子具有不变式(例如,静止)质量,并且因此是物质的组成。因此,非暂时性机器可读媒体是不包含暂时性传播信号的机器可读媒体。非暂时性机器可读媒体的具体实例可包含:非易失性存储器,例如半导体存储器装置(例如,电可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom))和快闪存储器装置;磁盘,例如内部硬盘和可装卸磁盘;磁光盘;以及cd-rom和dvd-rom磁盘。
[0081]
在实例中,存储或以其它方式提供在机器可读媒体922上的信息可表示指令924,例如指令924自身或可从其导出指令924的格式。可从其导出指令924的此格式可包含源码、已编码指令(例如,呈压缩或加密形式)、已封装指令(例如,拆分成多个封装)等。表示机器可读媒体922中的指令924的信息可由处理电路系统处理到指令中以实施本文中所论述的操作中的任一个。举例来说,从信息(例如,通过处理电路系统处理)导出指令924可包含:编译(例如,从源码、目标码等)、解译、加载、组织(例如,动态地或静态地链接)、编码、解码、加密、解密、封装、解封装或以其它方式将信息操纵到指令924中。
[0082]
在实例中,指令924的导出可包含(例如,通过处理电路系统)对信息的汇编、编译或解译以从由机器可读媒体922提供的一些中间或预处理格式创建指令924。当在多个部分
中提供信息时,可组合、解封装和修改所述信息以创建指令924。举例来说,信息可在一个或数个远程服务器上的多个压缩源码封装(或目标码,或二进制可执行码等)中。源码封装可在经由网络传输时被加密,并且在必要时被解密、解压缩、汇编(例如,链接),并且在本地机器处被编译或解译(例如,到可独立执行的库中等),并且由本地机器执行。
[0083]
可进一步利用多个传送协议中的任一个(例如,帧中继、因特网协议(ip)、发射控制协议(tcp)、用户数据报协议(udp)、超文本传送协议(http)等)经由网络接口装置920使用发射媒体在通信网络926上发射或接收指令924。实例通信网络可包含局域网(lan)、广域网(wan)、分组数据网络(例如,因特网)、移动电话网络(例如,蜂窝式网络)、普通老式电话(pots)网络和无线数据网络(例如,被称为的电气电子工程师学会(ieee)802.11标准系列、被称为的ieee 802.16标准系列)、ieee 802.15.4标准系列、对等式(p2p)网络等等。在实例中,网络接口装置920可包含一或多个物理插口(例如,以太网、同轴或电话插口)或者一或多个天线以连接到通信网络926。在实例中,网络接口装置920可包含多个天线以使用单输入多输出(simo)、多输入多输出(mimo)或多输入单输出(miso)技术中的至少一种进行无线通信。术语“发射媒体”应被视为包含能够存储、编码或携带指令以用于由机器900执行的任何无形媒体,并且包含数字或模拟通信信号或用以促进此类软件的通信的其它无形媒体。发射媒体是机器可读媒体。为了更好地说明本文中所描述的方法和设备,非限制性实例实施例集在下文阐述为带编号的实例。
[0084]
其它注释和实例
[0085]
实施例1是一种设备,其包括:存储器阵列;存储器控制器,其耦合到所述存储器阵列,所述存储器控制器包括存储用于控制对所述存储器阵列的一或多个存储器位置的存取的锁定结构的内部存储器;可编程原子单元,其耦合到所述存储器控制器且包括:指令存储器,其被配置成存储一或多个指令集;以及处理器,所述处理器被配置成:接收用以执行对应于可编程原子事务的指令集的命令,所述指令集存储在所述指令存储器中;在所述存储器控制器的所述内部存储器的所述锁定结构中为所述存储器阵列的部分设置锁,所述锁阻止对所述存储器阵列的所述部分的后续存取;执行所述指令集;以及执行用以终止所述指令集的所述执行的指令,用以终止所述指令集的所述执行的所述指令包括用以清除所述锁的操作。
[0086]
在实例2中,根据实例1所述的标的物包含,其中用以终止所述指令集的所述执行的所述指令进一步包括用以将响应发送到发送用以执行所述指令集的所述命令的进程的操作。
[0087]
在实例3中,根据实例1到2所述的标的物包含,其中用以终止所述指令集的所述执行的所述指令进一步包括用以在清除所述锁之前等待未完成的存储操作完成的操作。
[0088]
在实例4中,根据实例1到3所述的标的物包含,其中用以终止所述指令集的所述执行的所述指令进一步包括:用以在清除所述锁之前等待未完成的存储操作完成的操作;以及用以在进行用以等待未完成的存储操作完成的所述操作和用以清除所述锁的所述操作之后将响应发送到发送用以执行所述指令集的所述指令的进程的操作。
[0089]
在实例5中,根据实例4所述的标的物包含,其中所述响应包括存储在所述可编程原子单元的寄存器中的一或多个值。
[0090]
在实例6中,根据实例1到5所述的标的物包含,其中所述锁是所述可编程原子单元
的寄存器中的位图。
[0091]
在实例7中,根据实例1到6所述的标的物包含,其中所述存储器阵列包括一或多个随机存取存储器(ram)组。
[0092]
实例8是一种方法,其包括:在耦合到存储器控制器且包含处理器的可编程原子单元处:接收用以执行对应于可编程原子事务的指令集的命令,所述指令集存储在所述可编程原子单元的存储器中;在耦合到所述可编程原子单元的存储器控制器的内部存储器的锁定结构中设置锁,所述锁阻止对耦合到所述存储器控制器的存储器的存储器阵列的部分的后续存取;执行所述指令集;以及执行用以终止所述指令集的所述执行的指令,用以终止所述指令集的所述执行的所述指令包括用以清除所述锁的操作。
[0093]
在实例9中,根据实例8所述的标的物包含,其中用以终止所述指令集的所述执行的所述指令进一步包括用以将响应发送到发送用以执行所述指令集的所述命令的进程的操作。
[0094]
在实例10中,根据实例8到9所述的标的物包含,其中用以终止所述指令集的所述执行的所述指令进一步包括用以在清除所述锁之前等待未完成的存储操作完成的操作。
[0095]
在实例11中,根据实例8到10所述的标的物包含,其中用以终止所述指令集的所述执行的所述指令进一步包括:用以在清除所述锁之前等待未完成的存储操作完成的操作;以及用以在进行用以等待未完成的存储操作完成的所述操作和用以清除所述锁的所述操作之后将响应发送到发送用以执行所述指令集的所述指令的进程的操作。
[0096]
在实例12中,根据实例11所述的标的物包含,其中所述响应包括存储在所述可编程原子单元的寄存器中的一或多个值。
[0097]
在实例13中,根据实例8到12所述的标的物包含,其中所述锁是所述可编程原子单元的寄存器中的位图。
[0098]
在实例14中,根据实例8到13所述的标的物包含,其中所述存储器阵列包括一或多个随机存取存储器(ram)组。
[0099]
实例15是一种存储指令的非暂时性机器可读媒体,所述指令在由机器执行时使得所述机器进行操作,所述操作包括:接收用以执行对应于可编程原子事务的指令集的命令,所述指令集存储在可编程原子单元的存储器中;在耦合到所述可编程原子单元的存储器控制器的锁定结构中设置锁,所述锁阻止对耦合到所述存储器控制器的存储器的存储器阵列的部分的后续存取;执行所述指令集;以及执行用以终止所述指令集的所述执行的指令,用以终止所述指令集的所述执行的所述指令包括用以清除所述锁的操作。
[0100]
在实例16中,根据实例15所述的标的物包含,其中用以终止所述指令集的所述执行的所述指令进一步包括用以将响应发送到发送用以执行所述指令集的所述命令的进程的操作。
[0101]
在实例17中,根据实例15到16所述的标的物包含,其中用以终止所述指令集的所述执行的所述指令进一步包括用以在清除所述锁之前等待未完成的存储操作完成的操作。
[0102]
在实例18中,根据实例15到17所述的标的物包含,其中用以终止所述指令集的所述执行的所述指令进一步包括:用以在清除所述锁之前等待未完成的存储操作完成的操作;以及用以在进行用以等待未完成的存储操作完成的所述操作和用以清除所述锁的所述操作之后将响应发送到发送用以执行所述指令集的所述指令的进程的操作。
[0103]
在实例19中,根据实例18所述的标的物包含,其中所述响应包括存储在所述可编程原子单元的寄存器中的一或多个值。
[0104]
在实例20中,根据实例15到19所述的标的物包含,其中所述锁是所述可编程原子单元的寄存器中的位图。
[0105]
在实例21中,根据实例15到20所述的标的物包含,其中所述存储器阵列包括一或多个随机存取存储器(ram)组。
[0106]
实例22是一种设备,其包括:用于接收用以执行对应于可编程原子事务的指令集的命令的构件,所述指令集存储在所述可编程原子单元的存储器中;用于在耦合到所述可编程原子单元的存储器控制器的锁定结构中设置锁的构件,所述锁阻止对耦合到所述存储器控制器的存储器的存储器阵列的部分的后续存取;用于执行所述指令集的构件;以及用于执行用以终止所述指令集的所述执行的指令的构件,用以终止所述指令集的所述执行的所述指令包括用以清除所述锁的操作。
[0107]
在实例23中,根据实例22所述的标的物包含,其中用以终止所述指令集的所述执行的所述指令进一步包括用以将响应发送到发送用以执行所述指令集的所述命令的进程的操作。
[0108]
在实例24中,根据实例22到23所述的标的物包含,其中用以终止所述指令集的所述执行的所述指令进一步包括用以在清除所述锁之前等待未完成的存储操作完成的操作。
[0109]
在实例25中,根据实例22到24所述的标的物包含,其中用以终止所述指令集的所述执行的所述指令进一步包括:用以在清除所述锁之前等待未完成的存储操作完成的操作;以及用以在进行用以等待未完成的存储操作完成的所述操作和用以清除所述锁的所述操作之后将响应发送到发送用以执行所述指令集的所述指令的进程的操作。
[0110]
在实例26中,根据实例25所述的标的物包含,其中所述响应包括存储在所述可编程原子单元的寄存器中的一或多个值。
[0111]
在实例27中,根据实例22到26所述的标的物包含,其中所述锁是所述可编程原子单元的寄存器中的位图。
[0112]
在实例28中,根据实例22到27所述的标的物包含,其中所述存储器阵列包括一或多个随机存取存储器(ram)组。
[0113]
实例29是包含指令的至少一个机器可读媒体,所述指令在由处理电路系统执行时使得所述处理电路系统进行操作以实施实例1到28中的任一个。
[0114]
实例30是一种包括用以实施实例1到28中的任一个的构件的设备。
[0115]
实例31是用以实施实例1到28中的任一个的系统。
[0116]
实例32是一种用以实施实例1到28中的任一个的方法。
[0117]
以上详细描述包含对附图的参考,所述附图形成详细描述的部分。所述图式借助于说明展示其中可实践本发明的具体实施例。这些实施例在本文中也被称为“实例”。此类实例可包含除了所展示或所描述的那些元件之外的元件。然而,本发明人还考虑其中仅提供所展示或所描述的那些元件的实例。此外,本发明人还考虑使用关于特定实例(或其一或多个方面)或关于本文中所展示或所描述的其它实例(或其一或多个方面)而展示或描述的那些元件的任何组合或排列的实例(或其一或多个方面)。
[0118]
在本文件中,如专利文件中常见,使用术语“一”以包含一个或多于一个,这与“至
少一个”或“一或多个”的任何其它情形或使用无关。在此文件中,除非另有指示,否则术语“或”用于指代非排它性的或,使得“a或b”可包含“a而非b”、“b而非a”以及“a和b”。在所附权利要求书中,术语“包含”和“其中(in which)”用作相应术语“包括”和“其中(wherein)”的通俗等效术语。此外,在所附权利要求书中,术语“包含”和“包括”是开放的,也就是说,包含除了权利要求项中列在这种术语之后的那些元件之外的元件的系统、装置、物件或进程仍被认为处于所述权利要求项的范围内。此外,在以下权利要求书中,术语“第一”、“第二”和“第三”等仅用作标签,并且并不意欲对其对象施加数字要求。
[0119]
以上描述意欲为说明性的而非限制性的。举例来说,上文所描述的实例(或其一或多个方面)可彼此组合使用。例如所属领域的普通技术人员在查阅以上描述后可使用其它实施例。应理解,所述实施例将不会用于解释或限制权利要求的范围或含义。并且,在以上详细描述中,可将各种特征分组在一起以简化本公开。不应将这一情况解释为意欲未主张的公开特征对于任何权利要求来说是必需的。而是,本发明标的物可在于比特定所公开实施例的所有特征要少的特征。因此,特此将所附权利要求书并入到详细描述中,其中每一权利要求作为单独实施例而独立存在,并且经考虑此类实施例可以各种组合或排列彼此组合。本发明的范围应通过参考所附权利要求书以及此类权利要求书所授予的等效物的完整范围来确定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献