(57)【要約】【課題】複数のバンクを含む半導体記憶媒体を効率的に制御する。【解決手段】実施形態によれば、メモリコントローラは、半導体記憶媒体を制御する。メモリコントローラは、第１の受信部と、送信部と、第２の受信部と、リクエスト送信部とを備える。第１の受信部は、半導体記憶媒体の複数のバンクのうちの少なくとも１つがビジー状態の場合にビジーを示し、複数のバンクのうちの少なくとも２つがレディ状態の場合にレディを示すレディ／ビジー信号を受ける。送信部は、レディ／ビジー信号がビジーを示す場合に、複数のバンクに含まれているバンクに対して、レディ状態かビジー状態かを問うステータスリードリクエストを送る。第２の受信部は、ステータスリードリクエストの応答としてステータス信号を受ける。リクエスト送信部は、ステータス信号とレディ／ビジー信号とに基づいて、複数のバンクに含まれるレディ状態バンクにリクエストを送る。【選択図】図１
2015197859.tif 000002
【特許請求の範囲】
【請求項１】
半導体記憶媒体を制御するメモリコントローラであって、
前記半導体記憶媒体の複数のバンクのうちの少なくとも１つがビジー状態の場合にビジーを示し、前記複数のバンクのうちの少なくとも２つがレディ状態の場合にレディを示すレディ／ビジー信号を受ける第１の受信部と、
前記レディ／ビジー信号が前記ビジーを示す場合に、前記複数のバンクに含まれているバンクに対して、前記レディ状態か前記ビジー状態かを問うステータスリードリクエストを送る送信部と、
前記ステータスリードリクエストの応答としてステータス信号を受ける第２の受信部と、
前記ステータス信号と前記レディ／ビジー信号とに基づいて、前記複数のバンクに含まれるレディ状態バンクにリクエストを送るリクエスト送信部と、
を具備するメモリコントローラ。
【請求項２】
前記ステータス信号と前記レディ／ビジー信号とに基づいて、前記バンクが前記ビジー状態であるか前記レディ状態であるかを示すバンクレディ／ビジー信号を生成する生成部をさらに具備し、
前記リクエスト送信部は、前記バンクレディ／ビジー信号に基づいて、前記レディ状態バンクに前記リクエストを送る、
請求項１記載のメモリコントローラ。
【請求項３】
前記複数のバンクは、第１及び第２のバンクを含み、
前記送信部は、前記レディ／ビジー信号が前記ビジーを示す場合に、前記第１のバンク及び前記第２のバンクの双方に対して、前記ステータスリードリクエストを送り、
前記第２の受信部は、前記ステータスリードリクエストの応答として、前記第１のバンクから第１のステータス信号を受け、前記第２のバンクから第２のステータス信号を受け、
前記生成部は、前記第１のステータス信号に基づいて前記第１のバンクが前記ビジー状態であるか前記レディ状態であるかを示す第１のバンクレディ／ビジー信号を生成し、前記第２のステータス信号に基づいて前記第２のバンクが前記ビジー状態であるか前記レディ状態であるかを示す第２のバンクレディ／ビジー信号を生成する、
請求項２記載のメモリコントローラ。
【請求項４】
前記複数のバンクは、優先的に使用される第１のバンクと、第２のバンクとを含み、
前記送信部は、前記レディ／ビジー信号が前記ビジーを示す場合に、前記第１のバンクに対して、前記ステータスリードリクエストを送り、
前記第２の受信部は、前記第１のバンクから前記ステータスリードリクエストの応答として前記ステータス信号を受け、
前記生成部は、前記レディ／ビジー信号と前記ステータス信号とに基づいて、前記第１のバンクが前記ビジー状態であるか前記レディ状態であるかを示す第１のバンクレディ／ビジー信号を生成する、
請求項２記載のメモリコントローラ。
【請求項５】
前記複数のバンクは、第１及び第２のバンクを含み、
前記バンクレディ／ビジー信号は、前記第１のバンクが前記ビジー状態であるか前記レディ状態であるかを示す第１のバンクレディ／ビジー信号と、前記第２のバンクが前記ビジー状態であるか前記レディ状態であるかを示す第２のバンクレディ／ビジー信号とを含み、
前記送信部は、前記第１のバンクに対する第１のリクエストが発生し、前記第１のバンクレディ／ビジー信号が前記ビジーを示す場合に、前記第１のバンクに対して前記ステータスリードリクエストを送り、前記第２のバンクに対する第２のリクエストが発生し、前記第２のバンクレディ／ビジー信号が前記ビジーを示す場合に、前記第２のバンクに対して前記ステータスリードリクエストを送り、
前記生成部は、
前記第１のバンクから受けた前記ステータス信号に基づいて、前記第１のバンクレディ／ビジー信号を更新し、
前記第２のバンクから受けた前記ステータス信号に基づいて、前記第２のバンクレディ／ビジー信号を更新し、
前記レディ／ビジー信号が前記レディを示す場合に、前記第１のバンクレディ／ビジー信号及び前記第２のバンクレディ／ビジー信号を前記レディとし、
前記第１のリクエストが前記第１のバンクに送られて前記レディ／ビジー信号が前記レディから前記ビジーに変化した場合に、前記第１のバンクレディ／ビジー信号を前記ビジーとし、
前記第２のリクエストが前記第２のバンクに送られて前記レディ／ビジー信号が前記レディから前記ビジーに変化した場合に、前記第２のバンクレディ／ビジー信号を前記ビジーとする、
請求項２記載のメモリコントローラ。
【請求項６】
請求項１乃至請求項５のいずれか１項に記載のメモリコントローラと、
前記メモリコントローラによって制御される前記半導体記憶媒体と、
を具備する半導体記憶装置。
【請求項７】
半導体記憶媒体を制御するメモリコントローラの制御方法であって、
前記半導体記憶媒体の複数のバンクのうちの少なくとも１つがビジー状態の場合にビジーを示し、前記複数のバンクのうちの少なくとも２つがレディ状態の場合にレディを示すレディ／ビジー信号を受けることと、
前記レディ／ビジー信号が前記ビジーを示す場合に、前記複数のバンクに含まれているバンクに対して、前記レディ状態か前記ビジー状態かを問うステータスリードリクエストを送ることと、
前記ステータスリードリクエストの応答としてステータス信号を受けることと、
前記ステータス信号と前記レディ／ビジー信号とに基づいて、前記複数のバンクに含まれるレディ状態バンクにリクエストを送ることと、
を具備するメモリコントローラの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、メモリコントローラ、半導体記憶装置、およびメモリコントローラの制御方法に関する。
【背景技術】
【０００２】
記憶装置の一例として、複数の種別の記憶媒体を組み合わせたハイブリッド型記憶装置がある。ハイブリッド型記憶装置では、例えば、磁気記憶媒体と半導体記憶媒体とが含まれる。
【０００３】
半導体記憶媒体のメモリ領域は、複数のメモリバンク（以下、単にバンクと表記する。）に分割される場合がある。半導体記憶媒体のメモリコントローラは、例えばインターリービング（interleaving）方式に基づいて、複数のバンクに対するデータの書き込み及び読み出しを制御する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−２１３１７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本実施形態は、複数のバンクを含む半導体記憶媒体を効率的に制御するメモリコントローラ、半導体記憶装置、およびメモリコントローラの制御方法を提供する。
【課題を解決するための手段】
【０００６】
実施形態によれば、メモリコントローラは、半導体記憶媒体を制御する。メモリコントローラは、第１の受信部、送信部、第２の受信部、リクエスト送信部を備える。第１の受信部は、半導体記憶媒体の複数のバンクのうちの少なくとも１つがビジー状態の場合にビジーを示し、複数のバンクのうちの少なくとも２つがレディ状態の場合にレディを示すレディ／ビジー信号を受ける。送信部は、レディ／ビジー信号がビジーを示す場合に、複数のバンクに含まれているバンクに対して、レディ状態かビジー状態かを問うステータスリードリクエストを送る。第２の受信部は、ステータスリードリクエストの応答としてステータス信号を受ける。リクエスト送信部は、ステータス信号とレディ／ビジー信号とに基づいて、複数のバンクに含まれるレディ状態バンクにリクエストを送る。
【図面の簡単な説明】
【０００７】
【図１】本実施形態に係るメモリコントローラの構成を例示するブロック図。
【図２】本実施形態に係るメモリコントローラを備える記憶装置を例示するブロック図。
【図３】本実施形態に係るＲ／Ｂコントローラの構成を例示するブロック図。
【図４】本実施形態に係るバンクコントローラの処理を例示するフローチャート。
【図５】本実施形態に係るリクエストアービタ及びＲ／Ｂコントローラの処理を例示するフローチャート。
【図６】比較例のＲ／Ｂ信号に基づくリクエスト発行制御を例示するタイミングチャート。
【図７】本実施形態に基づくリクエスト発行制御の第１の例を示すタイミングチャート。
【図８】本実施形態に基づくリクエスト発行制御の第２の例を示すタイミングチャート。
【発明を実施するための形態】
【０００８】
以下、図面を参照して、発明の実施形態について説明する。なお、以下の説明において、略又は実質的に同一の機能及び構成要素については、同一符号を付し、必要に応じて説明を行う。
【０００９】
［実施形態］
本実施形態においては、複数のバンクに含まれる特定のバンクがビジー（Busy）であるかレディ（Ready）であるかを示すバンクレディ／ビジー情報（以下、バンクＲ／Ｂ情報という）を生成するメモリコントローラ、半導体記憶装置、およびメモリコントローラの制御方法について説明する。
【００１０】
図１は、本実施形態に係るメモリコントローラの構成を例示するブロック図である。
【００１１】
半導体記憶装置１は、半導体記憶媒体２と、メモリコントローラ３とを備える。
【００１２】
半導体記憶媒体２は、揮発性半導体メモリでもよく、不揮発性半導体メモリでもよい。本実施形態において、半導体記憶媒体２は、不揮発性半導体メモリであり、例えば、ＮＡＮＤ型フラッシュメモリとするが、ＮＯＲ型フラッシュメモリ、ＭＲＡＭ（Magnetoresistive Random access memory：磁気抵抗メモリ）、ＰＲＡＭ（Phase change Random access memory：相変化メモリ）、ＲｅＲＡＭ（Resistive Random access memory：抵抗変化型メモリ）、ＦｅＲＡＭ（Ferroelectric Random Access Memory）などの記憶媒体でもよい。
【００１３】
半導体記憶媒体２のメモリ領域は、複数のバンクＢ０，Ｂ１に分けられている。本実施形態では、説明を簡略化するために、バンク数が２つの場合を例として説明するが、バンク数は３以上でもよい。
【００１４】
半導体記憶媒体２では、２つのバンクＢ０，Ｂ１で１つのレディ／ビジー信号（以下、Ｒ／Ｂ信号という）を共有している。換言すれば、Ｒ／Ｂ信号は、バンクＢ０，Ｂ１のうちの少なくとも１つがビジー状態の場合に、ビジーを示す。Ｒ／Ｂ信号は、バンクＢ０，Ｂ１の双方がレディ状態の場合にレディを示す。
【００１５】
半導体記憶媒体２とメモリコントローラ３と間のメモリインタフェース（以下、メモリＩ／Ｆという）は、１チャンネルとするが２チャンネル以上でも同様の制御を適用可能である。
【００１６】
メモリコントローラ３は、半導体記憶媒体２に電気的に接続され、半導体記憶媒体２を制御する。メモリコントローラ３は、ステータスリードリクエストの自動発行を行う。より具体的に説明すると、メモリコントローラ３は、半導体記憶媒体２からのＲ／Ｂ信号を受け、Ｒ／Ｂ信号に応じてステータスリードリクエストを自動発行し、バンクＢ０，Ｂ１ごとにビジー状態かレディ状態かを示すバンクＲ／Ｂ情報を生成する。
【００１７】
メモリコントローラ３は、バンクコントローラＢＣ０，ＢＣ１、リクエストアービタ４、レディ／ビジーコントローラ（以下、Ｒ／Ｂコントローラという）５、インタフェースコントローラ（以下、Ｉ／Ｆコントローラという）６を含む。
【００１８】
バンクコントローラＢＣ０は、バンクＢ０に対するリクエストのキューイングを実行する。バンクコントローラＢＣ０は、バンクＢ０に対するリクエストを、リクエストアービタ４へ送る。
【００１９】
バンクコントローラＢＣ１は、バンクＢ１に対するリクエストのキューイングを実行し、バンクＢ１に対するリクエストを、リクエストアービタ４へ送る。
【００２０】
リクエストとしては、例えば、データの読み出し又は書き込みなどのアクセスリクエストがある。
【００２１】
バンクコントローラＢＣ０，ＢＣ１からリクエストアービタ４へ送られるリクエストは、バンクＢ０，Ｂ１がビジー状態であっても発行してよいか否かを示すフラグ情報を含む。
【００２２】
リクエストアービタ４は、バンクコントローラＢＣ０，ＢＣ１からリクエストを受け、いずれのリクエストに優先権を与えるかを調停するアービトレーション機能を含む。
【００２３】
例えば、リクエストアービタ４は、Ｒ／Ｂコントローラ５から受けたバンクＢ０，Ｂ１ごとのバンクＲ／Ｂ情報と、バンクコントローラＢＣ０，ＢＣ１から受けたリクエストに含まれているフラグ情報とに基づいて、バンクＢ０，Ｂ１へ発行可能なリクエストを選択する。例えば、リクエストアービタ４は、レディ状態のバンクに対するリクエスト、またはビジー状態でも発行してよいフラグが付加されたリクエストを優先して選択する。リクエストアービタ４は、複数のリクエストを発行可能な場合には、例えばラウンドロビン又はＬＲＵ（Least Recently Used）制御を用いてリクエストを選択する。
【００２４】
そして、リクエストアービタ４は、選択されたリクエストをＲ／Ｂコントローラ５に送る。また、リクエストアービタ４は、バンクコントローラＢＣ０，ＢＣ１からのリクエストがあるか否か示すリクエスト有無信号を、Ｒ／Ｂコントローラ５に送る。
【００２５】
Ｒ／Ｂコントローラ５は、第１の受信部５ａと、送信部５ｂと、第２の受信部５ｃと、生成部５ｄとを備える。
【００２６】
第１の受信部５ａは、リクエストアービタ４からのリクエストを受ける。また、第１の受信部５ａは、半導体記憶媒体２からＲ／Ｂ信号を受ける。
【００２７】
送信部５ｂは、Ｒ／Ｂ信号がビジーを示す場合に、Ｉ／Ｆコントローラ６を介してバンクＢ０，Ｂ１のうちの何れかのバンクに対して、レディ状態かビジー状態かを問うステータスリードリクエストを送る。
【００２８】
第２の受信部５ｃは、ステータスリードリクエストの応答としてステータス信号を受信する。
【００２９】
生成部５ｄは、受信したステータス信号に基づいて、特定のバンクがビジー状態であるかレディ状態であるかを示すバンクＲ／Ｂ情報を生成する。
【００３０】
換言すれば、Ｒ／Ｂコントローラ５は、リクエストアービタ４からリクエストを受け、このリクエストを発行するか、又は、ステータスリードリクエストを発行するか選択し、選択されたリクエスト又はステータスリードリクエストをＩ／Ｆコントローラ６に送る。
【００３１】
Ｒ／Ｂコントローラ５は、ステータスリードリクエストをＩ／Ｆコントローラ６に送った場合に、ステータスリードリクエストの応答としてＩ／Ｆコントローラ６を介して受けたステータス信号、または半導体記憶媒体２から受けたＲ／Ｂ信号に基づいて、バンクＢ０，Ｂ１ごとのバンクＲ／Ｂ情報を内部で生成又は更新する。
【００３２】
バンクＢ０のバンクＲ／Ｂ情報は、バンクＢ０がレディ状態かビジー状態かを示す。
【００３３】
バンクＢ１のバンクＲ／Ｂ情報は、バンクＢ１がレディ状態かビジー状態かを示す。
【００３４】
Ｒ／Ｂコントローラ５は、バンクＢ０，Ｂ１ごとのバンクＲ／Ｂ情報をリクエストアービタ４に送る。
【００３５】
Ｉ／Ｆコントローラ６は、メモリＩ／Ｆを制御する。Ｉ／Ｆコントローラ６は、Ｒ／Ｂコントローラ５から実行すべきリクエストを受け付けると、リクエストをメモリＩ／Ｆにしたがって半導体記憶媒体２に送る。リクエストがアクセスリクエストの場合、Ｉ／Ｆコントローラ６は、半導体記憶媒体２に対するアクセスを実行する。Ｉ／Ｆコントローラ６は、リクエストに対する完了通知信号を、リクエストアービタ４、Ｒ／Ｂコントローラ５などの各種コントローラへ送る。リクエストが読み出しリクエストの場合には、Ｉ／Ｆコントローラ６は、半導体記憶媒体２から読み出されたデータなどのアクセス結果を、各種コントローラへ送る。Ｉ／Ｆコントローラ６は、完了通知信号及びアクセス結果を、Ｒ／Ｂコントローラ５経由でリクエストアービタ４へ送っても、リクエストアービタ４経由でバンクコントローラＢＣ０，ＢＣ１に送ってもよい。
【００３６】
さらに、Ｉ／Ｆコントローラ６は、Ｒ／Ｂコントローラ５からステータスリードリクエストを受けると、ステータスリードリクエストをメモリＩ／Ｆにしたがって半導体記憶媒体２に送る。Ｉ／Ｆコントローラ６は、ステータスリードリクエストの応答としてステータス信号を、Ｒ／Ｂコントローラ５へ送る。
【００３７】
図２は、本実施形態に係るメモリコントローラ３を備える記憶装置を例示するブロック図である。
【００３８】
記憶装置７は、ハイブリッド型ハードディスクドライブ（ＨＤＤ）である。しかしながら、記憶装置７は、例えばＳＳＤ（Solid State Drive）などでもよい。
【００３９】
記憶装置７は、ホスト装置８の制御に従って、半導体記憶媒体２と、磁気記憶媒体であるディスク９とに、大容量のデータを記憶する。
【００４０】
記憶装置７は、ハードディスクコントローラ（ＨＤＣ）１０と、バッファメモリ１１と、ヘッドＩＣ（Integrated Circuit）１２と、ディスク９と、ヘッド１３とを備える。
【００４１】
ＨＤＣ１０は、記憶装置７とホスト装置８との間のインターフェースを制御し、半導体記憶媒体２及びディスク９に対するデータ書き込み及びデータ読み出し等を制御する。
【００４２】
バッファメモリ１１は、ＨＤＣ１０の制御に従い、記憶装置７とホスト装置８との間のデータ転送のための書き込みデータまたは読み出しデータを一時的に記憶する。バッファメモリ１１としては、例えばＤＲＡＭ（Dynamic Random Access Memory）などが用いられる。
【００４３】
ヘッドＩＣ１２は、ＨＤＣ１０に従い、ヘッド１３を制御するヘッドアンプ集積回路である。
【００４４】
ヘッド１３は、ヘッドＩＣ１２の制御に従って、ディスク９上を移動し、ディスク９に記憶されたデータを読み出し、ディスク９にデータを書き込む。
【００４５】
メモリコントローラ３は、上記ＨＤＣ１０に従い、半導体記憶媒体２を制御する。メモリコントローラ３に備えられているバンクコントローラＢＣ０、ＢＣ１は、上記ＨＤＣ１０から転送された転送リクエストのキューイングを行う。
【００４６】
図３は、本実施形態に係るＲ／Ｂコントローラ５の構成を例示するブロック図である。
【００４７】
Ｒ／Ｂコントローラ５は、制御部１４、選択部１５、生成部５ｄを備える。
【００４８】
制御部１４は、上記の第１の受信部５ａ、送信部５ｂ、および第２の受信部５ｃを含む。
【００４９】
選択部１５は、リクエストアービタ４からのリクエストと、制御部１４で発行されたステータスリードリクエストとを受け、制御部１４からの制御信号Ｃ１に従い、リクエストと、ステータスリードリクエストとのいずれか一方を選択し、Ｉ／Ｆコントローラ６に送る。
【００５０】
制御部１４は、Ｉ／Ｆコントローラ６からの完了通知信号、ステータス信号、及び半導体記憶媒体２からのＲ／Ｂ信号を受ける。
【００５１】
生成部５ｄは、制御部１４からの制御信号Ｃ２に従い、バンクＢ０，Ｂ１ごとのバンクＲ／Ｂ情報を生成又は更新し、リクエストアービタ４へ送る。
【００５２】
Ｒ／Ｂコントローラ５におけるバンクＢ０のバンクＲ／Ｂ情報の生成、及び、バンクＢ０に対するリクエストとステータスリードリクエストの選択について説明する。なお、バンクＢ１についても、下記のバンクＢ０の場合と同様の処理が実行される。
【００５３】
生成部５ｄは、Ｒ／Ｂ信号がレディを示す場合に、バンクＢ０のバンクＲ／Ｂ情報とバンクＢ１のバンクＲ／Ｂ情報との双方を、レディとする。
【００５４】
送信部５ｂは、リクエストアービタ４からバンクＢ０に対するリクエストがあるかどうかを示す信号を受け、リクエストがあることを検知したが、バンクＢ０のバンクＲ／Ｂ情報がビジーを示す場合に、選択部１５によって、リクエストではなく、バンクＢ０に対するステータスリードリクエストを選択し、送る。
【００５５】
第２の受信部５ｃは、バンクＢ０に対するステータス信号を受ける。
【００５６】
生成部５ｄは、バンクＢ０に対するステータス信号がレディを示す場合に、バンクＢ０に対するバンクＲ／Ｂ情報をレディに更新し、バンクＢ０に対するバンクＲ／Ｂ情報を更新したことを示す更新フラグをアサートする。
【００５７】
送信部５ｂは、バンクＢ０に対する更新フラグがアサートされている場合、リクエストアービタ４から受けたバンクＢ０に対するリクエストを、Ｉ／Ｆコントローラ６に送り、生成部５ｄは、バンクＢ０に対する更新フラグをデアサートする。
【００５８】
生成部５ｄは、リクエストアービタ４から受けたバンクＢ０に対するリクエストをＩ／Ｆコントローラ６に送った結果によりＲ／Ｂ信号がレディからビジーとなった場合には、当該バンクＢ０に対するバンクＲ／Ｂ情報をビジーとする。
【００５９】
送信部５ｂは、Ｒ／Ｂ信号がビジーを示す場合であっても、ステータスリードリクエストをＩ／Ｆコントローラ６に送る。
【００６０】
送信部５ｂは、ステータスリードリクエストをＩ／Ｆコントローラ６に送った後、バンクＢ０のバンクＲ／Ｂ情報がレディを示さない場合、所定時間経過後に、再度ステータスリードリクエストをＩ／Ｆコントローラ６に送る。
【００６１】
図４は、本実施形態に係るバンクコントローラＢＣ０の処理を例示するフローチャートである。なお、バンクコントローラＢＣ１の処理についても、この図４と同様である。
【００６２】
ステップＳ１において、バンクコントローラＢＣ０は、ＨＤＣ１０から転送されたキューイングリクエストがあるか否かを判定する。キューイングリクエストがない場合、バンクコントローラＢＣ０は、ステップＳ１を繰り返す。
【００６３】
キューイングリクエストがある場合、ステップＳ２において、バンクコントローラＢＣ０は、リクエストアービタ４に、リクエストを送る。
【００６４】
ステップＳ３において、バンクコントローラＢＣ０は、Ｉ／Ｆコントローラ６からリクエストアービタ４経由で実行完了通知を受け取るまでステップＳ３を繰り返す。
【００６５】
リクエストが実行完了した場合、バンクコントローラＢＣ０は、処理を終了する。
【００６６】
図５は、本実施形態に係るリクエストアービタ４及びＲ／Ｂコントローラ５の処理を例示するフローチャートである。
【００６７】
ステップＴ１において、リクエストアービタ４は、バンクコントローラＢＣ０，ＢＣ１からリクエストを受けたか否かを判定する。
【００６８】
リクエストを受けていない場合、リクエストアービタ４は、ステップＴ１を繰り返す。
【００６９】
リクエストを受けた場合、ステップＴ２において、リクエストアービタ４は、リクエストのフラグ情報に基づいて、対象バンクがレディ状態であることを必要とするレディ必要リクエストがあるか否か判定する。
【００７０】
レディ必要リクエストがない場合には、処理はステップＴ７に移動する。
【００７１】
レディ必要リクエストがある場合には、処理はステップＴ３に移動する。
【００７２】
ステップＴ３において、リクエストアービタ４は、フラグ情報とバンクＲ／Ｂ情報に基づいて、レディ必要リクエストの対象バンクがすべてレディ状態かを判定する。
【００７３】
レディ必要リクエストの対象バンクがすべてレディ状態でない場合、処理はステップＴ４へ移動する。
【００７４】
レディ必要リクエストの対象バンクがすべてレディ状態の場合、処理はステップＴ７へ移動する。
【００７５】
ステップＴ４において、Ｒ／Ｂコントローラ５は、対象バンクに対するステータスリードリクエストを、Ｉ／Ｆコントローラ６に送る。
【００７６】
ステップＴ５において、Ｒ／Ｂコントローラ５は、Ｉ／Ｆコントローラ６におけるステータスリードリクエストの実行を待つ。
【００７７】
ステップＴ６において、Ｒ／Ｂコントローラ５は、レディ必要リクエストの対象バンクに対するステータスリードリクエストの完了通知信号を受けたか否か判定する。
【００７８】
ステータスリードリクエストの完了通知信号を受けていない場合、処理はステップＴ４に移動する。
【００７９】
ステータスリードリクエストの完了通知信号を受けた場合、処理はステップＴ７に移動する。
【００８０】
ステップＴ７において、リクエストアービタ４は、フラグ情報及びバンクＲ／Ｂ情報に基づいて、対象バンクがレディ状態であることを必要としないレディ不要リクエストがあるか、又は、レディ状態のバンクに対するリクエストがあるかを判定する。
【００８１】
レディ不要リクエストがなく、かつ、レディ状態のバンクに対するリクエストがない場合、処理はステップＴ１に移動する。
【００８２】
レディ不要リクエストがあるか、又は、レディ状態のバンクに対するリクエストがある場合、ステップＴ８において、リクエストアービタ４は、アービトレーションを実行し、ステップＴ９において、Ｒ／Ｂコントローラ５経由で、Ｉ／Ｆコントローラ６に、リクエストを送る。
【００８３】
ステップＴ１０において、リクエストアービタ４は、Ｉ／Ｆコントローラ６におけるリクエストの実行を待つ。リクエストアービタ４は、リクエストの完了通知信号を受けると、処理を終了する。
【００８４】
なお、上記図５において、ステータスリードリクエストの発行方法は、適宜変更可能である。例えば、バンクＢ０，Ｂ１のうちの優先的なバンクのレディ状態が認識された時点で、ステータスリードリクエストの発行を停止してもよい。例えば、リクエストがない場合であっても、メモリＩ／Ｆが使用可能であれば、ステータスリードリクエストを発行してもよい。ステータスリードリクエストは、設定された間隔で発行されてもよい。
【００８５】
以上説明した本実施形態においては、バンクＢ０，Ｂ１ごとのバンクＲ／Ｂ情報を適切なタイミングで生成又は更新することができ、半導体記憶媒体２に対するインタリーブアクセスを効率化することができる。
【００８６】
本実施形態においては、キューイングされたリクエストとは独立してステータスリードリクエストが発行され、バンクＢ０，Ｂ１ごとのバンクＲ／Ｂ情報を自動生成又は更新することができる。
【００８７】
本実施形態においては、バンクＢ０，Ｂ１がレディ状態かビジー状態かを、Ｒ／Ｂ信号のみに頼って監視するのではなく、バンクＢ０，Ｂ１ごとのバンクＲ／Ｂ情報を生成し監視することにより、レディ状態バンクに対してリクエストを送ることが促進され、バンクＢ０，Ｂ１へのリクエストの発行を効率的に行うことができる。
【００８８】
本実施形態においては、メモリコントローラ３のみの変更でリクエスト発行を効率化することができ、例えば記憶装置７に含まれるファームウェアなどを変更する必要がないため、適用容易である。
【００８９】
以下で、比較例のＲ／Ｂ信号に基づく制御と、本実施形態に係る制御とを対比して、本実施形態の有効性を説明する。ここでは、バンクＢ０，Ｂ１に対するリクエストの発行を制御する場合を例として説明するが、プログラムコマンドの実行を制御する場合についても同様である。
【００９０】
図６は、比較例のＲ／Ｂ信号に基づくリクエスト発行制御を例示するタイミングチャートである。
【００９１】
この図６では、上から下へ、バンクＢ０に対して発行されるリクエストの発行状態、バンクＢ０の状態、バンクＢ１に対して発行されるリクエストの発行状態、バンクＢ１の状態、Ｒ／Ｂ信号の状態を表している。ここで、Ｒ／Ｂ信号は、上述のように、バンクＢ０，Ｂ１で共有されており、バンクＢ０，Ｂ１の双方がレディ状態の場合にレディを示し、バンクＢ０，Ｂ１のうちの少なくとも１つがビジー状態の場合にビジーを示す。
【００９２】
比較例では、メモリＩ／ＦのＲ／Ｂ信号のみを用いてリクエストの発行が制御されている。例えば、バンクＢ０がレディ状態で、バンクＢ１がビジー状態の場合、Ｒ／Ｂ信号はビジーを示す。このため、レディ状態のバンクＢ０に対するリクエスト発行が阻害される。各バンクコントローラＢＣ０，ＢＣ１に、ステータスリードリクエストをキューイングし、ステータスリードリクエストをバンクコントローラＢＣ０，ＢＣ１から発行することで、バンクＢ０，Ｂ１ごとにレディ状態かビジー状態かを調べることは可能である。しかしながら、ステータスリードリクエストが必要になるタイミングは、半導体記憶媒体２の特性及びリクエスト実行状態によって変化する。このため、バンクコントローラＢＣ０，ＢＣ１からステータスリードリクエストを発行するタイミングを予め想定することは困難である。このため、効率的にバンクＢ０，Ｂ１をアクセスしたい場合に、各バンクコントローラＢＣ０，ＢＣ１に複数のリクエストを予めキューイングしておくことができない。
【００９３】
上記図６の比較例のタイミングチャートにおいて、バンクＢ０にリクエストが発行されると、バンクＢ０がビジー状態となるため、Ｒ／Ｂ信号もビジーを示す。このため、レディ状態のバンクＢ１に対するリクエストの発行が実行されない。比較例の制御では、Ｒ／Ｂ信号がレディを示すたびに、バンクＢ０，Ｂ１に対して交互にリクエストが発行され、アクセスされる。
【００９４】
図７は、本実施形態に基づくリクエスト発行制御の第１の例を示すタイミングチャートである。
【００９５】
この図７では、上から下へ、バンクＢ０に対して発行されるリクエスト及びステータスリードリクエスト（ＳＴＲ）の発行状態、バンクＢ０の状態、バンクＢ１に対して発行されるリクエスト及びステータスリードリクエストの発行状態、バンクＢ１の状態、Ｒ／Ｂ信号の状態を表している。
【００９６】
バンクコントローラＢ０とバンクコントローラＢ１は、それぞれリクエスト（プログラムコマンド）を３つキューイングする。
【００９７】
初期状態はバンクＢ０，Ｂ１の双方がレディ状態であるため、まずバンクＢ０に１つ目のリクエストが発行される。
【００９８】
１つ目のリクエストが発行されると、Ｒ／Ｂ信号がビジーを示すが、バンクＢ０には２つ目のリクエストが存在する。このため、バンクＢ０に対してステータスリードリクエストが発行され、バンクＢ０の状態が調べられ、バンクＢ０に対するバンクＲ／Ｂ情報が生成される。
【００９９】
バンクＢ０に対するバンクＲ／Ｂ情報が生成された後、バンクＢ０はビジー状態であるがバンクＢ１はレディ状態のままである。
【０１００】
このため、バンクＢ１の１つ目のリクエストが発行される。
【０１０１】
その後、バンクＢ０とバンクＢ１とに、それぞれステータスリードリクエストが発行され、バンクＢ０，Ｂ１に対するバンクＲ／Ｂ情報が生成される。
【０１０２】
バンクＢ０に対するバンクＲ／Ｂ情報がレディとなったタイミングでは、バンクＢ１に対するＲ／Ｂ情報はビジーで、かつ、バンクＢ１に対するリクエストも存在している。このため、バンクＢ１にステータスリードリクエストが発行された後に、バンクＢ０の２つ目のプログラムが実行される。
【０１０３】
バンクＢ０への２つ目のリクエスト発行中に、Ｒ／Ｂ信号がレディになる。このため、バンクＢ１に対するバンクＲ／Ｂ情報はレディに更新される。
【０１０４】
バンクＢ０に２つ目のリクエストが発行されると、Ｒ／Ｂ信号がビジーを示すが、バンクＢ０には３つ目のリクエストが存在する。このため、バンクＢ０に対してステータスリードリクエストが発行され、バンクＢ０の状態が調べられ、バンクＢ０に対するバンクＲ／Ｂ情報が生成される。
【０１０５】
バンクＢ０に対するバンクＲ／Ｂ情報が生成された後、バンクＢ０はビジー状態であるがバンクＢ１はレディ状態である。
【０１０６】
このため、バンクＢ１の２つ目のリクエストが発行される。
【０１０７】
上記の制御が繰り返され、ビジー状態のバンクに対するリクエストが存在する場合は、このビジー状態のバンクに対してステータスリードリクエストがポーリングされ、レディ状態のバンクに対してリクエストが発行される。
【０１０８】
図８は、本実施形態に基づくリクエスト発行制御の第２の例を示すタイミングチャートである。この図８の第２の例では、上記図７の第１の例と同様に、上から下へ、バンクＢ０に対して発行されるリクエスト及びステータスリードリクエストの発行状態、バンクＢ０の状態、バンクＢ１に対して発行されるリクエスト及びステータスリードリクエストの発行状態、バンクＢ１の状態、Ｒ／Ｂ信号の状態を表している。
【０１０９】
バンクコントローラＢ０とバンクコントローラＢ１は、それぞれリクエストを３つキューイングし、優先順位はＬＲＵ制御(最近実行されていないバンクを最優先)とする。
【０１１０】
バンクＢ０の１つ目のリクエスト発行後、バンクＢ１が最優先となり、かつ、バンクＢ１に対するバンクＲ／Ｂ信号はレディ状態を示したままである。このため、ステータスリードリクエストは発行されず、バンクＢ１に対して１つ目のリクエストが発行される。
【０１１１】
バンクＢ１の１つ目のリクエスト発行後、バンクＢ０が最優先となり、最優先のバンクＢ０からステータスリードリクエストのポーリングが開始される。最優先のバンクＢ０のレディ状態が検出された時点で、ステータスリードリクエストのポーリングが終了され、バンクＢ０の２つ目のリクエストが発行される。
【０１１２】
バンクＢ０の２つ目のリクエストが発行され、バンクＢ１が最優先となったが、バンクＢ０の状態がレディ状態からビジー状態に変化する前でありバンクＢ０の状態が未だレディ状態を示したままの場合に、バンクＢ１がビジー状態からレディ状態に変化すると、バンクＢ０，Ｂ１の双方がレディ状態になり、Ｒ／Ｂ信号がレディ状態を示す。すると、最優先のバンクＢ１のレディ状態が検出され、最優先のバンクＢ１の２つ目のリクエストが発行される。
【０１１３】
その後、上記の制御が繰り返される。
【０１１４】
この第２の例では最優先バンクから順番にステータスリードリクエストが発行されるため、メモリＩ／Ｆを第１の例よりもさらに効率的に使用することができる。
【０１１５】
上記の図６乃至図８に比較されるように、本実施形態に係るメモリコントローラ３により、リクエスト発行を効率化することができる。
【０１１６】
本実施形態において、各コントローラの機能は、自由に組み合わせ、又は、分離することができる。例えば、リクエストアービタ４とＲ／Ｂコントローラ５とを組み合わせてもよい。
【０１１７】
本実施形態においては、例えば、リクエストの有無に依存することなく、ステータスリードコマンドを先行して発行してもよい。
【０１１８】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１１９】
１…半導体記憶装置、２…半導体記憶媒体、３…メモリコントローラ、ＢＣ０，ＢＣ１…バンクコントローラ、４…リクエストアービタ、５…Ｒ／Ｂコントローラ、５ａ…第１の受信部、５ｂ…送信部、５ｃ…第２の受信部、５ｄ…生成部、６…Ｉ／Ｆコントローラ、Ｂ１，Ｂ２…バンク、７…記憶装置、８…ホスト装置、９…ディスク、１０…ＨＤＣ、１１…バッファメモリ、１２…ヘッドＩＣ、１３…ヘッド、１４…制御部、１５…選択部。
【図１】
2015197859.tif 000003
【図２】
2015197859.tif 000004
【図３】
2015197859.tif 000005
【図４】
2015197859.tif 000006
【図５】
2015197859.tif 000007
【図６】
2015197859.tif 000008
【図７】
2015197859.tif 000009
【図８】
2015197859.tif 000010