JP2003526155A - 配列境界をチェックする能力を有する処理アーキテクチャ - Google Patents

配列境界をチェックする能力を有する処理アーキテクチャ

Info

Publication number
JP2003526155A
JP2003526155A JP2001564993A JP2001564993A JP2003526155A JP 2003526155 A JP2003526155 A JP 2003526155A JP 2001564993 A JP2001564993 A JP 2001564993A JP 2001564993 A JP2001564993 A JP 2001564993A JP 2003526155 A JP2003526155 A JP 2003526155A
Authority
JP
Japan
Prior art keywords
array
processor
data
processing
instruction
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.)
Withdrawn
Application number
JP2001564993A
Other languages
English (en)
Inventor
アシュリー ソウルズバリー,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=22690256&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JP2003526155(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JP2003526155A publication Critical patent/JP2003526155A/ja
Withdrawn legal-status Critical Current

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/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
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • 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/3842Speculative instruction execution
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10TTECHNICAL SUBJECTS COVERED BY FORMER US CLASSIFICATION
    • Y10T428/00Stock material or miscellaneous articles
    • Y10T428/14Layer or component removable to expose adhesive
    • Y10T428/149Sectional layer removable

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 本発明による、要素の配列に関連したデータを処理する方法を開示する。一実施形態において、要素の配列に関連したデータを処理する方法を開示する。上記プロセスにおいて、第1の値は第1の位置からロードされ、第2の値は第2の位置からロードされる。上記第1および上記第2の値は相互に比較される。必要に応じて、該比較する工程に基づいて、所定の値を宛先に格納する。所定の値は、必要に応じて、上記比較結果に基づいて宛先に格納される。上記第1の位置および第2の位置はソースレジスタであり、上記宛先は宛先レジスタである

Description

【発明の詳細な説明】
【0001】 本願は、2000年3月8日に出願された米国仮出願第60/187,739
号の利益を主張する。
【0002】 (関連出願との相互参照) 本願を、「VLIW Computer Processing Archi
tecture with On−chip DRAM Usable as
Physical Memory or Cache Memory」という名
称の代理人ドケット番号016747−00991、「VLIW Comput
er Processing Architecture Having a
Scalable Number of Register Files」とい
う名称の代理人ドケット番号016747−01001、「Computer
Processing Architecture Having a Sca
lable Number of Processing Paths and
Pipelines」という名称の代理人ドケット番号016747−017
80、「VLIW Computer Processing Archite
cture with On−chip Dynamic RAM」という名称
の代理人ドケット番号016747−01051、「Computer Pro
cessing Architecture Having the Prog
ram Counter Stored in a Register Fil
e Register」という名称の代理人ドケット番号016747−012
11、「Processing Architecture Having P
arallel Arithmetic Capability」という名称の
代理人ドケット番号016747−01461、「Processing Ar
chitecture Having an Array Bounds Ch
eck Capability」という名称の代理人ドケット番号016747
−01481、「Processing Architecture Havi
ng a Matrix Transpose Capability」という
名称の代理人ドケット番号016747−01521、および「Process
ing Architecture Having a Compare Ca
pability」という名称の代理人ドケット番号016747−01531
の関連の米国特許出願と同時に出願する。これらの文献はすべて本明細書におい
て参考として援用される。
【0003】 (発明の背景) 本発明は概して、向上したコンピュータ処理命令セットに関し、具体的には、
配列境界をチェックする能力を有する命令セットに関する。
【0004】 コンピュータアーキテクチャの設計者は、コンピュータプロセッサの速度およ
び効率を絶えず上げようとしている。例えば、コンピュータアーキテクチャの設
計者は、クロック速度を上げて、データの先取りおよびキャッシュメモリなどの
待ち時間を隠す技術を試みることによって、処理速度を上げようと試みてきた。
さらに、VLIWを用いた命令レベルの並列処理、複数の発行スーパースカラー
、純理論的な実行、スコアボーディングおよびパイプライン化などの他の技術を
用いて、さらに性能が高まり、クロックサイクルごとに発行される命令(IPC
)の数が増加する。
【0005】 命令レベルの並列処理によりその性能を得るアーキテクチャは、コンピュータ
アーキテクチャフィールドにおいて増え続ける傾向にあるようである。命令レベ
ルの並列処理を用いるアーキテクチャの例は、シングルインストラクションマル
チプルデータ(SIMD)アーキテクチャ、マルチプルインストラクションマル
チプルデータ(MIMD)アーキテクチャ、ベクトルまたは配列処理、および超
長命令ワード(VLIW)の技術を含む。これらのうちで、VLIWは汎用目的
の演算に最も適していると考えられる。しかし、他の技術を介して、命令レベル
の並列処理をさらに達成する必要がある。
【0006】 JavaTMなどの特定のプログラミング言語は、境界付けられた配列のイン
デックス付けを広範囲にわたって用いる。しかし、配列アクセスを実行する前に
配列をチェックするには多くの命令が必要であり、これによりコードの効率が落
ちる。図1を参照すると、配列をチェックし、そしてこれにアクセスする従来の
方法の流れ図が示されている。工程100、104および108において、3つ
のチェックが3つの別個のブランチにおいて実行される。これらのチェックのう
ちのいずれかが失敗すると、キャッチコードルーチンが工程112において実行
される。しかし、これらのチェックのうちのどれも失敗しなければ、工程116
、118および120において、インデックスのメモリオフセットが演算されて
、配列値がロードされる。理解され得るように、このように配列をチェックしそ
してこれにアクセスするには多くの命令が必要である。
【0007】 VLIWプロセッサは所定のブランチの下位命令を並列に実行し得るが、従来
のVLIW実現に関して問題がある。以下にさらに説明するように、個々の下位
命令を実行する処理パスは限られた能力しか有さない。例えば、各処理パスは、
あるブランチの下位命令を処理する能力を有し得ない。スケジューリング機構は
、あるブランチの下位命令を実行し得る処理パスに下位命令をルーチングするこ
とに依存する。したがって、VLIW実現は、異なる命令ワードで異なる時点に
このブランチの下位命令を実行し得る。
【0008】 さらに、ブランチの下位命令を実行する間のストール(stall)を回避す
るには、このブランチの下位命令に従うブランチに従属しない下位命令が必要で
ある。ブランチの下位命令が同じ命令ワードの一部ではない場合、ストールを回
避することが困難になることを当業者は理解する。したがって、配列チェックお
よび配列アクセスを実行する向上した方法が必要である。
【0009】 (発明の要旨) 本発明は、コード効率を上げる方法で配列の境界チェックを実行する。一実施
形態において、要素の配列に関連したデータを処理する方法を開示する。上記プ
ロセスにおいて、第1の値は第1の位置からロードされ、第2の値は第2の位置
からロードされる。上記第1および上記第2の値は相互に比較される。所定の値
は、必要に応じて、上記比較結果に基づいて宛先に格納される。
【0010】 本発明のより完全な理解は、好適な実施形態の詳細な説明および特許請求の範
囲を、図面と共に参照することによって得られ得る。全図面を通して、同様の参
照符号は同様のアイテムを示す。
【0011】 (特定の実施形態の説明) (導入) 本発明は、コード効率を上げる方法で配列の境界チェックを実行する命令を有
するコンピュータプロセッサチップを提供する。境界チェックが失敗すると、ブ
ランチコードが実行され、いかなる問題も解決する。当業者であれば理解するよ
うに、命令の能力を上げると、クロックサイクルごとに発行される命令(IPC
)が増加する。例えば、双方向VLIWプロセッサの2つの命令ワードで配列を
チェックして、これにアクセスし得る。これは、従来の方法より相当効率的であ
る。
【0012】 図面中、同様の構成要素および/または特徴は同じ参照符号を有し得る。さら
に、同じ種類の種々の構成要素を、参照符号に、ダッシュおよび同様の構成要素
を区別する第2の符号を続けることによって識別する。本明細書において第1の
参照符号のみが用いられている場合、説明は、第2の符号を有する同様の構成要
素のうちのいずれか1つに適用可能である。
【0013】 (プロセッサの概略) 図2を参照すると、本発明を実現するプロセッサチップ10が示されている。
特に、プロセッサチップ10は、処理コア12、複数のメモリバンク14、メモ
リ制御器20、分散型共有メモリ制御器22、外部メモリインターフェース24
、高速I/Oリンク26、ブートインターフェース28、および診断インターフ
ェース30を含む。
【0014】 以下により詳細に説明するように、処理コア12は、単一の処理パイプライン
または複数の処理パイプラインとして構成され得る拡張可能なVLIW処理コア
を含む。処理パイプライン数は通常、特定のアプリケーションに必要な処理能力
の機能になる。例えば、個人用ワークステーションのプロセッサは通常、スーパ
ーコンピューティングシステムにおいて必要なパイプラインより少ないパイプラ
インを必要とする。
【0015】 処理コア12に加えて、プロセッサチップ10は1つ以上のメモリバンク14
を含む。図2に示すように、任意の数のメモリバンクをプロセッサチップ10上
に配置し得る。当業者であれば理解するように、チップ10上に構成されたメモ
リ14の量は現在のシリコン処理技術によって制限される。トランジスタおよび
ラインのジオメトリが減少すると、プロセッサチップ10上に配置され得る全メ
モリ量が増加する。
【0016】 処理コア12とメモリ14との間に接続されているのはメモリ制御器20であ
る。メモリ制御器20は処理コア12およびメモリ14と通信し、処理コア12
から、ならびに他のプロセッサおよびI/Oデバイスから、メモリ14へのメモ
リI/O要求を処理する。メモリ制御器20に接続されているのは、分散型共有
メモリ(DSM)制御器22であり、これは、処理コア12から他のプロセッサ
チップおよび/またはI/O周辺デバイスなどのオフチップデバイスへのI/O
要求およびデータメッセージを制御およびルーチングする。さらに、以下により
詳細に説明するように、オフチップデバイスからI/O要求およびデータメッセ
ージを受信して、メモリ14または処理コア12にアクセスするためのメモリ制
御器20への要求およびメッセージをルーチングするように、DSM制御器22
を構成する。
【0017】 高速I/Oリンク26はDSM制御器22に接続される。本発明のこの局面に
よれば、DSM制御器22は、I/Oリンク26を介して、他のプロセッサチッ
プおよびI/O周辺デバイスと通信する。例えば、DSM制御器22は、I/O
要求およびデータメッセージをI/Oリンク26を介して他のデバイスに送信す
る。同様に、DSM制御器22は他のデバイスからリンクを介してI/O要求を
受信する。
【0018】 プロセッサチップ10は、外部メモリインターフェース24をさらに含む。外
部メモリインターフェース24はメモリ制御器20に接続されており、メモリ制
御器20から外部メモリにメモリI/O要求を伝達するように構成されている。
最後に、簡単に上述したように、プロセッサチップ10は、ブートインターフェ
ース28および診断インターフェース30をさらに含む。ブートインターフェー
ス28は処理コア12に接続されており、必要な場合、コールドブーティング処
理コア12用のブートストラッププログラムを受信するように構成されている。
同様に、診断インターフェース30も、処理コア12に接続されており、診断を
目的とした処理コアへの外部アクセスを提供するように構成されている。
【0019】 (処理コア) (1.通常のコンフィギュレーション) 簡単に上述したように、処理コア12は、単一の処理パイプラインまたは複数
の処理パイプラインとして構成され得る、拡張可能なVLIW処理コアを含む。
単一の処理パイプラインは、一度に1つの命令を処理する単一のパイプラインと
して機能し得るか、または単一のVLIW命令ワード内の複数の下位命令を処理
する単一のVLIWパイプラインとして機能し得る。同様に、マルチパイプライ
ンの処理コアは、複数の自律処理コアとして機能し得る。これにより、オペレー
ティングシステムが、同期を取られたVLIWオペレーション、または並列のマ
ルチスレッドの実例の間で動的に選択することが可能になる。マルチスレッドモ
ードにおいて、VLIWプロセッサは、並列で処理される複数のストランドを管
理する。
【0020】 本発明の一実施形態によれば、処理コア12が、同期を取られたVLIWオペ
レーションモードで動作する場合、アプリケーションプログラムのコンパイラは
通常、共に付加された複数の下位命令を含むVLIW命令ワードを生成し、この
VLIW命令ワードは次いで、処理コア12によって並列に処理される。VLI
W命令ワード内の下位命令の数は、処理コアのパイプライン内で利用可能な処理
パスの総数と一致する。したがって、各処理パスは、すべての下位命令が並列に
処理されるように、VLIW下位命令を処理する。本発明のこの特定の局面によ
れば、この実施形態において、VLIW命令ワード内の下位命令は共に発行する
。したがって、処理パスのうちの1つがストールすると、すべての下位命令は、
すべての処理パスがクリアになるまでストールする。次いで、VLIW命令ワー
ド内のすべての下位命令が同時に発行する。当業者であれば、下位命令が同時に
発行しても、異なる種類の命令が異なる処理の待ち時間を有し得るため、下位命
令それぞれの処理が異なる回数またはクロックサイクルで完了し得ることを理解
する。
【0021】 本発明の別の実施形態によれば、マルチパイプラインの処理コアが並列のマル
チスレッドモードで動作する場合、プログラム下位命令はVLIW命令ワード内
で必ずしも共に繋がれていない。したがって、命令が命令キャッシュから取り出
される場合、オペレーティングシステムは、どのパイプラインがストランドの各
下位命令を処理するかを決定する。したがって、この特定のコンフィギュレーシ
ョンを用いると、各パイプラインは、独立したプロセッサとして働き得、他のパ
イプライン内のストランドから独立したストランドを処理する。さらに、本発明
の一実施形態によれば、マルチスレッドモードを用いることによって、2つの別
個のブロックのデータを用いた同じプログラム下位命令を、2つの別個のパイプ
ラインによって同時に処理し得る。したがって、耐故障性の処理コアが得られる
。本明細書における説明の残りは、同期が取られたVLIWオペレーションモー
ドに関する。しかし、本発明はこの特定のコンフィギュレーションに限定されな
い。
【0022】 (2.超長命令ワード(VLIW)) ここで図3を参照すると、4つの処理パス56−1〜56−4を有する、VL
IW処理コアパイプライン50の簡単なブロック図が示されている。例示の実施
形態によれば、VLIW52は、単一の命令ワード内に共に付加されているRI
SCのような下位命令54−1、54−2、54−3および54−4を4つ含む
。例えば、128ビットの命令ワードは4つの32ビットの下位命令に分割され
る。VLIW下位命令54の数は、処理コアパイプライン50内の処理パス56
の数に対応する。したがって、例示の実施形態が4つの下位命令54および4つ
の処理パス56を示す一方、当業者は、パイプライン50が任意の数の下位命令
54および処理パス56を含み得ることを理解する。しかし、通常、下位命令5
4および処理パス56の数は2の累乗である。
【0023】 この実施形態における各下位命令54は、パイプライン50内の特定の処理パ
ス56と直接対応する。下位命令54はそれぞれ、同様のフォーマットであり、
1つ以上の関連したレジスタファイル60上で動作する。例えば、4つすべての
下位命令54が同じレジスタファイルにアクセスするように処理コアパイプライ
ン50を構成してもよいし、または複数のレジスタファイル60を有するように
処理コアパイプライン50を構成してもよい。本発明の例示の実施形態によれば
、下位命令54−1および54−2はレジスタファイル60−1にアクセスし、
下位命令54−3および54−4はレジスタファイル60−2にアクセスする。
当業者であれば理解するように、このようなコンフィギュレーションは、処理コ
アの性能を向上させることを支援し得る。
【0024】 図3に示すように、処理コアパイプライン50内の命令復号および発行論理ス
テージ58は、VLIW命令ワード52を受信し、下位命令54を復号して、適
切な処理パス56に下位命令54を発行する。次いで、下位命令54はそれぞれ
、パイプライン50の実行ステージに伝わる。パイプライン50は、各処理パス
56に対して関数装置または実行装置62を含む。各関数装置または実行装置6
2は、整数処理装置64、ロード/格納処理装置66、浮動小数点処理装置68
、または上述のいずれかまたはすべての組み合わせを含み得る。例えば、図3に
示す特定の実施形態によれば、実行装置62−1は整数処理装置64−1および
浮動小数点処理装置68を含み、実行装置62−2は整数処理装置64−2およ
びロード/格納処理装置66−1を含み、実行装置62−3は整数処理装置64
−3およびロード/格納装置66−2を含み、実行装置62−4は整数装置64
−4のみを含む。
【0025】 当業者であれば理解するように、ロード依存、格納依存およびライトバック依
存などの不必要な待ち時間の問題を回避するために、VLIW命令ワード52内
の下位命令のスケジューリングおよびプログラム内のVLIW命令ワードの順序
のスケジューリングは重要である。本発明の一実施形態によれば、スケジューリ
ングの責任は主に、アプリケーションプログラムのソフトウェアコンパイラに委
ねられる。したがって、不必要に複雑なスケジューリング論理は処理コアから排
除され、これにより、処理コアの設計の実現が可能な限り簡単に行われる。した
がって、コンパイラ技術が進化した結果、ハードウェアを再度設計することなく
性能が向上した。さらに、所定の特定の処理コアの実現は、特定の種類の命令を
特定のパイプラインスロットまたはパス内でのみ実行して、所与のデバイスの全
体的な複雑さを減少させることが好ましいかまたは必要であり得る。例えば、図
3に示す実施形態によれば、処理パス56−1、そして特に実行装置62−1し
か浮動少数点処理装置68を含まないため、すべての浮動少数点下位命令は、パ
ス56−1を介してディスパッチされる。上述したように、この実施形態におい
て、コンパイラはこのような発行制限を処理することを担う。
【0026】 本発明の一実施形態によれば、VLIW命令ワード52内のすべての下位命令
54は並列に発行する。例えば、利用不可能なリソースに起因して、下位命令5
4のうちの1つがストールした(すなわち、発行しない)場合、すべてのVLI
W命令ワード52は特定のストールされた下位命令54が発行するまでストール
する。VLIW命令ワード52内のすべての下位命令が同時に発行することを保
証することによって、実現論理は動的に簡略化される。
【0027】 (3.データタイプ) プロセッサチップ内のレジスタは種々のデータタイプで構成されている。種々
のデータタイプを有することによって、異なるデータフォーマットがレジスタ内
で保持され得る。例えば、符号付き整数値、符号なし整数値、単精度浮動少数点
値、および倍精度浮動少数点値に関連付けられた異なるデータタイプがあり得る
。さらに、レジスタは、別個のフィールド内に複数の値を保持するように、細分
化または分割され得る。これらの細分化されたレジスタは、シングルインストラ
クションマルチプルデータ(SIMD)命令によって動作される。
【0028】 図4を参照すると、下位命令に利用可能なデータタイプのいくつかが示されて
いる。複数の異なるデータタイプがあるが、所与の下位命令54のみがこれらの
サブセットを用い得る。例えば、境界チェックオペレーションのこの実施形態は
、オペランドを1つのみ保持する種々の分割されていないデータタイプ400、
404しか用いていない。しかし、境界チェック関数の他の実施形態は、分割さ
れたデータタイプを用い得る。この実施形態において、境界チェック関数は、6
4ビット幅で符号なしであり、符号なしの64個のデータタイプ400に対応す
るオペランドを用いる。当業者であれば理解するように、他の可能なデータタイ
プがあり、本発明は図4に示すデータタイプに限定されない。
【0029】 (4.境界チェック命令) 次に図5を参照すると、境界チェック下位命令(「BCHK」)500のマシ
ーンコードが示されている。下位命令アドレス指定フォームのこの変形は概して
、レジスタアドレス指定フォーム500として呼ばれる。下位命令500は32
ビット幅であり、これにより、128ビット幅の命令ワード52を備えた4方向
VLIWプロセッサが、同時に4つの下位命令500の実行を適応し得る。下位
命令500は、アドレス部分504およびOPコード部分508に分けられる。
通常、アドレス部分504は、オペレータをロードおよび格納するために必要な
情報を含み、OPコード部分508は、オペレータにどの関数を実行するかを示
す。
【0030】 下位命令のレジスタアドレス指定フォーム500は3つのレジスタを用いる。
第1のソースアドレス512および第2のソースアドレス516は用いられて、
第1のオペランドおよび第2のオペランドそれぞれを登録する第1のソースレジ
スタおよび第2のソースレジスタをロードする。宛先アドレス520は用いられ
て、宛先レジスタ内のどこに結果を格納するかを示す。各レジスタ512、51
6、520が6ビットでアドレス指定されるため、オンチップレジスタファイル
60内で64個のレジスタが可能である。この実施形態において、すべてのロー
ドおよび格納は、オンチップレジスタファイル60を用いて実行される。しかし
、他の実施形態によって、処理コア12の外部でレジスタをアドレス指定するこ
とが可能になり得る。下位命令のレジスタフォーム500のビット31−18は
OPコード508であり、OPコード508は処理コア12によって用いられて
下位命令54を実行する。種々の下位命令タイプは、OPコード508に供され
る異なる量のビットを有する。
【0031】 通常、コンパイラは用いられて、アセンブリ言語またはより高いレベルの言語
を、OPコードを含むマシーンコードに変換する。当業者によって理解されるよ
うに、OPコードはマルチプレクサ、他の組み合わせ論理およびレジスタを制御
して、所定の関数を実行する。さらに、当業者であれば理解するように、OPコ
ードを実現する多くの異なる方法があり得る。
【0032】 (5.境界チェック実現) 図6を参照すると、境界チェック関数の一実施形態のブロック図が示されてい
る。この実施形態において、境界チェック関数は、第1のソースレジスタ600
、第2のソースレジスタ604、命令プロセッサ608、および宛先レジスタ6
12を含む。第1のソースレジスタ600は第1のオペランドを含み、第2のソ
ースレジスタ604は第2のオペランドを含む。この実施形態において、ソース
レジスタおよび宛先レジスタはそれぞれ、符号なしの64個のデータタイプ40
0を用いる。
【0033】 命令プロセッサ608は境界チェック関数を実行する。上述したように、下位
命令のOPコードは、どのオペランドが命令プロセッサ608内にロードされる
か、およびいかにオペランドが処理されるかを制御する。処理は、各ソースレジ
スタ600、604からオペランドをロードすることによって開始する。処理が
完了した後、結果が宛先レジスタ612内に格納される。以下にさらに説明する
ように、命令プロセッサ608は、ソースオペランドの分析に基づいて、宛先レ
ジスタに無効な値を書き込むかまたは何も行わない。図示はしないが、当業者で
あれば、レジスタファイル60内の種々のレジスタを選択して、ソースオペラン
ドおよび宛先の結果を保持することを可能にする回路部があることを理解する。
【0034】 境界チェック関数を理解するために、配列操作に用いる用語を説明する。配列
は、連続した順序で構成されている同様の要素の線形リストであり、リストにお
いて、インデックスを用いて配列内の種々の要素を指す。さらに、具体的には、
配列は、配列インデックス(「I」)(0からN−1)に配置されている複数の
要素(「N」)を含む。但し、配列長もNに等しい。ベースアドレス(「M」)
は、メモリ内のどこに配列が格納されるかを示す。配列要素がバイトでメモリ内
に格納されるため、1バイトより大きい幅を有する配列要素は複数のメモリバイ
トを占め得る。この環境下においてインデックス付き要素のアドレスを決定する
ために、アドレスオフセットが計算されて、ベースアドレスに加算される。例え
ば、配列要素が64ビット幅である場合、各配列要素のワードに8バイトのメモ
リが必要である。ベースアドレス(M)が64に等しく、インデックス(I)が
3に等しい場合、インデックス付き要素のアドレス(すなわち、インデックスア
ドレス)は64に8の3倍を加算した値、すなわち88(M+8I)である。当
業者であれば理解するように、配列インデックス、配列サイズおよびアドレスオ
フセットは通常、正の整数である。
【0035】 境界チェック下位命令(「BCHK」)は、配列インデックスおよび配列長上
で動作して、配列インデックス値が有効であるか否かを判定する。配列インデッ
クスは、0以上であり、かつ、配列長より小さい場合に有効である。BCHK下
位命令において、第1のオペランドは配列長の値であり、第2のオペランドは配
列インデックス値である。
【0036】 有効な配列に関して、ベースアドレスも有効である必要がある。理解され得る
ように、メモリ空間内に無効あるいは予備の特定のアドレスがある。例えば、0
のアドレスは無効なベースアドレスである。
【0037】 次に図7を参照すると、図6の命令プロセッサ608をより詳細に示す処理コ
アの一部のブロック図が示されている。命令プロセッサ608は、オペランド比
較関数700、判定論理708およびフラグ格納関数712を含む。これらのブ
ロックは、一斉に働いて、境界チェック関数を実行する。当業者であれば、デー
タタイプが符号なしの64個のデータタイプ400であるため、第2のオペラン
ドまたは配列インデックスが0以上であるか否かを判定することがこの実施形態
において不必要であることを理解し得る。定義上、符号なしの値は0以上である
【0038】 オペランド比較関数700は、第2のオペランドまたは配列インデックスが第
1のオペランドまたは配列長より小さいか否かを判定する。当業者であれば知っ
ているように、この関数を実現する多くの方法がある。例えば、オペランド比較
関数700は、配列インデックスから配列長を減算し得る。負の結果は、配列イ
ンデックスが配列長より小さいことを示す。
【0039】 配列長が配列インデックスから減算された後、判定論理708が結果が負であ
るか否かを判定する。負の数は、配列インデックスが配列長より小さいことを示
す。さらに、負の数はインデックスが有効であることを意味する。インデックス
が有効である場合、下位命令は下位命令にノーオペレーション(すなわち、「n
o op」)を効果的に実行させるために他のアクションを必要としない。しか
し、インデックスが無効である場合、信号はインデックスが無効であることを示
すフラグ格納関数712に送信される。
【0040】 フラグ格納関数712が判定論理708からインデックスが無効だという通知
を受信すると、格納関数は、無効のベースアドレスを宛先レジスタ612に書き
込む。上述したように、無効なメモリアドレス、例えば、0のアドレスを指すベ
ースアドレスがある。この実施形態において、判定論理708が配列インデック
スが無効であると判定した場合、0の無効なベースアドレスが宛先レジスタ61
2に書き込まれる。
【0041】 図8を参照すると、配列を確認し、この配列へのアクセスを実行する1方法の
一実施形態を示す流れ図が示されている。インデックスまたはベースアドレスが
無効であると判定されると、無条件トラップが実行される。あるいは、インデッ
クスアドレスが計算されて、この場所における要素がロードされる。
【0042】 工程800および804において、配列要素をロードする前に配列がチェック
される。工程800において、配列インデックス値がチェックされて、配列イン
デックス値が0以上であり、かつ、配列長より小さいか否かを判定する。この工
程は、1つの境界チェック下位命令(「BCHK」)によって実行される。イン
デックスが有効であると判定されると、工程804において、ベースアドレスに
さらなる検証判定が行われる。ベースアドレスは、これが0などの1つ以上の不
正アドレスを指す場合に無効である。
【0043】 上述の工程が配列インデックス値およびベースレジスタが有効であると判定し
た後、インデックス付けされた配列要素がロードされる。まず、工程808にお
いて、アドレスオフセットが演算される。例えば、配列要素が8バイト幅である
場合、配列インデックスに8が乗算されて、アドレスオフセットを決定する。次
に、工程812において、インデックスアドレスが、ベースアドレスにアドレス
オフセットを加算することによって決定される。インデックスアドレスが得られ
た後、工程816において、配列要素がロードされる。
【0044】 工程800および804において、配列インデックスまたはベースアドレスの
いずれかが無効であると判定されると、オペレーティングシステムに対してトラ
ップが生じる。トラップは、一般に、オペレーティングシステムの一部である特
定の処理ルーチンを呼び出す特権的ビットが設定されている例外条件である。工
程820において、処理コア12のパイプライン50は、任意の部分的に実行さ
れた下位命令を排除するようにフラッシュされる(flushed)。例えば、
トラップが4方向VLIW処理コアのパイプラインの第5のステージで開始され
た場合、先行する16個の下位命令がフラッシュされる。パイプライン50をフ
ラッシュした後、工程824において、任意の無条件トラップルーチンが実行さ
れる。トラップルーチンがトラップから回復して、トラップを開始した点から実
行を開始すると、フラッシュされた下位命令が再度ロードされて処理される必要
がある。当業者であれば理解するように、無条件トラップの実行を回避するとコ
ードの効率性が向上する。
【0045】 次に図9を参照すると、配列アクセスを検証してこれを実行する一方法の別の
実施形態が示されている。この実施形態は、コード生成の効率を上げる向上した
境界チェック下位命令を用いる。図8の実施形態とは異なり、境界チェック下位
命令は、無効な配列インデックスを示すフラグを設定するが、無条件トラップを
開始しない。
【0046】 工程900、904および908において、境界チェック下位命令が実行され
る。工程900において、インデックスの有効性が判定される。有効なインデッ
クスは、0と配列長から1を減算した値との間の範囲(すなわち、0≦I<N)
である。インデックスが有効である場合、下位命令を実行した後に結果は格納さ
れない。これにより、下位命令が効果的にno opになる。しかし、インデッ
クスが無効である場合、工程908において、無効アドレスをベースレジスタと
して格納する。無効な値を格納することは、配列アクセスが実行されるべきでは
ないことを示すフラグとして機能する。
【0047】 工程912において、ベースアドレスがロードされ、そして分析されて、ベー
スアドレスが有効であるか否かを判定する。無効なベースアドレスは、ソフトウ
ェアに伝達されている無効な値、または工程908において格納する無効な値の
いずれかから得られ得る。ベースアドレスが無効である場合、工程924におい
て、この問題に反応するブランチコードがロードされる。ブランチは通常、パイ
プライン50をフラッシュする無条件トラップをトリガーしない。しかし、ベー
スアドレスが有効である場合、工程916、918および920において、イン
デックスアドレスが計算され、配列値がロードされる。
【0048】 単一のテーブルを参照すると、配列をチェックし、ロードを実行するアセンブ
リ言語命令の一実施形態が示されている。テーブルは2つの命令ワードを示し、
一番上のワードが一番下のワードの前に実行される。各命令ワードは、同時に発
行する2つの下位命令を含む。
【0049】
【表1】 第1のワードのBCHK下位命令は、境界チェックを実行して、配列インデッ
クス(「arry_index」)が0から配列長(「arry_length
」)から1を減算した値までの値であるか否かを判定する。arry_inde
xが無効である場合、0がベースアドレス(「base_addr」)に書き込
まれる。同じ発行の一部として、ADDx8の下位命令は、arry_inde
xを8ずつ増加させ、0を加算してアドレスオフセット(「addr_offs
et」)を定式化する。SPLD下位命令は、base_addrをaddr_
offsetに加算することによって計算されるインデックスアドレスの純理論
的なロードを実行して、結果(「element」)を宛先レジスタ内に格納す
る。第2の命令のワードの一部として、条件ブランチが0に等しい場合、(「B
REQ」)の下位命令が実行される。BREQ下位命令は、base_addr
が0に等しい場合に、ブランチコード(「branch_code」)に分岐す
る。base_addrが0に等しい場合、SPLD下位命令は必要ではなく、
任意の結果が例外を発生させない未定義の結果を返す。このように、配列アクセ
スが、双方向VLIW処理コアを備えた2つの命令ワードで検証およびアクセス
される。
【0050】 (結論) 結論として、本発明は、コードの効率を増すことを可能にする境界チェック関
数を提供する。本発明の現在の好適な実施形態の詳細な説明を上に述べてきたが
、種々の別の実施例、改変例、および均等物は当業者に明らかである。例えば、
上述の処理コアの実施形態は符号なしオペランドを用いるが、他の実施形態は符
号付き値を用い得る。さらに、上述の実施形態において用いられる64ビットオ
ペランドに加えて、異なるサイズのオペランドを備えたデータタイプを用い得る
。さらに、この境界チェック命令は、1つの発行またはスーパースカラーアーキ
テクチャを用い得るが、VLIWタイプのアーキテクチャを必要としない。した
がって、上述の説明は、上掲の特許請求の範囲によって規定される本発明の範囲
を限定するように考えられるべきではない。
【図面の簡単な説明】
【図1】 図1は、従来の様態で境界付けられた配列アクセスをチェックおよび実行する
一実施形態の流れ図である。
【図2】 図2は、同じ集積回路上にプロセッサ論理およびメモリを有するプロセッサチ
ップの一実施形態のブロック図である。
【図3】 図3は、4方向VLIWパイプライン設計を有する処理コアの一実施形態を示
すブロック図である。
【図4】 図4は、概してプロセッサチップに利用可能な所定のデータタイプを示す図で
ある。
【図5】 図5は、境界チェック下位命令のマシーンコード構文の一実施形態を示す図で
ある。
【図6】 図6は、2つのソースレジスタで実行される境界チェック関数の一実施形態を
模式的に示すブロック図である。
【図7】 図7は、図6の境界チェック関数をより詳細に模式的に示すブロック図である
【図8】 図8は、無条件トラップを発生させ得る境界チェックを実行する一方法の一実
施形態を示す流れ図である。
【図9】 図9は、無条件トラップの使用を回避する境界チェックを実行する一方法の別
の実施形態を示す流れ図である。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE,TR),OA(BF ,BJ,CF,CG,CI,CM,GA,GN,GW, ML,MR,NE,SN,TD,TG),AP(GH,G M,KE,LS,MW,MZ,SD,SL,SZ,TZ ,UG,ZW),EA(AM,AZ,BY,KG,KZ, MD,RU,TJ,TM),AE,AG,AL,AM, AT,AU,AZ,BA,BB,BG,BR,BY,B Z,CA,CH,CN,CR,CU,CZ,DE,DK ,DM,DZ,EE,ES,FI,GB,GD,GE, GH,GM,HR,HU,ID,IL,IN,IS,J P,KE,KG,KP,KR,KZ,LC,LK,LR ,LS,LT,LU,LV,MA,MD,MG,MK, MN,MW,MX,MZ,NO,NZ,PL,PT,R O,RU,SD,SE,SG,SI,SK,SL,TJ ,TM,TR,TT,TZ,UA,UG,UZ,VN, YU,ZA,ZW Fターム(参考) 5B013 DD01 DD04 5B033 AA06 BE05 DD01

Claims (26)

    【特許請求の範囲】
  1. 【請求項1】 プロセッサにてデータを命令を用いて処理する方法であって
    、該データは要素の配列に関連し、該方法は、 第1の位置から第1の値をロードする工程と、 第2の位置から第2の値をロードする工程と、 該第1および該第2の値を相互に比較する工程と、 必要に応じて、該比較する工程に基づいて、所定の値を宛先に格納する工程と
    を包含する、方法。
  2. 【請求項2】 前記プロセッサにて前記データを前記命令を用いて処理する
    方法であって、該データは前記要素の配列に関連し、 前記第1の位置および前記第2の位置はソースレジスタであり、 前記宛先は宛先レジスタである、請求項1に記載の方法。
  3. 【請求項3】 前記プロセッサにて前記データを前記命令を用いて処理する
    方法であって、前記ソースレジスタおよび前記宛先レジスタはそれぞれ、複数の
    値を保持するように細分化されている、請求項2に記載の方法。
  4. 【請求項4】 前記プロセッサにて前記データを前記命令を用いて処理する
    方法であって、該データは前記要素の配列に関連し、前記第1および前記第2の
    値はオペランドである、請求項1に記載の方法。
  5. 【請求項5】 前記プロセッサにて前記データを前記命令を用いて処理する
    方法であって、該データは前記要素の配列に関連し、前記所定の値は0である、
    請求項1に記載の方法。
  6. 【請求項6】 前記プロセッサにて前記データを前記命令を用いて処理する
    方法であって、該データは前記要素の配列に関連し、前記比較する工程は、前記
    配列インデックスが0以上であり、かつ、該配列の長さより小さいか否かを判定
    する工程を包含する、請求項1に記載の方法。
  7. 【請求項7】 前記プロセッサにて前記データを前記命令を用いて処理する
    方法であって、該データは前記要素の配列に関連し、前記宛先は該配列のベース
    アドレスを含む、請求項1に記載の方法。
  8. 【請求項8】 前記プロセッサにて前記データを前記命令を用いて処理する
    方法であって、宛先は無効なベースアドレスを含む、請求項1に記載の方法。
  9. 【請求項9】 前記プロセッサにて前記データを前記命令を用いて処理する
    方法であって、該データは前記要素の配列に関連し、前記格納する工程はフラグ
    を設定する工程をさらに包含する、請求項1に記載の方法。
  10. 【請求項10】 前記プロセッサにて前記データを前記命令を用いて処理す
    る方法であって、該データは前記要素の配列に関連し、前記第1および前記第2
    の値は、符号付き整数および符号なし整数のうちの少なくとも1つである、請求
    項1に記載の方法。
  11. 【請求項11】 前記プロセッサにて前記データを前記命令を用いて処理す
    る方法であって、該データは前記要素の配列に関連し、前記第1の位置は該配列
    の長さを含む、請求項1に記載の方法。
  12. 【請求項12】 前記プロセッサにて前記データを前記命令を用いて処理す
    る方法であって、該データは前記要素の配列に関連し、前記第2の位置は該配列
    のインデックスを含む、請求項1に記載の方法。
  13. 【請求項13】 前記プロセッサにて前記データを前記命令を用いて処理す
    る方法であって、該データは前記要素の配列に関連し、 前記第1の位置は該配列の長さを含み、 前記第2の位置は該配列のインデックスを含む、請求項1に記載の方法。
  14. 【請求項14】 第1のオペランドを有する第1のソースレジスタおよび第
    2のオペランドを有する第2のソースレジスタを駆動する命令プロセッサであっ
    て、 該第1および該第2のオペランドを比較するオペランド比較関数と、 該第2のオペランドが0より大きいオペランドおよび0より大きいオペランド
    に等しいかのうちの少なくとも一方であるか否かを判定する該オペランド比較関
    数に接続された判定論理と、 該判定論理に接続されたフラグ設定関数と、 を含む、命令プロセッサ。
  15. 【請求項15】 前記第1のオペランドを有する前記第1のソースレジスタ
    および前記第2のオペランドを有する前記第2のソースレジスタにて動作する前
    記命令プロセッサであって、前記フラグ設定関数は、宛先レジスタ内に無効なベ
    ースアドレスを格納する、請求項14に記載の命令プロセッサ。
  16. 【請求項16】 前記第1のオペランドを有する前記第1のソースレジスタ
    および前記第2のオペランドを有する前記第2のソースレジスタにて動作する前
    記命令プロセッサであって、前記オペランド比較関数は、第1および第2のソー
    スレジスタから該第1および該第2のオペランドをそれぞれロードする、請求項
    14に記載の命令プロセッサ。
  17. 【請求項17】 前記第1のオペランドを有する前記第1のソースレジスタ
    および前記第2のオペランドを有する前記第2のソースレジスタにて動作する前
    記命令プロセッサであって、該第1および該第2のソースレジスタそれぞれは複
    数のオペランドを保持するように細分化されている、請求項14に記載の命令プ
    ロセッサ。
  18. 【請求項18】 前記第1のオペランドを有する前記第1のソースレジスタ
    および前記第2のオペランドを有する前記第2のソースレジスタにて動作する前
    記命令プロセッサであって、前記フラグ設定関数は宛先レジスタに接続されてい
    る、請求項14に記載の命令プロセッサ。
  19. 【請求項19】 プロセッサによって配列を処理する方法であって、 配列インデックスが有効であるか否かを判定する工程と、 該配列インデックスが有効であるか否かを判定する工程から得られた結果に基
    づいて、ベースアドレスを所定の値に置換する工程と、 該配列のベースアドレスが有効であるか否かを判定する工程と を包含する、方法。
  20. 【請求項20】 前記プロセッサによって前記配列を処理する方法であって
    、第1および第2の超長命令ワードをロードする工程をさらに包含し、各超長命
    令ワードは複数の下位命令を含む、請求項19に記載の方法。
  21. 【請求項21】 前記プロセッサによって前記配列を処理する方法であって
    、前記第1および前記第2の超長命令ワードは、前記判定する工程およびインデ
    ックスアドレスにおいて配列要素をロードする工程を達成する、請求項20に記
    載の方法。
  22. 【請求項22】 前記プロセッサによって前記配列を処理する方法であって
    、前記所定の値は無効なベースアドレスである、請求項19に記載の方法。
  23. 【請求項23】 前記プロセッサによって前記配列を処理する方法であって
    、アドレスオフセットを計算する工程をさらに包含する、請求項19に記載の方
    法。
  24. 【請求項24】 前記プロセッサによって前記配列を処理する方法であって
    、前記ベースアドレスにアドレスオフセットを加算する工程をさらに包含する、
    請求項19に記載の方法。
  25. 【請求項25】 前記プロセッサによって前記配列を処理する方法であって
    、前記所定の値は0である、請求項19に記載の方法。
  26. 【請求項26】 前記プロセッサによって前記配列を処理する方法であって
    、 配列インデックスが有効であるか否かを判定する工程は、 該配列インデックスが0から配列長から1を減算した値までの範囲内であるか
    否かを判定する工程と、 該配列インデックスが該配列長より小さいか否かを判定する工程と を包含する、請求項19に記載の方法。
