CN106662984A - 固态驱动器中不均匀通道加载的性能影响的降低 - Google Patents
固态驱动器中不均匀通道加载的性能影响的降低 Download PDFInfo
- Publication number
- CN106662984A CN106662984A CN201580045606.XA CN201580045606A CN106662984A CN 106662984 A CN106662984 A CN 106662984A CN 201580045606 A CN201580045606 A CN 201580045606A CN 106662984 A CN106662984 A CN 106662984A
- Authority
- CN
- China
- Prior art keywords
- passage
- read requests
- determined
- solid
- state drive
- 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
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/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
-
- 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
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Abstract
提供了一种用于在耦合到主机的固态驱动器中分配读取请求的方法和系统。固态驱动器中的仲裁器确定固态驱动器中的多个通道中的哪个是多个通道中的轻加载通道。分配用于处理意图用于所确定的轻加载通道的一个或多个读取请求的资源,其中已经从主机接收到一个或多个读取请求。将一个或多个读取请求放置在所确定的轻加载通道中以用于处理。在某些实施例中,轻加载通道是多个通道中的最轻加载通道。
Description
背景技术
固态驱动器(SSD)是使用集成电路组件作为存储器来持久地存储数据的数据存储设备。许多类型的SSD使用基于NAND或基于NOR的闪存,其在没有电力的情况下保持数据并且是一种非易失性存储技术。
可以将通信接口用来将SSD耦合到包括处理器的主机系统。这样的通信接口可以包括外围部件互连高速(PCIe)总线。PCIe的进一步细节可以在PCI-SIG在2010年11月10日出版的题为“PCI Express Base Specification Revision 3.0”的出版物中找到。经由PCI总线进行通信的SSD的最重要的益处是增加的性能,并且这样的SSD被称为PCIe SSD。
附图说明
现在参考附图,其中遍及以下附图相同的参考标号表示相对应的部分:
图1示出了其中固态盘通过PCIe总线耦合到主机的计算环境的框图;
图2示出了图示根据某些实施例的仲裁器如何将传入队列中的读取请求分配给固态驱动器的通道的另一框图;
图3示出了图示根据某些实施例的在开始最轻填充的通道的优先化和主机命令的重新排序(reorder)之前在固态驱动器中的读取请求的分配的框图;
图4示出了图示根据某些实施例的在最轻填充的通道的优先化和主机命令的重新排序之后在固态驱动器中的读取请求的分配的框图;
图5示出了根据某些实施例的用于防止固态驱动器中的不均匀通道加载的第一流程图;
图6示出了根据某些实施例的用于防止固态驱动器中的不均匀通道加载的第二流程图;以及
图7示出了根据某些实施例的计算设备的框图。
具体实施方式
在下面的描述中,对形成其一部分并且示出了若干实施例的附图进行参考。应当理解:可以利用其他实施例并且可以进行结构和操作改变。
PCIe SSD的增加的性能可能主要是由于PCIe SSD中实现的通道数量。例如,在某些实施例中,某些PCIe SSD可以通过扩展的18通道设计来提供改善的内部带宽。
在基于PCIe的固态驱动器中,从主机到固态驱动器的PCIe总线可以具有高带宽(例如,40吉字节/秒)。基于PCIe的固态驱动器可以具有多个通道,其中与PCIe总线的带宽相比,每个通道具有相对较低的带宽。例如,在具有18个通道的固态驱动器中,每个通道可以具有大约200兆字节/秒的带宽。
在某些情况下,耦合到每个通道的NAND芯片的数量在数量上是相等的,并且在这种情况下,在来自主机的随机但均一(uniform)的读取请求的情形下,可以大致相等地对通道加载,即针对处理读取请求大致相同量地在持续时间上利用每个通道。可以注意到,在许多情况下,从主机到固态驱动器的超过95%的请求可能是读取请求,而从主机到固态驱动器的不到5%的请求可能是写入请求,并且读取请求到通道的适当分配可能在固态驱动器中是重要的。
然而,在某些情况下,与其他通道相比,通道中的至少一个可以具有耦合到通道的不同数量的NAND芯片。当NAND芯片的数量不是通道数量的倍数时,可能发生这种情况。例如,如果存在18个通道并且NAND芯片的数量不是18的倍数,那么与其他通道相比,通道中的至少一个必须具有耦合到通道的不同数量的NAND芯片。在这种情况下,耦合到较大数量的NAND芯片的通道可以比耦合到较少数量的NAND芯片的通道负载更重。假设固态驱动器中的每个NAND芯片是相同的结构并且具有相同的存储容量。
在通道的不均匀加载的情况下,一些通道可能比其他通道积压(backlog)得更多,并且在完成对主机的响应之前PCIe总线可能必须等待积压清除。
某些实施例提供了即使当与其他通道相比通道中的至少一个具有耦合到通道的不同数量的NAND芯片时也防止通道的不均匀加载的机制。这通过用意图用于最轻加载通道的读取请求优先加载最轻加载通道并且通过对在固态驱动器中的队列中等待执行的未决读取请求的处理重新排序来实现。由于在将读取请求加载到通道中时对资源进行分配,所以通过用读取请求加载最轻加载的通道,仅在需要时才使用资源并且资源被有效地使用。因此,某些实施例改善了SSD的性能。
图1示出了根据某些实施例的计算环境100的框图,其中固态驱动器102通过PCIe总线106耦合到主机104。主机104可以至少包括处理器。
在某些实施例中,仲裁器108在固态驱动器102中以固件来实现。在其他实施例中,仲裁器108可以以硬件或软件、以硬件、固件或软件的任何组合来实现。仲裁器108将通过PCIe总线106从主机104接收的读取请求分配给固态驱动器102的多个通道110a、110b、...、110n中的一个或多个通道。
在某些实施例中,将通道110a ... 110n耦合到多个非易失性存储器芯片,诸如NAND芯片、NOR芯片或其他合适的非易失性存储器芯片。在替代实施例中,也可以使用其他类型的存储器芯片,诸如基于相变存储器(PCM)、三维交叉点存储器、电阻存储器、纳米线存储器、铁电晶体管随机存取存储器(FeTRAM)、并入忆阻器技术的磁阻随机存取存储器(MRAM)存储器、自旋转移力矩(STT)-MRAM或其他合适的存储器的芯片。
例如,在某些实施例中,通道110a耦合到NAND芯片112a ... 112p,通道110b耦合到NAND芯片114a ...114q,以及通道110n耦合到NAND芯片114a ...114r。 NAND芯片112a...112p、114a ...114q、114a ...114r中的每一个在构造上相同。与其他通道相比,多个通道110a ...110n中的通道中的至少一个具有耦合到通道的不同数量的NAND芯片,因此如果来自主机104的读取请求是随机和均一的,则存在多个通道110a...110n的不均匀加载的可能性。
在某些实施例中,固态驱动器102可能能够存储若干太字节(terabyte)的数据或更多,并且在固态驱动器102中可以找到多个NAND芯片112a ...112p、114a ...114q、116a... 116r,其每一个存储若干吉字节的数据或更多。PCIe总线106可以具有每秒4吉字节的最大带宽(即,数据承载能力)。在某些实施例中,多个通道110a ...110n的数量可以是十八,并且每个通道可以具有每秒200兆字节的最大带宽。
在某些实施例中,仲裁器108以序列逐个地检验多个通道110a ... 110n,并且在检验所有多个通道110a ...110n之后,在尝试执行多个通道的均一加载中用意图用于该通道的读取请求加载最小加载通道以增加最小加载通道上的负载。
图2示出了根据某些实施例的固态驱动器102的另一框图200,其示出了仲裁器108如何将传入队列202中的读取请求分配给固态驱动器102的通道110a ...110n。
仲裁器108保持传入队列202,其中传入队列202存储通过PCIe总线106从主机104接收的读取请求。读取请求以传入队列202中的顺序到达并且最初以与读取请求到达传入队列202中的顺序相同的顺序保持。例如,首先到达的请求可以是针对存储在耦合到通道110b的NAND芯片中的数据的,并且下一个到达的第二请求可以是针对存储在耦合到通道110a的NAND芯片中的数据的。在这种情况下,首先到达的请求在传入队列202的头部,并且下一个到达的请求是传入队列202中的下一个元素。
仲裁器108还为每个通道110a ...110b保持数据结构,在该数据结构中保持由通道正在处理的未完成的(outstanding)读取请求的标识。例如,数据结构204a、204b、...204n存储由多个通道110a、110b、...110n正在处理的未完成的读取的标识。针对通道的未完成的读取请求是已经被加载到通道并且由通道正在处理的读取请求,即,耦合到通道的NAND芯片正在用来检索对应于已经加载到通道的读取请求的数据。
固态驱动器102还保持在将读取请求加载到通道时使用的多个硬件、固件或软件资源,诸如缓冲器、锁存器、存储器、各种数据结构等(如通过参考标号206所示)。在某些实施例中,通过在最小加载通道上加载读取请求时保留资源,仲裁器108防止不必要的资源锁定。
因此,图2示出了某些实施例,其中仲裁器108保持读取请求的传入队列202,并且还保持与由固态驱动器102的每个通道110a ..110n正在处理的未完成的读取对应的数据结构204a ... 204n。
图3示出了图示根据某些实施例的在开始最轻填充的通道的优先化和主机命令的重新排序之前在示例性固态驱动器300中的读取请求的分配的框图。与其他通道相比,最轻填充的通道具有经历通道的处理的最少数量的读取请求。
示例性固态驱动器300具有三个通道:通道A 302、通道B 304和通道C 306。通道A302具有经由参考标号310、312、314指示的未完成读取308,即,对于存储在耦合到通道A302的NAND芯片中的数据,存在三个读取请求(称为“读取A”310、312、314)。通道B 304具有经由参考标号318指示的未完成读取316,并且通道C 306具有由参考标号322、324指代的未完成读取320。
读取请求326的传入队列具有十个读取命令328、330、332、334、336、338、340、342、344、346,其中在传入队列326的头部的命令是“读取A”命令328,并且在传入队列326的尾部的命令是 “读取B”命令346。
图4示出了图示根据某些实施例的在最轻填充的通道的优先化和主机命令的重新排序之后在固态驱动器300中的读取请求的分配的框图。
在某些实施例中,仲裁器108检验读取请求326的传入队列(如图3所示)以及如数据结构308、316、318中所示的通道正在处理的未完成读取。仲裁器108然后用从读取请求326的传入队列中无序地(out of order)选择的命令340、344(其是“读取B”命令)加载最轻加载的通道B 304(其在图3中只具有未完成的一个读取请求318)(如图3中所示)。
图4示出了在最轻加载的通道B 304已经加载有命令340、344之后的情况。在图4中,针对通道B 304正在处理的未完成读取316中的参考标号402和404示出了图3的现在已经被加载到通道B 304中用于处理的命令340、344。
因此,通过利用从读取请求326的传入队列中无序地选择的适当的读取请求加载三个通道302、304、306中最轻加载的,可以更均匀地对通道302、304和306进行加载。应当注意:在传入队列326中的命令340之前的命令328、330、332、334、336、338中没有一个可以被加载到通道B 304,因为命令328、330、332、334、336、338是针对经由通道A 302或通道C 306访问的数据的读取请求。还应注意:仅存在一个仲裁器108和多个通道,因此仲裁器108逐个地检验通道302、304、306上的未完成读取308、316、320。通道302、304、306当然可以通知仲裁器108通道302、304、306何时完成某些读取请求的处理,并且仲裁器108可以根据由通道302、304、306提供的信息来跟踪通道302、304、306上的未完成读取请求。
另外,当通过使用微控制器实现时,仲裁器108是串行化处理器。 NAND芯片(例如NAND芯片112a)具有对其仅允许一个读取请求的固有性质。用于NAND芯片的通道(例如,通道110a)具有“忙”状态,直到对NAND芯片的读取请求完成。仲裁器108的责任是在通道忙时不调度新的读取。一旦通道不忙,仲裁器108就需要向NAND芯片分派下一个命令。为了改善通道加载,在某些实施例中,相比于“重加载”通道(即,正在用于处理相对较少读取请求的通道),仲裁器108更经常地轮询“轻加载”通道(即,正在用于处理相对较少读取请求的通道),使得重新排序的读取命令被尽快分派给轻加载通道。这是重要的,因为完成新的读取命令的时间大约是100微秒,而仲裁器108扫描所有18个通道并重新排序读取命令大约花费相同量的时间。
图5示出了根据某些实施例的用于防止固态驱动器中的不均匀通道加载的第一流程图500。图5中所示的操作可以由执行固态驱动器102内的操作的仲裁器108执行。
控制开始于框502,其中仲裁器108确定多个通道110a、110b、... 110n中的第一通道110a上的读取处理负载(即,正在使用的带宽)。控制进行到框504,其中仲裁器108确定是否已确定最后通道110n上的读取处理负载。如果不是(“否”分支505),则仲裁器108确定下一个通道上的读取处理负载,并且控制返回到框504。可以通过检验用于未完成读取204a... 204n的数据结构中的未决读取请求的数量或者经由其他机制来确定读取处理负载。
如果在框504处确定最后通道110n上的读取处理负载已被确定(“是”分支507),则控制进行到框508,其中确定多个通道中的哪个具有最小处理负载,并且将具有最小处理负载的通道称为通道X。
从框508,控制进行到框509,其中确定通道X是忙还是不忙,其中忙的通道不能处理附加的读取请求,并且不忙的通道能够处理附加的读取请求。因为耦合到通道X的NAND芯片具有对其仅允许一个读取请求的固有性质,所以需要确定通道X是忙还是不忙。用于NAND芯片的通道X具有“忙”状态,直到对NAND芯片的读取请求完成。
如果在框509处确定通道X不忙(参考标号509a),那么控制进行到框510,其中仲裁器108选择在“读取请求的传入队列”202中已经累积的意图用于通道X的一个或多个读取请求,使得通道X的可用带宽尽可能接近被完全利用,其中选择可导致“读取请求的传入队列”202中的未决请求的重新排序。仲裁器108分配用于所选择的一个或多个读取请求的资源,并将一个或多个读取请求发送(在框512处)到通道X以用于处理。
如果在框509处确定通道X忙(参考标号509b),那么过程进行等待,直到通道X不忙。
在替代实施例中,代替确定具有最小处理负载的通道,可以确定相对轻加载的通道(即,在多个通道中具有相对低处理负载的通道)。在某些实施例中,可以将读取请求优先地发送到相对轻加载的通道。应当注意,仲裁器108不调度用于轻加载通道的另一个读取请求,直到轻加载通道被确认为“不忙”。
可以注意到,当正在执行操作502、504、505、506、507、508、510、512时,主机读取请求在“读取请求的传入队列”数据结构202中保持累积(在框514处) 。
因此,图5示出了用于选择最轻加载的通道并且重新排序读取请求的传入队列中的队列项目以选择适当的读取请求来加载在最轻加载的通道中的某些实施例。
图6示出了根据某些实施例的用于防止固态驱动器中的不均匀通道加载的第二流程图600。图6中所示的操作可以由执行固态驱动器102内的操作的仲裁器108执行。
控制开始于框602,其中固态驱动器102经由PCIe总线106从主机104接收多个读取请求,其中固态驱动器中的多个通道110a ... 110n中的每一个具有相同的带宽。虽然通道110a ... 110n可具有相同的带宽,但是在实际状况中,通道110a ... 110n中的一个或多个可能没有完全利用带宽。
固态驱动器102中的仲裁器108确定(在框604处)固态驱动器102中的多个通道110a ... 110n中的哪一个是轻加载通道(在某些实施例中,轻加载通道是最轻加载通道)。分配用于处理意图用于所确定的轻加载通道的一个或多个读取请求的资源(在框608处),其中已经从主机104接收到一个或多个读取请求。
控制进行到框608,其中将一个或多个读取请求放置在所确定的轻加载通道中以用于处理。在将一个或多个读取请求放置在所确定的轻加载通道中以用于处理之后,所确定的轻通道在处理期间尽可能接近被完全利用。
因此,图1-图6示出了用于通过对来自传入队列的读取请求的无序选择来防止固态驱动器中的通道的不均匀加载,以及将读取请求的无序选择加载到相对轻加载或者最小加载的通道中的某些实施例。
所描述的操作可以被实现为使用标准编程和/或工程技术来产生软件、固件、硬件或其任何组合的方法、装置或计算机程序产品。所描述的操作可以被实现为保持在“计算机可读存储介质”中的代码,其中处理器可以从计算机存储可读介质读取和执行代码。计算机可读存储介质包括电子电路、存储材料、无机材料、有机材料、生物材料、壳体、外壳、涂层和硬件中的至少一个。计算机可读存储介质可以包括但不限于磁存储介质(例如,硬盘驱动驱动器、软盘、带等)、光学记忆装置(CD-ROM、DVD、光盘等)、易失性和非易失性存储器设备(例如,EEPROM、ROM、PROM、RAM、DRAM、SRAM、闪存、固件、可编程逻辑等)、固态设备(SSD)等。实现所描述的操作的代码还可以在硬件设备(例如,集成电路芯片、可编程门阵列(PGA)、专用集成电路(ASIC)等)中实现的硬件逻辑中实现。此外,实现所描述的操作的代码可以在“传输信号”中实现,其中传输信号可以通过空间或通过诸如光纤、铜线等的传输介质传播。代码或逻辑被编码在其中的传输信号还可以包括无线信号、卫星传输、无线电波、红外信号、蓝牙等。嵌入在计算机可读存储介质上的程序代码可以作为传输信号从传输站或计算机传输到接收站或计算机。计算机可读存储介质不仅包括传输信号。本领域技术人员将认识到,可以对该配置进行许多修改,并且制品可以包括本领域已知的合适的信息承载介质。
可以以一种或多种编程语言的任何组合来编写用于执行某些实施例的方面的操作的计算机程序代码。流程图和框图的框可以由计算机程序指令来实现。
图7示出了根据某些实施例的包括主机104(主机104至少包括处理器)和固态驱动器102两者的系统700的框图。例如,在某些实施例中,系统700可以是具有包括在系统700中的主机104和固态驱动器102的计算机(例如,膝上型计算机、台式计算机、平板计算机、蜂窝电话或任何其他合适的计算设备)。例如,在某些实施例中,系统700可以是包括固态驱动器102的膝上型计算机。
系统700可以包括电路702,电路702在某些实施例中可以至少包括处理器704。系统700还可以包括存储器706(例如,易失性存储器设备)和记忆装置708。记忆装置708可以包括固态驱动器102或包括非易失性存储器设备(例如,EEPROM、ROM、PROM、RAM、DRAM、SRAM、闪存、固件、可编程逻辑等)的其他驱动器或设备。记忆装置708还可以包括磁盘驱动器、光盘驱动器、带驱动器等。记忆装置708可以包括内部存储设备、附着存储设备和/或网络可访问存储设备。系统700可以包括程序逻辑710,其包括可以加载到存储器706中并由处理器704或电路702执行的代码712。在某些实施例中,包括代码712的程序逻辑710可以存储在记忆装置708中。在某些其他实施例中,程序逻辑710可以在电路702中实现。因此,虽然图7与其他元件分离地示出了程序逻辑710,但是程序逻辑710可以在存储器706和/或电路702中实现。系统700还可以包括显示器714(例如,液晶显示器(LCD)、发光二极管(LED)显示器、阴极射线管(CRT)显示器、触摸屏显示器或任何其他合适的显示器)。系统700还可以包括一个或多个输入设备716,诸如键盘、鼠标、操纵杆、轨迹板或任何其他合适的输入设备)。除了图7中所示的组件或设备之外的其他组件或设备也可以在系统700中找到。
某些实施例可以涉及一种用于由人部署计算指令或将计算机可读代码集成到计算系统中的自动处理的方法,其中使得与计算系统组合的代码能够执行所描述的实施例的操作。
除非另有明确规定,否则术语“一实施例”、“实施例”、“多个实施例”、“该实施例”、“该多个实施例”、“一个或多个实施例”、“一些实施例”以及“一个实施例”意指“一个或多个(但是不是所有)实施例”。
除非另有明确规定,否则术语“包括”、“包含”、“具有”及其变体意指“包括但不限于”。
除非另有明确规定,否则列举的项目列表并不意味着任何或所有项目是相互排斥的。
除非另有明确规定,否则术语“一”、“一个”和“该”意指“一个或多个”。
除非另有明确规定,否则彼此通信的设备不需要彼此连续通信。另外,彼此通信的设备可以直接进行通信或者通过一个或多个中介间接地进行通信。
具有彼此通信的若干部件的实施例的描述不意味着需要所有这样的部件。相反,描述了各种可选的部件以示出各种各样的可能实施例。
此外,尽管可以以顺序次序描述处理步骤、方法步骤、算法等,但是这样的处理、方法和算法可以被配置为以替代的顺序工作。换句话说,可以描述的步骤的任何序列或顺序不一定指示以该顺序执行步骤的要求。本文描述的处理的步骤可以以实际的任何顺序执行。此外,可以同时执行一些步骤。
当在本文中描述单个设备或物品时,将容易清楚的是:多于一个设备/物品(无论它们是否协作)可以用来代替单个设备/物品。类似地,在本文中描述多于一个设备或物品(无论它们是否合作)情况下,将容易清楚的是:单个设备/物品可以用来代替该多于一个设备或物品或不同数量的设备/物品可以用来代替所示数量的设备或程序。设备的功能和/或特征可以可替代地由未明确描述为具有这样的功能/特征的一个或多个其他设备来体现。因此,其他实施例不需要包括设备本身。
在附图中已经示出的至少某些操作示出了以特定顺序发生的某些事件。在替代实施例中,某些操作可以以不同的顺序执行、修改或移除。此外,可以向上述逻辑添加步骤,并且步骤仍然符合所描述的实施例。此外,本文描述的操作可以顺序地发生,或者可以并行地处理某些操作。此外,操作可以由单个处理单元或由分布式处理单元执行。
出于说明和描述的目的,已经呈现了各种实施例的前述描述。其并不旨在穷举或将其限于所公开的精确形式。鉴于上述教导,许多修改和变化是可能的。
示例
以下示例涉及另外的实施例。
示例1是一种方法,其中固态驱动器中的仲裁器确定固态驱动器中的多个通道中的哪个通道与其他通道相比是轻加载通道。将资源分配用于处理意图用于所确定的轻加载通道的一个或多个读取请求,其中已经从主机接收所述一个或多个读取请求。将所述一个或多个读取请求放置在所确定的轻加载通道中以用于处理。
在示例2中,权利要求1的主题可以包括:所确定的轻加载通道是多个通道中的最轻加载通道,其中在将所述一个或多个读取请求放置在所确定的最轻加载通道中以用于处理之后,所确定的最轻加载通道在处理期间尽可能接近被完全利用。
在示例3中,权利要求1的主题可以包括:将所述一个或多个读取请求包括在意图用于所述多个通道的多个读取请求中,其中通过将所述一个或多个读取请求放置在所确定的轻加载通道中以用于处理来修改所述多个读取请求的处理的顺序。
在示例4中,权利要求3的主题可以包括:修改所述多个请求的处理的顺序相对于其他请求优先地处理意图用于所确定的轻加载通道的所述一个或多个读取请求。
在示例5中,权利要求1的主题可以包括:所述固态驱动器经由外围部件互连高速(PCIe)总线从主机接收一个或多个读取请求,其中所述固态驱动器中的所述多个通道中的每一个具有相同的带宽。
在示例6中,权利要求5的主题可以包括:所述多个通道的带宽的和等于PCIe总线的带宽。
在示例7中,权利要求1的主题可以包括:与所述多个通道中的其他通道相比,所述多个通道中的至少一个通道耦合到不同数量的NAND芯片。
在示例8中,权利要求1的主题可以包括:如果未将所述一个或多个读取请求放置在所确定的轻加载通道中以用于处理,那么在所述固态驱动器上的读取性能与其中所有通道耦合到相同数量的NAND芯片的另一固态驱动器相比降低超过10%。
在示例9中,权利要求1的主题可以包括:在由所述固态驱动器中的仲裁器确定所述固态驱动器中的所述多个通道中的哪个是所述轻加载通道之后,执行用于处理的所述资源的分配。
在示例10中,权利要求1的主题可以包括:相比于相对重加载的通道所述仲裁器更经常地轮询相对轻加载的通道,以将重新排序的读取请求优先地分派到所述相对轻加载的通道。
在示例11中,权利要求1的主题可以包括:将所述多个通道中的每一个通道与保持由所述通道正在处理的未完成读取的数据结构相关联;以及将已经从所述主机接收的所述一个或多个读取请求保持在从所述主机接收的读取请求的传入队列中。
示例12是一种装置,包括多个非易失性存储器芯片、耦合到所述多个非易失性存储器芯片的多个通道以及用于控制所述多个通道的仲裁器,其中所述仲裁器可操作用于:确定所述多个通道中的哪个与其他通道相比是轻加载通道;分配用于处理意图用于所确定的轻加载通道的一个或多个读取请求的资源,其中已经从主机接收所述一个或多个读取请求;以及将所述一个或多个读取请求放置在所确定的轻加载通道中以用于处理。
在示例13中,权利要求12的主题可以包括:所述非易失性存储器芯片包括NAND芯片,其中所确定的轻加载通道是所述多个通道中的最轻加载通道,其中,在将所述一个或多个读取请求放置在所确定的最轻加载通道中以用于处理之后,所确定的最轻加载通道在处理期间尽可能接近被完全利用。
在示例14中,权利要求12的主题可以包括:将所述一个或多个读取请求包括在意图用于所述多个通道的多个读取请求中,其中,通过将所述一个或多个读取请求放置在所确定的轻加载通道中以用于处理来修改所述多个读取请求的处理的顺序。
在示例15中,权利要求14的主题可以包括:修改所述多个请求的处理的顺序相对于其他请求优先地处理意图用于所确定的轻加载通道的一个或多个读取请求。
在示例16中,权利要求12的主题可以包括:所述装置经由外围部件互连高速(PCIe)总线从所述主机接收所述一个或多个读取请求,其中,所述装置中的多个通道中的每一个具有相同的带宽。
在示例17中,权利要求16的主题可以包括:所述多个通道的带宽的和等于所述PCIe总线的带宽。
在示例18中,权利要求12的主题可以包括:所述非易失性存储器芯片包括NAND芯片,其中与多个通道中的其他通道相比,所述多个通道中的至少一个耦合到不同数量的NAND芯片。
在示例19中,权利要求12的主题可以包括可以包括:所述非易失性存储器芯片包括NAND芯片,其中如果未将一个或多个读取请求放置在所确定的轻加载通道中以用于处理,那么所述装置上的读取性能与其中所有通道耦合到相同数量的NAND芯片的另一装置相比降低超过10%。
在示例20中,权利要求12的主题可以包括:在由装置中的仲裁器确定装置中的所述多个通道中的哪个是所述轻加载通道之后,执行用于处理的所述资源的分配。
在示例21中,权利要求12的主题可以包括:相比于相对重加载的通道,所述仲裁器更经常地轮询相对轻加载的通道,以将重新排序的读取请求优先地分派到所述相对轻加载的通道。
在示例22中,权利要求12的主题可以包括:将所述多个通道中的每一个与保持由所述通道正在处理的未完成读取的数据结构相关联;以及将已经从所述主机接收的所述一个或多个读取请求保持在从所述主机接收的读取请求的传入队列中。
示例23是一种系统,包括固态驱动器、显示器和耦合到所述固态驱动器和所述显示器的处理器,其中所述处理器向所述固态驱动器发送多个读取请求,并且其中响应于所述多个读取请求,所述固态驱动器执行操作,所述操作包括:确定所述固态驱动器中的多个通道中的哪个与所述固态驱动器中的其他通道相比是轻加载通道;分配用于处理从所述多个读取请求中选择的一个或多个读取请求的资源,其中所述一个或多个读取请求意图用于所确定的轻加载通道;将所述一个或多个读取请求放置在所确定的轻加载通道中以用于处理。
在示例24中,权利要求23的主题还包括:所述固态驱动器还包括多个非易失性存储器芯片,所述多个非易失性存储器芯片包括NAND或NOR芯片,其中所述轻加载通道是所述多个通道中的最轻加载通道,并且其中在将所述一个或多个读取请求放置在所确定的最轻加载通道中以用于处理之后,所确定的最轻加载通道在处理期间尽可能接近被完全利用。
在示例25中,权利要求23的主题还包括:通过将所述一个或多个读取请求放置在所确定的轻加载通道中以用于处理来修改所述多个请求的处理的顺序。
Claims (25)
1.一种方法,包括:
由固态驱动器中的仲裁器确定固态驱动器中的多个通道中的哪个通道与其他通道相比是轻加载通道;
分配用于处理意图用于所确定的轻加载通道的一个或多个读取请求的资源,其中已经从主机接收了所述一个或多个读取请求;以及
将所述一个或多个读取请求放置在所确定的轻加载通道中以用于处理。
2.根据权利要求1所述的方法,其中,所确定的轻加载通道是多个通道中的最轻加载通道,并且其中在将一个或多个读取请求放置在所确定的最轻加载通道中以用于处理之后,所确定的最轻加载通道在处理期间尽可能接近被完全利用。
3.根据权利要求1所述的方法,其中,将一个或多个读取请求包括在意图用于多个通道的多个读取请求中,并且其中通过将一个或多个读取请求放置在所确定的轻加载通道中以用于处理来修改多个读取请求的处理的顺序。
4.根据权利要求3所述的方法,其中,修改多个请求的处理的顺序相对于其他请求优先地处理意图用于所确定的轻加载通道的一个或多个读取请求。
5.根据权利要求1所述的方法,所述方法还包括:
由固态驱动器经由外围部件互连高速(PCIe)总线从主机接收一个或多个读取请求,其中固态驱动器中的多个通道中的每一个具有相同的带宽。
6.根据权利要求5所述的方法,其中,多个通道的带宽的和等于PCIe总线的带宽。
7.根据权利要求1所述的方法,其中,与多个通道中的其他通道相比,多个通道中的至少一个通道耦合到不同数量的NAND芯片。
8.根据权利要求1所述的方法,其中,如果未将一个或多个读取请求放置在所确定的轻加载通道中以用于处理,那么在固态驱动器上的读取性能与其中所有通道耦合到相同数量的NAND芯片的另一固态驱动器相比降低超过10%。
9.根据权利要求1所述的方法,其中,在由固态驱动器中的仲裁器确定固态驱动器中的多个通道中的哪个是轻加载通道之后,执行用于处理的资源的分配。
10.根据权利要求1所述的方法,其中,相比于相对重加载的通道,仲裁器更经常地轮询相对轻加载的通道,以将重新排序的读取请求优先地分派到相对轻加载的通道。
11. 根据权利要求1所述的方法,方法还包括:
将多个通道中的每一个与保持由通道正在处理的未完成读取的数据结构相关联;以及
将已经从主机接收的一个或多个读取请求保持在从主机接收的读取请求的传入队列中。
12.一种装置,包括:
多个非易失性存储器芯片;
耦合到多个非易失性存储器芯片的多个通道;以及
用于控制多个通道的仲裁器,其中仲裁器可操作用于:
确定多个通道中的哪个与其他通道相比是轻加载通道;
分配用于处理意图用于所确定的轻加载通道的一个或多个读取请求的资源,其中已经从主机接收了所述一个或多个读取请求;以及
将所述一个或多个读取请求放置在所确定的轻加载通道中以用于处理。
13.根据权利要求12所述的装置,其中,非易失性存储器芯片包括NAND芯片,其中轻加载通道是多个通道中的最轻加载通道,并且其中在将一个或多个读取请求放置在所确定的最轻加载通道中以用于处理之后,所确定的最轻加载通道在处理期间尽可能接近被完全利用。
14.根据权利要求12所述的装置,其中,将一个或多个读取请求包括在意图用于多个通道的多个读取请求中,其中,从主机接收多个读取请求,并且其中通过将一个或多个读取请求放置在所确定的轻加载通道中以用于处理来修改多个读取请求的处理的顺序。
15.根据权利要求14所述的装置,其中,修改多个请求的处理的顺序相对于其他请求优先地处理意图用于所确定的轻加载通道的一个或多个读取请求。
16.根据权利要求12所述的装置,其中,所述装置经由外围部件互连高速(PCIe)总线从主机接收一个或多个请求,其中多个通道中的每一个具有相同的带宽。
17.根据权利要求16所述的装置,其中,多个通道的带宽的和等于PCIe总线的带宽。
18.根据权利要求12所述的装置,其中,非易失性存储器芯片包括NAND芯片,并且其中与多个通道中的其他通道相比,多个通道中的至少一个耦合到不同数量的NAND芯片。
19.根据权利要求12所述的装置,其中,非易失性存储器芯片包括NAND芯片,并且其中如果未将一个或多个读取请求放置在所确定的轻加载通道中以用于处理,那么读取性能与其中所有通道耦合到相同数量的NAND芯片的另一装置相比降低超过10%。
20.根据权利要求12所述的装置,其中,在仲裁器确定多个通道中的哪个是轻加载通道之后,执行用于处理的资源的分配。
21.根据权利要求12所述的装置,其中,相比于相对重加载的通道,仲裁器更经常地轮询相对轻加载的通道,以将重新排序的读取请求优先地分派到相对轻加载的通道。
22. 根据权利要求12所述的装置,其中,仲裁器还可操作用于:
将多个通道中的每一个与保持由通道正在处理的未完成读取的数据结构相关联;以及
将已经从主机接收的一个或多个读取请求保持在从主机接收的读取请求的传入队列中。
23.一种系统,包括:
固态驱动器;
显示器;以及
耦合到固态驱动器和显示器的处理器,其中处理器向固态驱动器发送多个读取请求,并且其中响应于多个读取请求,固态驱动器执行操作,所述操作包括:
确定固态驱动器中的多个通道中的哪个通道与固态驱动器中的其他通道相比是轻加载通道;
分配用于处理从多个读取请求中选择的一个或多个读取请求的资源,其中一个或多个读取请求意图用于所确定的轻加载通道;以及
将一个或多个读取请求放置在所确定的轻加载通道中以用于处理。
24.根据权利要求23所述的系统,其中,固态驱动器还包括多个非易失性存储器芯片,所述多个非易失性存储器芯片包括NAND或NOR芯片,其中轻加载通道是多个通道中的最轻加载通道,并且其中,在将一个或多个读取请求放置在所确定的最轻加载通道中以用于处理之后,所确定的最轻加载通道在处理期间尽可能接近被完全利用。
25.根据权利要求23所述的系统,其中,通过将一个或多个读取请求放置在所确定的轻加载通道中以用于处理来修改多个请求的处理的顺序。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/499016 | 2014-09-26 | ||
US14/499,016 US20160092117A1 (en) | 2014-09-26 | 2014-09-26 | Reduction of performance impact of uneven channel loading in solid state drives |
PCT/US2015/047030 WO2016048563A1 (en) | 2014-09-26 | 2015-08-26 | Reduction of performance impact of uneven channel loading in solid state drives |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106662984A true CN106662984A (zh) | 2017-05-10 |
Family
ID=55581773
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580045606.XA Pending CN106662984A (zh) | 2014-09-26 | 2015-08-26 | 固态驱动器中不均匀通道加载的性能影响的降低 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20160092117A1 (zh) |
KR (1) | KR20170038863A (zh) |
CN (1) | CN106662984A (zh) |
DE (1) | DE112015003568T5 (zh) |
TW (1) | TWI614671B (zh) |
WO (1) | WO2016048563A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109683823A (zh) * | 2018-12-20 | 2019-04-26 | 湖南国科微电子股份有限公司 | 一种管理存储器多并发请求的方法及装置 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210182190A1 (en) * | 2016-07-22 | 2021-06-17 | Pure Storage, Inc. | Intelligent die aware storage device scheduler |
US10528462B2 (en) | 2016-09-26 | 2020-01-07 | Intel Corporation | Storage device having improved write uniformity stability |
KR102429904B1 (ko) * | 2017-09-08 | 2022-08-05 | 삼성전자주식회사 | PCIe P2P 접속의 밴드위스를 최대화할 수 있는 방법 및 시스템 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120303878A1 (en) * | 2011-05-26 | 2012-11-29 | International Business Machines Corporation | Method and Controller for Identifying a Unit in a Solid State Memory Device for Writing Data to |
CN103049216A (zh) * | 2012-12-07 | 2013-04-17 | 记忆科技(深圳)有限公司 | 固态硬盘及其数据处理方法、系统 |
CN103069402A (zh) * | 2010-08-31 | 2013-04-24 | 高通股份有限公司 | 多通道dram系统中的负载平衡方案 |
US20140229658A1 (en) * | 2013-02-14 | 2014-08-14 | Lsi Corporation | Cache load balancing in storage controllers |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0407384D0 (en) * | 2004-03-31 | 2004-05-05 | Ignios Ltd | Resource management in a multicore processor |
US8949555B1 (en) * | 2007-08-30 | 2015-02-03 | Virident Systems, Inc. | Methods for sustained read and write performance with non-volatile memory |
WO2011031903A2 (en) * | 2009-09-09 | 2011-03-17 | Fusion-Io, Inc. | Apparatus, system, and method for allocating storage |
US8386650B2 (en) * | 2009-12-16 | 2013-02-26 | Intel Corporation | Method to improve a solid state disk performance by using a programmable bus arbiter |
US9076528B2 (en) * | 2011-05-31 | 2015-07-07 | Micron Technology, Inc. | Apparatus including memory management control circuitry and related methods for allocation of a write block cluster |
KR102020466B1 (ko) * | 2012-10-04 | 2019-09-10 | 에스케이하이닉스 주식회사 | 버퍼 메모리 장치를 포함하는 데이터 저장 장치 |
US9223693B2 (en) * | 2012-12-31 | 2015-12-29 | Sandisk Technologies Inc. | Memory system having an unequal number of memory die on different control channels |
-
2014
- 2014-09-26 US US14/499,016 patent/US20160092117A1/en not_active Abandoned
-
2015
- 2015-08-25 TW TW104127719A patent/TWI614671B/zh active
- 2015-08-26 WO PCT/US2015/047030 patent/WO2016048563A1/en active Application Filing
- 2015-08-26 KR KR1020177005177A patent/KR20170038863A/ko not_active Application Discontinuation
- 2015-08-26 CN CN201580045606.XA patent/CN106662984A/zh active Pending
- 2015-08-26 DE DE112015003568.0T patent/DE112015003568T5/de active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103069402A (zh) * | 2010-08-31 | 2013-04-24 | 高通股份有限公司 | 多通道dram系统中的负载平衡方案 |
US20120303878A1 (en) * | 2011-05-26 | 2012-11-29 | International Business Machines Corporation | Method and Controller for Identifying a Unit in a Solid State Memory Device for Writing Data to |
CN103049216A (zh) * | 2012-12-07 | 2013-04-17 | 记忆科技(深圳)有限公司 | 固态硬盘及其数据处理方法、系统 |
US20140229658A1 (en) * | 2013-02-14 | 2014-08-14 | Lsi Corporation | Cache load balancing in storage controllers |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109683823A (zh) * | 2018-12-20 | 2019-04-26 | 湖南国科微电子股份有限公司 | 一种管理存储器多并发请求的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
TWI614671B (zh) | 2018-02-11 |
TW201626206A (zh) | 2016-07-16 |
WO2016048563A1 (en) | 2016-03-31 |
DE112015003568T5 (de) | 2017-05-24 |
KR20170038863A (ko) | 2017-04-07 |
US20160092117A1 (en) | 2016-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11061721B2 (en) | Task queues | |
US20210349665A1 (en) | Latency-based Scheduling of Command Processing in Data Storage Devices | |
US10114556B2 (en) | Method and apparatus for improving read performance of a solid state drive | |
US11487666B2 (en) | Timed data transfer between a host system and a memory sub-system | |
CN107885456B (zh) | 减少io命令访问nvm的冲突 | |
US11669272B2 (en) | Predictive data transfer based on availability of media units in memory sub-systems | |
US10642513B2 (en) | Partially de-centralized latch management architectures for storage devices | |
CN106662984A (zh) | 固态驱动器中不均匀通道加载的性能影响的降低 | |
US11543978B2 (en) | Credit-based scheduling of memory commands | |
US11429314B2 (en) | Storage device, storage system and operating method thereof | |
CN110489056A (zh) | 控制器以及包括该控制器的存储器系统 | |
CN109213423B (zh) | 基于地址屏障无锁处理并发io命令 | |
US20220035566A1 (en) | Pre-suspend before program in a non-volatile memory (nvm) | |
US11106390B1 (en) | Combining in-process reads to reduce die collisions | |
CN107885667B (zh) | 降低读命令处理延迟的方法与装置 | |
US10810016B2 (en) | Operating methods of computing devices comprising storage devices including nonvolatile memory devices, buffer memories and controllers | |
US11194514B2 (en) | Just in time data placement in NAND flash | |
US11822817B2 (en) | Ordering reads to limit collisions in a non-volatile memory (NVM) | |
US20220374149A1 (en) | Low latency multiple storage device system | |
US20230281115A1 (en) | Calendar based flash command scheduler for dynamic quality of service scheduling and bandwidth allocations | |
US20210191752A1 (en) | Deterministic allocation of shared resources | |
CN110568991B (zh) | 降低锁引起的io命令冲突的方法与存储设备 |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170510 |