(57)【特許請求の範囲】
【請求項１】
ライトデータを保持するデータバッファとコマンドを保持するコマンドバッファとを各々が備える複数のバスインターフェースと、
前記複数のバスインターフェースの少なくとも１つから発行されるコマンド及びデータを制御し、メモリへの書き込みを行うメモリコントローラコア部とを備え、
前記メモリコントローラコア部が、
前記複数のバスインターフェースのコマンドバッファの少なくとも１つに保持されているコマンドを複数受け付け、該複数のコマンドをリオーダするリオーダ手段と、前記複数のバスインターフェースのデータバッファから取得するライトデータを保持するライトデータキューと、
前記複数のバスインターフェースのデータバッファに保持されているライトデータを、当該ライトデータに関するコマンドについて前記リオーダ手段がリオーダする前に前記データバッファから取得して前記ライトデータキューに格納するとともに、前記リオーダ手段によりリオーダしたコマンドの順に基づいて前記ライトデータキューに格納しているライトデータを出力するライトデータ制御手段とを有することを特徴とするメモリコントローラ。
【請求項２】
前記リオーダ手段が、コマンドを保持するコマンドキューと、当該コマンドキューに格納しているコマンドをリオーダするリオーダ回路とを有することを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記ライトデータ制御手段は、前記リオーダ回路によってリオーダされたコマンドを格納するコマンドキューの先頭に保持されているコマンドを出力することを特徴とする請求項２に記載のメモリコントローラ。
【請求項４】
前記複数のバスインターフェースの其々は、前記コマンドバッファに保持しているコマンドを、内部バスを介して前記メモリコントローラコア部へ送信することを特徴とする請求項１乃至３のいずれか１項に記載のメモリコントローラ。
【請求項５】
ライトデータを保持するデータバッファとコマンドを保持するコマンドバッファとを各々が備える複数のバスインターフェース部と、前記複数のバスインターフェースのデータバッファから取得するライトデータを保持するライトデータキューを備え前記複数のバスインターフェースの少なくとも１つから発行されるコマンド及びデータを制御し、メモリへの書き込みを行うメモリコントローラコア部とを有するメモリコントローラの制御方法であって、
前記複数のバスインターフェースのコマンドバッファの少なくとも１つに保持されているコマンドを複数受け付け、該複数のコマンドをリオーダするリオーダ工程と、前記複数のバスインターフェースのデータバッファに保持されているライトデータを、当該ライトデータに関するコマンドについて前記リオーダ工程でリオーダする前に前記データバッファから取得して前記ライトデータキューに格納するとともに、前記リオーダ工程でリオーダしたコマンドの順に基づいて前記ライトデータキューに格納しているライトデータを出力するライトデータ制御工程とを有することを特徴とするメモリコントローラの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリを制御するメモリコントローラに関するものである。
【背景技術】
【０００２】
従来、メモリコントローラの内部において、コマンドキュー内のコマンドをリオーダリングして発行するものが考案されている（例えば特許文献１参照）。
【０００３】
図２は、従来のメモリコントローラの構成例を示す図である。
【０００４】
図２において、０００は複数バスインターフェースを持つメモリコントローラであり、１００はメモリコントローラコア部である。
【０００５】
１１０は複数バスインターフェースから受信したコマンドを制御するコマンド制御部である。１１１は複数バスインターフェースから受信したコマンドを保持するコマンドキューである。１１２はコマンドキュー１１１内のコマンドに対してリオーダリングを行うリオーダリング回路である。
【０００６】
１２０は、ライトデータ制御部である。コマンドキュー１１１がメモリ２００にライトコマンドを発行する際に、該当コマンドのマスターとなるバスインターフェースのライトデータキューからライトデータをリードし、メモリ２００にライトする。
【０００７】
１２１はバスインターフェースからリードしたライトデータを一時的に保持するライトデータバッファである。
【０００８】
１３０はコマンド制御部１１０とライトデータ制御部１２０とメモリ２００とのデータの受け渡しを行うメモリコマンド制御部である。
【０００９】
１４０はコマンド制御部１１０やライトデータ制御部１２０と複数バスインターフェースとの間でコマンドやデータの受け渡しを行う内部バスである。
【００１０】
２００はメモリであり、３１０、３２０、３３０はバスインターフェースである。
【００１１】
３１１、３２１、３３１は、バスインターフェース３１０、３２０、３３０がメモリコントローラ０００外部のバスからライトやリードの要求を一時的に保持するコマンドバッファである。
【００１２】
３１２、３２２、３３２はバスインターフェース３１０、３２０、３３０がメモリコントローラ０００外部のバスからライトの要求を受信した際にライトするデータを保持するライトデータキューである。
【００１３】
以下、図２、図５、図６を用いて従来のメモリコントローラの動作について説明する。
【００１４】
バスインターフェースＡ（３１０）、バスインターフェースＢ（３２０）、バスインターフェースＣ（３３０）がそれぞれに接続されたバスからライトやリードの要求を受信する。
【００１５】
そのとき、バスインターフェースＡ（３１０）はライト、バスインターフェースＢ（３２０）はリード、バスインターフェースＣ（３３０）はライトの要求を受信したとする。
【００１６】
コマンドバッファ３１１にはライト、コマンドバッファ３２１にはリード、コマンドバッファ３３１にはライトのコマンドが保持される。
【００１７】
また、ライト要求を受けたバスインターフェースＡ（３１０）とバスインターフェースＣ（３３０）のライトデータキュー３１２、３３２にはメモリ２００へライトするライトデータを受信する。
【００１８】
バスインターフェース３１０、３２０、３３０は、コマンドバッファ３１１、３２１、３３１内に保持していたコマンドを、メモリコントローラコア部１００の内部バス１４０を介してコマンド制御部１１０のコマンドキュー１１１に送信する。
【００１９】
コマンド制御部１１０はリオーダリング回路１１２によってコマンドキュー１１１のコマンドを並び替える。
【００２０】
コマンド制御部１１０はコマンドキュー１１１の先頭コマンドＣ０２をメモリコマンド制御部１３０に送信する。
【００２１】
コマンドＣ０２はリードコマンドであるので、メモリコントローラコア部１００はメモリコマンド制御部１３０がメモリ２００からリードしたリードデータをコマンドＣ０２の発行元であるバスインターフェース３２０へ送信する。
【００２２】
次に、コマンド制御部１１０はコマンドキュー１１１の先頭コマンドＣ０１をメモリコマンド制御部１３０に送信する。
【００２３】
コマンドＣ０１はライトコマンドであるので、メモリコマンド制御部１３０はライトデータ制御部１２０へライトデータを要求する。
【００２４】
ライトデータ制御部１２０はメモリコマンド制御部１３０からのライトデータ要求を受けて、該当コマンドの発行元であるバスインターフェースＡ（３１０）へライトデータを要求する。
【００２５】
バスインターフェースＡ（３１０）はライトデータ制御部１２０からのライトデータ要求を受けて、該当ライトコマンドのライトデータをライトデータキュー３１２からライトデータ制御部１２０へ送信する。
【００２６】
ライトデータ制御部１２０は受信したライトデータをライトデータバッファ１２１へ一時的に保持する。
【００２７】
メモリコントローラコア部１００はライトデータバッファ１２１に格納されたライトデータをメモリコマンド制御部１３０へ送信する。
【００２８】
以上の説明したような動作によって、ライトデータがメモリ２００に書き込まれる。
【特許文献１】特開２００７−２６３６５号公報
【発明の開示】
【発明が解決しようとする課題】
【００２９】
しかしながら、従来の技術では、メモリコントローラがメモリにデータをライトする際、リオーダリングをしてコマンドの順番が確定してからライトデータをバスインターフェースのライトデータキューから読み出していた。
【００３０】
そのため、メモリコントローラとメモリ間でのレイテンシが大きくなるという問題があった。
【００３１】
また、複数バスインターフェースがそれぞれにライトデータキューを含む構成であるため、回路規模が大きくなるという問題もあった。
【００３２】
そこで本発明の目的は、メモリコントローラとメモリ間でのレイテンシの小さい、回路規模の小さなメモリコントローラを提供することである。
【課題を解決するための手段】
【００３３】
上記目的を達成するために、本発明のメモリコントローラは、ライトデータを保持するデータバッファとコマンドを保持するコマンドバッファとを各々が備える複数のバスインターフェースと、前記複数のバスインターフェースの少なくとも１つから発行されるコマンド及びデータを制御し、メモリへの書き込みを行うメモリコントローラコア部とを備え、前記メモリコントローラコア部が、前記複数のバスインターフェースのコマンドバッファの少なくとも１つに保持されているコマンドを複数受け付け、該複数のコマンドをリオーダするリオーダ手段と、前記複数のバスインターフェースのデータバッファから取得するライトデータを保持するライトデータキューと、前記複数のバスインターフェースのデータバッファに保持されているライトデータを、当該ライトデータに関するコマンドについて前記リオーダ手段がリオーダする前に前記データバッファから取得して前記ライトデータキューに格納するとともに、前記リオーダ手段によりリオーダしたコマンドの順に基づいて前記ライトデータキューに格納しているライトデータを出力するライトデータ制御手段とを有することを特徴とする。
【発明の効果】
【００３４】
本発明によれば、メモリコントローラとメモリ間でのレイテンシを小さくし、メモリコントローラの回路規模も小さくすることができる。
【発明を実施するための最良の形態】
【００３５】
以下、添付図面を参照して、本発明を好適な実施形態に従って詳細に説明する。
【００３６】
（発明の実施の形態）
図１は実施の形態におけるメモリコントローラの構成である。
【００３７】
図１において、０００は複数バスインターフェースを持つメモリコントローラである。
【００３８】
１００はメモリコントローラコア部である。
【００３９】
１１０は複数バスインターフェースから受信したコマンドを制御するコマンド制御部である。
【００４０】
１１１は複数バスインターフェースから受信したコマンドを保持するコマンドキューである。
【００４１】
１１２はコマンドキュー１１１内のコマンドに対してリオーダリングを行うリオーダリング回路である。
【００４２】
１２０はコマンドキュー１１１がメモリ２００にライトコマンドを発行する際に、該当コマンドのマスターとなるバスインターフェースのライトデータキューからライトデータをリードし、メモリ２００にライトするライトデータ制御部である。
【００４３】
１２２はライトデータ出力回路である。リオーダリング回路１１２によってリオーダされた結果のコマンドに応じてライトデータキュー１２３からライトデータを読み出し、メモリコマンド制御部１３０へライトデータを送信する
１２３は複数バスインターフェースがライトコマンドを発行した際に、ライトデータを受信し、保持するライトデータキューである。
【００４４】
１３０はコマンド制御部１１０とライトデータ制御部１２０とメモリ２００とのデータの受け渡しを行うメモリコマンド制御部である。
【００４５】
１４０はコマンド制御部１１０やライトデータ制御部１２０と複数バスインターフェースとの間でコマンドやデータの受け渡しを行う内部バスである。
【００４６】
２００はメモリである。
【００４７】
３１０、３２０、３３０はバスインターフェースである。
【００４８】
３１１、３２１、３３１はバスインターフェース３１０、３２０、３３０がメモリコントローラ０００外部のバスからライトやリードの要求を一時的に保持するコマンドバッファである。
【００４９】
３１３、３２３、３３３はバスインターフェース３１０、３２０、３３０がメモリコントローラ０００外部のバスからライトの要求を受信した際にライトするデータを一時的に保持するライトデータバッファである。
【００５０】
以下、図１、図３、図４を用いて本実施の形態におけるメモリコントローラの動作について説明する。
【００５１】
バスインターフェースＡ（３１０）、バスインターフェースＢ（３２０）、バスインターフェースＣ（３３０）がそれぞれに接続されたバスからライトやリードの要求を受信する。
【００５２】
そのとき、バスインターフェースＡ（３１０）はライト、バスインターフェースＢ（３２０）はリード、バスインターフェースＣ（３３０）はライトの要求を受信したとする。
【００５３】
コマンドバッファ３１１にはライト、コマンドバッファ３２１にはリード、コマンドバッファ３３１にはライトのコマンドが保持される。
【００５４】
また、ライト要求を受けたバスインターフェースＡ（３１０）とバスインターフェースＣ（３３０）のライトデータキュー３１２、３３２にはメモリ２００へライトするライトデータを受信する。
【００５５】
バスインターフェース３１０、３２０、３３０はコマンドバッファ３１１、３２１、３３１内に保持していたコマンドをメモリコントローラコア部１００の内部バス１４０を介して、コマンド制御部１１０のコマンドキュー１１１に送信する。
【００５６】
このとき、バスインターフェースＡ（３１０）、バスインターフェースＣ（３３０）はライトコマンドを送信すると同時に、ライトデータバッファ３１３、３３３のライトデータをライトデータ制御部１２０へ送信する。
【００５７】
ライトデータ制御部１２０はライトデータキュー１２３に受信したライトデータを保持する。
【００５８】
コマンド制御部１１０はリオーダリング回路１１２によってコマンドキュー１１１のコマンドを並び替える。
【００５９】
コマンド制御部１１０はコマンドキュー１１１の先頭コマンドＣ０２をメモリコマンド制御部１３０に送信する。
【００６０】
コマンドＣ０２はリードコマンドであるので、メモリコントローラコア部１００はメモリコマンド制御部１３０がメモリ２００からリードしたリードデータをコマンドＣ０２の発行元であるバスインターフェース３２０へ送信する。
【００６１】
次に、コマンド制御部１１０はコマンドキュー１１１の先頭コマンドＣ０１をメモリコマンド制御部１３０に送信する。
【００６２】
コマンドＣ０１はライトコマンドであるので、メモリコマンド制御部１３０はライトデータ制御部１２０へライトデータを要求する。
【００６３】
ライトデータ制御部１２０がメモリコマンド制御部１３０からライトデータを要求されたのを受けて、ライトデータ出力回路１２２は該当コマンドに対応するライトデータをライトデータキュー１２３から読み出し、メモリコマンド制御部１３０へ送信する。
【００６４】
以上説明したような動作によって、ライトデータがメモリ２００に書き込まれる。
【図面の簡単な説明】
【００６５】
【図１】第一の実施の形態におけるメモリコントローラを示す図である。
【図２】従来のメモリコントローラ人をカメラで上方から撮像する状況を説明する図である。
【図３】第一の実施の形態におけるメモリコントローラの動作例を示す図である。
【図４】第一の実施の形態におけるメモリコントローラの動作例を示す図である。
【図５】従来のメモリコントローラの動作例を示す図である。
【図６】従来のメモリコントローラの動作例を示す図である。
【図１】
0005414209.tif 000002
【図２】
0005414209.tif 000003
【図３】
0005414209.tif 000004
【図４】
0005414209.tif 000005
【図５】
0005414209.tif 000006
【図６】
0005414209.tif 000007