# US 11,112,998 B2 · Operation instruction scheduling method and apparatus for nand flash memory device

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,112,998 B2
- Document ID: US11112998B2
- Status: Granted
- Kind: B2
- Application number: 16/467,107
- Filed: 2017-12-07
- Published: 2019-11-21
- Granted: 2021-09-07
- Earliest claimed: 2016-12-08
- Assignees: Dera
- Applicants: Dera Co., Ltd
- Inventors: Wang Fenghai; Xia Jiexu; Wang Song; Yang Ji; Zhang Jiantao
- Web page: https://patentgrep.com/patent/US11112998B2

## CPC

- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0611: {in relation to response time}
- G06F 3/0679: {Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

The present invention discloses an operation instruction scheduling method and device for a NAND flash memory device. The method comprises: performing task decomposition on the operation instruction of the NAND flash memory device, and sending an obtained task to a corresponding task queue; sending a current task to a corresponding arbitration queue according to a task type of the current task in the task queue; and scheduling a NAND interface for a to-be-executed task in the arbitration queue according to priority information of the arbitration queue. Embodiments of the present invention can efficiently realize operation instruction scheduling of a NAND flash memory device, improve flexibility of operation instruction scheduling of the NAND flash memory device, and improve overall performance of the NAND flash memory device.

## Claims

### Claim 1

An operation instruction scheduling method for a NAND flash memory device, comprising:
performing task decomposition on the operation instruction of the NAND flash memory device, and sending an obtained task to a corresponding task queue;
sending a current task to a corresponding arbitration queue according to a task type of the current task in the task queue, wherein the task type is determined according to time spent by the task in occupying a NAND interface, and a task that spends shorter time in occupying the NAND interface is assigned a higher task priority;
determining a priority of an arbitration queue according to a task priority stored in the arbitration queue; and
scheduling a NAND interface for a to-be-executed task in the arbitration queue according to priority information of the arbitration queue.

### Claim 2 (depends on 1)

The method of claim 1, wherein the step of performing task decomposition on the operation instruction of the NAND flash memory device comprises:
taking a time point at which a NAND die corresponding to the operation instruction is updated from an idle state to a busy state during the execution of the operation instruction as a cut-off point, and performing task decomposition on the operation instruction,
wherein the NAND die corresponds to a unique task queue, so as to store a task obtained after task decomposition.

### Claim 3 (depends on 1)

The method of claim 1, wherein after performing task decomposition on the operation instruction of the NAND flash memory device, the method further comprises:
configuring task header information for each task, wherein the task header information contains a task type identification;
the step of sending a current task to a corresponding arbitration queue according to a task type of the current task in the task queue comprises:
determining a task type of the current task according to a task type identification contained in the task header information of the current task, and sending the current task to a corresponding arbitration queue according to a task type.

### Claim 4 (depends on 3)

The method of claim 3, wherein the task type comprises a non-IO task, a write IO task and a read IO task, wherein a priority of the write IO task is the same as that of the read IO task, and the priority of the non-IO task is higher than that of the write IO task and the read IO task.

### Claim 5 (depends on 4)

The method of claim 4, wherein the step of scheduling a NAND interface for a to-be-executed task in the arbitration queue according to priority information of the arbitration queue comprises:
judging whether a non-IO arbitration queue corresponding to the non-IO task is non-empty;
if the non-IO arbitration queue corresponding to the non-IO task is non-empty, popping a to-be-executed task from the non-IO arbitration queue, and scheduling a NAND interface for the to-be-executed task;
otherwise, popping a to-be-executed task from a write IO arbitration queue corresponding to the write IO task or from a read IO arbitration queue corresponding to the read IO task according to a preset task execution strategy, and scheduling a NAND interface for the to-be-executed task.

### Claim 6 (depends on 3)

The method of claim 3, wherein the task header information further comprises a read status task enabling identification;
after the scheduling a NAND interface for a to-be-executed task in the arbitration queue according to priority information of the arbitration queue, the method further comprises:
judging whether the to-be-executed task is a read status task after executing the to-be-executed task;
if the to-be-executed task is a read status task, determining a usage state of a corresponding NAND die according to an execution result of the read status task, when the usage state is busy, starting a timer, triggering the read status task after a preset timing time, and sending the read status task to a corresponding arbitration queue, when the usage state is idle, returning to the usage state so as to trigger an operation of sending a next task in the task queue to a corresponding arbitration queue;
otherwise, reading the read status task enabling identification, when the read status task enabling identification is turned on, starting a timer, triggering the read status task after a preset timing time, and sending the read status task to a corresponding arbitration queue, when the read status task enabling identification is turned off, triggering an operation of sending a next task in the task queue to a corresponding arbitration queue.

### Claim 7 (depends on 3)

The method of claim 3, wherein the task header information further contains an interface exclusive license identification;
after the scheduling a NAND interface for a to-be-executed task in the arbitration queue according to priority information of the arbitration queue, the method further comprises:
reading the interface exclusive license identification after executing the to-be-executed task, when the interface exclusive license identification is turned on, shielding a task corresponding to other NAND dies other than the current NAND die, otherwise, relieving the shielding a task corresponding to the other NAND dies, and/or triggering an operation of sending a next task in the task queue to a corresponding arbitration queue.

### Claim 8 (depends on 3)

The method of claim 3, wherein the task header information further comprises a task identification ID;
after the scheduling a NAND interface for a to-be-executed task in the arbitration queue according to priority information of the arbitration queue, the method further comprises:
after executing the to-be-executed task, monitoring and returning a task execution result, wherein the task execution result carries the task identification ID of the to-be-executed task.

### Claim 9 (depends on 4)

The method of claim 4, wherein the task header information further comprises a read status task enabling identification;
after the scheduling a NAND interface for a to-be-executed task in the arbitration queue according to priority information of the arbitration queue, the method further comprises:
judging whether the to-be-executed task is a read status task after executing the to-be-executed task;
if the to-be-executed task is a read status task, determining a usage state of a corresponding NAND die according to an execution result of the read status task, when the usage state is busy, starting a timer, triggering the read status task after a preset timing time, and sending the read status task to a corresponding arbitration queue, when the usage state is idle, returning to the usage state so as to trigger an operation of sending a next task in the task queue to a corresponding arbitration queue;
otherwise, reading the read status task enabling identification, when the read status task enabling identification is turned on, starting a timer, triggering the read status task after a preset timing time, and sending the read status task to a corresponding arbitration queue, when the read status task enabling identification is turned off, triggering an operation of sending a next task in the task queue to a corresponding arbitration queue.

### Claim 10 (depends on 5)

The method of claim 5, wherein the task header information further comprises a read status task enabling identification;
after the scheduling a NAND interface for a to-be-executed task in the arbitration queue according to priority information of the arbitration queue, the method further comprises:
judging whether the to-be-executed task is a read status task after executing the to-be-executed task;
if the to-be-executed task is a read status task, determining a usage state of a corresponding NAND die according to an execution result of the read status task, when the usage state is busy, starting a timer, triggering the read status task after a preset timing time, and sending the read status task to a corresponding arbitration queue, when the usage state is idle, returning to the usage state so as to trigger an operation of sending a next task in the task queue to a corresponding arbitration queue;
otherwise, reading the read status task enabling identification, when the read status task enabling identification is turned on, starting a timer, triggering the read status task after a preset timing time, and sending the read status task to a corresponding arbitration queue, when the read status task enabling identification is turned off, triggering an operation of sending a next task in the task queue to a corresponding arbitration queue.

### Claim 11 (depends on 4)

The method of claim 4, wherein the task header information further contains an interface exclusive license identification;
after the scheduling a NAND interface for a to-be-executed task in the arbitration queue according to priority information of the arbitration queue, the method further comprises:
reading the interface exclusive license identification after executing the to-be-executed task, when the interface exclusive license identification is turned on, shielding a task corresponding to other NAND dies other than the current NAND die, otherwise, relieving the shielding a task corresponding to the other NAND dies, and/or triggering an operation of sending a next task in the task queue to a corresponding arbitration queue.

### Claim 12 (depends on 5)

The method of claim 5, wherein the task header information further contains an interface exclusive license identification;
after the scheduling a NAND interface for a to-be-executed task in the arbitration queue according to priority information of the arbitration queue, the method further comprises:
reading the interface exclusive license identification after executing the to-be-executed task, when the interface exclusive license identification is turned on, shielding a task corresponding to other NAND dies other than the current NAND die, otherwise, relieving the shielding a task corresponding to the other NAND dies, and/or triggering an operation of sending a next task in the task queue to a corresponding arbitration queue.

### Claim 13 (depends on 4)

The method of claim 4, wherein the task header information further comprises a task identification ID;
after the scheduling a NAND interface for a to-be-executed task in the arbitration queue according to priority information of the arbitration queue, the method further comprises:
after executing the to-be-executed task, monitoring and returning a task execution result, wherein the task execution result carries the task identification ID of the to-be-executed task.

### Claim 14 (depends on 5)

The method of claim 5, wherein the task header information further comprises a task identification ID;
after the scheduling a NAND interface for a to-be-executed task in the arbitration queue according to priority information of the arbitration queue, the method further comprises:
after executing the to-be-executed task, monitoring and returning a task execution result, wherein the task execution result carries the task identification ID of the to-be-executed task.

### Claim 15

An electronic device, comprising a processor and a memory, wherein the memory stores computer instructions therein, and the processor executes the following steps by executing the computer instructions:
performing task decomposition on an operation instruction of a NAND flash memory device, and sending an obtained task to a corresponding task queue;
sending a current task to a corresponding arbitration queue according to a task type of the current task in the task queue, wherein the task type is determined according to time spent by the task in occupying a NAND interface, and a task that spends shorter time in occupying the NAND interface is assigned a higher task priority;
determining a priority of an arbitration queue according to a task priority stored in the arbitration queue; and
scheduling a NAND interface for a to-be-executed task in the arbitration queue according to priority information of the arbitration queue.

### Claim 16 (depends on 15)

The electronic device of claim 15, wherein the processor further executes the following steps:
configuring task header information for each task after performing task decomposition on an operation instruction of a NAND flash memory device, wherein the task header information contains a task type identification; and
determining a task type of the current task according to a task type identification contained in the task header information of the current task, and sending the current task to a corresponding arbitration queue according to a task type.
