Electronic system and method of operation thereof, computing storage system, host
By acquiring and utilizing time-related information from the computing and storage system via the host, the problem of the host's inability to effectively coordinate task allocation is solved, resulting in more efficient resource management and program execution.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- YANGTZE MEMORY TECH CO LTD
- Filing Date
- 2025-01-23
- Publication Date
- 2026-07-24
Smart Images

Figure CN122450362A_ABST
Abstract
Description
Technical Field
[0001] This disclosure relates to, but is not limited to, an electronic system and its operating method, a computing storage system, and a host computer. Background Technology
[0002] Semiconductor memories can be roughly divided into two categories, depending on whether they retain stored data when power is off: volatile memory and non-volatile memory. Volatile memory loses stored data when power is off, while non-volatile memory retains stored data when power is off. Summary of the Invention
[0003] According to a first aspect of the present disclosure, an electronic system is provided, the electronic system including a host and a computing storage system coupled to the host; the computing storage system including a controller; the host is configured to: send a first command; the controller is configured to: receive the first command; in response to the first command, acquire time-related information required by the computing storage system to execute each program; the host is configured to: allocate program execution-related tasks based on the time-related information required by the computing storage system to execute each program.
[0004] In some implementations, the information related to the time required for the computing storage system to execute each program includes the time required for the computing storage system to process a unit amount of data when executing each program.
[0005] In some implementations, the host is configured to determine the programs to be executed within a predetermined time period based on information related to the time required for the computing storage system to execute each program.
[0006] In some implementations, the host is configured to: send a second command; the controller is configured to: receive the second command; in response to the second command, obtain information on whether the computing storage system supports querying information related to the time required for the computing storage system to execute each program; the host is configured to: send the first command based on the fact that the computing storage system supports querying information related to the time required for the computing storage system to execute each program.
[0007] In some implementations, the controller is configured to calculate information related to the time required for the computing storage system to execute each program, based on the type of each program and the hardware configuration of the computing storage system.
[0008] In some embodiments, the computing storage system further includes a first storage area coupled to the controller; the controller is configured to: store calculated time-related information required by the computing storage system to execute each program in the first storage area; and, in response to the first command, retrieve the time-related information required by the computing storage system to execute each program from the first storage area.
[0009] In some implementations, the first storage area stores a first table containing information describing each program; the controller is configured to record information related to the time required for the computing storage system to execute each program in the first table.
[0010] In some implementations, the first command includes a command to retrieve a log page.
[0011] In some implementations, the first storage area stores a second table containing information describing the computing namespace; the controller is configured to record information related to whether the computing storage system supports querying the time required for the computing storage system to execute each program in the second table.
[0012] In some implementations, the second command includes an identification command.
[0013] In some embodiments, the computing storage system includes a second storage region coupled to the controller and a computing processing component for executing a program; the controller is configured to: receive a third command; and in response to the third command, configure a corresponding storage region in the second storage region for data generated during the execution of the program by the computing processing component.
[0014] In some embodiments, the computing storage system further includes a third storage area coupled to the controller; the controller is configured to: write input data during program execution stored in the third storage area into the second storage area; and write output data during program execution stored in the second storage area into the third storage area.
[0015] In some embodiments, the computing storage system further includes a non-volatile namespace, a computing namespace, and a subsystem local storage namespace; the computing namespace includes the computing processing component, the subsystem local storage namespace includes the second storage area, and the non-volatile namespace includes the third storage area.
[0016] According to a second aspect of the present disclosure, a computing storage system is provided, the computing storage system including a controller and a first storage area coupled to the controller, the controller being configured to: receive a first command; in response to the first command, obtain time-related information required by the computing storage system to execute each program from the first storage area; and send the time-related information required by the computing storage system to execute each program to a host coupled to the computing storage system.
[0017] In some implementations, the information related to the time required for the computing storage system to execute each program includes the time required for the computing storage system to process a unit amount of data when executing each program.
[0018] In some embodiments, the controller is configured to: receive a second command; in response to the second command, obtain information on whether the computing storage system supports querying information related to the time required for the computing storage system to execute each program; and, based on the fact that the computing storage system supports querying information related to the time required for the computing storage system to execute each program, receive the first command.
[0019] In some implementations, the controller is configured to calculate information related to the time required for the computing storage system to execute each program, based on the type of each program and the hardware configuration of the computing storage system.
[0020] In some implementations, the controller is configured to store information related to the time required for the computing storage system to execute each program into the first storage area.
[0021] According to a third aspect of the present disclosure, a host is provided, the host being configured to: send a first command to a computing storage system coupled to the host; obtain time-related information from the computing storage system regarding the time required for the computing storage system to execute each program; and allocate program execution-related tasks based on the time-related information regarding the time required for the computing storage system to execute each program.
[0022] According to a fourth aspect of the present disclosure, an operating method for an electronic system is provided, comprising: a host sending a first command; a controller receiving the first command; the controller acquiring time-related information required by the computing and storage system to execute each program in response to the first command; and the host allocating program execution-related tasks based on the time-related information required by the computing and storage system to execute each program.
[0023] In some implementations, the information related to the time required for the computing storage system to execute each program includes the time required for the computing storage system to process a unit amount of data when executing each program.
[0024] In some implementations, the host allocates program execution-related tasks based on information related to the time required for the computing and storage system to execute each program, including: the host determining the programs to be executed within a predetermined time period based on information related to the time required for the computing and storage system to execute each program.
[0025] In some embodiments, the operation method further includes: the host sending a second command; the controller receiving the second command; the controller responding to the second command to obtain information related to whether the computing storage system supports querying information related to the time required for the computing storage system to execute each program; and the host sending the first command based on the fact that the computing storage system supports querying information related to the time required for the computing storage system to execute each program.
[0026] In some embodiments, the operation method further includes: the controller calculating information related to the time required for the computing storage system to execute each program based on the type of each program and the hardware configuration of the computing storage system.
[0027] In some embodiments, the computing storage system further includes a first storage area coupled to the controller; the operation method further includes: storing calculated time-related information required by the computing storage system to execute each program in the first storage area; the controller, in response to the first command, obtains the time-related information required by the computing storage system to execute each program, including: the controller, in response to the first command, obtains the time-related information required by the computing storage system to execute each program from the first storage area.
[0028] In some embodiments, the first storage area stores a first table, which records information describing each program; the operation method further includes: the controller recording information related to the time required for the computing storage system to execute each program in the first table.
[0029] In some implementations, the first command includes a command to retrieve a log page.
[0030] In some implementations, the first storage area stores a second table, which records information describing the computing namespace; the operation method further includes: the controller recording information related to whether the computing storage system supports querying the time required for the computing storage system to execute each program in the second table.
[0031] In some implementations, the second command includes an identification command.
[0032] In this embodiment, the host sends a first command. Upon receiving the first command, the controller responds by obtaining time-related information required by the computing and storage system to execute each program. The host can then allocate tasks related to program execution based on this information. This embodiment allows the host to know the time-related information required by the computing and storage system to execute each program, enabling the host to coordinate computing tasks, better evaluate performance, better coordinate computing resources, and efficiently allocate and schedule programs. Attached Figure Description
[0033] Figure 1 A schematic diagram of the structure of an electronic system provided in this disclosure embodiment. Figure 1 ;
[0034] Figure 2 A schematic diagram of the structure of a computing storage system provided in this embodiment of the disclosure. Figure 1 ;
[0035] Figure 3 A schematic diagram illustrating an example of loading a program into an electronic system, provided as an embodiment of this disclosure;
[0036] Figure 4 A schematic diagram illustrating an example of program execution in an electronic system provided by an embodiment of this disclosure;
[0037] Figure 5 A schematic diagram illustrating a memory range and a set of memory ranges provided in an embodiment of this disclosure;
[0038] Figure 6 A schematic diagram of the structure of an electronic system provided in this disclosure embodiment. Figure 2 ;
[0039] Figure 7 A schematic diagram of the structure of an electronic system provided in this disclosure embodiment. Figure 3 ;
[0040] Figure 8 A schematic diagram of the structure of an electronic system provided in this disclosure embodiment. Figure 4 ;
[0041] Figure 9 A schematic diagram of the structure of an electronic system provided in this disclosure embodiment. Figure 5 ;
[0042] Figure 10 This is a schematic diagram of the operation flow of an electronic system provided in an embodiment of the present disclosure;
[0043] Figure 11 A schematic diagram of the structure of an electronic system provided in this disclosure embodiment. Figure 6 ;
[0044] Figure 12 A schematic diagram of the structure of a computing storage system provided in this embodiment of the disclosure. Figure 2 ;
[0045] Figure 13 This is a flowchart illustrating an operation method of an electronic system provided in an embodiment of the present disclosure. Detailed Implementation
[0046] Exemplary embodiments of the present disclosure will now be described in more detail with reference to the accompanying drawings. While exemplary embodiments of the present disclosure are shown in the drawings, it should be understood that the present disclosure may be implemented in various forms and should not be limited to the specific embodiments set forth herein. Rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the disclosure to those skilled in the art.
[0047] In the following description, numerous specific details are set forth in order to provide a more thorough understanding of this disclosure. However, it will be apparent to those skilled in the art that this disclosure may be practiced without one or more of these details. In other instances, to avoid confusion with this disclosure, certain technical features well-known in the art have not been described; that is, not all features of actual embodiments are described herein, nor are well-known functions and structures described in detail.
[0048] In the accompanying drawings, the same reference numerals denote the same elements throughout.
[0049] It should be understood that spatial relation terms such as “below,” “under,” “below,” “below,” “above,” “above,” etc., are used herein for convenience of description to describe the relationship between one element or feature shown in the figure and other elements or features. It should be understood that, in addition to the orientation shown in the figure, spatial relation terms are intended to also include different orientations of the device in use and operation. For example, if the device in the figure is flipped, then the element or feature described as “below” or “below” other elements or features will be oriented “above” other elements or features. Therefore, the exemplary terms “below” and “under” can include both upper and lower orientations. The device may be otherwise oriented (rotated 90 degrees or otherwise) and the spatial descriptive terms used herein will be interpreted accordingly.
[0050] The terminology used herein is for the purpose of describing particular embodiments only and is not intended to limit this disclosure. When used herein, the singular forms “a,” “an,” and “the” are also intended to include the plural forms unless the context clearly indicates otherwise. It should also be understood that the terms “comprise” and / or “comprising,” when used in this specification, identify the presence of the stated features, integers, steps, operations, elements, and / or components, but do not exclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and / or groups. When used herein, the term “and / or” includes any and all combinations of the associated listed items.
[0051] Figure 1 This is a schematic diagram of the structure of an electronic system provided in an embodiment of the present disclosure. Figure 2 This is a schematic diagram of the structure of a computing storage system provided in an embodiment of the present disclosure.
[0052] Reference Figure 1The electronic system 100 may include a host 110 and at least one computing storage system 120. The host 110 may include a host processor 111 and a host memory 112. The host processor 111 controls the overall operation of the host 110. The host processor 111 may be implemented as at least one of various processing units, including, for example, a central processing unit (CPU), an application processor (AP), a graphics processing unit (GPU), a neural processing unit (NPU), a field-programmable gate array (FPGA), and / or a microprocessor. In some embodiments, the host processor 111 may be implemented as a system-on-a-chip (SoC). The host memory 112 may store data, instructions, and programs required for the operation of the host processor 111. The host memory 112 may be volatile memory. Volatile memory includes, but is not limited to, random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), synchronous dynamic random access memory (SDRAM), and double data rate synchronous dynamic random access memory (DDR SDRAM).
[0053] The computing storage system 120 may be a semiconductor device that provides computing services and data storage services. The computing storage system 120 may be used as both a data storage device and a computing device for executing programs in the electronic system 100. In some embodiments, for example, the computing storage system 120 may be implemented as part of a data center or an artificial intelligence training data device.
[0054] In some embodiments, host 110 and compute storage system 120 are physically connected via an interface and communicate in accordance with the corresponding PCIe / NVMe protocol. Exemplarily, host 110 and compute storage system 120 can be connected via a network link, such as an NVMe-OF-based connection. Exemplarily, host 110 and compute storage system 120 can also be connected via a Compute Express Link (CXL) interface, through which host 110 can control the operation of compute storage system 120. Compute storage system 120 is configured to conform to the NVMe compute storage protocol. The CXL interface may include CXL.io, CXL.cache, and CXL.mem as sub-protocols. Host 110 can load predetermined programs into compute storage system 120 for processing. Host 110 can load various types of programs (such as applications, kernels, and / or compute) into compute storage system 120. Programs may include, for example, encryption programs, compression programs, image recognition programs, filtering programs, and / or artificial intelligence programs.
[0055] Reference Figure 2 In some embodiments, the computing storage system 200 may include a controller 210, one or more Sub-system Local Memory Namespaces (SLM NS) 230, one or more Non-Volatile Memory Namespaces (NVM NS) 240, and one or more Compute Namespaces (CNS) 220. The computing storage system 200 may be connected to... Figure 1 This corresponds to one of the multiple computing storage systems 120 shown. The subsystem local storage namespace 230 can be a namespace implemented with volatile memory, which is closer to the computing processing components of the computing namespace 220 than a namespace implemented with non-volatile memory. The non-volatile namespace 240 can be a namespace implemented with non-volatile memory.
[0056] In some embodiments, the computing storage system 200 may use Non-Volatile Memory Fast Protocol (NVMe Protocol) as the storage protocol, and the controller 210 may be an NVMe controller. The controller 210 may, in response to input / output (I / O) requests from the host, store input / output data during program execution in the subsystem local storage namespace 230, and / or read input / output data stored in the subsystem local storage namespace 230.
[0057] In some embodiments, the controller 210 may perform various operations for controlling the non-volatile namespace 240 or other non-volatile storage devices. For example, these operations may include address mapping operations, wear leveling operations, and / or garbage collection operations. Address mapping operations may be translation operations between logical addresses managed by the host or controller and physical addresses of the non-volatile namespace 240. Wear leveling may be an operation that evens out the frequency or number of uses of multiple storage blocks included in the non-volatile namespace 240. Garbage collection operations may be an operation that copies valid data from a source block in the non-volatile namespace 240 to a target block and then erases the source block to ensure available or free blocks in the non-volatile namespace 240.
[0058] In some embodiments, compute namespace 220 can serve as an abstraction representing one or more compute engines for executing programs. Compute engine resources can consist of one or more CPUs, FPGAs, GPUs, ASICs, etc. For example, a compute namespace can include CPU cores and FPGAs. Compute engine resources can be part of controller 210 or separate from controller 210. The compute engine can execute programs pre-loaded from the host. In some embodiments, programs can be stored in program slots. Program slots can be formed within the compute engine or allocated in separate memory. In some embodiments, program slots storing programs can be within compute namespace 220, or compute namespace 220 can be formed as an entity capable of executing programs. Compute namespace 220 can be, for example, an entity in an NVMe subsystem. Compute namespace 220 can access subsystem local storage namespace 230. In some embodiments, compute storage system 200 can include one or more compute namespaces 220. If the computing storage system 200 includes multiple computing namespaces 220, the host can load multiple programs into the multiple computing namespaces 220 respectively (e.g., in a one-to-one relationship). Therefore, each loaded program can be managed in its respective computing namespace 220, and this disclosure is not limited thereto.
[0059] In some embodiments, the controller 210 may copy data stored in the non-volatile namespace 240 to the subsystem local storage namespace 230, and / or copy data stored in the subsystem local storage namespace 230 to the non-volatile namespace 240. That is, the controller 210 may control the data migration between the non-volatile namespace 240 and the local storage namespace 230 as needed for the program processing of the computation namespace 220.
[0060] The subsystem local storage namespace 230 may store input data used by the program to be executed, or it may store the results (output data) obtained by executing the program. In some embodiments, the subsystem local storage namespace 230 may also be accessed by the controller 210. The subsystem local storage namespace 230 may be implemented as, for example, DRAM.
[0061] In some embodiments, controller 210 may further include a first control portion (not shown) of the control subsystem local storage namespace 230, such as a cache controller. In some embodiments, the first control portion may be configured as a separate chip from controller 210. In some other embodiments, the first control portion may be configured as an internal component of controller 210.
[0062] The non-volatile namespace 240 may store input / output data during program execution. The non-volatile namespace 240 may include, for example, flash memory (such as NAND flash memory). In another example, the non-volatile namespace 240 may include, for example, phase-change memory, resistive memory, magnetoresistive memory, ferroelectric memory, or polymer memory. In some embodiments, the computing storage system 200 may also include a second control portion, such as a flash memory controller, that controls or is configured to control the non-volatile namespace 240, and this second control portion may be included in controller 210.
[0063] In this embodiment of the disclosure, the computing processing components in the computing storage system, including computing engine resources, are abstracted into one or more computing namespaces for user use. The RAM within the computing processing components of the computing storage system, as well as the common RAM within the computing storage system and the RAM within the controller, can all be abstracted into subsystem local namespaces for user use. For the user, these computing namespaces and subsystem local storage namespaces are parallel entities. In some implementations, the user can be informed, based on the specific internal physical implementation, that a particular subsystem local storage namespace is used by a particular computing namespace (due to physical dependencies).
[0064] Figure 3 This is a schematic diagram illustrating an example of loading a program in an electronic system, as provided in an embodiment of this disclosure.
[0065] Reference Figure 3 The host 310 can load the program into the computing storage system 320. Figure 3 In the diagram, the computing storage system 320 is shown to include computing namespaces 322 and 323 (e.g., computing namespaces 0 and 1), but the number of computing namespaces is not limited thereto.
[0066] In some embodiments, compute namespaces 322 and 323 may support device-defined programs and / or downloadable programs. Device-defined programs may be, for example, fixed programs provided by a manufacturer, while downloadable programs may be programs loaded into compute namespaces 322 and 323 by the host 310. For example, device-defined program 323a may be set in compute namespace 323.
[0067] In some embodiments, the controller 321 of the computing storage system 320 may receive programs 322a and 323b transmitted from the host 310 and store them in the computing storage system 320. The computing engine of the computing namespace may, in response to a program execution command from the host 310, use input data stored in the subsystem local storage namespace 324 to execute programs 322a, 323a, and / or 323b in computing namespaces 322 and 323. The input data may include corresponding input parameters required for program execution.
[0068] Figure 4 This is a schematic diagram illustrating an example of program execution in an electronic system provided by an embodiment of this disclosure. Figure 4 In this context, it is assumed that program 422a is loaded into the computation namespace 422 of computation storage system 420.
[0069] Reference Figure 4 In operation S431, the host 410 may send a data copy command to the controller 421 of the computing storage system 420. In operation S432, in response to the data copy command, input data stored in the non-volatile namespace 424 (e.g., a non-volatile memory device) may be copied to the subsystem local storage namespace 423. In some embodiments, the controller 421 may control the non-volatile namespace 424 and the subsystem local storage namespace 423 in response to the data copy command to transfer input data from the non-volatile namespace 424 to the subsystem local storage namespace 423.
[0070] It should be noted that, Figure 4The examples shown are merely illustrative and are not intended to limit the transmission paths of input and output data in the embodiments of this disclosure. In some embodiments, the host 410 may directly write input data into the subsystem local storage namespace 423, and the output data obtained after the program processes the input data is stored in the subsystem local storage namespace 423. The host 410 may directly obtain the output data from the subsystem local storage namespace 423. That is, the non-volatile namespace 424 may not participate in the storage of input data and output data. In other embodiments, the non-volatile namespace 424 may also participate in the storage of input data and output data. The host 410 may write input data into the non-volatile namespace 424, the non-volatile namespace 424 may copy the input data to the subsystem local storage namespace 423, the output data obtained after the program processes the input data may be stored in the subsystem local storage namespace 423, and the output data in the subsystem local storage namespace 423 may be copied to the non-volatile namespace 424. The host may obtain the output data from the non-volatile namespace 424. In some other embodiments, the non-volatile namespace 424 may only be used for either storing input data or storing output data. For example, the host 410 may directly write input data into the subsystem local storage namespace 423, and the output data obtained after the program processes the input data is stored in the subsystem local storage namespace 423. The output data in the subsystem local storage namespace 423 is copied to the non-volatile namespace 424, and the host 410 can obtain the output data from the non-volatile namespace 424. Alternatively, the host 410 may write input data into the non-volatile namespace 424, and the input data in the non-volatile namespace 424 is copied to the subsystem local storage namespace 423. The output data obtained after the program processes the input data is stored in the subsystem local storage namespace 423, and the host 410 can directly obtain the output data from the subsystem local storage namespace 423.
[0071] After the data has been copied from the NVM namespace 424 to the subsystem local storage namespace 423, in operation S433, the controller 421 may send a read success message to the host 410.
[0072] In order to execute the program, in operation S441, host 410 may send a program execution command to computing storage system 420 to execute program 422a in computing namespace 422. In some embodiments, controller 421 may receive the program execution command from host 410. In operation S442, in response to the program execution command, the computing engine in computing namespace 422 may use input data stored in subsystem local storage namespace 423 to execute program 422a in computing namespace 422. In operation S443, computing namespace may store the execution result (output data) of program 422a in subsystem local storage namespace 423. After the execution of program 422a in computing namespace 422 is completed, in operation S444, controller 421 may send a message indicating successful execution of the program to host 410.
[0073] In some embodiments, during operation S451, host 410 may send a read command instructing the computing storage system 420 to read output data from subsystem local storage namespace 423. During operation S452, controller 421 may read output data (e.g., the execution result of program 422a) from subsystem local storage namespace 423 and transmit the data to host 410.
[0074] In some embodiments, after the program 422a has finished executing, the output data can be flushed from the subsystem local storage namespace 423 to the non-volatile namespace 424.
[0075] The electronic system can execute programs on the computing storage system 420 by performing the above operations. Furthermore, if requested by the host 410, the electronic system can provide the execution results of the program from the computing storage system 420 to the host 410.
[0076] In some embodiments, the controller 421, in response to a host command, configures a corresponding storage region in the memory of the sub-system local memory namespace 423 to store input / output data during program execution. In some embodiments, the controller can configure the corresponding storage region by creating memory ranges. A memory range (MR) defines a corresponding storage region. A memory range can be represented by the sub-system local memory namespace identity (SLM NS ID), the starting address (Starting Byte) of the storage region within that local memory namespace, and the data length. Each memory range specifies the accessible range within the sub-system local memory namespace. The collection of memory ranges constitutes a memory range set (MRS). The memory range set can be stored in the compute namespace, and each execution of the program is limited to accessing ranges other than those specified in the memory range set in the program name. Figure 5 As shown, memory range 1 and memory range 2 in namespace 501 form memory range set 1, and memory range 1, memory range 2, and memory range 3 in namespace 502 form memory range set 2. Each memory range includes the sub-system local memory namespace identifier (SLM NS ID, Sub-system Local Memory NamespacesIdentity), the starting address (Starting Byte) of the storage region in the local memory namespace, and information related to the data length. Based on the information included in the memory range, a region within the corresponding sub-system local memory namespace can be determined. It should be noted that... Figure 5 The example provided illustrates the storage range set stored in a computing namespace, but the embodiments disclosed herein are not limited thereto. The storage range set may also be stored in other storage devices with storage functions in the computing storage system.
[0077] This disclosure provides an electronic system, such as Figure 6 As shown, the electronic system includes a host 605 and a computing and storage system 600 coupled to the host 605; the computing and storage system 600 includes a controller 601; the host 605 is configured to: send a first command; the controller 601 is configured to: receive the first command; and in response to the first command, acquire time-related information required by the computing and storage system 600 to execute each program; the host 605 is configured to: allocate tasks related to program execution based on the time-related information required by the computing and storage system 600 to execute each program.
[0078] In this embodiment, the host 605 sends a first command. Upon receiving the first command, the controller 601 responds by acquiring time-related information required by the computing and storage system 600 to execute each program. The host 605 can then allocate tasks related to program execution based on this information. This embodiment allows the host 605 to know the time-related information required by the computing and storage system 600 to execute each program, enabling the host 605 to coordinate computing tasks, better evaluate performance, better coordinate computing resources, and efficiently allocate and schedule programs.
[0079] In this embodiment of the disclosure, specifically, the host processor of the host may send a first command to the controller of the computing storage system through the interface between the host and the computing storage system.
[0080] In some embodiments, information related to the time required for the computing storage system 600 to execute each program includes the time required for the computing storage system 600 to process a unit amount of data when executing each program.
[0081] It is understandable that the amount of data processed each time the same program is executed can be different, and the execution time of the same program will also differ depending on the amount of data processed. For example, processing 1GB of data takes less time than processing 2GB of data. The larger the amount of data processed by the same program, the longer the execution time. Therefore, for each program, the execution speed can be characterized by the time required to process a unit of data. Taking 1GB as an example, the time required for the computing storage system 600 to process a unit of data when executing each program is the same as the time required for each program to process 1GB of data. After obtaining information related to the time required for the computing storage system 600 to execute each program, the host 605 can determine the execution time of the program based on this information and the actual amount of data that the program needs to process.
[0082] It should be noted that the unit data volume given above is merely an example and is not intended to limit the unit data volume in the embodiments of this disclosure. Furthermore, the unit data volume corresponding to different programs may be the same or different.
[0083] The programs in this embodiment include a pre-installed program provided by the manufacturer and a program downloaded by the user to the computing storage system 600.
[0084] In some embodiments, the host 605 is configured to determine the programs to be executed within a preset time period based on information related to the time required for the computing storage system 600 to execute each program.
[0085] In some specific examples, the host processor of the host determines the programs to be executed within a preset time period based on information related to the time required for the computing storage system 600 to execute each program.
[0086] The preset time period here can be understood as a time period of 1 hour, 2 hours, or other durations, and this disclosure does not limit it. In the above embodiments, the host 605's allocation of tasks related to program execution can be understood as determining the programs that need to be executed within the preset time period. Determining the programs that need to be executed within the preset time period can be understood as the host 605 being able to determine, for example, which programs can be executed within 1 hour, thereby enabling the host 605 to better allocate the execution of multiple programs.
[0087] In some embodiments, the controller 601 is configured to calculate information related to the time required for the computing storage system 600 to execute each program, based on the type of each program and the hardware configuration of the computing storage system 600.
[0088] The types of programs mentioned here, such as encryption programs, compression programs, image recognition programs, filtering programs, artificial intelligence programs, and system programs, can be understood as different types of programs. The time required for the computational storage system 600 to execute different types of programs is different.
[0089] The hardware configuration of the computing and storage system 600 reflects its execution capabilities. This configuration includes the configuration of computing resources, which may include, but are not limited to, one or more components such as CPU, FPGA, GPU, and ASIC. Different computing resources have different capabilities in executing the same program. Even with the same computing resources, computing resources of different materials and with different numbers of cores have different capabilities in executing the same program. For example, a single-core CPU is less capable of executing the same program than a multi-core CPU. With other configurations being equal, a single-core CPU takes longer to execute the same program while processing the same amount of data than a multi-core CPU. Therefore, the configuration of computing resources, the number of cores, and the materials all affect the ability to execute the same program. For the same program, given a fixed hardware configuration of the computing and storage system 600, the time required for the system to process a unit of data is constant.
[0090] In some embodiments, such as Figure 6As shown, the computing storage system 600 further includes a first storage area 607, which is coupled to the controller 601. The controller 601 is configured to: store the time-related information required by the computing storage system 600 to execute each program into the first storage area 607; and, in response to a first command, retrieve the time-related information required by the computing storage system 600 to execute each program from the first storage area 607.
[0091] In this embodiment, the controller 601 can obtain time-related information required by the computing storage system 600 to execute each program based on the type of each program and the hardware configuration of the computing storage system 600 itself, and store it in a field accessible to a user. After calculating the time-related information required by the computing storage system 600 to execute each program, the controller 601 can store the time-related information in a first storage area 607. After receiving a first command, the controller 601, in response to the first command, obtains the time-related information required by the storage system to execute each program from the first area.
[0092] In this embodiment of the disclosure, the first storage area 607 may be a volatile storage area or a non-volatile storage area.
[0093] In some embodiments, such as Figure 7 As shown, the computing storage system 600 includes a first memory 602, and the first memory 602 includes a first storage area 607.
[0094] In some embodiments, the first memory 602 is a volatile memory, including but not limited to random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), synchronous dynamic random access memory (SDRAM), and double data rate synchronous dynamic random access memory (DDR SDRAM).
[0095] In some embodiments, such as Figure 8 As shown, the computing storage system 600 also includes a second memory 604 coupled to the controller 601, the second memory 604 including a first storage area 607.
[0096] In some specific examples, the second memory 604 is a non-volatile memory, including but not limited to flash memory (such as NAND flash memory), phase-change memory, resistive memory, magnetoresistive memory, ferroelectric memory, or polymer memory.
[0097] In some embodiments, such as Figure 9 As shown, the computing storage system 600 also includes a third memory 609 coupled to the controller 601, and the third memory 609 includes a first storage area 607.
[0098] In some specific examples, the third memory 609 is either non-volatile or volatile memory.
[0099] In some embodiments, the first command includes the Get Log Page command.
[0100] In this embodiment of the disclosure, the program list log page can be generated by the controller 601, the program list log page records information describing each program, and the program list log page can be stored in the first storage area 607.
[0101] It should be noted that the examples of the first command in the above embodiments are not intended to limit the first command in the embodiments of this disclosure, and the first command may be other commands.
[0102] In some embodiments, a first table is stored in the first storage area 607, and the first table records information describing each program; the controller 601 is configured to record information related to the time required for the computing storage system 600 to execute each program in the first table.
[0103] The first table records information describing each program. Information related to the time required for the computing storage system 600 to execute a program can be placed within the description of that program in the first table, for example, in the space reserved before the first table. The information related to the time required for the computing storage system 600 to execute a program can occupy n bytes, in milliseconds (ms), where n is an integer greater than or equal to 1. If the program is a long-running program, it can be represented by a predetermined value; for example, it can be represented by the value 0xFFFFFFFF, but this embodiment is not limited to this.
[0104] In some embodiments, host 605 is configured to: send a second command; controller 601 is configured to: receive the second command; in response to the second command, obtain information related to whether computing storage system 600 supports querying the time required for computing storage system 600 to execute each program; host 605 is configured to: send a first command based on the information related to whether computing storage system 600 supports querying the time required for computing storage system 600 to execute each program.
[0105] Before sending the first command, the host 605 first sends a second command to the controller 601 to query whether the computing and storage system 600 supports querying information related to the time required for the computing and storage system 600 to execute each program. Only if the computing and storage system 600 supports querying this information will the host 605 send the first command to the controller 601; otherwise, the host 605 will not send the first command. This ensures that the electronic system is compatible with both scenarios where the computing and storage system 600 supports querying information related to the time required for the computing and storage system 600 to execute each program.
[0106] Specific examples Figure 10 As shown, in step S100, the host queries the computing storage system via the second command to see if it supports querying information related to the time required for the computing storage system to execute each program; in step S101, the computing storage system returns a result indicating whether it supports querying information related to the time required for the computing storage system to execute each program; in step S200, if the host wants to obtain information related to the time required for the computing storage system to execute a certain program, it first checks whether the computing storage system supports the query based on the results of the host's previous query; in step S201, if the host determines that the computing storage system does not support querying information related to the time required for the computing storage system to execute each program, the host does not send the first command; in step S202, if the host determines that the computing storage system supports querying information related to the time required for the computing storage system to execute each program, the host sends the first command; in step S203, if the computing storage system receives the first command, it returns the evaluated and pre-placed information related to the time required for the computing storage system to execute each program to the host.
[0107] In some embodiments, the second command includes an identification command.
[0108] It should be noted that the examples of the second command in the above embodiments are not intended to limit the second command in the embodiments of this disclosure, and the second command may be other implementable commands.
[0109] In some embodiments, a second table is stored in the first storage area 607, which records information describing the computing namespace; the controller 601 is configured to record information related to whether the computing storage system 600 supports querying the time required for the computing storage system 600 to execute each program in the second table.
[0110] The second table can be used to define the input / output command set specific identifier namespace data structure of the computing program command set. The second table records information describing the computing namespace. Information related to whether the computing storage system 600 supports querying the time required for the computing storage system 600 to execute each program can be placed in the second table, for example, in the space reserved before the second table. This information can occupy m bits, where m is an integer greater than or equal to 1; for example, m is 1. The user can obtain this information by sending an identification command.
[0111] It should be noted that the location of information related to the time required for the computing storage system 600 to execute each program, as given in the above embodiments, is merely an example and is not intended to limit the embodiments disclosed herein.
[0112] In some embodiments, such as Figure 6 As shown, the computing storage system 600 includes a second storage area 606 coupled to a controller 601 and a computing processing component 603 for executing a program; the controller 601 is configured to: receive a third command; and in response to the third command, configure a corresponding storage area in the second storage area 606 for data during the execution of the program by the computing processing component 603.
[0113] In some embodiments, the computing processing component 603 has computing capabilities, including but not limited to a computing engine, which may consist of one or more of a CPU, FPGA, GPU, etc. The computing processing component 603 may be part of the controller 601 or may be a part independent of the controller 601.
[0114] In some embodiments, the computing processing component 603 is configured to load a program to be executed.
[0115] In some embodiments, the program to be executed may not be loaded through the computing processing component 603, for example, for a fixed program provided by the manufacturer.
[0116] In some specific examples, the third command may be a command to create a set of memory ranges. After receiving the third command, the controller 601, in response to the third command, configures the corresponding storage area in the second storage area 606 for the data in the process of executing the program by the computing processing component 603.
[0117] The data processed by the computational processing component 603 during the execution of the program includes both input and output data.
[0118] In some embodiments, the second storage area 606 includes a first sub-storage area configured for input data during the execution of a program by the computing processing component 603, and a second sub-storage area configured for output data during the execution of a program by the computing processing component 603.
[0119] In some embodiments, such as Figure 7 As shown, the first memory 602 includes a second memory area 606, and the first memory area 607 and the second memory area 606 may belong to the same memory.
[0120] In some embodiments, such as Figure 8 as well as Figure 9 As shown, the first memory 602 includes a second memory area 606, and the first memory area 607 and the second memory area 606 may belong to different memories.
[0121] In some embodiments, such as Figure 6 As shown, the computing storage system 600 also includes a third storage area 608 coupled to the controller 601; the controller 601 is configured to: write input data during program execution stored in the third storage area 608 into the second storage area 606; and write output data during program execution stored in the second storage area 606 into the third storage area 608.
[0122] In some embodiments, such as Figure 7 , Figure 9 As shown, the second memory 604 includes a third memory area 608, and the third memory area 608 and the first memory area 607 may belong to different memories.
[0123] In some embodiments, such as Figure 8 As shown, the second memory 604 includes a third memory area 608, and the third memory area 608 and the first memory area 607 may belong to the same memory.
[0124] In this embodiment of the disclosure, the third storage area 608 and the second storage area 606 belong to different memories.
[0125] In some embodiments, the controller 601 is configured to: write input data during program execution stored in the third storage area 608 into the second storage area 606; and write output data during program execution stored in the second storage area 606 into the third storage area 608.
[0126] In some embodiments, the output data during program execution may not be written to the third storage area 608, but the host 605 may directly read the output data during program execution stored in the second storage area 606.
[0127] In some embodiments, such as Figure 11 As shown, the computing storage system 600 includes a non-volatile namespace 612, a computing namespace 610, and a subsystem local storage namespace 611; the computing namespace 610 includes a computing processing component 603, the subsystem local storage namespace 611 includes a second storage area 606, and the non-volatile namespace 612 includes a third storage area 608.
[0128] In this embodiment of the disclosure, the first storage area 607 may not belong to any of the non-volatile namespace 612, the computing namespace 610, and the subsystem local storage namespace 611. The non-volatile namespace 612, the computing namespace 610, and the subsystem local storage namespace 611 can be directly exposed to the host 605 and can directly interact with the host 605 for read and write operations. However, the first storage area 607 is not exposed to the host 605 and cannot directly interact with the host 605 for read and write operations. The host 605 can access the first storage area 607 through special commands such as the command to obtain the program list log page or the identification command.
[0129] The solution provided in this disclosure is simple to implement; has no hardware cost; allows the host to obtain information related to the time required for the computing and storage system to execute each program, and the host can make better performance predictions.
[0130] Based on the above electronic system, this disclosure also provides a computing and storage system, such as... Figure 12 As shown, the computing storage system 600 includes a controller 601 and a first storage area 607 coupled to the controller 601. The controller 601 is configured to: receive a first command; in response to the first command, obtain time-related information required by the computing storage system 600 to execute each program from the first storage area 607; and send the time-related information required by the computing storage system 600 to the host 605 coupled to the computing storage system 600.
[0131] In some embodiments, information related to the time required for the computing storage system 600 to execute each program includes the time required for the computing storage system 600 to process a unit amount of data when executing each program.
[0132] In some embodiments, the controller 601 is configured to: receive a second command; in response to the second command, obtain information related to whether the computing storage system 600 supports querying information related to the time required for the computing storage system 600 to execute each program; and receive a first command based on the fact that the computing storage system 600 supports querying information related to the time required for the computing storage system 600 to execute each program.
[0133] In some embodiments, the controller 601 is configured to calculate information related to the time required for the computing storage system 600 to execute each program, based on the type of each program and the hardware configuration of the computing storage system 600.
[0134] In some embodiments, the controller 601 is configured to store the calculated time-related information required for the computing storage system 600 to execute each program into a first storage area 607.
[0135] In some embodiments, such as Figure 12 As shown, the computing storage system 600 includes a second storage area 606 coupled to a controller 601 and a computing processing component 603 for executing a program; the controller 601 is configured to: receive a third command; and in response to the third command, configure a corresponding storage area in the second storage area 606 for data during the execution of the program by the computing processing component 603.
[0136] In some embodiments, such as Figure 12 As shown, the computing storage system 600 further includes a third storage area 608 coupled to a controller 601; the controller 601 is configured to: write input data during program execution stored in the third storage area 608 into a second storage area 606; and write output data during program execution stored in the second storage area 606 into the third storage area 608. Based on the above electronic system, this disclosure embodiment also provides a host 605, which is configured to: send a first command to the computing storage system 600 coupled to the host 605; obtain time-related information required for the computing storage system 600 to execute each program from the computing storage system 600; and perform task allocation related to program execution based on the time-related information required for the computing storage system 600 to execute each program.
[0137] Other details regarding the aforementioned computing and storage system 600 and host 605 have been described in detail in the foregoing embodiments concerning the electronic system, and will not be repeated here for the sake of brevity.
[0138] Based on the above-described electronic system, this disclosure also provides a method for operating the electronic system, such as... Figure 13 As shown, the operation method includes the following steps: Step S300, the host sends a first command; Step S301, the controller receives the first command; Step S302, the controller responds to the first command to obtain information related to the time required for the computing and storage system to execute each program; Step S303, the host allocates tasks related to program execution based on the information related to the time required for the computing and storage system to execute each program.
[0139] In some embodiments, information related to the time required for the computing storage system to execute each program includes the time required for the computing storage system to process a unit amount of data when executing each program.
[0140] In some embodiments, the host allocates program execution-related tasks based on information related to the time required for the computing and storage system to execute each program, including: the host determining the programs to be executed within a preset time period based on information related to the time required for the computing and storage system to execute each program.
[0141] In some embodiments, the operation method further includes: the host sending a second command; the controller receiving the second command; the controller responding to the second command to obtain information related to whether the computing storage system supports querying information related to the time required for the computing storage system to execute each program; and the host sending a first command based on the computing storage system's support for querying information related to the time required for the computing storage system to execute each program.
[0142] In some embodiments, the operation method further includes: the controller calculating information related to the time required for the computing storage system to execute each program based on the type of each program and the hardware configuration of the computing storage system.
[0143] In some embodiments, the computing storage system further includes a first storage area coupled to a controller; the operation method further includes: storing calculated time-related information required by the computing storage system to execute each program in the first storage area; the controller, in response to a first command, obtains the time-related information required by the computing storage system to execute each program, including: the controller, in response to the first command, obtains the time-related information required by the computing storage system to execute each program from the first storage area.
[0144] In some embodiments, a first table is stored in the first storage area, and the first table records information describing each program; the operation method further includes: the controller records information related to the time required for the storage system to execute each program in the first table.
[0145] In some embodiments, the first command includes a command to retrieve log pages.
[0146] In some embodiments, a second table is stored in the first storage area, and the second table records information describing the computing namespace; the operation method further includes: the controller records information related to whether the computing storage system supports querying the time required for the computing storage system to execute each program in the second table.
[0147] In some embodiments, the second command includes an identification command.
[0148] The operation method of the electronic system mentioned in the above embodiments has been described in detail in the foregoing embodiments concerning the electronic system, and will not be repeated here for the sake of brevity.
[0149] Based on the above-described operation method of the electronic system, this disclosure also provides a computer-readable storage medium storing a computer program, which, when executed by a processor, performs the operation method of the electronic system in any of the above embodiments.
[0150] Here, implementing all or part of the operation methods of the electronic system in the above embodiments can be accomplished by a computer program instructing related hardware. The program can be stored in a computer-readable storage medium, and when executed, it can include the processes of the embodiments of the above methods. The storage medium can be a magnetic random access memory (FRAM), a read-only memory (ROM), a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), a flash memory, a magnetic surface memory, an optical disc or a compact disc read-only memory (CD-ROM), etc.; the storage medium can also include combinations of the above types of memory.
[0151] The features disclosed in the several device embodiments provided in this disclosure can be arbitrarily combined without conflict to obtain new device embodiments.
[0152] The methods disclosed in the several method embodiments provided in this disclosure can be arbitrarily combined without conflict to obtain new method embodiments.
[0153] The above description is merely a specific embodiment of this disclosure, but the scope of protection of this disclosure is not limited thereto. Any changes or substitutions that can be easily conceived by those skilled in the art within the scope of the technology disclosed in this disclosure should be included within the scope of protection of this disclosure.
Claims
1. An electronic system, characterized in that, The electronic system includes a host computer and a computing and storage system coupled to the host computer; the computing and storage system includes a controller; The host is configured to send a first command; The controller is configured to: Receive the first command; In response to the first command, obtain information related to the time required for the computing and storage system to execute each program; The host is configured as follows: Based on the time required for each program to be executed by the computing and storage system, tasks related to program execution are allocated.
2. The electronic system according to claim 1, characterized in that, The information related to the time required for the computing and storage system to execute each program includes the time required for the computing and storage system to process a unit of data volume when executing each program.
3. The electronic system according to claim 1, characterized in that, The host is configured as follows: Based on the time-related information required for the computing and storage system to execute each program, determine the programs that need to be executed within a preset time period.
4. The electronic system according to claim 1, characterized in that, The host is configured to send a second command; The controller is configured to: Receive the second command; In response to the second command, obtain information on whether the computing storage system supports querying information related to the time required for the computing storage system to execute each program; The host is configured to send the first command based on the computing and storage system's ability to query information related to the time required for the computing and storage system to execute each program.
5. The electronic system according to claim 4, characterized in that, The controller is configured to: Based on the type of each program and the hardware configuration of the computing and storage system, information related to the time required for the computing and storage system to execute each program is calculated.
6. The electronic system according to claim 5, characterized in that, The computing storage system further includes a first storage area, which is coupled to the controller; the controller is configured to: The calculated time-related information required for the computing storage system to execute each program is stored in the first storage area; In response to the first command, information related to the time required for the computing storage system to execute each program is obtained from the first storage area.
7. The electronic system according to claim 6, characterized in that, The first storage area stores a first table, which records information describing each program; the controller is configured to record information related to the time required for the computing storage system to execute each program in the first table.
8. The electronic system according to claim 7, characterized in that, The first command includes a command to retrieve the program list log page.
9. The electronic system according to claim 6, characterized in that, The first storage area stores a second table, which records information describing the computing namespace; the controller is configured to record information related to whether the computing storage system supports querying the time required for the computing storage system to execute each program in the second table.
10. The electronic system according to claim 9, characterized in that, The second command includes an identification command.
11. The electronic system according to claim 1, characterized in that, The computing storage system includes a second storage area coupled to the controller and a computing processing component for executing programs; the controller is configured to: Receive third command; In response to the third command, a corresponding storage area is configured in the second storage area for the data generated during the execution of the program by the computing processing component.
12. The electronic system according to claim 11, characterized in that, The computing storage system further includes a third storage region coupled to the controller; the controller is configured to: Write the input data during program execution stored in the third storage area into the second storage area; The output data of the program execution process stored in the second storage area is written to the third storage area.
13. The electronic system according to claim 12, characterized in that, The computing storage system further includes a non-volatile namespace, a computing namespace, and a subsystem local storage namespace; the computing namespace includes the computing processing component, the subsystem local storage namespace includes the second storage area, and the non-volatile namespace includes the third storage area.
14. A computing storage system, characterized in that, The computing storage system includes a controller and a first storage region coupled to the controller, the controller being configured to: Receive the first command; In response to the first command, information related to the time required for the computing storage system to execute each program is obtained from the first storage area; Information related to the time required for the computing storage system to execute each program is sent to the host coupled to the computing storage system.
15. The computing storage system according to claim 14, characterized in that, The information related to the time required for the computing and storage system to execute each program includes the time required for the computing and storage system to process a unit of data volume when executing each program.
16. The computing storage system according to claim 14, characterized in that, The controller is configured to: Receive the second command; In response to the second command, obtain information on whether the computing storage system supports querying information related to the time required for the computing storage system to execute each program; Based on the fact that the computing and storage system supports querying information related to the time required for the computing and storage system to execute each program, the first command is received.
17. The computing storage system according to claim 16, characterized in that, The controller is configured to: Based on the type of each program and the hardware configuration of the computing and storage system, information related to the time required for the computing and storage system to execute each program is calculated.
18. The computing storage system according to claim 17, characterized in that, The controller is configured to: The calculated time-related information required for the computing storage system to execute each program is stored in the first storage area.
19. A host computer, characterized in that, The host is configured as follows: Send a first command to the computing and storage system coupled to the host; Obtain information related to the time required for the computing storage system to execute each program from the computing storage system; Based on the time required for each program to be executed by the computing and storage system, tasks related to program execution are allocated.
20. A method for operating an electronic system, characterized in that, include: The host sends the first command; The controller receives the first command; The controller responds to the first command by acquiring information related to the time required for the computing and storage system to execute each program; The host allocates tasks related to program execution based on information about the time required for each program to be executed by the computing and storage system.
21. The operating method according to claim 20, characterized in that, The information related to the time required for the computing and storage system to execute each program includes the time required for the computing and storage system to process a unit of data volume when executing each program.
22. The operating method according to claim 20, characterized in that, The host computer allocates tasks related to program execution based on information about the time required for each program to be executed by the computing and storage system, including: The host determines the programs to be executed within a preset time period based on information related to the time required for each program to be executed by the computing and storage system.
23. The operating method according to claim 20, characterized in that, The operation method further includes: The host sends a second command; The controller receives the second command; In response to the second command, the controller obtains information related to whether the computing storage system supports querying the time required for the computing storage system to execute each program. The host sends the first command based on the computing and storage system's ability to query information related to the time required for the computing and storage system to execute each program.
24. The operating method according to claim 23, characterized in that, The operation method further includes: The controller calculates information related to the time required for the computing and storage system to execute each program based on the type of each program and the hardware configuration of the computing and storage system.
25. The operating method according to claim 24, characterized in that, The computing storage system further includes a first storage area, which is coupled to the controller; the operation method further includes: storing the calculated time-related information required by the computing storage system to execute each program into the first storage area; The controller, in response to the first command, obtains time-related information required for the computing storage system to execute each program, including: the controller, in response to the first command, obtains time-related information required for the computing storage system to execute each program from the first storage area.
26. The operating method according to claim 25, characterized in that, The first storage area stores a first table, which records information describing each program; the operation method further includes: the controller records information related to the time required for the computing storage system to execute each program in the first table.
27. The operating method according to claim 26, characterized in that, The first command includes a command to retrieve the program list log page.
28. The operating method according to claim 25, characterized in that, The first storage area stores a second table, which records information describing the computing namespace; the operation method further includes: the controller records information related to whether the computing storage system supports querying the time required for the computing storage system to execute each program in the second table.
29. The operating method according to claim 28, characterized in that, The second command includes an identification command.