Computing storage device and operation method of computing system

By introducing an indirect use request processing mechanism into the computing storage device, the problem in the prior art that the computing storage device is difficult to efficiently use multiple processing resources is solved, and a computing system with fast response and efficient resource utilization is realized.

CN119336243APending Publication Date: 2025-01-21SAMSUNG ELECTRONICS CO LTD
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN202410746007.1
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2023-07-20
Filing Date
2024-06-11
Publication Date
2025-01-21

AI Technical Summary

Technical Problem

When the existing computing storage device processes direct usage requests and indirect usage requests, it is difficult for the existing computing storage device to efficiently use the processing resources of multiple computing storage devices, resulting in delays in processing computing requests and waste of resources.

Method used

By introducing an indirect usage request processing mechanism in the computing storage device, the computing storage device is allowed to receive and process the indirect usage request when processing the direct usage request, and when necessary, transfer the direct usage request to other computing storage devices to optimize resource utilization.

Benefits of technology

It achieves rapid response to computing requests and efficient use of processing resources of computing storage devices, reducing data bottlenecks and resource waste in the computing system.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119336243A_ABST
    Figure CN119336243A_ABST
Patent Text Reader

Abstract

A computing storage device and a method of operating a computing system are provided. A computing storage device includes an interface that exchanges signals with a first external source, a non-volatile memory device, a storage controller, a device memory, and a computing engine. While performing a first calculation on first input data acquired from a first external source, the interface receives an indirect use request from a second external source, the indirect use request instructing a calculation engine to perform a second calculation on second input data. The computing engine provides first input data and first intermediate data generated when performing the first computation to the external computing storage device in response to the indirect use request, requests the first computation from the external computing storage device, performs a second computation on second input data loaded from the non-volatile memory device to the device memory, and transmits the second computation to the external computing storage device. And outputting second result data generated by completing the second calculation to a second external source through the interface.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS

[0002] This application claims the priority of Korean Patent Application No. 10-2023-0094463 filed on July 20, 2023 in the Korean Intellectual Property Office, the disclosure of which is incorporated herein by reference in its entirety. Technical Field

[0003] Embodiments of the inventive concept relate to a computing memory device, and a method of operating a computing system including the computing memory device. Background Art

[0004] A general storage device has a function of storing data under the control of a host device. Recently, in order to reduce the computational burden of the host device, a computational storage device (CSD) supporting various computational operations or various applications within the storage device has been developed.

[0005] A computational storage device may include one or more processing resources capable of processing data.

[0006] The computing storage device may have at least two usage models. For example, the computing storage device may have a direct usage model for receiving data from a host in response to a request from the host and processing the received data, and an indirect usage model for loading data into the computing storage device in response to a request from the host and processing the loaded data. Summary of the invention

[0007] An aspect of an embodiment of the inventive concept is to provide a computing storage device and a method of operating a computing system, which can provide a quick response to a computing request by efficiently using processing resources.

[0008] According to one aspect of the inventive concept, a computing storage device includes: an interface for exchanging signals with a first external source, a nonvolatile memory device, a storage controller for controlling the nonvolatile memory device, a device memory, and a computing engine for processing data loaded on the device memory. While performing a first calculation on first input data obtained from the first external source, the interface receives an indirect use request from a second external source, the indirect use request instructing the computing engine to perform a second calculation on second input data stored in the nonvolatile memory device, and the computing engine provides the first input data and first intermediate data generated when performing the first calculation to an external computing storage device different from the computing storage device in response to the indirect use request, requests the first calculation from the external computing storage device, performs the second calculation on the second input data loaded from the nonvolatile memory device to the device memory, and outputs the second result data generated by completing the second calculation to the second external source through the interface.

[0009] According to one aspect of the inventive concept, a computing storage device includes: an interface for exchanging signals with a first external source, a nonvolatile memory device, a storage controller for controlling the nonvolatile memory device, a device memory, and a computing engine for processing data loaded on the device memory. While performing a first calculation on first input data obtained from the first external source, the interface receives an indirect use request from a second external source, the indirect use request instructing the computing engine to perform a second calculation on second input data stored in the nonvolatile memory device, and the computing engine stops the first calculation in response to the indirect use request, performs the second calculation on the second input data loaded from the nonvolatile memory device to the device memory, outputs result data generated by completing the second calculation to the second external source through the interface, and resumes the stopped first calculation.

[0010] According to one aspect of the inventive concept, a method for operating a computing system includes: receiving first input data and a direct use request from a first host by a first computing storage device, and performing a first calculation on the first input data in response to the direct use request. The method also includes: receiving an indirect use request for second input data stored in a non-volatile memory device of the first computing storage device from a second host while the first computing storage device performs the first calculation. The method also includes: providing the first input data, first intermediate data generated when performing the first calculation, and request information for the direct use request to the second computing storage device in response to the indirect use request, loading the second input data from the non-volatile memory device, performing a second calculation on the loaded second input data, and providing the second result data generated when the second calculation is completed to the second host. The method also includes: performing a first calculation on unprocessed data in the first input data based on the request information and the first input data by the second computing storage device, generating first result data by accumulating the first calculation result on the unprocessed data to the first intermediate data, and providing the first result data to the first host. BRIEF DESCRIPTION OF THE DRAWINGS

[0011] The above and other features of the present inventive concept will become more apparent by describing in detail embodiments of the present inventive concept with reference to the accompanying drawings, in which:

[0012] Figure 1 is a block diagram illustrating a computing system according to an embodiment.

[0013] Figure 2 and Figure 3 is a block diagram illustrating a usage model of a computational storage device according to an embodiment.

[0014] Figure 4 is a block diagram illustrating a computing system according to an embodiment.

[0015] Figure 5 is a flow chart illustrating the operation of a computational storage device according to an embodiment.

