JP2014182825A - オーバーロードチェックを実行する命令 - Google Patents

オーバーロードチェックを実行する命令 Download PDF

Info

Publication number
JP2014182825A
JP2014182825A JP2014051273A JP2014051273A JP2014182825A JP 2014182825 A JP2014182825 A JP 2014182825A JP 2014051273 A JP2014051273 A JP 2014051273A JP 2014051273 A JP2014051273 A JP 2014051273A JP 2014182825 A JP2014182825 A JP 2014182825A
Authority
JP
Japan
Prior art keywords
instruction
data size
relatively small
processor
bit
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
JP2014051273A
Other languages
English (en)
Other versions
JP5939586B2 (ja
Inventor
Martin G Dixon
ジー. ディクソン、マーティン
Patel Baiju
パテル、バイジュ
Gopalakrishna Rajeev
ゴパラクリシュナ、ラジーヴ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2014182825A publication Critical patent/JP2014182825A/ja
Application granted granted Critical
Publication of JP5939586B2 publication Critical patent/JP5939586B2/ja
Active 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • 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/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • 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/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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
    • 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/3802Instruction 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
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

【課題】主要なデータが流される先であるデータサイズ内にフィットするかどうかを判定するための回路を有するプロセッサを提供する。
【解決手段】処理コア100は、相対的に大きなサイズのデータタイプから相対的に小さなサイズのデータタイプへのデータフロー検出に応答し、データフローによってオーバーフローエラーが結果的に生じるかどうかを試験する命令を実行する。データフローによってオーバーフロー状態が生じないと命令が判定した場合には、命令の結果は、オーバーフロー警告に対応しない。オーバーフロー状態が生じると命令が判定した場合には、なんらかの種類のオーバーフロー警告に対応する。
【選択図】図1

Description

本発明の分野は、一般に、演算科学に関し、且つ、更に詳しくは、オーバーロードチェックを実行する命令に関する。
図1は、半導体チップ上の論理回路によって実装された処理コア100の概略図を示している。この処理コアは、パイプライン101を含む。パイプラインは、プログラムコード命令を完全に実行するために必要とされるマルチステッププロセスにおいて特定のステップを実行するようにそれぞれが設計された複数のステージから構成されている。これらは、通常、少なくとも、1)命令のフェッチ及び復号化、2)データのフェッチ、3)実行、4)書戻しを含む。実行ステージは、(例えば、上述のステップ1)などの)1つ又は複数の先行するステージにおいてフェッチ及び復号化された命令によって識別される特定の演算を(例えば、上述のステップ2)などの)別の先行するステージにおいて同一の命令によって識別されると共にフェッチされたデータに対して実行する。演算の対象となるデータは、通常、(汎用)レジスタ保存空間102からフェッチされる。又、演算が完了した際に生成される新しいデータは、通常、(例えば、上述のステージ4)などの)レジスタ保存空間に「書戻し」される。
実行ステージと関連する論理回路は、通常、その独自の演算の一意のサブセットを実行するようにそれぞれが設計された複数の「実行ユニット」又は「機能ユニット」103_1〜103_Nから構成されている(例えば、第1機能ユニットは、整数の数学演算を実行し、第2機能ユニットは、浮動小数点命令を実行し、第3機能ユニットは、キャッシュ/メモリとの間においてロード/ストア演算を実行し、以下同様である)。すべての機能ユニットによって実行されるすべての演算の集合体は、処理コア100によってサポートされる「命令セット」に対応している。
コンピュータ科学の分野においては、「スカラー」と「ベクトル」という2つのタイプのプロセッサアーキテクチャが広く認識されている。スカラープロセッサは、データの単一の組に対して演算を実行する命令を実行するように設計されており、ベクトルプロセッサは、データの複数の組に対して演算を実行する命令を実行するように設計されている。図2A及び図2Bは、スカラープロセッサとベクトルプロセッサの間の基本的な相違点を明示する比較例を提示している。
図2Aは、単一のオペランドセットであるA及びBを1つにAND演算し、単一の(又は、「スカラー」の)結果C(即ち、A.AND.B=C)を生成するスカラーAND命令の一例を示している。対照的に、図2Bは、A/BとD/Eという2つのオペランドセットを(例えば、同時に並行して)それぞれ1つにAND演算してベクトルの結果C、F(即ち、A.AND.B=C及びD.AND.E=F)を生成するベクトルAND命令の一例を示している。用語の観点において、「ベクトル」とは、複数の「要素」を有するデータ要素である。例えば、ベクトルV=Q,R,S,T,Uは、Q、R、S、T、及びUという5つの異なる要素を有する。例示用のベクトルVの「サイズ」は、5である(その理由は、ベクトルVが5つの要素を有しているためである)。
又、図1は、汎用レジスタ空間102とは別のベクトルレジスタ空間107の存在をも示している。具体的には、汎用レジスタ空間102は、名目上、スカラー値を保存するために使用される。従って、実行ユニットうちのいずれかがスカラー演算を実行する際には、それらの実行ユニットは、名目上、汎用レジスタ保存空間102から呼び出されたオペランドを使用する(と共に、結果を汎用レジスタ保存空間102に書き戻す)。対照的に、実行ユニットのうちのいずれかがベクトル演算を実行する際には、それらの実行ユニットは、名目上、ベクトルレジスタ空間107から呼び出されたオペランドを使用する(と共に、結果をベクトルレジスタ空間107に書き戻す)。同様に、メモリの異なる領域をスカラー値及びベクトル値の保存のために割り当ててもよい。
又、機能ユニット103_1〜103_Nへの及びこれらからの個々の入力及び出力に位置したマスキング論理104_1〜104_N及び105_1〜105_Nの存在にも留意されたい。様々な実装形態においては、ベクトル演算の場合には、実際には、これらの層のうちの1つのみが実装されているが、これは、厳格な要件ではない(図1には図示されていないが、恐らくは、ベクトル動作を実行せず、スカラー演算のみを実行する実行ユニットは、マスキング層を有する必要がない)。マスキングを利用するベクトル命令の場合には、入力マスキング論理104_1〜104_N及び/又は出力マスキング論理105_1〜105_Nを使用することにより、事実上、そのベクトル命令の演算の対象となる要素を制御してもよい。この場合には、マスクベクトルが、(例えば、ベクトルレジスタ保存空間107から読み取られる入力オペランドベクトルと共に)マスクレジスタ空間106から読み取られ、且つ、マスキング論理層104、105のうちの少なくとも1つに対して提示される。
ベクトルプログラムコードを実行している際には、それぞれのベクトル命令は、フルデータワードを必ずしも必要としない。例えば、いくつかの命令用の入力ベクトルは、8つの要素のみであってもよく、その他の命令用の入力ベクトルは、16個の要素であってもよく、その他の命令用の入力ベクトルは、32個の要素であってもよく、以下同様である。従って、マスキング層104/105は、様々な命令における様々なベクトルサイズに影響を及ぼすように、特定の命令について適用されるフルベクトルデータワードの要素の組を識別するべく使用される。通常、それぞれのベクトル命令ごとに、マスクレジスタ空間106内に維持されている特定のマスクパターンを命令によって呼び出し、マスクレジスタ空間からフェッチし、且つ、マスク層104/105のいずれか又は両方に供給することにより、特定のベクトル演算用の要素の正しい組を「有効化」している。
命令実行パイプラインの一実施形態を示す。 ベクトル処理に関係するものである。 ベクトル処理に関係するものである。 オーバーロード状態についてチェックする命令を使用する方法を示す。 オーバーロード状態が存在するかどうかを判定する方法を示す。 オーバーロード状態が存在するかどうかを判定する別の方法を示す。 オーバーロード状態についてチェックするように設計された機能ユニットの一実施形態を示す。 プロセッサの一実施形態を示す。
当技術分野において理解されているように、ソフトウェアアルゴリズムは、一般に、変数に対して且つ変数の観点において実行される動作を表している。ソフトウェアがデータを実際に処理することができように、事実上、数値データが変数に挿入される。Cなどのコンピュータソフトウェアソースコード言語においては、変数は、様々な変数「タイプ」のうちの1つ(例えば、整数や浮動小数点など)であるものとして宣言される。変数のデータを保持するために必要とされるメモリ及び/又はレジスタ空間の単位(例えば、32ビットや64ビットなど)が変数タイプの定義の一部を構成してもよい。
ソフトウェアプロセス自体は、先行するデータ計算の結果が後続のデータ計算に入力される1つ又は複数の「データフロー」として見なすことができる。場合によっては、第1タイプの変数を伴うプロセスが、異なるタイプの変数を伴うプロセスに入力されることになる。「相対的に大きな」データタイプが「相対的に小さな」データタイプに入力される場合に、問題が生じる可能性がある。例えば、64ビットの値が、わずかに32ビットのサイズを有するものとして定義されている変数に入力される場合には、「オーバーフローエラー」が結果的に生じることになる。
データ値が、そのサイズにおいて最大状態にあり、且つ、データ値を増分する試みが行われた場合には、別のタイプのオーバーフローエラーが発生する可能性がある。例えば、2×(2^16)という値は、16個の1として表現される。この値が、16ビットのデータユニットサイズにおいて維持された場合には、事実上、データユニットサイズの最大容量に到達することになる。この値に対してこれを増分する数学演算(例えば、+1の演算が値に対して実行されるもの)を実行した場合には、オーバーロードエラーが結果的に生じることになり、その理由は、利用可能ではない第17番目のビットに値を桁上がりさせる必要があるからである。
残念ながら、プログラマは、通常、自身のコードの個々の変数のデータ値の可能な上限をチェックしない。従って、オーバーフローエラーは、それなりに一般的な存在である。更に悪いことには、マルウェアは、特に、このようなエラーの生成を追及する可能性がある。これらの課題に対処するべく、プログラマは、所謂、セーフ整数(safe integer)又はその他の強いタイピング型の言語(strongly typed language)を使用するという選択肢を有する。セーフ整数ライブラリを使用する際には、演算は、すべての演算の後に、オーバーフロー及びアンダーフローについてチェックされる。新しい分岐及びサブルーチン全体をプログラムに挿入しなければならないことから、これには、性能の犠牲が伴う。
図3は、オーバーフロー状態が存在するかどうかを判定するように設計されたプロセッサの命令セットアーキテクチャ(Instruction Set Architecture:ISA)内の「オーバーフローチェック」命令の使用を利用した改善された方式を示している。図3の方法によれば、相対的に大きなサイズのデータタイプから相対的に小さなサイズのデータタイプへのデータフローが検出されている301。この場合には、第1の相対的に大きなデータサイズの単一のソースオペランド又は複数のソースオペランドから相対的に小さなデータユニットサイズから構成されたデスティネーションへのブロードキャスト、並べ替え、シャッフルなどを実行する特定のタイプの命令がプロセッサISA内に存在してもよい。例えば、ブロードキャスト命令は、32ビットのソースオペランドの下位の半分を2×16のベクトル結果のそれぞれの16ビットの要素にブロードキャストしてもよい。
検出に応答し、データフローによってオーバーフローエラーが結果的に生じるかどうかを試験する「オーバーフローチェック」命令が実行されている302。データフローによってオーバーフロー状態が生じないと命令が判定した場合には、命令の結果は、オーバーフロー警告に対応するものではない303。データフローによってオーバーフロー状態が生じることになると命令が判定した場合には、命令の結果は、なんらかの種類のオーバーフロー警告に対応することになる304。例えば、警告304は、例外、割込み、又はフラグの形態をとってもよい(以下においては、利便を目的として、例外又は割込みを例外と呼ぶこととする)。
例外とは、基本的に、プログラムフローを自動的にエラーハンドラに対して送付することになるエラー状態のことである。エラーハンドラとは、様々な種類のエラーを処理するように特別に設計されたソフトウェア及び/又はハードウェアコンポーネントである。この場合には、オーバーフロー状態によって生成される例外は、この特定のタイプのエラーに適用される特定の是正措置を識別するべくエラーハンドラが使用するなんらかの種類の識別子を有することになる。
フラグは、通常、命令実行パイプラインの制御レジスタ空間内のビットとして実装される。この場合には、異なる状態を識別するための異なるフラグが制御レジスタ空間内に存在しており、これらの状態のうちのいくつかは、(例えば、ゼロに等しかったり、ゼロ未満であるなどのように)必ずしもエラー状態ではない。この特定の方式においては、フラグビットを制御レジスタ空間内において予約することにより、相対的に大きなデータタイプを相対的に小さなデータタイプに入力することができるかどうかを判定するように設計された命令によってオーバーフローが検出されたかどうかを通知している。この場合には、オーバーフローチェック命令と相対的に大きなデータを相対的に小さなデータに入力する命令の間に条件付き分岐命令を自動的に挿入してもよい。この条件付き分岐命令は、フラグが設定された場合に、相対的に大きなデータを相対的に小さなデータに入力する命令を実行する代わりに、オーバーフロー状態命令及びジャンププログラムの実行によってなんらかのその他の場所に関連付けられたフラグを調べるように設計されてもよい。
相対的に大きなサイズから相対的に小さなデータサイズへのデータフローの検出301は、実行前の時点において、コンパイラにより、或いは、実行時において、ハードウェア内において、実行してもよい。前者のケースにおいては、コンパイラは、相対的に大きなものから相対的に小さなものへのデータフローを識別し、且つ、オーバーフローチェック命令を相対的に大きなものから相対的に小さなものへのデータフローの前に挿入する。後者のケースにおいては、ハードウェアは、動作中に、相対的に大きなものから相対的に小さなものへのデータフローを検出する。データを相対的に大きなデータサイズから相対的に小さなデータサイズに本質的に移動させる命令の場合には、コンパイラ及び/又はハードウェアは、その命令の存在を認識し、且つ、事実上、命令ストリーム内において、その命令の前に、オーバールック命令を挿入する。或いは、この代わりに、コンパライのコード生成プロセスは、単純に、相対的に大きなデータユニットサイズから相対的に小さなデータユニットサイズへのフローを生成する命令が必要とされる任意の時点において、第1の先行するオーバールックチェック命令と、相対的に大きなものから相対的に小さなものへのデータフロー命令である第2の後続の命令と、という2つの命令を自動的に挿入してもよい。コンパイラの場合には、この挿入は、オブジェクトコード内において明示的に実施してもよい。
ハードウェアの場合には、命令実行パイプラインは、命令キューを調査すると共に相対的に大きなデータユニットから相対的に小さなデータユニットへのフローを生成する命令の存在を検出するスヌープ回路を命令フェッチステージ内に有してもよい。これに応答し、命令フェッチステージ内の特別な回路がオーバーロードチェック命令を生成し、このオーバーロードチェック命令が、検出された命令のデータ入力オペランドのコンテンツを仮定し、且つ、命令キュー内において、検出された命令の前に、オーバーロードチェック命令を挿入する。
図4は、オーバーロード検出命令の動作方法を提示している。図4において観察されるように、この命令は、オペランド内の主要なデータの最上位ビットが結果のデータサイズ内の2番目の最上位ビットを上回っていないかどうかを判定している401。例えば、結果が16ビットである場合には、命令は、入力オペランドの主要なデータが16ビットのうちの16番目に到達しているかどうかを判定する。判定結果が肯定的である場合には、オーバーロード警告が生成される。判定結果が否定的である場合には、オーバーロードエラー警告は生成されない。この特定のプロセスは、基本的に、入力オペランドの主要なデータの最上位ビットが使用されていないことの確認を追及していることに留意されたい。このように振る舞うことにより、この命令は、主要なデータの後続の増分を許容している。即ち、オーバーロードチェック命令は、主要なデータについて後続の増分が実行された場合に、その主要なデータがその新しい相対的に小さなデータストア割当内に位置するのに伴って、オーバーロードエラーが結果的に生じないことを保証している。
図5は、結果内の最上位ビットが入力オペランドの主要なデータによって消費されないかどうかを判定する方法の一実施形態を示している。図5において観察されるように、命令は、結果内の最上位ビットに対応するビット場所から始まる入力オペランドの最上位ビットまでのすべての入力オペランドのビット値が等しいかどうかを確認している501。図5は、32ビットの入力オペランド502の特定の一例を示しており、この場合には、その最下位の16ビットが16ビットの結果503内にマッピングされている。上述のプロセス501は、結果内の最上位ビット(16番目のビット)504と、入力オペランド内の最上位ビット(32番目のビット)505と、を識別し、且つ、これらのビットと、その間のすべてのビットが、等しいことをチェックしている。図5の例において観察されるように、これらのすべてのビットは、等しくなっており、従って、オーバーロードエラー警告はトリガされないであろう。
この特定の方法は、負の数を表現するための相補的な表記法を使用しているプロセッサの場合に有効である。この場合には、(図5の例において観察されるように)、正の主要ではない桁は、0として表現され、負の主要ではない桁は、1として表現される。2つのマーキングされたビット場所の間の桁の等価性についてチェックする上述の特定の方法は、ビットが1であるのか又は0であるのかについては不可知であり、且つ、従って、入力オペランドが正の数であるのか又は負の数であるのかについても、不可知である。
図6は、命令実行パイプライン機能ユニットの論理設計600を示している。図6において観察されるように、機能ユニットは、幅がNである比較器601を含み、この場合に、Nは、比較を要することになるビットの最大数に対応している。この場合には、機能ユニット600は、いくつかの異なる相対的に大きなデータサイズから相対的に小さなデータサイズへのフローに関するオーバーロードチェックをサポートしているものと仮定されている。等価性について比較される入力ビットの数に対応した比較器601の入力幅は、実行されている特定の相対的に大きなデータサイズから相対的に小さなデータサイズへのフローに応じて構成される。
例えば、一実施形態においては、機能ユニットは、1)64ビットデータ値から32ビットデータ値、2)64ビットデータ値から16ビットデータ値、並びに、3)64ビットデータ値から8ビットデータ値のうちのそれぞれに関するオーバーロードチェックをサポートしている。64ビットから32ビットへのフローは、33ビット幅の比較に対応しており、64ビットから16ビットへのフローは、49ビット幅の比較に対応しており、且つ、64ビットから8ビットへのフローは、57ビット幅の比較に対応している。この場合には、Nは、57に対応することになり、その理由は、機能ユニットが常に等価性をチェックする必要があるビットの最大数が57であるからである。
従って、64ビットデータから8ビットデータへのフローについてオーバーロードチェックを実行するように機能ユニットが求められた際には、機能ユニットは、比較器601に対するすべてのN=57入力を有効化することになる。64ビットから32ビット及び64ビットから16ビットへのオーバーロードチェックの場合には、機能ユニットは、比較器の入力のうちの33及び69をそれぞれ有効化することになる。有効化対象の比較器入力は、入力オペランド604の最上位ビット位置から入力オペランドの最下位ビット位置に向かって計数される。この場合に、一実施形態においては、命令のopcode及び/又は即値オペランドに応答する読出し専用メモリ(ROM)602内のマイクロコードを使用し、比較器601に対する個々の入力用の有効化入力603_1〜603_Nを設定している。例えば、64ビットから8ビットへのオーバーロードチェックを実行する必要があると命令のopcode及び/又は即値オペランドが示している場合には、ROM602内のマイクロコードは、比較器601のすべてのN=57入力を有効化するように機能する。比較器601は、上述のように、オーバールックチェックが失敗した場合には、例外を生成するか又はフラグを設定する。
上述の説明は、64ビット整数又は32ビット整数などの単一のスカラー入力オペランドのオーバーロードチェックに関するものであったが、様々なベクトル命令も、相対的に大きなデータサイズから相対的に小さなデータサイズへのフローの演算を実行してもよい。例えば、並べ替え又はシャッフル命令は、入力ベクトルを入力オペランドとして受け付けてもよく、且つ、その要素が入力ベクトルの要素のうちの1つ又は複数の要素のなんらかの種類の再構成物に対応している(これらに対して実行されたなんらかのブール論理及び/又は数学演算には対応してはいない)出力ベクトルを基本的に生成してもよい。例えば、並べ替え命令は、並べ替え命令の論理が実装されるように設計された固定パターンに従って、入力ベクトル要素を強制的に再構成してもよいであろう。即値オペランドにより、異なる固定パターンを呼び出してもよい。シャッフル命令は、第1及び第2入力オペランドを受け付けてもよく、この場合に、第2オペランドのそれぞれの要素は、結果内の同一の方式によって配置された要素に対応しており、且つ、第1オペランド内の要素のうちの1つを、その結果の要素場所について選択されるべき要素として、識別している。この場合に、第2要素は、図1との関係において上述したマスクに類似している。これらのタイプの命令のいずれかは、その要素がこれらの要素よりも小さなサイズを有する結果を生成してもよい。
機能ユニット600の論理回路は、ベクトル命令を想定するのみならず、結果内における選択のために選択された入力ベクトルの特定の要素をも想定する機能を含んでいると説明することができる。例えば、オーバーロードチェック命令が並べ替え命令の直前に挿入された場合には、オーバーロードチェック命令の命令フォーマットは、i)並べ替えパターンを識別する並べ替え命令内の同一の即値オペランドと、ii)その要素が並べ替え命令の結果内に含まれている並べ替え命令用の入力ベクトルと、を含んでもよい。
この場合に、即値オペランドによって識別される固定パターンは、結果に包含されるように入力ベクトルのすべての要素を選択しなくてもよい。オーバーロード命令は、即値オペランドを検討して結果に出現するべき入力ベクトルの要素を識別すると共に上述の原理と合致したオーバーロードエラーについて選択された要素のそれぞれをチェックする論理を有するように設計される。
場合によっては、入力オペランドのデータ要素を並行して処理することができるように、例えば、処理対象の入力オペランドのそれぞれのベクトル要素ごとに1つの論理設計インスタンスを配置するなどのように、複数の同一の論理設計インスタンス604を単一の機能ユニット内に配置することもできよう。或いは、この代わりに、処理を要する設計要素の数よりも少ない数の設計インスタンスが存在している場合には、マイクロコードは、結果が少しずつ生成されるように、第1要素が処理された後に、同一の機能ユニットを通じて、第2要素を処理することができる。
シャッフル命令の場合には、機能ユニット600は、相対的に小さなサイズに入力するべき特定のデータ要素を判定することができるように、両方の入力ベクトル(選択されるべきソース要素を定義する第1の入力ベクトル及びソース要素を収容する第2の入力ベクトル)を受け取る。複数の論理設計インスタンスは、これらのデータ要素のいくつか又はすべてを並行して処理することができる。すべての要素ではなく一部の要素が並行して処理される程度に、単一の設計インスタンスは、結果が少しずつ形成されるように、一連のソース要素を処理することができる。
一実施形態においては、例えば、上述のように、例外又はフラグであってもよいオーバーロードチェック命令の結果は、ベクトルの並べ替え又はシャッフル命令の場合に、1つ又は複数の不都合なデータ要素を識別する。例えば、最大で32個の要素を有するソース要素入力ベクトルを受け付ける並べ替え及び/又はシャッフル命令をISAがサポートしている場合には、オーバーロード試験に合格しないソース要素を別個に識別するために使用される32個のフラグビットが制御レジスタ空間内に存在してもよい。相対的に少ない数のデータ要素を生成する並べ替え/ベクトル命令の場合には、更に少ない数のフラグビットが使用されることになろう。類似のデータ構造(例えば、それぞれの32ビットが1つの並べ替えに対応しているもの)を例外に伴って合格させることができる。
機能ユニットがオーバーロードチェックを実行する程度にまで、命令実行パイプラインは、適切なオペランドを機能ユニットに対して入力できなければならない。例えば、機能ユニットがスカラー命令とベクトル命令の両方を試験する必要がある場合には、命令実行パイプラインは、スカラーレジスタ空間とベクトルレジスタ空間の両方を機能ユニットに対して結合する必要がある。
上述の実施形態は、相対的に小さなターゲットデータサイズの最上位ビットが相対的に大きなソースデータサイズ内の主要なデータによって消費されないことを保証することにより、増分によって生成されるオーバーロードエラーの防止を試みる考え方を対象としていた。その他の実施形態においては、主要なデータによる相対的に小さなターゲットデータサイズの(2番目の最上位ビットのみではなく)最上位ビットの消費がチェックによって許容されるように、この特定の保護を省略してもよい。これは、上述の説明との比較において1ビットだけ減少するように、幅がNである比較器の入力幅の計算に対して影響を及ぼす。一実施形態においては、いずれの考え方を採用するのかについては、(命令の考え方の構成ごとに)命令フォーマットのopcode又は即値オペランド内において設定されるか、或いは、ハードウェアスレッドコンテンツレジスタ空間又はMSR(Model Specific Register)空間などのなんらかの形態のレジスタ空間内における設定により、スレッドごとに、又はプロセッサごとに、更にグローバルに、設定されている。
図7は、例示用のマルチコアプロセッサ700のアーキテクチャを示している。図7において観察されるように、このプロセッサは、1)複数の処理コア701_1〜701_N、2)相互接続ネットワーク702、3)LLC(Last Level Caching)システム703、4)メモリコントローラ704及び入出力ハブ705を含む。処理コアのそれぞれは、プログラムコード命令を実行する1つ又は複数の命令実行パイプラインを収容している。このような命令実行パイプラインのいずれか又はすべては、図1の説明と一貫性を有するベクトル命令の実行をサポートしてもよく、且つ、オーバーロードチェック命令を実行することができる機能ユニットを含んでもよいと共に、データを相対的に大きなデータサイズから相対的に小さなデータサイズに移動させる命令の検出に応答してオーバーロードチェック命令を命令ストリームに挿入する回路を含んでもよい。相互接続ネットワーク702は、コア701_1〜701_Nのそれぞれを、互いに、且つ、その他のコンポーネント703、704、705と、相互接続するように機能する。LLC(Last Level Caching)システム703は、命令及び/又はデータがシステムメモリ708に戻る前に、プロセッサ内におけるキャッシュの最後の層として機能する。
メモリコントローラ704は、システムメモリ708との間においてデータ及び命令の読取り/書込みを実行する。入出力ハブ705は、プロセッサと「入出力」装置(不揮発性ストレージ装置及び/又はネットワークインターフェイス)間の通信を管理している。Nを上回る数のコアを有するシステムを実現することができるように、複数のプロセッサをリンクするべく、ポート706が相互接続ネットワーク702から延在している。グラフィクスプロセッサ707は、グラフィクス演算を実行する。電力管理回路(図示されてはいない)が、全体としての(「パッケージレベル」における)プロセッサの性能及び電力状態と、個々のコア701_1〜701_Nやグラフィクスプロセッサ707などのようなプロセッサ内の個々のユニットの性能及び/又は電力状態の側面と、を管理している。利便を目的として、図7には、重要性を有するその他の機能ブロック(例えば、PLL(Phase Locked Loop)回路)は示されていない。
上述の説明によって教示されているプロセスは、(「仮想機械」、半導体チップ上に配設された汎用CPUプロセッサ、又は半導体チップ上に配設された特殊目的プロセッサなどの)機械に特定の機能を実行させる機械実行可能命令などのプログラムコードによって実行してもよい。或いは、この代わりに、これらの機能は、機能を実行するハードウェアによって実現された論理を収容した特定のハードウェアコンポーネントにより、或いは、プログラムされたコンピュータコンポーネントとカスタムハードウェアコンポーネントの任意の組合せにより、実行してもよい。
ストレージ媒体を使用してプログラムコードを保存してもよい。プログラムコードを保存するストレージ媒体は、限定を伴うことなしに、1つ又は複数のメモリ(例えば、1つ又は複数のフラッシュメモリ、ランダムアクセスメモリ(スタティック、ダイナミック、又はその他のもの))、光ディスク、CD−ROM、DVD ROM、EPROM、EEPROM、磁気又は光カード、又は電子的な命令を保存するのに適したその他のタイプの機械可読媒体として、実装してもよい。又、プログラムコードは、リモートコンピュータ(例えば、サーバーなど)から要求元のコンピュータ(例えば、クライアント)に、(例えば、(例えば、ネットワーク接続などの)通信リンクを介した)伝播媒体として実施されたデータ信号により、ダウンロードしてもよい。
以上、本明細書においては、その特定の例示用の実施形態を参照し、本発明について記述したが、添付の請求項に記述されている本発明の更に広範な精神及び範囲を逸脱することなしに、様々な変更及び変形を実施してもよいことが明らかであろう。従って、本明細書及び図面は、限定の意味においてではなく、例示の意味において解釈されるものとする。

Claims (24)

  1. 命令実行パイプライン内の機能ユニットであって、相対的に大きなソースデータサイズからの主要なデータが、前記主要なデータが流される先である相対的に小さなデータサイズ内にフィットするかどうかを判定するための回路を有する機能ユニット
    を有するプロセッサ。
  2. 前記回路は、前記相対的に大きなデータサイズの最上位ビットのビット位置から始まり、前記相対的に小さなデータサイズのビット範囲内のビット場所までのビットが、すべて等しいかどうかを確認する比較器を含む請求項1に記載のプロセッサ。
  3. 前記相対的に小さなデータサイズのビット範囲内の前記ビット場所は、前記相対的に小さなデータサイズのビット範囲の最上位のビット位置に位置している請求項2に記載のプロセッサ。
  4. 前記回路は、前記相対的に大きなデータサイズの最上位ビットのビット位置から始まり、前記相対的に小さなデータサイズの最上位ビットの直後のビット場所までのビットが、すべて等しいかどうかを確認する比較器を含む請求項1に記載のプロセッサ。
  5. 前記回路は、前記相対的に大きなデータサイズの最上位ビットのビット位置から始まり、
    i)前記相対的に小さなデータサイズの最上位ビットの直後のビット場所、又は、
    ii)前記相対的に小さなデータサイズのビット範囲内の最上位ビット場所、
    のうちのいずれかまでのビットが、すべて等しいかどうかを確認する比較器を含み、
    この場合に、i)又はii)のうちのいずれを利用するかは、情報に依存する請求項1に記載のプロセッサ。
  6. 前記情報は、前記機能ユニットによって実行される命令の命令フォーマット内のコンテンツから判定される請求項5に記載のプロセッサ。
  7. 前記情報は、前記プロセッサの制御レジスタ空間から判定される請求項5に記載のプロセッサ。
  8. 前記制御レジスタ空間は、モデル固有のレジスタ空間である請求項7に記載のプロセッサ。
  9. 前記制御レジスタ空間は、スレッド用のコンテキスト情報を保持するためのものである請求項7に記載のプロセッサ。
  10. 前記主要なデータは、ベクトルの要素内に存在している請求項1から9の何れか1項に記載のプロセッサ。
  11. 前記プロセッサは、論理回路を収容しており、前記論理回路は、前記主要なデータを前記相対的に大きなソースデータサイズから前記相対的に小さなデータサイズに流す第2命令を検出し、且つ、前記命令を生成すると共に命令ストリーム内において前記第2命令の前に前記命令を挿入する請求項1から10の何れか1項に記載のプロセッサ。
  12. 命令実行パイプライン内の命令を実行するステップであって、相対的に大きなデータサイズ内の主要なデータが相対的に小さなデータサイズ内にフィットすることをチェックするステップを含み、前記命令の結果は、前記主要なデータが前記相対的に小さなデータサイズ内にフィットしない場合には、警告であり、且つ、前記主要なデータが前記相対的に小さなデータサイズ内にフィットする場合には、警告ではない、ステップ
    を有する方法。
  13. 前記主要なデータは、ベクトル内に存在している請求項12に記載の方法。
  14. 前記警告は、フラグである請求項12または13に記載の方法。
  15. 前記警告は、例外である請求項12または13に記載の方法。
  16. 前記命令実行パイプライン内において、前記主要なデータを前記相対的に大きなデータサイズから前記相対的に小さなデータサイズに移動させる第2命令を検出するステップと、
    これに応答して、前記命令を生成し、且つ、前記第2命令の前に前記命令を挿入するステップと、
    を更に有する請求項12から15の何れか1項に記載の方法。
  17. プロセッサによって処理された際に前記プロセッサに方法を実行させる命令をその上部に保存された状態において有するプログラムであって、
    前記方法は、
    相対的に大きなデータサイズから相対的に小さなデータサイズに主要なデータを移動させる処理を検出するステップと、
    前記処理が命令ストリーム内において実行される前に実行される命令を前記命令ストリームに挿入するステップと、
    を有すし、
    前記命令は、前記移動と関連するオーバーフロー状態についてチェックする、プログラム。
  18. 前記主要なデータは、ベクトル内に存在している請求項17に記載のプログラム。
  19. 前記命令の命令フォーマットは、前記命令を実行する機能ユニットに、前記相対的に小さなデータサイズのサイズについて通知する請求項17または18に記載のプログラム。
  20. 前記命令によって生成される警告を処理するためのプログラムコードを有する請求項17から19の何れか1項に記載のプログラム。
  21. 命令実行パイプラインを有するプロセッサと、
    前記プロセッサのメモリコントローラに結合されたメモリと、
    を有し、
    前記命令実行パイプラインは、機能ユニットを有し、前記機能ユニットは、相対的に大きなソースデータサイズからの主要なデータが前記主要なデータが流される先である相対的に小さなデータサイズ内にフィットするかどうかを判定するための回路を有する
    演算システム。
  22. 前記回路は、前記相対的に大きなデータサイズの最上位ビットのビット位置から始まる前記相対的に小さなデータサイズのビット範囲内のビット場所までのビットが、すべて等しいかどうかを確認する比較器を含む請求項21に記載の演算システム。
  23. 前記相対的に小さなデータサイズのビット範囲内のビット場所は、前記相対的に小さなデータサイズのビット範囲の最上位のビット位置に位置している請求項21または22に記載の演算システム。
  24. 前記回路は、前記相対的に大きなデータサイズの最上位ビットのビット位置から始まる前記相対的に小さなデータサイズの最上位のビットの直後のビット場所までのビットが、すべて等しいかどうかを確認する比較器を含む請求項21に記載の演算システム。
