JP5182816B2 - 共有リソースのアクセス調整機構を提供する方法、およびその装置及びコンピュータ・プログラム - Google Patents

共有リソースのアクセス調整機構を提供する方法、およびその装置及びコンピュータ・プログラム Download PDF

Info

Publication number
JP5182816B2
JP5182816B2 JP2008514198A JP2008514198A JP5182816B2 JP 5182816 B2 JP5182816 B2 JP 5182816B2 JP 2008514198 A JP2008514198 A JP 2008514198A JP 2008514198 A JP2008514198 A JP 2008514198A JP 5182816 B2 JP5182816 B2 JP 5182816B2
Authority
JP
Japan
Prior art keywords
subject
value
instruction
local
code
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.)
Expired - Fee Related
Application number
JP2008514198A
Other languages
English (en)
Other versions
JP2008546086A (ja
Inventor
ノウルズ、ポール
バラクラフ、ギャビン
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
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)

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は「ロード−リンク」と「ストア−コンディショナル」タイプの命令とを合成するのに使用される。ロード−リンク命令はアクセス調整機構を設定(またはシール)するのに使用される。ストア−コンディショナル命令はアクセス調整機構をチェックし、共有リソースによる潜在的インターフェアレンスを検出するのに使用される。
これらの命令の各々は特定アドレスに関連しており、一例として、
再試行:
ロード−リンク[MEM LL]
...ロード−データに対して操作を実行、
ストア−コンディショナル[MEM SC]
ストア−コンディショナルが失敗であれば分岐:再試行
...
(retry:
load-link [MEM LL]
...perform operations on the loaded data
store-conditional [MEM SC]
branch if store-conditional fails: retry
...)である。
ロード−リンクタイプの命令が遭遇されたとき、データはこの命令に関連するメモリアドレス(すなわち、[MEM LL])から読み込まれ、アドレス[MEM LL]がリザベーションレジスタ404に書き込まれ、予約フラグ405が設定される。
メモリアドレスから読み込まれたデータが、次に一つまたはそれ以上の操作(すなわち、一つまたはそれ以上の介在サブジェクト命令)に使用されることができる。例えば、インクリメント操作、付加操作またはビット−シフト操作が、読み込まれたデータに対して実行される。一般的に、少数の操作のみが対応ロード−リンクと一つ、二つまたは三つの命令のようなストア−コンディショナル命令間で実行される。この操作はインターフェアレンスの可能性を低減する。しかし、概して一対のロード−リンクとストア−コンディショナル命令との間で実行されることができる多数の命令に限定されない。
ストア−コンディショナル命令は、これらの介在操作の結果をメモリ401に戻して書き込むのに使用されるが、普通、データが読み込まれた同じメモリアドレスに戻される。すなわち、ロード−リンクおよびストア−コンディショナル命令は普通、[MEM LL]が[MEM SC]と同じアドレスとなるような一致した対で生成される。
ストア−コンディショナル命令は、任意のストアアドレス[MEM SC]をリザベーションレジスタ404内に記憶されたアドレス(なおもMEM LLになければならない)と比較する。被比較アドレスが同じであり(すなわち、MEM SCが記憶されたMEM LLと同じ)、予約フラグ405がなおも設定されておれば、次にストアが実行される。
マルチ−スレッド環境において、潜在的インターフェアする事象がサブジェクトシステム内(すなわち、別のサブジェクトスレッド内または別のサブジェクトプロセッサ上)のどこかで発生するかもしれない。ここで、潜在的インターフェアする事象、(a)レジスタフラグ404がなおも設定されていなければならないときにクリアされること、又は、(b)リザベーションレジスタ405内に保持されたアドレスがストア−コンディショナル命令内で特定されたアドレス(すなわち、[MEM SC])と同じでないことのいずれかによって検出される。
ストア−コンディショナル命令が続行(すなわち、インターフェアレンスが検出されない)されれば、次に予約フラグ404がクリアされ、プログラム実行が続行される。しかし、ストア−コンディショナル命令が失敗すれば、次に命令がインターフェアレンスなしに実行されるまで、普通はプログラムが反復してロード−リンク命令にループバックする。
潜在的インターフェアする事象の実施例として、割り込み、システムコール、またはリザベーションレジスタ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に示したように、各ローカルデータ構造体502a,502bは、ローカルトークン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 globaltokenのような原子的操作を使用してグローバルトークン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 (19)

  1. マルチサブジェクトスレッドを有しサブジェクトプロセッサによって実行可能なサブジェクトコードを、ターゲットプロセッサによって実行可能なターゲットコードに変換するプログラムコード内で使用するための、共有リソースへのアクセスを調整するための機構(以下、ターゲットアクセス調整機構という)を提供する方法であって、前記ターゲットアクセス調整機構は、マルチサブジェクトスレッドの一つに各々関連付けられたローカルデータ構造体と、前記マルチサブジェクトスレッドの各々に共通する数値カウンタ値とを有するものであり、
    前記ターゲットプロセッサを備えているコンピュータが、
    (a)前記マルチサブジェクトスレッドの一つに各々関連付けられた前記ローカルデータ構造体と、前記マルチサブジェクトスレッドの各々に共通する前記数値カウンタ値とを準備するステップであって、前記ローカルデータ構造体は、前記数値カウンタ値の現在値、ローカル値及びローカルメモリアドレスを格納するための構造体であり、前記ローカル値は、共有リソースから読み込まれるデータ値であり、前記ローカルメモリアドレスは、前記データ値の読み込み元のアドレスである、前記準備するステップと、
    (b)前記サブジェクトコードをデコードし、前記サブジェクトプロセッサ内に設けられたアクセス調整機構(以下、サブジェクトアクセス調整機構という)を設定するために使用されるサブジェクト設定命令と、前記サブジェクトアクセス調整機構をチェックし且つ共有リソースに関連する潜在的なインターフェアレンスを検出するために使用されるサブジェクトチェッキング命令とを識別するステップであって、前記サブジェクトアクセス調整機構は前記共有リソースに関係し、前記マルチサブジェクトスレッドのうちの一つを超えるスレッドが前記共有リソースにアクセスすることによって生じる不一致または予期しない動作であるインターフェアレンスが共有リソースに関して発生しているかどうかを検出するために使用されるリザベーションを備えており、前記リザベーションは命令に関連付けられたメモリアドレスを書き込むためのリザベーションレジスタと、前記リザベーションレジスタが設定されているか又はクリアされているかを示す予約フラグとを備えており、前記サブジェクトアクセス調整機構におけるインターフェアレンスの検出は、前記予約フラグがなおも設定されていなければならないときにクリアされるか、又は前記リザベーションレジスタ内に保持されたアドレスが前記サブジェクトチェッキング命令内で特定されたアドレスと同じでないことのいずれかによって検出され、前記サブジェクトチェッキング命令が続行する場合、すなわち前記潜在的なインターフェアレンスが検出されない場合に、前記インターフェアレンスが発生していないと判断して前記予約フラグがクリアにされるものである、前記識別するステップと、
    (c)前記識別されたサブジェクト設定命令に応答して、
    (c−1)前記数値カウンタ値をインクリメント又はデクリメントのいずれか一方による数学的操作による調整をし、そして当該調整された数値カウンタ値、すなわち前記数値カウンタ値の現在値を、現スレッドのための前記ローカルデータ構造体内に記憶するステップと、
    (c−2)前記サブジェクト設定命令で特定されたメモリロケーションからデータ値をロードするステップであって、前記データ値は前記サブジェクト設定命令によって提供された共有リソースに関連する設定アドレスに応答して共有リソースから読み込まれるデータ値である、前記ロードするステップと、当該ロードされたデータ値を前記ローカルデータ構造体内に記憶し、且つ前記設定アドレスのコピーを前記ローカルデータ構造体内のローカルメモリアドレスとして記憶するステップと、
    (d)前記識別されたサブジェクトチェッキング命令に応答して、
    (d−1)前記サブジェクトチェッキング命令内で特定されたアドレスから導出されたチェッキングアドレスと前記ローカルデータ構造体内に記憶されたローカルメモリアドレスと比較するステップであって、前記サブジェクトチェッキング命令内で特定されたアドレスから導出されたチェッキングアドレスと前記ローカルデータ構造体内に記憶されたローカルメモリアドレスとが等しくない場合には、別のサブジェクト設定命令が現行のマルチサブジェクトスレッドで実行されていることを示す、前記比較するステップと、
    (d−2)記共通する数値カウンタ値の現在値と前記ローカルデータ構造体内に記憶された前記数値カウンタ値を比較するステップであって、前記共通する数値カウンタ値の現在値と前記ローカルデータ構造体内に記憶された前記数値カウンタ値とが等しくない場合には、前記共通する数値カウンタ値の現在値が、別のマルチサブジェクトスレッド内の潜在的なインターフェアリング命令によって調整される、前記比較するステップと、
    (d−3)前記サブジェクトチェッキング命令内に特定付けられたメモリロケーションに現在ストアされている値と前記ローカルデータ構造体内に記憶された前記ローカル値とを比較するステップであって、前記サブジェクトチェッキング命令内に特定付けられたメモリロケーションに現在ストアされている値と前記ローカルデータ構造体内に記憶された前記ローカル値とが等しくない場合には、前記サブジェクト設定命令と前記サブジェクトチェッキング命令との間の介在命令がインターフェアレンスなしに実行されなかったことが検出される、前記比較するステップと、
    を実行することを含み、前記(d−1)、(d−2)及び(d−3)の各比較において一致しなかった場合に失敗フラグを示すように設定され、前記(d−1)、(d−2)及び(d−3)の各比較が全て一致した場合に成功フラグを示すように設定される、前記方法。
  2. 前記コンピュータが、
    前記共有リソースに関連する潜在的にインターフェアする事象に応答して前記数値カウンタ値を前記調整するステップであって、前記潜在的にインターフェアする事象が、割り込み、システムコール、又は前記レジスタに保持されたメモリアドレスへの記憶である、前記調整するステップと
    をさらに実行することを含む、請求項1に記載の方法。
  3. 前記コンピュータが、
    前記サブジェクトコードまたは前記サブジェクトコードに影響を与える割り込み又はシステムコールを検出するステップであって、当該検出は共有リソースに関連する潜在的なインターフェアレンスを表す、前記検出するステップと、
    前記検出に応じて、前記数値カウンタ値を前記調整するステップ
    をさらに実行することを含む、請求項1又は2に記載の方法。
  4. 前記コンピュータが、
    第1サブジェクトスレッドに関して前記ステップ(c)を実行するステップと、
    第2サブジェクトスレッドに関して前記数値カウンタ値を前記調整するステップと、
    前記第1サブジェクトスレッドに関して前記ステップ(d)を実行し、前記第2サブジェクトスレッドに関して前記共有リソースに関連する前記潜在的なインターフェアレンスを決定するステップと
    をさらに実行することを含む、請求項1〜3のいずれか一項に記載の方法。
  5. 前記ステップ(d)は、前記サブジェクトチェッキング命令に応答して共有リソースに新しいデータ値を記憶するステップをさらに含む、請求項1〜のいずれか一項に記載の方法。
  6. 前記コンピュータが、
    前記数値カウンタ値を前記ターゲットプロセッサ上で原子的に調整するステップ
    をさらに実行することを含む、請求項1〜のいずれか一項に記載の方法。
  7. 前記コンピュータが、
    前記サブジェクトプロセッサによって実行可能なサブジェクトコードを、前記ターゲットプロセッサによって実行可能なターゲットコードに変換するステップ
    をさらに実行することを含む、請求項1〜のいずれか一項に記載の方法。
  8. 前記コンピュータが、
    前記サブジェクトコードから前記ターゲットコードに動的にバイナリトランスレーションを実行するステップ
    をさらに実行することを含む、請求項に記載の方法。
  9. 前記コンピュータが、
    前記サブジェクトチェッキング命令が失敗する場合に、前記サブジェクト設定命令にループバックするステップ
    をさらに実行することを含む、請求項に記載の方法。
  10. マルチサブジェクトスレッドを有しサブジェクトプロセッサによって実行可能なサブジェクトコードをターゲットプロセッサによって実行可能なターゲットコードに変換する装置であって、前記装置は前記ターゲットプロセッサを備えており、前記装置は前記変換するプログラムコード内で使用するための、共有リソースへのアクセスを調整するための機構(以下、ターゲットアクセス調整機構という)を提供し、前記ターゲットアクセス調整機構は、マルチサブジェクトスレッドの一つに各々関連付けられたローカルデータ構造体と、前記マルチサブジェクトスレッドの各々に共通する数値カウンタ値とを有するものであり、
    前記装置は、
    (a)前記マルチサブジェクトスレッドの一つに各々関連付けられた前記ローカルデータ構造体と、前記マルチサブジェクトスレッドの各々に共通する前記数値カウンタ値とを準備し、前記ローカルデータ構造体は、前記数値カウンタ値の現在値、ローカル値及びローカルメモリアドレスを格納するための構造体であり、前記ローカル値は、共有リソースから読み込まれるデータ値であり、前記ローカルメモリアドレスは、前記データ値の読み込み元のアドレスであり、
    (b)前記サブジェクトコードをデコードし、前記サブジェクトプロセッサ内に設けられたアクセス調整機構(以下、サブジェクトアクセス調整機構という)を設定するために使用されるサブジェクト設定命令と、前記サブジェクトアクセス調整機構をチェックし且つ共有リソースに関連する潜在的なインターフェアレンスを検出するために使用されるサブジェクトチェッキング命令とを識別し、前記サブジェクトアクセス調整機構は前記共有リソースに関係し、前記マルチサブジェクトスレッドのうちの一つを超えるスレッドが前記共有リソースにアクセスすることによって生じる不一致または予期しない動作であるインターフェアレンスが共有リソースに関して発生しているかどうかを検出するために使用されるリザベーションを備えており、前記リザベーションは命令に関連付けられたメモリアドレスを書き込むためのリザベーションレジスタと、前記リザベーションレジスタが設定されているか又はクリアされているかを示す予約フラグとを備えており、前記サブジェクトアクセス調整機構におけるインターフェアレンスの検出は、前記予約フラグがなおも設定されていなければならないときにクリアされるか、又は前記リザベーションレジスタ内に保持されたアドレスが前記サブジェクトチェッキング命令内で特定されたアドレスと同じでないことのいずれかによって検出され、前記サブジェクトチェッキング命令が続行する場合、すなわち前記潜在的なインターフェアレンスが検出されない場合に、前記インターフェアレンスが発生していないと判断して前記予約フラグがクリアにされるものであり、
    (c)前記識別されたサブジェクト設定命令に応答して、
    (c−1)前記数値カウンタ値をインクリメント又はデクリメントのいずれか一方による数学的操作による調整をし、そして当該調整された数値カウンタ値、すなわち前記数値カウンタ値の現在値を、現スレッドのための前記ローカルデータ構造体内に記憶し、
    (c−2)前記サブジェクト設定命令で特定されたメモリロケーションからデータ値をロードし、ここで、前記データ値は前記サブジェクト設定命令によって提供された共有リソースに関連する設定アドレスに応答して共有リソースから読み込まれるデータ値であり、当該ロードされたデータ値を前記ローカルデータ構造体内に記憶し、且つ前記設定アドレスのコピーを前記ローカルデータ構造体内のローカルメモリアドレスとして記憶し、
    (d)前記識別されたサブジェクトチェッキング命令に応答して、
    (d−1)前記サブジェクトチェッキング命令内で特定されたアドレスから導出されたチェッキングアドレスと前記ローカルデータ構造体内に記憶されたローカルメモリアドレスと比較し、前記サブジェクトチェッキング命令内で特定されたアドレスから導出されたチェッキングアドレスと前記ローカルデータ構造体内に記憶されたローカルメモリアドレスとが等しくない場合には、別のサブジェクト設定命令が現行のマルチサブジェクトスレッドで実行されていることを示し、
    (d−2)記共通する数値カウンタ値の現在値と前記ローカルデータ構造体内に記憶された前記数値カウンタ値を比較し、前記共通する数値カウンタ値の現在値と前記ローカルデータ構造体内に記憶された前記数値カウンタ値とが等しくない場合には、前記共通する数値カウンタ値の現在値が、別のマルチサブジェクトスレッド内の潜在的なインターフェアリング命令によって調整され
    (d−3)前記サブジェクトチェッキング命令内に特定付けられたメモリロケーションに現在ストアされている値と前記ローカルデータ構造体内に記憶された前記ローカル値とを比較し、前記サブジェクトチェッキング命令内に特定付けられたメモリロケーションに現在ストアされている値と前記ローカルデータ構造体内に記憶された前記ローカル値とが等しくない場合には、前記サブジェクト設定命令と前記サブジェクトチェッキング命令との間の介在命令がインターフェアレンスなしに実行されなかったことが検出され、
    前記(d−1)、(d−2)及び(d−3)の各比較において一致しなかった場合に失敗フラグを示すように設定され、前記(d−1)、(d−2)及び(d−3)の各比較が全て一致した場合に成功フラグを示すように設定される、前記装置。
  11. 前記装置は、
    前記共有リソースに関連する潜在的にインターフェアする事象に応答して前記数値カウンタ値を前記調整し、
    前記潜在的にインターフェアする事象が、割り込み、システムコール、又は前記レジスタに保持されたメモリアドレスへの記憶である、請求項10に記載の装置。
  12. 前記装置は、
    前記サブジェクトコードまたは前記サブジェクトコードに影響を与える割り込み又はシステムコールを検出し、当該検出は共有リソースに関連する潜在的なインターフェアレンスを表し、
    前記検出に応じて、前記数値カウンタ値を前記調整する、
    請求項10又は11に記載の装置。
  13. 前記装置は、
    第1サブジェクトスレッドに関して前記(c)を実行し、
    第2サブジェクトスレッドに関して前記数値カウンタ値を前記調整し、
    前記第1サブジェクトスレッドに関して前記(d)を実行し、前記第2サブジェクトスレッドに関して前記共有リソースに関連する前記潜在的なインターフェアレンスを決定する、
    請求項1012のいずれか一項に記載の装置。
  14. 前記(d)において、さらに、
    前記サブジェクトチェッキング命令に応答して共有リソースに新しいデータ値を記憶する、
    請求項1013のいずれか一項に記載の装置。
  15. 前記装置は、
    前記数値カウンタ値を前記ターゲットプロセッサ上で原子的に調整する、
    請求項1014のいずれか一項に記載の装置。
  16. 前記装置は、
    前記サブジェクトコードから前記ターゲットコードに動的にバイナリトランスレーションを実行する、
    請求項1015のいずれか一項に記載の装置。
  17. 前記装置は、
    前記サブジェクトチェッキング命令が失敗する場合に、前記サブジェクト設定命令にループバックする、
    請求項1016のいずれか一項に記載の装置。
  18. 請求項1〜のいずれか一項に記載の方法の複数のステップから成る方法をコンピュータが備えているターゲットプロセッサに実行させる命令を格納したコンピュータ読み取り可能な記憶媒体。
  19. ターゲットプロセッサを備えているコンピュータに、請求項1〜のいずれか一項に記載の方法の各ステップを実行させるコンピュータ・プログラム。
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 JP2008546086A (ja) 2008-12-18
JP5182816B2 true 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

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4196414B2 (ja) * 1997-01-23 2008-12-17 サン・マイクロシステムズ・インコーポレーテッド コンピュータリソースのロック処理
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 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報処理装置、トレース処理方法、プログラム及び記録媒体
US20040128542A1 (en) * 2002-12-31 2004-07-01 International Business Machines Corporation Method and system for native authentication protocols in a heterogeneous federated environment
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

Also Published As

Publication number Publication date
GB0511462D0 (en) 2005-07-13
JP2008546086A (ja) 2008-12-18
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) 共有リソースのアクセス調整機構を提供する方法、およびその装置及びコンピュータ・プログラム
KR950006616B1 (ko) 변환된 프로그램 코드에서 소스 명령 분자를 보전하기 위한 시스템 및 방법
US7543284B2 (en) Partial dead code elimination optimizations for program code conversion
US20020199179A1 (en) Method and apparatus for compiler-generated triggering of auxiliary codes
US7856618B2 (en) Adaptively generating code for a computer program
JP4844971B2 (ja) インタープリタの最適化をプログラム・コード変換の間に実行する方法及び装置
EP2176763B1 (en) Memory transaction grouping
US7243333B2 (en) Method and apparatus for creating and executing integrated executables in a heterogeneous architecture
JP5182815B2 (ja) プログラム・コード変換において例外を正確に処理するための方法、並びにその装置及びコンピュータ・プログラム
US8990786B2 (en) Program optimizing apparatus, program optimizing method, and program optimizing article of manufacture
US20040221278A1 (en) Method and apparatus for performing interpreter optimizations during program code conversion
US20070294675A1 (en) Method and apparatus for handling exceptions during binding to native code
US20060206880A1 (en) Execution control during program code conversion
US7168076B2 (en) Facilitating efficient join operations between a head thread and a speculative thread
US20040221279A1 (en) Method and apparatus for performing lazy byteswapping optimizations during program code conversion
US20030188141A1 (en) Time-multiplexed speculative multi-threading to support single-threaded applications
KR101244069B1 (ko) 프로그램 코드 변환시 정밀한 예외 핸들링을 위한 방법 및장치
Elmas et al. Goldilocks: a race-aware Java runtime
US20090328019A1 (en) Detecting race conditions with a software transactional memory system
JPH08161169A (ja) Vliw方式の計算機システム及びvliwの解釈・実行方法
WO2006095155A1 (en) Execution control during program code conversion
JP6011329B2 (ja) プログラム生成装置、プログラム生成方法、および、コンピュータ・プログラム
JP2002182926A (ja) コンパイル方法及びコンピュータ読み取り可能な記録媒体
Bebenita Trace-Based Compilation and Optimization in Meta-Circular Virtual Execution Environments
GB2400938A (en) Lazy byteswapping optimizations during program code conversion

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