CN102473087A - 对与存储装置关联的多个写命令进行排序 - Google Patents

对与存储装置关联的多个写命令进行排序 Download PDF

Info

Publication number
CN102473087A
CN102473087A CN2010800300326A CN201080030032A CN102473087A CN 102473087 A CN102473087 A CN 102473087A CN 2010800300326 A CN2010800300326 A CN 2010800300326A CN 201080030032 A CN201080030032 A CN 201080030032A CN 102473087 A CN102473087 A CN 102473087A
Authority
CN
China
Prior art keywords
order
write
driver
equipment
instrument
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.)
Granted
Application number
CN2010800300326A
Other languages
English (en)
Other versions
CN102473087B (zh
Inventor
罗斯·斯藤福特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seagate Technology LLC
Original Assignee
SandForce Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SandForce Inc filed Critical SandForce Inc
Publication of CN102473087A publication Critical patent/CN102473087A/zh
Application granted granted Critical
Publication of CN102473087B publication Critical patent/CN102473087B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

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 Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Systems (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明提供了用于排序与存储装置关联的多个写命令的***、方法和计算机程序产品。在操作中,识别待发送至设备的、与存储装置关联的多个写命令。此外,确定多个写命令的顺序,所述设备知晓所确定的顺序。此外,以所确定的顺序排序多个写命令。

Description

对与存储装置关联的多个写命令进行排序
技术领域
本发明涉及存储装置,且更具体地涉及对于与这种存储装置关联的写命令进行排序。
背景技术
存储***可包括很多设备,这些设备包括存储装置以及与存储装置连接和/或通信的其它装置。这些与存储装置通信的设备通常需要对与存储装置关联的命令和/或数据进行存取。在很多不同类型的存储装置中,将命令排队并按照随机顺序执行该命令。
串行ATA(SATA)计算机总线是一个用于将主机总线适配器连接至存储装置(诸如,硬盘驱动器及光学驱动器等)的存储器接口。目前,在SATA***和其它类似***中,将命令排队并且执行命令的顺序是随机的。连接至SATA驱动器的设备并不知晓写命令将被执行的顺序。
因此,附至SATA驱动器的设备不能预取写数据,除非其具有足够的资源来针对所有命令预取写数据。由于预取所有命令需要使用大部分内存,所以预取所有命令的代价很大。此外,该预取可能不会增加性能,因为正在执行的命令不一定是数据已被预取的命令。因此,需要解决这些问题和/或与现有技术相关的其它问题。
发明内容
提供了用于排序与存储装置关联的多个写命令的***、方法和计算机程序产品。在操作中,识别待发送至设备的、与存储装置关联的多个写命令。此外,确定多个写命令的顺序,设备知晓所确定的顺序。此外,按照所确定的顺序排序多个写命令。
附图说明
图1示出根据一个实施方式、用于排序与存储装置关联的多个写命令的方法。
图2示出根据一个实施方式、用于排序与存储装置关联的多个写命令的***。
图3示出根据另一个实施方式、用于排序与存储装置关联的多个写命令的方法。
图4示出示例性***,在其中可实现各个先前实施方式的各种架构和/或功能。
具体实施方式
以下提供了本发明的一个或多个实施方式的详细描述,以及示出选定的本发明细节的附图。结合实施方式来描述本发明。应理解,本文中的实施方式仅为示例性,本发明不会被明确限制于本文中的任何或所有的实施方式或被其限制,且本发明涵盖了很多替代物、修改和等同物。为了避免阐述的单调,可应用各种文字描述词(包括但不限于:首先、最后、某些、各种、进一步、其它、特别、选择、一些和显著的)从而区分实施方式集合;如本文中所使用,这类描绘词不会明确地意欲传达质量或任何形式的优先或偏见,而仅意欲方便地在分离的集合中进行区分。所公开的处理的一些操作的顺序可在本发明范围内进行改变。在以下描述中阐述很多具体的细节以提供对本发明的透彻理解。为了示例的目的而提供细节,而可根据权利要求书在没有一些或所有细节的情况下实践本发明。为了清晰之目的,没有详细描述本发明所涉及的技术领域中已知的技术材料,以免不必要地模糊本发明。
引言
该引言被包括在内,仅为了便于更加快速地理解具体实施方式,本发明不限于在引言(包括明确的例子,如果有的话)中出现的概念,因为任何引言的段落都必然是整个主题的简略概要而并不意味着是详尽的或限制的说明。例如,仅针对某些实施方式,随后的引言提供了受空间和组织限制的概要信息。在说明书的其它部分中讨论很多其它实施方式,包括最终会被撰写为权利要求的那些实施方式。
图1示出根据一个实施方式的、用于排序与存储装置关联的多个写命令的方法100。如图所示,识别待发送至设备的、与存储装置关联的多个写命令。参见操作102。
在本说明书的背景下,存储装置指任何能够存储数据的设备。例如,在各个实施方式中,存储装置可包括但不限于:串行ATA(SATA)驱动器、串行连接SCSI(SAS)驱动器、光纤通道(FC)驱动器或通用串行总线(USB)驱动器和/或任何其它存储装置。此外,在各个实施方式中,存储装置可包括被配置呈现为存储装置的外设部件互连(PCI)或基于PCIExpress的***卡,或被配置呈现为存储装置的PCI或PCI Express接口。在一个实施方式中,PCI或PCI Express接口可用于接入该存储装置。
此外,写命令可被发送至能够接收命令的任何类型的设备。例如,在各个实施方式中,该设备可包括主机***、SAS/SATA桥接器(例如,SAS至SATA桥接器等)、USB/SATA桥接器(例如,USB至SATA桥接器等)、FC/SATA桥接器(例如,FC至SATA桥接器等)、PCI或基于PCI Express的***卡(例如,配置呈现为存储装置等)、PCI或PCI Express接口、用于接入至少一个存储装置或***的接口,或能够在同一时间具有多个待执行的命令的任何设备。
除了识别与存储装置关联的写命令外,还确定多个写命令的顺序,所确定的顺序被设备知晓。参见操作104。在一个实施方式中,确定的顺序可以是设备知晓的预定排序。
作为一种选择,可基于写命令被识别的顺序(例如,基于先来先服务的方法等)来确定该顺序。例如,当生成和/或接收命令时,可对这些命令进行排队。作为另一种选择,顺序可包括设备知晓的预定顺序。
当然,顺序可包括设备知晓的任何顺序。在一个实施方式中,控制器可向设备告知该顺序。在这种情况下,存储装置可实时或近实时确定顺序。
此外,按照预定顺序来排序多个写命令。参见操作106。在这种情况下,存储装置可按照预定顺序来排序多个写命令。
通过这种方式,可允许设备预取与多个写命令关联的数据。在这种情况下,在执行关联的写命令之前,可允许设备来预取数据。因为设备知晓写命令的顺序,所以可以完成该过程。
在一个实施方式中,也可识别与存储装置关联的读命令。在这种情况下,可随机或按照预定顺序来排序与存储装置关联的多个读命令。在这两种情况下,读命令可与写命令混合,其中写命令相对于彼此保持其确定的顺序。
示例性实施方式
在结束对具体实施方式的引言之后,接下来是示例性实施方式的集合,包括至少一些被明确列举为“EC”(示例性组合)的实施方式,其提供了根据本文所描述的概念的各种实施方式类型的额外描述;这些实施例并不意欲为互相排斥、详尽的或限制的;且本发明不限于这些示例性实施方式,而是涵盖了所公开的权利要求的范围内的所有可能的修改和变化。
EC 1.一种方法,包括:
识别待发送至设备的、与存储装置关联的多个写命令;
确定所述多个写命令的顺序,所述设备知晓所确定的顺序;以及
按照所确定的顺序排序所述多个写命令。
EC 2.根据EC 1所述的方法,其中,所确定的顺序是所述设备知晓的预定顺序。
EC 3.根据EC 1所述的方法,其中,基于所述多个写命令被识别的顺序来确定所述顺序。
EC 4.根据EC 1所述的方法,还包括:允许所述设备预取与所述多个写命令关联的数据。
EC 5.根据EC 4所述的方法,其中,在执行关联的写命令之前,允许所述设备预取所述数据。
EC 6.根据EC 1所述的方法,其中,基于所述存储装置的模式执行所述识别、确定和排序。
EC 7.根据EC 1所述的方法,其中,所述存储装置按照所确定的顺序排序所述多个写命令。
EC 8.根据EC 1所述的方法,其中,所述设备包括用于主机***的存储器接口适配器。
EC 9.根据EC 1所述的方法,其中,所述设备包括SAS/SATA桥接器。
EC 10.根据EC 1所述的方法,其中,所述设备包括USB/SATA桥接器。
EC 11.根据EC 1所述的方法,其中,所述设备包括FC/SATA桥接器。
EC 12.根据EC 1所述的方法,其中,所述设备包括PCI或基于PCI Express***卡之一。
EC 13.根据EC 1所述的方法,其中,所述设备包括PCI或PCI Express接口之一。
EC 14.根据EC 1所述的方法,其中,所述设备包括用于接入存储装置或***中至少一个的接口。
EC 15.根据EC 1所述的方法,其中,所述设备包括能够在同一时间具有多个待执行命令的设备。
EC 16.根据EC 1所述的方法,还包括:识别与所述存储装置关联的多个读命令。
EC 17.根据EC 16所述的方法,其中,对于与所述存储装置关联的所述多个读命令进行随机排序。
EC 18.根据EC 17所述的方法,其中,随机排序的所述多个读命令与按照所确定的顺序的所述多个写命令混合。
EC 19.根据EC 1所述的方法,其中,所述存储装置包括串行ATA(SATA)驱动器、串行连接SCSI(SAS)驱动器、光纤通道(FC)驱动器或通用串行总线(USB)驱动器之一。
EC 20.根据EC 1所述的方法,其中,所述存储装置包括被配置呈现为存储装置的PCI或基于PCI Express***卡之一。
EC 21.根据EC 1所述的方法,其中,所述存储装置包括被配置呈现为存储装置的PCI或PCI Express接口之一。
EC 22.根据EC 1所述的方法,其中,PCI或PCI Express接口用于接入所述存储装置。
EC 23.一种在计算机可读介质上体现的计算机程序产品,包括:
用于识别待发送至设备的、与存储装置关联的多个写命令的计算机代码;
用于确定所述多个写命令的顺序的计算机代码,所述设备知晓所确定的顺序;以及
用于按照所确定的顺序排序所述多个写命令的计算机代码。
EC 24.一种仪器,包括:
存储装置,用于识别待发送至设备的、与所述存储装置关联的多个写命令,并用于按照确定的顺序排序所述多个写命令,所述设备知晓所确定的顺序。
EC 25.一种方法,包括:
通过能够与驱动器通信的设备来处理写命令,其中所述驱动器与允许以随机顺序执行命令的存储协议兼容,每个写命令具有关联的写数据;
所述设备取得与至少一些所述写命令关联的所述写数据,所述设备将所取得的数据发送至所述驱动器;
按照与所述驱动器执行所述写命令的顺序相同的特定顺序来执行关联的所述写数据的所述取得;以及
其中,所述设备能够针对接下来取得的所述关联写数据充分利用所有可用的写数据存储。
EC 26.根据EC 25所述的方法,其中,所述设备首先经历按照一序列而非按照所述特定顺序的所述写命令。
EC 27.根据EC 25所述的方法,其中,对于所述驱动器,所述设备起到主机总线适配器或桥接器的作用。
EC 28.根据EC 25所述的方法,还包括:
所述设备以特定序列将所述写命令发送至所述驱动器;以及
其中,所述特定顺序由所述特定序列建立并与其相同。
EC 29.根据权利要求EC 25所述的方法,其中,所述存储协议是串行ATA(SATA)兼容的。
EC 30.根据EC 25所述的方法,其中,所述驱动器是固态驱动器(SSD)。
EC 31.根据权利要求EC 25所述的方法,其中,所述驱动器能够以独立于
所述特定顺序的顺序执行非写命令并与所述写命令的执行混合。
EC 32.一种仪器,包括:
用于与驱动器通信的装置,其中所述驱动器与允许以随机顺序执行命令的存储协议兼容;
用于处理写命令的装置,每个写命令具有关联的写数据;
用于取得与至少一些所述写命令关联的所述写数据的装置;
用于将所取得的数据发送至所述驱动器的装置;
用于按照与所述驱动器执行所述写命令的顺序相同的特定顺序来执行所述关联写数据的所述取得的装置;以及
其中,所述设备能够针对接下来取得的所述关联写数据充分利用所有可用的写数据存储。
EC 33.根据EC 32所述的仪器,其中,所述仪器首先经历按照一序列而非按照所述特定顺序的所述写命令。
EC 34.根据EC 32所述的仪器,其中,所述仪器是启动器或桥接器。
EC 35.根据EC 32所述的仪器,还包括:
用于以特定序列将所述写命令发送至所述驱动器的装置;以及
其中,所述特定顺序由所述特定序列建立并与其相同。
EC 36.根据EC 32所述的仪器,其中,所述存储协议是串行ATA(SATA)兼容的。
EC 37.根据EC 32所述的仪器,其中,所述驱动器是固态驱动器(SSD)。
EC 38.根据EC 32所述的仪器,其中,所述驱动器能够以独立于所述特定顺序的顺序执行非写命令并与所述写命令的执行混合。
EC 39.一种有形计算机可读介质,具有存储于其中的指令集,当由计算机执行所述指令集时,使该计算机执行以下功能,包括:
由能够与驱动器通信的设备来处理写命令,其中所述驱动器与
允许以随机顺序执行命令的存储协议兼容,每个写命令具有关联的写数据;
所述设备取得与至少一些所述写命令关联的所述写数据,所述设备将所取得的数据发送至所述驱动器;
按照与所述驱动器执行所述写命令的顺序相同的特定顺序来执行所述关联写数据的所述取得;以及
其中,所述设备能够针对接下来取得的所述关联写数据充分利用所有可用的写数据存储。
EC 40.根据EC 39所述的有形计算机可读介质,其中,所述设备首先经历按照一序列而非按照所述特定顺序的所述写命令。
EC 41.根据EC 39所述的有形计算机可读介质,其中,所述设备是从主机总线适配器和桥接器中所选的一种。
EC 42.根据EC 39所述的有形计算机可读介质,其中,所述处理写命令包括生成所述写命令和接收所述写命令中的至少一种。
EC 43.根据EC 39所述的有形计算机可读介质,其中,所述存储协议是串行ATA(SATA)兼容的。
EC 44.根据EC 39所述的有形计算机可读介质,其中,所述驱动器是固态驱动器(SSD)。
EC 45.根据EC 39所述的有形计算机可读介质,其中,所述驱动器能够以独立于所述特定顺序的顺序执行非写命令并与所述写命令的执行混合。
EC 46.根据EC 39所述的有形计算机可读介质,其中,当由所述计算机执行所述指令集时,使该计算机执行以下进一步功能,包括:
所述设备以特定序列将所述写命令发送至所述驱动器;以及
其中,所述特定顺序由所述特定序列建立并与其相同。
EC 47.一种仪器,包括:
存储器接口,能够与驱动器通信,其中所述驱动器与允许以随机顺序执行命令的存储协议兼容;
队列,能够临时保存写命令,每个写命令具有关联的写数据;
控制逻辑,取得与至少一些所述写命令关联的所述写数据,并将所提取的数据发送至所述驱动器;以及
其中,所述控制逻辑能够按照与所述驱动器执行所述写命令的顺序相同的特定顺序来执行所述关联写数据的所述取得,且还能够针对接下来取得的所述关联写数据充分利用所有可用的写数据存储。
EC 48.根据EC 47所述的仪器,其中,所述仪器首先经历按照一序列而非按照所述特定顺序的所述写命令。
EC 49.根据EC 47所述的仪器,其中,所述驱动器将所述特定顺序通信至所述仪器。
EC 50.根据EC 47所述的仪器,其中,所述仪器和所述驱动器中的每个被预先配置为使用所述特定顺序。
EC 51.根据EC 47所述的仪器,其中,经由选择至少一种操作模式在所述仪器和所述驱动器中的至少一个中确定所述特定顺序。
EC 52.根据EC 47所述的仪器,其中,所述特定顺序是先来先服务。
EC 53.根据EC 47所述的仪器,其中,所述仪器和所述驱动器中至少一个始终使用所述特定顺序。
EC 54.根据EC 47所述的仪器,其中,所述仪器对于所述驱动器起主机总线适配器的作用。
EC 55.根据EC 47所述的仪器,其中,所述仪器对于所述驱动器起桥接器的作用。
EC 56.根据EC 47所述的仪器,其中,所述存储协议是串行ATA(SATA)兼容的。
EC 57.根据EC 47所述的仪器,其中,所述驱动器是固态驱动器(SSD)。
EC 58.根据EC 47所述的仪器,其中,所述驱动器能够以独立于所述特定顺序的顺序执行非写命令并与所述写命令的执行混合。
EC 59.根据EC 47所述的仪器,其中,所述仪器至少生成所述写命令。
EC 60.根据EC 47所述的仪器,其中,所述仪器至少接收所述写命令。
EC 61.根据EC 47所述的仪器,其中,所述控制逻辑还能够以特定序列将所述写命令发送至所述驱动器,且所述特定顺序由所述特定序列建立并与其相同。
EC 62.根据EC 47所述的仪器,其中,以特定序列保存临时保存在所述队列中的所述写命令,所述控制逻辑还能够以所述特定序列将所述写命令发送至所述驱动器,且所述特定顺序由所述特定序列建立并与其相同。
其它特征
现在将阐述关于前述框架可能或可能没有(根据用户需要)被实现为具有各个可选架构和特征的更加说明性的信息。应当注意,阐述下列信息以用于说明之目的,且不应将其解释为以任何方式进行限制。可选地,可在排除所描述的其他特征或在没有排除所描述的其他特征的情况下结合任何下列信息。
图2示出根据一个实施方式、用于排序与存储装置关联的多个写命令的***200。作为一种选择,可将本***200实现为执行图1的方法100。然而,当然可在任何期望环境下实现***200。也应注意,可在本描述中应用上面提到的定义。
如图所述,***200包括存储装置202。还如图所示,一个或多个设备204与存储装置202通信和/或连接。可采用任何类型的总线等来实现该通信和/或连接。
在这种情况下,存储装置202可代表任何数量的存储装置。例如,在各个实施方式中,存储装置202可代表SATA驱动器、SAS驱动器、FC驱动器、USB驱动器、被配置呈现为存储装置的PCI或基于PCI Express的***卡,和/或任何其它存储装置。
此外,一个或多个设备204可包括任何能够接收命令的设备。例如,在各个实施方式中,设备204可包括SAS/SATA桥接器、USB/SATA桥接器、FC/SATA桥接器、PCI或基于PCI Express的***卡、扩展器,以及启动器,和/或任何其它设备。
在操作中,存储装置202可识别待发送至一个或多个设备204的、与存储装置202关联的写命令。然后,存储装置202可确定顺序。在各个实施方式中,可实时或近实时做出该确定,或该确定可为预定顺序。
然后,存储装置202可以预定顺序排序写命令,其中设备204知晓该预定顺序。在一个实施方式中,存储装置202可通过将写命令按该顺序放置在队列中来排序写命令。在另一个实施方式中,存储装置202可通过将次序分配至写命令来排序写命令。
在一个实施方式中,可根据存储装置202的模式来执行识别、确定和排序。例如,模式可表明要执行和/或采用特定排序。在另一个实施方式中,可作为标准功能来执行识别、确定和排序。
在一个实施方式中,也可识别与存储装置202关联的多个读命令。在这种情况下,可随机排序与存储装置202关联的多个读命令。此外,多个随机排序的读命令可与按照确定顺序的多个写命令混合。
通过这种方式,可允许设备204预取与写命令关联的数据。在这种情况下,在执行关联的写命令之前,可允许设备204来预取数据。因为设备204知晓写命令的顺序,所以可以完成该过程。
例如,在一些***中,附至SATA驱动器的设备(例如,主机/桥接器等)可能并不知晓写命令的顺序。因此,驱动器不能预取写数据,除非其具有足够的资源来预取针对所有命令的写数据。然而,由于预取所有命令需要消耗大部分内存,所以预取所有命令的代价很大。
作为一种选择,硬盘驱动器(HDD)可重新排序命令以减少为了取得所有数据而使介质必须旋转的次数。此外,固态驱动器(SSD)可根据内部架构来重新排序命令以优化驱动器。然而,在一些情况下,需要取得写数据的、附至驱动器的主机/桥接器可能是瓶颈。
因此,驱动器可以按照主机和/或桥接器已知的、确定方式来排序命令。在一个实施方式中,可将其实现为先来先服务的方法。因此,主机将知晓写命令的顺序,且可在执行命令之前预取写数据。在各个实施方式中,驱动器可始终执行该排序,或者该排序可基于模式。作为一种选择,可具有一种以上的模式。
此外,可针对在不具有使命令相对于彼此排序的确定技术的协议中针对任何协议或模式来实现该排序。应注意,相对于写命令的顺序,读命令的顺序可以是或可以不是确定的。
例如,可接收很多读命令和写命令。可随机地排序读命令,且可确定地排序写命令。可混合读命令和写命令,其中保持写命令彼此的相对顺序。还应注意,在一个实施方式中,内存控制器(如,SSD控制器等)可将关于写命令的顺序的信息传递到附至驱动器的设备,以允许有效预取。
图3示出根据另一个实施方式、用于排序与存储装置关联的多个写命令的方法300。作为一个选择,可在图1至图2的功能和架构背景下实施本方法300。然而,当然可以在任何期望的环境下执行***300。而且,可在本描述中应用先前提到的定义。
如图所述,确定命令是否被识别。参见操作302。如果命令被识别,则确定命令是否为读命令。参见操作304。
如果命令为读命令,则以随机顺序排队读命令。参见操作306。如果命令不是读命令,则确定命令是否为写命令。参见操作308。
如果命令为写命令,则以接收设备所知晓的顺序排队命令。参见操作310。例如,在一个实施方式中,可按顺序排队写命令,然后可向接收设备告知该顺序。在另一个实施方式中,可以按照接收设备已经知晓的预定顺序排队写命令。
然后,确定是否接收到来自接收设备的预取数据命令。参见操作312。如果接收到预取数据命令,则发送数据。参见操作314。
在一个实施方式中,SATA驱动器可以按照与主机、桥接器或附接设备发送命令的顺序相同的顺序来执行写命令。然后,主机、桥接器或连接的设备可基于知晓写命令将要执行的顺序来预取数据。因此,所有可用的写数据存储可用于下一数据。
通过这种方式,由于在设备针对写数据准备就绪之前,可预取写数据,所以可以大大提高性能。在一个实施方式中,SSD控制器可将关于写命令的顺序的信息传递到所连接的设备,以允许有效预取。
图4示出在其中可实现各个先前实施方式的多种架构和/或功能的示例性***400。如图所示,提供***400,其包括连接至通信总线402的至少一个主处理器401。***400还包括主内存404。控制逻辑(软件)和数据存储在可采用随机存取存储器(RAM)形式的主内存404中。
***400还包括图形处理器406和显示器408(即,计算机显示器)。在一个实施方式中,图形处理器406可包括多个着色模块、光栅模块等。每个前述模块甚至可以位于单个半导体平台上,以形成图形处理单元(GPU)。
在本描述中,单个半导体平台可指单独的基于单式半导体的集成电路或芯片。应注意,术语单个半导体平台也可指多芯片模块,其具有模拟片上操作的提高的连接性,并且比采用常规中央处理单元(CPU)和总线的实现方式做出了实质性提高。当然,根据用户的需要,各个模块也可分开或以半导体平台的多种组合来设置。
***400也可包括二级存储器410。二级存储器410包括(例如)硬盘驱动器和/或移动存储驱动器,代表软盘驱动器、磁带驱动器、光盘驱动器等。移动存储驱动器以众所周知的方式从移动存储器中读取和/或向其写入。
计算机程序或计算机控制逻辑算法可存储于主内存404和/或二级存储器410中。当执行该计算机程序时,使***400能够执行各种功能。内存404、存储器410和/或其它存储器是计算机可读介质的可能实施例。
在一个实施方式中,在主处理器401、图形处理器406、能够具有主处理器401和图形处理器406这两者的至少一部分功能的集成电路(未示出)、芯片集(即,被设计为执行相关功能等而工作并作为单元销售的集成电路组)和/或任何其它关于此的集成电路的背景下,可实现各个先前附图中的架构和/或功能。
再者,在通用计算机***、电路板***、专用于娱乐目的的游戏机***、特定用途***和/或任何其它期望***的背景下,可实现各个先前附图中的架构和/或功能。例如,***400可采取台式计算机、膝上型计算机和/或任何其它类型的逻辑的形式。再者,***400可采取各种其它设备的形式,包括但不限于:个人数字助理(PDA)设备、移动电话设备、电视等。
此外,虽然没有示出,但是为了通信目的,***400也可耦接至网络,例如,电信网,局域网(LAN),无线网,诸如互联网、点对点网络、有线网络等的广域网(WAN)。
虽然上面已经描述了各个实施方式,但是应理解,仅通过示例而非限定的方式示出了这些实施方式。因此,优选的实施方式的广度和范围不应受任何上述示例性实施方式的限制,而是应仅根据以下权利要求及其等同物来限定。结论
仅为了方便准备文本和附图,而在说明书中做出了某些选择,除非有相反的指示,否则该选择本身不应被解释为传达关于所描述的实施方式的结构或操作的附加信息。选择的实施例包括:用于附图编号的指定名称的特定组织或分配和用于识别和参考实施方式的特征和元件的元件标示符(例如插图编号或数字表示的指定名称)的特定组织或分配。
词语“包括”明确地意欲被解释为描述开放式范围的逻辑集合的抽象概念,并不意欲表达物理限制,除非后面明确地跟了词语“在……之内”。
虽然为了描述和理解的清晰之目的,已经很详细地描述了前述实施方式,但是本发明不限于所提供的细节。存在着本发明的很多实施方式。所公开的实施方式是示例性而非无限制性的。
应理解,构成、布置和使用的许多变化可能与说明书一致,且在所公开的专利的权利要求书的范围内。例如,互连和功能单元位宽度、时钟速度和所使用的技术类型可根据每个组件块中的各个实施方式而变化。对互连和逻辑给定的名称仅为示例性,且不应解释为限制所描述的概念。流程图和流程图过程、作用和功能元件的顺序和布置可根据各个实施方式而变化。同样,除非明确地说明了相反的情况,否则指定的值范围、使用的最大值和最小值或其它特定说明(诸如闪存技术类型;和寄存器和缓冲器中的条目或级别的数量)仅指所描述的实施方式中的那些,并被预期跟随实施技术的提高和改变,而不应被解释为限制。
可采用本领域中已知的功能上等同技术来代替那些所描述的技术,从而实施各个部件、子***、操作、功能、例行程序、子例行程序、线内例程、宏命令或其部分。还应理解,根据依靠设计约束和更快处理的技术趋势(便于先前硬件中的功能移到软件)和更高集成密度(便于先前软件中的功能移到硬件)的实施方式的功能,实施方式的很多功能方面可选择地在硬件(即通常描述为电路)或软件(即经由一些程序化的控制器或处理器的方式)中实现。各个实施方式中具体变化包括但不限于:划分的差别、不同形成因素和配置、使用不同的操作***和其它***软件、使用不同的接口标准、网络协议或通信线路,和在根据特定应用的独特工程和商业限制来实施本文所描述的概念时预期的其它变化。
已描述具有细节和环境背景的实施方式,其远超过对于最小程度地实现所描述的实施方式的多个方面所需的细节和背景。本领域的普通技术人员将认识到在不改变剩余元件中基本合作的情况下,一些实施方式省略了所公开的部件或特征。因此,应理解,很多公开的细节无需实现所描述的实施方式的各个方面。在达到剩余元件可与现有技术区别的程度上,省略的部件和特征不限制本文所描述的概念。
所有这样的设计变化对于所描述的实施方式传达的教导是非实质变化。还应理解,本文所描述的实施方式对于其它计算和网络应用具有更广泛的应用性,且不限于所描述的实施方式的特定应用或产业。因此本发明应被解释为包括所公开的专利的权利要求书的范围内涵盖的所有可能的修改和变化。

Claims (62)

1.一种方法,包括:
识别待发送至设备的、与存储装置关联的多个写命令;
确定所述多个写命令的顺序,所述设备知晓所确定的顺序;以及
按照所确定的顺序排序所述多个写命令。
2.根据权利要求1所述的方法,其中,所确定的顺序是所述设备知晓的预定顺序。
3.根据权利要求1所述的方法,其中,基于所述多个写命令被识别的顺序来确定所述顺序。
4.根据权利要求1所述的方法,还包括:允许所述设备预取与所述多个写命令关联的数据。
5.根据权利要求4所述的方法,其中,在执行关联的写命令之前,允许所述设备预取所述数据。
6.根据权利要求1所述的方法,其中,基于所述存储装置的模式执行所述识别、确定和排序。
7.根据权利要求1所述的方法,其中,所述存储装置按照所确定的顺序排序所述多个写命令。
8.根据权利要求1所述的方法,其中,所述设备包括用于主机***的存储器接口适配器。
9.根据权利要求1所述的方法,其中,所述设备包括SAS/SATA桥接器。
10.根据权利要求1所述的方法,其中,所述设备包括USB/SATA桥接器。
11.根据权利要求1所述的方法,其中,所述设备包括FC/SATA桥接器。
12.根据权利要求1所述的方法,其中,所述设备包括基于PCI或PCIExpress的***卡之一。
13.根据权利要求1所述的方法,其中,所述设备包括PCI或PCI Express接口之一。
14.根据权利要求1所述的方法,其中,所述设备包括用于接入至少一个存储装置或***的接口。
15.根据权利要求1所述的方法,其中,所述设备包括能够在同一时间具有多个待执行命令的设备。
16.根据权利要求1所述的方法,还包括:识别与所述存储装置关联的多个读命令。
17.根据权利要求16所述的方法,其中,对于与所述存储装置关联的所述多个读命令进行随机排序。
18.根据权利要求17所述的方法,其中,随机排序的所述多个读命令与按照所确定的顺序的所述多个写命令混合。
19.根据权利要求1所述的方法,其中,所述存储装置包括串行ATA(SATA)驱动器、串行连接SCSI(SAS)驱动器、光纤通道(FC)驱动器或通用串行总线(USB)驱动器之一。
20.根据权利要求1所述的方法,其中,所述存储装置包括被配置呈现为存储装置的基于PCI或PCI Express的***卡之一。
21.根据权利要求1所述的方法,其中,所述存储装置包括被配置呈现为存储装置的PCI或PCI Express接口之一。
22.根据权利要求1所述的方法,其中,PCI或PCI Express接口用于接入所述存储装置。
23.一种在计算机可读介质上体现的计算机程序产品,包括:
用于识别待发送至设备的、与存储装置关联的多个写命令的计算机代码;
用于确定所述多个写命令的顺序的计算机代码,所述设备知晓所确定的顺序;以及
用于按照所确定的顺序排序所述多个写命令的计算机代码。
24.一种仪器,包括:
存储装置,用于识别待发送至设备的、与所述存储装置关联的多个写命令,并用于按照确定的顺序排序所述多个写命令,所述设备知晓所确定的顺序。
25.一种方法,包括:
通过能够与驱动器通信的设备来处理写命令,其中所述驱动器与允许以随机顺序执行命令的存储协议兼容,每个写命令具有关联的写数据;
所述设备取得与至少一些所述写命令关联的所述写数据,所述设备将所取得的数据发送至所述驱动器;
按照与所述驱动器执行所述写命令的顺序相同的特定顺序来执行关联的所述写数据的所述取得;以及
其中,所述设备能够针对接下来取得的关联的所述写数据充分利用所有可用的写数据存储。
26.根据权利要求25所述的方法,其中,所述设备首先遇到按照一序列而非按照所述特定顺序的所述写命令。
27.根据权利要求25所述的方法,其中,对于所述驱动器,所述设备起到主机总线适配器或桥接器的作用。
28.根据权利要求25所述的方法,还包括:
所述设备以特定序列将所述写命令发送至所述驱动器;以及
其中,所述特定顺序由所述特定序列建立并与其相同。
29.根据权利要求25所述的方法,其中,所述存储协议是串行ATA(SATA)兼容的。
30.根据权利要求25所述的方法,其中,所述驱动器是固态驱动器(SSD)。
31.根据权利要求25所述的方法,其中,所述驱动器能够以独立于所述特定顺序的顺序执行非写命令并与所述写命令的执行混合。
32.一种仪器,包括:
用于与驱动器通信的装置,其中所述驱动器与允许以随机顺序执行命令的存储协议兼容;
用于处理写命令的装置,每个写命令具有关联的写数据;
用于取得与至少一些所述写命令关联的所述写数据的装置;
用于将所取得的数据发送至所述驱动器的装置;
用于按照与所述驱动器执行所述写命令的顺序相同的特定顺序来执行所述关联的写数据的所述取得的装置;以及
其中,所述设备能够针对接下来取得的所述关联的写数据充分利用所有可用的写数据存储。
33.根据权利要求32所述的仪器,其中,所述仪器首先遇到按照一序列而非按照所述特定顺序的所述写命令。
34.根据权利要求32所述的仪器,其中,所述仪器是启动器或桥接器。
35.根据权利要求32所述的仪器,还包括:
用于以特定序列将所述写命令发送至所述驱动器的装置;以及
其中,所述特定顺序由所述特定序列建立并与其相同。
36.根据权利要求32所述的仪器,其中,所述存储协议是串行ATA(SATA)兼容的。
37.根据权利要求32所述的仪器,其中,所述驱动器是固态驱动器(SSD)。
38.根据权利要求32所述的仪器,其中,所述驱动器能够以独立于所述特定顺序的顺序执行非写命令并与所述写命令的执行混合。
39.一种有形计算机可读介质,具有存储于其中的指令集,当由计算机执行所述指令集时,使该计算机执行以下功能,包括:
由能够与驱动器通信的设备来处理写命令,其中所述驱动器与允许以随机顺序执行命令的存储协议兼容,每个写命令具有关联的写数据;
所述设备取得与至少一些所述写命令关联的所述写数据,所述设备将所取得的数据发送至所述驱动器;
按照与所述驱动器执行所述写命令的顺序相同的特定顺序来执行所述关联的写数据的所述取得;以及
其中,所述设备能够针对接下来取得的所述关联的写数据充分利用所有可用的写数据存储。
40.根据权利要求39所述的有形计算机可读介质,其中,所述设备首先遇到按照一序列而非按照所述特定顺序的所述写命令。
41.根据权利要求39所述的有形计算机可读介质,其中,所述设备是从主机总线适配器和桥接器中选择的一种。
42.根据权利要求39所述的有形计算机可读介质,其中,所述处理写命令包括生成所述写命令和接收所述写命令中的至少一种。
43.根据权利要求39所述的有形计算机可读介质,其中,所述存储协议是串行ATA(SATA)兼容的。
44.根据权利要求39所述的有形计算机可读介质,其中,所述驱动器是固态驱动器(SSD)。
45.根据权利要求39所述的有形计算机可读介质,其中,所述驱动器能够以独立于所述特定顺序的顺序执行非写命令并与所述写命令的执行混合。
46.根据权利要求39所述的有形计算机可读介质,其中,当由所述计算机执行所存储的所述指令集时,使该计算机进一步执行以下功能,包括:
所述设备以特定序列将所述写命令发送至所述驱动器;以及
其中,所述特定顺序由所述特定序列建立并与其相同。
47.一种仪器,包括:
存储器接口,能够与驱动器通信,其中所述驱动器与允许以随机顺序执行命令的存储协议兼容;
队列,能够临时保存写命令,每个写命令具有关联的写数据;
控制逻辑,取得与至少一些所述写命令关联的所述写数据,并将所取得的数据发送至所述驱动器;以及
其中,所述控制逻辑能够按照与所述驱动器执行所述写命令的顺序相同的特定顺序来执行所述关联的写数据的所述取得,且还能够针对接下来取得的所述关联的写数据充分利用所有可用的写数据存储。
48.根据权利要求47所述的仪器,其中,所述仪器首先遇到按照一序列而非按照所述特定顺序的所述写命令。
49.根据权利要求47所述的仪器,其中,所述驱动器将所述特定顺序通信至所述仪器。
50.根据权利要求47所述的仪器,其中,所述仪器和所述驱动器中的每个被预先配置为使用所述特定顺序。
51.根据权利要求47所述的仪器,其中,经由选择至少一种操作模式在所述仪器和所述驱动器中的至少一个中确定所述特定顺序。
52.根据权利要求47所述的仪器,其中,所述特定顺序是先来先服务。
53.根据权利要求47所述的仪器,其中,所述仪器和所述驱动器中至少一个始终使用所述特定顺序。
54.根据权利要求47所述的仪器,其中,所述仪器对于所述驱动器起主机总线适配器的作用。
55.根据权利要求47所述的仪器,其中,所述仪器对于所述驱动器起桥接器的作用。
56.根据权利要求47所述的仪器,其中,所述存储协议是串行ATA(SATA)兼容的。
57.根据权利要求47所述的仪器,其中,所述驱动器是固态驱动器(SSD)。
58.根据权利要求47所述的仪器,其中,所述驱动器能够以独立于所述特定顺序的顺序执行非写命令并与所述写命令的执行混合。
59.根据权利要求47所述的仪器,其中,所述仪器至少生成所述写命令。
60.根据权利要求47所述的仪器,其中,所述仪器至少接收所述写命令。
61.根据权利要求47所述的仪器,其中,所述控制逻辑还能够以特定序列将所述写命令发送至所述驱动器,且所述特定顺序由所述特定序列建立并与其相同。
62.根据权利要求47所述的仪器,其中,以特定序列保存临时保存在所述队列中的所述写命令,所述控制逻辑还能够以所述特定序列将所述写命令发送至所述驱动器,且所述特定顺序由所述特定序列建立并与其相同。
CN201080030032.6A 2009-07-02 2010-07-02 对与存储装置关联的多个写命令进行排序 Active CN102473087B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/497,327 2009-07-02
US12/497,327 US20110004718A1 (en) 2009-07-02 2009-07-02 System, method, and computer program product for ordering a plurality of write commands associated with a storage device
PCT/US2010/040855 WO2011003050A2 (en) 2009-07-02 2010-07-02 Ordering a plurality of write commands associated with a storage device

Publications (2)

Publication Number Publication Date
CN102473087A true CN102473087A (zh) 2012-05-23
CN102473087B CN102473087B (zh) 2018-08-21

Family

ID=43411771

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080030032.6A Active CN102473087B (zh) 2009-07-02 2010-07-02 对与存储装置关联的多个写命令进行排序

Country Status (6)

Country Link
US (4) US20110004718A1 (zh)
JP (1) JP5957634B2 (zh)
KR (2) KR101718128B1 (zh)
CN (1) CN102473087B (zh)
TW (1) TWI470436B (zh)
WO (1) WO2011003050A2 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106339326A (zh) * 2016-08-26 2017-01-18 记忆科技(深圳)有限公司 一种提升固态硬盘顺序读性能的方法
CN110088725A (zh) * 2017-03-24 2019-08-02 西部数据技术公司 用于对提交队列和完成队列进行处理并做出仲裁的***和方法
CN114995882A (zh) * 2022-07-19 2022-09-02 沐曦集成电路(上海)有限公司 一种异构结构***包处理的方法

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100250830A1 (en) * 2009-03-27 2010-09-30 Ross John Stenfort System, method, and computer program product for hardening data stored on a solid state disk
US8090905B2 (en) * 2009-03-27 2012-01-03 Sandforce, Inc. System, method, and computer program product for converting logical block address de-allocation information in a first format to a second format
US8671258B2 (en) 2009-03-27 2014-03-11 Lsi Corporation Storage system logical block address de-allocation management
US20110004718A1 (en) 2009-07-02 2011-01-06 Ross John Stenfort System, method, and computer program product for ordering a plurality of write commands associated with a storage device
US9792074B2 (en) 2009-07-06 2017-10-17 Seagate Technology Llc System, method, and computer program product for interfacing one or more storage devices with a plurality of bridge chips
JP5920496B2 (ja) 2014-02-18 2016-05-18 住友化学株式会社 積層多孔質フィルムおよび非水電解液二次電池
WO2017131724A1 (en) * 2016-01-29 2017-08-03 Hewlett Packard Enterprise Development Lp Host devices and non-volatile memory subsystem controllers
KR102549545B1 (ko) 2018-03-22 2023-06-29 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
TWI822386B (zh) * 2022-10-11 2023-11-11 慧榮科技股份有限公司 橋接控制晶片與相關的訊號處理方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1052740A (zh) * 1989-12-20 1991-07-03 国际商业机器公司 带有指令标识装置的数据处理***
CN1285064A (zh) * 1997-12-16 2001-02-21 英特尔公司 进行无序多线程执行的加载和存储指令排序***
US20020184476A1 (en) * 2001-03-23 2002-12-05 International Business Machines Corporation Instructions for ordering execution in pipelined processes
CN1516030A (zh) * 2003-01-15 2004-07-28 威盛电子股份有限公司 重排多个数据存取指令的方法与装置
CN1849580A (zh) * 2003-05-14 2006-10-18 索尼计算机娱乐公司 预取命令控制方法、预取命令控制装置以及高速缓冲存储器控制装置

Family Cites Families (100)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03230216A (ja) * 1990-02-06 1991-10-14 Fujitsu Ltd 記憶デバイスへの処理データの書込処理方式
JPH03250499A (ja) * 1990-02-27 1991-11-08 Nec Corp データ記憶回路
US5347648A (en) * 1990-06-29 1994-09-13 Digital Equipment Corporation Ensuring write ordering under writeback cache error conditions
GB2251324B (en) * 1990-12-31 1995-05-10 Intel Corp File structure for a non-volatile semiconductor memory
GB2256735B (en) 1991-06-12 1995-06-21 Intel Corp Non-volatile disk cache
US6230233B1 (en) * 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
JPH06236284A (ja) 1991-10-21 1994-08-23 Intel Corp コンピュータシステム処理状態を保存及び復元する方法及びコンピュータシステム
US5675816A (en) 1992-05-26 1997-10-07 Fujitsu Limited Magnetic disk subsystem with failsafe battery charging and power shut down
US5485595A (en) * 1993-03-26 1996-01-16 Cirrus Logic, Inc. Flash memory mass storage architecture incorporating wear leveling technique without using cam cells
JP3122702B2 (ja) * 1993-10-26 2001-01-09 富士通株式会社 ディスク装置のライトバック制御方法
US5642501A (en) * 1994-07-26 1997-06-24 Novell, Inc. Computer method and apparatus for asynchronous ordered operations
JPH08124393A (ja) * 1994-10-20 1996-05-17 Fujitsu Ltd データ消去回数に制限のあるメモリの制御方法及びこの方法を用いた装置
US5568423A (en) * 1995-04-14 1996-10-22 Unisys Corporation Flash memory wear leveling system providing immediate direct access to microprocessor
US5805809A (en) * 1995-04-26 1998-09-08 Shiva Corporation Installable performance accelerator for maintaining a local cache storing data residing on a server computer
US5621687A (en) * 1995-05-31 1997-04-15 Intel Corporation Programmable erasure and programming time for a flash memory
US6728851B1 (en) 1995-07-31 2004-04-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US5835935A (en) * 1995-09-13 1998-11-10 Lexar Media, Inc. Method of and architecture for controlling system data with automatic wear leveling in a semiconductor non-volatile mass storage memory
US5909591A (en) 1996-06-18 1999-06-01 Lucent Technologies Inc. System and method for identifying individual modules in a modular system
US5956473A (en) * 1996-11-25 1999-09-21 Macronix International Co., Ltd. Method and system for managing a flash memory mass storage system
US5963970A (en) * 1996-12-20 1999-10-05 Intel Corporation Method and apparatus for tracking erase cycles utilizing active and inactive wear bar blocks having first and second count fields
US6000006A (en) * 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
JP3898305B2 (ja) * 1997-10-31 2007-03-28 富士通株式会社 半導体記憶装置、半導体記憶装置の制御装置及び制御方法
US6088701A (en) * 1997-11-14 2000-07-11 3Dfx Interactive, Incorporated Command data transport to a graphics processing device from a CPU performing write reordering operations
JPH11265262A (ja) * 1998-03-18 1999-09-28 Hitachi Ltd 高速ライトキャッシュディスク装置
KR100533140B1 (ko) * 1998-09-04 2005-12-02 하이퍼스톤 아게 제한된 소거빈도의 메모리의 액세스제어방법
FR2787601A1 (fr) * 1998-12-22 2000-06-23 Gemplus Card Int Systeme de memorisation comprenant des moyens de gestion d'une memoire avec anti-usure et procede de gestion anti-usure d'une memoire
JP3745552B2 (ja) * 1999-02-26 2006-02-15 富士通株式会社 情報記憶装置
JP2001014111A (ja) * 1999-06-29 2001-01-19 Hitachi Ltd 回転形記憶装置の制御方法
US20080071973A1 (en) 2000-01-06 2008-03-20 Chow David Q Electronic data flash card with various flash memory cells
US6405295B1 (en) * 1999-09-07 2002-06-11 Oki Electric Industry, Co., Ltd. Data storage apparatus for efficient utilization of limited cycle memory material
JP2001265534A (ja) * 2000-03-17 2001-09-28 Hitachi Ltd アクセス制御方法及びこれを用いたディスク装置
US7239641B1 (en) 2001-04-24 2007-07-03 Brocade Communications Systems, Inc. Quality of service using virtual channel translation
JP2002342038A (ja) * 2001-05-16 2002-11-29 Hitachi Ltd コマンドの実行順序を制御するディスク装置
US6732221B2 (en) * 2001-06-01 2004-05-04 M-Systems Flash Disk Pioneers Ltd Wear leveling of static areas in flash memory
US6948026B2 (en) * 2001-08-24 2005-09-20 Micron Technology, Inc. Erase block management
US20030058681A1 (en) * 2001-09-27 2003-03-27 Intel Corporation Mechanism for efficient wearout counters in destructive readout memory
US7000063B2 (en) * 2001-10-05 2006-02-14 Matrix Semiconductor, Inc. Write-many memory device and method for limiting a number of writes to the write-many memory device
JP3823040B2 (ja) 2001-10-12 2006-09-20 インターナショナル・ビジネス・マシーンズ・コーポレーション データ記憶装置、データ処理装置、書き込み要求の実行順序を最適化する方法、データ処理方法およびハード・ディスク・ドライブ
EP1320035A1 (en) * 2001-12-11 2003-06-18 Thomson Licensing S.A. Storage device cache management
US6745303B2 (en) * 2002-01-03 2004-06-01 Hitachi, Ltd. Data synchronization of multiple remote storage
US20040081179A1 (en) 2002-10-23 2004-04-29 Gregorcyk Arthur J. Method and system for selecting between serial storage buses using data signals of the buses
US6973531B1 (en) * 2002-10-28 2005-12-06 Sandisk Corporation Tracking the most frequently erased blocks in non-volatile memory systems
US7096313B1 (en) * 2002-10-28 2006-08-22 Sandisk Corporation Tracking the least frequently erased blocks in non-volatile memory systems
US6985992B1 (en) * 2002-10-28 2006-01-10 Sandisk Corporation Wear-leveling in non-volatile storage systems
CN100483552C (zh) * 2002-10-28 2009-04-29 桑迪士克股份有限公司 在非易失性存储***中执行自动磨损平衡的方法
US6831865B2 (en) * 2002-10-28 2004-12-14 Sandisk Corporation Maintaining erase counts in non-volatile storage systems
US7035967B2 (en) * 2002-10-28 2006-04-25 Sandisk Corporation Maintaining an average erase count in a non-volatile storage system
US7103732B1 (en) * 2002-10-28 2006-09-05 Sandisk Corporation Method and apparatus for managing an erase count block
US6925523B2 (en) * 2003-03-03 2005-08-02 Agilent Technologies, Inc. Managing monotonically increasing counter values to minimize impact on non-volatile storage
US7076605B1 (en) 2003-04-25 2006-07-11 Network Appliance, Inc. Method and apparatus for writing data to a storage device
US7107415B2 (en) * 2003-06-20 2006-09-12 Micron Technology, Inc. Posted write buffers and methods of posting write requests in memory modules
US7032087B1 (en) * 2003-10-28 2006-04-18 Sandisk Corporation Erase count differential table within a non-volatile memory system
US7386579B2 (en) 2003-11-12 2008-06-10 Siemens Product Life Cycle Management Software Inc. System, method, and computer program product for storing test results in a database
JP2005215729A (ja) 2004-01-27 2005-08-11 Hitachi Global Storage Technologies Netherlands Bv データ伝送制御方法及び記憶装置
US20060004935A1 (en) 2004-06-30 2006-01-05 Pak-Lung Seto Multi-protocol bridge
US8607016B2 (en) 2004-07-21 2013-12-10 Sandisk Technologies Inc. FAT analysis for optimized sequential cluster management
US7526604B1 (en) * 2004-08-09 2009-04-28 Nvidia Corporation Command queueing speculative write prefetch
US7403130B2 (en) 2004-08-20 2008-07-22 Cooper Technologies Company Removing an automatic circuit recloser from service prior to battery failure
JP2006139548A (ja) * 2004-11-12 2006-06-01 Hitachi Global Storage Technologies Netherlands Bv メディア・ドライブ及びそのコマンド実行方法
JP2006172032A (ja) * 2004-12-15 2006-06-29 Hitachi Global Storage Technologies Netherlands Bv データ記憶装置及びそのバッファ制御方法
US7469312B2 (en) * 2005-02-24 2008-12-23 International Business Machines Corporation Computer system bus bridge
JP5030387B2 (ja) * 2005-03-08 2012-09-19 エイチジーエスティーネザーランドビーブイ データ記憶装置
US7333279B2 (en) * 2005-03-22 2008-02-19 Seagate Technology Llc System and method for drive-side guarantee of quality of service and for extending the lifetime of storage devices
JP4679943B2 (ja) 2005-03-23 2011-05-11 ヒタチグローバルストレージテクノロジーズネザーランドビーブイ データ記憶装置及びその不揮発性メモリ内データ書き換え処理方法
US7711897B1 (en) 2005-06-10 2010-05-04 American Megatrends, Inc. Method, system, apparatus, and computer-readable medium for improving disk array performance
US7409489B2 (en) 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
US7694026B2 (en) 2006-03-31 2010-04-06 Intel Corporation Methods and arrangements to handle non-queued commands for data storage devices
JP4439491B2 (ja) * 2006-05-24 2010-03-24 株式会社ソニー・コンピュータエンタテインメント マルチグラフィックスプロセッサシステム、グラフィックスプロセッサおよびデータ転送方法
US7826349B2 (en) 2006-05-30 2010-11-02 Intel Corporation Connection management mechanism
US7558913B2 (en) * 2006-06-20 2009-07-07 Microsoft Corporation Atomic commit of cache transfer with staging area
US7814245B2 (en) 2006-10-05 2010-10-12 Lsi Corporation Apparatus and methods for improved SATA device interaction without a SAS expander
US7761642B2 (en) * 2006-12-22 2010-07-20 Lsi Corporation Serial advanced technology attachment (SATA) and serial attached small computer system interface (SCSI) (SAS) bridging
US7661006B2 (en) 2007-01-09 2010-02-09 International Business Machines Corporation Method and apparatus for self-healing symmetric multi-processor system interconnects
US20080201522A1 (en) * 2007-02-16 2008-08-21 Mediatek Inc. Buffer management method and optical disc drive
US20080229045A1 (en) 2007-03-16 2008-09-18 Lsi Logic Corporation Storage system provisioning architecture
US7653775B2 (en) 2007-04-09 2010-01-26 Lsi Logic Corporation Enhancing performance of SATA disk drives in SAS domains
US7996599B2 (en) * 2007-04-25 2011-08-09 Apple Inc. Command resequencing in memory operations
JP4400650B2 (ja) 2007-05-23 2010-01-20 セイコーエプソン株式会社 データ転送制御装置及び電子機器
US20080294813A1 (en) 2007-05-24 2008-11-27 Sergey Anatolievich Gorobets Managing Housekeeping Operations in Flash Memory
US8006047B2 (en) * 2007-06-27 2011-08-23 Hitachi Global Storage Technologies Netherlands B.V. Storage device with write barrier sensitive write commands and write barrier insensitive commands
TWI373772B (en) 2007-10-04 2012-10-01 Phison Electronics Corp Wear leveling method and controller using the same
EP2203828A1 (en) * 2007-10-18 2010-07-07 Nxp B.V. Data processing system with a plurality of processors, cache circuits and a shared memory
TWI384488B (zh) * 2007-12-24 2013-02-01 Skymedi Corp Nonvolatile storage device and its data writing method
WO2009097444A1 (en) * 2008-01-30 2009-08-06 Sandbridge Technologies, Inc. Method for enabling multi-processor synchronization
US7827320B1 (en) 2008-03-28 2010-11-02 Western Digital Technologies, Inc. Serial ATA device implementing intra-command processing by detecting XRDY primitive while in the XRDY state
US20100017650A1 (en) 2008-07-19 2010-01-21 Nanostar Corporation, U.S.A Non-volatile memory data storage system with reliability management
US8856448B2 (en) * 2009-02-19 2014-10-07 Qualcomm Incorporated Methods and apparatus for low intrusion snoop invalidation
US20100250830A1 (en) 2009-03-27 2010-09-30 Ross John Stenfort System, method, and computer program product for hardening data stored on a solid state disk
US8090905B2 (en) 2009-03-27 2012-01-03 Sandforce, Inc. System, method, and computer program product for converting logical block address de-allocation information in a first format to a second format
US8230159B2 (en) 2009-03-27 2012-07-24 Lsi Corporation System, method, and computer program product for sending logical block address de-allocation status information
US8671258B2 (en) 2009-03-27 2014-03-11 Lsi Corporation Storage system logical block address de-allocation management
KR101695364B1 (ko) 2009-03-27 2017-01-11 엘에스아이 코포레이션 저장 시스템 로컬 블록 어드레스 할당해제 관리 및 데이터 강화
US20110004718A1 (en) * 2009-07-02 2011-01-06 Ross John Stenfort System, method, and computer program product for ordering a plurality of write commands associated with a storage device
US8291131B2 (en) 2009-07-06 2012-10-16 Micron Technology, Inc. Data transfer management
US9792074B2 (en) 2009-07-06 2017-10-17 Seagate Technology Llc System, method, and computer program product for interfacing one or more storage devices with a plurality of bridge chips
US8140712B2 (en) 2009-07-17 2012-03-20 Sandforce, Inc. System, method, and computer program product for inserting a gap in information sent from a drive to a host device
US8516166B2 (en) 2009-07-20 2013-08-20 Lsi Corporation System, method, and computer program product for reducing a rate of data transfer to at least a portion of memory
US20110022765A1 (en) 2009-07-23 2011-01-27 Ross John Stenfort System, method, and computer program product for maintaining a direct connection between an initiator and a drive
US20110041039A1 (en) 2009-08-11 2011-02-17 Eliyahou Harari Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device
US8108737B2 (en) 2009-10-05 2012-01-31 Sandforce, Inc. System, method, and computer program product for sending failure information from a serial ATA (SATA) solid state drive (SSD) to a host device

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1052740A (zh) * 1989-12-20 1991-07-03 国际商业机器公司 带有指令标识装置的数据处理***
CN1285064A (zh) * 1997-12-16 2001-02-21 英特尔公司 进行无序多线程执行的加载和存储指令排序***
US20020184476A1 (en) * 2001-03-23 2002-12-05 International Business Machines Corporation Instructions for ordering execution in pipelined processes
CN1516030A (zh) * 2003-01-15 2004-07-28 威盛电子股份有限公司 重排多个数据存取指令的方法与装置
CN1849580A (zh) * 2003-05-14 2006-10-18 索尼计算机娱乐公司 预取命令控制方法、预取命令控制装置以及高速缓冲存储器控制装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106339326A (zh) * 2016-08-26 2017-01-18 记忆科技(深圳)有限公司 一种提升固态硬盘顺序读性能的方法
CN110088725A (zh) * 2017-03-24 2019-08-02 西部数据技术公司 用于对提交队列和完成队列进行处理并做出仲裁的***和方法
CN110088725B (zh) * 2017-03-24 2022-08-26 西部数据技术公司 用于对提交队列和完成队列进行处理并做出仲裁的***和方法
CN114995882A (zh) * 2022-07-19 2022-09-02 沐曦集成电路(上海)有限公司 一种异构结构***包处理的方法
CN114995882B (zh) * 2022-07-19 2022-11-04 沐曦集成电路(上海)有限公司 一种异构结构***包处理的方法

Also Published As

Publication number Publication date
WO2011003050A3 (en) 2011-04-07
WO2011003050A2 (en) 2011-01-06
US20120102287A1 (en) 2012-04-26
JP2012532397A (ja) 2012-12-13
US20150106546A1 (en) 2015-04-16
US10019200B2 (en) 2018-07-10
TW201115352A (en) 2011-05-01
US20170123734A1 (en) 2017-05-04
US20110004718A1 (en) 2011-01-06
KR101712504B1 (ko) 2017-03-06
KR101718128B1 (ko) 2017-03-20
US9582195B2 (en) 2017-02-28
US8930606B2 (en) 2015-01-06
TWI470436B (zh) 2015-01-21
JP5957634B2 (ja) 2016-08-10
CN102473087B (zh) 2018-08-21
KR20120103555A (ko) 2012-09-19
KR20160054628A (ko) 2016-05-16

Similar Documents

Publication Publication Date Title
CN102473087A (zh) 对与存储装置关联的多个写命令进行排序
US9021178B2 (en) High performance path for command processing
US6880024B2 (en) Control system for memory storage device having two different interfaces
CN106776358B (zh) Dimm ssd寻址性能技术
US9170755B2 (en) Command and data selection in storage controller systems
CN109766294B (zh) 存储器控制器和包括其的储存设备
KR102532084B1 (ko) 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
US9164703B2 (en) Solid state drive interface controller and method selectively activating and deactivating interfaces and allocating storage capacity to the interfaces
CN105528299B (zh) 读取命令排程方法以及使用该方法的装置
KR20210006129A (ko) 컨트롤러 및 컨트롤러의 동작방법
CN110175107B (zh) 一种fpga云服务器性能的测试方法及测试***
CN107797821A (zh) 重试读取方法以及使用该方法的装置
KR20150093004A (ko) 불휘발성 저장 장치의 동작 방법 및 불휘발성 저장 장치를 액세스하는 컴퓨팅 장치의 동작 방법
KR20210098717A (ko) 컨트롤러, 컨트롤러의 동작 방법 및 이를 포함하는 저장 장치
KR20190102438A (ko) 전자 장치 및 그것의 동작 방법
Khalifa et al. Implementation and verification of a generic universal memory controller based on UVM
US20120191924A1 (en) Preparation of memory device for access using memory access type indicator signal
CN112988058A (zh) 与主机设备接合的存储设备及存储设备的操作方法
CN106649137B (zh) 一种Nand Flash坏块管理方法、装置及存储器
KR20210025836A (ko) 메모리 컨트롤러, 이를 포함하는 저장 장치 및 메모리 컨트롤러의 동작 방법
CN109684258A (zh) 一种信号处理装置及方法
KR102645786B1 (ko) 컨트롤러, 메모리 시스템 및 그것의 동작 방법
US8225028B2 (en) Memory devices and methods for programming flash memory utilizing spare blocks
US20080209157A1 (en) Memory partitioning method
US7979606B2 (en) Method for storing data

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1167491

Country of ref document: HK

ASS Succession or assignment of patent right

Owner name: INFINEON TECHNOLOGIES CORP.

Free format text: FORMER OWNER: SANDFORCE INC.

Effective date: 20140429

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20140429

Address after: California, USA

Applicant after: LSI Corp.

Address before: California, USA

Applicant before: Sandforce Inc.

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20160226

Address after: California, USA

Applicant after: Seagate Technology LLC

Address before: California, USA

Applicant before: LSI Corp.

GR01 Patent grant
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: WD

Ref document number: 1167491

Country of ref document: HK