CN115309321A - 用于融合命令的原子处理的方法和存储器设备 - Google Patents
用于融合命令的原子处理的方法和存储器设备 Download PDFInfo
- Publication number
- CN115309321A CN115309321A CN202210481315.7A CN202210481315A CN115309321A CN 115309321 A CN115309321 A CN 115309321A CN 202210481315 A CN202210481315 A CN 202210481315A CN 115309321 A CN115309321 A CN 115309321A
- Authority
- CN
- China
- Prior art keywords
- command
- fused
- burst
- commands
- identifier
- 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
- 238000000034 method Methods 0.000 title claims abstract description 39
- 238000012545 processing Methods 0.000 title claims description 45
- 239000000872 buffer Substances 0.000 claims abstract description 80
- 230000004044 response Effects 0.000 claims description 20
- 238000004891 communication Methods 0.000 description 39
- 238000010586 diagram Methods 0.000 description 20
- 230000008569 process Effects 0.000 description 20
- 230000006870 function Effects 0.000 description 15
- 238000004590 computer program Methods 0.000 description 6
- 241001522296 Erithacus rubecula Species 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 239000000446 fuel Substances 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003155 kinesthetic effect Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
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/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
- 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/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash 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
- G06F13/1621—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by maintaining request order
-
- 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
- G06F13/1626—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
-
- 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/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
-
- 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/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/0656—Data buffering arrangements
-
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer And Data Communications (AREA)
- Bus Control (AREA)
- Memory System (AREA)
Abstract
提供了一种方法和存储器设备。存储器设备的控制器从主机存储器检索第一命令突发。第一命令突发包括来自第一提交队列的一个或更多个命令的序列。控制器识别第一命令突发中的至少一个命令是第一融合命令集中的至少一个第一融合命令。第一融合命令集将在存储器设备中被原子处理,第一融合命令集的剩余部分在第一提交队列上。控制器至少将所述至少一个第一融合命令的标识符存储在存储器设备的预留缓冲器中。
Description
优先权
本申请基于2021年5月5日提交的第63/184,499号美国临时专利申请并要求其优先权,该美国临时专利申请的全部内容通过引用合并于此。
技术领域
本公开总体上涉及处理融合命令的存储器设备,更具体地,涉及处理来自提交队列的突发中请求的拆分的融合命令的方法和存储器设备。
背景技术
非易失性存储器标准(Non-volatile memory express)(NVMe)是用于外围部件互连高速(PCIe)总线上的固态驱动器(SSD)的存储接口。主机和SSD之间的接口基于由(在主机上运行的)驱动器构建并在驱动器和NVMe设备之间共享的一系列成对的提交队列(SQ)和完成队列(CQ)。SQ和CQ用于驱动器和NVMe设备之间的通信。
在SQ上放置新命令后,主机通过将新的尾指针写入设备的硬件SQ门铃寄存器来通知NVMe设备。NVMe设备通过将同一SQ的头指针移过已在NVMe设备中开始进行的SQ条目,向主机发出它已开始处理特定一个SQ条目或特定一组SQ条目的信号。当SQ门铃寄存器中的头指针和尾指针承受不同的值时,表示SQ中有一个或更多个命令条目,因此推断出来自SQ的仲裁请求。
当NVMe设备完成命令时,它将条目放在(先前与从中检索到该命令的SQ相关联的)CQ,将头指针更新到硬件CQ门铃寄存器,并生成中断。在主机获取并完成一组CQ条目的处理后,它通过更新CQ门铃寄存器的头指针向NVMe设备发出信号。NVMe设备将尾指针更新到硬件CQ门铃寄存器。主机将能够读取CQ上的条目以确定已完成的工作。在解析CQ上的条目后,主机移动CQ头门铃指针以通知设备它收到了那些命令的完成状态。
提供给SQ的命令可以包括融合命令集,该融合命令集包括旨在在NVMe设备中被原子(即,紧接(back-to-back))处理的融合命令。因此,需要将融合命令依次提供给同一SQ。具体地,在给定SQ上的第一融合命令和第二融合命令之间不存在其它命令。从主机依次输入的非融合命令不需要按顺序处理。此外,从主机依次输入的非融合命令和融合命令集不需要按顺序处理。只有来自同一融合命令集的那些融合命令需要按顺序处理,而在其间没有其它命令。
可以在一个或更多个命令的突发中从给定SQ提取命令。因此,可以将成对的融合命令拆分成不同的突发,从而导致来自一个或更多个其它SQ的命令在不同的突发之间被提取。当以这种方式拆分融合命令时,NVMe设备停止其它命令获取的检索和处理,直到融合命令被接收到并被原子处理,从而减慢驱动器的操作。
发明内容
根据一实施例,提供了一种存储器设备的方法。存储器设备的控制器从主机存储器检索第一命令突发。第一命令突发包括来自第一提交队列的一个或更多个命令的序列。控制器识别第一命令突发中的至少一个命令是第一融合命令集中的至少一个第一融合命令。第一融合命令集将在存储器设备中被原子处理,第一融合命令集的剩余部分在第一提交队列上。控制器至少将所述至少一个第一融合命令的标识符存储在存储器设备的预留缓冲器中。
根据一实施例,提供了一种存储器设备,其包括控制器,控制器具有仲裁器、连接到仲裁器的命令获取器、预留缓冲器、命令解析器和命令处理器。控制器被配置为从主机存储器检索第一命令突发。第一命令突发包括来自第一提交队列的一个或更多个命令的序列。控制器还被配置为识别第一命令突发中的至少一个命令是第一融合命令集中的至少一个第一融合命令。第一融合命令集将在存储器设备中被原子处理,第一融合命令集的剩余部分在第一提交队列上。控制器还被配置为至少将所述至少一个第一融合命令的标识符存储在预留缓冲器中。
根据一实施例,提供了一种存储器设备,其包括控制器,控制器具有仲裁器、连接到仲裁器的命令获取器、预留缓冲器、命令解析器和命令处理器。控制器被配置为从主机存储器检索第一命令突发。第一命令突发包括来自第一提交队列的命令序列。控制器还被配置为识别第一命令突发中的最后一个命令是一对融合命令中的第一融合命令。所述一对融合命令包括将要在存储器设备中被原子处理的第一融合命令和第二融合命令。控制器还被配置为将第一融合命令存储在预留缓冲器中,并从主机存储器检索第二命令突发。控制器被配置为确定第二命令突发中的第一个命令是否是所述一对融合命令中的第二融合命令。控制器还被配置为响应于确定第二命令突发中的第一个命令是所述一对融合命令中的第二融合命令,原子处理所述一对融合命令。
附图说明
本公开的某些实施例的以上及其它方面、特征和优点将由以下结合附图的详细描述更加明显,附图中:
图1是示出存储器设备的图;
图2A是示出根据一实施例的处理命令序列的存储器设备的图;
图2B是示出根据一实施例的图2A的存储器设备的图;
图2C是示出根据一实施例的图2A和图2B的存储器设备的图;
图3是示出根据另一实施例的存储器设备的图;
图4是示出根据另一实施例的存储器设备的图;
图5是示出根据一实施例的操作存储器设备的方法的流程图;
图6示出了根据一个实施例的在网络环境中的电子设备的框图;以及
图7示出了根据一实施例的存储系统的图。
具体实施方式
在下文中,将参照附图详细描述本公开的实施例。应注意,相同的元件将由相同的附图标记表示,尽管它们在不同的附图中示出。在以下描述中,仅提供诸如详细配置和部件的具体细节以帮助整体理解本公开的实施例。因此,对本领域技术人员应明显的是,在不脱离本公开的范围的情况下,可以对在此描述的实施例进行各种改变和修改。此外,为了清楚和简明,省略了对众所周知的功能和结构的描述。下面描述的术语是考虑到本公开中的功能而定义的术语,并且可以根据用户、用户意图或习惯而不同。因此,术语的定义应基于本说明书通篇的内容来确定。
本公开可以具有各种修改和各种实施例,下面参照附图对其中的实施例进行详细描述。然而,应理解,本公开不限于这些实施例,而是包括在本公开的范围内的所有修改、等同物和替代物。
尽管包括诸如第一、第二等的序数的术语可以用于描述各种元件,但是结构元件不受这些术语限制。这些术语仅用于将一个元件与另一个元件区分开。例如,在不脱离本公开的范围的情况下,第一结构元件可以被称为第二结构元件。类似地,第二结构元件也可以被称为第一结构元件。如这里所使用的,术语“和/或”包括一个或更多个相关项目的任何和所有组合。
这里使用的术语仅用于描述本公开的各种实施例,而不旨在限制本公开。单数形式旨在包括复数形式,除非上下文清楚地另行指示。在本公开中,应理解,术语“包括”或“具有”指明特征、数量、步骤、操作、结构元件、部分或其组合的存在,并不排除一个或更多个其它特征、数量、步骤、操作、结构元件、部分或其组合的存在或添加可能性。
除非不同地定义,否则这里使用的所有术语具有与本公开所属领域的技术人员所理解的含义相同的含义。诸如在通用词典中定义的术语的术语将被解释为具有与相关技术领域中的上下文含义相同的含义,并且将不被解释为具有理想化的或过度形式化的含义,除非在本公开中明确定义。
根据一个实施例的电子设备可以是利用存储设备和/或NVMe的各种类型的电子设备之一。电子设备可以包括例如便携式通信设备(例如,智能电话)、计算机、便携式多媒体设备、便携式医疗设备、相机、可穿戴设备或家用电器。根据本公开的一个实施例,电子设备不限于上述那些。
在本公开中使用的术语不旨在限制本公开,而是旨在包括对相应实施例的各种改变、等同或替换。关于附图的描述,相似的附图标记可以用来指代相似或相关的元件。与一项目对应的名词的单数形式可以包括一个或更多个事物,除非相关上下文清楚地另行指示。如这里所使用的,诸如“A或B”、“A和B中的至少一个”、“A或B中的至少一个”、“A、B或C”、“A、B和C中的至少一个”以及“A、B或C中的至少一个”的短语中的每个可以包括在对应一个短语中一起列举的项目的所有可能组合。如这里所使用的,诸如“第1”、“第2”、“第一”和“第二”的术语可以用于将对应的部件与另一部件区分开,但不旨在在其它方面(例如,重要性或顺序)限制部件。意图是,如果一元件(例如,第一元件)在使用术语“操作地”或“通信地”的情况下或不使用术语“操作地”或“通信地”的情况下被称为“与”另一元件(例如,第二元件)“联接”、“联接到”另一元件(例如,第二元件)、“与”另一元件(例如,第二元件)“连接”或“连接到”另一元件(例如,第二元件),则它指示该元件可以直接(例如,有线)、无线地或经由第三元件与该另一元件联接。
如这里所使用的,术语“模块”可以包括以硬件、软件、固件或其组合来实现的单元,并且可以与其它术语(例如,“逻辑”、“逻辑块”、“部分”和“电路”)可互换地使用。模块可以是适配为执行一个或更多个功能的单个集成部件或者最小单元或其部分。例如,根据一个实施例,模块可以以专用集成电路(ASIC)的形式来实现。
在存储器系统中,仲裁器可以对来自不同源(即,SQ)的命令进行排序,然后这些命令由命令获取器检索。具体地,命令的突发可以以指定的仲裁方式从每个SQ中选择,并放入命令序列中。然而,在一些情况下,来自同一输入源并被标记为原子处理的融合命令可以在序列中隔开且其它命令在其间。例如,这可以在来自一对融合命令的第一融合命令是来自给定SQ的突发中的最后一个命令并且来自该对融合命令的第二融合命令保留在给定SQ上时发生。由于仲裁器的指定仲裁方式,在检索来自包括第二融合命令作为第一个命令的给定SQ的下一突发之前,可以在序列中插入来自其它SQ的一个或更多个突发。
图1是示出存储器设备的图。存储器设备包括体现固态驱动器、硬盘驱动器、另一存储设备或其组合的仲裁器102、命令获取器104、PCI管理器108、第一PCIe接口(IF)110、命令解析器120和命令处理器122。在一些实施例中,存储设备对应于NVMe设备。在其它实施例中,存储设备根据一个或更多个其它存储协议来操作。命令处理器122可以被表示为图6的处理器620和图7的控制器706。
仲裁器102接收关于多个SQ的状态信息。在图1的实施例中,第一SQ状态信息150、第二SQ状态信息152和第三SQ状态信息154被提供给仲裁器102。可以在第一SQ、第二SQ和第三SQ之间建立不同的固定的动态公平或动态加权优先级,SQ可以以加权轮询、轮询或其它仲裁方式服务。仲裁器102确定将要从获胜SQ获取多少命令。例如,当第一SQ是获胜SQ时,仲裁器基于第一SQ状态信息150来确定将要从第一SQ提取多少命令。然后,仲裁器102命令命令提取器104检索确定的数量的来自第一SQ的命令。
命令获取器104经由通过具有第一PCIe IF 110的PCIM 108和具有第二PCIe IF112的主机总线114的连接从主机存储器116接收命令。PCIe IF 112、主机总线114和主机存储器116体现主机134的至少一部分。
因此,在一个或更多个命令的命令突发中从给定SQ提取命令。融合命令可以在两个命令突发之间拆分。例如,对于一对融合命令,来自SQ的第一命令突发中的最后一个命令可以是该对融合命令中的第一融合命令,而该对融合命令中的第二融合命令在来自同一SQ的第二命令突发中。如果仲裁器102在第一突发之后从一不同SQ提取命令,则第一融合命令和第二融合命令将被拆分且至少该不同SQ的命令在其间。
因为仲裁器102在执行仲裁时不知道命令的内容,所以当出现拆分的融合命令时,它不能将获胜者仲裁到同一SQ。命令内容仅在命令获取器104通过长延迟PCIe访问执行获取操作之后可用。从获取请求到获取返回的长延迟成为系统处理速度的关键路径或瓶颈。
第二融合命令必须与第一融合命令配对。因此,检查命令突发以确定它是否具有拆分的融合命令。例如,如果第一融合命令是命令突发的最后一个命令,则第二融合命令可以从同一SQ中获取。然后将这一对融合命令中的第一融合命令和第二融合命令提供给命令解析器120和命令处理器122以供原子处理。
因此,可能需要命令获取器104停止检索和处理其它命令,直到接收到第二融合命令,从而减慢驱动操作。当能够在突发中从各个SQ获取命令并且由仲裁器102预先调度从各个SQ中的获取时,驱动器更高效地操作。
本公开的一实施例提供了连接到命令获取器的预留缓冲器。控制器将命令突发中的最后一个命令识别为来自融合命令的拆分集合的融合命令。响应于识别融合命令,命令获取器将融合命令与输入源标识符(例如,对应SQ的标识符)一起存储在预留缓冲器上。在融合命令之后但在融合命令集的剩余部分之前接收到的命令的处理被最小程度地中断或不被中断。当识别出另一个融合命令时,控制器使用两个融合命令的输入源标识符来确定所述另一个融合命令是否对应于存储在预留缓冲器上的第一融合命令。当融合命令源自同一SQ时,它们具有相同的输入源标识符。当所述另一个融合命令对应于存储在预留缓冲器上的第一融合命令并完成融合命令集时,发送该对融合命令以进行原子处理。当所述另一个融合命令是另一个融合命令集的第一部分时,所述另一个融合命令也存储在预留缓冲器上。当所述另一个融合命令是融合命令集的第二部分并且不对应于任何存储的第一融合命令时,触发错误处理过程。
图2A是示出根据一实施例的处理命令序列的存储器设备的图。存储器设备包括仲裁器202、命令获取器204、命令解析器220和命令处理器222,如上面关于图1所述。存储器设备可以包括其它部件,但为了易于描述,将它们省略。在图2A的实施例中,预留缓冲器230设置在命令获取器204和命令解析器220之间。
仲裁器202接收关于多个SQ的状态信息。在图2A的实施例中,将第一SQ状态信息250、第二SQ状态信息252和第三SQ状态信息254提供给仲裁器202。如上所述,仲裁器202确定将要从获胜的SQ获取多少命令,并命令命令获取器104从获胜的SQ(例如,第一SQ)中检索确定数量的命令。命令获取器104从主机存储器接收命令,如关于图1所述。虽然在该实施例中提供了三个SQ,但是系统中可以利用任意数量的SQ。
由命令获取器204检索的第一命令突发280包括非融合命令256、258、260和262以及融合命令集中的第一融合命令264。因此,该融合命令集的剩余部分保留在第一SQ上。虽然在第一命令突发280中示出了五个命令,但是命令突发可以包括任何数量的一个或更多个命令。此外,仲裁器102可以请求给定命令突发中的任何数量的命令,并且该数量可以从一个命令突发到下一命令突发改变。
图2B是示出根据一实施例的图2A的存储器设备的图。命令获取器204检索第一命令突发280,并将非融合命令256、258、260和262发送到命令解析器220以供处理。控制器将第一融合命令264识别为融合命令的拆分集合中的一个,并将第一融合命令264存储在预留缓冲器230处而不处理第一融合命令264。第一融合命令可以使用融合命令标识符来识别,该融合命令标识符区分非融合命令和融合命令的,也区分融合命令集中的融合命令。
仲裁器202可以命令命令获取器204从第二SQ或第三SQ检索第二命令突发。因为第二命令突发来自与第一融合命令264不同的SQ,所以第二命令突发不包括融合命令的拆分集合的剩余部分。相比之下,第二命令突发可以仅包括非融合命令。在另一实施例中,第二命令突发可以包括融合命令的完整集合或融合命令的来自该不同SQ的部分集合,这将在下面更详细地描述。
图2C是示出根据一实施例的图2A和图2B的存储器设备的图。命令获取器204将第二命令突发282的非融合命令发送到命令解析器220以供处理,而第一融合命令264保留在预留缓冲器230中。当命令获取器204从第一SQ检索第三命令突发284时,控制器将第三命令突发284的第一个命令识别为融合命令266。该融合命令可以使用融合命令标识符来识别,该融合命令标识符区分非融合命令和融合命令,也区分融合命令集中的融合命令。
控制器确定融合命令266的标识符是否与存储在预留缓冲器中的任何融合命令(例如,第一融合命令264)的标识符匹配。标识符可以是输入源标识符,或更具体地,该命令源自的SQ的标识符。响应于确定融合命令266的标识符和第一融合命令264的标识符匹配,将融合命令266识别为融合命令集的剩余部分。在命令解析器220和命令处理器222处将第一融合命令264从预留缓冲器230取出以供与融合命令266一起的原子处理。随后处理第三命令突发284中的剩余命令。
因此,命令获取器204在等待融合命令集的剩余部分的接收的同时,继续检索和处理其它命令,从而防止当一对融合命令在命令突发之间被拆分时减慢驱动处理速度。
在另一实施例中,当第三命令突发284不是源自第一SQ并且包括位于第三命令突发284的末尾的至少一个拆分的融合命令时,所述至少一个融合命令的标识符和第一融合命令264的标识符将不匹配。因此,所述至少一个融合命令作为另一融合命令集的一部分存储在预留缓冲器230中。当第二命令突发282在第二命令突发282的末尾包括至少一个拆分的融合命令时,发生类似的过程。如该实施例所证明的,当融合命令集包括两个融合命令时,预留缓冲器230将会需要足够的大小来存储来自每个SQ的融合命令。
如图2A-图2C所示,融合命令被识别并存储在预留缓冲器230中。根据一实施例,所有融合命令可以被识别并提供给预留缓冲器230,而不管它们在命令突发中的位置。如上所述,来自拆分的一对融合命令的第一个到达的融合命令将被保存在预留缓冲器230中,直到在预留缓冲器230处接收到第二个融合命令。此外,在单个命令突发中到达的未拆分的一对融合命令将被发送到预留缓冲器230,被立即匹配,然后进行原子处理。
在另一实施例中,仅将位于命令突发末尾的那些拆分的融合命令提供给预留缓冲器230。然后确定任何随后到达的位于命令突发开头的拆分的融合命令是否与预留缓冲器230中的一个或更多个融合命令匹配。在该实施例中,在同一命令突发中到达的非拆分的融合命令被原子处理而不被发送到预留缓冲器230。
在进一步的实施例中,当融合命令集包括一对融合命令时,控制器可以识别命令突发中的单个融合命令,而不管它们在命令突发中的位置。所识别的单个融合命令将被提供给预留缓冲器230以供匹配。因此,所有拆分的融合命令对将被转发到预留缓冲器230,而非拆分的融合命令对将被原子处理。更一般地,对于包括任何数量的融合命令的集合,控制器可以识别突发中的一个或更多个融合命令,所述一个或更多个融合命令不是完整的融合命令集的一部分。
返回参照图2A,根据一实施例,响应于控制器识别出第一命令突发280包括第一融合命令264,命令获取器204可以向仲裁器202发送最高优先级请求290以检索来自第一SQ的对应一对融合命令中的第二融合命令266。第一融合命令264存储在预留缓冲器230上。该最高优先级请求290可以改变仲裁器的选择顺序,并且可以最小化在第一融合命令264和第二融合命令266之间接收到的突发的数量。
最高优先级请求290可以是对单个命令或对命令突发的请求。例如,最高优先级请求290可以导致在第二命令突发282之前接收第二融合命令266或与第二融合命令266一起接收第三命令突发284。该实施例还将减小预留缓冲器230所需的大小。因为拆分的融合命令被更快地匹配并以受控方式匹配,所以预留缓冲器230不需要具有用于来自每个SQ的融合命令的空间。
当最高优先级请求290是对单个命令(即,仅第二融合命令266,而不是命令突发)的请求时,在从第一SQ 250检索到单个命令时,仲裁器202返回到SQ的用于检索命令突发的原始优先级序列。
当最高优先级请求290不限于单个命令时,最高优先级请求290可以被标记为在最高优先级SQ和低优先级SQ之间交替。当与对单个命令的请求相比时,这可能导致第二融合命令的更大延迟,但不会达到没有最高优先级请求290的实施例的程度。此外,当与对单个命令的请求相比时,这可能需要预留缓冲器230中的更多空间,但不会达到没有最高优先级请求290的实施例的程度。然而,该实施例可以在纠正由最高优先级请求290引起的对SQ的原始优先级序列的干扰方面提供帮助。
在另一实施例中,无论最高优先级请求290是针对单个命令还是被标记为在最高优先级SQ和低优先级SQ之间交替,都可以在仲裁器202和最高优先级请求290之间添加级别仲裁。
一般,在轮询仲裁中,为所有输入配置默认优先级分配,根据最后的获胜者调整默认优先级,并选择最高优先级。当基于最高优先级请求290分配获胜者时,在调整默认优先级时考虑该获胜者,从而改变仲裁顺序。因此,根据一实施例,与最高优先级请求对应的SQ不被归类为“获胜者”,使得默认优先级和仲裁顺序不因最高优先级请求而改变。具体地,在最高优先级请求290之前的获胜者用于确定前进的仲裁顺序。
现在参照图3,其是示出根据另一实施例的存储器设备的图。存储器设备的现有共享的分散-收集存储器240连接在命令获取器204和预留缓冲器230之间,并且还连接到命令解析器220。为了易于描述,未在图2A-图2C中示出分散-收集存储器240。分散-收集存储器240用于在命令解析器220处的处理之前存储非融合命令和融合命令两者。预留缓冲器230仅存储融合命令的标识符或输入源标识符。非融合命令和完整的融合命令集被连续处理,拆分的融合命令的匹配过程与上面关于图2A-图2C描述的过程类似。然而,当在预留缓冲器230处识别出匹配时,从分散-收集存储器240中检索对应的融合命令以供在命令解析器220处进行原子处理。因为仅融合命令的标识符被提供给预留缓冲器230,所以预留缓冲器230的大小可以从图2A-图2C的实施例中所需的大小减小。此外,因为分散-收集存储器240是已经存在的部件,所以该实施例所需的附加存储器减少。
图4是示出根据另一实施例的存储器设备的图。预留缓冲器230可以位于命令解析器220和命令处理器222之间。在该实施例中,命令解析器220执行由图2A-图2C的实施例中的命令获取器204所采取的识别和确定步骤。根据本公开的实施例,在命令获取器204和命令处理器222之间的存储器设备处理管线中可以存在任何数量的块。例如,存储器设备处理管线可以包括多级命令解析器。预留缓冲器的放置不限于图2A-图2C、图3和图4所示的放置,预留缓冲器230可以设置在命令获取器204和命令处理器222之间的任何位置。
图5是示出根据一实施例的操作存储器设备的方法的流程图。所描述的(即,在设备图中的)任何部件或部件的任何组合可以用于执行流程图的操作中的一个或更多个。流程图所绘的操作是示例性操作并且可能涉及流程图中未明确提供的各种附加步骤。流程图所绘的操作的顺序是示例性的而非排它性的,因为顺序可以取决于实施方式而变化。
在502处,存储器设备的控制器从主机存储器检索第一命令突发。第一命令突发包括来自第一SQ的命令序列。控制器可以至少体现为图1的仲裁器202、命令获取器204、预留缓冲器230、命令解析器220和命令处理器222的组合。控制器还可以体现为图6的处理器620和图7的控制器700。
在504处,如果检索到的命令突发包括多于一个命令,则控制器继续。例如,检索到的命令突发可以包括五个命令,如图2A-图2C所示。虽然可以检索单独的命令,但是一般来说,当存储器设备被设计为处理成对的融合命令时,命令在具有至少两个命令的突发中被检索。
在506处,控制器处理来自检索到的命令突发的命令。控制器可以按从第一个命令开始的顺序处理检索到的命令突发的命令。控制器对检索到的命令突发中的每个命令重复处理,直到达到检索到的命令突发中的最后一个命令。具体地,如图5所示,通过(最后一个-1)命令对检索到的命令突发中的每个命令重复处理。处理的命令可以包括检索到的命令突发中的非融合命令和/或完整的融合命令对或融合命令集。
在508处,控制器确定检索到的命令突发中的最后一个命令是否是一对融合命令中的第一融合命令。如上所述,这对融合命令将在存储器设备中被原子处理。然而,当第一融合命令是命令突发的最后一个命令时,这一对被拆分并且这一对融合命令中的第二融合命令保留在第一SQ上。第一融合命令可以由融合命令标识符来识别,该融合命令标识符区分非融合命令与融合命令,并且也区分一对融合命令中的第一融合命令和第二融合命令。
响应于确定检索到的命令突发的最后一个命令不是第一融合命令,控制器在510处处理最后一个命令,从而完成对检索到的命令突发中的所有命令的处理。控制器返回到502以检索另一个命令突发。
响应于确定检索到的命令突发的最后一个命令是一对融合命令中的第一融合命令,控制器在512处将该第一融合命令和该第一融合命令的SQ标识符存储在存储器设备的预留缓冲器中。预留缓冲器(i)可以对应于从其接收命令突发的SQ,并且i可以具有从1到SQ的最大数量或从1到(有反馈请求的)缓冲器的最大数量的值。
替代地,控制器可以仅将第一融合命令的SQ标识符存储在存储器设备的预留缓冲器中。然后将第一融合命令存储在存储器设备的现有共享的分散-收集存储器上,如上面关于图3所述。
这一对融合命令可以替代地是具有三个或更多个命令的融合命令集。例如,对于具有三个融合命令的融合命令集,检索到的命令突发的最后一个或两个命令可以是来自融合命令的拆分集合的融合命令。因此,在506处,命令的处理将重复直到到达命令突发的倒数第二个命令。然后,控制器将确定最后一个命令或最后一个命令和倒数第二个命令两者是否是来自融合命令的拆分集合的融合命令。
可以使用上述融合命令标识符来执行该确定,这还将区分融合命令集中的最后一个命令(例如,原子性的最后一个)。该标识符可以由主机提供。此外,可以使用指示融合命令集中的拆分点的标识符来执行该确定。例如,命令突发中的最后一个命令可以包括指示拆分点的标识符,该标识符将最后一个命令和任何紧接在前的融合命令标识为来自融合命令的拆分集合的融合命令。因此,将在命令突发的末尾被确定为来自命令的拆分集合的两个或更多个融合命令存储在预留缓冲器上。
此外,关于具有三个或更多个命令的集合,融合命令集可以跨多于两个命令突发拆分。例如,当命令突发大小为二且融合命令集为四时,第一融合命令可以被包括作为第一命令突发的最后一个命令,第二融合命令和第三融合命令可以包括在第二命令突发中,第四融合命令可以被包括作为第三命令突发的第一个命令。使用上述标识符,可以识别和区分融合命令,并且可以识别拆分点。因为在可以折叠融合命令之前执行三个单独的命令获取操作,所以在将融合命令折叠在一起并由存储器设备原子处理之前,预留缓冲器可以利用链列表将存储的融合命令链接在一起。这可能需要扩展预留缓冲器和现有存储器(例如,分散-收集)。
返回参照图5,在514处,控制器从主机存储器检索下一命令突发。下一命令突发包括来自SQ的命令序列。具体地,该下一命令突发可以来自第一SQ或来自另一个SQ。
在516处,控制器确定下一命令突发的SQ标识符(SQ_ID)是否与存储的第一融合命令的SQ标识符(F1.SQ_ID)相同。具体地,控制器确定该下一命令突发是否源自与第一融合命令相同的SQ。
响应于确定下一命令突发的SQ标识符与存储的第一融合命令的SQ标识符不相同,控制器在518处处理来自该下一命令突发的命令。具体地,该确定将指示该下一命令突发来自与第一融合命令的SQ不同的SQ。
控制器可以按从第一个命令开始的顺序处理检索到的命令突发的命令,并对每个命令重复处理直到到达最后一个命令,如之前关于506所述。处理的命令可以包括命令突发中的非融合命令和/或完整的融合命令对或融合命令集。然后控制器返回到508以确定该命令突发的最后一个命令是否是来自该另一个SQ的一对融合命令中的第一融合命令。对于具有第一融合命令作为最后一个命令的来自该另一个SQ的命令突发,命令和SQ标识符可以存储在一不同的预留缓冲器中。
响应于确定该下一命令突发的SQ标识符与存储的第一融合命令的SQ标识符相同,控制器在520处确定该下一命令突发的第一个命令是否是一对融合命令中的第二融合命令。第二融合命令可以通过融合命令标识符来识别,该融合命令标识符区分非融合命令与融合命令,并且还区分一对融合命令中的第一融合命令和第二融合命令。
响应于确定该下一命令突发的第一个命令是第二融合命令,控制器在522处折叠存储的第一融合命令和新接收到的第二融合命令以供原子处理。因为命令突发被识别为来自与存储的第一融合命令相同的SQ,并且因为命令突发的第一个命令被识别为第二融合命令,所以第一融合命令必须是一对融合命令中的与存储的第一融合命令对应的第二融合命令。
在524处,控制器处理剩余的命令直到命令突发中的最后一个命令。控制器可以按从第二个命令开始的顺序处理检索到的命令突发的命令,并对每个命令重复处理直到到达最后一个命令,如之前关于506所述。处理的命令可以包括命令突发中的非融合命令和/或完整的融合命令对或融合命令集。然后控制器返回到508以确定命令突发的最后一个命令是否是一对融合命令中的第一融合命令。
响应于确定检索到的命令突发的第一个命令不是一对融合命令中的第二融合命令,在526处,发布一对融合命令中的第二融合命令丢失的错误报告。具体地,因为命令突发被识别为来自与存储的第一融合命令相同的SQ,所以如果第一个命令不是对应的第二融合命令,则第二融合命令丢失并发布错误报告。
图5的流程图中描述的方法可以针对若干SQ同时发生。
图6示出根据一个实施例的在网络环境600中的电子设备601的框图。参照图6,网络环境600中的电子设备601可以经由第一网络698(例如,短距离无线通信网络)与电子设备602进行通信,或者经由第二网络699(例如,长距离无线通信网络)与电子设备604或服务器608进行通信。电子设备601可以经由服务器608与电子设备604进行通信。电子设备601可以包括处理器620、存储器630、输入设备650、声音输出设备655、显示设备660、音频模块670、传感器模块676、接口677、触觉模块679、相机模块680、电力管理模块688、电池689、通信模块690、用户识别模块(SIM)696或天线模块697。在一个实施例中,可以从电子设备601中省略所述部件中的至少一个(例如,显示设备660或相机模块680),或者可以将一个或更多个其它部件添加到电子设备601中。在一个实施例中,可以将所述部件中的一些部件实现为单个集成电路(IC)。例如,可以将传感器模块676(例如,指纹传感器、虹膜传感器或照度传感器)实现为嵌入在显示设备660(例如,显示器)中。
处理器620可以运行例如软件(例如,程序640)来控制电子设备601的与处理器620连接的至少一个其它部件(例如,硬件部件或软件部件),并且可以执行各种数据处理或计算。处理器可以对应于图2A-图2C的命令处理器222或对应于图2A-图2C的仲裁器202、命令获取器204、预留缓冲器230、命令解析器220和命令处理器222的组合。作为所述数据处理或计算的至少部分,处理器620可以将从另一部件(例如,传感器模块676或通信模块690)接收到的命令或数据加载到易失性存储器632中,对存储在易失性存储器632中的命令或数据进行处理,并将结果数据存储在非易失性存储器634中。处理器620可以包括主处理器621(例如,CPU或应用处理器(AP))以及与主处理器621在操作上独立的或者相结合的辅助处理器623(例如,图形处理单元(GPU)、图像信号处理器(ISP)、传感器中枢处理器或通信处理器(CP))。附加地或替代地,辅助处理器623可以被适配为比主处理器621耗电更少,或者被适配为执行特定的功能。可以将辅助处理器623实现为与主处理器621分离,或者实现为主处理器621的部分。
在主处理器621处于未激活(例如,睡眠)状态时,辅助处理器623可以代替主处理器621控制与电子设备601的部件之中的至少一个部件(例如,显示设备660、传感器模块676或通信模块690)相关的功能或状态中的至少一些,或者在主处理器621处于激活状态(例如,运行应用)时,辅助处理器623可以与主处理器621一起来控制与电子设备601的部件之中的至少一个部件(例如,显示设备660、传感器模块676或通信模块690)相关的功能或状态中的至少一些。根据一个实施例,可以将辅助处理器623(例如,图像信号处理器或通信处理器)实现为在功能上与辅助处理器623相关的另一部件(例如,相机模块680或通信模块690)的部分。
存储器630可以存储由电子设备601的至少一个部件(例如,处理器620或传感器模块676)使用的各种数据。所述各种数据可以包括例如软件(例如,程序640)以及针对与其相关的命令的输入数据或输出数据。存储器630可以包括易失性存储器632或非易失性存储器634。
可以将程序640作为软件存储在存储器630中,并且程序640可以包括例如操作系统(OS)642、中间件644或应用646。
输入设备650可以从电子设备601的外部(例如,用户)接收将由电子设备601的另一部件(例如,处理器620)使用的命令或数据。输入设备650可以包括例如麦克风、鼠标或键盘。
声音输出设备655可以将声音信号输出到电子设备601的外部。声音输出设备655可以包括例如扬声器或接收器。扬声器可以用于诸如播放多媒体或播放唱片的通用目的,接收器可以用于呼入呼叫。根据一个实施例,可以将接收器实现为与扬声器分离,或实现为扬声器的部分。
显示设备660可以向电子设备601的外部(例如,用户)视觉地提供信息。显示设备660可以包括例如显示器、全息设备或投影仪以及用于控制显示器、全息设备和投影仪中的对应一个的控制电路。根据一个实施例,显示设备660可以包括被适配为检测触摸的触摸电路或被适配为测量由触摸引起的力的强度的传感器电路(例如,压力传感器)。
音频模块670可以将声音转换为电信号,反之亦可。根据一个实施例,音频模块670可以经由输入设备650获得声音,或者经由声音输出设备655或与电子设备601直接(例如,有线地)连接或无线连接的外部电子设备602的耳机输出声音。
传感器模块676可以检测电子设备601的操作状态(例如,功率或温度)或电子设备601外部的环境状态(例如,用户的状态),然后产生与检测到的状态对应的电信号或数据值。传感器模块676可以包括例如手势传感器、陀螺仪传感器、大气压力传感器、磁性传感器、加速度传感器、握持传感器、接近传感器、颜色传感器、红外(IR)传感器、生物特征传感器、温度传感器、湿度传感器或照度传感器。
接口677可以支持将用来使电子设备601与外部电子设备602直接(例如,有线地)或无线连接的一个或更多个特定协议。根据一个实施例,接口677可以包括例如高清晰度多媒体接口(HDMI)、通用串行总线(USB)接口、安全数字(SD)卡接口或音频接口。
连接端678可以包括连接器,电子设备601可以经由所述连接器与外部电子设备602物理连接。根据一个实施例,连接端678可以包括例如HDMI连接器、USB连接器、SD卡连接器或音频连接器(例如,耳机连接器)。
触觉模块679可以将电信号转换为可被用户经由触觉或动觉识别的机械刺激(例如,振动或运动)或电刺激。根据一个实施例,触觉模块679可以包括例如电机、压电元件或电刺激器。
相机模块680可以捕获静止图像或运动图像。根据一个实施例,相机模块680可以包括一个或更多个透镜、图像传感器、图像信号处理器或闪光灯。
电力管理模块688可以管理供应给电子设备601的电力。可以将电力管理模块688实现为例如电力管理集成电路(PMIC)的至少部分。
电池689可以对电子设备601的至少一个部件供电。根据一个实施例,电池689可以包括例如不可再充电的一次电池、可再充电的二次电池、或燃料电池。
通信模块690可以支持在电子设备601与外部电子设备(例如,电子设备602、电子设备604或服务器608)之间建立直接(例如,有线)通信信道或无线通信信道,并经由建立的通信信道执行通信。通信模块690可以包括能够与处理器620(例如,AP)独立操作的一个或更多个通信处理器,并支持直接(例如,有线)通信或无线通信。根据一个实施例,通信模块690可以包括无线通信模块692(例如,蜂窝通信模块、短距离无线通信模块或全球导航卫星系统(GNSS)通信模块)或有线通信模块694(例如,局域网(LAN)通信模块或电力线通信(PLC)模块)。这些通信模块中的对应一个可以经由第一网络698(例如,短距离通信网络,诸如蓝牙TM、无线保真(Wi-Fi)直连或红外数据协会(IrDA)的标准)或第二网络699(例如,长距离通信网络,诸如蜂窝网络、互联网、或计算机网络(例如,LAN或广域网(WAN)))与外部电子设备进行通信。可以将这些各种类型的通信模块实现为单个部件(例如,单个IC),或者可以将这些各种类型的通信模块实现为彼此分离的多个部件(例如,多个IC)。无线通信模块692可以使用存储在用户识别模块696中的用户信息(例如,国际移动用户识别码(IMSI))识别并验证通信网络(诸如第一网络698或第二网络699)中的电子设备601。
天线模块697可以将信号或电力发送到电子设备601的外部(例如,外部电子设备)或者从电子设备601的外部(例如,外部电子设备)接收信号或电力。根据一个实施例,天线模块697可以包括一个或更多个天线,并且可以例如由通信模块690(例如,无线通信模块692)从所述一个或更多个天线中选择适合于在通信网络(诸如第一网络698或第二网络699)中使用的通信方案的至少一个天线。然后可以经由所选择的至少一个天线在通信模块690和外部电子设备之间发送或接收信号或电力。
上述部件中的至少一些可以经由外设间通信方案(例如,总线、通用输入输出(GPIO)、串行外设接口(SPI)或移动工业处理器接口(MIPI))相互连接并在它们之间通信地传送信号(例如,命令或数据)。
根据一个实施例,可以经由与第二网络699连接的服务器608在电子设备601和外部电子设备604之间发送或接收命令或数据。电子设备602和电子设备604中的每个可以是与电子设备601相同类型的设备,或者是与电子设备601不同类型的设备。将在电子设备601运行的全部操作或一些操作可以在外部电子设备602、604或608中的一个或更多个运行。例如,如果电子设备601应该自动执行功能或服务或者应该响应于来自用户或另一设备的请求执行功能或服务,则电子设备601可以请求所述一个或更多个外部电子设备执行所述功能或服务中的至少部分,而不是运行所述功能或服务,或者电子设备601除了运行所述功能或服务之外,还可以请求所述一个或更多个外部电子设备执行所述功能或服务中的至少部分。接收到所述请求的所述一个或更多个外部电子设备可以执行所述功能或服务中的所请求的所述至少部分,或者执行与所述请求相关的另外功能或另外服务,并将执行的结果传送到电子设备601。电子设备601可以在对所述结果进行进一步处理的情况下或者在不对所述结果进行进一步处理的情况下将所述结果提供作为对所述请求的至少部分答复。为此,可以使用例如云计算技术、分布式计算技术或客户机-服务器计算技术。
可以将一个实施例实现为包括存储在可由机器(例如,电子设备601)读取的存储介质(例如,内部存储器636或外部存储器638)中的一个或更多个指令的软件(例如,程序640)。例如,在处理器的控制下,电子设备601的处理器可以在使用或无需使用一个或更多个其它部件的情况下调用存储在存储介质中的所述一个或更多个指令中的至少一个指令并运行所述至少一个指令。因此,机器可以操作用于根据调用的所述至少一个指令执行至少一个功能。所述一个或更多个指令可以包括由编译器产生的代码或解释器可运行的代码。可以以非暂时性存储介质的形式来提供机器可读存储介质。术语“非暂时”指示存储介质是有形设备,并且不包括信号(例如,电磁波),但是该术语不在数据被半永久性地存储在存储介质中与数据被临时存储在存储介质中之间进行区分。
根据一个实施例,可以在计算机程序产品中包括和提供本公开的方法。计算机程序产品可以作为产品在销售者和购买者之间进行交易。可以以机器可读存储介质(例如,紧凑盘只读存储器(CD-ROM))的形式来发布计算机程序产品,或者可以经由应用商店(例如,Play StoreTM)在线发布(例如,下载或上传)计算机程序产品,或者可以直接在两个用户设备(例如,智能电话)之间分发(例如,下载或上传)计算机程序产品。如果是在线发布的,则计算机程序产品中的至少部分可以是临时产生的,或者可以将计算机程序产品中的至少部分至少临时存储在机器可读存储介质(诸如制造商的服务器、应用商店的服务器或转发服务器的存储器)中。
根据一个实施例,上述部件中的每个部件(例如,模块或程序)可以包括单个实体或多个实体。可以省略上述部件中的一个或更多个部件,或者可以添加一个或更多个其它部件。替代地或附加地,可以将多个部件(例如,模块或程序)集成为单个部件。在这种情况下,该集成部件可以仍旧按照与所述多个部件中的对应一个部件在集成之前执行一个或更多个功能相同或相似的方式,执行所述多个部件中的每个部件的所述一个或更多个功能。由模块、程序或另一部件执行的操作可以顺序地、并行地、重复地或以启发式方式来执行,或者所述操作中的一个或更多个操作可以按照不同的顺序来执行或被省略,或者可以添加一个或更多个其它操作。
图7示出了根据一实施例的存储系统700的图。存储系统700包括主机702和存储设备704。主机可以对应于图1的主机134。尽管绘出了一个主机和一个存储设备,但是存储系统700可以包括多个主机和/或多个存储设备。存储设备704可以是固态设备(SSD)、通用闪存(UFS)等。存储设备704包括控制器706和连接到控制器706的存储介质708。处理器可以对应于图2A-图2C的命令处理器222,或对应于图2A-图2C的仲裁器202、命令获取器204、预留缓冲器230、命令解析器220和命令处理器222的组合。控制器706可以是SSD控制器、UFS控制器等。存储介质708可以包括易失性存储器、非易失性存储器或两者,并且可以包括一个或更多个闪速存储器芯片(或其它存储介质)。控制器706可以包括一个或更多个处理器、一个或更多个错误校正电路、一个或更多个现场可编程门阵列(FPGA)、一个或更多个主机接口、一个或更多个闪速总线接口等或其组合。控制器706可以被配置为促进主机702和存储介质708之间的数据/命令的传输。主机702向存储设备704发送数据/命令以由控制器706接收并结合存储介质708被处理。如这里所述,方法、过程和算法可以在诸如控制器706的存储设备控制器上实现。仲裁器、命令获取器和命令处理器可以在存储设备704的控制器706中实现,并且处理器和缓冲器可以在主机702中实现。
尽管已经在本公开的详细描述中描述了本公开的某些实施例,但是在不背离本公开的范围的情况下,可以以各种形式修改本公开。因此,本公开的范围不应仅基于所描述的实施例来确定,而是应基于所附权利要求及其等同物来确定。
Claims (20)
1.一种存储器设备的方法,包括:
通过存储器设备的控制器从主机存储器检索第一命令突发,第一命令突发包括来自第一提交队列的一个或更多个命令的序列;
由控制器识别第一命令突发中的至少一个命令是第一融合命令集中的至少一个第一融合命令,其中第一融合命令集将在存储器设备中被原子处理,第一融合命令集的剩余部分在第一提交队列上;以及
由控制器至少将所述至少一个第一融合命令的标识符存储在存储器设备的预留缓冲器中。
2.根据权利要求1所述的方法,还包括:
由控制器从主机存储器检索下一命令突发;以及
由控制器确定所述下一突发是否包括第一融合命令集的所述剩余部分。
3.根据权利要求2所述的方法,其中:
确定所述下一命令突发是否包括第一融合命令集的所述剩余部分包括:将所述至少一个第一融合命令的标识符与所述下一命令突发的一个或更多个命令的标识符进行比较;以及
标识符包括输入源标识符和融合命令标识符中的至少一个,其中融合命令标识符区分各个融合命令,识别最后一个融合命令,或识别融合命令集中的拆分点,以及其中所述至少一个第一融合命令和第一融合命令集的所述剩余部分具有相同的输入源标识符。
4.根据权利要求2所述的方法,其中:
至少将所述至少一个第一融合命令的标识符存储在预留缓冲器中包括:将所述标识符和所述至少一个第一融合命令存储在预留缓冲器中;以及
所述下一命令突发包括第一融合命令集的所述剩余部分,并且还包括:
原子处理来自预留缓冲器的所述至少一个第一融合命令和第一融合命令集的所述剩余部分;以及
处理所述下一命令突发的剩余命令。
5.根据权利要求2所述的方法,其中:
至少将所述至少一个第一融合命令的标识符存储在预留缓冲器中包括:将标识符和所述至少一个第一融合命令存储在预留缓冲器中;
所述下一命令突发不包括第一融合命令集的所述剩余部分,并且还包括由控制器确定所述下一命令突发是否包括来自第二提交队列的第二融合命令集中的至少一个融合命令,其中第二融合命令集的剩余部分在第二提交队列上;以及
所述下一命令突发包括第二融合命令集中的所述至少一个融合命令,并且还包括:
将所述至少一个融合命令的标识符和所述至少一个融合命令存储在预留缓冲器中;以及
处理来自所述下一命令突发的剩余命令。
6.根据权利要求2所述的方法,其中:
至少将所述至少一个第一融合命令的标识符存储在预留缓冲器中包括:将所述至少一个第一融合命令的标识符存储在预留缓冲器中并将所述至少一个第一融合命令存储在存储器设备的分散-收集存储器中;以及
所述下一命令突发包括第一融合命令集的所述剩余部分,并且还包括:
原子处理来自分散-收集存储器的所述至少一个第一融合命令和第一融合命令集的所述剩余部分;以及
处理所述下一命令突发的剩余命令。
7.根据权利要求2所述的方法,其中:
至少将所述至少一个第一融合命令的标识符存储在预留缓冲器中包括:将所述至少一个第一融合命令的标识符存储在预留缓冲器中并将所述至少一个第一融合命令存储在存储器设备的分散-收集存储器中;
所述下一命令突发不包括第一融合命令集的所述剩余部分,并且还包括:由控制器确定所述下一命令突发是否包括来自第二提交队列的第二融合命令集中的至少一个融合命令,其中第二融合命令集的剩余部分在第二提交队列上;以及
所述下一命令突发包括第二融合命令集中的所述至少一个融合命令,并且还包括:
将所述至少一个融合命令的标识符存储在预留缓冲器中;
将所述至少一个融合命令存储在分散-收集存储器中;以及
处理来自所述下一命令突发的剩余命令。
8.根据权利要求1所述的方法,还包括:
响应于识别出第一命令突发中的所述至少一个命令是所述至少一个第一融合命令,向存储器设备的仲裁器发送最高优先级请求以从第一提交队列检索第一融合命令集的所述剩余部分;以及
响应于最高优先级请求,由控制器从第一提交队列仅检索第一融合命令集的所述剩余部分。
9.根据权利要求1所述的方法,还包括:
响应于识别出第一命令突发中的所述至少一个命令是所述至少一个第一融合命令,向存储器设备的仲裁器发送最高优先级请求以从第一提交队列检索第一融合命令集的所述剩余部分;
响应于最高优先级请求,由控制器从第一提交队列检索下一控制突发,其中第一融合命令集的所述剩余部分是所述下一控制突发的起始部分;以及
由仲裁器调整提交队列在存储器设备中提供命令突发的序列,以补偿第一提交队列失序提供所述下一控制突发。
10.一种存储器设备,包括:
控制器,至少具有仲裁器、连接到仲裁器的命令获取器、预留缓冲器、命令解析器和命令处理器,
其中控制器被配置为:
从主机存储器检索第一命令突发,第一命令突发包括来自第一提交队列的一个或更多个命令的序列;
识别第一命令突发中的至少一个命令是第一融合命令集中的至少一个第一融合命令,其中第一融合命令集将在存储器设备中被原子处理,第一融合命令集的剩余部分在第一提交队列上;以及
至少将所述至少一个第一融合命令的标识符存储在预留缓冲器中。
11.根据权利要求10所述的存储器设备,其中控制器还被配置为:
从主机存储器检索下一命令突发;以及
确定所述下一命令突发是否包括第一融合命令集的所述剩余部分。
12.根据权利要求11所述的存储器设备,其中:
在确定所述下一命令突发是否包括第一融合命令集的所述剩余部分时,控制器还被配置为:比较所述至少一个第一融合命令的标识符和所述下一命令突发的一个或更多个命令的标识符;以及
标识符包括输入源标识符和融合命令标识符中的至少一个,其中融合命令标识符区分各个融合命令,识别最后一个融合命令,或识别融合命令集中的拆分点,以及其中所述至少一个第一融合命令和第一融合命令集的所述剩余部分具有相同的输入源标识符。
13.根据权利要求11所述的存储器设备,其中:
在至少将所述至少一个第一融合命令的标识符存储在预留缓冲器中时,控制器还被配置为将所述标识符和所述至少一个第一融合命令存储在预留缓冲器中;以及
所述下一命令突发包括第一融合命令集的所述剩余部分,所述控制器还被配置为:
原子处理来自预留缓冲器的所述至少一个第一融合命令和第一融合命令集的所述剩余部分;以及
处理所述下一命令突发的剩余命令。
14.根据权利要求11所述的存储器设备,其中:
在至少将所述至少一个第一融合命令的标识符存储在预留缓冲器中时,控制器还被配置为将所述标识符和所述至少一个第一融合命令存储在预留缓冲器中;
所述下一命令突发不包括第一融合命令集的所述剩余部分,并且控制器还被配置为确定所述下一命令突发是否包括来自第二提交队列的第二融合命令集中的至少一个融合命令,其中第二融合命令集的剩余部分在第二提交队列上;以及
所述下一命令突发包括第二融合命令集中的所述至少一个融合命令,控制器还被配置为:
将所述至少一个融合命令的标识符和所述至少一个融合命令存储在预留缓冲器中;以及
处理来自所述下一命令突发的剩余命令。
15.根据权利要求11所述的存储器设备,其中:
在至少将所述至少一个第一融合命令的标识符存储在预留缓冲器中时,控制器还被配置为将所述至少一个第一融合命令的标识符存储在预留缓冲器中并将所述至少一个第一融合命令存储在存储器设备的分散-收集存储器中;以及
所述下一命令突发包括第一融合命令集的所述剩余部分,控制器还被配置为:
原子处理来自分散-收集存储器的所述至少一个第一融合命令和第一融合命令集的所述剩余部分;以及
处理所述下一命令突发的剩余命令。
16.根据权利要求11所述的存储器设备,其中:
在至少将所述至少一个第一融合命令的标识符存储在预留缓冲器中时,控制器还被配置为将所述至少一个第一融合命令的标识符存储在预留缓冲器中并将所述至少一个第一融合命令存储在存储器设备的分散-收集存储器中;
所述下一命令突发不包括第一融合命令集的所述剩余部分,控制器还被配置为确定所述下一命令突发是否包括来自第二提交队列的第二融合命令集中的至少一个融合命令,其中第二融合命令集的剩余部分在第二提交队列上;以及
所述下一命令突发包括第二融合命令集中的所述至少一个融合命令,控制器还被配置为:
将所述至少一个融合命令的标识符存储在预留缓冲器中;
将所述至少一个融合命令存储在分散-收集存储器中;以及
处理来自所述下一命令突发的剩余命令。
17.根据权利要求10所述的存储器设备,其中预留缓冲器在存储器设备的处理管线中设置在命令获取器和命令处理器之间。
18.根据权利要求10所述的存储器设备,其中控制器还被配置为:
响应于识别出第一命令突发中的所述至少一个命令是所述至少一个第一融合命令,向仲裁器发送最高优先级请求以从第一提交队列检索第一融合命令集的所述剩余部分;以及
响应于最高优先级请求,从第一提交队列仅检索第一融合命令集的所述剩余部分。
19.根据权利要求10所述的存储器设备,其中控制器还被配置为:
响应于识别出第一命令突发中的所述至少一个命令是所述至少一个第一融合命令,向仲裁器发送最高优先级请求以从第一提交队列检索第一融合命令集的所述剩余部分;
响应于最高优先级请求,从第一提交队列检索下一控制突发,其中第一融合命令集的所述剩余部分是所述下一控制突发的起始部分;以及
由仲裁器调整提交队列在存储器设备中提供命令突发的序列,以补偿第一提交队列失序提供所述下一控制突发。
20.一种存储器设备,包括:
控制器,至少具有仲裁器、连接到仲裁器的命令获取器、预留缓冲器、命令解析器和命令处理器,
其中控制器被配置为:
从主机存储器检索第一命令突发,第一命令突发包括来自第一提交队列的命令序列;
识别第一命令突发中的最后一个命令是一对融合命令中的第一融合命令,其中所述一对融合命令包括将要在存储器设备中被原子处理的第一融合命令和第二融合命令;
将第一融合命令存储在预留缓冲器中;
从主机存储器检索第二命令突发;
确定第二命令突发中的第一个命令是否是所述一对融合命令中的第二融合命令;以及
响应于确定第二命令突发中的第一个命令是所述一对融合命令中的第二融合命令,原子处理所述一对融合命令。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163184499P | 2021-05-05 | 2021-05-05 | |
US63/184,499 | 2021-05-05 | ||
US17/381,795 | 2021-07-21 | ||
US17/381,795 US11762587B2 (en) | 2021-05-05 | 2021-07-21 | Method and memory device for atomic processing of fused commands |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115309321A true CN115309321A (zh) | 2022-11-08 |
Family
ID=81448749
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210481315.7A Pending CN115309321A (zh) | 2021-05-05 | 2022-05-05 | 用于融合命令的原子处理的方法和存储器设备 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11762587B2 (zh) |
EP (1) | EP4086746A1 (zh) |
KR (1) | KR20220151116A (zh) |
CN (1) | CN115309321A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11928358B2 (en) * | 2022-01-10 | 2024-03-12 | Phison Electronics Corp. | Command management method, memory storage device and memory control circuit |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1999034294A1 (en) | 1997-12-24 | 1999-07-08 | Creative Technology Ltd. | Optimal multi-channel memory controller system |
US6546461B1 (en) | 2000-11-22 | 2003-04-08 | Integrated Device Technology, Inc. | Multi-port cache memory devices and FIFO memory devices having multi-port cache memory devices therein |
US7013383B2 (en) | 2003-06-24 | 2006-03-14 | Via-Cyrix, Inc. | Apparatus and method for managing a processor pipeline in response to exceptions |
KR20050043426A (ko) | 2003-11-06 | 2005-05-11 | 삼성전자주식회사 | 파이프라인 버스 시스템에서 커맨드 전송 방법 및 장치 |
US7873776B2 (en) | 2004-06-30 | 2011-01-18 | Oracle America, Inc. | Multiple-core processor with support for multiple virtual processors |
US9208108B2 (en) | 2008-12-19 | 2015-12-08 | Nvidia Corporation | Method and system for improved flash controller commands selection |
US9606803B2 (en) | 2013-07-15 | 2017-03-28 | Texas Instruments Incorporated | Highly integrated scalable, flexible DSP megamodule architecture |
US9672165B1 (en) | 2014-05-21 | 2017-06-06 | Veritas Technologies Llc | Data management tier coupling primary storage and secondary storage |
US9875182B1 (en) | 2015-05-26 | 2018-01-23 | EMC IP Holding Company LLC | Lock free container packing |
US9927983B2 (en) | 2015-09-28 | 2018-03-27 | Sandisk Technologies Llc | Methods, systems and computer readable media for intelligent fetching of data storage device commands from submission queues |
US11467769B2 (en) | 2015-09-28 | 2022-10-11 | Sandisk Technologies Llc | Managed fetching and execution of commands from submission queues |
US10176147B2 (en) | 2017-03-07 | 2019-01-08 | Qualcomm Incorporated | Multi-processor core three-dimensional (3D) integrated circuits (ICs) (3DICs), and related methods |
US10466903B2 (en) | 2017-03-24 | 2019-11-05 | Western Digital Technologies, Inc. | System and method for dynamic and adaptive interrupt coalescing |
US10725835B2 (en) | 2017-05-03 | 2020-07-28 | Western Digital Technologies, Inc. | System and method for speculative execution of commands using a controller memory buffer |
JP2018169810A (ja) * | 2017-03-30 | 2018-11-01 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
US10642498B2 (en) | 2017-11-07 | 2020-05-05 | Western Digital Technologies, Inc. | System and method for flexible management of resources in an NVMe virtualization |
JP2020016954A (ja) | 2018-07-23 | 2020-01-30 | キオクシア株式会社 | メモリシステム |
US10846224B2 (en) | 2018-08-24 | 2020-11-24 | Apple Inc. | Methods and apparatus for control of a jointly shared memory-mapped region |
JP2020035300A (ja) | 2018-08-31 | 2020-03-05 | 株式会社日立製作所 | 情報処理装置および制御方法 |
US10621689B1 (en) | 2018-09-27 | 2020-04-14 | Intel Corporation | Multi-phase architecture for multiple rate pixel shading |
US11074109B2 (en) | 2019-03-27 | 2021-07-27 | Intel Corporation | Dynamic load balancing of compute assets among different compute contexts |
US11100643B2 (en) | 2019-09-11 | 2021-08-24 | Nvidia Corporation | Training strategy search using reinforcement learning |
-
2021
- 2021-07-21 US US17/381,795 patent/US11762587B2/en active Active
-
2022
- 2022-04-07 KR KR1020220043600A patent/KR20220151116A/ko unknown
- 2022-04-29 EP EP22170912.4A patent/EP4086746A1/en active Pending
- 2022-05-05 CN CN202210481315.7A patent/CN115309321A/zh active Pending
-
2023
- 2023-08-28 US US18/456,770 patent/US20230401009A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US11762587B2 (en) | 2023-09-19 |
EP4086746A1 (en) | 2022-11-09 |
KR20220151116A (ko) | 2022-11-14 |
US20230401009A1 (en) | 2023-12-14 |
US20220357887A1 (en) | 2022-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112352404B (zh) | 用于处理电子设备的数据分组的装置和方法 | |
US20230401009A1 (en) | Method and memory device for atomic processing of fused commands | |
US11374881B2 (en) | Method for processing network packets and electronic device therefor | |
US11422852B2 (en) | Electronic device capable of increasing task management efficiency of digital signal processor | |
US10769475B2 (en) | Method of identifying objects based on region of interest and electronic device supporting the same | |
EP4261702A1 (en) | Systems and methods for database scan acceleration | |
EP3654182A1 (en) | Electronic device and method for providing in-vehicle infotainment service | |
US11418452B2 (en) | Method and electronic device processing data | |
US11586564B2 (en) | Head of line entry processing in a buffer memory device | |
CN116893779A (zh) | 用于数据库扫描加速的系统和方法 | |
US11934694B2 (en) | Memory device and method to restock entries in serial link | |
WO2021162388A1 (ko) | 스토리지를 포함하는 전자 장치 및 이를 이용한 스토리지로 파일 시스템의 디스카드 커맨드 전달 방법 | |
CN111488303B (zh) | 接口转接电路 | |
US9110856B2 (en) | Interface control apparatus, data storage apparatus and method for interface control | |
EP4336337A1 (en) | Memory system and operating method for increasing data protection in storage failure scenarios and electronic device including the same | |
US11609596B2 (en) | Electronic device for controlling frequency of processor and method of operating the same | |
US20230093968A1 (en) | Electronic device using blockchain and operating method thereof | |
EP4120059A1 (en) | Methods and devices for file read latency reduction | |
CN117687567A (zh) | 存储器系统、存储器系统的方法和电子装置 | |
US9571521B2 (en) | Method for processing data and electronic device therefor | |
CN117194004A (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 |