(57)【特許請求の範囲】
【請求項１】
データキャッシュを含むコンピュータシステムにおいて、複数のデータソースに対する実行エンジンからの複数の未処理ロード要求をサポートする装置であって、
該装置は、
該実行エンジン、第１のデータソースおよび第２のデータソースに結合されたロード格納ユニットであって、該第１のデータソースは該データキャッシュである、ロード格納ユニットと、
該ロード格納ユニット内にあるロードアドレスバッファであって、複数の未処理ロード要求のアドレスを含むロードアドレスバッファと、
１つのロード要求の間に、該ロード格納ユニットに受け取られ、かつ、該実行エンジンに送られたデータを格納するためのレジスタファイルであって、該実行エンジンに含まれるレジスタファイルと、
該ロードアドレスバッファ、該レジスタファイル、該第１のデータソースおよび該第２のデータソース間のデータフローを調節するように構成されたコントローラであって、該ロードアドレスバッファ内の各エントリは、該ロード要求のターゲットを示す状態情報に関連付けられており、該ターゲットは、該第１のデータソースおよび該第２のデータソースのうちの１つを含み得る、コントローラと
を含む、装置。
【請求項２】
複数の未処理格納要求のアドレスを含む格納アドレスバッファと、
該複数の未処理格納要求のデータを含む格納データバッファと
をさらに含み、
前記第１のデータソースおよび前記第２のデータソースの両方について、複数の格納要求が同時に未処理状態となり得るように、前記コントローラは、該第１のデータソース、該第２のデータソース、該格納アドレスバッファおよび該格納データバッファ間のデータフローを調整するように構成されている、請求項１に記載の装置。
【請求項３】
前記ロード格納ユニットはさらに第３のデータソースに結合されており、前記コントローラは、前記第１のデータソース、前記第２のデータソースおよび該第３のデータソースについて、複数のロード要求が同時に未処理状態となり得るように、データフローを調整するように構成されている、請求項１または請求項２に記載の装置。
【請求項４】
前記ロード格納ユニットは、第１の通信経路を介して前記データキャッシュに結合されているとともに、該第１の通信経路とは別の第２の通信経路を介して前記第２のデータソースに結合されている、請求項１〜３のいずれか一項に記載の装置。
【請求項５】
ロード要求が出された順序と異なる順序でデータを返し得るデータキャッシュに対して出された該ロード要求に対応するデータを除いて、データソースに対してロード要求が出された順序で、該データソースに対して出された該ロード要求に対応するデータが返されるように前記コントローラが構成されている、請求項１〜４のいずれか一項に記載の装置。
【請求項６】
前記ロード要求が出された順序と異なる順序で、複数のデータソースに対して出された該ロード要求に対応するデータが返され得るように前記コントローラが構成されている、請求項５に記載の装置。
【請求項７】
同じクロックサイクルにおいて異なるデータソースに複数のロード要求が送られ得るように前記コントローラが構成されている、請求項１〜６のいずれか一項に記載の装置。
【請求項８】
前記コントローラは、前記ロードアドレスバッファ内の各エントリについて別々の状態マシンを含む、請求項１〜７のいずれか一項に記載の装置。
【請求項９】
コンピュータシステムバスへのインターフェースと、
ランダムアクセス半導体メモリと、
二次記憶装置と、
コンピュータグラフィックスアクセラレータ、プロセッサおよびブリッジチップのうちの１つと
のうちの１つを前記第２のデータソースが含む、請求項１〜８のいずれか一項に記載の装置。
【請求項１０】
前記ロードアドレスバッファ内の各エントリは、関連するロード要求中に受け取ったデータがキャッシュ可能であるかどうかを示す状態情報、関連するロード要求の状態を示す状態情報、または関連するロード要求のデスティネーションレジスタを示す状態情報に関連付けられている、請求項１〜９のいずれか一項に記載の装置。
【請求項１１】
前記ロード要求中に受け取ったデータを、前記レジスタファイル内に格納する前に、アラインするアラインメント回路をさらに含む、請求項１〜１０のいずれか一項に記載の装置。
【請求項１２】
データキャッシュを含むコンピュータシステムにおいて、複数のデータソースに対する実行エンジンからの複数の未処理ロード要求をサポートする方法であって、
該方法は、
該実行エンジンに結合されるロード格納ユニットが、第１のデータソースおよび第２のデータソースのうちの１つを指定するロード要求を該実行エンジンから受け取ることと、
該ロード格納ユニット内のロード格納ユニットコントローラが、ロードアドレスバッファのエントリ内に該ロード要求からのアドレスを格納することであって、該ロードアドレスバッファは複数の未処理ロード要求のアドレスを含む、ことと、
該ロード格納ユニットが、該第１のデータソースおよび該第２のデータソースのうちの１つに該ロード要求を送ることであって、該第１のデータソースは該データキャッシュである、ことと、
該ロード要求に応答して、該ロード格納ユニットが、該第１のデータソースおよび該第２のデータソースのうちの１つから、該実行エンジンに含まれるレジスタファイル内に送られるデータを受け取ることと、
該ロード格納ユニットコントローラが、該ロードアドレスバッファ内の該エントリと該ロード要求のターゲットを示す状態情報とを関連付けることであって、該ターゲットは、該第１のデータソースおよび該第２のデータソースのうちの１つを含み得る、ことと
を含む、方法。
【請求項１３】
前記ロード格納ユニットが、前記実行エンジンから格納要求を受け取ることと、
前記ロード格納ユニットコントローラが、該格納要求からのアドレスを格納アドレスバッファ内に格納することであって、該格納アドレスバッファは、複数の未処理格納要求のアドレスを含む、ことと、
該ロード格納ユニットが、該格納要求からのデータを格納データバッファ内に格納することであって、該格納データバッファは、該複数の未処理格納要求からのデータを含む、ことと
をさらに含む、請求項１２に記載の方法。
【請求項１４】
前記ロード要求は、さらに第３のデータソースにも向けられ得るものであり、前記第１のデータソース、前記第２のデータソースおよび該第３のデータソースについて、複数のロード要求が同時に未処理状態となり得る、請求項１２または請求項１３に記載の方法。
【請求項１５】
前記ロード格納ユニットが、前記第１のデータソースおよび前記第２のデータソースのうちの１つに前記ロード要求を送ることは、該ロード格納ユニットが、第１の通信経路を介して該第１のデータソースに、および第２の通信経路を介して該第２のデータソースに、該ロード要求を送ることを含み、該第２の通信経路は該第１の通信経路とは別である、請求項１２〜１４のいずれか一項に記載の方法。
【請求項１６】
前記ロード格納ユニットが、前記第１のデータソースおよび前記第２のデータソースのうちの１つから前記データを受け取ることは、該ロード格納ユニットが、該第２のデータソースに対してロード要求が出された順序で、該第２のデータソースから該データを受け取ることと、該ロード格納ユニットが、該第１のデータソースに対してロード要求が出された順序と異なる順序で、該第１のデータソースから該データを受け取ることとを含む、請求項１２〜１５のいずれか一項に記載の方法。
【請求項１７】
前記ロード格納ユニットが、前記第１のデータソースおよび前記第２のデータソースのうちの１つから前記データを受け取ることは、該ロード格納ユニットが、第３のデータソースから該データを受け取ることを含み、該データは、該第２のデータソースおよび該第３のデータソースに対してロード要求が出される順序と異なる順序で、該第２のデータソースおよび該第３のデータソースから受け取られ得る、請求項１６に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータシステムの設計に関する。特に、本発明は、複数のターゲットへの同時未処理要求をサポートするコンピュータシステム用ロード格納ユニットの設計に関する。
【０００２】
【従来の技術】
最近のプロセッサ設計は、複数のパイプライン機能ユニットを並列動作させることにより、高い性能を実現している。これにより、ある所与のクロックサイクルに対して、複数の演算処理を完了することができる。そのようなプロセッサ設計に遅れを取らないために、メモリシステムは、複数のメモリアクセスをパイプライン処理できるように改変されてきた。これにより、既に出されたメモリアクセスが戻って来る前に、次のメモリアクセスを出すことが可能になる。これにより、全体のメモリシステムスループットを大幅に高めることができる。
【０００３】
【発明が解決しようとする課題】
しかしながら、プログラムの実行中にコンピュータプログラムがデータソース（ターゲット）を変更すると、通常、このようなパイプライン式メモリシステムは停止してしまい、システムパフォーマンスが大幅に悪化することがある。例えば、プログラムが、メインメモリに対する複数のパイプライン式アクセス間に、グラフィックスコプロセッサにアクセスを行うと、メインメモリへのアクセスは停止する。これは、多くの異なるデータソース（ターゲット）へのインターリーブアクセスをサポートするプロセッサ設計にとっては重大な問題となり得る。例えば、ある所与のプロセッサは、データキャッシュ、メインメモリ、グラフィックスコプロセッサおよび様々なバスインターフェイスのデータにアクセス可能であり得る。
【０００４】
さらに、このようなパイプライン式メモリシステムが、ある所与のクロックサイクルについて出すアクセス要求の数は、通常、最大１つである。これは、複数の要求が複数のパイプライン式機能ユニットにより同時に発生する場合、あるいは、リソースコンフリクトに起因して複数の要求が１つのバッファに貯まっている場合に、パフォーマンスを制限し得る。
【０００５】
既存のメモリシステムにおけるこのようなパフォーマンスの制限を克服するメモリシステム設計が必要とされている。
【０００６】
【課題を解決するための手段】
本発明による装置は、データキャッシュを有するコンピュータシステムにおいて、複数のデータソースに対する実行エンジンからの複数の未処理ロード要求をサポートする装置であって、前記実行エンジン、第１のデータソースおよび第２のデータソースに接続されたロード格納ユニットであって、前記第１のデータソースは前記データキャッシュである、ロード格納ユニットと、前記ロード格納ユニット内にあるロードアドレスバッファであって、複数の未処理ロード要求についてのアドレスを有するロードアドレスバッファと、１つのロード要求の間に前記ロード格納ユニットが受け取ったデータを格納するためのレジスタファイルと、前記第１のデータソースおよび前記第２のデータソースの両方について、複数のロード要求が同時に未処理状態となれるように、前記ロードアドレスバッファ、前記レジスタファイル、前記第１のデータソースおよび前記第２のデータソース間のデータフローを調節するように構成されたコントローラとを備えており、これにより、上記目的が達成される。
【０００７】
ある実施形態によれば、この装置は、複数の未処理格納要求のアドレスを有する格納アドレスバッファと、前記複数の未処理格納要求のデータを有する格納データバッファとをさらに備え、前記コントローラは、前記第１のデータソースおよび前記第２のデータソースの両方について、複数の格納要求が同時に未処理状態となれるように、前記第１のデータソース、前記第２のデータソース、前記格納アドレスバッファおよび前記格納データバッファ間のデータフローを調整するように構成されていてもよい。
【０００８】
ある実施形態によれば、前記ロード格納ユニットはさらに第３のデータソースに接続されており、前記コントローラは、前記第１のデータソース、前記第２のデータソースおよび前記第３のデータソースについて、複数のロード要求が同時に未処理状態となれるように、データフローを調整するように構成されていてもよい。
【０００９】
ある実施形態によれば、前記ロード格納ユニットは、第１の通信経路を介して前記データキャッシュに接続されているとともに、前記第１の通信経路とは別の第２の通信経路を介して前記第２のデータソースに接続されていてもよい。
【００１０】
ある実施形態によれば、「異常」を返すことができるデータキャッシュに向けられたロード要求を除いて、前記コンピュータシステムにおける前記複数のデータソースのそれぞれについて、ロード要求が「正常」を返すように前記コントローラが構成されていてもよい。
【００１１】
ある実施形態によれば、ロード要求が他のデータソースからのロード要求に関しては「異常」を返すことができるように前記コントローラが構成されていてもよい。
【００１２】
ある実施形態によれば、同じクロックサイクルにおいて複数のロード要求を異なるデータソースに送ることができるように前記コントローラが構成されていてもよい。
【００１３】
ある実施形態によれば、前記コントローラは、前記ロードアドレスバッファ内の各エントリについて別々の状態マシンを含んでいてもよい。
【００１４】
ある実施形態によれば、前記第２のデータソースは、コンピュータシステムバスへのインターフェースを含んでいてもよい。
【００１５】
ある実施形態によれば、前記第２のデータソースは、ランダムアクセス半導体メモリを含んでいてもよい。
【００１６】
ある実施形態によれば、前記第２のデータソースは、二次記憶装置を含んでいてもよい。
【００１７】
ある実施形態によれば、前記第２のデータソースは、コンピュータグラフィックスアクセラレータ、プロセッサおよびブリッジチップのうちの１つを含んでいてもよい。
【００１８】
ある実施形態によれば、前記ロードアドレスバッファ内の各エントリは、前記ロード要求のターゲットを示す状態情報に関連付けられており、前記ターゲットは、前記第１のデータソースおよび前記第２のデータソースのうちの１つを含んでいてもよい。
【００１９】
ある実施形態によれば、前記ロードアドレスバッファ内の各エントリは、関連するロード要求中に受け取ったデータがキャッシュ可能であるかどうかを示す状態情報に関連付けられていてもよい。
【００２０】
ある実施形態によれば、前記ロードアドレスバッファ内の各エントリは、関連するロード要求の状態を示す状態情報に関連付けられていてもよい。
【００２１】
ある実施形態によれば、前記ロードアドレスバッファ内の各エントリは、関連するロード要求のデスティネーションレジスタを示す状態情報に関連付けられていてもよい。
【００２２】
ある実施形態によれば、前記ロード要求中に受け取ったデータを、前記レジスタファイル内に格納する前に、アラインするアラインメント回路をさらに備えていてもよい。
【００２３】
本発明による、別の装置は、データキャッシュを有するコンピュータシステムにおいて、複数のデータソースに対する実行エンジンからの複数の未処理ロードおよび格納要求をサポートする装置であって、前記実行エンジン、第１のデータソースおよび第２のデータソースに接続されたロード格納ユニットであって、前記第１のデータソースは前記データキャッシュである、ロード格納ユニットと、前記ロード格納ユニット内にあるロードアドレスバッファであって、複数の未処理ロード要求についてのアドレスを有するロードアドレスバッファと、１つのロード要求の間に前記ロード格納ユニットが受け取ったデータを格納するためのレジスタファイルと、複数の未処理格納要求のアドレスを有する格納アドレスバッファと、前記複数の未処理格納要求のデータを有する格納データバッファと、前記第１のデータソースおよび前記第２のデータソースの両方について、複数のロード要求が同時に未処理状態となれるように、前記ロードアドレスバッファ、前記レジスタファイル、前記第１のデータソースおよび前記第２のデータソース間のデータフローを調節するように構成されたコントローラとを備え、前記コントローラはさらに、前記第１のデータソースおよび前記第２のデータソースの両方について、複数の格納要求が同時に未処理状態となれるように、前記第１のデータソース、前記第２のデータソース、前記格納アドレスバッファおよび前記格納データバッファ間のデータフローを調整するように構成されており、これにより、上記目的が達成される。
【００２４】
ある実施形態によれば、前記ロード格納ユニットはさらに第３のデータソースに接続されており、前記コントローラは、前記第１のデータソース、前記第２のデータソースおよび前記第３のデータソースについて、複数のロード要求が同時に未処理状態となれるように、データフローを調整するように構成されていてもよい。
【００２５】
ある実施形態によれば、前記ロード格納ユニットは、第１の通信経路を介して前記データキャッシュに接続されているとともに、前記第１の通信経路とは別の第２の通信経路を介して前記第２のデータソースに接続されていてもよい。
【００２６】
ある実施形態によれば、「異常」を返すことができるデータキャッシュに向けられたロード要求を除いて、前記コンピュータシステムにおける前記複数のデータソースのそれぞれについて、ロード要求が「正常」を返すように前記コントローラが構成されていてもよい。
【００２７】
ある実施形態によれば、ロード要求が他のデータソースからのロード要求に関しては「異常」を返すことができるように前記コントローラが構成されていてもよい。
【００２８】
本発明による方法は、データキャッシュを有するコンピュータシステムにおいて、複数のデータソースに対する実行エンジンからの複数の未処理ロード要求をサポートする方法であって、前記実行エンジンからロード要求を受け取るステップであって、前記ロード要求は、第１のデータソースおよび第２のデータソースのうちの１つを指定する、ステップと、前記ロード要求のアドレスをロードアドレスバッファ内に格納するステップであって、前記第１のデータソースおよび前記第２のデータソースの両方について、複数のロード要求が同時に未処理状態となれるように、前記ロードアドレスバッファは複数の未処理ロード要求のアドレスを有する、ステップと、前記ロード要求を前記第１のデータソースおよび前記第２のデータソースのうちの１つに送るステップであって、前記第１のデータソースは前記データキャッシュである、ステップと、前記ロード要求に応答して、前記第１のデータソースおよび前記第２のデータソースのうちの１つからのデータをレジスタファイル内に受け取るステップとを包含しており、これにより、上記目的が達成される。
【００２９】
ある実施形態によれば、この方法は、前記実行エンジンから格納要求を受け取るステップと、前記格納要求のアドレスを格納アドレスバッファ内に格納するステップであって、前記第１のデータソースおよび前記第２のデータソースの両方について、複数の格納要求が同時に未処理状態となれるように、前記格納アドレスバッファは複数の未処理格納要求のアドレスを有する、ステップと、前記格納要求のデータを格納データバッファ内に格納するステップであって、前記格納データバッファは前記複数の未処理格納要求のデータを有する、ステップとをさらに包含してもよい。
【００３０】
ある実施形態によれば、前記ロード要求は、さらに第３のデータソースにも向けられ得るものであり、前記第１のデータソース、前記第２のデータソースおよび前記第３のデータソースについて、複数のロード要求が同時に未処理状態となれるものであってもよい。
【００３１】
ある実施形態によれば、前記ロード要求を前記第１のデータソースおよび前記第２のデータソースのうちの１つに送るステップは、前記ロード要求を、第１の通信経路を介して前記第１のデータソースに、そして、第２の通信経路を介して前記第２のデータソースに送るステップを含み、前記第２の通信経路は前記第１の通信経路とは別であってもよい。
【００３２】
ある実施形態によれば、前記第１のデータソースおよび前記第２のデータソースのうちの１つから前記データを受け取るステップは、前記第２のデータソースからデータ「正常」を受け取り、前記第１のデータソースからデータ「異常」を受け取るステップを含んでいてもよい。
【００３３】
ある実施形態によれば、前記第１のデータソースおよび前記第２のデータソースのうちの１つから前記データを受け取るステップは、前記データを第３のデータソースから受け取るステップを含み、前記第２のデータソースおよび前記第３のデータソース間では前記データが「異常」として受け取られ得るようになっていてもよい。
【００３４】
【発明の実施の形態】
以下の説明は、当業者に対して本発明を生産および使用するために、特定の用途およびその用途に関する要件のコンテキストにおいてなされるものである。本発明の精神および範囲を逸脱することなく、当業者であれば、本明細書中に開示した実施形態の様々な改変例が可能であり、また、本明細書中に示す一般的原則を、他の実施形態および他の用途に応用することができる。従って、本発明の範囲は、ここに示す実施形態の範囲に限定されるものではなく、本明細書中に開示する原理および特徴によって規定される最も広い範囲が本発明の範囲である。
【００３５】
（コンピュータシステム）
図１は、本発明のある実施形態におけるコンピュータシステムを示す。このコンピュータシステムの回路の大部分は、半導体チップ１５２内に設けられている。
【００３６】
コンピュータシステムは、２つの実行エンジン１０６および１０８を含むことに留意すべきである。実行エンジン１０６および１０８はそれぞれ、複数の命令を含むストリームを受け取り、特定のデータ項目に対して、指定された処理を実行する。実行エンジン１０６および１０８は、演算処理およびデータ移動処理を含む中央処理装置（ＣＰＵ）の機能を実行する。実行エンジン１０６および１０８は、それぞれレジスタファイル１１０および１１２を含むことに留意すべきである。レジスタファイル１１０および１１２は、それぞれ実行エンジン１０６および１０８によって処理されるデータ項目を格納するために用いられる。但し、本発明の別の実施形態においては、実行エンジン１０６および１０８は、実行エンジン１０６と１０８とで共有されるオーバーラップレジスタにアクセスする。
【００３７】
実行エンジン１０６および１０８は、それぞれ、命令フェッチユニット１２８および１２６から命令ストリームを受け取る。より具体的には、命令フェッチユニット１２８は、ランダムアクセスメモリ（ＲＡＭ）１５０から命令ストリームを受け取る。この命令ストリームは、メモリインターフェース１３２、内部バスインターフェースユニット（ＢＩＵ）１１８、および命令キャッシュ１２７を通って、命令フェッチユニット１２８に送られる。命令フェッチユニット１２８は、受け取った命令ストリームをパイプライン制御ユニット１２４を介して実行エンジン１０６へと送る。同様に、命令フェッチユニット１２６は、ランダムアクセスメモリ（ＲＡＭ）１５０から命令ストリームを受け取る。この命令ストリームは、メモリインターフェース１３２、内部バスインターフェースユニット１１８、および命令キャッシュ１２５を通って、命令フェッチユニット１２６に送られる。命令フェッチユニット１２６は、受け取った命令ストリームをパイプライン制御ユニット１２２を介して実行エンジン１０８へと送る。
【００３８】
ＲＡＭ１５０は、コンピュータシステムのメインメモリを構成するものであり、コードおよび／またはデータを格納するランダムアクセス可能なコンピュータメモリのあらゆるタイプを含む。命令キャッシュ１２７および１２５は、それぞれ実行エンジン１０６および１０８によって実行される命令を格納できるあらゆるタイプのキャッシュメモリを含む。命令フェッチユニット１２８および１２６は、命令に対するアクセスを調整し、パイプライン制御ユニット１２４および１２２は、それぞれ、これらの命令をパイプライン方式で実行できるように、スケジューリングの調整を行う。
【００３９】
実行エンジン１０６および１０８は、それぞれ、ロード格納ユニット１０２および１０４からデータを受け取る。ロード格納ユニット１０２および１０４は、データキャッシュ１１４、バスインターフェイス１２０および１３６、周辺バスインターフェイス１３４、メモリインターフェイス１３２、ならびにジオメトリデコンプレッサ１３０を含む多数のソースに対するデータの送受信を調整する。
【００４０】
図示した実施形態において、周辺バスインターフェイス１３４は、ディスク１４８に接続されたバス１３８に接続されている。ディスク１４８は、ディスクまたはテープドライブのような、コンピュータデータ用のあらゆるタイプの不揮発性記憶装置を含む二次記憶装置である。ディスク１４８はまた、周辺バス１３８に取り付けられるあらゆるタイプの周辺装置を含み得る。図示した実施形態の改変例においては、バス１３８はＰＣＩバスを含む。
【００４１】
バスインターフェイス１３６は、ホストシステム１４６に接続されたバス１４０に接続される。これにより、ホストシステム１４６を操作するユーザが、演算タスクを実行エンジン１０６および１０８にダウンロードすることが可能となる。また、バスインターフェイス１２０は、グラフィックスアクセラレータ１４４に接続されたバス１４２に接続されることに留意されたい。グラフィックスアクセラレータ１４４は、グラフィックス演算を行うあらゆるタイプの回路であり得る。ジオメトリデコンプレッサ１３０もまた、グラフィックスアクセラレータである。但し、ジオメトリデコンプレッサ１３０内の回路は、圧縮された形式で受け取られるグラフィックスデータを解凍する特定のタスクを行うように設計されている。
【００４２】
ロード格納ユニット１０２は、別々のデータパスを介してデータキャッシュ１１４およびインターフェイス１２０に接続されている。これにより、データキャッシュ１１４およびバスインターフェース１２０に同時にアクセスすることが可能になる。同様に、ロード格納ユニット１０４は、別々のデータパスを介してデータキャッシュ１１４およびバスインターフェース１２０に接続されている。このシステムは、ロード格納ユニット１０２および１０４の両方に接続された単一のデュアルポートデータキャッシュ１１４を含むことに留意されたい。データキャッシュ１１４は、実行エンジン１０６および１０８によって処理されるデータを格納できるあらゆるタイプのキャッシュメモリを含み得る。
【００４３】
内部バスインターフェースユニット１１８は、半導体チップ１５２内に複数のデータパスおよびスイッチング回路を有し、これにより、ロード格納ユニット１０２および１０４を複数のデータソース（ターゲット）に接続する。より具体的には、内部バスインターフェースユニット１１８は、ロード格納ユニット１０２および１０４を、メモリインターフェース１３２、周辺バスインターフェース１３４、バスインターフェース１２０、バスインターフェース１３６およびジオメトリデコンプレッサ１３０に接続する。
【００４４】
図１に示すシステムの動作時の処理は概ね以下の通りである。上記のように、ＲＡＭ１５０から、メモリインターフェース１３２および内部バスインターフェースユニット１１８を介して、各命令フェッチユニット１２８および１２６にそれぞれ命令ストリームが読み出される。これらの命令ストリームは、それぞれ、パイプライン制御ユニット１２４および１２２を介して実行エンジン１０６および１０８に送られる。これらの命令ストリームを実行する際、実行エンジン１０６および１０８は、それぞれ、ロード格納ユニット１０２および１０４と、各実行エンジン１０６および１０８内のレジスタファイル１１０および１１２との間でデータを転送する。ロード格納ユニット１０２および１０４は、データキャッシュ１１４、バスインターフェース１２０、メモリインターフェース１３２、周辺バスインターフェース１３４、バスインターフェース１３６およびジオメトリデコンプレッサ１３０を含む複数のソースからデータを受け取る。
【００４５】
（ロード格納ユニット）
図２は、本発明のある実施形態によるロード格納ユニット１０２の内部構造の一部を示す。ロード格納ユニット１０２は、ロードバッファ２１０、格納データバッファ２３０および格納アドレスバッファ２２０を含む複数の機能ユニットを有する。これらの機能ユニットは、ＬＳＵコントローラ２５０の制御下で動作する。
【００４６】
ロードバッファ２１０は、アライナ（ａｌｉｇｎｅｒ）２０７、データキャッシュレジスタ２０４、ＭＵＸ２０６、レジスタ２０８およびアレイ２１６を含む複数の構成要素を有する。ＭＵＸ２０６は、内部バスインターフェースユニット１１８およびバスインターフェース１２０の出力のうちの一方を選択してレジスタ２０８への入力とする。アライナ２０７は、データキャッシュ１１４以外の複数のソースから受け取った複数ワードのデータに対してバイトアラインメント処理を行う。データキャッシュ１１４から受け取ったデータは、データキャッシュ１１４内の回路によってアライン（ａｌｉｇｎ）される。アレイ２１６は、５つのロードアドレスについてのエントリ（例えば、ロードアドレスエントリ２１１、２１２、２１３、２１４および２１５）を有する。これらの５つのロードアドレスにより、最大５つの未処理ロード要求のアドレスを格納できる。これらのロード要求は、ロード格納ユニット１０２に接続されたデータソース（ターゲット）（例えば、データキャッシュ１１４、バスインターフェース１２０、メモリインターフェース１３２、周辺バスインターフェース１３４、バスインターフェース１３６およびジオメトリデコンプレッサ１３０）のいずれに対するものであり得る。例えば、３つのアドレスがデータキャッシュ１１４への未処理要求に関連付けられたものであり、２つのアドレスがＲＡＭ１５０への未処理要求に関連付けられたものであり得る。
【００４７】
ロードバッファ２１０内の回路は、アレイ２１６内の各エントリについて別々の状態マシンを有するＬＳＵコントローラ２５０の制御下で動作する。ロードバッファ２１０内の回路は、概ね以下のように動作する。ロード要求を受け取ると、システムは、そのロード要求のアドレスを、アレイ２１６内のエントリ内にある追加状態情報と共に格納する。次に、システムは、指定されたデータソースに対するロード要求を出す。要求されたデータがデータキャッシュ１１４から返されると、そのデータはデータキャッシュレジスタ２０４内に記録される。そのデータは、データキャッシュレジスタ２０４から、実行エンジン１０６（図１参照）内のレジスタファイル１１０内にある指定されたレジスタ内に送られる。要求されたデータが他のソースから返された場合、そのデータは、ＭＵＸ２０６およびアライナ２０７を介してレジスタ２０８内に送られる。そのデータは、レジスタ２０８から、実行エンジン１０６内のレジスタファイル１１０内にある指定されたレジスタ内に送られる。データが返されると、アドレスアレイ２１６内の対応するエントリが、新たなロード要求のために再使用できるように無効化される。
【００４８】
データキャッシュ１１４に対する要求は、「異常」を返す場合がある。本システムをこのように設計している理由は、要求によっては、キャッシュフォールトを生じて非常に長い処理時間を要するものもあるからである。一部の要求が「異常」を返すことを可能にすることによって、キャッシュヒットを生じる要求が、キャッシュミスを生じる要求を待つ必要がなくなる。但し、データキャッシュ１１４以外のデバイスに対する要求は、「正常」に返されなければならないことに留意されたい。これは、ある所与のデバイスについて、そのデバイスが出した全ての要求が「正常」に返されることを意味する。但し、デバイス間においては、要求が「異常」を返してもよい。
【００４９】
格納処理は、格納データバッファ２３０および格納アドレスバッファ２２０を用いて行われる。格納データバッファ２３０は、アレイ２４０およびアライナ２３９を有する。アレイ２４０は、最大８個の未処理格納要求のデータ（例えば、格納データ２３１、２３２、２３３、２３４、２３５、２３６、２３７および２３８）を格納する８個のエントリを有する。格納アドレスバッファ２２０は、対応するアドレスと、これらの格納要求に関連付けられた他の状態情報とを有する。格納アドレスバッファ２２０は、格納アドレスバッファ２２１、２２２、２２３、２２４、２２５、２２６、２２７および２２８を有する。
【００５０】
格納データバッファ２３０および格納アドレスバッファ２２０は、格納アドレスバッファ２２０内の各エントリについて別々の状態マシンを有するＬＳＵコントローラ２５０の制御下で動作する。格納データバッファ２３０および格納アドレスバッファ２２０内の回路は、概ね以下のように動作する。格納要求を受け取ると、システムは、その格納要求のアドレスを、格納アドレスバッファ２２０内のエントリ内にある追加状態情報と共に格納する。この格納要求に関連付けられたデータは、格納データバッファ２３０内のアレイ２４０内にある対応するエントリ内にロードされる。次に、システムは、指定されたターゲットに格納要求を出す。最終的にデータがターゲットに書き出されると、格納データバッファ２３０および格納アドレスバッファ２２０内にある対応するエントリが、新たな格納要求のために再使用できるように無効化される。
【００５１】
（ロードアドレスバッファエントリ）
図３は、本発明のある実施形態によるロードバッファ２１０内のアレイ２１６内にある所与のエントリにおいて保持される情報の一部を示す。本実施形態において、エントリは、ある特定エントリの状態を示す３または４ビットの状態情報を含む。この状態情報は、対応するロード要求の進行にともなって更新される。以下、図４を参照しながら、ある所与のエントリについての状態図を説明する。エントリは、そのロード要求についてのターゲット（データソース）３０４を指定するための４ビットをも含む。例えば、ターゲットは、図１に示したデータキャッシュ１１４またはジオメトリデコンプレッサ１３０であり得る。エントリは、その特定のエントリがデータキャッシュ１１４に格納すべきデータに対応するかどうかを示すキャッシュ可能ビット３０６をも含む。さらに、エントリは、その特定のエントリがその時点で使用中であるかどうかを特定する「使用中」ビット３０８を含む。さらに、エントリは、ロード要求に対して、実行エンジン１０６内のデスティネーションレジスタを指定するレジスタ指定子３０９を含む。さらに、アドレス３１０は、ロード要求のアドレスを有する。
【００５２】
（ロードアドレスバッファエントリの状態マシン）
図４は、本発明のある実施形態によるロードバッファ２１０内の所与のエントリについての状態図である。本システムは、通常、アイドル状態４０２から始まる。実行エンジン１０６から新たなロード命令が到着すると、システムは、以下に示す２つの選択肢の一方を選択する。即ち、あるロード要求がその時点でキューに入っている場合、システムは、ロード要求が到着したが、データキャッシュ１１４または内部バスインターフェースユニット１１８には送られていない状態である状態４０４に移行する。その時点でキューにロード要求が全く入っておらず且つそのアクセスがキャッシュ可能である場合、システムは、直接、データキャッシュアクセスが開始される状態である状態４０６に移行する。その時点でキューにロード要求が全く入っておらず且つそのアクセスがキャッシュ可能ではない場合、システムは、状態４１２に移行する。
【００５３】
状態４０４において、そのアクセスがキャッシュ可能である場合、システムは、データキャッシュアクセスが開始される状態である状態４０６に移行し、そのアクセスがキャッシュ可能でない場合には、状態４１２に移行して、内部バスインターフェースユニット１１８へのアクセス待ちとなる。
【００５４】
状態４０６において、システムは、データキャッシュアクセスを開始する。キャッシュヒットがあれば、そのデータ項目がデータキャッシュによって直ちに生成され、そのロード要求の処理が完了する。その後、システムは、アイドル状態４０２に戻り、新たなロード要求を受ける。キャッシュミスがあった場合、システムが状態４０８に進んでデータキャッシュアクセスが終了し、システムは次にメインメモリへのアクセスを開始して状態４１２に進む。状態４１２において、メインメモリアクセスが開始され、内部バスインターフェースユニット１１８へのアクセス待ちとなる。アクセスが、同じキャッシュラインに対する最近のキャッシュミスによって、現在メインメモリから検索中のキャッシュラインである場合、システムは状態４１０に移行して、その未処理キャッシュアクセスが完了するのを待つ。その未処理キャッシュアクセスが完了すると、システムは、状態４０６に戻ってキャッシュアクセスを継続する。
【００５５】
状態４１２において、システムは、内部バスインターフェースユニット１１８へのアクセス待ち状態である。このアクセスは、（キャッシュ可能アクセスの場合）メインメモリに対するアクセスであってもよいし、あるいは、（非キャッシュ可能アクセスの場合）内部バスインターフェースユニット１１８に接続された別のターゲットに対するアクセスであってもよい。状態４１２において、システムは、内部バスインターフェースユニット１１８へのアクセス待ち状態である。アクセスが許可されると、システムは、システムが内部バスインターフェースユニット１１８を介してアクセス要求を出して要求したデータが返されるのを待つ状態である状態４１４に進む。システムは、次に、要求したデータを受け取る状態である状態４１６に進む。要求されたデータが複数のワードにまたがっている場合もあるので、データの受信は複数のデータ転送を必要とし得る。
【００５６】
最後に、システムは、ロード処理を完了し、アイドル状態４０２に戻る。但し、新たなロード要求が未処理である場合、システムは、アイドル状態４０２をスキップして、状態４０４に直接進んで新たなロード処理を開始する。
【００５７】
ロード格納ユニット１０２は、データキャッシュ１１４、内部バスインターフェースユニット１１８およびバスインターフェース１２０に接続される３つの別々のポートを有する。これにより、システム状態マシンが平行ディスパッチをサポートしていれば、ロード格納ユニット１０２が、３つの要求を平行にディスパッチすることが可能になる。ロード格納ユニット１０４も同様に、データキャッシュ１１４、内部バスインターフェースユニット１１８およびバスインターフェース１２０に接続される３つの別々のポートを有する。
【００５８】
（格納アドレスバッファエントリの状態マシン）
図５は、本発明のある実施形態による格納アドレスバッファ内の所与のエントリについての状態図である。本システムは、通常、アイドル状態５０２から始まる。新たな格納命令が到着すると、システムは、システムが格納データバッファ２３０および格納アドレスバッファ２２０内にある格納要求をロードする状態である状態５０４に進む。
【００５９】
状態５０４において、そのアクセスがキャッシュ可能アクセスである場合、システムは、データキャッシュアクセスが開始される状態である状態５０６に移行し、そのアクセスがキャッシュ可能アクセスでない場合には、システムは状態５１４に移行して、内部バスインターフェースユニット１１８へのアクセス待ちとなる。
【００６０】
状態５０６において、システムは、データキャッシュアクセスを開始する。キャッシュヒットがあれば、システムは、アイドル状態５０２に戻る前に、データをキャッシュに書き出す状態である状態５１０に進む。キャッシュミスがあった場合、システムが状態５０８に進んでデータキャッシュアクセスが終了し、システムは次にメインメモリへのアクセスを開始して状態５１４に進む。状態５１４において、メインメモリアクセスが開始され、内部バスインターフェースユニット１１８へのアクセス待ちとなる。アクセスが、同じキャッシュラインに対する最近のキャッシュミスによって、現在メインメモリから検索中のキャッシュラインである場合、システムは状態５１２に移行して、その未処理キャッシュアクセスが完了するのを待つ。その未処理キャッシュアクセスが完了すると、システムは、状態５０６に戻ってキャッシュアクセスを継続する。
【００６１】
状態５１４において、システムは、内部バスインターフェースユニット１１８へのアクセス待ち状態である。このアクセスは、（キャッシュ可能アクセスの場合）メインメモリに対するアクセスであってもよいし、あるいは、（非キャッシュ可能アクセスの場合）内部バスインターフェースユニット１１８に接続された別のターゲットに対するアクセスであってもよい。状態５１４において、システムは、内部バスインターフェースユニット１１８を介してアクセス要求を出して、内部バスインターフェースユニット１１８へのアクセスが許可されるのを待つ。アクセスが許可されると、システムは、状態５１６に進み、要求されたデータが返されるのを待つ。次に、システムは、状態５１８に進み、要求されたデータが受け取られる。実際には、データキャッシュ１１４内のコントローラは、ロード格納ユニット１０２によって格納すべきデータとＲＡＭ１５０から受け取るキャッシュラインとを組み合わせることに留意されたい。
【００６２】
最後に、システムは格納処理を完了し、アイドル状態５０２に戻る。但し、新たな格納要求が未処理である場合、システムは、アイドル状態５０２をスキップして、状態５０４に直接進んで新たな格納処理を開始する。
【００６３】
ロード格納ユニット１０２および１０４は、（データキャッシュ１１４、内部バスインターフェースユニット１１８およびバスインターフェース１２０に接続される）３つの別々のポートを有するが、レジスタファイル１１０および１１２へのリターンは、実際には、シリアル化される。また、アクセスの優先順位は、データキャッシュ１１４へのアクセスが１番目であり、内部バスインターフェースユニット１１８へのアクセスが２番目であり、そして、バスインターフェース１２０へのアクセスが３番目である。
【００６４】
本発明のある実施形態は、コンピュータシステムにおいて、複数のデータソースに対する実行エンジンからの複数の未処理ロードおよび／または格納要求をサポートする装置を提供する。本装置は、前記実行エンジン、第１のデータソースおよび第２のデータソースに接続されたロード格納ユニットを含む。ロード格納ユニットは、ロードアドレスバッファを含む。ロードアドレスバッファは、複数の未処理ロード要求についてのアドレスを有する。ロード格納ユニットはまた、前記第１のデータソースおよび前記第２のデータソースの両方について、複数のロード要求が同時に未処理状態となれるように、前記ロードアドレスバッファ、前記レジスタファイル、前記第１のデータソースおよび前記第２のデータソース間のデータフローを調節するように構成されたコントローラを含む。これらのロード要求は、「異常」を返すことができるデータキャッシュに向けられたロード要求を除いて、前記コンピュータシステムにおける前記複数のデータソースのそれぞれについて、ロード要求が「正常」を返す。ロード要求は、他のデータソースからのロード要求に関しては「異常」を返すことができる。本発明のある局面によれば、ロード格納ユニットは、複数の未処理格納要求のアドレスを有する格納アドレスバッファと、前記複数の未処理格納要求のデータを有する格納データバッファとをさらに含む。前記コントローラは、さらに、前記第１のデータソースおよび前記第２のデータソースの両方について、複数の格納要求が同時に未処理状態となれるように、前記第１のデータソース、前記第２のデータソース、前記格納アドレスバッファおよび前記格納データバッファ間のデータフローを調整するように構成されている。
【００６５】
本発明の実施形態に関する上記の記載は、例示および説明のためになされたものであり、本発明の実施形態はこれだけではなく、上記の記載によって、本明細書中に開示された形態のみに本発明が限定されるわけではない。当業者であれば、多数の改変例および変形例をなすことが可能である。さらに、上記の開示内容は、本発明の範囲を限定するものではなく、本発明の範囲は、上掲の特許請求の範囲によって規定されるものである。
【００６６】
【発明の効果】
したがって、上述した本発明により、既存のメモリシステムにおけるパフォーマンスの制限を克服するメモリシステムが提供される。
【図面の簡単な説明】
【図１】本発明のある実施形態よるコンピュータシステムを示す。
【図２】本発明のある実施形態によるロード格納ユニットの内部構造の一部を示す。
【図３】本発明のある実施形態によるロードバッファ内の所与のエントリについて保持される情報の一部を示す。
【図４】本発明のある実施形態によるロードバッファ内の所与のエントリについての状態図である。
【図５】本発明のある実施形態による格納アドレスバッファ内の所与のエントリについての状態図である。
【符号の説明】
１０２  ロード格納ユニット
１０４  ロード格納ユニット
１０６  実行エンジン
１０８  実行エンジン
１１０  レジスタファイル
１１２  レジスタファイル
１１４  データキャッシュ
１１８  内部バスインターフェースユニット
１２０  バスインターフェイス
１２２  パイプライン制御ユニット
１２４  パイプライン制御ユニット
１２５  命令キャッシュ
１２６  命令フェッチユニット
１２７  命令キャッシュ
１２８  命令フェッチユニット
１３０  ジオメトリデコンプレッサ
１３２  メモリインターフェース
１３４  周辺バスインターフェース
１３６  バスインターフェース
１３８  バス
１４０  バス
１４２  バス
１４４  グラフィックスアクセラレータ
１４６  ホスト
１４８  ディスク
１５０  ＲＡＭ
１５２  半導体チップ
２０４  データキャッシュレジスタ
２０６  ＭＵＸ
２０８  レジスタ
２１０  ロードバッファ
２１１〜２１５  ロードアドレスエントリ
２１６  アレイ
２２０〜２２８  格納アドレスバッファ
２３０  格納データバッファ
２３１〜２１８  格納データ
２３９  アライナ
２４０  アレイ
２５０  ＬＳＵコントローラ
【図１】
0004585647.tif 000002
【図２】
0004585647.tif 000003
【図３】
0004585647.tif 000004
【図４】
0004585647.tif 000005
【図５】
0004585647.tif 000006