(57)【要約】【課題】  メモリ制御装置及び方法を提供する。【解決手段】  メモリ要請の再スケジューリングを通じてメモリバンク衝突を最小化するメモリ制御装置に関するものである。メモリ制御装置は、現在サイクルに複数のメモリ要請が存在すれば、複数のメモリ要請に含まれた複数のエレメントに対して決定されたメモリバンク情報に基づいて、複数のエレメントをスケジューリングするスケジューリング部と、複数のエレメントに対するスケジューリングが完了すれば、互いにメモリバンク衝突が発生しないように、複数のエレメントのうちの１つ以上のエレメントを用いて、現在サイクルに対するスケジューリングされたメモリ要請を生成する要請生成部と、を含みうる。【選択図】      図１
2014219980.tif 000002
【特許請求の範囲】
【請求項１】
現在サイクルに存在する複数のメモリ要請に応じて、前記複数のメモリ要請に含まれた複数のエレメントに対して決定されたメモリバンク情報に基づいて、前記複数のエレメントをスケジューリングするスケジューリング部と、
前記スケジューリング部による複数のエレメントに対するスケジューリングにより、互いにメモリバンク衝突が発生しないように、前記複数のメモリ要請に含まれた複数のエレメントのうちの１つ以上のエレメントを用いて、現在サイクルに対するスケジューリングされたメモリ要請を生成する要請生成部と、
を含むメモリ制御装置。
【請求項２】
前記複数のメモリ要請を受けたことに応じて、前記複数のメモリ要請に含まれた複数のエレメントによってアクセスされるそれぞれのメモリバンクを決定するバンク決定部をさらに含む請求項１に記載のメモリ制御装置。
【請求項３】
前記バンク決定部は、
前記複数のエレメントの各アドレスを算出し、該算出されたアドレスに基づいて、前記複数のエレメントに対する各メモリバンクを決定する請求項２に記載のメモリ制御装置。
【請求項４】
１つ以上のメモリバンクに対応する１つ以上のバッファをさらに含み、
前記スケジューリング部は、
前記複数のエレメントに対して、各メモリバンクが決定されれば、前記複数のエレメントに対して決定された各メモリバンクに対応するバッファに、前記複数のエレメントを入力する請求項２又は３に記載のメモリ制御装置。
【請求項５】
前記スケジューリング部は、
前記エレメントをバッファに入力する場合に、前記エレメントに対するメモリ要請のＩＤ情報により、前記エレメントにタグを付ける請求項４に記載のメモリ制御装置。
【請求項６】
前記要請生成部は、
少なくとも１つのエレメントを含む１つ以上のバッファのそれぞれから待機中であるエレメントを取り出して、スケジューリングされたメモリ要請を生成する請求項４又は５に記載のメモリ制御装置。
【請求項７】
前記スケジューリングされたメモリ要請が生成された後、前記バッファのうちの何れか１つに待機中であるエレメントが存在していた場合、前記スケジューリングされたメモリ要請をメモリに伝送する際にストールを発生させる制御部をさらに含む請求項６に記載のメモリ制御装置。
【請求項８】
前記制御部は、
前記スケジューリングされたメモリ要請を次のサイクルのメモリに伝送する請求項７に記載のメモリ制御装置。
【請求項９】
現在サイクルに存在する複数のメモリ要請に応じて、前記複数のメモリ要請に含まれた複数のエレメントに対して決定されたメモリバンク情報に基づいて、前記複数のエレメントをスケジューリングする段階と、
前記複数のエレメントに対するスケジューリングにより、互いにメモリバンク衝突が発生しないように、前記複数のメモリ要請に含まれた複数のエレメントのうちの１つ以上のエレメントを用いて、現在サイクルに対するスケジューリングされたメモリ要請を生成する段階と、
を含むメモリ制御方法。
【請求項１０】
前記複数のメモリ要請を受けたことに応じて、前記複数のメモリ要請に含まれた複数のエレメントによってアクセスされるそれぞれのメモリバンクを決定する段階をさらに含む請求項９に記載のメモリ制御方法。
【請求項１１】
前記メモリバンクを決定する段階は、
前記複数のエレメントの各アドレスを算出し、該算出されたアドレスに基づいて、前記複数のエレメントに対するメモリバンクを決定する請求項１０に記載のメモリ制御方法。
【請求項１２】
前記スケジューリングする段階は、
前記複数のエレメントに対して、各メモリバンクが決定されれば、前記複数のエレメントに対して決定された各メモリバンクに対応するバッファに、前記複数のエレメントを入力する段階を含む請求項１０又は１１に記載のメモリ制御方法。
【請求項１３】
前記バッファに、前記複数のエレメントを入力する段階は、
前記エレメントをバッファに入力する場合に、前記エレメントに対するメモリ要請のＩＤ情報により、前記エレメントにタグを付ける請求項１２に記載のメモリ制御方法。
【請求項１４】
スケジューリングされたメモリ要請を生成する段階は、
少なくとも１つのエレメントを含む１つ以上のバッファのそれぞれから待機中であるエレメントを取り出して、スケジューリングされたメモリ要請を生成する請求項１１、１２又は１３に記載のメモリ制御方法。
【請求項１５】
前記スケジューリングされたメモリ要請が生成された後、前記バッファのうちの何れか１つに待機中であるエレメントが存在していた場合、前記スケジューリングされたメモリ要請をメモリに伝送する際に、ストールを発生させる段階をさらに含む請求項１４に記載のメモリ制御方法。
【請求項１６】
前記スケジューリングされたメモリ要請を次のサイクルのメモリに伝送する段階をさらに含む請求項１０−１５の何れか１項に記載のメモリ制御方法。
【請求項１７】
複数のメモリ要請に含まれた複数のメモリ要請エレメントから、少なくとも１つのスケジューリングされたエレメントを含むスケジューリングされたメモリ要請を生成する要請生成部を含むメモリ制御装置であって、
前記複数のメモリ要請のそれぞれは、少なくとも１つのメモリ要請エレメントを含み、
前記複数のメモリ要請エレメントのうちの各メモリ要請エレメントと、前記少なくとも１つのスケジューリングされたエレメントのうちの各スケジューリングされたエレメントは、決定されたメモリバンクに対応し、
前記少なくとも１つのスケジューリングされたエレメントのうちの何れか１つのスケジューリングされたエレメントに対して前記決定されたメモリバンクと、前記何れか１つのスケジューリングされたエレメントとは異なるスケジューリングされたエレメントに対して前記決定されたメモリバンクは、互いに区別されるメモリ制御装置。
【請求項１８】
前記要請生成部は、少なくとも１つのバッファから各メモリ要請エレメントを抽出して、前記スケジューリングされたメモリ要請を生成し、
前記少なくとも１つのバッファは、前記各メモリ要請エレメントに対して前記決定されたメモリバンクに対応する請求項１７に記載のメモリ制御装置。
【請求項１９】
前記少なくとも１つのバッファのそれぞれは、一定に１つのメモリバンクに対応する請求項１８に記載のメモリ制御装置。
【請求項２０】
複数のメモリ要請に含まれた複数のメモリ要請エレメントのうちの少なくとも１つのスケジューリングされたエレメントを含むスケジューリングされたメモリ要請を生成する段階を含むメモリ制御方法であって、
前記複数のメモリ要請のそれぞれは、少なくとも１つのメモリ要請エレメントを含み、
前記複数のメモリ要請エレメントのうちの各メモリ要請エレメントと、前記少なくとも１つのスケジューリングされたエレメントのうちの各スケジューリングされたエレメントは、決定されたメモリバンクに対応し、
前記少なくとも１つのスケジューリングされたエレメントのうちの何れか１つのスケジューリングされたエレメントに対して前記決定されたメモリバンクと、前記何れか１つのスケジューリングされたエレメントとは異なるスケジューリングされたエレメントに対して前記決定されたメモリバンクは、互いに区別されるメモリ制御方法。
【請求項２１】
前記メモリ要請を生成する段階は、少なくとも１つのバッファから各メモリ要請エレメントを抽出して、前記スケジューリングされたメモリ要請を生成し、
前記少なくとも１つのバッファは、前記各メモリ要請エレメントに対して前記決定されたメモリバンクに対応する請求項２０に記載のメモリ制御方法。
【請求項２２】
前記少なくとも１つのバッファのそれぞれは、一定に１つのメモリバンクに対応する請求項２１に記載のメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ要請のスケジューリングを通じてメモリバンク衝突を最小化するメモリ制御装置及びメモリ制御方法等に関する。
【背景技術】
【０００２】
ベクトル演算が可能なプロセッサで、ロード／ストアインストラクション（ｌｏａｄ／ｓｔｏｒｅ  ｉｎｓｔｒｕｃｔｉｏｎ）に対する処理は、一般的に、アドレス生成（Ａｄｄｒｅｓｓ  Ｇｅｎｅｒａｔｉｏｎ、ＡＧ）、メモリセットアップ（Ｍｅｍｏｒｙ  Ｓｅｔｕｐ、ＭＳ）、メモリアクセス（Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ、ＭＡ）、及びレジスタファイルに記録（Ｗｒｉｔｅ  Ｂａｃｋ、ＷＢ）するパイプライン段階を経てなされる。アドレス生成（ＡＧ）段階では、ロードまたはストア要請に対するアドレスを計算し、アクセスするメモリバンクを選択する。メモリセットアップ（ＭＳ）段階では、メモリアクセスが可能になるようにメモリセットアップを行い、メモリアクセス（ＭＡ）段階で、メモリに値を書き込むか、読み取る。
【０００３】
一般的に、１つのメモリバンクは、同時に１つのロード／ストアインストラクションに対するメモリ要請のみを処理することができるので、特定サイクルに１つのメモリバンクをアクセスする２つ以上のメモリ要請が同時に発行されれば、メモリバンク衝突が発生する。この際、何れか１つのメモリ要請を先にメモリアクセス（ＭＡ）段階に進入させ、残りのメモリ要請は、アドレス生成（ＡＧ）段階に待機させる。また、続くメモリ要請の処理によってメモリの値が変更されることを防止するために、プロセッサの動作に対するストール（ｓｔａｌｌ）を発生させる。特に、多様なメモリバンクを同時にアクセスすることができるベクトルロード／ストアインストラクションが同時に２つ以上が発行されれば、一部のメモリバンクに対してのみ衝突が発生する恐れがある。しかし、この場合にも、衝突が発生する度にストールを発生させて、データの処理能が減少する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明が解決しようとする課題は、メモリ制御装置及び方法を提供することである。
【課題を解決するための手段】
【０００５】
一観点によるメモリ制御装置は、
現在サイクルに存在する複数のメモリ要請に応じて、前記複数のメモリ要請に含まれた複数のエレメントに対して決定されたメモリバンク情報に基づいて、前記複数のエレメントをスケジューリングするスケジューリング部と、
前記スケジューリング部による複数のエレメントに対するスケジューリングにより、互いにメモリバンク衝突が発生しないように、前記複数のメモリ要請に含まれた複数のエレメントのうちの１つ以上のエレメントを用いて、現在サイクルに対するスケジューリングされたメモリ要請を生成する要請生成部と、
を含むメモリ制御装置である。
【図面の簡単な説明】
【０００６】
【図１】本発明の一実施形態によるメモリシステムの構成図である。
【図２】図１の実施形態によるメモリ制御装置のブロック図である。
【図３Ａ】一般的なメモリ要請の処理手続きでメモリバンク衝突が発生していない場合の例である。
【図３Ｂ】一般的なメモリ要請の処理手続きでメモリバンク衝突が発生した場合の例である。
【図４Ａ】本発明の一実施形態によるメモリ制御装置がメモリ要請を処理する手続きの例である。
【図４Ｂ】本発明の一実施形態によるメモリ制御装置がメモリ要請を処理する手続きの他の例である。
【図４Ｃ】本発明の一実施形態によるメモリ制御装置がメモリ要請を処理する手続きのさらに他の例である。
【図５】本発明の一実施形態によるメモリ制御方法のフローチャートである。
【図６】本発明の他の実施形態によるメモリ制御方法のフローチャートである。
【発明を実施するための形態】
【０００７】
＜実施の形態の概要＞
本発明の一態様によれば、メモリ制御装置は、現在サイクルに存在する複数のメモリ要請に対して、前記複数のメモリ要請に含まれた複数のエレメントに対して決定されたメモリバンク情報に基づいて、前記複数のエレメントをスケジューリングするスケジューリング部と、スケジューリング部によって複数のエレメントに対するスケジューリングが完了すれば、互いにメモリバンク衝突が発生しないように、複数のメモリ要請に含まれた複数のエレメントのうちの１つ以上のエレメントを用いて、現在サイクルに対するスケジューリングされたメモリ要請を生成する要請生成部と、を含みうる。
【０００８】
また、メモリ制御装置は、複数のメモリ要請が入力されれば、複数のメモリ要請に含まれた複数のエレメントによってアクセスされるそれぞれのメモリバンクを決定するバンク決定部をさらに含みうる。
【０００９】
バンク決定部は、複数のエレメントの各アドレスを算出し、該算出されたアドレスに基づいて、複数のエレメントに対する各メモリバンクを決定することができる。
【００１０】
また、メモリ制御装置は、１つ以上のメモリバンクに対応する１つ以上のバッファをさらに含み、スケジューリング部は、複数のエレメントに対して、各メモリバンクが決定されれば、複数のエレメントに対して決定された各メモリバンクに対応するバッファに、その複数のエレメントを入力することができる。
【００１１】
スケジューリング部は、エレメントをバッファに入力する時、エレメントに対するメモリ要請のＩＤ情報により、そのエレメントにタグ（ｔａｇ）を付けることができる。
【００１２】
要請生成部は、少なくとも１つのエレメントを含む１つ以上のバッファのそれぞれから待機中であるエレメントを取り出して、スケジューリングされたメモリ要請を生成することができる。
また、メモリ制御装置は、スケジューリングされたメモリ要請が生成された後、バッファのうちの何れか１つに待機中であるエレメントが存在すれば、スケジューリングされたメモリ要請をメモリに伝送する時、ストールを発生させる制御部をさらに含みうる。
【００１３】
制御部は、スケジューリングされたメモリ要請を次のサイクルのメモリに伝送しうる。
【００１４】
本発明の一態様によれば、メモリ制御方法は、現在サイクルに存在する複数のメモリ要請に対して、複数のメモリ要請に含まれた複数のエレメントに対して決定されたメモリバンク情報に基づいて、複数のエレメントをスケジューリングする段階と、複数のエレメントに対するスケジューリングが完了した後で、互いにメモリバンク衝突が発生しないように、複数のメモリ要請に含まれた複数のエレメントのうちの１つ以上のエレメントを用いて、現在サイクルに対するスケジューリングされたメモリ要請を生成する段階と、を含みうる。
【００１５】
また、メモリ制御方法は、複数のメモリ要請が入力されれば、複数のメモリ要請に含まれた複数のエレメントによってアクセスされるそれぞれのメモリバンクを決定する段階をさらに含みうる。
【００１６】
メモリバンク決定段階は、複数のエレメントの各アドレスを算出し、該算出されたアドレスに基づいて、複数のエレメントに対するメモリバンクを決定することができる。
【００１７】
スケジューリング段階は、複数のエレメントに対して、各メモリバンクが決定されれば、複数のエレメントに対して決定された各メモリバンクに対応するバッファに、複数のエレメントを入力する段階を含みうる。
【００１８】
バッファに入力する段階は、エレメントをバッファに入力する時、エレメントに対するメモリ要請のＩＤ情報により、エレメントにタグを付けることができる。
【００１９】
スケジューリングされたメモリ要請生成段階は、少なくとも１つのエレメントを含む１つ以上のバッファのそれぞれから待機中であるエレメントを取り出して、スケジューリングされたメモリ要請を生成することができる。
【００２０】
また、メモリ制御方法は、スケジューリングされたメモリ要請が生成された後、１つ以上のバッファのうちの何れか１つに待機中であるエレメントが存在すれば、スケジューリングされたメモリ要請をメモリに伝送する時、ストールを発生させる段階をさらに含みうる。
【００２１】
メモリ制御方法は、スケジューリングされたメモリ要請を次のサイクルのメモリに伝送する段階をさらに含みうる。
【００２２】
本発明の他の態様によれば、メモリ制御装置は、複数のメモリ要請に含まれた複数のメモリ要請エレメントのうちの少なくとも１つのスケジューリングされたエレメントを含むスケジューリングされたメモリ要請を生成する要請生成部を含み、その複数のメモリ要請のそれぞれは、少なくとも１つのメモリ要請エレメントを含み、その複数のメモリ要請エレメントのうちの各メモリ要請エレメントと、少なくとも１つのスケジューリングされたエレメントのうちの各スケジューリングされたエレメントは、決定されたメモリバンクに対応し、少なくとも１つのスケジューリングされたエレメントのうちの何れか１つのスケジューリングされたエレメントに対して決定されたメモリバンクと、何れか１つのスケジューリングされたエレメントとは異なるスケジューリングされたエレメントに対して決定されたメモリバンクは、互いに区別されうる。
【００２３】
要請生成部は、少なくとも１つのバッファから各メモリ要請エレメントを抽出して、前記スケジューリングされたメモリ要請を生成し、少なくとも１つのバッファは、各メモリ要請エレメントに対して決定されたメモリバンクに対応しうる。
【００２４】
この際、少なくとも１つのバッファのそれぞれは、一定に１つのメモリバンクに対応しうる。
【００２５】
他の態様によるメモリ制御方法は、複数のメモリ要請に含まれた複数のメモリ要請エレメントのうちの少なくとも１つのスケジューリングされたエレメントを含むスケジューリングされたメモリ要請を生成する段階を含み、複数のメモリ要請のそれぞれは、少なくとも１つのメモリ要請エレメントを含み、複数のメモリ要請エレメントのうちの各メモリ要請エレメントと、前記少なくとも１つのスケジューリングされたエレメントのうちの各スケジューリングされたエレメントは、決定されたメモリバンクに対応し、少なくとも１つのスケジューリングされたエレメントのうちの何れか１つのスケジューリングされたエレメントに対して前記決定されたメモリバンクと、何れか１つのスケジューリングされたエレメントとは異なるスケジューリングされたエレメントに対して前記決定されたメモリバンクは、互いに区別されうる。メモリ要請を生成する段階は、少なくとも１つのバッファから各メモリ要請エレメントを抽出して、スケジューリングされたメモリ要請を生成し、少なくとも１つのバッファは、各メモリ要請エレメントに対して決定されたメモリバンクに対応しうる。
【００２６】
この際、少なくとも１つのバッファのそれぞれは、一定に１つのメモリバンクに対応しうる。
【００２７】
＜実施の形態の詳細な説明＞
その他の実施形態の具体的な事項は、詳細な説明及び図面に含まれている。記載の技術の利点及び特徴、そして、それらを果たす方法は、図面と共に詳細に後述されている実施形態を参照すると、明確になる。明細書の全般に亘って同じ参照符号は、同じ構成要素を指称する。
【００２８】
以下、メモリ制御装置及び方法の実施形態を、図面を参考にして詳しく説明する。
【００２９】
図１は、本発明の一実施形態によるメモリシステム１の構成図である。一実施形態によるメモリシステム１は、映像処理、音声処理、及び３Ｄグラフィックスのような大量のデータ処理を行うアプリケーションなどの遂行のための高性能ベクトルプロセッサを効果的に支援することができる。
【００３０】
プロセッサは、特定サイクルに１つ以上のロード／ストアインストラクションに応答して、そのロード／ストアインストラクションに対して１つ以上のロード／ストアユニット３１０を通じてメモリにアクセスするためのメモリ要請を発行する。メモリ制御装置１００は、１つ以上のロード／ストアユニット３１０を通じてメモリ要請が入力されれば、そのメモリ要請に含まれたエレメントに対してアクセスするメモリ２００のバンクを決定することができる。この際、メモリ要請は、何れか１つのメモリバンクをアクセスするための１つのエレメントを含むスカラーメモリ要請であるか、同時に２つ以上のメモリバンクをアクセスすることができる２つ以上のエレメントを含むベクトルメモリ要請であり得る。
【００３１】
メモリ制御装置１００は、メモリバンクが決定されたメモリ要請をメモリ２００に伝送してメモリにアクセスさせる。もし、特定サイクルに同時に２つ以上のメモリ要請が存在すれば、例えば、現在サイクルに同時に２つ以上のメモリ要請がプロセッサから入力されるか、以前サイクルに処理されず、待機中であるメモリ要請が２つ以上存在するか、以前サイクルに処理されず、待機中であるメモリ要請と現在サイクルにプロセッサから１つ以上のメモリ要請とが入力される場合には、各メモリ要請に含まれたあらゆるエレメントを用いてスケジューリングを行い、スケジューリングされたメモリ要請ＳＭＲを生成して、メモリ２００にアクセスさせうる。
【００３２】
この際、メモリ制御装置１００は、１つ以上のバッファを含み、１つ以上のバッファは、メモリ２００の各バンクに対応しうる。この際、バッファは、先入先出（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）方式のキュー（Ｑｕｅｕｅ）であり得る。メモリ制御装置１００は、バッファを用いてメモリ要請に含まれた１つ以上のエレメントをスケジューリングすることができる。
【００３３】
一方、特定サイクルに発行されたロードインストラクションに対するメモリ要請の処理結果は、１つ以上のバッファ３２０に入力されて、特定サイクルに同時に発行されたあらゆるロードインストラクションに対するメモリ要請が処理されるまでバッファ３２０に待機する。以後、特定サイクルに発行されたあらゆるメモリ要請の処理が完了すれば、バッファ３２０に待機中であるデータは、プロセッサのレジスタファイル４００に記録される。
【００３４】
このように、メモリバンク衝突が最小化されるように、あらゆるエレメントを再びスケジューリングすることによって、プロセッサのストール発生を最大限減らして、処理能を向上させることができる。
【００３５】
図２は、図１の実施形態によるメモリ制御装置１００のブロック図である。図２を参照すれば、メモリ制御装置１００は、バンク決定部１１０、スケジューリング部１２０、要請生成部１３０、制御部１４０、及びバッファ１５０を含みうる。
【００３６】
バンク決定部１１０は、メモリにアクセスしてデータのロード（ｌｏａｄ）またはストア（ｓｔｏｒｅ）するためのメモリ要請が入力されれば、そのメモリ要請に含まれた１つ以上のエレメントのそれぞれに対してアクセスするメモリバンクを決定する。この際、バンク決定部１１０は、メモリ要請に含まれたエレメントに対するアドレスを計算し、該計算されたアドレスを用いてアクセスするメモリのバンクを決定することができる。
【００３７】
スケジューリング部１２０は、バンク決定部１１０から決定されたメモリ要請のメモリバンク情報を用いてメモリ要請に含まれたエレメントをスケジューリングする。スケジューリング部１２０は、現在サイクルに処理しなければならないメモリ要請が２つ以上存在すれば、その２つ以上のメモリ要請に含まれたあらゆるエレメントを決定されたメモリバンク情報に基づいてスケジューリングすることができる。この際、現在サイクルに処理しなければならないメモリ要請が２つ以上存在する場合とは、例えば、現在サイクルにプロセッサから入力されたメモリ要請が２つ以上であるか、以前サイクルで処理されず、待機中であるメモリ要請が２つ以上である場合、または以前サイクルに処理されず、待機中であるメモリ要請と現在サイクルにプロセッサから新たにメモリ要請とが入力される場合などが該当しうる。
【００３８】
要請生成部１３０は、あらゆるエレメントに対するスケジューリングが完了すれば、互いにメモリバンク衝突が発生しないように、１つ以上のエレメントを用いて、現在サイクルに対するスケジューリングされたメモリ要請を生成することができる。
【００３９】
さらに具体的に、スケジューリング部１２０は、バンク決定部１１０でメモリ要請の各エレメントを１つ以上のバッファ１５０を用いてスケジューリングすることができる。この際、１つ以上のバッファ１５０は、メモリの各バンクに対応しうる。スケジューリング部１２０は、入力されたメモリ要請のエレメントに対してバンク決定部１１０でメモリバンクを決定すれば、その決定されたメモリバンクに対応するバッファに該当するエレメントを入力することでスケジューリングすることができる。
【００４０】
この際、スケジューリング部１２０は、各バッファ１５０に該当するエレメントを入力する時、そのエレメントを含むメモリ要請のＩＤをタギング（ｔａｇｇｉｎｇ）して入力することができる。これは、要請生成部１３０によってスケジューリングされたメモリ要請が生成されても、元のメモリ要請を区別させるためである。
【００４１】
要請生成部１３０は、１つ以上のバッファ１５０のそれぞれから待機中であるエレメント１つずつを取り出して、互いに組み合わせて新たなスケジューリングされたメモリ要請を生成することができる。このように、各バッファ１５０から１つずつエレメントを取り出せば、各バッファ１５０は、互いに異なるメモリバンクに対応するために、メモリバンクの衝突が発生しない。
【００４２】
このように、本実施形態によれば、現在サイクルに処理する２つ以上のメモリ要請に対してプロセッサから入力されたメモリ要請単位でメモリアクセスを処理させるものではなく、あらゆるメモリ要請に含まれたあらゆるエレメントを対象にして再びスケジューリングを行って、現在サイクルに処理可能なエレメントからなるスケジューリングされたメモリ要請を生成して処理させることによって、メモリバンク衝突回数が減少して、プロセッサのストールの発生を最大限減らしうる。
【００４３】
制御部１４０は、現在サイクルに対するスケジューリングされたメモリ要請が生成されれば、メモリに伝送して処理させる。制御部１４０は、スケジューリングされたメモリ要請を現在サイクルの次のサイクルになれば、メモリに伝送しうる。この際、バッファ１５０のうちの何れか１つでも、待機中であるエレメントの存否を確認し、待機中であるエレメントが、バッファ１５０に残っていれば、メモリバンク衝突が発生した場合なので、ストールを発生させることができる。
【００４４】
もし、次のサイクルにプロセッサから新たなメモリ要請が入力されれば、前述したように、新たに入力されたメモリ要請のエレメントに対するメモリバンクが決定されて、バッファ１５０に入力され、以前サイクル（現在サイクル、及びその以前サイクル）に入力されて、まだバッファに待機中であるエレメントが存在すれば、そのエレメントをスケジューリングして、次のサイクルに対するスケジューリングされたメモリ要請を生成する。もし、次のサイクルにプロセッサから新たなメモリ要請が入力されず、以前サイクル（現在サイクル、及びその以前サイクル）に入力されて、まだバッファに待機中であるエレメントが存在すれば、待機中であるエレメントをスケジューリングして、次のサイクルに対するスケジューリングされたメモリ要請を生成する。
【００４５】
このような過程は、各サイクルが進行される度に繰り返し行われ、ある特定サイクルにバッファ１５０に待機中であるエレメントが存在しなければ、あらゆるメモリ要請に対する処理が完了したものなので、終了する。
【００４６】
図３Ａは、一般的なメモリ要請の処理手続きでメモリバンク衝突が発生していない場合の例である。図３Ｂは、一般的なメモリ要請の処理手続きでメモリバンク衝突が発生した場合の例である。図４Ａは、本発明の一実施形態によるメモリ制御装置がメモリ要請を処理する手続きの例である。図４Ｂは、本発明の一実施形態によるメモリ制御装置がメモリ要請を処理する手続きの他の例である。図４Ｃは、本発明の一実施形態によるメモリ制御装置がメモリ要請を処理する手続きのさらに他の例である。
【００４７】
図３Ａないし図４Ｃを参照して、図２のメモリ制御装置１００が、メモリ要請を処理する手続きを例として説明する。
【００４８】
まず、図３Ａ及び図３Ｂは、プロセッサで特定サイクルｉにメモリロードインストラクションに対する３個のメモリ要請（ＭＲ  ｎ、ＭＲ  ｎ＋１、ＭＲ  ｎ＋２）を同時に発行した場合の例である。図３Ａは、３個のメモリ要請（ＭＲ  ｎ、ＭＲ  ｎ＋１、ＭＲ  ｎ＋２）が、メモリバンク衝突が発生していない場合であって、各メモリ要請（ＭＲ  ｎ、ＭＲ  ｎ＋１、ＭＲ  ｎ＋２）に含まれたエレメントがアクセスするメモリバンクが全く衝突が発生しなければ、各メモリ要請（（ＭＲ  ｎ、ＭＲ  ｎ＋１、ＭＲ  ｎ＋２）は、サイクルｉ＋１にメモリセットアップ段階に進入し、サイクルｉ＋２にメモリアクセス段階に進入して、メモリデータをロードして、サイクルｉ＋３にレジスタファイルに記録する。
【００４９】
図３Ｂは、３個のメモリ要請（ＭＲ  ｎ、ＭＲ  ｎ＋１、ＭＲ  ｎ＋２）が、いずれもバンク衝突が発生した場合であって、各メモリ要請（ＭＲ  ｎ、ＭＲ  ｎ＋１、ＭＲ  ｎ＋２）間に何れか１つのエレメントでも、同じメモリバンクにアクセスしようとすれば、メモリバンク衝突が発生する。この場合には、メモリ要請単位で順次に処理されるが、例えば、示したように、何れか１つのメモリ要請（ＭＲ  ｎ）が、サイクルｉ＋１に先にメモリセットアップ段階に進入し、その次のサイクルｉ＋２に他のメモリ要請（ＭＲ  ｎ＋１）が、メモリセットアップ段階に進入し、その次のサイクルｉ＋３に残りのメモリ要請（ＭＲ  ｎ＋２）が、メモリセットアップ段階に順次に進入する。この際、サイクルｉ＋１とサイクルｉ＋２には、メモリバンク衝突が発生したメモリ要請がまだ待機中なので、ストールが発生する。
【００５０】
図４Ａ、図４Ｂ、及び図４Ｃは、メモリが７個のメモリバンク（０〜７）からなり、スカラーメモリ要請または同時に４個のメモリバンクにアクセスできるように、最大４個のエレメントを有したベクトルメモリ要請が入力されることを仮定し、図２の実施形態によるメモリ制御装置１００が、メモリ要請を処理することを例示したものである。しかし、これは、単に１つの実施形態に過ぎない。メモリは、１つ以上のメモリバンクで構成され、ベクトルメモリ要請は、１つ以上のエレメントで構成することができる。
【００５１】
図４Ａを参照すれば、現在サイクルｉに４個のエレメントからなる３個のベクトルメモリ要請ＯＭＲ１、ＯＭＲ２、ＯＭＲ３がプロセッサから入力される。バンク決定部１１０は、入力された各メモリ要請ＯＭＲ１、ＯＭＲ２、ＯＭＲ３に含まれた４個のエレメントのそれぞれに対してメモリバンクを決定する。示したように、バンク決定部１１０によって決定されたＯＭＲ１のメモリバンクは、‘０、１、２、３’であり、ＯＭＲ２のメモリバンクは、‘２、３、４、５’であり、ＯＭＲ３のメモリバンクは、‘４、５、６、７’である。
【００５２】
スケジューリング部１２０は、決定されたメモリバンク情報を用いてメモリバンク（０〜７）に対応するバッファ（０〜７）にエレメントを入力する。その結果、現在サイクルｉにバッファ０、１、６、及び７には、１つのエレメントが入力され、バッファ２、３、４、及び５には、２つのエレメントが入力される。
【００５３】
要請生成部１３０は、現在サイクルｉに対してバッファ（０〜７）からエレメントを１つずつ取り出して組み合わせて、同時に７個のメモリバンクにアクセスすることができるスケジューリングされたメモリ要請ＳＭＲ１を生成する。
【００５４】
制御部１４０は、次のサイクルｉ＋１になれば、このように生成されたスケジューリングされたメモリ要請ＳＭＲ１をメモリに伝送して、メモリバンクにアクセスしてデータをロードさせる。この際、制御部１４０は、まだ処理されないエレメントがバッファに存在するので、すなわち、元のメモリ要請ＯＭＲ２とＯＭＲ３は、メモリバンクが衝突されるエレメントが存在して、いずれも処理されていない状態なので、ストールを発生させる。
【００５５】
スケジューリング部１２０は、次のサイクルｉ＋１にバンク決定部１１０によってメモリバンクが決定された新たなメモリ要請の存否を確認する。示したように、サイクルｉ＋１には、新たなメモリ要請が入力されていないので、バッファ（０〜７）のうちの何れか１つにまだ処理されていないメモリ要請に対するエレメントの存否を確認する。特定バッファ（２、３、４、５）には、それぞれ１つずつのエレメントがまだ存在するので、要請生成部１３０をして新たなスケジューリングされたメモリ要請を生成させる。
【００５６】
要請生成部１３０は、次のサイクルｉ＋１に特定バッファ（２、３、４、５）からエレメントを取り出して、新たなスケジューリングされたメモリ要請ＳＭＲ２を生成する。
【００５７】
制御部１４０は、その次のサイクルｉ＋２になれば、新たに生成されたスケジューリングされたメモリ要請ＳＭＲ２をメモリに伝送しうる。この際、バッファ（０〜７）に残っているエレメントが存在しないので、ストールを発生させない。
【００５８】
一方、サイクルｉ＋１に新たにスケジューリングされたメモリ要請ＳＭＲ１は、サイクルｉ＋３にメモリアクセスが完了すれば、図１に示したような１つ以上の書き込みバッファ３２０で待機し、同時に入力された元のメモリ要請ＯＭＲ１、ＯＭＲ２、ＯＭＲ３に対する処理がいずれも完了すれば、すなわち、残りのＳＭＲ２に対する処理が完了するサイクルｉ＋４にレジスタファイル４００に記録される。
【００５９】
このように、図３Ｂで説明したような一般的な処理手続きによる場合、ＯＭＲ１、ＯＭＲ２、及びＯＭＲ３は、いずれもメモリバンクの衝突が発生するので、２回のストールが発生しなければならないが、開示された実施形態によれば、メモリ要請のスケジューリングを通じて１回のストールのみが発生して、メモリ処理速度が向上する。
【００６０】
図４Ｂは、本発明の一実施形態によるメモリ制御装置１００がメモリ要請を処理する他の手続きを例示したものである。図４Ｂを参照すれば、サイクルｉでメモリバンク衝突が発生する２つのメモリ要請ＯＭＲ１、ＯＭＲ２が同時に発行され、直ちに次のサイクルｉ＋１でメモリバンク衝突が発生するメモリ要請ＯＭＲ３、ＯＭＲ４が連続して発行された。メモリ制御装置１００は、このように２つ以上のサイクルで連続してバンク衝突が発生する場合に、ストール発生を最小化するために、メモリ処理パイプライン段階にバンク衝突をチェックする段階（Ｃｈｅｃｋｉｎｇ  Ｂａｎｋ  ｃｏｎｆｌｉｃｔ）を追加することができる。
【００６１】
図４Ｂに示したように、現在サイクルｉに入力されたメモリ要請ＯＭＲ１とＯＭＲ２とが入力されれば、バンク決定部１１０によってメモリバンクが決定される。次いで、次のサイクルｉ＋１にメモリバンク衝突をチェックする段階に進入して、スケジューリング部１２０によって各エレメントは対応するバッファ１５０に入力され、あらゆるバンクが衝突されるので、要請生成部１３０は、各バッファ１５０からエレメントを１つずつ取り出して、新たなスケジューリングされたメモリ要請ＳＭＲ１を生成する。結果的に、スケジューリングされたメモリ要請ＳＭＲ１は、サイクルｉで入力されたメモリ要請ＯＭＲ１になる。同様に、次のサイクルｉ＋１に入力されたメモリ要請ＯＭＲ３及びＯＭＲ４は、バンク決定部１１０によってメモリバンクが決定される。
【００６２】
その次のサイクルｉ＋２になれば、制御部１４０は、スケジューリングされたメモリ要請ＳＭＲ１をメモリに送り、ストールを発生させる。また、スケジューリング部１２０は、メモリバンクが決定されたメモリ要請ＯＭＲ３及びＯＭＲ４のうちのバンク衝突が発生しないＯＭＲ４をバッファ１５０に入力し、要請生成部１３０は、バッファ１５０から１つずつ取り出して、スケジューリングされたメモリ要請ＳＭＲ２を生成する。その結果、ＳＭＲ２は、バンク衝突が発生しないＯＭＲ２のエレメントとＯＭＲ４のエレメントとが組み合わせられる。
【００６３】
その次のサイクルｉ＋３になれば、制御部１４０は、生成されたメモリ要請ＳＭＲ２をメモリに送り、スケジューリング部１２０は処理されず、待機中であるＯＭＲ３をバッファ１５０に入力し、要請生成部１３０をしてスケジューリングされたメモリ要請を生成させる。要請生成部１３０は、スケジューリング部１２０の要請に応じてバッファ１５０から１つずつ取り出して、スケジューリングされたメモリ要請ＳＭＲ３を生成し、その次のサイクルｉ＋４になれば、制御部は、メモリ要請ＳＭＲ３をメモリに送る。
【００６４】
サイクルｉ＋４になれば、最初にメモリに送られたメモリ要請ＳＭＲ１の処理が完了し、レジスタファイルに記録される前にＳＭＲ２が処理されるまで待機する。サイクルｉ＋５になれば、二番目にメモリに送られたＳＭＲ２の処理が完了して、元のメモリ要請ＯＭＲ１とＯＭＲ２との処理結果は、レジスタファイルに記録される。一方、ＳＭＲ２のうちに含まれた元のメモリ要請ＯＭＲ４は、ＳＭＲ３が完了するまで待機し、サイクルｉ＋６になって、ＳＭＲ３の処理が完了すれば、共にレジスタファイルに記録される。
【００６５】
図４Ｃは、本発明の一実施形態によるメモリ制御装置１００がメモリ要請を処理するさらに他の手続きを例示したものである。図４Ｃを参照すれば、サイクルｉでメモリバンク衝突が発生する可能性がある２つのメモリ要請ＯＭＲ１、ＯＭＲ２が同時に発行された。
【００６６】
この際、メモリ制御装置１００は、メモリに空きメモリバンクの存否を判断して、空きメモリバンクが存在する場合には、次のサイクルｉ＋１に優先順位が高いメモリ要請、例えば、ＯＭＲ１を先にメモリに伝送することによって、メモリバンク衝突をチェックする過程を省略することができる。
【００６７】
この際、サイクルｉ＋１で残りのメモリ要請ＯＭＲ２の各エレメント（０、１、２、３）は、対応するメモリバンクに入力されて待機することができる。引き続き図４Ｂを参照して、説明した手続きによってメモリ要請ＯＭＲ２が処理されうる。
【００６８】
本実施形態によれば、特定サイクルに新たなメモリ要請が発行される時、空きメモリが存在する場合、優先順位が高いメモリ要請をメモリバンク衝突をチェックせず、直ちにメモリに伝送することによって、潜在的なストール発生を最小化し、処理能を向上させることができる。
【００６９】
図５は、本発明の一実施形態によるメモリ制御方法のフローチャートである。一実施形態によるメモリ制御方法は、前述したようなメモリ制御装置１００によって行われる。
【００７０】
メモリ制御装置１００は、特定サイクルに入力される１つ以上のメモリ要請に対してアクセスするメモリバンクを決定する（段階５１０）。例えば、プロセッサが、ロード／ストアインストラクションを処理するために、メモリアクセスを要請すれば、プロセッサからメモリ要請を入力され（段階５１１）、そのメモリ要請に含まれた１つ以上のエレメントに対してアクセスするメモリバンクを決定することができる（段階５１２）。この際、メモリ制御装置１００は、各エレメントに対するアドレスを算出し、該算出されたアドレスに基づいて、対応するメモリバンクを決定することができる。
【００７１】
次いで、１つ以上のメモリ要請に含まれたあらゆるエレメントに対するメモリバンクが決定されれば、メモリバンク衝突が最小になるように、あらゆるエレメントを対象にしてスケジューリングすることができる（段階５２０）。この際、ある特定サイクルに同時に２つ以上のメモリ要請が入力されるか、以前サイクルで処理されていないメモリ要請によって２つ以上のメモリ要請が存在する場合、効果的なスケジューリングが可能である。
【００７２】
例えば、メモリ制御装置１００は、入力されたメモリ要請に含まれたエレメントに対してメモリバンクが決定されれば、各エレメントが、如何なるメモリ要請に対するものであるかを区分するために、あらゆるエレメントに対して、各メモリ要請のＩＤをタギングし（段階５２１）、該タギングされた各エレメントを対応するバッファに入力することができる（段階５２２）。このように、メモリバンクごとに対応するバッファを備え、バッファを用いてメモリに共に送られるメモリ要請をスケジューリングさせることによって、互いにバンク衝突が発生しないように、効果的にスケジューリングが可能であって、プロセッサのストール発生を最小化することができる。
【００７３】
一方、ある特定サイクルにメモリ要請が入力されなければ、メモリ制御装置１００は、まだ処理されていないメモリ要請の存否、すなわち、バッファにまだ残っているエレメントの存否を確認する（段階５２３）。バッファにエレメントが存在すれば、以前サイクルで発行されて、まだ処理されていないメモリ要請が残っている場合なので、メモリに送られるスケジューリングされたメモリ要請を生成するように要請する。もし、バッファにエレメントが全く存在しなければ、それ以上処理するメモリ要請がない場合なので、スケジューリングを終了する。
【００７４】
次いで、スケジューリング段階（５２０）で、バッファにエレメントが新たに入力されるか、まだ残っている場合、各バッファからエレメントを１つずつ取り出して、スケジューリングされたメモリ要請を生成する（段階５３０）。
【００７５】
以後、スケジューリングされたメモリ要請をメモリに送って処理させる（段階５４０）。すなわち、次のサイクルになるまで待機し（段階５４１）、次のサイクルになれば、スケジューリングされたメモリ要請をメモリに伝送する（段階５４２）。この際、バッファに残っているエレメントが存在する場合には、ストールを発生させる（段階５４４）。また、次のサイクルに新たなメモリ要請が入力されるか（段階５１１）によって、前述したような手続きを繰り返し行う。
【００７６】
図６は、本発明の他の実施形態によるメモリ制御方法のフローチャートである。一実施形態によるメモリ制御方法は、前述したようなメモリ制御装置１００によって行われる。
【００７７】
メモリ制御装置１００は、特定サイクルに入力される１つ以上のメモリ要請に対してアクセスするメモリバンクを決定する（段階６１０）。この際、メモリ制御装置１００は、図５の実施形態とは異なって、特定サイクルに１つ以上のメモリ要請を入力されれば（段階６１１）、メモリに空いているメモリバンクの存否を先に判断することができる（段階６１２）。判断の結果、空いているメモリバンクが存在すれば、次のサイクルにメモリバンクの衝突の発生有無を判断せず、優先順位が大きなメモリ要請をメモリに伝送する（段階６１３）。メモリ制御装置１００は、入力された各メモリ要請に含まれた各エレメントに対してアドレスを算出し、該算出されたアドレスに基づいて、対応するメモリバンクを決定することができる。アクセスするメモリバンクを決定することができる。この際、優先順位が高いメモリ要請を空いているメモリバンクにアクセスするように決定することができる。
【００７８】
次いで、残っているメモリ要請及びバッファに待機中であるまだ処理されていないメモリ要請に対して再びスケジューリングすることができる（段階６２０）。すなわち、段階６１０で、ある特定サイクルに入力された２つ以上のメモリ要請のうちの一部のメモリ要請が空いているメモリに伝送されれば、残りのメモリ要請をバッファに入力する（段階６２１）。
【００７９】
一方、ある特定サイクルにメモリ要請が入力されなければ、メモリ制御装置１００は、まだ処理されていないメモリ要請の存否、すなわち、バッファにまだ残っているエレメントの存否を確認する（段階６２２）。バッファにエレメントが存在すれば、以前サイクルで発行されて、まだ処理されていないメモリ要請が残っている場合なので、メモリに送られるスケジューリングされたメモリ要請を生成するように要請する。もし、バッファにエレメントが全く存在しなければ、それ以上処理するメモリ要請がない場合なので、スケジューリングを終了する。
【００８０】
次いで、スケジューリング段階（６２０）で、バッファにエレメントが新たに入力されるか、バッファに処理されず、残っているエレメントが存在する場合、バッファからエレメントを１つずつ取り出して、スケジューリングされたメモリ要請を生成することができる（段階６３０）。
【００８１】
以後、スケジューリングされたメモリ要請をメモリに送って処理させる（段階６４０）。すなわち、次のサイクルになるまで待機し（段階６４１）、次のサイクルになれば、スケジューリングされたメモリ要請をメモリに伝送する（段階６４２）。次いで、バッファに残っているエレメントの存否をチェックして（段階６４３）、バッファにエレメントが存在すれば、ストールを発生させる（段階６４４）。
【００８２】
一方、本実施形態は、コンピュータで読み取り可能な記録媒体にコンピュータで読み取り可能なコードとして具現することが可能である。コンピュータで読み取り可能な記録媒体は、コンピュータシステムによって読み取れるデータが保存されるあらゆる種類の記録装置を含む。
【００８３】
コンピュータで読み取り可能な記録媒体の例としては、ＲＯＭ、ＲＡＭ、ＣＤ−ＲＯＭ、磁気テープ、フロッピー（登録商標）ディスク、光データ保存装置などがあり、また、キャリアウェーブ（例えば、インターネットを介した伝送）の形態で具現するものを含む。また、コンピュータで読み取り可能な記録媒体は、ネットワークで連結されたコンピュータシステムに分散されて、分散方式でコンピュータで読み取り可能なコードとして保存されて実行可能である。そして、本実施形態を具現するための機能的な（ｆｕｎｃｔｉｏｎａｌ）プログラム、コード及びコードセグメントは、本発明が属する技術分野のプログラマーによって容易に推論されうる。
【００８４】
当業者ならば、開示された技術的思想や必須的な特徴を変更せずとも、他の具体的な形態で実施可能であることを理解できるであろう。したがって、前述した実施形態は、あらゆる面で例示的なものであり、限定的ではないということを理解せねばならない。
【産業上の利用可能性】
【００８５】
本発明は、メモリ制御装置及び方法関連の技術分野に適用可能である。
【符号の説明】
【００８６】
１００  メモリ装置
２００  メモリ
３１０  ロード／ストアユニット
３２０  バッファ
４００  レジスタファイル
１１０  バンク決定部
１２０  スケジューリング部
１３０  要請生成部
１４０  制御部
１５０  バッファ
【図１】
2014219980.tif 000003
【図２】
2014219980.tif 000004
【図３Ａ】
2014219980.tif 000005
【図３Ｂ】
2014219980.tif 000006
【図４Ａ】
2014219980.tif 000007
【図４Ｂ】
2014219980.tif 000008
【図４Ｃ】
2014219980.tif 000009
【図５】
2014219980.tif 000010
【図６】
2014219980.tif 000011