[0016] Figures 6 to 10 is a block diagram illustrating the operation of a computing system according to an embodiment.

[0017] Fig.11 is a block diagram illustrating the operation of a computing system according to an embodiment.

[0018] Fig.12 is a flow chart illustrating the operation of a computing system according to an embodiment.

[0019] Figures 13 to 15 is a block diagram illustrating the operation of a computing system according to an embodiment. DETAILED DESCRIPTION

[0020] Embodiments of the inventive concept will be described more fully below with reference to the accompanying drawings. Like reference numerals may represent like elements throughout the drawings.

[0021] It will be understood that the terms "first", "second", "third", etc. are used herein to distinguish one element from another element, and the elements are not limited by these terms. Therefore, the "first" element in an embodiment may be described as the "second" element in another embodiment.

[0022] It should be understood that descriptions of features or aspects within each embodiment should typically be considered as available for other similar features or aspects in other embodiments, unless the context clearly dictates otherwise.

[0023] As used herein, the singular forms "a", "an", "an" and "the" are used in conjunction with the

[0024] "A" and "the" are intended to include the plural forms as well.

[0025] Figure 1 is a block diagram illustrating a computing system according to an embodiment.

[0026] Reference Figure 1 , the computing system 1 may include a computing storage device 10 and a host 20. In an embodiment, the computing system 1 may be included in a user device (such as, for example, a personal computer, a laptop computer, a server, a media player, a digital camera, etc.), or included in an automobile device (such as, for example, a navigation system, a black box, an electrical / electronic device for a vehicle, etc.). In an embodiment, the computing system 1 may be a mobile system, such as, for example, a portable communication terminal (mobile phone), a smart phone, a tablet PC, a wearable device, a medical device, or an Internet of Things (IOT) device.

[0027] The host 20 may control the overall operation of the computing system 1. The computing storage device 10 may store data or perform calculations on the data in response to a request from the host 20. For example, the host 20 may transfer a processing task to the computing storage device 10. The computing storage device 10 may execute a program for performing the processing task, and may provide result data generated when executing the program to the host 20.

[0028] The computing storage device 10 may include a storage controller 100, a non-volatile memory device (NVM) 200, a computing engine 300 (also referred to as a computing engine), a device memory 400, an interface 500, and a flow controller 600. The storage controller 100 may also be referred to as a storage controller circuit, the computing engine 300 may also be referred to as a computing engine circuit, and the flow controller 600 may also be referred to as a flow controller circuit.

[0029] The computing storage device 10 may include a storage medium for storing data according to a request from the host 20. For example, the computing storage device 10 may include a solid state drive (SSD). When the computing storage device 10 includes an SSD, the SSD may comply with the Non-Volatile Memory Express (NVMe) standard.

[0030] The storage medium may include a storage controller 100 and a nonvolatile memory device 200. The storage controller 100 may control the operation of the nonvolatile memory device 200, and may manage the nonvolatile memory device 200. For example, the storage controller 100 may provide the nonvolatile memory device 200 with data to be stored in the nonvolatile memory device 200, or may receive data read from the nonvolatile memory device 200.

[0031] When the nonvolatile memory device 200 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 nonvolatile memory device 200 may include a magnetic RAM (MRAM), a spin-transfer torque MRAM, a conductive bridge RAM (CBRAM), a ferroelectric RAM (FeRAM), a phase RAM (PRAM), and a resistive memory (resistive RAM), as well as various other types of memory.

[0032] The computing storage device 10 may include at least one computing engine 300 for processing data according to a request from the host 20. In an embodiment, the computing engine 300 may include a field programmable gate array (FPGA), a graphics processing unit (GPU), etc.

[0033] The computing engine 300 can perform various types of calculations, operations, etc. For example, the computing engine 300 can perform at least a portion of various programs or functions, such as compression, database filtering, encryption, erasure coding, deduplication, scatter-gather, pipelining, redundant array of independent disks (RAID), regular expressions, etc.

[0034] In an embodiment, a program may be referred to as a compute storage function (CSF). A CSF may define a set of operations that may be performed in the compute engine 300. For example, a CSF may define any of the various programs described above.

[0035] The computing engine 300 can perform computing without the intervention of the host 20. For example, the computing storage device 10 can perform computing on data using the computing engine 300 without providing the data stored in the non-volatile memory device 200 to the host 20. In addition, the computing storage device 10 can provide the result data to the host 20. Therefore, the computing of the computing system 1 can be transferred to the computing storage device 10, and the data bottleneck phenomenon of the computing system 1 can be alleviated.

[0036] The device memory 400 may store data related to the operation of the computing storage device 10. The device memory 400 may include an operating system (OS) area 410, a program area 420, a buffer memory 430, and a shared memory 440.

[0037] An OS for controlling the overall operation of the computing storage device 10 may be loaded into the OS area 410. A program that may be executed by the computing engine 300 may be loaded into the program area 420. For example, the program area 420 may include a plurality of program slots.

[0038] Data to be stored in the nonvolatile memory device 200 or data to be processed in the computing engine 300 may be stored in the buffer memory 430. In addition, data output from the nonvolatile memory device 200 or data processed by the computing engine 300 may be stored in the buffer memory 430.

[0039] The interface 500 may provide an interface connection between the computing storage device 10 and the host 20 based on a protocol defined by a standard such as, for example, Peripheral Component Interconnect Express (PCIe), Compute Express Link (CXL), etc. For example, the interface 500 may receive a data packet defined in the protocol from the host 20. The data packet may contain a request or data associated with the request.

