JP2019091492A - Memory device and method of controlling nonvolatile memory - Google Patents

Memory device and method of controlling nonvolatile memory Download PDF

Info

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
Application number
JP2019023362A
Other languages
Japanese (ja)
Inventor
菅野 伸一
Shinichi Sugano
伸一 菅野
西村 裕史
Yasushi Nishimura
裕史 西村
吉田 英樹
Hideki Yoshida
英樹 吉田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Toshiba Memory Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Toshiba Memory Corp filed Critical Toshiba Memory Corp
Publication of JP2019091492A publication Critical patent/JP2019091492A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Stored Programmes (AREA)

Abstract

To provide a highly convenient memory device.SOLUTION: A memory device 3 includes a nonvolatile memory 5, and a controller 4 for controlling the nonvolatile memory. The controller includes first to third processors. The first processor determines a processor to execute a new queued process which can be executed in any of the first to third processors. The controller determines at least one of new processes having the execution processor determined by the first processor, so as to be executed next by one of the second and third processors, on the basis of priority information including priority on the new processes.SELECTED DRAWING: Figure 1

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.

特開2012−141944号公報JP, 2012-141944, A

本実施形態は、利便性の高いメモリ装置及び不揮発性メモリの制御方法を提供する。   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.

第1の実施形態に係る情報処理システムの構成の一例を示すブロック図。FIG. 1 is a block diagram showing an example of a configuration of an information processing system according to a first embodiment. 第1の実施形態に係る制御プログラムの構成の一例を示すブロック図。FIG. 2 is a block diagram showing an example of the configuration of a control program according to the first embodiment. 第1の実施形態に係るメモリ装置の組み込み状態の一例を示すブロック図。FIG. 2 is a block diagram showing an example of a built-in state of the memory device according to the first embodiment. 第1の実施形態に係る情報処理システムの構成要素間の関係の一例を示すブロック図。The block diagram which shows an example of the relationship between the components of the information processing system which concerns on 1st Embodiment. 第1の実施形態に係る制御プログラム及びハードウェア部によって実行される処理の一例を示すフローチャート。5 is a flowchart showing an example of processing executed by a control program and a hardware unit according to the first embodiment. 第2の実施形態に係る情報処理システムの構成要素間の関係の一例を示すブロック図。The block diagram which shows an example of the relationship between the components of the information processing system which concerns on 2nd Embodiment. 第3の実施形態に係るメモリ装置の構成要素間の関係の一例を示すブロック図。FIG. 10 is a block diagram showing an example of the relationship between components of a memory device according to a third embodiment. 第3の実施形態に係るプロセッサ及びメモリの関係の一例を示すブロック図。FIG. 13 is a block diagram showing an example of the relationship between a processor and a memory according to a third embodiment. 第3の実施形態に係るスケジューラの第1の処理の一例を示すフローチャート。The flowchart which shows an example of the 1st process of the scheduler which concerns on 3rd Embodiment. 第3の実施形態に係るスケジューラの第2の処理の一例を示すフローチャート。The flowchart which shows an example of 2nd process of the scheduler which concerns on 3rd Embodiment. 第3の実施形態に係るタスク間の領域情報の通知状態の一例を示すブロック図。A block diagram showing an example of a notice state of field information between tasks concerning a 3rd embodiment. 第3の実施形態に係るタスク及びメモリ領域の関係の一例を示すブロック図。FIG. 13 is a block diagram showing an example of the relationship between tasks and memory areas according to the third embodiment. 第4の実施形態に係る情報処理システムの詳細構成の一例を示すブロック図。FIG. 13 is a block diagram showing an example of a detailed configuration of an information processing system according to a fourth embodiment. 第4の実施形態に係るストレージシステムの一例を示す斜視図。FIG. 14 is a perspective view showing an example of a storage system according to a fourth embodiment. 第5の実施形態に係るソフトウェア定義型プラットフォームの構成の一例を示すブロック図。FIG. 16 is a block diagram showing an example of the configuration of a software defined platform according to the fifth embodiment. 第5の実施形態に係るソフトウェア定義型SSDプラットフォームで実現される2種類のスケジューリングを例示する図。The figure which illustrates two types of scheduling implement | achieved by the software defined SSD platform which concerns on 5th Embodiment. 第5の実施形態に係るメモリ装置の各階層で保持されるパラメータの例を示す図。FIG. 16 is a view showing an example of parameters held in each layer of the memory device according to the fifth embodiment; 第5の実施形態に係るスケジューリングの一例を示すフローチャート。The flowchart which shows an example of the scheduling which concerns on 5th Embodiment. 第5の実施形態に係るスケジューリングの第1の例を示す図。The figure which shows the 1st example of the scheduling which concerns on 5th Embodiment. 第5の実施形態に係るスケジューリングの第2の例を示す図。The figure which shows the 2nd example of the scheduling which concerns on 5th Embodiment. 第5の実施形態に係るスケジューリングの第3の例を示す図。A figure showing the 3rd example of scheduling concerning a 5th embodiment. 第5の実施形態に係るタスクチェーンの例を示す図。The figure which shows the example of the task chain which concerns on 5th Embodiment. 第5の実施形態に係るタスク間での情報の受け渡しの例を示す図。The figure which shows the example of delivery of the information between the tasks which concern on 5th Embodiment. 第5の実施形態に係るタスクに対応する作業領域の例を示す図。The figure which shows the example of the work area corresponding to the task which concerns on 5th Embodiment. 第5の実施形態に係るHALによる通信の例を示すフローチャート。The flowchart which shows the example of the communication by HAL which concerns on 5th Embodiment. 第5の実施形態に係るHALによる通信の例を示すブロック図。The block diagram which shows the example of the communication by HAL which concerns on 5th Embodiment. 第5の実施形態に係るNANDフラッシュドライバに対するHAL APIに準拠した処理の例を示すフローチャート。16 is a flowchart showing an example of processing compliant with the HAL API for the NAND flash driver according to the fifth embodiment. 第5の実施形態に係るNANDフラッシュドライバに対するHAL APIの例を示すブロック図。FIG. 13 is a block diagram showing an example of a HAL API for a NAND flash driver according to a fifth embodiment. 第5の実施形態に係るNCQを用いたタスクの割り当ての例を示すブロック図。FIG. 16 is a block diagram showing an example of task assignment using an NCQ according to a fifth embodiment. 第5の実施形態に係るソフトウェア定義型SSDプラットフォームの機能の一例を示すブロック図。The block diagram which shows an example of the function of the software defined type SSD platform concerning a 5th embodiment.

以下、図面を参照しながら各実施形態について説明する。以下の説明において、略同一の機能及び構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。   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 information processing system 1 includes an information processing device 2 and a memory device 3. The information processing device 2 can operate as a host device corresponding to the memory device 3.

メモリ装置3は、情報処理装置2に内蔵されてもよく、情報処理装置2とメモリ装置3とは、ネットワークなどによりデータを送受信可能に接続されるとしてもよい。メモリ装置3は、複数の情報処理装置2と通信可能に接続されてもよい。また、複数のメモリ装置3が、1以上の情報処理装置2と通信可能に接続されてもよい。   The memory device 3 may be built in the information processing device 2, and the information processing device 2 and the memory device 3 may be connected to be able to transmit and receive data via a network or the like. The memory device 3 may be communicably connected to the plurality of information processing devices 2. Also, a plurality of memory devices 3 may be communicably connected to one or more information processing devices 2.

メモリ装置3は、制御回路の一例としてのコントローラ4と、不揮発性メモリ5とを含む。コントローラ4と不揮発性メモリ5とは、着脱可能とし、メモリ装置3のメモリ容量は自由に拡張できるとしてもよい。ここで、メモリ容量とは、メモリに書き込み可能な最大のデータ量とする。   The memory device 3 includes a controller 4 as an example of a control circuit and a non-volatile memory 5. The controller 4 and the non-volatile memory 5 may be detachable, and the memory capacity of the memory device 3 may be freely expanded. Here, the memory capacity is the maximum amount of data that can be written to the memory.

コントローラ4のハードウェア部は、インタフェース部6、メモリ7A,7B、プロセッサP0〜PN、メモリコントローラ9を含む。コントローラ4は、例えば不揮発性メモリ5と電気的に接続される。本実施形態においては、コントローラ4が複数のプロセッサP0〜PNを備える場合を例として説明するが、コントローラ4に備えられるプロセッサの数は1以上で自由に変更可能である。   The hardware unit of the controller 4 includes an interface unit 6, memories 7A and 7B, processors P0 to PN, and a memory controller 9. The controller 4 is electrically connected to, for example, the non-volatile memory 5. In the present embodiment, a case where the controller 4 includes a plurality of processors P0 to PN will be described as an example, but the number of processors provided in the controller 4 can be freely changed to one or more.

インタフェース部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 information processing device 2 and controls transmission to the external device.

メモリ7Aは、作業用メモリとして使用される。メモリ7Aは、例えばプロセッサP0〜PNによる処理対象のプログラム、データ、情報などを格納する。メモリ7Aは、例えばDRAM(Dynamic Random Access Memory)又はSRAM(Static Random Access Memory)などのような揮発性メモリでもよく、又は、不揮発性メモリでもよい。   The memory 7A is used as a working memory. The memory 7A stores, for example, a program to be processed by the processors P0 to PN, data, information, and the like. The memory 7A may be a volatile memory such as, for example, a dynamic random access memory (DRAM) or a static random access memory (SRAM), or may be a non-volatile memory.

メモリ7Bは例えば不揮発性メモリとする。しかしながら、メモリ7Bの一部は揮発性メモリでもよい。メモリ7Bは、アドレス変換データ10、制御プログラム11、プログラムF0〜FMを格納する。なお、アドレス変換データ10、制御プログラム11、プログラムF0〜FMの一部又は全部は、プロセッサP0〜PN内のメモリ、メモリ7A、不揮発性メモリ5などのような他のメモリに格納されていてもよい。   The memory 7B is, for example, a non-volatile memory. However, part of the memory 7B may be volatile memory. The memory 7B stores the address conversion data 10, the control program 11, and the programs F0 to FM. Even if part or all of the address conversion data 10, the control program 11, and the programs F0 to FM are stored in other memories such as the memories in the processors P0 to PN, the memory 7A, and the non-volatile memory 5 Good.

図1の例では、コントローラ4が複数のプログラムF0〜FMを備える場合を例として説明するが、コントローラ4に備えられるプログラムの数は1以上で自由に変更可能である。   In the example of FIG. 1, although the case where the controller 4 is equipped with several program F0-FM is demonstrated as an example, the number of the programs with which the controller 4 is equipped can be freely changed by 1 or more.

アドレス変換データ10は、書き込みデータ又は読み出しデータの論理アドレス(例えばLogical Block Addressing(LBA))と物理アドレス(例えばPhysical Block Addressing(PBA))とを関係付けたデータであり、例えばLUT(Look Up Table)である。アドレス変換データ10は、テーブル形式のデータ構造を持つとしてもよく、例えばリスト形式などのような他のデータ構造を持つとしてもよい。   The address conversion data 10 is data in which a logical address (for example, Logical Block Addressing (LBA)) of write data or read data and a physical address (for example, Physical Block Addressing (PBA)) are associated, for example, LUT (Look Up Table) ). The address conversion data 10 may have a data structure in a table format, or may have another data structure such as a list format.

本実施形態に係るソフトウェア定義型プラットフォームは、制御プログラム11、コントローラ4のハードウェア部、不揮発性メモリ5を含む。例えば、メモリ装置3がSSDの場合、制御プログラム11、コントローラ4のハードウェア部、不揮発性メモリ5は、ソフトウェア定義型のSSDプラットフォーム(メモリ装置プラットフォーム)である。ソフトウェア定義型のSSDプラットフォームを用いることで、SSDの機能をハードウェアの制御から切り離して、ソフトウェア制御可能である。   The software-defined platform according to the present embodiment includes a control program 11, a hardware unit of the controller 4, and a non-volatile memory 5. For example, when the memory device 3 is an SSD, the control program 11, the hardware unit of the controller 4, and the non-volatile memory 5 are software-defined SSD platforms (memory device platforms). By using a software-defined SSD platform, the functions of the SSD can be separated from hardware control and software controlled.

