CN114385238A - 减小存储器控制器中的存储器操作的时延 - Google Patents
减小存储器控制器中的存储器操作的时延 Download PDFInfo
- Publication number
- CN114385238A CN114385238A CN202111214507.3A CN202111214507A CN114385238A CN 114385238 A CN114385238 A CN 114385238A CN 202111214507 A CN202111214507 A CN 202111214507A CN 114385238 A CN114385238 A CN 114385238A
- Authority
- CN
- China
- Prior art keywords
- memory
- request
- write
- chiplet
- response
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
- G06F13/287—Multiplexed DMA
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1689—Synchronisation and timing concerns
-
- 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/7825—Globally asynchronous, locally synchronous, e.g. network on chip
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30094—Condition code generation, e.g. Carry, Zero flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (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或其它组合件可以针对特定功能的功率、速度或热量生成进行优化——就像传感器可能发生的那样——可以比试图在单个裸片上集成更容易地与其它装置集成。另外,通过减小裸片的总体尺寸,小芯片的成品率往往高于更复杂的单裸片装置。
发明内容
在一个方面,本申请提供一种设备,其包括:存储器阵列;输入队列,其耦合到所述存储器阵列且配置成从请求处理器接收存储器请求;逻辑,其耦合到所述输入队列和所述存储器阵列且配置成:从输入队列选择存储器请求,所述存储器请求从请求处理器接收;确定所述存储器请求是将请求值写入到所述存储器阵列的存储器中的所请求位置的写入请求;响应于确定所述存储器请求是写入请求:向所述请求处理器发送响应,所述响应在执行所述写入请求之前发送;以及在向所述请求处理器发送所述响应之后,执行将所述请求值写入到存储器中的所述所请求位置的所述写入请求。
在另一方面,本申请提供一种方法,其包括:从输入队列选择存储器请求,所述存储器请求从请求处理器接收;确定所述存储器请求是将请求值写入到存储器中的所请求位置的写入请求;响应于确定所述存储器请求是写入请求:向所述请求处理器发送响应,所述响应在执行所述写入请求之前发送;以及在向所述请求处理器发送所述响应之后,执行将所述请求值写入到存储器中的所述所请求位置的所述写入请求。
在又一方面,本申请提供一种存储指令的非暂时性机器可读介质,所述指令在由机器执行时使所述机器执行操作,包括:从输入队列选择存储器请求,所述存储器请求从请求处理器接收;确定所述存储器请求是将请求值写入到存储器中的所请求位置的写入请求;响应于确定所述存储器请求是写入请求:向所述请求处理器发送响应,所述响应在执行所述写入请求之前发送;以及在向所述请求处理器发送所述响应之后,执行将所述请求值写入到存储器中的所述所请求位置的所述写入请求。
附图说明
根据下文给出的详细描述和本公开的各个实施例的附图,将更充分地理解本公开。然而,图式不应视为将本公开限于特定实施例,而是仅用于阐释和理解。
图1A和1B示出根据本公开的一些实例的小芯片系统的实例。
图2示出根据本公开的一些实例的存储器控制器小芯片的实例的组件。
图3-5示出根据本公开的一些实例的存储器控制器的示意图。
图6示出根据本公开的一些实例的处理存储器写入请求的方法的流程图。
图7是根据本公开的一些实例的可在其中或者可用来操作本公开的实施例的机器的实例的框图。
具体实施方式
下文描述的图1提供小芯片系统和在其中操作的组件的实例。如下所述,此类小芯片系统可包含存储器控制器小芯片,其可控制一或多个裸片外存储器装置,如在一些实例中可位于其它小芯片上。在小芯片系统中,例如当处理器等待来自存储器控制器的响应时,最小化处理器停止时间对于性能最大化来说至关重要。例如,请求存储器写入的处理器在存储器写入确认之前不执行请求存储器写入的特定过程的任何其它操作。一旦从存储器控制器接收到确认,所述过程就可继续后续指令。
在一些实例中公开了方法、系统、存储器控制器、装置和机器可读介质,其通过在选定供存储器控制器输入多路复用器处理的写入命令后而不是在存储器写入命令已经执行时返回存储器写入确认来最小化此停止时间。因为在输入多路复用器处选定包后存储器控制器立刻施行存储器排序,所以先前和后续请求的排序保留,且早早提供响应使得处理器能够更早继续其操作,而不具有任何不利影响。
图1A和1B示出根据实施例的小芯片系统110的实例。图1A是安装在外围板105上的小芯片系统110的表示,其可通过例如外围组件互连高速(PCIe)连接到更广泛的计算机系统。小芯片系统110包含封装衬底115、插入件120和四个小芯片,即应用小芯片125、主机接口小芯片135、存储器控制器小芯片140和存储器装置小芯片150。其它系统可包含许多额外的小芯片,用于提供额外功能性,如根据以下论述将清楚的。小芯片系统110的封装示出有盖或罩盖165,但是小芯片系统可以使用其它封装技术和结构。图1B是为了清楚起见标记小芯片系统中的组件的框图。
应用小芯片125示出为包含芯片上网络(NOC)130,以支持用于小芯片间通信的小芯片网络155。在实例实施例中,NOC 130可包含在应用小芯片125上。在实例中,NOC130可响应于选定的支持小芯片(例如,小芯片135、140和150)而限定,由此使得设计者能够为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模式下为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或一半RX和一半RX。CPI包协议可以在SDR或DDR操作模式下使用AIB信道。在实例中,AIB信道以80个I/O单元(即,40个TX和40个RX)的增量配置用于SDR模式,以40个I/O单元的增量配置用于DDR模式。CPI流协议可以在SDR或DDR操作模式下使用AIB信道。此处,在实例中,对于SDR和DDR模式,AIB信道以40个I/O单元为增量。在实例中,每个AIB信道被分配唯一的接口标识符。所述标识符在CPI重置和初始化期间用于确定邻近小芯片之间的成对AIB信道。在实例中,接口标识符是20位值,包括7位小芯片标识符、7位列标识符和6位链路标识符。AIB物理层使用AIB带外移位寄存器传输接口标识符。使用移位寄存器的位32-51跨AIB接口在两个方向上传送20位接口标识符。
AIB将堆叠的一组AIB信道定义为AIB信道列。AIB信道列具有一定数目的AIB信道,外加一个辅助信道。辅助信道含有用于AIB初始化的信号。一列中的所有AIB信道(辅助信道除外)具有相同的配置(例如,全TX、全RX或一半TX和一半RX,以及具有相同数目的数据I/O信号)。在实例中,AIB信道以连续递增的次序编号,从邻近AUX信道的AIB信道开始。邻近AUX的AIB信道被定义为AIB信道零。
通常,各个小芯片上的CPI接口可包含序列化-反序列化(SERDES)硬件。SERDES互连适用于需要低信号计数的高速信令的情形。然而,对于多路复用和解多路复用、错误检测或校正(例如,使用块级循环冗余校验(CRC))、链路级重试或前向错误校正,SERDE可能会导致额外的功耗和更长的时延。然而,当低时延或能耗是超短距离的主要关注点时,可以利用小芯片间互连、具有允许以最小时延进行数据传送的时钟速率的并行接口。CPI包含在这些超短距离小芯片互连中最小化时延和能耗的元件。
对于流控制,CPI采用基于信用的技术。诸如应用小芯片125之类的接收方向诸如存储器控制器小芯片140之类的发送方提供表示可用缓冲器的信用。在实例中,CPI接收方包含用于给定传输时间单位的每个虚拟信道的缓冲器。因此,如果CPI接收方在时间上支持五条消息和单个虚拟信道,那么接收方有五个缓冲器布置成五行(例如,每单位时间一行)。如果支持四个虚拟信道,那么接收方有二十个缓冲器布置成五行。每个缓冲器保存一个CPI包的有效负载。
当发送方向接收方传输时,发送方基于传输使可用信用递减。一旦接收方的所有信用都被耗尽,发送方就停止向接收方发送包。这确保了接收方始终具有可用缓冲器来存储传输。
当接收方处理接收到的包并释放缓冲器时,接收方将可用的缓冲器空间传送回到发送方。然后,此信用返回可供发送方使用,从而允许传输额外信息。
还示出了使用直接、小芯片间技术而不需要NOC 130的小芯片网状网络160。小芯片网状网络160可以在CPI或另一小芯片间协议中实施。小芯片网状网络160通常启用小芯片管道,其中一个小芯片充当管道接口,而管道中的其它小芯片仅与其自身介接。
此外,专用装置接口,例如一或多个行业标准存储器接口145(例如,同步存储器接口,如DDR5、DDR 6),也可用于互连小芯片。将小芯片系统或单独的小芯片连接到外部装置(例如,可以通过所需接口(例如,PCIE接口)连接到更大的系统)。例如,在实例中,可以通过主机接口小芯片135实施此类外部接口,在所描绘的实例中,主机接口小芯片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可各自实施为具有其它组合逻辑电路系统(例如加法器、移位器、比较器、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个字节的数据的响应。实例原子存储器事务包含提取并AND、提取并OR、提取并XOR、提取并相加、提取并减去、提取并增加、提取并减少、提取并取最小值、提取并取最大值、提取并交换和比较并交换。在各种实例实施例中,支持32位和64位操作,以及16个或32个字节的数据的操作。本文所公开的方法还与支持更大或更小操作及更多或更少数据的硬件兼容。
内置原子事务还可涉及对关于所请求数据的“标准”原子标准的请求,例如相对简单的单周期整数原子——例如提取并增加或比较并交换——其吞吐量与不涉及原子操作的常规存储器读取或写入操作相同。对于这些操作,高速缓存控制器215通常可以通过设置危险位(在硬件中)在高速缓存210中保留高速缓存行,使得高速缓存行在转换时不能被另一进程读取。数据从裸片外存储器275或高速缓存210中获得,并提供给内置原子单元265以执行所请求的原子事务。在原子事务之后,除了将所得数据提供给包编码器240以对传出数据包进行编码以便在小芯片网络285上传输之外,内置原子单元265还将所得数据提供给写入合并单元255,写入合并单元255还将所得数据写入到高速缓存210。在将所得数据写入到高速缓存210之后,存储器危险单元260将清除设置的任何对应危险位。
PAU 270实现了可编程原子事务(也称为“自定义原子事务”或“自定义原子操作”)的高性能(高吞吐量和低时延),与内置原子事务的性能相当。响应于指定可编程原子事务和存储器地址的原子事务请求,存储器控制器小芯片205中的电路系统并不是执行多个存储器存取,而是将原子事务请求传送到PAU 270,并设置存储在存储器危险寄存器中的危险位,所述存储器危险寄存器对应于在原子操作中使用的存储器行的存储器地址,以确保在所述存储器行上不执行任何其它操作(读取、写入或原子事务),然后在完成原子事务时清除其危险位。为执行可编程原子事务的PAU 270提供的额外直接数据路径允许额外的写操作,而不受通信网络带宽施加的任何限制,也不增加通信网络的任何拥塞。
PAU 270包含多线程处理器,例如,基于RISC-V ISA的多线程处理器,其具有一或多个处理器核心,并且进一步具有用于执行可编程原子事务的扩展指令集。当提供有用于执行可编程原子事务的扩展指令集时,PAU 270的处理器可以体现为一或多个混合线程处理器。在一些实例实施例中,PAU 270的处理器提供桶式循环瞬时线程切换,以保持高指令/时钟速率。
PAU 270可包含本地存储器,例如静态随机存取存储器(SRAM)、NAND、相变存储器等等。本地存储器可包含寄存器、指令存储器和高速缓存。本地存储器可由处理器通过存储器控制器存取。
可编程原子事务可由PAU 270执行,涉及对所请求数据的可编程原子事务的请求。用户可以以一或多条指令的形式准备编程代码,以提供此类可编程原子事务。例如,可编程原子事务可以是相当简单的多循环操作,例如浮点加法,或者相对复杂的多指令操作,例如布隆过滤器插入。可编程原子事务可与预定原子事务相同或不同,只要它们是由用户而不是系统供应商定义的。对于这些操作,高速缓存控制器215可以通过设置危险位(在硬件中)在高速缓存210中保留高速缓存行,使得高速缓存行在转换时不能被另一进程读取。数据从高速缓存210或裸片外存储器275或280获得,并提供给PAU 270以执行所请求的可编程原子事务。在原子操作之后,PAU 270将所得数据提供给网络通信接口225,以直接编码具有所得数据的传出数据包,以便在小芯片网络285上传输。此外,PAU 270将所得数据提供给高速缓存控制器215,高速缓存控制器215还将所得数据写入到高速缓存210。在将所得数据写入到高速缓存210之后,高速缓存控制器215将清除所设置的任何对应危险位。
在选定的实例中,用于可编程原子事务的方法是提供多个通用的可编程原子事务请求类型,这些请求类型可通过小芯片网络285从诸如处理器或其它系统组件的发起源发送到存储器控制器小芯片205。高速缓存控制器215或裸片外存储器控制器220将请求识别为可编程原子事务,并将请求转发给PAU 270。在代表性实施例中,PAU 270:(1)是能够有效地执行用户定义的原子事务的可编程处理元件;(2)可以执行加载和存储到存储器、算术和逻辑运算以及控制流决策;和(3)利用RISC-V ISA和一组新的专用指令来促进与此类控制器215、220的交互,从而以原子方式执行用户定义的事务。在理想的实例中,RISC-V ISA含有一整套支持高级语言运算符和数据类型的指令。当包含在存储器控制器小芯片205中时,PAU 270可以利用RISC-V ISA,但通常支持更有限的指令集和有限的寄存器文件大小,以减小单元的裸片尺寸。
如上文所提及,在将读取数据写入到高速缓存210之前,存储器危险单元260将清除为经保留高速缓存行设置的危险位。因此,当写入合并单元255接收到请求和读取数据时,存储器危险单元260可以将重置或清除信号传输到高速缓存210,以重置为经保留高速缓存行设置的存储器危险位。此外,重置此危险位还将释放涉及指定(或经保留)高速缓存行的待决读取或写入请求,从而将待决读取或写入请求提供给流入请求多路复用器进行选择和处理。
图3示出根据本公开的一些实例的与存储器(345)相关联的存储器控制器300的功能示意图。图3是存储器控制器小芯片205的另一实例,并且示出了许多与图2所示相同的组件。例如,高速缓存320和385是高速缓存210的实例;DRAM 345是裸片外存储器275-280的实例;原子/写入合并380和可编程原子单元395可以是原子和合并单元250的实例;图3的其它组件可以是图2的其它组件的实例,例如裸片外存储器控制器220和高速缓存控制器215。NOC请求队列305从芯片上网络接收请求并提供少量队列。原子请求队列310从可编程原子单元接收请求并提供少量队列。流入请求多路复用器(IRM)315在流入存储器请求源之间进行选择。这三个源按优先级顺序是:存储器危险请求、原子请求和流入NOC请求。高速缓存(读取)302和高速缓存(写入)385是SRAM数据高速缓存。此图将高速缓存示为两个单独的块(302和385),一个提供读取存取,另一个提供写入存取。延迟块325提供一或多个管道级来模拟SRAM高速缓存读取操作的延迟。高速缓存未命中需要存取存储器,才能将所需数据放入高速缓存。在一些实例中,如图所示,存储器是DRAM,但在其它实例中,可以使用其它类型的存储器。在此存取时间期间,存储器行不可用于其它请求。存储器危险块(设置块330和清除块390)维护危险位表,指示哪些存储器行不可存取。试图存取带有危险的行的流入请求由存储器危险块保持,直到危险被清除。一旦清除危险,则通过流入请求多路复用器重新发送请求。存储器行标签地址散列为危险位索引。可选择危险位的数目以将危险碰撞概率设置到足够低的水平。流入DRAM控制多路复用器(IDCM)335从流入NOC请求和高速缓存逐出请求中进行选择。组请求队列340——每个单独管理的DRAM组都有一个专用的组请求队列来保持请求,直到可以在相关联的DRAM组上调度请求为止。
调度器342跨组队列340选择以选择对可用DRAM组的请求。DRAM 345表示外部DRAM装置。请求命中数据队列350保持来自高速缓存命中的请求数据,直到被选定为止。请求未命中数据队列355保持从DRAM读取的数据,直到被选定为止。未命中请求队列360用于保持高速缓存未命中的请求包信息,直到选定请求为止。命中请求队列365保持高速缓存命中的请求包信息,直到被选定为止。数据选择多路复用器(DSM)370在DRAM读取数据和高速缓存命中读取数据之间进行选择。所选数据将写入到SRAM高速缓存。请求选择多路复用器(RSM)375在命中请求队列360和未命中请求队列365之间进行选择。
原子/写入合并380合并请求数据和DRAM读取数据,或者,如果请求是内置原子,则存储器数据和请求数据用作原子操作的输入。高速缓存(写入)块385表示SRAM高速缓存的写入端口。来自NOC写入请求的数据和来自DRAM读取操作的数据被写入到SRAM高速缓存。存储器危险(清除)块390表示存储器危险结构的危险清除操作。清除危险可能会释放待决的NOC请求,并将其发送到流入请求多路复用器。可编程原子单元395处理可编程原子事务。NOC流出响应多路复用器(ORM)397在存储器控制器响应和自定义原子单元响应之间进行选择,并将选择发送到NOC。
图4示出处理写入命令的图3的存储器控制器。无论请求的SRAM高速缓存命中还是未命中,流程都是相同的,且用虚线表示。作为实例,从NOC接收的写入命令可以在NOC请求队列305中排队。输入请求多路复用器315可以从NOC请求队列305选择写入请求。可以检查存储器危险,以确定存储器地址是否繁忙。如果正忙,则写入请求将延迟,等待存储器危险清除。一旦清除存储器危险,则写入请求由命中请求队列365处理,并且一旦由请求选择多路复用器375选择,则写入到高速缓存(写入)385。高速缓存(读取)可确定请求的地址是否已经在高速缓存中(这种情况下,值将被更新)。图5示出处理具有高速缓存逐出的写入命令的图3的存储器控制器。在图5中,对于写入未命中,操作在高速缓存中查找要用于当前写入操作的行。如果该行的内容无效(例如,有未写入的更改),则该行将被逐出(写入到存储器)。该行现在转换为新写入的地址。此时,数据被写入到高速缓存,就像写入命中一样(因为行的标签现在与写入请求的地址匹配)。虚线显示当逐出的数据项被发送到IDCM 335、组340、调度器342和DRAM 345时的流。
如先前描述,最小化处理器等待时间对于最大化性能至关重要。例如,当处理器向存储器控制器发出写入命令时,处理器将等待存储器控制器响应写入命令。通过在存储器控制器输入多路复用器(例如,IRM 315)选择写入后发送响应,处理器可以继续处理其它指令,从而最小化处理器必须等待存储器写入请求完成的时间量。从选择请求时起,存储器控制器按每个存储器行进行排序,直到该请求在存储器侧高速缓存或DRAM存储器中执行为止。一旦存储器控制器选择了请求,就会返回写入完成响应,这保证了对相同地址位置的先前和后续请求的排序将被保留。即使存储器危险未清除,这也适用,因为这些请求是按序排队的。
图6示出根据本公开的一些实例的处理存储器写入请求的方法600的流程图。在操作605处,存储器控制器可接收存储器请求。请求可以是读取请求、写入请求、内置原子事务请求、自定义原子事务请求等等。请求可从与存储器控制器在同一芯片上的请求处理器、小芯片系统中的另一芯片(例如,经由芯片间网络,如CPI)等等接收。在操作607处,控制器可将请求置于队列中。例如,芯片上网络请求队列305、原子请求队列310(如果请求是对内置原子事务的请求)等等。
在操作610处,可以从队列之一拉出请求。例如,通过输入请求多路复用器315。如果请求不是写入请求,那么图4的流前进到随后解释的操作620。如果请求是写入请求,那么在操作615处,向发送请求的处理器发送响应。例如,响应可以通过芯片间网络、芯片上网络等等发送。响应在请求写入到存储器之前发送。例如,响应可在向DRAM345发送存储器请求或向高速缓存写入存储器请求之前或在此同时发送。一旦响应发送,就可在操作620处服务存储器请求,例如设置存储器危险位、写入到高速缓存、从高速缓存逐出值等等。
如前文所述,一旦选择了写入请求,就可以保证存储器请求的排序。也就是说,先前选择的请求首先完成,随后选择的请求在当前选择的请求之后完成。
图7示出可利用其、在其中或通过其来实施本文所论述的任何一或多种技术(例如,方法)的实例机器700的框图。如本文所描述,实例可包含机器700中的逻辑或数个组件或机制,或者可由其操作。电路系统(例如,处理电路系统)是在机器700的有形实体中实施的一系列电路,包含硬件(例如,简单的电路、门、逻辑等)。随时间推移,电路系统的部件可以是灵活的。电路系统包含可在操作时单独或组合地执行指定操作的部件。在实例中,电路系统的硬件可以不可变地设计成实施特定操作(例如,硬接线)。在实例中,电路系统的硬件可包含可变连接的物理组件(例如,执行单元、晶体管、简单电路等),包含经物理修改(例如,磁性地、电气地、恒定集结颗粒的可移动放置,等等)对特定操作的指令进行编码的机器可读介质。在连接物理组件时,硬件组成的基础电性质改变,例如,从绝缘体变成导体或反过来。指令使得嵌入式硬件(例如,执行单元或加载机制)能够经由可变连接产生电路系统的部件,从而当在操作中时实施特定操作的部分。因此,在实例中,当装置在操作中时,机器可读介质元件是电路系统的部分或以通信方式耦合到电路系统的其它组件。在实例中,任一物理组件可用于超过一个电路系统的超过一个部件。例如,在操作时,执行单元可在一个时间点用于第一电路系统的第一电路,并且在另一时间由第一电路系统中的第二电路或第二电路系统中的第三电路重复使用。关于机器700的这些组件的额外实例如下。
在替代实施例中,机器700可用作独立装置,或者可以连接(例如,联网)到其它机器。在联网部署中,机器700可在服务器-客户端网络环境中以服务器机器、客户端机器或两者的能力操作。在实例中,机器700可以充当对等(P2P)(或其它分布式)网络环境中的对等机器。机器700可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、移动电话、网络设备、网络路由器、交换机或网桥,或者能够执行指定所述机器要采取的动作的指令(顺序地或以其它方式)的任何机器。此外,虽然仅示出单个机器,但术语“机器”还应被视为包含单独或联合执行一组(或多组)指令以执行本文所论述的任何一或多种方法的任何机器集合,例如云计算、软件即服务(SaaS),其它计算机群集配置。
机器(例如,计算机系统)700可包含硬件处理器702(例如,中央处理单元(CPU)、图形处理单元(GPU)、硬件处理器核心或其任何组合)、主存储器704、静态存储器(例如,用于固件、微码、基本输入输出(BIOS)、统一可扩展固件接口(UEFI)等的存储器或存储装置)706和大容量存储装置708(例如,硬盘驱动器、磁带驱动器、快闪存储装置或其它块装置),其中一些或全部可通过互联件(例如,总线)730彼此通信。机器700可进一步包含显示单元710、字母数字输入装置712(例如,键盘)和用户界面(UI)导航装置714(例如,鼠标)。在实例中,显示单元710、输入装置712和UI导航装置714可以是触摸屏显示器。机器700还可以包含大容量存储装置(例如,驱动单元)708、信号生成装置718(例如,扬声器)、网络接口装置720和一或多个传感器716,例如全球定位系统(GPS)传感器、指南针、加速计或其它传感器。机器700可包含输出控制器728,例如串行(例如,通用串行总线(USB)、并行或其它有线或无线(例如,红外(IR)、近场通信(NFC)等)连接,以通信或控制一或多个外围装置(例如,打印机、读卡器等)。
处理器702、主存储器704、静态存储器706或大容量存储装置708的寄存器可以是或包含机器可读介质722,其上存储有体现本文中所描述的任何一或多个技术或功能或供其使用的一或多组数据结构或指令724(例如,软件)。指令724还可在其由机器700执行期间完全地或至少部分地驻留在处理器702、主存储器704、静态存储器706或大容量存储装置708的寄存器中的任一个内。在实例中,硬件处理器702、主存储器704、静态存储器706或大容量存储装置708中的一个或其任何组合可构成机器可读介质722。尽管机器可读介质722示出为单个介质,但是术语“机器可读介质”可包含配置成存储所述一或多个指令724的单个介质或多个介质(例如,集中式或分布式数据库,或相关联的高速缓存和服务器)。
术语“机器可读介质”可包含能够存储、编码或载送由机器700执行的指令并且使机器700执行本公开的任何一或多种技术的任何介质,或者能够存储,编码或载送由此类指令使用或与之相关联的数据结构的任何介质。非限制性机器可读介质实例可包含固态存储器、光学介质、磁性介质和信号(例如,射频信号、其它基于光子的信号、声音信号等)。在实例中,非暂时性机器可读介质包括具有质量恒定(例如,静止)的多个粒子的机器可读介质,并且因此是物质的组合物。因此,非暂时性机器可读介质是不包含暂时性传播信号的机器可读介质。非暂时性机器可读介质的具体实例可包含:非易失性存储器,例如半导体存储器装置(例如,电可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM))和快闪存储器装置;磁盘,例如内部硬盘和可移动磁盘;磁光盘;以及CD-ROM及DVD-ROM磁盘。
在实例中,存储在机器可读介质722上或以其它方式提供在机器可读介质722上的信息可以表示指令724,例如指令724本身或可从中导出指令724的格式。可从中导出指令724的所述格式可包含源代码、编码指令(例如,呈压缩或加密形式)、打包指令(例如,拆分为多个包)等。机器可读介质722中表示指令724的信息可以通过处理电路系统处理为指令,以实施本文所论述的任何操作。例如,从信息(例如,由处理电路系统进行的处理)导出指令724可包含:编译(例如,从源代码、目标代码等)、解释、加载、组织(例如,动态或静态链接)、编码、解码、加密、解密、打包、解包,或者以其它方式将信息操纵为指令724。
在实例中,指令724的导出可包含(例如,由处理电路系统)对信息的汇编、编译或解释,以从机器可读介质722提供的某种中间或预处理格式创建指令724。当信息以多个部分提供时,可以组合、解包和修改以创建指令724。例如,信息可以在一或若干个远程服务器上的多个压缩源代码包(或目标代码,或二进制可执行代码等)中。源代码包可以在通过网络传输时进行加密,必要时进行解密、解压缩、汇编(例如,链接),并在本地机器上编译或解释(例如,到库中、独立可执行等),并由本地机器执行。
指令724可进一步使用传输介质经由网络接口装置720通过通信网络726利用多个传送协议(例如,帧中继、互联网协议(IP)、传输控制协议(TCP)、用户数据报协议(UDP)、超文本传送协议(HTTP)等等)中的任何一个来传输或接收。实例通信网络可包含局域网(LAN)、广域网(WAN)、包数据网络(例如,互联网)、移动电话网络(例如,蜂窝网络)、普通旧电话(POTS)网络和无线数据网络(例如,电气电子工程师学会(IEEE)802.11标准系列(称为)、IEEE 802.16标准系列(称为))、IEEE 802.15.4标准系列、对等(P2P)网络等。在实例中,网络接口装置720可包含一或多个物理插孔(例如,以太网、同轴或电话插孔)或一或多个天线以连接到通信网络726。在实例中,网络接口装置720可包含多个天线以使用单输入多输出(SIMO)、多输入多输出(MIMO)或多输入单输出(MISO)技术中的至少一个进行无线通信。术语“传输介质”应被视为包含能够存储、编码或载送由机器700执行的指令的任何无形介质,并包含数字或模拟通信信号或其它无形介质,以促进此类软件的通信。传输介质是机器可读介质。为了更好地说明本文描述的方法和设备,下面将一组非限制性实例实施例阐述为由数字识别的实例。
其它注意和实例
实例1是一种设备,其包括:存储器阵列;输入队列,其耦合到所述存储器阵列且配置成从请求处理器接收存储器请求;逻辑,其耦合到所述输入队列和所述存储器阵列且配置成:从输入队列选择存储器请求,所述存储器请求从请求处理器接收;确定所述存储器请求是将请求值写入到所述存储器阵列的存储器中的所请求位置的写入请求;响应于确定所述存储器请求是写入请求:向所述请求处理器发送响应,所述响应在执行所述写入请求之前发送;以及在向所述请求处理器发送所述响应之后,执行将所述请求值写入到存储器中的所述所请求位置的所述写入请求。
在实例2中,实例1的主题包含,其中所述逻辑通过配置成将请求值写入到高速缓存而配置成执行将所述请求值写入到存储器中的所请求位置的所述写入请求。
在实例3中,实例1-2的主题包含,其中所述存储器请求在所述输入队列处从所述设备的外部接口接收。
在实例4中,实例3的主题包含,其中所述存储器请求通过芯片上网络接口接收。
在实例5中,实例1-4的主题包含,其中所述逻辑在第一小芯片上,且所述请求处理器在第二小芯片上。
在实例6中,实例1-5的主题包含,其中所述逻辑通过配置成使用输入多路复用器从多个输入队列选择所述存储器请求而配置成从所述输入队列选择所述存储器请求。
在实例7中,实例1-6的主题包含,其中所述存储器阵列包括在一或多个第二小芯片上经由存储器接口与所述逻辑通信的易失性存储器。
在实例8中,实例1-7的主题包含,其中所述逻辑配置成施行所述写入请求的排序,使得对所述所请求位置的先前写入请求首先完成,对所述所请求位置的后续写入命令在所述写入请求之后完成。
在实例9中,实例1-8的主题包含,其中所述逻辑通过配置成将所述请求值写入到所述存储器的存储器单元而配置成执行将所述请求值写入到存储器中的所述所请求位置的所述写入请求。
在实例10中,实例1-9的主题包含,其中所述逻辑通过配置成将所述请求值写入到对应于所述存储器的写入高速缓存而配置成执行将所述请求值写入到存储器中的所述所请求位置的所述写入请求。
实例11是一种方法,其包括:从输入队列选择存储器请求,所述存储器请求从请求处理器接收;确定所述存储器请求是将请求值写入到存储器中的所请求位置的写入请求;响应于确定所述存储器请求是写入请求:向所述请求处理器发送响应,所述响应在执行所述写入请求之前发送;以及在向所述请求处理器发送所述响应之后,执行将所述请求值写入到存储器中的所述所请求位置的所述写入请求。
在实例12中,实例11的主题包含,其中执行将请求值写入到存储器中的所请求位置的所述写入请求包括将所述请求值写入到高速缓存。
在实例13中,实例11-12的主题包含,其中所述存储器请求跨小芯片系统的外部接口接收。
在实例14中,实例13的主题包含,其中所述存储器请求通过芯片上网络接口接收。
在实例15中,实例11-14的主题包含,其中从所述输入队列选择所述存储器请求包括使用输入多路复用器从多个输入队列选择所述存储器请求。
在实例16中,实例11-15的主题包含,施行所述写入请求的排序使得对所述所请求位置的先前写入请求首先完成,对所述所请求位置的后续写入命令在所述写入请求之后完成。
在实例17中,实例11-16的主题包含,其中执行将所述请求值写入到存储器中的所述所请求位置的所述写入请求包括将所述请求值写入到所述存储器的存储器单元。
在实例18中,实例11-17的主题包含,其中执行将所述请求值写入存储器中的所述所请求位置的所述写入请求包括将所述请求值写入到对应于所述存储器的写入高速缓存。
实例19是一种存储指令的非暂时性机器可读介质,所述指令在由机器执行时使所述机器执行操作,包括:从输入队列选择存储器请求,所述存储器请求从请求处理器接收;确定所述存储器请求是将请求值写入到存储器中的所请求位置的写入请求;响应于确定所述存储器请求是写入请求:向所述请求处理器发送响应,所述响应在执行所述写入请求之前发送;以及在向所述请求处理器发送所述响应之后,执行将所述请求值写入到存储器中的所述所请求位置的所述写入请求。
在实例20中,实例19的主题包含,其中执行将请求值写入到存储器中的所请求位置的所述写入请求的操作包括将所述请求值写入到高速缓存。
在实例21中,实例19-20的主题包含,其中所述存储器请求跨小芯片系统的外部接口接收。
在实例22中,实例21的主题包含,其中所述存储器请求通过芯片上网络接口接收。
在实例23中,实例19-22的主题包含,其中从所述输入队列选择所述存储器请求的操作包括使用输入多路复用器从多个输入队列选择所述存储器请求。
在实例24中,实例19-23的主题包含,其中所述操作进一步包括施行所述写入请求的排序使得对所述所请求位置的先前写入请求首先完成,对所述所请求位置的后续写入命令在所述写入请求之后完成。
在实例25中,实例19-24的主题包含,其中执行将所述请求值写入到存储器中的所述所请求位置的所述写入请求的操作包括将所述请求值写入到所述存储器的存储器单元。
在实例26中,实例19-25的主题包含,其中执行将所述请求值写入存储器中的所述所请求位置的所述写入请求的操作包括将所述请求值写入到对应于所述存储器的写入高速缓存。
实例27是一种设备,其包括:用于从输入队列选择存储器请求的构件,所述存储器请求从请求处理器接收;用于确定所述存储器请求是将请求值写入到存储器中的所请求位置的写入请求的构件;响应于确定所述存储器请求是写入请求:用于向所述请求处理器发送响应的构件,所述响应在执行所述写入请求之前发送;以及在向所述请求处理器发送所述响应之后,用于执行将所述请求值写入到存储器中的所述所请求位置的写入请求的构件。
在实例28中,实例27的主题包含,其中用于执行将请求值写入到存储器中的所请求位置的所述写入请求的构件包括用于将所述请求值写入到高速缓存的构件。
在实例29中,实例27-28的主题包含,其中所述存储器请求跨小芯片系统的外部接口接收。
在实例30中,实例29的主题包含,其中所述存储器请求通过芯片上网络接口接收。
在实例31中,实例27-30的主题包含,其中用于从所述输入队列选择所述存储器请求的构件包括用于使用输入多路复用器从多个输入队列选择所述存储器请求的构件。
在实例32中,实例27-31的主题包含,用于施行所述写入请求的排序的构件使得对所述所请求位置的先前写入请求首先完成,对所述所请求位置的后续写入命令在所述写入请求之后完成。
在实例33中,实例27-32的主题包含,其中用于执行将所述请求值写入到存储器中的所述所请求位置的所述写入请求的构件包括用于将所述请求值写入到所述存储器的存储器单元的构件。
在实例34中,实例27-33的主题包含,其中用于执行将所述请求值写入存储器中的所述所请求位置的所述写入请求的构件包括用于将所述请求值写入到对应于所述存储器的写入高速缓存的构件。
实例35是包含指令的至少一个机器可读介质,所述指令在由处理电路系统执行时使所述处理电路系统执行操作以实施实例1-34中的任一个。
实例36是一种设备,其包括用于实施实例1-34中的任一个的构件。
实例37是一种用于实施实例1-34中的任一个的系统。
实例38是一种用于实施实例1-34中的任一个的方法。
以上详细描述包含对附图的参考,附图形成详细描述的一部分。图式借助于说明示出了可实践本发明的特定实施例。这些实施例在本文中也称为“实例”。此类实例可包含除了所示出或所描述的那些元件之外的元件。然而,本发明人还预期其中仅提供所示出或所描述的那些元件的实例。此外,本发明人还预期使用相对于特定实例(或其一或多个方面)或相对于本文示出或描述的其它实例(或其一或多个方面)而示出或描述的那些元件的任何组合或排列的实例(或其一或多个方面)。
在本文献中,如专利文献中所常见而使用术语“一”以包含一个或一个以上,其独立于“至少一个”或“一或多个”的任何其它例子或使用。在本文献中,术语“或”用于指代非排它性或,使得除非另有指示,否则“A或B”可包含“A而非B”、“B而非A”以及“A和B”。在所附权利要求书中,术语“包含”和“在其中”用作相应术语“包括”和“其中”的简明等效用语。另外,在所附权利要求书中,术语“包含”和“包括”是开放式的,也就是说,权利要求中除了此类术语之后列出的元件之外还包含其它元件的系统、装置、制品或过程仍视为属于所述权利要求的范围。此外,在所附权利要求书中,术语“第一”、“第二”和“第三”等仅用作标记,且并不希望对其对象强加数值要求。
以上描述预期为说明性的而非限制性的。例如,上述实例(或其一或多个方面)可以彼此组合使用。例如所属领域的一般技术人员在查阅以上描述后可使用其它实施例。其基于以下理解而提交:其将不会用于解释或限制权利要求书的范围或含义。另外,在以上具体实施方式中,可将各种特征分组在一起以简化本公开。不应将此解释为期望未主张的公开特征对任何权利要求来说是必需的。实际上,本发明主题可在于特定所公开实施例的不到全部特征。因此,特此将所附权利要求书并入到具体实施方式中,其中每一权利要求作为单独实施例而独立存在,且预期此些实施例可以各种组合或排列彼此组合。本发明的范围应该通过参考所附权利要求书以及此权利要求书被赋予的等效物的完整范围来确定。
Claims (20)
1.一种设备,其包括:
存储器阵列;
输入队列,其耦合到所述存储器阵列且配置成从请求处理器接收存储器请求;
逻辑,其耦合到所述输入队列和所述存储器阵列且配置成:
从输入队列选择存储器请求,所述存储器请求从请求处理器接收;
确定所述存储器请求是将请求值写入到所述存储器阵列的存储器中的所请求位置的写入请求;
响应于确定所述存储器请求是写入请求:
向所述请求处理器发送响应,所述响应在执行所述写入请求之前发送;以及
在向所述请求处理器发送所述响应之后,执行将所述请求值写入到存储器中的所述所请求位置的所述写入请求。
2.根据权利要求1所述的设备,其中所述逻辑通过配置成将请求值写入到高速缓存而配置成执行将所述请求值写入到存储器中的所请求位置的所述写入请求。
3.根据权利要求1所述的设备,其中所述存储器请求在所述输入队列处从所述设备的外部接口接收。
4.根据权利要求3所述的设备,其中所述存储器请求通过芯片上网络接口接收。
5.根据权利要求1所述的设备,其中所述逻辑在第一小芯片上,且所述请求处理器在第二小芯片上。
6.根据权利要求1所述的设备,其中所述逻辑通过配置成使用输入多路复用器从多个输入队列选择所述存储器请求而配置成从所述输入队列选择所述存储器请求。
7.根据权利要求1所述的设备,其中所述存储器阵列包括在一或多个第二小芯片上经由存储器接口与所述逻辑通信的易失性存储器。
8.根据权利要求1所述的设备,其中所述逻辑配置成施行所述写入请求的排序,使得对所述所请求位置的先前写入请求首先完成,对所述所请求位置的后续写入命令在所述写入请求之后完成。
9.根据权利要求1所述的设备,其中所述逻辑通过配置成将所述请求值写入到所述存储器的存储器单元而配置成执行将所述请求值写入到存储器中的所述所请求位置的所述写入请求。
10.根据权利要求1所述的设备,其中所述逻辑通过配置成将所述请求值写入到对应于所述存储器的写入高速缓存而配置成执行将所述请求值写入到存储器中的所述所请求位置的所述写入请求。
11.一种方法,其包括:
从输入队列选择存储器请求,所述存储器请求从请求处理器接收;
确定所述存储器请求是将请求值写入到存储器中的所请求位置的写入请求;
响应于确定所述存储器请求是写入请求:
向所述请求处理器发送响应,所述响应在执行所述写入请求之前发送;以及
在向所述请求处理器发送所述响应之后,执行将所述请求值写入到存储器中的所述所请求位置的所述写入请求。
12.根据权利要求11所述的方法,其中执行将请求值写入到存储器中的所请求位置的所述写入请求包括将所述请求值写入到高速缓存。
13.根据权利要求11所述的方法,其中所述存储器请求跨小芯片系统的外部接口接收。
14.根据权利要求13所述的方法,其中所述存储器请求通过芯片上网络接口接收。
15.根据权利要求11所述的方法,其中从所述输入队列选择所述存储器请求包括使用输入多路复用器从多个输入队列选择所述存储器请求。
16.根据权利要求11所述的方法,其进一步包括施行所述写入请求的排序,使得对所述所请求位置的先前写入请求首先完成,对所述所请求位置的后续写入命令在所述写入请求之后完成。
17.根据权利要求11所述的方法,其中执行将所述请求值写入到存储器中的所述所请求位置的所述写入请求包括将所述请求值写入到所述存储器的存储器单元。
18.根据权利要求11所述的方法,其中执行将所述请求值写入存储器中的所述所请求位置的所述写入请求包括将所述请求值写入到对应于所述存储器的写入高速缓存。
19.一种存储指令的非暂时性机器可读介质,所述指令在由机器执行时使所述机器执行操作,包括:
从输入队列选择存储器请求,所述存储器请求从请求处理器接收;
确定所述存储器请求是将请求值写入到存储器中的所请求位置的写入请求;
响应于确定所述存储器请求是写入请求:
向所述请求处理器发送响应,所述响应在执行所述写入请求之前发送;以及
在向所述请求处理器发送所述响应之后,执行将所述请求值写入到存储器中的所述所请求位置的所述写入请求。
20.根据权利要求19所述的非暂时性机器可读介质,其中执行将请求值写入到存储器中的所请求位置的所述写入请求的操作包括将所述请求值写入到高速缓存。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/074,765 US11455262B2 (en) | 2020-10-20 | 2020-10-20 | Reducing latency for memory operations in a memory controller |
US17/074,765 | 2020-10-20 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114385238A true CN114385238A (zh) | 2022-04-22 |
Family
ID=81185130
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111214507.3A Pending CN114385238A (zh) | 2020-10-20 | 2021-10-19 | 减小存储器控制器中的存储器操作的时延 |
Country Status (2)
Country | Link |
---|---|
US (2) | US11455262B2 (zh) |
CN (1) | CN114385238A (zh) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6151664A (en) * | 1999-06-09 | 2000-11-21 | International Business Machines Corporation | Programmable SRAM and DRAM cache interface with preset access priorities |
US10390114B2 (en) * | 2016-07-22 | 2019-08-20 | Intel Corporation | Memory sharing for physical accelerator resources in a data center |
US11232047B2 (en) * | 2019-05-28 | 2022-01-25 | Rambus Inc. | Dedicated cache-related block transfer in a memory system |
-
2020
- 2020-10-20 US US17/074,765 patent/US11455262B2/en active Active
-
2021
- 2021-10-19 CN CN202111214507.3A patent/CN114385238A/zh active Pending
-
2022
- 2022-09-26 US US17/952,971 patent/US20230019931A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230019931A1 (en) | 2023-01-19 |
US11455262B2 (en) | 2022-09-27 |
US20220121584A1 (en) | 2022-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11693690B2 (en) | Method of completing a programmable atomic transaction by ensuring memory locks are cleared | |
US11935600B2 (en) | Programmable atomic operator resource locking | |
US11403023B2 (en) | Method of organizing a programmable atomic unit instruction memory | |
US20230244416A1 (en) | Communicating a programmable atomic operator to a memory controller | |
US11797311B2 (en) | Asynchronous pipeline merging using long vector arbitration | |
CN116583831A (zh) | 向操作系统注册自定义原子操作 | |
CN116636189A (zh) | 用于网络装置中的缓冲包的包仲裁 | |
US11698791B2 (en) | On-demand programmable atomic kernel loading | |
US11714655B2 (en) | Pipeline merging in a circuit | |
CN114385545B (zh) | 针对可编程原子操作的存储器存取边界检查 | |
US20220121485A1 (en) | Thread replay to preserve state in a barrel processor | |
US11455262B2 (en) | Reducing latency for memory operations in a memory controller | |
US20220121483A1 (en) | Thread execution control in a barrel processor | |
US20220121486A1 (en) | Rescheduling a failed memory request in a processor | |
US20220121487A1 (en) | Thread scheduling control and memory splitting in a barrel processor | |
CN116583828A (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 |