CN114385545A - 针对可编程原子操作的存储器存取边界检查 - Google Patents
针对可编程原子操作的存储器存取边界检查 Download PDFInfo
- Publication number
- CN114385545A CN114385545A CN202111208723.7A CN202111208723A CN114385545A CN 114385545 A CN114385545 A CN 114385545A CN 202111208723 A CN202111208723 A CN 202111208723A CN 114385545 A CN114385545 A CN 114385545A
- Authority
- CN
- China
- Prior art keywords
- memory
- request
- chiplet
- contiguous
- memory address
- 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.)
- Granted
Links
Images
Classifications
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/781—On-chip cache; Off-chip memory
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
-
- 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1012—Design facilitation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本文中描述用于针对可编程原子操作的存储器存取边界检查的装置和技术。处理器可以基本存储器地址执行可编程原子操作。所述处理器可获得对应于所述可编程原子操作的存储器交错大小指示符,且从所述基本存储器地址和所述存储器交错大小计算邻接存储器地址范围。所述处理器可接着检测到来自所述可编程原子操作的存储器请求在所述邻接存储器地址范围外部,且当其在所述邻接存储器地址范围外部时拒绝所述存储器请求,否则允许所述存储器请求。
Description
关于政府支持的声明
本发明是在美国政府的支持下根据DARPA授予的第HR00111890003号协议完成的。美国政府对这项发明拥有某些权利。
技术领域
本申请涉及针对可编程原子操作的存储器存取边界检查。
背景技术
小芯片是一种用于集成各种处理功能的新兴技术。通常,小芯片系统由离散模块(各自被称为“小芯片”)构成,所述离散模块集成在中介层上,并且在许多实例中视需要经由一或多个已建立的网络互连,以向系统提供所要功能性。中介层和所包含的小芯片可封装在一起,以便于与较大系统的其它组件互连。每一小芯片可包含一或多个个别集成电路(IC)或“芯片”,其可能与离散电路组件组合,且共同耦合到相应衬底以便于附接到中介层。系统中的大多数或所有小芯片将个别地配置以用于经由所述一或多个已建立的网络进行通信。
小芯片作为系统的个别模块的配置不同于此系统在单芯片上实施,所述芯片在一个衬底(例如,单个裸片)上含有不同装置块(例如,知识产权(IP)块),例如片上系统(SoC),或集成在印刷电路板(PCB)上的多个离散封装装置。一般来说,小芯片提供比离散封装装置更好的性能(例如,较低的功耗、缩短的时延等),且小芯片提供比单裸片芯片更大的生产效益。这些生产效益可包含较高的良率或减少的开发成本和时间。
小芯片系统可包含例如一或多个应用(或处理器)小芯片和一或多个支持小芯片。此处,应用小芯片与支持小芯片之间的区别只是对小芯片系统可能的设计情境的参考。因此,举例来说,合成视觉小芯片系统可包含(仅借助于实例)用以产生合成视觉输出的应用小芯片,以及例如存储器控制器小芯片、传感器接口小芯片或通信小芯片等支持小芯片。在典型的用例中,合成视觉设计者可设计应用小芯片并从其它方获取支持小芯片。因此,由于避免设计和生产支持小芯片中所体现的功能性,因此减少了设计支出(例如,在时间或复杂性方面)。小芯片还支持原本可能很困难的IP块紧密集成,例如使用不同的处理技术或使用不同的特征大小(或利用不同的接触技术或间距)制造的IP块。因此,可以模块化方式组装具有不同物理、电气或通信特性的多个IC或IC组合件,以提供实现所要功能性的组合件。小芯片系统还可促进调适以适应将并入有小芯片系统的不同较大系统的需求。在一实例中,IC或其它组合件可针对特定功能的功率、速度或发热进行优化,如同传感器可能发生的情况一样,相比于在单个裸片上尝试与其它装置集成,所述IC或其它组件可更容易地与其它装置集成。此外,通过减小裸片的整体大小,小芯片的良率往往高于更复杂的单裸片装置的良率。
发明内容
在一方面中,本申请提供一种设备,所述设备包括:接口,其被配置成获得对应于可编程原子操作的存储器交错大小指示符,所述接口当在操作中时可耦合到存储器控制器、小芯片系统内的小芯片或主机装置;处理器,其当在操作中时耦合到所述接口,被配置成:执行可编程原子操作,所述可编程原子操作以基本存储器地址执行;从所述基本存储器地址和所述存储器交错大小计算邻接存储器地址范围;检测到来自所述可编程原子操作的存储器请求在所述邻接存储器地址范围外部;以及基于在所述邻接存储器地址范围外部而拒绝所述存储器请求。
在另一方面中,本申请进一步提供一种方法,所述方法包括:通过存储器控制器的可编程原子单元(PAU)执行可编程原子操作,所述可编程原子操作以基本存储器地址执行;获得对应于所述可编程原子操作的存储器交错大小指示符;从所述基本存储器地址和所述存储器交错大小计算邻接存储器地址范围;检测到来自所述可编程原子操作的存储器请求在所述邻接存储器地址范围外部;以及基于在所述邻接存储器地址范围外部而拒绝所述存储器请求。
在又一方面中,本申请进一步提供一种存储指令的机器可读介质,所述指令在由处理器执行时致使所述处理器执行包括以下的操作:执行可编程原子操作,所述可编程原子操作以基本存储器地址执行;获得对应于所述可编程原子操作的存储器交错大小指示符;从所述基本存储器地址和所述存储器交错大小计算邻接存储器地址范围;检测到来自所述可编程原子操作的存储器请求在所述邻接存储器地址范围外部;以及基于在所述邻接存储器地址范围外部而拒绝所述存储器请求。
附图说明
根据下文给出的详细描述和本公开的各个实施例的附图,将更充分地理解本公开。然而,图式不应视为将本公开限于特定实施例,而是仅用于阐释和理解。
图1A和1B示出根据实施例的小芯片系统的实例。
图2示出根据实施例的存储器控制器小芯片的实例的组件。
图3示出根据实施例的存储器控制器小芯片的实例的组件。
图4示出根据实施例的可编程原子单元(PAU)的实例中的组件。
图5示出根据实施例的小芯片协议接口请求包。
图6示出根据实施例的小芯片协议接口响应包。
图7是根据实施例的用于针对可编程原子操作的存储器存取边界检查的方法的实例的流程图。
图8是机器的实例的框图,本公开的实施例可利用所述机器、在所述机器中或通过所述机器进行操作。
具体实施方式
下文所描述的图1提供小芯片系统和在其中操作的组件的实例。所示出的小芯片系统包含存储器控制器。小芯片系统包含用于在小芯片之间通信的基于包的网络。存储器控制器包含具有处理器的可编程原子单元(PAU),所述处理器用以响应于对可编程原子操作(PAO)的存储器请求而执行自定义程序,即所述可编程原子操作。下文关于图2和4描述关于PAU的额外细节。
通常,PAU实施方案将较小且有效,因为它们包含在存储器控制器中且既定在存储器的若干部分上执行通常较小的操作。相应地,PAU往往不会将所有组件分派给现代计算。举例来说,PAU将往往在物理存储器地址上操作且省略由存储器管理单元(MMU)支持的虚拟存储器特征,正如传统计算机架构中常见的。
可能由于省略例如由MMU提供的存储器管理特征而在PAU中出现问题。确切地说,由于在PAU上执行PAO而出现的边界检查存储器地址请求。此边界检查可通过防止一个程序无意中或有意地破坏另一执行的程序的工作存储器而提供若干益处。因此,进程存储器(例如,实施于虚拟存储器中)和用以支持存储器存取约束的硬件可防止不良运行的或恶意的程序实行系统的其它进程。PAU中这些设施的不存在可能导致数据损坏或威胁PAU的安全操作。
为了解决由于在PAU中执行PAO导致的边界检查存储器请求的问题,依据用于调用PAO的基本存储器地址计算PAO被允许存取的PAU的存储器控制器管理的存储器的邻接区。因此,PAU内执行的PAO可仅存取由所述存储器控制器管理的存储器,且在应用中虚拟地邻接并在存储器控制器内物理地邻接。此限制确保PAO仅存取发布进程(例如,程序或应用)所拥有的存储器。
通常,进程的存储器跨存储器控制器交错以使热点最小化。灵活的交错大小可用于使PAO能够存取大数据结构。可使用256字节、16千字节、1兆字节或64兆字节的交错大小,例如,默认存储器交错大小为256字节。因此,进程的邻接虚拟地址空间将使用默认交错大小将256字节用于第一存储器控制器,接着下一256字节将用于第二存储器控制器,等等。
到存储器控制器的PAO请求可提供基本存储器地址以及表示交错大小的0和3之间的值两者。这两个信息片段可用于指定PAO的有效地址存取范围。举例来说,存取范围的开始可对准到交错大小。PAO在有效地址范围外的存取可能致使失败状态传回到发布者。因此,PAO存储器存取限于含有PAO请求地址的请求程序的虚拟地址空间中邻接的存储器的最大区。因为此存储器块不大于交错大小且为邻接的,则PAO局限于存取请求进程的进程空间(例如,虚拟存储器)内的存储器。因此,可在不使PAU变得复杂的情况下实现MMU的益处。下文提供额外细节和实例。
图1A和1B示出根据实施例的小芯片系统110的实例。图1A是安装在外围板105上的小芯片系统110的表示,所述外围板105可例如通过外围组件互连高速(PCIe)连接到更广泛的计算机系统。小芯片系统110包含封装衬底115、中介层120和四个小芯片,即应用小芯片125、主机接口小芯片135、存储器控制器小芯片140和存储器装置小芯片150。其它系统可包含许多额外小芯片以提供额外功能性,如将从以下论述中显而易见。小芯片系统110的封装示出有封盖或覆盖件165,但可使用用于小芯片系统的其它封装技术和结构。图1B是为了清楚起见标记小芯片系统中的组件的框图。
应用小芯片125示出为包含芯片上网络(NOC)130以支持用于小芯片间通信的小芯片网络155。在实例实施例中,NOC 130可包含在应用小芯片125上。在实例中,可响应于所选择的支持小芯片(例如,小芯片135、140和150)而限定NOC 130,从而使设计者能够为NOC130选择适当数目或小芯片网络连接或交换机。在实例中,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 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信道,外加辅助信道。辅助信道含有用于AIB初始化的信号。列内的所有AIB信道(辅助信道除外)具有相同配置(例如,全部为TX、全部为RX,或者一半为TX且一半为RX,以及具有相同数目的数据I/O信号)。在实例中,从邻近于AUX信道的AIB信道开始,以连续递增次序对AIB信道编号。邻近于AUX的AIB信道被限定为AIB信道0。
通常,个别小芯片上的CPI接口可包含串行化-反串行化(SERDES)硬件。SERDES互连非常适用于需要高速信令以及低信号计数的情境。然而,对于多路复用和解复用、错误检测或校正(例如,使用块层级循环冗余校验(CRC))、链路层级重试或前向错误校正,SERDE可能会引起额外的功耗和更长的时延。然而,当低时延或能耗是超短距离小芯片到小芯片互连的主要关注点时,可利用时钟速率允许以最少时延进行数据传递的并行接口。CPI包含用于使这些超短距离小芯片互连的时延和能耗两者最小化的元件。
对于流控制,CPI采用基于信用的技术。例如应用小芯片125等接收方向例如存储器控制器小芯片140等发送方提供表示可用缓冲器的信用。在实例中,CPI接收方包含用于给定发射时间单位的每一虚拟信道的缓冲器。因此,如果CPI接收方在时间上支持五个消息和单个虚拟信道,则接收方具有布置成五行的五个缓冲器(例如,每一单位时间一行)。如果支持四个虚拟信道,则接收方具有布置成五行的二十个缓冲器。每一缓冲器保持一个CPI包的有效负载。
当发送方向接收方发射时,发送方基于发射而使可用信用递减。一旦接收方的所有信用已消耗,发送方就停止向接收方发送包。这确保接收方始终具有可用缓冲器来存储发射。
当接收方处理接收到的包并释放缓冲器时,接收方将可用缓冲空间传送回到发送方。随后,发送方可使用此信用返回以允许发射额外信息。
还示出了小芯片网状网络160,其使用直接小芯片到小芯片技术,而不需要NOC130。小芯片网状网络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可实施为一或多个处理器核心或控制电路系统,以及具有其它组合逻辑电路系统或其它逻辑电路系统的各种状态机,且还可包含一或多个寄存器、缓冲器或存储器以存储地址、可执行指令、操作数和其它数据,或可实施为处理器。
写入合并单元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包含例如基于RISC-V ISA的多线程处理器等多线程处理器,其具有一或多个处理器核心,且进一步具有用于执行可编程原子操作的扩展指令集。当具备用于执行可编程原子操作的扩展指令集时,PAU 270可体现为一或多个混合线程处理器。在一些实例实施例中,PAU 270提供桶式轮循瞬时线程切换以维持较高的每时钟指令速率。
可编程原子操作可由PAU 270执行,其涉及对关于所请求数据的可编程原子操作的请求。用户可准备编程代码以提供此些可编程原子操作。举例来说,可编程原子操作可以是相对简单的多循环操作,例如浮点加法,或可以是相对复杂的多指令操作,例如布隆过滤器插入(Bloom filter insert)。可编程原子操作可与预定原子操作相同或不同,只要它们是由用户而不是系统供应商限定的。对于这些操作,高速缓存控制器215可通过(在硬件中)设定危险位来保留高速缓存210中的高速缓存行,使得高速缓存行在处于过渡时无法被另一进程读取。从高速缓存210或裸片外存储器275或280获得数据,且将所述数据提供到PAU270以执行所请求的可编程原子操作。在原子操作之后,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示出根据实施例的存储器控制器小芯片的实例的组件。图3是相对于图2中示出的存储器控制器205的存储器控制器的另一表示。此处示出图2中展示的许多相同组件。举例来说,高速缓存302和385是高速缓存210的实例;DRAM 340是裸片外存储器275-280的实例;原子/写入合并370和可编程原子单元380可以是原子和合并单元250的实例。图3的其它组件可以是例如裸片外存储器控制器220和高速缓存控制器215等图2的其它组件的实例。
存储器控制器205中未明确表示的其它组件可包含以下组件。NOC请求队列305,其从芯片上网络接收请求且提供少量队列。原子请求队列310,其从可编程原子单元380接收请求且提供少量队列。入埠请求多路复用器(IRM),其在入埠存储器请求源之间进行选择。在一实例中,三个存储器请求源按优先级次序为:存储器危险请求、原子请求和入埠NOC请求。
高速缓存(读取)325和高速缓存(写入)375是在一实例中被实施为SRAM数据高速缓存的单个装置。图式将高速缓存示出为两个单独的块(325和375),一个提供读取存取,另一个提供写入存取。延迟块320提供一或多个管线级以模拟用于SRAM高速缓存读取操作的延迟。通常,高速缓存未命中对裸片外存储器340(例如,裸片外存储器280)进行存取以将所要数据带到高速缓存中。在等待存储器响应时(例如,用于DRAM 340的存取时间),存储器行不可用于其它请求。存储器危险块(设定块315和清除块360)可维持指示哪些存储器行不可用于存取的危险位的表。因此,尝试存取具有危险的行的入埠请求由存储器危险块保持直至清除危险。一旦清除危险,就经由入埠请求多路复用器重新发送请求。在一实例中,存储器行标签地址经散列处理为危险位索引。可挑选危险位的数目以将危险冲突概率设定到足够低的水平。
入埠DRAM控制多路复用器(IDCM)从入埠NOC请求和高速缓存逐出请求进行选择。对于组请求队列330,每一单独管理的DRAM组具有专用的组请求队列以保持请求,直至它们可在相关联DRAM组上调度。
调度器335跨组请求队列335进行选择以挑选针对可用DRAM组的请求。请求命中数据队列360保持来自高速缓存命中的请求数据,直至被选择。请求未命中数据队列355保持从DRAM读取的数据,直至被选择。未命中请求队列350用于保持用于高速缓存未命中的请求包信息直至请求被选择。命中请求队列345保持用于高速缓存命中的请求包信息,直至被选择。数据选择多路复用器(DSM)在DRAM读取数据和高速缓存命中读取数据之间进行选择。将选定数据写入到SRAM高速缓存。请求选择多路复用器(RSM)在命中和未命中请求队列345和355之间进行选择。
原子/写入合并370合并请求数据和DRAM读取数据,或在请求为内置原子(例如,内置原子操作块265)的情况下,使用存储器数据和请求数据作为用于原子操作的输入。高速缓存(写入)块375表示用于SRAM高速缓存的写入端口。来自NOC写入请求的数据和来自DRAM读取操作的数据写入到SRAM高速缓存。存储器危险(清除)块365表示针对存储器危险结构的危险清除操作。清除危险可释放待决NOC请求且将其发送到入埠请求多路复用器。可编程原子单元380处理可编程原子操作(例如,交易)。NOC出埠响应多路复用器(ORM)在存储器控制器响应和自定义原子单元响应之间进行选择且将选择发送到NOC。
图4示出根据实施例的可编程原子单元400(PAU)的实例中的组件,例如上文关于图1(例如,在存储器控制器140中)和图2(例如,PAU 270)所提到的组件。如所示出,PAU400包含处理器405、本地存储器410(例如,SRAM)和用于本地存储器410的控制器415。
在实例中,处理器405为管线化的,使得多级不同指令在每一时钟循环一起执行。处理器405还为桶式多线程处理器,具有在处理器405的每一时钟循环后在不同寄存器文件(例如,含有当前处理状态的寄存器组)之间切换的电路系统。这实现了当前执行线程之间的高效上下文切换。在实例中,处理器405支持八个线程,从而产生八个寄存器文件。在实例中,寄存器文件中的一些或全部未集成到处理器405中,而是驻留在本地存储器410中(寄存器420)。这通过消除用于这些寄存器420的传统触发器来降低处理器405中的电路复杂性。
本地存储器410还可容纳高速缓存430和用于原子操作的指令425。原子指令425包括支持各种应用加载的原子操作的指令集。当例如应用小芯片125请求原子操作时,处理器405执行对应于原子操作的指令集(例如,内核)。在实例中,对原子指令425进行分割以建立指令集。在此实例中,由请求进程请求的特定可编程原子操作可通过分区号识别可编程原子操作。当利用PAU 400注册可编程原子操作(例如,将其加载到所述PAU上)时,可建立分区号。可编程原子指令425的例如分区表等额外元数据也可存储在本地存储器410中。
原子操作操纵高速缓存430,当原子操作的线程完成时,所述高速缓存430通常被同步(例如,刷新)。因此,除了从例如裸片外存储器275或280等外部存储器初始加载之外,对于大多数存储器操作,在可编程原子操作线程的执行期间,时延缩短。
多种组件可实施针对原子操作的存储器存取边界检查,例如处理器405、到存储器控制器的示出的路径上的未示出的电路系统,乃至PAU 400外部的组件。然而,为简单起见,以下实例论述处理器305管理针对原子操作的存储器存取边界检查。因此,处理器405被配置成利用基本存储器地址作为执行的上下文来执行原子操作。在一实例中,执行PAO的请求包含基本存储器地址。在一实例中,请求为CPI请求,例如CPI存储器请求500。基本存储器地址对应于发射到存储器控制器的标准存储器地址。此请求中与标准存储器读取或写入请求的不同之处是,PAO被指定为待执行的操作。
处理器405被配置成获得(例如,检索或接收)对应于原子操作的存储器交错大小指示符(例如,从存储器控制器接口)。在一实例中,调用原子操作的存储器请求包含存储器交错大小指示符。再次,在具有多个存储器控制器的系统中,存储器交错大小指示在移动到另一存储器控制器上以供存储之前分配到一个存储器控制器的存储器的连续部分。因此,交错操作以跨若干存储器控制器且因此常常跨若干存储器装置将进程虚拟存储器的连续部分分条。在例如小芯片系统110等一些系统中,交错大小是可配置的,且可在进程之间或请求之间改变。
在一实例中,调用原子操作的请求是包含存储器交错大小指示符的CPI请求,例如下文描述的CPI存储器请求500。在请求中指定存储器交错大小实现了针对不同任务使用不同交错大小的较大灵活性。此外,如下文所描述,因为存储器交错大小用于通过原子操作来束缚存储器请求,所以为原子操作使用请求中所指定的交错大小使开发者能够针对特定原子操作实施方案定制边界检查。
存储器交错大小可以多种不同格式表示以平衡表示的效率(例如,表示交错大小所需的位数目)与粒度。在一实例中,存储器交错大小指示符是四个值中的一个。在一实例中,四个值分别对应于256字节、16千字节、1兆字节和64兆字节。在一实例中,四个值是0和3之间的整数(包含端点)。过去这几个实例是存储器交错大小到由整数编码的四个预定量的量化。还可使用其它表示,包含查找的索引。在一实例中,存储器交错大小指示符为位掩码。如下文所描述,归因于存在应用位掩码来实现结果的有效电路系统,所述位掩码可以是有用的。此处,不仅测量占据面积方面的效率,而且测量时间方面的效率(例如,需要很少时钟循环来将位掩码应用于另一值)。
处理器405被配置成从基本存储器地址和存储器交错大小计算邻接存储器地址范围。计算可采取许多形式,例如使用基地址作为中心点且接着通过减去或加上交错大小的一半来确定开始地址和结束地址。
在一实例中,基本存储器地址处于邻接存储器地址范围的第一端。因此,基本存储器地址是限定所述范围的两个边界中的一个。在一实例中,为了从基本存储器地址和存储器交错大小计算邻接存储器地址范围,使用呈位掩码的形式的存储器交错大小指示符。此处,基本存储器地址与PAO存储器请求中的存储器地址之间的关系在连续存储器空间中为接近的,从而导致两个存储器地址的许多位相同。位掩码经设定大小以覆盖可能潜在地不同且仍有效的位。因此,如果基本存储器地址与PAO存储器请求的存储器地址进行异或运算,且应用位掩码,则当存储器请求处于有效邻接存储器地址范围时结果为零(例如,未被位掩码覆盖的所有位为零)。如果未被位掩码覆盖的位中的任一个不是零(例如,非零),则存储器请求的存储器地址无效,因为其在邻接存储器地址范围外部。如上所述,使用位掩码来进行此计算可快速地且以比其它技术少的电路系统执行。
可在任何时间执行邻接地址范围的计算,例如当接收到针对原子操作的请求时、刚好在执行原子操作之前,或在执行原子操作期间。所述计算甚至可作为由原子操作在其执行时作出的每一存储器请求的一部分执行。
在原子操作的执行期间,处理器405被配置成检测来自原子操作的存储器请求是否在邻接存储器地址范围外部。所述检测较简单,在其分别低于或高于下部和上部边界的情况下原子操作在所述范围外部,或在存储器请求的地址处于所述范围的下部和上部边界之间的情况下原子操作在所述范围内部。一个边界或另一边界是否在范围内是实施方案选择。
如果原子操作的存储器请求中的地址不落在由处理器405计算的邻接存储器范围内,则处理器405被配置成拒绝存储器请求。因此,实现原子操作边界检查。因为边界外的存储器请求通常牵涉到执行原子操作内核的问题,所以错误可能传送到请求方。因此,在一实例中,处理器405被配置成将失败状态传送到作出请求的实体。在一实例中,在例如CPI响应600等CPI响应中传送失败状态。常常,此失败的存储器请求还可提示,原子操作指令更多地在根本上存在缺陷。此处,处理器405可被配置成终止原子操作。此动作可较高效,其防止由不良运作的原子操作消耗存储装置、处理能力或功率。在某些情况下,还可实现其它益处,例如防止存储器中的数据损坏。
图5示出根据实施例的小芯片协议接口请求包500。以下是对应于CPI请求包500的CPI字段描述和位长度的实例的表。
如所示出,行4,被遮蔽行是扩展标头510。命令字段505指示请求500是针对PAO。然而,解码请求500且将PAO参数提供到PAU(例如,PAU 270)的实体将把扩展标头510信息传递到PAU或解码扩展标头510且将组成字段作为输入提供到PAU。
图6示出根据实施例的小芯片协议接口响应包600。以下是对应于CPI响应包600的CPI字段描述和位长度的实例的表。
图7是根据实施例的用于针对PAO的存储器存取边界检查的方法700的实例的流程图。方法700的操作由例如相对于图1(例如,存储器控制器小芯片)、图2、图3、图4(例如,PAU400)或图8(例如,处理电路系统)所描述的计算机硬件执行。
在操作705处,PAU(例如,存储器控制器中)执行PAO。此处,正以基本存储器地址执行PAO。在一实例中,接收执行PAO的请求。在一实例中,所述请求包含基本存储器地址。在一实例中,请求为CPI请求,例如CPI存储器请求500。
在操作710处,获得对应于PAO的存储器交错大小指示符。在一实例中,执行PAO的请求包含存储器交错大小指示符。在一实例中,请求为CPI请求。在一实例中,存储器交错大小指示符是四个值中的一个。在一实例中,四个值分别对应于256字节、16千字节、1兆字节和64兆字节。在一实例中,四个值是0和3之间的整数(包含端点)。在一实例中,存储器交错大小指示符为位掩码。
在操作715处,从基本存储器地址和存储器交错大小计算邻接存储器地址范围。在一实例中,基本存储器地址处于邻接存储器地址范围的第一端。在一实例中,检测到存储器请求在邻接存储器地址范围外部包含对基本存储器地址和存储器请求的存储器地址执行异或(XOR)运算以产生结果。接着,将位掩码应用于所述结果以覆盖结果的较低位。结果的未覆盖位(未被位掩码掩蔽的那些位)经评估以找到非零位。如上所述,在未掩蔽结果中找到不是零的任何位指示存储器地址在有效邻接存储器地址范围外部。
在操作725处,基于在邻接存储器地址范围外部而拒绝存储器请求。在其中作出执行PAO的请求的实例中,拒绝存储器请求包含将失败状态传送到作出请求的实体。在一实例中,在例如CPI响应600等CPI响应中传送失败状态。
图8示出实例机器800的框图,可利用所述机器、在所述机器中或通过所述机器实施本文所论述的任一或多种技术(例如,方法)。如本文中所描述,实例可包含机器800中的逻辑或若干组件或机构,或可由其操作。电路系统(例如,处理电路系统)是在包含硬件的机器800的有形实体中实施的电路集合(例如,简单电路、门、逻辑等)。电路系统成员资格可随时间推移为灵活的。电路系统包含可在操作时单独或以组合方式执行指定操作的部件。在实例中,可以不变地设计电路系统的硬件以实行特定操作(例如,硬连线)。在实例中,电路系统的硬件可包含可变连接的物理组件(例如,执行单元、晶体管、简单电路等),包含以物理方式修改(例如,不变的大量粒子的磁、电、可移动放置等)以编码特定操作的指令的机器可读介质。在连接物理组件时,硬件构成的基础电性质例如从绝缘体改变成导体,或反之亦然。指令使嵌入式硬件(例如,执行单元或加载机构)能够经由可变连接以硬件创建电路系统的部件以在操作中时实行特定操作的部分。因此,在实例中,机器可读介质元件是电路系统的一部分或在装置操作时以通信方式耦合到电路系统的其它组件。在实例中,物理组件中的任一个可在一个以上电路系统的一个以上部件中使用。举例来说,在操作下,执行单元可在一个时间点用于第一电路系统的第一电路中,并且在不同时间由第一电路系统中的第二电路或由第二电路系统中的第三电路再使用。相对于机器800的这些组件的额外实例如下。
在替代实施例中,机器800可以充当独立装置或可以连接(例如,联网)到其它机器。在联网部署中,机器800可在服务器-客户端网络环境中以服务器机器、客户端机器或这两者的容量操作。在实例中,机器800可充当对等(P2P)(或其它分布式)网络环境中的对等机器。机器800可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、移动电话、网络器具、网络路由器、交换机或桥接器,或能够执行(循序或以其它方式)指定待由所述机器采取的动作的指令的任何机器。此外,虽然仅说明单个机器,但术语“机器”也应被视为包含个别地或共同地执行指令集(或多个指令集)以执行本文中所论述的方法中的任一或多个(例如,云计算、软件即服务(SaaS)、其它计算机丛集配置)的任何机器集合。
机器(例如,计算机系统)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)等)连接以与一或多个外围装置(例如,打印机、读卡器等)通信或控制所述一或多个外围装置。
处理器802、主存储器804、静态存储器806或大容量存储装置808的寄存器可为或包含机器可读介质822,在其上存储体现本文中所描述的技术或功能中的任何一或多个或被其利用的数据结构或指令824(例如,软件)的一或多个集合。指令824还可在其由机器800执行期间完全或至少部分驻留在处理器802、主存储器804、静态存储器806或大容量存储装置808的寄存器中的任一个内。在实例中,硬件处理器802、主存储器804、静态存储器806或大容量存储装置808中的一个或任何组合可构成机器可读介质822。虽然机器可读介质822示出为单个介质,但术语“机器可读介质”可包含被配置成存储所述一或多个指令824的单个介质或多个介质(例如,集中式或分布式数据库,或相关联高速缓存及服务器)。
术语“机器可读介质”可包含能够存储、编码或携载供机器800执行的指令且致使机器800执行本公开的技术中的任何一或多种或能够存储、编码或携载由此些指令使用或与此些指令相关联的数据结构的任何介质。非限制性机器可读介质实例可包含固态存储器、光学介质、磁性介质和信号(例如,射频信号、其它基于光子的信号、声音信号等)。在实例中,非暂时性机器可读介质包括具有多个粒子的机器可读介质,所述粒子具有不变(例如,静止)质量,且因此为物质组成。因此,非暂时性机器可读介质是不包含暂时性传播信号的机器可读介质。非暂时性机器可读介质的特定实例可包含:非易失性存储器,例如半导体存储器装置(例如,电可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM))和快闪存储器装置;磁盘,例如内部硬盘和可移式盘;磁光盘;以及CD-ROM和DVD-ROM盘。
在实例中,存储或以其它方式提供在机器可读介质822上的信息可表示指令824,例如指令824本身或可从其导出指令824的格式。可从其导出指令824的此格式可包含源代码、已编码指令(例如,呈压缩或加密形式)、已封装指令(例如,拆分成多个封装)等。表示机器可读介质822中的指令824的信息可由处理电路系统处理到指令中以实施本文中所论述的操作中的任一个。举例来说,从信息(例如,由处理电路系统处理)导出指令824可包含:编译(例如,从源代码、目标代码等)、解译、加载、组织(例如,动态地或静态地链接)、编码、解码、加密、解密、封包、解封包或以其它方式将信息操纵到指令824中。
在实例中,指令824的导出可包含对信息的汇编、编译或解译(例如,由处理电路系统)以从由机器可读介质822提供的一些中间或预处理格式创建指令824。当以多个部分提供信息时,可组合、解封装和修改所述信息以创建指令824。举例来说,信息可在一个或数个远程服务器上的多个压缩源代码封装(或目标代码,或二进制可执行代码等)中。源代码封装可在经由网络传输时被加密,并且在必要时被解密、解压缩、汇编(例如,链接),并且在本地机器处被编译或解译(例如,为库、独立的可执行程序等),并且由本地机器执行。
指令824可使用发射介质经由网络接口装置820利用若干传递协议(例如,帧中继、因特网协议(IP)、发射控制协议(TCP)、用户数据报协议(UDP)、超文本传递协议(HTTP)等)中的任一个在通信网络826上进一步发射或接收。实例通信网络可包含局域网(LAN)、广域网(WAN)、包数据网络(例如,因特网)、移动电话网络(例如,蜂窝式网络)、普通老式电话(POTS)网络和无线数据网络(例如,被称为的电气电子工程师学会(IEEE)802.11标准系列、被称为的IEEE 802.16标准系列)、IEEE 802.15.4标准系列、对等(P2P)网络等等。在实例中,网络接口装置820可以包含一或多个物理插口(例如,以太网、同轴或电话插口)或者一或多个天线以连接到通信网络826。在实例中,网络接口装置820可以包含多个天线以使用单输入多输出(SIMO)、多输入多输出(MIMO)或多输入单输出(MISO)技术中的至少一种进行无线通信。术语“发射介质”应被认为包含能够存储、编码或携载指令以供由机器800执行的任何无形介质,且包含数字或模拟通信信号或其它无形介质以有助于此类软件的通信。发射介质是机器可读介质。为了更好地说明本文中所描述的方法和设备,一组非限制性实例实施例在下文阐述为带编号的实例。
实例1是一种设备,所述设备包括:接口,其被配置成获得对应于可编程原子操作的存储器交错大小指示符,所述接口当在操作中时可耦合到存储器控制器、小芯片系统内的小芯片或主机装置;处理器,其当在操作中时耦合到所述接口,被配置成:执行可编程原子操作,所述可编程原子操作以基本存储器地址执行;从基本存储器地址和存储器交错大小计算邻接存储器地址范围;检测到来自可编程原子操作的存储器请求在邻接存储器地址范围外部;以及基于在邻接存储器地址范围外部而拒绝存储器请求。
在实例2中,根据实例1的主题,其中所述接口被配置成接收执行可编程原子操作的请求,所述请求包含基本存储器地址。
在实例3中,根据实例2的主题,其中所述请求包含存储器交错大小指示符。
在实例4中,根据实例3的主题,其中存储器交错大小指示符是四个值中的一个。
在实例5中,根据实例4的主题,其中所述四个值分别对应于256字节、16千字节、1兆字节和64兆字节。
在实例6中,根据实例4-5中任一项的主题,其中所述四个值是0和3之间的整数(包含端点)。
在实例7中,根据实例2-6中任一项的主题,其中存储器控制器是小芯片PAU中的小芯片,且其中所述请求在小芯片接口协议(CPI)包中。
在实例8中,根据实例2-7中任一项的主题,其中拒绝存储器请求包含将失败状态传送到作出请求的实体。
在实例9中,根据实例1-8中任一项的主题,其中存储器交错大小指示符是位掩码。
在实例10中,根据实例9的主题,其中为了检测存储器请求在邻接存储器地址范围外部,处理器被配置成:对基本存储器地址和存储器请求的存储器地址执行异或(XOR)运算以产生结果;将位掩码应用于所述结果以覆盖结果的较低位;以及评估结果的未覆盖位以找到非零位,当结果的未覆盖位全部为零时,所述存储器请求在邻接存储器地址范围内,否则所述存储器请求在邻接存储器地址范围外部。
实例11是一种方法,所述方法包括:由存储器控制器的可编程原子单元(PAU)执行可编程原子操作,所述可编程原子操作以基本存储器地址执行;获得对应于可编程原子操作的存储器交错大小指示符;从基本存储器地址和存储器交错大小计算邻接存储器地址范围;检测到来自可编程原子操作的存储器请求在邻接存储器地址范围外部;以及基于在邻接存储器地址范围外部而拒绝存储器请求。
在实例12中,根据实例11的主题,其包括接收执行可编程原子操作的请求,所述请求包含基本存储器地址。
在实例13中,根据实例12的主题,其中所述请求包含存储器交错大小指示符。
在实例14中,根据实例13的主题,其中存储器交错大小指示符是四个值中的一个。
在实例15中,根据实例14的主题,其中所述四个值分别对应于256字节、16千字节、1兆字节和64兆字节。
在实例16中,根据实例14-15中任一项的主题,其中所述四个值是0和3之间的整数(包含端点)。
在实例17中,根据实例12-16中任一项的主题,其中存储器控制器是小芯片系统中的小芯片,且其中所述请求在小芯片接口协议(CPI)包中。
在实例18中,根据实例12-17中任一项的主题,其中拒绝存储器请求包含将失败状态传送到作出请求的实体。
在实例19中,根据实例11-18中任一项的主题,其中存储器交错大小指示符是位掩码。
在实例20中,根据实例19的主题,其中检测到存储器请求在邻接存储器地址范围外部包含:对基本存储器地址和存储器请求的存储器地址执行异或(XOR)运算以产生结果;以及将位掩码应用于所述结果以覆盖结果的较低位;以及评估结果的未覆盖位以找到非零位,当结果的未覆盖位全部为零时,存储器请求在邻接存储器地址范围内,否则存储器请求在邻接存储器地址范围外部。
实例21是一种包含指令的机器可读介质,所述指令在由处理器执行时致使所述处理器执行包括以下的操作:执行可编程原子操作,所述可编程原子操作以基本存储器地址执行;获得对应于可编程原子操作的存储器交错大小指示符;从基本存储器地址和存储器交错大小计算邻接存储器地址范围;检测到来自可编程原子操作的存储器请求在邻接存储器地址范围外部;以及基于在邻接存储器地址范围外部而拒绝存储器请求。
在实例22中,根据实例21的主题,其中所述操作包括接收执行可编程原子操作的请求,所述请求包含基本存储器地址。
在实例23中,根据实例22的主题,其中所述请求包含存储器交错大小指示符。
在实例24中,根据实例23的主题,其中存储器交错大小指示符是四个值中的一个。
在实例25中,根据实例24的主题,其中所述四个值分别对应于256字节、16千字节、1兆字节和64兆字节。
在实例26中,根据实例24-25中任一项的主题,其中所述四个值是0和3之间的整数(包含端点)。
在实例27中,根据实例22-26中任一项的主题,其中存储器控制器是小芯片系统中的小芯片,且其中所述请求在小芯片接口协议(CPI)包中。
在实例28中,根据实例22-27中任一项的主题,其中拒绝存储器请求包含将失败状态传送到作出请求的实体。
在实例29中,根据实例21-28中任一项的主题,其中存储器交错大小指示符是位掩码。
在实例30中,根据实例29的主题,其中检测到存储器请求在邻接存储器地址范围外部包含:对基本存储器地址和存储器请求的存储器地址执行异或(XOR)运算以产生结果;以及将位掩码应用于所述结果以覆盖结果的较低位;以及评估结果的未覆盖位以找到非零位,当结果的未覆盖位全部为零时,存储器请求在邻接存储器地址范围内,否则存储器请求在邻接存储器地址范围外部。
实例31是一种系统,所述系统包括:用于通过存储器控制器的可编程原子单元(PAU)执行可编程原子操作的构件,所述可编程原子操作以基本存储器地址执行;用于获得对应于可编程原子操作的存储器交错大小指示符的构件;用于从基本存储器地址和存储器交错大小计算邻接存储器地址范围的构件;用于检测到来自可编程原子操作的存储器请求在邻接存储器地址范围外部的构件;以及用于基于在邻接存储器地址范围外部而拒绝存储器请求的构件。
在实例32中,根据实例31的主题,其包括用于接收执行可编程原子操作的请求的构件,所述请求包含基本存储器地址。
在实例33中,根据实例32的主题,其中所述请求包含存储器交错大小指示符。
在实例34中,根据实例33的主题,其中存储器交错大小指示符是四个值中的一个。
在实例35中,根据实例34的主题,其中所述四个值分别对应于256字节、16千字节、1兆字节和64兆字节。
在实例36中,根据实例34-35中任一项的主题,其中所述四个值是0和3之间的整数(包含端点)。
在实例37中,根据实例32-36中任一项的主题,其中存储器控制器是小芯片系统中的小芯片,且其中所述请求在小芯片接口协议(CPI)包中。
在实例38中,根据实例32-37中任一项的主题,其中拒绝存储器请求包含将失败状态传送到作出请求的实体。
在实例39中,根据实例31-38中任一项的主题,其中存储器交错大小指示符是位掩码。
在实例40中,根据实例39的主题,其中检测到存储器请求在邻接存储器地址范围外部包含:用于对基本存储器地址和存储器请求的存储器地址执行异或(XOR)运算以产生结果的构件;以及用于以下操作的构件:将位掩码应用于所述结果以覆盖结果的较低位;及评估结果的未覆盖位以找到非零位,当结果的未覆盖位全部为零时存储器请求在邻接存储器地址范围内,否则存储器请求在邻接存储器地址范围外部。
实例41是包含指令的至少一个机器可读介质,所述指令在由处理电路系统执行时致使所述处理电路系统执行操作以实施实例1-40中的任一个。
实例42是一种设备,其包括用以实施实例1-40中的任一个的构件。
实例43是一种用以实施实例1-40中的任一个的系统。
实例44是一种用以实施实例1-40中的任一个的方法。
以上详细描述包含对附图的参考,附图形成详细描述的部分。图式借助于图示展示其中可实践本发明的特定实施例。这些实施例在本文中也称为“实例”。此些实例可包含除了所展示或所描述的那些元件之外的元件。然而,本发明人还审慎考虑其中仅提供所展示或所描述的那些元件的实例。此外,本发明人还审慎考虑使用关于特定实例(或其一或多个方面)或关于本文所展示或描述的其它实例(或其一或多个方面)而展示或描述的那些元件的任何组合或排列的实例(或其一或多个方面)。
在本文中,如专利文献中所常见而使用术语“一”以包含一个或一个以上,其独立于“至少一个”或“一或多个”的任何其它例项或使用。在本文中,术语“或”用于指代非排它性或,使得除非另有指示,否则“A或B”可包含“A而非B”、“B而非A”以及“A和B”。在所附权利要求书中,术语“包含”和“在其中”用作相应术语“包括”和“其中”的简明等效用语。此外,在所附权利要求书中,术语“包含”和“包括”为开放式的,也就是说,包含除权利要求中在此术语之后列出的那些要素之外的要素的系统、装置、物件或过程仍被视为落在该权利要求的范围内。此外,在所附权利要求书中,术语“第一”、“第二”和“第三”等仅用作标记,且并不希望对其对象强加数值要求。
以上描述希望是说明性的而非限制性的。举例来说,上述实例((或其一或多个方面)可彼此组合使用。例如所属领域的一般技术人员在查阅以上描述后可使用其它实施例。应遵守以下理解:它将不会用于解释或限制权利要求书的范围或含义。另外,在以上具体实施方式中,可将各种特征分组在一起以简化本公开。不应将此解释为希望未主张的所公开特征对于任何权利要求来说是必需的。实际上,本发明主题可在于特定所公开实施例的不到全部特征。因此,特此将所附权利要求书并入到具体实施方式中,其中每一权利要求作为单独的实施例而独立存在,且经审慎考虑,此些实施例可以各种组合或排列彼此组合。本发明的范围应通过参考所附权利要求书以及此权利要求书所授予的等效物的完整范围来确定。
Claims (24)
1.一种设备,其包括:
接口,其被配置成获得对应于可编程原子操作的存储器交错大小指示符,所述接口当在操作中时可耦合到存储器控制器、小芯片系统内的小芯片或主机装置;
处理器,其当在操作中时耦合到所述接口,被配置成:
执行可编程原子操作,所述可编程原子操作以基本存储器地址执行;
从所述基本存储器地址和所述存储器交错大小计算邻接存储器地址范围;
检测到来自所述可编程原子操作的存储器请求在所述邻接存储器地址范围外部;以及
基于在所述邻接存储器地址范围外部而拒绝所述存储器请求。
2.根据权利要求1所述的设备,其中所述接口被配置成接收执行所述可编程原子操作的请求,所述请求包含所述基本存储器地址。
3.根据权利要求2所述的设备,其中所述请求包含所述存储器交错大小指示符。
4.根据权利要求3所述的设备,其中所述存储器交错大小指示符是四个值中的一个。
5.根据权利要求2所述的设备,其中所述存储器控制器是小芯片PAU中的小芯片,且其中所述请求在小芯片接口协议CPI包中。
6.根据权利要求2所述的设备,其中拒绝所述存储器请求包含将失败状态传送到作出所述请求的实体。
7.根据权利要求1所述的设备,其中所述存储器交错大小指示符是位掩码。
8.根据权利要求7所述的设备,其中为了检测到所述存储器请求在所述邻接存储器地址范围外部,所述处理器被配置成:
对所述基本存储器地址和所述存储器请求的存储器地址执行异或XOR运算以产生结果;
将所述位掩码应用于所述结果以覆盖所述结果的较低位;以及评估所述结果的未覆盖位以找到非零位,当所述结果的所述未覆盖位全部为零时所述存储器请求在所述邻接存储器地址范围内,否则所述存储器请求在所述邻接存储器地址范围外部。
9.一种方法,其包括:
通过存储器控制器的可编程原子单元PAU执行可编程原子操作,所述可编程原子操作以基本存储器地址执行;
获得对应于所述可编程原子操作的存储器交错大小指示符;
从所述基本存储器地址和所述存储器交错大小计算邻接存储器地址范围;
检测到来自所述可编程原子操作的存储器请求在所述邻接存储器地址范围外部;以及
基于在所述邻接存储器地址范围外部而拒绝所述存储器请求。
10.根据权利要求9所述的方法,其包括接收执行所述可编程原子操作的请求,所述请求包含所述基本存储器地址。
11.根据权利要求10所述的方法,其中所述请求包含所述存储器交错大小指示符。
12.根据权利要求11所述的方法,其中所述存储器交错大小指示符是四个值中的一个。
13.根据权利要求10所述的方法,其中所述存储器控制器是小芯片系统中的小芯片,且其中所述请求在小芯片接口协议CPI包中。
14.根据权利要求10所述的方法,其中拒绝所述存储器请求包含将失败状态传送到作出所述请求的实体。
15.根据权利要求9所述的方法,其中所述存储器交错大小指示符是位掩码。
16.根据权利要求15所述的方法,其中检测到所述存储器请求在所述邻接存储器地址范围外部包含:
对所述基本存储器地址和所述存储器请求的存储器地址执行异或XOR运算以产生结果;以及
将所述位掩码应用于所述结果以覆盖所述结果的较低位;以及评估所述结果的未覆盖位以找到非零位,当所述结果的所述未覆盖位全部为零时所述存储器请求在所述邻接存储器地址范围内,否则所述存储器请求在所述邻接存储器地址范围外部。
17.一种存储指令的机器可读介质,所述指令在由处理器执行时致使所述处理器执行包括以下的操作:
执行可编程原子操作,所述可编程原子操作以基本存储器地址执行;
获得对应于所述可编程原子操作的存储器交错大小指示符;
从所述基本存储器地址和所述存储器交错大小计算邻接存储器地址范围;
检测到来自所述可编程原子操作的存储器请求在所述邻接存储器地址范围外部;以及
基于在所述邻接存储器地址范围外部而拒绝所述存储器请求。
18.根据权利要求17所述的机器可读介质,其中所述操作包括接收执行所述可编程原子操作的请求,所述请求包含所述基本存储器地址。
19.根据权利要求18所述的机器可读介质,其中所述请求包含所述存储器交错大小指示符。
20.根据权利要求19所述的机器可读介质,其中所述存储器交错大小指示符是四个值中的一个。
21.根据权利要求18所述的机器可读介质,其中所述存储器控制器是小芯片系统中的小芯片,且其中所述请求在小芯片接口协议CPI包中。
22.根据权利要求18所述的机器可读介质,其中拒绝所述存储器请求包含将失败状态传送到作出所述请求的实体。
23.根据权利要求17所述的机器可读介质,其中所述存储器交错大小指示符是位掩码。
24.根据权利要求23所述的机器可读介质,其中检测到所述存储器请求在所述邻接存储器地址范围外部包含:
对所述基本存储器地址和所述存储器请求的存储器地址执行异或XOR运算以产生结果;以及
将所述位掩码应用于所述结果以覆盖所述结果的较低位;以及评估所述结果的未覆盖位以找到非零位,当所述结果的所述未覆盖位全部为零时所述存储器请求在所述邻接存储器地址范围内,否则所述存储器请求在所述邻接存储器地址范围外部。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/075,073 US11379365B2 (en) | 2020-10-20 | 2020-10-20 | Memory access bounds checking for a programmable atomic operator |
US17/075,073 | 2020-10-20 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114385545A true CN114385545A (zh) | 2022-04-22 |
CN114385545B CN114385545B (zh) | 2023-03-14 |
Family
ID=81185122
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111208723.7A Active CN114385545B (zh) | 2020-10-20 | 2021-10-18 | 针对可编程原子操作的存储器存取边界检查 |
Country Status (2)
Country | Link |
---|---|
US (2) | US11379365B2 (zh) |
CN (1) | CN114385545B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11734173B2 (en) | 2020-10-20 | 2023-08-22 | Micron Technology, Inc. | Memory access bounds checking for a programmable atomic operator |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1354480A (zh) * | 2000-11-22 | 2002-06-19 | 精工爱普生株式会社 | 使用存储器的方法、两维数据存取存储器以及操作处理设备 |
US20090113141A1 (en) * | 2007-10-31 | 2009-04-30 | Agere Systems Inc. | Memory protection system and method |
CN102637451A (zh) * | 2005-06-30 | 2012-08-15 | 英特尔公司 | 一种存储器集成电路以及存储器阵列 |
CN107430508A (zh) * | 2015-03-27 | 2017-12-01 | 英特尔公司 | 用于提供原子范围操作的指令和逻辑 |
CN108292266A (zh) * | 2015-12-24 | 2018-07-17 | 英特尔Ip公司 | 通过存储器范围筛选器和可选择地址平坦化用于可配置存储器映射的SoC结构扩展 |
US20190272119A1 (en) * | 2018-01-29 | 2019-09-05 | Micron Technology, Inc. | Memory Controller |
Family Cites Families (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080270708A1 (en) | 2007-04-30 | 2008-10-30 | Craig Warner | System and Method for Achieving Cache Coherency Within Multiprocessor Computer System |
US8156307B2 (en) | 2007-08-20 | 2012-04-10 | Convey Computer | Multi-processor system having at least one processor that comprises a dynamically reconfigurable instruction set |
US8561037B2 (en) | 2007-08-29 | 2013-10-15 | Convey Computer | Compiler for generating an executable comprising instructions for a plurality of different instruction sets |
US8095735B2 (en) | 2008-08-05 | 2012-01-10 | Convey Computer | Memory interleave for heterogeneous computing |
US8122229B2 (en) | 2007-09-12 | 2012-02-21 | Convey Computer | Dispatch mechanism for dispatching instructions from a host processor to a co-processor |
US9015399B2 (en) | 2007-08-20 | 2015-04-21 | Convey Computer | Multiple data channel memory module architecture |
US9710384B2 (en) | 2008-01-04 | 2017-07-18 | Micron Technology, Inc. | Microprocessor architecture having alternative memory access paths |
US8972958B1 (en) | 2012-10-23 | 2015-03-03 | Convey Computer | Multistage development workflow for generating a custom instruction set reconfigurable processor |
US8205066B2 (en) | 2008-10-31 | 2012-06-19 | Convey Computer | Dynamically configured coprocessor for different extended instruction set personality specific to application program with shared memory storing instructions invisibly dispatched from host processor |
US20100115233A1 (en) | 2008-10-31 | 2010-05-06 | Convey Computer | Dynamically-selectable vector register partitioning |
US8423745B1 (en) | 2009-11-16 | 2013-04-16 | Convey Computer | Systems and methods for mapping a neighborhood of data to general registers of a processing element |
US10430190B2 (en) | 2012-06-07 | 2019-10-01 | Micron Technology, Inc. | Systems and methods for selectively controlling multithreaded execution of executable code segments |
WO2019089816A2 (en) | 2017-10-31 | 2019-05-09 | Micron Technology, Inc. | System having a hybrid threading processor, a hybrid threading fabric having configurable computing elements, and a hybrid interconnection network |
US11461527B2 (en) | 2018-02-02 | 2022-10-04 | Micron Technology, Inc. | Interface for data communication between chiplets or other integrated circuits on an interposer |
WO2019191742A1 (en) | 2018-03-31 | 2019-10-03 | Micron Technology, Inc. | Loop thread order execution control of a multi-threaded, self-scheduling reconfigurable computing fabric |
CN111919203A (zh) | 2018-03-31 | 2020-11-10 | 美光科技公司 | 使用重入队列的多线程自调度可重新配置计算架构的循环执行控制 |
KR102447816B1 (ko) | 2018-03-31 | 2022-09-27 | 마이크론 테크놀로지, 인크. | 멀티 스레드, 자체 스케줄링 재구성 가능한 컴퓨팅 패브릭에 대한 다수의 유형의 스레드 식별자 |
EP3776243A1 (en) | 2018-03-31 | 2021-02-17 | Micron Technology, Inc. | Backpressure control using a stop signal for a multi-threaded, self-scheduling reconfigurable computing fabric |
WO2019191743A1 (en) | 2018-03-31 | 2019-10-03 | Micron Technology, Inc. | Conditional branching control for a multi-threaded, self- scheduling reconfigurable computing fabric |
EP3776236A1 (en) | 2018-03-31 | 2021-02-17 | Micron Technology, Inc. | Efficient loop execution for a multi-threaded, self-scheduling reconfigurable computing fabric |
US11068305B2 (en) | 2018-05-07 | 2021-07-20 | Micron Technology, Inc. | System call management in a user-mode, multi-threaded, self-scheduling processor |
US11132233B2 (en) | 2018-05-07 | 2021-09-28 | Micron Technology, Inc. | Thread priority management in a multi-threaded, self-scheduling processor |
US11513838B2 (en) | 2018-05-07 | 2022-11-29 | Micron Technology, Inc. | Thread state monitoring in a system having a multi-threaded, self-scheduling processor |
US11119972B2 (en) | 2018-05-07 | 2021-09-14 | Micron Technology, Inc. | Multi-threaded, self-scheduling processor |
US11513840B2 (en) | 2018-05-07 | 2022-11-29 | Micron Technology, Inc. | Thread creation on local or remote compute elements by a multi-threaded, self-scheduling processor |
US11513839B2 (en) | 2018-05-07 | 2022-11-29 | Micron Technology, Inc. | Memory request size management in a multi-threaded, self-scheduling processor |
US11074078B2 (en) | 2018-05-07 | 2021-07-27 | Micron Technology, Inc. | Adjustment of load access size by a multi-threaded, self-scheduling processor to manage network congestion |
US11119782B2 (en) | 2018-05-07 | 2021-09-14 | Micron Technology, Inc. | Thread commencement using a work descriptor packet in a self-scheduling processor |
US11513837B2 (en) | 2018-05-07 | 2022-11-29 | Micron Technology, Inc. | Thread commencement and completion using work descriptor packets in a system having a self-scheduling processor and a hybrid threading fabric |
US11126587B2 (en) | 2018-05-07 | 2021-09-21 | Micron Technology, Inc. | Event messaging in a system having a self-scheduling processor and a hybrid threading fabric |
US11573834B2 (en) | 2019-08-22 | 2023-02-07 | Micron Technology, Inc. | Computational partition for a multi-threaded, self-scheduling reconfigurable computing fabric |
US11150900B2 (en) | 2019-08-28 | 2021-10-19 | Micron Technology, Inc. | Execution or write mask generation for data selection in a multi-threaded, self-scheduling reconfigurable computing fabric |
US11836524B2 (en) | 2019-08-29 | 2023-12-05 | Micron Technology, Inc. | Memory interface for a multi-threaded, self-scheduling reconfigurable computing fabric |
US11379365B2 (en) | 2020-10-20 | 2022-07-05 | Micron Technology, Inc. | Memory access bounds checking for a programmable atomic operator |
-
2020
- 2020-10-20 US US17/075,073 patent/US11379365B2/en active Active
-
2021
- 2021-10-18 CN CN202111208723.7A patent/CN114385545B/zh active Active
-
2022
- 2022-06-30 US US17/854,770 patent/US11734173B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1354480A (zh) * | 2000-11-22 | 2002-06-19 | 精工爱普生株式会社 | 使用存储器的方法、两维数据存取存储器以及操作处理设备 |
CN102637451A (zh) * | 2005-06-30 | 2012-08-15 | 英特尔公司 | 一种存储器集成电路以及存储器阵列 |
US20090113141A1 (en) * | 2007-10-31 | 2009-04-30 | Agere Systems Inc. | Memory protection system and method |
CN107430508A (zh) * | 2015-03-27 | 2017-12-01 | 英特尔公司 | 用于提供原子范围操作的指令和逻辑 |
CN108292266A (zh) * | 2015-12-24 | 2018-07-17 | 英特尔Ip公司 | 通过存储器范围筛选器和可选择地址平坦化用于可配置存储器映射的SoC结构扩展 |
US20190272119A1 (en) * | 2018-01-29 | 2019-09-05 | Micron Technology, Inc. | Memory Controller |
CN111656334A (zh) * | 2018-01-29 | 2020-09-11 | 美光科技公司 | 具有可编程原子操作的存储器控制器 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11734173B2 (en) | 2020-10-20 | 2023-08-22 | Micron Technology, Inc. | Memory access bounds checking for a programmable atomic operator |
Also Published As
Publication number | Publication date |
---|---|
US20220414004A1 (en) | 2022-12-29 |
US11379365B2 (en) | 2022-07-05 |
CN114385545B (zh) | 2023-03-14 |
US11734173B2 (en) | 2023-08-22 |
US20220121567A1 (en) | 2022-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11403023B2 (en) | Method of organizing a programmable atomic unit instruction memory | |
US11740929B2 (en) | Registering a custom atomic operation with the operating system | |
US11693690B2 (en) | Method of completing a programmable atomic transaction by ensuring memory locks are cleared | |
US11935600B2 (en) | Programmable atomic operator resource locking | |
US20230251894A1 (en) | Method of executing programmable atomic unit resources within a multi-process system | |
CN114388040B (zh) | 通知进程或可编程原子操作捕获的方法 | |
US11720446B2 (en) | Method of demand scrubbing by placing corrected data in memory-side cache | |
US11614891B2 (en) | Communicating a programmable atomic operator to a memory controller | |
CN114385237A (zh) | 低时延寄存器错误校正 | |
CN114385545B (zh) | 针对可编程原子操作的存储器存取边界检查 | |
US11698791B2 (en) | On-demand programmable atomic kernel loading | |
US20220121448A1 (en) | Reuse in-flight register data in a processor | |
US11455262B2 (en) | Reducing latency for memory operations in a memory controller | |
US20220121486A1 (en) | Rescheduling a failed memory request in a processor |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |