以下、本技術を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
1.第1の実施の形態(ホストコンピュータからアドレス変換情報ページを取得する例)
2.第2の実施の形態(転送ページ数が少ないときにホストコンピュータがアドレス変換を行う例)
<1.第1の実施の形態>
[メモリシステムの構成例]
図1は、第1の実施の形態における情報処理システムの一構成例を示す全体図である。この情報処理システムは、ホストコンピュータ100、メモリコントローラ200および不揮発性メモリ300を備える。
ホストコンピュータ100は、情報処理システム全体を制御するものである。このホストコンピュータ100は、論理アドレスを指定した転送コマンドや、転送データを生成してメモリコントローラ200に信号線109を介して供給する。また、ホストコンピュータ100は、メモリコントローラ200から信号線109を介してデータやステータスを受け取る。データは、転送データや管理情報を含む。
ここで、論理アドレスは、メモリコントローラ200および不揮発性メモリ300を含むストレージが定義したアドレス空間におけるアドレスである。論理アドレス空間のアクセス単位がページである場合、それぞれのページの論理アドレスは、論理ページアドレスと呼ばれる。
また、転送データは、例えば、ホストコンピュータ100においてプログラム等により処理されるユーザデータである。管理情報の詳細については、後述する。転送コマンドは、データの転送を行うためのコマンドであり、例えば、データの書込みを指示するライトコマンドや、データの読出しを指示するリードコマンドを含む。ステータスは、転送コマンドの実行結果やメモリコントローラ200等の状況を通知する情報である。
メモリコントローラ200は、不揮発性メモリ300を制御するものである。このメモリコントローラ200は、ホストコンピュータ100により指示されたときや、電源投入時などにおいて初期化処理を実行する。この初期化処理においてメモリコントローラ200は、アドレス変換情報を不揮発性メモリ300から信号線209を介して取得し、ホストコンピュータ100に転送する。ここで、アドレス変換情報は、論理アドレスを不揮発性メモリ300の物理アドレスに変換するための情報であり、具体的には、論理アドレスと物理アドレスを対応付けたエントリを複数含む情報である。不揮発性メモリ300のアクセス単位がページである場合、それぞれのページの物理アドレスは、物理ページアドレスと呼ばれる。
この初期化処理において、メモリコントローラ200は、そのアドレス変換情報の中から一部のエントリを選択して保持する。全エントリを保持しないのは、前述したように、メモリコントローラ200のリソースに余裕がなくなるおそれや、メモリコントローラ200のコストが高くなるおそれがあるためである。
初期化処理の後にホストコンピュータ100から転送コマンドを受け取ると、メモリコントローラ200は、保持しているエントリに基づいて、その転送コマンドにより指定された論理アドレスを物理アドレスに変換する。また、指定された論理アドレスを含むエントリを保持していない場合には、メモリコントローラ200は、そのエントリをホストコンピュータ100から取得する。このような論理アドレスから物理アドレスに変換する処理をアドレス変換と称する。このアドレス変換により、不揮発性メモリにおいて書込み不良が発生した物理ページへの書込みを排除するための代替処理や、各メモリセルの書込み頻度を平準化するウェアレベリング処理などを行うことができる。
アドレス変換を行うと、メモリコントローラ200は、変換した物理アドレスを用いて信号線109および信号線209を介してホストコンピュータ100と不揮発性メモリ300との間で転送データの転送を行う。
上述したようにメモリコントローラ200がアドレス変換情報のエントリをホストコンピュータ100から信号線109を介して取得する構成とすれば、メモリコントローラ200は、転送データの転送中にアドレス変換情報の転送を行うことができる。これは、メモリコントローラ200が不揮発性メモリ300との間の信号線209を介して転送データを転送する一方で、アドレス変換情報については、ホストコンピュータ100との間の信号線109を介して転送することができるためである。このように、メモリコントローラ200は、アドレス変換情報の転送と転送データの転送とを並列に行うことができるため、転送データの転送の遅延を抑制することができる。
なお、メモリコントローラ200は、特許請求の範囲に記載の記憶制御装置の一例である。
不揮発性メモリ300は、メモリコントローラ200の制御に従って、データを記憶するものである。この不揮発性メモリ300は、管理情報と、転送データ(ユーザデータ)とを記憶する。管理情報は、アドレス変換情報、アクセス頻度情報および空き物理アドレス情報を含む。ここで、アクセス頻度情報は、アドレス変換情報におけるエントリごとに、そのエントリに対応する論理アドレスに対するアクセス頻度を示す情報である。また、空き物理アドレス情報は、論理アドレスが対応付けられていない物理ページアドレスを示す情報である。論理アドレスが対応付けられていない物理アドレスは、空いている物理アドレスとして扱われる。不揮発性メモリ300は、メモリコントローラ200の制御に従って、管理情報をメモリコントローラ200に信号線209を介して供給する。また、不揮発性メモリ300は、メモリコントローラ200の制御に従って転送データの転送を行う。
なお、情報処理システムは、不揮発性メモリ300にデータを記憶させているが、この構成に限定されない。データを記憶する記憶装置であれば、不揮発性メモリ300以外の装置(例えば、HDD:Hard Disk Drive)にデータを記憶させてもよい。また、不揮発性メモリ300は、特許請求の範囲に記載の記憶装置の一例である。
また、情報処理システムは、記憶装置を制御する記憶制御装置としてメモリコントローラ200を備えるが、不揮発性メモリ以外の記憶装置を用いる場合、HDDコントローラなど、メモリコントローラ以外の記憶制御装置を備えてもよい。また、メモリコントローラ200は1つの不揮発性メモリ300を制御する構成としているが、複数の不揮発性メモリ300を制御する構成であってもよい。
[ホストコンピュータの構成例]
図2は、第1の実施の形態におけるホストコンピュータ100の一構成例を示すブロック図である。このホストコンピュータ100は、CPU(Central Processing Unit)120、RAM130、ROM(Read Only Memory)111、バス112、記憶部113およびコントローラインターフェース116を備える。記憶部113には、アプリケーションプログラム114およびデバイスドライバ115などが記憶される。
CPU120は、ホストコンピュータ100全体を制御するものである。RAM130は、CPU120が実行する処理において必要となるデータを一時的に保持するものである。ROM111は、CPU120が実行するプログラム等を記憶するものである。バス112は、CPU120、RAM130、ROM111、記憶部113およびコントローラインターフェース116が相互にデータを交換するための共通の経路である。コントローラインターフェース116は、ホストコンピュータ100とメモリコントローラ200とがデータやコマンドを相互に交換するためのインターフェースである。
図3は、第1の実施の形態におけるホストコンピュータ100の機能構成例を示すブロック図である。このホストコンピュータ100は、初期化処理部121、転送コマンド発行部122、データ転送処理部123、RAM130およびアドレス変換情報管理部124を備える。RAM130には、アドレス変換情報保持領域131が設けられる。なお、RAM130は、特許請求の範囲に記載の保持部の一例である。
図3における初期化処理部121の機能は、例えば、図2におけるCPU120、デバイスドライバ115およびコントローラインターフェース116などにより実現される。また、図3における転送コマンド発行部122およびデータ転送処理部123の機能は、例えば、図2におけるCPU120、アプリケーションプログラム114、デバイスドライバ115およびコントローラインターフェース116などにより実現される。図3におけるアドレス変換情報管理部124の機能も、図2におけるCPU120、アプリケーションプログラム114、デバイスドライバ115およびコントローラインターフェース116などにより実現される。
初期化処理部121は、情報処理システムへの電源投入時などに、所定の初期化処理を実行するものである。この初期化処理において、初期化処理部121は、アドレス変換情報を読み出すための初期化コマンドを発行して、メモリコントローラ200からアドレス変換情報およびステータスを受け取る。初期化処理部121は、取得したアドレス変換情報をRAM130内のアドレス変換情報保持領域131に保持させる。初期化コマンドにおいて、データの転送先は、ホストコンピュータ100およびメモリコントローラ200のいずれかに設定することができる。アドレス変換情報を読み出すための初期化コマンドの転送先は、ホストコンピュータ100に設定される。
また、初期化処理部121は、アクセス頻度情報を読み出すための初期化コマンドと、空き物理アドレス情報を読み出すための初期化コマンドと、アドレス変換情報の一部のエントリとを読み出すための初期化コマンドとをそれぞれ発行する。ただし、これらの初期化コマンドにおいて、転送先は、ホストコンピュータ100およびメモリコントローラ200のうちメモリコントローラ200に設定される。メモリコントローラ200は、これらの初期化コマンドに従って、アクセス頻度情報と空き物理アドレス情報とアドレス変換情報の一部とを不揮発性メモリ300から読み出して保持する。初期化処理が終了すると、初期化処理部121は、転送コマンド発行部122に初期化の終了を通知する。
ここで、初期化コマンドは、読出開始ページアドレス、転送ページ数、および、転送先アドレスをさらに含む。読出開始ページアドレスは、リードデータの読出しを開始するページアドレスである。転送先アドレスは、リードデータの転送先のアドレスであり、ホストコンピュータ100およびメモリコントローラ200のいずれかのRAMのアドレスが設定される。
転送コマンド発行部122は、転送コマンドを発行するものである。この転送コマンドは、リードコマンドおよびライトコマンドを含む。リードコマンドは、読出開始ページアドレス、転送ページ数および転送先アドレスを含む。読出開始ページアドレスは、リードデータの読出しを開始するページアドレスである。転送先アドレスは、リードデータの転送先のアドレスであり、ホストコンピュータ100のRAMのアドレスが設定される。
また、ライトコマンドは、転送元アドレス、書込開始ページアドレスおよび転送ページ数を含む。転送元アドレスは、ライトデータの転送元のアドレスであり、ホストコンピュータ100のRAMのアドレスが設定される。書込開始ページアドレスは、ライトデータの書込みを開始する論理ページアドレスである。
ここで、転送コマンドにおいては、メモリコントローラ200を含むストレージが定義する所定の論理ページアドレス空間内のアドレスが指定される。例えば、論理ページアドレス空間として、507,904(=0x7c000)ページが定義される。この論理ページアドレス空間内の論理ページアドレスは、例えば、0x00000乃至0x07bfffである。ここで、「0x」を付した数値は、16進数で表した数値である。以下、「0x」を付した数値は16進数で表したものであり、付していない数値は10進数で表したものとする。
一方、不揮発性メモリ300において、ユーザデータの記憶容量は、例えば、2ギガ(=2,147,483,648)バイトであり、また、冗長データを含まない物理ページのサイズは4096バイトである。この場合、不揮発性メモリ300の物理ページ数は、524,288(=2,147,483,648/4096)ページであり、物理ページアドレスは、例えば、0x00000乃至0x07ffffである。下記の式より、物理ページ数(524,288)は、論理ページ数(507,904)に対して、約3%の余裕をもつ。
524,288/507,904=1.03 ・・・式1
このように論理ページ数が設定されるのは、不揮発性メモリ300内の物理ページが書込み不良などにより使用不可となった場合に代替して論理ページに割り当てることができるように、空いている物理ページを確保しておくためである。また、不揮発性メモリ300内の記憶素子のそれぞれの書き換え回数を平準化するウェアレべリングを実現するためである。
上述の論理ページアドレス空間のサイズは、2ギガバイトの記憶容量の不揮発性メモリ300が1つ接続された構成を想定しているが、そのサイズは、接続される不揮発性メモリ300の記憶容量や個数に依存する。例えば、不揮発性メモリ300の記憶容量または個数を2倍にする場合、論理ページアドレス空間のサイズは2倍に設定される。
データ転送処理部123は、メモリコントローラ200との間でデータを転送するものである。このデータ転送処理部123は、転送コマンドがライトコマンドの場合、書き込む対象のユーザデータを生成して、ライトコマンドとともにメモリコントローラ200に供給する。そして、データ転送処理部123は、ステータスをメモリコントローラ200から受け取る。一方、転送コマンドがリードコマンドの場合、データ転送処理部123は、リードコマンドをメモリコントローラ200に供給して、読み出されたユーザデータとステータスとをメモリコントローラ200から受け取る。
なお、論理アドレス空間および物理アドレス空間のアクセス単位として「ページ」の名称を用いているが、アクセス単位の名称はページに限定されない。例えば、セクタやブロックであってもよい。また、論理アドレス空間および物理アドレス空間のそれぞれにおけるアクセス単位の名称およびデータサイズは同一であるが、論理アドレス空間と物理アドレス空間とで、アクセス単位の名称や、そのデータサイズが異なる構成であってもよい。
なお、データ転送処理部123は、特許請求の範囲に記載の指示部の一例である。
アドレス変換情報保持領域131には、アドレス変換情報が保持される。このアドレス変換情報は、論理ページアドレスと物理ページアドレスとを対応付けたエントリを複数含む。ただし、ユーザデータが書き込まれていない論理ページアドレスには、有効な物理ページアドレスが割り当てられていない。言い換えれば、無効な物理ページアドレスが割り当てられている。
前述したように論理ページ数が507,904であるから、アドレス変換情報内のエントリ数は507,904である。ここで、アクセス単位であるページ1つに、アドレス変換情報における1,024エントリを格納することができるものとする。このため、アドレス変換情報は、各々が1,024エントリからなる496(=507,904/1,024)ページのアドレス変換情報ページに分割して管理される。
アドレス変換情報管理部124は、アドレス変換情報を管理するものである。具体的には、アドレス変換情報管理部124は、アドレス変換情報ページを要求するページ取得リクエストをメモリコントローラ200から受け取ると、要求されたアドレス変換情報ページをRAM130から読み出す。そして、アドレス変換情報管理部124は、読み出したアドレス変換情報ページをメモリコントローラ200に供給する。また、アドレス変換情報管理部124は、メモリコントローラ200からアドレス変換情報ページを受け取ると、RAM130においてページ番号が同一のアドレス変換情報ページを、受け取ったアドレス変換情報ページにより更新する。
なお、メモリコントローラ200からのページ取得リクエストに対し、アドレス変換情報管理部124が、要求されたアドレス変換情報ページを読み出しているが、この構成に限定されない。例えば、メモリコントローラ200が、ホストコンピュータ100内のアドレス変換情報保持領域131に直接アクセスして、必要なアドレス変換情報ページを読み出してもよい。
[転送コマンドのデータ構成例]
図4は、第1の実施の形態における転送コマンドのデータ構成の一例を示す図である。同図におけるaは、リードコマンドのデータ構成の一例を示す図である。同図のaに示すように、リードコマンドは、読出開始ページアドレス、転送ページ数および転送先アドレスを含む。読出開始ページアドレスには、データの読出しを開始するページアドレスであり、ユーザデータの読出しの場合には論理ページアドレスが設定される。転送ページ数には、リードコマンドにより連続して読み出されるリードデータのページ数が設定される。転送先アドレスには、ホストコンピュータ100のRAMのアドレス(論理アドレスまたは物理アドレス)が設定される。なお、管理情報を読み出すための初期化コマンドは、転送先種別をさらに含む。転送先種別には、ホストコンピュータ100またはメモリコントローラ200が設定される。また、初期化コマンドの転送先アドレスには、ホストコンピュータ100またはメモリコントローラ200のRAMのアドレス(論理アドレスまたは物理アドレス)が設定される。また、初期化コマンドの読出開始ページアドレスには、物理ページアドレスが設定される。これは、管理情報の読出しの場合には、アドレス変換が行われないためである。
図4におけるbは、ライトコマンドのデータ構成の一例を示す図である。同図のbに示すように、ライトコマンドは、転送元アドレス、書込開始ページアドレスおよび転送ページ数を含む。転送元アドレスには、ホストコンピュータ100のRAMのアドレスが設定される。書込開始ページアドレスには、データの書込みを開始する論理ページアドレスであり、ユーザデータの書込みの場合には論理ページアドレスが設定される。
[アドレス変換情報のデータ構成例]
図5は、第1の実施の形態におけるアドレス変換情報の一例を示す図である。アドレス変換情報は、496ページのアドレス変換情報ページを含む。それぞれのアドレス変換情報ページは、1,024エントリを含む。エントリの各々は、論理ページアドレス、割当状況および物理ページアドレスを含む。
割当状況は、論理ページアドレスに物理ページアドレスが割り当てられているか否かを示す。ユーザデータが書き込まれていない論理ページアドレスには、無効な物理ページアドレスが対応付けられ、割当状況に「未割当」が設定される。ユーザデータの書込みが行われた論理ページアドレスには、有効な物理ページアドレスが対応付けられ、割当状況に「割当済」が設定される。「割当済」の論理ページアドレスに書き込まれたデータが消去コマンドなどにより消去された場合には、割当状況は「未割当」に更新され、対応する物理ページアドレスは無効になる。
割当状況のデータサイズは例えば、1バイトであり、物理ページアドレスのデータサイズは例えば、3バイトであり、これらからなるエントリの各々のデータサイズは4バイトである。このため、1,024エントリからなるアドレス変換情報ページのそれぞれのデータサイズは、4,096(=1,024×4)バイトである。したがって、496ページからなるアドレス変換情報全体のデータサイズは、2,031,616(=496×4,096)バイトである。
[メモリコントローラの構成例]
図6は、第1の実施の形態におけるメモリコントローラ200の一構成例を示すブロック図である。このメモリコントローラ200は、CPU220、RAM230、ROM211、バス212、ホストインターフェース213、ECC処理部214およびメモリインターフェース215を備える。
CPU220は、メモリコントローラ200全体を制御するものである。RAM230は、CPU220が実行する処理において必要となるデータを一時的に保持するものである。ROM211は、CPU220が実行するプログラム等を記憶するものである。バス212は、CPU220、RAM230、ROM211、ホストインターフェース213、ECC処理部214およびメモリインターフェース215が相互にデータを交換するための共通の経路である。ホストインターフェース213は、メモリコントローラ200とホストコンピュータ100とがデータやコマンドを相互に交換するためのインターフェースである。
ECC処理部214は、ライトデータをECC(Error detection and Correction Code)に符号化し、リードデータに対して誤りの検出および訂正を行うものである。ECC処理部214において、例えば、BCH(Bose-Chaudhuri-Hocquenghem)符号や、RS(Reed-Solomon)符号がECCとして用いられる。メモリインターフェース215は、メモリコントローラ200と不揮発性メモリ300とがデータ等を相互に交換するためのインターフェースである。
図7は、第1の実施の形態におけるメモリコントローラ200の機能構成例を示すブロック図である。このメモリコントローラ200は、アドレス変換情報取得部222、アドレス変換部223、データ転送部224およびRAM230を備える。RAM230には、アドレス変換情報保持領域231、アドレス変換情報管理テーブル保持領域232、アクセス頻度情報保持領域233および空き物理アドレス情報保持領域234が設けられる。なお、RAM230は、特許請求の範囲に記載のアドレス変換情報保持部およびアクセス頻度保持部の一例である。
図7におけるアドレス変換情報取得部222の機能は、例えば、図6におけるCPU220およびホストインターフェース213などにより実現される。また、図7におけるアドレス変換部223の機能は、例えば、図6におけるCPU220などにより実現される。図7におけるデータ転送部224の機能は、例えば、図6におけるCPU220、ホストインターフェース213、ECC処理部214およびメモリインターフェース215などにより実現される。
データ転送部224は、ホストコンピュータ100の制御に従って、所定の初期化処理と、ユーザデータを転送するデータ転送処理とを実行するものである。初期化処理において、データ転送部224は、アドレス変換情報の全エントリを読み出すための初期化コマンドをホストコンピュータ100から受け取ると、その初期化コマンドからリードリクエストを生成する。
初期化コマンドから生成されたリードリクエストは、例えば、転送元ページアドレス、転送先種別、転送先アドレスを示す情報を含む。転送元ページアドレスは、リードデータを読み出すページアドレスであり、不揮発性メモリ300の物理ページアドレスが設定される。転送先種別は、ホストコンピュータ100およびメモリコントローラ200のいずれが転送先であるかを示す。転送先アドレスは、リードデータの転送先のアドレスであり、ホストコンピュータ100またはメモリコントローラ200のアドレスが設定される。
データ転送部224は、メモリリードコマンドにより全エントリを不揮発性メモリ300から読み出し、ホストコンピュータ100に転送する。
また、アクセス頻度情報を読み出すための初期化コマンドをホストコンピュータ100から受け取ると、データ転送部224は、メモリリードコマンドによりアクセス頻度情報を不揮発性メモリ300から読み出す。データ転送部224は、読み出したアクセス頻度情報をアクセス頻度情報保持領域233に保持させる。このアクセス頻度情報は、アドレス変換情報ページごとに、そのページ内の論理ページアドレスに対するアクセス回数を示す情報を含む。データ転送部224は、保持させた、アドレス変換情報ページのそれぞれのアクセス回数を読み出し、その値に対して所定の係数(例えば、0.5)を乗じる重み付けを行って書き戻す。
初期化処理の後において、アクセス回数は、対応するアドレス変換情報ページ内のいずれかの論理ページアドレスに対してアクセスが生じるたびに増分される。そして、メモリコントローラ200への電源供給停止時などに実行される終了処理において、メモリコントローラ200において更新されたアクセス頻度情報は、不揮発性メモリ300に書き戻される。
前述した所定の係数で、前回の終了処理時のアクセス回数に重み付けを行うことにより、計数された時期が古いほど、係数(すなわち、重み)を小さくした重み付けを行うことができる。例えば、1回目の終了処理の次に2回目の初期化処理が行われるとき、1回目の終了処理時のアクセス回数F1に対して0.5の重み付けが行われる。2回目の終了処理の次に3回目の初期化処理が行われるとき、2回目の終了処理時のアクセス回数F2に対して0.5の重み付けが行われる。このF2には、1回目のF1×0.5の値が含まれるため、F2に0.5を乗じたアクセス回数には、F1×0.25の値が含まれることとなる。同様に、3回目の終了処理時のアクセス回数F3に対して0.5を乗じたアクセス回数には、F2×0.25の値が含まれ、このF2×0.25の値にはF1×0.125の値が含まれる。このように、計数された時期が古いほど、アクセス回数に対する係数が小さくなる。
なお、データ転送部224は、前回の終了処理時のアクセス回数に対して重み付けを行っているが、この重み付けを行わない構成としてもよい。この場合には、前回の終了処理時のアクセス回数がアクセス頻度情報保持領域233にそのまま保持される。
また、データ転送部224は、空き物理アドレス情報を読み出すための初期化コマンドをホストコンピュータ100から受け取ると、メモリリードコマンドにより空き物理アドレス情報を不揮発性メモリ300から読み出す。そして、データ転送部224は、読み出した空き物理アドレス情報を、空き物理アドレス情報保持領域234に保持させる。
そして、データ転送部224は、アドレス変換情報の一部を読み出すための初期化コマンドを受け取ると、アクセス頻度の高いアドレス変換情報ページを優先して32ページのアドレス変換情報ページを不揮発性メモリ300から読み出す。
なお、データ転送部224がアドレス変換情報の一部を不揮発性メモリ300から読み出す構成としているが、この構成に限定されない。データ転送部224は、アドレス変換情報の一部をホストコンピュータ100から取得してもよい。
また、読み出すページ数は、アドレス変換情報の全ページ数(496)より少ないページであればよく、32ページに限定されない。また、アクセス頻度の高いものを優先して一部を読み出す構成としているが、この構成に限定されない。例えば、メモリコントローラ200は、ページ番号の若いページから順に32ページを読み出してもよい。
データ転送部224は、読み出したアドレス変換情報ページをアドレス変換情報保持領域231に保持させる。また、データ転送部224は、アドレス変換情報管理テーブルを生成して、アドレス変換情報管理テーブル保持領域232に保持させる。アドレス変換情報管理テーブルの構成については後述する。
また、データ転送処理において、データ転送部224は、転送コマンドから転送リクエストを生成する。例えば、転送リクエストは、転送ページ数に等しい個数の転送リクエストに分割される。転送リクエストは、リードリクエストおよびライトリクエストを含む。リードリクエストは、転送元ページアドレスおよび転送先アドレスを示す情報を含み、ライトリクエストは、転送元アドレスおよび転送先ページアドレスを示す情報を含む。
ライトリクエストを発行した場合、データ転送部224は、メモリライトコマンドを順に不揮発性メモリ300に供給する。また、データ転送部224は、ホストコンピュータ100からのライトデータをECCに符号化して不揮発性メモリ300に転送する。一方、リードリクエストを発行した場合、データ転送部224は、メモリリードコマンドを順に不揮発性メモリ300に供給し、リードデータを不揮発性メモリ300から受け取る。データ転送部224は、リードデータに対して誤りの検出および訂正を行い、訂正したリードデータをホストコンピュータ100に転送する。また、データ転送部224は、ステータスを生成してホストコンピュータ100に供給する。なお、図7においてステータスの記載は、省略されている。
アドレス変換情報取得部222は、転送コマンドにより指定された論理ページアドレスに対応するエントリがRAM230に保持されていない場合には、そのエントリをホストコンピュータ100から取得するものである。具体的には、アドレス変換情報取得部222は、ホストコンピュータ100から転送コマンドを受け取ると、その転送コマンドの指定する論理ページアドレスを含むアドレス変換情報ページの番号を求める。アドレス変換情報ページは、1,024エントリからなるため、指定された論理ページアドレスを0x00400(=1,024)で除した商を求めればよい。その商が、該当するアドレス変換情報ページの番号を示す。
例えば、アドレス変換情報ページを「0」乃至「495」とし、指定された論理ページアドレスが0x013ffである場合について考える。0x013ffを0x00400で割った商は、0x00004になる。このため、指定された論理ページアドレスを含むアドレス変換情報ページの番号は、「4」である。
アドレス変換情報取得部222は、算出した番号のアドレス変換情報ページがRAM230に保持されているか否かを判断する。保持されていない場合には、アドレス変換情報取得部222は、その保持されていないアドレス変換情報ページを要求するページ取得リクエストを発行してホストコンピュータ100に供給する。このページ要求リクエストには、例えば、要求するアドレス変換情報ページのページ番号が含まれる。アドレス変換情報取得部222は、要求したアドレス変換情報ページをホストコンピュータ100から受け取ると、RAM230内のアクセス頻度情報およびアドレス変換情報を参照する。アドレス変換情報取得部222は、RAM230に保持されているアドレス変換情報ページのうち最もアクセス頻度の低いアドレス変換情報ページを、ホストコンピュータ100から受け取ったアドレス変換情報ページに置き換える。また、アドレス変換情報取得部222は、アドレス変換情報ページの置き換えに伴い、アドレス変換情報管理テーブルを更新する。更新内容の詳細については、図9において後述する。
算出した番号のアドレス変換情報ページがRAM230に保持されている場合、または、そのアドレス変換情報ページを受け取った場合、アドレス変換情報取得部222は、対応するエントリが保持されていることをアドレス変換部223に通知する。
アドレス変換部223は、RAM230に保持されているエントリに基づいて、転送コマンドにより指定された論理ページアドレスを物理ページアドレスに変換するものである。転送コマンドにより指定された論理ページアドレスに対応するエントリが保持されていることが通知されると、アドレス変換部223は、指定された論理ページアドレスに対応するエントリの位置を求める。アドレス変換情報ページは1,024エントリからなるため、指定された論理ページアドレスを0x00400(=1,024)で除した剰余を求めればよい。その剰余が、アドレス変換情報ページ内における、該当するエントリの位置を示す。
例えば、指定された論理ページアドレスが0x013ffである場合について考える。0x013ffを0x00400で割った商は、0x00004であり、剰余は0x003ffである。このため、ページ番号が「4」のアドレス変換情報ページにおける1,023(=0x003ff)番目のエントリが、指定された論理ページアドレスに対応するエントリである。アドレス変換部223は、そのエントリをRAM230から読出し、その割当状況を参照する。
参照したエントリにおいて、物理ページアドレスが未割当である場合、アドレス変換部223は、空き物理アドレス情報を参照して、空いている物理ページアドレスのいずれかを選択するとともに、空き物理アドレス情報を更新する。また、アドレス変換部223は、参照したエントリの物理ページアドレスを、選択した物理ページアドレスにより更新し、その物理ページアドレスに対応する割当状況を「割当済」に更新する。
アドレス変換部223は、更新したアドレス変換情報ページをホストコンピュータ100に供給する。また、アドレス変換部223は、更新したアドレス変換情報ページに基づいて、指定された論理ページアドレスを、対応する物理ページアドレスに変換し、アドレスを変換した転送コマンドをデータ転送部224に供給する。
一方、参照したエントリにおいて物理ページアドレスが割当済である場合、アドレス変換部223は、指定された論理ページアドレスを、その論理ページアドレスに対応する物理ページアドレスに変換する。そして、アドレス変換部223は、アドレスを変換した転送コマンドをデータ転送部224に供給する。
[転送リクエストのデータ構成例]
図8は、第1の実施の形態における転送リクエストのデータ構成の一例を示す図である。同図におけるaは、リードリクエストのデータ構成の一例を示す図である。同図のaに示すように、リードリクエストは、転送元ページアドレス、転送先アドレスを含む。転送元ページアドレスには、不揮発性メモリ300の物理ページアドレスが設定される。転送先アドレスには、ホストコンピュータ100のRAMのアドレスが設定される。なお、管理情報を読み出す際に用いられるリードリクエストは、転送先種別をさらに含む。転送先種別には、ホストコンピュータ100およびメモリコントローラ200のいずれが設定される。また、転送先アドレスには、ホストコンピュータ100またはメモリコントローラ200のRAMのアドレスが設定される。
図8におけるbは、ライトリクエストのデータ構成の一例を示す図である。同図のbに示すように、ライトリクエストは、転送元アドレスおよび転送先ページアドレスを含む。転送元アドレスには、ホストコンピュータ100のRAMのアドレスが設定される。転送先ページアドレスには、不揮発性メモリ300の物理ページアドレスが設定される。なお、管理情報を書き込む際に用いられるライトリクエストは、転送元種別をさらに含む。転送元種別には、ホストコンピュータ100およびメモリコントローラ200のいずれが設定される。また、転送元アドレスには、ホストコンピュータ100またはメモリコントローラ200のRAMのアドレスが設定される。
図9は、第1の実施の形態におけるアドレス変換情報保持領域231およびアドレス変換情報管理テーブル保持領域232に保持されるデータの一例を示す図である。同図におけるaは、アドレス変換情報保持領域231に保持されるデータの一例を示す図である。同図のaに示すように、アドレス変換情報保持領域231には、領域内ページ#0乃至31のそれぞれに、アドレス変換情報ページが保持される。アドレス変換情報ページのそれぞれのデータサイズは4096バイトであるため、アドレス変換情報保持領域231には、131,072(=4096×32)バイトのデータが保持される。
図9におけるbは、アドレス変換情報管理テーブル保持領域232に保持されるデータの一例を示す図である。同図のbに示すように、アドレス変換情報管理テーブル保持領域232には、領域内ページ#0乃至#31のそれぞれに保持されているアドレス変換情報ページのページ番号が保持される。なお、同図のaおよびbに例示したように、メモリコントローラ200は、ページ番号をアドレス変換情報保持領域231と別の領域に保持しているが、同じ領域に保持してもよい。この場合、領域内ページのそれぞれに、アドレス変換情報ページと、そのページ番号とが保持される。メモリコントローラ200は、アドレス変換情報内のアドレス変換情報ページを新たなページに置き換えた場合、アドレス変換情報管理テーブルにおいて置き換えたページに対応する領域内ページを、アドレス変換情報ページのページ番号に更新する。
図10は、第1の実施の形態におけるアクセス頻度情報保持領域233に保持されるデータの一例を示す図である。このアクセス頻度情報保持領域233には、アドレス変換情報ページ#0乃至#495のそれぞれについて、そのページにおける論理ページアドレスに対するアクセス頻度を示す情報(例えば、アクセス回数)が保持される。アクセス回数のそれぞれのサイズは、例えば4バイトであり、496ページのそれぞれについてのアクセス回数を含むアクセス頻度情報全体のデータサイズは、1,984(=496×4)バイトである。
図11は、第1の実施の形態における空き物理アドレス情報保持領域234に保持されるデータの一例を示す図である。この空き物理アドレス情報保持領域234には、0x00000乃至0x7fbffの物理ページアドレスのそれぞれについて、使用状況を示す情報が保持される。
使用状況は、対応する物理ページアドレスの状態として、「使用中」、「未使用」、および、「使用不能」のいずれかを示す。「使用中」は、物理ページアドレスに論理ページアドレスが割り当てられていることを示し、「未使用」は、割り当てられていないことを示す。未使用の物理ページアドレスは、空いている物理ページアドレスとして扱われる。また、「使用不能」は、エラーの発生等の理由により、現在使用されておらず、今後の使用が推奨されないことを示す。使用状況は、3状態を2ビットで表すため、523,264個の物理ページアドレスの各々の使用状況からなる空き物理アドレス情報のデータサイズは、130,816(=523,264×2/8)バイトである。アクセス単位(ページ)のデータサイズが4096バイトであるため、この空き物理アドレス情報は、32(=30,816/4096)ページの空き物理アドレス情報ページに分割して管理される。それぞれの空き物理アドレス情報ページは、16,352(=523,264/32)個の使用状況を含む。
[不揮発性メモリの構成例]
図12は、第1の実施の形態における不揮発性メモリ300の一構成例を示すブロック図である。この不揮発性メモリ300は、ページバッファ311、メモリセルアレイ320、アドレスデコーダ312、バス313、制御インターフェース314およびアクセス制御部315を備える。
ページバッファ311は、アクセス制御部315の制御に従って、ライトデータやリードデータをページ単位で保持するものである。メモリセルアレイ320は、マトリックス状に配列された複数のメモリセルを備える。各々のメモリセルとして、不揮発性の記憶素子が用いられる。具体的には、NAND型やNOR型のフラッシュメモリ、ReRAM(Resistive RAM)、PCRAM(Phase-Change RAM)、または、MRAM(Magnetoresistive RAM)などが記憶素子として用いられる。アドレスデコーダ312は、メモリ転送コマンドにより指定されたアドレスを解析して、そのアドレスに対応するメモリセルを選択するものである。バス313は、ページバッファ311、メモリセルアレイ320、アドレスデコーダ312、制御インターフェース314およびアクセス制御部315が相互にデータを交換するための共通の経路である。制御インターフェース314は、メモリコントローラ200と不揮発性メモリ300とがデータやリクエストを相互に交換するためのインターフェースである。
アクセス制御部315は、メモリセルアレイ320にアクセスしてデータの書込み、または、読出しを行うものである。アクセス制御部315は、メモリライトコマンドを受け取ると、ライトデータをページバッファ311に保持させる。また、アクセス制御部315は、メモリライトコマンドにより指定されたアドレスをアドレスデコーダ312に供給する。アドレスデコーダ312によりメモリセルが選択されると、アクセス制御部315は、ドライバ(不図示)を制御して、そのメモリセルにデータを書き込ませる。
また、メモリリードコマンドを受け取ると、アクセス制御部315は、メモリリードコマンドにより指定されたアドレスをアドレスデコーダ312に供給する。アドレスデコーダ312によりメモリセルが選択されると、アクセス制御部315は、ドライバを制御して、そのメモリセルに格納されたデータを読み出させ、ページバッファ311に保持させる。ページバッファ311にリードデータが保持されると、アクセス制御部315は、制御インターフェース314を制御して、そのリードデータをメモリコントローラ200に出力させる。
図13は、第1の実施の形態におけるメモリセルアレイ320の使用状況の一例を示す図である。メモリセルアレイ320には、管理情報領域321およびユーザデータ領域325が設けられる。管理情報領域321には、アドレス変換情報、空き物理アドレス情報およびアクセス頻度情報が保持される。ユーザデータ領域325には、ユーザデータが保持される。メモリセルアレイ320に格納することができる物理ページ数は、例えば、524,288ページである。これらのうち、例えば、523,264ページからなる領域がユーザデータ領域325として用いられ、残りの1,024ページからなる領域が管理情報領域321として用いられる。
ここで、メモリコントローラ200がアドレス変換を行う構成であるため、ユーザデータ領域325において書込み不良が生じても、メモリコントローラ200は、空いている物理ページアドレスを代わりに割り当てることができる。管理情報領域321においても書込み不良は生じうるため、管理情報の初期化コマンドにおいても、メモリコントローラ200はアドレス変換を行うことが望ましい。しかし、説明を簡略化するために、管理情報領域321に対する初期化コマンドにおいては、アドレス変換が行われないものとする。なお、管理情報の初期化コマンドにおいてもメモリコントローラ200がアドレス変換を行う構成としてもよい。
図14は、第1の実施の形態における管理情報領域321に保持されるデータの一例を示す図である。管理情報領域321には、アドレス変換情報保持領域322、アクセス頻度情報保持領域323および空き物理アドレス情報保持領域324が設けられる。アドレス変換情報保持領域322には、496ページのアドレス変換情報ページからなるアドレス変換情報が保持される。このアドレス変換情報の全ページは、ホストコンピュータ100に転送されて保持される。また、アドレス変換情報の一部(例えば、32ページ)は、メモリコントローラ200に転送されて保持される。
アクセス頻度情報保持領域323には、アクセス頻度情報が保持される。空き物理アドレス情報保持領域324には、空き物理アドレス情報が保持される。これらのアクセス頻度情報および空き物理アドレス情報は、メモリコントローラ200に転送されて保持される。
[物理ページのデータ構成例]
図15は、第1の実施の形態におけるユーザデータ領域に格納される物理ページの一例を示す図である。物理ページの各々は、データ部および冗長部を備える。データ部は、物理ページのうち、ECCに符号化される前の元データの部分である。冗長部には、符号化において、元データから生成されるパリティなどが含まれる。データ部のサイズは、例えば、4,096バイトであり、冗長部のサイズは、例えば、128バイトである。データ部および冗長部からなる物理ページのサイズは、例えば、4,224バイトである。
[ホストコンピュータの動作例]
図16は、第1の実施の形態におけるホスト側処理の一例を示すフローチャートである。このホスト側処理は、例えば、情報処理システムに電源が投入されたときに、ホストコンピュータ100により開始される。
ホストコンピュータ100は、まず、ホスト側初期化処理を実行する(ステップS910)。そして、ホストコンピュータ100は、アプリケーションプログラム114などを実行し、必要に応じて転送コマンドを発行する。ホストコンピュータ100は、転送コマンドを発行したか否かを判断する(ステップS923)。転送コマンドを発行していなければ(ステップS923:No)、ホストコンピュータ100は、ステップS923に戻る。
転送コマンドを発行した場合には(ステップS923:Yes)、ホストコンピュータ100は、コントローラインターフェース116を介して、転送コマンドをメモリコントローラ200に供給する(ステップS924)。なお、転送コマンドがライトコマンドであれば、転送コマンドとともにライトデータも供給される。
ホストコンピュータ100は、メモリコントローラ200からのページ取得要求リクエストがあるか否かを判断する(ステップS925)。ページ取得要求リクエストがある場合には(ステップS925:Yes)、ホストコンピュータ100は、そのページ取得要求リクエストにより要求されたアドレス変換情報ページをメモリコントローラ200に供給する(ステップS926)。
ページ取得要求リクエストがない場合(ステップS925:No)、または、ステップS926の後、ホストコンピュータ100は、メモリコントローラ200により読み出されたリードデータを取得する。また、更新されたアドレス変換情報ページがメモリコントローラ200から供給されると、ホストコンピュータ100は、そのアドレス変換情報ページにより、保持しているアドレス変換情報を更新する(ステップS927)。ステップS927の後、ホストコンピュータ100は、ステップS923に戻る。
図17は、第1の実施の形態におけるホスト側初期化処理の一例を示すフローチャートである。ホストコンピュータ100は、アドレス変換情報を読み出すための初期化コマンドを発行する。この初期化コマンドにおいて、読出開始ページアドレスは、アドレス変換情報保持領域322の物理ページアドレスに設定され、リードデータであるアドレス変換情報の転送先はホストコンピュータ100に設定される。ホストコンピュータ100は、その初期化コマンドをメモリコントローラ200に供給する(ステップS911)。
そして、ホストコンピュータ100は、読み出されたアドレス変換情報ページを保持する(ステップS912)。ホストコンピュータ100は、アドレス変換情報ページの全ページの読出しが終了したか否かを、メモリコントローラ200からのステータスに基づいて判断する(ステップS913)。全ページの読出しが終了していなければ(ステップS913:No)、ホストコンピュータ100は、ステップS912に戻る。
全ページの読出しが終了したのであれば(ステップS913:Yes)、ホストコンピュータ100は、アクセス頻度情報を読み出すための初期化コマンドを発行する。この初期化コマンドにおいて、読出開始ページアドレスは、アクセス頻度情報保持領域323の物理ページアドレスに設定され、リードデータであるアクセス頻度情報の転送先はメモリコントローラ200に設定される。ホストコンピュータ100は、その初期化コマンドをメモリコントローラ200に供給する(ステップS914)。ホストコンピュータ100は、アクセス頻度情報の読出しが終了したか否かを、メモリコントローラ200からのステータスに基づいて判断する(ステップS915)。アクセス頻度情報の読出しが終了していなければ(ステップS915:No)、ホストコンピュータ100は、ステップS915に戻る。
アクセス頻度情報の読出しが終了したのであれば(ステップS915:Yes)、ホストコンピュータ100は、空き物理アドレス情報を読み出すための初期化コマンドを発行する。この初期化コマンドにおいて、読出開始ページアドレスは空き物理アドレス情報保持領域324の物理ページアドレスに設定され、リードデータである空き物理アドレス情報の転送先はメモリコントローラ200に設定される。ホストコンピュータ100は、その初期化コマンドをメモリコントローラ200に供給する(ステップS919)。ホストコンピュータ100は、空き物理アドレス情報の読出しが終了したか否かを、メモリコントローラ200からのステータスに基づいて判断する(ステップS920)。空き物理アドレス情報の読出しが終了していなければ(ステップS920:No)、ホストコンピュータ100は、ステップS920に戻る。
空き物理アドレス情報の読出しが終了したのであれば(ステップS920:Yes)、ホストコンピュータ100は、アドレス変換情報の一部を読み出すための初期化コマンドを発行する。この初期化コマンドにおいて、読出開始ページアドレスは、アドレス変換情報保持領域322の物理ページアドレスに設定され、リードデータであるアドレス変換情報の転送先はメモリコントローラ200に設定される。ホストコンピュータ100は、その初期化コマンドをメモリコントローラ200に供給する(ステップS921)。ホストコンピュータ100は、アドレス変換情報の一部の読出しが終了したか否かを、メモリコントローラ200からのステータスに基づいて判断する(ステップS922)。アドレス変換情報の一部の読出しが終了していなければ(ステップS922:No)、ホストコンピュータ100は、ステップS922に戻る。一方、アドレス変換情報の一部の読出しが終了したのであれば(ステップS922:Yes)、ホストコンピュータ100は、ホスト側初期化処理を終了する。
なお、情報処理システムは、アドレス変換情報の全部、アクセス頻度情報、空き物理アドレス情報、および、アドレス変換情報の一部のそれぞれの読出しを初期化処理において全て行う構成としているが、この構成に限定されない。例えば、メモリコントローラ200がアクセス頻度に関わらずにアドレス変換情報の一部を保持する場合には、情報処理システムはアクセス頻度情報の読出しを初期化処理において行わない構成とすることもできる。また、情報処理システムは、ホストコンピュータ100がアドレス変換情報を初期化処理前に既に保持している場合などには、その読出しを初期化処理において行わない構成とすることもできる。例えば、ホストコンピュータ100が、一回目の初期化処理において読み出したアドレス変換情報を、不揮発性メモリ300以外の不揮発性の記憶装置に保持しておく構成では、二回目の初期化処理において、アドレス変換情報の読出しは不要となる。
また、情報処理システムは、アクセス頻度情報および空き物理アドレス情報の転送先をメモリコントローラ200に設定しているが、メモリコントローラ200の代わりにホストコンピュータ100を転送先に設定してもよい。アクセス頻度情報の転送先をホストコンピュータ100に設定した場合、アクセス頻度情報の管理をホストコンピュータ100が行う。そして、メモリコントローラ200に保持させるアドレス変換情報ページをホストコンピュータ100がアクセス頻度に基づいて決定し、メモリコントローラ200に指示する。また、空き物理アドレス情報の転送先をホストコンピュータ100に設定した場合、未割当の論理ページに対する、空き物理アドレスの割り当てをホストコンピュータ100が行う。そして、ホストコンピュータ100は、アドレス変換情報ページを更新し、更新したページをメモリコントローラ200に供給する。
また、初期化処理において、アドレス変換情報の全部、アクセス頻度情報、空き物理アドレス情報、および、アドレス変換情報の一部のそれぞれの読出しの順番は、この順番に限定されない。例えば、アドレス変換情報の一部の読出しにおいて、アクセス頻度情報を参照しない構成においては、アドレス変換情報の一部とアクセス頻度情報とのそれぞれの読出しの順番は任意である。
[メモリコントローラの動作例]
図18は、第1の実施の形態におけるコントローラ側処理の一例を示すフローチャートである。この動作は、例えば、情報処理システムに電源が投入されたときにメモリコントローラ200により開始される。メモリコントローラ200は、まず、コントローラ側初期化処理を実行する(ステップS930)。
そして、メモリコントローラ200は、データ転送処理(ステップS960)を実行する。また、メモリコントローラ200は、リードコマンドを受信したか否かを判断する(ステップS941)。リードコマンドを受信したのであれば(ステップS941:Yes)、メモリコントローラ200は、リード制御処理(ステップS950)を実行する。
リードコマンドを受信していなければ(ステップS941:No)、メモリコントローラ200は、ライトコマンドを受信したか否かを判断する(ステップS942)。ライトコマンドを受信したのであれば(ステップS942:Yes)、メモリコントローラ200は、ライト制御処理(ステップS970)を実行する。ライトコマンドを受信していない場合(ステップS942:No)、または、ステップS950、S970の後、メモリコントローラ200は、ステップS941に戻る。
図19は、第1の実施の形態におけるコントローラ側初期化処理の一例を示すフローチャートである。メモリコントローラ200は、アドレス変換情報を読み出すための初期化コマンドを受信したか否かを判断する(ステップS931)。アドレス変換情報を読み出すための初期化コマンドを受信していなければ(ステップS931:No)、メモリコントローラ200は、ステップS931に戻る。一方、その初期化コマンドを受信していれば(ステップS931:Yes)、メモリコントローラ200は、アドレス変換情報を不揮発性メモリ300から読み出して、ホストコンピュータ100に転送する。また、メモリコントローラ200は、初期化コマンドの実行結果を記載したステータスをホストコンピュータ100に供給する(ステップS932)。
また、メモリコントローラ200は、アクセス頻度情報を読み出すための初期化コマンドを受信したか否かを判断する(ステップS933)。アクセス頻度情報を読み出すための初期化コマンドを受信していなければ(ステップS933:No)、メモリコントローラ200は、ステップS933に戻る。一方、その初期化コマンドを受信していれば(ステップS933:Yes)、メモリコントローラ200は、アクセス頻度情報を不揮発性メモリ300から取得してRAM230に保持する。そして、メモリコントローラ200は、アドレス変換情報ページのそれぞれのアクセス回数に対して所定の係数(例えば、0.5)を乗じる重み付けを行ってRAM230に書き戻す。また、メモリコントローラ200は、初期化コマンドの実行結果を記載したステータスをホストコンピュータ100に供給する(ステップS934)。
また、メモリコントローラ200は、空き物理アドレス情報を読み出すための初期化コマンドを受信したか否かを判断する(ステップS935)。空き物理アドレス情報を読み出すための初期化コマンドを受信していなければ(ステップS935:No)、メモリコントローラ200は、ステップS935に戻る。一方、その初期化コマンドを受信していれば(ステップS935:Yes)、メモリコントローラ200は、空き物理アドレス情報を不揮発性メモリ300から取得して保持する。また、メモリコントローラ200は、初期化コマンドの実行結果を記載したステータスをホストコンピュータ100に供給する(ステップS936)。
また、メモリコントローラ200は、アドレス変換情報の一部を読み出すための初期化コマンドを受信したか否かを判断する(ステップS937)。アドレス変換情報の一部を読み出すための初期化コマンドを受信していなければ(ステップS937:No)、メモリコントローラ200は、ステップS937に戻る。一方、その初期化コマンドを受信していれば(ステップS937:Yes)、メモリコントローラ200は、アクセス頻度に基づいてアドレス変換情報の一部(例えば、32ページ)を不揮発性メモリ300から取得して保持する(ステップS938)。
具体的には、ステップS938においてメモリコントローラ200は、アクセス頻度情報を参照して、アクセス頻度の高い上位32ページのアドレス変換情報ページのそれぞれのページ番号を取得する。これらのページ番号をKi(iは、1乃至K32の整数)とする。
そして、データ転送部224は、次の式を使用して、読み出す物理ページアドレスPiを取得し、その物理ページアドレスを指定したリードリクエストを発行する。
Pi=P0+(ページサイズ)×Ki ・・・式2
上式において、P0は、不揮発性メモリ300内のアドレス変換情報保持領域322における先頭の物理ページアドレスである。また、ページサイズは、アドレス変換情報ページのデータサイズであり、4,096(バイト)である。
メモリコントローラ200は、読み出した32ページのアドレス変換情報ページを、メモリコントローラ200内のアドレス変換情報保持領域231に保持する。
また、メモリコントローラ200は、初期化コマンドの実行結果を記載したステータスをホストコンピュータ100に供給する(ステップS938)。ステップS938の後、メモリコントローラ200は、コントローラ側初期化処理を終了する。
なお、メモリコントローラ200は、ホストコンピュータ100からの初期化コマンドに従って、コントローラ側初期化処理を行う構成としているが、この構成に限定されない。例えば、ホスト側初期化処理においてホストコンピュータ100が初期化コマンドを発行せず、メモリコントローラ200が、コントローラ側初期化処理を自発的に行ってもよい。
図20は、第1の実施の形態におけるリード制御処理の一例を示すフローチャートである。メモリコントローラ200は、リードコマンドにより指定された論理ページアドレスおよび転送ページ数が適切な値であるか否かを判断する(ステップS951)。
具体的には、次の3つの場合に、論理ページアドレスまたは転送ページ数が適切な値でないと判断される。まず、指定された、読出開始ページアドレスまたは書込開始ページアドレスが、予め定義された論理ページアドレス空間内のアドレスでない場合には、その論理ページアドレスが適切な値でないと判断される。例えば、0x00000乃至0x07bfffの範囲外の論理ページアドレスなどである。
また、転送ページ数が、論理ページアドレス空間の全ページ数(507,904)より多い場合には、転送ページ数が適切な値でないと判断される。なお、論理ページアドレス空間の全ページ数より小さな上限値(例えば、256)を予め定義しておき、転送ページ数が、その上限値より大きい場合に、適切な値でないと判断する構成であってもよい。
また、指定された論理ページアドレスに転送ページ数を加えたアドレスが、定義された論理ページアドレス空間内のアドレスに該当しない場合には、指定された論理ページアドレスおよび転送ページ数が適切な値でないと判断される。
指定された論理ページアドレスおよび転送ページ数が適切な値でない場合(ステップS951:No)、メモリコントローラ200は、エラーを記載したステータスを生成してホストコンピュータ100に通知する(ステップS952)。
一方、指定された論理ページアドレスおよび転送ページ数が適切な値である場合(ステップS951:Yes)、メモリコントローラ200は、読み出す対象の対象論理ページアドレスを含むアドレス変換情報ページのページ番号を取得する。そして、メモリコントローラ200は、そのページ番号のアドレス変換情報ページが、保持しているアドレス変換情報内にあるか否かを判断する(ステップS953)。ここで、対象論理ページアドレスには、読出開始ページアドレスが最初に設定される。
該当するアドレス変換情報ページがなければ(ステップS953:No)、メモリコントローラ200は、ページ取得要求リクエストにより、そのアドレス変換情報ページをホストコンピュータ100から取得する(ステップS954)。
該当するアドレス変換情報ページがある場合(ステップS953:Yes)、または、ステップS954の後、メモリコントローラ200は、指定された論理ページアドレスを物理ページアドレスに変換する(ステップS955)。
そして、メモリコントローラ200は、その物理ページアドレスを指定するリードリクエストを生成し、そのリクエストを待ち行列に追加する。また、メモリコントローラ200は、アクセス頻度情報を更新する。具体的には、対象論理ページアドレスを含むアドレス変換情報ページのアクセス回数を所定値(例えば、「1」)だけ増分する(ステップS956)。
メモリコントローラ200は、指定されたページ数を読み出すためのリードリクエストの生成が終了したか否かを判断する(ステップS957)。リードリクエストの生成が終了していなければ(ステップS957:No)、メモリコントローラ200は、現在の対象論理ページアドレスの次のページアドレスに、対象論理ページアドレスを更新する。例えば、現在の対象論理ページアドレスが0x013ffである場合、そのアドレスに0x00001を加えた0x01400に対象論理ページアドレスが更新される(ステップS958)。ステップS958の後、メモリコントローラ200は、ステップS953に戻る。
リードリクエストの生成が終了した場合(ステップS957:Yes)、または、ステップS952の後、メモリコントローラ200は、リード制御処理を終了する。
なお、論理ページアドレスおよび転送ページ数が適切な値であるか否かを判断する処理をメモリコントローラ200が行う構成としているが、メモリコントローラ200の代わりにホストコンピュータ100が、この処理を行う構成としてもよい。
図21は、第1の実施の形態におけるデータ転送処理の一例を示すフローチャートである。メモリコントローラ200は、リクエストの待ち行列に、実行待ちのリードリクエストがあるか否かを判断する(ステップS961)。
実行待ちのリードリクエストがある場合には(ステップS961:Yes)、メモリコントローラ200は、そのリードリクエストを待ち行列から取り出して、不揮発性メモリ300に供給する。そして、メモリコントローラ200は、指定した物理ページアドレスからのリードデータを不揮発性メモリ300から取得する(ステップS962)。
メモリコントローラ200は、ECCに基づいてリードデータの誤りの検出および訂正を行う(ステップS963)。メモリコントローラ200は、訂正したリードデータをステータスとともにホストコンピュータ100に転送する。ただし、訂正に失敗した場合には、メモリコントローラ200は、エラーを記載したステータスを生成してホストコンピュータ100に供給する(ステップS964)。
メモリコントローラ200は、リードデータまたはステータスの転送が終了したか否かを判断する(ステップS965)。転送が終了していなければ(ステップS965:No)、メモリコントローラ200は、ステップS965に戻る。一方、転送が終了していれば(ステップS965:Yes)、メモリコントローラ200は、ステップS961に戻る。
実行待ちのリードリクエストがない場合には(ステップS961:No)、メモリコントローラ200は、リクエストの待ち行列に、実行待ちのライトリクエストがあるか否かを判断する(ステップS966)。実行待ちのライトリクエストがある場合には(ステップS966:Yes)、メモリコントローラ200は、そのライトリクエストを待ち行列から取り出して、不揮発性メモリ300に供給する。
メモリコントローラ200は、ライトデータをECCに符号化する(ステップS967)。メモリコントローラ200は、符号化したライトデータとともにライトリクエストを不揮発性メモリ300に供給して、ライトデータの書込みを行う。ここで、不揮発性メモリ300が書込みに失敗した場合には、メモリコントローラ200は、エラーを記載したステータスを生成してホストコンピュータ100に供給する(ステップS968)。
メモリコントローラ200は、ライトデータの書込みが終了したか否かを判断する(ステップS969)。書込みが終了していなければ(ステップS969:No)、メモリコントローラ200は、ステップS969−1に戻る。一方、書込みが終了していれば(ステップS969:Yes)、メモリコントローラ200は、ステップS961に戻る。
実行待ちのライトリクエストがない場合には(ステップS966:No)、メモリコントローラ200は、データ転送処理を終了する。
図22は、第1の実施の形態におけるライト制御処理の一例を示すフローチャートである。メモリコントローラ200は、ライトコマンドにより指定された論理ページアドレスおよび転送ページ数が適切な値であるか否かを判断する(ステップS971)。
指定された論理ページアドレスおよび転送ページ数が適切な値でない場合(ステップS971:No)、メモリコントローラ200は、エラーを記載したステータスを生成してホストコンピュータ100に通知する(ステップS972)。
一方、指定された論理ページアドレスおよび転送ページ数が適切な値である場合(ステップS971:Yes)、メモリコントローラ200は、書き込む対象の対象論理ページアドレスを含むアドレス変換情報ページのページ番号を取得する。そして、メモリコントローラ200は、そのページ番号のアドレス変換情報ページが、保持しているアドレス変換情報内にあるか否かを判断する(ステップS973)。ここで、対象論理ページアドレスには、書込開始ページアドレスが最初に設定される。
該当するアドレス変換情報ページがなければ(ステップS973:No)、メモリコントローラ200は、ページ取得要求リクエストにより、そのアドレス変換情報ページをホストコンピュータ100から取得する(ステップS974)。
該当するアドレス変換情報ページがある場合(ステップS973:Yes)、または、ステップS974の後、メモリコントローラ200は、空き物理アドレス割当処理を行う(ステップS980)。メモリコントローラ200は、アドレス変換情報ページに基づいて、指定された論理ページアドレスを物理ページアドレスに変換する(ステップS975)。
そして、メモリコントローラ200は、その物理ページアドレスを指定するライトリクエストを生成し、そのリクエストを待ち行列に追加する。また、メモリコントローラ200は、アクセス頻度情報を更新する(ステップS976)。
メモリコントローラ200は、指定されたページ数を書き込むためのライトリクエストの生成が終了したか否かを判断する(ステップS977)。ライトリクエストの生成が終了していなければ(ステップS977:No)、メモリコントローラ200は、現在の対象論理ページアドレスの次のページアドレスに、対象論理ページアドレスを更新する(ステップS978)。ステップS978の後、メモリコントローラ200は、ステップS973に戻る。
ライトリクエストの生成が終了した場合(ステップS977:Yes)、または、ステップS972の後、メモリコントローラ200は、ライト制御処理を終了する。
図23は、第1の実施の形態における空き物理アドレス割当処理の一例を示すフローチャートである。メモリコントローラ200は、指定された論理ページアドレスに対応するエントリを参照して、その論理ページアドレスに物理ページアドレスが割当済であるか否かを判断する(ステップS981)。
物理ページアドレスが割当済でない場合(ステップS981:No)、メモリコントローラ200は、空き物理アドレス情報を参照し、空いている物理ページアドレスのいずれかを選択する。メモリコントローラ200は、空き物理アドレス情報において、選択した物理ページアドレスの使用状況を「使用中」に更新する(ステップS982)。また、メモリコントローラ200は、選択した物理ページアドレスを指定された論理ページアドレスに割り当てる。具体的には、メモリコントローラ200は、指定された論理ページアドレスにかかるエントリ内の物理ページアドレスを、選択した物理ページアドレスにより更新する。また、メモリコントローラ200は、そのエントリの割当状況を「割当済」に更新する(ステップS983)。そして、メモリコントローラ200は、更新したアドレス変換情報ページをホストコンピュータ100に供給する(ステップS984)。
物理ページアドレスが割当済である場合(ステップS981:Yes)、または、ステップS984の後、メモリコントローラ200は、空き物理アドレス割当処理を終了する。
図24は、第1の実施の形態における初期化時の情報処理システムの動作を示すシーケンス図の一例である。まず、ホストコンピュータ100は、アドレス変換情報保持領域322のアドレスを指定し、転送先をホストコンピュータ100に設定した初期化コマンドを発行してメモリコントローラ200に供給する。メモリコントローラ200は、初期化コマンドに従って、アドレス変換情報の全部を不揮発性メモリ300から読み出し、ホストコンピュータ100に転送する。ホストコンピュータ100は、転送されたアドレス変換情報を保持する(ステップS912)。
また、ホストコンピュータ100は、アクセス頻度情報保持領域323のアドレスを指定し、転送先をメモリコントローラ200に設定した初期化コマンドを発行してメモリコントローラ200に供給する。メモリコントローラ200は、初期化コマンドに従って、アクセス頻度情報を不揮発性メモリ300から読み出して保持する(ステップS934)。
また、ホストコンピュータ100は、空き物理アドレス情報保持領域324のアドレスを指定し、転送先をメモリコントローラ200に設定した初期化コマンドを発行してメモリコントローラ200に供給する。メモリコントローラ200は、初期化コマンドに従って、空き物理アドレス情報を不揮発性メモリ300から読み出して保持する(ステップS936)。
また、ホストコンピュータ100は、アドレス変換情報保持領域322のアドレスを指定し、転送先をメモリコントローラ200に設定した初期化コマンドを発行してメモリコントローラ200に供給する。メモリコントローラ200は、初期化コマンドに従って、アドレス変換情報の一部を不揮発性メモリ300から読み出して保持する(ステップS938)。
図25は、第1の実施の形態におけるユーザデータのリード時の情報処理システムの動作を示すシーケンス図の一例である。転送ページ数が2ページのリードコマンドC1が発行され、そのリードコマンドC1がメモリリードコマンドR1aおよびR1bに分割されたものとする。また、リードコマンドC1の1ページ目の論理ページアドレスL1aに対応するエントリはメモリコントローラ200に保持されており、2ページ目の論理ページアドレスL1bに対応するエントリは、メモリコントローラ200に保持されていないものとする。
ホストコンピュータ100は、リードコマンドC1を発行してメモリコントローラ200に供給する。メモリコントローラ200は、リードコマンドC1の1ページ目の論理ページアドレスL1aに対応するエントリを参照し、その論理ページアドレスL1aを物理ページアドレスP1aに変換する(ステップS955)。そして、メモリコントローラ200は、物理ページアドレスP1aを指定したメモリリードコマンドR1aを生成して、不揮発性メモリ300に供給する。メモリコントローラ200は、物理ページアドレスP1aから読み出されたユーザデータD1aを不揮発性メモリ300から取得して、ホストコンピュータ100に転送する。
また、メモリコントローラ200は、2ページ目の論理ページアドレスL1bに対応するエントリを保持していないため、そのエントリを含むアドレス変換情報ページをページ取得リクエストにより、ホストコンピュータ100に要求する。ユーザデータD1aの読出し中などにおいて、メモリコントローラ200は、要求したアドレス変換情報ページをホストコンピュータ100から取得する。詳細には、このアドレス変換情報の取得は、ユーザデータD1aの不揮発性メモリ300からの読み出し(ステップS962)、誤り訂正(ステップS963)、ホストへのユーザデータD1aの転送(ステップS964)のいずれかあるいは複数の処理と同時に行われる。メモリコントローラ200は、そのアドレス変換情報ページに基づいて論理ページアドレスL1bを物理ページアドレスP1bに変換する(ステップS955)。そして、メモリコントローラ200は、物理ページアドレスP1bを指定したメモリリードコマンドR1bを生成して、不揮発性メモリ300に供給する。メモリコントローラ200は、物理ページアドレスP1bから読み出されたユーザデータD1bを不揮発性メモリ300から取得して、ホストコンピュータ100に転送する。
図26は、第1の実施の形態におけるリード時のメモリコントローラの動作を示すタイミングチャートの一例である。転送ページ数が2ページのリードコマンドC1が発行され、そのリードコマンドC1がメモリリードコマンドR1aおよびR1bに分割されたものとする。また、リードコマンドC1の1ページ目の論理ページアドレスL1aに対応するエントリはメモリコントローラ200に保持されており、2ページ目の論理ページアドレスL1bに対応するエントリは、メモリコントローラ200に保持されていないものとする。
図26のaは、アドレス変換情報ページをホストコンピュータ100から取得する第1の実施形態におけるタイミングチャートである。時刻t0においてアドレス変換部223は、リードコマンドC1の1ページ目の論理ページアドレスL1aに対応するエントリを参照して、論理ページアドレスL1aを物理ページアドレスP1bに変換する。
時刻t1までの間にデータ転送部224は、変換した物理ページアドレスP1aを指定したメモリリードコマンドR1aを発行する。時刻t1から時刻t2までの間においてアドレス変換情報取得部222は、リードコマンドC1の2ページ目の論理ページアドレスL1bに対応するアドレス変換情報ページをホストコンピュータ100に要求する。
また、時刻t1において、データ転送部224は、物理ページアドレスP1aから読み出されたユーザデータD1aの転送を開始する。
時刻t2から時刻t3までの間において、アドレス変換情報取得部222は、2ページ目の論理ページアドレスL1bに対応するアドレス変換情報ページをホストコンピュータ100から取得する。
時刻t3から時刻t4の間において、アドレス変換部223は、取得したアドレス変換情報ページを参照して、論理ページアドレスL1bを物理ページアドレスP1bに変換する。また、データ転送部224は、その物理ページアドレスP1bを指定したメモリリードコマンドR1bを発行する。
そして時刻t5においてユーザデータD1aの転送が終了すると、データ転送部224は、物理ページアドレスP1bから読み出されたユーザデータD1bの転送を開始する。時刻t5の後の時刻t8において、ユーザデータD1bの転送が終了する。
図26のbは、アドレス変換情報ページを不揮発性メモリから取得する構成を仮定した比較例におけるタイミングチャートである。時刻t0においてアドレス変換部223は、リードコマンドC1の1ページ目の論理ページアドレスL1aに対応するエントリを参照して、論理ページアドレスL1aを物理ページアドレスP1aに変換する。
時刻t1までの間にデータ転送部224は、変換した物理ページアドレスP1aを指定したメモリリードコマンドR1aを発行する。時刻t1から時刻t2までの間においてアドレス変換部223は、2ページ目の論理ページアドレスL1bに対応するアドレス変換情報ページを不揮発性メモリ300から取得する。
また、時刻t1において、データ転送部224は、物理ページアドレスP1aから読み出されたユーザデータD1aの転送を開始する。
時刻t5においてユーザデータD1aの転送が終了すると、時刻t5から時刻t6までの間において、アドレス変換部223は、論理ページアドレスL1bに対応するアドレス変換情報ページを不揮発性メモリ300から取得する。
なお、ホストコンピュータ100とメモリコントローラ200との間のデータ転送速度は、不揮発性メモリ300とメモリコントローラ200との間のデータ転送速度より高速であることが多い。このため、不揮発性メモリ300からのアドレス変換情報の取得にかかる時間(=t6−t5)は、ホストコンピュータ100からのアドレス変換情報の取得にかかる時間(=t3−t2)よりも長くなることが多い。
時刻t6から時刻t7の間において、アドレス変換部223は、取得したアドレス変換情報ページを参照して、論理ページアドレスL1bを物理ページアドレスP1bに変換する。また、データ転送部224は、その物理ページアドレスP1bを指定したメモリリードコマンドを発行する。
時刻t7において、データ転送部224は、物理ページアドレスP1bから読み出されたユーザデータD1bの転送を開始する。時刻t7およびt8の後の時刻t9において、ユーザデータD1bの転送が終了する。
アドレス変換情報をホストコンピュータ100から取得する場合の図26のaと、アドレス変換情報を不揮発性メモリ300から取得する場合の同図のbとを比較する。前者では、不揮発性メモリ300からのユーザデータの読出しと、ホストコンピュータ100からのアドレス変換情報の取得とを並行して実行することができる。このため、ユーザデータD1aの転送中に、メモリコントローラ200は、次のユーザデータD1bの転送に必要なアドレス変換情報ページを取得しておくことができる。したがって、メモリコントローラ200は、ユーザデータD1aの転送が終了した時刻t5において、ユーザデータD1bの転送を開始することができる。
これに対して、後者では、アドレス変換情報を不揮発性メモリ300から読み出すため、アドレス変換情報の読出しとユーザデータの読出しとを並行して実行することができない。したがって、ユーザデータD1aの転送が終了した時刻t5になってからでないとメモリコントローラ200は、アドレス変換情報の転送を開始することができない。そして、そのアドレス変換情報の転送の終了した時刻t6になってからでないと、メモリコントローラ200は、次のユーザデータD1bの転送を開始することができない。言い換えれば、ユーザデータD1bの転送が、アドレス変換情報の転送時間の分、遅延してしまう。
したがって、図26のaに例示したようにアドレス変換情報をホストコンピュータ100から取得することにより、同図のbに例示したように、アドレス変換情報の転送によりユーザデータD2の転送が遅延することが抑制される。この結果、データの転送時間が短くなる。
このように、本技術の第1の実施の形態によれば、メモリコントローラ200がエントリをホストコンピュータ100から取得するため、エントリの取得と転送データの転送とを並列に行うことができる。これにより、エントリの取得による遅延を抑制して、転送データの転送時間を短くすることができる。
<2.第2の実施の形態>
[ホストコンピュータの構成例]
第1の実施の形態においては、転送データのデータサイズ(転送ページ数)に関わらず、メモリコントローラ200がアドレス変換を行っていた。しかし、転送コマンドにより指定された転送ページ数が比較的小さい場合には、メモリコントローラ200は、エントリの転送と転送データの転送とを並列に行うことができないおそれがある。例えば、転送ページ数が「1」のリードコマンドC1によるユーザデータD1の転送が終了してから、転送ページ数が「1」のリードコマンドC2が発行された場合を考える。この場合、ユーザデータD1の転送が終了しているため、メモリコントローラ200は、リードコマンドC2に対応するエントリの転送と、ユーザデータD1の転送とを並列に実行することができない。このため、転送データの転送時間を短くすることができなくなる。
第2の実施の形態の情報処理システムは、転送ページ数が比較的少ない場合には、メモリコントローラ200の代わりにホストコンピュータ100がアドレス変換を行う点において第1の実施の形態と異なる。
図27は、第2の実施の形態のホストコンピュータ100の一構成例を示すブロック図である。第2の実施の形態のホストコンピュータ100は、アドレス変換部125をさらに備える点において第1の実施の形態と異なる。また、第2の実施の形態のホストコンピュータ100は、RAM130に空き物理アドレス情報保持領域132をさらに設ける点において第1の実施の形態と異なる。
第2の実施の形態の初期化処理部121は、初期化処理において、空き物理アドレス情報を読み出すためのリードコマンドをさらに発行する。このリードコマンドの転送先は、ホストコンピュータ100に設定される。そして初期化処理部121は、空き物理アドレス情報をメモリコントローラ200から取得して空き物理アドレス情報保持領域132に保持させる。
アドレス変換部125は、転送コマンドにより指定された転送ページ数が所定値(例えば、「2」)より少ないか否かを判断する。転送ページ数が所定値より少ない場合には、アドレス変換部125は、アドレス変換情報および空き物理アドレス情報を参照して、指定された論理ページアドレスを物理ページアドレスに変換する。そして、アドレス変換部125は、オンに設定した変換済フラグと、変換した物理ページアドレスとを転送コマンドに付加してデータ転送処理部123に供給する。この変換済フラグは、ホストコンピュータ100がアドレス変換を行ったか否かを示すフラグであり、例えば、ホストコンピュータ100がアドレス変換した場合にオンに設定され、そうでない場合にオフに設定される。
一方、転送ページ数が所定値以上である場合には、アドレス変換部125は、アドレス変換を行わずに、オフに設定した変換済フラグを転送コマンドに付加してデータ転送処理部123に供給する。
また、第2の実施の形態のアドレス変換情報管理部124は、更新されたアドレス変換情報ページを受け取った場合には、必要に応じて空き物理アドレス情報も更新する。
また、変換済フラグがオンの転送コマンドを受け取ったメモリコントローラ200は、そのコマンドにより指定された論理ページアドレスおよび物理ページアドレスを用いて、RAM230内のアドレス変換情報および空き物理アドレス情報を更新する。これにより、ホストコンピュータ100およびメモリコントローラ200のそれぞれが保持するアドレス変換情報および空き物理アドレス情報の整合性が確保される。
なお、メモリコントローラ200は変換済フラグがオンの転送コマンドを用いて、自身が保持するアドレス変換情報および空き物理アドレス情報を更新しているが、この構成に限定されない。例えば、ホストコンピュータ100内のアドレス変換情報管理部124は、更新にかかる論理ページアドレスおよび物理ページアドレスを示す通知を、転送コマンドと別途にメモリコントローラ200に供給する構成であってもよい。この場合、メモリコントローラ200は、それらのアドレスに基づいて、自身が保持するアドレス変換情報および空き物理アドレス情報を更新する。
また、アドレス変換情報管理部124は、転送コマンドと別途に、更新されたアドレス変換情報ページおよび空き物理情報ページを示す通知をメモリコントローラ200に供給してもよい。この場合、メモリコントローラ200は、それらのページに基づいて、自身が保持するアドレス変換情報および空き物理アドレス情報を更新する。
また、ホストコンピュータ100内のアドレス変換部125は、アドレス変換において、物理ページアドレスの新たな割り当てが必要であると判断した場合、メモリコントローラ200にアドレス変換を行わせる処理に変更してもよい。具体的には、アドレス変換部125は、転送ページ数が所定値未満であり、かつ、論理ページアドレスに物理ページアドレスが割当済である場合に、アドレス変換を行う。一方、転送ページ数が所定値以上である場合、または、論理ページアドレスに物理ページアドレスが未割当である場合には、ホストコンピュータ100は、アドレス変換を行わずに、変換済フラグをオフにした転送コマンドを供給する。この構成においては、ホストコンピュータ100は、空き物理アドレス情報を保持する必要はない。
図28は、第2の実施の形態における転送コマンドのデータ構成の一例を示す図である。同図におけるaは、転送ページ数が所定値以上である場合の転送コマンドの一例である。この場合には、ホストコンピュータ100はアドレス変換を行わないため、オフに設定された変換済フラグが転送コマンドに付加される。
図28におけるbは、転送ページ数が所定値未満である場合の転送コマンドの一例である。この場合には、ホストコンピュータ100はアドレス変換を行うため、オンに設定された変換済フラグと、変換された物理ページアドレスとが転送コマンドに付加される。また、変換前の論理ページアドレスは転送コマンドにおいて削除されず、物理ページアドレスとともにメモリコントローラ200に供給される。この論理ページアドレスは、アクセス頻度の更新に用いられる。なお、図28において、転送元アドレスまたは転送先アドレスは省略されている。
第2の実施の形態のメモリコントローラ200は、変換済フラグがオンである場合には、アドレス変換を行わず、付加された物理ページアドレスを指定した転送リクエストを生成する。一方、変換済フラグがオフである場合には、メモリコントローラ200は、第1の実施の形態と同様に、アドレス変換を行って転送リクエストを生成する。
なお、転送ページ数が所定値未満である場合に、ホストコンピュータ100は、物理ページアドレスとともに論理ページアドレスをメモリコントローラ200に供給する構成としているが、物理ページアドレスのみを供給してもよい。この場合には、ホストコンピュータ100がアドレス変換を行ったときに、メモリコントローラ200はアクセス頻度を更新しない。
図29は、第2の実施の形態におけるホスト側処理の一例を示すフローチャートである。第2の実施の形態のホスト側処理は、ステップS995乃至S999をさらに実行する点において第1の実施の形態と異なる。
転送コマンドが発行されると(ステップS923:Yes)、ホストコンピュータ100は、転送コマンドにより指定された転送ページ数が2ページ以上であるか否かを判断する(ステップS995)。転送ページ数が2ページ以上である場合には(ステップS995:Yes)、ホストコンピュータ100は、オフの変換済フラグを付加した転送コマンドをメモリコントローラ200に供給する(ステップS924)。そして、ホストコンピュータ100は、ステップS925乃至S927を実行する。
転送ページ数が2ページ未満である場合には(ステップS995:No)、ホストコンピュータ100は、論理ページアドレスを物理ページアドレスに変換する(ステップS996)。ホストコンピュータ100は、アドレス変換において、空いている物理ページアドレスを新たに割り当てた場合には、空き物理アドレス情報を更新する(ステップS997)。
ホストコンピュータ100は、変換済フラグをオンにする(ステップS998)。ホストコンピュータ100は、その変換済フラグおよび物理ページアドレスを転送コマンドに付加してメモリコントローラ200に供給し(ステップS999)、ステップS923に戻る。
図30は、第2の実施の形態におけるホスト側初期化処理の一例を示すフローチャートである。第2の実施の形態のホスト側初期化処理は、ステップS916乃至S918をさらに実行する点において第1の実施の形態と異なる。
アクセス頻度情報の読出しが終了すると(ステップS915:Yes)、ホストコンピュータ100は、空き物理アドレス情報を読み出すための初期化コマンドを発行する。この初期化コマンドにおいて、リードデータである空き物理アドレス情報の転送先はホストコンピュータ100に設定される。ホストコンピュータ100は、その初期化コマンドをメモリコントローラ200に供給する(ステップS916)。
そして、ホストコンピュータ100は、読み出された空き物理アドレス情報ページを保持する(ステップS917)。ホストコンピュータ100は、空き物理アドレス情報ページの全ページ(32ページ)の読出しが終了したか否かを、メモリコントローラ200からのステータスに基づいて判断する(ステップS918)。全ページの読出しが終了していなければ(ステップS918:No)、ホストコンピュータ100は、ステップS917に戻る。
空き物理アドレス情報の読出しが終了したのであれば(ステップS918:Yes)、ホストコンピュータ100は、ステップS919乃至S922を実行する。
図31は、第2の実施の形態におけるコントローラ側初期化処理の一例を示すフローチャートである。第2の実施の形態のコントローラ側初期化処理は、ステップS937およびS938をさらに実行する点において第1の実施の形態と異なる。
なお、図30および図31に例示したように、転送先の異なる2つの初期化コマンドに従ってメモリコントローラ200が、空き物理アドレス情報を転送および保持する構成としているが、この構成に限定されない。ホストコンピュータ100は、1つの初期化コマンドを発行し、その初期化コマンドに従って、メモリコントローラ200が、空き物理アドレス情報を保持するとともに、ホストコンピュータ100へ転送する構成としてもよい。
空き物理アドレス情報を保持すると(ステップS936)、メモリコントローラ200は、空き物理アドレス情報を読み出すための初期化コマンドを受信したか否かを判断する(ステップS937)。空き物理アドレス情報を読み出すための初期化コマンドを受信していなければ(ステップS937:No)、メモリコントローラ200はステップS937に戻る。その初期化コマンドを受信したのであれば(ステップS937:Yes)、メモリコントローラ200は、空き物理アドレス情報を不揮発性メモリ300から読み出してホストコンピュータ100に転送する(ステップS938)。ステップS938の後、メモリコントローラ200は、ステップS939およびS940を実行する。
図32は、第2の実施の形態におけるリード制御処理の一例を示すフローチャートである。第2の実施の形態のリード制御処理は、ステップS959をさらに実行する点において第1の実施の形態と異なる。
メモリコントローラ200は、指定された論理ページアドレスおよび転送ページ数が適切な値であるか否かを判断する(ステップS951)。ただし、変換済フラグがオンである場合、転送ページ数は1ページであるため、メモリコントローラ200は、論理ページアドレスのみについて、適切な値であるか否かを判断すればよい。
指定された論理ページアドレスおよび転送ページ数が適切な値である場合(ステップS951:Yes)、メモリコントローラ200は、変換済フラグを参照する。そして、メモリコントローラ200は、ホストコンピュータ100により論理ページアドレスが変換済であるか否かを判断する(ステップS959)。論理ページアドレスが変換済でない場合(ステップS959:No)、メモリコントローラ200は、ステップS953乃至S955を実行する。一方、論理ページアドレスが変換済である場合(ステップS959:Yes)、または、ステップS955の後、メモリコントローラ200は、変換された物理ページアドレスを指定するリードリクエストを生成する。また、転送コマンドにより指定された論理ページアドレスのアクセス頻度を更新する(ステップS956)。そして、メモリコントローラ200は、ステップS957以降の処理を実行する。
図33は、第2の実施の形態におけるライト制御処理の一例を示すフローチャートである。第2の実施の形態のライト制御処理は、ステップS979をさらに実行する点において第1の実施の形態と異なる。
指定された論理ページアドレスおよび転送ページ数が適切な値である場合(ステップS971:Yes)、メモリコントローラ200は、変換済フラグを参照する。そして、メモリコントローラ200は、ホストコンピュータ100により論理ページアドレスが変換済であるか否かを判断する(ステップS979)。論理ページアドレスが変換済でない場合(ステップS979:No)、メモリコントローラ200は、ステップS973乃至S975を実行する。一方、論理ページアドレスが変換済である場合(ステップS979:Yes)、または、ステップS975の後、メモリコントローラ200は、変換された物理ページアドレスを指定するライトリクエストを生成する。また、転送コマンドにより指定された論理ページアドレスのアクセス頻度を更新する(ステップS976)。そして、メモリコントローラ200は、ステップS977以降の処理を実行する。
図34は、第2の実施の形態における初期化時の情報処理システムの動作を示すシーケンス図の一例である。ホストコンピュータ100は、メモリコントローラ200により転送されたアドレス変換情報を保持する(ステップS912)。
また、メモリコントローラ200は、ホストコンピュータ100からの初期化コマンドに従って、不揮発性メモリ300から読み出したアクセス頻度情報を保持する(ステップS934)。
そして、ホストコンピュータ100は、転送先をホストコンピュータ100に設定した初期化コマンドを発行してメモリコントローラ200に供給する。メモリコントローラ200は、初期化コマンドに従って、空き物理アドレス情報を不揮発性メモリ300から読み出し、ホストコンピュータ100に転送する。ホストコンピュータ100は、転送された空き物理アドレス情報を保持する(ステップS917)。
また、メモリコントローラ200は、ホストコンピュータ100からの初期化コマンドに従って空き物理アドレス情報を保持し(ステップS936)、アドレス変換情報の一部を保持する(ステップS938)。
図35は、第2の実施の形態におけるユーザデータのリード時の情報処理システムの動作を示すシーケンス図の一例である。指定する論理ページアドレスがそれぞれ異なるリードコマンドC1およびC2が順に発行されたものとする。リードコマンドC1の転送ページ数は2ページであり、リードコマンドC2の転送ページ数は、1ページであるものとする。また、リードコマンドC2の論理ページアドレスL2に対応するエントリは、メモリコントローラ200に保持されていないものとする。
リードコマンドC1の転送ページ数は2ページであるため、論理ページアドレスは、第1の実施の形態と同様に、メモリコントローラ200により物理ページアドレスに変換される。
一方、リードコマンドC2の転送ページ数は1ページであるため、ホストコンピュータ100は、リードコマンドC2の論理ページアドレスL2を物理ページアドレスP2に変換する(ステップS926)。ホストコンピュータ100は、論理ページアドレスL2および物理ページアドレスP2を含むリードコマンドC2をメモリコントローラ200に供給する。メモリコントローラ200は、物理ページアドレスP2を指定したメモリリードコマンドR2を生成して、不揮発性メモリ300に供給する。また、メモリコントローラ200は、論理ページアドレスL2のアクセス頻度を更新する。
このように、第2の実施の形態によれば、転送データのデータサイズが所定サイズに満たない場合にホストコンピュータ100がアドレス変換を行うため、メモリコントローラ200はアドレス変換情報のエントリを取得する必要がなくなる。これにより、転送データのデータサイズが所定サイズに満たない場合において、エントリの取得によるデータ転送時間の遅延が抑制される。
なお、上述の各実施形態では不揮発性メモリ300に記録されていたアドレス変換情報をそのままホストコンピュータ100のアドレス変換情報保持領域131に保持するとしている。しかし、予期せぬ変更や外部からのアクセスを防止するために、アドレス変換情報の保持にあたって暗号化や誤り検出符号の追加を行ってもよい。この場合において、暗号化、復号化、誤り検出符号の付与、および、誤り検出の各機能を実現する回路やプログラムは、ホストコンピュータ100あるいはメモリコントローラ200に配置される。
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、CD(Compact Disc)、MD(MiniDisc)、DVD(Digital Versatile Disc)、メモリカード、ブルーレイディスク(Blu-ray(登録商標)Disc)等を用いることができる。
なお、本技術は以下のような構成もとることができる。
(1)論理アドレスと記憶装置の物理アドレスとを対応付けたエントリを複数含むアドレス変換情報の中から選択された一部のエントリを保持するアドレス変換情報保持部と、
ホストコンピュータにより指定された前記論理アドレスを含む前記エントリが前記アドレス変換情報保持部に保持されていない場合には当該保持されていないエントリを前記ホストコンピュータから取得して前記アドレス変換情報保持部に保持させるアドレス変換情報取得部と、
前記アドレス変換情報保持部に保持された前記エントリに基づいて前記指定された論理アドレスを前記物理アドレスに変換するアドレス変換部と、
前記変換された物理アドレスを用いて転送データを転送するデータ転送処理を実行するデータ転送部と
を具備する記憶制御装置。
(2)前記エントリの各々について前記エントリに対応する前記論理アドレスに対するアクセス頻度を保持するアクセス頻度保持部をさらに具備し、
前記データ転送部は、前記アクセス頻度が高い前記エントリを優先して前記一部のエントリを選択して前記アドレス変換情報保持部に保持させる処理を含む初期化処理をさらに実行する前記(1)記載の記憶制御装置。
(3)前記データ転送部は、前記記憶装置から前記エントリの全てを取得して前記ホストコンピュータに転送する処理をさらに含む前記初期化処理を実行する
前記(2)記載の記憶制御装置。
(4)前記ホストコンピュータにより指定されるアドレスは前記物理アドレスまたは前記論理アドレスであり、
前記アドレス変換部は、前記ホストコンピュータにより指定されたアドレスが前記論理アドレスである場合には前記エントリに基づいて前記指定された論理アドレスを前記物理アドレスに変換し、
前記データ転送部は、前記ホストコンピュータにより指定された物理アドレスまたは前記変換された物理アドレスを用いて前記転送データを転送する
前記(1)乃至(3)のいずれかに記載の記憶制御装置。
(5)前記ホストコンピュータにより指定されるアドレスは前記論理アドレスおよび前記物理アドレスと前記論理アドレスとのいずれかであり、
前記アドレス変換部は、前記ホストコンピュータにより指定されたアドレスが前記論理アドレスおよび前記物理アドレスである場合には前記指定された論理アドレスに対応する前記エントリを前記指定された物理アドレスに基づいて更新する
前記(4)記載の記憶制御装置。
(6)前記ホストコンピュータは、前記物理アドレスまたは前記論理アドレスを指定するコマンドと、前記論理アドレスおよび当該論理アドレスに新たに割り当てた前記物理アドレスを示す通知とを前記記憶制御装置に供給し、
前記アドレス変換部は、前記通知が供給された場合には前記通知の示す論理アドレスに対応する前記エントリを前記通知の示す物理アドレスに基づいて更新する
前記(4)記載の記憶制御装置。
(7)論理アドレスと記憶装置の物理アドレスとを対応付けたエントリを複数含むアドレス変換情報を保持する保持部と、
前記記憶装置と前記ホストコンピュータとの間で転送される転送データのデータサイズが所定サイズに満たない場合には前記保持されたエントリに基づいて前記論理アドレスを前記物理アドレスに変換するアドレス変換部と、
前記論理アドレスまたは前記変換された物理アドレスを指定して前記転送データの転送を記憶制御装置に指示する指示部と
を具備するホストコンピュータ。
(8)前記論理アドレスと当該論理アドレスに新たに割り当てられた物理アドレスとを示す通知を前記記憶制御装置に供給するアドレス変換情報管理部をさらに具備し、
前記保持部は、前記論理アドレスが割り当てられていない前記物理アドレスを空き物理アドレスとしてさらに保持し、
前記アドレス変換部は、前記論理アドレスに物理アドレスが対応付けられていない場合には前記空き物理アドレスを前記論理アドレスに新たに割り当てる
前記(7)記載のホストコンピュータ。
(9)前記アドレス変換部は、前記記憶装置と前記ホストコンピュータとの間で転送される転送データのデータサイズが前記所定サイズに満たず、かつ、前記論理アドレスに前記物理アドレスが対応付けられている場合には前記保持されたエントリに基づいて前記論理アドレスを前記物理アドレスに変換する
前記(7)記載のホストコンピュータ。
(10)論理アドレスと記憶装置の物理アドレスとを対応付けたエントリを複数含むアドレス変換情報を保持するホストコンピュータと、
前記アドレス変換情報の中から選択された一部のエントリを保持するアドレス変換情報保持部と、
ホストコンピュータにより指定された前記論理アドレスを含む前記エントリが前記アドレス変換情報保持部に保持されていない場合には当該保持されていないエントリを前記ホストコンピュータから取得して前記アドレス変換情報保持部に保持させるアドレス変換情報取得部と、
前記アドレス変換情報保持部に保持された前記エントリに基づいて前記指定された論理アドレスを前記物理アドレスに変換するアドレス変換部と、
前記変換された物理アドレスを用いて転送データを転送するデータ転送処理を実行するデータ転送部と
を具備する情報処理システム。
(11)アドレス変換情報取得部が、論理アドレスと記憶装置の物理アドレスとを対応付けたエントリを複数含むアドレス変換情報の中から選択された一部のエントリを保持するアドレス変換情報保持部に、ホストコンピュータにより指定された前記論理アドレスを含む前記エントリが保持されていない場合には当該保持されていないエントリを前記ホストコンピュータから取得して前記アドレス変換情報保持部に保持させるアドレス変換情報取得手順と、
アドレス変換部が、前記アドレス変換情報保持部に保持された前記エントリに基づいて前記指定された論理アドレスを前記物理アドレスに変換するアドレス変換手順と、
データ転送部が、前記変換された物理アドレスを用いて転送データを転送するデータ転送処理を実行するデータ転送手順と
を具備する記憶制御装置の制御方法。