JP2016062406A - Memory system, control method for memory system, and program - Google Patents
Memory system, control method for memory system, and program Download PDFInfo
- Publication number
- JP2016062406A JP2016062406A JP2014191021A JP2014191021A JP2016062406A JP 2016062406 A JP2016062406 A JP 2016062406A JP 2014191021 A JP2014191021 A JP 2014191021A JP 2014191021 A JP2014191021 A JP 2014191021A JP 2016062406 A JP2016062406 A JP 2016062406A
- Authority
- JP
- Japan
- Prior art keywords
- storage unit
- data
- unit
- data input
- logical address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Description
本発明は、メモリシステム、メモリシステムの制御方法及びプログラムに関する。 The present invention relates to a memory system, a memory system control method, and a program.
ブロックデバイスであるフラッシュメモリに対してバイト単位でアクセスする場合、読み書きされるデータを一旦ランダムアクセス可能なキャッシュメモリに記憶する構成が用いられている(特許文献1及び特許文献2)。ここでブロックデバイスとは、CPU(中央処理装置)がメインメモリ(主記憶装置)に対して直接アクセスする際のデータの大きさの単位であるバイト単位あるいはワード単位を超える、セクタ単位、ページ単位等の一定の大きさを単位としてデータの入出力が行われる装置である。なお、本願において、バイト単位とは、1バイト単位と複数バイト単位とを含むものとする。また、バイト単位はワード単位を含むものとする。また、本願において、データとは、記憶装置が記憶する情報を意味するものとし、プログラム及びプログラムが処理するもの、の双方を含むものとする。
When accessing the flash memory, which is a block device, in byte units, a configuration is used in which read / write data is temporarily stored in a randomly accessible cache memory (
特許文献1及び特許文献2に記載されている構成では、アクセス時にキャッシュミスが発生した場合、フラッシュメモリに対してアクセスが実行される。フラッシュメモリより高速なデバイスを使用してキャッシュメモリを構成した場合、キャッシュヒットのときと、キャッシュミスのときとで、アクセス時間が異なることになる。アクセス時間にバラツキがある場合、例えば、大きなアクセス時間を前提としてアクセス後の処理を行うこととすれば、キャッシュヒットの場合の高速性を生かし切れない場合が生じる。一方、小さなアクセス時間を前提としてアクセス後の処理を行うこととすれば、CPUを長時間、待機状態としてしまうことになってしまうこと等が考えられる。すなわち、バイト単位でアクセスする場合にフラッシュメモリへのCPUからのアクセスあるいはアクセス後の処理を効率的に行うことができない場合があるという課題があった。
In the configurations described in
本発明は、上記の事情を考慮してなされたものであり、ブロックデバイスに対してバイト単位でアクセスする場合にアクセスを効率的にすることができるメモリシステム、メモリシステムの制御方法及びプログラムを提供することを目的とする。 The present invention has been made in view of the above circumstances, and provides a memory system, a memory system control method, and a program capable of making access efficient when accessing a block device in units of bytes. The purpose is to do.
上記課題を解決するため、本発明のメモリシステムは、ブロック単位でデータが読み書きされる不揮発性メモリである第1記憶部と、前記第1記憶部とともにストレージデバイスを構成するものであって、バイト単位でデータの読み書きが可能でありかつ前記第1記憶部で読み書きされるデータを一時的に記憶可能な第2記憶部と、所定の論理アドレスに対してバイト単位でデータの読み書きを指示するデータ入出力指示部と、前記第1記憶部にアクセスすることなく前記第2記憶部に対して前記論理アドレスでアクセス可能な場合には前記第2記憶部に対して同期アクセスし、前記第1記憶部にアクセスすることなく前記第2記憶部に対して前記論理アドレスでアクセス可能でない場合には前記第1記憶部又は前記第2記憶部に対して非同期アクセスするデータ入出力制御部とを備えることを特徴とする。 In order to solve the above problems, a memory system according to the present invention comprises a first storage unit, which is a non-volatile memory in which data is read and written in block units, and a storage device together with the first storage unit. A second storage unit capable of reading and writing data in units and temporarily storing data to be read and written in the first storage unit, and data instructing reading and writing of data in byte units with respect to a predetermined logical address When the input / output instruction unit and the second storage unit can be accessed by the logical address without accessing the first storage unit, the second storage unit is synchronously accessed and the first storage unit is accessed. If the second storage unit is not accessible with the logical address without accessing the storage unit, the first storage unit or the second storage unit is not synchronized. Characterized in that it comprises a data input-output control unit for access.
また、本発明の他のメモリシステムは、前記第2記憶部が、不揮発性メモリであることを特徴とする。 In another memory system of the present invention, the second storage unit is a nonvolatile memory.
また、本発明の他のメモリシステムは、前記第2記憶部に対してメモリインタフェースが接続されていることを特徴とする。 In another memory system of the present invention, a memory interface is connected to the second storage unit.
また、本発明のメモリシステムの制御方法は、ブロック単位でデータが読み書きされる不揮発性メモリである第1記憶部と、前記第1記憶部とともにストレージデバイスを構成するものであって、バイト単位でデータの読み書きが可能でありかつ前記第1記憶部で読み書きされるデータを一時的に記憶可能な第2記憶部とを用い、データ入出力指示部によって所定の論理アドレスに対してバイト単位でデータの読み書きを指示し、データ入出力制御部によって前記第1記憶部にアクセスすることなく前記第2記憶部に対して前記論理アドレスでアクセス可能な場合には前記第2記憶部に対して同期アクセスし、前記第1記憶部にアクセスすることなく前記第2記憶部に対して前記論理アドレスでアクセス可能でない場合には前記第1記憶部又は前記第2記憶部に対して非同期アクセスすることを特徴とするメモリシステムの制御方法。 The memory system control method of the present invention comprises a first storage unit that is a nonvolatile memory in which data is read and written in block units, and a storage device together with the first storage unit. Data is read and written in bytes for a predetermined logical address by a data input / output instruction unit using a second storage unit that can read and write data and that can temporarily store data read and written in the first storage unit When the data input / output control unit can access the second storage unit with the logical address without accessing the first storage unit, the second storage unit is synchronously accessed. If the logical address is not accessible to the second storage unit without accessing the first storage unit, the first storage unit or Control method for a memory system, characterized by asynchronous access to said second storage unit.
また、本発明のプログラムは、ブロック単位でデータが読み書きされる不揮発性メモリである第1記憶部と、前記第1記憶部とともにストレージデバイスを構成するものであって、バイト単位でデータの読み書きが可能でありかつ前記第1記憶部で読み書きされるデータを一時的に記憶可能な第2記憶部とを用い、データ入出力指示部によって所定の論理アドレスに対してバイト単位でデータの読み書きを指示する過程と、データ入出力制御部によって前記第1記憶部にアクセスすることなく前記第2記憶部に対して前記論理アドレスでアクセス可能な場合には前記第2記憶部に対して同期アクセスし、前記第1記憶部にアクセスすることなく前記第2記憶部に対して前記論理アドレスでアクセス可能でない場合には前記第1記憶部又は前記第2記憶部に対して非同期アクセスする過程とをコンピュータに実行させることを特徴とする。 The program of the present invention comprises a first storage unit, which is a non-volatile memory in which data is read and written in block units, and a storage device together with the first storage unit, and is capable of reading and writing data in byte units. Using a second storage unit capable of temporarily storing data that can be read and written in the first storage unit, the data input / output instruction unit instructs to read / write data in units of bytes for a predetermined logical address And when the second storage unit can be accessed by the logical address without accessing the first storage unit by the data input / output control unit, the second storage unit is synchronously accessed, If the logical address is not accessible to the second storage unit without accessing the first storage unit, the first storage unit or the Characterized in that to execute the steps of asynchronous access to a computer with respect to second storage unit.
本発明によれば、データ入出力指示部が、所定の論理アドレスに対してバイト単位でデータの読み書きを指示した場合、データ入出力制御部が、第1記憶部にアクセスすることなく第2記憶部に対して指示された論理アドレスでアクセス可能なときには第2記憶部に対して同期アクセスし、アクセス可能でないときには第1記憶部又は第2記憶部に対して非同期アクセスする。この構成では、例えばデータの読み出し時に、第1記憶部にアクセスすることなく第2記憶部に対して指示された論理アドレスでアクセス可能な場合には、データ入出力指示部が第2記憶部からデータが読み出されるのを待機するので、データを読み出したときに例えば読み出したデータをすぐに利用することができる。他方、アクセス可能でない場合にはデータ入出力指示部は、第1記憶部又は第2記憶部からデータが読み出されるのを待機しないので、例えば他の処理を実行することができる。これらの特徴により、アクセス時間の差異に柔軟に対応させ、リソースの効率的な利用を容易に図ることができる。 According to the present invention, when the data input / output instruction unit instructs reading / writing of data in units of bytes to a predetermined logical address, the data input / output control unit performs the second storage without accessing the first storage unit. When the logical address instructed to the unit is accessible, the second storage unit is accessed synchronously, and when the access is not possible, the first storage unit or the second storage unit is asynchronously accessed. In this configuration, for example, when data is read, if the second storage unit can be accessed with the designated logical address without accessing the first storage unit, the data input / output instruction unit is transferred from the second storage unit. Since it waits for the data to be read, for example, the read data can be used immediately when the data is read. On the other hand, when the access is not possible, the data input / output instruction unit does not wait for the data to be read from the first storage unit or the second storage unit, so that other processing can be executed, for example. With these characteristics, it is possible to flexibly cope with a difference in access time and to easily use resources efficiently.
以下、図面を参照して本発明の実施形態について説明する。図1は、本発明の一実施形態のメモリシステムの基本的な構成例を示したブロック図である。図1に示したメモリシステム100は、データ入出力指示部1と、データ入出力制御部2と、ストレージデバイス3とを備える。そして、ストレージデバイス3は、第1記憶部4と、第2記憶部5とを備える。
Hereinafter, embodiments of the present invention will be described with reference to the drawings. FIG. 1 is a block diagram showing a basic configuration example of a memory system according to an embodiment of the present invention. The
メモリシステム100は、例えば、パーソナルコンピュータ、モバイル情報端末、モバイル通信端末、サーバ、センサ端末、電気機器の制御装置等で用いられる情報処理装置の要素として構成することができる。本実施形態においてメモリシステム100は、所定のCPUによってOS(オペレーティングシステム)を含む所定のプログラムを実行することで、ストレージデバイス3に対してバイト単位でアクセスすることができる構成である。また、ストレージデバイス3に対してバイト単位でアクセスする場合には、ストレージデバイス3の各記憶領域に対して、OSカーネル等によって管理される仮想アドレス空間における論理アドレスが割り当てられる。CPUは論理アドレスを指定してストレージデバイス3の各記憶領域にアクセスすることができる。
The
第1記憶部4は、ブロック単位でデータが読み書きされる不揮発性メモリである。第1記憶部4は、例えば、NAND型フラッシュメモリを用いて構成することができる。第1記憶部4は、ブロック単位でデータが読み書き可能に構成されていればよく、例えばNOR型フラッシュメモリ等のバイト単位でランダムアクセスが可能なメモリを用いて構成してもよい。すなわち、不揮発性メモリの構造に限定はない。また、第1記憶部4は、ハードディスク等の磁気記憶装置であってもよい。 The first storage unit 4 is a non-volatile memory in which data is read and written in block units. The first storage unit 4 can be configured using, for example, a NAND flash memory. The first storage unit 4 only needs to be configured so that data can be read and written in units of blocks. For example, the first storage unit 4 may be configured using a memory that can be randomly accessed in units of bytes, such as a NOR flash memory. That is, the structure of the nonvolatile memory is not limited. The first storage unit 4 may be a magnetic storage device such as a hard disk.
第2記憶部5は、バイト単位でデータの読み書きが可能でありかつ第1記憶部4で読み書きされるデータを一時的に記憶可能なメモリである。第2記憶部5は、例えば、データ読み出し時に第1記憶部4からブロック単位で読み出したデータを一時記憶したり、データ書き込み時に第1記憶部4へ書き込むデータを書き込み前に一時記憶したりすることが可能である。すなわち、第2記憶部5は、第1記憶部4用のキャッシュメモリとして使用することができる。第2記憶部5は、DRAM(Dynamic Random Access Memory)、SRAM(Static RAM)等の揮発性メモリを用いて構成してもよいし、NOR型フラッシュメモリ、ReRAM(抵抗変化型メモリ)、MRAM(磁気抵抗メモリ)、FeRAM(強誘電体メモリ)、PCM(相変化メモリ)、STT(スピン注入メモリ)等の不揮発性メモリを用いて構成してもよい。第2記憶部5を不揮発性メモリで構成した場合、例えば電源遮断時等にデータを待避しなくてもよくなる。
The
データ入出力指示部1は、ストレージデバイス3に割り当てられた所定の論理アドレスに対してバイト単位でデータの読み書きを指示する構成である。データ入出力指示部1は、CPUとそのCPUが実行するプログラムとを用いて構成することができ、そのプログラムは例えばOSカーネルの一部として構成することができる。あるいは、データ入出力指示部1を構成するプログラムは、アプリケーションの一部として、又はストレージデバイス3用のデバイスドライバの一部として構成されていてもよい。データ入出力指示部1は、OSが含む他のプログラム、アプリケーションプログラム等からストレージデバイス3に対するバイト単位でのアクセス(すなわちデータの読み出し又は書き込み)が発生あるいは要求された場合にデータの読み書きを指示する処理を実行する。
The data input /
データ入出力指示部1がストレージデバイス3に割り当てられた所定の論理アドレスに対してデータの読み出し又は書き込みを指示した場合、データ入出力制御部2は次の処理を行う。すなわち、データ入出力制御部2は、第1記憶部4へのアクセスを行わなくても第2記憶部5に対して当該論理アドレスでアクセス可能な場合には第2記憶部5に対して同期アクセスし、第1記憶部4へアクセスしなければ第2記憶部5に対して当該論理アドレスでアクセス可能でない場合には第1記憶部4又は第2記憶部5に対して非同期アクセスする。ここで、第1記憶部4へのアクセスを行わなくても第2記憶部5に対して当該論理アドレスでアクセス可能な場合とは、データ読み出し時にはアクセス先の論理アドレスに対応するデータが第1記憶部4から読み出されるなどして既に第2記憶部5に格納されている場合である。また、データ書き込み時には第1記憶部4へのデータの書き戻しを行わなくても第2記憶部5に新たな領域を確保できる場合、又はアクセス先の論理アドレスに対応するデータが第2記憶部5に既に格納されている場合である。
When the data input /
また、第2記憶部5に対する同期アクセスとは、データ入出力指示部1を構成するCPU(あるいはプロセス)がアクセスを指示した後、アクセスが発生するまで待機するという第2記憶部5に対するアクセスである。ここで、アクセスの発生とは、第2記憶部5からのデータの読み出し又は第2記憶部5へのデータの書き込みの実行が開始あるいは終了したことを意味する。
The synchronous access to the
また、第1記憶部4又は第2記憶部5に対する非同期アクセスとは、データ入出力指示部1を構成するCPU(あるいはプロセス)がアクセスを指示した後、アクセスが発生するまで待機せずに、例えば他の処理を実行するという第1記憶部4又は第2記憶部5に対するアクセスである。すなわち、非同期アクセスによるデータ読み出し時には、データ入出力指示部1が、アクセスを指示した後、例えば他の処理を実行する。その一方、データ入出力制御部2は、並行して、例えば、以下の(A1)〜(A3)の処理、又は(B1)〜(B3)の処理を制御する。すなわち、(A1)第1記憶部4から当該論理アドレスに対応するデータをブロック単位で読み出して第2記憶部5に格納する(すなわちコピーする)とともに第2記憶部5に対して当該論理アドレスを割り当てる。(A2)次に、例えば、データ入出力指示部1からの問い合わせに応じて又はデータ入出力制御部2から自発的に、データ入出力制御部2からデータ入出力指示部1へデータが用意できたことを通知する。(A3)そして、第2記憶部5から当該論理アドレスに対応するデータをバイト単位で指示されたバイト数分読み出してCPUに対して出力する。あるいは、(B1)第1記憶部4から当該論理アドレスに対応するデータをブロック単位で読み出して例えば図示していないメインメモリ又はバッファメモリに格納するとともに、格納したメインメモリ又はバッファメモリの記憶領域と論理アドレスとの対応付けを行う。(B2)次に、例えば、データ入出力指示部1からの問い合わせに応じて又はデータ入出力制御部2から自発的に、データ入出力制御部2からデータ入出力指示部1へデータが用意できたことを通知する。(B3)そして、メインメモリ又はバッファメモリから当該論理アドレスに対応するデータをバイト単位で指示されたバイト数分読み出してCPUに対して出力する。上記の(A1)から(A3)の処理では、非同期アクセスによるデータの読み出し時に、一旦、第1記憶部4から第2記憶部5へとデータがコピーされ、その後、第2記憶部5からCPUへとデータが転送される。他方、(B1)から(B3)の処理では、非同期アクセスによるデータの読み出し時に、第1記憶部4からメインメモリ又はバッファメモリへとデータがコピーされ、メインメモリ又はバッファメモリからCPUへデータが転送される。(A1)〜(A3)の処理と、(B1)〜(B3)の処理とのどちらを使うのかは、例えば、ハードウェアの仕様等に応じて予め静的に決めておいてもよいし、メインメモリ等の使用状況等に応じて動的に切り替えるようにしてもよい。あるいは、例えば、(A1)から(A3)の処理を実行した後に(あるいは並行的に)、(B1)から(B3)の処理を実行して、同一ブロックのアクセスに対して次からは同期アクセスできるよう備えておくこともできる。
Asynchronous access to the first storage unit 4 or the
また、第1記憶部4に対する非同期アクセスによるデータ書き込み時には、データ入出力指示部1が、アクセスを指示した後、例えば他の処理を実行する。その一方、データ入出力制御部2は、並行して、例えば、第2記憶部5で回収(あるいは開放)する領域を選択し、選択した領域のデータを第1記憶部4へ書き戻す処理を行う。その後、データ入出力制御部2は、確保した第2記憶部5内の所定の大きさの領域に対して当該論理アドレスに対応した所定の論理アドレスを割り当てる。そして、例えば、データ入出力指示部1からの問い合わせに応じて又はデータ入出力制御部2から自発的に、データ入出力制御部2からデータ入出力指示部1に対してデータの書き込み準備ができたことを通知する。そして、バイト単位で指示されたバイト数分のデータをCPUから第2記憶部5へと入力し、データ入出力制御部2は、第2記憶部5の当該論理アドレスに対応した領域にデータの書き込みを行う。
Further, when data is written to the first storage unit 4 by asynchronous access, the data input /
あるいは、第1記憶部4に対する非同期アクセスによるデータ書き込み時には、データ入出力指示部1が、アクセスを指示した後、例えば他の処理を実行する。その一方、データ入出力制御部2は、並行して、例えば、第2記憶部5に当該論理アドレスに対応するブロック単位分の領域を確保し、第1記憶部4から第2記憶部5へ当該論理アドレスに対応するデータをブロック単位で読み出す(すなわちコピーする)とともに第2記憶部5に対して当該論理アドレスに対応した論理アドレスを割り当てる。そして、例えば、データ入出力指示部1からの問い合わせに応じて又はデータ入出力制御部2から自発的に、データ入出力制御部2からデータ入出力指示部1に対してデータの書き込み準備ができたことを通知する。そして、バイト単位で指示されたバイト数分のデータをCPUから第2記憶部5へ入力し、データ入出力制御部2は、第2記憶部5の当該論理アドレスに対してデータの書き込みを行う。
Alternatively, when data is written to the first storage unit 4 by asynchronous access, the data input /
なお、データ入出力制御部2は、例えば、CPUとそのCPUが実行するプログラムとを用いて構成したり、図示していないストレージデバイス3内に設けたストレージデバイス用のコントローラ等のハードウェアを用いて構成したり、あるいはそれらを組み合わせて用いて構成したりすることができる。そのプログラムは例えばOSカーネルの一部として構成したり、ストレージデバイス3用のデバイスドライバの一部として構成したりすることができる。
The data input /
また、論理アドレスと、第2記憶部5の物理アドレス又は第1記憶部4のブロックアドレス(例えばセクタアドレス、ページアドレス等)との対応付けや変換、あるいは、非同期アクセス時の図示していないメインメモリやバッファメモリの物理アドレスとの対応付けや変換は、例えば、OSカーネルで行ってもよいし、ハードウェアを用いて行ってもよい。また、論理アドレスと物理アドレス及びブロックアドレスとを対応付けるための変換テーブルは、例えば、第2記憶部5に記憶してもよいし、図示していないメインメモリ等の他のメモリに記憶してもよい。
Further, the correspondence between the logical address and the physical address of the
また、第2記憶部5への論理アドレスの割り当てや、第1記憶部4から第2記憶部5へのデータの読み込み、第2記憶部5から第1記憶部4へのデータの書き出し、あるいは、第1記憶部4から図示していないメインメモリ又はバッファメモリへのデータの読み出し等の処理は、例えばデバイスドライバで実行したり、ストレージデバイス3用のコントローラ等のハードウェアを用いて制御したりすることができる。
Also, logical address assignment to the
次に、図2を参照して、メモリシステム100の動作例について説明する。ストレージデバイス3に対してバイト単位でアクセスする場合に、ストレージデバイス3に対するデータのアクセスが発生したとき、データ入出力指示部1は、アクセス先の論理アドレスを指定してデータの読み出し又は指定したデータの書き込みの実行をデータ入出力制御部2に対して指示する(ステップS1)。
Next, an operation example of the
データ入出力制御部2は、指示された論理アドレスに対するアクセスを第1記憶部4に対するアクセス無しで第2記憶部5に対して実行可能であるか否かを判定する(ステップS2)。読み出し時には、ステップS2で、データ入出力制御部2は、第2記憶部5内にアクセス先の論理アドレスに対応する第1記憶部4内のブロックがすでに格納されていた場合に、第1記憶部4にアクセスせずに指示された論理アドレスで第2記憶部5にアクセス可能であると判定する。また、書き込み時には、ステップS2で、データ入出力制御部2は、第2記憶部5内に第1記憶部4へのアクセス無しで空き領域を確保することができる場合、又は、第2記憶部5内にアクセス先の論理アドレスに対応する第1記憶部4内のブロックがすでに格納されていた場合、第1記憶部4にアクセスせずに指示された論理アドレスで第2記憶部5にアクセス可能であると判定する。
The data input /
指示された論理アドレスに対するアクセスを第1記憶部4に対するアクセス無しで第2記憶部5に対して実行可能である場合(ステップS2で「YES」の場合)、データ入出力制御部2は、上述したようにして第2記憶部5に対して同期アクセスする(ステップS3)。一方、指示された論理アドレスに対するアクセスを第1記憶部4に対するアクセス無しでは第2記憶部5に対して実行できない場合(ステップS2で「NO」の場合)、データ入出力制御部2は、上述したようにして第1記憶部4又は第2記憶部5に対して非同期アクセスする(ステップS4)。
When the access to the instructed logical address can be performed on the
次に図3から図6を参照して図1に示したメモリシステム100における処理及び情報の流れについて説明する。図3は、図1に示したストレージデバイス3からデータを読み出す場合の同期アクセスにおける処理の流れの一例を示したシーケンス図である。データ入出力指示部1が、データ入出力制御部2に対して、論理アドレスAからのバイト単位のデータの読み出しを指示すると(S101)、データ入出力制御部2は、第1記憶部4へのアクセス無しで第2記憶部5からデータを読み出し可能であるか否かを判定する(S102)。この例では、データ入出力制御部2は、第1記憶部4へのアクセス無しで第2記憶部5からデータを読み出し可能であると判定するので(S102で「YES」)、第2記憶部5に対して論理アドレスAに対応する物理アドレスからバイト単位でデータを読み出す指示を入力する(S103)。次に、第2記憶部5は、指示されたデータをバイト単位で出力する(S105及びS106)。この例では、データ入出力指示部1は、S101で指示を出力してから、S105でデータが出力されるまで待機状態となる。
Next, processing and information flow in the
図4は、図1に示したストレージデバイス3からデータを読み出す場合の非同期アクセスにおける処理の流れの一例を示したシーケンス図である。ただし、図4は上述した(B1)から(B3)の処理の一例を示している。(A1)から(A3)の処理の場合、以下の説明および図4において、ステップS202を除き、第2記憶部5を、図示していないメインメモリ又はバッファメモリと読み替える必要がある。いま、データ入出力指示部1が、データ入出力制御部2に対して、論理アドレスAからのバイト単位のデータの読み出しを指示すると(S201)、データ入出力制御部2は、第1記憶部4へのアクセス無しで第2記憶部5からデータを読み出し可能であるか否かを判定する(S202)。この例では、データ入出力制御部2は、第1記憶部4へのアクセス無しで第2記憶部5からデータを読み出し可能ではないと判定するので(S202で「NO」)、データ入出力指示部1に対して同期アクセスによる読み出しが不可である旨の通知を行うととともに(S203)、第1記憶部4に対して、論理アドレスAに対応するブロックアドレスからブロック単位でデータを読み出すよう所定の指示を行う(S204)。データ入出力制御部2は、第1記憶部4が出力したデータを、第2記憶部5の所定の領域に格納する制御を行う(S205及びS206)。なお、S204からS206の処理は、複数回繰り返して行ってもよいし、あるいは、第1記憶部4から読み出されたデータを第2記憶部5に直接転送するような制御を行ってもよい。
FIG. 4 is a sequence diagram showing an example of the flow of processing in asynchronous access when data is read from the
次に、データ入出力制御部2は、データ入出力指示部1に対してデータの読み出しが可能になった旨の通知を行う(S207)。通知を受けたデータ入出力指示部1が、データの出力指示を行うと(S208)。データ入出力制御部2は、第2記憶部5に対して論理アドレスAに対応する物理アドレスからバイト単位でデータを読み出す指示を入力する(S209)。次に、第2記憶部5は、指示されたデータをバイト単位で出力する(S110及びS211)。この例では、データ入出力指示部1は、S201で指示を出力してから、S203でデータが同期アクセスによる読み出し不可であるとの通知を受けるまで待機状態となる。
Next, the data input /
図5は、図1に示したストレージデバイス3へデータを書き込む場合の同期アクセスにおける処理の流れの一例を示したシーケンス図である。データ入出力指示部1が、データ入出力制御部2に対して、論理アドレスAへのバイト単位のデータの書き込みを指示すると(S301)、データ入出力制御部2は、第1記憶部4へのアクセス無しで第2記憶部5へデータを書き込み可能であるか否かを判定する(S302)。この例では、データ入出力制御部2は、第1記憶部4へのアクセス無しで第2記憶部5へデータを書き込み可能であると判定するので(S302で「YES」)、第2記憶部5に対して論理アドレスAに対応する物理アドレスへバイト単位でデータを書き込む指示を入力する(S303)。次に、第2記憶部5は、指示されたデータをバイト単位で入力し、書き込みが完了すると書き込み成功通知を出力する(S304及びS305)。次に、データ入出力制御部2は、データを書き込んだ第2記憶部5の領域について当該領域を開放する際に第1記憶部4への書き戻しが必要である旨の設定を行う(S306)。この例では、データ入出力指示部1は、S301で指示を出力してから、S305でデータ書き込みの成功通知がなされるまで待機状態となる。
FIG. 5 is a sequence diagram showing an example of the flow of processing in synchronous access when data is written to the
図6は、図1に示したストレージデバイス3へデータを書き込む場合の非同期アクセスにおける処理の流れの一例を示したシーケンス図である。データ入出力指示部1が、データ入出力制御部2に対して、論理アドレスAへのバイト単位のデータの書き込みを指示すると(S401)、データ入出力制御部2は、第1記憶部4へのアクセス無しで第2記憶部5へデータを書き込み可能であるか否かを判定する(S402)。この例では、第2記憶部5に空き領域が無いこととすると、データ入出力制御部2は、第1記憶部4へのアクセス無しで第2記憶部5へデータを書き込み可能ではないと判定するので(S402で「NO」)、第2記憶部5に対して開放する領域を指定し、データの読み出しを指示する(S404)。データ入出力制御部2は、第2記憶部5からデータが出力されると(S405)、出力されたデータを第1記憶部4へ書き戻すための制御を行う(S406)。S406でデータ入出力制御部2は、書き戻しが完了したら開放した領域に対して論理アドレスAに対応した論理アドレスを割り当てる。次に、データ入出力制御部2は、第2記憶部5に対して論理アドレスAに対応する物理アドレスへバイト単位でデータを書き込む指示を入力する(S407)。次に、第2記憶部5は、指示されたデータをバイト単位で入力し、書き込みが完了すると書き込み成功通知を出力する(S408及びS409)。次に、データ入出力制御部2は、データを書き込んだ第2記憶部5の領域について当該領域を開放する際に第1記憶部4への書き戻しが必要である旨の設定を行う(S410)。なお、S404からS406の処理は、複数回繰り返して行ってもよいし、あるいは、第2記憶部5から読み出されたデータを第1記憶部4に直接転送するような制御を行ってもよい。この例では、データ入出力指示部1が、S401で指示を出力してから、S403で同期アクセスによる書き込みが不可である旨を示す通知をうけるまで待機状態となる。
FIG. 6 is a sequence diagram showing an example of the flow of processing in asynchronous access when data is written to the
本実施形態では、データ入出力指示部1が、ストレージデバイス3に割り当てられた所定の論理アドレスに対してバイト単位でデータの読み書きを指示した場合、データ入出力制御部2が、次の処理を行う。すなわち、データ入出力制御部2は、第1記憶部4にアクセスすることなく第2記憶部5に対して指示された論理アドレスでアクセス可能なときには第2記憶部5に対して同期アクセスし、アクセス可能ではないときには第1記憶部4又は第2記憶部5に対して非同期アクセスする。この構成では、例えばデータの読み出し時に、第1記憶部4にアクセスすることなく第2記憶部5に対して指示された論理アドレスでアクセス可能な場合には、データ入出力指示部1が第2記憶部5からデータが読み出されるのを待機するので、データを読み出したときに例えば読み出したデータをすぐに利用することができる。他方、アクセス可能でない場合にはデータ入出力指示部1は、データが読み出されるのを待機しないので、例えば他の処理を実行することができる。これらの特徴により、リソースの効率的な利用を容易に図ることができる。
In this embodiment, when the data input /
次に、図7から図10を参照して、図1に示したメモリシステム100のハードウェアの構成例について説明する。図7に示したメモリシステム100aは、CPU10と、チップセット20と、ストレージデバイス30と、メモリインタフェース40と、I/O(入出力)インタフェース50とを備える。そして、ストレージデバイス30は、コントローラ31と、キャッシュメモリ32と、フラッシュメモリ・ディスクドライブ33とを備える。
Next, a hardware configuration example of the
図7に示したストレージデバイス30が、図1に示したストレージデバイス3に対応する構成である。図7に示したキャッシュメモリ32が、図1に示した第2記憶部5に対応する構成である。図7に示したフラッシュメモリ・ディスクドライブ33が、図1に示した第1記憶部4に対応する構成である。そして、図7に示したCPU10及びCPU10が実行するプログラムやコントローラ31が、図1に示したデータ入出力指示部1又はデータ入出力制御部2に対応する構成である。
The
メモリインタフェース40は、例えばDRAM等の揮発性メモリで使用されている所定の規格のインタフェースである。I/Oインタフェース50は、例えばSATA(Serial ATA)、SAS(Serial Attached SCSI)、PCI Expres(登録商標)等のI/Oインタフェースである。
The
また、チップセット20は、CPU20にI/Oインタフェース50等を接続するための制御回路である。なお、図7に示した例では、メモリインタフェース40をCPU10に直接接続しているが、メモリインタフェース40はチップセット20を介してCPU10に接続されていてもよい。
The chip set 20 is a control circuit for connecting the I /
コントローラ31は、I/Oインタフェース50を介してCPU10との間で所定の制御信号やデータ信号を入出力することで、CPU10とキャッシュメモリ32又はフラッシュメモリ・ディスクドライブ33との間で例えば所定のセクタ単位でデータを入出力する。また、キャッシュメモリ32は、メモリインタフェース40を介してCPU10に接続されていて、CPU10はキャッシュメモリ32に対してメモリインタフェース40を介してアクセスすることができる。また、コントローラ31は、キャッシュメモリ32とフラッシュメモリ・ディスクドライブ33との間のデータ転送を制御する。
The
メモリシステム100aでは、図2等を参照して説明した同期アクセスをメモリインタフェース40を介して実行し、また、非同期アクセスをI/Oインタフェース50又はメモリインタフェース40を介して実行することができる。したがって、メモリシステム100aでは、メモリインタフェース40を介してキャッシュメモリ32にアクセスすることで、I/Oインタフェース50を介してキャッシュメモリ32にアクセスする場合と比較して、データ入出力の際に使用されるソフトウェアの階層を容易に少なくすることができ、アクセスの高速化を図ったり、CPU負荷を小さくしたりすることができる。
In the
次に、図8を参照して図1に示したメモリシステム100の他のハードウェアの構成例について説明する。図8に示したメモリシステム100bは、CPU10と、チップセット20と、ストレージデバイス30aと、メモリインタフェース40と、I/Oインタフェース50とを備える。そして、ストレージデバイス30aは、キャッシュメモリ32と、フラッシュメモリ・ディスクドライブ33とを備える。図8に示したメモリシステム100bは、図7に示したメモリシステム100aと比較して、ストレージデバイス30aにおいてコントローラ31が省略されるとともに、フラッシュメモリ・ディスクドライブ33がI/Oインタフェース50に直接接続されている点が異なっている。なお、図8において、図7に示したものに対応する構成には同一の符号をつけて説明を省略する。
Next, another hardware configuration example of the
図8に示したメモリシステム100bでは、例えば、キャッシュメモリ32とフラッシュメモリ・ディスクドライブ33との間のデータ転送を、CPU10が実行するプログラムであるストレージデバイス30a用のデバイスドライバによって制御することができる。
In the
次に、図9を参照して図1に示したメモリシステム100の他のハードウェアの構成例について説明する。図9に示したメモリシステム100cは、CPU10と、チップセット20と、ストレージデバイス30bと、メモリインタフェース40とを備える。そして、ストレージデバイス30bは、コントローラ31bと、キャッシュメモリ32と、フラッシュメモリ・ディスクドライブ33とを備える。図9に示したメモリシステム100cは、図7に示したメモリシステム100aと比較して、I/Oインタフェース50が省略されるとともに、コントローラ31bにおいてI/Oインタフェース50に対する接続機能が省略されている。なお、図9において、図7に示したものに対応する構成には同一の符号をつけて説明を省略する。
Next, another hardware configuration example of the
コントローラ31bは、キャッシュメモリ32とフラッシュメモリ・ディスクドライブ33との間のデータ転送を制御する。また、メモリシステム100cでは、CPU10とフラッシュメモリ・ディスクドライブ33との間の所定のセクタ単位でのデータ入出力は、例えば、キャッシュメモリ32を介して実行することができる。
The
次に、図10を参照して図1に示したメモリシステム100の他のハードウェアの構成例について説明する。図10に示したメモリシステム100dは、CPU10と、チップセット20と、ストレージデバイス30cと、I/Oインタフェース50と、I/Oインタフェース60とを備える。そして、ストレージデバイス30cは、コントローラ31と、キャッシュメモリ32cと、フラッシュメモリ・ディスクドライブ33とを備える。図10に示したメモリシステム100dは、図7に示したメモリシステム100aと比較して、メモリインタフェース40に代えてI/Oインタフェース60が設けられている点と、CPU10とキャッシュメモリ32cとの間のデータの入出力が、I/Oインタフェース60及びチップセット20を介して実行される点とが異なっている。なお、図10において、図7に示したものに対応する構成には同一の符号をつけて説明を省略する。
Next, another hardware configuration example of the
メモリシステム100dでは、図2等を参照して説明した同期アクセスをI/Oインタフェース60を介して実行し、また、非同期アクセスをI/Oインタフェース50を介して実行することができる。したがって、メモリシステム100dでは、例えばI/Oインタフェース60を、I/Oインタフェース50より高速なI/Oインタフェースとすることで、I/Oインタフェースの能力を適切に生かすことができる。
In the
次に、図11を参照して、図7に示したメモリシステム100aにおけるキャッシュメモリ32と、仮想メモリ空間との対応関係について説明する。図11において、CPU10がアクセスする仮想メモリ空間80は、フラッシュメモリ・ディスクドライブ33の記憶領域の一部又は全部に対応するように設定される。また、キャッシュメモリ32は、一定の大きさの記憶領域であるページフレーム32−1、32−2、32−3、…を単位として管理される。ページフレーム32−1、32−2、32−3、…の大きさは、例えばフラッシュメモリ・ディスクドライブ33のデータアクセス単位であるブロック単位と同一の大きさとしてもよいし、異なる大きさとしてもよい。ただし、以下ではブロック単位とページフレームとのサイズが同一である場合について説明を行う。なお、図8〜図10に示したメモリシステム100b〜100dにおいてもキャッシュメモリ32又は32cと仮想メモリ空間との対応関係については同様である。
Next, a correspondence relationship between the
CPU10がストレージデバイス30に対してバイト単位で、メインメモリへのアクセスと同様にしてアクセスする場合(このアクセス方式はXIP(eXecute-In-Place)と呼ばれる)、フラッシュメモリ・ディスクドライブ33及びキャッシュメモリ32に対する論理アドレスの割り当ては、例えば、OSカーネルのファイルシステムによって行うことができる。ただし、ブロック単位でアクセスが行われるブロックデバイスであるフラッシュメモリ・ディスクドライブ33に対しては、CPU10からはバイト単位で直接アクセスすることはできないため、次のようにしてフラッシュメモリ・ディスクドライブ33のデータを例えばキャッシュメモリ32へコピーした後にCPU10からキャッシュメモリ32に対してアクセスすることで、等価的にフラッシュメモリ・ディスクドライブ33への直接アクセスを実現する。すなわち、例えば仮想アドレス空間80における所定の論理アドレスに対するデータ読み出しアクセスに対しては、データのキャッシュメモリ32へのコピーが次のように行われる。つまり、当該論理アドレスを含むブロックのデータをフラッシュメモリ・ディスクドライブ33からキャッシュメモリ32の所定のページフレーム32−1、32−2、32−3、…のいずれかに対してコピーする処理が行われる。その際、コピーしたページフレームに対してコピー元のブロックアドレス又は当該ブロックに割り当てられている先頭の論理アドレス等の情報が所定のテーブルに登録される。なお、図11に示したように、ページフレーム32−1、32−2、32−3、…の配列と、仮想アドレス空間80における配置の順番は任意に設定することができ、図11に示した例では、ページフレーム32−1、32−2及び32−3が仮想アドレス空間80におけるページフレーム81、83及び82に対応付けられている。
When the
なお、キャッシュメモリ32におけるページフレームの管理は、コントローラ31やデバイスドライバによって実現できるが、コントローラ31で管理する場合、ページフレーム32−1、32−2、32−3、…を回収したときには、その旨をOSカーネルに通知し、仮想アドレス空間80の設定情報であるマップテーブルの内容を更新する。
The management of the page frame in the
なお、本発明の実施の形態は上記のものに限定されず、例えば、図1に示す構成においてデータ入出力指示部1とデータ入出力制御部2を一体的に構成したり、データ入出力指示部1やデータ入出力制御部2を複数の機能ブロックに分割したり、あるいは、図7から図11に示した構成例においてチップセット20を省略したりといった変更を適宜行うことができる。また、本発明の実施形態においてCPUが実行するプログラムは、その全部又は一部を、コンピュータ読取可能な記録媒体や通信回線を介して頒布することが可能である。
The embodiment of the present invention is not limited to the above. For example, in the configuration shown in FIG. 1, the data input /
1 データ入出力指示部
2 データ入出力制御部
3、30、30a、30b、30c ストレージデバイス
4 第1記憶部
5 第2記憶部
10 CPU
20 チップセット
31、31b コントローラ
32、32c キャッシュメモリ
33 フラッシュメモリ・ディスクドライブ
40 メモリインタフェース
50、60 I/Oインタフェース
100、100a、100b、100c、100d メモリシステム
DESCRIPTION OF
20
Claims (5)
前記第1記憶部とともにストレージデバイスを構成するものであって、バイト単位でデータの読み書きが可能でありかつ前記第1記憶部で読み書きされるデータを一時的に記憶可能な第2記憶部と、
所定の論理アドレスに対してバイト単位でデータの読み書きを指示するデータ入出力指示部と、
前記第1記憶部にアクセスすることなく前記第2記憶部に対して前記論理アドレスでアクセス可能な場合には前記第2記憶部に対して同期アクセスし、前記第1記憶部にアクセスすることなく前記第2記憶部に対して前記論理アドレスでアクセス可能でない場合には前記第1記憶部又は前記第2記憶部に対して非同期アクセスするデータ入出力制御部と
を備えることを特徴とするメモリシステム。 A first storage unit that is a nonvolatile memory in which data is read and written in block units;
A second storage unit that constitutes a storage device together with the first storage unit, can read and write data in byte units, and can temporarily store data read and written in the first storage unit;
A data input / output instruction unit for instructing reading / writing of data in units of bytes with respect to a predetermined logical address;
When the second storage unit can be accessed with the logical address without accessing the first storage unit, the second storage unit is accessed synchronously and the first storage unit is not accessed. A data input / output control unit that asynchronously accesses the first storage unit or the second storage unit when the second storage unit is not accessible by the logical address; .
ことを特徴とする請求項1に記載のメモリシステム。 The memory system according to claim 1, wherein the second storage unit is a nonvolatile memory.
ことを特徴とする請求項1又は2に記載のメモリシステム。 The memory system according to claim 1, wherein a memory interface is connected to the second storage unit.
前記第1記憶部とともにストレージデバイスを構成するものであって、バイト単位でデータの読み書きが可能でありかつ前記第1記憶部で読み書きされるデータを一時的に記憶可能な第2記憶部と
を用い、
データ入出力指示部によって所定の論理アドレスに対してバイト単位でデータの読み書きを指示し、
データ入出力制御部によって前記第1記憶部にアクセスすることなく前記第2記憶部に対して前記論理アドレスでアクセス可能な場合には前記第2記憶部に対して同期アクセスし、前記第1記憶部にアクセスすることなく前記第2記憶部に対して前記論理アドレスでアクセス可能でない場合には前記第1記憶部又は前記第2記憶部に対して非同期アクセスする
ことを特徴とするメモリシステムの制御方法。 A first storage unit that is a nonvolatile memory in which data is read and written in block units;
A second storage unit that constitutes a storage device together with the first storage unit, and that can read and write data in byte units and that can temporarily store data read and written in the first storage unit; Use
The data input / output instruction unit instructs to read / write data in bytes for a given logical address,
When the data input / output control unit can access the second storage unit without accessing the first storage unit with the logical address, the second storage unit is synchronously accessed and the first storage unit is accessed. Controlling the memory system, wherein the first storage unit or the second storage unit is accessed asynchronously when the logical address is not accessible to the second storage unit without accessing the storage unit. Method.
前記第1記憶部とともにストレージデバイスを構成するものであって、バイト単位でデータの読み書きが可能でありかつ前記第1記憶部で読み書きされるデータを一時的に記憶可能な第2記憶部と
を用い、
データ入出力指示部によって所定の論理アドレスに対してバイト単位でデータの読み書きを指示する過程と、
データ入出力制御部によって前記第1記憶部にアクセスすることなく前記第2記憶部に対して前記論理アドレスでアクセス可能な場合には前記第2記憶部に対して同期アクセスし、前記第1記憶部にアクセスすることなく前記第2記憶部に対して前記論理アドレスでアクセス可能でない場合には前記第1記憶部又は前記第2記憶部に対して非同期アクセスする過程と
をコンピュータに実行させることを特徴とするプログラム。 A first storage unit that is a nonvolatile memory in which data is read and written in block units;
A second storage unit that constitutes a storage device together with the first storage unit, and that can read and write data in byte units and that can temporarily store data read and written in the first storage unit; Use
A process of instructing reading and writing of data in byte units for a predetermined logical address by the data input / output instruction unit,
When the data input / output control unit can access the second storage unit without accessing the first storage unit with the logical address, the second storage unit is synchronously accessed and the first storage unit is accessed. Causing the computer to execute the process of asynchronously accessing the first storage unit or the second storage unit when the second storage unit is not accessible at the logical address without accessing the unit. A featured program.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014191021A JP2016062406A (en) | 2014-09-19 | 2014-09-19 | Memory system, control method for memory system, and program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014191021A JP2016062406A (en) | 2014-09-19 | 2014-09-19 | Memory system, control method for memory system, and program |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2016062406A true JP2016062406A (en) | 2016-04-25 |
Family
ID=55796065
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014191021A Pending JP2016062406A (en) | 2014-09-19 | 2014-09-19 | Memory system, control method for memory system, and program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2016062406A (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10303617B2 (en) | 2016-11-30 | 2019-05-28 | Samsung Electronics Co., Ltd. | Storage device supporting byte accessible interface and block accessible interface and electronic system including the same |
CN110114762A (en) * | 2016-12-23 | 2019-08-09 | Ati科技无限责任公司 | Method and apparatus for accessing the nonvolatile memory as byte-addressable memories |
CN112703481A (en) * | 2018-09-12 | 2021-04-23 | 美光科技公司 | Hybrid memory system interface |
-
2014
- 2014-09-19 JP JP2014191021A patent/JP2016062406A/en active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10303617B2 (en) | 2016-11-30 | 2019-05-28 | Samsung Electronics Co., Ltd. | Storage device supporting byte accessible interface and block accessible interface and electronic system including the same |
CN110114762A (en) * | 2016-12-23 | 2019-08-09 | Ati科技无限责任公司 | Method and apparatus for accessing the nonvolatile memory as byte-addressable memories |
JP2020502694A (en) * | 2016-12-23 | 2020-01-23 | エーティーアイ・テクノロジーズ・ユーエルシーAti Technologies Ulc | Method and apparatus for accessing non-volatile memory as byte addressable memory |
JP7227907B2 (en) | 2016-12-23 | 2023-02-22 | エーティーアイ・テクノロジーズ・ユーエルシー | Method and apparatus for accessing non-volatile memory as byte-addressable memory |
CN110114762B (en) * | 2016-12-23 | 2023-09-15 | Ati科技无限责任公司 | Method and apparatus for accessing non-volatile memory as byte addressable memory |
CN112703481A (en) * | 2018-09-12 | 2021-04-23 | 美光科技公司 | Hybrid memory system interface |
JP2021536643A (en) * | 2018-09-12 | 2021-12-27 | マイクロン テクノロジー,インク. | Hybrid memory system interface |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110471861B (en) | Data storage method in flash memory device and flash memory device | |
KR101301840B1 (en) | Method of data processing for non-volatile memory | |
KR102275563B1 (en) | Host-managed non-volatile memory | |
US20190129876A1 (en) | Devices and methods for data storage management | |
US11194711B2 (en) | Storage device | |
US11210226B2 (en) | Data storage device and method for first processing core to determine that second processing core has completed loading portion of logical-to-physical mapping table thereof | |
KR20200121372A (en) | Hybrid memory system | |
CN111796759B (en) | Computer readable storage medium and method for fragment data reading on multiple planes | |
CN110597742A (en) | Improved storage model for computer system with persistent system memory | |
US20230072589A1 (en) | Hierarchical memory systems | |
JP2021149374A (en) | Data processing device | |
JP2016062406A (en) | Memory system, control method for memory system, and program | |
US9934100B2 (en) | Method of controlling memory swap operation and data processing system using same | |
KR20200117032A (en) | Hybrid memory system | |
KR20220050177A (en) | 3-tier hierarchical memory system | |
EP3136245B1 (en) | Computer | |
US20210208808A1 (en) | Host Supported Partitions in Storage Device | |
US9836220B2 (en) | Data processing system and method of operating the same | |
KR101834082B1 (en) | Apparatus and method of managing multi solid state disk system | |
US9317440B2 (en) | Computing device and virtual device control method for controlling virtual device by computing system | |
US11835992B2 (en) | Hybrid memory system interface | |
US20230359578A1 (en) | Computing system including cxl switch, memory device and storage device and operating method thereof | |
JP2018195185A (en) | Storage device and control method | |
CN114185480A (en) | Memory system and data processing system | |
KR20230144434A (en) | Operation method of operating host device, and operation method of storage device |