Storage device, operating method of storage device, and operating method of storage system
By introducing a virtualization configuration manager into the storage device, automatically managing and initializing the configuration of multiple virtual functions, the problem of low efficiency in the configuration management of virtual function in the prior art is solved, and a more efficient system communication and initialization process is achieved.
Patent Information
- Application Number
- CN202411368195.5
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2023-10-06
- Filing Date
- 2024-09-29
- Publication Date
- 2025-04-08
AI Technical Summary
The prior art is difficult to efficiently manage and initialize the configuration of multiple virtual functions in the storage device, resulting in frequent communication between the host device and the storage device, increasing the load and initialization time of the system.
Automatically initialize and manage configurations of multiple virtual functions by introducing a virtualization configuration manager into the storage device, generating and storing a virtualization configuration list, and responding to virtualization configuration acquisition and setting commands of the host device.
It reduces the number of communications between the host device and the storage device, improves the initialization efficiency of multiple virtual functions, reduces the system load, and improves the processing speed and throughput of the storage system.
Smart Images

Figure CN119781666A_ABST
Abstract
Description
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0002] This application is based on and claims the benefit of priority from Korean Patent Application No. 10-2023-0133684 filed in the Korean Intellectual Property Office on October 6, 2023, the disclosure of which is incorporated herein by reference in its entirety. Technical Field
[0003] The inventive concept relates to a semiconductor memory, and more particularly, to a memory device, an operating method of the memory device, and an operating method of a memory system. Background Art
[0004] Semiconductor memories are classified into volatile memory devices (such as static random access memory (SRAM) and dynamic RAM (DRAM), in which stored data is lost when power to them is cut off) and nonvolatile memory devices (such as flash memory devices, phase RAM (PRAM), magnetic RAM (MRAM), resistive RAM (RRAM), and ferroelectric RAM (FeRAM)), which retain stored data even when power to them is cut off.
[0005] Flash-based large-capacity storage media use high-speed interfaces to communicate with external devices. Recently, multi-host storage systems have been developed in which a single storage medium supports multiple hosts or multiple tenants, such as multiple virtual machines. In particular, multifunctional technologies that allow a single storage medium to operate as multiple devices are being developed. Multifunctional technologies can include technologies that provide multiple physical functions, and single root input-output virtualization (SR-IOV) technologies that provide multiple physical functions and multiple virtual functions by implementing multiple virtual functions with one physical function. When providing the same number of functions, SR-IOV technology can reduce implementation costs compared to multiple physical functions. Summary of the invention
[0006] The inventive concept provides a storage device to which configuration of a plurality of virtual functions is offloaded, an operating method of the storage device, and an operating method of a storage system.
[0007] According to some embodiments conceived by the present invention, there is provided an operating method for a storage system including a host device and a storage device, the operating method comprising: sending a virtualization configuration acquisition command from the host device to the storage device, the virtualization configuration acquisition command indicating a request for a virtualization configuration list stored in the storage device, sending a virtualization configuration list from the storage device to the host device in response to the virtualization configuration acquisition command, sending a virtualization configuration setting command from the host device to the storage device, and the storage device performing initialization operations on multiple virtual functions of the storage device based on the virtualization configuration list in response to the virtualization configuration setting command.
[0008] According to some embodiments of the present inventive concept, there is provided an operating method of a storage device, the operating method comprising receiving a virtualization configuration setting command from an external host device, and performing, by the storage device, an initialization operation on a plurality of virtual functions of the storage device based on a virtualization configuration list in response to the virtualization configuration setting command. When performing the initialization operation, the storage device does not receive commands other than the virtualization configuration setting command from the external host device.
[0009] According to some embodiments conceived by the present invention, a storage device is provided, including a non-volatile memory device, and a controller configured to control the non-volatile memory device and communicate with an external host device through an interface channel, wherein the controller is configured to provide a physical function and a plurality of virtual functions related to the physical function, a virtualization configuration manager, the virtualization configuration manager configured to generate a virtualization configuration list of the plurality of virtual functions, store the virtualization configuration list in the non-volatile memory device, send the virtualization configuration list to the external host device in response to a virtualization configuration acquisition command received from the external host device, and send the virtualization configuration list to the virtualization manager in response to a virtualization configuration setting command received from the external host device, and the virtualization manager is configured to perform initialization operations on the plurality of virtual functions based on the virtualization configuration list. BRIEF DESCRIPTION OF THE DRAWINGS
[0010] Embodiments will be more clearly understood from the following detailed description taken in conjunction with the accompanying drawings, in which:
[0011] Figure 1 is a block diagram of a storage system according to some embodiments;
[0012] Figure 2 is a block diagram of a storage system according to some embodiments;
[0013] Figure 3 is a diagram illustrating a method of operating a storage system according to some embodiments;
[0014] Figure 4 is a diagram of a virtualization configuration list according to some embodiments;
[0015] Figure 5 is a diagram illustrating a method of operating a storage system according to some embodiments;
[0016] Figure 6 is a diagram illustrating a method of operating a storage system according to some embodiments;
[0017] Figure 7 is a diagram illustrating a method of operating a storage system according to some embodiments;
[0018] Figure 8 is a diagram illustrating a method of operating a storage system according to some embodiments;
[0019] Fig. 9 is shown in more detail Figure 8 Flow chart of operation S540;
[0020] Fig.10 is shown in more detail Figure 8 Flow chart of operation S520;
[0021] Fig.11 is a diagram illustrating a method of operating a storage system according to some embodiments;
[0022] Fig.12 is a diagram illustrating a method of operating a storage system according to some embodiments;
[0023] Fig.13 is a block diagram of a host-storage system according to some embodiments; and
[0024] Fig.14 is a diagram of a data center to which a storage device according to some embodiments is applied. DETAILED DESCRIPTION
[0025] Hereinafter, embodiments are described clearly and in detail so that those skilled in the art can easily practice the inventive concept.
[0026] Figure 1 is a block diagram of a storage system according to some embodiments.
[0027] refer to Figure 1 , the storage system 1000 may include a host device 1100 and a storage device 1200. In some embodiments, the storage system 1000 may be a computing system such as a computer, a laptop computer, a server, a workstation, a portable communication terminal, a personal digital assistant (PDA), a portable media player (PMP), a smart phone, or a wearable device.
[0028] The host device 1100 may be configured to control the overall operation of the storage system 1000. The host device 1100 may be configured to access the storage device 1200. The host device 1100 may store data in the storage device 1200 or read data stored in the storage device 1200. For example, the host device 1100 may send a write command and write data to the storage device 1200 to store the data in the storage device 1200. In some embodiments, the host device 1100 may send a read command to the storage device 1200 and receive data from the storage device 1200 to read the data stored in the storage device 1200.
[0029] In some embodiments, the host device 1100 can communicate with the storage device 1200 based on a preset interface. The preset interface can support at least one of various interfaces, such as Universal Serial Bus (USB), Small Computer System Interface (SCSI), Peripheral Component Interconnect (PCI) Express (PCIe), Advanced Technology Attachment (ATA), Parallel ATA (PATA), Serial ATA (SATA), Serial Attached SCSI (SAS), Universal Flash Storage (UFS), Non-Volatile Memory Express (NVMe), Compute Express Link (CXL), etc., but is not limited thereto.
[0030] The host device 1100 controls the storage device 1200. The storage device 1200 may be used as a large-capacity storage medium of the storage system 1000. In some embodiments, the storage device 1200 may be a solid-state drive (SSD) mounted on the host device 1100. The storage device 1200 may include a non-transitory computer-readable medium.
[0031] For example, the storage device 1200 may include a storage controller 1300 and a non-volatile memory device (NVM) 1400. The storage controller 1300 may store write data received from the host device 1100 in the non-volatile memory device 1400 in response to a write command received from the host device 1100. The storage controller 1300 may transmit data read from the non-volatile memory device 1400 to the host device 1100 in response to a read command received from the host device 1100.
[0032] The nonvolatile memory device 1400 may store data under the control of the memory controller 1300 or transmit the stored data to the memory controller 1300. In some embodiments, the nonvolatile memory device 1400 may be a NAND flash memory device, but is not limited thereto.
[0033] In some embodiments, the host device 1100 may exchange data with the storage device 1200 through the interface channel. For example, the host device 1100 may send data to the storage device 1200 or receive data from the storage device 1200 through the interface channel.
[0034] The storage controller 1300 may include a physical function PF, a virtual function VF, a virtualization manager 1310, and a virtualization configuration manager 1320. In some embodiments, the storage controller 1300 may include a physical function PF and a first virtual function VF1 to a fourth virtual function VF4, but is not limited thereto. The number of physical functions PF and the number of virtual functions VF may be reduced or increased according to the implementation method. The virtualization manager 1310 may be implemented as software, hardware, or a combination thereof. The virtualization configuration manager 1320 may be implemented as software, hardware, or a combination thereof.
[0035] For example, the number of virtual functions that the storage device 1200 can provide may be "4" or more. The number of virtual functions that the storage device 1200 can provide may be "128." It is assumed that the first virtual function VF1 to the fourth virtual function VF4 are operating virtual functions (or online virtual functions, active virtual functions).
[0036] For example, the physical function PF and the virtual function VF may be hardware or software configurations configured to provide functions defined by the PCIe interface standard. In some embodiments, the physical function PF and the virtual function VF may be PCIe functions that support single root I / O virtualization (SR-IOV). In some embodiments, the physical function PF and the virtual function VF may be sub-storage controllers. The sub-storage controller may be implemented as software, hardware, or a combination thereof. For example, the physical function PF may be a primary controller, and the virtual function VF may be a secondary controller.
[0037] The settings of the virtual functions VF1 to VF4 of SR-IOV depend on the physical function PF. When a reset (or function-level reset) is applied to the physical function PF, all configuration information of the first virtual function VF1 to the fourth virtual function VF4 generated based on the physical function PF can be reset. In other words, the configuration information of multiple virtual functions VF can be initialized. Therefore, after resetting the physical function PF, the host device 1100 may need to re-perform the initialization operation for each of the multiple virtual functions VF.
[0038] The storage device 1200 may store the context of SR-IOV in the nonvolatile memory device 1400. The storage device 1200 may automatically set a plurality of virtual functions VFs based on the context of SR-IOV stored in the nonvolatile memory device 1400.
[0039] The virtualization configuration manager 1320 may provide the stored virtualization configuration list VCL to the host device 1100 according to a request from the host device 1100. In some embodiments, the virtualization configuration manager 1320 may store the context of SR-IOV in the non-volatile memory device 1400. The virtualization configuration manager 1320 may generate the virtualization configuration list VCL. The virtualization configuration manager 1320 may manage the virtualization configuration list VCL. The virtualization configuration manager 1320 may store the virtualization configuration list VCL in the non-volatile memory device 1400.
[0040] The virtualization configuration list VCL may include multiple configuration entries. The configuration entry may include configuration information (or setting information) of the corresponding virtual function. For example, the configuration information may refer to information about each of the multiple virtual functions VF set by the host device 1100. The configuration information may include resource data, online data, binding data, virtual function identifiers, and valid data. For example, the virtualization configuration manager 1320 may store and manage the configuration information (or setting information) of multiple virtual functions VF in the non-volatile memory device 1400.
[0041] In some embodiments, the storage device 1200 may store the virtualization configuration list VCL in a non-volatile memory such as EFuse, EEPROM (Electrically Erasable Programmable Read-Only Memory), MASKROM, Serial PROM (Serial Programmable Read-Only Memory), and flash memory, but is not limited thereto. For example, the virtualization configuration list VCL may be stored in a one-time programming (OTP) memory, a meta area of the non-volatile memory device 1400, and a serial NOR flash memory (SNOR).
[0042] The virtualization configuration manager 1320 may send the virtualization configuration list VCL to the host device 1100 in response to the virtualization configuration acquisition command received from the host device 1100. The virtualization configuration manager 1320 may send the virtualization configuration list VCL to the virtualization manager 1310 in response to the virtualization configuration setting command received from the host device 1100.
[0043] For example, the virtualization configuration manager 1320 may read the virtualization configuration list VCL stored in the nonvolatile memory device 1400 in response to the virtualization configuration setting command received from the host device 1100. The virtualization configuration manager 1320 may send the read virtualization configuration list VCL or a portion of the virtualization configuration list VCL to the virtualization manager 1310.
[0044] The virtualization manager 1310 may perform an initialization operation based on the virtualization configuration list VCL. After reset, the virtualization manager 1310 may perform an initialization operation on a plurality of virtual functions VF based on the virtualization configuration list VCL stored in the non-volatile memory device 1400. In response to a virtualization configuration setting command received from the host device 1100, the virtualization configuration manager 1320 may independently set a plurality of virtual functions VF based on a previous virtualization configuration list VCL stored in the non-volatile memory device 1400.
[0045] The virtualization manager 1310 may perform an initialization operation on a plurality of virtual functions VFs based on a virtualization configuration list VCL stored in the nonvolatile memory device 1400. The virtualization manager 1310 may perform an automatic setup operation based on a virtualization configuration list VCL or a portion of the virtualization configuration list VCL (e.g., at least one of valid data, resource data, online data, binding data, and a virtual function identifier) received from the virtualization configuration manager 1320. The automatic setup operation may refer to an operation of performing an initialization operation on a plurality of virtual functions VFs based on the virtualization configuration list VCL stored before reset without intervention of the host device 1100.
[0046] The virtualization manager 1310 may independently perform initialization operations of multiple virtual functions VFs in response to a virtualization configuration setting command without the control of the host device 1100. For example, the virtualization manager 1310 may allocate resources to multiple virtual functions VFs based on the virtualization configuration list VCL. The virtualization manager 1310 may perform a function-level reset operation based on the virtualization configuration list VCL. The virtualization manager 1310 may perform an online operation on multiple virtual functions VFs based on the virtualization configuration list VCL. The virtualization manager 1310 may perform a binding operation on multiple virtual functions VFs based on the virtualization configuration list VCL. The virtualization manager 1310 may perform a namespace attachment operation on multiple virtual functions VFs based on the virtualization configuration list VCL. The virtualization manager 1310 may set performance information of multiple virtual functions VFs based on the virtualization configuration list VCL.
[0047] As described above, the storage device 1200 according to some embodiments may also store the virtualization configuration list VCL present in the host device 1100 in the non-volatile memory device 1400. The storage device 1200 may perform an automatic setup operation (or initialization operation) based on the virtualization configuration list VCL stored before the reset after the reset. The host device 1100 may perform other operations while the storage device 1200 performs the automatic setup operation. The storage device 1200 may support offloading the setup operation for the virtual function from the host device 1100 to the storage device 1200. As the number of communications between the host device 1100 and the storage device 1200 is reduced, the time required to perform the initialization operation of multiple virtual functions VFs may be reduced.
[0048] Figure 2 is a block diagram of a storage system according to some embodiments.
[0049] refer to Figure 1 and Figure 2 , the host device 1100 may include a PF manager 1110, a hypervisor 1120, and first to fourth virtual machines VM1 to VM4. The storage device 1200 may include a storage controller 1300 and a non-volatile memory device (NVM) 1400. The storage controller 1300 may include a physical function PF, a first virtual function VF1 and a fourth virtual function VF4, a virtualization manager 1310, and a virtualization configuration manager 1320. For ease of explanation, the following description is omitted. Figure 1 A detailed description of the components shown in .
[0050] The host device 1100 may be configured to run a plurality of virtual machines (e.g., first to fourth virtual machines VM1 to VM4). Each of the plurality of virtual machines VM1 to VM4 may be independently run on the host device 1100. The hypervisor 1120 may be a logical platform configured to run the plurality of virtual machines VM1 to VM4 running on the host device 1100. Each of the plurality of virtual machines VM1 to VM4 may be run on the host device 1100.
[0051] In some embodiments, the PF manager 1110 may communicate with the physical function PF, and the plurality of virtual machines VM1 to VM4 may communicate with the corresponding virtual functions VF1 to VF4. The PF manager 1110 may be a management host. The virtual machines VM1 to VM4 may be user hosts. For example, the PF manager 1110 may send a management command to the physical function PF. Each of the virtual machines VM1 to VM4 may send a general command to the corresponding virtual function VF1 to VF4.
[0052] The physical function PF may receive and process management commands or general commands generated by the PF manager 1110. Each of the virtual functions VF1 to VF4 may receive and process general commands generated by the corresponding virtual machines VM1 to VM4. The virtual function VF may share physical resources, such as links, with the physical function PF and other virtual functions associated with the same physical function PF. The virtual function VF may be a lightweight PCIe function that can be directly accessed by the virtual machine VM.
[0053] The PF manager 1110 and each of the plurality of virtual machines VM1 to VM4 may be configured to access the storage device 1200. The first virtual machine VM1 may correspond to the first virtual function VF1, the second virtual machine VM2 may correspond to the second virtual function VF2, the third virtual machine VM3 may correspond to the third virtual function VF3, and the fourth virtual machine VM4 may correspond to the fourth virtual function VF4. In other words, the first virtual machine VM1 may communicate with the first virtual function VF1, the second virtual machine VM2 may communicate with the second virtual function VF2, the third virtual machine VM3 may communicate with the third virtual function VF3, and the fourth virtual machine VM4 may communicate with the fourth virtual function VF4.
[0054] For example, the physical function PF may be a sub-storage controller corresponding to the PF manager 1110, and each of the plurality of virtual functions VF may be a sub-storage controller corresponding to at least one of the plurality of virtual machines, but is not limited thereto. In addition, for ease of explanation, terms such as physical function PF and virtual function VF are used, but the physical function PF and virtual function VF may be used interchangeably with the configuration or terminology of the sub-storage controller.
[0055] In some embodiments, the storage device 1200 may support an SR-IOV function. The SR-IOV function may refer to a function in which one physical function supports one or more related virtual functions. The storage device 1200 may include multiple virtual functions VF and may support multiple functions. For example, it is understood that the physical function PF and the virtual function VF are configured to process commands for a corresponding host (e.g., a virtual machine) or commands in a transmission queue managed by the corresponding host. In the following, for ease of explanation, it is assumed that the storage device 1200 communicates with four virtual machines VM1 to VM4, but is not limited thereto.
[0056] Assume that the storage device 1200 supports up to "128" virtual functions. The host device 1100 can set the number of virtual functions to be used through a command. For example, the host device 1100 can set the number of virtual functions of the physical function to "4". The host device 1100 can use only 4 virtual functions out of the 128 virtual functions, and can not use the remaining virtual functions. In the following, it is assumed that the host device 1100 only uses the first virtual function VF1 to the fourth virtual function VF4.
[0057] In some embodiments, the host device 1100 can manage resources (or controller resources) for virtual functions VF1 to VF4 through NVMe standard virtualization management commands. The host device 1100 can use virtualization management commands to allocate resources to virtual functions VF1 to VF4 or remove resources from virtual functions VF1 to VF4. The host device 1100 can issue virtualization management commands to the physical function PF, and can request the storage device 1200 to allocate resources to virtual functions VF1 to VF4 associated with the physical function PF. For example, resources may include virtual queue resources (hereinafter referred to as virtual queues) and virtual interrupt resources (hereinafter referred to as virtual interrupts). A virtual queue may be a type of controller resource that manages a submission queue and a completion queue. A virtual interrupt may be a type of controller resource that manages an interrupt vector.
[0058] Figure 3 is a diagram illustrating an operating method of a storage system according to some embodiments.
[0059] refer to Figure 1 and Figure 3 , in operation S111, the storage system 1000 may be reset. In some embodiments, the storage system 1000 may be powered on. When the storage system 1000 is reset or powered on, the host device 1100 may send information about the start of initialization to the storage device 1200. In response to the information about the start of initialization, the storage device 1200 may perform an initialization operation. For example, the host device 1100 may send a reset signal (or reset command) for a physical function PF associated with a plurality of virtual functions VF to the storage device 1200. In response to the reset signal, the storage device 1200 may initialize the configuration for the physical function PF and initialize the configuration for the plurality of virtual functions VF.
[0060] In operation S112, the host device 1100 may transmit the number of virtual functions to the storage device 1200. The storage device 1200 may transmit device information including information about the maximum number of virtual functions to the host device 1100. The host device 1100 may set the number of virtual functions within the maximum number of virtual functions. The host device 1100 may transmit information about the number of virtual functions to the storage device 1200.
[0061] In operation S113 , the variable K may be set to 1. For example, the variable K is used to describe repetition of initialization operations of a plurality of virtual functions VFs, and does not limit the scope of the inventive concept.
[0062] In operation S114, the host device 1100 may perform an initialization operation on the Kth virtual function among the multiple virtual functions VF. In operation S115, the host device 1100 may set a virtual queue for the Kth virtual function. For example, the host device 1100 may send information about the queue corresponding to the Kth virtual function to the storage device 1200. In some embodiments, the host device 1100 may set a virtual queue for the Kth virtual function through an NVMe standard virtualization management command. The virtualization management command may include information about the number of virtual queues. The storage device 1200 may set a virtual queue for the Kth virtual function in response to the virtualization management command.
[0063] In operation S116, the host device 1100 may set a virtual interrupt for the Kth virtual function. For example, the host device 1100 may send information about the interrupt corresponding to the Kth virtual function to the storage device 1200. In some embodiments, the host device 1100 may set a virtual interrupt for the Kth virtual function through an NVMe standard virtualization management command. The virtualization management command may include information about the number of virtual interrupts. The storage device 1200 may set a virtual interrupt for the Kth virtual function in response to the virtualization management command.
[0064] In operation S117, the host device 1100 may send a reset signal for the Kth virtual function. For example, the host device 1100 may perform a virtual function level reset for the Kth virtual function. The storage device 1200 may perform a reset operation on the Kth virtual function in response to the reset signal.
[0065] In operation S118, the host device 1100 may set the state of the Kth virtual function. The Kth virtual function may have an online or offline state. The host device 1100 may set the Kth virtual function to an online state.
[0066] In some embodiments, the host device 1100 may convert the Kth virtual function between the online state and the offline state by using the NVMe standard virtualization management command. For example, the host device 1100 may convert the Kth virtual function from the offline state to the online state by using the virtualization management command. In some embodiments, the host device 1100 may convert the Kth virtual function from the online state to the offline state by using the virtualization management command.
[0067] In some embodiments, the storage device 1200 may receive a virtualization management command including state information of the Kth virtual function. The storage device 1200 may set the Kth virtual function to an online state in response to the virtualization management command.
[0068] In operation S119, the host device 1100 may set binding information for the Kth virtual function. For example, the host device 1100 may send the binding information for the Kth virtual function to the storage device 1200. The storage device 1200 may bind the Kth virtual function based on the binding information received from the host device 1100. For example, the storage device 1200 may perform binding on the virtual function VF in an online state.
[0069] In operation S120, the host device 1100 may attach a namespace to the Kth virtual function. For example, the host device 1100 may send namespace information of the Kth virtual function to the storage device 1200. The host device 1100 may attach the Kth virtual function to a corresponding namespace among a plurality of namespaces.
[0070] In some embodiments, the host device 1100 may use the NVMe standard namespace attach command to attach the Kth virtual function to the namespace or detach the Kth virtual function from the namespace. For example, the host device 1100 may attach the Kth virtual function to the corresponding namespace via the namespace attach command. In some embodiments, the host device 1100 may detach the Kth virtual function from the corresponding namespace via the namespace attach command.
[0071] In some embodiments, the storage device 1200 may receive a namespace attach command from the host device 1100. The storage device 1200 may attach the Kth virtual function to the corresponding namespace in response to the namespace attach command.
[0072] In operation S121, the host device 1100 may set performance information of the Kth virtual function. For example, the host device 1100 may send the performance information of the Kth virtual function to the storage device 1200. The storage device 1200 may receive the performance information from the host device 1100. The storage device 1200 may set the performance information of the Kth virtual function based on the received performance information.
[0073] In operation S122, the storage device 1200 may transmit a virtual function identifier VFID to the host device 1100. The storage device 1200 may transmit an identifier corresponding to the virtual function to the host device 1100. The virtual function identifier VFID may be unique information for distinguishing each of a plurality of virtual functions VFs because the virtual function identifier VFID is assigned to each of the plurality of virtual functions VFs. The virtual function identifier VFID may be used in a virtualization configuration acquisition command or a virtualization configuration setting command. The virtual function identifier VFID may be used in a virtualization configuration list VCL.
[0074] In operation S123, the host device 1100 may determine whether the variable K is the number NOV of virtual functions. When the variable K is not the number NOV of virtual functions, the host device 1100 performs operation S124. In operation S124, the host device 1100 increases the variable K by 1. Thereafter, the host device 1100 performs operation S114.
[0075] In some embodiments, when the initialization operation of the virtual function is completed, the host device 1100 may attach the bound virtual function VF to the virtual machine VM. The virtual machine VM may communicate with the corresponding virtual function VF respectively.
[0076] As described above, after performing a reset operation on the physical function PF of the storage device 1200, the host device 1100 may perform an initialization operation on a plurality of virtual functions VFs associated with the physical function PF. In order to perform an initialization operation on each of the plurality of virtual functions VFs, the host device 1100 may perform operations S115 to S121 on each of the plurality of virtual functions VFs. For example, in order to initialize 128 virtual functions, the host device 1100 needs to issue hundreds of NVMe standard commands and PCIe standard register settings.
[0077] Figure 4 is a diagram of a virtualization configuration list VCL according to some embodiments.
[0078] For ease of explanation, it is assumed that the maximum number of virtual functions supported by the storage device 1200 is "128" and the number of virtual functions set by the host device 1100 is "4", but is not limited thereto.
[0079] The storage device 1200 may generate and manage a virtualization configuration list VCL. The storage device 1200 may store the virtualization configuration list VCL in the nonvolatile memory device 1400. The storage device 1200 may provide the virtualization configuration list VCL to the host device 1100. The storage device 1200 may automatically perform initialization operations of multiple virtual functions VF based on the virtualization configuration list VCL.
[0080] refer to Figure 4 , the virtualization configuration list VCL may include multiple configuration entries. For example, the virtualization configuration list VCL may include the first to 128th configuration entries E1 to E128. The number of configuration entries included in the virtualization configuration list VCL may be equal to the maximum number of virtual functions VF. Each of the multiple configuration entries may include configuration information of the corresponding virtual function in the multiple virtual functions VF. The configuration entries may include valid data, resource data, online data, binding data, and a virtual function identifier. For example, the first configuration entry E1 may include valid data VALID, resource data RESOURCE, online data ONLINE, binding data BINDING, and a virtual function identifier VFID.
[0081] The valid data VALID may be set according to the number of virtual functions set by the host device 1100. The valid data VALID may indicate a valid state or an invalid state. For example, since the number of virtual functions is "4", the valid data VALID of the first entry E1 to the fourth entry E4 may indicate a valid state. The valid data VALID of the 5th to 128th entries E5 to E128 may indicate an invalid state. That is, among the plurality of configuration entries, the number of configuration entries having valid data indicating a valid state may be equal to the number of virtual functions.
[0082] Resource data RESOURCE may include virtual queue data, virtual interrupt data, namespace data, performance data (or performance information), etc. For example, virtual queue data may indicate the number of virtual queues. Virtual interrupt data may indicate the number of virtual interrupts. Namespace data may indicate a namespace identifier corresponding to a virtual function. Performance data may indicate performance information set by host device 1100.
[0083] The online data ONLINE may indicate the state of the corresponding virtual function. The online data may indicate an online state or an offline state. For example, the host device 1100 may use a virtual function having an online state. The virtual function having an online state may be allocated necessary resources by the virtualization manager 1310. The virtual function having an online state may be activated. The host device 1100 may not use a virtual function having an offline state.
[0084] The binding data BINDING may indicate whether the corresponding virtual function is bound. The virtual function identifier VFID may be unique information for distinguishing each of the plurality of virtual functions VF, because the virtual function identifier VFID is assigned to each of the plurality of virtual functions VF. For example, the virtual function identifier VFID of the first entry E1 may refer to an identifier of a virtual function (e.g., the first virtual function VF1) corresponding to the first entry E1.
[0085] As described above, the storage device 1200 may store a virtualization configuration list VCL. The storage device 1200 may independently perform initialization operations of multiple virtual functions VF based on the virtualization configuration list VCL. Therefore, the number of communications between the host device 1100 and the storage device 1200 may be reduced. The operation of setting multiple virtual functions VF may be offloaded from the host device 1100 to the storage device 1200. When the storage device 1200 independently sets multiple virtual functions VF, the host device 1100 may perform other operations.
[0086] Figure 5 is a diagram illustrating an operating method of a storage system according to some embodiments.
[0087] For the sake of brevity, only the virtualization manager 1310 and the virtualization configuration manager 1320 of the storage controller 1300 are shown. Figure 1 and Figure 5 In operation S210, the host device 1100 may send a virtualization configuration acquisition command to the storage device 1200. The virtualization configuration acquisition command may be a command requesting a virtualization configuration list VCL stored in the storage device 1200. In operation S220, the storage controller 1300 may send a virtualization configuration load command to the nonvolatile memory device (NVM) 1400. The storage controller 1300 may send the virtualization configuration load command to the nonvolatile memory device 1400 in response to the virtualization configuration acquisition command. The virtualization configuration load command may be a command for loading the virtualization configuration list VCL stored in the nonvolatile memory device 1400 to the storage controller 1300.
[0088] In operation S230, the nonvolatile memory device 1400 may provide the virtualization configuration list VCL to the storage controller 1300. For example, the nonvolatile memory device 1400 may output the virtualization configuration list VCL to the storage controller 1300 in response to the virtualization configuration load command. In some embodiments, when the virtualization configuration list VCL for a plurality of virtual functions VFs has been loaded into a buffer memory (not shown) of the storage controller 1300, operations S220 and S230 may be omitted.
[0089] In operation S240, the storage device 1200 may transmit the virtualization configuration list VCL to the host device 1100. In some embodiments, the host device 1100 may check the virtualization configuration list VCL received from the storage device 1200. The host device 1100 may identify the virtualization configuration list VCL of the virtual function set before reset or power-on based on the virtualization configuration list VCL received from the storage device 1200.
[0090] As described above, the storage device 1200 may store a virtualization configuration list VCL for a plurality of virtual functions VFs. The storage device 1200 may provide the stored virtualization configuration list VCL to the host device 1100 in response to a virtualization configuration acquisition command.
[0091] Figure 6 is a diagram illustrating an operating method of a storage system according to some embodiments.
[0092] refer to Figure 1 and Figure 6 , in operation S310, the storage system 1000 may be reset or powered on. When the storage system 1000 is reset or powered on, the host device 1100 may send information about the start of initialization to the storage device 1200. In response to the information about the start of initialization, the storage device 1200 may perform an initialization operation. For example, the host device 1100 may send a reset signal (or reset command) for a physical function PF associated with a plurality of virtual functions VF to the storage device 1200. In response to the reset signal, the storage device 1200 may initialize the configuration for the physical function PF, and may initialize the configuration for the plurality of virtual functions VF. Even after receiving the reset signal, the virtualization configuration list VCL may continue to exist or remain in the non-volatile memory device 1400.
[0093] In operation S320, the host device 1100 may send a virtualization configuration acquisition command to the storage device 1200. For example, the host device 1100 may send a virtualization configuration acquisition command to the storage device 1200 to obtain a virtualization configuration list VCL set before resetting.
[0094] In operation S330, the storage device 1200 may send the virtualization configuration list VCL to the host device 1100. For example, the storage device 1200 may provide the virtualization configuration list VCL stored before the reset to the host device 1100. In some embodiments, the virtualization configuration list VCL may include state data. The state data may indicate the state of the virtualization configuration list VCL. The state data may indicate a previous state or an initial state. The previous state may indicate a virtualization configuration list VCL set by the host device 1100. The initial state may indicate a default virtualization configuration list VCL not set by the host device 1100.
[0095] In operation S340, the host device 1100 may send a virtualization configuration setting command to the storage device 1200. In some embodiments, the host device 1100 may send a virtualization configuration list VCL together with the virtualization configuration setting command to the storage device 1200. For example, when a plurality of virtual functions VFs are to be set to be different from the virtualization configuration list VCL received through the virtualization configuration acquisition command, the host device 1100 may send the virtualization configuration list VCL to the storage device 1200.
[0096] In operation S350, the storage device 1200 may perform an initialization operation for a virtual function. The storage device 1200 may perform an initialization operation for a virtual function in response to a virtualization configuration setting command. In some embodiments, the storage device 1200 may set a virtual function based on a virtualization configuration list VCL stored in the non-volatile memory device 1400. In addition to the virtualization configuration setting command, the storage device 1200 may also perform initialization operations for multiple virtual functions VF without the intervention of the host device 1100. When setting multiple virtual functions VF, the storage device 1200 may receive only one command (i.e., the virtualization configuration setting command) and may not receive other commands or data.
[0097] In some embodiments, after completing the initialization operation of the virtual function, the host device 1100 may attach the bound virtual function to the corresponding virtual machine. Each virtual machine may store data in the corresponding virtual function and read the stored data.
[0098] In some embodiments, the physical function PF may receive a function level reset signal. The physical function PF may perform a reset operation. In addition, all virtual functions VF associated with the physical function PF may also perform a reset operation. Due to the reset operation, the configuration information of the virtual function VF may be initialized. In some embodiments, due to the reset operation, the configuration information of the virtual function VF set by the host device 1100 may be lost.
[0099] Due to the reset operation of the physical function PF, the storage system 1000 supporting SR-IOV requires initialization operations of multiple virtual functions VF. The storage system 1000 that does not support the automatic setup operation can be repeatedly executed. Figure 3 The operations S115 to S124 are used to reset the plurality of virtual functions VF. Figure 3 In order to set a plurality of virtual functions VF, the host device 1100 may repeatedly perform operations S115 to S124. The host device 1100 may perform initialization operations of a plurality of virtual functions VF by repeatedly performing operations S115 to S124 as many times as the number of virtual functions. Due to the resetting of the physical function PF, the total load on the storage system 1000 may be increased by repeatedly performing initialization operations of a plurality of virtual functions VF. In particular, since a plurality of virtual functions VF are set under the control of the host device 1100, the load on the host device 1100 may increase.
[0100] However, the storage device 1200 according to some embodiments may continue to store the virtualization configuration list VCL in the nonvolatile memory device 1400. Even after the physical function PF receives the function level reset signal, the virtualization configuration list VCL stored in the nonvolatile memory device 1400 may remain in the storage device 1200. The storage device 1200 according to the present invention may perform an automatic setting operation. The storage device 1200 may automatically set configurations for multiple virtual functions VF. Figure 6 , the host device 1100 may set a plurality of virtual functions VF by performing only operation S340. That is, the host device 1100 may set a plurality of virtual functions VF by sending only a virtualization configuration setting command. The storage device 1200 may independently perform initialization operations on a plurality of virtual functions VF in response to the virtualization configuration setting command.
[0101] Therefore, the number of communications between the host device 1100 and the storage device 1200 can be reduced. The amount of information sent and received between the host device 1100 and the storage device 1200 can be reduced. The workload of the host device 1100 can be distributed to the storage device 1200, thereby providing a storage system with improved processing speed and throughput.
[0102] Figure 7 is a diagram illustrating an operating method of a storage system according to some embodiments.
[0103] For the convenience of explanation, the detailed description of the above operations is omitted. Figure 1 and Figure 7In operation S410, the storage system 1000 may be reset or powered on. In operation S420, the host device 1100 may send a virtualization configuration acquisition command to the storage device 1200. In operation S430, the storage device 1200 may send a virtualization configuration list VCL to the host device 1100.
[0104] In operation S440, the host device 1100 may set the number of virtual functions. The host device 1100 may send the number of virtual functions to the storage device 1200. In some embodiments, the storage device 1200 may send device information including information about the maximum number of virtual functions to the host device 1100. The host device 1100 may set the number of virtual functions within the maximum number of virtual functions.
[0105] In operation S450, the host device 1100 may transmit a virtualization configuration setting command to the storage device 1200. The virtualization configuration setting command may be a command for requesting the storage device 1200 to automatically perform an initialization operation of a virtual function based on the virtualization configuration list VCL.
[0106] In some embodiments, the host device 1100 may send the virtualization configuration setting command together with the virtualization configuration list VCL to the storage device 1200. The virtualization configuration list VCL sent by the host device 1100 may be different from the virtualization configuration list VCL in operation S430. When the configurations for the plurality of virtual functions VF are to be set to be different from the configurations for the plurality of virtual functions VF set before operation S410, the host device 1100 may send the virtualization configuration setting command and the virtualization configuration list VCL to the storage device 1200.
[0107] In operation S460, the storage device 1200 may perform an initialization operation based on the virtualization configuration list VCL. The storage device 1200 may receive a virtualization configuration setting command. The storage device 1200 may perform an initialization operation on a plurality of virtual functions VF based on the virtualization configuration list VCL in response to the virtualization configuration setting command.
[0108] According to some embodiments, the storage device 1200 may allocate resources to multiple virtual functions VFs. The storage device 1200 may perform online operations on multiple virtual functions VFs. The storage device 1200 may perform binding operations on multiple virtual functions VFs. The storage device 1200 may perform namespace attachment operations on multiple virtual functions VFs. The storage device 1200 may set performance information of multiple virtual functions VFs.
[0109] In some embodiments, the storage device 1200 may perform initialization operations on multiple virtual functions VF based on the virtualization configuration list VCL stored in the non-volatile memory device 1400. In some embodiments, the storage device 1200 may perform initialization operations on multiple virtual functions VF based on the virtualization configuration list VCL received together with the virtualization configuration setting command. In some embodiments, the storage device 1200 may perform initialization operations on multiple virtual functions VF based on the default virtualization configuration list. Fig.10 The storage device 1200 may set a plurality of virtual functions VFs without intervention of the host device 1100 .
[0110] In operation S470, the storage device 1200 may send the virtualization configuration list VCL to the host device 1100. The storage device 1200 may perform operation S460 (i.e., initialization operation for multiple virtual functions VFs), and may generate or update the virtualization configuration list VCL. The storage device 1200 may store the virtualization configuration list VCL in the nonvolatile memory device 1400. The storage device 1200 may send the virtualization configuration list VCL to the host device 1100 after the initialization operation of the multiple virtual functions VFs is completed. The storage device 1200 may send the virtualization configuration list VCL to the host device 1100 to notify that the initialization operation of the multiple virtual functions VFs has been completed.
[0111] The storage device 1200 according to some embodiments may perform an initialization operation on a plurality of virtual functions VFs in response to one command (i.e., a virtualization configuration setting command) received from the host device 1100. The storage device 1200 may perform an initialization operation on a plurality of virtual functions VFs based on a previously stored virtualization configuration list VCL without the control of the host device 1100. The storage device 1200 may perform an initialization operation on a plurality of virtual functions VFs. The storage device 1200 may perform an initialization operation on all of the plurality of virtual functions VFs by one command received from the host device 1100.
[0112] Figure 8 is a diagram illustrating an operating method of a storage system according to some embodiments.
[0113] Reference Figure 1 and Figure 8 In operation S510, the host device 1100 may send a virtualization configuration setting command to the storage device 1200. The storage device 1200 may receive the virtualization configuration setting command from the host device 1100. The virtualization configuration setting command may include mode data. The mode data may indicate any one of a previous mode, a new mode, and / or a default mode.
[0114] In some embodiments, the host device 1100 may send a virtualization configuration setting command including mode data indicating a new mode. When the mode data included in the virtualization configuration setting command indicates a new mode, the host device 1100 may provide the virtualization configuration list VCL together with the virtualization configuration setting command to the storage device 1200. That is, the host device 1100 may send the virtualization configuration setting command and the virtualization configuration list VCL to the storage device 1200.
[0115] The virtualization configuration list VCL sent by the host device 1100 may be different from the virtualization configuration list VCL received from the storage device 1200 in response to the virtualization configuration acquisition command. The virtualization configuration list VCL sent by the host device 1100 may be sent when the host device 1100 sets the configuration of the plurality of virtual functions VFs to be different from the configuration of the plurality of virtual functions VFs set before the reset. When the plurality of virtual functions VFs are set to be different from the virtualization configuration list VCL received from the storage device 1200 through the virtualization configuration acquisition command (i.e., different from the virtualization configuration list stored in the storage device 1200), the host device 1100 may generate the virtualization configuration list VCL and send it to the storage device 1200.
[0116] In some embodiments, when the host device 1100 sends a virtualization configuration setting command including mode data indicating a previous mode or a default mode, the host device 1100 may not provide a virtualization configuration list VCL. In order to set a plurality of virtual functions VF based on the virtualization configuration list VCL stored in the storage device 1200, the host device 1100 may send a virtualization configuration setting command including mode data indicating a previous mode to the storage device 1200. The host device 1100 may send only the virtualization configuration setting command to the storage device 1200 without providing the virtualization configuration list VCL.
[0117] In order to set a plurality of virtual functions VF based on the default virtualization configuration list (or to evenly distribute resources according to the number of virtual functions), the host device 1100 may send a virtualization configuration setting command including mode data indicating a default mode to the storage device 1200. The host device 1100 may send the virtualization configuration setting command to the storage device 1200 without providing the virtualization configuration list VCL. The default virtualization configuration list may be a preset virtualization configuration list. The default virtualization configuration list may be a virtualization configuration list VCL in which resources are evenly distributed according to the number of virtual functions.
[0118] In operation S520, the storage device 1200 may confirm the virtualization configuration list. The storage device 1200 may receive a virtualization configuration setting command. The storage device 1200 may confirm the virtualization configuration list based on the virtualization configuration setting command. The storage device 1200 may determine the virtualization configuration list to be used in the initialization operation in response to the mode data included in the virtualization configuration setting command.
[0119] In operation S530 , the variable K may be set to 1. For example, the variable K is used to describe repetition of initialization operations of a plurality of virtual functions VFs, and does not limit the scope of the inventive concept.
[0120] In operation S540, the host device 1100 may perform an initialization operation on a Kth virtual function among the plurality of virtual functions VFs. The storage device 1200 may perform an initialization operation on the plurality of virtual functions VFs based on corresponding configuration entries included in the virtualization configuration list VCL in response to the virtualization configuration setting command.
[0121] In operation S550, the host device 1100 may determine whether the variable K is the number NOV of virtual functions. When the variable K is not the number NOV of virtual functions, the storage device 1200 performs operation S560, and when the variable K is the number NOV of virtual functions, the storage device 1200 performs operation S570. In operation S560, the host device 1100 increases the variable K by 1. Thereafter, the host device 1100 performs operation S540.
[0122] In some embodiments, the storage device 1200 may not receive any command other than the virtualization configuration setting command from the host device 1100 when performing the initialization operation. That is, the storage device 1200 may independently perform initialization operations of multiple virtual functions VFs through one virtualization configuration setting command.
[0123] In operation S570, the storage device 1200 may send a virtualization configuration list VCL to the host device 1100. The storage device 1200 may perform an initialization operation on the virtual functions, and may provide the virtualization configuration list VCL including configuration information of the corresponding set virtual functions to the host device 1100. By providing the virtualization configuration list VCL to the host device 1100, the storage device 1200 may notify the host device 1100 of the result that the storage device 1200 independently sets the plurality of virtual functions VF.
[0124] As described above, the storage device 1200 can support SR-IOV settings (or settings) in various environments, such as reset. The storage device 1200 can automatically set multiple virtual functions VF in response to a virtualization configuration setting command. The storage device 1200 can perform the tasks of the host device 1100 on behalf of the host device 1100, thereby providing a host offload effect.
[0125] Fig. 9 is shown in more detail Figure 8 Flow chart of operation S540.
[0126] refer to Fig. 9 The initialization operation of each of the plurality of virtual functions VF of the storage device 1200 is described. Figure 1 , Figure 8 and Fig. 9 , operation S540 may include operations S541 to S545. The storage device 1200 may perform initialization operations on multiple virtual functions VF based on the virtualization configuration list VCL in response to the virtualization configuration setting command. In operation S541, the storage device 1200 may allocate resources. The storage device 1200 may allocate resources to the Kth virtual function based on the virtualization configuration list VCL.
[0127] According to some embodiments, the storage device 1200 may set a virtual queue for the Kth virtual function. The storage device 1200 may set the number of virtual queues of the Kth virtual function based on the virtualization configuration list VCL without receiving a virtualization management command including information about the number of virtual queues from the host device 1100.
[0128] In some embodiments, the storage device 1200 may set a virtual interrupt for the Kth virtual function. The storage device 1200 may set the number of virtual interrupts for the Kth virtual function based on the virtualization configuration list VCL without receiving a virtualization management command including information about the number of virtual interrupts from the host device 1100 .
[0129] In operation S542, the storage device 1200 may perform an online operation. The storage device 1200 may set the state of the Kth virtual function based on the virtualization configuration list VCL. For example, each virtual function may have an online state or an offline state. The storage device 1200 may set the Kth virtual function to an online state. The storage device 1200 may set the state of the Kth virtual function to an online state based on the virtualization configuration list VCL without receiving a virtualization management command from the host device 1100.
[0130] In operation S543 , the storage device 1200 may perform a binding operation. The storage device 1200 may set whether to bind the Kth virtual function based on the virtualization configuration list VCL. The storage device 1200 may bind the Kth virtual function based on the virtualization configuration list VCL without receiving a command from the host device 1100 .
[0131] In operation S544, the storage device 1200 may perform a namespace attachment operation. For example, the storage device 1200 may attach the Kth virtual function to a corresponding namespace in the plurality of namespaces based on the virtualization configuration list VCL. The storage device 1200 may attach the Kth virtual function to the corresponding namespace based on the virtualization configuration list VCL without receiving a namespace attachment command from the host device 1100.
[0132] In operation S545, the storage device 1200 may set performance information. The storage device 1200 may set performance information of the Kth virtual function based on the virtualization configuration list VCL. The storage device 1200 may set performance information of the Kth virtual function based on the virtualization configuration list VCL without receiving performance information from the host device 1100. The storage device 1200 may set quality of service (QoS) based on the virtualization configuration list VCL.
[0133] Fig.10 is shown in more detail Figure 8 Flow chart of operation S520.
[0134] Reference Figure 8 and Fig.10 , the storage device 1200 may confirm a virtualization configuration list VCL to be used in the initialization operation. Operation S520 may include operations S521 to S528.
[0135] In operation S521, the storage device 1200 may determine whether the mode data indicates a new mode. For example, the storage device 1200 may determine whether the mode data included in the virtualization configuration setting command indicates a new mode. When the mode data indicates a new mode, the storage device 1200 performs operation S522, and when the mode data does not indicate a new mode, the storage device 1200 performs operation S523.
[0136] In operation S522, the storage device 1200 may perform an initialization operation based on the virtualization configuration list VCL received from the host device 1100. When the mode data of the virtualization configuration setting command indicates a new mode, the storage device 1200 may perform an initialization operation based on the virtualization configuration list VCL received from the host device 1100. The storage device 1200 may set a plurality of virtual functions VF based on the virtualization configuration list VCL received from the host device 1100 together with the virtualization configuration command instead of the virtualization configuration list VCL stored in the nonvolatile memory device 1400.
[0137] In operation S523, the storage device 1200 may determine whether the mode data indicates a previous mode. For example, the storage device 1200 may determine whether the mode data included in the virtualization configuration setting command indicates a previous mode. When the mode data indicates the previous mode, the storage device 1200 performs operation S524, and when the mode data does not indicate the previous mode, the storage device 1200 performs operation S526.
[0138] In operation S524, the storage device 1200 may load the virtualization configuration list VCL stored in the nonvolatile memory device 1400. For example, the virtualization configuration manager 1320 may send a virtualization configuration load command to the nonvolatile memory device 1400 in response to the virtualization configuration setting command including mode data indicating a previous mode. The virtualization configuration manager 1320 may receive the virtualization configuration list VCL from the nonvolatile memory device 1400.
[0139] In operation S525, the storage device 1200 may perform an initialization operation based on the virtualization configuration list VCL loaded from the nonvolatile memory device 1400. When the mode data of the virtualization configuration setting command indicates the previous mode, the storage device 1200 may perform an initialization operation based on the virtualization configuration list VCL stored in the nonvolatile memory device 1400. The storage device 1200 may set a plurality of virtual functions VFs to be set before reset or power-on.
[0140] In operation S526, the storage device 1200 may determine whether the mode data indicates a default mode. For example, the storage device 1200 may determine whether the mode data included in the virtualization configuration setting command indicates a default mode. When the mode data indicates the default mode, the storage device 1200 performs operation S527, and when the mode data does not indicate the default mode, the storage device 1200 performs operation S528.
[0141] In operation S527, the storage device 1200 may perform an initialization operation based on the default virtualization configuration list. The storage device 1200 may evenly allocate resources to the virtual functions according to the number of virtual functions. The storage device 1200 may set the virtual functions to preset values.
[0142] In operation S528, the storage device 1200 may send a response including a status indicating the invalid mode to the host device 1100. For example, the storage device 1200 may notify the host device 1100 that the mode data included in the virtualization configuration setting command indicates the invalid mode. For example, the storage device 1200 may send a completion entry having a status value indicating the invalid mode to the host device 1100.
[0143] Fig.11 is a diagram illustrating an operating method of a storage system according to some embodiments.
[0144] For the convenience of explanation, a detailed description of the above operation is omitted. It is assumed that the mode data included in the virtualization configuration command indicates the previous mode. Figure 1 and 11 , the storage controller 1300 may further include a namespace manager 1330 and a performance manager 1340. The namespace manager 1330 may attach a namespace to a corresponding physical function and a virtual function or separate a namespace from the corresponding physical function and a virtual function. The performance manager 1340 may manage the performance of the physical function and the virtual function based on the performance information received from the host device 1100.
[0145] In operation S610, the host device 1100 may send a virtualization configuration setting command to the storage device 1200. The virtualization configuration manager 1320 may receive the virtualization configuration setting command. The virtualization configuration manager 1320 may check the mode data included in the virtualization configuration setting command. The virtualization configuration manager 1320 may determine that the mode data indicates a previous mode. In operation S620, the virtualization configuration manager 1320 may send a virtualization configuration load command to the non-volatile memory device (NVM) 1400 in response to the virtualization configuration setting command. In operation S630, the non-volatile memory device 1400 may send a stored virtualization configuration list VCL to the virtualization configuration manager 1320. The virtualization configuration manager 1320 may receive the virtualization configuration list VCL from the non-volatile memory device 1400.
[0146] In operation S640, the virtualization configuration manager 1320 may send resource data, online data, and binding data from the virtualization configuration list VCL to the virtualization manager 1310. The virtualization manager 1310 may receive the resource data, online data, and binding data. The virtualization manager 1310 may set a plurality of virtual functions VFs based on the resource data, the online data, and the binding data. The virtualization manager 1310 may allocate resources to the plurality of virtual functions VFs based on the resource data. The virtualization manager 1310 may set the states of the plurality of virtual functions VFs based on the online data. The virtualization manager 1310 may set the plurality of virtual functions VFs to an online state based on the online data. The virtualization manager 1310 may set whether to bind the plurality of virtual functions VFs based on the binding data.
[0147] In operation S650, the virtualization configuration manager 1320 may transmit the namespace data to the namespace manager 1330. The virtualization configuration manager 1320 may provide the namespace data from the virtualization configuration list to the namespace manager 1330. The namespace manager 1330 may attach each of the plurality of virtual functions VFs to a corresponding namespace based on the namespace data.
[0148] In operation S660, the virtualization configuration manager 1320 may transmit the performance data to the performance manager 1340. The virtualization configuration manager 1320 may provide the performance data from the virtualization configuration list to the performance manager 1340. The performance manager 1340 may set performance information of a plurality of virtual functions VFs based on the performance data.
[0149] In step S670, the virtualization configuration manager 1320 may send the virtualization configuration list VCL to the host device 1100. The virtualization configuration manager 1320 may provide the virtualization configuration list VCL to the host device 1100 after completing the setting of multiple virtual functions VF based on the virtualization configuration list VCL stored in the non-volatile memory device 1400. The host device 1100 may receive the virtualization configuration list VCL from the storage device 1200. The host device 1100 may receive the virtualization configuration list VCL and may recognize that the storage device 1200 has completed the initialization operation of the virtual function.
[0150] Fig.12 is a diagram illustrating an operating method of a storage system according to some embodiments.
[0151] For the sake of brevity, only the virtualization manager 1310 and the virtualization configuration manager 1320 of the storage controller 1300 are shown. The storage device 1200 may store the virtualization configuration list VCL in the non-volatile memory device (NVM) 1400. In some embodiments, after completing the initialization operation of the virtual function, the storage device 1200 may independently store the virtualization configuration list VCL in the non-volatile memory device 1400. In some embodiments, the storage device 1200 may store the virtualization configuration list VCL in the non-volatile memory device 1400 in response to a virtualization configuration storage command received from the host device 1100. Fig.12 , a method in which the storage device 1200 stores a virtualization configuration list in response to a virtualization configuration storage command is described.
[0152] Reference Figure 1 and Fig.12 In operation S710, the host device 1100 may send a virtualization configuration storage command to the storage device 1200. The virtualization configuration storage command may be a command requesting that a virtualization configuration list VCL be stored in the nonvolatile memory device 1400. The storage device 1200 may receive the virtualization configuration storage command.
[0153] In operation S720, the storage controller 1300 may store the virtualization configuration list VCL in the non-volatile memory device 1400 in response to the virtualization configuration storage command. For example, the storage controller 1300 may generate a virtualization configuration list VCL for a plurality of virtual functions VFs based on the current state. The storage controller 1300 may store the generated virtualization configuration list VCL in the meta area of the non-volatile memory device 1400.
[0154] In some embodiments, the storage controller 1300 may include a buffer memory (not shown). The virtualization configuration list VCL may be generated from a previous initialization operation and stored in the buffer memory. The storage controller 1300 may store the virtualization configuration list VCL stored in the buffer memory in the non-volatile memory device 1400.
[0155] In operation S730, the storage device 1200 may transmit the virtualization configuration list VCL to the host device 1100. The storage device 1200 may provide the virtualization configuration list VCL to the host device 1100 in response to the virtualization configuration storage command. According to an embodiment, operation S730 may be omitted.
[0156] In some embodiments, the host device 1100 may explicitly instruct the storage device 1200 to store the virtualization configuration list VCL in the non-volatile memory device 1400 through a virtualization configuration storage command. That is, in response to the virtualization configuration storage command received from the host device 1100, the storage device 1200 may store the virtualization configuration list VCL indicating the current status of the plurality of virtual functions VF in the non-volatile memory device 1400.
[0157] In some embodiments, the host device 1100 may back up the virtualization configuration list VCL to the storage device 1200. Due to an unexpected power outage (or reset, etc.) of the storage system 1000, the host device 1100 may lose the configuration information of the virtual function, i.e., the virtualization configuration list VCL. In this case, the host device 1100 may not return to the state before the power outage or reset. However, the host device 1100 according to some embodiments may obtain the virtualization configuration list VCL stored in the storage device 1200 through a virtualization configuration acquisition command. The host device 1100 may use the virtualization configuration list VCL backed up in the storage device 1200. The host device 1100 may return to the state before the power outage or reset based on the virtualization configuration list VCL.
[0158] Fig.13 is a block diagram of a host-storage system 2000 according to some embodiments.
[0159] The host-storage system 2000 may include a host 10 and a storage device 2100. In addition, the storage device 2100 may include a storage controller 2200 and a non-volatile memory (NVM) 2300. In addition, according to some embodiments, the host 10 may include a host controller 11 and a host memory 12. The host memory 12 may be used as a buffer memory for temporarily storing data to be transmitted to or from the storage device 2100.
[0160] The storage device 2100 may include a storage medium for storing data according to a request from the host 10. As an example, the storage device 2100 may include at least one of an SSD, an embedded memory, and a removable external memory. When the storage device 2100 is an SSD, the storage device 2100 may be a device that complies with the NVMe standard. When the storage device 2100 is an embedded memory or an external memory, the storage device 2100 may be a device that complies with the UFS or embedded multimedia card (eMMC) standard. The host 10 and the storage device 2100 may each generate and send packets according to the adopted standard protocol.
[0161] When the non-volatile memory 2300 of the storage device 2100 includes a flash memory, the flash memory may include a 2D NAND memory array or a 3D (or vertical) NAND (VNAND) memory array. As another example, the storage device 2100 may include various other types of non-volatile memories. For example, magnetic random access memory (MRAM), spin transfer torque MRAM, conductive bridge RAM (CBRAM), ferroelectric RAM (FeRAM), phase RAM (PRAM) and resistive RAM (RRAM) and various other types of memory may be applied to the storage device 2100.
[0162] According to some embodiments, the host controller 11 and the host memory 12 may be implemented as separate semiconductor chips. In some embodiments, the host controller 11 and the host memory 12 may be integrated in the same semiconductor chip. As an example, the host controller 11 may be one of a plurality of modules included in an application processor, and the application processor may be implemented as a system on chip (SoC). In addition, the host memory 12 may be an embedded memory provided within the application processor, or may be a non-volatile memory or a memory module placed outside the application processor.
[0163] The host controller 11 may manage an operation of storing data (eg, recorded data) of a buffer of the host memory 12 in the nonvolatile memory 2300 or storing data (eg, read data) of the nonvolatile memory 2300 in a buffer thereof.
[0164] The storage controller 2200 may include a host interface 2210, a memory interface 2220, and a central processing unit (CPU) 2230. In addition, the storage controller 2200 may further include a flash translation layer (FTL) 2240, a packet manager (PCK MNG) 2250, a buffer memory (BUF MEM) 2260, an error correction code (ECC) engine 2270, and an advanced encryption standard (AES) engine 2280. The storage controller 2200 may further include a working memory (not shown) in which the FTL 2240 is loaded, and data recording and reading operations of the nonvolatile memory 2300 may be controlled by the CPU 2230 executing the FTL 2240.
[0165] The host interface 2210 may transmit and receive packets to and from the host 10. The packet transmitted from the host 10 to the host interface 2210 may include a command or data to be recorded in the nonvolatile memory 2300, and the packet transmitted from the host interface 2210 to the host 10 may include a response to a command or data read from the nonvolatile memory 2300. The memory interface 2220 may transmit data to be recorded in the nonvolatile memory 2300 to the nonvolatile memory 2300, or may receive data read from the nonvolatile memory 2300. The memory interface 2220 may be implemented to comply with a standard convention, such as a switching or open NAND flash interface (ONFI).
[0166] The FTL 2240 may perform several functions such as address mapping, wear leveling, and garbage collection. Address mapping is an operation of changing a logical address received from the host 10 into a physical address for actually storing data in the nonvolatile memory 2300. Wear leveling is a technique for preventing excessive degradation of a specific block by allowing the blocks in the nonvolatile memory 2300 to be used evenly, and may be implemented by, for example, a firmware technique that balances the erase counts of physical blocks. Garbage collection is a technique for ensuring available capacity in the nonvolatile memory 2300 by erasing an existing block after copying valid data of the block to a new block.
[0167] The packet manager 2250 may generate a packet according to a protocol of an interface consulted with the host 10, or may parse various information from a packet received from the host 10. In addition, the buffer memory 2260 may temporarily store data to be recorded in the nonvolatile memory 2300 or data to be read from the nonvolatile memory 2300. The buffer memory 2260 may be a component provided in the memory controller 2200, but may be placed outside the memory controller 2200.
[0168] The ECC engine 2270 may perform error detection and correction on read data read from the nonvolatile memory 2300. More specifically, the ECC engine 2270 may generate parity bits regarding write data to be written in the nonvolatile memory 2300, and the generated parity bits may be stored together with the write data in the nonvolatile memory 2300. When reading data from the nonvolatile memory 2300, the ECC engine 2270 may correct errors in the read data using the parity bits read from the nonvolatile memory 2300 together with the read data, and may output the error-corrected read data.
[0169] The AES engine 2280 may perform at least one of an encryption operation and a decryption operation on data input to the memory controller 2200 using a symmetric key algorithm.
[0170] The host 10 may include Figures 1 to 12 The virtual machines included in the host 10 can communicate with the corresponding virtual functions of the storage device 2100. The storage device 2100 may include the virtual machines described in reference Figures 1 to 12 For example, the host interface 2210 may include multiple virtual functions VF or multiple sub-storage controllers. The storage device 2100 may store the virtualization configuration list in the non-volatile memory 2300, as shown in FIG. Figures 1 to 12 The storage device 2100 may provide a virtualization configuration list to the host 10 in response to the virtualization configuration acquisition command. The storage device 2100 may perform an automatic setting operation (or initialization operation) based on the virtualization configuration list.
[0171] Fig.14 is a diagram of a data center to which a storage device according to some embodiments is applied.
[0172] refer to Fig.14 , the data center 3000 is a facility that collects various types of data and provides services, and may be referred to as a data storage center. The data center 3000 may be a system for operating a search engine and a database, and may be a computing system used by a company such as a bank or a government agency. The data center 3000 may include application servers 3100 to 3100n and storage servers 3200 to 3200m. The number of application servers 3100 to 3100n and the number of storage servers 3200 to 3200m may vary according to some embodiments, and the number of application servers 3100 to 3100n may be different from the number of storage servers 3200 to 3200m.
[0173] The application server 3100 or the storage server 3200 may include at least one of the processors 3110 and 3210 and the memories 3120 and 3220. In the storage server 3200, the processor 3210 may control the overall operation of the storage server 3200 and may access the memory 3220 to execute instructions and / or data loaded into the memory 3220. The memory 3220 may include a double data rate synchronous dynamic RAM (DDR SDRAM), a high bandwidth memory (HBM), a hybrid memory cube (HMC), a dual in-line memory module (DIMM), an optane DIMM, and / or a non-volatile DIMM (NVMDIMM). According to some embodiments, the number of processors 3210 and the number of memories 3220 included in the storage server 3200 may vary. In some embodiments, the processor 3210 and the memory 3220 may provide a processor-memory pair. In some embodiments, the number of processors 3210 may be different from the number of memories 3220. The processor 3210 may include a single-core processor or a multi-core processor. The above description of the storage server 3200 may be similarly applied to the application server 3100. According to some embodiments, the application server 3100 may not include the storage device 3150. The storage server 3200 may include at least one storage device 3250. The number of storage devices 3250 included in the storage server 3200 may vary according to some embodiments.
[0174] The application servers 3100 to 3100n can communicate with the storage servers 3200 to 3200m through the network 3300. The network 3300 can be implemented using Fibre Channel (FC) or Ethernet. FC is a medium for relatively high-speed data transmission, and optical switches that provide high performance / high availability can be used. Depending on the access method of the network 3300, the storage servers 3200 to 3200m can provide file storage, block storage, or object storage.
[0175] In some embodiments, the network 3300 may be a storage-only network, such as a storage area network (SAN). For example, the SAN may be an FC-SAN using an FC network and implemented according to the FC protocol. For another example, the SAN may be an IP-SAN using a TCP / IP network and implemented according to an iSCSI or Internet SCSI (iSCSI) protocol over TCP / IP. In some embodiments, the network 3300 may be a general-purpose network such as a TCP / IP network. For example, the network 3300 may be implemented according to protocols such as FC over Ethernet (FCoE), network attached storage (NAS), and NVMe over fabric (NVMe-oF).
[0176] Hereinafter, the application server 3100 and the storage server 3200 are mainly described. The description of the application server 3100 may be applied to another application server 3100n, and the description of the storage server 3200 may be applied to another storage server 3200m.
[0177] The application server 3100 may store data requested to be stored by a user or client in one of the storage servers 3200 to 3200m through the network 3300. In addition, the application server 3100 may obtain data requested to be read by a user or client from one of the storage servers 3200 to 3200m through the network 3300. For example, the application server 3100 may be implemented as a web server or a database management system (DBMS).
[0178] The application server 3100 may access the memory 3120n or the storage device 3150n included in the other application servers 3100n through the network 3300, or may access the memory 3220 to 3220m or the storage devices 3250 to 3250m included in the storage servers 3200 to 3200m through the network 3300. Therefore, the application server 3100 may perform various operations on the data stored in the application servers 3100 to 3100n and / or the storage servers 3200 to 3200m. For example, the application server 3100 may execute an instruction for moving or copying data between the application servers 3100 to 3100n and / or the storage servers 3200 to 3200m. In this case, the data may be moved from the storage devices 3250 to 3250m of the storage servers 3200 to 3200m through the storage 3220 to 3220m of the storage servers 3200 to 3200m, or directly to the storage 3120 to 3120n of the application servers 3100 to 3100n. For security or privacy, the data moved through the network 3300 may be encrypted data.
[0179] In the storage server 3200, the interface 3254 can provide a physical connection between the processor 3210 and the controller 3251 and a physical connection between the network interconnect (NIC) 3240 and the controller 3251. For example, the interface 3254 can be implemented in a direct attached storage (DAS) method that directly connects the storage device 3250 to a dedicated cable. In addition, for example, the interface (I / F) 3254 can be implemented in various interface methods, such as ATA, SATA, external SATA (e-SATA), SCSI, SAS, PCI, PCIe, NVMe, IEEE 1394, USB, secure digital (SD) card, MMC, UFS, embedded UFS (eUFS) and / or compact flash (CF) card interface, etc.
[0180] The storage server 3200 may further include a switch 3230 and a NIC 3240. The switch 3230 may selectively connect the processor 3210 to the storage device 3250 or selectively connect the NIC 3240 to the storage device 3250 under the control of the processor 3210.
[0181] In some embodiments, the NIC 3240 may include a network interface card, a network adapter, and the like. The NIC 3240 may be connected to the network 3300 through a wired interface, a wireless interface, a Bluetooth interface, an optical interface, and the like. The NIC 3240 may include an internal memory, a digital signal processor (DSP), a host bus interface, and the like, and may be connected to the processor 3210 and / or the switch 3230 through the host bus interface. The host bus interface may be implemented as one of the examples of the above-mentioned interface 3254. In some embodiments, the NIC 3240 may be integrated with at least one of the processor 3210, the switch 3230, and the storage device 3250.
[0182] In the storage servers 3200 to 3200m or the application servers 3100 to 3100n, the processor can program or read data by sending a command to the storage devices 3150 to 3150n and 3250 to 3250m or the memories 3120 to 3120m and 3220 to 3220m. The data may be error correction data through an ECC engine. The data is data processed by a data bus inversion (DBI) or a data mask (DM), and may include cyclic redundancy code (CRC) information. For security or privacy, the data may be encrypted data.
[0183] The storage devices 3150 to 3150n and 3250 to 3250m can send control signals and command / address signals to the NAND flash memory devices 3252 to 3252m in response to a read command received from the processor. Therefore, when data is read from the NAND flash memory devices 3252 to 3252m, a read enable (RE) signal can be input as a data output control signal, and the data can be output to the DQ bus. The RE signal can be used to generate a data strobe (DQS). The command and address signals can be latched in the page buffer according to the rising edge or falling edge of the write enable (WE) signal.
[0184] The controller 3251 may control the overall operation of the storage device 3250. In some embodiments, the controller 3251 may include a static random access memory (SRAM). The controller 3251 may write data to the NAND flash memory device 3252 in response to a write command, or may read data from the NAND flash memory device 3252 in response to a read command. For example, a write command and / or a read command may be provided from a processor 3210 in the storage server 3200, a processor 3210m in another storage server 3200m, or processors 3110 and 3110n in the application servers 3100 and 3100n. The DRAM 3253 may temporarily store or buffer data to be written to the NAND flash memory device 3252 or data read from the NAND flash memory device 3252. In addition, the DRAM 3253 may store metadata. Metadata is user data or data generated by the controller 3251 to manage the NAND flash memory device 3252. The storage device 3250 may include a security element (SE) for security or privacy.
[0185] In some embodiments, the storage devices 3150 to 3150n and 3250 to 3250m may include a plurality of virtual functions VF. The storage devices 3150 to 3150n and 3250 to 3250m may include reference Figures 1 to 12 The storage devices 3150 to 3150n and 3250 to 3250m may store a virtualization configuration list in the NAND flash memory device 3252, as shown in FIG. Figures 1 to 12 As described above, the storage device 2100 may provide a virtualization configuration list in response to the virtualization configuration acquisition command. The storage device 2100 may perform an automatic setting operation (or initialization operation) based on the virtualization configuration list.
[0186] As described above, the storage device according to the present invention can set the configuration of all virtual functions in multiple virtual functions VFs in response to a virtualization configuration setting command without the intervention of the host device. The storage device can automatically set resource allocation, online status setting, binding, namespace setting, and performance information setting in response to one command. Therefore, the number of communications between the host device and the storage device can be reduced.
[0187] While the inventive concept has been particularly shown and described with reference to embodiments thereof, it will be understood that various changes in form and details may be made therein without departing from the spirit and scope of the appended claims.
Claims
1. A method for operating a storage system, the storage system comprising a host device and a storage device, the method comprising: Sending a virtualization configuration acquisition command from the host device to the storage device, the virtualization configuration acquisition command indicating a request for a virtualization configuration list stored in the storage device; In response to the virtualization configuration acquisition command, the storage device sends the virtualization configuration list to the host device; Sending a virtualization configuration setting command from the host device to the storage device; and In response to the virtualization configuration setting command, the storage device performs an initialization operation on a plurality of virtual functions of the storage device based on the virtualization configuration list.
2. The operating method according to claim 1, wherein: Performing the initialization operation on the plurality of virtual functions of the storage device includes: allocating resources to the plurality of virtual functions; performing online operations on the plurality of virtual functions; performing a binding operation on the plurality of virtual functions; performing a namespace attach operation on the plurality of virtual functions; and Performance information of the plurality of virtual functions is set.
3. The operating method according to claim 1, further comprising: After completing the initialization operations of the plurality of virtual functions, the virtualization configuration list is sent from the storage device to the host device.
4. The operating method according to claim 3, wherein: The virtualization configuration list includes at least one of valid data, resource data, online data, binding data, or virtual function identifiers of the plurality of virtual functions.
5. The operating method according to claim 4, wherein: The resource data includes at least one of virtual queue data, virtual interrupt data, namespace data, or performance data.
6. The operating method according to claim 1, wherein: The storage device is configured to support Single Root I / O Virtualization (SR-IOV).
7. The operating method according to claim 1, further comprising: Sending a virtualization configuration storage command from the host device to the storage device, the virtualization configuration storage command indicating a request to store the virtualization configuration list; as well as In response to the virtualization configuration storage command, the storage device stores the virtualization configuration list in a non-volatile memory device included in the storage device.
8. The operating method according to claim 6, further comprising: sending, by the host device, a reset signal for physical functions associated with the plurality of virtual functions; as well as initializing, by the storage device in response to the reset signal, configuration for the physical function and the plurality of virtual functions, Even after receiving the reset signal, the virtualization configuration list still remains in the non-volatile memory device.
9. The operating method according to claim 1, further comprising: Identifiers corresponding to the plurality of virtual functions are sent from the host device to the storage device.
10. The operating method according to claim 1, wherein: The host device sending the virtualization configuration setting command to the storage device includes: The virtualization configuration setting command and a first virtualization configuration list are sent from the host device to the storage device.
11. The operating method according to claim 10, wherein: The first virtualization configuration list is different from a virtualization configuration list received from the storage device in response to the virtualization configuration acquisition command, and When the host device sets the configuration of the plurality of virtual functions different from the configuration of the plurality of virtual functions set before the reset, the first virtualization configuration list is sent.
12. The operating method according to claim 1, further comprising: The number of virtual functions of the physical functions associated with the plurality of virtual functions is transmitted from the host device to the storage device.
13. The operating method according to claim 1, wherein: Executing the initialization operation includes: When the mode data of the virtualization configuration setting command indicates a new mode, the storage device performs the initialization operation based on the virtualization configuration list received from the host device; When the mode data of the virtualization configuration setting command indicates a previous mode, performing, by the storage device, the initialization operation based on the virtualization configuration list stored in a nonvolatile memory device; and When the mode data of the virtualization configuration setting command indicates a default mode, the storage device performs the initialization operation based on a default virtualization configuration list.
14. A method for operating a storage device, the method comprising: receiving a virtualization configuration setting command from an external host device; as well as In response to the virtualization configuration setting command, the storage device performs an initialization operation on a plurality of virtual functions of the storage device based on the virtualization configuration list, Wherein, when performing the initialization operation, the storage device does not receive any command other than the virtualization configuration setting command from the external host device.
15. The operating method according to claim 14, further comprising: sending the virtualization configuration list to the external host device after the initialization operation, The virtualization configuration list includes at least one of valid data, resource data, online data, binding data, or virtual function identifiers of the multiple virtual functions.
16. The operating method according to claim 14, further comprising: confirming the virtualization configuration list based on mode data included in the virtualization configuration setting command, The mode data indicates a previous mode, a new mode or a default mode.
17. The operating method according to claim 14, further comprising: receiving a virtualization configuration acquisition command from the external host device, the virtualization configuration acquisition command indicating a request for the virtualization configuration list stored in the storage device; as well as In response to the virtualization configuration acquisition command, the virtualization configuration list is sent to the external host device.
18. The operating method according to claim 14, wherein: Performing the initialization operation on the plurality of virtual functions of the storage device based on the virtualization configuration list includes: allocating resources to the plurality of virtual functions; performing online operations on the plurality of virtual functions; performing a binding operation on the plurality of virtual functions; performing a namespace attach operation on the plurality of virtual functions; and Performance information of the plurality of virtual functions is set.
19. A storage device comprising: Non-volatile memory devices; and a controller configured to control the nonvolatile memory device and communicate with an external host device through an interface channel, wherein the controller is configured to provide a physical function and a plurality of virtual functions related to the physical function; a virtualization configuration manager configured to generate a virtualization configuration list of the plurality of virtual functions, store the virtualization configuration list in the non-volatile memory device, send the virtualization configuration list to the external host device in response to a virtualization configuration get command received from the external host device, and send the virtualization configuration list to the virtualization manager in response to a virtualization configuration set command received from the external host device; and A virtualization manager is configured to perform an initialization operation on the plurality of virtual functions based on the virtualization configuration list.
20. The storage device according to claim 19, wherein: The virtualization manager is also configured to allocate resources to the multiple virtual functions based on the virtualization configuration list without the control of the external host device, perform online operations on the multiple virtual functions, perform binding operations on the multiple virtual functions, perform namespace attachment operations on the multiple virtual functions, and set performance information of the multiple virtual functions.
Citation Information
Patent Citations
The structure for all solid secondary battery and solid secondary battery including the same
KR1020230133684A