(57)【要約】【課題】本発明の課題は、異質なリソースを有する各命令セットアーキテクチャベースシーケンサの間の効果的な通信を可能にする方法、装置及びシステムに関する。【解決手段】上記課題を解決するため、本発明は、ユーザレベルアプリケーションから、第１命令シーケンサに該第１命令シーケンサを介し接続され、該第１命令シーケンサに関する異質なリソースを有するアクセラレータにリクエストを直接通信するステップと、前記リクエストを前記アクセラレータに係るエキソスケルトンを介し前記アクセラレータに提供するステップと、前記リクエストに応答して、前記アクセラレータにおいて第１機能を、前記第１命令シーケンサにおける第２機能とパラレルに実行するステップとから構成されることを特徴とする方法を提供する。【選択図】図５
2014059920.tif 000002
【特許請求の範囲】
【請求項１】
マルチコアプロセッサの第１命令シーケンサ上で実行されるユーザレベルアプリケーションから、前記第１命令シーケンサの命令セットアーキテクチャ（ＩＳＡ）を実装せず、オペレーティングシステムに透過であって、前記アクセラレータにより実行される次の命令を決定する次命令ポインタロジックを有する前記マルチコアプロセッサのアクセラレータに、前記第１命令シーケンサ上で実行される前記オペレーティングシステムにより管理されるスレッドを介し前記アクセラレータ上にユーザレベルスレッドを生成するためのオペレーティングシステムサポートなしに前記アクセラレータを設定するため第１ユーザレベル命令によってアーキテクチャ状態情報を通信するステップと、
第２ユーザレベル命令によって、前記ユーザレベルアプリケーションからインタフェースロジックを介し前記アクセラレータにリクエストを通信するステップと、
前記アクセラレータに接続され、前記第１命令シーケンサのＩＳＡのプロトコルから前記アクセラレータのプロトコルに前記リクエストを変換する前記インタフェースロジックから、前記アクセラレータに前記リクエストを提供するステップと、
前記リクエストに応答して、前記第１命令シーケンサが前記アクセラレータからの結果を待機しないように、前記第１命令シーケンサにおいて第１機能から独立して第２機能を実行することとパラレルに、前記アクセラレータにおいて前記第１機能を実行するステップと、
を有する方法。
【請求項２】
オペレーティングシステムにより管理されるスレッドの命令を実行する第１命令シーケンサと、
前記第１命令シーケンサに接続される第２命令シーケンサと、
を有する装置であって、
前記第２命令シーケンサは、
前記オペレーティングシステムにより管理されるスレッドの制御の下でユーザレベルスレッドを生成し、前記第１命令シーケンサから受信したデータに対して少なくとも１つの処理を実行するアクセラレータであって、前記第１命令シーケンサの命令セットアーキテクチャ（ＩＳＡ）を実装せず、前記アクセラレータにより実行される次の命令を決定する次命令ポインタロジックを有し、前記第１命令シーケンサに関して異質なリソースである、前記アクセラレータと、
前記アクセラレータに接続され、前記第１命令シーケンサと前記アクセラレータとの間のシーケンサ間通信を、前記第１命令シーケンサのＩＳＡのプロトコルと前記アクセラレータのプロトコルとの間の前記シーケンサ間通信の変換によって有効にするインタフェースロジックであって、前記シーケンサ間通信はオペレーティングシステム（ＯＳ）の関与のない直接的な通信からなり、前記ユーザレベルスレッドの生成はオペレーティングシステムスケジューリングユニットの介入がない、前記インタフェースロジックと、
を有し、
前記第１命令シーケンサは、前記少なくとも１つの処理が終了すると、前記第１命令シーケンサに通知するため、前記アクセラレータから受信した信号とイベントハンドラとを関連付け、前記通知後に前記イベントハンドラを実行し、
前記イベントハンドラは、前記少なくとも１つの処理から結果データを受信及び処理する装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサベースシステムにおける通信の向上に関し、より詳細には、複数のシーケンサ（ｓｅｑｕｅｎｃｅｒ）を有するシステムに関する。
【背景技術】
【０００２】
コンピュータシステムは、データを処理及び通信する各種コンポーネントを有する。典型的なシステムは、各々が付属のメモリ、入出力（Ｉ／Ｏ）デバイス及び他のコンポーネントと共に複数のコアを含む１以上のプロセッサを有している。通信効率を向上させるため、計算アクセラレータ、特定用途Ｉ／Ｏデバイス及び他の特殊ユニットが、ここでは一般にヘルパーユニット（ｈｅｌｐｅｒ  ｕｎｉｔ）として呼ばれる１以上の特殊コンポーネントを介し提供されるかもしれない。しかしながら、汎用プロセッサ及び工業規格オペレーティングシステム（ＯＳ）環境を実現する典型的な計算環境では、ソフトウェアスタックが効率的な利用を妨げる可能性があるため、このようなヘルパーユニットを利用することにより非効率性が発生しうる。すなわち、典型的なＯＳ環境では、システムソフトウェアは、異なる優先レベルを介しアプリケーションソフトウェアから隔離され、これら異なる優先レベルのそれぞれの処理は、他の制限のうちＯＳコンテクストセーブ及びリストア処理を受ける。
【０００３】
従って、特定用途アクセラレータなどのヘルパーユニットが搭載されているときは常に、通常それはデバイスとして現れ、ユーザレベルアプリケーションは、物理的状態のヘルパーユニットリソースに直接アクセスするＯＳのデバイスドライバソフトウェアスタックを介しヘルパーユニットを間接的にしか利用することはできない。この結果、関連するデバイスドライバを介したヘルパーユニットリソースは、システムワイドリソースであり、コンテクストスイッチを介しバーチャル化されるバーチャルメモリ若しくはシーケンサ又は汎用レジスタなどのアプリケーションレベルリソースとはならない。
【０００４】
デバイスドライバを用いてヘルパーユニットにアクセスする必要があることによる問題は、「規格化」されたドライバインタフェースに関するＯＳにより課せられた制限によりフレキシビリティの欠如と非効率性（アプリケーションからヘルパーユニットへのドライバのパス長に関する）である。
【０００５】
計算アクセラレータの従来例は、数値演算コプロセッサ（初期のインテル（登録商標）アーキテクチャ（ＩＡ）−３２プロセッサのためのいわゆるｘ８７浮動小数コプロセッサなど）などのコプロセッサである。典型的には、このようなコプロセッサは、メインプロセッサと共通の命令セットアーキテクチャ（ＩＳＡ）を有するコプロセッサインタフェースを介しメインプロセッサ（中央処理ユニット（ＣＰＵ）など）に接続される。さらに、これらのリソースとのやりとりは、従来のエスケープ／待機信号プロトコルを介し行われ、コプロセッサがそれのリクエストされた機能を実行している間、メインプロセッサは待機状態におかれ、その終了時に、コントロールがメインプロセッサに返される。しかしながら、コプロセッサ処理中、メインプロセッサは、コプロセッサからの結果を待機している間は有用な作業を実行することができない。すなわち、コプロセッサは、メインプロセッサの制御フローのプログラム順序と構成上シーケンシャルに動作するよう一体化されている。これは、特にコプロセッサがメインプロセッサ上の計算と同時的な動作が可能であるとき、プロセッサ利用性を非効率なものとする。従って、このようなヘルパーユニットと通信し、これを利用するより改良された方法が必要とされる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の課題は、上記問題点に鑑み、異質なリソースを有する各命令セットアーキテクチャベースシーケンサの間の効果的な通信を可能にする方法、装置及びシステムに関する。
【課題を解決するための手段】
【０００７】
上記課題を解決するため、本発明は、ユーザレベルアプリケーションから、第１命令シーケンサに該第１命令シーケンサを介し接続され、該第１命令シーケンサに関する異質なリソースを有するアクセラレータにリクエストを直接通信するステップと、前記リクエストを前記アクセラレータに係るエキソスケルトンを介し前記アクセラレータに提供するステップと、前記リクエストに応答して、前記アクセラレータにおいて第１機能を、前記第１命令シーケンサにおける第２機能とパラレルに実行するステップとから構成されることを特徴とする方法を提供する。
【０００８】
さらに、本発明は、命令を実行する第１命令シーケンサと、前記第１命令シーケンサに接続されるエキソシーケンサとから構成される装置であって、前記エキソシーケンサは、前記第１命令シーケンサに関して異質なリソースから構成され、前記第１命令シーケンサから受け付けたデータに対して少なくとも１つの処理を実行するアクセラレータと、前記アクセラレータに接続され、前記第１命令シーケンサと前記アクセラレータとの間のシーケンサ間通信をユーザレベル制御の下で可能にするエキソスケルトンとを有することを特徴とする装置を提供する。
【０００９】
さらに、本発明は、マシーンによる実行の際、第１シーケンサにおいて、該第１シーケンサに関して異質なリソースであるヘルパーユニットから、該ヘルパーユニットに接続されるインタフェースを介し信号を受け付けるステップと、オペレーティングシステム（ＯＳ）のサポートなく前記インタフェースにより変換される前記第１シーケンサの第１命令セットアーキテクチャ（ＩＳＡ）のコマンド情報を、前記第１シーケンサから前記インタフェースを介し前記ヘルパーユニットに提供するステップと、前記コマンド情報に応答する前記ヘルパーユニットにおける第１処理とパラレルに、前記第１シーケンサにおいて第２処理を実行するステップとから構成される方法を前記マシーンが実行することを可能にする命令を含むマシーン可読記憶媒体から構成される物品を提供する。
【００１０】
さらに、本発明は、第１命令セットアーキテクチャ（ＩＳＡ）を介し命令を実行する第１シーケンサと、前記第１シーケンサに接続され、前記第１シーケンサとシーケンサ間通信プロトコルを介し通信するインタフェースと、該インタフェースに接続され、前記第１シーケンサに関して非同質的であって、前記インタフェースとプライベートプロトコルを介し通信する計算リソースとを有する第２シーケンサと、前記第１及び第２シーケンサに接続されるＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）とから構成されることを特徴とするシステムを提供する。
【発明の効果】
【００１１】
本発明によると、異質なリソースを有する各命令セットアーキテクチャベースシーケンサの間の効果的な通信を可能にする方法、装置及びシステムを提供することが可能となる。
【図面の簡単な説明】
【００１２】
【図１】図１は、本発明の一実施例によるプロセッサのブロック図である。
【図２】図２は、本発明の一実施例によるシステムの一部のブロック図である。
【図３】図３は、本発明の他の実施例によるシステムの一部のブロック図である。
【図４】図４は、本発明の一実施例によるシステムのブロック図である。
【図５】図５は、本発明の一実施例によるプロセッサにおいて実行される処理に対応する方法のフロー図である。
【図６】図６は、本発明の一実施例によるアクセラレータにおいて実行される処理に対応する方法のフロー図である。
【図７】図７は、本発明の他の実施例によるシステムのブロック図である。
【発明を実施するための形態】
【００１３】
各種実施例において、命令セットアーキテクチャ（ＩＳＡ）ベースのシーケンサ間通信を可能にする機構が提供される。ここで使用される「シーケンサ（ｓｅｑｕｅｎｃｅｒ）とは、独立したスレッド実行リソースであり、スレッドを実行可能な任意の物理又は論理ユニットであるかもしれない。シーケンサは、論理スレッドユニット又は物理スレッドユニットであるかもしれず、与えられたスレッドに対して実行されるべき次の命令を決定するネクスト命令ポインタロジックを有するかもしれない。
【００１４】
より詳細には、ＩＳＡベースシーケンサ間通信は、第１のＩＳＡの第１シーケンサと、異質な性質を有するシーケンサ又は非シーケンサであるかもしれない第２リソースとの間で実現される。すなわち、第２リソースは、異なるＩＳＡのシーケンサであるかもしれず、あるいは、ＦＦＵ（Ｆｉｘｅｄ  Ｆｕｎｃｔｉｏｎ  Ｕｎｉｔ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、他の予めプログラムされたロジックなどの非シーケンサリソースであるかもしれない。各種実施例において、「エキソスケルトン（ｅｘｏ−ｓｋｅｌｅｔｏｎ）」と呼ばれる中間物又はインタフェースは、このような異質なリソースの間の通信を提供するかもしれない。異なる実施例では、エキソスケルトンは、ソフトウェア、ハードウェア及び／又はファームウェアを含む各種形態をとりうる。いくつかの実施例では、エキソスケルトンは、異質なリソースに接続される有限状態マシーン（ＦＳＭ）において実現されるかもしれない。もちろん、他の実現形態もまた可能である。
【００１５】
図１は、本発明の一実施例によるプロセッサのブロック図である。図１に示されるように、プロセッサ１０は各種リソースを有する。異なる実現形態では、プロセッサ１０は、シングルコアプロセッサ又はマルチコアプロセッサであってもよい。このようなプロセッサは、ＣＭＰ（Ｃｈｉｐ  Ｍｕｌｔｉｐｒｏｃｅｓｓｏｒ）システム、ＳＭＴ（Ｓｉｍｕｌｔａｎｅｏｕｓ  Ｍｕｌｔｉｔｈｒｅａｄｉｎｇ）システム又はＳｏｅＭＴ（Ｓｗｉｔｃｈ−ｏｎ−ｅｖｅｎｔ  Ｍｕｌｔｉｔｈｒｅａｄｉｎｇ）システムを含む各種タイプのシステムにより実現可能である。
【００１６】
図１に示されるように、プロセッサ１０は、複数のシーケンサ２０ａ、２０ｂ、２０ｃ及び２０ｄ（すなわち、シーケンサ１−４，一般にはシーケンサ２０）を含む。図１の実施例では４つのシーケンサにより示されているが、本発明の範囲がそれに限定されるものでないということが理解されるべきである。図１に示されるように、プロセッサ１０のシーケンサ２０は、一実施例では、インテル（登録商標）アーキテクチャ（ＩＡ−３２）インストラクション・セット・アーキテクチャ及び／又はそれの６４ビット拡張形（インテル（登録商標）エクステンディッドメモリ６４ビットテクノロジー（ＥＭＴ６４Ｔ）とも呼ばれる）とすることが可能なＩＳＡ３０を実現する。プロセッサ１０はさらに、第１リソース（リソース１）５０ａ、第２リソース（リソース２）５０ｂ及び第３リソース５０ｃ（リソース３）を有する（リソース５０と総称される）。これらのリソースは、プロセッサ１０のＩＳＡ３０を実現しない異質なリソースであるかもしれない。これら３つのリソースを有するように図１の実施例は示されているが、異なる実施例では、異なる個数のリソースが可能である。
【００１７】
各リソース５０は、シーケンサ（ＩＳＡ３０とは異なるＩＳＡを実現可能である）、非シーケンサ処理エンジン又は他の特殊機能ロジックを有し、これらはアクセラレータと総称される。異なる実施例では、異なるタイプのリソースが、アクセラレータとして実現され、グラフィックス処理ユニット（ＧＰＵ）（典型的にはシーケンサ）、暗号化ユニット（典型的には非シーケンサ）、ＦＦＵ（（典型的には非シーケンサ）などが含まれる。図１に示されるように、各リソース５０は、アクセラレータ５２を有し、より詳細には、各々がリソース５０ａ、５０ｂ及び５０ｃの１つに関連付けされるアクセラレータ５２ａ、５２ｂ及び５２ｃを有するかもしれない。アクセラレータ５２はまた、ここではヘルパーユニットとも呼ばれる。リソース５０ａ〜５０ｃは、他のＩＳＡを有するかもしれず、あるいは、非シーケンサであってもよい。またシーケンサ２０に関して異質なものとすることが可能であるため、このようなリソースと通信する機能を提供するため、インタフェースが使用されるようにしてもよい。図１に具体的に示されるように、エキソスケルトン５４ａ、５４ｂ及び５４ｃ（エキソスケルトン５４と総称される）は、各リソース５０に関連付けされるかもしれない。このため、各リソース５０は、「エキソシーケンサ」と呼ばれるかもしれず、それは、エキソスケルトン５４とそれに関連するアクセラレータ５２との密接なつながりを示す。このように、これら異質なリソースは、シーケンサ間通信（及び／又は適用可能である場合には、共有メモリベースアドレッシング）をサポートする統一されたＩＳＡフレームワークにおいて、異質なシーケンサリソースと一体化されるかもしれない。さらに、各種リソースは、各リソースがパフォーマンスを向上させるため同時に利用可能となるように、ＭＩＭＤ（Ｍｕｌｔｉｐｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）形式などパラレル形式により実行されるかもしれない。
【００１８】
しかしながら、他の実施例では、リソース５０は、シーケンサ２０に関して同質なシーケンサリソースであるかもしれず、シーケンサ２０と同一又は類似のアーキテクチャを有するように対称的なコアとすることが可能である。このようにして、コンカレントファイバが実現可能であり、レガシーＯＳスケーラビリティを向上させることが可能である。さらに、他の実現形態では、リソース５０は、非対称コアであってもよい。すなわち、これらのリソースは、シーケンサ２０と同一のＩＳＡを有するが、異なるマイクロアーキテクチャを有するものであってもよい。このような実施例は、非対称性を管理するのに役立ち、レガシーＯＳとの互換性を提供するかもしれない。
【００１９】
異質なリソースを実現する実施例について、一実施例によるエキソスケルトンは、これら異質なリソースが、シーケンサ間通信のための最小限の準拠を実現するため、共通のＩＳＡを有するという錯覚を与えるかもしれない。従って、各種実施例では、異質なリソースは、ユーザレベル機能ユニットリソースとして機能することが可能である（システムレベルデバイスではなく）。すなわち、各種ユーザレベルアプリケーションは、ユーザレベル機能ユニットとなるように、アクセラレータと直接通信及びアクセスするようにしてもよい。このように、各種アクセラレータリソースは、ＩＳＡにより管理される異質なコンポーネントとなることが可能である。
【００２０】
例えば、各エキソシーケンサ又はリソース５０は、アクセラレータ５２がＭＩＭＤリソースなどのユーザレベルの異質な計算リソースとしてアプリケーションプログラムにより直接利用することが可能となるように、シーケンサに類似した「ラッパー（ｗｒａｐｐｅｒ）」エキソスケルトン５４により特定用途計算アクセラレータとして現れるかもしれない。
【００２１】
従って、アプリケーションプログラマーは、ヘルパーユニット自体が必ずしも物理的にＩＳＡ３０を有する必要がなくても、ユーザレベルＩＳＡ３０を直接利用して上記ヘルパーユニット５２をプログラムすることができる。さらに、プログラマーは、統一的なＩＳＡ機構を利用して、各々が異なる「特性」（ＩＳＡ又はデバイス属性に関して）を有する多様な異質なヘルパーユニット群をプログラムすることが可能である。実質的に、本発明の実施例によるエキソシーケンサは、プログラマーがレガシーデバイスドライバのソフトウェアスタックをショートカットすることを可能にする。このため、エキソシーケンサは、ヘルパーユニットに表面的なエキソシーケンサを設け、ヘルパーユニットをプロセッサ又は他のデバイスのシーケンサアウェアなＩＳＡベースのシーケンサ間の処理に参加可能な最小のシーケンサとなるようにするかもしれない。ソフトウェアスタックの観点から、エキソシーケンサによって、アプリケーションプログラム又はユーザランタイムは、アクセラレータをアプリケーションリソースとして、またルーズに結びつけられたＯＳベースのデバイスドライバを利用して、システムレベルリソースとしてアクセラレータを管理する必要なく、アプリケーションバイナリの密接に結びつけされた部分として管理するため、アプリケーションレベルソフトウェアレイヤを提供することが可能である。
【００２２】
さらに、いくつかの実現形態では、１以上のエキソシーケンサは、参加する各ヘルパーユニットが、軽いユーザレベルイベント生成機構を介した非同期シーケンサ間インタラクション又はシーケンサアウェア同期処理を介しメインプロセッサ（すなわち、第１シーケンサ）とやりとりする最小のシーケンサリソースとして構成上利用される明示的なＭＩＭＤマルチシーケンサＩＳＡインタフェースを有するようにしてもよい。ヘルパーユニットと第１シーケンサは、同一のＯＳスレッドと構成上密接に結びつけられていても、メインプロセッサとエキソスケルトンを備えたヘルパーユニットは、２つの独立したＭＩＭＤシーケンサとしてやりとりする。特に、エキソスケルトンインタフェースを介した第１シーケンサとヘルパーユニットの間のデータ及びコントロールのやりとりは、構成上はシーケンサ間のやりとりと等しい。
【００２３】
図１の実施例では特定のリソースにより示されているが、プロセッサ１０は、各々が構成状態のセットを有する複数のハードウェアスレッドコンテクスト（明確さを失うことなく、「スレッドコンテクスト」とも呼ばれ、ソフトウェアスレッドコンテクストと同じものではないことに留意されたい）をサポートすることが可能な１つの物理プロセッサであってもよい。いくつかの実施例では、あるリソースはこれらのスレッドコンテクストに可視的であるが、他のリソースは可視的ではない。従って、図１に示されるように、各シーケンサ２０は、スレッドコンテクストに対応するかもしれない。これらスレッドコンテクストの少なくとも一部が（例えば、ｎ個のうちのｍ個（ｍ≦ｎ）など）、オペレーティングシステムに可視的なものとされるとき、これらのスレッドコンテクストは、場合によっては論理プロセッサ又はＯＳ管理シーケンサとよばれる。各スレッドコンテクストは、それぞれアーキテクチャ状態ＡＳ１〜ＡＳｎを維持する。アーキテクチャ状態は、例えば、データレジスタ、セグメントレジスタ、コントロールレジスタ、デバッグレジスタ及びモデルに固有のレジスタの大部分を有する。スレッドコンテクストは、キャッシュ、実行ユニット、ブランチプレディクタ（ｂｒａｎｃｈ  ｐｒｅｄｉｃｔｏｒ）、コントロールロジック、バスなどの物理プロセッサの大部分のマイクロアーキテクチャリソースを共有するかもしれない。このような特徴は共有可能であるが、プロセッサ１０の各スレッドコンテクストは、次の命令アドレスを独立に生成することが可能である（及び、例えば、命令キャッシュ、実行命令キャッシュ又はトレースキャッシュからのフェッチを実行する）。スレッドコンテクストに対応する各シーケンサ２０は、対応するアーキテクチャ状態４０に関連付けされる。より詳細には、アーキテクチャ状態（ＡＳ１）４０ａはシーケンサ２０ａに関連付けされ、ＡＳ２はシーケンサ２０ｂに関連付けされ、ＡＳ３はシーケンサ２０ｃに関連付けされ、ＡＳ４はシーケンサ２０ｄに関連付けされてもよい。
【００２４】
プロセッサ１０又は同様のプロセッサを利用して、ＩＳＡベースシーケンサ間通信は、ＯＳに関係することなく行うことが可能である。例えば、共有メモリマルチプロセッシングパラダイムでは、アプリケーションプログラマーは、並列化を表すため、ソフトウェアプログラム（すなわち、アプリケーション又はプロセス）を同時に実行される複数のタスクに分割するかもしれない。同一のソフトウェアプログラム（プロセス）のすべてのスレッドは、メモリアドレススペースの共通の論理的視点を共有する。しかしながら、ＯＳスレッドは、オペレーティングシステムによって生成、スケジューリング又は管理されない複数のユーザレベルスレッドと関連付けされてもよい。このようなユーザレベルスレッドは、ＯＳスレッドと区別するため、「シュレッド（ｓｈｒｅｄ）」と呼ばれるかもしれない。これらのシュレッドは、ＯＳスケジューラには可視的ではないかもしれず、このため、ＯＳは、関連するＯＳスレッドが割り当てられた論理シーケンサアドレス上で実行されるようシュレッドをスケジューリングする時点又は方法を管理しない。ＯＳシュレッド自体は、通常はそれのシュレッドの１つを実行する時点及び方法をスケジューリングするためのものである。
【００２５】
ＩＳＡベースシーケンサ間通信に対する構成上のサポートは、ユーザがシーケンサ間のコントロールと状態の転送を直接操作することが可能となるように、１以上の命令が提供されるようＩＳＡに対する拡張形を有するようにしてもよく、これは、いわゆるシーケンサアウェア（ｓｅｑｕｅｎｃｅｒ−ａｗａｒｅ）又はシーケンサアリスマティック（ｓｅｑｕｅｎｃｅｒ−ａｒｉｔｈｍｅｔｉｃ）命令であるかもしれない。このような命令は、他の（すなわち、第２の）シーケンサに通知するため第１シーケンサを提供するか（ここでは、命令は、出力シナリオと呼ばれる出力制御情報を送信し、またデータペイロードを搬送するシュレッド転送又は“ＳＸＦＲ”命令と呼ばれる）、又はこのような信号をモニタするため、第２シーケンサをセットアップし（ここでは、シュレッドモニタ又は“ＳＥＭＯＮＩＴＯＲ”命令と呼ばれる）、信号（入力シナリオと呼ばれる）を非同期的に受信すると、ハンドラに対する制御転送を実行する命令を含むかもしれない。
【００２６】
シーケンサアウェア命令はまた、シーケンサアウェア状態セーブ及びリストア命令など他の命令を含むかもしれない。このような状態セーブ命令を実行すると、第１シーケンサは、第２シーケンサのアーキテクチャ状態のスナップショットコピーを生成することが可能である。シーケンサアウェアリストア命令は、セーブされたアーキテクチャ状態が指定されたシーケンサにロードされることを指定するかもしれない。
【００２７】
少なくとも１つの実施例では、１以上のシーケンサアウェア命令は、ＯＳスレッドに属するシュレッドにプログラマーによってコード化されるかもしれない。ＯＳスレッドの処理中に実行されるとき、このような命令は、ＯＳスケジューリングロジックの介入なく、シュレッドに対する生成、制御、転送、コンテクストセーブ、コンテクストリストア又は他の処理を行わせるかもしれない。
【００２８】
このようにして、一実施例によるＩＳＡベースシーケンサ間通信は、オーバーヘッドを低減し、パフォーマンスを向上させる。同一のＩＳＡのシーケンサ間の通信に加えて、各種実施例では、例えば、本発明の実施例によるエキソスケルトンなどを介し、異質なシーケンサ間、又はシーケンサと非シーケンサ間のＩＳＡベースシーケンサ間通信が行われるかもしれない。
【００２９】
図２は、本発明の一実施例によるシステムの一部のブロック図である。図２に示されるように、システム１００は、シーケンサ１１０とアクセラレータ１３０を有する。アクセラレータ１３０は、異なる実施例では異なる形式をとりうるものであるが、説明のため、アクセラレータ１３０はシーケンサ１１０には異質な性質を有するものであると仮定される。すなわち、アクセラレータ１３０は、異なるＩＳＡを有してもよく、また非シーケンサであってもよい。しかしながら、各種実施例では、シーケンサ１１０とアクセラレータ１３０は、１つの基板上に実現されてもよい（例えば、マルチコアプロセッサの一部として）。あるいは、シーケンサ１１０とアクセラレータ１３０は、集積回路（ＩＣ）内部の異なるシリコン部分により、パッケージ又はマザーボード上に配置されるなどの異なるＩＣにより、又は他の方法により実現されてもよい。
【００３０】
ＩＳＡベースシーケンサ間通信を可能にするため、エキソスケルトン１２０が、アクセラレータ１３０に接続されるようにしてもよい。エキソスケルトン１２０とアクセラレータ１３０は、何れもエキソシーケンサ１３５と呼ばれるかもしれない。アクセラレータ１３０が異質なＩＳＡ又は非シーケンサを有する実施例では、アクセラレータ１３０がシーケンサ間通信に参加することが可能となるように、有限マシーン（ＦＳＭ）又は可視化レイヤであるかもしれないエキソスケルトン１２０が実現されるかもしれない（具体的な実施例に応じて、ハードウェア、ファームウェア又はソフトウェアにより）。このようなＩＳＡベースシーケンサ間通信は、エキソシーケンサのアーキテクチャ状態に対するＧＥＴ及び／又はＳＥＴ命令を含む、ＳＸＦＲによって他のシーケンサ又はエキソシーケンサから送信される入力シナリオをモニタし、それに応答するように、アクセラレータ１３０への入力方向への通知プロトコルを提供する。さらに、この通知プロトコルは、ページフォルトなどのイベントに対するプロキシ実行リクエストなどの例外処理に対する指示を含む出力シナリオによるアクセラレータ１３０から信号シーケンサ１１０からの出力通信を含む。さらに、いくつかの実施例では、エキソスケルトン１２０を介したアクセラレータ１３０は、シーケンサ１１０又は他のリソースからのクエリに応答して、エキソスケルトン１２０がより効果的な利用を可能にするため、アクセラレータ１３０の能力に関する情報を通信することが可能となるように、能力レポート指向通信動作に参加するようにしてもよい。
【００３１】
図２に示されるように、エキソスケルトン１２０は、アクセラレータ１３０と密接に結びつけられているかもしれない。図２にさらに示されるように、システム１００は、シュレッド、すなわち、ユーザレベルスレッドを管理及びスケジューリングするため、シュレッドライブラリ１５０として示されるユーザレベルランタイムソフトウェアレイヤを有する。異なる実現形態では、シュレッドライブラリ１５０は、シーケンサ１１０などのシーケンサに対するシュレッドをサポート及び管理する処理を実現するかもしれない。例えば、シュレッドライブラリ１５０は、シュレッドスケジューリング、シュレッドコンテクストセーブ、スイッチ及びリストアなどを管理するかもしれない。このようにして、ＯＳ１９０がこれらの処理に関与しないため、より小さなオーバーヘッドしか消費しない。
【００３２】
ユーザアプリケーション１６０は、システム１００内で実行し、特殊又は計算量の大きな機能の実行をリクエストするかもしれない。パフォーマンスの向上を可能にするため、特にＭＩＭＤ又はパラレル環境では、アクセラレータ１３０が、アプリケーションの他の有用な作業（又は。シーケンサ１１０によって実行されるべき他のシュレッド）をシーケンサ１１０が実行するのと並行して機能を実行するように、ユーザアプリケーション１６０は、シーケンサ１１０がアクセラレータ１３０と通信することをリクエストするかもしれない。このようにして、シーケンサ１１０とアクセラレータ１３０がアプリケーションスレッドの各部分とパラレルにシュレッドとして実行するため、実行が向上する。従って、本発明の実施例を利用して、シーケンサ１１０の制御フローは、エキソシーケンサ上で実行される特定用途の計算とパラレル及び非同期的に実行することが可能となり、これにより、独立したシュレッドとして効果的に実行されることとなる。
【００３３】
オーバーヘッドを低減するため、シーケンサアウェア命令を介したシーケンサ１１０とエキソシーケンサ１３５の間のＩＳＡベースシーケンサ間通信は、ＯＳ１９０の関与を要求しないかもしれない。このように、ＯＳ１９０のデバイスドライバスタックを回避することができ、代わりに、シーケンサ１１０とエキソシーケンサ１３５の間の直接的な通信を実行することができる。従って、図２に示されるように、一実施例では、ＩＳＡベースシーケンサ間通信は、シーケンサアウェア命令を介しシーケンス１１０とエキソスケルトン１２０との間で直接実行されるかもしれない。ユーザアプリケーションであるかもしれないアプリケーションコード１６０は、シュレッドランタイムライブラリ１５０を介しこのようなＩＳＡベースシーケンサ間通信を利用することが可能である。最小のＯＳレイヤ１４０は、ＯＳスレッドのコンテクストセーブ及びコンテクストリストア処理をサポートする。ＯＳスレッドがＯＳにより管理されるシーケンサに対してコンテクストセーブ又はコンテクストリストア処理を実行すると、このＯＳ管理シーケンサに係るすべてのアプリケーション管理シーケンサとエキソシーケンサとに対するコンテクストが、セーブ及びリストアされる。ＯＳは、ＯＳスレッドコンテクストスイッチ上で上記状態をセーブするため、ＯＳスレッド毎に十分なセーブエリアを提供するかもしれない。ＩＳＡベースシーケンサ間通信は、エキソシーケンサ１３５により提供及び動作可能となるように、変換されるかもしれない。同様の通信フローが、逆方向について行われるかもしれない。少なくとも１つの実施例では、ＯＳスレッドコンテクストスイッチにより、各シーケンサ又はエキソシーケンサにおけるコンテクストセーブ及びリストアは、同一のＯＳスレッドにおける他のシーケンサ／エキソシーケンサとパラレルに、各シーケンサ又はエキソシーケンサによって実行可能である。このようなパラレルな実現形態は、セーブ及びリストア処理の全体的なパフォーマンスを向上させるかもしれない。
【００３４】
図２の実施例では、１つのシーケンサ１１０を有するものとして示されているが、本発明の範囲はこれに限定されるものではなく、他の実施例では、マルチシーケンサシステムを提供することが可能であるということは理解されるであろう。このようなシステムでは、エキソスケルトン１２０はさらに、単独の物理アクセラレータ１３０が複数のシーケンサにより関連付けされるように、バーチャル化機能を実現するようにしてもよい。従って、エキソスケルトン１２０は、各々が論理エキソシーケンサに接続される各種シーケンサに対するアクセラレータ１３０のアーキテクチャ状態の複数のコピーを複数のコンテクストが格納するためのストレージを実現するようにしてもよい。エキソスケルトン１２０は、アクセラレータ１３０を利用する各種シーケンサのシーケンス処理又は多重化を提供すると共に、コンテクスト状態のセーブ及びリストアを可能にするロジックを有するようにしてもよい。このように、アクセラレータ１３０は、システムの複数のシーケンサにサービスを提供するかもしれない。少なくとも１つの実施例では、エキソスケルトンは、ＳｏｅＭＴ（Ｓｗｉｔｃｈ−ｏｎ−ｅｖｅｎｔ  Ｍｕｌｔｉｔｈｒｅａｄｉｎｇ）を介し複数の論理エキソシーケンサを実現することが可能である。このような実施例では、論理エキソシーケンサコンテクストは、直接的なオンチップレジスタファイル又は専用スクラッチメモリとして実現することが可能であり、エキソシーケンサコンテクストスイッチ条件は、マイクロコードなどロジック又はファームウェアにより実現することが可能である。少なくとも他の実施例では、独立した物理エキソシーケンサが、各シーケンサに対して実現可能である。この実施例では、複数の物理エキソシーケンサが、ＳＭＴ（Ｓｉｍｕｌｔａｎｅｏｕｓ  Ｍｕｌｔｉｔｈｒｅａｄｉｎｇ）又はＣＭＰシステムとして実現可能である。
【００３５】
図２に示されるものなどの実施例は、アクセラレータがシーケンサ及び／又は残りのシステムと同じＩＳＡを有しないとき、又はアクセラレータが非シーケンサである場合に利用可能である。このような実施例では、図２に示されるデータフローは、ＯＳ１９０の関与なしに、シーケンサ１１０とアクセラレータ１３０との間の効率的なＩＳＡベースシーケンサ間通信を提供する。
【００３６】
しかしながら、他の実現形態では、アクセラレータは、シーケンサ又はシステムの他の部分と共通のＩＳＡを有するようにしてもよい。さらに、いくつかの実現形態では、アクセラレータは、システムの残りと密接に構成されるようにしてもよい。例えば、いくつかの実現形態では、アクセラレータは、特殊処理を実行するよう構成されるシステムコンポーネントであってもよい。しかしながら、与えられたシステムコンフィギュレーションでは、コンポーネントは、周辺装置又はアドイン装置などの他のコンポーネントを優先して、イネーブル解除されるか、又は最小限の使用に止められるかもしれない。例えば、統合されたグラフィックス処理ユニット（ＧＰＵ）は、システムマザーボード上のチップセットの一部（グラフィックス・メモリ・コントローラ・ハブ（ＧＭＣＨ）など）として実現されるかもしれない。しかしながら、あるシステムコンフィギュレーションでは、各アドイングラフィックスカードはまた、マザーボードへのプラグイン（ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）スロットなど）として構成される。このような例では、統合されたＧＰＵは、イネーブル解除され、そうでない場合には利用されない。同様に、ＧＰＵ又は他のこのようなコンポーネントは、その一部があるシステムコンフィギュレーションでは自由に利用されない複数の処理エンジンを有するかもしれない。
【００３７】
このような実現形態では、これらのイネーブル解除又は使用が最小限に止められた処理リソースは、本発明の実施例によるアクセラレータとして構成されるかもしれない。図３は、シーケンサ２１０とアクセラレータ２３０とを有するシステム２００の一部のブロック図である。図３の実施例では、アクセラレータ２３０は、第１部分２３２と第２部分２３４とを有するかもしれない。第１部分２３２は、エキソシーケンサとして動作するよう構成され、第２部分２３４は、通常のＯＳ制御の下、特殊グラフィックス又はメディア機能などの各種機能を実行するよう構成されるかもしれない。従って、図３に示されるように、第２部分２３４は、デバイスドライバスタック２９５とのＯＳアプリケーションプログラミングインタフェース（ＡＰＩ）を介しＯＳベース実行モデルのアプリケーション２６０と通信可能となるように、ＯＳ２９０のデバイスドライバスタック２９５と接続される。このように、第２部分２３４は、従来のＯＳ通信ルートを介しアプリケーション２６０のリクエストの下、処理機能を実行することが可能である。
【００３８】
他方、第１部分２３２は、エキソスケルトン２２０を介しシーケンサ２１０と直接通信するよう構成される。エキソスケルトン２２０は、第１部分２３２とシーケンサ２１０との間のＩＳＡベース通信を可能にするため、ハードウェア、ソフトウェア又はこれらの組み合わせとしてもよい。従って、ユーザレベルアプリケーション２５６は、エキソスケルトン２２０を介しシーケンサ２１０と第１部分２３２との間の通信のため、ＩＳＡベースシーケンサ命令を利用可能である。典型的には、ユーザレベルシュレッドライブラリ２５０が利用可能であり、ＯＳサポート２４０の最小のレイヤが、上述されるように、ＯＳスレッドコンテクストセーブ及びリストア処理をサポートするのに利用される。
【００３９】
従って、図３の実施例では、２つのソフトウェアスタック、すなわち、本発明の実施例によるＯＳドライバスタックとユーザレベルランタイムスタックが共に存在するかもしれない。アクセラレータ２３０のリソースシェアリングを提供することによって、レガシーベースアプリケーション（ＯＳデバイスドライバモデルを利用するなど）とＩＳＡベースシーケンサ間通信を介し最小のオーバーヘッドを提供するユーザレベルアプリケーションの両方が、アクセラレータ２３０のリソースを利用可能にするため、パフォーマンスが向上する。いくつかの実現形態では、エキソスケルトン２２０は、アプリケーション２５６と２６０が共にアクセラレータ２３０のフルリソース（アプリケーションに可視的なものとして）の所有権を有していると信じるように、アクセラレータ２３０に関するバーチャル化タスクを実行可能である。従って、異なる実施例では、エキソスケルトン２２０は、アクセラレータ２３０に対するアーキテクチャ状態の複数のコンテクストを提供し、ＳｏｅＭＴと同様の条件の下でコンテクストスイッチをサポートすることを含むバーチャル化タスクを実行するようにしてもよい。
【００４０】
また、アクセラレータ２３０における機能の一部は、ＯＳ２９０を介しレガシーアプリケーションに関連付けされ、機能の他の部分は、本発明の実施例によるＩＳＡベースシーケンサ間通信プロトコルを介しユーザレベルアプリケーションに関連付けされてもよい。従って、アクセラレータ２３０の物理リソースは、これら２つの独立したパラダイムの共存をサポートするかもしれない。
【００４１】
図４は、本発明の一実施例によるシステムのブロック図である。図４に示されるように、システム３００は、ＧＭＣＨ３２０に接続されるプロセッサ（シーケンサなど）３１０を有し、さらにＧＭＣＨ３２０は、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などのメモリ３３０に接続される。さらに、ＧＭＣＨ３２０は、ディスプレイ（フラットパネルディスプレイなど）に接続される。ＧＭＣＨ３２０は、一体化されたグラフィックスアクセラレータを有するかもしれない。ＧＭＣＨ３２０はさらに、各種周辺装置とシステム３００とを接続するのに利用可能な入出力（Ｉ／Ｏ）コントローラハブ（ＩＣＨ）３５０に接続される。図４の実施例では、他の周辺装置３７０と共にＩＣＨ３５０に接続される独立したグラフィックスデバイスである外部グラフィックスデバイス３６０が示される。
【００４２】
システム３００は、独立した外部グラフィックスデバイス３６０により構成されるため、ＧＭＣＨ３２０内部の一体化されたグラフィックスは、イネーブル解除されるかもしれない。例えば、システムのＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）は、ディスエーブル（ｄｉｓａｂｌｅ）ビットをプログラムするかもしれず、又は、他の機構が、ＧＭＣＨ３２０のグラフィックス機能をイネーブル解除するかもしれない。そうでない場合には、ＧＭＣＨ３２０のグラフィックス処理に利用されるアイドル状態の処理リソースが、本発明の実施例によるアクセラレータに変換されるかもしれない。従って、リソースは、例えば、ユーザレベルアプリケーションを介し、ＯＳの関与を必要とすることなく、各種機能を実現するのに利用可能である。このように、特にＧＭＣＨ３２０のグラフィックスリソースによる処理が、プロセッサ３１０のシーケンサにおけるタスクとパラレルに（例えば、ＭＩＭＤ形式などにより）実行される場合、パフォーマンスの向上を図ることができる。
【００４３】
いくつかの実施例では、ＧＭＣＨ３２０の一体化されたグラフィックスのグラフィックス機能のエキソシーケンサは、直交機能を実行するため各種グラフィックス処理ユニットを有するかもしれない。上記処理リソースの１以上が、システム３００のＯＳに係る１以上のメディアデバイスドライバの関与なく、システム３００内のメディア処理を実現するように、ＩＳＡベースメディアアクセラレータエキソシーケンサとして構成されるかもしれない。このように、デジタルメディアの符号化及び復号化などのメディア処理は、プロセッサ３１０の最小限の関与と、さらにＯＳのデバイスドライバスタックのオーハーヘッドを被ることなく、システム３００において実行可能である。
【００４４】
シーケンサなどの各種実施例では、エキソシーケンサは、アプリケーションレベルアーキテクチャリソースの形式をとり、このため、シーケンサアウェアユーザレベル処理において利用するため、一意的かつバーチャル化可能なネームスペースを有するかもしれない。従って、シーケンサ間通信は、ＯＳの介入なくユーザレベルにおいて完全に実行可能である。シーケンサのバーチャル化により、論理エキソシーケンサアーキテクチャリソースは、物理リソースの個数が論理リソースの個数と同一である必要がない場合、レジスタリネーム及びメモリバーチャル化と同様の方法により管理することが可能である。さらに、アーキテクチャ、マイクロアーキテクチャ、熱、電力消費などの各特性を含む各種メリットのマトリックスのスペクトルに関して、物理リソース間の様々な相違が存在しうる。これらの相違は、エキソシーケンサリソースの中の非対称性及び異質性として効果的に明らかとなる。さらに、バーチャルにアドレッサブルなリソースとして、エキソシーケンサリソースはまた、バーチャルシーケンサアドレスのビットが、エキソシーケンサリソースの同期又は非同期アクセス制御を管理するため、物理シーケンサに固有の機能を表すのにハードウェア、ファームウェア及びソフトウェアのアブストラクションレイヤにより利用可能な機能ベース管理を受ける可能性がある。
【００４５】
少なくとも１つの実施例では、エキソシーケンサは、第１シーケンサからの以下の２つの標準的な入力シナリオ、すなわち、第１シーケンサがＳＸＦＲを用いてエキソシーケンサにローカルな状態を読み／保持するためのＧＥＴシナリオを送信することが可能なＧＥＴ入力シナリオと、第１シーケンサがＳＸＦＲを用いてエキソシーケンサにローカルな状態を書き／更新するためのＳＥＴシナリオを送信することが可能なＳＥＴ入力シナリオとに対するレスポンスを提供することによって、最小のシーケンサ間交換プロトコルをサポートするかもしれない。さらに、エキソシーケンサは、ＮＯＴＩＦＹ出力シナリオとＳＸＦＲを利用して、完了、進行又は例外状態の非同期的なイベント通知を実行するため、第１シーケンサにＮＯＴＩＦＹシナリオを送信することが可能である。第１シーケンサのためにプロキシ実行モードによりアクセラレータを動作させるＰＲＯＸＹシナリオは、ＮＯＴＩＦＹ出力シナリオの特別な形式である。
【００４６】
この最小状態通知及び更新機能によって、第１シーケンサは、データ及び制御状態を操作するため（個別に又はまとめて）、ハイレベル制御メッセージを構成することが可能である。特に、各種複合状態のアクセスが構成可能である。例えば、コンテクストセーブ／リストアを利用して、第１シーケンサは、ＳＸＦＲを繰り返し利用して、コンテクストスイッチを介しセーブ／リストアされるよう状態セットを読み又は更新することが可能であり、あるいは他の実施例では、第１シーケンサは、１つのＳＸＦＲを利用して、エキソシーケンサが複数の状態においてローカルに繰り返す状態の一部を読み及び更新することが可能である。さらに、第１シーケンサは、ＳＸＦＲを利用して、状態、関連する属性（ライト、リードなど）、フォーマットなどを含むコンフィギュレーション（すなわち、機能列挙）をクエリすることが可能である。このようにして、従来はシーケンサでなく、又はＯＳベースデバイスドライバを有しない汎用プロセッサより動作可能でない一体化されたデバイスの特別なクラスが、あたかもそれらがプロセッサの機能ユニットであり、その状態がＯＳスレッドコンクキストスイッチを介しＯＳスレッドコンテクストセーブ及びリストアを受けるかのように、特定のアプリケーションによって所望されるようにバーチャル化されるかもしれない。
【００４７】
一実施例では、シーケンサタイプであって、第１シーケンサと異なるＩＳＡを有するヘルパーユニットが、それのプライベートＩＳＡを利用して、第１シーケンサに対して構成上規定される入力及び出力シナリオを介し通信するため、エキソスケルトン有限状態マシーン（ＦＳＭ）を実現することが可能である。このように、ヘルパーユニットは、それのプライベートなＩＳＡを利用して、ヘルパーユニットハードウェア自体が処理を直接サポートしなくても、第１シーケンサによってリクエストされた処理に応答して、各種アルゴリズムを実現することを選択可能である。このシーケンサＦＳＭの実現形態は、何れかの物理インターコネクト又はインタフェースにより実行可能である、インターコネクト上のこれら２つの装置は、互いに通信するかもしれず、この信号は、論理的又は構成上、第１シーケンサ上のユーザレベルイベントとして、そしてＦＳＭへのトリガー入力としてローカルに受信及び変換されるようにしてもよい。一実施例では、クエリ関連のコンテクストセーブ／リストア入出力シナリオの対象となるエキソシーケンサの状態は、ヘルパーユニットのもとの状態の一部（又はすべて）であるかもしれない。この場合、ヘルパーユニットのプライベートＩＳＡのエキソスケルトンコードは、第１シーケンサのシーケンサアウェア処理をサポートするようファームウェアにより実現されるマイクロコードルーチンのように動作する。
【００４８】
他の実施例では、第１シーケンサと同一のＩＳＡの隔離されたシーケンサが、ヘルパーユニットの代わりに最小のＦＳＭを実現するため、エキソスケルトンとして利用可能である。エキソシーケンサとヘルパーユニットの間のプライベートプロトコルは、必ずしも本来のＩＳＡに準拠している必要はないが、エキソスケルトンが第１シーケンサに自らとヘルパーユニットの集められた状態を提供するように（すなわち、異なるＩＳＡを有する）、第１シーケンサはエキソスケルトンとやりとりすることが可能となる。ヘルパーユニットの状態は、エキソスケルトンシーケンサによって、エキソシーケンサの集められた状態に１：１又はＭ：１（ただし、Ｍ＞１）の変換が可能である。再び、第１シーケンサのシーケンサ間処理をサポートするため、ＦＳＭを実現するコードシーケンスは、ヘルパーユニットハードウェアのマイクロコードベース制御と同様である。
【００４９】
他の例では、エキソシーケンサは、Ｉ／Ｏロジックを備えた特別なＡＳＩＣブロックなど、何れのビルトイン制御シーケンシング（何れかのＩＳＡを有する）も有しない回線処理された「固定機能」ヘルパーデバイスを有するようにしてもよい。このようなヘルパーユニットについて、少なくとも１つの実施例では、エキソスケルトンは、固定機能ユニットに付属されるプロキシＦＳＭを介し構成可能である。最小のシーケンサ状態の列挙及びクエリインタフェースは、ＡＳＩＣへの物理アクセスを有するエキソスケルトンＦＳＭにより実現可能である。公開されたＡＳＩＣ状態は、エキソスケルトンシーケンサ状態に１：１又はＭ：１の変換が可能であり、エキソスケルトンＦＳＭにより実現可能である。ＦＳＭロジックは、ＡＳＩＣブロックとのインタフェースとして物理的に実現されてもよい。他の実施例では、エキソスケルトンＦＳＭは、プログラマブルマイクロコントローラシーケンサ又は配線処理されたＡＳＩＣブロックとすることが可能であるが、入力シナリオを入手し、出力シナリオを発信することが可能である。
【００５０】
一実施例では、第１シーケンサと同一のＩＳＡの隔離されたシーケンサが、エキソスケルトンＦＳＭを実現するのに動作可能であり、エキソスケルトンシーケンサは、ＡＳＩＣ状態への物理的アクセスを有し、エキソシーケンサとしての自らの状態に加えて、ＡＳＩＣ状態を論理的／構成的に集めるようにしてもよい。他の実施例では、第１シーケンサと異なるＩＳＡのシーケンサが、エキソスケルトンＦＳＭを実現するよう動作可能である。
【００５１】
何れのケースでも、エキソスケルトンシーケンサの隔離は、与えられたヘルパーユニットに静的に専用とされる物理シーケンサを確保することによって物理的に行うことが可能であり、又は各々が一意的なヘルパーユニットに論理的に関連する複数の論理的に隔離されたシーケンサとして動的に多重化されることも可能である。すなわち、エキソスケルトンシーケンサは、シーケンサアドレスバーチャル化のための何れか所望されるスキームを介したバーチャル化されたシーケンサとすることが可能である。
【００５２】
一実施例では、アクセラレータは、第１シーケンサに関する非コヒーレントなスクラッチパッドメモリを有することが可能である。このようなヘルパーユニットをエキソシーケンサにするため、非コヒーレントなスクラッチパッド状態が、エキソシーケンサの「公開された」（すなわち、リスト可能な）集められた状態の一部として変換可能である。スクラッチメモリサイズが十分大きい場合、エキソスケルトンは、対応するエキソシーケンサ状態の一部としてスクラッチ状態の限られた部分（状態数が０であることを含む）のみを対象とすることが可能である。例えば、アクセラレータが１キロバイト（Ｋｂ）長のデータフレームを処理可能であっても、エキソシーケンサは、セーブ／リストアされるべき２５６バイトのバッファ状態を有するものとしてアクセラレータを公表するかもしれない。
【００５３】
第１シーケンサとの間でデータを転送するためのＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）プロトコルを利用するヘルパーユニットデバイスについて、一実施例では、ヘルパーユニットとエキソスケルトンとの間のプライベートプロトコルは、処理されていないＤＭＡベースのものに維持することが可能であり、エキソシーケンサは、第１シーケンサにヘルパーユニットデバイスに対するＤＭＡコンフィギュレーション状態とエキソスケルトンの集められた状態を提供することが可能である。このとき、エキソスケルトンに関するＤＭＡコンフィギュレーションとエキソシーケンサ「列挙／実現」ＦＳＭ状態は、コンテクストセーブ／リストアを受けることが可能である（及びＯＳコンテクストスイッチを介しバーチャル化可能である）。しかしながら、第１シーケンサは、特定の実現形態であるＤＭＡコンフィギュレーション情報の何れも構成的に認識している必要はない。
【００５４】
他の実施例では、エキソシーケンサ（ユーザレベルアーキテクチャリソースとしてなど）及びシステムレベル（優先レベルなど）デバイスリソースは、実際には、共通の物理的構成ブロックリソースを共有することが可能である。公表されたエキソシーケンサに対する論理状態は、システムレベル論理デバイスによってリード／ライトコマンドを介しアクセス可能な構成ブロックにおいて、同一の物理状態にリネームすることが可能である。物理ヘルパーユニットの内部では、リソースの分割は、静的又は動的に管理可能であり、ユーザレベルエキソシーケンサとシステムレベルデバイスの両方に対してＩＳＡに透過とすることが可能である。
【００５５】
あるサーバプラットフォームには、ネットワークスタック計算をスピードアップするための暗号化／解読アクセラレータが設けられる。これらの暗号化エンジンは、通常は暗号化アクセラレータを制御するためのプログラマブルマイクロエンジンを有するネットワークプロセッサと物理的に接続されている。例えば、暗号化エンジンは、ハッシュテーブル計算における利用など、乱数生成装置又は擬似乱数生成装置を有するかもしれない。このような実現形態では、プロセッサマイクロエンジンは、エキソシーケンサとなるように、暗号化エンジンと接続されるエキソスケルトンＦＳＭとして再プログラムされるかもしれない。
【００５６】
一実施例では、隔離されたアクセラレータは、ＶＭＸ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  ｅＸｔｅｎｓｉｏｎ）ベースのエミュレータのバーチャル・マシーン・モニタ（ＶＭＭ）を介しエミュレートすることが可能である。コンテクストセーブ／リストアを含む状態アクセス及び更新に対する入出力シナリオは、エキソシーケンサの集められた状態としてさらなるアーキテクチャ状態によるシーケンサのエミュレーションの先頭に実現されるかもしれない。エキソシーケンサから第１シーケンサへの非同期的なＮＯＴＩＦＹ通知は、ＰＲＯＸＹシナリオとして実現されるかもしれない。
【００５７】
エキソスケルトンを介し、各種シーケンサ間の計算プリミティブを表すことが可能なさらなる入力シナリオが、エキソシーケンサＦＳＭエミュレータを介しエミュレート又は通過可能であり、計算を促進するため、隔離されたそのままの物理リソースに配信可能である。効果的に、ヘルパーユニットのそのままの計算リソースの一部は、それらがユーザレベルＭＩＭＤシーケンサアーキテクチャリソースであるかのように、アプリケーションプログラムにより利用可能である。
【００５８】
図５は、本発明の一実施例による方法のフロー図である。図５に示されるように、方法４００は、プロセッサコアなどのシーケンサにより実現されるかもしれない。図５に示されるように、方法４００は、アクセラレータからの信号のモニタリングをスタートするスタートモニタ（ＳＥＭＯＮＩＴＯＲ命令など）を実行することにより開始され、当該信号をシーケンサのイベントハンドラと関連付ける（ブロック４０５）。具体的には、このような信号は、アクセラレータからのメッセージを示す識別又は通知信号であるかもしれない。アクセラレータは、異なるＩＳＡを有する命令シーケンサに関する異質なリソース又は非シーケンサであるかもしれない。従って、命令シーケンサとアクセラレータとの間の通信は、エキソスケルトンを介するものであるかもしれない。従って、アクセラレータから受信する信号は、エキソスケルトンを介しシーケンサにより受信されるかもしれない。
【００５９】
ユーザレベルアプリケーションによる処理を実行するようアクセラレータを構成及び可能にするため、アプリケーションにより使用されるアーキテクチャリソースは、ＳＸＦＲなどを介しアクセラレータに転送されるかもしれない（ブロック４１０）。例えば、命令シーケンサは、レジスタ値に対応するシュレッドアーキテクチャ状態についての各種情報、コンフィギュレーション情報などをエキソスケルトンを介し転送するかもしれない。
【００６０】
次に、命令シーケンサは、アクセラレータがユーザレベルアプリケーションのため１以上の処理を実行することが可能となるように、アクセラレータに対するコマンド情報を準備するようにしてもよい（ブロック４１５）。例えば、命令シーケンサは、当該データに対して適用されるアクセラレータ及び／又は特定のアクセラレーション機能によって操作又は処理されるべきデータを有するコマンド情報を準備するようにしてもよい。このとき、当該コマンド情報は、ＳＸＦＲ命令の利用を含むなど、シーケンサ間プロトコルを介し通信されるかもしれない（ブロック４２０）。より詳細には、当該プロトコルは、命令シーケンサのＩＳＡを有するものであるかもしれない。この情報は、基礎となるデータがアクセラレータにわたすことが可能となるように、プロトコルを変換可能なエキソスケルトンに当該プロトコルを利用して直接通信されるかもしれない。
【００６１】
各種実施例において、このようなシーケンス間プロトコル通信を実現する各種方法が実行可能である。例えば、いくつかの実施例では、通信は、命令シーケンサとアクセラレータとの間の共有メモリバッファであるかもしれないバッファに格納された各作業要素に対する１以上の命令を有するかもしれない。他の実施例では、最小のコマンド情報が、命令ポインタ（ＩＰ）などの命令シーケンサから、アクセラレータ上で実行されることが所望されるコードセグメントに送信されてもよい。このとき、アクセラレータ自体がシーケンサであると仮定すると、アクセラレータは、指定された位置からコードをフェッチする処理を実現するかもしれない。コマンド情報が送信される粒度もまた、可変的なものとすることが可能である。例えば、コマンド情報は、異なる実施例では、コマンド毎に又はより大きな粒度により送信されるかもしれない。さらなる他の実施例では、第１シーケンサは、エキソスケルトンを介しメモリを通過することなく、ネーティブコマンドをアクセラレータに送信可能であり、その後、アクセラレータは、当該コマンドを直接実行することが可能である。
【００６２】
さらに図５を参照するに、次に命令シーケンサは、命令シーケンサのコマンドの下、アクセラレータの処理とパラレルに直交（独立したものなど）処理を実行するかもしれない（ブロック４２５）。すなわち、いくつかの実施例では、ＭＩＭＤ処理などのパラレル処理は、命令シーケンサとアクセラレータの両方が有用な作業をパラレルに実行可能となるように実行されてもよい。このように、命令シーケンサは、アクセラレータからの結果を待機する必要なく、その代わりに他の有用な作業を実行することが可能となる。もちろん、命令シーケンサは、関連する処理をパラレルに実行するようにしてもよい。
【００６３】
次に、命令シーケンサがアクセラレータからイベントを受信したか判断されるかもしれない（ブロック４３０）。このようなイベントは、アクセラレータにおけるタスクの状態又は完了を示す通知又は他のメッセージの形式を有するかもしれない。この判断は同期的なポーリングを介したものである必要はなく、この通知は非同期的及びイベントドリブンであってもよく、従って、非ポーリングベースであってもよいということに留意されたい。このようなイベントが４３０において受信されない場合、上述したように、コントロールはブロック４２５に戻る。他方、イベントが受信されると、命令シーケンサは、アクセラレータからのデータを受信及び処理するため、イベントハンドラ（例えば、ブロック４０５においてＳＭＯＮＩＴＯＲを介し本来登録されたものなど）を起動するかもしれない（ブロック４４０）。各種実現形態では、このイベントハンドラは、ＯＳコール又はコンテクストスイッチのオーバーヘッドが回避されるように、軽いユーザレベルハンドラであってもよい。このように、処理を向上させることが可能であり、結果データはアクセラレータから取得可能であり、ユーザレベルアプリケーションによって所望されるように利用される。ハンドラへのコントロールの移行は、サスペンドされた実行がイベントハンドラ終了後に再開可能となるように、次の命令ポインタが記録（スタックへのプッシュなど）された後に行われるかもしれない。
【００６４】
図６は、本発明の実施例によるエキソスケルトンを備えたアクセラレータにおいて実行される処理に対応する方法のフロー図である。上述されたように、このアクセラレータは、シーケンサに関して異質な性質を有するかもしれない。従って、エキソスケルトンは、シーケンサ間プロトコル通信を提供することが可能である。ブロック４１０（上述した図５の）に応答して、アクセラレータは、シーケンサからシュレッドアーキテクチャ状態情報を受信するかもしれない。従って、アクセラレータは、この情報に基づき構成されるかもしれない（ブロック４６０）。アクセラレータの異質な性質のため、エキソスケルトンは、このシーケンサ間通信を受信し、アクセラレータにより処理されるようにそれを変換するのに利用されるかもしれない。
【００６５】
次に、ブロック４２０（図５の）に応答して、コマンド情報が、エキソスケルトンを介しシーケンサから受信されるかもしれない（ブロック４６５）。このようなコマンド情報は、処理対象となるデータと共に、制御及び／又はコンフィギュレーション情報を有するかもしれない。従って、アクセラレータは、コマンド情報に従って処理を実行するかもしれない（ブロック４７０）。これらの処理は、シーケンサが自らの処理を実行するのとパラレルに実行されるかもしれない。すなわち、シーケンサは、他の有用な作業を実行する前に、アクセラレータがそれの処理を終了するのを待機する必要はない。上述したように、シーケンサ及びアクセラレータにおける処理は、ＭＩＭＤ形式により実行されてもよく、いくつかの実現形態では、直交処理に対応するかもしれない。
【００６６】
アクセラレータがそれの処理を終了すると、エキソスケルトンは、シーケンサに通知する（ブロック４７５）。このとき、例えば、ユーザレベルイベントハンドラを開始する軽量なユーザレベルイールド機構など、ユーザレベルコードの制御の下、アクセラレータにおいて取得された各種結果に対応するデータが、エキソスケルトンを介しシーケンサに転送されるかもしれない（ブロック４８０）。図５及び６の実施例におけるフローにより説明されたが、本発明の範囲はこれに限定されないということが理解されるべきである。
【００６７】
本発明の実施例によるエキソシーケンサを利用して、異なるレベルのアブストラクションが実現可能である。例えば、いくつかの実現形態では、バーチャル又はＣＩＳＣ（Ｃｏｍｐｌｅｘ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｉｎｇ）命令は、エキソスケルトンに送信され、その後、エキソスケルトンは、当該命令を第１シーケンサと異なるＩＳＡを有するシーケンサ又はシーケンサでないアクセラレータに対するネイティブな物理命令又はコマンドシーケンスに変換するため拡張を実行する。従って、アクセラレータのベーシックなコマンドセットが経時的に変更又は改良される場合、レガシーサポートが、依然としてこのようなアブストラクションレベルを介し提供することが可能である。このように、アクセラレータに対するパフォーマンスが、レガシーユーザレベルアプリケーションに対して向上するかもしれない。他の実現形態では、直接的な又はＲＩＳＣ（Ｒｅｄｕｃｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｉｎｇ）命令が、シーケンサからアクセラレータハードウェア上で命令を直接実行することが可能なエキソシーケンサに送信されるようにしてもよい。
【００６８】
多数の各種システムタイプにおいて、実施例が実現可能である。図７は、本発明の実施例によるシステムのブロック図である。図７に示されるように、マルチプロセッサシステム５００は、ポイント・ツー・ポイントインターコネクトシステムであり、ポイント・ツー・ポイントインターコネクト５５０を介し接続される第１プロセッサ５７０と第２プロセッサ５８０を有する。図７に示されるように、プロセッサ５７０と５８０のそれぞれは、第１及び第２プロセッサコア（すなわち、プロセッサコア５７４ａ及び５７４ｂ並びにプロセッサコア５８４ａ及び５８４ｂ）を含むマルチコアプロセッサであってもよい。プロセッサ５７０と５８０のそれぞれはさらに、エキソシーケンサ、すなわち、第１エキソシーケンサ５７５と第２エキソシーケンサ５８５を有するかもしれない。上述したように、エキソシーケンサ５７５と５８５は、プロセッサコア５７０と５８０の残りのリソースに関して異質なリソースであるかもしれない。プロセッサ毎に１つのエキソシーケンサしか示されていないが、本発明の範囲がこれに限定されるものではないということが理解されるべきである。他の実施例では、与えられたプロセッサにおいて、複数のエキソシーケンサが提供されるかもしれない。さらに、１以上のエキソシーケンサが、プロセッサの各コアに関連付けされるかもしれない。
【００６９】
第１プロセッサ５７０はさらに、メモリ・コントローラ・ハブ（ＭＣＨ）５７２とポイント・ツー・ポイント（Ｐ−Ｐ）インタフェース５７６と５７８を有する。同様に、第２プロセッサ５８０は、ＭＣＨ５８２とＰ−Ｐインタフェース５８６と５８８を有する。図７に示されるように、ＭＣＨ５７２と５８２は、これらのプロセッサを当該各プロセッサにローカルに付属するメインメモリの一部となりうる各自のメモリ、すなわち、メモリ５３２と５３４とを接続する。
【００７０】
第１プロセッサ５７０と第２プロセッサ５８０は、それぞれＰ−Ｐインターコネクト５５２及び５５４を介しチップセットに接続されるかもしれない。図７に示されるように、チップセット５９０は、Ｐ−Ｐインタフェース５９４及び５９８を有する。さらに、チップセット５９０は、ハイパフォーマンスグラフィックスエンジン５３８とチップセット５９０を接続するインタフェース５９２を有する。一実施例では、ＡＧＰ（Ａｄｖａｎｃｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）バス５３９が、グラフィックスエンジン５３８とチップセット５９０を接続するのに利用可能である。ＡＧＰバス５３９は、カリフォルニア州サンタクララのインテル  コーポレイションによって１９９８年５月４日に公開された“Ａｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ  Ｉｎｔｅｒｆａｃｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ，Ｒｅｖｉｓｏｎ  ２．０”に準拠するようにしてもよい。あるいは、ポイント・ツー・ポイントインターコネクト５３９は、これらのコンポーネントを接続するものであってもよい。
【００７１】
次に、チップセット５９０が、インタフェース５９６を介し第１バス５１６に接続されてもよい。一実施例では、第１バス５１６は、本発明の範囲がこれらに限定されるものではないが、１９９５年６月の“ＰＣＩ  Ｌｏｃａｌ  Ｂｕｓ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ，Ｐｒｏｄｕｃｔｉｏｎ  Ｖｅｒｓｉｏｎ，Ｒｅｖｉｓｉｏｎ  ２．１”によって規定されるようなＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バス、又はＰＣＩ  Ｅｘｐｒｅｓｓバスや第３世代Ｉ／Ｏインターコネクトバスなどのバスであってもよい。
【００７２】
図７に示されるように、各種Ｉ／Ｏデバイス５１４が、第１バス５１６と第２バス５２０を接続するバスブリッジ５１８と共に第１バス５１６に接続されてもよい。一実施例では、第２バス５２０は、ＬＰＣ（Ｌｏｗ  Ｐｉｎ  Ｃｏｕｎｔ）バスであってもよい。各種デバイスは、第２バス５２０に接続されてもよく、一実施例では、コード５３０を格納可能なディスクドライブや他の大容量ストレージ装置などのデータストレージユニット５２８、通信装置５２６及びキーボード／マウス５２２などを含む。さらに、音声Ｉ／Ｏ５２４が、第２バス５２０に接続されてもよい。他のアーキテクチャもまた可能であることに留意されたい。例えば、図７のポイント・ツー・ポイントアーキテクチャの代わりに、システムは、マルチドロップバス又は他のそのようなアーキテクチャを実現するかもしれない。
【００７３】
各実施例は、コードにより実現可能であり、命令を実行するようシステムをプログラムするのに利用可能な命令を格納した記憶媒体に格納されるようにしてもよい。記憶媒体は、以下に限定されるものではないが、フロッピー（登録商標）ディスク、光ディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ−ＲＷ（ＣＤ−Ｒｅｗｒｉｔａｂｌｅ）及び光磁気ディスクを含む任意のタイプのディスク、ＲＯＭ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、例えば、ＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、フラッシュメモリ、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  ＥＰＲＯＭ）、磁気若しくは光カード、又は電子命令を格納するのに適した他の何れかのタイプの媒体を含むかもしれない。
【００７４】
本発明が限られた実施例に関して説明されたが、当業者は、それから多数の改良及び変形を理解するであろう。添付した請求項は、そのようなすべての改良及び変形を本発明の真の趣旨及び範囲に属するものとしてカバーすることが意図されている。
【符号の説明】
【００７５】
１０、３１０  プロセッサ
２０、１１０、２１０  シーケンサ
３０  ＩＳＡ
５０  リソース
５２、１３０、２３０  アクセラレータ（ヘルプユニット）
５４、１２０、２２０  エキソスケルトン
１００、２００、３００  システム
【図１】
2014059920.tif 000003
【図２】
2014059920.tif 000004
【図３】
2014059920.tif 000005
【図４】
2014059920.tif 000006
【図５】
2014059920.tif 000007
【図６】
2014059920.tif 000008
【図７】
2014059920.tif 000009