JP2008546086A - 共有リソースのためのアクセス協調を伴うプログラムコードを変換する方法および装置 - Google Patents

共有リソースのためのアクセス協調を伴うプログラムコードを変換する方法および装置 Download PDF

Info

Publication number
JP2008546086A
JP2008546086A JP2008514198A JP2008514198A JP2008546086A JP 2008546086 A JP2008546086 A JP 2008546086A JP 2008514198 A JP2008514198 A JP 2008514198A JP 2008514198 A JP2008514198 A JP 2008514198A JP 2008546086 A JP2008546086 A JP 2008546086A
Authority
JP
Japan
Prior art keywords
subject
local
code
token
shared resource
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.)
Granted
Application number
JP2008514198A
Other languages
English (en)
Other versions
JP5182816B2 (ja
Inventor
ノウルズ、ポール
バラクラフ、ギャビン
Original Assignee
トランジティブ リミテッド
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 トランジティブ リミテッド filed Critical トランジティブ リミテッド
Publication of JP2008546086A publication Critical patent/JP2008546086A/ja
Application granted granted Critical
Publication of JP5182816B2 publication Critical patent/JP5182816B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/52Indexing scheme relating to G06F9/52
    • G06F2209/522Manager

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Devices For Executing Special Programs (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

動的バイナリートランスレータ(19)が、ターゲットプロセッサ(13)上でサブジェクトプログラム(17)をターゲットコード(21)に変換する。マルチスレッドサブジェクト環境において、トランスレータ(19)が各スレッド(171,172)と、一つまたはそれ以上のローカルデータ(502)群に共通するグローバルトークン(501)とを提供し、両方が一緒になって協調アクセスとしてメモリ(18)に協調アクセスを使用する。グローバルトークン(501)の調整ステップは各スレッド内のローカルデータストラクチャ(502a,b)を許容し、共有リソース(18)による潜在的インターフェアレンスを検出する。

Description

本発明は概して、コンピュータおよびコンピュータソフトウエアの分野、より詳しくは例えばプログラムコードを変換するコード変換装置、エミュレータおよびアクセレレータに有用なプログラムコード変換方法および装置に関する。
組み込みおよび非組み込みCPUの両方において、CPUが適切なソフトウエアに透過的にアクセラし、動作性能を高速化することができ、あるいはより優れた費用/性能利益を提示できる無数の潜在量力のあるプロセッサに「変換される」既存の大量ソフトウエアのための卓越した命令セットアーキテクチャ(ISA)がある。さらに、ISAに対して時間的にロックされ、性能または市場機能範囲に発展することができない優勢なCPUアーキテクチャが見つかっている。この種のCPUは、ソフトウエア指向プロセッサ共同アーキテクチャから利益を得ることができる。
このような高速化、変換および共同アーキテクチャ能力を促進するプログラムコード変換方法および装置は、例えば公開公報第00/22521号パンフレットに開示されており、開示は参照することにより本願に援用される。
本発明の実施例は、特にプログラムコード変換に関しており、これにより、サブジェクトプログラムは、ターゲットコンピューティングプラットフォーム内のターゲットプロセッサによって実行可能なターゲットコードに変換される。
プログラムコード変換の実行は、サブジェクトプロセッサ上でサブジェクトプログラムの本来の実行と比較して変換プロセス内でオーバーヘッドを必然的にもたらす。変換プロセス内のこのオーバーヘッドを低減することが一般的に望ましい。さらに、ターゲットコードの生成がターゲットプロセッサ上で正確に、かつ効果的に実行されることが一般的に望まれる。
スレッドはプログラムの一部であり、プログラムの他の部分を独立して、また同時に実行されることができる。マルチ−スレッド処理環境において、一つを超えるスレッド(または一つを超えるプロセッサ)が、メモリのような共有リソースにアクセスされる。共有リソースへのアクセスを調整するための機構体は普通必要である。これは不一致または予期しない動作のようなインターフェアレンスを回避するためである。例えば、二つのスレッドが独立して特定メモリロケーションでデータを更新したときに、故意でないインターフェアレンスが発生することがある。アクセス調整機構体は普通サブジェクトプロセッサの命令セットアーキテクチャに特定付けられている。多くの場合において、サブジェクトアクセス調整機構体は、プログラムコード変換に追従するターゲットプロセッサ上で容易に実行されない。第1に、ターゲットプロセッサはハードウエア基準調整機構体を有していない。第2に、ターゲット調整機構体はサブジェクト機構体とは別に作動する。これらの例の両方において、サブジェクトコードによって予期されるサブジェクトアクセス調整機構体に対する適切な代用装置を用意することが困難である。
本発明によれば、添付した特許請求の範囲に説明されたような装置および方法が提供される。本発明の好ましい特徴は、従属請求項および以下の説明から明白となろう。
次の説明は、本発明の実施例に基づいて実用化可能な種々の観点および利点の概要である。当業者に対して本明細書に添付された請求項の範囲に決して限定せず、また、限定することを意図せず詳細な設計の説明をより迅速に理解する助けとなる導入部として提供される。
本発明の一つの観点において、マルチサブジェクトスレッドを有するサブジェクトコードを、ターゲットプロセッサよって実行可能なターゲットコードに変換するプログラムコード内で使用するための共有リソースのアクセス調整機構を提供する方法が提供され、この方法は、(a)マルチサブジェクトスレッドの一つに各々関係する複数のローカルデータ構造とサブジェクトスレッドの各々に共通するグローバルトークンとを準備するステップと、(b)サブジェクトコードをデコードし、共有リソースに関係するサブジェクトアクセス調整機構体とサブジェクトアクセス調整機構体をチェックするサブジェクトチェッキング命令を設定するサブジェクト設定命令を識別するステップと、(c)サブジェクト設定命令に応答して、グローバルトークンを調整するために、および少なくとも現在のスレッドのためのローカルデータ構造内にローカルトークンを記憶するためにターゲットコードを発生するステップであって、ローカルトークンが被調整グローバルトークンから導出されるステップと、(d)サブジェクトチェッキング命令に応答して、少なくとも記憶されたローカルトークンをグローバルトークンと比較するためにターゲットコードを発生し、共有リソースによる潜在的インターフェアレンスを決定するステップとを含んでいる。
典型的な実施例において、発明者らは特にサブジェクトプログラムコードのターゲットコードへのダイナミック2進変換を提供するランタイム変換装置に関して特に有効なプログラムコード変換の促進に向けられた方法を開発してきた。
本発明はまた、本願で規定されたいずれの方法をも実行するように構成された変換ユニットを有する変換装置にまで拡大される。さらに、本発明はコンピュータによって実行可能な命令を記憶され個々に規定されたいずれの方法をも実行するコンピュータ読み取り可能記憶媒体にまで拡大される。
本明細書の一部に組み込まれ、かつ一部を構成する添付図面は好ましい実行を示し、以下に説明される。
次の説明は当業者が本発明を製作して使用することを可能にし、発明者が本発明を実行することを考慮した最良モードを指摘している。しかし、種々の修正例が当業者に容易に理解できるであろう。なぜなら、本発明の一般原理がここに特定されて改良プログラムコード変換方法および装置を提供することを規定しているからである。
以下の用語において、サブジェクトプログラムは、サブジェクトプロセッサを含んでいるサブジェクトコンピューティングプラットフォーム上で実行することが意図されている。ターゲットプロセッサを含んでいるターゲットコンピューティングプラットフォームはサブジェクトプログラムを実行するように使用され、変換装置を介して動的プログラムコード変換が実行される。変換装置は、ターゲットコードがターゲットコンピューティングプラットフォーム上で実行可能なように、サブジェクトコードからターゲットコードにコード変換する。
図1はターゲットコンピューティングプラットフォーム14の一例を示し、複数のソフトウエア要素17,19,20,21および27を記憶しているメモリ18を伴ってターゲットレジスター15を含んでいるターゲットプロセッサ13を備えている。ソフトウエアは特に、オペレーティングシステム20、変換されるべきサブジェクトコード17、トランスレータコード19、被変換コード(ターゲットコード)21およびアブストラクトレジスタバンク27を含んでいる。
一実施例において、トランスレータコード19は、最適化にかかわらずサブジェクト命令セットアーキテクチャ(ISA)のサブジェクトコードを別のISAの被変換ターゲットコードに変換するエミュレータである。すなわち、トランスレータ19はサブジェクトプロセッサをエミュレートし、ターゲットプロセッサ13上でターゲットコード21としてサブジェクトプログラム17を実際に実行する。別の実施例において、トランスレータ19は、プログラムコード最適化を実行することによって同じISAの各々のサブジェクトコードをターゲットコードに変換するためのアクセラレータとして機能する。
一般的用語において、ターゲットコンピューティングプラットフォーム14は特に、変換ユニット19を含んでいる変換装置である。典型的な実施例において、トランスレータ19は、変換装置を実行するソースコードの被コンパイル変形例である。トランスレータ19およびトランスレータ19によって生成された被変換コード21は、ターゲットプロセッサ13上でオペレーティングシステム20に関連して作動する。ターゲットプロセッサ13は一般的に、マイクロプロセッサまたは他の適切なコンピュータである。
図1に示した構造体は典型的な例として示しただけであり、例えば本発明の実施例はオペレーティングシステム内でまたは下流に存在するコード内で実行可能である。サブジェクトコード17、トランスレータコード19、オペレーティングシステム20およびメモリ18の記憶機構体は、当業者にとって知られている多様なタイプのものであることが可能である。
図1に基づく装置において、プログラムコード変換は、ターゲットコード21が稼動中にランタイムで動的に実行されることが好ましい。トランスレータ19は、被変換プログラム21によりインラインで稼動する。この場合において、変換装置は動的2進変換装置である。別の例としての実施例において、トランスレータ19は、個々のサブジェクト命令を一つまたはそれ以上の対応ターゲットコード命令として順番に変換し、かつ実行するインタープリタである。
トランスレータ19は、ターゲットアーキテクチャのために編集されたアプリケーションとして使用されことが好ましい。サブジェクトプログラム17がランタイムでトランスレータ19によって変換され、ターゲットアーキテクチャ14上で実行される。サブジェクトプログラム17はランタイムでトランスレータ19によって変換され、ターゲットアーキテクチャ上で直接実行される。トランスレータ19は、サブジェクトプログラム17によってなされたサブジェクトオペレーティングシステム(OS)コールも変換し、従ってコールがターゲットOS20を通過したときに正確に稼動する。
サブジェクトプログラム17がトランスレータ19に通過される操作は、インターリーブ方式で実行されるコードの二つの、すなわちトランスレータコード19とターゲットコード21の異なるタイプを包含している。トランスレータコード19はランタイム前に、トランスレータ19のハイレベルソースコード実装に基づいてコンパイラ等によって発生する。これに反して、ターゲットコード21はランタイムを通して、変換されるプログラムの被記憶サブジェクトコード17に基づいてトランスレータコード19によって発生する。
典型的な実施例において、少なくとも一つのアブストラクトレジスタバンク27が設けられる(サブジェクトレジスタバンク27またはグローバルレジスタストア27とも呼ばれる)。マルチプロセッサ環境において、オプション的に一つを超えるアブストラクトレジスタバンク27がサブジェクトプロセッサのアーキテクチャに基づいて設けられる。
サブジェクトプロセッサ状態の表示は、トランスレータ19とターゲットコード21の要素によって提供される。すなわち、トランスレータ19は、サブジェクトプロセッサ状態を変数および(または)オブジェクトのような種々の明確なプログラミング言語デバイス内に記憶する。トランスレータ19を編集するように使用されるコンパイラが、状態とオペレーションとがトランスレータコード内でどのように実行されるかを決定する。これと比較して、ターゲットコード21は、ターゲットレジスター15内とターゲットコード21のターゲット命令によって処理されるメモリロケーション18内とにサブジェクトプロセッサ状態を絶対的に提供する。例えば、グローバルレジスタストア27の低レベル表示は単に被割当メモリの領域である。しかし、トランスレータ19のソースコードにおいて、グローバルレジスタストア27はより高レベルでアクセス可能であり、かつ処理可能なデータアレイないしオブジェクトである。
図2は、プログラムコード変換中に制御を実行する方法の一例を示す概略フロー図である。
図2に示したように、制御装置は最初に、トランスレータ制御ループ190とともに存在する。ステップ201において、制御ループ190がトランスレータコード19のコード発生機能192をコールし、一連のサブジェクトコード17を対応する一連の被変換コード21に変換する。次に、ステップ202において、この一連の被変換コード21がターゲットプロセッサ13上で実行される。好都合なことに、各一連の被変換コード21の終端は、制御ループ201に制御装置を帰還させる命令を含んでいる。換言すれば、サブジェクトコードをトランスレートし、実行するステップはサブジェクトプログラム17の一部が順番にトランスレートされて実行されるようにインターレースされる。
ここで、用語「ベーシックブロック」は当業者にとってよく知られているであろう。ベーシックブロックは、正確な一つの入口点と、正確な一つの出口点とを伴うコードのセクションであって、ブロックコードを単一制御経路に限定している。この理由で、ベーシックブロックは制御フローの有効な基本的ユニットである。適切に、トランスレータ19はサブジェクトコード17を複数のベーシックブロックに分割し、各ベーシックブロックは単一入口点における第1命令と単一出口点における最後の命令(ジャンプ、コールまたはブランチ命令のような)との間の命令のシーケンスセットである。トランスレータはこれらのベーシックブロック(ブロックモード)のただ一つを選択するか、またはベーシックブロックのグループ(グループブロックモード)を選択する。グループブロックが、単一ユニットとして一緒に処理される二つまたはそれ以上のベーシックブロックを備えていることが望ましい。さらに、トランスレータはサブジェクトコードの同じベーシックコードを表わすイソブロックを形成するが、異なる入口条件下である。
典型的な実施例において、中間表示(IR)のツリーが、オリジナルサブジェクトプログラム17からターゲットコード21を発生するプロセスの一部としてサブジェクト命令シーケンスに基づいて発生する。IRツリーは、サブジェクトプログラムによって計算された表現と、これによって実行される操作との概略説明である。後に、ターゲットコード21がIRツリーに基づいて発生する。IRノードの収集は実際に非循環図(DAG)に向けられるが、口語的に「ツリー」と呼ばれる。
当業者が理解可能なように一実施例において、トランスレータ19はC++のようなオブジェクト指向プログラミング言語を使用して実行される。例えば、IRノードはC++オブジェクトとして実行され、他のノードに対する参照は他のノードに対応するC++オブジェクトに対するC++参照として実行される。従って、IRツリーは互いに種々の参照を包含するIRノードオブジェクトの収集として実行される。
さらに、検討中の実施例において、IRジェネレーションは、サブジェクトプログラム17が稼動されるように意図されたときに、サブジェクトアーキテクチャの特定の特徴に対応するアブストラクトレジスタ規定群を使用する。例えば、サブジェクトアーキテクチャ上の各物理的レジスタのためのユニークなアブストラクトレジスタ規定がある(「サブジェクトレジスタ」)。トランストレータ内のアブストラクトレジスタ規定は、それなりに、IRノードオブジェクト(すなわち、IRツリー)に対する参照を包含しているC++オブジェクトとして実行されることができる。アブストラクトレジスタ規定群によって参照される全IRツリーの集合体は、稼動IRフォーレストとして参照される(「フォーレスト」は多数のアブストラクトレジスタルーツを包含しているからであり、各々IRツリーに関係している。)これらのIRツリーおよび他のプロセスは適切に、トランスレータコードジェネレーション関数192の一部を形成している。
図3は、本発明の典型的な実施例におけるプログラムコード変換に後続するサブジェクトプログラム内の命令とターゲットプログラム内にある命令との間の関係の一例を示す概略図である。
本実施例において、サブジェクト命令S1−S3は機能的に、等価ターゲット命令T1−T3の結果となる。サブジェクト命令S1はデッドコード削除最適化によるなどして除去され、発生したターゲットコード内にカウンターパートを有していない。サブジェクト命令S2は一つの等価ターゲット命令T3の結果となる。これに反して、サブジェクト命令S3は二つのターゲット命令T1およびT2の結果となる。ターゲットとサブジェクトコード命令間には、1対0、1対1、1対多数、または多数対1の関係がある。
図3にも示したように、別の一般的に使用される最適化はコード再スケジューリングを実行することであり、これによってターゲットコード内の命令シーケンスがサブジェクトコード内のオリジナルシーケンスと等価にならない。ここで、第2サブジェクト命令S2が第3ターゲット命令T3として再スケジュールされる。
サブジェクトアクセス協調
図4は、サブジェクトプロセッサ400の一例を示す概略図である。サブジェクトプロセッサ400は、当業者によく知られているようにメモリ401にアクセスし、少なくとも一つの汎用目的レジスタ402を含んでいる。図示されるサブジェクトプロセッサ400は、RISCプロセッサの一般的なものである。
本実施例において、サブジェクトプロセッサは、リザベーション403の形態をなすアクセス調整機構体をさらに含んでいる。一般的に、リザベーション403は、サブジェクトプロセッサ400の物理的ハードウエアの一部をなしている。リザベーション403は、メモリ401のような共有リソースのためのアクセス調整機構体を提供する。普通、ただ一つのリザベーション403がプロセッサ400に設けられている。
リザベーション403は、潜在的インターフェアレンスが共有リソース、すなわちメモリ401に関して発生しているかどうかを検出するのに使用される。
本実施例において、リザベーション403は、予約フラグ404、特定目的リザベーションレジスタ405を備えている。予約フラグ404は一般的に1ビットフラグであり、リザベーションが設定されているかクリアされているかを示す。リザベーションレジスタ405はメモリアドレスを記憶するのに使用される。
最も一般的に、リザベーション403は「ロード−リンク」と「ストア−コンディショナル」タイプの命令とを合成するのに使用される。ロード−リンク命令はアクセス調整機構体を設定(またはシール)するのに使用される。ストア−コンディショナル命令はアクセス調整機構をチェックし、共有リソースによる潜在的インターフェアレンスを検出するのに使用される。
これらの命令の各々は特定アドレスに関連しており、一例として、
再試行:
ロード−リンク[MEMLL]
...ロード−データに対して操作を実行、
ストア−コンディショナル[MEMSC]
ストア−コンディショナルが失敗であれば分岐:再試行
...
(retry:
load-link [MEM LL]
...perform operations on the loaded data
store-conditional [MEM SC]
branch if store-conditional fails: retry
...)である。
ロード−リンクタイプの命令が遭遇されたとき、データはこの命令に関連するメモリアドレス(すなわち、[MEMLL])から読み込まれ、アドレス[MEMLL]がリザベーションレジスタ404に書き込まれ、予約フラグ405が設定される。
メモリアドレスから読み込まれたデータが、次に一つまたはそれ以上の操作(すなわち、一つまたはそれ以上の介在サブジェクト命令)に使用されることができる。例えば、インクリメント操作、付加操作またはビット−シフト操作が、読み込まれたデータに対して実行される。一般的に、少数の操作のみが対応ロード−リンクと一つ、二つまたは三つの命令のようなストア−コンディショナル命令間で実行される。この操作はインターフェアレンスの可能性を低減する。しかし、概して一対のロード−リンクとストア−コンディショナル命令との間で実行されることができる多数の命令に限定されない。
ストア−コンディショナル命令は、これらの介在操作の結果をメモリ401に戻して書き込むのに使用されるが、普通、データが読み込まれた同じメモリアドレスに戻される。すなわち、ロード−リンクおよびストア−コンディショナル命令は普通、[MEM LL]が[MEM SC]と同じアドレスとなるような一致した対で生成される。
ストア−コンディショナル命令は、任意のストアアドレス[MEM SC]をリザベーションレジスタ404内に記憶されたアドレス(なおもMEM LLになければならない)と比較する。被比較アドレスが同じであり(すなわち、MEM SCが記憶されたMEM LLと同じ)、予約フラグ405がなおも設定されておれば、次にストアが実行される。
マルチ−スレッド環境において、潜在的インターフェア事象がサブジェクトシステム内(すなわち、別のサブジェクトスレッド内または別のサブジェクトプロセッサ上)のどこかで発生するかもしれない。ここで、潜在的インターフェア事象が、(a)レジスタフラグ405がなおも設定されていなければならないときにクリアされるか、(b)リザベーションレジスタ404内に保持されたアドレスがストア−コンディショナル命令内で特定されたアドレス(すなわち、[MEM SC])と同じでないことのいずれかによって検出される。
ストア−コンディショナル命令が続行(すなわち、インターフェアレンスが検出されない)されれば、次に予約フラグ405がクリアされ、プログラム実行が続行される。しかし、ストア−コンディショナル命令が失敗すれば、次に命令がインターフェアレンスなしに実行されるまで、普通はプログラムが反復してロード−リンク命令にループバックする。
潜在的インターフェア事象の実施例として、割り込み、システムコール、またはリザベーションレジスタ404に保持されたメモリアドレスへの記憶によって予約フラグ405は一般的にクリアされる。
別の実施例として、第2ロード−リンク命令(例えば、別のスレッドにある)が予約フラグ405を設定し、また、リザベーションレジスタ404内に記憶されたアドレスを第2ロード−リンク命令に関連するアドレス(例えば、[MEM LL2])に変更する。従って、第2ロード−リンク命令は第1ストア−コンディショナル命令を失敗させる。
リザベーション403を高効率で機能させるために、リザベーションレジスタ404と予約フラグ405とを設定し、かつチェックするためのロジックゲートが一般的にサブジェクトプロセッサ405にハードワイヤードされる。同様にして、予約フラグ405をクリアするためのロジックゲートが一般的にサブジェクトプロセッサにハードワイヤードされる。このように特別に適合されたハードウエアが、これらのプロシージャに関連するコンピュータ操作によるオーバーヘッドを最少にする。
特定の実施例として、パワーPCタイプのプロセッサがリザベーションを提供するとともに命令セットアーキテクチャを有しており、「lwarx」および「stwcx」として知られているロード−リンクおよびストア−コンディショナル機能のための一対の命令をサポートする。本実施例のさらなる背景として、より詳細な説明がhttp://www-128.ibm.com/developerworks/library/pa-atom.で利用可能である。
このサブジェクトハードウエア基準リザベーションシステムにおいて、割り込みが受信された、またはシステムコールが実行されたときに、リザベーションはブロウされる(すなわち、フラグ405がクリアされる、またはリザベーションレジスタ404が変更される)。スレッド間でコンテキストの切換えが行われた場合には、OSが再スケジュールタスクを選択すれば(一般的に割り込みまたはシステムコールのときに実行される)、実行中のスレッドのロード−リンクが別のスレッドのストア−コンディショナルと一致しない(ストアが誤って実行されることがある)。そのようなものとして、ハードウエアレベルにおいてソフトウエアタスク毎にではなく、一つのリザベーションはプロセッサ毎に設けられている。
ターゲットアクセス協調
図5はターゲットコンピューティングプラットフォーム14の概略図であって、本発明の典型的な実施例に使用される共有リソースへのアクセスを協調するための機構体を含んでいる。
トランスレータ19は、一つまたはそれ以上のサブジェクトプログラム17内で多数のスレッドを支持するように構成されている。トランスレータ19は多数のスレッドによるメモリ18のような共有リソースへのアクセスを協調し、潜在的インターフェアレンスの検出を可能にする。
図5を参照して、トランスレータ19はグローバルトークン501、および一つまたはそれ以上の組をなすローカルデータ502を提供し、これらは共同してメモリ18へのアクセスを協調するように使用される。
典型的な実施例において、トランスレータ19はサブジェクトプログラム17の各スレッドに対して一つのローカルデータストラクチャ502を提供する。図5は第1および第2スレッド171,172に関連する第1および第2データストラクチャ502a,502bを示す。
アクセス協調機構体(すなわち、グローバルトークン501および各ローカルデータストラクチャ502)が、図5に示すようにメモリ18内に好都合に記憶されている。別の構成として、データの全てまたは一部が、もし入手できれば、ターゲットプロセッサ13の適切なレジスタ15に記憶される。すなわち、ターゲットコード21がターゲットレジスター内のアクセス協調データの一つまたはそれ以上の要素を保持することができる。特に、グローバルトークン501がターゲットレジスター15に保持されることが望ましい。
図5に示したように、各ローカルデータストラクチャ502は、ローカルトークン521、ローカル値522およびローカルメモリアドレス523を備えている。ローカルトークン521は、グローバルトークン501から導出されたトークンを記憶する。ローカル値522は、共有リソースから読み込まれたデータ値(すなわち、メモリ18からの読み込み)を記憶する。ローカルアドレス523は、データの読み込み元のアドレスを記憶する。
ローカルアドレス523は、サブジェクトアドレススペースを表わすサブジェクトアドレスとして(例えば、図4のサブジェクトシステムのメモリ401に適したアドレスとして)適切にフォーマットされる。サブジェクトアドレススペースはサブジェクト命令17によって参照される。トランスレータ19は、サブジェクトアドレスを、ターゲットコンピューティングシステム14とターゲットメモリ18に適切なターゲットアドレスに変換する。別の構成として、記憶されたローカルアドレス523を被変換されたターゲットアドレスとしてフォーマットする。
図6は、本発明の実施例に使用されるアクセス調整機構体を提供する好ましい方法の概略図である。この方法はトランスレータ19内で適切に実行され、ターゲットコード21を発生してターゲットプロセッサ13でこの方法を実行する。
図6を参照すると、この方法には、図5を参照して上述したように、グローバルトークン501および少なくとも一つのローカルデータストラクチャ502を準備するステップ601が含まれる。
ステップ602はサブジェクトプログラム17をデコードし、サブジェクトアクセス調整機構体(すなわち、図4のサブジェクトプロセッサ400に設けられたアクセス調整機構403)を参照する命令を識別するステップを備えている。特に、このステップは(a)サブジェクトアクセス調整機構(ロード−リンク命令のような)を設定するサブジェクト設定命令、および(b)サブジェクトアクセス調整機構(ストア−コンディショナル命令のような)をチェックするサブジェクトチェッキング命令を識別するステップを備えている。
ステップ603は、(a)サブジェクト設定命令に応答して、グローバルトークン501を調整し、第1スレッド171のためにローカルデータストラクチャ502を記憶するステップを備えている。ここで、サブジェクトロードリンク命令に遭遇したときに、ローカルトークン521、ローカル値522およびローカルアドレス523が、ターゲットコードによってローカルデータストラクチャ502(例えば、メモリ18に)書き込まれる。
ステップ604は、(b)サブジェクトチェッキング命令に応答して、記憶されたローカルデータストラクチャ502をグローバルトークン501の少なくとも現在値と比較して、共有リソース18に対する潜在的インターフェアレンスを判断するステップを備えている。この比較ステップでは、チェッキング命令内に設けられたデータとローカルデータストラクチャ502との比較も行われる。さらに、ステップ604は、グローバルトークン501を調整するステップを備えている。
図7は、図6のステップ603をより詳しく示す概略フロー図である。
トランスレータ19は、サブジェクトリザベーション403で動作するサブジェクトコードのロード−リンク命令load−link[MEM LL]のようなサブジェクト設定命令を識別する。トランスレータによって生成された対応ターゲットコード21が、図7に示されたステップを実行する。簡単に説明すると、図7は、グローバルトークン501を調整するステップ701、データを共有リソースから読み込むステップ703、ならびにローカルデータストラクチャ502を記憶するステップ702,704および705を示す。
ステップ701は、グローバルトークン501を調整するステップを備えている。適切には、グローバルトークンは64ビット数値カウンタのような数値であり、グローバルトークンの調整は数学的操作である。最も好都合なことに、グローバルトークン501の調整はカウンタのインクリメントである。インクリメント命令は多数のターゲットプロセッサ13中で相対的に安価に実行される。別の方式として、カウンタがデクリメントされる。調整の他の形式も可能である。調整は、グローバルトークンがその前の形式または値から変化したことを示す。さらに、グローバルトークンは、後段調整に応じて再度変化する。
理想的には、グローバルトークン501を調整する一つの操作または複数の操作自体がインターフェアレンスなしに実行されることが望ましい。そうでなければ、グローバルトークン501が正確に調整されるという保証がない。特に、トランスレータ19自体が複数のターゲットスレッドの中の一つのスレッドとしてターゲットプロセッサで稼動する場合がある。
適切には、グローバルトークン501は、ターゲットプロセッサに適した機構体を使用してインターフェアレンスなしに調整される。理想的には、命令セットアーキテクチャにターゲットプロセッサがあれば原子操作が使用され、あるいはターゲットプロセッサ自体のロード−リンクおよびストア−コンディショナル機構体があれば、これが使用される。
いくつかの命令セットアーキテクチャが、メモリからのデータの読み込み、データに対する操作、および結果のメモリへの書き込みを単一ステップとして操作を支持する。このような操作は別々のサブ−ステップを備えておらず、従って分解されることができない。このタイプの操作は論理的に分割できないので、「原子的」として知られている。普通、原子的操作は単一バスサイクル内のプロセッサで発生する。論理的に、データを操作する他の試行は、原子的操作の前または後のいずれかで実行されなければならない。
原子的操作は普通、CISCプロセッサに設けられている。特定の実施例として、ターゲットプロセッサがx86ファミリプロセッサを備えており、グローバルトークン501の調整ステップは、原子的比較−交換タイプの命令(例えば、「cmpxchg」命令)使用してグローバルトークンカウンタをインクリメントするステップを備えている。
ステップ702は、ローカルデータストラクチャ502のローカルトークン521としてグローバルトークン501の現在値を記憶するステップを備えている。
ステップ703は、サブジェクトロードリンク命令内で特定されたメモリロケーション(すなわち、サブジェクトアドレス[MEM LL]に関係するターゲットメモリ18内のロケーション)からデータをロードするステップを備えている。すなわち、サブジェクト設定命令は共有リソースに関連する設定アドレスを提供し、データ値が設定アドレス(すなわち、必要とされれば適切なアドレス変換により)に応答して共有リソースから読み込まれる。
ステップ704および705は、ローカルデータストラクチャ502内で、ローカル値522とローカルアドレスとして読み込まれたデータと設定アドレス(例えば、MEM LL)のコピーとを記憶するステップを備えている。
ステップ701から705を実行するための一般的な翻訳言語は、
[atomically] adjust global token
load [MEM LL]
local_token = global token
local_mem = MEM LL
local_value = value in MEM LLである。
図8は、図6のステップ604をより詳しく示す概略フロー図である。
サブジェクトコードのストア−コンディショナル命令は、図8に示すようにターゲットコード内でいくつかのサブ−ステップに好便に分割される。
ステップ801は、サブジェクトコードのストア−コンディショナル命令内で特定されたアドレスから導出されたチェッキングアドレス(すなわち、[MEM SC])をローカルデータストラクチャ502内の記憶されたローカルアドレス523と比較するステップを備えている。再度、必要ならばアドレス変換が実行される。比較が成功に終わる(チェッキングアドレスと記憶されたローカルアドレスが同一である)と、サブジェクトコードのストア−コンディショナル命令とそれに先立つロード−リンク命令とが一致することが示される。比較が失敗(両アドレスが同一でない)している場合は、別のロード−リンク命令が現行のスレッド171で実行されたことを示している。このような状況は、サブジェクトコードが下手に書き込まれた場合に故意でなく発生する。ここで、第1ロード−リンク命令と対応するストアーコンディショナル命令との間に介在する命令がインターフェアレンスなしに実行されたという保証はない。
ステップ802は、被ストアローカルトークン521の、記憶されたグローバルトークン501との比較ステップを備えている。ローカルトークン521がグローバルトークン501と等しくなければ、グローバルトークン501は、別のスレッド172内(または現スレッド171内においても)の潜在的インターフェアリング命令によって調整されることになる。例えば、別のスレッドはインターフェアリングロード−リンク形式の設定命令を実行することになる。この場合において、記憶されたローカルトークン521がインターフェアレンスなしに実行されるので、介在操作の保証はない。
他のターゲットコード命令は、理想的に上述したように[atomically]adjust global tokenのような原子的操作を使用してグローバルトークン501を調整するように設定されることができる。例えば、ストア、システムコールまたはサブジェクトプロセッサ上の割り込みは通常、サブジェクトプロセッサの予約フラグ405をクリアする。これらのサブジェクトプロセッサ事象および命令がグローバルトークン501を調整するターゲットコードに変換されることが理想的である。
ステップ803において、local valueとして記憶された値522は、サブジェクトチェッキング命令(ストア−コンディショナル命令)内に特定付けられたメモリロケーション([MEM SC])に現在ストアされている値と比較される。両値が同一でなければ、別のストアがメモリロケーション上に発生していることを示している。従って、サブジェクト設定命令とチェッキング命令との間の介在命令がインターフェアレンスなしに実行されなかったことが検出される。
適切なメモリアドレスへの書き込みが続行される別のストア命令の値に対応するlocal valueの値522が偶然に一致する可能性がある。しかし、この付加的チェックは、グローバルトークンが予期値に調整され、同じ値が記憶されたときにのみ誤判定となることを意味している。
理想的には、ステップ801−803のチェックは組み合わされて実行される。これら三つのチェックは一緒になって強固であるが比較的安価な機構体を提供してマルチ−スレッド環境においてメモリのような共有リソースに関連する潜在的インターフェアレンスを検出する。
ステップ804は、サブジェクトチェッキング命令(すなわち、ストア−コンディショナル命令)によって要求されたストアを実行するステップを備えている。すなわち、ステップ801,802および803の比較の各々が成功した場合には、介在操作の結果がサブジェクトチェッキング命令内に特定されたロケーション([MEM SC])に記憶される。
ステップ805は、ステップ701につき上述したように、原子的インクリメント(例えば、比較−交換)命令のようなグローバルトークンを調整するステップを備えている。
ステップ806は、サブジェクトプログラムの操作が目下続行されるようにチェッキングと記憶操作とが成功したことを指示するステップを備えている。例えば、成功/失敗フラグが用意され、ターゲットコード21またはトランスレータ19によって参照される。
ステップ807および808は、ステップ801−803の比較操作が成功しない(失敗)の場合に到達される。
ステップ807は、ステップ701につき上述したように、原子的インクリメント(例えば、比較−交換)命令のようなグローバルトークンを調整するステップを備えている。
ステップ808は、チェッキングと記憶操作が失敗したことを指示するステップを備えている。例えば、成功/失敗フラグが失敗を指示するように設定され、ターゲットコード21またはトランスレータ19によって参照される。理想的には、成功/失敗フラグは枝路帰還され、対応ロード−リンク命令からの全シーケンスを再試行するのに使用される。
ステップ801−808のためのプログラム命令の例は、以下の汎用疑似コードで示す。
If (local mem == MEM SC)
and (local token == global token)
and (local value == contents of MEM SC)
then:
perfom sotre [MEM SC]
[atomically] adjust global token
set success flag
else
[atomically] adjust global token
set failure flag
ここで説明する典型的な実施例は、多くの有益性と利点とを有している。ここで説明する実施例は、アクセス協調へのソフト指向アプローチを有利に提供し、なおもトランスレータ内での実行が比較的有効であり、費用効率の高く、且つターゲットコードとして実行される。
ここで提示された例は一般的であり、本発明の原理がサブジェクトプロセッサおよびターゲットプロセッサの全ての組み合わせに適用され、サブジェクトコード設定およびチェッキング命令(例えば、ロード−リンクおよびストア−コンディショナル命令)が異なるアクセス調整機構体が使用されるか、またはこの種の機構体を備えていないアーキテクチャ上で実行される。特に、典型的な実施例には、リザベーションのためにハードウエアサポートを提供しないターゲットプロセッサ上で効果的に実行されるハードウエア指向リザベーションと等価である特性が認められている。
特に、非限定例であるPowerPCおよびMIPSタイプのプロセッサは、ハードウエア支持リザベーションを使用するロード−リンクおよびストア−コンディショナル機構体を提供する。それと対照的に、x86、イタニウム(Itanium)およびスパーク(Sparc)タイプのプロセッサはリザベーションを提供しない。好ましい実施例において、これらのプロセッサは比較的安価なメモリ上で原子的操作を実行することができる。
ここで説明する原理は、サブジェクトプロセッサおよび目的プロセッサの両方がロード−リンクおよびストア−コンディショナル機構体を有しているが、これら両機構体間に直接マッピングがない場合、適用されることができる。さらに、ロード−リンクおよびストア−コンディショナル機構体を有しているサブジェクトプロセッサおよびターゲットプロセッサ両者の場合において、なおもサブジェクトコード内でターゲットプロセッサリザベーションをロード−リンクおよびストア−コンディショナル命令に依存しない状態を保持することが望ましい。これはトランスレータもターゲットプロセッサを稼動し、それ自体ターゲットプロセッサリザベーションを使用するからである。この方式において、トランスレータと被変換ターゲットコードとの間のインターフェアレンスは低減される。
上述したように、本発明の典型的な実施例は、ソフトウエア層において、割り込みまたはシステムコールのような再スケジュール事象の検出は困難または費用がかかる可能性があるという観察に基づいている。しかし、スレッドを通しての情報を記憶するステップはそう費用がかからない。好ましい設計はスレッドを通して三つの情報を記憶するステップに基づいている。すなわち、アクセス調整機構体が設定されていることを示すフラグ、ロードされたアドレス、およびロードされた値である。クリアされた(すなわち、失敗状態を示すように設定された)フラグは、システムコールをこのスレッド内で発生させるか、トランスレータを介して処理した割り込みを発生させなければならない。
値は、適切なメモリ内容がロード−リンク設定命令に続くストア−コンディショナルチェッキング命令の一点で変化したときを検出するのに使用される。理想的に、システムは、値がロード−リンクの一点にあるときのようにストア−コンディショナルチェッキング命令にあるのと同じであるかどうか検出するだけでなく、あらゆる介在変化も検出しなければならない。ソフトウエアからこれらの値を検出するステップの費用は潜在的に非常に高い。
実際に、任意のメモリアドレスは一般的に、原子的または非原子的命令によってのみアクセスされる。このように、ストア−コンディショナル命令をしてシステム内の全アクセス調整機構体を禁止せしめるのに充分である。この方式は、潜在的にアクセス調整機構体をして不必要に禁止せしめるが、いずれにしても、この動作は(例えば、スレッドがロード−リンクとストア−コンディショナル命令間のハードウエア割り込みを受けるが、操作の原子状態を伴う介在事象インターフェアレンスの生じることはない)発生し得る。ストア−コンディショナル命令停止のためにアクセス調整機構体のどこか他のところで割り込むために、本発明の典型的な実施例が、1ビットモデルを特徴として保持されているリザベーションを指示する上述したような正パースレッドモデルからグローバルトークンを導入するモデルに移動する。パースレッドフラグがパースレッドローカルトークンとして設けられている。この構成の利点は全他のスレッド内の全アクセス調整機構体が、システム内で全スレッドのフラグを更新するように試行するのではなく、むしろ単一グローバルトークンをただ修正することによって失敗させるようにする。
僅かな好ましい実施例を示すとともに説明したが、添付した請求項に規定したように本発明の範囲から逸脱することなしに種々の変更および修正できることが当業者に理解できるであろう。
本願に関連する本願と同時にまたは以前に提出され、また、本願に対する公開審査にかけられた全書類および文献に注意が向けらており、さらに、全てこの種の文書および文献の内容はここに引用して援用される。
本願(いずれの添付請求項、要約および図面を含む)に説明された特徴の全ておよび(または)説明したいずれの方法のステップおよびプロセスの全ては、このような特徴の少なくともいくつかおよび(または)ステップが相互に排他的である組み合わせを除外して、いずれの組み合わせを組み合わせることができる。
本願(いずれの添付請求項、要約および図面を含む)に説明された各特徴は、明確に説明がない限り、同じ、等価または同様の目的を発揮する別の特徴によって置換することができる。従って、明確に説明がない限り、説明された各特徴は等価な一般的シリーズまたは同様の特徴のほんの一例である。
本発明は前述の実施例の詳細まで限定するのもではない。本発明は本明細書(いずれの添付請求項、要約および図面を含む)で説明した特徴のいずれの新しい特徴、またはいずれの新しい組み合わせに、または説明されたいずれの方法のステップまたはプロセスのいずれの新しい特徴、またはいずれの新しい組み合わせに拡大する。
明細書に見出される本発明の実施例の装置のブロック図である。 プログラムコード変換中、実行制御の方法の例を示す概略フロー図である。 プログラムコード変換に後続するサブジェクト命令とターゲット命令と間の関係を示す概略図である。 ハードウエア指向アクセス調整機構としてのリザベーションを有するサブジェクトプロセッサの例を示す概略図である。 本発明の典型的な実施例に使用された共有リソースのためのアクセス調整機構体を有するターゲットプロセッサの概略図である。 本発明の典型的な実施例に使用された方法を示す概観図である。 図6の方法をより詳しく示した概略フロー図である。 図6の方法をより詳しく示した概略フロー図である。

Claims (35)

  1. マルチサブジェクトスレッド(171,172)を有するサブジェクトコード(17)をターゲットプロセッサ(13)によって実行可能なターゲット(21)コードに変換するプログラムコード内で使用するための、共有リソースのアクセス調整機構体を提供する方法であって、
    (a)マルチサブジェクトスレッド(171,172)の一つに各々関係する複数のローカルデータストラクチャと、サブジェクトスレッド(171,172)の各々に共通するグローバルトークン(501)とを準備するステップと、
    (b)サブジェクトコード(17)をデコードし、共有リソース(401)に関係するサブジェクトアクセス調整機構体と、サブジェクトアクセス調整機構体をチェックするサブジェクトチェッキング命令を設定するサブジェクト設定命令を識別するステップと、
    (c)サブジェクト設定命令に応答して、グローバルトークン(501)を調整するために、および現スレッドのためのローカルデータストラクチャ(502)内に少なくともローカルトークン(521)を記憶するためにターゲートコード(21)を発生するステップであって、ローカルトークン(521)が被調整グローバルトークン(501)から導出されるステップと、
    (d)サブジェクトチェッキング命令に応答して、グローバルトークン(501)に対して少なくとも記憶されたローカルトークン(521)を比較するためにターゲットコードを発生し、共有リソース(401)による潜在的インターフェアレンスを決定するステップとを備えることを特徴とする方法。
  2. 共有リソース(401)により潜在的にインターフェアする事象に応答してグローバルトークン(501)を調整するステップをさらに備えている請求項1に記載の方法。
  3. サブジェクトコードまたはサブジェクトコード(17)に影響を与える割り込みからシステムコールを検出し、グローバルトークン(501)の調整に応答して共有リソース(401による潜在的インターフェアレンスを表わすステップをさらに備えている請求項2に記載の方法。
  4. 第1サブジェクトスレッド(171)に関してステップ(c)を実行するステップと、
    第2サブジェクトスレッド(172)に関してグローバルトークン(501)を調整するステップと、
    第1サブジェクトスレッド(171)に関してステップ(d)を実行し、これによって第2サブジェクトスレッド(172)により共有リソース(401)による潜在的インターフェアレンスを決定するステップとをさらに備えている請求項1に記載の方法。
  5. ステップ(c)は、サブジェクト設定命令からローカルデータストラクチャ(502)に導出されたデータを記憶するステップをさらに備え、
    ステップ(d)は、ローカルデータストラクチャ(502)から導出されたデータ(523,522)に対してサブジェクトチェッキング命令から導出されたデータを比較するステップをさらに備えている請求項1に記載の方法。
  6. ステップ(c)は、ローカルデータストラクチャ(502)内に、共有リソースから読み込まれるためにサブジェクト設定命令内に特定付けられた設定アドレスから導出されるローカルアドレスを記憶するステップをさらに備え、
    ステップ(d)は、ローカルアドレス(523)をサブジェクトチェッキング命令から導出されたチェッキングアドレスと比較するステップをさらに備えている請求項1に記載の方法。
  7. ステップ(c)は、ローカルデータ構造体(502)内に、サブジェクト設定命令内に特定付けられた設定アドレスに関する共有リソース(401)から読み込まれるデータ値を記憶するローカル値(522)を記憶するステップをさらに備えており、
    ステップ(d)は、ローカル値(522)をサブジェクトチェッキング命令内に特定付けられたチェッキングアドレスに関する共有リソース(401)から読み込まれたデータ値と比較するステップをさらに備えている請求項1に記載の方法。
  8. ステップ(c)は、ローカルデータ構造体(502)内に、共有リソース(401)から読み込まれるためのサブジェクト設定命令内に特定付けられた設定アドレスから導出されたローカルアドレス(523)と、設定アドレスに関する共有リソース(401)から読み込まれたデータ値を記憶するローカル値(522)とを記憶するステップをさらに備えており、
    ステップ(d)は、
    ローカルアドレス(523)をサブジェクトチェッキング命令から導出されたチェッキングアドレスと比較するステップと、
    ローカル値(522)をチェッキングアドレスに関する共有リソースから読み込まれたデータ値と比較するステップとをさらに備えている請求項1に記載の方法。
  9. ステップ(d)は、サブジェクトチェッキング命令に応答して共有リソース(401)に新しいデータ値を記憶するステップをさらに備えている請求項1に記載の方法。
  10. ステップ(d)は、グローバルトークン(501)を調整するステップをさらに備えている請求項1に記載の方法。
  11. グローバルトークン(501)は数値カウンタ値である請求項1に記載の方法。
  12. ローカルトークン(521)を記憶するステップは、グローバルトークン(501)の現在値をコピーするステップを備えている請求項11に記載の方法。
  13. グローバルトークン(501)を調整するステップはカウンタの増分ステップを備えている請求項11に記載の方法。
  14. グローバルトークン(501)をターゲットプロセッサ(13)上で原子的に調整するステップを備えている請求項1に記載の方法。
  15. サブジェクトプロセッサ(400)によって実行可能なサブジェクトコード(17)を、ターゲットプロセッサ(13)によって実行可能なターゲットコード(21)に変換するステップを備えている請求項1に記載の方法。
  16. サブジェクトコード(17)からターゲットコード(21)に動的にバイナリトランスレーションを実行するステップを備えている請求項15に記載の方法。
  17. ターゲットプロセッサ(13)が異なるタイプのプロセッサをサブジェクトプロセッサ(400)に備えている請求項15に記載の方法。
  18. サブジェクトプロセッサ(400)によって実行可能なサブジェクトコード(17)からターゲットプロセッサ(13)によって実行可能なターゲットコード(21)にプログラムコード変換を実行する変換装置であって、該装置は、サブジェクトコード(17)を、ターゲットプロセッサ(13)上で実行するために被変換ターゲットコード(21)に変換する変換ユニット(19)を備え、サブジェクトコード(17)はマルチサブジェクトスレッドを含み、変換ユニット(19)は、
    (a)マルチサブジェクトスレッドの一つに各々関係する複数のローカルデータストラクチャと、マルチサブジェクトスレッドの各々に共通するグローバルトークンとを準備し、
    (b)サブジェクトコードをデコードし、共有リソースに関係するサブジェクトアクセス調整機構体と、サブジェクトアクセス調整機構体をチェックするサブジェクトチェッキング命令を設定するサブジェクト設定命令を識別し、
    (c)サブジェクト設定命令に応答して、グローバルトークンを調整するために、および現スレッドのためのローカルデータストラクチャ内に少なくともローカルトークンを記憶するためにターゲートコードであって、ローカルトークンが被調整グローバルトークンから導出されるターゲットコードを発生し、
    (d)サブジェクトチェッキングストラクチャに応答して、グローバルトークンに対して少なくとも記憶されたローカルトークンを比較するためにターゲットコードを発生し、共有リソースによる潜在的インターフェアレンスを決定することを特徴とする変換装置。
  19. 変換ユニット(19)は、共有リソース(401)により潜在的にインターフェアする事象に応答してグローバルトークン(501)を調整するように構成されている請求項18に記載の変換装置。
  20. 変換ユニット(19)は、サブジェクトコードまたはサブジェクトコード(17)に影響を与える割り込みからシステムコールを検出し、グローバルトークン(501)の調整に応答して共有リソース(401)による潜在的インターフェアレンスを表わすように構成されている請求項19に記載の変換装置。
  21. 変換ユニット(19)は、第1サブジェクトスレッド(171)に関してステップ(c)を実行し、第2サブジェクトスレッド(172)に関してグローバルトークン(501)を調整し、第1サブジェクトスレッド(171)に関してステップ(d)を実行し、これによって第2サブジェクトスレッド(172)により共有リソース(401)による潜在的インターフェアレンスを決定するように構成されている請求項18に記載の変換装置。
  22. 変換ユニット(19)は、サブジェクト設定命令からローカルデータストラクチャ(502)に導出されたデータを記憶し、ローカルデータストラクチャ(502)から導出されたデータ(523,522)に対してサブジェクトチェッキング命令から導出されたデータを比較するように構成されている請求項18に記載の変換装置。
  23. 変換ユニット(19)は、ローカルデータストラクチャ(502)内に、共有リソースから読み込まれるためにサブジェクト設定命令内に特定付けられた設定アドレスから導出されるローカルアドレスを記憶し、ローカルアドレス(523)をサブジェクトチェッキング命令から導出されたチェッキングアドレスと比較するように構成されている請求項18に記載の変換装置。
  24. 変換ユニット(19)は、ローカルデータ構造体(502)内に、サブジェクト設定命令内に特定付けられた設定アドレスに関する共有リソース(401)から読み込まれるデータ値(522)を記憶するローカル値(522)を記憶し、ローカル値(522)をサブジェクトチェッキング命令内に特定付けられたチェッキングアドレスに関する共有リソース(401)から読み込まれたデータ値と比較するように構成されている請求項18に記載の変換装置。
  25. 変換ユニット(19)は、ローカルデータ構造体(502)内に、共有リソース(401)から読み込まれるためのサブジェクト設定命令内に特定付けられた設定アドレスから導出されたローカルアドレス(523)と、設定アドレスに関する共有リソース(401)から読み取りされるデータ値を記憶するローカル値(522)とを記憶し、ローカルアドレス(523)をサブジェクトチェッキング命令から導出されたチェッキングアドレスと比較し、ローカル値(522)をチェッキングアドレスに関する共有リソースから読み込まれたデータ値と比較するように構成されている請求項18に記載の変換装置。
  26. 変換ユニット(19)は、サブジェクトチェッキング命令トランスレータ装置に応答して共有リソース(401)に新しいデータ値を記憶するように構成されている請求項18に記載の変化装置。
  27. 変換ユニット(19)は、グローバルトークン(501)を調整する工程(d)で構成されている請求項18に記載の変換装置。
  28. グローバルトークン(501)は数値カウンタ値である請求項18に記載の変換装置。
  29. 変換ユニット(19)は、グローバルトークン(501)の現在値をコピーすることによってローカルトークン(521)を記憶するように構成されている請求項28に記載の変換装置。
  30. 変換ユニット(19)は、カウンタを増分することによってグローバルトークン(501)を調整するように構成されている請求項28に記載の変換装置。
  31. 変換ユニット(19)は、グローバルトークン(501)をターゲットプロセッサ(13)上で原子的に調整するように構成されている請求項18に記載の変換装置。
  32. トランスレーションユニット(19)は、サブジェクトコード(17)からターゲットコード(21)に動的にバイナリトランスレーションを実行するように構成されている請求項18に記載の変換装置。
  33. ターゲットプロセッサ(13)が異なるタイプのプロセッサをサブジェクトプロセッサ(400)に備えている請求項18に記載の変換装置。
  34. マルチサブジェクトスレッド(171,172)を有するサブジェクトコード(17)から、ターゲットプロセッサ(13)によって実行可能なターゲット(21)コードへのプログラムコード変換に使用するために共有リソースのアクセス調整機構体を提供する方法を実行するコンピュータによって実行可能な命令が記録されているコンピュータ読み取り可能媒体であって、前記方法は、
    (a)マルチサブジェクトスレッド(171,172)の一つに各々関係する複数のローカルデータ構造体(502a,502b)と、サブジェクトスレッド(171,172)の各々に共通するグローバルトークン(501)とを準備するステップと、
    (b)サブジェクトコード(17)をデコードし、共有リソース(401)に関係するサブジェクトアクセス調整機構と、サブジェクトアクセス調整機構をチェックするサブジェクトチェッキング命令を設定するサブジェクト設定命令を識別するステップと、
    (c)サブジェクト設定命令に応答して、グローバルトークン(501)を調整するために、および現スレッドのためのローカルデータ構造体(502)内に少なくともローカルトークン(521)を記憶するためにターゲートコード(21)を発生するステップであって、ローカルトークン(521)が被調整グローバルトークン(501)から導出されるステップと、
    (d)サブジェクトチェッキング命令に応答して、少なくとも記憶されたローカルトークン(521)をグローバルトークン(501)と比較して共有リソース(401)による潜在的インターフェアレンスを決定するステップとを備えていることを特徴とするコンピュータ読み取り可能媒体。
  35. ローカルトークン、ローカルアドレスおよびローカル値の一つまたはそれ以上を備えているローカルデータストラクチャ。
JP2008514198A 2005-06-06 2006-06-05 共有リソースのアクセス調整機構を提供する方法、およびその装置及びコンピュータ・プログラム Expired - Fee Related JP5182816B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
GB0511462.4 2005-06-06
GB0511462A GB2427045B (en) 2005-06-06 2005-06-06 Method and apparatus for converting program code with access coordination for a shared resource
US11/219,467 2005-09-02
US11/219,467 US7962900B2 (en) 2005-06-06 2005-09-02 Converting program code with access coordination for a shared memory
PCT/GB2006/002031 WO2006131710A1 (en) 2005-06-06 2006-06-05 Method and apparatus for converting program code with access coordination for a shared resource

Publications (2)

Publication Number Publication Date
JP2008546086A true JP2008546086A (ja) 2008-12-18
JP5182816B2 JP5182816B2 (ja) 2013-04-17

Family

ID=34835186

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008514198A Expired - Fee Related JP5182816B2 (ja) 2005-06-06 2006-06-05 共有リソースのアクセス調整機構を提供する方法、およびその装置及びコンピュータ・プログラム

Country Status (7)

Country Link
US (1) US7962900B2 (ja)
EP (1) EP1955153B1 (ja)
JP (1) JP5182816B2 (ja)
CN (1) CN101194230B (ja)
GB (1) GB2427045B (ja)
HK (1) HK1098218A1 (ja)
WO (1) WO2006131710A1 (ja)

Families Citing this family (154)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070294675A1 (en) * 2006-06-20 2007-12-20 Transitive Limited Method and apparatus for handling exceptions during binding to native code
US8407675B1 (en) * 2007-02-06 2013-03-26 The United States Of America As Represented By The Secretary Of The Navy Extraction of executable code and translation to alternate platform
US20080250231A1 (en) * 2007-04-03 2008-10-09 Kabushiki Kaisha Toshiba Program code conversion apparatus, program code conversion method and recording medium
US8539485B2 (en) * 2007-11-20 2013-09-17 Freescale Semiconductor, Inc. Polling using reservation mechanism
US9329846B1 (en) * 2009-11-25 2016-05-03 Parakinetics Inc. Cooperative program code transformation
JP5059174B2 (ja) * 2010-08-10 2012-10-24 株式会社東芝 プログラム変換装置、およびそのプログラム
JP5533538B2 (ja) * 2010-10-12 2014-06-25 富士通株式会社 情報処理装置、エミュレーション処理プログラム及びエミュレーション処理方法
US8468507B2 (en) * 2011-06-10 2013-06-18 Microsoft Corporation Binding executable code at runtime
US8990515B2 (en) 2011-06-14 2015-03-24 Microsoft Technology Licensing, Llc Aliasing buffers
GB2499277B (en) * 2012-08-30 2014-04-02 Imagination Tech Ltd Global register protection in a multi-threaded processor
CN104063234B (zh) * 2013-03-19 2017-06-27 华为技术有限公司 一种兼容方法及装置
US9471292B2 (en) * 2014-04-18 2016-10-18 Intel Corporation Binary translation reuse in a system with address space layout randomization
US9729583B1 (en) 2016-06-10 2017-08-08 OneTrust, LLC Data processing systems and methods for performing privacy assessments and monitoring of new versions of computer code for privacy compliance
US20170083331A1 (en) * 2015-09-19 2017-03-23 Microsoft Technology Licensing, Llc Memory synchronization in block-based processors
US9851957B2 (en) * 2015-12-03 2017-12-26 International Business Machines Corporation Improving application code execution performance by consolidating accesses to shared resources
CN105574407B (zh) * 2015-12-28 2018-09-25 无锡天脉聚源传媒科技有限公司 一种共享的处理方法和装置
US11244367B2 (en) 2016-04-01 2022-02-08 OneTrust, LLC Data processing systems and methods for integrating privacy information management systems with data loss prevention tools or other tools for privacy design
US20220164840A1 (en) 2016-04-01 2022-05-26 OneTrust, LLC Data processing systems and methods for integrating privacy information management systems with data loss prevention tools or other tools for privacy design
US10706447B2 (en) 2016-04-01 2020-07-07 OneTrust, LLC Data processing systems and communication systems and methods for the efficient generation of privacy risk assessments
US11004125B2 (en) 2016-04-01 2021-05-11 OneTrust, LLC Data processing systems and methods for integrating privacy information management systems with data loss prevention tools or other tools for privacy design
US10997315B2 (en) 2016-06-10 2021-05-04 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US10949170B2 (en) 2016-06-10 2021-03-16 OneTrust, LLC Data processing systems for integration of consumer feedback with data subject access requests and related methods
US10762236B2 (en) 2016-06-10 2020-09-01 OneTrust, LLC Data processing user interface monitoring systems and related methods
US10242228B2 (en) 2016-06-10 2019-03-26 OneTrust, LLC Data processing systems for measuring privacy maturity within an organization
US11481710B2 (en) 2016-06-10 2022-10-25 OneTrust, LLC Privacy management systems and methods
US11418492B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing systems and methods for using a data model to select a target data asset in a data migration
US10796260B2 (en) 2016-06-10 2020-10-06 OneTrust, LLC Privacy management systems and methods
US11138299B2 (en) 2016-06-10 2021-10-05 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11416589B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11354435B2 (en) 2016-06-10 2022-06-07 OneTrust, LLC Data processing systems for data testing to confirm data deletion and related methods
US11336697B2 (en) 2016-06-10 2022-05-17 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US11038925B2 (en) 2016-06-10 2021-06-15 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US11057356B2 (en) 2016-06-10 2021-07-06 OneTrust, LLC Automated data processing systems and methods for automatically processing data subject access requests using a chatbot
US10853501B2 (en) 2016-06-10 2020-12-01 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US10685140B2 (en) 2016-06-10 2020-06-16 OneTrust, LLC Consent receipt management systems and related methods
US10708305B2 (en) 2016-06-10 2020-07-07 OneTrust, LLC Automated data processing systems and methods for automatically processing requests for privacy-related information
US10496846B1 (en) 2016-06-10 2019-12-03 OneTrust, LLC Data processing and communications systems and methods for the efficient implementation of privacy by design
US11222309B2 (en) 2016-06-10 2022-01-11 OneTrust, LLC Data processing systems for generating and populating a data inventory
US11438386B2 (en) 2016-06-10 2022-09-06 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US10726158B2 (en) 2016-06-10 2020-07-28 OneTrust, LLC Consent receipt management and automated process blocking systems and related methods
US10776514B2 (en) 2016-06-10 2020-09-15 OneTrust, LLC Data processing systems for the identification and deletion of personal data in computer systems
US11544667B2 (en) 2016-06-10 2023-01-03 OneTrust, LLC Data processing systems for generating and populating a data inventory
US11188862B2 (en) 2016-06-10 2021-11-30 OneTrust, LLC Privacy management systems and methods
US11343284B2 (en) 2016-06-10 2022-05-24 OneTrust, LLC Data processing systems and methods for performing privacy assessments and monitoring of new versions of computer code for privacy compliance
US11475136B2 (en) 2016-06-10 2022-10-18 OneTrust, LLC Data processing systems for data transfer risk identification and related methods
US10776518B2 (en) 2016-06-10 2020-09-15 OneTrust, LLC Consent receipt management systems and related methods
US10839102B2 (en) 2016-06-10 2020-11-17 OneTrust, LLC Data processing systems for identifying and modifying processes that are subject to data subject access requests
US10706176B2 (en) 2016-06-10 2020-07-07 OneTrust, LLC Data-processing consent refresh, re-prompt, and recapture systems and related methods
US10944725B2 (en) 2016-06-10 2021-03-09 OneTrust, LLC Data processing systems and methods for using a data model to select a target data asset in a data migration
US11328092B2 (en) 2016-06-10 2022-05-10 OneTrust, LLC Data processing systems for processing and managing data subject access in a distributed environment
US10885485B2 (en) 2016-06-10 2021-01-05 OneTrust, LLC Privacy management systems and methods
US10798133B2 (en) 2016-06-10 2020-10-06 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US11025675B2 (en) 2016-06-10 2021-06-01 OneTrust, LLC Data processing systems and methods for performing privacy assessments and monitoring of new versions of computer code for privacy compliance
US11100444B2 (en) 2016-06-10 2021-08-24 OneTrust, LLC Data processing systems and methods for providing training in a vendor procurement process
US11138242B2 (en) 2016-06-10 2021-10-05 OneTrust, LLC Data processing systems and methods for automatically detecting and documenting privacy-related aspects of computer software
US11277448B2 (en) 2016-06-10 2022-03-15 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US10713387B2 (en) 2016-06-10 2020-07-14 OneTrust, LLC Consent conversion optimization systems and related methods
US11636171B2 (en) 2016-06-10 2023-04-25 OneTrust, LLC Data processing user interface monitoring systems and related methods
US11403377B2 (en) 2016-06-10 2022-08-02 OneTrust, LLC Privacy management systems and methods
US11625502B2 (en) 2016-06-10 2023-04-11 OneTrust, LLC Data processing systems for identifying and modifying processes that are subject to data subject access requests
US11188615B2 (en) 2016-06-10 2021-11-30 OneTrust, LLC Data processing consent capture systems and related methods
US11227247B2 (en) 2016-06-10 2022-01-18 OneTrust, LLC Data processing systems and methods for bundled privacy policies
US10565236B1 (en) 2016-06-10 2020-02-18 OneTrust, LLC Data processing systems for generating and populating a data inventory
US10585968B2 (en) 2016-06-10 2020-03-10 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US10706131B2 (en) 2016-06-10 2020-07-07 OneTrust, LLC Data processing systems and methods for efficiently assessing the risk of privacy campaigns
US11366909B2 (en) 2016-06-10 2022-06-21 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US10873606B2 (en) 2016-06-10 2020-12-22 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US10282559B2 (en) 2016-06-10 2019-05-07 OneTrust, LLC Data processing systems for identifying, assessing, and remediating data processing risks using data modeling techniques
US11416590B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11366786B2 (en) 2016-06-10 2022-06-21 OneTrust, LLC Data processing systems for processing data subject access requests
US10678945B2 (en) 2016-06-10 2020-06-09 OneTrust, LLC Consent receipt management systems and related methods
US10282700B2 (en) 2016-06-10 2019-05-07 OneTrust, LLC Data processing systems for generating and populating a data inventory
US10878127B2 (en) 2016-06-10 2020-12-29 OneTrust, LLC Data subject access request processing systems and related methods
US10997318B2 (en) 2016-06-10 2021-05-04 OneTrust, LLC Data processing systems for generating and populating a data inventory for processing data access requests
US10706379B2 (en) 2016-06-10 2020-07-07 OneTrust, LLC Data processing systems for automatic preparation for remediation and related methods
US11354434B2 (en) 2016-06-10 2022-06-07 OneTrust, LLC Data processing systems for verification of consent and notice processing and related methods
US11416798B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing systems and methods for providing training in a vendor procurement process
US11341447B2 (en) 2016-06-10 2022-05-24 OneTrust, LLC Privacy management systems and methods
US11392720B2 (en) 2016-06-10 2022-07-19 OneTrust, LLC Data processing systems for verification of consent and notice processing and related methods
US11651104B2 (en) 2016-06-10 2023-05-16 OneTrust, LLC Consent receipt management systems and related methods
US11651106B2 (en) 2016-06-10 2023-05-16 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US11157600B2 (en) 2016-06-10 2021-10-26 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11222142B2 (en) 2016-06-10 2022-01-11 OneTrust, LLC Data processing systems for validating authorization for personal data collection, storage, and processing
US10909488B2 (en) 2016-06-10 2021-02-02 OneTrust, LLC Data processing systems for assessing readiness for responding to privacy-related incidents
US10949565B2 (en) 2016-06-10 2021-03-16 OneTrust, LLC Data processing systems for generating and populating a data inventory
US10896394B2 (en) 2016-06-10 2021-01-19 OneTrust, LLC Privacy management systems and methods
US10614247B2 (en) 2016-06-10 2020-04-07 OneTrust, LLC Data processing systems for automated classification of personal information from documents and related methods
US10572686B2 (en) 2016-06-10 2020-02-25 OneTrust, LLC Consent receipt management systems and related methods
US11238390B2 (en) 2016-06-10 2022-02-01 OneTrust, LLC Privacy management systems and methods
US11144622B2 (en) 2016-06-10 2021-10-12 OneTrust, LLC Privacy management systems and methods
US11295316B2 (en) 2016-06-10 2022-04-05 OneTrust, LLC Data processing systems for identity validation for consumer rights requests and related methods
US11074367B2 (en) 2016-06-10 2021-07-27 OneTrust, LLC Data processing systems for identity validation for consumer rights requests and related methods
US10769301B2 (en) 2016-06-10 2020-09-08 OneTrust, LLC Data processing systems for webform crawling to map processing activities and related methods
US11023842B2 (en) 2016-06-10 2021-06-01 OneTrust, LLC Data processing systems and methods for bundled privacy policies
US11087260B2 (en) 2016-06-10 2021-08-10 OneTrust, LLC Data processing systems and methods for customizing privacy training
US10803200B2 (en) 2016-06-10 2020-10-13 OneTrust, LLC Data processing systems for processing and managing data subject access in a distributed environment
US11416109B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Automated data processing systems and methods for automatically processing data subject access requests using a chatbot
US10606916B2 (en) 2016-06-10 2020-03-31 OneTrust, LLC Data processing user interface monitoring systems and related methods
US11210420B2 (en) 2016-06-10 2021-12-28 OneTrust, LLC Data subject access request processing systems and related methods
US10565161B2 (en) 2016-06-10 2020-02-18 OneTrust, LLC Data processing systems for processing data subject access requests
US10169609B1 (en) 2016-06-10 2019-01-01 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US11151233B2 (en) 2016-06-10 2021-10-19 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US10592648B2 (en) 2016-06-10 2020-03-17 OneTrust, LLC Consent receipt management systems and related methods
US11146566B2 (en) 2016-06-10 2021-10-12 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US10503926B2 (en) 2016-06-10 2019-12-10 OneTrust, LLC Consent receipt management systems and related methods
US11562097B2 (en) 2016-06-10 2023-01-24 OneTrust, LLC Data processing systems for central consent repository and related methods
US11675929B2 (en) 2016-06-10 2023-06-13 OneTrust, LLC Data processing consent sharing systems and related methods
US11301796B2 (en) 2016-06-10 2022-04-12 OneTrust, LLC Data processing systems and methods for customizing privacy training
US10642870B2 (en) 2016-06-10 2020-05-05 OneTrust, LLC Data processing systems and methods for automatically detecting and documenting privacy-related aspects of computer software
US10783256B2 (en) 2016-06-10 2020-09-22 OneTrust, LLC Data processing systems for data transfer risk identification and related methods
US11727141B2 (en) 2016-06-10 2023-08-15 OneTrust, LLC Data processing systems and methods for synching privacy-related user consent across multiple computing devices
US11200341B2 (en) 2016-06-10 2021-12-14 OneTrust, LLC Consent receipt management systems and related methods
US11294939B2 (en) 2016-06-10 2022-04-05 OneTrust, LLC Data processing systems and methods for automatically detecting and documenting privacy-related aspects of computer software
US10416966B2 (en) 2016-06-10 2019-09-17 OneTrust, LLC Data processing systems for identity validation of data subject access requests and related methods
US10706174B2 (en) 2016-06-10 2020-07-07 OneTrust, LLC Data processing systems for prioritizing data subject access requests for fulfillment and related methods
US11520928B2 (en) 2016-06-10 2022-12-06 OneTrust, LLC Data processing systems for generating personal data receipts and related methods
US11222139B2 (en) 2016-06-10 2022-01-11 OneTrust, LLC Data processing systems and methods for automatic discovery and assessment of mobile software development kits
US10565397B1 (en) 2016-06-10 2020-02-18 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US10284604B2 (en) 2016-06-10 2019-05-07 OneTrust, LLC Data processing and scanning systems for generating and populating a data inventory
US10846433B2 (en) 2016-06-10 2020-11-24 OneTrust, LLC Data processing consent management systems and related methods
US10592692B2 (en) 2016-06-10 2020-03-17 OneTrust, LLC Data processing systems for central consent repository and related methods
US10776517B2 (en) 2016-06-10 2020-09-15 OneTrust, LLC Data processing systems for calculating and communicating cost of fulfilling data subject access requests and related methods
US11134086B2 (en) 2016-06-10 2021-09-28 OneTrust, LLC Consent conversion optimization systems and related methods
US11461500B2 (en) 2016-06-10 2022-10-04 OneTrust, LLC Data processing systems for cookie compliance testing with website scanning and related methods
US11586700B2 (en) 2016-06-10 2023-02-21 OneTrust, LLC Data processing systems and methods for automatically blocking the use of tracking tools
US10510031B2 (en) 2016-06-10 2019-12-17 OneTrust, LLC Data processing systems for identifying, assessing, and remediating data processing risks using data modeling techniques
US10607028B2 (en) 2016-06-10 2020-03-31 OneTrust, LLC Data processing systems for data testing to confirm data deletion and related methods
US11228620B2 (en) 2016-06-10 2022-01-18 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US10848523B2 (en) 2016-06-10 2020-11-24 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US10318761B2 (en) 2016-06-10 2019-06-11 OneTrust, LLC Data processing systems and methods for auditing data request compliance
US10909265B2 (en) 2016-06-10 2021-02-02 OneTrust, LLC Application privacy scanning systems and related methods
US10740487B2 (en) 2016-06-10 2020-08-11 OneTrust, LLC Data processing systems and methods for populating and maintaining a centralized database of personal data
US10467432B2 (en) 2016-06-10 2019-11-05 OneTrust, LLC Data processing systems for use in automatically generating, populating, and submitting data subject access requests
US10282182B2 (en) * 2016-09-23 2019-05-07 Intel Corporation Technologies for translation cache management in binary translation systems
US10013577B1 (en) 2017-06-16 2018-07-03 OneTrust, LLC Data processing systems for identifying whether cookies contain personally identifying information
CN109143983B (zh) * 2018-08-15 2019-12-24 杭州电子科技大学 嵌入式可编程控制器的运动控制方法及装置
US11144675B2 (en) 2018-09-07 2021-10-12 OneTrust, LLC Data processing systems and methods for automatically protecting sensitive data within privacy management systems
US11544409B2 (en) 2018-09-07 2023-01-03 OneTrust, LLC Data processing systems and methods for automatically protecting sensitive data within privacy management systems
US10803202B2 (en) 2018-09-07 2020-10-13 OneTrust, LLC Data processing systems for orphaned data identification and deletion and related methods
WO2022011142A1 (en) 2020-07-08 2022-01-13 OneTrust, LLC Systems and methods for targeted data discovery
EP4189569A1 (en) 2020-07-28 2023-06-07 OneTrust LLC Systems and methods for automatically blocking the use of tracking tools
US11475165B2 (en) 2020-08-06 2022-10-18 OneTrust, LLC Data processing systems and methods for automatically redacting unstructured data from a data subject access request
US11436373B2 (en) 2020-09-15 2022-09-06 OneTrust, LLC Data processing systems and methods for detecting tools for the automatic blocking of consent requests
WO2022061270A1 (en) 2020-09-21 2022-03-24 OneTrust, LLC Data processing systems and methods for automatically detecting target data transfers and target data processing
WO2022099023A1 (en) 2020-11-06 2022-05-12 OneTrust, LLC Systems and methods for identifying data processing activities based on data discovery results
US11687528B2 (en) 2021-01-25 2023-06-27 OneTrust, LLC Systems and methods for discovery, classification, and indexing of data in a native computing system
WO2022170047A1 (en) 2021-02-04 2022-08-11 OneTrust, LLC Managing custom attributes for domain objects defined within microservices
US20240111899A1 (en) 2021-02-08 2024-04-04 OneTrust, LLC Data processing systems and methods for anonymizing data samples in classification analysis
WO2022173912A1 (en) 2021-02-10 2022-08-18 OneTrust, LLC Systems and methods for mitigating risks of third-party computing system functionality integration into a first-party computing system
WO2022178089A1 (en) 2021-02-17 2022-08-25 OneTrust, LLC Managing custom workflows for domain objects defined within microservices
US11546661B2 (en) 2021-02-18 2023-01-03 OneTrust, LLC Selective redaction of media content
WO2022192269A1 (en) 2021-03-08 2022-09-15 OneTrust, LLC Data transfer discovery and analysis systems and related methods
US11562078B2 (en) 2021-04-16 2023-01-24 OneTrust, LLC Assessing and managing computational risk involved with integrating third party computing functionality within a computing system
US11620142B1 (en) 2022-06-03 2023-04-04 OneTrust, LLC Generating and customizing user interfaces for demonstrating functions of interactive user environments

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001519937A (ja) * 1997-01-23 2001-10-23 サン・マイクロシステムズ・インコーポレイテッド コンピュータリソースのロック処理
WO2004059415A2 (en) * 2002-12-31 2004-07-15 International Business Machines Corporation Method and system for authentification in a heterogeneous federated environment, i.e. single sign on in federated domains

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6101524A (en) * 1997-10-23 2000-08-08 International Business Machines Corporation Deterministic replay of multithreaded applications
US6237019B1 (en) 1998-03-18 2001-05-22 International Business Machines Corporation Method and apparatus for performing a semaphore operation
US6360194B1 (en) 1998-09-08 2002-03-19 Bull Hn Information Systems Inc. Different word size multiprocessor emulation
EP1385090B1 (en) 1998-10-10 2012-06-13 International Business Machines Corporation Program code conversion for variably sized registers
US7516453B1 (en) * 1998-10-26 2009-04-07 Vmware, Inc. Binary translator with precise exception synchronization mechanism
US6223335B1 (en) 1998-12-09 2001-04-24 Sun Microsystems, Inc. Platform independent double compare and swap operation
US7856633B1 (en) * 2000-03-24 2010-12-21 Intel Corporation LRU cache replacement for a partitioned set associative cache
EP1202172A1 (en) * 2000-10-31 2002-05-02 Universiteit Gent Topological, on-the-fly classification of objects into a global set and local sets
US8473922B2 (en) * 2001-09-19 2013-06-25 Hewlett-Packard Development Company, L.P. Runtime monitoring in component-based systems
US20030066056A1 (en) * 2001-09-28 2003-04-03 Petersen Paul M. Method and apparatus for accessing thread-privatized global storage objects
US7496494B2 (en) * 2002-09-17 2009-02-24 International Business Machines Corporation Method and system for multiprocessor emulation on a multiprocessor host system
US7103528B2 (en) 2002-09-19 2006-09-05 Lsi Logic Corporation Emulated atomic instruction sequences in a multiprocessor system
JP4436036B2 (ja) * 2002-12-18 2010-03-24 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報処理装置、トレース処理方法、プログラム及び記録媒体
US7178062B1 (en) * 2003-03-12 2007-02-13 Sun Microsystems, Inc. Methods and apparatus for executing code while avoiding interference
US7594089B2 (en) * 2003-08-28 2009-09-22 Mips Technologies, Inc. Smart memory based synchronization controller for a multi-threaded multiprocessor SoC
US7366956B2 (en) * 2004-06-16 2008-04-29 Hewlett-Packard Development Company, L.P. Detecting data races in multithreaded computer programs
US20060161919A1 (en) * 2004-12-23 2006-07-20 Onufryk Peter Z Implementation of load linked and store conditional operations
US8327336B2 (en) * 2009-03-18 2012-12-04 International Business Machines Corporation Enhanced thread stepping

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001519937A (ja) * 1997-01-23 2001-10-23 サン・マイクロシステムズ・インコーポレイテッド コンピュータリソースのロック処理
WO2004059415A2 (en) * 2002-12-31 2004-07-15 International Business Machines Corporation Method and system for authentification in a heterogeneous federated environment, i.e. single sign on in federated domains

Non-Patent Citations (16)

* Cited by examiner, † Cited by third party
Title
CSNA200003187001; 「MPC500ファミリ RCPUリファレンス・マニュアル RCPURMJ/AD」 第1版, 19960715, 第4-66〜4-69,9-98,9-165,D-1〜D-5頁, 日本モトローラ株式会社 *
CSNA200200090001; 「UXソフトウェア 64ビットアセンブラプログラミングの手引 WTJ39-1」 初版, 199706, 第29〜38頁, 日本電気株式会社 *
CSND199900700006; Ashis Khan: '「64ビット・アーキテクチャのR4000を開発」' 日経エレクトロニクス 1991年10月14日号(No.538), 19911014, 第171〜185頁, 日経BP社 *
CSND200200673007; Joshua Fox著,村井進訳: '「協調型アプリケーションとJSDT JSDTにできること、できないこと」' TransTECH 2000年4月号(第9巻,第8号), 20000401, 第105〜113頁, 株式会社翔泳社 *
CSND200501296011; 青柳龍也: '「J2SE5解体新書 第8回 新たな同期メカニズム」' 月刊ジャバワールド(Java WORLD) 2005年4月号(第9巻,第4号), 20050401, 第118〜129頁, (株)IDGジャパン *
CSNG200401699007; 薄井弘之(外3名): '「Responsive Multithreaded Processorの同期機構の設計と実装」' 情報処理学会研究報告 Vol.2003, No.40(2003-ARC-153), 20030508, 第37〜42頁, 社団法人情報処理学会 *
JPN6012064832; 薄井弘之(外3名): '「Responsive Multithreaded Processorの同期機構の設計と実装」' 情報処理学会研究報告 Vol.2003, No.40(2003-ARC-153), 20030508, 第37〜42頁, 社団法人情報処理学会 *
JPN6012064834; Ashis Khan: '「64ビット・アーキテクチャのR4000を開発」' 日経エレクトロニクス 1991年10月14日号(No.538), 19911014, 第171〜185頁, 日経BP社 *
JPN6012064837; 「MPC500ファミリ RCPUリファレンス・マニュアル RCPURMJ/AD」 第1版, 19960715, 第4-66〜4-69,9-98,9-165,D-1〜D-5頁, 日本モトローラ株式会社 *
JPN6012064840; 「UXソフトウェア 64ビットアセンブラプログラミングの手引 WTJ39-1」 初版, 199706, 第29〜38頁, 日本電気株式会社 *
JPN6012064843; Steve Kleiman(外2名)著、岩本信一訳: 「実践マルチスレッドプログラミング」 初版, 19980331, 第257〜269頁, 株式会社アスキー *
JPN6012064847; 中森章: 「Interface増刊 マイクロプロセッサ・アーキテクチャ入門」 , 20040401, 第231〜253頁, CQ出版株式会社 *
JPN6012064848; David R. Butenhof著,油井尊訳: 「POSIXスレッドプログラミング」 初版, 19981025, 第402頁, アジソン・ウィスレイ・パブリッシャーズ・ジャパン株 *
JPN6012064850; Joshua Fox著,村井進訳: '「協調型アプリケーションとJSDT JSDTにできること、できないこと」' TransTECH 2000年4月号(第9巻,第8号), 20000401, 第105〜113頁, 株式会社翔泳社 *
JPN6012064853; 青柳龍也: '「J2SE5解体新書 第8回 新たな同期メカニズム」' 月刊ジャバワールド(Java WORLD) 2005年4月号(第9巻,第4号), 20050401, 第118〜129頁, (株)IDGジャパン *
JPN6012064855; Uresh Vahalia著,徳田英幸(外3名)訳: 「最前線UNIXのカーネル」 初版, 20000515, 第220〜224頁, 株式会社ピアソン・エデュケーション *

Also Published As

Publication number Publication date
JP5182816B2 (ja) 2013-04-17
GB0511462D0 (en) 2005-07-13
HK1098218A1 (en) 2007-07-13
WO2006131710A1 (en) 2006-12-14
CN101194230B (zh) 2010-05-19
GB2427045B (en) 2007-11-21
US20060277532A1 (en) 2006-12-07
GB2427045A (en) 2006-12-13
EP1955153B1 (en) 2013-11-20
EP1955153A1 (en) 2008-08-13
US7962900B2 (en) 2011-06-14
CN101194230A (zh) 2008-06-04

Similar Documents

Publication Publication Date Title
JP5182816B2 (ja) 共有リソースのアクセス調整機構を提供する方法、およびその装置及びコンピュータ・プログラム
EP2176763B1 (en) Memory transaction grouping
US20020199179A1 (en) Method and apparatus for compiler-generated triggering of auxiliary codes
US7856618B2 (en) Adaptively generating code for a computer program
US8924922B2 (en) Pre-compiling hosted managed code
US6721944B2 (en) Marking memory elements based upon usage of accessed information during speculative execution
KR950006616B1 (ko) 변환된 프로그램 코드에서 소스 명령 분자를 보전하기 위한 시스템 및 방법
US8990786B2 (en) Program optimizing apparatus, program optimizing method, and program optimizing article of manufacture
JP5182815B2 (ja) プログラム・コード変換において例外を正確に処理するための方法、並びにその装置及びコンピュータ・プログラム
US9378008B2 (en) Method and system for creating, applying, and removing a software fix
US20080320282A1 (en) Method And Systems For Providing Transaction Support For Executable Program Components
US20070294675A1 (en) Method and apparatus for handling exceptions during binding to native code
US20130086348A1 (en) Lock-Clustering Compilation for Software Transactional Memory
JP2015084251A (ja) ソフトウェア・アプリケーションの性能向上
US8843920B2 (en) Systems and methods for deferring software implementation decisions until load time
US20080148246A1 (en) System and method for redundant array copy removal in a pointer-free language
US7168076B2 (en) Facilitating efficient join operations between a head thread and a speculative thread
JPH06324881A (ja) メモリデータの重なり判定機能を備えたコンパイラ装置
US20040015925A1 (en) Method, article of manufacture and apparatus for performing automatic intemodule call linkage optimization
JP2005529383A (ja) シングルスレッドアプリケーションを支援する時間多重化推論的マルチスレッディング
KR101244069B1 (ko) 프로그램 코드 변환시 정밀한 예외 핸들링을 위한 방법 및장치
US8769514B2 (en) Detecting race conditions with a software transactional memory system
US7395530B2 (en) Method for implementing single threaded optimizations in a potentially multi-threaded environment
JP6011329B2 (ja) プログラム生成装置、プログラム生成方法、および、コンピュータ・プログラム
Oni et al. Fine-Grained Overhead Analysis Utilizing Atomic Instructions for Cross-ISA Dynamic Binary Translation on Multicore Processor

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090522

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20090731

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20090824

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20090824

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120111

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120322

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120322

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120830

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121105

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20121105

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20121220

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20121220

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20121220

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130109

R150 Certificate of patent or registration of utility model

Ref document number: 5182816

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160125

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees