特許第6021759号(P6021759)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社東芝の特許一覧

<>
  • 特許6021759-メモリシステムおよび情報処理装置 図000002
  • 特許6021759-メモリシステムおよび情報処理装置 図000003
  • 特許6021759-メモリシステムおよび情報処理装置 図000004
  • 特許6021759-メモリシステムおよび情報処理装置 図000005
  • 特許6021759-メモリシステムおよび情報処理装置 図000006
  • 特許6021759-メモリシステムおよび情報処理装置 図000007
  • 特許6021759-メモリシステムおよび情報処理装置 図000008
  • 特許6021759-メモリシステムおよび情報処理装置 図000009
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6021759
(24)【登録日】2016年10月14日
(45)【発行日】2016年11月9日
(54)【発明の名称】メモリシステムおよび情報処理装置
(51)【国際特許分類】
   G06F 12/06 20060101AFI20161027BHJP
   G06F 12/08 20160101ALI20161027BHJP
   G06F 12/00 20060101ALI20161027BHJP
   G06F 13/16 20060101ALI20161027BHJP
【FI】
   G06F12/06 530C
   G06F12/08 551G
   G06F12/08 557
   G06F12/00 597U
   G06F13/16 520B
【請求項の数】16
【全頁数】18
(21)【出願番号】特願2013-164282(P2013-164282)
(22)【出願日】2013年8月7日
(65)【公開番号】特開2015-35010(P2015-35010A)
(43)【公開日】2015年2月19日
【審査請求日】2015年8月12日
(73)【特許権者】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(74)【代理人】
【識別番号】110002147
【氏名又は名称】特許業務法人酒井国際特許事務所
(72)【発明者】
【氏名】前田 賢一
(72)【発明者】
【氏名】近藤 伸宏
(72)【発明者】
【氏名】吉井 謙一郎
(72)【発明者】
【氏名】原 圭吾
(72)【発明者】
【氏名】藤澤 俊雄
【審査官】 酒井 恭信
(56)【参考文献】
【文献】 特開2005−235182(JP,A)
【文献】 特開2007−219581(JP,A)
【文献】 米国特許出願公開第2008/0301385(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00 − 12/06
G06F 12/08
G06F 13/16 − 13/18
(57)【特許請求の範囲】
【請求項1】
ホストコントローラとホストメモリとを備えるホストに接続され、前記ホストメモリは第1メモリ領域と第2メモリ領域とを備える、メモリシステムであって、
前記ホストからリードコマンドおよびライトコマンドを受信するインタフェースユニットと、
不揮発性メモリと、
前記ライトコマンドに応じて書き込み対象のデータを前記不揮発性メモリに書き込み、
前記リードコマンドによって要求された読み出し対象のデータが前記第1メモリ領域に格納されているか否かの判定を実行し、前記読み出し対象のデータが前記第1メモリ領域に格納されている場合、前記ホストコントローラに、前記読み出し対象のデータを前記第1メモリ領域から前記第2メモリ領域にコピーさせ、前記読み出し対象のデータが前記第1メモリ領域に格納されていない場合、前記不揮発性メモリから前記読み出し対象のデータを読み出して、前記ホストコントローラに、前記不揮発性メモリから読み出した読み出し対象のデータを前記第2メモリ領域に格納させる、コントローラユニットと、
を備えることを特徴とするメモリシステム。
【請求項2】
前記コントローラユニットは、前記ライトコマンドに応じて書き込み対象のデータを前記不揮発性メモリに書き込む際、前記書き込み対象のデータ前記第1メモリ領域から取得する、
ことを特徴とする請求項1に記載のメモリシステム。
【請求項3】
前記コントローラユニットは、前記判定のために、前記第1メモリ領域に格納されているタグ情報を取得し、
前記タグ情報は、前記書き込み対象のデータが前記第1メモリ領域に格納されているか否かを示す情報である、
ことを特徴とする請求項1に記載のメモリシステム。
【請求項4】
前記コントローラユニットは、前記ホストコントローラに、前記読み出し対象のデータを前記第1メモリ領域の第1アドレスから前記第2メモリ領域の第2アドレスにコピーさせ、
前記第1アドレスおよび前記第2アドレスは、前記リードコマンドに基づいて決定される、
ことを特徴とする請求項1に記載のメモリシステム。
【請求項5】
前記リードコマンドは、第3アドレスおよびコマンド識別情報を含み、
前記第3アドレスは、前記読み出し対象のデータの論理ブロックアドレスであり
前記第1アドレスは、前記第3アドレスに基づいて決定され、
前記第アドレスは、前記コマンド識別情報に基づいて決定される、
ことを特徴とする請求項4に記載のメモリシステム。
【請求項6】
前記コントローラユニットは、デスティネーションフラグを前記ホストコントローラに設定し、
前記デスティネーションフラグは、前記第1アドレスから前記第2アドレスにコピーすることを示す、
ことを特徴とする請求項4に記載のメモリシステム。
【請求項7】
前記コントローラユニットは、前記読み出し対象のデータが前記第1メモリ領域に格納されていない場合、前記ホストコントローラに、前記不揮発性メモリから読み出した読み出し対象のデータを前記第1メモリ領域に格納させ、その後、前記ホストコントローラに、前記読み出し対象のデータを前記第1メモリ領域から前記第2メモリ領域にコピーさせる、
ことを特徴とする請求項1に記載のメモリシステム。
【請求項8】
ホストコントローラと、
第1メモリ領域および第2メモリ領域を備えるホストメモリと、
を備えるホストシステムと、
前記ホストシステムからリードコマンドおよびライトコマンドを受信するインタフェースユニットと、
不揮発性メモリと、
前記ライトコマンドに応じて書き込み対象のデータを前記不揮発性メモリに書き込み、
前記リードコマンドによって要求された読み出し対象のデータが前記第1メモリ領域に格納されているか否かの判定を実行し、前記読み出し対象のデータが前記第1メモリ領域に格納されている場合、前記ホストコントローラに、前記読み出し対象のデータを前記第1メモリ領域から前記第2メモリ領域にコピーさせ、前記読み出し対象のデータが前記第1メモリ領域に格納されていない場合、前記不揮発性メモリから前記読み出し対象のデータを読み出して、前記ホストコントローラに、前記不揮発性メモリから読み出した読み出し対象のデータを前記第2メモリ領域に格納させる、コントローラユニットと、
を備えるメモリシステムと、
を備えることを特徴とする情報処理装置。
【請求項9】
前記コントローラユニットは、前記ライトコマンドに応じて書き込み対象のデータを前記不揮発性メモリに書き込む際、前記書き込み対象のデータ前記第1メモリ領域から取得する、
ことを特徴とする請求項8に記載の情報処理装置。
【請求項10】
前記コントローラユニットは、前記判定のために、前記第1メモリ領域に格納されているタグ情報を取得し、
前記タグ情報は、前記書き込み対象のデータが前記第1メモリ領域に格納されているか否かを示す情報である、
ことを特徴とする請求項8に記載の情報処理装置。
【請求項11】
前記コントローラユニットは、前記ホストコントローラに、前記読み出し対象のデータを前記第1メモリ領域の第1アドレスから前記第2メモリ領域の第2アドレスにコピーさせ、
前記第1アドレスおよび前記第2アドレスは、前記リードコマンドに基づいて決定される、
ことを特徴とする請求項8に記載の情報処理装置。
【請求項12】
前記リードコマンドは、第3アドレスおよびコマンド識別情報を含み、
前記第3アドレスは、前記読み出し対象のデータの論理ブロックアドレスであり
前記第1アドレスは、前記第3アドレスに基づいて決定され、
前記第アドレスは、前記コマンド識別情報に基づいて決定される、
ことを特徴とする請求項11に記載の情報処理装置。
【請求項13】
前記コントローラユニットは、デスティネーションフラグを前記ホストコントローラに設定し、
前記デスティネーションフラグは、前記第1アドレスから前記第2アドレスにコピーすることを示す、
ことを特徴とする請求項1に記載の情報処理装置。
【請求項14】
前記書き込み対象のデータは、前記第2メモリ領域から前記第1メモリ領域にコピーされ、その後、前記不揮発性メモリに格納される、
ことを特徴とする請求項8に記載の情報処理装置。
【請求項15】
前記ホストシステムは、前記第2アドレス、前記第3アドレスおよび前記コマンド識別情報を備える第1リードコマンドを生成するホストプロセッサをさらに備え、
前記ホストコントローラは、
前記第1リードコマンドに含まれる前記第2アドレスと前記コマンド識別情報との対応関係を記憶するとともに、前記第3アドレスおよび前記コマンド識別情報を含む第2リードコマンドを生成して前記コントローラユニットに送信し、
前記コントローラユニットは、前記第3アドレスに基づいて前記第1アドレスを決定し、前記決定した第1アドレス、前記コマンド識別情報および前記デスティネーションフラグを前記ホストコントローラに設定し、
前記ホストコントローラは、前記設定されたコマンド識別情報を、前記対応関係に基づいて前記第2アドレスに変換する、
ことを特徴とする請求項13に記載の情報処理装置。
【請求項16】
前記コントローラユニットは、前記読み出し対象のデータが前記第1メモリ領域に格納されていない場合、前記ホストコントローラに、前記不揮発性メモリから読み出した読み出し対象のデータを前記第1メモリ領域に格納させ、その後、前記ホストコントローラに、前記読み出し対象のデータを前記第1メモリ領域から前記第2メモリ領域にコピーさせる、
ことを特徴とする請求項8に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メモリシステムおよび情報処理装置に関する。
【背景技術】
【0002】
従来、UMA(Unified Memory Architecture)が知られている。UMAは、ホストに搭載されるメモリをホストとデバイスとが共有して使用するメモリアーキテクチャである。UMAによれば、メモリコストの低減を図ることができる。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平10−269165号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
UMAが適用される情報処理装置においては、ホストの外部記憶装置としてのメモリシステムがメモリを使用することが考えられる。
【0005】
本発明の一つの実施形態は、ホストに搭載されるメモリを用いてアクセス性能を可及的に向上させたメモリシステムおよび情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明の一つの実施形態によれば、メモリシステムは、ホストコントローラとホストメモリとを備えるホストに接続される。前記ホストメモリは第1メモリ領域と第2メモリ領域とを備える。メモリシステムは、インタフェースユニットと、不揮発性メモリと、コントローラユニットとを備える。前記インタフェースユニットは、前記ホストからリードコマンドおよびライトコマンドを受信する。前記コントローラユニットは、前記ライトコマンドに応じて書き込み対象のデータを前記不揮発性メモリに書き込む。また、前記コントローラユニットは、前記リードコマンドによって要求された読み出し対象のデータが前記第1メモリ領域に格納されているか否かの判定を実行する。前記読み出し対象のデータが前記第1メモリ領域に格納されている場合、前記コントローラユニットは、前記ホストコントローラに、前記読み出し対象のデータを前記第1メモリ領域から前記第2メモリ領域にコピーさせる。前記読み出し対象のデータが前記第1メモリ領域に格納されていない場合、前記コントローラユニットは、前記不揮発性メモリから前記読み出し対象のデータを読み出して、前記ホストコントローラに、前記不揮発性メモリから読み出した読み出し対象のデータを前記第2メモリ領域に格納させる。
【図面の簡単な説明】
【0007】
図1図1は、第1の実施形態の情報処理装置の構成例を示す図である。
図2図2は、デバイス使用領域のメモリ構造を説明する図である。
図3図3は、リード処理を説明するシーケンス図である。
図4図4は、キャッシュ判定処理を説明するシーケンス図である。
図5図5は、ヒット時転送処理を説明するシーケンス図である。
図6図6は、コマンドまたはデータの流れを説明する図である。
図7図7は、第1の実施形態のミス時転送処理を説明するシーケンス図である。
図8図8は、第2の実施形態のミス時転送処理を説明するシーケンス図である。
【発明を実施するための形態】
【0008】
以下に添付図面を参照して、実施形態にかかるメモリシステムおよび情報処理装置を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【0009】
(第1の実施形態)
図1に、第1の実施形態の情報処理装置の構成例を示す図である。本情報処理装置は、ホスト1と、ホスト1の外部記憶装置として機能するメモリシステム2とを備える。ホスト1とメモリシステム2との間は通信路3で接続されている。
【0010】
情報処理装置は、例えば、パーソナルコンピュータ、携帯電話、撮像装置などである。メモリシステム2が準拠する規格および通信路3の規格は、任意である。例えば、メモリシステム2は、UFS(Universal Flash Storage)規格に準拠したフラッシュメモリである。通信路3の通信規格としては、例えばMIPI(Mobile Industry Processor Interface)M−PHYが採用される。
【0011】
メモリシステム2は、不揮発性メモリとしてのNANDフラッシュメモリ(NANDメモリ)210と、NANDメモリ210とホスト1との間のデータ転送を行うデバイスコントローラ200とを備えている。なお、メモリシステム2の不揮発性メモリとしては、NANDフラッシュメモリ以外の種類のメモリであっても採用可能である。例えば、MRAM (magnetoresistive random access memory)またはReRAM (resistance random access memory)などが採用可能である。
【0012】
NANDメモリ210は、メモリセルアレイを有する1以上のメモリチップによって構成される。メモリセルアレイは、複数のメモリセルがマトリクス状に配列されて構成される。個々のメモリセルアレイは、データ消去の単位であるブロックを複数配列して構成される。さらに、各ブロックは、複数のページより構成されている。各ページは、データの書き込み及び読み出しの単位である。
【0013】
NANDメモリ210は、L2Pテーブル211およびホスト1から送信されるユーザデータを記憶する(ユーザデータ212)。ユーザデータ212は、例えば、ホスト1の実行環境を提供するオペレーティングシステムプログラム(OS)、ホスト1がOS上で実行するユーザプログラム、または、OSまたはユーザプログラムが入出力するデータを含む。
【0014】
L2Pテーブル211は、メモリシステム2がホスト1に対する外部記憶装置として機能するために必要となる管理情報の1つである。L2Pテーブル211は、ホスト1がメモリシステム2にアクセスする際に使用する論理ブロックアドレス(LBA:Logical block address)と、NANDメモリ210内の物理アドレス(ブロックアドレス+ページアドレス+ページ内記憶位置)とを対応づけるアドレス変換情報である。後述するL2Pキャッシュ領域300には、このL2Pテーブル211の一部が一時的に格納される(即ちキャッシュされる)。L2Pキャッシュ領域300にキャッシュされる内容と区別するために、これ以降、NANDメモリ210に記憶されているL2Pテーブル211をL2P本体211と表記する。
【0015】
デバイスコントローラ200は、通信路3の接続インタフェースであるホスト接続アダプタ201と、NANDメモリ210との間の接続インタフェースであるNAND接続アダプタ204と、デバイスコントローラ200の制御を実行するデバイスコントローラ主要部202と、RAM203とを備えている。
【0016】
RAM203は、NANDメモリ210とホスト1との間のデータ転送のためのバッファとして用いられる。また、RAM203は、ホスト1から受信したコマンドをキューイングするコマンドキューとして使用される。ホスト1からのコマンドは、ホスト1が送信したコマンド毎にユニークな識別情報を含んでいる。ホスト1およびメモリシステム2においては、複数のコマンドが送受信された場合には、識別情報によって夫々のコマンドが特定される。
【0017】
デバイスコントローラ主要部202は、ホスト接続アダプタ201を介してホスト1とRAM203との間のデータ転送を制御したり、NAND接続アダプタ204を介してRAM203とNANDメモリ210との間のデータ転送を制御したりする。デバイスコントローラ主要部202は、ホスト1との間の通信路3においてバスマスタとして機能して第1ポート230を用いてデータ転送を行う。また、デバイスコントローラ主要部202は、さらに2つのバスマスタ205、206を備えている。バスマスタ205は、第2ポート231を用いてホスト1との間のデータ転送を行うことができ、バスマスタ206は、第3ポート232を用いてホスト1との間のデータ転送を行うことができる。
【0018】
また、デバイスコントローラ主要部202は、キャッシュ制御部207を備える。キャッシュ制御部207は、デバイス使用領域102に確保されたキャッシュ(L2Pキャッシュ領域300、L2Pキャッシュタグ領域310、データキャッシュ領域400、およびデータキャッシュタグ領域410)を制御する。デバイス使用領域102に確保されたキャッシュについては後述する。
【0019】
なお、デバイスコントローラ主要部202は、例えば、演算装置および記憶装置を備えたマイクロコンピュータユニットにより構成される。当該演算装置が前記記憶装置に予め格納されたファームウェアを実行することによってデバイスコントローラ主要部202としての機能が実現される。例えば、キャッシュ制御部207は、ファームウェアによって実現される。なお、デバイスコントローラ主要部202から記憶装置を省略して、ファームウェアをNANDメモリ210に格納しておくようにしてもよい。また、デバイスコントローラ主要部202はASICを用いて構成されることが可能である。
【0020】
ホスト1は、OSおよびユーザプログラムを実行するCPU110と、メモリ100(例えば、ホスト1のメインメモリ。以下のおいてメインメモリ100)と、ホストコントローラ120とを備えている。メインメモリ100、CPU110、およびホストコントローラ120は、バス140で互いに接続されている。
【0021】
メインメモリ100は、例えばDRAMで構成される。メインメモリ100は、例えばMRAM(Magnetoresistive Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)であってもよい。メインメモリ100は、ホスト使用領域101(第2メモリ領域)とデバイス使用領域102(第1メモリ領域)とを備える。ホスト使用領域101は、ホスト1がプログラム(OSおよびユーザプログラム)を実行する際のプログラム展開領域および当該プログラム展開領域に展開されたプログラムを実行する際のワークエリアとして使用される。デバイス使用領域102は、メモリシステム2が使用するメモリ領域である。デバイス使用領域102は、例えば、後述するL2Pキャッシュ領域300、L2Pキャッシュタグ領域310、データキャッシュ領域400、およびデータキャッシュタグ領域410を格納する領域として用いられる。例えば、メインメモリ100の固定のメモリ領域がデバイス使用領域102として割り当てられる。
【0022】
図2は、デバイス使用領域102のメモリ構造を説明する図である。図示するように、デバイス使用領域102には、L2Pキャッシュ領域300、L2Pキャッシュタグ領域310、データキャッシュ領域400、およびデータキャッシュタグ領域410が確保されている。L2Pキャッシュ領域300は、L2P本体211の一部がキャッシュされる。L2Pキャッシュタグ領域310は、L2Pキャッシュ領域300のヒット/ミス判定に使用されるタグ情報が格納される。データキャッシュ領域400は、ユーザデータ212がバッファリングされるキャッシュ構造のメモリ領域である。データキャッシュタグ領域410は、データキャッシュ領域400のヒット/ミス判定に使用されるタグ情報が格納される。L2Pキャッシュタグ領域310およびデータキャッシュタグ領域410は、VB(Valid Buffer)ビットおよびDB(Dirty Buffer)ビットを含む、制御情報を有している。VBビットは、キャッシュラインが有効であるか否かを示す。DBビットは、キャッシュラインがダーティであるかクリーンであるかを示す。
【0023】
ホストコントローラ120は、バスアダプタ121、デバイス接続アダプタ126、およびホストコントローラ主要部122を備えている。バスアダプタ121は、バス140の接続インタフェースである。デバイス接続アダプタ126は、通信路3の接続インタフェースである。ホストコントローラ主要部122は、デバイス接続アダプタ126と第1ポート130を介して接続されている。ホストコントローラ主要部122は、バスアダプタ121を介してメインメモリ100またはCPU110との間でデータまたはコマンドの転送を行ったり、デバイス接続アダプタ126および第1ポート130を介してメモリシステム2との間でデータの転送を行ったりすることができる。
【0024】
また、ホストコントローラ120は、メインメモリDMA(Dynamic Memory Access)123、制御DMA124、およびデータDMA125を備えている。メインメモリDMA123は、ホスト使用領域101とデバイス使用領域102との間でDMA転送を行う。制御DMA124は、第2ポート131を介してデバイス接続アダプタ126に接続されている。制御DMA124は、メモリシステム2が送信するコマンドを捕捉してホストコントローラ主要部122またはメインメモリDMA123に転送したり、ホストコントローラ主要部122がデバイス使用領域102にかかるステータス情報をメモリシステム2に転送したりする。データDMA125は、デバイス接続アダプタ126と第3ポート132を介して接続されている。データDMA125は、デバイス使用領域102とメモリシステム2との間でDMA転送を行う。
【0025】
なお、デバイス接続アダプタ126およびホスト接続アダプタ201の機能により、第1ポート130は第1ポート230と、第2ポート131は第2ポート231と、第3ポート132は第3ポート232と夫々対応付けられている。具体的には、デバイス接続アダプタ126は、第1ポート130を介してメモリシステム2に送られてきた内容を第1ポート230を介してデバイスコントローラ主要部202に送り、第2ポート131を介してメモリシステム2に送られてきた内容を第2ポート231を介してデバイスコントローラ主要部202に送り、第3ポート132を介してメモリシステム2に送られてきた内容を第3ポート232を介してデバイスコントローラ主要部202に送る。また、デバイス接続アダプタ126は、第1ポート230を介してホスト1に送られてきた内容を第1ポート130を介してホストコントローラ主要部122に送り、第2ポート231を介してホスト1に送られてきた内容を第2ポート131を介して制御DMA124に送り、第3ポート232を介してホスト1に送られてきた内容を第3ポート132を介してデータDMA125に送る。制御DMA124、データDMA125に送られてきた内容は、例えばバスアダプタ121を介してホストコントローラ主要部122に送られる。
【0026】
なお、ポート130〜132の夫々は、メモリシステム2との間の通信に使用される入出力バッファを夫々独立に備える。ホストコントローラ主要部122、制御DMA124、データDMA125が夫々別々の入出力バッファを用いてメモリシステム2に接続されていることにより、ホストコントローラ120は、ホストコントローラ主要部122を用いたメモリシステム2との通信と、制御DMA124を用いたメモリシステム2との通信と、データDMA125を用いたメモリシステム2との通信とを夫々独立して実行することができる。また、入出力バッファの入れ替えの必要なくこれらの通信の切り替えを行うことができるので、通信の切り替えを高速に実行することができる。メモリシステム2が備えるポート230〜232についても同様のことがいえる。
【0027】
CPU110は、実行中のプログラムによる制御に基づいて、ユーザデータをホスト使用領域101に生成することができる。CPU110によってライトコマンドが発行されると、ライトコマンドを受信したデバイスコントローラ主要部202の指示により、書き込み対象のユーザデータはホスト使用領域101からデバイス使用領域102のデータキャッシュ領域400にコピーされる。即ち、書き込み対象のユーザデータがデータキャッシュ領域400に格納される。データキャッシュ領域400に格納された書込み対象のユーザデータは、所定のタイミングでメモリシステム2に転送され、NANDメモリ210においてユーザデータ212として不揮発メモリに格納される。データキャッシュ領域400に格納されているユーザデータがNANDメモリ210に転送される処理を、追い出し処理(Write back)と表記する。
【0028】
また、CPU110は、実行中のプログラムが必要とするユーザデータをホスト使用領域101に読み出すことができる。CPU110は、ユーザデータを読み出す際には、ホスト使用領域101にユーザデータ212を読み出すリードコマンド(第1リードコマンド)を発行する。第1リードコマンドが発行された時点においては、読み出し対象のユーザデータがデータキャッシュ領域400に格納されている場合と、読み出し対象のユーザデータがデータキャッシュ領域400に格納されていない場合とがある。第1の実施形態においては、読み出し対象のユーザデータがデータキャッシュ領域400に格納されている場合には、デバイスコントローラ主要部202の指示によりデータキャッシュ領域400に格納された読み出し対象のユーザデータがホスト使用領域101に格納される。読み出し対象のユーザデータがデータキャッシュ領域400に格納されていない場合には、NANDメモリ210に格納されたユーザデータがホスト使用領域101に格納される。
【0029】
CPU110がライトコマンドを発行してからユーザデータがデータキャッシュ領域400またはNANDメモリ210に格納されるまでの処理をライト処理と表記する。CPU110が第1リードコマンドを発行してから読み出し対象のユーザデータがホスト使用領域101に格納されるまでの処理をリード処理と表記する。
【0030】
次に、第1の実施形態の情報処理装置におけるリード処理を説明する。
【0031】
図3は、リード処理を説明するシーケンス図である。
第1リードコマンドがCPU110によって発行されると、ホストコントローラ主要部122は、その第1リードコマンドを捕捉する(S1)。第1リードコマンドは、NANDメモリ210内の読み出し位置を示す第1のアドレス(stor addr)と、ホスト使用領域101内の転送先の位置を示す第2のアドレス(mem addr)と、データサイズ(length)と、第1リードコマンド識別情報(「task tag」)と、を備えている。第1リードコマンド識別情報は、少なくともホスト1からメモリシステム2に送信される個々の第1リードコマンド毎に、異なる値が設定される情報である。即ち、CPU110が複数の第1リードコマンドを生成した場合には、「task tag」を参照することによって複数の第1リードコマンドのうちの夫々を区別することが可能である。なお、一般的にはメモリシステムが複数の論理ユニット(Logical Unit)からなっており、その場合にはどの論理ユニットにアクセスするかという指定(Logical Unit Number = LUN)が必要となるが、簡単のために単一の論理ユニットの例を説明し、LUNを省略する。「stor addr」は、例えばLBAを用いて表記される。
【0032】
ホストコントローラ主要部122は、捕捉した第1リードコマンドから「mem addr」と識別情報と読み出して、読み出した「mem addr」と識別情報とを相互に対応付けてホストコントローラ主要部122内部のメモリに記憶する(S2)。なお、CPU110からの第1リードコマンドが複数発行された場合には、ホストコントローラ主要部122は、「mem addr」と第1リードコマンド識別情報との対応関係を複数記憶することができる。
【0033】
続いて、ホストコントローラ主要部122は、第1リードコマンドに含まれる各種情報から「mem addr」を除いた情報(第2リードコマンド)を、デバイス接続アダプタ126に送信する(S3)。即ち、第2リードコマンドは、「stor addr」、「length」、および「task tag」を含む。デバイス接続アダプタ126は、第2リードコマンドをホスト接続アダプタ201に転送する(S4)。
【0034】
ホスト接続アダプタ201は、第2リードコマンドをデバイスコントローラ主要部202に転送する(S5)。デバイスコントローラ主要部202は、第2リードコマンドを受信すると、読み出し対象のユーザデータがデータキャッシュ領域400に格納されているか否かを判定する(キャッシュ判定処理、S6)。読み出し対象のユーザデータがデータキャッシュ領域400に格納されていると判定された場合(即ちヒット時)には、ヒット時転送処理が実行される(S7)。読み出し対象のユーザデータがデータキャッシュ領域400に格納されていないと判定された場合(即ちミス時)には、ミス時転送処理が実行される(S8)。
【0035】
前述のように、CPU110がライトコマンドを発行すると書き込み対象のユーザデータは、メインメモリ100のデータキャッシュ領域400に格納され、所定のタイミングでメモリシステム2に転送され、NANDメモリ210に格納される。書き込み対象のユーザデータがデータキャッシュ領域400に格納されている時に、CPU110によりこの書き込み対象のユーザデータに対するリードコマンドが発行された場合には、前述の「ヒット時」に該当し、ヒット時転送処理が実行される。一方、書き込み対象のユーザデータがデータキャッシ領域400からメモリシステム2に転送され、ユーザデータとしてNANDメモリ210に格納されている時に、CPU110によりこのユーザデータに対するリードコマンドが発行された場合には、前述の「ミス時」に該当し、ミス時転送処理が実行される。
【0036】
図4は、キャッシュ判定処理を説明するシーケンス図である。
キャッシュ判定処理においては、まず、デバイスコントローラ主要部202は、キャッシュ制御部207にキャッシュ判定要求を送信する(S21)。キャッシュ判定要求は、第2リードコマンドに含まれる「stor addr」、およびキャッシュ判定要求識別情報を含んでいる。キャッシュ判定要求識別情報は、少なくともメモリシステム2からホスト1へ送信される個々のキャッシュ判定要求毎に、異なる値が設定される識別情報である。キャッシュ制御部207は、「stor addr」に基づいて、データキャッシュタグ領域410内における「stor addr」に対応するタグ情報の格納位置を示すアドレスを特定する(S22)。そして、キャッシュ制御部207は、特定したアドレスが示す位置をタグ情報の読み出し位置としてタグ情報を読み出すための転送コマンドを、ホスト接続アダプタ201に送信する(S23)。ホスト接続アダプタ201は、転送コマンドをデバイス接続アダプタ126に転送する(S24)。デバイス接続アダプタ126が受信した転送コマンドは、制御DMA124によってホストコントローラ主要部122に転送される(S25)。S23、S24、S25の転送コマンドにはキャッシュ判定要求に含まれているキャッシュ判定要求識別情報を含んでいる。
【0037】
ホストコントローラ主要部122は、データDMA125によるデータキャッシュタグ領域410からデバイス接続アダプタ126(正確にはデバイス接続アダプタ126が備えるバッファ)にタグ情報をコピーするコピー処理を起動する(S26)。データキャッシュタグ領域410における読み出し位置は、ステップS22によって特定されたアドレスが示す位置である。データDMA125は、コピー処理が完了すると、コピー処理を完了した旨の通知(コピー完了通知)をホストコントローラ主要部122に送信する(S27)。
【0038】
コピー処理の完了後、デバイス接続アダプタ126は、コピー処理によって送信されてきたタグ情報をホスト接続アダプタ201に転送する(S28)。ホスト接続アダプタ201は、タグ情報をキャッシュ制御部207に転送する(S29)。キャッシュ制御部207は、タグ情報に基づいてヒット/ミスの判定を行う(S30)。キャッシュ制御部207は、判定結果をデバイスコントローラ主要部202に通知して(S31)、キャッシュ判定処理が終了する。S28、S29のタグ情報、およびS31の判定結果の通知はキャッシュ判定要求に含まれているキャッシュ判定要求識別情報を含んでいる。
【0039】
図5は、ヒット時転送処理を説明するシーケンス図である。
ヒット時転送処理においては、デバイスコントローラ主要部202は、コピーコマンドを生成して、生成したコピーコマンドをホスト接続アダプタ201に送信する(S41)。ホスト接続アダプタ201は、コピーコマンドをデバイス接続アダプタ126に転送する(S42)。デバイス接続アダプタ126が受信したコピーコマンドは、制御DMA124によってホストコントローラ主要部122に転送される(S43)。
【0040】
コピーコマンドは、データキャッシュ領域400とホスト使用領域101との間で、ユーザデータをコピーせしめるコマンドである。リード処理の場合、コピーコマンドは、データキャッシュ領域400において読み出し対象のユーザデータが格納されているキャッシュラインの位置を示すアドレス(cache addr)、データサイズ(size)、第1リードコマンド識別情報(「task tag」)、コピーコマンド識別情報(「ID」)、および方向情報(RF)を含んでいる。Cache addrは、stor addrから所定の方法に従い算出される。なお、図5においては、デバイスコントローラ主要部202がcache addrを算出しているが、ホストコントローラ122がcache addrを算出してもよい。その場合、デバイスコントローラ主要部202はstor addrを転送し、ホストコントローラ122においてcache addrが算出される。コピーコマンド識別情報は、少なくともメモリシステム2からホスト1へ送信される個々のコピーコマンド識別情報毎に、異なる値が設定される。コピーコマンドが含む第1リードコマンド識別情報には、第2リードコマンドに含まれる第1リードコマンド識別情報と同一の値が設定される。
【0041】
コピーコマンドが含む「RF」について説明する。ライト処理においては、ホスト使用領域101からデータキャッシュ領域400にユーザデータのコピーが行われる。リード処理においては、データキャッシュ領域400からホスト使用領域101にユーザデータのコピーが行われる。「RF」は、コピーの方向を示す。「RF」の値が「0」であることは、ホスト使用領域101からデータキャッシュ領域400にコピーすることを示す。「RF」の値が「1」であることは、データキャッシュ領域400からホスト使用領域101にコピーすることを示す。リード処理においては、「RF」の値は「1」に設定される。
【0042】
前述したように、ホストコントローラ主要部122は、「mem addr」と第1リードコマンド識別情報(「task tag」)との対応関係を記憶している。ホストコントローラ主要部122は、ステップS43の処理によってコピーコマンドを受信すると、予め記憶する対応関係を参照することによってコピーコマンドが含む第1リードコマンド識別情報を「mem addr」に変換する(S44)。
【0043】
ホストコントローラ主要部122は、コピーコマンドが含む「cache addr」によってデータキャッシュ領域400内の位置を特定し、コピーコマンドが含む第1リードコマンド識別情報によってホスト使用領域101内の位置を特定し、特定した2つの位置間のコピーの方向を「RF」によって特定することができる。ホストコントローラ主要部122は、メインメモリDMA123によるコピー処理を起動する(S45)。ステップS45におけるコピー処理は、「cache addr」をソースアドレスとし「mem addr」をデスティネーションアドレスとするコピー処理である。
【0044】
なお、メインメモリDMA123は、内部に夫々異なる決まった方向にコピーする2つのDMAモジュールを含んで構成されてもよい。ステップS45の処理においては、ホストコントローラ主要部122は、2つのDMAモジュールの一方には、「cache addr」をソースアドレスとして、「mem addr」をデスティネーションアドレスとして夫々設定する。同時に、ホストコントローラ主要部122は、他方のDMAモジュールには、「cache addr」をデスティネーションアドレスとして、「mem addr」をソースアドレスとして夫々設定する。そして、ホストコントローラ主要部122は、「RF」の値に基づいて、2つのDMAモジュールのうちの1つを選択して起動する。
【0045】
また、メインメモリDMA123は、夫々アドレスが設定される2つのバッファと、2つのバッファに設定されたアドレスのうちのどちらをソースアドレスとして使用するかを選択するスイッチとを備えて構成されてもよい。ステップS45の処理においては、ホストコントローラ主要部122は、2つのバッファに「cache addr」および「mem addr」を夫々設定する。そして、ホストコントローラ主要部122は、「RF」の値を選択信号としてスイッチを操作して、メインメモリDMA123を起動する。
【0046】
メインメモリDMA123は、コピー処理を完了すると、コピー完了通知をホストコントローラ主要部122に送信する(S46)。ホストコントローラ主要部122は、コピー完了通知を受信すると、コピーコマンドの実行が完了した旨の通知(コピーコマンド完了通知)をデバイス接続アダプタ126に送信する(S47)。コピーコマンド完了通知は、コピーコマンド識別情報を含む。コピーコマンド完了通知が含むコピーコマンド識別情報には、コピーコマンドに含まれるコピーコマンド識別情報と同一の値が設定される。デバイス接続アダプタ126は、コピーコマンド完了通知をホスト接続アダプタ201に転送する(S48)。ホスト接続アダプタ201は、コピーコマンド完了通知をデバイスコントローラ主要部202に転送する(S49)。そして、ヒット時転送処理が完了する。デバイスコントローラ主要部202は、コピーコマンド完了通知を受信することによって、S4において送信したコピーコマンドの実行が完了したことを認識することができる。
【0047】
図6は、コマンドまたはデータの流れを説明する図である。図3、5の各ステップを参照しながら、図6を説明する。図6において符号500〜507が示す矢印は、コマンドまたはデータの流れを示している。
CPU110が第1リードコマンドを発行すると、図3のステップS1の処理によって、第1リードコマンドはホストコントローラ主要部122に捕捉される(矢印500)。ホストコントローラ主要部122は、第1リードコマンドから第2リードコマンドを生成する。第2リードコマンドは、図3のステップS3〜S5の処理によって、ホストコントローラ主要部122から第1ポート130、デバイス接続アダプタ126、通信路3、ホスト接続アダプタ201、および第1ポート230を経由してデバイスコントローラ主要部202に転送される(矢印501)。デバイスコントローラ主要部202のヒットの判定をした場合には、デバイスコントローラ主要部202は「cache addr」を含むコピーコマンドを生成する。コピーコマンドは、図5のステップS41〜S43の処理によって、バスマスタ205、第2ポート231、ホスト接続アダプタ201、通信路3、デバイス接続アダプタ126を経由して転送され、制御DMA124に捕捉される(矢印502)。制御DMA124は、コピーコマンドをバスアダプタ121を経由してホストコントローラ主要部122に転送する(矢印503)。ホストコントローラ主要部122は、図5のステップS45の処理において、メインメモリDMA123に、「mem addr」を設定し(矢印504)、「cache addr」を設定し(矢印505)、メインメモリDMA123を起動する(矢印506)。メインメモリDMA123は、デバイス使用領域102(より詳しくはデータキャッシュ領域400)からホスト使用領域101への、読み出し対象のユーザデータのコピーを実行する(矢印507)。
【0048】
図7は、第1の実施形態のミス時転送処理を説明するシーケンス図である。
ミス時転送処理においては、デバイスコントローラ主要部202は、まず、「stor addr」をNANDメモリ1内の位置を示す物理アドレス(NAND addr)に変換する(S51)。
【0049】
ステップS51の処理は、例えば次のようにして実行される。まず、キャッシュ判定処理と同様の処理によって、「stor addr」と物理アドレスとの対応関係を示すアドレス変換情報がL2Pキャッシュ領域300に格納されているか否かを判定する。アドレス変換情報がL2Pキャッシュ領域300に格納されている場合には、デバイスコントローラ主要部202は、L2Pキャッシュ領域300からアドレス変換情報を読み出す転送コマンドをホスト1に送信する。ホストコントローラ120は、転送コマンドを受信すると、L2Pキャッシュ領域300からデバイスコントローラ主要部202にアドレス変換情報を転送する。アドレス変換情報がL2Pキャッシュ領域300に格納されていない場合には、デバイスコントローラ主要部202は、NANDメモリ210からアドレス変換情報を読み出す。デバイスコントローラ主要部202は、L2Pキャッシュ領域300から転送されてきたアドレス変換情報またはNANDメモリ210から読み出したアドレス変換情報を用いて、「stor addr」を「NAND addr」に変換する。
【0050】
ステップS51に続いて、デバイスコントローラ主要部202は、NANDメモリ210から読み出し対象のユーザデータを読み出す(S52)。読み出し対象のユーザデータの読み出し位置は、ステップS51の処理によって得られた「NAND addr」が示す位置である。デバイスコントローラ主要部202は、読み出した読み出し対象のユーザデータをホスト接続アダプタ201に送信する(S53)。ホスト接続アダプタ201は、読み出し対象のユーザデータをデバイス接続アダプタ126に転送する(S54)。ホストコントローラ主要部122は、デバイス接続アダプタ126が受信した読み出し対象のユーザデータを読み出して(S55)、ホスト使用領域101に書き込む(S56)。ユーザデータの書き込み位置は、「mem addr」が示す位置である。S53、S54、S55の読み出し対象のユーザデータには第1リードコマンド識別情報が含まれる。
【0051】
図3において、ステップS6〜ステップS8の処理は、キャッシュラインのサイズのデータ毎に実行されてもよい。第2リードコマンドによる読み出し対象のユーザデータは、第2リードコマンドに含まれる「stor addr」および「length」によって特定される。第2リードコマンドに含まれる「length」がキャッシュラインのサイズよりも大きい場合には、第2リードコマンドによる読み出し対象のユーザデータがキャッシュラインのサイズ毎に分割され、分割された夫々のユーザデータ毎にステップS6〜ステップS8の処理が実行される。
【0052】
第2リードコマンドによる読み出し対象のユーザデータの全てがホスト使用領域101に格納された後、デバイスコントローラ主要部202は、第2リードコマンドの実行が完了した旨のリードコマンド完了通知をホスト接続アダプタ201に送信する(S9)。ホスト接続アダプタ201は、リードコマンド完了通知をデバイス接続アダプタ126に転送する(S10)。デバイス接続アダプタ126は、リードコマンド完了通知をホストコントローラ主要部122に転送する(S11)。リードコマンド完了通知は、その後CPU110に転送され、CPU110はリードコマンド完了通知を受信することで第1リードコマンドの実行完了を認識することができる。リードコマンド完了通知には第1リードコマンド識別情報が含まれている。
【0053】
このように、本発明の第1の実施形態によれば、リード処理において、メモリシステム2は、ユーザデータがデータキャッシュ領域400に格納されているか否かを判定する。そして、ユーザデータがデータキャッシュ領域400に格納されている場合、ホスト1は、データキャッシュ領域400からホスト使用領域101にそのユーザデータをコピーする。これにより、リード処理においてメモリシステム2からホスト1へのユーザデータの転送を省略することができるので、リード処理の性能が向上する。即ち、メインメモリを用いてアクセス性能を向上させることができる。
【0054】
また、読み出し対象のユーザデータがデータキャッシュ領域400に格納されていない場合、メモリシステム2は、NANDメモリ210から読み出し対象のユーザデータを読み出してホスト1に転送し、ホスト使用領域101に格納させる。即ち、ミス時にユーザデータをデータキャッシュ領域400への格納することなく、ホスト使用領域101に直接格納する。これにより、リード処理の性能が向上する。
【0055】
また、メモリシステム2は、データキャッシュ領域400内の位置を示す「cache addr」と方向情報「RF」とを含むコピーコマンドを送信する。これにより、簡単な構成のコピーコマンドによってコピー処理が実現する。
【0056】
また、ホスト1において、CPU110が、ホスト使用領域101内の位置を示すアドレス「mem addr」と、LBA「stor addr」と、を含む第1リードコマンドを生成する。ホストコントローラ主要部122は、第1リードコマンドを捕捉すると、「mem addr」を記憶するとともに、「mem addr」を含まず、「stor addr」を含む第2リードコマンドを生成し、メモリシステム2に送信する。これにより通常のメモリシステムへの操作と互換性を確保することが可能となる。そして、ホストコントローラ主要部122は、コピーコマンドを受信すると、方向情報「RF」に基づき、「cache addr」をソースアドレスとし、予め記憶しておいた「mem addr」をデスティネーションアドレスとするコピー処理を実行する。これにより、簡単なコピーコマンドによってコピー処理が実現する。
【0057】
また、メインメモリ100にデータキャッシュ領域400とデータキャッシュタグ領域410が確保されている。これにより、メモリシステム2にデータキャッシュ領域400とデータキャッシュタグ領域410を設ける必要がなくなるので、メモリシステム2に具備されるRAM203のサイズを小さくすることが可能となる。
【0058】
(第2の実施形態)
第2の実施形態の情報処理装置においては、ミス時転送処理(S8)の動作が第1の実施形態と異なる。第2の実施形態によれば、ミス時転送処理において、ユーザデータがデータキャッシュ領域400に格納される。そして、データキャッシュ領域400に格納されたユーザデータがホスト使用領域101にコピーされる。
【0059】
図8は、第2の実施形態のミス時転送処理を説明するシーケンス図である。なお、以下の説明では、煩雑さを避けるため各識別情報に関する記述を省略するが、各識別情報は第1の実施例と同様に利用される。
【0060】
ミス時転送処理においては、デバイスコントローラ主要部202は、まず、格納要求をキャッシュ制御部207に送信する(S61)。キャッシュ制御部207は、ステップS25の処理によって受信したタグ情報に含まれるDBビットに基づいて、キャッシュラインがダーティであるか否かを判定する(S62)。
【0061】
キャッシュラインがダーティである場合には(S62、Yes)、追い出し処理が実行される(S63)。
【0062】
追い出し処理は、次のように実行される。キャッシュ制御部207は、「stor addr」に基づいて、データキャッシュ領域400における追い出し処理対象のキャッシュラインの位置を示すアドレスを特定する。そして、特定されたアドレスが示す位置を読み出し位置としてステップS23〜ステップS29の処理と同等の処理が実行されることによって、キャッシュ制御部207は、データキャッシュ領域400からユーザデータを取得する。そして、キャッシュ制御部207は、取得したユーザデータをNANDメモリ210に書き込む。なお、NANDメモリ210におけるユーザデータの書き込み先の決定方法は任意である。例えば、未書き込みのページにユーザデータが順次書き込まれていく方式が採用される場合には、キャッシュ制御部207は、未書き込みのページを書き込み先の位置に決定する。
【0063】
キャッシュラインがクリーンである場合(S62、No)、または、ステップS63の処理の後、キャッシュ制御部207は、「stor addr」をNANDメモリ1内の位置を示す物理アドレス「NAND addr」に変換する(S64)。ステップS64の処理は、デバイスコントローラ主要部202によるステップS51の処理と同様である。そして、キャッシュ制御部207は、NANDメモリ210から読み出し対象のユーザデータを読み出す(S65)。読み出し対象のユーザデータの読み出し位置は、ステップS64の処理によって得られた「NAND addr」が示す位置である。キャッシュ制御部207は、読み出した読み出し対象のユーザデータをホスト接続アダプタ201に送信する(S66)。ホスト接続アダプタ201は、読み出し対象のユーザデータをデバイス接続アダプタ126に転送する(S67)。
【0064】
デバイス接続アダプタ126が読み出し対象のユーザデータを受信すると、データDMA125によるデバイス接続アダプタ126からデータキャッシュ領域400にユーザデータをコピーするコピー処理を起動する(S68)。ここで、データキャッシュ領域400における書き込み位置は、「stor addr」に基づいて特定されるキャッシュラインである。データDMA125は、コピー処理が完了すると、コピー完了通知をホストコントローラ主要部122に送信する(S69)。
【0065】
続いて、キャッシュ制御部207は、キャッシュ判定処理において取得したタグ情報を、格納処理後の状態に応じて更新する(S70)。そして、キャッシュ制御部207は、更新したタグ情報をステップS22の処理によって特定したアドレスが示す位置を書き込み位置として書き込む転送コマンドをホスト接続アダプタ201に送信する(S71)。転送コマンドは、ステップS70の処理によって更新されたタグ情報を含む。ホスト接続アダプタ201は、転送コマンドをデバイス接続アダプタ126に転送する(S72)。
【0066】
デバイス接続アダプタ126が転送コマンドを受信すると、データDMA125によるデバイス接続アダプタ126からデータキャッシュタグ領域410にタグ情報をコピーするコピー処理を起動する(S73)。ここで、データキャッシュタグ領域410における書き込み位置は、転送コマンドに含まれるアドレスが示す位置である。データDMA125は、コピー処理が完了すると、コピー完了通知をホストコントローラ主要部122に送信する(S74)。
【0067】
ステップS74の処理が終わると、キャッシュ制御部207は、格納処理が完了した旨の通知(格納完了通知)をデバイスコントローラ主要部202に送信する(S75)。すると、デバイスコントローラ主要部202は、コピーコマンドを生成して、生成したコピーコマンドをホスト接続アダプタ201に送信する(S76)。ステップS76の処理によって送信されるコピーコマンドは、ヒット時転送処理において送信されるコピーコマンドと同様である。その後、ステップS77〜S84の処理において、ステップS42〜S49の処理と夫々等しい処理が実行されて、ミス時転送処理が終了する。
【0068】
このように、第2の実施形態によれば、読み出し対象のユーザデータがデータキャッシュ領域400に格納されていない場合、メモリシステム2は、NANDメモリ210から読み出し対象のユーザデータを読み出してホスト1に転送し、そのユーザデータをデータキャッシュ領域400に格納する。その後、ホスト1は、データキャッシュ領域400に格納された読み出し対象のユーザデータをホスト使用領域101にコピーする。これにより、データキャッシュ領域400が読み出し対象のユーザデータのキャッシュとして使用されるので、メモリシステム2に対するアクセス性能を向上させることができる。
【0069】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。たとえば第2の実施形態で、キャッシュラインがダーティな場合には格納処理を実施しないという実施も可能である。この実施形態によれば、追い出し処理を省略することにより、実行速度を速くすることができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0070】
1 ホスト、2 メモリシステム、100 メインメモリ、101 ホスト使用領域、102 デバイス使用領域、110 CPU、120 ホストコントローラ、122 ホストコントローラ主要部、123 メインメモリDMA、200 デバイスコントローラ、202 デバイスコントローラ主要部、207 キャッシュ制御部、210 NANDメモリ、211 L2Pテーブル、212 ユーザデータ、400 データキャッシュ領域、410 データキャッシュタグ領域。
図1
図2
図3
図4
図5
図6
図7
図8