CN114388040B - 通知进程或可编程原子操作捕获的方法 - Google Patents

通知进程或可编程原子操作捕获的方法 Download PDF

Info

Publication number
CN114388040B
CN114388040B CN202111222969.XA CN202111222969A CN114388040B CN 114388040 B CN114388040 B CN 114388040B CN 202111222969 A CN202111222969 A CN 202111222969A CN 114388040 B CN114388040 B CN 114388040B
Authority
CN
China
Prior art keywords
programmable atomic
memory
processor
programmable
chiplet
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.)
Active
Application number
CN202111222969.XA
Other languages
English (en)
Other versions
CN114388040A (zh
Inventor
T·M·布鲁尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Micron Technology Inc filed Critical Micron Technology Inc
Publication of CN114388040A publication Critical patent/CN114388040A/zh
Application granted granted Critical
Publication of CN114388040B publication Critical patent/CN114388040B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/82Architectures of general purpose stored program computers data or demand driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System 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/7825Globally asynchronous, locally synchronous, e.g. network on chip
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7896Modular architectures, e.g. assembled from a number of identical packages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computing Systems (AREA)
  • Microcomputers (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

本申请涉及一种通知进程或可编程原子操作捕获的方法。在一些实例中公开了将异常作为响应提供到调用处理器的方法、系统、可编程原子单元和机器可读媒体。也就是说,所述可编程原子单元将把响应发送到所述调用处理器。所述调用处理器将认识到所述异常已产生且将处置所述异常。因为所述调用处理器知道哪一进程触发所述异常,所以所述调用处理器(例如,操作系统)可采取适当动作,例如终止调用进程。所述调用处理器可为与执行可编程原子事务的处理器相同的处理器,或不同的处理器(例如,在不同的小芯片上)。

Description

通知进程或可编程原子操作捕获的方法
关于政府支持的声明
根据DARPA授予的HR00111890003号协议,本发明是在美国政府的支持下完成的。美国政府对这项发明拥有某些权利。
技术领域
本申请涉及一种通知进程或可编程原子操作捕获的方法。
背景技术
小芯片是一种用于集成各种处理功能性的新兴技术。通常,小芯片系统由精密模块(各自被称为“小芯片”)构成,所述精密模块集成在中介层上,并且在许多实例中视需要通过一或多个已建立的网络互连,以向系统提供所要功能性。中介层和所包含的小芯片可封装在一起,以便于与较大系统的其它组件互连。每一小芯片可包含一或多个个别集成电路或“芯片”(IC),其可能与离散电路组件组合,并且共同耦合到相应衬底以便于附接到中介层。系统中的大多数或所有小芯片将被个别地配置成用于通过一或多个已建立的网络进行通信。
小芯片作为系统的个别模块的配置不同于在单芯片上实施的此类系统,所述芯片在一个衬底(例如,单个裸片)上含有不同装置块(例如,知识产权(IP)块),例如片上系统(SoC),或集成在印刷电路板(PCB)上的多个离散封装装置。一般来说,小芯片提供比离散封装装置更好的性能(例如,更低的功率消耗、减少的时延等),并且小芯片提供比单裸片芯片更大的生产效益。这些生产效益可包含更高的良率或减少的开发成本和时间。
小芯片系统可包含例如一或多个应用程序(或处理器)小芯片和一或多个支持小芯片。此处,应用程序小芯片与支持小芯片之间的区别只是对小芯片系统可能的设计场景的参考。因此,举例来说,合成视觉小芯片系统可包含(仅借助于实例)用以产生合成视觉输出的应用程序小芯片,以及例如存储器控制器小芯片、传感器接口小芯片或通信小芯片等支持小芯片。在典型的用例中,合成视觉设计者可设计应用程序小芯片并且从其它方获取支持小芯片。因此,由于避免设计和生产支持小芯片中所包含的功能性,因此减少了设计支出(例如,在时间或复杂性方面)。小芯片还支持原本可能很困难的IP块的紧密集成,例如使用不同的处理技术或使用不同的特征大小(或利用不同的接触技术或间距)制造的IP块。因此,可以模块化方式组装具有不同物理、电气或通信特性的多个IC的组合件或IC组合件,以提供实现所要功能性的组合件。小芯片系统还可促进调适以适应将并入有小芯片系统的不同较大系统的需要。在实例中,IC的组合件或其它组合件可针对具体功能的功率、速度或发热进行优化,如同传感器可能发生的情况一样,相比于在单个裸片上尝试与其它装置集成,所述IC的组合件或其它组合件可更容易地与其它装置集成。另外,通过减小裸片的整体大小,小芯片的良率往往高于更复杂的单裸片装置的良率。
发明内容
在一方面,本申请提供一种设备,其包括:存储器控制器;可编程原子单元,其耦合到存储器控制器,可编程原子单元包括:存储器,其存储可编程原子事务;处理器,处理器被配置成:从以通信方式耦合到可编程原子单元的第二处理器接收用以执行可编程原子事务的命令;执行可编程原子事务,可编程原子事务包括用以进行操作的一或多个指令的集合;在可编程原子事务的执行期间确定对应于可编程原子事务的异常条件;终止指令集的执行;产生指示异常的响应;以及将响应发送到处理器。
在另一方面,本申请进一步提供一种方法,其包括:通过存储器控制器的可编程原子单元从处理器接收用以执行存储在对应于可编程原子事务的可编程原子单元的存储器中的可编程原子事务的命令;通过可编程原子单元的处理器执行可编程原子事务,可编程原子事务包括用以进行操作的一或多个指令的集合;在可编程原子事务的执行期间确定对应于可编程原子事务的异常条件;终止指令集的执行;产生指示异常的响应;以及将响应发送到处理器。
在再另一方面中,本申请进一步提供一种存储指令的非暂时性机器可读媒体,所述指令在执行时使得机器进行操作,所述操作包括:通过存储器控制器的可编程原子单元从处理器接收用以执行存储在对应于可编程原子事务的可编程原子单元的存储器中的可编程原子事务的命令;通过可编程原子单元的处理器执行可编程原子事务,可编程原子事务包括用以进行操作的一或多个指令的集合;在可编程原子事务的执行期间确定对应于可编程原子事务的异常条件;终止指令集的执行;产生指示异常的响应;以及将响应发送到处理器。
附图说明
根据下文给出的详细描述和本公开的各种实施例的附图,将更充分地理解本公开。然而,图式不应视为将本公开限于具体实施例,而是仅用于阐释和理解。
图1A和1B说明根据实施例的小芯片系统的实例。
图2说明根据实施例的存储器控制器小芯片的实例的组件。
图3说明根据实施例的可编程原子单元(PAU)的实例中的组件。
图4说明根据本公开的一些实例的用于请求特定可编程原子的执行的请求包。
图5说明根据本公开的一些实例的可编程原子响应消息。
图6说明根据本公开的一些实例的可编程原子捕获响应。
图7说明根据本公开的一些实例的可编程原子单元将可编程原子以异常结束的通知提供到调用处理器的方法的流程图。
图8说明根据本公开的一些实例的调用处理器通知操作系统的方法的流程图。
图9说明根据本公开的一些实例的存储器控制器的框图。
图10是机器的实例的框图,本公开的实施例可利用所述机器、在所述机器中或通过所述机器进行操作。
具体实施方式
下文所描述的图1提供小芯片系统和在其中操作的组件的实例。如下文所解释,此类小芯片系统可包含具有执行包括一或多个指令的可编程原子事务的可编程原子单元的存储器控制器。可由不同处理器(例如,由不同小芯片上的进程)经由通过小芯片通信机构发送到存储器控制器的请求包请求可编程原子。在存储器控制器的可编程原子单元处执行可编程原子事务作为存储器操作。如果可编程原子事务成功地完成,则可编程原子单元可将响应发送到调用处理器。
可编程原子事务还可由于异常条件而终止,所述异常条件例如存储器请求地址绑定检查失败、指令执行限制等。对于个人计算机,例如对于x86架构,在指令触发异常时,处理器触发由操作系统处置的中断,所述操作系统接着可终止引起异常的进程。操作系统知道哪一进程引起异常,因为其管理在任何给定时间运行的进程。
在其它系统中,例如使用可编程原子事务的那些系统中,可编程原子单元由进程通过发布RISC指令来调用。RISC指令由经由小芯片网络将请求发送到存储器控制器的本地处理器执行,所述存储器控制器接着执行可编程原子单元的物理存储器空间中的事务。结果,可编程原子单元并不知道其正针对哪一进程执行。在遇到异常时,应终止有害进程以避免可能引起非所要操作的存储器故障。然而,在不知道哪一进程出错的情况下,存储器控制器无法执行此操作。一个解决方案将为在存储器控制器中产生旗标且操作系统将周期性地轮询所述旗标并找出哪一进程引起所述旗标。这是不合需要的且产生用于O/S的大量开销,因为其将必须不断地检查旗标。此外,如果O/S在不同处理器上,则这将产生用于到存储器控制器的通信接口的开销。
在一些实例中所公开的为将异常作为响应提供到调用处理器的方法、系统、可编程原子单元和机器可读媒体。也就是说,可编程原子单元将把响应发送到调用处理器。调用处理器将认识到异常已产生且将处置所述异常。因为调用处理器知道哪一进程触发异常,所以调用处理器(例如,操作系统)可采取适当动作,例如终止调用进程。调用处理器可为与执行可编程原子事务的处理器相同的处理器,或不同的处理器(例如,在不同的小芯片上)。将异常发送回发布处理器的能力允许系统在其中发布PAU操作的执行应用程序中的点处进行捕获。这允许使用调试器的编程以确定哪一PAU操作被捕获、其为何被捕获以及引起异常的输入参数。
图1A和1B说明根据实施例的小芯片系统110的实例。图1A是安装在外围板105上的小芯片系统110的表示,所述外围板可例如通过外围组件互连高速(PCIe)连接到更广泛的计算机系统。小芯片系统110包含封装衬底115、中介层120和四个小芯片,即应用程序小芯片125、主机接口小芯片135、存储器控制器小芯片140和存储器装置小芯片150。其它系统可包含许多额外小芯片以提供额外功能性,如将从以下论述中显而易见。小芯片系统110的封装以封盖或盖板165说明,但可使用用于小芯片系统的其它封装技术和结构。图1B是为了清楚起见标记小芯片系统中的组件的框图。
应用程序小芯片125说明为包含芯片上网络(NOC)130以支持用于小芯片间通信的小芯片网络155。在实例实施例中,NOC 130可包含在应用程序小芯片125上。在实例中,可响应于所选择的支持小芯片(例如,小芯片135、140和150)而定义NOC 130,由此使得设计者能够为NOC 130选择适当数目或小芯片网络连接或交换机。在实例中,NOC 130可位于单独小芯片上,或甚至位于中介层120内。在如本文中所论述的实例中,NOC 130实施小芯片协议接口(CPI)网络。
CPI是基于包的网络,其支持虚拟信道,以实现小芯片之间灵活的高速交互。CPI实现了从小芯片内网络到小芯片网络155的桥接。举例来说,高级可扩展接口(AXI)为设计芯片内通信的广泛使用的规范。然而,AXI规范涵盖大量的物理设计选项,例如物理信道的数目、信号定时、功率等。在单个芯片内,通常选择这些选项以满足设计目标,例如功率消耗、速度等。然而,为了实现小芯片系统的灵活性,使用例如CPI的适配器在可实施在各种小芯片中的各种AXI设计选项之间进行介接。通过实现物理信道到虚拟信道的映射且利用包化协议包封基于时间的信令,CPI跨小芯片网络155桥接小芯片内网络。
CPI可使用多种不同的物理层来发射包。物理层可包含简单的导电连接,或可包含驱动器以增大电压,或以其它方式促进在更长距离内发射信号。此类物理层的实例可包含高级接口总线(AIB),其在各种实例中可在中介层120中实施。AIB使用具有转发时钟的源同步数据传送来发射和接收数据。以单数据速率(SDR)或双数据速率(DDR)相对于所发射的时钟跨AIB传送包。AIB支持各种信道宽度。当在SDR模式下操作时,AIB信道宽度为20位的倍数(20、40、60、……),并且对于DDR模式,AIB信道宽度为40位的倍数:(40、80、120、……)。AIB信道宽度包含发射和接收信号两者。信道可被配置成具有对称数目个发射(TX)和接收(RX)输入/输出(I/O),或具有非对称数目个发射器和接收器(例如,全部为发射器或全部为接收器)。信道可取决于哪一小芯片提供主时钟而充当AIB主控装置或次要装置。AIB 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信道零。
通常,个别小芯片上的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上的不同封装中。对于许多应用程序,可提供多个存储器装置小芯片。在实例中,这些存储器装置小芯片可各自实施一或多种存储技术。在实例中,存储器小芯片可包含不同技术的多个堆叠存储器裸片,例如堆叠或另外与一或多个DRAM装置通信的一或多个SRAM装置。存储器控制器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可各自经实施为具有其它组合逻辑电路系统(例如加法器、移位器、比较器、与门、或门、异或门或其任何合适的组合)或其它逻辑电路系统的状态机。这些组件还可包含一或多个寄存器或缓冲器以存储操作数或其它数据。PAU 270可实施为一或多个处理器核心或控制电路系统,以及具有其它组合逻辑电路系统或其它逻辑电路系统的各种状态机,且还可包含一或多个寄存器、缓冲器或存储器以存储地址、可执行指令、操作数和其它数据,或可实施为处理器。在图3中展示实例PAU270。
写入合并单元255接收读取数据和请求数据,并且合并请求数据和读取数据以产生具有读取数据和将在响应或返回数据包中使用的源地址的单个单元。写入合并单元255将合并后的数据提供到高速缓存210的写入端口(或等效地,提供到高速缓存控制器215以写入到高速缓存210)。任选地,写入合并单元255将合并后的数据提供到网络通信接口225以编码且准备响应或返回数据包以在小芯片网络285上进行发射。
在请求数据是用于内置原子操作时,内置原子单元265从写入合并单元255或直接从裸片外存储器控制器220接收请求和读取数据。进行原子事务,并且使用写入合并单元255将所得数据写入到高速缓存210,或提供到网络通信接口225以编码且准备响应或返回数据包以在小芯片网络285上进行发射。
内置原子单元265处置预定义原子事务,例如提取并递增或比较并交换。在实例中,这些事务对大小为32字节或更小的单个存储器位置进行简单的读取-修改-写入操作。从经由小芯片网络285发射的请求包发起原子存储器事务。请求包具有物理地址、原子操作符类型、操作数大小,并且任选地具有至多32字节的数据。原子事务对高速缓存210的高速缓存存储器行进行读取-修改-写入,从而在必要时填充高速缓存存储器。原子事务响应可为简单的完成响应,或具有至多32字节的数据的响应。实例原子存储器事务包含提取并与、提取并或、提取并异或、提取并加、提取并减、提取并递增、提取并递减、提取并最小、提取并最大、提取并交换和比较并交换。在各种实例实施例中,支持32位和64位操作以及对16或32字节的数据的操作。本文中所公开的方法还与支持更大或更小操作和更多或更少数据的硬件兼容。
内置原子事务还可涉及对关于所请求数据的“标准”原子标准的请求,例如相对简单的单周期整数原子,例如提取并递增或比较并交换,其吞吐量将与不涉及原子操作的常规存储器读取或写入操作相同。对于这些操作,高速缓存控制器215通常可通过(在硬件中)设置危险位来保留高速缓存210中的高速缓存行,使得高速缓存行在转换时无法被另一进程读取。从裸片外存储器275或高速缓存210获得数据,并且将所述数据提供到内置原子单元265以进行所请求原子事务。在原子事务之后,除了将所得数据提供到包编码器240以编码传出数据包以在小芯片网络285上进行发射之外,内置原子单元265还将所得数据提供到写入合并单元255,所述写入合并单元还将所得数据写入到高速缓存210。在将所得数据写入到高速缓存210之后,存储器危险单元260将清除所设置的任何对应危险位。
PAU 270实现了可编程原子事务(也被称为“自定义原子事务”或“自定义原子操作”)的高性能(高吞吐量和低时延),其与内置原子事务的性能相当。代替执行多个存储器存取,响应于原子事务请求指定可编程原子事务和存储器地址,存储器控制器小芯片205中的电路系统将原子事务请求传送到PAU 270,并且设置存储在存储器危险寄存器中的对应于原子操作中所使用的存储器行的存储器地址的危险位,以确保不对所述存储器行进行其它操作(读取、写入或原子事务),接着在原子事务完成后清除所述危险位。为执行可编程原子事务的PAU 270提供的额外、直接数据路径允许额外的写入操作,而不会受到由通信网络的带宽施加的任何限制,并且不会增加通信网络的任何拥塞。
PAU 270包含多线程处理器320,例如基于RISC-V ISA的多线程处理器,其具有一或多个处理器核心,并且进一步具有用于执行可编程原子事务的扩展式指令集。在具备用于执行可编程原子事务的扩展式指令集时,PAU 270的处理器320可体现为一或多个混合线程处理器。在一些实例实施例中,PAU 270的处理器320提供桶式轮循瞬时线程切换以维持较高的每时钟指令速率。
PAU 270可包含本地存储器305,例如静态随机存取存储器(SRAM)、NAND、相变存储器等。本地存储器305可包含寄存器335、指令存储器325和高速缓存330。本地存储器305可通过存储器控制器310由处理器320存取。
可编程原子事务可由PAU 270进行,所述可编程原子事务涉及对关于所请求数据的可编程原子事务的请求。用户可准备呈一或多个指令形式的编程码以提供此类可编程原子事务。举例来说,可编程原子事务可为相对简单的多周期操作,例如浮点加法,或可为相对复杂的多指令操作,例如布隆过滤器插入(Bloom filter insert)。可编程原子事务可与预定原子事务相同或不同,只要它们是由用户而非系统供应商定义的。对于这些操作,高速缓存控制器215可通过(在硬件中)设置危险位来保留高速缓存210中的高速缓存行,使得高速缓存行在转换时无法被另一进程读取。从高速缓存210或裸片外存储器275或280获得数据,并且提供到PAU 270以进行所请求可编程原子事务。在原子操作之后,PAU 270将所得数据提供到网络通信接口225以直接编码具有所得数据的传出数据包以在小芯片网络285上进行发射。另外,PAU 270将所得数据提供到高速缓存控制器215,所述高速缓存控制器还将所得数据写入到高速缓存器210。在将所得数据写入到高速缓存210之后,高速缓存控制器215将清除所设置的任何对应危险位。
在所选择实例中,针对可编程原子事务所采取的方式是提供多个通用的可编程原子请求类型,其可通过小芯片网络285从例如处理器或其它系统组件的起始源发送到存储器控制器小芯片205。高速缓存控制器215或裸片外存储器控制器220将请求标识为可编程原子事务且将所述请求转发到PAU 270。在代表性实施例中,PAU 270:(1)是能够高效地进行用户定义的原子事务的可编程处理元件;(2)可对存储器、算术和逻辑操作以及控制流决策进行加载和存储;并且(3)利用具有新的专用指令集的RISC-V ISA来促进与此类控制器215、220的交互,从而以原子方式进行用户定义的事务。在合乎需要的实例中,RISC-V ISA含有支持高级语言操作符和数据类型的完整指令集。PAU 270可充分利用RISC-V ISA,但通常将会支持更有限的指令集和有限的寄存器文件大小,以在包含在存储器控制器小芯片205内时减小单元的裸片大小。
如上文所提及,在将读取数据写入到高速缓存210之前,存储器危险清除单元260将清除所保留高速缓存行的所设置危险位。因此,在写入合并单元255接收到请求和读取数据时,存储器危险清除单元260可将复位或清除信号发射到高速缓存210以复位所保留高速缓存行的所设置存储器危险位。并且,重置此危险位还将释放涉及所指定(或所保留)的高速缓存行的未决读取或写入请求,从而将未决读取或写入请求提供到入站请求多路复用器以供选择和处理。
图3说明根据本公开的一些实例的可编程原子单元270的框图。如先前所描述,可编程原子单元可包含由存储在指令存储器325中的自定义且对由存储器控制器管理的存储器进行操作的一或多个原子指令集指定的一或多个可编程原子事务。原子事务的指令可由可驻留在存储器控制器小芯片205、其它小芯片(例如应用程序小芯片125)或小芯片外装置上的可编程原子单元270外部的应用程序和/或进程指定。在一些实例中,可编程原子事务的指令在由进程登记时由操作系统加载。为了执行可编程原子事务,发起进程通过将索引提供到可编程原子单元270的本地存储器中来在可编程原子单元270的本地存储器305上发送包含用以执行所请求可编程原子事务的指令的CPI消息。可编程原子事务可在执行期间利用高速缓存330、寄存器335和本地存储器305的其它存储器。本地存储器控制器310可管理本地存储器305。在一些实例中,可编程原子单元270可不需要本地存储器控制器,因为本地存储器305可为SRAM。
在请求特定可编程原子事务的执行时,请求处理器可发送指示可编程原子单元内的特定存储器位置(例如,本地存储器305内的分区)的CPI请求包,所述CPI请求包含有待执行的先前加载的可编程原子指令、待对其上操作的由存储器控制器小芯片205管理的存储器(例如,裸片外存储器275、280)的位置,以及一或多个变量参数。可编程原子单元的处理器(例如,处理器320)接着开始在所指示分区处执行指令。图4说明用于请求特定可编程原子事务的执行的请求包。将字段描述为:
Figure BDA0003313302720000121
Figure BDA0003313302720000131
可编程原子事务通过执行位于由自定义原子分区索引(CaPIdx)指定的可编程原子事务的指令RAM(例如,可编程原子单元270的本地存储器305)中的分区处的第一指令来开始。操作在分区内的第一指令处开始。CaPIdx还可用于索引到含有用于操作的额外信息的控制结构中。额外信息包含用以指示事务是否有效的旗标、用于事务的分区的数目和指令执行限制。
可编程原子单元继续执行指令直到到达终止指令或发生异常为止。在到达其中没有异常发生的终止指令时,将正常响应发送到请求方处理器。提供对可编程原子事务的正常响应作为存储器响应。举例来说,图5说明响应消息。响应消息的字段如下:
Figure BDA0003313302720000132
如果到达指定数目个指令(指令执行限制)或正执行位于适当分区外部的事务中的操作(如由分区的数目和开始分区确定),则发生异常。也就是说,如果下一指令位于具有在开始分区索引与分区的数目(提供在由CaPIdx索引的控制结构中)的总和之后的分区索引的分区内,则引发异常。异常使得执行可编程原子事务停止,并且待由可编程原子单元自动地执行的终止指令释放任何锁、清理事务,并且将响应提供到调用器。
如上文所提及,可编程原子单元不了解其正针对执行的进程,并且因此可通过将指示由于异常而终止可编程原子事务的响应发送到调用处理器来处置异常。在可编程原子事务的请求包中的源字段中指示调用处理器。调用可编程原子的请求处理器可接收此响应,并且接着执行适当错误处置,例如调用操作系统以处置错误。
在一些实例中所公开的为通过首先使可编程原子单元将完成响应发送到请求处理器且接着使请求处理器处置故障(例如,通过告知操作系统异常或捕获)来提供可编程原子事务的异常条件的通知的方法、系统、装置和机器可读媒体。这允许对可编程原子操作的请求具有在仍提供恰当的异常处置的同时发起可编程原子事务所需的最小信息。这还简化了存储器控制器中的可编程原子单元,因为所述可编程原子单元并不直接与系统的操作系统交互。将异常发送回发布处理器的能力允许系统在其中发布PAU操作的执行应用程序中的点处进行捕获。这允许使用调试器的编程以确定哪一PAU操作被捕获、其为何被捕获以及引起异常的输入参数。
在可编程原子单元检测到执行可编程原子事务中的异常条件时,其终止有害操作且强制执行原子返回指令(EAR)。EAR指令利用存储器响应来响应返回发出原始可编程原子请求的处理器,所述存储器响应具有指示异常的原因的状态字段和用于调试异常的原因的可编程原子状态的至多16个字节。
图6说明根据本公开的一些实例的可编程原子捕获响应。使用供应商定义的扩展式标头CPI包来在VC1中发送捕获响应。将字段定义为:
Figure BDA0003313302720000141
Figure BDA0003313302720000151
图7说明根据本公开的一些实例的可编程原子单元将可编程原子事务以异常结束的通知提供到调用处理器的方法700的流程图。在操作705处,可编程原子单元可接收用以执行可编程原子事务的指令。如先前所描述,指令可指定存储在可编程原子单元的存储器内的多个可编程原子指令集中的一个。指令可基于如先前所描述的存储器分区标识符而指定特定可编程原子事务。可从在存储器控制器(例如,存储器控制器205;140)上运行的进程或从在例如应用程序小芯片125的另一小芯片上运行的进程接收请求。
在操作710处,可编程原子单元可进行可编程原子事务的指令。此类指令可包含从由可编程原子单元270为其部分的存储器控制器控制的存储器单元(例如,裸片外存储器275、280)读取值。此类指令可对从存储器读取的值进行操作,并且可将修改后的值存储回存储器(例如,裸片外存储器275、280)。此类操作提供对调用PAU的进程的减少的时延。
除非在操作715处检测到异常,否则操作继续执行直到可编程原子完成为止。如果检测到异常,则在操作720处,终止可编程原子的执行。在操作725处,可编程原子单元产生包含异常类型、程序计数器(PC)(指令指针)和例如存储器转储信息的状态信息的响应消息。可格式化响应,例如图6中所展示。在操作730处,可使用在操作705处被称为可编程原子的处理器的返回地址来将响应发送到调用处理器。
图8说明根据本公开的一些实例的调用处理器通知操作系统的方法800的流程图。方法800可由在存储器控制器140、主机接口135、应用程序小芯片125等上执行的处理器进行。在操作805处,处理器将用以执行可编程原子事务的指令发送到存储器控制器(例如,存储器控制器140)的可编程原子单元。举例来说,例如图4中所展示的消息。在操作810处,处理器从可编程原子单元接收响应。在操作815处检查响应以确定可编程原子事务是否成功地结束或以异常结束。如果在操作815处可编程原子事务以异常结束,则在操作820处,处理器可通知操作系统异常。举例来说,通过触发异常、故障或以其它方式将消息传递到在应用程序小芯片125上执行的操作系统、在其中插入有外围板105的计算机系统上执行的操作系统等。在操作830处,处理器可继续其操作,例如,通过应用一或多个错误处置条件。
图9说明根据本公开的一些实例的存储器控制器900的框图。图9为存储器控制器205的另一实例且展示与图2中所展示的组件相同的组件中的许多者。举例来说,高速缓存902和985为高速缓存210的实例;DRAM 945为裸片外存储器275-280的实例;原子/写入合并980和可编程原子单元995可为原子和合并单元250的实例;图8的其它组件可为例如裸片外存储器控制器220和高速缓存控制器215的图2的其它组件的实例。
NOC请求队列905从片上网络接收请求且提供少量的列队。原子请求队列910从可编程原子单元接收请求且提供少量的列队。入站请求多路复用器(IRM)915在入站存储器请求源之间进行选择。三个源按优先级次序是:存储器危险请求、原子请求和入站NOC请求。高速缓存(读取)902和高速缓存(写入)985是SRAM数据高速缓存。图展示作为两个单独块的高速缓存(902和985),一个提供读取存取,另一个提供写入存取。延迟块925提供一或多个流水线级以模拟用于SRAM高速缓存读取操作的延迟。高速缓存未命中需要对存储器的存取以将所要数据引入到高速缓存中。在此DRAM存取时间期间,存储器行不可用于其它请求。存储器危险块(设置块930和清除块990)维持指示哪些存储器行不可用于存取的危险位的表。尝试存取具有危险的行的入站请求由存储器危险块保持直到清除危险为止。一旦清除危险,就通过入站请求多路复用器重新发送请求。存储器行标签地址经散列处理为危险位索引。可挑选危险位的数目以将危险冲突概率设置到足够低的水平。入站DRAM控制多路复用器(IDCM)935从入站NOC请求和高速缓存逐出请求进行选择。组请求队列940-每一单独管理的DRAM组具有专用的组请求队列以保持请求,直到它们可在相关联DRAM组上调度为止。
调度器942跨组请求队列940进行选择以挑选针对可用DRAM组的请求。DRAM945表示一或多个外部DRAM装置。请求命中数据队列950保持来自高速缓存命中的请求数据直到经选择为止。请求未命中数据队列955保持从DRAM读取的数据直到经选择为止。未命中请求队列960用于保持用于高速缓存未命中的请求包信息直到请求经选择为止。命中请求队列965保持用于高速缓存命中的请求包信息直到经选择为止。数据选择多路复用器(DSM)970在DRAM读取数据与高速缓存命中读取数据之间进行选择。将所选择数据写入到SRAM高速缓存。请求选择多路复用器(RSM)975在命中请求队列960与未命中请求队列965之间进行选择。
原子/写入合并980合并请求数据和DRAM读取数据,或者,如果请求为内置原子,则存储器数据和请求数据用作原子操作的输入。高速缓存(写入)块985表示用于SRAM高速缓存的写入端口。来自NOC写入请求的数据和来自DRAM读取操作的数据写入到SRAM高速缓存。存储器危险(清除)块990表示针对存储器危险结构的危险清除操作。清除危险可释放未决NOC请求且将其发送到入站请求多路复用器。可编程原子单元995处理可编程原子事务。NOC出站响应多路复用器(ORM)997在存储器控制器响应与自定义原子单元响应之间进行选择且将选择发送到NOC。
图10说明实例机器1000的框图,可利用所述机器、在所述机器中或通过所述机器实施本文中所论述的技术(例如,方法)中的任一或多种。如本文中所描述,实例可包含机器1000中的逻辑或多个组件或机构,或可由其操作。电路系统(例如,处理电路系统)是在机器1000的有形实体中实施的电路集合,其包含硬件(例如,简单电路、门、逻辑等)。电路系统成员资格可随时间推移而变得灵活。电路系统包含可在操作时单独或以组合形式进行指定操作的部件。在实例中,电路系统的硬件可被永恒地设计成实行具体操作(例如,硬连线)。在实例中,电路系统的硬件可包含可变地连接的物理组件(例如,执行单元、晶体管、简单电路等),所述物理组件包含以物理方式修改(例如,不变集中式粒子的磁性、电气可移动放置等)以编码具体操作的指令的机器可读媒体。在连接物理组件时,硬件构成的基础电气性质例如从绝缘体改变为导体或反之亦然。指令使得嵌入式硬件(例如,执行单元或加载机构)能够经由可变连接产生硬件中的电路系统的部件以在处于操作中时实行具体操作的部分。因此,在实例中,机器可读媒体元件是电路系统的部分或在装置操作时通信地耦合到电路系统的其它组件。在实例中,物理组件中的任一个可在多于一个电路系统中的多于一个部件中使用。举例来说,在操作下,执行单元可在一个时间点在第一电路系统的第一电路中使用,并且由第一电路系统中的第二电路重新使用,或在不同时间由第二电路系统中的第三电路重新使用。下面是关于机器1000的这些组件的额外实例。
在替代实施例中,机器1000可作为独立装置而操作,或可连接(例如,联网)到其它机器。在联网部署中,机器1000可在服务器-客户端网络环境中作为服务器机器、客户端机器或两者操作。在实例中,机器1000可充当对等式(P2P)(或其它分布式)网络环境中的对等式机器。机器1000可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、移动电话、网络设备、网络路由器、交换机或桥接器,或能够(依序或以其它方式)执行指定将由所述机器采取的动作的指令的任何机器。此外,虽然仅说明单个机器,但术语“机器”也应被视为包含个别地或共同地执行指令集(或多个指令集)以进行本文中所论述的方法中的任一或多种(例如,云计算、软件即服务(SaaS)、其它计算机集群配置)的任何机器集合。
机器(例如,计算机系统)1000可包含硬件处理器1002(例如,中央处理单元(CPU)、图形处理单元(GPU)、硬件处理器核心或其任何组合)、主存储器1004、静态存储器(例如,固件、微码的存储器或存储装置、基本输入输出(BIOS)、统一可扩展固件接口(UEFI)等)1006,以及大容量存储装置1008(例如,硬盘驱动器、磁带机、快闪存储装置或其它块装置),其中的一些或全部可经由互联件(例如,总线)1030彼此通信。机器1000可进一步包含显示单元1010、字母数字输入装置1012(例如,键盘)和用户接口(UI)导航装置1014(例如,鼠标)。在实例中,显示单元1010、输入装置1012和UI导航装置1014可为触摸屏显示器。机器1000可另外包含大容量存储装置(例如,驱动单元)1008、信号产生装置1018(例如,扬声器)、网络接口装置1020,以及一或多个传感器1016,例如全球定位系统(GPS)传感器、指南针、加速度计或其它传感器。机器1000可包含输出控制器1028,例如串行(例如,通用串行总线(USB))、并行或其它有线或无线(例如,红外(IR)、近场通信(NFC)等)连接,以与一或多个外围装置(例如,打印机、读卡器等)通信或控制所述一或多个外围装置。
处理器1002、主存储器1004、静态存储器1006或大容量存储装置1008的寄存器可为或包含其上存储有一或多组数据结构或指令1024(例如,软件)的机器可读媒体1022,所述数据结构或指令体现本文中描述的技术或功能中的任一或多种,或被所述技术或功能利用。指令1024还可在其由机器1000执行期间完全或至少部分地驻留在处理器1002、主存储器1004、静态存储器1006或大容量存储装置1008的寄存器中的任一个内。在实例中,硬件处理器1002、主存储器1004、静态存储器1006或大容量存储装置1008中的一个或任何组合可构成机器可读媒体1022。虽然机器可读媒体1022说明为单个媒体,但术语“机器可读媒体”可包含被配置成存储一或多个指令1024的单个媒体或多个媒体(例如,集中式或分布式数据库,或相关联高速缓存和服务器)。
术语“机器可读媒体”可包含能够存储、编码或携带用于由机器1000执行且使得机器1000进行本公开的技术中的任一或多种的指令,或能够存储、编码或携带由此类指令使用或与此类指令相关联的数据结构的任何媒体。非限制性机器可读媒体实例可包含固态存储器、光学媒体、磁性媒体和信号(例如,射频信号、其它基于光子的信号、声音信号等)。在实例中,非暂时性机器可读媒体包括具有多个粒子的机器可读媒体,所述粒子具有不变式(例如,静止)质量,并且因此是物质的组成。因此,非暂时性机器可读媒体是不包含暂时性传播信号的机器可读媒体。非暂时性机器可读媒体的具体实例可包含:非易失性存储器,例如半导体存储器装置(例如,电可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM))和快闪存储器装置;磁盘,例如内部硬盘和可拆卸磁盘;磁光盘;以及CD-ROM和DVD-ROM盘。
在实例中,存储或以其它方式提供在机器可读媒体1022上的信息可表示指令1024,例如指令1024自身或可从其导出指令1024的格式。可从其导出指令1024的此格式可包含源码、已编码指令(例如,呈压缩或加密形式)、已封装指令(例如,拆分成多个封装)等。表示机器可读媒体1022中的指令1024的信息可由处理电路系统处理到指令中以实施本文中所论述的操作中的任一个。举例来说,从信息(例如,通过处理电路系统处理)导出指令1024可包含:编译(例如,从源码、目标码等)、解译、加载、组织(例如,动态地或静态地链接)、编码、解码、加密、解密、封装、解封装或以其它方式将信息操纵到指令1024中。
在实例中,指令1024的导出可包含(例如,通过处理电路系统)对信息的汇编、编译或解译以从由机器可读媒体1022提供的一些中间或预处理格式创建指令1024。当在多个部分中提供信息时,可组合、解封装和修改所述信息以创建指令1024。举例来说,信息可在一个或数个远程服务器上的多个压缩源码封装(或目标码,或二进制可执行码等)中。源码封装可在经由网络传输时被加密,并且在必要时被解密、解压缩、汇编(例如,链接),并且在本地机器处被编译或解译(例如,到可独立执行的库中等),并且由本地机器执行。
可进一步利用多个传送协议中的任一个(例如,帧中继、因特网协议(IP)、发射控制协议(TCP)、用户数据报协议(UDP)、超文本传送协议(HTTP)等)经由网络接口装置1020使用发射媒体在通信网络1026上发射或接收指令1024。实例通信网络可包含局域网(LAN)、广域网(WAN)、分组数据网络(例如,因特网)、移动电话网络(例如,蜂窝式网络)、普通老式电话(POTS)网络和无线数据网络(例如,被称为
Figure BDA0003313302720000191
的电气电子工程师学会(IEEE)802.11标准系列、被称为/>
Figure BDA0003313302720000192
的IEEE 802.16标准系列)、IEEE 802.15.4标准系列、对等(P2P)网络等等。在实例中,网络接口装置1020可包含一或多个物理插口(例如,以太网、同轴或电话插口)或者一或多个天线以连接到通信网络1026。在实例中,网络接口装置1020可包含多个天线以使用单输入多输出(SIMO)、多输入多输出(MIMO)或多输入单输出(MISO)技术中的至少一种进行无线通信。术语“发射媒体”应被视为包含能够存储、编码或携带指令以用于由机器1000执行的任何无形媒体,并且包含数字或模拟通信信号或用以促进此类软件的通信的其它无形媒体。发射媒体是机器可读媒体。为了更好地说明本文中所描述的方法和设备,非限制性实例实施例集在下文阐述为带编号的实例。
其它注释和实例
实施例1是一种设备,其包括:存储器控制器;可编程原子单元,其耦合到所述存储器控制器,所述可编程原子单元包括:存储器,其存储可编程原子事务;处理器,所述处理器被配置成:从以通信方式耦合到所述可编程原子单元的第二处理器接收用以执行所述可编程原子事务的命令;执行所述可编程原子事务,所述可编程原子事务包括用以进行操作的一或多个指令的集合;在所述可编程原子事务的执行期间确定对应于所述可编程原子事务的异常条件;终止所述指令集的执行;产生指示所述异常的响应;以及将所述响应发送到所述处理器。
在实例2中,根据实例1所述的标的物包含,其中所述处理器通知操作系统所述异常。
在实例3中,根据实例1到2所述的标的物包含,其中所述响应包含程序计数器。
在实例4中,根据实例1到3所述的标的物包含,其中所述响应包含所述可编程原子单元的所述存储器的状态的存储器状态信息。
在实例5中,根据实例1到4所述的标的物包含,其中所述响应包括存储在所述可编程原子单元的寄存器中的一或多个值。
在实例6中,根据实例1到5所述的标的物包含,其中所述可编程原子单元在与所述存储器控制器相同的小芯片上,所述存储器控制器控制随机存取存储器(RAM)组。
在实例7中,根据实例1到6所述的标的物包含,其中所述存储器控制器在耦合到第二小芯片的小芯片上,所述第二小芯片包括所述第二处理器。
在实例8中,根据实例1到7所述的标的物包含,其中所述异常条件超出指令执行限制。
在实例9中,根据实例1到8所述的标的物包含,其中所述异常条件为在所述可编程原子单元的具有大于所述可编程原子事务的第一索引与所述可编程原子事务的分区计数的总和的索引的存储器分区中的指令的执行。
实例10是一种方法,其包括:通过存储器控制器的可编程原子单元从处理器接收用以执行存储在对应于可编程原子事务的所述可编程原子单元的存储器中的可编程原子事务的命令;通过所述可编程原子单元的处理器执行所述可编程原子事务,所述可编程原子事务包括用以进行操作的一或多个指令的集合;在所述可编程原子事务的执行期间确定对应于所述可编程原子事务的异常条件;终止所述指令集的执行;产生指示所述异常的响应;以及将所述响应发送到所述处理器。
在实例11中,根据实例10所述的标的物包含,其中所述处理器通知操作系统所述异常。
在实例12中,根据实例10到11所述的标的物包含,其中所述响应包含程序计数器。
在实例13中,根据实例10到12所述的标的物包含,其中所述响应包含所述可编程原子单元的所述存储器的状态的存储器状态信息。
在实例14中,根据实例10到13所述的标的物包含,其中所述响应包括存储在所述可编程原子单元的寄存器中的一或多个值。
在实例15中,根据实例10到14所述的标的物包含,其中所述可编程原子单元耦合到存储器控制器,所述存储器控制器控制一或多个随机存取存储器(RAM)组。
在实例16中,根据实例10到15所述的标的物包含,其中所述存储器控制器在耦合到第二小芯片的小芯片上,所述第二小芯片包括所述处理器。
在实例17中,根据实例10到16所述的标的物包含,其中所述异常条件超出指令执行限制。
在实例18中,根据实例10到17所述的标的物包含,其中所述异常条件为在所述可编程原子单元的具有大于所述可编程原子事务的第一索引与所述可编程原子事务的分区计数的总和的索引的存储器分区中的指令的执行。
实例19是一种存储指令的非暂时性机器可读媒体,所述指令在执行时使得机器进行操作,所述操作包括:通过存储器控制器的可编程原子单元从处理器接收用以执行存储在对应于可编程原子事务的所述可编程原子单元的存储器中的可编程原子事务的命令;通过所述可编程原子单元的处理器执行所述可编程原子事务,所述可编程原子事务包括用以进行操作的一或多个指令的集合;在所述可编程原子事务的执行期间确定对应于所述可编程原子事务的异常条件;终止所述指令集的执行;产生指示所述异常的响应;以及将所述响应发送到所述处理器。
在实例20中,根据实例19所述的标的物包含,其中所述处理器通知操作系统所述异常。
在实例21中,根据实例19到20所述的标的物包含,其中所述响应包含程序计数器。
在实例22中,根据实例19到21所述的标的物包含,其中所述响应包含所述可编程原子单元的所述存储器的状态的存储器状态信息。
在实例23中,根据实例19到22所述的标的物包含,其中所述响应包括存储在所述可编程原子单元的寄存器中的一或多个值。
在实例24中,根据实例19到23所述的标的物包含,其中所述可编程原子单元耦合到存储器控制器,所述存储器控制器控制一或多个随机存取存储器(RAM)组。
在实例25中,根据实例19到24所述的标的物包含,其中所述存储器控制器在耦合到第二小芯片的小芯片上,所述第二小芯片包括所述处理器。
在实例26中,根据实例19到25所述的标的物包含,其中所述异常条件超出指令执行限制。
在实例27中,根据实例19到26所述的标的物包含,其中所述异常条件为在所述可编程原子单元的具有大于所述可编程原子事务的第一索引与所述可编程原子事务的分区计数的总和的索引的存储器分区中的指令的执行。
实例28是一种设备,其包括:用于通过存储器控制器的可编程原子单元从处理器接收用以执行存储在对应于可编程原子事务的所述可编程原子单元的存储器中的可编程原子事务的命令的构件;用于通过所述可编程原子单元的处理器执行所述可编程原子事务的构件,所述可编程原子事务包括用以进行操作的一或多个指令的集合;用于在所述可编程原子事务的执行期间确定对应于所述可编程原子事务的异常条件的构件;用于终止所述指令集的执行的构件;用于产生指示所述异常的响应的构件;以及用于将所述响应发送到所述处理器的构件。
在实例29中,根据实例28所述的标的物包含,其中所述处理器通知操作系统所述异常。
在实例30中,根据实例28到29所述的标的物包含,其中所述响应包含程序计数器。
在实例31中,根据实例28到30所述的标的物包含,其中所述响应包含所述可编程原子单元的所述存储器的状态的存储器状态信息。
在实例32中,根据实例28到31所述的标的物包含,其中所述响应包括存储在所述可编程原子单元的寄存器中的一或多个值。
在实例33中,根据实例28到32所述的标的物包含,其中所述可编程原子单元耦合到存储器控制器,所述存储器控制器控制一或多个随机存取存储器(RAM)组。
在实例34中,根据实例28到33所述的标的物包含,其中所述存储器控制器在耦合到第二小芯片的小芯片上,所述第二小芯片包括所述处理器。
在实例35中,根据实例28到34所述的标的物包含,其中所述异常条件超出指令执行限制。
在实例36中,根据实例28到35所述的标的物包含,其中所述异常条件为在所述可编程原子单元的具有大于所述可编程原子事务的第一索引与所述可编程原子事务的分区计数的总和的索引的存储器分区中的指令的执行。
实例37是包含指令的至少一个机器可读媒体,所述指令在由处理电路系统执行时使得所述处理电路系统进行操作以实施实例1到36中的任一个。
实例38是一种包括用以实施实例1到36中的任一个的构件的设备。
实例39是一种用以实施实例1到36中的任一个的系统。
实例40是一种用以实施实例1到36中的任一个的方法。
以上详细描述包含对附图的参考,所述附图形成详细描述的部分。所述图式借助于说明展示其中可实践本发明的具体实施例。这些实施例在本文中也被称为“实例”。此类实例可包含除了所展示或所描述的那些元件之外的元件。然而,本发明人还考虑其中仅提供所展示或所描述的那些元件的实例。此外,本发明人还考虑使用关于特定实例(或其一或多个方面)或关于本文中所展示或所描述的其它实例(或其一或多个方面)而展示或描述的那些元件的任何组合或排列的实例(或其一或多个方面)。
在本文件中,如专利文件中常见,使用术语“一”以包含一个或多于一个,这与“至少一个”或“一或多个”的任何其它情形或使用无关。在此文件中,除非另有指示,否则术语“或”用于指代非排它性或,使得“A或B”可包含“A而非B”、“B而非A”以及“A和B”。在所附权利要求书中,术语“包含”和“其中(in which)”用作相应术语“包括”和“其中(wherein)”的通俗等效术语。此外,在所附权利要求书中,术语“包含”和“包括”是开放的,也就是说,包含除了权利要求项中列在这种术语之后的那些元件之外的元件的系统、装置、物件或进程仍被认为处于所述权利要求项的范围内。此外,在以下权利要求书中,术语“第一”、“第二”和“第三”等仅用作标签,并且并不意欲对其对象施加数字要求。
以上描述意欲为说明性的而非限制性的。举例来说,上文所描述的实例(或其一或多个方面)可彼此组合使用。例如所属领域的普通技术人员在查阅以上描述后可使用其它实施例。应理解,所述实施例将不会用于解释或限制权利要求的范围或含义。并且,在以上详细描述中,可将各种特征分组在一起以简化本公开。不应将这一情况解释为意欲未主张的公开特征对于任何权利要求来说是必需的。而是,本发明标的物可在于比特定所公开实施例的所有特征要少的特征。因此,特此将所附权利要求书并入到详细描述中,其中每一权利要求作为单独实施例而独立存在,并且经考虑此类实施例可以各种组合或排列彼此组合。本发明的范围应通过参考所附权利要求书以及此类权利要求书所授予的等效物的完整范围来确定。

Claims (20)

1.一种设备,其包括:
存储器控制器;
可编程原子单元,其耦合到所述存储器控制器,所述可编程原子单元包括:
存储器,其存储可编程原子事务;
处理器,所述处理器被配置成:
从以通信方式耦合到所述可编程原子单元的第二处理器接收用以执行所述可编程原子事务的命令;
执行所述可编程原子事务,所述可编程原子事务包括用以进行操作的一或多个指令的集合;
在所述可编程原子事务的执行期间确定对应于所述可编程原子事务的异常条件;
终止所述一或多个指令的集合的执行;
产生指示所述异常条件的响应;以及
将所述响应发送到所述第二处理器。
2.根据权利要求1所述的设备,其中所述处理器被配置成通知操作系统所述异常。
3.根据权利要求1所述的设备,其中所述响应包含程序计数器。
4.根据权利要求1所述的设备,其中所述响应包含所述可编程原子单元的所述存储器的状态的存储器状态信息。
5.根据权利要求1所述的设备,其中所述响应包括存储在所述可编程原子单元的寄存器中的一或多个值。
6.根据权利要求1所述的设备,其中所述可编程原子单元在与所述存储器控制器相同的小芯片上,所述存储器控制器控制随机存取存储器RAM组。
7.根据权利要求1所述的设备,其中所述存储器控制器在小芯片上,所述小芯片耦合到第二小芯片,所述第二小芯片包括所述第二处理器。
8.根据权利要求1所述的设备,其中所述异常条件超出指令执行限制。
9.根据权利要求1所述的设备,其中所述异常条件为在所述可编程原子单元的具有大于所述可编程原子事务的第一索引与所述可编程原子事务的分区计数的总和的索引的存储器分区中的指令的执行。
10.一种方法,其包括:
通过存储器控制器的可编程原子单元从第一处理器接收用以执行存储在对应于可编程原子事务的所述可编程原子单元的存储器中的可编程原子事务的命令;
通过所述可编程原子单元的第二处理器执行所述可编程原子事务,所述可编程原子事务包括用以进行操作的一或多个指令的集合;
在所述可编程原子事务的执行期间确定对应于所述可编程原子事务的异常条件;
终止所述一或多个指令的集合的执行;
产生指示所述异常条件的响应;以及
将所述响应发送到所述第一处理器。
11.根据权利要求10所述的方法,其进一步包括:
通知操作系统所述异常。
12.根据权利要求10所述的方法,其中所述响应包含程序计数器。
13.根据权利要求10所述的方法,其中所述响应包含所述可编程原子单元的所述存储器的状态的存储器状态信息。
14.根据权利要求10所述的方法,其中所述响应包括存储在所述可编程原子单元的寄存器中的一或多个值。
15.根据权利要求10所述的方法,其中所述可编程原子单元耦合到存储器控制器,所述存储器控制器控制一或多个随机存取存储器RAM组。
16.根据权利要求10所述的方法,其中所述存储器控制器在小芯片上,所述小芯片耦合到第二小芯片,所述第二小芯片包括所述处理器。
17.根据权利要求10所述的方法,其中所述异常条件超出指令执行限制。
18.根据权利要求10所述的方法,其中所述异常条件为在所述可编程原子单元的具有大于所述可编程原子事务的第一索引与所述可编程原子事务的分区计数的总和的索引的存储器分区中的指令的执行。
19.一种存储指令的非暂时性机器可读媒体,所述指令在执行时使得机器进行操作,所述操作包括:
通过存储器控制器的可编程原子单元从第一处理器接收用以执行存储在对应于可编程原子事务的所述可编程原子单元的存储器中的可编程原子事务的命令;
通过所述可编程原子单元的第二处理器执行所述可编程原子事务,所述可编程原子事务包括用以进行操作的一或多个指令的集合;
在所述可编程原子事务的执行期间确定对应于所述可编程原子事务的异常条件;
终止所述一或多个指令的集合的执行;
产生指示所述异常条件的响应;以及
将所述响应发送到所述第一处理器。
20.根据权利要求19所述的非暂时性机器可读媒体,其中所述处理器通知操作系统所述异常。
CN202111222969.XA 2020-10-20 2021-10-20 通知进程或可编程原子操作捕获的方法 Active CN114388040B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/074,779 US11436187B2 (en) 2020-10-20 2020-10-20 Method of notifying a process or programmable atomic operation traps
US17/074,779 2020-10-20

Publications (2)

Publication Number Publication Date
CN114388040A CN114388040A (zh) 2022-04-22
CN114388040B true CN114388040B (zh) 2023-07-14

Family

ID=81186449

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111222969.XA Active CN114388040B (zh) 2020-10-20 2021-10-20 通知进程或可编程原子操作捕获的方法

Country Status (2)

Country Link
US (3) US11436187B2 (zh)
CN (1) CN114388040B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12020062B2 (en) 2020-10-20 2024-06-25 Micron Technology, Inc. Method of executing programmable atomic unit resources within a multi-process system

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11586439B2 (en) 2020-10-20 2023-02-21 Micron Technology, Inc. Detecting infinite loops in a programmable atomic transaction
US11693690B2 (en) 2020-10-20 2023-07-04 Micron Technology, Inc. Method of completing a programmable atomic transaction by ensuring memory locks are cleared
US11740929B2 (en) 2020-10-20 2023-08-29 Micron Technology, Inc. Registering a custom atomic operation with the operating system
US11436187B2 (en) 2020-10-20 2022-09-06 Micron Technology, Inc. Method of notifying a process or programmable atomic operation traps

Family Cites Families (96)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6280743A (ja) * 1985-10-01 1987-04-14 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション アドレス変換例外処理方法
US7447794B1 (en) * 2002-12-04 2008-11-04 Silicon Graphics, Inc. System and method for conveying information
US7197445B1 (en) * 2003-03-14 2007-03-27 Xilinx, Inc. Atomic transaction processing for logic simulation
US8825615B2 (en) 2004-05-11 2014-09-02 Oracle International Corporation Simplifying implementation of custom atomic transactions in a programming environment
US7636829B2 (en) 2006-05-02 2009-12-22 Intel Corporation System and method for allocating and deallocating memory within transactional code
US8352713B2 (en) * 2006-08-09 2013-01-08 Qualcomm Incorporated Debug circuit comparing processor instruction set operating mode
TWI499909B (zh) * 2007-01-26 2015-09-11 Cheriton David 階層式不可改變的內容可定址的記憶體處理器
US20080270708A1 (en) 2007-04-30 2008-10-30 Craig Warner System and Method for Achieving Cache Coherency Within Multiprocessor Computer System
US8561037B2 (en) 2007-08-29 2013-10-15 Convey Computer Compiler for generating an executable comprising instructions for a plurality of different instruction sets
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
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
US9710384B2 (en) 2008-01-04 2017-07-18 Micron Technology, Inc. Microprocessor architecture having alternative memory access paths
US9015399B2 (en) 2007-08-20 2015-04-21 Convey Computer Multiple data channel memory module architecture
US8972958B1 (en) 2012-10-23 2015-03-03 Convey Computer Multistage development workflow for generating a custom instruction set reconfigurable processor
US7941641B1 (en) * 2007-10-01 2011-05-10 Yong-Kyu Jung Retargetable instruction decoder for a computer processor
US20090198920A1 (en) 2008-02-01 2009-08-06 Arimilli Lakshminarayana B Processing Units Within a Multiprocessor System Adapted to Support Memory Locks
JP2011529603A (ja) * 2008-07-28 2011-12-08 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド バーチャル化可能な高度な同期機構
US20100115233A1 (en) 2008-10-31 2010-05-06 Convey Computer Dynamically-selectable vector register partitioning
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
US8209658B2 (en) 2009-02-24 2012-06-26 International Business Machines Corporation Method of creating signatures for classifying program failures
BRPI1013794A8 (pt) 2009-06-26 2017-10-10 Simplivity Corp Método de adaptar um processo de indexação de acesso uniforme com uma memória de acesso não uniforme e sistema de computador
EP2467852B1 (en) 2009-08-20 2019-05-22 Rambus Inc. Atomic memory device
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
US8739164B2 (en) * 2010-02-24 2014-05-27 Advanced Micro Devices, Inc. Automatic suspend atomic hardware transactional memory in response to detecting an implicit suspend condition and resume thereof
US8417897B2 (en) 2010-03-31 2013-04-09 Oracle International Corporation System and method for providing locale-based optimizations in a transactional memory
US8560816B2 (en) * 2010-06-30 2013-10-15 Oracle International Corporation System and method for performing incremental register checkpointing in transactional memory
US8788794B2 (en) 2010-12-07 2014-07-22 Advanced Micro Devices, Inc. Programmable atomic memory using stored atomic procedures
US20120159127A1 (en) * 2010-12-16 2012-06-21 Microsoft Corporation Security sandbox
US9104690B2 (en) * 2011-01-27 2015-08-11 Micron Technology, Inc. Transactional memory
US8869118B2 (en) 2011-06-01 2014-10-21 International Business Machines Corporation System aware performance counters
US8606791B2 (en) 2011-06-17 2013-12-10 Microsoft Corporation Concurrently accessed hash table
US9405552B2 (en) 2011-12-29 2016-08-02 Intel Corporation Method, device and system for controlling execution of an instruction sequence in a data stream accelerator
US10430190B2 (en) 2012-06-07 2019-10-01 Micron Technology, Inc. Systems and methods for selectively controlling multithreaded execution of executable code segments
US9582287B2 (en) * 2012-09-27 2017-02-28 Intel Corporation Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions
US9384065B2 (en) 2012-11-15 2016-07-05 Violin Memory Memory array with atomic test and set
US9164888B2 (en) * 2012-12-10 2015-10-20 Google Inc. Using a logical to physical map for direct user space communication with a data storage device
US9471318B2 (en) 2013-03-15 2016-10-18 International Business Machines Corporation System management and instruction counting
KR20140128821A (ko) 2013-04-29 2014-11-06 삼성전자주식회사 아토믹 라이트 완료 식별자를 ip 코어별로 생성할 수 있는 데이터 저장 장치의 동작 방법과 이를 포함하는 시스템의 동작 방법
US11841844B2 (en) 2013-05-20 2023-12-12 Amazon Technologies, Inc. Index update pipeline
US9767044B2 (en) * 2013-09-24 2017-09-19 Intel Corporation Secure memory repartitioning
US9524219B2 (en) 2013-09-27 2016-12-20 Intel Corporation Atomic transactions to non-volatile memory
US9491099B2 (en) 2013-12-27 2016-11-08 Cavium, Inc. Look-aside processor unit with internal and external access for multicore processors
US9870209B2 (en) * 2014-03-28 2018-01-16 Intel Corporation Instruction and logic for reducing data cache evictions in an out-of-order processor
US9448917B2 (en) * 2014-04-09 2016-09-20 Samsung Electronics Co., Ltd. System on chip and verification method thereof
US11797473B2 (en) 2014-05-29 2023-10-24 Altera Corporation Accelerator architecture on a programmable platform
KR102366808B1 (ko) 2014-10-22 2022-02-23 삼성전자주식회사 캐시 메모리 시스템 및 그 동작방법
US10528345B2 (en) * 2015-03-27 2020-01-07 Intel Corporation Instructions and logic to provide atomic range modification operations
US10732865B2 (en) * 2015-09-23 2020-08-04 Oracle International Corporation Distributed shared memory using interconnected atomic transaction engines at respective memory interfaces
US10318295B2 (en) * 2015-12-22 2019-06-11 Intel Corporation Transaction end plus commit to persistence instructions, processors, methods, and systems
US20170185354A1 (en) * 2015-12-23 2017-06-29 Intel Corporation Techniques for a Write Transaction at a Storage Device
US10007520B1 (en) * 2016-02-25 2018-06-26 Jpmorgan Chase Bank, N.A. Systems and methods for using alternate computer instruction sets
US11157407B2 (en) 2016-12-15 2021-10-26 Optimum Semiconductor Technologies Inc. Implementing atomic primitives using cache line locking
US10649678B2 (en) 2017-01-13 2020-05-12 Arm Limited Partitioning of memory system resources or performance monitoring
US10459817B2 (en) * 2017-01-18 2019-10-29 International Business Machines Corporation Evaluating performance improvement of executing instructions in a first processor over execution on a second processor
US11564687B2 (en) 2017-02-17 2023-01-31 Cilag Gmbh International Method of surgical stapling with end effector component having a curved tip
GB2563384B (en) 2017-06-07 2019-12-25 Advanced Risc Mach Ltd Programmable instruction buffering
US10268502B2 (en) 2017-06-29 2019-04-23 Intel Corporation Methods and apparatus to perform atomic transactions in nonvolatile memory under hardware transactional memory
US11989555B2 (en) 2017-06-29 2024-05-21 Intel Corporation Instructions for remote atomic operations
US11093251B2 (en) 2017-10-31 2021-08-17 Micron Technology, Inc. System having a hybrid threading processor, a hybrid threading fabric having configurable computing elements, and a hybrid interconnection network
KR102407106B1 (ko) * 2018-01-29 2022-06-10 마이크론 테크놀로지, 인크. 프로그래밍 가능한 원자적 동작을 하는 메모리 컨트롤러
US11461527B2 (en) 2018-02-02 2022-10-04 Micron Technology, Inc. Interface for data communication between chiplets or other integrated circuits on an interposer
US11288074B2 (en) 2018-03-31 2022-03-29 Micron Technology, Inc. Loop execution control for a multi-threaded, self-scheduling reconfigurable computing fabric using a reenter queue
KR102454405B1 (ko) 2018-03-31 2022-10-17 마이크론 테크놀로지, 인크. 멀티 스레드, 자체 스케줄링 재구성 가능한 컴퓨팅 패브릭에 대한 효율적인 루프 실행
US10990391B2 (en) 2018-03-31 2021-04-27 Micron Technology, Inc. Backpressure control using a stop signal for a multi-threaded, self-scheduling reconfigurable computing fabric
EP3776188A1 (en) 2018-03-31 2021-02-17 Micron Technology, Inc. Conditional branching control for a multi-threaded, self- scheduling reconfigurable computing fabric
EP3776241B1 (en) 2018-03-31 2023-06-28 Micron Technology, Inc. Loop thread order execution control of a multi-threaded, self-scheduling reconfigurable computing fabric
EP3776237A1 (en) 2018-03-31 2021-02-17 Micron Technology, Inc. Multiple types of thread identifiers for a multi-threaded, self-scheduling reconfigurable computing fabric
US10635622B2 (en) * 2018-04-03 2020-04-28 Xilinx, Inc. System-on-chip interface architecture
US10733171B2 (en) 2018-04-03 2020-08-04 Sap Se Database lock management with cache-optimized hash table
WO2019197811A1 (en) 2018-04-11 2019-10-17 Arm Limited Exception handling in transactions
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
US11513839B2 (en) 2018-05-07 2022-11-29 Micron Technology, Inc. Memory request size management in a 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
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
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
US11513838B2 (en) 2018-05-07 2022-11-29 Micron Technology, Inc. Thread state monitoring in a system having a multi-threaded, self-scheduling processor
US11119782B2 (en) 2018-05-07 2021-09-14 Micron Technology, Inc. Thread commencement using a work descriptor packet in a 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
US11068305B2 (en) 2018-05-07 2021-07-20 Micron Technology, Inc. System call management in a user-mode, multi-threaded, self-scheduling processor
US11119972B2 (en) 2018-05-07 2021-09-14 Micron Technology, Inc. Multi-threaded, self-scheduling processor
US11561897B2 (en) 2018-07-16 2023-01-24 Visa International Service Association Dynamic cache size management of multi-tenant caching systems
US10929060B2 (en) * 2018-07-17 2021-02-23 Arm Limited Data access request specifying enable vector
US10896001B1 (en) * 2018-09-27 2021-01-19 Amazon Technologies, Inc. Notifications in integrated circuits
US10642538B1 (en) * 2018-09-28 2020-05-05 Cadence Design Systems, Inc. Multi-channel memory interface
US11461045B2 (en) 2019-03-29 2022-10-04 Advanced Micro Devices, Inc. Platform agnostic atomic operations
US10783295B1 (en) * 2019-04-30 2020-09-22 Xilinx, Inc. Netlist partitioning for designs targeting a data processing engine array
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
US11403023B2 (en) 2020-10-20 2022-08-02 Micron Technology, Inc. Method of organizing a programmable atomic unit instruction memory
US11586439B2 (en) 2020-10-20 2023-02-21 Micron Technology, Inc. Detecting infinite loops in a programmable atomic transaction
WO2022086789A1 (en) 2020-10-20 2022-04-28 Micron Technology, Inc. Method of executing programmable atomic unit resources within a multi-process system
US11740929B2 (en) 2020-10-20 2023-08-29 Micron Technology, Inc. Registering a custom atomic operation with the operating system
US11693690B2 (en) 2020-10-20 2023-07-04 Micron Technology, Inc. Method of completing a programmable atomic transaction by ensuring memory locks are cleared
US11436187B2 (en) 2020-10-20 2022-09-06 Micron Technology, Inc. Method of notifying a process or programmable atomic operation traps

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12020062B2 (en) 2020-10-20 2024-06-25 Micron Technology, Inc. Method of executing programmable atomic unit resources within a multi-process system

Also Published As

Publication number Publication date
US11436187B2 (en) 2022-09-06
US20220121617A1 (en) 2022-04-21
CN114388040A (zh) 2022-04-22
US20240054100A1 (en) 2024-02-15
US11829323B2 (en) 2023-11-28
US20230004524A1 (en) 2023-01-05

Similar Documents

Publication Publication Date Title
CN114388040B (zh) 通知进程或可编程原子操作捕获的方法
US11403023B2 (en) Method of organizing a programmable atomic unit instruction memory
US11693690B2 (en) Method of completing a programmable atomic transaction by ensuring memory locks are cleared
US11935600B2 (en) Programmable atomic operator resource locking
US11989556B2 (en) Detecting infinite loops in a programmable atomic transaction
US11740929B2 (en) Registering a custom atomic operation with the operating system
US20230244416A1 (en) Communicating a programmable atomic operator to a memory controller
CN116601601A (zh) 在多过程系统内执行可编程原子单元资源的方法
CN114385237B (zh) 用于低时延寄存器错误校正的方法和设备及机器可读介质
US11698791B2 (en) On-demand programmable atomic kernel loading
US11734173B2 (en) Memory access bounds checking for a programmable atomic operator
US12020064B2 (en) Rescheduling a failed memory request in a processor
US20220121486A1 (en) Rescheduling a failed memory request in a processor
CN116569128A (zh) 存储器热点识别
CN114385238A (zh) 减小存储器控制器中的存储器操作的时延

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant