JP2022104872A - バッファ保護における境界情報アクセスを提供する方法、システム、およびコンピュータ・プログラム - Google Patents

バッファ保護における境界情報アクセスを提供する方法、システム、およびコンピュータ・プログラム Download PDF

Info

Publication number
JP2022104872A
JP2022104872A JP2021188286A JP2021188286A JP2022104872A JP 2022104872 A JP2022104872 A JP 2022104872A JP 2021188286 A JP2021188286 A JP 2021188286A JP 2021188286 A JP2021188286 A JP 2021188286A JP 2022104872 A JP2022104872 A JP 2022104872A
Authority
JP
Japan
Prior art keywords
boundary information
register
load
computer
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2021188286A
Other languages
English (en)
Inventor
トン、チェン
Tong Chen
リチャード、エイチ、ボイヴィー
H Boivie Richard
アルパー、ブユクトスノグル
Buyuktosunoglu Alper
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 JP2022104872A publication Critical patent/JP2022104872A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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
    • G06F9/30047Prefetch instructions; cache control 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • G06F9/30127Register windows
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding

Landscapes

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

Abstract

【課題】バッファ保護における境界情報アクセスを最適化するための方法、装置、およびシステムを提供する。【解決手段】バッファ保護における境界情報アクセスを提供するための方法、システム、および装置は、汎用レジスタと、BI(境界情報)レジスタ内の境界情報との間の1対1マッピングを提供することと、ロードした境界情報を将来の使用のためにBIレジスタにセーブすることと、プログラム実行に沿って維持されるBIレジスタ内の境界情報の整合性を提供することと、BIレジスタのロード命令に関する1ビットの追加の制御によって、境界情報の事前ロードを提供することと、を含む。【選択図】図1A

Description