本実施形態において、プラットフォームとは、ハードウェア又はソフトウェアを動作させるために必要な基盤となるハードウェア、オペレーティングシステム(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 control program 11 and the programs F0 to FM. The processors P0 to PN include management units C0 to CN, respectively. However, the processors P0 to PN and the management units C0 to CN may be separately configured. In the present embodiment, the processor P0 is a master's processor, and the processors P1 to PN are slave processors that operate dependent on the master. The processor P0 may include a function as a subordinate processor in the same manner as the processors P1 to PN in addition to the function as a master processor. For example, queues may be used as the management units C0 to CN, and the execution waiting tasks may be managed in a first-in first-out manner. However, the execution waiting tasks in the management units C0 to CN may be managed according to other criteria, such as high priority tasks being executed among the plurality of execution waiting tasks, for example.

制御プログラム11は、ハードウェア部を抽象化する。例えば、ハードウェア部の抽象化は、プログラムF0〜FMと制御プログラム11との間でやり取りされるデータ、情報、信号、コマンド、メッセージ、リクエスト、指令などが特定のインタフェースに準拠することで実現される。例えば、プログラムF0〜FMは、特定のインタフェースに準拠したコマンドを制御プログラム11に発行することで、制御プログラム11によって実現される機能を使用可能である。制御プログラム11は、プログラムF0〜FMによって発行された特定のインタフェースに準拠するコマンドにしたがってハードウェア部に対して処理を実行し、又は、プログラムF0〜FMから受けた特定のインタフェースに準拠する情報をハードウェア部に対応する形式の情報に変換する。   The control program 11 abstracts the hardware part. For example, abstraction of the hardware part is realized by conforming data, information, signals, commands, messages, requests, instructions, etc. exchanged between the programs F0 to FM and the control program 11. Ru. For example, the programs F0 to FM can use functions implemented by the control program 11 by issuing a command conforming to a specific interface to the control program 11. The control program 11 executes processing on the hardware unit in accordance with a command conforming to the specific interface issued by the program F0 to FM, or information conforming to the specific interface received from the program F0 to FM Convert to information in the format corresponding to the hardware part.

本実施形態において、特定のインタフェースは、例えば、一方のプログラムが他方のプログラムを利用するために定義されている規約及び手順である。より具体的には、特定のインタフェースは、例えば、あるプログラムの機能及び管理するデータなどを、他のプログラムから呼び出し、呼び出された機能及び管理するデータなどを利用するための手順及びデータ形式などを定めた規約である。   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 control program 11 implements basic operations between the programs F0 to FM and the hardware unit so that the programs F0 to FM become independent of the hardware unit such as the controller 4 of the memory device 3, It is a common module that absorbs differences in hardware. In the present embodiment, independence is at least a property that can continue to be used even if the other cooperating software or hardware is replaced. Therefore, the control program 11 conforms to an API (Application Programming Interface), a logical interface such as an LBA interface, and a physical interface such as an PBA interface. For example, the control program 11 can exchange data, information, signals, commands, messages, requests, instructions, and the like with a replaceable SSD module independent of the hardware unit using an API and a logical interface. For example, the modules 131 to 136 of FIG. 4 described later may be SSD modules.

本実施形態において、例えば、物理インタフェースは、ハードウェアインタフェースでもよい。   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 control program 11 is issued by one of the programs F0 to FM according to a specific interface defined to receive commands, information, data, etc. when executed by the hardware part of the controller 4 In response to the command, the controller 4 includes a driver that executes control on the hardware unit of the controller 4 and the non-volatile memory 5 according to the command, and causes the hardware unit of the controller 4 to access the non-volatile memory 5.

また、制御プログラム11は、不揮発性メモリ5に対する管理情報を管理し、特定のインタフェースにしたがってプログラムF0〜FMのうちのいずれかによって発行された管理情報の出力コマンドを受けた場合に、管理情報を出力コマンドの発行元へ送る。   In addition, the control program 11 manages management information for the non-volatile memory 5, and when receiving an output command of management information issued by any of the programs F0 to FM according to a specific interface, Send to the output command issuer.

さらに、制御プログラム11は、特定のインタフェースにしたがってプログラムF0〜FMのうちのいずれかによって発行された不揮発性メモリ5に対する処理の設定情報を受けた場合に、設定情報にしたがって不揮発性メモリ5に対する処理を実行する。   Further, when control program 11 receives setting information for processing for nonvolatile memory 5 issued by any of programs F0 to FM according to a specific interface, processing for nonvolatile memory 5 according to the setting information Run.

本実施形態において、プログラム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 control program 11 performs, for example, task scheduling. Thus, the processor P0 monitors the states of the management units C1 to CN provided in the processors P1 to PN, and the management unit C1 to CN having a small number of tasks waiting for tasks managed by the management unit C0. Allocate to one. The respective processors P1 to PN execute tasks managed by the management units C1 to CN.

本実施形態において、メモリ7A,7Bにおける制御プログラム11の格納位置、プログラムF0〜FMの格納位置、制御プログラム11の作業領域の位置、各プログラムF0〜FMの作業領域の位置は、メモリ装置3の起動時に決定され、その後起動中は再配置されない。これにより、再配置のための時間が不要となり、処理を高速化することができる。   In the present embodiment, the storage position of the control program 11 in the memories 7A and 7B, the storage position of the programs F0 to FM, the position of the work area of the control program 11, and the position of the work area of each program F0 to FM It is determined at boot time and is not relocated during boot up. This eliminates the need for time for relocation, and can speed up the process.

プログラム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 control program 11 by using the API, and operate in cooperation with the control program 11. The programs F0 to FM are, for example, various software such as firmware, application programs, modules, or handlers. For example, a handler is a program that is activated when a processing request occurs. In the present embodiment, the programs F0 to FM will be described by taking the case of firmware as an example, but the types of the programs F0 to FM are not limited to this. In the present embodiment, the programs F0 to FM may be, for example, a program created by the user of the memory device 3 or a program created by the maker of the memory device 3.

例えば、プロセッサP0〜PNは、制御プログラム11とプログラムF0〜FMとの協働により、受付部81、アドレス変換部82、書き込み部83、読み出し部84として機能する。   For example, the processors P0 to PN function as a reception unit 81, an address conversion unit 82, a writing unit 83, and a reading unit 84 by cooperation of the control program 11 and the programs F0 to FM.

プログラムF0〜FMと制御プログラム11とがメモリ装置3において協働して動作するため、プログラムF0〜FMのソフトウェア開発者は、メモリ装置3のハードウェア部を考慮することなく、プログラムF0〜FMを生成することができる。   Since the programs F0 to FM and the control program 11 operate in cooperation with each other in the memory device 3, the software developer of the programs F0 to FM does not consider the programs F0 to FM without considering the hardware part of the memory device 3. Can be generated.

メモリコントローラ9は、不揮発性メモリ5に対するアクセスを制御する。   The memory controller 9 controls access to the non-volatile memory 5.

データ書き込み時に、情報処理装置2は、メモリ装置3へ、書き込みコマンドと、書き込みデータと、書き込みデータを示す論理アドレスとを送信する。   At the time of data writing, the information processing device 2 transmits a write command, write data, and a logical address indicating the write data to the memory device 3.

プロセッサP0〜PNで実現される受付部81は、情報処理装置2からインタフェース部6経由で、書き込みコマンド、書き込みデータ、論理アドレスを受ける。   The receiving unit 81 realized by the processors P0 to PN receives a write command, write data, and a logical address from the information processing device 2 via the interface unit 6.

アドレス変換部82は、受付部81によって書き込みコマンドが受け付けられた場合に、アドレス変換データ10に対して、書き込みコマンドに付されていた論理アドレスを、不揮発性メモリ5の物理アドレスに変換するための関係付けを行う。   The address conversion unit 82 converts the logical address attached to the write command into the physical address of the non-volatile memory 5 with respect to the address conversion data 10 when the reception unit 81 receives the write command. Relate.

書き込み部83は、メモリコントローラ9経由で、アドレス変換部82によって得られた不揮発性メモリ5の物理アドレスの示す位置に、書き込みデータを書き込む。   The writing unit 83 writes the write data to the position indicated by the physical address of the non-volatile memory 5 obtained by the address conversion unit 82 via the memory controller 9.

データ読み出し時に、情報処理装置2は、メモリ装置3へ、読み出しコマンドと、読み出しデータを示す論理アドレスとを送信する。   At the time of data read, the information processing device 2 transmits a read command and a logical address indicating read data to the memory device 3.

受付部81は、情報処理装置2からインタフェース部6経由で、読み出しコマンドと論理アドレスとを受ける。   The receiving unit 81 receives a read command and a logical address from the information processing device 2 via the interface unit 6.

アドレス変換部82は、受付部81によって読み出しコマンドが受け付けられた場合に、アドレス変換データ10を用いて、読み出しコマンドに付されていた論理アドレスを物理アドレスに変換する。   When the receiving unit 81 receives a read command, the address conversion unit 82 converts the logical address attached to the read command into a physical address using the address conversion data 10.

読み出し部84は、メモリコントローラ9経由で、不揮発性メモリ5の物理アドレスの示す位置から、読み出しデータを読み出す。そして、読み出し部84は、読み出しデータを、インタフェース部6経由で、情報処理装置2に送る。   The reading unit 84 reads the read data from the position indicated by the physical address of the non-volatile memory 5 via the memory controller 9. Then, the reading unit 84 sends the read data to the information processing device 2 via the interface unit 6.

図2は、本実施形態に係る制御プログラム11の構成の一例を示すブロック図である。   FIG. 2 is a block diagram showing an example of the configuration of the control program 11 according to the present embodiment.

制御プログラム11は、APIに準拠している。このため、プログラムF0〜FMは制御プログラム11の各種の機能を使用可能である。ここで、APIとは、例えば、複数のプログラムが互いにデータ、情報、信号、コマンド、メッセージ、リクエスト、指令などをやり取りするために使用する仕様である。APIは、例えば、サブルーチン、データ構造、オブジェクトクラス、変数などの仕様を含む。   The control program 11 conforms to the API. Therefore, the programs F0 to FM can use various functions of the control program 11. Here, the API is, for example, a specification used by a plurality of programs to exchange data, information, signals, commands, messages, requests, instructions, etc. with each other. The API includes, for example, specifications such as subroutines, data structures, object classes, and variables.

また、制御プログラム11は,論理インタフェース、及び物理インタフェースに準拠している。このため、メモリ装置3は、典型的なSSDと同様の動作を実現可能である。ここで、論理インタフェースは、例えば、ソフトウェアとの間で論理アドレスを扱う際の仕様である。物理インタフェースは、例えば、ハードウェアとの間で物理アドレスを扱う際の仕様である。
例えば、制御プログラム11は、モジュール間通信部111、優先制御部112、割り込みハンドラ113、アクセス部114、情報管理部115、ハードウェアドライバ116、処理実行部117を含む。
Also, the control program 11 conforms to the logical interface and the physical interface. Therefore, the memory device 3 can realize the same operation as a typical SSD. Here, the logical interface is, for example, a specification for handling a logical address with software. The physical interface is, for example, a specification for handling a physical address with hardware.
For example, the control program 11 includes an inter-module communication unit 111, a priority control unit 112, an interrupt handler 113, an access unit 114, an information management unit 115, a hardware driver 116, and a processing execution unit 117.

モジュール間通信部111は、特定のインタフェースにしたがって、例えば、各種のプログラム間でのデータ、情報、信号、コマンド、メッセージ、リクエスト、指令などの送信及び受信を行う。   The inter-module communication unit 111 transmits and receives, for example, data, information, signals, commands, messages, requests, instructions, etc. among various programs in accordance with a specific interface.

優先制御部112は、例えば、プログラムF0〜FMの優先度に応じて、実行するプログラムF0〜FMを切り替える。より具体的には、優先制御部112は、例えば、各種のプログラムF0〜FMの優先度をタスク単位で管理し、優先度の高いタスクを優先して実行する。   The priority control unit 112 switches the programs F0 to FM to be executed, for example, according to the priorities of the programs F0 to FM. More specifically, the priority control unit 112 manages, for example, the priorities of the various programs F0 to FM in units of tasks, and prioritizes and executes tasks with high priorities.

割り込みハンドラ113は、メモリ装置3のいずれかのハードウェア又はソフトウェアからの割り込みイベントを検知し、検知された割り込みに応じた処理を実行する。   The interrupt handler 113 detects an interrupt event from any hardware or software of the memory device 3 and executes processing in accordance with the detected interrupt.

アクセス部114は、不揮発性メモリ5に対する消去、読み出し、書き込みなどの基本動作を制御する。   The access unit 114 controls basic operations such as erasing, reading, and writing to the non-volatile memory 5.

情報管理部115は、不揮発性メモリ5に対する各種の管理情報115aを管理する。例えば、情報管理部115は、例えば統計情報、集計情報、制御情報などを含む管理情報115aを生成及び管理する。情報管理部115で管理される管理情報115aは、少なくとも、不揮発性メモリ5に対する処理で用いられる設定情報117aの生成に必要な情報である。管理情報115aは、例えば、不揮発性メモリ5に含まれているNAND型フラッシュメモリの各ブロックに対する消去回数、各ブロックに対する消去頻度、各ページに対する読み出し回数、各ページに対する読み出し頻度、各ページに対する書き込み回数、各ページに対する書き込み頻度、各ブロックの大きさ、各ブロック内のページの数、各ページの大きさ、推定書き込み速度、推定書き込み遅延時間、推定読み出し速度、推定読み出し遅延時間、などのうちの少なくとも1つを含む。   The information management unit 115 manages various management information 115 a for the non-volatile memory 5. For example, the information management unit 115 generates and manages management information 115 a including, for example, statistical information, tally information, control information, and the like. The management information 115 a managed by the information management unit 115 is at least information necessary for generating setting information 117 a used in the process for the non-volatile memory 5. The management information 115a includes, for example, the number of erases for each block of the NAND flash memory included in the non-volatile memory 5, the number of erases for each block, the number of reads for each page, the number of reads for each page, and the number of writes for each page Write frequency for each page, size of each block, number of pages in each block, size of each page, estimated writing speed, estimated writing delay time, estimated reading speed, estimated reading delay time, etc. Including one.

情報管理部115は、プログラムF0〜FMのうちのいずれかから管理情報115aの出力コマンドを受けた場合に、出力コマンドの発行元へ管理情報115aを送る。   When the information management unit 115 receives an output command of the management information 115a from any of the programs F0 to FM, the information management unit 115 sends the management information 115a to the issuer of the output command.

ハードウェアドライバ116は、メモリ装置3の各種のハードウェアを制御する。ハードウェアドライバ116の種別としては、例えば、インタフェース部6を制御するドライバ、電源を制御するドライバ、タイマーを制御するドライバなどがある。   The hardware driver 116 controls various hardware of the memory device 3. Examples of the hardware driver 116 include a driver that controls the interface unit 6, a driver that controls power, and a driver that controls a timer.

処理実行部117は、プログラムF0〜FMのうちのいずれかから不揮発性メモリ5に対する処理の設定情報117aを受けた場合に、設定情報117aにしたがって不揮発性メモリ5に対する処理を実行する。   When the process execution unit 117 receives the setting information 117a of the process for the non-volatile memory 5 from any of the programs F0 to FM, the process execution unit 117 executes the process for the non-volatile memory 5 according to the setting information 117a.

例えば、設定情報117aは、少なくとも、不揮発性メモリ5に対する処理で用いられるパラメータとしてもよい。より具体的には、例えば、設定情報117aは、ガーベージコレクションの実行条件情報であり、処理実行部117は、ガーベージコレクションの実行条件情報にしたがってガーベージコレクションを実行するとしてもよい。また、例えば、設定情報117aは、不揮発性メモリ5のどの位置にどのようなデータを書き込むかの書き込み位置情報であり、処理実行部117は、不揮発性メモリ5における書き込み位置情報の示す位置にデータを書き込むとしてもよい。   For example, the setting information 117 a may be at least a parameter used in the process for the non-volatile memory 5. More specifically, for example, the setting information 117a may be garbage collection execution condition information, and the process execution unit 117 may execute garbage collection according to the garbage collection execution condition information. Further, for example, the setting information 117 a is write position information indicating what kind of data is to be written in which position of the nonvolatile memory 5, and the processing execution unit 117 performs data at a position indicated by the write position information in the nonvolatile memory 5. You may write

図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 control program 11, the hardware unit 4H of the controller 4, and the non-volatile memory 5. In the present embodiment, the memory device 3 may not initially include the program F0 such as firmware or an application program. Here, initial is, for example, at the time of product shipment, at the time of delivery, or at the time of sale. The memory device 3 may initially include a typical program or a standard program recommended by the manufacturer in cooperation with the software-defined SSD platform.

また、メーカーは、プログラムF0の開発を支援するソフトウェア開発装置13を、例えばユーザ、顧客、メモリ装置3の購入者、又は、ソフトウェア開発者などのような第三者に、提供又は販売する。本実施形態では、ソフトウェア開発装置13をソフトウェア開発者が使用する場合を例として説明する。   In addition, the manufacturer provides or sells the software development apparatus 13 supporting the development of the program F0 to a third party such as a user, a customer, a purchaser of the memory device 3, or a software developer. In this embodiment, a case where a software developer uses the software development apparatus 13 will be described as an example.

ソフトウェア開発装置13は、不揮発性メモリ5のエミュレータ、メモリ装置3のシミュレータを備える。これにより、例えば、外部ネットワークとは物理的に遮断されているような閉じた開発環境であっても、ソフトウェア開発者は、ソフトウェア開発装置13を用いてプログラムF0の開発を進めることができる。   The software development device 13 includes an emulator of the non-volatile memory 5 and a simulator of the memory device 3. Thus, for example, even in a closed development environment in which the external network is physically isolated, the software developer can proceed with the development of the program F0 using the software development apparatus 13.

ソフトウェア開発装置13は、ソフトウェア開発者によるプログラムF0の開発を支援する。ソフトウェア開発者は、例えば、メモリ装置3のユーザ又は購入者などでもよい。本実施形態において、プログラムF0は、例えばユーザ定義の取り替え可能モジュールであり、制御プログラム11の上位層モジュールである。   The software development device 13 supports the development of the program F0 by the software developer. The software developer may be, for example, a user of the memory device 3 or a purchaser. In the present embodiment, the program F0 is, for example, a user-defined replaceable module, and is an upper layer module of the control program 11.

制御プログラム11は、API及び論理インタフェースに準拠しているため、ソフトウェア開発者は、効率的に、メモリ装置3のユーザ又は購入者の要望に応じたプログラムF0を生成し、プログラムF0を制御プログラム11とともに協働させることが可能である。   Since the control program 11 conforms to the API and the logical interface, the software developer efficiently generates the program F0 according to the request of the user of the memory device 3 or the purchaser, and controls the program F0. Can work together.

プログラム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 control program 11 is provided in the memory device 3, the program F0 can operate without being aware of the hardware unit 4H.

ユーザ又は購入者は、自己に適したプログラム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 non-volatile memory 5 and the hardware 4H. A second interface or protocol is applied between the hardware 4H and the control program 11. A third interface or protocol is applied between programs F0 to FM and control program 11. Thus, even if at least a part of the non-volatile memory 5, the hardware 4H, the control program 11, and the programs F0 to FM is replaced, other software or hardware can be used continuously.

図4は、本実施形態に係る情報処理システム1の構成要素間の関係の一例を示すブロック図である。   FIG. 4 is a block diagram showing an example of the relationship between the components of the information processing system 1 according to the present embodiment.

メモリ装置3は、主に2つの抽象化レイヤを備えることにより、取り替え可能SSDモジュール131〜137の開発を支援する。上記プログラムF0〜FMは取り替え可能SSDモジュール133〜136に相当する。   The memory device 3 supports the development of the replaceable SSD modules 131 to 137 mainly by providing two abstraction layers. The programs F0 to FM correspond to the replaceable SSD modules 133 to 136.

第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 control program 11, a hardware unit 4H, and a non-volatile memory 5. The software-defined SSD platform is generated by, for example, the maker of the memory device 3 and implemented in the memory device 3. In the first abstraction layer, the non-volatile memory 5 includes, for example, a plurality of NAND flash memories B0 to BP.

第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 replaceable SSD modules 131 to 136 can exchange data, information, signals, commands, messages, requests, instructions, and the like with the control program 11 using, for example, an API and a logical interface. In the second abstraction layer, the interrupt handler 137 can exchange data, information, signals, commands, messages, requests, instructions, etc. with the hardware unit 4 H without using the control program 11.

第2の抽象化レイヤにおいて、SSDモジュール131及び新しいモジュール132は、例えば、メーカーによって生成され、標準のSSDモジュール又は機能としてメモリ装置3に組み込まれる。   In the second abstraction layer, the SSD module 131 and the new module 132 are, for example, generated by the manufacturer and incorporated into the memory device 3 as a standard SSD module or function.

モジュール133〜135、ドライバモジュール136、割り込みハンドラ137は、ソフトウェア開発者などの第三者によって生成され、メモリ装置3に組み込まれる。   The modules 133 to 135, the driver module 136, and the interrupt handler 137 are generated by a third party such as a software developer and incorporated in the memory device 3.

SSDモジュール131、新しいモジュール132、モジュール133〜135は、例えば情報処理装置2などのような外部装置に備えられているドライバ141〜145との間で、データ、情報、信号、コマンド、メッセージ、リクエスト、指令などをやり取り可能である。   The SSD module 131, the new module 132, and the modules 133 to 135 communicate data, information, signals, commands, messages, requests with the drivers 141 to 145 provided in an external device such as the information processing apparatus 2 or the like. , And can exchange commands.

ドライバモジュール136、割り込みハンドラ137は、例えばネットワーク機器、撮影装置、又はセンサなどのような外部ハードウェア部146との間で、データ、情報、信号、コマンド、メッセージ、リクエスト、指令などをやり取り可能である。ドライバモジュール136は、外部ハードウェア部146を制御可能である。割り込みハンドラ137は、外部ハードウェア部146又はハードウェア部4Hからの割り込みイベントを検知し、検知された割り込みに応じた処理をハードウェア部4H又は外部ハードウェア部146に対して実行する。   The driver module 136 and the interrupt handler 137 can exchange data, information, signals, commands, messages, requests, commands, etc. with an external hardware unit 146 such as, for example, a network device, an imaging device, or a sensor. is there. The driver module 136 can control the external hardware unit 146. The interrupt handler 137 detects an interrupt event from the external hardware unit 146 or the hardware unit 4H, and executes processing corresponding to the detected interrupt on the hardware unit 4H or the external hardware unit 146.

さらに、モジュール133〜135とドライバモジュール136は、特定のインタフェースにしたがって、制御プログラム11と、データ、情報、信号、コマンド、メッセージ、リクエスト、指令などをやり取り可能である。   Furthermore, the modules 133 to 135 and the driver module 136 can exchange data, information, signals, commands, messages, requests, instructions and the like with the control program 11 in accordance with a specific interface.

図5は、本実施形態に係る制御プログラム11及びハードウェア部4Hによって実行される処理の一例を示すフローチャートである。   FIG. 5 is a flowchart showing an example of processing executed by the control program 11 and the hardware unit 4H according to the present embodiment.

ステップS501において、制御プログラム11は、プログラムF0〜FMのいずれかから、特定のインタフェースにしたがって、アクセスコマンドを受ける。例えば、制御プログラム11は、書き込みコマンド、論理アドレス、書き込みデータを受ける。例えば、制御プログラム11は、読み出しコマンド、論理アドレスを受ける。   In step S501, the control program 11 receives an access command from any of the programs F0 to FM in accordance with a specific interface. For example, the control program 11 receives a write command, a logical address, and write data. For example, the control program 11 receives a read command and a logical address.

ステップS502において、制御プログラム11及びハードウェア部4Hは、アクセスコマンドにしたがって、論理アドレスを物理アドレスに変換し、不揮発性メモリ5に対して書き込みデータの書き込み、又は、読み出しデータの読み出しを行う。制御プログラム11は、不揮発性メモリ5から読み出しデータが読み出された場合に、読み出しデータを、読み出しコマンドの発行元に送る。   In step S502, the control program 11 and the hardware unit 4H convert a logical address into a physical address in accordance with the access command, and write data to the non-volatile memory 5 or read data to be read. When the read data is read from the nonvolatile memory 5, the control program 11 sends the read data to the issuer of the read command.

ステップS503において、制御プログラム11は、不揮発性メモリ5に対する管理情報115aを生成する。   In step S 503, the control program 11 generates management information 115 a for the non-volatile memory 5.

ステップS504において、制御プログラム11は、プログラムF0〜FMのいずれかから、特定のインタフェースにしたがって、管理情報115aの出力コマンドを受ける。   In step S504, the control program 11 receives an output command of the management information 115a from any of the programs F0 to FM in accordance with a specific interface.

ステップS505において、制御プログラム11は、出力コマンドにしたがって、管理情報115aを出力コマンドの発行元に送る。   In step S505, the control program 11 sends the management information 115a to the issuer of the output command in accordance with the output command.

ステップS506において、制御プログラム11は、プログラムF0〜FMのいずれかから、特定のインタフェースにしたがって、処理実行コマンドと設定情報117aとを受ける。   In step S506, the control program 11 receives a process execution command and setting information 117a from any of the programs F0 to FM according to a specific interface.

ステップS507において、制御プログラム11及びハードウェア部4Hは、処理実行コマンドと設定情報117aとにしたがって不揮発性メモリ5に対する処理を実行する。   In step S507, the control program 11 and the hardware unit 4H execute the process for the non-volatile memory 5 in accordance with the process execution command and the setting information 117a.

以上説明した本実施形態においては、メモリ装置3のハードウェア部4Hに依存することなく、プログラムF0〜FM、取り替え可能SSDモジュール131〜136を生成し、プログラムF0〜FM、取り替え可能SSDモジュール131〜136をメモリ装置3に組み込み、メモリ装置3を用いることができる。   In the embodiment described above, programs F0 to FM, replaceable SSD modules 131 to 136 are generated without depending on the hardware unit 4H of the memory device 3, and programs F0 to FM, replaceable SSD modules 131 to 131 are generated. The memory device 3 can be used by incorporating the memory device 136 into the memory device 3.

これにより、メモリ装置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 hardware unit 4H of the memory device 3 is changed or upgraded, the programs F0 to FM and the replaceable SSD modules 131 to 136 are continuously used in the new memory device 3. It is possible.

プログラムF0〜FM、取り替え可能SSDモジュール131〜136は、メモリ装置3のハードウェア部4Hを意識することなく、開発することができる。   The programs F0 to FM and the replaceable SSD modules 131 to 136 can be developed without being aware of the hardware unit 4H of the memory device 3.

メモリ装置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 replaceable SSD modules 131 to 136 with the new memory device 3 even if the new memory device 3 is introduced. Can be used.

したがって、本実施形態においては、メモリ装置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 replaceable SSD modules 131 to 137 suitable for the user. Therefore, the user can easily introduce his / her know-how into the operation of the memory device 3.

本実施形態において、メモリ装置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., replaceable SSD modules 131 to 137 independently, and programs F0 to FM, replaceable SSD modules 131 to memory device 3. 137 can be easily implemented.

本実施形態においては、ネットワーク機器、撮影装置、又は、センサなどの外部ハードウェア部146とメモリ装置3とを容易に接続し、外部ハードウェア部146から受けたデータを不揮発性メモリ5に書き込むことができる。換言すれば、本実施形態においては、メモリ装置3がドライバモジュール136を備えることにより、メモリ装置3が外部ハードウェア部146との間の通信インタフェースを容易に実装することができる。したがって、本実施形態に係るメモリ装置3は、例えば、IoT(Internet of Things)に適している。   In the present embodiment, the external hardware unit 146 such as a network device, an imaging device, or a sensor is easily connected to the memory device 3, and the data received from the external hardware unit 146 is written to the non-volatile memory 5. Can. In other words, in the present embodiment, when the memory device 3 includes the driver module 136, the memory device 3 can easily implement a communication interface with the external hardware unit 146. Therefore, the memory device 3 according to the present embodiment is suitable for, for example, the IoT (Internet of Things).

本実施形態においては、例えば、メモリ装置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 control program 11, the hardware unit 4H, and the software development device 13 cheaply or without charge for the user who purchases and uses the non-volatile memory 5 of his company. Provide at least one. Thereby, the maker of the memory device 3 can promote the sales of its own nonvolatile memory 5.

本実施形態においては、メモリ装置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 software development device 13 to generate the programs F0 to FM and the replaceable SSD modules 131 to 137. In this embodiment, the maker of the memory device 3 can quickly sell or deliver the memory device 3 without developing a program specific to the user or the purchaser. Therefore, the period from the manufacture of the memory device 3 to the delivery of the memory device 3 to the user or the purchaser can be shortened.

メモリ装置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 non-volatile memory 5. The lifetime of the non-volatile memory 5 can be extended according to its own use mode.

本実施形態において、制御プログラム11の格納位置、プログラムF0〜FMの格納位置、制御プログラム11の作業用領域の位置、各プログラムF0〜FMの作業用領域の位置は、メモリ装置3の起動時に決定され、その後動作中は再配置されない。これにより、プログラム及びデータの再配置が必要なく、メモリ装置3の動作を高速化することができる。   In the present embodiment, the storage position of the control program 11, the storage position of the programs F0 to FM, the position of the work area of the control program 11, and the position of the work area of each program F0 to FM are determined when the memory device 3 is started. And then not relocated during operation. Thus, the operation of the memory device 3 can be speeded up without the need for relocation of programs and data.

本実施形態においては、不揮発性メモリ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 non-volatile memory 5, the hardware unit 4H, the control program 11, the programs F0 to FM, and the replaceable SSD modules 131 to 137 is replaced, other software or hardware Is still available. For example, even if the generation of the non-volatile memory 5 is changed due to the development of the non-volatile memory 5, the existing programs F0 to FM, the replaceable SSD modules 131 to 137, and the hardware unit of the controller 4 4H and the control program 11 can be reused.

[第2の実施形態]
本実施形態においては、上記第1の実施形態で説明した情報処理システム1の変形例について説明する。
Second Embodiment
In the present embodiment, a modification of the information processing system 1 described in the first embodiment will be described.

本実施形態において、メモリ装置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 information processing system 1A according to the present embodiment includes a memory device 3 and virtual machines VM0 to VMP.

メモリ装置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 control program 11, and NAND flash memories B0 to BP. The NAND flash memories B0 to BP correspond to the non-volatile memory 5 of FIG.

仮想メモリ装置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 control program 11 can operate according to a standard command set (Common Command Set). The control program 11 cooperates with the plurality of virtual memory devices VS0 to VSP in the memory device 3. The control program 11 individually changes and manages the parameters of each of the virtual memory devices VS0 to VSP.

例えば、制御プログラム11は、仮想メモリ装置VS0〜VSPごとに、メモリ容量、ガーベージコレクションの設定、オーバープロビショニングの設定、メモリの粒度(Granularity)の設定、信頼性(エラー訂正能力)の程度を変更可能である。ここで、ガーベージコレクションとは、プログラムが動的に確保したメモリ領域のうち、不要になった領域を自動的に解放する機能である。オーバープロビショニングとは、予備領域を確保することをいう。メモリの粒度とは、例えば、NAND型フラッシュメモリのブロック及びページのサイズ、ハードディスクのセクタのサイズなど、書き込みを行う単位のサイズ、読み出しを行う単位のサイズ、及び、消去を行う単位のサイズを意味する。   For example, the control program 11 changes the memory capacity, the setting of garbage collection, the setting of over provisioning, the setting of memory granularity, the degree of reliability (error correction capability) for each of the virtual memory devices VS0 to VSP. It is possible. Here, the garbage collection is a function of automatically releasing an unnecessary area in the memory area dynamically allocated by the program. Over-providing means securing a spare area. The granularity of memory means, for example, the size of a block and a page of NAND flash memory, the size of a sector such as hard disk sector, the size of a unit to write, the size of a unit to read, and the size of a unit to erase Do.

制御プログラム11は、各仮想メモリ装置VS0〜VSPの数、各仮想メモリ装置VS0〜VSPのメモリ容量を適宜変更可能である。   The control program 11 can appropriately change the number of each of the virtual memory devices VS0 to VSP and the memory capacity of each of the virtual memory devices VS0 to VSP.

制御プログラム11は、仮想メモリ装置VS0〜VSPごとの異なるソフトウェアポートを備える。制御プログラム11は、各仮想メモリ装置VS0〜VSPに対して、NAND型フラッシュメモリB0〜BPを割り当てる。例えば、制御プログラム11は、各仮想メモリ装置VS0〜VSPに対して割り当てられたNAND型フラッシュメモリB0〜BPを、各仮想メモリ装置VS0〜VSPに対応するネームスペースにより管理する。換言すれば、不揮発性メモリ5は複数のネームスペースに分割され、各仮想メモリ装置VS0〜VSPが自己に対応するネームスペースに対応付けられている。   The control program 11 comprises different software ports for each of the virtual memory devices VS0 to VSP. The control program 11 assigns NAND flash memories B0 to BP to the virtual memory devices VS0 to VSP. For example, the control program 11 manages the NAND flash memories B0 to BP allocated to the respective virtual memory devices VS0 to VSP by using the namespaces corresponding to the respective virtual memory devices VS0 to VSP. In other words, the non-volatile memory 5 is divided into a plurality of namespaces, and each of the virtual memory devices VS0 to VSP is associated with the namespace corresponding to itself.

本実施形態において、ネームスペースとは、不揮発性メモリ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 non-volatile memory 5. By assigning a name space to each of the virtual memory devices VS0 to VSP, identification information of the name space and the logical address are used even if logical addresses overlap in at least two virtual memory devices of the virtual memory devices VS0 to VSP. And can be used to access the appropriate data.

以上説明した本実施形態においては、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 control program 11 including a scheduler.

図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 control program 11, the modules 131 to 136, and the interrupt handler 137 are software. The drivers 141 to 145 and the external hardware unit 146 are hardware.

メモリ装置3は、制御プログラム11と、ハードウェア部4Hと、複数のNAND型フラッシュメモリB0〜BPとを含む。ハードウェア部4Hは、複数のプロセッサP1〜PNと、メモリ7Aとを含む。   The memory device 3 includes a control program 11, a hardware unit 4H, and a plurality of NAND flash memories B0 to BP. Hardware unit 4H includes a plurality of processors P1 to PN and a memory 7A.

制御プログラム11は、スケジューラ15としての機能を含む。なお、スケジューラ15は、ハードウェアにより実現されてもよい。   The control program 11 includes a function as the scheduler 15. The scheduler 15 may be realized by hardware.

メモリ7Aは、複数のプロセッサP1〜PNによって共有される。プロセッサP1〜PNのいずれかがメモリ7Aにデータ、情報、信号、コマンド、メッセージ、リクエスト、指令を格納し、プロセッサP1〜PNのうちの他のプロセッサがメモリ7Aからデータ、情報、信号、コマンド、メッセージ、リクエスト、指令を読み出すことにより、プロセッサP1〜PN間でデータ、情報、信号、コマンド、メッセージ、リクエスト、指令をやり取り可能である。   The memory 7A is shared by a plurality of processors P1 to PN. One of the processors P1 to PN stores data, information, signals, commands, messages, requests, instructions in the memory 7A, and another processor of the processors P1 to PN receives data, information, signals, commands, or the like from the memory 7A. Data, information, signals, commands, messages, requests, instructions can be exchanged between the processors P1 to PN by reading out messages, requests, and instructions.

例えば、モジュール131〜136と制御プログラム11との間は、標準化された特定のインタフェースにより、データ、情報、信号、コマンド、メッセージ、リクエスト、指令をやり取り可能とする。   For example, data, information, signals, commands, messages, requests, commands can be exchanged between the modules 131 to 136 and the control program 11 by a standardized specific interface.

例えば、SSDモジュール131〜136と、外部装置に備えられているドライバ141〜145及び外部ハードウェア部146との間は、独自のインタフェースにより、データ、情報、信号、コマンド、メッセージ、リクエスト、指令をやり取り可能とする。外部ハードウェア部146は、例えば、メモリ装置3に対する外部のメモリ装置としてもよく、外部のNAND型フラッシュメモリとしてもよい。   For example, between the SSD modules 131 to 136, and the drivers 141 to 145 and the external hardware unit 146 provided in the external device, data, information, signals, commands, messages, requests, commands can be transmitted by using a unique interface. It can be exchanged. The external hardware unit 146 may be, for example, an external memory device for the memory device 3 or an external NAND flash memory.

例えば、複数のNAND型フラッシュメモリB0〜BPは、不揮発性メモリ5のメーカーによって生成される。   For example, the plurality of NAND flash memories B0 to BP are generated by the maker of the nonvolatile memory 5.

例えば、ハードウェア部4Hは、コントローラ4のメーカーによって生成される。   For example, the hardware unit 4 H is generated by the manufacturer of the controller 4.

例えば、制御プログラム11は、不揮発性メモリ5のメーカー、コントローラ4のメーカー、又は、第1のソフトウェア開発者によって生成される。   For example, the control program 11 is generated by the maker of the non-volatile memory 5, the maker of the controller 4, or the first software developer.

例えば、モジュール131,132は、不揮発性メモリ5のメーカー、コントローラ4のメーカー、又は、第1のソフトウェア開発者によって生成される。   For example, the modules 131 and 132 are generated by the maker of the non-volatile memory 5, the maker of the controller 4, or the first software developer.

例えば、モジュール133〜135、ドライバモジュール136、割り込みハンドラ137は、第2のソフトウェア開発者によって生成される。   For example, modules 133-135, driver module 136, and interrupt handler 137 are generated by a second software developer.

本実施形態において、スケジューラ15は、例えば、どのプロセッサに、どのタスクを実行させるか、を動的に決定する。換言すれば、スケジューラ15は、例えば、動的タスクスケジューラを含む。   In the present embodiment, for example, the scheduler 15 dynamically determines which processor is to execute which task. In other words, the scheduler 15 includes, for example, a dynamic task scheduler.

以下で、本実施形態に係る制御プログラム11による制御の例について説明する。   Hereinafter, an example of control by the control program 11 according to the present embodiment will be described.

図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 memory 7A according to the present embodiment. Although FIG. 8 illustrates the case of three processors as an example to simplify the description, the same applies to the case of four or more processors. If the master processor P0 also includes a function as a dependent processor, the number of processors may be two or more.

プロセッサP0〜P2は、それぞれ管理部C0〜C2とスケジューラ150〜152とを備える。プロセッサP0〜P2は、ハードウェア部4Hの他のハードウェアを制御し、これにより不揮発性メモリ5に対する書き込みデータの書き込み、読み出しデータの読み出し、書き込まれたデータの消去を制御する。   The processors P0 to P2 respectively include management units C0 to C2 and schedulers 150 to 152. The processors P0 to P2 control the other hardware of the hardware unit 4H, thereby controlling writing of write data to the non-volatile memory 5, reading of read data, and erasing of the written data.

管理部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 scheduler 15 includes a scheduler 150 that performs scheduling in the processor P0, a scheduler 151 that performs scheduling in the processor P1, and a scheduler 152 that performs scheduling in the processor P2. However, the scheduler 15 may operate centrally on, for example, the processor P0 without being distributed.

スケジューラ150は、マスタスケジューラであり、従属のプロセッサP1,P2の負荷、又は、管理部C1,C2内の実行待ちタスクの数、が均等化されるように、管理部C0の実行待ちタスクをスケジューラ151,152に配分する。   The scheduler 150 is a master scheduler, and schedules the execution waiting tasks of the management unit C0 so that the loads of the dependent processors P1 and P2 or the number of execution waiting tasks in the management units C1 and C2 are equalized. Allocate to 151,152.

スケジューラ151,152は、従属のスケジューラであり、プロセッサP1,P2の処理時間及び遅延時間を短縮化する。   The schedulers 151 and 152 are subordinate schedulers and shorten the processing time and delay time of the processors P1 and P2.

スケジューラ151,152は、それぞれ管理部C1,C2のタスクの数を求める。   The schedulers 151 and 152 obtain the number of tasks of the management units C1 and C2, respectively.

スケジューラ151は、管理部C1で管理されている実行待ちタスクの数が第1のしきい値以下か否か判断し、判断結果をマスタスケジューラ150に送る。   The scheduler 151 determines whether the number of execution waiting tasks managed by the management unit C <b> 1 is equal to or less than a first threshold, and sends the determination result to the master scheduler 150.

スケジューラ152は、管理部C2で管理されている実行待ちタスクの数が第2のしきい値以下か否か判断し、判断結果をマスタスケジューラ150に送る。   The scheduler 152 determines whether the number of execution waiting tasks managed by the management unit C 2 is less than or equal to a second threshold, and sends the determination result to the master scheduler 150.

スケジューラ150は、管理部C1で管理されている実行待ちタスクの数が第1のしきい値以下の場合に、管理部C0で管理されている実行待ちタスクを、スケジューラ151に通知する。スケジューラ151は、スケジューラ150から通知された実行待ちタスクを、管理部C1で管理する。   The scheduler 150 notifies the scheduler 151 of the execution waiting tasks managed by the management unit C0 when the number of execution waiting tasks managed by the management unit C1 is equal to or less than the first threshold. The scheduler 151 manages the task waiting for execution notified from the scheduler 150 in the management unit C1.

スケジューラ150は、管理部C2で管理されている実行待ちタスクの数が第2のしきい値以下の場合に、管理部C0で管理されている実行待ちタスクを、スケジューラ152に通知する。スケジューラ152は、スケジューラ150から通知された実行待ちタスクを、管理部C2で管理する。   The scheduler 150 notifies the scheduler 152 of the execution waiting tasks managed by the management unit C0 when the number of execution waiting tasks managed by the management unit C2 is equal to or less than the second threshold. The scheduler 152 manages the task waiting for execution notified from the scheduler 150 in the management unit C2.

本実施形態において、スケジューラ150は、実行待ちタスクを識別するためのタスク識別情報と、当該実行待ちタスクの実行優先度とを関連付けた優先度情報16をメモリ7Aに格納する。   In the present embodiment, the scheduler 150 stores, in the memory 7A, the task identification information for identifying the task waiting for execution and the priority information 16 in which the execution priority of the task waiting for execution is associated.

スケジューラ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 scheduler 150 refers to the priority information 16 and executes the high priority managed by the managing unit C0. Determine the waiting task as the task whose management destination is to be changed. More specifically, for example, the scheduler 150 may determine the highest priority pending task as the task whose management destination is to be changed. For example, among the execution waiting tasks managed by the management unit C0, the scheduler 150 determines any one of the execution waiting tasks belonging to the higher priority group as the task whose management destination is to be changed. It is also good. For example, when the managing unit C0 manages an execution waiting task whose priority is a predetermined value or more, the scheduler 150 sets an execution waiting task whose priority is a predetermined value or more as a task whose management destination is changed. If it is determined and the execution waiting task whose priority is equal to or higher than a predetermined value is not managed by the management unit C0, the task whose management destination is to be changed may be determined according to the first-in first-out method.

以下において、プロセッサ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 scheduler 151 executes the next task managed by the management unit C1 when the processor P1 finishes executing the task.

スケジューラ151は、管理部C1で管理されている次のタスクを実行する場合に、優先度情報16を参照し、管理部C1で管理されている高優先度の実行待ちタスクを、次に実行されるタスクとして決定する。より具体的には、例えば、スケジューラ151は、最も優先度の高いタスクを、次に実行されるタスクとして決定してもよい。例えば、スケジューラ151は、管理部C1で管理されているタスクの中で、優先度が上位のグループに属するタスクのうちのいずれかを、次に実行されるタスクとして決定してもよい。例えば、スケジューラ151は、管理部C1で優先度が所定の値以上のタスクが管理されている場合には、優先度が所定の値以上のタスクを次に実行されるタスクとして決定し、管理部C1で優先度が所定の値以上のタスクが管理されていない場合には、先入先出方式にしたがって次に実行されるタスクを決定してもよい。   The scheduler 151 refers to the priority information 16 when executing the next task managed by the management unit C1, and then executes the high priority execution waiting task managed by the management unit C1 next. Decide as a task. More specifically, for example, the scheduler 151 may determine the task with the highest priority as the task to be executed next. For example, the scheduler 151 may determine, among the tasks managed by the management unit C1, any one of the tasks belonging to the higher priority group as the task to be executed next. For example, when the management unit C1 manages a task having a priority equal to or higher than a predetermined value, the scheduler 151 determines a task having a priority equal to or higher than a predetermined value as a task to be executed next. When a task having a priority equal to or higher than a predetermined value is not managed in C1, the task to be executed next may be determined according to the first-in first-out method.

スケジューラ151は、プロセッサP1でタスク実行が終了した場合に、タスク実行が終了したことを示すタスク終了情報をスケジューラ150に送る。スケジューラ150は、管理部C0で実行待ちタスクが管理されている場合に、管理先が変更されるタスクを決定し、タスク終了情報を発したスケジューラ151へ管理先が変更されるタスクを通知する。スケジューラ151は、スケジューラ150から通知されたタスクを、管理部C1で管理する。   The scheduler 151 sends, to the scheduler 150, task end information indicating that the task execution has ended when the processor P1 completes the task execution. The scheduler 150 determines the task whose management destination is to be changed when the execution waiting task is managed by the management unit C0, and notifies the scheduler 151 which has issued the task end information of the task whose management destination is to be changed. The scheduler 151 manages the task notified from the scheduler 150 in the management unit C1.

スケジューラ151は、プロセッサP1で実行されたタスクの次に起動される新たなタスクがプロセッサP1,P2のうちの一方のプロセッサで実行される場合、新たなタスクを一方のプロセッサに対応するスケジューラに通知するとしてもよい。この場合、一方のプロセッサに対応するスケジューラは、一方のプロセッサに対応する管理部に、新たなタスクを管理させる。   Scheduler 151 notifies a new task to the scheduler corresponding to one processor when a new task to be started next to the task executed by processor P1 is executed by one of processors P1 and P2 You may. In this case, the scheduler corresponding to one processor causes the managing unit corresponding to one processor to manage a new task.

スケジューラ151は、プロセッサP1で実行されたタスクの次に起動される新たなタスクがプロセッサP1,P2のうちのいずれでも実行可能な場合、新たなタスクをプロセッサP0に対応するスケジューラ150に通知してもよい。この場合、スケジューラ150は、管理部C0に、新たなタスクを管理させる。   The scheduler 151 notifies the new task to the scheduler 150 corresponding to the processor P0 when the new task to be started next to the task executed by the processor P1 can be executed by either of the processors P1 and P2. It is also good. In this case, the scheduler 150 causes the management unit C0 to manage a new task.

スケジューラ151は、プロセッサP1で実行されたタスクの次に起動される新たなタスクがプロセッサP1,P2のうちのいずれでも実行可能であり、管理部C1で管理されているタスクの数が第1のしきい値以下の場合、新たなタスクをプロセッサP1に対応するスケジューラ151に通知してもよい。この場合、スケジューラ151は、管理部C1に、新たなタスクを管理させる。   The scheduler 151 can execute a new task to be started next to the task executed by the processor P1 by either of the processors P1 and P2, and the number of tasks managed by the management unit C1 is the first. If it is below the threshold value, the new task may be notified to the scheduler 151 corresponding to the processor P1. In this case, the scheduler 151 causes the management unit C1 to manage a new task.

スケジューラ151は、プロセッサP1で実行されたタスクの次に起動される新たなタスクがプロセッサP1,P2のうちのいずれでも実行可能であり、管理部C2で管理されているタスクの数が第2のしきい値以下の場合、新たなタスクをプロセッサP2に対応するスケジューラ152に通知してもよい。この場合、スケジューラ152は、管理部C2に、新たなタスクを管理させる。   The scheduler 151 can execute a new task to be started next to the task executed by the processor P1 by either of the processors P1 and P2, and the second number of tasks managed by the management unit C2 is If it is below the threshold value, the new task may be notified to the scheduler 152 corresponding to the processor P2. In this case, the scheduler 152 causes the management unit C2 to manage a new task.

スケジューラ151は、プロセッサP1で実行されたタスクの次に起動される新たなタスクがプロセッサP1,P2のうちのいずれでも実行可能であり、管理部C2,C3で管理されているタスクの数が第1のしきい値及び第2のしきい値より多い場合、新たなタスクをプロセッサP0に対応するスケジューラ150に通知してもよい。この場合、スケジューラ150は、管理部C0に、新たなタスクを管理させる。   The scheduler 151 can execute a new task to be activated next to the task executed by the processor P1 by either of the processors P1 and P2, and the number of tasks managed by the management units C2 and C3 is If it is greater than the one threshold and the second threshold, the new task may be notified to the scheduler 150 corresponding to the processor P0. In this case, the scheduler 150 causes the management unit C0 to manage a new task.

プロセッサP1,P2で実行されるタスクは、ハードウェア部4Hをアクセスするための待ち合わせタスクを含まない。例えば、待ち合わせタスクとは、あるイベントが発生するまで待ち状態となるタスクであってもよい。この場合、プロセッサP1,P2でタスクの実行が開始されると、プロセッサP1,P2で割り込みなどを受け例外処理が発生した場合を除き、中断が生じない。   The tasks executed by the processors P1 and P2 do not include waiting tasks for accessing the hardware unit 4H. For example, the waiting task may be a task waiting for a certain event to occur. In this case, when execution of a task is started in the processors P1 and P2, interruption does not occur except in the case where exception processing occurs in response to an interrupt or the like in the processors P1 and P2.

制御プログラム11は、メモリ装置3の起動時、又は、管理部C1,C2で管理されているタスクがプロセッサP1,P2によって実行される前に、全タスクに対して、必要とされるメモリ7Aのメモリ領域20を割り当てる。   The control program 11 controls the memory 7A required for all tasks at the time of activation of the memory device 3 or before the tasks managed by the management units C1 and C2 are executed by the processors P1 and P2. Allocate a memory area 20.

制御プログラム11は、実行されるタスクと当該タスクに割り当てられているメモリ領域20とを関連付けた領域情報17をメモリ7Aに格納する。制御プログラム11は、領域情報17を参照し、タスクを実行する場合に使用されるメモリ領域20を決定する。   The control program 11 stores area information 17 in which the task to be executed is associated with the memory area 20 allocated to the task in the memory 7A. The control program 11 refers to the area information 17 and determines a memory area 20 to be used when executing a task.

制御プログラム11は、プロセッサP1,P2のうちの少なくとも1つを停止する場合に、プロセッサP0に対応する管理部C0から停止されるプロセッサに対応する管理部へのタスクの管理先の変更を止め、プロセッサP0に対応する管理部C0から停止されないプロセッサに対応する管理部へタスクの管理先を変更する。例えば、プロセッサは、電源供給が停止されることにより、停止される。   When stopping at least one of the processors P1 and P2, the control program 11 stops changing the management destination of the task from the management unit C0 corresponding to the processor P0 to the management unit corresponding to the processor to be stopped. The management destination of the task is changed from the management unit C0 corresponding to the processor P0 to the management unit corresponding to the unstopped processor. For example, the processor is shut down by shutting off the power supply.

制御プログラム11は、プロセッサP1が割り込みを受けた場合に、割り込みに続くタスクを、プロセッサP1に対応する管理部C1で管理する。   When the processor P1 receives an interrupt, the control program 11 manages the task following the interrupt in the management unit C1 corresponding to the processor P1.

制御プログラム11は、タスクがハードウェア部4Hの一部で実行される必要がある場合に、タスクと当該タスクの実行で使用されるハードウェア部4Hの一部を識別するためのハードウェア識別情報とを関連付けたハードウェア情報19をメモリ7Aに格納する。制御プログラム11は、ハードウェア情報19を参照し、タスクを実行する場合に当該タスクの実行で使用されるハードウェア部を決定する。そして、制御プログラム11は、決定されたハードウェア部に対応する管理部で、タスクを管理する。具体的には、制御プログラム11は、情報処理装置2からアクセスリクエストとハードウェア識別情報とを受けた場合に、アクセスリクエストに対応するタスクとハードウェア識別情報とを関連付けたハードウェア情報19をメモリ9に格納する。制御プログラム11は、アクセスリクエストに対応するタスクを実行する場合に、ハードウェア識別情報の示すプロセッサに対応する管理部で、当該タスクを管理する。   The control program 11 is hardware identification information for identifying a task and a part of the hardware unit 4H used in the execution of the task when the task needs to be executed by a part of the hardware unit 4H. And hardware information 19 associated with each other in the memory 7A. The control program 11 refers to the hardware information 19 and determines a hardware unit to be used for execution of the task when executing the task. Then, the control program 11 manages the task in the management unit corresponding to the determined hardware unit. Specifically, when the control program 11 receives an access request and hardware identification information from the information processing device 2, the control program 11 stores hardware information 19 in which a task corresponding to the access request is associated with hardware identification information. Store in 9 When executing a task corresponding to the access request, the control program 11 manages the task by a management unit corresponding to the processor indicated by the hardware identification information.

図9は、本実施形態に係るスケジューラ15の第1の処理の一例を示すフローチャートである。この図9においては、タスクの管理先が管理部C0から管理部C1に変更されるまでの処理を例示している。しかしながら、タスクの管理先が管理部C0から例えば管理部C2などのような他の管理部に変更されるまでの処理も同様である。   FIG. 9 is a flowchart showing an example of the first process of the scheduler 15 according to the present embodiment. FIG. 9 exemplifies processing until the management destination of the task is changed from the management unit C0 to the management unit C1. However, the processing until the management destination of the task is changed from the management unit C0 to another management unit such as the management unit C2 is the same.

ステップS901において、スケジューラ15は、管理部C0でタスクを管理する。   In step S901, the scheduler 15 manages tasks in the management unit C0.

ステップS902において、スケジューラ15は、管理部C1で管理されているタスクの数が第1のしきい値以下か判断する。   In step S902, the scheduler 15 determines whether the number of tasks managed by the management unit C1 is equal to or less than a first threshold.

管理部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 scheduler 15 refers to the priority information 16 in step S903 and changes the management destination from the management unit C0 to the management unit C1. Select the task to be

ステップS904において、スケジューラ15は、選択されたタスクの管理先を管理部C1に変更する。   In step S904, the scheduler 15 changes the management destination of the selected task to the management unit C1.

ステップS905において、スケジューラ15は、処理継続の場合にステップS901に処理を移し、処理継続でない場合に処理を終える。   In step S905, the scheduler 15 shifts the processing to step S901 when the processing is continued, and ends the processing when the processing is not continued.

図10は、スケジューラ15の第2の処理の一例を示すフローチャートである。この図10においては、実行されたタスクの次に起動される新たなタスクが管理部C0〜C2のいずれかに割り当てられるまでの処理を例示している。   FIG. 10 is a flowchart showing an example of the second process of the scheduler 15. FIG. 10 exemplifies a process until a new task activated next to the executed task is assigned to any of the management units C0 to C2.

ステップS1001において、スケジューラ15は、実行されたタスクの次に起動される新たなタスクが、プロセッサP1で実行されるか、プロセッサP2で実行されるか、プロセッサP1,P2のいずれでも実行可能か、を判断する。   In step S1001, the scheduler 15 determines whether a new task activated next to the executed task is executed by the processor P1, executed by the processor P2, or executable by either of the processors P1 and P2, To judge.

新たなタスクの実行先がプロセッサP1の場合、ステップS1002において、スケジューラ15は、新たなタスクを管理部C1で管理する。   When the execution destination of the new task is the processor P1, in step S1002, the scheduler 15 manages the new task by the management unit C1.

新たなタスクの実行先がプロセッサP2の場合、ステップS1003において、スケジューラ15は、新たなタスクを管理部C2で管理する。   If the execution destination of the new task is the processor P2, in step S1003, the scheduler 15 manages the new task by the management unit C2.

新たなタスクの実行先がプロセッサ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 scheduler 15 manages the new task by the management unit C0.

図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 memory area 181 is a memory area used in the first task T1.

第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 memory area 181 used in the first task T1. In this case, the first task T1 notifies the second task T2 of the area information of the memory area 181. The area information includes, for example, position information of the memory area 181.

第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 memory area 181 is assigned to the task T1. The notification of the area information from the first task T1 to the second task T2 may be executed by activation of the second task T2.

本実施形態において、制御プログラム11は、タスクの実行が終了した場合であっても、当該タスクに対応するメモリ領域を他のタスクに割り当てない。また、タスクの実行終了後に同一のタスクを再実行する場合には、同じメモリ領域が再使用される。   In the present embodiment, the control program 11 does not allocate the memory area corresponding to the task to another task even when the execution of the task is completed. In addition, when the same task is re-executed after completion of task execution, the same memory area is reused.

タスクは、ブートプログラムのタスクでもよい。この場合、メモリ装置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 hardware unit 4H and the control program 11 may perform error detection. If an error is detected, the task of executing the error correction process is managed by any of the management units C0 to C2 of the processors P0 to P2.

本実施形態において、メモリ装置3の制御プログラム11は、NAND型フラッシュメモリB0〜BPのブロックごとの消去回数、ブロック内のページ数、ブロックサイズ、ページサイズなどのようなメモリ情報を、モジュール131〜136などに送るとしてもよい。   In the present embodiment, the control program 11 of the memory device 3 performs memory information such as the number of times of erasing for each block of the NAND flash memory B0 to BP, the number of pages in the block, the block size, the page size, etc. It may be sent to 136 or the like.

制御プログラム11は、タスクから、NAND型フラッシュメモリB0〜BPの割り当てリクエスト又は解放リクエストを受けた場合に、割り当て処理又は解放処理を実行し、タスクに対して割り当てられた又は解放されたNAND型フラッシュメモリB0〜BPのブロックを、タスクへ通知するとしてもよい。   When the control program 11 receives an allocation request or release request of the NAND flash memories B0 to BP from the task, the control program 11 executes an allocation process or release process, and the NAND flash allocated or released for the task The blocks in the memories B0 to BP may be notified to the task.

図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 memory area 181 corresponding to the task T1 or stores the information obtained in the execution in the memory area 182 corresponding to the task T2.

タスクT2は、メモリ領域181に格納されている情報、又は、メモリ領域182に格納されている情報を用いて実行される。すると、タスクT2は、タスクT2の後に実行されるタスクT3にリクエストと当該リクエストを発したタスクT2の識別情報を送る。また、タスクT2は、実行によって得られた情報を、タスクT2に対応するメモリ領域182に格納するか、又は、タスクT3に対応するメモリ領域183に格納する。   The task T2 is executed using the information stored in the memory area 181 or the information stored in the memory area 182. Then, the task T2 sends a request and identification information of the task T2 that has issued the request to a task T3 to be executed after the task T2. In addition, the task T2 stores the information obtained by the execution in the memory area 182 corresponding to the task T2 or stores the information obtained in the execution in the memory area 183 corresponding to the task T3.

例えば、タスク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 memory area 181 corresponding to the task T1 or the memory area 183 corresponding to the task T3. Then, the task T2 stores the information obtained by the execution in the memory area 181 corresponding to the task T1 or the memory area 183 corresponding to the task T3.

例えば、タスク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 memory area 181 corresponding to the task T1. Then, the task T2 stores the information obtained by the execution in the memory area 183 corresponding to the task T3.

制御プログラム11は、情報処理装置2からコマンドと後続処理の識別情報とを受けた場合に、コマンド実行後に、後続処理の識別情報で示されるタスクを実行するとしてもよい。これにより、同じコマンドにしたがって処理を実行した後に、後続の処理を切り替えることができる。   When the control program 11 receives a command and identification information of a subsequent process from the information processing device 2, the control program 11 may execute the task indicated by the identification information of the subsequent process after the command is executed. As a result, after executing processing according to the same command, it is possible to switch the subsequent processing.

例えば、メモリ装置3のハードウェア部4Hは複数の部分に区分けされており、後続処理の識別情報は、ハードウェア部4Hのうちの一部を示すとしてもよい。   For example, the hardware unit 4H of the memory device 3 may be divided into a plurality of parts, and the identification information of the subsequent process may indicate a part of the hardware unit 4H.

後続処理の識別情報は、メモリ装置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 modules 131 to 136 can be performed automatically.

本実施形態においては、メモリ装置3に対して、外部装置及び外部ハードウェア部136を容易に適用することができる。   In the present embodiment, the external device and the external hardware unit 136 can be easily applied to the memory device 3.

本実施形態においては、メモリ装置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 modules 133 to 136 without being aware of task scheduling.

本実施形態においては、タスクが実行されると、当該タスクの実行が完了するまで、中断は発生しない。本実施形態においては、処理が完了するまでプロセッサ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 handler 137. Therefore, in the present embodiment, execution of task switching can be reduced during task execution, and processing can be speeded up. Also, in the present embodiment, the total execution time of tasks does not change, and only the execution waiting time changes. Therefore, the delay time generated in the memory device 3 can be stabilized.

本実施形態においては、メモリ7Aの動的な割り当てはメモリ装置3の起動時に実行され、タスクのスイッチング時に割り当ては変更されない。本実施形態においては、関連するタスクの間での情報のやり取りに、共有のメモリ7Aが用いられ、タスク間でメモリ保護は実施されない。本実施形態においては、各タスクが対応するメモリ領域を参照する。本実施形態においては、タスクの中断の発生回数及び発生頻度を減らすことができる。したがって、本実施形態においては、タスクのスイッチングによる遅延時間を減らすことができる。   In the present embodiment, the dynamic allocation of the memory 7A is performed when the memory device 3 is started, and the allocation is not changed when switching tasks. In this embodiment, the shared memory 7A is used to exchange information between related tasks, and memory protection is not implemented between tasks. In the present embodiment, each task refers to a corresponding memory area. In the present embodiment, it is possible to reduce the number of occurrences and the occurrence frequency of task interruptions. Therefore, in the present embodiment, the delay time due to task switching can be reduced.

本実施形態においては、複数のコントローラ4で共通のソフトウェアを使用することができ、ソフトウェアのアップデート及び機能追加が容易である。   In this embodiment, common software can be used by a plurality of controllers 4, and software update and function addition are easy.

[第4の実施形態]
本実施形態においては、上記第1乃至第3の実施形態で説明した情報処理システム1,1Aの詳細構成について説明する。
Fourth Embodiment
In this embodiment, detailed configurations of the information processing systems 1 and 1A described in the first to third embodiments will be described.

図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 information processing device 2 and a memory system 3B.

本実施形態に係るメモリシステム3Bは、プログラムF0〜FM、制御プログラム11を実行可能である。   The memory system 3B according to the present embodiment can execute the programs F0 to FM and the control program 11.

上記第1乃至第3の実施形態に係るメモリ装置3は、メモリシステム3Bに対応する。   The memory device 3 according to the first to third embodiments corresponds to a memory system 3B.

メモリ装置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 host interface 41 and the host interface controller 42.

メモリ7A,7Bは、DRAM47に対応する。   The memories 7A and 7B correspond to the DRAM 47.

アドレス変換データ10は、LUT45に対応する。   The address conversion data 10 corresponds to the LUT 45.

メモリコントローラ9は、NANDC(NAND Controller)50に対応する。   The memory controller 9 corresponds to a NAND controller (NAND controller) 50.

情報処理装置2は、メモリシステム3Bのホスト装置として機能する。   The information processing device 2 functions as a host device of the memory system 3B.

メモリシステム3Bのコントローラ4は、フロントエンド4Fと、バックエンド4Bとを備える。   The controller 4 of the memory system 3B includes a front end 4F and a back end 4B.

フロントエンド(ホスト通信部)4Fは、ホストインタフェース41、ホストインタフェースコントローラ42、暗号化/復号化部(Advanced Encryption Standard (AES))44、及びCPU43Fを備える。   The front end (host communication unit) 4F includes a host interface 41, a host interface controller 42, an encryption / decryption unit (Advanced Encryption Standard (AES)) 44, and a CPU 43F.

ホストインタフェース41は、情報処理装置2との間で、リクエスト(書き込みコマンド、読み出しコマンド、消去コマンドなど)、LBA、データなどを通信する。   The host interface 41 communicates requests (write command, read command, erase command, etc.), LBA, data, etc. with the information processing apparatus 2.

ホストインタフェースコントローラ(制御部)42は、CPU43Fの制御にしたがって、上記ホストインタフェース41の通信を制御する。   The host interface controller (control unit) 42 controls the communication of the host interface 41 according to the control of the CPU 43F.

暗号化/復号化部44は、データ書き込み動作において、ホストインタフェースコントローラ42から送信される書き込みデータ(平文)を暗号化する。暗号化/復号化部44は、データ読み出し動作において、バックエンド4BのリードバッファRBから送信される暗号化された読み出しデータを復号化する。なお、この暗号化/復号化部44を介さずに、書き込みデータ及び読み出しデータを送信することも、必要に応じて可能である。   The encryption / decryption unit 44 encrypts the write data (plaintext) transmitted from the host interface controller 42 in the data write operation. The encryption / decryption unit 44 decrypts the encrypted read data transmitted from the read buffer RB of the back end 4B in the data read operation. Note that it is also possible to transmit the write data and the read data without passing through the encryption / decryption unit 44 as necessary.

CPU43Fは、フロントエンド4Fの上記各構成41,42,44を制御し、フロントエンド4Fの全体の動作を制御する。   The CPU 43F controls the respective configurations 41, 42, and 44 of the front end 4F to control the overall operation of the front end 4F.

バックエンド(メモリ通信部)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, LUT 45, DDRC 46, DRAM 47, DMAC 48, ECC 49, randomizer RZ, NANDC 50, and CPU 43B.

ライトバッファ(ライトデータ転送部)WBは、情報処理装置2から送信された書き込みデータを一時的に格納する。具体的には、ライトバッファWBは、当該書き込みデータが不揮発性メモリ5に適した所定のデータサイズになるまで、一時的にデータを格納する。   The write buffer (write data transfer unit) WB temporarily stores the write data transmitted from the information processing device 2. Specifically, the write buffer WB temporarily stores data until the write data has a predetermined data size suitable for the nonvolatile memory 5.

リードバッファ(リードデータ転送部)RBは、不揮発性メモリ5から読み出された読み出しデータを一時的に格納する。具体的には、リードバッファRBにおいて、読み出しデータは、情報処理装置2に適した順序(情報処理装置2が指定した論理アドレスLBAの順序)になるように並び替えられる。   The read buffer (read data transfer unit) RB temporarily stores read data read from the non-volatile memory 5. Specifically, in the read buffer RB, the read data is rearranged in the order suitable for the information processing device 2 (the order of the logical address LBA designated by the information processing device 2).

LUT45は、論理アドレスLBAを物理アドレスPBAに変換するためのテーブルである。   The LUT 45 is a table for converting the logical address LBA into the physical address PBA.

DDRC46は、DRAM47におけるDDR(Double Data Rate)を制御する。   The DDRC 46 controls double data rate (DDR) in the DRAM 47.

DRAM47は、例えば、LUT45を格納する揮発性のメモリである。   The DRAM 47 is, for example, a volatile memory that stores the LUT 45.

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 DMAC 48 is illustrated in FIG. 13, the controller 4 may include two or more DMACs 48. The DMAC 48 is set at various positions in the controller 4 as needed.

ECC49は、ライトバッファWBから送信される書き込みデータにECC(Error Correcting Code)を付加する。ECC49は、リードバッファRBに送信する際に、付加したECCを用いて、不揮発性メモリ5から読み出した読み出しデータを必要に応じて訂正する。   The ECC 49 adds an ECC (Error Correcting Code) to the write data transmitted from the write buffer WB. The ECC 49 corrects the read data read from the non-volatile memory 5 as necessary, using the added ECC when transmitting to the read buffer RB.

ランダマイザ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 nonvolatile memory 5 during the data write operation. As described above, by distributing the write data, the number of times of writing can be equalized, and the cell life of the memory cell MC of the non-volatile memory 5 can be prolonged. Therefore, the reliability of the non-volatile memory 5 can be improved. In addition, the randomizer RZ executes reverse processing of the randomizing processing at the time of writing to restore the original data at the time of the data read operation.

NANDC50は、所定の速度の要求を満たすため、複数のチャンネル(ここでは、4つのチャンネルCH0〜CH3)を用いて、並列に不揮発性メモリ5にアクセスする。   The NANDC 50 accesses the non-volatile memory 5 in parallel using a plurality of channels (here, four channels CH0 to CH3) in order to satisfy the predetermined speed requirement.

CPU43Bは、バックエンド4Bの上記各構成(45〜50,RZ)を制御し、バックエンド4Bの全体の動作を制御する。   The CPU 43B controls the above-described configurations (45 to 50, RZ) of the back end 4B, and controls the overall operation of the back end 4B.

なお、図13に示したコントローラ4の構成は例示であり、この構成に限定されることはない。   In addition, the structure of the controller 4 shown in FIG. 13 is an illustration, It is not limited to this structure.

図14は、本実施形態に係るストレージシステムの一例を示す斜視図である。   FIG. 14 is a perspective view showing an example of a storage system according to the present embodiment.

ストレージシステム100は、SSDとしてのメモリシステム3Bを備える。   The storage system 100 includes a memory system 3B as an SSD.

メモリシステム3Bは、例えば比較的小型のモジュールである。なお、メモリシステム3Bの大きさ及び寸法は、種々の大きさのものに適宜変更可能である。   The memory system 3B is, for example, a relatively small module. The size and dimensions of the memory system 3B can be appropriately changed to various sizes.

また、メモリシステム3Bは、例えば、企業(エンタープライズ)で運用されるデータセンター又はクラウドコンピューティングシステムにおいて、サーバのような情報処理装置2に装着されて使用可能である。そのため、メモリシステム3Bは、エンタープライズ用SSD(eSSD)であってもよい。   In addition, the memory system 3B can be used by being attached to the information processing apparatus 2 such as a server in, for example, a data center or cloud computing system operated by a company (enterprise). Therefore, the memory system 3B may be an enterprise use SSD (eSSD).

メモリシステム3Bは、例えば上方に開口した複数のコネクタ(例えばスロット)101を備える。   The memory system 3B includes, for example, a plurality of connectors (for example, slots) 101 opened upward.

複数のメモリシステム3Bは、情報処理装置2のコネクタ101にそれぞれ装着され、略垂直方向に起立した姿勢で互いに並べて支持される。このような構成によれば、複数のメモリシステム3Bをコンパクトに纏めて実装可能であり、メモリシステム3Bの小型化を図ることができる。さらに、本実施形態に係るメモリシステム3Bの各形状は、2.5型のSFF(Small Form Factor)である。このような形状により、メモリシステム3Bは、エンタープライズ用HDD(eHDD)と互換形状(コンパチ形状)を図ることができ、eHDDとの容易なシステム互換性を実現することができる。   The plurality of memory systems 3B are respectively attached to the connectors 101 of the information processing device 2, and are supported side by side in a substantially upright posture. According to such a configuration, the plurality of memory systems 3B can be mounted compactly and mounted, and the memory system 3B can be miniaturized. Furthermore, each shape of the memory system 3B according to the present embodiment is a 2.5-type small form factor (SFF). With such a shape, the memory system 3B can have a compatible shape (compatible shape) with the enterprise HDD (eHDD), and can realize easy system compatibility with the eHDD.

なお、メモリシステム3Bは、エンタープライズ用に限られない。例えば、メモリシステム3Bは、ノートブック型ポータブルコンピュータ又はタブレット型端末のようなコンシューマ用の電子機器の記憶媒体としても適用可能である。   The memory system 3B is not limited to the one for enterprise. For example, the memory system 3B is also applicable as a storage medium of a consumer electronic device such as a notebook portable computer or a tablet terminal.

以上説明したように、本実施形態で説明した構成を持つ情報処理システム1B及びストレージシステム100においては、大容量の記憶に、上記第1乃至第3の実施形態と同様の効果を得ることができる。   As described above, in the information processing system 1B and the storage system 100 having the configuration described in this embodiment, the same effects as those of the first to third embodiments can be obtained for large-capacity storage. .

[第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 hardware unit 4H.

図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 dynamic task scheduler 15D, a hardware abstraction layer (HAL) 301, a device driver 311, a hardware unit 4H, and a non-volatile memory 5.

動的タスクスケジューラ15Dは、タスクの実行順序を制御する。より具体的には、動的タスクスケジューラ15Dは、HAL APIに準拠しており、複数のモジュールに対して、及び、HAL301に対して、データ、情報、信号、コマンド、メッセージ、リクエスト、指令をやり取りする。   The dynamic task scheduler 15D controls the execution order of tasks. More specifically, the dynamic task scheduler 15D conforms to the HAL API, and exchanges data, information, signals, commands, messages, requests, commands with a plurality of modules and with the HAL 301. Do.

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 HAL 301 abstracts the hardware unit 4H. For example, the HAL 301 is implemented by software existing between the hardware unit 4H of the memory device and the device driver 311 and the program F operating on the memory device. The HAL 301 hides a difference that differs from hardware to the program F and the dynamic task scheduler 15D. More specifically, the HAL 301 includes the dynamic task scheduler 15D and the hardware unit 4H and the device driver 311 so that the program F and the dynamic task scheduler 15D become independent of the hardware unit 4H and the device driver 311. It is a common module that realizes the basic operation between them and absorbs the difference between the hardware units 4H. For example, when the specification change occurs in the hardware unit 4H or the device driver 311, only the HAL 301 may be corrected according to the specification change, and the program F and the dynamic task scheduler 15D are the specifications of the hardware unit 4H or the device driver 311 Not affected by changes.

デバイスドライバ311は、ハードウェア部4Hをアクセスするためのソフトウェアである。デバイスドライバ311は、複数のデバイスドライバを含んでいてもよく、例えばNANDフラッシュ用のデバイスドライバ311a、周辺装置用のデバイスドライバ311b、ホスト装置用のデバイスドライバ311c、又はこれら以外のデバイスドライバを含む。なお、デバイスドライバ311は、ハードウェアで実現されてもよい。   The device driver 311 is software for accessing the hardware unit 4H. The device driver 311 may include a plurality of device drivers, and includes, for example, a device driver 311 a for NAND flash, a device driver 311 b for peripheral devices, a device driver 311 c for host device, or other device drivers. The device driver 311 may be realized by hardware.

ハードウェア部4Hは、ハードウェアであり、例えば、デバイスドライバ311と、複数のプロセッサP1〜PNと、メモリ7Aとを含む。   The hardware unit 4H is hardware, and includes, for example, a device driver 311, a plurality of processors P1 to PN, and a memory 7A.

上述のように、ソフトウェア定義型SSDプラットフォームにおいては、不揮発性メモリ5へのアクセスは、プログラムFより、動的タスクスケジューラ15D、HAL301、デバイスドライバ311、ハードウェア部4Hを通じて、階層的に行われる。   As described above, in the software-defined SSD platform, access to the non-volatile memory 5 is performed hierarchically from the program F through the dynamic task scheduler 15D, the HAL 301, the device driver 311, and the hardware unit 4H.

図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 dynamic task scheduler 15D and a static task scheduler 15S.

動的タスクスケジューラ15Dは、複数のプロセッサのうち、どのプロセッサにタスクを割り当てるかを管理する。   The dynamic task scheduler 15D manages which one of a plurality of processors is assigned a task.

静的タスクスケジューラ15Sは、各プロセッサに割り当てられたタスクの実行順序を管理する。   The static task scheduler 15S manages the execution order of tasks assigned to each processor.

メモリ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 dynamic task scheduler 15D is responsible for assigning a task to which processor. The static task scheduler 15S determines, for each of the processors P0 to P3, a task to be executed next among assigned tasks.

共有メモリプラットフォームでは、どのプロセッサ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 dynamic task scheduler 15D adjusts performance so that the load on each processor becomes constant by detecting low-load processors and allocating tasks.

第2のアーキテクチャは、単一のプロセッサP4とこのプロセッサP4に対応するメモリM4とを含む。静的タスクスケジューラ15Sは、プロセッサP4で次に実行するタスクを決定する。   The second architecture includes a single processor P4 and a memory M4 corresponding to this processor P4. The static task scheduler 15S determines the next task to be executed by the processor P4.

第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 static task scheduler 15S determines the task to be executed next for each of the processors P5 to P8.

分散メモリプラットフォームでは、各プロセッサ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 HAL 301. Here, the hardware accelerator is, for example, hardware added to accelerate processing of a computer.

本実施形態において、動的タスクスケジューラ15Dは、静的タスクスケジューラ15Sとともに、低レイテンシのタスク切り替えを行う。   In the present embodiment, the dynamic task scheduler 15D performs low latency task switching together with the static task scheduler 15S.

本実施形態に係るタスクは、各プロセッサで協働的に優先付けされた順序で実行される。   The tasks according to this embodiment are performed in an order prioritized cooperatively by each processor.

動的タスクスケジューラ15Dは、例えば、Lock-freeアルゴリズムを用いる。Lock-freeアルゴリズムとは、共有データにロックをかけて保護するアルゴリズムとは違い、複数のタスクが同時並行的に、ある対象データを壊すことなしに、読み出し、及び、書き込み可能なアルゴリズムである。   The dynamic task scheduler 15D uses, for example, a lock-free algorithm. Unlike an algorithm that locks and protects shared data, the Lock-free algorithm is an algorithm that allows multiple tasks to read and write simultaneously without destroying certain target data.

動的タスクスケジューラ15Dは、例えば、Run-To-Completionスケジューリングを行う。Run-To-Completionスケジューリングとは、タスクを、完全に終了するか、又は、明示的に制御をスケジューラに明け渡すまで実行させるスケジューリングモデルである。   The dynamic task scheduler 15D performs, for example, run-to-completion scheduling. Run-to-completion scheduling is a scheduling model that causes a task to be executed until it completely ends or explicitly gives control to a scheduler.

タスク間通信には、例えば、メッセージパッシング型のタスク間通信が用いられる。   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 dynamic task scheduler 15D, the HAL 301, the device driver 311, and the hardware unit 4H. Here, the parameters held in each layer at the time of access may be the same parameter or may be written in a format different for each layer. Thereby, parameters can be held at an appropriate abstraction level for each hierarchy.

例えば、図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 nonvolatile memory 5. Incidentally, by allowing a delay time in accessing the non-volatile memory 5, it is possible to take time in processing for data transmission and reception. For example, lengthening the error correction code reduces errors in reading and writing. be able to.

パラメータ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 HAL 301. In the HAL 301, for example, the access delay time is defined as 8-bit information. In this case, when the program F accesses the HAL 301, parameter conversion is performed. For example, if the program F is "00", it becomes 0 in the HAL 301, if it is "01" in the program F, it becomes any of 1 to 85 in the HAL 301, and if it is "10" in the program F, If the program F is "11", the HAL 301 is any of 171 to 255. The parameter P1701 in the program F is converted into an appropriate value on the HAL 301, for example, in relation to other parameters.

パラメータ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 hardware unit 4H. In the hardware unit 4H, for example, the access delay time is defined as three types of parameters (presence or absence of the Direct Look Ahead (DLA) method, the number of times of repeated decoding, and a delay time threshold). The DLA method is a method of compensating in the read operation the influence of the shift of the threshold voltage due to the interference between memory cells. The possible values of each parameter may be, for example, 1 bit information of On or Off for the presence or absence of the DLA method, the number of times of repeated decoding is 1 to 5, the delay time threshold is 1 to 5, and so on. The hardware unit 4H may hold some combinations of these values as parameter sets. The parameter P1702 in the HAL 301 is converted into an appropriate parameter set or parameter set number on the hardware unit 4H in relation to other parameters and the like.

なお、本実施形態ではパラメータ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 HAL 301, and the parameter P1703 is the hardware unit 4H, but the hierarchy in which the parameters are held may be a hierarchy different from these. For example, the parameter P1702 may be held in the NAND controller or the device driver 311a of the NAND flash, and the parameter P1703 may be held in the NAND flash memories B0 to BP.

図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 hardware unit 4H includes a master processor Pm and subordinate processors PS1, PS2. Master processor Pm is associated with master queue MQ and dependent queue SQ0. The dependent processors PS1 and PS2 are associated with the dependent queues SQ1 and SQ2, respectively.

マスタキューMQは、動的タスクスケジューラ15Dによって管理される。   The master queue MQ is managed by the dynamic task scheduler 15D.

従属キューSQ0,SQ1,SQ2は、静的タスクスケジューラ15Sによって管理される。   The dependent queues SQ0, SQ1, SQ2 are managed by the static task scheduler 15S.

タスクには、移植可能タスクと、専用タスクとがある。移植可能タスクは、マスタプロセッサ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 dynamic task scheduler 15D stores the portable task execution command in the master queue MQ for load distribution of a plurality of processors.

図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 dynamic task scheduler 15D.

ステップS1802において、動的タスクスケジューラ15Dは、所定の時間内に全ての処理が終わるよう、マスタキューMQによって管理されている実行コマンドの中から選択された実行コマンドを、負荷の低いプロセッサに対応する静的タスクスケジューラ15Sに渡す。静的タスクスケジューラ15Sは、受けた実行コマンドを従属キューに格納する。具体的には、動的タスクスケジューラ15Dは、各プロセッサPm,PS1,PS2の状態を監視し、最も処理負荷の低いプロセッサの従属キューへ移植可能タスクの実行コマンドを移動させる。処理負荷の高低は、例えば動的タスクスケジューラ15Dが、各従属キューSQ0,SQ1,SQ2に蓄積されたタスクの実行コマンドの量(数)が所定量を超えているか否かにより判定するとしてもよい。処理負荷が低いプロセッサがない場合は、動的タスクスケジューラ15Dはタスクの実行コマンドの移動を行わなくてもよい。   In step S1802, the dynamic task scheduler 15D corresponds to an execution command selected from among execution commands managed by the master queue MQ to a processor with a low load, so that all processing ends within a predetermined time. Pass to the static task scheduler 15S. The static task scheduler 15S stores the received execution command in the dependent queue. Specifically, the dynamic task scheduler 15D monitors the state of each processor Pm, PS1, PS2, and moves the portable task execution command to the dependent queue of the processor with the lowest processing load. For example, the dynamic task scheduler 15D may determine whether the amount (number) of task execution commands stored in each of the dependent queues SQ0, SQ1, SQ2 exceeds a predetermined amount. . If there is no processor with a low processing load, the dynamic task scheduler 15D may not move the task execution command.

図20の例では、動的タスクスケジューラ15Dは、マスタプロセッサPm、従属プロセッサPS1、従属プロセッサPS2の処理負荷が低いと判断し、マスタキューMQが保持するタスクの実行コマンドCO1〜CO4のうち、タスクの実行コマンドCO3を従属キューSQ0へ、タスクの実行コマンドCO1を従属キューSQ1へ、タスクの実行コマンドCO2を従属キューSQ2へそれぞれ移動させる。   In the example of FIG. 20, the dynamic task scheduler 15D determines that the processing load of the master processor Pm, the dependent processor PS1 and the dependent processor PS2 is low, and among the execution commands CO1 to CO4 of the tasks held by the master queue MQ, The execution command CO3 is moved to the dependent queue SQ0, the execution command CO1 for the task is moved to the dependent queue SQ1, and the execution command CO2 for the task is moved to the dependent queue SQ2.

ステップS1803において、動的タスクスケジューラ15Dは、専用タスクの実行コマンドを、直接、専用タスクに対応するプロセッサの静的タスクスケジューラ15Sに渡し、静的タスクスケジューラ15Sは受けた実行コマンドを従属キューに格納する。   In step S1803, the dynamic task scheduler 15D directly passes the execution command of the dedicated task to the static task scheduler 15S of the processor corresponding to the dedicated task, and the static task scheduler 15S stores the received execution command in the dependent queue. Do.

図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 static task scheduler 15S according to the dynamic task scheduler 15D, and the static task scheduler 15S is dedicated The task execution commands CO5 and CO6 are stored in the dependent queue SQ1. Further, the dependent processor PS2 passes the execution command CO7 of the dedicated task of the master processor Pm to the static task scheduler 15S according to the dynamic task scheduler 15D, and the static task scheduler 15S transfers the execution command CO7 of the dedicated task to the dependency queue SQ0. Store.

ステップS1804において、静的タスクスケジューラ15Sは、各従属キューに格納された移植可能タスクの実行コマンド又は専用タスクの実行コマンドの実行順序を管理し、例えば先入先出方式にしたがって実行すべき実行コマンドを選択する。すなわち、静的タスクスケジューラ15Sは、キューの先頭にある実行コマンドを処理対象として選択し、処理対象となった実行コマンドをキューから削除する。   In step S1804, the static task scheduler 15S manages the execution order of the portable task execution command or dedicated task execution command stored in each dependent queue, for example, the execution command to be executed according to the first-in first-out method select. That is, the static task scheduler 15S selects an execution command at the top of the queue as a processing target, and deletes the execution command that is the processing target from the queue.

ステップS1805において、静的タスクスケジューラ15Sは、実行の結果発生した次のタスクの実行コマンドが移植可能タスクの実行コマンドか否か判断する。   In step S1805, the static task scheduler 15S determines whether the execution command of the next task generated as a result of execution is an execution command of the portable task.

次のタスクの実行コマンドが移植可能タスクの実行コマンドの場合、ステップS1806において、静的タスクスケジューラ15Sは、次のタスクの実行コマンドを、動的タスクスケジューラ15Dに渡し、動的タスクスケジューラ15Dは受けた実行コマンドを、マスタキューMQに格納する。   If the execution command for the next task is a portable task execution command, in step S1806, the static task scheduler 15S passes the execution command for the next task to the dynamic task scheduler 15D, and the dynamic task scheduler 15D receives the execution command. Store the executed command in the master queue MQ.

次のタスクの実行コマンドが専用タスクの実行コマンドの場合、ステップS1807において、静的タスクスケジューラ15Sは、次のタスクの実行コマンドを、実行先のプロセッサの静的タスクスケジューラ15Sに渡し、静的タスクスケジューラ15Sは受けた実行コマンドを、対応する従属キューに格納する。   If the execution command of the next task is a dedicated task execution command, in step S1807, the static task scheduler 15S passes the execution command of the next task to the static task scheduler 15S of the execution destination processor, and executes the static task The scheduler 15S stores the received execution command in the corresponding dependent queue.

なお、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 HAL 301 h receives data, information, signals, commands, messages, requests, instructions, etc. from the outside according to a specific interface. For example, the HAL 301 h issues an execution command based on an external interrupt event such as an input / output command from the host device or nonvolatile memory, a power supply event, a timer event, an event of the NAND flash memory, etc. Store in the queue Q of More specifically, the external interrupt event is, for example, a data transmission / reception command for the HAL 301 h, a read or write or erase command for the non-volatile memory 5, a power control event, or a timer interrupt event. The external interrupt event is not limited to the one described above.

タスクチェーンの終了後、HAL301hは、特定のインタフェースにしたがって、外部へデータ、情報、信号、コマンド、メッセージ、リクエスト、指令などを送る。   After completion of the task chain, the HAL 301h sends data, information, signals, commands, messages, requests, commands, etc. to the outside according to a specific interface.

すべてのタスクチェーンは、割り込みハンドラによって呼び出し可能である。タスクは、次のタスクを呼び出す前に、次のタスクで必要なすべての情報(パラメータ)を準備する。   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 dynamic task scheduler 15D once transmits an execution command of a task included in the task chain to the master queue MQ. , It takes time to send and receive, and processing is delayed. Therefore, when determining that the load of the dependent processor PS1 is low, the dynamic task scheduler 15D may pass an execution command of the task to be processed next to the static task scheduler of the dependent processor PS1.

ホスト装置側のハードウェア抽象化レイヤであるHAL301hは、デバイスへのアクセスを行わない。実際のデバイスアクセスは、タスクTが起動するタスクチェーンTC1又はタスクチェーンTC2に含まれるデバイスドライバHAL301dにより行われる。HAL301dによるデバイスアクセスの詳細については、図25乃至図28で後述する。   The hardware abstraction layer HAL 301h on the host device side does not access the device. Actual device access is performed by the device driver HAL 301 d included in the task chain TC1 or task chain TC2 started by the task T. The details of the device access by the HAL 301 d will be described later with reference to FIGS.

タスク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 HAL 301 d like the task chain TC3, or may be a branch process having an access to the HAL 301 d like the task chain TC4. The branching process is, for example, log recording.

HAL301dは、タスクチェーンの終端のタスクの実行後、キューQに格納された実行コマンドを、キューQから取り出し、取り出された実行コマンドを実行し、例えば外部へ、データ、情報、信号、コマンド、メッセージ、リクエスト、指令などを送る。   After executing the task at the end of the task chain, the HAL 301 d fetches the execution command stored in the queue Q from the queue Q and executes the fetched execution command, for example, to the outside, data, information, signal, command, message , Send requests, commands etc.

図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 HAL 301 d includes a device driver task Td and an interrupt handler 303. Further, the HAL 301 d includes a device driver task queue DQ and a work area WAh for managing the processing order of the device driver tasks Td. In FIG. 26, the description of the queue Q existing between the task Tp and the device driver task Td, and the queue Q existing between the interrupt handler 303 and the next task Tn and the exceptional task Te is omitted. The device driver task queue DQ and the work area WAh may be arranged on the same memory space. The work area WAh is inaccessible from other tasks.

ステップS2501において、タスクTpは、HAL301dを起動する。具体的には、タスクTpは、タスクTpの処理完了後にキューQにデバイスドライバタスクTdの実行コマンドを格納し、静的タスクスケジューラ15S又は動的タスクスケジューラ15Dが、キューQに格納されている実行コマンドにしたがって次に処理されるデバイスドライバタスクTdを起動する。   In step S2501, the task Tp activates the HAL 301d. Specifically, the task Tp stores the execution command of the device driver task Td in the queue Q after the processing of the task Tp is completed, and the static task scheduler 15S or the dynamic task scheduler 15D executes the execution stored in the queue Q The device driver task Td to be processed next is started according to the command.

ステップ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 handler 303 is activated by the interrupt generated in step S2504.

ステップS2506において、割り込みハンドラ303にしたがって、すなわち割り込みハンドラ303の処理シーケンス内で、デバイスドライバ311がデバイスへアクセスを行い、リクエストされた処理を行う。   In step S2506, the device driver 311 accesses the device in accordance with the interrupt handler 303, that is, within the processing sequence of the interrupt handler 303, and performs the requested processing.

ステップS2507において、割り込みハンドラ303は、デバイスドライバ311より得られたデバイスアクセス結果(戻り値)を、タスクTpの作業領域WApに格納してもよい。   In step S2507, the interrupt handler 303 may store the device access result (return value) obtained from the device driver 311 in the work area WAp of the task Tp.

ステップS2508において、割り込みハンドラ303は、デバイスドライバタスクTdの処理結果に応じて、キューQに次タスクTnの実行コマンド又は例外タスクTeの実行コマンドを格納する。静的タスクスケジューラ15S又は動的タスクスケジューラ15Dは、次に処理される次タスクTn又は例外タスクTeを起動する。   In step S2508, the interrupt handler 303 stores the execution command of the next task Tn or the execution command of the exceptional task Te in the queue Q in accordance with the processing result of the device driver task Td. The static task scheduler 15S or the dynamic task scheduler 15D starts the next task Tn or exception task Te to be processed next.

次に処理されるタスクが次タスク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 HAL 301 d may be called from a plurality of tasks. In this case, the HAL 301 d may acquire identification information identifying which of a plurality of tasks is a device access request from an inter-task message stored in the work area WAh. Also, a plurality of tasks can identify their respective next tasks or exceptional tasks.

本実施形態において、HAL301dはデバイスアクセス結果をタスク間メッセージとしてタスクTpの作業領域WApに格納し、次に処理されるタスクはタスクTpの作業領域WApを参照してタスク間メッセージを得る。これにより、タスクTpと次に処理される次タスクTnは、HAL301dの存在を意識することなく、直接タスク間通信を行うように振る舞う。すなわち、タスク間通信において、HAL301dを秘匿することができる。   In the present embodiment, the HAL 301 d stores the device access result as an inter-task message in the work area WAp of the task Tp, and the task to be processed next obtains the inter-task message by referring to the work area WAp of the task Tp. Thereby, the task Tp and the next task Tn to be processed next behave as direct inter-task communication without being aware of the presence of the HAL 301 d. That is, in inter-task communication, the HAL 301 d can be concealed.

図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 flash driver 311a. 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 S2701 in the work area WAh.

また、NANDフラッシュドライバ311aは、NANDフラッシュメモリB0〜Bpにアクセスする。   In addition, the NAND flash driver 311a accesses the NAND flash memories B0 to Bp.

ステップ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 static task scheduler 15S or the dynamic task scheduler 15D starts the next task Tn in accordance with the execution command of the next task Tn.

本実施形態において、ソフトウェア定義型の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 nonvolatile memory 5, n read commands are issued from the host device, and task chains TC1 to TCn corresponding to the n read commands are executed. The task chains TC1 to TCn respectively include m tasks T1 to Tm. Task chains ID may be assigned to the task chains TC1 to TCn, for example, by the host device or the memory device.

ここで、タスクチェーン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 non-volatile memory 5 accessed by the program F is a NAND flash memory, but the non-volatile memory 5 is not limited to the NAND flash memory.

ソフトウェア定義型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 command control unit 3101, a transmission / reception control unit 3102, a write control unit 3103, a read control unit 3104, a write buffer 3105, a NAND write control unit 3106, a read buffer 3107, a NAND read control unit 3108, lookup The table 3109 includes a look-up table cache 3110, a NAND control unit 3111, and a garbage collection control unit 3112.

コマンド制御部3101は、ホスト装置との間で、コマンドを送受信する。コマンド制御部3101は、ホスト装置から受信したコマンドが書き込みコマンドである場合は、書き込み制御部3103へ書き込みコマンドを送る。また、コマンド制御部3101は、ホスト装置から受信したコマンドが読み出しコマンドである場合は、読み出し制御部3104へ読み出しコマンドを送る。   The command control unit 3101 transmits and receives commands to and from the host device. The command control unit 3101 sends a write command to the write control unit 3103 when the command received from the host device is a write command. When the command received from the host device is a read command, the command control unit 3101 sends a read command to the read control unit 3104.

なお、ホスト装置とコマンド制御部3101との間で送受信されるコマンドと、ソフトウェア定義型SSDプラットフォーム内部で送受信されるコマンドとが同じ名称の場合でも、コマンド形式はそれぞれ異なっていてもよい。   Even when the command transmitted and received between the host device and the command control unit 3101 has the same name as the command transmitted and received inside the software defined SSD platform, the command format may be different.

送受信制御部3102は、ホスト装置との間で、データを送受信する。送受信制御部3102は、ホスト装置から受信したデータを書き込みバッファ3105へ格納する。送受信制御部3102は、NANDフラッシュメモリから読み出されたデータを読み出しバッファ3107より受信し、ホスト装置へ送信する。   The transmission and reception control unit 3102 transmits and receives data to and from the host device. The transmission / reception control unit 3102 stores the data received from the host device in the write buffer 3105. The transmission / reception control unit 3102 receives data read from the NAND flash memory from the read buffer 3107 and transmits the data to the host device.

書き込み制御部3103は、コマンド制御部3101からの書き込みコマンドにしたがって、書き込みバッファ3105及びNAND書き込み制御部3106を制御する。具体的には、書き込みバッファ3105に格納されているデータをNANDフラッシュメモリに書き込むよう、NAND書き込み制御部3106へコマンドを送る。   The write control unit 3103 controls the write buffer 3105 and the NAND write control unit 3106 according to the write command from the command control unit 3101. Specifically, a command is sent to the NAND write control unit 3106 to write the data stored in the write buffer 3105 into the NAND flash memory.

読み出し制御部3104は、コマンド制御部3101からの読み出しコマンドにしたがって、読み出しバッファ3107及びNAND読み出し制御部3108を制御する。具体的には、NANDフラッシュメモリに格納されているデータを読み出した後、読み出しバッファ3107へ格納するよう、NAND読み出し制御部3108へコマンドを送る。   The read control unit 3104 controls the read buffer 3107 and the NAND read control unit 3108 according to the read command from the command control unit 3101. Specifically, after the data stored in the NAND flash memory is read, a command is sent to the NAND read control unit 3108 so as to be stored in the read buffer 3107.

NAND書き込み制御部3106は、NAND制御部3111へ書き込みコマンドを送信する。この際、ルックアップテーブル3109を参照し、参照結果をNAND制御部3111へ送信してもよい。   The NAND write control unit 3106 transmits a write command to the NAND control unit 3111. At this time, the reference result may be transmitted to the NAND control unit 3111 by referring to the lookup table 3109.

NAND読み出し制御部3108は、読み出したデータを読み出しバッファ3107へ格納する。   The NAND read control unit 3108 stores the read data in the read buffer 3107.

ルックアップテーブルキャッシュ3110は、ルックアップテーブル3109へのアクセスを高速化するためのキャッシュメモリであり、ルックアップテーブル3109のうちの少なくとも一部を格納する。また、ルックアップテーブルキャッシュ3110は、書き込み制御部3103より書き込みバッファ3105を経由して書き換えられてもよく、読み出し制御部3104より読み出しバッファ3107を経由して読み出されてもよい。   The lookup table cache 3110 is a cache memory for accelerating access to the lookup table 3109, and stores at least a part of the lookup table 3109. The lookup table cache 3110 may be rewritten by the write control unit 3103 via the write buffer 3105 or may be read from the read control unit 3104 via the read buffer 3107.

NAND制御部3111は、NANDフラッシュメモリに対し、書き込みコマンド及び読み出しコマンドにしたがって、データの書き込み及び読み出しを行う。NAND制御部3111は、読み出しデータをNAND読み出し制御部3108へ送信する。   The NAND control unit 3111 performs data writing and reading on the NAND flash memory according to the write command and the read command. The NAND control unit 3111 transmits the read data to the NAND read control unit 3108.

ガーベージコレクション制御部3112は、書き込み制御部3103及び読み出し制御部3104を制御することにより、ガーベージコレクションを行う。   The garbage collection control unit 3112 controls the write control unit 3103 and the read control unit 3104 to perform garbage collection.

なお、書き込み制御部3103及びNAND書き込み制御部3106は、分離されていなくてもよい。読み出し制御部3104及びNAND読み出し制御部3108は、分離されていなくてもよい。   The write control unit 3103 and the NAND write control unit 3106 may not be separated. The read control unit 3104 and the NAND read control unit 3108 may not be separated.

以上説明した本実施形態において、ハードウェア部4Hは、HAL301により秘匿される。また、タスクTpの次に処理される次タスクTnは、タスクTpのHAL301に対するアクセス結果を、タスクTpの作業領域WApを参照することにより得る。すなわち、タスク間通信において、ハードウェア部4Hは秘匿されるため、通信の安全性が高まる。また動的タスクスケジューラ15D及びプログラムFは、ハードウェア部4H又はデバイスドライバ311の仕様変更を意識しなくてよいため、プログラムコードの保守管理が容易となる。   In the embodiment described above, the hardware unit 4H is concealed by the HAL 301. Further, the next task Tn to be processed next to the task Tp obtains the access result of the task Tp to the HAL 301 by referring to the work area WAp of the task Tp. That is, since the hardware unit 4H is concealed in inter-task communication, the security of communication is enhanced. Further, since the dynamic task scheduler 15D and the program F do not have to be aware of the specification change of the hardware unit 4H or the device driver 311, maintenance and management of the program code become easy.

本実施形態においては、共有メモリプラットフォームが採用される。このため、ソフトウェア定義型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, HAL 301, device driver 311, hardware unit 4H) , Change the content of the parameters. Thereby, parameters can be held at an appropriate abstraction level for each hierarchy.

本実施形態において、タスクチェーンは、タスク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 SYMBOLS 1 ... Information processing system, 2 ... Information processing apparatus, 3 ... Memory apparatus, 4 ... Controller, 5 ... Nonvolatile memory, 6 ... Interface part, 7A, 7B ... Memory, P0-PN ... Processor, C0-CN ... Management part , 81: reception unit, 82: address conversion unit, 83: writing unit, 84: reading unit, 9: memory controller, 10: address conversion data, 11: control program, F0 to FM: program, 111: inter-module communication unit , 112: priority control unit, 113: interrupt handler, 114: access unit, 115: information management unit, 116: hardware driver, 4H: hardware unit, B0 to BP: NAND flash memory, 131 to 137: replaceable SSD module, 141 to 145: driver, 146: external hardware unit, VS0 to VSP: virtual memory Device, VM0 to VMP ... virtual machine.

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.
前記第2の処理は、前記第1の処理に対応するメモリ領域から前記第2の処理で用いられる情報を読み出し、前記第2の処理の実行結果を、前記第3の処理に対応するメモリ領域へ格納する、
請求項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.
前記第1のプロセッサは、前記第2のプロセッサによって実行されるべき実行待ち処理の数が第1のしきい値以下の場合、前記第1のプロセッサによって管理される前記新たな処理の前記実行先が前記第2のプロセッサであると決定し、前記第3のプロセッサによって実行されるべき実行待ち処理の数が第2のしきい値以下の場合、前記第1のプロセッサによって管理される前記新たな処理の前記実行先が前記第3のプロセッサであると決定し、
前記第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乃至第3のプロセッサを含むコントローラを具備する不揮発性メモリの制御方法であって、
前記第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乃至第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つへ変更される前記新たな処理を決定する、
請求項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乃至第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の管理部によって管理されている前記処理のうち、次に実行される処理を決定する、
請求項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乃至第3のプロセッサを含むコントローラを具備する不揮発性メモリの制御方法であって、
前記第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乃至第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の管理部を使用して前記次の処理を管理することと、
を具備する、
請求項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乃至第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の管理部を使用して前記次の処理を管理することと、
を具備する、
請求項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乃至第3のプロセッサを含むコントローラを具備する不揮発性メモリの制御方法であって、
前記第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乃至第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の管理部へ変更することと、
を具備する、
請求項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乃至第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の管理部のうち前記ハードウェア識別情報に対応する管理部で管理する、
請求項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乃至第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の処理に通知する、
請求項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乃至第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のメモリ領域へ格納する、
請求項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.
前記第2の処理において、前記第1の処理に対応するメモリ領域から前記第2の処理で用いられる情報を読み出し、前記第2の処理の実行結果を、前記第3の処理に対応するメモリ領域へ格納する、
請求項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乃至第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のメモリ領域へ格納することと、を具備する、
制御方法。
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.
前記第1のプロセッサによって、前記第2のプロセッサによって実行されるべき実行待ち処理の数が第1のしきい値以下の場合、前記第1のプロセッサによって管理される前記新たな処理の前記実行先が前記第2のプロセッサであると決定し、前記第3のプロセッサによって実行されるべき実行待ち処理の数が第2のしきい値以下の場合、前記第1のプロセッサによって管理される前記新たな処理の前記実行先が前記第3のプロセッサであると決定し、
前記第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.
JP2019023362A 2015-01-19 2019-02-13 Memory device and method of controlling nonvolatile memory Pending JP2019091492A (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (9)

* Cited by examiner, † Cited by third party
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