[0040] The flow controller 600 may provide the request received through the interface 500 to the storage controller 100 or the computing engine 300. For example, the storage request provided to the storage controller 100 and the computing request provided to the computing engine 300 may have different formats. The flow controller 600 may divide the request into a storage request and a computing request based on the format of the request received through the interface 500, may provide the storage request to the storage controller 100, and may provide the computing request to the computing engine 300.

[0041] In an embodiment, the storage controller 100 and the computing engine 300 may be implemented as separate chips. When the storage controller 100 and the computing engine 300 are implemented as separate chips, the flow controller 600 may also be implemented as a separate chip, such as, for example, a PCIe bridge. However, embodiments of the inventive concept are not limited thereto, and according to an embodiment, the storage controller 100, the computing engine 300, and the flow controller 600 may be integrated into a chip.

[0042] The computing storage device 10 may provide a plurality of usage models to the host 20. For example, the plurality of usage models may include a direct usage model and an indirect usage model. The direct usage model may refer to a usage model in which the computing storage device 10 processes data provided from the host 20 together with a command and provides a response to the command to the host 20. In addition, the indirect usage model may refer to a usage model in which the computing storage device 10 processes data stored in the nonvolatile memory device 200 in response to a command from the host 20 and provides a response to the command to the host 20.

[0043] Because the computing storage device 10 can provide multiple usage models, the host 20 can efficiently transfer computations on data held by the host 20 and computations on data stored in the computing storage device 10 to the computing storage device 10 .

[0044] Hereinafter, a request instructing the computing storage device 10 to perform a calculation on data provided from the host 20 according to a direct usage model may be referred to as a direct usage request. In addition, a request instructing the computing storage device 10 to perform a calculation on data stored in the computing storage device 10 according to an indirect usage model may be referred to as an indirect usage request.

[0045] In order to efficiently transfer multiple computations, the computing system 1 may include multiple computation storage devices that support direct use requests and indirect use requests. Direct use requests may be processed on computation storage devices that are capable of performing the requested computations, while indirect use requests may be processed only on specific computation storage devices in which data to be computed in response to the indirect use requests is stored. Since the computation storage devices that can process indirect use requests are limited, it may be difficult to efficiently use the processing resources of multiple computation storage devices.

[0046] According to an embodiment, when a direct use request and an indirect use request compete in a computing storage device, the computing storage device may first process the indirect use request, and may provide the direct use request to a different computing storage device, thereby quickly processing the indirect use request and the direct use request, and efficiently using the processing resources of the computing storage device.

[0047] Hereinafter, before describing in detail the operation of the computing system according to the embodiment, a usage model of the computing storage device will be described in detail.

[0048] Figure 2 and Figure 3 is a block diagram illustrating a usage model of a computational storage device according to an embodiment.

[0049] Figure 2 Operation of a computing system according to a direct-use model is shown. Figure 2 The computing system 1 may correspond to reference Figure 1 A computing system 1 is described.

[0050] In operation S11, the host 20 may provide input data related to the calculation to be transferred to the calculation storage device 10 to the calculation storage device 10. The calculation storage device 10 may store the input data provided from the host 20 in an allocated area of ​​the buffer memory 430. The area allocated to store data related to the calculation may be referred to as an allocated function data memory (AFDM).

[0051] In operation S12 , the host 20 may provide a computing request instructing execution of a target program to perform computing to the computing storage device 10 .

[0052] For example, in order to request the computing storage device 10 to perform a filtering calculation on the input data, the host 20 may provide a computing request indicating a database filtering program to the computing storage device 10. The computing request may also indicate an address of a host memory area for storing result data generated by performing the calculation on the input data. The flow controller 600 may provide the computing request received through the interface 500 to the computing engine 300.

[0053] In operation S13, the calculation engine 300 may execute the target program indicated in the calculation request to perform calculations on the input data stored in the allocated area of ​​the buffer memory 430. The calculation engine 300 may store result data generated by completing the calculations on the input data in the buffer memory 430.

[0054] In operation S14, the calculation engine 300 may provide the result data stored in the buffer memory 430 to the host 20. For example, the calculation engine 300 may provide the result data to the host 20 by providing the result data to the host memory area through the interface 500.

[0055] Since the computation storage device 10 supports a direct use model, the host 20 can transfer computation on input data held by the host 20 to the computation storage device 10 .

[0056] Figure 3 Operation of a computing system according to an indirect usage model is shown. Figure 3 The computing system 1 may correspond to reference Figure 1 A computing system 1 is described.

[0057] In operation S21, the host 20 may provide a storage request to the computing storage device 10. The storage request may indicate an address, such as a logical block address, of data stored in the computing storage device 10. In addition, the storage request may be associated with a target program corresponding to a computation to be performed on the data stored in the computing storage device 10.

[0058] In operation S22, the storage controller 100 may obtain the storage request through the interface 500, and may load the input data stored in the nonvolatile memory device 200 into the buffer memory 430 in response to the storage request. For example, the storage controller 100 may specify an area for storing the input data of the nonvolatile memory device 200 by interpreting the storage request. In addition, the storage controller 100 may store the input data stored in the nonvolatile memory device 200 in an area of ​​the buffer memory 430 allocated for executing the target program.

[0059] In operation S23, the storage controller 100 may provide a command instructing the computing engine 300 to perform a computation on the input data by executing the target program. For example, the storage controller 100 may interpret the storage request to specify the target program associated with the storage request, and may provide a command instructing the computing engine 300 to execute the target program on the data stored in the allocated area.

[0060] In operation S24 , the calculation engine 300 may perform calculations on the input data by executing the target program, and store result data generated by completing the calculations in the allocated area of ​​the buffer memory 430 .

[0061] In operation S25 , the memory controller 100 may provide the result data to the host 20 through the interface 500 .

[0062] Since the computing storage device 10 supports an indirect usage model, the host 20 can request the computing storage device 10 to perform calculations on the data stored in the computing storage device 10 itself to obtain only output data without loading the data to the host 20. Therefore, the data bottleneck phenomenon of the computing system 1 can be alleviated.

