CN117992125A - 减少用于基于存储器的通信队列的索引更新消息 - Google Patents
减少用于基于存储器的通信队列的索引更新消息 Download PDFInfo
- Publication number
- CN117992125A CN117992125A CN202311118694.4A CN202311118694A CN117992125A CN 117992125 A CN117992125 A CN 117992125A CN 202311118694 A CN202311118694 A CN 202311118694A CN 117992125 A CN117992125 A CN 117992125A
- Authority
- CN
- China
- Prior art keywords
- command
- queue
- index
- response
- index update
- 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
- 238000004891 communication Methods 0.000 title abstract description 17
- 230000004044 response Effects 0.000 claims abstract description 127
- 238000000034 method Methods 0.000 claims description 24
- 239000000872 buffer Substances 0.000 description 13
- 238000012545 processing Methods 0.000 description 12
- 230000005540 biological transmission Effects 0.000 description 7
- 230000003068 static effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000002085 persistent effect Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 239000002245 particle Substances 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000013479 data entry Methods 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000002688 persistence Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000001152 differential interference contrast microscopy Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- 239000012212 insulator Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及减少用于基于存储器的通信队列的索引更新消息。一种系统包含:主机装置;存储器装置;及命令管理器,其配置成对用于所述主机装置与所述存储器装置之间的对应命令的相应命令响应进行重新排序。所述命令管理器进一步配置成针对每一命令接收与事务标识符相关联的命令响应。将用于所述命令的索引值写入到重新排序队列。响应于用于所述命令响应的命令响应写入,从所述重新排序队列读取所述索引值。将所述索引值写入于索引更新队列中。传输网络写入索引更新消息。
Description
关于联邦政府资助的研究或开发的声明
本发明是在政府支持下根据由美国能源部授予的第DE-AC05-76RL01830号协议完成的。政府在本发明中具有一定权利。
技术领域
实施例涉及存储器装置。一些实施例涉及存储器装置中的存取请求重新排序。
背景技术
用于计算机或其它电子装置的存储器装置可分类为易失性和非易失性存储器。易失性存储器需要电力来维持其数据,且包含随机存取存储器(RAM)、动态随机存取存储器(DRAM)或同步动态随机存取存储器(SDRAM)等等。非易失性存储器可在未供电时保持所存储数据,且包含快闪存储器、只读存储器(ROM)、电可擦除可编程ROM(EEPROM)、静态RAM(SRAM)、可擦除可编程ROM(EPROM)、电阻可变存储器、相变存储器、存储级存储器、电阻式随机存取存储器(RRAM)和磁阻随机存取存储器(MRAM)等。持久性存储器为系统的架构属性,其中存储在媒体中的数据在系统复位或电力循环之后可用。在一些实例中,非易失性存储器媒体可用于构建具有持久性存储器模型的系统。
存储器装置可耦合到主机(例如,主机计算装置)以存储数据、命令和/或指令以在操作计算机或电子系统时供主机使用。举例来说,数据、命令和/或指令可在计算或其它电子系统的操作期间在主机与存储器装置之间传送。
可应用各种协议或标准以促进主机与例如存储器缓冲器、加速器或其它输入/输出装置的一或多个其它装置之间的通信。在实例中,可使用例如计算高速链路(CXL)的无序协议来提供高带宽和低时延连接性。
发明内容
在一个方面中,本公开提供一种系统,其包括:主机装置;存储器装置;及命令管理器,其配置成对用于主机装置与存储器装置之间的对应命令的相应命令响应进行重新排序,命令管理器进一步配置成:针对每一命令,接收与事务标识符相关联的命令响应;将用于命令的索引值写入到重新排序队列;及响应于用于命令响应的命令响应写入:从重新排序队列读取索引值;将索引值写入到索引更新队列;及传输网络写入索引更新消息。
在另一方面中,本公开提供一种方法,其包括:针对多个命令中的每一命令,接收与事务标识符相关联的命令响应;将用于命令响应的索引值写入到重新排序队列;及响应于用于命令响应的命令响应写入:从重新排序队列读取索引值;基于接收命令响应的时间次序将索引值写入到索引更新队列;及传输用于命令响应的网络写入索引更新消息。
在另一方面中,本公开提供至少一种非暂时性机器可读存储媒体,其包括在由存储器系统的处理器电路执行时使得处理器电路执行包括以下各项的操作的指令:针对多个命令中的每一命令,接收与事务标识符相关联的命令响应;将用于命令响应的索引值写入到重新排序队列;及响应于用于命令响应的命令响应写入:从重新排序队列读取索引值;基于接收命令响应的时间次序将索引值写入到索引更新队列;及传输用于命令响应的网络写入索引更新消息。
附图说明
为了容易地识别对任何特定元件或动作的论述,参考标号中的一或多个最高有效数字指代首次引入所述元件的图号。
图1大体上说明包含主机和存储器装置的实例计算系统的框图。
图2大体上说明使用CXL链路连接主机装置和CXL装置的CXL系统的实例。
图3说明用于对主机处理器与CXL装置之间的主机命令进行重新排序的系统。
图4说明根据一个实施例的例程400。
图5说明实例机器的框图,可利用所述机器、在所述机器中或通过所述机器实施本文所论述的技术中的任何一或多者。
具体实施方式
计算高速链路(CXL)为配置成用于主机装置与其它装置(例如,加速器、存储器缓冲器和智能I/O装置)之间的高带宽、低时延连接性的开放标准互连。CXL设计成通过支持异构处理和存储器系统来促进高性能计算工作负载。CXL在基于PCI高速(PCIe)的I/O语义之上实现一致性和存储器语义以用于优化性能。
在一些实例中,CXL在例如人工智能、机器学习、分析、云基础设施、边缘计算装置、通信系统等的应用中使用。此类应用程序中的数据处理可使用可部署于CPU、GPU、FPGA、智能NIC和可使用CXL链路耦合的其它加速器中的各种标量、向量、矩阵和空间架构。
CXL支持使用一组协议的动态多路复用,所述协议包含输入/输出(基于PCIe的CXL.io)、高速缓存(CXL.cache)和存储器(CXL.memory)语义。在实例中,CXL可用于维持CPU(例如,主机装置或主机处理器)与所附接的CXL装置上的任何存储器之间的统一、一致存储器空间。这一配置允许CPU和其它装置共享资源且在同一存储器区域上操作以获得更高的性能、减少的数据移动和减少的软件堆叠复杂性。在实例中,CPU主要负责维持或管理CXL环境中的一致性。因此,可利用CXL来帮助降低装置成本和复杂性,以及传统上与跨I/O链路的一致性相关联的开销。
CXL在PCIe PHY上运行且提供与PCIe的完全互操作性。在实例中,CXL装置以PCIeGen 1数据速率开始链路训练,且如果其链路伙伴能够支持CXL,那么将CXL协商为其操作协议(例如,使用在PCIe 5.0规格中限定的替代协议协商机制)。因此,装置和平台可通过利用PCIe基础设施而更容易采用CXL,且不必设计和验证PHY、信道、信道扩展装置或PCIe的其它上部层。
在实例中,CXL支持单层级切换以使得能够扇出到多个装置。这使得平台中的多个装置能够迁移到CXL,同时维持后向兼容性和CXL的低时延特性。
在实例中,CXL可提供支持多个逻辑装置(MLD)和单个逻辑装置的汇集的标准化计算结构,例如使用连接到若干主机装置或节点(例如,根端口)的CXL开关。这一特征使得服务器能够汇集可根据工作负载分配的资源,例如加速器和/或存储器。举例来说,CXL可帮助促进资源分配或专用和释放。在实例中,CXL可根据需要帮助将存储器分配和解除分配到各种主机装置。这一灵活性帮助设计者避免过度供给,同时确保最佳性能。
本文中所提及的一些计算密集的应用程序和操作可需要或使用大数据集。存储此类数据集的存储器装置可配置成用于低时延和高带宽和持久性。加载-存储互连架构的一个问题包含保证持久性。CXL可使用软件的架构式流程和标准存储器管理接口来帮助解决所述问题,例如可使得持久性存储器能够从基于控制器的方法移动到直接存储器管理。
可在CPU与CXL装置之间使用一或多个基于存储器的队列。队列用于在于主机处理器上运行的应用程序与一或多个CXL装置上的一组处理元件之间交换命令和响应(例如,用于队列维持更新)。在实例中,队列可为具有通过存储器写入维持的读取和写入指针的循环队列。在命令队列的情况下,用于主机应用程序的软件代理可将一系列命令写入到队列且接着写入到CXL装置上反映队列写入索引的经更新状态的位置。响应于写入索引更新,CXL装置中的逻辑可从队列读取命令。
根据各种实例,CPU与CXL装置之间的网络不保证对读取命令和响应的排序。因此,可反转对地址A和B的一对读取请求的响应次序。举例来说,来自对地址B的读取的响应消息或数据可在来自地址A的数据之前返回。在无序系统(例如,包含使用CXL的系统)中可能会出现操作执行和定时问题。维持由CPU发出的命令流的次序可允许适当地执行命令。在实例中,主机装置可创建一系列命令,所述命令排队以供加速器(例如,CXL装置)执行。加速器可从队列检索命令并且按次序(例如,以先进先出方式)执行命令。
本文所描述的实例提供一种丢弃冗余队列更新消息的机制。在将命令响应写入到主机队列后,更新消息可帮助维持队列写入指针的值。在将一系列响应写入到主机队列之后,可使用这些消息中的若干消息来发送。本发明人已认识到,网络流量可由队列更新消息引起。在实例中,可通过丢弃除最新的有效更新消息外的所有消息来缓解流量。
本文所描述的实例使用基于存储器的队列,通过所述存储器的队列交换命令和响应。队列可为通过存储器写入维持其读取和写入指针的循环队列。队列指针的副本由队列的生产者和消费者接口维持,且用于确定队列的状态(即,满和/或空)。在响应队列的情况下,CXL装置(生产者)可将一系列命令响应写入到队列。为了向主机(消费者)发信号通知新命令已排队,CXL装置将增加队列写入索引的本地副本,且将通过将具有队列索引值的消息写入到专用主机存储器位置来将新索引反映给主机。由CXL装置写入的每一消息都具有一个伴随的索引更新写入。
当命令响应写入到主机响应队列时,CXL装置通常在产生存储器写入以更新主机队列写入索引之前等待来自网络的写入确认。这是因为主机与CXL装置之间的网络并不保证写入的有序传递。如果在命令响应写入之后立即发送索引更新,那么在响应写入之前,索引写入有可能完成。如果发生这种情况,那么主机应用程序代理可能会看到更新,且在响应写入到队列之前尝试读取响应。
为了防止这种竞争条件,写入索引更新可结束,直至从网络接收对响应写入的写入确认为止。根据各种实例,可存在每一队列的单个未完成的索引更新写入。这可归因于网络构造的无序性质。举例来说,如果串行发送对响应A(索引n)和响应B(索引n+1)的写入索引更新,那么对响应B的写入索引可在响应A之前完成。这将使得B响应(n+1)更新的损失,因为A响应将覆写其。本文所描述的实例涉及使用重新排序缓冲器以将命令响应网络写入响应返回到其被发出的次序。
在一些应用中,维持次序实现优化性能并确保有效的结果。举例来说,操作次序强制执行对于执行嵌套循环或矩阵计算可能很重要,其中早期操作的结果可用于后续操作。本文所描述的实施例允许将命令重新排序为它们的发出次序。一些实施方案可允许对来自多个主机队列(例如,多达32个主机队列)中的每一者的命令流进行独立的重新排序。
图1大体上说明包含主机装置102和存储器系统104的计算系统100的实例的框图。主机装置102包含中央处理单元(CPU)或处理器110和主机存储器108。在实例中,主机装置102可包含主机系统,例如个人膝上计算机、台式计算机、数码相机、智能手机、存储卡读卡器和/或支持物联网的装置,以及各种其它类型的主机,且可包含存储器存取装置,例如处理器110。处理器110可包含一或多个处理器核心、并行处理器的系统或其它CPU布置。
存储器系统104包含控制器112、缓冲器114、高速缓存器116和第一存储器装置118。第一存储器装置118可包含例如一或多个存储器模块(例如,单列直插式存储器模块、双列直插式存储器模块等)。第一存储器装置118可包含易失性存储器和/或非易失性存储器,且可包含多芯片装置,所述多芯片装置包括一或多个不同存储器类型或模块。在实例中,计算系统100包含与存储器系统104和主机装置102介接的第二存储器装置120。
主机装置102可包含系统背板且可包含多个处理资源(例如,一或多个处理器、微处理器或某一其它类型的控制电路系统)。计算系统100可任选地包含用于主机装置102、存储器系统104、控制器112、缓冲器114、高速缓存器116、第一存储器装置118、第二存储器装置120的单独集成电路,其中的任何一或多者可包括可连接且一起使用的相应小芯片。在实例中,计算系统100包含服务器系统和/或高性能计算(HPC)系统和/或其一部分。虽然图1中所示的实例说明具有冯诺伊曼架构(Von Neumann architecture)的系统,但本公开的实施例可实施于非冯诺伊曼架构中,所述非冯诺伊曼架构可不包含通常与冯诺依曼架构相关联的一或多个组件(例如,CPU、ALU等)。
在实例中,第一存储器装置118可提供用于计算系统100的主存储器,或第一存储器装置118可包括供计算系统100使用的辅助存储器或存储装置。在实例中,第一存储器装置118或第二存储器装置120包含一或多个存储器单元阵列,例如易失性和/或非易失性存储器单元。举例来说,阵列可以是具有NAND架构的快闪阵列。实施例不限于特定类型的存储器装置。举例来说,存储器装置可包含RAM、ROM、DRAM、SDRAM、PCRAM、RRAM和快闪存储器等等。
在第一存储器装置118包含持久性或非易失性存储器的实施例中,第一存储器装置118可包含快闪存储器装置,例如NAND或NOR快闪存储器装置。第一存储器装置118可包含其它非易失性存储器装置,例如非易失性随机存取存储器装置(例如,NVRAM、ReRAM、FeRAM、MRAM、PCM)、“新兴”存储器装置,例如包含可展现滞后特性的铁电电容器的铁电RAM装置、3-D交叉点(3D XP)存储器装置等,或其组合。
在实例中,控制器112包括媒体控制器,例如非易失性存储器高速(NVMe)控制器。控制器112可配置成对第一存储器装置118执行例如复制、写入、读取、错误校正等操作。在实例中,控制器112可包含专用电路系统和/或指令以执行各种操作。也就是说,在一些实施例中,控制器112可包含电路系统和/或可配置成执行指令以控制数据和/或与数据相关联的地址的移动,例如在缓冲器114、高速缓存器116和/或第一存储器装置118或第二存储器装置120当中。
在实例中,处理器110和控制器112中的至少一者包括用于存储器系统104的命令管理器(CM)。CM可例如从主机装置102接收用于第一存储器装置118或第二存储器装置120中的特定逻辑行地址的读取命令。在一些实例中,CM可至少部分地基于存储在控制器112的寄存器中的指针而确定逻辑行地址与第一行相关联。在实例中,CM可从主机装置102接收用于逻辑行地址的写入命令,且写入命令可与第二数据相关联。在一些实例中,CM可配置成将与第一存储器装置118或第二存储器装置120相关联的存取命令发出到非易失性存储器且在发出读取命令与写入命令之间发出所述存取命令。在一些实例中,CM可将与第一存储器装置118或第二存储器装置120相关联的存取命令发出到非易失性存储器且在发出读取命令与写入命令之间发出所述存取命令。
在实例中,缓冲器114包括数据缓冲器电路,其包含物理存储器中用于例如当数据从一个位置移动到另一位置时临时存储数据的区域。缓冲器114可包含先进先出(FIFO)缓冲器,其中首先处理最旧(例如,先进)数据。在一些实施例中,缓冲器114包含硬件移位寄存器、循环缓冲器或列表。
在实例中,高速缓存器116包括物理存储器的用于临时存储有可能再次使用的特定数据的区域。高速缓存器116可包含数据条目池。在一些实例中,高速缓存器116可配置成根据回写策略操作,其中将数据写入到高速缓存器而不同时写入到第一存储器装置118。因此,在一些实施例中,写入到高速缓存器116的数据在第一存储器装置118中可不具有对应的数据条目。
在实例中,控制器112可接收涉及高速缓存器116的写入请求,且使与写入请求中的每一者相关联的数据写入到高速缓存器116。在一些实例中,控制器112可例如根据或使用CXL协议以三十二(32)千兆传送(GT)/秒的速率接收写入请求。控制器112可类似地接收读取请求,且使存储在例如第一存储器装置118或第二存储器装置120中的数据被检索且经由接口106写入到例如主机装置102。
在实例中,接口106可包含允许在主机装置102与存储器系统104之间传送信息的任何类型的通信路径、总线等。接口的非限制性实例可包含外围组件互连(PCI)接口、外围组件互连高速(PCIe)接口、串行高级技术附件(SATA)接口,和/或微型串行高级技术附件(mSATA)接口等等。在实例中,接口106包含符合计算高速链路(CXL)协议标准的PCIe5.0接口。因此,在一些实施例中,接口106支持至少32GT/s的传送速度。
如本文在别处所类似地描述,CXL为设计成增强计算性能的高速中央处理单元(CPU)到装置和CPU到存储器互连件。CXL技术维持CPU存储器空间(例如,主机存储器108)与所附接的装置或加速器上的存储器(例如,第一存储器装置118或第二存储器装置120)之间的存储器一致性,这允许资源共享以获得更高的性能、减少的软件堆叠复杂性和较低的总体系统成本。随着加速器越来越多地用来补充CPU以支持例如人工智能和机器学习的新兴数据丰富和计算密集的应用程序,CXL设计成用于高速通信的行业开放标准接口。
图2大体上说明使用CXL链路206连接主机装置202和CXL装置204的CXL系统200的实例。在实例中,根据图1中的计算系统100的实例,主机装置202包括或对应于主机装置102,且CXL装置204包括或对应于存储器系统104。存储器系统命令管理器可包括CXL装置204的一部分。在实例中,CXL链路206可使用高速缓存(例如,CXL.cache)、存储器存取(例如,CXL.mem)和数据输入/输出事务(例如,CXL.io)的多路复用协议来支持通信。CXL.io可包含基于PCIe的协议,其用于例如装置发现、配置、初始化、I/O虚拟化和使用非一致加载-存储、生产者-消费者语义的直接存储器存取(DMA)的功能。CXL.cache可使得装置能够使用请求和响应协议从主机存储器(例如,从主机存储器212)高速缓存数据。CXL.memory可使得主机装置202能够例如在虚拟化存储空间中或使用虚拟化存储空间使用附接到CXL装置204的存储器。在实例中,CXL.memory事务可为在主机装置202的下游或外部运行的存储器加载和存储操作。
在图2的实例中,主机装置202包含主机处理器214(例如,包括一或多个CPU或核心)和IO装置。主机装置202可包括或可耦合到主机存储器212。主机装置202可包含配置成促进与CXL装置204的基于CXL的通信和事务的各种电路系统或逻辑。举例来说,主机装置202可包含配置成根据CXL.cache和CXL.mem语义实施事务的一致性和存储器逻辑218,且主机装置202可包含配置成根据CXL.io语义实施事务的PCIe逻辑220。在实例中,主机装置202可配置成使用例如其一致性和存储器逻辑218来管理在CXL装置204处高速缓存的数据的一致性。
主机装置202可进一步包含配置成调制CXL链路206上的通信(例如,使用PCIe PHY层208、210)的主机多路复用器216。协议的多路复用确保时延敏感协议(例如,CXL.cache和CXL.memory)具有与本机处理器间链路相同或类似的时延。在实例中,CXL限定时延敏感协议的响应时间的上限,以帮助确保装置性能不会受到实施一致性和存储器语义的不同装置之间的时延变化的不利影响。
在实例中,对称高速缓存一致性协议可能难以在主机处理器之间实施,因为不同架构可使用不同解决方案,这继而可损害后向兼容性。CXL可通过合并主机装置202处的一致性功能来解决这一问题,例如使用一致性和存储器逻辑218。
CXL装置204可包含加速器装置,其包括各种加速器逻辑220。在实例中,CXL装置204可包括或可耦合到CXL装置存储器224。CXL装置204可包含配置成使用CXL链路206促进与主机装置202的基于CXL的通信和事务的各种电路系统或逻辑。举例来说,加速器逻辑220可配置成根据CXL.cache、CXL.mem和CXL.io语义实施事务。CXL装置204可包含配置成控制在CXL链路206上的通信的CXL装置多路复用器222。
在实例中,加速器逻辑220包括统一辅助引擎(UAE)或具有各种功能单元的计算构造,所述功能单元例如命令管理器(CM)、线程引擎(TE)、流式传输引擎(SE)、数据管理器或数据移动器(DM)或其它单元。计算构造可重新配置且可包含单独的同步和异步流。
加速器逻辑220或其部分可配置成在CXL系统200的应用空间中操作,且在一些实例中,可发起其自身的线程或子线程,其可并行地操作且可任选地使用其它CXL装置204上的资源或单元。通过系统的队列和事务控制可由UAE的CM、TE、SE或DM组件协调。在实例中,每一队列或线程可映射到不同循环迭代,由此支持多维循环。利用发起此类嵌套循环的能力以及其它能力,系统可实现对计算密集的操作的明显时间节省和时延改进。
图3说明根据本文所描述的实例的用于减少发送到主机系统的索引更新写入的数目的系统和信息或处理流程的实例。在实例中,在命令队列304处从CM接收302命令。将命令传输332到主机处理器与CXL装置之间的网络。将命令写入到主机命令队列。执行对主机的额外写入以更新刚写入的条目的主机队列写入指针。在重新排序队列308处接收306对命令的网络响应。可将用于命令响应的经更新主机队列写入索引的值写入到重新排序队列308。根据一些实例,每主机命令队列的重新排序队列308用于从网络接收306响应。
在实例中,命令中的每一者可与例如可由网络使用的事务标识符(TID)相关联。TID可在本文中称为网络写入请求ID和/或ID。在实例中,来自空闲列表310的空闲列表索引可用作TID,且可与来自网络的命令响应一起接收306。当在接收302命令时从空闲列表分配TID时,其用于将重新排序队列段的尾索引写入320到重新映射队列314。当接收306命令响应时,TID用于读取316重新映射队列以检索用于响应的重新排序队列308写入指针。
当接收302命令时,可在重新排序队列308中分配重新排序队列条目。重新排序队列条目可对应于来自尾索引表312的尾索引条目。通过命令的主机队列ID可确定来自尾索引表的尾索引的值。尾索引可与重新排序队列308的特定写入地址相关联。
在此实例中,重新排序队列308和重新映射队列314中的每一者可配置成接收读取地址RA、数据输入DI、写入地址WA、传入数据输入DI,且可配置成提供传出数据输出DO。重新排序队列被组织为一系列逻辑循环队列。每一循环队列与由命令指定的主机队列ID相关联。在此实例中,重新排序队列内的逻辑队列段的数目是32。应理解,本文中的逻辑队列段可被描述为队列和/或段。
根据各种实施例,可从空闲列表310分配条目。空闲列表310可包含可用于分配的索引或缓冲器指针的列表。所分配空闲列表310条目的空闲列表索引可用于存取318重新映射队列314。当分配空闲列表条目时,用与请求主机队列ID相关联的重新排序队列的尾索引写入重新映射队列314中的对应条目。
重新映射队列314返回当发送命令时分配的重新排序队列尾索引。由重新映射队列314返回的尾索引为待写入到重新排序队列308的响应提供写入地址。当将响应写入到重新排序队列时,将ID返回到空闲列表310且释放重新映射队列条目。
响应于分配重新排序队列条目,递增所选择重新排序队列段的尾索引,以指向重新排序队列308中的下一条目。紧接随后的读取请求可与重新排序队列308中的下一条目相关联。
根据各种实例,每一主机队列与索引更新队列334相关联。索引更新队列334的头部处的条目可用于构建网络写入索引更新消息。用于相应不同主机队列的索引更新队列334可仲裁发送其相应更新消息。因为每一主机队列可能仅具有单个未完成的索引更新消息,所以特定索引更新队列334可在重新进入仲裁以发送下一个更新之前等待接收到当前索引更新的网络写入响应。
在等待来自网络的写入确认时,特定主机队列的多个命令响应可能已退出330重新排序队列308,从而产生在用于主机队列的索引更新队列334中待定的多个写入索引更新。因为命令响应中的每一者按次序被取消,所以其相关联的索引更新以递增单调次序存储于索引更新队列334中。
另一过程可用于确定何时可从重新排序队列308移除条目。根据各种实施例,可使用每主机队列的一个有效向量324。可有将效向量324的宽度设置为重新排序队列308段中的条目的数目。当将读取响应写入到重新排序队列308时,设置322向量中对应于重新排序队列条目的有效位。
每一重新排序队列308段可以具有来自头指针表328的相应头指针。在实例中,头指针是与重新排序队列308相关联的索引,且所述头指针对应于将从重新排序队列308段读取的下一有序条目。
有效向量324和重新排序队列308的头指针两者可用于确定何时可从重新排序队列308移除条目。举例来说,如果有效向量324中对应于当前头指针的值的位被设置,那么可知道所述条目以发出次序含有下一写入响应。可接着从重新排序队列308读取所述写入响应。当从重新排序队列308读取条目时,递增头指针并且清除有效向量324中的对应位。仲裁处理器326使用有效位来确定是否有任何数据包准备好发送到索引更新队列334。仲裁处理器326可通过确定是否为对应于重新排序队列308中的头指针位置的条目设置有效位来这样做。一旦从重新排序队列移除经重新排序的读取响应,就释放重新排序队列条目。
索引更新队列334被组织为逻辑循环队列的集合。举例来说,索引更新队列334可被组织为32个逻辑循环队列的集合。每一队列具有尾指针和头指针。将新条目写入到尾指针。头指针用于从队列读取条目。当当前索引更新完成且允许索引更新队列334发送另一更新时,其将检查以查看对于每一主机命令队列,索引更新队列334中的多少条目是有效的。如果单个条目有效,那么使用存储于索引更新队列334中的写入索引来构建新写入索引更新消息。如果在索引更新队列334中超过一个条目是有效的,那么索引更新队列334中除最后一个有效条目外的所有条目都可被丢弃336。这是因为响应按次序被取消,且存储于索引更新队列中的索引是连续且单调增加的。索引更新队列334的当前头部与尾部之间的条目全部是有效的,但仅发送尾条目,因为其对应于已经完成的最后响应写入。最后一个条目中的索引用于构建338网络写入索引更新消息,且剩余条目由弹出和删除模块336丢弃。当相比于传统方法时,使用本文所描述的系统和方法减少索引写入更新的数目可减少网络和主机存储器带宽。
图4说明根据本文所描述的实例的用于减少发送到主机系统的索引更新写入的数目的过程。在框402中,例程400包含针对多个命令中的每一命令接收与事务标识符相关联的命令响应。
在框404中,例程400将用于命令响应的索引值写入到重新排序队列。根据各种实例,从空闲列表为命令分配空闲列表条目。空闲列表条目可与命令的事务标识符相关联。所分配的空闲列表条目用于存取重新映射队列。重新映射队列为待写入到重新排序队列的命令响应提供写入地址。
在框406中,例程400响应于用于命令响应的命令响应写入而从重新排序队列读取索引值。在框408中,例程400基于接收命令的时间次序将索引值写入到索引更新队列。举例来说,索引更新队列可为FIFO队列。响应于将索引值写入到索引更新队列,可为索引值设置有效位。
在框410中,例程400传输用于命令响应的网络写入索引更新消息。响应于传输索引更新消息,可确定索引更新队列中具有已设置有效位的条目的数目。响应于确定索引更新队列中的一个条目具有已设置有效位,可传输对应于索引更新队列中的一个条目的新索引更新消息。响应于确定索引更新队列中的超过一个条目具有已设置有效位,可传输对应于索引更新队列的有效尾条目的新索引更新消息。在一些情况下,可丢弃除尾值之外的所有索引更新值。
图5说明实例机器500的框图,可利用所述机器、在所述机器中或通过所述机器实施本文所论述的技术(例如,方法)中的任何一或多者。如本文所描述,实例可包含机器500中的逻辑或多个组件或机构,或可由机器500中的逻辑或多个组件或机构操作。电路系统(例如,处理电路系统)是在机器500的有形实体中实施的电路的集合,所述实体包含硬件(例如,简单电路、门、逻辑等)。电路系统成员资格可随时间推移而灵活变化。电路系统包含可在操作时单独或以组合方式执行指定操作的部件。在实例中,可将电路系统的硬件不变地设计成进行特定操作(例如,硬连线)。在实例中,电路系统的硬件可包含可变连接的物理组件(例如,执行单元、晶体管、简单电路等),所述物理组件包含以物理方式修改(例如,恒定质量的粒子的磁、电、可移动放置等)以编码特定操作的指令的机器可读媒体。在连接物理组件时,硬件构成的基础电性质例如从绝缘体改变成导体,或反之亦然。指令使得嵌入式硬件(例如,执行单元或加载机构)能够经由可变连接在硬件中创建电路系统的部件,以在操作时进行特定操作的部分。因此,在实例中,机器可读媒体元件是电路系统的部分或在装置操作时以通信方式耦合到电路系统的其它组件。在实例中,物理组件中的任一者可用于超过一个电路系统中的超过一个部件中。举例来说,在操作下,执行单元可在一个时间点在第一电路系统的第一电路中使用,且在不同时间由第一电路系统中的第二电路重新使用,或由第二电路系统中的第三电路重新使用。
在替代实施例中,机器500可充当独立装置或可连接(例如,联网)到其它机器。在联网部署中,机器500可在服务器-客户端网络环境中以服务器机器、客户端机器或这两者的容量操作。在实例中,机器500可充当对等(P2P)(或其它分布式)网络环境中的对等机器。机器500可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、移动电话、网络设备、网络路由器、交换机或桥接器,或能够(依序或以其它方式)执行指定将由所述机器采取的动作的指令的任何机器。此外,虽然仅说明单个机器,但术语“机器”也应被视为包含个别地或共同地执行指令集(或多个指令集)以执行本文中所论述的方法中的任何一或多者(例如,云计算、软件即服务(SaaS)、其它计算机集群配置)的任何机器的集合。
机器500(例如,计算机系统)可包含硬件处理器502或主机装置(例如,主机装置、中央处理单元(CPU)、图形处理单元(GPU)、硬件处理器核心或其任何组合)、主存储器504、静态存储器506(例如,用于固件、微码、基本输入输出(BIOS)、通用可扩展固件接口(UEFI)等的存储器或存储装置)以及大容量存储装置508或存储器裸片堆叠、硬盘驱动器、磁带机、快闪存储装置或其它块装置),其中一些或全部可经由互联件530(例如,总线)彼此通信。机器500可进一步包含显示装置510、字母数字输入装置512(例如,键盘)和用户接口(UI)导航装置514(例如,鼠标)。在实例中,显示装置510、输入装置512和UI导航装置514可为触摸屏显示器。机器500可另外包含大容量存储装置508(例如,驱动单元)、信号产生装置518(例如,扬声器)、网络接口装置520和一或多个传感器516,例如全球定位系统(GPS)传感器、指南针、加速计或其它传感器。机器500可包含输出控制器528,例如串行(例如,通用串行总线(USB))、并行或其它有线或无线(例如,红外(IR)、近场通信(NFC)等)连接,以连通或控制一或多个外围装置(例如,打印机、读卡器等)。
硬件处理器502、主存储器504、静态存储器506或大容量存储装置508的寄存器可为或包含机器可读媒体522,所述机器可读媒体上存储体现或由本文所描述的技术或功能中的任何一或多者使用的数据结构或指令524(例如,软件)的一或多个集合。指令524还可在由机器500执行期间完全或至少部分地驻留在硬件处理器502、主存储器504、静态存储器506或大容量存储装置508的寄存器中的任一者内。在实例中,硬件处理器502、主存储器504、静态存储器506或大容量存储装置508中的一者或任何组合可构成机器可读媒体522。虽然机器可读媒体522说明为单个媒体,但术语“机器可读媒体”可包含配置成存储一或多个指令524的单个媒体或多个媒体(例如,集中式或分布式数据库,或相关联高速缓存器和服务器)。
术语“机器可读媒体”可包含能够存储、编码或携载由机器500执行且使机器500执行本公开的技术中的任何一或多者的指令的任何媒体,或能够存储、编码或携载由此类指令使用或与此类指令相关联的数据结构的任何媒体。非限制性机器可读媒体实例可包含固态存储器、光学媒体、磁性媒体和信号(例如,射频信号、其它基于光子的信号、声音信号等)。在实例中,非暂时性机器可读媒体包括具有多个粒子的机器可读媒体,所述粒子具有不变(例如,静止)质量,且因此为物质组成。因此,非暂时性机器可读媒体是不包含暂时性传播信号的机器可读媒体。非暂时性机器可读媒体的特定实例可包含:非易失性存储器,例如半导体存储器装置(例如,电可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM))和快闪存储器装置;磁盘,例如内部硬盘和可拆卸磁盘;磁光盘;和CD-ROM和DVD-ROM磁盘。
在实例中,存储或以其它方式提供在机器可读媒体522上的信息可表示指令524,例如指令524自身或可从其导出指令524的格式。可从其导出指令524的此格式可包含源代码、已编码指令(例如,呈压缩或加密形式)、已封装指令(例如,拆分成多个封装)等。表示机器可读媒体522中的指令524的信息可由处理电路系统处理到指令中以实施本文中所论述的操作中的任一者。举例来说,从信息(例如,由处理电路系统处理)导出指令524可包含:编译(例如,从源代码、目标代码等)、解译、加载、组织(例如,动态地或静态地链接)、编码、解码、加密、解密、封装、解封装或以其它方式将信息操纵到指令524中。
在实例中,指令524的导出可包含对信息的汇编、编译或解译(例如,通过处理电路系统)以从由机器可读媒体522提供的一些中间或预处理格式创建指令524。当在多个部分中提供信息时,可组合、解封装和修改所述信息以创建指令524。举例来说,信息可在一个或数个远程服务器上的多个压缩源代码包(或目标代码,或二进制可执行代码等)中。源代码包可在经由网络传输时加密,并且在必要时被解密、解压缩、汇编(例如,链接),且在本地机器处被编译或解译(例如,到可独立执行的库中等),并且由本地机器执行。
指令524可进一步利用多个传送协议中的任一者(例如,帧中继、因特网协议(IP)、传输控制协议(TCP)、用户数据报协议(UDP)、超文本传送协议(HTTP)等)经由网络接口装置520使用传输媒体在通信网络526上传输或接收。实例通信网络可包含局域网(LAN)、广域网(WAN)、包数据网络(例如,因特网)、移动电话网络(例如,蜂窝式网络)、普通老式电话(POTS)网络和无线数据网络(例如,被称为的电气电子工程师学会(IEEE)802.11标准系列、被称为/>的IEEE 802.16标准系列)、IEEE 802.15.4标准系列、对等(P2P)网络等等。在实例中,网络接口装置520可包含一或多个物理插口(例如,以太网、同轴或电话插口)或一或多个天线以连接到网络526。在实例中,网络接口装置520可包含多个天线以使用单输入多输出(SIMO)、多输入多输出(MIMO)或多输入单输出(MISO)技术中的至少一者无线地通信。术语“传输媒体”应被认为包含能够存储、编码或携载指令以由机器500执行的任何无形媒体,且包含数字或模拟通信信号或其它无形媒体以有助于此类软件的通信。传输媒体是机器可读媒体。
为了更好地说明本文所描述的方法和设备,非限制性实例实施例集合在下文阐述为带编号的实例。
实例1可包含或使用例如一种系统的标的物,所述系统包括:
主机装置;
存储器装置;及
命令管理器,其配置成对用于主机装置与存储器装置之间的对应命令的相应命令响应进行重新排序,命令管理器进一步配置成:
接收与用于每一命令的事务标识符相关联的命令响应;
将用于命令的索引值写入到重新排序队列;及
响应于用于命令响应的命令响应写入:
从重新排序队列读取索引值;
将索引值写入到索引更新队列中;及
传输网络写入索引更新消息。
实例2可包含或使用或可任选地与根据实例1所述的标的物组合,以任选地包含主机装置使用计算高速链路(CXL)互连耦合到存储器装置。
实例3可包含或使用或可任选地与根据实例1或2中任一项所述的标的物组合,以任选地包含重新排序队列是循环重新排序队列的集合。
实例4可包含或使用或可任选地与根据实例1至3中任一项所述的标的物组合,以任选地包含重新排序队列是32个循环重新排序队列的集合。
实例5可包含或使用或可任选地与根据实例1至4中任一项所述的标的物组合,以任选地包含索引更新队列是循环索引更新队列的集合。
实例6可包含或使用或可任选地与根据实例1至5中任一项所述的标的物组合,以任选地包含索引更新队列是32个循环索引更新队列的集合。
实例7可包含或使用或可任选地与根据实例1至6中任一项所述的标的物组合,以任选地包含命令管理器进一步配置成将命令响应重新排序为使用重新排序队列发出命令的次序。
实例8可包含或使用或可任选地与根据实例1至7中任一项所述的标的物组合,以任选地包含索引更新队列配置成以发出相关联命令的次序存储索引值。
实例9可包含或使用或可任选地与根据实例1至8中任一项所述的标的物组合,以任选地包含命令管理器进一步配置成从空闲列表为命令分配空闲列表条目,空闲列表条目与命令的事务标识符相关联。
实例10可包含或使用或可任选地与根据实例1至9中任一项所述的标的物组合,以任选地包含响应于将索引值写入到索引更新队列,命令管理器配置成设置对应于索引更新队列条目的有效位。
实例11可包含或使用或可任选地与根据实例1至10中任一项所述的标的物组合,以任选地包含命令管理器进一步配置成一次一个地传输索引更新消息。
实例12可包含或使用例如一种方法的标的物,所述方法包括:
针对多个命令中的每一命令,接收与事务标识符相关联的命令响应;
将用于命令响应的索引值写入到重新排序队列;及
响应于用于命令响应的命令响应写入:
从重新排序队列读取索引值;
基于接收命令响应的时间次序将索引值写入到索引更新队列;及
传输用于命令响应的网络写入索引更新消息。
实例13可包含或使用或可任选地与根据实例12所述的标的物组合,以任选地包含索引更新队列是32个循环索引更新队列的集合。
实例14可包含或使用或可任选地与根据实例12或13中任一项所述的标的物组合,以任选地包含索引更新队列配置成以发出相关联命令的次序存储索引值。
实例15可包含或使用或可任选地与根据实例12至14中任一项所述的标的物组合,以任选地包含从空闲列表为命令分配空闲列表条目,空闲列表条目与命令的事务标识符相关联。
实例16可包含或使用或可任选地与根据实例12至15中任一项所述的标的物组合,以任选地包含响应于将索引值写入到索引更新队列,设置对应于索引更新队列条目的有效位。
实例17可包含或使用或可任选地与根据实例16所述的标的物组合,以任选地包含响应于为索引更新队列条目设置有效位,确定索引更新队列在具有已设置有效位的条目的数目。
实例18可包含或使用或可任选地与根据实例17所述的标的物组合,以任选地包含响应于确定索引更新队列中的一个条目具有已设置有效位,传输对应于索引更新队列中的一个条目的新索引更新消息。
实例19可包含或使用或可任选地与根据实例17所述的标的物组合,以任选地包含:
响应于确定索引更新队列中的超过一个条目具有已设置有效位:
传输对应于索引更新队列的有效尾条目的新索引更新消息;及
丢弃索引更新队列中的剩余有效条目。
实例20可包含或使用例如至少一种非暂时性机器可读存储媒体的标的物,所述非暂时性机器可读存储媒体包括在由存储器系统的处理器电路执行时使处理器电路执行包括以下各项的操作的指令:
针对多个命令中的每一命令,接收与事务标识符相关联的命令响应;
将用于命令响应的索引值写入到重新排序队列;及
响应于用于命令响应的命令响应写入:
从重新排序队列读取索引值;
基于接收命令响应的时间次序将索引值写入到索引更新队列;及
传输用于命令响应的网络写入索引更新消息。
以上详细描述包含对随图的参考,所述附图形成详细描述的部分。图式借助于说明展示可实践本发明的特定实施例。这些实施例在本文中也被称作“实例”。这些实例可以包含所展示或描述元件之外的其它元件。然而,本发明人还考虑其中仅提供所展示或描述的那些元件的实例。此外,本发明人还预期使用相对于特定实例(或其一或多个方面)或相对于本文展示或描述的其它实例(或其一或多个方面)展示或描述的那些元件的任何组合或排列的实例(或其一或多个方面)。
在本文件中,如专利文件中常见,使用术语“一(a/an)”以包含一个或多于一个,这与“至少一个”或“一或多个”的任何其它情形或使用无关。在本文中,除非另外指示,否则术语“或”用于指代非排它性或,使得“A或B”可包含“A而非B”、“B而非A”和“A和B”。在所附权利要求书中,术语“包含”和“其中(in which)”用作相应术语“包括”和“其中(wherein)”的简明等效术语。此外,在所附权利要求书中,术语“包含”和“包括”是开放式的,也就是说,包含除了权利要求书中列在此类术语之后的那些元件之外的元件的系统、装置、物件或过程仍被认为处于权利要求书的范围内。此外,在以下权利要求书中,术语“第一”、“第二”和“第三”等仅用作标签,且并不意图对其对象施加数字要求。
以上描述意图为说明性的而非限制性的。举例来说,上文所描述的实例(或其一或多个方面)可彼此组合使用。例如所属领域的普通技术人员在查阅以上描述后可以使用其它实施例。应理解,所述实施例将不用于解释或限制权利要求书的范围或含义。而且,在以上详细描述中,可将各种特征分组在一起以简化本公开。不应将这一情况解释为意图未主张的公开特征对于任何权利要求来说是必需的。相反地,本发明标的物可以在于比特定所公开实施例的所有特征要少。因此,特此将所附权利要求书并入到详细描述中,其中每一权利要求作为单独实施例而独立存在,且经考虑此些实施例可以各种组合或排列彼此组合。本发明的范围应参考所附权利要求书以及此类权利要求书所授予的等效物的完整范围来确定。
Claims (20)
1.一种系统,其包括:
主机装置;
存储器装置;及
命令管理器,其配置成对用于所述主机装置与所述存储器装置之间的对应命令的相应命令响应进行重新排序,所述命令管理器进一步配置成:
针对每一命令,接收与事务标识符相关联的命令响应;
将用于所述命令的索引值写入到重新排序队列;及
响应于用于所述命令响应的命令响应写入:
从所述重新排序队列读取所述索引值;
将所述索引值写入到索引更新队列;及
传输网络写入索引更新消息。
2.根据权利要求1所述的系统,其中所述主机装置使用计算高速链路CXL互连耦合到所述存储器装置。
3.根据权利要求1所述的系统,其中所述重新排序队列是循环重新排序队列的集合。
4.根据权利要求1所述的系统,其中所述重新排序队列是32个循环重新排序队列的集合。
5.根据权利要求1所述的系统,其中所述索引更新队列是循环索引更新队列的集合。
6.根据权利要求1所述的系统,其中所述索引更新队列是32个循环索引更新队列的集合。
7.根据权利要求1所述的系统,其中所述命令管理器进一步配置成将命令响应重新排序为使用所述重新排序队列发出所述命令的次序。
8.根据权利要求1所述的系统,其中所述索引更新队列配置成以发出相关联命令的次序存储索引值。
9.根据权利要求1所述的系统,其中所述命令管理器进一步配置成从空闲列表为所述命令分配空闲列表条目,所述空闲列表条目与所述命令的所述事务标识符相关联。
10.根据权利要求1所述的系统,其中响应于将所述索引值写入到所述索引更新队列,所述命令管理器配置成设置对应于对应索引更新队列条目的有效位。
11.根据权利要求1所述的系统,其中所述命令管理器进一步配置成一次一个地传输索引更新消息。
12.一种方法,其包括:
针对多个命令中的每一命令,接收与事务标识符相关联的命令响应;
将用于所述命令响应的索引值写入到重新排序队列;及
响应于用于所述命令响应的命令响应写入:
从所述重新排序队列读取所述索引值;
基于接收所述命令响应的时间次序将所述索引值写入到索引更新队列;及
传输用于所述命令响应的网络写入索引更新消息。
13.根据权利要求12所述的方法,其中所述索引更新队列是32个循环队列的集合。
14.根据权利要求12所述的方法,其中所述索引更新队列配置成以发出相关联命令的次序存储索引值。
15.根据权利要求12所述的方法,其进一步包括从空闲列表为所述命令分配空闲列表条目,所述空闲列表条目与所述命令的所述事务标识符相关联。
16.根据权利要求12所述的方法,其进一步包括响应于将所述索引值写入到所述索引更新队列,为对应索引更新队列条目设置有效位。
17.根据权利要求16所述的方法,其进一步包括响应于为所述索引更新队列条目设置所述有效位,确定所述索引更新队列中具有所述已设置有效位的条目的数目。
18.根据权利要求17所述的方法,响应于确定所述索引更新队列中的一个条目具有所述已设置有效位,传输对应于所述索引更新队列中的所述一个条目的新索引更新消息。
19.根据权利要求17所述的方法,响应于确定所述索引更新队列中的超过一个条目具有所述已设置有效位:
传输对应于所述索引更新队列的有效尾条目的新索引更新消息;及
丢弃所述索引更新队列中的剩余有效条目。
20.至少一种非暂时性机器可读存储媒体,其包括在由存储器系统的处理器电路执行时使得所述处理器电路执行包括以下各项的操作的指令:
针对多个命令中的每一命令,接收与事务标识符相关联的命令响应;
将用于所述命令响应的索引值写入到重新排序队列;及
响应于用于所述命令响应的命令响应写入:
从所述重新排序队列读取所述索引值;
基于接收所述命令响应的时间次序将所述索引值写入到索引更新队列;及
传输用于所述命令响应的网络写入索引更新消息。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/979,390 | 2022-11-02 | ||
US17/979,390 US20240143184A1 (en) | 2022-11-02 | 2022-11-02 | Reducing index update messages for memory-based communication queues |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117992125A true CN117992125A (zh) | 2024-05-07 |
Family
ID=90834935
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311118694.4A Pending CN117992125A (zh) | 2022-11-02 | 2023-09-01 | 减少用于基于存储器的通信队列的索引更新消息 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20240143184A1 (zh) |
CN (1) | CN117992125A (zh) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9465555B2 (en) * | 2013-08-12 | 2016-10-11 | Seagate Technology Llc | Method and apparatus for efficient processing of disparate data storage commands |
US11055176B1 (en) * | 2020-04-24 | 2021-07-06 | Western Digital Technologies, Inc. | Storage devices hiding parity swapping behavior |
-
2022
- 2022-11-02 US US17/979,390 patent/US20240143184A1/en active Pending
-
2023
- 2023-09-01 CN CN202311118694.4A patent/CN117992125A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20240143184A1 (en) | 2024-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3754498B1 (en) | Architecture for offload of linked work assignments | |
US11809343B2 (en) | Transporting request types with different latencies | |
US20230067771A1 (en) | Tile-based result buffering in memory-compute systems | |
US20240086324A1 (en) | High bandwidth gather cache | |
US11675713B2 (en) | Avoiding deadlock with a fabric having multiple systems on chip | |
US20240143184A1 (en) | Reducing index update messages for memory-based communication queues | |
CN118043792A (zh) | 提供事件消息的可靠接收的机制 | |
US20220121485A1 (en) | Thread replay to preserve state in a barrel processor | |
US20240069805A1 (en) | Access request reordering for memory-based communication queues | |
US20240069795A1 (en) | Access request reordering across a multiple-channel interface for memory-based communication queues | |
US20240070060A1 (en) | Synchronized request handling at a memory device | |
US11940919B2 (en) | Recall pending cache line eviction | |
US20240069800A1 (en) | Host-preferred memory operation | |
US11960403B2 (en) | Variable execution time atomic operations | |
US11960768B2 (en) | Memory-side cache directory-based request queue | |
US20240069804A1 (en) | Control parameter address virtualization | |
US11914516B1 (en) | Memory side cache request handling | |
US20240070082A1 (en) | Evicting a cache line with pending control request | |
US20240070083A1 (en) | Silent cache line eviction | |
WO2023235003A1 (en) | Command fencing for memory-based communication queues | |
US20220121483A1 (en) | Thread execution control in a barrel processor | |
US20240028206A1 (en) | Methods and systems for communications between hardware components | |
US20240028390A1 (en) | Methods and systems for communications between hardware components |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |