JP2014059920A - 異質なリソースによる命令セットアーキテクチャベースシーケンサ間通信 - Google Patents

異質なリソースによる命令セットアーキテクチャベースシーケンサ間通信 Download PDF

Info

Publication number
JP2014059920A
JP2014059920A JP2014000371A JP2014000371A JP2014059920A JP 2014059920 A JP2014059920 A JP 2014059920A JP 2014000371 A JP2014000371 A JP 2014000371A JP 2014000371 A JP2014000371 A JP 2014000371A JP 2014059920 A JP2014059920 A JP 2014059920A
Authority
JP
Japan
Prior art keywords
sequencer
accelerator
instruction
exo
isa
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2014000371A
Other languages
English (en)
Inventor
Hong Wang
ワン ホン
John Shen
シェン ジョン
Hong Zhang
ジャン ホン
Richard Hankins
ハンキンス リチャード
Per Hammarlund
ハマーランド パー
Rogers Dion
ロジャーズ ディオン
Gautham Chinya
チンヤ ゴーサム
Baiju Patel
パテル バイジュ
Shiv Kaushik
カウシク シヴ
Bryant Bigbee
ビッグビー ブライアント
Gad Sheaffer
シェアフェル ガド
Yoav Talgam
タルガム ヨアヴ
Yuval Yosef
ヨセフ ユヴァル
James P Held
ピー ヘルド ジェイムズ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2014059920A publication Critical patent/JP2014059920A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Advance Control (AREA)
  • Programmable Controllers (AREA)
  • Communication Control (AREA)
  • Computer And Data Communications (AREA)

Abstract

【課題】本発明の課題は、異質なリソースを有する各命令セットアーキテクチャベースシーケンサの間の効果的な通信を可能にする方法、装置及びシステムに関する。
【解決手段】上記課題を解決するため、本発明は、ユーザレベルアプリケーションから、第1命令シーケンサに該第1命令シーケンサを介し接続され、該第1命令シーケンサに関する異質なリソースを有するアクセラレータにリクエストを直接通信するステップと、前記リクエストを前記アクセラレータに係るエキソスケルトンを介し前記アクセラレータに提供するステップと、前記リクエストに応答して、前記アクセラレータにおいて第1機能を、前記第1命令シーケンサにおける第2機能とパラレルに実行するステップとから構成されることを特徴とする方法を提供する。
【選択図】図5

Description