JP2014051273A 2013-03-15 2014-03-14 オーバーロードチェックを実行する命令 Active JP5939586B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/843,558 2013-03-15
US13/843,558 US9417880B2 (en) 2013-03-15 2013-03-15 Instruction for performing an overload check

Publications (2)

Publication Number Publication Date
JP2014182825A true JP2014182825A (ja) 2014-09-29
JP5939586B2 JP5939586B2 (ja) 2016-06-22

Family

ID=50634747

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014051273A Active JP5939586B2 (ja) 2013-03-15 2014-03-14 オーバーロードチェックを実行する命令

Country Status (7)

Country Link
US (2) US9417880B2 (ja)
JP (1) JP5939586B2 (ja)
KR (1) KR101641990B1 (ja)
CN (1) CN104216827B (ja)
BR (1) BR102014006300A2 (ja)
DE (1) DE102014003665A1 (ja)
GB (1) GB2515145B (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108874445A (zh) * 2017-10-30 2018-11-23 上海寒武纪信息科技有限公司 神经网络处理器及使用处理器执行向量点积指令的方法
US11996105B2 (en) 2018-09-13 2024-05-28 Shanghai Cambricon Information Technology Co., Ltd. Information processing method and terminal device

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5093053A (ja) * 1973-12-13 1975-07-24
JPS6491228A (en) * 1987-09-30 1989-04-10 Takeshi Sakamura Data processor
JPH07334346A (ja) * 1994-06-10 1995-12-22 Nec Corp 情報処理装置
US20130166889A1 (en) * 2011-12-09 2013-06-27 Advanced Micro Devices, Inc. Method and apparatus for generating flags for a processor

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2874351B2 (ja) * 1991-01-23 1999-03-24 日本電気株式会社 並列パイプライン命令処理装置
KR100219233B1 (ko) 1996-12-28 1999-09-01 전주범 병렬 데이터 추출 및 피팅 장치
KR100340594B1 (ko) 1998-12-18 2002-07-18 신현준 내부순환 유동층 반응기를 이용한 석탄의 가스화방법
US6609193B1 (en) * 1999-12-30 2003-08-19 Intel Corporation Method and apparatus for multi-thread pipelined instruction decoder
US6675280B2 (en) * 2001-11-30 2004-01-06 Intel Corporation Method and apparatus for identifying candidate virtual addresses in a content-aware prefetcher
US7051186B2 (en) * 2002-08-29 2006-05-23 International Business Machines Corporation Selective bypassing of a multi-port register file
US7099817B2 (en) * 2002-11-22 2006-08-29 Texas Instruments Incorporated Stalling CPU pipeline to prevent corruption in trace while maintaining coherency with asynchronous events
EP1447742A1 (en) * 2003-02-11 2004-08-18 STMicroelectronics S.r.l. Method and apparatus for translating instructions of an ARM-type processor into instructions for a LX-type processor
CN100568252C (zh) * 2006-04-11 2009-12-09 大唐移动通信设备有限公司 可实现数据自保护的片上系统的ip核
US8868888B2 (en) 2007-09-06 2014-10-21 Qualcomm Incorporated System and method of executing instructions in a multi-stage data processing pipeline

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5093053A (ja) * 1973-12-13 1975-07-24
JPS6491228A (en) * 1987-09-30 1989-04-10 Takeshi Sakamura Data processor
JPH07334346A (ja) * 1994-06-10 1995-12-22 Nec Corp 情報処理装置
US20130166889A1 (en) * 2011-12-09 2013-06-27 Advanced Micro Devices, Inc. Method and apparatus for generating flags for a processor

Also Published As

Publication number Publication date
KR20140113609A (ko) 2014-09-24
GB201404537D0 (en) 2014-04-30
CN104216827A (zh) 2014-12-17
DE102014003665A1 (de) 2014-09-18
BR102014006300A2 (pt) 2017-12-12
US20170109160A1 (en) 2017-04-20
US10162640B2 (en) 2018-12-25
US20140281406A1 (en) 2014-09-18
KR101641990B1 (ko) 2016-07-25
GB2515145A (en) 2014-12-17
GB2515145B (en) 2015-12-02
JP5939586B2 (ja) 2016-06-22
CN104216827B (zh) 2018-04-13
US9417880B2 (en) 2016-08-16

Similar Documents

Publication Publication Date Title
CN108463826B (zh) 用于在环转变期间保护栈的处理器扩展
US12001842B2 (en) Hardware apparatuses and methods to switch shadow stack pointers
TW201730770A (zh) 用於記憶體損毀偵測的硬體設備和方法
TWI733798B (zh) 在執行向量操作時管理位址衝突的設備及方法
US11188341B2 (en) System, apparatus and method for symbolic store address generation for data-parallel processor
US8195923B2 (en) Methods and mechanisms to support multiple features for a number of opcodes
US20140189288A1 (en) Instruction to reduce elements in a vector register with strided access pattern
CN107003850B (zh) 用于数据推测执行的系统、装置和方法
US9323531B2 (en) Systems, apparatuses, and methods for determining a trailing least significant masking bit of a writemask register
US20210096872A1 (en) Hardware for eliding security checks when deemed safe during speculative execution
US9311094B2 (en) Predicting a pattern in addresses for a memory-accessing instruction when processing vector instructions
JP5939586B2 (ja) オーバーロードチェックを実行する命令
US11934830B2 (en) Method and apparatus for data-ready memory operations
WO2017112315A1 (en) Non-tracked control transfers within control transfer enforcement
US20160378480A1 (en) Systems, Methods, and Apparatuses for Improving Performance of Status Dependent Computations
US11656873B2 (en) Shadow stack ISA extensions to support fast return and event delivery (FRED) architecture
US9904549B2 (en) Method and apparatus for loop-invariant instruction detection and elimination

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150407

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150618

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150806

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150907

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151007

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151208

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160303

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

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20160420

R155 Notification before disposition of declining of application

Free format text: JAPANESE INTERMEDIATE CODE: R155

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160511

R150 Certificate of patent or registration of utility model

Ref document number: 5939586

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250