(57)【特許請求の範囲】
【請求項１】
複数のメモリのそれぞれに対してデータの転送を要求するリクエストと当該リクエストに基づくデータとをクロック信号に同期して転送するリクエスト転送部と、
前記複数のメモリのうちの１つのメモリである選択メモリにおける前記リクエストに基づくアクセスに要する時間であるビジー時間の計測を行うビジー時間計測部と、
前記クロック信号の周波数を調整することにより前記選択メモリにおける前記計測されたビジー時間と前記選択メモリを除く前記複数のメモリにおける前記リクエストおよび前記データの転送に要する時間の合計とを略等しくするクロック信号調整部と
を具備するメモリコントローラ。
【請求項２】
前記ビジー時間計測部は、前記複数のメモリのそれぞれから出力された前記アクセス中であることを示すビジー信号に基づいて前記ビジー時間を計測する請求項１記載のメモリコントローラ。
【請求項３】
前記計測されたビジー時間を保持するビジー時間保持部をさらに具備し、
前記クロック信号調整部は、前記クロック信号の周波数を調整することにより前記保持されたビジー時間と前記選択メモリを除く前記複数のメモリにおける前記リクエストおよび前記データの転送に要する時間の合計とを略等しくする
請求項１記載のメモリコントローラ。
【請求項４】
前記ビジー時間計測部は、前記複数のメモリのそれぞれについて前記ビジー時間の計測を行い、当該計測されたそれぞれのビジー時間のうち最短のビジー時間を前記クロック信号調整部に供給する請求項１記載のメモリコントローラ。
【請求項５】
前記リクエスト転送部は、前記データの書込みを要求する書込みリクエストと当該書込みリクエストに基づく書込みデータとをクロック信号に同期して転送し、
前記ビジー時間計測部は、前記選択メモリにおける前記書込みリクエストに基づく前記ビジー時間の計測を行い、
前記クロック信号調整部は、前記クロック信号の周波数を調整することにより前記選択メモリにおける前記計測されたビジー時間と前記選択メモリを除く前記複数のメモリにおける前記書込みリクエストおよび前記書込みデータの転送に要する時間の合計とを略等しくする
請求項１記載のメモリコントローラ。
【請求項６】
前記リクエスト転送部は、前記データの読出しを要求する読出しリクエストと当該読出しリクエストに基づく読出しデータとをクロック信号に同期して転送し、
前記ビジー時間計測部は、前記選択メモリにおける前記読出しリクエストに基づく前記ビジー時間の計測を行い、
前記クロック信号調整部は、前記クロック信号の周波数を調整することにより前記選択メモリにおける前記計測されたビジー時間と前記選択メモリを除く前記複数のメモリにおける前記読出しリクエストおよび前記読出しデータの転送に要する時間の合計とを略等しくする
請求項１記載のメモリコントローラ。
【請求項７】
前記ビジー時間計測部は、アドレス空間毎に前記アクセスに要する時間が異なる前記複数のメモリにおける前記アドレス空間毎に前記ビジー時間の計測を行い、
前記クロック信号調整部は、前記アドレス空間毎に前記クロック信号の周波数の調整を行う
請求項１記載のメモリコントローラ。
【請求項８】
複数のメモリと、
前記複数のメモリのそれぞれに対してデータの転送を要求するリクエストと当該リクエストに基づくデータとをクロック信号に同期して転送するリクエスト転送部と、
前記複数のメモリのうちの１つのメモリである選択メモリにおける前記リクエストに基づくアクセスに要する時間であるビジー時間の計測を行うビジー時間計測部と、
前記クロック信号の周波数を調整することにより前記選択メモリにおける前記計測されたビジー時間と前記選択メモリを除く前記複数のメモリにおける前記リクエストおよび前記データの転送に要する時間の合計とを略等しくするクロック信号調整部と
を具備する記憶装置。
【請求項９】
複数のメモリと、
前記複数のメモリのそれぞれに対してデータの転送を要求するリクエストと当該リクエストに基づくデータとをクロック信号に同期して転送するリクエスト転送部と、
前記複数のメモリのうちの１つのメモリである選択メモリにおける前記リクエストに基づくアクセスに要する時間であるビジー時間の計測を行うビジー時間計測部と、
前記クロック信号の周波数を調整することにより前記選択メモリにおける前記計測されたビジー時間と前記選択メモリを除く前記複数のメモリにおける前記リクエストおよび前記データの転送に要する時間の合計とを略等しくするクロック信号調整部と
を備える記憶装置と、
前記記憶装置にアクセスするホストコンピュータと
を具備する情報処理システム。
【請求項１０】
リクエスト転送部が、複数のメモリのそれぞれに対してデータの転送を要求するリクエストと当該リクエストに基づくデータとをクロック信号に同期して転送するリクエスト転送手順と、
ビジー時間計測部が、前記複数のメモリのうちの１つのメモリである選択メモリにおける前記リクエストに基づくアクセスに要する時間であるビジー時間の計測を行うビジー時間計測手順と、
クロック信号調整部が、前記クロック信号の周波数を調整することにより前記選択メモリにおける前記計測されたビジー時間と前記選択メモリを除く前記複数のメモリにおける前記リクエストおよび前記データの転送に要する時間の合計とを略等しくするクロック信号調整手順と
を具備するメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、メモリコントローラ、記憶装置、情報処理システムおよびメモリ制御方法に関する。詳しくは、複数のメモリに対してアクセスを行うメモリコントローラ、記憶装置、情報処理システムおよびメモリ制御方法に関する。
【背景技術】
【０００２】
従来、画像等の大容量のデータを高速に記憶する記憶装置として、半導体メモリによる記憶装置が使用されている。このような記憶装置において、高速なデータ転送速度を保ちながら消費電力を低減するシステムが提案されている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−１４６５４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述の従来技術は、単一のＤＲＡＭ（Dynamic Random Access Memory）を有する記憶装置において、メモリコントローラがＤＲＡＭに供給する電源電圧およびクロック信号の周波数を変更する。このＤＲＡＭに供給する電源電圧等の変更は、ＤＲＡＭのアクセス頻度等に基づいて行われる。これにより、上述の従来技術は、所望のデータ転送速度を保ちながら消費電力の低減を可能にしている。一方、ストレージ等の大容量のデータを記憶する記憶装置においては、ＮＡＮＤ型フラッシュメモリが多く採用される。このＮＡＮＤ型フラッシュメモリは、ＤＲＡＭとは異なり、データのアクセスに要する時間が一定の値にならないという性質がある。このため、ＮＡＮＤ型フラッシュメモリを有するシステムにクロック信号の周波数をアクセス頻度に基づいて変更する従来技術を適用しても、データ転送速度および消費電力のバランスを最適にするクロック信号の周波数を得ることができないという問題がある。
【０００５】
本技術はこのような状況に鑑みて生み出されたものであり、複数の半導体メモリを備える記憶装置において、消費電力の増加を防ぎながら高速なデータ転送を行うことを目的とする。
【課題を解決するための手段】
【０００６】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、複数のメモリのそれぞれに対してデータの転送を要求するリクエストと当該リクエストに基づくデータとをクロック信号に同期して転送するリクエスト転送部と、上記複数のメモリのうちの１つのメモリである選択メモリにおける上記リクエストに基づくアクセスに要する時間であるビジー時間の計測を行うビジー時間計測部と、上記クロック信号の周波数を調整することにより上記選択メモリにおける上記計測されたビジー時間と上記選択メモリを除く上記複数のメモリにおける上記リクエストおよび上記データの転送に要する時間の合計とを略等しくするクロック信号調整部とを具備するメモリコントローラおよびメモリ制御方法である。これにより、クロック信号の周波数が調整されて、選択メモリにおけるビジー時間と選択メモリを除く複数のメモリにおけるリクエストおよびデータの転送に要する時間の合計とが略等しくなるという作用をもたらす。
【０００７】
また、この第１の側面において、上記ビジー時間計測部は、上記複数のメモリのそれぞれから出力された上記アクセス中であることを示すビジー信号に基づいて上記ビジー時間を計測してもよい。これにより、ビジー信号に基づいてビジー時間が計測されるという作用をもたらす。
【０００８】
また、この第１の側面において、上記計測されたビジー時間を保持するビジー時間保持部をさらに具備し、上記クロック信号調整部は、上記クロック信号の周波数を調整することにより上記保持されたビジー時間と上記選択メモリを除く上記複数のメモリにおける上記リクエストおよび上記データの転送に要する時間の合計とを略等しくしてもよい。これにより、ビジー時間計測部により計測されてビジー時間保持部に保持されたビジー時間に基づいてクロック信号の調整が行われるという作用をもたらす。
【０００９】
また、この第１の側面において、上記ビジー時間計測部は、上記複数のメモリのそれぞれについて上記ビジー時間の計測を行い、当該計測されたそれぞれのビジー時間のうち最短のビジー時間を上記クロック信号調整部に供給してもよい。これにより、複数のメモリのうちの最短のビジー時間に基づいて、クロック信号の周波数の調整が行われるという作用をもたらす。
【００１０】
また、この第１の側面において、上記リクエスト転送部は、上記データの書込みを要求する書込みリクエストと当該書込みリクエストに基づく書込みデータとをクロック信号に同期して転送し、上記ビジー時間計測部は、上記選択メモリにおける上記書込みリクエストに基づく上記ビジー時間の計測を行い、上記クロック信号調整部は、上記クロック信号の周波数を調整することにより上記選択メモリにおける上記計測されたビジー時間と上記選択メモリを除く上記複数のメモリにおける上記書込みリクエストおよび上記書込みデータの転送に要する時間の合計とを略等しくしてもよい。これにより、書込みリクエストにおいてクロック信号の周波数が調整されて、選択メモリにおけるビジー時間と選択メモリを除く複数のメモリにおける書込みリクエストおよびデータの転送に要する時間の合計とが略等しくなるという作用をもたらす。
【００１１】
また、この第１の側面において、上記リクエスト転送部は、上記データの読出しを要求する読出しリクエストと当該読出しリクエストに基づく読出しデータとをクロック信号に同期して転送し、上記ビジー時間計測部は、上記選択メモリにおける上記読出しリクエストに基づく上記ビジー時間の計測を行い、上記クロック信号調整部は、上記クロック信号の周波数を調整することにより上記選択メモリにおける上記計測されたビジー時間と上記選択メモリを除く上記複数のメモリにおける上記読出しリクエストおよび上記読出しデータの転送に要する時間の合計とを略等しくしてもよい。これにより、読出しリクエストにおいてクロック信号の周波数が調整されて、選択メモリにおけるビジー時間と選択メモリを除く複数のメモリにおける読出しリクエストおよびデータの転送に要する時間の合計とが略等しくなるという作用をもたらす。
【００１２】
また、この第１の側面において、上記ビジー時間計測部は、アドレス空間毎に上記アクセスに要する時間が異なる上記複数のメモリにおける上記アドレス空間毎に上記ビジー時間の計測を行い、上記クロック信号調整部は、上記アドレス空間毎に上記クロック信号の周波数の調整を行ってもよい。これにより、アドレス空間毎にアクセスに要する時間が異なるメモリにおいてクロック信号の周波数が調整される。そして、選択メモリにおけるビジー時間と選択メモリを除く複数のメモリにおけるリクエストおよびデータの転送に要する時間の合計とが略等しくなるという作用をもたらす。
【００１３】
また、本技術の第２の側面は、複数のメモリと、上記複数のメモリのそれぞれに対してデータの転送を要求するリクエストと当該リクエストに基づくデータとをクロック信号に同期して転送するリクエスト転送部と、上記複数のメモリのうちの１つのメモリである選択メモリにおける上記リクエストに基づくアクセスに要する時間であるビジー時間の計測を行うビジー時間計測部と、上記クロック信号の周波数を調整することにより上記選択メモリにおける上記計測されたビジー時間と上記選択メモリを除く上記複数のメモリにおける上記リクエストおよび上記データの転送に要する時間の合計とを略等しくするクロック信号調整部とを具備する記憶装置である。これにより、クロック信号の周波数が調整されて、選択メモリにおけるビジー時間と選択メモリを除く複数のメモリにおけるリクエストおよびデータの転送に要する時間の合計とが略等しくなるという作用をもたらす。
【００１４】
また、本技術の第３の側面は、複数のメモリと、上記複数のメモリのそれぞれに対してデータの転送を要求するリクエストと当該リクエストに基づくデータとをクロック信号に同期して転送するリクエスト転送部と、上記複数のメモリのうちの１つのメモリである選択メモリにおける上記リクエストに基づくアクセスに要する時間であるビジー時間の計測を行うビジー時間計測部と、上記クロック信号の周波数を調整することにより上記選択メモリにおける上記計測されたビジー時間と上記選択メモリを除く上記複数のメモリにおける上記リクエストおよび上記データの転送に要する時間の合計とを略等しくするクロック信号調整部とを備える記憶装置と、上記記憶装置にアクセスするホストコンピュータとを具備する情報処理システムである。これにより、クロック信号の周波数が調整されて、選択メモリにおけるビジー時間と選択メモリを除く複数のメモリにおけるリクエストおよびデータの転送に要する時間の合計とが略等しくなるという作用をもたらす。
【発明の効果】
【００１５】
本技術によれば、複数の半導体メモリを備える記憶装置において、消費電力の増加を防ぎながら高速なデータ転送を行うという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
【図面の簡単な説明】
【００１６】
【図１】本技術の実施の形態における情報処理システムの構成例を示す図である。
【図２】本技術の第１の実施の形態におけるメモリコントローラ２００の構成例を示す図である。
【図３】本技術の第１の実施の形態におけるメモリコントローラ２００の機能構成例を示す図である。
【図４】本技術の第１の実施の形態におけるビジー時間計測部２５０の構成例を示す図である。
【図５】本技術の第１の実施の形態におけるビジー時間の一例を示す図である。
【図６】本技術の第１の実施の形態におけるクロック信号調整部２４０の構成例を示す図である。
【図７】本技術の第１の実施の形態における書込み動作の一例を示す図である。
【図８】本技術の第１の実施の形態における読出し動作の一例を示す図である。
【図９】本技術の第１の実施の形態における書込みリクエストの転送動作の一例を示す図である。
【図１０】本技術の第１の実施の形態におけるクロック信号の周波数が適切でない場合の書込みリクエストの転送動作を示す図である。
【図１１】本技術の第１の実施の形態における読出しリクエストの転送動作の一例を示す図である。
【図１２】本技術の第１の実施の形態におけるリクエスト要求処理の処理手順の一例を示す図である。
【図１３】本技術の第１の実施の形態におけるビジー時間計測処理の処理手順の一例を示す図である。
【図１４】本技術の第２の実施の形態におけるビジー時間計測部２５０の構成例を示す図である。
【図１５】本技術の第２の実施の形態におけるビジー時間計測処理の処理手順の一例を示す図である。
【図１６】本技術の第３の実施の形態におけるビジー時間計測部２５０の構成例を示す図である。
【図１７】本技術の第３の実施の形態におけるビジー時間の一例を示す図である。
【図１８】本技術の第３の実施の形態におけるリクエスト要求処理の処理手順の一例を示す図である。
【図１９】本技術の第３の実施の形態におけるビジー時間計測処理の処理手順の一例を示す図である。
【発明を実施するための形態】
【００１７】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（計測したビジー時間に基づいてクロック信号の周波数を調整する場合の例）
２．第２の実施の形態（複数のメモリのビジー時間のうち最短のビジー時間を計測する場合の例）
３．第３の実施の形態（アドレスに応じてビジー時間が変化するメモリに適用する場合の例）
【００１８】
＜１．第１の実施の形態＞
［情報処理システムの構成］
図１は、本技術の実施の形態における情報処理システムの構成例を示す図である。同図の情報処理システムは、ホストコンピュータ１００と、メモリコントローラ２００と、メモリ装置３００、とを備える。なお、メモリコントローラ２００およびメモリ装置３００は、記憶装置を構成する。
【００１９】
ホストコンピュータ１００は、情報処理システムにおける各種の処理を行うものである。このホストコンピュータ１００は、メモリコントローラ２００を介して、メモリ装置３００に対して書込みまたは読出し等のコマンドを発行してアクセスを行う。信号線１０９は、ホストコンピュータ１００とメモリコントローラ２００とを電気的に接続する信号線である。
【００２０】
メモリコントローラ２００は、メモリ装置３００を制御するものである。このメモリコントローラ２００は、ホストコンピュータ１００から発行された書込みおよび読出しコマンドを解釈し、これに基づく書込みおよび読出しリクエストをメモリ装置３００に対して要求する。信号線２０９は、メモリコントローラ２００とメモリ装置３００とを電気的に接続する信号線であり、制御信号やデータ等を伝達する複数の信号線を有する。
【００２１】
メモリ装置３００は、データを記憶するものである。メモリコントローラ２００から要求されたリクエストに基づいて、このデータに対するアクセスが行われる。この際、メモリ装置３００とメモリコントローラ２００との間でデータの転送が行われる。
【００２２】
メモリ装置３００は、メモリ＃１（３１０）と、メモリ＃２（３２０）と、メモリ＃３（３３０）と、メモリ＃４（３４０）とを備える。これらのメモリは、メモリを選択するためのチップイネーブル信号を伝達する信号線等を除いて信号線２０９に共通に接続されている。
【００２３】
メモリ＃１（３１０）乃至＃４（３４０）は、半導体メモリチップである。このメモリ＃１（３１０）乃至＃４（３４０）として、ＮＡＮＤ型フラッシュメモリにより構成されたメモリチップを想定する。このＮＡＮＤ型フラッシュメモリは、浮遊ゲートを有するＭＯＳトランジスタをメモリセルとして使用する不揮発性メモリである。データの書込みは、この浮遊ゲートに電荷を注入することにより行われる。また、データを書き換える際には、浮遊ゲートから電荷を引き抜く消去を行った後に新たなデータの書込みを行う必要がある。データの書込みはページを単位として行われ、消去は複数のページからなるブロックを単位として行われる。ページのサイズとして２１７６バイト、ブロックのサイズとして６４ページを例として挙げることができる。
【００２４】
一方、データの読出しの際には、浮遊ゲートに対する電荷の移動を伴わないため、データの読出しに要する時間は、書込みに要する時間より短くなる。一例を挙げると、データの書込みおよび読出しに要する時間は、それぞれ５００μｓおよび５０μｓとなる。これらデータの書込みおよび読出しを行っている期間であるアクセスの期間においては、ＮＡＮＤ型フラッシュメモリは、他の処理を受け付けることができない状態であるビジー状態となる。メモリ＃１（３１０）乃至＃４（３４０）は、このビジー状態にあることを示すビジー信号をメモリコントローラ２００に対して出力する。メモリ＃１（３１０）乃至＃４（３４０）におけるデータの書込みおよび読出しの詳細については、後述する。
【００２５】
ホストコンピュータ１００は、書込みを行う際に、書込みコマンドとこれに付随する書込みデータをメモリコントローラ２００に対して発行する。メモリコントローラ２００は、発行された書込みコマンドを解釈し、コマンドに含まれる書込み先アドレスおよび書込みデータ数に基づいて書込みリクエストを生成する。次に、メモリコントローラ２００は、生成した書込みリクエストおよび書込みデータをメモリ装置３００に転送する。メモリ装置３００は、このリクエストに基づいて書込みを行う。
【００２６】
一方、読出しの際には、ホストコンピュータ１００は、読出しコマンドをメモリコントローラ２００に対して発行する。メモリコントローラ２００がこのコマンドを解釈し、コマンドに含まれる読出し先アドレスおよび読出しデータ数に基づいて読出しリクエストを生成する。次に、メモリコントローラ２００は、生成した読出しリクエストをメモリ装置３００に転送する。メモリ装置３００は、このリクエストに基づいて読出しを行い、読み出したデータをメモリコントローラ２００に転送する。メモリコントローラ２００は、この転送されたデータを読出しデータとしてホストコンピュータ１００に出力する。
【００２７】
［メモリコントローラの構成］
図２は、本技術の第１の実施の形態におけるメモリコントローラ２００の構成例を示す図である。このメモリコントローラ２００は、プロセッサ２２０と、ＳＲＡＭ（Static Random Access Memory）２１０と、ホストインターフェース２３０と、クロック信号調整部２４０と、ビジー時間計測部２５０とを備える。また、メモリコントローラ２００は、メモリインターフェース２６０をさらに備える。
【００２８】
ホストインターフェース２３０は、ホストコンピュータ１００とのやり取りを行うインターフェースである。ホストコンピュータ１００が発行したコマンドは、このホストインターフェース２３０を介してメモリコントローラ２００に入力される。
【００２９】
プロセッサ２２０は、メモリコントローラ２００の全体を制御するものである。また、このプロセッサ２２０は、ホストコンピュータ１００が発行したコマンドの解釈、これに基づくリクエストの生成を行う。すなわち、プロセッサ２２０は、発行されたコマンドが書込みコマンドである場合には書込みリクエストを生成し、読出しコマンドである場合には読出しリクエストを生成する。リクエストの生成の際、プロセッサ２２０は、アドレス変換処理を行う。ここでアドレス変換処理とは、コマンドに含まれるアドレスである論理アドレスをメモリ装置３００におけるアドレスである物理アドレスに変換する処理である。メモリ装置３００は、メモリ＃１（３１０）乃至＃４（３４０）を備えているため、プロセッサ２２０は、アドレス変換の際、これらのメモリに対して物理アドレスの振分けを行う。また、メモリ＃１（３１０）等は、ページアドレスによりアクセスされるため、プロセッサ２２０は、論理アドレスをページアドレスからなる物理アドレスに変換する。なお、書込みおよび読出しリクエストは、ページを単位として行われることを想定する。
【００３０】
ＳＲＡＭ２１０は、プロセッサ２２０のファームウェアを保持するメモリである。また、このＳＲＡＭ２１０は、後述するビジー時間の保持および書込みデータ等の一時的な保持をさらに行う。なお、ＳＲＡＭ２１０は、特許請求の範囲に記載のビジー時間保持部の一例である。
【００３１】
ビジー時間計測部２５０は、メモリ＃１（３１０）乃至＃４（３４０）におけるビジー状態の時間であるビジー時間を計測するものである。このビジー時間計測部２５０は、プロセッサ２２０による計測開始の指示と図３において説明したビジー信号とに基づいてビジー時間の計測を行う。前述のように、ＮＡＮＤ型フラッシュメモリのビジー時間は書込みおよび読出しにおいて大幅に異なるため、ビジー時間計測部２５０は、書込みおよび読出しの両方についてビジー時間の計測を行う。ビジー時間計測部２５０の構成の詳細については、後述する。
【００３２】
クロック信号調整部２４０は、クロック信号の周波数を調整するものである。このクロック信号は、メモリコントローラ２００の各部の動作の基準となる信号である。また、メモリコントローラ２００とメモリ装置３００との間のリクエストおよびデータの転送は、このクロック信号に同期して行われる。ここで、メモリ＃１（３１０）乃至＃４（３４０）のうち、１つのメモリが選択され、このメモリについてビジー時間計測部２５０によるビジー時間の計測が行われる。この選択されたメモリを選択メモリと称する。クロック信号調整部２４０は、クロック信号の周波数を調整することにより、この選択メモリを除くメモリ＃１（３１０）乃至＃４（３４０）に対するリクエストおよびデータの転送に要する時間の合計とビジー時間とを略等しくする。
【００３３】
メモリ装置３００に対して書込みを行う際は、クロック信号調整部２４０は、選択メモリを除くメモリにおける書込みリクエストおよび書込みデータの転送に要する時間の合計と選択メモリにおける書込みの際のビジー時間とを略等しくする。メモリ装置３００に対して読出しを行う際は、クロック信号調整部２４０は、選択メモリを除くメモリにおける読出しリクエストおよび読出しデータの転送に要する時間の合計と選択メモリにおける読出しの際のビジー時間とを略等しくする。クロック信号調整部２４０の構成の詳細については、後述する。
【００３４】
メモリインターフェース２６０は、メモリ装置３００とのやり取りを行うインターフェースである。このメモリインターフェース２６０は、メモリ装置３００に対してプロセッサ２２０が生成したリクエストの転送とこのリクエストに基づくデータの転送とを行う。上述のように、これらの転送は、クロック信号調整部２４０により調整されたクロック信号に同期して行われる。メモリ装置３００に対して書込みを行う際は、メモリインターフェース２６０は、プロセッサ２２０が生成した書込みリクエストおよび書込みデータをメモリ装置３００に転送する。メモリ装置３００に対して読出しを行う際は、メモリインターフェース２６０は、プロセッサ２２０が生成した読出しリクエストをメモリ装置３００に転送する。その後、メモリインターフェース２６０は、メモリ装置３００からの読出しデータの転送を行う。なお、メモリインターフェース２６０は、特許請求の範囲に記載のリクエスト転送部の一例である。
【００３５】
ホストコンピュータ１００からのコマンドに付随するデータが複数のページにわたる場合には、メモリコントローラ２００は、複数のリクエストを生成し、順次メモリ装置３００に対して出力する。このような場合、これら複数のリクエストの対象がメモリ＃１（３１０）乃至＃４（３４０）に分散するように、プロセッサ２２０によるアドレス変換が行われる。これにより、メモリ装置３００の各メモリを対象とするリクエストが順に生成され、メモリインターフェース２６０により順次メモリ装置３００に転送される。この際、最初にリクエストが転送されたメモリ、例えば、メモリ＃１（３１０）がビジー状態となっている期間に他のメモリ、例えば、メモリ＃２（３２０）乃至メモリ＃４（３４０）に対するリクエストおよびデータの転送を行う。これにより、信号線２０９において切れ目なくリクエストおよびデータの転送を行うことができる。リクエストおよびデータの転送については、後述する。
【００３６】
［メモリコントローラの機能構成］
図３は、本技術の第１の実施の形態におけるメモリコントローラ２００の機能構成例を示す図である。同図は、メモリコントローラ２００の各部の信号等の流れを表したものである。ホストコンピュータ１００からのコマンドがホストインターフェース２３０を介してプロセッサ２２０に入力されると、プロセッサ２２０は、リクエストを生成してメモリインターフェース２６０に出力する。リクエストの出力後、プロセッサ２２０は、計測開始の指示をビジー時間計測部２５０に出力する。また、出力されたリクエストは、メモリインターフェース２６０によりクロック信号に同期してメモリ装置３００に転送される。その後、リクエストが転送されたメモリ＃１（３１０）等からビジー信号が出力される。このビジー信号がメモリインターフェース２６０を介してビジー時間計測部２５０に入力される。ビジー時間計測部２５０は、プロセッサ２２０からの計測開始の指示およびビジー信号に基づいてビジー時間の計測を行い、計測結果であるビジー時間をＳＲＡＭ２１０に保持させる。
【００３７】
本技術の第１の実施の形態におけるメモリコントローラ２００は、ビジー時間をＳＲＡＭ２１０に保持させる構成であるため、ビジー時間計測部２５０によるビジー時間の計測は、記憶装置の起動後の最初のリクエストの転送の際に行うことができる。そして、以降のリクエストの転送の際には、ＳＲＡＭ２１０に保持されたビジー時間を使用することにより、ビジー時間計測に要する処理を省略することができる。
【００３８】
クロック信号調整部２４０は、ＳＲＡＭ２１０からビジー時間の読出しを行い、読み出したビジー時間に基づいてクロック信号の調整を行う。この際、クロック信号調整部２４０は、システムクロック信号の周波数を調整することによりクロック信号の調整を行う。ここで、システムクロック信号は、ホストコンピュータ１００等から供給されるクロック信号である。なお、上述した記憶装置の起動後の最初のリクエストの転送の際には、クロック信号調整部２４０は、システムにおける既定の周波数のクロック信号をメモリインターフェース２６０等に出力する。書込みデータおよび読出しデータは、ホストインターフェース２３０およびメモリインターフェース２６０の間で双方向に転送される。なお、このホストインターフェース２３０およびメモリインターフェース２６０におけるデータの転送は、プロセッサ２２０により行われる。この転送の際、プロセッサ２２０は、一時的にデータをＳＲＡＭ２１０に保持することができる。
【００３９】
［ビジー時間計測部の構成］
図４は、本技術の第１の実施の形態におけるビジー時間計測部２５０の構成例を示す図である。このビジー時間計測部２５０は、ビジー時間計測制御部２５１と、タイマ２５２とを備える。
【００４０】
タイマ２５２は、ビジー時間を計時するタイマである。このタイマ２５２は、ビジー時間計測制御部２５１の制御に基づいて、ビジー時間の計時および計時値の保持を行う。また、ビジー時間計測制御部２５１の制御によりタイマ２５２のリセットが行われる。
【００４１】
ビジー時間計測制御部２５１は、タイマ２５２を制御してビジー時間の計測を行うものである。ビジー時間の計測は、次のように行う。プロセッサ２２０から計測開始の指示が入力されると、ビジー時間計測制御部２５１は、タイマ２５２をリセットする。その後、メモリ＃１（３１０）等におけるビジー状態への移行に伴い、ビジー信号の入力が開始されると、ビジー時間計測制御部２５１は、タイマ２５２の計時を開始させる。ビジー状態からの復帰により、メモリ＃１（３１０）からのビジー信号の入力が停止されると、ビジー時間計測制御部２５１は、タイマ２５２の計時を停止させる。次に、ビジー時間計測制御部２５１は、タイマ２５２に保持された計時値の読出しを行い、読み出した計時値をビジー時間としてＳＲＡＭ２１０に保持させる。このように、ビジー時間計測制御部２５１は、プロセッサ２２０からの計測開始の指示およびビジー信号に基づいてメモリ＃１（３１０）等におけるビジー時間を計測する。
【００４２】
［ビジー時間］
図５は、本技術の第１の実施の形態におけるビジー時間の一例を示す図である。同図は、ＳＲＡＭ２１０に保持されるビジー時間を表したものである。同図に表したように、書込みおよび読出しのビジー時間がそれぞれ保持される。ここで、ビジー時間の単位は、μｓである。
【００４３】
［クロック信号調整部の構成］
図６は、本技術の第１の実施の形態におけるクロック信号調整部２４０の構成例を示す図である。このクロック信号調整部２４０は、クロック信号調整制御部２４１と、ＰＬＬ２４２とを備える。
【００４４】
ＰＬＬ２４２は、ＰＬＬ（Phase Locked Loop）回路により構成され、クロック信号の周波数を調整するものである。このＰＬＬ２４２は、入力されたシステムクロック信号の逓倍および分周を行うことにより周波数を調整したクロック信号を出力する。
【００４５】
クロック信号調整制御部２４１は、ＳＲＡＭ２１０から読み出したビジー時間に基づいてＰＬＬ２４２を制御するものである。具体的には、次の手順に基づいてＰＬＬ２４２を制御する。まず、クロック信号調整制御部２４１は、次式により、クロック信号の周期を算出する。
周期＝ビジー時間／（所要クロック数×（メモリ数−１））
ただし、所要クロック数は、書込みまたは読出しに要するクロック数である。メモリ数は、図１において説明したメモリ装置３００に含まれるメモリ＃１（３１０）乃至＃４（３４０）の数である。次に、クロック信号調整制御部２４１は、算出した周期とシステムクロック信号の周期とにより、ＰＬＬ２４２における逓倍および分周の比率をさらに算出し、この比率をＰＬＬ２４２に対して出力する。ＰＬＬ２４２は、この比率に基づいて、上述の逓倍および分周を行う。
【００４６】
［書込み動作］
図７は、本技術の第１の実施の形態における書込み動作の一例を示す図である。同図は、書込みリクエストの際の信号線２０９における電気信号の状態を表したものである。同図のＣＥ（Chip Enable）は、図１において説明したチップイネーブル信号に該当し、メモリ＃１（３１０）乃至＃４（３４０）を選択する信号である。値「０」にすることにより、該当するメモリ＃１（３１０）乃至＃４（３４０）が選択される。ＣＬＥ（Command Latch Enable）は、オペレーションコードの入力およびデータの入出力を指示する信号である。ＡＬＥ（Address Latch Enable）は、アドレスの入力およびデータの入出力を指示する信号である。ＣＬＫ（Clock）は、データ等の転送のタイミングを取るためのクロック信号である。ＣＬＫの立ち上りに同期してオペレーションコード等がメモリ＃１（３１０）等に取り込まれる。このＣＬＫには、クロック信号調整部２４０から出力されたクロック信号が使用される。
【００４７】
Ｗ／Ｒ（Write/Read Direction）は、後述するＤＱＳおよびＩ／Ｏにおける信号入力の方向を示す信号である。値「１」の時はメモリコントローラ２００からメモリ＃１（３１０）等への信号入力を表す。一方、値「０」の時はメモリ＃１（３１０）等からメモリコントローラ２００への信号入力を表し、メモリ＃１（３１０）等は、メモリコントローラ２００に対してデータを出力することができる。ＤＱＳ（Data Strobe）は、Ｉ／Ｏの信号が有効であることを示す信号である。Ｉ／Ｏ（Input/Output Port）は、オペレーションコード、アドレスおよびデータを伝達する８ビットの信号である。Ｒ／Ｂ（Ready/Busy）は、メモリ＃１（３１０）乃至＃４（３４０）のビジー信号である。メモリ＃１（３１０）乃至＃４（３４０）がビジー状態の時、値「０」となる。これらのうち、ＣＥはメモリ＃１（３１０）乃至＃４（３４０）に対して個別に伝達され、他の信号はメモリ＃１（３１０）乃至＃４（３４０）に共通に配線される。また、Ｒ／Ｂにおいては、メモリ＃１（３１０）乃至＃４（３４０）の各ビジー信号がワイヤードオア接続されてメモリコントローラ２００に入力される。
【００４８】
第１のオペレーションコード出力期間４１０においては、まず、メモリコントローラ２００がＣＥを値「０」にする。所定の時間経過後に、メモリコントローラ２００がＣＬＥを値「１」にするとともにＩ／Ｏを値「０ｘ８０」にする。ＣＬＫの立ち上がりのタイミングでこれらがメモリ＃１（３１０）等に取り込まれる。なお、値「０ｘ８０」と後述する第２のオペレーションコード出力期間４４０において出力される値「０ｘ１０」とはデータ書込みを表すオペレーションコードである。
【００４９】
アドレス出力期間４２０においては、所定の時間経過後に、メモリコントローラ２００がＡＬＥを値「１」にするとともにＩ／Ｏを値「Ｃ１」にする。ＣＬＫの立ち上がりのタイミングでこれらがメモリ＃１（３１０）等に取り込まれる。所定の時間経過後、同様に値「Ｃ２」がメモリ＃１（３１０）等に取り込まれる。ここで、値「Ｃ１」および「Ｃ２」は、それぞれＮＡＮＤ型フラッシュメモリのカラムアドレスを表す８ビットの値である。同様の手順により、メモリコントローラ２００は、値「Ｒ１」および「Ｒ２」をメモリ＃１（３１０）等に対して出力する。これらは、ＮＡＮＤ型フラッシュメモリのローアドレスを示す８ビットの値である。便宜上、メモリ＃１（３１０）等は、１６ビットのカラムアドレスおよびローアドレスによりアクセスされることを想定する。
【００５０】
データ出力期間４３０においては、所定の時間経過後に、メモリコントローラ２００がＣＬＥおよびＡＬＥを値「１」にする。ＣＬＫの立ち上がりのタイミングでこれらがメモリ＃１（３１０）等に取り込まれる。その後、メモリコントローラ２００は、書込みデータをＩ／Ｏとして順次出力する。さらにメモリコントローラ２００は、ＣＬＫと同じ周波数の信号をＤＱＳとして出力する。メモリ＃１（３１０）等は、ＤＱＳの立ち上がりおよび立ち下りの両方のエッジに同期してＩ／Ｏ信号をデータ信号として取り込む。これを繰り返すことにより、１ページの書込みデータが転送される。メモリコントローラ２００は、データ転送が終了する直前にＣＬＥおよびＡＬＥを値「０」にする。
【００５１】
第２のオペレーションコード出力期間４４０においては、所定の時間経過後に、メモリコントローラ２００がＣＬＥを値「１」にするとともにＩ／Ｏを値「０ｘ１０」にする。ＣＬＫの立ち上がりのタイミングでこれらがメモリ＃１（３１０）等に取り込まれる。その後、メモリコントローラ２００は、ＣＥを値「１」にする。これにより、書込みリクエストおよびデータの転送が終了する。
【００５２】
ビジー期間４５０においては、第２のオペレーションコード出力期間４４０におけるオペレーションコードの取り込みから所定の時間経過後に、メモリ＃１（３１０）等がＲ／Ｂを値「０」にする。書込み終了後、メモリ＃１（３１０）等は、Ｒ／Ｂを値「１」にして、書込み終了をメモリコントローラ２００に対して通知する。
【００５３】
［読出し動作］
図８は、本技術の第１の実施の形態における読出し動作の一例を示す図である。同図は、読出しリクエストの際の信号線２０９における電気信号の状態を表したものである。なお、アドレス出力期間４２０については、図７において説明したアドレス出力期間４２０と同様の動作であるため、説明を省略する。
【００５４】
第１のオペレーションコード出力期間４１０においては、メモリコントローラ２００は、オペレーションコードとして値「０ｘ００」を出力する。この値「０ｘ００」と第２のオペレーションコード出力期間４４０において出力される値「０ｘ３０」とはデータ読出しを表すオペレーションコードである。
【００５５】
第２のオペレーションコード出力期間４４０においては、アドレスが出力されて、所定の期間が経過した後に、メモリコントローラ２００がオペレーションコードとして値「０ｘ３０」を出力する。
【００５６】
ビジー期間４５０においては、第２のオペレーションコード出力期間４４０におけるオペレーションコードの取り込みから所定の時間経過後、メモリ＃１（３１０）等がＲ／Ｂを値「０」にする。メモリ＃１（３１０）等における読出しが終了して読出しデータの転送の準備ができた後、メモリ＃１（３１０）等は、Ｒ／Ｂを値「１」にして、これをメモリコントローラ２００に対して通知する。
【００５７】
データ入力期間４８０においては、Ｒ／Ｂが値「１」になった後に、メモリコントローラ２００がＷ／Ｒを値「０」にする。所定の時間経過後に、メモリコントローラ２００は、ＣＬＥおよびＡＬＥを値「１」にする。さらに所定の時間が経過した後に、メモリ＃１（３１０）等がＣＬＫと同じ周波数の信号をＤＱＳとして出力するとともに、読出しデータをＩ／Ｏとして出力する。読出しデータは、ＤＱＳの立ち上がりおよび立ち下がりに同期して出力される。これらは、メモリコントローラ２００の入力データとなる。
【００５８】
［書込みリクエスト転送］
図９は、本技術の第１の実施の形態における書込みリクエストの転送動作の一例を示す図である。同図は、メモリコントローラ２００による複数の書込みリクエストの転送の様子を表したものである。同図においては、メモリ＃１（３１０）乃至＃４（３４０）に対して連続して書込みリクエストを転送する場合を想定する。
【００５９】
まず、メモリコントローラ２００は、メモリ＃１（３１０）に対して書込みリクエストを転送する。すなわち、期間４１０乃至４４０に対応する処理が実行される。これによりメモリ＃１（３１０）は、ビジー期間４５０により表されるビジー状態となる。このビジー期間４５０にメモリ＃２（３２０）乃至＃４（３４０）に対して書込みリクエストおよび書込みデータを順次転送する。同図に表したように、メモリ＃１（３１０）のビジー期間４５０とメモリ＃２（３２０）乃至＃４（３４０）の書込みリクエストおよび書込みデータの転送を行う期間の合計とを略等しくする。これにより、書込みリクエストの転送効率を向上させることができる。図７において説明したように、メモリ＃１（３１０）乃至＃４（３４０）におけるリクエストおよび書込みデータは、クロック信号に同期して転送される。これに対して、ビジー時間は、クロック信号の周波数には依存しない。このため、クロック信号の周波数を調整することにより、ビジー期間４５０と書込みリクエスト等の転送に要する時間とを略等しくすることができる。
【００６０】
図１０は、本技術の第１の実施の形態におけるクロック信号の周波数が適切でない場合の書込みリクエストの転送動作を示す図である。同図におけるａは、図９において説明した場合と比較して、クロック信号の周波数が低い場合の例を表したものである。メモリ＃２（３２０）乃至＃４（３４０）に対する書込みリクエストおよびデータの転送を行う期間の合計が、ビジー期間４５０より長くなり、メモリ＃１（３１０）において空白の期間４６０を生じている。このため、図９の場合と比較して、メモリコントローラ２００とメモリ装置３００との間のデータ等の転送時間が長くなり、転送効率が低下する。
【００６１】
一方、同図におけるｂは、図９において説明した場合と比較して、クロック信号の周波数が高い場合の例を表したものである。メモリ＃２（３２０）乃至＃４（３４０）に対する書込みリクエストおよびデータの転送を行う期間の合計が、ビジー期間４５０より短くなり、メモリ＃２（３２０）乃至＃４（３４０）が同時にビジー状態になる期間４７０を生じている。この場合、メモリコントローラ２００とメモリ装置３００との間のデータ等の転送時間は、図９の場合と等しくなる。しかし、クロック信号の周波数が高いため、メモリコントローラ２００およびメモリ装置３００における消費電力が増加する。消費電力は、クロック信号の周波数に比例して増加するためである。
【００６２】
［読出しリクエスト転送］
図１１は、本技術の第１の実施の形態における読出しリクエストの転送動作の一例を示す図である。同図は、メモリコントローラ２００による複数の読出しリクエストの転送の様子を表したものである。図９と同様に、メモリ＃１（３１０）乃至＃４（３４０）に対して連続して読出しリクエストを転送する場合を想定する。
【００６３】
読出しリクエストの場合は、図８において説明したようにビジー期間４５０の後にデータ入力期間４８０が続く。この期間４８０から次の読出しリクエストにおける期間４４０までを読出しリクエストおよびデータの転送に要する時間とし、クロック信号の調整を行う。これにより、読出しリクエストにおいても、消費電力の増加を防ぎながらリクエスト等の転送を高速に行うことができる。
【００６４】
［リクエスト要求処理］
図１２は、本技術の第１の実施の形態におけるリクエスト要求処理の処理手順の一例を示す図である。ホストコンピュータ１００から書込みまたは読出しコマンドが発行されると、メモリコントローラ２００は、本処理を開始する。まず、クロック信号調整部２４０がコマンドの種類に応じたビジー時間をＳＲＡＭ２１０から取得する（ステップＳ９０１）。具体的には、コマンドが書込みコマンドである場合には書込みの際のビジー時間が取得され、コマンドが読出しコマンドである場合には、読出しの際のビジー時間が取得される。次に、クロック信号調整部２４０は、取得したビジー時間に基づいてクロック信号の調整を行う（ステップＳ９０２）。次に、プロセッサ２２０は、コマンドに応じたリクエストを生成する（ステップＳ９０３）。
【００６５】
次に、プロセッサ２２０は、書込みおよび読出しの両方についてビジー時間の計測が終了しているか否かを判断する（ステップＳ９０４）。その結果、ビジー時間の計測が終了していない場合には（ステップＳ９０４：Ｎｏ）、プロセッサ２２０は、ビジー時間計測部２５０に対して計測開始の指示を出力し（ステップＳ９０５）、ステップＳ９０６の処理に移行する。なお、プロセッサ２２０は、ステップＳ９０３においてビジー時間の計測が終了していないリクエストを生成した場合に、この計測開始の指示を出力する。一方、ビジー時間の計測が終了している場合には（ステップＳ９０４：Ｙｅｓ）、プロセッサ２２０は、ステップＳ９０５の処理をスキップする。ステップＳ９０６において、メモリインターフェース２６０は、生成されたリクエストをメモリ装置３００に転送する（ステップＳ９０６）。また、メモリインターフェース２６０は、書込みリクエストの場合には、書込みデータの転送を行い、読出しリクエストの場合には、読出しデータの転送をさらに行う（ステップＳ９０６）。
【００６６】
次に、プロセッサ２２０は、全てのリクエストの転送が終了したか否かを判断する（ステップＳ９０７）。その結果、未転送のリクエストが存在する場合には（ステップＳ９０７：Ｎｏ）、プロセッサ２２０は、ステップＳ９０３からの処理を再度実行する。一方、全てのリクエストの転送が終了した場合には（ステップＳ９０７：Ｙｅｓ）、プロセッサ２２０は、リクエスト要求処理を終了する。
【００６７】
［ビジー時間計測処理］
図１３は、本技術の第１の実施の形態におけるビジー時間計測処理の処理手順の一例を示す図である。まず、ビジー時間計測部２５０は、プロセッサ２２０から計測開始の指示が出力されるまで待機する（ステップＳ９２２）。計測開始の指示が出力された場合には（ステップＳ９２２：Ｙｅｓ）、ビジー時間計測部２５０は、タイマ２５２による計時を開始する（ステップＳ９２３）。具体的には、ビジー時間計測部２５０は、タイマ２５２をリセットし、メモリ装置３００からのビジー信号の入力を待って、タイマ２５２による計時を開始させる。すなわち、図７および８において説明した信号線２０９の信号Ｒ／Ｂが値「１」から値「０」に変化した時にタイマ２５２による計時が開始される。次に、ビジー時間計測部２５０は、メモリ装置３００からのビジー信号の出力が停止されるまで待機する（ステップＳ９２４）。具体的には、信号Ｒ／Ｂが値「０」から値「１」になるまで待機する。ビジー信号の出力が停止された場合には（ステップＳ９２４：Ｙｅｓ）、ビジー時間計測部２５０は、タイマ２５２による計時を停止する（ステップＳ９２５）。次に、ビジー時間計測部２５０は、タイマ２５２に保持された計時値をビジー時間として出力し（ステップＳ９２９）、ビジー時間計測処理を終了する。
【００６８】
このように、本技術の第１の実施の形態では、メモリ＃１（３１０）等のビジー時間の計測を行い、計測したビジー時間に基づいてクロック信号の周波数の調整を行う。これにより、複数のリクエストおよびデータの転送をメモリ装置３００との間で切れ目なく行うことができ、消費電力の増加を防ぎながら高速なデータ等の転送を行うことができる。
【００６９】
＜２．第２の実施の形態＞
上述の実施の形態では、１つのメモリについて計測したビジー時間を全てのメモリにおけるクロック信号の調整に適用していた。これに対し、本技術の第２の実施の形態では、全てのメモリについてビジー時間の計測を行い、これらのうち最短のビジー時間を使用してクロック信号の調整を行う。これにより、使用する複数のメモリのビジー時間のばらつきが大きい場合において、高速なリクエストおよびデータの転送を行うことができる。
【００７０】
［ビジー時間計測部の構成］
図１４は、本技術の第２の実施の形態におけるビジー時間計測部２５０の構成例を示す図である。このビジー時間計測部２５０は、ビジー時間計測制御部２５７と、タイマ＃１（２５３）乃至タイマ＃４（２５６）とを備える。
【００７１】
タイマ＃１（２５３）乃至タイマ＃４（２５６）は、図４において説明したタイマ２５２と同様に、ビジー時間を計時するタイマである。これらのタイマは、メモリ装置３００に配置されたメモリ＃１（３１０）乃至メモリ＃４（３４０）に１対１に対応しており、対応するメモリ＃１（３１０）等のビジー時間の計時を行う。
【００７２】
ビジー時間計測制御部２５７は、タイマ＃１（２５３）乃至タイマ＃４（２５６）を制御してビジー時間の計測を行うものである。複数のタイマの制御を行う点で、図４において説明したビジー時間計測制御部２５１と異なる。ビジー時間計測制御部２５７は、タイマ＃１（２５３）乃至タイマ＃４（２５６）を制御し、メモリ＃１（３１０）乃至メモリ＃４（３４０）に対して個別にビジー時間の計測を行う。計測後、タイマ＃１（２５３）乃至タイマ＃４（２５６）に保持された計時値のうち最短のものをビジー時間として出力し、ＳＲＡＭ２１０に保持させる。
【００７３】
これにより、メモリ＃１（３１０）乃至メモリ＃４（３４０）のビジー時間のうち最短のビジー時間に基づいてクロック信号の調整が行われる。このため、メモリ＃１（３１０）乃至メモリ＃４（３４０）におけるビジー時間のばらつきが大きい場合において、図１０において説明した空白の期間４６０を生ずることなく、リクエストおよびデータの転送を行うことができる。すなわち、リクエストおよびデータの転送を切れ目なく行うことができる。
【００７４】
これ以外の、メモリコントローラ２００およびメモリ装置３００の構成は本技術の第１の実施の形態において説明したメモリコントローラ２００およびメモリ装置３００と同様であるため、説明を省略する。
【００７５】
［ビジー時間計測処理］
図１５は、本技術の第２の実施の形態におけるビジー時間計測処理の処理手順の一例を示す図である。まず、ビジー時間計測部２５０は、プロセッサ２２０から計測開始の指示が出力されたか否かを判断する（ステップＳ９５２）。計測開始の指示が出力された場合には（ステップＳ９５２：Ｙｅｓ）、ビジー時間計測部２５０は、タイマ＃１（２５３）乃至タイマ＃４（２５６）のうち該当するタイマによる計時を開始する（ステップＳ９５３）。一方、プロセッサから計測開始の指示が出力されていない場合には（ステップＳ９５２：Ｎｏ）、ビジー時間計測部２５０は、ステップＳ９５３の処理をスキップしてステップＳ９５４の処理に移行する。
【００７６】
ステップＳ９５４において、ビジー時間計測部２５０は、メモリ装置３００からのビジー信号の出力が停止されたか否かを判断する（ステップＳ９５４）。ビジー信号の出力が停止された場合には（ステップＳ９５４：Ｙｅｓ）、ビジー時間計測部２５０は、タイマ＃１（２５３）乃至タイマ＃４（２５６）のうち該当するタイマの計時を停止し（ステップＳ９５５）、ステップＳ９５８の処理に移行する。一方、ビジー信号の出力が停止されていない場合には（ステップＳ９５４：Ｎｏ）、ビジー時間計測部２５０は、再度ステップＳ９５２からの処理を実行する。ステップＳ９５８において、ビジー時間計測部２５０は、メモリ＃１（３１０）乃至メモリ＃４（３４０）の全てについてビジー時間の計時が終了したか否かを判断する（ステップＳ９５８）。
【００７７】
その結果、ビジー時間の計時が終了していないメモリが存在する場合には、ビジー時間計測部２５０は、再度ステップＳ９５２からの処理を実行する。一方、全てのメモリにおけるビジー時間の計時が終了した場合には（ステップＳ９５８：Ｙｅｓ）、ビジー時間計測部２５０は、ステップＳ９５９の処理に移行する。ステップＳ９５９の処理において、ビジー時間計測部２５０は、タイマ＃１（２５３）乃至タイマ＃４（２５６）のそれぞれに保持された計時値のうち最短の計時値をビジー時間として出力し（ステップＳ９５９）、ビジー時間計測処理を終了する。
【００７８】
なお、本技術の第２の実施の形態におけるリクエスト要求処理は図１２において説明したリクエスト要求処理と同様であるため、説明を省略する。
【００７９】
このように、本技術の第２の実施の形態では、メモリ装置３００に配置されたメモリ＃１（３１０）等のビジー時間のうち最短のビジー時間を選択し、これに基づくクロック信号の周波数の調整を行う。これにより、メモリ＃１（３１０）等のビジー時間のばらつきが大きい場合において、複数のリクエストおよびデータの転送をメモリ装置３００との間で切れ目なく行うことができ、高速なデータ等の転送を行うことができる。
【００８０】
＜３．第３の実施の形態＞
上述の第１の実施の形態では、全てのアドレスにおいて同一のビジー時間となるメモリ＃１（３１０）等を使用していた。これに対し、本技術の第３の実施の形態では、アドレス空間毎にビジー時間が異なるメモリに対してビジー時間の計測を行う。これにより、アドレス空間毎にビジー時間が異なるメモリを有する記憶装置において、高速なリクエストおよびデータの転送を行うことができる。
【００８１】
［記憶装置の構成］
本技術の第３の実施の形態におけるメモリ装置３００は、図１において説明したメモリ装置３００と同様に、メモリ＃１（３１０）乃至メモリ＃４（３４０）を備える。本技術の第３の実施の形態では、これらのメモリ＃１（３１０）乃至メモリ＃４（３４０）としてＭＬＣ（Multi-Level Cell）方式のＮＡＮＤ型フラッシュメモリを使用する。このＭＬＣ方式は、１つのメモリセルに複数のビットを記憶させる方式であり、浮遊ゲートに蓄積された電荷量を４つ以上の多値により判断することにより複数のビットのデータを記憶する方式である。本技術の第３の実施の形態においては、メモリ＃１（３１０）乃至メモリ＃４（３４０）として、１つのメモリセルに２ビットを記憶するＮＡＮＤ型フラッシュメモリを想定する。一方、本技術の第１の実施の形態におけるメモリ＃１（３１０）は、１つのメモリセルに１ビットを記憶するＳＬＣ（Single-Level Cell）方式のＮＡＮＤ型フラッシュメモリである。
【００８２】
このようなＭＬＣ方式のＮＡＮＤ型フラッシュメモリは上位ページおよび下位ページの２つの領域により構成され、それぞれの領域はアクセスに要する時間が異なっている。この上位ページおよび下位ページとページアドレスとの対応関係は、ＭＬＣ方式のＮＡＮＤ型フラッシュメモリにより予め決定されている。本技術の第３の実施の形態のメモリコントローラ２００は、この対応関係に基づいてアクセスに要する時間が異なるアドレス空間毎にビジー時間を計測し、クロック信号の調整を行う。
【００８３】
［ビジー時間計測部の構成］
図１６は、本技術の第３の実施の形態におけるビジー時間計測部２５０の構成例を示す図である。このビジー時間計測部２５０は、ビジー時間計測制御部２５８と、タイマ＃１（２５３）と、タイマ＃２（２５４）とを備える。
【００８４】
タイマ＃１（２５３）と、タイマ＃２（２５４）は、図１４において説明したタイマ＃１（２５３）およびタイマ＃２（２５４）と同様に、ビジー時間を計時するタイマである。同図のタイマ＃１（２５３）は、上位ページのアクセスにおけるビジー時間の計時を行う。また、同図のタイマ＃２（２５４）は、下位ページのアクセスにおけるビジー時間の計時を行う。
【００８５】
ビジー時間計測制御部２５８は、タイマ＃１（２５３）およびタイマ＃２（２５４）を制御してビジー時間の計測を行うものである。アドレス空間毎のビジー時間の計測を行う点で、図４において説明したビジー時間計測制御部２５１と異なる。プロセッサ２２０は、計測開始の指示を出力する際、アドレスに関する情報をさらに出力する。ビジー時間計測制御部２５８は、このアドレスに関する情報に基づいて、リクエストのアクセス先が上位および下位ページのいずれであるかを判断し、該当するタイマ＃１（２５３）またはタイマ＃２（２５４）を制御してビジー時間の計測を行う。その後、ビジー時間計測制御部２５８は、ビジー時間をアドレス空間毎に出力し、ＳＲＡＭ２１０に保持させる。
【００８６】
［ビジー時間］
図１７は、本技術の第３の実施の形態におけるビジー時間の一例を示す図である。同図に表したように、ＳＲＡＭ２１０には、書込みおよび読出しならびに上位ページおよび下位ページの４つの場合に分けてビジー時間が保持される。
【００８７】
クロック信号調整部２４０は、リクエストの対象アドレスに応じてＳＲＡＭ２１０から上位または下位ページのビジー時間の読出しを行い、クロック信号の周波数の調整を行う。
【００８８】
これにより、メモリ＃１（３１０）等のビジー時間をアドレス空間毎に計測し、このビジー時間に基づいてクロック信号の周波数の調整を行うことができる。
【００８９】
これ以外の、メモリコントローラ２００およびメモリ装置３００の構成は本技術の第１の実施の形態において説明したメモリコントローラ２００およびメモリ装置３００と同様であるため、説明を省略する。
【００９０】
［リクエスト要求処理］
図１８は、本技術の第３の実施の形態におけるリクエスト要求処理の処理手順の一例を示す図である。まず、クロック信号調整部２４０がコマンドの種類および対象となるページに応じたビジー時間をＳＲＡＭ２１０から取得する（ステップＳ８０１）。次に、クロック信号調整部２４０は、取得したビジー時間に基づいてクロック信号の調整を行う（ステップＳ８０２）。次に、プロセッサ２２０は、コマンドに応じたリクエストを生成する（ステップＳ８０３）。次に、プロセッサ２２０は、書込みおよび読出しならびに上位ページおよび下位ページにおける全てのビジー時間の計測が終了しているか否かを判断する（ステップＳ８０４）。その結果、ビジー時間の計測が終了していない場合には（ステップＳ８０４：Ｎｏ）、プロセッサ２２０は、ビジー時間計測部２５０に対して対象となるページ等における計測開始の指示を出力し（ステップＳ８０５）、ステップＳ８０６の処理に移行する。
【００９１】
一方、ビジー時間の計測が終了している場合には（ステップＳ８０４：Ｙｅｓ）、プロセッサ２２０は、ステップＳ８０５の処理をスキップする。ステップＳ８０６において、メモリインターフェース２６０は、生成されたリクエストをメモリ装置３００に転送する（ステップＳ８０６）。また、メモリインターフェース２６０は、書込みリクエストの場合には、書込みデータの転送を行い、読出しリクエストの場合には、読出しデータの転送をさらに行う（ステップＳ８０６）。次に、プロセッサ２２０は、全てのリクエストの転送が終了したか否かを判断し（ステップＳ８０７）、未転送のリクエストが存在する場合には（ステップＳ８０７：Ｎｏ）、プロセッサ２２０は、ステップＳ８０３からの処理を再度実行する。一方、全てのリクエストの転送が終了した場合には（ステップＳ８０７：Ｙｅｓ）、プロセッサ２２０は、リクエスト要求処理を終了する。
【００９２】
［ビジー時間計測処理］
図１９は、本技術の第３の実施の形態におけるビジー時間計測処理の処理手順の一例を示す図である。まず、ビジー時間計測部２５０は、プロセッサ２２０から計測開始の指示が出力されたか否かを判断する（ステップＳ８２２）。計測開始の指示が出力された場合には（ステップＳ８２２：Ｙｅｓ）、ビジー時間計測部２５０は、タイマ＃１（２５３）またはタイマ＃２（２５４）のうち該当するタイマによる計時を開始する（ステップＳ８２３）。一方、プロセッサから計測開始の指示が出力されていない場合には（ステップＳ８２２：Ｎｏ）、ビジー時間計測部２５０は、ステップＳ８２３の処理をスキップしてステップＳ８２４の処理に移行する。ステップＳ８２４において、ビジー時間計測部２５０は、メモリ装置３００からのビジー信号の出力が停止されたか否かを判断する（ステップＳ８２４）。ビジー信号の出力が停止された場合には（ステップＳ８２４：Ｙｅｓ）、ビジー時間計測部２５０は、タイマ＃１（２５３）またはタイマ＃２（２５４）のうち該当するタイマの計時を停止し（ステップＳ８２５）、ステップＳ８２８の処理に移行する。一方、ビジー信号の出力が停止されていない場合には（ステップＳ８２４：Ｎｏ）、ビジー時間計測部２５０は、再度ステップＳ８２２からの処理を実行する。
【００９３】
ステップＳ８２８において、ビジー時間計測部２５０は、上位ページおよび下位ページの両方においてビジー時間の計時が終了したか否かを判断する（ステップＳ８２８）。計時が終了していない場合には（ステップＳ８２８：Ｎｏ）、ビジー時間計測部２５０は、ステップＳ８２２からの処理を再度実行する。一方、計時が終了した場合には（ステップＳ８２８：Ｙｅｓ）、ビジー時間計測部２５０は、タイマ＃１（２５３）およびタイマ＃２（２５４）に保持された計時値を上位および下位ページのビジー時間として出力する（ステップＳ８２９）。その後、ビジー時間計測部２５０は、ビジー時間計測処理を終了する。
【００９４】
このように、本技術の第３の実施の形態では、上位および下位ページのビジー時間をそれぞれ計測し、計測したビジー時間に基づくクロック信号の調整を行う。これにより、ＭＬＣ方式のＮＡＮＤフラッシュメモリのようなアドレスに応じてビジー時間が異なるメモリを備えるメモリ装置３００において、リクエストおよびデータの転送をメモリ装置３００との間で切れ目なく行うことができる。
【００９５】
上述のように、本実施の形態によれば、ビジー時間に基づいてクロック信号を調整することにより、メモリコントローラ２００とメモリ装置３００との間のリクエストおよびデータの転送を切れ目なく行うことができる。これにより、複数の半導体メモリを有する記憶装置において、消費電力の増加を防ぎながら高速なデータ転送を行うことができる。
【００９６】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【００９７】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disc）、メモリカード、ブルーレイディスク（Blu-ray（登録商標）Disc）等を用いることができる。
【００９８】
なお、本明細書に記載された効果はあくまで例示であって、限定されるものではなく、また、他の効果があってもよい。
【００９９】
なお、本技術は以下のような構成もとることができる。
（１）複数のメモリのそれぞれに対してデータの転送を要求するリクエストと当該リクエストに基づくデータとをクロック信号に同期して転送するリクエスト転送部と、
前記複数のメモリのうちの１つのメモリである選択メモリにおける前記リクエストに基づくアクセスに要する時間であるビジー時間の計測を行うビジー時間計測部と、
前記クロック信号の周波数を調整することにより前記選択メモリにおける前記計測されたビジー時間と前記選択メモリを除く前記複数のメモリにおける前記リクエストおよび前記データの転送に要する時間の合計とを略等しくするクロック信号調整部と
を具備するメモリコントローラ。
（２）前記ビジー時間計測部は、前記複数のメモリのそれぞれから出力された前記アクセス中であることを示すビジー信号に基づいて前記ビジー時間を計測する前記（１）に記載のメモリコントローラ。
（３）前記計測されたビジー時間を保持するビジー時間保持部をさらに具備し、
前記クロック信号調整部は、前記クロック信号の周波数を調整することにより前記保持されたビジー時間と前記選択メモリを除く前記複数のメモリにおける前記リクエストおよび前記データの転送に要する時間の合計とを略等しくする
前記（１）または（２）に記載のメモリコントローラ。
（４）前記ビジー時間計測部は、前記複数のメモリのそれぞれについて前記ビジー時間の計測を行い、当該計測されたそれぞれのビジー時間のうち最短のビジー時間を前記クロック信号調整部に供給する前記（１）から（３）のいずれかに記載のメモリコントローラ。
（５）前記リクエスト転送部は、前記データの書込みを要求する書込みリクエストと当該書込みリクエストに基づく書込みデータとをクロック信号に同期して転送し、
前記ビジー時間計測部は、前記選択メモリにおける前記書込みリクエストに基づく前記ビジー時間の計測を行い、
前記クロック信号調整部は、前記クロック信号の周波数を調整することにより前記選択メモリにおける前記計測されたビジー時間と前記選択メモリを除く前記複数のメモリにおける前記書込みリクエストおよび前記書込みデータの転送に要する時間の合計とを略等しくする
前記（１）から（４）のいずれかに記載のメモリコントローラ。
（６）前記リクエスト転送部は、前記データの読出しを要求する読出しリクエストと当該読出しリクエストに基づく読出しデータとをクロック信号に同期して転送し、
前記ビジー時間計測部は、前記選択メモリにおける前記読出しリクエストに基づく前記ビジー時間の計測を行い、
前記クロック信号調整部は、前記クロック信号の周波数を調整することにより前記選択メモリにおける前記計測されたビジー時間と前記選択メモリを除く前記複数のメモリにおける前記読出しリクエストおよび前記読出しデータの転送に要する時間の合計とを略等しくする
前記（１）から（４）のいずれかに記載のメモリコントローラ。
（７）前記ビジー時間計測部は、アドレス空間毎に前記アクセスに要する時間が異なる前記複数のメモリにおける前記アドレス空間毎に前記ビジー時間の計測を行い、
前記クロック信号調整部は、前記アドレス空間毎に前記クロック信号の周波数の調整を行う
前記（１）から（６）のいずれかに記載のメモリコントローラ。
（８）複数のメモリと、
前記複数のメモリのそれぞれに対してデータの転送を要求するリクエストと当該リクエストに基づくデータとをクロック信号に同期して転送するリクエスト転送部と、
前記複数のメモリのうちの１つのメモリである選択メモリにおける前記リクエストに基づくアクセスに要する時間であるビジー時間の計測を行うビジー時間計測部と、
前記クロック信号の周波数を調整することにより前記選択メモリにおける前記計測されたビジー時間と前記選択メモリを除く前記複数のメモリにおける前記リクエストおよび前記データの転送に要する時間の合計とを略等しくするクロック信号調整部と
を具備する記憶装置。
（９）複数のメモリと、
前記複数のメモリのそれぞれに対してデータの転送を要求するリクエストと当該リクエストに基づくデータとをクロック信号に同期して転送するリクエスト転送部と、
前記複数のメモリのうちの１つのメモリである選択メモリにおける前記リクエストに基づくアクセスに要する時間であるビジー時間の計測を行うビジー時間計測部と、
前記クロック信号の周波数を調整することにより前記選択メモリにおける前記計測されたビジー時間と前記選択メモリを除く前記複数のメモリにおける前記リクエストおよび前記データの転送に要する時間の合計とを略等しくするクロック信号調整部と
を備える記憶装置と、
前記記憶装置にアクセスするホストコンピュータと
を具備する情報処理システム。
（１０）複数のメモリのそれぞれに対してデータの転送を要求するリクエストと当該リクエストに基づくデータとをクロック信号に同期して転送するリクエスト転送手順と、
前記複数のメモリのうちの１つのメモリである選択メモリにおける前記リクエストに基づくアクセスに要する時間であるビジー時間の計測を行うビジー時間計測手順と、
前記クロック信号の周波数を調整することにより前記選択メモリにおける前記計測されたビジー時間と前記選択メモリを除く前記複数のメモリにおける前記リクエストおよび前記データの転送に要する時間の合計とを略等しくするクロック信号調整手順と
を具備するメモリ制御方法。
【符号の説明】
【０１００】
１００  ホストコンピュータ
２００  メモリコントローラ
２１０  ＳＲＡＭ
２２０  プロセッサ
２３０  ホストインターフェース
２４０  クロック信号調整部
２４１  クロック信号調整制御部
２４２  ＰＬＬ
２５０  ビジー時間計測部
２５１、２５７、２５８  ビジー時間計測制御部
２５２〜２５６  タイマ
２６０  メモリインターフェース
３００  メモリ装置
３１０、３２０、３３０、３４０  メモリ
【図１】
0006627346.tif 000002
【図２】
0006627346.tif 000003
【図３】
0006627346.tif 000004
【図４】
0006627346.tif 000005
【図５】
0006627346.tif 000006
【図６】
0006627346.tif 000007
【図７】
0006627346.tif 000008
【図８】
0006627346.tif 000009
【図９】
0006627346.tif 000010
【図１０】
0006627346.tif 000011
【図１１】
0006627346.tif 000012
【図１２】
0006627346.tif 000013
【図１３】
0006627346.tif 000014
【図１４】
0006627346.tif 000015
【図１５】
0006627346.tif 000016
【図１６】
0006627346.tif 000017
【図１７】
0006627346.tif 000018
【図１８】
0006627346.tif 000019
【図１９】
0006627346.tif 000020