(57)【特許請求の範囲】
【請求項１】
データプロセッサコアで実行されるアクセス命令が特定のアクセス命令であるか否かを決定するステップと、
前記アクセス命令が前記特定のアクセス命令であったことに応答して、前記データプロセッサコア外部のトランザクションを用いて、データプロセッサコアのローカルメモリにアクセスするためのアクセス命令に基づくアクセス情報を、選択的にルーティングするステップと
を有し、前記特定のアクセス命令は修飾アクセス命令である、方法。
【請求項２】
前記アクセス命令が特定のアクセス命令ではなかったことに応答して、前記データプロセッサコア内部のトランザクションを用いて前記データプロセッサコアの前記ローカルメモリにアクセスするためにアクセス情報を選択的にルーティングするステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記決定するステップが前記アクセス情報に埋め込まれている情報に基づいて行われる、請求項２に記載の方法。
【請求項４】
前記決定するステップがレジスタ情報に基づいて行われる、請求項２に記載の方法。
【請求項５】
前記データプロセッサコア外部のトランザクションを用いることは、前記データプロセッサコアのポートから、前記データプロセッサコア外部のシステムリソースへ、前記アクセス情報をルーティングすることを含み、前記システムリソースは、前記ローカルメモリにアクセスするために、前記アクセス情報を前記データプロセッサコアへルーティングすることに用いられる、請求項１に記載の方法。
【請求項６】
前記ローカルメモリへアクセス情報を選択的にルーティングしたことに応答して、前記アクセス情報に基づいてアクセスされるデータを前記システムリソースにおいて前記ローカルメモリから受信するステップをさらに含む、請求項５に記載の方法。
【請求項７】
前記データプロセッサコア外部のトランザクションを用いることは、前記データプロセッサコアの第１ポートから、前記ローカルメモリにアクセスするために前記データプロセッサコアの第２ポートを介して前記データプロセッサコアへ前記アクセス情報をルーティングするために使用される前記データプロセッサコア外部のシステムリソースへ、前記アクセス情報をルーティングすることを含む、請求項２に記載の方法。
【請求項８】
前記システムリソースにおいて、前記アクセス命令が修飾アクセス命令であったことに応答して、前記ローカルメモリに格納されるアクセス情報を処理するステップをさらに含む、請求項５に記載の方法。
【請求項９】
プログラマブル指示子が、前記データプロセッサコア外部のトランザクションの使用が可能であることを示す第１状態であるか又は前記データプロセッサコア外部のトランザクションの使用が可能でないことを示す第２状態であるかを決定するステップと、
前記プログラマブル指示子が前記第１状態にある旨の判断に応答して、前記データプロセッサコア外部のトランザクションを用いて前記選択的なルーティングを実行するステップと、
前記プログラマブル指示子が前記第２状態にある旨の判断に応答して、前記データプロセッサコア外部のいかなるトランザクションも使用せずに、前記特定のアクセス命令による前記アクセス情報を前記ローカルメモリへ選択的にルーティングするステップと
をさらに含む、請求項１に記載の方法。
【請求項１０】
第１のローカルメモリを有する第１のデータプロセッサコアを含む複数のデータプロセッサコアと、
前記データプロセッサコア外部のシステムリソースモジュールと、
前記システムリソースモジュール及び前記第１のローカルメモリに結合されたシステム相互接続部と
を有する装置であって、前記第１のデータプロセッサコアの命令プロセッサパイプラインにおいて実行されるアクセス命令が、アトミックアクセス命令または修飾アクセス命令の少なくとも１つを含む特定のアクセス命令であったことに応答して、前記第１のデータプロセッサコアは、前記第１のローカルメモリにアクセスするために、前記アクセス命令に関連するアクセス情報を、前記システムリソースモジュールへ選択的にルーティングし、
前記第１のデータプロセッサコアは、前記システム相互接続部に接続された第１のポートと前記システム相互接続部に接続された第２のポートとをさらに備え、前記第１のデータプロセッサコアは、前記アクセス命令が前記特定のアクセス命令として認識されたことに応答して、前記アクセス情報を前記第１のポートを介して前記システムリソースモジュールへ選択的にルーティングし、前記システムリソースモジュールは、前記第１のデータプロセッサコアの前記第２のポートを介して前記アクセス情報を前記第１のローカルメモリへ与える、装置。
【請求項１１】
前記システムリソースモジュールは、前記アクセス命令が前記特定のアクセス命令として確認されたことに応答して、前記第１のローカルメモリにアクセスするために前記アクセス情報を前記第１のデータプロセッサコアにルーティングする、請求項１０に記載の装置。
【請求項１２】
前記命令プロセッサパイプラインは、前記アクセス命令が前記特定のアクセス命令であるか否かを決定し、前記命令プロセッサパイプラインはさらに、前記アクセス命令が前記特定のアクセス命令ではなかったことに応答して、前記システムリソースモジュールを使用せずに、前記アクセス命令に関連する前記アクセス情報を前記第１のローカルメモリへ選択的にルーティングし、前記第１のローカルメモリが前記第１のデータプロセッサコアに対してローカルにアクセスできるようにする、請求項１０に記載の装置。
【請求項１３】
前記複数のデータプロセッサコアが前記システム相互接続部に接続された第２のデータプロセッサコアをさらに含み、
前記第２のデータプロセッサコアは第２のローカルメモリを備え、
前記第２のデータプロセッサコアの命令プロセッサパイプラインで実行される第２のアクセス命令が前記特定のアクセス命令として認識されたことに応答して、前記第２のデータプロセッサコアは、前記第２のアクセス命令に関連するアクセス情報を、前記システムリソースモジュールへ選択的にルーティングし、
前記システムリソースモジュールはさらに、前記第２のローカルメモリにアクセスするために、前記第２のアクセス命令に関連する前記アクセス情報を前記第２のデータプロセッサコアにルーティングする、請求項１０に記載の装置。
【請求項１４】
前記システムリソースモジュールは、格納または取得された情報を処理するメモリコントローラである、請求項１３に記載の装置。
【請求項１５】
前記装置はイネーブル指示子を格納する格納場所をさらに有し、前記第１のデータプロセッサコアは、アサートされたイネーブル指示子に応答して、前記システムリソースモジュールに前記アクセス情報を選択的にルーティングし、ネゲートされた前記イネーブル指示子に応答して、前記システムリソースモジュールを使用せずに前記第１のローカルメモリへ前記アクセス情報を選択的にルーティングする、請求項１０に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には電子デバイスに関するものであり、さらに詳しくはデータプロセッサデバイスのメモリのアクセスに関するものである。
【背景技術】
【０００２】
データプロセッサコアは一般に命令の実行を制御する様々な段階を含む命令実行パイプラインを含む。命令実行パイプラインの１つの段階は、有効なアドレス入力オペランドのような命令情報を、アクセスされるターゲットのメモリ位置を決定するために命令情報を用いるロード／格納ユニットへ与える。ロード要求に応答して情報はターゲットメモリから検索され（読み取られ）、格納要求に応答してターゲットのメモリ位置に与えられる（書き込まれる）。
【０００３】
本明細書において特定命令と呼ばれる特定のタイプの命令は、特定の方法で処理された関連するロードおよび格納要求を必要とし、その方法は、ロードおよび格納要求それぞれの主要な読み取りおよび書き込み機能を実行するだけでなく、要求の特殊な処理も実行する。特定命令の２つの例は、中断されずに完了する１つまたは複数のメモリアクセスを要するアトミック命令（atomic  instruction）と、自身の主要な機能を実行することに加えてデータアクセスが特定の方法で処理されるようにする修飾命令(decorated  instruction)を含む。アトミック命令の実行はロード／格納ユニットに与えられる対応するアトミックアクセス要求となり、修飾アクセス命令（decorated  access  instruction）の実行はロード／格納ユニットに与えられる対応するアトミックアクセス要求となる。特定命令が要する特定処理を実行するためのデータプロセッサが必要な追加的ハードウェアオーバーヘッドは、データプロセッサコアのサイズを増やす。また、データプロセッサコアにおけるアトミック要求のような特定要求の実行は、メモリ位置に以後にアクセスすることになるバスロック動作または他の遅延を生じるおそれがある。他の命令の実行完了に必要なデータプロセッサコアのローカルメモリに格納される情報へのアクセスが妨げられる場合、この遅延は特に問題となる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の課題は、データプロセッサコアのサイズ及び遅延を小さくすることである。
【課題を解決するための手段】
【０００５】
一実施形態による方法は、
データプロセッサコアで実行されるアクセス命令が特定のアクセス命令であるか否かを決定するステップと、
前記アクセス命令が前記特定のアクセス命令であったことに応答して、前記データプロセッサコア外部のトランザクションを用いてデータプロセッサコアのローカルメモリにアクセスするためのアクセス命令に基づいて、アクセス情報を選択的にルーティングするステップと
を有し、前記特定のアクセス命令はアトミックアクセス命令または修飾アクセス命令の内の少なくとも一方である、方法である。
【図面の簡単な説明】
【０００６】
【図１】データ処理システムを示すブロック図。
【図２】図１のデータ処理システムの一部に関する特定の実施形態を示すブロック図。
【図３】本明細書の特定の実施形態によるフローチャート。
【図４】本明細書の特定の実施形態によるフローチャート。
【図５】本明細書の特定の実施形態による制御レジスターのブロック図。
【発明を実施するための形態】
【０００７】
添付の図面を参照することによって、本発明はよりよく理解され、その多くの目的、特徴および利点が当業者に明らかになる。
【０００８】
本明細書においては、１つまたは複数のデータプロセッサコアを有するデータ処理システムが記載され、各データプロセッサコアが命令パイプライン、ロード／格納ユニットおよびローカルメモリを有する。データプロセッサコアのローカルメモリに格納されるデータをアクセスする必要なデータプロセッサコアによって命令の実行に応答する可能であるデータプロセッサのロード／格納ユニットが、ローカルメモリへローカルアクセス要求または外部アクセス要求の１つを選択的にルーティングする。特に、現在命令は通常な命令である時、ローカルアクセス要求はローカルメモリへルーティングされ、現在命令が特定命令として実行される時ローカルメモリをアクセスするために外部アクセス要求が使用される。
【０００９】
本明細書において、「ローカルアクセス」という用語およびその派生語は、共通なデータプロセッサコアの２つのリソースの間におけるアクセス情報の流れに対して使用される場合（例えばロード／格納要求の場合）、情報の流れが完全にデータプロセッサコアの中で生じることを意味することが意図されている。また、「外部アクセス」という用語およびその派生語は、２つのリソースの間におけるアクセス情報の流れに対して使用される時（例えば、ロード／格納要求の場合）は、情報の流れの少なくとも一部分がデータプロセッサに対して外部で生じることを意味することが意図されている。例えば、データプロセッサコアによるデータプロセッサコアのローカルメモリへのローカルアクセス要求は、データプロセッサコアに対して完全にローカルな回路を用いてローカルメモリへルーティングされるアクセス要求である。データプロセッサコアによるそのローカルメモリに対する外部アクセス要求は、データプロセッサコアに対して完全に外部にある回路を用いてローカルメモリへルーティングされるアクセス要求である。
【００１０】
ローカルメモリへルーティングすることに先立って、処理を行う外部リソースへローカルメモリアクセス要求をルーティングすることは、データプロセッサコア外部のリソースが特定のアクセス要求に関連する特定の処理を実行できるようにす。外部リソースによるアクセス要求の特定の処理を実行する能力は、本発明が使用されなかったならば特殊な処理を実行するためにデータプロセッサコアに必要となる、データプロセッサコアに必要なハードウェアオーバヘッドを減らす。本明細書の特定の実施形態は図１〜５に関連して説明される。
【００１１】
図１は、１つまたは複数のデータプロセッサコア１０１〜１０２、バス１３１〜１３７、システム相互接続部１０３、および１つまたは複数の周辺部又はペリフェラル１０４〜１０６を含むデータ処理システム１００を示す。図１に示される素子の各々は、半導体基板の一部、共通なパッケージの一部、共通な回路板の一部、など、またはこれらのものの組み合わせであってよい。例えば、メモリ１０６はデータプロセッサコア１０１〜１０２、メモリコントローラ１０５、およびシステム相互接続部１０３と同一半導体基板に集積されてもよいが、他の周辺装置は同一半導体基板に集積されていなくてもよい。
【００１２】
１つまたは複数のバス１３１〜１３６はデータプロセッサコア１０１〜１０２および周辺部１０４〜１０６の各々をシステム相互接続部１０３に接続する。システム相互接続部１０３は、アドレス情報に基づいてデータプロセッサコア１０１〜１０２および周辺部１０４〜１０６の各々の情報の通信を補助するクロスポイントスイッチまたは他の相互接続モジュール等であってもよい。周辺部１０４は、システム相互接続部１０３を介して情報を受信または与えるようにアクセスされ得るメモリまたは他のデバイスのようなスレーブデバイスとして示される。
【００１３】
周辺部１０６はメモリ１０６として呼ばれ、アクセス要求に応答して情報を受信または与える可能である揮発性または不揮発性メモリデバイスのようなメモリデバイスである。メモリ１０６へアクセス要求は、図示すように、システム相互接続部１０３およびメモリコントローラ１０５の両方を介してルーティングされてもよいし、或いはメモリ１０６へのアクセス要求はシステム相互接続部１０３を介するがメモリコントローラ１０５（図示せず）を介さずにメモリ１０６にルーティングされてもよい。特定の実施形態において、メモリコントローラ１０５は、データプロセッサシステム１００のアドレスマップの所定範囲に関連するアクセス要求を受信および管理し得る周辺部である。例えば、通常のアクセス要求であるか又は特定のアクセス要求であるかによらず、すべての通常アクセス要求がシステム相互接続部１０３によってメモリコントローラ１０５にルーティングされるように、メモリ１０６のアドレスはデータプロセッサシステム１００のアドレス空間にマッピングされてもよい。あるいは、通常のアクセス要求がメモリコントローラ１０５を介することなくシステム相互接続部１０３によってメモリ１０６に直接的にルーティングされ、かつメモリ１０６に対する特定のアクセス要求（例えば、データプロセッサコア１０１によって特殊なもの又は特定のものであるとしてタグが付されている要求）が、メモリ１０６へのアクセスに先立って、特殊な処理のためにシステム相互接続部１０３がメモリコントローラ１０５へルーティングされるように、メモリ１０６のアドレスがシステム１００にマッピングされてもよい。
【００１４】
特定の実施形態において、データプロセッサコアは、ローカルメモリを識別する例えばアドレスのようなアクセス情報を有するアクセス要求をシステム相互接続部１０３へ与えることによって、データプロセッサのローカルメモリ内の情報を要求してもよい。それに応答して、相互接続部１０３が処理のために要求をメモリコントローラ１０５にルーティングする。例えば、データプロセッサコア１０１のローカルメモリに格納された情報を抽出又は検索するアクセス要求が、データプロセッサコア１０１からシステム相互接続部１０３へ与えられてもよく、追加的な処理のためにシステム相互接続部１０３が該アクセス要求をメモリコントローラ１０５に与えてもよい。必要であれば、メモリコントローラ１０５は該要求に関連する何らかの特定の処理を実行する。要求が受信され、何らかの必要な特定の処理が実行された後、メモリコントローラ１０５は、データプロセッサコア１０１のローカルメモリのターゲット位置を識別するアクセス要求をシステム相互接続部１０３に与える。システム相互接続部１０３は、データプロセッサコア１０１のローカルメモリが要求のターゲット又は目標であることを確認し、該アクセス要求をデータプロセッサコア１０１のポート１０１にルーティングする。データプロセッサコア１０１のローカルメモリから取得されたデータは逆向きの同一データ経路を用いて、例えば、データプロセッサコア１０１のポート１２０から相互接続部１０３を介してメモリコントローラ１０５（必要に応じて）へ、相互接続部１０３を介してシステムバスインタフェースユニット１１８への経路を用いて、ロード／格納ユニットにルーティングする。データプロセッサ１０１が、データプロセッサ１０１のローカルメモリから情報を取得するためにローカルアクセスまたは外部アクセスの何れを使用するかを決定する方法は、特定のデータプロセッサコアの説明を参照することで更に理解できる。
【００１５】
図１のデータプロセッサコア１０１〜１０２はいかなる種類のデータプロセッサコアであってもよい。データプロセッサコアは同一または異なる種類であってよい。説明の便宜上、複数のデータプロセッサコア１０１〜１０２の各々は同一の種類であり、データプロセッサコア１０１に関して詳細に示すように、各データプロセッサコアは各自のローカルリソースを含む。ローカルリソースは、例えば、データプロセッサコア１０１は、実行パイプライン１１１、命令キャッシュ１１４、データキャッシュ１１６、ローカルメモリ１１７、システムバスインタフェースユニット１１８、ロード／格納ユニット１１５、レジスタ１０４、および様々なローカルバス（データプロセッサコア１０１のリソースを互いに接続する）を含むように示されている。データプロセッサコア１０１外部のリソースは、バス１３１〜１３７、システム相互接続部１０３、周辺部又はペリフェラル、およびメモリ１０４〜１０６を含む。
【００１６】
レジスタ１０４はユーザがプログラムすることが可能なプログラマブルレジスタであり、アドレスレジスタ、データレジスタ、ベースアドレスレジスタ１４１、制御情報等を含む。
【００１７】
パイプライン１１１は命令キャッシュ１１４、ロード／格納ユニット１１５、および一群のレジスタ１４０に接続される。パイプライン１１１は、命令オペランドを格納するメモリ位置又はその実行結果が格納されているメモリ位置にアクセスするためにロード／格納ユニット１１５と通信する。一例として、本明細書におけるアクセス要求は典型的にはロード要求として説明されているが、本願で説明される発明は要求を格納することにも適用可能である。
【００１８】
ローカルバス１１９はロード／格納ユニット１１５、ローカルデータメモリ１１７のポート１２１およびデータキャッシュ１１６に接続されている。データプロセッサコア１０１のシステムバスインタフェースユニット（ＢＩＵ）１１８は、システム相互接続部１０３（バス１３１を介して）に接続されるポート、命令キャッシュ１１４に接続されるポート、ロード／格納ユニット１１５に接続されるポートおよびデータキャッシュ１１６に接続されるポートを含む複数のポートを有する。ポート１２１を加えて、ローカルデータメモリ１１７は追加的ポート１２０を含み、該追加的ポート１２０は、データプロセッサコア１０１外部のバス１３２を介してシステム相互接続部１０３に接続されるスレーブバスインタフェースユニットとすることができる。ローカルバス１１９はデータプロセッサコア１０１にとってローカルであるので（内部にあるので）、ローカルバス１１９はシステム相互接続部１０３に接続されるバス１３１〜１３６から独立している。この独立性により、ローカルバス１１９を介してデータプロセッサコア１０１の素子同士の間で情報が送受信されると共に、相互接続部１０３を介してバス１３１および１３２の少なくとも１つを介してデータプロセッサコア１０１と別の外部リソースとの間で情報が送受信できるようになる。
【００１９】
データプロセッサコア１０１の動作の間に、実行パイプライン１１１が、命令の実行に関連する様々な処理機能を制御する。これらの様々な処理機能は、命令を要求するために命令フェッチ要求を命令キャッシュ１１４に与えること、フェッチされた命令をデコードすること、メモリから命令オペランドを要求するためにデータアクセス要求を決定して提供すること、デコードされた命令に基づいて、整数または浮動小数点方式の少なくとも１つの演算ロジックユニット（ＡＬＵ）へ演算命令を決定して提供すること、及びメモリに結果を格納するデータアクセス要求を決定および提供すること等を含む。
【００２０】
命令キャッシュ１１４は、実行パイプライン１１１からフェッチ要求を受信し、キャッシュアレイから要求された命令を提供し又は可能であれば必要な命令のためのアクセス要求をシステムＢＩＵ１１８に提供する。同様に、実行パイプライン１１１は、パイプライン１１１によって使用される命令オペランドを取得するために実行される命令（現在アクセス命令）に関連する１つまたは複数の有効アドレス入力オペランド及びロードアクセス要求を含むことが可能であるロードアクセス要求を、ロード／格納ユニット１１５に与える。
【００２１】
ロード／格納ユニット１１５は、ロード要求およびロード／格納ユニット１１５の有効アドレス入力オペランドをデコードし、ターゲットのデバイスにアクセスするために必要に応じて他のアクセス情報と共にロード／格納ユニット１１５により与えられるターゲットアドレスを決定する。ロード／格納ユニット１１５は、ローカルアクセス要求または外部アクセス要求によりローカルメモリ１１７内の情報にアクセスできる。例えば、ロード／格納ユニット１１５は、ローカルバス１１９を介してローカルメモリ１１７のポート１２１にローカルにアクセス要求をルーティングすることができ、或いはシステムバスインタフェースユニット１１８、システム相互接続部１０３およびメモリコントローラ１０５を含むデータ経路を介してデータプロセッサコア外部へのアクセス要求をローカルメモリ１１７のポート１２０にルーティングすることができる。
【００２２】
本明細書に記載されている特定の実施形態において、ロード／格納ユニット１１５がローカルアクセス要求または外部アクセス要求によりローカルメモリ１１７へアクセス要求をルーティングするか否かは、命令デコードの間にパイプライン１１１によって決定されるアクセス要求が通常のデータアクセス要求であるか又は特定のデータアクセス要求であるかに基づく。例えば、アトミックアクセス命令が実行されるように決定されている場合、パイプライン１１１は処理を行うためにアトミックアクセス要求をロード／格納ユニット１１５に与える。同様に、パイプライン１１１は、修飾アクセス命令が実行されている時を決定し、それに応じて、どのようにアクセス要求に関連するアクセス情報が修飾コントローラ１０７によって処理されることになっているかを示す修飾値を与え、一実施形態においてそれはメモリコントローラ１０５の一部分に含まれる。修飾値は修飾要求の処理の間に修飾コントローラによってアクセスされる汎用レジスタに格納されてもよい。代替実施形態において、修飾値は、外部アクセスを実行するために使用されるアクセス情報の一部としてロード／格納ユニット１１５により修飾コントローラに以後転送される修飾アクセス要求（decorated  access  request）の一部としてロード／格納ユニット１１５に与えられる。修飾要求の処理は、リードモディファイライト処理（読み込み・変更・書き込み処理）または他のタイプの特定の一連のメモリ処理を実行する要求を与える動作となる。このような一連のシーケンス処理がそのような不可分セットの動作により構成され、メモリコントローラ１０５がこのような分割できないシーケンスをデータプロセッサコア１０１の便宜を図るために透明に実行されるようにする。このようなシーケンスは、テスト・セット処理、比較・交換処理、テスト・インクリメント／デクリメント処理その他の処理（本明細書にさらに説明され、ロード／格納ユニット１１５によって直接的には行われない処理）を含んでもよい。
【００２３】
ロード／格納ユニット１１５の動作は、図２を参照することでよく理解することができ、図２はローカルメモリ２１７、データキャッシュ２１６、ロード／格納ユニット２１５の具体的な要素及びローカルバス２１９を含むデータプロセッサコア１０１の一部を示し、これらの各々は図１に示されているものに類似する符号（１１７、１１６、１１５および１１９）と共に示されている。
【００２４】
バス２１９は、部分２１１および部分２１２を含むように示されている。部分２１１は制御およびアドレス情報をロード／格納ユニット２１５とローカルメモリ２１７との間で通信するバス２１９の一部である。部分２１２は、制御およびアドレス情報をロード／格納ユニット２１５とデータキャッシュ２１６との間で通信するバス２１９の一部である。
【００２５】
ロード／格納ユニット２０５は、アドレス計算モジュール２０１およびルーティングモジュール２０２を含むように詳細に示されている。アドレス計算モジュール２０１は、ターゲットメモリデバイスのＭＥＭ＿ＡＤＤというラベルが付されたターゲットアドレスを決定するために、パイプライン１１１から受信したアクセス情報をデコードする。ルーティングモジュール２０２は命令パイプライン１１１からターゲットアドレスおよび他の情報を使用して、アクセス要求がターゲットメモリデバイスにどのようにルーティングされるかを決定する。ルーティングモジュール２０２によるアクセス要求のルーティングは図２のロード／格納ユニット２０５の詳細な機能的ブロック図によってよく理解できる。
【００２６】
ロード／格納ユニット２０５はローカルメモリ検出モジュール３３１およびデマルチプレクサ３３２、３３３を含むように示されている。また、ロード／格納ユニット２０５は、ローカルメモリ２１７のベースアドレスを指示するＬＭ＿ＢＲ値を格納し、ユーザプログラマブルレジスタ３４１にアクセスする。ローカルメモリ２１７のベースアドレスおよびサイズに基づいて、ローカルメモリ検出モジュール２０１は、デコードされるアドレスＭＥＭ＿ＡＤＤがローカルメモリ２１７のアドレスに関連するか或いは外部メモリのアドレスに関連するかを決定する。デコードされるアドレスがローカルメモリ２１７アドレスに関連していた場合、信号ＬＭ＿ＡＣＣＥＳＳがアサートされ、そうでない場合、信号ＬＭ＿ＡＣＣＥＳＳはネゲートされる。
【００２７】
ＬＭ＿ＡＣＣＥＳＳがネゲートされたことに応答して、データプロセッサコア１０１外部のリソースへアクセス要求としてさらにルーティングするために、デマルチプレクサ３３２を介する経路が、現在の命令のアクセス情報をバスインタフェースユニット１１８に与えるために選択される。簡明化のために、本説明はデータキャッシュ１１６が情報のアクセスと共に含まれるようには記述されていない。しかしながら、実際には、データキャッシュ１１６はロード／格納ユニット１１５によってアクセスされてもよく、キャッシュミスーの場合、バスインタフェースユニット１１８はデータアクセスを外部に進めてもよい。例えば、バスインタフェースユニット１１８はアクセス情報に基づいて相互接続部１０３にアクセス要求を与えてもよい。相互接続部１０３はアクセス要求をメモリコントローラ１０５へルーティングしてもよいし、或いはデータプロセッサコア１０１外部の別の宛先へルーティングしてもよい。或いは、ＬＭ＿ＡＣＣＥＳＳがアサートされたことに応答して、デマルチプレクサ３３３にアクセス情報を与えるようにデマルチプレクサ３３２を介した経路が選択されてもよい。
【００２８】
パイプライン１１１における情報が現在の命令は特定の命令であることを示していた場合にアサートされ、かつパイプライン１１１における情報が現在の命令は通常の命令であることを示していた場合にネゲートされるＳＰのラベルが付された信号によって、デマルチプレクサ３３３は制御される。現在の命令が通常の命令であったことに応答して、ローカルメモリ２１７へローカルアクセス要求を提供するために、例えば、バス２１９を介してローカルメモリ２１７のポート２２１へアクセス要求を与えるために、デマルチプレクサ３３３を介する経路が選択される。あるいは、現在の命令が特定の命令であったことに応答して、ローカルメモリ２１７へ外部アクセス要求を与えるためにデマルチプレクサ３３３を介する経路が選択される。例えば、外部アクセス要求はアクセス情報に基づいてバスインターフェースユニット２１８を介して相互接続部１０３に与えられる。相互接続部１０３は、さらにアクセス要求をメモリコントローラ105へルーティングする。メモリコントローラ105は、特定処理を実行し、必要に応じてターゲットメモリ位置の情報を要求するためにシステム相互接続部１０３を介してローカルメモリ２１７のポート２２２にアクセス要求を与える。
【００２９】
ターゲットメモリ位置に格納される情報はシステムバス１０３を介してデータプロセッサコア１０１のバスインタフェースユニット２１８へルーティングされる。戻りルートがメモリコントローラ１０５を含んでもよく、特定のアクセス要求のタイプに依存して、メモリコントローラ１０５がアクセス要求に応答してメモリアクセス及び変更処理のシーケンスを実行してもよいことが、理解されるべきである。
【００３０】
主要な機能ではない特定のアクセス要求は、予約／修飾コントローラ１０７によってメモリコントローラ１０５において処理され、アトミックアクセス要求および修飾アクセス要求とともに以下において詳細に説明される。
【００３１】
アトミックアクセス要求は、そのリクエスト（要求）によってアクセスされるメモリ位置が中断することなく、例えば他の装置によってアクセスされることなくアクセスされることを保証する要求である。アトミックアクセスが実行されている特定のメモリ位置をモニタし、メモリ位置がアトミック要求以外の要求によってアクセスされた場合に、要求しているデバイス（例えば、データプロセッサコア１０１）に通知することによって、アトミック要求の原子性（Atomicity）を保障することができる。例えば、メモリコントローラ１０５がアトミックロードおよび予約要求を処理する場合、予約／修飾コントローラ１０７は、ターゲットのメモリ位置に対応する予約を実行するために使用される。一実施形態において、予約／修飾コントローラ１０７は、アトミックにアクセスされるメモリ位置のアドレスをラッチ（保持）し、予約が要求されるマスタを識別するインジケータをラッチ（保持）することによって、予約を設定する。別のマスタがメモリ位置の情報を変更しようとする場合またはアトミックロードおよび予約動作によりメモリ位置の予約を行おうとする場合、予約は予約／修飾コントローラ１０７によってクリアされる（失われる）。その結果、予約／修飾コントローラ１０７は、予約がクリアされたことを検出し、後の予約の格納(reservation  store)（格納状態（conditional  store））が不具合になる。一実施形態において、格納の失敗は、失敗が生じたことをデータプロセッサコア１０１に通知するために設定された状態コードをもたらす。ソフトウェアは状態コードを問い合わせることができ、成功しなかった場合には再試行することができる。このように、原子性（atomicity）を保証するためにセマフォ（semaphore）を利用し、バスロック動作を必要としないようにすることができる。アクセス要求の原子性を保障する別の方法は、メモリが第１のアクセス要求によって解放されるまで、同一のメモリ位置への他のアクセスが一切生じないことを保証するものであり、例えばいずれのリソースについても、現在アトミックアクセスの対象となっているメモリ位置に同時にアクセスすることを禁止するように、システムが設計される。
【００３２】
別のタイプの特定の命令は修飾アクセス命令（decorated  access  instruction）である。パイプライン１１１による修飾アクセス命令の実行は、ロード／格納ユニット１１５に通知される修飾値（decoration  value）を生じる。修飾値は、ターゲットデバイスに与える又はターゲットデバイスから要求される情報をどのように処理すべきかを、予約／修飾コントローラ１０７に通知するために使用される情報である。一実施形態において、修飾命令の実行は、修飾要求の処理の間に予約／修飾コントローラ１０７によってアクセスされる汎用レジスタに格納される修飾値をもたらす。代替実施形態において、修飾値は、ロード／格納ユニット１１５によって搬送され、例えば、汎用または他のレジスタから修飾コントローラに、処理のためのアクセスされるメモリアドレスのような他のアクセス情報と共に搬送される。
【００３３】
主要なアクセス機能（例えば、アクセス命令の読み込みまたは書き込み）に加えて、実行される修飾要求に応じて、メモリコントローラ１０５は、アクセス要求の実行の間に特定の機能を実行するために予約／修飾コントローラ１０７を使用する。例えば、実行される修飾要求の主要な機能はロード要求であってもよい。しかしながら、修飾要求の修飾機能はそれが取得された後であるが要求している装置に戻される前に読み取った値を修正することでもよいし、或いは読み取った値を修正してターゲット位置に修正された値を格納し直すことでもよい。例えば、アクセスされる情報は、要求している装置に戻される前に（読取りアクセスの間）又はメモリに保存される前に（読取りまたは書込みアクセスの間）或る値だけ乗算又は加算されてもよい。別の実施形態において、修飾機能は情報が格納されている位置を制御することができる。例えば、修飾値は、与えられたデータ値が或るデータワードの中に格納されている特定のビット位置を示してもよいし、またはデータ値が要求しているデバイスに戻される特定ビット位置を指示する特定ビット位置を示すことができる。
【００３４】
任意の数の様々な追加的な又は代替的な処理機能が実行される修飾命令に応じて実行されてもよく、修飾値はデータプロセッサコアのパイプラインによって一般的には解釈されないことが理解される。上述に記載されるように修飾要求もアトミック要求であってよいことに留意を要する。予約／修飾コントローラ１０７は修飾を実行するために使用されるので、修飾の機能は、要求データプロセッサコアとともに長い待ち時間を必要とすることなくおよびメモリ位置の予約を取得する必要なしに、予約／修飾コントローラ１０７によって不可分に行われてもよい。
【００３５】
図３は、データプロセッサコアにとってローカルな１つのデータ経路およびデータプロセッサコアにとって外部のリソース（外部リソース）を含む他の代替データ経路という２つの経路の内の１つを介して、アクセス情報をローカルメモリへ選択的にルーティングする特定の方法を表現するフローチャートを示す。処理３０１において、フェッチされた命令の実行が、データプロセッサコアの実行パイプラインにおいて開始され、そこで命令がデコードされる。デコードされた情報に基づいてロード／格納要求がロード／格納ユニットに与えられてもよい。ロード／格納ユニットに与えられる要求は、要求が特定の要求であることを示す埋め込まれた情報を含んでいてもよい。例えば、埋め込まれた情報は、オプコードまたは他のインジケータ（指示子）のような要求の命令部分に固有であってもよく、また要求に関連するデータフィールド情報として含まれてもよい。或いは、要求は、レジスタに格納された値に依存して、通常の又は特定の要求として処理される一般的な要求であってよい。処理３０２において、アクセスされる情報を含むターゲット装置のメモリ位置を示す現在の命令からのアクセス情報に基づいて、アドレスデコード処理がロード／格納ユニットにおいて行われる。
【００３６】
処理３０３において、処理３０２で認識されるターゲットメモリがデータプロセッサコアのローカルメモリに対応するか否かが決定される。ターゲットメモリがデータプロセッサコアのローカルメモリであることがデコード処理において確認されたことに応答して、フローは処理３０５に進む。そうでなかった場合、フローは処理３０４に進み、非局所的メモリ（ローカルでないメモリ）にアクセスするためにアクセス情報がデータプロセッサコア外部に選択的にルーティングされる。例えば、図１において、アクセス情報は、メモリコントローラ１０５にルーティングされ、メモリコントローラ１０５は、命令が特定のアクセス命令であるか否かに応じて通常の方法又は特定の方法でメモリ１０６内の情報にアクセスする。
【００３７】
処理３０５において、現在アクセスがローカルメモリに対するものであることが処理３０３において判定された後に、ローカルメモリへのアクセスが、アトミックアクセス要求または修飾アクセス要求のような特定のアクセス要求に対応するか否かが判定される。アクセス要求がアトミックアクセス要求であるか否かは、処理３０１においてデコードされる間に決定されたアクセス情報に基づいて決定され、命令デコードの間にレジスタ位置に格納される。例えば、現在のアクセス要求が特定のアクセス要求であることを示す命令デコードの間に、インジケータ（指示子）がレジスタ位置に設定されてもよい。或いは、指示子はロード／格納ユニットに直接的に通知されてもよい。アクセス要求が通常の要求であることがデコード工程において判定されたことに応答して、フローは処理３０６に進み、アクセス情報はデータプロセッサコアの内部に選択的にルーティングされ、例えば、データプロセッサコアの外部の如何なるトランザクションも使用せずに、アクセス要求はローカルメモリへ選択的にルーティングされ、外部のトランザクションは外部のリソースによって実行される処理または機能である。そうでなかった場合、フローは特定の処理を行うために処理３０７に進む。
【００３８】
処理３０７において、アクセス要求は特定の要求であることがデコード工程において判定されたことに応答して、アクセス情報は、ロード／格納ユニットからデータプロセッサコアのバスインタフェースユニットへ与えることによって、データプロセッサコア外部の１つまたは複数のリソースに選択的にルーティングされる。１つまたは複数の外部リソースは、アクセス情報に基づいてローカルメモリにアクセスする１つまたは複数の外部トランザクションを実行する。処理３０８において、データプロセッサコアのローカルメモリへアクセス要求を送信する前に、外部リソースが必要な任意の特定の処理を実行する。例えば、特定の処理は、アクセスされるメモリ位置に関連する予約を設定し、メモリのアトミックアクセスが最中であることを表現し、あるいはローカルメモリに保存されるアクセス情報が保存される前に処理されてもよい。特定の処理が完了した後、アクセス情報は、データプロセッサコアのローカルメモリへアクセス要求を与えるために使用される。一実施形態において、アクセス要求は、バスインターフェースユニットによっては制御されないローカルメモリのスレーブポートに与えられる。或いは、外部リソースがデータプロセッサコアのバスインターフェースユニットを介してローカルメモリへアクセス要求を与えてもよい。
【００３９】
処理３０９において、ローカルメモリに格納される情報にアクセスした後であってアクセスの完了前に、外部リソースは必要な任意の特定の処理を実行する。例えば、データがローカルメモリにおいてアクセスされた後の特定の処理は、特定のアドレスに対する予約をクリアすること、または予約がもはや有効ではないと判定された場合、要求している装置へ予約の無効を報告することを含んでもよい。別の実施形態において、アクセスは、メモリアクセスおよびデータ処理動作の一連の処理シーケンスを用いて、メモリコントローラによる追加的処理のためにデータプロセッサコアからの修飾動作情報（decoration  operation  information）を利用することで完了されてもよい。さらなる別の実施形態において、外部リソースは、ローカルメモリに修飾情報を格納することによって完了してもよく、例えば、完了する前に読取り・変更・書き込み要求の一部として格納することによって完了してもよい。修飾アクセスの間に取得された情報は、命令オペランドとして使用するために、要求している装置（例えば、データプロセッサコアのパイプライン）へ戻される。
【００４０】
図４は、本発明の実施形態にしたがう特定の方法を示すフローチャートを示し、図３と同様な符号を有する処理ブロックは図３と同様な処理を行う。図４の方法は、ローカルメモリへのアクセスが特定のアクセス情報であると決定したことに応答して、処理３０５から処理３０７へ直接的に進むのではなく、処理３１１に進む点で図３のフローと異なっている。処理３１１においては、特定の処理がイネーブルされるか否かが判定される。例えば、プログラマブルレジスタのインジケータ（指示子）が、特定のタイプの特定の処理が利用可能であることを示するように設定できる。図５を参照するに、プログラマブルレジスタ位置４０２は、ＡＴＯＭ＿ＥＮというラベルが付されたビットがイネーブルされている場合に特定の処理によってアトミックアクセスが処理されることになっていることを示すビットを含み、かつＤＥＣ＿ＥＮというラベルが付されたビットがイネーブルされている場合に特定の処理によって修飾アクセスが処理されることになっていることを示すビットを含む。データプロセッサコア１０１の内部のローカルメモリへ至る際にローカルアクセス経路をバイパス（迂回）しかつデータプロセッサコア外部のメモリコントローラ１０５のようなリソースを利用するために、或いはロード／格納動作を処理するのみの内部経路を利用するかためにロード／格納ユニット１１５によって生成される特定アクセス要求のルーティングおよび動作を制御するために、上記のようなプログラマブルレジスタがロード／格納ユニット１１５により生成される特定のアクセス要求のルーティング及び処理に使用される。このような選択肢は、データプロセッサコア１０１の動作について、より大きな自由度および効率を可能にする。
【００４１】
従ってビットフィールドＡＴＯＭ＿ＥＮがイネーブルにされていることに応答して、アトミックアクセス要求は（フローチャートにおいて処理３０７に進み）、上述したようにデータプロセッサコアの外部のリソースにより、要求された情報へのアクセスを促す。ビットフィールドＡＴＯＭ＿ＥＮがネゲートされていた場合、アトミックアクセス要求は（フローチャートにおいて処理３０６に進み）、データプロセッサコアの外部の如何なるトランザクションも行うことなしに、ローカルメモリの中の要求された情報への通常のアクセスを促す。同様に、ビットフィールドＤＥＣ＿ＥＮがイネーブルにされていた場合、修飾アクセス要求は（フローチャートにおいて処理３０７に進み）、上述したようにデータプロセッサコアの外部のリソースにより、要求された情報へのアクセスを促す。ビットフィールドＤＥＣ＿ＥＮがネゲートされていた場合、修飾アクセス要求は（フローチャートにおいて処理３０６に進み）、データプロセッサコアの外部の如何なるトランザクションも行うことなしに、ローカルメモリの中の要求された情報への通常のアクセスを促す。代替的な実施形態において、全ての特定のアクセスをイネーブル／ディセーブルにするために単独のレジスタビットが使用されてもよく、例えば、アトミックアクセス要求及び修飾アクセス要求の双方について１ビットでイネーブル／ディセーブルを示してもよい。
【００４２】
一般的な説明における上記の処理又は要素の全てが必ずしも必要ではなく、特定の処理又は装置の一部分が必要とされなくてもよく、１つ以上の更なる処理が実行されてもよく、あるいは上記の説明に加えて要素が含められてもよいことに留意を要する。更に、処理手順が列挙されている順序は、それらが実行される順序でなくてもよい。
【００４３】
以上、本発明の概念が具体的な実施形態を参照しながら説明されてきた。しかしながら、当業者は、特許請求の範囲に記載されているような本願の範囲から逸脱することなく、様々な修正例及び変形例が可能であることを認めるであろう。従って上記の説明及び図面は限定的な意味ではなく例示的な意味に解釈される必要があり、そのような全ての変形例は本願により開示される範囲に包含されるように意図されている。例えば、上記の実施形態において、データプロセッサ１０１は、通常の方法で、例えばＤＥＣ＿ＥＮインジケータがディセーブルである場合に如何なる処理もなされずに、修飾要求（declaration  requests）を実行するように説明されている。しかしながら代替実施形態において、ＤＥＣ＿ＥＮビットがディセーブルであった場合に、パイプライン１１１により決定される修飾値は、データプロセッサコア１０１にとってローカルな修飾コントローラ(declaration  controller)（図示せず）において行われるローカルなメモリアクセスの修飾をもたらし、ＤＥＣ＿ＥＮがイネーブルであった場合に修飾値は外部の修飾コントローラにおいて行われるローカルメモリアクセスの修飾をもたらしてもよい。この場合、ＤＥＣ＿ＥＮビットの値に応じて２つの修飾機能のうちの一方を実行するために同じ修飾値（declaration  value）が使用可能である。
【００４４】
別の例として、他のアクセスにより自動的にアクセスされるメモリ位置に対する介在アクセス（intervening  access）は、その介在アクセスが同じマスタからの保存であった場合又は介在アクセスが同じマスタからのロードであった場合に、生成された予約インジケータをもたらしてもよい。
【００４５】
また、他の利点及び課題を解決するための手段が特定の実施形態に関連して説明されてきた。しかしながら、利点、効果、課題解決手段及び任意の特徴（何らかの利点、効果又は手段をもたらす又は顕著にする任意の特徴）は、特許請求の範囲における請求項の全部又は一部に対する必須の、不可欠な又は本質的な特徴と解釈されてはならない。
【図１】
0006005392.tif 000002
【図２】
0006005392.tif 000003
【図３】
0006005392.tif 000004
【図４】
0006005392.tif 000005
【図５】
0006005392.tif 000006