JP2019091492A - Memory device and method of controlling nonvolatile memory - Google Patents
Memory device and method of controlling nonvolatile memory Download PDFInfo
- Publication number
- JP2019091492A JP2019091492A JP2019023362A JP2019023362A JP2019091492A JP 2019091492 A JP2019091492 A JP 2019091492A JP 2019023362 A JP2019023362 A JP 2019023362A JP 2019023362 A JP2019023362 A JP 2019023362A JP 2019091492 A JP2019091492 A JP 2019091492A
- Authority
- JP
- Japan
- Prior art keywords
- processor
- management unit
- executed
- managed
- processes
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Stored Programmes (AREA)
Abstract
Description
本実施形態は、メモリ装置及び不揮発性メモリの制御方法に関する。 The present embodiment relates to a control method of a memory device and a non-volatile memory.
ソリッドステートドライブ(SSD)は、例えば、NAND型フラッシュメモリなどのような不揮発性メモリを備える。NAND型フラッシュメモリは、複数のブロック(物理ブロック)を備える。複数のブロックは、ワード線とビット線との交点に配置される複数のメモリセルを含む。 A solid state drive (SSD) includes non-volatile memory such as, for example, NAND flash memory. The NAND flash memory includes a plurality of blocks (physical blocks). The plurality of blocks include a plurality of memory cells arranged at intersections of word lines and bit lines.
本実施形態は、利便性の高いメモリ装置及び不揮発性メモリの制御方法を提供する。 The present embodiment provides a highly convenient memory device and a non-volatile memory control method.
本実施形態によれば、メモリ装置は、不揮発性メモリと、不揮発性メモリを制御するコントローラとを含む。コントローラは、第1乃至第3のプロセッサを含む。第1のプロセッサは、実行待ちであり第1乃至第3のプロセッサのいずれでも実行可能な新たな処理の実行先を決定する。コントローラは、新たな処理に関する優先度を含む優先度情報に基づいて、第2及び第3のプロセッサのうちの1つによって次に実行されるために、第1のプロセッサによって決定された実行先を持つ新たな処理の少なくとも1つを決定する。 According to the present embodiment, the memory device includes a non-volatile memory and a controller for controlling the non-volatile memory. The controller includes first to third processors. The first processor is waiting for execution and determines a new process execution destination that can be executed by any of the first to third processors. The controller determines an execution destination determined by the first processor to be executed next by one of the second and third processors based on the priority information including the priority for new processing. Determine at least one of the new processing to have.
以下、図面を参照しながら各実施形態について説明する。以下の説明において、略同一の機能及び構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。 Hereinafter, each embodiment will be described with reference to the drawings. In the following description, substantially the same functions and components will be denoted by the same reference numerals, and redundant description will be made only when necessary.
[第1の実施形態]
本実施形態は、ソフトウェア定義型(Software Defined)プラットフォームを備えるメモリ装置について説明する。
First Embodiment
The present embodiment describes a memory device comprising a Software Defined Platform.
ソフトウェア定義型プラットフォームは、例えば、メモリ装置の機能をハードウェアの制御から切り離し、ソフトウェアにより制御を実行する。 The software-defined platform, for example, decouples the functionality of the memory device from the control of the hardware and performs the control by software.
本実施形態において、メモリ装置は、例えばSSDであるとするが、メモリカード、ハードディスクドライブ(HDD)、HDDとSSDとを含むハイブリッド型メモリ装置、光ディスク、ストレージ装置、メモリサーバなど様々な種別のメモリ装置でもよい。メモリ装置がSSDの場合には、当該メモリ装置はHDDと同じ通信インタフェースを持つ。 In the present embodiment, the memory device is, for example, an SSD, but various types of memory such as a memory card, a hard disk drive (HDD), a hybrid memory device including an HDD and an SSD, an optical disk, a storage device, and a memory server It may be a device. When the memory device is an SSD, the memory device has the same communication interface as the HDD.
SSDであるメモリ装置は、不揮発性メモリを含む。本実施形態では、不揮発性メモリがNAND型フラッシュメモリを含む場合について説明する。しかしながら、不揮発性メモリは、例えば、NOR型フラッシュメモリ、MRAM(Magnetoresistive Random Access Memory)、PRAM(Phase change Random Access Memory)、ReRAM(Resistive Random Access Memory)、又は、FeRAM(Ferroelectric Random Access Memory)などNAND型フラッシュメモリではない他の種別のメモリを含むとしてもよい。また、不揮発性メモリは、3次元構造のフラッシュメモリを含むとしてもよい。 The memory device, which is an SSD, includes non-volatile memory. In the present embodiment, the case where the non-volatile memory includes a NAND flash memory will be described. However, the nonvolatile memory may be, for example, a NAND flash memory, a magnetoresistive random access memory (MRAM), a phase change random access memory (PRAM), a resistive random access memory (ReRAM), or an electric random access memory (FeRAM). Other types of memory other than the flash memory may be included. The non-volatile memory may also include a three-dimensional flash memory.
不揮発性メモリは、消去単位エリアごとに、データが一括して消去される。消去単位エリアは、複数の書き込み単位エリア及び複数の読み出し単位エリアを含む。不揮発性メモリがNAND型フラッシュメモリの場合、消去単位エリアはブロックに相当する。書き込み単位エリア及び読み出し単位エリアはページに相当する。 In the non-volatile memory, data is collectively erased for each erase unit area. The erase unit area includes a plurality of write unit areas and a plurality of read unit areas. When the non-volatile memory is a NAND flash memory, the erase unit area corresponds to a block. The write unit area and the read unit area correspond to pages.
本実施形態において、アクセスとは、メモリへデータを書き込むこと、及び、メモリからデータを読み出すことの双方を意味する。 In the present embodiment, access means both writing data to the memory and reading data from the memory.
本実施形態において、処理単位は、タスクとする。しかしながら、例えば、ジョブ、プロセス、トランザクション、スレッドなど他の処理単位が用いられてもよい。例えば、スレッドは並列処理に対応した最小の処理単位であり、換言すれば分解すると同時処理できない最小の単位としてもよい。例えば、タスクは1以上のスレッドを含むとしてもよい。例えば、プロセスは1以上のタスクを含むとしてもよい。例えば、トランザクションは矛盾防止のために管理される処理単位であり、1以上のプロセスを含むとしてもよい。例えば、ジョブは情報処理装置又はプログラムに依頼される命令に対して実行される処理の単位としてもよい。 In the present embodiment, the processing unit is a task. However, for example, other processing units such as jobs, processes, transactions, threads may be used. For example, a thread is a minimum processing unit corresponding to parallel processing, and in other words, it may be a minimum unit which can not be processed simultaneously if it is disassembled. For example, a task may include one or more threads. For example, a process may include one or more tasks. For example, a transaction is a processing unit managed to prevent conflicts, and may include one or more processes. For example, the job may be a unit of processing executed for an instruction requested by the information processing apparatus or program.
本実施形態において、プログラムは、コンピュータプログラムとする。コンピュータプログラムでは、コンピュータが行うべき処理が順序付けて記述されている。プログラムは、コンピュータで実行されることにより、コマンド、データ、及び、情報の発行及び受付、データ処理及び演算などの各種機能を実現可能である。 In the present embodiment, the program is a computer program. In a computer program, processes to be performed by a computer are described in order. The program can be implemented by a computer to implement various functions such as issuing and accepting commands, data, and information, data processing, operations, and the like.
本実施形態において、コンピュータとは、例えば、命令にしたがって演算又は処理を実行する機械である。例えば、コンピュータは、メモリとプロセッサとを含む。メモリは、プログラムを記憶する。プロセッサは、メモリに記憶されているプログラムに記述された命令セット(例えば、データの転送、計算、加工、制御、管理)を実行するためのハードウェアである。本実施形態において、コンピュータは、広義に解釈されるべきであり、例えば、情報処理装置、メモリ装置のコントローラ、パーソナルコンピュータ、大型コンピュータ、マイクロコンピュータ、サーバ装置などを含む。本実施形態においては、コンピュータに代えて、複数のコンピュータが連携して動作するコンピュータシステムが用いられてもよい。 In the present embodiment, a computer is, for example, a machine that executes an operation or a process according to an instruction. For example, a computer includes a memory and a processor. The memory stores the program. The processor is hardware for executing an instruction set (for example, data transfer, calculation, processing, control, management) described in a program stored in the memory. In the present embodiment, the computer should be interpreted in a broad sense, and includes, for example, an information processing device, a controller of a memory device, a personal computer, a large computer, a microcomputer, a server device, and the like. In the present embodiment, instead of the computer, a computer system in which a plurality of computers operate in cooperation may be used.
図1は、本実施形態に係る情報処理システムの一例を示すブロック図である。 FIG. 1 is a block diagram showing an example of an information processing system according to the present embodiment.
情報処理システム1は、情報処理装置2とメモリ装置3とを含む。情報処理装置2は、メモリ装置3に対応するホスト装置として動作可能である。
The
メモリ装置3は、情報処理装置2に内蔵されてもよく、情報処理装置2とメモリ装置3とは、ネットワークなどによりデータを送受信可能に接続されるとしてもよい。メモリ装置3は、複数の情報処理装置2と通信可能に接続されてもよい。また、複数のメモリ装置3が、1以上の情報処理装置2と通信可能に接続されてもよい。
The memory device 3 may be built in the
メモリ装置3は、制御回路の一例としてのコントローラ4と、不揮発性メモリ5とを含む。コントローラ4と不揮発性メモリ5とは、着脱可能とし、メモリ装置3のメモリ容量は自由に拡張できるとしてもよい。ここで、メモリ容量とは、メモリに書き込み可能な最大のデータ量とする。
The memory device 3 includes a
コントローラ4のハードウェア部は、インタフェース部6、メモリ7A,7B、プロセッサP0〜PN、メモリコントローラ9を含む。コントローラ4は、例えば不揮発性メモリ5と電気的に接続される。本実施形態においては、コントローラ4が複数のプロセッサP0〜PNを備える場合を例として説明するが、コントローラ4に備えられるプロセッサの数は1以上で自由に変更可能である。
The hardware unit of the
インタフェース部6は、例えば情報処理装置2などのような外部装置からのデータ、情報、信号、コマンド、メッセージ、リクエスト、指令などの受信を制御し、外部装置への送信を制御する。
The interface unit 6 controls reception of data, information, signals, commands, messages, requests, commands and the like from an external device such as the
メモリ7Aは、作業用メモリとして使用される。メモリ7Aは、例えばプロセッサP0〜PNによる処理対象のプログラム、データ、情報などを格納する。メモリ7Aは、例えばDRAM(Dynamic Random Access Memory)又はSRAM(Static Random Access Memory)などのような揮発性メモリでもよく、又は、不揮発性メモリでもよい。
The
メモリ7Bは例えば不揮発性メモリとする。しかしながら、メモリ7Bの一部は揮発性メモリでもよい。メモリ7Bは、アドレス変換データ10、制御プログラム11、プログラムF0〜FMを格納する。なお、アドレス変換データ10、制御プログラム11、プログラムF0〜FMの一部又は全部は、プロセッサP0〜PN内のメモリ、メモリ7A、不揮発性メモリ5などのような他のメモリに格納されていてもよい。
The
図1の例では、コントローラ4が複数のプログラムF0〜FMを備える場合を例として説明するが、コントローラ4に備えられるプログラムの数は1以上で自由に変更可能である。
In the example of FIG. 1, although the case where the
アドレス変換データ10は、書き込みデータ又は読み出しデータの論理アドレス(例えばLogical Block Addressing(LBA))と物理アドレス(例えばPhysical Block Addressing(PBA))とを関係付けたデータであり、例えばLUT(Look Up Table)である。アドレス変換データ10は、テーブル形式のデータ構造を持つとしてもよく、例えばリスト形式などのような他のデータ構造を持つとしてもよい。
The
本実施形態に係るソフトウェア定義型プラットフォームは、制御プログラム11、コントローラ4のハードウェア部、不揮発性メモリ5を含む。例えば、メモリ装置3がSSDの場合、制御プログラム11、コントローラ4のハードウェア部、不揮発性メモリ5は、ソフトウェア定義型のSSDプラットフォーム(メモリ装置プラットフォーム)である。ソフトウェア定義型のSSDプラットフォームを用いることで、SSDの機能をハードウェアの制御から切り離して、ソフトウェア制御可能である。
The software-defined platform according to the present embodiment includes a
本実施形態において、プラットフォームとは、ハードウェア又はソフトウェアを動作させるために必要な基盤となるハードウェア、オペレーティングシステム(OS)、ミドルウェア、それらの組み合わせ、設定、環境などの総体を意味する。 In the present embodiment, the term “platform” refers to an aggregate of hardware, operating system (OS), middleware, combinations thereof, settings, environment, etc. as a basis required to operate hardware or software.
プロセッサP0〜PNは、制御プログラム11及びプログラムF0〜FMを実行する。プロセッサP0〜PNは、それぞれ管理部C0〜CNを備える。しかしながら、プロセッサP0〜PNと管理部C0〜CNとは別構成としてもよい。本実施形態において、プロセッサP0はマスタのプロセッサであり、プロセッサP1〜PNはマスタに従属して動作する従属のプロセッサであるとする。なお、プロセッサP0はマスタのプロセッサとしての機能に加えて、プロセッサP1〜PNと同様に従属のプロセッサとしての機能を含むとしてもよい。例えば、管理部C0〜CNとしては、キューが用いられ、実行待ちタスクは先入先出方式で管理されてもよい。しかしながら、管理部C0〜CNにおける実行待ちタスクは、例えば、複数の実行待ちタスクのうち高優先度のタスクが実行されるなど、他の基準にしたがって管理されてもよい。
The processors P0 to PN execute the
制御プログラム11は、ハードウェア部を抽象化する。例えば、ハードウェア部の抽象化は、プログラムF0〜FMと制御プログラム11との間でやり取りされるデータ、情報、信号、コマンド、メッセージ、リクエスト、指令などが特定のインタフェースに準拠することで実現される。例えば、プログラムF0〜FMは、特定のインタフェースに準拠したコマンドを制御プログラム11に発行することで、制御プログラム11によって実現される機能を使用可能である。制御プログラム11は、プログラムF0〜FMによって発行された特定のインタフェースに準拠するコマンドにしたがってハードウェア部に対して処理を実行し、又は、プログラムF0〜FMから受けた特定のインタフェースに準拠する情報をハードウェア部に対応する形式の情報に変換する。
The
本実施形態において、特定のインタフェースは、例えば、一方のプログラムが他方のプログラムを利用するために定義されている規約及び手順である。より具体的には、特定のインタフェースは、例えば、あるプログラムの機能及び管理するデータなどを、他のプログラムから呼び出し、呼び出された機能及び管理するデータなどを利用するための手順及びデータ形式などを定めた規約である。 In the present embodiment, the specific interface is, for example, a rule and procedure defined for one program to use the other program. More specifically, the specific interface calls, for example, a function of a certain program and data to be managed from another program, and a procedure and data format for using the called function and data to be managed, etc. It is a defined rule.
制御プログラム11は、プログラムF0〜FMがメモリ装置3の例えばコントローラ4などのようなハードウェア部に非依存となるように、プログラムF0〜FMとハードウェア部との間で基本動作を実現し、ハードウェアの違いを吸収する共通モジュールである。本実施形態において、非依存とは、少なくとも、協働する他方のソフトウェア又はハードウェアが取り替えられたとしても、引き続き利用可能な性質とする。そのため、制御プログラム11は、API(Application Programming Interface)、例えばLBAインタフェースなどの論理インタフェース、及び、例えばPBAインタフェースなどの物理インタフェースに準拠している。例えば、制御プログラム11は、API及び論理インタフェースにより、ハードウェア部に非依存な取り替え可能SSDモジュールとデータ、情報、信号、コマンド、メッセージ、リクエスト、指令などをやり取り可能である。例えば、後で説明する図4のモジュール131〜136は、SSDモジュールでもよい。
The
本実施形態において、例えば、物理インタフェースは、ハードウェアインタフェースでもよい。 In the present embodiment, for example, the physical interface may be a hardware interface.
本実施形態において、例えば、論理インタフェースは、ソフトウェアインタフェースでもよく、例えば、物理インタフェースの上に論理的に構成され、例えば、物理インタフェース上のアドレスの追加などに使用される。 In the present embodiment, for example, the logical interface may be a software interface, for example, logically configured on the physical interface, and used, for example, to add an address on the physical interface.
例えば、制御プログラム11は、コントローラ4のハードウェア部で実行された場合に、コマンド、情報、データなどを受け取るために定義された特定のインタフェースにしたがってプログラムF0〜FMのうちのいずれかによって発行されたコマンドを受け、コマンドにしたがってコントローラ4のハードウェア部及び不揮発性メモリ5に対する制御を実行するドライバを含み、コントローラ4のハードウェア部に不揮発性メモリ5に対するアクセスを実行させる。
For example, the
また、制御プログラム11は、不揮発性メモリ5に対する管理情報を管理し、特定のインタフェースにしたがってプログラムF0〜FMのうちのいずれかによって発行された管理情報の出力コマンドを受けた場合に、管理情報を出力コマンドの発行元へ送る。
In addition, the
さらに、制御プログラム11は、特定のインタフェースにしたがってプログラムF0〜FMのうちのいずれかによって発行された不揮発性メモリ5に対する処理の設定情報を受けた場合に、設定情報にしたがって不揮発性メモリ5に対する処理を実行する。
Further, when
本実施形態において、プログラムF0〜FMは、自由に組み合わせてもよい。 In the present embodiment, the programs F0 to FM may be freely combined.
制御プログラム11は、例えばタスクのスケジューリングを行う。これにより、プロセッサP0は、プロセッサP1〜PNに備えられている管理部C1〜CNの状態を監視し、管理部C0で管理されているタスクを、待ち状態のタスクの少ない管理部C1〜CNのいずれかに割り振る。それぞれのプロセッサP1〜PNは、管理部C1〜CNで管理されているタスクを実行する。
The
本実施形態において、メモリ7A,7Bにおける制御プログラム11の格納位置、プログラムF0〜FMの格納位置、制御プログラム11の作業領域の位置、各プログラムF0〜FMの作業領域の位置は、メモリ装置3の起動時に決定され、その後起動中は再配置されない。これにより、再配置のための時間が不要となり、処理を高速化することができる。
In the present embodiment, the storage position of the
プログラムF0〜FMは、APIを用いることにより、制御プログラム11の機能を利用可能であり、制御プログラム11と連携して動作する。プログラムF0〜FMは、例えば、ファームウェア、アプリケーションプログラム、モジュール、又はハンドラなどのような各種のソフトウェアである。例えば、ハンドラとは、処理リクエストが発生した場合に起動されるプログラムである。本実施形態において、プログラムF0〜FMはファームウェアの場合を例として説明するが、プログラムF0〜FMの種別についてはこれに限定されない。本実施形態において、プログラムF0〜FMは、例えば、メモリ装置3のユーザが作成したプログラムでもよく、メモリ装置3のメーカーが作成したプログラムでもよい。
The programs F0 to FM can use the function of the
例えば、プロセッサP0〜PNは、制御プログラム11とプログラムF0〜FMとの協働により、受付部81、アドレス変換部82、書き込み部83、読み出し部84として機能する。
For example, the processors P0 to PN function as a
プログラムF0〜FMと制御プログラム11とがメモリ装置3において協働して動作するため、プログラムF0〜FMのソフトウェア開発者は、メモリ装置3のハードウェア部を考慮することなく、プログラムF0〜FMを生成することができる。
Since the programs F0 to FM and the
メモリコントローラ9は、不揮発性メモリ5に対するアクセスを制御する。
The memory controller 9 controls access to the
データ書き込み時に、情報処理装置2は、メモリ装置3へ、書き込みコマンドと、書き込みデータと、書き込みデータを示す論理アドレスとを送信する。
At the time of data writing, the
プロセッサP0〜PNで実現される受付部81は、情報処理装置2からインタフェース部6経由で、書き込みコマンド、書き込みデータ、論理アドレスを受ける。
The receiving
アドレス変換部82は、受付部81によって書き込みコマンドが受け付けられた場合に、アドレス変換データ10に対して、書き込みコマンドに付されていた論理アドレスを、不揮発性メモリ5の物理アドレスに変換するための関係付けを行う。
The
書き込み部83は、メモリコントローラ9経由で、アドレス変換部82によって得られた不揮発性メモリ5の物理アドレスの示す位置に、書き込みデータを書き込む。
The
データ読み出し時に、情報処理装置2は、メモリ装置3へ、読み出しコマンドと、読み出しデータを示す論理アドレスとを送信する。
At the time of data read, the
受付部81は、情報処理装置2からインタフェース部6経由で、読み出しコマンドと論理アドレスとを受ける。
The receiving
アドレス変換部82は、受付部81によって読み出しコマンドが受け付けられた場合に、アドレス変換データ10を用いて、読み出しコマンドに付されていた論理アドレスを物理アドレスに変換する。
When the receiving
読み出し部84は、メモリコントローラ9経由で、不揮発性メモリ5の物理アドレスの示す位置から、読み出しデータを読み出す。そして、読み出し部84は、読み出しデータを、インタフェース部6経由で、情報処理装置2に送る。
The
図2は、本実施形態に係る制御プログラム11の構成の一例を示すブロック図である。
FIG. 2 is a block diagram showing an example of the configuration of the
制御プログラム11は、APIに準拠している。このため、プログラムF0〜FMは制御プログラム11の各種の機能を使用可能である。ここで、APIとは、例えば、複数のプログラムが互いにデータ、情報、信号、コマンド、メッセージ、リクエスト、指令などをやり取りするために使用する仕様である。APIは、例えば、サブルーチン、データ構造、オブジェクトクラス、変数などの仕様を含む。
The
また、制御プログラム11は,論理インタフェース、及び物理インタフェースに準拠している。このため、メモリ装置3は、典型的なSSDと同様の動作を実現可能である。ここで、論理インタフェースは、例えば、ソフトウェアとの間で論理アドレスを扱う際の仕様である。物理インタフェースは、例えば、ハードウェアとの間で物理アドレスを扱う際の仕様である。
例えば、制御プログラム11は、モジュール間通信部111、優先制御部112、割り込みハンドラ113、アクセス部114、情報管理部115、ハードウェアドライバ116、処理実行部117を含む。
Also, the
For example, the
モジュール間通信部111は、特定のインタフェースにしたがって、例えば、各種のプログラム間でのデータ、情報、信号、コマンド、メッセージ、リクエスト、指令などの送信及び受信を行う。
The
優先制御部112は、例えば、プログラムF0〜FMの優先度に応じて、実行するプログラムF0〜FMを切り替える。より具体的には、優先制御部112は、例えば、各種のプログラムF0〜FMの優先度をタスク単位で管理し、優先度の高いタスクを優先して実行する。
The
割り込みハンドラ113は、メモリ装置3のいずれかのハードウェア又はソフトウェアからの割り込みイベントを検知し、検知された割り込みに応じた処理を実行する。
The interrupt
アクセス部114は、不揮発性メモリ5に対する消去、読み出し、書き込みなどの基本動作を制御する。
The
情報管理部115は、不揮発性メモリ5に対する各種の管理情報115aを管理する。例えば、情報管理部115は、例えば統計情報、集計情報、制御情報などを含む管理情報115aを生成及び管理する。情報管理部115で管理される管理情報115aは、少なくとも、不揮発性メモリ5に対する処理で用いられる設定情報117aの生成に必要な情報である。管理情報115aは、例えば、不揮発性メモリ5に含まれているNAND型フラッシュメモリの各ブロックに対する消去回数、各ブロックに対する消去頻度、各ページに対する読み出し回数、各ページに対する読み出し頻度、各ページに対する書き込み回数、各ページに対する書き込み頻度、各ブロックの大きさ、各ブロック内のページの数、各ページの大きさ、推定書き込み速度、推定書き込み遅延時間、推定読み出し速度、推定読み出し遅延時間、などのうちの少なくとも1つを含む。
The
情報管理部115は、プログラムF0〜FMのうちのいずれかから管理情報115aの出力コマンドを受けた場合に、出力コマンドの発行元へ管理情報115aを送る。
When the
ハードウェアドライバ116は、メモリ装置3の各種のハードウェアを制御する。ハードウェアドライバ116の種別としては、例えば、インタフェース部6を制御するドライバ、電源を制御するドライバ、タイマーを制御するドライバなどがある。
The
処理実行部117は、プログラムF0〜FMのうちのいずれかから不揮発性メモリ5に対する処理の設定情報117aを受けた場合に、設定情報117aにしたがって不揮発性メモリ5に対する処理を実行する。
When the
例えば、設定情報117aは、少なくとも、不揮発性メモリ5に対する処理で用いられるパラメータとしてもよい。より具体的には、例えば、設定情報117aは、ガーベージコレクションの実行条件情報であり、処理実行部117は、ガーベージコレクションの実行条件情報にしたがってガーベージコレクションを実行するとしてもよい。また、例えば、設定情報117aは、不揮発性メモリ5のどの位置にどのようなデータを書き込むかの書き込み位置情報であり、処理実行部117は、不揮発性メモリ5における書き込み位置情報の示す位置にデータを書き込むとしてもよい。
For example, the setting
図3は、本実施形態に係るメモリ装置3の組み込み状態の一例を示すブロック図である。この図3では、プログラムF0を組み込む場合を例として説明するが、例えばプログラムF1〜FMなどのような他のプログラムを組み込む場合も同様である。 FIG. 3 is a block diagram showing an example of a built-in state of the memory device 3 according to the present embodiment. In FIG. 3, although the case where the program F0 is incorporated is described as an example, the same applies to the case where another program such as the programs F1 to FM is incorporated.
メモリ装置3のメーカーは、メモリ装置3を生成する。メモリ装置3は、初期的には、制御プログラム11、コントローラ4のハードウェア部4H、不揮発性メモリ5を含むソフトウェア定義型のSSDプラットフォームを備える。本実施形態においては、メモリ装置3は、初期的に、ファームウェア又はアプリケーションプログラムなどのようなプログラムF0を備えていなくてもよい。ここで、初期的とは、例えば、製品出荷時、納品時、又は、販売時である。なお、メモリ装置3は、初期的に、ソフトウェア定義型のSSDプラットフォームと協働し、メーカーが推奨する典型的なプログラム又は標準のプログラムを備えているとしてもよい。
The maker of the memory device 3 generates the memory device 3. The memory device 3 initially includes a software-defined SSD platform including the
また、メーカーは、プログラムF0の開発を支援するソフトウェア開発装置13を、例えばユーザ、顧客、メモリ装置3の購入者、又は、ソフトウェア開発者などのような第三者に、提供又は販売する。本実施形態では、ソフトウェア開発装置13をソフトウェア開発者が使用する場合を例として説明する。
In addition, the manufacturer provides or sells the
ソフトウェア開発装置13は、不揮発性メモリ5のエミュレータ、メモリ装置3のシミュレータを備える。これにより、例えば、外部ネットワークとは物理的に遮断されているような閉じた開発環境であっても、ソフトウェア開発者は、ソフトウェア開発装置13を用いてプログラムF0の開発を進めることができる。
The
ソフトウェア開発装置13は、ソフトウェア開発者によるプログラムF0の開発を支援する。ソフトウェア開発者は、例えば、メモリ装置3のユーザ又は購入者などでもよい。本実施形態において、プログラムF0は、例えばユーザ定義の取り替え可能モジュールであり、制御プログラム11の上位層モジュールである。
The
制御プログラム11は、API及び論理インタフェースに準拠しているため、ソフトウェア開発者は、効率的に、メモリ装置3のユーザ又は購入者の要望に応じたプログラムF0を生成し、プログラムF0を制御プログラム11とともに協働させることが可能である。
Since the
プログラムF0が生成されると、メモリ装置3のユーザ、購入者、又は、ソフトウェア開発者は、メモリ装置3に対してプログラムF0を組み込む。 When the program F0 is generated, the user of the memory device 3, the purchaser, or the software developer incorporates the program F0 into the memory device 3.
本実施形態においては、制御プログラム11がメモリ装置3に備えられているため、プログラムF0はハードウェア部4Hを意識することなく動作可能である。
In the present embodiment, since the
ユーザ又は購入者は、自己に適したプログラムF0をメモリ装置3に容易に実装し、使用することができる。 The user or purchaser can easily implement and use the program F0 suitable for him / her in the memory device 3.
本実施形態においては、不揮発性メモリ5とハードウェア4Hとの間で第1のインタフェース又はプロトコルが適用される。ハードウェア4Hと制御プログラム11との間で第2のインタフェース又はプロトコルが適用される。プログラムF0〜FMと制御プログラム11との間で第3のインタフェース又はプロトコルが適用される。これにより、不揮発性メモリ5、ハードウェア4H、制御プログラム11、プログラムF0〜FMのうちの少なくとも一部が取り替えられても、他のソフトウェア又はハードウェアを引き続き利用可能である。
In the present embodiment, a first interface or protocol is applied between the
図4は、本実施形態に係る情報処理システム1の構成要素間の関係の一例を示すブロック図である。
FIG. 4 is a block diagram showing an example of the relationship between the components of the
メモリ装置3は、主に2つの抽象化レイヤを備えることにより、取り替え可能SSDモジュール131〜137の開発を支援する。上記プログラムF0〜FMは取り替え可能SSDモジュール133〜136に相当する。
The memory device 3 supports the development of the
第1の抽象化レイヤは、ソフトウェア定義型のSSDプラットフォームを含む。ソフトウェア定義型のSSDプラットフォームは、制御プログラム11、ハードウェア部4H、不揮発性メモリ5を含む。ソフトウェア定義型のSSDプラットフォームは、例えばメモリ装置3のメーカーによって生成され、メモリ装置3に実装される。第1の抽象化レイヤにおいて、不揮発性メモリ5は、例えば、複数のNAND型フラッシュメモリB0〜BPを含む。
The first abstraction layer includes a software defined SSD platform. The software-defined SSD platform includes a
第2の抽象化レイヤは、取り替え可能SSDモジュール131〜137を含む。第2の抽象化レイヤは、上位でメモリ制御を実行する。取り替え可能SSDモジュール131〜136は、例えばAPI及び論理インタフェースにより、制御プログラム11とデータ、情報、信号、コマンド、メッセージ、リクエスト、指令などをやり取り可能である。第2の抽象化レイヤにおいて、割り込みハンドラ137は、制御プログラム11を用いることなく、ハードウェア部4Hと、データ、情報、信号、コマンド、メッセージ、リクエスト、指令などをやり取り可能である。
The second abstraction layer includes replaceable SSD modules 131-137. The second abstraction layer performs memory control on top. The
第2の抽象化レイヤにおいて、SSDモジュール131及び新しいモジュール132は、例えば、メーカーによって生成され、標準のSSDモジュール又は機能としてメモリ装置3に組み込まれる。
In the second abstraction layer, the
モジュール133〜135、ドライバモジュール136、割り込みハンドラ137は、ソフトウェア開発者などの第三者によって生成され、メモリ装置3に組み込まれる。
The
SSDモジュール131、新しいモジュール132、モジュール133〜135は、例えば情報処理装置2などのような外部装置に備えられているドライバ141〜145との間で、データ、情報、信号、コマンド、メッセージ、リクエスト、指令などをやり取り可能である。
The
ドライバモジュール136、割り込みハンドラ137は、例えばネットワーク機器、撮影装置、又はセンサなどのような外部ハードウェア部146との間で、データ、情報、信号、コマンド、メッセージ、リクエスト、指令などをやり取り可能である。ドライバモジュール136は、外部ハードウェア部146を制御可能である。割り込みハンドラ137は、外部ハードウェア部146又はハードウェア部4Hからの割り込みイベントを検知し、検知された割り込みに応じた処理をハードウェア部4H又は外部ハードウェア部146に対して実行する。
The
さらに、モジュール133〜135とドライバモジュール136は、特定のインタフェースにしたがって、制御プログラム11と、データ、情報、信号、コマンド、メッセージ、リクエスト、指令などをやり取り可能である。
Furthermore, the
図5は、本実施形態に係る制御プログラム11及びハードウェア部4Hによって実行される処理の一例を示すフローチャートである。
FIG. 5 is a flowchart showing an example of processing executed by the
ステップS501において、制御プログラム11は、プログラムF0〜FMのいずれかから、特定のインタフェースにしたがって、アクセスコマンドを受ける。例えば、制御プログラム11は、書き込みコマンド、論理アドレス、書き込みデータを受ける。例えば、制御プログラム11は、読み出しコマンド、論理アドレスを受ける。
In step S501, the
ステップS502において、制御プログラム11及びハードウェア部4Hは、アクセスコマンドにしたがって、論理アドレスを物理アドレスに変換し、不揮発性メモリ5に対して書き込みデータの書き込み、又は、読み出しデータの読み出しを行う。制御プログラム11は、不揮発性メモリ5から読み出しデータが読み出された場合に、読み出しデータを、読み出しコマンドの発行元に送る。
In step S502, the
ステップS503において、制御プログラム11は、不揮発性メモリ5に対する管理情報115aを生成する。
In step S 503, the
ステップS504において、制御プログラム11は、プログラムF0〜FMのいずれかから、特定のインタフェースにしたがって、管理情報115aの出力コマンドを受ける。
In step S504, the
ステップS505において、制御プログラム11は、出力コマンドにしたがって、管理情報115aを出力コマンドの発行元に送る。
In step S505, the
ステップS506において、制御プログラム11は、プログラムF0〜FMのいずれかから、特定のインタフェースにしたがって、処理実行コマンドと設定情報117aとを受ける。
In step S506, the
ステップS507において、制御プログラム11及びハードウェア部4Hは、処理実行コマンドと設定情報117aとにしたがって不揮発性メモリ5に対する処理を実行する。
In step S507, the
以上説明した本実施形態においては、メモリ装置3のハードウェア部4Hに依存することなく、プログラムF0〜FM、取り替え可能SSDモジュール131〜136を生成し、プログラムF0〜FM、取り替え可能SSDモジュール131〜136をメモリ装置3に組み込み、メモリ装置3を用いることができる。
In the embodiment described above, programs F0 to FM,
これにより、メモリ装置3の利便性を向上させることができる。 Thereby, the convenience of the memory device 3 can be improved.
本実施形態においては、メモリ装置3のハードウェア部4Hが変更又はバージョンアップされた場合であっても、新たなメモリ装置3においてプログラムF0〜FM、取り替え可能SSDモジュール131〜136を継続して使用可能である。
In the present embodiment, even if the
プログラムF0〜FM、取り替え可能SSDモジュール131〜136は、メモリ装置3のハードウェア部4Hを意識することなく、開発することができる。
The programs F0 to FM and the
メモリ装置3のユーザ又は購入者は、もし新たなメモリ装置3を導入する場合であっても、先に生成されたプログラムF0〜FM、取り替え可能SSDモジュール131〜136を新たなメモリ装置3で継続して用いることができる。
The user or purchaser of the memory device 3 continues the previously generated programs F0 to FM and
したがって、本実施形態においては、メモリ装置3の開発、保守、メンテナンスの労力、費用、時間を削減することができ、開発作業を効率化することができる。 Therefore, in the present embodiment, the effort, cost, and time for development, maintenance, and maintenance of the memory device 3 can be reduced, and the development work can be streamlined.
本実施形態においては、メモリ装置3のユーザ又は購入者が自分に適したプログラムF0〜FM、取り替え可能SSDモジュール131〜137を使用することができる。したがって、ユーザは、メモリ装置3の運用に、自己のノウハウを導入容易である。
In this embodiment, the user or purchaser of the memory device 3 can use the programs F0 to FM and the
本実施形態において、メモリ装置3のメーカーは、メモリ装置3を大量に生産・販売することができる。 In the present embodiment, the manufacturer of the memory device 3 can mass-produce and sell the memory device 3.
本実施形態において、ユーザは、例えばファームウェア又はアプリケーションプログラムなどのようなプログラムF0〜FM、取り替え可能SSDモジュール131〜137を独自に開発し、メモリ装置3へプログラムF0〜FM、取り替え可能SSDモジュール131〜137を容易に実装することができる。
In the present embodiment, the user independently develops programs F0 to FM such as firmware or application programs, etc.,
本実施形態においては、ネットワーク機器、撮影装置、又は、センサなどの外部ハードウェア部146とメモリ装置3とを容易に接続し、外部ハードウェア部146から受けたデータを不揮発性メモリ5に書き込むことができる。換言すれば、本実施形態においては、メモリ装置3がドライバモジュール136を備えることにより、メモリ装置3が外部ハードウェア部146との間の通信インタフェースを容易に実装することができる。したがって、本実施形態に係るメモリ装置3は、例えば、IoT(Internet of Things)に適している。
In the present embodiment, the
本実施形態においては、例えば、メモリ装置3のメーカーは、自社の不揮発性メモリ5を購入・使用するユーザに、安く又は無償で、制御プログラム11、ハードウェア部4H、ソフトウェア開発装置13のうちの少なくとも1つを提供する。これにより、メモリ装置3のメーカーは自社の不揮発性メモリ5の販売を促進することができる。
In the present embodiment, for example, the maker of the memory device 3 can select one of the
本実施形態においては、メモリ装置3を販売又は納品する前であっても、ソフトウェア開発者はソフトウェア開発装置13を用いてプログラムF0〜FM、取り替え可能SSDモジュール131〜137を生成することができる。本実施形態において、メモリ装置3のメーカーは、ユーザ又は購入者に固有のプログラムを開発することなく、メモリ装置3を迅速に販売又は納品することができる。したがって、メモリ装置3の製造からユーザ又は購入者へメモリ装置3を納品するまでの期間を短縮することができる。
In this embodiment, even before selling or delivering the memory device 3, the software developer can use the
メモリ装置3のユーザ又は購入者は、ガーベージコレクションの実行条件の変更、ガーベージコレクションの削除、どのようなデータを不揮発性メモリ5のどの位置に書き込むかの決定を、自由に実行させることができ、自己の使用態様に応じて不揮発性メモリ5の寿命を延ばすことができる。
The user of the memory device 3 or the purchaser can freely change the garbage collection execution conditions, delete the garbage collection, and decide what data should be written to which position in the
本実施形態において、制御プログラム11の格納位置、プログラムF0〜FMの格納位置、制御プログラム11の作業用領域の位置、各プログラムF0〜FMの作業用領域の位置は、メモリ装置3の起動時に決定され、その後動作中は再配置されない。これにより、プログラム及びデータの再配置が必要なく、メモリ装置3の動作を高速化することができる。
In the present embodiment, the storage position of the
本実施形態においては、不揮発性メモリ5、ハードウェア部4H、制御プログラム11、プログラムF0〜FM、取り替え可能SSDモジュール131〜137のうちの少なくとも一部が取り替えられても、他のソフトウェア又はハードウェアを引き続き利用可能である。例えば、不揮発性メモリ5の開発に伴って、不揮発性メモリ5の世代に変更が生じた場合であっても、既存のプログラムF0〜FM、取り替え可能SSDモジュール131〜137、コントローラ4のハードウェア部4H、及び制御プログラム11を再利用できる。
In the present embodiment, even if at least a part of the
[第2の実施形態]
本実施形態においては、上記第1の実施形態で説明した情報処理システム1の変形例について説明する。
Second Embodiment
In the present embodiment, a modification of the
本実施形態において、メモリ装置3は、仮想マシンごとに、仮想メモリ装置(仮想SSD)を割り当てる。 In the present embodiment, the memory device 3 assigns a virtual memory device (virtual SSD) to each virtual machine.
図6は、本実施形態に係る情報処理システムの構成要素間の関係の一例を示すブロック図である。 FIG. 6 is a block diagram showing an example of the relationship between components of the information processing system according to the present embodiment.
本実施形態に係る情報処理システム1Aは、メモリ装置3と仮想マシンVM0〜VMPとを備える。
An
メモリ装置3は、大きなメモリ容量を持つ。メモリ装置3は、仮想メモリ装置VS0〜VSPと、制御プログラム11と、NAND型フラッシュメモリB0〜BPとを備える。NAND型フラッシュメモリB0〜BPは、上記図1の不揮発性メモリ5に相当する。
The memory device 3 has a large memory capacity. The memory device 3 includes virtual memory devices VS0 to VSP, a
仮想メモリ装置VS0〜VSPは、それぞれ仮想マシンVM0〜VMPに対応付けられている。それぞれの仮想メモリ装置VS0〜VSPは、互いに独立して動作可能であり、これにより安定したパフォーマンスを実現する。 The virtual memory devices VS0 to VSP are associated with virtual machines VM0 to VMP, respectively. The respective virtual memory devices VS0 to VSP can operate independently of one another, thereby achieving stable performance.
制御プログラム11は、標準コマンドセット(Common Command Set)にしたがって、動作可能である。制御プログラム11は、メモリ装置3において、複数の仮想メモリ装置VS0〜VSPと協働する。制御プログラム11は、各仮想メモリ装置VS0〜VSPのパラメータを個別に変更及び管理する。
The
例えば、制御プログラム11は、仮想メモリ装置VS0〜VSPごとに、メモリ容量、ガーベージコレクションの設定、オーバープロビショニングの設定、メモリの粒度(Granularity)の設定、信頼性(エラー訂正能力)の程度を変更可能である。ここで、ガーベージコレクションとは、プログラムが動的に確保したメモリ領域のうち、不要になった領域を自動的に解放する機能である。オーバープロビショニングとは、予備領域を確保することをいう。メモリの粒度とは、例えば、NAND型フラッシュメモリのブロック及びページのサイズ、ハードディスクのセクタのサイズなど、書き込みを行う単位のサイズ、読み出しを行う単位のサイズ、及び、消去を行う単位のサイズを意味する。
For example, the
制御プログラム11は、各仮想メモリ装置VS0〜VSPの数、各仮想メモリ装置VS0〜VSPのメモリ容量を適宜変更可能である。
The
制御プログラム11は、仮想メモリ装置VS0〜VSPごとの異なるソフトウェアポートを備える。制御プログラム11は、各仮想メモリ装置VS0〜VSPに対して、NAND型フラッシュメモリB0〜BPを割り当てる。例えば、制御プログラム11は、各仮想メモリ装置VS0〜VSPに対して割り当てられたNAND型フラッシュメモリB0〜BPを、各仮想メモリ装置VS0〜VSPに対応するネームスペースにより管理する。換言すれば、不揮発性メモリ5は複数のネームスペースに分割され、各仮想メモリ装置VS0〜VSPが自己に対応するネームスペースに対応付けられている。
The
本実施形態において、ネームスペースとは、不揮発性メモリ5に含まれる複数のブロックを区分けすることによって得られるメモリのスペースである。仮想メモリ装置VS0〜VSPごとにネームスペースを割り当てることにより、仮想メモリ装置VS0〜VSPのうちの少なくとも2つの仮想メモリ装置で論理アドレスが重複する場合であっても、ネームスペースの識別情報と論理アドレスとを用いて適切なデータをアクセスすることができる。
In the present embodiment, the namespace is a memory space obtained by dividing a plurality of blocks included in the
以上説明した本実施形態においては、1つのメモリ装置3を複数の仮想メモリ装置VS0〜VSPとして扱うことができ、メモリ装置3の利便性をさらに向上させることができる。 In the embodiment described above, one memory device 3 can be treated as a plurality of virtual memory devices VS0 to VSP, and the convenience of the memory device 3 can be further improved.
本実施形態においては、ネームスペースを用いて、各仮想メモリ装置VS0〜VSPに対するNAND型フラッシュメモリB0〜BPの割り当てを管理するため、仮想メモリ装置VS0〜VSPからNAND型フラッシュメモリB0〜BPに対するアクセスの精度を向上させることができる。 In this embodiment, the virtual memory devices VS0 to VSP access the NAND flash memories B0 to BP to manage allocation of the NAND flash memories B0 to BP to the virtual memory devices VS0 to VSP using a name space. Accuracy can be improved.
本実施形態においては、それぞれの仮想メモリ装置VS0〜VSPが互いに独立して動作可能であるため、安定したパフォーマンスを実現することができる。 In the present embodiment, since the respective virtual memory devices VS0 to VSP can operate independently of each other, stable performance can be realized.
[第3の実施形態]
本実施形態においては、上記第1及び第2の実施形態の変形例であり、スケジューラを含む制御プログラム11によって複数のプロセッサを制御するメモリ装置について説明する。
Third Embodiment
This embodiment is a modification of the first and second embodiments, and describes a memory device that controls a plurality of processors by a
図7は、本実施形態に係るメモリ装置3の構成要素間の関係の一例を示すブロック図である。この図7において、制御プログラム11と、モジュール131〜136と、割り込みハンドラ137とは、ソフトウェアとする。ドライバ141〜145及び外部ハードウェア部146は、ハードウェアとする。
FIG. 7 is a block diagram showing an example of the relationship between the components of the memory device 3 according to the present embodiment. In FIG. 7, the
メモリ装置3は、制御プログラム11と、ハードウェア部4Hと、複数のNAND型フラッシュメモリB0〜BPとを含む。ハードウェア部4Hは、複数のプロセッサP1〜PNと、メモリ7Aとを含む。
The memory device 3 includes a
制御プログラム11は、スケジューラ15としての機能を含む。なお、スケジューラ15は、ハードウェアにより実現されてもよい。
The
メモリ7Aは、複数のプロセッサP1〜PNによって共有される。プロセッサP1〜PNのいずれかがメモリ7Aにデータ、情報、信号、コマンド、メッセージ、リクエスト、指令を格納し、プロセッサP1〜PNのうちの他のプロセッサがメモリ7Aからデータ、情報、信号、コマンド、メッセージ、リクエスト、指令を読み出すことにより、プロセッサP1〜PN間でデータ、情報、信号、コマンド、メッセージ、リクエスト、指令をやり取り可能である。
The
例えば、モジュール131〜136と制御プログラム11との間は、標準化された特定のインタフェースにより、データ、情報、信号、コマンド、メッセージ、リクエスト、指令をやり取り可能とする。
For example, data, information, signals, commands, messages, requests, commands can be exchanged between the
例えば、SSDモジュール131〜136と、外部装置に備えられているドライバ141〜145及び外部ハードウェア部146との間は、独自のインタフェースにより、データ、情報、信号、コマンド、メッセージ、リクエスト、指令をやり取り可能とする。外部ハードウェア部146は、例えば、メモリ装置3に対する外部のメモリ装置としてもよく、外部のNAND型フラッシュメモリとしてもよい。
For example, between the
例えば、複数のNAND型フラッシュメモリB0〜BPは、不揮発性メモリ5のメーカーによって生成される。
For example, the plurality of NAND flash memories B0 to BP are generated by the maker of the
例えば、ハードウェア部4Hは、コントローラ4のメーカーによって生成される。
For example, the
例えば、制御プログラム11は、不揮発性メモリ5のメーカー、コントローラ4のメーカー、又は、第1のソフトウェア開発者によって生成される。
For example, the
例えば、モジュール131,132は、不揮発性メモリ5のメーカー、コントローラ4のメーカー、又は、第1のソフトウェア開発者によって生成される。
For example, the
例えば、モジュール133〜135、ドライバモジュール136、割り込みハンドラ137は、第2のソフトウェア開発者によって生成される。
For example, modules 133-135,
本実施形態において、スケジューラ15は、例えば、どのプロセッサに、どのタスクを実行させるか、を動的に決定する。換言すれば、スケジューラ15は、例えば、動的タスクスケジューラを含む。
In the present embodiment, for example, the
以下で、本実施形態に係る制御プログラム11による制御の例について説明する。
Hereinafter, an example of control by the
図8は、本実施形態に係るプロセッサP0〜P2及びメモリ7Aの関係の一例を示すブロック図である。この図8では、説明を簡略化するためにプロセッサが3つの場合を例とし
て説明するが、プロセッサが4以上の場合も同様である。また、マスタのプロセッサP0が従属のプロセッサとしての機能も含む場合、プロセッサは2以上であればよい。
FIG. 8 is a block diagram showing an example of the relationship between the processors P0 to P2 and the
プロセッサP0〜P2は、それぞれ管理部C0〜C2とスケジューラ150〜152とを備える。プロセッサP0〜P2は、ハードウェア部4Hの他のハードウェアを制御し、これにより不揮発性メモリ5に対する書き込みデータの書き込み、読み出しデータの読み出し、書き込まれたデータの消去を制御する。
The processors P0 to P2 respectively include management units C0 to C2 and
管理部C0は、プロセッサP0に対応しており複数の実行待ち処理とその実行順序を管理可能である。 The management unit C0 corresponds to the processor P0, and can manage a plurality of execution waiting processes and their execution orders.
管理部C1は、プロセッサP1で実行される実行待ち処理とその実行順序を管理可能である。 The management unit C1 can manage the execution waiting process executed by the processor P1 and the execution order thereof.
管理部C2は、プロセッサP2で実行される実行待ち処理とその実行順序を管理可能である。 The management unit C2 can manage the execution waiting process executed by the processor P2 and the execution order thereof.
本実施形態において、管理部C1,C2で管理可能な最大のタスク数は、2とするが、3以上でもよい。 In the present embodiment, the maximum number of tasks manageable by the management units C1 and C2 is two, but may be three or more.
スケジューラ15は、プロセッサP0でスケジューリングを行うスケジューラ150と、プロセッサP1でスケジューリングを行うスケジューラ151と、プロセッサP2でスケジューリングを行うスケジューラ152とを含む。しかしながら、スケジューラ15は、分散されることなく、例えばプロセッサP0で集中的に動作してもよい。
The
スケジューラ150は、マスタスケジューラであり、従属のプロセッサP1,P2の負荷、又は、管理部C1,C2内の実行待ちタスクの数、が均等化されるように、管理部C0の実行待ちタスクをスケジューラ151,152に配分する。
The
スケジューラ151,152は、従属のスケジューラであり、プロセッサP1,P2の処理時間及び遅延時間を短縮化する。
The
スケジューラ151,152は、それぞれ管理部C1,C2のタスクの数を求める。
The
スケジューラ151は、管理部C1で管理されている実行待ちタスクの数が第1のしきい値以下か否か判断し、判断結果をマスタスケジューラ150に送る。
The
スケジューラ152は、管理部C2で管理されている実行待ちタスクの数が第2のしきい値以下か否か判断し、判断結果をマスタスケジューラ150に送る。
The scheduler 152 determines whether the number of execution waiting tasks managed by the
スケジューラ150は、管理部C1で管理されている実行待ちタスクの数が第1のしきい値以下の場合に、管理部C0で管理されている実行待ちタスクを、スケジューラ151に通知する。スケジューラ151は、スケジューラ150から通知された実行待ちタスクを、管理部C1で管理する。
The
スケジューラ150は、管理部C2で管理されている実行待ちタスクの数が第2のしきい値以下の場合に、管理部C0で管理されている実行待ちタスクを、スケジューラ152に通知する。スケジューラ152は、スケジューラ150から通知された実行待ちタスクを、管理部C2で管理する。
The
本実施形態において、スケジューラ150は、実行待ちタスクを識別するためのタスク識別情報と、当該実行待ちタスクの実行優先度とを関連付けた優先度情報16をメモリ7Aに格納する。
In the present embodiment, the
スケジューラ150は、管理部C0から管理部C1又は管理部C2へ実行待ちタスクの管理先を変更する場合には、優先度情報16を参照し、管理部C0で管理されている高優先度の実行待ちタスクを、管理先が変更されるタスクとして決定する。より具体的には、例えば、スケジューラ150は、最も優先度の高い実行待ちタスクを、管理先が変更されるタスクとして決定してもよい。例えば、スケジューラ150は、管理部C0で管理されている実行待ちタスクの中で、優先度が上位のグループに属する実行待ちタスクのうちのいずれかを、管理先が変更されるタスクとして決定してもよい。例えば、スケジューラ150は、管理部C0で優先度が所定の値以上の実行待ちタスクが管理されている場合には、優先度が所定の値以上の実行待ちタスクを管理先が変更されるタスクとして決定し、管理部C0で優先度が所定の値以上の実行待ちタスクが管理されていない場合には、先入先出方式にしたがって管理先が変更されるタスクを決定してもよい。
When changing the management destination of the task waiting for execution from the managing unit C0 to the managing unit C1 or the managing unit C2, the
以下において、プロセッサP1,P2で同様の処理は、プロセッサP1を用いて説明し、プロセッサP2については説明を省略するか、又は、簡単に説明する。 In the following, the same processes in the processors P1 and P2 will be described using the processor P1, and the description of the processor P2 will be omitted or briefly described.
スケジューラ151は、プロセッサP1でタスク実行が終了した場合に、管理部C1で管理されている次のタスクを実行する。
The
スケジューラ151は、管理部C1で管理されている次のタスクを実行する場合に、優先度情報16を参照し、管理部C1で管理されている高優先度の実行待ちタスクを、次に実行されるタスクとして決定する。より具体的には、例えば、スケジューラ151は、最も優先度の高いタスクを、次に実行されるタスクとして決定してもよい。例えば、スケジューラ151は、管理部C1で管理されているタスクの中で、優先度が上位のグループに属するタスクのうちのいずれかを、次に実行されるタスクとして決定してもよい。例えば、スケジューラ151は、管理部C1で優先度が所定の値以上のタスクが管理されている場合には、優先度が所定の値以上のタスクを次に実行されるタスクとして決定し、管理部C1で優先度が所定の値以上のタスクが管理されていない場合には、先入先出方式にしたがって次に実行されるタスクを決定してもよい。
The
スケジューラ151は、プロセッサP1でタスク実行が終了した場合に、タスク実行が終了したことを示すタスク終了情報をスケジューラ150に送る。スケジューラ150は、管理部C0で実行待ちタスクが管理されている場合に、管理先が変更されるタスクを決定し、タスク終了情報を発したスケジューラ151へ管理先が変更されるタスクを通知する。スケジューラ151は、スケジューラ150から通知されたタスクを、管理部C1で管理する。
The
スケジューラ151は、プロセッサP1で実行されたタスクの次に起動される新たなタスクがプロセッサP1,P2のうちの一方のプロセッサで実行される場合、新たなタスクを一方のプロセッサに対応するスケジューラに通知するとしてもよい。この場合、一方のプロセッサに対応するスケジューラは、一方のプロセッサに対応する管理部に、新たなタスクを管理させる。
スケジューラ151は、プロセッサP1で実行されたタスクの次に起動される新たなタスクがプロセッサP1,P2のうちのいずれでも実行可能な場合、新たなタスクをプロセッサP0に対応するスケジューラ150に通知してもよい。この場合、スケジューラ150は、管理部C0に、新たなタスクを管理させる。
The
スケジューラ151は、プロセッサP1で実行されたタスクの次に起動される新たなタスクがプロセッサP1,P2のうちのいずれでも実行可能であり、管理部C1で管理されているタスクの数が第1のしきい値以下の場合、新たなタスクをプロセッサP1に対応するスケジューラ151に通知してもよい。この場合、スケジューラ151は、管理部C1に、新たなタスクを管理させる。
The
スケジューラ151は、プロセッサP1で実行されたタスクの次に起動される新たなタスクがプロセッサP1,P2のうちのいずれでも実行可能であり、管理部C2で管理されているタスクの数が第2のしきい値以下の場合、新たなタスクをプロセッサP2に対応するスケジューラ152に通知してもよい。この場合、スケジューラ152は、管理部C2に、新たなタスクを管理させる。
The
スケジューラ151は、プロセッサP1で実行されたタスクの次に起動される新たなタスクがプロセッサP1,P2のうちのいずれでも実行可能であり、管理部C2,C3で管理されているタスクの数が第1のしきい値及び第2のしきい値より多い場合、新たなタスクをプロセッサP0に対応するスケジューラ150に通知してもよい。この場合、スケジューラ150は、管理部C0に、新たなタスクを管理させる。
The
プロセッサP1,P2で実行されるタスクは、ハードウェア部4Hをアクセスするための待ち合わせタスクを含まない。例えば、待ち合わせタスクとは、あるイベントが発生するまで待ち状態となるタスクであってもよい。この場合、プロセッサP1,P2でタスクの実行が開始されると、プロセッサP1,P2で割り込みなどを受け例外処理が発生した場合を除き、中断が生じない。
The tasks executed by the processors P1 and P2 do not include waiting tasks for accessing the
制御プログラム11は、メモリ装置3の起動時、又は、管理部C1,C2で管理されているタスクがプロセッサP1,P2によって実行される前に、全タスクに対して、必要とされるメモリ7Aのメモリ領域20を割り当てる。
The
制御プログラム11は、実行されるタスクと当該タスクに割り当てられているメモリ領域20とを関連付けた領域情報17をメモリ7Aに格納する。制御プログラム11は、領域情報17を参照し、タスクを実行する場合に使用されるメモリ領域20を決定する。
The
制御プログラム11は、プロセッサP1,P2のうちの少なくとも1つを停止する場合に、プロセッサP0に対応する管理部C0から停止されるプロセッサに対応する管理部へのタスクの管理先の変更を止め、プロセッサP0に対応する管理部C0から停止されないプロセッサに対応する管理部へタスクの管理先を変更する。例えば、プロセッサは、電源供給が停止されることにより、停止される。
When stopping at least one of the processors P1 and P2, the
制御プログラム11は、プロセッサP1が割り込みを受けた場合に、割り込みに続くタスクを、プロセッサP1に対応する管理部C1で管理する。
When the processor P1 receives an interrupt, the
制御プログラム11は、タスクがハードウェア部4Hの一部で実行される必要がある場合に、タスクと当該タスクの実行で使用されるハードウェア部4Hの一部を識別するためのハードウェア識別情報とを関連付けたハードウェア情報19をメモリ7Aに格納する。制御プログラム11は、ハードウェア情報19を参照し、タスクを実行する場合に当該タスクの実行で使用されるハードウェア部を決定する。そして、制御プログラム11は、決定されたハードウェア部に対応する管理部で、タスクを管理する。具体的には、制御プログラム11は、情報処理装置2からアクセスリクエストとハードウェア識別情報とを受けた場合に、アクセスリクエストに対応するタスクとハードウェア識別情報とを関連付けたハードウェア情報19をメモリ9に格納する。制御プログラム11は、アクセスリクエストに対応するタスクを実行する場合に、ハードウェア識別情報の示すプロセッサに対応する管理部で、当該タスクを管理する。
The
図9は、本実施形態に係るスケジューラ15の第1の処理の一例を示すフローチャートである。この図9においては、タスクの管理先が管理部C0から管理部C1に変更されるまでの処理を例示している。しかしながら、タスクの管理先が管理部C0から例えば管理部C2などのような他の管理部に変更されるまでの処理も同様である。
FIG. 9 is a flowchart showing an example of the first process of the
ステップS901において、スケジューラ15は、管理部C0でタスクを管理する。
In step S901, the
ステップS902において、スケジューラ15は、管理部C1で管理されているタスクの数が第1のしきい値以下か判断する。
In step S902, the
管理部C1で管理されているタスクの数が第1のしきい値以下ではない場合、処理はステップS905に移る。 If the number of tasks managed by the management unit C1 is not equal to or less than the first threshold, the process proceeds to step S905.
管理部C1で管理されているタスクの数が第1のしきい値以下の場合、ステップS903において、スケジューラ15は、優先度情報16を参照し、管理部C0から管理部C1に管理先が変更されるタスクを選択する。
When the number of tasks managed by the management unit C1 is equal to or less than the first threshold, the
ステップS904において、スケジューラ15は、選択されたタスクの管理先を管理部C1に変更する。
In step S904, the
ステップS905において、スケジューラ15は、処理継続の場合にステップS901に処理を移し、処理継続でない場合に処理を終える。
In step S905, the
図10は、スケジューラ15の第2の処理の一例を示すフローチャートである。この図10においては、実行されたタスクの次に起動される新たなタスクが管理部C0〜C2のいずれかに割り当てられるまでの処理を例示している。
FIG. 10 is a flowchart showing an example of the second process of the
ステップS1001において、スケジューラ15は、実行されたタスクの次に起動される新たなタスクが、プロセッサP1で実行されるか、プロセッサP2で実行されるか、プロセッサP1,P2のいずれでも実行可能か、を判断する。
In step S1001, the
新たなタスクの実行先がプロセッサP1の場合、ステップS1002において、スケジューラ15は、新たなタスクを管理部C1で管理する。
When the execution destination of the new task is the processor P1, in step S1002, the
新たなタスクの実行先がプロセッサP2の場合、ステップS1003において、スケジューラ15は、新たなタスクを管理部C2で管理する。
If the execution destination of the new task is the processor P2, in step S1003, the
新たなタスクの実行先がプロセッサP1,P2のいずれでも可能な場合、ステップS1004において、スケジューラ15は、新たなタスクを管理部C0で管理する。
When the execution destination of the new task can be either of the processors P1 and P2, in step S1004, the
図11は、本実施形態に係るタスク間の領域情報の通知状態の一例を示すブロック図である。 FIG. 11 is a block diagram showing an example of a notification state of area information between tasks according to the present embodiment.
第1のタスクT1は、プロセッサP1,P2のいずれかで実行される。メモリ領域181は、第1のタスクT1で使用されるメモリ領域である。
The first task T1 is executed by one of the processors P1 and P2. The
第2のタスクT2は、プロセッサP1,P2のいずれかで実行される。 The second task T2 is executed by one of the processors P1 and P2.
第2のタスクT2は、第1のタスクT1で使用されるメモリ領域181の一部又は全部を、使用する。この場合、第1のタスクT1は、第2のタスクT2へメモリ領域181の領域情報を、通知する。領域情報は、例えば、メモリ領域181の位置情報を含む。
The second task T2 uses a part or all of the
第1のタスクT1から第2のタスクT2への領域情報の通知は、メモリ装置3の電源が投入され、タスクT1にメモリ領域181が割り当てられた場合に、実行されるとしてもよい。また、第1のタスクT1から第2のタスクT2への領域情報の通知は、第2のタスクT2の起動により実行されるとしてもよい。
The notification of the area information from the first task T1 to the second task T2 may be executed when the memory device 3 is powered on and the
本実施形態において、制御プログラム11は、タスクの実行が終了した場合であっても、当該タスクに対応するメモリ領域を他のタスクに割り当てない。また、タスクの実行終了後に同一のタスクを再実行する場合には、同じメモリ領域が再使用される。
In the present embodiment, the
タスクは、ブートプログラムのタスクでもよい。この場合、メモリ装置3の電源投入に基づいて、電源投入処理を実行するタスクが、プロセッサP0〜P2の管理部C0〜C2のいずれかで管理される。 The task may be a boot program task. In this case, one of the management units C0 to C2 of the processors P0 to P2 manages the task of executing the power on process based on the power on of the memory device 3.
ハードウェア部4Hと制御プログラム11とのうちの少なくとも一方は、エラー検出を行うとしてもよい。エラーが検出された場合、エラー訂正処理を実行するタスクが、プロセッサP0〜P2の管理部C0〜C2のいずれかで管理される。
At least one of the
本実施形態において、メモリ装置3の制御プログラム11は、NAND型フラッシュメモリB0〜BPのブロックごとの消去回数、ブロック内のページ数、ブロックサイズ、ページサイズなどのようなメモリ情報を、モジュール131〜136などに送るとしてもよい。
In the present embodiment, the
制御プログラム11は、タスクから、NAND型フラッシュメモリB0〜BPの割り当てリクエスト又は解放リクエストを受けた場合に、割り当て処理又は解放処理を実行し、タスクに対して割り当てられた又は解放されたNAND型フラッシュメモリB0〜BPのブロックを、タスクへ通知するとしてもよい。
When the
図12は、本実施形態に係るタスク及びメモリ領域の関係の一例を示すブロック図である。 FIG. 12 is a block diagram showing an example of the relationship between tasks and memory areas according to the present embodiment.
タスクT1〜T3のうちの少なくとも1つは、他の複数のタスクからリクエストを受けるとしてもよい。 At least one of the tasks T1 to T3 may receive requests from other tasks.
タスクT1が実行されると、タスクT1は、タスクT1の後に実行されるタスクT2にリクエストと当該リクエストを発したタスクT1の識別情報を送る。また、タスクT1は、実行によって得られた情報を、タスクT1に対応するメモリ領域181に格納するか、又は、タスクT2に対応するメモリ領域182に格納する。
When the task T1 is executed, the task T1 sends a request and identification information of the task T1 that has issued the request to a task T2 executed after the task T1. Further, the task T1 stores the information obtained by the execution in the
タスクT2は、メモリ領域181に格納されている情報、又は、メモリ領域182に格納されている情報を用いて実行される。すると、タスクT2は、タスクT2の後に実行されるタスクT3にリクエストと当該リクエストを発したタスクT2の識別情報を送る。また、タスクT2は、実行によって得られた情報を、タスクT2に対応するメモリ領域182に格納するか、又は、タスクT3に対応するメモリ領域183に格納する。
The task T2 is executed using the information stored in the
例えば、タスクT2が複数の他のタスクからリクエストを受ける場合、タスクT1は、リクエストを発したタスクT1の識別情報と、タスクT2の後に実行されるタスクT3の識別情報とを、タスクT2に送る。タスクT2は、タスクT1に対応するメモリ領域181又はタスクT3に対応するメモリ領域183の情報を用いて実行される。そして、タスクT2は、タスクT1に対応するメモリ領域181又はタスクT3に対応するメモリ領域183へ、実行によって得られた情報を格納する。
For example, when the task T2 receives requests from a plurality of other tasks, the task T1 sends, to the task T2, the identification information of the task T1 that has issued the request and the identification information of the task T3 executed after the task T2. . The task T2 is executed using the information of the
例えば、タスクT2が複数の他のタスクからリクエストを受ける場合、タスクT1は、リクエストを発したタスクT1の識別情報と、タスクT2の後に実行されるタスクT3の識別情報とを、タスクT2に送る。タスクT2は、タスクT1に対応するメモリ領域181の情報を用いて実行される。そして、タスクT2は、タスクT3に対応するメモリ領域183へ、実行によって得られた情報を格納する。
For example, when the task T2 receives requests from a plurality of other tasks, the task T1 sends, to the task T2, the identification information of the task T1 that has issued the request and the identification information of the task T3 executed after the task T2. . The task T2 is executed using the information of the
制御プログラム11は、情報処理装置2からコマンドと後続処理の識別情報とを受けた場合に、コマンド実行後に、後続処理の識別情報で示されるタスクを実行するとしてもよい。これにより、同じコマンドにしたがって処理を実行した後に、後続の処理を切り替えることができる。
When the
例えば、メモリ装置3のハードウェア部4Hは複数の部分に区分けされており、後続処理の識別情報は、ハードウェア部4Hのうちの一部を示すとしてもよい。
For example, the
後続処理の識別情報は、メモリ装置3内で管理されているコマンドキューのキュー番号としてもよい。 The identification information of the subsequent process may be a queue number of a command queue managed in the memory device 3.
以上説明した本実施形態においては、メモリ装置3で、物理メモリを共有して管理するメモリ共有型並列コンピューティング方式(Symmetric Multiprocessing)が採用される。 In the embodiment described above, a memory sharing type parallel computing method (Symmetric Multiprocessing) in which the physical memory is shared and managed in the memory device 3 is adopted.
本実施形態においては、自動で、モジュール131〜136のスケジューリングを行うことができる。
In the present embodiment, scheduling of the
本実施形態においては、メモリ装置3に対して、外部装置及び外部ハードウェア部136を容易に適用することができる。
In the present embodiment, the external device and the
本実施形態においては、メモリ装置3の複数のプロセッサP1〜PNを効率的に使用することができ、メモリ装置3の性能を向上させることができる。 In the present embodiment, the plurality of processors P1 to PN of the memory device 3 can be efficiently used, and the performance of the memory device 3 can be improved.
本実施形態において、第2のソフトウェア開発者は、タスクのスケジューリングを意識することなく、モジュール133〜136を開発することができる。
In the present embodiment, the second software developer can develop
本実施形態においては、タスクが実行されると、当該タスクの実行が完了するまで、中断は発生しない。本実施形態においては、処理が完了するまでプロセッサP1,P2間でデータ又は情報のやり取りなどが発生しない。本実施形態においては、タスクの実行開始まではタスクの実行順序を入れ替え可能であるが、タスクの実行を開始した後でタスクの実行順序を入れ替えない。本実施形態においては、例えば、割り込みハンドラ137から割り込みを受ける場合を除き、タスクの実行は中断しない。したがって、本実施形態においては、タスク実行中にタスクのスイッチングが実行されることを低減することができ、処理を高速化することができる。また、本実施形態においては、タスクの総実行時間は変化せず、実行待ち時間のみが変化する。このため、メモリ装置3において発生する遅延時間を安定化させることができる。
In this embodiment, when a task is executed, no interruption occurs until the execution of the task is completed. In the present embodiment, exchange of data or information does not occur between the processors P1 and P2 until the processing is completed. In the present embodiment, the execution order of tasks can be switched until the start of task execution, but the task execution order is not reversed after task execution is started. In the present embodiment, for example, execution of a task is not interrupted except when receiving an interrupt from the interrupt
本実施形態においては、メモリ7Aの動的な割り当てはメモリ装置3の起動時に実行され、タスクのスイッチング時に割り当ては変更されない。本実施形態においては、関連するタスクの間での情報のやり取りに、共有のメモリ7Aが用いられ、タスク間でメモリ保護は実施されない。本実施形態においては、各タスクが対応するメモリ領域を参照する。本実施形態においては、タスクの中断の発生回数及び発生頻度を減らすことができる。したがって、本実施形態においては、タスクのスイッチングによる遅延時間を減らすことができる。
In the present embodiment, the dynamic allocation of the
本実施形態においては、複数のコントローラ4で共通のソフトウェアを使用することができ、ソフトウェアのアップデート及び機能追加が容易である。
In this embodiment, common software can be used by a plurality of
[第4の実施形態]
本実施形態においては、上記第1乃至第3の実施形態で説明した情報処理システム1,1Aの詳細構成について説明する。
Fourth Embodiment
In this embodiment, detailed configurations of the
図13は、本実施形態に係る情報処理システムの詳細構成の一例を示すブロック図である。 FIG. 13 is a block diagram showing an example of a detailed configuration of the information processing system according to the present embodiment.
情報処理システム1Bは、情報処理装置2とメモリシステム3Bとを含む。
The information processing system 1B includes an
本実施形態に係るメモリシステム3Bは、プログラムF0〜FM、制御プログラム11を実行可能である。
The
上記第1乃至第3の実施形態に係るメモリ装置3は、メモリシステム3Bに対応する。
The memory device 3 according to the first to third embodiments corresponds to a
メモリ装置3のプロセッサP0〜PNは、CPU(Central Processing Unit)43A,43Bに対応する。 The processors P0 to PN of the memory device 3 correspond to central processing units (CPUs) 43A and 43B.
インタフェース部6は、ホストインタフェース41及びホストインタフェースコントローラ42に対応する。
The interface unit 6 corresponds to the
メモリ7A,7Bは、DRAM47に対応する。
The
アドレス変換データ10は、LUT45に対応する。
The
メモリコントローラ9は、NANDC(NAND Controller)50に対応する。 The memory controller 9 corresponds to a NAND controller (NAND controller) 50.
情報処理装置2は、メモリシステム3Bのホスト装置として機能する。
The
メモリシステム3Bのコントローラ4は、フロントエンド4Fと、バックエンド4Bとを備える。
The
フロントエンド(ホスト通信部)4Fは、ホストインタフェース41、ホストインタフェースコントローラ42、暗号化/復号化部(Advanced Encryption Standard (AES))44、及びCPU43Fを備える。
The front end (host communication unit) 4F includes a
ホストインタフェース41は、情報処理装置2との間で、リクエスト(書き込みコマンド、読み出しコマンド、消去コマンドなど)、LBA、データなどを通信する。
The
ホストインタフェースコントローラ(制御部)42は、CPU43Fの制御にしたがって、上記ホストインタフェース41の通信を制御する。
The host interface controller (control unit) 42 controls the communication of the
暗号化/復号化部44は、データ書き込み動作において、ホストインタフェースコントローラ42から送信される書き込みデータ(平文)を暗号化する。暗号化/復号化部44は、データ読み出し動作において、バックエンド4BのリードバッファRBから送信される暗号化された読み出しデータを復号化する。なお、この暗号化/復号化部44を介さずに、書き込みデータ及び読み出しデータを送信することも、必要に応じて可能である。
The encryption /
CPU43Fは、フロントエンド4Fの上記各構成41,42,44を制御し、フロントエンド4Fの全体の動作を制御する。
The
バックエンド(メモリ通信部)4Bは、ライトバッファWB、リードバッファRB、LUT45、DDRC46、DRAM47、DMAC48、ECC49、ランダマイザRZ、NANDC50、及びCPU43Bを備える。
The back end (memory communication unit) 4B includes a write buffer WB, read buffer RB,
ライトバッファ(ライトデータ転送部)WBは、情報処理装置2から送信された書き込みデータを一時的に格納する。具体的には、ライトバッファWBは、当該書き込みデータが不揮発性メモリ5に適した所定のデータサイズになるまで、一時的にデータを格納する。
The write buffer (write data transfer unit) WB temporarily stores the write data transmitted from the
リードバッファ(リードデータ転送部)RBは、不揮発性メモリ5から読み出された読み出しデータを一時的に格納する。具体的には、リードバッファRBにおいて、読み出しデータは、情報処理装置2に適した順序(情報処理装置2が指定した論理アドレスLBAの順序)になるように並び替えられる。
The read buffer (read data transfer unit) RB temporarily stores read data read from the
LUT45は、論理アドレスLBAを物理アドレスPBAに変換するためのテーブルである。
The
DDRC46は、DRAM47におけるDDR(Double Data Rate)を制御する。
The
DRAM47は、例えば、LUT45を格納する揮発性のメモリである。
The
DMAC(Direct Memory Access Controller)48は、内部バスIBを介して、書き込みデータや読み出しデータなどを転送する。図13においては1つのDMAC48が図示されているが、コントローラ4は、2以上のDMAC48を備えるとしてもよい。DMAC48は、必要に応じて、コントローラ4内の様々な位置に設定される。
A DMAC (Direct Memory Access Controller) 48 transfers write data, read data, etc. via the internal bus IB. Although one
ECC49は、ライトバッファWBから送信される書き込みデータにECC(Error Correcting Code)を付加する。ECC49は、リードバッファRBに送信する際に、付加したECCを用いて、不揮発性メモリ5から読み出した読み出しデータを必要に応じて訂正する。
The
ランダマイザRZ(又はScrambler)は、データ書き込み動作の際に、書き込みデータが不揮発性メモリ5の特定のページ又はワード線方向などに偏らないように、書き込みデータを分散させる。このように、書き込みデータを分散させることで、書き込み回数を平準化でき、不揮発性メモリ5のメモリセルMCのセル寿命を長期化できる。そのため、不揮発性メモリ5の信頼性を向上できる。また、ランダマイザRZは、データ読み出し動作の際に、書き込み時のランダマイズ処理の逆処理を実行し、元のデータを復元する。
The randomizer RZ (or Scrambler) distributes the write data so that the write data is not biased in the direction of a specific page or word line of the
NANDC50は、所定の速度の要求を満たすため、複数のチャンネル(ここでは、4つのチャンネルCH0〜CH3)を用いて、並列に不揮発性メモリ5にアクセスする。
The
CPU43Bは、バックエンド4Bの上記各構成(45〜50,RZ)を制御し、バックエンド4Bの全体の動作を制御する。
The
なお、図13に示したコントローラ4の構成は例示であり、この構成に限定されることはない。
In addition, the structure of the
図14は、本実施形態に係るストレージシステムの一例を示す斜視図である。 FIG. 14 is a perspective view showing an example of a storage system according to the present embodiment.
ストレージシステム100は、SSDとしてのメモリシステム3Bを備える。
The
メモリシステム3Bは、例えば比較的小型のモジュールである。なお、メモリシステム3Bの大きさ及び寸法は、種々の大きさのものに適宜変更可能である。
The
また、メモリシステム3Bは、例えば、企業(エンタープライズ)で運用されるデータセンター又はクラウドコンピューティングシステムにおいて、サーバのような情報処理装置2に装着されて使用可能である。そのため、メモリシステム3Bは、エンタープライズ用SSD(eSSD)であってもよい。
In addition, the
メモリシステム3Bは、例えば上方に開口した複数のコネクタ(例えばスロット)101を備える。
The
複数のメモリシステム3Bは、情報処理装置2のコネクタ101にそれぞれ装着され、略垂直方向に起立した姿勢で互いに並べて支持される。このような構成によれば、複数のメモリシステム3Bをコンパクトに纏めて実装可能であり、メモリシステム3Bの小型化を図ることができる。さらに、本実施形態に係るメモリシステム3Bの各形状は、2.5型のSFF(Small Form Factor)である。このような形状により、メモリシステム3Bは、エンタープライズ用HDD(eHDD)と互換形状(コンパチ形状)を図ることができ、eHDDとの容易なシステム互換性を実現することができる。
The plurality of
なお、メモリシステム3Bは、エンタープライズ用に限られない。例えば、メモリシステム3Bは、ノートブック型ポータブルコンピュータ又はタブレット型端末のようなコンシューマ用の電子機器の記憶媒体としても適用可能である。
The
以上説明したように、本実施形態で説明した構成を持つ情報処理システム1B及びストレージシステム100においては、大容量の記憶に、上記第1乃至第3の実施形態と同様の効果を得ることができる。
As described above, in the information processing system 1B and the
[第5の実施形態]
本実施形態では、上記第1乃至第4の実施形態の変形例又は具体例を説明する。
Fifth Embodiment
In this embodiment, modified examples or specific examples of the first to fourth embodiments will be described.
本実施形態においては、ソフトウェア定義型SSDプラットフォームの機能について説明する。 In the present embodiment, the functions of the software-defined SSD platform will be described.
本実施形態に係るソフトウェア定義型SSDプラットフォームは、例えば、複数のプロセッサを備えるコントローラに対して移植可能なOSであり、並列処理を実現する。 The software-defined SSD platform according to the present embodiment is, for example, an OS portable to a controller provided with a plurality of processors, and realizes parallel processing.
ソフトウェア定義型SSDプラットフォームは、例えば、統一されたFTL(Flash Translation Layer)設計にしたがって生成されている。より具体的には、ソフトウェア定義型SSDプラットフォームは、上位から下位への順で、共通インタフェースレイヤ、FTL、デバイスドライバを含む。共通インタフェースレイヤは、プログラムに対する共通インタフェースを提供する。共通インタフェースレイヤの下位レイヤであるFTLは、不揮発性メモリに対する例えばブロックなどの領域の割り当て、アドレス変換、ウェアレベリング、ガーベージコレクションなどの全体的な管理を行う。ここで、ウェアレベリングとは、例えば、不揮発性半導体メモリに対するデータの書き換えを均等に分散させて使用寿命を延ばす処理である。 The software defined SSD platform is generated, for example, in accordance with a unified Flash Translation Layer (FTL) design. More specifically, the software-defined SSD platform includes, in order from top to bottom, a common interface layer, an FTL, and a device driver. The common interface layer provides a common interface to the program. The FTL which is a lower layer of the common interface layer performs overall management such as allocation of an area such as a block to non-volatile memory, address conversion, wear leveling, garbage collection and the like. Here, the wear leveling is, for example, processing for evenly distributing data rewrite to the non-volatile semiconductor memory to extend the service life.
さらに、ソフトウェア定義型SSDプラットフォームは、ネームスペースの割り当て、サイズ、数の管理、アクセス制御を行う。 In addition, the software defined SSD platform manages namespace allocation, size, number management and access control.
これらのソフトウェア定義型SSDプラットフォームによる管理は、管理情報にしたがって実行される。 Management by these software defined SSD platforms is performed according to management information.
ソフトウェア定義型SSDプラットフォームは、自動性能チューニング(Automatic Performance Tuning)機能と、動的負荷分散(Dynamic Load Balancing)機能、タスクスケジューリング機能を含み、ハードウェア部4Hを抽象化する。
The software-defined SSD platform includes an automatic performance tuning function, a dynamic load balancing function, and a task scheduling function, and abstracts the
図15は、本実施形態に係るソフトウェア定義型プラットフォームの構成の一例を示すブロック図である。 FIG. 15 is a block diagram showing an example of the configuration of the software defined platform according to the present embodiment.
プログラムFは、例えば、ファームウェア、アプリケーションプログラム、モジュール、又はハンドラなどのような各種ソフトウェアである。本実施形態において、プログラムFはSSDファームウェアの場合を例として説明するが、プログラムFの種別についてはこれに限定されない。 The program F is, for example, various software such as firmware, an application program, a module, or a handler. In the present embodiment, the program F will be described as an example of the SSD firmware, but the type of the program F is not limited to this.
プログラムFは、処理内容ごとに、タスクとして複数のモジュールに分割される。例えば、プログラムFは、ホストインタフェース制御部Fa、書き込み制御部Fb、読み込み制御部Fc、又はこれら以外のモジュール単位に分割されてもよい。さらに、プログラムFは、例えば、FTL部、ウェアレベリング部を含むとしてもよい。 The program F is divided into a plurality of modules as tasks for each process content. For example, the program F may be divided into a host interface control unit Fa, a write control unit Fb, a read control unit Fc, or a module unit other than these. Furthermore, the program F may include, for example, an FTL unit and a wear leveling unit.
複数のモジュールは、タスク間で通信をするためにタスク間通信(Inter task Communication)APIに準拠しており、データ、情報、信号、コマンド、メッセージ、リクエスト、指令をやり取りする。 A plurality of modules conform to an inter task communication API in order to communicate between tasks, and exchange data, information, signals, commands, messages, requests, commands.
ソフトウェア定義型プラットフォームは、動的タスクスケジューラ15D、HAL(Hardware Abstruction Layer、ハードウェア抽象化レイヤ)301と、デバイスドライバ311と、ハードウェア部4Hと、不揮発性メモリ5とを含む。
The software-defined platform includes a
動的タスクスケジューラ15Dは、タスクの実行順序を制御する。より具体的には、動的タスクスケジューラ15Dは、HAL APIに準拠しており、複数のモジュールに対して、及び、HAL301に対して、データ、情報、信号、コマンド、メッセージ、リクエスト、指令をやり取りする。
The
HAL301は、ハードウェア部4Hを抽象化する。例えば、HAL301は、メモリ装置のハードウェア部4H及びデバイスドライバ311とメモリ装置上で動作するプログラムFとの間に存在するソフトウェアで実装される。HAL301は、プログラムF及び動的タスクスケジューラ15Dから、ハードウェアごとに異なる差異を隠蔽する。より具体的には、HAL301は、プログラムF及び動的タスクスケジューラ15Dがハードウェア部4H及びデバイスドライバ311に非依存となるように、動的タスクスケジューラ15Dとハードウェア部4H及びデバイスドライバ311との間で基本動作を実現し、ハードウェア部4Hの違いを吸収する共通モジュールである。例えばハードウェア部4H又はデバイスドライバ311に仕様変更が生じた場合は、仕様変更に合わせてHAL301のみを修正すればよく、プログラムF及び動的タスクスケジューラ15Dはハードウェア部4H又はデバイスドライバ311の仕様変更の影響を受けない。
The
デバイスドライバ311は、ハードウェア部4Hをアクセスするためのソフトウェアである。デバイスドライバ311は、複数のデバイスドライバを含んでいてもよく、例えばNANDフラッシュ用のデバイスドライバ311a、周辺装置用のデバイスドライバ311b、ホスト装置用のデバイスドライバ311c、又はこれら以外のデバイスドライバを含む。なお、デバイスドライバ311は、ハードウェアで実現されてもよい。
The
ハードウェア部4Hは、ハードウェアであり、例えば、デバイスドライバ311と、複数のプロセッサP1〜PNと、メモリ7Aとを含む。
The
上述のように、ソフトウェア定義型SSDプラットフォームにおいては、不揮発性メモリ5へのアクセスは、プログラムFより、動的タスクスケジューラ15D、HAL301、デバイスドライバ311、ハードウェア部4Hを通じて、階層的に行われる。
As described above, in the software-defined SSD platform, access to the
図16は、本実施形態に係るソフトウェア定義型SSDプラットフォームで実現される2種類のスケジューリングを例示する図である。この図16では、共有メモリSMにアクセス可能なプロセッサの数が4つの場合を例示している。しかしながら、共有メモリSMにアクセス可能なプロセッサの数は2以上であればよい。図16では、相互接続ネットワークNで通信可能なプロセッサの数が4つの場合を例示している。しかしながら、相互接続ネットワークNで通信可能なプロセッサの数は2以上であればよい。 FIG. 16 is a diagram illustrating two types of scheduling implemented by the software defined SSD platform according to the present embodiment. In FIG. 16, the case where the number of processors accessible to the shared memory SM is four is illustrated. However, the number of processors accessible to the shared memory SM may be two or more. FIG. 16 exemplifies the case where the number of processors that can communicate in the interconnection network N is four. However, the number of processors that can communicate in the interconnection network N may be two or more.
ソフトウェア定義型SSDプラットフォームは、動的タスクスケジューラ15Dと、静的タスクスケジューラ15Sとを含む。
The software-defined SSD platform includes a
動的タスクスケジューラ15Dは、複数のプロセッサのうち、どのプロセッサにタスクを割り当てるかを管理する。
The
静的タスクスケジューラ15Sは、各プロセッサに割り当てられたタスクの実行順序を管理する。
The
メモリM0〜M8は、それぞれプロセッサP0〜P8に対応しており、それぞれプロセッサP0〜P8によってアクセスされる。共有メモリSMは、複数のプロセッサP0〜P3からアクセス可能である。相互接続ネットワークNは、複数のプロセッサP5〜P8間で、データ、情報、信号、コマンド、メッセージ、リクエスト、指令などの送信及び受信を行うためのネットワークである。 Memories M0 to M8 correspond to processors P0 to P8, respectively, and are accessed by processors P0 to P8, respectively. The shared memory SM is accessible from a plurality of processors P0 to P3. The interconnection network N is a network for transmitting and receiving data, information, signals, commands, messages, requests, commands, and the like among the plurality of processors P5 to P8.
第1のアーキテクチャには、共有メモリプラットフォームが適用される。第1のアーキテクチャでは、複数のプロセッサP0〜P3が互いに共有メモリSMを経由して、データ、情報、信号、コマンド、メッセージ、リクエスト、指令をやり取りする。動的タスクスケジューラ15Dは、タスクをどのプロセッサに割り当てるか担当する。静的タスクスケジューラ15Sは、プロセッサP0〜P3ごとに、割り当てられたタスクのうちの次に実行するタスクを決定する。
In the first architecture, a shared memory platform is applied. In the first architecture, a plurality of processors P0 to P3 exchange data, information, signals, commands, messages, requests, instructions via the shared memory SM. The
共有メモリプラットフォームでは、どのプロセッサP0〜P3も同じ共有メモリSMにアクセスできる。このため、動的タスクスケジューラ15Dは、負荷の低いプロセッサを検出しタスクを割り振ることで、各プロセッサの負荷が一定となるようパフォーマンスを調整する。
In the shared memory platform, any processor P0 to P3 can access the same shared memory SM. For this reason, the
第2のアーキテクチャは、単一のプロセッサP4とこのプロセッサP4に対応するメモリM4とを含む。静的タスクスケジューラ15Sは、プロセッサP4で次に実行するタスクを決定する。
The second architecture includes a single processor P4 and a memory M4 corresponding to this processor P4. The
第3のアーキテクチャには、分散メモリプラットフォームが適用される。第3のアーキテクチャでは、複数のプロセッサP5〜P8が、互いに相互接続ネットワークN経由で、データ、情報、信号、コマンド、メッセージ、リクエスト、指令を送信及び受信する。静的タスクスケジューラ15Sは、プロセッサP5〜P8ごとに次に実行するタスクを決定する。
In the third architecture, a distributed memory platform is applied. In the third architecture, a plurality of processors P5 to P8 send and receive data, information, signals, commands, messages, requests, commands via the interconnection network N with one another. The
分散メモリプラットフォームでは、各プロセッサP5〜P8が一連のタスク(以下、タスクチェーンと呼ぶ)を実行する場合、タスク内容に応じて、あらかじめタスクごとに処理するプロセッサを決めておくことにより、処理を高速化することができる。例えば、読み出しタスク、ホスト通信タスク、書き込みタスクを順に処理するタスクチェーンが多量に入力される場合、読み出しはプロセッサP5、ホスト通信はホスト通信インタフェースを持つプロセッサP6、書き込みはプロセッサP7が行うよう割り振られる。 In the distributed memory platform, when each of the processors P5 to P8 executes a series of tasks (hereinafter referred to as a task chain), high-speed processing is possible by determining in advance the processor to be processed for each task according to the task content. Can be For example, when a large number of task chains that sequentially process a read task, a host communication task, and a write task are input, the processor P5 for read, the host communication is a processor P6 having a host communication interface, and the write is allocated for processor P7 .
しかしながら、分散メモリプラットフォームでは、プロセッサP5〜P8間での通信が必要となる。例えば、読み出しタスクを実行したプロセッサP5は、ホスト通信タスクを実行するプロセッサP6に読み出しタスクの処理結果(読み出しデータなどを含む)を渡す。ここで、プロセッサP5〜P8間の通信時間がタスクの処理時間に対して十分小さくない場合は、タスクごとに処理するプロセッサを分離すると、処理が遅くなる場合がある。この場合は、特定のプロセッサにある程度まとまったタスクを割り振ることで、処理の高速化を行う。すなわち、同じタスクチェーンに属するタスクは、ある程度(例えば所定の数)同じプロセッサに割り当てることで、タスクチェーンの実行が複数のプロセッサ間で順送り(例えばたらい回し)されることを防止する。 However, in the distributed memory platform, communication among the processors P5 to P8 is required. For example, the processor P5 that has executed the read task passes the processing result (including read data and the like) of the read task to the processor P6 that executes the host communication task. Here, if the communication time between the processors P5 to P8 is not sufficiently smaller than the processing time of the task, the processing may be delayed if the processor to be processed is separated for each task. In this case, processing is speeded up by allocating a certain number of tasks to a specific processor. That is, tasks belonging to the same task chain are allocated to the same processor to a certain extent (for example, a predetermined number) to prevent the execution of the task chain from being forwarded (for example, repeated) among a plurality of processors.
本実施形態では、タスクチェーンの実行において、読み出しと書き込みとが同時にならないとする。 In this embodiment, it is assumed that reading and writing do not occur simultaneously in execution of the task chain.
本実施形態において、タスクを生成する規則としては、例えば、グローバル変数、静的変数、ヒープメモリ、例えばマロック関数及びフリー関数などのような動的にメモリを確保する関数を用いない。 In the present embodiment, as a rule for generating a task, for example, a global variable, a static variable, a heap memory, a function for dynamically securing a memory such as, for example, a mallock function and a free function are not used.
タスクを生成する規則としては、例えば、スピンロックを用いることなく、優先順位をつけるキューを用いる。 As a rule for creating a task, for example, a queue for prioritizing is used without using a spin lock.
タスクを生成する規則としては、例えば、直接ハードウェアを制御しない。 As a rule for generating a task, for example, the hardware is not directly controlled.
タスクを生成する規則としては、自動変数を用いてもよく、HAL301経由でハードウェアアクセラレータを用いてもよい。ここで、ハードウェアアクセラレータは、例えば、コンピュータの処理を高速化するために追加されるハードウェアとする。
As a rule for generating a task, an automatic variable may be used, or a hardware accelerator may be used via the
本実施形態において、動的タスクスケジューラ15Dは、静的タスクスケジューラ15Sとともに、低レイテンシのタスク切り替えを行う。
In the present embodiment, the
本実施形態に係るタスクは、各プロセッサで協働的に優先付けされた順序で実行される。 The tasks according to this embodiment are performed in an order prioritized cooperatively by each processor.
動的タスクスケジューラ15Dは、例えば、Lock-freeアルゴリズムを用いる。Lock-freeアルゴリズムとは、共有データにロックをかけて保護するアルゴリズムとは違い、複数のタスクが同時並行的に、ある対象データを壊すことなしに、読み出し、及び、書き込み可能なアルゴリズムである。
The
動的タスクスケジューラ15Dは、例えば、Run-To-Completionスケジューリングを行う。Run-To-Completionスケジューリングとは、タスクを、完全に終了するか、又は、明示的に制御をスケジューラに明け渡すまで実行させるスケジューリングモデルである。
The
タスク間通信には、例えば、メッセージパッシング型のタスク間通信が用いられる。 For example, message passing type inter-task communication is used for inter-task communication.
本実施形態において、マスタスケジューラはタスクの移植を可能とし、動的負荷分散及び自動性能チューニングを行う。従属スケジューラはタスクの切り替えレイテンシを低減する。 In this embodiment, the master scheduler enables task porting, and performs dynamic load balancing and automatic performance tuning. The dependent scheduler reduces task switching latency.
図17は、本実施形態に係るメモリ装置の各階層で保持されるパラメータの一例を示す図である。 FIG. 17 is a diagram showing an example of parameters held in each layer of the memory device according to the present embodiment.
上述のように、プログラムFは、動的タスクスケジューラ15D、HAL301、デバイスドライバ311、及びハードウェア部4Hを通じてNANDフラッシュメモリB0〜BPへ階層的にアクセスする。ここで、アクセスの際に各階層で保持されるパラメータは、同じパラメータであっても階層ごとに異なる形式で表記されていてもよい。これにより、階層ごとに適切な抽象度でパラメータを保持することができる。
As described above, the program F hierarchically accesses the NAND flash memories B0 to BP through the
例えば、図17は不揮発性メモリ5に対するアクセスにおいて許容されるアクセス遅延時間の、各階層における記述方式を例示する。なお、不揮発性メモリ5に対するアクセスにおいて遅延時間を許容することで、データ送受信の際の処理に時間をかけることできるため、例えば誤り訂正符号を長くすることにより読み出し及び書き込みの際のエラーを低減させることができる。
For example, FIG. 17 exemplifies a description system in each hierarchy of the access delay time allowed in the access to the
パラメータP1701は、プログラムFで保持されるアクセス遅延時間を示す。プログラムFでは、例えばアクセス遅延時間は2ビットの情報であり、4種類の遅延時間(遅延を許容しない、短い遅延を許容する、一般的な遅延を許容する、長い遅延を許容する)が定義される。このアクセス遅延時間は、例えば規格により定義されていてもよい。 The parameter P1701 indicates the access delay time held by the program F. In program F, for example, access delay time is 2 bits of information, and four types of delay times (do not tolerate delay, allow short delay, allow general delay, allow long delay) are defined. Ru. This access delay time may be defined by, for example, a standard.
パラメータP1702は、HAL301で保持されるアクセス遅延時間を示す。HAL301では、例えばアクセス遅延時間は8ビットの情報として定義される。この場合、プログラムFからHAL301へアクセスする際に、パラメータの変換が行われる。例えば、プログラムFで「00」であれば、HAL301では0となり、プログラムFで「01」であれば、HAL301では1〜85のいずれかとなり、プログラムFで「10」であれば、HAL301では86〜170のいずれかとなり、プログラムFで「11」であれば、HAL301では171〜255のいずれかとなる。プログラムFにおけるパラメータP1701は、他のパラメータとの関連などにより、HAL301上での適切な値に変換される。
The parameter P1702 indicates the access delay time held by the
パラメータP1703は、ハードウェア部4Hで保持されるアクセス遅延時間を示す。ハードウェア部4Hでは、例えばアクセス遅延時間は3種類のパラメータ(DLA(Direct Look Ahead)方式の有無、繰り返し復号回数、遅延時間しきい値)として定義される。DLA方式とは、メモリセル間の干渉によるしきい値電圧のシフトの影響を、読み出し動作において補償する方法である。各パラメータの取りうる値は、例えばDLA方式の有無はOn又はOffの1ビットの情報、繰り返し復号回数は1〜5、遅延時間しきい値は1〜5などであってもよい。ハードウェア部4Hは、これらの値の組み合わせをパラメータセットとして、いくつか保持していてもよい。HAL301におけるパラメータP1702は、他のパラメータなどとの関連により、ハードウェア部4H上での適切なパラメータの組又はパラメータセット番号に変換される。
The parameter P1703 indicates the access delay time held by the
なお、本実施形態ではパラメータP1701はプログラムF、パラメータP1702はHAL301、パラメータP1703はハードウェア部4Hとしたが、パラメータが保持される階層はこれらと異なる階層であってもよい。例えば、パラメータP1702はNANDコントローラ又はNANDフラッシュのデバイスドライバ311aに保持されてもよく、パラメータP1703はNANDフラッシュメモリB0〜BPに保持されてもよい。
In the present embodiment, the parameter P1701 is the program F, the parameter P1702 is the
図18乃至図21を用いて、タスクスケジューラの動作について述べる。以下の図18乃至図21では、それぞれのタスクの実行を命令する実行コマンドが各種のキューで管理される場合を例として説明する。しかしながら、各種のキューで管理される対象は、実行コマンドに代えてタスク本体でもよい。 The operation of the task scheduler will be described using FIG. 18 to FIG. In the following FIGS. 18 to 21, an example will be described in which execution commands for instructing execution of respective tasks are managed by various queues. However, targets managed by various queues may be task bodies instead of execution commands.
図18は、本実施形態に係るスケジューリングの一例を示すフローチャートである。 FIG. 18 is a flowchart showing an example of scheduling according to the present embodiment.
図19は、本実施形態に係るスケジューリングの第1の例を示す図であり、図18のS1801の動作を示す。 FIG. 19 is a diagram illustrating a first example of scheduling according to the present embodiment, and illustrates an operation of S1801 in FIG.
図20は、本実施形態に係るスケジューリングの第2の例を示す図であり、図18のS1802の動作を示す。 FIG. 20 is a diagram illustrating a second example of scheduling according to the present embodiment, and illustrates an operation of S1802 in FIG.
図21は、本実施形態に係るスケジューリングの第3の例を示す図であり、図18のS1803の動作を示す。 FIG. 21 is a diagram illustrating a third example of scheduling according to the present embodiment, and illustrates an operation of S1803 in FIG.
ハードウェア部4Hは、マスタプロセッサPmと、従属プロセッサPS1,PS2とを備える。マスタプロセッサPmは、マスタキューMQと従属キューSQ0とに対応付けられている。従属プロセッサPS1,PS2は、それぞれ従属キューSQ1,SQ2に対応付けられている。
The
マスタキューMQは、動的タスクスケジューラ15Dによって管理される。
The master queue MQ is managed by the
従属キューSQ0,SQ1,SQ2は、静的タスクスケジューラ15Sによって管理される。
The dependent queues SQ0, SQ1, SQ2 are managed by the
タスクには、移植可能タスクと、専用タスクとがある。移植可能タスクは、マスタプロセッサPm、従属プロセッサPS1,PS2のいずれでも実行可能である。専用タスクは、マスタプロセッサPmと従属のプロセッサPS1,PS2とのうち特定のプロセッサで実行することを必要とするタスクである。 Tasks include portable tasks and dedicated tasks. The portable task can be executed by either the master processor Pm or the dependent processors PS1 and PS2. The dedicated task is a task that needs to be executed by a specific processor among the master processor Pm and the dependent processors PS1 and PS2.
ステップS1801において、動的タスクスケジューラ15Dは、移植可能タスクの実行コマンドを複数のプロセッサの負荷分散のためにマスタキューMQに格納する。
In step S1801, the
図19の例では、従属プロセッサPS1及び従属プロセッサPS2は、動的タスクスケジューラ15Dにしたがって、マスタキューMQに、移植可能タスクの実行コマンドCO1〜CO4を格納する。
In the example of FIG. 19, the dependent processor PS1 and the dependent processor PS2 store the portable task execution commands CO1 to CO4 in the master queue MQ according to the
ステップS1802において、動的タスクスケジューラ15Dは、所定の時間内に全ての処理が終わるよう、マスタキューMQによって管理されている実行コマンドの中から選択された実行コマンドを、負荷の低いプロセッサに対応する静的タスクスケジューラ15Sに渡す。静的タスクスケジューラ15Sは、受けた実行コマンドを従属キューに格納する。具体的には、動的タスクスケジューラ15Dは、各プロセッサPm,PS1,PS2の状態を監視し、最も処理負荷の低いプロセッサの従属キューへ移植可能タスクの実行コマンドを移動させる。処理負荷の高低は、例えば動的タスクスケジューラ15Dが、各従属キューSQ0,SQ1,SQ2に蓄積されたタスクの実行コマンドの量(数)が所定量を超えているか否かにより判定するとしてもよい。処理負荷が低いプロセッサがない場合は、動的タスクスケジューラ15Dはタスクの実行コマンドの移動を行わなくてもよい。
In step S1802, the
図20の例では、動的タスクスケジューラ15Dは、マスタプロセッサPm、従属プロセッサPS1、従属プロセッサPS2の処理負荷が低いと判断し、マスタキューMQが保持するタスクの実行コマンドCO1〜CO4のうち、タスクの実行コマンドCO3を従属キューSQ0へ、タスクの実行コマンドCO1を従属キューSQ1へ、タスクの実行コマンドCO2を従属キューSQ2へそれぞれ移動させる。
In the example of FIG. 20, the
ステップS1803において、動的タスクスケジューラ15Dは、専用タスクの実行コマンドを、直接、専用タスクに対応するプロセッサの静的タスクスケジューラ15Sに渡し、静的タスクスケジューラ15Sは受けた実行コマンドを従属キューに格納する。
In step S1803, the
図21の例では、マスタプロセッサPm、従属プロセッサPS1は、動的タスクスケジューラ15Dにしたがって従属プロセッサPS1の専用タスクの実行コマンドCO5,CO6を静的タスクスケジューラ15Sに渡し、静的タスクスケジューラ15Sは専用タスクの実行コマンドCO5,CO6を従属キューSQ1に格納する。また、従属プロセッサPS2は、動的タスクスケジューラ15DにしたがってマスタプロセッサPmの専用タスクの実行コマンドCO7を静的タスクスケジューラ15Sに渡し、静的タスクスケジューラ15Sは専用タスクの実行コマンドCO7を従属キューSQ0に格納する。
In the example of FIG. 21, the master processor Pm and the dependent processor PS1 pass the execution commands CO5 and CO6 of the dedicated task of the dependent processor PS1 to the
ステップS1804において、静的タスクスケジューラ15Sは、各従属キューに格納された移植可能タスクの実行コマンド又は専用タスクの実行コマンドの実行順序を管理し、例えば先入先出方式にしたがって実行すべき実行コマンドを選択する。すなわち、静的タスクスケジューラ15Sは、キューの先頭にある実行コマンドを処理対象として選択し、処理対象となった実行コマンドをキューから削除する。
In step S1804, the
ステップS1805において、静的タスクスケジューラ15Sは、実行の結果発生した次のタスクの実行コマンドが移植可能タスクの実行コマンドか否か判断する。
In step S1805, the
次のタスクの実行コマンドが移植可能タスクの実行コマンドの場合、ステップS1806において、静的タスクスケジューラ15Sは、次のタスクの実行コマンドを、動的タスクスケジューラ15Dに渡し、動的タスクスケジューラ15Dは受けた実行コマンドを、マスタキューMQに格納する。
If the execution command for the next task is a portable task execution command, in step S1806, the
次のタスクの実行コマンドが専用タスクの実行コマンドの場合、ステップS1807において、静的タスクスケジューラ15Sは、次のタスクの実行コマンドを、実行先のプロセッサの静的タスクスケジューラ15Sに渡し、静的タスクスケジューラ15Sは受けた実行コマンドを、対応する従属キューに格納する。
If the execution command of the next task is a dedicated task execution command, in step S1807, the
なお、S1803と、S1801及びS1802との順番は、前後してもよい。また、図19乃至図21では、従属プロセッサが2つである場合を例として説明したが、従属プロセッサの数はn個(nは任意の正数)であってもよい。移植可能タスクが存在しない場合には、ステップS1801及びステップS1802が省略されてもよい。専用タスクが存在しない場合には、ステップS1803が省略されてもよい。 The order of S1803, and S1801 and S1802 may be reversed. Although FIGS. 19 to 21 have been described by way of example of the case where there are two dependent processors, the number of dependent processors may be n (n is any positive number). If there is no portable task, steps S1801 and S1802 may be omitted. If there is no dedicated task, step S1803 may be omitted.
図22は、タスクチェーンの例を示す図である。 FIG. 22 is a diagram illustrating an example of a task chain.
図22のそれぞれのキューQは、マスタキューMQ、従属キューSQ0〜SQn、又は、マスタキューMQと従属キューSQ0〜SQnとの双方に対応するとしてもよい。図22において、タスクの実行コマンドは、発生後、対応するタスクが実行されるまでキューQで管理される。 Each queue Q in FIG. 22 may correspond to the master queue MQ, the dependent queues SQ0 to SQn, or both the master queue MQ and the dependent queues SQ0 to SQn. In FIG. 22, task execution commands are managed in the queue Q after occurrence until the corresponding task is executed.
タスクチェーンとは、例えば、連続して実行される2以上のタスクのつながりである。HAL301hは、特定のインタフェースにしたがって、外部から、データ、情報、信号、コマンド、メッセージ、リクエスト、指令などを受ける。例えば、HAL301hは、ホスト装置又は不揮発性メモリからの入出力コマンド、電源イベント、タイマーイベント、NANDフラッシュメモリのイベントなどの外部割込みイベントに基づいて、実行コマンドを発行し、HAL301hとタスクTとの間のキューQに格納する。より具体的には、外部割込みイベントは、例えばHAL301hに対するデータ送受信コマンド、不揮発性メモリ5に対する読み出し又は書き込み又は消去コマンド、電源制御イベント、又は、タイマー割込みイベントなどである。なお、外部割込みイベントは、上述のものに限られない。
The task chain is, for example, a connection of two or more tasks that are sequentially executed. The
タスクチェーンの終了後、HAL301hは、特定のインタフェースにしたがって、外部へデータ、情報、信号、コマンド、メッセージ、リクエスト、指令などを送る。
After completion of the task chain, the
すべてのタスクチェーンは、割り込みハンドラによって呼び出し可能である。タスクは、次のタスクを呼び出す前に、次のタスクで必要なすべての情報(パラメータ)を準備する。 All task chains are callable by the interrupt handler. The task prepares all information (parameters) necessary for the next task before calling the next task.
タスクの実行後、この実行されたタスクは複数のタスクの中から次に実行されるタスクを選択可能としてもよい。例えば、タスクTが正常終了した場合には、タスクTは通常処理としてタスクチェーンTC1を選択し、次に処理されるタスクTnの実行コマンドをキューQに格納してもよい。タスクTが異常終了した場合には、タスクTは例外処理としてタスクチェーンTC2を選択し、次に処理されるタスクTeの実行コマンドをキューQに格納してもよい。 After execution of the task, the executed task may be able to select a task to be executed next from a plurality of tasks. For example, when the task T ends normally, the task T may select the task chain TC1 as normal processing, and store an execution command of the task Tn to be processed next in the queue Q. When the task T abnormally ends, the task T may select the task chain TC2 as exception processing, and store an execution command of the task Te to be processed next in the queue Q.
また、通常処理のタスクチェーンTC1及び例外処理のタスクチェーンTC2が例えば従属プロセッサPS1で処理中である場合、動的タスクスケジューラ15Dはタスクチェーンに含まれるタスクの実行コマンドを一旦マスタキューMQへ送信すると、送受信時間がかかり処理が遅延する。そのため、動的タスクスケジューラ15Dは、従属プロセッサPS1の負荷が低いと判断した場合は、次に処理するタスクの実行コマンドを従属プロセッサPS1の静的タスクスケジューラに渡してもよい。
Also, when the task chain TC1 for normal processing and the task chain TC2 for exception processing are being processed by the dependent processor PS1, for example, the
ホスト装置側のハードウェア抽象化レイヤであるHAL301hは、デバイスへのアクセスを行わない。実際のデバイスアクセスは、タスクTが起動するタスクチェーンTC1又はタスクチェーンTC2に含まれるデバイスドライバHAL301dにより行われる。HAL301dによるデバイスアクセスの詳細については、図25乃至図28で後述する。
The hardware
タスクTは、実行中に分岐先のタスクを呼び出し可能としてもよい。具体的には、タスクTは、通常処理のタスクチェーンTC1又は例外処理のタスクチェーンTC2内の並列処理可能な1以上のタスク(例えばTb1及びTb2)を、負荷の低いプロセッサに割り振ってもよい。この場合、タスクTは分岐処理のタスクチェーンTC3及びTC4を生成する。分岐処理は、タスクチェーンTC3のようにHAL301dへのアクセスがない分岐処理であってもよく、タスクチェーンTC4のようにHAL301dへのアクセスがある分岐処理であってもよい。分岐処理は、例えばログ記録などである。
The task T may be able to call a branch destination task during execution. Specifically, the task T may allocate one or more parallel processable tasks (for example, Tb1 and Tb2) in the task chain TC1 for normal processing or the task chain TC2 for exception processing to a processor with a low load. In this case, task T generates branch task chains TC3 and TC4. The branch process may be a branch process having no access to the
HAL301dは、タスクチェーンの終端のタスクの実行後、キューQに格納された実行コマンドを、キューQから取り出し、取り出された実行コマンドを実行し、例えば外部へ、データ、情報、信号、コマンド、メッセージ、リクエスト、指令などを送る。
After executing the task at the end of the task chain, the
図23は、タスク間での情報の受け渡しの例を示す図である。例えば、タスク間で受け渡しされる情報を、タスク間メッセージと呼ぶ。 FIG. 23 is a diagram illustrating an example of information exchange between tasks. For example, information passed between tasks is called an intertask message.
この図23において、現在処理中又は処理済のタスクTpは作業領域WApに、タスクTpが正常終了した場合に選択する次タスクTnは作業領域WAnに、タスクTpが異常終了した場合に選択する例外タスクTeは作業領域WAeに、それぞれ対応付けられており、それぞれのタスクは対応する作業領域より情報を書き込み及び読み出し可能である。作業領域WAp、作業領域WAn、及び作業領域WAeは、図16のメモリM0〜M8に含まれる。 In FIG. 23, the task Tp currently being processed or processed is selected in the work area WAp, and the next task Tn selected when the task Tp ends normally is selected in the work area WAn, the exception selected when the task Tp ends abnormally. The tasks Te are respectively associated with the work area WAe, and each task can write and read information from the corresponding work area. Work area WAp, work area WAn, and work area WAe are included in memories M0 to M8 of FIG.
タスクTp、次タスクTn、例外タスクTeは、それぞれ、共有作業領域CWAに、情報を格納(書き込み)及び参照(読み出し)可能である。共有作業領域CWAは、図16の共有メモリSMに含まれる。 The task Tp, the next task Tn, and the exceptional task Te can store (write) and reference (read) information in the shared work area CWA, respectively. The shared work area CWA is included in the shared memory SM of FIG.
作業領域WAp、作業領域WAn、作業領域WAe、及び共有作業領域CWAは、複数種類のメモリ(例えばSRAM、DRAM)を含んでいてもよい。 The work area WAp, the work area WAn, the work area WAe, and the shared work area CWA may include a plurality of types of memories (for example, SRAM, DRAM).
上述のように、タスクTpが実行された後に発生される次のタスクの実行コマンド又は例外タスクの実行コマンドは、キューQで管理される。次タスクTnが実行された後に発生される実行コマンド、及び、例外タスクTeが実行された後に発生される実行コマンドも同様にそれぞれキューQによって管理される。なお、図23では、タスクTpと次タスクTn及び例外タスクTeとの間に存在するキューQの記載を省略している。 As described above, the execution command of the next task or the execution command of the exceptional task, which is generated after the task Tp is executed, is managed by the queue Q. The execution command generated after the next task Tn is executed and the execution command generated after the exception task Te is also managed by the queue Q, respectively. In FIG. 23, the description of the queue Q existing between the task Tp and the next task Tn and the exceptional task Te is omitted.
タスクTpは、当該タスクTpが実行される前に実行されたタスクに対応する作業領域における情報を参照可能としてもよい。 The task Tp may be able to refer to information in the work area corresponding to the task executed before the task Tp is executed.
タスクTpは、当該タスクTpが実行された後に実行される次タスクTnに対応する作業領域WAn、又は例外タスクTeに対応する作業領域WAeに、情報を格納可能としてもよい。 The task Tp may be capable of storing information in the work area WAn corresponding to the next task Tn executed after the task Tp is executed or in the work area WAe corresponding to the exceptional task Te.
次タスクTn、及び、例外タスクTeは、次タスクTn、及び、例外タスクTeが実行される前に実行されたタスクTpに対応する作業領域WApにおける情報を参照可能としてもよい。 The next task Tn and the exceptional task Te may be able to refer to information in the work area WAp corresponding to the next task Tn and the task Tp executed before the exceptional task Te is executed.
次タスクTn、及び、例外タスクTeは、次に実行されるタスクに対応する作業領域に、情報を格納可能としてもよい。 The next task Tn and the exceptional task Te may be capable of storing information in the work area corresponding to the task to be executed next.
より具体的には、タスク間メッセージの受け渡しを行う方法は、次の第1乃至第3の方法が挙げられる。なお、図23における矢印は、タスク間メッセージが移動する方向を示す。 More specifically, methods for passing messages between tasks include the following first to third methods. The arrow in FIG. 23 indicates the direction in which the inter-task message moves.
第1の方法は、矢印S2301に示すように、タスクTpの作業領域WApにタスク間メッセージを格納する方法である。この場合、次に処理されるタスク(次タスクTn又は例外タスクTe)が作業領域WApをアクセスし、タスク間メッセージを参照する。 The first method is a method of storing an inter-task message in the work area WAp of the task Tp, as indicated by an arrow S2301. In this case, the task to be processed next (next task Tn or exceptional task Te) accesses the work area WAp and refers to the inter-task message.
第2の方法は、矢印S2302に示すように、タスクTpが、次に処理されるタスクの作業領域にタスク間メッセージを格納する方法である。次に処理されるタスクが次タスクTnの場合は、タスク間メッセージは作業領域WAnに格納され、次タスクTnは作業領域WAnに格納されたタスク間メッセージを参照する。次に処理されるタスクが例外タスクTeの場合は、タスク間メッセージは作業領域WAeに格納され、例外タスクTeは作業領域WAeに格納されたタスク間メッセージを参照する。 The second method is a method in which the task Tp stores an intertask message in the work area of the task to be processed next, as indicated by an arrow S2302. If the task to be processed next is the next task Tn, the inter-task message is stored in the work area WAn, and the next task Tn refers to the inter-task message stored in the work area WAn. If the task to be processed next is the exceptional task Te, the inter-task message is stored in the work area WAe, and the exceptional task Te refers to the inter-task message stored in the work area WAe.
第3の方法は、矢印S2303に示すように、共有作業領域CWAにおけるタスク間メッセージを複数のタスクがアクセスする方法である。タスクTpは、共有作業領域CWAにタスク間メッセージを格納し、次に処理されるタスク(次タスクTn又は例外タスクTe)は、共有作業領域CWAに格納されたタスク間メッセージを参照する。 The third method is a method in which a plurality of tasks access an inter-task message in the shared work area CWA as indicated by an arrow S2303. The task Tp stores the inter-task message in the shared work area CWA, and the task to be processed next (next task Tn or exceptional task Te) refers to the inter-task message stored in the shared work area CWA.
各タスクは、前のタスク又は外部のハンドラによって呼び出される。前のタスクは、次のタスクを呼び出す前に、すべての必要な情報(パラメータ)を準備する。各タスクは、タスク間メッセージを、タスクを実行するプロセッサに対応する作業領域と次のタスクの作業領域とのうちの少なくとも一方に格納する。 Each task is called by a previous task or an external handler. The previous task prepares all necessary information (parameters) before calling the next task. Each task stores an inter-task message in at least one of a work area corresponding to a processor executing the task and a work area of the next task.
図24は、タスクに対応する作業領域の例を示す図である。 FIG. 24 is a diagram showing an example of a work area corresponding to a task.
作業領域は、高速アクセス可能な作業領域WAfと、記憶容量の大きい作業領域WAlとを含む。タスク制御APIは、タスク間の関係と、ローカルの作業領域情報のやり取りとを規定する。タスクTは、前のタスクTppの後に実行される。タスクTの実行後、次タスクTn又は例外タスクTeが実行される。タスクTは、他のタスクの作業領域をアクセス可能としてもよい。タスクTは、共有作業領域CWAの情報を参照又は共有作業領域CWAへ情報を格納する。 The work area includes a high-speed accessible work area WAf and a work area WAl having a large storage capacity. The task control API defines the relationship between tasks and the exchange of local work area information. Task T is executed after the previous task Tpp. After the task T is executed, the next task Tn or the exceptional task Te is executed. Task T may have access to the work area of another task. The task T refers to the information in the shared work area CWA or stores the information in the shared work area CWA.
なお、複数のタスクの間で階層構造を持つとしてもよい。親タスク及び子タスクがそれぞれ保持するリソースは、相互に参照可能でもよい。例えば、タスクTの親タスクTpaが存在する場合、タスクTは親タスクTpaのタスク制御構造とタスク制御構造における作業領域位置とを参照可能としてもよい。 A hierarchical structure may be provided among a plurality of tasks. Resources held by the parent task and the child task may be mutually referable. For example, when the parent task Tpa of the task T exists, the task T may be able to refer to the task control structure of the parent task Tpa and the work area position in the task control structure.
HAL APIは、ホストインタフェース制御、NAND制御、電源制御、タイマー制御に用いられる。 The HAL API is used for host interface control, NAND control, power control, and timer control.
ホストインタフェース制御は、コマンド到着、データ到着、など、ホストイベントをスケジューラへ通知する。 The host interface control notifies the scheduler of host events such as command arrival and data arrival.
NAND制御は、優先度を用いて読み出しコマンド、書き込みコマンド、消去コマンドをキューイングする。NAND制御は、NANDフラッシュメモリに関するNANDイベントをスケジューラへ通知する。 NAND control queues read commands, write commands, and erase commands using priorities. The NAND control notifies the scheduler of NAND events related to the NAND flash memory.
電源制御は、電源イベントをスケジューラへ通知し、電源モードを制御する。 The power control notifies the scheduler of a power event and controls the power mode.
タイマー制御は、タイマーへパラメータをセット又はリセットする。タイマー制御は、タイマーイベントをスケジューラへ通知する。 The timer control sets or resets parameters to the timer. Timer control notifies the scheduler of timer events.
図25及び図26を用いて、HALを用いたタスク間通信について述べる。 Communication between tasks using the HAL will be described with reference to FIGS.
図25は、本実施形態に係るHALによる通信の例を示すフローチャートである。 FIG. 25 is a flowchart showing an example of communication by the HAL according to the present embodiment.
図26は、本実施形態に係るHALによる通信の例を示すブロック図である。 FIG. 26 is a block diagram showing an example of communication by the HAL according to the present embodiment.
HAL301dは、デバイスドライバタスクTd及び割り込みハンドラ303を含む。また、HAL301dは、デバイスドライバタスクTdの処理順序を管理するためのデバイスドライバタスクキューDQ及び作業領域WAhを備える。なお、図26では、タスクTpとデバイスドライバタスクTdとの間に存在するキューQ、割り込みハンドラ303と次タスクTn及び例外タスクTeとの間に存在するキューQの記載を省略している。デバイスドライバタスクキューDQ及び作業領域WAhは、同じメモリ空間上に配置されていてもよい。作業領域WAhは、他のタスクからアクセス不可である。
The
ステップS2501において、タスクTpは、HAL301dを起動する。具体的には、タスクTpは、タスクTpの処理完了後にキューQにデバイスドライバタスクTdの実行コマンドを格納し、静的タスクスケジューラ15S又は動的タスクスケジューラ15Dが、キューQに格納されている実行コマンドにしたがって次に処理されるデバイスドライバタスクTdを起動する。
In step S2501, the task Tp activates the
ステップS2502において、デバイスドライバタスクTdは、次に処理する次タスクTnの情報及びデバイスアクセスに必要なパラメータを取得する。デバイスドライバタスクTdは、次タスクTnの情報及び必要なパラメータを、タスク間メッセージとしてタスクTpの作業領域WApから読み込んでもよい。 In step S2502, the device driver task Td acquires information on the next task Tn to be processed next and parameters necessary for device access. The device driver task Td may read information on the next task Tn and necessary parameters from the work area WAp of the task Tp as an inter-task message.
ステップS2503において、デバイスドライバタスクTdは、デバイスアクセスリクエストを発行する。デバイスアクセスリクエストは、デバイスドライバタスクキューDQに格納される。また、デバイスドライバタスクTdは、ステップS2502で読み込んだタスク間メッセージを作業領域WAhに格納する。 In step S2503, the device driver task Td issues a device access request. Device access requests are stored in the device driver task queue DQ. The device driver task Td stores the inter-task message read in step S2502 in the work area WAh.
ステップS2504において、デバイスドライバタスクTdは、デバイスドライバタスクキューDQよりデバイスアクセスリクエストを1つ取り出し、デバイスアクセスのための割り込みを発生させる。 In step S2504, the device driver task Td fetches one device access request from the device driver task queue DQ and generates an interrupt for device access.
ステップS2505において、ステップS2504で発生した割り込みにより、割り込みハンドラ303が起動する。
In step S2505, the interrupt
ステップS2506において、割り込みハンドラ303にしたがって、すなわち割り込みハンドラ303の処理シーケンス内で、デバイスドライバ311がデバイスへアクセスを行い、リクエストされた処理を行う。
In step S2506, the
ステップS2507において、割り込みハンドラ303は、デバイスドライバ311より得られたデバイスアクセス結果(戻り値)を、タスクTpの作業領域WApに格納してもよい。
In step S2507, the interrupt
ステップS2508において、割り込みハンドラ303は、デバイスドライバタスクTdの処理結果に応じて、キューQに次タスクTnの実行コマンド又は例外タスクTeの実行コマンドを格納する。静的タスクスケジューラ15S又は動的タスクスケジューラ15Dは、次に処理される次タスクTn又は例外タスクTeを起動する。
In step S2508, the interrupt
次に処理されるタスクが次タスクTnである場合、ステップS2509において、次タスクTnはタスクTpの作業領域WApを参照し、ステップS2507で格納されたデバイスアクセス結果(戻り値)を取得する。なお、次に処理されるタスクが例外タスクTeの場合でも、同様に例外タスクTeは作業領域WApよりデバイスアクセス結果(戻り値)を取得する。 If the task to be processed next is the next task Tn, the next task Tn refers to the work area WAp of the task Tp in step S2509, and acquires the device access result (return value) stored in step S2507. Even when the task to be processed next is the exceptional task Te, the exceptional task Te similarly acquires the device access result (return value) from the work area WAp.
なお、HAL301dは、複数のタスクから呼び出されてもよい。この場合、HAL301dは複数のタスクのうちどのタスクのデバイスアクセスリクエストであるかを識別する識別情報を、作業領域WAhに格納されたタスク間メッセージより取得してもよい。また、複数のタスクは、それぞれの次タスク又は例外タスクを特定可能である。
The
本実施形態において、HAL301dはデバイスアクセス結果をタスク間メッセージとしてタスクTpの作業領域WApに格納し、次に処理されるタスクはタスクTpの作業領域WApを参照してタスク間メッセージを得る。これにより、タスクTpと次に処理される次タスクTnは、HAL301dの存在を意識することなく、直接タスク間通信を行うように振る舞う。すなわち、タスク間通信において、HAL301dを秘匿することができる。
In the present embodiment, the
図27は、NANDフラッシュドライバに対するHAL APIに準拠した処理の例を示すフローチャートである。 FIG. 27 is a flowchart showing an example of processing compliant with the HAL API for the NAND flash driver.
図28は、NANDフラッシュドライバに対するHAL APIの例を示すブロック図である。 FIG. 28 is a block diagram showing an example of the HAL API for the NAND flash driver.
ステップS2701では、デバイスドライバタスクTdは、タスクTpの次に実行される次タスクTnの識別情報及びデバイスアクセスに必要なNANDフラッシュパラメータを、タスク間メッセージとしてタスクTpの作業領域WApから読み込む。 In step S2701, the device driver task Td reads the identification information of the next task Tn to be executed next to the task Tp and the NAND flash parameters necessary for device access from the work area WAp of the task Tp as an intertask message.
ステップS2702において、キューQで管理されているNANDフラッシュアクセスリクエストがNANDフラッシュドライバ311aへ発行される。デバイスアクセスリクエストは、デバイスドライバタスクキューDQに格納される。デバイスドライバタスクTdは、ステップS2701で読み込んだタスク間メッセージを作業領域WAhに格納する。
In step S2702, a NAND flash access request managed by the queue Q is issued to the
また、NANDフラッシュドライバ311aは、NANDフラッシュメモリB0〜Bpにアクセスする。
In addition, the
ステップS2703において、デバイスドライバタスクTdは、NANDフラッシュメモリB0〜Bpへのアクセス完了後、タスクTpの作業領域WApにアクセス結果を格納する。アクセス結果は、例えばNANDフラッシュメモリB0〜Bpの状態を表すメモリステータス情報であってもよい。 In step S2703, after the access to the NAND flash memories B0 to Bp is completed, the device driver task Td stores the access result in the work area WAp of the task Tp. The access result may be, for example, memory status information indicating the states of the NAND flash memories B0 to Bp.
ステップS2704において、デバイスドライバタスクTdは、キューQに次に処理されるタスクである次タスクTnの実行コマンドを格納する。静的タスクスケジューラ15S又は動的タスクスケジューラ15Dは、次タスクTnの実行コマンドにしたがって次タスクTnを起動する。
In step S2704, the device driver task Td stores an execution command of the next task Tn, which is a task to be processed next, in the queue Q. The
本実施形態において、ソフトウェア定義型のSSDプラットフォームは、ホスト制御を実行する。ホスト制御は、例えば、コマンドをサポートし、ネームスペースを制御し、QoS(Quality of Service)制御を行う。 In this embodiment, a software-defined SSD platform performs host control. Host control, for example, supports commands, controls namespaces, and performs QoS (Quality of Service) control.
コマンドのサポートとして、例えば、ホスト制御は、読み出し及び書き込みにおける複数のコマンドを最も効率のよい順序に並び替えて実行するネイティブコマンドキューイング(NCQ:Native Command Queuing)を行う。 As command support, for example, host control performs native command queuing (NCQ) in which multiple commands in read and write are rearranged and executed in the most efficient order.
ネームスペースの制御として、例えば、ホスト制御は、各ネームスペースに対するQoS制御を行う。QoS制御は、例えば、トラフィックの属性に応じて、転送処理に差異をつけること、及び、帯域を保証すること、を含む。例えば、ホスト制御は、各ネームスペースに対応するタスクチェーンを特定する。 As control of namespaces, for example, host control performs QoS control for each namespace. QoS control includes, for example, differentiating transfer processing and guaranteeing bandwidth according to the attribute of traffic. For example, host control specifies a task chain corresponding to each namespace.
QoS制御として、例えば、ホスト制御は、NANDフラッシュコントローラに対する受付可能レイテンシ情報、タスク制御に対する優先制御を管理する。 As QoS control, for example, host control manages acceptable latency information for the NAND flash controller, and priority control for task control.
図29は、NCQを用いたタスクの割り当ての例を示すブロック図である。 FIG. 29 is a block diagram showing an example of task assignment using NCQ.
各タスクチェーンTC1〜TCnは、IDによって区別される。各タスクチェーンTC1〜TCnは、独立して処理される。タスクのプログラムP1〜Pmは、複数のタスクチェーンTC1〜TCnで共有可能としてもよい。それぞれのタスクチェーンTC1〜TCnに含まれるタスクT1〜Tmに対応する作業領域WA1〜WAmは、タスクチェーンTC1〜TCnごとに独立して確保される。 Each task chain TC1 to TCn is distinguished by an ID. Each task chain TC1 to TCn is processed independently. Task programs P1 to Pm may be shareable among a plurality of task chains TC1 to TCn. Work areas WA1 to WAm corresponding to tasks T1 to Tm included in respective task chains TC1 to TCn are independently secured for each of task chains TC1 to TCn.
具体的には、例えばホスト装置から不揮発性メモリ5へのアクセスの際、ホスト装置よりn個の読み込みコマンドが発行され、n個の読み込みコマンドに対応するタスクチェーンTC1〜TCnが実行される。タスクチェーンTC1〜TCnは、それぞれm個のタスクT1〜タスクTmを含む。タスクチェーンTC1〜TCnには、例えばホスト装置又はメモリ装置により、それぞれタスクチェーンIDが付与されてもよい。
Specifically, for example, when the host device accesses the
ここで、タスクチェーンTC1〜TCnは全て読み込みコマンドであるため、タスクチェーンTC1〜TCnに含まれるタスクT1〜タスクTmは、タスクチェーンIDによらず共通である。このため、タスクT1〜タスクTmのプログラムP1〜PmはタスクチェーンTC1〜TCn間で共有されることにより、タスクチェーンTC1〜TCnごとに独立したプログラムを保持する場合と比べ、システム全体が管理するリソースが減る。具体的には、各タスクチェーンTC1〜TCnのタスクT1はプログラムP1を共有し、各タスクチェーンTC1〜TCnのタスクTmはプログラムPmを共有する。 Here, since all of the task chains TC1 to TCn are read commands, the tasks T1 to Tm included in the task chains TC1 to TCn are common regardless of the task chain ID. Therefore, the programs P1 to Pm of the tasks T1 to Tm are shared among the task chains TC1 to TCn, so that resources managed by the entire system are compared with the case where independent programs are held for each of the task chains TC1 to TCn. Is reduced. Specifically, the task T1 of each task chain TC1 to TCn shares the program P1, and the task Tm of each task chain TC1 to TCn shares the program Pm.
上述のように、各タスクチェーンTC1〜TCnは同じタスクを処理するプログラムを共有するため、異なるタスクチェーンに含まれる同じタスクは、同時に処理されない。例えば、プログラムP1により処理されるタスクチェーンTC1〜タスクチェーンTCnのタスクT1は、同時に処理されない。なお、各タスクチェーンTC1〜TCnにおいて、1つのタスクチェーン内では、同時に複数のコマンドは実行されない。 As described above, since each task chain TC1 to TCn shares a program that processes the same task, the same task included in different task chains is not processed at the same time. For example, tasks T1 of task chains TC1 to TCn processed by program P1 are not processed at the same time. In each task chain TC1 to TCn, a plurality of commands are not executed simultaneously in one task chain.
また、異なるタスクチェーンに含まれる同じタスクは、それぞれ異なるパラメータを保持するため、それぞれ異なる作業領域を確保する。例えば、タスクT1は作業領域WA1を確保し、タスクTmは作業領域WAmを確保する。タスクが保持するパラメータは、例えば処理範囲(経過)を表す進行管理パラメータ及びタスクの処理結果などを含む。 Also, the same task included in different task chains reserves different work areas in order to hold different parameters. For example, task T1 secures work area WA1, and task Tm secures work area WAm. The parameters held by the task include, for example, progress management parameters representing a processing range (elapsed) and processing results of the task.
なお、図29はタスクチェーンTC1〜TCnがすべて同じコマンドである場合を例示したが、タスクチェーンTC1〜TCnが互いに異なるコマンドのタスクチェーンであってもよい。 Although FIG. 29 illustrates the case where all task chains TC1 to TCn are the same command, task chains TC1 to TCn may be task chains of different commands.
図30は、本実施形態に係るソフトウェア定義型SSDプラットフォームの機能の一例を示すブロック図である。図30は、図15に示されるソフトウェア定義型SSDプラットフォームの構成を、機能ブロック単位で分割し、機能ブロック同士の関係を表現している。以下では、プログラムFがアクセスする不揮発性メモリ5はNANDフラッシュメモリである場合について説明するが、不揮発性メモリ5はNANDフラッシュメモリに限定されない。
FIG. 30 is a block diagram showing an example of the function of the software defined SSD platform according to the present embodiment. FIG. 30 divides the configuration of the software defined type SSD platform shown in FIG. 15 into functional block units to express the relationship between functional blocks. The following describes the case where the
ソフトウェア定義型SSDプラットフォームは、例えばコマンド制御部3101、送受信制御部3102、書き込み制御部3103、読み出し制御部3104、書き込みバッファ3105、NAND書き込み制御部3106、読み出しバッファ3107、NAND読み出し制御部3108、ルックアップテーブル3109、ルックアップテーブルキャッシュ3110、NAND制御部3111、ガーベージコレクション制御部3112を含む。
The software-defined SSD platform includes, for example, a
コマンド制御部3101は、ホスト装置との間で、コマンドを送受信する。コマンド制御部3101は、ホスト装置から受信したコマンドが書き込みコマンドである場合は、書き込み制御部3103へ書き込みコマンドを送る。また、コマンド制御部3101は、ホスト装置から受信したコマンドが読み出しコマンドである場合は、読み出し制御部3104へ読み出しコマンドを送る。
The
なお、ホスト装置とコマンド制御部3101との間で送受信されるコマンドと、ソフトウェア定義型SSDプラットフォーム内部で送受信されるコマンドとが同じ名称の場合でも、コマンド形式はそれぞれ異なっていてもよい。
Even when the command transmitted and received between the host device and the
送受信制御部3102は、ホスト装置との間で、データを送受信する。送受信制御部3102は、ホスト装置から受信したデータを書き込みバッファ3105へ格納する。送受信制御部3102は、NANDフラッシュメモリから読み出されたデータを読み出しバッファ3107より受信し、ホスト装置へ送信する。
The transmission and
書き込み制御部3103は、コマンド制御部3101からの書き込みコマンドにしたがって、書き込みバッファ3105及びNAND書き込み制御部3106を制御する。具体的には、書き込みバッファ3105に格納されているデータをNANDフラッシュメモリに書き込むよう、NAND書き込み制御部3106へコマンドを送る。
The
読み出し制御部3104は、コマンド制御部3101からの読み出しコマンドにしたがって、読み出しバッファ3107及びNAND読み出し制御部3108を制御する。具体的には、NANDフラッシュメモリに格納されているデータを読み出した後、読み出しバッファ3107へ格納するよう、NAND読み出し制御部3108へコマンドを送る。
The read control unit 3104 controls the
NAND書き込み制御部3106は、NAND制御部3111へ書き込みコマンドを送信する。この際、ルックアップテーブル3109を参照し、参照結果をNAND制御部3111へ送信してもよい。
The NAND
NAND読み出し制御部3108は、読み出したデータを読み出しバッファ3107へ格納する。
The NAND read
ルックアップテーブルキャッシュ3110は、ルックアップテーブル3109へのアクセスを高速化するためのキャッシュメモリであり、ルックアップテーブル3109のうちの少なくとも一部を格納する。また、ルックアップテーブルキャッシュ3110は、書き込み制御部3103より書き込みバッファ3105を経由して書き換えられてもよく、読み出し制御部3104より読み出しバッファ3107を経由して読み出されてもよい。
The
NAND制御部3111は、NANDフラッシュメモリに対し、書き込みコマンド及び読み出しコマンドにしたがって、データの書き込み及び読み出しを行う。NAND制御部3111は、読み出しデータをNAND読み出し制御部3108へ送信する。
The
ガーベージコレクション制御部3112は、書き込み制御部3103及び読み出し制御部3104を制御することにより、ガーベージコレクションを行う。
The garbage
なお、書き込み制御部3103及びNAND書き込み制御部3106は、分離されていなくてもよい。読み出し制御部3104及びNAND読み出し制御部3108は、分離されていなくてもよい。
The
以上説明した本実施形態において、ハードウェア部4Hは、HAL301により秘匿される。また、タスクTpの次に処理される次タスクTnは、タスクTpのHAL301に対するアクセス結果を、タスクTpの作業領域WApを参照することにより得る。すなわち、タスク間通信において、ハードウェア部4Hは秘匿されるため、通信の安全性が高まる。また動的タスクスケジューラ15D及びプログラムFは、ハードウェア部4H又はデバイスドライバ311の仕様変更を意識しなくてよいため、プログラムコードの保守管理が容易となる。
In the embodiment described above, the
本実施形態においては、共有メモリプラットフォームが採用される。このため、ソフトウェア定義型SSDプラットフォームは、動的タスクスケジューリングにより複数のプロセッサの負荷が一定となるようパフォーマンスを調整可能である。 In the present embodiment, a shared memory platform is employed. For this reason, the software defined SSD platform can adjust the performance so that the load on a plurality of processors becomes constant by dynamic task scheduling.
本実施形態に係るソフトウェア定義型SSDプラットフォームは、各階層で同じパラメータを保持する場合、上位の階層(例えば、プログラムF)と下位の階層(例えばHAL301、デバイスドライバ311、ハードウェア部4H)とで、パラメータの内容を変化
させる。これにより、階層ごとに適切な抽象度でパラメータを保持することができる。
When the software defined type SSD platform according to the present embodiment holds the same parameter in each layer, the upper layer (for example, program F) and the lower layer (for example,
本実施形態において、タスクチェーンは、タスクTの処理結果に応じて、通常処理のタスクチェーンと例外処理のタスクチェーンとに分岐されてもよい。これにより、タスクチェーン内で通常処理か例外処理かの複雑な分岐処理が不要となるため、タスクTをハードウェアに容易に置き換え可能である。 In the present embodiment, the task chain may be branched into a task chain for normal processing and a task chain for exception processing according to the processing result of task T. As a result, the task T can be easily replaced with hardware since complicated branch processing, whether normal processing or exception processing, is unnecessary in the task chain.
本実施形態においては、処理中のタスクTは、通常処理のタスクチェーンTC1又は例外処理のタスクチェーンTC2内の並列処理可能な1以上のタスクを、負荷の低いプロセッサに割り振る。これにより、ソフトウェア定義型SSDプラットフォーム全体の処理時間を短縮できる。 In the present embodiment, the task T under processing allocates one or more parallel processable tasks in the task chain TC1 for normal processing or the task chain TC2 for exception processing to the processor with low load. This can reduce the processing time of the entire software defined SSD platform.
本実施形態においては、タスク間通信の方法として、タスクTpの作業領域WApにタスク間メッセージを格納する方法、タスクTpが次に処理される次タスクTnの作業領域WAnにタスク間メッセージを格納する方法、及び共有作業領域CWAを用いてタスク間メッセージをタスク同士で参照する方法を用意する。これにより、開発者は最適なタスク間通信の方法を選択して実装を行うことができる。 In this embodiment, as a method of inter-task communication, a method of storing an inter-task message in the work area WAp of the task Tp, and storing an inter-task message in the work area WAn of the next task Tn to be processed next A method and a method for referencing inter-task messages among tasks using the shared work area CWA are prepared. This allows the developer to select an optimal inter-task communication method for implementation.
本実施形態においては、ホスト装置からの複数のコマンドにしたがって実行される複数のタスクチェーンの間で共有されるタスクが、共通のプログラムに基づいて実行される。これにより、タスクチェーンごとに独立してプログラムを保持する場合と比べ、システム全体が管理するリソースを減らすことができる。 In the present embodiment, tasks shared among a plurality of task chains executed according to a plurality of commands from the host device are executed based on a common program. This makes it possible to reduce the resources managed by the entire system as compared to the case where programs are held independently for each task chain.
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。 While certain embodiments of the present invention have been described, these embodiments have been presented by way of example only, and are not intended to limit the scope of the invention. These novel embodiments can be implemented in various other forms, and various omissions, substitutions, and modifications can be made without departing from the scope of the invention. These embodiments and modifications thereof are included in the scope and the gist of the invention, and are included in the invention described in the claims and the equivalent scope thereof.
1…情報処理システム、2…情報処理装置、3…メモリ装置、4…コントローラ、5…不揮発性メモリ、6…インタフェース部、7A,7B…メモリ、P0〜PN…プロセッサ、C0〜CN…管理部、81…受付部、82…アドレス変換部、83…書き込み部、84…読み出し部、9…メモリコントローラ、10…アドレス変換データ、11…制御プログラム、F0〜FM…プログラム、111…モジュール間通信部、112…優先制御部、113…割り込みハンドラ、114…アクセス部、115…情報管理部、116…ハードウェアドライバ、4H…ハードウェア部、B0〜BP…NAND型フラッシュメモリ、131〜137…取り替え可能SSDモジュール、141〜145…ドライバ、146…外部ハードウェア部、VS0〜VSP…仮想メモリ装置、VM0〜VMP…仮想マシン。
DESCRIPTION OF
Claims (28)
前記不揮発性メモリを制御するコントローラと、
を具備し、
前記コントローラは、第1乃至第3のプロセッサを具備し、
前記第1のプロセッサは、実行待ちであり前記第1乃至第3のプロセッサのいずれでも実行可能であるが未割り当てな新たな処理の実行先を決定し、
前記コントローラは、前記新たな処理に関する優先度を含む優先度情報に基づいて、前記第2及び第3のプロセッサのうちの1つによって次に実行されるために、前記第1のプロセッサによって決定された実行先によって実行され得る前記新たな処理の少なくとも1つを決定する、
メモリ装置。 Non-volatile memory,
A controller for controlling the non-volatile memory;
Equipped with
The controller comprises first to third processors,
The first processor is waiting for execution and determines an execution destination of a new process that can be executed by any of the first to third processors but is not allocated.
The controller is determined by the first processor to be executed next by one of the second and third processors based on priority information including priority for the new process Determine at least one of the new processes that may be performed by the target of execution,
Memory device.
前記第1乃至第3のプロセッサは、前記プログラムによって制御され、
前記第1のプロセッサは、前記第2のプロセッサによって実行されるべき実行待ち処理の数が第1のしきい値以下の場合、前記第1のプロセッサによって管理される前記新たな処理の前記実行先が前記第2のプロセッサであると決定し、前記第3のプロセッサによって実行されるべき実行待ち処理の数が第2のしきい値以下の場合、前記第1のプロセッサによって管理される前記新たな処理の前記実行先が前記第3のプロセッサであると決定し、
前記コントローラは、
前記第1のプロセッサに対応し、前記新たな処理及び前記新たな処理の実行順序を管理する第1の管理部と、
前記第2のプロセッサに対応し、前記第2のプロセッサによって実行されるべき処理及び前記第2のプロセッサによって実行されるべき前記処理の実行順序を管理する第2の管理部と、
前記第3のプロセッサに対応し、前記第3のプロセッサによって実行されるべき処理及び前記第3のプロセッサによって実行されるべき前記処理の実行順序を管理する第3の管理部と、
を具備し、
前記第2の管理部によって管理されている処理の数が前記第1のしきい値以下の場合に、前記プログラムは、前記第1の管理部によって管理されている前記新たな処理の管理先を、前記第1の管理部から前記第2の管理部へ変更し、
前記第3の管理部によって管理されている処理の数が前記第2のしきい値以下の場合に、前記プログラムは、前記第1の管理部によって管理されている前記新たな処理の前記管理先を、前記第1の管理部から前記第3の管理部へ変更し、
前記プログラムは、前記優先度情報を参照し、管理先が前記第1の管理部から前記第2及び第3の管理部のうちの1つへ変更される前記新たな処理を決定する、
請求項1のメモリ装置。 It further comprises a memory for storing a program to be executed by the controller,
The first to third processors are controlled by the program,
The first processor is the execution destination of the new process managed by the first processor when the number of pending processes to be executed by the second processor is equal to or less than a first threshold. Is determined to be the second processor and the number of pending processes to be executed by the third processor is less than or equal to a second threshold, the new number being managed by the first processor Determine that the execution destination of the process is the third processor,
The controller
A first management unit corresponding to the first processor and managing an execution order of the new process and the new process;
A second manager corresponding to the second processor and managing a process to be executed by the second processor and an execution order of the process to be executed by the second processor;
A third management unit corresponding to the third processor, managing a process to be executed by the third processor and an execution order of the processes to be executed by the third processor;
Equipped with
If the number of processes managed by the second management unit is less than or equal to the first threshold, the program determines the management destination of the new process managed by the first management unit. Changing from the first management unit to the second management unit,
If the number of processes managed by the third management unit is less than or equal to the second threshold, the program is determined to be the management destination of the new process managed by the first management unit. , From the first management unit to the third management unit,
The program refers to the priority information and determines the new process whose management destination is changed from the first management unit to one of the second and third management units.
The memory device of claim 1.
前記第1乃至第3のプロセッサは、前記プログラムによって制御され、
前記第1のプロセッサは、前記第2のプロセッサによって実行されるべき実行待ち処理の数が第1のしきい値以下の場合、前記第1のプロセッサによって管理される前記新たな処理の前記実行先が前記第2のプロセッサであると決定し、前記第3のプロセッサによって実行されるべき実行待ち処理の数が第2のしきい値以下の場合、前記第1のプロセッサによって管理される前記新たな処理の前記実行先が前記第3のプロセッサであると決定し、
前記コントローラは、
前記第1のプロセッサに対応し、前記新たな処理及び前記新たな処理の実行順序を管理する第1の管理部と、
前記第2のプロセッサに対応し、前記第2のプロセッサによって実行されるべき処理及び前記第2のプロセッサによって実行されるべき前記処理の実行順序を管理する第2の管理部と、
前記第3のプロセッサに対応し、前記第3のプロセッサによって実行されるべき処理及び前記第3のプロセッサによって実行されるべき前記処理の実行順序を管理する第3の管理部と、
を具備し、
前記第2の管理部によって管理されている処理の数が前記第1のしきい値以下の場合に、前記プログラムは、前記第1の管理部によって管理されている前記新たな処理の管理先を、前記第1の管理部から前記第2の管理部へ変更し、
前記第3の管理部によって管理されている処理の数が前記第2のしきい値以下の場合に、前記プログラムは、前記第1の管理部によって管理されている前記新たな処理の前記管理先を、前記第1の管理部から前記第3の管理部へ変更し、
前記プログラムは、前記第2の管理部によって管理されている前記処理に関する優先度を含む前記優先度情報を参照し、前記第2の管理部によって管理されている前記処理のうち、次に実行される処理を決定し、
前記プログラムは、前記第3の管理部によって管理されている前記処理に関する優先度を含む前記優先度情報を参照し、前記第3の管理部によって管理されている前記処理のうち、次に実行される処理を決定する、
請求項1のメモリ装置。 It further comprises a memory for storing a program to be executed by the controller,
The first to third processors are controlled by the program,
The first processor is the execution destination of the new process managed by the first processor when the number of pending processes to be executed by the second processor is equal to or less than a first threshold. Is determined to be the second processor and the number of pending processes to be executed by the third processor is less than or equal to a second threshold, the new number being managed by the first processor Determine that the execution destination of the process is the third processor,
The controller
A first management unit corresponding to the first processor and managing an execution order of the new process and the new process;
A second manager corresponding to the second processor and managing a process to be executed by the second processor and an execution order of the process to be executed by the second processor;
A third management unit corresponding to the third processor, managing a process to be executed by the third processor and an execution order of the processes to be executed by the third processor;
Equipped with
If the number of processes managed by the second management unit is less than or equal to the first threshold, the program determines the management destination of the new process managed by the first management unit. Changing from the first management unit to the second management unit,
If the number of processes managed by the third management unit is less than or equal to the second threshold, the program is determined to be the management destination of the new process managed by the first management unit. , From the first management unit to the third management unit,
The program refers to the priority information including a priority related to the process managed by the second management unit, and is executed next among the processes managed by the second management unit. To determine the
The program refers to the priority information including the priority regarding the process managed by the third management unit, and is executed next among the processes managed by the third management unit. To determine the
The memory device of claim 1.
前記不揮発性メモリを制御するコントローラと、
を具備し、
前記コントローラは、第1乃至第3のプロセッサを具備し、
前記第1のプロセッサは、実行待ちであり前記第1乃至第3のプロセッサのいずれでも実行可能であるが未割り当てな新たな処理の実行先を決定し、
前記第2のプロセッサは、前記第2のプロセッサによって実行された処理が、前記第2のプロセッサによって実行された前記処理に続いて起動される次の処理が前記第2のプロセッサによって実行されるべきであるという依存関係を持つか否か決定し、前記第2のプロセッサによって実行された前記処理が前記依存関係を持つ場合に、前記次の処理が前記第2のプロセッサによって実行されるべきであると決定する、
メモリ装置。 Non-volatile memory,
A controller for controlling the non-volatile memory;
Equipped with
The controller comprises first to third processors,
The first processor is waiting for execution and determines an execution destination of a new process that can be executed by any of the first to third processors but is not allocated.
In the second processor, a process performed by the second processor is to be performed by the second processor, and a next process is to be performed subsequent to the process performed by the second processor. If the process executed by the second processor has the dependency, the next process should be executed by the second processor. Decide,
Memory device.
前記第1乃至第3のプロセッサは、前記プログラムによって制御され、
前記第1のプロセッサは、前記第2のプロセッサによって実行されるべき実行待ち処理の数が第1のしきい値以下の場合、前記第1のプロセッサによって管理される前記新たな処理の前記実行先が前記第2のプロセッサであると決定し、前記第3のプロセッサによって実行されるべき実行待ち処理の数が第2のしきい値以下の場合、前記第1のプロセッサによって管理される前記新たな処理の前記実行先が前記第3のプロセッサであると決定し、
前記コントローラは、
前記第1のプロセッサに対応し、前記新たな処理及び前記新たな処理の実行順序を管理する第1の管理部と、
前記第2のプロセッサに対応し、前記第2のプロセッサによって実行されるべき処理及び前記第2のプロセッサによって実行されるべき前記処理の実行順序を管理する第2の管理部と、
前記第3のプロセッサに対応し、前記第3のプロセッサによって実行されるべき処理及び前記第3のプロセッサによって実行されるべき前記処理の実行順序を管理する第3の管理部と、
を具備し、
前記第2の管理部によって管理されている処理の数が前記第1のしきい値以下の場合に、前記プログラムは、前記第1の管理部によって管理されている前記新たな処理の管理先を、前記第1の管理部から前記第2の管理部へ変更し、
前記第3の管理部によって管理されている処理の数が前記第2のしきい値以下の場合に、前記プログラムは、前記第1の管理部によって管理されている前記新たな処理の前記管理先を、前記第1の管理部から前記第3の管理部へ変更し、
前記次の処理が前記第2のプロセッサによって実行されるべきである場合に、前記プログラムは、前記第2の管理部を使用して前記次の処理を管理し、
前記次の処理が前記第2及び第3のプロセッサのいずれによっても実行可能な場合に、前記プログラムは、前記第1の管理部を使用して前記次の処理を管理する、
請求項4のメモリ装置。 It further comprises a memory for storing a program to be executed by the controller,
The first to third processors are controlled by the program,
The first processor is the execution destination of the new process managed by the first processor when the number of pending processes to be executed by the second processor is equal to or less than a first threshold. Is determined to be the second processor and the number of pending processes to be executed by the third processor is less than or equal to a second threshold, the new number being managed by the first processor Determine that the execution destination of the process is the third processor,
The controller
A first management unit corresponding to the first processor and managing an execution order of the new process and the new process;
A second manager corresponding to the second processor and managing a process to be executed by the second processor and an execution order of the process to be executed by the second processor;
A third management unit corresponding to the third processor, managing a process to be executed by the third processor and an execution order of the processes to be executed by the third processor;
Equipped with
If the number of processes managed by the second management unit is less than or equal to the first threshold, the program determines the management destination of the new process managed by the first management unit. Changing from the first management unit to the second management unit,
If the number of processes managed by the third management unit is less than or equal to the second threshold, the program is determined to be the management destination of the new process managed by the first management unit. , From the first management unit to the third management unit,
If the next process is to be executed by the second processor, the program manages the next process using the second manager.
The program manages the next process using the first managing unit, when the next process can be executed by any of the second and third processors.
The memory device of claim 4.
前記第1乃至第3のプロセッサは、前記プログラムによって制御され、
前記第1のプロセッサは、前記第2のプロセッサによって実行されるべき実行待ち処理の数が第1のしきい値以下の場合、前記第1のプロセッサによって管理される前記新たな処理の前記実行先が前記第2のプロセッサであると決定し、前記第3のプロセッサによって実行されるべき実行待ち処理の数が第2のしきい値以下の場合、前記第1のプロセッサによって管理される前記新たな処理の前記実行先が前記第3のプロセッサであると決定し、
前記コントローラは、
前記第1のプロセッサに対応し、前記新たな処理及び前記新たな処理の実行順序を管理する第1の管理部と、
前記第2のプロセッサに対応し、前記第2のプロセッサによって実行されるべき処理及び前記第2のプロセッサによって実行されるべき前記処理の実行順序を管理する第2の管理部と、
前記第3のプロセッサに対応し、前記第3のプロセッサによって実行されるべき処理及び前記第3のプロセッサによって実行されるべき前記処理の実行順序を管理する第3の管理部と、
を具備し、
前記第2の管理部によって管理されている処理の数が前記第1のしきい値以下の場合に、前記プログラムは、前記第1の管理部によって管理されている前記新たな処理の管理先を、前記第1の管理部から前記第2の管理部へ変更し、
前記第3の管理部によって管理されている処理の数が前記第2のしきい値以下の場合に、前記プログラムは、前記第1の管理部によって管理されている前記新たな処理の前記管理先を、前記第1の管理部から前記第3の管理部へ変更し、
前記次の処理が前記第2の処理によって実行されるべきである場合に、前記プログラムは、前記第2の管理部を使用して前記次の処理を管理し、
前記次の処理が前記第2及び第3のプロセッサのいずれでも実行可能であり、かつ、前記第2の管理部によって管理されている処理の数が前記第1のしきい値以下の場合に、前記ブログラムは、前記第2の管理部を使用して前記次の処理を管理し、前記次の処理が前記第2の及び第3のプロセッサのいずれでも実行可能であり、かつ、前記第3の管理部によって管理されている処理の数が前記第2のしきい値以下の場合に、前記プログラムは、前記第3の管理部を使用して前記次の処理を管理し、
前記第2の管理部によって管理されている処理の数が前記第1のしきい値より多く、かつ、前記第3の管理部によって管理されている処理の数が前記第2のしきい値より多い場合に、前記プログラムは、前記第1の管理部を使用して前記次の処理を管理する、
請求項4のメモリ装置。 It further comprises a memory for storing a program to be executed by the controller,
The first to third processors are controlled by the program,
The first processor is the execution destination of the new process managed by the first processor when the number of pending processes to be executed by the second processor is equal to or less than a first threshold. Is determined to be the second processor and the number of pending processes to be executed by the third processor is less than or equal to a second threshold, the new number being managed by the first processor Determine that the execution destination of the process is the third processor,
The controller
A first management unit corresponding to the first processor and managing an execution order of the new process and the new process;
A second manager corresponding to the second processor and managing a process to be executed by the second processor and an execution order of the process to be executed by the second processor;
A third management unit corresponding to the third processor, managing a process to be executed by the third processor and an execution order of the processes to be executed by the third processor;
Equipped with
If the number of processes managed by the second management unit is less than or equal to the first threshold, the program determines the management destination of the new process managed by the first management unit. Changing from the first management unit to the second management unit,
If the number of processes managed by the third management unit is less than or equal to the second threshold, the program is determined to be the management destination of the new process managed by the first management unit. , From the first management unit to the third management unit,
When the next process is to be executed by the second process, the program manages the next process using the second manager.
In the case where the next process can be executed by any of the second and third processors, and the number of processes managed by the second manager is equal to or less than the first threshold value, The program manages the next processing using the second management unit, and the next processing can be executed by any of the second and third processors, and the third processing The program manages the next process using the third manager, when the number of processes managed by the manager of the second group is equal to or less than the second threshold value,
The number of processes managed by the second management unit is greater than the first threshold, and the number of processes managed by the third management unit is greater than the second threshold If there are many, the program manages the next process using the first managing unit.
The memory device of claim 4.
前記不揮発性メモリを制御するコントローラと、
を具備し、
前記コントローラは、第1乃至第3のプロセッサを具備し、
前記第1のプロセッサは、実行待ちであり前記第1乃至第3のプロセッサのいずれでも実行可能であるが未割り当てな新たな処理の実行先を決定し、
前記コントローラは、前記第1乃至第3のプロセッサで共有される共有メモリをさらに具備し、実行前の処理に対して、前記実行前の処理で使用される前記共有メモリのメモリ領域を割り当てる、
メモリ装置。 Non-volatile memory,
A controller for controlling the non-volatile memory;
Equipped with
The controller comprises first to third processors,
The first processor is waiting for execution and determines an execution destination of a new process that can be executed by any of the first to third processors but is not allocated.
The controller further includes a shared memory shared by the first to third processors, and allocates a memory area of the shared memory used in the pre-execution processing to the pre-execution processing.
Memory device.
前記第1乃至第3のプロセッサは、前記プログラムによって制御され、
前記第1のプロセッサは、前記第2のプロセッサによって実行されるべき実行待ち処理の数が第1のしきい値以下の場合、前記第1のプロセッサによって管理される前記新たな処理の前記実行先が前記第2のプロセッサであると決定し、前記第3のプロセッサによって実行されるべき実行待ち処理の数が第2のしきい値以下の場合、前記第1のプロセッサによって管理される前記新たな処理の前記実行先が前記第3のプロセッサであると決定し、
前記コントローラは、
前記第1のプロセッサに対応し、前記新たな処理及び前記新たな処理の実行順序を管理する第1の管理部と、
前記第2のプロセッサに対応し、前記第2のプロセッサによって実行されるべき処理及び前記第2のプロセッサによって実行されるべき前記処理の実行順序を管理する第2の管理部と、
前記第3のプロセッサに対応し、前記第3のプロセッサによって実行されるべき処理及び前記第3のプロセッサによって実行されるべき前記処理の実行順序を管理する第3の管理部と、
を具備し、
前記第2の管理部によって管理されている処理の数が前記第1のしきい値以下の場合に、前記プログラムは、前記第1の管理部によって管理されている前記新たな処理の管理先を、前記第1の管理部から前記第2の管理部へ変更し、
前記第3の管理部によって管理されている処理の数が前記第2のしきい値以下の場合に、前記プログラムは、前記第1の管理部によって管理されている前記新たな処理の前記管理先を、前記第1の管理部から前記第3の管理部へ変更する、
請求項7のメモリ装置。 It further comprises a memory for storing a program to be executed by the controller,
The first to third processors are controlled by the program,
The first processor is the execution destination of the new process managed by the first processor when the number of pending processes to be executed by the second processor is equal to or less than a first threshold. Is determined to be the second processor and the number of pending processes to be executed by the third processor is less than or equal to a second threshold, the new number being managed by the first processor Determine that the execution destination of the process is the third processor,
The controller
A first management unit corresponding to the first processor and managing an execution order of the new process and the new process;
A second manager corresponding to the second processor and managing a process to be executed by the second processor and an execution order of the process to be executed by the second processor;
A third management unit corresponding to the third processor, managing a process to be executed by the third processor and an execution order of the processes to be executed by the third processor;
Equipped with
If the number of processes managed by the second management unit is less than or equal to the first threshold, the program determines the management destination of the new process managed by the first management unit. Changing from the first management unit to the second management unit,
If the number of processes managed by the third management unit is less than or equal to the second threshold, the program is determined to be the management destination of the new process managed by the first management unit. , From the first management unit to the third management unit,
The memory device of claim 7.
前記第1乃至第3のプロセッサは、前記プログラムによって制御され、
前記第1のプロセッサは、前記第2のプロセッサによって実行されるべき実行待ち処理の数が第1のしきい値以下の場合、前記第1のプロセッサによって管理される前記新たな処理の前記実行先が前記第2のプロセッサであると決定し、前記第3のプロセッサによって実行されるべき実行待ち処理の数が第2のしきい値以下の場合、前記第1のプロセッサによって管理される前記新たな処理の前記実行先が前記第3のプロセッサであると決定し、
前記コントローラは、
前記第1のプロセッサに対応し、前記新たな処理及び前記新たな処理の実行順序を管理する第1の管理部と、
前記第2のプロセッサに対応し、前記第2のプロセッサによって実行されるべき処理及び前記第2のプロセッサによって実行されるべき前記処理の実行順序を管理する第2の管理部と、
前記第3のプロセッサに対応し、前記第3のプロセッサによって実行されるべき処理及び前記第3のプロセッサによって実行されるべき前記処理の実行順序を管理する第3の管理部と、
を具備し、
前記第2の管理部によって管理されている処理の数が前記第1のしきい値以下の場合に、前記プログラムは、前記第1の管理部によって管理されている前記新たな処理の管理先を、前記第1の管理部から前記第2の管理部へ変更し、
前記第3の管理部によって管理されている処理の数が前記第2のしきい値以下の場合に、前記プログラムは、前記第1の管理部によって管理されている前記新たな処理の前記管理先を、前記第1の管理部から前記第3の管理部へ変更し、
前記プログラムは、前記コントローラの一部を示すハードウェア識別情報と関連付けられている処理を、前記第1乃至第3の管理部のうち前記ハードウェア識別情報に対応する管理部で管理する、
請求項7のメモリ装置。 It further comprises a memory for storing a program to be executed by the controller,
The first to third processors are controlled by the program,
The first processor is the execution destination of the new process managed by the first processor when the number of pending processes to be executed by the second processor is equal to or less than a first threshold. Is determined to be the second processor and the number of pending processes to be executed by the third processor is less than or equal to a second threshold, the new number being managed by the first processor Determine that the execution destination of the process is the third processor,
The controller
A first management unit corresponding to the first processor and managing an execution order of the new process and the new process;
A second manager corresponding to the second processor and managing a process to be executed by the second processor and an execution order of the process to be executed by the second processor;
A third management unit corresponding to the third processor, managing a process to be executed by the third processor and an execution order of the processes to be executed by the third processor;
Equipped with
If the number of processes managed by the second management unit is less than or equal to the first threshold, the program determines the management destination of the new process managed by the first management unit. Changing from the first management unit to the second management unit,
If the number of processes managed by the third management unit is less than or equal to the second threshold, the program is determined to be the management destination of the new process managed by the first management unit. , From the first management unit to the third management unit,
The program manages processing associated with hardware identification information indicating a part of the controller in a management unit corresponding to the hardware identification information among the first to third management units.
The memory device of claim 7.
前記第1乃至第3のプロセッサは、前記プログラムによって制御され、
前記第1のプロセッサは、前記第2のプロセッサによって実行されるべき実行待ち処理の数が第1のしきい値以下の場合、前記第1のプロセッサによって管理される前記新たな処理の前記実行先が前記第2のプロセッサであると決定し、前記第3のプロセッサによって実行されるべき実行待ち処理の数が第2のしきい値以下の場合、前記第1のプロセッサによって管理される前記新たな処理の前記実行先が前記第3のプロセッサであると決定し、
前記コントローラは、
前記第1のプロセッサに対応し、前記新たな処理及び前記新たな処理の実行順序を管理する第1の管理部と、
前記第2のプロセッサに対応し、前記第2のプロセッサによって実行されるべき処理及び前記第2のプロセッサによって実行されるべき前記処理の実行順序を管理する第2の管理部と、
前記第3のプロセッサに対応し、前記第3のプロセッサによって実行されるべき処理及び前記第3のプロセッサによって実行されるべき前記処理の実行順序を管理する第3の管理部と、
を具備し、
前記第2の管理部によって管理されている処理の数が前記第1のしきい値以下の場合に、前記プログラムは、前記第1の管理部によって管理されている前記新たな処理の管理先を、前記第1の管理部から前記第2の管理部へ変更し、
前記第3の管理部によって管理されている処理の数が前記第2のしきい値以下の場合に、前記プログラムは、前記第1の管理部によって管理されている前記新たな処理の前記管理先を、前記第1の管理部から前記第3の管理部へ変更し、
第1の処理は、前記第2及び第3のプロセッサのうちのいずれかで実行され、
第2の処理は、前記第2及び第3のプロセッサのうちのいずれかで、前記第1の処理の後に実行され、
前記第1の処理は、前記第1の処理で使用される前記共有メモリのメモリ領域の少なくとも一部が前記第2の処理で使用される場合に、前記メモリ領域の少なくとも一部の領域情報を、前記第2の処理に通知する、
請求項7のメモリ装置。 It further comprises a memory for storing a program to be executed by the controller,
The first to third processors are controlled by the program,
The first processor is the execution destination of the new process managed by the first processor when the number of pending processes to be executed by the second processor is equal to or less than a first threshold. Is determined to be the second processor and the number of pending processes to be executed by the third processor is less than or equal to a second threshold, the new number being managed by the first processor Determine that the execution destination of the process is the third processor,
The controller
A first management unit corresponding to the first processor and managing an execution order of the new process and the new process;
A second manager corresponding to the second processor and managing a process to be executed by the second processor and an execution order of the process to be executed by the second processor;
A third management unit corresponding to the third processor, managing a process to be executed by the third processor and an execution order of the processes to be executed by the third processor;
Equipped with
If the number of processes managed by the second management unit is less than or equal to the first threshold, the program determines the management destination of the new process managed by the first management unit. Changing from the first management unit to the second management unit,
If the number of processes managed by the third management unit is less than or equal to the second threshold, the program is determined to be the management destination of the new process managed by the first management unit. , From the first management unit to the third management unit,
The first process is executed by any of the second and third processors,
The second process is executed after the first process in any of the second and third processors.
The first process includes area information of at least a part of the memory area when at least a part of a memory area of the shared memory used in the first process is used in the second process. , Notify the second process,
The memory device of claim 7.
前記第1乃至第3のプロセッサは、前記プログラムによって制御され、
前記第1のプロセッサは、前記第2のプロセッサによって実行されるべき実行待ち処理の数が第1のしきい値以下の場合、前記第1のプロセッサによって管理される前記新たな処理の前記実行先が前記第2のプロセッサであると決定し、前記第3のプロセッサによって実行されるべき実行待ち処理の数が第2のしきい値以下の場合、前記第1のプロセッサによって管理される前記新たな処理の前記実行先が前記第3のプロセッサであると決定し、
前記コントローラは、
前記第1のプロセッサに対応し、前記新たな処理及び前記新たな処理の実行順序を管理する第1の管理部と、
前記第2のプロセッサに対応し、前記第2のプロセッサによって実行されるべき処理及び前記第2のプロセッサによって実行されるべき前記処理の実行順序を管理する第2の管理部と、
前記第3のプロセッサに対応し、前記第3のプロセッサによって実行されるべき処理及び前記第3のプロセッサによって実行されるべき前記処理の実行順序を管理する第3の管理部と、
を具備し、
前記第2の管理部によって管理されている処理の数が前記第1のしきい値以下の場合に、前記プログラムは、前記第1の管理部によって管理されている前記新たな処理の管理先を、前記第1の管理部から前記第2の管理部へ変更し、
前記第3の管理部によって管理されている処理の数が前記第2のしきい値以下の場合に、前記プログラムは、前記第1の管理部によって管理されている前記新たな処理の前記管理先を、前記第1の管理部から前記第3の管理部へ変更し、
第1の処理は、前記第2及び第3のプロセッサのうちのいずれかで実行され、
第2の処理は、前記第2及び第3のプロセッサのうちのいずれかで、前記第1の処理の後に実行され、
第3の処理は、前記第2及び第3のプロセッサのうちのいずれかで、前記第2の処理の後に実行され、
前記第2の処理は、前記第1の処理から、前記第1乃至第3の処理のうちの少なくとも1つを示す識別情報を受け、前記第2の処理で用いられる情報を、前記第1乃至第3の処理のうちの少なくとも1つに対応する前記共有メモリの第1のメモリ領域から読み出し、前記第2の処理の実行結果を、前記第1乃至第3の処理のうちの少なくとも1つに対応する第2のメモリ領域へ格納する、
請求項7のメモリ装置。 It further comprises a memory for storing a program to be executed by the controller,
The first to third processors are controlled by the program,
The first processor is the execution destination of the new process managed by the first processor when the number of pending processes to be executed by the second processor is equal to or less than a first threshold. Is determined to be the second processor and the number of pending processes to be executed by the third processor is less than or equal to a second threshold, the new number being managed by the first processor Determine that the execution destination of the process is the third processor,
The controller
A first management unit corresponding to the first processor and managing an execution order of the new process and the new process;
A second manager corresponding to the second processor and managing a process to be executed by the second processor and an execution order of the process to be executed by the second processor;
A third management unit corresponding to the third processor, managing a process to be executed by the third processor and an execution order of the processes to be executed by the third processor;
Equipped with
If the number of processes managed by the second management unit is less than or equal to the first threshold, the program determines the management destination of the new process managed by the first management unit. Changing from the first management unit to the second management unit,
If the number of processes managed by the third management unit is less than or equal to the second threshold, the program is determined to be the management destination of the new process managed by the first management unit. , From the first management unit to the third management unit,
The first process is executed by any of the second and third processors,
The second process is executed after the first process in any of the second and third processors.
The third process is performed after the second process in any of the second and third processors,
The second process receives identification information indicating at least one of the first to third processes from the first process, and uses information to be used in the second process as the first to third processes. The first memory area of the shared memory corresponding to at least one of the third processes is read, and the execution result of the second process is stored in at least one of the first to third processes. Store in the corresponding second memory area
The memory device of claim 7.
請求項11のメモリ装置。 The second process reads information used in the second process from a memory area corresponding to the first process, and the execution result of the second process is a memory area corresponding to the third process. To store,
The memory device of claim 11.
前記不揮発性メモリを制御するコントローラと、
を具備し、
前記コントローラは、第1乃至第3のプロセッサを具備し、
前記第1のプロセッサは、実行待ちであり前記第1乃至第3のプロセッサのいずれでも実行可能であるが未割り当てな新たな処理の実行先を決定し、
前記コントローラは、前記第1乃至第3のプロセッサで共有される共有メモリをさらに具備し、実行前の処理に対して、前記実行前の処理で使用される前記共有メモリのメモリ領域を割り当て、
第1の処理は、前記第2及び第3のプロセッサのうちのいずれかで実行され、
第2の処理は、前記第2及び第3のプロセッサのうちのいずれかで、前記第1の処理の後に実行され、
第3の処理は、前記第2及び第3のプロセッサのうちのいずれかで、前記第2の処理の後に実行され、
前記第2の処理は、前記第1の処理から、前記第1乃至第3の処理のうちの少なくとも1つを示す識別情報を受け、前記第2の処理で用いられる情報を、前記第1乃至第3の処理のうちの少なくとも1つに対応する前記共有メモリの第1のメモリ領域から読み出し、前記第2の処理の実行結果を、前記第1乃至第3の処理のうちの少なくとも1つに対応する第2のメモリ領域へ格納する、
メモリ装置。 Non-volatile memory,
A controller for controlling the non-volatile memory;
Equipped with
The controller comprises first to third processors,
The first processor is waiting for execution and determines an execution destination of a new process that can be executed by any of the first to third processors but is not allocated.
The controller further includes shared memory shared by the first to third processors, and allocates a memory area of the shared memory used in the pre-execution processing to the pre-execution processing,
The first process is executed by any of the second and third processors,
The second process is executed after the first process in any of the second and third processors.
The third process is performed after the second process in any of the second and third processors,
The second process receives identification information indicating at least one of the first to third processes from the first process, and uses information to be used in the second process as the first to third processes. The first memory area of the shared memory corresponding to at least one of the third processes is read, and the execution result of the second process is stored in at least one of the first to third processes. Store in the corresponding second memory area
Memory device.
前記第2の処理は、前記第1の処理に対応するメモリ領域から前記第2の処理で用いられる情報を読み出し、前記第2の処理の実行結果を、前記第3の処理に対応するメモリ領域へ格納する、
請求項13のメモリ装置。 The first processor is the execution destination of the new process managed by the first processor when the number of pending processes to be executed by the second processor is equal to or less than a first threshold. Is determined to be the second processor and the number of pending processes to be executed by the third processor is less than or equal to a second threshold, the new number being managed by the first processor Determine that the execution destination of the process is the third processor,
The second process reads information used in the second process from a memory area corresponding to the first process, and the execution result of the second process is a memory area corresponding to the third process. To store,
The memory device of claim 13.
前記第1のプロセッサによって、新たな処理の実行先を決定し、前記新たな処理は、実行待ちであり、前記第1乃至第3のプロセッサのいずれでも実行可能であるが未割り当てである、ことと、
前記コントローラによって、前記新たな処理に関する優先度を含む優先度情報に基づいて、前記第2及び第3のプロセッサのうちの1つによって次に実行されるされるために、前記第1のプロセッサによって決定された実行先によって実行され得る前記新たな処理の少なくとも1つを決定することと、
を具備する制御方法。 A control method of non-volatile memory comprising a controller including first to third processors, comprising:
The first processor determines the execution destination of a new process, and the new process is awaiting execution and can be executed by any of the first to third processors but is not allocated. When,
By the controller based on priority information, including priority for the new process, by the first processor to be executed next by one of the second and third processors Determining at least one of the new processes that may be performed by the determined destination;
Control method.
前記第1のプロセッサによって、前記第2のプロセッサによって実行されるべき実行待ち処理の数が第1のしきい値以下の場合、前記第1のプロセッサによって管理される前記新たな処理の前記実行先が前記第2のプロセッサであると決定し、前記第3のプロセッサによって実行されるべき実行待ち処理の数が第2のしきい値以下の場合、前記第1のプロセッサによって管理される前記新たな処理の前記実行先が前記第3のプロセッサであると決定し、
前記制御方法は、
前記コントローラを制御するプログラムを実行することと、
前記第1のプロセッサに対応する前記第1の管理部によって、前記新たな処理及び前記新たな処理の実行順序を管理することと、
前記第2のプロセッサに対応する前記第2の管理部によって、前記第2のプロセッサによって実行されるべき前記処理及び前記第2のプロセッサによって実行されるべき前記処理の実行順序を管理することと、
前記第3のプロセッサに対応する前記第3の管理部によって、前記第3のプロセッサによって実行されるべき前記処理及び前記第3のプロセッサによって実行されるべき前記処理の実行順序を管理することと、
前記第2の管理部によって管理されている処理の数が前記第1のしきい値以下の場合に、前記プログラムによって、前記第1の管理部によって管理されている前記新たな処理の管理先を、前記第1の管理部から前記第2の管理部へ変更することと、
前記第3の管理部によって管理されている処理の数が前記第2のしきい値以下の場合に、前記プログラムによって、前記第1の管理部によって管理されている前記新たな処理の前記管理先を、前記第1の管理部から前記第3の管理部へ変更することと、
を具備し、
前記プログラムは、前記優先度情報を参照し、管理先が前記第1の管理部から前記第2及び第3の管理部のうちの1つへ変更される前記新たな処理を決定する、
請求項15の制御方法。 The controller includes first to third management units.
If the number of pending processes to be executed by the second processor by the first processor is less than or equal to a first threshold, the execution destination of the new process managed by the first processor Is determined to be the second processor and the number of pending processes to be executed by the third processor is less than or equal to a second threshold, the new number being managed by the first processor Determine that the execution destination of the process is the third processor,
The control method is
Executing a program for controlling the controller;
Managing the new processing and the execution order of the new processing by the first management unit corresponding to the first processor;
Managing the processing to be executed by the second processor and the execution order of the processing to be executed by the second processor by the second manager corresponding to the second processor;
Managing the processing to be executed by the third processor and the execution order of the processing to be executed by the third processor by the third manager corresponding to the third processor;
If the number of processes managed by the second management unit is less than or equal to the first threshold value, the management destination of the new process managed by the first management unit is selected by the program. Changing from the first management unit to the second management unit;
When the number of processes managed by the third management unit is less than or equal to the second threshold value, the management destination of the new process managed by the first management unit by the program Changing the first management unit to the third management unit;
Equipped with
The program refers to the priority information and determines the new process whose management destination is changed from the first management unit to one of the second and third management units.
The control method of claim 15.
前記第1のプロセッサによって、前記第2のプロセッサによって実行されるべき実行待ち処理の数が第1のしきい値以下の場合、前記第1のプロセッサによって管理される前記新たな処理の前記実行先が前記第2のプロセッサであると決定し、前記第3のプロセッサによって実行されるべき実行待ち処理の数が第2のしきい値以下の場合、前記第1のプロセッサによって管理される前記新たな処理の前記実行先が前記第3のプロセッサであると決定し、
前記制御方法は、
前記コントローラを制御するプログラムを実行することと、
前記第1のプロセッサに対応する前記第1の管理部により、前記新たな処理及び前記新たな処理の実行順序を管理することと、
前記第2のプロセッサに対応する前記第2の管理部により、前記第2のプロセッサによって実行されるべき前記処理及び前記第2のプロセッサによって実行されるべき前記処理の実行順序を管理することと、
前記第3のプロセッサに対応する前記第3の管理部により、前記第3のプロセッサによって実行されるべき前記処理及び前記第3のプロセッサによって実行されるべき前記処理の実行順序を管理することと、
前記第2の管理部によって管理されている処理の数が前記第1のしきい値以下の場合に、前記プログラムによって、前記第1の管理部によって管理されている前記新たな処理の管理先を、前記第1の管理部から前記第2の管理部へ変更することと、
前記第3の管理部によって管理されている処理の数が前記第2のしきい値以下の場合に、前記プログラムによって、前記第1の管理部によって管理されている前記新たな処理の前記管理先を、前記第1の管理部から前記第3の管理部へ変更することと、
を具備し、
前記プログラムは、前記第2の管理部によって管理されている新たな処理に関する優先度を含む前記優先度情報を参照し、前記第2の管理部によって管理されている前記処理のうち、次に実行される処理を決定し、
前記プログラムは、前記第3の管理部によって管理されている新たな処理に関する優先度を含む前記優先度情報を参照し、前記第3の管理部によって管理されている前記処理のうち、次に実行される処理を決定する、
請求項15の制御方法。 The controller includes first to third management units.
If the number of pending processes to be executed by the second processor by the first processor is less than or equal to a first threshold, the execution destination of the new process managed by the first processor Is determined to be the second processor and the number of pending processes to be executed by the third processor is less than or equal to a second threshold, the new number being managed by the first processor Determine that the execution destination of the process is the third processor,
The control method is
Executing a program for controlling the controller;
Managing the execution order of the new process and the new process by the first management unit corresponding to the first processor;
Managing the processing to be executed by the second processor and the execution order of the processing to be executed by the second processor by the second manager corresponding to the second processor;
Managing the processing to be executed by the third processor and the execution order of the processing to be executed by the third processor by the third manager corresponding to the third processor;
If the number of processes managed by the second management unit is less than or equal to the first threshold value, the management destination of the new process managed by the first management unit is selected by the program. Changing from the first management unit to the second management unit;
When the number of processes managed by the third management unit is less than or equal to the second threshold value, the management destination of the new process managed by the first management unit by the program Changing the first management unit to the third management unit;
Equipped with
The program refers to the priority information including a priority related to a new process managed by the second management unit, and executes the next one of the processes managed by the second management unit. Determine the processing to be
The program refers to the priority information including a priority related to a new process managed by the third management unit, and executes the next one of the processes managed by the third management unit. Determine the processing to be done,
The control method of claim 15.
前記第1のプロセッサによって、新たな処理の実行先を決定し、前記新たな処理は、実行待ちであり、前記第1乃至第3のプロセッサのいずれでも実行可能であるが未割り当てである、ことと、
前記第2のプロセッサによって、前記第2のプロセッサによって実行された処理が、前記第2のプロセッサによって実行された前記処理に続いて起動される次の処理が前記第2のプロセッサによって実行されるべきであるという依存関係を持つか否か決定することと、
前記第2のプロセッサによって、前記第2のプロセッサによって実行された前記処理が前記依存関係を持つ場合に、前記次の処理が前記第2のプロセッサによって実行されるべきであると決定することと、
を具備する制御方法。 A control method of non-volatile memory comprising a controller including first to third processors, comprising:
The first processor determines the execution destination of a new process, and the new process is awaiting execution and can be executed by any of the first to third processors but is not allocated. When,
The processing executed by the second processor by the second processor should be executed by the second processor, the next processing being activated following the processing executed by the second processor Determining whether or not there is a dependency that is
Determining by the second processor that the next processing should be performed by the second processor if the processing performed by the second processor has the dependency;
Control method.
前記第1のプロセッサによって、前記第2のプロセッサによって実行されるべき実行待ち処理の数が第1のしきい値以下の場合、前記第1のプロセッサによって管理される前記新たな処理の前記実行先が前記第2のプロセッサであると決定し、前記第3のプロセッサによって実行されるべき実行待ち処理の数が第2のしきい値以下の場合、前記第1のプロセッサによって管理される前記新たな処理の前記実行先が前記第3のプロセッサであると決定し、
前記制御方法は、
前記コントローラを制御するプログラムを実行することと、
前記第1のプロセッサに対応する前記第1の管理部によって、前記新たな処理及び前記新たな処理の実行順序を管理することと、
前記第2のプロセッサに対応する前記第2の管理部によって、前記第2のプロセッサによって実行されるべき前記処理及び前記第2のプロセッサによって実行されるべき前記処理の実行順序を管理することと、
前記第3のプロセッサに対応する前記第3の管理部によって、前記第3のプロセッサによって実行されるべき前記処理及び前記第3のプロセッサによって実行されるべき前記処理の実行順序を管理することと、
前記第2の管理部によって管理されている処理の数が前記第1のしきい値以下の場合に、前記プログラムによって、前記第1の管理部によって管理されている前記新たな処理の管理先を、前記第1の管理部から前記第2の管理部へ変更することと、
前記第3の管理部によって管理されている処理の数が前記第2のしきい値以下の場合に、前記プログラムによって、前記第1の管理部によって管理されている前記新たな処理の前記管理先を、前記第1の管理部から前記第3の管理部へ変更することと、
前記次の処理が前記第2のプロセッサによって実行されるべきである場合に、前記プログラムによって、前記第2の管理部を使用して前記次の処理を管理することと、
前記次の処理が前記第2及び第3のプロセッサのいずれによっても実行可能な場合に、前記プログラムによって、前記第1の管理部を使用して前記次の処理を管理することと、
を具備する、
請求項18の制御方法。 The controller includes first to third management units.
If the number of pending processes to be executed by the second processor by the first processor is less than or equal to a first threshold, the execution destination of the new process managed by the first processor Is determined to be the second processor and the number of pending processes to be executed by the third processor is less than or equal to a second threshold, the new number being managed by the first processor Determine that the execution destination of the process is the third processor,
The control method is
Executing a program for controlling the controller;
Managing the new processing and the execution order of the new processing by the first management unit corresponding to the first processor;
Managing the processing to be executed by the second processor and the execution order of the processing to be executed by the second processor by the second manager corresponding to the second processor;
Managing the processing to be executed by the third processor and the execution order of the processing to be executed by the third processor by the third manager corresponding to the third processor;
If the number of processes managed by the second management unit is less than or equal to the first threshold value, the management destination of the new process managed by the first management unit is selected by the program. Changing from the first management unit to the second management unit;
When the number of processes managed by the third management unit is less than or equal to the second threshold value, the management destination of the new process managed by the first management unit by the program Changing the first management unit to the third management unit;
Managing the next process by the program using the second manager, if the next process is to be performed by the second processor;
Managing the next process using the first managing unit by the program when the next process can be executed by any of the second and third processors;
Equipped with
The control method of claim 18.
前記第1のプロセッサによって、前記第2のプロセッサによって実行されるべき実行待ち処理の数が第1のしきい値以下の場合、前記第1のプロセッサによって管理される前記新たな処理の前記実行先が前記第2のプロセッサであると決定し、前記第3のプロセッサによって実行されるべき実行待ち処理の数が第2のしきい値以下の場合、前記第1のプロセッサによって管理される前記新たな処理の前記実行先が前記第3のプロセッサであると決定し、
前記制御方法は、
前記コントローラを制御するプログラムを実行することと、
前記第1のプロセッサに対応する前記第1の管理部によって、前記新たな処理及び前記新たな処理の実行順序を管理することと、
前記第2のプロセッサに対応する前記第2の管理部によって、前記第2のプロセッサによって実行されるべき前記処理及び前記第2のプロセッサによって実行されるべき前記処理の実行順序を管理することと、
前記第3のプロセッサに対応する前記第3の管理部によって、前記第3のプロセッサによって実行されるべき前記処理及び前記第3のプロセッサによって実行されるべき前記処理の実行順序を管理することと、
前記第2の管理部によって管理されている処理の数が前記第1のしきい値以下の場合に、前記プログラムによって、前記第1の管理部によって管理されている前記新たな処理の管理先を、前記第1の管理部から前記第2の管理部へ変更することと、
前記第3の管理部によって管理されている処理の数が前記第2のしきい値以下の場合に、前記プログラムによって、前記第1の管理部によって管理されている前記新たな処理の前記管理先を、前記第1の管理部から前記第3の管理部へ変更することと、
前記次の処理が前記第2の処理によって実行されるべきである場合に、前記プログラムによって、前記第2の管理部を使用して前記次の処理を管理することと、
前記次の処理が前記第2及び第3のプロセッサのいずれでも実行可能であり、かつ、前記第2の管理部によって管理されている処理の数が前記第1のしきい値以下の場合に、前記ブログラムによって、前記第2の管理部を使用して前記次の処理を管理することとと、前記次の処理が前記第2の及び第3のプロセッサのいずれでも実行可能であり、かつ、前記第3の管理部によって管理されている処理の数が前記第2のしきい値以下の場合に、前記プログラムによって、前記第3の管理部を使用して前記次の処理を管理することと、
前記第2の管理部によって管理されている処理の数が前記第1のしきい値より多く、かつ、前記第3の管理部によって管理されている処理の数が前記第2のしきい値より多い場合に、前記プログラムによって、前記第1の管理部を使用して前記次の処理を管理することと、
を具備する、
請求項18のメモリ装置。 The controller includes first to third management units.
If the number of pending processes to be executed by the second processor by the first processor is less than or equal to a first threshold, the execution destination of the new process managed by the first processor Is determined to be the second processor and the number of pending processes to be executed by the third processor is less than or equal to a second threshold, the new number being managed by the first processor Determine that the execution destination of the process is the third processor,
The control method is
Executing a program for controlling the controller;
Managing the new processing and the execution order of the new processing by the first management unit corresponding to the first processor;
Managing the processing to be executed by the second processor and the execution order of the processing to be executed by the second processor by the second manager corresponding to the second processor;
Managing the processing to be executed by the third processor and the execution order of the processing to be executed by the third processor by the third manager corresponding to the third processor;
If the number of processes managed by the second management unit is less than or equal to the first threshold value, the management destination of the new process managed by the first management unit is selected by the program. Changing from the first management unit to the second management unit;
When the number of processes managed by the third management unit is less than or equal to the second threshold value, the management destination of the new process managed by the first management unit by the program Changing the first management unit to the third management unit;
Managing the next process by the program using the second manager, if the next process is to be performed by the second process;
In the case where the next process can be executed by any of the second and third processors, and the number of processes managed by the second manager is equal to or less than the first threshold value, Managing the next process using the second management unit according to the program, and the next process can be performed by either the second or third processor, and Managing the next process using the third manager by the program when the number of processes managed by the third manager is less than or equal to the second threshold value; ,
The number of processes managed by the second management unit is greater than the first threshold, and the number of processes managed by the third management unit is greater than the second threshold Managing the next process by using the first managing unit according to the program if the number is large;
Equipped with
The memory device of claim 18.
前記第1のプロセッサによって、新たな処理の実行先を決定し、前記新たな処理は、実行待ちであり、前記第1乃至第3のプロセッサのいずれでも実行可能であるが未割り当てである、ことと、
前記コントローラによって、実行前の処理に対して、前記実行前の処理で使用される共有メモリのメモリ領域を割り当て、前記共有メモリは前記第1乃至第3のプロセッサで共有される、ことと、
を具備する制御方法。 A control method of non-volatile memory comprising a controller including first to third processors, comprising:
The first processor determines the execution destination of a new process, and the new process is awaiting execution and can be executed by any of the first to third processors but is not allocated. When,
Assigning the memory area of the shared memory used in the pre-execution processing to the pre-execution processing by the controller, wherein the shared memory is shared by the first to third processors;
Control method.
前記第1のプロセッサによって、前記第2のプロセッサによって実行されるべき実行待ち処理の数が第1のしきい値以下の場合、前記第1のプロセッサによって管理される前記新たな処理の前記実行先が前記第2のプロセッサであると決定し、前記第3のプロセッサによって実行されるべき実行待ち処理の数が第2のしきい値以下の場合、前記第1のプロセッサによって管理される前記新たな処理の前記実行先が前記第3のプロセッサであると決定し、
前記制御方法は、
前記コントローラを制御するプログラムを実行することと、
前記第1のプロセッサに対応する前記第1の管理部によって、前記新たな処理及び前記新たな処理の実行順序を管理することと、
前記第2のプロセッサに対応する前記第2の管理部によって、前記第2のプロセッサによって実行されるべき前記処理及び前記第2のプロセッサによって実行されるべき前記処理の実行順序を管理することと、
前記第3のプロセッサに対応する前記第3の管理部によって、前記第3のプロセッサによって実行されるべき前記処理及び前記第3のプロセッサによって実行されるべき前記処理の実行順序を管理することと、
前記第2の管理部によって管理されている処理の数が前記第1のしきい値以下の場合に、前記プログラムによって、前記第1の管理部によって管理されている前記新たな処理の管理先を、前記第1の管理部から前記第2の管理部へ変更することと、
前記第3の管理部によって管理されている処理の数が前記第2のしきい値以下の場合に、前記プログラムによって、前記第1の管理部によって管理されている前記新たな処理の前記管理先を、前記第1の管理部から前記第3の管理部へ変更することと、
を具備する、
請求項21の方法。 The controller includes first to third management units.
If the number of pending processes to be executed by the second processor by the first processor is less than or equal to a first threshold, the execution destination of the new process managed by the first processor Is determined to be the second processor and the number of pending processes to be executed by the third processor is less than or equal to a second threshold, the new number being managed by the first processor Determine that the execution destination of the process is the third processor,
The control method is
Executing a program for controlling the controller;
Managing the new processing and the execution order of the new processing by the first management unit corresponding to the first processor;
Managing the processing to be executed by the second processor and the execution order of the processing to be executed by the second processor by the second manager corresponding to the second processor;
Managing the processing to be executed by the third processor and the execution order of the processing to be executed by the third processor by the third manager corresponding to the third processor;
If the number of processes managed by the second management unit is less than or equal to the first threshold value, the management destination of the new process managed by the first management unit is selected by the program. Changing from the first management unit to the second management unit;
When the number of processes managed by the third management unit is less than or equal to the second threshold value, the management destination of the new process managed by the first management unit by the program Changing the first management unit to the third management unit;
Equipped with
22. The method of claim 21.
前記第1のプロセッサによって、前記第2のプロセッサによって実行されるべき実行待ち処理の数が第1のしきい値以下の場合、前記第1のプロセッサによって管理される前記新たな処理の前記実行先が前記第2のプロセッサであると決定し、前記第3のプロセッサによって実行されるべき実行待ち処理の数が第2のしきい値以下の場合、前記第1のプロセッサによって管理される前記新たな処理の前記実行先が前記第3のプロセッサであると決定し、
前記制御方法は、
前記コントローラを制御するプログラムを実行することと、
前記第1のプロセッサに対応する前記第1の管理部によって、前記新たな処理及び前記新たな処理の実行順序を管理することと、
前記第2のプロセッサに対応する前記第2の管理部によって、前記第2のプロセッサによって実行されるべき前記処理及び前記第2のプロセッサによって実行されるべき前記処理の実行順序を管理することと、
前記第3のプロセッサに対応する前記第3の管理部によって、前記第3のプロセッサによって実行されるべき前記処理及び前記第3のプロセッサによって実行されるべき前記処理の実行順序を管理することと、
前記第2の管理部によって管理されている処理の数が前記第1のしきい値以下の場合に、前記プログラムによって、前記第1の管理部によって管理されている前記新たな処理の管理先を、前記第1の管理部から前記第2の管理部へ変更することと、
前記第3の管理部によって管理されている処理の数が前記第2のしきい値以下の場合に、前記プログラムによって、前記第1の管理部によって管理されている前記新たな処理の前記管理先を、前記第1の管理部から前記第3の管理部へ変更することと、
を具備し、
前記プログラムは、前記コントローラの一部を示すハードウェア識別情報と関連付けられている処理を、前記第1乃至第3の管理部のうち前記ハードウェア識別情報に対応する管理部で管理する、
請求項21の制御方法。 The controller includes first to third management units.
If the number of pending processes to be executed by the second processor by the first processor is less than or equal to a first threshold, the execution destination of the new process managed by the first processor Is determined to be the second processor and the number of pending processes to be executed by the third processor is less than or equal to a second threshold, the new number being managed by the first processor Determine that the execution destination of the process is the third processor,
The control method is
Executing a program for controlling the controller;
Managing the new processing and the execution order of the new processing by the first management unit corresponding to the first processor;
Managing the processing to be executed by the second processor and the execution order of the processing to be executed by the second processor by the second manager corresponding to the second processor;
Managing the processing to be executed by the third processor and the execution order of the processing to be executed by the third processor by the third manager corresponding to the third processor;
If the number of processes managed by the second management unit is less than or equal to the first threshold value, the management destination of the new process managed by the first management unit is selected by the program. Changing from the first management unit to the second management unit;
When the number of processes managed by the third management unit is less than or equal to the second threshold value, the management destination of the new process managed by the first management unit by the program Changing the first management unit to the third management unit;
Equipped with
The program manages processing associated with hardware identification information indicating a part of the controller in a management unit corresponding to the hardware identification information among the first to third management units.
22. The control method of claim 21.
前記第1のプロセッサによって、前記第2のプロセッサによって実行されるべき実行待ち処理の数が第1のしきい値以下の場合、前記第1のプロセッサによって管理される前記新たな処理の前記実行先が前記第2のプロセッサであると決定し、前記第3のプロセッサによって実行されるべき実行待ち処理の数が第2のしきい値以下の場合、前記第1のプロセッサによって管理される前記新たな処理の前記実行先が前記第3のプロセッサであると決定し、
前記制御方法は、
前記コントローラを制御するプログラムを実行することと、
前記第1のプロセッサに対応する前記第1の管理部によって、前記新たな処理及び前記新たな処理の実行順序を管理することと、
前記第2のプロセッサに対応する前記第2の管理部によって、前記第2のプロセッサによって実行されるべき前記処理及び前記第2のプロセッサによって実行されるべき前記処理の実行順序を管理することと、
前記第3のプロセッサに対応する前記第3の管理部によって、前記第3のプロセッサによって実行されるべき前記処理及び前記第3のプロセッサによって実行されるべき前記処理の実行順序を管理することと、
前記第2の管理部によって管理されている処理の数が前記第1のしきい値以下の場合に、前記プログラムによって、前記第1の管理部によって管理されている前記新たな処理の管理先を、前記第1の管理部から前記第2の管理部へ変更することと、
前記第3の管理部によって管理されている処理の数が前記第2のしきい値以下の場合に、前記プログラムによって、前記第1の管理部によって管理されている前記新たな処理の前記管理先を、前記第1の管理部から前記第3の管理部へ変更することと、
第1の処理を、前記第2及び第3のプロセッサのうちのいずれかで実行することと、
第2の処理を、前記第2及び第3のプロセッサのうちのいずれかで、前記第1の処理の後に実行することと、
を具備し、
前記第1の処理は、前記第1の処理で使用される前記メモリ領域の少なくとも一部が前記第2の処理で使用される場合に、前記メモリ領域の少なくとも一部の領域情報を、前記第2の処理に通知する、
請求項21の制御方法。 The controller includes first to third management units.
If the number of pending processes to be executed by the second processor by the first processor is less than or equal to a first threshold, the execution destination of the new process managed by the first processor Is determined to be the second processor and the number of pending processes to be executed by the third processor is less than or equal to a second threshold, the new number being managed by the first processor Determine that the execution destination of the process is the third processor,
The control method is
Executing a program for controlling the controller;
Managing the new processing and the execution order of the new processing by the first management unit corresponding to the first processor;
Managing the processing to be executed by the second processor and the execution order of the processing to be executed by the second processor by the second manager corresponding to the second processor;
Managing the processing to be executed by the third processor and the execution order of the processing to be executed by the third processor by the third manager corresponding to the third processor;
If the number of processes managed by the second management unit is less than or equal to the first threshold value, the management destination of the new process managed by the first management unit is selected by the program. Changing from the first management unit to the second management unit;
When the number of processes managed by the third management unit is less than or equal to the second threshold value, the management destination of the new process managed by the first management unit by the program Changing the first management unit to the third management unit;
Executing a first process on any of the second and third processors;
Executing a second process on either of the second and third processors after the first process;
Equipped with
In the first process, when at least a part of the memory area used in the first process is used in the second process, area information of at least a part of the memory area is Notify process 2
22. The control method of claim 21.
前記第1のプロセッサによって、前記第2のプロセッサによって実行されるべき実行待ち処理の数が第1のしきい値以下の場合、前記第1のプロセッサによって管理される前記新たな処理の前記実行先が前記第2のプロセッサであると決定し、前記第3のプロセッサによって実行されるべき実行待ち処理の数が第2のしきい値以下の場合、前記第1のプロセッサによって管理される前記新たな処理の前記実行先が前記第3のプロセッサであると決定し、
前記制御方法は、
前記コントローラを制御するプログラムを実行することと、
前記第1のプロセッサに対応する前記第1の管理部によって、前記新たな処理及び前記新たな処理の実行順序を管理することと、
前記第2のプロセッサに対応する前記第2の管理部によって、前記第2のプロセッサによって実行されるべき前記処理及び前記第2のプロセッサによって実行されるべき前記処理の実行順序を管理することと、
前記第3のプロセッサに対応する前記第3の管理部によって、前記第3のプロセッサによって実行されるべき前記処理及び前記第3のプロセッサによって実行されるべき前記処理の実行順序を管理することと、
前記第2の管理部によって管理されている処理の数が前記第1のしきい値以下の場合に、前記プログラムによって、前記第1の管理部によって管理されている前記新たな処理の管理先を、前記第1の管理部から前記第2の管理部へ変更することと、
前記第3の管理部によって管理されている処理の数が前記第2のしきい値以下の場合に、前記プログラムによって、前記第1の管理部によって管理されている前記新たな処理の前記管理先を、前記第1の管理部から前記第3の管理部へ変更することと、
第1の処理を、前記第2及び第3のプロセッサのうちのいずれかで実行することと、
第2の処理を、前記第2及び第3のプロセッサのうちのいずれかで、前記第1の処理の後に実行することと、
第3の処理を、前記第2及び第3のプロセッサのうちのいずれかで、前記第2の処理の後に実行することと、
を具備し、
前記第2の処理は、前記第1の処理から、前記第1乃至第3の処理のうちの少なくとも1つを示す識別情報を受け、前記第2の処理で用いられる情報を、前記第1乃至第3の処理のうちの少なくとも1つに対応する前記共有メモリの第1のメモリ領域から読み出し、前記第2の処理の実行結果を、前記第1乃至第3の処理のうちの少なくとも1つに対応する第2のメモリ領域へ格納する、
請求項21の制御方法。 The controller includes first to third management units.
If the number of pending processes to be executed by the second processor by the first processor is less than or equal to a first threshold, the execution destination of the new process managed by the first processor Is determined to be the second processor and the number of pending processes to be executed by the third processor is less than or equal to a second threshold, the new number being managed by the first processor Determine that the execution destination of the process is the third processor,
The control method is
Executing a program for controlling the controller;
Managing the new processing and the execution order of the new processing by the first management unit corresponding to the first processor;
Managing the processing to be executed by the second processor and the execution order of the processing to be executed by the second processor by the second manager corresponding to the second processor;
Managing the processing to be executed by the third processor and the execution order of the processing to be executed by the third processor by the third manager corresponding to the third processor;
If the number of processes managed by the second management unit is less than or equal to the first threshold value, the management destination of the new process managed by the first management unit is selected by the program. Changing from the first management unit to the second management unit;
When the number of processes managed by the third management unit is less than or equal to the second threshold value, the management destination of the new process managed by the first management unit by the program Changing the first management unit to the third management unit;
Executing a first process on any of the second and third processors;
Executing a second process on either of the second and third processors after the first process;
Executing a third process on either of the second and third processors after the second process;
Equipped with
The second process receives identification information indicating at least one of the first to third processes from the first process, and uses information to be used in the second process as the first to third processes. The first memory area of the shared memory corresponding to at least one of the third processes is read, and the execution result of the second process is stored in at least one of the first to third processes. Store in the corresponding second memory area
22. The control method of claim 21.
請求項25の制御方法。 In the second process, information used in the second process is read out from a memory area corresponding to the first process, and a result of execution of the second process is a memory area corresponding to the third process. To store,
The control method of claim 25.
前記第1のプロセッサによって、新たな処理の実行先を決定し、前記新たな処理は、実行待ちであり、前記第1乃至第3のプロセッサのいずれでも実行可能であるが未割り当てである、ことと、
前記コントローラによって、実行前の処理に対して、前記実行前の処理で使用される共有メモリのメモリ領域を割り当て、前記共有メモリは前記第1乃至第3のプロセッサで共有される、ことと、
第1の処理を、前記第2及び第3のプロセッサのうちのいずれかで実行することと、
第2の処理を、前記第2及び第3のプロセッサのうちのいずれかで、前記第1の処理の後に実行することと、
第3の処理を、前記第2及び第3のプロセッサのうちのいずれかで、前記第2の処理の後に実行することと、
を具備し、
前記制御方法は、前記第2の処理において、前記第1の処理から、前記第1乃至第3の処理のうちの少なくとも1つを示す識別情報を受けることと、前記第2の処理で用いられる情報を、前記第1乃至第3の処理のうちの少なくとも1つに対応する前記共有メモリの第1のメモリ領域から読み出すことと、前記第2の処理の実行結果を、前記第1乃至第3の処理のうちの少なくとも1つに対応する第2のメモリ領域へ格納することと、を具備する、
制御方法。 A control method of non-volatile memory comprising a controller including first to third processors, comprising:
The first processor determines the execution destination of a new process, and the new process is awaiting execution and can be executed by any of the first to third processors but is not allocated. When,
Assigning the memory area of the shared memory used in the pre-execution processing to the pre-execution processing by the controller, wherein the shared memory is shared by the first to third processors;
Executing a first process on any of the second and third processors;
Executing a second process on either of the second and third processors after the first process;
Executing a third process on either of the second and third processors after the second process;
Equipped with
The control method is used in the second process, receiving, from the first process, identification information indicating at least one of the first to third processes in the second process. Reading out information from a first memory area of the shared memory corresponding to at least one of the first to third processes, and execution results of the second process, the first to third Storing in a second memory area corresponding to at least one of the processes of
Control method.
前記第2の処理において、前記第1の処理に対応するメモリ領域から前記第2の処理で用いられる情報を読み出すことと、前記第2の処理の実行結果を、前記第3の処理に対応するメモリ領域へ格納することと、を具備する、
請求項27の制御方法。 If the number of pending processes to be executed by the second processor by the first processor is less than or equal to a first threshold, the execution destination of the new process managed by the first processor Is determined to be the second processor and the number of pending processes to be executed by the third processor is less than or equal to a second threshold, the new number being managed by the first processor Determine that the execution destination of the process is the third processor,
In the second process, reading information used in the second process from a memory area corresponding to the first process, and an execution result of the second process correspond to the third process. Storing in a memory area;
The control method of claim 27.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015007963 | 2015-01-19 | ||
JP2015007963 | 2015-01-19 | ||
JP2015110444 | 2015-05-29 | ||
JP2015110444 | 2015-05-29 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016006026A Division JP6483631B2 (en) | 2015-01-19 | 2016-01-15 | Memory device and control program |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019091492A true JP2019091492A (en) | 2019-06-13 |
Family
ID=56466209
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016006026A Active JP6483631B2 (en) | 2015-01-19 | 2016-01-15 | Memory device and control program |
JP2019023362A Pending JP2019091492A (en) | 2015-01-19 | 2019-02-13 | Memory device and method of controlling nonvolatile memory |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016006026A Active JP6483631B2 (en) | 2015-01-19 | 2016-01-15 | Memory device and control program |
Country Status (2)
Country | Link |
---|---|
JP (2) | JP6483631B2 (en) |
CN (2) | CN109471812B (en) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6538741B2 (en) * | 2017-03-09 | 2019-07-03 | 株式会社東芝 | Management apparatus, information processing apparatus and management method |
JP7048638B2 (en) * | 2017-11-16 | 2022-04-05 | 株式会社日立産機システム | Control device |
JP6967959B2 (en) * | 2017-12-08 | 2021-11-17 | キオクシア株式会社 | Memory system and control method |
JP6443571B1 (en) | 2018-02-02 | 2018-12-26 | 富士通株式会社 | Storage control device, storage control method, and storage control program |
KR20200037584A (en) | 2018-10-01 | 2020-04-09 | 에스케이하이닉스 주식회사 | Memory system, operation method thereof and database system including the memory system |
JP2020149236A (en) * | 2019-03-12 | 2020-09-17 | キオクシア株式会社 | Electronic apparatus and control method for electronic apparatus |
JP2020149526A (en) * | 2019-03-15 | 2020-09-17 | 株式会社東芝 | Processing apparatus, processing method and program |
JP7203653B2 (en) * | 2019-03-20 | 2023-01-13 | キオクシア株式会社 | Storage device and information processing equipment |
CN111835593B (en) * | 2020-07-14 | 2022-06-03 | 杭州海康威视数字技术股份有限公司 | Detection method based on nonvolatile storage medium, storage medium and electronic equipment |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04314141A (en) * | 1991-04-12 | 1992-11-05 | Nec Software Ltd | Method and mechanism for controlling multi-task |
JP2007048052A (en) * | 2005-08-10 | 2007-02-22 | Internatl Business Mach Corp <Ibm> | Compiler, control method and compiler program |
JP2007047968A (en) * | 2005-08-09 | 2007-02-22 | Olympus Corp | Multiprocessor system |
US20100262738A1 (en) * | 2009-04-08 | 2010-10-14 | Google Inc. | Command and interrupt grouping for a data storage device |
WO2011161831A1 (en) * | 2010-06-25 | 2011-12-29 | 富士通株式会社 | Multi-processor system and scheduling method |
WO2013001613A1 (en) * | 2011-06-28 | 2013-01-03 | 富士通株式会社 | Scheduling method and system |
WO2013051067A1 (en) * | 2011-10-07 | 2013-04-11 | 株式会社日立製作所 | Computer and computer-control method |
US20140281265A1 (en) * | 2013-03-15 | 2014-09-18 | Fusion-Io | Write admittance policy for a memory cache |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5031089A (en) * | 1988-12-30 | 1991-07-09 | United States Of America As Represented By The Administrator, National Aeronautics And Space Administration | Dynamic resource allocation scheme for distributed heterogeneous computer systems |
TWI261198B (en) * | 2003-02-20 | 2006-09-01 | Samsung Electronics Co Ltd | Simultaneous multi-threading processor circuits and computer program products configured to operate at different performance levels based on a number of operating threads and methods of operating |
JP4407431B2 (en) * | 2004-08-30 | 2010-02-03 | 株式会社日立製作所 | Computer system and bandwidth control method for computer system |
US20060136878A1 (en) * | 2004-12-17 | 2006-06-22 | Arun Raghunath | Method and apparatus for enabling compiler and run-time optimizations for data flow applications in multi-core architectures |
US8176362B2 (en) * | 2008-03-24 | 2012-05-08 | International Business Machines Corporation | Online multiprocessor system reliability defect testing |
US8639862B2 (en) * | 2009-07-21 | 2014-01-28 | Applied Micro Circuits Corporation | System-on-chip queue status power management |
JP5377182B2 (en) * | 2009-09-10 | 2013-12-25 | 株式会社東芝 | Control device |
US8949565B2 (en) * | 2009-12-27 | 2015-02-03 | Intel Corporation | Virtual and hidden service partition and dynamic enhanced third party data store |
TWI447735B (en) * | 2010-02-05 | 2014-08-01 | Phison Electronics Corp | Memory management and writing method and rewritable non-volatile memory controller and storage system thereof |
JP5010723B2 (en) * | 2010-09-22 | 2012-08-29 | 株式会社東芝 | Semiconductor memory control device |
JP5002719B1 (en) * | 2011-03-10 | 2012-08-15 | 株式会社東芝 | Information processing device, external storage device, host device, relay device, control program, and information processing device control method |
TWI521343B (en) * | 2011-08-01 | 2016-02-11 | Toshiba Kk | An information processing device, a semiconductor memory device, and a semiconductor memory device |
JP2013069047A (en) * | 2011-09-21 | 2013-04-18 | Toshiba Corp | Memory system |
US8713204B2 (en) * | 2011-12-27 | 2014-04-29 | Apple Inc. | High-performance AHCI interface |
JP5892000B2 (en) * | 2012-08-24 | 2016-03-23 | ソニー株式会社 | STORAGE CONTROL DEVICE, NONVOLATILE MEMORY, AND MEMORY CONTROL METHOD |
US20140068378A1 (en) * | 2012-08-31 | 2014-03-06 | Kabushiki Kaisha Toshiba | Semiconductor storage device and memory controller |
US10037497B2 (en) * | 2013-06-28 | 2018-07-31 | Rakuten, Inc. | Information provision device, information provision method, and information provision program |
JP5649709B2 (en) * | 2013-10-29 | 2015-01-07 | 株式会社東芝 | MEMORY SYSTEM, NONVOLATILE MEMORY DEVICE, NONVOLATILE MEMORY DEVICE CONTROL METHOD AND PROGRAM |
-
2015
- 2015-10-12 CN CN201811516613.5A patent/CN109471812B/en active Active
- 2015-10-12 CN CN201510655321.XA patent/CN105808444B/en active Active
-
2016
- 2016-01-15 JP JP2016006026A patent/JP6483631B2/en active Active
-
2019
- 2019-02-13 JP JP2019023362A patent/JP2019091492A/en active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04314141A (en) * | 1991-04-12 | 1992-11-05 | Nec Software Ltd | Method and mechanism for controlling multi-task |
JP2007047968A (en) * | 2005-08-09 | 2007-02-22 | Olympus Corp | Multiprocessor system |
JP2007048052A (en) * | 2005-08-10 | 2007-02-22 | Internatl Business Mach Corp <Ibm> | Compiler, control method and compiler program |
US20100262738A1 (en) * | 2009-04-08 | 2010-10-14 | Google Inc. | Command and interrupt grouping for a data storage device |
JP2012523619A (en) * | 2009-04-08 | 2012-10-04 | グーグル インコーポレイテッド | Data storage device command and interrupt grouping |
WO2011161831A1 (en) * | 2010-06-25 | 2011-12-29 | 富士通株式会社 | Multi-processor system and scheduling method |
WO2013001613A1 (en) * | 2011-06-28 | 2013-01-03 | 富士通株式会社 | Scheduling method and system |
WO2013051067A1 (en) * | 2011-10-07 | 2013-04-11 | 株式会社日立製作所 | Computer and computer-control method |
US20140281265A1 (en) * | 2013-03-15 | 2014-09-18 | Fusion-Io | Write admittance policy for a memory cache |
Also Published As
Publication number | Publication date |
---|---|
CN105808444B (en) | 2019-01-01 |
JP2016207195A (en) | 2016-12-08 |
CN105808444A (en) | 2016-07-27 |
CN109471812B (en) | 2023-09-05 |
JP6483631B2 (en) | 2019-03-13 |
CN109471812A (en) | 2019-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6483631B2 (en) | Memory device and control program | |
US11042331B2 (en) | Memory device managing data in accordance with command and non-transitory computer readable recording medium | |
KR102268722B1 (en) | Data access apparatus and operating method thereof | |
KR102371916B1 (en) | Storage device for supporting virtual machines, storage system including the storage device, and method of the same | |
US10248322B2 (en) | Memory system | |
CN105917308B (en) | Subregion be include metadata area multiple regions byte-addressable non-volatile read-write main memory | |
US11099775B2 (en) | Data storage device and data storage method | |
KR20210024195A (en) | NVMe direct virtualization with configurable storage | |
US9032411B2 (en) | Logical extended map to demonstrate core activity including L2 and L3 cache hit and miss ratio | |
CN113795828B (en) | Service class of multifunctional device | |
US9454481B2 (en) | Affinity group access to global data | |
JP2022552393A (en) | Direct data access between accelerators and storage in computing environments | |
CN110647359B (en) | Semiconductor device, method of operating the same, and stacked memory device having the same | |
US10171370B1 (en) | Distribution operating system | |
US11593003B2 (en) | Method and systems for recommending storage management actions based on capacities of storage systems | |
CN104714843B (en) | More kernel operating system instances support the method and device of multiprocessor | |
US11003378B2 (en) | Memory-fabric-based data-mover-enabled memory tiering system | |
US10579392B2 (en) | System and method for mapping physical memory with mixed storage class memories | |
US20230266992A1 (en) | Processor for managing resources using dual queues, and operating method thereof | |
TWI506436B (en) | Substitute virtualized-memory page tables | |
US9304921B2 (en) | Affinity group access to global data | |
KR20210043001A (en) | Hybrid memory system interface | |
KR20200028694A (en) | Control method of memory using priority of master bus |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20190213 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20191025 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20191203 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20200203 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20200908 |