[0063] The computing system may include multiple hosts and multiple computing storage devices. According to an embodiment, the computing storage device may schedule competing direct use requests and indirect use requests so that multiple hosts can efficiently use processing resources provided by the multiple computing storage devices.

[0064] Figure 4 is a block diagram illustrating a computing system according to an embodiment.

[0065] Reference Figure 4 The computing system 2 may include a plurality of computing storage devices (CSDs) 11 to 13 , a plurality of hosts 21 to 23 , and an interface switch 30 . In an embodiment, the computing system 2 may further include a plurality of storage devices (SSDs) 41 and 42 .

[0066] Each of the plurality of computing storage devices 11 to 13 may correspond to a reference Figure 1 Each of the plurality of hosts 21 to 23 may correspond to a computing storage device 10 described above. Figure 1 The host 20 described. In an embodiment, each of the plurality of hosts 21 to 23 may include a host processor and a host memory. For example, when the plurality of hosts 21 to 23 are virtual machines, the host processor and the host memory may be resources extracted from a physical processor and a physical memory, respectively.

[0067] When the plurality of hosts 21 to 23 are virtual machines, the processor may fully control the functions and operations of the computing system 2. For example, the processor may control the computing system 2 by executing the host OS. The memory may store data for executing the plurality of hosts 21 to 23. For example, the memory may load the host OS and may store data processed in the computing system 2.

[0068] The processor may run a hypervisor on a host OS. The hypervisor may abstract physical resources such as a processor or a memory, and may provide the abstracted physical resources to the plurality of hosts 21 to 23 as a virtual device including a host processor and a host memory. Each of the plurality of hosts 21 to 23 may execute a guest OS using the virtual device, and may execute at least one application on the guest OS.

[0069] The interface switch 30 may perform interface connection between the plurality of hosts 21 to 23 and the input / output device based on a specified protocol. For example, the interface switch 30 may include a PCIe switch, a CXL switch, etc. The input / output device may include a plurality of computing storage devices 11 to 13, and in an embodiment, may also include a plurality of storage devices 41 and 42.

[0070] The plurality of hosts 21 to 23 can transfer computations on data by providing direct use requests and indirect use requests to the plurality of computation storage devices 11 to 13 via the interface switch 30. The direct use request may be a request for data stored in the host, and thus may be processed by any one of the plurality of computation storage devices 11 to 13. The indirect use request may be a request for data stored in a specific computation storage device, and thus may be processed only in the specific computation storage device.

[0071] When the first computing storage device 11 receives an indirect usage request that can only be processed by the first computing storage device 11 while processing a direct usage request, and processes the indirect usage request after completing the processing of the direct usage request, it may be difficult to efficiently use the processing resources of the plurality of computing storage devices 11 to 13. For example, the processing of the indirect usage request may be delayed until the processing of the direct usage request can be completed, and the second computing storage device 12 and the third computing storage device 13 may remain in an idle state unless other requests are processed.

[0072] According to an embodiment, when the first computing storage device 11 receives an indirect use request while processing a direct use request, the processing of the direct use request may be stopped, and the processing of the indirect use request may be performed. In addition, the first computing storage device 11 may provide a request to the second computing storage device 12 or the third computing storage device 13 to process the stopped direct use request.

[0073] According to the embodiment, when a direct use request and an indirect use request compete in the first computing storage device 11, the indirect use request that can be processed only by the first computing storage device 11 can be quickly processed. In addition, since the direct use request can be processed in the computing storage device in an idle state, the processing resources of the computing storage devices 11 to 13 can be efficiently used.

[0074] In the following, reference will be made to Figures 5 to 15 A method of operating a computing system according to an embodiment is described in more detail.

[0075] Figure 5 is a flow chart showing the operation of a computing storage device according to an embodiment. For example, Figure 5 The operations shown in Figure 4The first calculation described is performed in the storage device 11.

[0076] Reference Figure 5 In operation S31, the first computing storage device 11 may receive an indirect use request from the second host 22 while performing the first computing according to the direct use request from the first host 21. Figure 6 Operation S31 is shown in detail.

[0077] In operation S32, the first computing storage device 11 may stop the first computing being executed, and may provide the second computing storage device 12 with the first input data associated with the direct use request, the first intermediate data generated when the direct use request is executed, and the request information for the direct use request. Figure 7 and Figure 8 Operation S32 is shown in detail.

[0078] In operation S33, the first computing storage device 11 may obtain second input data associated with the indirect use request from a nonvolatile memory device included in the first computing storage device 11, and may process the indirect use request by performing a second computation on the second input data. Fig. 9 Operation S33 is shown in detail.

[0079] In operation S34, the first computing storage device 11 may provide the second result data generated by completing the indirect use request to the second host 22. Fig.10 Operation S34 is shown in detail.

[0080] Figures 6 to 10 is a block diagram illustrating the operation of a computing system according to an embodiment.

[0081] Figure 6 As shown in reference Figure 4 A portion of the configuration of computing system 2 is described. Figure 6 A first host 21 , a second host 22 , a first computing storage device 11 , a second computing storage device 12 , and an interface switch 30 are shown.

[0082] The first computing storage device 11 may include a first storage controller 101, a first non-volatile memory device 201, a first computing engine 301, a first buffer memory 431, a first shared memory 441, and a first interface 501. In addition, the second computing storage device 12 may include a second storage controller 102, a second non-volatile memory device 202, a second computing engine 302, a second buffer memory 432, a second shared memory 442, and a second interface 502.

[0083] Figure 6Operations S311 to S313 may be compared with those of Figure 5 The described operation S31 is related.

