Computational storage device and operation method thereof
A computational storage device includes a storage device and a computation control circuit. The computation control circuit includes multi-core processor and is configured to generate an input/output (I/O) task according to an I/O command, generate a background task according to the I/O command, select an idle core among a plurality of cores in the multi-core processor to perform the background task, and control the storage device. The computation control circuit may include a task control module configured to select the idle core.
1 . A computational storage device comprising:
a storage device; and
a computation control circuit including a multi-core processor and configured to:
generate an input/output (I/O) task according to an I/O command,
generate a background task according to the I/O command, and
control the storage device,
wherein the computation control circuit further includes a task control module comprising:
a core monitoring module configured to monitor respective states of operations of a plurality of cores in the multi-core processor for a current time window; and
a task scheduler module configured to generate the I/O task and the background task,
wherein the task scheduler module includes a core selection module configured to select a core to perform the background task by referencing the respective states of operations accumulated during a previous time window.
2 . The computational storage device of claim 1 , wherein the task control module includes:
a first storage control module configured to control the storage device corresponding to the I/O task;
a background task control module configured to process the background task; and
a second storage control module configured to control the storage device for an I/O task being generated during processing the background task.
3 . The computational storage device of claim 2 , wherein the task control module further comprises an I/O task control module configured to control the first storage control module.
4 . The computational storage device of claim 3 , wherein the I/O command is a key-value based command, and the storage device is a block based device, and the I/O task control module converts a key-value based command into a block based command.
5 . The computational storage device of claim 1 , wherein a designated core for processing the background task is different from the core selected for processing the I/O task.
6 . The computational storage device of claim 5 , wherein the designated core is designated by the I/O command.
7 . The computational storage device of claim 1 , wherein the background task includes data compression or duplicate data removal, and wherein a type of the background task is identified by an opcode included in the I/O command.
8 . A method of operating a computational storage device, the method comprising:
monitoring states of operations of a plurality of cores in a multi-core processor during a current time window;
generating an input/output (I/O) task corresponding to an I/O command;
generating a background task corresponding to the I/O command;
allocating the I/O task to a designated core among the plurality of cores;
selecting a core by referencing the respective states of operations accumulated during a previous time window;
allocating the background task to a selected core;
controlling a storage device to process the I/O task; and
controlling the storage device to process the background task.
9 . The method of claim 8 , wherein the selecting a core includes:
selecting a core determined to be in an idle state as the selected core based on the respective states of operations accumulated during the previous time window; and
selecting a core having lowest utilization among the plurality of cores as the selected core when none of the plurality of cores are determined to be in the idle state.
10 . The method of claim 8 , further comprising identifying a type of a background task from the I/O command, wherein the background task includes data compression or duplicate data removal.
11 . The method of claim 8 , further comprising generating a block based I/O command corresponding to the I/O command for the I/O task when the I/O command is a key-value based I/O command.