(57)【要約】【課題】  性能を維持しつつ、消費電力を削減することが可能なメモリシステムを提供する。【解決手段】  実施形態のメモリシステムは、第１及び第２不揮発性メモリと、前記第１及び第２不揮発性メモリにそれぞれ第１及び第２チャネルを介して接続されたメモリコントローラ３とを備える。メモリコントローラ３は、外部から受信した第１読み出し要求に応答して、第１不揮発性メモリから第１データを読み出す第１読み出し動作と、第２不揮発性メモリから第２データを読み出す第２読み出し動作とを並列に実行し、第１読み出し動作が完了する予定の第１時刻が第２読み出し動作が完了する予定の第２時刻より早い場合に、第１チャネルの第１転送レートを、第２チャネルの第２転送レートより低く設定する。【選択図】  図１
2020149588.tif 000002
【特許請求の範囲】
【請求項１】
第１及び第２不揮発性メモリと、
前記第１及び第２不揮発性メモリにそれぞれ第１及び第２チャネルを介して接続されたメモリコントローラと、
を具備し、
前記メモリコントローラは、
外部から受信した第１読み出し要求に応答して、前記第１不揮発性メモリから第１データを読み出す第１読み出し動作と、前記第２不揮発性メモリから第２データを読み出す第２読み出し動作とを並列に実行し、
前記第１読み出し動作が完了する予定の第１時刻が前記第２読み出し動作が完了する予定の第２時刻より早い場合に、前記第１チャネルの第１転送レートを、前記第２チャネルの第２転送レートより低く設定するメモリシステム。
【請求項２】
前記メモリコントローラは、
前記第１チャネルに接続された第１終端抵抗と、
前記第２チャネルに接続された第２終端抵抗と
をさらに具備し、
前記メモリコントローラは、
前記第１時刻が前記第２時刻より早い場合に、前記第１終端抵抗の第１抵抗値を、前記第２終端抵抗の第２抵抗値より高く設定する請求項１に記載のメモリシステム。
【請求項３】
前記メモリコントローラは、
前記第１チャネルに接続され、転送レートを設定する第１設定回路と、
前記第２チャネルに接続され、転送レートを設定する第２設定回路と、
複数の転送レートの情報を格納する記憶回路と、
前記記憶回路に格納された前記情報を用いて、前記第１及び第２設定回路を制御する第１制御回路と、
をさらに具備する請求項１又は２に記載のメモリシステム。
【請求項４】
前記メモリコントローラは、
前記第１読み出し要求に応じて、前記第１不揮発性メモリ用の第１コマンドと、前記第２不揮発性メモリ用の第２コマンドとを発行する第２制御回路と、
前記第１コマンドを格納する第１キューバッファと、
前記第２コマンドを格納する第２キューバッファと
をさらに具備し、
前記第１制御回路は、前記第１キューバッファに格納されたコマンドに応じて、前記第１不揮発性メモリの動作を制御し、前記第２キューバッファに格納されたコマンドに応じて、前記第２不揮発性メモリの動作を制御する請求項３に記載のメモリシステム。
【請求項５】
前記メモリコントローラは、
前記第１時刻を格納する第１テーブルと、
前記第２時刻を格納する第２テーブルと
をさらに具備し、
前記第１制御回路は、前記第１及び第２テーブルを用いて、最も遅く完了する読み出し動作の時刻を算出する請求項３に記載のメモリシステム。
【請求項６】
前記第１読み出し要求を受信した後に第２読み出し要求を受信した場合に、前記第１チャネルの転送レートを前記第１転送レートから前記第２転送レートに設定する請求項１乃至５のいずれかに記載のメモリコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリシステム及びメモリコントローラに関する。
【背景技術】
【０００２】
パーソナルコンピュータなどの情報処理装置の外部記憶装置として、ＨＤＤ（hard disk drive）以外に、ＳＳＤ（solid state drive）が用いられている。ＳＳＤは、不揮発性半導体メモリとしてＮＡＮＤ型フラッシュメモリを備えている。
【０００３】
近年、ＳＳＤは、さらなる高性能化が求められており、複数のＮＡＮＤ型フラッシュメモリへの並列アクセスだけでなく、転送レートの高速化によって高い性能を実現している。一方、転送レートの高速化により、データ入出力動作時の電力が大きく増加してしまう。これは、データ入出力のトグルが高速になっただけでなく、高速化に伴い信号波形の安定化のためにより低い抵抗値でのＯＤＴ（on die termination）設定が必要となっていることも背景に挙げられる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許出願公開第２０１８／０２７５８９２号明細書
【特許文献２】米国特許出願公開第２０１６／００１１８１２号明細書
【特許文献３】米国特許出願公開第２０１５／０３７８６４０号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
実施形態は、性能を維持しつつ、消費電力を削減することが可能なメモリシステム及びメモリコントローラを提供する。
【課題を解決するための手段】
【０００６】
実施形態に係るメモリシステムは、第１及び第２不揮発性メモリと、前記第１及び第２不揮発性メモリにそれぞれ第１及び第２チャネルを介して接続されたメモリコントローラとを具備する。前記メモリコントローラは、外部から受信した第１読み出し要求に応答して、前記第１不揮発性メモリから第１データを読み出す第１読み出し動作と、前記第２不揮発性メモリから第２データを読み出す第２読み出し動作とを並列に実行し、前記第１読み出し動作が完了する予定の第１時刻が前記第２読み出し動作が完了する予定の第２時刻より早い場合に、前記第１チャネルの第１転送レートを、前記第２チャネルの第２転送レートより低く設定する。
【図面の簡単な説明】
【０００７】
【図１】図１は、第１実施形態に係るメモリシステムのブロック図である。
【図２Ａ】図２Ａは、ＮＡＮＤメモリのブロック図である。
【図２Ｂ】図２Ｂは、ＮＡＮＤコントローラのブロック図である。
【図２Ｃ】図２Ｃは、完了予定時刻テーブルの一例を示す図である。
【図２Ｄ】図２Ｄは、記憶回路が格納する設定情報の一例を示す図である。
【図３】図３は、ＯＤＴ設定回路の回路図である。
【図４】図４は、第１実施形態に係るメモリシステムの読み出し動作を説明するフローチャートである。
【図５】図５は、メモリシステムの読み出し動作の具体例を説明する模式図である。
【図６】図６は、転送レートを変更する前の読み出し動作を説明するタイミングチャートである。
【図７】図７は、転送レートを変更した後の読み出し動作を説明するタイミングチャートである。
【図８Ａ】図８Ａは、第２実施形態に係るメモリシステムの読み出し動作を説明するフローチャートである。
【図８Ｂ】図８Ｂは、第２実施形態に係るメモリシステムの読み出し動作を説明するフローチャートである。
【図９】図９は、低転送レートをキャンセルする場合におけるタイミングチャートの一例である。
【発明を実施するための形態】
【０００８】
以下、実施形態について図面を参照して説明する。以下に示す幾つかの実施形態は、本発明の技術思想を具体化するための装置および方法を例示したものであって、構成部品の形状、構造、配置等によって、本発明の技術思想が特定されるものではない。各機能ブロックは、ハードウェア及びソフトウェアのいずれかまたは両者を組み合わせたものとして実現することができる。各機能ブロックが以下の例のように区別されていることは必須ではない。例えば、一部の機能が例示の機能ブロックとは別の機能ブロックによって実行されてもよい。さらに、例示の機能ブロックがさらに細かい機能サブブロックに分割されていてもよい。
【０００９】
なお、以下の説明において、同一の機能及び構成を有する要素については同一符号を付し、重複説明は必要な場合にのみ行う。共通する参照符号を有する複数の構成要素を区別する場合、当該共通する参照符号に枝番号を付して複数の構成要素を区別する。なお、複数の構成要素を特に区別しない場合、複数の構成要素には、共通する参照符号のみが付され、枝番号は付されない。
【００１０】
［１］  第１実施形態
［１−１］  メモリシステムの構成
図１は、第１実施形態に係るメモリシステム２のブロック図である。メモリシステム２は、ホスト装置１と接続可能である。ホスト装置１は、例えば、サーバ、あるいはパーソナルコンピュータが含むＣＰＵまたはチップセットである。
【００１１】
メモリシステム２は、ＳＳＤ（solid state drive）、ＳＤＴＭカードのようなメモリカード、及びｅＭＭＣ（embedded multimedia card）などで構成することができる。また、メモリシステム２は、１つのモジュールで実現するシステムＬＳＩ（large-scale integrated circuit）、又はＳｏＣ（system on a chip）として構成してもよい。典型的には、メモリシステム２は、ＳＳＤで構成される。
【００１２】
図１に示すように、メモリシステム２は、メモリコントローラ３、及び不揮発性メモリとしての複数のＮＡＮＤ型フラッシュメモリＮＭ（以下、単にＮＡＮＤメモリとも称する）を備える。複数のＮＡＮＤメモリＮＭの各々は、複数のメモリセルを備え、データを不揮発に記憶することが可能である。図１には、“（ｍ＋１）×（ｎ＋１）”個のＮＡＮＤメモリＮＭ０−０〜ＮＭｎ−ｍを示している。行方向に並んだ（ｍ＋１）個のＮＡＮＤメモリＮＭは、同一のチャネルＣＨに共通接続される。すなわち、（ｍ＋１）個のＮＡＮＤメモリＮＭ０−０〜ＮＭ０−ｍはチャネルＣＨ０に共通接続され、（ｍ＋１）個のＮＡＮＤメモリＮＭ１−０〜ＮＭ１−ｍはチャネルＣＨ１に共通接続され、（ｍ＋１）個のＮＡＮＤメモリＮＭｎ−０〜ＮＭｎ−ｍはチャネルＣＨｎに共通接続される。
【００１３】
図２Ａは、ＮＡＮＤ型フラッシュメモリＮＭのブロック図である。ＮＡＮＤメモリＮＭの各々は、メモリセルアレイ４０、ロウデコーダ４１、センスアンプ４２、及びページバッファ４３を備える。
【００１４】
メモリセルアレイ４０は、ワード線及びビット線に接続された複数のメモリセルを備え、データを不揮発に記憶することが可能である。ロウデコーダ４１は、メモリコントローラ３から受け取ったロウアドレスをデコードし、ロウアドレスのデコード結果に基づいてワード線を選択する。センスアンプ４２は、データの読み出し時には、メモリセルからビット線に読み出されたデータを検知及び増幅し、ページバッファ４３に出力する。センスアンプ４２は、またデータの書き込み時には、ページバッファ４３から受け取った書き込みデータをビット線に転送する。ページバッファ４３は、データの読み出し時には、メモリセルアレイ４０内のメモリセルからセンスアンプ４２を介して読み出されたデータを一時的に記憶し、そのデータをメモリコントローラ３に出力する。ページバッファ４３は、データの書き込み時には、メモリコントローラ３から受け取った書き込みデータを一時的に記憶し、センスアンプ４２を介して書き込みデータをメモリセルアレイ４０内のメモリセルに出力する。
【００１５】
図１に戻り、説明を続ける。列方向に並んだ（ｎ＋１）個のＮＡＮＤメモリＮＭは、１つのバンクＢＫを構成する。すなわち、（ｎ＋１）個のＮＡＮＤメモリＮＭ０−０〜ＮＭｎ−０は、バンク０を構成し、（ｎ＋１）個のＮＡＮＤメモリＮＭ０−１〜ＮＭｎ−１は、バンク１を構成し、（ｎ＋１）個のＮＡＮＤメモリＮＭ０−ｍ〜ＮＭｎ−ｍは、バンクｍを構成する。
【００１６】
メモリコントローラ３は、例えばホスト装置１からのアクセス要求に応答して、ＮＡＮＤメモリＮＭに対して書き込み、読み出し、及び消去などを命令する。また、メモリコントローラ３は、ＮＡＮＤメモリＮＭのメモリ空間を管理する。メモリコントローラ３は、ホストインターフェース回路１０（ホストＩ／Ｆとも称する）、プロセッサ１１、ＲＯＭ（read only memory）１２、ＳＲＡＭ（static random access memory）１３、及び（ｎ＋１）個のＮＡＮＤコントローラ１６−０〜１６−ｎなどを備える。これらのモジュールは、バス１７を介して互いに接続される。メモリコントローラ３は、ＳｏＣ（system on a chip）で構成してもよい。
【００１７】
ホストインターフェース回路１０は、バス１８を介してホスト装置１に接続される。ホストインターフェース回路１０は、所定のプロトコルに従って、ホスト装置１との間でインターフェース処理を行う。また、ホストインターフェース回路１０は、ホスト装置１との間で、命令、アドレス、及びデータの送受信を行う。ホストインターフェースとしては、ＳＡＴＡ（Serial Advanced Technology Attachment）、ＰＣＩｅ（Peripheral Component Interconnect Express）ＴＭ、ＳＡＳ（Serial Attached SCSI）、及びＮＶＭｅ（Non-Volatile Memory Express）ＴＭなどが挙げられる。
【００１８】
プロセッサ１１は、例えばＣＰＵ（central processing unit)で構成される。プロセッサ１１は、メモリコントローラ３全体の動作を制御する。例えば、プロセッサ１１は、ホスト装置１から読み出し要求を受けた場合に、それに応答して、ＮＡＮＤインターフェースに基づく読み出しコマンドを、ＮＡＮＤコントローラ１６を介してＮＡＮＤメモリＮＭに発行する。書き込み及び消去の場合も同様である。また、プロセッサ１１は、ウェアレベリング、及びガベージコレクションなど、ＮＡＮＤメモリＮＭを管理するための様々な処理を実行する。
【００１９】
ＲＯＭ１２は、プロセッサ１１によって使用されるソフトウェアを格納する。プロセッサ１１は、ＲＯＭ１２に格納されたソフトウェアを実行することで、所定の動作を実行可能である。なお、プロセッサ１１が使用するソフトウェアは、ＮＡＮＤメモリＮＭに格納されている場合もある。この場合、プロセッサ１１は、ＮＡＮＤメモリＮＭからソフトウェアを読み出してＳＲＡＭ１３に格納し、ＳＲＡＭ１３に格納されたソフトウェアを実行する。
【００２０】
ＳＲＡＭ１３は、揮発性メモリの一種である。ＳＲＡＭ１３は、プロセッサ１１の作業領域として使用され、ＮＡＮＤメモリＮＭから読み出されたソフトウェア、及びプロセッサ１１が作成した各種テーブルなどを格納する。また、ＳＲＡＭ１３は、データバッファとしても使用される。ＳＲＡＭ１３は、ＮＡＮＤメモリＮＭから読み出された読み出しデータを一時的に格納するリードバッファ１４、及びＮＡＮＤメモリＮＭに書き込まれる書き込みデータを一時的に格納するライトバッファ１５を備える。なお、メモリコントローラ３は、ＤＲＡＭ（dynamic random access memory）を外部に備えていてもよい。このＤＲＡＭは、ＳＲＡＭ１３とほぼ同様な用途で使用される。
【００２１】
ＮＡＮＤコントローラ１６−０〜１６−ｎはそれぞれ、チャネルＣＨ０〜ＣＨｎに接続される。チャネルＣＨ０〜ＣＨｎの各々は、複数の信号線で構成される。ＮＡＮＤコントローラ１６は、所定のプロトコルに従って、ＮＡＮＤメモリＮＭとの間でインターフェース処理を行う。また、ＮＡＮＤコントローラ１６は、ＮＡＮＤメモリＮＭとの間で命令、アドレス、及びデータの送受信を行う。ＮＡＮＤコントローラ１６は、複数のチャネルによる並列動作、複数のバンクによるバンクインタリーブ動作が可能である。
【００２２】
［１−１−１］  ＮＡＮＤコントローラ１６の構成
図２Ｂは、１個のＮＡＮＤコントローラ１６のブロック図である。
【００２３】
ＮＡＮＤコントローラ１６は、キューバッファ２０、転送レート設定回路２１、ＯＤＴ（on die termination）設定回路２２、完了予定時刻テーブル２３、ＮＡＮＤインターフェース制御回路２４、記憶回路２５、及び選択回路２６を備える。
【００２４】
キューバッファ２０は、プロセッサ１１から送信される複数のコマンドを、送信された順番に格納する。
【００２５】
転送レート設定回路２１は、チャネルＣＨに接続される。転送レート設定回路２１は、ＮＡＮＤインターフェース制御回路２４の指示に応じて、チャネルＣＨを転送されるデータの転送レートを設定する。転送レートとは、単位時間内に転送されるデータの量である。例えば、転送レート設定回路２１は、転送レート設定回路２１の動作クロックの周波数を変更する、もしくは転送レート設定回路２１を間欠的に動作させることで対象チャネルＣＨに接続されるＮＡＮＤメモリとの間の転送レートを変化させることが可能である。
【００２６】
ＯＤＴ設定回路２２は、ＮＡＮＤインターフェース制御回路２４の指示に応じて、チャネルＣＨの終端抵抗を設定する。終端抵抗は、ＯＤＴとも呼ばれる。ＯＤＴ設定回路２２は、転送レートが相対的に高い場合に、終端抵抗を低く設定する必要があり、転送レートが相対的に低い場合、転送レートが高い場合より終端抵抗を高く設定し、場合によっては終端抵抗をオフ状態に設定することが可能である。ＯＤＴ設定回路２２の具体的な構成については後述する。
【００２７】
ＮＡＮＤインターフェース制御回路２４は、キューバッファ２０に格納されたコマンドを、格納された順番にＮＡＮＤメモリＮＭに送信する。ＮＡＮＤインターフェース制御回路２４は、ＮＡＮＤメモリＮＭへのアクセスのスケジューリングを行う。このスケジューリングにおいて、ＮＡＮＤインターフェース制御回路２４は、コマンドの完了予定時刻を算出する。ＮＡＮＤインターフェース制御回路２４は、上記スケジューリングに基づいて、転送レート設定回路２１を介してチャネルＣＨの転送レートを変更し、及びＯＤＴ設定回路２２の終端抵抗を変更する。
【００２８】
図２Ｃは、ＮＡＮＤコントローラ１６が備える完了予定時刻テーブル２３の一例を示す図である。完了予定時刻テーブル２３は、ＮＡＮＤインターフェース制御回路２４により算出されたコマンドの完了予定時刻を格納する。例えば、図２Ｃに示すように、完了予定時刻テーブル２３は、ホスト装置１から送信されるアクセス要求に付与されたタグ１と、タグ１に関連付けられたチャネルＣＨ、及び完了予定時刻を格納する。完了予定時刻テーブル２３は、揮発性メモリ、又は不揮発性メモリで構成される。
【００２９】
図２Ｄは、記憶回路２５が格納する設定情報の一例を示す図である。記憶回路２５は、Ｎ個の設定情報１〜Ｎを格納する。設定情報１〜Ｎの各々は、転送レートの情報、及びＯＤＴ値を含む。図２Ｄに示すように、例えば、設定情報１は、転送レートが高速である場合を示し、設定情報１に関連付けられた転送レートとしてＶ１を、ＯＤＴ値としてＲ１を含む。設定情報２は、転送レートが低速である場合を示し、設定情報２に関連付けられた転送レートとしてＶ２を、ＯＤＴ値としてＲ２を含む。さらに、設定情報３は、転送レートが超低速である場合を示し、設定情報３に関連付けられた転送レートとしてＶ３を、ＯＤＴ値としてＲ３を含む。記憶回路２５は、例えば、メモリコントローラ３に内蔵されたＳＲＡＭあるいはレジスタ等の揮発性メモリ、又は不揮発性メモリで構成される。プロセッサ１１は、例えば、メモリシステム２への電源投入時などの初期化時に、ＲＯＭ１２あるいはＮＡＮＤメモリＮＭから設定情報を読み出し、ＳＲＡＭ１３に格納する。
【００３０】
選択回路２６は、ＮＡＮＤインターフェース制御回路２４の指示に応じて、設定情報１〜Ｎの１つを選択する。選択回路２６によって選択された設定情報は、転送レート設定回路２１、及びＯＤＴ設定回路２２に送られる。
【００３１】
［１−１−２］  ＯＤＴ設定回路２２の構成
図３は、ＯＤＴ設定回路２２の回路図である。なお、図３には、チャネルＣＨに含まれる１本の信号線に接続される回路部分を抽出して示している。実際には、ＯＤＴ設定回路２２は、複数の信号線、例えばＤＱ（データ）線及びＤＱＳ（データストローブ）線に対応した数の回路部分を備える。
【００３２】
ＯＤＴ設定回路２２は、ＩＯバッファ３０、スイッチ素子としてのＰチャネルＭＯＳトランジスタ３２、可変抵抗素子３３、３４、及びスイッチ素子としてのＮチャネルＭＯＳトランジスタ３５を備える。
【００３３】
ＩＯバッファ３０の一端は、チャネルＣＨに含まれる１本の信号線に接続され、その他端は、ノード３１を介して、キューバッファ２０に接続される。
【００３４】
ＰチャネルＭＯＳトランジスタ３２のソースは、電源電圧ＶＣＣが印加される電源端子に接続され、そのドレインは、可変抵抗素子３３の一端に接続される。ＰチャネルＭＯＳトランジスタ３２のゲートには、ＮＡＮＤインターフェース制御回路２４から信号ＯＤＴＳｎが入力される。可変抵抗素子３３の他端は、ノード３１を介して、可変抵抗素子３４の一端に接続される。
【００３５】
ＮチャネルＭＯＳトランジスタ３５のドレインは、可変抵抗素子３４の他端に接続され、そのソースは、接地電圧ＶＳＳが印加される接地端子に接続される。ＮチャネルＭＯＳトランジスタ３５のゲートには、ＮＡＮＤインターフェース制御回路２４から信号ＯＤＴＳが入力される。信号ＯＤＴＳは、信号ＯＤＴＳｎの反転信号である。
【００３６】
可変抵抗素子３３の抵抗値は、ＮＡＮＤインターフェース制御回路２４から送信される信号（図示せず）によって設定される。可変抵抗素子３４の抵抗値は、ＮＡＮＤインターフェース制御回路２４から送信される信号（図示せず）によって設定される。
【００３７】
このように構成されたＯＤＴ設定回路２２では、信号ＯＤＴＳがハイレベル、及び信号ＯＤＴＳｎがローレベルである場合に、チャネルＣＨに含まれる信号線の終端抵抗を所定の抵抗値に設定することができる。
【００３８】
［１−２］  メモリシステム２の動作
上記のように構成されたメモリシステム２の動作について説明する。まず、読み出し動作の全体の流れを説明する。図４は、第１実施形態に係るメモリシステム２の読み出し動作を説明するフローチャートである。
【００３９】
プロセッサ１１は、ホスト装置１から読み出し要求を受信する（ステップＳ１００）。読み出し要求には、アドレスも含まれる。プロセッサ１１は、読み出し要求で指定されたデータが格納されているＮＡＮＤメモリＮＭを特定する（ステップＳ１０１）。ステップＳ１０１では、論理アドレスと物理アドレスとの対応関係を示すルックアップテーブル（ＬＵＴ）が用いられる。論理アドレスは、ホスト装置１が、メモリシステム２内の読み出し及び書き込み対象の論理的なデータ位置を示すためのアドレスである。物理アドレスは、ＮＡＮＤメモリＮＭ内の読み出し及び書き込み対象の物理的なデータ位置を示すアドレスである。ＬＵＴを用いて、論理アドレスから物理アドレスを求めることで、データが格納されているＮＡＮＤメモリＮＭを特定することができる。
【００４０】
プロセッサ１１は、ステップＳ１０１で特定されたすべてのＮＡＮＤメモリＮＭに対応するすべてのＮＡＮＤコントローラ１６に、読み出しコマンドを送信する（ステップＳ１０２）。この際、プロセッサ１１は、同一の読み出し要求に関する複数の読み出しコマンドに、同一のタグを付与する。読み出しコマンドには、アドレスも含まれる。
【００４１】
プロセッサ１１は、ステップＳ１０２で送信された読み出しコマンドを、キューバッファ２０に格納する（ステップＳ１０３）。
【００４２】
ＮＡＮＤインターフェース制御回路２４は、キューバッファ２０に格納された読み出しコマンドの完了予定時刻を算出する（ステップＳ１０４）。ＮＡＮＤインターフェース制御回路２４は、ステップＳ１０４で算出した完了予定時刻をタグとともに、完了予定時刻テーブル２３に格納する（ステップＳ１０５）。
【００４３】
ＮＡＮＤインターフェース制御回路２４は、完了予定時刻テーブル２３を参照し、同一のタグが付与され、複数のチャネルＣＨで実行されている複数の読み出しコマンドの完了予定時刻を比較する（ステップＳ１０６）。ＮＡＮＤインターフェース制御回路２４は、最も遅い完了予定時刻からの時間差を算出し、この時間差を用いて、転送レート及びＯＤＴ値を決定する（ステップＳ１０７）。
【００４４】
ＮＡＮＤインターフェース制御回路２４は、現在対象としているタグが付与された読み出しコマンド（対象読み出しコマンド、又は単に対象コマンドと呼ぶ）の読み出し動作が可能であるか否かを判定する（ステップＳ１０８）。このステップＳ１０８において、対象コマンドの読み出し動作が可能となるのは、対象コマンドより前にキューバッファ２０に格納されたコマンドが全て完了し、対象コマンドが実行対象となった後である。
【００４５】
ステップＳ１０８において対象コマンドの読み出し動作が可能である場合（ステップＳ１０８＝Ｙｅｓ）、ＮＡＮＤインターフェース制御回路２４は、転送レート及びＯＤＴ値の変更があるか否かを判定する（ステップＳ１０９）。なお、変更前の転送レートは、最も早い転送レートに設定され、変更前のＯＤＴ値は、最も低い抵抗値に設定される。
【００４６】
ステップＳ１０９において転送レート及びＯＤＴ値の変更がある場合（ステップＳ１０９＝Ｙｅｓ）、ＮＡＮＤインターフェース制御回路２４は、転送レート及びＯＤＴ値を変更する（ステップＳ１１０）。具体的には、ＮＡＮＤインターフェース制御回路２４は、同一タグを付与された完了予定時刻のうち、最も遅い完了予定時刻と対象コマンドの完了予定時刻との時間差に基づいて、記憶回路２５に格納されたＮ個の設定情報１〜Ｎの１つを選択し、転送レート設定回路２１及びＯＤＴ設定回路２２に転送する。転送レート設定回路２１は、設定情報に基づいて、転送レートを設定する。ＯＤＴ設定回路２２は、設定情報に基づいて、ＯＤＴ値を設定する。
【００４７】
その後、ＮＡＮＤインターフェース制御回路２４は、ＮＡＮＤメモリＮＭからの読み出し動作を実行する（ステップＳ１１１）。ステップＳ１０９において転送レート及びＯＤＴ値の変更がない場合（ステップＳ１０９＝Ｎｏ）、ＮＡＮＤインターフェース制御回路２４は、ステップＳ１１１に移行する。
【００４８】
［１−３］  読み出し動作の具体例
次に、メモリシステム２の読み出し動作の具体例を説明する。図５は、メモリシステム２の読み出し動作の具体例を説明する模式図である。図６は、転送レートを変更する前の読み出し動作を説明するタイミングチャートである。図７は、転送レートを変更した後の読み出し動作を説明するタイミングチャートである。
【００４９】
図６及び図７において、“ｔＲ”はメモリセルアレイ４０からページバッファ４３への読み出し動作を表し、“ｔＰＲＯＧ”はページバッファ４３からメモリセルアレイ４０への書き込み動作を表し、“Ｄｏｕｔ”はページバッファ４３からメモリコントローラ３へのデータ出力動作を表し、“Ｄｉｎ”はメモリコントローラ３からページバッファ４３へのデータ入力動作を表している。図６及び図７において、チャネルＣＨ０のバンク０は、ＮＡＮＤメモリＮＭ０−０に対応し、チャネルＣＨ０のバンク１は、ＮＡＮＤメモリＮＭ０−１に対応し、チャネルＣＨ０のバンクｍは、ＮＡＮＤメモリＮＭ０−ｍに対応し、チャネルＣＨ１のバンク１は、ＮＡＮＤメモリＮＭ１−１に対応し、チャネルＣＨｎのバンク０は、ＮＡＮＤメモリＮＭｎ−０に対応する。
【００５０】
図５の例では、読み出し要求で指定されたデータが、ＮＡＮＤメモリＮＭ０−０、ＮＭ１−１、ＮＭｎ−０に分散されて格納されている。ＮＡＮＤメモリＮＭ０−０からデータを読み出すための読み出しコマンドを“Ｒ１”、ＮＡＮＤメモリＮＭ１−１からデータを読み出すための読み出しコマンドを“Ｒ２”、ＮＡＮＤメモリＮＭｎ−０からデータを読み出すための読み出しコマンドを“Ｒ３”と表記する。
【００５１】
図６に示した時刻ｔ１において、プロセッサ１１は、読み出しコマンドＲ１〜Ｒ３に関する読み出し要求を、ホスト装置１から受信する（図５のステップ（１））。読み出しコマンドＲ１〜Ｒ３に関するタグを“ｉ”と表記する。
【００５２】
図６の時刻ｔ１において、チャネルＣＨ０に接続されたＮＡＮＤメモリＮＭ０−０、ＮＭ０−１、ＮＭ０−ｍは、読み出し動作を実行中である。チャネルＣＨ０には、ＮＡＮＤメモリＮＭ０−ｍ、ＮＡＮＤメモリＮＭ０−１、ＮＡＮＤメモリＮＭ０−０の順に、これらＮＡＮＤメモリＮＭからデータが出力される。チャネルＣＨ１に接続されたＮＡＮＤメモリＮＭ１−１は、書き込み動作を実行中である。チャネルＣＨｎに接続されたＮＡＮＤメモリＮＭｎ−０は、コマンドを実行していない。
【００５３】
プロセッサ１１は、タグｉが付与された読み出しコマンドＲ１をキューバッファ２０−０に送信し、タグｉが付与された読み出しコマンドＲ２をキューバッファ２０−１に送信し、タグｉが付与された読み出しコマンドＲ３をキューバッファ２０−ｎに送信する（図５のステップ（２））。図５のキューバッファ２０−０、２０−１に示されたハッチング付きの四角は、コマンドの一例を表している。例えば、キューバッファ２０−０には、時刻ｔ１において実行中で完了待ちの３つの読み出しコマンドが格納され、キューバッファ２０−１には、時刻ｔ１において実行中で完了待ちの１つの書き込みコマンドが格納されている。キューバッファ２０−ｎには、コマンドが格納されていない。
【００５４】
ＮＡＮＤインターフェース制御回路２４−０、２４−１、２４−ｎはそれぞれ、キューバッファ２０−０、２０−１、２０−ｎに格納された読み出しコマンドＲ１、Ｒ２、Ｒ３の完了予定時刻を算出する。そして、ＮＡＮＤインターフェース制御回路２４−０、２４−１、２４−ｎはそれぞれ、完了予定時刻をタグとともに、完了予定時刻テーブル２３−０、２３−１、２３−ｎに格納する（図５のステップ（３））。図６において、読み出しコマンドＲ３の完了予定時刻はｔ２、読み出しコマンドＲ１の完了予定時刻はｔ３、読み出しコマンドＲ２の完了予定時刻はｔ４である。
【００５５】
ＮＡＮＤインターフェース制御回路２４−０は、完了予定時刻テーブル２３−０、２３−１、２３−ｎを参照し、タグｉが付与された読み出しコマンドＲ１、Ｒ２、Ｒ３の完了予定時刻を比較する（図５のステップ（４））。読み出しコマンドＲ１、Ｒ２、Ｒ３のうち最も遅い完了予定時刻は、時刻ｔ４である。
【００５６】
ＮＡＮＤインターフェース制御回路２４−０は、最も遅い完了予定時刻ｔ４からの時間差を算出し、この時間差を用いて、転送レート及びＯＤＴ値を決定する（図５のステップ（５））。なお、図５のステップ（５）では、記憶回路２５及び選択回路２６の図示を省略している。続いて、ＮＡＮＤインターフェース制御回路２４−０は、読み出し動作を実行する（図５のステップ（６））。ＮＡＮＤインターフェース制御回路２４−１、２４−ｎについても、図５のステップ（４）〜（６）と同じ処理を行う。なおここでは、ＮＡＮＤインターフェース制御回路２４が完了予定時刻の時間差を用いて、転送レート及びＯＤＴ値を決定し、それらを設定する例を説明したが、これらの動作はプロセッサ１１が実行してもよい。
【００５７】
図７において、ＮＡＮＤコントローラ１６−１によるコマンドＲ２の完了予定時刻ｔ４は最も遅い。よって、ＮＡＮＤコントローラ１６−１は、高速の転送レートでコマンドＲ２のデータ出力動作を実行する。高速の転送レートでのデータ出力動作は、“Ｄｏｕｔ”で示される。ＮＡＮＤコントローラ１６−０によるコマンドＲ１の完了予定時刻は、ＮＡＮＤコントローラ１６−１によるコマンドＲ２の次に遅い。よって、ＮＡＮＤコントローラ１６−０は、高速より低い転送レート（低速と呼ぶ）でコマンドＲ１のデータ出力動作を実行する。ＮＡＮＤコントローラ１６−ｎによるコマンドＲ３の完了予定時刻は、最も早い。よって、ＮＡＮＤコントローラ１６−ｎは、低速より低い転送レート（超低速と呼ぶ）でコマンドＲ３のデータ出力動作を実行する。なお、低速の転送レートは、転送の開始時刻が高速の転送レートより前であり、転送の終了時刻が高速の転送レートの終了時刻ｔ４より遅くならない時刻である。さらに、超低速の転送レートは、転送の開始時刻が低速の転送レートより前であり、転送の終了時刻が高速の転送レートの終了時刻ｔ４より遅くならない時刻である。このような転送レートであれば、同一タグｉとして各ＮＡＮＤメモリへコマンド発行されたホスト装置１からの読み出し要求の完了時刻は遅くならない。
【００５８】
高速の転送レートである場合、ＮＡＮＤコントローラ１６−１は、ＯＤＴ値を低く設定してもよい。低速の転送レートである場合、ＮＡＮＤコントローラ１６−１は、ＯＤＴ値を、高速の場合よりも高く設定してもよい。超低速の転送レートである場合、ＮＡＮＤコントローラ１６−ｎは、ＯＤＴ値を、低速の場合よりも高く設定してもよい。すなわち、ＯＤＴ値は、高速、低速、超低速の順に、高く設定されてもよい。
【００５９】
［１−４］  第１実施形態の効果
以上詳述したように第１実施形態では、メモリシステム２は、複数のＮＡＮＤメモリＮＭに接続された複数のチャネルＣＨを備える。メモリコントローラ３は、複数のチャネルＣＨを用いて、複数のＮＡＮＤメモリＮＭを並列動作させることが可能である。そして、ホスト装置１からの読み出し要求に対して、スケジューリングされた読み出し完了予定時刻を変更することなく、並列動作する読み出しコマンドの完了予定時刻の時間差に基づいて、一部のチャネルＣＨの転送レートを低くするようにしている。また、転送レートを低くしたチャネルのＯＤＴ値を高くするようにしている。これにより、読み出し動作に要する時間を維持したままで、低い転送レートに設定されたチャネルＣＨによって消費される電力を減らすことが可能となる。
【００６０】
従って第１実施形態によれば、高速動作を維持しつつ、メモリシステム２の消費電力を低減できる。
【００６１】
［２］  第２実施形態
対象コマンドの転送レートを例えば低速に決定した後に、次の読み出し要求に関するコマンドをさらにＮＡＮＤコントローラ１６が受信する場合がある。第２実施形態では、対象コマンドの転送レートを下げることで、次にキューイングされたコマンドの実行時間が遅れる場合に、対象コマンドの転送レートを高速に戻すようにしている。
【００６２】
［２−１］  メモリシステム２の動作
図８Ａ及び図８Ｂは、第２実施形態に係るメモリシステム２の読み出し動作を説明するフローチャートである。図８Ａに示したステップＳ１００〜Ｓ１０７の動作は、第１実施形態と同じである。
【００６３】
ＮＡＮＤインターフェース制御回路２４は、プロセッサ１１から、対象コマンド以降にコマンドを受信したか否かを判定する（ステップＳ２００）。ステップＳ２００でコマンドを受信していない場合（ステップＳ２００＝Ｎｏ）、ＮＡＮＤインターフェース制御回路２４は、処理をステップＳ１０８に移行する。
【００６４】
ステップＳ２００でコマンドを受信した場合（ステップＳ２００＝Ｙｅｓ）、ＮＡＮＤインターフェース制御回路２４は、対象コマンドの転送レートが高速より低いか否かを判定する（ステップＳ２０１）。対象コマンドの転送レートが高速である場合（ステップＳ２０１＝Ｎｏ）、ＮＡＮＤインターフェース制御回路２４は、処理をステップＳ１０８に移行する。
【００６５】
対象コマンドの転送レートが高速より低い（低転送レートともいう）場合（ステップＳ２０１＝Ｙｅｓ）、ＮＡＮＤインターフェース制御回路２４は、対象コマンドの次のコマンドの完了予定時刻を算出する（ステップＳ２０２）。
【００６６】
ＮＡＮＤインターフェース制御回路２４は、対象コマンドを低転送レートに設定することで性能劣化があるか否かを判定する（ステップＳ２０３）。例えば、次のコマンドの完了予定時刻と、次のコマンドと異なるチャネルＣＨで算出された同一タグのコマンドの完了予定時刻とを比較して、対象コマンドの完了予定時刻が最も遅かった場合は、性能劣化があると判定する。すなわち、性能劣化とは、対象コマンドの完了予定時刻が遅れることで、対象コマンドの次のコマンドの完了予定時刻が遅れることを意味する。性能劣化がない場合（ステップＳ２０３＝Ｎｏ）、ステップＳ１０８に移行される。
【００６７】
性能劣化がある場合（ステップＳ２０３＝Ｙｅｓ）、ＮＡＮＤインターフェース制御回路２４は、低転送レートをキャンセルする（ステップＳ２０４）。具体的には、ＮＡＮＤインターフェース制御回路２４は、転送レートを高速に戻す。その後のステップＳ１０８〜Ｓ１１１の動作は、第１実施形態と同じである。
【００６８】
次に、本実施形態の読み出し動作におけるタイミングチャートの一例について説明する。読み出し完了予定時刻に応じて、転送レートを変更する動作は、第１実施形態で示した図６及び図７と同じである。
【００６９】
図９は、低転送レートをキャンセルする場合におけるタイミングチャートの一例である。ＮＡＮＤコントローラ１６−０は、対象コマンドの次のコマンドＲ４を受信したものとする。コマンドＲ４は、チャネルＣＨ０に接続されたＮＡＮＤメモリＮＭ０−０からの読み出しを指示するものとする。
【００７０】
図９に示すように、ＮＡＮＤコントローラ１６−０は、コマンドＲ１に関する低転送レートをキャンセルし、高速の転送レートに変更する。その後、ＮＡＮＤコントローラ１６−０は、コマンドＲ４を処理する。
【００７１】
［２−２］  第２実施形態の効果
第２実施形態によれば、転送レートを低速に変更した後に、次のコマンドを受信した場合に、上記次のコマンドの読み出し完了予定時刻が遅れるのを防ぐことができる。これにより、読み出し動作の性能劣化を防ぐことができる。
【００７２】
［３］  変形例
上記各実施形態では、メモリシステム２の読み出し動作について説明したが、転送レート及びＯＤＴ値を変更する処理は、書き込み動作に適用することも可能である。
【００７３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００７４】
１…ホスト装置、２…メモリシステム、３…メモリコントローラ、１０…ホストインターフェース回路、１１…プロセッサ、１２…ＲＯＭ、１４…リードバッファ、１５…ライトバッファ、１６…ＮＡＮＤコントローラ、１７，１８…バス、２０…キューバッファ、２１…転送レート設定回路、２２…ＯＤＴ設定回路、２３…完了予定時刻テーブル、２４…ＮＡＮＤインターフェース制御回路、２５…記憶回路、２６…選択回路、３０…ＩＯバッファ、３２，３５…ＭＯＳトランジスタ、３３，３４…可変抵抗素子、ＣＨ…チャネル、ＮＭ…ＮＡＮＤ型フラッシュメモリ。
【図１】
2020149588.tif 000003
【図２Ａ】
2020149588.tif 000004
【図２Ｂ】
2020149588.tif 000005
【図２Ｃ】
2020149588.tif 000006
【図２Ｄ】
2020149588.tif 000007
【図３】
2020149588.tif 000008
【図４】
2020149588.tif 000009
【図５】
2020149588.tif 000010
【図６】
2020149588.tif 000011
【図７】
2020149588.tif 000012
【図８Ａ】
2020149588.tif 000013
【図８Ｂ】
2020149588.tif 000014
【図９】
2020149588.tif 000015