[0084] In operation S311, the first host 21 may provide a direct use request and first input data Input Data1 to the first computing storage device 11. For example, when the first host 21 wants to request the first computing storage device 11 to perform a filtering calculation on the first input data, the direct use request may indicate a database filtering program.

[0085] The first interface 501 may store the first input data from the first host 21 in the allocated area of ​​the first buffer memory 431 , and may provide a direct use request from the first host 21 to the first computing engine 301 .

[0086] In operation S312, the first calculation engine 301 may perform a first calculation on the first input data stored in the allocated area of ​​the first buffer memory 431. For example, the first calculation engine may perform a filtering calculation on the first input data by executing a database filtering program in response to a direct use request. Figure 6 , a program for performing a first calculation is shown as a first program Program1.

[0087] The first intermediate data Intermediate Data1 generated when the first calculation is performed by the first calculation engine 301 may be stored in the allocated area of ​​the first buffer memory 431. For example, when the filtering calculation is performed on the first input data including a plurality of records, each of the records may be sequentially checked to see if it satisfies the filtering condition, and the records matching the filtering condition may be stored in a separate area different from the input data. When the filtering calculation is performed, for example, when records for which the filtering calculation has not yet been performed remain, the records stored in the separate area may be referred to as the first intermediate data.

[0088] When the first computing storage device 11 processes the direct use request from the first host 21, the second host 22 may provide an indirect use request to the first computing storage device 11 in operation S313. The indirect use request may be a request to instruct to perform a second computation on the second input data Input Data2 stored in the first nonvolatile memory device 201.

[0089] According to an embodiment, the first computing storage device 11 may move the direct use request being executed to the second computing storage device 12 in response to the indirect use request from the second host 22 , and may execute the indirect use request.

[0090] For example, the first interface 501 may provide an interrupt signal to the first computing engine 301 in response to the indirect use request, and may provide the indirect use request to the first storage controller 101. The first computing engine 301 may stop the direct use request in response to the interrupt signal, and may move the stopped direct use request to the second computing storage device 12.

[0091] The second computing storage device 12 may be a device equipped with a program for executing the direct use request. Equipping the second computing storage device 12 with a program may indicate that the program is installed by a supplier or downloaded by a user and is stored in the second non-volatile memory device 202, etc. For example, when the direct use request is a filtering request, the second computing storage device 12 may be selected from computing storage devices equipped with a database filtering program.

[0092] Figure 7 As shown in reference Figure 6 The computing system 2 is described.

[0093] Figure 7 Operations S321 and S322 may be compared with those of Figure 5 The first computing storage device 11 may perform operations S321 and S322 to move the direct use request to the second computing storage device 12 .

[0094] Reference Figure 7 In operation S321 , the first computing storage device 11 may move the first input data and the first intermediate data stored in the first buffer memory 431 to the second buffer memory 432 of the second computing storage device 12 .

[0095] According to an embodiment, to move data to the second computing storage device 12 , the first computing storage device 11 may perform direct memory access (DMA) in a point-to-point (P2P) method defined in a standard such as, for example, PCIe, CXL, etc.

[0096] For example, the first computing engine 301 may include a DMA engine. The first computing engine 301 may use the DMA engine to provide the first input data and the first intermediate data stored in the first buffer memory 431 to the second buffer memory 432 without intervention or control of the first host 21. For example, the first input data and the first intermediate data may be moved through the interface switch 30.

[0097] In an embodiment, the first computing engine 301 may provide a P2P command to the second computing storage device 12. The P2P command may indicate a source area for storing the first input data and the first intermediate data in the first buffer memory 431, and a destination area for storing the first input data and the first intermediate data in the second buffer memory 432. The source area and the destination area may be represented by their respective starting addresses and sizes.

[0098] In response to the P2P command, the second computing storage device 12 may retrieve the first input data and the first intermediate data from the first buffer memory 431 , and may store the retrieved data in a destination area of ​​the second buffer memory 432 .

[0099] The first calculation memory device 11 can send not only data for performing calculations but also information related to the direct use request to the second calculation memory device 12 .

[0100] In operation S322 , the first computing storage device 11 may send request information indicating a target program of a direct use request, a host memory area storing result data of the direct use request, and a destination area of ​​the second buffer memory 432 storing first input data and first intermediate data.

[0101] In an embodiment, the first computing storage device 11 may transmit the request information using the second shared memory 442 of the second computing storage device 12. The first computing storage device 11 may store the request information in the second shared memory 442 without intervention or control of the first host 21. In an embodiment, the first computing storage device 11 may access the second shared memory 442 through the interface switch 30, which operates based on a protocol defined in a standard such as, for example, PCIe, CXL, etc.

[0102] The second computing storage device 12 that has acquired the first input data, the first intermediate data, and the request information may verify the validity of the first intermediate data based on the request information. For example, the validity of the first intermediate data may be verified by the second computing engine 302.

[0103] Figure 8 is a block diagram illustrating a method in which the second computing storage device 12 verifies the validity of the first intermediate data.

[0104] Reference Figure 8 , the second computing storage device 12 can verify the validity of the first intermediate data by the following steps: executing a target program determined based on the request information for a portion of the first input data to generate comparison data COMP, and comparing the portion of the first intermediate data corresponding to the comparison data COMP with the comparison data COMP.

[0105] For example, the first input data may include data processed and unprocessed by the first computing storage device 11. When the target program is a database filtering program, the second computing engine 302 may perform filtering calculations on a portion of the processed data to generate comparison data COMP, and may determine whether the comparison data COMP matches a record included in the first intermediate data to verify the validity of the first intermediate data.