本発明は、境界情報(bound information)アクセスのための方法、装置、およびシステムの一実施形態に関し、より詳細には、限定ではないが、バッファ保護における境界情報アクセスを最適化するための方法、装置、およびシステムに関する。
ソフトウェアが誤ってまたは意図的に、割り当てられたサイズおよびメモリ・アドレスを超える方法でシステム・メモリにアクセスする場合に、メモリ安全性の脆弱性(たとえば、バッファ・オーバーフロー、競合状態、ページ・フォールト、nullポインタ、スタック枯渇、ヒープ枯渇/破損、解放後使用(use after free)、または二重解放(double free)など)が発生する。
特定のオペレーティング・システムおよび他のプログラムで広範囲に使用されているCおよびC++などのプログラムは、複数のメモリ安全性エラーにつながる可能性があり、攻撃者はこれらを悪用して、たとえば、遠隔コード実行または権限昇格の欠陥などの危険で侵入的な結果を引き起こす可能性がある。たとえば、境界外のメモリを読み出すことによって、攻撃者はメモリ・アドレスなどの秘密の値を入手できる場合があり、これによって保護メカニズムが迂回される可能性がある。
そのため、メモリ安全性の脆弱性を効率的な方法で低減または排除することが可能な技術が必要である。
上記の背景技術の前述および他の問題、不利な点、および欠点を考慮して、開示する発明の例示的な態様は、バッファ保護における境界情報アクセスを最適化するための方法、装置、およびシステムを提供する。
本発明の一実施形態は、バッファ保護における境界情報アクセスを提供するための方法であって、汎用レジスタと、BI(境界情報)レジスタ内の境界情報との間の1対1マッピングを提供することと、ロードした境界情報を将来の使用のためにBIレジスタにセーブすることと、プログラム実行に沿って維持されるBIレジスタ内の境界情報の整合性を提供することと、BIレジスタのロード命令に関する1ビットの追加の制御によって、境界情報の事前ロード(pro-active load)を提供することと、を含む、方法である。
本発明の一実施形態は、バッファ保護における境界情報アクセスを提供するためのシステムであって、コンピュータ命令を記憶するメモリと、プロセッサと、を含み、プロセッサは、コンピュータ命令を実行して、汎用レジスタと、BI(境界情報)レジスタ内の境界情報との間の1対1マッピングを提供することと、ロードした境界情報を将来の使用のためにBIレジスタにセーブすることと、プログラム実行に沿って維持されるBIレジスタ内の境界情報の整合性を提供することと、BIレジスタのロード命令に関する1ビットの追加の制御によって、境界情報の事前ロードを提供することと、を行うように構成される、システムである。
本発明の一実施形態は、プログラム命令を具現化するコンピュータ可読記憶媒体を含むコンピュータ・プログラム製品であって、プログラム命令は、コンピュータによって読み取り可能かつ実行可能であり、コンピュータに、バッファ保護における境界情報アクセスを提供するための方法を実施させ、方法は、汎用レジスタと、BI(境界情報)レジスタ内の境界情報との間の1対1マッピングを提供することと、ロードした境界情報を将来の使用のためにBIレジスタにセーブすることと、プログラム実行に沿って維持されるBIレジスタ内の境界情報の整合性を提供することと、BIレジスタのロード命令に関する1ビットの追加の制御によって、境界情報の事前ロードを提供することと、を含む、コンピュータ・プログラム製品である。
以上、本発明の特定の実施形態をかなり広範に概説することによって、本明細書におけるそれらの詳細な説明がより良く理解されるようにし、また、当技術分野への本発明の寄与がより良く評価されるようにした。当然ながら、以下に説明する、本明細書に添付した特許請求の範囲の主題を形成する、本発明の追加の実施形態が存在する。
本発明は、その適用において、以下の説明に記載したまたは図面に示した構成の詳細およびコンポーネントの配置に限定されないことを理解されたい。本発明は、記載した以外の実施形態が可能であり、様々な方法で実践および実施することが可能である。また、本明細書で使用する表現および用語、ならびに要約は、説明を目的としたものであり、限定と見なされるべきではないことを理解されたい。
したがって、本開示の基礎となる概念が、本発明のいくつかの目的を実行するための他の構成、方法、およびシステムの設計の基礎として容易に利用され得ることを当業者は理解するであろう。そのため、特許請求の範囲が、本発明の思想および範囲から逸脱しない限りにおいて、そのような同等の構成を含むものと見なされることが重要である。
本発明の例示的な態様は、図面を参照して、本発明の例示的な実施形態の以下の詳細な説明からより良く理解されよう。
本発明の一実施形態の例示的なシステムを示す図である。 本発明の一実施形態の境界情報テーブルの非限定的な例を示す図である。 本発明の一実施形態の境界情報レジスタ・ファイルおよび汎用レジスタ・ファイルを示す図である。 本発明の一実施形態の境界情報レジスタ・ファイルを示す図である。 本発明の一実施形態の境界情報レジスタ・ファイルの状態を示す図である。 本発明の一実施形態の複数のBIレジスタ・ファイルを示す図である。 本発明の一実施形態のBIレジスタ・ファイルの維持を示す図である。 C/C++で使用される例示的なコンパイラ180を示す図である。 C/C++における例示的なコンパイル時(compile time)190および実行時(run-time)192を示す図である。 本発明の一実施形態における例示的な命令を示す図である。 本発明の一実施形態における例示的なロード命令を示す図である。 本発明の一実施形態における例示的なストア命令を示す図である。 本発明の一実施形態における、境界情報をプリフェッチすべき場合またはすべきでない場合を示す図である。 本発明の一実施形態における、境界情報をプリフェッチすべき場合またはすべきでない場合の例を示す図である。 本発明の一実施形態を示す図である。 本発明の例示的な実施形態を内部に組み込むための例示的なハードウェア/情報ハンドリング・システムを示す図である。 本発明の例示的な実施形態による方法を実装するプログラムの機械可読命令を記憶するための信号保持記憶媒体を示す図である。 本発明の例示的な実施形態によるクラウド・コンピューティング・ノードを示す図である。 本発明の例示的な実施形態によるクラウド・コンピューティング環境を示す図である。 本発明の例示的な実施形態による抽象化モデル・レイヤを示す図である。
以下、図面の図を参照して本発明を説明し、図全体を通して、同様の参照番号は同様の部分を指す。一般的な慣行に準じて、図面の様々な特徴は必ずしも縮尺通りではないことを強調しておく。それどころか、様々な特徴の寸法は、明確にするために任意に拡大または縮小する場合がある。例示的な実施形態は、説明の目的で以下に提供しており、特許請求の範囲を限定するものではない。さらに、いずれのステップも、異なる順序で実行したり、組み合わせたり、同時に実行したりすることができることに留意されたい。また、図示した構成および実施形態はいずれも、修正したり組み合わせたりすることができる。
境界外のメモリ参照は、深刻なセキュリティの問題を引き起こし得る。バッファ・オーバーフロー脆弱性は、たとえば、モリス・インターネット・ワーム(1988)など、少なくとも30年間問題となっている。バッファ・オーバーフロー・バグによって、バッファ・オーバーフロー・ベースのコード注入、リターン指向プログラミング(ROP:Return-Oriented Programming)、「HeartBleed」を含む、多くの形態の攻撃が可能になっている。
バッファ・オーバーフロー攻撃またはバッファ・オーバーフロー攻撃の影響に対処するためにいくつかの研究が行われており、たとえば、「スタック・カナリア」、W XOR Xメモリ・ページ、ASLR、「シャドー・スタック」、および「制御フロー整合性(control flow integrity)」を保護するための他のアプローチなどがある。
Oracle(R)のシリコン・セキュアド・メモリ(SSM)におけるメモリ内の「色」データは、「誤った色」を有するポインタによるアクセスを防ぐ。SSMにはいくつかの制限があり、たとえば、14色のみであり、保護されるデータの粒度は64バイトである。
ロードまたはストアの各メモリ参照がメモリ境界線内であるか否かをチェックすることは重要である。1つの既存の解決策は、INTEL(R)のメモリ保護拡張機能(MPX:Memory Protection Extensions)システムである。MPXは、正確な境界チェックのために、新しいISA(命令セット・アーキテクチャ)およびハードウェア・サポートを導入した。メモリ内で、ポインタ値を鍵として、各バッファの境界情報(BI)が記憶される/取り出される。コア内で、ポインタおよびそのBIはレジスタ内にあり、コンパイラによって追加された追加命令によってマッピングが維持される。元々の計算と、境界保護動作とが、同じハードウェア・リソースを共有する。メモリ安全性の脆弱性を除去または削減しようと試みる他の方法が存在する。
しかしながら、全てのこれらの他の解決策には、複数の命令を追加する必要があるという1つの大きな問題があり、実装にもコストがかかる。結果的に、境界チェックがオフにされた場合でも、命令の数は4倍以上増加し得、実行時間は2倍以上に増加する可能性がある。
INTEL(R)のMPXは、正確な境界情報(BI)を用いて境界外参照からバッファを保護する。MPXは、ポインタ値のハッシュ化を介して、バッファのBIをBIテーブルに記憶する。ポインタがロードされるときに、ポインタのBIは汎用レジスタに入れられる。レジスタ内のBIをそのコンシューマであるロード/ストア命令に伝播させるために、ブックキーピング・コード(bookkeeping code)が追加される。ロード/ストアの前に境界チェック命令が挿入される。
MPXに関するさらなる問題は、BIのロードが使用されない場合があり、BIのために2レベルのメモリ・アクセスが存在するということである。他の従来の方法には、BIエントリの過剰なロード要求につながるという問題があり、BIが同一の命令でロードおよび使用されるので、レイテンシが隠蔽されない。
配列要素へのポインタ参照を含む配列要素への参照(たとえば、x[i]、*p++、p->foo)が境界外となる場合を検出する必要がある。
既存のプログラムを書き換えずに、大幅なスペースまたは時間のオーバーヘッドなく、これを行うことができる必要がある。
本発明は、従前の解決策のように命令の数を増加させるという問題なく、メモリ安全性の脆弱性に関する上記の問題を解決する。
本発明は、全てのバッファを保護する正確な保護と、バイトにまで達する精度とを提供する。本システムは、任意のポインタ演算が存在し、1つのアプリケーションで保護すべきバッファの数が数千から数百万に及び得る、メモリの問題を有し得るC/C++アプリケーションおよび他のプログラムに適用可能である。
図1Aは、本発明の一実施形態の例示的なシステムを示している。これは非限定的な例であり、他の構成も可能である。システム100は、CPU(中央処理装置)コア10およびメモリ20を含む。CPUコア10は、命令フェッチおよびデコード12、ALU(算術論理演算ユニット)14、汎用レジスタ・ファイル16、境界レジスタ・ファイル18、境界処理ユニット20を含む。汎用レジスタ・ファイルはデータ・キャッシュ22と通信し、境界レジスタ・ファイル18は境界情報(BI)キャッシュ24とリンクされる。メモリ20内の境界情報テーブル26へのアクセスによる速度低下を抑制するために、境界情報(または上下限(bounds)情報)キャッシュ24を追加することができる。
図1Bは、本発明の一実施形態の境界情報テーブルの非限定的な例を示している。
BIテーブル26は、複数のBIエントリ29を含む1次元テーブルであって、各BIエントリが、ベース・アドレス・フィールド40と、オブジェクト・サイズまたは長さフィールド42とを含むものとして編成することができる。BIテーブル26の各BIエントリをヒープ・オブジェクトに関連付けることができる。所与のオブジェクトに対応するBIテーブル26の特定のBIエントリにアクセスすることは、1回のテーブル参照を含むことができる。1回のテーブル参照は、たとえば、オブジェクト割り当て中のポインタに埋め込むことが可能なインデックスを使用することを含むことができる。
図1Aに戻ると、CPUコア10は、パス23および25を介して、メモリ内のBIテーブル26との間で情報を伝達する。この場合もやはり、これは単なる一例であるので、異なる構成を設けることもできる。
一般に、本発明は、境界情報(あるいは、たとえば、境界線(boundary)情報または上下限情報と呼ぶ)を保持するBIレジスタ18を導入する。ロード/ストア命令に対する境界チェックのために境界情報をロードする場合、システム100はこれをBIレジスタ18にセーブする。
システム100は、同じバッファからのロードの場合に、BIをロードしないようにする。システム100は、BIレジスタ18をハードウェアで維持することができる。本発明は、単に同じレジスタを使用するのではなく、同じバッファを指すポインタに対してBIレジスタ18間でBIを伝播させることができる。本発明によってコードに追加される追加命令はない。システム100は、メモリ20からポインタをロードするときに、BIレジスタ18をロードする。本発明は、BIをプリフェッチして、レイテンシを隠蔽し、BIをより多くのポインタに伝播させることができ、無益なプリフェッチを回避するためにコンパイラによって支援される。
本発明は、ロード/ストアによってBIレジスタ18を使用し、BIレジスタ18を用いた境界チェックがハードウェアで行われ、そのようなチェックに必要なコードの変更はない。
図2は、本発明の一実施形態の境界情報レジスタ・ファイルおよび汎用レジスタ・ファイルを示している。
図2を用いて、以下のようにBIレジスタ・ファイル18をさらに詳述する。汎用レジスタ16およびBIレジスタ18の間に1対1マッピング(実質的に)40が存在する。BIRi(または図示したBIRn、ただしnは整数)44エントリは、IDマッピングによって、汎用レジスタ情報GPRi(または図示したGPRn、ただしnは整数)42に関する境界情報を保持する。
BIレジスタ18は、命令の中で直接使用されない。BIレジスタ・ファイル18は、命令の中で汎用レジスタ・ファイル16のインデックスを用いて非明示的にアクセスされる。
図3は、本発明の一実施形態の境界情報レジスタ・ファイルを示している。
図3を参照すると、各BIレジスタ18は、3つのフィールド(インデックス46、LB(下限)48、UB(上限)50)を有する。例に見られるように、上限(UB)50は右端のセル50である。インデックス46については次の段落で説明する。
ポインタ内の「未使用ビット」を転用して、そのポインタを介してアクセス可能なアドレスの範囲をチェックまたは追跡する。たとえば、64ビット・アーキテクチャでは、オブジェクト・ポインタは、一般的には48ビット以下の情報を有する仮想アドレスを記憶するので、未使用ビットを有する。開示した技術はこれらの未使用ビットを活用して、(a)オブジェクトを割り当てるときに、境界テーブルのエントリを割り当てて上下限情報を記憶し、(b)オブジェクト・ポインタの未使用ビット(たとえば、上位ビット)を転用して、境界テーブル・エントリのインデックスを記憶し、(c)代入文またはポインタ演算を介して後続のアドレスを導出するときに、インデックスを自動的に伝播させ、ならびに/あるいは(d)アドレス内のインデックス・ビットを使用して適切な上下限情報にアクセスすることによって、ロード命令およびストア命令に対してハードウェアで境界チェックを実行することができる。
図4は、本発明の一実施形態の境界情報レジスタ・ファイルの状態を示している。
下限LB48および上限50は、バッファに関するものである。BIレジスタ・ファイル18には3つの状態が存在する。第1の状態は「非ポインタ」であり、これは、ペアリングされた汎用レジスタ16内のデータがポインタではないときである。「非ポインタ」状態は、例示的な境界情報BIR1に見られるように、(-1,*,*)と表すことができる。
第2の状態は「インデックスのみ」状態であり、これは、ペアリングされた汎用レジスタ16内のデータがポインタであるが、その境界情報がまだロードされていないときである。「インデックスのみ」状態は、例示的な境界情報BIR2に見られるように、(インデックス,N/A,N/A)と表すことができる。「N/A」は利用不可を表し、インデックス値が与えられている。
第3の状態は「BIロード済み」状態であり、これは境界情報がロード済みであるときである。その場合、BIレジスタ18は、例示的な境界情報BIR3に見られるように、(インデックス,LB,UB)を含む。その際、第3の状態は、インデックス46、下限48、および上限50の境界情報値を含む。BIレジスタ18の状態を検出するための迅速な方法があると推測される。他の状態を追加することもでき、または状態を削除することができる。
BIレジスタ・ファイル18は、セーブ/リストアが存在するマシン・ステートの一部であり、またはセーブせずにコンテキストをリストアするときに、全てをNULL-BI(NULL境界情報)に設定する。たとえば、インデックス0x0をNULLポインタ用に予約して(たとえば、ポインタ値「0」)、NULLポインタで呼び出されるfreeをサポートすることができる。
図5は、複数のBIレジスタ・ファイルを示している。図1Aのシステム100に類似したシステム200は、複数のBIレジスタ18~18を含むことができ、ここで、nは整数である。
図6Aは、本発明の一実施形態のBIレジスタ・ファイルの維持を示している。図6Bは、C/C++で使用可能な例示的なコンパイラ180を示している。図6Cは、C/C++における例示的なコンパイル時190および実行時192を示している。
図6Aを参照すると、BIレジスタ・ファイル18は、以下のようにして維持することができる。目標の1つは、BIレジスタ・ファイル18内の境界情報を初期化し、プログラム実行に沿って伝播させることである。これは、プログラム解析の補助なしの、実行時の一種のデータ・フローである。
アプローチは以下の通りである。BIレジスタ・ファイル18は、ハードウェアによって自動的に管理される。追加される命令はない。命令ごとに使用されるBIレジスタ・ファイル18の検査がある。
ロード/ストアが実行された場合(130)、ソース・アドレス・ポインタとペアリングされたBIレジスタ・ファイル18は、境界チェックのためにロードされるBIで初期化される(132)(図6Cの境界チェック用のハードウェア・インサート(hardware insert)の参照符号194も参照されたい)。たとえば、図3に戻ると、GPR3=load GPR5の場合、BIR5はこのロードの境界チェックに使用されるBIに設定される。
図6Aに戻ると、レジスタに即値が割り当てられる場合(134)、結果レジスタ(result register)とペアリングされたBIレジスタ18は、図4のBIR1に見られるように、値「-1」を有する「非ポインタ」状態に設定される(ステップ136)。たとえば、GPR7=100の場合、BIR7は「非ポインタ」に設定される。
1つのソース・レジスタを用いてレジスタが計算される場合(138)、システム100は、ソース・レジスタのBIレジスタ・ファイル18を結果レジスタのBIレジスタ・ファイル18にコピーする(140)。たとえば、GPR3=GPR7+10の場合、BIR3にBIR7が割り当てられる。
2つ以上のソース・レジスタを用いてレジスタが計算される場合(142)、以下を行うことができる。ソース・レジスタのただ1つのBIレジスタ18が「非ポインタ」でない場合、システム100はそのBIレジスタを結果レジスタのBIレジスタにコピーする(144)。
たとえば、ポインタqについて、GPR3=GPR7+GPR8としてp.q=p+idxであり、pがBIレジスタ18内にBIを有する場合、BIR3にBIR7が割り当てられる。
そうでなければ、システム100は、「非ポインタ」をBIレジスタ18に割り当てる(ステップ146)。たとえば、GPR3=GPR7+GPR8として浮動小数点計算z=x+yの場合、BIR3にNULL-BIが割り当てられる。他の例は、R3=R3 xor R3としてレジスタ=0の場合であり、BIR3に非ポインタが割り当てられる。さらに他の例は、GPR3=GPR7-GPR8としてポインタ減算オフセット=p-qの場合であり、BIR3に非ポインタが割り当てられる。
レジスタがメモリからロードされる場合(148)、コンパイラ180がこのロードをポインタのロードとしてマークしていなければ、結果レジスタとペアリングされたBIレジスタ18は、「非ポインタ」に設定される(150)。たとえば、GPR3=load GPR7としてint x=*pの場合、BIR3に非ポインタが割り当てられる。他の例では、GPR3=pointer-load GPR7としてint *q=*pの場合に、BIR3に(インデックス、N/A、N/A)が割り当てられ、インデックスはGPR3内の未使用ビットから取り出される。
しかしながら、ロードがコンパイラ180によってロード済みの境界情報として特別にマークされている場合(152)、結果レジスタとペアリングされたBIレジスタ18は、「BIロード済み」として設定される(154)。たとえば、GPR3=pointer-BI-load GPR7としてint *q=*pの場合、GPR3内のポインタの境界情報がロードされ、BIR3に割り当てられる。GPR3内のポインタの境界情報は、GPR3内の「インデックス・ビット」からの情報を使用してロードされる。これは一種のBIのプリフェッチである。プリフェッチを示す1ビットを使用するように既存のロード命令を変更するか、またはBIプリフェッチ命令、たとえば、GPRi=BI_Load GPRiを導入する場合、ISAサポートが必要になる。
「createBI」(境界情報の作成)が呼び出された場合(156)、アドレス・ポインタとペアリングされたBIレジスタにそのBIが設定される(158)。このステップはより良い性能のためのオプションであり、追加のISAサポートが必要になる。
図3および図6Aに戻ると、BIレジスタ・ファイル18は以下のように使用される。ロード/ストア命令は、アドレス・レジスタ(GPRn)42とペアリングされたBIレジスタ(BIRn)44の使用を試みる(ステップ160)。システム100は、BIRn44がBIロード済みであって、BIRn44がアドレス・ポインタと同じインデックスを含むか否かをチェックする(162)。チェックの結果がyesの場合、BIRn内のLBおよびUBを境界チェックに使用する(164)。そうでなければ、境界情報のロード要求が発行されなければならない(166)。
インデックスのチェックは、以下の理由で必要である。ポインタが境界外にある場合、その未使用ビット内のインデックス値は変更され得る。チェックによって、そのようなケースを検出することができる。
図7は、本発明の一実施形態における例示的な命令を示している。命令終了時の結果は、列BIRp、BIRq、およびBIRr(ポインタp、q、r)に示している。
図8Aは、本発明の一実施形態における例示的なロード命令402を示している。図8Bは、本発明の一実施形態における例示的なストア命令412を示している。
図9Aは、本発明の一実施形態における、境界情報をプリフェッチすべき場合またはすべきでない場合を示している。
境界情報をプリフェッチすべき場合を以下に示す。BIロードの回数を削減するかまたはレイテンシを隠蔽する可能性がある場合、境界情報のフェッチは有益である。
図9Aは、境界情報をプリフェッチすべき場合の判定の開始を含む(502)。システム100は、ステップ504において、BIロードの回数を削減するのに有益であるか否かを判定する。システム100が「yes」と判定した場合、境界情報はプリフェッチされるべきである(508)。システム100が「no」と判定した場合、境界情報はプリフェッチされるべきではない(510)。
システム100はまた、ステップ506において、レイテンシを隠蔽する場合に有益であるか否かを確かめる。システム100が「yes」と判定した場合、境界情報はプリフェッチされるべきである(508)。システム100が「no」と判定した場合、境界情報はプリフェッチされるべきではない(510)。
図9Bは、本発明の一実施形態における、境界情報をプリフェッチすべき場合またはすべきでない場合の例を示している。
例1(602)では、ロードの回数が削減される。[1]のロードがマークされている場合、Rpの境界情報がBIRpにロードされる。BIRpが[2]でBIRqにコピーされ、[4]でBIRtにコピーされる。[3]および[5]のロードは、BIのロード要求なしに、そのBIレジスタ18を境界チェックに使用することができる。[1]のロードがマークされていない場合、[3]および[5]の両方のロードはBIのフェッチが必要になる。それらは異なるレジスタを使用する。
境界情報をプリフェッチすべきでない場合を例2(604)に示す。例2(604)では、[1]のロードはプリフェッチされるべきではない。BI要求の回数は同じままである。[4]のロードの初回の実行は、BIRpで初期化される。BIRpは、ループ実行に沿って、[4]に伝播される。[4]のロードの以降の実行では、BIがロードされなくなる。レイテンシの隠蔽はそれほど多くない。[1]と[4]との間には2つの単純な命令しかない。[1]でロードされたBIは使用されない場合があり、[4]は分岐内にあり、実行されない場合がある。
図1、図6Bおよび図6Cに戻って、コンパイラ180の判定方法を以下に示す。基本的に、コンパイラ180は静的データ・フロー解析を実行して、ポインタのロードがマークされるべきか否かを見極める。判定は単にパフォーマンスの問題であり、正確性の問題ではない。ヒューリスティックス(heuristics)を使用して問題を単純化し、未知の要因に対処する。
システム100は、以下のようにして、ポインタの各ロードに別々に対処するためにアプローチを選択する。システムは、このロードによって支配され、影響を受けるプログラムのサブグラフのみを考慮する。ロードがBIのプリフェッチ用にマークされている場合、このサブグラフではBIが1回ロードされる。このロードがマークされていない場合、システム100は、このサブグラフに必要なBIロードの回数をカウントする。システム100は、パス可能性(path possibility)を考慮に入れる。そのため、システムは比較および判定を行う。ポインタの未使用ビットに記憶されたインデックスは常に同じままであると仮定する。ハードウェアによるBIの伝播は常に成功する。
BIのプリフェッチによって影響を受けるサブグラフの構築は、次の通りである。ポインタのロードがターゲット、すなわち、ルート・ロードであると仮定し、S0:ptr=load addrである。システム100は制御フロー・グラフをトリミングし、このロードS0によって支配されるノードのみを残す。
プリフェッチの影響は、この範囲を超える可能性があるが、無視される。システム100は、このロードの結果レジスタptrのためにプリフェッチされるBIレジスタを使用し得る全てのロード/ストア命令を探索する。
システム100は、ポイント・ツー解析(points-to analysis)を、何らかのカスタマイズと共に適用することができる。たとえば、ポインタのメモリ・オブジェクトの代わりに、ポインタのBIが解析される。BIルートと呼ぶ、S0でptrのために生成されるものが関心対象である。他のBIは無視することができる。ポイント・ツー解析は、ポインタ変数と、プログラム実行中にそれらが指すメモリ位置との間の関係を識別するのに役立つコンパイル時技術である。
システム100は、制御フロー・グラフをトリミングし、ポイント・ツー・セットがBIルートを含み、残存しているノードのみを残すことができる。ロード/ストアのアドレスはコンシューマである。
S0グラフと表記する結果グラフが、以下に示すように、次のステップに使用される。例示的な命令の詳細は次のようになる。下記の状態セットに関して、基本的にコンパイラは静的データ・フロー解析を実行して、ポインタのロードがプリフェッチ用にマークされるべきであるか否かを見極める。制御フロー・グラフの走査の間、ノードを記述するために3つの参照記号に依存する。「v:ポイント・ツー要素のポインタ、mo:ポイントされるメモリ・オブジェクト、p:[0,1]内の値または状態{確定,不確定}とすることができるパス可能性情報」。
状態セット:タプル(v,mo,p)内の要素
v:ポイント・ツー要素のポインタ
mo:ポイントされるメモリ・オブジェクト
p:[0,1]内の値または状態{確定、不確定}とすることができるパス可能性情報
開始ノード:ptr1=load addr
GEN={(ptr1,bi-obj,1)}
演算命令:ptr2=op(ptr1,他のオペランド)
KILL={(ptr2,mo,p)|(ptr2,mo,p)はIN内にある}
GEN={(ptr2,mo,p’)|(ptr1,mo,p)はIN内にあり、p’は現在のパスである}
ロード/ストア命令:load addressまたは store address
BIレジスタ18のみを使用すると仮定する。チェックによって異なる境界情報がロードされる場合、その境界情報はここでは関心事項ではない。
伝達関数(transfer function):OUT=IN-KILL+GEN
マージ関数:(ptr,mo,p1)および(ptr,mo,p2)が2つのパスによるものである場合、結果は(ptr,mo,p1+p2)となる
プリフェッチを行わない場合、システム100は以下を計算する。システム100は、BIをロードするのに必要なロード/ストアであって、BIレジスタ18からではないものを探索する。システム100は、ルート・ロードに近いロード/ストアから開始し、広がっていく。システム100は、他のロード/ストアに起因してBIレジスタを使用する可能性のあるロード/ストアを識別する。全てのロード/ストアを網羅できるまで、システム100は繰り返す。例示的な非限定的な命令は以下の通りである。
work_graph=S0グラフ;
saved=0;
while(work_graphはまだS0以外のロード/ストアを含む){
idom_set={s0によって直接支配されるwork_graph内のロード/ストア}
For 命令si:idom内のload addrまたはstore addr{
pはsiのパス可能性である;
{(addr,bi-obj,p)}のKILLをsiに追加する
saved+=p

データ・フローを再度実行する;
work_graph=work_graph-idom_set-bi-objを使用せず、到達しない全てのロード/ストア;

If(saved>1)BIのプリフェッチ用にs0にマークする
図10は、本発明の一実施形態を示している。図示した以下のステップはいずれも、並行して、または異なる順序で実行することができる。
システム100は、汎用レジスタ16と、BIレジスタ18内の境界情報(BI)との間の1対1マッピングを提供する(ステップ702)。
システム100は、ロードした境界情報を将来の使用のためにBIレジスタ18にセーブする(704)。システム100は、プログラム実行に沿って維持されるBIレジスタ18内の境界情報の整合性を提供する(708)。
システム100は、BIレジスタ18のロード命令に関する1ビットの追加の制御によって、境界情報の事前ロードを提供する(ステップ710)。コンパイラ180は、境界情報の事前ロードの候補ロードを決定する。
システム100は、メモリ帯域幅要求を最小化するか、またはロード・レイテンシを隠蔽するように境界情報のロードを管理する。システムは、静的プログラム解析によって有益なケースを選択する。システム100は、境界情報のロードが削減されるか否かに基づいて、境界情報のプリフェッチを決定する。システム100は、レイテンシを隠蔽するという決定に基づいて、境界情報のプリフェッチを決定する。境界情報レジスタ18内の境界情報は、初期化され、プログラム実行に沿って伝播される。
したがって、本発明は、システム100が全てのバッファを保護し、精度がバイトにまで達する正確な保護を提供しつつ、なおも境界情報のロード要求を削減することができる。本発明は、任意のポインタ演算を含み、1つのアプリケーションで保護すべきバッファの数が数千から数百万に及び得る、C/C++アプリケーションなどのレガシー・プログラムに適用可能である。
したがって、上述のように、ハードウェア・コンポーネントはBIレジスタ18である。汎用レジスタ16と、BIレジスタ18内のBIとの間の1対1マッピングが自動的に提供される。システム100は、ロードした境界情報を将来の使用のためにBIレジスタ18にセーブする。BIレジスタ18内の境界情報の整合性が、プログラム実行に沿って自動的に維持される。ロード命令に関する1ビットの追加の制御によって、BIの事前ロードがサポートされる。
ソフトウェア・コンポーネントは、境界情報の事前ロードの候補ロードを決定するコンパイラ180を含む。コンパイラ180はさらに、境界情報のロード要求を削減するか、またはロード・レイテンシを隠蔽する。システム100は、静的プログラム解析によって有益なケースを選択する。
図1~図10の異なる図に示した異なる特徴は、異なる例の間で、組み合わせたり、変更したり、切り替えたりすることができる。システム100および200は単に例示の目的で、非限定的な例として示している。他の任意の構成を使用することができる。たとえば、図1~図10に示したシステム100および200は、図11~図15に示すハードウェアおよびソフトウェアに実装することもできる。
図11はこのシステムの他のハードウェア構成を示しており、その中に本発明による情報ハンドリング/コンピュータ・システム1100があり、これは好ましくは、ソフトウェア・インテリジェンス・アズ・ア・サービスのためのソフトウェア・プログラムの形態で本発明の技術を実装することが可能な少なくとも1つのプロセッサまたは中央処理装置(CPU)1110を有する。
CPU1110は、システム・バス1112を介して、ランダム・アクセス・メモリ(RAM)1114、読み取り専用メモリ(ROM)1116、入力/出力(I/O)アダプタ1118(ディスク・ユニット1121およびテープ・ドライブ1140などの周辺機器をバス1112に接続するため)、ユーザ・インターフェース・アダプタ1122(キーボード1124、マウス1126、スピーカー1128、マイクロフォン1132、または他のユーザ・インターフェース・デバイス、あるいはそれらの組合せをバス1112に接続するため)、情報ハンドリング・システムをデータ処理ネットワーク、インターネット、イントラネット、パーソナル・エリア・ネットワーク(PAN)などに接続するための通信アダプタ1134、ならびにバス1112をディスプレイ・デバイス1138またはプリンタ1139(たとえば、デジタル・プリンタなど)あるいはその両方に接続するためのディスプレイ・アダプタ1136に相互接続される。
上述のハードウェア/ソフトウェア環境に加えて、本発明の異なる態様は、上記の方法を実行するためのコンピュータ実装方法を含む。一例として、この方法は、上記で論じた特定の環境で実装され得る。
そのような方法は、たとえば、機械可読命令のシーケンスを実行するように、デジタル・データ処理装置によって具現化されるコンピュータを動作させることによって実装され得る。これらの命令は、様々なタイプの信号保持媒体に存在し得る。
したがって、本発明のこの態様は、本発明の方法を実行するために、CPU1110および上記のハードウェアを組み込んだデジタル・データ・プロセッサによって実行可能な機械可読命令のプログラムを有形に具現化する信号保持記憶媒体を含む、プログラムされた製品を対象とする。
この信号保持記憶媒体は、たとえば、高速アクセス・ストレージなどに代表されるような、CPU1110内に含まれるRAMなどを含み得る。
あるいは、命令は、CPU1110によって直接または間接的にアクセス可能な、フラッシュ・メモリ1210または光ストレージ・ディスケット1220(図12)などの他の信号保持記憶媒体1200に含まれ得る。
フラッシュ・メモリ1210、光ディスク1220、コンピュータ/CPU1110、または他の場所のいずれに含まれるかにかかわらず、命令は様々な機械可読データ記憶媒体に記憶され得る。
したがって、本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはそれらの組合せであり得る。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体(または複数の媒体)を含み得る。
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のために命令を保持および記憶可能な有形のデバイスとすることができる。コンピュータ可読記憶媒体は、たとえば、限定はしないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組合せであり得る。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラム可能読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック(R)、フロッピー(R)・ディスク、命令が記録されたパンチ・カードまたは溝の隆起構造などの機械的にコード化されたデバイス、およびこれらの任意の適切な組合せが含まれる。コンピュータ可読記憶媒体は、本明細書で使用する場合、たとえば、電波または他の自由に伝搬する電磁波、導波管もしくは他の伝送媒体を伝搬する電磁波(たとえば、光ファイバ・ケーブルを通過する光パルス)、または有線で伝送される電気信号などの一過性の信号自体であると解釈されるべきではない。
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、あるいは、たとえば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくは無線ネットワーク、またはそれらの組合せなどのネットワークを介して外部コンピュータまたは外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅線伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはそれらの組合せを含み得る。各コンピューティング/処理デバイスのネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、コンピュータ可読プログラム命令を転送して、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいは、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または類似のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードまたはオブジェクト・コードであり得る。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロン・ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上かつ部分的にリモート・コンピュータ上で、あるいは完全にリモート・コンピュータまたはサーバ上で実行され得る。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続され得、または(たとえば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータへの接続がなされ得る。いくつかの実施形態では、たとえば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用してコンピュータ可読プログラム命令を実行することによって、電子回路を個人向けにし得る。
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して本明細書で説明している。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方におけるブロックの組合せが、コンピュータ可読プログラム命令によって実装できることは理解されよう。
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/動作を実装するための手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供されてマシンを生成し得る。
また、これらのコンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/動作の態様を実装する命令を含む製造品を構成するように、コンピュータ可読記憶媒体に記憶され、コンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはそれらの組合せに特定の方法で機能するように指示することが可能であり得る。
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/動作を実装するように、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードして、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実行させることによって、コンピュータ実装処理を生成し得る。
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能性、および動作を示している。これに関して、フローチャートまたはブロック図の各ブロックは、指定された論理的機能を実装するための1つまたは複数の実行可能命令を含むモジュール、セグメント、または命令の一部を表し得る。いくつかの代替的実装形態では、ブロックに記載した機能は、図示した順序以外で行われ得る。たとえば、関与する機能性に応じて、連続して示した2つのブロックは、実際には実質的に同時に実行され得、またはそれらのブロックは、場合により逆の順序で実行され得る。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組合せは、指定された機能もしくは動作を実行するか、または専用ハードウェアおよびコンピュータ命令の組合せを実行する専用のハードウェア・ベースのシステムによって実装できることにも気付くであろう。
ここで図13を参照すると、クラウド・コンピューティング・ノードの一例の概略図1400が示されている。クラウド・コンピューティング・ノード1400は、適切なクラウド・コンピューティング・ノードの一例にすぎず、本明細書に記載の本発明の実施形態の使用または機能性の範囲に関するいかなる制限を示唆することも意図するものではない。いずれにしても、クラウド・コンピューティング・ノード1400は、上記の機能性のいずれをも実装するまたは実行するあるいはその両方を行うことが可能である。前述のように、図1のシステム100は、たとえば、図13(ならびに図14および図15)などのクラウド・インフラストラクチャに実装することができる。クラウド・コンピューティング・ノード1400には、コンピュータ・システム/サーバ1412が存在し、これは、他の多くの汎用または専用のコンピューティング・システム環境または構成で動作可能である。コンピュータ・システム/サーバ1412での使用に適し得るよく知られているコンピューティング・システム、環境、または構成、あるいはそれらの組合せの例には、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドもしくはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサベースのシステム、セット・トップ・ボックス、プログラム可能な家庭用電化製品、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記のシステムもしくはデバイスのいずれか含む分散クラウド・コンピューティング環境などが含まれるが、これらに限定されない。
コンピュータ・システム/サーバ1412は、コンピュータ・システムによって実行されるプログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的なコンテキストで説明し得る。一般に、プログラム・モジュールには、特定のタスクを実行するかまたは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などが含まれ得る。コンピュータ・システム/サーバ1412は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散クラウド・コンピューティング環境において実施され得る。分散クラウド・コンピューティング環境では、プログラム・モジュールは、メモリ・ストレージ・デバイスを含むローカルおよびリモート両方のコンピュータ・システム記憶媒体に配置され得る。
図13に示すように、クラウド・コンピューティング・ノード1400内のコンピュータ・システム/サーバ1412は、汎用コンピューティング・デバイスの形態で示している。コンピュータ・システム/サーバ1412のコンポーネントは、1つまたは複数のプロセッサまたは処理ユニット1416と、システム・メモリ1428と、システム・メモリ1428を含む様々なシステム・コンポーネントをプロセッサ1416に結合するバス1418とを含み得るが、これらに限定されない。
バス1418は、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、アクセラレーテッド・グラフィックス・ポート、および様々なバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスを含む、いくつかのタイプのバス構造のいずれかの1つまたは複数を表す。限定ではなく例として、そのようなアーキテクチャには、業界標準アーキテクチャ(ISA)バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ・エレクトロニクス規格協会(VESA)ローカル・バス、および周辺機器相互接続(PCI)バスが含まれる。
コンピュータ・システム/サーバ1412は、典型的には、様々なコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム/サーバ1412によってアクセス可能な任意の利用可能な媒体であり得、揮発性および不揮発性の媒体、取り外し可能および取り外し不可能な媒体の両方を含む。
システム・メモリ1428は、ランダム・アクセス・メモリ(RAM)1430またはキャッシュ・メモリ1432あるいはその両方などの、揮発性メモリの形態のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ1412は、他の取り外し可能/取り外し不可能な揮発性/不揮発性のコンピュータ・システム記憶媒体をさらに含み得る。単なる例として、取り外し不可能な不揮発性の磁気媒体(図示せず、典型的には「ハード・ドライブ」と呼ばれるもの)に読み書きするためのストレージ・システム1434を設けることができる。図示していないが、取り外し可能な不揮発性の磁気ディスク(たとえば、「フロッピー(R)・ディスク」)に読み書きするための磁気ディスク・ドライブと、CD-ROM、DVD-ROM、または他の光学媒体などの取り外し可能な不揮発性の光学ディスクに読み書きするための光学ディスク・ドライブと、を設けることができる。そのような例では、それぞれを、1つまたは複数のデータ・メディア・インターフェースによってバス1418に接続することができる。以下でさらに図示および説明するように、メモリ1428は、本発明の実施形態の機能を実行するように構成されるプログラム・モジュールのセット(たとえば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含み得る。
プログラム・モジュール1442のセット(少なくとも1つ)を有するプログラム/ユーティリティ1440は、限定ではなく例として、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データと同様に、メモリ1428に記憶され得る。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データまたはそれらの何らかの組合せのそれぞれは、ネットワーキング環境の一実装形態を含み得る。プログラム・モジュール1442は、一般に、本明細書に記載の本発明の実施形態の機能または方法論あるいはその両方を実行する。
コンピュータ・システム/サーバ1412はまた、キーボード、ポインティング・デバイス、ディスプレイ1424などの1つまたは複数の外部デバイス1414、ユーザがコンピュータ・システム/サーバ1412とやりとりすることを可能にする1つまたは複数のデバイス、ならびに/あるいはコンピュータ・システム/サーバ1412が1つまたは複数の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス(たとえば、ネットワーク・カード、モデムなど)と通信し得る。そのような通信は、入力/出力(I/O)インターフェース1422を介して行うことができる。またさらに、コンピュータ・システム/サーバ1412は、ネットワーク・アダプタ1420を介して、ローカル・エリア・ネットワーク(LAN)、一般的なワイド・エリア・ネットワーク(WAN)、またはパブリック・ネットワーク(たとえば、インターネット)、あるいはそれらの組合せなどの、1つまたは複数のネットワークと通信することができる。図示のように、ネットワーク・アダプタ1420は、バス1418を介してコンピュータ・システム/サーバ1412の他のコンポーネントと通信する。図示していないが、他のハードウェアまたはソフトウェアあるいはその両方のコンポーネントを、コンピュータ・システム/サーバ1412と併用できることを理解されたい。例には、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが含まれるが、これらに限定されない。
ここで図14を参照すると、例示的なクラウド・コンピューティング環境1550が示されている。図示のように、クラウド・コンピューティング環境1550は1つまたは複数のクラウド・コンピューティング・ノード1400を含み、これらを使用して、たとえば、パーソナル・デジタル・アシスタント(PDA)もしくは携帯電話1554A、デスクトップ・コンピュータ1554B、ラップトップ・コンピュータ1554C、または自動車コンピュータ・システム1554N、あるいはそれらの組合せなどの、クラウド・コンシューマによって使用されるローカル・コンピューティング・デバイスが通信し得る。ノード1400は相互に通信し得る。これらは、たとえば、上述のプライベート、コミュニティ、パブリック、もしくはハイブリッド・クラウド、またはそれらの組合せなど、1つまたは複数のネットワークにおいて物理的または仮想的にグループ化され得る(図示せず)。これにより、クラウド・コンピューティング環境1550は、クラウド・コンシューマがローカル・コンピューティング・デバイス上にリソースを維持する必要がない、インフラストラクチャ・アズ・ア・サービス、プラットフォーム・アズ・ア・サービス、またはソフトウェア・アズ・ア・サービス、あるいはそれらの組合せを提供することが可能になる。図16に示したコンピューティング・デバイス1554A~Nのタイプは例示的なものにすぎないことを意図しており、コンピューティング・ノード1400およびクラウド・コンピューティング環境1550は、任意のタイプのネットワークまたはネットワーク・アドレス指定可能接続(たとえば、ウェブ・ブラウザを使用)あるいはその両方を介して任意のタイプのコンピュータ化デバイスと通信することができることを理解されたい。
ここで図15を参照すると、クラウド・コンピューティング環境1550(図14)によって提供される機能的抽象化レイヤのセットが示されている。図15に示したコンポーネント、レイヤ、および機能は例示的なものにすぎないことを意図しており、本発明の実施形態はこれらに限定されないことを事前に理解されたい。図示のように、以下のレイヤおよび対応する機能が提供される。
ハードウェアおよびソフトウェア・レイヤ1600は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例には、メインフレーム、一例では、IBM(R)zSeries(R)システム、RISC(縮小命令セット・コンピュータ)アーキテクチャ・ベースのサーバ、一例では、IBM(R)pSeries(R)システム、IBM(R)xSeries(R)システム、IBM(R)BladeCenter(R)システム、ストレージ・デバイス、ネットワークおよびネットワーキング・コンポーネントが含まれる。ソフトウェア・コンポーネントの例には、ネットワーク・アプリケーション・サーバ・ソフトウェア、一例では、IBM(R)WebSphere(R)アプリケーション・サーバ・ソフトウェア、およびデータベース・ソフトウェア、一例では、IBM(R)DB2(R)データベース・ソフトウェアが含まれる。(IBM(R)、zSeries(R)、pSeries(R)、xSeries(R)、BladeCenter(R)、WebSphere(R)、およびDB2(R)は、世界中の多くの管轄区域で登録されたInternational Business Machines Corporationの商標である)。
仮想化レイヤ1620は抽象化レイヤを提供し、抽象化レイヤから、仮想エンティティの以下の例、すなわち、仮想サーバ、仮想ストレージ、仮想プライベート・ネットワークを含む仮想ネットワーク、仮想アプリケーションおよびオペレーティング・システム、ならびに仮想クライアントが提供され得る。
一例では、管理レイヤ1630は、下記の機能を提供し得る。リソース・プロビジョニングは、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソースおよび他のリソースの動的調達を提供する。計量および価格決定は、クラウド・コンピューティング環境内でリソースが利用されたときの費用追跡と、これらのリソースの消費に対する会計または請求とを提供する。一例では、これらのリソースはアプリケーション・ソフトウェア・ライセンスを含み得る。セキュリティは、クラウド・コンシューマおよびタスクの同一性検証だけでなく、データおよび他のリソースに対する保護も提供する。ユーザ・ポータルは、コンシューマおよびシステム管理者にクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理は、要求されたサービス・レベルが満たされるような、クラウド・コンピューティング・リソースの割り当ておよび管理を提供する。サービス・レベル合意(SLA)の計画および履行は、SLAによれば将来要求されると予想されるクラウド・コンピューティング・リソースの事前手配および調達を提供する。
ワークロード・レイヤ1640は、クラウド・コンピューティング環境が利用され得る機能性の例を提供する。このレイヤから提供され得るワークロードおよび機能の例には、マッピングおよびナビゲーション、ソフトウェア開発およびライフサイクル管理、仮想教室教育配信、データ分析処理、取引処理、ならびに、本発明に関してより詳細に言えば、コンテキスト入力に基づいて検索オートコンプリート提案を生成するAPIおよび実行時システム・コンポーネント、などの機能が含まれる。
本発明の多くの特徴および利点は、詳細な明細書から明らかであるので、添付の特許請求の範囲によって意図することは、本発明の真の思想および範囲内にある本発明のそのような全ての特徴および利点を網羅することである。さらに、当業者は多くの修正および変形を容易に思いつくと思われるので、図示および説明した厳密な構成および動作に本発明を限定することは望ましくなく、したがって、全ての適切な修正および均等物は、本発明の範囲内に入るように再分類され得る。
本発明は、その適用において、以下の説明に記載したまたは図面に示した構成の詳細およびコンポーネントの配置に限定されないことを理解されたい。本発明は、記載した以外の実施形態が可能であり、様々な方法で実践および実施することが可能である。また、本明細書で使用する表現および用語、ならびに要約は、説明を目的としたものであり、限定と見なされるべきではないことを理解されたい。
したがって、本開示の基礎となる概念が、本発明のいくつかの目的を実行するための他の構成、方法、およびシステムの設計の基礎として容易に利用され得ることを当業者は理解するであろう。そのため、特許請求の範囲が、本発明の思想および範囲から逸脱しない限りにおいて、そのような同等の構成を含むものと見なされることが重要である。
10 CPUコア
12 命令フェッチおよびデコード
14 ALU
16 汎用レジスタ・ファイル
18 境界レジスタ・ファイル
18 BIレジスタ
18 BIレジスタ
18 BIレジスタ
20 境界処理ユニット
20 メモリ
22 データ・キャッシュ
23 パス
24 BIキャッシュ
25 パス
26 境界情報テーブル
29 BIエントリ
40 アドレス
42 長さ
44 BIレジスタ
46 インデックス
48 LB
50 UB
100 システム
180 コンパイラ
190 コンパイル時
192 実行時
194 境界チェック用のハードウェア・インサート
200 システム
402 ロード命令
412 ストア命令
602 例1
604 例2
1100 情報ハンドリング/コンピュータ・システム
1110 CPU
1112 システム・バス
1114 RAM
1116 ROM
1118 I/Oアダプタ
1121 ディスク・ユニット
1122 ユーザ・インターフェース・アダプタ
1124 キーボード
1126 マウス
1128 スピーカー
1132 マイクロフォン
1134 通信アダプタ
1136 ディスプレイ・アダプタ
1138 ディスプレイ
1139 プリンタ
1140 テープ・ドライブ
1141 リーダー/スキャナ
1200 信号保持記憶媒体
1210 フラッシュ・メモリ
1220 光ストレージ・ディスケット、光ディスク
1400 クラウド・コンピューティング・ノード
1412 コンピュータ・システム/サーバ
1414 外部デバイス
1416 処理ユニット
1418 バス
1420 ネットワーク・アダプタ
1422 I/Oインターフェース
1424 ディスプレイ
1428 メモリ
1430 RAM
1432 キャッシュ
1434 ストレージ・システム
1440 プログラム/ユーティリティ
1442 プログラム・モジュール
1550 クラウド・コンピューティング環境
1554A パーソナル・デジタル・アシスタント(PDA)もしくは携帯電話
1554B デスクトップ・コンピュータ
1554C ラップトップ・コンピュータ
1554N 自動車コンピュータ・システム
1600 ハードウェアおよびソフトウェア
1620 仮想化
1630 管理
1640 ワークロード

Claims (16)

  1. バッファ保護における境界情報アクセスを提供する方法であって、
    汎用レジスタと、BI(境界情報)レジスタ内の境界情報との間の1対1マッピングを提供することと、
    ロードした境界情報を将来の使用のために前記BIレジスタにセーブすることと、
    プログラム実行に沿って維持される前記BIレジスタ内の前記境界情報の整合性を提供することと、
    前記BIレジスタのロード命令に関する1ビットの追加の制御によって、前記境界情報の事前ロードを提供することと、
    を含む、方法。
  2. コンパイラは、前記境界情報の前記事前ロードの候補ロードを決定する、請求項1に記載の方法。
  3. 境界情報のロード要求を削減すること、またはロード・レイテンシを隠蔽することをさらに含む、請求項1または請求項2に記載の方法。
  4. 静的プログラム解析によって有益なケースを選択することをさらに含む、請求項1から請求項3までのいずれか1項に記載の方法。
  5. 境界情報のロードが削減されるか否かに基づいて、前記境界情報のプリフェッチを決定することをさらに含む、請求項1から請求項4までのいずれか1項に記載の方法。
  6. レイテンシを隠蔽するという決定に基づいて、前記境界情報のプリフェッチを決定することをさらに含む、請求項1から請求項5までのいずれか1項に記載の方法。
  7. 前記BIレジスタ内の前記境界情報は、初期化され、プログラム実行に沿って伝播される、請求項1から請求項6までのいずれか1項に記載の方法。
  8. バッファ保護における境界情報アクセスを提供するためのシステムであって、
    コンピュータ命令を記憶するメモリと、
    プロセッサと、
    を備え、前記プロセッサは、前記コンピュータ命令を実行して、
    汎用レジスタと、BI(境界情報)レジスタ内の境界情報との間の1対1マッピングを提供することと、
    ロードした境界情報を将来の使用のために前記BIレジスタにセーブすることと、
    プログラム実行に沿って維持される前記BIレジスタ内の前記境界情報の整合性を提供することと、
    前記BIレジスタのロード命令に関する1ビットの追加の制御によって、前記境界情報の事前ロードを提供することと、
    を行うように構成される、システム。
  9. コンパイラは、前記境界情報の前記事前ロードの候補ロードを決定する、請求項8に記載のシステム。
  10. 境界情報のロード要求を削減すること、またはロード・レイテンシを隠蔽することをさらに含む、請求項8または請求項9に記載のシステム。
  11. 静的プログラム解析によって有益なケースを選択することをさらに含む、請求項8から請求項10までのいずれか1項に記載のシステム。
  12. 境界情報のロードが削減されるか否かに基づいて、前記境界情報のプリフェッチを決定することをさらに含む、請求項8から請求項11までのいずれか1項に記載のシステム。
  13. レイテンシを隠蔽するという決定に基づいて、前記境界情報のプリフェッチを決定することをさらに含む、請求項8から請求項12までのいずれか1項に記載のシステム。
  14. 前記BIレジスタ内の前記境界情報は、初期化され、プログラム実行に沿って伝播される、請求項8から請求項13までのいずれか1項に記載のシステム。
  15. 請求項1から請求項7までのいずれか1項に記載の前記方法をコンピュータに実行させる、コンピュータ・プログラム。
  16. 請求項15に記載のコンピュータ・プログラムを格納したコンピュータ可読記憶媒体。
JP2021188286A 2020-12-30 2021-11-19 バッファ保護における境界情報アクセスを提供する方法、システム、およびコンピュータ・プログラム Pending JP2022104872A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/137,708 US11983532B2 (en) 2020-12-30 2020-12-30 Optimize bound information accesses in buffer protection
US17/137,708 2020-12-30

Publications (1)

Publication Number Publication Date
JP2022104872A true JP2022104872A (ja) 2022-07-12

Family

ID=79270397

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021188286A Pending JP2022104872A (ja) 2020-12-30 2021-11-19 バッファ保護における境界情報アクセスを提供する方法、システム、およびコンピュータ・プログラム

Country Status (5)

Country Link
US (1) US11983532B2 (ja)
JP (1) JP2022104872A (ja)
CN (1) CN114691027A (ja)
DE (1) DE102021130906A1 (ja)
GB (1) GB2605242B (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11966382B2 (en) 2020-10-15 2024-04-23 International Business Machines Corporation Protecting against invalid memory references
US11966331B2 (en) 2020-12-30 2024-04-23 International Business Machines Corporation Dedicated bound information register file for protecting against out-of-bounds memory references
US11983532B2 (en) 2020-12-30 2024-05-14 International Business Machines Corporation Optimize bound information accesses in buffer protection

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61228539A (ja) 1985-04-03 1986-10-11 Hitachi Ltd アドレス変換回路
US5546561A (en) 1991-02-11 1996-08-13 Intel Corporation Circuitry and method for selectively protecting the integrity of data stored within a range of addresses within a non-volatile semiconductor memory
US6370073B2 (en) 1998-10-01 2002-04-09 Monlithic System Technology, Inc. Single-port multi-bank memory system having read and write buffers and method of operating same
US6662268B1 (en) 1999-09-02 2003-12-09 International Business Machines Corporation System and method for striped mirror re-synchronization by logical partition rather than stripe units
US20030126591A1 (en) * 2001-12-21 2003-07-03 Youfeng Wu Stride-profile guided prefetching for irregular code
US6910106B2 (en) 2002-10-04 2005-06-21 Microsoft Corporation Methods and mechanisms for proactive memory management
US6981099B2 (en) * 2002-12-16 2005-12-27 Sun Microsystems, Inc. Smart-prefetch
US8762694B1 (en) 2003-02-19 2014-06-24 Intel Corporation Programmable event-driven yield mechanism
US7634629B2 (en) 2005-12-19 2009-12-15 Intel Corporation Mechanism to control access to a storage device
US8468244B2 (en) 2007-01-05 2013-06-18 Digital Doors, Inc. Digital information infrastructure and method for security designated data and with granular data stores
WO2008130983A1 (en) 2007-04-16 2008-10-30 Attune Systems, Inc. File aggregation in a switched file system
US7730289B2 (en) * 2007-09-27 2010-06-01 Faraday Technology Corp. Method for preloading data in a CPU pipeline
US7962729B2 (en) 2009-01-05 2011-06-14 International Business Machines Corporation Dynamic runtime range checking of different types on a register using upper and lower bound value registers for the register
US8635415B2 (en) * 2009-09-30 2014-01-21 Intel Corporation Managing and implementing metadata in central processing unit using register extensions
KR101639672B1 (ko) 2010-01-05 2016-07-15 삼성전자주식회사 무한 트랜잭션 메모리 시스템 및 그 동작 방법
US8949579B2 (en) * 2010-10-04 2015-02-03 International Business Machines Corporation Ineffective prefetch determination and latency optimization
WO2013032446A1 (en) 2011-08-30 2013-03-07 Empire Technology Development Llc Hardware-based array compression
US10191873B2 (en) 2012-12-20 2019-01-29 Advanced Micro Devices, Inc. Method and apparatus for power reduction for data movement
US9569612B2 (en) 2013-03-14 2017-02-14 Daniel Shawcross Wilkerson Hard object: lightweight hardware enforcement of encapsulation, unforgeability, and transactionality
US9721086B2 (en) 2013-03-15 2017-08-01 Advanced Elemental Technologies, Inc. Methods and systems for secure and reliable identity-based computing
US8977997B2 (en) 2013-03-15 2015-03-10 Mentor Graphics Corp. Hardware simulation controller, system and method for functional verification
US11620220B2 (en) 2014-07-14 2023-04-04 Via Alliance Semiconductor Co., Ltd. Cache system with a primary cache and an overflow cache that use different indexing schemes
WO2016028293A1 (en) 2014-08-20 2016-02-25 Landmark Graphics Corporation Optimizing computer hardware resource utilization when processing variable precision data
US9535613B2 (en) 2014-11-24 2017-01-03 Futurewei Technologies, Inc. Hardware and software methodologies for detecting illegal memory address of a memory access operation
US10162694B2 (en) 2015-12-21 2018-12-25 Intel Corporation Hardware apparatuses and methods for memory corruption detection
US10528476B2 (en) 2016-05-24 2020-01-07 International Business Machines Corporation Embedded page size hint for page fault resolution
US10198335B2 (en) 2016-09-23 2019-02-05 Intel Corporation Detecting root causes of use-after-free memory errors
US20180095720A1 (en) 2016-09-30 2018-04-05 Intel Corporation Storage device with fine grained search capability
US11601523B2 (en) * 2016-12-16 2023-03-07 Intel Corporation Prefetcher in multi-tiered memory systems
GR20170100067A (el) 2017-02-16 2018-10-31 Arm Limited Προβλεψη χρησης τομεων κρυφης μνημης
US20180255589A1 (en) 2017-03-03 2018-09-06 Qualcomm Incorporated Random access request regulation techniques for wireless stations
WO2018176339A1 (en) 2017-03-30 2018-10-04 Intel Corporation Methods and apparatus to protect memory from buffer overflow and/or underflow
US10706164B2 (en) * 2017-09-29 2020-07-07 Intel Corporation Crypto-enforced capabilities for isolation
US10761970B2 (en) 2017-10-20 2020-09-01 International Business Machines Corporation Computerized method and systems for performing deferred safety check operations
GB2572151B (en) 2018-03-19 2020-07-08 Advanced Risc Mach Ltd An apparatus and method for storing bounded pointers
US20190303263A1 (en) 2018-03-30 2019-10-03 Kermin E. Fleming, JR. Apparatus, methods, and systems for integrated performance monitoring in a configurable spatial accelerator
US20190356412A1 (en) 2018-05-16 2019-11-21 Qualcomm Incorporated Fast termination of multilane double data rate transactions
EP3584946A1 (en) 2018-06-19 2019-12-25 Fronius International GmbH A photovoltaic module level monitoring system
US10691374B2 (en) 2018-07-24 2020-06-23 Salesforce.Com, Inc. Repeatable stream access by multiple components
US11256624B2 (en) 2019-05-28 2022-02-22 Micron Technology, Inc. Intelligent content migration with borrowed memory
US20200379809A1 (en) 2019-05-28 2020-12-03 Micron Technology, Inc. Memory as a Service for Artificial Neural Network (ANN) Applications
US11868273B2 (en) 2019-06-29 2024-01-09 Intel Corporation Memory protection with hidden inline metadata to indicate data type
US11429590B2 (en) 2020-10-15 2022-08-30 International Business Machines Corporation Protecting against invalid memory references
US11966331B2 (en) 2020-12-30 2024-04-23 International Business Machines Corporation Dedicated bound information register file for protecting against out-of-bounds memory references
US11983532B2 (en) 2020-12-30 2024-05-14 International Business Machines Corporation Optimize bound information accesses in buffer protection

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11966382B2 (en) 2020-10-15 2024-04-23 International Business Machines Corporation Protecting against invalid memory references
US11966331B2 (en) 2020-12-30 2024-04-23 International Business Machines Corporation Dedicated bound information register file for protecting against out-of-bounds memory references
US11983532B2 (en) 2020-12-30 2024-05-14 International Business Machines Corporation Optimize bound information accesses in buffer protection

Also Published As

Publication number Publication date
CN114691027A (zh) 2022-07-01
US11983532B2 (en) 2024-05-14
GB2605242A (en) 2022-09-28
DE102021130906A1 (de) 2022-06-30
GB2605242B (en) 2023-06-21
GB202117765D0 (en) 2022-01-26
US20220206803A1 (en) 2022-06-30

Similar Documents

Publication Publication Date Title
US9785352B2 (en) Transparent code patching
US9244854B2 (en) Transparent code patching including updating of address translation structures
US9880941B2 (en) Sharing an accelerator context across multiple processes
US8949106B2 (en) Just in time compiler in spatially aware emulation of a guest computer instruction set
JP2022104872A (ja) バッファ保護における境界情報アクセスを提供する方法、システム、およびコンピュータ・プログラム
KR20060099404A (ko) 가상 머신들 간에서 페이지들을 공유하기 위한 방법,시스템 및 컴퓨터 판독가능 매체
US10311229B1 (en) Mitigating timing side-channel attacks by obscuring alternatives in code
US11966331B2 (en) Dedicated bound information register file for protecting against out-of-bounds memory references
US11144320B2 (en) Selective suppression of instruction cache-related directory access
US10635308B2 (en) Memory state indicator
JP2021502637A (ja) コンピューティング環境内の処理を促進するためのコンピュータ・プログラム、コンピュータ・システムおよび方法
JP7436495B2 (ja) セキュア・ストレージの分離
US20190196836A1 (en) Selective suppression of instruction translation lookaside buffer (itlb) access
JP2022522679A (ja) セキュア・インターフェース・コントロールの通信インターフェース
US10691604B2 (en) Minimizing cache latencies using set predictors
US10303507B2 (en) Off-the-shelf software component reuse in a cloud computing environment
US11726922B2 (en) Memory protection in hypervisor environments
US11693779B2 (en) Prefetch of random data using application tags

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211224

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220518

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240516