管理存储器控制器中的危险的制作方法

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

管理存储器控制器中的危险
1.优先权申请案
2.本技术案主张在2020年10月20日提交的美国申请案第17/075,365号的优先权益,所述美国申请案以全文引用的方式并入本文中。
3.关于政府支持的声明
4.本发明是在美国政府的支持下根据darpa授予的第hr00111890003号协议完成的。美国政府对这项发明拥有某些权利。


背景技术:

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

技术特征:
1.一种设备,其包括:接口,其能够耦合到主机或小芯片系统中的小芯片,且配置成接收包含基本存储器地址的存储器请求;转换电路系统,其配置成从所述基本存储器地址计算索引;硬件,其用以实施锁定表数据结构,所述锁定表数据结构配置成使用所述索引来执行查找以找到锁定;存储器,其用以实施配置成响应于找到所述锁定而存储所述存储器请求的缓冲器,所述缓冲器为若干缓冲器中的一个,所述缓冲器为所述若干缓冲器中的对应于所述锁定的唯一一个,所述若干缓冲器中的其它缓冲器分别对应于其它可能的锁定;仲裁器,其配置成响应于清除所述锁定的信号而从所述缓冲器去除所述存储器请求;及处理管线,其配置成在从所述缓冲器去除之后执行所述存储器请求。2.根据权利要求1所述的设备,其中为了从所述基本存储器地址计算所述索引,所述转换电路系统配置成对所述基本存储器地址进行散列。3.根据权利要求2所述的设备,其中为了使用所述索引执行所述查找,所述锁定表数据结构传回阵列中的对应于所述索引的条目。4.根据权利要求2所述的设备,其中所述锁定表数据结构具有比所述设备的可寻址空间中的基本存储器地址少的条目。5.根据权利要求2所述的设备,其中所述锁定由单个位表示。6.根据权利要求1所述的设备,其中为了从所述缓冲器去除所述存储器请求,所述仲裁器配置成从所述若干缓冲器中的多个缓冲器选择所述缓冲器。7.根据权利要求6所述的设备,其中将所述仲裁器的选择放置于队列中。8.根据权利要求7所述的设备,其中响应于不存在不具有锁定的存储器请求而从所述队列去除所述存储器请求。9.根据权利要求1所述的设备,其中为了执行所述存储器请求,所述处理管线配置成设定所述锁定。10.根据权利要求1所述的设备,其中所述设备为小芯片系统中的小芯片。11.一种方法,其包括:在存储器控制器处接收包含基本存储器地址的存储器请求;从所述基本存储器地址计算索引;使用所述索引执行查找以找到锁定;响应于找到所述锁定而将所述存储器请求存储在缓冲器中,所述缓冲器为若干缓冲器中的一个,所述缓冲器为所述若干缓冲器中的对应于所述锁定的唯一一个,所述若干缓冲器中的其它缓冲器分别对应于其它可能的锁定;响应于清除所述锁定的信号而从所述缓冲器去除所述存储器请求;及在从所述缓冲器去除之后执行所述存储器请求。12.根据权利要求11所述的方法,其中从所述基本存储器地址计算所述索引包含对所述基本存储器地址进行散列。13.根据权利要求12所述的方法,其中使用所述索引执行所述查找包含获得阵列中的
对应于所述索引的条目。14.根据权利要求12所述的方法,其中对具有比所述存储器控制器的可寻址空间中的基本存储器地址少的条目的数据结构执行所述查找。15.根据权利要求12所述的方法,其中所述锁定由单个位表示。16.根据权利要求11所述的方法,其中从所述缓冲器去除所述存储器请求包含由仲裁器从所述若干缓冲器中的多个缓冲器选择所述缓冲器。17.根据权利要求16所述的方法,其中将所述仲裁器的选择放置于队列中。18.根据权利要求17所述的方法,其中响应于不存在不具有锁定的存储器请求而从所述队列去除所述存储器请求。19.根据权利要求11所述的方法,其中执行所述存储器请求包含设定所述锁定。20.根据权利要求11所述的方法,其中所述存储器控制器为小芯片系统中的小芯片。21.一种包含指令的非暂时性机器可读媒体,所述指令在由存储器控制器的电路系统执行时致使所述存储器控制器执行以下操作:接收包含基本存储器地址的存储器请求;从所述基本存储器地址计算索引;使用所述索引执行查找以找到锁定;响应于找到所述锁定而将所述存储器请求存储在缓冲器中,所述缓冲器为若干缓冲器中的一个,所述缓冲器为所述若干缓冲器中的对应于所述锁定的唯一一个,所述若干缓冲器中的其它缓冲器分别对应于其它可能的锁定;响应于清除所述锁定的信号而从所述缓冲器去除所述存储器请求;及在从所述缓冲器去除之后执行所述存储器请求。22.根据权利要求21所述的媒体,其中从所述基本存储器地址计算所述索引包含对所述基本存储器地址进行散列。23.根据权利要求22所述的媒体,其中使用所述索引执行所述查找包含获得阵列中的对应于所述索引的条目。24.根据权利要求22所述的媒体,其中对具有比所述存储器控制器的可寻址空间中的基本存储器地址少的条目的数据结构执行所述查找。25.根据权利要求22所述的媒体,其中所述锁定由单个位表示。26.根据权利要求21所述的媒体,其中从所述缓冲器去除所述存储器请求包含由仲裁器从所述若干缓冲器中的多个缓冲器选择所述缓冲器。27.根据权利要求26所述的媒体,其中将所述仲裁器的选择放置于队列中。28.根据权利要求27所述的媒体,其中响应于不存在不具有锁定的存储器请求而从所述队列去除所述存储器请求。29.根据权利要求21所述的媒体,其中执行所述存储器请求包含设定所述锁定。30.根据权利要求21所述的媒体,其中所述存储器控制器为小芯片系统中的小芯片。

技术总结
本文中描述用于管理存储器控制器中的危险的装置和技术。所述存储器控制器可接收包含基本存储器地址的存储器请求。可从所述基本存储器地址计算索引,且可使用所述索引执行查找以找到锁定。当找到所述锁定时,所述存储器控制器可将所述存储器请求存储在对应于所述锁定的缓冲器中。响应于清除所述锁定的信号,所述存储器控制器从所述缓冲器去除所述存储器请求且执行所述存储器请求。请求且执行所述存储器请求。请求且执行所述存储器请求。


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

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

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

分享:

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

相关推荐