(57)【要約】【課題】  有効なメモリ帯域幅を拡張させるためのメモリアクセス処理を制御するためのメモリコントローラの構成及び動作方法を提供すること。【解決手段】  本発明では、メモリアクセスリクエストは、メモリコントローラの入力キューに連続的に受け取られる。リクエストの入力キューへの受信後、シーケンスマトリックスが再構成され、逐次的なリクエスト間のコンフリクトまたは潜在的遅延がコンフリクト検出器により特定される。コンフリクト検出器は、データバスとの間のデータフローを最適化するため、メモリコアアクセスリクエストを再構成する。例えば、バンクビジー状態または他の遅延が逐次的に受け取られたメモリリクエストにおいてコンフリクト検出器により認識されると、メモリコントローラは、可能である場合にはコンフリクトまたは遅延を解消するため、あるいはそうでない場合には、遅延を最小化するため、保留中のメモリリクエストを実行する順序を再構成する。【選択図】  図１
2008204487.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリアクセスリクエストを本来の受信順序で少なくとも１つの要求元から受け取る入力キューと、
前記複数のメモリアクセスリクエストが構成可能であり、逐次的順序で前記複数のメモリアクセスリクエストを格納するシーケンスマトリックスと、
前記シーケンスマトリックスにおける複数のメモリアクセスリクエストのタイミングシーケンスを構成するシーケンシングユニットと、
前記シーケンシングユニットにより前記シーケンスマトリックスにおいて構成されたメモリアクセスリクエストのシーケンスにおいてコンフリクトまたは遅延が発生するか検出するコンフリクト検出器であって、前記シーケンスマトリックスの前記メモリアクセスリクエストの１つと、前記シーケンスマトリックスに構成される前記メモリアクセスリクエストのシーケンスの第２のメモリアクセスリクエストとの又は前記シーケンスマトリックスに以前に構成された複数の実行されていないメモリアクセスリクエストの１つとの比較の結果としてコンフリクト又は遅延が、検出されたコンフリクト又は遅延に係るメモリアクセスリクエストの前方への移動によって検出されると、前記シーケンシングユニットが前記シーケンスマトリックス内の前記リクエストの順序を再構成するように、前記シーケンシングユニットに検出されたコンフリクト又は遅延を通知するコンフリクト検出器と、
各コマンドの実行の間のアイドル時間を回避するような実行順序によりコマンドシーケンサによって構成される複数のコマンドが、各メモリアクセスリクエストがリード若しくはライトコマンドの何れか及びデータコントロールコマンドを有する前記再構成されたメモリアクセスリクエストから前記コマンドシーケンサによって抽出されるよう構成される実行キューと、
前記実行キューからの前記メモリアクセスリクエストの前記実行順序による実行後、前記メモリアクセスリクエストの本来の受信順序を追跡し、前記メモリアクセスリクエストの本来の受信順序でリクエストデータを前記少なくとも１つの要求元に返すリードリターンキューと、
メモリから読み出されたリクエストデータを、該データが前記係るアクセスリクエストの要求元に返されるまで、保持するリターンデータバッファと、
を有するメモリコントローラであって、
当該コントローラは、複数のメモリクロックスピードを有するメモリとインタフェースをとるよう構成されるメモリコントローラ。
【請求項２】
請求項１記載のメモリコントローラであって、さらに、
メモリアクセスリクエストを少なくともリードまたはライトコマンド及びデータコントロールコマンドにパース処理するコマンドパーサと、
前記実行キューの各アクセスリクエストに対して、前記データコントロールコマンドと前記リードまたはライトコマンドを構成するコマンドシーケンサと、
を有するメモリコントローラ。
【請求項３】
請求項２記載のメモリコントローラであって、さらに、
実行のため、前記実行キューから一度に少なくとも１つのコマンドを選択するコマンドセレクタを有するメモリコントローラ。
【請求項４】
請求項３記載のメモリコントローラであって、
固定された時間インターバル中に選択されるコマンド数は、前記コマンドセレクタに与えられるコマンド選択クロック信号に依存するメモリコントローラ。
【請求項５】
請求項１記載のメモリコントローラであって、
前記コンフリクト検出器は、前記複数の実行されていないメモリアクセスリクエスト若しくは前記シーケンスマトリックスにおける前記メモリアクセスリクエストから生じる潜在的なバンクビジー状態を検出することが可能であるメモリコントローラ。
【請求項６】
請求項１記載のメモリコントローラであって、
前記コンフリクト検出器は、前記複数の実行されていないメモリアクセスリクエスト若しくは前記シーケンスマトリックスにおける前記メモリアクセスリクエストから生じる潜在的なページコンフリクト状態を検出することが可能であるメモリコントローラ。
【請求項７】
請求項１記載のメモリコントローラであって、
前記コンフリクト検出器は、前記複数の実行されていないメモリアクセスリクエスト若しくは前記シーケンスマトリックスにおける前記メモリアクセスリクエストから生じる潜在的なページミス状態を検出することが可能であるメモリコントローラ。
【請求項８】
複数の要求元からリードリクエスト及び/またはライトリクエストからなる複数のメモリアクセスリクエスト信号を受け取り、該リクエストが前記要求元から受信された順序に対応するシーケンスで前記複数のメモリアクセスリクエスト信号を受け取るシーケンシングユニットと、
前記シーケンスにおいて時間的に近接した実行されていないリクエスト間の検出されたメモリアクセスのコンフリクトに基づき、前記複数のメモリアクセスリクエスト信号のシーケンスを再構成し、これにより前記メモリアクセスリクエストの実行が、検出されたコンフリクトに係るメモリアクセスリクエストを前記シーケンスにおいて前方に移動することによって、前記再構成されたシーケンスにおいて実行されることを可能にする再構成ユニットと、
各コマンドの実行の間のアイドル時間を回避するような実行順序により構成される複数のコマンドを、各メモリアクセスリクエストがリード若しくはライトコマンド及びデータコントロールコマンドからなる前記再構成されたメモリアクセスリクエストから抽出し、前記複数のコマンドを実行する実行ユニットと、
実行されたリードリクエストを該リクエストの本来の受信順序に再順序付けし、これにより前記実行されたリードリクエストにより取得されたデータが前記再順序付けされたシーケンスにより前記要求元に返されることを可能にする再順序付けユニットと、
を有するメモリコントローラであって、
当該コントローラは、複数のメモリクロックスピードを有するメモリとインタフェースをとるよう構成されるメモリコントローラ。
【請求項９】
請求項８記載のメモリコントローラであって、
前記再構成ユニットは、前記シーケンスにおける時間的に近接した実行されていないリクエスト間の検出されたバンクビジー状態を回避するため、前記メモリアクセスリクエストのシーケンスを再構成するメモリコントローラ。
【請求項１０】
請求項８記載のメモリコントローラであって、
前記再構成ユニットは、前記シーケンスにおける時間的に近接した実行されていないリクエスト間の検出されたバンクビジー状態中にメモリバンクがアクセス可能となるのを待機することにより生じる遅延を最小化するため、前記メモリアクセスリクエストのシーケンスを再構成するメモリコントローラ。
【請求項１１】
請求項８記載のメモリコントローラであって、
前記再構成ユニットは、前記シーケンスにおける時間的に近接した実行されていないリクエスト間の検出されたページコンフリクト状態を回避するため、前記メモリアクセスリクエストのシーケンスを再構成するメモリコントローラ。
【請求項１２】
請求項８記載のメモリコントローラであって、
前記再構成ユニットは、前記シーケンスにおける時間的に近接した実行されていないリクエスト間の検出されたページコンフリクト状態中にメモリバンクがアクセス準備されるのを待機することにより生じる遅延を最小化するため、前記メモリアクセスリクエストのシーケンスを再構成するメモリコントローラ。
【請求項１３】
請求項８記載のメモリコントローラであって、
前記再構成ユニットは、前記シーケンスにおける時間的に近接した実行されていないリクエスト間の検出されたページミス状態中にメモリバンクがアクセス準備されるのを待機することにより生じる遅延を最小化するため、前記メモリアクセスリクエストのシーケンスを再構成するメモリコントローラ。
【請求項１４】
複数のメモリアクセスリクエストを到着順に格納する入力回路と、
検出されたコンフリクトに係るメモリアクセスリクエストを前方に移動させることによって、前記格納されたメモリアクセスリクエストをメモリアクセスリクエストの実行順に再構成するメモリアクセスリクエスト再構成回路であって、前記格納されているメモリアクセスリクエストの順序を、前記格納されているメモリアクセスリクエストの順序において存在するメモリアクセスコンフリクトであって、各メモリアクセスリクエストがリード若しくはライトコマンド及びデータコントロールコマンドからなる前記複数のメモリアクセスリクエストの１つと第２の実行されていない格納されているメモリアクセスリクエストとの比較の結果として検出されるメモリアクセスコンフリクトの検出に基づき、前記実行順に再構成するメモリアクセスリクエスト再構成回路と、
各コマンドの実行の間のアイドル時間を回避するため、前記再構成されたメモリアクセスリクエストからのコマンドをコマンド実行順に構成するコマンドシーケンサと、
前記実行順によりメモリアクセスリクエストを出力する送信回路と、
を有するメモリコントローラであって、
前記再構成回路は、第１クロックスピードにより動作し、
前記再構成回路により構成されるコマンドは、複数の異なるメモリクロックスピードの１つに従って実行される、メモリコントローラ。
【請求項１５】
請求項１４記載のメモリコントローラであって、
前記再構成回路は、前記実行されていない格納されているメモリアクセスリクエストから生じるバンクビジーコンフリクトの検出に基づき、前記格納されたメモリアクセスリクエストを再構成するメモリコントローラ。
【請求項１６】
請求項１５記載のメモリコントローラであって、
前記再構成回路は、前記検出されたバンクビジーコンフリクトを回避するよう前記格納されたメモリアクセスリクエストを再構成するメモリコントローラ。
【請求項１７】
請求項１５記載のメモリコントローラであって、
前記再構成回路は、前記メモリアクセスリクエストが該メモリアクセスリクエストの格納順に実行される場合、前記検出されたバンクビジーコンフリクト状態中にメモリバンクがアクセス可能になることを待機することにより生じる遅延を最小化するため、前記格納されたメモリアクセスリクエストを再構成するメモリコントローラ。
【請求項１８】
請求項１４記載のメモリコントローラであって、
前記再構成回路は、前記格納されたメモリアクセスリクエストの順序による前記実行されていない格納されているメモリアクセスリクエストから生じるページコンフリクト状態の検出に基づき、前記格納されたメモリアクセスリクエストを再構成するメモリコントローラ。
【請求項１９】
請求項１８記載のメモリコントローラであって、
前記再構成回路は、前記検出されたページコンフリクトを回避するよう前記格納されたメモリアクセスリクエストを再構成するメモリコントローラ。
【請求項２０】
請求項１８記載のメモリコントローラであって、
前記再構成回路は、前記格納されたメモリアクセスリクエストの順序により検出されたページコンフリクト状態の間に、メモリバンクがアクセス準備されるのを待機することにより生じる遅延を最小化するよう前記格納されたメモリアクセスリクエストを再構成するメモリコントローラ。
【請求項２１】
請求項１４記載のメモリコントローラであって、
前記再構成回路は、前記格納されたメモリアクセスリクエストの順序による前記実行されていない格納されているメモリアクセスリクエストから生じるページミス状態の検出に基づき、前記格納されたメモリアクセスリクエストを再構成するメモリコントローラ。
【請求項２２】
請求項２１記載のメモリコントローラであって、
前記再構成回路は、前記格納されたメモリアクセスリクエストの順序により検出されたページミス状態の間に、メモリバンクがアクセス準備されるのを待機することにより生じる遅延を最小化するよう前記格納されたメモリアクセスリクエストを再構成するメモリコントローラ。
【請求項２３】
請求項１４記載のメモリコントローラであって、さらに、
前記格納されたメモリアクセスリクエストを前記実行順に実行する実行回路と、
実行後、前記格納されたメモリアクセスリクエストの到着順を追跡する追跡回路と、
を有するメモリコントローラ。
【請求項２４】
請求項２３記載のメモリコントローラであって、
前記追跡回路は、各メモリアクセスリクエストを前記到着順における該リクエストの位置に対応してタグを関連付けするメモリコントローラ。
【請求項２５】
請求項２３記載のメモリコントローラであって、
前記追跡回路は、前記メモリアクセスリクエストの実行により各自のメモリ位置から読み出されたデータを構成するバッファを有し、これにより、前記バッファに構成されたデータを前記本来の到着順により前記メモリコントローラから転送することを可能にするメモリコントローラ。
【請求項２６】
メモリアクセス処理の制御方法であって、
受信シーケンスにおける複数のメモリアクセスリクエストを受信するステップと、
前記複数のメモリアクセスリクエストの１つと第２の実行されていないメモリアクセスリクエストとを比較することによって、前記シーケンスにおける時間的に近接した実行されていないリクエスト間のメモリアクセスコンフリクトを検出するステップと、
検出されたコンフリクトに係るメモリアクセスリクエストをシーケンスにおいて前方に移動させることによって、前記検出結果に基づき前記リクエストシーケンスを再構成されたシーケンスに再構成するステップと、
前記メモリアクセスリクエストを前記再構成された順序により実行するステップと、
各メモリアクセスリクエストを少なくともリード若しくはライトコマンド及びデータコントロールコマンドにパース処理するステップと、
コマンドセレクトクロックスピードによる実行のため前記再構成されたシーケンスから一度に少なくとも１つのコマンドを選択するステップと、
を有し、
前記リクエストのシーケンスを再構成するステップはさらに、各コマンドの実行の間のアイドル時間を回避する実行順によりコマンドが実行されるように、前記再構成されたシーケンスの各リクエストに対して前記リード若しくはライトコマンド及び前記データコントロールコマンドを別々に構成し、
前記メモリアクセスコンフリクトを検出するステップはさらに、実行されていないメモリアクセスリクエストから生じるコンフリクトを検出する方法。
【請求項２７】
請求項２６記載の制御方法であって、
前記複数のメモリアクセスリクエストは、指定されたメモリアドレスにデータを書き込むためのライトリクエストと、指定されたメモリアドレスからデータを読み出すためのリードリクエストとを含む方法。
【請求項２８】
請求項２７記載の制御方法であって、さらに、
前記リードリクエストの実行により前記指定されたメモリアドレスから取得されたデータを、前記受信シーケンスにおける本来の順序によりメモリコントローラから出力するステップを有する方法。
【請求項２９】
請求項２７記載の制御方法であって、さらに、
実行後、前記メモリアクセスリクエストの受信シーケンスを追跡するステップと、
前記再構成されたシーケンスでの前記リードリクエストの実行により取得されるリクエストデータを前記リードリクエストの受信シーケンスに対応する順序により各自の要求元に転送するステップと、
を有する方法。
【請求項３０】
請求項２９記載の制御方法であって、
前記受信シーケンスを追跡するステップは、前記リクエストのシーケンスの再構成後、前記リードリクエストが本来受信されたシーケンスを示すよう各リードリクエストにタグを関連付ける方法。
【請求項３１】
請求項２９記載の制御方法であって、
前記受信シーケンスを追跡するステップは、前記リクエストのシーケンスの再構成後、各リードリクエストの実行により取得されたデータが格納されるバッファ位置を割り当て、
該割り当てられたバッファ位置は、前記リードリクエストが本来受信されたシーケンスを示す方法。
【請求項３２】
請求項２６記載の制御方法であって、
前記検出するステップは、前記受信シーケンスの現在位置において最も最近受信されたメモリアクセスリクエストを実行することにより、コンフリクトが生じるか検出するよう実行される方法。
【請求項３３】
請求項３２記載の制御方法であって、
前記検出するステップは、前記受信シーケンスの現在位置において最も最近受信されたメモリアクセスリクエストを実行することにより、バンクビジーコンフリクトが生じるか検出するよう実行される方法。
【請求項３４】
請求項３３記載の制御方法であって、
前記再構成するステップは、前記バンクビジーコンフリクトを回避するよう実行される方法。
【請求項３５】
請求項３３記載の制御方法であって、
前記再構成するステップは、検出されたバンクビジーコンフリクトの間にメモリバンクがアクセス可能になるのを待機することにより生じる遅延を最小化するよう実行される方法。
【請求項３６】
請求項３２記載の制御方法であって、
前記検出するステップは、前記受信シーケンスの現在位置において最も最近受信されたメモリアクセスリクエストを実行することにより、ページコンフリクトが生じるか検出するよう実行される方法。
【請求項３７】
請求項３６記載の制御方法であって、
前記再構成するステップは、前記ページコンフリクトを回避するよう実行される方法。
【請求項３８】
請求項３６記載の制御方法であって、
前記再構成するステップは、検出されたページコンフリクトの間にメモリバンクがアクセス準備されるのを待機することにより生じる遅延を最小化するよう実行される方法。
【請求項３９】
請求項２６記載の制御方法であって、
前記検出するステップは、前記受信シーケンスの現在位置において最も最近受信されたメモリアクセスリクエストを実行することにより、遅延が生じるか検出するよう実行される方法。
【請求項４０】
請求項３９記載の制御方法であって、
前記検出するステップは、前記受信シーケンスの現在位置において最も最近受信されたメモリアクセスリクエストを実行することにより、ページミスが生じるか検出するよう実行される方法。
【請求項４１】
請求項４０記載の制御方法であって、
前記再構成するステップは、検出されたページミスの間にメモリバンクがアクセス準備されるのを待機することにより生じる遅延を最小化するよう実行される方法。
【請求項４２】
請求項２６記載の制御方法であって、
前記検出するステップは、前記受信シーケンスの現在位置において最先に受信されたメモリアクセスリクエストを実行することにより、コンフリクトが生じるか検出するよう実行される方法。
【請求項４３】
請求項４２記載の制御方法であって、
前記検出するステップは、前記受信シーケンスの現在位置において最先に受信されたメモリアクセスリクエストを実行することにより、バンクビジーコンフリクトが生じるか検出するよう実行される方法。
【請求項４４】
請求項４３記載の制御方法であって、
前記再構成するステップは、前記バンクビジーコンフリクトを回避するよう実行される方法。
【請求項４５】
請求項４３記載の制御方法であって、
前記再構成するステップは、検出されたバンクビジーコンフリクトの間にメモリバンクがアクセス準備されるのを待機することにより生じる遅延を最小化するよう実行される方法。
【請求項４６】
請求項４２記載の制御方法であって、
前記検出するステップは、前記受信シーケンスの現在位置において最先に受信されたメモリアクセスリクエストを実行することにより、ページコンフリクトが生じるか検出するよう実行される方法。
【請求項４７】
請求項４６記載の制御方法であって、
前記再構成するステップは、前記ページコンフリクトを回避するよう実行される方法。
【請求項４８】
請求項４６記載の制御方法であって、
前記再構成するステップは、検出されたページコンフリクトの間にメモリバンクがアクセス準備されるのを待機することにより生じる遅延を最小化するよう実行される方法。
【請求項４９】
請求項４２記載の制御方法であって、
前記受信シーケンスの最先に受信されたメモリアクセスリクエストに関してコンフリクトが検出された場合、前記再構成するステップは、前記最先に受信されたメモリアクセスリクエストを前記シーケンスにおける最も最近に受信されたメモリアクセスリクエストに続く位置に一般に対応する前記シーケンスの終端に前記最先に受信されたメモリアクセスリクエストを移動する方法。
【請求項５０】
請求項２６記載の制御方法であって、
前記検出するステップは、前記受信シーケンスの現在位置において最先に受信されたメモリアクセスリクエストを実行することにより、遅延が生じるか検出するよう実行される方法。
【請求項５１】
請求項５０記載の制御方法であって、
前記検出するステップは、前記受信シーケンスの現在位置において最先に受信されたメモリアクセスリクエストを実行することにより、ページミスが生じるか検出するよう実行される方法。
【請求項５２】
請求項５１記載の制御方法であって、
前記再構成するステップは、検出されたページミスの間にメモリバンクがアクセス準備されるのを待機することにより生じる遅延を最小化するよう実行される方法。
【請求項５３】
請求項５０記載の制御方法であって、
前記受信シーケンスの最先に受信されたメモリアクセスリクエストに関してコンフリクトが検出された場合、前記再構成するステップは、前記最先に受信されたメモリアクセスリクエストを前記シーケンスにおける最も最近に受信されたメモリアクセスリクエストに続く位置に一般に対応する前記シーケンスの終端に前記最先に受信されたメモリアクセスリクエストを移動する方法。
【請求項５４】
プロセッサと、
前記プロセッサとデータをやりとりする少なくとも１つの記憶装置と、
前記プロセッサから前記少なくとも１つの記憶装置へのメモリアクセスリクエストを管理するメモリコントローラと、
を有するプロセッサシステムであって、
前記メモリコントローラは、
複数の要求元からリードリクエスト及び/またはライトリクエスト及びデータコントロールコマンドからなる複数のメモリアクセスリクエスト信号を受け取り、該リクエストが前記要求元から受信された順序に対応するシーケンスで前記複数のメモリアクセスリクエスト信号を受け取るシーケンシングユニットと、
メモリアクセスリクエスト信号と実行されていないメモリアクセスリクエスト信号とを再構成ユニットが比較することによって前記シーケンスにおいて時間的に近接した実行されていないリクエスト間において検出されたメモリアクセスのコンフリクトに基づき、検出されるコンフリクトを軽減するため前記シーケンスにおいてメモリアクセスリクエスト信号を前方に移動することによって、前記複数のメモリアクセスリクエスト信号のシーケンスを再構成し、これにより前記メモリアクセスリクエストの実行が前記再構成されたシーケンスにより実行されることを可能にする再構成ユニットと、
前記再構成されたシーケンスにより前記メモリアクセスリクエストを実行し、各メモリアクセスリクエストからのコマンドを、各コマンドの実行の間のアイドル時間を回避するよう構成する実行ユニットと、
実行されたリードリクエストを該リクエストの本来の受信順序に再順序付けし、これにより前記実行されたリードリクエストにより取得されたデータが前記再順序付けされたシーケンスにより前記要求元に返されることを可能にする再順序付けユニットと、
を有し、
前記コントローラは、複数のメモリクロックスピードの１つを有するメモリとインタフェースをとるよう構成されるシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、有効なメモリ帯域幅を拡張させるためのメモリアクセス処理を制御するためのメモリコントローラの構成及び動作方法に関する。
【背景技術】
【０００２】
大部分のコンピュータまたはデータ処理システムでは、メインとなるアクティブメモリ、すなわちランダムアクセスメモリ（ＲＡＭ）は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）である。ＤＲＡＭの構成は、一般に、複数のバンクの形式に構成された多数のメモリから構成される。各バンクは、各自が一意的なメモリアドレスに関連付けされたセルを有するメモリセルのアレイに対応している。特に、バンク内の各メモリアドレスは、行アドレスと列アドレスにより指定され、各行アドレスはメモリページとして定義される。このため、各メモリページは、当該ページ内の異なる列指定に対応する複数のメモリ位置を含む。
【０００３】
一連のアクセスリクエストを実行するとき、現在リクエストされているページが現在開かれている他のページを有するバンクと同じバンクにおいて検出される場合、このような状態は「ページコンフリクト（ｐａｇｅ  ｃｏｎｆｌｉｃｔ）」として知られ、この場合には、前に開かれていた当該ページがまず閉じられる、すなわち「プリチャージされる（ｐｒｅｃｈａｒｇｅｄ）」必要がある。プリチャージ後、リクエストされたページは開かれ、すなわち「アクティブ化（ａｃｔｉｖａｔｅｄ）」され、リード（ｒｅａｄ）またはライト（ｗｒｉｔｅ）処理が実行される。現在リクエストされているページが開かれたページを持たないバンクにおいて検出される場合には、「ページミス（ｐａｇｅ  ｍｉｓｓ）」が発生し、アクティブ化処理の実行が必要となる。現在のメモリアクセスリクエストが前のメモリアクセスリクエストからすでに開かれているページに対するものであるとき、「ページヒット（ｐａｇｅ  ｈｉｔ）」が発生すると言われる。
【０００４】
ページヒットリクエストとは相対的にページコンフリクトやページミスのメモリアクセスに対して実行されねばならない追加的処理のため、これら２つの処理を実行するのに要する時間は、ページヒットリクエストに対するものよりかなり大きなものとなる。マイクロプロセッサの技術進歩の初期段階では、リード及びライト処理のためのＤＲＡＭメモリページへのアクセスリクエストは、先入先出（ｆｉｒｓｔ  ｉｎ  ｆｉｒｓｔ  ｏｕｔ）原則に基づき受け取り及び実行がなされていた。このような処理はかなり非効率なものとなる傾向があり、多数のページミスとコンフリクトを発生させ、プロセッサ及び/またはメモリコントローラのリソースをメモリページのプリチャージ及びアクティブ化に使用することが必要となる。
【０００５】
最近では、メモリアクセスが優先度に基づくより先進的な処理方法が開発されてきた。このアクセスリクエストの優先度は、リクエストを送信する装置のタイプ、リクエストされるアクセスのタイプ、リクエストによるアクセスが所望されるメモリアドレスなどの様々な要因に基づくものであってもよい。しかしながら、優先度により厳密にメモリアクセスを提供する問題は、低い優先度のリクエストが許容できないくらい長期間にわたって拒絶アクセスとなってしまう可能性があるということである。
【０００６】
さらに、新たな世代のコンピュータが進化するに従い、メモリクロック速度は大きく増大する。メモリクロック速度が増大するに従い、ページミスのメモリ処理の潜在的な発生及び時間的ペナルティ、バンクのビジーコンフリクト及び他のコンフリクトがまたますます深刻になる。特に、アクセスされた各メモリ位置との情報の転送に利用されるデータバスは、プリチャージ、アクティブ化、バンクが利用可能となるための待機などの間はアイドル状態となる。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
従って、上記問題点を軽減する解法が必要とされる。特に、受け取ったメモリアクセスリクエストシーケンスの順序がコンフリクトの回避または軽減のため再構成可能である場合、メモリ処理効率は大きく向上するであろう。コンフリクトの回避または軽減を行うことにより、メモリデータバスのアイドルタイムが軽減または解消されるという点で、メモリデータバスはより効率的に利用され、これにより、メモリシステムのメモリ帯域幅を効果的に増大させ、従来可能とされたものより、より多くのメモリアクセストランザクションがより短い時間で発生することを可能にする。
【０００８】
本発明は、上述のようなコンフリクト及び遅延を最小化するため、逐次的に受け取ったＤＲＡＭへのアクセスリクエストを再構成する一方、これらのリクエストが本来受け取られたものと同じ順序でリクエストされた情報を要求元ユニットに返すことにより、従来技術において特定された問題を解決しようとするものである。
【０００９】
本発明の課題は、有効なメモリ帯域幅を拡張させるためのメモリアクセス処理を制御するためのメモリコントローラの構成及び動作方法を提供することである。
【課題を解決するための手段】
【００１０】
本発明では、メモリアクセスリクエストは、メモリコントローラの入力キューに連続的に受け取られる。リクエストの入力キューへの受信後、シーケンスマトリックスが再構成され、逐次的なリクエスト間のコンフリクトまたは潜在的遅延がコンフリクト検出器により特定される。コンフリクト検出器は、データバスとの間のデータフローを最適化するため、メモリコアアクセスリクエストを再構成する。例えば、バンクビジー状態または他の遅延が逐次的に受け取られたメモリリクエストにおいてコンフリクト検出器により認識されると、メモリコントローラは、可能である場合にはコンフリクトまたは遅延を解消するため、あるいはそうでない場合には、遅延を最小化するため、保留中のメモリリクエストを実行する順序を再構成する。
【００１１】
ライトリクエストは、以前のリクエストとアドレッシングコンフリクトがない限り、アウトオブオーダ実行することができる。
【００１２】
再順序付けされたシーケンスは実行キューに保持され、各リクエストはもとのシーケンスにおけるそれの位置を示すためのタグが付けられ、これにより、返されたデータは入力メモリアクセスリクエストの順序に一致するようメモリコントローラにおいて適切に再順序付けすることができる。
【００１３】
コマンドセレクタは、実行キューから実行対象の１以上のコマンドを選択する。コマンドセレクタは、一定速度のＤＲＡＭシーケンサが複雑なクロックフェージング（ｃｌｏｃｋ  ｐｈａｓｉｎｇ）処理を行うことなく複数のクロック速度とインタフェースをとることを可能にするインタフェースタイミング特性を含む。
【００１４】
リードリターンキューは、ＤＲＡＭから取得されるリターンデータを追跡する。各リターンデータに関連付けされたタグに基づき、リードリターンキューは、もとの逐次的順序により読み出されたデータを各自の要求元に返す。具体的には、リードリクエストが実行されると、リターンデータに関連付けされたタグがメモリコントローラにおける最長の待ち時間を有するリードリクエストに対応する場合、リターンデータは当該データを要求したシステムユニットに返される。当該タグが最長の待ち時間を有するリードリクエストに関連付けされていない場合、より長い待ち時間を有するすべてのリードリクエストに対するリターンデータが各自の要求元に返されるまで、リターンデータはバッファに格納される。
【００１５】
あるいは、各リクエストは、受け取ったリクエストシーケンスに基づくバッファ位置に割り当てることができる。ＤＲＡＭから取得されたリターンデータが入力キューに受け取られた最先のリードリクエストに対応するバッファ位置に配置されるとき、当該データは適切な要求元に返される。そうでない場合、入力キューに受け取られたすべての以前のリードリクエストが実行されるまで、リターンデータはバッファに保持される。このようにして、リードリターンキューは、もとの受信順序によりバッファ位置からデータを返す。
【発明の効果】
【００１６】
本発明によると、有効なメモリ帯域幅を拡張させるためのメモリアクセス処理を制御するためのメモリコントローラの構成及び動作方法を提供することができる。
【発明を実施するための最良の形態】
【００１７】
説明の簡単化のため、本発明の好適な実施例が、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）装置に関して利用されるものとして以下において説明される。しかしながら、本発明がＤＲＡＭに関する用途に限定されるものでないということは理解されるべきである。むしろ、本発明の方法とメモリコントローラは、スタティックＲＡＭ（ＳＲＡＭ）などの他のタイプのランダムアクセスメモリや、例えば、ファーストページモードＤＲＡＭ（ＦＰＭ  ＤＲＡＭ）、拡張データアウトＤＲＡＭ（ＥＤＯ  ＤＲＡＭ）、バーストＥＤＯ  ＤＲＡＭ、同期ＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレートＤＲＡＭ（ＤＤＲ  ＤＲＡＭ）、ランバスＤＲＡＭ（ＲＤＲＡＭ）などを含む様々なＤＲＡＭの亜種と共に利用されてもよい。
【００１８】
図１は、入力キュー１２、コマンドパーサ１４、シーケンシングユニット１６、シーケンスマトリックス１８、コンフリクト検出器２０、コマンドシーケンサ２２、実行キュー２４、コマンドセレクタ２６、入出力バッファ２８、リードリターンキュー３０及びリターンデータバッファ３２を有する本発明によるメモリコントローラ１０を示す。
【００１９】
メモリアクセスリクエストがメモリコントローラ１０に入力され、先入先出原則に基づき入力キュー１２で受け取られる。その後、受け取ったリクエストは、メモリアドレス（ＭＡ）データ、チップセレクト（ＣＳ）コマンド（アクセス対象のリクエストされたメモリバンクを示す）、行アドレスセレクト（ＲＡＳ）コマンド、列アドレスセレクト（ＣＡＳ）コマンド、及びリクエストがリードまたはライト処理であるか示すライトイネーブル（ＷＥ）状態などの各リクエスト信号から該当する情報を取得するため、コマンドパーサ１４により逐次的に処理される。
【００２０】
その後、取得された情報は、シーケンスマトリックス１８で受け取られるクロック信号に従って受信したメモリアクセスリクエストをシーケンスマトリックス１８に配置するシーケンシングユニット１６に与えられる。ここで、当該処理の開始に応答にして、アクセスリクエストがそれらのシーケンシングユニット１６での受信順序に従ってマトリックスにロードされる。
【００２１】
コンフリクト検出器２０は、シーケンスマトリックス１８における当該情報をモニタし、発生の可能性があるコンフリクトや遅延に対して、マトリックスのリクエストシーケンスがシーケンスマトリックにおける現在の順序により実行されるべきかチェックする。コンフリクト検出器２０により検出されたコンフリクトまたは遅延は、シーケンシングユニット１６に通知され、その後、特定されたコンフリクトや遅延によりメモリデータバスがアイドル状態となる時間を最小化あるいは解消するため、マトリックスにおけるリクエストの順序を再構成する。コンフリクト検出器２０により検出される可能性のあるコンフリクトには、以下に限定するものではないが、例えば、ページコンフリクト、メモリバンクが他のリードまたはライト処理を実行するのにビジーであるバンクビジー状態などが含まれる。コンフリクト検出器により特定される遅延は、必ずしも他のメモリアクセスリクエストの実行とコンフリクトするものではないが、メモリデータバスがアイドル状態の期間中に準備ステップの実行を要求する状態である。このような遅延には、例えば、ページコンフリクト、ページミスなどが含まれる。
【００２２】
一般に、リード及びライト何れのタイプのメモリアクセスリクエストも、シーケンスマトリックス１８において再順序付けされてもよい。しかしながら、必要な場合には、再順序付けされたシーケンスが入力キューへのより早くに受け取られたリクエストとのアドレッシングコンフリクトを生成しない程度まで、あるいはマトリックスにおける他の任意のメモリアクセスリクエストに関連して該当するメモリ位置に格納された、または格納予定のデータに干渉しない程度まで、ライトリクエストは再構成されることが好ましい。
【００２３】
追加的なメモリアクセスリクエストがシーケンスマトリックス１８に移される一方、シーケンシングユニット１６によるコンフリクトの解消または遅延の低減を行うため再構成されると、当該シーケンスの先頭にあるリクエストは、再構成されたリクエストが実行を待機する転送バッファとして用いられる実行キュー２４に移される。シーケンシングユニット１６で利用されるコンフリクト解消処理に依存して、クロック信号による連続ベース、所定数のアクセスリクエストのバッチ、あるいは所定の蓄積サイズのリクエストの何れかに基づき、実行キュー２４に移されるようにしてもよい。好ましくは、実行キュー２４のクロック（ＣＬＫ）は、シーケンスマトリックス１８のロード処理を誘導するものと同一のクロック（ＣＬＫ）である。
【００２４】
コマンドシーケンサ２２は、データコントロールコマンドの挿入、及び/またはデータコントロールコマンドとあるメモリアクセスリクエストのリードまたはライトコマンドとの一時的分離が必要であるかもしれないため、シーケンスマトリックス１８から実行キュー２４に転送される各リクエストに関する様々なコマンドを調整する。例えば、実行キュー２４に送信されるリードまたはライトリクエストがプリチャージ及び/またはアクティブ化処理を必要とする場合、当該プリチャージ及び/またはアクティブ化処理を開始するデータコントロールコマンドは、当該プリチャージ及び/またはアクティブ化コマンドと関連するリードまたはライトコマンドとの間に配置された他のアクセスリクエストに関する少なくとも１つの他のリードまたはライトコマンドと共に、実行キューにおける該当するリードまたはライトコマンドの前に配置される。
【００２５】
本発明の１つの効果は、このようにリードまたはライトコマンドとデータコントロールコマンドとを分離することにより実現される。具体的には、上記の例では、他のメモリアクセスリクエストに対するリードまたはライトコマンドは即座に実行可能である間、プリチャージ及び/またはアクティブ化処理は実行可能である。このため、メモリデータバスは、プリチャージ及び/またはアクティブ化処理の実行中、アイドル状態である必要はない。
【００２６】
各リードリクエストが実行キューに転送されると、各リクエストのもとの相対的配置を入力キュー１２に受け取られたものとして特定するためのタグが、当該リクエストに対するデータコントロールコマンドに一時的に追加される。あるいは、各リードリクエストは、以降において詳述されるリードバッファ３２の各自のバッファ位置に割り当てられるようにしてもよい。
【００２７】
コマンドセレクタ２６に与えられるコマンドセレクトクロック（ＣＭＤ  ＣＬＫ）に従って、実行キュー２４の先頭からの１以上のメモリアクセスリクエストが、適切なＤＲＡＭバンクにおいて実行のため選択される。例えば、コマンドセレクトクロック信号がシーケンスマトリックス１８にリクエストがロードされるクロック速度の４倍である場合、キュー２４の各クロック信号に対して４つのアクセスリクエストが実行キュー２４から取り除かれる。この場合、コマンドセレクタ２６は、キュー２４から１度に選択された４つのアクセスリクエストのすべてが等しいインターバルで実行されるように、リクエスト選択プロセスを調整する。新たなリクエストがシーケンスマトリックス１８に入力されるのと同じクロック速度での実行のため、コマンドが実行キューから選択される場合、コマンドセレクタ２６はメモリコントローラ１０から省略されてもよい。
【００２８】
入出力バッファ２８は、各アクセスリクエストにおいて指定されるリードまたはライト処理中に使用される遷移バッファである。実行対象の現在のアクセスリクエストがライト処理である場合、選択されたメモリセルへの書き込み対象となるデータは一時的に入出力バッファ２８に書き込まれる。同様に、リード処理における選択されたメモリセルから読み出されるデータは一時的に入出力バッファ２８に格納される。
【００２９】
リクエストされたメモリアクセスの実行により、各リードリクエストがリードリターンキュー３０に配置される。リードリターンキュー３０は、リードリクエストの実行により、ＤＲＡＭから読み出されたリクエストデータを管理し、それらが入力キューに受信された順序に従って、リクエストデータを各自の要求元に返す。ＤＲＡＭから読み出されたデータは、返されたリクエストデータに関連付けされたタグまたは割り当てられたバッファ位置に依存して、要求元に直接転送されるか、あるいはリターンデータバッファ３２に配置される。
【００３０】
図２を参照するに、リードリクエストの実行後、実行されたリードリクエストは、入出力バッファ２８に一時的に保持されているリクエストにより取得されるデータと共に、リードリクエストキュー３０に返される（ステップ１００）。ステップ１１０において、リードリクエストキュー３０により、返されるリードリクエストが最も現在のタグまたは最も現在に割り当てられたバッファ位置に関連付けされていると判断されると、当該リクエストにより取得されるデータは、ステップ１２０において要求元に返され、ステップ１３０において現在タグ/バッファ位置情報が更新される。
【００３１】
タグまたはバッファ位置は、それがメモリコントローラ１０における最長の待ち時間を有するリードリクエストに割り当てられているか、あるいは関連付けされている場合に「現在」のものとされる。リードリターンキュー３０は、例えば、返されたデータがそれの要求元に転送されるごとに、現在タグまたはバッファ位置を表すカウント値をインクリメントすることにより、最も現在のタグまたはバッファ位置を追跡するかもしれない。
【００３２】
返されるリードリクエストが現在のものでないタグまたは割り当てられたバッファ位置を有する場合、この関連付けされたタグまたはバッファ位置が現在のものとなるまで、当該データはリードデータバッファ３２に配置される（ステップ１４０）。ステップ１４０において返されたデータをバッファ３２に配置した後、あるいはステップ１３０において現在タグまたはバッファ位置を更新した後、リードリターンキュー３０は、当該現在タグまたはバッファ位置に対応する返されたデータがリターンデータバッファ３２において検出可能であるか判断する。「イエス」である場合、当該プロセスはステップ１２０に戻り、現在のリターンデータが当該データの要求元に転送され、現在タグまたはバッファ位置がステップ１３０において再び更新される。現在タグまたはバッファ位置に対応する返されたデータがバッファ３２において検出されない場合、当該プロセスは、実行キューの次のリードリクエストの実行により取得されるリターンデータを受け取るため、ステップ１００に戻る。図２に示される当該プロセスにより、リードデータは、リクエストが入力キュー１２に受け取られた順序で各自の要求元に返される。
【００３３】
タグがリードリクエストの本来の受信順序を示すために使用される場合、タグは各リクエストのデータコントロールコマンドに一時的に挿入されるが、要求元に返されるリードデータに含まれてはいない。好ましくは、リードリターンキュー３０及びリターンデータバッファ３２の機能は、ＤＲＡＭまたはそれの複数のものを一体化したもののクロック速度に対応するクロック速度に従って実行される。従って、リードリターンキュー３０及びリターンデータバッファ３２において受け取られるリターンリードリクエスト及びリターンデータは、現在タグ/バッファ位置の更新及びリターンデータの転送とそれぞれ協調されうる。
【００３４】
図３に示されるフローチャートを参照して、シーケンシングユニット１６が検出されたコンフリクトまたは遅延によりメモリアクセスリクエストを再スケジューリングするのに利用するコンフリクト再順序付けプロセスの第１実施例が説明される。ステップ２００において、パース対象の直近のメモリアクセスリクエストがシーケンスマトリックス１８に配置される。ステップ２１０において、アクセスされることが所望されるメモリバンクの状態が、新たに届いたメモリアクセスリクエストがシーケンスマトリックス１８のそれの現在位置において実行される場合に、コンフリクトや遅延が発生するか判断するためチェックされる。
【００３５】
シーケンシングユニット１６がこの新たに届いたリクエストに関するコンフリクトまたは遅延を検出する場合、シーケンシングユニット１６は、ステップ２４０において、それの現在位置の前にあるメモリアクセスリクエストシーケンスの中で、より適切なタイミング位置が検出可能であるか判断する。具体的には、シーケンシングユニット１６はまず、解消されていないコンフリクトまたは遅延が新たなアクセスリクエストの前のシーケンスに存在するか、そして存在する場合には、当該新たなアクセスリクエストが当該時間中にコンフリクトなく実行可能であるか判断する。保留されているコンフリクトまたは遅延が存在しない場合、シーケンシングユニット１６は、この新たなアクセスリクエストが、以前にスケジューリングされたリクエストにおいて新たなコンフリクトまたは遅延を発生させることなく、マトリックスの任意のポイントにおいて再スケジューリングされてもよいかチェックする。そうでない場合、本プロセスはステップ２３０に移り、解消されない状態により新たなアクセスリクエストは現在のタイミングシーケンスの終わりに残される。適切なタイミング位置が当該シーケンスにおける前方に検出可能である場合、新たに届いたリクエストは当該位置においてシーケンスに挿入される（ステップ２５０）。その後、本プロセスはステップ２００に戻り、次に入力されるメモリアクセスリクエストに対して繰り返される。
【００３６】
他方、新たに届いたアクセスリクエストに関してコンフリクトや遅延が検出されない場合、ステップ２２０において、コンフリクト検出器２０は次に、新たに届いたリクエストの現在位置の前に解消されていないコンフリクトまたは遅延がタイミングマトリックスに存在するか判断する。解消されていないコンフリクトまたは遅延が検出されると、本プロセスは上述のステップ２４０に移行する。既存のコンフリクトが検出されない場合、シーケンシングユニット１６は、ステップ２３０においてシーケンスマトリックス１８の現在位置に当該リクエストをとどめ、その後ステップ２００に戻り、次に入力されるメモリアクセスリクエストに対して本プロセスを繰り返す。
【００３７】
本実施例では、解消されていないコンフリクトや遅延は、シーケンシングユニット１６の以降の繰り返しによって、新たなアクセスリクエストの到達により以降において解消されてもよいし、そうでなくともよい。コンフリクトや遅延を軽減する適切なリクエストが届かない場合、メモリアクセスリクエストは指定された順序で処理が継続されるが、解消されていないコンフリクトや軽減されていない遅延により、メモリデータバスラインの利用に対し非効率さがあるであろう。
【００３８】
図４に示されるフローチャートにおいて、シーケンシングユニット１６により実行されるコンフリクト再順序付けプロセスの第２実施例が示される。他のメモリアクセスリクエストがシーケンスマトリックス１８から実行キュー２４に移されると、ステップ３００において、シーケンスマトリックスの次のラインのアクセスリクエストが第１位置に移される。ステップ３１０において、コンフリクト検出器２０は、コンフリクトや遅延がシーケンスマトリックスの先頭にあるアクセスリクエスト（すなわち、マトリックスのリクエストの中の最先のもの）に関して存在するか判断する。コンフリクトが検出されない場合、ステップ３２０において、アクセスリクエストは実行キュー２４にわたされ、本プロセスはステップ３００に戻る。
【００３９】
他方、コンフリクトまたは遅延がステップ３１０において検出されると、コンフリクト検出器２０は、シーケンスマトリックスの次のアクセスリクエストに注目し、ステップ３３０において、当該リクエストがコンフリクトなく当該時間位置において実行可能であるか判断する。当該時間位置において当該アクセスリクエストをスケジューリングすることにより、コンフリクトまたは遅延が生じない場合、ステップ３２０においてリクエストは実行キュー２４に送られ、本プロセスはステップ３００に戻る。コンフリクトまたは遅延が検出されると、当該時間位置において適切に実行されてもよいリクエストが検出されるまで、本プロセスはステップ３３０を繰り返す。
【００４０】
本実施例では、シーケンスマトリックスの先頭にあるリクエスト及び以降のリクエストの何れかのメモリアクセスに関して存在するコンフリクトまたは遅延が検出される場合、適切なタイムスロットがこのリクエストに対して検出されるまで、拒絶されたリクエストはシーケンスのそれらの現在位置に残される。本プロセスにより、コンフリクトまたは遅延状態により実行キュー２４に送信されるメモリアクセスは存在しない。また、各リクエストには待ち時間に基づく優先度が与えられ、当該リクエストのタイミングによりコンフリクト状態が生じない最先の可能なタイムスロットにおいて実行されるであろう。
【００４１】
図５において、図４を参照して上述された実施例の一変形が示される。ここでは、シーケンスマトリックスの先頭のアクセスリクエストの現在のタイミング位置に関してコンフリクトまたは遅延が検出されると、不適なリクエストは、それの現在位置においてシーケンスに残されるのでなく、シーケンスの後方に送られる。具体的には、ステップ３１０においてコンフリクトが検出されると、ステップ４２０が実行され、コンフリクトまたは遅延を有するリクエストはシーケンスの後方に送られる。その後、コンフリクト検出器２０は、次のラインのアクセスリクエストに移り、当該リクエストにコンフリクトまたは遅延が検出されるか判断する（ステップ４３０）。コンフリクトまたは遅延が検出されない場合、図４に示されたプロセスと同様に、当該リクエストは実行キュー２４に送られる。コンフリクトまたは遅延が検出されると、本プロセスはステップ４２０に戻る。
【００４２】
図６を参照するに、本発明の動作により取得される結果を示すタイミングチャートが示される。本例では、リードリクエストＲＤ０、ＲＤ１及びＲＤ２がこの順序で入力キューにおいて受け取られる。ページコンフリクト状態がＲＤ０に関して検出されており、ＲＤ１とＲＤ２は共に他のメモリバンクにおけるページヒットであると仮定する。ＲＤ１及びＲＤ２より以前にＲＤ０が完了するよう実行されることが許可される場合には遅延が生じるため、ＲＤ０に対するプリチャージ処理の実行中、ＲＤ１及びＲＤ２に対するリードメモリアクセスが実行されるようこれらのリクエストは再構成される。このようなコマンドの再構成により、ＲＤ０に対するプリチャージ処理の実行が終了するのを待機する間に、メモリデータバスがアイドル状態となる時間を最小化し、これにより、メモリデータバスのより効率的な利用が可能となる。
【００４３】
ＲＤ１及びＲＤ２に対するデータがＤＲＡＭから読み出された後、ＲＤ０に対するアクティブ化処理が実行され、その後ＲＤ０に対するリードアクセスコマンドが実行される。リードデータ「１１１１」及び「２２２２」は、リード処理の実行順序によりリターンデータバッファに転送される。しかしながら、「００００」のデータが適切なメモリセルから取得された後、当該データはＲＤ０の要求元に最初に戻される。その後、データ「１１１１」と「２２２２」がその順序で各自の要求元に返される。
【００４４】
図７は、本発明のメモリコントローラ１０を利用する一例となる処理システム９００を示す。処理システム９００は、ローカルバス９０４に接続された１以上のプロセッサ９０１を有する。メモリコントローラ１０とプライマリバスブリッジ９０３がまたローカルバス９０４に接続される。処理システム９００は、複数のメモリコントローラ１０及び/または複数のプライマリバスブリッジ９０３を有するようにしてもよい。メモリコントローラ１０とプライマリバスブリッジ９０３は、単一の装置９０６として一体化されてもよい。
【００４５】
メモリコントローラ１０はまた、１以上のメモリデータバス９０７に接続される。各メモリバスは、少なくとも１つのメモリ装置９０２を有するメモリコンポーネント９０８を受け入れる。メモリコンポーネント９０８は、メモリカードまたはメモリモジュールとして構成されてもよい。システム９００において利用可能なメモリモジュールの例として、シングルインラインメモリモジュール（ＳＩＭＭ）やデュアルインラインメモリモジュール（ＤＩＭＭ）があげられる。メモリコンポーネント９０８は、１以上の追加的装置９０９を有するようにしてもよい。例えば、ＳＩＭＭまたはＤＩＭＭでは、追加的装置９０９は、ＳＰＤ（Ｓｅｒｉａｌ  Ｐｒｅｓｅｎｃｅ  Ｄｅｔｅｃｔ）メモリなどの設定メモリであってもよい。
【００４６】
メモリコントローラ１０はまた、キャッシュメモリ９０５に接続されてもよい。キャッシュメモリ９０５は、処理システムの唯一のキャッシュメモリであってもよい。あるいは、プロセッサ９０１などの他の装置がまた、キャッシュメモリ９０５のキャッシュ階層を構成する複数のキャッシュメモリを有するようにしてもよい。処理システム９００がバスマスタであったり、あるいはＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）をサポートする周辺装置やコントローラを有する場合、メモリコントローラ１０は、キャッシュコヒーレンシプロトコルを実現するようにしてもよい。メモリコントローラ１０が複数のメモリバス９０７に接続される場合、キャッシュメモリバス９０７はパラレルに動作してもよいし、あるいは異なるアドレス範囲が異なるメモリバス９０７にマッピングされてもよい。
【００４７】
プライマリバスブリッジ９０３は、少なくとも１つの周辺バス９１０に接続される。周辺装置や追加的バスブリッジなどの各種装置が、周辺バス９１０に接続されてもよい。これらの装置は、格納コントローラ９１１、その他Ｉ/Ｏ装置９１４、セカンダリバスブリッジ９１５、マルチメディアプロセッサ９１８及びレガシー装置インタフェース９２０を有するようにしてもよい。プライマリバスブリッジ９０３はまた、１以上の特殊用途高速ポート９２２に接続されてもよい。パーソナルコンピュータでは、例えば、特殊用途ポートは、高パフォーマンスビデオカードと処理システム９００とを接続するために利用されるＡＧＰ（Ａｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）であってもよい。
【００４８】
格納コントローラ９１１は、格納バス９１２を介して１以上の記憶装置９１３と周辺バス９１０とを接続する。例えば、格納コントローラ９１１はＳＣＳＩコントローラであり、記憶装置９１３はＳＣＳＩディスクであってもよい。Ｉ/Ｏ装置９１４は、任意の種類の周辺装置であってもよい。例えば、Ｉ/Ｏ装置９１４は、イーサネット（登録商標）カードなどのローカルエリアネットワークインタフェースであってもよい。セカンダリバスブリッジは、他のバスを介して追加的装置と処理システムとのインタフェースをとるのに利用されてもよい。例えば、セカンダリバスブリッジは、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｐｏｒｔ）装置９１７と処理システム９００とを接続するのに用いられるＵＳＢコントローラであってもよい。マルチメディアプロセッサ９１８は、サウンドカード、ビデオキャプチャカードまたは他の任意のタイプのマルチメディアインタフェースであってもよく、スピーカー９１９などの１つの追加的装置に接続されてもよい。レガシー装置インタフェース９２０は、旧式のキーボードやマウスなどの従来装置と処理システム９００とを接続するのに利用される。
【００４９】
図７に示される処理システム９００は、本発明が利用可能な単なる一例となる処理システムである。図７はパーソナルコンピュータやワークステーションなどの汎用コンピュータに特に適した処理アーキテクチャを示しているが、様々な用途における利用により適するものとするため、処理システム９００に周知の改良が可能であるということは認識されるべきである。例えば、処理を要する多数の電子装置は、メモリコンポーネント９０８及び/または記憶装置９０２に接続されるＣＰＵ９０１によるよりシンプルなアーキテクチャを用いて実現されてもよい。これらの電子装置には、以下に限定するものではないが、音声/映像プロセッサ及びレコーダ、ゲーム端末、デジタルテレビ装置、有線/無線電話、ナビゲーション装置（ＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）及び/または慣性ナビゲーションに基づくシステムを含む）、及びデジタルカメラ及び/またはレコーダが含まれてもよい。上記改良には、例えば、不要な構成要素の削除、特殊な装置または回路の追加、及び/または複数の装置の統合などが含まれてもよい。
【００５０】
本発明がそれの特定の実施例に関して説明されたが、他の多くの変形及び改良、そして他の利用が当業者には明らかになるであろう。従って、本発明は、ここでの特定の開示によってでなく、添付されたクレームによってのみ限定されることが好ましい。
【図面の簡単な説明】
【００５１】
【図１】図１は、本発明によるメモリコントローラのブロック図である。
【図２】図２は、本来のリクエストの受信順序により、リードリクエストの再順序付けされた実行により取得されるリクエストデータを各自の要求元に返すプロセスを示すフローチャートである。
【図３】図３は、現在のタイミングマトリックスにおけるコンフリクトまたは遅延の検出により、メモリコントローラなのシーケンスロード論理ユニットにより実行されるコンフリクト再順序付けプロセスの第１実施例である。
【図４】図４は、現在のタイミングマトリックスにおけるコンフリクトまたは遅延の検出により、メモリコントローラなのシーケンスロード論理ユニットにより実行されるコンフリクト再順序付けプロセスの第２実施例である。
【図５】図５は、現在のタイミングマトリックスにおけるコンフリクトまたは遅延の検出により、メモリコントローラなのシーケンスロード論理ユニットにより実行されるコンフリクト再順序付けプロセスの第３実施例である。
【図６】図６は、本発明の動作を示すタイミングチャートである。
【図７】図７は、本発明のメモリコントローラが利用される処理システムのブロック図である。
【符号の説明】
【００５２】
１０  メモリコントローラ
１２  入力キュー
１４  コマンドパーサ
１６  シーケンシングユニット
１８  シーケンスマトリックス
２０  コンフリクト検出器
２２  コマンドシーケンサ
２４  実行キュー
２６  コマンドセレクタ
２８  入出力バッファ
３０  リードリターンキュー
３２  リターンデータバッファ
９００  処理システム
９０１  プロセッサ
９０２  メモリ装置
【図１】
2008204487.tif 000003
【図２】
2008204487.tif 000004
【図３】
2008204487.tif 000005
【図４】
2008204487.tif 000006
【図５】
2008204487.tif 000007
【図６】
2008204487.tif 000008
【図７】
2008204487.tif 000009