CN105453062A - Implementing hardware auto device operations initiator - Google Patents
Implementing hardware auto device operations initiator Download PDFInfo
- Publication number
- CN105453062A CN105453062A CN201480044467.4A CN201480044467A CN105453062A CN 105453062 A CN105453062 A CN 105453062A CN 201480044467 A CN201480044467 A CN 201480044467A CN 105453062 A CN105453062 A CN 105453062A
- Authority
- CN
- China
- Prior art keywords
- hardware
- order
- hardware engine
- host
- inline
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0683—Plurality of storage devices
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)
- Debugging And Monitoring (AREA)
- Hardware Redundancy (AREA)
- Stored Programmes (AREA)
Abstract
Description
技术领域technical field
本发明一般而言涉及数据处理领域,并且更具体而言涉及用于实现硬件自动设备操作启动器的方法和控制器以及主题控制器电路驻留在其上的设计结构。The present invention relates generally to the field of data processing, and more particularly to methods and controllers for implementing hardware automatic device operation enablers and design structures on which the subject controller circuitry resides.
背景技术Background technique
存储适配器被用来将主机计算机系统连接到诸如硬盘驱动器、固态驱动器、带驱动器、紧凑盘驱动器等的外围存储I/O设备。目前各种高速系统互连被用来将主机计算机系统连接到存储适配器并将存储适配器连接到存储I/O设备,各种高速系统互连诸如外围部件互连快速(PCIe)、串行连接SCSI(SAS)、光纤通道和无限带宽(InfiniBand)。Storage adapters are used to connect a host computer system to peripheral storage I/O devices such as hard disk drives, solid state drives, tape drives, compact disk drives, and the like. Various high-speed system interconnects such as Peripheral Component Interconnect Express (PCIe), Serial Attached SCSI (SAS), Fiber Channel, and InfiniBand (InfiniBand).
多年来,硬盘驱动器(HDD)或旋转驱动器已是用于需要在线存取的计算机数据的持久存储的占主导地位的存储I/O设备。近来,固态驱动器(SSD)已经变得更受欢迎,因为SSD通常能够比HDD执行更多的每秒I/O数(IOPS),即便SSD的最大数据速率并不总是比HDD高。For many years, hard disk drives (HDDs) or spinning drives have been the dominant storage I/O device for persistent storage of computer data that requires online access. Recently, solid-state drives (SSDs) have become more popular because SSDs are generally capable of performing more I/Os per second (IOPS) than HDDs, even though SSDs do not always have a higher maximum data rate than HDDs.
随着更快和更高性能的固态设备(SSD)的出现,对于存储子系统的性能要求已经增加超过一个数量级。这对于命令吞吐量或者小操作尤其是如此。出现越来越多利用由SSD提供的极低的延时和极高的命令吞吐量的应用,并且在许多情况下存储子系统可能成为瓶颈。With the advent of faster and higher performance solid-state devices (SSDs), the performance requirements for storage subsystems have increased by more than an order of magnitude. This is especially true for command throughput or small operations. An increasing number of applications are emerging that take advantage of the extremely low latency and extremely high command throughput offered by SSDs, and in many cases the storage subsystem can become a bottleneck.
在传统的存储子系统或RAID控制器中,请求从主机进入,并且在许多情况下,这种请求的取出被硬件自动化。固件询问该请求并且确定要采取的动作进程。这个过程常常涉及开始异步硬件操作的序列中的第一个操作。当第一个操作完成后,固件重新评估该操作并且确定下一个动作进程。这一直进行到完成所请求的主机操作并且向主机发送响应。In a traditional storage subsystem or RAID controller, requests come in from the host, and in many cases the fetching of such requests is automated by hardware. The firmware interrogates the request and determines the course of action to take. This process often involves the first operation in a sequence of beginning asynchronous hardware operations. When the first operation is complete, the firmware re-evaluates the operation and determines the next course of action. This continues until the requested host operation is completed and a response is sent to the host.
在更近来的高性能存储子系统中,这些异步硬件操作中的许多操作可以被链式连接到一起,从而允许固件设置所有的硬件操作、开始该序列并且只处理以下的完成:整个链的成功完成或沿途某处的错误。In more recent high-performance memory subsystems, many of these asynchronous hardware operations can be chained together, allowing firmware to setup all hardware operations, start the sequence, and only handle completion of the entire chain on success Completion or an error somewhere along the way.
但是,传统的实现方式和甚至更近来的高性能的实现方式都仍然达不到对于存储子系统的增长的性能需求。甚至高性能设计也要求固件决定操作的进程至少两次,在链的开端处和链的完成时,并且仍然要求固件询问主机请求并建立硬件控制块来执行该操作。通常来说,仅唤醒固件就可能消耗高达30%的控制器处理器时间。However, both traditional implementations and even more recent high-performance implementations still fall short of the increasing performance demands placed on storage subsystems. Even high-performance designs require that the firmware decide the course of the operation at least twice, at the beginning of the chain and at the completion of the chain, and still require the firmware to query the host for requests and establish hardware control blocks to perform the operation. Typically, up to 30% of a controller's processor time can be consumed just waking up firmware.
存在对用于实现硬件自动设备操作启动器的有效方法和控制器的需求。A need exists for an efficient method and controller for implementing a hardware automatic device operation enabler.
如在下面的描述和权利要求书中所使用的,术语“控制器”和“控制器电路”应当被广义地理解为包括输入/输出(IO)适配器(IOA)并且包括连接主机计算机系统的各种布置和外围存储I/O设备的IORAID适配器,其中外围存储I/O设备包括硬盘驱动器、固态驱动器、带驱动器、紧凑盘驱动器等。As used in the following description and claims, the terms "controller" and "controller circuitry" should be construed broadly to include input/output (IO) adapters (IOAs) and to include various components connected to a host computer system. An IORAID adapter for arranging and peripheral storage I/O devices including hard disk drives, solid state drives, tape drives, compact disk drives, and the like.
发明内容Contents of the invention
本发明的主要方面是提供用于实现硬件自动设备操作启动器的方法和控制器以及主题控制器电路驻留在其上的设计结构。本发明的其它重要方面是提供基本上无不利效果并且克服现有技术布置的许多缺点的这类方法、控制器和设计结构。The main aspect of the present invention is to provide a method and controller for implementing a hardware automatic device operation enabler and a design structure on which the subject controller circuit resides. Other important aspects of the present invention are to provide such methods, controllers and designs which are substantially free of adverse effects and which overcome many of the disadvantages of prior art arrangements.
简而言之,提供了用于实现硬件自动设备操作启动器的方法和控制器以及主题控制器电路驻留在其上的设计结构。控制器包括内联硬件引擎,该内联硬件引擎接收主机命令并且评估所接收到的命令以用于在不涉及固件的情况下开始。内联硬件引擎建立执行所接收到的命令的硬件命令块的一个或多个链,并且开始执行用于所接收到的命令的该一个或多个链。In brief, a method and controller for implementing a hardware automatic device operation enabler and a design structure on which the subject controller circuitry resides are provided. The controller includes an inline hardware engine that receives host commands and evaluates the received commands for initiation without involving firmware. The inline hardware engine builds one or more chains of hardware command blocks that execute the received command and begins execution of the one or more chains for the received command.
根据本发明的特征,硬件和固件之间的交互次数被减少至固件对于一次主机操作仅被涉及一次,从而通过存储子系统提供比常规布置显著更好的性能。According to a feature of the invention, the number of interactions between hardware and firmware is reduced to the point that firmware is only involved once for a host operation, thereby providing significantly better performance by the storage subsystem than conventional arrangements.
根据本发明的特征,内联硬件引擎包括用于每个逻辑主机资源的寄存器,该寄存器允许自动执行的命令对该主机资源被启用和禁用。在用于主机资源的配置不允许自动执行的操作的情况下,启用设置允许固件按照该资源禁用或部分禁用自动执行功能,该资源诸如正在高速缓存或者在进行错误处理的、需要逻辑块地址(LBA)翻译的资源。According to a feature of the invention, the inline hardware engine includes a register for each logical host resource that allows automatically executed commands to be enabled and disabled for that host resource. In cases where the configuration for a host resource does not allow autoexecution, the enable setting allows firmware to disable or partially disable autoexecute functionality per resource, such as a resource that is caching or is doing error handling, that requires a logical block address ( LBA) translated resources.
根据本发明的特征,内联硬件引擎包括用于每个逻辑主机资源的寄存器,该寄存器将每个主机资源直接链接到物理设备并且向该物理设备提供引擎路由信息。所生成的设备操作被指向在这些寄存器内描述的物理设备。According to a feature of the invention, the inline hardware engine includes a register for each logical host resource that links each host resource directly to the physical device and provides engine routing information to the physical device. Generated device operations are directed to the physical device described within these registers.
根据本发明的特征,内联硬件引擎检查进入的命令,以确保它们满足自动执行的操作的条件,该条件诸如没有排序要求的简单的读或写等。According to a feature of the invention, the inline hardware engine checks incoming commands to ensure that they meet the conditions of an automatically performed operation, such as a simple read or write with no ordering requirements.
根据本发明的特征,错误和事件处理代码捕捉这些自动执行的操作的完成。这种代码处理成功的完成并且简单地启动向主机发送好的响应。According to a feature of the invention, the error and event handling code captures the completion of these automatically performed operations. This code handles successful completion and simply initiates sending a good response to the host.
附图说明Description of drawings
本发明连同以上及其它的目标和优点可以从以下对附图中示出的本发明的优选实施例的详细描述中得到最好的理解,其中:The present invention, together with the above and other objects and advantages, can be best understood from the following detailed description of preferred embodiments of the invention illustrated in the accompanying drawings, in which:
图1是示出根据优选实施例、用于实现硬件自动设备操作启动器的示例性系统的示意框图;FIG. 1 is a schematic block diagram illustrating an exemplary system for implementing a hardware automatic device operation initiator according to a preferred embodiment;
图2示出了根据优选实施例、用于实现硬件自动设备操作启动器的示例硬件操作;Figure 2 illustrates example hardware operations for implementing a hardware automatic device operation enabler, according to a preferred embodiment;
图3示出了根据优选实施例、由硬件自动设备操作启动器实现的示例自动创建的链;Figure 3 illustrates an example automatically created chain implemented by a hardware automatic device operation enabler, according to a preferred embodiment;
图4示出了根据优选实施例实现的硬件命令块的示例串的示例错误路径;Figure 4 shows an example error path for an example string of hardware command blocks implemented in accordance with a preferred embodiment;
图5A和5B示出了根据优选实施例的直接索引错误的处理的示例;Figures 5A and 5B illustrate an example of the handling of direct index errors according to a preferred embodiment;
图6A和6B示出了根据优选实施例的固件(FW)事件和控制的示例;Figures 6A and 6B illustrate examples of firmware (FW) events and controls according to a preferred embodiment;
图7A和7B示出了根据优选实施例的固件(FW)事件和控制的更多示例;7A and 7B show further examples of firmware (FW) events and controls according to a preferred embodiment;
图8示出了根据优选实施例、由硬件自动设备操作启动器实现的示例正常流程;Figure 8 illustrates an example normal flow implemented by a hardware automatic device operation enabler in accordance with a preferred embodiment;
图9示出了根据优选实施例、用于由硬件自动设备操作启动器实现的启用和禁用事件队列操作的示例;及Figure 9 shows an example for enabling and disabling event queue operations implemented by a hardware automatic device operation enabler in accordance with a preferred embodiment; and
图10是在半导体设计、制造和/或测试中使用的设计过程的流程图。10 is a flowchart of a design process used in semiconductor design, manufacturing and/or testing.
具体实施方式detailed description
在以下对本发明的实施例的详细描述中,对附图进行参考,该附图示出了本发明可以通过其来被实践的示例实施例。应当理解,在不背离本发明的范围的情况下,可以使用其它实施例并且可以进行结构的改变。In the following detailed description of embodiments of the invention, reference is made to the accompanying drawings, which illustrate example embodiments by which the invention may be practiced. It is to be understood that other embodiments may be utilized and structural changes may be made without departing from the scope of the present invention.
本文所使用的术语仅仅是为了描述特定的实施例,而非旨在作为本发明的限制。如本文所使用的,除非上下文明确地另外指出,否则单数形式“一”、“一个”和“该”旨在也包括复数形式。还将理解到,当在本说明书使用时,术语“包括”指定所述特征、整数、步骤、操作、元素和/或部件的存在,但是并不排除一个或多个其它特征、整数、步骤、操作、元素、部件和/或前述这些的组的存在或添加。The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms "a", "an" and "the" are intended to include the plural forms as well, unless the context clearly dictates otherwise. It will also be understood that when used in this specification, the term "comprising" specifies the presence of stated features, integers, steps, operations, elements and/or components, but does not exclude one or more other features, integers, steps, The presence or addition of operations, elements, components and/or groups of the foregoing.
根据本发明的特征,提供了用于实现硬件自动设备操作启动器的方法和控制器以及主题控制器电路驻留在其上的设计结构。硬件和固件之间的交互次数被减少至固件对于一次主机操作仅被涉及一次。固件不需要查看主机请求,并且不需要建立或甚至查看任何硬件控制块。与常规实现方式相比,这除去了固件需要被涉及的次数的至少50%并且除去了建立操作的整个负担。这产生通过存储子系统的显著更好的性能并且启用很好地适应SSD的许多出现的工作负荷。According to features of the present invention, there is provided a method and controller for implementing a hardware automatic device operation enabler and a design structure on which the subject controller circuitry resides. The number of interactions between hardware and firmware is reduced to the point that firmware is only involved once for a host operation. The firmware does not need to see host requests, and does not need to build or even see any hardware control blocks. This removes at least 50% of the number of times the firmware needs to be touched and removes the entire burden of the build operation compared to conventional implementations. This yields significantly better performance through the storage subsystem and enables many emerging workloads that fit well with SSDs.
现在参考附图,在图1中,示出了根据优选实施例、通常由标号100指示的输入/输出适配器(IOA)或控制器。控制器100包括耦合到至少一个处理器联合体104的半导体芯片102,其中处理器联合体104包括一个或多个处理器或中央处理器单元(CPU)106。控制器100包括控制存储(CS)108,诸如在CPU106附近提供命令块、工作队列和事件队列存储的动态随机存取存储器(DRAM)。控制器100可以包括为例如由硬件执行的命令块设置和处理提供数据和临时缓冲区的非易失性(NV)备份存储器110和数据存储(DS)112。控制器100可以包括非易失性随机存取存储器(NVRAM)114和闪存存储器116。Referring now to the drawings, in FIG. 1 there is shown an input/output adapter (IOA) or controller, generally indicated by the numeral 100, in accordance with a preferred embodiment. Controller 100 includes a semiconductor chip 102 coupled to at least one processor complex 104 , where processor complex 104 includes one or more processors or central processing units (CPUs) 106 . Controller 100 includes control storage (CS) 108 , such as dynamic random access memory (DRAM) that provides command block, work queue, and event queue storage near CPU 106 . The controller 100 may include a non-volatile (NV) backup memory 110 and a data store (DS) 112 that provide data and temporary buffers for, for example, command block setup and processing performed by hardware. Controller 100 may include non-volatile random access memory (NVRAM) 114 and flash memory 116 .
根据本发明的特征,控制器100包括内联硬件引擎118,该内联硬件引擎118从主机系统134接收主机命令,并且评估所接收到的命令以用于在不涉及固件的情况下启动。内联硬件引擎118建立执行所接收到的命令的硬件命令块的一个或多个串或链,并且开始执行用于所接收到的命令的该一个或多个串。内联硬件引擎118包含或被连接到用于每个逻辑主机资源的寄存器119,该寄存器119允许自动执行的命令对那个主机资源被启用和禁用。内联硬件引擎118包含或被连接到用于每个逻辑主机资源的寄存器119,该寄存器119将每个主机资源直接链接到物理设备并且提供到达该物理设备的引擎路由信息。由内联硬件引擎118生成的设备操作被指向这些寄存器119内所描述的物理设备。According to a feature of the invention, controller 100 includes inline hardware engine 118 that receives host commands from host system 134 and evaluates the received commands for booting without involving firmware. The inline hardware engine 118 builds one or more strings or chains of hardware command blocks that execute the received command and begins execution of the one or more strings for the received command. The inline hardware engine 118 contains or is connected to a register 119 for each logical host resource that allows automatically executed commands to be enabled and disabled for that host resource. The inline hardware engine 118 contains or is connected to a register 119 for each logical host resource, which directly links each host resource to a physical device and provides engine routing information to that physical device. Device operations generated by the inline hardware engine 118 are directed to the physical device described within these registers 119 .
根据本发明的特征,寄存器119与每个逻辑主机资源关联。这些寄存器119包含启用和禁用自动读和自动写的能力。这些寄存器119还可以包含启用和禁用其它硬件卸载操作的能力。当自动执行功能被启用时,无需采取除打开启用寄存器119之外的动作。当自动执行功能被禁用时,无需采取除关闭启用寄存器之外的动作。这是因为,任何必须被执行的停顿(quiescent)或同步都可以无论自动执行功能而同样被执行。当自动执行功能被改变时,例如,从自动读和自动写变成仅自动读,自动执行功能可以被整个禁用,然后仅启用期望的功能。这确保没有由原子性问题造成的问题。物理路由信息全都保存在单个可原子地修改的寄存器119内。因此,如果到驱动器的路径改变或者必须故障转移到另一路径,则路由信息可以在不中断自动执行功能的情况下被更新。According to a feature of the invention, a register 119 is associated with each logical host resource. These registers 119 contain the ability to enable and disable auto-read and auto-write. These registers 119 may also contain the ability to enable and disable other hardware offload operations. When the auto-execute function is enabled, no action needs to be taken other than to turn on the enable register 119 . When the auto-execute feature is disabled, no action is required other than turning off the enable register. This is because any quiescent or synchronization that must be performed can also be performed regardless of the automatic execution function. When the auto-execute function is changed, for example, from auto-read and auto-write to only auto-read, the auto-execute function can be disabled entirely, and then only the desired function can be enabled. This ensures that there are no problems caused by atomicity issues. The physical routing information is all held in a single atomically modifiable register 119 . Thus, if the path to the drive changes or must fail over to another path, the routing information can be updated without interrupting the auto-execute function.
控制器半导体芯片102包括用于执行由内联硬件引擎118建立的硬件命令块的链的多个硬件引擎,诸如分配引擎120A、主机直接存储器存取(HDMA)引擎120H、串行连接SCSI(SAS)引擎120S和解除分配引擎120D。Controller semiconductor chip 102 includes multiple hardware engines for executing chains of hardware command blocks established by inline hardware engine 118, such as allocation engine 120A, host direct memory access (HDMA) engine 120H, serial attached SCSI (SAS ) engine 120S and deallocation engine 120D.
根据本发明的特征,大量常规的固件功能被移至由内联硬件引擎118执行的HW操作。In accordance with features of the present invention, a large amount of conventional firmware functionality is moved to HW operations performed by the inline hardware engine 118 .
如所示,控制器半导体芯片102包括在控制器半导体芯片102和处理器联合体104之间具有外围部件互连快速(PCIe)高速系统互连的各自的PCIe接口128,以及在控制器半导体芯片102和多个存储设备132当中的每一个之间具有串行连接SCSI(SAS)高速系统互连的SAS控制器130,其中存储设备132诸如硬盘驱动器(HDD)或自旋驱动器132和固态驱动器(SSD)132。主机系统134利用PCIe高速系统互连连接到控制器100。应当理解的是,外部处理器联合体104不是必需的并且可以嵌在控制器半导体芯片102中。As shown, the controller semiconductor chip 102 includes a respective PCIe interface 128 with a Peripheral Component Interconnect Express (PCIe) high-speed system interconnect between the controller semiconductor chip 102 and the processor complex 104, and SAS controller 130 having a serial attached SCSI (SAS) high speed system interconnect between 102 and a plurality of storage devices 132 such as hard disk drives (HDD) or spin drives 132 and solid state drives ( SSD) 132. Host system 134 is connected to controller 100 using a PCIe express system interconnect. It should be understood that the external processor complex 104 is not required and may be embedded in the controller semiconductor chip 102 .
例如,DS112包括8GB的DRAM,存储易失性和/或非易失性的4KB页的数据、32字节的高速缓存线(CL)以及DS的连续区域中在CL区域之后的32字节的奇偶校验更新覆盖区(PUFP),其中一个CL用于DS的连续区域中的写高速缓存的每个非易失性页,。For example, the DS112 includes 8GB of DRAM that stores volatile and/or nonvolatile 4KB pages of data, a 32-byte cache line (CL), and a 32-byte Parity Update Footprint (PUFP), where one CL is used for each non-volatile page of the write cache in the contiguous region of the DS.
控制器半导体芯片102和控制存储(CS)108存储由内联硬件引擎118建立的硬件命令块的链以及其它结构和命令块,诸如关于图3所说明和描述的。Controller semiconductor chip 102 and control store (CS) 108 store chains of hardware command blocks and other structures and command blocks built by inline hardware engine 118 , such as illustrated and described with respect to FIG. 3 .
参考图2,示出了根据优选实施例、用于实现通常由标号200指示的硬件自动设备操作启动器的示例硬件操作。如在块202中所指示的,对接收到的命令或接收到的操作的处理开始。Referring to FIG. 2, example hardware operations for implementing a hardware automatic device operation enabler, generally indicated by the numeral 200, are shown in accordance with a preferred embodiment. As indicated in block 202, processing of a received command or received operation begins.
执行评估命令,以确定命令是否可以在不涉及固件的情况下被开始,如在决定块204中所指示的。当操作从主机被启动时,硬件取下描述请求的控制块,就像对于任何请求一样。当控制块到达并且被放入存储器中时,在决定块204处,硬件询问该请求。在决定块204处,硬件随后检查操作是否指向允许自动执行的操作的逻辑资源。在决定块204处,硬件检查操作是读还是写。在决定块204处,硬件检查操作是否只有简单的或者未标记的队列标签。在决定块204处,硬件检查操作是否没有其它复杂的要求。An evaluation command is executed to determine whether the command can be started without involving firmware, as indicated in decision block 204 . When an operation is initiated from the host, the hardware fetches the control block describing the request, as it does for any request. When the control block arrives and is placed in memory, at decision block 204, the hardware interrogates the request. At decision block 204, the hardware then checks whether the operation points to a logical resource that allows the automatically executed operation. At decision block 204, the hardware checks whether the operation is a read or a write. At decision block 204, the hardware checks to see if the operation has only simple or untagged queue tags. At decision block 204, the hardware checks to see if there are no other complex requirements for the operation.
例如,在决定块204处,内联硬件引擎118检查寄存器119中的逻辑主机资源,以确定是否允许自动执行的命令对那个主机资源被启用和禁用。在用于主机资源的配置不允许自动执行操作的情况下,由寄存器119提供的启用设置允许固件按照该资源禁用或部分禁用自动执行功能,主机资源诸如正在高速缓存或者在进行错误处理的、需要LBA翻译的资源。在决定块204处,内联硬件引擎118检查进入的命令,以确保它们满足自动执行的操作的条件,诸如没有排序需求的简单的读或写等。如果在决定块204处确定当前配置不能够使用HW自动执行功能,则如在块206中所指示的,接收到的命令被置于HW事件队列上。For example, at decision block 204, inline hardware engine 118 checks the logical host resource in register 119 to determine whether to allow auto-execution commands to be enabled and disabled for that host resource. The enable setting provided by register 119 allows firmware to disable or partially disable the auto-execute feature per resource where the configuration for a host resource, such as a host resource that is caching or is doing error handling, requires Resources for LBA translations. At decision block 204, the inline hardware engine 118 checks incoming commands to ensure that they meet the conditions for automatically performed operations, such as simple reads or writes with no ordering requirements, and the like. If at decision block 204 it is determined that the current configuration is not capable of using the HW auto-execute function, then as indicated in block 206 the received command is placed on the HW event queue.
如果在决定块204处确定当前配置能够使用HW自动执行功能,则如在块208所指示的,内联硬件引擎118建立执行读或写请求的硬件命令块的一个或多个串,然后开始串执行。如果操作是读并且满足上述检查,则内联硬件引擎118建立执行该请求的硬件命令块的一个或多个串。例如,硬件在2K硬件缓冲区中建立与进入的主机操作关联的控制块,诸如关于图3所说明和描述的。If it is determined at decision block 204 that the current configuration is capable of using the HW auto-execute function, then as indicated at block 208, the inline hardware engine 118 builds one or more strings of hardware command blocks that execute read or write requests, and then begins the string implement. If the operation is a read and the above checks are met, the inline hardware engine 118 builds one or more strings of hardware command blocks that execute the request. For example, the hardware creates control blocks associated with incoming host operations in a 2K hardware buffer, such as illustrated and described with respect to FIG. 3 .
直接索引模式由一组特殊的预分配资源组成,这些资源可以用在一些小的操作上,以降低在块208处通过资源分配器的开销。如果进入的操作仅使用一个4K页,则页被隐式绑定到与主机操作关联的每个控制块。这单个页可以直接被使用,而不通过正常的页分配引擎。Direct indexing mode consists of a special set of pre-allocated resources that can be used on small operations to reduce overhead at block 208 through the resource allocator. If an incoming operation uses only one 4K page, the page is implicitly bound to each control block associated with the host operation. This single page can be used directly without going through the normal page allocation engine.
错误和事件处理代码捕捉这些自动执行的操作的完成,如在决定块210中所指示的。这种代码处理成功的完成并且简单地启动向主机发送好的响应,如在块212中所指示的。成功的完成只在硬件命令块的串的结束处的控制块成功完成时被处理。成功的完成导致固件对每个主机请求只对该操作工作一次。而且,该固件从不需要查看主机请求并且从不需要构造或甚至查看硬件控制块。The error and event handling code captures the completion of these automatically performed operations, as indicated in decision block 210 . This code process completes successfully and simply initiates sending a good response to the host, as indicated in block 212 . Successful completion is only handled when the control block at the end of the string of hardware command blocks completes successfully. Successful completion causes the firmware to work on the operation only once per host request. Also, the firmware never needs to look at host requests and never needs to construct or even look at hardware control blocks.
在决定块210处的错误和事件处理代码处理硬件命令块的自动执行的串内的任何硬件控制块的错误完成,如在块214中所指示的。错误处理代码固件评估失败的串并且建立必要的控制以看起来就像代码已启动硬件命令块的串。在块214处,错误处理代码随后将启动错误处理,就好像自动执行的操作没有在没有固件干涉的情况下被启动一样。本质上,这种代码将自动执行的操作转换为正常的非自动执行的操作。在块214处,错误和事件处理代码处理外部的同步和合并操作,就好像自动执行的操作已被建立并且在固件知道的情况下被执行一样。同步或合并请求通过所有可能的控制块,以查看它们是否正在被执行,并且如果是的话,潜在地将操作标记为需要同步或合并工作。在好的完成中,对于同步或合并的所有外部请求都将被利用单个对每个操作检查单个变量的if(如果)检查来考虑。在错误的完成时,在操作被转换之后,所有处理都在处理正常的非自动操作错误的错误处理例程内完成。The error and event handling code at decision block 210 handles the error completion of any hardware control blocks within the automatically executed string of hardware command blocks, as indicated in block 214 . The error handling code firmware evaluates the failed string and establishes the necessary controls to look like the code started the string of hardware command blocks. At block 214, the error handling code will then initiate error handling as if the automatic execution had not been initiated without firmware intervention. Essentially, this code converts an automated action into a normal non-automated action. At block 214, the error and event handling code handles the external synchronization and merge operations as if the automatic execution operations had been established and executed with the knowledge of the firmware. A sync or merge request goes through all possible control blocks to see if they are being executed, and if so, potentially flag the operation as requiring sync or merge work. In good completion, all external requests for synchronization or merging will be considered with a single if (if) check that checks a single variable for each operation. On error completion, after the operation is converted, all processing is done within the error-handling routine that handles normal non-automatic operation errors.
现在参考图3,示出了根据优选实施例、由硬件自动设备操作启动器实现的、通常由标号300指示的示例自动创建的链。硬件HW询问进入的主机请求并且建立适当的操作链。示出的自动创建的链300包括大于4K的主机写链302、大于4K的主机读链304、小于或等于4K的主机写链306和小于或等于4K的主机读链308。大于4K的主机写链302包括这样的操作:分配在数据的传送中要使用的页或缓冲区的分配A操作、将数据从主机存储器跨PCIe总线传送到所分配的缓冲区中以用于写或者将数据从缓冲区跨PCIe总线传送到主机存储器中以用于读的主机直接存储器存取(HDMA)H操作、将数据从缓冲区写到驱动器或者将数据从驱动器读入到所分配的缓冲区中的串行连接SCSI(SAS)S操作以及释放页或缓冲区的解除分配D操作。Referring now to FIG. 3 , there is shown an example automatically created chain, generally indicated by reference numeral 300 , implemented by a hardware automatic device operation enabler, in accordance with a preferred embodiment. The hardware HW interrogates incoming host requests and establishes the appropriate chain of operations. The automatically created chains 300 shown include a host write chain greater than 4K 302 , a host read chain greater than 4K 304 , a host write chain less than or equal to 4K 306 , and a host read chain less than or equal to 4K 308 . Host write chains 302 greater than 4K include operations that allocate pages or buffers to be used in transfers of data, transfer data from host memory across the PCIe bus into allocated buffers for writing Or transfer data from a buffer across the PCIe bus into host memory for a host direct memory access (HDMA) H operation that reads, writes data from a buffer to a drive, or reads data from a drive into an allocated buffer Serial Attached SCSI (SAS) S operations in an area and deallocation D operations that free pages or buffers.
大于4K的主机读链304包括分配A、SASS、HDMAH和解除分配D的操作。小于或等于4K的主机写链306包括主机直接存储器存取(HDMA)H和串行连接SCSI(SAS)S的操作。小于或等于4K的主机读链302包括SASS和HDMAH的操作。The host read chain 304 greater than 4K includes the operations of allocate A, SASS, HDMAH, and deallocate D. The host write chain 306 less than or equal to 4K includes host direct memory access (HDMA) H and serial attached SCSI (SAS) S operations. Host read chain 302 less than or equal to 4K includes SASS and HDMAH operations.
根据本发明的特征,对于小于或等于4K的主机写链306和主机读链308的操作,使用与正在被使用的2K硬件控制块关联的预分配页。这避免在主机写链306和主机读链308中建立和使用分配和解除分配控制块,并且在两个方面有性能影响。第一,通过去除分配引擎在SAS或HDMA操作可以开始之前运行的要求,这降低了延时。第二,它减少了由硬件执行的控制存储交互的次数。首先,通过避免分配和解除分配控制块的设置,去除到控制存储的两个16或32字节的控制块写。接下来,通过不链接在分配/解除分配引擎中,去除了取出那些所提到的控制块,从而节约了更多的控制存储操作。最后,通过不运行分配和解除分配引擎,页表和页空闲列表都不被读/写,从而节省了另外两到四次对控制存储的存取。In accordance with a feature of the invention, for operation of host write chain 306 and host read chain 308 less than or equal to 4K, pre-allocated pages associated with the 2K hardware control block being used are used. This avoids building and using allocation and deallocation control blocks in host write chain 306 and host read chain 308, and has performance impacts in two ways. First, this reduces latency by removing the requirement for the allocation engine to run before SAS or HDMA operations can begin. Second, it reduces the number of control-store interactions performed by the hardware. First, the two 16 or 32 byte control block writes to the control store are removed by avoiding the setup of allocating and deallocating control blocks. Next, by not chaining in the allocation/deallocation engine, fetching those mentioned control blocks is removed, saving even more control store operations. Finally, by not running the allocation and deallocation engine, neither the page table nor the page free list is read/written, saving another two to four accesses to the control store.
对于只接触单个4K页的操作,使用直接索引模式,并且直接索引具有固定到每个2K硬件控制(HwCb)缓冲区的一页。预分配页或直接索引模式的使用不是对硬件自动执行操作的要求,而是可以被自动执行操作使用的性能增强。所建立的每个控制块链具有来自适当的寄存器组的事件ID。在链302、304、306、308中最后控制块的成功完成或者链中任一控制块的错误完成时,该事件ID被用来通知固件关于该完成。For operations that only touch a single 4K page, direct indexing mode is used, and direct indexing has one page pinned to each 2K hardware-controlled (HwCb) buffer. The use of preallocated pages or direct indexing mode is not a requirement for hardware autoexecution, but a performance enhancement that can be used by autoexecution. Each control block chain built has an event ID from the appropriate register set. Upon the successful completion of the last control block in the chain 302, 304, 306, 308 or the erroneous completion of any control block in the chain, this event ID is used to notify the firmware of the completion.
为了建立分配操作A和解除分配操作D,所需要的所有数据都被包含在主机请求内。基于所请求的LBA和长度,可以确定4K排列页的跨度。如果这个数字大于一,则生成分配和解除分配控制块。如果该数字小于一,则使用预分配的隐含页。分配和解除分配控制块二者都将在页表目的地/源处于与进入的主机操作关联的2K硬件控制块的未使用部分的情况下被生成。All data needed to create the allocation operation A and deallocation operation D is included in the host request. Based on the requested LBA and length, the span of the 4K aligned pages can be determined. If this number is greater than one, an allocation and deallocation control block is generated. If the number is less than one, preallocated implied pages are used. Both the allocation and deallocation control blocks will be generated with the page table destination/source in the unused portion of the 2K hardware control block associated with the incoming host operation.
为了建立HDMA操作H,所需要的所有数据被包含在主机请求内。传送的类型、有或没有报头、所需的数据检查等被包括在主机请求中。目的地或源主机存储器地址也在主机请求中。In order to set up HDMA operation H, all data needed are included in the host request. The type of transfer, presence or absence of headers, required data checks, etc. are included in the host request. The destination or source host memory address is also in the host request.
为了建立SAS操作S,使用来自主机请求的信息以及关于如何路由到物理驱动器的信息。利用图1的内联HW引擎118,来自主机请求的信息被保存在用于给定逻辑主机资源的寄存器119中。这个信息包括用于将处理该操作的SAS引擎的芯片或SAS引擎号。这个信息还包括端口号和设备号。端口号是附连到给定SAS引擎的SAS端口号。设备号是进入由SAS引擎保存的阵列的索引,从而允许SAS引擎查找用于给定设备132的SAS地址。实质上,硬件到达物理设备132将需要的所有路由信息都保存在芯片102中的寄存器119内,硬件无需固件干预就可以到达。这些寄存器119在启用自动执行功能之前由固件设置。To establish a SAS operation S, information from the host request and information on how to route to the physical drives are used. With the inline HW engine 118 of Figure 1, information from host requests is held in registers 119 for a given logical host resource. This information includes the chip or SAS engine number for the SAS engine that will handle the operation. This information also includes port numbers and device numbers. port number is the SAS port number attached to a given SAS engine. The device number is an index into the array maintained by the SAS engine, allowing the SAS engine to look up the SAS address for a given device 132 . Essentially, all the routing information needed by the hardware to reach the physical device 132 is stored in the registers 119 in the chip 102, and the hardware can reach it without firmware intervention. These registers 119 are set by firmware before enabling the auto-execute function.
一旦硬件控制块如图2中块208所示的那样被建立,硬件就将以与固件将会开始该操作相同的方式开始该操作。操作的整个链将被执行,并且在成功完成时,硬件将生成通知固件关于该链的成功完成的事件,如图2中块212所示。在这种情况下,固件将捕捉这个事件,确保没有发生需要跟踪这个事件的事情,并且启动对主机的响应。Once the hardware control block is established as shown at block 208 in Figure 2, the hardware will start the operation in the same way that the firmware would start the operation. The entire chain of operations will be executed, and upon successful completion, the hardware will generate an event informing the firmware of the successful completion of the chain, as shown at block 212 in FIG. 2 . In this case, the firmware will catch the event, make sure nothing happened to track the event, and initiate a response to the host.
如果固件需要合并或同步所有未决的操作,如图2中块214所示,则指示被置于与主机操作关联的控制块中。在成功完成使,如果这个指示是开启的,则固件控制块将被调整为模仿操作是由固件启动的。然后,完成将被处理,就好像固件已启动该操作一样,如图2中块214所示。If the firmware needs to merge or synchronize all pending operations, as shown at block 214 in FIG. 2, an indication is placed in the control block associated with the host operation. Upon successful completion, if this indication is on, the firmware control block will be adjusted to mimic operations initiated by firmware. Completion will then be processed as if the firmware had initiated the operation, as shown at block 214 in FIG. 2 .
在链的任何部分失败的情况下,例如如关于图4所说明和描述的,就好像链是被固件启动的一样,硬件将停止链并为链中失败的控制块生成故障事件,以处理HW命令块的错误完成,如图2中块214所示。事件ID将固件路由到正确的事件处理器。然后,如果操作是被固件启动的话,则事件处理器将更改或填充与这个操作关联或将与之关联的固件控制块。一旦固件中的一切都被设置为模仿如果操作是被固件启动的话将会已经存在的控制块,固件就启动对故障事件的处理,就好像它是正常固件启动的操作的故障。从这点上讲,所有的错误处理都与用于正常固件启动的操作一样进行。In case any part of the chain fails, e.g. as illustrated and described with respect to Figure 4, as if the chain was started by firmware, the hardware will stop the chain and generate a fault event for the failed control block in the chain to handle the HW Error completion of the command block, as shown by block 214 in FIG. 2 . The event ID routes the firmware to the correct event handler. The event handler will then change or populate the firmware control block associated or to be associated with the operation, if the operation was initiated by firmware. Once everything in the firmware is set up to mimic the control blocks that would have existed if the operation was initiated by the firmware, the firmware initiates handling of the failure event as if it were a failure of normal firmware initiated operation. From this point on, all error handling is the same as for normal firmware startup.
现在参考图4,示出了根据优选实施例实现的硬件命令块的示例串的、通常由标号400指示的示例错误路径。错误路径400示出了大于4K的主机写链402,包括操作A、H、S、D,其中错误在串行连接SCSI(SAS)S块中被指示。在有错误时,为失败的HwCb生成错误事件。固件将会把自动开始的链402转换成看起来像FW开始的链,或者FW性能路径操作/构造404。大多数情况下,这仅仅需要打开一位,说FW知道其正在执行。此外,运行构造器,以建立虚拟功能指针表。在一切看上去就像FW已将这个操作作为FW性能路径操作/构造404而开始的情况下,所有现有的错误处理代码都保持不变地被使用,如在现有的错误路径406指示的。Referring now to FIG. 4 , there is shown an example error path, generally indicated by reference numeral 400 , for an example string of hardware command blocks implemented in accordance with a preferred embodiment. Error path 400 shows a host write chain 402 greater than 4K, including operations A, H, S, D, where the error is indicated in a Serial Attached SCSI (SAS) S block. When there is an error, an error event is generated for the failed HwCb. The firmware will convert the auto-started chain 402 into what looks like a FW-started chain, or a FW capability path operation/construction 404 . Most of the time, this just needs to turn on a bit, saying that the FW knows it's executing. Additionally, the constructor is run to build a table of virtual function pointers. Where everything looks like the FW has started this operation as a FW performance path operation/construct 404, all existing error handling code is used unchanged, as indicated in the existing error path 406 .
现在参考图5A和5B,示出了根据优选实施例、分别通常由标号500和510指示的对直接索引错误的处理的示例。Referring now to Figures 5A and 5B, there is shown an example of the handling of direct indexing errors, indicated generally by reference numerals 500 and 510, respectively, in accordance with a preferred embodiment.
在图5A中,对直接索引错误的处理的示例500包括小于或等于4K的主机写502,包括操作H和S,其中错误在串行连接SCSI(SAS)S块中被指示。固件不知道直接索引的使用。在写入跟踪时,分配控制块A和HDMA控制块H被重建,以跟随分配A。这个新的链如由链A、H504所指示的那样被执行。在S块中具有错误的FW性能路径操作/构造506被用于正常的错误处理。In FIG. 5A , an example 500 of handling of direct index errors includes a host write 502 of less than or equal to 4K, including operations H and S, where the error is indicated in a Serial Attached SCSI (SAS) S block. The firmware is unaware of the use of direct indexing. When writing the trace, allocation control block A and HDMA control block H are rebuilt to follow allocation A. This new chain is executed as indicated by chain A, H504. FW capability path operations/constructs 506 with errors in S-blocks are used for normal error handling.
在图5B中,对直接索引错误的处理的示例510包括小于或等于4K的主机写512,包括操作S和H,其中错误在串行连接SCSI(SAS)S块中被指示。在读取故障时,使用直接索引的自动读操作被转换为看起来就像是由FW执行的性能路径读操作。在错误处理期间,丢失的分配A和解除分配D不被使用。一旦错误处理已清除了错误,整个操作就作为正常的读操作被重新发布。这与之前所完成的之间的区别在于在重新开始操作之前在对页解除分配之前检查分配或解除分配控制块是否存在。In FIG. 5B, an example 510 of handling of direct index errors includes a host write 512 of less than or equal to 4K, including operations S and H, where the error is indicated in a Serial Attached SCSI (SAS) S block. On read failures, automatic reads using direct indexes are converted to performance-path reads that appear to be performed by the FW. Lost allocations A and deallocations D are not used during error handling. Once error handling has cleared the error, the entire operation is re-issued as a normal read operation. The difference between this and what was done before is that the existence of the allocation or deallocation control block is checked before the page is deallocated before restarting the operation.
现在参考图6A和6B,示出了根据优选实施例、分别通常由标号600和610指示的固件(FW)事件和控制的示例。Referring now to FIGS. 6A and 6B , there are shown examples of firmware (FW) events and controls, generally indicated by reference numerals 600 and 610 , respectively, in accordance with a preferred embodiment.
还参考图7A和7B,示出了根据优选实施例、分别通常由标号700和710指示的固件(FW)事件和控制的更多示例。Referring also to Figures 7A and 7B, further examples of firmware (FW) events and controls, indicated generally by reference numerals 700 and 710, respectively, are shown in accordance with a preferred embodiment.
根据本发明的特征,图6A和6B以及图7A和7B的示例一般而言处理代码中处理转换自动SAS写的三条不同路径。首先,冻结所提供的一切,使得没有新操作将在各种引擎中被调度。接下来,对于操作可能所处的三个位置提供检查。首先,它可能已经经过HDMA引擎。在这种情况下,操作被转换为性能路径写操作,就好像FW已开始其一样。其次,操作可能尚未进入HDMA引擎。在这种情况下,HDMA控制块被改变为链中的最后,使得当它确实进入HDMA引擎时,链不继续经过HDMA引擎(并且因此看起来就像自动分配和DMA操作)。最后,如果操作处在HDMA引擎中,则操作被中止。但这证明是困难的,因为它是异步操作。中止可能会错过HDMA引擎中的操作并且HDMA可能迅速完成,在这种情况下,这就好像操作已经进展到超越了HDMA引擎一样被处理。或者,中止会实际上停止HDMA。在这种情况下,有时这可以被同步检测到,并且有时不能。在可能的时候,正常错误处理被用来处理事情。如果这不可能告知,则假设可能已经使其经过HDMA,并且因此操作就好像操作已经进展到超越了HDMA引擎一样被处理。最后,在这种情况下,对于已被转换的链处理接收用于HDMA控制块的中止事件。According to a feature of the invention, the examples of Figures 6A and 6B and Figures 7A and 7B generally deal with three different paths in the code that handle converting automatic SAS writes. First, freeze everything provided so that no new operations will be scheduled in the various engines. Next, checks are provided for three places where an action might be located. First, it may have gone through the HDMA engine. In this case, the operation is converted to a performance path write operation as if the FW had started it. Second, the operation may not have entered the HDMA engine. In this case, the HDMA control block is changed to be last in the chain so that when it does go to the HDMA engine, the chain does not continue past the HDMA engine (and thus looks like an automatic allocation and DMA operation). Finally, if the operation is in the HDMA engine, the operation is aborted. But this proves difficult because it is an asynchronous operation. An abort may miss an operation in the HDMA engine and the HDMA may complete quickly, in which case it is handled as if the operation had progressed beyond the HDMA engine. Alternatively, an abort would actually stop HDMA. In this case, sometimes this can be detected synchronously, and sometimes it can't. Where possible, normal error handling is used to get things right. If this is not possible to tell, then the assumption may have already been made HDMA, and thus the operation is handled as if the operation had progressed beyond the HDMA engine. Finally, in this case, the process receives an abort event for the HDMA control block for the chain that has been converted.
在图6A中,FW事件和控制的示例600包括大于4K的主机写链602,包括操作A、H、S、D,其中有事件在主机直接存储器存取(HDMA)H块中被指示。FW将操作转换为FW性能路径操作/构造604,包括性能路径操作A、H、S、D。In FIG. 6A, an example 600 of FW events and controls includes a host write chain 602 greater than 4K, including operations A, H, S, D, with events indicated in host direct memory access (HDMA) H blocks. The FW translates operations into FW performance path operations/constructs 604, including performance path operations A, H, S, D.
在图6B中,FW事件和控制的示例610包括大于4K的主机写链602,包括操作A、H、S、D,其中有事件在主机直接存储器存取(HDMA)H块中被指示。FW将操作转换为FW性能路径操作/构造612,包括性能路径操作A、H。In FIG. 6B, an example 610 of FW events and controls includes a host write chain 602 larger than 4K, including operations A, H, S, D, with events indicated in host direct memory access (HDMA) H blocks. FW converts operations to FW performance path operations/constructs 612, including performance path operations A, H.
在图6A和6B中,FW并不真正知道主机写链602的这些操作。当FW想要在需要停止或停顿操作的地方进行一些操作时,如在操作H中所指示的,FW需要知道所有操作,FW利用遍历所有可能的HW自动操作的FW搜索来转换操作并且将操作转换为看起来像FW启动的性能路径操作,如由图6A中的FW性能路径操作/构造604和图6B中的FW性能路径操作/构造612所说明的。在写时,由于现有的自动分配和DMA,操作可能需要被转换为自动分配和DMA操作,这涉及在HDMA操作H之后改变HwCb以结束链。In FIGS. 6A and 6B , the FW does not really know about these operations of the host write chain 602 . When FW wants to do some operation where operation needs to be stopped or stalled, as indicated in operation H, FW needs to know all operations, FW utilizes FW search through all possible HW automatic operations to convert operation and put operation Translates to performance path operations that look like FW-initiated, as illustrated by FW performance path operation/construct 604 in FIG. 6A and FW performance path operation/construct 612 in FIG. 6B. On write, operations may need to be converted to auto-allocate and DMA operations due to existing auto-allocate and DMA operations, which involves changing HwCb after HDMA operation H to end the chain.
在图7A中,FW事件和控制的示例700包括大于4K的主机写链702,包括操作A、H、S、D,其中有事件和中止在主机直接存储器存取(HDMA)H块中被指示。FW将操作转换为FW性能路径操作/构造704,包括性能路径操作A、H、S、D。In FIG. 7A, an example 700 of FW events and controls includes a host write chain 702 greater than 4K, including operations A, H, S, D, with events and aborts indicated in host direct memory access (HDMA) H blocks . FW converts operations to FW performance path operations/construction 704, including performance path operations A, H, S, D.
在图7B中,FW事件和控制的示例610包括大于4K的主机写链702,包括操作A、H、S、D,其中有事件和中止在主机直接存储器存取(HDMA)H块中被指示。FW将操作转换为看起来就好像自动分配和DMA操作/构造712,包括操作A、H。In FIG. 7B, an example 610 of FW events and controls includes a host write chain 702 greater than 4K, including operations A, H, S, D, with events and aborts indicated in host direct memory access (HDMA) H blocks . The FW converts operations to look like auto-allocate and DMA operations/constructs 712, including operations A, H.
在图7A和7B中,如果在转换要被开始时HDMA引擎正在执行操作H,如在主机写链702中所指示的,则HwCbH不能被改变,因为它已经在处理中,并且不能被允许继续进行,因为它可能开始下一HwCb。于是,要求HDMA操作的中止。当操作开始链中的下一个Cb时,我们假设中止错过了该HDMA操作,并且在这种情况下,操作被转换。如果链停止,则中止事件产生并且链不被转换。在一些情况下,当中止可能已经错过HDMA操作或者没有时,则操作被转换,并且需要处理是否该操作曾被转换却未实际上完成HDMA。当中止事件异步到达时,HDMA上的中止事件指示HDMA被中止。如果操作曾被转换,但随后发现HDMA被中止了,则FW指示器被清除,HDMA操作被重建到链的结束处并且被重新发布。In Figures 7A and 7B, if the HDMA engine is performing operation H when the switch is to be started, as indicated in host write chain 702, then HwCbH cannot be changed because it is already in process and cannot be allowed to continue Proceed as it may start the next HwCb. Thus, suspension of the HDMA operation is required. When the operation starts the next Cb in the chain, we assume that the abort missed this HDMA operation, and in this case, the operation is switched. If the chain is stopped, an abort event is generated and the chain is not switched. In some cases, the operation is switched when the abort may have missed the HDMA operation or not, and there is a need to deal with whether the operation was switched without actually completing the HDMA. An abort event on the HDMA indicates that the HDMA is aborted when the abort event arrives asynchronously. If the operation was switched, but then found to be HDMA aborted, the FW pointer is cleared, the HDMA operation is rebuilt to the end of the chain and reissued.
现在参考图8,示出了根据优选实施例、具有由通常由标号800指示的硬件自动设备操作启动器实现的所生成事件的示例正常流程或好的路径。如在块802所指示的那样,对输入/输出适配器请求控制块(IOARCB)的询问被执行。当前配置能够对在块802处被询问的IOARCB使用HW自动执行功能,然后内联硬件引擎118建立执行IOARCB的硬件命令块的链,如在块804所指示的,然后开始链执行,如在包括各自的操作A、H、S、D808的多个块806、808、810、812中所指示的。如在块814中所指示的,事件被生成。如在块816中所指示的那样,FW处理完成被提供。然后如在块818中所指示的那样,FW启动向主机发送响应。Referring now to FIG. 8 , there is shown an example normal flow or good path with events generated by a hardware automatic device operation enabler, generally indicated by reference numeral 800 , in accordance with a preferred embodiment. As indicated at block 802, a query to the Input/Output Adapter Request Control Block (IOARCB) is performed. The current configuration is capable of using the HW autoexecution function for the IOARCB queried at block 802, then the inline hardware engine 118 builds a chain of hardware command blocks that execute the IOARCB, as indicated at block 804, and then begins chain execution, as indicated in Indicated in blocks 806 , 808 , 810 , 812 of respective operations A, H, S, D 808 . As indicated in block 814, an event is generated. As indicated in block 816, FW processing completion is provided. The FW then initiates sending a response to the host as indicated in block 818 .
现在参考图9,示出了根据优选实施例、用于由通常由标号900指示的硬件自动设备操作启动器实现的启用和禁用事件队列操作的示例。启用一般是简单的,FW写一些位到图1的一些按资源的处理硬件寄存器119中,并且在位被写入之后,HW自动建立用于任何新操作的链。禁用更复杂,因为需要考虑一些异步问题。Referring now to FIG. 9 , there is shown an example for enabling and disabling event queue operations implemented by a hardware automatic device operation enabler, generally indicated by reference numeral 900 , in accordance with a preferred embodiment. Enabling is generally simple, the FW writes some bits into some per-resource processing hardware registers 119 of Figure 1, and after the bits are written, the HW automatically builds the chain for any new operations. Disabling is more complicated because there are some asynchronous issues to consider.
在图9中,示例启用和禁用事件队列处理1000包括事件队列902,其中在被FW处理的最后事件906与辅助被禁用并且固件事件被接收的点908之间示出了未知区904。通过转换所有可能的未决辅助操作,未知区904的窗口被减小。一旦固件原子地禁用了HW,就不再产生自动操作。在事件队列902中辅助被禁用并且固件事件被接收的点908之后的所有后来的操作都不是自动操作。在被FW处理的最后事件906处,转换对所有可能的SAS辅助操作执行,使得不存在意外的自动操作完成并且固件向自己发送事件队列上的事件。通过在906处FW向自己发送事件并且在908处接收它,未知区904的窗口被界定。在FW事件之前,HW可以发送事件说它开始了自动操作。FW必须把这些过滤掉并且考虑在禁用期间它执行的转换。在FW事件之后,FW可以停止过滤事件队列并且返回到对事件队列的正常处理。In FIG. 9 , the example enable and disable event queue process 1000 includes an event queue 902 with an unknown zone 904 shown between the last event 906 processed by the FW and the point 908 at which assistance is disabled and firmware events are received. The window of the unknown region 904 is reduced by switching all possible pending auxiliary operations. Once the firmware atomically disables the HW, no more automatic actions are generated. All subsequent operations after point 908 in event queue 902 where assistance is disabled and firmware events are received are not automatic operations. At the last event 906 handled by the FW, the transition is performed on all possible SAS auxiliary operations, so that there are no accidental automatic operation completions and the firmware sends itself an event on the event queue. By the FW sending an event to itself at 906 and receiving it at 908, the window of the unknown zone 904 is defined. Before the FW event, the HW can send an event saying it started automatic operation. The FW must filter these out and take into account the transitions it performs during disabling. After a FW event, the FW can stop filtering the event queue and return to normal processing of the event queue.
图10示出了示例设计流程1000的框图。设计流程1000可以依赖于所设计的IC的类型而变化。例如,用于建立专用IC(ASIC)的设计流程1000可以与用于设计标准部件的设计流程1000不同。设计结构1002优选地是到设计过程1004的输入并且可以来自IP提供商、核心开发商或其它设计公司,或者可以由设计流程的操作者生成,或者来自其它源。设计结构1002包括形式为示意图或HDL硬件描述语言的控制器100和芯片102,其中硬件描述语言例如Verilog、VHDL、C等。设计结构1002可以包含在一个或多个机器可读介质上。例如,设计结构1002可以是控制器100和芯片102的文本文件或图形表示。设计过程1004优选地将控制器100和芯片102合成或转变成网表1006,其中网表1006是例如描述在集成电路设计中到其它元件和电路的连接的导线、晶体管、逻辑门、控制电路、I/O、模型等的列表,并且被记录在至少一个机器可读介质上。这可以是迭代过程,其中取决于用于控制器100和芯片102的设计规范和参数,网表1006被重新合成一次或多次。FIG. 10 shows a block diagram of an example design flow 1000 . Design flow 1000 may vary depending on the type of IC being designed. For example, the design flow 1000 for building an application specific IC (ASIC) may be different than the design flow 1000 for designing a standard component. Design structure 1002 is preferably an input to design process 1004 and may come from an IP provider, core developer, or other design firm, or may be generated by the operator of the design flow, or from other sources. Design structure 1002 includes controller 100 and chip 102 in the form of a schematic or HDL hardware description language, such as Verilog, VHDL, C, or the like. Design structure 1002 may be embodied on one or more machine-readable media. For example, design structure 1002 may be a text file or a graphical representation of controller 100 and chip 102 . Design process 1004 preferably synthesizes or converts controller 100 and chip 102 into netlist 1006, where netlist 1006 is, for example, wires, transistors, logic gates, control circuits, list of I/O, models, etc., and is recorded on at least one machine-readable medium. This may be an iterative process where netlist 1006 is resynthesized one or more times depending on the design specifications and parameters for controller 100 and chip 102 .
设计过程1004可以包括使用各种输入;例如,来自库元件1008、设计规范1010、特征数据1012、验证数据1014、设计规则1016和测试数据文件1018的输入,其中库元件1008可以容纳用于诸如不同技术节点32nm、45nm、90nm等的给定制造技术的一组常用的元件、电路和设备,包括模型、布局和符号表示,并且其中测试数据文件1018可以包括测试模式和其它测试信息。设计过程1004还可以包括,例如,标准电路设计过程,诸如时序分析、验证、设计规则检查、放置和路由操作等。集成电路设计领域的普通技术人员可以在不偏离本发明得范围和精神的情况下认识到在设计过程1004中使用的可能电子设计自动化工具和应用的程度。本发明的设计结构不限于任何特定的设计流程。The design process 1004 can include using various inputs; for example, input from library elements 1008, design specifications 1010, characterization data 1012, verification data 1014, design rules 1016, and test data files 1018, where library elements 1008 can accommodate applications such as different A common set of components, circuits, and devices, including models, layouts, and symbolic representations, for a given fabrication technology of technology nodes 32nm, 45nm, 90nm, etc., and where test data files 1018 may include test patterns and other test information. Design process 1004 may also include, for example, standard circuit design processes such as timing analysis, verification, design rule checking, place and route operations, and the like. Those of ordinary skill in the art of integrated circuit design can recognize the extent to which electronic design automation tools and applications are possible for use in the design process 1004 without departing from the scope and spirit of the invention. The design structure of the present invention is not limited to any particular design flow.
设计过程1004优选地将如图1中所示的本发明的实施例连同任何附加的集成电路设计或数据(如果适用的话)转变成第二设计结构1020。设计结构1020以用于集成电路的布局数据交换的数据格式驻留在存储介质上,例如,以GDSII(GDS2)、GL1、OASIS或任何其它用于存储这样的设计结构的合适格式存储的信息。设计结构1020可以包括信息,诸如例如测试数据文件、设计内容文件、制造数据、布局参数、导线、金属层次、通孔、形状、用于路由通过制造线的数据以及半导体制造商产生如图1中所示的发明的实施例所需的任何其它数据。然后,设计结构1020可以前进到阶段1022,在那里,例如,设计结构1020前进到下线流片(tape-out)、被发布到制造、被发布到掩模室、被发送到另一设计室、被发送回消费者等。The design process 1004 preferably converts the embodiment of the invention as shown in FIG. 1 into a second design structure 1020, along with any additional integrated circuit design or data, if applicable. Design structure 1020 resides on a storage medium in a data format for layout data exchange of integrated circuits, eg, information stored in GDSII (GDS2), GL1, OASIS, or any other suitable format for storing such design structures. Design structure 1020 may include information such as, for example, test data files, design content files, fabrication data, layout parameters, wires, metal levels, vias, shapes, data for routing through the manufacturing line, and semiconductor manufacturer generated Any other data required for the embodiment of the invention shown. Design structure 1020 may then proceed to stage 1022 where, for example, design structure 1020 is advanced to tape-out, issued to manufacturing, issued to a mask house, sent to another design house , is sent back to the consumer, etc.
虽然本发明已参考附图中所示的本发明的实施例的细节进行了描述,但是这些细节不是旨在限定如所附权利要求书中要求保护的本发明的范围。While the invention has been described with reference to details of embodiments of the invention shown in the drawings, these details are not intended to limit the scope of the invention as claimed in the appended claims.
Claims (20)
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US13/967,693 US9122413B2 (en) | 2013-08-15 | 2013-08-15 | Implementing hardware auto device operations initiator |
| US13/967,693 | 2013-08-15 | ||
| PCT/CN2014/084076 WO2015021896A1 (en) | 2013-08-15 | 2014-08-11 | Implementing hardware auto device operations initiator |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN105453062A true CN105453062A (en) | 2016-03-30 |
| CN105453062B CN105453062B (en) | 2018-07-03 |
Family
ID=52467646
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201480044467.4A Expired - Fee Related CN105453062B (en) | 2013-08-15 | 2014-08-11 | Realize the method and controller of hardware automatic equipment operation starter |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US9122413B2 (en) |
| EP (1) | EP3033686B1 (en) |
| JP (1) | JP6537510B2 (en) |
| CN (1) | CN105453062B (en) |
| WO (1) | WO2015021896A1 (en) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN113918101A (en) * | 2021-12-09 | 2022-01-11 | 苏州浪潮智能科技有限公司 | Method, system, equipment and storage medium for writing data cache |
| CN117420968A (en) * | 2023-12-19 | 2024-01-19 | 苏州元脑智能科技有限公司 | Memory controller, access control method of memory device and memory system |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20240073379A (en) * | 2022-11-18 | 2024-05-27 | 에스케이하이닉스 주식회사 | Memory device including a plurality of plane |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20020108003A1 (en) * | 1998-10-30 | 2002-08-08 | Jackson L. Ellis | Command queueing engine |
| US20100306420A1 (en) * | 2009-06-01 | 2010-12-02 | Lsi Corporation | Fast path scsi io |
| US20120304198A1 (en) * | 2011-05-24 | 2012-11-29 | International Business Machines Corporation | Implementing storage adapter performance optimization with chained hardware operations minimizing hardware/firmware interactions |
| US8495258B2 (en) * | 2011-05-24 | 2013-07-23 | International Business Machines Corporation | Implementing storage adapter performance optimization with hardware accelerators offloading firmware for buffer allocation and automatically DMA |
Family Cites Families (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6985970B2 (en) * | 2003-04-25 | 2006-01-10 | International Business Machines Corporation | Data transfer with implicit notification |
| US8356126B2 (en) * | 2005-02-07 | 2013-01-15 | Dot Hill Systems Corporation | Command-coalescing RAID controller |
| US7805543B2 (en) | 2005-06-30 | 2010-09-28 | Intel Corporation | Hardware oriented host-side native command queuing tag management |
| KR101507975B1 (en) | 2007-09-19 | 2015-04-06 | 마벨 월드 트레이드 리미티드 | Flexible sequencer design architecture for solid state memory controller |
| US8151037B1 (en) | 2008-05-28 | 2012-04-03 | Marvell International Ltd. | Interface for solid-state memory |
| US20100235834A1 (en) | 2009-03-16 | 2010-09-16 | Faasse Scott P | Providing a management communication channel between a software layer and platform layer for hardware management control |
| US20120036302A1 (en) * | 2010-08-04 | 2012-02-09 | International Business Machines Corporation | Determination of one or more partitionable endpoints affected by an i/o message |
| US8495259B2 (en) | 2011-05-24 | 2013-07-23 | International Business Machines Corporation | Implementing storage adapter performance optimization with hardware chains to select performance path |
| US8656213B2 (en) | 2011-05-24 | 2014-02-18 | International Business Machines Corporation | Implementing storage adapter performance optimization with chained hardware operations and error recovery firmware path |
| US9003102B2 (en) | 2011-08-26 | 2015-04-07 | Sandisk Technologies Inc. | Controller with extended status register and method of use therewith |
-
2013
- 2013-08-15 US US13/967,693 patent/US9122413B2/en not_active Expired - Fee Related
-
2014
- 2014-08-11 CN CN201480044467.4A patent/CN105453062B/en not_active Expired - Fee Related
- 2014-08-11 WO PCT/CN2014/084076 patent/WO2015021896A1/en not_active Ceased
- 2014-08-11 EP EP14836867.3A patent/EP3033686B1/en active Active
- 2014-08-11 JP JP2016533802A patent/JP6537510B2/en active Active
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20020108003A1 (en) * | 1998-10-30 | 2002-08-08 | Jackson L. Ellis | Command queueing engine |
| US20100306420A1 (en) * | 2009-06-01 | 2010-12-02 | Lsi Corporation | Fast path scsi io |
| US20120304198A1 (en) * | 2011-05-24 | 2012-11-29 | International Business Machines Corporation | Implementing storage adapter performance optimization with chained hardware operations minimizing hardware/firmware interactions |
| US8495258B2 (en) * | 2011-05-24 | 2013-07-23 | International Business Machines Corporation | Implementing storage adapter performance optimization with hardware accelerators offloading firmware for buffer allocation and automatically DMA |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN113918101A (en) * | 2021-12-09 | 2022-01-11 | 苏州浪潮智能科技有限公司 | Method, system, equipment and storage medium for writing data cache |
| CN113918101B (en) * | 2021-12-09 | 2022-03-15 | 苏州浪潮智能科技有限公司 | Method, system, equipment and storage medium for writing data cache |
| US12222859B2 (en) | 2021-12-09 | 2025-02-11 | Suzhou Metabrain Intelligent Technology Co., Ltd. | Write data cache method and system, device, and storage medium |
| CN117420968A (en) * | 2023-12-19 | 2024-01-19 | 苏州元脑智能科技有限公司 | Memory controller, access control method of memory device and memory system |
| CN117420968B (en) * | 2023-12-19 | 2024-03-12 | 苏州元脑智能科技有限公司 | Memory controller, access control method of memory device and memory system |
Also Published As
| Publication number | Publication date |
|---|---|
| US9122413B2 (en) | 2015-09-01 |
| JP2016528634A (en) | 2016-09-15 |
| CN105453062B (en) | 2018-07-03 |
| JP6537510B2 (en) | 2019-07-03 |
| US20150052265A1 (en) | 2015-02-19 |
| EP3033686A1 (en) | 2016-06-22 |
| EP3033686A4 (en) | 2016-08-17 |
| EP3033686B1 (en) | 2021-04-28 |
| WO2015021896A1 (en) | 2015-02-19 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US8544029B2 (en) | Implementing storage adapter performance optimization with chained hardware operations minimizing hardware/firmware interactions | |
| US8495258B2 (en) | Implementing storage adapter performance optimization with hardware accelerators offloading firmware for buffer allocation and automatically DMA | |
| US9858015B2 (en) | Solid-state storage management | |
| US8825923B2 (en) | Memory system having high data transfer efficiency and host controller | |
| CN115495389A (en) | Storage controller, computing storage device and operating method of computing storage device | |
| TWI847003B (en) | Storage device and method for checking overlaps in logical block address | |
| CN112416250B (en) | Command processing method for NVMe-based solid state disk and related equipment | |
| US8495259B2 (en) | Implementing storage adapter performance optimization with hardware chains to select performance path | |
| US8656213B2 (en) | Implementing storage adapter performance optimization with chained hardware operations and error recovery firmware path | |
| US8856479B2 (en) | Implementing storage adapter performance optimization with hardware operations completion coalescence | |
| US8516164B2 (en) | Implementing storage adapter performance optimization with enhanced hardware and software interface | |
| CN102279825B (en) | Intelligent DMA (Direct Memory Access) controller for solid-state hard disk controller | |
| CN105453062B (en) | Realize the method and controller of hardware automatic equipment operation starter | |
| US9092364B2 (en) | Implementing storage adapter performance control | |
| US8793462B2 (en) | Implementing storage adapter performance optimization with enhanced resource pool allocation | |
| CN205986931U (en) | Switch based on NVMeSSD | |
| US8868828B2 (en) | Implementing storage adapter performance optimization with cache data/directory mirroring | |
| US9280298B2 (en) | Storage device and storage system | |
| US8886881B2 (en) | Implementing storage adapter performance optimization with parity update footprint mirroring | |
| US20170115886A1 (en) | Storage device and method of performing a write operation by the same | |
| JP2013137772A (en) | High-performance ahci interface | |
| US20190278513A1 (en) | Data Transfer Method and Apparatus for Differential Data Granularities | |
| KR101569049B1 (en) | Pass through storage devices | |
| CN113792049A (en) | Data storage method and device for ensuring atomicity and sequency |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| C06 | Publication | ||
| PB01 | Publication | ||
| C10 | Entry into substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| GR01 | Patent grant | ||
| 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: 20180703 |