[0106] In an embodiment, the second computing engine 302 may perform a hash calculation such as a cyclic redundancy check (CRC) on the comparison data COMP to generate a first hash value. In addition, the second computing engine 302 may perform a hash calculation on a portion of the first intermediate data corresponding to the comparison data COMP to generate a second hash value. The second computing engine 302 may compare the first hash value and the second hash value to verify the validity of the first intermediate data.

[0107] When it is determined that the first intermediate data is valid, the second computing storage device 12 can perform calculations on the unprocessed data in the first input data to complete the direct use request for the first input data. When it is determined that the first intermediate data is invalid, the second computing storage device 12 can perform calculations on the processed data from the first input data again.

[0108] Fig. 9 As shown in reference Figure 6 The computing system 2 is described.

[0109] Fig. 9 Operations S331 to S333 may be compared with those of Figure 5 The operation S33 described above is related. Fig. 9 , the first computing storage device 11 can execute the indirect use request from the second host 22 , and the second computing storage device 12 can execute the direct use request from the first computing storage device 11 .

[0110] In operation S331, the second input data Input Data2 for processing the indirect use request may be loaded from the first nonvolatile memory device 201 to the allocated area of ​​the first buffer memory 431. Figure 3 As described, the indirect use request may be a storage request associated with the target program. The first storage controller 101 may load the second input data stored in the first non-volatile memory device 201 into the allocation area in response to the indirect use request sent from the interface 501. In addition, the first storage controller 101 may provide a command to execute the target program to the first computing engine 301.

[0111] In operation S332, the first computing engine 301 may execute a target program for processing the indirect use request. For example, the target program may be a decryption program. Fig. 9 , the target program is shown as the second program Program2. The first computing engine 301 may perform a second computation on the second input data stored in the allocated area of ​​the first buffer memory 431 by executing the target program. Data generated by performing the second computation on the second input data may be stored in a separate area relative to the second input data of the first buffer memory 431.

[0112] In operation S333, the second calculation engine 302 may perform calculations on the first input data stored in the allocated area of ​​the second buffer memory 432 by executing the first program. For example, the second calculation engine 302 may execute the first program with reference to the request information from the first calculation storage device 11. In addition, the second calculation engine 302 may perform calculations on unprocessed data in the stored first input data that has not been calculated by the first calculation storage device 11. In addition, data generated by performing calculations on the unprocessed data may be accumulated in the first intermediate data stored in the allocated area.

[0113] Operations S331 and S332 of the first computing storage device 11 and operation S333 of the second computing storage device 12 may be performed in parallel. Therefore, processing resources of multiple computing storage devices may be used efficiently.

[0114] Fig.10 As shown in reference Figure 6 The computing system 2 is described.

[0115] Fig.10 Operations S341 and S342 may be compared with those of Figure 5 The operation S34 described is related.

[0116] In operation S341 , the first computing storage device 11 may provide the second host 22 with second result data Result Data2 generated by completing the process of the indirect use request.

[0117] For example, when the first computing engine 301 completes computing the second input data, data generated by performing the computing on the second input data may be stored in the first buffer memory 431 as second result data. The first computing engine 301 may store the second result data in the second host memory area of ​​the second host 22 with reference to the indirect use request from the second host 22. The second host 22 may obtain the second result data by accessing the second host memory area.

[0118] In operation S342 , the second computing storage device 12 may provide the first host 21 with first result data generated by completing the processing of the direct use request.

[0119] For example, when the second computing engine 302 completes the calculation of the first input data, the data accumulated as the first intermediate data may be stored in the second buffer memory 432 as the first result data Result Data 1. The second computing engine 302 stores the first result data in the first host memory area determined with reference to the request information obtained from the first computing storage device 11. In addition, the first host 21 may obtain the first result data by accessing the first host memory area.

[0120] According to an embodiment, an indirect use request for second input data executable only on the first computing storage device 11 may be processed without waiting for completion of a direct use request executed on the first computing storage device 11. In addition, since a direct use request executed in the first computing storage device 11 may be processed in the second computing storage device 12, the direct use request may also be processed without waiting for completion of the indirect use request.

[0121] Therefore, the computing system 2 can efficiently use the processing resources of the computing storage devices 11 and 12 to quickly process competing direct use requests and indirect use requests.

[0122] According to reference Figures 6 to 10 The described embodiment shows that when the first computing storage device 11 sends a direct use request to the second computing storage device 12 , the first computing storage device 11 transmits the first input data to the second computing storage device 12 , but the present inventive concept is not limited thereto.

[0123] Fig.11 is a block diagram illustrating the operation of a computing system according to an embodiment.

[0124] Fig.11 As shown in reference Figure 4 The computing system 2 is described.

[0125] Fig.11 Operations S336 to S338 may be compared with those of Figure 5 The operation S33 described above is related to the operation S33 described above. Fig. 9 Different from the description, when the first computing storage device 11 sends a direct use request to the second computing storage device 12 , the first input data may be provided from the first host 21 to the second computing storage device 12 .

[0126] In operation S336, the first host 21 may provide the first input data that is the same as the first input data provided to the first computing storage device 11 to the second computing storage device 12 in response to the request from the first computing engine 301. For example, the first computing storage device 11 may provide a request to the first host 21 to provide the first input data stored in the host memory to the second computing storage device 12. The second computing storage device 12 may store the first input data in an allocated area of ​​the second buffer memory 432.

[0127] In operation S337, the first computing engine 301 may provide the first intermediate data stored in the first buffer memory 431 to the allocated area of ​​the second buffer memory 432. Figure 8 As described above, the first computing engine 301 may provide the first intermediate data to the second buffer memory 432 by performing direct memory access in a P2P manner.

[0128] In operation S338 , the first computing engine 301 may provide request information related to the direct use request to the second shared memory 442 .

