JP2017520851A - トランザクションにおけるレジスタの動的なセーブ - Google Patents

トランザクションにおけるレジスタの動的なセーブ Download PDF

Info

Publication number
JP2017520851A
JP2017520851A JP2016575654A JP2016575654A JP2017520851A JP 2017520851 A JP2017520851 A JP 2017520851A JP 2016575654 A JP2016575654 A JP 2016575654A JP 2016575654 A JP2016575654 A JP 2016575654A JP 2017520851 A JP2017520851 A JP 2017520851A
Authority
JP
Japan
Prior art keywords
data
storage elements
mask
data storage
subset
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
JP2016575654A
Other languages
English (en)
Other versions
JP6637450B2 (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 JP2017520851A publication Critical patent/JP2017520851A/ja
Application granted granted Critical
Publication of JP6637450B2 publication Critical patent/JP6637450B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/466Transaction processing
    • G06F9/467Transactional 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string 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/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

Abstract

データ処理装置は、それぞれがデータを記憶するように構成される、複数のデータ・ストレージ要素を備える。マスク・ストレージ回路はマスクを記憶し、処理回路は1つ又は複数の命令を実行する。データ・セーブ手段は、トランザクション開始命令に応答して、データ・ストレージ要素のサブセットを選択してデータ・ストレージ要素のサブセットのバックアップをセーブするように構成される。次に、マスク制御回路は、データ・セーブ手段によって選択されたデータ・ストレージ要素のサブセットを示すようにマスクをアップデートする。最後に、モニタはマスクによって示されなかったデータ・ストレージ要素のうちの1つに行われた書き込み又は書き込み試行を検出する。したがって、ユーザはシステム内のすべてのデータ・ストレージ要素、例えばレジスタ、をセーブする必要がなく、トランザクションを実行するためにどのデータ・ストレージ要素をセーブしなければならないかを詳細に特定する必要もない。その代わりに、セーブされなければならないデータ・ストレージ要素のセットが動的に決定されて特定され、セーブ又はバックアップされていないデータ・ストレージ要素への書き込み試行が行われた場合にシステムが応答可能である。

Description

本開示は、データ処理の分野に関し、特にデータ処理装置におけるトランザクションの使用に関する。
マルチ・プロセッサ・システムにおいて、様々な処理装置間の調整(coordination)を保証することがしばしば必要になる。例えば、プロセッサAとプロセッサBが共に共有リソース(例えばある人物の預金残高の値)を10ずつ減少させようとする状況を考える。ある人物の預金残高の値がはじめ100であった場合、正しく処理されるとして、共有値は80まで減少する(100−10−10)。しかしながら、プロセッサA及びBはそれぞれ同時に現在の値を取得する場合、プロセッサのそれぞれは計算を実施して新しい値(90)を共有メモリに同時に書き込んで戻すことがある。したがって、調整を欠いているために、2つのトランザクションの一方は他方のトランザクションによってマスキングされ、又は上書きされる。
単一の実行エージェント(プロセッサ又はスレッド)のみが一度に共有リソースにアクセス可能となることを保証するために、ロックが使用されてもよい。上記の実例を考慮すると、ユーザの預金残高は共有リソースであり、したがってロックは、1つのみのプロセッサが読み取り可能であることを保証し、その値をすぐに変更するように、そのデータ値に適用されてもよい。正しく書き込まれた場合、そのようなロックはトランザクションを互いに上書きすることを阻止し、共有リソースへのアクセスがすべてのエージェントにわたって調整されることを保証するように、用いられてもよい。言い換えれば、このことはあるエージェントが古い版の共有リソースで動作を行う状況を阻止することに役立つ。ロックを使用することの不利な点は、保護される粒度のレベルにある。例えば、リンク・リストを考える。リンク・リストにおいて、各要素はデータ値及びリスト内の次の要素へのポインタを提供する。要素のうちの1つがもはやリスト内の次の要素を指さなくなる、すなわちリストが破壊される状況を阻止するために、リストへのアクセスをロックすることは、複数のエージェントがそのようなリンク・リストに変更アクセスを試みることが可能な場合に、望ましい。1つの選択肢はリスト全体にロックを提供することである。しかしながら、あるエージェントがリストの筆頭を変更することを望み、別のエージェントがリストの末尾を変更することを望む場合のように、2つのエージェントによる編集が互いに干渉する可能性は低いのに、このロックは不必要に制約的である。別の選択肢は、リストの各個の要素にロックを提供することである。しかしながら、このためには、大きなリストの場合に多数のロックが必要となり得、各ロックはそれ自身のストレージをメモリ内に必要とする。ロックにはまた、デッドロックを引き起こし得る不利な点がある。例えば、2つのエージェントがそれぞれ2つの、ロックによって保護されている共有データ・リソースへのアクセスを要求し、且つその2つのエージェントがそれぞれ、それら2つの共有データ・リソースの一方にロックをかける場合、システムはデッドロックに陥る。言い換えれば、いずれのエージェントも先に進むことができず、他のエージェントが必要なロック解除を行うのを永遠に待つこととなる。
1つの解決方法はロックではなくトランザクションを用いることである。トランザクションが開始すると、プロセッサは特別な実施モードに入る。このモードの間は、システムは読み込み及び書き込みを追跡する。(例えば、複数のエージェントの間での)コンフリクトと判定されるべき場合、エージェントの一方はキルオフ(kill off)されてロールバックされ、例えば、キルオフされたエージェントによる変更が取り消される。コンフリクトが発生しなかった場合は、エージェントは完了するまで続行し、行われた変更がそのときコミット(commit)される。したがって、トランザクションがコミットされる(単一の操作)まで、トランザクション全体が他のエージェントから不可視であり、その1つのエージェントによってロールバックされることによって取り消されるか巻き戻される可能性があるため、トランザクションは、一連の単一のアトミックな操作として扱われる操作であると考えてもよい。
いくつかのシステムにおいて、トランザクションを実行することは、ロールバックの場合にすべてのアーキテクチャのレジスタをそれらのオリジナルの値に復元するように、それらのレジスタのセーブを必要とすることがある。いくつかのアーキテクチャは、かなりの数のレジスタを含むことがあり、したがって、そのようなシステムでは、それらのレジスタのすべての値のセーブを必要とすることがある。しかしながら、そのような手法は無駄が多いことがある。というのは、決してトランザクションの中で変更されることがないデータをセーブすることを含む可能性があるからである。この場合、データは不要に記憶され、それによって、値を記憶するためのストレージ空間と、データ値を物理的にコピーするために時間の両方を消費する。さらに、ロールバックが発生した場合、そのデータ値が変更されなかった場合でさえ、すべてのセーブされたレジスタはその復元された値を持たなければならない。したがって、ロールバックが発生した場合、記憶されたデータ値のすべてを復元する際にさらなる時間が浪費される。加えて、ロールバック発生の場合の、すべてのそれらの記憶されたデータ値の復元に関連する電力消費もまた、回避されることが好ましい。
代替として、ユーザ及び/又はコンパイラが、トランザクションの最中に変更されるレジスタを特定することが可能である。この場合には、特定されたレジスタのみがセーブされ、それらのレジスタのみがロールバック発生の場合に復元される。しかしながら、特定のレジスタがトランザクションにおいて用いられるか否かを予測することは、常に可能とは限らない場合がある。例えば、トランザクションはライブラリ関数の1つ又は複数の呼び出し(call)を含む場合がある。ユーザ又はプログラマは、そのようなライブラリ関数の制御がほとんど又は全くできず、ライブラリ関数がどのように作用するのかを知ることさえできないことがある。そのような場合には、トランザクションが開始した場合にユーザにはどのレジスタがセーブされるべきかを知る手段がない。それ故に、ユーザはすべてのレジスタをセーブするか、又はセーブされていないレジスタが変更された結果としてロールバックが失敗する可能性と共に進行しなければならない。
第1の実例の構成によれば、データ処理装置が提供され、データ処理装置は、それぞれがデータを記憶するように構成される複数のデータ・ストレージ要素、マスクを記憶するように構成されるマスク・ストレージ回路、1つ又は複数の命令を実行するように構成される処理回路、トランザクション開始命令に応答して、データ・ストレージ要素のサブセットを選択してデータ・ストレージ要素のサブセットのバックアップをセーブするように構成されるデータ・セーブ手段、データ・セーブ手段によって選択されたデータ・ストレージ要素のサブセットを示すように、マスクをアップデートするように構成されるマスク制御回路、及び、マスクによって示されなかったデータ・ストレージ要素のうちの1つへの書き込みを検出するように構成されるモニタ、を備える。
第2の実例の構成によれば、データ処理装置が提供され、データ処理装置は、データを記憶する複数の手段、マスクを記憶するマスク・ストレージ手段、1つ又は複数の命令を実行する処理手段、トランザクション開始命令に応答して、データを記憶する複数の手段のサブセットを選択して、データを記憶する複数の手段のサブセットによって記憶されたデータのバックアップをセーブする、データ・セーブ手段、データ・セーブ手段によって選択されたデータを記憶する複数の手段のサブセットを示すようにマスクをアップデートするマスク制御手段、及び、マスクによって示されなかったデータを記憶する複数の手段のうちの1つへの書き込みを検出するモニタリング手段、を備える。
第3の実例の構成によれば、データを記憶する複数のデータ・ストレージ要素を含むデータ処理装置においてデータを処理する方法が提供され、この方法は、トランザクション開始命令に応答してデータ・ストレージ要素のサブセットを選択するステップと、データ・ストレージ要素のサブセットによって記憶されたデータのバックアップをセーブするステップと、データ・ストレージ要素のサブセットを示すようにマスクをアップデートするステップと、マスクによって示されなかったデータ・ストレージ要素のうちの1つへの書き込みを検出するステップと、を備える。
本技術は例示のみの目的で、添付の図面に記載されたその実施例に関連して、さらに記載される。
一実施例におけるデータ処理装置を備えるシステムの概観図である。 一実施例におけるデータ処理装置を構成する構成要素を示す回路図である。 一実施例におけるデータ処理装置を構成する構成要素を示す回路図である。 一実施例に従ってデータ処理装置を用いる方法を、流れ図形式で示した図である。 トランザクションの開始においてセーブされるレジスタのセットを選択するために、ヒューリスティック(heuristics:発見的研究)がどのように使用可能であるかを示す流れ図である。
第1の実例の構成によれば、データ処理装置が提供され、データ処理装置は、それぞれがデータを記憶するように構成される複数のデータ・ストレージ要素、マスクを記憶するように構成されるマスク・ストレージ回路、1つ又は複数の命令を実行するように構成される処理回路、トランザクション開始命令に応答して、データ・ストレージ要素のサブセットを選択してデータ・ストレージ要素のサブセットのバックアップをセーブするように構成されるデータ・セーブ手段、データ・セーブ手段によって選択されたデータ・ストレージ要素のサブセットを示すようにマスクをアップデートするように構成されるマスク制御回路、及び、マスクによって示されなかったデータ・ストレージ要素のうちの1つへの書き込みを検出するように構成されるモニタ、を備える。
トランザクションが開始すべきであることを示す、トランザクション開始命令に応答して、マスク・ストレージ回路はデータ・ストレージ要素のサブセットをセーブ(バックアップ)する。これらのデータ・ストレージ要素は、例えばデータ処理装置内のレジスタであってもよい。そのようなデータ・ストレージ要素は、レジスタ・ファイル、シャドー・レジスタ・ファイル、及び、例えばキャッシュ及び内部スクラッチ・パッド・メモリを含む、様々な型のメモリ構造の形態をとってもよいことが理解されるであろう。次に、どのデータ・ストレージ要素がセーブされたかを示すマスクが記憶される。語句「サブセット」は、ここでは、データ・ストレージ要素のフルセットの「すべてよりも小さい」ことを意味するように用いられることを理解すべきである。トランザクションの最中に、プロセッサは1つ又は複数の命令を実行する。モニタはマスクによって示されなかったデータ・ストレージ要素への書き込み試行(即ち、セーブ又はバックアップされなかったデータ・ストレージ要素への書き込み試行)を検出する。例えば、モニタはデータ・ストレージ要素への書き込みを行わせるそれらの命令を検査するか、又は処理回路によってデータ・ストレージ要素に送られる信号をインターセプト(横取り)してもよい。本明細書を通じて、用語「書き込み」は、データ・ストレージ要素への現実の書き込みと、プロセッサからそれらのデータ・ストレージ要素への書き込み要求の両方への言及を意図することに留意されたい。そのような書き込み又は書き込み試行が進行することが許可された場合、トランザクション機構自体は失敗する。それは、ロールバックが可能でないためである(復元不可能なデータ・ストレージ要素への書き込みがつくられるため)。したがって、データ処理装置は(モニタのおかげで)、そのような書き込みを検出可能であり、適宜であれば適切な動作をとることができる。したがって、トランザクションが開始すべきときはいつでも、ユーザがすべての単独のレジスタをセーブ又はバックアップする必要がなくなり、セーブ又はバックアップされなかったデータ・ストレージ要素に行われた書き込み試行の結果としてトランザクション機構が失敗する可能性を、ユーザが気にかける必要がなくなる。
マスクによって示されなかったデータ・ストレージ要素に対する書き込み試行の検出に応答して、データ処理装置によって行われる動作は多くの異なる形をとることができる。それらの実例は以下に記載され、それらは単独又は組み合わせのいずれかで存在してもよい。
例えば、データ処理装置は、マスクによって示されなかった1つのデータ・ストレージ要素への書き込みを阻害するように構成される阻害回路を備えてもよい。そのような実施例において、バックアップされなかったデータ・ストレージ要素への書き込み試行が行われた場合、書き込みを実行しようとする試行はブロックされるのみであることがある。このことは、プロセッサによって生成された書き込み要求がデータ・ストレージ要素に到達することを妨げるモニタによって遂行され得る。そのような実施例において、モニタは書き込み試行が失敗したプロセッサへの信号であってもよく、それはプロセッサが、例えば例外処理ルーチンを実行することによって、プロセッサ自身の訂正動作をとることを可能にする。
別の実例として、データ処理装置は、マスクによって示されたデータ・ストレージ要素をバックアップから復元するように構成される復元手段を備えてもよい。その結果、バックアップされなかったデータ・ストレージ要素への書き込み試行が行われた場合、データ・ストレージ要素のすべてはそれらの以前の値に復元されてもよい。いくつかの場合では、アップデータ(例えばアップデート回路として実施される)もまた、トランザクション開始命令又はエラー処理手段を示すプログラム・カウンタをアップデートしてもよい。プログラム・カウンタに戻ってデータ・ストレージ要素を復元した結果、トランザクションの完全なロールバックが行われる。したがって、トランザクションが再開されてもよい。エラー処理手段を示すようにプログラム・カウンタを変更することによって、特別なエラー処理コードを実行することができる。これは診断情報を出力するように用いてもよい。
さらなる実例として、マスクによって示されないデータ・ストレージ要素のうちの1つへの書き込みの検出に応答して、モニタはエラーを発信するように構成されてもよい。例えば、信号はプロセッサに送信されてもよい。プロセッサはそのような状況を処理することに特化したサブルーチンを有してもよい。代替として、プロセッサは例外信号を発してもよく、ソフトウェア自体がその状況を取り扱う例外処理ルーチンを備えてもよい。これは、トランザクションをどのように進行するかに関する柔軟性を完全なものとすることができる。例えば、トランザクションがすでに多数回失敗している場合、トランザクションは単にロールバックされて放棄されることがある。トランザクションの失敗が重要でない(例えば、データ値自体が決定的でない)場合、ソフトウェアはロールバックすることさえなく継続することを許されてもよい。他の場合には、トランザクションはロールバックされて再開されてもよく、この場合は追加のレジスタがセーブされる。
このデータ・ストレージ要素は、データ処理装置によって実行されるヒューリスティックな(例えば、経験に基づく)分析に基づいてデータ・セーブ手段によって選択されてもよい。特に、ヒューリスティック又は統計を用いることによって、データ・セーブ手段はセーブ(バックアップ)すべきデータ・ストレージ要素を選択してもよい。そのような場合、バックアップすべきデータ・ストレージ要素をプログラマが明白に言葉にする必要はなくてよく、プログラマの負担を低減し、ライブラリがプログラマによって呼ばれている場合、及びどのデータ・ストレージ要素をバックアップすべきかプログラマには不明である場合の使用に適するものとなることができる。
ヒューリスティックな分析はコンパイラによって注釈されたデータに依存してもよい。例えば、コンパイルの最中に、コンパイラは、データ・セーブ手段によってどのデータ・ストレージ要素をセーブすべきか決定するように用いられることが可能なヒント(即ち、指示)を提供してもよい。
ヒューリスティックな分析は1つ又は複数の命令に関連した呼び出し規約に依存してもよい。呼び出し規約は、特定のアーキテクチャによって指示され、関数呼び出しにおいて呼び出し元と呼び出し先の間でどのようにデータが交換されるべきかを特定してもよい。特に、呼び出し規約は、パラメータがどのように送られるべきか(例えば、個別のデータ・ストレージ要素又はスタックを用いて)、及びどのように結果が戻されるべきかを示してもよい。この情報は、トランザクションの開始前にセーブすべき、又はセーブする必要がありそうなデータ・ストレージ要素を予見することに役立ち得る。
ヒューリスティックな分析は、マスクによって示されないデータ・ストレージ要素のうちの1つへの書き込みをモニタが検出した回数に依存してもよい。例えば、セーブされなかったレジスタへの書き込みの結果としてトランザクションが繰り返しロールバックされた場合、将来のトランザクションがロールバックする機会を減少させようとするために、セーブのためにデータ・セーブ手段によって選択されるデータ・ストレージ要素が変更されてもよい。例えば、選択されたデータ・ストレージ要素のサブセットは、マスクによって示されないデータ・ストレージ要素のうちの1つへの書き込みを検出するモニタに応答して増加させてもよい。例えば、セーブされなかったデータ・ストレージ要素への書き込み試行をモニタが毎回検出するたびに、ロールバックが発生して、以前の反復と比較して追加のレジスタがセーブされてもよい。別の実施例では、セーブされるレジスタの数が、発生するロールバックの数を制限するためにより早くインクリメントしてもよい。しかしながら、これは、不要なレジスタをセーブするリスクの増加と釣り合わなければならない。
セーブすべきデータ・ストレージ要素のサブセットは、サブセット定義命令に応答してデータ・セーブ手段によって選択されてもよい。例えば、ユーザはどのデータ・ストレージ要素がセーブされるべきかに関する「最良の推測」を提供してもよい。そのような手法は、どのデータ・ストレージ要素がバックアップされるべきか判定する初期開始点として役立つことができる。呼ばれているライブラリの機能に関する知識をユーザが得ている場合、そのような手法は特に有用であろう。
データ・ストレージ要素は複数のレジスタであってもよい。
モニタはモニタリング回路を備えてもよい。モニタリング回路はプロセッサにより生成されるデータ・ストレージ要素への信号をインターセプトしてもよい。他の実施例では、モニタはモニタリング・ソフトウェアによって実装されてもよく、ある命令が、プロセッサがその命令を実行する前にセーブされていない(すなわち、マスクの一部ではない)データ・ストレージ要素への書き込みを発生させるかを決定するために、実行される命令をモニタリングすることができる。
データ・セーブ手段はデータ・セーブ回路、すなわち、記載されたデータ・セーブ機能を実行するように構成される特定の回路を備えてもよい。しかしながら、データ・セーブ手段は、データ・ストレージ要素を特定の位置に明示的にバックアップ又はセーブするデータ・セーブ・ソフトウェアによって実装されてもよい。
データ・セーブ手段はローカル・キャッシュにデータ・ストレージ要素のサブセットのバックアップをセーブするように構成されてもよい。ローカル・キャッシュを使用することによって、変更が記憶される時間まで、他のエージェントによって行われた変更を分離することが可能である。このことは、変更が記憶されるまで変更は他のエージェントには見えてはならないため、重要である。この分離はローカル・キャッシュを用いて、他のプロセッサによって読み出されることを許可すべきではない旨を示す適切なタグを関連するキャッシュ・ライン・エントリに提供することによって、遂行され得る。
いくつかの実施例では、マスクは、セーブされるべきレジスタのセットとセーブされるべきでないレジスタのセットの両方を示す。そして、セーブされるべきレジスタのセットにおいて識別されたストレージ要素を含み、セーブされるべきでないレジスタのセットにおいて識別されたストレージ要素を排除することによって、データ・ストレージ要素はデータ・セーブ手段によって選択される。したがって、その値がセーブされないレジスタのセットを示すことが可能である。しかしながら、それらのレジスタはまだマスクによって示されているため、それらのレジスタに書き込むことは、何ら特別な振る舞いを生じさせることがない。したがって、そのようなレジスタは、例えば外部世界への通信目的で用いることが可能である。
図1は、それぞれプロセッサ・コア100、130を備え、それぞれそのプロセッサ・コアにローカルなレジスタの関連するセットを有する、2つのデータ処理装置102、104を備えるシステムを示す。プロセッサ・コア100、130はまた、それぞれ関連するローカル・キャッシュ110、140を有する。言い換えれば、1つのプロセッサ・コアは他のプロセッサ・コアに関連するキャッシュにアクセスすることができない。キャッシュ110、140はそれぞれ、互いに通信し(コヒーレンシーの目的で)、メモリ・バス150を介して共有メモリ120と通信することができる。共有メモリ、すなわちメイン・メモリ120は、プロセッサ・コア100、130によってアクセス可能な1つ又は複数の共有データ構造体(共有リソース)を備える。プロセッサ・コア100、130のそれぞれが、メイン・メモリ120内にある同一の共有データ構造体にアクセス可能であるため、プロセッサ・コア間の調整をもたらし、一方のプロセッサ・コアによる変更が別のプロセッサ・コアによって行われる変更によって「上書きされる」ことの阻止に役立つように、システムはトランザクションを用いる。
図2は、プロセッサ・コア100の実施例を示す。処理回路160はデータ処理命令を実行する。それらの命令のうちの1つはトランザクションが開始する旨を示すように用いられることができる。そのような命令の受信に応答して、処理回路160は、レジスタ・ファイル180内のレジスタのサブセット190をセーブするように、データ・セーブ回路170に信号を送る。マスク200はまた、レジスタのサブセット190を表わすように、マスク制御回路210によってアップデートされる。この実例において、サブセット190はレジスタr0、r1及びr2を含む。したがって、マスクは値11100000をとることができ、それによって、サブセットはレジスタ・ファイル180内の8つのレジスタのうち最初の3つのレジスタを含むことを示す。もちろん、大きい、又は異なる数のレジスタを含むレジスタ・ファイル内においては、どのレジスタがデータ・セーブ回路170によってセーブされたレジスタのサブセットを含むかを反映するために、マスクのサイズが適切なものとされることが理解されるであろう。プロセッサ・コア100はまた、処理回路160及びレジスタ・ファイル180の(機能的な)間にあるモニタリング回路220を備える。モニタリング回路220は処理回路160によって生成されたレジスタ・ファイル180への書き込み要求をインターセプトする。言い換えれば、処理回路160がレジスタ・ファイル180内のレジスタに書き込みの信号を送信した場合、この信号はまずモニタリング回路220によって受信される。次いで、モニタリング回路220は、インバータ230によってマスク200を反転することによって、データ・セーブ回路によってセーブされなかったレジスタのセットとの比較を行う。処理回路160によって生成されモニタリング回路220によって受信された書き込み要求が、データ・セーブ回路170によってセーブされたレジスタのうちの1つにはない場合、モニタリング回路は反応を示す。例えば、この実施例において、モニタリング回路は処理回路160に警告の信号を発する。しかしながら、処理回路160によって生成された書き込み要求(信号)が、データ・セーブ回路170によってセーブされたレジスタのうちの1つにある場合、書き込みが完了するように、要求はモニタリング回路220によって、レジスタ・ファイル180に進むことを許可されてよい。
いくつかの他の実施例では、マスクは追加的に、セーブされるべきでない(すなわち、セーブされない)レジスタのセットを識別することができる。そのようなレジスタはデータ・セーブ回路170によってセーブされず、しかしながら、これらのレジスタはマスクによってすでに識別されているため、モニタリング回路220はこれらのレジスタが書き込まれたかどうかに反応を示さない。これらのレジスタはバックアップされず、しかしながらモニタリング回路170がある特別な振る舞い(エラーを発する、停止する、又は再起動する)を行うことなく、書き込まれることができる。そのようなレジスタは、したがって、例えば外部世界などとの通信に用いてもよい。例えば、停止トランザクションは、トランザクションが停止している理由を伝えるようにそのようなレジスタを用いてもよい。
それらの実施例において、したがって、レジスタは3つの異なる場合のうちの1つに分類される。第1の場合には、レジスタはセーブされるレジスタとしてマスクによって示されてもよい。そのようなレジスタはバックアップされ、必要であればロールバック可能である。第2の場合には、レジスタはマスクによって全く示されないものであってよい。トランザクションの最中にそのようなレジスタへの書き込みがある場合、ある種類の特別な振る舞いがモニタリング回路170によって開始されてもよい。例えば、トランザクションが停止してもよく、システムが再起動してもよく、エラーが発せられてもよいなどである。第3の場合には、レジスタはセーブされないレジスタとしてマスクによって示されてもよい。そのようなレジスタはバックアップされず、ロールバックされることができない。しかしながら、そのようなレジスタに書き込みがある場合、モニタリング回路170は特別な動作を行わない。
図3はプロセッサ・コア100及びローカル・キャッシュ110を備えるデータ処理装置102の実施例である。すでに記載されている機能を示すには同一の参照符号が用いられる。
記載された実施例において、データ・セーブ回路170はヒューリスティック分析手段240を備える。ヒューリスティック分析手段は、ローカル・キャッシュ110にセーブ又はバックアップされるべきレジスタ190のサブセットの選択において、データ・セーブ回路の連続する成功又は失敗をモニタリングする。サブセット190を決定する場合、ヒューリスティック分析手段240によって考慮されてもよい異なるヒューリスティック又は統計が多数ある。例えば、この実施例は、サブセット190の一部でないレジスタ・ファイル180内のレジスタへの書き込みの処理回路160による試行をモニタリング回路がインターセプトした回数に基づくヒューリスティックを考慮する。特に、キャッシュにセーブされていないレジスタ・ファイル180内のレジスタ(すなわち、サブセット190の一部でないレジスタ)への処理回路160による書き込み試行があるたびに、カウンタ250がインクリメントする。データ・セーブ回路170がセーブすべきレジスタを決定する場合、カウンタ250の値が考慮に入れられる。このようにして、セーブされていないレジスタ・ファイル180内のレジスタへの、処理回路160によって行われた書き込みの要求がより多くなるため、データ・セーブ回路170はレジスタのより大きいサブセットをセーブすることによって応答する。
ヒューリスティック分析手段240は、処理回路160によって実行される命令に関連する呼び出し規約などのヒューリスティックを考慮することもできる。呼び出し規約は、関数呼び出しの最中に呼び出し元と呼び出し先の間でどのようにデータが送られるかの方法と様式を指示する。例えば、呼び出し規約はレジスタの特定の組み合わせを用いて、又はスタックを用いてパラメータが送られることを指示してもよい。同様に、呼び出し規約は関数呼び出しの結果がどのように戻されるべきかを示してもよい。この情報は、処理回路160によって書き込まれる可能性が高いレジスタをよりよく予見するために用いられることができる。例えば、呼び出し規約が、第1のパラメータが常にレジスタr0を用いて送られることを示す場合、レジスタr0は処理回路160によっていくつかの点で書き込まれる可能性がある、といえる可能性が高い。したがって、ヒューリスティック分析手段240は、レジスタr0は選択されたサブセットの一部を常に構成すると決定してもよい。
ヒューリスティック分析手段によって考慮されるヒューリスティックのさらなる実例は、ソース・コードを処理回路160に対する命令にコンパイルする最中にコンパイラによって提供されるヒントであってもよい。コンパイラはソース・コードの可視性を有するため、コンパイラはデータ・セーブ回路170によってセーブされなければならないレジスタの良好な表示を提供する立場にあることができる。しかしながら、これは常に可能であるとは限らず、なぜならソース・コードがコンパイラに可視ではないライブラリ又は外部コード・ソースを参照している可能性のためであることに留意されたい。したがって、コンパイラによって提供されるヒントは常に完全であるとは限らない。
同様に、コンパイルされたアプリケーションが、データ・セーブ回路170によってセーブされるべきでないレジスタの表示を与えてもよい。これがヒューリスティック分析手段240によって集められたヒューリスティック又は統計に優先するように用いられるか、又はコンパイルされたアプリケーションによって示されるものを除くすべてのレジスタをセーブするようにデータ・セーブ回路170が構成されるかのいずれかであってもよい。
ここでは明示的には述べないが当業者には知られているさらなる実例を含む、様々な異なるヒューリスティックが、任意の組み合わせで、ヒューリスティック分析手段240によって考慮されてもよいことを理解すべきである。ヒューリスティック分析手段240は、セーブされるべきレジスタのサブセット190に関する最終結論を生成するために、様々な方法で異なるヒューリスティックを組み合わせてもよい。
モニタリング及び阻害回路320が、処理回路160のレジスタ・ファイル180への書き込み試行をモニタリングするように提供される。モニタリング及び阻害回路320は処理回路160からレジスタ・ファイル180への書き込み要求をモニタリングするだけでなく、データ・セーブ回路170によってセーブされて(バックアップされて)いないレジスタに関するレジスタ・ファイル180に処理回路160によって送信される信号を阻止するように構成される。言い換えれば、その信号は無視され、レジスタ・ファイル180に転送されない。
さらに、データ・セーブ回路170によってセーブされていないレジスタ・ファイル180内のレジスタへの書き込み要求の検出に応答して、レジスタ・ファイル180内にあるプログラム・カウンタ270がアップデータ260によってアップデートされる。プログラム・カウンタ270は、処理回路160によって次に実行される命令を示すように使用される。したがって、アップデータ260を用いてプログラム・カウンタ270をアップデートすることによって、処理回路160がサブセット190の一部ではないレジスタへの書き込みを試行している旨をモニタリング及び阻害回路320が検出した場合、トランザクションを再開するか、又はトランザクション全体をスキップすることが可能である。この実施例において、サブセット190の一部ではないレジスタへの書き込み試行が行われた場合、セーブされたレジスタがキャッシュから復元されるように、データ復元回路280もまた提供される。言い換えれば、バックアップされたレジスタはオリジナルの値にリセットされる。データ復元回路280及びアップデータ260によって、このようにロールバックを行うことが可能である。すなわち、サブセット190の一部ではない(すなわち、セーブされていない)レジスタへの書き込み試行を処理回路160が行っている旨を検出するモニタリング及び阻害回路320に応答して、書き込み要求はモニタリング及び阻害回路320によって阻害され、プログラム・カウンタ270はアップデータ260によって、トランザクションが開始した際の命令の値にリセットされ、データ復元回路280はレジスタのサブセット190の値を、トランザクションが開始したときにレジスタが有していた値に復元する。言い換えれば、データ処理装置の状態はトランザクションが開始した際の点にリセットされる。他の実施例において、サブセット190の一部ではないレジスタへの書き込み試行を処理回路160が行っている旨を検出するモニタリング及び阻害回路320に応答して、プログラム・カウンタはエラー処理ルーチンを参照してアップデートされ得る。そのようなエラー処理ルーチンは、サブセット190の一部ではないレジスタへの書き込み試行が行われる際に実行されるべき特別な振る舞いを定義してもよい。
図4は、一実施例に従ってトランザクションを実行する方法を流れ図形式で示す。ステップS200においてトランザクションが開始する。これは処理回路160がトランザクション開始命令を受信する結果として生じてもよい。しかしながら、トランザクションは特定の状況が満たされた場合にハードウェアによって開始されてもよい。ステップS210において、データ・ストレージ要素のサブセットが選択される。データ・ストレージ要素は、例えば、レジスタ・ファイル180内のレジスタであってもよい。データ・ストレージ要素のセットが選択され得る方法は多い。これらを選択する方法の1つはヒューリスティックを利用することによるものであり、それは図5に関連して以下に説明される。しかしながら、データ・ストレージ要素が選択され、ステップS220においてバックアップが行われる。いくつかの実例において、バックアップはキャッシュ110にそれらのデータ・ストレージ要素の値を書き込むことによって遂行されてもよい。しかしながら、他の形態のデータ・ストレージが同様に受け入れ可能であることを理解すべきである。次いで、マスク200はステップS230でセーブされたデータ・ストレージ要素のサブセットを反映するためにアップデートされる。次いで、トランザクションは1つ又は複数の命令を実施するプロセッサ回路によって進行する。一連の命令の最中の任意の段階において、マスクによって示されないデータ・ストレージ要素に対する書き込み又は書き込み試行が行われた場合、これはステップS240において検出され、流れは、何らかの動作が行われるステップS250へと進む。この実施例では、エラー信号が発せられる。しかしながら、他の実施例では他の応答が適切であるか又は利用されることが、理解されるであろう。例えば、ロールバックが、プログラム・カウンタ270を変更すること、及び/又は、以前に論じたようにデータ・ストレージ要素のサブセットの値を復元することを含んで、実行されてもよい。様々な他の変更又は是正動作が行われてもよく、それは当業者には明らかである。代替として、トランザクションの最中にデータ処理装置がマスクによって示されていないレジスタ(すなわち、セーブ又はバックアップされていないレジスタ)への書き込みを検出しない場合、トランザクションはステップS260で成功して終了する。
図5は、データ・ストレージ要素のサブセットの選択におけるヒューリスティックの使用を流れ図形式で示す。この実例において、データ・ストレージ要素はレジスタ・ファイル180の一部を形成するレジスタであると考える。プロセスはステップS100において、トランザクション開始命令がプロセッサによって実行された場合に開始する。これによってxの初期値が初期化されるか設定される。この実例において、xの初期値はヒューリスティックに基づく。特に、xは、セーブ又はバックアップされていないレジスタ・ファイル180においてレジスタへの書き込み要求が処理回路160によって発せられた結果としてエラーが返されるたびにインクリメントするカウンタに関する。xの値が決定されると、x個のレジスタのセットがステップS110においてセーブされる。例えば、x個のレジスタのセット190がローカル・キャッシュ110にセーブされてもよい。x個のレジスタのセット190はある程度は、処理回路160によって実行される命令の呼び出し規約の知識を用いることによって決定される。特に、呼び出し規約が、パラメータ及び戻り結果が常にr0からr8まで昇順にレジスタを用いて送られる旨を示す場合、ヒューリスティックは、x個のレジスタのセットがレジスタr0から始まり、追加のレジスタはx個のレジスタが追加されるまで連続して追加される旨を決定してもよい。他の実施例では、レジスタのセットがどのように拡張されるかを決定するように他のヒューリスティックが用いられてもよい。レジスタがセーブされる前又は後のいずれかに、バックアップされたレジスタのセットを反映するためにマスク200がアップデートされる。ステップS120においてトランザクションが開始する。このステップの最中に、処理回路160によって一連の命令が実行されてもよい。しかしながら、トランザクションが記憶される(すなわち、完了する)までの任意の時間に、ステップS110においてセーブされたレジスタの値はロールバックによって復元することができる。ステップS130において、エラーが発生したか否かが決定される。特に、ステップS130は、トランザクションの最中の任意の段階に、ステップS110においてセーブされたレジスタのサブセット190の一部ではないレジスタ・ファイル180におけるレジスタのうちの1つへの書き込みの試行が、処理回路160によって行われるかどうかを連続的に検査する。そのようなエラーはモニタリング回路220又はモニタリング及び阻害回路320によって生成される。そのような試行がトランザクションの最中に行われない場合、トランザクションはステップS160において終了する。トランザクションの終了はコードのブロックの終わりに到達した結果として暗黙のうちに発生してもよく、又は終了トランザクション命令と共に明白に発生してもよい。トランザクションが終了する場合、新しくアップデートされた値に他のプロセッサ・コアがアクセスできるように、レジスタの値はメイン・メモリにセーブされて戻る。代替として、ステップS130においてエラーが返された場合、プロセスはステップS140に進む。ステップS140においてxの値は1だけインクリメントされ、それによって、セーブされていなかった次に最も高いレジスタがセーブされる。
他の実施例においては、xは1より大きくインクリメントしてもよいことを理解されたい。このことは、行われるループの反復をより少なくすることができる。しかしながらそれは、現実に必要なセーブされるレジスタが多くなるというコストが生じることがある。
いくつかの他の実施例においては、誤ってアクセスされたレジスタの識別(identity)が記録され、次にトランザクションが開始するときにそれらのレジスタが特別にセーブされるようにしてもよい。これは、例えばステップS140でマスクを直接変更することによって遂行されてもよい。
いずれにしても、ステップS150において、トランザクションは停止される。この実施例において、プログラム・カウンタ270はアップデータ260によって、処理回路160によってトランザクション開始命令が実行された時点のプログラム・カウンタの値に、アップデートされる。さらに、レジスタのセット190の値は、ステップS110の以前の実行においてセーブされた値に復元される。言い換えれば、トランザクションはロールバックされ、トランザクションはその始まりから再開し、レジスタのサブセット190の値は、トランザクション開始命令が受信された時点のそれらレジスタによって持たれた値に復元される。次に流れはステップS110に進み、トランザクションは再び開始し、x個のレジスタのセットはもう一度セーブされる。
したがって、全体のまとめにおいて、x個のレジスタのセットの初期の見積もりが行われることが示される。次いでトランザクションは進む。しかしながら、レジスタのサブセット190の一部ではないレジスタ・ファイル180において処理回路160によってレジスタへの書き込み試行が行われた結果として、トランザクションが失敗した場合(すなわち、トランザクションの開始時にセーブされていないレジスタに書き込み試行が行われた場合)、エラーが返され、トランザクションはロールバックされ、x個のレジスタのセットは拡張される。次いで、トランザクションは新しいレジスタのセットで再開される。この処理はステップS160においてトランザクションが成功して終了するまで進むことができる。このようにして、未知かもしれない、セーブされなければならないレジスタのセットを明白に述べる必要もなく、アーキテクチャのレジスタのセット全体をセーブする必要もない。
付属の図面を参照して、本発明の実例となる実施例を本明細書に詳細に記載したが、本発明はそれらの詳細な実施例に限定されるものではなく、添付の特許請求の範囲によって定義された本発明の範囲と精神から逸脱することなく、当業者によって様々な変更、追加及び変形が行われることが可能であることを理解すべきである。例えば、本発明の範囲を逸脱することなく、従属請求項の特徴の様々な組み合わせが独立請求項の特徴に対して行われることが可能である。

Claims (22)

  1. それぞれがデータを記憶するように構成される複数のデータ・ストレージ要素と、
    マスクを記憶するように構成されるマスク・ストレージ回路と、
    1つ又は複数の命令を実行するように構成される処理回路と、
    トランザクション開始命令に応答して、前記データ・ストレージ要素のサブセットを選択して前記データ・ストレージ要素の前記サブセットのバックアップをセーブするように構成されるデータ・セーブ手段と、
    前記データ・セーブ手段によって選択された前記データ・ストレージ要素の前記サブセットを示すように、前記マスクをアップデートするように構成されるマスク制御回路と、
    前記マスクによって示されなかった前記データ・ストレージ要素のうちの1つへの書き込みを検出するように構成されるモニタと、を備える、
    データ処理装置。
  2. 前記マスクによって示されなかった前記データ・ストレージ要素のうちの前記1つへの前記書き込みを阻害するように構成される阻害回路を備える、
    請求項1に記載のデータ処理装置。
  3. 前記バックアップから前記マスクによって示された前記データ・ストレージ要素を復元するように構成される復元手段を備える、
    請求項2に記載のデータ処理装置。
  4. 前記トランザクション開始命令又はエラー処理手段を示すプログラム・カウンタをアップデートするように構成されるアップデート回路を備える、
    請求項3に記載のデータ処理装置。
  5. 前記モニタがさらに、前記マスクによって示されなかった前記データ・ストレージ要素のうちの前記1つへの前記書き込みの検出に応答して、エラーを発信するように構成される、
    請求項1から4までのいずれか一項に記載のデータ処理装置。
  6. 前記データ・ストレージ要素が、前記データ処理装置によって実行されるヒューリスティックな分析に基づいて前記データ・セーブ手段によって選択される、
    請求項1から5までのいずれか一項に記載のデータ処理装置。
  7. 前記ヒューリスティックな分析が、コンパイラによって注釈されたデータに依存する、
    請求項6に記載のデータ処理装置。
  8. 前記ヒューリスティックな分析が、1つ又は複数の命令に関連した呼び出し規約に依存する、
    請求項6又は7に記載のデータ処理装置。
  9. 前記ヒューリスティックな分析が、前記マスクによって示されない前記データ・ストレージ要素のうちの1つへの書き込みを前記モニタが検出した回数に依存する、
    請求項6から8までのいずれか一項に記載のデータ処理装置。
  10. 選択された前記データ・ストレージ要素の前記サブセットが、前記マスクによって示されない前記データ・ストレージ要素のうちの前記1つへの前記書き込みを検出する前記モニタに応答して増加する、
    請求項1から9までのいずれか一項に記載のデータ処理装置。
  11. データ・ストレージ要素の前記サブセットが、サブセット定義命令に応答して前記データ・セーブ手段によって選択される、
    請求項1から10までのいずれか一項に記載のデータ処理装置。
  12. 前記複数のデータ・ストレージ要素が複数のレジスタである、
    請求項1から11までのいずれか一項に記載のデータ処理装置。
  13. 前記モニタがモニタリング回路を備える、
    請求項1から12までのいずれか一項に記載のデータ処理装置。
  14. 前記モニタがモニタリング・ソフトウェアによって実装される、
    請求項1から12までのいずれか一項に記載のデータ処理装置。
  15. 前記データ・セーブ手段がデータ・セーブ回路を備える、
    請求項1から14までのいずれか一項に記載のデータ処理装置。
  16. 前記データ・セーブ手段がデータ・セーブ・ソフトウェアによって実装される、
    請求項1から14までのいずれか一項に記載のデータ処理装置。
  17. 前記データ・セーブ手段が、ローカル・キャッシュに前記データ・ストレージ要素の前記サブセットのバックアップをセーブするように構成される、
    請求項1から16までのいずれか一項に記載のデータ処理装置。
  18. 前記マスクが、セーブされるべきレジスタのセットとセーブされるべきでないレジスタのセットの両方を示し、
    前記データ・ストレージ要素が、前記セーブされるべきレジスタのセットにおいて識別されたストレージ要素を含み、前記セーブされるべきでないレジスタのセットにおいて識別されたストレージ要素を排除することによって、前記データ・セーブ手段によって選択される、
    請求項1から17までのいずれか一項に記載のデータ処理装置。
  19. データを記憶する複数の手段と、
    マスクを記憶するマスク・ストレージ手段と、
    1つ又は複数の命令を実行する処理手段と、
    トランザクション開始命令に応答して、前記データを記憶する複数の手段のサブセットを選択して、前記データを記憶する複数の手段の前記サブセットによって記憶された前記データのバックアップをセーブする、データ・セーブ手段と、
    前記データ・セーブ手段によって選択された前記データを記憶する複数の手段の前記サブセットを示すように前記マスクをアップデートするマスク制御手段と、
    前記マスクによって示されなかった前記データを記憶する複数の手段のうちの1つへの書き込みを検出するモニタリング手段と、を備える、
    データ処理装置。
  20. データを記憶する複数のデータ・ストレージ要素を含むデータ処理装置においてデータを処理する方法であって、
    トランザクション開始命令に応答して前記データ・ストレージ要素のサブセットを選択するステップと、
    前記データ・ストレージ要素の前記サブセットによって記憶されたデータのバックアップをセーブするステップと、
    前記データ・ストレージ要素の前記サブセットを示すようにマスクをアップデートするステップと、
    前記マスクによって示されなかった前記データ・ストレージ要素のうちの1つへの書き込みを検出するステップと、を備える、
    データを処理する方法。
  21. 付属の図面を参照して本明細書に実質的に記載された、データ処理装置。
  22. 付属の図面を参照して本明細書に実質的に記載された、データを処理する方法。
JP2016575654A 2014-07-11 2015-06-11 トランザクションにおけるレジスタの動的なセーブ Active JP6637450B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1412337.6A GB2528115B (en) 2014-07-11 2014-07-11 Dynamic saving of registers in transactions
GB1412337.6 2014-07-11
PCT/GB2015/051715 WO2016005723A1 (en) 2014-07-11 2015-06-11 Dynamic saving of registers in transactions

Publications (2)

Publication Number Publication Date
JP2017520851A true JP2017520851A (ja) 2017-07-27
JP6637450B2 JP6637450B2 (ja) 2020-01-29

Family

ID=51453986

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016575654A Active JP6637450B2 (ja) 2014-07-11 2015-06-11 トランザクションにおけるレジスタの動的なセーブ

Country Status (8)

Country Link
US (1) US10678595B2 (ja)
EP (1) EP3167367A1 (ja)
JP (1) JP6637450B2 (ja)
KR (1) KR102284952B1 (ja)
CN (1) CN106537342B (ja)
GB (1) GB2528115B (ja)
IL (1) IL249563B (ja)
WO (1) WO2016005723A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111984457B (zh) 2019-05-23 2022-09-02 华为技术有限公司 对存储信息更新的方法和装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012064086A (ja) * 2010-09-17 2012-03-29 Fujitsu Ltd 情報処理装置、情報処理装置の制御方法及び制御プログラム
US20130339642A1 (en) * 2012-06-15 2013-12-19 International Business Machines Corporation Saving/restoring selected registers in transactional processing

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5210874A (en) * 1988-03-22 1993-05-11 Digital Equipment Corporation Cross-domain call system in a capability based digital data processing system
US5319395A (en) * 1990-05-16 1994-06-07 International Business Machines Corporation Pixel depth converter for a computer video display
US6006311A (en) * 1997-04-14 1999-12-21 Internatinal Business Machines Corporation Dynamic updating of repair mask used for cache defect avoidance
US6249824B1 (en) * 1998-12-12 2001-06-19 Joseph Reid Henrichs Magnetic data storage fixed hard disk drive using stationary microhead array chips in place of flying-heads and rotary voice-coil actuators
US6553443B1 (en) * 1999-09-28 2003-04-22 Legerity, Inc. Method and apparatus for prioritizing interrupts in a communication system
US6877089B2 (en) * 2000-12-27 2005-04-05 International Business Machines Corporation Branch prediction apparatus and process for restoring replaced branch history for use in future branch predictions for an executing program
JP3702815B2 (ja) * 2001-07-12 2005-10-05 日本電気株式会社 プロセッサ間レジスタ継承方法及びその装置
US7050317B1 (en) * 2002-03-15 2006-05-23 Integrated Device Technology, Inc. Content addressable memory (CAM) devices that support power saving longest prefix match operations and methods of operating same
US6920532B2 (en) * 2002-11-05 2005-07-19 Newisys, Inc. Cache coherence directory eviction mechanisms for modified copies of memory lines in multiprocessor systems
KR100532325B1 (ko) * 2002-11-23 2005-11-29 삼성전자주식회사 터보 복호기의 입력 제어 방법 및 장치
US7500055B1 (en) * 2003-06-27 2009-03-03 Beach Unlimited Llc Adaptable cache for dynamic digital media
US20050120185A1 (en) * 2003-12-01 2005-06-02 Sony Computer Entertainment Inc. Methods and apparatus for efficient multi-tasking
US8549513B2 (en) * 2005-06-29 2013-10-01 Microsoft Corporation Model-based virtual system provisioning
US8813052B2 (en) * 2005-12-07 2014-08-19 Microsoft Corporation Cache metadata for implementing bounded transactional memory
US9529592B2 (en) * 2007-12-27 2016-12-27 Intel Corporation Vector mask memory access instructions to perform individual and sequential memory access operations if an exception occurs during a full width memory access operation
US8433883B2 (en) * 2009-06-11 2013-04-30 Cray Inc. Inclusive “OR” bit matrix compare resolution of vector update conflict masks
US9569254B2 (en) * 2009-07-28 2017-02-14 International Business Machines Corporation Automatic checkpointing and partial rollback in software transaction memory
GB2474522B (en) 2009-10-19 2014-09-03 Advanced Risc Mach Ltd Register state saving and restoring
US9081501B2 (en) * 2010-01-08 2015-07-14 International Business Machines Corporation Multi-petascale highly efficient parallel supercomputer
US9235251B2 (en) * 2010-01-11 2016-01-12 Qualcomm Incorporated Dynamic low power mode implementation for computing devices
US8756377B2 (en) * 2010-02-02 2014-06-17 Arm Limited Area and power efficient data coherency maintenance
US9002911B2 (en) * 2010-07-30 2015-04-07 International Business Machines Corporation Fileset masks to cluster inodes for efficient fileset management
JP5926373B2 (ja) * 2012-05-07 2016-05-25 株式会社日立製作所 計算機システム、ストレージ管理計算機及びストレージ管理方法
US9298469B2 (en) * 2012-06-15 2016-03-29 International Business Machines Corporation Management of multiple nested transactions
US9430166B2 (en) * 2012-08-10 2016-08-30 International Business Machines Corporation Interaction of transactional storage accesses with other atomic semantics
US9400650B2 (en) * 2012-09-28 2016-07-26 Intel Corporation Read and write masks update instruction for vectorization of recursive computations over interdependent data
US9251073B2 (en) * 2012-12-31 2016-02-02 Intel Corporation Update mask for handling interaction between fills and updates
US9330026B2 (en) * 2013-03-05 2016-05-03 Qualcomm Incorporated Method and apparatus for preventing unauthorized access to contents of a register under certain conditions when performing a hardware table walk (HWTW)
US9223701B2 (en) * 2013-04-12 2015-12-29 Arm Limited Data processing apparatus and method for performing load-exclusive and store-exclusive operations
US9135984B2 (en) * 2013-12-18 2015-09-15 Micron Technology, Inc. Apparatuses and methods for writing masked data to a buffer
WO2015145190A1 (en) * 2014-03-27 2015-10-01 Intel Corporation Processors, methods, systems, and instructions to store consecutive source elements to unmasked result elements with propagation to masked result elements
CN105247618B (zh) * 2014-04-30 2017-12-15 华为技术有限公司 一种硬盘执行应用代码的方法及装置
CN104410849B (zh) * 2014-10-21 2016-06-29 深圳市华星光电技术有限公司 图像数据处理方法及装置
US9804842B2 (en) * 2014-12-23 2017-10-31 Intel Corporation Method and apparatus for efficiently managing architectural register state of a processor

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012064086A (ja) * 2010-09-17 2012-03-29 Fujitsu Ltd 情報処理装置、情報処理装置の制御方法及び制御プログラム
US20130339642A1 (en) * 2012-06-15 2013-12-19 International Business Machines Corporation Saving/restoring selected registers in transactional processing

Also Published As

Publication number Publication date
IL249563B (en) 2021-08-31
GB2528115A (en) 2016-01-13
CN106537342B (zh) 2021-04-30
US10678595B2 (en) 2020-06-09
EP3167367A1 (en) 2017-05-17
CN106537342A (zh) 2017-03-22
IL249563A0 (en) 2017-02-28
KR102284952B1 (ko) 2021-08-03
GB201412337D0 (en) 2014-08-27
US20170161112A1 (en) 2017-06-08
WO2016005723A1 (en) 2016-01-14
JP6637450B2 (ja) 2020-01-29
KR20170032339A (ko) 2017-03-22
GB2528115B (en) 2021-05-19

Similar Documents

Publication Publication Date Title
JP4551452B2 (ja) 多数のプロセッサをグレースフルに処理するアトミック命令なしリード・コピー・アップデートの猶予時間検出
US9430166B2 (en) Interaction of transactional storage accesses with other atomic semantics
US7178062B1 (en) Methods and apparatus for executing code while avoiding interference
US9396115B2 (en) Rewind only transactions in a data processing system supporting transactional storage accesses
US9342454B2 (en) Nested rewind only and non rewind only transactions in a data processing system supporting transactional storage accesses
US8316366B2 (en) Facilitating transactional execution in a processor that supports simultaneous speculative threading
US20100031084A1 (en) Checkpointing in a processor that supports simultaneous speculative threading
US20070240158A1 (en) Method and apparatus for synchronizing threads on a processor that supports transactional memory
JP2011529603A (ja) バーチャル化可能な高度な同期機構
TWI786181B (zh) 在例外遮罩更新指令之後允許未中止的交易處理
US20100017581A1 (en) Low overhead atomic memory operations
US10108464B2 (en) Managing speculative memory access requests in the presence of transactional storage accesses
Negi et al. π-TM: Pessimistic invalidation for scalable lazy hardware transactional memory
Wang et al. Transaction-friendly condition variables
JPWO2011096163A1 (ja) 情報処理システム、排他制御方法および排他制御用プログラム
TWI801603B (zh) 處理獨佔式載入指令的資料處理設備、方法及電腦程式
JP6313907B2 (ja) 計算の非決定性の下でのリカバリ及び耐障害
Bhat et al. OSIRIS: Efficient and consistent recovery of compartmentalized operating systems
JP6637450B2 (ja) トランザクションにおけるレジスタの動的なセーブ
US20150160967A1 (en) Context preservation during thread level speculative execution
JP2009230479A (ja) マイクロプロセッサ
US7555614B1 (en) Methods, systems, and computer program products for preventing concurrent execution of conflicting software operations on the same and different storage processors having access to a common storage medium while avoiding deadlocks
JP2014119964A (ja) 計算機システムおよびプログラム
TW201933100A (zh) 送交視窗移動元件
Cvetanović et al. Restart Optimization for Transactional Memory with Lazy Conflict Detection

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180604

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190226

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190314

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190612

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: 20191127

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191220

R150 Certificate of patent or registration of utility model

Ref document number: 6637450

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250