(57)【要約】【課題】メモリクロック以下の周波数で動作して効率良く複数のコマンドを生成する。【解決手段】リクエスト生成部３１０は、ＳＤＲＡＭ１２０に対してアクセスを要求するためのメモリリクエストを生成する。Ｒリクエストキュー３２０は、メモリリクエストのうちオペコード、行アドレス、バンク番号を行選択情報として保持する。Ｃリクエストキュー３３０は、メモリリクエストのうちオペコード、行アドレス、バンク番号、データ長を列選択情報として保持する。コマンド生成部３５０は、行選択情報と、列選択情報と、メモリバンクの状態を示すメモリバンク情報とに基づいてＳＤＲＡＭ１２０に関する動作を指示する複数のコマンドを生成する。同期セレクタ部２２０は、その生成された複数のコマンドをメモリクロックに合わせて整列してメモリクロックと同じ周波数のコマンドを生成する。【選択図】図１
2010231495.tif 000002
【特許請求の範囲】
【請求項１】
メモリバンク毎に制御されるメモリに対するデータアクセス要求からメモリリクエストを生成するリクエスト生成部と、
前記メモリリクエストにおけるオペコードと前記メモリバンクを指定するメモリバンク番号と前記メモリバンクにおける行アドレスを指定する行アドレスとを行選択情報として前記メモリリクエストの入力順序を維持しながら複数保持する行選択情報保持部と、
前記メモリリクエストにおける前記オペコードと前記メモリバンク番号と前記メモリバンクにおける列アドレスを指定する列アドレスと前記メモリリクエストによりアクセスするデータのデータ長とを列選択情報として前記メモリリクエストの入力順序を維持しながら複数保持する列選択情報保持部と、
前記メモリの動作状態を前記メモリバンク毎にメモリバンク情報として管理するメモリバンク情報管理部と、
前記行選択情報と前記列選択情報と前記メモリバンク情報とに基づいて前記メモリバンクに関する動作を指示するコマンドを前記メモリのメモリクロック以下の周波数で複数生成するコマンド生成部と、
前記複数生成されたコマンドを前記メモリクロックに合わせて整列するコマンド整列部と
を備えるメモリ制御装置。
【請求項２】
前記コマンド生成部は、前記メモリクロックの１／Ｎ（Ｎは２以上の整数）の周波数でＮ個の前記コマンドを生成する請求項１記載のメモリ制御装置。
【請求項３】
前記リクエスト生成部は、前記データアクセス要求の前記データ長に応じてバースト長単位の前記メモリリクエストを生成する請求項１記載のメモリ制御装置。
【請求項４】
前記リクエスト生成部は、前記行選択情報保持部および前記列選択情報保持部の両者に空きがある場合には新たなメモリリクエストを前記行選択情報保持部および前記列選択情報保持部の両者に入力させる請求項１記載のメモリ制御装置。
【請求項５】
前記行選択情報保持部は、前記行選択情報を先入れ先出しするキューで構成され、
前記コマンド生成部は、前記コマンドのうち前記行アドレスを指定するコマンドを前記行選択情報に基づいて生成した場合または前記行選択情報が指定する前記行アドレスと前記メモリバンクにおいてデータアクセスの対象に指定されている前記行アドレスとが一致する場合には前記行選択情報保持部が保持する前記行選択情報を前記行選択情報保持部から取り出す請求項１記載のメモリ制御装置。
【請求項６】
前記列選択情報保持部は、前記列選択情報を先入れ先出しするキューで構成され、
前記コマンド生成部は、前記列選択情報に基づいて前記コマンドのうち前記列アドレスを指定するコマンドを生成した場合には前記列選択情報保持部が保持する前記列選択情報を前記列選択情報保持部から取り出す請求項１記載のメモリ制御装置。
【請求項７】
前記コマンドのうち前記行アドレスを指定するコマンドの生成を前記コマンド生成部が待機している場合には前記行選択情報を前記行選択情報部から取り出して待機行選択情報として保持する待機情報保持部をさらに備え、
前記コマンド生成部は、前記行選択情報部に保持された入力順序の最も古い前記行選択情報と前記待機行選択情報と前記列選択情報と前記メモリバンク情報とに基づいて前記コマンドを生成する請求項１記載のメモリ制御装置。
【請求項８】
前記リクエスト生成部は、前記メモリリクエストの順番であるリクエスト識別子を付して前記メモリリクエストを供給し、
前記行選択情報保持部は、前記行選択情報としてさらに前記リクエスト識別子を保持し、
前記列選択情報保持部は、前記列選択情報としてさらに前記リクエスト識別子を保持し、
前記コマンド生成部は、前記行選択情報の前記リクエスト識別子と前記列選択情報の前記リクエスト識別子との差分が所定の値より高い場合には前記コマンドのうち前記列アドレスを指定するコマンドを他のコマンドより優先して生成する請求項１記載のメモリ制御装置。
【請求項９】
前記コマンド生成部が生成する前記複数のコマンドを前記コマンド生成部の周波数を維持したままタイミングを合わせて前記コマンド整列部に出力するコマンド同期出力部をさらに備える請求項１記載のメモリ制御装置。
【請求項１０】
メモリに対する動作を指示するコマンドを生成するためのオペコードと列アドレスおよび行アドレスとを供給する動作指示供給部と、
前記コマンドを生成するための前記行アドレスを行選択情報として保持する行選択情報保持部と、
前記オペコードおよび前記列アドレスを列選択情報として保持する列選択情報保持部と、
前記メモリのアクティブ状態にある行アドレスおよび前記コマンドを生成可能なタイミングを保持するメモリ情報を管理するメモリ情報管理部と、
前記コマンドのうち前記メモリから前記行アドレスに対応する行データを読み出すコマンドを前記メモリ情報および前記行選択情報に基づいて生成するとともに前記コマンドのうち前記行データから前記列アドレスに対応するデータを読み出すコマンドを前記メモリ情報および前記列選択情報に基づいて生成することによって、前記コマンドを前記メモリのメモリクロック以下の周波数で複数生成するコマンド生成部と、
前記複数生成されたコマンドを前記メモリクロックに合わせて整列するコマンド整列部と
を備えるメモリ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ制御装置に関し、特に複数のコマンドを同時に生成するメモリ制御装置に関する。
【背景技術】
【０００２】
従来、ＤＲＡＭ（Dynamic Random Access Memory）に対するアクセスを制御するメモリコントローラとして、ＤＲＡＭのメモリクロックと同じ周波数で動作してＤＲＡＭに対するコマンドを生成するメモリコントローラが用いられている。近年、演算処理装置におけるメモリクロックの高速化により、メモリクロックよりも遅い周波数でコマンドを生成するメモリコントローラが求められている。このメモリコントローラとして、メモリクロックの１／２N（Ｎは２以上の整数）の周波数で動作して、ＤＲＡＭに対するコマンドを供給する制御信号を２N相発行するメモリコントローラが提案されている（例えば、特許文献１参照。）。このメモリコントローラは、メモリクロックの１／２Nの周波数で動作してＤＲＡＭに関する動作を指示する制御信号を２N相発行し、メモリインタフェース回路において１相に変換している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−２２５７７５号公報（図１）
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記の従来技術では、２相の制御信号をＮ組発行することによって、メモリクロックの１／２Nの周波数でメモリコントローラを動作させることができる。しかしながら、このようなメモリコントローラは、２相の制御信号の１相目または２相目のいずれかでＮＯＰ（No OPeration）コマンドを生成する。このため、１相に変換した場合には、２サイクルに１つのＮＯＰコマンドが生成されるため、ＤＲＡＭの状態を遷移させるためのコマンドを３つ以上連続して発行することができない。これにより、ＤＲＡＭのメモリクロックと同じ周波数で動作してＤＲＡＭに対するコマンドを生成するメモリコントローラと比べてコマンドの発行が遅れるという問題が生じる。
【０００５】
そこで、本発明はこのような状況に鑑みてなされたものであり、メモリクロック以下の周波数で効率良く複数のコマンドを生成することを目的としている。
【課題を解決するための手段】
【０００６】
本発明は、上記課題を解決するためになされたものであり、その第１の側面は、メモリバンク毎に制御されるメモリに対するデータアクセス要求からメモリリクエストを生成するリクエスト生成部と、上記メモリリクエストにおけるオペコードと上記メモリバンクを指定するメモリバンク番号と上記メモリバンクにおける行アドレスを指定する行アドレスとを行選択情報として上記メモリリクエストの入力順序を維持しながら複数保持する行選択情報保持部と、上記メモリリクエストにおける上記オペコードと上記メモリバンク番号と上記メモリバンクにおける列アドレスを指定する列アドレスと上記メモリリクエストによりアクセスするデータのデータ長とを列選択情報として上記メモリリクエストの入力順序を維持しながら複数保持する列選択情報保持部と、上記メモリの動作状態を上記メモリバンク毎にメモリバンク情報として管理するメモリバンク情報管理部と、上記行選択情報と上記列選択情報と上記メモリバンク情報とに基づいて上記メモリバンクに関する動作を指示するコマンドを上記メモリのメモリクロック以下の周波数で複数生成するコマンド生成部と、上記複数生成されたコマンドを上記メモリクロックに合わせて整列するコマンド整列部とを備えるメモリ制御装置である。これにより、メモリバンクに関する動作を指示するコマンドをメモリクロック以下の周波数で複数生成させるという作用をもたらす。
【０００７】
また、この第１の側面において、上記コマンド生成部は、上記メモリクロックの１／Ｎ（Ｎは２以上の整数）の周波数でＮ個の上記コマンドを生成するようにしてもよい。これにより、上記メモリクロックの１／Ｎの周波数でＮ個のコマンドを生成させるという作用をもたらす。
【０００８】
また、この第１の側面において、上記リクエスト生成部は、上記データアクセス要求の上記データ長に応じてバースト長単位の上記メモリリクエストを生成するようにしてもよい。これにより、バースト長単位のメモリリクエストを生成させるという作用をもたらす。
【０００９】
また、この第１の側面において、上記リクエスト生成部は、上記行選択情報保持部および上記列選択情報保持部の両者に空きがある場合には新たなメモリリクエストを上記行選択情報保持部および上記列選択情報保持部の両者に入力させるようにしてもよい。これにより、行選択情報保持部および列選択情報保持部の両者に空きがある場合には新たなメモリリクエストを行選択情報保持部および列選択情報保持部の両者に入力させるという作用をもたらす。
【００１０】
また、この第１の側面において、上記行選択情報保持部は、上記行選択情報を先入れ先出しするキューで構成され、上記コマンド生成部は、上記コマンドのうち上記行アドレスを指定するコマンドを上記行選択情報に基づいて生成した場合または上記行選択情報が指定する上記行アドレスと上記メモリバンクにおいてデータアクセスの対象に指定されている上記行アドレスとが一致する場合には上記行選択情報保持部が保持する上記行選択情報を上記行選択情報保持部から取り出すようにしてもよい。これにより、行アドレスを指定するコマンドを最前の行選択情報に基づいて生成した場合および入力順序の最も古い行選択情報が指定する行アドレスとメモリバンクにおいてデータアクセスの対象に指定されている行アドレスとが一致する場合には行選択情報保持部から入力順序の最も古い行選択情報を取り出させるという作用をもたらす。
【００１１】
また、この第１の側面において、列選択情報保持部は、上記列選択情報を先入れ先出しするキューで構成され、上記コマンド生成部は、上記列選択情報に基づいて上記コマンドのうち上記列アドレスを指定するコマンドを生成した場合には上記列選択情報保持部が保持する上記列選択情報を上記列選択情報保持部から取り出すようにしてもよい。これにより、上記列アドレスを指定するコマンドを入力順序の最も古い列選択情報に基づいて生成した場合には列選択情報保持部から入力順序の最も古い列選択情報を取り出させるという作用をもたらす。
【００１２】
また、この第１の側面において、上記コマンドのうち上記行アドレスを指定するコマンドの生成を上記コマンド生成部が待機している場合には上記行選択情報を上記行選択情報部から取り出して待機行選択情報として保持する待機情報保持部をさらに備え、上記コマンド生成部は、上記行選択情報部に保持された入力順序の最も古い上記行選択情報と上記待機行選択情報と上記列選択情報と上記メモリバンク情報とに基づいて上記コマンドを生成するようにしてもよい。これにより、待機行選択情報と行選択情報と列選択情報とメモリバンク情報とに基づいてコマンドを生成させるという作用をもたらす。
【００１３】
また、この第１の側面において、上記リクエスト生成部は、上記メモリリクエストの順番であるリクエスト識別子を付して上記メモリリクエストを供給し、上記行選択情報保持部は、上記行選択情報としてさらに上記リクエスト識別子を保持し、上記列選択情報保持部は、上記列選択情報としてさらに上記リクエスト識別子を保持し、上記コマンド生成部は、上記行選択情報の上記リクエスト識別子と上記列選択情報の上記リクエスト識別子との差分が所定の値より高い場合には上記コマンドのうち上記列アドレスを指定するコマンドを他のコマンドより優先して生成するようにしてもよい。これにより、行選択情報のリクエスト識別子と列選択情報のリクエスト識別子との差分が所定の値より高い場合には列アドレスを指定するコマンドを他のコマンドより優先して生成させるという作用をもたらす。
【００１４】
また、この第１の側面において、上記コマンド生成部が生成する上記複数のコマンドを上記コマンド生成部の周波数を維持したままタイミングを合わせて上記コマンド整列部に出力するコマンド同期出力部をさらに備えるようにしてもよい。これにより、コマンド生成部が生成した複数のコマンドをコマンド生成部の周波数を維持したままタイミングを合わせて出力させるという作用をもたらす。
【００１５】
また、本発明の第２の側面は、メモリに対する動作を指示するコマンドを生成するためのオペコードと列アドレスおよび行アドレスとを供給する動作指示供給部と、上記コマンドを生成するための上記行アドレスを行選択情報として保持する行選択情報保持部と、上記オペコードおよび上記列アドレスを列選択情報として保持する列選択情報保持部と、上記メモリのアクティブ状態にある行アドレスおよび上記コマンドを生成可能なタイミングを保持するメモリ情報を管理するメモリ情報管理部と、上記コマンドのうち上記メモリから上記行アドレスに対応する行データを読み出すコマンドを上記メモリ情報および上記行選択情報に基づいて生成するとともに上記コマンドのうち上記行データから上記列アドレスに対応するデータを読み出すコマンドを上記メモリ情報および上記列選択情報に基づいて生成することによって、上記コマンドを上記メモリのメモリクロック以下の周波数で複数生成するコマンド生成部と、上記複数生成されたコマンドを上記メモリクロックに合わせて整列するコマンド整列部とを備えるメモリ制御装置である。これにより、メモリに関する動作を指示するコマンドをメモリクロック以下の周波数で複数生成させるという作用をもたらす。
【発明の効果】
【００１６】
本発明によれば、メモリクロック以下の周波数で動作して効率良く複数のコマンドを生成することができるという優れた効果を奏し得る。
【図面の簡単な説明】
【００１７】
【図１】本発明の第１の実施の形態におけるメモリ制御装置１００の第１の構成例を示すブロック図である。
【図２】本発明の第１の実施の形態におけるＳＤＲＡＭ１２０のステートダイアグラムである。
【図３】本発明の第１の実施の形態におけるリクエスト生成部３１０の動作例を示すタイミングチャートである。
【図４】本発明の第１の実施の形態における状態管理部３４０が管理するメモリバンク情報の例を示す一覧表である。
【図５】図５は、本発明の第１の実施の形態においてコマンド生成部３５０が各コマンドを生成するために判定する内容の例を示す一覧表である。
【図６】本発明の第１の実施の形態において状態管理部３４０におけるメモリバンク情報の更新の例を示す一覧表である。
【図７】本発明の第１の実施の形態においてコマンド決定部３００の動作例を示すタイミングチャートである。
【図８】Ｔ＝０乃至Ｔ＝２のサイクルにそれぞれ対応するコマンド生成部３５０の動作を示す模式図である。
【図９】Ｔ＝３、Ｔ＝７、Ｔ＝８のサイクルにそれぞれ対応するコマンド生成部３５０の動作を示す模式図である。
【図１０】Ｔ＝１０、Ｔ＝１３のサイクルにそれぞれ対応するコマンド生成部３５０の動作を示す模式図である。
【図１１】本発明の第１の実施の形態においてメモリコントローラ２００の動作例を示すタイミングチャートである。
【図１２】本発明の第２の実施の形態におけるメモリ制御装置１００の構成例を示すブロック図である。
【図１３】本発明の第２の実施の形態においてコマンド決定部３００の動作例を示すタイミングチャートである。
【図１４】本発明の第２の実施の形態におけるＴ＝０乃至Ｔ＝２のそれぞれのサイクルにおけるコマンド生成部３５０の動作を示す模式図である。
【図１５】本発明の第２の実施の形態におけるＴ＝３、Ｔ＝１０、Ｔ＝１９のそれぞれのサイクルにおけるコマンド生成部３５０の動作を示す模式図である。
【図１６】本発明の第１および第２の実施の形態においてプリチャージコマンドＰＲＥを優先してコマンド衝突を回避するとデータの読み出しの効率が良くなる場合のコマンド衝突回避例を示すタイミングチャートである。
【図１７】本発明の第１および第２の実施の形態においてＲＥＡＤを優先してコマンド衝突を回避するとデータの読み出しの効率が良くなる場合のコマンド衝突回避例を示すタイミングチャートである。
【図１８】本発明の第３の実施の形態におけるリクエスト生成部３１０の動作例を示すタイミングチャートである。
【図１９】本発明の第３の実施の形態におけるコマンド生成部３５０がコマンド衝突回避動作をするために判断する内容の一例を示す一覧表である。
【図２０】本発明の第３の実施の形態においてプリチャージコマンドＰＲＥの発行を優先させる判断をする場合におけるコマンド生成部３５０の動作を示す模式図である。
【図２１】本発明の第３の実施の形態においてＲＥＡＤの発行を優先させる判断をする場合におけるコマンド生成部３５０の動作を示す模式図である。
【発明を実施するための形態】
【００１８】
以下、本発明を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（ＤＲＡＭ制御：メモリクロックの２分の１の周波数で動作するメモリコントローラの例）
２．第２の実施の形態（ＤＲＡＭ制御：行選択情報を取り出して待機行選択情報として保持するＨリクエストキューを備えるコマンド決定部の例）
３．第３の実施の形態（ＤＲＡＭ制御：メモリリクエストにリクエストＩＤを付加するコマンド決定部の例）
【００１９】
＜１．第１の実施の形態＞
［メモリ制御装置の第１の構成例］
図１は、本発明の第１の実施の形態におけるメモリ制御装置１００の構成例を示すブロック図である。ここでは、ＳＤＲＡＭ（Syncronous DRAM）１２０のメモリクロックの１／２の周波数で２つのコマンドを同時に生成するメモリコントローラ２００の例について説明をする。
【００２０】
メモリ制御装置１００は、メモリコントローラ２００およびＳＤＲＡＭ１２０を備える。メモリコントローラ２００は、ＳＤＲＡＭ１２０に関する動作の指示を行うものである。メモリコントローラ２００は、コマンド決定部３００と、同期セレクタ部２２０と、メモリクロックコマンド出力部２３０と、データバッファ２４０と、メモリインタフェース２５０とを備える。
【００２１】
コマンド決定部３００は、信号線１０９を介して供給されるデータアクセス要求に基づいて、ＳＤＲＡＭ１２０に関する動作の指示を行うためのコマンドを決定するものである。ここにいうデータアクセス要求とは、ＳＤＲＡＭ１２０に対してデータの読み書きを要求するための信号である。このコマンド決定部３００は、リクエスト生成部３１０と、Ｒリクエストキュー３２０と、Ｃリクエストキュー３３０と、状態管理部３４０と、コマンド生成部３５０と、コマンド同期出力部５００とを備える。
【００２２】
リクエスト生成部３１０は、データアクセス要求を結合および分割することによって、メモリリクエストを生成するものである。メモリリクエストとは、ＳＤＲＡＭ１２０に関する動作をバースト長単位で指示するためにデータアクセス要求をバースト長単位に整形したものである。このリクエスト生成部３１０は、例えば、データ長がバースト長よりも長いデータアクセス要求を分割して、複数のバースト長単位のメモリリクエストを生成する。また、このリクエスト生成部３１０は、例えば、データ長がバースト長よりも短い連続したデータに関するデータアクセス要求を結合してバースト長単位のメモリリクエストを生成する。このリクエスト生成部３１０は、Ｒリクエストキュー３２０およびＣリクエストキュー３３０の両者に空きがある場合には、その生成したメモリリクエストをＲリクエストキュー３２０およびＣリクエストキュー３３０の両者に信号線３１９を介して供給する。なお、リクエスト生成部３１０は、特許請求の範囲に記載のリクエスト生成部および動作指示供給部の一例である。
【００２３】
Ｒリクエストキュー３２０は、メモリコントローラ２００がＳＤＲＡＭ１２０に供給する行（Row）アドレスを指定するコマンドを生成するための行選択情報を保持するものである。このＲリクエストキュー３２０は、リクエスト生成部３１０から供給されたメモリリクエストのうち、行アドレスを指定するコマンドを生成するために必要な情報を行選択情報としてメモリリクエストの順序を維持しながら保持する。このＲリクエストキュー３２０は、例えば、先入れ先出しするＦＩＦＯ（First-In First-Out）タイプのキューにより構成される。このＲリクエストキュー３２０が保持する行選択情報のうち、入力順序の最も古い行選択情報（ここでは、Ｒリクエストと称す。）が、コマンド生成部３５０に対して出力される。また、このＲリクエストは、コマンド生成部３５０においてＲリクエストに基づいて行アドレスを指定するコマンドが生成された場合には、コマンド生成部３５０により取り出されて削除される。また、このＲリクエストは、Ｒリクエストが指定するメモリバンクの行アドレスとそのメモリバンクにおいてデータアクセスの対象に指定されている行アドレスとが一致する場合には、コマンド生成部３５０により取り出されることによって削除される。そして、入力順序の最も古い行選択情報が新たなＲリクエストとしてコマンド生成部３５０に対して出力される。なお、Ｒリクエストキュー３２０は、特許請求の範囲に記載の行選択情報保持部の一例である。
【００２４】
Ｃリクエストキュー３３０は、メモリコントローラ２００がＳＤＲＡＭ１２０に供給する列（Column）アドレスを指定するコマンドを生成するための列選択情報を保持するものである。このＣリクエストキュー３３０は、リクエスト生成部３１０から供給されたメモリリクエストのうち、列アドレスを指定するコマンドを生成するために必要な情報を列選択情報としてメモリリクエストの順序を維持しながら保持する。Ｃリクエストキュー３３０は、例えば、先入れ先出しするＦＩＦＯタイプのキューにより構成される。このＣリクエストキュー３３０が保持する列選択情報のうち、入力順序の最も古い列選択情報（ここでは、Ｃリクエストという。）は、コマンド生成部３５０に対して出力される。また、このＣリクエストは、コマンド生成部３５０においてＣリクエストに基づいて列アドレスを指定するコマンドが生成された場合には、コマンド生成部３５０により取り出されて削除される。そして、入力順序の最も古い列選択情報が新たなＣリクエストとしてコマンド生成部３５０に対して出力される。なお、Ｃリクエストキュー３３０は、特許請求の範囲に記載の列選択情報保持部の一例である。
【００２５】
状態管理部３４０は、ＳＤＲＡＭ１２０の動作状態を示すメモリバンク情報を管理するものである。この状態管理部３４０は、例えば、メモリバンクにおけるアクセス対象の行の状態の情報と、各バンクにおいてコマンドが発行可能になるまでの待ち時間情報とをメモリバンク情報としてメモリバンク毎にそれぞれ管理する。この状態管理部３４０は、コマンド生成部３５０においてコマンドが生成された場合には、メモリバンク情報のうちそのコマンドに関連する情報を更新する。また、この状態管理部３４０は、カウントダウンタイマーを備えており、メモリバンク情報の待ち時間情報を減算していくことによってコマンドの発行が可能となる時刻を提示する。
【００２６】
この状態管理部３４０は、例えば、コマンド生成部３５０の周波数であるコントローラクロックのサイクル毎にコマンドが発行可能になるまでの各待ち時間情報をＮずつ減算する。ここで、Ｎはコマンド生成部３５０において同時に生成可能なコマンドの最大数を表す。この実施の形態においては、同時に生成可能なコマンドの最大数Ｎが「２」であるものとして説明する。これにより、状態管理部３４０は、コントローラクロックのサイクル毎にコマンドが発行可能になるまでの待ち時間情報を２ずつ減算する。この状態管理部３４０は、メモリバンク情報を、信号線３４９を介してコマンド生成部３５０に供給する。なお、状態管理部３４０は、特許請求の範囲に記載のメモリバンク情報管理部およびメモリ情報管理部の一例である。
【００２７】
コマンド生成部３５０は、メモリコントローラ２００がＳＤＲＡＭ１２０に供給するコマンドを生成するものである。このコマンド生成部３５０は、信号線３２９を介して入力される行選択情報と、信号線３３９を介して入力される列選択情報と、信号線３４９を介して入力されるメモリバンク情報とに基づいてＳＤＲＡＭ１２０に関する動作を指示するコマンドを生成する。このコマンド生成部３５０は、ＳＤＲＡＭ１２０に関する動作を指示するコマンドをＳＤＲＡＭ１２０のメモリクロック以下の周波数で複数生成する。例えば、このコマンド生成部３５０は、メモリクロックの１／Ｎの周波数でＮ個のコマンドを生成する。ここでは、コマンド生成部３５０は、メモリクロックの１／２の周波数で動作し、２つのコマンドを第１コマンドおよび第２コマンドとして同時に生成するものとする。このコマンド生成部３５０は、同時に生成した第１コマンドおよび第２コマンドを、信号線３５９および信号線３５８を介してコマンド同期出力部５００に供給する。このコマンド生成部３５０は、コマンドを生成したことを知らせる情報を、信号線３５７を介して状態管理部３４０に供給する。なお、このコマンド生成部３５０は、同時に生成するコマンドの個数に応じた組の信号線を介して、コマンド同期出力部５００にコマンドを供給する。なお、このコマンド生成部３５０は、生成した複数のコマンドをメモリインタフェース２５０に供給するようにしてもよい。なお、コマンド生成部３５０は、特許請求の範囲に記載のコマンド生成部の一例である。
【００２８】
コマンド同期出力部５００は、コマンド生成部３５０から供給された複数のコマンドを、コマンド生成部３５０の周波数であるコントローラクロックの周波数を維持したまま、複数のコマンドのタイミングを合わせて出力するものである。このコマンド同期出力部５００は、タイミングを合わせた複数のコマンドを同期セレクタ部２２０に供給する。このコマンド同期出力部５００は、第１コマンド出力部５１０および第２コマンド出力部５２０を備える。なお、このコマンド同期出力部５００は、コマンド生成部３５０から供給されるコマンドの個数に応じた数の第１コマンド出力部５１０および第２コマンド出力部５２０を備える。なお、コマンド同期出力部５００は、特許請求の範囲に記載のコマンド同期出力部の一例である
【００２９】
第１コマンド出力部５１０は、信号線３５９を介して供給される第１コマンドを一時的に保持するものである。この第１コマンド出力部５１０には、第２コマンド出力部５２０と共通のクロックが供給されており、このクロックに第１コマンドのタイミングを合わせて出力する。この第１コマンド出力部５１０は、第２コマンドと周波数のタイミングを合わせた第１コマンドを同期セレクタ部２２０に信号線３０９を介して供給する。
【００３０】
第２コマンド出力部５２０は、信号線３５８を介して供給される第２コマンドを一時的に保持するものである。この第２コマンド出力部５２０には、第１コマンド出力部５１０と共通のクロックが供給されており、このクロックに第２コマンドのタイミングを合わせて出力する。この第２コマンド出力部５２０は、第１コマンドと周波数のタイミングを合わせた第２コマンドを同期セレクタ部２２０に信号線３０８を介して供給する。
【００３１】
同期セレクタ部２２０は、コマンド決定部３００から供給される複数のコマンドをメモリクロックに合わせて整列させるものである。この同期セレクタ部２２０は、同時に供給される複数のコマンドを予め定めた順序で整列することによって、メモリクロックの１／Ｎの周波数のＮ個のコマンドからメモリクロックと同じ周波数のコマンドを生成する。この同期セレクタ部２２０は、コマンド決定部３００から供給される２つのコマンドのうち、信号線３０９から供給される第１コマンドが先になるように交互に整列させて、メモリクロックと同じ周波数のタイミングに合わせてコマンドを生成する。この同期セレクタ部２２０は、生成したコマンドをメモリクロックコマンド出力部２３０に信号線２２９を介して供給する。なお、同期セレクタ部２２０は、特許請求の範囲に記載のコマンド整列部の一例である。
【００３２】
メモリクロックコマンド出力部２３０は、同期セレクタ部２２０から供給されるメモリクロックと同じ周波数のコマンドをメモリクロックのタイミングと合わせて出力するものである。このメモリクロックコマンド出力部２３０は、このメモリクロックとタイミングを合わせたコマンドをメモリインタフェース２５０に供給する。
【００３３】
データバッファ２４０は、データアクセス要求による読み書きの対象データを一時的に保持するものである。このデータバッファ２４０は、データアクセス要求によりＳＤＲＡＭ１２０に書き込むべきデータが信号線１０８を介して供給された場合には、書き込むデータをメモリクロックコマンドとタイミングを合わせてメモリインタフェース２５０に供給する。このデータバッファ２４０は、データアクセス要求によりＳＤＲＡＭ１２０から読み出されたデータを保持する場合には、信号線１０８を介してそのデータをデータアクセス要求の発行元の装置に出力する。
【００３４】
メモリインタフェース２５０は、メモリコントローラ２００とＳＤＲＡＭ１２０との間のデータ伝送を行うものである。このメモリインタフェース２５０は、データをＳＤＲＡＭ１２０に書き込む場合には、コマンドおよびデータをアドレス／コマンドバス２０９およびメモリバス２０８を介してＳＤＲＡＭ１２０に出力する。このメモリインタフェース２５０は、データをＳＤＲＡＭ１２０から読み出す場合には、コマンドをアドレス／コマンドバス２０９を介してＳＤＲＡＭ１２０に出力し、これにより読み出されたデータをメモリバス２０８を介して受け取る。なお、このメモリインタフェース２５０は、同期セレクタ部２２０の機能を有するメモリインタフェース２５０を用いることにより、コマンド生成部３５０からメモリクロックと同じ周波数の複数のコマンドが供給されるように構成してもよい。
【００３５】
ＳＤＲＡＭ１２０は、メモリコントローラ２００が動作を指示することによってデータの読出し、および、データの書込みを行うことができる記憶装置である。このＳＤＲＡＭ１２０は、メモリセルと呼ばれる１ビットを記憶する素子の集合体である。このＳＤＲＡＭ１２０は、メモリバンクと呼ばれる一定量のメモリセルの集合体を複数備えるように構成することができる。このＳＤＲＡＭ１２０は、例えば、一般的なパーソナルコンピュータに関しては、ＤＤＲ２  ＳＤＲＡＭ（Double Data Rate 2 SDRAM）やＤＤＲ３  ＳＤＲＡＭなどが考えられる。なお、ＳＤＲＡＭ１２０は、特許請求の範囲に記載のメモリの一例である。
【００３６】
［ＤＤＲ２  ＳＤＲＡＭの動作例］
図２は、本発明の第１の実施の形態におけるＳＤＲＡＭ１２０のステートダイアグラムである。なお、ここでは、ＳＤＲＡＭ１２０はＤＤＲ２  ＳＤＲＡＭであるとして説明する。
【００３７】
電源が投入されると、ＳＤＲＡＭ１２０は初期化動作を経て初期化（Initialize）状態からアイドル（Idle）状態に遷移する。
【００３８】
その後、ＭＲＳ（Mode Registers Set）およびＥＭＲＳ（Extended Mode Registers Set）の状態において、ＤＲＡＭのバースト長やレイテンシなどの各種動作モードの設定が行われる。
【００３９】
アイドル状態において行アドレスを指定するアクティブコマンド（ＡＣＴ）が発行されると、ＳＤＲＡＭ１２０は、アイドル状態からアクティベイティング状態を介してバンクアクティブ状態に遷移する。このバンクアクティブ状態では、ＡＣＴが指定する行アドレスのメモリセルが保持するデータをＳＤＲＡＭ１２０が備える一時的な記憶装置に全て読み出す。このとき、アクティベイティング状態からバンクアクティブの遷移はＤＤＲ２側で自動的に行われる。なお、アクティブコマンドは、特許請求の範囲に記載の行アドレスを指定するコマンドの一例である。
【００４０】
その後、列アドレスを指定するライトコマンド（ＷＲＩＴＥ）が発行されると、ＳＤＲＡＭ１２０はライト状態に遷移して、ライトレイテンシの時間が経過した後にライトデータがメモリに保存される。このライト状態では、ライトデータを行アドレスのデータを保持しているＳＤＲＡＭ１２０の一時的な記憶装置に列アドレスが指定するメモリセルを始点にして書き込むことによって、ライトデータを保存する。ライトデータの保存が完了すると、ライトリカバリの時間を経て、プリチャージをした後、アイドル状態に戻る。
【００４１】
一方、列アドレスを指定するリードコマンド（ＲＥＡＤ）が発行されると、ＳＤＲＡＭ１２０はリード状態に遷移して、リードレイテンシの時間が経過した後にリードデータがＳＤＲＡＭ１２０から出力される。このリード状態では、リードデータを行アドレスのデータを保持しているＳＤＲＡＭ１２０の一時的な記憶装置から列アドレスが指定するメモリセルを始点にして読み出すことによって、リードデータを読み出す。リードデータの出力が完了すると、リードリカバリの時間を経て、プリチャージコマンド（ＰＲＥ）を発行してプリチャージした後、アイドル状態に戻る。このプリチャージでは、ＳＤＲＡＭ１２０が備える一時的な記憶装置に保存されたデータを行アドレスが指定するメモリセルに書き込む。なお、ライトコマンドおよびリードコマンドは、特許請求の範囲に記載の列アドレスを指定するコマンドの一例である。
【００４２】
このように、ＳＤＲＡＭ１２０は、コマンド生成部３５０からの動作に関するコマンドに応じて、状態を遷移させる。メモリコントローラ２００は、信号線１０９を介して供給されるデータアクセス要求に基づいてそのＳＤＲＡＭ１２０の動作に関するコマンドを生成する。
【００４３】
［リクエスト生成部の動作例］
図３は、本発明の第１の実施の形態におけるリクエスト生成部３１０の動作例を示すタイミングチャートである。ここでは、横軸を共通の時間軸として、信号線１０９、バースト長を４（ＢＬ＝４）と設定した場合の信号線３１９およびバースト長を８（ＢＬ＝８）と設定した場合の信号線３１９における信号を表している。また、ここでは、リクエスト生成部３１０は、メモリクロックが４００ＭＨｚのＤＤＲ２  ＳＤＲＡＭ（ＤＤＲ２−８００）の動作を制御するメモリコントローラ２００におけるリクエスト生成部３１０を想定する。
【００４４】
信号線１０９において、オペコードは、データアクセス要求のうちＳＤＲＡＭ１２０に対する命令の信号を、ｉ＿ａｄｒｅｓｓは、データアクセス要求のうち命令によりアクセスが開始されるメモリセルのアドレスを示す信号を表している。また、信号線１０９において、ｉ＿ｌｅｎｇｔｈはデータアクセス要求のうち命令によりアクセスするデータを示す。ここでは、ｉ＿ｌｅｎｇｔｈは、メモリクロック長単位により示す。すなわち、ＤＤＲ２−８００においてｉ＿ｌｅｎｇｔｈが「５」の場合には、１０ビットのデータを表す。
【００４５】
「ＢＬ＝４」および「ＢＬ＝８」と設定した場合の信号線３１９において、オペコードは、メモリリクエストのうちＳＤＲＡＭ１２０に対する命令の信号を示し、ｏ＿ｂａｎｋは、メモリリクエストのうちアクセスするバンクを指定するバンク番号の信号を示す。また、信号線３１９において、ｏ＿ｒｏｗは、メモリリクエストのうちアクセスが開始されるメモリセルの行アドレスを指定する信号を示し、ｏ＿ｃｏｌｕｍｎは、メモリリクエストのうちアクセスが開始されるメモリセルの列アドレスを指定する信号を示す。また、信号線３１９において、ｏ＿ｌｅｎｇｔｈはメモリリクエストのうち命令によりアクセスするデータのビット長を示す。ここでは、ｏ＿ｌｅｎｇｔｈは、メモリクロック長単位により示されている。ｏ＿ｌｅｎｇｔｈは、「ＢＬ＝４」と設定した場合には、最大のメモリクロック長が「２」となる。また、ｏ＿ｌｅｎｇｔｈは、「ＢＬ＝８」と設定した場合には、最大のメモリクロック長が「４」となる。
【００４６】
なお、オペコードは、特許請求の範囲に記載のメモリリクエストにおけるオペコードおよび動作指示供給部が供給するオペコードの一例である。ｏ＿ｂａｎｋは、特許請求の範囲に記載のメモリリクエストにおけるメモリバンク番号の一例である。ｏ＿ｒｏｗは、特許請求の範囲に記載のメモリリクエストにおける行アドレスおよび動作指示供給部が供給する行アドレスの一例である。ｏ＿ｃｏｌｕｍｎは、特許請求の範囲に記載のメモリリクエストにおける列アドレスおよび動作指示供給部が供給する列アドレスの一例である。ｏ＿ｌｅｎｇｔｈは特許請求の範囲に記載のメモリリクエストにおけるデータ長の一例である。
【００４７】
「ＢＬ＝４」と設定した場合のリクエスト生成部３１０は、信号線１０９を介して、ｉ＿ｌｅｎｇｔｈが「５」のデータアクセス要求が入力されると、ｏ＿ｌｅｎｇｔｈが「２」のメモリリクエストを２つ生成し、「１」のメモリリクエストを１つ生成する。また、「ＢＬ＝４」と設定した場合のリクエスト生成部３１０は、信号線１０９を介して、ｉ＿ｌｅｎｇｔｈが「２」の２つの連続するアドレスに対するデータアクセス要求が入力されると、ｏ＿ｌｅｎｇｔｈが「２」のメモリリクエストを２つ生成する。
【００４８】
「ＢＬ＝８」と設定した場合のリクエスト生成部３１０は、信号線１０９を介してｉ＿ｌｅｎｇｔｈが「５」のデータアクセス要求が入力されると、ｏ＿ｌｅｎｇｔｈが「４」のメモリリクエストを１つ生成し、「１」のメモリリクエストを１つ生成する。また、「ＢＬ＝８」と設定した場合のリクエスト生成部３１０は、信号線１０９を介してｉ＿ｌｅｎｇｔｈが「２」の２つの連続するアドレスに対するデータアクセス要求が入力されると、ｏ＿ｌｅｎｇｔｈが「４」のメモリリクエストを１つ生成する。
【００４９】
このように、リクエスト生成部３１０は、メモリリクエスト要求を結合および分割することによって、バースト長単位のメモリリクエストを生成する。また、このリクエスト生成部３１０は、ＤＲＡＭ１２０に関する動作を指示するコマンドが入力される場合には、そのまま出力する。
【００５０】
［状態管理部のメモリバンク情報例］
図４は、本発明の第１の実施の形態における状態管理部３４０が管理するメモリバンク情報の例を示す一覧表である。ここでは、左の列にはメモリバンク情報として管理される情報を保持するレジスタを示すレジスタ名が表され、右の列にはそのレジスタが保持する情報の意味が表されている。
【００５１】
ＡｃｔＦｌｇ［Ｘ］は、バンクＸにおいて行アドレスが指定されている状態（Ａｃｔｉｖｅ）なら「１」を、バンクＸにおいて行アドレスが無指定である状態（Ｉｄｌｅ）なら「０」の値を示すレジスタである。なお、このＡｃｔｉｖｅとは、図２において示したアクティベイティング状態、バンクアクティブ状態、ライト状態およびリード状態のことを示す。また、Ｉｄｌｅとは、図２において示したアイドル状態、オートリフレッシュ状態、セルフリフレッシュ状態、プリチャージ状態、ＭＲＳ状態、ＥＭＲＳ状態のことを示す。
【００５２】
ＡｃｔＲｏｗ［Ｘ］は、バンクＸがＡｃｔｉｖｅである場合には指定されている行アドレスの値を示すレジスタである。
【００５３】
ＡｃｔＣｎｔ［Ｘ］は、Ｒリクエストキュー３２０においてバンクＸの行選択情報を取り出して削除（ＰＯＰ）した場合には「１」を加算し、Ｃリクエストキュー３３０においてバンクＸの列選択情報をＰＯＰした場合には「１」を減算する値を示すレジスタである。
【００５４】
ＴｉｍＡｃｔＡｌｌは、ＳＤＲＡＭ１２０の全バンク共通であり、次にＡＣＴを発行することができるようになるまでの待ち時間をメモリクロックのサイクル数で示すレジスタである。
【００５５】
ＴｉｍＡｃｔ［Ｘ］は、バンクＸにおいて次にＡＣＴを発行することができるようになるまでの待ち時間をメモリクロックのサイクル数で示すレジスタである。
【００５６】
ＴｉｍＲｅａｄＡｌｌは、ＳＤＲＡＭ１２０の全バンク共通で次にＲＥＡＤを発行することできるようになるまでの待ち時間をメモリクロックのサイクル数で示すレジスタである。
【００５７】
ＴｉｍＲｅａｄ［Ｘ］は、バンクＸにおいて次にＲＥＡＤを発行することができるようになるまでの待ち時間をメモリクロックのサイクル数で示すレジスタである。
【００５８】
ＴｉｍＷｒｉｔｅＡｌｌは、ＳＤＲＡＭ１２０の全バンク共通で次にＷＲＩＴＥを発行することができるようになるまでの待ち時間をメモリクロックのサイクル数で示すレジスタである。
【００５９】
ＴｉｍＷｒｉｔｅ［Ｘ］は、バンクＸにおいて次にＷＲＩＴＥを発行することができるようになるまでの待ち時間をメモリクロックのサイクル数で示すレジスタである。
【００６０】
ＴｉｍＰｒｅ［Ｘ］は、バンクＸにおいて次にプリチャージコマンドＰＲＥを発行することができるようになるまでの待ち時間をメモリクロックのサイクル数で示すレジスタである。
【００６１】
ＴｉｍＡｃｔＡｌｌ、ＴｉｍＡｃｔ［Ｘ］、ＴｉｍＲｅａｄＡｌｌ、ＴｉｍＲｅａｄ［Ｘ］、ＴｉｍＷｒｉｔｅＡｌｌ、ＴｉｍＷｒｉｔｅ［Ｘ］およびＴｉｍＰｒｅ［Ｘ］は、「０」を最小値とするレジスタである。これらのレジスタは、状態管理部３４０が備えるカウントダウンタイマーにより、コマンド生成部３５０が同時に生成可能なコマンドの最大数の「Ｎ」がコントローラクロックのサイクル毎に減算される。
【００６２】
このように、状態管理部３４０は、バンクの動作情報と、コマンドが発行できるようになるまでの待ち時間情報とをメモリバンク情報としてバンク毎に保持して管理する。なお、図４で示したレジスタは、本発明の第１の実施の形態のメモリ制御装置１００を動作させるために最低限必要なレジスタを想定しており、状態管理部３４０のメモリバンク情報をこれだけに限定するものではない。
【００６３】
［コマンド生成部におけるコマンド生成判定例］
図５は、本発明の第１の実施の形態においてコマンド生成部３５０が各コマンドを生成するために判定する内容の例を示す一覧表である。ここでは、左の列にはコマンド生成部３５０がコマンドを生成するために判定する内容が表され、右の列にはその判定条件が表されている。
【００６４】
ＡＣＴ発行可能状態は、Ｒリクエストが指定するバンク（ＲａｓＲｅｑＢｎｋ）に対してコマンド生成部３５０がＡＣＴを発行するための条件を示している。このＡＣＴ発行可能状態の条件は、ＡｃｔＦｌｇ［ＲａｓＲｅｑＢｎｋ］が「０」であるとき、すなわちＩｄｌｅ状態であるときに成立する。
【００６５】
ＡＣＴ発行可能時刻は、ＡＣＴ発行可能状態の条件が成立するときに、コマンド生成部３５０がそのＡＣＴを発行するためのタイミングを示している。このＡＣＴ発行可能時刻は、ＴｉｍＲｅａｄＡｌｌがＮより小さく、かつ、ＴｉｍＡｃｔ［ＲａｓＲｅｑＢｎｋ］がＮより小さいときに成立する。ここで、Ｎはコマンド生成部３５０において同時に生成可能なコマンドの最大数を表す。
【００６６】
ＡＣＴ不要は、Ｒリクエストが指定する行アドレスに対してコマンド生成部３５０がＡＣＴを発行する必要が無い場合の条件を示している。このＡＣＴ不要は、ＡｃｔＦｌｇ［ＲａｓＲｅｑＢｎｋ］が「１」であり、かつ、ＲａｓＲｅｑＢｎｋとＡｃｔＲｏｗ［ＲａｓＲｅｑＢｎｋ］とが一致するときに成立する。
【００６７】
ＲＥＡＤ／ＷＲＩＴＥ発行可能状態は、Ｃリクエストが指定するバンク（ＣａｓＲｅｑＢｎｋ）に対してコマンド生成部３５０がＲＥＡＤまたはＷＲＩＴＥを発行するための条件を示している。このＲＥＡＤ／ＷＲＩＴＥ発行可能状態は、ＡｃｔＦｌｇ［ＣａｓＲｅｑＢｎｋ］が「１」であり、かつ、ＡｃｔＣｎｔ［ＣａｓＲｅｑＢｎｋ］が「１」以上であるときであるときに成立する。
【００６８】
ＲＥＡＤＡ（ＰＲＥ付ＲＥＡＤ）／ＷＲＩＴＥＡ（ＰＲＥ付ＷＲＩＴＥ）発行可能状態は、ＲＥＡＤ／ＷＲＩＴＥ発行後にさらに自動でプリチャージコマンドＰＲＥを発行するための条件を示している。このＲＥＡＤＡ／ＷＲＩＴＥＡ発行可能状態は、ＡｃｔＣｎｔ［ＣａｓＲｅｑＢｎｋ］が「１」であり、かつ、ＲａｓＲｅｑＢｎｋおよびＣａｓＲｅｑＢｎｋが同じであり、かつ、「ＡＣＴ不要」が不成立のときに成立する。
【００６９】
ＲＥＡＤ発行可能時刻は、ＲＥＡＤ／ＷＲＩＴＥ発行可能状態の条件が成立するときに、コマンド生成部３５０がＲＥＡＤを発行するためのタイミングを示している。ＲＥＡＤ発行可能時刻は、ＴｉｍＲｅａｄＡｌｌがＮ未満、ＴｉｍＲｅａｄ［ＣａｓＲｅｑＢｎｋ］がＮ未満、かつ、Ｃリクエストのオペコード（ＣａｓＲｅｑＯｐｃ）がＲＥＡＤのときに成立する。
【００７０】
ＷＲＩＴＥ発行可能時刻は、ＲＥＡＤ／ＷＲＩＴＥ発行可能状態の条件が成立するときに、コマンド生成部３５０がＷＲＩＴＥを発行するためのタイミングを示している。ＷＲＩＴＥ発行可能時刻は、ＴｉｍＷｒｉｔｅＡｌｌがＮ未満、ＴｉｍＷｒｉｔｅ［ＣａｓＲｅｑＢｎｋ］がＮ未満、かつ、ＣａｓＲｅｑＯｐｃがＷＲＩＴＥのときに成立する。
【００７１】
ＰＲＥ発行可能状態は、コマンド生成部３５０がバンクＸにプリチャージコマンドＰＲＥを発行するための条件を示している。このＰＲＥ発行可能状態は、バンクＸにおいて、ＡｃｔＦｌｇ［Ｘ］が「１」であり、かつ。ＡｃｔＣｎｔ［Ｘ］が「０」であり、かつ、「ＡＣＴ不要」が不成立のときに成立する。
【００７２】
ＰＲＥ発行可能時刻は、バンクＸのＰＲＥ発行可能常態の条件が成立するときに、コマンド生成部３５０がそのプリチャージコマンドＰＲＥを発行するためのタイミングを示している。このＰＲＥ発行可能時刻は、ＴｉｍＰｒｅ［Ｘ］がＮ未満のときに成立する。
【００７３】
図５において示したコマンドの発行可能状態および発行可能時刻が成立するとコマンドが発行される。この場合において、発行可能時刻が同じコマンドが２つ以上あるときには、１つのコマンドをそのタイミングで発行し、他のコマンドは遅らせる衝突回避処理を行う必要が生じる。本発明の第１の実施の形態におけるコマンド生成部３５０では、ＲＥＡＤ／ＷＲＩＴＥとＡＣＴとの間でコマンドの発行が衝突したときには、ＲＥＡＤ／ＷＲＩＴＥをそのタイミングで発行し、ＡＣＴの発行を遅らせる衝突回避処理を行う。また、ＲＥＡＤ／ＷＲＩＴＥとプリチャージコマンドＰＲＥとの間でコマンドの発行が衝突したときには、ＲＥＡＤ／ＷＲＩＴＥをそのタイミングで発行し、プリチャージコマンドＰＲＥの発行を遅らせる衝突回避処理を行う。
【００７４】
［状態管理部におけるメモリバンク情報の更新例］
図６は、本発明の第１の実施の形態において状態管理部３４０におけるメモリバンク情報の更新の例を示す一覧表である。ここでは、左の列には更新されるレジスタのレジスタ名が表され、中央の列にはそのレジスタの更新される条件が表され、右の列にはその更新の内容が表されている。
【００７５】
更新の内容を示す列における「発行時刻」は、コマンド生成部３５０において同時に生成されるコマンドのうち、同期セレクタ部２２０において整列する時の順序を示す値である。この発行時刻は、「０」から始まり「１」ずつ増加する値である。また、この発行時刻は、コマンドが発行される際の図５において示した発行可能時刻の値を発行時刻としたものである。この発行時刻が「０」を示すコマンドは、同期セレクタ部２２０において整列する時に最前となる信号線から供給され、「１」を示すコマンドは、「０」を示すコマンドの次に整列する信号線から供給される。この発行時刻は、コマンド生成部３５０においてＮ個のコマンドが同時に生成可能な場合には、最大数が「Ｎ−１」となり、同期セレクタ部２２０においてＮ個のコマンドが整列する時の順序を示す。ここで、Ｎはコマンド生成部３５０において同時に生成可能なコマンドの最大数を表す。図１において示したメモリ制御装置１００においては、発行時刻が「０」を示すコマンドは第１コマンドとして信号線３５９を介して供給され、発行時刻が「１」を示すコマンドは第２コマンドとして信号線３５８を介して供給される。すなわち、コマンド生成部３５０は、同一のサイクルで複数のコマンドを生成する場合には、発行可能時刻が少ない数値のコマンドが先に配置されるようにコマンドをコマンド同期出力部５００に供給する。
【００７６】
なお、更新の内容を示す列において示しているｔＲＲＤはＡＣＴから異なるバンクのＡＣＴまでの最小間隔をメモリクロックのサイクル数でカウントした値である。ｔＲＣはＡＣＴから同じバンクのＡＣＴまで、ｔＲＰＤはＲＥＡＤから同じバンクのプリチャージコマンドＰＲＥまで、ｔＲＰはプリチャージコマンドＰＲＥから同じバンクのＡＣＴまでの最小間隔をメモリクロックのサイクル数でカウントした値である。ｔＲＣＤはＡＣＴから同じバンクのＲＥＡＤ／ＷＲＩＴＥまで、ｔＲＡＳはＡＣＴから同じバンクのプリチャージコマンドＰＲＥまで、ｔＷＬはＷＲＩＴＥからＷＲＩＴＥデータの先頭までの最小間隔をメモリクロックのサイクル数でカウントした値である。ｔＷＲはＷＲＩＴＥから同じバンクのプリチャージコマンドＰＲＥまで、ｔＷＴＲはＷＲＩＴＥデータの末尾から同じバンクのＲＥＡＤまでの最小間隔をメモリクロックのサイクル数でカウントした値である。ｔＲＷＤはＲＥＡＤから同じバンクのＷＲＩＴＥまで（ＲＥＡＤデータ転送中を除くサイクル数。）の最小間隔をメモリクロックのサイクル数でカウントした値である。ＢＬ／２は、バースト長（ＢＬ）を２で除算した値である。ＭＡＸ（ＢＬ／２,  ｔＲＰＤ）は、ＢＬ／２またはｔＲＰＤのうちいずれかの大きい方の値である。ＲａｓＲｅｑＲｏｗは、Ｒリクエストにおける行アドレスの値である。ＣａｓＲｅｑＬｎｇは、Ｃリクエストにおけるデータ長の値である。
【００７７】
ＡｃｔＦｌｇ［ＲａｓＲｅｑＢｎｋ］は、ＲａｓＲｅｑＢｎｋのＡＣＴがコマンド生成部３５０から発行された場合には、Ａｃｔｉｖｅ状態を示す「１」に更新される。
【００７８】
ＡｃｔＦｌｇ［ＣａｓＲｅｑＢｎｋ］は、ＣａｓＲｅｑＢｎｋのＲＥＡＤＡあるいはＷＲＩＴＥＡがコマンド生成部３５０から発行された場合には、Ｉｄｌｅ状態を示す「０」に更新される。
【００７９】
ＡｃｔＦｌｇ［Ｘ］は、ＰＲＥ発行可能状態およびＰＲＥ発行可能時刻が成立したバンクＸのプリチャージコマンドＰＲＥがコマンド生成部３５０から発行された場合には、「０」に更新される。
【００８０】
ＡｃｔＲｏｗ［ＲａｓＲｅｑＢｎｋ］は、ＲａｓＲｅｑＢｎｋのＡＣＴがコマンド生成部３５０から発行された場合には、「ＲａｓＲｅｑＲｏｗ」に更新される。
【００８１】
ＡｃｔＲｏｗ［Ｘ］は、ＰＲＥ発行可能状態およびＰＲＥ発行可能時刻が成立したバンクＸのプリチャージコマンドＰＲＥがコマンド生成部３５０から発行された場合には、指定行アドレスが無いことを意味する指定無効に更新される。
【００８２】
ＡｃｔＣｎｔ［ＲａｓＲｅｑＢｎｋ］は、ＲａｓＲｅｑＢｎｋのＡＣＴがコマンド生成部３５０から発行された場合あるいはＡＣＴ不要だった場合には、「１」が加算される。
【００８３】
ＡｃｔＣｎｔ［ＣａｓＲｅｑＢｎｋ］は、ＣａｓＲｅｑＢｎｋのＲＥＡＤあるいはＷＲＩＴＥがコマンド生成部３５０から発行された場合には、「１」が減算される。
【００８４】
ＴｉｍＡｃｔＡｌｌは、ＲａｓＲｅｑＢｎｋのＡＣＴがコマンド生成部３５０から発行された場合には、そのＡＣＴの発行時刻およびｔＲＲＤを足した値に更新される。
【００８５】
ＴｉｍＡｃｔ［ＲａｓＲｅｑＢｎｋ］は、ＲａｓＲｅｑＢｎｋのＡＣＴがコマンド生成部３５０から発行された場合には、そのＡＣＴの発行時刻およびｔＲＣを足した値に更新される。
【００８６】
ＴｉｍＡｃｔ［ＣａｓＲｅｑＢｎｋ］は、ＣａｓＲｅｑＢｎｋのＲＥＡＤＡがコマンド生成部３５０から発行された場合には、そのＲＥＡＤＡの発行時刻とｔＲＰＤとｔＲＰとを足した値に更新される。ＴｉｍＡｃｔ［ＣａｓＲｅｑＢｎｋ］は、ＣａｓＲｅｑＢｎｋのＷＲＩＴＥＡがコマンド生成部３５０から発行された場合には、そのＷＲＩＴＥＡの発行時刻とｔＷＬとＢＬ／２とｔＷＲとｔＲＰとを足した値に更新される。
【００８７】
ＴｉｍＡｃｔ［Ｘ］は、ＰＲＥ発行可能状態およびＰＲＥ発行可能時刻が成立したバンクＸのプリチャージコマンドＰＲＥがコマンド生成部３５０から発行された場合には、そのプリチャージコマンドＰＲＥの発行時刻およびｔＲＰを足した値に更新される。
【００８８】
ＴｉｍＲｅａｄＡｌｌは、ＣａｓＲｅｑＢｎｋのＲＥＡＤがコマンド生成部３５０から発行された場合には、そのＲＥＡＤの発行時刻およびＣａｓＲｅｑＬｎｇを足した値に更新される。ＴｉｍＲｅａｄＡｌｌは、ＣａｓＲｅｑＢｎｋのＷＲＩＴＥがコマンド生成部３５０から発行された場合には、そのＷＲＩＴＥの発行時刻とｔＷＬとＢＬ／２とｔＷＴＲとを足した値に更新される。
【００８９】
ＴｉｍＲｅａｄ［ＣａｓＲｅｑＢｎｋ］は、ＣａｓＲｅｑＢｎｋのＲＥＡＤを発行するためのＡＣＴがコマンド生成部３５０から発行された場合には、そのＡＣＴの発行時刻およびｔＲＣＤを足した値に更新される。
【００９０】
ＴｉｍＷｒｉｔｅＡｌｌは、ＣａｓＲｅｑＢｎｋのＷＲＩＴＥがコマンド生成部３５０から発行された場合には、そのＷＲＩＴＥの発行時刻およびＣａｓＲｅｑＬｎｇを足した値に更新する。ＴｉｍＷｒｉｔｅＡｌｌは、ＣａｓＲｅｑＢｎｋのＲＥＡＤがコマンド生成部３５０から発行された場合には、そのＲＥＡＤの発行時刻とＢＬ／２とｔＲＷＤとを足した値に更新される。
【００９１】
ＴｉｍＷｒｉｔｅ［ＣａｓＲｅｑＢｎｋ］は、ＣａｓＲｅｑＢｎｋのＷＲＩＴＥを発行するためのＡＣＴがコマンド生成部３５０から発行された場合には、そのＡＣＴの発行時刻およびｔＲＣＤを足した値に更新される。
【００９２】
ＴｉｍＰｒｅ［ＲａｓＲｅｑＢｎｋ］は、ＲａｓＲｅｑＢｎｋのＡＣＴがコマンド生成部３５０から発行された場合には、そのＡＣＴの発行時刻およびｔＲＡＳを足した値に更新される。
【００９３】
ＴｉｍＰｒｅ［ＣａｓＲｅｑＢｎｋ］は、ＣａｓＲｅｑＢｎｋのＲＥＡＤがコマンド生成部３５０から発行された場合には、そのＲＥＡＤの発行時刻およびＭＡＸ（ＢＬ／２,  ｔＲＰＤ）を足した値に更新される。ＴｉｍＰｒｅ［ＣａｓＲｅｑＢｎｋ］は、ＣａｓＲｅｑＢｎｋのＷＲＩＴＥがコマンド生成部３５０から発行された場合には、そのＷＲＩＴＥの発行時刻とｔＷＬとＢＬ／２とｔＷＲとを足した値に更新される。
【００９４】
なお、更新されるレジスタは、保持する数値が更新する値と比べて高い場合には更新しない。
【００９５】
なお、メモリ制御装置１００は、種々のＳＤＲＡＭ１２０の特性に対応するために、ｔＲＲＤ、ｔＲＣ、ｔＲＰＤ、ｔＲＰ、ｔＲＣＤ、ｔＲＡＳ、ｔＷＬ、ｔＷＲ、ｔＷＴＲおよびｔＲＷＤの値を外部から制御するための指示受付部を備えてもよい。
【００９６】
［コマンド決定部の動作例］
図７は、本発明の第１の実施の形態においてコマンド決定部３００の動作例を示すタイミングチャートである。ここでは、コントローラクロックを横軸の共通の時間軸として、信号線３２９および信号線３３９における情報と、信号線３４９、信号線３５９および信号線３５８における情報のうち一部の情報とが示されている。ここでは、ＳＤＲＡＭ１２０はＣＬ（Cas Latency）が５のＤＤＲ２−６６７であると想定する。ここでは、「ＢＬ」は「４」、ｔＲＲＤは「４」、ｔＲＣは「２０」、ｔＲＰＤは「３」、ｔＲＰは「５」、ｔＲＣＤは「５」、ｔＲＡＳは「１５」、ｔＷＬは「４」、ｔＷＲは「５」、ｔＷＴＲは「３」、ｔＲＷＤは「１」を想定する。なお、ここでは、コマンド決定部３００は、ＲＥＡＤ、ＷＲＩＴＥ、ＡＣＴ，プリチャージコマンドＰＲＥおよびＮＯＰのコマンドを生成する場合を想定する。なお、ここでは、コマンドが衝突した場合には、ＲＥＡＤおよびＷＲＩＴＥとプリチャージコマンドＰＲＥおよびＡＣＴとの間ではＲＥＡＤおよびＷＲＩＴＥを優先して生成する場合を想定する。
【００９７】
リクエスト生成部３１０は、以下の１４個のメモリリクエストを生成して、その生成されたメモリリクエストを、Ｒリクエストキュー３２０およびＣリクエストキュー３３０に順番を維持して供給することを想定する。このメモリリクエストの意味は、そのメモリリクエストにおける（オペコード、バンク番号、行アドレス、列アドレス、メモリクロックのサイクル数で示すデータ長）である。
【００９８】
入力されるメモリリクエストは、１番目は（ＲＥＡＤ、０、３７ｂｆ、０４８、２）、２番目は（ＲＥＡＤ、０、３７ｂｆ、０４ｃ、２）、３番目は（ＲＥＡＤ、１、３７ｂｆ、０４８、２）、４番目は（ＲＥＡＤ、１、３７ｂｆ、０４ｃ、２）を想定する。続いて、５番目は（ＲＥＡＤ、２、３７ｂｆ、０４８、２）、６番目は（ＲＥＡＤ、２、３７ｂｆ、０４ｃ、２）、７番目は（ＲＥＡＤ、３、３７ｂｆ、０４８、２）、８番目は（ＲＥＡＤ、３、３７ｂｆ、０４ｃ、２）を想定する。さらに、９番目は（ＷＲＩＴＥ、０、２６ａｅ、０６８、２）、１０番目は（ＷＲＩＴＥ、０、２６ａｅ、０６ｃ、２）、１１番目は（ＷＲＩＴＥ、１、２６ａｅ、０６８、２）、１２番目は（ＷＲＩＴＥ、１、２６ａｅ、０６ｃ、２）を想定する。続いて、１３番目は（ＷＲＩＴＥ、２、２６ａｅ、０６８、２）、１４番目は（ＷＲＩＴＥ、２、２６ａｅ、０６ｃ、２）、１５番目は（ＷＲＩＴＥ、３、２６ａｅ、０６８、２）、１６番目は（ＷＲＩＴＥ、３、２６ａｅ、０６ｃ、２）を想定する。
【００９９】
信号線３２９には、コマンド生成部３５０により参照されるＲリクエストが示されている。Ｒリクエストキュー３２０は、入力されたメモリリクエストのうち図２において示したオペコード、バンク番号、および行アドレスを行選択情報として保持する。ＲａｓＲｅｑＯｐｃは、最も古い入力順序の行選択情報であるＲリクエストにおけるオペコードを示している。ＲａｓＲｅｑＢｎｋは、Ｒリクエストにおけるバンク番号を示している。ＲａｓＲｅｑＲｏｗは、Ｒリクエストにおける行アドレスを示している。
【０１００】
信号線３３９には、コマンド生成部３５０により参照されるＣリクエストが示されている。Ｃリクエストキュー３３０は、入力されたメモリリクエストのうち図２において示したオペコード、バンク番号、列アドレス、データ長を列選択情報として保持する。ＣａｓＲｅｑＯｐｃは、最も古い入力順序の列選択情報であるＣリクエストにおけるオペコードを示している。ＣａｓＲｅｑＢｎｋは、Ｃリクエストにおけるバンク番号を示している。ＣａｓＲｅｑＣｌｍは、Ｃリクエストにおける行アドレスを示している。ＣａｓＲｅｑＬｎｇは、Ｃリクエストにおけるデータ長をメモリクロックのサイクル数で示している。
【０１０１】
信号線３４９には、状態管理部３４０からコマンド生成部３５０に供給されるメモリバンク情報のうちバンク［０］に関する情報が示されている。メモリバンク情報における各情報を保持するレジスタについては、図４乃至図６において表したものと同様のものであるので、ここでの説明を省略する。なお、ここではバンク［０］のタイミングチャートのみを示したが、他のバンクについても状態管理部３４０からコマンド生成部３５０に供給されている。
【０１０２】
信号線３５９には、コマンド生成部３５０から第１コマンド出力部５１０に供給される第１コマンドにおけるオペコードとバンク番号とが示されている。なお、信号線３５９における空白のボックスは、何もしないことを指示するコマンドであるＮＯＰを意味する。
【０１０３】
信号線３５８には、コマンド生成部３５０から第２コマンド出力部５２０に供給される第２コマンドにおけるオペコードとバンク番号とが示されている。なお、信号線３５８が示すタイミングチャートにおける空白のボックスは、何もしないことを指示するコマンドであるＮＯＰを意味する。
【０１０４】
ここで、このタイミングチャートの解釈をコントローラクロックにおける「Ｔ＝０」および「Ｔ＝１」に注目して説明する。
【０１０５】
最初に、「Ｔ＝０」について説明する。コマンド生成部３５０には、Ｒリクエストキュー３２０から信号線３２９を介して１番目のメモリリクエストの情報を含むＲリクエストの情報が出力される。コマンド生成部３５０には、Ｃリクエストキュー３３０から信号線３３９を介して１番目のメモリリクエストの情報を含むＣリクエストの情報が出力される。さらに、コマンド生成部３５０には、状態管理部３４０から信号線３４９を介してメモリバンク情報が出力される。すなわち、コマンド生成部３５０には、信号線３２９を介して、ＲａｓＲｅｑＯｐｃはＲＥＡＤ、ＲａｓＲｅｑＢｎｋは「０」、ＲａｓＲｅｑＲｏｗは「３７ｂｆ」が入力される。さらに、コマンド生成部３５０には、信号線３３９を介して、ＣａｓＲｅｑＯｐｃは「ＲＥＡＤ」、ＣａｓＲｅｑＢｎｋは「０」、ＣａｓＲｅｑＣｌｍは「０４８」、ＣａｓＲｅｑＬｎｇは「２」が入力される。さらに、コマンド生成部３５０には、信号線３４９を介して入力されるメモリバンク情報のうちバンク［０］の情報として、ＡｃｔＦｌｇ［０］は「０」、ＡｃｔＲｏｗ［０］は指定無効（図７では、「−」により示す。）、ＡｃｔＣｎｔ［０］は「０」が入力される。さらに、ＴｉｍＡｃｔＡｌｌは「０」、ＴｉｍＡｃｔ［０］は「０」、ＴｉｍＲｅａｄＡｌｌは「０」、ＴｉｍＲｅａｄ［０］は「０」、ＴｉｍＷｒｉｔｅＡｌｌは「０」、ＴｉｍＷｒｉｔｅ［０］は「０」、ＴｉｍＰｒｅ［０］は「０」が入力される。
【０１０６】
上記の情報が入力されたコマンド生成部３５０は、図５において示したコマンド生成の判定条件について判断する。そして、発行可能状態および発行可能時刻の両者の条件が成立すれば、その発行するコマンドの発行可能時刻のコマンドを供給する信号線を介してそのコマンドを発行する。「Ｔ＝０」において、ＡＣＴ発行可能状態はＡｃｔＦｌｇ［０］は「０」により成立する。ＡＣＴ発行可能時刻は、ＴｉｍＡｃｔＡｌｌは「０」およびＴｉｍＡｃｔ［０］により成立する。ＡＣＴ不要は、ＡｃｔＦｌｇ［０］は「０」であるので成立しない。ＲＥＡＤ発行可能状態は、ＡｃｔＦｌｇ［０］は「０」であるので成立しない。また、ＰＲＥ発行可能状態は、全てのバンクのＡｃｔＦｌｇが「０」であるため、全てのバンクについて成立しない。
【０１０７】
これらの判定により、コマンド生成部３５０は、１番目のメモリリクエストに関するＡＣＴは発行時刻が「０」により信号線３５９を介して発行可能、１番目のメモリリクエストに関するＲＥＡＤは発行不可能と判断する。さらに、コマンド生成部３５０は、プリチャージコマンドＰＲＥを発行するバンクは無いものと判断する。これにより、コマンド生成部３５０は、バンク［０］における行アドレス「３７ｂｆ」をバンクアクティブ状態にするＡＣＴとＮＯＰとを生成する。そして、コマンド生成部３５０は、ＡＣＴを信号線３５９から供給するとともに、ＮＯＰを信号線３５８から供給する。
【０１０８】
コマンド生成部３５０は、ＡＣＴを発行したため、Ｒリクエストキュー３２０からＲリクエストを取り出して削除する。コマンド生成部３５０は、ＲＥＡＤは発行しなかったため、Ｃリクエストキュー３３０のＣリクエストをそのままにする。コマンド生成部３５０は、バンク［０］を指定するＡＣＴを発行したことを知らせる情報を、信号線３５７を介して状態管理部３４０に供給する。状態管理部３４０は、そのバンク［０］を指定するＡＣＴを発行したことを知らせる情報に基づいて、レジスタを図６において示したように更新する。ＡｃｔＦｌｇ［０］は、バンク［０］を指定するＡＣＴを発行したため、「１」に更新される。ＡｃｔＲｏｗ［０］は、バンク［０］を指定するＡＣＴを発行したため、「３７ｂｆ」に更新される。ＡｃｔＣｎｔ［０］は、バンク［０］を指定するＡＣＴを発行したため、「１」が加算されて「１」に更新される。
【０１０９】
ＴｉｍＡｃｔＡｌｌは、いずれかのバンクのＡＣＴを発行したため、そのＡＣＴの発行時刻（０）およびｔＲＲＤ（４）を足した値である「４」に更新される。ＴｉｍＡｃｔ［０］は、バンク［０］を指定するＡＣＴを発行したため、そのＡＣＴの発行時刻（０）およびｔＲＣ（２０）を足した値である「２０」に更新される。ＴｉｍＲｅａｄＡｌｌは、条件が成立しないため更新されない。ＴｉｍＲｅａｄ［０］は、バンク［０］を指定するＲＥＡＤを発行するためのＡＣＴを発行したため、そのＡＣＴの発行時刻（０）およびｔＲＣＤ（５）を足した値である「５」に更新される。ＴｉｍＷｒｉｔｅＡｌｌは、条件が成立しないため更新されない。ＴｉｍＷｒｉｔｅ［０］は、条件が成立しないため更新されない。ＴｉｍＰｒｅ［０］は、バンク［０］を指定するＡＣＴを発行したため、そのＡＣＴの発行時刻（０）およびｔＲＡＳ（１５）を足した値である「１５」に更新される。
【０１１０】
そして、状態管理部３４０は、「Ｔ＝０」のサイクルの間に、この期間に進行するメモリクロックのサイクル数である「２」をメモリバンク情報のうち待ち時間情報を示すレジスタの値から減算する。これにより、ＴｉｍＡｃｔＡｌｌは、「４」から「２」に更新される。ＴｉｍＡｃｔ［０］は、「２０」から「１８」に更新される。ＴｉｍＲｅａｄ［０］は、「５」から「３」に更新される。ＴｉｍＰｒｅ［０］は、「１５」から「１３」に更新される。ＴｉｍＲｅａｄＡｌｌ、ＴｉｍＷｒｉｔｅＡｌｌおよびＴｉｍＷｒｉｔｅ［０］は、「０」であるため、「０」のままである。
【０１１１】
次に、「Ｔ＝１」について説明する。Ｒリクエストキュー３２０では、１番目のメモリリクエストの情報を含む行選択情報が「Ｔ＝０」において取り除かれたため、２番目のメモリリクエストの情報を含む行選択情報がＲリクエストとなる。Ｃリクエストキュー３３０では、１番目のメモリリクエストの情報を含む列選択情報はそのまま保持しているので、「Ｔ＝０」と同様に１番目のメモリリクエストの情報を含む列選択情報がＣリクエストとなる。すなわち、コマンド生成部３５０には、信号線３２９を介して、ＲａｓＲｅｑＯｐｃは「ＲＥＡＤ」、ＲａｓＲｅｑＢｎｋは「０」、ＲａｓＲｅｑＲｏｗは「３７ｂｆ」が入力される。さらに、コマンド生成部３５０には、信号線３３９を介して、ＣａｓＲｅｑＯｐｃは「ＲＥＡＤ」、ＣａｓＲｅｑＢｎｋは「０」、ＣａｓＲｅｑＣｌｍは「０４８」、ＣａｓＲｅｑＬｎｇは「２」が入力される。
【０１１２】
さらに、コマンド生成部３５０には、状態管理部３４０から信号線３４９を介して「Ｔ＝０」において更新されたメモリバンク情報が出力される。すなわち、ＡｃｔＦｌｇ［０］は「１」、ＡｃｔＲｏｗ［０］は「３７ｂｆ」、ＡｃｔＣｎｔ［０］は「１」が入力される。さらに、ＴｉｍＡｃｔＡｌｌは「２」、ＴｉｍＡｃｔ［０］は「１８」、ＴｉｍＲｅａｄＡｌｌは「０」、ＴｉｍＲｅａｄ［０］は「３」、ＴｉｍＷｒｉｔｅＡｌｌは「０」、ＴｉｍＷｒｉｔｅ［０］は「０」、ＴｉｍＰｒｅ［０］は「１５」が入力される。
【０１１３】
上記の情報が入力されたコマンド生成部３５０は、図５において示したコマンド生成の判定条件について判断する。ＡＣＴ発行可能状態はＡｃｔＦｌｇ［０］は「１」により成立しない。ＡＣＴ不要は、ＡｃｔＦｌｇ［０］は「１」およびＲａｓＲｅｑＲｏｗとＡｃｔＲｏｗ［０］とが同じ「３７ｂｆ」であるので成立する。ＲＥＡＤ発行可能状態は、ＡｃｔＦｌｇ［０］は「１」およびＡｃｔＣｎｔ［０］は「１」であるので成立する。また、ＰＲＥ発行可能状態は、バンク［０］については、ＡｃｔＦｌｇ［０］は「１」だが、ＡｃｔＣｎｔ［０］は「１」であるため成立しない。ＰＲＥ発行可能状態は、他のバンクについても成立しない。これらの判定により、コマンド生成部３５０は、２番目のメモリリクエストに関するＡＣＴは発行不要、１番目のメモリリクエストに関するＲＥＡＤは発行不可能、プリチャージコマンドＰＲＥを発行するバンクは無いと判断する。これにより、コマンド生成部３５０は、ＮＯＰを信号線３５９から供給するとともに、ＮＯＰを信号線３５８から供給する。
【０１１４】
コマンド生成部３５０は、ＡＣＴ不要であるため、Ｒリクエストキュー３２０からＲリクエストを取り出して削除される。コマンド生成部３５０は、ＲＥＡＤは発行しなかったため、Ｃリクエストキュー３３０のＣリクエストはそのままにする。
【０１１５】
コマンド生成部３５０は、バンク［０］を指定するＡＣＴをＡＣＴ不要にしたことを知らせる情報を、信号線３５７を介して状態管理部３４０に供給する。状態管理部３４０は、そのバンク［０］を指定するＡＣＴをＡＣＴ不要にしたことを知らせる情報に基づいてレジスタを図６において示したように更新する。すなわち、ＡｃｔＣｎｔ［０］は、バンク［０］を指定するＡＣＴを発行不要にしたため、「１」が加算されて「２」に更新される。
【０１１６】
状態管理部３４０は、「Ｔ＝１」のサイクルの間に、この期間に進行したメモリクロックのサイクル数である「２」をメモリバンク情報のうち待ち時間情報を示すレジスタの値から減算する。これにより、ＴｉｍＡｃｔＡｌｌは、「２」から「０」に更新される。ＴｉｍＡｃｔ［０］は、「１８」から「１６」に更新される。ＴｉｍＲｅａｄ［０］は、「３」から「１」に更新される。ＴｉｍＰｒｅ［０］は、「１３」から「１１」に更新される。
【０１１７】
このように、コマンド生成部３５０は、Ｒリクエストキュー３２０から入力されるＲリクエストと、Ｃリクエストキュー３３０から入力されるＣリクエストと、状態管理部３４０から入力されるメモリバンク情報とに基づいてコマンドを生成する。
【０１１８】
［コマンド生成部の動作例］
次に、本発明の第１の実施の形態におけるコマンド生成部３５０の動作について次図を参照して説明する。ここでは、図７で示したタイミングチャートのＴ＝０乃至Ｔ＝３、Ｔ＝７、Ｔ＝８、Ｔ＝１０およびＴ＝１３のサイクルに対応するコマンド生成部３５０の動作を示す。なお、便宜上、コマンド生成部３５０が供給するＮＯＰについては、信号線での図示を省略している。なお、コマンド生成部３５０がＲリクエストキュー３２０およびＣリクエストキュー３３０からＲリクエストおよびＣリクエストを取り出す（ＰＯＰ）ことによって消去する動作については、模式的に、信号線３２９および３３９とは別の破線で示している。
【０１１９】
図８（ａ）乃至（ｃ）は、Ｔ＝０乃至Ｔ＝２のサイクルにそれぞれ対応するコマンド生成部３５０の動作を示す模式図である。
【０１２０】
図８（ａ）は、図７の「Ｔ＝０」におけるコマンド生成部３５０の動作を示す図である。コマンド生成部３５０は、Ｒリクエストキュー３２０およびＣリクエストキュー３３０に対し、図７において示した１番目のメモリリクエストの情報を含むＲリクエストおよびＣリクエストを信号線３２９および信号線３３９を介して出力させる。さらに、コマンド生成部３５０は、状態管理部３４０に対し、メモリバンク情報を信号線３４９を介して出力させる。そして、コマンド生成部３５０は、ＡＣＴ、ＲＥＡＤ、およびプリチャージコマンドＰＲＥの発行可能条件および発行可能時刻を判定する。その結果、コマンド生成部３５０は、Ｒリクエストに基づくＡＣＴは発行時刻が「０」により信号線３５９を介して発行可能、Ｃリクエストに基づくＲＥＡＤは発行不可能、プリチャージコマンドＰＲＥはいずれのバンクも発行不可能と判断する。これにより、コマンド生成部３５０は、バンク［０］における行アドレス「３７ｂｆ」をバンクアクティブ状態にするＡＣＴと、ＮＯＰとを生成する。そして、コマンド生成部３５０は、ＡＣＴを信号線３５９から供給するとともに、ＮＯＰを信号線３５８から供給する。
【０１２１】
その後、コマンド生成部３５０は、信号線３５７を介して、バンク［０］を指定するＡＣＴを発行したことを知らせる情報を状態管理部３４０に供給する。
【０１２２】
コマンド生成部３５０は、ＡＣＴを発行したため、Ｒリクエストキュー３２０からＲリクエストを信号線３２９を介して取り出すことによって削除する。これにより、Ｒリクエストキュー３２０では、２番目のメモリリクエストの情報を含む行選択情報がＲリクエストになる。
【０１２３】
図８（ｂ）は、図７の「Ｔ＝１」におけるコマンド生成部３５０の動作を示す図である。「Ｔ＝１」においては、コマンド生成部３５０は、Ｒリクエストキュー３２０に２番目のメモリリクエストの情報を含むＲリクエストを出力させ、Ｃリクエストキュー３３０に１番目のメモリリクエストの情報を含むＣリクエストを出力させる。さらに、コマンド生成部３５０は、状態管理部３４０に対し、メモリバンク情報を信号線３４９を介して出力させる。そして、コマンド生成部３５０は、コマンドの発行可能条件および発行可能時刻を判定する。その結果、コマンド生成部３５０は、Ｒリクエストに基づくＡＣＴは発行不要、Ｃリクエストに基づくＲＥＡＤは発行不可能、プリチャージコマンドＰＲＥはいずれのバンクも発行不可能と判断する。コマンド生成部３５０は、信号線３５９からＮＯＰを供給するとともに、信号線３５８からもＮＯＰを供給する。
【０１２４】
その後、コマンド生成部３５０は、信号線３５７を介して、バンク［０］を指定するＡＣＴを発行不要としたことを知らせる情報を状態管理部３４０に供給する。
【０１２５】
コマンド生成部３５０は、ＡＣＴを発行不要としたために、Ｒリクエストキュー３２０からＲリクエストを信号線３２９を介して取り出すことによって削除する。これにより、Ｒリクエストキュー３２０では、３番目のメモリリクエストの情報を含む行選択情報がＲリクエストになる。
【０１２６】
図８（ｃ）は、図７の「Ｔ＝２」におけるコマンド生成部３５０の動作を示す図である。「Ｔ＝２」においては、コマンド生成部３５０は、Ｒリクエストキュー３２０に３番目のメモリリクエストの情報を含むＲリクエストを出力させ、Ｃリクエストキュー３３０に１番目のメモリリクエストの情報を含むＣリクエストを出力させる。さらに、コマンド生成部３５０は、状態管理部３４０に対し、メモリバンク情報を信号線３４９を介して出力させる。そして、コマンド生成部３５０は、コマンドの発行可能条件および発行可能時刻を判定する。その結果、コマンド生成部３５０は、Ｒリクエストに基づくＡＣＴは発行時刻が「０」により信号線３５９を介して発行可能、Ｃリクエストに基づくＲＥＡＤは発行時刻が「１」により信号線３５８を介して発行可能と判断する。さらに、コマンド生成部３５０は、プリチャージコマンドＰＲＥは全てのバンクで発行不可能と判断する。これにより、コマンド生成部３５０は、バンク［１］における行アドレス「３７ｂｆ」をバンクアクティブ状態にするＡＣＴと、バンク［０］における列アドレス「０４８」を指定してリード状態にするＲＥＡＤとを生成する。そして、コマンド生成部３５０は、ＡＣＴを信号線３５９から供給するとともに、ＲＥＡＤを信号線３５８から供給する。
【０１２７】
その後、コマンド生成部３５０は、信号線３５７を介して、バンク［１］を指定するＡＣＴおよびバンク［０］を指定するＲＥＡＤを発行したことを知らせる情報を状態管理部３４０に供給する。
【０１２８】
コマンド生成部３５０は、ＡＣＴを発行したために、Ｒリクエストキュー３２０からＲリクエストを信号線３２９を介して取り出すことによって削除する。これにより、Ｒリクエストキュー３２０では、４番目のメモリリクエストの情報を含む行選択情報がＲリクエストになる。コマンド生成部３５０は、ＲＥＡＤを発行したために、Ｃリクエストキュー３３０からＣリクエストを信号線３３９を介して取り出すことによって削除する。これにより、Ｃリクエストキュー３３０では、２番目のメモリリクエストの情報を含む行選択情報がＣリクエストになる。
【０１２９】
図９（ａ）乃至（ｃ）は、Ｔ＝３、Ｔ＝７、Ｔ＝８のサイクルにそれぞれ対応するコマンド生成部３５０の動作を示す模式図である。
【０１３０】
図９（ａ）は、図７の「Ｔ＝３」のサイクルにおけるコマンド生成部３５０の動作を示す図である。「Ｔ＝３」においては、コマンド生成部３５０は、Ｒリクエストキュー３２０に４番目のメモリリクエストの情報を含むＲリクエストを出力させ、Ｃリクエストキュー３３０に２番目のメモリリクエストの情報を含むＣリクエストを出力させる。さらに、コマンド生成部３５０は、状態管理部３４０に対し、メモリバンク情報を信号線３４９を介して出力させる。そして、コマンド生成部３５０は、コマンドの発行可能条件および発行可能時刻を判定する。その結果、コマンド生成部３５０は、Ｒリクエストに基づくＡＣＴは発行不要、Ｃリクエストに基づくＲＥＡＤは発行時刻が「１」により信号線３５８を介して発行可能、プリチャージコマンドＰＲＥはいずれのバンクも発行不可能と判断する。これにより、コマンド生成部３５０は、バンク［０］における列アドレス「０４ｃ」を指定してリード状態にするＲＥＡＤと、ＮＯＰとを生成する。そして、コマンド生成部３５０は、信号線３５９からＮＯＰを供給するとともに、信号線３５８からＲＥＡＤを供給する。
【０１３１】
その後、コマンド生成部３５０は、信号線３５７を介して、バンク［１］を指定するＡＣＴを発行不要としたことおよびバンク［０］を指定するＲＥＡＤを発行したことを知らせる情報を状態管理部３４０に供給する。
【０１３２】
コマンド生成部３５０は、ＡＣＴを発行不要としたために、Ｒリクエストキュー３２０からＲリクエストを信号線３２９を介して取り出すことによって削除する。これにより、Ｒリクエストキュー３２０では、５番目のメモリリクエストの情報を含む行選択情報がＲリクエストになる。また、コマンド生成部３５０は、ＲＥＡＤを発行したために、Ｃリクエストキュー３３０からＣリクエストを信号線３３９を介して取り出すことによって削除する。これにより、Ｃリクエストキュー３３０では、３番目のメモリリクエストの情報を含む行選択情報がＣリクエストになる。
【０１３３】
図９（ｂ）は、図７の「Ｔ＝７」のサイクルにおけるコマンド生成部３５０の動作を示す図である。「Ｔ＝７」においては、コマンド生成部３５０は、Ｒリクエストキュー３２０に８番目のメモリリクエストの情報を含むＲリクエストを出力させ、Ｃリクエストキュー３３０に６番目のメモリリクエストの情報を含むＣリクエストを出力させる。さらに、コマンド生成部３５０は、状態管理部３４０に対し、メモリバンク情報を信号線３４９を介して出力させる。そして、コマンド生成部３５０は、コマンドの発行可能条件および発行可能時刻を判定する。その結果、コマンド生成部３５０は、Ｒリクエストに基づくＡＣＴは発行不要、Ｃリクエストに基づくＲＥＡＤは発行時刻が「１」により信号線３５８を介して発行可能と判断する。さらに、コマンド生成部３５０は、プリチャージコマンドＰＲＥはバンク［０］については発行時刻が「１」により信号線３５８を介して発行可能、他のバンクのプリチャージコマンドＰＲＥについては発行不可能と判断する。
【０１３４】
コマンド生成部３５０は、Ｃリクエストに基づくＲＥＡＤとバンク［０］を指定するプリチャージコマンドＰＲＥとが衝突するため、衝突回避判断を行う。図７におけるコマンド生成部３５０は、ＲＥＡＤとプリチャージコマンドＰＲＥと野間に衝突が生じた場合にはＲＥＡＤを優先すると設定されているため、「Ｔ＝７」における発行時刻「１」ではＲＥＡＤを発行すると判定する。この結果より、コマンド生成部３５０は、バンク［２］における列アドレス「０４ｃ」を指定してリード状態にするＲＥＡＤと、ＮＯＰとを生成する。そして、コマンド生成部３５０は、ＮＯＰを信号線３５９から供給するとともに、ＲＥＡＤを信号線３５８から供給する。
【０１３５】
その後、コマンド生成部３５０は、信号線３５７を介して、バンク［２］を指定するＲＥＡＤを発行したことを知らせる情報を状態管理部３４０に供給する。
【０１３６】
コマンド生成部３５０は、ＲＥＡＤを発行したために、Ｃリクエストキュー３３０からＣリクエストを信号線３３９を介して取り出すことによって削除する。これにより、Ｃリクエストキュー３３０では、７番目のメモリリクエストの情報を含む行選択情報がＣリクエストになる。
【０１３７】
図９（ｃ）は、図７の「Ｔ＝８」のサイクルにおけるコマンド生成部３５０の動作を示す図である。「Ｔ＝８」においては、コマンド生成部３５０は、Ｒリクエストキュー３２０に９番目のメモリリクエストの情報を含むＲリクエストを出力させ、Ｃリクエストキュー３３０に７番目のメモリリクエストの情報を含むＣリクエストを出力させる。さらに、コマンド生成部３５０は、状態管理部３４０に対し、メモリバンク情報を信号線３４９を介して出力させる。そして、コマンド生成部３５０は、コマンドの発行可能条件および発行可能時刻を判定する。その結果、コマンド生成部３５０は、Ｒリクエストに基づくＡＣＴは発行不可能、Ｃリクエストに基づくＲＥＡＤは発行時刻が「１」により信号線３５８を介して発行可能と判断する。さらに、コマンド生成部３５０は、プリチャージコマンドＰＲＥはバンク０については発行時刻が「０」により信号線３５９を介して発行可能、他のバンクのプリチャージコマンドＰＲＥについては発行不可能と判断する。これにより、コマンド生成部３５０は、バンク［３］における列アドレス「０４ｃ」を指定してリード状態にするＲＥＡＤと、バンク［０］を指定するプリチャージコマンドＰＲＥとを生成する。そして、コマンド生成部３５０は、プリチャージコマンドＰＲＥを信号線３５９から供給するとともに、ＲＥＡＤを信号線３５８から供給する。
【０１３８】
その後、コマンド生成部３５０は、信号線３５７を介して、バンク［３］を指定するＲＥＡＤおよびバンク［０］を指定するプリチャージコマンドＰＲＥを発行したことを知らせる情報を状態管理部３４０に供給する。
【０１３９】
コマンド生成部３５０は、ＲＥＡＤを発行したために、Ｃリクエストキュー３３０からＣリクエストを信号線３３９を介して取り出すことによって削除する。これにより、Ｃリクエストキュー３３０では、８番目のメモリリクエストの情報を含む行選択情報がＣリクエストになる。
【０１４０】
図１０（ａ）および（ｂ）は、Ｔ＝１０、Ｔ＝１３のサイクルにそれぞれ対応するコマンド生成部３５０の動作を示す模式図である。
【０１４１】
図１０（ａ）は、図７の「Ｔ＝１０」のサイクルにおけるコマンド生成部３５０の動作を示す図である。コマンド生成部３５０は、Ｒリクエストキュー３２０に９番目のメモリリクエストの情報を含むＲリクエストを出力させ、Ｃリクエストキュー３３０に９番目のメモリリクエストの情報を含むＣリクエストを出力させる。さらに、コマンド生成部３５０は、状態管理部３４０に対し、メモリバンク情報を信号線３４９を介して出力させる。そして、コマンド生成部３５０は、コマンドの発行可能条件および発行可能時刻を判定する。その結果、コマンド生成部３５０は、Ｒリクエストに基づくＡＣＴは発行時刻が「１」により信号線３５８を介して発行可能、Ｃリクエストに基づくＷＲＩＴＥは発行不可能と判断する。さらに、コマンド生成部３５０は、プリチャージコマンドＰＲＥはバンク１については発行時刻が「０」により信号線３５９を介して発行可能、他のバンクのプリチャージコマンドＰＲＥについては発行不可能と判断する。これにより、コマンド生成部３５０は、バンク［０］における行アドレス「２６ａｅ」をバンクアクティブ状態にするＡＣＴと、バンク［１］を指定するプリチャージコマンドＰＲＥとを生成する。そして、コマンド生成部３５０は、プリチャージコマンドＰＲＥを信号線３５９から供給するとともに、ＡＣＴを信号線３５８から供給する。
【０１４２】
その後、コマンド生成部３５０は、信号線３５７を介して、バンク［０］を指定するＡＣＴおよびバンク［１］を指定するプリチャージコマンドＰＲＥを発行したことを知らせる情報を状態管理部３４０に供給する。
【０１４３】
コマンド生成部３５０は、ＡＣＴを発行したため、Ｒリクエストキュー３２０からＲリクエストを信号線３２９を介して取り出すことによって削除する。これにより、Ｒリクエストキュー３２０では、１０番目のメモリリクエストの情報を含む行選択情報がＲリクエストになる。
【０１４４】
図１０（ｂ）は、図７の「Ｔ＝１３」のサイクルにおけるコマンド生成部３５０の動作を示す図である。コマンド生成部３５０は、Ｒリクエストキュー３２０に１２番目のメモリリクエストの情報を含むＲリクエストを出力させ、Ｃリクエストキュー３３０に９番目のメモリリクエストの情報を含むＣリクエストを出力させる。さらに、コマンド生成部３５０は、状態管理部３４０に対し、メモリバンク情報を信号線３４９を介して出力させる。そして、コマンド生成部３５０は、コマンドの発行可能条件および発行可能時刻を判定する。その結果、コマンド生成部３５０は、Ｒリクエストに基づくＡＣＴは発行不可能、Ｃリクエストに基づくＷＲＩＴＥは発行時刻が「０」により信号線３５９を介して発行可能と判断する。さらに、コマンド生成部３５０は、プリチャージコマンドＰＲＥはバンク３については発行時刻が「１」により信号線３５８を介して発行可能、他のバンクのプリチャージコマンドＰＲＥについては発行不可能と判断する。これにより、コマンド生成部３５０は、バンク［０］における行アドレス「０６８」をライト状態にするＷＲＩＴＥと、バンク［３］を指定するプリチャージコマンドＰＲＥとを生成する。そして、コマンド生成部３５０は、プリチャージコマンドＰＲＥを信号線３５９から供給するとともに、ＷＲＩＴＥを信号線３５８から供給する。
【０１４５】
その後、コマンド生成部３５０は、信号線３５７を介して、バンク［０］を指定するＷＲＩＴＥおよびバンク［３］を指定するプリチャージコマンドＰＲＥを発行したことを知らせる情報を状態管理部３４０に供給する。
【０１４６】
コマンド生成部３５０は、ＷＲＩＴＥを発行したために、Ｃリクエストキュー３３０からＣリクエストを信号線３３９を介して取り出すことによって削除する。これにより、Ｃリクエストキュー３３０では、１０番目のメモリリクエストの情報を含む行選択情報がＣリクエストになる。
【０１４７】
［本発明の第１の実施の形態におけるメモリコントローラの動作例］
図１１は、本発明の第１の実施の形態においてメモリコントローラ２００の動作例を示すタイミングチャートである。ここでは、図７において示したコマンド決定部３００によりＳＤＲＡＭ１２０に関する動作を指示するコマンドが生成されるものとする。
【０１４８】
信号線３０９および信号線３０８では、コントローラクロックを横軸として、コマンド決定部３００から同期セレクタ部２２０に供給される第１コマンドおよび第２コマンドのうちオペコードおよびバンク番号が示されている。同期セレクタ部２２０は、この第１コマンドおよび第２コマンドを第１コマンドが先になるように交互に整列してメモリクロックと同じ周波数のコマンドを生成する。
【０１４９】
アドレス／コマンドバス２０９では、メモリクロックを横軸として、信号線３０９および信号線３０８のコマンドに基づいて生成されたメモリクロックと同じ周波数のコマンドが示されている。同期セレクタ部２２０で生成されたメモリクロックと同じ周波数のコマンドは、メモリクロックコマンド出力部２３０においてメモリクロックとタイミングを合わせられてメモリインタフェース２５０に供給される。そして、このメモリクロックと同じ周波数のコマンドは、メモリインタフェース２５０からＳＤＲＡＭ１２０にアドレス／コマンドバス２０９を介して供給される。なお、アドレス／コマンドバス２０９のオペコードに示されている「Ａ」は「ＡＣＴ」、「Ｒ」は「ＲＥＡＤ」、「Ｐ」は「ＰＲＥ」、「Ｗ」は「ＷＲＩＴＥ」を示している。
【０１５０】
メモリバス２０８では、メモリクロックを横軸として、ＳＤＲＡＭ１２０とメモリコントローラ２００との間でメモリバス２０８を介してやり取りされるデータがバンク番号と共に示されている。ＳＤＲＡＭ１２０は、アドレス／コマンドバス２０９を介して供給されるコマンドに基づいてメモリバス２０８を介してデータアクセスを行うことによって、メモリバス２０８において示すデータがやり取りされる。
【０１５１】
このように、本発明の第１の実施の形態によれば、メモリクロックの１／２の周波数で動作するコマンド生成部３５０により２個のコマンドを生成することによって、ＳＤＲＡＭ１２０の動作を指示することできる。
【０１５２】
＜２．第２の実施の形態＞
［メモリ制御装置の第２の構成例］
図１２は、本発明の第２の実施の形態におけるメモリ制御装置１００の構成例を示すブロック図である。このメモリ制御装置１００は、図１に示したメモリ制御装置１００の構成に加えてＨリクエストキュー３６０を備えている。ここでは、Ｈリクエストキュー３６０以外の構成は、図１と同様のものであるため、図１と同符号を付してここでの各部の構成の説明を省略する。
【０１５３】
Ｈリクエストキュー３６０は、Ｒリクエストキュー３２０からＲリクエストを取り出して、その取り出されたＲリクエストを保持するものである。このＨリクエストキュー３６０は、Ｒリクエストに基づいてコマンドを発行することをコマンド生成部３５０が待機している場合には、Ｒリクエストキュー３２０からＲリクエストを取り出して待機行選択情報として保持する。このＨリクエストキュー３６０は、先入れ先出しするＦＩＦＯタイプのキューにより構成される。このＨリクエストキュー３６０は、保持する待機行選択情報のうち最も古い待機行選択情報をＨリクエストとして信号線３６９を介してコマンド生成部３５０により出力される。また、このＨリクエストは、コマンド生成部３５０においてＨリクエストに基づいて行アドレスを指定するコマンドが生成された場合には、コマンド生成部３５０により取り出されることによって削除される。なお、Ｈリクエストキュー３６０は、特許請求の範囲に記載の待機情報保持部の一例である。
【０１５４】
コマンド生成部３５０は、信号線３６９、３２９、３３９および３４９を介して入力されるＨリクエスト、Ｒリクエスト、Ｃリクエストおよびメモリバンク情報に基づいてＳＤＲＡＭ１２０に関する動作を指示するコマンドを生成する。
【０１５５】
次に、本発明の第２の実施の形態におけるコマンド決定部３００の動作の例について図を参照して説明する。
【０１５６】
［本発明の第２の実施の形態のコマンド決定部の動作例］
図１３は、本発明の第２の実施の形態においてコマンド決定部３００の動作例を示すタイミングチャートである。ここでは、コントローラクロックを共通の横軸としている。なお、ここでは、「ＢＬ」は「８」、「ｔＲＰＤ」は「５」を想定する。また、「ｔＲＰＤ」以外のＳＤＲＡＭ１２０の性能については、図７と同様のものとする。メモリバンク情報については、図４乃至６に示したものと同様であると想定する。なお、ここでは、Ｈリクエストキュー３６０は、１個のデータを保持するＦＩＦＯタイプのキューと想定する。
【０１５７】
リクエスト生成部３１０は、以下の４個のメモリリクエストを生成して、その生成されたメモリリクエストを、Ｒリクエストキュー３２０およびＣリクエストキュー３３０に順番を維持して入力することを想定する。入力されるメモリリクエストは、１番目は（ＲＥＡＤ、０、１５９ｄ、０ｆｃ、４）、２番目は（ＲＥＡＤ、０、０４８ｃ、０００、４）、３番目は（ＲＥＡＤ、１、１５９ｄ、０ｆｃ、４）、４番目は（ＲＥＡＤ、１、０４８ｃ、０００、４）を想定する。
【０１５８】
図１３（ａ）には、上記の４個のメモリリクエストに基づいてコマンドを生成する図１において示した第１の実施の形態のコマンド決定部３００の動作例が示されている。
【０１５９】
メモリリクエストの１番目および２番目とは、バンク番号は「０」で同じであるが、行アドレスは異なっている。また、メモリリクエストの３番目および４番目についても、バンク番号は「１」で同じであるが、行アドレスは異なっている。このため、２番目および４番目のメモリリクエストに基づくＡＣＴは、ＡＣＴ不要とならない。これにより、この２番目および４番目のメモリリクエストに基づくＡＣＴは、１番目および４番目のデータのリードが終了した後であってプリチャージコマンドＰＲＥが発行された後に発行される。
【０１６０】
まず、「Ｔ＝０」において１番目のメモリリクエストの情報を含むＲリクエストに基づくＡＣＴが信号線３５９から発行される。そして、「Ｔ＝２」において、１番目のメモリリクエストの情報を含むＣリクエストに基づく１つ目のＲＥＡＤが信号線３５８から発行される。次に、「Ｔ＝７」において、この１つ目のＲＥＡＤが動作を指示したバンク［０］を指定するプリチャージコマンドＰＲＥが信号線３５８から発行される。
【０１６１】
次に、「Ｔ＝１０」において、２番目のメモリリクエストの情報を含むＲリクエストに基づくＡＣＴが信号線３５９から発行される。そして、「Ｔ＝１２」において、３番目のメモリリクエストの情報を含むＲリクエストに基づくＡＣＴが信号線３５９から発行されるとともに、２番目のメモリリクエストの情報を含むＣリクエストに基づく２つ目のＲＥＡＤが信号線３５８から供給される。そして、「Ｔ＝１４」において、３番目のメモリリクエストの情報を含むＣリクエストに基づく３つ目のＲＥＡＤが発行される。次に、「Ｔ＝１７」において、２つ目のＲＥＡＤが動作を指示したバンク［０］を指定するプリチャージコマンドＰＲＥが信号線３５８から発行される。その後に、「Ｔ＝１９」において、３つ目のＲＥＡＤが動作を指示したバンク［１］を指定するプリチャージコマンドＰＲＥが信号線３５８から発行される。
【０１６２】
「Ｔ＝２２」では、４番目のメモリリクエストの情報を含むＲリクエストに基づいてＡＣＴが信号線３５９から発行される。そして、「Ｔ＝２４」において、４番目のメモリリクエストの情報を含むＣリクエストに基づく４つ目のＲＥＡＤが信号線３５８から発行される。
【０１６３】
図１３（ｂ）には、上記の４個のメモリリクエストに基づいてコマンドを生成する図１２において示した第２の実施の形態のコマンド決定部３００の動作例が示されている。信号線３６９には、コマンド生成部３５０に参照されるＨリクエストが示されている。ＨｌｄＲｅｑＯｐｃは、Ｈリクエストにおけるオペコードを示している。ＨｌｄＲｅｑＢｎｋはＨリクエストにおけるバンク番号を示している。ＨｌｄＲｅｑＲｏｗは、Ｈリクエストにおける行アドレスを示している。
【０１６４】
図１３（ｂ）におけるコマンド決定部３００は、Ｈリクエストキュー３６０を備えている。このため、Ｒリクエストに基づくコマンドの発行をコマンド生成部３５０が待機している場合には、Ｒリクエストキュー３２０からＲリクエストを取り出してＨリクエストとして保持する。
【０１６５】
まず、「Ｔ＝０」において１番目のメモリリクエストの情報を含むＲリクエストに基づくＡＣＴが信号線３５９から発行される。
【０１６６】
「Ｔ＝１」において、コマンド生成部３５０は、２番目のメモリリクエストの情報を含むＲリクエストに基づくＡＣＴはＡＣＴ不要にならないため、２番目のメモリリクエストの情報を含むＲリクエストに基づくＡＣＴの発行を待機とする。このとき、Ｈリクエストキュー３６０には空きがあるため、２番目のメモリリクエストの情報を含むＲリクエストは、Ｒリクエストキュー３２０からＨリクエストキュー３６０へ取り出される。これにより、３番目のメモリリクエストの情報を含む行選択情報がＲリクエストになり、２番目のメモリリクエストの情報を含む待機行選択情報がＨリクエストになる。
【０１６７】
「Ｔ＝２」において、３番目のメモリリクエストの情報を含むＲリクエストと、２番目のメモリリクエストの情報を含むＨリクエストと、１番目のメモリリクエストの情報を含むＣリクエストと、メモリバンク情報とに基づいてコマンドが生成される。これにより、３番目のメモリリクエストの情報を含むＲリクエストに基づくＡＣＴが信号線３５９から発行される。また、１番目のメモリリクエストの情報を含むＣリクエストに基づく１つ目のＲＥＡＤが信号線３５８から発行される。
【０１６８】
「Ｔ＝７」において、１つ目のＲＥＡＤが動作を指示したバンク［０］を指定するプリチャージコマンドＰＲＥが信号線３５８から発行される。
【０１６９】
「Ｔ＝１０」において、４番目のメモリリクエストの情報を含むＲリクエストと、２番目のメモリリクエストの情報を含むＨリクエストと、１番目のメモリリクエストの情報を含むＣリクエストと、メモリバンク情報とに基づいてコマンドが生成される。これにより、２番目のメモリリクエストの情報を含むＨリクエストに基づくＡＣＴが信号線３５９から発行される。そして、このＨリクエストはコマンド生成部３５０により取り出されて削除されるとともに、４番目のメモリリクエストの情報を含むＲリクエストがＲリクエストキュー３２０から取り出されてＨリクエストキュー３６０に保持される。
【０１７０】
そして、「Ｔ＝１２」において、２番目のメモリリクエストの情報を含むＣリクエストに基づく２つ目のＲＥＡＤが信号線３５８から供給される。次に、「Ｔ＝１４」において３番目のメモリリクエストの情報を含むＣリクエストに基づく３つ目のＲＥＡＤが信号線３５８から供給される。「Ｔ＝１７」において、３つ目のＲＥＡＤにより指定されたバンク［１］に対するプリチャージコマンドＰＲＥが信号線３５９から発行される。さらに「Ｔ＝１７において、２つ目のＲＥＡＤにより指定されたバンク［０］に対するプリチャージコマンドＰＲＥが信号線３５８から発行される。
【０１７１】
「Ｔ＝１９」において、４番目のメモリリクエストの情報を含むＨリクエストと、１番目のメモリリクエストの情報を含むＣリクエストと、メモリバンク情報とに基づいてコマンドが生成される。これにより、４番目のメモリリクエストの情報を含むＨリクエストに基づくＡＣＴが信号線３５８から発行される。そして、「Ｔ＝２２」において、４番目のメモリリクエストの情報を含むＣリクエストに基づくＲＥＡＤが信号線３５９から発行される。
【０１７２】
このように、Ｈリクエストキュー３６０を備えることにより、バンク番号は同じだが行アドレスは異なるメモリリクエストが連続した場合には、本発明の第１の実施の形態と比べて効率良く複数のコマンドを生成することができる。
【０１７３】
［本発明の第２の実施の形態におけるコマンド生成部の動作例］
次に、本発明の第２の実施の形態におけるコマンド生成部３５０の動作について次図を参照して説明する。ここでは、図１３（ｂ）で示したタイミングチャートのＴ＝０乃至Ｔ＝３、Ｔ＝１０およびＴ＝１９におけるコマンド生成部３５０の動作を示す。なお、便宜上、コマンド生成部３５０が供給するＮＯＰについては、信号線での図示を省略している。なお、コマンド生成部３５０がＲリクエストキュー３２０およびＣリクエストキュー３３０からＲリクエストおよびＣリクエストを取り出す（ＰＯＰ）ことによって消去する動作については、模式的に、信号線３２９および３３９とは別の破線で示している。なお、コマンド生成部３５０がＨリクエストキュー３６０からＨリクエストを取り出す（ＰＯＰ）ことによって消去する動作については、模式的に、信号線３６９とは別の破線で示している。
【０１７４】
図１４（ａ）乃至（ｃ）は、本発明の第２の実施の形態におけるＴ＝０乃至Ｔ＝２のそれぞれのサイクルにおけるコマンド生成部３５０の動作を示す模式図である。
【０１７５】
図１４（ａ）は、図１３（ｂ）の「Ｔ＝０」におけるコマンド生成部３５０の動作を示す図である。コマンド生成部３５０は、Ｒリクエストキュー３２０およびＣリクエストキュー３３０に対して、１番目のメモリリクエストの情報を含むＲリクエストおよびＣリクエストを、信号線３２９および信号線３３９を介して出力させる。この時、Ｈリクエストキュー３６０には待機行選択情報は保持されていないため、Ｈリクエストキュー３６０から出力されるＨリクエストは無い。
【０１７６】
コマンド生成部３５０は、Ｒリクエスト、Ｃリクエストおよび状態管理部３４０から供給されるメモリバンク情報に基づいてコマンドの発行可能条件および発行可能時刻を判定する。その結果、コマンド生成部３５０は、Ｒリクエストに基づくＡＣＴは発行時刻が「０」により信号線３５９を介して発行可能、Ｃリクエストに基づくＲＥＡＤは発行不可能、プリチャージコマンドＰＲＥはいずれのバンクも発行不可能と判断する。これにより、コマンド生成部３５０は、バンク［０］における行アドレス「１５９ｄ」をバンクアクティブ状態にするＡＣＴと、ＮＯＰとを生成する。そして、コマンド生成部３５０は、ＡＣＴを信号線３５９から供給し、ＮＯＰを信号線３５８を介して供給する。
【０１７７】
その後、コマンド生成部３５０は、信号線３５７を介して、バンク［０］を指定するＡＣＴを発行したことを知らせる情報を状態管理部３４０に供給する。
【０１７８】
コマンド生成部３５０は、ＡＣＴを発行したために、Ｒリクエストキュー３２０からＲリクエストを信号線３２９を介して取り出すことによって削除する。これにより、Ｒリクエストキュー３２０では、２番目のメモリリクエストの情報を含む行選択情報がＲリクエストになる。
【０１７９】
図１４（ｂ）は、図１３（ｂ）の「Ｔ＝１」におけるコマンド生成部３５０の動作を示す図である。コマンド生成部３５０は、２番目のメモリリクエストの情報を含むＲリクエストをＲリクエストキュー３２０に出力させ、１番目のメモリリクエストの情報を含むＣリクエストをＣリクエストキュー３３０に出力させる。この時、Ｈリクエストキュー３６０には待機行選択情報は保持されていないため、Ｈリクエストキュー３６０から出力されるＨリクエストは無い。コマンド生成部３５０は、Ｒリクエスト、Ｃリクエストおよび状態管理部３４０から供給されるメモリバンク情報に基づいてコマンドの発行可能条件および発行可能時刻を判定する。その結果、コマンド生成部３５０は、Ｒリクエストに基づくＡＣＴは発行不可能、Ｃリクエストに基づくＲＥＡＤは発行不可能、プリチャージコマンドＰＲＥはいずれのバンクも発行不可能と判断する。これにより、コマンド生成部３５０は、ＮＯＰを２つ生成して信号線３５９および信号線３５８から供給する。
【０１８０】
その後、コマンド生成部３５０は、Ｒリクエストキュー３２０からＲリクエストを取り出して、その取り出されたＲリクエストをＨリクエストキュー３６０に供給する。これにより、Ｒリクエストキュー３２０では、３番目のメモリリクエストの情報を含む行選択情報がＲリクエストになる。また、Ｈリクエストキュー３６０では、２番目のメモリリクエストの情報を含む待機行選択情報がＨリクエストになる。
【０１８１】
図１４（ｃ）は、図１３（ｂ）の「Ｔ＝２」におけるコマンド生成部３５０の動作を示す図である。コマンド生成部３５０は、３番目のメモリリクエストの情報を含むＲリクエストをＲリクエストキュー３２０に出力させ、１番目のメモリリクエストの情報を含むＣリクエストをＣリクエストキュー３３０に出力させる。さらに、コマンド生成部３５０は、２番目のメモリリクエストの情報を含むＨリクエストをＨリクエストキュー３６０に出力させる。コマンド生成部３５０は、Ｒリクエスト、Ｃリクエスト、Ｈリクエストおよび状態管理部３４０から供給されるメモリバンク情報に基づいてコマンドの発行可能条件および発行可能時刻を判定する。その結果、コマンド生成部３５０は、Ｒリクエストに基づくＡＣＴは発行時刻が「０」により信号線３５９を介して発行可能、Ｃリクエストに基づくＲＥＡＤは発行時刻が「１」により信号線３５８を介して発行可能と判断する。さらに、コマンド生成部３５０は、Ｈリクエストに基づくＡＣＴは発行不可能、プリチャージコマンドＰＲＥはいずれのバンクも発行不可能と判断する。これにより、コマンド生成部３５０は、バンク［１］における行アドレス「１５９ｄ」をバンクアクティブ状態にするＡＣＴと、バンク［０］における列アドレス「ｆ８」を指定してリード状態にするＲＥＡＤとを生成する。そして、コマンド生成部３５０は、ＡＣＴを信号線３５９から供給するとともに、ＲＥＡＤを信号線３５８から供給する。
【０１８２】
その後、コマンド生成部３５０は、信号線３５７を介して、バンク［１］を指定するＡＣＴおよびバンク［０］を指定するＲＥＡＤを発行したことを知らせる情報を状態管理部３４０に供給する。
【０１８３】
コマンド生成部３５０は、Ｒリクエストに基づいてＡＣＴを発行したために、Ｒリクエストキュー３２０からＲリクエストを信号線３２９を介して取り出すことによって削除する。これにより、Ｒリクエストキュー３２０では、４番目のメモリリクエストの情報を含む行選択情報がＲリクエストになる。コマンド生成部３５０は、ＲＥＡＤを発行したために、Ｃリクエストキュー３３０からＣリクエストを信号線３３９を介して取り出すことによって削除する。これにより、Ｃリクエストキュー３３０では、２番目のメモリリクエストの情報を含む行選択情報がＣリクエストになる。
【０１８４】
図１５（ａ）乃至（ｃ）は、本発明の第２の実施の形態におけるＴ＝３、Ｔ＝１０、Ｔ＝１９のそれぞれのサイクルにおけるコマンド生成部３５０の動作を示す模式図である。
【０１８５】
図１５（ａ）は、図１３（ｂ）の「Ｔ＝３」におけるコマンド生成部３５０の動作を示す図である。コマンド生成部３５０は、４番目のメモリリクエストの情報を含むＲリクエストをＲリクエストキュー３２０に出力させ、２番目のメモリリクエストの情報を含むＣリクエストをＣリクエストキュー３３０に出力させる。さらに、コマンド生成部３５０は、２番目のメモリリクエストの情報を含むＨリクエストをＨリクエストキュー３６０に出力させる。コマンド生成部３５０は、Ｒリクエスト、Ｃリクエスト、Ｈリクエストおよび状態管理部３４０から供給されるメモリバンク情報に基づいてコマンドの発行可能条件および発行可能時刻を判定する。その結果、コマンド生成部３５０は、Ｒリクエストに基づくＡＣＴは発行不可能、Ｃリクエストに基づくＲＥＡＤは発行不可能、Ｈリクエストに基づくＡＣＴは発行不可能、プリチャージコマンドＰＲＥはいずれのバンクも発行不可能と判断する。これにより、コマンド生成部３５０は、ＮＯＰを２つ生成して信号線３５９および信号線３５８から供給する。
【０１８６】
その後、コマンド生成部３５０は、Ｈリクエストキュー３６０に空きが無いため、ＲリクエストをＨリクエストキュー３６０に移動させない。これにより、Ｒリクエストキュー３２０では、３番目のメモリリクエストの情報を含む行選択情報がＲリクエストのままである。また、Ｈリクエストキュー３６０では、２番目のメモリリクエストの情報を含む待機行選択情報がＨリクエストのままである。
【０１８７】
図１５（ｂ）は、図１３（ｂ）の「Ｔ＝１０」におけるコマンド生成部３５０の動作を示す図である。コマンド生成部３５０は、４番目のメモリリクエストの情報を含むＲリクエストをＲリクエストキュー３２０に出力させ、２番目のメモリリクエストの情報を含むＣリクエストをＣリクエストキュー３３０に出力させる。さらに、コマンド生成部３５０は、２番目のメモリリクエストの情報を含むＨリクエストをＨリクエストキュー３６０に出力させる。コマンド生成部３５０は、Ｒリクエスト、Ｃリクエスト、Ｈリクエストおよび状態管理部３４０から供給されるメモリバンク情報に基づいてコマンドの発行可能条件および発行可能時刻を判定する。その結果、コマンド生成部３５０は、Ｒリクエストに基づくＡＣＴは発行不可能、Ｃリクエストに基づくＲＥＡＤは発行不可能と判断する。さらに、コマンド生成部３５０は、Ｈリクエストに基づくＡＣＴは発行時刻が「０」により信号線３５９を介して発行可能、プリチャージコマンドＰＲＥはいずれのバンクも発行不可能と判断する。これにより、コマンド生成部３５０は、バンク［０］における行アドレス「０４８ｃ」をバンクアクティブ状態にするＡＣＴと、ＮＯＰとを生成する。そして、コマンド生成部３５０は、ＡＣＴを信号線３５９から供給するとともに、ＮＯＰを信号線３５８から供給する。
【０１８８】
その後、コマンド生成部３５０は、信号線３５７を介して、バンク［０］を指定するＡＣＴを発行したことを知らせる情報を状態管理部３４０に供給する。
【０１８９】
コマンド生成部３５０は、Ｈリクエストに基づいてＡＣＴを発行したために、Ｈリクエストキュー３６０からＨリクエストを信号線３６９を介して取り出すことによって削除する。これにより、Ｈリクエストキュー３６０は待機行選択情報を保持していない空の状態になる。そして、コマンド生成部３５０は、Ｒリクエストキュー３２０からＲリクエストを取り出して、その取り出したＲリクエストをＨリクエストキュー３６０に供給する。これにより、Ｈリクエストキュー３６０では、４番目のメモリリクエストの情報を含む待機行選択情報がＨリクエストになる。また、Ｒリクエストキュー３２０は、行選択情報が無くなり空の状態になる。
【０１９０】
図１５（ｃ）は、図１３（ｂ）の「Ｔ＝１９」におけるコマンド生成部３５０の動作を示す図である。コマンド生成部３５０は、４番目のメモリリクエストの情報を含むＣリクエストをＣリクエストキュー３３０に出力させ、４番目のメモリリクエストの情報を含むＨリクエストをＨリクエストキュー３６０に出力させる。Ｒリクエストキュー３２０には行選択情報が保持されていないため、出力されるＲリクエストは無い。コマンド生成部３５０は、Ｈリクエスト、Ｃリクエストおよび状態管理部３４０から供給されるメモリバンク情報に基づいてコマンドの発行可能条件および発行可能時刻を判定する。その結果、コマンド生成部３５０は、Ｈリクエストに基づくＡＣＴは発行時刻が「０」により信号線３５９を介して発行可能、Ｃリクエストに基づくＲＥＡＤは発行不可能、プリチャージコマンドＰＲＥはいずれのバンクも発行不可能と判断する。これにより、コマンド生成部３５０は、バンク［１］における行アドレス「０４８ｃ」をバンクアクティブ状態にするＡＣＴと、ＮＯＰとを生成する。そして、コマンド生成部３５０は、ＡＣＴを信号線３５９から供給するとともに、ＮＯＰを信号線３５８から供給する。
【０１９１】
その後、コマンド生成部３５０は、信号線３５７を介して、バンク［１］を指定するＡＣＴを発行したことを知らせる情報を状態管理部３４０に供給する。
【０１９２】
コマンド生成部３５０は、Ｈリクエストに基づいてＡＣＴを発行したために、Ｈリクエストキュー３６０からＨリクエストを信号線３６９を介して取り出すことによって削除する。これにより、Ｈリクエストキュー３６０は待機行選択情報を保持していない空の状態になる。そして、コマンド生成部３５０は、Ｒリクエストキュー３２０に待機状態のＲリクエストは無いためＨリクエストキュー３６０を空の状態のままにする。
【０１９３】
このように、本発明の第２の実施の形態によれば、Ｈリクエストキュー３６０を備えることにより、バンク番号は同じだが行アドレスは異なっているリクエストが連続した場合において、効率良くコマンドを発行することができる。
【０１９４】
次に、同じ発行時刻に複数のコマンドが発行可能となる場合におけるコマンド生成部３５０のコマンド衝突回避の一例について図面を参照して説明する。
【０１９５】
［本発明の第１および第２の実施の形態においてＲＥＡＤおよびＷＲＩＴＥよりもプリチャージコマンドＰＲＥを優先するとデータの読み出しの効率が良いコマンド衝突回避例］
図１６は、本発明の第１および第２の実施の形態においてプリチャージコマンドＰＲＥを優先してコマンド衝突を回避することによってデータの読み出しの効率が良くなる場合のコマンド衝突回避例を示すタイミングチャートである。ここでは、メモリクロックを共通の横軸として、メモリコントローラ２００がアドレス／コマンドバス２０９を介してＳＤＲＡＭ１２０に供給するコマンドが示されている。さらに、このコマンドにより読み出されてＳＤＲＡＭ１２０からメモリバス２０８を介してメモリコントローラ２００に供給されるデータが示されている。
【０１９６】
ここでは、コマンド生成部３５０が発行するコマンドとして、バンク［０］については、１番目にＲＥＡＤ、２番目にＲＥＡＤ、３番目にプリチャージコマンドＰＲＥを想定する。この場合において、バンク［１］については、１番目にプリチャージコマンドＰＲＥ、２番目にＡＣＴ、３番目にＲＥＡＤを発行する場合を想定する。そして、バンク［０］を指定する１番目のＲＥＡＤと、バンク［１］を指定する１番目のプリチャージコマンドＰＲＥとの間にコマンド衝突が生じることを想定する。また、「ＢＬ」は「８」を想定し、「ｔＲＰＤ」は「５」を想定する。「ｔＲＰＤ」以外のＳＤＲＡＭ１２０の性能については、図７と同様のものとする。
【０１９７】
図１６（ａ）は、コマンド生成部３５０がコマンド衝突回避判断をする前の状態を模式的に示したものである。「Ｔ＝０」において、バンク［０］を指定するＲＥＡＤおよびバンク［１］を指定するプリチャージコマンドＰＲＥが衝突している。すなわち、この状態は、コマンド生成部３５０において同じコマンドクロックサイクルの同じ発行時刻にバンク［０］を指定するＲＥＡＤおよびバンク［１］を指定するプリチャージコマンドＰＲＥが発行可能と判断された状態を示している。コマンド生成部３５０は、同じサイクルの同じ発行時刻に複数のコマンドを生成することはできないため、このような場合には、予め設定された条件によりコマンド衝突の回避判断をする。そして、回避判断により、一方のコマンドはそのサイクルのその発行時刻に発行され、他方のコマンドはその後に発行される。
【０１９８】
図１６（ｂ）は、「Ｔ＝０」においてコマンド生成部３５０がＲＥＡＤを優先させるコマンド衝突回避判断をした場合を模式的に示したものである。ここでは、コマンド生成部３５０において、ＲＥＡＤおよびＷＲＩＴＥの発行をプリチャージコマンドＰＲＥの発行より優先させる設定がされていると想定する。
【０１９９】
コマンド生成部３５０は、「Ｔ＝０」に相当するタイミングにおいて、コマンド衝突が生じたバンク［０］を指定する１番目のＲＥＡＤとバンク［１］を指定するプリチャージコマンドＰＲＥとのうち、バンク［０］を指定する１番目のＲＥＡＤを優先して発行する。これにより、「Ｔ＝０」においてバンク［０］を指定する１番目のＲＥＡＤが発行される。そして、「Ｔ＝１」においてバンク［１］を指定するプリチャージコマンドＰＲＥが発行される。
【０２００】
その後、「Ｔ＝４」でバンク［０］を指定する２番目のＲＥＡＤ，「Ｔ＝６」でバンク［１］を指定するＡＣＴ、「Ｔ＝９」でバンク［０］を指定するプリチャージコマンドＰＲＥ、「Ｔ＝１１」でバンク［１］を指定するＲＥＡＤが発行される。
【０２０１】
この結果、「Ｔ＝５乃至Ｔ＝８」においてバンク［０］を指定する１番目のＲＥＡＤにより読み出されたデータが供給され、「Ｔ＝９乃至Ｔ＝１２」においてバンク［０］を指定する２番目のＲＥＡＤにより読み出されたデータが供給される。さらに、「Ｔ＝１６乃至Ｔ＝１９」においてバンク［１］を指定するＲＥＡＤにより読み出されたデータが供給される。
【０２０２】
図１６（ｃ）は、「Ｔ＝０」においてコマンド生成部３５０がプリチャージコマンドＰＲＥを優先させるコマンド衝突回避判断をした場合を模式的に示したものである。ここでは、コマンド生成部３５０において、プリチャージコマンドＰＲＥの発行をＲＥＡＤおよびＷＲＩＴＥの発行より優先させる設定がされていると想定する。さらに、コマンド生成部３５０において、ＡＣＴの発行をＲＥＡＤおよびＷＲＩＴＥの発行より優先させる設定がされていると想定する。
【０２０３】
コマンド生成部３５０は、「Ｔ＝０」に相当するタイミングにおいて、コマンド衝突が生じたバンク［０］を指定する１番目のＲＥＡＤとバンク［１］を指定するプリチャージコマンドＰＲＥとのうち、プリチャージコマンドＰＲＥを優先して発行する。これにより、「Ｔ＝０」においてバンク［１］を指定するプリチャージコマンドＰＲＥが発行される。そして、「Ｔ＝１」においてバンク［０］を指定する１番目のＲＥＡＤが発行される。
【０２０４】
その後、「Ｔ＝５」においてバンク［１］を指定するＡＣＴとバンク［０］を指定する２番目のＲＥＡＤとの間でコマンド衝突が発生する。コマンド生成部３５０は、「Ｔ＝５」に相当するタイミングにおいて、バンク［１］を指定するＡＣＴを優先して発行する。これにより「Ｔ＝５」においてバンク［１］を指定するＡＣＴが発行される。そして、「Ｔ＝６」においてバンク［０］を指定する２番目のＲＥＡＤが発行される。
【０２０５】
その後、「Ｔ＝１０」においてバンク［１］を指定するＲＥＡＤ，「Ｔ＝１１」においてバンク［０］を指定するプリチャージコマンドＰＲＥが発行される。
【０２０６】
この結果、「Ｔ＝６乃至Ｔ＝９」においてバンク［０］を指定する１番目のＲＥＡＤにより読み出されたデータが供給され、「Ｔ＝１１乃至Ｔ＝１４」においてバンク［０］を指定する２番目のＲＥＡＤにより読み出されたデータが供給される。さらに、「Ｔ＝１５乃至Ｔ＝１８」においてバンク［１］を指定するＲＥＡＤにより読み出されたデータが供給される。
【０２０７】
このように、本発明の第１および第２の実施の形態においては、図１６（ａ）に示した様なコマンド衝突が発生した場合には、ＲＥＡＤよりもプリチャージコマンドＰＲＥおよびＡＣＴを優先するとデータの転送効率が良いコマンド衝突回避をすることができる。なお、図１６では、ＲＥＡＤを発行する場合を想定したが、ＷＲＩＴＥを発行する場合についても同様であり、ＷＲＩＴＥよりもプリチャージコマンドＰＲＥおよびＡＣＴを優先すると、データの転送効率が良いコマンド衝突回避をすることができる。
【０２０８】
［本発明の第１および第２の実施の形態においてプリチャージコマンドＰＲＥよりもＲＥＡＤおよびＷＲＩＴＥを優先するとデータの読み出しの効率が良いコマンド衝突の回避例］
図１７は、本発明の第１および第２の実施の形態においてＲＥＡＤを優先してコマンド衝突を回避するとデータの読み出しの効率が良くなる場合のコマンド衝突回避例を示すタイミングチャートである。ここでは、メモリクロックを共通の横軸として、メモリコントローラ２００がアドレス／コマンドバス２０９を介してＳＤＲＡＭ１２０に供給するコマンドが示されている。さらに、このコマンドにより読み出されてＳＤＲＡＭ１２０からメモリバス２０８を介してメモリコントローラ２００に供給されるデータが示されている。
【０２０９】
ここでは、コマンド生成部３５０が発行するコマンドとして、バンク［０］については、１番目にＲＥＡＤ、２番目にＲＥＡＤ、３番目にＲＥＡＤ、４番目にプリチャージコマンドＰＲＥを想定する。この場合において、バンク［１］については、１番目にプリチャージコマンドＰＲＥ、２番目にＡＣＴ、３番目にＲＥＡＤを発行する場合を想定する。そして、バンク［０］を指定する１番目のＲＥＡＤとバンク［１］を指定する１番目のプリチャージコマンドＰＲＥとの間にコマンド衝突が生じることを想定する。また、「ＢＬ」は「８」を想定し、「ｔＲＰＤ」は「５」を想定する。「ｔＲＰＤ」以外のＳＤＲＡＭ１２０の性能については、図７と同様のものとする。
【０２１０】
図１７（ａ）は、コマンド生成部３５０がコマンド衝突回避判断をする前の状態を模式的に示したものである。「Ｔ＝０」において、バンク［０］を指定するＲＥＡＤおよびバンク［１］を指定するプリチャージコマンドＰＲＥが衝突している。すなわち、この状態は、コマンド生成部３５０において同じコマンドクロックサイクルの同じ発行時刻にバンク［０］を指定するＲＥＡＤおよびバンク［１］を指定するプリチャージコマンドＰＲＥが発行可能と判断された状態を示している。コマンド生成部３５０は、同じサイクルの同じ発行時刻に複数のコマンドを生成することはできないため、このような場合には、予め設定された条件によりコマンド衝突の回避判断をする。そして、回避判断により、一方のコマンドはそのサイクルのその発行時刻に発行され、他方のコマンドはその後に発行される。
【０２１１】
図１７（ｂ）は、「Ｔ＝０」においてコマンド生成部３５０がＲＥＡＤを優先させるコマンド衝突回避判断をした場合を模式的に示したものである。ここでは、コマンド生成部３５０において、ＲＥＡＤおよびＷＲＩＴＥの発行をプリチャージコマンドＰＲＥの発行より優先させる設定がされていると想定する。
【０２１２】
コマンド生成部３５０は、「Ｔ＝０」に相当するタイミングにおいて、コマンド衝突が生じたバンク［０］を指定する１番目のＲＥＡＤとバンク［１］を指定するプリチャージコマンドＰＲＥとのうち、バンク［０］を指定する１番目のＲＥＡＤを優先して発行する。これにより、「Ｔ＝０」においてバンク［０］を指定する１番目のＲＥＡＤが発行される。そして、「Ｔ＝１」においてバンク［１］を指定するプリチャージコマンドＰＲＥが発行される。
【０２１３】
その後、「Ｔ＝４」でバンク［０］を指定する２番目のＲＥＡＤ，「Ｔ＝６」でバンク［１］を指定するＡＣＴ、「Ｔ＝８」でバンク［０］を指定するＲＥＡＤが発行される。そして、「Ｔ＝１２」でバンク［１］を指定するＲＥＡＤ、「Ｔ＝１３」でバンク［０］を指定するプリチャージコマンドＰＲＥが発行される。
【０２１４】
この結果、「Ｔ＝５乃至Ｔ＝８」においてバンク［０］を指定する１番目のＲＥＡＤにより読み出されたデータが供給され、「Ｔ＝９乃至Ｔ＝１２」においてバンク［０］を指定する２番目のＲＥＡＤにより読み出されたデータが供給される。さらに、「Ｔ＝１３乃至Ｔ＝１６」においてバンク［０］を指定する３番目のＲＥＡＤにより読み出されたデータが供給され、「Ｔ＝１７乃至Ｔ＝２０」においてバンク［１］を指定するＲＥＡＤにより読み出されたデータが供給される。
【０２１５】
図１７（ｃ）は、「Ｔ＝０」においてコマンド生成部３５０がプリチャージコマンドＰＲＥを優先させるコマンド衝突回避判断をした場合を模式的に示したものである。ここでは、コマンド生成部３５０において、プリチャージコマンドＰＲＥの発行をＲＥＡＤおよびＷＲＩＴＥの発行より優先させる設定がされていると想定する。さらに、コマンド生成部３５０において、ＡＣＴの発行をＲＥＡＤおよびＷＲＩＴＥの発行より優先させる設定がされていると想定する。
【０２１６】
コマンド生成部３５０は、「Ｔ＝０」を指定する相当するタイミングにおいて、コマンド衝突が生じたバンク［０］を指定する１番目のＲＥＡＤとバンク［１］を指定するプリチャージコマンドＰＲＥとのうち、プリチャージコマンドＰＲＥを優先して発行する。これにより、「Ｔ＝０」においてバンク［１］を指定するプリチャージコマンドＰＲＥが発行される。そして、「Ｔ＝１」においてバンク［０］を指定する１番目のＲＥＡＤが発行される。
【０２１７】
その後、「Ｔ＝５」においてバンク［１］を指定するＡＣＴとバンク［０］を指定する２番目のＲＥＡＤとの間でコマンド衝突が発生する。コマンド生成部３５０は、「Ｔ＝５」に相当するタイミングにおいて、バンク［１］を指定するＡＣＴを優先して発行する。これにより「Ｔ＝５」においてバンク［１］を指定するＡＣＴが発行される。そして、「Ｔ＝６」においてバンク［０］を指定する２番目のＲＥＡＤが発行される。
【０２１８】
その後、「Ｔ＝１０」においてバンク［０］を指定するＲＥＡＤ、「Ｔ＝１４」でバンク［１］を指定するＲＥＡＤ、「Ｔ＝１５」でバンク［０］を指定するプリチャージコマンドＰＲＥを生成する。
【０２１９】
この結果、「Ｔ＝６乃至Ｔ＝９」においてバンク［０］を指定する１番目のＲＥＡＤにより読み出されたデータが供給され、「Ｔ＝１１乃至Ｔ＝１４」においてバンク［０］を指定する２番目のＲＥＡＤにより読み出されたデータが供給される。さらに、「Ｔ＝１５乃至Ｔ＝１８」においてバンク［０］を指定する３番目のＲＥＡＤにより読み出されたデータが供給され、「Ｔ＝１９乃至Ｔ＝２２」においてバンク［１］を指定するＲＥＡＤにより読み出されたデータが供給される。
【０２２０】
このように、本発明の第１および第２の実施の形態においては、図１７（ａ）に示した様なコマンド衝突が発生した場合には、プリチャージコマンドＰＲＥおよびＡＣＴよりもＲＥＡＤを優先するとデータの読出しの効率が良いコマンド衝突回避をすることができる。なお、図１７では、ＲＥＡＤを発行する場合を想定したが、ＷＲＩＴＥを発行する場合についても同様であり、プリチャージコマンドＰＲＥおよびＡＣＴよりもＷＲＩＴＥを優先するとデータの転送効率が良いコマンド衝突回避をすることができる。
【０２２１】
本発明の第１および第２の実施の形態においては、予め設定したコマンドの優先順序を用いることでコマンド衝突の回避を行う。しかしながら、コマンド衝突を回避する場合には、図１６および図１７において示したように、コマンド衝突の状態に合わせて優先させるコマンドを選択すると、効率が良いコマンド衝突の回避をすることができる。
【０２２２】
次に、コマンド衝突処理時にどのコマンドを優先させるかをコマンド生成部３５０が選択する第３の実施の形態について図面を参照して説明する。
【０２２３】
＜３．第３の実施の形態＞
［第３の実施の形態におけるリクエスト生成部の動作例］
図１８は、本発明の第３の実施の形態におけるリクエスト生成部３１０の動作例を示すタイミングチャートである。リクエスト生成部３１０は、図３に示した信号線３１９における信号に加えてリクエストＩＤを生成する。ここでは、リクエストＩＤ以外の信号は、図３と同様のものであるため、ここでの各信号の説明を省略する。
【０２２４】
第３の実施の形態におけるリクエスト生成部３１０は、信号線１０９を介してデータアクセス要求が入力されると、リクエストＩＤ、オペコード、ｏ＿ｂａｎｋ、ｏ＿ｒｏｗ、ｏ＿ｃｏｌｕｍｎ、ｏ＿ｌｅｎｇｔｈの信号を含むメモリリクエストを生成する。このリクエストＩＤは、メモリリクエストのうちメモリリクエストの生成された順序を示す番号の信号である。このリクエストＩＤは、例えば、メモリリクエストが生成された順に「１」ずつ増加する数で表される信号である。
【０２２５】
このように、本発明の第３の実施の形態におけるリクエスト生成部３１０は、メモリリクエスト要求を結合および分割することによって、バースト長単位のリクエストＩＤを含むメモリリクエストを生成する。
【０２２６】
［本発明の第３の実施の形態におけるコマンド衝突回避判断例］
図１９は、本発明の第３の実施の形態におけるコマンド生成部３５０がコマンド衝突回避動作をするために判断する内容の一例を示す一覧表である。ここでは、左の列にはコマンド生成部３５０のコマンド衝突回避動作の内容が表され、右の列にはその動作条件が表されている。
【０２２７】
動作条件を示す列における「Ｐ」は、ＰＲＥ発行から同じバンクのＲＥＡＤ発行までの期間において発行できるＲＥＡＤの最大数を示している。すなわち、この「Ｐ」は、図１９の動作条件におけるカッコ内で示した「Ｐ」に関する数式により求まる正の整数の最大値である。
【０２２８】
動作条件を示す列における「Ａ」は、ＡＣＴ発行から同じバンクのＲＥＡＤおよびＷＲＩＴＥ発行までの期間において発行できるＲＥＡＤの最大数を示している。すなわち、この「Ａ」は、ここでの動作条件におけるカッコ内で示した「Ａ」に関する数式により求まる正の整数の最大値である。
【０２２９】
ＣａｓＲｅｑＢｎｋのＲＥＡＤよりＲａｓＲｅｑＢｎｋのＰＲＥを優先発行とは、Ｃリクエストに基づくＲＥＡＤとＲリクエストが指定するバンクのＰＲＥとの間のコマンド衝突時に、ＰＲＥをそのタイミングで発行させ、ＲＥＡＤを後で発行させる動作である。この優先発行の動作条件は、ＲリクエストのリクエストＩＤとＣリクエストのリクエストＩＤとの差分が「Ｐ」以下の場合に成立する。
【０２３０】
ＲａｓＲｅｑＢｎｋのＰＲＥよりＣａｓＲｅｑＢｎｋのＲＥＡＤを優先発行とは、Ｒリクエストが指定するバンクのＰＲＥとＣリクエストに基づくＲＥＡＤとの間のコマンド衝突時に、ＲＥＡＤをそのタイミングで発行させ、ＰＲＥを後で発行させる動作である。この優先発行の動作条件は、ＲリクエストのリクエストＩＤとＣリクエストのリクエストＩＤとの差分が「Ｐ」より大きい場合に成立する。
【０２３１】
ＣａｓＲｅｑＢｎｋのＲＥＡＤよりＲａｓＲｅｑＢｎｋのＡＣＴを優先発行とは、Ｃリクエストに基づくＲＥＡＤとＲリクエストが指定するバンクのＡＣＴとの間のコマンド衝突時に、ＡＣＴをそのタイミングで発行させ、ＲＥＡＤを後で発行させる動作である。この優先発行の動作条件は、ＲリクエストのリクエストＩＤとＣリクエストのリクエストＩＤとの差分が「Ａ」以下の場合に成立する。
【０２３２】
ＲａｓＲｅｑＢｎｋのＡＣＴよりＣａｓＲｅｑＢｎｋのＲＥＡＤを優先発行とは、Ｒリクエストが指定するバンクのＡＣＴとＣリクエストに基づくＲＥＡＤとの間のコマンド衝突時に、ＲＥＡＤをそのタイミングで発行させ、ＡＣＴを後で発行させる動作である。この優先発行の動作条件は、ＲリクエストのリクエストＩＤとＣリクエストのリクエストＩＤとの差分が「Ａ」より大きい場合に成立する。
【０２３３】
［ＰＲＥの発行を優先させる場合におけるコマンド生成部の動作例］
図２０は、本発明の第３の実施の形態においてプリチャージコマンドＰＲＥの発行を優先させる判断をする場合におけるコマンド生成部３５０の動作を示す模式図である。なお、便宜上、コマンド生成部３５０がＲリクエストキュー３２０およびＣリクエストキュー３３０からＲリクエストおよびＣリクエストを取り出す（ＰＯＰ）ことによって消去する動作については、模式的に、信号線３２９および３３９とは別の破線で示している。
【０２３４】
リクエスト生成部３１０は、以下の６個のメモリリクエストを生成してＲリクエストキュー３２０およびＣリクエストキュー３３０に順番を維持して供給することを想定する。ここで示すメモリリクエストは、そのメモリリクエストにおける（リクエストＩＤ、オペコード、バンク番号、行アドレス、列アドレス、メモリクロックのサイクル数で示すデータ長）を示している。
【０２３５】
入力されるメモリリクエストは、１番目は（０、ＲＥＡＤ、１、３７ｂｆ、０４８、４）、２番目は（１、ＲＥＡＤ、１、３７ｂｆ、０５０、４）、３番目は（２、ＲＥＡＤ、０、３７ｂｆ、０４８、４）を想定する。続いて、４番目は（３、ＲＥＡＤ、０、３７ｂｆ、０５０、４）、５番目は（４、ＲＥＡＤ、１、４８ｃ０、０３０、４）、６番目は（５、ＲＥＡＤ、１、４８ｃ０、０３８、４）を想定する。
【０２３６】
また、Ｒリクエストキュー３２０では、５番目のメモリリクエストの情報を含む行選択情報がＲリクエストである状態を想定する。Ｃリクエストキュー３３０では、３番目のメモリリクエストの情報を含む列選択情報がＣリクエストである状態を想定する。さらに、状態管理部３４０が保持するメモリバンク情報は、バンク［１］についてはＰＲＥが発行時刻「０」で信号線３５９を介して発行可能、バンク［０］についてはＲＥＡＤが発行時刻「０」で信号線３５９を介して発行可能である状態とする。なお、ここでは、「ＢＬ」は「８」を想定し、「ｔＲＰＤ」は「５」を想定する。また、「ｔＲＰＤ」以外のＳＤＲＡＭ１２０の性能については、図７と同様のものとする。すなわち、「ｔＲＣＤ」は「５」、「ｔＲＰ」は５、「ＢＬ／２」は「４」である。よって「Ｐ」は２である。
【０２３７】
コマンド生成部３５０は、Ｒリクエストキュー３２０にはＲリクエスト、Ｃリクエストキュー３３０にはＣリクエスト、状態管理部３４０にはメモリバンク情報を出力させる。そして、コマンド生成部３５０は、コマンドの発行可能条件および発行可能時刻を判定する。コマンド生成部３５０は、この判定とともに、ＲリクエストのリクエストＩＤとＣリクエストのリクエストＩＤとの差分を算出し、この算出した差分と「Ｐ」および「Ａ」との比較を行う。
【０２３８】
その結果、コマンド生成部３５０は、Ｃリクエストに基づくＲＥＡＤは発行時刻が「０」により信号線３５９を介して発行可能、プリチャージコマンドＰＲＥはバンク［１］については発行時刻が「０」により信号線３５９を介して発行可能と判断する。また、コマンド生成部３５０は、ＲリクエストのリクエストＩＤとＣリクエストのリクエストＩＤとの差分が「２」であるため、Ｃリクエストに基づくＲＥＡＤとバンク［１］を指定するＰＲＥとがコマンド衝突した場合にはＰＲＥを優先発行させると判断する。すなわち、コマンド生成部３５０は、発行時刻「０」におけるコマンド衝突の回避判断の結果、発行時刻「０」においてプリチャージコマンドＰＲＥを発行させ、発行時刻「１」においてＲＥＡＤを発行させる判断をする。
【０２３９】
これらの判断より、コマンド生成部３５０は、バンク［０］における列アドレス「０４８」を指定してリード状態にするＲＥＡＤと、バンク［１］を指定するプリチャージコマンドＰＲＥとを生成する。そして、コマンド生成部３５０は、プリチャージコマンドＰＲＥを信号線３５９から供給するとともに、ＲＥＡＤを信号線３５８から供給する。
【０２４０】
［ＲＥＡＤおよびＷＲＩＴＥの発行を優先させる場合におけるコマンド生成部の動作例］
図２１は、本発明の第３の実施の形態においてＲＥＡＤの発行を優先させる判断をする場合におけるコマンド生成部３５０の動作を示す模式図である。なお、便宜上、コマンド生成部３５０がＲリクエストキュー３２０およびＣリクエストキュー３３０からＲリクエストおよびＣリクエストを取り出す（ＰＯＰ）ことによって消去する動作は、模式的に、信号線３２９および３３９とは別の破線により示している。
【０２４１】
リクエスト生成部３１０は、以下の７個のメモリリクエストを生成してＲリクエストキュー３２０およびＣリクエストキュー３３０に順番を維持して供給することを想定する。ここで示すメモリリクエストは、そのメモリリクエストにおける（リクエストＩＤ、オペコード、バンク番号、行アドレス、列アドレス、メモリクロックのサイクル数で示すデータ長）を示している。
【０２４２】
入力されるメモリリクエストは、１番目は（０、ＲＥＡＤ、１、３７ｂｆ、０４８、４）、２番目は（１、ＲＥＡＤ、１、３７ｂｆ、０５０、４）、３番目は（２、ＲＥＡＤ、０、３７ｂｆ、０４８、４）を想定する。続いて、４番目は（３、ＲＥＡＤ、０、３７ｂｆ、０５０、４）、５番目は（４、ＲＥＡＤ、０、３７ｂｆ、０５８、４）、６番目は（５、ＲＥＡＤ、１、４８ｃ０、０３０、４）、７番目は（６、ＲＥＡＤ、１、４８ｃ０、０３８、４）とする。
【０２４３】
また、Ｒリクエストキュー３２０では、６番目のメモリリクエストの情報を含む行選択情報がＲリクエストである状態を想定する。Ｃリクエストキュー３３０では、３番目のメモリリクエストの情報を含む列選択情報がＣリクエストである状態を想定する。さらに、状態管理部３４０が保持するメモリバンク情報は、バンク［１］についてはＰＲＥが発行時刻「０」により信号線３５９を介して発行可能、バンク［０］についてはＲＥＡＤが発行時刻「０」により信号線３５９を介して発行可能である状態とする。なお、ここでは、「ＢＬ」は「８」を想定し、「ｔＲＰＤ」は「５」を想定する。また、「ｔＲＰＤ」以外のＳＤＲＡＭ１２０の性能については、図７と同様のものとする。すなわち、「ｔＲＣＤ」は「５」、「ｔＲＰ」は５、「ＢＬ／２」は「４」である。よって「Ｐ」は２である。
【０２４４】
コマンド生成部３５０は、Ｒリクエストキュー３２０にはＲリクエスト、Ｃリクエストキュー３３０にはＣリクエスト、状態管理部３４０にはメモリバンク情報を出力させる。そして、コマンド生成部３５０は、コマンドの発行可能条件および発行可能時刻を判定する。さらに、コマンド生成部３５０は、この判定とともに、ＲリクエストのリクエストＩＤとＣリクエストのリクエストＩＤとの差分を算出し、この算出した差分と「Ｐ」および「Ａ」との比較を行う。
【０２４５】
その結果、コマンド生成部３５０は、Ｃリクエストに基づくＲＥＡＤは発行時刻が「０」により信号線３５９を介して発行可能、ＰＲＥはバンク［１］については発行時刻が「０」により信号線３５９を介して発行可能と判断する。また、コマンド生成部３５０は、ＲリクエストのリクエストＩＤとＣリクエストのリクエストＩＤとの差分が「３」であるため、Ｃリクエストに基づくＲＥＡＤとバンク［１］を指定するＰＲＥとがコマンド衝突した場合にはＲＥＡＤを優先発行すると判断する。すなわち、コマンド生成部３５０は、発行時刻「０」におけるコマンド衝突の回避判断の結果、発行時刻「０」においてＲＥＡＤを発行させ、発行時刻「１」においてプリチャージコマンドＰＲＥを発行させる判断をする。
【０２４６】
これらの判断より、コマンド生成部３５０は、バンク［０］における列アドレス「０４８」を指定してリード状態にするＲＥＡＤと、バンク［１］を指定するプリチャージコマンドＰＲＥとを生成する。そして、コマンド生成部３５０は、ＲＥＡＤを信号線３５９から供給し、プリチャージコマンドＰＲＥを信号線３５８から供給する。
【０２４７】
このように、本発明の第３の実施の形態によれば、リクエストＩＤを用いてコマンド衝突回避をする場合のコマンドの優先順序を判断することによって、データ転送効率が低下しないようにコマンド衝突を回避することができる。
【０２４８】
このように、本発明の実施の形態によれば、メモリクロックの１／Ｎの周波数で動作するコマンド生成部３５０によりＮ個のコマンドを生成することによって、ＳＤＲＡＭ１２０の動作を指示することできる。すなわち、本発明の実施の形態によれば、メモリクロック以下の周波数で動作して効率良く複数のコマンドを生成することができる。これにより、メモリコントローラにおける消費電力の低下および高周波ノイズの低減を図ることができる。
【０２４９】
なお、ここでは、Ｒリクエストキュー３２０は、オペコード、バンク番号、および行アドレスを行選択情報として保持するものを想定し、Ｃリクエストキュー３３０は、オペコード、バンク番号、列アドレス、データ長を列選択情報として保持するものを想定した。しかしながら、Ｒリクエストキュー３２０およびＣリクエストキュー３３０が保持するデータについては一例を示したものであり、これに限るものではない。例えば、Ｒリクエストキュー３２０およびＣリクエストキュー３３０は、メモリリクエストの情報を全て保持し、メモリリクエストの全ての情報がＲリクエストおよびＣリクエストとしてコマンド生成部３５０に入力されるものとしてもよい。これにより、例えば、コマンド生成部３５０は、ＲリクエストおよびＣリクエストのうちのオペコード、バンク番号、行アドレス、およびデータ長を用いて複数のコマンドを生成する装置が考えられる。
【０２５０】
なお、本発明の実施の形態は本発明を具現化するための一例を示したものであり、上述のように特許請求の範囲における発明特定事項とそれぞれ対応関係を有する。ただし、本発明は実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変形を施すことができる。
【０２５１】
また、本発明の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disk）、メモリカード、ブルーレイディスク（Blu-ray Disc（登録商標））等を用いることができる。
【符号の説明】
【０２５２】
１００  メモリ制御装置
１０８、１０９、２２９、３０８、３０９、３１９、３２９、３３９、３４９、３５７、３５８、３５９、３６９  信号線
２００  メモリコントローラ
２０８  メモリバス
２０９  アドレス／コマンドバス
２２０  同期セレクタ部
２３０  メモリクロックコマンド出力部
２４０  データバッファ
２５０  メモリインタフェース
３００  コマンド決定部
３１０  リクエスト生成部
３２０  Ｒリクエストキュー
３３０  Ｃリクエストキュー
３４０  状態管理部
３５０  コマンド生成部
３６０  Ｈリクエストキュー
５００  コマンド同期出力部
５１０  第１コマンド出力部
５２０  第２コマンド出力部
【図１】
2010231495.tif 000003
【図２】
2010231495.tif 000004
【図３】
2010231495.tif 000005
【図４】
2010231495.tif 000006
【図５】
2010231495.tif 000007
【図６】
2010231495.tif 000008
【図７】
2010231495.tif 000009
【図８】
2010231495.tif 000010
【図９】
2010231495.tif 000011
【図１０】
2010231495.tif 000012
【図１１】
2010231495.tif 000013
【図１２】
2010231495.tif 000014
【図１３】
2010231495.tif 000015
【図１４】
2010231495.tif 000016
【図１５】
2010231495.tif 000017
【図１６】
2010231495.tif 000018
【図１７】
2010231495.tif 000019
【図１８】
2010231495.tif 000020
【図１９】
2010231495.tif 000021
【図２０】
2010231495.tif 000022
【図２１】
2010231495.tif 000023