CN102171649B - 用于用单个命令对多个不连续地址范围的传送进行排队的方法和系统 - Google Patents

用于用单个命令对多个不连续地址范围的传送进行排队的方法和系统 Download PDF

Info

Publication number
CN102171649B
CN102171649B CN200980139230.3A CN200980139230A CN102171649B CN 102171649 B CN102171649 B CN 102171649B CN 200980139230 A CN200980139230 A CN 200980139230A CN 102171649 B CN102171649 B CN 102171649B
Authority
CN
China
Prior art keywords
command
list
host controller
controller interface
address realm
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.)
Expired - Fee Related
Application number
CN200980139230.3A
Other languages
English (en)
Other versions
CN102171649A (zh
Inventor
R·罗耶
A·赫夫曼
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN102171649A publication Critical patent/CN102171649A/zh
Application granted granted Critical
Publication of CN102171649B publication Critical patent/CN102171649B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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
    • 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/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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode

Abstract

公开了用于在单个命令内对多个不连续地址范围的传送进行排队的方法和系统。系统的实施例包括系统处理器、用于存储数据和可执行软件的存储器,和用于接收存储在系统存储器中的传送命令的存储设备。主机控制器接口驱动器由一个或更多个系统处理器执行,并且从存储设备传送请求中收集多个不连续地址范围,对每一个不连续范围将起始地址和要传送的数据的数量记录在已标记命令列表中。将已标记命令列表中的地址范围的数量和已标记传送的操作码记录在一命令中,并且将所述命令和所述已标记命令列表存储在该存储设备的命令表中。将存储器中命令表的基地址和已标记命令列表的偏移量记录在存储在命令队列的命令头中。

Description

用于用单个命令对多个不连续地址范围的传送进行排队的方法和系统
技术领域
本公开总体上涉及访问硬盘和/或非易失性存储器的领域。具体地说,本公开涉及在单个命令内对多个非连续地址范围的传送进行排队。
背景技术
在现代计算系统中可以采用各种存储设备来存储和访问软件和/或数据。通常这些存储设备可以包括诸如硬盘驱动器(HDD)的磁存储设备、诸如光盘(CD)的光存储盘、和闪速存储器固态驱动器(SSD)。
在HDD中,信息被存储在高速旋转的磁盘上,并且由多个读/写磁头从盘片读取以及向盘片写入信息。微控制器控制磁头相对于盘片的运动,微控制器与外部接口进行通信并与磁盘高速缓存缓冲器一起工作。数据可以被存储在盘片的不同部分,并且当工作负载为随机或接近随机时,可能花费大量时间将磁头移动到盘片上的所需位置。重新排序写请求和读取先行(look-ahead read)能够明显提高HDD系统中的性能。
逻辑区块寻址(LBA)通常用于指定在存储设备中数据区块的位置。LBA可以是指地址或是指区块(例如,索引),其中第一区块为LBA=0、第二区块为LBA=1等等。LBA方案替代了诸如磁柱-磁头-扇区(CHS)方案这样的早期寻址方案,该方案向操作系统软件暴露了存储设备的物理细节。逻辑区块通常可以是512字节或1024字节(ISO 9660 CD使用2048字节的区块)。需要区块级I/O的系统调用将LBA定义传递给存储设备驱动器。对于一些简单的情况,逻辑区块大小可以与能够从存储设备中读取或向存储设备写入的最小物理扇区的大小相同。
在SSD中,基于NAND(或NOR)逻辑的闪速存储器将数据存储在微控制器管理的一些芯片中。SSD具有更快的读取时间(即,仅仅要找到和读取一个或多个所需单元),但是具有相对较慢的写入时间(即,在一个或多个单元中写入新数据之前必须从其中擦除现有数据)。因为不必担心旋转的磁盘或读/写磁头,所以其访问等待时间比HDD的访问等待时间要短。
为了通过重新排序数据传送请求来实现更高的性能,已经引入诸如原生命令排队(Native Command Queuing,NCQ)的排队技术(例如,在串行ATA(Advanced Technology Attachment,高级技术附件)HDD中使用)来允许对读和写命令执行顺序进行优化。用于SSD的排队的一个优点在于,多个命令能够被传送到设备从而使得在设备完成一组命令时不会被阻塞。还存在得益于让尽可能多的数据进行传送的大规模并行的实现。
主机控制器接口(例如,用于串行ATA(SATA)设备的高级主机控制器接口(AHCI),或用于闪速存储器存储设备的非易失性存储器主机控制器接口(NVMHCI))是一种硬件装置,其允许软件通过系统存储器结构与设备(例如主机总线适配器)进行通信,以便利用诸如NCQ这样的技术。
许多现代操作系统,例如MicrosoftWindowsBerkeley SoftwareDistribution(BSD,有时被称为Berkeley Unix)和Linux为诸如AHCI这样的主机控制器接口提供支持,但是这种接口可能仅仅支持命令队列中有限数量的(即,32个)未执行(in-flight)命令,并且对于每个完成的请求可能产生系统中断。通常,许多请求或命令能够容易地被一起满足和完成,并且随着设备性能的提高,它们能够具有处理更多命令的能力。另一方面,SCSI协议可以允许对多达264个命令进行排队,但是支持这种长队列的实现可能花费昂贵,并且协议开销会明显大于AHCI中的协议开销。
迄今为止,还没有完全研究出用于为较大数量的存储设备传送请求进行服务的更有效的方法、结构和系统。
附图说明
本发明以示例的方式说明并且不受限于附图的图示。
图1示出了用于用单个命令请求多个不连续地址范围的存储设备传送的系统的一个实施例。
图2示出了用于用单个命令请求多个不连续地址范围的存储设备传送处理的一个实施例的流程图。
图3示出了用于用单个命令请求多个不连续地址范围的存储设备传送处理的一个可替代的实施例的流程图。
图4a示出了用于说明存储设备传送的地址范围的数据结构的一个实施例。
图4b示出了包括不连续地址范围的已标记传送命令和已标记命令列表的命令表数据结构的一个实施例。
图4c示出了用于说明存储设备已标记传送命令的数据结构的一个实施例。
图4d示出了用于说明存储设备已标记传送命令的数据结构的一个可替代的实施例。
图4e示出了用于说明存储设备命令头的数据结构的一个实施例,该存储设备命令头包括存储器中的命令表的基地址和不连续的地址范围的已标记命令列表的偏移量。
图4f示出了用于说明包括多个命令头的存储设备命令队列的数据结构的一个实施例。
图4g示出了用于说明存储设备已标记传送命令的数据结构的一个可替代的实施例。
具体实施方式
以下公开用于在单个命令内对多个不连续地址范围的传送进行排队的方法和系统。在一些实施例中,该系统可以包括:一个或更多个系统处理器、用以存储数据和可执行软件的系统存储器,和用以接收存储在系统存储器中的传送命令的存储设备。在一些实施例中,当存储在系统存储器中的主机控制器接口驱动器(例如用于串行ATA(高级技术附件)设备的高级主机控制器接口(AHCI),或用于NAND闪速存储器存储设备的非易失性存储器主机控制器接口(NVMHCI))由一个或更多个系统处理器执行时,可以从存储设备传送请求中收集多个不连续的地址范围,并针对每个不连续的地址范围将起始地址和要传送的数据的数量记录在已标记命令列表中。还可以将在已标记的命令列表中的不连续的地址范围的数目的计数和在已标记传送的操作码记录在一命令中,并且将该命令和已标记的命令列表存储到存储设备的系统存储器中的命令表中。可以将命令表的存储器基地址和已标记命令列表的偏移量(offset)记录在命令头中,其被按照特定的主机控制器接口存储在命令队列中。在一些替代实施例中,以主机-设备寄存器FIS(帧信息结构),可以将已标记传送命令按照物理传送机制(例如,与在诸如,ATAPI(ATA分组接口)命令和/或SATA NCQ命令这样的SATA命令中一样)传递给存储设备。已标记传送命令可以指示存储了多个不连续地址范围的已标记命令列表的可用性,存储设备可以要求其作为数据FIS(即,一个数据分组或多个数据分组)。
由此,用单个命令对多个不连续地址范围的传送进行排队可以提供更有效和成本节省的方法、结构和系统,以服务更大数量的存储设备传送请求。
在以下的描述中,阐述了很多具体细节。然而,应该理解的是,可以在没有这些具体细节的情况下实践本发明的实施例。在其它情况下,没有详细地示出公知的电路、结构和技术以免模糊对本说明书的理解。可以按照如下教导来实现本发明的这些以及其它实施例,并且显然,在不脱离本发明的更广的精神和范围的情况下,可以在下列教导中做出各种修改和改变。因此,本说明书和附图应被视为是举例说明,而不是限制性的意义,并且应仅仅按照权利要求及其等价物来衡量本发明。
图1示出了用单个命令请求多个不连续地址范围的存储设备传送的系统101的一个实施例。系统101包括多个系统处理器:中央处理器111、存储器控制处理器112、I/O控制处理器113、图形处理器114,也可以包括DMA(直接存储器存取)处理器。此外系统101包括一些存储设备,诸如SSD 120、磁盘驱动器121、PCI(外设部件互连)和/或PCI-E(PCI Express)设备122和/或闪速存储器存储设备126。系统101还包括用以存储数据和可执行软件的系统存储器115、以及音频I/O 123、通用串行总线I/O 124、局域网I/O 125、BIOS 117、键盘接口118和鼠标接口119。诸如SSD 120、磁盘驱动器121、PCI设备122和/或闪速存储器存储设备126这样的存储设备可以与系统存储器115耦合来接收存储在系统存储器115中的传送命令,以响应于存储设备传送请求而向各个地址范围传送数据以及从各个地址范围传送数据。
系统存储器115还存储处理器可执行的主机控制器接口驱动器116。在系统101的一些实施例中,驱动器116可以包括用于SATA设备(例如在SSD 120或磁盘驱动器121中)的AHCI驱动器,和/或用于NAND闪速存储器存储设备(例如闪速存储器存储设备126)的NVMHCI。当由一个或更多个系统处理器执行时,驱动器116可以使得一个或更多个系统处理器从对应的存储设备传送请求收集多个不连续的地址范围,并将每个不连续地址范围的起始地址和要传送的数据的数量记录在已标记命令列表中。执行驱动器116的系统处理器还可以在命令中记录已标记传送操作码,并且在已标记命令列表中记录不连续地址范围的数目,该命令和该已标记命令列表都被存储在特定存储设备的系统存储器115中的命令表中。系统存储器115中的命令表的基地址和已标记命令列表的偏移量可以被记录在该存储设备的命令队列中存储的多个命令头中的一个命令头中。
可以理解的是,可以根据本文描述的处理过程来使用系统101,以对每个已标记传送命令请求存储设备传送已标记命令列表中的多个不连续地址范围。
图2示出了用单个命令请求多个不连续地址范围的存储设备传送的处理过程201的一个实施例的流程图。处理过程201以及本文公开的其它处理过程由处理框执行,该处理模块可以包括专用硬件或软件或固件操作码,他们包含在机器可读介质中并可由通用机器或由专用机器或由两者的组合来执行。
在处理框211中,从对应的存储设备传送请求中识别多个不连续地址范围的列表。在处理框213中,通过主机控制器接口发送单个命令以请求存储设备传送多个不连续地址范围的列表。处理过程201的一些实施例提供了已标记传送命令,以用于以主机-设备寄存器FIS按照物理传送机制(例如,与在诸如ATAPI命令和/或SATA NCQ命令这样的SATA命令中一样)与存储设备进行通信。已标记传送命令可以指示存储了多个不连续地址范围的已标记命令列表的可用性。然后,存储设备可以请求或DMA已标记命令列表作为数据FIS(即,一个或多个数据分组)。接下来,在处理框215中,处理过程201等待所请求的数据传送完成,并且当完成时,处理就进行到处理框217。在处理框217中,对应于请求存储设备传送多个不连续地址范围的列表的单个命令的完成,接收单个中断。然后,在处理框219中服务单个中断。
图3示出了用单个命令请求多个不连续地址范围的存储设备传送的处理过程301的一个替代实施例的流程图。在处理框311中,从相应的存储设备传送请求中识别多个不连续地址范围的列表。在处理框312中,对于已识别的不连续地址范围的列表中的每一个不连续地址范围,在已标记命令列表中记录起始地址和要传送的数据的数量。在处理框313中,在已标记命令列表中的不连续地址范围的数目的计数以及已标记传送操作码都被记录在单个命令中,该命令与已标记命令列表一起被存储在存储器中的命令表中。在处理框314中,在存储器中的命令表的基地址和已标记命令列表的偏移量可以被记录在存储在命令队列中的命令头中。
在处理框315中,处理301等待请求的传送完成,并且在完成后处理就进行到处理框317。在处理框317中,对应于请求存储设备传送多个不连续地址范围的列表的单个命令的完成,接收单个中断。接着在处理框319中,服务单个中断。
可以理解的是,请求存储设备按照特定主机控制器接口进行传送的另外的细节可以在该特定主机控制器接口的对应的已公布规范中找到(例如,从英特尔公司的网站上可获得的“Serial ATA Advanced Host Controller Interface(AHCI)1.3”或“Serial ATA International Organization:Serial ATA Revision 2.6”或“Non-Volatile Memory Host Controller Interface(NVMHCI)1.0”)。
图4a示出了包括用于指定的32位字段的序列和用于存储设备传送的地址范围401的数据结构的一个实施例。地址范围401包括LBA或起始扇区地址411a和411b,和要传送的数据扇区的数量412。如处理框312所描述的,地址范围401可以被记录在已标记命令列表中。可以理解的是,这种已标记命令列表可以表示一种散布/集中列表。典型的散布/集中列表可以用于从物理地址到虚拟地址或从虚拟地址到物理地址,已标记命令列表将多个读或多个写与散布的逻辑地址映射组合为一条命令,诸如如下所述的命令403、404或408。
图4b示出了命令表数据结构402的一个实施例,该命令表数据结构402包括适当长度(例如达到32或64字节)的已标记传送命令421,并且还包括不连续地址范围(例如类似于地址范围401)的已标记命令列表423。可以理解的是,命令表数据结构402也可以包括其它数据部分和/或表,比如,如由主机控制器接口所定义的物理区域描述符(PRD)表422、元数据、PRD索引等。按照处理框313,命令表数据结构402可以被存储在存储器(例如系统存储器115)中。
图4c示出了包括用于指定存储设备已标记传送命令403的32位字段的序列的数据结构的一个实施例,其包括已标记命令列表中的不连续地址范围的数目的计数432和已标记传送操作码431。按照处理框313,已标记传送命令403可以存储在命令表(例如命令表数据结构402)中。可以理解的是,各种已标记传送操作码431可以用于读取或写入,并且如由主机控制器接口(例如AHCI和/或NVMHCI)或由总线接口(例如SATA)所规定的,命令403也可以包括存储地址数据、参数、属性等的其它字段。
图4d示出了包括用于规定存储设备已标记传送命令404的32位字段的序列的数据结构的一个可替代的实施例,其包括已标记命令列表中不连续地址范围的数目的计数442和已标记传送操作码441。在命令404的实施例中,已标记命令列表中不连续地址范围的数目的计数442可以替换现有主机控制器接口的先前规定的字段(例如,扇区的总数)。
图4e示出了用于规定存储设备命令头450的数据结构405的一个实施例,该存储设备命令头450包括32位字段的序列,这些字段包括存储器(例如系统存储器115)中的命令表(例如命令表数据结构402)的基地址451a和451b以及不连续地址范围(例如地址范围401)的已标记命令列表(例如已标记命令列表423)的偏移量452。按照处理框314,命令头450可以被存储在存储器中。
图4f示出了用于规定存储设备命令队列406的数据结构407的一个实施例,该存储设备命令队列406包括多个命令头460-463(例如命令头450),其标识相应的命令表470-473(例如命令表数据结构402)并且可以被按照处理框314进行存储。通过端口寄存器465可以为存储设备标识命令队列406在存储器(例如系统存储器115)中的基地址。也可以通过端口寄存器466标识存储器中的另外的基地址。
图4g示出了包括用于规定存储设备已标记传送命令408的分组的8位寄存器的序列的数据结构的一个替代实施例,其包括已标记命令列表中不连续地址范围的数目的计数482和已标记传送操作码481。在命令408的一些实施例中,针对DMA可以指定已标记命令列表地址/偏移量483a-c或483a-f(例如,根据已定义的PRD或命令表),来替代现有总线接口(例如像SATA ATAPI和/或SATA NCQ)的线性区块地址(LBA)。
以上描述意在说明本发明的优选实施例。根据上面的讨论,另外显而易见的是,特别是在这种发展很快并且不容易预见进一步改进的技术领域中,在所附权利要求及其等价物的范围内,本领域技术人员可以在不脱离本发明原理的情况下修改本发明的结构和细节。

Claims (14)

1.一种用于对与单个命令相关联的多个传送进行排队的方法,所述方法包括:
通过主机控制器接口向存储设备发送单个命令,所述单个命令用于请求所述存储设备传送多个不连续地址范围,其中,将记录在已标记命令列表中的所述多个不连续地址范围的数目的计数和已标记传送操作码记录在所述单个命令中,所述单个命令和所述已标记命令列表被存储在存储器中的命令表中,并且将所述存储器中的所述命令表的基地址和所述已标记命令列表的偏移量记录在命令头中,所述命令头是存储在命令队列中的多个命令头中之一;以及
在所述多个不连续地址范围的传送结束时接收单个中断。
2.如权利要求1所述的方法,其中所述主机控制器接口是串行ATA(高技术配置)总线接口。
3.如权利要求1所述的方法,其中所述主机控制器接口是高级主机控制器接口(AHCI)。
4.如权利要求3所述的方法,其中所述主机控制器接口用于串行ATA(高技术配置)存储设备。
5.如权利要求1所述的方法,其中所述主机控制器接口是非易失性存储器主机控制器接口(NVMHCI)。
6.如权利要求1所述的方法,还包括:
为所述多个不连续地址范围中的每一个不连续地址范围,在所述已标记命令列表中记录起始地址和要传送的数据的数量。
7.如权利要求6所述的方法,其中所述主机控制器接口是串行ATA(高技术配置)接口并且所述方法还包括:
至少根据记录的基地址,所述已标记命令列表的所述偏移量,并且根据所记录的不连续地址范围的数目的计数,为所述串行ATA总线接口生成命令分组。
8.如权利要求6所述的方法,其中所述命令队列用于高级主机控制器接口(AHCI)。
9.如权利要求6所述的方法,其中所述命令队列用于非易失性存储器主机控制器接口(NVMHCI)。
10.一种用于请求传送存储设备中的多个不连续地址范围的装置,该装置包括:
用于为所述多个不连续地址范围中的每一个不连续地址范围,在已标记命令列表中记录起始地址和要传送的数据的数量的模块;
用于将记录在所述已标记命令列表中的不连续地址范围的数目的计数和已标记传送操作码记录在一单个命令中的模块,其中,所述单个命令是通过主机控制器接口向所述存储设备发送的,所述命令和所述已标记命令列表被存储在存储器中的命令表中;以及
用于将存储器中的所述命令表的基地址和所述已标记命令列表的偏移量记录在一命令头中的模块,所述命令头是存储在命令队列中的多个命令头中之一。
11.如权利要求10所述的装置,还包括:
用于至少根据记录的基地址,所述已标记命令列表的所述偏移量,并且根据所记录的不连续地址范围的数目的计数,为串行ATA总线接口生成命令分组的模块。
12.如权利要求10所述的装置,其中所述主机控制器接口用于高级主机控制器接口(AHCI)。
13.如权利要求10所述的装置,其中所述主机控制器接口用于非易失性存储器主机控制器接口(NVMHCI)。
14.如权利要求10所述的装置,其中所述主机控制器接口用于串行ATA(高技术配置)存储设备。
CN200980139230.3A 2008-12-22 2009-12-07 用于用单个命令对多个不连续地址范围的传送进行排队的方法和系统 Expired - Fee Related CN102171649B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/342,065 US9128699B2 (en) 2008-12-22 2008-12-22 Method and system for queuing transfers of multiple non-contiguous address ranges with a single command
US12/342,065 2008-12-22
PCT/US2009/067031 WO2010074944A2 (en) 2008-12-22 2009-12-07 Method and system for queuing transfers of multiple non-contiguous address ranges with a single command

Publications (2)

Publication Number Publication Date
CN102171649A CN102171649A (zh) 2011-08-31
CN102171649B true CN102171649B (zh) 2015-04-08

Family

ID=42267799

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980139230.3A Expired - Fee Related CN102171649B (zh) 2008-12-22 2009-12-07 用于用单个命令对多个不连续地址范围的传送进行排队的方法和系统

Country Status (6)

Country Link
US (1) US9128699B2 (zh)
EP (1) EP2361404B1 (zh)
JP (1) JP2012508428A (zh)
KR (1) KR101245011B1 (zh)
CN (1) CN102171649B (zh)
WO (1) WO2010074944A2 (zh)

Families Citing this family (113)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8533384B2 (en) 2007-12-27 2013-09-10 Sandisk Enterprise Ip Llc Flash memory controller garbage collection operations performed independently in multiple flash memory groups
US9128699B2 (en) 2008-12-22 2015-09-08 Intel Corporation Method and system for queuing transfers of multiple non-contiguous address ranges with a single command
US8725977B2 (en) * 2010-02-17 2014-05-13 Seagate Technology Llc NVMHCI attached hybrid data storage
TWI465905B (zh) 2010-09-22 2014-12-21 Toshiba Kk 記憶體系統、主機控制器、及直接記憶體存取之控制方法
US8924627B2 (en) 2011-03-28 2014-12-30 Western Digital Technologies, Inc. Flash memory device comprising host interface for processing a multi-command descriptor block in order to exploit concurrency
US8910020B2 (en) 2011-06-19 2014-12-09 Sandisk Enterprise Ip Llc Intelligent bit recovery for flash memory
US8909982B2 (en) 2011-06-19 2014-12-09 Sandisk Enterprise Ip Llc System and method for detecting copyback programming problems
CN102243617B (zh) * 2011-07-08 2014-01-01 福建星网锐捷网络有限公司 读/写处理方法、设备及系统
US9134909B2 (en) 2011-08-30 2015-09-15 International Business Machines Corporation Multiple I/O request processing in a storage system
US8984182B2 (en) 2011-10-06 2015-03-17 Marvell International Ltd. SCSI I/O command aggregation
US8918554B2 (en) * 2011-10-06 2014-12-23 Marvell International Ltd. Method and apparatus for effectively increasing a command queue length for accessing storage
US8793543B2 (en) 2011-11-07 2014-07-29 Sandisk Enterprise Ip Llc Adaptive read comparison signal generation for memory systems
US8954822B2 (en) 2011-11-18 2015-02-10 Sandisk Enterprise Ip Llc Data encoder and decoder using memory-specific parity-check matrix
US8924815B2 (en) 2011-11-18 2014-12-30 Sandisk Enterprise Ip Llc Systems, methods and devices for decoding codewords having multiple parity segments
US9048876B2 (en) 2011-11-18 2015-06-02 Sandisk Enterprise Ip Llc Systems, methods and devices for multi-tiered error correction
US8713204B2 (en) 2011-12-27 2014-04-29 Apple Inc. High-performance AHCI interface
US20130173842A1 (en) * 2011-12-28 2013-07-04 King Ying Ng Adaptive Logical Group Sorting to Prevent Drive Fragmentation
US8990477B2 (en) * 2012-04-19 2015-03-24 Sandisk Technologies Inc. System and method for limiting fragmentation
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
US9032184B2 (en) * 2012-09-14 2015-05-12 HGST Netherlands B.V. Implementing drive list mode for reads and writes for hard disk drives
US10049061B2 (en) * 2012-11-12 2018-08-14 International Business Machines Corporation Active memory device gather, scatter, and filter
KR101988287B1 (ko) * 2012-11-26 2019-06-12 삼성전자주식회사 저장 장치 및 그것을 포함하는 컴퓨팅 시스템, 및 그것의 데이터 전송 방법
KR101993187B1 (ko) 2012-11-26 2019-06-27 삼성전자주식회사 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법
CN103403667A (zh) * 2012-12-19 2013-11-20 华为技术有限公司 数据处理方法和设备
US9501398B2 (en) 2012-12-26 2016-11-22 Sandisk Technologies Llc Persistent storage device with NVRAM for staging writes
US9612948B2 (en) 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
US9239751B1 (en) 2012-12-27 2016-01-19 Sandisk Enterprise Ip Llc Compressing data from multiple reads for error control management in memory systems
US9003264B1 (en) 2012-12-31 2015-04-07 Sandisk Enterprise Ip Llc Systems, methods, and devices for multi-dimensional flash RAID data protection
US9454420B1 (en) 2012-12-31 2016-09-27 Sandisk Technologies Llc Method and system of reading threshold voltage equalization
US9971710B2 (en) 2013-02-07 2018-05-15 Microsoft Technology Licensing, Llc Optimizing data transfers between heterogeneous memory arenas
US9214965B2 (en) 2013-02-20 2015-12-15 Sandisk Enterprise Ip Llc Method and system for improving data integrity in non-volatile storage
US9329928B2 (en) 2013-02-20 2016-05-03 Sandisk Enterprise IP LLC. Bandwidth optimization in a non-volatile memory system
US9128634B1 (en) 2013-03-11 2015-09-08 Marvell International Ltd. Systems and methods of packed command management for non-volatile storage devices
US20140281147A1 (en) * 2013-03-13 2014-09-18 Kabushiki Kaisha Toshiba Memory system
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
US9367246B2 (en) 2013-03-15 2016-06-14 Sandisk Technologies Inc. Performance optimization of data transfer for soft information generation
US9009576B1 (en) 2013-03-15 2015-04-14 Sandisk Enterprise Ip Llc Adaptive LLR based on syndrome weight
US9136877B1 (en) 2013-03-15 2015-09-15 Sandisk Enterprise Ip Llc Syndrome layered decoding for LDPC codes
US9092350B1 (en) 2013-03-15 2015-07-28 Sandisk Enterprise Ip Llc Detection and handling of unbalanced errors in interleaved codewords
US9236886B1 (en) 2013-03-15 2016-01-12 Sandisk Enterprise Ip Llc Universal and reconfigurable QC-LDPC encoder
US9244763B1 (en) 2013-03-15 2016-01-26 Sandisk Enterprise Ip Llc System and method for updating a reading threshold voltage based on symbol transition information
TWI506430B (zh) * 2013-03-20 2015-11-01 Phison Electronics Corp 映射資訊記錄方法、記憶體控制器與記憶體儲存裝置
US10049037B2 (en) 2013-04-05 2018-08-14 Sandisk Enterprise Ip Llc Data management in a storage system
US9170941B2 (en) 2013-04-05 2015-10-27 Sandisk Enterprises IP LLC Data hardening in a storage system
US9159437B2 (en) 2013-06-11 2015-10-13 Sandisk Enterprise IP LLC. Device and method for resolving an LM flag issue
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
US9043517B1 (en) 2013-07-25 2015-05-26 Sandisk Enterprise Ip Llc Multipass programming in buffers implemented in non-volatile data storage systems
US9384126B1 (en) 2013-07-25 2016-07-05 Sandisk Technologies Inc. Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems
CN104346285B (zh) * 2013-08-06 2018-05-11 华为技术有限公司 内存访问处理方法、装置及系统
US9235509B1 (en) 2013-08-26 2016-01-12 Sandisk Enterprise Ip Llc Write amplification reduction by delaying read access to data written during garbage collection
US9639463B1 (en) 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
US9442670B2 (en) 2013-09-03 2016-09-13 Sandisk Technologies Llc Method and system for rebalancing data stored in flash memory devices
US9519577B2 (en) 2013-09-03 2016-12-13 Sandisk Technologies Llc Method and system for migrating data between flash memory devices
US9141563B2 (en) 2013-09-11 2015-09-22 Kabushiki Kaisha Toshiba Memory system
US9513869B2 (en) 2013-09-18 2016-12-06 HGST Netherlands B.V. Doorbell-less endpoint-initiated protocol for storage devices
US9778859B2 (en) 2013-09-18 2017-10-03 Western Digital Technologies, Inc. Doorless protocol having multiple queue read requests in flight
US9535870B2 (en) 2013-09-18 2017-01-03 HGST Netherlands B.V. Acknowledgement-less protocol for solid state drive interface
US9158349B2 (en) 2013-10-04 2015-10-13 Sandisk Enterprise Ip Llc System and method for heat dissipation
US9298608B2 (en) 2013-10-18 2016-03-29 Sandisk Enterprise Ip Llc Biasing for wear leveling in storage systems
US9442662B2 (en) 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups
US9436831B2 (en) 2013-10-30 2016-09-06 Sandisk Technologies Llc Secure erase in a memory device
US9263156B2 (en) 2013-11-07 2016-02-16 Sandisk Enterprise Ip Llc System and method for adjusting trip points within a storage device
US10977201B1 (en) * 2013-11-13 2021-04-13 Avago Technologies International Sales Pte. Limited Per IO direct memory access redirection
US9244785B2 (en) 2013-11-13 2016-01-26 Sandisk Enterprise Ip Llc Simulated power failure and data hardening
US9152555B2 (en) 2013-11-15 2015-10-06 Sandisk Enterprise IP LLC. Data management with modular erase in a data storage system
US9703816B2 (en) 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
US9520197B2 (en) 2013-11-22 2016-12-13 Sandisk Technologies Llc Adaptive erase of a storage device
US9520162B2 (en) 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
US9235245B2 (en) 2013-12-04 2016-01-12 Sandisk Enterprise Ip Llc Startup performance and power isolation
US9129665B2 (en) 2013-12-17 2015-09-08 Sandisk Enterprise Ip Llc Dynamic brownout adjustment in a storage device
US9549457B2 (en) 2014-02-12 2017-01-17 Sandisk Technologies Llc System and method for redirecting airflow across an electronic assembly
US9497889B2 (en) 2014-02-27 2016-11-15 Sandisk Technologies Llc Heat dissipation for substrate assemblies
US9703636B2 (en) 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
US9485851B2 (en) 2014-03-14 2016-11-01 Sandisk Technologies Llc Thermal tube assembly structures
US9519319B2 (en) 2014-03-14 2016-12-13 Sandisk Technologies Llc Self-supporting thermal tube structure for electronic assemblies
US9348377B2 (en) 2014-03-14 2016-05-24 Sandisk Enterprise Ip Llc Thermal isolation techniques
US9448876B2 (en) 2014-03-19 2016-09-20 Sandisk Technologies Llc Fault detection and prediction in storage devices
US9454448B2 (en) 2014-03-19 2016-09-27 Sandisk Technologies Llc Fault testing in storage devices
US9390814B2 (en) 2014-03-19 2016-07-12 Sandisk Technologies Llc Fault detection and prediction for data storage elements
US9390021B2 (en) 2014-03-31 2016-07-12 Sandisk Technologies Llc Efficient cache utilization in a tiered data structure
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
US9384830B2 (en) 2014-05-06 2016-07-05 Micron Technology, Inc. Apparatuses and methods for performing multiple memory operations
CN103942162B (zh) * 2014-05-14 2020-06-09 清华大学 在存储器中进行多访问的方法、装置和存储系统
US10656840B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Real-time I/O pattern recognition to enhance performance and endurance of a storage device
US9070481B1 (en) 2014-05-30 2015-06-30 Sandisk Technologies Inc. Internal current measurement for age measurements
US9703491B2 (en) 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US10162748B2 (en) 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
US9645749B2 (en) 2014-05-30 2017-05-09 Sandisk Technologies Llc Method and system for recharacterizing the storage density of a memory device or a portion thereof
US10114557B2 (en) 2014-05-30 2018-10-30 Sandisk Technologies Llc Identification of hot regions to enhance performance and endurance of a non-volatile storage device
US10146448B2 (en) 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
US10372613B2 (en) 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US10656842B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device
US8891303B1 (en) 2014-05-30 2014-11-18 Sandisk Technologies Inc. Method and system for dynamic word line based configuration of a three-dimensional memory device
US9093160B1 (en) 2014-05-30 2015-07-28 Sandisk Technologies Inc. Methods and systems for staggered memory operations
US9881680B2 (en) 2014-06-03 2018-01-30 Qualcomm Incorporated Multi-host power controller (MHPC) of a flash-memory-based storage device
US9632953B2 (en) * 2014-06-03 2017-04-25 Qualcomm Incorporated Providing input/output virtualization (IOV) by mapping transfer requests to shared transfer requests lists by IOV host controllers
US9690720B2 (en) 2014-06-03 2017-06-27 Qualcomm Incorporated Providing command trapping using a request filter circuit in an input/output virtualization (IOV) host controller (HC) (IOV-HC) of a flash-memory-based storage device
US9720860B2 (en) 2014-06-06 2017-08-01 Toshiba Corporation System and method for efficient processing of queued read commands in a memory system
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
US9443601B2 (en) 2014-09-08 2016-09-13 Sandisk Technologies Llc Holdup capacitor energy harvesting
US9952805B2 (en) 2014-09-11 2018-04-24 Hitachi, Ltd. Storage system and data write method using a logical volume to either store data successfully onto a first memory or send a failure response to a server computer if the storage attempt fails
CN104731839B (zh) * 2014-10-08 2018-04-27 记忆科技(深圳)有限公司 一种ssd的前端数据管理加速的方法及一种ssd设备
CN105426322B (zh) * 2015-12-31 2019-05-28 华为技术有限公司 一种数据的预取方法及装置
DE112018000247T5 (de) * 2017-03-24 2019-09-12 Western Digital Technologies, Inc. System und verfahren zur lokalitätserkennung zum identifizieren von lese- oderschreibströmen in einer speichervorrichtung
TWI636363B (zh) * 2017-08-08 2018-09-21 慧榮科技股份有限公司 用來於一記憶裝置中進行動態資源管理之方法以及記憶裝置及其控制器
US10761775B2 (en) * 2018-02-09 2020-09-01 Samsung Electronics Co., Ltd. System and method for NVMe inter command association in SSD storage using a bridge device
CN111736779B (zh) * 2018-04-25 2022-01-11 上海忆芯实业有限公司 Nvm接口命令的优化执行方法与装置
US11726704B2 (en) 2020-03-31 2023-08-15 Kioxia Corporation Buffer optimization for solid-state drives
CN113064550A (zh) * 2021-03-19 2021-07-02 珠海市一微半导体有限公司 一种缩短外部存储器访问时间的控制装置及控制方法
US11934303B2 (en) * 2022-05-12 2024-03-19 Micron Technology, Inc. Atomic write operations

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6029226A (en) * 1996-09-30 2000-02-22 Lsi Logic Corporation Method and apparatus having automated write data transfer with optional skip by processing two write commands as a single write command

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5911135B2 (ja) 1979-01-17 1984-03-13 株式会社日立製作所 デ−タ処理システムのデ−タ転送方式
JP3132056B2 (ja) 1991-07-17 2001-02-05 いすゞ自動車株式会社 導電性砥粒及び電解砥石の製造方法
JPH10296636A (ja) 1997-04-30 1998-11-10 Mitsubishi Materials Corp メタルボンド砥石
JPH10310840A (ja) 1997-05-12 1998-11-24 Sumitomo Electric Ind Ltd 超硬質複合部材とその製造方法
JPH11338644A (ja) 1998-05-22 1999-12-10 Hitachi Ltd ディスク制御装置及び記憶装置
JP4330200B2 (ja) 1999-02-24 2009-09-16 住友電気工業株式会社 ナビゲーション装置
JP2001154811A (ja) 1999-11-30 2001-06-08 Toshiba Corp 計算機システム
JP2001209500A (ja) * 2000-01-28 2001-08-03 Fujitsu Ltd ディスク装置およびディスク装置のリード・ライト処理方法
US6826650B1 (en) 2000-08-22 2004-11-30 Qlogic Corporation Disk controller configured to perform out of order execution of write operations
US6973484B1 (en) * 2000-12-29 2005-12-06 3Pardata, Inc. Method of communicating data in an interconnect system
JP2002269560A (ja) 2001-03-06 2002-09-20 Seiko Epson Corp テンプレートマッチング方法、それを実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体、テンプレートマッチング装置、位置決め装置および実装装置
US6901461B2 (en) * 2002-12-31 2005-05-31 Intel Corporation Hardware assisted ATA command queuing
US7512722B2 (en) * 2003-07-31 2009-03-31 International Business Machines Corporation Method for completing a plurality of chained list DMA commands that include a fenced list DMA command element
US7328304B2 (en) * 2004-02-27 2008-02-05 Intel Corporation Interface for a block addressable mass storage system
US7105430B2 (en) * 2004-03-26 2006-09-12 Freescale Semiconductor, Inc. Method for forming a semiconductor device having a notched control electrode and structure thereof
US7698473B2 (en) 2005-01-05 2010-04-13 Sony Computer Entertainment Inc. Methods and apparatus for list transfers using DMA transfers in a multi-processor system
JP4993061B2 (ja) 2005-03-16 2012-08-08 ヤマハ発動機株式会社 最適化装置、最適化方法および最適化プログラム
US7568056B2 (en) 2005-03-28 2009-07-28 Nvidia Corporation Host bus adapter that interfaces with host computer bus to multiple types of storage devices
JP2006338371A (ja) 2005-06-02 2006-12-14 Toshiba Corp メモリシステム
US7376782B2 (en) * 2005-06-29 2008-05-20 Intel Corporation Index/data register pair for indirect register access
US7805543B2 (en) * 2005-06-30 2010-09-28 Intel Corporation Hardware oriented host-side native command queuing tag management
CN100373362C (zh) * 2005-12-22 2008-03-05 北京中星微电子有限公司 直接存储访问控制器
US8275942B2 (en) * 2005-12-22 2012-09-25 Intel Corporation Performance prioritization in multi-threaded processors
JP2008033721A (ja) * 2006-07-31 2008-02-14 Matsushita Electric Ind Co Ltd Dma転送制御装置
JP2008117195A (ja) 2006-11-06 2008-05-22 Hitachi Ltd 半導体記憶装置
JP2008140142A (ja) 2006-12-01 2008-06-19 Fuji Xerox Co Ltd 情報処理システム
US20090150894A1 (en) * 2007-12-10 2009-06-11 Ming Huang Nonvolatile memory (NVM) based solid-state disk (SSD) system for scaling and quality of service (QoS) by parallelizing command execution
US9128699B2 (en) 2008-12-22 2015-09-08 Intel Corporation Method and system for queuing transfers of multiple non-contiguous address ranges with a single command

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6029226A (en) * 1996-09-30 2000-02-22 Lsi Logic Corporation Method and apparatus having automated write data transfer with optional skip by processing two write commands as a single write command

Also Published As

Publication number Publication date
KR101245011B1 (ko) 2013-03-19
JP2012508428A (ja) 2012-04-05
US9128699B2 (en) 2015-09-08
US20100161936A1 (en) 2010-06-24
WO2010074944A3 (en) 2010-09-16
EP2361404B1 (en) 2018-05-16
EP2361404A4 (en) 2012-05-30
KR20110053261A (ko) 2011-05-19
CN102171649A (zh) 2011-08-31
EP2361404A2 (en) 2011-08-31
WO2010074944A2 (en) 2010-07-01

Similar Documents

Publication Publication Date Title
CN102171649B (zh) 用于用单个命令对多个不连续地址范围的传送进行排队的方法和系统
JP7089830B2 (ja) 不揮発性メモリデータの書き込み管理のための装置、システム、及び、方法
EP3274806B1 (en) Sequential write stream management
JP5128079B2 (ja) ユニバーサルストレージバスアダプタ
EP2849076B1 (en) Dma transmission method and system
US9304938B2 (en) Storage device and data transferring method thereof
JP4917174B2 (ja) 制御装置と通信するように構成されたホスト・コンピュータ・システムにおける入出力(i/o)操作用の入出力処理を容易にするためのコンピュータ・プログラム、装置、および方法
US8924659B2 (en) Performance improvement in flash memory accesses
KR101663066B1 (ko) 하이브리드 디바이스에서의 고체 상태 메모리 커맨드 큐
JP6102032B2 (ja) ストレージにアクセスするためのコマンドキュー長を効率的に増やす方法及び装置
US20120221809A1 (en) Storage apparatus and data processing method of the same
US7376786B2 (en) Command stack management in a disk drive
KR102366512B1 (ko) 논리 블록 어드레싱 범위 충돌 크롤러
EP3182267A1 (en) Method and device for isolating disk regions
US20060277326A1 (en) Data transfer system and method
WO2022067686A1 (zh) 一种应用于固态硬盘ssd的数据读取方法及相关装置
US8667188B2 (en) Communication between a computer and a data storage device
JP6200100B2 (ja) 計算機システム
EP4033346B1 (en) Affinity-based cache operation for a persistent storage device
KR20110017234A (ko) 플래시 저장장치와 일체로 형성되는 광 디스크 장치, 및 제어방법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150408

Termination date: 20181207