[0129] When the first computing storage device 11 receives the indirect use request while executing the direct use request, there may not be a different computing storage device that can alternatively execute the direct use request in the computing system 2. For example, all remaining computing storage devices of the computing system 2 may be in a busy state, or may be in a state where the target program of the direct use request is not set in the computing storage device in the idle state.

[0130] According to an embodiment, when there is no different computing storage device that can alternatively perform the direct use request, the first computing storage device may perform the indirect use request before the direct use request.

[0131] Fig.12 is a flow chart illustrating the operation of a computing system according to an embodiment. For example, Fig.12 The operations shown in Figure 4 The described first calculation is performed in the storage device 11 .

[0132] Reference Figure 4 and Fig.12 In operation S41, the first computing storage device 11 may receive an indirect use request from the second host 22 while performing the first computing according to the direct use request from the first host 21. Fig.13 Operation S41 is shown in detail.

[0133] In operation S42, the first computing storage device 11 may stop the execution of the direct use request and may execute the indirect use request on the second input data acquired from the nonvolatile memory device included in the first computing storage device 11. Fig.14 Operation S42 is shown in detail.

[0134] In operation S43, the first computing storage device 11 may provide the second result data generated by completing the indirect use request to the second host 22, and may resume the execution of the stopped direct use request. Fig.15 Operation S43 is shown in detail.

[0135] Figures 13 to 15 is a block diagram illustrating the operation of a computing system according to an embodiment.

[0136] Fig.13 As shown in reference Figure 4 A portion of the configuration of a computing system 2 is described. Fig.13 A first host 21 , a second host 22 , a first computing storage device 11 , and an interface switch 30 are shown.

[0137] In operation S411, the first host 21 may provide a direct use request and first input data Input Data1 to the first computing storage device 11. The first input data may be stored in an allocated area of ​​the first buffer memory 431.

[0138] In operation S412, the first calculation engine 301 may perform a first calculation on the first input data stored in the allocated area of ​​the first buffer memory 431. First intermediate data Intermediate Data1 generated when the first calculation engine 301 performs the first calculation may be stored in the allocated area of ​​the first buffer memory 431.

[0139] In operation S413, the first computing storage device 11 may receive an indirect use request for the second input data Input Data2 stored in the first nonvolatile memory device 201 from the second host 22. In an embodiment, the computing system 2 does not have a different computing storage device that may alternatively perform the direct use request.

[0140] According to an embodiment, the first computing storage device 11 may stop the direct use request being executed, and may first execute the indirect use request.

[0141] Fig.14 As shown in reference Fig.13 The configuration of computing system 2 is described.

[0142] In operation S421, the second input data stored in the first nonvolatile memory device 201 may be stored in an allocated area of ​​the first buffer memory 431. For example, the memory controller 101 may load the second input data stored in the first nonvolatile memory device 201 into the first buffer memory 431.

[0143] In operation S422 , the first calculation engine 301 may stop the execution of the direct use request and may execute the second program Program2 to execute the indirect use request, thereby performing a second calculation on the second input data of the first buffer memory 431 .

[0144] Fig.15 As shown in reference Fig.13 The configuration of computing system 2 is described.

[0145] In operation S431, second result data generated by performing the second calculation on the second input data may be provided to the second host 22. For example, the first calculation engine 301 may store the second result data in the allocated area of ​​the first buffer memory 431. In addition, in response to the indirect use request, the first storage controller 101 may provide the second result data Result Data2 stored in the allocated area of ​​the first buffer memory 431 to a designated host memory area of ​​the second host 22.

[0146] In operation S432, the first calculation engine 301 may resume the stopped first calculation. The first input data and the first intermediate data Intermediate Data1 stored in the allocated area of ​​the first buffer memory 431 may be maintained until the first calculation is resumed.

[0147] In the state where the direct use request is stopped, different computing storage devices of the computing system 2 may execute the direct use request. For example, the computing storage device may be switched from a busy state to an idle state, or may include a program for executing the first calculation in the computing storage device.

[0148] In an embodiment, when a different computation storage device capable of executing the first computation is sensed, the first computation storage device 11 may provide the stopped first computation to the different computation storage device.

[0149] According to an embodiment, when a request with an indirect usage model and a request with a direct usage model compete, the computing storage device may first process the request with the indirect usage model, and may provide the request with the direct usage model to a different computing storage device. As a result, the computing request may be processed quickly, and the processing resources of the computing storage device may be used efficiently.

[0150] According to an embodiment, when a request with an indirect usage model and a request with a direct usage model compete in a computing storage device, the request with the indirect usage model can be processed first, and the request with the direct usage model can be provided in a different computing storage device. Since the competing computing requests can be processed in parallel, the computing requests can be processed quickly, and the processing resources of the computing storage device included in the computing system can be used efficiently.

[0151] As is conventional in the field of the present invention, embodiments are described and illustrated in the accompanying drawings according to functional blocks, units and / or modules. It will be appreciated by those skilled in the art that these blocks, units and / or modules are physically implemented by electronic (or optical) circuits, such as logic circuits, discrete components, microprocessors, hard-wired circuits, memory elements, wiring connectors, etc., and can be formed using semiconductor-based manufacturing techniques or other manufacturing techniques. In the case of blocks, units and / or modules implemented by microprocessors or the like, they can be programmed using software (e.g., microcode) to perform the various functions discussed herein, and can be optionally driven by firmware and / or software. Alternatively, each block, unit and / or module can be implemented by dedicated hardware, or implemented as a combination of dedicated hardware that performs some functions and a processor (e.g., one or more programmed microprocessors and associated circuit systems) that performs other functions.

[0152] While the inventive concept has been particularly shown and described with reference to embodiments thereof, it will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the spirit and scope of the inventive concept as defined by the appended claims.

Claims