JP2001564993A 2000-03-08 2001-03-08 配列境界をチェックする能力を有する処理アーキテクチャ Withdrawn JP2003526155A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US18773900P 2000-03-08 2000-03-08
US60/187,739 2000-03-08
PCT/US2001/007384 WO2001067238A1 (en) 2000-03-08 2001-03-08 Processing architecture having an array bounds check capability

Publications (1)

Publication Number Publication Date
JP2003526155A true JP2003526155A (ja) 2003-09-02

Family

ID=22690256

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001564993A Withdrawn JP2003526155A (ja) 2000-03-08 2001-03-08 配列境界をチェックする能力を有する処理アーキテクチャ

Country Status (8)

Country Link
US (1) US6892295B2 (ja)
EP (1) EP1261914B1 (ja)
JP (1) JP2003526155A (ja)
KR (1) KR20030016234A (ja)
AU (1) AU2001245519A1 (ja)
DE (1) DE60115609T2 (ja)
HK (1) HK1048538B (ja)
WO (1) WO2001067238A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017138964A (ja) * 2016-02-03 2017-08-10 グーグル インコーポレイテッド N次元テンソルにアクセスするための命令を処理するための装置、システム、およびコンピュータによって実現される方法

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6408383B1 (en) * 2000-05-04 2002-06-18 Sun Microsystems, Inc. Array access boundary check by executing BNDCHK instruction with comparison specifiers
US20030023958A1 (en) * 2001-07-17 2003-01-30 Patel Mukesh K. Intermediate language accelerator chip
US7558816B2 (en) 2001-11-21 2009-07-07 Sun Microsystems, Inc. Methods and apparatus for performing pixel average operations
US7013321B2 (en) 2001-11-21 2006-03-14 Sun Microsystems, Inc. Methods and apparatus for performing parallel integer multiply accumulate operations
GB2393286B (en) * 2002-09-17 2006-10-04 Micron Europe Ltd Method for finding local extrema of a set of values for a parallel processing element
US7447720B2 (en) 2003-04-23 2008-11-04 Micron Technology, Inc. Method for finding global extrema of a set of bytes distributed across an array of parallel processing elements
US7454451B2 (en) 2003-04-23 2008-11-18 Micron Technology, Inc. Method for finding local extrema of a set of values for a parallel processing element
US7574466B2 (en) 2003-04-23 2009-08-11 Micron Technology, Inc. Method for finding global extrema of a set of shorts distributed across an array of parallel processing elements
US7890735B2 (en) * 2004-08-30 2011-02-15 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
US7836280B1 (en) 2004-09-14 2010-11-16 Azul Systems, Inc. Dynamic concurrent atomic execution
US20060271395A1 (en) * 2005-05-25 2006-11-30 Harris Steven T Distributed object identity in a virtual machine cluster
US7577801B1 (en) 2005-12-06 2009-08-18 Azul Systems, Inc. Array access
US8464030B2 (en) * 2010-04-09 2013-06-11 International Business Machines Corporation Instruction cracking and issue shortening based on instruction base fields, index fields, operand fields, and various other instruction text bits
WO2012134122A2 (en) * 2011-03-26 2012-10-04 Samsung Electronics Co., Ltd. Method and apparatus for eliminating partially redundant array bounds checks in an embedded compiler
WO2013089709A1 (en) * 2011-12-14 2013-06-20 Intel Corporation System, apparatus and method for generating a loop alignment count or a loop alignment mask
US10324728B2 (en) 2015-12-17 2019-06-18 International Business Machines Corporation Lightweight interrupts for condition checking

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4293907A (en) 1978-12-29 1981-10-06 Bell Telephone Laboratories, Incorporated Data processing apparatus having op-code extension register
US4542456A (en) * 1982-04-28 1985-09-17 At&T Bell Laboratories Method and apparatus for performing range checks
EP0540155A3 (en) 1991-10-29 1993-07-21 Advanced Micro Devices, Inc. Digital limit checking system
US5687338A (en) 1994-03-01 1997-11-11 Intel Corporation Method and apparatus for maintaining a macro instruction for refetching in a pipelined processor
EP0976050B1 (en) * 1996-01-24 2002-06-12 Sun Microsystems, Inc. Processor with array access bounds checking
US5900011A (en) 1996-07-01 1999-05-04 Sun Microsystems, Inc. Integrated processor/memory device with victim data cache
US5909572A (en) 1996-12-02 1999-06-01 Compaq Computer Corp. System and method for conditionally moving an operand from a source register to a destination register
US5933650A (en) 1997-10-09 1999-08-03 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US6085208A (en) * 1997-10-23 2000-07-04 Advanced Micro Devices, Inc. Leading one prediction unit for normalizing close path subtraction results within a floating point arithmetic unit
US6035390A (en) * 1998-01-12 2000-03-07 International Business Machines Corporation Method and apparatus for generating and logically combining less than (LT), greater than (GT), and equal to (EQ) condition code bits concurrently with the execution of an arithmetic or logical operation

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017138964A (ja) * 2016-02-03 2017-08-10 グーグル インコーポレイテッド N次元テンソルにアクセスするための命令を処理するための装置、システム、およびコンピュータによって実現される方法

