Storage device, method for starting the storage device, and host device
By matching unique identifiers between the SSD device and the host device and loading pre-configured configuration files, the startup time of the SSD device is reduced, and the problem of the long startup time of the SSD device is solved, and the startup efficiency and performance are improved.
Patent Information
- Application Number
- CN202410554468.9
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2024-01-19
- Filing Date
- 2024-05-07
- Publication Date
- 2025-07-22
AI Technical Summary
The startup time of existing SSD devices is long, which leads to the inability to quickly participate in data reading-write operations after the system is started or restarted, increasing computing resource consumption and unnecessary overhead.
After establishing a transmission connection between the storage device and the host device, receiving and matching unique identification information, loading a pre-configured configuration file to reduce duplicate configuration operations in the startup sequence, and supporting turbo initialization features to reduce startup time.
It significantly reduces the startup time of the SSD device, saves computing resources and bandwidth, and improves the performance and startup efficiency of the storage device.
Smart Images

Figure CN120353736A_ABST
Abstract
Description
Technical Field
[0001] The disclosed embodiments generally relate to storage devices, and more particularly, to methods for reducing the startup time of a storage device. Background Art
[0002] Recently, solid state drive (SSD) devices have been widely used as storage devices due to many advantages provided by these devices, such as speed, power consumption, etc. Many SSD devices have adopted a non-volatile memory express (NVMe) interface protocol that provides significantly higher read / write speeds compared to traditional interface protocols, such as the serial advanced technology attachment (SATA) interface protocol used in traditional SSD devices. In the case where NVMe is used to access non-volatile storage devices included in an SSD device, the SSD device may be referred to as an NVMe SSD device.
[0003] Generally, the startup time or initialization time of an SSD device (whether during system startup or after system reset / restart) plays an important role in determining the importance of the SSD device. The startup time can be defined as the time taken for the SSD device to become fully operational after system startup or reset. In various applications and environments (e.g., in computing devices, data centers, etc.), since an SSD device with a shorter startup time becomes operational faster, an SSD device exhibiting a shorter startup time is superior to an SSD device exhibiting a longer startup time and can thus quickly participate in data read-write operations. Therefore, there is a need to improve storage devices. For example, there is a need to reduce the startup time of SSD devices. Summary of the Invention
[0004] One or more problems and / or disadvantages in the related art discussed above can be overcome, and additional advantages can be provided by the disclosure. According to aspects of the disclosure, devices, methods / operation procedures, systems, and computer-readable media are provided to reduce the startup time of a storage device.
[0005] According to aspects of the disclosure, a method for starting a storage device is provided, including: receiving first identification information as part of a process for establishing a transmission connection between the storage device and a host device, the first identification information corresponding to an association between the storage device and the host device; determining whether the first identification information matches second identification information stored in a memory of the storage device; and based on a match between the first identification information and the second identification information, loading configuration data from a configuration file associated with the second identification information stored in the memory of the storage device, the configuration data corresponding to one or more configuration operations related to a startup sequence, where the startup sequence includes a plurality of configuration operations for starting the storage device.
[0006] According to another aspect of the disclosure, a storage device is provided, including: a memory; and a controller communicatively coupled to the memory and configured to: as part of a process for establishing a transmission connection between the storage device and a host device, receive first identification information corresponding to an association between the storage device and the host device; determine whether the first identification information matches second identification information stored in the memory of the storage device; and based on the first identification information matching the second identification information, load configuration data from a configuration file associated with the second identification information stored in the memory of the storage device, the configuration data corresponding to one or more configuration operations related to a startup sequence, wherein the startup sequence includes a plurality of configuration operations for starting the storage device.
[0007] According to another aspect of the disclosure, a method for starting a storage device is provided, including: establishing a transmission connection between the storage device and a host device; reading a capability register of the storage device to determine whether the storage device supports fast startup; based on determining that the storage device supports fast startup, generating first identification information corresponding to an association between the storage device and the host device, and transmitting the first identification information to the storage device; and at the expiration of a timer, reading a status register of the storage device to determine whether the storage device has loaded configuration data from a configuration file associated with the first identification information, the configuration data corresponding to one or more configuration operations related to a startup sequence, wherein the startup sequence includes a plurality of configuration operations for starting the storage device.
[0008] According to another aspect of the disclosure, a host device for starting a storage device is provided, the host device including: a memory; and at least one controller communicatively coupled to the memory and configured to: establish a transmission connection between the storage device and the host device; read a capability register of the storage device to determine whether the storage device supports fast startup; based on determining that the storage device supports fast startup, generate first identification information corresponding to an association between the storage device and the host device, and transmit the first identification information to the storage device; and at the expiration of a timer, read a status register of the storage device to determine whether the storage device has loaded configuration data from a configuration file associated with the first identification information, the configuration data corresponding to one or more configuration operations related to a startup sequence, wherein the startup sequence includes a plurality of configuration operations for starting the storage device. BRIEF DESCRIPTION OF THE DRAWINGS
[0009] Embodiments of the disclosure are illustrated in the drawings, and throughout the drawings, like reference numerals indicate corresponding parts in each of the drawings. The embodiments will be better understood from the following description with reference to the drawings, wherein:
[0010] Figure 1 A high-level block diagram of a storage system according to an embodiment of the disclosure is shown.
[0011] Figure 2 Shows a more detailed block diagram of a storage system including components of a host device and a storage device according to the disclosed embodiments.
[0012] Figure 3 Shows a method for reducing the startup time of a storage device according to the disclosed exemplary embodiments.
[0013] Figure 4 Shows a flowchart of a method for reducing the startup time of a storage device according to the disclosed embodiments.
[0014] Figure 5 Shows a flowchart of another method for reducing the startup time of a storage device according to the disclosed embodiments. Detailed Description of the Invention
[0015] Hereinafter, various embodiments will be described in detail with reference to the accompanying drawings.
[0016] The following detailed description is provided to assist the reader in obtaining a comprehensive understanding of the methods, apparatuses, and / or systems described herein. However, after understanding the disclosure of the present application, various changes, modifications, and equivalents of the methods, apparatuses, and / or systems described herein will be apparent. For example, the order of operations described herein is merely exemplary and is not limited to those set forth herein, but may be changed as will be apparent after understanding the disclosure of the present application, except for operations that must occur in a particular order. Additionally, for increased clarity and conciseness, the description of features known after understanding the disclosure of the present application may be omitted.
[0017] The features described herein may be embodied in different forms and should not be construed as limited to the examples described herein. Instead, the examples described herein are provided only to illustrate some of the many possible ways of implementing the methods, apparatuses, and / or systems described herein, which will be apparent after understanding the disclosure of the present application.
[0018] Throughout the specification, when a component is described as "connected to" or "coupled to" another component, it may be directly "connected to" or "coupled to" the other component, or there may be one or more other components therebetween. In contrast, when an element is described as "directly connected to" or "directly coupled to" another element, there may be no other elements therebetween. Similarly, similar expressions (e.g., "between" and "immediately between" and "adjacent to" and "immediately adjacent to") should be interpreted in the same manner. As used herein, the term "and / or" includes any one of the associated listed items and any combination of any two or more thereof.
[0019] Although terms such as "first", "second", and "third" may be used herein to describe various components, elements, regions, layers, or sections, these components, elements, regions, layers, or sections are not limited by these terms. Rather, these terms are only used to distinguish one component, element, region, layer, or section from another. Thus, a first component, first element, first region, first layer, or first section, as referred to in the examples described herein, may also be referred to as a second component, second element, second region, second layer, or second section without departing from the teachings of the examples.
[0020] The terms used herein are for the purpose of describing various examples only and are not intended to limit the disclosure. Unless the context clearly dictates otherwise, the singular forms are also intended to include the plural forms. The terms "comprises", "comprising", and "having" specify the presence of the stated features, numbers, operations, components, elements, and / or combinations thereof, but do not preclude the presence or addition of one or more other features, numbers, operations, components, elements, and / or combinations thereof. As used herein, the phrase "at least one of" following a list of elements modifies the entire list of elements and not individual elements of the list. For example, the phrase "at least one of a, b, and c" should be understood to include only a, only b, only c, both a and b, both a and c, both b and c, or all of a, b, and c.
[0021] Unless otherwise defined, all terms (including technical and scientific terms) used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this disclosure belongs and based on the understanding of the disclosure of this application. Terms such as those defined in commonly used dictionaries should be interpreted as having a meaning consistent with their meaning in the context of the relevant art and the disclosure of this application, and should not be interpreted in an idealized or overly formal sense, unless expressly so defined herein. The use of the term "may" with respect to an example or embodiment herein (e.g., with respect to what an example or embodiment may include or achieve) indicates that there is at least one example or embodiment in which such a feature is included or achieved, while not all example embodiments are so limited.
[0022] The disclosed embodiments are example embodiments, and thus, the disclosure is not limited thereto and can be implemented in various other forms. As is conventional in the art, embodiments can be described and illustrated in terms of blocks that perform one or more functions as shown in the accompanying drawings. These blocks (which may herein be referred to as units or modules, etc., or represented by names such as devices, logic, circuits, counters, comparators, generators, converters, etc.) can be physically implemented by analog and / or digital circuits, including one or more of logic gates, integrated circuits, microprocessors, microcontrollers, memory circuits, passive electronic components, active electronic components, optical components, etc., and can also be implemented or driven by software and / or firmware (configured to perform the functions or operations described herein).
[0023] Terms such as "solid state drive", "SSD", and "SSD device" may be used interchangeably throughout the disclosure. Additionally, terms such as "host" and "host device" may be used interchangeably throughout the disclosure. Terms such as "controller" and "processor" may be used interchangeably throughout the disclosure. For example, a controller and / or a processor can be implemented by hardware electronic components. Terms such as "initialization sequence" and "boot sequence" may be used interchangeably throughout the disclosure. Terms such as "turbo initialization" and "quick start" may be used interchangeably throughout the disclosure.
[0024] As an example, a data center typically may include multiple components, including computing devices (e.g., processors, controllers, servers, etc.), security systems, network equipment, data storage systems, management systems, power equipment, etc. The data storage system can include hardware devices and software (e.g., including computer instructions, computer code, and / or programs) that enable data to be stored within the data center facility. The data storage system can include storage devices such as hard disk drives (HDDs), SSD devices, tape drives, and other internal and external storage devices. However, the disclosure is not limited thereto, and thus other types of storage devices can be provided. Currently, SSDs are the main form of storage devices used in data centers. According to the disclosed embodiments, the disclosed technologies and methods can be applicable to a wide range of application fields (and / or devices in which SSDs are used as a means of data storage), and are not limited to data centers.
[0025] Generally, an SSD device is a non-volatile data storage device that uses flash-based memory or semiconductor chips to store data. Generally, compared with other storage devices such as HDDs, SSD devices have high read / write speeds and faster boot times. Currently, many SSD devices adopt the Non-Volatile Memory Express (NVMe) protocol as a new storage access and transfer protocol for next-generation storage devices.
[0026] Figure 1 Shows a high - level block diagram of a storage system 100 according to the disclosed embodiments. For example, the methods, apparatuses, and techniques described in this disclosure may be implemented in the storage system shown in Figure 1 . However, the disclosure is not limited thereto, and thus, the methods, apparatuses, and techniques described herein may be implemented in various other systems or apparatuses according to other embodiments. As shown in Figure 1 , the storage system 100 may include a host device 110 and a storage cluster 120. The host device 110 may communicate with at least one storage cluster 120 via at least one network. Although in Figure 1 , for simplicity and consistency, only one host device 110 is shown, those of ordinary skill in the art will understand that the storage system 100 may include multiple host devices that communicate with multiple storage clusters. According to an embodiment, the host device 110 may be a master device that controls and / or facilitates various operations related to data placement and data movement.
[0027] The storage system 100 and / or the storage cluster 120 may be part of a data center facility. The storage cluster 120 may include multiple storage devices 130 - 1, 130 - 2 (collectively 130). Each storage device 130 may include a storage controller (or referred to as a storage device controller) 140 and a device memory. The device memory may be a non - volatile memory (NVM) 150. Each storage device 130 may include a motherboard having multiple network interface cards (NICs) for receiving data and / or commands from the host device 110. For example, the storage device 130 - 1 may include a storage controller 140 - 1 and an NVM 150 - 1, and the storage device 130 - 2 may include a storage controller 140 - 2 and an NVM 150 - 2. The storage controllers 140 - 1, 140 - 2 may be collectively referred to as the storage controller 140, and the NVMs 150 - 1, 150 - 2 may be collectively referred to as the NVM 150. The network connecting the host device 110 and the storage cluster 120 may include or otherwise encompass multiple networks or sub - networks. For example, the host device 110 and the storage devices 130 in the storage cluster 120 may be connected through multiple networks or sub - networks. Each of the multiple networks or sub - networks may include, for example, a wired data path or a wireless data path. The network may include servers, routers, bridges, switches, or other similar equipment for facilitating communication between the host device 110 and the storage devices 130. Although two storage devices 130 are shown in Figure 1 , the disclosure is not limited thereto, and thus, according to another embodiment, the number of storage devices may vary.
[0028] Figure 2FIG. 200 shows a more detailed block diagram of a storage system 200 including a host device 110 and a storage device 130 according to an embodiment. For example, the host device 110 is configured to communicate with the storage device 130 (e.g., an SSD device).
[0029] Referring Figure 2 , the host device 110 may include a host controller 210 and a host memory 220. The host memory 220 may be used as a buffer memory configured to temporarily store data to be transmitted to the storage device 130 or data received from the storage device 130. According to an embodiment, Figures 1 to 2 the host device 110 may be a mobile device or a non-mobile device. The host device may include, but is not limited to: a portable communication terminal (e.g., a mobile phone), a smart phone, a tablet personal computer (PC), a wearable device, a healthcare device, an Internet of Things (IoT) device, a personal computer (PC), a laptop computer, a server, a media player, or an automotive device (e.g., a navigation device). In addition, the host device 110 may include one or more image capture modules, one or more input modules, one or more output modules, one or more sensors, at least one display, at least one power supply, and at least one connection interface, but is not limited thereto. The one or more image capture modules may include, but are not limited to, a camera or an imaging sensor. The one or more input modules may include, but are not limited to, a keyboard, a touch panel, a microphone, a receiver, etc. The one or more output modules may include, but are not limited to, a speaker, a transmitter, or a display. The host memory 220 may be a volatile memory (such as static random access memory (RAM) (SRAM) and / or dynamic RAM (DRAM)). However, the disclosure is not limited thereto, and thus, according to another embodiment, the host memory 220 may include another type of memory.
[0030] According to an embodiment, the host controller 210 and the host memory 220 may be implemented as separate semiconductor chips. However, the disclosure is not limited thereto, and thus, according to another embodiment, the host controller 210 and the host memory 220 may be integrated in the same semiconductor chip. In this case, a more compact storage system may be provided. As an example, the host controller 210 may be any one of a plurality of modules included in an application processor (AP). The AP may be implemented as a system on a chip (SoC). In addition, the host memory 220 may be an embedded memory included in the AP or NVM. However, the disclosure is not limited thereto, and thus, the host memory 220 may be a memory module located outside the AP. The host controller 210 may manage an operation of storing data (e.g., write data) in a buffer area of the host memory 220 in the device memory (e.g., NVM 150) of the storage device 130 or an operation of storing data (e.g., read data) in the device memory (e.g., NVM 150) in the buffer area of the host memory 220. The host memory 220 may include one or more local buffers and a host memory buffer (HMB).
[0031] According to an embodiment, the storage device 130 may include at least one device controller and a device memory. The device controller may be a storage controller 140 or a processor, and the device memory may be a non-volatile storage medium or memory (NVM) 150 configured to store data in response to a request from the host device 110. As an example, the storage device 130 may include at least one of an SSD, an embedded memory, and a removable external memory. In an example case where the storage device 130 is an SSD, the storage device 130 may be a device compliant with the NVMe protocol. For example, the storage device 130 may be a device operating based on the NVMe protocol. However, the disclosure is not limited thereto, and generally, the disclosed technology is equally applicable to storage devices compliant with one or more any other storage protocols that already exist or may be developed in the future or storage devices operating based on one or more any other storage protocols that already exist or may be developed in the future. In an example case where the storage device 130 is an embedded memory or an external memory, the storage device 130 may be a device compliant with the Universal Flash Storage (UFS) standard or the Embedded Multimedia Card (eMMC) standard. However, the disclosure is not limited thereto, and thus, the storage device 130 may be implemented based on other types of standards or protocols.
[0032] According to an embodiment, Figures 1 to 2The storage device 130 can be used as a non-volatile storage device configured to store data regardless of whether power is supplied. That is, even when the power to the storage device 130 is disconnected, the storage device 130 may be able to store data. The device memory (e.g., NVM 150) may include a flash memory that may include a two-dimensional (2D) NAND memory array or a three-dimensional (3D) (or vertical) NAND (VNAND) memory array. As another example, the storage device 130 may include various other types of NVM. For example, the storage device 130 may include magnetic RAM (MRAM), spin transfer torque MRAM (STT-MRAM), conductive bridge RAM (CB-RAM), ferroelectric RAM (FRAM), phase change RAM (PRAM), resistive RAM (RRAM), and various other types of non-volatile memory. According to an embodiment, the device memory (e.g., NVM 150) may include a plurality of cells, each of the plurality of cells being capable of storing a single binary digit or bit of information. In Figure 2 FIG., only one NVM is shown as part of the storage device 130. However, the disclosure is not limited thereto, and generally, the storage device 130 may include a plurality of NVMs, each NVM being connected to the storage controller 140 via one of a plurality of channels.
[0033] According to an embodiment, the storage device 130 may be physically separated from the host controller 210 or implemented in the same package as the host controller 210, thereby producing a compact storage system. The storage device 130 may be removably coupled to the host device 110 through one or more interfaces (I / F) of the storage controller 140, such as a host interface (e.g., host I / F 230) and a device interface (or memory interface) (e.g., device I / F 240). For example, the storage controller 140 may be connected to the host 110 via the host IF230, and the storage controller 140 may be connected to the NVM 150 via the device I / F 240. The host interface 230 and the device interface 240 may be configured to enable the exchange of read / write (I / O) requests and data between the host device 110 and the storage device 130. The host interface 230 may be communicatively coupled to the host device 110, and the storage device interface 240 may be communicatively coupled to the device memory (e.g., NVM 150). As an example, the host interface 230 may send packets to and receive packets from the host device 110. Packets sent from the host device 110 to the host interface 230 may include commands and / or data to be written to the NVM 150. Packets sent from the host interface 230 to the host device 110 may include responses to commands and / or data read from the NVM 150. The device interface 240 may send data to be written into the NVM to the NVM 150 or receive data read from the NVM 150. The device interface 240 may be configured to conform to a standard protocol, such as Toggle or Open NAND Flash Interface (ONFI).
[0034] According to an embodiment, the device interface 240 may be implemented using various interface technologies, such as Advanced Technology Attachment (ATA), Serial ATA (SATA), External SATA (e-SATA), Small Computer Small Interface (SCSI), Serial Attached SCSI (SAS), Peripheral Component Interconnect (PCI), PCI Express (PCIe), NVMe, Universal Serial Bus (USB) interface, Secure Digital (SD) card interface, Multimedia Card (MMC) interface, eMMC interface, UFS interface, Embedded UFS (eUFS) interface, and Compact Flash (CF) card interface. However, the disclosure is not limited thereto, and thus, the device interface 240 may be implemented using other interface technologies, standards, or protocols. According to an embodiment, the host interface 230 may be a PCIe host interface for connecting to a peripheral device. For example, the NVMe-based storage device 130 may be connected to the host device 110 using the PCIe host interface.
[0035] The storage controller 140 may also include one or more components (such as, a central processing unit (CPU) 242, a flash translation layer (FTL) 244, a packet manager 246, a buffer memory 248, and one or more registers 250). However, the disclosure is not limited thereto, and thus, according to an embodiment, the storage controller 140 may also include, but is not limited to, an error correction code (ECC) engine and an advanced encryption standard (AES) engine. The storage controller 140 may also include a working memory loaded with the FTL 244. The CPU 242 may execute the FTL 244 to control data write and read operations to / from the NVM 150. The FTL 244 may perform various functions (such as, an address mapping operation, a wear-leveling operation, and a garbage collection operation). The address mapping operation may be an operation of converting a logical address received from the host device 110 into a physical address in the NVM 150 for actually storing data. The wear-leveling operation may be a technique for preventing excessive degradation of a specific block by allowing blocks of the NVM 150 to be used evenly. As an example, the wear-leveling operation may be implemented using a firmware technique for balancing the erase counts of physical blocks. The garbage collection operation may be a technique for ensuring available capacity in the NVM 150 by erasing an existing block after copying valid data of the existing block to a new block.
[0036] The packet manager 246 may generate packets according to a protocol that agrees with the interface of the host device 110, or parse various types of information from the packets received from the host device 110. In addition, the buffer memory 248 may temporarily store data to be written to the NVM 150 or data to be read from the NVM 150. According to an embodiment, the buffer memory 248 may be a component included in the storage controller 140. However, the disclosure is not limited thereto, and thus, according to another embodiment, the buffer memory 248 may be external to the storage controller 140.
[0037] The ECC engine may perform error detection and correction operations on read data read from the NVM 150. For example, the ECC engine may generate parity bits for write data to be written to the NVM 150, and the generated parity bits may be stored in the NVM 150 together with the write data. During an operation of reading data from the NVM 150, the ECC engine may correct an error in the read data by using the parity bits read from the NVM 150 together with the read data, and output the error-corrected read data. The AES engine may perform at least one of an encryption operation and a decryption operation on data input to the storage controller 140 by using a symmetric-key algorithm.
[0038] In the case where the storage device 130 (e.g., SSD device) is first connected to the host device 110 and / or in the case where the storage device 130 undergoes different types of reset / restart, the storage device 130 and the host device 110 may need to follow a series of operations for establishing a functional connection between the storage device 130 and the host device 110. Such a series of operations may be referred to as an "initialization sequence" or a "boot sequence". The initialization sequence or the boot sequence may involve multiple steps or configuration operations that need to be performed to ensure that the SSD device 130 is in a ready state for sending and / or receiving data. The multiple configuration operations may involve host-based configuration operations related to the initialization of the storage controller 140, and the host-based configuration operations include memory allocation and configuration of the storage controller 140. In one example, the host-based configuration operations may represent configuration operations performed based on host-based control or indication. The multiple configuration operations may be defined by the relevant NVMe specification.
[0039] As an example, multiple host-based configuration operations may include configuring the management queue. For example, the host device 110 may configure the management queue by setting the values of the administrative queue attributes (AQA), the administrative submission queue base address (ASQ), and the administrative completion queue base address (ACQ) (e.g., setting them to appropriate values). Multiple host-based configuration operations may also include determining the supported input-output (I / O) command set. For example, the host device 110 may determine the supported I / O command set by checking the status of the controller capabilities - command set support field (CAP.CSS field) and appropriately initializing the controller configuration - command set support field (CC.CSS field). For example, when it is checked that CAP.CSS bit 7 is set to "1", the host initializes / sets the CC.CSS field to 111b. When it is checked that CAP.CSS bit 6 is set to "1", the host initializes the CC.CSS field to 110b, and when it is checked that CAP.CSS bit 6 is cleared to "0" and bit 0 is set to "1", the host sets the CC.CSS field to 000b. Here, the term "supported" represents a feature, element, or component supported by the storage device.
[0040] Multiple host-based configuration operations may also include configuring the settings of the storage controller 140. For example, the host device 110 may configure the settings of the storage controller 140 by selecting an arbitration mechanism in CC.AMS and by initializing the memory page size (MPS) in the CC.MPS field. The arbitration mechanism support field (CC.AMS) in the controller capabilities attribute indicates the optional arbitration mechanisms supported by the storage controller 140. The memory page size (CC.MPS) field in the controller capabilities attribute indicates the optional memory page sizes supported by the storage controller 140. Multiple host-based configuration operations may also include enabling the storage controller 140 by the host device 110.
[0041] Multiple host-based configuration operations may also include creating I / O queue pairs based on commands received from the host device 110. The host device 110 may create queues. The number of created queues may be up to the maximum value supported by the storage controller 140. For example, the number of created queues is based on the system configuration and / or the expected workload. The I / O queues may be completion queues and / or submission queues. For example, NVMe is based on a paired submission and completion queue mechanism. The submission queue is a circular buffer with a fixed slot size, and the host device 110 uses the circular buffer with the fixed slot size to submit commands for execution by the storage controller 140 (e.g., each submission queue entry may be a command). According to an embodiment, the completion queue may be a circular buffer with a fixed slot size for posting the status of completed commands. The completed commands are uniquely identified by a combination of the associated submission queue identifier and the command identifier assigned by the host device 110. As an example, multiple submission queues may be associated with a single completion queue.
[0042] To create I / O queues, the host device 110 may be configured to determine the number of I / O submission queues and I / O completion queues. For example, in the case where the storage controller 140 implements I / O queues, the host device 110 may use a "set feature" command to determine the number of supported I / O submission queues and I / O completion queues. After determining the number of I / O queues, one or more NVMe transport-specific interrupt registers may be configured. The NVM transport-specific interrupt registers may include a message-signaled interrupt (MSI) register and / or an extended message-signaled interrupt (MSI-X) register.
[0043] In an example case where the storage controller 140 implements an I / O queue, the host device 110 may allocate an appropriate number of I / O completion queues based on the number required by the system configuration and the number supported by the storage controller 140. The I / O completion queues may be allocated using the create I / O completion queue command. In an example case where the storage controller 140 implements an I / O queue, the host device 110 may allocate an appropriate number of I / O submission queues based on the number required by the system configuration and the number supported by the storage controller 140. The I / O submission queues are allocated using the create I / O submission queue command.
[0044] For example, the host device 110 may send one or more commands to the storage controller 140 to perform the creation of the completion queue and / or the submission I / O queue. The host device 110 may also send one or more commands to the storage controller 140 to perform the deletion of the completion queue and / or the submission I / O queue. After receiving the one or more commands, the storage controller 140 may be configured to process the queue identifier and / or the queue size indicated in the received one or more commands, and perform the creation and / or deletion of the completion queue and / or the submission I / O queue in the host memory 220.
[0045] Data corresponding to the execution of multiple configuration operations or the execution results of multiple configuration operations may be named "configuration data". After executing the multiple configuration operations, the storage controller 140 becomes ready to process commands issued by the host device 110. It may be noted that, according to another embodiment, in addition to the operations defined in the relevant NVMe specification, the multiple configuration operations may further include additional configuration operations.
[0046] Once the storage device 130 is connected to the host device 110, the connection can remain intact until a problem occurs in the storage device 130. During the life of the storage device 130, there may be multiple power cycles due to various factors (e.g., after a system reset, system reboot, etc.). The various factors can include, but are not limited to, the host device (e.g., laptop computer) entering the sleep mode, a power interruption, server maintenance, etc. According to an embodiment, a power cycle can be defined as an event where power to the storage device 130 is disconnected and then reconnected (e.g., when the system is first started or powered on after a reset or reboot), or when power to the storage device 130 is not disconnected but one or more link and / or controller-level resets are performed. Here, even when there is no change in the physical connection between the host device 110 and the storage device 130, the host device 110 still needs to reconfigure the storage device 130 (or reinitialize the storage controller 140) after each power cycle. In other words, there is no mechanism for "storing configuration data corresponding to one or more of multiple repeated configuration operations and later reloading the stored configuration data during subsequent power cycles."
[0047] Therefore, the host device 110 and the memory device 130 need to follow multiple repeated configuration operations of the boot sequence (as defined in the relevant NVMe specification), and the multiple repeated configuration operations of the boot sequence (as defined in the relevant NVMe specification) involve configuring various settings and parameters within the storage device 130 during each power cycle to ensure correct operation and establish a functional connection between the storage device 130 and the host device 110. Such an initialization process takes a significant amount of time (e.g., about 3 seconds to 5 seconds) to reinitialize the storage controller 140 to ensure that the storage device 130 is ready for communication and data operations. Performing such an initialization process during each power cycle results in unnecessary overhead (e.g., increased startup time of the storage device 130, more computing resources (e.g., processing power) being consumed, etc.). Currently, there is no mechanism that allows the host device 110 to skip or bypass these repeated operations to achieve an efficient and fast startup of the storage device 130 (e.g., to reduce the startup time of the storage device 130).
[0048] To overcome such limitations, the disclosed embodiments provide a technique in which configuration data associated with one or more of the multiple configuration operations of a startup sequence is stored in a configuration file during a first power cycle. For example, the first power cycle can be when the host device 110 pairs with the storage device 130 for the first time. Thus, during subsequent power cycles, the host device 110 can skip performing the same one or more time-consuming configuration operations of the startup sequence and reload the configuration data associated with the same one or more configuration operations from the configuration file to reduce the startup time of the storage device 130. As discussed in the following description regarding Figure 3 such a solution for reducing the startup time of the storage device 130 can be referred to as "turbo initialization" or "fast startup" of the storage device 130.
[0049] According to an embodiment, to enable turbo initialization of the storage device 130, the storage device 130 can be provided with one or more registers 250. The one or more registers can include, but are not limited to, a controller capability register, a custom register, a status register, and a configuration register. In one example, the one or more registers 250 can be included in the storage device 130 as new or custom registers provided in addition to the pre-existing registers included in the storage device for performing the normal operations of the storage device 130. However, the disclosure is not limited thereto, and thus, according to another embodiment, the pre-existing registers of the storage device 130 can be used to act as custom registers, status registers, and configuration registers. For example, the pre-existing registers of the storage device 130 can be used for the purpose of serving as custom registers, status registers, and configuration registers. To reduce the startup time of the storage device 130, the storage device 130 should support the "turbo initialization" feature. The storage device 130 can indicate whether it supports the turbo initialization feature by setting one or more predefined bits in the capability register. For example, the storage device 130 can set one or more bits as "capability bits" to indicate that the turbo initialization feature is supported by the storage device 130. The storage device 130 can also set one or more bits as "TTI bits" to indicate a threshold period or a predetermined time (also referred to as "Time to Turbo-initialize" or TTI).
[0050] The TTI may indicate the time period that the storage device 130 may spend for initialization when turbo initialization is enabled. The TTI may be included in the storage device 130 by the manufacturer of the storage device 130 when packaging the storage device 130. For example, the TTI may be pre-stored in the storage device 130 when packaging the storage device 130. In one embodiment, the TTI may be reset / customized by the user of the storage device 130 based on requirements (e.g., the TTI may be transmitted through one or more control registers). According to an embodiment, setting a bit may represent changing the value of the bit to "1" or keeping the value of the bit unchanged when the value of the bit is already "1". According to an embodiment, resetting a bit may represent changing the value of the bit to "0" or keeping the value of the bit unchanged when the value of the bit is already "0".
[0051] Figure 3 FIG. 300 shows a method 300 for reducing the startup time of the storage device 130 according to an embodiment. The method 300 may include an operation procedure performed by the storage system 100 to reduce the startup time of the storage device 130. Referring to Figure 3 , in operation 302, the method may include pairing the storage device 130 with the host device 110 during a power cycle. For example, the power cycle may be during system startup or system reset / restart. In operation 304, the method may include establishing a connection between the host device 110 and the storage device 130. For example, when the storage device 130 is paired with the host device 110, an NVMe transport connection may be established between the host device 110 and the storage device 130 before transmitting any data. As an example, establishing the transport connection may include establishing a Transmission Control Protocol (TCP) connection, an NVMe-TCP connection, a Non-Volatile Memory Express over Fabrics (NVMe-oF) connection, and / or one or more other such applicable transport connections between the host device 110 and the storage controller 140 by exchanging one or more parameters / commands.
[0052] In operation 306, the method may include determining whether the storage device 130 supports the turbo initialization feature. For example, after establishing a transmission connection, the host device 110 may check whether the storage device 130 supports the turbo initialization feature. However, the disclosure is not limited thereto, and thus, according to other embodiments, the host device 110 may check whether the storage device 130 supports the turbo initialization feature during or before establishing a transmission connection. To check for support of turbo initialization, the host device 110 may send a request to the storage device 130 (e.g., to the storage controller 140 of the storage device 130) to read the capability register of the storage device 130. The host device 110 may read the capability register by interacting with the storage controller 140. When reading the capability register, the host device 110 determines that the storage device 130 supports the turbo initialization feature based on one or more bits or capability bits being set to indicate that the storage device 130 supports turbo initialization. On the other hand, the host device 110 may determine that the storage device 130 does not support the turbo initialization feature based on one or more bits or capability bits not being set.
[0053] In operation 308, the method may include proceeding to operation 310 based on determining that the storage device 130 does not support the turbo initialization feature. In this case, in operation 310, the method may include performing a normal startup of the storage device 130. For example, the host device 110 performs a normal startup of the storage device 130 by performing a plurality of configuration operations of the startup sequence corresponding to the case where the storage device 130 is first paired with the host device 110 as discussed above. In some embodiments, operation 308 may be combined with operation 306.
[0054] In operation 308, the method may include proceeding to operation 312 based on determining that the storage device 130 supports the turbo initialization feature. In such a case, in operation 312, the method may include determining whether the storage device 130 is connected / paired with the host device 110 for the first time. For example, the host device 110 may determine whether the storage device 130 is connected / paired with the host device 110 for the first time. For example, the host device 110 may use the bus device function to determine whether the storage device 130 is connected / paired with the host device 110 for the first time. The host device 110 typically keeps track of the storage devices 130 that the host has paired with in the past. As an example, to determine whether the storage device 130 is paired with the host device 110 for the first time, the host device 110 may compare the identification information of the storage device 130 (e.g., model number, serial number, firmware version, supported capabilities, but not limited thereto) with the information of the previously paired storage devices, and if there is a match, the host device 110 determines that the storage device 130 has been paired before. It may be noted that the specific techniques for such determination may depend on the storage protocol used, the type of the host device 110, the type of the storage device 130, but not limited thereto.
[0055] In operation 312, the method may include proceeding to operation 314 based on determining that the host device 110 is paired with the storage device 130 for the first time. In such a case, in operation 314, the method may include performing a normal startup of the storage device 130. For example, in response to determining that the host device 110 is paired with the storage device 130 for the first time, the host device 110 may perform a normal startup of the storage device 130 by performing each of a plurality of configuration operations of the startup sequence. Additionally, since the storage device 130 supports turbo initialization, the host device 110 may also command the storage controller 140 to save the configuration data or the result of the execution of one or more of the plurality of configuration operations to the NVM 150 of the storage device 130. For example, the host device 110 may command the storage controller 140 to save the configuration data or the result of the execution of one or more of the plurality of configuration operations that meet specific criteria. For example, the host device 110 may command the storage controller 140 to save the configuration data or the result of the execution of one or more of the plurality of configuration operations that are essentially repetitive and / or executed during each power cycle. For example, the host device 110 may command the storage controller 140 to save the configuration data to a configuration file, which may be stored in the NVM 150 of the storage device 130.
[0056] In addition, in operation 316, the method may include generating a unique identifier or identification and enabling turbo initialization of the storage device 130. For example, the host device 110 may generate a unique identifier or identification and enable turbo initialization of the storage device 130. For example, the host device 110 may use a "set feature" command with a customized feature identification (ID). The unique identifier corresponds to a unique association between the storage device 130 (or the storage controller 140) and the host device 110. In one example, the unique identifier may be generated before, during, or as part of establishing a transmission connection between the host device 110 and the storage controller 140. In another example, the unique identifier may be generated after determining that the storage device 130 supports turbo initialization and optionally before saving configuration data to a configuration file. The unique identifier may be named a memory mapped unique identifier (MMUID), and the MMUID may be uniquely associated with configuration data corresponding to the execution of one or more of a plurality of configuration operations. The MMUID may be associated with the configuration data and stored for future use. For example, the MMUID may be used in the future (e.g., at a time after the MMUID is associated with the configuration data) to obtain or load configuration data corresponding to the execution of one or more of a plurality of configuration operations. The host device 110 may generate the unique identifier based at least on the unique identifier of the storage device 130 and / or the unique identifier of the host device 110. The host device 110 may encode the generated unique identifier and transmit the encoded unique identifier to the storage device 130. In one example, the host device may transmit the generated unique identifier directly to the storage device 130.
[0057] (e.g., when the storage device 130 is paired with the host device 110 for the first time) The unique identifier so established may be referred to as a "preconfigured unique identifier" or a "preconfigured MMUID". After receiving the preconfigured unique identifier, the storage controller 140 may store the preconfigured unique identifier in a configuration register of the storage controller 140 or in the NVM 150 of the storage device 130. However, the disclosure is not limited thereto, and thus, the preconfigured unique identifier may be stored in another location.
[0058] According to an embodiment, during subsequent power cycles (e.g., after a system reset, a system restart, etc.), the method may include repeating operations 302 to 308 for establishing a transmission connection with the storage device 130 and determining whether the storage device 130 supports the turbo initialization feature. For example, the host device 110 performs operations 302 to 308 for establishing a transmission connection with the storage device 130 and determining whether the storage device 130 supports the turbo initialization feature. In operation 312, the method may include proceeding to operation 320 based on determining that the host device 110 is not paired with the storage device 130 for the first time. In such a case, in operation 320, the method may include generating an identifier or MMUID corresponding to the association of the storage device 130 with the host device 110 and transmitting the generated identifier to the storage device 130. For example, when determining that the storage device 130 supports turbo initialization, the host device 110 determines whether the storage device 130 is paired with the host device 110 for the first time. Based on determining that the host device 110 is not paired with the storage device 130 for the first time, the host device 110 may generate a unique identifier or MMUID corresponding to the association of the storage device 130 with the host device 110, and may transmit the generated unique identifier to the storage device 130. Here, the host device 110 not being paired with the storage device 130 for the first time means that the host device 110 was previously paired with the storage device. In one example, the generated unique identifier may be transmitted to the storage device 130 for writing / storing into a configuration register. In one example, the host device 110 may start a timer or a TTI timer within a time period. The time period may be predetermined. In one example, the timer is associated with the expiration of the MMUID generated in operation 320.
[0059] In operation 322, the method may include comparing the generated identifier with a preconfigured identifier. For example, storage device 130 may receive the generated unique identifier and compare the received unique identifier with the preconfigured unique identifier stored in storage device 130. In operation 322, the method may include proceeding to operation 324 based on determining that the received unique identifier matches the preconfigured unique identifier. In such a case, in operation 324, the method may include loading configuration data corresponding to some or all of the configuration operations of the normal startup sequence of storage device 130. For example, in response to determining that the received unique identifier matches the preconfigured unique identifier, storage controller 140 may initiate a reload of the configuration data corresponding to some or all of the configuration operations of the startup sequence in order to reduce the startup time of storage device 130. In other words, host device 110 does not have to perform each of the multiple configuration operations of the startup sequence. For example, configuration operations that are essentially repetitive and whose configuration data is available from a configuration file stored in storage device 130 may not have to be performed. In operation 322, the method may include proceeding to operation 326 based on determining that the received unique identifier does not match the preconfigured unique identifier. In such a case, in operation 326, the method may include setting an error flag. For example, in response to determining that the received unique identifier does not match the preconfigured unique identifier, storage controller 140 may set an error flag in the status register.
[0060] In operation 324, upon successful reloading of the configuration data, storage device 130 may set a success flag in the status register. As an example, setting the status flag may include setting one or more success bits of the status register to "1" to indicate successful reloading of the configuration data. In another example, based on storage controller 140 determining that the received unique identifier does not match the preconfigured unique identifier or when the reloading of the configuration data is not successful, storage controller 140 may set an error flag in the status register. As an example, setting the error flag may include setting one or more error bits defined in the status register to "1" or resetting one or more success bits to "0" to indicate failure of reloading the configuration data.
[0061] In operation 328, the method may include determining whether a TTI or a predetermined time period has expired. For example, the host device 110 determines whether a TTI or a predetermined time period has expired. In the case where the time period has expired, in operation 330, the method may include determining whether the storage device 130 has successfully reloaded configuration data corresponding to one or more configuration operations from a configuration file. For example, when the time period has expired, the host device 110 may read or check the status of a status register to determine whether the storage device 130 has successfully reloaded configuration data corresponding to one or more configuration operations from a configuration file. According to an embodiment, operation 328 may be performed simultaneously with operation 324.
[0062] According to another embodiment, the host device 110 may poll a status register (e.g., when the host device 110 is relatively idle) before a predetermined time period has expired to determine whether the storage device has successfully reloaded configuration data. In the case where a success flag is set, in operation 332, the method may include performing post-initialization operations. For example, when the host device 110 discovers that the success flag is set (e.g., the storage controller 140 has successfully reloaded configuration data), the host device 110 may perform post-initialization operations as defined in the relevant NVMe specification.
[0063] In addition, when the host device 110 discovers that the success flag is not set or an error flag is set (e.g., when the received unique identifier does not match a pre-configured unique identifier, or when the storage controller 140 fails to reload configuration data from a configuration file), the host device 110 may perform a normal startup of the storage device 130 by performing each of a plurality of configuration operations of a startup sequence as defined in Figure 3 operation 310 thereof.
[0064] According to an embodiment, the host device 110 may be configured to disable a turbo initialization feature by resetting the capability bits and / or the TTI bits of a capability register (e.g., by disabling bits in a custom feature ID previously used to enable the turbo initialization feature). When the host device 110 disables the turbo initialization feature, the storage device 130 may be configured to discard or delete a configuration file or configuration data stored in the NVM 150 of the storage device 130. According to an embodiment, the host device 110 may update the configuration data stored in the storage device 130 (e.g., by performing each of a plurality of configuration operations and updating the configuration data stored in the storage device 130 with updated or new configuration data to perform a normal startup of the storage device 130). It may be noted that the disclosed techniques are equally applicable to any type of storage controller (e.g., a physical controller and / or a virtual controller).
[0065] In this manner, the disclosed technology significantly reduces the startup or boot time of the storage device 130 at each reset / power cycle by bypassing some or all of the host-driven configuration operations defined in the startup sequence, and improves the performance of the storage device 130. As an example, the disclosed technology can reduce the startup time of the storage device 130 by more than 99%. Additionally, bypassing such repetitive operations saves bandwidth and computing resources (e.g., processing power) of the host device 110 and the storage device 130, and the saved bandwidth and time can be used to perform other operations (e.g., for servicing read / write requests).
[0066] Furthermore, the disclosure enables the host device 110 and the storage device 130 to coordinate, where the host device 110 is primarily responsible for performing a full configuration (e.g., memory allocation and / or initialization configuration) during the first pairing of the host and the storage device (e.g., during the first power cycle) or whenever any change to the configuration is needed. During subsequent power cycles, the host device 110 can command the storage device 130 to restore the full configuration (e.g., memory allocation and / or initialization configuration) from a saved configuration file. The disclosure is not limited to Figure 3 the order of operations shown in Figure 3 and thus, according to another embodiment, Figure 3 one or more of the operations shown in Figure 3 can be performed in a different order or simultaneously with other operations. Additionally, according to another embodiment,
[0067] Figure 4 FIG. shows a flowchart of a method 400 for reducing the startup time of a storage device 130 according to an embodiment. The method 400 can include one or more operational procedures executable by the storage device 130 (e.g., using the storage controller 140 of the storage device 130 communicatively coupled with the NVM 150).
[0068] Referring to Figure 4 , in operation 402, the method can include receiving an identifier corresponding to the association of the storage device 130 with the host device 110. For example, the method can include: receiving a unique identifier as part of an operation to establish a transmission connection between the storage device 130 and the host device 110. The unique identifier corresponds to the association of the storage device 130 with the host device 110.
[0069] According to an embodiment, the operation of establishing a transmission connection between the storage device 130 and the host device 110 may include determining whether the storage device 130 is paired with the host device 110 for the first time. The method may further include, based on determining that the storage device 130 is paired with the host device 110 for the first time, receiving a unique identifier and saving the execution result of one or more configuration operations defined in the startup sequence to a configuration file. The unique identifier may be pre-configured or pre-determined. The method may further include storing the configuration file and the unique identifier in the memory 150 of the storage device 130. The configuration file and the unique identifier may be stored in association with each other.
[0070] According to an embodiment, one or more configuration operations may include host-based (or host-dependent) configuration operations related to memory allocation and configuration. Such host-based configuration operations may include, but are not limited to, configuring the management queue by setting the administrative queue attribute (AQA), the administrative submission queue base address (ASQ), and the administrative completion queue base address (ACQ) to appropriate values. The configuration operation may further include determining the supported I / O command set by checking the status of the CAP.CSS field and initializing the CC.CSS field. The configuration operation may further include configuring the settings of the storage device controller 140, and the settings of the storage device controller 140 include selecting an arbitration mechanism and initializing the memory page size and enabling the storage device controller 140.
[0071] The configuration operation may further include using the set feature command to determine the number of supported I / O submission queues and I / O completion queues and configuring one or more transport-specific interrupt registers including MSI and / or MSI-X registers. The configuration operation may further include: allocating an appropriate number of I / O completion queues based on the number required by the system configuration and the number supported by the storage device controller 140, and allocating an appropriate number of I / O submission queues based on the number required by the system configuration and the number supported by the storage device controller 140.
[0072] In operation 404, the method may include determining whether the received unique identifier matches a pre-configured unique identifier. In operation 406, the method may include, based on determining that the received unique identifier matches the pre-configured unique identifier, reloading the configuration data corresponding to one or more configuration operations defined in the startup sequence from the configuration file stored in the memory 150 of the storage device 130. The startup sequence may include a plurality of configuration operations defined for starting the storage device. Therefore, the startup time of the storage device may be reduced.
[0073] According to an embodiment, the method may further include setting an error flag in a status register of the storage device 130 based on determining that the received unique identifier does not match a preconfigured unique identifier. The error flag may provide an indication to the host device 110 to perform each of a plurality of configuration operations for initiating a startup sequence of the storage device 130.
[0074] According to another embodiment, the method may further include determining whether a reload of configuration data corresponding to one or more configuration operations is successful, and in response to determining that the reload of configuration data from a configuration file is successful, setting a success flag in a status register of the storage device 130. The method may further include setting an error flag in a status register of the storage device 130 in response to determining that the reload of configuration data from the configuration file is not successful. The error flag may provide an indication to the host device 110 to perform each of a plurality of configuration operations for initiating a startup sequence of the storage device 130.
[0075] According to an embodiment, the method may further include setting one or more bits in a capabilities register of the storage device 130 to indicate that the storage device 130 is configured to reload configuration data from a configuration file (e.g., the storage device 130 is configured to support turbo initialization).
[0076] According to an embodiment, the storage device 130 may include a solid-state drive (SSD) storage device, and the SSD storage device may be configured to communicate with the host device 110 using a Non-Volatile Memory Express (NVMe) interface.
[0077] Figure 5 A method for reducing a startup time of a storage device 130 according to another embodiment is shown. The method may include different operations performed by the host device 110 (specifically, using a host controller 210 of the host device 110).
[0078] In operation 502, the method may include establishing a transmission connection between the storage device 130 and the host device 110 and reading a capabilities register of the storage device 130 to determine whether the storage device 130 supports fast startup.
[0079] In operation 504, the method may include generating a unique identifier corresponding to an association between the storage device 130 and the host device 110 based on determining that the storage device 130 supports fast startup and transmitting the generated unique identifier to the storage device 130.
[0080] In operation 506, the method may include reading a status register of the storage device 130 when a predetermined time period (e.g., a timer) expires to determine whether the storage device 130 has reloaded configuration data corresponding to one or more configuration operations defined in a startup sequence to reduce the startup time. The startup sequence includes a plurality of configuration operations defined for initiating the storage device 130.
[0081] According to another embodiment, the method may further include determining whether the host device 110 is paired with the storage device 130 for the first time, and based on determining that the host device 110 is paired with the storage device 130 for the first time, the method may further include generating an additional unique identifier (also referred to as a "pre-configured unique identifier") corresponding to the initial association of the storage device 130 with the host device 110, transmitting the additional unique identifier to the storage device 130 to configure the storage device 130, performing each of a plurality of configuration operations of a startup sequence to start the storage device 130, and commanding the storage device 130 to save the execution results of one or more configuration operations defined in the startup sequence to a configuration file.
[0082] According to another embodiment, the method may further include performing a normal startup of the storage device 130 by performing each of a plurality of configuration operations of a startup sequence for starting the storage device 130 in response to determining that the storage device 130 does not support fast startup, an error flag is set in the status register of the storage device 130, or reloading of configuration data corresponding to one or more configuration operations is unsuccessful.
[0083] The operation of methods 400 and 500 may be described in the general context of computer-executable instructions. Generally, computer-executable instructions may include routines, programs, objects, components, data structures, procedures, modules, and functions that perform particular functions or implement particular abstract data types.
[0084] The order of the various operations describing the operation is not intended to be construed as a limitation, and any number of the described operation blocks may be combined in any order to implement the operation. Additionally, individual blocks may be deleted from the operation without departing from the spirit and scope of the subject matter described herein. Further, the operation may be implemented in any suitable hardware, software, firmware, or combination thereof.
[0085] The above operation may be performed by any suitable device or apparatus capable of performing the corresponding operations. The device or apparatus may include various hardware, software, or combinations thereof, and / or Figure 1 and Figure 2 the components shown in. It may be noted here that the subject matter of some or all of the embodiments described with reference to Figures 1 to 3 may be related to the operation of methods 400 and 500, and for the sake of brevity, the subject matter of some or all of the embodiments described with reference to Figures 1 to 3 is not repeated. Additionally, the disclosure has been explained by treating the storage device as an NVMe SSD. However, it may be noted that the teachings of the disclosure are equally applicable to other types of storage devices.
[0086] In accordance with the disclosed embodiments, one or more non-transitory computer-readable media may be utilized to implement embodiments consistent with the disclosure. Particular aspects may include a computer program product for performing the operations given herein. For example, such a computer program product may include a computer-readable medium having instructions stored (and / or encoded) thereon that may be executed by one or more processors to perform the operations described herein. For particular aspects, the computer program product may include packaging material.
[0087] In the present disclosure, various components, modules, or units are described to emphasize functional aspects of apparatuses configured to perform the techniques and methods illustrated in accordance with various embodiments of the disclosure. However, the various components, modules, or units do not necessarily need to be implemented by distinct hardware units. Instead, according to various embodiments, one or more components, modules, or units may be combined in a hardware unit, or provided by a collection of interoperating hardware units (including one or more processors as described above) in conjunction with suitable software and / or firmware.
Claims
1. A method for starting a storage device, comprising: Receiving first identification information as part of a process for establishing a transmission connection between the storage device and a host device, the first identification information corresponding to an association between the storage device and the host device; Determining whether the first identification information matches second identification information stored in a memory of the storage device; And Based on the first identification information matching the second identification information, loading configuration data from a configuration file associated with the second identification information stored in the memory of the storage device, the configuration data corresponding to one or more configuration operations related to a startup sequence, Wherein the startup sequence includes a plurality of configuration operations for starting the storage device.
2. The method according to claim 1, wherein The step of establishing a transmission connection between the storage device and the host device includes: Determining whether the storage device is paired with the host device for the first time; Based on determining that the storage device is paired with the host device for the first time, receiving second identification information and saving an execution result of the one or more configuration operations related to the startup sequence to the configuration file; and Storing the configuration file and the second identification information in the memory of the storage device.
3. The method according to claim 2, wherein The one or more configuration operations include host-based configuration operations related to memory allocation, wherein the host-based configuration operations include one or more of the following: Configuring a management queue by setting values of a management queue attribute AQA, a management submission queue base address ASQ, and a management completion queue base address ACQ; Determining a supported input-output I / O command set by checking a status of a controller capabilities - command set support CAP.CSS field and initializing a controller configuration - command set support CC.CSS field; Configuring settings of a storage device controller, the settings of the storage device controller including selecting an arbitration mechanism and initializing a memory page size; Enabling the storage device controller; Determining the number of supported I / O submission queues and I / O completion queues using a set feature command, and configuring one or more transmission-specific interrupt registers including a message-signaled interrupt MSI register and / or an extended message-signaled interrupt MSI-X register; Allocating the number of I / O completion queues based on a number required by a system configuration and a number supported by the storage device controller; and Allocating the number of I / O submission queues based on a number required by a system configuration and a number supported by the storage device controller.
4. The method according to claim 1, further comprising: Based on determining that the first identification information does not match the second identification information, setting an error flag in a status register of the storage device, Wherein the error flag notifies the host device to execute each of the plurality of configuration operations of the startup sequence for starting the storage device.
5. The method according to claim 1, further comprising: Determining whether loading of the configuration data corresponding to the one or more configuration operations is successful; Based on determining that loading of the configuration data from the configuration file is successful, setting a success flag in a status register of the storage device; And Based on determining that loading of the configuration data from the configuration file is not successful, setting an error flag in a status register of the storage device. Wherein, the error flag notifies the host device to perform each of the plurality of configuration operations for starting the startup sequence of the storage device.
6. The method according to claim 1, further comprising: Setting one or more bits into a capability register of the storage device to indicate that the storage device is configured to load configuration data from a configuration file.
7. The method according to any one of claims 1 to 6, wherein The storage device includes a solid state drive, and wherein the solid state drive is configured to communicate with the host device using a Non-Volatile Memory Express (NVMe) interface.
8. A storage device, comprising: A memory; And A controller communicatively coupled with the memory and configured to: Receive first identification information corresponding to an association between the storage device and the host device as part of a process for establishing a transmission connection between the storage device and the host device; Determine whether the first identification information matches second identification information stored in the memory of the storage device; And Based on the first identification information matching the second identification information, load configuration data from a configuration file associated with the second identification information stored in the memory of the storage device, the configuration data corresponding to one or more configuration operations related to a startup sequence, Wherein the startup sequence includes a plurality of configuration operations for starting the storage device.
9. The storage device according to claim 8, wherein, The controller is further configured to: Determine whether the storage device is paired with the host device for the first time; Based on determining that the storage device is paired with the host device for the first time, receive second identification information and save execution results of the one or more configuration operations related to the startup sequence into a configuration file; And Store the configuration file and the second identification information into the memory of the storage device.
10. The storage device according to claim 9, wherein, The one or more configuration operations include host-based configuration operations related to memory allocation, wherein the host-based configuration operations include one or more of the following: Configuring a management queue by setting values of an administrative queue attribute (AQA), an administrative submission queue base address (ASQ), and an administrative completion queue base address (ACQ); Determining a supported input / output (I / O) command set by checking a status of a controller capabilities - command set support (CAP.CSS) field and initializing a controller configuration - command set support (CC.CSS) field; Configuring settings of a storage device controller, the settings of the storage device controller including selecting an arbitration mechanism and initializing a memory page size; Enabling the storage device controller; Determining the number of supported I / O submission queues and I / O completion queues using a set feature command, and configuring one or more transmission-specific interrupt registers including a message signaled interrupt (MSI) register and / or an extended message signaled interrupt (MSI-X) register; Allocating the number of I / O completion queues based on a quantity required by system configuration and a quantity supported by the storage device controller; and Allocating the number of I / O submission queues based on a quantity required by system configuration and a quantity supported by the storage device controller.
11. The storage device according to claim 8, wherein, The controller is further configured to: Based on determining that the first identification information does not match the second identification information, set an error flag in a status register of the storage device, Wherein, the error flag notifies the host device to execute each of the multiple configuration operations for starting the startup sequence of the storage device.
12. The storage device according to claim 8, wherein, The controller is further configured to: Determine whether the loading of the configuration data corresponding to the one or more configuration operations is successful; Based on determining that the loading of the configuration data from the configuration file is successful, set a success flag in the status register of the storage device; And Based on determining that the loading of the configuration data from the configuration file is not successful, set an error flag in the status register of the storage device, Wherein, the error flag notifies the host device to execute each of the multiple configuration operations for starting the startup sequence of the storage device.
13. The storage device according to claim 8, wherein, The controller is further configured to: Set one or more bits into the capability register of the storage device to indicate that the storage device is configured to load configuration data from a configuration file.
14. The storage device according to any one of claims 8 to 13, wherein, The storage device includes a solid state drive, and wherein the solid state drive is configured to communicate with the host device using the Non-Volatile Memory Express (NVMe) interface.
15. A method for starting a storage device, comprising: Establishing a transmission connection between the storage device and the host device; Reading the capability register of the storage device to determine whether the storage device supports fast startup; Based on determining that the storage device supports fast startup, generating first identification information corresponding to the association between the storage device and the host device, and transmitting the first identification information to the storage device; And When the timer expires, reading the status register of the storage device to determine whether the storage device has loaded configuration data from a configuration file related to the first identification information, and the configuration data corresponds to one or more configuration operations related to the startup sequence, Wherein, the startup sequence includes multiple configuration operations for starting the storage device.
16. The method according to claim 15, further comprising: Determining whether the host device is paired with the storage device for the first time; And Based on determining that the host device is paired with the storage device for the first time: Generating second identification information corresponding to the initial association between the storage device and the host device, and transmitting the second identification information to the storage device; And Executing each of the multiple configuration operations for the startup sequence of starting the storage device, and commanding the storage device to save the execution results of the one or more configuration operations related to the startup sequence to a configuration file.
17. The method according to claim 15 or 16, further comprising: Performing a normal startup of the storage device by executing each of the multiple configuration operations for the startup sequence of starting the storage device based on one of the following: Determining that the storage device does not support fast startup; Determining that the error flag is set in the status register of the storage device; And Determining that the loading of the configuration data corresponding to the one or more configuration operations is not successful.
18. A host device for starting a storage device, the host device comprising: A memory; And At least one controller communicatively coupled with the memory and configured to: Establish a transmission connection between the storage device and the host device; Read the capability register of the storage device to determine whether the storage device supports fast startup; Based on determining that the storage device supports fast startup, generate first identification information corresponding to the association between the storage device and the host device, and transmit the first identification information to the storage device; And When the timer expires, read the status register of the storage device to determine whether the storage device has loaded configuration data from a configuration file associated with the first identification information, where the configuration data corresponds to one or more configuration operations related to the startup sequence, wherein the startup sequence includes a plurality of configuration operations for starting the storage device.
19. The host device according to claim 18, wherein, The at least one controller is further configured to: Determine whether the host device is paired with the storage device for the first time; and Based on determining that the host device is paired with the storage device for the first time: Generate second identification information corresponding to the initial association between the storage device and the host device, and transmit the second identification information to the storage device; And Execute each of the plurality of configuration operations of the startup sequence for starting the storage device, and command the storage device to save the execution results of the one or more configuration operations related to the startup sequence to a configuration file.
20. The host device according to claim 18 or 19, wherein The at least one controller is further configured to: Execute the normal startup of the storage device by executing each of the plurality of configuration operations of the startup sequence for starting the storage device based on one of the following: Determine that the storage device does not support fast startup; Determine that an error flag is set in the status register of the storage device; And Determine that the loading of the configuration data corresponding to the one or more configuration operations is unsuccessful.