本発明は、プロセッサベースシステムにおける通信の向上に関し、より詳細には、複数のシーケンサ(sequencer)を有するシステムに関する。
コンピュータシステムは、データを処理及び通信する各種コンポーネントを有する。典型的なシステムは、各々が付属のメモリ、入出力(I/O)デバイス及び他のコンポーネントと共に複数のコアを含む1以上のプロセッサを有している。通信効率を向上させるため、計算アクセラレータ、特定用途I/Oデバイス及び他の特殊ユニットが、ここでは一般にヘルパーユニット(helper unit)として呼ばれる1以上の特殊コンポーネントを介し提供されるかもしれない。しかしながら、汎用プロセッサ及び工業規格オペレーティングシステム(OS)環境を実現する典型的な計算環境では、ソフトウェアスタックが効率的な利用を妨げる可能性があるため、このようなヘルパーユニットを利用することにより非効率性が発生しうる。すなわち、典型的なOS環境では、システムソフトウェアは、異なる優先レベルを介しアプリケーションソフトウェアから隔離され、これら異なる優先レベルのそれぞれの処理は、他の制限のうちOSコンテクストセーブ及びリストア処理を受ける。
従って、特定用途アクセラレータなどのヘルパーユニットが搭載されているときは常に、通常それはデバイスとして現れ、ユーザレベルアプリケーションは、物理的状態のヘルパーユニットリソースに直接アクセスするOSのデバイスドライバソフトウェアスタックを介しヘルパーユニットを間接的にしか利用することはできない。この結果、関連するデバイスドライバを介したヘルパーユニットリソースは、システムワイドリソースであり、コンテクストスイッチを介しバーチャル化されるバーチャルメモリ若しくはシーケンサ又は汎用レジスタなどのアプリケーションレベルリソースとはならない。
デバイスドライバを用いてヘルパーユニットにアクセスする必要があることによる問題は、「規格化」されたドライバインタフェースに関するOSにより課せられた制限によりフレキシビリティの欠如と非効率性(アプリケーションからヘルパーユニットへのドライバのパス長に関する)である。
計算アクセラレータの従来例は、数値演算コプロセッサ(初期のインテル(登録商標)アーキテクチャ(IA)−32プロセッサのためのいわゆるx87浮動小数コプロセッサなど)などのコプロセッサである。典型的には、このようなコプロセッサは、メインプロセッサと共通の命令セットアーキテクチャ(ISA)を有するコプロセッサインタフェースを介しメインプロセッサ(中央処理ユニット(CPU)など)に接続される。さらに、これらのリソースとのやりとりは、従来のエスケープ/待機信号プロトコルを介し行われ、コプロセッサがそれのリクエストされた機能を実行している間、メインプロセッサは待機状態におかれ、その終了時に、コントロールがメインプロセッサに返される。しかしながら、コプロセッサ処理中、メインプロセッサは、コプロセッサからの結果を待機している間は有用な作業を実行することができない。すなわち、コプロセッサは、メインプロセッサの制御フローのプログラム順序と構成上シーケンシャルに動作するよう一体化されている。これは、特にコプロセッサがメインプロセッサ上の計算と同時的な動作が可能であるとき、プロセッサ利用性を非効率なものとする。従って、このようなヘルパーユニットと通信し、これを利用するより改良された方法が必要とされる。
本発明の課題は、上記問題点に鑑み、異質なリソースを有する各命令セットアーキテクチャベースシーケンサの間の効果的な通信を可能にする方法、装置及びシステムに関する。
上記課題を解決するため、本発明は、ユーザレベルアプリケーションから、第1命令シーケンサに該第1命令シーケンサを介し接続され、該第1命令シーケンサに関する異質なリソースを有するアクセラレータにリクエストを直接通信するステップと、前記リクエストを前記アクセラレータに係るエキソスケルトンを介し前記アクセラレータに提供するステップと、前記リクエストに応答して、前記アクセラレータにおいて第1機能を、前記第1命令シーケンサにおける第2機能とパラレルに実行するステップとから構成されることを特徴とする方法を提供する。
さらに、本発明は、命令を実行する第1命令シーケンサと、前記第1命令シーケンサに接続されるエキソシーケンサとから構成される装置であって、前記エキソシーケンサは、前記第1命令シーケンサに関して異質なリソースから構成され、前記第1命令シーケンサから受け付けたデータに対して少なくとも1つの処理を実行するアクセラレータと、前記アクセラレータに接続され、前記第1命令シーケンサと前記アクセラレータとの間のシーケンサ間通信をユーザレベル制御の下で可能にするエキソスケルトンとを有することを特徴とする装置を提供する。
さらに、本発明は、マシーンによる実行の際、第1シーケンサにおいて、該第1シーケンサに関して異質なリソースであるヘルパーユニットから、該ヘルパーユニットに接続されるインタフェースを介し信号を受け付けるステップと、オペレーティングシステム(OS)のサポートなく前記インタフェースにより変換される前記第1シーケンサの第1命令セットアーキテクチャ(ISA)のコマンド情報を、前記第1シーケンサから前記インタフェースを介し前記ヘルパーユニットに提供するステップと、前記コマンド情報に応答する前記ヘルパーユニットにおける第1処理とパラレルに、前記第1シーケンサにおいて第2処理を実行するステップとから構成される方法を前記マシーンが実行することを可能にする命令を含むマシーン可読記憶媒体から構成される物品を提供する。
さらに、本発明は、第1命令セットアーキテクチャ(ISA)を介し命令を実行する第1シーケンサと、前記第1シーケンサに接続され、前記第1シーケンサとシーケンサ間通信プロトコルを介し通信するインタフェースと、該インタフェースに接続され、前記第1シーケンサに関して非同質的であって、前記インタフェースとプライベートプロトコルを介し通信する計算リソースとを有する第2シーケンサと、前記第1及び第2シーケンサに接続されるDRAM(Dynamic Random Access Memory)とから構成されることを特徴とするシステムを提供する。
本発明によると、異質なリソースを有する各命令セットアーキテクチャベースシーケンサの間の効果的な通信を可能にする方法、装置及びシステムを提供することが可能となる。
図1は、本発明の一実施例によるプロセッサのブロック図である。 図2は、本発明の一実施例によるシステムの一部のブロック図である。 図3は、本発明の他の実施例によるシステムの一部のブロック図である。 図4は、本発明の一実施例によるシステムのブロック図である。 図5は、本発明の一実施例によるプロセッサにおいて実行される処理に対応する方法のフロー図である。 図6は、本発明の一実施例によるアクセラレータにおいて実行される処理に対応する方法のフロー図である。 図7は、本発明の他の実施例によるシステムのブロック図である。
各種実施例において、命令セットアーキテクチャ(ISA)ベースのシーケンサ間通信を可能にする機構が提供される。ここで使用される「シーケンサ(sequencer)とは、独立したスレッド実行リソースであり、スレッドを実行可能な任意の物理又は論理ユニットであるかもしれない。シーケンサは、論理スレッドユニット又は物理スレッドユニットであるかもしれず、与えられたスレッドに対して実行されるべき次の命令を決定するネクスト命令ポインタロジックを有するかもしれない。
より詳細には、ISAベースシーケンサ間通信は、第1のISAの第1シーケンサと、異質な性質を有するシーケンサ又は非シーケンサであるかもしれない第2リソースとの間で実現される。すなわち、第2リソースは、異なるISAのシーケンサであるかもしれず、あるいは、FFU(Fixed Function Unit)、ASIC(Application Specific Integrated Circuit)、他の予めプログラムされたロジックなどの非シーケンサリソースであるかもしれない。各種実施例において、「エキソスケルトン(exo−skeleton)」と呼ばれる中間物又はインタフェースは、このような異質なリソースの間の通信を提供するかもしれない。異なる実施例では、エキソスケルトンは、ソフトウェア、ハードウェア及び/又はファームウェアを含む各種形態をとりうる。いくつかの実施例では、エキソスケルトンは、異質なリソースに接続される有限状態マシーン(FSM)において実現されるかもしれない。もちろん、他の実現形態もまた可能である。
図1は、本発明の一実施例によるプロセッサのブロック図である。図1に示されるように、プロセッサ10は各種リソースを有する。異なる実現形態では、プロセッサ10は、シングルコアプロセッサ又はマルチコアプロセッサであってもよい。このようなプロセッサは、CMP(Chip Multiprocessor)システム、SMT(Simultaneous Multithreading)システム又はSoeMT(Switch−on−event Multithreading)システムを含む各種タイプのシステムにより実現可能である。
図1に示されるように、プロセッサ10は、複数のシーケンサ20a、20b、20c及び20d(すなわち、シーケンサ1−4,一般にはシーケンサ20)を含む。図1の実施例では4つのシーケンサにより示されているが、本発明の範囲がそれに限定されるものでないということが理解されるべきである。図1に示されるように、プロセッサ10のシーケンサ20は、一実施例では、インテル(登録商標)アーキテクチャ(IA−32)インストラクション・セット・アーキテクチャ及び/又はそれの64ビット拡張形(インテル(登録商標)エクステンディッドメモリ64ビットテクノロジー(EMT64T)とも呼ばれる)とすることが可能なISA30を実現する。プロセッサ10はさらに、第1リソース(リソース1)50a、第2リソース(リソース2)50b及び第3リソース50c(リソース3)を有する(リソース50と総称される)。これらのリソースは、プロセッサ10のISA30を実現しない異質なリソースであるかもしれない。これら3つのリソースを有するように図1の実施例は示されているが、異なる実施例では、異なる個数のリソースが可能である。
各リソース50は、シーケンサ(ISA30とは異なるISAを実現可能である)、非シーケンサ処理エンジン又は他の特殊機能ロジックを有し、これらはアクセラレータと総称される。異なる実施例では、異なるタイプのリソースが、アクセラレータとして実現され、グラフィックス処理ユニット(GPU)(典型的にはシーケンサ)、暗号化ユニット(典型的には非シーケンサ)、FFU((典型的には非シーケンサ)などが含まれる。図1に示されるように、各リソース50は、アクセラレータ52を有し、より詳細には、各々がリソース50a、50b及び50cの1つに関連付けされるアクセラレータ52a、52b及び52cを有するかもしれない。アクセラレータ52はまた、ここではヘルパーユニットとも呼ばれる。リソース50a〜50cは、他のISAを有するかもしれず、あるいは、非シーケンサであってもよい。またシーケンサ20に関して異質なものとすることが可能であるため、このようなリソースと通信する機能を提供するため、インタフェースが使用されるようにしてもよい。図1に具体的に示されるように、エキソスケルトン54a、54b及び54c(エキソスケルトン54と総称される)は、各リソース50に関連付けされるかもしれない。このため、各リソース50は、「エキソシーケンサ」と呼ばれるかもしれず、それは、エキソスケルトン54とそれに関連するアクセラレータ52との密接なつながりを示す。このように、これら異質なリソースは、シーケンサ間通信(及び/又は適用可能である場合には、共有メモリベースアドレッシング)をサポートする統一されたISAフレームワークにおいて、異質なシーケンサリソースと一体化されるかもしれない。さらに、各種リソースは、各リソースがパフォーマンスを向上させるため同時に利用可能となるように、MIMD(Multiple Instruction Multiple Data)形式などパラレル形式により実行されるかもしれない。
しかしながら、他の実施例では、リソース50は、シーケンサ20に関して同質なシーケンサリソースであるかもしれず、シーケンサ20と同一又は類似のアーキテクチャを有するように対称的なコアとすることが可能である。このようにして、コンカレントファイバが実現可能であり、レガシーOSスケーラビリティを向上させることが可能である。さらに、他の実現形態では、リソース50は、非対称コアであってもよい。すなわち、これらのリソースは、シーケンサ20と同一のISAを有するが、異なるマイクロアーキテクチャを有するものであってもよい。このような実施例は、非対称性を管理するのに役立ち、レガシーOSとの互換性を提供するかもしれない。
異質なリソースを実現する実施例について、一実施例によるエキソスケルトンは、これら異質なリソースが、シーケンサ間通信のための最小限の準拠を実現するため、共通のISAを有するという錯覚を与えるかもしれない。従って、各種実施例では、異質なリソースは、ユーザレベル機能ユニットリソースとして機能することが可能である(システムレベルデバイスではなく)。すなわち、各種ユーザレベルアプリケーションは、ユーザレベル機能ユニットとなるように、アクセラレータと直接通信及びアクセスするようにしてもよい。このように、各種アクセラレータリソースは、ISAにより管理される異質なコンポーネントとなることが可能である。
例えば、各エキソシーケンサ又はリソース50は、アクセラレータ52がMIMDリソースなどのユーザレベルの異質な計算リソースとしてアプリケーションプログラムにより直接利用することが可能となるように、シーケンサに類似した「ラッパー(wrapper)」エキソスケルトン54により特定用途計算アクセラレータとして現れるかもしれない。
従って、アプリケーションプログラマーは、ヘルパーユニット自体が必ずしも物理的にISA30を有する必要がなくても、ユーザレベルISA30を直接利用して上記ヘルパーユニット52をプログラムすることができる。さらに、プログラマーは、統一的なISA機構を利用して、各々が異なる「特性」(ISA又はデバイス属性に関して)を有する多様な異質なヘルパーユニット群をプログラムすることが可能である。実質的に、本発明の実施例によるエキソシーケンサは、プログラマーがレガシーデバイスドライバのソフトウェアスタックをショートカットすることを可能にする。このため、エキソシーケンサは、ヘルパーユニットに表面的なエキソシーケンサを設け、ヘルパーユニットをプロセッサ又は他のデバイスのシーケンサアウェアなISAベースのシーケンサ間の処理に参加可能な最小のシーケンサとなるようにするかもしれない。ソフトウェアスタックの観点から、エキソシーケンサによって、アプリケーションプログラム又はユーザランタイムは、アクセラレータをアプリケーションリソースとして、またルーズに結びつけられたOSベースのデバイスドライバを利用して、システムレベルリソースとしてアクセラレータを管理する必要なく、アプリケーションバイナリの密接に結びつけされた部分として管理するため、アプリケーションレベルソフトウェアレイヤを提供することが可能である。
さらに、いくつかの実現形態では、1以上のエキソシーケンサは、参加する各ヘルパーユニットが、軽いユーザレベルイベント生成機構を介した非同期シーケンサ間インタラクション又はシーケンサアウェア同期処理を介しメインプロセッサ(すなわち、第1シーケンサ)とやりとりする最小のシーケンサリソースとして構成上利用される明示的なMIMDマルチシーケンサISAインタフェースを有するようにしてもよい。ヘルパーユニットと第1シーケンサは、同一のOSスレッドと構成上密接に結びつけられていても、メインプロセッサとエキソスケルトンを備えたヘルパーユニットは、2つの独立したMIMDシーケンサとしてやりとりする。特に、エキソスケルトンインタフェースを介した第1シーケンサとヘルパーユニットの間のデータ及びコントロールのやりとりは、構成上はシーケンサ間のやりとりと等しい。
図1の実施例では特定のリソースにより示されているが、プロセッサ10は、各々が構成状態のセットを有する複数のハードウェアスレッドコンテクスト(明確さを失うことなく、「スレッドコンテクスト」とも呼ばれ、ソフトウェアスレッドコンテクストと同じものではないことに留意されたい)をサポートすることが可能な1つの物理プロセッサであってもよい。いくつかの実施例では、あるリソースはこれらのスレッドコンテクストに可視的であるが、他のリソースは可視的ではない。従って、図1に示されるように、各シーケンサ20は、スレッドコンテクストに対応するかもしれない。これらスレッドコンテクストの少なくとも一部が(例えば、n個のうちのm個(m≦n)など)、オペレーティングシステムに可視的なものとされるとき、これらのスレッドコンテクストは、場合によっては論理プロセッサ又はOS管理シーケンサとよばれる。各スレッドコンテクストは、それぞれアーキテクチャ状態AS〜ASを維持する。アーキテクチャ状態は、例えば、データレジスタ、セグメントレジスタ、コントロールレジスタ、デバッグレジスタ及びモデルに固有のレジスタの大部分を有する。スレッドコンテクストは、キャッシュ、実行ユニット、ブランチプレディクタ(branch predictor)、コントロールロジック、バスなどの物理プロセッサの大部分のマイクロアーキテクチャリソースを共有するかもしれない。このような特徴は共有可能であるが、プロセッサ10の各スレッドコンテクストは、次の命令アドレスを独立に生成することが可能である(及び、例えば、命令キャッシュ、実行命令キャッシュ又はトレースキャッシュからのフェッチを実行する)。スレッドコンテクストに対応する各シーケンサ20は、対応するアーキテクチャ状態40に関連付けされる。より詳細には、アーキテクチャ状態(AS)40aはシーケンサ20aに関連付けされ、ASはシーケンサ20bに関連付けされ、ASはシーケンサ20cに関連付けされ、ASはシーケンサ20dに関連付けされてもよい。
プロセッサ10又は同様のプロセッサを利用して、ISAベースシーケンサ間通信は、OSに関係することなく行うことが可能である。例えば、共有メモリマルチプロセッシングパラダイムでは、アプリケーションプログラマーは、並列化を表すため、ソフトウェアプログラム(すなわち、アプリケーション又はプロセス)を同時に実行される複数のタスクに分割するかもしれない。同一のソフトウェアプログラム(プロセス)のすべてのスレッドは、メモリアドレススペースの共通の論理的視点を共有する。しかしながら、OSスレッドは、オペレーティングシステムによって生成、スケジューリング又は管理されない複数のユーザレベルスレッドと関連付けされてもよい。このようなユーザレベルスレッドは、OSスレッドと区別するため、「シュレッド(shred)」と呼ばれるかもしれない。これらのシュレッドは、OSスケジューラには可視的ではないかもしれず、このため、OSは、関連するOSスレッドが割り当てられた論理シーケンサアドレス上で実行されるようシュレッドをスケジューリングする時点又は方法を管理しない。OSシュレッド自体は、通常はそれのシュレッドの1つを実行する時点及び方法をスケジューリングするためのものである。
ISAベースシーケンサ間通信に対する構成上のサポートは、ユーザがシーケンサ間のコントロールと状態の転送を直接操作することが可能となるように、1以上の命令が提供されるようISAに対する拡張形を有するようにしてもよく、これは、いわゆるシーケンサアウェア(sequencer−aware)又はシーケンサアリスマティック(sequencer−arithmetic)命令であるかもしれない。このような命令は、他の(すなわち、第2の)シーケンサに通知するため第1シーケンサを提供するか(ここでは、命令は、出力シナリオと呼ばれる出力制御情報を送信し、またデータペイロードを搬送するシュレッド転送又は“SXFR”命令と呼ばれる)、又はこのような信号をモニタするため、第2シーケンサをセットアップし(ここでは、シュレッドモニタ又は“SEMONITOR”命令と呼ばれる)、信号(入力シナリオと呼ばれる)を非同期的に受信すると、ハンドラに対する制御転送を実行する命令を含むかもしれない。
シーケンサアウェア命令はまた、シーケンサアウェア状態セーブ及びリストア命令など他の命令を含むかもしれない。このような状態セーブ命令を実行すると、第1シーケンサは、第2シーケンサのアーキテクチャ状態のスナップショットコピーを生成することが可能である。シーケンサアウェアリストア命令は、セーブされたアーキテクチャ状態が指定されたシーケンサにロードされることを指定するかもしれない。
少なくとも1つの実施例では、1以上のシーケンサアウェア命令は、OSスレッドに属するシュレッドにプログラマーによってコード化されるかもしれない。OSスレッドの処理中に実行されるとき、このような命令は、OSスケジューリングロジックの介入なく、シュレッドに対する生成、制御、転送、コンテクストセーブ、コンテクストリストア又は他の処理を行わせるかもしれない。
このようにして、一実施例によるISAベースシーケンサ間通信は、オーバーヘッドを低減し、パフォーマンスを向上させる。同一のISAのシーケンサ間の通信に加えて、各種実施例では、例えば、本発明の実施例によるエキソスケルトンなどを介し、異質なシーケンサ間、又はシーケンサと非シーケンサ間のISAベースシーケンサ間通信が行われるかもしれない。
図2は、本発明の一実施例によるシステムの一部のブロック図である。図2に示されるように、システム100は、シーケンサ110とアクセラレータ130を有する。アクセラレータ130は、異なる実施例では異なる形式をとりうるものであるが、説明のため、アクセラレータ130はシーケンサ110には異質な性質を有するものであると仮定される。すなわち、アクセラレータ130は、異なるISAを有してもよく、また非シーケンサであってもよい。しかしながら、各種実施例では、シーケンサ110とアクセラレータ130は、1つの基板上に実現されてもよい(例えば、マルチコアプロセッサの一部として)。あるいは、シーケンサ110とアクセラレータ130は、集積回路(IC)内部の異なるシリコン部分により、パッケージ又はマザーボード上に配置されるなどの異なるICにより、又は他の方法により実現されてもよい。
ISAベースシーケンサ間通信を可能にするため、エキソスケルトン120が、アクセラレータ130に接続されるようにしてもよい。エキソスケルトン120とアクセラレータ130は、何れもエキソシーケンサ135と呼ばれるかもしれない。アクセラレータ130が異質なISA又は非シーケンサを有する実施例では、アクセラレータ130がシーケンサ間通信に参加することが可能となるように、有限マシーン(FSM)又は可視化レイヤであるかもしれないエキソスケルトン120が実現されるかもしれない(具体的な実施例に応じて、ハードウェア、ファームウェア又はソフトウェアにより)。このようなISAベースシーケンサ間通信は、エキソシーケンサのアーキテクチャ状態に対するGET及び/又はSET命令を含む、SXFRによって他のシーケンサ又はエキソシーケンサから送信される入力シナリオをモニタし、それに応答するように、アクセラレータ130への入力方向への通知プロトコルを提供する。さらに、この通知プロトコルは、ページフォルトなどのイベントに対するプロキシ実行リクエストなどの例外処理に対する指示を含む出力シナリオによるアクセラレータ130から信号シーケンサ110からの出力通信を含む。さらに、いくつかの実施例では、エキソスケルトン120を介したアクセラレータ130は、シーケンサ110又は他のリソースからのクエリに応答して、エキソスケルトン120がより効果的な利用を可能にするため、アクセラレータ130の能力に関する情報を通信することが可能となるように、能力レポート指向通信動作に参加するようにしてもよい。
図2に示されるように、エキソスケルトン120は、アクセラレータ130と密接に結びつけられているかもしれない。図2にさらに示されるように、システム100は、シュレッド、すなわち、ユーザレベルスレッドを管理及びスケジューリングするため、シュレッドライブラリ150として示されるユーザレベルランタイムソフトウェアレイヤを有する。異なる実現形態では、シュレッドライブラリ150は、シーケンサ110などのシーケンサに対するシュレッドをサポート及び管理する処理を実現するかもしれない。例えば、シュレッドライブラリ150は、シュレッドスケジューリング、シュレッドコンテクストセーブ、スイッチ及びリストアなどを管理するかもしれない。このようにして、OS190がこれらの処理に関与しないため、より小さなオーバーヘッドしか消費しない。
ユーザアプリケーション160は、システム100内で実行し、特殊又は計算量の大きな機能の実行をリクエストするかもしれない。パフォーマンスの向上を可能にするため、特にMIMD又はパラレル環境では、アクセラレータ130が、アプリケーションの他の有用な作業(又は。シーケンサ110によって実行されるべき他のシュレッド)をシーケンサ110が実行するのと並行して機能を実行するように、ユーザアプリケーション160は、シーケンサ110がアクセラレータ130と通信することをリクエストするかもしれない。このようにして、シーケンサ110とアクセラレータ130がアプリケーションスレッドの各部分とパラレルにシュレッドとして実行するため、実行が向上する。従って、本発明の実施例を利用して、シーケンサ110の制御フローは、エキソシーケンサ上で実行される特定用途の計算とパラレル及び非同期的に実行することが可能となり、これにより、独立したシュレッドとして効果的に実行されることとなる。
オーバーヘッドを低減するため、シーケンサアウェア命令を介したシーケンサ110とエキソシーケンサ135の間のISAベースシーケンサ間通信は、OS190の関与を要求しないかもしれない。このように、OS190のデバイスドライバスタックを回避することができ、代わりに、シーケンサ110とエキソシーケンサ135の間の直接的な通信を実行することができる。従って、図2に示されるように、一実施例では、ISAベースシーケンサ間通信は、シーケンサアウェア命令を介しシーケンス110とエキソスケルトン120との間で直接実行されるかもしれない。ユーザアプリケーションであるかもしれないアプリケーションコード160は、シュレッドランタイムライブラリ150を介しこのようなISAベースシーケンサ間通信を利用することが可能である。最小のOSレイヤ140は、OSスレッドのコンテクストセーブ及びコンテクストリストア処理をサポートする。OSスレッドがOSにより管理されるシーケンサに対してコンテクストセーブ又はコンテクストリストア処理を実行すると、このOS管理シーケンサに係るすべてのアプリケーション管理シーケンサとエキソシーケンサとに対するコンテクストが、セーブ及びリストアされる。OSは、OSスレッドコンテクストスイッチ上で上記状態をセーブするため、OSスレッド毎に十分なセーブエリアを提供するかもしれない。ISAベースシーケンサ間通信は、エキソシーケンサ135により提供及び動作可能となるように、変換されるかもしれない。同様の通信フローが、逆方向について行われるかもしれない。少なくとも1つの実施例では、OSスレッドコンテクストスイッチにより、各シーケンサ又はエキソシーケンサにおけるコンテクストセーブ及びリストアは、同一のOSスレッドにおける他のシーケンサ/エキソシーケンサとパラレルに、各シーケンサ又はエキソシーケンサによって実行可能である。このようなパラレルな実現形態は、セーブ及びリストア処理の全体的なパフォーマンスを向上させるかもしれない。
図2の実施例では、1つのシーケンサ110を有するものとして示されているが、本発明の範囲はこれに限定されるものではなく、他の実施例では、マルチシーケンサシステムを提供することが可能であるということは理解されるであろう。このようなシステムでは、エキソスケルトン120はさらに、単独の物理アクセラレータ130が複数のシーケンサにより関連付けされるように、バーチャル化機能を実現するようにしてもよい。従って、エキソスケルトン120は、各々が論理エキソシーケンサに接続される各種シーケンサに対するアクセラレータ130のアーキテクチャ状態の複数のコピーを複数のコンテクストが格納するためのストレージを実現するようにしてもよい。エキソスケルトン120は、アクセラレータ130を利用する各種シーケンサのシーケンス処理又は多重化を提供すると共に、コンテクスト状態のセーブ及びリストアを可能にするロジックを有するようにしてもよい。このように、アクセラレータ130は、システムの複数のシーケンサにサービスを提供するかもしれない。少なくとも1つの実施例では、エキソスケルトンは、SoeMT(Switch−on−event Multithreading)を介し複数の論理エキソシーケンサを実現することが可能である。このような実施例では、論理エキソシーケンサコンテクストは、直接的なオンチップレジスタファイル又は専用スクラッチメモリとして実現することが可能であり、エキソシーケンサコンテクストスイッチ条件は、マイクロコードなどロジック又はファームウェアにより実現することが可能である。少なくとも他の実施例では、独立した物理エキソシーケンサが、各シーケンサに対して実現可能である。この実施例では、複数の物理エキソシーケンサが、SMT(Simultaneous Multithreading)又はCMPシステムとして実現可能である。
図2に示されるものなどの実施例は、アクセラレータがシーケンサ及び/又は残りのシステムと同じISAを有しないとき、又はアクセラレータが非シーケンサである場合に利用可能である。このような実施例では、図2に示されるデータフローは、OS190の関与なしに、シーケンサ110とアクセラレータ130との間の効率的なISAベースシーケンサ間通信を提供する。
しかしながら、他の実現形態では、アクセラレータは、シーケンサ又はシステムの他の部分と共通のISAを有するようにしてもよい。さらに、いくつかの実現形態では、アクセラレータは、システムの残りと密接に構成されるようにしてもよい。例えば、いくつかの実現形態では、アクセラレータは、特殊処理を実行するよう構成されるシステムコンポーネントであってもよい。しかしながら、与えられたシステムコンフィギュレーションでは、コンポーネントは、周辺装置又はアドイン装置などの他のコンポーネントを優先して、イネーブル解除されるか、又は最小限の使用に止められるかもしれない。例えば、統合されたグラフィックス処理ユニット(GPU)は、システムマザーボード上のチップセットの一部(グラフィックス・メモリ・コントローラ・ハブ(GMCH)など)として実現されるかもしれない。しかしながら、あるシステムコンフィギュレーションでは、各アドイングラフィックスカードはまた、マザーボードへのプラグイン(PCI(Peripheral Component Interconnect)スロットなど)として構成される。このような例では、統合されたGPUは、イネーブル解除され、そうでない場合には利用されない。同様に、GPU又は他のこのようなコンポーネントは、その一部があるシステムコンフィギュレーションでは自由に利用されない複数の処理エンジンを有するかもしれない。
このような実現形態では、これらのイネーブル解除又は使用が最小限に止められた処理リソースは、本発明の実施例によるアクセラレータとして構成されるかもしれない。図3は、シーケンサ210とアクセラレータ230とを有するシステム200の一部のブロック図である。図3の実施例では、アクセラレータ230は、第1部分232と第2部分234とを有するかもしれない。第1部分232は、エキソシーケンサとして動作するよう構成され、第2部分234は、通常のOS制御の下、特殊グラフィックス又はメディア機能などの各種機能を実行するよう構成されるかもしれない。従って、図3に示されるように、第2部分234は、デバイスドライバスタック295とのOSアプリケーションプログラミングインタフェース(API)を介しOSベース実行モデルのアプリケーション260と通信可能となるように、OS290のデバイスドライバスタック295と接続される。このように、第2部分234は、従来のOS通信ルートを介しアプリケーション260のリクエストの下、処理機能を実行することが可能である。
他方、第1部分232は、エキソスケルトン220を介しシーケンサ210と直接通信するよう構成される。エキソスケルトン220は、第1部分232とシーケンサ210との間のISAベース通信を可能にするため、ハードウェア、ソフトウェア又はこれらの組み合わせとしてもよい。従って、ユーザレベルアプリケーション256は、エキソスケルトン220を介しシーケンサ210と第1部分232との間の通信のため、ISAベースシーケンサ命令を利用可能である。典型的には、ユーザレベルシュレッドライブラリ250が利用可能であり、OSサポート240の最小のレイヤが、上述されるように、OSスレッドコンテクストセーブ及びリストア処理をサポートするのに利用される。
従って、図3の実施例では、2つのソフトウェアスタック、すなわち、本発明の実施例によるOSドライバスタックとユーザレベルランタイムスタックが共に存在するかもしれない。アクセラレータ230のリソースシェアリングを提供することによって、レガシーベースアプリケーション(OSデバイスドライバモデルを利用するなど)とISAベースシーケンサ間通信を介し最小のオーバーヘッドを提供するユーザレベルアプリケーションの両方が、アクセラレータ230のリソースを利用可能にするため、パフォーマンスが向上する。いくつかの実現形態では、エキソスケルトン220は、アプリケーション256と260が共にアクセラレータ230のフルリソース(アプリケーションに可視的なものとして)の所有権を有していると信じるように、アクセラレータ230に関するバーチャル化タスクを実行可能である。従って、異なる実施例では、エキソスケルトン220は、アクセラレータ230に対するアーキテクチャ状態の複数のコンテクストを提供し、SoeMTと同様の条件の下でコンテクストスイッチをサポートすることを含むバーチャル化タスクを実行するようにしてもよい。
また、アクセラレータ230における機能の一部は、OS290を介しレガシーアプリケーションに関連付けされ、機能の他の部分は、本発明の実施例によるISAベースシーケンサ間通信プロトコルを介しユーザレベルアプリケーションに関連付けされてもよい。従って、アクセラレータ230の物理リソースは、これら2つの独立したパラダイムの共存をサポートするかもしれない。
図4は、本発明の一実施例によるシステムのブロック図である。図4に示されるように、システム300は、GMCH320に接続されるプロセッサ(シーケンサなど)310を有し、さらにGMCH320は、DRAM(Dynamic Random Access Memory)などのメモリ330に接続される。さらに、GMCH320は、ディスプレイ(フラットパネルディスプレイなど)に接続される。GMCH320は、一体化されたグラフィックスアクセラレータを有するかもしれない。GMCH320はさらに、各種周辺装置とシステム300とを接続するのに利用可能な入出力(I/O)コントローラハブ(ICH)350に接続される。図4の実施例では、他の周辺装置370と共にICH350に接続される独立したグラフィックスデバイスである外部グラフィックスデバイス360が示される。
システム300は、独立した外部グラフィックスデバイス360により構成されるため、GMCH320内部の一体化されたグラフィックスは、イネーブル解除されるかもしれない。例えば、システムのBIOS(Basic Input/Output System)は、ディスエーブル(disable)ビットをプログラムするかもしれず、又は、他の機構が、GMCH320のグラフィックス機能をイネーブル解除するかもしれない。そうでない場合には、GMCH320のグラフィックス処理に利用されるアイドル状態の処理リソースが、本発明の実施例によるアクセラレータに変換されるかもしれない。従って、リソースは、例えば、ユーザレベルアプリケーションを介し、OSの関与を必要とすることなく、各種機能を実現するのに利用可能である。このように、特にGMCH320のグラフィックスリソースによる処理が、プロセッサ310のシーケンサにおけるタスクとパラレルに(例えば、MIMD形式などにより)実行される場合、パフォーマンスの向上を図ることができる。
いくつかの実施例では、GMCH320の一体化されたグラフィックスのグラフィックス機能のエキソシーケンサは、直交機能を実行するため各種グラフィックス処理ユニットを有するかもしれない。上記処理リソースの1以上が、システム300のOSに係る1以上のメディアデバイスドライバの関与なく、システム300内のメディア処理を実現するように、ISAベースメディアアクセラレータエキソシーケンサとして構成されるかもしれない。このように、デジタルメディアの符号化及び復号化などのメディア処理は、プロセッサ310の最小限の関与と、さらにOSのデバイスドライバスタックのオーハーヘッドを被ることなく、システム300において実行可能である。
シーケンサなどの各種実施例では、エキソシーケンサは、アプリケーションレベルアーキテクチャリソースの形式をとり、このため、シーケンサアウェアユーザレベル処理において利用するため、一意的かつバーチャル化可能なネームスペースを有するかもしれない。従って、シーケンサ間通信は、OSの介入なくユーザレベルにおいて完全に実行可能である。シーケンサのバーチャル化により、論理エキソシーケンサアーキテクチャリソースは、物理リソースの個数が論理リソースの個数と同一である必要がない場合、レジスタリネーム及びメモリバーチャル化と同様の方法により管理することが可能である。さらに、アーキテクチャ、マイクロアーキテクチャ、熱、電力消費などの各特性を含む各種メリットのマトリックスのスペクトルに関して、物理リソース間の様々な相違が存在しうる。これらの相違は、エキソシーケンサリソースの中の非対称性及び異質性として効果的に明らかとなる。さらに、バーチャルにアドレッサブルなリソースとして、エキソシーケンサリソースはまた、バーチャルシーケンサアドレスのビットが、エキソシーケンサリソースの同期又は非同期アクセス制御を管理するため、物理シーケンサに固有の機能を表すのにハードウェア、ファームウェア及びソフトウェアのアブストラクションレイヤにより利用可能な機能ベース管理を受ける可能性がある。
少なくとも1つの実施例では、エキソシーケンサは、第1シーケンサからの以下の2つの標準的な入力シナリオ、すなわち、第1シーケンサがSXFRを用いてエキソシーケンサにローカルな状態を読み/保持するためのGETシナリオを送信することが可能なGET入力シナリオと、第1シーケンサがSXFRを用いてエキソシーケンサにローカルな状態を書き/更新するためのSETシナリオを送信することが可能なSET入力シナリオとに対するレスポンスを提供することによって、最小のシーケンサ間交換プロトコルをサポートするかもしれない。さらに、エキソシーケンサは、NOTIFY出力シナリオとSXFRを利用して、完了、進行又は例外状態の非同期的なイベント通知を実行するため、第1シーケンサにNOTIFYシナリオを送信することが可能である。第1シーケンサのためにプロキシ実行モードによりアクセラレータを動作させるPROXYシナリオは、NOTIFY出力シナリオの特別な形式である。
この最小状態通知及び更新機能によって、第1シーケンサは、データ及び制御状態を操作するため(個別に又はまとめて)、ハイレベル制御メッセージを構成することが可能である。特に、各種複合状態のアクセスが構成可能である。例えば、コンテクストセーブ/リストアを利用して、第1シーケンサは、SXFRを繰り返し利用して、コンテクストスイッチを介しセーブ/リストアされるよう状態セットを読み又は更新することが可能であり、あるいは他の実施例では、第1シーケンサは、1つのSXFRを利用して、エキソシーケンサが複数の状態においてローカルに繰り返す状態の一部を読み及び更新することが可能である。さらに、第1シーケンサは、SXFRを利用して、状態、関連する属性(ライト、リードなど)、フォーマットなどを含むコンフィギュレーション(すなわち、機能列挙)をクエリすることが可能である。このようにして、従来はシーケンサでなく、又はOSベースデバイスドライバを有しない汎用プロセッサより動作可能でない一体化されたデバイスの特別なクラスが、あたかもそれらがプロセッサの機能ユニットであり、その状態がOSスレッドコンクキストスイッチを介しOSスレッドコンテクストセーブ及びリストアを受けるかのように、特定のアプリケーションによって所望されるようにバーチャル化されるかもしれない。
一実施例では、シーケンサタイプであって、第1シーケンサと異なるISAを有するヘルパーユニットが、それのプライベートISAを利用して、第1シーケンサに対して構成上規定される入力及び出力シナリオを介し通信するため、エキソスケルトン有限状態マシーン(FSM)を実現することが可能である。このように、ヘルパーユニットは、それのプライベートなISAを利用して、ヘルパーユニットハードウェア自体が処理を直接サポートしなくても、第1シーケンサによってリクエストされた処理に応答して、各種アルゴリズムを実現することを選択可能である。このシーケンサFSMの実現形態は、何れかの物理インターコネクト又はインタフェースにより実行可能である、インターコネクト上のこれら2つの装置は、互いに通信するかもしれず、この信号は、論理的又は構成上、第1シーケンサ上のユーザレベルイベントとして、そしてFSMへのトリガー入力としてローカルに受信及び変換されるようにしてもよい。一実施例では、クエリ関連のコンテクストセーブ/リストア入出力シナリオの対象となるエキソシーケンサの状態は、ヘルパーユニットのもとの状態の一部(又はすべて)であるかもしれない。この場合、ヘルパーユニットのプライベートISAのエキソスケルトンコードは、第1シーケンサのシーケンサアウェア処理をサポートするようファームウェアにより実現されるマイクロコードルーチンのように動作する。
他の実施例では、第1シーケンサと同一のISAの隔離されたシーケンサが、ヘルパーユニットの代わりに最小のFSMを実現するため、エキソスケルトンとして利用可能である。エキソシーケンサとヘルパーユニットの間のプライベートプロトコルは、必ずしも本来のISAに準拠している必要はないが、エキソスケルトンが第1シーケンサに自らとヘルパーユニットの集められた状態を提供するように(すなわち、異なるISAを有する)、第1シーケンサはエキソスケルトンとやりとりすることが可能となる。ヘルパーユニットの状態は、エキソスケルトンシーケンサによって、エキソシーケンサの集められた状態に1:1又はM:1(ただし、M>1)の変換が可能である。再び、第1シーケンサのシーケンサ間処理をサポートするため、FSMを実現するコードシーケンスは、ヘルパーユニットハードウェアのマイクロコードベース制御と同様である。
他の例では、エキソシーケンサは、I/Oロジックを備えた特別なASICブロックなど、何れのビルトイン制御シーケンシング(何れかのISAを有する)も有しない回線処理された「固定機能」ヘルパーデバイスを有するようにしてもよい。このようなヘルパーユニットについて、少なくとも1つの実施例では、エキソスケルトンは、固定機能ユニットに付属されるプロキシFSMを介し構成可能である。最小のシーケンサ状態の列挙及びクエリインタフェースは、ASICへの物理アクセスを有するエキソスケルトンFSMにより実現可能である。公開されたASIC状態は、エキソスケルトンシーケンサ状態に1:1又はM:1の変換が可能であり、エキソスケルトンFSMにより実現可能である。FSMロジックは、ASICブロックとのインタフェースとして物理的に実現されてもよい。他の実施例では、エキソスケルトンFSMは、プログラマブルマイクロコントローラシーケンサ又は配線処理されたASICブロックとすることが可能であるが、入力シナリオを入手し、出力シナリオを発信することが可能である。
一実施例では、第1シーケンサと同一のISAの隔離されたシーケンサが、エキソスケルトンFSMを実現するのに動作可能であり、エキソスケルトンシーケンサは、ASIC状態への物理的アクセスを有し、エキソシーケンサとしての自らの状態に加えて、ASIC状態を論理的/構成的に集めるようにしてもよい。他の実施例では、第1シーケンサと異なるISAのシーケンサが、エキソスケルトンFSMを実現するよう動作可能である。
何れのケースでも、エキソスケルトンシーケンサの隔離は、与えられたヘルパーユニットに静的に専用とされる物理シーケンサを確保することによって物理的に行うことが可能であり、又は各々が一意的なヘルパーユニットに論理的に関連する複数の論理的に隔離されたシーケンサとして動的に多重化されることも可能である。すなわち、エキソスケルトンシーケンサは、シーケンサアドレスバーチャル化のための何れか所望されるスキームを介したバーチャル化されたシーケンサとすることが可能である。
一実施例では、アクセラレータは、第1シーケンサに関する非コヒーレントなスクラッチパッドメモリを有することが可能である。このようなヘルパーユニットをエキソシーケンサにするため、非コヒーレントなスクラッチパッド状態が、エキソシーケンサの「公開された」(すなわち、リスト可能な)集められた状態の一部として変換可能である。スクラッチメモリサイズが十分大きい場合、エキソスケルトンは、対応するエキソシーケンサ状態の一部としてスクラッチ状態の限られた部分(状態数が0であることを含む)のみを対象とすることが可能である。例えば、アクセラレータが1キロバイト(Kb)長のデータフレームを処理可能であっても、エキソシーケンサは、セーブ/リストアされるべき256バイトのバッファ状態を有するものとしてアクセラレータを公表するかもしれない。
第1シーケンサとの間でデータを転送するためのDMA(Direct Memory Access)プロトコルを利用するヘルパーユニットデバイスについて、一実施例では、ヘルパーユニットとエキソスケルトンとの間のプライベートプロトコルは、処理されていないDMAベースのものに維持することが可能であり、エキソシーケンサは、第1シーケンサにヘルパーユニットデバイスに対するDMAコンフィギュレーション状態とエキソスケルトンの集められた状態を提供することが可能である。このとき、エキソスケルトンに関するDMAコンフィギュレーションとエキソシーケンサ「列挙/実現」FSM状態は、コンテクストセーブ/リストアを受けることが可能である(及びOSコンテクストスイッチを介しバーチャル化可能である)。しかしながら、第1シーケンサは、特定の実現形態であるDMAコンフィギュレーション情報の何れも構成的に認識している必要はない。
他の実施例では、エキソシーケンサ(ユーザレベルアーキテクチャリソースとしてなど)及びシステムレベル(優先レベルなど)デバイスリソースは、実際には、共通の物理的構成ブロックリソースを共有することが可能である。公表されたエキソシーケンサに対する論理状態は、システムレベル論理デバイスによってリード/ライトコマンドを介しアクセス可能な構成ブロックにおいて、同一の物理状態にリネームすることが可能である。物理ヘルパーユニットの内部では、リソースの分割は、静的又は動的に管理可能であり、ユーザレベルエキソシーケンサとシステムレベルデバイスの両方に対してISAに透過とすることが可能である。
あるサーバプラットフォームには、ネットワークスタック計算をスピードアップするための暗号化/解読アクセラレータが設けられる。これらの暗号化エンジンは、通常は暗号化アクセラレータを制御するためのプログラマブルマイクロエンジンを有するネットワークプロセッサと物理的に接続されている。例えば、暗号化エンジンは、ハッシュテーブル計算における利用など、乱数生成装置又は擬似乱数生成装置を有するかもしれない。このような実現形態では、プロセッサマイクロエンジンは、エキソシーケンサとなるように、暗号化エンジンと接続されるエキソスケルトンFSMとして再プログラムされるかもしれない。
一実施例では、隔離されたアクセラレータは、VMX(Virtual Machine eXtension)ベースのエミュレータのバーチャル・マシーン・モニタ(VMM)を介しエミュレートすることが可能である。コンテクストセーブ/リストアを含む状態アクセス及び更新に対する入出力シナリオは、エキソシーケンサの集められた状態としてさらなるアーキテクチャ状態によるシーケンサのエミュレーションの先頭に実現されるかもしれない。エキソシーケンサから第1シーケンサへの非同期的なNOTIFY通知は、PROXYシナリオとして実現されるかもしれない。
エキソスケルトンを介し、各種シーケンサ間の計算プリミティブを表すことが可能なさらなる入力シナリオが、エキソシーケンサFSMエミュレータを介しエミュレート又は通過可能であり、計算を促進するため、隔離されたそのままの物理リソースに配信可能である。効果的に、ヘルパーユニットのそのままの計算リソースの一部は、それらがユーザレベルMIMDシーケンサアーキテクチャリソースであるかのように、アプリケーションプログラムにより利用可能である。
図5は、本発明の一実施例による方法のフロー図である。図5に示されるように、方法400は、プロセッサコアなどのシーケンサにより実現されるかもしれない。図5に示されるように、方法400は、アクセラレータからの信号のモニタリングをスタートするスタートモニタ(SEMONITOR命令など)を実行することにより開始され、当該信号をシーケンサのイベントハンドラと関連付ける(ブロック405)。具体的には、このような信号は、アクセラレータからのメッセージを示す識別又は通知信号であるかもしれない。アクセラレータは、異なるISAを有する命令シーケンサに関する異質なリソース又は非シーケンサであるかもしれない。従って、命令シーケンサとアクセラレータとの間の通信は、エキソスケルトンを介するものであるかもしれない。従って、アクセラレータから受信する信号は、エキソスケルトンを介しシーケンサにより受信されるかもしれない。
ユーザレベルアプリケーションによる処理を実行するようアクセラレータを構成及び可能にするため、アプリケーションにより使用されるアーキテクチャリソースは、SXFRなどを介しアクセラレータに転送されるかもしれない(ブロック410)。例えば、命令シーケンサは、レジスタ値に対応するシュレッドアーキテクチャ状態についての各種情報、コンフィギュレーション情報などをエキソスケルトンを介し転送するかもしれない。
次に、命令シーケンサは、アクセラレータがユーザレベルアプリケーションのため1以上の処理を実行することが可能となるように、アクセラレータに対するコマンド情報を準備するようにしてもよい(ブロック415)。例えば、命令シーケンサは、当該データに対して適用されるアクセラレータ及び/又は特定のアクセラレーション機能によって操作又は処理されるべきデータを有するコマンド情報を準備するようにしてもよい。このとき、当該コマンド情報は、SXFR命令の利用を含むなど、シーケンサ間プロトコルを介し通信されるかもしれない(ブロック420)。より詳細には、当該プロトコルは、命令シーケンサのISAを有するものであるかもしれない。この情報は、基礎となるデータがアクセラレータにわたすことが可能となるように、プロトコルを変換可能なエキソスケルトンに当該プロトコルを利用して直接通信されるかもしれない。
各種実施例において、このようなシーケンス間プロトコル通信を実現する各種方法が実行可能である。例えば、いくつかの実施例では、通信は、命令シーケンサとアクセラレータとの間の共有メモリバッファであるかもしれないバッファに格納された各作業要素に対する1以上の命令を有するかもしれない。他の実施例では、最小のコマンド情報が、命令ポインタ(IP)などの命令シーケンサから、アクセラレータ上で実行されることが所望されるコードセグメントに送信されてもよい。このとき、アクセラレータ自体がシーケンサであると仮定すると、アクセラレータは、指定された位置からコードをフェッチする処理を実現するかもしれない。コマンド情報が送信される粒度もまた、可変的なものとすることが可能である。例えば、コマンド情報は、異なる実施例では、コマンド毎に又はより大きな粒度により送信されるかもしれない。さらなる他の実施例では、第1シーケンサは、エキソスケルトンを介しメモリを通過することなく、ネーティブコマンドをアクセラレータに送信可能であり、その後、アクセラレータは、当該コマンドを直接実行することが可能である。
さらに図5を参照するに、次に命令シーケンサは、命令シーケンサのコマンドの下、アクセラレータの処理とパラレルに直交(独立したものなど)処理を実行するかもしれない(ブロック425)。すなわち、いくつかの実施例では、MIMD処理などのパラレル処理は、命令シーケンサとアクセラレータの両方が有用な作業をパラレルに実行可能となるように実行されてもよい。このように、命令シーケンサは、アクセラレータからの結果を待機する必要なく、その代わりに他の有用な作業を実行することが可能となる。もちろん、命令シーケンサは、関連する処理をパラレルに実行するようにしてもよい。
次に、命令シーケンサがアクセラレータからイベントを受信したか判断されるかもしれない(ブロック430)。このようなイベントは、アクセラレータにおけるタスクの状態又は完了を示す通知又は他のメッセージの形式を有するかもしれない。この判断は同期的なポーリングを介したものである必要はなく、この通知は非同期的及びイベントドリブンであってもよく、従って、非ポーリングベースであってもよいということに留意されたい。このようなイベントが430において受信されない場合、上述したように、コントロールはブロック425に戻る。他方、イベントが受信されると、命令シーケンサは、アクセラレータからのデータを受信及び処理するため、イベントハンドラ(例えば、ブロック405においてSMONITORを介し本来登録されたものなど)を起動するかもしれない(ブロック440)。各種実現形態では、このイベントハンドラは、OSコール又はコンテクストスイッチのオーバーヘッドが回避されるように、軽いユーザレベルハンドラであってもよい。このように、処理を向上させることが可能であり、結果データはアクセラレータから取得可能であり、ユーザレベルアプリケーションによって所望されるように利用される。ハンドラへのコントロールの移行は、サスペンドされた実行がイベントハンドラ終了後に再開可能となるように、次の命令ポインタが記録(スタックへのプッシュなど)された後に行われるかもしれない。
図6は、本発明の実施例によるエキソスケルトンを備えたアクセラレータにおいて実行される処理に対応する方法のフロー図である。上述されたように、このアクセラレータは、シーケンサに関して異質な性質を有するかもしれない。従って、エキソスケルトンは、シーケンサ間プロトコル通信を提供することが可能である。ブロック410(上述した図5の)に応答して、アクセラレータは、シーケンサからシュレッドアーキテクチャ状態情報を受信するかもしれない。従って、アクセラレータは、この情報に基づき構成されるかもしれない(ブロック460)。アクセラレータの異質な性質のため、エキソスケルトンは、このシーケンサ間通信を受信し、アクセラレータにより処理されるようにそれを変換するのに利用されるかもしれない。
次に、ブロック420(図5の)に応答して、コマンド情報が、エキソスケルトンを介しシーケンサから受信されるかもしれない(ブロック465)。このようなコマンド情報は、処理対象となるデータと共に、制御及び/又はコンフィギュレーション情報を有するかもしれない。従って、アクセラレータは、コマンド情報に従って処理を実行するかもしれない(ブロック470)。これらの処理は、シーケンサが自らの処理を実行するのとパラレルに実行されるかもしれない。すなわち、シーケンサは、他の有用な作業を実行する前に、アクセラレータがそれの処理を終了するのを待機する必要はない。上述したように、シーケンサ及びアクセラレータにおける処理は、MIMD形式により実行されてもよく、いくつかの実現形態では、直交処理に対応するかもしれない。
アクセラレータがそれの処理を終了すると、エキソスケルトンは、シーケンサに通知する(ブロック475)。このとき、例えば、ユーザレベルイベントハンドラを開始する軽量なユーザレベルイールド機構など、ユーザレベルコードの制御の下、アクセラレータにおいて取得された各種結果に対応するデータが、エキソスケルトンを介しシーケンサに転送されるかもしれない(ブロック480)。図5及び6の実施例におけるフローにより説明されたが、本発明の範囲はこれに限定されないということが理解されるべきである。
本発明の実施例によるエキソシーケンサを利用して、異なるレベルのアブストラクションが実現可能である。例えば、いくつかの実現形態では、バーチャル又はCISC(Complex Instruction Set Computing)命令は、エキソスケルトンに送信され、その後、エキソスケルトンは、当該命令を第1シーケンサと異なるISAを有するシーケンサ又はシーケンサでないアクセラレータに対するネイティブな物理命令又はコマンドシーケンスに変換するため拡張を実行する。従って、アクセラレータのベーシックなコマンドセットが経時的に変更又は改良される場合、レガシーサポートが、依然としてこのようなアブストラクションレベルを介し提供することが可能である。このように、アクセラレータに対するパフォーマンスが、レガシーユーザレベルアプリケーションに対して向上するかもしれない。他の実現形態では、直接的な又はRISC(Reduced Instruction Set Computing)命令が、シーケンサからアクセラレータハードウェア上で命令を直接実行することが可能なエキソシーケンサに送信されるようにしてもよい。
多数の各種システムタイプにおいて、実施例が実現可能である。図7は、本発明の実施例によるシステムのブロック図である。図7に示されるように、マルチプロセッサシステム500は、ポイント・ツー・ポイントインターコネクトシステムであり、ポイント・ツー・ポイントインターコネクト550を介し接続される第1プロセッサ570と第2プロセッサ580を有する。図7に示されるように、プロセッサ570と580のそれぞれは、第1及び第2プロセッサコア(すなわち、プロセッサコア574a及び574b並びにプロセッサコア584a及び584b)を含むマルチコアプロセッサであってもよい。プロセッサ570と580のそれぞれはさらに、エキソシーケンサ、すなわち、第1エキソシーケンサ575と第2エキソシーケンサ585を有するかもしれない。上述したように、エキソシーケンサ575と585は、プロセッサコア570と580の残りのリソースに関して異質なリソースであるかもしれない。プロセッサ毎に1つのエキソシーケンサしか示されていないが、本発明の範囲がこれに限定されるものではないということが理解されるべきである。他の実施例では、与えられたプロセッサにおいて、複数のエキソシーケンサが提供されるかもしれない。さらに、1以上のエキソシーケンサが、プロセッサの各コアに関連付けされるかもしれない。
第1プロセッサ570はさらに、メモリ・コントローラ・ハブ(MCH)572とポイント・ツー・ポイント(P−P)インタフェース576と578を有する。同様に、第2プロセッサ580は、MCH582とP−Pインタフェース586と588を有する。図7に示されるように、MCH572と582は、これらのプロセッサを当該各プロセッサにローカルに付属するメインメモリの一部となりうる各自のメモリ、すなわち、メモリ532と534とを接続する。
第1プロセッサ570と第2プロセッサ580は、それぞれP−Pインターコネクト552及び554を介しチップセットに接続されるかもしれない。図7に示されるように、チップセット590は、P−Pインタフェース594及び598を有する。さらに、チップセット590は、ハイパフォーマンスグラフィックスエンジン538とチップセット590を接続するインタフェース592を有する。一実施例では、AGP(Advanced Graphics Port)バス539が、グラフィックスエンジン538とチップセット590を接続するのに利用可能である。AGPバス539は、カリフォルニア州サンタクララのインテル コーポレイションによって1998年5月4日に公開された“Accelerated Graphics Port Interface Specification,Revison 2.0”に準拠するようにしてもよい。あるいは、ポイント・ツー・ポイントインターコネクト539は、これらのコンポーネントを接続するものであってもよい。
次に、チップセット590が、インタフェース596を介し第1バス516に接続されてもよい。一実施例では、第1バス516は、本発明の範囲がこれらに限定されるものではないが、1995年6月の“PCI Local Bus Specification,Production Version,Revision 2.1”によって規定されるようなPCI(Peripheral Component Interconnect)バス、又はPCI Expressバスや第3世代I/Oインターコネクトバスなどのバスであってもよい。
図7に示されるように、各種I/Oデバイス514が、第1バス516と第2バス520を接続するバスブリッジ518と共に第1バス516に接続されてもよい。一実施例では、第2バス520は、LPC(Low Pin Count)バスであってもよい。各種デバイスは、第2バス520に接続されてもよく、一実施例では、コード530を格納可能なディスクドライブや他の大容量ストレージ装置などのデータストレージユニット528、通信装置526及びキーボード/マウス522などを含む。さらに、音声I/O524が、第2バス520に接続されてもよい。他のアーキテクチャもまた可能であることに留意されたい。例えば、図7のポイント・ツー・ポイントアーキテクチャの代わりに、システムは、マルチドロップバス又は他のそのようなアーキテクチャを実現するかもしれない。
各実施例は、コードにより実現可能であり、命令を実行するようシステムをプログラムするのに利用可能な命令を格納した記憶媒体に格納されるようにしてもよい。記憶媒体は、以下に限定されるものではないが、フロッピー(登録商標)ディスク、光ディスク、CD−ROM(Compact Disk Read−Only Memory)、CD−RW(CD−Rewritable)及び光磁気ディスクを含む任意のタイプのディスク、ROM、RAM(Random Access Memory)、例えば、DRAM(Dynamic RAM)、SRAM(Static RAM)、EPROM(Erasable Programmable ROM)、フラッシュメモリ、EEPROM(Electrically EPROM)、磁気若しくは光カード、又は電子命令を格納するのに適した他の何れかのタイプの媒体を含むかもしれない。
本発明が限られた実施例に関して説明されたが、当業者は、それから多数の改良及び変形を理解するであろう。添付した請求項は、そのようなすべての改良及び変形を本発明の真の趣旨及び範囲に属するものとしてカバーすることが意図されている。
10、310 プロセッサ
20、110、210 シーケンサ
30 ISA
50 リソース
52、130、230 アクセラレータ(ヘルプユニット)
54、120、220 エキソスケルトン
100、200、300 システム

Claims (2)

  1. マルチコアプロセッサの第1命令シーケンサ上で実行されるユーザレベルアプリケーションから、前記第1命令シーケンサの命令セットアーキテクチャ(ISA)を実装せず、オペレーティングシステムに透過であって、前記アクセラレータにより実行される次の命令を決定する次命令ポインタロジックを有する前記マルチコアプロセッサのアクセラレータに、前記第1命令シーケンサ上で実行される前記オペレーティングシステムにより管理されるスレッドを介し前記アクセラレータ上にユーザレベルスレッドを生成するためのオペレーティングシステムサポートなしに前記アクセラレータを設定するため第1ユーザレベル命令によってアーキテクチャ状態情報を通信するステップと、
    第2ユーザレベル命令によって、前記ユーザレベルアプリケーションからインタフェースロジックを介し前記アクセラレータにリクエストを通信するステップと、
    前記アクセラレータに接続され、前記第1命令シーケンサのISAのプロトコルから前記アクセラレータのプロトコルに前記リクエストを変換する前記インタフェースロジックから、前記アクセラレータに前記リクエストを提供するステップと、
    前記リクエストに応答して、前記第1命令シーケンサが前記アクセラレータからの結果を待機しないように、前記第1命令シーケンサにおいて第1機能から独立して第2機能を実行することとパラレルに、前記アクセラレータにおいて前記第1機能を実行するステップと、
    を有する方法。
  2. オペレーティングシステムにより管理されるスレッドの命令を実行する第1命令シーケンサと、
    前記第1命令シーケンサに接続される第2命令シーケンサと、
    を有する装置であって、
    前記第2命令シーケンサは、
    前記オペレーティングシステムにより管理されるスレッドの制御の下でユーザレベルスレッドを生成し、前記第1命令シーケンサから受信したデータに対して少なくとも1つの処理を実行するアクセラレータであって、前記第1命令シーケンサの命令セットアーキテクチャ(ISA)を実装せず、前記アクセラレータにより実行される次の命令を決定する次命令ポインタロジックを有し、前記第1命令シーケンサに関して異質なリソースである、前記アクセラレータと、
    前記アクセラレータに接続され、前記第1命令シーケンサと前記アクセラレータとの間のシーケンサ間通信を、前記第1命令シーケンサのISAのプロトコルと前記アクセラレータのプロトコルとの間の前記シーケンサ間通信の変換によって有効にするインタフェースロジックであって、前記シーケンサ間通信はオペレーティングシステム(OS)の関与のない直接的な通信からなり、前記ユーザレベルスレッドの生成はオペレーティングシステムスケジューリングユニットの介入がない、前記インタフェースロジックと、
    を有し、
    前記第1命令シーケンサは、前記少なくとも1つの処理が終了すると、前記第1命令シーケンサに通知するため、前記アクセラレータから受信した信号とイベントハンドラとを関連付け、前記通知後に前記イベントハンドラを実行し、
    前記イベントハンドラは、前記少なくとも1つの処理から結果データを受信及び処理する装置。
JP2014000371A 2005-12-29 2014-01-06 異質なリソースによる命令セットアーキテクチャベースシーケンサ間通信 Pending JP2014059920A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/321,779 2005-12-29
US11/321,779 US8914618B2 (en) 2005-12-29 2005-12-29 Instruction set architecture-based inter-sequencer communications with a heterogeneous resource

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2011101385A Division JP2011146077A (ja) 2005-12-29 2011-04-28 異質なリソースによる命令セットアーキテクチャベースシーケンサ間通信

Publications (1)

Publication Number Publication Date
JP2014059920A true JP2014059920A (ja) 2014-04-03

Family

ID=37908009

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2006348294A Pending JP2007183943A (ja) 2005-12-29 2006-12-25 異質なリソースによる命令セットアーキテクチャベースシーケンサ間通信
JP2011101385A Pending JP2011146077A (ja) 2005-12-29 2011-04-28 異質なリソースによる命令セットアーキテクチャベースシーケンサ間通信
JP2014000371A Pending JP2014059920A (ja) 2005-12-29 2014-01-06 異質なリソースによる命令セットアーキテクチャベースシーケンサ間通信

Family Applications Before (2)

Application Number Title Priority Date Filing Date
JP2006348294A Pending JP2007183943A (ja) 2005-12-29 2006-12-25 異質なリソースによる命令セットアーキテクチャベースシーケンサ間通信
JP2011101385A Pending JP2011146077A (ja) 2005-12-29 2011-04-28 異質なリソースによる命令セットアーキテクチャベースシーケンサ間通信

Country Status (5)

Country Link
US (3) US8914618B2 (ja)
EP (2) EP2275926A3 (ja)
JP (3) JP2007183943A (ja)
KR (5) KR100879825B1 (ja)
CN (2) CN102081556B (ja)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8914618B2 (en) * 2005-12-29 2014-12-16 Intel Corporation Instruction set architecture-based inter-sequencer communications with a heterogeneous resource
JP5111797B2 (ja) * 2006-06-29 2013-01-09 株式会社東芝 情報処理装置及び情報処理方法
US7768518B2 (en) * 2006-09-27 2010-08-03 Intel Corporation Enabling multiple instruction stream/multiple data stream extensions on microprocessors
US8074274B2 (en) * 2006-12-29 2011-12-06 Intel Corporation User-level privilege management
US8321849B2 (en) * 2007-01-26 2012-11-27 Nvidia Corporation Virtual architecture and instruction set for parallel thread computing
US7809895B2 (en) * 2007-03-09 2010-10-05 Oracle America, Inc. Low overhead access to shared on-chip hardware accelerator with memory-based interfaces
US7827383B2 (en) * 2007-03-09 2010-11-02 Oracle America, Inc. Efficient on-chip accelerator interfaces to reduce software overhead
US7904696B2 (en) * 2007-09-14 2011-03-08 Intel Corporation Communication paths for enabling inter-sequencer communication following lock competition and accelerator registration
US8296743B2 (en) * 2007-12-17 2012-10-23 Intel Corporation Compiler and runtime for heterogeneous multiprocessor systems
US7996648B2 (en) 2007-12-19 2011-08-09 Microsoft Corporation Coupled symbiotic operating systems
US8275975B2 (en) * 2008-01-25 2012-09-25 Mtekvision Co., Ltd. Sequencer controlled system and method for controlling timing of operations of functional units
US8250578B2 (en) * 2008-02-22 2012-08-21 International Business Machines Corporation Pipelining hardware accelerators to computer systems
US8726289B2 (en) * 2008-02-22 2014-05-13 International Business Machines Corporation Streaming attachment of hardware accelerators to computer systems
US8615647B2 (en) 2008-02-29 2013-12-24 Intel Corporation Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state
US20090307711A1 (en) * 2008-06-05 2009-12-10 International Business Machines Corporation Integrating computation and communication on server attached accelerators
US8141102B2 (en) * 2008-09-04 2012-03-20 International Business Machines Corporation Data processing in a hybrid computing environment
US8719547B2 (en) * 2009-09-18 2014-05-06 Intel Corporation Providing hardware support for shared virtual memory between local and remote physical memory
US9058183B2 (en) * 2009-12-29 2015-06-16 Advanced Micro Devices, Inc. Hypervisor isolation of processor cores to enable computing accelerator cores
US9626624B2 (en) 2010-07-20 2017-04-18 Analog Devices, Inc. Programmable probability processing
CA2832444C (en) * 2011-04-07 2017-10-17 Pneuron Corp. Legacy application migration to real time, parallel performance cloud
US9563851B2 (en) * 2011-06-07 2017-02-07 Analog Devices, Inc. Programmable probability processing
WO2013101139A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Providing an asymmetric multicore processor system transparently to an operating system
KR101867960B1 (ko) * 2012-01-05 2018-06-18 삼성전자주식회사 매니 코어 시스템을 위한 운영체제 동적 재구성 장치 및 방법
EP3373105B1 (en) 2012-03-30 2020-03-18 Intel Corporation Apparatus and method for accelerating operations in a processor which uses shared virtual memory
CN104221005B (zh) * 2012-03-30 2018-04-27 英特尔公司 用于从多线程发送请求至加速器的机制
WO2013162208A1 (en) * 2012-04-24 2013-10-31 Samsung Electronics Co., Ltd. Scalable and secure application resource management and access control for multicore operating systems
US9098726B2 (en) 2012-04-24 2015-08-04 Samsung Electronics Co., Ltd. Scalable and secure application resource management and access control for multicore operating systems
US9729309B2 (en) 2012-12-19 2017-08-08 Intel Corporation Securing data transmission between processor packages
US9043923B2 (en) * 2012-12-27 2015-05-26 Empire Technology Development Llc Virtual machine monitor (VMM) extension for time shared accelerator management and side-channel vulnerability prevention
US9766916B2 (en) 2014-05-05 2017-09-19 International Business Machines Corporation Implementing coherent accelerator function isolation for virtualization
WO2015187965A1 (en) * 2014-06-05 2015-12-10 Huawei Technologies Co., Ltd System and method for real time virtualization
US10489178B2 (en) * 2015-04-28 2019-11-26 Altera Corporation Network functions virtualization platforms with function chaining capabilities
US10169073B2 (en) 2015-12-20 2019-01-01 Intel Corporation Hardware accelerators and methods for stateful compression and decompression operations
US10310897B2 (en) * 2016-09-30 2019-06-04 Intel Corporation Hardware accelerators and methods for offload operations
KR102482896B1 (ko) 2017-12-28 2022-12-30 삼성전자주식회사 이종 휘발성 메모리 칩들을 포함하는 메모리 장치 및 이를 포함하는 전자 장치
US11150817B2 (en) 2019-02-08 2021-10-19 International Business Machines Corporation Integrating kernel-bypass user-level file systems into legacy applications
US10795718B2 (en) * 2019-02-08 2020-10-06 Microsoft Technology Licensing, Llc Updating hardware with reduced virtual machine downtime
CN112925728A (zh) * 2019-05-05 2021-06-08 长江存储科技有限责任公司 具有序列处理单元的存储器控制系统
US11397612B2 (en) * 2019-07-27 2022-07-26 Analog Devices International Unlimited Company Autonomous job queueing system for hardware accelerators
CN111739393A (zh) * 2020-06-28 2020-10-02 山东省医药生物技术研究中心(山东省病毒研究所) 一种基于动作捕捉系统的穿戴式推拿教学辅助系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62156735A (ja) * 1985-12-19 1987-07-11 ウオング・ラボラトリ−ズ・インコ−ポレ−テツド 浮動小数点演算処理装置
JPH1115660A (ja) * 1997-06-20 1999-01-22 Sony Corp マイクロプロセッサ
JP2001147902A (ja) * 1999-11-22 2001-05-29 Nec Corp マイクロプロセッサシステム
JP2002073331A (ja) * 2000-08-29 2002-03-12 Pacific Design Kk データ処理装置
JP2002278753A (ja) * 2001-03-21 2002-09-27 Rohm Co Ltd データ処理システム
JP2004519768A (ja) * 2001-02-20 2004-07-02 エイアールエム リミテッド コプロセッサを使用したデータ処理

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU625293B2 (en) * 1988-12-09 1992-07-09 Tandem Computers Incorporated Synchronization of fault-tolerant computer system having multiple processors
JPH0432954A (ja) * 1990-05-22 1992-02-04 Mitsubishi Electric Corp コプロセッサ制御方式
JP3025893B2 (ja) 1990-05-29 2000-03-27 コニカ株式会社 画像形成装置
US5202988A (en) * 1990-06-11 1993-04-13 Supercomputer Systems Limited Partnership System for communicating among processors having different speeds
US5638525A (en) * 1995-02-10 1997-06-10 Intel Corporation Processor capable of executing programs that contain RISC and CISC instructions
US5996083A (en) * 1995-08-11 1999-11-30 Hewlett-Packard Company Microprocessor having software controllable power consumption
US5987590A (en) * 1996-04-02 1999-11-16 Texas Instruments Incorporated PC circuits, systems and methods
US6766515B1 (en) * 1997-02-18 2004-07-20 Silicon Graphics, Inc. Distributed scheduling of parallel jobs with no kernel-to-kernel communication
US6480952B2 (en) 1998-05-26 2002-11-12 Advanced Micro Devices, Inc. Emulation coprocessor
US20020010848A1 (en) 2000-05-29 2002-01-24 Shoichi Kamano Data processing system
JP4913955B2 (ja) * 2000-05-29 2012-04-11 株式会社ガイア・システム・ソリューション データ処理装置
US6734862B1 (en) * 2000-06-14 2004-05-11 Intel Corporation Memory controller hub
US6799265B1 (en) * 2000-07-11 2004-09-28 Intel Corporation Dependency checking for reconfigurable logic
US6842180B1 (en) * 2000-09-20 2005-01-11 Intel Corporation Opportunistic sharing of graphics resources to enhance CPU performance in an integrated microprocessor
EP1358550A1 (en) * 2001-01-30 2003-11-05 Koninklijke Philips Electronics N.V. Synchronization of a main processor with an instruction path coprocessor
GB2372348B (en) 2001-02-20 2003-06-04 Siroyan Ltd Context preservation
US7225446B2 (en) * 2001-02-20 2007-05-29 Pts Corporation Context preservation
US6832305B2 (en) * 2001-03-14 2004-12-14 Samsung Electronics Co., Ltd. Method and apparatus for executing coprocessor instructions
US7489779B2 (en) * 2001-03-22 2009-02-10 Qstholdings, Llc Hardware implementation of the secure hash standard
GB2378271B (en) * 2001-07-30 2004-12-29 Advanced Risc Mach Ltd Handling of coprocessor instructions in a data processing apparatus
US7228401B2 (en) * 2001-11-13 2007-06-05 Freescale Semiconductor, Inc. Interfacing a processor to a coprocessor in which the processor selectively broadcasts to or selectively alters an execution mode of the coprocessor
US6944746B2 (en) * 2002-04-01 2005-09-13 Broadcom Corporation RISC processor supporting one or more uninterruptible co-processors
TWI273385B (en) * 2002-04-12 2007-02-11 Shuttle Inc Method and device for preventing computer motherboard from being burnt
EP1387259B1 (en) * 2002-07-31 2017-09-20 Texas Instruments Incorporated Inter-processor control
GB2402764B (en) * 2003-06-13 2006-02-22 Advanced Risc Mach Ltd Instruction encoding within a data processing apparatus having multiple instruction sets
JP3852437B2 (ja) * 2003-11-19 2006-11-29 セイコーエプソン株式会社 同期・非同期インターフェース回路及び電子機器
US8607235B2 (en) 2004-12-30 2013-12-10 Intel Corporation Mechanism to schedule threads on OS-sequestered sequencers without operating system intervention
US7810083B2 (en) 2004-12-30 2010-10-05 Intel Corporation Mechanism to emulate user-level multithreading on an OS-sequestered sequencer
US20060179273A1 (en) * 2005-02-09 2006-08-10 Advanced Micro Devices, Inc. Data processor adapted for efficient digital signal processing and method therefor
US8914618B2 (en) * 2005-12-29 2014-12-16 Intel Corporation Instruction set architecture-based inter-sequencer communications with a heterogeneous resource
US9266123B2 (en) 2013-12-05 2016-02-23 Exxonmobil Research And Engineering Company Integrated cyclone assembly

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62156735A (ja) * 1985-12-19 1987-07-11 ウオング・ラボラトリ−ズ・インコ−ポレ−テツド 浮動小数点演算処理装置
JPH1115660A (ja) * 1997-06-20 1999-01-22 Sony Corp マイクロプロセッサ
JP2001147902A (ja) * 1999-11-22 2001-05-29 Nec Corp マイクロプロセッサシステム
JP2002073331A (ja) * 2000-08-29 2002-03-12 Pacific Design Kk データ処理装置
JP2004519768A (ja) * 2001-02-20 2004-07-02 エイアールエム リミテッド コプロセッサを使用したデータ処理
JP2002278753A (ja) * 2001-03-21 2002-09-27 Rohm Co Ltd データ処理システム

Also Published As

Publication number Publication date
US20070157211A1 (en) 2007-07-05
JP2007183943A (ja) 2007-07-19
US9459874B2 (en) 2016-10-04
US20130205122A1 (en) 2013-08-08
CN102081556B (zh) 2013-12-04
KR101455009B1 (ko) 2014-11-03
KR101299286B1 (ko) 2013-08-23
EP2275926A3 (en) 2012-12-12
CN102081556A (zh) 2011-06-01
US20150070368A1 (en) 2015-03-12
KR20120098981A (ko) 2012-09-06
KR101247407B1 (ko) 2013-03-25
KR20130122599A (ko) 2013-11-07
JP2011146077A (ja) 2011-07-28
KR20080096636A (ko) 2008-10-31
CN1991768A (zh) 2007-07-04
KR20070072396A (ko) 2007-07-04
CN1991768B (zh) 2011-04-13
KR20130023302A (ko) 2013-03-07
EP1814026A3 (en) 2009-02-25
EP2275926A2 (en) 2011-01-19
US9588771B2 (en) 2017-03-07
KR100879825B1 (ko) 2009-01-21
KR101388880B1 (ko) 2014-04-23
EP1814026A2 (en) 2007-08-01
US8914618B2 (en) 2014-12-16

Similar Documents

Publication Publication Date Title
KR101247407B1 (ko) 이질적 리소스와의 명령어 세트 아키텍처-기반 시퀀서간 통신
US7487341B2 (en) Handling address translations and exceptions of a heterogeneous resource of a processor using another processor resource
US8669990B2 (en) Sharing resources between a CPU and GPU
US20170329646A1 (en) Graphical Processing Unit (GPU) Implementing a Plurality of Virtual GPUs
JP4690988B2 (ja) 持続的なユーザレベルスレッド用の装置、システムおよび方法
JP2014504416A (ja) 組み合わせたcpu/gpuアーキテクチャシステムにおけるデバイスの発見およびトポロジーのレポーティング
CN112199173B (zh) 双核cpu实时操作系统数据处理方法
US20210055948A1 (en) Fast thread execution transition
US8843728B2 (en) Processor for enabling inter-sequencer communication following lock competition and accelerator registration
US10771554B2 (en) Cloud scaling with non-blocking non-spinning cross-domain event synchronization and data communication
CN108845969B (zh) 适用于不完全对称多处理微控制器的操作控制方法及操作系统
Tomoutzoglou Hardware-assisted workload dispatching in heterogeneous dataflow architectures.

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140106

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141202

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150225

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150401

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151110

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160210

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20160802