Also Published As

Publication number Publication date
HK1048538A1 (en) 2003-04-04
HK1048538B (zh) 2006-08-04
US6892295B2 (en) 2005-05-10
DE60115609T2 (de) 2006-08-17
US20020029332A1 (en) 2002-03-07
KR20030016234A (ko) 2003-02-26
EP1261914B1 (en) 2005-12-07
AU2001245519A1 (en) 2001-09-17
WO2001067238A1 (en) 2001-09-13
DE60115609D1 (de) 2006-01-12
EP1261914A1 (en) 2002-12-04

Similar Documents

Publication Publication Date Title
US7028170B2 (en) Processing architecture having a compare capability
US6279100B1 (en) Local stall control method and structure in a microprocessor
US6718457B2 (en) Multiple-thread processor for threaded software applications
US7020763B2 (en) Computer processing architecture having a scalable number of processing paths and pipelines
EP1543418B1 (en) Apparatus, method and system for a synchronicity independent, resource delegating, power and instruction optimizing processor
KR100764895B1 (ko) 고성능 알아이에스씨 마이크로프로세서 구조
JP2918631B2 (ja) デコーダ
WO2000033183A9 (en) Method and structure for local stall control in a microprocessor
US20020032831A1 (en) VLIW computer processing architecture with on-chip dynamic RAM
JP2003526155A (ja) 配列境界をチェックする能力を有する処理アーキテクチャ
US20220113966A1 (en) Variable latency instructions
US6341348B1 (en) Software branch prediction filtering for a microprocessor
US20240036876A1 (en) Pipeline protection for cpus with save and restore of intermediate results
US6615338B1 (en) Clustered architecture in a VLIW processor
US6625634B1 (en) Efficient implementation of multiprecision arithmetic
Shum et al. Design and microarchitecture of the IBM System z10 microprocessor
WO2020214624A1 (en) Variable latency instructions
Shimamura et al. A superscalar RISC processor with pseudo vector processing feature
US5729729A (en) System for fast trap generation by creation of possible trap masks from early trap indicators and selecting one mask using late trap indicators
CN113841126A (zh) 存储寄存器数据元素的处理器、系统及方法

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20080513