System and method for configuring a data storage device
By receiving host and client information, the data storage device adjusts its configuration to adapt to different host systems, solving the problem of poor performance of the device on different host systems and achieving more optimized operation.
Patent Information
- Application Number
- CN202080079727.7
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-06-10
- Filing Date
- 2020-12-18
- Publication Date
- 2026-01-20
- Estimated Expiration
- 2040-12-18
AI Technical Summary
Existing data storage devices are difficult to adaptively adjust their configurations to achieve optimal performance when used on different host systems, resulting in suboptimal performance or malfunction.
Data storage devices receive host system and client information and adjust their local operating parameters and custom functions to match the needs of the host system.
It enables optimized operation of data storage devices across different host systems, improving stability, performance, and interoperability.
Smart Images

Figure CN114730284B_ABST
Abstract
Description
[0001] Cross Reference to Related Applications
[0002] This application claims priority to U.S. Application No. 16 / 898,119, filed June 10, 2020, which is incorporated by reference herein in its entirety. BACKGROUND TECHNICAL FIELD
[0004] Embodiments of the present disclosure relate generally to a data storage device, and more specifically to configuration of a data storage device.
[0005] Description of the Related Art
[0006] In manufacturing data storage devices, each device is provided with a default configuration. To prepare a device for sale to a particular customer, the device is typically configured for the needs of that customer, depending on the host system that the customer (i.e., an OEM customer) sells, or for a general configuration in the case of a retail customer. The configuration can include two types of configuration, a ‘quirk item’ configuration that adjusts local operating parameters of the storage device relative to the host computer system in which the storage device is installed, and a ‘role’ configuration that configures the device for additional functionality beyond the local operating parameters. The role configuration can include custom functionality that is typically associated with a particular OEM customer, such as using op-codes in a particular manner, power loss notification, QoS requirements, non-standard thermal thresholds for the device, timeout values, etc.
[0007] While many storage device manufacturers provide these configurations on the storage devices that they sell to customers, problems can arise when such devices are used on different hosts, or moved to a different OEM customer’s host system. In previous approaches, the storage device is used in a different host, or with a different customer, than it was originally intended for, and the quirk items and role configurations do not match well to the host system. This results in sub-optimal performance, or in some cases, the storage device does not work in the new host system.
[0008] What is needed are systems and methods by which a data storage device can obtain information about the host system in which it is installed, and the customer associated with that host system, so that it can self-configure for operation in that host. SUMMARY
[0009] The present disclosure relates generally to systems and methods by which a data storage device can receive data about the host system in which it is installed, and the customer associated with that system. Based on the received data, the data storage device can modify its local operating parameters and custom functionality to achieve more optimized operation with the host system.
[0010] In one embodiment, a data storage device includes a controller including data storage device operating parameters configured to configure local functionality of the data storage device, where the controller is configured to receive a host identifier from a host. The data storage device also includes a database including a plurality of host identifier data elements and a plurality of device configuration data elements, where each of the plurality of device configuration data elements corresponds to a respective one of the plurality of host identifier data elements. The controller is further configured to obtain the host identifier from the host, match the host identifier to one of the plurality of host identifier data elements, and write a corresponding one of the plurality of device configuration data elements to the data storage device operating parameters.
[0011] In another embodiment, a data storage device includes a controller including a custom configuration memory configured to configure non-local functionality of the data storage device, where the controller is configured to receive a customer identifier from a host. The data storage device also includes a database including a plurality of customer identifier data elements and a plurality of custom configuration data elements defining non-local functionality of the data storage device, where each of the plurality of custom configuration data elements corresponds to a respective one of the plurality of customer identifier data elements. The controller is further configured to obtain the customer identifier from the host, match the customer identifier to one of the plurality of customer identifier data elements, and write a corresponding one of the plurality of non-local configuration data elements to the custom configuration memory.
[0012] In another embodiment, a data storage device includes a database including a plurality of host identifier data elements, a plurality of customer identifier data elements, a plurality of custom configuration data elements, and a plurality of operating parameter configuration data elements, each of the plurality of custom configuration data elements corresponding to a respective one of the plurality of customer identifier data elements, each of the plurality of operating parameter data elements corresponding to a respective one of the plurality of host identifier data elements. The data storage device also includes means for receiving a customer identifier from a host, means for matching the customer identifier to one of the plurality of customer identifier data elements, and means for modifying a controller of the data storage device based on a custom configuration data element corresponding to the one of the plurality of customer identifier data elements. BRIEF DESCRIPTION OF DRAWINGS
[0013] So that the manner in which the above recited features of the present disclosure can be understood in detail, a more particular description of the disclosure, briefly summarized above, can be had by reference to embodiments, some of which are illustrated in the appended drawings. It is to be noted, however, that the appended drawings illustrate only typical embodiments of this disclosure and are therefore not to be considered limiting of its scope, for the disclosure can admit to other equally effective embodiments.
[0014] Figure 1 is a schematic diagram of a computing system including a host device and a storage device according to the disclosed embodiments of the present application.
[0015] Figure 2 is a schematic diagram of a data storage device according to the disclosed embodiments of the present application.
[0016] Figure 3 shows a host block diagram according to the disclosed embodiments of the present application.
[0017] Figure 4 shows a flowchart for modifying / customizing a storage device according to the disclosed embodiments of the present application.
[0018] Figure 5 shows a flowchart for configuring a storage device according to the disclosed embodiments of the present application.
[0019] Figure 6 shows a method for configuring a storage device according to the disclosed embodiments of the present application.
[0020] To facilitate the understanding of this description, like reference numerals have been used, where possible, to designate identical elements that are common to the figures. It is contemplated that elements disclosed in one embodiment can be advantageously used in other embodiments without specific recitation. DETAILED DESCRIPTION
[0021] Hereinafter, reference is made to the embodiments of the present disclosure. However, it is understood that the present disclosure is not limited to the embodiments specifically described. Rather, any combination of the following features and elements, whether related to a different embodiment from those mentioned or unrelated, is contemplated to realize and practice the present disclosure. Additionally, although the embodiments of the present disclosure can achieve advantages over other possible solutions and / or over the prior art, whether or not a particular advantage is achieved by a given embodiment is not a limitation of the present disclosure. Thus, the following aspects, features, embodiments and advantages are merely illustrative and are not to be considered elements or limitations of the appended claims unless explicitly recited therein. Likewise, reference to "the present disclosure" shall not be construed as being a summary of any inventive subject matter disclosed herein and shall not be considered as an element or limitation of the appended claims unless explicitly recited therein.
[0022] The present disclosure generally relates to systems and methods by which a data storage device can receive data about a host system installed therein and a customer associated with the system. Based on the received data, the data storage device can modify its local operating parameters and custom functions to enable more optimized operation with the host system.
[0023] Figure 1 is a schematic block diagram illustrating a storage system 100 in which a data storage device 106 can be used as a storage device for a host device 104, in accordance with one or more techniques of the present disclosure. For example, the host device 104 can utilize a non-volatile memory device 110 included in the data storage device 106 to store and retrieve data. The host device 104 includes a host DRAM 138. In some examples, the storage system 100 can include multiple storage devices, such as the data storage device 106, which can operate as a storage array. For example, the storage system 100 can include multiple data storage devices 106 configured to collectively operate as a redundant array of inexpensive / independent disks (RAID) for a mass storage device of the host device 104.
[0024] The host device 104 can include any of a variety of devices, including a computer server, a network-attached storage (NAS) unit, a desktop computer, a notebook (i.e., laptop) computer, a tablet computer, a set-top box, a handheld phone such as a so-called "smart" phone, a so-called "smart" tablet, a television, a camera, a display device, a digital media player, a video gaming console, a video streaming device, etc.
[0025] The data storage device 106 includes a controller 108, a non-volatile memory (NVM) 110, a power supply 111, a volatile memory 112, an interface 114, and a buffer 116. The controller 108 includes an internal memory or buffer 116. In some examples, for clarity, the data storage device 106 can include Figure 1Additional components not shown. For example, the data storage device 106 can include a printed board (PB) to which components of the data storage device 106 are mechanically attached and which includes conductive traces to electrically interconnect the components of the data storage device 106, etc. In some examples, the physical size and connector configuration of the data storage device 106 can conform to one or more standard form factors. Some example standard form factors include, but are not limited to, 3.5" data storage devices (e.g., HDDs or SSDs), 2.5" data storage devices, 1.8" data storage devices, peripheral component interconnect (PCI), PCI extended (PCI-X), PCI express (PCIe) (e.g., PCIe xl, x4, x8, x16, PCIe Mini card, MiniPCI, etc.). In some examples, the data storage device 106 can be directly coupled (e.g., directly soldered) to a motherboard of the host device 104.
[0026] The interface 114 of the data storage device 106 can include one or both of a data bus for exchanging data with the host device 104 and a control bus for exchanging commands with the host device 104. The interface 114 can operate according to any suitable protocol. For example, the interface 114 can operate according to one or more of the following protocols: advanced technology attachment (ATA) (e.g., serial ATA (SATA) and parallel ATA (PATA)), fiber channel protocol (FCP), small computer system interface (SCSI), serial attached SCSI (SAS), PCI and PCIe, non-volatile memory express (NVMe), OpenCAPI, GenZ, cache coherent interface accelerator (CCIX), open channel SSD (OCSSD), etc.
[0027] The electrical connections of interface 114 (e.g., a data bus, a control bus, or both) are electrically connected to controller 108, providing an electrical connection between host device 104 and controller 108, allowing data to be exchanged between host device 104 and controller 108. Interface 114 can be a type of connection unit to transfer data from host device 104 to data storage device 106, and vice versa. Such connection units can be a USB-A connection, a USB-B connection, a mini USB-A connection, a mini USB-B connection, a micro USB-A connection, a micro USB-B connection, a USB-C connection, or a lightning connection. Connection units can include several pins with specialized uses. Further, connection units are used for various purposes, such as isochronous transfer, interrupt transfer, and bulk transfer. The term “bulk transfer” refers to a large burst transfer using all remaining available bandwidth, but without bandwidth or latency guarantees. Bulk transfer is used when transferring files or data over a connection medium, such as a USB cable. However, other methods of transferring data are available, and the use of the term “USB cable” is not intended to be limiting.
[0028] For example, a USB-A connection has 4 pins. Each pin is used for a specific purpose, such as a power supply voltage pin, a data (-) pin, a data (+) pin, and a power supply voltage ground pin. Other connection units can have more or less than 4 pins, and each pin can have a different use. In some examples, the electrical connections of interface 114 can also allow data storage device 106 to receive power from host device 104. For example, as shown in FIG. 1, power supply 111 can receive power from host device 104 via interface 114. Figure 1
[0029] Data storage device 106 includes NVM 110, which can include a plurality of memory devices or memory units. NVM 110 can be configured to store and / or retrieve data. For example, a memory unit of NVM 110 can receive data and receive a message from controller 108 instructing the memory unit to store the data. Similarly, a memory unit of NVM 110 can receive a message from controller 108 instructing the memory unit to retrieve data. In some examples, each of the memory units can be referred to as a die. In some examples, a single physical chip can include multiple dies (i.e., multiple memory units). In some examples, each memory unit can be configured to store a relatively large amount of data (e.g., 128 MB, 256 MB, 512 MB, 1 GB, 2 GB, 4 GB, 8 GB, 16 GB, 32 GB, 64 GB, 128 GB, 256 GB, 512 GB, 1 TB, etc.).
[0030] In some examples, each memory cell of NVM 110 can include any type of non-volatile memory device, such as a flash memory device, a phase change memory (PCM) device, a resistive random access memory (ReRAM) device, a magnetoresistive random access memory (MRAM) device, a ferroelectric random access memory (F-RAM), a holographic memory device, and any other type of non-volatile memory device.
[0031] NVM 110 can include a plurality of flash memory devices or memory cells. A flash memory device can include a NAND or NOR based flash memory device and can store data based on charge contained in a floating gate of a transistor for each flash memory cell. In a NAND flash memory device, the flash memory device can be divided into a plurality of blocks, which can be divided into a plurality of pages. Each block of the plurality of blocks within a particular memory device can include a plurality of NAND cells. Rows of NAND cells can be electrically connected using a word line to define a page of the plurality of pages. Respective cells in each page of the plurality of pages can be electrically connected to a respective bit line. Further, a NAND flash memory device can be a 2D or 3D device and can be a single-level cell (SLC), a multi-level cell (MLC), a triple-level cell (TLC), or a quad-level cell (QLC). Controller 108 can write data to and read data from a NAND flash memory device at a page level and erase data from a NAND flash memory device at a block level.
[0032] Data storage device 106 includes a power source 111, which can provide power to one or more components of data storage device 106. When operating in a standard mode, power source 111 can power the one or more components using power provided by an external device, such as host device 104. For example, power source 111 can power the one or more components using power received from host device 104 via interface 114. In some examples, power source 111 can include one or more power storage components configured to power the one or more components when operating in an off mode, such as in the event that power is stopped being received from an external device. In this way, power source 111 can act as an on-board backup power source. Some examples of the one or more power storage components include, but are not limited to, a capacitor, a supercapacitor, a battery, and the like. In some examples, the amount of power that can be stored by the one or more power storage components can be a function of the cost and / or size (e.g., area / volume) of the one or more power storage components. In other words, as the amount of power stored by the one or more power storage components increases, the cost and / or size of the one or more power storage components also increases.
[0033] Data storage device 106 also includes volatile memory 112, which can be used by controller 108 to store information. Volatile memory 112 may include one or more volatile memory devices. In some examples, controller 108 may use volatile memory 112 as a cache. For example, controller 108 may store cached information in volatile memory 112 until the cached information is written to non-volatile memory 110. Figure 1 As shown, volatile memory 112 can consume power received from power supply 111. Examples of volatile memory 112 include, but are not limited to, random access memory (RAM), dynamic random access memory (DRAM), static RAM (SRAM), and synchronous dynamic RAM (SDRAM (e.g., DDR1, DDR2, DDR3, DDR3L, LPDDR3, DDR4, LPDDR4, etc.)).
[0034] Data storage device 106 includes a controller 108 that can manage one or more operations of data storage device 106. For example, controller 108 can manage reading data from NVM 110 and / or writing data to NVM. In some embodiments, when data storage device 106 receives a write command from host device 104, controller 108 can initiate a data storage command to store data in NVM 110 and monitor the progress of the data storage command. Controller 108 can determine at least one operational characteristic of storage system 100 and store at least one operational characteristic in NVM 110. In some embodiments, when data storage device 106 receives a write command from host device 104, controller 108 temporarily stores the data associated with the write command in internal memory before sending the data to NVM 110.
[0035] Figure 2 This is a schematic diagram of a data storage device 208 according to one embodiment. The data storage device 208 includes an interface 202 and a power distribution unit (PAU) 204. The interface 202 may be... Figure 1 Interface 114. Data storage device 208 also includes an array of memory devices 206A to 206N (collectively referred to as memory devices 206). The symbol "N" refers to the last memory device among a plurality of memory devices. Furthermore, memory device 206 may be... Figure 1non-volatile memory 110 or NVMe storage device. Each of the memory devices 206A-206N can be configured to store a relatively large amount of data (e.g., 128 MB, 256 MB, 512 MB, 1 GB, 2 GB, 4 GB, 8 GB, 16 GB, 32 GB, 64 GB, 128 GB, 256 GB, 512 GB, 1 TB, etc.). However, the data storage sizes of the listed memory devices are not intended to be limiting nor intended to be restrictive. Further, in one embodiment, the memory devices 206A-206N are the same type and have the same data storage size. In another embodiment, the memory devices 206A-206N are different types but have the same data storage size. In yet another embodiment, the memory devices 206A-206N are different types and have different data storage sizes.
[0036] The power allocation unit 204 can be coupled with a controller (not shown), such as the controller 108 of Figure 1 The PAU 204 allocates power received from a host device, such as the host device 104 of Figure 1 to each of the memory devices 206. The controller 108 can determine the appropriate power state for each memory device 206A-206N, and the PAU 204 provides the corresponding power to each memory device 206A-206N.
[0037] The host device 104 can provide an appropriate amount of power to the data storage device 208 through one or more pins on the interface 202. The appropriate amount of power can be greater than or equal to the amount of power required for the data storage device 208 to operate. For example, the data storage device 208 can receive about 5 W of power from the host device 104. Further, the data storage device 208 can draw about 500 mW to about 15 W of power from the host device 104. The previously mentioned power values are not intended to be limiting, but rather to provide a reference.
[0038] The memory devices 206A-206N can have several power states (PS). For example, the memory devices 206A-206N can have the following 5 power states: PS0, PS1, PS2, PS3, and PS4. Each of the power states is associated with a different data storage device 208 operation. The power states PS0, PS1, and PS2 are considered operational power states, using about 1 W to about 8 W of power, while the power states PS3 and PS4 are considered non-operational power states, using about 2 mW to about 50 mW of power. An operational power state refers to the ability of a host device, such as the host device 104 of Figure 1 to communicate with the memory devices 206A-206N of the data storage device 208.
[0039] Power states are sequentially numbered, with higher numbers representing lower power requirements and corresponding higher exit latencies. Further, each power state has an associated power requirement and exit latency. PS0 can require 4.5 W and have the lowest exit latency. PS1 can require less power than PS0, such as 3 W, and can have an exit latency equal to or higher than the exit latency of PS0. PS2 can require less power than PS1 and can have an exit latency equal to or higher than the exit latency of PS1. PS3 can require less power than PS2 and can have an exit latency equal to or higher than the exit latency of PS2. PS4 can require less power than PS3, such as 5 mW, and can have an exit latency equal to or higher than the exit latency of PS3, such as 50 mW. The values of power states and exit latencies are not intended to be limiting, but to provide examples of possible implementations.
[0040] PS0 is referred to as a fully operational state, where I / O commands are enabled and the device can generate interrupts. Interrupts in this context are signals to the host that a command has completed. Further, power states PS1, PS2, PS3, and PS4 are considered low power states. Power states PS1 and PS2 are also operational states, however, PS1 and PS2 can have less functionality than the functionality of PS0. Power states PS3 and PS4 are non-operational states, having less power requirements than the power requirements of the operational power states. Further, unused memory devices 206 are placed in the non-operational power state PS4 to limit idle power consumption to a minimum.
[0041] To have an I / O command occur, memory devices 206A-206N are woken up and placed in power state PS0. A controller, such as controller 108 of Figure 1 uses PAU 204 to change the power state of memory devices 206A-206N from PS0 to a different power state (depending on the situation and host command). However, when a fully operational state is needed, controller 108 is able to use PAU 204 to allocate the appropriate amount of power to place all power states PS1, PS2, PS3, and PS4 into power state PS0.
[0042] Figure 3 A system block diagram 300 is shown in accordance with the disclosed implementations. System block diagram 300 includes a host 302 and a controller 304 of a storage device, such as storage device 106 of Figure 1 . Host 302 can be connected to the interface of the storage device via a connection unit, such as connection unit 110 of Figure 1The interface 114 is connected to the host 302 via a connection unit 312. The connection unit facilitates data transfer (such as read or write commands) and / or power transfer between the host 302 and the storage device. The controller 304 receives data from the host 302 and provides system processing power to fulfill host requests.
[0043] When the host 302 is connected to the storage device via the connection unit, the host identification signal 308 and the customer identification signal 310 are sent to the controller 304. In embodiments, the customer identification signal can be one or more of a manufacturer name, an asset tag, a host serial number or model number, or a vendor-defined unique value that identifies the customer. The storage device can be connected to different hosts, such that the controller 304 assigns a host ID to each individual host. For example, the host ID A can be assigned by the controller 304 to the host 302 of the system block diagram 300. If the storage device is disconnected from the host 302 and connected to a second host, the controller 304 can assign the host ID B to the second host. The controller 304 recognizes each previous connection and associates each host with its respective host ID. However, if a connection is made between a new host (e.g., no previous connection between the host and the storage device), the controller 304 assigns a new host ID (e.g., a host ID that has not been assigned) to the new host. Further, when the controller 304 receives the customer identification signal 310, the controller 304 is able to determine the customer specification for the controller internal parameter configuration. In one embodiment, the one or more hosts are associated with one customer. In another embodiment, the one or more hosts are each associated with one or more customers. In yet another embodiment, any number of the one or more hosts are each associated with one or more customers.
[0044] The controller 304 includes a database 306, where the database 306 includes a configuration table. The configuration table includes each host ID and the host parameters associated with each host ID. The following host parameters represent examples of host parameters. The host parameters listed in the following host parameter table are not intended to be limiting, but provide examples of possible embodiments.
[0045] Host Parameter Table
[0046]
[0047] When the host 302 is connected to the storage device via the connection unit, the controller 304 accesses the database 306 to access the relevant data associated with the host. An example of the configuration table of the database 306 is shown in the following configuration table. The configuration table can include portions of the host parameter table discussed above as well as other applicable options. Further, the configuration table can have any number of columns, where the order of the columns (e.g., parameters) can be different in other embodiments.
[0048] Configuration Table
[0049] Host ID PCIe TO L0-L1 THR Thermal THR … … A 5mS 100μS … … … B 10mS 400μS … … … … … … … … …
[0050] In embodiments, the configuration table can include the above indicated parameters and / or any one or more of: vendor unique opcodes, maximum power in PS0, vendor unique log codes, enablement of optional PCIe features, critical temperature, shutdown temperature, NVMe command timeout, and / or host memory buffer size (e.g., maximum size).
[0051] In Figure 3 When the host 302 has established a link with the storage device, the controller 304 obtains the relevant entry associated with the host ID A from the database 306. After obtaining the relevant entry, the controller 304 determines the customer-based configuration 312 and the host-based configuration 314 based on the parameters listed for the host 302. The customer-based configuration 312 and the host-based configuration 314 can include one or more quirks, where each quirk is a workaround to address a known issue in a particular environment. The combination of one or more quirks can be unique to a particular host, such as the host 302. The controller configuration that accommodates the quirks can be a particular setting that is local to the device.
[0052] For example, a customer device (e.g., host) can require that a particular NVMe identification field be empty in the controller response to an identifying controller command, as the field is expected to remain empty in that host environment. In another example, security functionality of the storage device is intentionally disabled when attached to a particular customer device. In the description herein, the customer device is referred to as the host for exemplary purposes, such that the host is the host 302 of the system block diagram 300.
[0053] Unlike quirks, role configurations are non-local functions or custom functions of the device, such as additional add-in features. Examples of role configurations can include various features, such as an optional PCIe power loss notification feature, an optional NVMe log page, QoS (performance and tradeoff), thermal thresholds, timeout values, low power timing, custom configurations, and possible workarounds. The listed features are not intended to be limiting, but rather provide examples of embodiments. Other features not listed are contemplated to be applicable to role configurations. The above listed features can be specific to one or more hosts.
[0054] The internal parameters of the controller 304 are configured based on the quirks and the role configurations. The customer-based configuration 312 is a controller configuration specified by the customer, and the host-based configuration 314 is a controller configuration unique to the host device, where the host-based configuration 314 includes parameters that satisfy the requirements of the customer-based configuration 312.
[0055] Figure 4 A flowchart 400 for modifying / customizing a storage device according to the disclosed embodiments of the present application is shown. The storage device can be Figure 1 the storage device 106 and / or Figure 2 the storage device 208. At block 402, the storage device is unconfigured such that a configuration table of a database, such as the database 306, does not have any entries. In one embodiment, the configuration table is empty. In another embodiment, the configuration table includes entries; however, the entries are for non-relevant configurations. At block 404, the controller of the storage device, such as the controller 304, configures using a generic role configuration or a local role configuration. Figure 3 Figure 3 At block 406, a first host, host A, connects to the storage device via a connection unit. Host A sends metadata including a host A identifier to the controller of the storage device. The host A identifier is stored in the configuration table of the database. At block 408, internal parameters of the controller are configured to match the quirks and role configuration of host A.
[0056] At block 410, the storage device is transferred to a second host, host B. At block 412, host B sends metadata including a host B identifier to the controller of the storage device. The host B identifier is stored in the configuration table of the database. The configuration table of the database includes both the host A identifier and the host B identifier. At block 414, internal parameters of the controller are configured to match the quirks and role configuration of host B. If the storage device is transferred back to host A, the controller, after sending a host identification signal, retrieves a relevant entry for host A host ID in the configuration table of the database. The host ID A entry includes the quirks and role configuration of host A. Internal parameters of the controller are configured to match the quirks and role configuration of the relevant host ID entry. The controller can have a logic component that avoids utilizing a role configuration that is not relevant to the host (e.g., the host and role configuration do not match).
[0057]
[0058] Figure 5 A flowchart 500 for configuring a storage device according to the disclosed embodiments of the present application is shown. The storage device can be Figure 1 the storage device 106 and / or Figure 2 the storage device 208. At block 502, a connection between an initiating host, such as the host 302, and a controller of the storage device, such as the controller 304, is initiated. At block 504, the host is identified via a host identification signal, such as the host identification signal 308. The controller accesses an internal database, such as the database 306. Figure 3 Figure 3 Figure 3 Figure 3 the database 306) to obtain a relevant entry of the host ID associated with the host. The host identification can also include information from the host parameter table. Figure 3
[0059] At block 506, internal parameters of the controller are configured based on the relevant host ID entry such that the controller is optimized for the role configuration associated with the host. At block 508, the configuration table of the host configuration optimization database is configured. The optimization of the relevant entry of the host can be done through artificial intelligence (AI) or simplified machine learning. At block 510, the configuration table is updated with the optimization results from the process at block 508. If the host and / or the storage device are powered off or reset at block 512, the process restarts at block 502, initializing the connection between the host and the storage device. However, if neither the host nor the storage device are powered off or reset at block 512, the configuration table is further optimized at block 508 and updated at block 510.
[0060] Figure 6 A method 600 for configuring a storage device according to the disclosed embodiments is shown. The storage device can be Figure 1 the storage device 106 and / or Figure 2 the storage device 208. At block 602, a controller (such as Figure 3 the controller 304) includes a database (such as Figure 3 the database 306) to include one or more customer identifier data elements and one or more custom configurations, where each configuration is a role configuration including one or more quirks. The one or more customer identifier elements correspond to a custom configuration of the one or more custom configurations. For example, a custom configuration associated with host ID A is only associated with host A (e.g., customer A).
[0061] At block 604, the storage device receives a host identification signal such that the host identification signal includes a customer identifier. At block 606, the controller utilizes the customer identifier to identify which custom configuration to apply to the controller. At block 608, the configuration table is updated with the custom configuration associated with the customer identifier for any missing or expired customer identifier data elements.
[0062] By including a database that includes a configuration table storing and updating information of each host connection, the controller is able to obtain a relevant role configuration and configure internal parameters of the controller to match the host specification. Therefore, the stability, performance, durability, and interoperability of the storage device are improved when the storage device is reused between one or more hosts.
[0063] In one embodiment, a data storage device includes a controller including data storage device operating parameters configured to configure local functions of the data storage device, where the controller is configured to receive a host identifier from a host. The data storage device further includes a database including a plurality of host identifier data elements and a plurality of device configuration data elements, where each of the plurality of device configuration data elements corresponds to a respective one of the plurality of host identifier data elements. The controller is further configured to obtain the host identifier from the host, match the host identifier to one of the plurality of host identifier data elements, and write a corresponding one of the plurality of device configuration data elements to the data storage device operating parameters.
[0064] The controller is further configured to obtain a second host identifier from a second host, match the second host identifier to one of the plurality of host identifier data elements, and write a corresponding one of the plurality of device configuration data elements to the data storage device operating parameters. The controller includes a custom function memory configured to define non-local functions of the data storage device. The database further includes a plurality of customer identifier data elements and a plurality of custom configuration data elements, where each of the plurality of custom configuration data elements corresponds to a respective one of the plurality of customer identifier data elements. The controller is further configured to obtain a customer identifier, match the customer identifier to one of the plurality of customer identifier data elements, and write a corresponding one of the custom configuration data elements to the custom function memory. The host identifier is comprised of the customer identifier. The controller is configured to refrain from obtaining the host identifier after a power down of the host. The controller is further configured to refrain from matching a second customer identifier to one of the plurality of custom configuration data elements if the second customer identifier is different than the customer identifier. The controller is further configured to match the second customer identifier to one of the plurality of custom configuration data elements if the second customer identifier is different than the customer identifier.
[0065] In another embodiment, a data storage device includes a controller including a custom configuration memory configured to configure non-local functionality of the data storage device, where the controller is configured to receive a client identifier from a host. The data storage device also includes a database including a plurality of client identifier data elements and a plurality of custom configuration data elements defining non-local functionality of the data storage device, where each of the plurality of custom configuration data elements corresponds to a respective one of the plurality of client identifier data elements. The controller is further configured to obtain the client identifier from the host, match the client identifier to one of the plurality of client identifier data elements, and write a corresponding one of the plurality of non-local configuration data elements to the custom configuration memory.
[0066] The controller is further configured to obtain a second client identifier from a second host, match the second client identifier to one of the plurality of host identifier data elements, and write a corresponding one of the plurality of non-local configuration data elements to the custom configuration memory. The controller includes data storage device operating parameters configured to configure local functionality of the data storage device, where the controller is further configured to receive a host identifier from the host. The database also includes a plurality of host identifier data elements and a plurality of device configuration data elements, where each of the plurality of device configuration data elements corresponds to a respective one of the plurality of host identifier data elements. The controller is further configured to obtain the host identifier, match the host identifier to one of the plurality of host identifier data elements, and write a corresponding one of the device configuration data elements to the data storage device operating parameters. The host identifier includes the client identifier. The controller is further configured to refrain from matching the second client identifier to one of the plurality of custom configuration data elements if the second client identifier is different from the client identifier. The controller is further configured to write a default non-local configuration data element to the custom configuration memory if the second client identifier is different from the client identifier. The controller is configured to obtain the client identifier after the host powers down. The controller is further configured to match the second host identifier to one of the plurality of device configuration data elements if the second host identifier is different from the host identifier.
[0067] In another embodiment, a data storage device includes a database including a plurality of host identifier data elements, a plurality of customer identifier data elements, a plurality of custom configuration data elements, each of the plurality of custom configuration data elements corresponding to a respective one of the plurality of customer identifier data elements, and a plurality of job parameter configuration data elements, each of the plurality of job parameter data elements corresponding to a respective one of the plurality of host identifier data elements. The data storage device also includes means for receiving a customer identifier from a host, means for matching the customer identifier to one of the plurality of customer identifier data elements, and means for modifying a controller of the data storage device based on a custom configuration data element corresponding to the one of the plurality of customer identifier data elements.
[0068] The data storage device also includes means for receiving a host identifier from a host, means for matching the host identifier to one of the plurality of host identifier data elements, and means for modifying the controller based on a job parameter configuration data element corresponding to the one of the plurality of host identifier data elements. The data storage device also includes means for receiving a second host identifier, means for matching the second host identifier to one of the plurality of host identifier data elements, and means for modifying the controller based on a second job parameter configuration data element corresponding to the one of the plurality of host identifier data elements. The data storage device also includes means for receiving a second customer identifier, means for matching the second customer identifier to one of the plurality of customer identifier data elements, and means for modifying the controller based on a second custom configuration data element corresponding to the one of the plurality of customer identifier data elements. One of the host identifier and the second host identifier includes one of a processor model, a chipset driver version, a product name, a firmware version, and a display driver version.
[0069] While the foregoing is directed to implementations of the present disclosure, other and further implementations of the disclosure can be devised without departing from the basic scope thereof, and the scope of the present disclosure is determined by the claims that follow.
Claims
1. A data storage device, the data storage device comprising: A controller, the controller including data storage device operating parameters configured to configure local functions of the data storage device, the controller being configured to receive a host identifier from a host; and Database, the database comprising: Multiple host identifier data elements; and Multiple device configuration data elements, each of the multiple device configuration data elements corresponding to a corresponding host identifier data element among the multiple host identifier data elements; The controller is further configured to: Obtain the host identifier from the host; Match the host identifier with one of the plurality of host identifier data elements; Write one of the multiple device configuration data elements into the working parameters of the data storage device; Modify the operating parameters of the data storage device to match the quirks and roles corresponding to the host, wherein the quirks correspond to the local functions of the data storage device and the roles correspond to the non-local functions of the data storage device, and wherein the non-local functions are at least one of the following: optional PCIe power loss notification feature, optional NVMe log page feature, QoS feature, hot threshold feature, timeout value feature, and low power timing feature. Based on the quirks and roles corresponding to the host, update the first device configuration data element among the plurality of device configuration data elements; and The data storage device is operated based on the modified operating parameters of the data storage device.
2. The data storage device according to claim 1, wherein the controller is further configured to: obtain a second host identifier from a second host, match the second host identifier with one of the plurality of host identifier data elements, and write a corresponding device configuration data element from the plurality of device configuration data elements into the data storage device operating parameters.
3. The data storage device of claim 1, wherein the controller includes a custom function memory configured to define non-local functions of the data storage device; wherein The database also includes multiple customer identifier data elements and multiple custom configuration data elements, each of the multiple custom configuration data elements corresponding to a corresponding customer identifier data element among the multiple customer identifier data elements; and wherein the controller is further configured to: obtain a customer identifier, match the customer identifier with one of the multiple customer identifier data elements, and write the corresponding custom configuration data element among the custom configuration data elements into the custom function memory.
4. The data storage device according to claim 3, wherein the host identifier is composed of the client identifier.
5. The data storage device of claim 4, wherein the controller is configured to avoid obtaining the host identifier after the host has lost power.
6. A data storage device, the data storage device comprising: A controller, the controller including data storage device operating parameters configured to configure local functions of the data storage device, and a custom function memory configured to limit non-local functions of the data storage device, wherein the controller is configured to receive a host identifier from a host. Database, the database comprising: Multiple host identifier data elements; Multiple device configuration data elements, each of which corresponds to a specific host identifier data element among the multiple host identifier data elements; and Multiple customer identifier data elements and multiple custom configuration data elements, wherein each of the multiple custom configuration data elements corresponds to a specific customer identifier data element among the multiple customer identifier data elements; and The controller is further configured to obtain the host identifier from the host, match the host identifier with one of the plurality of host identifier data elements, write the corresponding device configuration data element from the plurality of device configuration data elements into the data storage device operating parameters, obtain a client identifier, match the client identifier with one of the plurality of client identifier data elements, write the corresponding custom configuration data element from the plurality of custom configuration data elements into the custom function memory, and if the second client identifier is different from the client identifier, avoid matching the second client identifier with one of the plurality of custom configuration data elements.
7. A data storage device, the data storage device comprising: A controller, the controller including data storage device operating parameters configured to configure local functions of the data storage device, and a custom function memory configured to limit non-local functions of the data storage device, wherein the controller is configured to receive a host identifier from a host. Database, the database comprising: Multiple host identifier data elements; Multiple device configuration data elements, each of which corresponds to a specific host identifier data element among the multiple host identifier data elements; and Multiple customer identifier data elements and multiple custom configuration data elements, wherein each of the multiple custom configuration data elements corresponds to a specific customer identifier data element among the multiple customer identifier data elements; and The controller is further configured to obtain the host identifier from the host, match the host identifier with one of the plurality of host identifier data elements, write a corresponding device configuration data element from the plurality of device configuration data elements into the data storage device operating parameters, obtain a client identifier, match the client identifier with one of the plurality of client identifier data elements, write a corresponding custom configuration data element from the plurality of custom configuration data elements into the custom function memory, and if a second client identifier is different from the client identifier, match the second client identifier with one of the plurality of custom configuration data elements.
8. A data storage device, the data storage device comprising: A controller, the controller including a custom configuration memory configured to configure the non-local functionality of the data storage device, the controller being configured to receive a client identifier from a host; and Database, the database comprising: Multiple customer identifier data elements; and Multiple custom configuration data elements, wherein the multiple custom configuration data elements limit the non-local functionality of the data storage device, and each of the multiple custom configuration data elements corresponds to a corresponding customer identifier data element among the multiple customer identifier data elements; The controller is further configured to: Obtain the customer identifier from the host; Match the customer identifier with one of the plurality of customer identifier data elements; Write one of the multiple custom configuration data elements into the custom configuration memory; Modify the operating parameters of the data storage device to match the quirks and roles corresponding to the host, wherein the quirks correspond to the local functions of the data storage device and the roles correspond to the non-local functions of the data storage device, and wherein the non-local functions are at least one of the following: optional PCIe power loss notification feature, optional NVMe log page feature, QoS feature, hot threshold feature, timeout value feature, and low power timing feature. Based on the quirks and roles corresponding to the host, update the first custom configuration data element among the plurality of custom configuration data elements; and The data storage device is operated based on the modified operating parameters of the data storage device.
9. The data storage device of claim 8, wherein the controller is further configured to obtain a second client identifier from a second host, match the second client identifier with one of the plurality of client identifier data elements, and write a corresponding custom configuration data element from the plurality of custom configuration data elements into the custom configuration memory.
10. The data storage device of claim 8, wherein the controller includes data storage device operating parameters configured to configure local functions of the data storage device, the controller being further configured to receive a host identifier from the host; wherein the database further includes a plurality of host identifier data elements and a plurality of device configuration data elements, each of the plurality of device configuration data elements corresponding to a corresponding host identifier data element among the plurality of host identifier data elements; and The controller is further configured to: obtain the host identifier, match the host identifier with one of the plurality of host identifier data elements, and write the corresponding device configuration data element from the device configuration data elements into the data storage device operating parameters.
11. The data storage device of claim 10, wherein the host identifier is composed of the client identifier.
12. A data storage device, the data storage device comprising: A controller, the controller including a custom configuration memory configured to configure the non-local functionality of the data storage device, the controller being configured to receive a client identifier from a host; and Database, the database comprising: Multiple customer identifier data elements; and Multiple custom configuration data elements, wherein the multiple custom configuration data elements limit the non-local functionality of the data storage device, and each of the multiple custom configuration data elements corresponds to a corresponding customer identifier data element among the multiple customer identifier data elements; The controller is further configured to obtain the customer identifier from the host, match the customer identifier with one of the plurality of customer identifier data elements, write a corresponding custom configuration data element from the plurality of custom configuration data elements into the custom configuration memory, and avoid matching the second customer identifier with one of the plurality of custom configuration data elements if the second customer identifier is different from the customer identifier.
13. The data storage device of claim 12, wherein the controller is further configured to: write a default non-local configuration data element to the custom configuration memory if the second client identifier is different from the client identifier.
14. The data storage device of claim 13, wherein the controller is configured to obtain the client identifier after the host is powered off.
15. The data storage device of claim 12, wherein the controller is further configured to: if the second host identifier is different from the host identifier, match the second host identifier with one of a plurality of device configuration data elements.
16. A data storage device, the data storage device comprising: Database device, the database device comprising: Multiple host identifier data elements; Multiple customer identifier data elements; Multiple custom configuration data elements, each of which corresponds to a specific customer identifier data element among the multiple customer identifier data elements; and Multiple working parameter configuration data elements, each of the multiple working parameter data elements corresponding to a corresponding host identifier data element among the multiple host identifier data elements; A means for receiving a client identifier from a host; A means for matching the customer identifier with one of the plurality of customer identifier data elements; A means for modifying the controller of the data storage device based on the custom configuration data element to match the quirks and roles corresponding to the host, the custom configuration data element corresponding to one of the plurality of client identifier data elements, wherein the quirks correspond to local functions of the data storage device and the roles correspond to non-local functions of the data storage device, and wherein the non-local functions are at least one of optional PCIe power loss notification features, optional NVMe log page features, QoS features, hot threshold features, timeout value features, and low power timing features; A means for updating a first custom configuration data element among a plurality of custom configuration data elements based on the quirks item and the role corresponding to the host; and A means for operating the data storage device based on means for modification.
17. The data storage device according to claim 16, further comprising: A means for receiving a host identifier from the host; A means for matching the host identifier with one of the plurality of host identifier data elements; and A means for modifying the controller based on the operating parameter configuration data element, the operating parameter configuration data element corresponding to the one of the plurality of host identifier data elements.
18. The data storage device according to claim 17, further comprising: A means for receiving a second host identifier; A means for matching the second host identifier with one of the plurality of host identifier data elements; and A means for modifying the controller based on the operating parameter configuration data element, the operating parameter configuration data element corresponding to the one of the plurality of host identifier data elements.
19. The data storage device according to claim 18, further comprising: A means for receiving a second customer identifier; A means for matching the second customer identifier with one of the plurality of customer identifier data elements; and A means for modifying the controller based on a second custom configuration data element, the second custom configuration data element corresponding to one of the plurality of customer identifier data elements.
20. The data storage device of claim 19, wherein one of the host identifier and the second host identifier includes one of the following: processor model, chipset driver version, product name, firmware version, and display driver version.
Citation Information
Patent Citations
System and method to enable component inventory and compliance in the platform
US20190238558A1