1. A computing storage device, comprising: an interface that exchanges signals with a first external source; a non-volatile memory device; a memory controller that controls the nonvolatile memory device; Device memory; as well as a computing engine that processes data loaded on the device memory, wherein, while performing a first calculation on first input data obtained from the first external source, the interface receives an indirect use request from a second external source, the indirect use request instructing the calculation engine to perform a second calculation on second input data stored in the non-volatile memory device, and The computing engine: in response to the indirect use request, provides the first input data and first intermediate data generated when performing the first computing to an external computing storage device different from the computing storage device, requests the first computing from the external computing storage device, performs the second computing on the second input data loaded from the non-volatile memory device to the device memory, and outputs second result data generated by completing the second computing to the second external source through the interface.

2. The computing storage device according to claim 1, wherein: The computation engine includes a direct memory access engine, and provides the first input data and the first intermediate data to the external computation storage device using the direct memory access engine.

3. The computing storage device according to claim 1, wherein: The computing engine provides the first input data and the first intermediate data to the external computing storage device by performing point-to-point access defined in a PCI Express or a compute express link.

4. The computing storage device according to claim 3, wherein: The computing engine provides a point-to-point command to the external computing storage device, the point-to-point command indicating a source area and a destination area in the external computing storage device, the source area being a location in the device memory where the first input data and the first intermediate data are stored, and the first input data and the first intermediate data are to be stored in the destination area.

5. The computing storage device according to claim 1, wherein: The computing engine requests the first computing from the external computing storage device by providing request information to the external computing storage device, the request information indicating a target program for performing the first computing, a destination area where the first input data and the first intermediate data are to be stored, and an external host memory area for storing first result data generated upon completion of the first computing.

6. The computing storage device according to claim 5, wherein: The computation engine provides the request information to the external computation storage device by storing the request information in a shared memory of the external computation storage device.

7. The computing storage device according to claim 1, wherein: The storage controller loads the second input data stored in the nonvolatile memory device into the device memory in response to the indirect use request received from the interface, and provides a command instructing the calculation engine to perform the second calculation to the calculation engine.

8. The computing storage device according to claim 1, wherein: The computation engine provides a request to the first external source to provide the first input data to the external computational storage device by the first external source.

9. The computing storage device according to claim 1, wherein: The interface includes a peripheral component interconnect express bridge connected to the memory controller and the computing engine, respectively.

10. The computing storage device according to claim 1, wherein: The storage controller and the computing engine are integrated into a chip.

11. A computing storage device, comprising: an interface that exchanges signals with a first external source; a non-volatile memory device; a memory controller that controls the nonvolatile memory device; Device memory; as well as a computing engine that processes data loaded on the device memory, wherein, while performing a first calculation on first input data obtained from the first external source, the interface receives an indirect use request from a second external source, the indirect use request instructing the calculation engine to perform a second calculation on second input data stored in the non-volatile memory device, and The computing engine stops the first computing in response to the indirect use request, performs the second computing on the second input data loaded from the non-volatile memory device to the device memory, outputs result data generated by completing the second computing to the second external source through the interface, and resumes the stopped first computing.

12. The computing storage device according to claim 11, wherein: When an external computation storage device capable of executing the first computation is sensed in a state where the first computation is stopped, the computation engine provides the stopped first computation to the external computation storage device.

13. The computing storage device according to claim 11, wherein: The device memory stores the first input data and first intermediate data generated when the first calculation is performed, and retains the first input data and the first intermediate data until the stopped first calculation is resumed.

14. A method of operating a computing system, comprising: receiving, by a first computational storage device, first input data and a direct use request from a first host, and performing a first computation on the first input data in response to the direct use request; receiving, by the first computing storage device while executing the first computing, from a second host an indirect use request for second input data stored in a non-volatile memory device of the first computing storage device; The first computing storage device provides the first input data, first intermediate data generated when performing the first computing, and request information for the direct usage request to a second computing storage device in response to the indirect usage request, loads the second input data from the nonvolatile memory device, performs a second computing on the loaded second input data, and provides second result data generated when the second computing is completed to the second host; as well as The second calculation storage device performs the first calculation on unprocessed data in the first input data based on the request information and the first input data, generates first result data by accumulating the first calculation result of the unprocessed data into the first intermediate data, and provides the first result data to the first host.

15. The method according to claim 14, further comprising: The second calculation storage device generates comparison data by performing the first calculation on a portion of processed data among the first input data, and verifies the validity of the first intermediate data by determining whether a portion of the first intermediate data corresponding to the comparison data matches the comparison data.

16. The method according to claim 14, further comprising: A computing storage device provided with a target program for executing the first computing is selected as the second computing storage device from among a plurality of computing storage devices including the first computing storage device in the computing system.

17. The method according to claim 14, wherein: The direct use request includes information indicating a host memory area where the first result data is to be stored, Wherein, the method further comprises: including, by the first computing storage device, information indicating the host memory region in the request information; The second computing storage device stores the first result data in the host memory area with reference to the request information; and The first result data is provided to the first host.

18. The method according to claim 14, wherein: The operation of the first computing storage device performing the second computing on the loaded second input data and the operation of the second computing storage device performing the first computing on the unprocessed data are performed in parallel.

19. The method according to claim 14, wherein: The computing system includes a structure that supports interface connections between the first computing storage device, the second computing storage device, the first host, and the second host, The first computing storage device provides the first input data, the first intermediate data, and the request information to the second computing storage device through the construction without intervention of the first host and the second host.

20. The method according to claim 19, further comprising: Providing, by the first computing storage device, a point-to-point command for the first input data and the first intermediate data to the second computing storage device; as well as The first computing storage device stores the request information in a shared memory of the second computing storage device.

Citation Information

Patent Citations

  • Non-oriented electrical steel sheet and method for manufacturing the same

    KR1020230094463A