JPH0773149A - データ処理システムとその方法 - Google Patents
データ処理システムとその方法Info
- Publication number
- JPH0773149A JPH0773149A JP6082769A JP8276994A JPH0773149A JP H0773149 A JPH0773149 A JP H0773149A JP 6082769 A JP6082769 A JP 6082769A JP 8276994 A JP8276994 A JP 8276994A JP H0773149 A JPH0773149 A JP H0773149A
- Authority
- JP
- Japan
- Prior art keywords
- data
- value
- instruction
- bit
- circuit
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17356—Indirect interconnection networks
- G06F15/17368—Indirect interconnection networks non hierarchical topologies
- G06F15/17381—Two dimensional, e.g. mesh, torus
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
- G06F15/8023—Two dimensional arrays, e.g. mesh, torus
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8092—Array of vector units
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/445—Exploiting fine grain parallelism, i.e. parallelism at instruction level
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30065—Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30079—Pipeline control instructions, e.g. multicycle NOP
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30083—Power or thermal control instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30094—Condition code generation, e.g. Carry, Zero flag
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30116—Shadow registers, e.g. coupled registers, not forming part of the register space
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3812—Instruction prefetching with instruction modification, e.g. store into instruction stream
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a secondary processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
- G06F9/38873—Iterative single instructions for multiple data lanes [SIMD]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49905—Exception handling
- G06F7/4991—Overflow or underflow
- G06F7/49921—Saturation, i.e. clipping the result to a minimum or maximum value
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Multimedia (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
データ・プロセッサ10を含む。データ・プロセッサ1
0は、ベクタ動作とスケーラ動作の両方を行うことがで
きる。1台のマイクロシーケンサ22を用いて、データ
・プロセッサ10はベクタ命令とスケーラ命令の両方を
実行することができる。またデータ・プロセッサ10は
ベクタ・オペランドとスケーラ・オペランドの両方を記
憶することのできるメモリ回路14を有する。
Description
らに詳しくは、データ処理システムとその方法とに関す
る。 【0002】 【発明の背景】ファジー論理,ニューラル・ネットワー
クやその他の並行なアレイ準拠アプリケーションは、デ
ータ処理において非常に普及してきており、重要になり
つつある。現在のデジタル・データ処理システムの多く
は、ファジー論理,ニューラル・ネットワークやその他
の並行なアレイ準拠アプリケーションを特に念頭におい
て設計されたものではない。そのため、ファジー論理,
ニューラル・ネットワークやその他の並行なアレイ準拠
アプリケーションの要件を満足させるように特に適用お
よび設計されたデジタル・データ処理システムを設計す
ることで、大きな性能および価格上の利点を得られる。 【0003】飽和保護 加算および減算などの一定の算術演算動作は、正または
負の方向にオーバーフローを起こすことがある。「オー
バーフロー」とは、算術演算動作の結果の値がデスティ
ネーション・レジスタが記憶することのできる最大値を
越えている状況を指す(たとえば、%10000000
1を8ビットのレジスタに記憶しようとする)。「飽
和」または「飽和保護」とは、オーバーフローの状態を
処理するための方法を指し、レジスタ内の値を上位また
は下位の境界値と置き換える、たとえば$FFを8ビッ
トの符号なしの上位境界値に置き換えることである。一
般には、オーバーフローを処理するには2つの一般的な
方法がある。第1は、結果をロールオーバーさせるこ
と、すなわち$01をデスティネーション・レジスタに
記憶させることである(不飽和法)。第2は、結果を上
位の境界値または下位の境界値と置き換える(飽和
法)。 【0004】データ・プロセッサにおける共通の問題
は、使用可能なレジスタにより、また使用可能な算術演
算論理ユニット(ALU)回路構成により対応すること
ができるよりも幅の広い、すなわちビット数の多いデー
タ値に関して算術計算を実行する必要があることであ
る。たとえば、データ・プロセッサが、16ビットのA
LUを用いて2個の32ビットのデータ値を加えること
を求められることは珍しいことではない。延長動作(ex
tended length operations)に関して有効に飽和保護を
行う方法が必要であった。 【0005】データ・プロセッサ間の通信 ファジー論理,ニューラル・ネットワークやその他の並
行なアレイ準拠アプリケーションにとって、多次元アレ
イの集積回路を利用することが望ましい。そのため、フ
ァジー論理,ニューラル・ネットワークやその他の並行
なアレイ準拠アプリケーションにおける集積回路間での
通信がきわめて重要であることが多い。 【0006】たとえばトランスピュータなどのいくつか
の従来の技術によるデータ処理システムにおいては、集
積回路間の通信は集積回路内における命令の実行により
対話式に制御されている。そのため、他の集積回路に対
してデータを転送するには1つ以上の命令が必要にな
り、他の集積回路からデータを受け取るには1つ以上の
命令が必要になる。また、電話交換網やある種のコンピ
ュータ・ネットワークなどの別の従来技術によるデータ
処理システムにおいては、転送されるデータそのもの
に、どの集積回路が目的のデータ受信者であるかに関す
る経路情報が含まれる。 【0007】ファジー論理,ニューラル・ネットワーク
やその他の並行なアレイ準拠アプリケーションの目的
は、集積回路通信技術と、集積回路間の融通性のあるデ
ータ伝達機能を可能にする集積回路ピン・アーキテクチ
ャを開発することである。また、これは(1)集積回路
のアレイの外部に大量の回路構成を必要とするものでな
いこと;(2)データ伝達機能に関して大きなソフトウ
ェアの費用を必要とするものでないこと;および(3)
できるだけ少数の専用の集積回路ピンしか必要としない
ものである。 【0008】データ・プロセッサにおける延長動作 データ・プロセッサにおける共通の問題点は、使用可能
な算術演算論理ユニット(ALU)回路構成により1回
のALUサイクルで処理することができるよりも幅の広
い、すなわちビット数の多いデータ値に関して算術計算
を行う必要があることである。たとえば、16ビットの
ALUを用いて2個の32ビットのデータ値を加算する
ことが求められることは珍しいことではない。従来技術
によるデータ・プロセッサは、1つの「キャリー(繰上
げ)」または「拡張」ビットを設け、2つのバージョン
の計算命令を設けることによりこのような延長算術演算
に対応することが一般的で、キャリー・ビットを命令に
対する入力として用いるか否かを指定する(たとえば
「加算する」および「繰上げて加える」,「減算する」
および「借りて減算する」,「右にずらす」および「延
長して右にずらす」など)。このような伝統的な方法
は、限られた範囲の動作には充分であるが、その他の延
長動作には有効に対応しない。拡大した範囲の延長動作
に有効に対応する方法が必要とされた。 【0009】データ・プロセッサにおけるデータの移動 ベクタを用いるデータ・プロセッサにおける共通の問題
点は、ベクタの要素の和または合計を計算する必要があ
ることである。あるアプリケーションにおいては、スケ
ーラ結果(すなわち全ベクタ要素の合計)だけが必要と
される。別のアプリケーションでは、累積和のベクタを
計算しなければならない。ベクタ要素を1つの全体集合
値または累積部分集合のベクタに合成する必要性は加算
に限られない。最小値および最大値などの他の集合動作
も、アプリケーションによっては必要とされる。ベクタ
要素を1つの全体集合値に合成するためのより効率的な
方法およびメカニズムが必要とされる。 【0010】命令の多重レベル条件付き実行 命令の条件付き実行は、あらゆる種類のデータ・プロセ
ッサにおいて非常に有用な機能である。多くのデータ・
プロセッサにおいては、条件付き分岐命令を用いて命令
の条件付き実行を実現してきた。しかし、SIMD(単
一命令複数データ)プロセッサにおいては、イネーブル
・ビットまたはマスク・ビットだけでは、一連の複雑な
論理動作を用いてイネーブルまたはマスク・ビットの次
の状態を計算することが必要とされる複雑な意志決定ツ
リーには適切でない。より直接的な方法で命令の条件付
き実行を実現することができる解決策が必要とされる。 【0011】データ・プロセッサのアーキテクチャ SISD(単一命令単一データ)プロセッサは、特定の
種類のデータ処理作業を実行するためには大変有用であ
る。SIMD(単一命令複数データ)プロセッサは、そ
の他の種類のデータ処理作業を実行するのに大変有用で
ある。ファジー論理,ニューラル・ネットワークやその
他の並行なアレイ準拠アプリケーションなどのアプリケ
ーションは、SISDプロセッサにより実行されること
が最良であるデータ処理作業だけでなくSIMDプロセ
ッサにより実行されることが最良であるデータ処理作業
を利用することが多い。 【0012】 着信データをデータ・プロセッサにロードする ファジー論理,ニューラル・ネットワークやその他の並
行なアレイ準拠アプリケーションは、かなりの量のデー
タの転送を必要とする多次元アレイの集積回路を利用す
ることが望ましい。そのため集積回路によって着信デー
タを選択および記憶するために用いられる方法が、ファ
ジー論理,ニューラル・ネットワークやその他の並行な
アレイ準拠アプリケーションにおいては大きな重要性を
持つ。データ処理システムの特定の要件により、着信デ
ータを様々なパターンで選択および記憶することができ
るようにするためには、集積回路により着信データを選
択および記憶するために用いられる方法は融通がきくも
のでなければならない。 【0013】関連の従来技術では、DMA(直接メモリ
・アクセス)が、入力/出力デバイスに、アドレスおよ
びデータ・バスを通じてメモリに直接のアクセスが与え
られる技術である;そのため入力/出力デバイスは、プ
ロセッサを用いてメモリにアクセスする必要がない。ま
た従来の技術では、種々のプロセッサは、種々のアドレ
ッシング・モードを利用する命令に応答して内部でアド
レスを生成する。 【0014】 データ・プロセッサのための休止技術およびメカニズム ファジー論理,ニューラル・ネットワークやその他の並
行なアレイ準拠アプリケーションで用いられる集積回路
は、集積回路が外部ソースからデータを受け取るのと同
時に命令を実行することがある。その際に起こる問題
は、データのコヒーレンシ(coherency )である。集積
回路は、ある命令の実行中に用いられるデータの有効性
を判定するためのメカニズムを持たねばならない。無効
なデータを用いることは一般的に壊滅的な問題となるの
で、多くのデータ処理システムにおいて認められない。 【0015】関連の従来技術においては、データのコヒ
ーレンシを確認するために多くの技術が用いられてい
る。たとえば信号機(semaphore )など、多くのソフト
ウェア・データ伝達または同期法がある。また、データ
・インターフェースにおけるステータス・ビットなど、
多くのハードウェア・データ伝達法もある。残念なが
ら、ハードウェア・ステータス・ビットでは、ポーリン
グまたは割り込みソフトウェア・ルーチンが必要とされ
るか、あるいは待行列(queing)法が必要になる。ファ
ジー論理,ニューラル・ネットワークやその他の並行な
アレイ準拠アプリケーションに関しては、ベクタ命令お
よびスケーラ命令の両方に関してデータのコヒーレンシ
を確認するデータ・コヒーレンシ技術およびメカニズム
が必要になり、それにはソフトウェア経費が最小限で済
み、最小限の回路構成を用いて実現できることが必要と
される。 【0016】最大値および最小値の決定 ファジー論理,ニューラル・ネットワークやその他の並
行なアレイ準拠アプリケーションにより必要とされる通
常の動作は、どのデータ値または2つ以上のデータ値の
グループ内のどのデータ値が最大値に等しいかを決定す
るための比較動作である。同様に、ファジー論理,ニュ
ーラル・ネットワークやその他の並行なアレイ準拠アプ
リケーションにより必要とされる通常の動作は、どのデ
ータ値または2つ以上のデータ値のグループ内のどのデ
ータ値が最小値に等しいかを決定するための比較動作で
ある。 【0017】符号つきの数(2の補数)と符号なしの数
の両方に対応することが望ましい。また、延長(多重バ
イト)オペランドに対応することが望ましい。ファジー
論理,ニューラル・ネットワークやその他の並行なアレ
イ準拠アプリケーションに関しては、多次元アレイの集
積回路を利用することが望ましいので、集積回路の境界
を越えてこのような最大値および最小値の比較を実行で
きることがさらに望ましい。 【0018】あるいは、最大値決定または最小値決定を
実行するソフトウェア・ルーチンは、従来の技術による
ソフトウェア命令を用いて実現することもできる。しか
しこのようなソフトウェア・ルーチンには、長いシーケ
ンスの命令が必要になり、実行するのに長い時間がかか
る。また、異なるソフトウェア・プログラムを実行する
集積回路の境界を越えてソフトウェアを拡張することは
困難である。 【0019】 【課題を解決するための手段】上記の必要性は、本発明
により達成される。従って、集積回路とその方法とがあ
る形態で提供される。本集積回路には、ベクタ命令を実
行することのできるベクタ・エンジンが含まれる。ま
た、本集積回路には、スケーラ命令を実行することので
きるスケーラ・エンジンも含まれる。シーケンサは、ベ
クタ・エンジン内のベクタ命令とスケーラ・エンジン内
のスケーラ命令の両方の実行を制御する。シーケンサ
は、ベクタ・エンジンに接続されてベクタ制御情報を通
信する。シーケンサは、スケーラ・エンジンに接続され
てスケーラ制御情報を通信する。ベクタ・オペランドお
よびスケーラ・オペランドを記憶するための共有メモリ
回路も、この集積回路には含まれる。共有メモリ回路
は、ベクタ・エンジンに接続されてベクタ・オペランド
を通信する。共有メモリ回路は、スケーラ・エンジンに
接続されてスケーラ・オペランドを通信する。 【0020】これらとその他の特徴,利点は、以下の詳
細な説明と、添付の図面とによりさらに明確に理解され
るだろう。 【0021】 【実施例】 【0022】 【目次】 セクション1 概要 1.1 主な特徴 1.2 アソシエーション・エンジン・アーキテクチャ
の目標値 1.3 表記法 【0023】セクション2 機能説明 2.1 アソシエーション・エンジン・システムの概要 2.1.1 概要 2.1.2 マッピング 2.1.3 全体的なデータの流れ 2.1.4 データの流れ 2.1.5 初期化 2.1.6 入力データ 2.1.7 部分シナプス結果計算 2.1.8 出力データ 【0024】 2.2 アソシエーション・エンジン信号の説明 2.2.1 アソシエーション・エンジン・ピン・アウ
ト 2.2.2 アソシエーション・エンジン・ラン/スト
ップ・モードの動作 2.2.3 ポート信号 ノース・データ・ポート(ND[7:0]) ノース制御出力(反転NCO) ノース制御入力(反転NCI) サウス・データ・ポート(SD[7:0]) サウス制御出力(反転SCO) サウス制御入力(反転SCI) イースト・データ・ポート(ED[7:0]) イースト制御出力(反転ECO) イースト制御入力(反転ECI) ウェスト・データ・ポート(WD[7:0]) ウェスト制御出力(反転WCO) ウェスト制御入力(反転WCI) 2.2.4 ホスト・アクセス制御ライン リード/ライト制御(R/反転W) データ・イネーブル(反転EN) アクセス・タイプ(OP) 2.2.5 システム・オーケストレーション・ライン ラン/ストップ(R/反転S) ビジー(BUSY) 2.2.6 行列信号 行信号(反転ROW) 列信号(反転COL) 2.2.7 その他の信号 システム・バス・クロック(CLK) システム・リセット(反転RESET) 割込(反転INTR) 汎用ポートI/O(PA[1:0]) プロセッサ・ステータス(PSTAT[2:0]) 2.2.8 テスト信号 テスト・クロック(TCK) テスト・データ入力(TDI) テスト・データ出力(TDO) テスト・モード選択(TMS) テスト・リセット(反転TRST) 2.2.9 D.C.電気特性 2.2.10 アソシエーション・エンジン・ピン・ア
ウト 【0025】2.3 アソシエーション・エンジン・ホ
ストがアクセスできるレジスタ 2.3.1 アソシエーション・エンジン識別レジスタ
(AIR) 2.3.2 算術演算制御レジスタ(ACR) 2.3.3 例外ステータス・レジスタ(ESR) 2.3.4 例外マスク・レジスタ(EMR) 2.3.5 処理要素選択レジスタ(PESR) 2.3.6 ポート制御レジスタ(PCR) 2.3.7 アソシエーション・エンジン・ポート・モ
ニタ・レジスタ(APMR) 2.3.8 汎用ポート・レジスタ(GPPR) 2.3.9 汎用方向レジスタ(GPDR) 2.3.10 IDRポインタ・レジスタ(IPR) 2.3.11 IDRカウント・レジスタ(ICR) 2.3.12 IDRロケーション・マスク・レジスタ
(ILMR) 2.3.13 IDR初期オフセット・レジスタ(IO
R) 2.3.14 ホスト・ストリーム選択レジスタ(HS
SR) 2.3.15 ホスト・ストリーム・オフセット・レジ
スタ(HSOR) 2.3.16 ノース−サウス保持レジスタ(NSH
R) 2.3.17 イースト−ウェスト保持レジスタ(EW
HR) 2.3.18 オフセット・アドレス・レジスタ#1
(OAR1) 2.3.19 深さ制御レジスタ#1(DCR1) 2.3.20 オフセット・アドレス・レジスタ#2
(OAR2) 2.3.21 深さ制御レジスタ#2(DCR2) 2.3.22 割込ステータス・レジスタ#1(ISR
1) 2.3.23 割込マスク・レジスタ#1(IMR1) 2.3.24 割込ステータス・レジスタ#2(ISR
2) 2.3.25 割込マスク・レジスタ#2(IMR2) 2.3.26 マイクロシーケンサ制御レジスタ(MC
R) 2.3.27 マイクロシーケンサ・ステータス・レジ
スタ(MSR) 2.3.28 スケーラ・プロセス制御レジスタ(SP
CR) 2.3.29 命令レジスタ(IR) 2.3.30 命令キャッシュ・ライン有効レジスタ
(ICVR) 2.3.31 プログラム・カウンタ(PC) 2.3.32 PC境界レジスタ(PBR) 2.3.33 命令キャッシュ・タッグ#0(ICT
0) 2.3.34 命令キャッシュ・タッグ#1(ICT
1) 2.3.35 命令キャッシュ・タッグ#2(ICT
2) 2.3.36 命令キャッシュ・タッグ#3(ICT
3) 2.3.37 スタック・ポインタ(SP) 2.3.38 第1レベル・スタック(FLS) 2.3.39 リピート開始レジスタ(RBR) 2.3.40 リピート終了レジスタ(RER) 2.3.41 リピート・カウント・レジスタ(RC
R) 2.3.42 グローバル・データ・レジスタ(G
[0]〜G[7]) 2.3.43 グローバル・ポインタ・レジスタ(P
[0]〜P[7]) 2.3.44 例外ポインタ表 2.3.45 入力データ・レジスタ(IDR) 2.3.46 ベクタ・データ・レジスタ(V[0]〜
V[7]) 2.3.47 ベクタ・プロセス制御レジスタ(VPC
R) 2.3.48 入力タッグ・レジスタ(ITR) 2.3.49 命令キャッシュ(IC) 2.3.50 係数メモリ・アレイ(CMA) 【0026】2.4 アソシエーション・エンジン・マ
イクロコードがアクセス可能なレジスタ 2.4.1 入力データ・レジスタ(IDR) 2.4.2 ベクタ・エンジン・レジスタ 係数メモリ・アレイ(CMA) ベクタ・データ・レジスタ(V[0]〜V[7]) ベクタ・プロセス制御レジスタ(VPCR) 2.4.3 マイクロシーケンサ制御レジスタ 命令レジスタ(IR) プログラム・カウンタ(PC) スタック・ポインタ(SP) 第1レベル・スタック(FLS) リピート開始レジスタ(RBR) リピート終了レジスタ(RER) リピート・カウント・レジスタ(RCR) 2.4.4 スケーラ・エンジン・レジスタ グローバル・ポインタ・レジスタ(P[0]〜P
[7]) グローバル・データ・レジスタ(G[0]〜G[7]) スケーラ・プロセス制御レジスタ(SPCR) 2.4.5 アソシエーション・エンジン制御レジスタ アソシエーション・エンジン識別レジスタ(AIR) 算術演算制御レジスタ(ACR) 例外ステータス・レジスタ(ESR) 例外マスク・レジスタ(EMR) 処理要素選択レジスタ(PESR) ポート制御レジスタ(PCR) アソシエーション・エンジン・ポート・モニタ・レジス
タ(APMR) 汎用ポート・レジスタ(GPPR) 汎用方向レジスタ(GPDR) IDRポインタ・レジスタ(IPR) IDRカウント・レジスタ(ICR) IDRロケーション・マスク・レジスタ(ILMR) IDR初期オフセット・レジスタ(IOR) 【0027】2.5 アソシエーション・エンジン・マ
イクロコード命令セットの概要 2.5.1 命令のタイプ 2.5.2 使用されるノーテイション 2.5.3 マイクロコード命令フォーマット データ・フォーマット レジスタの選択 2.5.4 スタック・ポインタ用例 2.5.5 IDRへのアクセス 2.5.6 ベクタ・プロセス制御レジスタ 2.5.7 スケーラ・プロセス制御レジスタ 2.5.8 符号つきの動作と符号なしの動作 2.5.9 飽和動作と不飽和動作 2.5.10 アソシエーション・エンジン・システム
制御動作 2.5.11 ベクタ・エンジン・データ移動 drotmov 命令の説明 dsrot 命令の説明 2.5.12 ベクタ・エンジン・データ動作 右ローテイト/左シフト命令のまとめ 下向きシフト動作の説明 vmin/vmax 命令の説明 2.5.13 ベクタ・エンジン条件付き動作 VTビットおよびVHビットに関する条件付き命令の効
果 右ローテイト命令および左シフト命令のまとめ 2.5.14 スケーラ・エンジン・データ移動 2.5.15 スケーラ・エンジン・データ動作 2.5.16 スケーラ・エンジン・プログラムの流れ
制御動作 2.5.17 repeatおよびrepeate 命令の説明 repeatループ終了時の流れの変更 repeatループ終了時のベクタ条件 2.5.18 拡張ビットと多重バイト動作の実行 2.5.19 多重バイト動作の説明 多重バイト加算 多重バイト減算 多重バイト比較 xX0およびxX1に関するVIFの依存性 多重バイト最大値 多重バイト最小値 多重バイト左算術演算シフト 多重バイト右算術演算シフト 多重バイト・ネゲーション 多重バイト・ポインタの増分 多重バイト・ポインタの減分 2.5.20 プロセス計算制御 2.5.21 PE処理に対するVPCR VHビット
とVTビットの効果 2.5.22 命令実行回数 2.5.23 アソシエーション・エンジン・ミッシン
グ命令 【0028】セクション3 アソシエーション・エンジンの動作原理 3.1 情報の流れと編成 【0029】3.2 命令パイプライン 3.2.1 命令パイプラインの休止 3.2.2 命令パイプラインの休止優先順位 【0030】3.3 命令およびデータ・メモリ 3.3.1 命令キャッシング 3.3.2 CMAとMMAのマッピング 3.3.3 CMAに対する直接アクセスと反転アクセ
ス 3.3.4 CMA空間の配置 例#1:データ記憶のみに用いられるCMA 例#2:命令キャッシュ,PCおよびCMAページ 例#3:プログラムおよびデータに用いられるCMA 例#4:シフトしたプログラム 例#5:例#4にジャンプ・テーブルを追加 例#6:例#4にCMAスタックを追加 例#7:例#4にベクタおよびスケーラ記憶を追加 例#8:全部を一緒にする 【0031】3.4 アソシエーション・エンジンの初
期化 【0032】3.5 ポート動作 3.5.1 ホスト転送モード ランダム・アクセス・モード ホスト・ストリーム・アクセス・モード 3.5.2 アソシエーション・エンジン転送モード 入力インデックス付け ILMRを用いる例 入力タッグ付け 3.5.3 アソシエーション・エンジンのためのホス
ト・メモリ・マップ 【0033】3.6 アソシエーション・エンジン動作 3.6.1 アソシエーション・エンジンの概観 3.6.2 ホストとアソシエーション・エンジンの対
話の詳細な説明 入力有効ビット 充てん後計算 充てん中計算 アソシエーション・エンジンとアソシエーション・エン
ジン’との対話 3.6.3 命令の流れのアソシエーション・エンジン
の詳細 3.6.4 アソシエーション・エンジン例外モデル リセット例外 スケーラ例外 ベクタ例外 ポート・エラー例外 複数ポート割込エラー例外 3.6.5 マイクロコード・プログラム構造 初期化とルーピング 複数ループ 2つのアソシエーション・エンジン間での信号機伝達 条件付き実行 【0034】3.7 マイクロコードにより開始された
ポート・ライト動作 【0035】3.8 アソシエーション・エンジン・バ
ス・コンフィギュレーション 3.8.1 アソシエーション・エンジン・ポート・ス
イッチおよびタップ 3.8.2 バス・ポート衝突およびエラー アソシエーション・エンジン衝突条件 アソシエーション・エンジン競合条件 アソシエーション・エンジン挟み込み アソシエーション・エンジン・スイッチ競合 3.8.3 アソシエーション・エンジン・リング・コ
ンフィギュレーション 3.8.4 二次元アソシエーション・エンジン・コン
フィギュレーション 【0036】セクション4 アソシエーション・エンジン・バス動作 4.1 アソシエーション・エンジン・ポート・タイミ
ング 4.1.1 ホスト・ランダム・アクセス 4.1.2 ホスト・ランダム・アドレス転送ウェスト
からイーストへ 4.1.3 ホスト・ランダム・アドレスおよびデータ
転送ノースとサウス 4.1.4 ホスト・ランダム・アドレス/早期終了の
あるデータ転送ノース/サウス 4.1.5 ホスト・ストリーム・リード 4.1.6 ホスト・ストリーム・ライト・アクセス 【0037】4.2 アソシエーション・エンジン・マ
スタ動作 4.2.1 全有効データのアソシエーション・エンジ
ン・ライト動作 4.2.2 部分有効データのアソシエーション・エン
ジン・ライト動作 4.2.3 アソシエーション・エンジン・ライト衝突
タイミング 【0038】4.3 その他のタイミング 4.3.1 アソシエーション・エンジン反転BUSY
出力タイミング 4.3.2 ラン/ストップ介入のあるアソシエーショ
ン・エンジン・ライト・タイミング 4.3.3 割込タイミング 4.3.4 リセット・タイミング 4.3.5 IEEE1149.1テスト・アクセス・
ポート(TAP)タイミング 【0039】セクション5 特定のトピックスの概要 5.1 飽和保護 5.2 データ・プロセッサ間の通信:スイッチとタッ
プ 5.3 多重ポート・データ・プロセッサ 5.4 データ・プロセッサにおける延長動作 【0040】5.5 データ・プロセッサにおけるデー
タ移動動作 5.5.1 命令dadd, daddp, dmin, dminp, dmaxおよ
びdmaxp 5.5.2 命令dsrot 【0041】5.6 命令の多重レベル条件付き実行 5.6.1 命令vif, velseおよびvendif 5.6.2 命令dskip およびdskipe 5.6.3 命令repeatおよびrepeate 【0042】5.7 データ・プロセッサ・アーキテク
チャ 5.8 着信データをデータ・プロセッサにロードする 5.9 データ・プロセッサのための休止技術およびメ
カニズム 【0043】5.10 最大値と最小値の決定 5.10.1 命令colmax, rowmax, locmax, colmin,
rowminおよびlocmin 5.10.2 命令vmaxp, vmax, vminpとvmin, maxp,
max, minp とmin 【0044】5.11 係数メモリ・アレイ(CMA)
14に対する反転アクセス 【0045】 【用語集】アソシエーション・エンジン:アソシエーシ
ョン・エンジン。 【0046】アソシエーション・エンジン’:2台以上
のアソシエーション・エンジンを持つシステムにおいて
は、各アソシエーション・エンジンが異なるマイクロコ
ードを持つことができる。プライム記号(ダッシュ)
は、マイクロコードのこの差異を表すために用いられ
る。 【0047】アソシエーション・エンジン(複数形):
アソシエーション・エンジンの複数形。2台以上のアソ
シエーション・エンジン。 【0048】アソシエーション・エンジン・チェーン:
反転xCO/反転xCIデイジー・チェーン制御信号に
よりリンクされているアソシエーション・エンジンのグ
ループ。 【0049】バンク:入力ベクタを処理するアソシエー
ション・エンジンのグループ。バンクの数を増やすと、
出力ニューロンの数が増える。アソシエーション・エン
ジンがx−yマトリクスに配列されているとすると、バ
ンクはそのマトリクス内の行と類似のものである。スラ
イスの定義と比較されたい。 【0050】ブロードキャスト:この用語は、ラン・モ
ード・ストリーム・ライト動作と同義語である。すなわ
ち、データは1つのソース(アソシエーション・エンジ
ンまたは外部のデータ・ソース)から、複数のアソシエ
ーション・エンジンに、ストリームの形で(外部転送ア
ドレスなし)転送される。この用語はラン・モード・ス
トリーム・ライトのみに適用され、ラン・モード・スト
リーム・リードには適用されないので注意すること。こ
れは、ラン・モード中は、データは、アソシエーション
・エンジン内に書き込む、あるいはアソシエーション・
エンジンから書き出すことができるが、アソシエーショ
ン・エンジンから読むことはできないためである。アソ
シエーション・エンジンからデータを読むためには、デ
バイスをストップ・モード(R/反転S=0)にしなけ
ればならない。 【0051】ラン・モード動作中(R/反転S=1)
は、ブロードキャスト動作のデスティネーションは、受
信デバイス(群)の入力データ・レジスタ(IDR)で
ある。ストップ・モード動作中(R/反転S=0)は、
ブロードキャスト動作のデスティネーションは、ホスト
・ストリーム選択レジスタ(HSSR)内のLS[3:
0]ビットの指定により示される。 【0052】衝突:アソシエーション・エンジンの衝突
は、外部ポートのアクセスがwrite マイクロコード命令
と衝突したときに起こる(ラン・モードのみ)。この条
件は、衝突のあるポートに関するタップ設定に依存す
る。write マイクロコード命令は常に中断される。衝突
が検出されると、ポート・エラー例外処理が行われる。 【0053】充てん中計算:マイクロシーケンサ入力デ
ータに計算を重複させながら、入力データ・レジスタ
(IDR)を入力データで充てんする方法である。 【0054】競合:アソシエーション・エンジンの競合
は、2つ以上のソースが同時にIDRにアクセスしよう
としたときに起こる。現在異なるソースには:1)1つ
以上のポート;2)vstorei, vwritelまたはwritel命令
が含まれる。この条件は主に、ラン・モード中に問題に
なり、タップ設定に依存する。競合が検出されると、ポ
ート・エラー例外処理が起こる。 【0055】例外:アソシエーション・エンジン例外
(ラン・モードのみ)は、通常のシステム内で起こりう
るいくつかのシステム・イベントの1つである。アソシ
エーション・エンジンが応答する例外のタイプは、オー
バーフロー,ゼロによる除算およびポート・エラーであ
る。例外ベクタ表が、命令メモリの最初の部分に含まれ
ている。 【0056】ホスト:アソシエーション・エンジンのハ
ウスキーピング機能の責を負うアソシエーション・エン
ジンの外部にある制御メカニズム。これらの関数には、
アソシエーション・エンジンの初期化,データの入力,
アソシエーション・エンジンが発生した割込の処理など
が含まれる。 【0057】入力フレーム:入力データのセット全体。
出力前に必要な量のデータを生成することができる。パ
イプライン化を適切に用いることにより、入力フレーム
を重複させてより大きなスループットを得ることができ
る。 【0058】入力インデックス付け:連続シーケンスの
入力サンプルを入力データ・レジスタ(IDR)にロー
ドすることができる入力捕捉メカニズム。 【0059】入力タグ付け:非連続シーケンスの入力サ
ンプルを入力データ・レジスタ(IDR)にロードする
ことができる入力捕捉メカニズム。 【0060】入力ベクタ:アソシエーション・エンジン
・サブシステムが結果を生成するために必要とする入力
サンプルの総数。 【0061】出力関数:フィードフォワード・ニューラ
ル・ネットワーク内の各ニューロンの出力に適用される
関数。この関数はS字形スカッシュ関数の形をとること
が多い。この関数は、他のすべてのアソシエーション・
エンジンの部分シナプス結果が収集されたときに1つの
アソシエーション・エンジンにより実行することができ
る。単一のアソシエーション・エンジンによりこの関数
が実行される様子の詳細については、セクション3.
6.2.4アソシエーション・エンジンとアソシエーシ
ョン・エンジン’との対話を参照のこと。 【0062】部分シナプス結果:入力フレームの一部に
伝播関数を適用することにより得られる結果。ネットワ
ーク内に入る入力サンプルの総数が64未満(1つのア
ソシエーション・エンジンが処理することのできる最大
数)である場合は、1つのアソシエーション・エンジン
が入力フレーム全体に関して動作することができ(1つ
のニューロンに適用される)、そのために総シナプス結
果を計算することができる。 【0063】入力サンプルの総数が64より大きい場合
は、アソシエーション・エンジンは入力フレームの一部
に伝播関数を適用することができるので、各ニューロン
について部分シナプス結果が計算される。各ニューロン
について総シナプス結果を生成するためにこれらの部分
シナプス結果をすべて収集することは、単一のアソシエ
ーション・エンジンの責務である。 【0064】ポート:アソシエーション・エンジン上の
4個の可能な外部バス・ポートのうちの1つ。ノース,
サウス,イーストおよびウェストがある。 【0065】伝播関数:ネットワークの出力を計算する
ために用いられる関数。最も簡単な例は、入力と連結重
み(connecting weights)の積の和、すなわちΣIiX
Wijである。 【0066】アソシエーション・エンジン・システムに
おいては、アソシエーション・エンジンは部分伝播関数
を実行する(各アソシエーション・エンジンは入力の一
部しか用いることができないため)。これらの部分伝播
関数(部分シナプス結果ともいう)をすべて収集し、そ
れらを合計して完全な伝播関数を形成することが1つの
アソシエーション・エンジンの責務である。この関数の
詳細については、セクション3.6.2.4アソシエー
ション・エンジンとアソシエーション・エンジン’との
対話を参照のこと。 【0067】飽和:アソシエーション・エンジンにおけ
る多くの算術演算命令は結果を飽和させる。これは結果
をロールオーバーさせる命令と対比される。このような
2つの異なる動作モードを持つ利点の1つに、多重バイ
ト動作があり、この場合はより下位のバイトが飽和を起
こさない命令を用いて(すなわちより下位のバイトが、
結果をロールオーバーさせるような動作を実行する)、
最上位バイトにおける動作により結果が飽和する。次の
ような符号なしの演算を考える。 【0068】飽和:$FF+$02==>$FF(オー
バーフローがセットされる) 不飽和:$FF=$02==>$01(オーバーフロー
がセットされる) 符号つきのモードでは飽和は別の動作をするので留意す
ること。詳細については、セクション2.5.9飽和動
作と不飽和動作を参照のこと。 【0069】シャドウ・レジスタ:アソシエーション・
エンジン・レジスタのいくつかは、初期値を指定するた
めに用いられる。これらのレジスタには、隠された(シ
ャドウ)レジスタが備えられ、初期値を定期的に持つ。
シャドウ・レジスタに対するアソシエーション・エンジ
ン・レジスタには:IPR,ICR,OAR1,DCR
1,OAR2,DCR2がある。IPRとICRとは、
ラン・モード・ストリーミング動作中に用いられる一次
レジスタである。OAR1,DCR1,OAR2および
DCR2は、ストップ・モード・ストリーミング動作中
に用いられる一次レジスタである。シャドウ・レジスタ
の概念により、ストリーミング動作中に用いられるレジ
スタの再初期化が迅速にできる。 【0070】シェルフ:1つのSIMDエンジンとその
関連係数値の一般的な名前。ニューラル・ネットワーク
・アプリケーションでアソシエーション・エンジンが用
いられる場合は、シェルフをニューロンと考えることが
できる。アソシエーション・エンジンをファジー論理ア
プリケーションで用いる場合は、シェルフはファジー・
メンバーシップ関数と考えることができる。 【0071】SIMD:単一命令複数データ。この言葉
は、アソシエーション・エンジンの状態制御メカニズム
を説明するための形容詞として用いられる。この言葉
は、アソシエーション・エンジンのすべてのALUセク
ションの行動を調整する単一の命令ストリームがあるこ
とを示す。 【0072】SIMDベクタ・エンジン:アソシエーシ
ョン・エンジンのALUセクション。アソシエーション
・エンジンには、64個の計算ブロックがあり、これら
は入力データ・レジスタ(IDR)および係数メモリ・
アレイ(CMA)に置かれたデータに関して動作する。
これらの動作の結果はベクタ・レジスタ(V0〜V7)
に記憶することができる。SIMDスケーラ・エンジ
ン:アソシエーション・エンジンの状態制御部分。SI
MDスケーラ・エンジンは、命令キャッシュ(IC)か
ら命令を読んで、これらの命令を用いてSIMDスケー
ラ・エンジンとSIMDベクタ・エンジンで実行される
動作を制御する。 【0073】スライス:2つ以上のバンクを有するアソ
シエーション・エンジン・サブシステムにおいては、ス
ライスとは入力ベクタの同じ部分を同時に受け入れるア
ソシエーション・エンジンのグループである。スライス
の数を増やすと、入力の数が増える。アソシエーション
・エンジンがx−yマトリクスに配列されているとする
と、スライスはマトリクス内の列と類似のものである。
バンクの定義と比較されたい。 【0074】ストリーミング:アドレス・バス上で明確
なアドレッシングを行わずにアソシエーション・エンジ
ン・サブシステム内に情報を「注ぎ込む」あるいはサブ
システムから「吸い出す」ことができるアクセス・モー
ド。その代わりにアドレス情報は、OAR,DCRおよ
びHSORレジスタから来る。この動作により、ソフト
ウェア上では、アソシエーション・エンジン・サブシス
テムのよりトランスペアレントな成長が可能になる。 【0075】スイッチ:2つの対向ポートを接続する内
部回路。データがスイッチを通過すると、データの伝送
に1クロック・サイクルの遅延が加わる。 【0076】タップ:現在のリードまたはライト・サイ
クル(ポートにおける)が、IDRレジスタのロケーシ
ョンにアクセスすることを可能にする内部回路。また、
このメカニズムにより、アソシエーション・エンジン
は、ポート・スイッチ接続によりアソシエーション・エ
ンジン内を通過する可能性のあるデータ転送をスヌープ
することもできる。 【0077】セクション1 概要 【0078】アソシエーション・エンジン(アソシエー
ション・エンジン)は、モトローラ社により開発され、
ニューラル・ネットワーク,ファジー論理および種々の
並行計算アプリケーションに対する完ぺきに統一された
アプローチを形成する単一チップ・デバイスである。本
書は、スタンドアロン・デバイスおよび複数のアソシエ
ーション・エンジンにより構成されるシステムの一部と
してのアソシエーション・エンジンの機能説明および動
作を説明する。マイクロコード化されたSIMD(単一
命令複数データ)エンジンとして実現されると、アソシ
エーション・エンジンは、既存のニューラル・ネットワ
ーク・パラダイム,ファジー論理アプリケーションおよ
び並行計算アルゴリズムの多くを、最低限のホストCP
Uの介入により支援できるだけの充分な融通性を持つ。
このチップは、初期の開発段階において、特定のニュー
ラル・ネットワークおよびファジー論理アプリケーショ
ンを行うために顧客により用いられる構築ブロックとし
て開発されている。長期的な目標は、オンチップ相互接
続のためのインターモジュール・バス(IMB)上で、
アソシエーション・エンジンの全部または一部を用い
て、特定のアプリケーションを適切なMCUに統合する
ことである。 【0079】セクション1.1 主な特徴 【0080】・単一レイヤ・アプリケーションに関して
スケーリングが可能:アーキテクチャは、入力フレーム
幅と、出力数の両方においてスケーリングが可能であ
る。 ・複数レイヤ・アプリケーションに関してスケーリング
が可能:アソシエーション・エンジンのグループを、共
に継目なしに(最小限の外部相互接続論理部で)縦続接
続して、最小限のCPU介入によりレイヤ間データを伝
達することができる。 ・各アソシエーション・エンジンは、CPU/MCUと
直接通信を行いながら、別のアソシエーション・エンジ
ンに供給することができる。 ・独自のバス・スイッチとタップ構造により、効率的な
データ転送を行う。 ・最大64個の8ビット入力x64出力まで対応。 ・個々のアプリケーションに「カスタム・フィット」す
るモジュラー設計。 ・オンチップ学習に対応。 ・ファジー論理アルゴリズムに対応。 ・共通CPUインターフェース。 ・マイクロコード化されたSIMDエンジンで電力を供
給して、汎用性を得る。 ・ユーザによるプログラミング可能なマイクロコード。 ・標準インターフェース・プロトコルに対応して、CP
UまたはMCUに対する直接接続が可能。 ・すべての内部ロケーションとの単一クロックのリード
およびライト・サイクル(ストリーム・モード)に対
応。 ・すべての内部ロケーションとの3個のクロックのリー
ドおよびライト・サイクル(ランダム・モード)に対
応。 ・アソシエーション・エンジン群をチェーン化して、最
大216−1 8ビット ・サンプルの入力データ・フレーム幅に対応することが
できる。 ・各処理要素には、専用のALUハードウェアが含ま
れ、すべてのデータに関して同時に並行計算が可能にな
っている。 ・IEEE1149.1境界スキャン・アーキテクチャ
(JTAG)に対応。 【0081】セクション1.2 アソシエーション・エ
ンジン・アーキテクチャの目標値 【0082】・最小クロック周波数:DC ・最大クロック周波数:20MHz ・最大ワット損:400mw@5v ・3.3v動作 ・パッケージ・タイプ:84ピン・リードレス・チップ
・キャリア(LCC) ・パッケージ寸法:28mm x 28mm 【0083】セクション1.3 表記法 【0084】 本書で用いられる用例は、以下のとおりである: ・バイト順序−−レジスタ・セットに関する説明の場合
は(グループに2つ以上のレジスタが含まれている場
合)、レジスタ・セットは、IDR[63:0]のよう
に、アレイ・ノーテイション内に最上位のレジスタが最
初に書き込まれ、最下位のレジスタが最後に書き込まれ
る。64個の入力データ・レジスタのセット全体は、通
常IDRと呼ばれる。 ・ビット順序−−信号ピンのグループまたはレジスタ・
ビットのグループに関する説明の場合は、最上位ビット
が最大値を有し、最下位ビットが最小値を有する。その
ため、PSTAT[2:0]のようなノーテイション
は、PSTAT信号ラインが3個あり、そのうち最上位
のものはPSTAT[2]であることを示す。 ・名前の表記法 信号名は、大文字のボールド体で表す。ビット名は、大
文字のイタリック体で表す。レジスタ名は、大文字のボ
ールドイタリック体で表す。マイクロコード命令名は、
小文字のボールド体で表す。 ・ポート名の表記法 N,S,E,Wの4個のポートがある。ポートの一部で
ある信号には、前にxがつく。そのため、xCIという
ノーテイションは、すべてのxCI信号(NCI,SC
I,ECI,WCI)を指す。 【0085】セクション2 機能説明 【0086】セクション2.1 アソシエーション・エ
ンジン・システムの概要 セクション2.1.1 概要 本セクションでは、アソシエーション・エンジン動作の
高度な概要を示す。また、このチップにより支援される
データの流れとパイプライン化の背景にある概念も説明
する。本書は、このチップ・セットが用いられるアプリ
ケーションの種類について読者が一般的な理解を持って
いるという前提で書かれている。アソシエーション・エ
ンジンは、並行アルゴリズム,ファジー論理およびニュ
ーラル・ネットワークの処理に効果的に用いることので
きる汎用計算エンジンとして設計されている。しかし、
本セクションでは、ニューラル・ネットワークのアーキ
テクチャとアソシエーション・エンジンのアーキテクチ
ャとの関連について述べる。これは、基本的なニューラ
ル・ネットワーク構造が比較的単純であるためである。
また、これは本来スケーリングが可能で、アソシエーシ
ョン・エンジンのスケーリング性能を評価しやすくして
いる。 【0087】ファジー論理およびニューラル・ネットワ
ークの理解と実現とは、いくつかの興味深い、難しい問
題を提示する傾向がある。多くの参加者がそれぞれの用
語と概念の定義を発明して用いているために、これらの
問題は主に用語と概念の標準化がなされていないために
起こって来る。この理由により、従来のニューラル・ネ
ットワークからアソシエーション・エンジン・チップへ
のマッピングを簡単に説明すると役立つだろう。その後
で、ホスト(アソシエーション・エンジン・チップの動
作を制御する任意のインテリジェント・ソース)とアソ
シエーション・エンジン・チップとの間のデータの流れ
と、多重レイヤ・ニューラル・ネットワークにおけるレ
イヤ間の転送に関して説明する。 【0088】セクション2.1.2 マッピング アソシエーション・エンジン・チップの能力と融通性を
よりよく理解するために、従来のニューラル・ネットワ
ークとアソシエーション・エンジン・アーキテクチャと
の間のマッピングを説明する。この説明は、種々の複雑
さを持つ4つの異なる例に焦点をあて、読者の理解を得
ようとする。これらの例のために選択された入力および
出力の数は任意であり、サイズの感覚を与えるためだけ
のものである。 【0089】アソシエーション・エンジンは、最大64
個の8ビット入力に対応し、最大64個の出力を生成す
るように編成されている。64未満の入力と64未満の
出力とを必要とするアプリケーションについては、単一
のアソシエーション・エンジンで必要な構造を充分に実
現する。これらの要件を越えるアプリケーション(64
個の8ビット入力および/または64個の出力よりも大
きい)については、構造を実現するために、アソシエー
ション・エンジンの数を変えることが必要になる。以下
の例は、これらのアプリケーションを実現するために必
要な異なるアソシエーション・エンジンの編成を示すた
めに用いられる。 【0090】例1:42入力x35出力のフィードフォ
ワード・ネットワーク 図1ないし図3は、従来のニューラル・ネットワーク
図,論理的アソシエーション・エンジン図および物理的
アソシエーション・エンジン図を用いて、43入力と3
5出力を必要とする単一のレイヤのフィードフォワード
・ネットワークを図示する。この実行例は、ただ1つの
アソシエーション・エンジンしか必要としない。ホスト
は、42バイトのデータをアソシエーション・エンジン
に転送し、伝播関数が適用されて、35個の出力が生成
される。1つのアソシエーション・エンジンは、最大6
4出力に対応することができる。図1および本書の中で
はどこでも、入力レイヤは何の計算関数も実行しない点
に留意すること。これは分配レイヤとして機能するに過
ぎない。 【0091】例2:102入力x35出力のフィードフ
ォワード・ネットワーク 図4ないし図6は、102入力と35出力を持つフィー
ドフォワード・ネットワークの従来図,論理図および物
理図である。図6に示されるように、2機のアソシエー
ション・エンジンが必要とされる。これらのアソシエー
ション・エンジン群は、入力データ・ストリームと直列
に接続され、アソシエーション・エンジン0がデータ入
力0〜63を処理し、アソシエーション・エンジン1が
データ入力64〜101を処理する。アソシエーション
・エンジン1はまた、部分シナプス結果の集合(アソシ
エーション・エンジン0とそれ自身からの)を実行し、
35の出力を生成する。アソシエーション・エンジン0
およびアソシエーション・エンジン1は、バンクを形成
する。マイクロコード・プログラミングを容易にするた
めに、第3のアソシエーション・エンジンを配置して集
合および出力関数を実行することが望ましい。 【0092】例3:42入力x69出力のフィードフォ
ワード・ネットワーク 図7ないし図9は、42入力および69出力を必要とす
るフィードフォワード・ネットワークを示す。この実行
例は、2機のアソシエーション・エンジンを必要とす
る。アソシエーション・エンジン群は入力データ・スト
リームと並列に接続され、両方のアソシエーション・エ
ンジンが入力データを同時に受け取る。図9に示される
ように、アソシエーション・エンジン0とアソシエーシ
ョン・エンジン1とが1つのスライスを形成する。 【0093】例4:73入力x69出力のフィードフォ
ワード・ネットワーク 図10ないし図12は、73入力と60出力を必要とす
る実行例を示す。この実行例は、作業を行うために4機
のアソシエーション・エンジンを必要とする。スライス
0では、アソシエーション・エンジン0とアソシエーシ
ョン・エンジン2とが接続されて入力データ0〜63を
処理する。スライス1では、アソシエーション・エンジ
ン1とアソシエーション・エンジン3が接続されて入力
データ64〜72を処理する。スライス0は、スライス
1と効果的に直列に接続されて、64入力を越える入力
データ・ストリームを処理する。アソシエーション・エ
ンジン0とアソシエーション・エンジン1とが接続され
てバンク0を形成し、これが出力0〜63に対応する。
アソシエーション・エンジン2とアソシエーション・エ
ンジン3とが接続されてバンク1を形成し、これが出力
64〜68に対応する。 【0094】例5:63入力x20の隠されたレイヤx
8出力のフィードフォワード・ネットワーク 図13ないし図15は、2レイヤ・フィードフォワード
・ネットワークを示す。入力レイヤは、隠されたレイヤ
に対する入力データの分配点としてのみ機能する。隠さ
れたレイヤは63個の入力と20個の出力とで構成され
る。隠されたレイヤからの20の出力は、出力レイヤの
すべての入力に等分に分配される。出力レイヤは、20
個の入力と8個の出力とで構成される。アソシエーショ
ン・エンジン0は1つのバンク(バンク0)を形成し、
これが入力レイヤと隠されたレイヤとを実現する。これ
らのレイヤは、ホストから63の入力サンプルを取り出
し、データに関してネットワーク変形関数を実行し、次
に20の出力を出力レイヤに転送する。レイヤ3は、1
つのバンク(バンク1)で構成される。バンク1(アソ
シエーション・エンジン1)は、隠されたレイヤにより
供給される20の入力に関して動作し、そのデータに別
のネットワーク変形関数を実行し、出力0〜7を生成す
る。アソシエーション・エンジンとその動作についての
詳細は、セクション3のアソシエーション・エンジンの
動作原理を参照されたい。 【0095】セクション2.1.3 全体的なデータの
流れ アソシエーション・エンジンは、前述の例に見られるよ
うに、種々の方法で構築することができる。最も単純な
構造(アソシエーション・エンジン1機)からより複雑
な実行例まで、データの流れは一貫している。データ
は、ホストからアソシエーション・エンジンへ、アソシ
エーション・エンジンからアソシエーション・エンジン
・ダッシュ(アソシエーション・エンジン’)へ、アソ
シエーション・エンジン’からホストへ、あるいは多重
レイヤ・アプリケーションでは別のレイヤへと流れる。
各アソシエーション・エンジン・デバイスは独自の番号
を持っているが、ダッシュ・ノーテイション(アソシエ
ーション・エンジン’)を用いて、異なるマイクロプロ
グラム内容または関数をもつアソシエーション・エンジ
ンを区別する。異なるマイクロコードをもつ複数のアソ
シエーション・エンジンを用いることは、1つのチップ
・タイプを広範囲のアプリケーションおよび関数に用い
ることができるために、非常に強力な特徴であることを
再度述べる。 【0096】アソシエーション・エンジンには、それぞ
れN,S,E,Wとラベルのついたノース,サウス,イ
ーストおよびウェストの専用ポートがある。アソシエー
ション・エンジン・アレイにホストがアクセスする間、
ポートはアソシエーション・エンジン/ホストに対して
アドレスおよびデータ情報を供給する専門の関数を行
う。プログラム制御のもとでは、すべてのポートが同一
の基本的な転送プロトコルを用いて、レイヤ間またはレ
イヤ内での通信を実行する際に互いに相互接続されるよ
うになっている。次のセクションでは、これらのポート
を通じたデータの流れの概要について説明する。図16
がデータの流れに説明に関して参照される。 【0097】セクション2.1.4 データの流れ サブシステム内の各アソシエーション・エンジンは、外
部インターフェース回路を通じてホスト・システムから
アドレス,データおよび制御刺激を受け取る。すべての
初期化,ステータス監視および入力は、このインターフ
ェースを通過する。図16では、ホスト・インターフェ
ースはウェスト・ポートおよびサウス・ポートに接続さ
れている。アソシエーション・エンジン群とホストとの
間でデータを転送するためのいくつかのプログラミング
可能なモードがあるが、これらについては後のセクショ
ンで詳細に説明する。あるデータ転送モードは、初期
化,ステータス・チェック,係数メモリ・アレイ(CM
A)の準備または計算を行う動作用データの入力など特
定の関数を行うために他のモードよりも適している。本
セクションでは、動作用データの入力に関する説明を除
き、各関数に適した転送モードについては述べない。こ
れらの転送モードの詳細は、セクション2.2,アソシ
エーション・エンジン信号の説明およびセクション3,
アソシエーション・エンジンの動作原理に説明する。ま
たアソシエーション・エンジンには他の多くのプログラ
ミング可能な機能が含まれるが、これらについても後述
する。 【0098】セクション2.1.5 初期化 動作用データをアソシエーション・エンジンに入力する
前に、デバイスの主要部分の多くを初期化しなければな
らない。アソシエーション・エンジンのデフォルト値の
定義については、ホストがアソシエーション・エンジン
を動作状態に入れるために必要とされる労力を最小限に
留めるよう注意が払われている。ホストにより初期化を
必要とする部分のより詳細な定義については、セクショ
ン3,アソシエーション・エンジンの動作原理を参照さ
れたい。 【0099】セクション2.1.6 入力データ サブシステム内の各アソシエーション・エンジンは、適
切な数の入力データ・ベクタを取り入れ、ニューロンに
関して部分シナプス結果を計算し、その結果を関連のア
ソシエーション・エンジン’に転送する責を負う。入力
データ・ベクタは、通常ホストからアソシエーション・
エンジン群に転送され、その間にアソシエーション・エ
ンジン群がマイクロプログラムを実行する。これらのデ
ータ・ストリーミングのモードは、他のアクセス・モー
ドと共に、セクション3.5.1,ホスト転送モードお
よびセクション3.5.2,アソシエーション・エンジ
ン転送モードに説明されている。 【0100】図16に示されるアソシエーション・エン
ジン・サブシステムは、256バイトの入力データ・ベ
クタ・ストリームを支援し、これらは図17に示される
ように4つの部分入力ベクタと見なすことができる。各
アソシエーション・エンジンは、64バイトの入力デー
タ・ベクタ・ストリームを支援する。各アソシエーショ
ン・エンジンの関連の制御信号および内部構造により、
いつアソシエーション・エンジンがそのデータのセグメ
ントをホストから受け取るかが決定される。アソシエー
ション・エンジン0およびアソシエーション・エンジン
1は、最初の64バイトの入力ベクタ(または部分入力
ベクタ#1)を受け取り、アソシエーション・エンジン
2およびアソシエーション・エンジン3は部分入力ベク
タ#2を受け取り、アソシエーション・エンジン4およ
びアソシエーション・エンジン5が部分入力ベクタ#3
を受け取り、アソシエーション・エンジン6およびアソ
シエーション・エンジン7が部分入力ベクタ#4を受け
取る。 【0101】前述のように、各アソシエーション・エン
ジンは、最高64個の入力サンプルを受け取ることがで
き、各アソシエーション・エンジンが最高64個の部分
シナプス結果を計算する。アソシエーション・エンジン
群は、共にチェーン化されて、より広い入力データ・ベ
クタに対応することができる。チェーン内のすべてのア
ソシエーション・エンジンの部分シナプス結果を集合し
て、出力を形成するためには、1つ以上のアソシエーシ
ョン・エンジンのチェーンをアソシエーション・エンジ
ン’に接続しなければならない。アソシエーション・エ
ンジン’に接続されたアソシエーション・エンジンのチ
ェーンは、バンクと呼ばれる。各バンクは、64のニュ
ーロンを処理することができる。図16では、2つのバ
ンク、すなわちバンク0とバンク1がある。そのため、
図示されたサブシステムは、128のニューロンを処理
することができる。 【0102】バンク0では、アソシエーション・エンジ
ン0の第1部分出力値が、アソシエーション・エンジン
2,4,6の第1部分出力値と合成されて、そのバンク
の第1ニューロンの出力を生成する。合計のニューロン
出力値の集合は、アソシエーション・エンジン8’内で
行われる。すべての部分出力値(またはニューラル・ネ
ットワーク・アーキテクチャの部分シナプス結果)は、
アソシエーション・エンジン群からアソシエーション・
エンジン’にイースト/ウェスト・ポートを通じて伝え
られる。 【0103】 セクション2.1.7 部分シナプス結果計算 アソシエーション・エンジンには、広範囲の算術演算お
よび論理演算を実行することのできる単一命令,複数デ
ータ(SIMD)計算エンジンが含まれる。64の処理
要素はすべて、ロックステップでそのデータ値を計算す
る。多くの実行例では、アソシエーション・エンジン群
は対応されるアルゴリズムの複雑さのために計算に拘束
される。アソシエーション・エンジンは、そのパイプラ
イン化された内部アーキテクチャのために、計算オーバ
ーヘッドのかなりの部分を入力データ転送時間に隠すこ
とができる。これはアソシエーション・エンジンが、入
力データ・ベクタの最初のサンプルが到着すると計算関
数を開始することができ、入力データ・ベクタ全体を受
け取るまで計算を開始するのを待たなくてもよいためで
ある。ユーザは、マイクロコード命令セットを用いてマ
イクロコード・メモリ・アレイにダウンロードすること
ができ、入力データに関する計算を実行する(セクショ
ン2.5,アソシエーション・エンジン・マイクロコー
ド命令セットの概要を参照)。 【0104】セクション2.1.8 出力データ 部分シナプス結果が64すべてのニューロンに関して計
算される(計算関数は、64すべてのニューロンに関し
て並行に行われる)と、64個のニューロンのそれぞれ
の部分シナプス結果がアソシエーション・エンジンから
関連のアソシエーション・エンジン’に対して、イース
ト−ウェスト・ポートを通り、マイクロプログラムの制
御下で転送される。アソシエーション・エンジンからア
ソシエーション・エンジン’に転送された部分シナプス
結果は、実行された計算の種類やその計算の精度により
幅にばらつきがある。ホスト転送のための制御ラインと
同様の適切な制御ラインが用いられて、各アソシエーシ
ョン・エンジンからアソシエーション・エンジン’に対
するデータの流れを整理する。アソシエーション・エン
ジン群が関連のデータに関する計算を終了すると、これ
らの制御ラインを監視して、適当なときにその結果をバ
スに入れる。ネットワークの寸法と複雑さとによって
は、適切なバス動作のために外部分離およびバッファ回
路構成が必要になることもある。しかし多くの場合は、
アソシエーション・エンジンとアソシエーション・エン
ジン’によりバスを制御するために用いられる制御信号
は、この外部回路構成を制御するのに充分である。すべ
ての部分シナプス結果が(アソシエーション・エンジ
ン’で)合計されると、出力関数がその和に適用され
る。 【0105】セクション2.2 アソシエーション・エ
ンジン信号の説明 本セクションは、アソシエーション・エンジン入力およ
び出力信号ピンの説明を行う。これらの信号は、いくつ
かの異なるグループに分類される:すなわちポート信
号;ホスト・アクセス制御信号;システム・オーケスト
レーション信号;行列信号;その他の信号;およびテス
ト信号である。表2.1は、アソシエーション・エンジ
ン・ピンのまとめを行う。 【0106】本セクションで用いられる表記法は、セク
ション1.3,表記法で説明されたものと同じである。 【0107】セクション2.2.1 アソシエーション
・エンジン・ピン・アウト アソシエーション・エンジンから外に出るピンは、図1
8に示される。 【0108】セクション2.2.2 アソシエーション
・エンジン・ラン/ストップ・モードの動作 アソシエーション・エンジンは、2つのモード:ラン・
モードまたはストップ・モードのいずれか一方で動作す
るように設計されている。モードは、R/反転S信号に
より選択される。この信号により、アソシエーション・
エンジンがラン・モード(VDDでR/反転S)にある
か、ストップ・モード(R/反転S=0)にあるかが決
定する。動作モードにより、アソシエーション・エンジ
ン上の信号は異なる行動をとる。表2.2は、各モード
の機能を説明する。それぞれのタイミング情報について
は、セクション4,アソシエーション・エンジン・バス
動作を参照のこと。アソシエーション・エンジンによる
異なるデータ転送の説明については、セクション3.
5,ポート動作を参照のこと。 【0109】ラン・モードは、アソシエーション・エン
ジンのマイクロプログラムを実行するために用いられ
る。ストップ・モードは、アソシエーション・エンジン
内部リソースに対する外部アクセスを行って、システム
・ホストによる初期化およびデバッグを可能にする。 【0110】セクション2.2.3 ポート信号 以下にアソシエーション・エンジンの4つのポート信号
グループを説明する。4つのポートは、アソシエーショ
ン・エンジン・デバイスを見下ろしたときのそれぞれの
物理的な位置により、ノース,サウス,イースト,ウェ
ストとラベルがつけられている。 【0111】セクション2.2.3.1 ノース・デー
タ・ポート(ND[7:0](71)) これらの信号は、動作がラン・モードであるかストップ
・モードであるかによりアドレスまたはデータ情報を転
送する。ラン・モードの場合は、この双方向ポートは、
ライト・ノース・マイクロコード命令(writen, vwrite
n )に応答して出力として駆動し、データがチップのノ
ース−サウス・ポートを通り転送される場合は入力とし
て働く。ストップ・モードの場合も、このポートは双方
向である。OP信号がランダム・アクセス転送を示し
て、このデバイスが選択される(反転ROWおよび反転
COLの両方がアサートされる)と、このポートはラン
ダム・アクセス・アドレスのLSBを受け取り、すぐに
サウス・ポートに伝えられる。このデバイスが選択され
ない場合は、このポート(入力としてのND)で受け取
られたデータが、ND内外に伝えられる(出力としての
ND)。アソシエーション・エンジンから出されたデー
タ値は、CLK信号の立ち下がり端でイネーブルにな
る。アソシエーション・エンジン内に入れられたアドレ
ス/データ値は、CLK信号の立ち上がり端でラッチさ
れる。 【0112】セクション2.2.3.2 ノース制御出
力(反転NCO(73)) この出力信号は、有効なデータがND信号ラインから出
て行くことを示す。この信号は、CLK信号の立ち下が
り端で移行する。 【0113】セクション2.2.3.3 ノース制御入
力(反転NCI(75)) この入力信号は、有効なアドレス/データ信号がND信
号ライン上に入ることを示す。この信号はCLK信号の
立ち上がり端でラッチされる。 【0114】セクション2.2.3.4 サウス・デー
タ・ポート(SD[7:0])(83) これらの信号は、動作がラン・モードであるかストップ
・モードであるかにより、アドレスまたはデータ情報を
転送する。ラン・モードの場合は、この双方向ポート
は、ライト・サウス・マイクロコード命令(writes, vw
rites )に応答して出力として駆動し、データがチップ
のノース−サウス・ポートを通り転送される場合は入力
として働く。ストップ・モードの場合も、このポートは
双方向である。OP信号がランダム・アクセス転送を示
して、このデバイスが選択される(反転ROWおよび反
転COLが両方ともアサートされる)と、SDはCLK
の立ち上がり端でランダム・アクセス・データをラッチ
するか(R/反転W=0のとき)、あるいはランダム・
アクセス・データがCLKの立ち下がり端でSDから外
に出される(R/反転W=1のとき)。このデバイスが
選択されない場合は、このポート(入力としてのSD)
で受信されたデータが、ノース・ポートに直接伝えら
れ、ノース・ポートで受信されたデータがSD内外に伝
えられる(出力としてのSD)。アソシエーション・エ
ンジンから出されたデータ値は、CLK信号の立ち下が
り端でイネーブルにされる。アソシエーション・エンジ
ン内に入れられたアドレス/データ値は、CLK信号の
立ち上がり端でラッチされる。ストップ・モード・アク
セス中にHSP[1:0]ビットがこのポートの動作を
どのように変更することができるかという情報に関して
はセクション2.3.14,ホスト・ストリーム選択レ
ジスタ(HSSR)を参照のこと。 【0115】セクション2.2.3.5 サウス制御出
力(反転SCO(85)) この出力信号は、有効なアドレス/データがSD信号ラ
インから出されていることを示す。この信号は、CLK
信号の立ち下がり端で移行する。 【0116】セクション2.2.3.6 サウス制御入
力(反転SCI(89)) この入力信号は、有効なデータ信号がSD信号ライン上
でに入れられることを示す。この信号はCLK信号の立
ち上がり端でラッチされる。 【0117】セクション2.2.3.7 イースト・デ
ータ・ポート(ED[7:0])(77) これらの信号は、動作がラン・モードであるかストップ
・モードであるかにより、アドレスまたはデータ情報を
転送する。ラン・モードの場合は、この双方向ポート
は、ライト・イースト・マイクロコード命令(writee,
vwritee )に応答して出力として駆動し、データがチッ
プのイースト−ウェスト・ポートを通り転送される場合
は入力として働く。ストップ・モードの場合は、このポ
ートで受信されたデータ(入力としてのED)は直ちに
ウェスト・ポートに伝えられ、ウェスト・ポートで受信
されたデータはED内外に伝えられる(出力としてのE
D)。アソシエーション・エンジンから出されたデータ
値は、CLKの立ち下がり端でイネーブルになる。アソ
シエーション・エンジン内に入れられたアドレス/デー
タ値は、CLK信号の立ち上がり端でラッチされる。ス
トリーム・モード・アクセス中にHSP[1:0]ビッ
トがこのポートの動作をどのように変更することができ
るかという情報に関してはセクション2.3.14,ホ
スト・ストリーム選択レジスタ(HSSR)を参照のこ
と。 【0118】セクション2.2.3.8 イースト制御
出力(反転ECO(79)) この出力信号は、有効なアドレス/データがED信号ラ
インから出されていることを示す。この信号は、CLK
信号の立ち下がり端で移行する。 【0119】セクション2.2.3.9 イースト制御
入力(反転ECI(81)) この入力信号は、有効なデータがED信号ライン上に入
れられることを示す。この信号はCLK信号の立ち上が
り端でラッチされる。 【0120】セクション2.2.3.10 ウェスト・
データ・ポート(WD[7:0])(91) これらの信号は、動作がラン・モードであるかストップ
・モードであるかにより、アドレスまたはデータ情報を
転送する。ラン・モードの場合は、この双方向ポート
は、ライト・ウェスト・マイクロコード命令(writew,
vwritew )に応答して出力として駆動し、データがチッ
プのイースト−ウェスト・ポートを通り転送される場合
は入力として働く。ストップ・モードの場合も、このポ
ートは双方向である。OP信号がランダム・アクセス転
送を示して、このデバイスが選択される(反転ROWお
よび反転COLが両方ともがアサートされる)と、この
ポートはランダム・アクセス・アドレスのMSBを受け
取り、すぐにイースト・ポートに伝えられる。このデバ
イスが選択されない場合は、このポート(入力としての
WD)で受信されたデータが、直ちにイースト・ポート
に伝えられ、イースト・ポートで受信されたデータがW
D内外に伝えられる(出力としてのWD)。アソシエー
ション・エンジンから出されたデータ値は、CLK信号
の立ち下がり端でイネーブルになる。アソシエーション
・エンジン内に入れられたアドレス/データ値は、CL
K信号の立ち上がり端でラッチされる。 【0121】セクション2.2.3.11 ウェスト制
御出力(反転WCO(93)) この出力信号は、有効なデータがWD信号ラインから出
されていることを示す。この信号は、CLK信号の立ち
下がり端で移行する。 【0122】セクション2.2.3.12 ウェスト制
御入力(反転WCI(95)) この入力信号は、有効なアドレス/データがWD信号ラ
イン上に入れられることを示す。この信号はCLK信号
の立ち上がり端でラッチされる。 【0123】セクション2.2.4 ホスト・アクセス
制御ライン 以下の信号は、ストップ・モード内で、アソシエーショ
ン・エンジン内部のリソースにアクセスするために用い
られる。ホスト・アクセスは、ランダム・アクセスでも
ストリーム・アクセスでもよい。 【0124】セクション2.2.4.1 リード/ライ
ト制御(R/反転W(65)) この入力信号は、アソシエーション・エンジンに対する
アクセス/アソシエーション・エンジンからのアクセス
の方向を制御するために用いられる。この信号が高の場
合、アクセスはリード(データがアソシエーション・エ
ンジンから読み出される)であり、この信号が低の場合
は、アクセスはライト(データがアソシエーション・エ
ンジンに書き込まれる)である。R/反転Wピンは、C
LKの立ち上がり端で内部ラッチされる。 【0125】セクション2.2.4.2 データ・イネ
ーブル(反転EN(67)) このアクティブな低入力信号は、ホスト・バス転送のた
めのデータ・イネーブルである。この信号がアサートさ
れる(反転ROWおよび反転COL入力と共に)と、ア
ドレスまたはデータがアソシエーション・エンジンに転
送され、適当な数のバイト/ワードが転送されるか、あ
るいは反転ENがネゲートされるまで続く。反転EN信
号を用いて、アソシエーション・エンジンに流れ込む、
あるいはアソシエーション・エンジンから流れ出す情報
のデータ速度を制御することができる。反転ROW,反
転COLラインをアクティブに保持し、反転EN信号を
イネーブル/ディスエーブルにすることにより、データ
転送の速度を変更することができる。反転ENピンは、
CLKの立ち上がり端でラッチされる。 【0126】セクション2.2.4.3 アクセス・タ
イプ(OP)(94) この入力信号は、どのようなタイプのホスト・アクセス
(R/反転S=0)が実行されるかを示すために用いら
れる。OPピンは、CLKの立ち上がり端で内部ラッチ
される。 【0127】OP=0のときは、ストリーム・アクセス
・モードが選択される。このモードで動作しているとき
は、OARx/DCRxレジスタの組み合せを用いる
と、開始アドレスおよびカウントが内部生成される。こ
のメカニズムにより、データのストリームは、アソシエ
ーション・エンジン・システム内に書き込まれるか、あ
るいはアソシエーション・エンジン・システムから読み
出される。開始アドレス(OARx)と期間(DCR
x)レジスタとを用いることにより、データのストリー
ムはアドレスを供給せずにアソシエーション・エンジン
のチェーンに送られる。このチェーンは、xCIおよび
xCO信号(図19参照)の相互接続により形成され
る。すべてのアソシエーション・エンジンは、同じデー
タに対してアクセスを有する。ストリーム転送の方向
は、R/反転Wにより決まる。各データがロードされる
たびに、内部アドレス・ポインタが自動的に増分する。
ストリーム・アクセスをアソシエーション・エンジンの
アレイにおいて実行する前に、ホスト・ストリーム・オ
フセット・レジスタ(HSOR)をロードしなければな
らない。ストリーミングに関する詳細は、セクション
3.5.1,ホスト転送モードを参照のこと。 【0128】OP=1のときは、ランダム・アクセス・
モードが選択される。このモードでは、ポートによりリ
ードまたはライト動作が実行されるたびにアドレスが必
要になる。アドレスは、ウェスト・ポートおよびノース
・ポート(それぞれ、16ビット・アドレスのMSby
te,LSbyte)に提示される。サウス・ポートで
データが取り出されるか、あるいは提示される(リード
/ライトによる)。 【0129】セクション2.2.5 システム・オーケ
ストレーション・ライン 以下の信号は、アソシエーション・エンジン・システム
の調和を図るために用いられる。最も注目すべき信号
は、ラン/ストップ・モードと、複数のアソシエーショ
ン・エンジンのための完了信号である。 【0130】セクション2.2.5.1 ラン/ストッ
プ(R/反転S)(80) この入力信号は、アソシエーション・エンジンの動作モ
ードを決定する。この信号が高のとき(VDD)は、ラ
ン・モードが選択される。この信号が低のとき(VS
S)は、ストップ・モードが選択される。R/反転Sピ
ンは、CLK信号の立ち上がり端でラッチされる。 【0131】ストップ・モードは主に、アソシエーショ
ン・エンジン(群)のホスト初期化およびコンフィギュ
レーションのためのものである。ラン・モードは主に、
ホストを介入しない内部マイクロコードの実行と、アソ
シエーション・エンジン間でのデータ転送のためのもの
である。 【0132】セクション2.2.5.2 ビジー(反転
BUSY)(78) このアクティブ低,オープン・ドレーン出力信号は、ア
ソシエーション・エンジンが現在命令を実行中であるこ
とを示すために用いられる。アソシエーション・エンジ
ンがdone命令を実行したか、あるいは単一ステップ・モ
ードで選択された命令を完了したときに、反転BUSY
ピンがネゲートされる。反転BUSY信号は、反転RE
SETラインがアクティブになったとき、あるいはR/
反転S信号がストップ・モードに移行するときにもネゲ
ートされる。この出力は、外部のプルアップ・デバイス
と共に用いられて、すべてのアソシエーション・エンジ
ンがいつ「終了(done)」状態になったかを判定する。
反転BUSYピンは、CLK信号の立ち下がり端でイネ
ーブルになる。 【0133】セクション2.2.6 行列信号 反転ROWおよび反転COL信号は、ラン・モードであ
るかストップ・モードであるかにより2つの異なる関数
を実行する。ラン・モードでは、これらの信号は、複数
のアソシエーション・エンジンの間の最小値および最大
値動作を補助するために用いられる。ストップ・モード
では、これらの信号はホスト転送のためのアソシエーシ
ョン・エンジン・デバイスを選択するために用いられ
る。 【0134】セクション2.2.6.1 行信号(反転
ROW(82)) このアクティブ低の双方向ワイヤOR信号は、ある行の
アソシエーション・エンジンを選択する場合と、マイク
ロプログラムの制御下で最小値および最大値関数を補助
するためとに用いられる。 【0135】ラン・モードでは、反転ROW信号は、ma
x およびmin マイクロコード命令のセットにより用いら
れて、共通の反転ROWラインを共有するチップ間でチ
ップの境界を越えて最大値および最小値関数を行う。こ
の命令の間に、テストされているレジスタからのデータ
・ビットが、このワイヤOR信号に書き込まれる。次の
1/2クロック・サイクルの間に、この信号が検知され
て、読み出されたデータが書き込まれたデータと同じも
のであるか否かが調べられる。チップの境界を越えてmi
n またはmax を実行するには、チップがロック・ステッ
プ動作を行うことが必要とされるのはもちろんである
(すなわち異なるチップ上の命令が同じクロックで実行
される)。 【0136】ストップ・モードでは、反転ROW信号
は、アソシエーション・エンジンに対するチップ選択入
力として用いられ、ホスト・アクセスのための(行内
の)アソシエーション・エンジンを選択する。 【0137】セクション2.2.6.2 列信号(反転
COL(84)) このアクティブ低の双方向ワイヤOR信号は、ある列内
でアソシエーション・エンジンを選択する場合と、マイ
クロプログラムの制御下で最小値および最大値関数を補
助するために用いられる。 【0138】ラン・モードでは、反転COL信号は、ma
x およびmin マイクロコード命令のセットにより用いら
れて、共通の反転COLラインを共有するチップ間でチ
ップの境界を越えて最大値および最小値関数を行う。こ
の命令の間に、テストされているレジスタからのデータ
・ビットが、このワイヤOR信号に書き込まれる。次の
1/2クロック・サイクルの間に、この信号が検知され
て、読み出されたデータが書き込まれたデータと同じも
のであるか否かが調べられる。ここでも、チップの境界
を越えてmin またはmax を実行するには、チップがロッ
ク・ステップ動作を行うことが必要とされる(すなわち
異なるチップ上の命令が同じクロックで実行される)。 【0139】ストップ・モードでは、反転COL信号
は、アソシエーション・エンジンに対するチップ選択入
力として用いられ、ホスト・アクセスのための(列内
の)アソシエーション・エンジンを選択する。 【0140】セクション2.2.7 その他の信号 セクション2.2.7.1 システム・バス・クロック
(CLK) この入力信号は、ネットワーク全体のためのシステム・
クロックである。このクロックを用いてあるチップから
外に出るデータ転送はすべて、クロックの立ち下がり端
で出力データを転送し、クロックの立ち上がり端で入力
データを捕捉する。全データおよび制御信号のための準
備および保持時間は、このクロックに関連する。複数の
アソシエーション・エンジン間でこの信号を同期させる
ことは、特定のアソシエーション・エンジン命令の性能
にとって重要な意味を持つ(特に、rowmin, rowmax, co
lmin, colmax, vwrite, write などの「外部から見え
る」命令に関して)。 【0141】セクション2.2.7.2 システム・リ
セット(反転RESET) このアクティブ低入力信号は、内部システム・リセット
と接続されていて、システム内のすべてのデバイスに適
用されるシステム・リセットである。この信号がアサー
トされると、すべてのデバイスを強制的にデフォルト状
態に戻す。リセットはCLKの立ち上がり端と内部同期
されている。詳細については、セクション4.3.4,
リセット・タイミングを参照のこと。 【0142】セクション2.2.7.3 割込(反転I
NTR(66)) このアクティブ低のオープン・ドレーン出力信号は、ホ
スト・システムに割込条件が起こったことを知らせるた
めに用いられる。IMR1,IMR2レジスタに設定さ
れたビットにより、この信号は種々の理由でアサートさ
れる。詳細については、セクション2.3.23,割込
マスク・レジスタ#1(IMR1),セクション2.
3.25,割込マスク・レジスタ#2(IMR2)およ
びセクション4.3.3,割込タイミングを参照のこ
と。 【0143】セクション2.2.7.4 汎用ポートI
/O(PA[1:0](68)) これらのアクティブ高入力/出力信号は、アソシエーシ
ョン・エンジン・マイクロプログラムによる入力/出力
全般に用いられる。これらのピンが入力としてプログラ
ミングされている場合は、データはCLK信号の立ち上
がり端でラッチされる。出力としてプログラミングされ
ている場合は、これらの信号はCLK信号の立ち下がり
端でデータをイネーブル・アウトする。これらの2つの
ピンは、入力または出力として独立してプログラミング
することができる。I/Oおよびデータ・プログラミン
グの詳細については、セクション2.3.8,汎用ポー
トレジスタ(GPPR)を参照のこと。 【0144】セクション2.2.7.5 プロセッサ・
ステータス(PSTAT[2:0](86)) これらの出力信号は、アソシエーション・エンジン命令
の状態を継続的に反映する。これらの出力信号は、CL
K信号の立ち下がり端で出される。PSTAT[2:
0]信号の可能な値については表2.3を参照のこと。 【0145】セクション2.2.8 テスト信号 4つのテスト信号が、ボード相互接続の境界走査テスト
のためのIEEE1149.1テスト・アクセス・ポー
ト(TAP)を支援するインターフェースとなる。 【0146】セクション2.2.8.1 テスト・クロ
ック(TCK) この入力信号は、テスト論理のための専用クロックとし
て用いられる。テスト論理のクロック動作はアソシエー
ション・エンジンの通常動作とは独立しているので、ボ
ード上の他のすべてのアソシエーション・エンジン・コ
ンポーネントは共通のテスト・クロックを共有すること
ができる。 【0147】セクション2.2.8.2 テスト・デー
タ入力(TDI) この入力信号は、TAPおよび境界走査データ・レジス
タに対するシリアル・データ入力となる。 【0148】セクション2.2.8.3 テスト・デー
タ出力(TDO) この3状態出力信号は、TAPまたは境界走査データ・
レジスタからのシリアル・データ出力となる。TDO出
力を高インピーダンス・モードに入れると、ボードレベ
ルのテスト・データ・パスを並列に接続することができ
る。 【0149】セクション2.2.8.4 テスト・モー
ド選択(TMS) この入力信号は、TAPコントローラにより解読され
て、テスト支援回路構成の主要動作を区別する。 【0150】セクション2.2.8.5 テスト・リセ
ット(反転TRST) この入力信号は、TAPコントローラとIO.Ctlセ
ルを初期状態にリセットする。IO.Ctlセルの初期
状態とは、双方向ピンを入力として構成するものであ
る。境界走査チェーンの詳細については、セクション
2.6.3,データ・レジスタを参照のこと。 【0151】セクション2.2.9 D.C.電気特性 表2.4は、入力および出力関数に関するアソシエーシ
ョン・エンジンのd.c.電気特性を示す。 【0152】セクション2.2.10 アソシエーショ
ン・エンジン・ピン・アウト 図20は、アソシエーション・エンジン・パッケージの
外に出るピンを詳細に示している。「n.c.」とラベ
ルのつけられたピンは、無接続ピンで、アソシエーショ
ン・エンジン内部のアクティブな回路構成には接続され
ていない。 【0153】セクション2.3 アソシエーション・エ
ンジン・ホストがアクセスできるレジスタ 本セクションで説明されるレジスタは、ホスト・モード
・アクセス中に(すなわちR/反転S=0)アソシエー
ション・エンジンに対してアクセスすることができる内
部レジスタである。これらのレジスタには、ランダム・
アクセス・モード(OP=1)またはストリーム・アク
セス・モード(OP=0)のいずれかを用いてアクセス
することができる。しかし、アソシエーション・エンジ
ン識別レジスタ内の値を変更することはできない。ホス
トがアクセスすることのできるレジスタのリストは、表
2.6を参照のこと。 【0154】セクション2.3.1 アソシエーション
・エンジン識別レジスタ(AIR) アソシエーション・エンジン識別レジスタ(AIR)3
30は、ホストまたはマイクロコードにより用いられ
て、デバイスのタイプと寸法とを決定することができ
る。このデバイスに対して行われた機能上の修正は、レ
ジスタの減分により登録される(すなわち、このデバイ
スは$FFのIDを持ち、このデバイスの次のバージョ
ンは$FEというIDとなる)。 【0155】このレジスタは、ホストおよびマイクロコ
ード・メモリ・マップの最初にあるので、アーキテクチ
ャがどのように修正されても、このレジスタは常に同じ
位置にある。 【0156】AIRは、読み込み専用レジスタであり、
マイクロコード命令movfc によりアクセスすることがで
きる。AIRは図21により詳細に図示される。詳細に
ついてはセクション2.4.5.1,アソシエーション
・エンジン識別レジスタ(AIR)を参照のこと。 【0157】セクション2.3.2 算術演算制御レジ
スタ(ACR) 算術演算制御レジスタ(ACR)172は、ベクタ・エ
ンジンおよびスケーラ・エンジン内の数値の算術演算表
現を制御する。表2.7にACRに関するより詳細な情
報が示される。 【0158】SSGNおよびVSGNビットは、算術演
算動作中の数値が、スケーラ・エンジンおよびベクタ・
エンジン内でそれぞれ符号つきのものと見なされるの
か、ないものと見なされるのかを制御する。これらのビ
ットはまた、どのようなタイプのオーバーフロー(符号
があるのかないのか)が生成されるかを制御する。これ
らのビットのデフォルト値は0であり、これはスケーラ
・エンジンおよびベクタ・エンジン内ではデフォルトで
符号つきの算術演算が用いられることを意味する。 【0159】ACRには、マイクロコード命令movci, m
ovtcおよびmovfc によりアクセスすることができる。図
22に、ACRがより詳細に図示される。詳細について
はセクション2.4.5.2,算術演算制御レジスタ
(ACR)を参照のこと。 【0160】セクション2.3.3 例外ステータス・
レジスタ(ESR) 例外ステータス・レジスタ(ESR)332は、すべて
の保留中の例外の発生を記録する。アソシエーション・
エンジン例外モデルは、フラットであり(例外処理はネ
ストされない;すなわち一度に1つの例外しか処理され
ない)、優先順位をつけられている(優先度の高い例外
は、より低い優先度をもつ例外よりも先に処理され
る)。ホストによりこのレジスタが読まれるたびに、そ
の内容はクリアされる。セクション2.4.5.3,例
外ステータス・レジスタに説明されているrte 命令によ
るビットのクリアと比較されたい。表2.8にESRに
関するより詳細な情報が示される。 【0161】SVEビットは、スケーラ・エンジン内で
オーバーフロー例外がいつ起こったかを示す。VVEビ
ットは、ベクタ・エンジンでいつオーバーフロー例外が
起こったかを示す。すなわち、64の処理要素のいずれ
かでオーバーフローが起こると、このビットがセットさ
れる。 【0162】SDEビットは、スケーラ・エンジン内で
ゼロによる除算例外がいつ起こったかを示す。VDEビ
ットは、ベクタ・エンジン内でゼロによる除算例外がい
つ起こったかを示す。VVEビットと同様に、VDEビ
ットは、64個の処理要素すべてのゼロによる除算ステ
ータスを反映する。64個の処理要素のいずれかでゼロ
による除算が起こると、VDEビットがセットされる。 【0163】PCEビットは、PC制限超過例外がいつ
起こったかを示す。PC制限超過例外は、プログラム・
カウンタ(PC)の内容がPC境界レジスタ(PBR)
よりも大きいときに起こる。 【0164】IOEビットは、不当なオペコードがアソ
シエーション・エンジンによりいつ実行されたかを示
す。 【0165】PEEビットは、ポート・エラー例外がい
つ起こったかを示す。可能性のあるポート・エラー例外
は、セクション3.6.4.5,複数ポート割込エラー
例外と、表3.6のポート・エラー例外に示される。 【0166】ICEビットは、命令に基づくIDR競合
がいつ起こったかを示す。この条件は、外部ストリーム
・ライトがIDRをロードしようとすると同時に、vsto
re,vwritel またはwritel命令が実行されたときに起こ
る。これも、ポート・エラー例外の1つと見なされる。
起こりうるポート・エラー例外は、セクション3.6.
4.5,複数ポート割込エラー例外と、表3.6のポー
ト・エラー例外に示される。 【0167】例外処理の詳細な説明については、セクシ
ョン3.6.4,アソシエーション・エンジン例外モデ
ルを参照のこと。ESRは、読み込み専用レジスタで、
マイクロコード命令movfc によってアクセスすることが
できる。ESRは、図23により詳細に図示される。 【0168】セクション2.3.4 例外マスク・レジ
スタ(EMR) 例外マスク・レジスタ(EMR)334は、アソシエー
ション・エンジンの例外条件を選択的にイネーブル(お
よびディスエーブル)にすることができる。例外がマス
ク・オフされると、対応する例外ルーチンは呼び出され
ない。表2.9にEMRに関するより詳細な情報が示さ
れる。 【0169】VVEMビットがセットされると、ベクタ
・エンジン内にオーバーフロー条件があっても例外が起
きない(すなわち例外処理が起こらない)。ベクタ・オ
ーバーフローは、各処理要素のVPCRのVVビットに
より表され、ESRのVVEビットにより全体が表され
る。デフォルトではVVEMはクリアであり、これはベ
クタ・エンジンにオーバーフロー条件があるときに例外
処理が行われることを意味する。 【0170】SDEMビットは、スケーラ・エンジン内
のゼロによる除算条件によりプログラムの流れに変更が
起こるか否かを決める。SDEMビットがセットされて
いると、スケーラ・エンジンにゼロによる除算条件が起
こっても、例外処理は行われない。デフォルトではSD
EMはクリアであり、これはスケーラ・エンジンにゼロ
による除算条件があるときに例外処理が行われることを
意味する。 【0171】VDEMビットは、ベクタ・エンジン内の
ゼロによる除算条件によりプログラムの流れに変更が起
こるか否かを決める。VDEMビットがセットされる
と、ベクタ・エンジンにゼロによる除算条件が起こって
も、例外処理は行われない。デフォルトではVDEMは
クリアであり、これはベクタ・エンジンにゼロによる除
算条件があるときに例外処理が行われることを意味す
る。 【0172】PCEMビットは、PC制限超過により例
外処理が行われるか否かを決める。デフォルトではPC
EMはクリアであり、これはPC制限超過により例外処
理が行われることを意味する。PC制限超過は、「致命
的に近い」動作条件と見なされるので、このビットは常
にクリアにしておくことを強く勧める。 【0173】IOEMビットは、命令ストリームに不当
なオペコードがある場合に例外処理が行われるか否かを
決める。デフォルトでは、IOEMはクリアであり、こ
れは不当なオペコード条件があると例外処理が行われる
ことを意味する。このビットがセットされると、不当な
オペコードは単純に見過ごされて、例外処理は起こらな
い。 【0174】PEEMビットは、ポート・エラー(ラン
・モード中)により例外処理が行われるか否かを決め
る。デフォルトでは、PEEMはクリアであり、これは
すべてのポート・エラーによりポート・エラー例外ルー
チンが実行されることを意味する。PEEMがセットさ
れると、すべてのポート・エラーは無視される。これは
勧められない。 【0175】ICEMビットは、命令に基づくIDR競
合により例外処理が行われるか否かを決める。デフォル
トではICEMはクリアであり、すべての命令に基づく
IDR競合により命令に基づくIDR競合例外ルーチン
が実行されることを意味する。ICEMがセットされる
と、すべての命令に基づくIDR競合は無視される。 【0176】EMRには、マイクロコード命令movci, m
ovtcおよびmovfc によりアクセスすることができる。詳
細についてはセクション2.4.5.4,例外マスク・
レジスタ(EMR)を参照のこと。EMRは図24に、
より詳細に図示される。 【0177】セクション2.3.5 処理要素選択レジ
スタ(PESR) 処理要素選択レジスタ(PESR)220は、すべての
下向きシフト命令(drotmov, dsrot, dadd, daddp, dmi
n, dminp, dmaxおよびdmaxp )の間に用いられる。PE
SRに含まれる値により、どの処理要素が処理要素#0
にラップするデータを供給するかが示される。本質的に
は、PESRはシフト・チェーンの終点を表す。このレ
ジスタのデフォルト値は$3Fであり、すべての処理要
素が下向きシフト動作に用いられることを示す。 【0178】PESRには、マイクロコード命令movci,
movtcおよびmovfc によりアクセスすることができる。
詳細については、セクション2.4.5.5,処理要素
選択レジスタ(PESR)を参照のこと。PESRは図
25に、より詳細に図示される。 【0179】 セクション2.3.6 ポート制御レジスタ(PCR) ポート制御レジスタ(PCR)52は、ラン・モード
(R/反転S=1)中にアソシエーション・エンジン内
をどのようにデータが流れるか、またラン・モード中に
入力データ・レジスタがどのように充てんされるかを制
御する。PCRは図26に、より詳細に図示される。表
2.10に、PCRに関するより詳細な情報を示す。 【0180】ラン・モード(R/反転S=1)では、こ
のレジスタの最初の4ビット(NT70,ET68,S
T66,WT64)はタップ・ビットであり、あるポー
トに書き込まれた情報を入力データ・レジスタ(ID
R)に送るか否かを制御する。データが外部デバイスに
よりラン・モード中にポートの1つに書き込まれて、そ
のポートのタップ・ビットがセットされている場合は、
そのポートに書き込まれたデータはIDRにも書き込ま
れる。 【0181】ラン・モード(R/反転S=1)では、2
個のスイッチ・ビット(NSS74,EWS)72が、
あるポートに書き込まれた情報を対向ポートに書き込む
か否かを制御する。たとえばNSS=1で、データがノ
ース・ポートにストリーミングされると、そのデータは
1クロック後にサウス・ポートからストリーミング・ア
ウトされる。同様にNSS=1で、データがサウス・ポ
ートにストリーミングされると、そのデータは1クロッ
ク後にノース・ポートからストリーミング・アウトされ
る。 【0182】ノース−サウス・スイッチが閉であり、ノ
ース・タップとサウス・タップが両方とも閉であって、
データがノース・ポートに書き込まれると、複写データ
はIDRには書き込まれない(すなわちノース・ポート
に書き込まれたデータは、スイッチを通じ、サウス・タ
ップを通りIDRまで進まない)。 【0183】タップおよびスイッチの設定は、ラン・モ
ード(R/S=1)のときしか有効でない。アソシエー
ション・エンジンが停止されると(R/反転S=0)、
反転ROW,反転COLおよび反転EN信号およびアド
レス情報によりデータのソース/デスティネーションが
決まる。 【0184】充てんモード・ビット(FM)76は、ラ
ン・モード中にどのようにIDRが充てんされるかを制
御する。FM=0のときは、入力インデックス付けが用
いられてIDRを充てんする。入力インデックス付けを
用いてIDRを充てんする際には、IPRおよびILM
Rにより、入力データがどこに記憶されるかが決まり、
ICRによりいくつのバイトが記憶されるかが決まり、
IORによりブロードキャストされている入力データが
いつ受け取られるかが決まる。図27は、入力インデッ
クス付けを実現するために用いられるレジスタを示す。 【0185】FM=1のときは、入力タグ付けが用いら
れる。入力タグ付けは、IPRおよびILMRを用い
て、入力データをどこに記憶するかを決め、ICRがい
くつのバイトが記憶されるかを決め、ITRはブロード
キャストされている入力データがいつ受け入れられるか
を決める。図28は、入力タグ付けを実現するために用
いられるレジスタを示す。 【0186】ラン・モードにある場合、データはチップ
からチップへと、ブロードキャストデータ転送を用いて
伝送されることに留意されたい。またこれらの転送のデ
スティネーションは常にIDRである。 【0187】入力インデックス付けおよび入力タグ付け
に関する説明は、セクション3.5.2.1,入力イン
デックス付けとセクション3.5.2.3,入力タグ付
けにある。 【0188】PCRには、マイクロコード命令movci, m
ovtcおよびmovfc によりアクセスすることができる。詳
細は、セクション2.4.5.6,ポート制御レジスタ
(PCR)を参照のこと。 【0189】セクション2.3.7 アソシエーション
・エンジン・ポート・モニタ・レジスタ(APMR) アソシエーション・エンジン・ポート・モニタ・レジス
タ(APMR)336は、アソシエーション・エンジン
内のポート・エラー例外の原因を決めるために用いられ
る。ESRのPEEビットがセットされているとき、こ
れらのビットによりポート・エラー例外の原因が記述さ
れる。表2.10は、APMRに関するより詳細な情報
を示す。 【0190】このレジスタの最初の4ビット(EW,E
S,EE,EN)は、エラー条件が起こったときにデバ
イスを通じたラン・モード・ライトが進行中であるか否
かを示す(ポート・エラー例外はラン・モード中にしか
起こらないことに注意)。最後の4ビット(IW,I
S,IE,IN)は、エラー条件が起こったときにマイ
クロコード・ライトが進行中であるか否かを示す。 【0191】図30にポート・エラー例が図で示され
る。 【0192】エラー・コードの説明については、セクシ
ョン3.6.4.4,ポート・エラー例外およびセクシ
ョン3.6.4.5,複数ポート・エラー例外を参照の
こと。 【0193】APMRは、読み込み専用レジスタであ
り、マイクロコード命令movfc によりアクセスすること
ができる。詳細についてはセクション2.4.5.7,
アソシエーション・エンジン・ポート・モニタ・レジス
タ(APMR)を参照のこと。APMRは図29により
詳細に図示される。 【0194】セクション2.3.8 汎用ポート・レジ
スタ(GPPR) 汎用ポート・レジスタ(GPPR)338は、汎用方向
レジスタ(GPDR)と共に用いられて、PA[1:
0]信号ピンの状態を決める。PA[1:0]は、基本
的には2ビットのパラレルI/Oポートである。このレ
ジスタは、この2ビットのパラレルI/Oポートに対す
るインターフェースとして機能し、ホストにより用いら
れてシステム全体のパラメータ値を決めることも、ある
いはアソシエーション・エンジンにより用いられて状態
情報を示すこともできる。このレジスタは反転RESE
T信号により変更されない。 【0195】GPPRには、マイクロコード命令movci,
movtcおよびmovfc によりアクセスすることができる。
詳細については、セクション2.4.5.8,汎用ポー
ト・レジスタ(GPPR)を参照のこと。GPPRは、
図31により詳細に図示される。 【0196】 セクション2.3.9 汎用方向レジスタ(GPDR) 汎用方向レジスタ(GPDR)340は、汎用ポート・
レジスタ(GPPR)と共に用いられて、PA[1:
0]信号ピンの状態を決める。このレジスタは、各信号
ピンの方向を制御する。これらのビットの定義について
は表2.12を参照のこと。このレジスタのデフォルト
(またはリセット)条件は、リセット時に$00にセッ
トされるが、これはPA[1:0]信号が入力として動
作することを示す。 【0197】GPDRには、マイクロコード命令movci,
movtcおよびmovfc によりアクセスすることができる。
詳細についてはセクション2.4.5.9,汎用方向レ
ジスタ(GPDR)を参照のこと。GPDRは、図32
により詳細に図示される。 【0198】 セクション2.3.10 IDRポインタ・レジスタ IDRポインタ・レジスタ(IPR)132は、ラン・
モード(R/反転S=1)中にIDRをブロードキャス
ト動作にアドレスするために用いられる。このレジスタ
に含まれる値は、ブロードキャスト転送が開始されたと
きに転送される開始IDRロケーションを示す。IPR
は、0(IDRの第1ロケーション)から63(IDR
の最終ロケーション)までの値をもつ。このレジスタの
リセット時の値は0であり、ラン・モード中にデータを
受け取る最初のIDRロケーションがIDR[0]であ
ることを示す。 【0199】IPRレジスタは、IPRレジスタの内部
バージョンにより隠されている。このシャドウ・レジス
タにより、IPRで特定された初期値が修正されないま
ま残ることになり、IPRシャドウ・レジスタ内の値が
修正されてデータをIDRに入れる。IPRシャドウ・
レジスタの内容は、IDRにデータがロードされるたび
に増分される。シャドウ・レジスタがいくつまで増分さ
れるかは、ILMRレジスタの内容により決まる。 【0200】IPRシャドウ・レジスタは、以下の条件
下でIPRからロードされる: 1.レジスタがロードされたとき; 2.done命令が実行されたとき; 3.IDRCアドレッシング・モードが用いられたと
き;および 4.反転RESET信号がトグルされたとき(1−>0
−>1)。 【0201】IDRCをベクタ命令のソース・オペラン
ドとして指定すると、IDRの内容をベクタ・ソースと
して用いる場合と同様に、IDRの有効ビットがクリア
される。可能なベクタ・レジスタ・ソースのリストは表
2.36を参照のこと。 【0202】ハードウェア上の制約:IDRの境界を越
えて書き込もうとしたり、IPRシャドウ・レジスタを
通常の方法で増分して$3fを越えると、「IDRは満
杯」ということを示す内部フラッグがセットされる。I
DRに対するその後のラン・モード・ライト(writel,
vwritel または外部ライトによる)はすべて無視され
る。このフラッグは、done命令が実行されるたび、ID
RCアドレッシング・モードが用いられるたび、あるい
は反転RESET信号がアサートされるたびにクリアさ
れる。 【0203】IPRはホスト・モード・ストリーミング
動作に用いられるOAR1レジスタと同様である。IL
MRがどのようにIDR入力インデックス付けに影響を
与えるかについてはセクション3.5.2.2を参照の
こと。図33にIPRをより詳細に図示する。 【0204】IDR,IPR,ICR,ILMRがラン
・モード入力インデックス付けの間にどのように協働す
るかの説明については、セクション2.3.6,ポート
制御レジスタ(PCR)のFMビットの説明を参照のこ
と。IPRには、マイクロコード命令movci, movtcおよ
びmovfc によりアクセスすることができる。詳細はセク
ション2.4.5.10,IDRポインタ・レジスタ
(IPR)を参照のこと。 【0205】セクション2.3.11 IDRカウント
・レジスタ(ICR) IDRカウント・レジスタ(ICR)136は、ラン・
モード(R/反転S=1)ストリーム・ライト動作中に
IDRにより受け入れられるバイト数を決定するために
用いられる。ICRは、0から63までの値をもつこと
ができ、0の値は1バイトがIDRに書き込まれること
を示し、63は64バイトがIDRに書き込まれること
を示す。IDRに0バイトをロードする必要がある場合
は、ポート制御レジスタ(PCR)のポート・タップを
開くことができる。ICRは入力インデックス付け(P
CR:FM=0)のときも入力タグ付け(PCR:FM
=1)のときも用いられる。リセット後のこのレジスタ
の値は63で、ラン・モード・ストリーム・ライトが開
始すると64バイトがIDRに受け入れられることを示
す。 【0206】ICRレジスタは、ICRレジスタの内部
バージョンにより隠されている。このシャドウ・レジス
タにより、ICRで特定された初期値が修正されないま
ま残ることになり、ICRシャドウ・レジスタ内の値が
修正されてデータをICRに入れる。ICRシャドウ・
レジスタの内容は、IDRにデータがロードされるたび
に減分される。シャドウ・レジスタがいくつまで減分さ
れるかは、ILMRレジスタの内容により決まる。 【0207】ICRシャドウ・レジスタは、以下の条件
下でICRからロードされる: 1.レジスタがロードされたとき; 2.done命令が実行されたとき; 3.IDRCアドレッシング・モードが用いられたと
き;および 4.反転RESET信号がトグルされたとき(1−>0
−>1)。 【0208】ハードウェア上の制約:IDRの境界を越
えて書き込もうとしたり、ICRシャドウ・レジスタを
通常の方法で減分して$00より小さくすると、「ID
Rは満杯」ということを示す内部フラッグがセットされ
る。IDRに対するその後のラン・モード・ライト(wr
itel, vwritel または外部ライトによる)はすべて無視
される。このフラッグは、done命令が実行されるたび、
IDRCアドレッシング・モードが用いられるたび、あ
るいは反転RESET信号がアサートされるたびにクリ
アされる。 【0209】ICRはホスト・モード・ストリーミング
動作に用いられるDCR1レジスタと同様である。シャ
ドウ・レジスタがいくつまで減分されるかは、ILMR
レジスタの内容により制御される。ILMRがIDRイ
ンデックスにどのように影響を与えるかについては、セ
クション3.5.2.2を参照のこと。 【0210】IDR,IPR,ICR,ILMRがラン
・モード入力インデックス付けの間にどのように協働す
るかの説明については、セクション2.3.6,ポート
制御レジスタ(PCR)のFMビットの説明を参照のこ
と。ICRには、マイクロコード命令movci, movtcおよ
びmovfc によりアクセスすることができる。詳細はセク
ション2.4.5.11,IDRカウント・レジスタ
(ICR)を参照のこと。ICRは、図34により詳細
に図示される。 【0211】セクション2.3.12 IDRロケーシ
ョン・マスク・レジスタ(ILMR) IDRロケーション・マスク・レジスタ(ILMR)1
34は、ラン・モード(R/反転S=1)中にデータが
どのようにIDRにロードされるかを決める。ランダム
・アクセス・モードでは、IDRポインタ・レジスタ
(IPR)は用いられない(IDRの各ロケーションは
それぞれ明確にアドレッシングしなければならない)。
ストリーム・ライト動作中はマスク・ビットが、どの内
部生成されたIDRアドレス・ビットが「無視される
(don't cared )」かを決める。ILMRは、ストリー
ム・ライト・データを受け取ったときにIDRポインタ
・レジスタ(IPR)がどれだけ増分するべきかを示す
指標としても機能する。 【0212】ILMRの動作を制御する2つの原則は、
次の通りである: ・ILMRのビットは内部生成されたアドレスに関して
「無視する」として機能する。すなわち、データはアド
レスが「無視される」ときに選択されたIDRロケーシ
ョンにロードされる。00110000のILMR値
は、IDRアドレスのビット4および5を無視するが、
これは同じビットがIDRロケーション0000000
0,00010000,00100000,00110
000に送られることを意味する。 ・IPRは、ILMRの最下位の「0」のロケーション
により増分される。すなわち、最下位の0がビット・ロ
ケーション0にあるとすると、データがIDRに入れら
れるたびに、IPRは20 または1だけ増分される。最
下位の0がビット・ロケーション3にあるとすると、I
PRはそのたびに8ずつ増分される。 【0213】ILMRを用いる例については、セクショ
ン3.5.2.2,ILMRを用いる例を参照のこと。
またラン・モード中のIDRのロードの詳細に関して
は、セクション2.3.6,ポート制御レジスタ(PC
R)を参照のこと。 【0214】ILMRにはマイクロコード命令movci, m
ovtcおよびmovfc によりアクセスすることができる。詳
細についてはセクション2.4.5.12,IDRロケ
ーション・マスク・レジスタ(ILMR)を参照のこ
と。ILMRは図35により詳細に図示される。 【0215】セクション2.3.13 IDR初期オフ
セット・レジスタ(IOR) 初期オフセット・レジスタ(IOR)130は、ラン・
モード専用レジスタ(R/反転S=1)で、IDRにデ
ータを入れる前にアソシエーション・エンジンが待たな
ければならない有効データの数(すなわちクロック・サ
イクルの数)のカウントを含む。たとえばIORに$0
Fが含まれるとすると、このデバイスは15個のデータ
を通過させて、16番目のデータがIPRおよびILM
Rによって指定されたロケーションにおいてIDRに入
れられる。このカウントが満足されると、このレジスタ
の内容は次のラン・モード・ストリーム・ライト動作ま
で無視される。 【0216】IORには、マイクロコード命令movci, m
ovtcおよびmovfc によってアクセスすることができる。
詳細についてはセクション2.4.5.13,IDR初
期オフセット・レジスタ(IOR)を参照のこと。IO
Rは図36に、より詳細に図示される。 【0217】セクション2.3.14 ホスト・ストリ
ーム選択レジスタ(HSSR) ホスト・ストリーム選択レジスタ(HSSR)100に
よりホストは、ストップ・モード(R/反転S=0)中
にストリーム・モード動作がアソシエーション・エンジ
ンにどこで、どのように影響を与えるかを定義すること
ができる。表2.13は、HSSRに関してより詳細な
情報を示す。 【0218】HSSRの最初の4ビット(LS[3:
0])は、アソシエーション・エンジン・データ転送の
どの論理空間がストリーム転送中にソースとなるか、あ
るいは書き込まれるかを選択するために用いられる。ス
トリーム・アクセス中にはアソシエーション・エンジン
に対して明確なアドレスが伝えられないので、アクセス
・アドレスはHSSRレジスタ,オフセット・アドレス
・レジスタ(OAR1,OAR2)および深さ制御レジ
スタ(DCR1,DCR2)により指定される。表2.
14は、LSビットにより定義されたロケーションを示
す。HSSRは、図37に、より詳細に図示される。 【0219】ホスト・ストリーム選択ポート・ビット
(HSP[1:0])は、ホスト・モード・ストリーム
動作中にデータがデバイスに、またはデバイスからどの
ように転送されるかを制御する。これらのビットは、ポ
ート制御レジスタ(PCR)内のスイッチおよびタップ
・ビットと同様の動作を行うが、ホスト・モード・アク
セスの間しか用いられない。これらのビットにより、ア
ソシエーション・エンジン・アレイのランタイム・コン
フィギュレーションを乱さずにホスト・モード転送を行
うことができる(スイッチおよびタップ・ビットにより
定義されたように)。 【0220】HSP[1:0]=00のとき、このデバ
イスは提示すべき情報がないかのように振舞う。HSP
ビットは、反転xCI/反転xCO制御ラインと協同し
て働き、これらの制御ラインがデータ転送に関して適切
な状態にあるときだけ、データが提示される。HSPビ
ットは、ノース・ポートに提示されたストリーム・リー
ド・データがサウス・ポートに提示されるか否かを制御
することも、ウェスト・ポートに提示されたストリーム
・リード・データがイースト・ポートに提示されるか否
かを制御することもしない。これは単に、このデバイス
から来たデータがどこに送られるかを制御する方法であ
る。 【0221】(デフォルト)HSP[1:0]=01の
とき、ホスト・ストリーム・データは、サウス・ポート
を通って転送される。ホスト・リード動作に関しては、
このデバイスはアクセスしたすべてのロケーションから
データをサウス・ポートに送る。ホスト・ライト・アク
セスに関しては、このデバイスはサウス・ポートからす
べてのデータを受け取る。 【0222】HSP[1:0]=10のとき、ホスト・
ストリーム・データは、イースト・ポートを通って転送
される。ホスト・リード動作に関しては、このデバイス
はアクセスしたすべてのロケーションからデータをイー
スト・ポートに送る。ホスト・ライト・アクセスに関し
ては、このデバイスはイースト・ポートからすべてのデ
ータを受け取る。 【0223】HSP[1:0]=11は、将来的な用途
のために確保されている。この符号化によりアソシエー
ション・エンジンはHSP[1:0]=00と同じよう
に機能するが、モトローラ社はこの符号化を任意のとき
に変更する権利を保有する(従ってHSP[1:0]=
00を用いて、HSP[1:0]=11には頼らないこ
と)。表2.15は、HSRビットに関するより詳細な
情報を示す。 【0224】セクション2.3.15 ホスト・ストリ
ーム・オフセット・レジスタ(HSOR) ホスト・ストリーム・オフセット・レジスタ(HSO
R)222は、ストップ・モード(R/反転S=0)中
のアソシエーション・エンジンに対するストリーム・ラ
イト・アクセスを制御するために用いられる。HSOR
は図38に、より詳細に図示される。この16ビットの
レジスタに含まれる値は、最初のデータがデバイスに到
着した時刻(反転xCIがアサートされてから1サイク
ル後)と、デバイスがそのデータを受け入れ始めた時刻
との間の遅延を示す。HSORは、DCRxレジスタと
共に働いて、データ・オフセットと、アソシエーション
・エンジンに書き込まれるストリームの期間の両方を制
御する。 【0225】たとえば、4つのアソシエーション・エン
ジン(図39に示されるようなHSORとDCR1の値
をもつ)と、20個のデータのストリームとがあるとす
ると、データは図39に示されるようにアソシエーショ
ン・エンジンに入れられる。 【0226】第2の例として、アソシエーション・エン
ジンによりデータが受け入れられる順序を再配置して、
チップの順序を再配置するように見せることもできる。
図40に示されるように、チェーン内の2つ以上のアソ
シエーション・エンジンが同じデータを受け取ることも
できる。 【0227】セクション2.3.16 ノース−サウス
保持レジスタ(NSHR) ノース−サウス保持レジスタ(NSHR)90には、ノ
ース・ポートとサウス・ポートとの間の最近のブロード
キャスト転送に関するステータスとデータとが含まれ
る。表2.16は、NSHRに関するより詳細な情報を
示す。NSHRは図41に、より詳細に図示される。N
SHRの内容は、ラン・モード(R/反転S=1)中に
ノース・ポートまたはサウス・ポートにデータが書き込
まれるたびに更新される。アソシエーション・エンジン
がストップ・モード(R/反転S=0)に入ると、この
レジスタにはノース・ポートとサウス・ポートとの間の
最新のラン・モード・ストリーム・ライトのステータス
が含まれる。このレジスタの内容は、ポート制御レジス
タ(PCR)のノース−サウス・スイッチ(NSS)が
閉(PCR:NSS=1)になり、ラン・モード中にデ
ータがノース・ポートまたはサウス・ポートのいずれか
に書き込まれると変更される。このレジスタの内容は、
PCRのノース・タップ(NT)およびサウス・タップ
(ST)の設定とは独立している。 【0228】NSHRは、NSS=0で、データがイー
スト・ポートまたはウェスト・ポートに書き込まれる場
合は変更されない。NSHRの内容も、PCRのNTま
たはSTの設定とは独立している。 【0229】NSHRのVビットは、NSHRのデータ
・バイトに有効な情報が含まれるか否かを示す。 【0230】DIRビットは、データの方向を表す。デ
ータが、マイクロコードwriten, writes, vwriten また
はvwrites の結果であると、このビットはどのポートか
らデータが書き込まれたかを示す。データがこのデバイ
スを通じて書き込まれた外部データの結果であると、こ
のビットはどのポートからデータが書き込まれたのかを
示す。 【0231】SRCビットは、NSHRに含まれるデー
タがマイクロコードwriten, writes, vwriten またはvw
rites の結果であるか否かを表す。このビットがセット
されていないと、データはこのデバイスを通じてポート
の1つに書き込まれた外部ライトの結果である。 【0232】セクション2.3.17 イースト−ウェ
スト保持レジスタ(EWHR) イースト−ウェスト保持レジスタ(EWHR)92に
は、イースト・ポートとウェスト・ポートとの間の最近
のブロードキャスト転送に関するステータスとデータと
が含まれる。表2.17は、EWHRに関するより詳細
な情報を示す。EWHRは図42に、より詳細に図示さ
れる。EWHRの内容は、ラン・モード(R/反転S=
1)中にイースト・ポートまたはウェスト・ポートにデ
ータが書き込まれるたびに更新される。アソシエーショ
ン・エンジンがストップ・モード(R/反転S=0)に
入ると、このレジスタにはイースト・ポートとウェスト
・ポートとの間の最新のラン・モード・ストリーム・ラ
イトのステータスが含まれる。このレジスタの内容は、
ポート制御レジスタ(PCR)のイースト−ウェスト・
スイッチ(EWS)が閉(PCR:EWS=1)にな
り、ラン・モード中にデータがイースト・ポートまたは
ウェスト・ポートのいずれかに書き込まれると変更され
る。このレジスタの内容は、PCRのイースト・タップ
(ET)およびウェスト・タップ(WT)の設定とは独
立している。 【0233】EWHRは、EWS=0で、データがイー
スト・ポートまたはウェスト・ポートに書き込まれる場
合は変更されない。EWHRの内容も、PCRのETお
よびWTの設定とは独立している。 【0234】EWHRのVビットは、EWHRのデータ
・バイトに有効な情報が含まれるか否かを示す。 【0235】DIRビットは、データの方向を表す。デ
ータが、マイクロコードwritee, writew, vwritee また
はvwritew の結果であると、このビットはどのポートか
らデータが書き込まれたかを示す。データがこのデバイ
スを通じて書き込まれている外部データの結果である
と、このビットはどのポートからデータが書き込まれた
かを示す。 【0236】SRCビットは、EWHRに含まれるデー
タがマイクロコードwritee, writew, vwritee またはvw
ritew (および内部ライト)の結果であるか、データが
このデバイスを通じてポートの1つに書き込まれた外部
ライトの結果であるか否かを表す。 【0237】セクション2.3.18 オフセット・ア
ドレス・レジスタ#1(OAR1) オフセット・アドレス・レジスタ#1(OAR1)96
は、ストップ・モード(R/反転S=0)ストリーム・
アクセス中に用いられて、HSSRのLS[3:0]に
より定義される論理空間に関する開始内部アドレスを示
す。図43に、OAR1をより詳細に図示する。 【0238】OAR1は、OAR1の内部バージョンに
より隠されている。このシャドウ・レジスタにより、O
AR1内で指定された初期値は修正されずに残り、OA
R1シャドウ・レジスタの値が修正されてアソシエーシ
ョン・エンジンにデータを入れる。OAR1シャドウ・
レジスタの内容は、データがアソシエーション・エンジ
ン内にロードされるたびに増分される。 【0239】OAR1シャドウ・レジスタは、以下の条
件下でOAR1からロードされる: 1.レジスタがロードされたとき; 2.アソシエーション・エンジンがストリーム・アクセ
スのために選択されたとき; 3.反転RESET信号がトグルされたとき(1−>0
−>1)。 【0240】一次元アレイには、入力データ・レジスタ
(IDR),入力タッグ・レジスタ(ITR),命令キ
ャッシュ(IC),ベクタ・データ・レジスタ(V
[0]〜V[7])およびベクタ・プロセス制御レジス
タ(VPCR)が含まれる。 【0241】OAR1は、二次元アレイ内でストリーム
・モード・アクセスを実行する際にも用いられる。この
場合は、アレイの第1次元にインデックス(列インデッ
クス)するために用いられる。唯一の二次元アレイは、
係数メモリ・アレイ(CMA)である。 【0242】セクション2.3.19 深さ制御レジス
タ#1(DCR1) 深さ制御レジスタ#1(DCR1)97の内容は、すべ
ての一次元および二次元アレイに対するストップ・モー
ド(R/反転S=0)ストリーム・アクセス中に用いら
れる。内部アドレス生成論理がDCR1の内容を用い
て、ストリーム転送に関して転送されるバイト数(HS
SRのLS[3:0]により定義される論理空間の1
つ)を決定する。DCR1は図44に、より詳細に図示
される。 【0243】DCR1は、DCR1の内部バージョンに
より隠されている。このシャドウ・レジスタにより、D
CR1内で指定された初期値は修正されずに残り、DC
R1シャドウ・レジスタの値が修正されてアソシエーシ
ョン・エンジンにデータを入れる。DCR1シャドウ・
レジスタの内容は、データがアソシエーション・エンジ
ン内にロードされるたびに減分される。 【0244】DCR1シャドウ・レジスタは、以下の条
件下でDCR1からロードされる: 1.レジスタがロードされたとき; 2.アソシエーション・エンジンがストリーム・アクセ
スのために選択されたとき; 3.反転RESET信号がトグルされたとき(1−>0
−>1)。 【0245】一次元アレイに関してこのレジスタは、制
御がアソシエーション・エンジン・チェーンの次のアソ
シエーション・エンジンに渡される前に、ストリーミン
グ動作中に書き込まれるあるいは読み出されるロケーシ
ョンの数を制御する。DCR1は1だけオフセットされ
るので、DCR1=0は正確に1バイトをストリーミン
グして、DCR1=63で64バイトがストリーミング
される。ストリーミング動作にアソシエーション・エン
ジンを関与させないようにするには、HSSR:SHP
[1:0]=00をセットする。 【0246】ランダム・アクセス・マップ全体をストリ
ーミングする際には、有用なレジスタがないマップのホ
ールをスキップする。そのため、DCR1+OAR1
は、マップ・ケース全体の終了アドレスに常に等しいと
は限らない。スキップされるアドレスは、表2.18に
リストアップされている。 【0247】このレジスタのリセット値は$14FFで
あり、この値はDCR1がストリーミング動作の行われ
る前に変更されなければ、このアソシエーション・エン
ジンが、ランダム・アクセス・マップから未使用のロケ
ーションを減じたサイズに等しいバイトのストリームを
受け入れるかあるいは供給することを示す。 【0248】一次元アレイには、入力データ・レジスタ
(IDR),入力タッグ・レジスタ(ITR),命令キ
ャッシュ(IC),ベクタ・データ・レジスタ(V
[0]〜V[7])およびベクタ・プロセス制御レジス
タ(VPCR)が含まれる。 【0249】DCR1は、二次元アレイ内にストリーム
・モード・アクセスを実行する際にも用いられる。この
場合は、DCR1は各行に入れられるエントリ数を制御
するために用いられる。唯一の二次元アレイは、係数メ
モリ・アレイ(CMA)である。 【0250】ストップ・モード(R/反転S=0)スト
リーミング動作に関しては、次の場合に反転xCO信号
がアサートされる:すなわち1)DCR1およびDCR
2により指定されたデータ数が転送されたとき;または
2)内部アドレス発生器がHSSR:LS[3:0]に
より定義された空間を越えてストリーミングしようとす
るとき。 【0251】セクション2.3.20 オフセット・ア
ドレス・レジスタ#2(OAR2) 二次元アレイのアドレッシングについてのみ用いられる
オフセット・アドレス・レジスタ#2(OAR2)98
は、OAR1レジスタと共に、ホスト・モード(R/反
転S=0)ストリーム・アクセス中に書き込まれるある
いは読み出される第1行ロケーションを制御する。この
レジスタのリセット値は$0であり、この値はこのレジ
スタがストリーム動作が行われる前に変更されない場
合、CMAに対するストリーム・アクセスが第1行(行
#0)から始まることを示す。このレジスタの最大値は
63($3F)であり、これはCMAが最大(そして唯
一)の二次元アレイであり、y方向には64ロケーショ
ンしかないためである。$3Fより大きな値がこのレジ
スタに書き込まれると、モジューロ64値となる。 【0252】OAR2は、OAR1の内部バージョンに
より隠されている。このシャドウ・レジスタにより、O
AR2内で指定された初期値は修正されずに残り、OA
R2シャドウ・レジスタの値が修正されてアソシエーシ
ョン・エンジンにデータを入れる。OAR2シャドウ・
レジスタの内容は、データがアソシエーション・エンジ
ン内にロードされるたびに増分される。OAR2は図4
5に、より詳細に図示される。 【0253】OAR2シャドウ・レジスタは、以下の条
件下でOAR2からロードされる: 1.レジスタがロードされたとき; 2.アソシエーション・エンジンがストリーム・アクセ
スのために選択されたとき; 3.反転RESET信号がトグルされたとき(1−>0
−>1)。 【0254】OARxおよびDCRxは、ストップ・モ
ード専用レジスタであり、ラン・モード動作中は用いら
れないことに注意すること。 【0255】セクション2.3.21 深さ制御レジス
タ#2(DCR2) 二次元アレイについてのみ用いられる深さ制御レジスタ
#2(DCR2)99は、DCR1レジスタと共に、制
御がチェーン内の次のアソシエーション・エンジンに渡
される前のストリーミング動作中に、書き込まれるある
いは読み出すことのできる二次元アレイのロケーション
数を制御する。このレジスタのリセット値は$3Fまた
は63であり、この値はこのレジスタがCMAに対する
ストリーム転送が行われる前に変更されない場合、CM
Aの64行すべて(1つの列の)がアクセスされること
を示す。反転xCO信号をアサートすることにより、制
御はアソシエーション・エンジン・チェーン内の次のア
ソシエーション・エンジンに渡される。DCR2は1だ
けオフセットされているので、DCR2=0により、C
MAの1行がアクセスされることに留意されたい。DC
R2は図46に、より詳細に図示される。 【0256】ストップ・モード(R/反転S=0)スト
リーミング動作に関しては、次の場合に反転xCO信号
がアサートされる:すなわち1)DCR1およびDCR
2により指定されたデータ数が転送されたとき;あるい
は2)内部アドレス発生器がHSSR:LS[3:0]
により定義された空間を越えてストリーミングしようと
するとき。 【0257】ストップ・モード(R/反転S=0)で
は、OAR1,DCR1,OAR2およびDCR2は、
ストリーム転送の開始時のレジスタを隠すために転送さ
れる(アソシエーション・エンジンの反転ROWおよび
反転COLが選択されたとき)。これらのシャドウ・レ
ジスタに含まれる値は、アソシエーション・エンジンの
選択が解除されるまで用いられる。言い換えれば、OA
RレジスタまたはDCRレジスタがストリーム動作中に
修正されても、現在の転送が終了して新しいストリーム
動作が開始されるまでは、この変更は反映されない。 【0258】DCR2は、DCR2の内部バージョンに
より隠されている。このシャドウ・レジスタにより、D
CR2内で指定された初期値は修正されずに残り、DC
R2シャドウ・レジスタの値が修正されてアソシエーシ
ョン・エンジンにデータを入れる。DCR2シャドウ・
レジスタの内容は、データがアソシエーション・エンジ
ン内にロードされるたびに減分される。 【0259】DCR2シャドウ・レジスタは、以下の条
件下でDCR2からロードされる: 1.レジスタがロードされたとき; 2.アソシエーション・エンジンがストリーム・アクセ
スのために選択されたとき; 3.反転RESET信号がトグルされたとき(1−>0
−>1)。 【0260】OARxおよびDCRxは、ストップ・モ
ード専用レジスタであり、ラン・モード動作中は用いら
れないことに注意すること。 【0261】OAR1,DCR1,OAR2およびDC
R2がストリーム・アクセス・モード中にどのように用
いられるかについては、セクション3.5.1.2,ホ
スト・ストリーム・アクセス・モードを参照のこと。 【0262】セクション2.3.22 割込ステータス
・レジスタ#1(ISR1) 割込ステータス・レジスタ#1(ISR1)342は、
ホストにより用いられて、アソシエーション・エンジン
により生成された流れに関する割込の原因を決定するこ
とができる。ISR1のビットは、割込マスク・レジス
タ#1(IMR1)のビットと、1対1の対応を有す
る。ISR1のビットは、対応する(IMR1)ビット
の状態に関わらずにセットされる。これによりホスト
は、外部割込を発生させずに条件を調べる(ポーリング
する)ことができる。ISR1がホストに読まれると、
すべてのビットがクリアになる。このように、ISR1
には最後のリード以降のステータス変更が含まれる。I
SR1は図47に、より詳細に図示される。表2.19
は、ISR1に関するより詳細な情報を示す。 【0263】SVIビットがセットされた場合は、スケ
ーラ・エンジン内のマイクロコード算術演算動作がオー
バーフローを起こした。 【0264】VVIビットがセットされた場合は、ベク
タ・エンジン内のマイクロコード算術演算動作がオーバ
ーフローを起こした。 【0265】SDIビットがセットされた場合は、スケ
ーラ・エンジン内のマイクロコード算術演算動作がゼロ
による除算を起こした。 【0266】VDIビットがセットされた場合は、ベク
タ・エンジン内のマイクロコード算術演算動作がゼロに
よる除算を起こした。 【0267】PCIビットがセットされた場合は、プロ
グラム・カウンタ(PC)がその境界を越えて、マイク
ロシーケンサがデータ空間での実行を開始した。このメ
カニズムは、マイクロプロセッサ・メモリ管理ユニット
のページ例外と同様である。 【0268】IOIビットがセットされた場合は、不当
オペコードが命令ストリーム内に検出された。 【0269】PEIビットがセットされた場合は、ポー
ト動作中にエラーが検出された。ポート・エラーの原因
を判定するには、アソシエーション・エンジン・ポート
・モニタ・レジスタ(APMR)を読まねばならない。 【0270】ICIビットがセットされた場合は、命令
に基づくIDR競合が起こった。この競合は、外部スト
リーム・ライトがIDRにロードしようとすると同時に
vstore, vwritel またはwritel命令が実行されると起こ
る。 【0271】このレジスタに含まれるビット値は、アソ
シエーション・エンジン割込マスク・レジスタ#1(I
SR1)に含まれるビット値と共に、外部割込がいつ発
生されるか、また発生されるか否かを最終的に決定す
る。 【0272】セクション2.3.23 割込マスク・レ
ジスタ#1(IMR1) 割込マスク・レジスタ#1(IMR1)344は、割込
ステータス・レジスタ#1(ISR1)と共に、外部割
込をイネーブルにする、あるいはディスエーブルにする
働きをする。内部条件により、ISR1でビットがセッ
トされて、IMR1の対応ビット(群)がセットされる
と、外部割込が発生する。IMR1は図48により詳細
に図示される。表2.209にIMR1に関するより詳
細な情報が示される。 【0273】SVIMがセットされると、スケーラ・エ
ンジン・オーバーフローにより外部割込は発生しない。 【0274】VVIMがセットされると、ベクタ・エン
ジン・オーバーフローにより外部割込は発生しない。 【0275】SDIMがセットされると、スケーラ・エ
ンジンのゼロによる除算により外部割込は発生しない。 【0276】VDIMがセットされると、ベクタ・エン
ジンのゼロによる除算により外部割込は発生しない。 【0277】PCIMビットがセットされると、PC制
限超過により外部割込は発生しない。逆に、PCMビッ
トがセットされると、PC制限超過により外部割込が発
生する。 【0278】IOIMビットがセットされると、不当オ
ペコードにより外部割込は発生しない。 【0279】PEIMビットがセットされると、ポート
のエラーにより外部割込は発生しない。PEIMビット
がセットされていない場合は、ポートに関するエラーが
あると外部割込が発生する。PEIMビットのデフォル
ト設定値は0である。外部割込を起こす可能性のあるポ
ート条件のリストは、表3.6にある。 【0280】ICIMビットがセットされると、命令に
基づくIDR競合により外部割込は発生しない。ICI
Mビットがクリアされると、命令に基づくIDR競合に
より外部割込が発生する。外部ストリーム・ライトがI
DRにロードしようとすると同時にvstore, vwritel ま
たはwritel命令が実行されると、この条件が起こる。セ
クション2.3.24 割込ステータス・レジスタ#2
(ISR2) 割込ステータス・レジスタ#2(ISR2)346は、
ホストにより用いられて、スケーラ・エンジンまたはベ
クタ・エンジンの算術演算動作により割込条件が発生し
たか否かを判定することができる。このレジスタは、割
込マスク・レジスタ#2(IMR2)と共に、外部割込
が発生するか否かを最終的に決める。ISR2は図49
に、より詳細に図示される。表2.21および表2.2
2は、ISR2に関するより詳細な情報を示す。 【0281】このレジスタのビットがアソシエーション
・エンジンの特定の例外条件に対応しても、割込条件は
例外条件に直交する点に留意されたい。 【0282】HLTIビットがセットされると、halt命
令が実行された。 【0283】intr#n命令が実行されると、SI[2:
0]ビットがセットされる。intr#6ソフトウェア割込
は、SI[2:0]=110をセットする。 【0284】セクション2.3.25 割込マスクレジ
スタ#2(IMR2) 割込マスク・レジスタ#2(IMR2)348により、
ホストはベクタおよびスケーラ算術演算割込のマスキン
グを行うことができる。IMR2のビットがセットされ
ると、対応する割込条件があっても外部割込は発生しな
い。同様に、IMR2内のクリアなビットそれぞれにつ
いて、対応する条件により外部割込が発生する。IMR
2は図50に、より詳細に図示される。表2.23およ
び表2.24はIMR2に関するより詳細な情報を示
す。 【0285】HLTMビットがセットされると、halt命
令が実行されても外部割込は発生しない。逆にHLTM
ビットがセットされると、halt命令の実行により外部割
込が発生する。 【0286】SIM[2:0]ビットにより、ある範囲
のソフトウェア割込をマスクオフすることができる。優
先順位の最も高いソフトウェア割込は、ソフトウェア割
込#7であり、これは命令intr#7により発生する。優先
順位の最も低いソフトウェア割込は、ソフトウェア割込
#1で、命令intr#1により発生する。 【0287】セクション2.3.26 マイクロシーケ
ンサ制御レジスタ(MCR) マイクロシーケンサ制御レジスタ(MCR)188は、
マイクロコード・シーケンサにより命令がどのように、
いつ発行されるかを制御する。MCRは図51に、より
詳細に図示される。表2.25および表2.26は、M
CRに関するより詳細な情報を示す。 【0288】SSビットにより、1つの命令がマイクロ
シーケンサにより実行される。SSビットの状態は、各
命令の開始時に調べられる。SSの状態が命令実行中に
変化すしても、その影響は次の命令の開始まで起こらな
い。各命令が実行された後で、PCが増分され、反転B
USY信号がアクティブにセットされる。次の命令は、
R/反転S信号が1−>0−>1からトグルするまで実
行されない。 【0289】RSAビットは、ホストにより用いられ
て、アソシエーション・エンジンを既知の状態にリセッ
トすることができる。このビットの設定値は、係数メモ
リ(CMA)をクリアしたり、命令キャッシュ(IC)
に影響を与えることはない。このビットの設定値と、re
start 命令の動作とを比較されたい(異なっている)。 【0290】STKFビットは、CMA内のスタックの
状態を示す。スタックが空の場合は、このビットは1の
値をもつ。CMAスタックに少なくとも1つの有効なリ
ターン・アドレスがあると、STKFは0の値をもつ。 【0291】FLSFビットは、FLSレジスタが現在
有効なリターン・アドレスをもっているか否かを示す。
もっている場合は、FLSFビットは1で、もっていな
ければ0になる。 【0292】RELFビットは、repeate ループが開始
されたか否か、またアクティブであると考えられるか否
かを示す。開始された場合はRELFビットは1で、開
始されていなければ0になる。 【0293】RPLFビットは、repeatループが開始さ
れたか否かを示す。開始された場合はRPLFビットは
1で、開始されていなければ0になる。 【0294】ILFビットは、マイクロシーケンサ内の
命令の実行を制御する。このビットがセットされている
とき、マイクロシーケンサは、事実上ディスエーブルで
あり、R/反転S信号をトグルしてもPCは進まない。
doneまたはhalt命令が単一ステップ・モード中に実行さ
れると、アソシエーション・エンジンによりILFビッ
トがセットされる。これにより、異なるコード・サイズ
をもつ複数のアソシエーション・エンジンが単一ステッ
プ中でも同期することができる。このビットがセットさ
れている間は、アソシエーション・エンジンは、依然と
して、IDRにデータを受け入れて、ポート間で転送す
ることができる。別の命令を実行するには、ILFをク
リアしなければならない。 【0295】FLSの動作と、FLSFおよびSTKF
ビットとのスタックは、図52に示される例でより明確
になる。 【0296】コード・ブロック#1が実行されていると
きは、FLSは空である(FLSFビットが0のため)
と見なされ、スタックにはリターン・アドレスは含まれ
ない。 【0297】bsr2 C2が実行されると、$0042(b
sr C2命令に従うアドレス)がFLSに入れられ、P
CはラベルC2のアドレスにセットされる。 【0298】bsr C3が実行されると、$0082がス
タック上に入れられる。STKFビットは、スタック上
のリターン・アドレスのLSビット位置を取り込み、そ
れによりスタック上の実際の値は$0083となる。P
CはラベルC3のアドレスにセットされる。 【0299】bsr C4が実行されると、$00a2がス
タック上に入れられる。STKFビットは、スタック上
のリターン・アドレスのLSビット位置を取り込み、そ
れによりスタック上の実際の値は$00a2となる。P
CはラベルC3のアドレスにセットされる。 【0300】コード・ブロック#4でreturnが実行され
ると、まずSPが増分され、リターン・アドレスがスタ
ックから引き出される。スタックから引き出された値の
LSビットが、STKFの新しい値となる。STKF=
0は、CMAがさらに別のリターン・アドレスをもち、
次のreturn命令によりスタックからリターン・アドレス
を得ることに留意されたい。 【0301】コード・ブロック#3でreturnが実行され
ると、SPがまた増分され、リターン・アドレスがスタ
ックから引き出される。スタックから引き出された値の
LSビットは1となり、これがSTKFの新しい値とな
る。STKF=1のとき、次のreturn命令によりFLS
からリターン・アドレスが得られる。 【0302】コード・ブロック#2でreturnが実行され
ると、リターン・アドレスがFLSから引き出される
(FLSF:STKF=1:0のため)。ここでFLS
Fがクリアされるが、これはFLSの内容が無効である
ことを意味する。 【0303】FLSFが0の間にreturnが実行される
と、FLSに含まれる値はそのFLS値が無効であって
もPCに入れられる。 【0304】セクション2.3.27 マイクロシーケ
ンサ・ステータス・レジスタ(MSR) マイクロシーケンサ・ステータス・レジスタ(MSR)
350は、アソシエーション・エンジン・マイクロシー
ケンサの現在の動作ステータスを示す。MSRは図53
に、より詳細に図示される。表2.27および表2.2
8にMSRに関するより詳細な情報が示される。 【0305】Rビットは、アソシエーション・エンジン
がストップ・モード(R/反転S=0)に入れられたと
きの命令の実行中にマイクロコードが停止したか否かを
示す。命令が実行された場合は、Rビットはセットされ
る。停止された場合はクリアされる。 【0306】EXE[2:0]ビットは、アソシエーシ
ョン・エンジンのPSTAT信号ピンの現在のステータ
スを示す。これによりホストは、アソシエーション・エ
ンジンがラン・モード(R/反転S=1)からストップ
・モード(R/反転S=0)に移行したときに起こって
いた動作のクラスを判定することができる。 【0307】セクション2.3.28 スケーラ・プロ
セス制御レジスタ(SPCR) スケーラ・プロセス制御レジスタ(SPCR)208
は、多重バイト算術演算動作および論理動作の流れを制
御すると共に、最新の算術演算動作のステータスを示す
ことができる。SPCRは図54に、より詳細に図示さ
れる。表2.29にSPCRに関するより詳細な情報が
示される。 【0308】スケーラ拡張ビット(SX[1:0])
は、特定の算術演算命令の精度を拡大するために用いら
れる。これらのビットがどのようにセットされ、どのよ
うに用いられるかについては、セクション2.5.1
9,多重バイト動作の説明を参照のこと。 【0309】スケーラ・オーバーフロー・ビット(S
V)とスケーラ・オーバーフロー方向ビット(SD)
は、前回の算術演算動作にオーバーフローが起こったか
否かと、オーバーフローが起こった場合にオーバーフロ
ーが起こった方向とを示す。 【0310】 セクション2.3.29 命令レジスタ(IR) 命令レジスタ(IR)352は、現在実行されている命
令を保持するために用いられる16ビットのレジスタで
ある。このレジスタは、反転RESETがアソシエーシ
ョン・エンジンに与えられているときは変更されない。
IRは図55に、より詳細に図示される。 【0311】セクション2.3.30 命令キャッシュ
・ライン有効レジスタ(ICVR) 命令キャッシュ・ライン有効レジスタ(ICVR)35
4は、命令キャッシュ(IC)および命令キャッシュ・
タッグ(ICT0〜ICT3)のステータスを示す。I
CVRは図56に、より詳細に図示される。表2.30
にICVRに関するより詳細な情報が示される。 【0312】ICV0がセットされているときは、キャ
ッシュ・ライン#0に有効命令が含まれる。このビット
がクリアされると、キャッシュ・ライン#0の内容は不
確定である。 【0313】ICV1がセットされているときは、キャ
ッシュ・ライン#1に有効命令が含まれる。このビット
がクリアされると、キャッシュ・ライン#1の内容は不
確定である。 【0314】ICV2がセットされているときは、キャ
ッシュ・ライン#2に有効命令が含まれる。このビット
がクリアされると、キャッシュ・ライン#2の内容は不
確定である。 【0315】ICV3がセットされているときは、キャ
ッシュ・ライン#3に有効命令が含まれる。このビット
がクリアされると、キャッシュ・ライン#3の内容は不
確定である。 【0316】セクション2.3.31 プログラム・カ
ウンタ(PC) プログラム・カウンタ(PC)186は、現在実行され
ている命令のマイクロコード・メモリ・アレイ(MM
A)内のロケーションを示す16ビットのレジスタであ
る。リセット状態を出ると、例外ポインタ・プログラム
・カウンタ(EPPC)に含まれる16ビット・アドレ
スがPCにロードされる。PCは図57に、より詳細に
図示される。 【0317】PCが命令キャッシュ・タッグ(ICT0
〜ICT3)と共にどのように用いられるかについて
は、セクション3.3.4を参照のこと。CMAに関し
てMMAがどのように定義されるかの詳細については、
セクション3.3.2,CMAとMMAのマッピングを
参照のこと。例外ポインタ表の詳細については、セクシ
ョン2.3.44,例外ポインタ表を参照のこと。 【0318】 セクション2.3.32 PC境界レジスタ(PBR) PC境界レジスタ(PBR)356は、第1の命令非関
連アドレスのアドレスを含む15ビットのレジスタであ
る。命令のプレフェッチ毎に、PCはPBRに対して照
合される。PCがPBRよりも大きい場合は、PC制限
超過条件がある。EMRのPCEMビットがセットされ
ている(デフォルト)場合は、ESRはその条件を登録
するが、例外は起こらない。PCEM=1のとき、条件
はESRに登録されて、EPOBがPCに入れられ、P
C制限超過例外が起こる。PCがPBRよりも小さいと
きは、PCにより指示された命令がマイクロシーケンサ
にロードされて実行される。PBRは図58に、より詳
細に図示される。 【0319】PBRは、アルゴリズムのデバッグ中は、
PCを特定の最大値に制限するので便利である。このレ
ジスタは、$FFFEの値で反転RESETから初期化
され、これはPCに関するすべての可能な値が有効であ
る(すなわちPC境界チェックを事実上ディスエーブル
にする)ことを示す。 【0320】セクション2.3.33 命令キャッシュ
・タッグ#0(ICT0) 命令キャッシュ・タッグ#0(ICT0)358は、C
MAのどの列が現在命令キャッシュ(IC)のライン#
0にロードされているかを判断するために用いられる。
ICT0は図59に、より詳細に図示される。 【0321】キャッシュ・ヒットまたはキャッシュ・ミ
スを判定するには、各命令の実行前にICT0をPCの
MSバイトと比較する。PCのMSバイトがタッグ・レ
ジスタのどれにも一致しない場合は、次の命令を含む新
しいライン(PCにより指示される)を命令キャッシュ
にロードしなければならない。 【0322】PCのビット7および6が00に等しい場
合は、ミスがあると、命令の新しいラインが命令キャッ
シュ・ライン#0にロードされる。ICT0には、PC
のMSバイトがロードされ、命令キャッシュ有効レジス
タ(ICVR)内のキャッシュ・ライン#0(ICV
0)のための有効なビットがセットされる。 【0323】セクション2.3.34 命令キャッシュ
・タッグ#1(ICT1) 命令キャッシュ・タッグ#1(ICT1)360は、C
MAのどの列が現在命令キャッシュ(IC)のライン#
1にロードされているかを判断するために用いられる。
ICT1は図60に、より詳細に図示される。 【0324】キャッシュ・ヒットまたはキャッシュ・ミ
スを判定するには、各命令の実行前にICT1をPCの
MSバイトと比較する。PCのMSバイトがタッグ・レ
ジスタのどれにも一致しない場合は、次の命令を含む新
しいライン(PCにより指示される)を命令キャッシュ
にロードしなければならない。 【0325】PCのビット7および6が01に等しい場
合は、ミスがあると、命令の新しいラインが命令キャッ
シュ・ライン#1にロードされる。ICT1には、PC
のMSバイトがロードされ、命令キャッシュ有効レジス
タ(ICVR)内のキャッシュ・ライン#1(ICV
1)のための有効なビットがセットされる。 【0326】セクション2.3.35 命令キャッシュ
・タッグ#2(ICT2) 命令キャッシュ・タッグ#2(ICT2)362は、C
MAのどの列が現在命令キャッシュ(IC)のライン#
2にロードされているかを判断するために用いられる。
ICT2は図61に、より詳細に図示される。 【0327】キャッシュ・ヒットまたはキャッシュ・ミ
スを判定するには、各命令の実行前にICT2をPCの
MSバイトと比較する。PCのMSバイトがタッグ・レ
ジスタのどれにも一致しない場合は、次の命令を含む新
しいライン(PCにより指示される)を命令キャッシュ
にロードしなければならない。 【0328】PCのビット7および6が10に等しい場
合は、ミスがあると、命令の新しいラインが命令キャッ
シュ・ライン#2にロードされる。ICT2には、PC
のMSバイトがロードされ、命令キャッシュ有効レジス
タ(ICVR)内のキャッシュ・ライン#2(ICV
2)のための有効なビットがセットされる。 【0329】セクション2.3.36 命令キャッシュ
・タッグ#3(ICT3) 命令キャッシュ・タッグ#3(ICT3)364は、C
MAのどの列が現在命令キャッシュ(IC)のライン#
3にロードされているかを判断するために用いられる。
ICT3は図62に、より詳細に図示される。 【0330】キャッシュ・ヒットまたはキャッシュ・ミ
スを判定するには、各命令の実行前にICT3をPCの
MSバイトと比較する。PCのMSバイトがタッグ・レ
ジスタのどれにも一致しない場合は、次の命令を含む新
しいライン(PCにより指示される)を命令キャッシュ
にロードしなければならない。 【0331】PCのビット7および6が11に等しい場
合は、ミスがあると、命令の新しいラインが命令キャッ
シュ・ライン#3にロードされる。ICT3には、PC
のMSバイトがロードされ、命令キャッシュ有効レジス
タ(ICVR)内のキャッシュ・ライン#3(ICV
3)のための有効なビットがセットされる。 【0332】 セクション2.3.37 スタック・ポインタ(SP) スタック・ポインタ(SP)366は、サブルーチン・
リターン・アドレスが保持され、サブルーチン特有のデ
ータがload/store命令を用いて入れられる係数メモリ・
アレイ(CMA)のロケーションを定義する16ビット
のレジスタである。SPは図63に、より詳細に図示さ
れる。 【0333】反転RESETがあると、スタック・ポイ
ンタには、例外ポインタ表にあるレジスタの1つである
例外ポインタ・スタック・ポインタ(EPSP)の内容
がロードされる。例外ポインタ表の詳細については、セ
クション2.3.44,例外ポインタ表を参照のこと。 【0334】セクション2.3.38 第1レベル・ス
タック(FLS) 第1レベル・スタック(FLS)368により、単一レ
ベルのサブルーチンの呼出を迅速に実行することができ
る。FLSに含まれる値は、サブルーチンへのジャンプ
(jsr )命令が実行されると、通常はスタックの最上部
に置かれる。スタック処理に必要な時間(呼出中とリタ
ーンの)をなくするために、リターン・アドレスが第1
レベル・スタック・レジスタに入れられる。FLSは図
64に、より詳細に図示される。 【0335】return命令の介入なしに2回のbsr 命令が
なされると、2回目のbsr は強制的にスタック上にリタ
ーン・アドレスを記憶する(SPによる参照)。 【0336】セクション2.3.39 リピート開始レ
ジスタ(RBR) リピート開始レジスタ(RBR)180は、repeatおよ
びrepeate 命令により用いられて、プログラムの内部ル
ープの迅速な実行を可能にする。RBRは図65に、よ
り詳細に図示される。repeatまたはrepeate 命令が実行
されると、PC+2の値がRBRにロードされる。ルー
プの最後で(リピート終了レジスタ(RER)の値が現
在実行されている命令のアドレスに一致すると)、プロ
グラム・カウンタ(PC)にRBRの内容がロードされ
る。 【0337】repeatおよびrepeate 命令については、セ
クション2.5.16,スケーラ・エンジン・プログラ
ムの流れ制御動作を参照のこと。 【0338】セクション2.3.40 リピート終了レ
ジスタ(RER) リピート終了レジスタ(RER)182は、repeatおよ
びrepeate 命令により用いられて、プログラムの内部ル
ープの迅速な実行を可能にする。RERは図66に、よ
り詳細に図示される。repeatまたはrepeate 命令が実行
されると、ループ内の最終命令を示す命令がRERレジ
スタにロードされる。このレジスタの値が、現在実行さ
れている命令のアドレスと比較される。その比較の結果
が一致すると、リピート・カウント・レジスタ(RC
R)の内容が減分され、RCRがゼロに等しくなると、
リピート・ループが終了される。RCRがゼロでない場
合は、RBRの内容が開始カウンタ(PC)にロードさ
れて、ループはもう一度繰り返される。 【0339】repeatおよびrepeate 命令については、セ
クション2.5.16,スケーラ・エンジン・プログラ
ムの流れ制御動作を参照のこと。 【0340】セクション2.3.41 リピート・カウ
ント・レジスタ(RCR) リピート・カウント・レジスタ(RCR)184は、re
peatおよびrepeate 命令により用いられて、プログラム
の内部ループの迅速な実行を可能にする。RCRは図6
7に、より詳細に図示される。repeat(e) 命令が実行さ
れると、カウント値が命令により指定されたGレジスタ
(G[0]〜G[7])からRCRレジスタ内にロード
される。RCRは、repeat(e) ループが何回実行される
かを制御する。リピート・ポインタ・レジスタ(RB
R)が現在実行中の命令のアドレスに一致するたびに、
RCRの内容が1だけ減分される。RCRがゼロに等し
くなると、ループは終了する。 【0341】repeatおよびrepeate 命令については、セ
クション2.5.16,スケーラ・エンジン・プログラ
ムの流れ制御動作を参照のこと。 【0342】セクション2.3.42 グローバル・デ
ータ・レジスタ(G[0]〜G[7]) グローバル・データ・レジスタ(G[0]〜G[7])
302は、スケーラ処理エンジン内にあり、汎用データ
・レジスタのセットである。これらのレジスタの使用法
は交換可能であり、これはこれらのレジスタが汎用デー
タ以外のものについてはアソシエーション・エンジンが
用いないことを意味する。 【0343】グローバル・データ・レジスタには、実際
には図68に示されるように3つの空のロケーションが
詰め込まれている。これにより、メモリ・マップを変更
せずに将来的な成長を図ることができる。これらのロケ
ーションに対しての書き込みは正当な動作と考えられ、
これらのロケーションが読み出されると$00となる。 【0344】セクション2.3.43 グローバル・ポ
インタ・レジスタ(P[0]〜P[7]) グローバル・ポインタ・レジスタ(P[0]〜P
[7])300は、スケーラ処理エンジン内にある多目
的レジスタである。これらのレジスタは、データ・レジ
スタとして用いることができ、その場合は、グローバル
・データ・レジスタと全く同じ働きをする。また、間接
的な形式のデータ・アクセスを使用する命令では間接ポ
インタとして用いることもできる。 【0345】グローバル・ポインタ・レジスタは、実際
には図69に示されるように3つの空のロケーションが
詰め込まれている。これにより、メモリ・マップを変更
せずに将来的な成長を図ることができる。これらのロケ
ーションに対しての書き込みは正当な動作と考えられ、
これらのロケーションが読み出されると$00となる。 【0346】セクション2.3.44 例外ポインタ表 図70に示されるように、例外ポインタ表のレジスタ3
70を用いると、ホストは例外の場合のアソシエーショ
ン・エンジンの正確な応答を決定することができる。 【0347】例外ポインタ表は、ホストがアクセスする
ことのできるレジスタ・マップに入れられて、全体が命
令キャッシュ(IC)に適合できるほど充分に小さい、
小型のプログラムで係数メモリ・アレイ(CMA)全体
をデータ記憶に割り当てることができる。 【0348】EPPC(リセット初期プログラム・カウ
ンタ)−−この16ビットのレジスタに含まれる値は、
アソシエーション・エンジンがリセット状態から出ると
プログラム・カウンタ(PC)内にロードされる。 【0349】EPSC(リセット初期スタック・ポイン
タ)−−この16ビットのレジスタに含まれる値は、ア
ソシエーション・エンジンがリセット状態から出るとス
タック・ポインタ(SP)内にロードされる。 【0350】EPSV(スケーラ・オーバーフロー例外
ポインタ)−−スケーラ・エンジン内で算術演算オーバ
ーフローが起こり、例外マスク・レジスタ(EMR)の
スケーラ・オーバーフロー例外マスク・ビット(SVE
M)がクリアされると、EPSVの内容が次のクロック
でPC内にロードされる。 【0351】EPVV(ベクタ・オーバーフロー例外ポ
インタ)−−ベクタ・エンジン内で算術演算オーバーフ
ローが起こり、例外マスク・レジスタ(EMR)のベク
タ・オーバーフロー例外マスク・ビット(VVEM)が
クリアされると、EPVVの内容が次のクロックでPC
内にロードされる。 【0352】EPSZ(スケーラ・ゼロによる除算例外
ポインタ)−−スケーラ・エンジン内でゼロによる除算
が起こり、例外マスク・レジスタ(EMR)のスケーラ
・ゼロによる除算例外マスク・ビット(SDEM)がク
リアされると、EPSZの内容が次のクロックでPC内
にロードされる。 【0353】EPVZ(ベクタ・ゼロによる除算例外ポ
インタ)−−ベクタ・エンジン内でゼロによる除算が起
こり、例外マスク・レジスタ(EMR)のベクタ・ゼロ
による除算例外マスク・ビット(VDEM)がクリアさ
れると、EPVZの内容が次のクロックでPC内にロー
ドされる。 【0354】EPOB(PC制限超過例外ポインタ)−
−プログラム・カウンタ(PC)がPC境界レジスタ
(PBR)に含まれる値を越え、例外マスク・レジスタ
(EMR)のPC制限超過例外マスク・ビット(PCE
M)がクリアの場合は、EPOBに含まれる値が次のク
ロックでPC内にロードされる。 【0355】EPIO(不当オペコード例外ポインタ)
−−現在のバージョンのアソシエーション・エンジンで
実現されないオペコードが検出されて、例外マスク・レ
ジスタ(EMR)の不当オペコード例外マスク・ビット
(IOEM)がクリアの場合は、EPIOに含まれる値
が次のクロックでPC内にロードされる。 【0356】EPPE(ポート・エラー例外ポインタ)
−−表3.6にリストアップされているいずれかのポー
ト・エラー例外が起こり、例外マスク・レジスタ(EM
R)のポート・エラー例外マスク・ビット(PEEM)
がクリアの場合は、EPPEに含まれる値が次のクロッ
クでPC内にロードされる。 【0357】例外のイネーブルおよびディスエーブルの
詳細については、セクション2.3.4,例外マスク・
レジスタ(EMR)を参照のこと。 【0358】その他のすべての例外は、図71の流れ図
に従って処理される。例外が検出されると、マイクロシ
ーケンサはプログラム・カウンタ(PC)の現在値をス
タック上に押し出す。例外に対応するアドレスが、例外
ポインタ表から読み出されて、PC内にロードされる。
次に、例外ポインタにより指示された例外ルーチンが実
行される。例外ルーチンは、通常rte 命令で終了して、
これによりマイクロシーケンサはスタックされたPC値
を検索して、例外条件の前のロケーションに戻る。 【0359】最初の例外が完全に処理されないうちに第
2の例外が起こった場合は、アソシエーション・エンジ
ンはアイドル状態に移行して、アソシエーション・エン
ジンがリセットされるまでは事実上nop 命令を実行す
る。 【0360】セクション2.3.45 入力データ・レ
ジスタ(IDR) 入力データ・レジスタ(IDR)18は、ラン・モード
入力データ値を保持する64ロケーションのアレイであ
る。IDRは図72に、より詳細に図示される。IDR
は、ラン・モード中に外部から書き込むことのできる唯
一のロケーションである。特定のポートに関してポート
制御レジスタ(PCR)のタップ・ビットがセットされ
て、そのポートにデータが書き込まれると、データはI
DRに入る。IDRの各ロケーションは、実際には9ビ
ット幅である。すなわち、8ビットが実際のデータを保
持するために用いられ、9番目のビットは有効ビットで
ある。 【0361】IDR[0]の有効入力データ・ビット
(VIDビット)は、PE[0]:VPCRに含まれ、
IDR[1]のVIDビットはPE[1]:VPCRに
含まれる。IDRロケーションに各データが書き込まれ
ると、対応する有効ビットがセットされる。有効ビット
は、マイクロコード命令の実行を制御するために用いら
れる。IDRのロケーションがマイクロコード命令によ
りアクセス(リード)されて、対応する有効ビットがセ
ットされないと、SIMD制御ブロックは外部ソースに
よりそのIDRロケーションにデータが書き込まれるま
で「休止」する。 【0362】ストップ・モード(R/反転S=0)の間
は、IDRはランダムまたはストリーム・アクセス・モ
ードのいずれかを用いてロードすることができる。ラン
・モード(R/反転S=1)の間は、データはストリー
ム・アクセスを用いて転送され、IDRは、入力インデ
ックス付けまたは入力タグ付けのいずれかを用いてロー
ドすることができる。ポート制御レジスタ(PCR)の
FMビットを用いて、どの方法(インデックスまたはタ
ッギング)を用いるかを決める。 【0363】IDRをどのようにロードするかについて
の詳細は、セクション3.5.2,アソシエーション・
エンジン転送モードと、セクション3.5.1,ホスト
転送モードを参照のこと。VPCRのビットの詳細につ
いては、セクション2.3.47,ベクタ・プロセス制
御レジスタ(VPCR)を参照のこと。 【0364】セクション2.3.46 ベクタ・データ
・レジスタ(V[0]〜V[7]) ベクタ・エンジンの各処理要素には、8個のベクタ・デ
ータ・レジスタ(V[0]〜V[7])128のセット
が含まれる。ベクタ・データ・レジスタは図73に、よ
り詳細に図示される。これらのレジスタは、計算中に一
時的な記憶装置および結果の記憶装置として用いること
ができる。これらのレジスタの使用法は交換可能であ
る。すなわち、これらのレジスタは汎用データ以外のも
のについてはアソシエーション・エンジンにより用いら
れない。 【0365】セクション2.3.47 ベクタ・プロセ
ス制御レジスタ(VPCR) ベクタ・エンジンの各処理要素には、ベクタ・プロセス
制御レジスタ(VPCR)102が含まれ、これは多重
バイト算術演算および論理動作の流れを制御する。VP
CRはまた、最近の算術演算動作のステータスを表すた
めに用いることもできる。VPCRは図74に、より詳
細に図示される。表2.31にVPCRに関するより詳
細な情報が示される。 【0366】ベクタ拡張ビット(VX[1:0])は、
一定の算術演算命令の精度を拡大するために用いられ
る。これらのビットがどのようにセットされるか、また
どのようにマイクロコードにより用いられるかについて
はセクション2.5,アソシエーション・エンジン・マ
イクロコード命令セットの概要の表2.64とセクショ
ン2.5.20,プロセス計算制御を参照のこと。 【0367】ベクタ・オーバーフロー・ビット(VV)
とベクタ・オーバーフロー方向ビット(VD)は、前回
の算術演算にオーバーフローが発生したことと、オーバ
ーフローが起こった場合のオーバーフローの方向とを示
すために用いられる。飽和保護を行う命令について、V
Vは飽和が起こったか否かを表し、VDは飽和が起こっ
た方向を表す。VVおよびVDビットがどのようにセッ
トされ使用されるかというより完全な説明については、
セクション2.5,アソシエーション・エンジン・マイ
クロコード命令セットの概要の表2.64を参照のこ
と。 【0368】ベクタ条件付きビット(VT,VH)によ
り、条件付きvif-velse, vif-vendif 命令が、すべての
処理要素上で適切に(そして独立して)機能する。処理
要素のVTビットがセットされていないとき(VT=
0)は、シェルフ全体(処理要素とその64個のCMA
ロケーション)は、非アクティブであると見なされる。
命令のデスティネーションがベクタ・レジスタ(V
[0]〜V[7])の1つまたはCMAである場合は、
デスティネーションは更新されない。VHビットによ
り、条件構造のvelse-vif 部分が適切に機能することが
できる。これは、最後のvendif命令の実行以来、処理要
素が条件付きifステートメントを得たか否かを示す。 【0369】有効入力データ・ビット(VID)は、入
力データ・レジスタ(IDR)の対応するロケーション
が有効であるか否かを表す。たとえば、IDR[13]
が書き込まれると、処理要素#13のVIDがセットさ
れる(PE[13]:VID=1)。 【0370】飽和の詳細については、セクション2.
5.9,飽和動作と不飽和動作を参照のこと。VPCR
のビットをセットする命令については、表2.64を参
照のこと。 【0371】セクション2.3.48 入力タッグ・レ
ジスタ(ITR) 入力タッグ・レジスタ(ITR)138は、ラン・モー
ド(R/反転S=1)中にデータが入力データ・レジス
タ(IDR)にいつ書き込まれるかを制御するためのメ
カニズムとなる。ITRは図75に、より詳細に図示さ
れる。ITRの用途は、ポート制御レジスタ(PCR)
のFMビットにより制御される。FMビットがクリアの
ときは、IDR初期オフセット・レジスタ(IOR)が
用いられ、FMビットがセットされているときはITR
が用いられる。 【0372】FMがクリアのラン・モード・データ・ブ
ロードキャストの間は、入力データ・レジスタ(ID
R)がデータ・ストリームから昇順の連続バイトを受け
取り、これは次のアソシエーション・エンジンに制御が
渡されるまで続く。ITRを用いる際は、IDRは入力
データ・ストリームから昇順の非連続バイトを受け取
る。ITRに含まれる値により、入力サンプル・ストリ
ームから捕捉すべきサンプル番号が指定される。 【0373】 ITRを使用する場合の注意は、以下のとおりである: 1.ITRの内容は、ラン・モード(R/反転S=1)
でデータを転送する場合にのみ用いられる。 2.ITRの内容は、IDRに対する転送だけに効果を
もつ(すなわち、IDRは、ラン・モード中のチップ間
転送の暗黙のデスティネーションとなる)。 3.ITRには昇順の値が含まれる;すなわち、タッグ
#2に含まれる値は、タッグ#1に含まれる値よりも大
きくなければならず、これはタッグ#0の値よりも大き
くなければならない。 【0374】タッグ値の最大数は64(IDRのロケー
ション数に等しい)である。 【0375】このグループのレジスタは、一般的なチッ
プ間のデータ転送を支援するように設計されていない
が、完全に接続されていないネットワークと、受け入れ
可能なフィールドの概念を採用するネットワークとを支
援するように設計されている。 【0376】入力タグ付けモードを用いるには、まずI
PRレジスタに$0をロードし、ICRレジスタに$4
0(または書き込まれるタッグの数)をロードし、IT
Rにタッグ値をストリーミングしなければならない。タ
ッグがITRにロードされると、PCRのFMビットが
セットされ、このデバイスはすべてのラン・モード・ブ
ロードキャスト中はITRを用いることになる。 【0377】より詳細な説明については、セクション
3.5.2.1,入力インデックス付けと、セクション
3.5.2.3,入力タグ付けを参照のこと。 【0378】 セクション2.3.49 命令キャッシュ(IC) 命令キャッシュ(IC)20は、それぞれ32命令ワー
ドの4つのキャッシュ・ラインで構成される。ICは図
76に、より詳細に図示される。各命令キャッシュ・ラ
インには、それぞれのタッグと有効ビットとがある。各
キャッシュ・ラインは、MMAからベクタとしてロード
されるので、1つのクロック・サイクルで32の命令ワ
ードをロードすることができる。(注記:係数メモリ・
アレイ(CMA)空間を用いて命令を保持するときは、
その空間をマイクロコード・メモリ・アレイまたはMM
Aと呼ぶのが普通である)。 【0379】MMAおよび命令キャッシュの詳細につい
ては、セクション3.3.1,命令キャッシングを参照
のこと。 【0380】セクション2.3.50 係数メモリ・ア
レイ(CMA) 係数メモリ・アレイ(CMA)14は、ネットワーク係
数,マイクロコード命令および一時的なデータ値を含む
ことのできる64x64アレイである。CMAは図77
に、より詳細に図示される。CMAがホストによりどの
ようにアクセスされるかにより、二次元アレイとして見
なされるか、線形アレイとして見なされるかが決まる。
以下の説明は、アソシエーション・エンジンがストップ
・モード(R/反転S=0)の場合のみに関するもので
ある。ラン・モード(R/反転S=1)中にCMAがど
のようにアクセスされるかについては、セクション3.
3.2,CMAとMMAのマッピングの説明を参照のこ
と。 【0381】CMAがランダム・アクセスを用いてアク
セスされると、CMAは線形アレイとなり、アドレスは
1つの列のシェルフに沿って昇順に並べられる。すなわ
ち、CMAの第1列には、最初の64個のロケーション
が含まれ、第2の列には次の64個のロケーションが含
まれるというように続く。 【0382】CMAがストリーム・アクセスを用いてア
クセスされると、ロケーションは二次元アレイまたは線
形アレイのいずれかとして見なされる。HSSR:LS
[3:0]=0001の場合、これはCMAをアクセス
すべき論理空間として示すが、CMAは二次元アレイと
してアクセスされる。この場合は、OAR1が特定のシ
ェルフのオフセットを表すために用いられ、OAR2が
アクセスが開始されるシェルフを表すために用いられ、
DCR1が各シェルフからいくつのCMAロケーション
をアクセスするかを表すために用いられ、DCR2がい
くつのシェルフをアクセスするかを表すために用いられ
る。 【0383】HSSR:LS[3:0]=1111のと
きは、ランダム・アクセス空間全体がアクセスされるこ
とが示され、CMAは4096個のロケーションの線形
アレイとして扱われる。 【0384】CMAに含まれるデータは、入力データを
出力データに変形するために用いられる。また、学習が
行われると変更されるのもCMAに含まれるデータであ
る。各ロケーションは8ビットの幅で、各シェルフには
64のロケーションがある。セクション2.4 アソシ
エーション・エンジン・マイクロコードがアクセス可能
なレジスタ 本セクションで説明されるレジスタは、SIMD命令セ
ットの実行中にアクセスすることができるレジスタで、
そのためにホストにより外部アクセスすることができる
レジスタのサブセットを形成する。ホストによりアクセ
ス可能なレジスタの完全な説明については、セクション
2.3,アソシエーション・エンジン・ホストがアクセ
ス可能な制御を参照のこと。 【0385】SIMD命令セットによりアクセスおよび
修正が可能な制御の数は、5つのグループに分類され
る:すなわちセクション2.4.1,入力データ・レジ
スタ(IDR),セクション2.4.2,ベクタ・エン
ジン・レジスタ,セクション2.4.3,マイクロシー
ケンサ制御レジスタ,セクション2.4.4,スケーラ
・エンジン・レジスタおよびセクション2.4.5,ア
ソシエーション・エンジン制御レジスタである。これら
のレジスタのグループ間の関係を、図78に示す。 【0386】セクション2.4.1 入力データ・レジ
スタ(IDR) IDRは、ベクタ・ソース(処理要素に対して64個の
データを同時に供給する)またはスケーラ・ソース(す
べての処理要素が1つのIDRロケーションに同時にア
クセスすることを可能にする)のいずれかとして用いる
ことができるので、それ自身が1つのカテゴリに入る。 【0387】IDRには、このアソシエーション・エン
ジンのための入力ベクタが含まれる。このレジスタは、
レジスタ間接モードのアドレッシングを用いるマイクロ
コード命令を通じてアクセスすることができる。すなわ
ち、間接命令は、ポインタ・レジスタ(P[0]〜P
[7])の1つの内容を用いて、IDR内の適切な値に
アクセスする。 【0388】(マイクロコード命令シーケンスを用いる
と)2つの異なる方法のうちどちらか1つでIDRにア
クセスすることができる。IDRにアクセスする1つの
方法は、SIMDベクタ・エンジンのすべての処理要素
が同時にIDR内の1つのエントリを見ることができる
ようにする方法である。これがIDRのスケーラ・アク
セスである。IDRにアクセスするもう1つの方法は、
IDRを処理要素と縦に整列されたものとして見る方法
で、これによりベクタとしてのIDRにアクセスする。
言い換えれば、IDR[0]は、処理要素#0と関連を
もち、IDR[1]は処理要素#1と関連をもつという
ことである。この方法を用いると、計算を開始する前に
IDR全体を充てんしなければならないが、IDRが一
度充てんされると、IDR全体を同時に処理することが
できる。それぞれのVPCR VIDビットには、ID
Rの各要素に関する有効ステータスが含まれている。 【0389】 セクション2.4.2 ベクタ・エンジン・レジスタ 以下に説明されるレジスタは、ベクタ・エンジンの64
個の処理要素のそれぞれにある。図79および図80
が、ベクタ・・エンジン・レジスタを説明する。 セクション2.4.2.1 係数メモリ・アレイ(CM
A) 各処理要素は、各処理要素のためのマッピング係数を保
持するために用いられる64個の8ビットCMAロケー
ションのセットにアクセスすることができる。グローバ
ル・ポインタ・レジスタ(P[0]〜[7])を用いる
ことにより、CMAに間接的にアクセスすることができ
る。この種の間接アドレッシングのシンタクスは、セク
ション2.5.3,マイクロコード命令フォーマットに
見られる。レジスタ間接アドレッシング・モードを用い
ると、すべての処理要素は同じCMA列をインデックス
する点に留意されたい。CMAの詳細については、セク
ション2.3.50を参照のこと。 【0390】セクション2.4.2.2 ベクタ・デー
タ・レジスタ(V[0]〜V[7]) 各処理要素には、計算プロセス中に用いることのできる
8個の8ビット汎用レジスタのセットが含まれる。ベク
タ・データ・レジスタの詳細については、セクション
2.3.46を参照のこと。 【0391】セクション2.4.2.3 ベクタ・プロ
セス制御レジスタ(VPCR) VPCRには、前回のベクタALU動作から得た条件/
処理ビットと、ベクタ・エンジンのデスティネーション
のロードを制御するビットとが含まれる。これらのビッ
トにリストは、表2.32にある。VPCRの詳細につ
いては、セクション2.3.47を参照のこと。 【0392】 セクション2.4.3 マイクロコード制御レジスタ 図81は、マイクロコード・レジスタを示す。 【0393】 セクション2.4.3.1 命令レジスタ(IR) この16ビットのレジスタには、現在実行されているマ
イクロコードが含まれる。このレジスタは、命令にアク
セスする際に用い、命令のオペランドとして用いること
はできない。 【0394】セクション2.4.3.2 プログラム・
カウンタ(PC) この16ビットのレジスタは、現在実行されているマイ
クロコード命令のアドレスを保持する。このアドレス
は、命令キャッシュ(IC)から新しいマイクロコード
命令ワードを得るために用いられる。CMAまたはIC
に対するアクセス(PCを用いて)のそれぞれは、バイ
ト・アクセスと見なされ、そのためにPCはいつも2ず
つ増分される。PCの詳細については、セクション2.
3.31を参照のこと。 【0395】セクション2.4.3.3 スタック・ポ
インタ(SP) SPは、CMA内にデータ・スタック動作を行うために
用いられる。サブルーチン動作に関しては、このレジス
タは(FLSと共に)、サブルーチン呼出およびリター
ンのためのメカニズムとなる。load/store動作に関して
は、このレジスタはデータ・オペランドにアクセスする
ベース・ポインタとして用いられる。注記:スタック動
作は、データ移動動作と見なされ、そのために命令キャ
ッシュではなくCMAに記憶される。SPは、常に最初
の自由ロケーションを指示する。pop 命令が実行される
と、SPが増分されてデータ・アクセスが実行される。
push命令が実行されると、データはまずスタックに入れ
られ、その後SPが減分される。 【0396】セクション2.4.3.4 第1レベル・
スタック(FLS) FLSは、サブルーチン呼出のための第1レベル・リタ
ーンPCを保持する。このレジスタを用いると、1レベ
ルの深さしかないサブルーチンに対する呼出およびリタ
ーン・アクセスがより迅速に行える。ネストされたサブ
ルーチン呼出に関しては、第1呼出のリターン・アドレ
スがFLSに記憶されて、その後のすべての呼出は、そ
のリターン・アドレスをスタック上に押し出すことにな
る(これはSPレジスタにより指示される)。FLSの
詳細については、セクション2.3.38を参照のこ
と。 【0397】セクション2.4.3.5 リピート開始
レジスタ(RBR) RBRは、repeat(e) 命令の実行中に用いられ、repeat
(e) に続く命令のアドレスを保持する。repeat(e) 命令
が実行されると、このレジスタが自動的にロードされ
る。repeat(e) ループの底に達すると(PC==RE
R)このレジスタの内容は、プログラム・カウンタ(P
C)にロードされる。RBRに関する詳細については、
セクション2.3.39を参照のこと。 【0398】セクション2.4.3.6 リピート終了
レジスタ(RER) RERは、repeat(e) 命令の実行中に用いられる。RE
Rには、repeat(e) ループの最終命令のアドレスが含ま
れる。リピート・カウント・レジスタ(RCR)がゼロ
でない場合は、PC==RERになるたびに、RCRが
減分され、PCにはRBRに含まれる値がロードされ
る。RERに関する詳細については、セクション2.
3.40を参照のこと。 【0399】セクション2.4.3.7 リピート・カ
ウント・レジスタ(RCR) RCRは、repeat(e) 命令の実行中に用いられる。この
レジスタには、repeat(e) ループが実行される回数が含
まれる。このレジスタに0がロードされると、repeat
(e) 命令とRERにより指定されたアドレスとの間の命
令がスキップされる。RCRに関する詳細については、
セクション2.3.41を参照のこと。 【0400】 セクション2.4.4 スケーラ・エンジン・レジスタ SIMDスケーラ・エンジン・レジスタは、SIMDス
ケーラ・エンジンによりアクセスおよび修正が可能なレ
ジスタである。図82は、スケーラ・エンジン・レジス
タをより詳細に図示する。これらのレジスタに含まれる
値は、すべてのSIMDユニットの動作に影響を与え
る。SIMDベクタ・エンジンの64個の処理要素すべ
てについて1つのSIMDスケーラ・エンジンがあるの
で、SIMDスケーラ・エンジン・レジスタのそれぞれ
のコピーが1つずつある。 【0401】セクション2.4.4.1 グローバル・
ポインタ・レジスタ(P[0]〜P[7]) 8個の8ビット・レジスタのこのセットには、IDRま
たはCMAのレジスタを選択するために用いられるアド
レスが含まれている。これらのレジスタはまた、スケー
ラ算術演算のための汎用データ・レジスタとしても用い
ることができる。 【0402】セクション2.4.4.2 グローバル・
データ・レジスタ(G[0]〜G[7]) グローバルな計算値を保持することができる8個の8ビ
ット汎用データ・レジスタであり、あるいはSIMDベ
クタ・エンジンの特定の処理要素のためのデータを保持
することができる。 【0403】セクション2.4.4.3 スケーラ・プ
ロセス制御レジスタ(SPCR) SPCRは、スケーラ・エンジン内の多重バイト算術演
算動作の流れを制御する。このレジスタに含まれるビッ
トの詳細については、表2.33を参照のこと。 【0404】セクション2.4.5 アソシエーション
・エンジン制御レジスタ 以下の説明は、movci, movtcおよびmovfc 命令を用い
て、読み出し可能(R)または読み出しおよび書き込み
可能(R/反転W)なレジスタである。これらのレジス
タにアクセスするために用いられるアドレスは、表2.
5のレジスタのランダム・アクセス・アドレスと同じで
ある。図83は、スケーラ・エンジン・レジスタをより
詳細に図示する。 【0405】セクション2.4.5.1 アソシエーシ
ョン・エンジン識別レジスタ(AIR) AIRはデバイス識別番号を含む読み込み専用レジスタ
である。アソシエーション・エンジンのプログラムによ
り、デバイスのタイプ(およびそれによりそのデバイス
特有のコンフィギュレーション)が決まる。movfc 命令
を用いるときのレジスタのアドレスは$0である。AI
Rの詳細については、セクション2.3.1を参照のこ
と。 【0406】セクション2.4.5.2 算術演算制御
レジスタ(ACR) ACRは、ベクタ・エンジンおよびスケーラ・エンジン
の算術演算動作を制御するために用いられる。VSGN
ビットおよびSSGNビットが、ベクタ・エンジンおよ
びスケーラ・エンジンが、符号つきの算術演算を行う
か、符号なしの算術演算を行うかを制御する。movci, m
ovtcおよびmovfc を用いる際のこのレジスタのアドレス
は、$1である。ACRの詳細については、セクション
2.3.2を参照のこと。 【0407】セクション2.4.5.3 例外ステータ
ス・レジスタ(ESR) 例外ステータス・レジスタのビットは、すべての保留中
の例外の発生を記録する。アソシエーション・エンジン
例外モデルはフラットであり(一度に1つの例外しか処
理されない)、優先順位をつけられている(優先順位の
高い例外が、優先順位の低い例外よりも先に処理され
る)。PEEビットがセットされると、ポート・エラー
例外が起こったことを表す。IOEビットがセットされ
ると、不当オペコード例外が起こったことを表す。PC
Eビットがセットされると、PC制限超過例外が起こっ
たことを表す。VDEビットおよびSDEビットがセッ
トされると、それぞれベクタ・エンジンおよびスケーラ
・エンジンにゼロによる除算例外が起こったことを表
す。VVEビットおよびSVEビットがセットされる
と、それぞれベクタ・エンジンおよびスケーラ・エンジ
ンにオーバーフロー例外が起こったことを表す。movfc
を用いる際のこのレジスタのアドレスは、$2である。
ESRの詳細については、セクション2.3.3を参照
のこと。 【0408】rte 命令が実行されると、EMRの対応す
るマスク・ビットがクリアである場合は、処理されてい
る例外に対応するビットがクリアされる。すなわち、E
SRのビットをクリアするための唯一の方法は、rte 命
令を実行することである(例外処理ルーチン内から行う
ことが望ましい)。また、例外処理ルーチンに入る唯一
の方法は:1)例外が起こること;および2)EMR内
の対応するマスク・ビットがクリアされることに関する
ものである。この機能により、例外は「スタック」され
ることになる(複数の例外を保留できて、一度に1つし
か処理できない)。このメカニズムにより、無視された
例外のステータスを残すこともできる。 セクション2.4.5.4 例外マスク・レジスタ(E
MR) 例外マスク・レジスタにより、マイクロコードは、どの
例外を処理するか、どの例外を無視するかを指定するこ
とができる。PEEMビットがセットされると、ポート
・エラーが起こっても例外が発生しないことを表す。I
OEMビットがセットされると、不当オペコードが起こ
っても例外が発生しないことを表す。PCEMビットが
セットされると、PC制限超過が起こっても例外が発生
しないことを表す。VDEMビットおよびSDEMビッ
トがセットされると、それぞれベクタ・エンジンおよび
スケーラ・エンジンにゼロによる除算が起こっても例外
が発生しないことを表す。VVEMビットおよびSVE
Mビットがセットされると、それぞれベクタ・エンジン
およびスケーラ・エンジンにオーバーフローが起こって
も例外が発生しないことを表す。movci, movtcおよびmo
vfc を用いる際のこのレジスタのアドレスは、$3であ
る。EMRの詳細については、セクション2.3.4を
参照のこと。 【0409】セクション2.4.5.5 処理要素選択
レジスタ(PESR) PESRは、drotmov またはdsrot 命令に関与する最終
処理要素を制御する。movci, movtcおよびmovfc を用い
る際のこのレジスタのアドレスは、$4である。PES
Rの詳細については、セクション2.3.5を参照のこ
と。 【0410】セクション2.4.5.6 ポート制御レ
ジスタ(PCR) PCRは、アソシエーション・エンジンの4つのポート
でスイッチおよびタップ位置の設定値を制御する。この
レジスタにより、マイクロコードは、ラン・モードでデ
ータがチップ間で転送される場合にIDRをどのように
充てんするかを決定することができる。movci, movtcお
よびmovfc を用いる際のこのレジスタのアドレスは、$
5である。PCRの詳細については、セクション2.
3.6を参照のこと。 【0411】セクション2.4.5.7 アソシエーシ
ョン・エンジン・ポート・モニタ・レジスタ(APM
R) APMRにより、マイクロコードは、ポート・エラーの
原因を決定することができる。このレジスタは、一般に
例外処理中のみに用いられる。movci, movtcおよびmovf
c を用いる際のこのレジスタのアドレスは、$6であ
る。APMRの詳細については、セクション2.3.7
を参照のこと。 【0412】セクション2.4.5.8 汎用ポート・
レジスタ(GPPR) GPPRは、PA[1:0]信号ピンの状態を制御する
2ビットのレジスタである。movci, movtcおよびmovfc
を用いる際のこのレジスタのアドレスは、$7である。
GPPRの詳細については、セクション2.3.8を参
照のこと。 【0413】セクション2.4.5.9 汎用方向レジ
スタ(GPDR) GPDRは、PA[1:0]信号ピンの方向を制御す
る。movci, movtcおよびmovfc を用いる際のこのレジス
タのアドレスは、$8である。GPDRの詳細について
は、セクション2.3.9を参照のこと。 【0414】セクション2.4.5.10 IDRポイ
ンタ・レジスタ(IPR) IPRは、データ・ブロードキャスト中にIDR内でデ
ータが入れられる場所を制御する。このレジスタのリセ
ット値は$00であり、これはデータがレジスタが変更
される前にブロードキャストされると、ロケーションI
DR[0]から始まるIDRに入れられることを意味す
る。movci, movtcおよびmovfc を用いる際のこのレジス
タのアドレスは、$9である。IPRの詳細について
は、セクション2.3.10を参照のこと。 【0415】セクション2.4.5.11 IDRカウ
ント・レジスタ(ICR) ICRは、データ・ブロードキャスト中にこの部分によ
り受信されるデータの最大数を指定する。movci, movtc
およびmovfc を用いる際のこのレジスタのアドレスは、
$Aである。ICRの詳細については、セクション2.
3.11を参照のこと。 【0416】セクション2.4.5.12 IDRロケ
ーション・マスク・レジスタ(ILMR) ILMRは、IPRと共に用いられて、どのIPRアド
レス・ビットが「無視される」かを決める。これによ
り、ブロードキャスト中のデータをIDRに複写するこ
とができる。movci, movtcおよびmovfc を用いる際のこ
のレジスタのアドレスは、$Cである。ILMRの詳細
については、セクション2.3.12を参照のこと。 【0417】セクション2.4.5.13 IDR初期
オフセット・レジスタ(IOR) IORにより、ブロードキャストの開始時のデータが無
視される。このレジスタのリセット値は$0000であ
り、これはブロードキャストの開始時にデータを無視せ
ずにIDRがロードされることを意味する。指定された
数のバイトがスキップされると、IDRにロードされた
バイトは、ブロードキャストからの連続ストリームのデ
ータを表す。このレジスタは、ラン・モード・ストリー
ム・ライト動作中のみに用いられる。さらに詳しく述べ
ると、入力インデックス付けモード(PCR:FM=
0)の間だけ用いられる。セクション2.3.12に説
明された入力タグ付け(PCR:FM=1)と比較され
たい。これは16ビットのレジスタなので、2つの部分
に分けてアドレスしなければならない。movci, movtcお
よびmovfc を用いる際のこのレジスタのMSBのアドレ
スは、$Eである。IORの詳細については、セクショ
ン2.3.13を参照のこと。 【0418】セクション2.5 アソシエーション・エ
ンジン・マイクロコード命令セットの概要 本セクションは、アソシエーション・エンジンの動作を
プログラミングするために用いることのできるコマンド
について説明する。セクション2.4,アソシエーショ
ン・エンジン・マイクロコードがアクセス可能なレジス
タでは、アソシエーション・エンジン・マイクロコード
のプログラマが用いることのできるレジスタが説明され
ている。本セクションでは、レジスタを用いて実行する
ことのできる実際の動作を説明する。 【0419】セクション2.5.1 命令のタイプ 命令は、種々の動作を実行するためのツールのセットを
形成する。表2.34に命令とそのタイプの概要を示
す。 【0420】 セクション2.5.2 使用されるノーテイション 表2.35に示されるノーテイションが本セクション全
体を通じて用いられる。 【0421】セクション2.5.3 マイクロコード命
令フォーマット 本セクションでは、アソシエーション・エンジンのため
のマイクロコード命令を構築するために用いられるフィ
ールドを説明する。モナディック命令(bcnt srgD など
の単一オペランド命令)のすべてのついて、指定された
レジスタが、その命令のソース・レジスタおよびデステ
ィネーション・レジスタの両方の機能を果たす。ダイア
ディック命令(add sregS, sregDなど2つのオペランド
を持つ命令)のすべてについて、最初に指定されたレジ
スタが動作の1ソースとして機能し、2番目に指定され
たレジスタが動作のソースおよび動作のデスティネーシ
ョン・レジスタとして機能する。 【0422】 セクション2.5.3.1 データ・フォーマット ベクタ・エンジンおよびスケーラ・エンジンのための基
本的なデータ量は、バイトである。このデータ・サイズ
を多重バイト算術演算まで拡張する機能は、速度を犠牲
にしてもたらされる。(浮動小数点フォーマットなど
の)他のフォーマットに関しては、ユーザはスクラッチ
記憶部のためのCMA部分を用いることが求められる。 【0423】 セクション2.5.3.2 レジスタの選択 vreg1, vreg2およびsregフィールドは、マイクロコード
動作で用いられるベクタ・エンジンおよびスケーラ・エ
ンジンのレジスタ・セットを定義する。vreg1,vreg2お
よびsregという名前は、ソースまたはデスティネーショ
ン情報を示すものではない。これらは、ベクタ・エンジ
ンおよびスケーラ・エンジン内のレジスタのグループを
伝えるためのものに過ぎない。vreg1 により伝えられる
レジスタのセットを表2.36に示す。vreg2 により伝
えられるレジスタのセットを表2.37に示す。sregに
より伝えられるレジスタのセットを表2.38に示す。 【0424】 セクション2.5.3.3 スタック・ポインタ用例 アソシエーション・エンジンは、サブルーチン呼出およ
び例外処理のためにスタック・ポインタ(SP)レジス
タを利用する。SPに関して用いられる用例を、以下に
示す。SPレジスタは、データがスタックに入れられる
と減分され、データがスタックから取り出されると増分
される(それぞれbsr, return )。スタック・ポインタ
の現在値は、スタック動作に使用することのできる最初
のロケーションを指示する(すなわちSPは、空のロケ
ーションを指示する)。 【0425】 セクション2.5.5 IDRへのアクセス IDRには、2つの異なる方法でアドレスすることがで
きる。64個の単一バイト・スケーラ・エンティティと
してアドレスすること(スケーラ・アクセス)ができ、
これはIDR内の単一のバイトがすべての処理要素にブ
ロードキャストされることを意味する。また単一の64
バイトのベクタ・エンティティとしてアドレスすること
(ベクタ・アクセス)もでき、これはIDRのバイト#
0が処理要素#0によりアクセスされ、IDRのバイト
#1が処理要素#1によりアクセスされ、IDRのバイ
ト#63が処理要素#63によりアクセスされることを
意味する。 【0426】IDRにスケーラ・アクセスを行う(すな
わち単一のバイトがすべてのPEにブロードキャストさ
れる)場合には、命令ノーテイションは、間接アドレス
・ポインタを用いてIDR(IDR[P0]またはID
R[P0++],すなわちvmovIDR[P0],[V
0])にインデックスする。これは、アソシエーション
・エンジン内部のブロードキャスト・バスを用いて行わ
れる。IDRの単一の要素の内容は、このブロードキャ
スト・バスに入れられ、すべての処理要素により同時に
受け入れられる。 【0427】IDRにベクタ・アクセスを行う場合(す
なわち64バイトのベクタとして)は、命令ノーテイシ
ョンは間接ポインタ・レジスタ(IDRまたはIDR
C,すなわちvmovIDR,V[0])を用いない。ブロ
ードキャスト・バスは、一緒にバイパスされて、IDR
の各要素は対応する処理要素に同時に転送される。 【0428】このような融通性により、異なるアルゴリ
ズムの実現が容易になる。図84は、IDRの概念的な
実行例を示す。 【0429】IDRには、各IDRロケーションの関連
する有効ビットもある。これは、アソシエーション・エ
ンジン・プログラムが無効データに関して動作しないよ
うにするためのものである。IDRロケーションが書き
込まれると、有効ビットがセットされる。IDRに対し
てスケーラ・アクセスが行われる場合は、特定のIDR
ロケーションの有効ビットを用いてデータの有効性を判
定する。IDRに対してベクタ・アクセスが行われる
と、各有効ビットが処理マスク(VTビット)と比較さ
れて、IDRロケーションが有効であるか否かの判定が
行われる。IDRそのものが有効であるか否かを判定す
るには、すべての有効IDRロケーションを合成する。
そのため、処理マスクがセットされると、有効ビットを
他の有効PE/IDRロケーションと共にベクタ全体の
有効性をチェックする手段として用いる。いずれの場合
にも、アソシエーション・エンジン・プログラムは、I
DRロケーションが有効になるまで休止する。 【0430】 セクション2.5.6 ベクタ・プロセス制御レジスタ SIMD処理要素のそれぞれにあるベクタ・プロセス制
御レジスタ(VPCR)には、命令の結果に関する情報
が含まれる。命令によっては、VPCRビットの一部ま
たは全部を修正するものもあり、またVPCRビットま
たはビットの組み合せの状態を単にテストするだけのも
のもある。VPCRビットの詳細については表2.39
を参照のこと。 【0431】セクション2.5.7 スケーラ・プロセ
ス制御レジスタ スケーラ・エンジンのスケーラ・プロセス制御レジスタ
(SPCR)には、命令の結果に関する情報が含まれ
る。命令によっては、SPCRビットの一部または全部
を修正するものもあり、またSPCRビットまたはビッ
トの組み合せの状態を単にテストするだけのものもあ
る。SPCRビットの詳細については表2.40を参照
のこと。 【0432】セクション2.5.8 符号つきの動作と
符号なしの動作 算術演算制御レジスタ(ACR)ビットSSGN,VS
GNは、いくつかの命令動作と、プロセス制御情報(S
PCR,VPCR)がどのように生成されるかとを制御
する。乗算と除算については、xSGNビットは、符号
つきの(2の補数)動作が実行されるのか、符号なしの
動作が実行されるのかを直接的に制御する。加算,減算
および乗算については、xSGNビットは、オーバーフ
ロー情報がどのように生成されるのかも制御する。符号
つきの動作に関しては、オーバーフロー・ビット(加算
および減算)は、動作の最上位ビット位置からのキャリ
ーイン(繰上げ)およびキャリーアウト(繰下げ)の排
他的OR演算として定義される。符号なしの動作に関し
ては、オーバーフローは結果の最上位ビット位置からの
キャリーアウトとして定義される。 【0433】 セクション2.5.9 飽和動作と不飽和動作 結果が飽和する命令に関しては、その結果が飽和する値
は、算術演算制御レジスタ(ACR)の符号(SSG
N,VSGN)ビットに依存する。符号なしの動作に関
しては、最も大きな正の値に飽和する結果は$FF(2
55)となり、最小数は$00(0)となる。符号つき
の動作に関しては、最も大きな正の値に飽和する結果は
$7F(127)となり、最小数は$80(−128)
となる。飽和命令sat およびvsatはオーバーフローを起
こさないことに注意されたい(そのオペランドを飽和さ
せる他の命令と同様に)。 【0434】セクション2.5.10 アソシエーショ
ン・エンジン・システム制御動作 本セクションは、グローバルなレベルでアソシエーショ
ン・エンジンを制御する命令を説明する。スケーラ・デ
ータ・マイクロコード命令の詳細については表2.41
を参照のこと。 【0435】セクション2.5.11 ベクタ・エンジ
ン・データ移動 本セクションは、基本的なベクタ・エンジン・データ移
動を実行する命令を説明する。ベクタ・エンジン・デー
タ移動マイクロコード命令の詳細については表2.42
を参照のこと。 【0436】 セクション2.5.11.1 drotmov 命令の説明 前述のように、drotmov 命令は、Vレジスタを回転させ
てから、その結果に対してベクタ移動を行う。図85
は、限られた数の処理要素に関するケースの前後を図示
する。この例では、図85に4個のPEがある。PES
Rには値2が含まれる。これは、PE#2を要素周囲の
ラップとしてピックアップし、PE#0にデータを供給
する。矢印は、データの移動を示す。 【0437】 セクション2.5.11.2 dsrot 命令の説明 アソシエーション・エンジンには、dsrot と呼ばれる下
向きシフト命令が含まれる。この命令は、妥当な有効性
をもつ帰納的倍加スタイル(recursive-doubling-styl
e)アルゴリズムと、他の可能な集合動作とを行う。こ
の命令は、密度の小さい多重プレース下向き円形シフト
を行う。命令dsrot #N, vreg2 は、以下のように機能す
る: 【0438】各PEは、PEからローカル・レジスタま
で伝えられた値をコピーする。処理マスク(VTビッ
ト)が通常の方法で用いられて、PEのいずれかに記憶
する結果を抑制する。 【0439】PEがそのPE番号のN個の最下位ビット
にすべて1をもっている場合は、vreg2 レジスタからの
値を下のPEに伝える。そうでない場合は、上のPEか
ら受け取った値と共に伝える。N=0のとき、各PEは
vreg2 レジスタからの値を下のPEに伝える。処理マス
ク(VTビット)は、PEがそのすぐ下のPEに伝える
値に関しては影響をもたない。最後のPEは、円形に最
初のPE(PE数0)に値を伝える。どのPEがチェー
ン上の最後のPEとして機能するかは、PESRレジス
タの値により決まる。 【0440】一例として、表2.43に、いくつかのds
rot 命令の実行の結果を示す。この例に関しては、PE
SRレジスタには値15が含まれているものとする。表
2.43にこれらの例が説明される。 【0441】セクション2.5.12 ベクタ・エンジ
ン・データ動作 本セクションは、ベクタ・レジスタについて動作する命
令を説明する。VSGNビットは、符号つきの動作およ
び符号なしの動作に関する動作結果を制御することに留
意されたい。符号つきの動作/符合のない動作および飽
和動作の詳細については、セクション2.5.8,符合
のある動作と符合のない動作およびセクション2.5.
9,飽和動作と不飽和動作を参照のこと。ベクタ・デー
タ・マイクロコード命令の詳細については、表2.44
を参照のこと。 【0442】セクション2.5.12.1 右ローテイ
ト/左シフト命令のまとめ 表2.45に、アソシエーション・エンジン・プログラ
マが用いることのできる右ローテイトと左シフト命令の
一覧表を示す。 【0443】 セクション2.5.12.2 下向きシフト動作の説明 命令dadd, daddp, dmin, dminp, dmaxおよびdmaxp は、
下向きシフトと計算を組み合わせて、目的のアプリケー
ションで最もよく行われると思われる帰納的倍加スタイ
ル計算と集合演算の実行を容易にする。「p」は、命令
の予備スタイルを表し、「p」がない場合は、終了命令
である。予備命令タイプおよび非予備命令タイプの詳細
については、セクション2.5.18,拡張ビットと多
重バイト動作の実行を参照のこと。 【0444】これらの命令は、密度の小さい多重プレー
ス下向き円形シフトと算術演算動作とを組み合せる。命
令dadd #N, vreg2 は、以下のように機能する: ・加算は、PEの半分、すなわちそれぞれのPE番号の
位置Nに1ビットをもつものでしか起こらない(最下位
ビットを位置0とカウントする)。このタイプの各PE
は、上のPEから渡された値をローカルvreg2 レジスタ
に加える。このタイプでないPEは、vreg2 レジスタ値
を変更しないままにする。処理マスク(VTビット)を
通常の方法で用いて、PEに結果を記憶させないように
する。そうでないとvreg2 レジスタは修正されてしま
う。 ・PEがそのPE番号のN個の最下位ビットにすべて1
をもつ場合は、vreg2 レジスタからの値を下のPEに渡
す。その他の場合は、上のPEから受け取った値と共に
渡す。N=0のとき、各PEは、vreg2 レジスタからの
値を下のPEに渡す。処理マスク(VTビット)は、P
Eがすぐ下のPEにどの値を渡すかについて影響を与え
ない。最後のPEが最初のPEに値を渡すか否かは問題
ではない。これは上のPEから最初のPEに渡された値
は、どの#N値が指定されようと用いられないからであ
る。 【0445】一例として、次の表にいくつかのdadd命令
の実行の結果を示す。この例については、16個のPE
があるものとする。表2.43はこれらの例を説明す
る。表2.46は、dadd命令のいくつかの例を示す。 【0446】 セクション2.5.12.3 vmin/vmax 命令の説明 vmin命令およびvmax命令は、2つのベクタを1つのベク
タにまとめるために用いられる。vmin命令の結果は、図
86に示されるように、この命令で指定された2つのベ
クタの最小要素を含む合成ベクタである。同様に、vmax
命令の結果は、図86に示されるように、この命令で指
定された2つのベクタの最大要素を含む合成ベクタであ
る。 【0447】他のすべてのベクタ動作と同様に、その処
理要素のVTビットがセットされていれば、またセット
されている場合に限り、結果が記憶される点に留意する
こと。 【0448】セクション2.5.13 ベクタ・エンジ
ン条件付き動作 本セクションは、条件付き動作を実行する命令を説明す
る。条件付き動作は、VPCR VTビットおよびVH
ビットを用いて、各処理要素の後の命令の実行を制御す
る。VPCR VTビットは、vif 命令が真であると評
価されたとき、またはvendif命令が実行されたときにセ
ットされる。VTビットは、(最後のvendif以来の)前
回のvif が真であると評価されるとvelse 命令によりク
リアされる。VTビットがクリアされると、命令はベク
タ・デスティネーションまたはベクタ・プロセス制御レ
ジスタを更新しない。 【0449】VPCR VHビットには、vif-velseif
またはvif-velseif-velseif-vendifシーケンスの履歴が
含まれる。(注記:velseif 命令はマイクロコード・レ
ベルには存在しないが、2つの命令velse とvif とをつ
ないだものに過ぎない)。VHビットは、前回のvif 命
令が真であると評価されるとvelse 命令の実行時にセッ
トされる。VHビットは、vendif命令の実行時にクリア
される。 【0450】VHビットおよびVTビットの命令の実行
に与える影響の詳細については、セクション2.5.2
1,PE処理に対するVPCR VHビットとVTビッ
トの効果を参照のこと。SIMDベクタ・エンジンの命
令の条件付き実行を説明するコード・セグメントの例に
ついては、セクション3.6.5.4,条件付き実行を
参照のこと。表2.47に、使用可能な条件付きマイク
ロコード命令の簡単な説明を示す。 【0451】セクション2.5.13.1 VTビット
およびVHビットに関する条件付き命令の効果 VTビットおよびVHビットの機能を明確にするため
に、表2.48と図87に、それぞれVTビットおよび
VHビットの次状態移行表と状態移行図とを示す。vif
命令は、VTビットがセットされている場合にのみ実行
されることに留意されたい。velse およびvendif命令
は、VTビットとは独立して実行される。リセットまた
は初期条件は、VT=1;VH=0である。 【0452】セクション2.5.13.2 右ローテイ
ト命令および左シフト命令のまとめ 表2.49に、アソシエーション・エンジンのプログラ
マが用いることのできる右ローテイト命令および左シフ
ト命令の一覧表を示す。 【0453】セクション2.5.14 スケーラ・エン
ジン・データ移動 本セクションは、基本的なスケーラ・エンジン・データ
の移動を実行する命令を説明する。スケーラ・エンジン
・データ移動マイクロコード命令の詳細については、表
2.50を参照のこと。 【0454】セクション2.5.15 スケーラ・エン
ジン・データ動作 本セクションは、スケーラ・レジスタに関して動作する
命令を説明する。算術演算制御レジスタ(ACR)ビッ
トSSGNおよびVSGNは、符号つきの動作および符
号なしの動作に関する命令の結果を制御することに留意
されたい。符号つきの動作/符合のない動作および飽和
動作の詳細については、セクション2.5.8,符合の
ある動作と符合のない動作およびセクション2.5.
9,飽和動作と不飽和動作を参照のこと。スケーラ・デ
ータ・マイクロコード命令の詳細については、表2.5
1を参照のこと。 【0455】セクション2.5.16 スケーラ・エン
ジン・プログラムの流れ制御動作 本セクションは、SIMDスケーラ・エンジンでプログ
ラム制御を実行する命令を説明する。PCをセーブオフ
しなければならない命令(bsr, jsrmiおよびjsrri )に
ついては、単一レベルのハードウェア・スタックが設け
られる(FLS)。2レベル以上のスタックが必要な場
合は、1つのスタックのための空間をCMAに配置し
て、使用することのできる次のスタック・ロケーション
をSPにより指示する。プログラム制御マイクロコード
命令の詳細については、表2.52を参照のこと。 【0456】セクション2.5.17 repeatおよびre
peate 命令の説明 repeatおよびrepeate 命令は、ループの終了時に一定の
命令タイプが現れたときに境界条件を起動することがで
きる(マイクロシーケンサが、もう一度ループを行うべ
きか、またはループの後直ちに命令を実行すべきかを計
算しているとき)。明白な相互作用が行われると流れの
命令(bra, bsr, jmpri, jmpmi, jsrriよびjsrmi )が
変更される。相互作用がそれほど明白でないと、ベクタ
条件付き命令(vif, velseおよびvendif)が行われる。
これらの相互作用のそれぞれについて、以下に説明す
る。 【0457】セクション2.5.17.1 repeatルー
プ終了時の流れの変更 repeatループの終了時に起こる流れの変更は、かなり直
接的である。repeatループの暗示的な流れの変更より
も、明確な流れの変更(bra/jmpri/jmpmi またはbsr/js
rri/jsrmi )のほうが常に好ましい。図88および図8
9に示された例については、repeatをrepeate と入れ替
えることができる。言い換えれば、repeatループのタイ
プは、この2つの例では決定的ではない。 【0458】セクション2.5.17.2 repeatルー
プ終了時のベクタ条件 repeatループ終了時のベクタ条件命令の相互作用は、上
述の流れの変更の例ほど明確ではない。問題の相互作用
は、VTビットおよびVHビットが(repeateープの終
了時に起こった命令のために)、VTビットおよびVH
ビットの暗示的な修正に干渉する(repeate ループ終了
時の暗黙のvendifのために)ときである。 【0459】図91および図92では、ベクタ条件(V
TビットおよびVHビットに影響を与える命令)を、以
下の命令のプレースホルダ(placeholder )として用い
ている:その命令とは、locmin, locmax, colmin, colm
ax, rowmin, rowmax, dskipe, vifxx, velse, vendif,
vlshfth, vlshftt, vrotrhおよびvrotv である。 【0460】表2.52に説明されるように、repeate
ループは、終了するvendifがあるrepeatループと同じで
ある。その同一性を図90に示す(右側のループがrepe
ateープである)。 【0461】ベクタ条件命令がrepeatループの最後にあ
ると、条件付き命令は予測されるようにVTビットおよ
びVHビットに影響を与える(ベクタ条件がループ内部
にあるかのように動作する)。これを図91に示す。 【0462】ベクタ条件付き命令がrepeate ループの最
後にあると、repeate ループのvendif暗黙命令が支配し
て、ベクタ条件付き命令が実行されたことがないかのよ
うになる。これを図92に示す。 【0463】セクション2.5.18 拡張ビットと多
重バイト動作の実行 アソシエーション・エンジンは、単一バイト動作および
多重バイト動作に対応するように設計されている。アソ
シエーション・エンジンは、最後に実行された動作から
拡張情報をセーブすることによりこれを行う。任意の動
作に関して、2種類の基本的な命令、すなわち予備命令
と終了命令とがある。実行される動作により、最上位バ
イトは、前者または後者に関して動作を行う。最終動作
は、オーバーフローがありうる計算に関して飽和するこ
とに留意されたい。 【0464】単一バイト動作については、アソシエーシ
ョン・エンジンのプログラマは、アプリケーションによ
り、飽和動作(終了タイプ)と不飽和動作(予備タイ
プ)の命令のいずれかを選択することができる。単一バ
イトの動作に関して予備命令を用いる際には、予備命令
により作成された拡張情報が後の命令に悪影響を与えな
いように注意をしなければならない。 【0465】拡張ビットに関しては、アソシエーション
・エンジン命令は3つのカテゴリに分類することができ
る。第1カテゴリは、動作には拡張ビットが用いられな
いが、動作の結果として常に拡張ビットがクリアされる
場合である。2番目の種類の命令は、動作に拡張ビット
を用いるもの(たとえばキャリーイン)と、動作の結果
を反映させるために拡張ビットをセットするもの(たと
えばキャリーアウト)である。3番目の種類の動作は、
動作に拡張ビットを用いるが、動作の結果として拡張ビ
ットを常にクリアするもの(たとえば飽和加算は、キャ
リーアウトを行わない)である。そのために、加算,減
算およびシフトの場合には、拡張情報は常に動作に用い
られる。多重バイト・シーケンスの最初の動作は、拡張
ビットをクリアして開始するようにすることが重要であ
る。そうでないと、誤った結果を生む。 【0466】 セクション2.5.19 多重バイト動作の説明 以下のセクションで説明される拡張ビットは、スケーラ
・プロセス制御レジスタおよびベクタ・プロセス制御レ
ジスタの両方に適用される。ここで説明される動作は、
加算,減算,最大値,最小値,左シフト,右シフトおよ
びネゲーションである。以下の例も、2個の24ビット
数量が動作されることを前提とする(V0,V1,V2
およびV3,V4,V5;V2およびV5は最下位バイ
トである)。特定の例では、8ビットのオペランドを2
4ビットのオペランドと共に用いる。 【0467】また表2.53ないし表2.63では、x
X0およびxX1という用語は、スケーラ・エンジン内
のSX0およびSX1ビット、またはベクタ・エンジン
内のVX0およびVX1ビットのいずれかの短縮形とし
て用いられる。 【0468】 セクション2.5.19.1 多重バイト加算 多重バイト加算の場合は、動作は最下位バイトから始ま
り、上向きに働く。たとえば(拡張ビットは00として
開始する点に注意): vaddp V2,V5 vaddp V1,V4 vadd V0,V3 【0469】vadd命令(飽和する)は、キャリーアウト
を生成することはないので、拡張ビットはvadd命令の終
了時にクリアされる。しかしvaddp 命令により作成され
た拡張情報は、キャリーおよび符合情報を保持するため
に用いられる。拡張xX1ビットは、sregオペランドの
符合情報を保持するために用いられる(これは符合拡張
加算に対応するために用いられる。符合拡張加算につい
ては後述する)。拡張xX0ビットは、加算のためのキ
ャリー情報を保持するために用いられる。表2.53
は、拡張ビットのありうる状態の詳細を示す。 【0470】ユーザが最上位のvadd飽和を気にする場合
は、vsat命令を用いて、プロセス制御レジスタに保持さ
れる最後のオーバーフローおよび飽和方向情報に基づ
き、多重バイト結果の最下位バイトを変更することがで
きる。命令: vsat V4 vsat V5 は、vadd命令の後に続き、デスティネーション・レジス
タの2つのより下位のバイトを飽和させる(最上位のad
d で行われた場合)。 【0471】オペランドが異なるサイズをもつ場合(バ
イトを24ビットになるランニング和に加算する場合な
ど)には、符合拡張のある加算を用いることができる。
たとえば(V0がV3,V4,V5に加算されるとし
て): vaddp V0,V5 vaddsxp V4 vaddsx V3 【0472】拡張ビットには最後の動作のソース・オペ
ランドに関する情報が含まれる点に注意すること。xX
1ビットは、特にvaddsxp 命令により用いられて、前回
の動作をどのように符合をつけ拡張するかを決定する。
xX1ビットがセットされると、vaddsxp 命令は任意の
キャリー情報を加え、$FFの値を加算用の他のアーギ
ュメントとして用いる。これは、V0値の符合拡張の効
果をもつ。vadd命令と同様に、vaddsx命令は結果を飽和
させ(オーバーフロー・ビットがセットされている場
合)、拡張ビットをクリアする。表2.54は、拡張ビ
ットに対するvaddsxp 命令の効果を示す。 【0473】前記の例と同様に、最高位の動作が飽和す
る可能性のある場合は、vsat命令を用いて結果の残りの
バイトを飽和させたほうがよい。 【0474】 セクション2.5.19.2 多重バイト減算 多重バイト減算の場合には、動作は最下位バイトから始
まり上向きに働く。たとえば(拡張ビットは00として
始まる点に注意): vsubp V2,V5 vsubp V1,V4 vsub V0,V3 【0475】vsub命令(飽和する)は、ボローアウトを
生成することはないので、拡張ビットはvsub命令の終了
時にクリアされる。しかしvsubp 命令により作成された
拡張情報は、ボローおよび符合情報を保持するために用
いられる。拡張xX1ビットは、ソース・オペランドの
符合情報を保持するために用いられる(これは符合拡張
減算に対応するために用いられる。符合拡張減算につい
ては後述する)。拡張xX0ビットは、減算のためのボ
ロー情報を保持するために用いられる。表2.55は、
拡張ビットのありうる状態の詳細を示す。 【0476】ユーザが最上位のvsub飽和を気にする場合
は、vsat命令を用いて、プロセス制御レジスタに保持さ
れる最後のオーバーフローおよび飽和方向情報に基づ
き、多重バイト結果の最下位バイトを変更することがで
きる。命令: vsat V4 vsat V5 は、vsub命令の後に続き、デスティネーション・レジス
タの2つのより下位のバイトを飽和させる(最上位の減
算で行われた場合)。 【0477】オペランドが異なるサイズをもつ場合(バ
イトを24ビットになるランニング差から減算する場合
など)には、符合拡張のある減算を用いることができ
る。たとえば(V0をV3,V4,V5から減算すると
して): vsubp V0,V5 vsubsxp V4 vsubsx V3 【0478】拡張ビットには最後の動作のソース・オペ
ランドに関する情報が含まれる点に注意すること。xX
1ビットは、特にvsubsxp 命令により用いられて、前回
の動作をどのように符合をつけ拡張するかを決定する。
xX1ビットがセットされると、vsubsxp 命令は任意の
ボロー情報を減じ、$FFの値を減算のための他のアー
ギュメントとして用いる。これは、V0値の符合拡張の
効果をもつ。vsub命令と同様に、vsubsx命令は結果を飽
和させ(オーバーフロー・ビットがセットされている場
合)、拡張ビットをクリアする。表2.56は、拡張ビ
ットに対するvsubsxp 命令の効果を示す。 【0479】前記の例と同様に、最高位の動作が飽和す
る可能性のある場合は、vsat命令を用いて結果の残りの
バイトを飽和させたほうがよい。 【0480】 セクション2.5.19.3 多重バイト比較 多重バイト比較の場合には、動作は最高位バイトから始
まり、下向きに働く。多くの場合、ベクタ比較の望まし
い結果は、処理マスク(VTビット)をセットすること
である。スケーラ比較については、プログラムの流れの
変更を行うことが多い。いずれの場合にも、比較はvif
またはskipタイプの命令により最下位バイトで終了す
る。たとえば(拡張ビットは00から始まることに注
意): vcompp V0,V3 vcompp V1,V4 vifeq V2,V5 【0481】vcompp命令は、加算および減算命令とは異
なる方法で拡張ビットを用いる。拡張ビットは、最後の
動作の結果がどのようなものであったか、またさらに比
較が必要か否かを判定するために用いられる。表2.5
7は、vcompp命令の前後の拡張ビットの定義を詳細に示
す。 【0482】最後のvcompp命令の終了時に、条件付きvi
f (またはskip)命令が実行される。vif 命令は、拡張
情報を取り出して、それを所望の比較動作と組み合わせ
て、それに従って処理マスク(VTビット)をセットす
るかあるいはクリアする(または流れの変更を実行す
る)。 【0483】セクション2.5.19.4 xX0およ
びxX1に関する「VIF」の依存性vif 命令およびsk
ip命令はX0ビットおよびX1ビット(スケーラ・エン
ジンの場合はSX0:SX1;ベクタ・エンジンの場合
はVX0:VX1)の状態に直接依存するということを
繰り返すことが重要である。この依存性は、多重バイト
比較を容易にするために必要である。このために、多く
の命令はX0,X1ビットをクリアする。vif およびsk
ip命令を用いた場合にX0,X1ビットに影響を与える
命令に注意すること。 【0484】 セクション2.5.19.5 多重バイト最大値 多重バイト最大値の場合は、動作は最上位バイトから始
まり下向きに働く。多重バイト最大値の動作は、多重バ
イト比較と非常に似ている。動作の結果は異なる。sreg
レジスタが、2つのオペランドの最大値となる。たとえ
ば(拡張ビットは00として始まることに注意): vmaxp V0,V3 vmaxp V1,V4 vmax V2,V5 【0485】vmaxp 命令は、拡張ビットを加算および減
算命令とは異なる方法で用いる。拡張ビットは、vmaxp
命令に対して、どのような行動をとるかを示すために用
いられる。最後の最大値動作(最下位バイト)はvmax動
作を用いて、拡張ビットがナル状態(00)に戻り、デ
ータの最終バイトが移動される(比較に基づき)ように
しなければならない。表2.58は、vmaxp 命令前後の
拡張ビットの定義を詳細に示す。 【0486】 セクション2.5.19.6 多重バイト最小値 多重バイト最小値の場合は、動作は最上位バイトから始
まり下向きに働く。多重バイト最小値の動作は、多重バ
イト最大値と非常に似ている。動作の結果は異なる。sr
egレジスタが、2つのオペランドの最小値となる。たと
えば(拡張ビットは00として始まることに注意): vminp V0,V3 vminp V1,V4 vmin V2,V5 【0487】vminp 命令は、拡張ビットを加算および減
算命令とは異なる方法で用いる。拡張ビットは、vminp
命令に対して、どのような行動をとるかを示すために用
いられる。最後の最小値動作(最下位バイト)はvmin動
作を用いて、拡張ビットがナル状態(00)に戻り、デ
ータの最終バイトが移動される(比較に基づき)ように
しなければならない。表2.59は、vminp 命令前後の
拡張ビットの定義を詳細に示す。 【0488】 セクション2.5.19.7 多重バイト左シフト 多重バイト左シフトの場合は、動作は最下位バイトから
始まり、上向きに働く。左シフト動作の場合は、特定の
左シフト予備命令はない。この関数に関して、add 予備
が用いられる。たとえば(拡張ビットは00として始ま
ることに注意): vaddp V2,V2 vaddp V1,V1 vlshft V0 【0489】最初の2つの動作は、V2レジスタとV1
レジスタを左に1ビット位置だけシフトさせて、拡張ビ
ットxX0にキャリー結果をセーブする。この場合、拡
張ビットxX1は無視する。最後の命令vlshftは、拡張
情報を取り出して最終(最上位)バイトにシフトさせ、
拡張ビットをナル状態(00)にクリアする。 【0490】 セクション2.5.19.8 多重バイト右シフト 多重バイト右シフトの場合は、動作は最上位バイトから
始まり、下向きに働く。前のケースと同様に、予備右シ
フト命令を最上位バイトに用いて、最後の(最下位)バ
イトに通常の右シフト命令を用いる。たとえば(拡張ビ
ットは00として始まることに注意): vrshftp V2 vrshftp V1 vrshft V0 【0491】最初の2つの動作は、V2レジスタとV1
レジスタを1ビット位置だけシフトさせて、拡張ビット
xX0に最下位ビット結果をセーブする。xX1拡張ビ
ットを用いて、命令に対して、可能な符合拡張が必要と
されることを示す(表2.60)。最後の命令vrshft
は、拡張情報を取り出して最終(最下位)バイトにシフ
トさせ、それから拡張ビットをナル状態(00)にクリ
アする。これにより最後の動作で最下位ビットは廃棄さ
れる。 【0492】セクション2.5.19.9 多重バイト
・ネゲーション 多重バイト・ネゲーションの場合は、動作は最下位バイ
トで始まり、上向きに働く。より下位のバイトについて
予備ネゲーション命令が用いられる。最終(最上位)バ
イトについては、通常のネゲーション命令が用いられ
る。最も大きな負の数(−128)をネゲートするとオ
ーバーフロー条件(127)が起こるので注意するこ
と。拡張xX0ビットが、ネゲーションからのボロー情
報を保持するために用いられ、X1ビットは無視され
る。たとえば(拡張ビットは00として始まることに注
意): vnegp V2 vnegp V1 vneg V0 【0493】vneg命令(飽和する)は、ボローアウトを
生成しないので、拡張ビットはvneg命令の終了時にクリ
アされる。表2.61に拡張ビットの可能な状態を詳細
に示す。 【0494】セクション2.5.19.10 多重バイ
ト・ポインタの増分 多重バイト・ポインタ加算の場合は、動作は最下位バイ
トで始まり、上向きに働く。たとえば(拡張ビットは0
0として始まることに注意): incp #3,P6 inc #0,P7 inc 命令は、キャリーアウトを生成することはないの
で、拡張ビットはinc 命令の終了時にクリアされる。し
かしincp命令により作成された拡張情報は、キャリーお
よび符合情報を保持するために用いられる。拡張SX1
ビットは、sregオペランドの符合情報を保持するために
用いられる(これは符合拡張加算に対応するために用い
られる)。ソース・オペランドは命令の一定のフィール
ドであるが、他のアソシエーション・エンジン命令との
一貫性を図るためにSX1ビットがクリアされる。SX
1ビットは、inc 命令またはincp命令の入力としては用
いられない。拡張SX0ビットが、加算のためのキャリ
ー情報を保持するために用いられる。表2.53は、拡
張ビットのありうる状態を詳細に示す。表2.62は、
増分予備(incp)の拡張ビットの説明を行う。 【0495】セクション2.5.19.11 多重バイ
ト・ポインタの減分 多重バイト・ポインタ減算の場合は、動作は最下位バイ
トで始まり、上向きに働く。たとえば(拡張ビットは0
0として始まることに注意): decp #3,P6 dec #0,P7 dec 命令は、ボローアウトを生成することはないので、
拡張ビットはdec 命令の終了時にクリアされる。しかし
decp命令により作成された拡張情報は、ボローおよび符
合情報を保持するために用いられる。拡張SX1ビット
は、sregオペランドの符合情報を保持するために用いら
れる(これは符合拡張加算に対応するために用いられ
る)。ソース・オペランドは命令の一定のフィールドで
あるが、他のアソシエーション・エンジン命令との一貫
性を図るためにSX1ビットがクリアされる。SX1ビ
ットは、dec またはdecp命令の入力としては用いられな
い。拡張SX0ビットは、減算のためのボロー情報を保
持するために用いられる。表2.55は、拡張ビットの
ありうる状態を詳細に示す。表63は、減分予備(dec
p)の拡張ビットの説明を行う。 【0496】 セクション2.5.20 プロセス計算制御 本セクションは、それぞれの命令によりVPCR/SP
CRビットがどのように影響を受けるかを説明する。多
くの動作はソース・オペランドとデスティネーション・
オペランドを取り出し、動作を実行し、結果をデスティ
ネーション・オペランドに記憶する。単一オペランド動
作は、デスティネーション・オペランドを取り出し、デ
スティネーション・オペランドに関する動作を実行し、
その結果をデスティネーション・オペランドに記憶す
る。表2.64は、各命令と、それが処理コードにどの
ように影響を与えるかをリストアップしている。VX
[1:0],VT,VV,VDおよびVHビットは、各
処理要素にあり、SX[1:0],SVおよびSDビッ
トはスケーラ・エンジン・プロセッサ制御レジスタにあ
ることに留意されたい。 【0497】セクション2.5.21 PE処理に対す
るVPCR VHビットとVTビットの効果 VTビットがセットされると、現在の命令はデスティネ
ーション・レジスタを更新することができる。しかしV
Tビットがクリアされると、デスティネーション・レジ
スタは更新されない。この阻止関数は、VPCRレジス
タ・ビットの更新にも適用される。VHビットの関数
は、VTビットの履歴をセーブして、VPCR VTビ
ットが修正できる場合を制御することである。そのた
め、VTビットとVHビットとを組み合わせることによ
り、SIMDベクタ・エンジンの命令の実行の制御の階
層ができる。表2.65は、VHビットとVTビットが
アソシエーション・エンジン命令の実行に対して与える
効果を示す。 【0498】セクション2.5.22 命令実行回数 本セクションでは、各命令のサイクル回数の説明を行
う。これらの命令回数に対する可能な調整は、多重位置
動作または多重ビット動作に対応する。表2.66は、
各命令とそのサイクル回数が最小値から最大値までどの
ように変わるかをリストアップしている。 【0499】セクション2.5.23 アソシエーショ
ン・エンジン・ミッシング命令 アソシエーション・エンジンには、2つの関数を実行す
ることのできる命令がいくつかある。これらの命令を表
2.67に示す。 【0500】セクション3 アソシエーション・エンジ
ンの動作原理 【0501】本セクションでは、アソシエーション・エ
ンジンの動作のより詳細な説明を行う。アソシエーショ
ン・エンジンの主な機能は、入力データを取り込み、ユ
ーザが定義した転送関数を実行することである。 【0502】アソシエーション・エンジンの機能の主要
な側面を、論理部分に分割する。 【0503】セクション3.1,情報の流れと編成で
は、典型的なフィードフォワード・ネットワークを通る
情報の流れを説明し、ネットワークをアソシエーション
・エンジン/アソシエーション・エンジン’のアーキテ
クチャに対してマッピングする。セクション3.2,命
令パイプラインでは、命令がフェッチされ実行されるメ
カニックを説明する。セクション3.3,命令およびデ
ータ・メモリでは、アソシエーション・エンジンの主要
メモリがどのように配列されて、マイクロコード,ベク
タ・データおよびスケーラ・データを保持するかを説明
する。セクション3.4,アソシエーション・エンジン
の初期化では、アソシエーション・エンジンの準備およ
び初期化に関する問題を説明する。最小限のコンフィギ
ュレーションおよび初期化などの問題も論じる。セクシ
ョン3.5,ポート動作では、ポート動作モードと、ア
ソシエーション・エンジンのユーザが、どのようにして
ホスト側からアソシエーション・エンジンとのデータ転
送を制御することができるかということとを説明する。
さらに、異なるデータ転送モードに対応するために、ホ
スト・メモリ・マップの説明を行う。セクション3.
6,アソシエーション・エンジン動作では、SIMD処
理要素と計算関数の制御とを説明する。この説明には、
ベクタ・エンジンおよびスケーラ・エンジンの包括的説
明と詳細な説明が含まれる。マイクロコード・プログラ
ム構造の説明もいくつか行われる。セクション3.7,
マイクロコードにより開始されたポート・ライト動作で
は、マイクロコード制御下でアソシエーション・エンジ
ンから支援側のアソシエーション・エンジン’デバイス
に対する計算済みデータの転送のための動作モードを説
明する。二次元および一次元のアソシエーション・エン
ジン・コンフィギュレーションが論じられる。セクショ
ン3.8,アソシエーション・エンジン・バス・コンフ
ィギュレーションでは、問題を解決するために複数のア
ソシエーション・エンジンをどのように配列したらよい
のか、、アレイ構造でアソシエーション・エンジンを用
いる際にどのようなエラー条件に注意すべきかを説明す
る。 【0504】セクション3.1 情報の流れと編成 高レベルのアプローチを行うと、ニューラル・ネットワ
ーク・アーキテクチャをアソシエーション・エンジン・
ブロックのセットにマッピングして、必要な関数を実行
することができる。情報の流れもまたマッピング関数と
考えることができる。図93は、典型的な完全に接続さ
れたフィードフォワード・ニューラル・ネットワークを
示す。様々なタイプのニューラル・ネットワーク・アル
ゴリズムに対応するために、アソシエーション・エンジ
ン’と呼ばれる(異なるマイクロコードをもつ)別のア
ソシエーション・エンジンを用いて、アソシエーション
・エンジンからの部分シナプス値を取り入れ、それらを
集合させて総合的なニューロン出力を形成することがで
きる。 【0505】このネットワークでは、入力レイヤ(i)
は、分配関数のみを実行する。このネットワークには1
19個の入力がある。隠されたレイヤ(h)は、これら
の入力を取り入れて、積の和Σ(i*cih)などの伝播
関数を用いてネットワーク係数cihをかける。相互接続
係数を説明する際には、第1の下付き文字(i)が入力
インデックス付けまたは「元の」ニューロンを示し、最
後の下付き文字(h)が「行先の」ニューロンを示す。
隠されたレイヤは、積の和に関して出力関数を実行し
て、隠されたレイヤからの出力を生成する。この例で
は、隠されたレイヤは80個のニューロンを有する。出
力レイヤ(o)は、隠されたレイヤからの出力を取り入
れて、伝播関数Σ(h*who)を用いてネットワーク係
数whoをかける。隠されたレイヤと同様に、出力レイヤ
は積の和に対して出力関数を実行して、ネットワーク出
力を生成する。この例では出力レイヤには20個のニュ
ーロンをもつ。64個の入力と64個の出力とをもつア
ソシエーション・エンジン・アーキテクチャに関して、
この例のマッピングを行うには数個のアソシエーション
・エンジンが必要になる。図94は、図93の隠された
レイヤに関して可能なマッピングの一例を示す。図94
では、アソシエーション・エンジン0,アソシエーショ
ン・エンジン1およびアソシエーション・エンジン2’
がバンク0を形成し、アソシエーション・エンジン3,
アソシエーション・エンジン4およびアソシエーション
・エンジン5’がバンク1を形成する。同様にアソシエ
ーション・エンジン0とアソシエーション・エンジン3
がスライス0を形成し、アソシエーション・エンジン1
とアソシエーション・エンジン4がスライス1を、アソ
シエーション・エンジン2’とアソシエーション・エン
ジン5’がスライス2を形成する。図93に示されるネ
ットワークのマッピングでは、入力レイヤと隠されたレ
イヤの両方が図94にマッピングされている点に留意さ
れたい。この理由は、入力レイヤが分配レイヤとしてし
か働かないためである。 【0506】アソシエーション・エンジンの組合せに関
する情報の流れは、以下のようになる:最初の63個の
入力サンプルがスライス0のIDRにロードされる。残
りのサンプルはスライス1のIDRにロードされる。ス
ライス1がロードされると同時に、スライス0はその入
力サンプルに関して積の和の計算を開始することができ
る。 【0507】スライス0が計算を終了すると、部分シナ
プス結果(ベクタ小計を表す)をアソシエーション・エ
ンジン’に転送することができる。スライス1が小計を
転送すると、アソシエーション・エンジン’スライス
(スライス2)は出力関数を実行して、出力レイヤに対
する隠されたレイヤのデータ転送を開始することができ
る。アソシエーション・エンジン’は、同じバンクの多
くのアソシエーション・エンジンに対応することができ
る。 【0508】図94では、スライス2によりアソシエー
ション・エンジンを異なる機能ブロック(異なるマイク
ロコードをもつ)として用いることができることが示さ
れる。またCMAを異なる方法で用いることができるこ
とも示される。トレーニング・ベクタがT0ないしT7
9としてCMAにロードされる。Sベクタ(S0ないし
S79)は、スライス0とスライス1のアソシエーショ
ン・エンジン群に関して合計された部分シナプス結果で
ある。アソシエーション・エンジン2’とアソシエーシ
ョン・エンジン5’に示されるCOF値を用いて、シナ
プス合計にスカッシュ関数(squashing function)を実
行して、ネットワークの出力を生成する。 【0509】図95は、アソシエーション・エンジン/
アソシエーション・エンジン’ユニットの論理図を示
す。アソシエーション・エンジン・デバイスは、相互接
続関数をもつ前レイヤからの出力を受け持ち、アソシエ
ーション・エンジン’デバイスが集合と出力関数とを実
行する点に留意されたい。 【0510】図94および図95に示されたマッピング
は、図93に示されたネットワークの可能なマッピング
のうち1つしか表していないことに注意すること。スラ
イス2をセクション2.1,アソシエーション・エンジ
ン・システムの概要で説明されたように全面的になくし
て、部分結果をスライス1内に蓄積することもできる。 【0511】セクション3.2 命令パイプライン アソシエーション・エンジンは、3段階のパイプライン
をもつ命令シーケンサを実現する。これは、各命令が3
つの異なる機能ユニットを通過しないと完了しないこと
を示す。これを図96に示し、詳細を表3.1に説明す
る。 【0512】パイプラインが充てんされると、命令がス
テージ1とステージ2とを通過するためにかかる時間を
無視することができる。図97ではパイプは時刻t3で
充てんされ、t3とt7との間でクロック毎に新しい命
令が実行される。言い換えれば、各命令は、完了するま
でに最低3クロック・サイクルを必要とするが、この特
定のパイプラインを用いると、各命令は1クロックの有
効実行時間を有する。 【0513】多重サイクル命令タイミングは、図97に
示される単一サイクル・タイミングとそれほど違わな
い。しかし、各命令は、新たに来る命令のプレフェッチ
を実行する責任があるので、多重サイクル命令は終了か
ら1サイクルたたないとプレフェッチを実行しない。多
重サイクルのタイミングを図98に図示する。 【0514】 セクション3.2.1 命令パイプラインの休止 パイプラインの休止は、2種類の条件:すなわちキャッ
シュ・ミスとリソース・コンフリクトによるものであ
る。 【0515】パイプのステージ#1の休止は、全面的に
キャッシュ・ミス(PCのアドレスが有効キャッシュ・
ライン内で見つからない)によるものである。キャッシ
ュ・ミスによりパイプ内に休止が起こるたびに、現在パ
イプ内にある命令の実行時間にクロック・サイクルが1
つ追加される。 【0516】ステージ#2における休止は、図99に示
されるようなデータの依存性によるものである。 【0517】間接アドレッシング・モード(図99に見
られるCMA[P1]などの)は、パイプのステージ#
2で処理される。図99に示される命令は両方とも単一
サイクル命令であり、パイプのステージ#3でadd go,
v0が実行されているときは、CMA[P1]のデータ
・プレフェッチはステージ#2で実行される。そのため
ここで問題が発生する。パイプのステージ#2で用いら
れるポインタは、パイプ3のステージ3と同時に更新さ
れる。そのため、ポインタの更新(ステージ#3の)が
終了するまでの1クロックの間パイプを休止させない
と、そのポインタを用いることができない。 【0518】ステージ#3の休止は、IDR有効ビット
(VID)に直接関係している。vadd IDR「P
1],v0などの命令が、まだ充てんされていないID
Rロケーションを指示すると、参照されたIDRロケー
ションが充てんされる(そしてさらにVIDビットがI
DRロケーションが有効であることを示す)まで、ステ
ージ#3の休止がパイプ内に誘導される。ステージ#3
の休止は、外部ソースに依存するので、指定された数の
クロックだけ続かず、外部ソースがアソシエーション・
エンジンに対して期待されるデータ量を与えない場合に
は、アソシエーション・エンジンは無期限に休止するこ
ともある(ICRが、ラン・モードでアソシエーション
・エンジンがどの程度の量のデータを期待するかを指定
する)。ステージ#3の休止がPSTATピン上で外部
から見えるのはこのためである(PSTAT[2:0]
=000はステージ#3パイプの休止を示す)。この表
示はマイクロシーケンサ・ステータス・レジスタのEX
E符号化でも同様に見ることができる(MSR:EXE
[2:0]=000は、ステージ#3パイプの休止を示
す)。 【0519】セクション3.2.2 命令パイプライン
の休止優先順位 同時に2つ以上の休止が起こった場合には、表3.2に
より休止が解消される順番が決まる。 【0520】 セクション3.3 命令およびデータ・メモリ 各アソシエーション・エンジンのCMAは、プログラム
命令とプログラム・データの両方を保持するために用い
られる。そのため、CMAおよびMMAという用語は両
方とも、CMAと呼ばれる同一の物理的なRAMを指
す。アソシエーション・エンジンがこのメモリ内のデー
タにアクセスすると、これはCMAと呼ばれる。アソシ
エーション・エンジンがこのメモリ内の命令にアクセス
すると、これはMMAと呼ばれる。主な違いは、MMA
アクセスに関して実行される特殊アドレッシングであ
る。 【0521】図94のアソシエーション・エンジン0,
アソシエーション・エンジン1,アソシエーション・エ
ンジン3およびアソシエーション・エンジン4について
は、プログラム記憶部(MMA)に配置されたCMAの
2つの列がある。アプリケーションにより、MMA記憶
部のために用いられるCMAの数はもっと多くなること
もある。アプリケーションの要件に基づいて、データと
命令空間の折り合いをつけるのはプログラマの役割であ
る。 【0522】セクション3.3.1 命令キャッシング 各アソシエーション・エンジンには128ワードの命令
キャッシュが含まれ、命令に対するアクセスの高速化を
図っている。この命令キャッシュは、4つの32ワード
の直接マッピングされたキャッシュ・ラインとして編成
される(各命令は16ビット幅である)。 【0523】キャッシュ・ヒットまたはキャッシュ・ミ
スを決定するには、各命令の実行前に、命令タッグ(I
CT0ないしICT3)をPCのビット8ないし15と
比較する。PCがタッグ・レジスタのいずれとも一致し
ないと判定されると、次の命令を含む新しいライン(P
Cにより指示される)を命令キャッシュにロードしなけ
ればならない。 【0524】PCのビット7および6により、どのキャ
ッシュ・ラインがロードされるかが決まる。命令キャッ
シュは直接マッピングされているので、これらの2つの
ビットはロードすべきキャッシュ・ラインを明確に決定
する。PCのビット7および6が00であるときは、キ
ャッシュ・ライン#0がロードされる。同様にPCのビ
ット7および6が01である場合は、キャッシュ・ライ
ン#1がロードされる。ロードされているキャッシュ・
ラインに対応するキャッシュ・タッグ・レジスタ(IC
T0ないしICT3)には、PCの最上位バイトがロー
ドされる。また、命令キャッシュ有効レジスタ(ICV
R)内の対応するキャッシュ・ライン有効ビットがセッ
トされる。 【0525】CMAからキャッシュ・ラインをロードす
ると、命令の実行に1クロックの遅延が起こる。命令キ
ャッシュがロードされてしまうと、キャッシュ・ミスの
場合を除き、CMAからデータと命令の両方が同時にア
クセスされても時間的なペナルティは起こらない。アプ
リケーションがキャッシュに全体的に適合することがで
きれば、CMA全体をデータ記憶部として用いることが
できる。アプリケーションは、キャッシュがミスを起こ
さないようになっているものでなければならない。 【0526】 セクション3.3.2 CMAとMMAのマッピング CMA空間とMMA空間との間のマッピングは、初期の
バージョンのアソシエーション・エンジンと比較すると
簡素化されている。わずか4Kバイトの物理的メモリし
かないので、命令およびデータ・アクセスで4Kの空間
全体を見ることができる。各領域(命令またはデータ)
を4Kの空間に配置して管理するのは、プログラマの役
割である。図100に命令空間またはデータ空間として
の4K空間の最初の70バイトを示す。 【0527】セクション3.3.3 CMAに対する直
接アクセスと反転アクセス CMAには、CMAに対して直接アクセスと反転アクセ
スの両方を行うことができるメカニズムが備えられてい
る。図101は、直接CMAアクセスおよび反転CMA
アクセスの図を示す。CMAに対する直接アクセスの間
は、PE#0はCMA行#0からのデータを用い、PE
#1がCMA行#1のデータを用いるというようにな
る。CMAに対する反転アクセスの間は、PE#0がC
MA行#63からのデータを用いて、PE#1がCMA
行#62のデータを用いるというようになる。 【0528】CMAに対するアクセスはすべて、ポイン
タ間接アドレッシング(CMA[Pn])またはポイン
タ間接ポスト増分(CMA[Pn++])のいずれかを
用いる。いずれのアドレッシング・モードにおいても、
ポインタ・レジスタPnを用いてCMA内の列を指定す
る。CMAには64列あるので、各列に直接アクセスす
るためには、ポインタ・レジスタの6ビット(ビット5
ないし0)しか必要とされない。CMAに対する直接ア
クセス中には、ポインタ・レジスタのビット6は0とな
る。CMAに対する反転アクセスは、ビット6を1の値
にセットすることにより行われる。ポインタ・レジスタ
のビット7は用いられない。 【0529】このメカニズムには、128バイトのデー
タに処理要素がアクセスを行うことができるという利点
がある。またベクタ群を1つのクロック内に「フリッ
プ」させて、上向きシフトを妥当に行うこともできる。
上向きシフトは、以下のコード・セグメントにより実行
される: 【0530】;フリップされるベクタはCMAの第5列
(0を基準として) movi #$44,p0 ;$44は64+4(すなわ
ちp0のビット6をセットしてアクセス);列5(0を
基準として) vmov CMA[p0],vo ;「フリップ」された
列をv0に移動 dromov v0,v0 ;v0を1PEだけ下向きシ
フト vstore v0,CMA[p0] ;v0をフリップして
CMAの列4に戻す 【0531】このメカニズムは、CMAに対するすべて
のデータ・アクセス(リードおよびライト・アクセス)
について有効であるが、CMAに対する命令アクセスに
関しては効果をもたない。 【0532】セクション3.3.4 CMA空間の配置 CMAは、必要に応じてプログラマにより配置されるメ
モリ・ロケーションのセットである。本セクションで
は、プログラマに最大限の融通性を提供するために、ど
のようにCMA空間を配置したらよいかという例をいく
つか示す。 【0533】セクション2.3および2.4の説明で
は、CMAは1024個の連続したメモリ・ロケーショ
ンまたは処理要素あたり64個の8ビットのメモリ・ロ
ケーションとなることができる。この考えは両方とも正
しいが、命令の実行中にアソシエーション・エンジンに
よりCMAがどのように用いられるかを見なければどち
らも完全とは言えない。 【0534】以下の例では、例#1が最も簡単で、議論
の開始点となる。そこから、連続する例のそれぞれは段
階を追って複雑になり、前の例に含まれる情報に依存す
ることになる。そのため、進む前に各例を研究すること
が賢い方法である。 【0535】セクション3.3.4.1 例1:データ
記憶のみに用いられるCMA 図102に示される第1の例は、全コンフィギュレーシ
ョンの中で最も簡単なものである。この例は、以下のこ
とを前提としている:すなわち1)すべての計算用デー
タがCMAに保持されている;2)プログラム全体は命
令キャッシュ内にある(そのためにプログラムはCMA
空間を占有しない);3)命令push, pop, bsr, jsrri
およびjsrmi は用いられず、例外はオフになる(そのた
めにCMAはスタック・エリアを含む必要がない);
4)jsrmi もjmpmi も用いられていない(そのためCM
Aはジャンプ・テーブルをもつ必要がない)。 【0536】初期プログラム・カウンタ(EPPC)は
$0000にセットされていることに注目されたい。こ
れによりアソシエーション・エンジンはICからプログ
ラムの実行を開始する(ICT0ないしICT4=$0
0,ICVR=$0F,PBR=$00とする)。スタ
ック・ポインタ(EPSP)の初期値は、「無視され
る」である。これはこの例ではスタックを用いないから
である。 【0537】セクション3.3.4.2 例2:命令キ
ャッシュ,PCおよびCMAページ 命令キャッシュ(IC)は、CMAを主要なメモリ記憶
部として用いる直接マッピングされたキャッシュであ
る。ICは、4つのラインで構成され、各ラインはCM
Aの1つの列と等しい。CMAの列は、4つのグループ
にまとめられ、4列の各グループはページと呼ばれる
(図103に示される)。各ページの第1列は、キャッ
シュ・ライン#0に相当し、2番目がキャッシュ・ライ
ン#1,3番目がキャッシュ・ライン#2に、そして4
番目がキャッシュ・ライン#3に相当する。 【0538】CMAから列がICのラインにロードされ
ると、その列のページ番号がキャッシュ・ラインに関連
するキャッシュ・タッグ・レジスタ(ICT0ないしI
CT3)に入る。また、そのラインに関連するキャッシ
ュ・タッグ有効ビット(ICV0ないしICV3)がI
CVRにセットされる。 【0539】図104に示されるように、プログラム・
カウンタ(PC)は、論理的に3つの部分に分割され
る:すなわちPCの最上位の8ビットが現在の命令のペ
ージを示す;PCのビット7および6が現在の命令のラ
インに相当する;そしてPCのビット5ないし0がその
ラインの中の現在の命令に相当する。 【0540】命令プレフェッチが起こると、PCの上位
8ビットがPCのビット7および6により示されるライ
ンのICタッグ(ICT0ないしICT3)と比較され
る。正しいキャッシュ・タッグがPCビット15ないし
8と等しくない場合、または適切なラインのためのキャ
ッシュ有効ビット(ICVRのICV0ないしICV
3)がセットされていない場合は、キャッシュ・ミスと
なり、現在のPCを含むCMA列がPCビット7および
6により示されるICラインにロードされ、PCビット
15ないし8はPCビット7および6により指定された
キャッシュ・ライン・タッグに入れられる。 【0541】セクション3.3.4.3 例#3:プロ
グラムおよびデータに用いられるCMA この例は、プログラムが命令キャッシュ(IC)よりも
多少大きい場合を想定している。この場合には、プログ
ラムの一部をCMAに保管しなければならないが、プロ
グラムの大部分はIC内にある。前記の例のその他すべ
ての前提(命令と例外に関する)は、この例にも適用さ
れる。 【0542】図105の目的とする解釈(ICに関し
て)は、以下のとおりである: 1)プログラムには129から160までの命令(5キ
ャッシュ・ラインに等しい)が含まれる; 2)アソシエーション・エンジンには4つのキャッシュ
・ラインしかなく、そのためプログラムから「あふれ出
た」分はCMAに記憶しなければならない。 【0543】アソシエーション・エンジンは直接マッピ
ングされたキャッシュを用いるので、CMAのどの列が
IC内外と交換されるかはあらかじめわかっている。こ
の例では、列00および04はいずれもキャッシュ・ラ
イン#0を用いる必要があるが、キャッシュ・ライン#
1,#2および#3はオーバーライトされることはない
(そのために直接ICに入れることができる)ので、C
MA内の空間をそのために確保する必要はない。 【0544】セクション3.3.4.4 例#4:シフ
トしたプログラム 前記の例に対する別の方法として、プログラムを128
バイト前方に移動させる。これは、プログラムが$00
ではなく$80で始まることを意味する(アソシエーシ
ョン・エンジンではプログラムはロケーション$000
0から始まる必要がないことに注意)。そのためプログ
ラム・カウンタ(EPPC)の初期値は$0080にな
る。これは、プログラムをCMAの2列にわたりシフト
させる効果ももつ。 【0545】図106から、入れ替えられるキャッシュ
・ラインは今度はキャッシュ・ライン#2になる(前記
の例のようにキャッシュ・ライン#0を入れ替えるので
はなく)ことに注目することが重要である。これは、キ
ャッシュ・ライン#0,#1および#3が入れ替えられ
ることはないことを意味する。スタック・ポインタ(E
PSP)の初期値は依然として無視されるであるが、こ
れはスタックする命令と例外がイネーブルになっていな
いためである。 【0546】セクション3.3.4.5 #5:例#4
にジャンプ・テーブルを追加 jsrmi およびjmpmi などのメモリ間接命令に関しては、
CMAの最初の128バイトにジャンプ・テーブルを構
築しなければならない。この例では、ジャンプ・テーブ
ルは8個の間接的な16ビット・アドレスで構成され、
図107に示される。 【0547】ジャンプ・テーブルに含まれる情報は、デ
ータであって命令ではないと見なされるので、jsrmi ま
たはjmpmi 命令が実行されるたびに、間接アドレスが命
令キャッシュからではなくCMAから取り出される(命
令キャッシュ内で「ヒット」が起こるためには、マイク
ロシーケンサは命令アクセスを実行していなければなら
ない)。テーブルは、ダイナミックに更新される。しか
し、jsrmi またはjmpmi 命令が用いられると、少なくと
もCMAの1ラインが使われる。 【0548】セクション3.3.4.6 例#6:例#
4にCMAスタックを追加 2レベル以上のスタッキングを必要とするアプリケーシ
ョンは、CMAにスタック空間を配置しなければならな
い。第1レベル・スタック(FLS)により1つのスタ
ック・ロケーションが設けられるが、それ以上の場合は
CMAを用いる必要がある。図108の上部に見られる
ように、スタック・ポインタ(EPSP)の初期値は$
003fである。これは、アソシエーション・エンジン
がリセット状態から出たときに、最初に用いることがで
きるCMAスタック・ロケーションは$3fにあること
を意味する。 【0549】図108は、プログラムの実行中のCMA
スタックの状態を表そうとしている。いくつかのエント
リがCMAスタックに入れられ(黒い影の部分)、スタ
ック・エントリのいくつかはまだ用いられていない(斜
線部)。 【0550】セクション3.3.4.7 例#7:ベク
タおよびスケーラ記憶を例#4に追加 17バイト以上のスケーラ記憶部(G0〜G7,P0〜
P7)を必要とするアプリケーションまたは9バイト以
上のベクタ記憶部(V0〜V7)を必要とするアプリケ
ーションにおいては、CMAを採用していずれのタイプ
のデータについても一時的な記憶装置を提供することが
できる。図109を参照のこと。 【0551】列01はスケーラ記憶部のために用いら
れ、列$3eと$3fとはベクタ記憶部のために用いら
れる。 【0552】 セクション3.3.4.8 例#8:全部を一緒にする 最後の例として、前記の例の要件すべてを組み合わせ
た。これにはジャンプ・テーブル,CMAスタック,1
28バイトのベクタ記憶部のための空間(2列),64
バイトのスケーラ記憶部,2列のプログラム・コードの
ための空間および58個の64バイト・ベクタが含まれ
る。図110を参照のこと。 【0553】セクション3.4 アソシエーション・エ
ンジンの初期化 動作データがアソシエーション・エンジンに入力される
前に、デバイスの主要なエリアを初期化しなければなら
ない。反転RESET信号がアサートされ、次にネゲー
トされた後で、アソシエーション・エンジンの内部レジ
スタはすべてセクション2.3,アソシエーション・エ
ンジン・ホストがアクセスできるレジスタに指定される
状態にデフォルト設定される。ホストにより初期化する
ことが必要な内部ロケーションは、係数メモリ・アレイ
(CMA),マイクロコード・メモリ・アレイ(MM
A)およびその他の希望する制御関数である(アソシエ
ーション・エンジン・プログラムに128未満の命令が
含まれる場合には、命令キャッシュ,タッグ・レジスタ
および有効ビットをMMAの代わりに初期化する必要が
ある)。制御レジスタのリセット状態は、ネットワーク
処理前に最小限の準備しか必要としない状態であるよう
にすること。内部では、マイクロコード命令セットが、
ルーピング部と共に初期化部をもつ機能を提供する。詳
細については、セクション3.6.3,命令の流れのア
ソシエーション・エンジンの詳細を参照のこと。 【0554】最小限の初期化要件は、マイクロコード・
メモリ・アレイと、ポートのストリーム転送を管理する
ためのいくつかのその他の制御レジスタとを含む。 【0555】セクション3.5 ポート動作 アソシエーション・エンジンには4つのポートがあり、
制御側のホストおよびアソシエーション・エンジン’な
どの他のシステム・コンポーネントの両方に関する情報
の効率的な並行転送を容易にしている。ポートは、N,
S,E,Wとラベルがつけられ、それぞれノース,サウ
ス,イーストおよびウェストを表す。アソシエーション
・エンジンは、ポートを用いて統一のとれた働きをし、
複数のアソシエーション・エンジンを1つに接続するよ
うに設計されている。またアソシエーション・エンジン
は、一次元および二次元アレイでスケーリング可能に設
計されている。以下の説明に関しては、アソシエーショ
ン・エンジン・システムは二次元アレイに構築されるこ
とを前提としている。 【0556】すべてのコンフィギュレーション,ステー
タス,入力および出力値は、これらのポートを通じてホ
ストによりアクセスすることができる。アソシエーショ
ン・エンジンは、2つのモードのうち一方で動作するよ
うに設計されている。モードはR/反転S入力により選
択される。この入力は、アソシエーション・エンジンが
ラン・モード(VDDのR/反転S)にあるのか、スト
ップ・モード(GNDのR/反転S)にあるのかを決定
する。動作モードにより、アソシエーション・エンジン
のポートは異なる働きをする。特定のタイミング情報に
ついてはセクション4,アソシエーション・エンジン・
バス動作を参照のこと。アソシエーション・エンジンに
関する異なる信号の詳細についてはセクション2.2,
アソシエーション・エンジン信号の説明を参照のこと。 【0557】ラン・モードは、アソシエーション・エン
ジン・マイクロプログラムを実行するために用いられ
る。ストップ・モード(ホスト・モードとも呼ばれる)
は、アソシエーション・エンジンの内部リソースに対し
て外部アクセスを行い、システム・ホストによる初期化
およびデバッグを行うために用いられる。ポートは、ラ
ン・モードではニューラル・ネットワークのレイヤ間通
信またはアソシエーション・エンジン・デバイス間のレ
イヤ内通信のための接続バスとして用いることができ
る。 【0558】セクション3.5.1 ホスト転送モード ストップ・モードでは、アソシエーション・エンジンは
2つの異なるタイプの転送モードに対応する。これはラ
ンダム・アクセスとストリーム・アクセスである。ラン
ダム・アクセス・モードでは、ホストがアドレスおよび
データ情報を供給してリードおよびライトを実行する。
ストリーム・モードでは、データはホストにより供給さ
れ、アソシエーション・エンジン・デバイスが、アクセ
スされたロケーションのアドレスを内部で生成する。ア
ソシエーション・エンジン・バス・ポート動作の詳細な
タイミングについては、セクション4.1,アソシエー
ション・エンジン・ポート・タイミングを参照のこと。 【0559】アソシエーション・エンジンのアレイに
は、チップ選択として用いられる2つの信号がある。こ
れらの信号(反転ROWおよび反転COL)は、アソシ
エーション・エンジンのアレイから1つのデバイスを選
択するためのメカニズムを提供する。 【0560】ランダム・アクセス動作に関しては、反転
ROW信号および反転COL信号は、アクセスすべき1
つのアソシエーション・エンジンを選択するために用い
られる。ウェスト・ポートおよびノース・ポートにアド
レス情報が提示される。アドレス情報はイーストとサウ
スの方向に流れて、選択された(すなわち反転ROWお
よび反転COLの両方がアサートされた)デバイスに収
束する。一方、データは、選択されたデバイスからノー
ス(ライト動作)またはサウス(リード動作)の方向に
進む。反転ROWまたは反転COLのいずれか一方(両
方ではなく)をもつデバイスに関して、アドレスまたは
データは反転ROWおよび反転COLアサーションによ
り縦または横方向に転送される。 【0561】ストリーム動作(アドレスが内部で生成さ
れる)に関しては、データはアレイのサウスまたはイー
スト端(両方ではない)に対して、またサウスまたはイ
ースト端から流れる。このストリーミング動作は、基本
的にアレイから列または行を充てんあるいは排出する。
反転ROWラインおよび反転COLラインを用いること
により、サブセクションを選択して、アレイの一部だけ
で動作することもできる。 【0562】アソシエーション・エンジン・アクセス・
モードの以下の説明に関しては、アソシエーション・エ
ンジン・アレイ・コンフィギュレーションを示す図11
1を参照のこと。 【0563】セクション3.5.1.1 ランダム・ア
クセス・モード ポートの動作モードの説明は、ホスト側からではなく、
アソシエーション・エンジンのピンにおいて解説され
る。 【0564】ランダム・アクセス・モードは、アソシエ
ーション・エンジン内の個々のレジスタに対するアクセ
スを行うように設計されている。ランダム・アクセス・
モードを用いるレジスタにアクセスするには、ホストは
アドレス(WD,ND),データ(SD)および制御信
号(OP,反転NCI,反転WCI,R/反転W,反転
EN)を入れて、特定のポートのランダム・アクセス・
モードをイネーブルにする。アドレスおよび制御信号は
内部ラッチされて、特定のレジスタを選択するために解
読される。次のクロック・サイクルで、アクセスされた
データが転送される。ライト・サイクルについては、C
LK信号の立ち上がり端でデータがラッチされる。リー
ドに関しては、下がっているクロック・サイクル上でピ
ンからデータが出される。ランダム・アクセス・モード
でアクセスすることができるレジスタのリストは、表
2.5にある。 【0565】セクション3.5.1.2 ホスト・スト
リーム・アクセス・モード ストリーム・アクセス・モードにより、ホストは大量の
データを、内部レジスタをアドレスする必要なく、チェ
ーンに配列されたアソシエーション・エンジンのセット
に転送することができる。ストリーム・アクセス・モー
ドを用いて、アソシエーション・エンジンの初期化を行
ったり、アソシエーション・エンジンの状態をセーブす
ることもできる。ストリーム・アクセス・モードを用い
ている領域にアクセスするには、イースト・ポート・ス
トリーム・リードを行うには、ホストは制御信号反転R
OW,反転COL,反転EN,R/反転および反転WC
Iを起動して、EDからデータを受け取る;サウス・ポ
ート・ストリーム・リードを行うには、ホストは制御信
号反転ROW,反転COL,反転EN,R/反転および
反転NCIを起動して、EDからデータを受け取る;イ
ースト・ポート・ストリーム・ライトを行うには、ホス
トは制御信号反転ROW,反転COL,反転EN,R/
反転および反転ECIを起動して、EDにデータを入れ
る;サウス・ポート・ストリーム・ライトを行うには、
ホストは制御信号反転ROW,反転COL,反転EN,
R/反転および反転SCIを起動して、SDにデータを
入れる。制御信号は内部ラッチされて、特定の領域を選
択するために解読される。次のクロック・サイクルでア
クセスされたデータは転送を開始する。ライト・サイク
ルについては、データはCLKの立ち上がり端でラッチ
される。リードに関しては、データは下がっているクロ
ック・サイクル上でピンから出される。 【0566】ストリーミング動作に関しては、ホスト・
ストリーム選択レジスタ(HSSR)がアソシエーショ
ン・エンジンのどの領域にストリーミングされるかを制
御する。ストリーム・アクセス・モードでは、内部アド
レスがユーザのために生成される。これはOAR1およ
びOAR2レジスタで行われる。転送の期間はDCR1
およびDCR2レジスタで制御される。ストリーム・ラ
イトに関して補足すると、ホスト・ストリーム・オフセ
ット・レジスタ(HSOR)がデータ・ストリーム内へ
のオフセットまたは「いつ」充てんを開始するかを制御
する。 【0567】ストリーム充てん動作の開始時に、HSO
Rがカウンタにロードされ、これはストリームのデータ
の各バイト毎に減分される。カウンタがゼロになると、
アソシエーション・エンジンはストリームからメモリ内
にデータのコピーを開始する。このメカニズムにより、
アソシエーション・エンジンには1つのストリーム・ラ
イト動作で異なるデータ,重複するデータまたは同じデ
ータをロードすることができる。 【0568】ストリーム・リード動作では、HSORは
用いられない。代わりに、反転xCIおよび反転xCO
ピンを用いて、次のアソシエーション・エンジンを行ま
たは列内に信号化して、データの送出を開始する。スト
リーム・リードは、アソシエーション・エンジン’の最
もウェストまたはノースの反転xCI信号をアサートす
ることにより始まって、これらのアソシエーション・エ
ンジンにイーストまたはサウスにデータを送らせる。1
つのアソシエーション・エンジンが終了すると、ライン
内の次のアソシエーション・エンジンが信号化されて、
ストリームの最後にデータを追加する。 【0569】このアーキテクチャにOARおよびDCR
レジスタを入れる主な動機は、1つのニューロン(複数
のアソシエーション・エンジンにまたがることのある)
の係数のストリーム・リードまたはライトを行えるよう
にすることである。また、このメカニズムを用いて1つ
の入力に関するアソシエーション・エンジンの係数すべ
てをストリーム・リードまたはライトすることもでき
る。アクセスされた論理空間(HSSR)により、DC
R2およびOAR2レジスタが用いられることもあれ
ば、用いられないこともある。IDRまたはV0のよう
な一次元レジスタについては、DCR1およびOAR1
だけが用いられる。図112は、一次元ベクタ・レジス
タに関して、DCR1およびOAR1がどのように機能
するかを示す。 【0570】一次元のストリーム・アクセス・モードで
は、OAR1レジスタの値が開始アドレスとして用いら
れる(アソシエーション・エンジン内で)。内部カウン
タ(開始値は0)は、ストリームからコピーされた、あ
るいはストリームに書き込まれたバイト毎に増分され
る。カウンタがDCR1レジスタの値と等しくなると、
アソシエーション・エンジンは充てん状態から満杯状態
へと移行する。 【0571】ストリーム・モードでは、チェーン内で最
初のアソシエーション・エンジンが常になければならな
い。ライン内で最初のアソシエーション・エンジンは、
通常、反転xCI入力をアクティブに結合させており、
バス上でデータを制御する権利を与えている。ストリー
ム・モードで考慮すべきもう1つの点は、ホスト・アド
レスをアソシエーション・エンジン・アドレスに解読す
るインターフェース論理である。インターフェース論理
は、ストリーム動作のためのチェーンを形成するすべて
のアソシエーション・エンジンに対して、すべての制御
ラインをアサートできることが必要とされる。通常ホス
ト側からは、ストリーミング動作が1つのホスト・アド
レスを通じてデータにアクセスし、これがアソシエーシ
ョン・エンジン側のストリーム動作を制御する。詳細に
ついては、図116を参照のこと。 【0572】二次元ストリーム動作(CMA)に関して
は、第2セットのレジスタが用いられてストリーミング
・アクセスを制御する。この2つのレジスタはOAR2
およびDCR2制御レジスタである。これらのレジスタ
は、開始アドレス(アソシエーション・エンジン内で)
とカウント値とを提供するという点では、OAR1およ
びDCR1と同様である。DCR2に関しては別の内部
カウンタ(DCR1と同様の)がある。図113に、4
つのストリーミング・レジスタと、それらをどのように
用いてCMAへのアクセスを制御するかを詳細に示す。 【0573】セクション3.5.2 アソシエーション
・エンジン転送モード ラン・モードでは、アソシエーション・エンジンは4つ
のポートのどこからでもライト動作を実行することがで
きる。これはwrite 命令の制御下で行われる。ライト動
作のデスティネーションは、(ポートスイッチおよびタ
ップによるが)ライトの方向にあるデバイスのIDRレ
ジスタである。たとえば、アソシエーション・エンジン
がノース・ポートから書いたとすると、同じ列(上)を
共有するデバイスがデータを受け取ることができる。wr
ite 命令により実行される転送のタイプは、ホスト・ス
トリーム・アクセス・モードの場合と全く同じである。
IDRは動作のデスティネーションであるので、異なる
セットの制御レジスタが、いつどこでデータがIDRレ
ジスタに書き込まれるかを決める。IDRは、入力イン
デックス付けまたは入力タグ付けのいずれかによりロー
ドすることができる。 【0574】入力インデックス付けの場合は、捕捉され
た入力データは一連の連続した入力サンプルである。入
力タグ付けの場合は、入力ストリームには暗示されたサ
ンプル・カウントが含まれる(カウントは、0から始ま
り、入力サンプル毎に増える)。タッギング捕捉メカニ
ズムでは、IDRの各ロケーションに関連する内部タッ
グがある。2つのメカニズムの基本的な違いは、IDR
アドレス・レジスタが増分される条件である。この捕捉
メカニズムの詳細な説明については、セクション3.
5.2.1,入力インデックス付けおよびセクション
3.5.2.3,入力タグ付けを参照のこと。比較する
と、以下の説明はストリーム・アクセス・モードに関す
る第1の捕捉メカニズム(入力インデックス付け)を説
明する。 【0575】 セクション3.5.2.1 入力インデックス付け IDRにデータをロードするための基本的な方法は、入
力インデックス付け法である。この充てん法を用いる
と、IDRにはあるサイクル・カウントで始まる連続バ
イトがロードされる。IORレジスタには、データがい
つデータ・ストリームからIDRにロードされたかを示
すサイクル・カウントが含まれる。IPRおよびILM
Rレジスタは、IDRのどこに入力サンプルが入れられ
るかを判定する。ICRレジスタは、IDRにいくつの
サンプルがロードされるかを決める。 【0576】IPRおよびICRレジスタは、次のよう
な場合にシャドウ化される(隠される):すなわち1)
レジスタがロードされたとき;2)done命令が実行され
たとき;3)IDRCアドレッシング・モードが用いら
れたとき;および4)反転RESET信号がトグルされ
たとき(1−>0−>1)。 【0577】IPRレジスタは、IDRに対するインデ
ックスとして用いられ、次のデータ・サンプルのロケー
ションを決める。ILMRレジスタは、IPRのビット
位置をマスク(無視)するために用いられる。これは、
IDR内のバイトを二倍にするという融通性をもたら
す。たとえば、IPRに$00が含まれILMRに$0
3が含まれているとすると、IDRにロードされる最初
のバイトは、ロケーション$00,$01,$02およ
び$03に入れられる。次のバイトは、$04,$0
5,$06および$07と入れられていく。IPRは、
サンプル毎に4ずつ増分されるので、IPRはIDR内
の次の空きスポットを指し示す。 【0578】IPRとILMRがどのように用いられる
かの理解を助ける2つの概念がある:すなわち一次アド
レッシングと二次アドレッシングである。内部アドレス
を生成して入力インデックス付けモード中にIDRにア
クセスする際には、IPRが一次アドレスを維持する役
割をもつ。この一次アドレスは、IDRの1つのロケー
ションを指し示す。IPRの内容がILMRの内容と組
み合わせられると、二次アドレスのセットが生成され
る。以下の例#2(ILMR=$3)および例#3(I
LMR=$4)では、グラフ内に2つの異なるレベルの
シェーディングがある。グレーの最も濃いシェードは、
一次アドレス(IPRのみ)を用いてIDRに入れられ
たデータを示す。グレーの明るいほうのシェードは、二
次アドレス(IPR&ILMR)を用いてIDRに入れ
られたデータを示す。 【0579】 セクション3.5.2.2 ILMRを用いる例 ラン・モード中にILMRを用いてIDRをロードする
ための規則を、ここにもう一度繰り返す: ・ILMRのビットは内部生成されたアドレスに関して
「無視する」として働く。すなわち、データはアドレス
が「無視された」ときに選択されたIDRロケーション
内にロードされる。たとえば、00110000という
ILMR値は、IDRアドレスのビット4および5を
「無視する」が、これは同じデータがIDRロケーショ
ン00000000,00010000,001000
00および00110000に送られることを意味す
る。 【0580】・IPRは、ILMR内の最下位の「0」
のロケーションに比例して増分される。すなわち、最下
位の0がビット・ロケーション0にある場合は、IPR
は20増分されるか、あるいはデータがIDRに入れら
れるたびに1ずつ増分される。最下位の0がビット・ロ
ケーション3にある場合は、IPRは毎回8ずつ増分さ
れる。 【0581】以下の3つの例では、アソシエーション・
エンジンにストリーミングされるデータは図114で指
定される。各ボックスは、8ビットの単一のデータを表
す。 例#1:ILMR=0 ILMR=$00で(リセットから出た場合)IPR=
0(IDR=「0」を指す)の場合、IDRにロードさ
れる新しいデータはそれぞれ次の可能なIDRロケーシ
ョンに入れられる。このデータの流れの表を、表3.3
に示す。 【0582】例#2:ILMR=$3 ILMR=$3(00000011)でIPR=0(I
DR[0]を指す)の場合は、IDRにロードされる最
初のデータがIDR[0],IDR[1],IDR
[2]およびIDR[3]に入り、IPRは22 (4)
だけ増分される。その結果、新しいIPRロケーション
はIDR[4]となる。IDRにロードされる2番目の
データはIDR[4],IDR[5],IDR[6]お
よびIDR[7]に入り、IPRは4だけ増分される。
16個のデータが受け取られると、IDRは完全にロー
ドされる。表3.4に、一次アドレスは濃いシェーディ
ングで、二次アドレスは明るいシェーディングで表され
る。このデータの流れの表を表3.4に示す。 【0583】例#3:ILMR=$4 ILMR=$4(00000100)でIPR=0の場
合は、IDRにロードされる最初のデータはIDR
[0]およびIDR[4]に入り、IPRは20だけ増
分されてIDR[1]ロケーションになる。IDRにロ
ードされる2番目のデータはIDR[1],IDR
[5]にロードされ、IPRはロケーションIDR
[2]に増分される。表3.5に、一次アドレスは濃い
シェーディングで、二次アドレスは明るいシェーディン
グで表される。このデータの流れの表を表3.5に示
す。 【0584】表3.5では、IPRは$00で始まり、
新しいデータがIDRに入れられるたびに1ずつ増分さ
れるものとする。(このデータは、表3.5で濃くシェ
ーディングされているエントリにより表される)。IL
MRはIDRに対して「アドレス・マスク」として働
き、この例ではILMRの値は$4である。これにより
ビット2(ビット0から数えて)は「無視される」。I
DRアドレスのこの「無視」により、明るいシェーディ
ングをつけられたデータ値もIDRに入れられる。 【0585】t3とt4との間、t7とt8との間のデ
ータ挿入の奇妙な移行は、この無視に直接関係する。時
刻t0においてもt4においても、有効IDRアドレス
は00000x00(00000000のIPR値と0
0000100のILMR値とを組み合わせたもの)で
あるので、ロケーション00000000および000
00100にはいずれも同じデータ(10)が書き込ま
れる。同様に時刻t1とt5において、有効IDRアド
レスは00000x01であるので、ロケーション00
000001および00000101には、いずれも同
じデータ(23)が書き込まれる。 【0586】セクション3.5.2.3 入力タグ付け さらに融通性を得るために、入力タッグ捕捉メカニズム
が設けられる。このメカニズムは、IDRをロードする
動作に関して入力インデックス付けの代替となる。この
捕捉メカニズムは、ポート制御レジスタ(PCR)の充
てんモード(FM)ビットによりイネーブルになる。こ
の捕捉メカニズムは、特殊なニューラル・ネットワーク
接続を必要とする計算動作のためにIDRをロードする
ために用いられる。 【0587】この捕捉メカニズムにより、アソシエーシ
ョン・エンジンは入力ストリームから、無作為な増加順
で、入力サンプルを選択的に捕捉することができる。こ
のメカニズムでIDRにアクセスするには、まずホスト
はITRレジスタに用いようとするタッグをロードし
て、PCRのFMビットの値をIDR充てんに関してI
TRをイネーブルするようにセットする。ホストはアソ
シエーション・エンジンのチェーンにデータを送ってい
るポートの1つに、データおよび制御情報を入れる。制
御信号が内部ラッチされ、解読される。データがアソシ
エーション・エンジンを通過すると、内部カウンタが増
分される。カウント値が現在の入力タッグ値と一致し
て、反転xCI入力がアクティブになると、入力サンプ
ルがIDRにロードされる。このプロセスは、すべての
入力サンプルがIDRにロードされるか、ICRカウン
トに到達するか、あるいは昇順値でないタッグ値に到達
するまで続く。 【0588】入力タグ付け捕捉メカニズムを用いる例を
図115に示す。この例は、6個のサンプルの合計入力
フレーム(このうちいくつかは用いられない)と3つの
ニューロンの出力レイヤ(すべての接続が用いられるわ
けではない)とを示す。この例では、わかりやすくする
ために、CMAおよびITR,IDRレジスタだけが図
示される。これを実現するには、入力タグ付けメカニズ
ムが、必要な入力サンプルのみをロードするために用い
られる(ITRの値は捕捉すべき入力サンプルのカウン
ト値としている)。出力ニューロンが必要な係数だけを
用いるようにするために、CMAはベクタ・エンジン処
理マスク・ビット(VT)にロードするために用いられ
るビット・パック・マスクを保持する。これはVTビッ
トをロードして、どの係数がベクタ・エンジンの伝播関
数に関与するかを示すために用いられる。vlshftt マイ
クロコード命令が、ビットを含むマスク・ビットを抽出
し、それをVTビットにシフトさせるために用いられ
る。 【0589】入力タッグ捕捉メカニズムはベクタ・エン
ジン処理マスク・ビット(VT)と共に、完全に接続さ
れていないニューラル・ネットワークまたは受信フィー
ルドの概念を用いるパラダイムを実現するための強力な
方法となる。 【0590】セクション3.5.3 アソシエーション
・エンジンのためのホスト・メモリ・マップ ホストがアソシエーション・エンジンの内部ロケーショ
ンにアクセスするためには、ホスト・バス信号を解読し
て、それをアソシエーション・エンジンの適切な制御信
号に翻訳するなんらかの形のインターフェース回路構成
が必要である。インターフェース論理はホストに依存す
るが、ホストのためのメモリ・マップは多少包括的にな
ることがある。図116に、メモリ・マップの一例を示
す。 【0591】図116は、図111に示されたバスのた
めのメモリ・マップを詳細に示す。この例では4機のア
ソシエーション・エンジン・デバイスがある。図116
では、アソシエーション・エンジンのランダム・マップ
にそれぞれ1つずつ、4つの8キロバイト領域がある。
この32キロバイトの領域の下にストリーミング・ロケ
ーションがある。ホスト側から見ると、ストリーム動作
は1つのロケーションにデータを転送しているように見
える。 【0592】インターフェースの設計者は、ストリーム
・ロケーションを望ましい任意のアドレス範囲にマッピ
ングすることができる。これにより、インターフェース
論理とホストのアドレス空間との間で折り合いをつける
ことができる。 【0593】 セクション3.6 アソシエーション・エンジン動作 アソシエーション・エンジンは、基本的には8ビットの
並行処理アレイである。アソシエーション・エンジンは
8ビットの入力サンプルを取り込み、その入力について
並行に動作する。MMAに書き込まれたマイクロコード
により、さまざまな作業を行うことができる。本セクシ
ョンでは、IDRに有効な入力データが入れられた後に
起こる包括的動作および詳細な動作を説明する。この議
論を容易にするために、アソシエーション・エンジン内
部構造のブロック図を図117に示す。このブロック図
は、CMAがベクタ・エンジンによりアクセスされなが
ら、IDRレジスタ内のロケーションに並行にアクセス
することができることを示す。 【0594】セクション3.6.1 アソシエーション
・エンジンの概要 アソシエーション・エンジンは、4つの状態のいずれか
1つになりうる。この状態とは、アイドル,入力,実行
および出力である。移行の流れについては図118を参
照のこと。 【0595】入力状態関数はすでにセクション3.5,
ポート動作で説明した。この議論については、入力状態
および実行状態が別のものであることを前提とする(ベ
クタ・エンジンのデータ入力と実行とを同時に行うこと
ができるアソシエーション・エンジンのコンフィギュレ
ーションがある。これについては、後で詳述する)。I
DRにすべての入力サンプルがロードされると、アソシ
エーション・エンジンは実行状態に移行する。 【0596】実行状態では、アソシエーション・エンジ
ンは入力データおよび係数データに関して、マイクロコ
ード・ルーチンを通じて動作する。ユーザが欲しいだけ
の数の異なるマイクロコード・ルーチンが可能である
(MMAが満杯になるまで)。スケーラ・エンジンによ
り設けられるルーピング構造により、アソシエーション
・エンジンはシステムのコンフィギュレーションと実現
されるパラダイムとに基づき、一定の回数だけマイクロ
コードを実行することができる。どのルーチンを実行す
るかという選択は、アソシエーション・エンジンが前向
き(フィードフォワード)の情報の流れにあるのか、後
向き(バックワード)の情報の流れにあるのかにより決
まる。 【0597】ループの最後で、アソシエーション・エン
ジンは出力状態に入ることができる。この時点で、アソ
シエーション・エンジンはあるポートでアソシエーショ
ン・エンジン’に対してデータの転送を開始してもよ
い。アソシエーション・エンジンがwrite マイクロコー
ド命令の実行によりバス・マスタになると、出力状態が
生成される。そのため、厳格に言うと、出力状態とは実
行状態の下部構造セットである。ここではアソシエーシ
ョン・エンジン・デバイス間でデータを転送することを
論じるために説明されている。すべてのデータが転送さ
れると、アソシエーション・エンジンはアイドル状態に
入る。この時点で、ホストは割込により通知されて、ア
ソシエーション・エンジン(サブシステム)が次の入力
ベクタの準備ができていることを示す。次にホストは、
アソシエーション・エンジン・ステータス・レジスタに
アクセスして、アソシエーション・エンジンが出力位相
を完了したステータスをクリアする。ホストは、次の入
力ベクタを供給して、このプロセスが繰り返される。 【0598】アソシエーション・エンジン’のマイクロ
コードによっては、アソシエーション・エンジンはアソ
シエーション・エンジン’のコマンドから、入力/実行
状態に入ることがある。このような状況は、あるニュー
ロン(またはすべてのニューロンの)係数が学習を容易
にするための調整を必要としていると、アソシエーショ
ン・エンジン’が判断した場合に起こる。アソシエーシ
ョン・エンジンがアイドル状態にいる間に、アソシエー
ション・エンジン’は、ポートを通じてアソシエーショ
ン・エンジンになんらかの行動を示すコマンドを送る。
この行動はニューロンの係数の調整であったり、あるい
は新しいニューロンをシステムに加えることであったり
する。このコマンド関数は、いくつかの方法で実行する
ことができる。アソシエーション・エンジン’は、アソ
シエーション・エンジンに対して信号機(semaphore )
を送り返して、どの行動を起こすかを示すことができ
る。 【0599】アソシエーション・エンジン’がアソシエ
ーション・エンジンにデータを送り返す場合には、入力
状態への移行と、その後の実行状態への移行が起こる。
送り返されるデータは、2つの形式をとることができ
る。1つは、ベクタ値データ(逆伝播の場合のエラー・
ベクタのような)である。2つめは、アソシエーション
・エンジンに対して一定のルーチンを実行するように命
令する信号機である。そのためアイドル状態から入力状
態または実行状態への移行が可能になる。この時点で、
マイクロコード・ルーチンの1つ(フィードフォワード
ではない)が実行されて、ニューロン係数に関してなん
らかの学習アルゴリズムが実行される。 【0600】セクション3.6.2 ホストとアソシエ
ーション・エンジンの対話の詳細な説明 本セクションでは、ホストとアソシエーション・エンジ
ンとアソシエーション・エンジン’との間の動作の流れ
を説明する。この説明により、ホストとアソシエーショ
ン・エンジンの対話だけ、またアソシエーション・エン
ジン’が加わる場合のいくつかの場面が示される。 【0601】ホストからアソシエーション・エンジンに
データを入力するには、2つの基本的な方法がある。1
つは充てん後計算(fill-then-compute )であり、もう
1つは充てん中計算(compute-while-filling )であ
る。この2つの充てん方法は、ホストが実行する動作は
同様であるが、それらが実行される順序が異なってい
る。この方法によりユーザは、IDRのロードとマイク
ロコードの計算との間の並行演算の量を決定することが
できる。 【0602】 セクション3.6.2.1 入力有効ビット IDRレジスタには、ベクタ・エンジンが伝播関数で用
いる入力データが含まれている。IDR内の各レジスタ
・ロケーションには、有効ビットが含まれている。 【0603】これらの有効ビットは、IDRロケーショ
ンに書き込みが行われたときにセットされる。この有効
ビットは、3つの異なるメカニズムのいずれか1つによ
りクリアすることができる:すなわち1)反転RESE
T信号;2)clearv命令および3)restart 命令であ
る。ラン・モードでは、アソシエーション・エンジンが
命令の実行を開始する。有効でないIDRロケーション
が参照されると、ベクタ・エンジンは有効入力データを
待つ。有効入力データが来ると、ベクタ・エンジンはM
MAに含まれる動作を実行する。ベクタ・エンジンはP
[0]〜P[7]レジスタを用いて、用いられる現在の
入力サンプルを選択する。P[0]〜P[7]ポインタ
も有効ビットを選択し、ベクタ・エンジンは入力サンプ
ルが有効であるか否かを判定することができる。有効な
データに関してベクタ・エンジンの行動の動作を制御す
る論理を形成するのは、IDR有効ビットである。図1
19は、IDR有効ビットが論理的にどのように構築さ
れるかを示す。IDR有効ビットは、実際には処理要素
のそれぞれのベクタ・プロセス制御レジスタ(VPC
R)に位置している。 【0604】前述のようにPレジスタは、動作のための
1つのIDRロケーションを選択するために用いられ
る。IDRレジスタはまた、ベクタ・ソースとしても用
いることができる。この場合は、IDRレジスタが有効
である場合を判定するために、より複雑な規則が用いら
れる。1つの有効ビットを見るだけでなく、全部の有効
ビットが用いられる。IDRレジスタが有効であるか否
かを判定するために、有効ビットと、IDRロケーショ
ンに対応する関連のPE VTビットとの間でチェック
が行われる。VTビットがクリアされる(非アクティブ
のPE)と、有効ビットの状態は無視になる。一方VT
ビットがセットされる(アクティブのPE)と、有効ビ
ットの状態を用いてIDRレジスタの有効性を判定す
る。アソシエーション・エンジンは、すべての有効ロケ
ーション(セットされたVTビットとセットされた有効
ビット)が真になるまでは、動作を進行させるのを待
つ。 【0605】以下の説明では、流れ図の各ボックスにつ
けられた番号は、図118の状態番号に対応する。以下
の流れ図では、関連する行動だけが説明される。ホス
ト,アソシエーション・エンジンおよびアソシエーショ
ン・エンジン’はすべて、望ましい状態に初期化されて
いることを前提とするので、流れ図では関係のある情報
しか説明しない。以下の図においては、図16のバス相
互接続構造を参照のこと。 【0606】セクション3.6.2.2 充てん後計算 この場合は、ホストはIDRを充てんしてから、ベクタ
・エンジンに伝播関数を実行するように命令する。スタ
ンドアロン・アソシエーション・エンジン・システムの
ための基本的な流れを図120に示す。 【0607】この流れでは、アソシエーション・エンジ
ンはリセット状態で始動する。次のステップはホストに
より実行される。次にホストは、IDRレジスタにデー
タをロードする(ホストにより書き込まれるロケーショ
ンは、そのロケーションの有効ビットを自動的にセット
することに留意)。次にホストは、最後のIDRロケー
ションをロードして、アソシエーション・エンジン・マ
イクロコードを解放する(アソシエーション・エンジン
は有効データを待つことに留意)。アソシエーション・
エンジン内での最初のmove命令は、IDR全体がロード
されるまでアソシエーション・エンジンを待たせるため
に用いられる。この時点でアソシエーション・エンジン
はIDRにロードされたデータの計算を開始する。計算
の最後には、done/clearv 命令がある。このとき、アソ
シエーション・エンジンは有効ビットをクリアして、ホ
ストを待機する。ホストは、ポーリング・ルーチンまた
は割込ルーチンのどちらかを用いて、アソシエーション
・エンジンが終了したことを知らせることができる。こ
の時点でホストはIDRに新しい入力データを書き込
み、流れは以前と同様に続く。 【0608】アプリケーションにより、アソシエーショ
ン・エンジンが入力データに関して複数回動作すること
が求められる場合(入力ベクタ内のウィンドウをサー
チ)は、clearv命令は除かれる。 【0609】セクション2.6.2.3 充てん中計算 この方法は、ホストとアソシエーション・エンジンとの
間の並行度は、充てん後計算の場合よりもはるかに多く
なる。スタンドアロン・アソシエーション・エンジン・
システムのために基本的な流れを図121に示す。 【0610】この流れでは、アソシエーション・エンジ
ンはリセット状態から始動する。IDRには無効データ
が含まれるので(有効ビットはリセット時にクリアさ
れ、まだホストによりロードされていない)、ベクタ・
エンジンはデータを待つ。この時点でホストは、IDR
にデータをロードし始める。ホストがIDRへのデータ
のロードを開始すると、ベクタ・エンジンは伝播関数の
計算を開始することができる。そのため、入力状態と実
行状態とが全く別のものであった前述の流れとは異な
り、この流れ(充てん中計算)により入力状態と実行状
態とがかなり重複する。計算の最後に、done/clearv 命
令が実行される(これでIDR有効ビットがクリアされ
る)。このときアソシエーション・エンジンはホストを
待つ。ホストは、ポーリング・ルーチンまたは割込ルー
チンのどちらかを用いて、アソシエーション・エンジン
が終了したことを知らせることができる。 【0611】セクション3.6.2.4 アソシエーシ
ョン・エンジンとアソシエーション・エンジン’との対
話 ここでは、アソシエーション・エンジンとアソシエーシ
ョン・エンジン’との対話の説明を行う。アソシエーシ
ョン・エンジン’はいくつかのアソシエーション・エン
ジンからの部分シナプス結果を集合させてその結果の和
に出力関数を実行するために用いられることに留意され
たい。これには、アソシエーション・エンジンがアソシ
エーション・エンジン’に何らかのプログラム制御下で
出力を「送る」ことが必要になる。さらにアソシエーシ
ョン・エンジン’は、アソシエーション・エンジンに情
報を送り返すこともできる(シェルフ係数または全係数
の調整のように)。基本的な流れを図122に示す。 【0612】この流れでは、アソシエーション・エンジ
ンはリセット状態で始動する。IDRには無効データが
含まれるので(有効ビットはリセット時にクリアされ、
まだホストによりロードされていない)、ベクタ・エン
ジンはデータを待つ。この時点でホストは、IDRにデ
ータをロードし始める。ホストがIDRへのデータのロ
ードを開始すると、ベクタ・エンジンは伝播関数の計算
を開始することができる。フィードフォワード計算位相
の最後に、アソシエーション・エンジン内でwrite 命令
が実行される。この命令は、V[0]レジスタの値をア
ソシエーション・エンジン’に送る。アソシエーション
・エンジン’には、IDRに対する引用部がある。この
引用部によりアソシエーション・エンジン’は、有効デ
ータがIDRに現れるまで待つ。 【0613】アソシエーション・エンジン’では、ルー
チンの最後にwrite G0が発されて、アソシエーション
・エンジンに対してなんらかの行動をとるように伝え
る。アソシエーション・エンジンでは、命令ループがア
ソシエーション・エンジン’を待つ。このとき、アソシ
エーション・エンジンで実行を開始する別のルーチンを
選択してもよい。このルーチンを用いると、アソシエー
ション・エンジン内の係数の1つまたは全部を調整する
こともできる。また、アソシエーション・エンジン’か
らアソシエーション・エンジンへの転送は、ブロードキ
ャスト・タイプであり、すべてのアソシエーション・エ
ンジンがアソシエーション・エンジン’により転送され
たものを受け取る点に留意されたい。この計算の最後に
は、done/clearv 命令がある。この時点でアソシエーシ
ョン・エンジンは有効ビットをクリアして、ホストを待
つ。ホストは、ポーリング・ルーチンまたは割込ルーチ
ンのどちらかを用いて、アソシエーション・エンジンが
終了したことを知らせることができる。 【0614】セクション3.6.3 命令の流れのアソ
シエーション・エンジンの詳細 アソシエーション・エンジンの実行状態の間は、スケー
ラ・エンジンがベクタ・エンジンに対して命令を発して
いる。この命令(セクション2.5,アソシエーション
・エンジン・マイクロコード命令セットの概要を参照)
により、多くのさまざまな伝播および集合アルゴリズム
を構築することができる。またファジー論理アプリケー
ションのためのファジー化を実行するという融通もあ
る。本セクションでは、スケーラ・エンジンのマイクロ
動作についても説明する。 【0615】スケーラ・エンジン・マイクロコード命令
の流れは、図123でグラフに示されている。図123
では、halt, doneおよびdskip 命令が説明されている。 【0616】マイクロシーケンサ内には、マイクロコー
ド・プログラム・カウンタPCがある。リセット状態か
ら出ると、PCの値はEPPCレジスタに含まれるアド
レスと共にロードされる。SPレジスタにはEPSPレ
ジスタに含まれるアドレスがロードされる。SPレジス
タがロードされると、第1命令がフェッチされる。アソ
シエーション・エンジンがマイクロコード実行を開始す
る(指示されたIDRロケーションが空で入力のロード
が開始される)と、MMA内のマイクロコード命令がア
クセスされ実行される。ルーチンが、まだ到着していな
い入力データ(有効とマークされていないIDRロケー
ション)を要求した場合は、マイクロシーケンサは有効
データがIDRに入るまで休止される。フィードフォワ
ード・ルーチンの終点付近には、dskip 命令があり、こ
れがループを閉じる。dskip 命令を実行すると、PCレ
ジスタにはdskip 命令に含まれるPC値がロードされ
て、選択されたGレジスタが1だけ減分される。この流
れは、Gレジスタが0になるまで続く。この時点でアソ
シエーション・エンジンは、実行状態を出て(done命令
を用いることにより)、前述のように出力状態に入るこ
とができる。 【0617】MMAにロードされている他のマイクロコ
ード・ルーチンの選択は、アソシエーション・エンジ
ン’から送り返された可能なコマンドにより決定され
る。フィードフォワード計算とアソシエーション・エン
ジン’に対する部分シナプス結果の転送の最後に、アソ
シエーション・エンジン’はアソシエーション・エンジ
ンがどのような行動をとるべきかを示すことができる。
アソシエーション・エンジン/アソシエーション・エン
ジン’コマンド構造においては、アソシエーション・エ
ンジン’はどのルーチンを実行すべきかを示すことがで
きる。これらのルーチンの流れは、フィードフォワード
・ルーチンの流れと同じである。ルーチンの終了時に
は、アソシエーション・エンジンは別のフィードフォワ
ード・サイクルを開始する用意ができている。 【0618】セクション3.6.4 アソシエーション
・エンジン例外モデル アソシエーション・エンジンにおこりうる例外には、い
くつかのタイプがある。これらはスケーラ命令で対処し
なければならないものと、ベクタ命令で対処しなければ
ならないものがある。複数のアソシエーション・エンジ
ンの対話に関わるものもある。本セクションでは、起こ
りうる種々の例外と、アソシエーション・エンジンがそ
れにどのように応答するのかを説明する。 【0619】アソシエーション・エンジンは、命令境界
においてのみ例外に応答する。この原則に対する例外は
ポート・エラー例外であり、この場合は例外が検出され
るとすぐに命令(write タイプが多い)は終了される。 【0620】例外を検出すると、アソシエーション・エ
ンジンは3つの作業を行う。まずリセット例外の場合を
除き、アソシエーション・エンジンは現在のPCをスタ
ックに入れる。PCの値は次に実行可能な命令のアドレ
スとなる。次にアソシエーション・エンジンは例外ポイ
ンタ表(セクション2.3.44参照)にあるベクタ表
から例外ベクタを獲得する。最後にアソシエーション・
エンジンは、対応する例外ハンドラ内で例外処理を開始
する。 【0621】セクション3.6.4.1 リセット例外 リセット例外処理は、2つのイベントが検出された場合
に起こる。反転RESETラインがアサートされてから
ネゲートされ、R/反転Sラインはラン・モードになけ
ればならない。これらの2つのイベントが起こると、ア
ソシエーション・エンジンはリセット例外処理を開始す
る。まずアソシエーション・エンジンはFLSレジスタ
に空とマークをして、記憶されているスタック・ポイン
タ値がないことを示す。次にアソシエーション・エンジ
ンは、EPPCとEPSPからそれぞれ初期のPC値お
よびSP値をフェッチして、PCによりアクセスされた
最初の命令で実行を開始する。 【0622】セクション3.6.4.2 スケーラ例外 スケーラ例外には起こりうる2つの例外がある:1)ス
ケーラ・ゼロによる除算と2)算術演算オーバーフロー
である。いずれのタイプのスケーラ例外も、EMR(例
外マスク・レジスタ)のSDEMビットおよびSVEM
ビットを用いることによりマスクすることができる。す
なわち、例外処理をイネーブルにすることもディスエー
ブルにすることもできる。スケーラ例外に関しては、F
LSレジスタは用いられない(空であっても)。検出さ
れるとPC値はスタックに入れられ、適当な例外ベクタ
がフェッチされ、例外ハンドラが実行される。例外ルー
チンが終了すると、rte 命令によりアソシエーション・
エンジンは通常の命令ストリームに戻る。 【0623】セクション3.6.4.3 ベクタ例外 ベクタ例外には起こりうる2つの例外がある:1)ベク
タ・ゼロによる除算と2)算術演算オーバーフローであ
る。いずれのタイプのベクタ例外も、EMR(例外マス
ク・レジスタ)のVDEMビットおよびVVEMビット
を用いることによりマスクすることができる。すなわ
ち、例外処理をイネーブルにすることもディスエーブル
にすることもできる。ベクタ例外は、PEはどれでも例
外を起こす可能性がある点でスケーラ例外とは多少異な
っている。例外を起こしたPE(またはPE群)を判定
するのは例外ハンドラの役割である。ベクタ例外に関し
ては、FLSレジスタは用いられない(空であって
も)。検出されるとPC値はスタックに入れられ、適当
な例外ベクタがフェッチされ、例外ハンドラが実行され
る。例外ルーチンが終了すると、rte 命令によりアソシ
エーション・エンジンは通常の命令ストリームに戻る。 【0624】 セクション3.6.4.4 ポート・エラー例外 ポート・エラー例外は、命令またはタップおよびスイッ
チ・コンフィギュレーションにより起こることがある。
ポート・エラー例外には4種類ある。IDR競合,ポー
ト衝突,ポート挟み込みおよびスイッチ例外である。す
べてのアクセスに関して、ポート・エラー例外ハンドラ
が呼び出される。ポート・エラーが上記の4つの例外の
1つによるものであるか否かを判定するのは例外ハンド
ラの役割である。APMRレジスタおよびPCRレジス
タに応答指令信号を送ることにより、ハンドラは例外の
タイプを判定する。 【0625】挟み込み例外および衝突例外は、内部writ
e 命令と外部のデータ移動の結果である。これによりス
タックに入れられたPC値は、次に実行可能な命令を指
示する。競合の場合は、アソシエーション・エンジンは
命令を実行中であることも、そうでない場合もある。do
neまたはhalt命令中である場合もある。競合はラン・モ
ード中にアソシエーション・エンジンに同時にライトが
起こった結果である。そのため、PC値は有効である場
合も有効でない場合もある。競合例外の場合のアソシエ
ーション・エンジンの状態に関わらず、例外ハンドラが
呼び出される。rte 命令があると、前の状態が回復され
る(doneまたはhaltで待機中など)。 【0626】 セクション3.6.4.5 複数ポート割込エラー例外 表3.6に、個々の可能なポート・エラー例外をすべて
示す。PCRおよびAPMRに他のビットの組合せがあ
る場合には、それは複数ポート・エラー例外によるもの
である。以下の説明では、複数ポート・エラー例外の5
つの例を解説する。 【0627】複数ポート・エラーがあるときには、PC
RをAPMRと共に用いてエラーの原因を判断しなけれ
ばならない。ポート・エラーは、内部例外状態を発生
し、それによってPC値とSP値とがスタック上に押し
出され、ポート例外ベクタがEPPEレジスタにフェッ
チされる。ポート例外は、ラン・モード動作の間しか起
こらない。 【0628】PCRは制御レジスタであり(現在のタッ
プおよびスイッチ設定値を反映する)、APMRはステ
ータス・レジスタである(アソシエーション・エンジン
による現在のデータ移動を反映する)ことに留意するこ
とが重要である。APMRそのものを用いても、ポート
例外の原因を判断するには不充分である。 【0629】表3.6を検証する別の方法は、APMR
のどのビットがPCRのビットにより処理されるかを示
すことである。このリストは、ポート衝突例外がPCR
のビット設定値に依存していないので完全ではない。表
3.7にAPMRに関するより詳しい情報がある。 【0630】例#1:N−W IDR競合 第1の例にはエラー条件が1つ含まれる。表3.8のP
CR設定値からわかるように、ノース・ポートおよびウ
ェスト・ポートのタップ・ビットは閉じられており(接
続されている)、データはノース・ポートとウェスト・
ポートの両方に同時に書き込まれる。これがIDRリソ
ースに対する競合を起こし(両方が同時にIDRに書き
込もうとしている)、アソシエーション・エンジンは例
外状態に入る。図124は例#1のデータの動きを示
す。 【0631】 例#2:N−W IDR競合/Eポート挟み込み この例には2つの異なるエラー条件があり、図125に
示される。表3.9は例#2のアクティブ・ビットを示
す。前と同様に、ノースおよびウェスト・タップ・ビッ
トがセットされ、イースト−ウェスト・スイッチがセッ
トされている。ノース・ポートとウェスト・ポートの両
方に対する外部ライトにより、N−WIDR競合例外が
起こる。E−Wスイッチが閉じられているので、ウェス
ト・ポートに対する外部ライトとマイクロコードにより
起動されたイースト・ポートへのライトがEポート挟み
込み例外を起こす。 【0632】 例#3:N−W IDR競合/Eスイッチ衝突 この例(図126および表3.10参照)では、ノース
のタップ・ビットがセットされ、イースト−ウェスト・
スイッチがセットされている。データは、ウェスト,ノ
ースおよびイーストのポートに同時に書き込まれる。前
述の例と同様に、ノースおよびウェストのタップ・ビッ
トがセットされている場合は、ノース・ポートおよびウ
ェスト・ポートに対する同時ライトによりIDR競合例
外が起こる。イースト−ウェスト・スイッチは閉じてい
るので、イースト・ポートおよびウェスト・ポートに対
する同時ライトによりイースト−ウェスト・スイッチ競
合が起こる。 【0633】例#4:Eポート挟み込み/Eポート衝突
/E−Wスイッチ競合 この例(図127および表3.11参照)では、イース
ト−ウェスト・スイッチがセットされている。外部デー
タは、イースト・ポートからのデータのマイクロコード
により起動されたライトと同時に、ウェストおよびイー
ストのポートに同時に入る。スイッチは閉じているの
で、外部ウェスト・ポート・ライトは内部イースト・ポ
ート・ライトと組み合わされて、イースト・ポート挟み
込み例外を起こす。内部イースト・ポート・ライトは外
部イースト・ポート・ライトと組み合わされて、イース
ト・ポート衝突例外を起こす。最後にイースト−ウェス
ト・スイッチが閉じられて、(外部)イースト・ポート
およびウェスト・ポート・ライトがイースト−ウェスト
・スイッチ競合例外を起こす。 【0634】例#5:N−W IDR競合/Eポート挟
み込み/Eポート衝突/E−Wスイッチ競合 この最後の例(図128および表3.12参照)では、
イースト−ウェスト・スイッチがセットされ、ノースと
ウェストのタップ・ビットもセットされている。データ
はイースト・ポートから、内部生成されたライトにより
書き出される。同時に、データはノース,イーストおよ
びウェスト・ポートに書き込まれる。スイッチは閉じて
いるので、内部イースト・ポート・ライトと外部ウェス
ト・ポート・ライトとが、挟み込み例外を起こす。内部
イースト・ポート・ライトと外部イースト・ポート・ラ
イトとが、イースト・ポート衝突を起こす。イースト−
ウェスト・スイッチと同時に外部イースト・ポートおよ
びウェスト・ポートがセットされて、イースト−ウェス
ト・スイッチ衝突例外を起こす。ノース・ポートおよび
ウェスト・ポートの同時外部ライトが、ノースおよびウ
ェスト・タップ・ビットのセットによりN−W IDR
衝突例外を起こす。 【0635】セクション3.6.5 マイクロコード・
プログラム構造 本セクションでは、いくつかのマイクロコード・プログ
ラム・セグメントの構造を説明する。第1ルーチンは、
内部レジスタの初期化を示し、次にアソシエーション・
エンジン・ブロック内のすべてのニューロンおよびシナ
プスに関するシナプス関数を計算するためのルーピング
・セクションへの移行を示す。第2ルーチンは、アソシ
エーション・エンジンにより設けられる内部ルーピング
機能の例を示す。第3セグメントは、2つのアソシエー
ション・エンジン間での信号機伝達のメカニズムを示し
解説する。第4ルーチン・セグメントは、ベクタ・エン
ジン内の条件付き実行のメカニズムを示し解説する。最
後の例は、削減された浮動小数点ルーチンがどのように
構築されるかを説明するコード・セグメントである。 【0636】 セクション3.6.5.1 初期化とルーピング 第1ルーチンの例は、IDRにロードされた入力と、C
MAアレイにロードされた係数に関する単純な積の和関
数である。図129を参照のこと。ルーチンが始まる
と、命令を用いてP[0]およびP[1]ポインタを初
期化して、G[0]レジスタをロードする。これらの命
令は、一度しか実行されない点に注意すること。これ
は、repeat命令がPCループ開始,PC終了およびカウ
ント値(RBR,RER,RCR値)のループを初期化
するからである。このメカニズムにより、マイクロコー
ド・ルーチンに初期化セクションとルーピング・セクシ
ョンとができる。 【0637】ループには、積の和関数を実行するために
用いられる命令が含まれる。第1命令は現在選択されて
いる係数をCMAからV0レジスタに移動させる。次に
現在の入力値とV0値との乗算が実行される(Pポイン
タは、どの値を用いるかを選択し、++ノーテイション
によりポインタ・レジスタの内容は命令の最後で増分さ
れることに留意)。次の命令が積の最下位バイト(V1
の)をV3レジスタに加える。次の命令は、レジスタV
0の最上位バイトを前回の加算からのキャリーのあるV
2レジスタに加える。最後のadd 命令の最後で、PCは
RERレジスタの内容と等しくなる。この条件で、RC
Rレジスタは減分され、0に関してテストされる。結果
が0でない場合は、RBRレジスタの内容がPCに転送
され、ループは続く。最後にRCRカウンタが0にな
り、実行はdone命令に入る。このときアソシエーション
・エンジンは実行状態から出力状態に移行する。 【0638】セクション3.6.5.2 複数ループ 第2ルーチンは、Gレジスタにより与えられる内部ルー
ピング機能を示す命令セグメントを示す。図130は、
二重ルーピング・コード・セグメントを示すプログラム
を図示する。コード・セグメントの最初に、一般オペコ
ードが実行される(例を行うだけのもの)。この時点で
外ループが実行され、新しいループ・カウントがG0レ
ジスタにロードされる。内ループは、G1カウンタが0
になるまで実行される。このとき、内部レジスタ(RB
R,RER,RCR)を用いて、いつ内ループが終息す
るかを判断する。ループは、外ループのカウントが0に
なり、done命令が実行されるまで外ループdskip 命令と
共に続く。dskip 命令は、選択されたGレジスタを減分
し、Gレジスタで0地に関してテストする。このスタイ
ルを用いて、複数のループを形成することができる。re
peat命令は、1レベルしかないことに留意されたい(R
BR,RER,RCRレジスタのコピーは1つしかない
ため)。 【0639】セクション3.6.5.3 2つのアソシ
エーション・エンジン間での信号機伝達 本セクションは、2つ(またはそれ以上)のアソシエー
ション・エンジン間での信号機の使用法を示すコード・
セグメントを説明する。基本的なメカニズムは、IDR
内の有効ビットを用いて正しい時刻まで命令の実行を遅
らせることである。この場合は、伝達されるデータは実
行すべき別のルーチンのアドレスである。この時点でア
ソシエーション・エンジンは、実行すべきコードがID
Rレジスタの有効ビットをクリアすべきであるという別
のデバイスからの信号機を必要とする。マイクロコード
は、書き込まれるIDRロケーションにアクセスする。
別のアソシエーション・エンジンがwrite マイクロコー
ド命令をIDRレジスタに対して実行すると、待機中の
アソシエーション・エンジンは別の形の行動を起こす。
図131にこのようなルーチン・セグメントを示す。 【0640】セクション3.6.5.4 条件付き実行 条件付き命令の背後にある基本的な考え方は、処理マス
ク・ビットVTのクリア(またはセット)である。処理
要素(PE)内でマイクロコード命令の動作を制御する
のはこのビットである。以下の例では、8個のベクタ・
レジスタのうち4個がテストされ、このテストに基づい
て所定の処理要素が命令を実行し、他のものは実行しな
い。表3.13の状態情報は、図87の状態番号を指
す。この例では、すべてのPEはVT=1,VH=0で
始まると想定している。最初の2つのオペコード(オペ
コード1およびオペコード2)は、すべてのPEにより
実行される。vifeq V0,V4命令により、VTビット
はPE2,PE3およびPE4内でクリアされる。これ
により、オペコード3はPE1でしか実行されない。次
のvelse 命令により、オペコード4はPE2,PE3お
よびPE4により実行される。vifeq V1,V4は、P
E2のVTビットをセットされたままにして、PE3と
PE4のVTビットをクリアする。PE1は命令を実行
する可能なPEリストから外れていることに留意するこ
と。この行動により、オペコード5はPE2で実行され
る。次のvelse 命令によりPE3およびPE4がオペコ
ード6を実行する。vifeq V2,V4命令はPE3のV
Tビットをセットして、PE4のVTビットをクリアす
る。これによりオペコード7は、PE3でしか実行され
ない。velse 命令によりPE4がオペコード8命令を実
行する。最後にvendif命令がすべてのPEをvif 前の状
態に戻し、PE1,PE2,PE3およびPE4がオペ
コード9を実行する。これが、vif-velse-vif-velse-ve
ndifタイプの構造を実行する基本的なメカニズムであ
る。表3.14は、処理要素レジスタの内容を示す。 【0641】セクション3.7 マイクロコードにより
開始されたポート・ライト動作 アソシエーション・エンジンがラン・モードにいるとき
は、制御側のホストとアソシエーション・エンジン’な
どの他のシステム・コンポーネントの両方に関して効率
よく並行に情報を転送することを促進する4つの等しい
ポートがある。アソシエーション・エンジンは、ポート
を用いることにより複数のアソシエーション・エンジン
を接続させて協調して機能するように設計されている。
複数のアソシエーション・エンジンを接続するには、外
部論理は必要ない。例については、セクション3.8,
アソシエーション・エンジン・バス・コンフィギュレー
ションを参照のこと。 【0642】ポートは、アソシエーション・エンジンが
部分シナプス結果をアソシエーション・エンジン’に転
送して合計できるようにする簡単なメカニズムとなるよ
うに設計されている。この転送は本来ストリームのよう
であり、データの量はアソシエーション・エンジンのプ
ログラマにより制御することができる。ラン・モードで
は、すべての転送がホストからの同様のストリーム転送
であることに注意すること。転送されるデータの量は、
命令(バイトに関するスケーラ・ライト転送)またはス
ケーラ・レジスタの内容により制御される(たとえばベ
クタ・ライトはPE(0)で始まりPE(Pn)で終
る)。 【0643】データ転送の方向は、いつもライト動作で
あり、write マイクロコード命令により制御される。E
/Wバスの情報の流れは、次のようになる。スケーラ・
エンジンが計算状態を出ると、各デバイスはアソシエー
ション・エンジン4’デバイスにデータを送ろうとす
る。アソシエーション・エンジン0については、vwrite
命令が無条件に実行される。一方、アソシエーション・
エンジン1デバイスは、アソシエーション・エンジン0
を待たねばならない(同様にアソシエーション・エンジ
ン2とアソシエーション・エンジン3も)。このメカニ
ズムにより、アソシエーション・エンジン’デバイスを
もつ行の上にあるいくつかのアソシエーション・エンジ
ンの間で、データ移動の調整が行われる。このモニタ・
メカニズムは、セクション3.6.5.3,2つのアソ
シエーション・エンジン間での信号機伝達で述べられた
信号機伝達の例と非常に似ている。データ伝達はイース
ト−ウェストの転送だけに限られないことに注意するこ
と。ラン・モード中は、データは4つの方向のいずれに
も転送することができる。 【0644】未使用のニューロンをもつシステム(部分
的に用いられているアソシエーション・エンジン)で
は、ユーザは未使用のロケーションの値を管理して、そ
れらがニューラル・ネットワークの正常な動作と矛盾し
ないようにすることが求められる。 【0645】チェーン内の最後のアソシエーション・エ
ンジンがアソシエーション・エンジン’にデータを転送
するのを終了すると(アソシエーション・エンジン’
は、対応するアソシエーション・エンジンがいくつある
かを知っていなければならない)、アソシエーション・
エンジンの出力位相は完了する。このとき、アソシエー
ション・エンジン’は、とるべき行動を示すことができ
る。アソシエーション・エンジン/アソシエーション・
エンジン’システムは、アソシエーション・エンジン’
がコマンドおよびデータ情報を必要に応じてアソシエー
ション・エンジンに戻すことができる通信プロトコルを
もっていなければならない。 【0646】セクション3.8 アソシエーション・エ
ンジン・バス・コンフィギュレーション 本セクションでは、さまざまなバス・コンフィギュレー
ションでアソシエーション・エンジンを用いることがで
きるようにするバス・スイッチおよびタップ構造の背後
にある考え方を説明する。本セクションでは、さらに、
アソシエーション・エンジン・ポート機能で可能な種々
のバス・コンフィギュレーションについても説明する。 【0647】セクション3.8.1 アソシエーション
・エンジン・ポート・スイッチおよびタップ アソシエーション・エンジンは、あるポートに提示され
たデータを別のポートに(1クロック・サイクルの遅延
で)伝えることのできる汎用性のあるポート・スイッチ
およびタップ・メカニズムをもっている。ポート・スイ
ッチは、アソシエーション・エンジン・ポート制御レジ
スタ(PCR)のNSSビットおよびEWSビットによ
り制御される。タップ・ビットも、このレジスタで制御
される。タップ制御関数により、あるポートに提示され
ているデータをチップ内のIDRレジスタにロードする
ことができる。これにより、アソシエーション・エンジ
ンには、単純にデータを伝えたり、スヌープまたは捕捉
中にデータを伝える能力が与えられる。IDRをロード
するにはラン・モード・ローディング・メカニズムが用
いられることに留意されたい。詳細については、セクシ
ョン2.3.6,ポート制御レジスタ(PCR)を参照
のこと。図132は、この機能をシンボリックに表した
ものである。 【0648】 セクション3.8.2 バス・ポート衝突およびエラー 起こりうる状況としては、一般に3つのタイプがある。
これらの状況のあるものは致命的と見なされ、スケーラ
・エンジンおよびベクタ・エンジンは例外処理を行う。
この状況を示すステータスに関してはセクション2.
3.7,アソシエーション・エンジン・ポート・モニタ
・レジスタ(APMR)を、ポート・エラーに関する例
外処理の詳細についてはセクション3.6.4.4,ポ
ート・エラー例外を参照のこと。 【0649】セクション3.8.2.1 アソシエーシ
ョン・エンジン衝突条件 外部動作(アソシエーション・エンジンに書き込む)が
内部ライト動作と衝突すると衝突が起こる。制御ライン
(反転xCIおよび反転xCO)のタイミングのおかげ
で、電気的な損傷が起こる前に条件を検出するための充
分な時間がある。 【0650】セクション3.8.2.2 アソシエーシ
ョン・エンジン競合条件 競合は、特定のアソシエーション・エンジン内部のスイ
ッチおよびタップの設定値により起こる。2つの外部ア
クセスが1つのアソシエーション・エンジンに対して行
われると競合が起こる。ラン・モードでは、すべての動
作のデスティネーションはIDRであるので、外部ライ
ト動作を2つ行うとIDRに関して競合することに留意
されたい。 【0651】セクション3.8.2.3 アソシエーシ
ョン・エンジン挟み込み 挟み込み条件は、移動中のデータ(閉じたスイッチを通
る)が、write 命令から来たデータに挟まれた状態であ
る。複数のアソシエーション・エンジンがデータ転送に
関して同期状態から抜けたときにこの状況が起こる。 【0652】セクション3.8.2.4 アソシエーシ
ョン・エンジン・スイッチ競合 接続スイッチが閉じられるのと同時に対向ポートに書き
込まれると、スイッチ競合が起こる。 【0653】セクション3.8.3 アソシエーション
・エンジン・リング・コンフィギュレーション このリング・コンフィギュレーションでは、2つのポー
トを用いてアソシエーション・エンジン群をリング・コ
ンフィギュレーションに接続する。図133に詳細を示
す。 【0654】リング・コンフィギュレーションでは、ポ
ート・スイッチを用いて、リングの異なる部分を分離し
て、システムの並行度を増やすことができる。スイッチ
およびタップ制御は、ホストによってもマイクロコード
・プログラムによっても変更することができることに留
意されたい。リング・コンフィギュレーションにより、
再コンフィギュレーション機能がもたらされる。リング
構造においては、ネットワークが時間と共に変化するよ
うに、マイクロコードとホストとを構築することができ
る。このようなダイナミックな再コンフィギュレーショ
ン機能がこの構造の主な特徴である。リングへのデータ
は、ノース・ポートまたはサウス・ポートにより供給す
ることもできる。 【0655】図134に、1つの可能なリング・コンフ
ィギュレーションを示す。この例では、フィードフォワ
ード・ネットワークに接続された6機のアソシエーショ
ン・エンジン・デバイスがある。アソシエーション・エ
ンジン0ないしアソシエーション・エンジン2が第1レ
イヤであり、アソシエーション・エンジン3ないしアソ
シエーション・エンジン5が第2レイヤとなっている。
この例からわかるように、計算およびデータの転送に関
してかなりの並行度が可能である。プロセスの計算およ
び集合位相については、第1レイヤが時刻n+1の入力
サンプルを処理して、一方で第2レイヤ(アソシエーシ
ョン・エンジン3ないしアソシエーション・エンジン
5)が時刻nに関する結果を計算することができる。同
様にデータの転送に関しては、アソシエーション・エン
ジン5が時刻nから結果を出力して、アソシエーション
・エンジン2が時刻n+1のデータを転送し、ホストが
時刻n+2の新しい入力フレームを入力することができ
る。図134に示された例では、スイッチおよびタップ
設定値によりレイヤの分割が可能で、タップ設定値はス
イッチ内でデータがどのように流れるか(またはどのデ
バイスがデータを受け取っているのか)を示す。 【0656】セクション3.8.4 二次元アソシエー
ション・エンジン・コンフィギュレーション アソシエーション・エンジンは二次元相互接続用に設計
された。4つのポートがあるので1機のアソシエーショ
ン・エンジンを隣のアソシエーション・エンジンに相互
接続することは、前述のリング構造と同様である。これ
によりアレイに提示されたアプリケーションにより、行
に関しても列に関しても再コンフィギュレーションが可
能である。図135は、アソシエーション・エンジン群
の小さな二次元アレイを図示している。 【0657】セクション4 アソシエーション・エンジ
ン・バス動作 【0658】本セクションでは、アソシエーション・エ
ンジンのノース,イースト,サウスおよびウェスト・ポ
ートのタイミングの関係を説明する。本セクションは3
つの部分に分かれている。第1部は、アソシエーション
・エンジン・ホスト・アクセスに特有のタイミング(す
なわちランダム・アクセス・タイミングおよびストリー
ム・アクセス・タイミング)を扱う。本セクションの第
2部は、write 命令に応答するマスタ・デバイスとして
のアソシエーション・エンジンに特有のタイミングを扱
う。(このwritesのデスティネーションは常に、受信デ
バイスのIDRレジスタである点に留意)。第3部は、
done(および反転BUSY),R/反転S,反転INT
R,反転RESETなどのその他のタイミングと114
9.1テスト・ポート・タイミングとを扱う。表4.1
は、タイミング図の一覧表である。 【0659】セクション4.1 アソシエーション・エ
ンジン・ポート・タイミング アソシエーション・エンジン・ポートは、ホストとアソ
シエーション・エンジン・サブシステムとの間の主要な
インターフェースを構成する。これらのポートを通じて
すべての初期化情報およびデータが伝えられる。アソシ
エーション・エンジン・ポートは完全に同期しており、
CLK信号を用いてアソシエーション・エンジンとホス
ト・システムとの間の転送をクロックする。ポートの動
作は、R/反転S制御ラインに依存する。アソシエーシ
ョン・エンジンが実行するアクセスのタイプ(ホストま
たはアソシエーション・エンジン・マスタ)を決めるの
は、このラインである。R/反転Sが論理1のとき、ア
ソシエーション・エンジンはラン・モードにあり、R/
反転S信号が論理0であれば、アソシエーション・エン
ジンはストップ・モードにある。ラン・モードはアソシ
エーション・エンジンのマイクロプログラム実行のため
のもので、ストップ・モードはホスト・アクセスのため
のものである。各アソシエーション・エンジン・ポート
は、8ビット幅で、ランダム・アクセス・モードおよび
ストリーム・アクセス・モードの動作に対応する。特定
の動作に関しては、複数のポートがアソシエーション・
エンジンに対するアクセス/アソシエーション・エンジ
ンからのアクセスに加わる。 【0660】ポート信号とCLK信号との一般的な関係
は、ポートに対する入力信号および双方向入力信号のす
べてが、CLK信号の立ち上がり端で内部ラッチされる
というものである。逆にすべての出力と双方向出力と
は、CLKの立ち下がり端でイネーブルになる。 【0661】アソシエーション・エンジンとホストとの
間のデータの転送には、次の信号が関わる: ・データ・バスxD[7:0] ・制御信号(反転xCI,反転xCO,R/反転W,O
P,反転EN,反転COL,反転ROW) 【0662】アソシエーション・エンジンがストップ・
モードにあるときは、すべての制御信号は一方向であ
り、データxD[7:0]信号は双方向である。ホスト
は、簡単なハンドシェーク・プロトコルを利用する制御
信号を発することによりアソシエーション・エンジン
へ、あるいはアソシエーション・エンジンからデータを
移動させて、正確なデータ移動を行う。R/反転Wおよ
びOPラインは、どのタイプの動作が実行されるかを制
御し、反転EN,反転ROWおよび反転COL信号は、
デバイス選択およびデータ経路決定制御として機能す
る。反転xCIおよび反転xCOラインは、アクティブ
になると、有効データがデータ・ライン上にあることを
示す。 【0663】アソシエーション・エンジンがラン・モー
ドにある場合は、制御信号反転EN,OPおよびR/反
転Wは「無視される」。反転xCIおよび反転xCOラ
インが、ストップ・モードと同じ関数を実行する。信号
反転ROWおよび反転COLは今度は双方向になり、ma
x およびmin 命令に関与する。ライト動作のみが許され
る(データはアソシエーション・エンジン・マスタから
流れる)。データ転送は、write 命令の制御下で行われ
る。マイクロプログラムの制御下で、write 命令が発さ
れ、これによりアソシエーション・エンジン・ポートか
ら隣のアソシエーション・エンジン・デバイスのIDR
にデータが転送される。タップおよびスイッチ設定値に
より、書き込まれたデータは隣のデバイスを通過する
か、あるいは隣のデバイスに入る。 【0664】アソシエーション・エンジン・デバイス
は、二次元アレイで機能するように設計されている。以
下の説明については、図136を参照のこと。ランダム
・モード・アクセスの場合は、アドレス情報はアレイの
ノース側およびウェスト側から、反転ROW信号および
反転COL信号が両方ともアクティブになっているデバ
イスに流れる。反転ROWまたは反転COLのどちらか
がアクティブになっている(両方ではない)デバイス
は、アドレス/データ移動には加わるが、それ自身でデ
ータを供給することはない。アクセスされたデータは、
サウス端へ流れるか、あるいはサウス端から選択された
デバイス(反転ROWと反転COLの両方がアクティ
ブ)に流れる。 【0665】ストリーム・アクセスの場合は、データは
サウス端またはイースト端の一方から(両方ではない)
流れることができる。この場合は、ストリーミングの行
く先または元として列または行が選択される。ストリー
ム動作の場合は、アドレスが必要ない(内部で生成され
る)ので、データは選択されたデバイスにあるいはその
デバイスから流れ、アレイのサウス側またはイースト側
に進む。 【0666】以下のパラグラフは、ホストとアソシエー
ション・エンジン・バス・サイクルの両方に関して、ラ
ンダム・モードおよびストリーム・モードの動作のバス
・サイクルを説明している。以下のパラグラフで用いら
れるノーテイションの説明については、セクション1.
3,表記法を参照のこと。 【0667】 セクション4.1.1 ホスト・ランダム・アクセス 図137は、ホスト・ランダム・アクセス・モードのリ
ードおよびライト動作のタイミングを示す。ランダム・
アクセスについては、アドレス情報はノース・ポートお
よびウェスト・ポートからアソシエーション・エンジン
に流れ、データはサウス・ポートに流れるか、あるいは
サウス・ポートから流れる。以下の流れは、起こる動作
のシーケンスを説明している(OP==1)。 【0668】クロック・サイクル2 R/反転W,反転ROW,反転COL,OPおよび反転
EN信号がアサートされて、ランダム・アクセス・リー
ドが起こることを示す。反転WCIおよび反転NCI信
号がアサートされて、アドレス情報が次のクロック・サ
イクルに現れることを示す。 【0669】クロック・サイクル3 サイクルの最初で、前述の制御信号が内部ラッチされ解
読されて、ノース・ポートおよびウェスト・ポートに入
ったアドレス情報のラッチングをイネーブルにする。ま
た、反転SCOが出されて、次のクロック・サイクルで
データがイネーブルになることを示す。 【0670】クロック・サイクル4 クロック・サイクルの最初で、アドレスが内部ラッチさ
れ、ロケーションがアクセスされるので、読まれたデー
タはCLK信号の立ち下がり端で出される。また、反転
SCO信号は、CLK信号の立ち下がり端でネゲートさ
れる。 【0671】クロック・サイクル5 CLK信号の立ち下がり端で、SD信号から出されたデ
ータが3状態になる。 クロック・サイクル6 ポートは非アクティブである。 【0672】クロック・サイクル7 R/反転W,反転ROW,反転COL,OPおよび反転
EN信号がアサートされて、ホスト・ランダム・アクセ
ス・ライトが起こることを示す。反転WCIおよび反転
NCI信号がアサートされ、アドレス情報が次のクロッ
ク・サイクルに現れることを示す。 【0673】クロック・サイクル8 サイクルの最初で、前述の制御信号が内部ラッチされ解
読されて、ノース・ポートおよびウェスト・ポートに入
ったアドレス情報のラッチングをイネーブルにする。ま
た、反転SCOがアサートされて、次のクロック・サイ
クルでデータが有効になることを示す。 【0674】クロック・サイクル9 クロック・サイクルの最初で、アドレスおよび反転SC
I情報が内部ラッチされ、ロケーションがアクセスされ
るので、書き込まれたデータはCLK信号の立ち下がり
端でラッチされる。 【0675】クロック・サイクル10 CLK信号の立ち下がり端で、SD信号からに入ったデ
ータが3状態になる。 セクション4.1.2 ホスト・ランダム・アドレス転
送ウェストからイーストへ 図138は、ホスト・ランダム・アクセス・モード・ア
ドレス転送のタイミングを示す。このタイプの転送は、
アクセスされているデバイスが選択されたデバイスと同
じ行を共有するときに起こる。ランダム・アクセスに関
しては、アドレス情報はノース・ポートおよびウェスト
・ポートからアソシエーション・エンジンに流れ込み、
データはサウス・ポートから出入りすることに留意され
たい。以下の流れは、起こる動作のシーケンスを説明す
る(OP==1)。 【0676】クロック・サイクル3 反転ROW,OPおよび反転EN信号がアサートされ
て、ランダム・アクセス・モード転送が起こることを示
す。このデバイスについては、反転COL信号は非アク
ティブである。アドレスA1がWDライン上に入れら
れ、CLK信号の次の立ち上がり端でラッチされる。こ
のアドレスのソースは、別のアソシエーション・エンジ
ン・デバイス(アレイ内部の)でも、アドレス情報をア
ソシエーション・エンジン・エッジ・デバイスに送って
いるホストでもよい。反転WCI信号がアサートされ
て、アドレス情報が次のクロック・サイクルに現れるこ
とを示す。 【0677】クロック・サイクル4 サイクルの最初で、前述の制御信号が内部ラッチされ解
読されて、ウェスト・ポートに入ったアドレス情報のラ
ッチングをイネーブルにする。また、反転ECOが出さ
れて、次のクロック・サイクルでデータがイネーブルに
なることを示す。 【0678】クロック・サイクル5 サイクルの最初でラッチされたアドレス情報が、CLK
信号の立ち下がり端でED信号上に排出される。 【0679】クロック・サイクル6 サイクルの最初でラッチされたアドレス情報が、CLK
信号の立ち下がり端でED信号上に出される。反転WC
I入力がネゲートされて、WD上のアドレス情報はもう
有効でないことを示す。 【0680】クロック・サイクル7 制御信号反転ROW,反転ENおよびアドレス情報WD
がネゲートされて、次のサイクルが転送の最後のサイク
ルになることを示す。制御信号反転ECOは、前のサイ
クルでネゲートする反転WCI信号に応答してネゲート
する。 【0681】クロック・サイクル8 CLK信号の立ち下がり端で、ED信号から出されたデ
ータが3状態になる。 セクション4.1.3 ホスト・ランダム・アクセスお
よびデータ転送ノースとサウス 図139は、ホスト・ランダム・アクセス・モード転送
の2つのケースのタイミングを示す。最初のケース(ク
ロック・サイクル2ないし6)は、デバイスが選択され
たデバイスと同じ列を共有する場合である。このとき
は、アドレス情報はノース・ポートからサウス・ポート
に向かって下向きに流れる。第2のケース(クロック・
サイクル7ないし11)でも、デバイスは同じ列を共有
するが、データは上向きまたは下向きに伝えられる。ア
ソシエーション・エンジン・デバイスに関する限り、伝
えられる情報のタイプ(アドレスまたはデータ)と方向
は、反転NCIまたは反転SCI信号により純粋に決め
られる。 以下の流れは、起こる動作のシーケンスを示
す(OP==1)。 【0682】クロック・サイクル2 反転COL,OPおよび反転EN信号がアサートされ
て、ランダム・アクセス・モード転送が起こることを示
す。このデバイスについては、反転ROW信号は非アク
ティブである。アドレスA0がNDライン上に入れら
れ、CLK信号の次の立ち上がり端でラッチされる。こ
のアドレスのソースは、別のアソシエーション・エンジ
ン・デバイス(アレイ内部の)でも、アドレス情報をア
ソシエーション・エンジン・エッジ・デバイスを駆動し
ているホストでもよい。反転NCI信号がアサートされ
て、アドレス情報が次のクロック・サイクルに現れるこ
とを示す。 【0683】クロック・サイクル3 サイクルの最初で、前述の制御信号が内部ラッチされ解
読されて、ノース・ポートに入ったアドレス情報のラッ
チングをイネーブルにする。また、反転SCOが出され
て、次のクロック・サイクルでデータがイネーブルにな
ることを示す。 クロック・サイクル4 サイクルの最初でラッチされたアドレス情報が、CLK
信号の立ち下がり端でSD信号上に出される。反転NC
I入力がネゲートされて、NDのアドレス情報がもう有
効でないことを示す。 【0684】クロック・サイクル5 制御信号反転ROW,反転ENおよびアドレス情報ND
がネゲートされて、次のサイクルが転送の最後のサイク
ルになることを示す。制御信号反転SCOは、前のサイ
クルでネゲートする反転NCI信号に応答してネゲート
する。 【0685】クロック・サイクル6 CLK信号の立ち下がり端で、SD信号から出されたデ
ータが3状態になる。 【0686】以下の説明では、データは上向きに流れる
ものとして説明される(ライト動作)。リード動作に関
しては、データ・リードのタイミングは、クロック・サ
イクル2ないし6で説明されたアドレス・タイミングと
同じである。 【0687】クロック・サイクル7 反転COL,OPおよび反転EN信号がアサートされ
て、ランダム・アクセス・モード転送が起こることを示
す。このデバイスについては、反転ROW信号は非アク
ティブである。データD1がSDライン上に入れられ、
CLK信号の次の立ち上がり端でラッチされる。このデ
ータのソースは、別のアソシエーション・エンジン・デ
バイス(アレイ内部の)でも、アドレス情報をアソシエ
ーション・エンジン・エッジ・デバイスを駆動している
ホストでもよい。反転SCI信号がアサートされて、ア
ドレス情報が次のクロック・サイクルに現れることを示
す。 クロック・サイクル8 サイクルの最初で、前述の制御信号が内部ラッチされ解
読されて、サウス・ポートに入ったアドレス情報のラッ
チングをイネーブルにする。また、反転NCOが出され
て、次のクロック・サイクルでデータがイネーブルにな
ることを示す。 クロック・サイクル9 サイクルの最初でラッチされたアドレス情報が、CLK
信号の立ち下がり端でND信号上に出される。反転SC
I入力がネゲートされて、NDのアドレス情報がもう有
効でないことを示す。 【0688】クロック・サイクル10 制御信号反転ROW,反転ENおよびデータ情報SDが
ネゲートされて、次のサイクルが転送の最後のサイクル
になることを示す。制御信号反転NCOは、前のサイク
ルでネゲートする反転SCI信号に応答してネゲートす
る。 【0689】クロック・サイクル11 CLK信号の立ち下がり端で、ND信号から出されたデ
ータが3状態になる。 セクション4.1.4 早期終了のあるホスト・ランダ
ム・アドレス/データ転送ノース/サウス 図140は、セクション4.1.3,ホスト・ランダム
・アドレスおよびデータ転送ノースとサウスに説明され
た2つのケースのタイミングを示す。ここでの違いは、
反転ENを用いて転送を早く終らせることである。前の
ケースは、反転ENの時間がもっと長かった。この差の
理由は、アソシエーション・エンジンのアレイにとって
アドレスとデータの2つのコンポーネントを選択された
デバイス(反転ROWおよび反転COLがアサート)で
収束させるのにかかる時間が長くなることがあるためで
ある。外部制御ハードウェアの複雑さにより、反転EN
ドライバ論理にさらに機能を追加することにより、ボー
ドはアクセス時間(アレイに対する)を節約することが
できる。簡単なケースは、すべてのアクセスを最悪の場
合の時間に合わせることである。この時間は、アソシエ
ーション・エンジン・アレイの最も右側にあるデバイス
にアクセスする時間となる。以下に、図139と図14
0の差を説明する。 【0690】クロック・サイクル4 サイクルの最初でラッチされたアドレス情報が、CLK
信号の立ち下がり端でSD信号上に出される。反転NC
I入力がネゲートされて、NDのアドレス情報がもう有
効でないことを示す。制御信号反転ROW,反転ENお
よびアドレス情報NDがネゲートされて、次のサイクル
が転送の最後のサイクルになることを示す。 【0691】クロック・サイクル5 制御信号反転SCOは、前のサイクルでネゲートする反
転NCI信号に応答してネゲートする。CLK信号の立
ち下がり端で、SD信号から出されたデータが3状態に
なる。 【0692】クロック・サイクル9 サイクルの最初でラッチされたデータ情報が、CLK信
号の立ち下がり端でND信号上に出される。反転SCI
入力がネゲートされて、SDのアドレス情報がもう有効
でないことを示す。制御信号反転ROW,反転ENがネ
ゲートされて、次のサイクルが転送の最後のサイクルに
なることを示す。 【0693】クロック・サイクル10 SD上のデータ情報と制御信号反転NCOは、前のサイ
クルでネゲートする反転SCI信号に応答してネゲート
する。CLK信号の立ち下がり端で、ND信号から排出
されたデータが3状態になる。 【0694】 セクション4.1.5 ホスト・ストリーム・リード 図141は、ホスト・ストリーム・アクセス・モード・
リードのタイミングを示す。ストリーム・リード転送
は、反転ROWおよび反転COL信号の両方がアサート
されているデバイスのチェーンから、データを取り込
む。以下のケースでは、2つのデバイスが同じ反転RO
W信号を共有している。「終了」デバイスは、アソシエ
ーション・エンジン・アレイの端部であるとする。スト
リーム・アクセスを開始するために、端部にあるデバイ
ス(デバイス#1)は、反転EN信号がアサートしたと
きにウェスト・ポート・ストリーム制御入力反転WCI
をアサートすることが求められる。これにより、特定の
アソシエーション・エンジンに対して、ストリーミング
のラインの最初のものであることを知らせる。 【0695】アソシエーション・エンジン・デバイス
は、ストリーミングの方向を制御するための内部制御レ
ジスタ・ビットHSSR:HSP[1:0]をもってい
る。ストリーミングは、サウス(HSP[1:0]=0
1)またはイースト(HSP[1:0]=10)ポート
を通じて起こるが、両方を用いることはない。以下に説
明される流れでは、2機のアソシエーション・エンジン
のそれぞれが2バイトの情報をストリーミングするもの
とする(すなわちDCR1=02)。議論を簡単にする
ために、この説明の信号には上付き文字をつける。これ
は、どのデバイスがその信号に関係するかを示すための
ものである。たとえば、\X\TO(WCI1 )は、デ
バイス#1に関わる反転WCI入力である。以下の流れ
は、起こる動作のシーケンスを説明する(OP==
0)。 【0696】クロック・サイクル2 R/反転W,反転ROW,反転COL,OPおよび反転
EN信号がアサートされて、ストリーム・アクセス・リ
ードが起こることを示す。反転WCI1 信号がアサート
されて、アソシエーション・エンジン#1がストリーミ
ングのチェーンの最初のものであることを示す。 【0697】クロック・サイクル3 サイクルの最初で、前述の制御信号が内部ラッチされ解
読されて、イースト・ポートに入ったアドレス情報のラ
ッチングをイネーブルにする。また、反転ECO1 (反
転WCI2 )が排出されて、次のクロック・サイクルで
データがイネーブルになることを示す。 【0698】クロック・サイクル4 クロック・サイクルの最初で、反転WCI2 情報が内部
ラッチされて、次のクロック・サイクルのデータに備え
る。アソシエーション・エンジン#2は、反転WCI2
がラッチされたのに応答して、\X\TO(ECO2 )
信号をCLK信号の立ち下がり端でアサートする。アソ
シエーション・エンジン#1は、CLK信号の立ち下が
り端でED1 のデータを排出する。 【0699】クロック・サイクル5 サイクルの最初で、アソシエーション・エンジン#2は
アソシエーション・エンジン#1からデータをラッチし
て、イースト・ポートに転送する。そこでそのデータは
CLK信号の立ち下がり端で出される。アソシエーショ
ン・エンジン#1は、反転ECO1 信号をネゲートし、
アソシエーション・エンジン#2に対してアソシエーシ
ョン・エンジン#1がストリーム転送を終了した(アソ
シエーション・エンジン#1が空である)ことを知らせ
る。CLK信号の立ち下がり端で、アソシエーション・
エンジン#1はED1 信号ラインに最後のデータを入れ
る。 【0700】クロック・サイクル6 サイクルの最初で、アソシエーション・エンジン#2は
アソシエーション・エンジン#1から次のデータをラッ
チして、それをCLK信号の立ち下がり端でED2 信号
上に入れる。またサイクルの最初で、アソシエーション
・エンジン#2は反転WCI2 入力をラッチし、それを
解読して、アソシエーション・エンジン#2が現在スト
リーム内のデータの供給側であることを判定する。アソ
シエーション・エンジン#2は、反転ECO2 信号をア
サート状態に維持する(アソシエーション・エンジン#
2がデータを供給していることを示す)。 【0701】クロック・サイクル7 CLKの立ち下がり端で、アソシエーション・エンジン
#2は、そのデータの最初のデータをストリーム転送に
供給する。 【0702】クロック・サイクル8 CLK信号の立ち下がり端で、アソシエーション・エン
ジン#2はそのデータの2番目のデータをストリーム転
送に供給する。また、CLK信号の立ち下がり端で、反
転ECO2 ラインがネゲートされて、次のクロック・サ
イクルがアソシエーション・エンジン#2からのデータ
の最後のものであることを知らせる。反転ROW,反転
COL,反転EN信号もこのサイクルでネゲートされ
て、次のクロック・サイクルが最後のサイクルであるこ
とを示す。 【0703】クロック・サイクル9 CLK信号の立ち下がり端で、ED2 信号上に入れられ
たデータが3状態になる。 【0704】アソシエーション・エンジンのアレイを制
御する論理の複雑さによって、ストリーム転送の終了は
2つの方法で処理することができる。第1の方法は、制
御論理がストリームの期間を知っていることを必要とす
るので、反転EN,反転ROW,反転COLなどの制御
信号を正確な時刻にネゲートすることができる。2番目
の方法は、アレイの右(または下)端で、反転ECO
(または反転SCO)信号を、ストリームを終了するこ
とができるという表示として用いる。 【0705】セクション4.1.6 ホスト・ストリー
ム・ライト・アクセス 図142は、ホスト・ストリーム・ライト・アクセスの
タイミングを示す。ストリーム・ライト動作は、各アソ
シエーション・エンジン・デバイスで倍加されるデータ
を供給することができること(HSORレジスタの状態
による)に留意されたい。この主な目的は、各アソシエ
ーション・エンジンに独自のデータを供給することであ
る。ストリーム・ライト転送は、反転ROWおよび反転
COL信号の両方がアサートされているデバイスのチェ
ーンにデータを送る。以下に説明するケースでは、2つ
のデバイスが同じ反転ROW信号を共有している。スト
リーム・ライト転送の場合は、データの流れは一方向で
ある。ストリーム・ライトの場合は、反転ECI信号が
アサートされる(有効データがED信号にあることを示
す)まで、データは書き込まれない。そのためストリー
ム・ライトの場合は、反転ECIおよび反転WCO(ノ
ース−サウス転送の場合は反転SCI,反転NCO)ス
トリーム制御信号が関わり、反転ECOおよび反転WC
I(反転SCO,反転NCI)信号は関わらない。 【0706】アソシエーション・エンジン・デバイス
は、ストリーミングの方向を制御する内部制御レジスタ
・ビットHSSR:SHP[1:0]をもっている。ス
トリーム・ライトは、サウス(HSP[1:0]=0
1)ポートまたはイースト(HSP[1:0]=10)
ポートを通じて行われるが、2つのポートを同時に用い
ることはない。以下に説明する流れは、2つのアソシエ
ーション・エンジン・デバイスのそれぞれが2バイトの
情報を受け取ることを前提としている。第1デバイス
(アソシエーション・エンジン#2)内のHSORレジ
スタは値0x0000を含み、第2デバイス(アソシエ
ーション・エンジン#1)のHSORは値0x0002
をもつ。OAR/DCRレジスタとホスト・ストリーム
選択レジスタの内部設定値により、特定のアソシエーシ
ョン・エンジンは送信されたデータの断片しかロードし
ない。議論を簡単にするために、この説明での信号には
信号がどのデバイスに関係するかを示す上付き文字をつ
ける。たとえば、反転WCI1 は、デバイス#1に関わ
る反転WCIである。以下の流れは、起こる動作のシー
ケンスを説明する(OP==1)。 【0707】クロック・サイクル2 R/反転W,反転ROW,反転COL,OPおよび反転
EN信号がアサートされて、ストリーム・ライト・アク
セスが起こることを示す。反転ECI2 信号がアサート
されて、書き込まれるデータは次のクロック・サイクル
で有効になることを示す。 【0708】クロック・サイクル3 サイクルの最初で、前述の制御信号が内部ラッチされ解
読される。イースト・ポートに入ったデータED2 が、
アソシエーション・エンジン#2に与えられる。また、
反転ECI2 が前のクロック・サイクルでアサートされ
ることに応答して、反転WCO2 がCLK信号の立ち下
がり端でアサートされる。デバイス・アソシエーション
・エンジン#2HSORは、これで有効データをカウン
トしていた内部カウンタに一致する(このデバイスの値
は0)。アソシエーション・エンジン#2は、DCRカ
ウントが0になるまでデータを受け入れる準備ができて
いる。 【0709】クロック・サイクル4および5 アソシエーション・エンジン#2はデータをWD2 ライ
ン上に入れ、アソシエーション・エンジン#1に送る。
次のデータは、ED2 ラインに入れられる。 【0710】クロック・サイクル6 サイクルの最初で、アソシエーション・エンジン#2は
次のデータをラッチする。また、制御信号反転ECI2
がネゲートされて、最後のデータが次のクロック・サイ
クルのED2 ライン上に提示されることを示す。デバイ
ス・アソシエーション・エンジン#1HSORは、これ
で有効データをカウントしていた内部カウンタに一致す
る。アソシエーション・エンジン#1は、DCRカウン
トが0になるまでデータを受け入れる準備ができてい
る。 【0711】クロック・サイクル7 サイクルの最初で、アソシエーション・エンジン#2
は、次のデータをラッチする。また制御信号反転RO
W,反転COL,反転EN,R/反転Wおよび反転WC
O2 がネゲートされて、ストリーム・ライトが次のクロ
ック・サイクルで終了することを示す。 【0712】クロック・サイクル8 クロック・サイクルの最初で、最後のデータがアソシエ
ーション・エンジン#2によりラッチされて、内部に記
憶される。 【0713】セクション4.2 アソシエーション・エ
ンジン・マスタ動作 アソシエーション・エンジン・マイクロコードの制御下
で、アソシエーション・エンジンは4つのポートのどれ
からでもデータを書き出すことができる。これは、アソ
シエーション・エンジン・ライト動作に限られる(デー
タはアソシエーション・エンジンから別のアソシエーシ
ョン・エンジンに流れる)。これはwrite マイクロコー
ド命令のセットにより制御される。これらのライト・サ
イクルが唯一可能な転送で、ライト動作のデスティネー
ションはいつもIDRレジスタである。 【0714】アソシエーション・エンジンは、ラン・モ
ードではマイクロコード・ライト動作を実行することし
かできない。これは、ライト動作が命令により始動され
るためである。アソシエーション・エンジンがラン・モ
ードにあるときは、制御信号反転EN,OPおよびR/
反転Wは「無視される」。反転xCIおよび反転xCO
ラインは、前の例と同じ関数を実行する。信号反転RO
Wおよび反転COLは、今度は双方向になり、max およ
びmin ベクタ命令に加わる。ライト動作(データがマス
タから出る)だけが許される。データ転送は、write タ
イプ命令の制御下で行われる。 【0715】過激なマイクロプログラム動作やタイミン
グの不一致による電気的損傷を避けるために、アソシエ
ーション・エンジンはいつもデータを駆動するよりも1
クロック・サイクル前に、反転xCOラインを排出す
る。これによりバス上に電気的な競合が起こる前に同時
のライト動作やライト動作の不一致が検出できる。 【0716】スイッチおよびタップのアソシエーション
・エンジン内部設定値により、提示されるデータは、
1)閉じられたスイッチを通じて転送される,2)開放
スイッチにより転送が阻止される,3)閉じられたタッ
プによりIDRレジスタにデータが入る,あるいは4)
開放タップのためにIDRレジスタには影響を及ぼさな
い,のいずれかになる。 【0717】ポート信号とCLK信号との一般的な関係
は、ポートに対する入力または双方向入力信号はすべて
CLK信号の立ち上がり端で内部ラッチされるというも
のである。逆に、出力と双方向出力とはすべてCLKの
立ち下がり端でイネーブルになる。 【0718】アソシエーション・エンジンまたはホスト
と、動作中のアソシエーション・エンジンとの間のポー
ト上のデータ転送には、次の信号が関わる: ・データ・バスxD[7:0] ・制御信号反転xCIおよび反転xCO 【0719】セクション4.2.1 全有効データのア
ソシエーション・エンジン・ライト動作 図143は、アソシエーション・エンジン#2とアソシ
エーション・エンジン#1との間の4バイト転送のタイ
ミングを示す。write 命令の長さは、スケーラ・データ
・レジスタの1つの値により制御される。この例では、
このスケーラ・データ・レジスタに含まれる値は4であ
る。実際に実行される命令はvwrite V0,G0でもよ
い。またアソシエーション・エンジン#1は、ウェスト
/イースト・スイッチが閉じられているので、イースト
・ポートに提示されたデータはウェスト・ポートに伝え
られる。アソシエーション・エンジン#1では、イース
ト・タップが開いているので、デバイスに提示されたデ
ータは、アソシエーション・エンジン#1に流れるに過
ぎず、内部IDRロケーションを変えることはない。 【0720】クロック・サイクル2 アソシエーション・エンジン#2は、ライト命令の実行
に応答して、CLK信号の立ち下がり端で反転WCO2
出力をアサートする。この動作は、データが次のクロッ
ク・サイクルでWD2 出力に提示されることを示す。 【0721】クロック・サイクル3 アソシエーション・エンジン#2は、PE#0のV0レ
ジスタの値を、CLK信号の立ち下がり端のWD2 ライ
ンに出す。また、アソシエーション・エンジン#1は、
反転ECI1 が前のクロック・サイクルでラッチおよび
解読されたことに応答して、CLKの立ち下がり端で反
転WCO1 をアサートする。 【0722】CLK4および5 これらのクロック・サイクルでは、データはクロック・
サイクルの最初でラッチされて、通過し、CLKの立ち
下がり端で出される。 【0723】クロック・サイクル6 write 命令(アソシエーション・エンジン#2により開
始されたwrite )の終了に応答して、反転WCO2 ライ
ンがCLK信号の立ち下がり端でネゲートされる。ま
た、最後のデータがアソシエーション・エンジン#2の
出力で駆動される(WD2 )。 【0724】クロック・サイクル7 反転ECI1 信号に応答して、アソシエーション・エン
ジン#1はCLK信号の立ち下がり端で反転WCO1 信
号をネゲートし、最後のデータを出す。 【0725】セクション4.2.2 部分有効データの
アソシエーション・エンジン・ライト動作 図144は、アソシエーション・エンジン#2とアソシ
エーション・エンジン#1との間の2バイト転送のタイ
ミングを示す。write 命令の長さは、スケーラ・データ
・レジスタの1つの値により制御される。この例では、
このスケーラ・データ・レジスタに含まれる値は4であ
る。実際に実行される命令はvwrite V0,G0でもよ
い。2個のバイトしか転送されない理由は、4個のPE
のうち2個のVTビットがクリアされている(無効デー
タのためにデータを供給しない)ためである。またアソ
シエーション・エンジン#1は、ウェスト/イースト・
スイッチが開いているので、イースト・ポートに提示さ
れたデータはウェスト・ポートには伝えられない。アソ
シエーション・エンジン#1では、イースト・タップが
閉じているので、デバイスに提示されたデータは、アソ
シエーション・エンジン#1のIDRに書き込まれるだ
けである。アソシエーション・エンジン#1のIDR
は、最初の2つのロケーションにこの動作で書き込まれ
る点に注意すること。ソースからの書き込みプロセスに
ギャップがある影響は、デスティネーションでデータ・
バイトの詰め込みという効果をもつ。 【0726】クロック・サイクル2 アソシエーション・エンジン#2は、ライト命令の実行
に応答して、CLK信号の立ち下がり端で反転WCO2
出力をアサートする。この動作は、データが次のクロッ
ク・サイクルでWD2 出力に提示されることを示す。 【0727】クロック・サイクル3 アソシエーション・エンジン#2は、PE#0のV0レ
ジスタの値を、CLK信号の立ち下がり端のWD2 ライ
ンに出す。また、反転WCO2 信号は、内部状態に応答
してネゲートされるので、次のPEはVTビットがクリ
アされる。 【0728】CLK4 WD2 が、CLK信号の立ち下がり端で3状態になる。 【0729】クロック・サイクル5 次のクロック・サイクルに送られるデータをもつアクテ
ィブなPEに応答して、反転WCO2 がCLK信号の立
ち下がり端でアサートされる。 【0730】クロック・サイクル6 write 命令(アソシエーション・エンジン#2により開
始されたライト)の終了に応答して、反転WCO2 ライ
ンがCLK信号の立ち下がり端でネゲートされる。ま
た、最後のデータがアソシエーション・エンジン#2の
出力で駆動される(WD2 )。 【0731】セクション4.2.3 アソシエーション
・エンジン・ライト衝突タイミング 図145は、ポートの1つでのアソシエーション・エン
ジン衝突のタイミングを示す。衝突には2つのタイプが
ある。第1のタイプは、2つのアソシエーション・エン
ジンが同時にライト動作を行うことによるものである。
この場合は、反転xCI信号(データを1クロック・サ
イクル進める)が両方ともアクティブになる。この状態
(たとえば、反転ECIおよび反転ECOがいずれもア
クティブ)は、ポート衝突が起こったことを表す。第2
のタイプは、ポート・ライト動作が進行中であって、同
じポートにwrite 命令が実行されたときに起こる。この
場合は、データはポートに入れられるが、反転xCI信
号が再び用いられて、電気的損傷が起こらないうちに衝
突を検出する。 【0732】ポート衝突が(両方のアソシエーション・
エンジンにより)検出されると、例外処理が両デバイス
により実行される(1つが休止していて、データが通過
するだけであっても)。衝突例外ベクタがフェッチされ
て、衝突のための例外処理が開始され、適切なステータ
ス・ビットがセットされる。 【0733】クロック・サイクル2および3 これらの2つのクロック・サイクルが同時ポート衝突を
示す。 【0734】クロック・サイクル8ないし11 これらのクロック・サイクルは、ライトが進行中であ
り、別のライトが実行されていることを示す。 【0735】セクション4.3 その他のタイミング アソシエーション・エンジンの残りの信号は、done,ラ
ン/ストップ,割込,リセットおよびユーザ・テスト関
数を扱う。以下の図が、これらのフィーチャのタイミン
グを示す。 【0736】Doneの表示(反転BUSY信号をアサート
する)は、2つのソースのいずれか一方から来ることが
ある。第1は、done命令が実行されると反転BUSY信
号をネゲートして、アソシエーション・エンジンを現在
のPCロケーションに保持する。これは、halt命令と似
ているが、反転BUSY出力をネゲートするという機能
が追加されている。第2は、アソシエーション・エンジ
ンが単一ステップ・モードの動作にいる場合は、反転B
USY信号が現在の命令の最後にネゲートする。(図1
46参照。) 【0737】R/反転S信号は、アソシエーション・エ
ンジンに対して、ラン・モード(R/反転S=1)にお
いてもストップ・モード(R/反転S=0)において
も、どの状態にデバイスがあるかを知らせる。データが
「移動中」で、R/反転Sラインがストップ状態に移る
場合では、データは内部ロケーションに保持されて、転
送はそれがオフになったところから再開される。また、
R/反転S信号がラン・モードからストップ・モードに
移行し(1−>0)ているときに命令が実行中の場合
は、充分な状態情報が残り、アソシエーション・エンジ
ンがラン・モード(R/反転S=1)に戻ったときに実
行が再開される。 【0738】アソシエーション・エンジン割込は、任意
の数の内部条件により発生される。割込の詳細について
は、セクション2.3.22,割込ステータス・レジス
タ#1(ISR1)およびセクション2.3.24,割
込ステータス・レジスタ#2(ISR2)を参照のこ
と。 【0739】アソシエーション・エンジンのリセット・
シーケンスには、内部初期化関数を実行するために4つ
のクロック・サイクルが必要である。 【0740】アソシエーション・エンジンにもユーザが
アクセス可能なテスト・ポートが含まれており、これに
より広範囲のボード・テスト関数が可能になる。このテ
スト・ポートはIEEE1149.1と互換性がある。
読者は、テスト・ポートの動作の詳細については、IE
EE1149.1文書を参照されたい。 【0741】セクション4.3.1 アソシエーション
・エンジン反転BUSY出力タイミング 図147は、アソシエーション・エンジン反転BUSY
信号のタイミングを示す。第1のケースは、done命令を
示す。第2のケースは、命令の終了が単一ステップ・モ
ードであることを示す。反転BUSYラインは、開放さ
れたドレーン出力となっているので、すべてのアソシエ
ーション・エンジンがdone命令を実行すると、外部引き
上げ(external pull up)によりこの出力を高電圧にす
ることができる。 【0742】クロック・サイクル2 CLK信号の立ち下がり端で、PSTATラインが、ス
ケーラ命令が実行されていることを示す。 【0743】クロック・サイクル3 done命令が実行されることに応答して、CLK信号の立
ち下がり端で反転BUSYがネゲートされる。 【0744】クロック・サイクル4 外部デバイスがランからストップにR/反転Sラインを
移行する。 【0745】クロック・サイクル5 サイクルの最初でR/反転S入力が解読されて、アクテ
ィブになる。これにより反転BUSY出力がアサートさ
れる。 【0746】クロック・サイクル6 サイクルの最初でR/反転Sラインが、ラン状態で解読
される。これは、done命令のすぐ後の命令でアソシエー
ション・エンジンを再始動する効果をもつ。 【0747】クロック・サイクル7 CLK信号の立ち下がり端で、PSTATラインは何か
の命令が実行されていることを示す。 【0748】クロック・サイクル8 CLK信号の立ち下がり端で、反転BUSY信号がネゲ
ートされて、現在の命令が終了したことを示す。 【0749】クロック・サイクル10および11 R/反転Sラインがランからストップそしてランに移行
すると、アソシエーション・エンジンが再始動される。
これは次に実行される命令をイネーブルにする。 【0750】セクション4.3.2 ラン/ストップ介
入のあるアソシエーション・エンジン・ライト・タイミ
ング 図148は、アソシエーション・エンジンが動作の途中
で停止された場合のアソシエーション・エンジン・ライ
ト動作のタイミングを示す。 【0751】クロック・サイクル2 アソシエーション・エンジン#2は、write 命令の実行
に応答して、CLK信号の立ち下がり端で反転WCO2
出力をアサートした。この動作は、次のクロック・サイ
クルでWD2 出力にデータが提示されることを示す。 【0752】クロック・サイクル3 アソシエーション・エンジン#2は、PE#0のV0レ
ジスタの値を、CLK信号の立ち下がり端のWD2 ライ
ンに出す。また、アソシエーション・エンジン#1は、
前のクロック・サイクルで反転ECI1 がラッチされ解
読されたことに応答して、CLK信号の立ち下がり端で
反転WCO1 をアサートした。 【0753】クロック・サイクル4 このクロック・サイクルの最初でデータがラッチされ、
伝えられ、CLK信号の立ち下がり端で出される。また
外部デバイスがR/反転S信号をアサートして、ストッ
プ・モードに入るべきであることを知らせる。 【0754】クロック・サイクル5 サイクルの最初で、R/反転S信号がアサートされてい
ると解読される。CLK信号の立ち下がり端で、すべて
の反転WCO出力がネゲートし、すべてのWD出力が3
状態になる。 【0755】クロック・サイクル6 外部デバイスがR/反転S入力をネゲートする。 【0756】クロック・サイクル7 サイクルの最初でR/反転S入力がネゲートされている
と解読される。CLK信号の立ち下がり端で、反転WC
O出力がアサートされ、次のクロック・サイクルでデー
タが提示されることを示す。 【0757】クロック・サイクル8 アソシエーション・エンジン#1は、PE#0からV0
(R/反転Sがストップ・モードになったときに内部保
持されていた)を再びWD1 に提示して、アソシエーシ
ョン・エンジン#2は、CLK信号の立ち下がり端で、
PE#1からV0をもう一度WD2 に提示する。 【0758】クロック・サイクル9 このクロック・サイクルの最初でデータがラッチされ、
伝えられ、CLK信号の立ち下がり端で出される。 【0759】クロック・サイクル10 write 命令の終了(アソシエーション・エンジン#2)
に応答して、反転WCO2 ラインがCLK信号の立ち下
がり端でネゲートされる。また最後のデータがアソシエ
ーション・エンジン#2の出力(WD2 )で駆動され
る。 【0760】クロック・サイクル11 反転ECI1 信号に応答して、アソシエーション・エン
ジン#1はCLK信号の立ち下がり端で反転WCO1 信
号をネゲートし、最後のデータを出す。 【0761】セクション4.3.3 割込タイミング 図149は、アソシエーション・エンジン割込発生のタ
イミングを示す。以下の流れは、発生して割込条件でホ
ストをクリアにするイベントのシーケンスを説明する。 【0762】クロック・サイクル4 CLK信号の立ち下がり端で、割込を発生するような何
らかの内部アソシエーション・エンジン条件が真とな
る。これは、AICRのステータス・ビットの設定値で
あることが多い。詳細については、セクション2.3.
22,割込ステータス・レジスタ#1(ISR1)およ
びセクション2.3.24,割込ステータス・レジスタ
#2(ISR2)を参照のこと。 【0763】クロック・サイクル5 CLK信号の立ち下がり端で、反転INTR信号がアサ
ートされ、ホストに対して割込が起こったことを知らせ
る。割込のマスキングの詳細については、セクション
2.3.23,割込マスク・レジスタ#1(IMR1)
およびセクション2.3.25,割込マスク・レジスタ
#2(IMR2)を参照のこと。 【0764】クロック・サイクル7および8 このタイミング図は、割込に応答するためにホストが2
サイクルを必要としていることを前提とする。 【0765】クロック・サイクル9 CLK信号の立ち上がり端で(サイクルの初期で)、ホ
ストは割込ステータス・レジスタ(ISR)にアクセス
して、割込条件をクリアする。これは図137に図示さ
れるランダム・アクセス・モードの動作で行われること
が多い。 【0766】クロック・サイクル10 CLK信号の立ち下がり端で、INTR出力がネゲート
されて、割込条件がクリアされた、あるいはディスエー
ブルになったことを示す。 【0767】 セクション4.3.4 リセット・タイミング 図150は、アソシエーション・エンジンのリセット・
シーケンスのタイミングを示す。リセット・シーケンス
は、内部レジスタをそのデフォルト状態に初期化するた
めにアソシエーション・エンジンにより用いられる。以
下の流れは、リセット・シーケンスのイベントを説明す
る。ウォーム・リセットでは、反転RESET信号が少
なくとも3クロック・サイクルの間アサートされること
が必要である。コールド・リセットの場合は、反転RE
SET信号は、電力が安定してから少なくとも3クロッ
ク・サイクルの間アサートされることが必要である。反
転RESET信号入力は、高ゲインのシンクロナイザを
有して、CLK信号の立ち上がり端のピンの状態を決め
る。 【0768】クロック・サイクル2 このクロック・サイクルの間に、反転RESET入力信
号は下がる。クロック・サイクル#3で反転RESET
信号の内部同期されたバージョンをアサートするために
は、反転RESET入力をCLK信号の立ち上がり端よ
り少し前にアサートしなければならない。 【0769】クロック・サイクル3 反転RESET入力がCLK信号の立ち上がり端の準備
時間要件を満足すると、反転RESET入力の内部同期
されたバージョン(rsync )がアサートする。rst 信号
をアサートすることにより、このイベントによりシステ
ムのリセット・シーケンスを開始する。 【0770】クロック・サイクル6 反転RESET入力はクロック・サイクル#6のどこか
でネゲートし、内部同期されたバージョンもネゲートす
るには、CLK信号の立ち上がり端によりネゲートされ
なければならない。 【0771】クロック・サイクル7 反転RESET入力がCLK信号の立ち上がり端の準備
時間要件を満足すると、反転RESET入力の内部同期
されたバージョン(rsync )がネゲートする。このネゲ
ーションにより内部リセット・シーケンスが開始され
る。 【0772】クロック・サイクル10 リセット・シーケンスの最後で、内部システム・リセッ
ト(rst )がネゲートされて、アソシエーション・エン
ジン・システムはユーザ初期化の用意ができる。 【0773】セクション4.3.5 IEEE114
9.1テスト・アクセス・ポート(TAP)タイミング 図151は、ユーザがアクセス可能なテスト・ポートの
タイミングを示す。このテスト・ポートは、IEEE1
149.1基準に準拠している。1149.1インター
フェースの動作を制御する内部状態および状態の移行の
詳細については、ユーザはIEEE1149.1文書を
参照されたい。ここで示されるタイミング図は、TCK
クロック信号に関してTAPとシステム・ピンとの間の
関係を説明する。 【0774】クロック・サイクル4および8 すべてのTAP入力(TDI,TMS)とシステム入力
(および双方向入力)がTCK信号の立ち上がり端でラ
ッチされる。 【0775】クロック・サイクル3,7および11 すべてのTAP出力(TDO)とシステム出力(および
双方向出力)が、TCK信号の立ち下がり端でイネーブ
ルになる。 【0776】セクション5 特定のトピックスの概要 「アサートする」および「ネゲートする」という用語は
それぞれ、信号,ステータス・ビットまたは同様の装置
を、論理的に真または論理的に偽の状態にすることを指
すために用いられる。論理的に真の状態が論理レベル1
であれば、論理的に偽の状態は論理レベル0になる。ま
た論理的に真の状態が論理レベル0であれば、論理的に
偽の状態は論理レベル1になる。 【0777】「バス」という用語は、データ,アドレ
ス,制御またはステータスなどの1つ以上の種々のタイ
プの情報を転送するために用いられる複数の信号を指す
ために用いられる。数字の前にシンボル「$」またはシ
ンボル「0x」がある場合は、その数字が16進数また
は16を底にした形で表されていることを示す。同様に
数字の後に「H」がつくと、その数字は16進数または
16を底にした形で表されていることを示す。数字の前
に「%」というシンボルがある場合は、その数字が2進
数または2を底にした形で表されることを示す。 【0778】データ・プロセッサ10は、命令を記憶す
ることができるが、1つ以上の命令が記憶される様式は
変わることがある。たとえば、命令を記憶するために、
データ・プロセッサ10は命令キャッシュ20(図78
参照)を有することも、ランダム・アクセス・メモリ
(RAM)または読み込み専用メモリ(ROM)などの
任意のタイプのオンボード・メモリ(たとえばCMA1
4)を有することもある。あるいは、データ・プロセッ
サ10は外部ソースから命令を受信して、命令を解読す
ることができるように、受信した命令をバッファまたは
ラッチ回路に短い間記憶することもある。このように命
令の記憶は、恒久的である場合も、一時的である場合
も、きわめて短時間である場合もある。 【0779】図面では、同一図内での複数のデータ・プ
ロセッサ10は、参照番号10.1,10.2,10.
3などを用いて記される(例として図16を参照)。デ
ータ・プロセッサ10.1,10.2,10.3など
は、ハードウェアについてもソフトウェアについても同
じものである場合、ハードウェアについては同じである
がソフトウェアについては異なっている場合、ハードウ
ェアについてもソフトウェアについても異なっている場
合がある。10.xという用語は、データ・プロセッサ
10.1,10.2,10.3などの任意の1機を指
す。また「アソシエーション・エンジン」または「A
E」という用語はデータ・プロセッサ10.xを指すた
めに用いられる。 【0780】同様に、データ処理システム55の種々の
実施例は、55.1,55.2,55.3などと示され
る(図16参照)。55.xという言葉は、データ処理
システム55.1,55.2,55.3などの任意の1
機を指すために用いられる。データ処理システム57の
種々の実施例は、57.1,57.2,57.3などと
示される。57.xという言葉は、データ処理システム
57.1,57.2,57.3などの任意の1機を指す
ために用いられる。図16では、データ処理システム5
7はデータ処理システム55の一部であっても、あるは
データ処理システム57はそれ自身完全なシステムとし
てのスタンドアロン装置であってもよい。このように任
意のデータ処理システム57は、データ処理システム5
5の一部となりうる。多くのアプリケーションでは、外
部CPU54を用いるが、これは必須ではない。CPU
54はオンボード・メモリ(図示せず)をもっているこ
とがあり、これによりRAM56,ROM58およびデ
ィスク60は必要がなくなることもある。さらにCPU
54がデータ・プロセッサ10.xに直接インターフェ
ースすることができる場合は、インターフェース論理6
2は必要ない。導体61は、データ・プロセッサ10.
xの種々のイースト・ポートとウェスト・ポートとを結
合するために用いられる。導体63は、データ・プロセ
ッサ10.xの種々のノース・ポートとサウス・ポート
とを結合するために用いられる。 【0781】セクション2.5および表2.34を見る
と、表2.34にリストアップされた命令を指す場合に
本書ではマイクロコード,命令およびマイクロコード命
令という用語が交換可能に用いられている。表2.34
にリストアップされた命令は、アセンブリ言語レベルで
データ・プロセッサ10をプログラミングするためにソ
フトウェアのプログラマが用いる命令である。 【0782】セクション5.1 飽和保護 本発明の一定の命令は「飽和する」命令である。セクシ
ョン2.5.9,セクション2.5.19.1および用
語集の定義に、「オーバーフロー」および「飽和」とい
う用語が論じられている。「オーバーフロー」とは、レ
ジスタに記憶される値がそのレジスタが記憶することの
できる最大値を越えている状況を指す(たとえば8ビッ
トのレジスタに%100000001を記憶させようと
する)。「飽和」または「飽和保護」とは、オーバーフ
ローを処理する方法を指し、レジスタ内の値が上位境界
値または下位境界値と置き換えられる。たとえば、8ビ
ットの符号なしの最大境界値を$FFに置き換える。 【0783】図153では、本発明の図示された実施例
において、特定の非予備スケーラ命令も飽和命令であ
る。これらは「add 」, 「addsx 」, 「sub 」, 「subs
x 」,「neg 」および「abs 」である。同様に特定の非
予備ベクタ命令も飽和命令である。これらは「vadd」,
「vaddsx」, 「vsub」, 「vsubsx」, 「vneg」および
「vabs」である。これらの飽和命令は、オーバーフロー
があるといつも飽和する(すなわちスケーラ飽和命令に
ついてSVビット214がアサートされ、VVビット1
06がベクタ飽和命令についてアサートされた場合)。
SVビット214は、スケーラ・プロセス制御レジスタ
(SPCR)208に位置している(図54参照)。V
Vビット106は、ベクタ・プロセス制御レジスタ(V
PCR)102に位置している(図74参照)。 【0784】飽和スケーラ命令に関しては、オーバーフ
ロー値SVビット214がアサートされると、算術演算
動作の結果は上位境界または下位境界により置き換えら
れる。対応するオーバーフロー方向ビットであるSPC
Rレジスタ208に位置するSDビット216が、オー
バーフローが正の方向であったか負の方向であったかを
決定する。オーバーフローの方向により、上位境界また
は下位境界のどちらの境界値がデータ処理動作の結果と
置き替わるために用いられるかが決まる。符号ビットで
ある算術演算制御レジスタ(ACR)172に位置する
SSGNビット174は、数字に符号があるかないかを
示す。符号があるかないかにより、上位境界および下位
境界の値が決まる。 【0785】飽和ベクタ命令に関しては、オーバーフロ
ー値VVビット106がアサートされると、算術演算動
作の結果は上位境界または下位境界により置き換えられ
る。対応するオーバーフロー方向ビットであるVPCR
レジスタ102に位置するVDビット108が、オーバ
ーフローが正の方向であったか負の方向であったかを決
定する。オーバーフローの方向により、上位境界または
下位境界のどちらの境界値がデータ処理動作の結果と置
き替わるために用いられるかが決まる。符号ビットであ
る算術演算制御レジスタ(ACR)172に位置するV
SGNビット176は、数字に符号があるかないかを示
す。符号があるかないかにより、上位境界および下位境
界の値が決まる。 【0786】「sat 」および「vsat」命令は、飽和以外
のことは実行しない特殊な飽和命令である。「sat 」お
よび「vsat」命令は特に、延長算術演算動作に便利であ
る。一般に、1つの非予備命令が後に続く1つ以上の予
備命令は、延長算術演算動作を実行するために用いられ
る。非予備命令が飽和命令である場合は、非予備飽和命
令により作成された多重バイト結果のうち1バイトは、
オーバーフローがあった場合はすでに調整されている。
しかし、結果が飽和した場合、多重バイト結果の残りの
バイトには不正確な値が含まれる。「sat 」および「vs
at」命令は、多重バイト算術演算動作に対する飽和保護
を行う。 【0787】図152は、「sat 」命令を用いてスケー
ラ・エンジン26のレジスタに対する飽和保護が行える
例を示す。「vsat」命令は、ベクタ・エンジン9のレジ
スタに関して同じ飽和関数を実行する。図152に示す
例では、命令の目的はレジスタ・グループ(G0,G
1,G2)に記憶されている3バイトのデータ値を、レ
ジスタ・グループ(G3,G4,G5)に記憶されてい
る3バイトのデータ値に加えて、レジスタ・グループ
(G3,G4,G5)に記憶されている3バイトの結果
がオーバーフローがあった場合に飽和するようにするこ
とである。 【0788】 addp G2,G5 予備G2をG5に加える (不飽和add 動作) addp G1,G4 予備G1をG4に加える (不飽和add 動作) add G0,G3 非予備G0をG3に加える (飽和add 動作) sat G4 G4に飽和保護を実行 (オーバーフローに基づいてG4の値を修正) sat G5 G5に飽和保護を実行 (オーバーフローに基づいてG5の値を修正) 【0789】「add G0,G3」命令の実行の終了時に
は、レジスタ・グループ(G3,G4,G5)には部分
的に飽和した結果が含まれ、オーバーフロー値SVビッ
ト214はオーバーフローがあったことを示す。対応す
るオーバーフロー方向ビット,SDビット216は、オ
ーバーフローが正の方向であったことを示す。符号ビッ
トSSGNビット174は、この例では数字に符号がな
いことを示す。「satG4」命令は、オーバーフロー値
とオーバーフロー方向ビットと符号ビットとを用いて飽
和が正の方向に起こったことと、上位境界値$FFをレ
ジスタG4に記憶して誤った結果$34と置き替えねば
ならないこととを判断する。「sat G5」命令は、オー
バーフロー値とオーバーフロー方向ビットと符号ビット
とを用いて飽和が正の方向に起こったことと、上位境界
値$FFをレジスタG5に記憶して誤った結果$33と
置き替えねばならないこととを判断する。 【0790】セクション5.2 データ・プロセッサ間
の通信:スイッチとタップ 図132と図78を見ると、スイッチ42によりデータ
はデータ・プロセッサ10を流れることができ、タップ
40によりデータはデータ・プロセッサ10に受信され
ラッチされる。図16では、タップとスイッチを用い
て、データ・プロセッサ10のアレイを用いるシステム
内でのスケーリングを可能にすることができる。スイッ
チは、転送されているデータがデータ・プロセッサ10
による内部介入なしにデータ・プロセッサ10を横断す
ることを可能にする。タップは、データ・プロセッサ1
0のポートに到着したデータがデータ・プロセッサ10
の入力データ・レジスタ(IDR)18にコピーされる
ことを可能にする。 【0791】データ・プロセッサ10がアレイ内で隣接
していない場合に、2機(またはそれ以上)のデータ・
プロセッサ10が通信するためには、データ・プロセッ
サ10をつなぐスイッチは閉じていなければならない
(すなわち導電モードにある)。これでスイッチによ
り、あるデータ・プロセッサ10は他のデータ・プロセ
ッサ10に対して、2機の通信を行うデータ・プロセッ
サ10の間にあるデータ・プロセッサを介入せずにデー
タを送ることができる。好適な実施例においては、タッ
プによりデータ・プロセッサ10は、任意のポートにつ
いたデータを捕捉することができる。 【0792】ポート(ノース,サウス,イーストおよび
ウェスト)の数と、スイッチ(42.1,42.2)の
数と、タップ(40.1,40.2,40.3,40.
4)の数とは互いに独立していることに注意すること。
本発明の代替の実施例では、さまざまな数のポート,ス
イッチおよびタップを持つことができる。たとえば、デ
ータ・プロセッサ10は、より少ない数またはより多く
の数のポートを持つことができ、各ポートに1つのタッ
プがある必要はなく、1つのポートを複数のスイッチに
結合してもよい。各スイッチはタップや他のスイッチと
は独立して動作することができ、各タップはスイッチや
他のタップとは独立して動作することができる。 【0793】好適な実施例に図示されたスイッチは双方
向であるが、一方向スイッチを用いることもできる。た
とえば1つの双方向スイッチの代わりに、2つの一方向
スイッチを用いてもよい。一方向スイッチが用いられる
場合には、データの流れの方向を決めるために用いるこ
とのできる別の制御ビットを追加してもよい。スイッチ
は、任意のタイプのアナログまたはデジタル回路構成、
たとえば合成論理または逐次論理を用いて実現すること
ができる。実際にスイッチとタップを構築するために必
要な特定の回路構成は、当業者には周知である。 【0794】図示された実施例においては、スイッチが
導電モードにある(接続されている)ときは、デジタル
・データはスイッチの一端からスイッチの他端へと転送
される。そのためスイッチを通じて、あるポートから他
のポートへとデータを伝えることができる。スイッチが
非導電モードにある(接続が分離されている)ときは、
デジタル・データはスイッチの一端からスイッチの他端
へと転送されない。そのために、スイッチを通じてある
ポートから他のポートへとデータを伝えることができな
い。 【0795】図26,表2.10および図78を見る
と、ポート制御レジスタ(PCR)52は、スイッチお
よびタップを制御するために用いられる制御ビットを含
む。PCR52のビット0〜6は、データ・プロセッサ
10により実行される特定の命令によるシステム・リセ
ットと、外部プロセッサ(たとえば図16のCPU5
4)からのホスト・アクセスとにより変更することがで
きる。転送されているデジタル・データそのものは、経
路決定情報を持つ必要がないことに留意されたい。その
ためデジタル・データそのものは、どのデータ・プロセ
ッサ(群)10がデジタル・データを受信およびラッチ
するかを示す必要はない。 【0796】データ・プロセッサ10が命令を実行して
いる間に、ソフトウェア・プログラムがPCR52のビ
ット0〜6をダイナミックに修正できることに留意され
たい。ソフトウェア・プログラムは、命令キャッシュ2
0内またはオンボード・メモリ(図示せず)に位置する
データ・プロセッサ10内の内部プログラムであって
も、CPU54,RAM56,ROM58またはディス
ク60のいずれかに位置する外部プログラムであっても
よい。データ・プロセッサ10は、ポート間でのデータ
転送を行うために、いかなる命令も実行する必要がない
こと、アクティブ制御を行使する必要がないことに留意
されたい。 【0797】PCR52の制御ビットにより、データ・
プロセッサ10の通信構造を種々のシステム・コンフィ
ギュレーションのために変更したり、データ・プロセッ
サ10が命令を実行している間にダイナミックに変更す
ることができる。そのため、スイッチおよびタップ・ア
ーキテクチャはユーザに対して、単独のハードウェア接
続またはハードウェア導体を変更する必要なしに、ソフ
トウェアを通じてデータ・プロセッサ10のアレイを全
体的に再コンフィギュレーションする能力を提供する。 【0798】図132では、ノース・ポート・ピン44
が、スイッチ回路42.1を介してサウス・ポート・ピ
ン48に選択的に結合され、ウェスト・ポート・ピン5
0がスイッチ回路42.2を介してイースト・ポート・
ピン46に選択的に結合されている。ノース・ポート・
ピン44は、タップ回路40.1を介して入力データ・
レジスタ(IDR)18に選択的に結合されている。イ
ースト・ポート・ピン46は、タップ回路40.2を介
して入力データ・レジスタ(IDR)18に選択的に結
合されている。サウス・ポート・ピン48は、タップ回
路40.3を介して入力データ・レジスタ(IDR)1
8に選択的に結合されている。ウェスト・ポート・ピン
50は、タップ回路40.4を介して入力データ・レジ
スタ(IDR)18に選択的に結合されている。 【0799】 セクション5.3 多重ポート・データ・プロセッサ 図154,図155,図156,図157,図158,
図159および図160では、データ・プロセッサ10
は2つの動作モードのいずれか1つ、すなわち「ストッ
プ」モードおよび「ラン」モードにいることができる。
「ストップ」モードは、「ホスト」モードとも呼ばれ
る。本発明の図示された実施例においては、動作モード
はデータ・プロセッサ10に対する入力により選択され
る。R/反転S集積回路ピン80(図18参照)の論理
レベルを用いて、データ・プロセッサ10がストップ・
モードにあるのか、ラン・モードにあるのかを判断す
る。ストップ・モードでは、外部からアクセスできるデ
ータ・プロセッサ10内のすべてのレジスタが外部アク
セス可能である;またデータ・プロセッサ10は命令を
実行していない。ラン・モードでは、外部からアクセス
できるデータ・プロセッサ10内のすべてのレジスタ
は、IDRレジスタ18(図78参照)を除き、外部ア
クセスに用いることはできない。またデータ・プロセッ
サ10は命令をフェッチし、解読して、実行することが
できる。 【0800】図示された実施例のノース,サウス,イー
ストおよびウェスト・ポートは、動作モードにより異な
る目的を果たし、異なる機能を行う。同様に信号と集積
回路ピンも、動作モードにより異なる目的を果たし、異
なる機能を行うものがある(表2.2参照)。 【0801】ラン・モードでは、行列選択信号よりも、
スイッチおよびタップを用いてポートを通じた通信を制
御する。本発明の図示された実施例では、スイッチ4
2.1と42.2とが、タップ40.1,40.2,4
0.3,40.4(図132参照)と共に用いられて、
データ・プロセッサ10が他の外部データ・プロセッサ
10との通信および/またはラン・モードでのホスト・
データ・プロセッサ54との通信を行うことを可能にす
る。図示された実施例では、反転ROW集積回路ピン8
2と反転COL集積回路ピン84(図18参照)は、ラ
ン・モードで列または行選択信号を受信するために用い
られない。 【0802】ストップ・モードでは、スイッチおよびタ
ップよりも、行列選択信号が用いられてポートを通じた
通信を制御する。図示された実施例では、列選択信号は
反転COLピン84により受信され、行選択信号は反転
ROWピン82により受信される。本発明の図示された
実施例においては、ストップ・モードでは、スイッチ4
2.1と42.2はタップ40.1,40.2,40.
3,40.4(図132参照)と共に用いられない。 【0803】ストップ・モードでは、データ・プロセッ
サ10は列選択信号と行選択信号とを用いて、情報を伝
えるか否か、また情報を記憶する、あるいは情報を引き
出すか否かを決める。行選択ピンも列選択ピンもアサー
トされていない場合は、データ・プロセッサ10は情報
を伝えることもしない。しかし行選択ピン(反転ROW
ピン82)または列選択ピン(反転COLピン84)の
どちらか一方だけがアサートされている場合は、データ
・プロセッサ10は情報を伝えるが、情報を記憶した
り、オリジナル・ソースとして機能することはしない。
また行選択信号と列選択信号の両方がアサートされてい
る場合は、データ・プロセッサ10は情報を伝え、情報
を格納するか、情報のオリジナル・ソースとして機能す
る。 【0804】データ・プロセッサ10がストップ・モー
ドにあるときは、選択できるアクセス・モードは2つあ
る:すなわちランダム・アクセス・モードとストリーム
・アクセス・モードである。アクセス・モードにより、
データ・プロセッサ10内部のリソースがアクセスされ
る方法が決まる。本発明の図示された実施例では、アク
セス・モードはデータ・プロセッサ10に対する入力に
よって選択される。OP集積回路ピン94(図18参
照)の論理レベルを用いて、データ・プロセッサ10が
ランダム・アクセス・モードでアクセスされるか、スト
リーム・アクセス・モードでアクセスされるかが決定さ
れる。 【0805】ランダム・アクセス・モードでは、データ
・プロセッサ10内のどの単独の内部アドレス・ロケー
ションがアクセスされるかを指定するには、アドレスを
外部からデータ・プロセッサ10に供給しなければなら
ない。外部から供給されたアドレスは、ノース・ポート
とウェスト・ポートの両方でデータ・プロセッサ10に
受信される。図示された実施例では、ランダム・アクセ
ス・モードを用いて一度に1つのデータ・プロセッサ1
0にしかアクセスしない。 【0806】ストリーム・アクセス・モードでは、デー
タ・プロセッサ10に対してアドレスが外部から供給さ
れることはない。その代わりに、データ・プロセッサ1
0は情報転送のためのアドレスを1つ以上内部で生成し
なければならない。またデータ・プロセッサ10がスト
リーム・アクセス・モードにあるときには、任意のバイ
ト数のデータをデータの「ストリーム」として、データ
・プロセッサ10内外に転送することができる。図示さ
れた実施例では、ストリーム・アクセス・モードを用い
て、一度に1つ以上のデータ・プロセッサ10にアクセ
スすることができる。 【0807】データ・プロセッサ10がストップ・モー
ドのあるときには、いくつかのレジスタが特殊な関数を
実行することも、あるいは用いられるだけの場合もあ
る。本発明の図示された実施例では、データ・プロセッ
サ10がストップ動作モードにあり、ストリーム・アク
セス・モードにある場合は、オフセット・アドレス・レ
ジスタ#1(OAR1)96,オフセット・アドレス・
レジスタ#2(OAR2)98,深さ制御レジスタ#1
(DCR1)97,深さ制御レジスタ#2(DCR2)
99,ホスト・ストリーム選択レジスタ(HSSR)1
00およびホスト・ストリーム・オフセット・レジスタ
(HSOR)222が用いられる。 【0808】セクション5.4 データ・プロセッサに
おける延長動作 データ・プロセッサによく見られる問題点は、1つの算
術演算論理ユニット(ALU)のサイクル内で使用可能
なALUにより対応できるものよりも幅の広い、すなわ
ちビット数の多いデータに関して算術計算を実行しなけ
ればならないことである。たとえば、16ビットのAL
Uを用いて2個の32ビットのデータ値を加算すること
が求められることも珍しいことではない。従来技術によ
るデータ・プロセッサは、1つの「キャリー」または
「拡張」ビットを設け、2つのバージョンの計算命令を
設けて、キャリー・ビットを命令に対する入力として用
いる(たとえば「加算」と「キャリーのある加算」,
「減算」と「ボローのある減算」,「右へのシフト」と
「拡張のある右へのシフト」など)か否かを指定するこ
とによりこのような拡張算術演算に対応するのが普通で
ある。この従来の方法は、限られた範囲の動作には充分
であるが、その他の延長動作には充分に対応しない。拡
大された範囲の延長動作に効率的に対応する方法が必要
とされた。 【0809】従来の技術による単一拡張ビット法により
充分に対応できない延長動作の例としては、次のような
ものがある:(1)異なる長さを持つ2個の2の補数の
加算(短いほうの数を符号拡張しなければならない);
(2)異なる長さを持つ2個の2の補数の減算(短いほ
うの数を符号拡張しなければならない);(3)2個の
延長された数の最小値の計算(符号つきの場合もなしの
場合もある);(4)2個の延長された数の最大値の計
算(符号つきの場合もなしの場合もある);(5)2個
の延長された数の比較(符号つきの場合もなしの場合も
ある)とその結果を用いた条件分岐またはその他の条件
付き動作の制御;および(6)延長疑似乱数の計算。 【0810】拡大された範囲の延長動作に効率的に対応
する方法が必要とされた。本発明は、拡大された範囲の
延長動作に効率的に対応するだけでなく、加算,減算お
よびシフト動作にも対応する。本発明には、データ・プ
ロセッサにより実行される新規の命令と、この新しい命
令を実行するためのデータ・プロセッサの回路構成とが
含まれる。 【0811】本発明は延長動作を実行する新しい命令を
用いる。新規の命令は、2つのバージョンの命令、すな
わち「予備」バージョンの命令と「非予備」バージョン
の命令とを用いて実際に実現することができる。本発明
においては、異なるバージョンの新規命令を用いて、命
令の結果として拡張ビットがどのように修正されるかを
決める;異なるバージョンの命令は、1つの拡張ビット
が入力として用いられるか否かを決定するために用いら
れることはない。従来の技術では、異なるバージョンの
命令を用いて1つの拡張ビットを、命令の出力ではな
く、命令に対する入力として用いるか否かを指定してい
たことに注目されたい。さらに、新規の命令は、それぞ
れが異なる命令のために異なる関数を行う2個の拡張ビ
ットを用いる。固定されたキャリー・ビットまたはボロ
ー・ビットはなく、固定されたシフト拡張ビットもな
い。 【0812】図54,表2.29,図74および表2.
31では、ある実施例において、データ・プロセッサ1
0が2個の拡張ビット、すなわちX0,X1を有する。
「X0」,「xX0」という用語は、スケーラ・エンジ
ン26内のスケーラ・プロセス制御レジスタ(SPC
R)208に位置するSX0ビット210またはベクタ
・エンジン9内のベクタ・プロセス制御レジスタ(VP
CR)102に位置するVX0ビット104のいずれか
を表すために交換可能に用いられる。同様に、「X
1」,「xX1」という用語は、スケーラ・エンジン2
6のSPCRレジスタ208に位置するSX1ビット2
12またはベクタ・エンジン9のVPCRレジスタ10
2に位置するVX1ビット105のいずれかを表すため
に交換可能に用いられる。 【0813】データ・プロセッサ10により実行される
命令の多くは、拡張ビットX0およびX1の両方を無条
件にデフォルト状態(図示された実施例においては論理
状態0)にクリアして、「ナル」拡張データを知らせ
る。しかし、「予備」命令と呼ばれる特定の命令は選択
的に拡張ビットを修正することがある。延長計算は、通
常1つ以上の予備命令を用いる。各予備命令は、選択的
に拡張ビットを修正して、その後の命令のための拡張デ
ータを生成する。通常は、一連の1つ以上の予備命令の
後には、1つの非予備命令が続く。この非予備命令が拡
張ビットをそのデフォルトまたはネゲートされた状態に
戻す。図示された実施例ではこれは論理0状態である。 【0814】予備命令も非予備命令も、拡張ビットを入
力として用いるが、デフォルト拡張ビット・コード%0
0を入力としては無視するように設計されている。拡張
データの解釈は、実行されている延長動作の種類に依存
する。これについては以下に説明する。さまざまなカテ
ゴリの拡張動作と新しい命令とを説明する。説明のため
に、ALUは1バイト幅と想定する。しかし、同じ拡張
方法を任意の幅のALUに適用することができる点に注
目することが重要である。 【0815】加算および減算動作について説明する。加
算および減算動作に関しては、拡張ビットX0がキャリ
ーまたはボロー情報を表す;拡張ビットX1は拡張デー
タを生成する予備命令のためのソース・オペランドの符
号ビットを表す。拡張ビットX1のこの符号情報はその
後の「加算符号拡張」命令により用いられて、長さの短
いほうの数を符号拡張して、異なる長さを持つ符号を持
つ2個の2の補数の加算を正確に終了する。 【0816】図161は、4つの命令「addp」,「add
p」,「addsxp」および「addsx 」の列の実行を示す
が、これらは異なる長さを有する符号を持つ2個の2の
補数の加算動作を実行するために用いられる。図161
は、レジスタ・ペア(G1,G0)に含まれる2バイト
の数の、4個のレジスタ・グループ(G5,G4,G
3,G2)に含まれる4バイトの数への加算を示す。こ
の加算動作の結果は、レジスタ・グループ(G5,G
4,G3,G2)に入れられる。4命令コード・シーケ
ンスは、以下の順序でデータ・プロセッサ10により実
行される。 【0817】 addp G0,G2 ;G0をG2に予備加算 (拡張ビットを生成) addp G1,G3 ;G1をG3に予備加算 (拡張ビットを生成) addsxp G4 ;G4に符号拡張予備加算 (拡張ビットを生成) addsx G5 ;G5に符号拡張加算 (拡張ビットをクリア) 【0818】結果の計算はサンプル値を用いて図161
に示されている。最初に、2個の拡張ビットX0,X1
はその前の非予備命令によりネゲートされているか、あ
るいはデフォルト状態に置かれているものとする。拡張
ビットX0は加算動作に関してはキャリー・ビットとし
て働き、減算動作に関してはボロー・ビットとして働く
ことに注目されたい。拡張ビットX1は、それを生成す
る予備命令のソース・オペランドの符号ビットまたは最
上位ビットを反映する。「addp」命令は、着信X1ビッ
トを無視して、X0ビットをキャリー入力として用い
る。2番目の「addp」命令のX1出力は、レジスタG1
にある短いほうのソース・オペランドの符号ビットを反
映する。拡張ビットX1のこの符号情報は、「addsxp」
命令により用いられて、$00に対して適切な符号拡張
値、図示された例では$FFを選択する。「addsxp」命
令は拡張ビットX1を変更しないままの状態に残すの
で、同様に後続の「addsx 」命令は正しい符号拡張値を
選択することができる。 【0819】セクション2.5.9,セクション2.
5.19.1および用語集の飽和の定義を参照すると、
「オーバーフロー」および「飽和」という用語が説明さ
れている。「オーバーフロー」とは、レジスタに記憶さ
れる値がそのレジスタが記憶することのできる最大値を
越えている状況を指す(たとえば8ビットのレジスタに
$1FFを記憶させようとする)。「飽和」とは、オー
バーフローを処理する方法を指し、レジスタ内の値が上
位境界値または下位境界値と置き換えられる。たとえ
ば、8ビットの符号なしの最大境界値を$FFに置き換
える。 【0820】非予備命令「add 」および「vadd」は飽和
命令で、予備命令「addp」および「vaddp 」は不飽和命
令である。スケーラ「add 」命令に関しては、オーバー
フロー値であるSPCRレジスタ208のSVビット2
14がアサートされると、加算動作の結果が上位境界ま
たは下位境界と置き換えられる。対応するオーバーフロ
ー方向ビットであるSPCRレジスタ208のSDビッ
ト216により、オーバーフローが正の方向であったか
負の方向であったかが決まる。オーバーフローの方向
は、データ処理動作の結果を上位境界と下位境界のどち
らの境界値で置き換えるかを決める。符号ビットである
算術演算制御レジスタ(ACR)172に位置するSS
GNビット174は、その数字に符号があるかないかを
示す。数字に符号があるかないかにより、上位境界およ
び下位境界の値が決まる。 【0821】ベクタ「vadd」命令に関しては、オーバー
フロー値であるVPCRレジスタ102内にあるVVビ
ット106がアサートされると、加算動作の結果が上位
境界または下位境界と置き換えられる。対応するオーバ
ーフロー方向ビット、VPCRレジスタ102のVDビ
ット108により、オーバーフローが正の方向であった
か負の方向であったかが決まる。オーバーフローの方向
は、データ処理動作の結果を上位境界と下位境界のどち
らの境界値で置き換えるかを決める。符号ビット、算術
演算制御レジスタ(ACR)172のVSGNビット1
76は、その数字に符号があるかないかを示す。数字に
符号があるかないかにより、上位境界および下位境界の
値が決まる。 【0822】最小値動作および最大値動作を説明する。
最小値動作および最大値動作に関しては、多重バイト計
算は最上位バイトで始まり、最下位バイトまで進む。多
重バイト最小値および最大値動作の間は、2個の拡張ビ
ットを用いて次の条件を区別する:(1)ソース・オペ
ランドがデスティネーション・オペランドを越えること
がすでにわかっており、その後行われる、より下位のバ
イトの比較の結果が関連しなくなる;(2)デスティネ
ーション・オペランドが、ソース・オペランドを越える
ことがすでにわかっており、その後行われる、より下位
のバイトの比較が関連しなくなる;および(3)ソース
・オペランドとデスティネーション・オペランドとが高
次のバイトではこれまでのところ等しく、より下位のバ
イトの比較を続けて、どちらのオペランドが大きいかを
決定しなければならない。 【0823】比較と条件付きテストについて説明する。
多重バイト比較に基づくテストでは、計算は最上位バイ
トで始まり、最下位バイトまで進む。最小値動作および
最大値動作に関するものと同じ3つの条件を区別するた
めに、拡張ビットが用いられる。本発明のある実施例に
おいては、1つのタイプの比較予備命令をいくつかのタ
イプの異なる非予備条件付き命令と共に用いて、等し
い,大きい,小さいなどの異なる条件動作基準をテスト
する。 【0824】疑似乱数生成について説明する。疑似乱数
生成動作に関しては、右シフト線形帰還シフト・レジス
タ・タイプの技術である多重バイト計算は最上位バイト
から始まり、予備命令を用いて最下位バイトまで進むこ
とを前提とする。最後に、最上位バイトの最上位ビット
の最終調整を行うために、1つの非予備命令の実行が必
要になる。疑似乱数計算中は、1つの拡張ビットが多重
バイト右シフト動作のキャリー・ビットとして働き、他
の拡張ビットは「1のタリー」動作がこれまで奇数個の
1にあったか偶数個の1にあったかを示す。あるいは、
等価の左シフト線形帰還シフト・レジスタ・タイプの技
術を、最下位バイトから最上位バイトまで進む多重バイ
ト計算に用いることもできる。この場合は、最下位ビッ
トに対する最終調整は、終了の非予備命令として「add
」命令により実行することができる。 【0825】図162,図163および図164は、さ
まざまな予備命令および非予備命令の実行に関わるステ
ップを示す。本発明の代替の実施例には、これより多く
の数,少ない数または異なる予備命令および非予備命令
があることもある。図162は、あるシフト命令の実行
に関するステップを示す。図163は、ある比較命令の
実行に関するステップを示す。図164は、ある算術演
算命令の実行に関するステップを示す。本発明の図示さ
れた実施例では、左シフト予備命令「lshftp」が、add
予備命令「addp」を用いて実現されている点に注目され
たい。 【0826】セクション5.5 データ・プロセッサに
おけるデータ移動動作 ベクタを用いるデータ・プロセッサによく起こる問題
は、ベクタの要素の和または合計を計算する必要がある
ことである。アプリケーションによっては、スケーラ結
果(すなわちすべてのベクタ要素の合計)だけが必要に
なることがある。また、累積和のベクタを計算しなけれ
ばならないアプリケーションもある。ベクタ要素を1つ
の全体集合値または蓄積部分集合のベクタに合成する必
要は、加算だけに限られない。最小値および最大値など
の他の集合動作もアプリケーションによっては必要にな
る。ベクタ要素を1つの全体集合値に合成するためのよ
り効果的な方法とメカニズムが必要になる。 【0827】従来の技術と同様に、本発明はベクタの要
素の総和を計算する;さらに、本発明は同時に累積和の
ベクタも計算する。本発明においては、ベクタの要素の
総和は蓄積和ベクタの最終コンポーネントであることに
注目されたい。本発明は、従来の技術に比べて費用効果
が優れている方法で、高速のSIMD式(単一命令複数
データ式)並行計算を用いる。本発明は新しい命令と、
その新しい命令を実行するための関連の回路構成とを含
む。 【0828】従来の技術には、ベクタの要素の和を計算
するために「回帰倍加(recursivedoubling)」と呼ば
れる並行アルゴリズムがある。図165(従来の技術)
は、8個の要素を持つベクタの要素の和を計算するため
にこの回帰倍加アルゴリズムをどのように実現するかを
示す。処理要素#0は値「A」を記憶するところから始
まり、処理要素#1は値「B」を記憶するところから始
まり、処理要素#2は値「C」を記憶するところから始
まり、処理要素#3は値「D」を記憶するところから始
まり、処理要素#4は値「E」を記憶するところから始
まり、処理要素#5は値「F」を記憶するところから始
まり、処理要素#6は値「G」を記憶するところから始
まり、処理要素#7は値「H」を記憶するところから始
まることに留意されたい。 【0829】図165の左から2番目の列に図示される
ように、ベクタ要素が対になり、各対に関して第1組の
中間和が計算される。この第1組の中間和は並行処理ハ
ードウェアで同時に計算される。左から3番目の列に
は、第1組の中間和が同様に対になり合計されて、第2
組の中間和が、4個の元のベクタ・コンポーネントのグ
ループにつき1つずつ作成される。左から4番目の列で
は、第2組の中間和が同様に対になり、合計されて、ベ
クタの要素の総和すなわち「A+B+C+D+E+F+
G+H」を1つ作成する。 【0830】この従来の技術による回帰倍加アルゴリズ
ムは、従来のSIMD式並行コンピュータ上で実行する
ようにプログラミングされており、アルゴリズムの各ス
テップには次のようなサブステップが必要になる:すな
わち[サブステップ#1]前回のステップから得られた
合計のベクタのコピーを作る(あるいはこれが第1ステ
ップの場合は元のベクタのコピー);[サブステップ#
2]このベクタのコピーをベクタのシフトされていない
コピーに関して2(i-1) だけシフトする(「i」はステ
ップ番号;このシフトは2(i-1) 要素位置だけシフトさ
せるものであって、各要素内で(i-1) ビット位置だけシ
フトさせるものではない点に注意);および[サブステ
ップ#3]ベクタのシフトされていないコピーをシフト
されたコピーのベクタに加えることによりベクタ加算を
実行する。図165では、アルゴリズムの第1ステップ
は3つのサブステップ1,2,3を必要とする。アルゴ
リズムの第2ステップは3つのサブステップ4,5,6
を必要とする。そして、アルゴリズムの第3ステップは
3つのサブステップ7,8,9を必要とする。 【0831】しかし、従来技術によるこの回帰倍加アル
ゴリズムは、次のような欠点を持つ。第1にアルゴリズ
ムの各ステップについていくつかの命令が必要である
(図165に図示)。第2に、上記サブステップ#1に
より作成されるベクタの複写により第2ベクタ・レジス
タまたは同等のベクタ一時空間が消費される。第3に、
従来のSIMDプロセッサでは、上記サブステップ#2
のベクタ・シフト動作は2(i-1) 個の連続ステップを必
要とするか、あるいは1つのステップで多重プレースの
シフトを実行することができる比較的高価な相互接続ネ
ットワークを処理要素が通過することが必要になる。そ
して最後に、従来技術による回帰倍加アルゴリズムの多
くは、総計(すなわちベクタの要素の総和)しか作成せ
ず、あるアプリケーションに必要とされる蓄積和のベク
タを作成しない。 【0832】本発明は、ベクタ・オペランドのデータ移
動動作を実行する便利な方法とメカニズムとを実現す
る。この方法とメカニズムは、データ移動動作と種々の
タイプの計算とを任意に組み合わせることもできる。 【0833】本発明の図示された実施例では、ベクタ・
オペランドの種々のデータ移動動作を実行するために次
の命令が用いられる:「dadd」,「daddp 」,「dmi
n」,「dminp 」,「dmax」,「dmaxp 」,「dsrot 」
および「drotmov 」。「drotmov命令については表2.
42,図85およびセクション2.5.11.1を参照
のこと。「dsrot 」命令については表2.42,表2.
43およびセクション2.5.11.2を参照のこと。
「dadd」,「daddp 」,「dmin」,「dminp 」,「dma
x」および「dmaxp 」命令については、表2.44,表
2.46およびセクション2.5.12.2を参照のこ
と。 【0834】セクション5.5.1 命令「dadd」,
「daddp 」,「dmin」,「dminp 」,「dmax」および
「dmaxp 」 本発明は、「下向きadd 」と呼ばれるネモニック「dad
d」を有する新規のSIMDコンピュータ命令を設ける
ことにより、従来の回帰倍加アルゴリズムの欠点を克服
する。「dadd」命令には、下向きシフトの量を指定する
ものとベクタ・レジスタ番号を指定するものの2つのフ
ィールドが含まれる(表2.44参照)。 【0835】図166,図167,図168および図1
69では、命令「dadd #N, vreg2」が次のように機能
する。加算は処理要素(PE)16の半分、すなわち、
それぞれの処理要素番号のビット位置「N」のものにし
か行われない(最下位ビット位置を0とカウントす
る)。このタイプの各処理要素は、上の処理要素から伝
えられた値をローカル・ベクタ・データ・レジスタ12
8(図73参照)に加える。ノーテイションV[x]と
Vnはいずれも、任意のベクタ・データ・レジスタ12
8を表すために用いられる。このタイプではない処理要
素は、V[x]レジスタの値を変わらないままにする。
処理マスクであるVTビット110(図74および表
2.31参照)を通常の方法で用いて任意の処理マスク
に記憶する結果を抑制することができる。そうでない場
合はV[x]レジスタ128が修正される。マルチプレ
クサ(MUX)310,312,314,316,31
8,320,322,324は、処理要素16が転送さ
れるデータ値のソースとして機能するか否か、または代
わりに処理要素16が受信したデータ値を伝えるか否か
を選択するために用いられる。 【0836】処理要素16がその処理要素番号の「N」
個の最下位ビットにすべて1を持っていると、そのV
[x]レジスタの値は下の処理要素に伝えられる。処理
要素16がビット位置「N」に1を持っていると、上の
処理要素から受信した値を伝える。「N」が0の場合
は、各処理要素はV[x]レジスタの値を下の処理要素
に伝える。VTビット110は、処理要素が下の隣接要
素にどの値を与えるかについては影響を持たない。最後
の処理要素が最初の処理要素に値を伝えるか否かという
ことは関係ない。これは上から第1処理要素に伝えられ
た値は、どのような「N」値が指定されていても用いら
れることがないためである。 【0837】処理要素「#(x+1)]がその計算の結
果を記憶しない場合(すなわちビット位置「N」が
0)、処理要素[#x]は上から、すなわち処理要素
[#(x−1)]からデータを伝えるか、あるいはV
[x]レジスタ128からデータを得る。このため、デ
ータを伝えるためにいくつかの処理要素が必要になり、
データを引き出すためにいくつかの処理要素が必要にな
り、他の処理要素は下の処理要素がビット位置「N」に
0を持つためにそのいずれかを行うことができる。 【0838】次の例は、「dadd」命令をベクタ・データ
・レジスタ128,V[0]に4回用いて、16要素の
ベクタを元の要素の蓄積和と効果的に入れ替える方法を
示す。「dadd」命令を「M」回用いると、2M 処理要素
境界で始まる合計2M 要素のサブベクタを充分に合計で
きる。また、「dadd」命令を同じようにM回用いると、
2M 境界で始まる2M の連続要素よりも少ないサブベク
タを合計するには充分である点にも注目されたい。最後
に、「処理マスク」、すなわち図示された実施例ではV
Tビット110を用いて、グループ内の要素に関する計
算結果に影響を与えずに、2M 要素のグループのそこで
要素の修正を抑制することができることにも注目された
い。 【0839】命令 dadd #0, V0 dadd #1, V0 dadd #2, V0 dadd #3, V0 【0840】 PE# 初期値 dadd #0 後 dadd #1 後 0000 X0 X0 X0 0001 X1 (X0)+X1 X0+X1 0010 X2 X2 (X0+X1)+X2 0011 X3 (X2)+X3 (X0+X1)+X2+X3 0100 X4 X4 X4 0101 X5 (X4)+X5 X4+X5 0110 X6 X6 (X4+X5)+X6 0111 X7 (X6)+X7 (X4+X5)+X6+X7 1000 X8 X8 X8 1001 X9 (X8)+X9 X8+X9 1010 X10 X10 (X8+X9)+X10 1011 X11 (X10)+X11 (X8+X9)+X10+X11 1100 X12 X12 X12 1101 X13 (X12)+X13 X12+X13 1110 X14 X14 (X12+X13)+X14 1111 X15 (X14)+X15 (X12+X13)+X14+X15 【0841】 PE# dadd #2 後 0000 X0 0001 X0+X1 0010 X0+X1+X2 0011 X0+X1+X2+X3 0100 (X0+X1+X2+X3)+X4 0101 (X0+X1+X2+X3)+X4+X5 0110 (X0+X1+X2+X3)+X4+X5+X6 0111 (X0+X1+X2+X3)+X4+X5+X6+X7 1000 X8 1001 X8+X9 1010 X8+X9+X10 1011 X8+X9+X10+X11 1100 (X8+X9+X10+X11)+X12 1101 (X8+X9+X10+X11)+X12+X13 1110 (X8+X9+X10+X11)+X12+X13+X14 1111 (X8+X9+X10+X11)+X12+X13+X14+X15 【0842】 PE# dadd #3 後 0000 X0 0001 X0+X1 0010 X0+X1+X2 0011 X0+X1+X2+X3 0100 X0+X1+X2+X3+X4 0101 X0+X1+X2+X3+X4+X5 0110 X0+X1+X2+X3+X4+X5+X6 0111 X0+X1+X2+X3+X4+X5+X6+X7 1000 (X0+X1+X2+X3+X4+X5+X6+X7)+X8 1001 (X0+X1+X2+X3+X4+X5+X6+X7)+X8+X9 1010 (X0+X1+X2+X3+X4+X5+X6+X7)+X8+X9+X10 1011 (X0+X1+X2+X3+X4+X5+X6+X7)+X8+X9+X10+X11 1100 (X0+X1+X2+X3+X4+X5+X6+X7)+X8+X9+X10+X11+X12 1101 (X0+X1+X2+X3+X4+X5+X6+X7)+X8+X9+X10+X11+X12+X13 1110 (X0+X1+X2+X3+X4+X5+X6+X7)+X8+X9+X10+X11+X12+X13+X14 1111 (X0+X1+X2+X3+X4+X5+X6+X7)+X8+X9+X10+X11+X12+X13+X14+X15 【0843】「dadd」命令のために用いられる処理要素
16間でのデータ移動は、複雑な相互接続ネットワーク
を必要とせず、単一プレース・シフトのゆっくりとした
複数回の実行も必要としないことに注目されたい。命令
「dadd #N,Vn」は、(2N )番目毎の要素を下の
2N 個の要素にコピーするだけでよいので、処理要素1
6間の簡単な最も近い近隣要素との通信法で充分であ
る。各処理要素は、上隣の処理要素から伝えられたデー
タを受け取る。また各処理要素は、その処理要素のロー
カル記憶部(すなわちベクタ・データ・レジスタ12
8)からのデータまたは上の処理要素から受け取ったデ
ータのコピーを下隣の要素に渡す。マイクロシーケンサ
(図78参照)により、各命令についてどの程度の伝播
遅延時間が許されるかが決まる。最も長い下向き伝播経
路は、2N に比例し、「N」は「dadd」命令のフィール
ドでマイクロシーケンサ22により受信される点に注目
されたい。 【0844】「dadd」命令を拡張して、多重ワード・ベ
クタ要素および/または飽和算術演算を処理することが
できる。予備命令「daddp 」は非予備命令「dadd」に関
して上述されたのと同じようにシフトおよび加算を実行
する。「dmin」,「dminp 」,「dmax」および「dmaxp
」命令も、「dadd」命令と同じように機能するが、異
なるのは実行される計算が加算ではなく最小値または最
大値の比較であることである。「dadd」,「daddp 」,
「dmin」,「dminp 」,「dmax」および「dmaxp命令に
ついては、表2.44,表2.46およびセクション
2.5.12.2を参照のこと。 【0845】セクション5.5.2 命令「dsrot 」 「dadd」命令は、ベクタ加算と下向きローテイションを
組み合わせて(すなわち処理要素16の両端でベクタ要
素をシフトする)、効率的な回帰倍加式の合計を行う。
最小値および最大値などの他のよく用いられる集合動作
についても、同様の命令が設けられているが、未来のユ
ーザがほしがるようなすべての可能な集合動作について
別々の命令を仮定し設けることは実用的ではない。汎用
性を大きくするために、「下向きの密度の小さいローテ
イト」命令「dsrot 」が設けられ、ユーザが他の集合動
作に関して妥当に効率的な回帰倍加アルゴリズムをプロ
グラミングすることができるようにした。この命令は、
密度の小さい多重プレース下向き円形シフトを実行す
る。 【0846】表2.42,セクション2.5.11.2
および表2.43では、命令「dsrot #N, vreg2 」は
次のように機能する。各処理要素16は、上の処理要素
からローカルVnレジスタに伝えられた値をコピーす
る。処理マスクVTビット110を通常の方法で用い
て、任意の処理要素に結果を記憶することを抑制する。
処理要素がその処理要素番号の「N」この最下位ビット
にすべて1を持っていると、そのベクタ・データ・レジ
スタ(Vn)128(図73を参照)から伝えられた値
を、下の処理要素に伝える;そうでない場合は、上の処
理要素から受け取った値を送る。 【0847】「N」が0の場合、それぞれの処理要素
は、Vnレジスタの値を下の処理要素に渡す。VTビッ
ト110は、処理要素が下隣にどの値を渡すかについて
は影響を持たない。最後の処理要素は、第1の処理要素
に円形に値を伝える。チェーン内でどの処理要素16が
最後の要素として機能するかは、処理要素選択レジスタ
(PESR)220(図25参照)により指定される。 【0848】以下の例は、16個の処理要素からなる円
形チェーンで「dsrot 」命令により実行される機能を示
す。 【0849】 PE# 初期値 dsrot #0, Vn後 0000 X0 X15 0001 X1 X0 0010 X2 X1 0011 X3 X2 0100 X4 X3 0101 X5 X4 0110 X6 X5 0111 X7 X6 1000 X8 X7 1001 X9 X8 1010 X10 X9 1011 X11 X10 1100 X12 X11 1101 X13 X12 1110 X14 X13 1111 X15 X14 【0850】 PE# 初期値 dsrot #1, Vn後 0000 X0 X15 0001 X1 X15 0010 X2 X1 0011 X3 X1 0100 X4 X3 0101 X5 X3 0110 X6 X5 0111 X7 X5 1000 X8 X7 1001 X9 X7 1010 X10 X9 1011 X11 X9 1100 X12 X11 1101 X13 X11 1110 X14 X13 1111 X15 X13 【0851】 PE# 初期値 dsrot #2, Vn後 0000 X0 X15 0001 X1 X15 0010 X2 X15 0011 X3 X15 0100 X4 X3 0101 X5 X3 0110 X6 X3 0111 X7 X3 1000 X8 X7 1001 X9 X7 1010 X10 X7 1011 X11 X7 1100 X12 X11 1101 X13 X11 1110 X14 X11 1111 X15 X11 【0852】 PE# 初期値 dsrot #3, Vn後 0000 X0 X15 0001 X1 X15 0010 X2 X15 0011 X3 X15 0100 X4 X15 0101 X5 X15 0110 X6 X15 0111 X7 X15 1000 X8 X7 1001 X9 X7 1010 X10 X7 1011 X11 X7 1100 X12 X7 1101 X13 X7 1110 X14 X7 1111 X15 X7 【0853】「dsrot 」命令は、「回帰倍加」式集合の
データ移動部分のみを行う。しかしベクタ計算と共に
「dsrot 」命令を用いることにより、ソフトウェア命令
ルーチンを書き込んで、所望の集合動作を実行すること
ができる。「dsrot 」命令は、「dadd」および「daddp
」命令を実現するために用いられるのと同じ、安価な
最近の隣接要素との通信法で実現することができる点に
注目されたい。 【0854】また、特殊なケースの「dsrot 」命令を用
いて、すべてのベクタ要素値が移動する密度の大きい
(密度の小さいのと反対の)ローテイションを実行する
ことができる点にも注目されたい。命令「dsrot #0, V
n」は、ベクタ・レジスタVnのすべての要素に関し
て、1プレース下向きローテイションを実行する。すべ
てのベクタ要素の多重プレース下向きローテイション
は、この命令を複数回実行することにより実行できる。
この種の密度の大きいローテイション動作は、あるアプ
リケーションでは有用である。本発明の代替の実施例で
は、下向きシフトの代わりに上向きシフトを用いること
ができる点に注目されたい。 【0855】セクション5.6 多重レベル条件付き実
行 セクション5.6.1 命令「vif 」,「velse 」およ
び「vendif」 本発明は、命令の条件付き実行を、最小限の回路構成量
しか必要としないが大きなソフトウェア汎用性をもたら
す直接的な方法で実現することを可能にする。3つの条
件付き命令タイプ、すなわち「vif 」,「velse 」およ
び「vendif」が用いられる。命令名の最初につく「v 」
は、この命令がベクタ命令であることを示す。「vif 」
命令タイプは、実際には「vif 」というネモニック形式
を有し、条件テストを含む命令のセットである。「vif
」命令のセットは、次の個別命令を含む。 【0856】 「vif 」命令 条件 vifeq 等しい vifge より大きいまたは等しい vifgt より大きい vifle より小さいまたは等しい viflt より小さい vifne 等しくない vifnv オーバーフローがない vifv オーバーフローがある 【0857】すべての条件付き命令のリストについて
は、表2.47を参照のこと。本発明の代替の実施例に
おいては、「vif 」タイプの命令により多くの、あるい
はより少ない、あるいは異なる条件を入れることができ
る。また本発明の代替の実施例においては、追加のまた
は異なる条件付き命令タイプを用いることができる。 【0858】本発明は、各処理要素16内に2つのビッ
ト、すなわちVTビット110およびVHビット112
も用いる。VTビット110およびVHビット112
は、両方ともベクタ・プロセス制御レジスタ(VPC
R)102に位置する。VPCRレジスタ102は図7
4に図示され、表2.31とセクション2.3.47の
本文に説明される。本発明の代替の実施例では、イネー
ブル値またはマスク値を表すために2ビット以上のビッ
ト(VTビット110)を用いてもよい。同様に、代替
の実施例では、履歴値を表すために2ビット以上のビッ
ト(VHビット112)を用いてもよい。VHビット1
12は履歴値または履歴ビットと呼ばれるが、これはV
Tビット110の履歴または以前の論理状態を示すため
である。 【0859】表2.48は、「vif 」,「velse 」およ
び「vendif」命令の実行の結果のVTビット110およ
びVHビット112に関する次状態移行表を示す。Qn
と記された列は指定された命令が実行される前のVTビ
ット110およびVHビット112の現在の論理状態を
表す(指定された条件付き命令に関しては右端の列を参
照)。Qn+1と記された列は、指定された条件付き命
令の実行の結果としてのVTビット110およびVHビ
ット112の次の論理状態を表す(指定された条件付き
命令に関しては右端の列を参照)。左端の列にリストア
ップされた状態移行番号は、図87に図示された10個
の丸で囲んだ状態移行に対応する。 【0860】図87は、「vif 」,「velse 」および
「vendif」命令の実行によるVTビット110およびV
Hビット112の状態移行図である。「vif 」命令の実
行は、VTビット110の現在の論理状態に依存する。
「vif 」命令の一部である条件テストは、それぞれの処
理要素16により個別に実行される。処理要素16は、
条件付き命令の実行が始まるときにその処理要素16の
VTビット110がアサートされた場合に、「vif 」命
令の実行に加わるに過ぎない。「velse 」および「vend
if」命令は、VTビット110の現在の論理状態とは独
立して実行される点に注意されたい。 【0861】イネーブル値(VTビット110)と履歴
値(VHビット112)との組合せにより、回路構成レ
ベルでソフトウェア・プログラミング構造を実現するこ
とができる。たとえば「if」,「elseif」,「else」お
よび「endif 」の高レベルのソフトウェア・コマンドを
用いる高レベルのソフトウェア構造は、「vif 」,「ve
lse 」および「vendif」命令と共にイネーブル値(VT
ビット110)および履歴値(VHビット112)を用
いると、回路構成レベルで実現することができる。各処
理要素16は、ソフトウェア命令の「if」,「elseif」
および「else」部分のうち1つだけに加わる。履歴値
は、処理要素16がソフトウェア命令の「if」または
「elseif」部分の1つに加わったか否かを示す。「if」
および「else」構造が「elseif」構造なしに用いられる
と、VTビット112は必要ない点に注目されたい。 【0862】きわめて一般的な高レベル構造を実現する
には、シーケンス内の第1命令は「vif 」命令となり、
シーケンスの最後の命令は「vendif」命令となる。簡単
なシーケンスでは、「vif 」命令と「vendif」命令との
間に「velse 」命令を1つしか持たないものもある。も
っと複雑なシーケンスでは、表3.13に示されるよう
に、複数の「velse 」−「vif 」命令の対の後に「vend
if」命令がつくこともある。 【0863】「vif 」,「velse 」および「vendif」命
令は、汎用レジスタを用いてVTビット110およびV
Hビット112の連続コピーを保持することによりネス
トすることができる点に注目されたい。表2.47で
は、左シフト命令「vlshftt 」および[vlshfth」と右ロ
ーテイト命令「vrotrt」および「vrotrh」を用いて、V
Tビット110とVHビット112の連続コピーをスタ
ックし、スタックを解除することができる。 【0864】その他の命令にも、暗黙の「vendif」構造
を持つものがある。たとえば、「repeat」および「repe
ate 」命令もVTビット110およびVHビット112
を修正する。また「dskip 」および「dsikpe」命令もV
Tビット110およびVHビット112を修正する。表
2.65は、どの命令がVTビット110およびVHビ
ット112の論理状態とは独立して実行され、どの命令
がVTビット110およびVHビット112の論理状態
に依存しているのかを示す。 【0865】表3.13,表3.14およびセクション
3.6.5.4の本文は、「vif 」,「velse 」および
「vendif」命令をVTビット110およびVHビット1
12と共に用いる命令の条件付き実行の例を示す。 【0866】セクション5.6.2 命令「dskip 」お
よび「dskipe」 表2.52は、「dskip 」および「dskipe」命令の動作
を簡単に定義する。「dskip 」命令は、指定されたスケ
ーラ・レジスタの内容を減分して、スケーラ・レジスタ
の新しい内容が$FF(10進数の−1の2の補数の表
現に等しい)である場合に、次の命令の実行をスキップ
する。「dskipe」命令は、「dskip 」命令と同じステッ
プを実行する。さらに「dskipe」命令は、「vendif」命
令と同じステップ、すなわち:(1)VTビット110
がアサートされていることを確認する;および(2)V
Hビット112がネゲートされていることを確認する;
を実行する。図170は、「dskip 」および「dskipe」
命令の実行中に実行されるステップの流れ図を示す。 【0867】「dskipe」命令は、「dskip 」命令と同じ
ステップを実行する。しかし、さらに「dskipe」命令
は、「vendif」命令と同じステップ、すなわちVTビッ
ト110のセットとVHビット112のネゲートとを実
行する。そのために、「dskipe」命令は、VTビット1
10およびVHビット112がそのデフォルトまたはリ
セット状態に戻っていることを確認することに注意を払
う。これにより「dskip命令の代わりに「dskipe」命令
を用いると、VTビット110およびVHビット112
はデフォルト状態に戻ることができる。「dskipe」命令
を用いると、「dskip 」命令の前に「vendif」命令を実
行する必要がなくなる。多くのアプリケーションでは、
「dskip 」命令または「dskipe」命令の後の次の命令
は、プログラムの流れに変更を行うような命令となる
(たとえばジャンプ命令)。また、プログラムの流れが
変更される前に、VTビット110およびVHビット1
12がデフォルト状態に戻っていることを確認すること
が必要な場合が多い。 【0868】本発明は、データ値を減分することにより
スケーラ・レジスタのデータ値を調整するが、本発明の
代替の実施例ではその他の種々の調整方法を用いること
がある。たとえば、算術演算ユニットを用いて調整値の
加算または減算を行うことがある。調整値は1より大き
い数字でもよい。たとえば、調整値は2の累乗であって
も、あるいは負の数であってもよい。あるいは、デクリ
メンタの代わりにインクリメンタを用いることもでき
る。データ値を、所定の値になるまで増分してもよい。
図示された実施例の所定の値は2の補数の形をとった1
0進数の−1(16進数では$FF)であるが、任意の
所定の値を用いることができる。たとえば、所定の値と
して0を用いてもよい。また、比較テストは、等しいか
否かのテストでなく、以下(より小さいか等しい)であ
るか否かのテストでもよい。同様に、比較テストは、等
しいか否かのテストでなく、以上(より大きいか等し
い)であるか否かのテストでもよい。 【0869】セクション5.6.3 命令「repeat」お
よび「repeate 」 表2.52は、「repeat」および「repeate 」命令の動
作を定義する。「repeat」および「repeate 」命令によ
り、次の「N」個の命令がスキップされるか、次の
「N」個の命令が命令のループとして「M」回実行され
る。 【0870】図171,図172,図88ないし図92
およびセクション2.5.17では、「repeat」命令お
よび「repeate 」命令により、同じステップが実行され
るが、次のような違いがある。「repeate 」命令は、ル
ープの最後の命令として、暗黙の「vendif」命令を追加
する。そのために、ループ内の最後の明確な命令が実行
を終了するたびに、すべてのVTビット110とすべて
のVHビット112がクリアされる。これにより命令の
ループの最後で「repeate 」命令は、VTビット110
およびVHビット112をそのデフォルトまたはリセッ
ト値に戻す。 【0871】明確な(explicit)または暗黙の(implie
d )「vendif」命令を実行するにはいくつかの方法があ
る。たとえば、現在の論理状態に関わらず、すべてのV
Tビット110を強制的にアサートされた論理状態にし
て、すべてのVHビット112を強制的にネゲートされ
た論理状態にすることができる。あるいは、現在アサー
トされていないVTビット110だけをアサートされた
論理状態にして、現在ネゲートされていないすべてのV
Hビット112を強制的にネゲート状態にすることもあ
る。 【0872】図51では、マイクロシーケンサ制御レジ
スタ(MCR)188は、RELFビット198とRP
LFビット200を持っている。RELFビット198
は、「repeate 」ループが現在実行されているか否かを
示す。RPLFビット200は、「repeat」ループが現
在実行されているか否かを示す。 【0873】本発明の図示された実施例では、次のレジ
スタを用いて「repeat」および「repeate 」命令により
開始されるループを実現する:(a)リピート開始レジ
スタ(RBR)180(図65参照);(b)リピート
終了レジスタ(RER)182(図66参照);および
(c)リピート・カウントレジスタ(RCR)184
(図67参照)。本発明の代替の実施例においては、よ
り多くのレジスタ、より少ないレジスタまたは異なるレ
ジスタを用いて、「repeat」および「repeate 」命令に
より開始されるループを実行するために必要なパラメー
タを記憶してもよい。 【0874】セクション5.7 データ・プロセッサ・
アーキテクチャ ファジー論理,ニューラル・ネットワークおよびその他
の並行アレイ指向アプリケーションなどのアプリケーシ
ョンには、SISDプロセッサを用いると最もよく実行
できるデータ処理作業と、SIMDプロセッサを用いる
と最もよく実行できるデータ処理作業とを利用する傾向
があるものがある。本発明は、SISD(単一命令単一
データ)プロセッサの利点と、SIMD(単一命令複数
データ)プロセッサの利点とを組み合わせている。 【0875】図78では、データ・プロセッサ10は、
制御信号をベクタ・エンジン回路構成9とスケーラ・エ
ンジン回路構成26とに供給することのできるマイクロ
シーケンサ22を1機持っている。ベクタ命令が実行さ
れている間は、マイクロシーケンサ22はベクタ・エン
ジン9に制御信号を送り、スケーラ命令が実行されてい
る間は、マイクロシーケンサ22はスケーラ・エンジン
26に制御信号を送る。データ・プロセッサ10は、一
度に1つしか命令を実行することができないので、デー
タ・プロセッサ10はベクタ命令とスケーラ命令とを並
行に実行することはない。しかし、本発明のある実施例
では、パイプライン化により少量の命令のオーバーラッ
プが許される。 【0876】図78では、ベクタ・エンジン9,入力デ
ータレジスタ(IDR)18,リセット回路15,命令
キャッシュ20,マイクロシーケンサ22,制御レジス
タ24,スケーラ・エンジン26,ノース・ポート2
8,サウス・ポート30,イースト・ポート32および
ウェスト・ポート34はすべて、バス13という導体を
介して互いに双方向結合されている。バス・スイッチ1
1が、グローバル・データ・バス38とブロードキャス
ト・バス36との間に結合される。マイクロシーケンサ
22は、バス23を介してベクタ・エンジン9に双方向
結合され、制御情報およびステータス情報を転送する。
マイクロシーケンサ22は、バス25を介してスケーラ
・エンジン26に双方向結合され、制御およびステータ
ス情報を転送する。図78および図81では、マイクロ
シーケンサ22は命令解読回路構成19,制御回路構成
21,休止回路構成39,レジスタ374および算術演
算論理ユニット(ALU)372を有し、これらはすべ
て導体376および導体378を介して互いに双方向結
合されている。 【0877】本発明においては、1つの集積回路上にあ
る1つのデータ・プロセッサ10が、1つのオンボード
・マイクロシーケンサ22を用いてスケーラ命令とベク
タ命令の両方を実行することができる。1つの集積回路
上にあるこの1つのデータ・プロセッサ10は、外部プ
ロセッサからの制御なしに機能することもできる。実際
には、完全なソフトウェア・プログラムを形成する一連
の命令を含むオンボードROMをデータ・プロセッサ1
0が持っているとすると、データ・プロセッサ10はあ
るアプリケーションで用いられる単独のデータ・プロセ
ッサとして機能することができる。 【0878】セクション5.8 着信データをデータ・
プロセッサにロードする 多くのファジー論理,ニューラル・ネットワークおよび
その他の並行アレイ指向アプリケーションは、集積回路
がさまざまなパターンの着信データを選択および記憶す
ることができるような融通のきくデータ記憶法を必要と
する。データを送信するデバイスではなく、データを受
信する集積回路にとっては、適切なビットのデータを選
択し、集積回路内に所望の配列でそれを記憶することが
望ましい。また、着信データの選択および記憶に要する
ソフトウェアの経費を最小限に抑えることも望ましい。
このデータ記憶技術は、ニューラル・ネットワーク・ア
プリケーションではかなり用いられているが、広範囲の
他のアプリケーションにも用いられている。 【0879】本発明のある実施例においては、データ・
プロセッサ10は、情報を入力データレジスタ(ID
R)18に記憶するために2種類の充てんモードを持
つ。第1の充てんモードはインデックス充てんモード
(入力インデックス付けモードとも呼ばれる)と呼ば
れ、図27および図173に図示される。第2の充てん
モードは、タッグ充てんモードと呼ばれ(入力タグ付け
モードとも呼ばれる)、図28および図174に図示さ
れる。図175は、IDR18に関して充てんモードを
実現するために用いられる回路構成を示す。 【0880】充てんモード・ビット(FM)75は、P
CRレジスタ52(図26および表2.10参照)に位
置して、どの充てんモードが用いられるかを決める。本
発明の代替の実施例では、より多くのモード、より少な
いモードまたは他のモードを用いることもあり、また1
つ以上の制御ビットを用いてどのモードが用いられるか
を選択することもある。本発明のある実施例において
は、充てんモードはデータ・プロセッサ10が「ラン」
モードの動作にいるときに用いられ、データ・プロセッ
サ1ーが「ストップ」モードの動作にいるときには用い
られない。ラン・モードの動作中は、データはあるデー
タ・プロセッサ10.xから他のデータ・プロセッサ1
0.xにブロードキャスト・データ転送を用いて転送さ
れる。ブロードキャスト・データ転送のデスティネーシ
ョンは、常に受信側データ・プロセッサ10.xのID
R18である。 【0881】インデックス充てんモードは、連続的なま
たは逐次的なデータ入力をIDR18にロードするため
に用いられる。図27とそれに伴う本文が、本発明のあ
る実施例が4つの制御値をどのように用いてインデック
ス充てんモードでIDR18の充てんを調整するかを示
す。図示された実施例においては、4つの制御値のそれ
ぞれは異なるレジスタに位置する。本発明の代替の実施
例では、より多くの、より少ない、あるいは異なる制御
値を用いる場合もある。さらに、レジスタに記憶された
制御値とは異なる方法で、制御値が設けられる場合もあ
る。 【0882】図173は図27に対応して、データ・プ
ロセッサ10によりそのポートの1つで受信されるデー
タ値のストリームの例を示す。IDR初期オフセット・
レジスタ(IOR)130には、タイミング値を指定す
る初期オフセット・ビット(IOビット)140が含ま
れる。タイミング値は、データ・ストリーム中のどの時
点でIDRレジスタ18がデータ値を受信し記憶し始め
るかを決定する。本発明のある実施例においては、IO
Rレジスタ130は、ポートで受信される有効データ・
バイトをカウントするクロック・サイクル・タイム値を
含み、IORレジスタ130のカウントがポートで受信
された有効データ・バイトの数と一致したときにイネー
ブル・デバイスとして機能する。 【0883】IDRポインタ・レジスタ(IPR)13
2には、ポインタ値を指定するポインタ・ビット(PT
Rビット)142が含まれる。ポインタ値は、IDR1
8のどこに着信データが記憶されるかに影響を与える。
IDRカウント・レジスタ(ICR)136は、カウン
ト値を指定するカウント・ビット(CNTビット)14
6を含む。カウント値は、IDR18にいくつのバイト
が記憶されるかに影響を与える。IDRロケーション・
マスク・レジスタ(ILMR)134には、マスク値を
指定するマスク・ビット(Mビット)144が含まれ
る。マスク値は、データ値がIDR18にどのようにロ
ードされるかに影響を与える。 【0884】図175では、本発明のある実施例がシャ
ドウIPRレジスタ135とシャドウICRレジスタ1
39とを用いる。シャドウ・レジスタにより、IPRレ
ジスタ132とICRレジスタ136とはユーザがどの
ような値をプログラミングしてもそれを記憶し続けるこ
とができる。IDR充てん動作の最初に、IPRレジス
タ132に記憶された値がシャドウIPRレジスタ13
5にロードされ、ICR136レジスタに記憶されてい
る値が、シャドウICRレジスタ139にロードされ
る。これで、シャドウIPRレジスタ135とシャドウ
ICRレジスタ139とに記憶されている値は、IDR
18のデータ充てん中に修正することができるが、IP
Rレジスタ132およびICR136レジスタに記憶さ
れている初期値は修正されない。回路構成133には、
シャドウIPRレジスタ135と増分回路構成137と
が含まれる。回路構成143には、シャドウICRレジ
スタ139と減分回路構成141とが含まれる。 【0885】シャドウIPRレジスタ135は常に、次
の空いているIDR18ロケーションを指示する。IL
MRレジスタ134の値は、シャドウIPRレジスタ1
35の値と論理的に合成されて、IDR18内のどのロ
ケーションに書き込まれるかを決定する。たとえば、I
LMRレジスタ134のマスク値が$00の場合、ID
R18のあるロケーションがIDR充てん動作中に書き
込まれる。ILMRレジスタ134のマスク値が$01
の場合は、IDR18の次の2個の使用可能なロケーシ
ョンが同じデータ値を受け取り、記憶する。ICRレジ
スタ136のカウント値は、IDR18にいくつのデー
タ値が記憶されるかを決める。しかし、実際にいくつの
データが記憶されるかを決定する際には、カウント値と
マスク値の大きいほうの値により、いくつのデータ値が
実際にIDR18に書き込まれるかが決まる。図173
も示されるように、1つの着信データ値を2つ以上のI
DR18ロケーションに書き込むことができることに注
目されたい。 【0886】タッグ充てんモードは、IDR18に連続
していないデータ入力をロードするために用いられる。
IDR初期オフセット・レジスタ(IOR)130に記
憶されている1つのタイミング値を用いる代わりに、タ
ッグ充てんモードは入力タッグ・レジスタ(ITR)1
38と呼ばれるレジスタのセットを用いる。それぞれの
ITRレジスタ138には1組のITRビット148が
含まれ、各組のITRビット148がタイミング値を指
定する。各タイミング値は、着信データ・ストリーム中
にいつIDR18がデータ値を受信して記憶するかを決
める。ITRレジスタ138により、データ・プロセッ
サ10は、着信データ値がIDRレジスタ18に選択的
に記憶される特定の順序を指定することができる。図1
74は図28に対応して、ポートの1つでデータ・プロ
セッサ10により受信されるデータ値のストリームの例
を示す。 【0887】図175では、本発明のある実施例におい
て、着信データがデータ・プロセッサ10のポートの1
つに受信されると、カウンタ156が増分される。カウ
ンタ156の値がITRビット148の現在値に一致す
ると、着信データ値はIDR18にロードされる。この
プロセスは、すべての入力サンプルがIDR18にロー
ドされるまで続くか、あるいはICRレジスタ136に
含まれるカウント値になるまで続く。本発明のある実施
例では、減分回路構成141のアンダーフロー条件をI
DRアドレス発生および制御回路構成154に対する制
御入力信号として用いることに注目されたい。 【0888】IDRアドレス発生および制御回路構成1
54は、IDRローディング回路構成153と共に、I
DRレジスタ18のローディングを調整する関数を実行
する。IDRアドレス発生および制御回路構成154
は、着信データ値を記憶するIDR18ロケーションの
アドレスを発生する。回路構成150は一般に「いつ」
IDRレジスタ18がロードされるかを指定するために
用いられ、回路構成151は一般にIDRレジスタ10
の「どこに」着信データ値が記憶されるかを指定するた
めに用いられ、回路構成152は一般に、IDRレジス
タ18に「いくつの」データ値が記憶されるかを指定す
るために用いられる。 【0889】本発明のある実施例においては、64個の
ITRレジスタ138があり、それぞれのITRレジス
タ138は、2バイトの値を記憶することができる。I
ORレジスタ130と同様に、ITRレジスタ138は
ブロードキャストされている入力データがいつ選択され
てIDR18ロケーションに記憶されるかを決める。そ
の他の3つのレジスタ、IDRポインタ・レジスタ(I
PR)132と、IDRカウント・レジスタ(ICR)
136と、IDRロケーション・マスク・レジスタ(I
LMR)134はすべて、両方の充てんモードについて
同じ目的のために働く。タッグ充てんモードは、完全に
接続されていないニューラル・ネットワークまたは受信
フィールドの概念を採用するパラダイムを実現するため
の強力な方法を提供することに注目されたい。 【0890】セクション5.9 データ・プロセッサの
ための休止技術およびメカニズム図176および図17
7は、ベクタ命令とスケーラ命令の両方に関してデータ
・コヒーレンシと同期とを確保するデータ・コヒーレン
シ技術を示す。このデータ・コヒーレンシ技術により、
データ・プロセッサ10の命令の内部実行とデータ・プ
ロセッサ10の外部ソースによるレジスタのローディン
グとの調和をはかることができる。 【0891】本発明のある実施例においては、入力デー
タ・レジスタ(IDR)18をデータ・プロセッサ10
に対する入力ベクタとして用いることができる。スケー
ラ動作とベクタ動作の両方をIDR18を用いて実行す
ることができる。オペランドのアドレッシング・モード
は、その動作がスケーラ動作であるのか、ベクタ動作で
あるのかを決める(セクション2.5.5参照)。休止
メカニズムを用いて、データ・コヒーレンシを確保す
る。休止メカニズムにより、すべての有効データ入力が
IDR18内に入るまで、IDR18を参照する命令を
待たせることができる。 【0892】シェルフと各シェルフ内の処理要素16の
説明については、図79を参照のこと。本発明の図示さ
れた実施例においては、VTビット110およびVID
ビット114は両方とも各処理要素16内のベクタ・プ
ロセス制御レジスタ(VPCR)102に位置する。本
発明の他の実施例では、VTビット110とVIDビッ
ト114とをIDR18の一部として配置するなど代替
の構造を用いることがある。 【0893】図示された実施例においては、各IDR1
8ロケーションと各処理要素16との間には1対1の対
応関係がある。このため、各処理要素16に関しては、
対応するイネーブル値(VTビット110)と、対応す
る有効性値(VIDビット114)とがある。本発明の
代替の実施例においては、イネーブル値は単独のイネー
ブル・ビット(VTビット110)より大きい場合もあ
り、有効性値が単独の有効ビット(VIDビット11
4)よりも大きい場合もある。また、命令がIDR18
をデスティネーションとしてライト動作を実行する場合
には、対応するVTビット110がアサートされている
IDR18ロケーションのみが実際には書き込まれる点
に留意されたい。そのためVTビット110は、それぞ
れにVTビット110がアサートされている処理要素1
6をイネーブルにするイネーブル値、またはそれぞれの
VTビット110がネゲートされている処理要素16を
マスク・アウトすなわちディスエーブルにするマスク値
のいずれかとして見なされる。 【0894】図178ないし図180は、このデータ・
コヒーレンシ技術の用途のいくつかの例を示す。図17
8および図179は、IDR18へのアクセスを要する
スケーラ命令に対するデータ・プロセッサ10の応答を
示す。図178は、データ・プロセッサ10が休止しな
い場合を示し、図179はデータ・プロセッサ10が休
止する場合を示す。図180は、入力データ・レジスタ
(IDR)18へのアクセスを要し、データ・プロセッ
サ10を休止させるベクタ命令に対するデータ・プロセ
ッサ10の応答を示す。 【0895】図178においては、スケーラ命令は、そ
の有効ビットがアサートされている(すなわちVIDビ
ット114が処理要素#2に関して論理1である)ID
Rロケーション、この例ではIDR[2]にアクセスす
る。アサートされた有効ビットは、対応するIDRロケ
ーションに記憶されている値が有効であり、スケーラ命
令の間に用いることができることを示す。すなわち有効
ビットはすでに使用可能であり、スケーラ命令の実行を
続けることができる。グローバル休止信号126はネゲ
ートされたままの状態であるが、これはマイクロシーケ
ンサ22に対して、スケーラ命令の実行を遅延なしに継
続することができることを知らせるものである。対応す
るイネーブル値、VTビット110は、スケーラ命令に
は用いられないことに留意されたい。 【0896】しかしながら、図179では、スケーラ命
令は、その有効ビットがネゲートされている(すなわち
VIDビット114が処理要素#2に関して論理0であ
る)IDRロケーション、この例ではIDR[2]にア
クセスする。ネゲートされた有効ビットは、対応するI
DRロケーションに記憶されている値が有効ではなく、
スケーラ命令の間に用いることができないことを示す。
そのためデータ・プロセッサ10は、外部データソース
が有効データ値をポートを介してIDR[2]に書き込
むまで、スケーラ命令の実行を遅延しなければならな
い。グローバル休止信号126はアサートされたままの
状態であるが、これはマイクロシーケンサ22に対し
て、有効データが受信されるまでスケーラ命令の実行を
遅延しなければならないことを知らせるものである。 【0897】対応するイネーブル値、VTビット110
はスケーラ命令には用いられないことにここでも注目さ
れたい。本発明のある実施例においては、外部データ・
ソースは直接VIDビット114に書くことができ、そ
のために、IDR18に書き込まずにVIDビット11
4をアサート状態にすることができる。外部データ・ソ
ースは、ホスト・プロセッサ54または別のデータ・プ
ロセッサ10.xでもよいことに注目されたい。 【0898】図180では、IDR18にアクセスする
命令はベクタ命令である。ここではイネーブル値、VT
ビット110が用いられる。各処理要素16のイネーブ
ル値(VTビット110)により、その処理要素16が
ベクタ命令の実行中に関与するか否かが決まる。VTビ
ット110がネゲートされている場合は、その特定の処
理要素16は関与しない。 【0899】そのために、イネーブル値がネゲートにな
っているIDR18ロケーションはいずれも関与するこ
とはなく、その有効性値は関係しない(すなわち「無視
される」とラベルがつけられる)。しかし、イネーブル
値がアサートされているIDR18ロケーションはすべ
て関与して、その有効性値は関連する(すなわち「関係
する」とラベルがつけられる)。そのため図180で
は、処理要素#1,#62はVTビット110がネゲー
トされているので関与しない。また、処理要素#0,#
2,#3,#63は、VTビット110がアサートされ
ているので関与する。 【0900】さらに図180について続けると、ここで
は有効性値(VIDビット114)が用いられる。ベク
タ命令はVTビット110がアサートされているすべて
のIDR18ロケーションにアクセスしようとする。し
かしいくつかのIDR18ロケーション、この例ではI
DR[3],IDR[63]は関与してはいるが、有効
データをもっていない。そのため、VIDビット114
は、処理要素#3および#63に関してネゲートされた
ままである。その結果、処理要素#3,#63はそれぞ
れのベクタ休止信号124をアサートする(図80参
照)。任意の処理要素16から休止信号がアサートされ
ると、グローバル休止導体126はアサート状態に入れ
られる。本発明のある実施例においては、グローバル休
止導体126は、ワイアORまたはワイアANDコンフ
ィギュレーションで用いられる。 【0901】図80に示された本発明の特定の実施例に
おいては、休止発生論理116は、2つのローカル休止
信号、すなわちスケーラ休止信号122とベクタ休止信
号124を発生する。スケーラ休止信号122とベクタ
休止信号124は、回路121により論理的に合成され
て、グローバル休止信号126を作成する。図示された
実施例においては、スケーラ休止信号122は、処理要
素16を利用する動作がスケーラを参照するときに用い
られ、ベクタ休止信号124は、処理要素16を利用す
る動作がベクタを参照するときに用いられる。本発明の
代替の実施例では、グローバル休止信号126を異なる
方法で発生することもある。 【0902】グローバル休止信号126により信号がア
サートされると、マイクロシーケンサ22に対して、デ
ータ・プロセッサ10は休止して、有効データが受信さ
れてIDR[3]およびIDR[63]に記憶されるま
で現在のベクタ命令の実行を遅延させるべきであること
が知らされる。有効データが受信されIDR[3]に記
憶されると、処理要素#3のVIDビット114がアサ
ートされ、処理要素#3のベクタ休止信号124がネゲ
ートされる。そして、有効データが受信されてIDR
[63]に記憶されると、処理要素#63のVIDビッ
ト114がアサートされて、処理要素#63のベクタ休
止信号124がネゲートされる。ベクタ休止信号124
をアサートする処理要素16はもはやなく、そのために
グローバル休止導体126はネゲート状態に戻る。 【0903】VTビット110がアサートされている処
理要素16のそれぞれのVIDビット114がアサート
されていると、処理要素16はどれもベクタ休止信号1
24をアサートしないことになり、グローバル休止導体
126はネゲート状態に留まる。この場合は、関与して
いる処理要素16のそれぞれに対応するIDR18ロケ
ーションには、すでに有効データが含まれているので、
休止する必要はない。 【0904】VIDビット114のアサーションとネゲ
ーションに関しては、本発明の異なる実施例は、VID
ビット114を変更するための広範囲のメカニズムから
選択することがある。本発明の代替の実施例では、1つ
以上の次のようなメカニズムを、用いることがある。第
1は、特定の命令または命令タイプが直接VIDビット
114を変更する。第2は、アドレッシング・モードが
VIDビット114を変更することもある。たとえば、
本発明のある実施例においては、IDR18がソース・
レジスタであるベクタ命令に関して2つの特殊なアドレ
ッシング・モードがある。「IDR」アドレッシング・
モードが用いられると、VIDビット114はベクタ命
令の実行により影響を受けない。一方で、「IDRC」
アドレッシング・モードが用いられると、VIDビット
114はベクタ命令の実行によりネゲートされる。第3
に、データ・プロセッサ10のリセットにより、VID
ビット114が変更される。第4に、IDR18ロケー
ションに対するライト・アクセスを用いて、対応するV
IDビット114をアサートすることができる。第5
に、直接VIDビット114に対するライト・アクセス
を用いてその論理状態を変更することがある。VIDビ
ット114に影響を及ぼす他のメカニズムも用いること
ができる。 【0905】 セクション5.10 最大値と最小値の決定 セクション5.10.1 命令「comax 」,「rowma
x」,「locmax」,「colmin」,「rowmin」および「loc
min」 ファジー論理,ニューラル・ネットワークおよびその他
の並行アレイ指向アプリケーションに関しては、ベクタ
・オペランドについてもスケーラ・オペランドについて
も、最大値および最小値を決定することのできる簡単で
迅速な技術およびメカニズムが必要である。この技術お
よびメカニズムは、比較しなければならない種々の数の
データ値を扱うことができるものでなければならない。
また、この技術およびメカニズムは、集積回路の境界を
越えて最大値および最小値の決定を実行することができ
るものでなければならない。値そのものだけでなく最小
値または最大値のロケーションを決定することが重要で
あることも多い。最小値および最大値決定のこの技術
は、ニューラル・ネットワーク・アプリケーションでは
かなり用いられるものであるが、他の広範なアプリケー
ションにおいても用いられる。 【0906】本発明のある実施例においては、データ・
プロセッサ10は最大値決定を行うために1つ以上の
「colmax」,「rowmax」または「locmax」命令を実行す
ることができる。同様に、データ・プロセッサ10は最
小値決定を行うために1つ以上の「colmin」,「rowmi
n」または「locmin」命令を実行することができる。本
発明の代替の実施例では、より多くの、より少ない、ま
たは異なる比較命令を用いることがある。 【0907】図181では、ワイアORライン158と
記された比較ラインまたは比較導体が、ベクタ・エンジ
ン9の各処理要素16に結合されている。各処理要素1
6は、各処理要素16内のベクタ・プロセス制御レジス
タ(VPCR)102にある対応するVTビット110
を有する(VTビット110については、図79,図7
4および表2.31を参照のこと)。図181は、63
個の処理要素16を示すが、本発明の代替の実施例では
任意の数の処理要素16を用いることもできる。最小値
/最大値ピン選択回路構成164と、行制御ピン回路構
成160と、列制御ピン回路構成162とが用いられ
て、比較導体158を図示された集積回路ピンのそれぞ
れ、すなわち行制御ピン反転ROW82と列制御ピン反
転COL84のそれぞれに選択的に結合させる。これに
より回路170は一般的に、比較導体158を集積回路
ピン82,84に選択的に結合するか、あるいは分離す
るためのスイッチとして機能する。 【0908】図185および図186は、比較命令が実
行されるときに実行されるステップを図示する。本発明
のある実施例においては、比較命令そのものの特定のオ
ペコードにより、反転COLピン84および反転ROW
ピン82のどちらかが比較導体158に結合されるか否
かが決まる。たとえば、図示された実施例においては、
「colmax」および「colmin」命令は反転COLピン84
を比較導体158に結合させるだけであり、「rowmax」
および「rowmin」命令は反転ROWピン82を比較導体
158に結合させるだけであり、「locmax」および「lo
cmin」命令はいずれのピンも比較導体158に結合させ
ない。 【0909】図181では、マイクロシーケンサ22が
比較命令を解読して、結合すべきピンがある場合に、ど
ちらのピンをその命令のために比較導体158に結合さ
せるかを決める。次にマイクロシーケンサ22は、最小
値/最大値ピン選択回路構成164に制御信号を送る。
最小値/最大値ピン選択回路構成164は、この制御信
号を用いて行制御ピン回路構成160に対する制御信号
および列制御ピン回路構成162に対する制御信号をア
サートするか、あるいはネゲートするかを選択的に決め
る。行制御ピン回路構成160が最小値/最大値ピン選
択回路構成164からアサートされた制御信号を受信す
ると、行制御ピン回路構成160は、比較導体158を
反転ROWピン82に結合させる。列制御ピン回路構成
162が最小値/最大値ピン選択回路構成164からア
サートされた制御信号を受信すると、列制御ピン回路構
成162は、比較導体158を反転COLピン84に結
合させる。 【0910】その結果、図184に図示されるような他
のデータ・プロセッサ10.xの集積回路ピンに、比較
導体158を結合することができる。これにより内部比
較導体158は、列導体166および行導体168など
の外部比較導体に結合することができる。そのため、集
積回路内部ならびに複数の集積回路のピン境界の両側で
比較を行うことができる。 【0911】図182および図183は、「locmax」命
令の実行例を図示する。図182では、第1列は各処理
要素に最初に記憶された任意の8ビット値を示す。この
例では、イネーブル・ビット(VTビット110)の初
期値は、集積回路#8ないし#63に関しては0であ
る。そのため、処理要素#0ないし#7だけがイネーブ
ルになり、命令の実行に関与する。 【0912】第1ステップとして、イネーブルになった
各処理要素、この例では#0ないし#7は、第1データ
・ビットをワイアORライン158に入れる。本発明の
図示された実施例においては、第1データ・ビットは常
に、各処理要素に記憶されたデータ値の最上位ビット
(MSB)であり、その次の各ビットは次に上位のビッ
トである。しかし、本発明の代替の実施例では、データ
・ビットの順序および選択に関して異なる方法を用いる
ことがある。 【0913】図示された実施例の比較導体158はワイ
アORラインであるので、比較ライン158は論理レベ
ル1がライン上で駆動されない限り、論理0の状態のま
まである。ワイアANDラインを代わりに用いることも
できる。ワイアANDラインに関しては、論理レベル0
がライン上で駆動されない限り、このラインは論理1の
状態に留まる。図183は、各ステップの後の、すなわ
ち各グループのデータ・ビットがワイアORライン15
8に入れられた後のワイアORライン158の論理状態
を示す。 【0914】「locmax」命令については、各処理要素が
ワイアORライン158に入れた論理値と、その結果得
られたラインの実際の論理状態とを比較する。図80に
よれば、シフト,補足および検出回路構成117がこの
関数を実行する。処理要素が論理0をラインに入れ、0
を読み返した場合は、その処理要素のVTビット110
はアサートされたままの状態になる。同様に、処理要素
が論理1をラインに入れ、1を読み返した場合は、その
処理要素のVTビット110はアサートされたままの状
態になる。しかし、処理要素が論理0をラインに入れ、
1を読み返した場合は、その処理要素のVTビット11
0はネゲートされて、ディスエーブルとなったその処理
要素はもはや比較命令の実行には関与しない。ワイアO
Rラインについては、処理要素がライン1に論理1を入
れて、0を読み返すことはできないので留意すること。 【0915】図182に図示された例では、処理要素#
0ないし#7に記憶された各データ値の最上位ビットは
論理0である。そのため、イネーブルされた各処理要素
は、ワイアORライン158上に論理0を入れる。これ
によりワイアORライン158は論理0状態に留まる。
それぞれの処理要素は、その処理要素がライン上に入れ
た値(この場合は0)と、その結果得られたラインの実
際の値(この場合も0)とを比較する。各処理要素はラ
インに論理0を入れて、0を読み返したので、各処理要
素のVTビット110はアサートされたままになる。各
処理要素のVTビット110の値を図182の第2列に
図示する。これにより、第1ステップの後では、各処理
要素のVTビット110の値は論理1のままである。 【0916】第2ステップとして、イネーブルになった
各処理要素、この例でも処理要素#0ないし#7は、第
2データ・ビットである次に上位のビットをワイアOR
ライン158に入れる。各処理要素は、ワイアORライ
ン158に入れた論理値とその結果得られた実際のライ
ンの論理状態とを比較する。処理要素#0,#2,#
3,#4,#6は、ラインに論理1を入れて、1を読み
返したので、これらの処理要素のVTビット110はア
サートされたままである。しかし処理要素#1,#5,
#7は、ラインに論理0を入れて1を読み返したので、
これらの処理要素のVTビット110はネゲートされ
る。これにより処理要素#0,#2,#3,#4,#6
はイネーブルのままであり、処理要素#1,#5,#7
はディスエーブルになり、比較命令の実行にはもう関与
しない。各ワイアORステップ語の各処理要素のVTビ
ット110を、図182の第2列に図示する。 【0917】最後のワイアORステップが終った後のV
Tビット110の望ましい値が、図182の右端の列に
図示される。右端の列の望ましい結果は、中間の列のス
テップ8に図示された実際の結果と一致する。処理要素
#2,#4はいずれも最大値、この場合は%01010
00を含むので、命令の最後に処理要素#2,#4のV
Tビット110だけがアサートされることが望ましい。
このように、比較命令を用いて、最大値を含まないすべ
ての処理要素をディスエーブルにすることができる。V
Tビット110を用いて、最大値を含む処理要素(群)
のロケーションを決定することができる。また、VTビ
ット110がアサートされている任意の処理要素から、
比較命令の最後に最大値そのものを検索してもよい。 【0918】本発明の図示された実施例においては、ワ
イアORステップの数はプログラミング可能である。命
令のビット・フィールドが、ワイアORステップの数を
指定するために用いられる。たとえば、各処理要素が
「N」ビット幅のデータ値を持っているとすると、命令
のビット・フィールドをプログラミングすることによ
り、ユーザは1ビットから「N」ビットのどこでも比較
するように選択することができる。本発明の代替の実施
例では、命令ビット・フィールドの代わりにレジスタ・
ビット・フィールドまたはデフォルト値を用いて比較す
るビットの数を指定することもある。 【0919】図80では、ビット修正回路構成118が
シフト,補足および検出回路構成117に結合されてい
る。シフト,補足および検出回路構成117は、処理要
素がいつ論理0をラインに入れ、1を読み返したかを検
出する。シフト,補足および検出回路構成117は、次
に制御信号をビット修正回路構成118にアサートす
る。ビット修正回路構成118がこのアサートされた制
御信号を受信すると、ビット修正回路構成118は、V
Tビット110をネゲートする。制御およびステータス
信号は、制御回路構成115とマイクロシーケンサ22
との間で転送されることに注目されたい。また、制御回
路構成115は、処理要素16を制御するために用いら
れる制御信号を発生することにも注目されたい。 【0920】図182および図183に示された例は、
符号なしのデータ値を用いた「locmax」命令の実行を扱
っている。このメカニズムと技術の変形を用いて、符号
つきの数または符号なしの数に関して動作する命令であ
って、最大値または最小値の位置を決定する命令を実行
することができる。符号つきの数のベクタの最大値の位
置を決定するには、上記の手順にステップを1つ追加し
て用いる。符号つきの数を2の補数の形で表すと、符号
つきの数それぞれの最上位ビットは符号ビットになる。
符号つきの数それぞれの符号ビットは、ワイアORライ
ン158に入れる前に補足しなければならない。 【0921】符号つきの数のベクタの最小値も、すべて
のビットを補足することにより同様の方法で位置を決定
することができる。また2の補数である符号つきの数の
最小値は、符号ビットを除くすべてのビットを補足する
ことにより位置が決定できる。図80には、シフト,補
足および検出回路構成117が、マイクロシーケンサ2
2に結合されて、ワイアORライン158に出力される
データ・ビットがある場合は、どのビットを補足しなけ
ればならないかということに関する制御情報を受け取
る。次に、シフト,補足および検出回路構成117は、
必要な補足を行う。 【0922】本発明の図示された実施例においては、制
御レジスタ・ビット・フィールドを用いて、比較命令が
符号つきの値として比較されているデータ値を扱うの
か、符号なしの値として比較されているデータ値を扱う
のかを決定する。図22では、算術演算制御レジスタ
(ACR)172には、スケーラ符号つきの/符号なし
のビット(SSGN)174とベクタ符号つきの/符号
なしのビット(VSGN)176とが含まれる。VSG
Nビット176を用いて、比較命令の間に用いられるベ
クタ・データ値が符号つきの数と見なされるのか、符号
なしの数と見なされるのかを決める。 【0923】本発明の図示された実施例は、1つの比較
命令につき8データ・ビットの最大幅しか扱わないが、
比較命令を最上位バイトから2回以上実行することによ
り、8ビットより広いベクタ・データ値を処理すること
ができる。本発明の代替の実施例では、8ビットよりも
幅の広いデータ値も狭いデータ値も扱うことがある。 【0924】図182および図183に図示された例
は、「locmax」命令の実行を扱っている。「rowmax」命
令の実行は、「locmax」命令の実行と似ているが、比較
導体158がさらに反転ROWピン82に結合される点
が異なる。また、「colmax」命令の実行は、「locmax」
命令の実行と似ているが、比較導体158がさらに反転
COLピン84にも結合される点が異なる。 【0925】同様に「rowmin」命令の実行は、「locmi
n」命令の実行と似ているが、比較導体158がさらに
反転ROWピン82にも結合される点が異なる。また、
「colmin」命令の実行は、「locmin」命令の実行と似て
いるが、比較導体158がさらに反転COLピン84に
も結合される点が異なる。 【0926】図184では、比較動作に用いられるワイ
アORライン158は、データ・プロセッサ10.x内
部だけで用いられることも、あるいは集積回路ピンを介
して多重チップ動作のための外部ワイアORラインに接
続されることもある。データ・プロセッサ10.xは、
図184に図示されるような二次元アレイ内でデータ・
プロセッサ10.xの行または列をまたいで行われる多
重チップの最大値または最小値ロケーション動作を支援
する。複数のワイアORライン166,168が用いら
れる。一般には、各行に1つの外部ワイアORラインが
あり、各列に1つの外部ワイアORラインがある。 【0927】本実施例では、各データ・プロセッサ1
0.xは、1つのワイアOR行ライン168に結合する
1つの反転ROWピン82と、1つのワイアOR列ライ
ン166に結合する1つの反転COLピン84とを有す
る。これらの列導体166と行導体168は、データ・
プロセッサ10.xがラン・モードの動作出命令を実行
するときに実行される、行と列に基づいた多重チップ動
作のためのワイアORラインとして機能する。ストップ
・モードの動作の場合は、反転ROWピン82および反
転COLピン84はチップ選択と同様の方法で用いられ
る。 【0928】セクション5.10.2 命令「vmaxp
」,「vmax」,「vminp 」と「vmin」,「maxp」,「m
ax 」,「minp」と「min 」 ファジー論理,ニューラル・ネットワークおよびその他
の並行アレイ指向アプリケーションについては、ベクタ
・オペランドおよびスケーラ・オペランドの両方に関し
て、最大値および最小値の決定を行うことができる簡単
で迅速な技術およびメカニズムが必要とされる。この技
術およびメカニズムは、符号つきの数(2の補数)と符
号なしの数の両方に関して最大値および最小値の決定を
実行できるものでなければならない。また、この技術お
よびメカニズムは、延長(多重バイト)オペランドにつ
いても最大値および最小値の決定を実行できるものでな
ければならない。最小値および最大値決定の方法は、ニ
ューラル・ネットワーク・アプリケーションでかなり用
いられるが、他の広範なアプリケーションでも用いられ
る。 【0929】図77では、ベクタ・エンジン9がベクタ
最大値命令および最小値命令、すなわち「vmaxp 」,
「vmax」,「vminp 」および「vmin」の実行に関わる。
表2.44は、ベクタ最大値命令およびベクタ最小値命
令を説明する。表2.36は、ソース・レジスタ(すな
わち「vreg1 」)としてどのレジスタを用いることがで
きるかをリストアップし、表2.37は、デスティネー
ション・レジスタ(すなわち「vreg2D」)としてどのレ
ジスタを用いることができるかをリストアップしてい
る。セクション2.5.12.3および表3.7も、ベ
クタ最大値命令およびベクタ最小値命令を説明する。 【0930】図79および図80では、ベクタ最大値お
よびベクタ最小値命令の比較部分が、算術演算論理ユニ
ット(ALU)119により実行される。比較関数は、
加算,減算および比較命令に関して同じALU119が
用いられるので、最小値および最大値命令に関して回路
構成を追加する必要はほとんどない。本発明の代替の実
施例においては、任意のタイプの比較器回路構成を用い
て比較関数を実行することができる。 【0931】符号ビットである算術演算制御レジスタ
(ACR)172内に位置するVSGNビット176
は、ベクタ最大値および最小値命令に用いられるデータ
値が、符号つきの数として扱われるのか、それとも符号
なしの数として扱われるのかを決定する。ベクタ・エン
ジン9には2個の拡張ビット、すなわちベクタ・プロセ
ス制御レジスタ(VPCR)102内にあるVX0ビッ
ト104およびVX1ビット105がある。これら2つ
の拡張ビットは、延長最小値および最大値動作を含む延
長動作に対応するために用いられる。この2つの拡張ビ
ットは、延長計算の間を除き、通常はデフォルト状態に
クリアされている。 【0932】図78では、スケーラ・エンジン26がス
ケーラ最大値およびスケーラ最小値命令、「maxp」,
「max 」,「minp」および「min 」の実行に関わってい
る。表2.51は、ベクタ最大値およびベクタ最小値命
令を説明する。表2.38は、どのレジスタがソース・
レジスタ(すなわち「sregS 」)として用いられ、どの
レジスタがデスティネーション・レジスタ(すなわち
「sregD 」)として用いられるのかをリストアップして
いる。 【0933】図80には、スケーラ最大値およびスケー
ラ最小値命令の比較部分が、算術演算論理ユニット(A
LU)304により実行される。比較関数は、加算,減
算および比較命令に用いられるのと同じALU304に
より実行されるので、最小値および最大値命令のための
追加の回路構成はほとんど必要ない。本発明の代替の実
施例においては、任意のタイプの比較器回路構成を用い
て比較関数を実行することもできることに注目された
い。 【0934】符号ビットである算術演算制御レジスタ
(ACR)172内に位置するSSGNビット174
は、スケーラ最大値および最小値命令に用いられるデー
タ値が、符号つきの数として扱われるのか符号なしの数
として扱われるのかを決定する。スケーラ・エンジン2
6には2個の拡張ビット、すなわちSPCRレジスタ2
08にあるSX0ビット210およびSX1ビット21
2がある。これら2つの拡張ビットは、延長最小値およ
び最大値動作を含む延長動作に対応するために用いられ
る。この2つの拡張ビットは、延長計算の間を除き、通
常はデフォルト状態にクリアされている。 【0935】図163は、ベクタとスケーラの最小値お
よび最大値命令を含む、種々の比較命令の実行中にデー
タ・プロセッサ10により行われるステップを示す。 【0936】本発明においては、2個の1バイト・オペ
ランドの最小値または最大値を計算するためには1つの
命令しか必要ではない。たとえば、1つの命令「min G
0,G1」を用いて、レジスタG0,G1(図82のG
[n]レジスタ302参照)に記憶されている2個の1
バイト・オペランドの最小値を計算することができる。
結果、すなわち2個の値の小さいほうの値は、レジスタ
G1に記憶される。また、拡張ビットSX0 210お
よびSX1 212は、命令が開始される前にそのデフ
ォルト値、図示された実施例では%00になっているこ
とが必要であることにも留意されたい。 【0937】以下のステップは、「min 」命令の間に実
行される。ALU304は、SSGNビット174によ
り指定されたとおりに、符号つきの算術演算または符号
なしの算術演算のいずれかを用いて2個のデータ値を比
較する。ALU304は、デスティネーション・データ
値からソース・データ値を減ずる。ALU304は、減
算動作がボローを必要としたか否かを示すボロー値を生
成する。減算の結果が負の値である場合は、ボロー値が
アサートされる。減算の結果が正の値である場合は、ボ
ロー値はネゲートされる。 【0938】ALU304は、ボロー信号上にボロー値
を出力し、この信号は制御回路構成308により受信さ
れる。次に制御回路構成308は、1つ以上の制御信号
をALU304の出力にあるマルチプレクサ(図示せ
ず)に送り、ALU304に対して小さいほうのデータ
値を結果として選択するように命令する。結果、すなわ
ち小さいほうの値は、デスティネーション・レジスタに
転送され、そこに記憶される。「min 」命令は「非予
備」命令であるので、拡張ビットSX0 210,SX
1 212を無条件にデフォルト状態にクリアする。制
御回路構成308とビット修正回路構成306が、スケ
ーラ・プロセス制御レジスタ(SPCR)208内のビ
ットの論理状態を変更するために用いられる。 【0939】1つ以上の予備命令の列に、1個の非予備
命令が続くと、通常は延長オペランドの最小値または最
大値を計算するために用いられる。たとえば、次のよう
な一連の命令を用いて、ソース・レジスタ・グループ
(G2,G1,G0)とデスティネーション・レジスタ
・グループ(G5,G4,G3)の2個の3バイト数の
最小値を計算することができる。結果、すなわち2個の
3バイト値の小さいほうの値はレジスタ・グループ(G
5,54,G3)に記憶されることに留意されたい。ま
た、拡張ビットSX0 210,SX1 212は、最
初の命令「minp2,G5」が開始される前にデフォルト
状態になっていることが必要とされることにも留意され
たい。 【0940】 minp G2,G5 ;min 予備G2からG5 (拡張ビットを発生) minp G1,G4 ;min 予備G1からG4 (拡張ビットを発生) min G0,G3 ;min G0からG3 (拡張ビットをデフォルト状態に戻す) 【0941】予備命令「minp」は、最上位バイトに適用
され、非予備命令「min 」は最後の最下位バイトに適用
されることに留意されたい。第1命令「minp G2,G
5」は、拡張ビットSX0 210,SX1 212が
命令の最初ではデフォルト状態にあるという事実を用い
て、最上位バイトを扱うと判断する。結果として、「mi
np G2,G5」命令は、SSGNビット174に指定
されたとおりに、符号つきの数または符号なしの数のい
ずれかを用いてG2とG5を比較する。 【0942】「minp G2,G5」命令は、小さいほう
のオペランド・バイトを結果として選択して、拡張ビッ
トSX0 210,SX1 212を選択的に修正し
て、比較の結果を示す(表2.59参照)。レジスタG
2に記憶されているデータ値がレジスタG5に記憶され
ているデータ値よりも小さい場合は、レジスタG2が結
果として選択され、拡張ビットSX0 210,SX1
212は%01に等しくなるように選択的に修正され
る。レジスタG2に記憶されているデータ値がレジスタ
G5に記憶されているデータ値よりも大きい場合は、レ
ジスタG5が結果として選択され、拡張ビットSX0
210,SX1 212は%10に等しくなるように選
択的に修正される。レジスタG2に記憶されているデー
タ値がレジスタG5に記憶されているデータ値と等しい
場合は、どちらかのデータ値が結果として選択され、拡
張ビットSX0 210,SX1 212は%11に等
しくなるように選択的に修正される。 【0943】第2命令「minp G1,G4」は、拡張ビ
ットSX0 210,SX1 212が命令の最初では
デフォルト状態にないという事実を用いて、最上位バイ
トを扱わないと判断する。 【0944】拡張ビットSX0 210,SX1 21
2の着信値が%01の場合は、レジスタ・グループ(G
2,G1,G0)に記憶されている3バイト値はレジス
タ・グループ(G5,G4,G3)に記憶されている3
バイトのデータ値よりも小さいという判断がすでになさ
れている。そのためレジスタG1に記憶されているデー
タ値が結果として選択され、拡張ビットSX0 21
0,SX1 212は%01のままになる。 【0945】拡張ビットSX0 210,SX1 21
2の着信値が%10の場合は、レジスタ・グループ(G
2,G1,G0)に記憶されている3バイト値はレジス
タ・グループ(G5,G4,G3)に記憶されている3
バイト値よりも大きいという判断がすでになされてい
る。そのためレジスタG4に記憶されているデータ値が
結果として選択され、拡張ビットは%10のままにな
る。 【0946】拡張ビットSX0 210,SX1 21
2の着信値が%11の場合は、レジスタ・グループG1
に記憶されているデータ値が、レジスタG4に記憶され
ているデータ値と符号なしの算術演算を用いて比較され
る。このバイトは最上位バイトではないので、3バイト
数に符号があっても符号ビットを含まないことに留意さ
れたい。「minp G1,G4」命令は、小さいほうのデ
ータ値を結果として選択し、比較の結果により拡張ビッ
トSX0 210,SX1 212を%01,%10ま
たは%11に選択的に修正する(表2.59参照)。 【0947】最後の命令「min G0,G3」は、非予備
命令であり、前出の「minp G1,G4」と同じように
機能するが、拡張ビットSX0 210,SX1 21
2をデフォルト状態%00に戻す点だけが異なる。 【0948】上記の例は、スケーラ命令「min 」および
「minp」を用いているが、ベクタ命令「vmin」および
「vminp 」に関しても、それぞれイネーブルになった処
理要素16内で同じステップが実行される。 【0949】最大値を決定する計算では、スケーラ命令
「max 」および「maxp」と、ベクタ命令「vmax」および
「vmaxp 」が用いられる。最大値命令の機能は最小値命
令の機能にとても似ているが、小さいほうの値ではなく
大きいほうの値が結果として選択され、デスティネーシ
ョン・レジスタに記憶される点だけが異なる。 【0950】図187は、ソース・レジスタ・グループ
(G2,G1,G0)とデスティネーション・レジスタ
・グループ(G5,G4,G3)にある2個の3バイト
の符号なしの数の最大値を計算するために用いることの
できる一連の命令の例を示す。結果、すなわち2個の3
バイト値の大きいほうの値はレジスタ・グループ(G
5,54,G3)に記憶されることに留意されたい。ま
た、拡張ビットSX0210,SX1 212は、最初
の命令「maxp G2,G5」が開始される前にデフォル
ト状態になっていることが必要とされることにも留意さ
れたい。また、符号ビットSSGN174は%1に等し
く、これはデータ値が符号なしの数として扱われること
を示すことにも留意されたい。 【0951】 maxp G2,G5 ;max 予備G2からG5 (拡張ビットを発生) maxp G1,G4 ;max 予備G1からG4 (拡張ビットを発生) max G0,G3 ;max G0からG3 (拡張ビットをデフォルト状態に戻す) 【0952】図188は、ソース・レジスタ・グループ
(G2,G1,G0)とデスティネーション・レジスタ
・グループ(G5,G4,G3)にある2個の3バイト
の符号つきの数の最大値を計算するために用いることの
できる一連の命令の例を示す。結果、すなわち2個の3
バイト値の大きいほうの値はレジスタ・グループ(G
5,54,G3)に記憶されることに留意されたい。ま
た、拡張ビットSX0210,SX1 212は、最初
の命令「maxp G2,G5」が開始される前にデフォル
ト状態になっていることが必要とされることにも留意さ
れたい。また、符号ビットSSGN174は%0に等し
く、これはデータ値が符号つきの数(2の補数)として
扱われることを示すことにも留意されたい。 【0953】 maxp G2,G5 ;max 予備G2からG5 (拡張ビットを発生) maxp G1,G4 ;max 予備G1からG4 (拡張ビットを発生) max G0,G3 ;max G0からG3 (拡張ビットをデフォルト状態に戻す) 【0954】セクション5.11 係数メモリ・アレイ
(CMA)14に対する反転アクセス図78および図1
89の本発明の図示された実施例においては、係数メモ
リ・アレイ(VH)14は64行64列に配列されたバ
イト幅の記憶回路のアレイである。本発明の代替の実施
例では、異なる数の行と異なる数の列とを有することも
ある。各処理要素16は、一度にVH14内の1行に結
合され、そのため各処理要素16は一度に64バイトの
情報にアクセスすることができる。 【0955】VH14および処理要素16により必要と
される半導体面積を最小限に抑えるために、処理要素1
6は実際には2つの部分に分割される。処理要素16の
第1部分はVH14の第1サイドに物理的に位置する。
処理要素16の第2部分はVH14の別のサイドに物理
的に位置する(図189参照)。 【0956】図189に示されるようにVH14の行を
交互に配置することにより、各処理要素16をメモリの
別の行に物理的に結合させることが可能になる。これに
より、各処理要素16は、2倍のメモリ・ロケーション
にアクセスできる。各メモリ・ロケーションは、バイト
幅の記憶回路の1つに相当する。さらに、VH14と処
理要素16との間のインターフェースに影響を与えず
に、処理要素16の半分(すなわち2つの部分のうちの
1つ)を取り出すことができる。また処理要素16間の
通信は、処理要素PE[n]が処理要素PE[63−
n]とデータを交換できるように改善される。たとえ
ば、処理要素PE[0]は、処理要素PE[63]とデ
ータを交換することができ、処理要素PE[30]は処
理要素PE[33]とデータを交換することができる。 【0957】選択回路204は、VH14とPE[0]
ないしPE[31]を含む処理要素16の部分との間に
結合される。選択回路206は、VH14とPE[3
2]ないしPE[63]を含む処理要素16の部分との
間に結合される。選択回路204と選択回路206とを
用いて、2行のうちどちらの行が処理要素16に結合さ
れて、処理要素16によりアクセスされるかを選択す
る。 【0958】VH14内での行の物理的なレイアウトに
より、処理要素PE[0]を電気導体をほとんど経由せ
ずにVH14の行63に結合させて、必要な半導体面積
を最小限に抑えることができる。処理要素PE[n]
は、それ自身に対応するメモリ行(行n)にアクセスす
ることができ、さらに処理要素PE[n]は処理要素P
E[63−n](行63−n)に対応するメモリ行にも
アクセスすることができる。 【0959】メモリ・アクセスは、スケーラ・エンジン
内のポインタ・レジスタのポインタ値を用いて、VH1
4のどの列にアクセスするかを選択する(図69および
図82のグローバル・ポインタ・レジスタP[0]〜P
[7]300を参照のこと)。ポインタ値は、0から1
27までが有効である。最上位ビット(図示された実施
例ではビット6)が用いられて、対応する行と対応しな
い行との間の選択を行う。最上位ビットがネゲートされ
ている場合は、対応する行が処理要素16により用いら
れる。最上位ビットがアサートされている場合は、対応
しない行が処理要素16により用いられる。処理要素P
E[n]の対応する行は行「n」であり、処理要素PE
[n]の対応しない行は行「63−n」である。すべて
の処理要素16はそれに対応する行に書き込むか、ある
いはすべての処理要素16が対応しない行に書き込むの
で、同一のメモリ・ロケーションに対して同時にライト
が起こることは回避される。 【0960】プログラマの立場から、対応しない行をベ
クタを反転させるための方策として用いることができ
る。処理要素16がバイト値を対応しない行の1つ以上
の列に書き込んで、対応する行内の同じ1つ以上の列か
らバイト値を読むと、ベクタの反転が起こる。ここで処
理要素PE[63]は最初は処理要素PE[0]に記憶
されていた値を記憶して、処理要素PE[0]は今度
は、最初は処理要素PE[63]に記憶されていた値を
記憶する。処理要素16がCMA14の対応する行にも
対応しない行にもアクセスすることができるという事実
は、データ移動動作(たとえば下向きシフト動作)や、
VTビット110をイネーブル・ビットとして用いるこ
とができるという事実と連携させると特に有用である。
の従来図である。 【図2】42x35フィードフォワード・ネットワーク
の論理図である。 【図3】42x35フィードフォワード・ネットワーク
の物理図である。 【図4】102x35フィードフォワード・ネットワー
クの従来図である。 【図5】102x35フィードフォワード・ネットワー
クの論理図である。 【図6】102x35フィードフォワード・ネットワー
クの物理図である。 【図7】42x69フィードフォワード・ネットワーク
の従来図である。 【図8】42x69フィードフォワード・ネットワーク
の論理図である。 【図9】42x69フィードフォワード・ネットワーク
の物理図である。 【図10】73x69フィードフォワード・ネットワー
クの従来図である。 【図11】73x69フィードフォワード・ネットワー
クの論理図である。 【図12】73x69フィードフォワード・ネットワー
クの物理図である。 【図13】63x20x8フィードフォワード・ネット
ワークの従来図である。 【図14】63x20x8フィードフォワード・ネット
ワークの論理図である。 【図15】63x20x8フィードフォワード・ネット
ワークの物理図である。 【図16】アソシエーション・エンジン・サブシステム
である。 【図17】入力データ・ベクタのアソシエーション・エ
ンジン部である。 【図18】複数のアソシエーション・エンジン・ファン
クション信号グループである。 【図19】反転ECOおよび反転WCI制御信号を用い
るストリーム・ライト動作を示す。 【図20】アソシエーション・エンジン・ピンの割当を
示す。 【図21】アソシエーション・エンジン識別レジスタを
示す。 【図22】算術演算制御レジスタを示す。 【図23】例外ステータス・レジスタを示す。 【図24】例外マスク・レジスタを示す。 【図25】処理要素選択レジスタを示す。 【図26】ポート制御レジスタを示す。 【図27】ラン・モード入力インデクス(FM=0)を
示す。 【図28】ラン・モード入力タッギング(FM=1)を
示す。 【図29】アソシエーション・エンジン・ポート・モニ
タ・レジスタを示す。 【図30】複数のポート・エラー例を示す。 【図31】汎用ポート・レジスタを示す。 【図32】処理要素選択レジスタを示す。 【図33】IDRポインタ・レジスタを示す。 【図34】IDRカウント・レジスタを示す。 【図35】IDRロケーション・マスク・レジスタを示
す。 【図36】IDR初期オフセット・レジスタを示す。 【図37】ホスト・ストリーム選択レジスタを示す。 【図38】ホスト・ストリーム・オフセット・レジスタ
を示す。 【図39】例#1:ストリーム・ライト中のデータの単
純分配を示す。 【図40】例#2:データの再配列および重複分配を示
す。 【図41】北−南保持レジスタを示す。 【図42】北−南保持レジスタを示す。 【図43】オフセット・アドレス・レジスタ#1を示
す。 【図44】深さ制御レジスタ#1を示す。 【図45】オフセット・アドレス・レジスタ#2を示
す。 【図46】深さ制御レジスタ#2を示す。 【図47】割込ステータス・レジスタ#1を示す。 【図48】割込マスク・レジスタ#1を示す。 【図49】割込ステータス・レジスタ#2を示す。 【図50】割込マスク・レジスタ#2を示す。 【図51】マイクロシーケンサ制御レジスタを示す。 【図52】FLS,スタック,FSLFおよびSTKF
を示す。 【図53】マイクロシーケンサ・ステータス・レジスタ
を示す。 【図54】スケーラ処理制御レジスタを示す。 【図55】命令レジスタを示す。 【図56】複数の命令キャッシュ・ライン有効レジスタ
を示す。 【図57】プログラム・カウンタを示す。 【図58】プログラム・カウンタ境界レジスタを示す。 【図59】命令キャッシュ・タッグ#0を示す。 【図60】命令キャッシュ・タッグ#1を示す。 【図61】命令キャッシュ・タッグ#2を示す。 【図62】命令キャッシュ・タッグ#3を示す。 【図63】スタック・ポインタを示す。 【図64】第1レベル・スタックを示す。 【図65】リピート開始レジスタを示す。 【図66】リピート終了レジスタを示す。 【図67】リピート・カウント・レジスタを示す。 【図68】複数のグローバル・データ・レジスタを示
す。 【図69】複数のグローバル・ポインタ・レジスタを示
す。 【図70】例外ポインタ表を示す。 【図71】例外処理の流れ図を示す。 【図72】複数の入力データ・レジスタを示す。 【図73】複数のベクタ・データ・レジスタ(V0〜V
7)を示す。 【図74】ベクタ処理制御レジスタを示す。 【図75】複数の入力タッグ・レジスタを示す。 【図76】命令キャッシュを示す。 【図77】係数メモリ・アレイを示す。 【図78】マイクロコード・プログラマ・モデルを示
す。 【図79】複数のベクタ・エンジン・レジスタを示す。 【図80】複数のベクタ・エンジン・レジスタを示す。 【図81】複数のマイクロシーケンサ・レジスタを示
す。 【図82】複数のスケーラ・エンジン・レジスタを示
す。 【図83】複数のアソシエーション・エンジン制御レジ
スタを示す。 【図84】IDRの概念的な実行例を示す。 【図85】drotmov 動作の例を示す。 【図86】vminおよびvmax命令を示す。 【図87】VPCR VTおよびVHビット状態の移行
図を示す。 【図88】repeatループ終了時のbra/jmpri/jmpmi を示
す。 【図89】repeatループ終了時のbsr/jsrri/jsrmi を示
す。 【図90】repeate ループ・アイデンティティを示す。 【図91】repeatループ終了時のベクタ条件を示す。 【図92】repeate ループ終了時のベクタ条件を示す。 【図93】典型的なニューラル・ネットワークのコンフ
ィギュレーションを示す。 【図94】図93の隠されたレイヤ(h)に関するアソ
シエーション・エンジン実行例を示す。 【図95】入力レイヤから隠されたレイヤに対するマッ
ピングを示す。 【図96】マイクロシーケンサの簡略図である。 【図97】単一サイクル命令パイプライン・タイミング
を示す。 【図98】2サイクル命令のタイミングを示す。 【図99】ステージ#2休止例を示す。 【図100】CMAおよびMMAの等価メモリ・マップ
を示す。 【図101】直接および反転CMAアクセスを図解した
ものである。 【図102】例#2に関するCMAレイアウトである。 【図103】IC,CMAおよびページを示す。 【図104】プログラム・カウンタおよびキャッシュ・
タッグを示す。 【図105】例#3に関するCMAレイアウトである。 【図106】例#4に関するCMAレイアウトである。 【図107】例#5に関するCMAレイアウトである。 【図108】例#6に関するCMAレイアウトである。 【図109】例#7に関するCMAレイアウトである。 【図110】例#8に関するCMAレイアウトである。 【図111】4ポートに関するホスト・アクセス・ファ
ンクションである。 【図112】一次元ストリーム動作を示す。 【図113】二次元ストリーム動作を示す。 【図114】入力データ・ストリームの例を示す。 【図115】入力タッギングの使用例を示す。 【図116】ホスト・メモリ・マップを示す。 【図117】アソシエーション・エンジンの内部編成を
示す。 【図118】アソシエーション・エンジンの大まかな流
れを示す。 【図119】入力データ・レジスタと関連の有効ビット
を示す。 【図120】アソシエーション・エンジンのスタンドア
ロン充てん後計算の流れ図である。 【図121】アソシエーション・エンジンのスタンドア
ロン充てん中計算の流れ図である。 【図122】ホストと、アソシエーション・エンジン
と、アソシエーション・エンジン’との対話を示す。 【図123】マイクロコード命令の流れを示す。 【図124】例#1におけるデータの移動を示す。 【図125】例#2におけるデータの移動を示す。 【図126】例#3におけるデータの移動を示す。 【図127】例#4におけるデータの移動を示す。 【図128】例#5におけるデータの移動を示す。 【図129】積の和の伝播ルーチンを示す。 【図130】複数ルーピング・ルーチンを示す。 【図131】複数アソシエーション・エンジン信号機通
過のためのアソシエーション・エンジン・ルーチンの例
である。 【図132】アソシエーション・エンジン・ポート・ス
イッチおよびタップ構造を示す。 【図133】アソシエーション・エンジンのリング・コ
ンフィギュレーションを示す。 【図134】アソシエーション・エンジンのリング・コ
ンフィギュレーションの例を示す。 【図135】二次元アレイのアソシエーション・エンジ
ンを示す。 【図136】二次元アレイのアソシエーション・エンジ
ンを示す。 【図137】ホスト・ランダム・アクセス・リードおよ
びライトのタイミングを示す。 【図138】ホスト・ランダム・アクセス・アドレス転
送のタイミングを示す。 【図139】ホスト・ランダム・アクセス・アドレス/
データ転送タイミングを示す。 【図140】ホスト・ランダム・アクセス・アドレス/
早期終了のあるデータ転送を示す。 【図141】ホスト・ストリーム・アクセス・リードの
タイミングを示す。 【図142】ホスト・ストリーム・ライト・アクセスを
示す。 【図143】デバイス#2からのラン・モード・ライト
動作を示す。 【図144】非アクティブな状態のPEを有するデバイ
ス#2からのラン・モード・ライト動作を示す。 【図145】アソシエーション・エンジン・ライト動作
衝突のタイミングを示す。 【図146】反転BUSY出力タイミングに対するアソ
シエーション・エンジンdoneを示す。 【図147】反転BUSY出力タイミングに対するアソ
シエーション・エンジンR/反転Sを示す。 【図148】ラン/ストップ介入によるアソシエーショ
ン・エンジン・ライトのタイミングを示す。 【図149】割込タイミングを示す。 【図150】リセット・タイミングを示す。 【図151】IEEE1149.1ポート・タイミング
を示す。 【図152】飽和命令を用いる例を示す図である。 【図153】飽和命令の流れ図である。 【図154】4台のデータ・プロセッサのブロック図で
ある。 【図155】4台のデータ・プロセッサのブロック図で
ある。 【図156】ストップ・モードの動作中のデータ・プロ
セッサのブロック図である。 【図157】ラン・モードの動作中のデータ・プロセッ
サのブロック図である。 【図158】ストップ・モードの動作およびランダム・
アクセス・モードのデータ・プロセッサのブロック図で
ある。 【図159】ストップ・モードの動作およびストリーム
・アクセス・モードのデータ・プロセッサのブロック図
である。 【図160】ラン・モードの動作中のデータ・プロセッ
サのブロック図である。 【図161】一連の加算命令を実行する例を示す図であ
る。 【図162】シフト命令の流れ図である。 【図163】比較命令の流れ図である。 【図164】算術演算命令の流れ図である。 【図165】従来の技術によるベクタ集合法を表す図で
ある。 【図166】本発明の実施例による集合法を表す図であ
る。 【図167】いくつかの処理要素の一部のブロック図で
ある。 【図168】いくつかの処理要素の一部のブロック図で
ある。 【図169】いくつかの処理要素の一部のブロック図で
ある。 【図170】スキップ命令の流れ図である。 【図171】リピート命令の流れ図である。 【図172】リピート命令の流れ図である。 【図173】インデックス充てんモードの例を表す図で
ある。 【図174】タッグ充てんモードの例を表す図である。 【図175】データ・プロセッサの一部のブロック図で
ある。 【図176】休止を含むデータ・コヒーレンシ法の流れ
図である。 【図177】休止を含むデータ・コヒーレンシ法の流れ
図である。 【図178】休止を含むデータ・コヒーレンシ法の使用
例を表すブロック図である。 【図179】休止を含むデータ・コヒーレンシ法の使用
例を表すブロック図である。 【図180】休止を含むデータ・コヒーレンシ法の使用
例を表すブロック図である。 【図181】データ・プロセッサの一部のブロック図で
ある。 【図182】最大値決定の例を表の形式で表したもので
ある。 【図183】最大値決定の例を表の形式で表したもので
ある。 【図184】データ処理システムの一部のブロック図で
ある。 【図185】比較命令の流れ図である。 【図186】比較命令の流れ図である。 【図187】一連の比較命令を用いる例を表す図であ
る。 【図188】一連の比較命令を用いる例を表す図であ
る。 【図189】データ処理システムの一部のブロック図で
ある。 【図190】表2.1を示す。 【図191】表2.2を示す。 【図192】表2.3を示す。 【図193】表2.4を示す。 【図194】表2.5を示す。 【図195】表2.5を示す。 【図196】表2.6を示す。 【図197】表2.6を示す。 【図198】表2.6を示す。 【図199】表2.6を示す。 【図200】表2.6を示す。 【図201】表2.7を示す。 【図202】表2.8を示す。 【図203】表2.9を示す。 【図204】表2.10を示す。 【図205】表2.11を示す。 【図206】表2.12を示す。 【図207】表2.13を示す。 【図208】表2.14を示す。 【図209】表2.15を示す。 【図210】表2.16を示す。 【図211】表2.17を示す。 【図212】表2.18を示す。 【図213】表2.19を示す。 【図214】表2.20を示す。 【図215】表2.21を示す。 【図216】表2.22を示す。 【図217】表2.23を示す。 【図218】表2.24を示す。 【図219】表2.25を示す。 【図220】表2.26を示す。 【図221】表2.27を示す。 【図222】表2.28を示す。 【図223】表2.28を示す。 【図224】表2.29を示す。 【図225】表2.30を示す。 【図226】表2.31を示す。 【図227】表2.32を示す。 【図228】表2.33を示す。 【図229】表2.34を示す。 【図230】表2.35を示す。 【図231】表2.35を示す。 【図232】表2.36を示す。 【図233】表2.36を示す。 【図234】表2.37を示す。 【図235】表2.38を示す。 【図236】表2.39を示す。 【図237】表2.40を示す。 【図238】表2.41を示す。 【図239】表2.42を示す。 【図240】表2.43を示す。 【図241】表2.44を示す。 【図242】表2.44を示す。 【図243】表2.44を示す。 【図244】表2.45を示す。 【図245】表2.46を示す。 【図246】表2.47を示す。 【図247】表2.47を示す。 【図248】表2.47を示す。 【図249】表2.48を示す。 【図250】表2.49を示す。 【図251】表2.50を示す。 【図252】表2.50を示す。 【図253】表2.51を示す。 【図254】表2.51を示す。 【図255】表2.51を示す。 【図256】表2.52を示す。 【図257】表2.52を示す。 【図258】表2.53を示す。 【図259】表2.54を示す。 【図260】表2.55を示す。 【図261】表2.56を示す。 【図262】表2.57を示す。 【図263】表2.58を示す。 【図264】表2.59を示す。 【図265】表2.60を示す。 【図266】表2.60を示す。 【図267】表2.61を示す。 【図268】表2.62を示す。 【図269】表2.63を示す。 【図270】表2.64を示す。 【図271】表2.64を示す。 【図272】表2.64を示す。 【図273】表2.64を示す。 【図274】表2.64を示す。 【図275】表2.64を示す。 【図276】表2.64を示す。 【図277】表2.65を示す。 【図278】表2.65を示す。 【図279】表2.66を示す。 【図280】表2.66を示す。 【図281】表2.66を示す。 【図282】表2.66を示す。 【図283】表2.66を示す。 【図284】表2.67を示す。 【図285】表3.1を示す。 【図286】表3.2を示す。 【図287】表3.3を示す。 【図288】表3.4を示す。 【図289】表3.5を示す。 【図290】表3.6を示す。 【図291】表3.7を示す。 【図292】表3.8を示す。 【図293】表3.9を示す。 【図294】表3.10を示す。 【図295】表3.11を示す。 【図296】表3.12を示す。 【図297】表3.13を示す。 【図298】表3.14を示す。 【図299】表4.1を示す。 【符号の説明】 9 ベクタ・エンジン 10 データ・プロセッサ 11 バス・スイッチ 13 バス 14 係数メモリ・アレイ(CMA) 15 リセット回路 16 処理要素(PE) 17 ポート論理 18 入力データ・レジスタ(IDR) 19 命令解読回路構成 20 命令キャッシュ 21 制御回路構成 22 マイクロシーケンサ 24 制御レジスタ 26 スケーラ・エンジン 28 北ポート 30 南ポート 32 東ポート 34 西ポート 36 ブロードキャスト・バス 38 グローバル・データ・バス 39 休止回路構成
Claims (1)
- 【特許請求の範囲】 (請求項1ないし47は、開示SC-01701A :スイッチお
よびタップ・アーキテクチャに関する。) (図1702.1も参照) 【請求項1】 第1ポート;(ノース(44)/ウェス
ト(50)) 第2ポート;(サウス(48)/イースト(46))
(注記:44,46,48および50はピンを指す;2
8,30,32および34も用いることができる) 複数の制御値を記憶する第1記憶回路;(PCR(5
2)−セクション1.1〜1.3;図81および図2
6) 第2記憶回路;(IDR(18)) 第1ポートと第2ポートとの間に結合された第1スイッ
チ回路(42.1または42.2)であって、複数の制
御値の第1番目の制御値に応答して導電モードまたは非
導電モードのいずれか一方にある第1スイッチ回路;
(EWSビット72またはNSSビット74;表2.1
0)および第1ポートと第2記憶回路との間に結合され
た第1タップ回路(40.1または40.4)であっ
て、複数の制御値の第2番目の制御値に応答して導電モ
ードまたは非導電モードのいずれかにある第1タップ回
路;(セクション3.8.1参照;NTビット70また
はWTビット64;表2.10)によって構成されるこ
とを特徴とするデータ・プロセッサ(10)。 【請求項2】 第1スイッチ回路が導電モードにあると
きに、第1スイッチ回路が第1ポートを第2ポートに結
合する請求項1記載のデータ・プロセッサ。 【請求項3】 第1スイッチ回路が非導電モードにある
ときには、第1ポートが第2ポートに結合されない請求
項1記載のデータ・プロセッサ。 【請求項4】 第1記憶回路に結合されたインターフェ
ース手段であって、複数の制御値をダイナミックに修正
することのできるソフトウェア・プログラムに応答して
複数の制御値を第1記憶回路に転送するインターフェー
ス手段;(2つのケース:1)外部ソフトウェア・プロ
グラム:「インターフェース手段」は、バス13+ポー
ト論理28,30,32または34+ポート・ピン4
4,46,48または50+インターフェース論理62
に対応する;2)内部ソフトウェア・プログラム:「イ
ンターフェース手段」はバス13(命令キャッシュ20
から制御レジスタ24への経路;図18,図75,図1
6))に対応する;によってさらに構成される請求項1
記載のデータ・プロセッサ。 【請求項5】 データ・プロセッサの内部にあり、ソフ
トウェア・プログラムを記憶することのできる命令記憶
回路(命令キャッシュ20)であって、インターフェー
ス手段に結合された命令記憶回路(命令キャッシュ−ソ
フトウェア・プログラム;図75);によってさらに構
成される請求項4記載のデータ・プロセッサ。 【請求項6】 データ・プロセッサの外部にあり、ソフ
トウェア・プログラムを記憶することのできるメモリ回
路(56,58または60(あるいはCPUがオンボー
ド・メモリを有する場合は54))であって、インター
フェース手段に結合されたメモリ回路;(ホスト初期
化;図6)によってさらに構成される請求項4記載のデ
ータ・プロセッサ。 【請求項7】 複数の制御値のそれぞれの論理値を決定
するリセット回路(15)であって、第1記憶回路に結
合されて、複数の制御値のそれぞれの論理値を設けるリ
セット回路;(システム・リセット;図75)によって
さらに構成される請求項1記載のデータ・プロセッサ。 【請求項8】 第1タップ回路が導電モードにあるとき
に、第1タップ回路が第1ポートを第2記憶回路に結合
する請求項1記載のデータ・プロセッサ(図132)。 【請求項9】 第1タップ回路が非導電モードにあると
きに、第1タップ回路は第1ポートを第2記憶回路に結
合しない請求項1記載のデータ・プロセッサ(図13
2)。 【請求項10】 第2ポートと第2記憶回路との間に結
合された第2タップ回路(40.2または40.3)で
あって、複数の制御ビットの第3ビット(STビット6
6またはETビット68;表2.10)に応答して導電
モードまたは非道電モードのいずれかになる第2タップ
回路;によってさらに構成される請求項1記載のデータ
・プロセッサ。 【請求項11】 第2タップ回路が導電モードにあると
きに、第2タップ回路が第2ポートを第2記憶回路に結
合する請求項10記載のデータ・プロセッサ(図13
2)。 【請求項12】 第2タップ回路が非導電モードにある
ときに、第2タップ回路は第2ポートを第2記憶回路に
結合しない請求項10記載のデータ・プロセッサ(図1
32)。 【請求項13】 第3ポート;(ノース・ポート44ま
たはウェスト・ポート50,このうち1つが第1ポート
で、もう一方が第3ポート) 第4ポート;(サウス・ポート48またはイースト・ポ
ート46,このうち1つが第2ポートで、もう一方が第
4ポート) 第3ポートと第4ポートとの間に結合された第2スイッ
チ回路(42.1または42.2;このうち1つが第1
スイッチで、もう一方が第2スイッチ)であって、複数
の制御値の第4番目の制御値(EWSビット72または
NSSビット74,このうち1つが第1制御値で、もう
一方が第4制御値)に応答して導電モードまたは非導電
モードのいずれかになる第2スイッチ回路;第3ポート
と第2記憶回路との間に結合された第3タップ回路(4
0.1または40.4)であって、複数の制御値の第5
番目の制御値(NTビット70またはWTビット64)
に応答して導電モードまたは非導電モードのいずれかに
なる第3タップ回路;および第4ポートと第2記憶回路
との間に結合された第4タップ回路(40.2または4
0.3)であって、複数の制御値の第6番目の制御値
(STビット66またはETビット68;表2.10)
に応答して導電モードまたは非導電モードのいずれかに
なる第4タップ回路;(図132,図26,表2.1
0)によってさらに構成される請求項10記載のデータ
・プロセッサ。 【請求項14】 第1記憶回路がプログラミング可能な
制御レジスタである請求項1記載のデータ・プロセッ
サ。(PCR;図26,表2.10) 【請求項15】 デジタル・データを通信する第1ポー
ト(ノースまたはウェスト);デジタル・データを通信
する第2ポート(サウスまたはイースト);制御値を記
憶する第1記憶回路(PCR);第2記憶回路(ID
R);第1ポートと第2ポートとの間に結合された第1
スイッチ回路(42.1または42.2)であって、制
御値の第1部分(EWSビット72またはNSSビット
74)に応答して導電モードおよび非導電モードのうち
の1つになる第1スイッチ回路;および第1ポートと第
2記憶回路の間に結合された第1タップ回路(40.1
または40.4)であって、制御値の第2部分(NTビ
ット70またはWTビット64)に応答して導電モード
および非導電モードのうちの1つになる第1タップ回
路;によって構成されることを特徴とするデータ・プロ
セッサ。(図132) 【請求項16】 第1スイッチ回路が導電モードにある
ときに、デジタル・データが第1ポートと第2ポートと
の間で転送される請求項15記載のデータ・プロセッ
サ。(図132) 【請求項17】 第1スイッチ回路が非導電モードにあ
るときに、デジタル・データは第1ポートと第2ポート
との間で転送されない請求項15記載のデータ・プロセ
ッサ。(図132) 【請求項18】 第1タップ回路が導電モードにあると
きに、デジタル・データが第1ポートから第2記憶回路
に転送され、第2記憶回路がデジタル・データを記憶す
る請求項15記載のデータ・プロセッサ。(図132) 【請求項19】 第1タップ回路が非導電モードにある
ときに、デジタル・データは第1ポートから第2ポート
へ転送されない請求項15記載のデータ・プロセッサ。
(図132) 【請求項20】 ソフトウェア・プログラムに応答して
制御値が第1記憶回路に与えられる請求項15記載のデ
ータ・プロセッサ。(図16,図75,セクション3.
4) 【請求項21】 データ・プロセッサの内部にあり、ソ
フトウェア・プログラムを記憶することのできる命令記
憶回路(命令キャッシュ20);によってさらに構成さ
れる請求項15記載のデータ・プロセッサ。(図75) 【請求項22】 データ・プロセッサの外部にあり、初
期化プログラムを記憶することのできるメモリ(56,
58または60);によってさらに構成される請求項2
1記載のデータ・プロセッサ。(図16) 【請求項23】 制御値の論理値を決定するリセット回
路(15)であって、第1記憶回路に結合されて制御値
の論理値を設けるリセット回路;によってさらに構成さ
れる請求項15記載のデータ・プロセッサ。(図75,
図26) 【請求項24】 第2ポートと第2記憶回路との間に結
合されて、制御値の第3部分(STビット66またはE
Tビット68)に応答して、導電モードおよび非導電モ
ードのいずれか一方になる第2タップ回路;によってさ
らに構成される請求項15記載のデータ・プロセッサ。
(図132,図26,表2.10) 【請求項25】 デジタル・データを通信する第3ポー
ト(ノース・ポート・ピン44またはウェスト・ポート
・ピン50);デジタル・データを通信する第4ポート
(サウス・ポート・ピン48またはイースト・ポート・
ピン46);第3ポートと第4ポートとの間に結合され
た第2スイッチ回路(42.1または42.2)であっ
て、制御値の第4部分(EWSビット72またはNSS
ビット74)に応答して、導電モードおよび非導電モー
ドのいずれか一方になる第2スイッチ回路;第3ポート
と第2記憶回路との間に結合された第3タップ回路(4
0.1または40.4)であって、制御値の第5部分
(NTビット70またはWTビット64)に応答して、
導電モードおよび非導電モードのいずれか一方になる第
3タップ回路;および第4ポートと第2記憶回路との間
に結合された第4タップ回路(40f.2または40.
3)であって、制御値の第6部分(STビット66また
はETビット68)に応答して、導電モードおよび非導
電モードのいずれか一方になる第4タップ回路;によっ
てさらに構成される請求項24記載のデータ・プロセッ
サ。(図132,図26,表2.10) 【請求項26】 データ・プロセッサが第1動作モード
(ストップ)および第2動作モード(ラン)で通信する
ことを可能にするモード選択手段(ラン/ストップ・ピ
ン80)であって:データ・プロセッサが第1動作モー
ドにいるときには、外部プロセッサ(54)が第1ポー
ト(ノースまたはウェスト)と第2ポート(サウスまた
はイースト)とを共に用いて、複数の制御値(PCRビ
ット)を用いずに第1記憶回路にアクセスし;さらにデ
ータ・プロセッサが第2動作モードにいるときには、デ
ータ・プロセッサは、第1記憶回路に記憶されている複
数の制御値に応答してデジタル情報を選択的に通信する
ことができ、この複数の制御値は第1ポートおよび第2
ポートが独立してデジタル・データを通信できるように
選択的にイネーブルにするモード選択手段;によってさ
らに構成される請求項15記載のデータ・プロセッサ。
(R/Sピン:ラン/ストップ・モード;図18,図2
6,表2.2、表2.10) 【請求項27】 第1スイッチ回路が導電モードにいる
ときに第1ポートと第2ポートとの間で転送されたデジ
タル・データを保持する保持レジスタ(EWHR92ま
たはNSHR90);によってさらに構成される請求項
15記載のデータ・プロセッサ。(NSHR,EWHR
レジスタ;図41,図42,表2.16,表2.17) 【請求項28】 データ・プロセッサ内でデジタル・デ
ータを通信する方法であって:デジタル・データを通信
する第1ポート(ノース44またはウェスト50)を設
ける段階;デジタル・データを通信する第2ポート(サ
ウス48またはイースト46)を設ける段階;制御値を
記憶する第1記憶回路(PCR54)を設ける段階;デ
ジタル・データを記憶することのできる第2記憶回路
(IDR18)を設ける段階;第1ポートと第2ポート
との間に第1スイッチ回路(42.1または42.2)
を結合する段階;制御値の第1部分(EWSビット72
またはNSSビット74)に応答して第1スイッチ回路
の導電モードおよび非導電モードのいずれか1つを選択
する段階;第1ポートと第2記憶回路との間に第1タッ
プ回路(40.1または40.4)を結合する段階;お
よび制御値の第2部分(NTビット70またはWTビッ
ト64)に応答して第1タップ回路の導電モードおよび
非導電モードのいずれか1つを選択する段階;によって
構成されることを特徴とする方法。(図132,図2
6、表2.10) 【請求項29】 第1スイッチ回路の導電モードおよび
非導電モードのいずれか1つを選択する段階が:制御値
の第1部分が第1値(論理1)を有するときに、第1ポ
ートと第2ポートとの間でデジタル・データを転送する
段階;および制御値の第1部分が第2値(論理0)を有
するときに、第1ポートと第2ポートとの間のデジタル
・データの転送を阻止する段階;によってさらに構成さ
れる請求項28記載の方法。(図132,図26,表
2.10) 【請求項30】 第1タップ回路の導電モードおよび非
導電モードのいずれか1つを選択する段階が:制御値の
第2部分が第1値(論理1)を有するときに、第1ポー
トと第2記憶回路との間でデジタル・データを転送する
段階;および制御値の第2部分が第2値(論理0)を有
するときに、第1ポートと第2記憶回路との間のデジタ
ル・データの転送を阻止する段階;によってさらに構成
される請求項28記載の方法。(図132,図26,表
2.10) 【請求項31】 ソフトウェア・プログラムが第1記憶
回路に制御値を与えることができるようにする段階(内
部ソフトウェア・プログラム(図75)は命令キャッシ
ュ20内にあり、外部ソフトウェア・プログラム(図1
6)は54,56,58または60のどれかにある);
によってさらに構成される請求項28記載の方法。 【請求項32】 データ・プロセッサが命令を実行して
いる間に、ソフトウェア・プログラムが制御値をダイナ
ミックに修正することができるようにする段階(仕様書
追加テキスト);によってさらに構成される請求項31
記載の方法。 【請求項33】 データ・プロセッサの内部にある命令
記憶回路(20)内にソフトウェア・プログラムを選択
的に記憶する段階;によってさらに構成される請求項3
1記載の方法。(図75) 【請求項34】 データ・プロセッサの外部にあるメモ
リ(54,56,58,60)にソフトウェア・プログ
ラムを選択的に記憶する段階;によってさらに構成され
る請求項33記載の方法。(図16) 【請求項35】 リセット回路(15)が制御値を第1
記憶回路に与えることができるようにする段階;によっ
てさらに構成される請求項28記載の方法。(図75) 【請求項36】 第2ポートと第2記憶回路との間に第
2タップ回路(40.2または40.3)を結合する段
階;および制御値の第3部分(ETビット68またはS
Tビット66)に応答して導電モードおよび非導電モー
ドのいずれか1つを選択する段階;によってさらに構成
される請求項28記載の方法。(図132,図26,表
2.10) 【請求項37】 第2タップ回路のモードを決定する段
階が:制御値の第3部分が第1値(論理1)を有すると
きに第2ポートから第2記憶回路にデジタル・データを
転送する段階;および制御値の第3部分が第2値(論理
0)を有するときに第2ポートと第2記憶回路との間の
デジタル・データの転送を阻止する段階;によってさら
に構成される請求項36記載の方法。(図132,図2
6,表2.10) 【請求項38】 デジタル・データを通信する第3ポー
ト(ノース・ポート44またはウェスト・ポート50)
を設ける段階;デジタル・データを通信する第4ポート
(サウス・ポート48またはイースト・ポート46)を
設ける段階;第3ポートと第4ポートとの間に第2スイ
ッチ回路(42.1または42.2)を結合する段階;
制御値の第4部分(EWSビット72またはNSSビッ
ト74)に応答して第2スイッチ回路の導電モードおよ
び非導電モードのいずれか1つを選択する段階;第3ポ
ートと第2記憶回路との間に第3タップ回路(40.1
または40.4)を結合する段階;制御値の第5部分
(NTビット70またはWTビット64)に応答して第
3タップ回路の導電モードおよび非導電モードのいずれ
か1つを選択する段階;第4ポートと第2記憶回路との
間に第4タップ回路(40.2または40.3)を結合
する段階;および制御値の第6部分(ETビット68ま
たはSTビット66)に応答して第4タップ回路の導電
モードおよび非導電モードのいずれか1つを選択する段
階;によってさらに構成される請求項37記載の方法。
(図132,図26,表2.10) 【請求項39】 データ処理システム(57)であっ
て:複数のデータ・プロセッサのそれぞれが:デジタル
・データを通信する複数のポート(44,46,48,
59);制御値を記憶する第1記憶回路(PCR5
2);第2記憶回路(IDR18);複数のスイッチ回
路(42.1,42.2)であって、複数のスイッチ回
路のそれぞれが複数のポートのうちの2つのポートの間
に結合され、それぞれが制御値の第1部分に応答して導
電モードおよび非導電モードのいずれかにあるスイッチ
回路;複数のタップ回路(40.1,40.2,40.
3,40.4)であって、複数のタップ回路のそれぞれ
が複数のポートのうち所定の1つと第2記憶回路との間
に結合され、それぞれが制御値の第2部分(WTビット
64,STビット66,ETビット68,NTビット7
0)に応答して導電モードおよび非導電モードのいずれ
かにあるタップ回路;によって構成される複数のデータ
・プロセッサ;および複数のデータ・プロセッサの第1
番目のデータ・プロセッサの複数のポートの1つを、複
数のデータ・プロセッサの第2番目のデータ・プロセッ
サの複数のポートの1つに結合して、複数のデータ・プ
ロセッサの第1番目(10.0)と複数のデータ・プロ
セッサの第2番目(10.2または10.1)との間で
デジタル・データを選択的に通信する第1導体(61,
63);によって構成されることを特徴とするデータ処
理システム(57)。(図16,図3.65,図13
2,図26,表2.10) 【請求項41】 複数のタップ回路のいずれか1つが導
電モードにあるときに、複数のデータ・プロセッサの1
つの第2記憶回路にデジタル・データが転送され、この
デジタル・データは複数のポートのうち、対応する所定
の1つに受信される請求項39記載のデータ処理システ
ム。(図26,図3.65,図132,図27,表2.
10) 【請求項42】 複数のスイッチ回路が:複数のポート
の第1番目のポート(ノース44)と複数のポートの第
2番目のポート(サウス48)との間に結合された第1
スイッチ回路(42.1)であって、制御の第1部分
(NSSビット74)に応答して導電モードおよび非導
電モードのいずれかにある第1スイッチ回路;および複
数のポートの第3番目のポート(ウェスト50)と複数
のポートの第4番目のポート(イースト46)との間に
結合された第2スイッチ回路(42.2)であって、制
御値の第2部分(EWSビット72)に応答して導電モ
ードおよび非導電モードのいずれかにある第2スイッチ
回路;によって構成される請求項39記載のデータ処理
システム。(図132,図26,表2.10) 【請求項43】 複数のタップ回路が:複数のポートの
うちの第1ポートと第2記憶回路との間に結合された第
1タップ回路(40.1)であって、制御値の第3部分
(NTビット70)に応答して非導電モードおよび導電
モードのいずれかにある第1タップ回路;複数のポート
のうちの第2ポートと第2記憶回路との間に結合された
第2タップ回路(40.3)であって、制御値の第4部
分(STビット66)に応答して非導電モードおよび導
電モードのいずれかにある第2タップ回路;複数のポー
トのうちの第3ポートと第2記憶回路との間に結合され
た第3タップ回路(40.4)であって、制御値の第5
部分(WTビット64)に応答して非導電モードおよび
導電モードのいずれかにある第3タップ回路;および複
数のポートのうちの第4ポートと第2記憶回路との間に
結合された第4タップ回路(40.2)であって、制御
値の第6部分(ETビット68)に応答して非導電モー
ドおよび導電モードのいずれかにある第4タップ回路;
によって構成される請求項42記載のデータ処理システ
ム。(図132,図26,表2.10) 【請求項44】 複数のデータ・プロセッサのそれぞれ
が、複数の行および複数の列に配列されている請求項3
9記載のデータ処理システム。(図16) 【請求項45】 複数のデータ・プロセッサが少なくと
も1行に配列されている請求項39記載のデータ処理シ
ステム。(図16) 【請求項46】 複数のデータ・プロセッサが少なくと
も1列に配列されている請求項39記載のデータ処理シ
ステム。(図16) 【請求項47】 第1ポート;(ノース/ウェスト) 第2ポート;(サウス/イースト) 複数の制御値を記憶する第1記憶回路;(PCR−セク
ション1.1〜1.3) 第2記憶回路;(IDR)および第1ポートと第2ポー
トとの間に結合された第1スイッチ回路であって、複数
の制御値の第1番目の制御値に応答して導電モードまた
は非導電モードのいずれかにある第1スイッチ回路;に
よって構成されることを特徴とするデータ・プロセッ
サ。(請求項48ないし93は、開示SC-01702A :アソ
シエーション・エンジン4ポート・アーキテクチャに関
する) 【請求項48】 デジタル情報を通信する第1ポート;
(ノース(28)/ウェスト(34)) デジタル情報を通信する第2ポート;(サウス(30)
/イースト(32);図1702.1) データ・プロセッサがデジタル情報を通信できるように
するイネーブル手段(43,37,52)であって、第
1ポートおよび第2ポートに結合されてデジタル情報の
通信を可能にするイネーブル手段;(ラン:スイッチ/
タップ(41,52)、ストップ:行および列選択(4
3,37);図18,図1702.1)内部メモリ記憶
回路(IDR18)であって、複数のデータ値のそれぞ
れが対応するアドレス・ロケーションを有する複数のデ
ータ値を記憶し、第1ポートおよび第2ポートの両方に
結合されている内部メモリ記憶回路;(IDR;図7
5,図1702.1)およびデータ・プロセッサが第1
動作モードおよび第2動作モードのどちらかで通信する
ことを可能にするモード選択手段(R/Sピン80)で
あって:データ・プロセッサが第1動作モード(ストッ
プ・モード:図1702.2)にいるときには外部プロ
セッサ(CPU54:図16)が第1ポートと第2ポー
トを共に利用して内部メモリ記憶回路の複数のデータ値
の1つにアクセスし;(図18,表2.2,図170
2.1,残りのピン37内) データ・プロセッサが第2動作モード(ラン・モード:
図1702.3)にいるときには、第1ポートおよび第
2ポートでデジタル情報が独立して通信されるモード選
択手段(R/Sピン);によって構成されることを特徴
とするデータ・プロセッサ(10)。 【請求項49】 第1動作モードによりデータ・プロセ
ッサがホスト集積回路とのみ情報を通信することがで
き、第2動作モードによりデータ・プロセッサはホスト
集積回路および非ホスト集積回路と選択的に情報を通信
することができる請求項48記載のデータ・プロセッ
サ。(ストップ/ラン;セクション3.5,図170
2.2ないし図1702.6) 【請求項50】 モード選択手段が、外部からアクセス
可能な第1集積回路ピンによって構成される請求項48
記載のデータ・プロセッサ。(R/S;図18,図17
02.1) 【請求項51】 イネーブル手段が:複数の制御値を記
憶する制御記憶回路(PCR52)であって、第1ポー
トおよび第2ポートの両方に結合されている制御記憶回
路;によって構成される請求項48記載のデータ・プロ
セッサ。(ラン;図1702.1) 【請求項52】 複数の制御値によりデータ・プロセッ
サがデジタル情報を内部メモリ記憶回路に選択的に記憶
することができ、データ・プロセッサが第2動作モード
(ラン)にいるときには第1ポートと第2ポートとの間
でデジタル情報を選択的に通信することができる請求項
51記載のデータ・プロセッサ。 【請求項53】 イネーブル手段が、外部からアクセス
可能な第2集積回路ピンによって構成される請求項48
記載のデータ・プロセッサ。(行(82)または列選択
(84);図1702.1,図18) (***残りのピン37:行選択ピン82,列選択ピン
84およびR/Sピン80を含む) 【請求項54】 第1アクセス・モード(ランダム)お
よび第2アクセス・モード(ストリーム)のうち1つを
選択するアクセス・モード選択手段(OPピン94)で
あって、第1および第2アクセス・モードは、第1動作
モード(ストップ)の間に選択的に用いられ:第1アク
セス・モードは、第1ポートに与えられた第1アドレス
値に応答して、データ・プロセッサが内部メモリ記憶回
路にアクセスすることを可能にし(ランダム);さらに
第2アクセス・モードは、第1メモリ記憶回路に記憶さ
れたオフセット値(OAR)を用いて生成される第2ア
ドレス値に応答して、データ・プロセッサが内部メモリ
記憶回路にアクセスすることを可能にするアクセス・モ
ード手段:((ストリーム)/図18,図1702.
1、図43)によってさらに構成される請求項48記載
のデータ・プロセッサ。ストップ・モードの動作の2つ
のアクセス・モード..注記:ストップ・モードにおい
ては、IDR以外にもホストがアクセスすることのでき
るレジスタがある(表2.16参照)。 【請求項55】 アクセス・モード選択手段が、外部か
らアクセス可能な第3集積回路ピン(OPピン94;図
18)によって構成される請求項54記載のデータ・プ
ロセッサ。 【請求項56】 第2アクセス・モードにより、データ
・プロセッサが内部メモリ記憶回路内の複数の昇順アド
レスにアクセスすることができ、このとき第2アドレス
値が複数の昇順アドレスの第1番目を示す請求項54記
載のデータ・プロセッサ。(ストリーム) 【請求項57】 アドレス・ロケーションの数を示すカ
ウント値を記憶する第4メモリ記憶回路(DCR)/
(ストリーム)/DCR1 97;図44);によって
さらに構成される請求項56記載のデータ・プロセッ
サ。 【請求項58】 遅延値を記憶する第5メモリ記憶回路
であって、この遅延値は第2アクセス・モードで動作中
に内部メモリ記憶回路がアクセスされた時刻を示す第5
メモリ記憶回路(HSORレジスタ);によってさらに
構成される請求項54記載のデータ・プロセッサ。 【請求項59】 デジタル情報を通信する第3ポート;
(ウェスト(34)デジタル情報を通信する第4ポー
ト;(イースト)および複数の制御値を記憶する制御レ
ジスタ(PCR52)であって、複数の制御値によりデ
ータ・プロセッサは選択的に第2動作モード(ラン・モ
ード)でデジタル情報を通信することができる制御レジ
スタ;(スイッチおよびタップ・レジスタ):(実際の
実行例;図1702.1)によってさらに構成される請
求項48記載のデータ・プロセッサ。 【請求項60】 第1,第2,第3および第4ポートに
結合されて、第1,第2,第3および第4ポートのそれ
ぞれと通信されている情報が有効であるか否かを判定す
る有効性検出手段(XCIピン75,87,89,95
およびSCOピン73,79,85,93)(XCI:
NCI(75),SCI(89),WCI(95),E
CI(81);XCO:NCO(73),SCO(8
5),WCO(93),ECO(79);図1702.
1,図18);によってさらに構成される請求項59記
載のデータ・プロセッサ。 【請求項61】 データ・プロセッサが第1動作モード
にいるときには、外部アドレス値が第1ポート(ノース
28)および第3ポート(ウェスト34)の両方で受信
され、外部アドレス値が内部メモリ記憶回路にアクセス
する請求項59記載のデータ・プロセッサ。(ストッ
プ:ランダム;図1702.2,図1702.1) 【請求項62】 外部アドレス・ロケーションの最下位
部分が第1ポート(ノース28)に与えられ、外部アド
レス値の最上位部分が第3ポート(ウェスト・ポート3
4)に与えられる請求項61記載のデータ・プロセッ
サ。(ストップ:図1702.2) 【請求項63】 外部アドレス値が第1ポートおよび第
3ポートの両方に受信されたことに応答して、内部メモ
リ記憶回路がその中に記憶されている複数のデータ値の
1つを設けて第2ポートから出力させる請求項61記載
のデータ・プロセッサ。(ストップ−リード/図170
2.2,図1702.1) 【請求項64】 外部アドレス値が第1ポートおよび第
3ポートの両方に受信されたことに応答して、複数のデ
ータ値の1つが第2ポートに入力される請求項61記載
のデータ・プロセッサ。(ストップ−ライト;図170
2.2,図1702.1) 【請求項65】 データ・プロセッサが第1動作モード
にいるときに、外部アドレス値がホスト・データ・プロ
セッサにより設けられる請求項61記載のデータ・プロ
セッサ。(ストップ:ランダム;図1702.4) 【請求項66】 データ・プロセッサが第2動作モード
にいるときに、複数の制御値の第1番目の制御値(NS
Sビット74)に応答して、デジタル情報が第1ポート
(ノース)と第2ポート(サウス)との間で選択的に通
信される請求項59記載のデータ・プロセッサ。(ラ
ン;図1702.3,図132,図26,表2.10) 【請求項67】 データ・プロセッサが第2動作モード
にいるときに、複数の制御値の第2番目の制御値(EW
Sビット72)に応答して、デジタル情報が第3ポート
(ウェスト)と第4ポート(イースト)との間で選択的
に通信される請求項59記載のデータ・プロセッサ。
(ラン;図1702.3,図132,図26,表2.1
0) 【請求項68】 データ・プロセッサが第2動作モード
にいるときに、複数の制御値の第4番目の制御値(4つ
のタップ・ビットのうちの1つ)に応答して、第1,第
2,第3および第4ポートの1つから受信されたデジタ
ル情報が内部メモリ記憶回路に選択的に記憶される請求
項59記載のデータ・プロセッサ。(ラン;図132,
図26,表2.10) 【請求項69】 データ・プロセッサが第1動作モード
にいるときに、デジタル情報が第1ポートと第2ポート
との間で修正されずに通信され、データ・プロセッサは
デジタル情報を通信することができない請求項48記載
のデータ・プロセッサ。(ストップ:選択された行また
は列で、両方ではない;図1702.4−薄くシェード
をつけたAE,10.21,10.25,10.33,
10.28,10.30,10.31) 【請求項70】 データ・プロセッサがデジタル情報を
通信することができる状態で、データ・プロセッサが第
1動作モードにいるときに、第1ポートに与えられたデ
ジタル情報を用いて内部メモリ記憶回路の複数のデジタ
ル・データ値の1つにアクセスする請求項48記載のデ
ータ・プロセッサ。(ストップ:行と列の両方が選択さ
れている;図1702.4−濃いシェードをつけたA
E,10.29) 【請求項71】 データ・プロセッサ内でデジタル・デ
ータを通信する方法であって:データ・プロセッサがデ
ジタル・データを通信できるように選択的にイネーブル
にする段階;(ストップ・モード:行および列選択信号
を用いる;ラン・モード:PCR52のスイッチ制御ビ
ットを用いる) デジタル・データを通信する第1ポート(ノース28)
を設ける段階;デジタル・データを通信する第2ポート
(サウス30)を設ける段階;第1および第2ポートの
動作モード(ストップまたはラン)を選択的に決定する
段階であって、第1動作モード(ストップ)は第1ポー
トと第2ポートの両方がホスト集積回路(54.2)の
みとデジタル・データを通信することができるように
し、第2動作モード(ラン)は第1ポートと第2ポート
の両方がホスト集積回路および非ホスト集積回路の両方
とデジタル・データを通信することができるようにする
段階;(図1702.4,図1702.5,図16,図
1702.6);によって構成されることを特徴とする
方法。 注記:ストップ・モードでは、イネーブルになったAE
またはホストだけがデータのソースまたは最終的なデス
ティネーションとなることができるが、他のAEはその
スイッチが適切な状態(すなわち導電状態)になってい
れば、データを修正せずに通過させることができる。 【請求項72】 データ・プロセッサの外部からアクセ
ス可能なモード選択集積回路ピン(R/Sピン80:図
18)の論理値に応答して、動作モードが決定される請
求項71記載の方法。 【請求項73】 データ・プロセッサを選択的にイネー
ブルにする段階が:データ・プロセッサが第1動作モー
ド(ストップ)にいるときに、データ・プロセッサが、
ホスト集積回路に対してデジタル・データを通信するこ
とができるようにするイネーブル信号を外部から与える
段階;(行/列選択;図1702.4、図1702.
5)およびデータ・プロセッサが第2動作モードにいる
ときに、データ・プロセッサがデジタル・データをホス
ト集積回路および非ホスト集積回路に通信することがで
きるようにする内部イネーブル回路(41または43)
を設ける段階;(スイッチ/タップ;図1702.1)
によってさらに構成される請求項71記載の方法。 【請求項74】 イネーブル信号が、データ・プロセッ
サのチップ・イネーブル集積回路ピンによって構成され
る請求項73記載の方法。(行(82)または列(8
4)選択;図18) 【請求項75】 内部イネーブル回路が:複数の制御値
を記憶するデータ・プロセッサ内部の第1記憶回路(P
CR52)であって、複数の制御値の一部により、デー
タ・プロセッサが第2動作モードにいるときに、データ
・プロセッサの第1および第2ポートがデジタル・デー
タを通信することが可能になる第1記憶回路;によって
構成される請求項73記載の方法。(ラン−スイッチお
よびタップ;図1702.1) 【請求項76】 インターフェース回路(バス13,お
よびポートの場合もある)を第1記憶回路に結合する段
階であって、インターフェース回路は、ソフトウェア・
プログラムに応答して複数の制御値を第1記憶回路に転
送する段階;によってさらに構成される請求項75記載
の方法。(ラン,図75) 【請求項77】 第2記憶回路(IDR18)を第1ポ
ートおよび第2ポートに結合する段階であって、第2記
憶回路は、複数のデータ値のそれぞれが対応するアドレ
ス・ロケーションを有する複数のデータ値を記憶する段
階;によってさらに構成される請求項75記載の方法。
(ランおよびストップ・モード−IDR;図1702.
1) 【請求項78】 デジタル・データを通信する第3ポー
トを設ける段階;およびデータ・プロセッサが第1動作
モード(ストップ)の第1アクセス・モード(ランダ
ム)にいるときに、ホスト・プロセッサがデータ・プロ
セッサの第1ポートおよび第3ポートの両方に外部アド
レス値を与えることができるようにする段階;によって
さらに構成される請求項77記載の方法。(ストップ−
ランダム;図1702.4) 【請求項79】 外部アドレス値に応答して、第2記憶
回路(IDR18)の複数のデータ値の対応する1つの
値にアクセスする段階;データ・プロセッサがデジタル
情報を通信できる状態のときに、データ・プロセッサの
第2ポート(サウス30)が複数のデータ値の対応する
1つを設けられるようにする段階;およびデータ・プロ
セッサがデジタル情報を通信できない状態のときに、デ
ータ・プロセッサの第2ポートがデジタル情報値を設け
られるようにする段階;によってさらに構成される請求
項77記載の方法。(ストップ−ランダム;受信したデ
ジタル情報値をそのまま伝える) 【請求項80】 第1動作モードの第2アクセス・モー
ドの間に、データ・プロセッサのアクセスされる部分を
示す第3記憶回路(HSSR100)を設ける段階;に
よってさらに構成される請求項71記載の方法。(論理
空間,表2.13,表2.14;図37,図1702.
5) 【請求項81】 ホスト・データ・プロセッサ(5
4);(図16)および複数のデータ・プロセッサ(1
0.15,10.16,10.17,10.18)であ
って、その複数のデータ・プロセッサのそれぞれが:デ
ータ・プロセッサがデジタル情報を通信できるようにす
るイネーブル手段;デジタル情報を通信する第1ポート
(28);デジタル情報を通信する第2ポート(3
0);デジタル情報を通信する第3ポート(34);デ
ジタル情報を通信する第4ポート(32);内部メモリ
記憶回路(IDR18)であって、複数のデータ値のそ
れぞれが対応するアドレス・ロケーションを有する複数
のデータ値を記憶し、第1,第2,第3および第4ポー
トのそれぞれに結合されている内部メモリ記憶回路;
(図1702.1)およびデータ・プロセッサが、第1
動作モードおよび第2動作モードのいずれかにおいて通
信できるようにするモード選択手段(R/Sピン80)
であって:データ・プロセッサが第1動作モードにいる
ときには、ホスト・データ・プロセッサ(54)は第1
ポートと第2ポートとを共に利用して、内部メモリ記憶
回路の複数のデータ値の1つにアクセスし;(図170
2.1,図1702.2) データ・プロセッサが第2動作モード(ラン)にいると
きには、第1,第2,第3および第4ポートのそれぞれ
により独立してデジタル情報を通信して、第1,第2,
第3および第4ポートのそれぞれはイネーブル手段によ
り設けられた複数の制御値に応答して通信するモード選
択手段;(図1702.3,図1702.1)によって
構成される複数のデータ・プロセッサ;によって構成さ
れることを特徴とするデータ処理システム。 【請求項82】 複数のデータ・プロセッサのそれぞれ
のモード選択手段が、外部からアクセス可能な第1集積
回路ピン(R/Sピン80:図18)によって構成され
る請求項81記載のデータ処理システム。 【請求項83】 複数のデータ・プロセッサ(図9の1
0.68,10.69,図15の10.70,10.7
1)が行および列のどちらかに配列されている請求項8
1記載のデータ処理システム。 【請求項84】 複数のデータ・プロセッサ(10.0
ないし10.9)が複数の行および複数の列に配列され
ている請求項81記載のデータ処理システム。(図1
6) 【請求項85】 複数のデータ・プロセッサのそれぞれ
のイネーブル手段が、少なくとも、行選択集積回路ピン
(82)および列選択集積回路ピン(84)のいずれか
一方によって構成され、行選択集積回路ピンも列選択集
積回路ピンも外部からアクセスが可能である請求項81
記載のデータ処理システム。(行および列選択;図1
8) 【請求項86】 イネーブル手段が:複数の制御値を記
憶する制御記憶回路(PCR52)であって、第1,第
2,第3および第4ポートのそれぞれに結合される制御
記憶回路;によって構成される請求項81記載のデータ
処理システム。(図1702.1) 【請求項87】 それぞれのデータ・プロセッサが第2
動作モードにいるときに、複数の制御値が、それぞれの
データ・プロセッサがそれぞれの内部メモリ記憶回路
(IDR18)内のデジタル情報を選択的に記憶できる
ようにして、複数のデータ・プロセッサ(10.52な
いし10.67)の隣接するデータ・プロセッサおよび
ホスト・データ・プロセッサ(54.3)とデジタル情
報を選択的に通信できるようにする請求項86記載のデ
ータ処理システム。(ラン;図1702.6) 【請求項88】 複数のデータ・プロセッサのそれぞれ
が:第1アクセス・モードおよび第2アクセス・モード
のいずれか1つを選択するアクセス・モード選択手段
(OPピン94)であって、第1および第2アクセス・
モードは第1動作モード(ストップ)の間に選択的に用
いられるアクセス・モード選択手段であって:第1アク
セス・モード(ランダム)により、データ・プロセッサ
は、第1ポート(ノース28)に与えられた第1アドレ
ス値に応答して内部メモリ記憶回路(IDR18)にア
クセスすることができ;第2アクセス・モード(ストリ
ーム)により、データ・プロセッサは、第1記憶ロケー
ション(OAR96−図43)に記憶されたオフセット
値を用いて生成された第2アドレス値に応答して、内部
メモリにアクセスすることができるアクセス・モード選
択手段;によってさらに構成される請求項81記載のデ
ータ処理システム。(ストップ:ランダム/ストリー
ム) 【請求項89】 第2アクセス・モード(ランダム)
は、データ・プロセッサが、内部メモリ記憶回路内の複
数の昇順アドレスにアクセスすることができるようにし
て、第2アドレス値が複数の昇順アドレスの第1番目の
アドレスを示す請求項88記載のデータ処理システム。
(ストリーム) 【請求項90】 アドレスロケーションの数を示すカウ
ント値を記憶する第4メモリ記憶回路(DCR1 9
7);によってさらに構成される請求項88記載のデー
タ処理システム。(ストリーム;図44) 【請求項91】 遅延値を記憶する第5メモリ記憶回路
であって、遅延値は、第2アクセス・モードで動作中に
内部メモリ記憶回路がアクセスされた時刻を示す第5メ
モリ記憶回路;によってさらに構成される請求項88記
載のデータ処理システム。(HSORレジスタ) 【請求項92】 データ・プロセッサが第1動作モード
にいるとき、外部アドレス値が第1ポートおよび第3ポ
ートの両方により受信されて、外部アドレス値が内部メ
モリ記憶回路にアクセスする請求項91記載のデータ処
理システム。(ストップ−図1702.2,図170
2.1) 【請求項93】 データ・プロセッサが第1動作モード
にいるとき、外部アドレス値がホスト・データ・プロセ
ッサ(54.1)により設けられる請求項91記載のデ
ータ処理システム。(ストップ−図1702.4) (請求項94ないし123は、開示SC-01740A :AEア
ーキテクチャに対応する。)(これらの請求項は、ベク
タ・エンジンとスケーラ・エンジンとを単独の集積回路
上に組み込んだAEアーキテクチャに関する。さらに、
ベクタ・エンジンとスケーラ・エンジンの両方を動作さ
せることができるシーケンサも、本開示の請求項の独自
の特色である。) 【請求項94】 ベクタ命令を実行することができるベ
クタ・エンジン(9);スケーラ命令を実行することが
できるスケーラ・エンジン(26);ベクタ・エンジン
内のベクタ命令とスケーラ・エンジン内のスケーラ命令
の両方の実行を制御するシーケンサ(22)であって、
ベクタ・エンジンに結合されてベクタ制御情報を通信
し、スケーラ・エンジンに結合されてスケーラ制御命令
を通信するシーケンサ;(マイクロシーケンサ)および
ベクタ・オペランドとスケーラ・オペランドを記憶する
ための共有メモリ回路(14)であって、ベクタ・オペ
ランドを通信するためにベクタ・エンジンに結合され、
スケーラ・オペランドを通信するためにスケーラ・エン
ジンに結合されている共有メモリ回路(CMA);によ
って構成されることを特徴とする集積回路(10)。
(図18,図78) 【請求項95】 シーケンサがベクタ命令とスケーラ命
令とを非並行的に実行する請求項94記載の集積回路。
(ベクタ命令およびスケーラ命令は並行に実行すること
はできない−−仕様書のSue の部分に説明されている) 【請求項96】 スケーラ・エンジンが:それぞれがス
ケーラ・ポインタ・アドレス値および第1スケーラ・デ
ータ値のいずれか一方を記憶する複数のスケーラ・ポイ
ンタ・レジスタ(300);(P(0)ないしP
(7),p106,REV1.4,図69)およびそれ
ぞれが第2スケーラ・データ値を記憶する複数のスケー
ラ・データ・レジスタ(302);(G(0)ないしG
(7),p106,REV.1.4,図68,図82)
によって構成される請求項94記載の集積回路。 【請求項97】 複数のスケーラ・ポインタ・レジスタ
のそれぞれに記憶されているスケーラ・ポインタ・アド
レス値が共有メモリ回路内のベクタ・オペランドのアド
レスおよび入力データ・レジスタに記憶されているスケ
ーラ値のアドレスのいずれか一方を示す請求項96記載
の集積回路。(スケーラ・ポインタ・レジスタはIDR
またはCMAのレジスタを選択するために用いられる
(セクション2.4.4.1)) 【請求項98】 共有メモリ回路内のベクタ・オペラン
ドのアドレスが、共有メモリ回路のメモリ記憶ロケーシ
ョンの列を示す請求項97記載の集積回路。(セクショ
ン2.3.50およびセクション2.4.2.1) 【請求項99】 複数のスケーラ・ポインタ・レジスタ
の1つに記憶されているスケーラ・ポインタ・アドレス
値がベクタ・エンジン内の複数の処理要素の1つを示す
請求項96記載の集積回路。(Get, Put命令−セクショ
ン2.5.19.2および2.5.19.3,表2.5
0) 【請求項100】 スケーラ・エンジンが:算術演算動
作および論理動作を実行する算術演算論理ユニット(3
04)であって、複数のスケーラ・データ・レジスタの
それぞれと、複数のスケーラ・ポインタ・レジスタのそ
れぞれと、共有メモリ回路とに結合されている算術演算
論理ユニット;によってさらに構成される請求項96記
載の集積回路。(図79,図82,図78参照) 【請求項101】 ベクタ・エンジンが:ベクタ命令を
実行する複数の処理要素(16)であって、この複数の
処理要素のそれぞれが:複数のデータ値を記憶する複数
のベクタ・レジスタ(128)であって、複数のデータ
値のそれぞれがベクタ命令の実行中に選択的に用いられ
る複数のベクタ・レジスタ;(V(0)ないしV
(7))および算術演算動作および論理動作を実行する
算術演算論理ユニット(119)であって、複数のベク
タ・レジスタのそれぞれと共有メモリ回路とに結合され
た算術演算論理ユニット;によって構成される処理要
素;によって構成される請求項94記載の集積回路。
(図79) 【請求項102】 複数の処理要素のそれぞれが共有メ
モリ回路の一部分に対応する請求項101記載の集積回
路。(図79) 【請求項103】 ベクタ・エンジンに結合され、複数
のデータ値を記憶する入力データ・レジスタ(IDR,
図78);によってさらに構成される請求項101記載
の集積回路。 【請求項104】 入力データ・レジスタがそこに記憶
された複数のデータ値のうちの少なくとも1つを、ベク
タ命令の第1および第2アクセス・モードのいずれか一
方に応答して、ベクタ・エンジンに提供する請求項10
3記載の集積回路。(IDRのスケーラ・アクセスおよ
びベクタ・アクセス,pp101−102,REV1.
4,セクション2.4.1,図78) 【請求項105】 第1アクセス・モードにより入力デ
ータ・レジスタが、複数のデータ値の1つをベクタ・エ
ンジンに提供することができ、この複数のデータ値の1
つはベクタ・エンジン内の複数の処理要素のそれぞれに
提供される請求項104記載の集積回路。(スケーラ・
アクセス;セクション2.4.1,図78) 【請求項106】 第2アクセス・モードにより入力デ
ータ・レジスタが、複数のデータ値をベクタ・エンジン
に提供することができ、複数のデータ値のそれぞれはベ
クタ・エンジンの複数の処理要素の1つに提供される請
求項104記載の集積回路。(ベクタ・アクセス;セク
ション2.4.1,図78) 【請求項107】 集積回路の内部状態情報を示す複数
の集積回路ピン(86);によってさらに構成される請
求項94記載の集積回路。(PSTAT出力ピン−−図
18) 【請求項108】 複数の集積回路ピンが、集積回路の
命令状態を集合的に示す複数のステータス信号を提供
し、この命令状態が:休止命令が実行されている状態;
ライト命令が実行されている状態;ベクタ命令が実行さ
れている状態;スケーラ命令が実行されている状態;条
件付き命令が実行されている状態;ベクタ命令およびス
ケーラ命令のいずれか一方の実行中に例外が起こってい
る状態;分岐命令により分岐動作が実行される状態;お
よび分岐命令により分岐動作が実行されない状態;のい
ずれか1つを示す請求項107記載の集積回路。(p2
0,セクション2.2.7.5;表2.3) 【請求項109】 入力集積回路ピンおよび出力集積回
路ピンのいずれか1つとしてプログラミングされている
プログラミング可能集積回路ピン(87);によってさ
らに構成される請求項94記載の集積回路。(PAピン
−−図18) (請求項110は請求項94のより詳細なものであ
る。) 【請求項110】 複数の命令を記憶する命令メモリ
(20)であって、複数の命令のそれぞれはベクタ命令
およびスケーラ命令のいずれか一方である命令メモリ;
(命令キャッシュ) ベクタ命令に応答してベクタ動作を実行することができ
るベクタ・エンジン(9);スケーラ命令に応答してス
ケーラ命令を実行することができるスケーラ・エンジン
(26);ベクタ・エンジン内のベクタ動作とスケーラ
・エンジン内のスケーラ動作の両方の実行を制御するシ
ーケンサ(22)であって、ベクタ制御情報を通信する
ためにベクタ・エンジンに結合され、スケーラ情報を通
信するためにスケーラ・エンジンに結合され、複数の命
令の第1命令を受信するために命令メモリに結合されて
いるシーケンサ(22);(マイクロシーケンサ) 複数のオペランドを記憶する共有メモリ回路(14)で
あって、複数のオペランドのそれぞれはベクタ動作およ
びスケーラ動作のいずれか一方を実行する間に用いら
れ、この共有メモリ回路は複数のオペランドの第1オペ
ランドを通信するためにベクタ・エンジンに結合され、
複数のオペランドの第2オペランドを通信するためにス
ケーラ・エンジンに結合されている共有メモリ回路;
(CMA)およびベクタ・エンジンに結合され、複数の
データ値を記憶する入力データ・レジスタ(18);
(IDR,セクション2.3.45〜2.3.47;R
EV1.4)図75によって構成されることを特徴とす
る集積回路(10)。 【請求項111】 デジタル・データを通信する第1ポ
ート(44);デジタル・データを通信する第2ポート
(48);デジタル・データを通信する第3ポート(4
6);デジタル・データを通信する第4ポート(5
0);制御値を記憶する制御レジスタ(PCR52);
第1ポートと第2ポートとの間に結合された第1スイッ
チ回路(42.1)であって、この第1スイッチ回路は
制御値の第1部分に応答して導電モードおよび非導電モ
ードのいずれか一方になり、第1スイッチが導電モード
にある場合には、デジタル・データは第1ポートと第2
ポートとの間で転送され、第1スイッチが非導電モード
にある場合は、第1ポートと第2ポートとの間にはデジ
タル・データが転送されない第1スイッチ回路;第3ポ
ートと第4ポートとの間に結合された第2スイッチ回路
(42.2)であって、この第2スイッチ回路は制御値
の第2部分に応答して導電モードおよび非導電モードの
いずれか一方になり、第2スイッチが導電モードにある
場合には、デジタル・データは第3ポートと第4ポート
との間で転送され、第2スイッチが非導電モードにある
場合は、第3ポートと第4ポートとの間にはデジタル・
データが転送されない第2スイッチ回路;第1ポートと
入力データ・レジスタとの間に結合された第1タップ回
路(40.1)であって、この第1タップ回路は制御値
の第3部分に応答して導電モードおよび非導電モードの
いずれか一方になり、第1タップが導電モードにある場
合には、デジタル・データは第1ポートから入力データ
・レジスタに転送され、第1タップが非導電モードにあ
る場合は、第1ポートから入力データ・レジスタにはデ
ジタル・データが転送されない第1タップ回路;第2ポ
ートと入力データ・レジスタとの間に結合された第2タ
ップ回路(40.3)であって、この第2タップ回路は
制御値の第4部分に応答して導電モードおよび非導電モ
ードのいずれか一方になり、第2タップが導電モードに
ある場合には、デジタル・データは第2ポートから入力
データ・レジスタに転送され、第2タップが非導電モー
ドにある場合は、第2ポートから入力データ・レジスタ
にはデジタル・データが転送されない第1タップ回路;
第3ポートと入力データ・レジスタとの間に結合された
第3タップ回路(40.2)であって、この第3タップ
回路は制御値の第5部分に応答して導電モードおよび非
導電モードのいずれか一方になり、第3タップが導電モ
ードにある場合には、デジタル・データは第3ポートか
ら入力データ・レジスタに転送され、第3タップが非導
電モードにある場合は、第3ポートから入力データ・レ
ジスタにはデジタル・データが転送されない第3タップ
回路;および第4ポートと入力データ・レジスタとの間
に結合された第4タップ回路(40.4)であって、こ
の第4タップ回路は制御値の第6部分に応答して導電モ
ードおよび非導電モードのいずれか一方になり、第4タ
ップが導電モードにある場合には、デジタル・データは
第4ポートから入力データ・レジスタに転送され、第4
タップが非導電モードにある場合は、第4ポートから入
力データ・レジスタにはデジタル・データが転送されな
い第4タップ回路(40.4);によってさらに構成さ
れる請求項110記載の集積回路。(図132,図2
6,表2.10) 【請求項112】 シーケンサがベクタ命令とスケーラ
命令とを非並行的に解読する請求項110記載の集積回
路。(ベクタ命令とスケーラ命令とは、並行に実行する
ことはできない) 【請求項113】 スケーラ・エンジンが:それぞれが
スケーラ・ポインタ・アドレス値および第1スケーラ・
データ値のいずれか一方を記憶する複数のスケーラ・ポ
インタ・レジスタ;(P(0)ないしP(7),p10
6,REV1.4)およびそれぞれが第2スケーラ・デ
ータ値を記憶する複数のスケーラ・データ・レジスタ;
(G(0)ないしG(7),p106,REV.1.
4)によって構成される請求項110記載の集積回路。 【請求項114】 複数のスケーラ・ポインタ・レジス
タのそれぞれに記憶されているスケーラ・ポインタ・ア
ドレス値が共有メモリ回路内のベクタ・オペランドのア
ドレスおよび入力データ・レジスタに記憶されているス
ケーラ値のアドレスのいずれか一方を示す請求項113
記載の集積回路。(スケーラ・ポインタ・レジスタはI
DRまたはCMAのレジスタを選択するために用いられ
る) 【請求項115】 スケーラ・エンジンが:算術演算動
作および論理動作を実行する算術演算論理ユニットであ
って、複数のスケーラ・データ・レジスタのそれぞれ
と、複数のスケーラ・ポインタ・レジスタのそれぞれ
と、共有メモリ回路とに結合されている算術演算論理ユ
ニット;によってさらに構成される請求項113記載の
集積回路。(図79参照) 【請求項116】 ベクタ・エンジンが:ベクタ命令を
実行する複数の処理要素であって、この複数の処理要素
のそれぞれが:複数のデータ値を記憶する複数のベクタ
・レジスタであって、複数のデータ値のそれぞれがベク
タ命令の実行中に選択的に用いられる複数のベクタ・レ
ジスタ;(V(0)ないしV(7))および算術演算動
作および論理動作を実行する算術演算論理ユニットであ
って、複数のベクタ・レジスタのそれぞれと共有メモリ
回路とに結合された算術演算論理ユニット;によって構
成される処理要素;によって構成される請求項110記
載の集積回路。(図77,REV1.4) 【請求項117】 複数の処理要素のそれぞれが共有メ
モリ回路の複数のメモリ記憶素子の1行に対応する請求
項1116記載の集積回路。(図79) 【請求項118】 入力データ・レジスタがそこに記憶
された複数のデータ値のうちの少なくとも1つを、ベク
タ命令の第1アクセス・モードおよび第2アクセス・モ
ードのいずれか一方に応答して、ベクタ・エンジンに提
供する請求項110記載の集積回路。(IDRのスケー
ラ・アクセスおよびベクタ・アクセス,セクション2.
3.45〜2.3.47,REV1.4) 【請求項119】 第1アクセス・モードにより入力デ
ータ・レジスタが、複数のデータ値の1つをベクタ・エ
ンジンに提供することができ、この複数のデータ値の1
つはベクタ・エンジン内の複数の処理要素のそれぞれに
提供される請求項118記載の集積回路。(スケーラ・
アクセス) 【請求項120】 第2アクセス・モードにより入力デ
ータ・レジスタが、複数のデータ値をベクタ・エンジン
に提供することができ、複数のデータ値のそれぞれはベ
クタ・エンジンの複数の処理要素の1つに提供される請
求項118記載の集積回路。(ベクタ・アクセス) 【請求項121】 集積回路の内部状態情報を示す複数
の集積回路ピン;によってさらに構成される請求項11
0記載の集積回路。(PSTAT出力ピン) 【請求項122】 複数の集積回路ピンが、集積回路の
命令状態を集合的に示す複数のステータス信号を提供
し、この命令状態が:休止命令が実行されている状態;
ライト命令が実行されている状態;ベクタ命令が実行さ
れている状態;スケーラ命令が実行されている状態;条
件付き命令が実行されている状態;ベクタ命令およびス
ケーラ命令のいずれか一方の実行中に例外が起こってい
る状態;分岐命令により分岐動作が実行される状態;お
よび分岐命令により分岐動作が実行されない状態;のい
ずれか1つを示す請求項121記載の集積回路。(p2
0,セクション2.2.7.5) 【請求項123】 入力集積回路ピンおよび出力集積回
路ピンのいずれか一方としてプログラミングされている
プログラミング可能集積回路ピン;によってさらに構成
される請求項110記載の集積回路。(PAピン) (請求項124ないし147は、SC-01741A :IDR入
力レジスタ充てん方法に対応する。) (請求項124は、IDR充てんメカニズムを説明する
機能クレームである。) 【請求項124】 第1デジタル・データ値を受信する
入力手段;(タップ40.1,40.2,40.3,4
0.4;図132) 複数のメモリ記憶ロケーションを有するメモリ記憶回路
(IDR18)であって、複数のメモリ記憶ロケーショ
ンのそれぞれが対応するアドレスを有し、複数のデジタ
ル・データ値の1つを記憶し、第1メモリ記憶ロケーシ
ョンは第1アドレスを有して第1デジタル・データ値を
記憶し、入力手段に結合されて第1デジタル・データ値
を受信するメモリ記憶回路;(IDR;図132,図2
7,図1741.1,図28,図1741.2) 第1アドレスに対応する第1ポインタ値(PTRビット
142)を記憶するポインタ・レジスタ(132)であ
って、メモリ記憶回路に結合されたポインタ・レジス
タ;(IPR−−図33)およびマスク値を記憶するマ
スク・レジスタ(134)であって、このマスク値(m
ビット144)は第1デジタル・データ値を受信および
記憶するいくつかのメモリ記憶ロケーションを示し、メ
モリ記憶回路に結合されているマスク・レジスタ(IL
MR−−図35);によって構成されることを特徴とす
るデータ・プロセッサ。 【請求項125】 マスク値(mビット144)が複数
のアドレス値を示し、この複数のアドレス値のそれぞれ
が第1デジタル・データ値を受信および記憶するいくつ
かのメモリ記憶ロケーションの1つに対応する請求項1
24記載のデータ・プロセッサ。(ILMRは、データ
が複数回記憶されるときに、メモリのどのアドレスがア
クセスされるかも決定する−−図35,図1741.
1,図1741.2,セクション2.1.6〜2.1.
8) 【請求項126】 マスク値が複数のマスク・ビットに
より表され、複数のマスクされたビットは、第1デジタ
ル・データ値を受信および記憶するいくつかのメモリ記
憶ロケーションの1つに対応する、複数のアドレスのそ
れぞれを選択的に決定するために用いられる請求項12
5記載のデータ・プロセッサ。(図35,図1741.
1,図1741.2,セクション2.1.6〜2.1.
8) 【請求項127】 第1ポインタ値を所定の値だけ増分
して、被増分ポインタ値を提供する増分回路(137)
であって、被増分ポインタ値が第1アドレスに対応し、
第1ポインタ値を受信するポインタ・レジスタに結合さ
れている増分回路(137);によってさらに構成され
る請求項124記載のデータ・プロセッサ。(図174
1.1,図1741.2) 【請求項128】 所定の値がマスク値を用いて生成さ
れる請求項127記載のデータ・プロセッサ。(ILM
Rは、増分回路がポインタに加算する値を決定する−−
REV.1のセクション4.3.1および4.3.2;
図1741.1,図1741.2) 【請求項129】 マスク値が、第1デジタル・データ
値を受信および記憶するメモリ記憶ロケーションの数が
1よりも大きいことを示す場合に、第1データ値が、第
2アドレスに対応する第2メモリ記憶ロケーションに記
憶される請求項127記載のデータ・プロセッサ。(図
1741.1,図1741.2,セクション2.1.6
〜2.1.8,セクション4.3.1および4.3.
2) 【請求項130】 第1デジタル・データ値が、複数の
デジタル・データ値の第1の値である請求項124記載
のデータ・プロセッサ。(図1741.1,図174
1.2;請求項131を参照−−複数のデジタル・デー
タ値はリピートを含む) 【請求項131】 カウント値(CNTビット146)
を記憶するカウント・レジスタ(ICR136)であっ
て、このカウント値が複数のデジタル・データ値を受信
および記憶するいくつかのメモリ記憶ロケーションを示
し、このメモリ記憶ロケーションのそれぞれが複数のデ
ジタル・データ値の1つを記憶し、カウント・レジスタ
がメモリ記憶回路に結合されているカウント・レジスタ
(ICR136);によってさらに構成される請求項1
30記載のデータ・プロセッサ。(ICR−−図34,
図1741.1,図1741.2) 【請求項132】 減分値だけカウント値を減分して被
減分値を設ける減分回路(141);によってさらに構
成される請求項131記載のデータ・プロセッサ。(図
1741.1,図1741.2) 【請求項133】 減分値がマスク値に依存する請求項
132記載のデータ・プロセッサ。(図1741.1,
図1741.2,セクション2.1.5および2.1.
6) 【請求項134】 複数のタイミング値を記憶するタイ
ミング記憶回路(ITR138)であって、複数のタイ
ミング値のそれぞれは複数の昇順時刻の1つに対応し、
外部データ・ソースが昇順時刻の1つにおいて複数のデ
ジタル・データ値の1つを入力手段(IDR18)に提
供し、入力手段に結合されているタイミング記憶回路;
によってさらに構成される請求項130記載のデータ・
プロセッサ。(ITR−−図73,図1741.2) 【請求項135】 複数のタイミング値のそれぞれが、
外部データ・ソースが複数のデジタル・データ値の1つ
を入力手段に与える時刻を示す請求項134記載のデー
タ・プロセッサ。 【請求項136】 外部データ・ソース(10.xまた
は54.x)が第1デジタル・データ値を入力手段に与
える第1時刻を示す第1タイミング値を記憶する入力タ
イミング・レジスタ(130)であって、入力手段に結
合された入力タイミング・レジスタ;によってさらに構
成される請求項130記載のデータ・プロセッサ。(I
OR−−図36,図1741.1,図16) 【請求項137】 外部データ・ソースが複数のデジタ
ル・データ値の次の値を入力手段に与え、複数のデジタ
ル・データ値の次の値は第1時刻に関して連続している
第2時刻に与えられる請求項136記載のデータ・プロ
セッサ。(図1741.1) 【請求項138】 複数の充てんモードの1つを選択す
る制御値を記憶する制御記憶回路であって、メモリ記憶
回路に結合されている制御記憶回路;によってさらに構
成される請求項124記載のデータ・プロセッサ。(P
CRのFMビット) (請求項139はIDR充てんメカニズムを説明する方
法クレームである。) 【請求項139】 デジタル・データをデータ・プロセ
ッサに記憶する方法であって:第1デジタル・データ値
を受信する段階;ポインタ・レジスタ(IPR132)
からポインタ値にアクセスする段階であって、第1ポイ
ンタ値がメモリ記憶回路(IDR18)内の第1メモリ
記憶ロケーションの第1アドレスに対応する段階;マス
ク・レジスタ(ILMR134)からマスク値にアクセ
スする段階であって、マスク値がメモリ記憶回路内のい
くつかのメモリ記憶ロケーションを示す段階;(第1ロ
ケーションへの記憶)および第1デジタル・データ値を
メモリ記憶回路の第1群のメモリ記憶ロケーションに記
憶する段階であって、第1群のメモリ記憶ロケーション
はマスク値により示されるメモリ記憶ロケーションに対
応する段階;によって構成されることを特徴とする方
法。(次のN−1個のロケーションに記憶する、ただし
マスク値がNを決める−−図1741.1,図174
1.2) 【請求項140】 第1デジタル・データ値をメモリ記
憶回路に記憶する段階が: i)ポインタ値をシャドウ・レジスタ(シャドウIPR
135)にシャドウ・ポインタ値として記憶する段階; ii)第1デジタル・データ値を、シャドウ・ポインタ
値によって示される複数のメモリ記憶ロケーションの1
つに記憶する段階; iii)シャドウ・ポインタ値を増分して被増分シャド
ウ・ポインタ値を設ける段階であって、被増分シャドウ
・ポインタ値はメモリ記憶回路内の複数のメモリ記憶ロ
ケーションの次のロケーションを指し示す段階; iv)被増分シャドウ・ポインタ値をシャドウ・ポイン
タ値としてシャドウ・レジスタに記憶する段階;および v)ステップii)ないしiv)を繰り返して、マスク
値により示されるメモリ記憶ロケーションのそれぞれに
アクセスする段階;によってさらに構成される請求項1
39記載の方法。(図1741.1,図1741.2) 【請求項141】 第2デジタル・データ値を受信する
段階;シャドウ・レジスタからシャドウ・ポインタ値に
アクセスする段階であって、このシャドウ・ポインタ値
がメモリ記憶回路内の複数のメモリ記憶ロケーションの
連続する次のロケーションを示す段階;マスク・レジス
タからマスク値にアクセスする段階;第2デジタル・デ
ータ値を複数のメモリ記憶ロケーションの連続する次の
ロケーションに記憶する段階;(複数のメモリ記憶ロケ
ーションの1つは可変値で(定数ではなく)あり、シャ
ドウ・ポインタにより示される) シャドウ・ポインタ値を増分する段階;第2デジタル・
データ値をシャドウ・ポインタ値により示される複数の
メモリ記憶ロケーションの1つに記憶する段階;および
第2デジタル・データ値をメモリ記憶回路内の複数のメ
モリ記憶ロケーションの第2部分に記憶する段階であっ
て、第2群のメモリ記憶ロケーションはマスク値により
示されるメモリ記憶ロケーションの数に対応する段階;
によってさらに構成される請求項140記載の方法。 【請求項142】 複数のデジタル・データ値を受信す
る段階であって、複数のデジタル・データ値の第1値が
第1デジタル・データ値である段階;によってさらに構
成される請求項139記載の方法。(図1741.1,
図1741.2) 【請求項143】 カウント・レジスタ(ICR13
6)からカウント値にアクセスする段階であって、この
カウント値は複数のデジタル・データ値を受信および記
憶するいくつかのメモリ記憶ロケーションを示す段階;
およびカウント値に対応する複数のデジタル・データ値
を受信する段階;によってさらに構成される請求項14
2記載の方法。(図1741.1,図1741.2) 【請求項144】 タイミング記憶回路(ITR13
8)から複数のタイミング値の第1値にアクセスする段
階であって、複数のタイミング値の第1値が複数の昇順
時刻の第1時刻に対応する段階;および第1デジタル・
データ値を、複数の昇順時刻の第1時刻において、外部
集積回路(10.xまたは54.x)から受信する段
階;によってさらに構成される請求項142記載の方
法。(図1741.1,図16) 【請求項145】 タイミング記憶回路から複数のタイ
ミング値の第2値にアクセスする段階であって、複数の
タイミング値の第2値が複数の昇順時刻の第2時刻に対
応する段階;および複数のデジタル・データ値の第2値
を、複数の昇順時刻の第2時刻において、外部集積回路
から受信する段階;によってさらに構成される請求項1
44記載の方法。(図1741.1,図16) 【請求項146】 入力タイミング・レジスタから第1
タイミング値にアクセスする段階であって、第1タイミ
ング値が第1時刻に対応する段階;および複数のデジタ
ル・データ値の第1値を第1時刻において外部集積回路
から受信する段階;によってさらに構成される請求項1
42記載の方法。(図1741.1,図16) 【請求項147】 複数のデジタル・データ値の第2値
を第2時刻において受信する段階であって、第2時刻は
第1時刻と連続している段階;によってさらに構成され
る請求項146記載の方法。(図1741.1,図1
6) (請求項148ないし175は、開示SC-01742A :ID
R休止メカニズムに対応する。) (請求項148は、ベクタ命令に応答して休止するID
Rを請求する方法である。) 注記:図75−−制御信号は、バス23および/または
バス25により表される。 【請求項148】 データ・プロセッサ内で命令の実行
を休止する方法であって: ベクタ命令を受信する段階;(外部ピンおよび/または
内部バス) ベクタ命令を解読して第1群の制御信号を設ける段階;
(マイクロシーケンサからベクタ・エンジンへの制御信
号) 第1群の制御信号の第2部分に応答して第1記憶回路
(VPCRビット4)の第1イネーブル値(Vtビット
110)にアクセスする段階であって、第1イネーブル
値は、ベクタ命令の実行中に第2記憶回路(IDR1
8)の関与を選択的にイネーブルにするために用いられ
る段階;(VT値) 第1群の制御信号の第2部分に応答して第3記憶回路
(VPCRビット6)の第1有効性値(Vidビット1
14)にアクセスする段階であって、第1有効性値は第
1ベクタ値がいつ無効になるかを選択的に示す段階;
(Vid値) 第1イネーブル値が第2記憶回路の関与をイネーブルに
して、なおかつ第1有効性値が第1ベクタ値が無効であ
ることを示す場合に休止信号をアサートする段階;休止
信号がアサートされると、データ・プロセッサ内のベク
タ命令の実行を遅延させる段階;および休止信号がアサ
ートされないと、データ・プロセッサ内のベクタ命令の
実行を完了する段階;によって構成されることを特徴と
する方法。(図1.62,図1742.1,表2.3
2,表2.33) 【請求項149】 第1イネーブル値により第2記憶回
路の関与が可能になり、第1有効性値が第1ベクタ値が
有効であることを示すときに、第1群の制御信号の第3
部分に応答して、第2記憶回路(IDR18)から第1
ベクタ値にアクセスする段階;によってさらに構成され
る請求項148記載の方法。 【請求項150】 外部データ・ソース(10.xまた
は54.x)が休止信号とは独立して第2記憶回路に有
効なベクタ値を与える請求項148記載の方法。(ID
Rへの有効データの外部ローディング−−図1742.
1,図16,図132) 【請求項151】 第2記憶回路に有効なベクタ値を書
き込む段階;第1有効性値を修正して有効なベクタ値が
書き込まれたことを示す段階;第1有効性値が有効なベ
クタ値が書き込まれたことを示し、イネーブル値がベク
タ命令実行中に第2記憶回路の関与を可能にするとき
に、ベクタ命令の実行を継続する段階;およびベクタ命
令の結果をデスティネーション・レジスタに記憶する段
階;によってさらに構成される請求項150記載の方
法。(図1742.1,表2.45) 【請求項152】 外部データ・ソースが有効なベクタ
値を第2記憶回路に与えるとベクタ値に対応する第1有
効性値が修正されて、ベクタ値が有効であることを示す
請求項150記載の方法。(図1742.1,図16,
図132) 【請求項153】 第1イネーブル値(VT110)
が、第2記憶回路がベクタ命令の実行に関与することを
可能にすると、第4メモリ記憶回路(ベクタ・レジスタ
128の1つ)が第2記憶回路(IDR18)に有効な
ベクタ値を与える請求項148記載の方法。(IDRの
内部ローディング−−内部ローディングは、AEが休止
していないときだけに起こる−−図1742.1,図7
5,図77)注記:対応するVtビットがアサートされ
ているIDRTロケーションだけが実際に書き込まれ
る。 【請求項154】 第1イネーブル値により第2記憶回
路がベクタ命令の実行に関与することが可能になると、
有効なベクタ値の第1部分が第2記憶回路に書き込まれ
るのに応答して、第1有効性値が修正される請求項15
3記載の方法。 【請求項155】 第1ベクタ値が第2記憶回路に記憶
された複数の部分のベクタ値の1つであり、複数のベク
タ値のそれぞれが第2記憶回路内に対応するメモリ・ロ
ケーションを有し、第1イネーブル値が第1記憶回路に
記憶される複数のイネーブル値の第1値であり、第1有
効性値が第3記憶回路に記憶される複数の有効性値の第
1値である請求項149記載の方法。(図75,図7
2,表2.32) 【請求項156】 第1記憶回路から複数のイネーブル
値の一部にアクセスする段階であって、複数のイネーブ
ル値のそれぞれが複数のベクタ値の1つに対応する段
階;第3記憶回路から複数の有効性値の一部にアクセス
する段階であって、複数の有効性値のそれぞれが複数の
ベクタ値の1つに対応する段階;第1群の制御信号の第
3部分に応答して第2記憶回路から複数のベクタ値の一
部にアクセスする段階;および複数のイネーブル値の少
なくとも一部により第2記憶回路の対応するメモリ・ロ
ケーションの関与が可能になり、メモリ記憶回路のメモ
リ・ロケーションに対応する有効性値が複数のベクタ値
の1つが無効であることを示すときに、休止信号を生成
する段階;によってさらに構成される請求項155記載
の方法。 【請求項157】 データ・プロセッサがリセットされ
ると、第1有効性値をネゲートする段階;によってさら
に構成される請求項148記載の方法。 【請求項158】 レジスタ・クリア命令を受信する段
階;レジスタ・クリア命令を解読して、第2群の制御信
号を設ける段階;および第2群の制御信号に応答して第
1有効性値をネゲートする段階;によってさらに構成さ
れる請求項148記載の方法。(clearv命令−−表2.
35,表2.42,図1742.1) 【請求項159】 レジスタ・リード命令を受信する段
階;レジスタ・リード命令を解読して、第3群の制御信
号を設ける段階;第3群の制御信号の第1部分に応答し
て第2記憶回路から第1ベクタ値を読む段階;および第
1ベクタ値が第1記憶回路から読まれた後で、第1有効
性値をネゲートする段階;によってさらに構成される請
求項148記載の方法。(ベクタ命令のためのIDRC
アドレッシング・モード−−表2.37,表2.43) 【請求項160】 命令を受信する段階;命令を解読し
て第4群の制御信号を設ける段階;第4群の制御信号の
第1部分に応答して第3記憶回路の第2有効性値にアク
セスする段階であって、第1有効性値は、スケーラ値が
いつ無効であるかを選択的に示す段階;第1有効性値が
スケーラ値が有効であることを示すときに、第4群の制
御信号の第2部分に応答して第2記憶回路から第1スケ
ーラ値にアクセスする段階;第2有効性値がスケーラ値
が無効であることを示す場合に休止信号をアサートする
段階;休止信号がアサートされると、データ・プロセッ
サ内の命令の実行を遅延させる段階;および休止信号が
アサートされないと、データ・プロセッサ内の命令の実
行を完了する段階;によってさらに構成される請求項1
48記載の方法。(図1742.1,図72,表2.3
2) 【請求項161】 外部データ・ソース(10.xまた
は54.x)が、休止信号とは独立して第2記憶回路に
有効なスケーラ値を与える請求項160記載の方法。
(IDRの外部ローディング) 【請求項162】 第2記憶回路に有効なスケーラ値を
書き込む段階;第2有効性値を修正して有効なスケーラ
値が書き込まれたことを示す段階;第2有効性値がスケ
ーラ値が書き込まれたことを示すときには命令の実行を
継続する段階;および命令の結果をデスティネーション
・レジスタに記憶する段階;によってさらに構成される
請求項161記載の方法。(図1742.1,表2.4
5) 【請求項163】 外部データ・ソースが有効なスケー
ラ値を第2記憶回路に与えると、スケーラ値に対応する
第2有効性値が修正されてスケーラ値が有効であること
を示す請求項161記載の方法。(図1742.1,図
16,図132) 【請求項164】 ベクタ命令を受信するインターフェ
ース手段(バス13またはバス27);(命令はどのよ
うにデコーダに到達するか) ベクタ命令を解読して第1群の制御値を設ける命令解読
手段(19)であって、インターフェース手段に結合さ
れてベクタ命令を受信する命令解読手段;(マイクロシ
ーケンサ) 第1ベクタ値を記憶する第1メモリ記憶回路(IDR1
8)であって、第1ベクタ値は第1群の制御値の第1部
分に応答してアクセスされ、命令解読手段に結合されて
複数の制御値の第1部分を受信する第1メモリ記憶回
路;(IDR) 第1イネーブル値を記憶する第2メモリ記憶回路(Vt
ビット110)であって、第1イネーブル値は第1群の
制御値の第2部分に応答してアクセスされ、命令解読手
段に結合されて複数の制御値の第2部分を受信する第2
メモリ記憶回路;(VT) 第1有効性値を記憶する第3メモリ記憶回路(Vidビ
ット114)であって、第1有効性値は第1群の制御値
の第3部分に応答してアクセスされ、命令解読手段に結
合されて複数の制御値の第3部分を受信する第3メモリ
記憶回路;(VID) 第1イネーブル値および第1有効性値に応答して第1論
理状態および第2論理状態のうちいずれか一方で休止信
号を生成する論理手段(116);および休止信号の論
理状態に応答してベクタ命令の実行を選択的に休止する
実行手段(39);によって構成されることを特徴とす
るデータ・プロセッサ。(図77,図75) 【請求項165】 第1イネーブル値により、第1メモ
リ記憶回路がベクタ命令の実行の使用に関していつイネ
ーブルになるかが示される請求項164記載のデータ・
プロセッサ。(図72,表2.32,表2.33) 【請求項166】 第1有効性値により、第1ベクタ値
がいつ有効なデータ値になるかが示される請求項164
記載のデータ・プロセッサ。(図72,表2.32,表
2.33) 【請求項167】 イネーブル値により第1記憶回路が
イネーブルになることが示され、第1有効性値により第
1ベクタ値が無効なデータ値であることが示されると、
論理手段が休止信号をアサートする請求項164記載の
データ・プロセッサ。(p116,図77) 【請求項168】 外部データ・ソースから有効なベク
タ値を受信する入力回路(4個のポート28,30,3
2,34のうちの1つ)であって、外部データ・ソース
(たとえば図16参照,10.xまたは54.x)が休
止信号とは独立して有効なベクタ値を与える入力回路;
によってさらに構成される請求項164記載のデータ・
プロセッサ。(図75) 【請求項169】 有効なベクタ値が第1メモリ記憶回
路に書き込まれる請求項168記載のデータ・プロセッ
サ。(図1742.1) 【請求項170】 有効なベクタ値が第1メモリ記憶回
路に書き込まれると、第1有効性値を修正する修正手
段;によってさらに構成される請求項169記載のデー
タ・プロセッサ。(図77) 【請求項171】 命令を受信するインターフェース手
段(バス13,バス27);命令を解読して複数の制御
信号を設ける命令解読手段(解読19)であって、複数
の制御信号の第1部分が、命令がベクタ命令およびスケ
ーラ値を用いる命令のうちのいずれか一方であることを
示し、インターフェース手段に結合されて命令を受信す
る命令解読手段;複数のデジタル・データ値を記憶する
複数の記憶ロケーションを有する第1メモリ記憶回路
(IDR18)であって、複数のデジタル・データ値の
それぞれがスケーラ値およびベクタ値の一部のいずれか
一方である第1メモリ記憶回路;複数のイネーブル値を
記憶する第2メモリ記憶回路(複数のPE120内のV
tビット110)であって、複数のイネーブル値のそれ
ぞれが第1メモリ記憶回路内の複数の記憶ロケーション
の所定の1つに対応し、複数のイネーブル値のそれぞれ
が複数の記憶ロケーションの対応するロケーションがい
つイネーブルになるかを示す第2メモリ記憶回路;複数
の有効性値を記憶する第3メモリ記憶回路(複数のPE
16内のVidビット114)であって、複数の有効性
値のそれぞれが複数のデジタル・データ値の所定の1つ
に対応し、複数の有効性値のそれぞれが複数のデジタル
・データ値の対応する値がいつ有効になるかを示す第3
メモリ記憶回路;スケーラ休止信号(122)およびベ
クタ休止信号(124)のいずれか一方を生成する論理
手段(116)であって、この論理手段は: i)複数の制御信号の第1部分が、命令がスケーラ値を
用いることを示すとき; ii)第1メモリ記憶回路にスケーラ値があるとき;お
よび iii)スケーラ値に対応する有効性値がスケーラ値が
無効であることを示すとき;にスケーラ休止信号をアサ
ートする論理手段であり; iv)複数の制御信号の第1部分が命令がベクタ値を用
いることを示すとき; v)ベクタ値の一部が第1メモリ記憶回路の所定の記憶
ロケーションにあるとき; vi)所定の記憶ロケーションに対応するイネーブル値
が、所定の記憶ロケーションがイネーブルになっている
ことを示すとき;および vii)所定の記憶ロケーションに対応する有効性値
が、所定の記憶ロケーションに記憶されたベクタ値の部
分が無効であることを示すとき;にベクタ休止信号をア
サートする論理手段;スケーラ休止信号およびベクタ休
止信号のいずれか一方がアサートされたときに、命令の
実行を休止する休止手段(39);およびスケーラ休止
信号とベクタ休止信号の両方がネゲートされたときに命
令を実行する実行手段(21または22);によって構
成されるデータ・プロセッサ。(図72,図77,図7
5,表2.32) 【請求項172】 外部データ・ソースから有効なデジ
タル・データ値を受信する入力回路(4個のポート2
8,30,32,34の1つ)であって、第1メモリ記
憶回路に結合されて有効なデジタル・データ値を設ける
入力回路;によってさらに構成される請求項171記載
のデータ・プロセッサ。(図75) 【請求項173】 有効なデジタル・データ値が第1メ
モリ記憶回路に書き込まれる請求項172記載のデータ
・プロセッサ。(図1742.1) 【請求項174】 有効なデジタル・データ値が書き込
まれたときに無効なデジタル・データ値に対応する有効
性値を修正する修正手段(118);によってさらに構
成される請求項173記載のデータ・プロセッサ。(図
77) 【請求項175】 外部データ・ソース(10.xまた
は54.x)がスケーラ休止信号とは独立して有効なス
ケーラ値を設け、外部データ・ソースがベクタ休止信号
とは独立して有効なベクタ値を設ける請求項172記載
のデータ・プロセッサ。(図132)(請求項176な
いし229は開示SC-01743A :最小値/最大値決定並行
動作に対応する。) 【請求項176】 比較命令を記憶する記憶手段(命令
キャッシュ20);(命令キャッシュ,ROM) 比較命令を解読して複数の制御信号(23)を設ける命
令解読回路(19)であって、記憶手段に結合されて比
較命令を受信する命令解読回路;(マイクロシーケン
サ) 複数の制御信号に応答して比較命令の実行を制御する命
令実行手段(制御回路構成21)であって、命令解読回
路に結合されて複数の制御信号を受信する命令実行手
段;(マイクロシーケンサ) それぞれがデータ値を記憶する複数のイネーブルになっ
た処理要素(PE16)であって、複数のイネーブルに
なった処理要素のそれぞれが命令実行手段に結合されて
おり、このとき命令実行手段は複数のイネーブルになっ
た処理要素のそれぞれを選択して、比較命令の実行中に
そこに記憶されているデータ値の第1部分を出力する処
理要素;および複数のイネーブルになった処理要素のそ
れぞれに結合されてそこに記憶されているデータ値の第
1部分を受信する比較導体(158)であって、比較導
体は比較命令の実行に応答して比較動作を行い、複数の
イネーブルになった処理要素のうち少なくとも1つによ
り与えられたデータ値の第1部分が第1論理状態のとき
は、比較導体は第1論理状態にあり、複数のイネーブル
になった処理要素のそれぞれにより与えられるデータ値
の第1部分が第2論理状態のときは第2論理状態になる
比較導体;によって構成されることを特徴とするデータ
・プロセッサ(10)。(ワイアOR;図75;図17
43.1〜3) 【請求項177】 複数のイネーブルになった処理要素
のそれぞれに記憶されているデータ値が所定のビット幅
n(ただしnは正の整数)を有する請求項176記載の
データ・プロセッサ。 【請求項178】 データ値の第1部分がデータ値の最
上位ビットである請求項177記載のデータ・プロセッ
サ。 【請求項179】 複数のイネーブル値を記憶する第1
記憶回路(VTビット110)であって、複数のイネー
ブル値のそれぞれが複数のイネーブルになった処理要素
に対応する第1記憶回路;(Vt)によってさらに構成
される請求項176記載のデータ・プロセッサ。 【請求項180】 比較導体の第1および第2論理状態
のいずれか一方に応答して、複数のイネーブル値の部分
を選択的に修正する修正回路(118);によってさら
に構成される請求項177記載のデータ・プロセッサ。
(図77,図1743.1) 【請求項181】 複数のイネーブル値のうちの対応す
る値がアサートされると、複数のイネーブルになった処
理要素の1つが、そこに記憶されているデータ値を比較
導体に与えることができるようになる請求項180記載
のデータ・プロセッサ。(図1743.1〜3) 【請求項182】 複数のイネーブル値のうちの対応す
る値がネゲートされると、複数のイネーブルになった処
理要素の1つが比較命令の実行に関与することができな
くなる請求項180記載のデータ・プロセッサ。(図7
7,図1743.1〜3) 【請求項183】 複数のイネーブル値が複数のイネー
ブルになった処理要素を選択的にイネーブルにして、第
1デジタル・データ値を比較導体に与える請求項180
記載のデータ・プロセッサ。(図77,図1743.1
〜3) 【請求項184】 修正回路が:比較導体が第1論理状
態にあり、複数のイネーブル値の1つに対応する複数の
イネーブルになった処理要素の1つにより与えられたデ
ータ値の第1部分が第1論理状態にあるときに、複数の
イネーブル値の1つを修正しないままにする;および比
較導体が第2論理状態にあり、複数のイネーブル値の1
つに対応する複数のイネーブルになった処理要素の1つ
により与えられたデータ値の第1部分が第2論理状態に
あるときに、複数のイネーブル値の1つを修正しないま
まにする;請求項183記載のデータ・プロセッサ。
(図77,図1743.1〜3) 【請求項185】 比較導体が第1論理状態にあり、複
数のイネーブル値の1つに対応する複数のイネーブルに
なった処理要素の1つにより与えられたデータ値の第1
部分が第2論理状態にあるときに、修正回路が複数のイ
ネーブル値の1つを修正する請求項183記載のデータ
・プロセッサ。(図77,図1743.1〜3) 【請求項186】 比較命令が、データ値の第1部分に
おいて最大値を有する複数の処理要素の第1部分を決定
する請求項176記載のデータ・プロセッサ。(図7
7,図1743.1〜3) 【請求項187】 複数のイネーブルになった処理要素
のそれぞれが:データ値の第1部分を補足して第1の被
補足データ値を比較導体に与える論理回路(117);
によってさらに構成される請求項176記載のデータ・
プロセッサ。(図77) 【請求項188】 比較命令が、データ値の第1部分に
おいて最小値を有する複数の処理要素の第1部分を決定
する請求項187記載のデータ・プロセッサ。 【請求項189】 データ値の第1部分が符号ビットで
ある請求項187記載のデータ・プロセッサ。 【請求項190】 制御値を記憶する制御記憶回路であ
って、この制御値は比較命令が符号つきのオペランドお
よび符号なしのオペランドのいずれか一方を用いること
を示し、制御記憶回路は命令実行手段に結合されている
制御記憶回路;によってさらに構成される請求項176
記載のデータ・プロセッサ。 【請求項191】 比較導体に結合されるスイッチ回路
(170,または164でもよい);およびスイッチ回
路に結合された第1集積回路ピン(82または84)で
あって、スイッチ回路が第1集積回路ピンを比較導体に
選択的に結合する第1集積回路ピン;によってさらに構
成される請求項176記載のデータ・プロセッサ。(行
/列選択−−図1743.1) 【請求項192】 比較命令に応答して、スイッチ回路
が第1集積回路ピンを比較導体に選択的に結合させる請
求項191記載のデータ・プロセッサ。(図1743.
1) 【請求項193】 第1集積回路ピンが外部データ・プ
ロセッサの第1外部集積回路ピンに結合され、スイッチ
回路が第1集積回路ピンを比較導体に選択的に結合する
と、第1集積回路ピンが比較導体を第1外部集積回路ピ
ンに結合する請求項192記載のデータ・プロセッサ。
(図1743.1) 【請求項194】 データ・プロセッサが第1動作モー
ドにあるときに第1集積回路ピン(82)が制御情報を
転送し、データ・プロセッサが第2動作モードにあると
きに第1集積回路ピンが比較導体(58)に選択的に結
合される請求項193記載のデータ・プロセッサ(1
0.72)。(ストップ:データ・プロセッサをイネー
ブルにするために用いられる行/列選択;ラン:比較導
体を複数のデバイスに接続するために用いられる行/列
選択−−図1743.4) 【請求項195】 スイッチ回路に結合されている第2
集積回路ピン;によってさらに構成される請求項191
記載のデータ・プロセッサ。 【請求項196】 データ・プロセッサ内で複数のデー
タ値を比較する方法であって:比較命令(locmax, colm
ax, rowmax, locmin, colmin, rowmin)を受信する段
階;比較命令を解読して複数の制御信号を設ける段階;
複数の処理要素(16)のどれがイネーブルになってい
るかを判定する段階であって、複数の処理要素(Vtビ
ット110がアサートになっているPE16)のイネー
ブルになっている部分の各処理要素がそこに記憶されて
いるデータ値の第1部分を比較ライン(158)に与え
る段階;複数の処理要素の少なくとも1つのイネーブル
になっている部分がそこに記憶されているデータ値の第
1部分を第1論理状態(論理1)で設けるときに、比較
ラインを第1論理状態に設ける段階;複数の処理要素の
イネーブルになっている部分のそれぞれがそこに記憶さ
れているデータ値の第1部分を第2論理状態(論理0)
で設けるときに、比較ラインを第2論理状態に設ける段
階;および比較ラインの論理状態に応答して複数のイネ
ーブル・ビット(Vtビット110)を選択的に修正
し、複数のイネーブル・ビットのそれぞれが複数の処理
要素のイネーブルになった部分の1つに対応する段階;
によって構成されることを特徴とする方法。(図174
3.5) 【請求項197】 複数のイネーブル値のそれぞれによ
って、複数の処理要素のイネーブルになった部分のうち
対応する部分が選択的に、そこに記憶されているデジタ
ル・データ値を与えることができるようになる請求項1
96記載の方法。 【請求項198】 複数の処理要素のイネーブルになっ
た部分のうち対応する1つの部分により与えられたデー
タ値の第1部分が比較ラインとは異なる論理状態にある
ときに複数のイネーブル・ビットの1つをネゲートする
段階;によってさらに構成される請求項196記載の方
法。 【請求項199】 複数の処理要素のイネーブルになっ
た部分のうち対応する1つの部分により与えられたデー
タ値の第1部分が比較ラインと同じ論理状態にあるとき
に、複数のイネーブル・ビットの1つがアサートされた
状態のままになっていることを確認する段階;によって
さらに構成される請求項198記載の方法。 【請求項200】 複数の処理要素のイネーブルになっ
た部分のそれぞれに記憶されているデータ値の第2部分
にアクセスする段階であって、複数の処理要素のイネー
ブルになったそれぞれの部分は、複数のイネーブル値の
対応する値がアサートされている段階;複数の処理要素
のイネーブルになったそれぞれの部分により出力された
データ値の第2部分を比較ラインに与える段階;複数の
処理要素のうち少なくとも1つのイネーブルになった部
分が、そこに記憶されているデータ値の第2部分を第1
論理状態で与えるときに、比較ラインを第1論理状態で
設ける段階;複数の処理要素のうちイネーブルになった
それぞれの部分が、そこに記憶されているデータ値の第
2部分を第2論理状態で与えるときに、比較ラインを第
2論理状態で設ける段階;およびデータ値の第2部分が
比較ラインとは異なる論理状態にあるときに、複数のイ
ネーブル・ビットの1つをネゲートする段階;によって
さらに構成される請求項198記載の方法。 【請求項201】 複数の処理要素のそれぞれに記憶さ
れている複数のデータ値のそれぞれが、複数のnビット
(たとえば8ビット,ただしnは正の整数値)を有する
請求項196記載の方法。 【請求項202】 複数のデータ値のそれぞれの第1部
分がデータ値の最上位ビットである請求項201記載の
方法。 【請求項203】 i)複数の処理要素のイネーブルに
なったそれぞれの部分に記憶されているデータ値の複数
のビットのうち次のビットにアクセスする段階であっ
て、複数の処理要素のイネーブルになった各部分が、ア
サートされている複数のイネーブル値のうちの対応する
1つを有する段階; ii)複数の処理要素のイネーブルになった各部分によ
り出力されたデータ値の複数のビットのうち次のビット
を比較ラインに与える段階; iii)複数の処理要素のうち少なくとも1つのイネー
ブルになった部分が、そこに記憶されているデータ値の
複数のビットのうち次のビットを第1論理状態で設ける
ときに、比較ラインを第1論理状態で設ける段階; iv)複数の処理要素のイネーブルになったそれぞれの
部分がそこに記憶されているデータ値の複数のビットの
うち次のビットを第2論理状態で設けるときに、比較ラ
インを第2論理状態で設ける段階; v)データ値の複数のビットのうち次のビットが比較ラ
インとは異なる論理状態にあるときに、複数のイネーブ
ル値の1つをネゲートする段階;および vi)ステップi)ないしv)を所定の反復回数だけ繰
り返す段階;によってさらに構成される請求項202記
載の方法。 【請求項204】 所定の反復回数が(n−1)に等し
い請求項203記載の方法。 【請求項205】 所定の反復回数が(n−1)よりも
小さい請求項203記載の方法。 【請求項206】 所定の反復回数が比較命令の中で指
定されている請求項203記載の方法。 【請求項207】 最大値を有する符号なしのデータ値
を記憶する複数の処理要素の第1部分を、比較命令が決
定する請求項203記載の方法。 【請求項208】 複数の処理要素のそれぞれにより与
えられたデータ値の最上位ビットを反転してから、デー
タ値の最上位ビットを比較ラインに与える段階;によっ
てさらに構成される請求項203記載の方法。 【請求項209】 最大値を有する2の補数である符号
つきのデータ値を記憶する複数の処理要素の第2部分
を、比較命令が決定する請求項208記載の方法。 【請求項210】 複数の処理要素のそれぞれにより与
えられたデータ値の複数のビットのそれぞれを反転して
から、複数のビットのそれぞれを比較ラインに与える段
階;によってさらに構成される請求項203記載の方
法。 【請求項211】 最小値を有する符号なしのデータ値
を記憶する複数の処理要素の中の処理要素の第3部分
を、比較命令が決定する請求項210記載の方法。 【請求項212】 複数の処理要素のそれぞれによって
与えられたデータ値の複数のビットの一部分を反転して
から複数のビットの部分を比較ラインに与える段階であ
って、複数のビットの部分にはデータ値の最上位ビット
が含まれていない段階;によってさらに構成される請求
項203記載の方法。 【請求項213】 最小値を有する2の補数である符号
つきのデータ値を記憶する複数の処理要素の中の処理要
素の第4部分を、比較命令が決定する請求項212記載
の方法。 【請求項214】 アレイに配列された複数のデータ・
プロセッサ(10.72ないし10.80)によって構
成されることを特徴とするデータ処理システム(57.
3)であって、それぞれのデータ・プロセッサが:比較
命令を記憶する記憶手段(20);比較命令を解読して
複数の制御信号を設ける命令解読回路(19)であっ
て、記憶手段に結合されて比較命令を受信する命令解読
回路;複数の制御信号に応答して比較命令の実行を制御
する命令実行手段(制御回路構成21)であって、命令
解読回路に結合されて複数の制御信号を受信する命令実
行手段;それぞれがデータ値を記憶する複数のイネーブ
ルになった処理要素(Vtビット110がアサートされ
ているPE16)であって、複数のイネーブルになった
処理要素のそれぞれが命令実行手段に結合されており、
命令実行手段は複数のイネーブルになった処理要素を選
択して比較命令の実行中にそこに記憶されているデータ
値の第1ビットを出力する処理要素;および複数のイネ
ーブルになった処理要素のそれぞれに結合されてそこに
記憶されているデータ値の第1ビットを受信する比較導
体(158)であって、比較導体は比較命令の実行に応
答して比較動作を行い、複数のイネーブルになった処理
要素のうち少なくとも1つにより与えられたデータ値の
第1ビットが第1論理状態のときは、比較導体は第1論
理状態にあり、複数のイネーブルになった処理要素のそ
れぞれにより与えられるデータ値の第1ビットが第2論
理状態のときは第2論理状態になる比較導体;によって
構成されるデータ・プロセッサであって:複数のデータ
・プロセッサのそれぞれが隣接するデータ・プロセッサ
に選択的に結合されて情報を通信し、複数のデータ・プ
ロセッサの第1データ・プロセッサの比較導体が複数の
データ・プロセッサの第2データ・プロセッサの比較導
体に結合されているデータ処理システム(57.3)。
(図75,図1743.1〜4) 【請求項215】 アレイが少なくとも1行と少なくと
も1列とによって構成される請求項214記載のデータ
処理システム。(図1743.4) 【請求項216】 複数のデータ・プロセッサの第1デ
ータ・プロセッサが複数のデータ・プロセッサの第2デ
ータ・プロセッサとアレイの同じ行にある請求項215
記載のデータ処理システム。(図1743.4) 【請求項217】 複数のデータ・プロセッサの第1デ
ータ・プロセッサが複数のデータ・プロセッサの第2デ
ータ・プロセッサとアレイの同じ列にある請求項215
記載のデータ処理システム。(図1743.4) 【請求項218】 複数のイネーブル値を記憶する第1
記憶回路であって、複数のイネーブル値のそれぞれが複
数のイネーブルになった処理要素の1つに対応する第1
記憶回路;によってさらに構成される請求項214記載
のデータ処理システム。(図1743.1) 【請求項219】 比較導体の第1論理状態および第2
論理状態のいずれか一方に応答して、複数のイネーブル
値のそれぞれを選択的に修正する修正回路(118);
によってさらに構成される請求項218記載のデータ処
理システム。(図77) 【請求項220】 複数のイネーブル値の対応する値が
アサートされているときに、複数のイネーブルになった
処理要素のそれぞれが比較命令の実行に関与する請求項
219記載のデータ処理システム。(図1743.1,
図1743.4) 【請求項221】 複数のイネーブル値の対応する値が
ネゲートされているときに、複数のイネーブルになった
処理要素の1つが比較命令の実行に関与することができ
なくなる請求項219記載のデータ処理システム。(図
1743.1) 【請求項222】 比較導体が第1論理状態にあり、複
数のイネーブル値の1つに対応する複数のイネーブルに
なった処理要素の1つにより与えられたデータ値の第1
ビットが第2論理状態にあるときに、修正回路が複数の
イネーブル値の1つをネゲートする請求項219記載の
データ処理システム。(図1743.1,図77) 【請求項223】 データ値の第1ビットに最大値を有
する複数のデータ・プロセッサのイネーブルになった部
分のそれぞれにおいて複数のイネーブルになった処理要
素の第1部分を、比較命令が決定する請求項219記載
のデータ処理システム。 【請求項224】 複数のイネーブルになった処理要素
のそれぞれが:少なくともデータ値の一部分を選択的に
補足して、第1被補足データ値を比較導体に与える論理
回路(117);によってさらに構成される請求項21
9記載のデータ処理システム。(図77) 【請求項225】 データ値の一部分がデータ値の最上
位ビットである請求項224記載のデータ処理システ
ム。 【請求項226】 データ・プロセッサのそれぞれが:
比較導体に結合されたスイッチ回路(170);および
スイッチ回路に結合された集積回路ピン(82または8
4)であって、スイッチ回路が比較導体に集積回路ピン
を選択的に結合する集積回路ピン;によってさらに構成
される請求項214記載のデータ処理システム。(行/
列選択−−図1743.1) 【請求項227】 グローバル比較命令(colmax, rowm
ax, colmin, rowmin)に応答して、スイッチ回路が集積
回路ピンを比較導体に選択的に結合する請求項226記
載のデータ処理システム。(図1743.1) 【請求項228】 複数のデータ・プロセッサの第1デ
ータ・プロセッサの第1集積回路ピンが複数のデータ・
プロセッサの第2データ・プロセッサの第2集積回路ピ
ンに結合され、スイッチ回路が第1集積回路ピンを比較
導体に選択的に結合すると第1集積回路ピンが比較導体
を第2集積回路ピンに結合する請求項227記載のデー
タ処理システム。(図1743.1,図1743.4) 【請求項229】 複数のデータ・プロセッサの第1デ
ータ・プロセッサが第1動作モードにあるときに第1集
積回路ピンが制御情報を転送し、複数のデータ・プロセ
ッサの第1データ・プロセッサが第2動作モードにある
ときに第1集積回路ピンは比較導体に選択的に結合され
る請求項228記載のデータ処理システム。(ストッ
プ:データ・プロセッサをイネーブルにするために用い
られる行/列選択;ラン:複数のデバイスの比較導体を
接続するために用いられる行/列選択−−図111,図
1743.4) (請求項230ないし261はSC-01744A :最小値およ
び最大値を計算する融通のきくメカニズムに対応す
る。) (請求項230は、最大値および最小値命令を実行する
方法を請求する方法クレームである。) 【請求項230】 データ・プロセッサ内で命令を実行
する方法であって:命令を受信する段階;命令を解読し
て複数の制御信号を設ける段階;第1記憶ロケーション
から第1デジタル・データ値にアクセスする段階;(オ
ペランド1,vregs およびsregs ,vreg2 (デスティネ
ーション)) 第2記憶ロケーションから第2デジタル・データ値にア
クセスする段階;(オペランド2,vregs およびsregs
,vreg1 (オペランド)) 第2デジタル・データ値と第1デジタル・データ値とを
比較して、より大きい値とより小さい値のいずれか一方
を決定および選択する段階;および(min, minp, max,
maxp) 大きいほうの値と小さいほうの値のいずれか一方をデス
ティネーション記憶回路に記憶する段階;によって構成
されることを特徴とする方法。(セクション2.5.1
2.3,表2.44,表2.51,図86;注記:セク
ション2.5.19.3,セクション2.5.19.
5,セクション2.5.19.6) 【請求項231】 比較の段階が:第2デジタル・デー
タ値を第1デジタル・データ値から減じて減算結果を生
成する段階;減算結果が負の値の場合に、ボロー値をア
サートする段階;および減算結果が正の値の場合に、ボ
ロー値をネゲートする段階;によってさらに構成される
請求項230記載の方法。(仕様書本文付記,図79,
図80,図82,表2.44,表2.51) 【請求項232】 命令の実行に応答して、第2デジタ
ル・データ値と第1デジタル・データ値とが比較され、
より小さいほうの値を決定および選択する請求項231
記載の方法。(仕様書本文付記,図79,図80,図8
2,表2.44,表2.51) 【請求項233】 ボロー値がネゲートされたときに、
第2デジタル・データ値をデスティネーション記憶回路
に記憶する段階;によってさらに構成される請求項23
2記載の方法。(仕様書本文付記,図79,図80,図
82,表2.44,表2.51) 【請求項234】 デスティネーション記憶回路が第1
記憶ロケーションである請求項233記載の方法。(図
86(A)) 【請求項235】 命令の実行に応答して、第2デジタ
ル・データ値と第1デジタル・データ値とが比較され、
より大きいほうの値を決定および選択する請求項231
記載の方法。 【請求項236】 ボロー値がアサートされたときに、
第2デジタル・データ値をデスティネーション記憶回路
に記憶する段階;によってさらに構成される請求項23
5記載の方法。 【請求項237】 第1デジタル・データ値と第2デジ
タル・データ値の両方が、符号つきのデータ値および符
号なしのデータ値のいずれか一方である請求項230記
載の方法。(セクション2.5.12) 【請求項238】 第1デジタル・データ値が第1スケ
ーラ値であり、第2デジタル・データ値が第2スケーラ
値である請求項230記載の方法。(min, max;表2.
51) 【請求項239】 第1デジタル・データ値が第1ベク
タ値の一部分であり、第2デジタル・データ値が第2ベ
クタ値の対応する部分である請求項230記載の方法。
(表2.44) 【請求項240】 記憶ロケーションから第1拡張ビッ
トおよび第2拡張ビットにアクセスする段階であって、
第1拡張ビットおよび第2拡張ビットは命令の受信に先
立って実行されたデータ処理動作の前回の結果を示す段
階;第1拡張ビットおよび第2拡張ビットを用いて選択
的に比較手段が比較の段階を実行できるようにする段
階;および比較段階の結果に応答して、第1拡張ビット
および第2拡張ビットを選択的に修正する段階;によっ
てさらに構成される請求項231記載の方法。(多重バ
イト・オペランドに関しては、図1706−3,図17
44−1,図1744−2) 【請求項241】 第1拡張ビットおよび第2拡張ビッ
トがデータ・プロセッサの複数のステータス状態を集合
的に表しており:第1拡張ビットおよび第2拡張ビット
が第1ステータス状態ではデフォルト状態にある;(%
00) 第1拡張ビットおよび第2拡張ビットが第2ステータス
状態にあるときには、第1拡張ビットおよび第2拡張ビ
ットが、第2デジタル・データ値は第1デジタル・デー
タ値よりも小さいことを示す;(%01) 第1拡張ビットおよび第2拡張ビットが第3ステータス
状態にあるときには、第1拡張ビットおよび第2拡張ビ
ットが、第2デジタル・データ値は第1デジタル・デー
タ値よりも大きいことを示す;($10)および第1拡
張ビットおよび第2拡張ビットが第4ステータス状態に
あるときには、第1拡張ビットおよび第2拡張ビット
が、第2デジタル・データ値は第1デジタル・データ値
と等しいことを示す;(%11) 請求項240記載の方法。(表2.57,表2.58,
表2.59) 【請求項242】 第1拡張ビットおよび第2拡張ビッ
トが第1ステータス状態および第4ステータス状態のい
ずれか一方にあるときに、比較手段が比較段階を実行す
ることができるようにする段階;によってさらに構成さ
れる請求項241記載の方法。(多重バイトに関して
は、>または<がすでにわかっている場合は比較は起こ
らない;図1744−1,図1744−2) 【請求項243】 第1拡張ビットおよび第2拡張ビッ
トが第1ステータス状態にあるときには、第1デジタル
・データが第1多重バイト・データ値の最上位バイトで
あり、第2デジタル・データ値が第2多重バイト・デー
タ値の最上位バイトであることを第1拡張ビットおよび
第2拡張ビットが示す請求項241記載の方法。(表
2.57,表2.57,表2.59) 【請求項244】 第1拡張ビットおよび第2拡張ビッ
トが第4ステータス状態にあるときには、2つの等しい
データ値を比較した前回の命令に応答してデータ処理動
作が行われたことを、第1拡張ビットおよび第2拡張ビ
ットが示す請求項241記載の方法。(表2.57,表
2.58,表2.59) 【請求項245】 命令が予備命令および非予備命令の
いずれか一方であり、予備命令は第1拡張ビットおよび
第2拡張ビットの両方を修正して比較段階の結果を反映
させ、非予備命令は第1拡張ビットおよび第2拡張ビッ
トを修正してデフォルト状態にする請求項241記載の
方法。 【請求項246】 第1拡張ビットおよび第2拡張ビッ
トが第2ステータス状態にあるときには、第1拡張ビッ
トをネゲートし、第2拡張ビットをアサートする段階;
第1拡張ビットおよび第2拡張ビットが第3ステータス
状態にあるときには、第1拡張ビットをアサートし、第
2拡張ビットをネゲートする段階;および第1拡張ビッ
トおよび第2拡張ビットが第4ステータス状態にあると
きには、第1拡張ビットと第2拡張ビットの両方をアサ
ートする段階;によってさらに構成される請求項245
記載の方法。(表2.57,表2.58,表2.59)
(請求項28は、最大値および最小値関数が実現される
システムを説明する構造クレームである。) 【請求項247】 命令を記憶する命令記憶回路(2
0);命令を解読して複数の制御信号を設ける解読器
(19)であって、命令記憶回路に結合されて命令を受
信する解読器;第1デジタル・データ値を記憶する第1
記憶回路(vreg2 またはsreg,V[0〜7]レジスタ1
28またはG[0〜7]レジスタ302;図80または
図82);第2デジタル・データ値を記憶する第2記憶
回路(vreg1 またはsreg−−表2.36,表2.38参
照);第1デジタル・データ値と第2デジタル・データ
値とを比較する比較手段(ALU119またはALU3
04)であって、第1入力が第1記憶回路に結合されて
第1デジタル・データ値を受信し、第2デジタル・デー
タ値を受信する第2入力を有し、第1デジタル・データ
値と第2デジタル・データ値のどちらがより大きな値お
よび小さい値のいずれかであるのかを示す結果を設ける
出力を有する比較手段;および第2デジタル・データ値
がより大きい値およびより小さな値のいずれか一方であ
るときに、第2デジタル・データ値を第1記憶回路に選
択的に与える選択手段(制御回路構成115または制御
回路構成308)であって、第1記憶回路と第2記憶回
路とに結合される選択手段;によって構成されることを
特徴とするデータ・プロセッサ(10)。(図78,表
2.44,表2.36,表2.37,表2.51,表
2.38,図80,図82) 【請求項248】 比較手段が第2デジタル・データ値
を第1デジタル・データ値から減じて、結果を生成する
請求項247記載のデータ・プロセッサ。(図80,図
82) 【請求項249】 データ・プロセッサが:データ・プ
ロセッサがデフォルト状態にあることを示す第1ステー
タス状態;第2デジタル・データ値が第1デジタル・デ
ータ値よりも小さいことを示す第2ステータス状態;第
2デジタル・データ値が第1デジタル・データ値よりも
大きいことを示す第3ステータス状態;および第2デジ
タル・データ値が第1デジタル・データ値と等しいこと
を示す第4ステータス状態;の複数のステータス状態の
いずれか1つにある請求項247記載のデータ・プロセ
ッサ。(表2.57,表2.58,表2.59) 【請求項250】 命令により、第1デジタル・データ
値と第2デジタル・データ値のどちらがより大きな値で
あるかが決まり、データ・プロセッサが第3ステータス
状態にあるときに、選択手段が第2デジタル・データ値
を第1記憶回路に与える請求項247記載のデータ・プ
ロセッサ。(図80,図82) 【請求項251】 命令により、第1デジタル・データ
値と第2デジタル・データ値のどちらがより小さな値で
あるかが決まり、データ・プロセッサが第2ステータス
状態にあるときに、選択手段が第2デジタル・データ値
を第1記憶回路に与える請求項247記載のデータ・プ
ロセッサ。(図80,図82) 【請求項252】 第1拡張ビットおよび第2拡張ビッ
トの両方を記憶する第1制御レジスタ(VPCR102
またはSPCR208)であって、第1および第2拡張
ビットは命令の実行前のデータ・プロセッサのステータ
ス状態を示すために用いられる第1制御レジスタ;によ
ってさらに構成される請求項247記載のデータ・プロ
セッサ。(VPCR(102),SPCR(208)−
−図54,図74,表2.29,表2.31) 【請求項253】 データ・プロセッサが第1ステータ
ス状態にあるときに、第1デジタル・データが第1多重
バイト・データ値の最上位バイトであり、第2デジタル
・データ値が第2多重バイト・データ値の最上位バイト
であることを、第1拡張ビットおよび第2拡張ビットが
示す請求項252記載のデータ・プロセッサ。(表2.
57,表2.58,表2.59) 【請求項254】 第1拡張ビットおよび第2拡張ビッ
トが第4ステータス状態にあるときに、2つの等しいデ
ータ値を比較した前回の命令に応答してデータ処理動作
が実行されたことを、第1拡張ビットおよび第2拡張ビ
ットが示す請求項252記載のデータ・プロセッサ。
(表2.57,表2.58,表2.59) 【請求項255】 比較手段に結合されて、結果と結果
に対応するボロー値とを受信する修正回路(118また
は306)であって、第1制御レジスタに結合されて第
1拡張ビットと第2拡張ビットの両方を受信し、第1拡
張ビットおよび第2拡張ビットを選択的に修正する修正
回路;によってさらに構成される請求項252記載のデ
ータ・プロセッサ。(図80,図82) 【請求項256】 命令が予備命令および非予備命令の
いずれか一方であり、予備命令は第1拡張ビットおよび
第2拡張ビットの両方を修正して比較段階の結果を反映
させ、非予備命令は第1拡張ビットおよび第2拡張ビッ
トを修正してデータ・プロセッサをデフォルト状態にす
る請求項255記載の方法。(図1706−3) 【請求項257】 非予備命令の実行中に、第1デジタ
ル・データ値が第1多重バイト値の最下位バイトであ
り、第2デジタル・データ値が第2多重バイト値の最下
位バイトである請求項256記載の方法。(最小値命令
(min またはvmin);本文セクション2.5.19.
6,図1744−1,図1744−2に示されるmax ) 【請求項258】 データ・プロセッサが第2ステータ
ス状態にあるときに、第1拡張ビットがネゲートされ、
第2拡張ビットがアサートされる請求項256記載のデ
ータ・プロセッサ。(表2.57,表2.58,表2.
59) 【請求項259】 データ・プロセッサが第3ステータ
ス状態にあるときに、第1拡張ビットがアサートされ、
第2拡張ビットがネゲートされる請求項256記載のデ
ータ・プロセッサ。(表2.57,表2.58,表2.
59) 【請求項260】 データ・プロセッサが第4ステータ
ス状態にあるときに、第1拡張ビットと第2拡張ビット
の両方がアサートされる請求項256記載のデータ・プ
ロセッサ。(表2.57,表2.58,表2.59) 【請求項261】 符号制御値(SSGNビット174
またはVSGNビット176)を記憶する制御レジスタ
(ACR172)であって、符号制御値は第1デジタル
・データ値と第2デジタル・データ値のそれぞれが符号
つきのデータ値を示すときに第1論理状態になり、第1
デジタル・データ値と第2デジタル・データ値のそれぞ
れが符号なしのデータ値を示すときに第2論理状態にな
る制御レジスタによってさらに構成される請求項247
記載のデータ・プロセッサ。(ACR,SSGN,VS
GN:図22,表2.7) (請求項262ないし309はSC-01706A :延長動作の
拡大領域のためのメカニズムに対応する。) (請求項262は、命令実行中の2つの拡張ビットの使
用法を請求する構造クレームである。) 【請求項262】 データ処理命令を記憶する命令記憶
回路(20);(命令キャッシュ−−CMA14でもよ
い) データ処理命令に応答してデータ処理動作を実行する命
令実行手段(22)であって、命令記憶回路に結合され
てデータ処理命令を受信する命令実行手段;(マイクロ
シーケンサ) 複数の拡張値を記憶する記憶手段であって、複数の拡張
値のそれぞれはデータ処理動作の実行中に用いられ、記
憶手段は命令実行手段に結合されて複数の拡張値のそれ
ぞれを通信する記憶手段;および(ベクタ動作のための
VPCR(VX[1:0](VX0ビット104,VX
1ビット105))セクション2.3.33〜2.3.
37,セクション2.3.47およびセクション2.
3.48,スケーラ動作のためのSPCR(208)
(SX[1:0](SX0ビット210,SX1ビット
212))セクション2.4およびセクション2.4.
1 データ処理命令の実行中に複数の拡張値のそれぞれを条
件付きで修正する修正手段(118(ベクタ)または3
06(スケーラ))であって、記憶手段に結合されて、
データ処理命令に応答して条件付きで修正された複数の
拡張値のそれぞれを通信する修正手段;によって構成さ
れることを特徴とするデータ・プロセッサ(10)。
(セクション2.5.18〜2.5.19.11参照;
図78,図77−1(ベクタ),図82(スケーラ)) 【請求項263】 複数の拡張値が:ステータス情報値
を示す第1拡張ビット(VX0 104またはSX0
210);(キャリー,ボロー)およびデータ処理命令
のソース・オペランドに対応する符号値を示す第2拡張
ビット(VX1 105またはSX1 212)(加
算,減算,増分,減分動作);によって構成される請求
項262記載のデータ・プロセッサ。 【請求項264】 データ処理命令が予備命令および非
予備命令のいずれか一方であって:予備命令は、データ
処理命令の結果に応答して複数の拡張値のそれぞれを修
正し;非予備命令は、複数の拡張値のそれぞれをデフォ
ルト状態に修正する;請求項263記載のデータ・プロ
セッサ。(表2.34,図1706−1,図77−1,
図82,図74,図54,表2.31,表2.29) 【請求項265】 非予備命令が飽和命令であり、予備
命令が不飽和命令であって(セクション3およびセクシ
ョン3.1):結果に対応するオーバーフロー値(VV
ビット106またはSVビット214)がアサート状態
であり、データ処理命令が非予備命令であるときに、デ
ータ処理動作の結果が上位境界および下位境界のいずれ
か一方と置き換えられる;(飽和命令)および結果に対
応するオーバーフロー値がアサート状態であり、データ
処理命令が予備命令であるときに、データ処理動作の結
果が置き換えられない;(不飽和命令) 請求項264記載のデータ・プロセッサ。(セクション
2.5.9,p111,セクション2.5.19.1,
図74,表2.31,図54,表2.29,表2.4
4,表2.51) 【請求項266】 データ処理命令が非予備命令(add,
vadd, sub, vsub,inc, dec)であるときに、第1拡張
ビットおよび第2拡張ビットがネゲートされる請求項2
63記載のデータ・プロセッサ。(表2.44,表2.
51,表2.29,表2.31) 【請求項267】 データ処理命令が予備命令であると
きに、第1拡張ビットおよび第2拡張ビットが、データ
処理命令の実行に応答して修正される請求項263記載
のデータ・プロセッサ。(表2.44,表2.51,表
2.29,表2.31) 【請求項268】 データ処理動作が加算動作および減
算動作のいずれか1つ(add, addp, vadd, vaddp, sub,
subp, vsub, vsubp, addsx, addsxp, subsx, subsxp)
である請求項263記載のデータ・プロセッサ。(表
2.44,表2.51,表2.29,表2.31) 【請求項269】 データ処理動作が加算動作であると
きに第1拡張ビットがキャリー値であり、データ処理動
作が減算動作であるときに第1拡張ビットがボロー値で
ある請求項268記載のデータ・プロセッサ。(図17
06−1,表2.53,表2.54,表2.55,表
2.56) 【請求項270】 データ処理命令が第2拡張ビットに
基づくソース・オペランドを生成する請求項263記載
のデータ・プロセッサ。(符号拡張算術演算動作,セク
ション3および3.1;図1706−1,表2.54,
表2.56) 【請求項271】 データ処理動作が増分動作および減
分動作のいずれか一方である請求項263記載のデータ
・プロセッサ。(inc, incp, dec, decp−−表2.5
1,表2.62,表2.63) 【請求項272】 データ処理動作が増分動作であると
きに第1拡張ビットがキャリー値であり、データ処理動
作が減分動作であるときに第1拡張ビットがボロー値で
ある請求項271記載のデータ・プロセッサ。(表2.
62,表2.63) 【請求項273】 増分動作の実行中にも減分動作の実
行中にも第2拡張ビットが用いられない請求項271記
載のデータ・プロセッサ。(表2.62,表2.63) 【請求項274】 データ処理命令がデスティネーショ
ン・オペランドとソース・オペランドとを有し、データ
処理命令に応答して命令実行手段がデスティネーション
・オペランドをソース・オペランドと比較する請求項2
62記載のデータ・プロセッサ。(vcompp, セクション
3.2.1〜3.3,vmax, vmaxp,クション3.3およ
びセクション3.3.1,vmin, vminp, セクション
3.3〜3.3.3;表2.44,表2.47) 【請求項275】 複数の拡張値が選択的に修正され
て、データ処理動作の実行中に用いられたデスティネー
ション・オペランドとソース・オペランドとの関係を示
す請求項274記載のデータ・プロセッサ。(vcompp,
セクション3.2.1〜3.3,vmax, vmaxp, セクシ
ョン3.3および3.3.1,vmin, vminp, セクショ
ン3.3〜3.3.3;表2.57,表2.58,表
2.59) 【請求項276】 複数の拡張ビットが: i)デスティネーション・オペランドはソース・オペラ
ンドよりも大きい; ii)デスティネーション・オペランドはソース・オペ
ランドよりも小さい;および iii)デスティネーション・オペランドはソース・オ
ペランドと等しい;のうち1つの条件を示す請求項27
5記載のデータ・プロセッサ。(vmax, vmaxp, vmin, v
minp;表2.58,表2.59) 【請求項277】 データ処理動作の実行中に複数の拡
張ビットがデフォルト状態におかれる請求項276記載
のデータ・プロセッサ。(vmax;セクション2.5.1
9.5,表2.58) 【請求項278】 データ処理命令により、命令実行手
段がデータ処理命令のソース・オペランドを用いて左シ
フト動作を実行することができるようになる請求項26
2記載のデータ・プロセッサ。(vlshft(addpと同じオ
ペコード);セクション2.5.19.7,表2.4
4) 【請求項279】 複数の拡張値の第1値がソース・オ
ペランドの最下位ビットにシフトされる請求項278記
載のデータ・プロセッサ。(p149,セクション2.
5.19.7(vlshft)) 【請求項280】 データ処理命令により、命令実行手
段がデータ処理命令のソース・オペランドを用いて右シ
フト動作を実行することができるようになる請求項26
2記載のデータ・プロセッサ。(vrshft, vrshftp ;表
2.44,セクション2.5.19.8) 【請求項281】 複数の拡張値が:シフト・データ値
を示す第1拡張ビット(VX0ビット104またはSX
0ビット210);およびソース・オペランドの第1バ
イトを示す第2拡張ビット(VX1ビット105または
SX1ビット212);によって構成される請求項28
0記載のデータ・プロセッサ。(セクション2.5.1
9.8;表2.60) 【請求項282】 第2拡張ビットがアサートされる
(VX1=0)と、ソース・オペランドの前上位バイト
の最下位ビットがシフトされ、シフト・データ値として
第1拡張ビットに記憶される請求項281記載のデータ
・プロセッサ。(vrshftp ,表2.60,p149,セ
クション2.5.19.8) 【請求項283】第2拡張ビットがネゲートされる(V
X1=0)と、ソース・オペランドの第1バイトの最上
位ビットに符号値がシフトされる請求項281記載のデ
ータ・プロセッサ。(vrshftp [符号拡張のある右シフ
ト:符号なしの動作については0でシフトするXSGN
ビットに依存する],セクション2.5.19.8,表
2.60) 【請求項284】 データ処理命令により、命令実行手
段がネゲーション動作を実行することができるようにな
る請求項262記載のデータ・プロセッサ。(vneg, vn
egp ;表2.44,表2.51) 【請求項285】 複数の拡張ビットの第1ビット(V
X0ビット104またはSX0ビット210)が、ネゲ
ーション動作中にいつボローが生成されるかを示す請求
項284記載のデータ・プロセッサ。(vnegp ;セクシ
ョン2.5.19.9,表2.61) 【請求項286】 ネゲーション動作の実行中に複数の
拡張ビットがデフォルト状態になる請求項284記載の
データ・プロセッサ。(vneg;セクション2.5.1
9.9,表2.61) (請求項24は、add, addp, sub, subp, inc, incp, d
ec, decp命令における拡張ビットの一般的な使用法を説
明する方法クレームである。−−図1706−4) 【請求項287】 データ・プロセッサ内で算術演算命
令を実行する方法であって:ソース・オペランドおよび
デスティネーション・オペランドを有する算術演算命令
を受信する段階;(外部ピン,内部バス) 算術演算命令を解読して複数の制御信号を設ける段階;
(マイクロシーケンサ)第1記憶ロケーションから第1
拡張ビットにアクセスする段階であって、第1拡張ビッ
トがステータス情報値を与える段階;(キャリー,ボロ
ー) 第2記憶ロケーションから第2拡張ビットにアクセスす
る段階であって、第2拡張ビットは算術演算命令のソー
ス・オペランドに対応する符号値を与える段階;(加
算,減算,増分,減算動作において) 複数の制御信号に応答して算術演算動作を実行する段階
であって、第1拡張ビットと第2拡張ビットの両方が算
術演算動作の実行中に用いられて結果を設ける段階;第
1拡張ビットを選択的に修正して、結果に対応する被修
正ステータス情報値を記憶する段階;および第2拡張ビ
ットを選択的に修正して、結果に対応する被修正符号値
を記憶する段階;によって構成されることを特徴とする
方法。(図1706−4) 【請求項288】 算術演算動作が予備加算動作および
非予備加算動作のいずれか一方であって、予備加算動作
は第1拡張ビットおよび第2拡張ビットの両方を修正し
て結果を反映させ、非予備加算動作は、第1拡張ビット
および第2拡張ビットの両方をデフォルト状態にする請
求項287記載の方法。(add, addp,vadd, vaddp, vad
dsx, vaddsxp −−図1706−4) 【請求項289】 第1拡張ビットがキャリー値である
請求項288記載の方法。(図1706−4) 【請求項290】 予備加算動作が不飽和加算動作であ
り、非予備加算動作が飽和加算動作であって:結果に対
応するオーバーフロー値(VVビット106またはSV
ビット214)がアサート状態で、データ処理命令が非
予備加算命令であるときに、データ処理動作の結果が上
位境界および下位境界のいずれか一方と置き換えられ
る;(飽和命令)および結果に対応するオーバーフロー
値がアサート状態で、データ処理命令が予備加算命令で
あるときにデータ処理動作の結果が置き換えられない;
(不飽和命令) 請求項288記載の方法。(セクション3.1〜3.
2.1参照) 【請求項291】 第2拡張ビットを用いてソース・オ
ペランドを生成する段階;ソース・オペランドをデステ
ィネーション・オペランドに加算して結果を生成する段
階;算術演算動作が予備加算動作であるときに、第1拡
張ビットを修正して結果によってキャリー値が修正され
たか否かを示す段階;および算術演算動作が非予備加算
動作であるときに、第1拡張ビットおよび第2拡張ビッ
トの両方をデフォルト状態にする段階;によってさらに
構成される請求項289記載の方法。(図1706−
1) 【請求項292】 ソース・オペランドのビット幅が、
デスティネーション・オペランドの部分のビット幅より
も小さい第1データ値の部分であるときに、第2拡張ビ
ットを用いてソース・オペランドが生成される請求項2
91記載の方法。(図1706−1) 【請求項293】 算術演算動作が予備減算動作および
非予備減算動作のいずれか一方であって、予備減算動作
は第1拡張ビットおよび第2拡張ビットの両方を修正し
て結果を反映させ、非予備減算動作は第1拡張ビットお
よび第2拡張ビットの両方をデフォルト状態にする請求
項287記載の方法。(sub, subp, vsub, vsupb, vsub
sx, vsubsxp ;表2.55,セクション2.5.19.
2) 【請求項294】 第1拡張ビットがボロー値である請
求項293記載の方法。(表2.55,セクション2.
5.19.2) 【請求項295】 第2拡張ビットを用いてソース・オ
ペランドを生成する段階;ソース・オペランドをデステ
ィネーション・オペランドから減算して結果を生成する
段階;算術演算動作が予備減算動作であるときに、第1
拡張ビットを修正して結果によってボロー値が修正され
たか否かを示す段階;および算術演算動作が非予備減算
動作であるときに、第1拡張ビットおよび第2拡張ビッ
トの両方をデフォルト状態にする段階;によってさらに
構成される請求項294記載の方法。(図1706−
1) (請求項296は、vcompp, vmax, vmaxp, vmin, vminp
などの比較動作を実行するための方法である。) 【請求項296】 データ・プロセッサ内で比較命令を
実行する方法であって:ソース・オペランドおよびデス
ティネーション・オペランドを有する比較命令を受信す
る段階;(外部ピン,内部バス) 比較命令を解読して第1群の制御信号を設ける段階;
(マイクロシーケンサ) 第1記憶ロケーションから第1拡張ビットに、第2記憶
ロケーションから第2拡張ビットにアクセスする段階;
(比較,最大値および最小値動作における) 第1群の制御信号に応答してソース・オペランドをデス
ティネーション・オペランドと比較する段階であって、
第1拡張ビットと第2拡張ビットの両方が比較動作の実
行中に選択的に用いられて結果を設ける段階;および第
1拡張ビットおよび第2拡張ビットを選択的に修正し
て、ソース・オペランドをデスティネーション・オペラ
ンドと比較する段階の現在の結果を示す段階;によって
構成されることを特徴とする方法。(図1706−3) 【請求項297】 第1拡張ビットと第2拡張ビットと
が選択的に修正されて、比較命令の実行中に用いられた
デスティネーション・オペランドとソース・オペランド
との比較関係を示す請求項296記載の方法。(vcomp
p, vmax, vmaxp, vmin, vminp;図1706−3,表
2.57,表2.58,表2.59) 【請求項298】 条件付き命令を受信する段階;(vi
f ) 条件付き命令を解読して第2群の制御信号を設ける段
階;および(マイクロシーケンサ) 条件付き命令に応答して比較動作を実行する段階であっ
て、比較動作は第1拡張ビットと第2拡張ビットとを用
いて条件付きの結果を設ける段階;によってさらに構成
される請求項297記載の方法。(vcomppの後でvif を
実行する−−図1706−3) 【請求項299】 比較命令が予備比較命令および非予
備比較命令のいずれか一方であって、予備比較命令は第
1拡張ビットおよび第2拡張ビットの両方を選択的に修
正して結果を反映させ、非予備比較命令は第1拡張ビッ
トおよび第2拡張ビットの両方をデフォルト状態にする
請求項297記載の方法。(min, minp, max, maxp) 【請求項300】 第1拡張ビットと第2拡張ビットが
選択的に修正されて、以下の条件: i)デスティネーション・オペランドはソース・オペラ
ンドよりも大きい; ii)デスティネーション・オペランドはソース・オペ
ランドよりも小さい;および iii)デスティネーション・オペランドはソース・オ
ペランドと等しい;のいずれか1つを示す請求項297
記載の方法。(表2.57,表2.58,表2.59) 【請求項301】 ソース・オペランドをデスティネー
ション・オペランドと比較する段階の後で、第1拡張ビ
ットおよび第2拡張ビットの両方がデフォルト状態にな
る請求項297記載の方法。(図1706−3) (請求項302はvlshft, vrshft, vrshftp などのシフ
ト動作を実行する方法である。−−図1706−2) 【請求項302】 データ・プロセッサ内でシフト命令
を実行する方法であって:ソース・オペランドを有する
シフト命令を受信する段階;(外部ピン,内部バス/表
2.44参照) シフト命令を解読して複数の制御信号を設ける段階;
(マイクロシーケンサ) 第1記憶ロケーションから第1拡張ビットに、第2記憶
ロケーションから第2拡張ビットにアクセスする段階;
(左シフトおよび右シフト動作における−−第2拡張ビ
ットは右シフト動作にしか用いられない,セクション
2.5.19.7およびセクション2.5.19.8参
照) シフト値をソース・オペランドの第1ビットにシフトし
て被シフト・データ値を生成する段階であって、シフト
値は第1拡張ビットおよび第2拡張ビットの両方に応答
して決定される段階;およびシフト命令の実行に応答し
て、第1拡張ビットを選択的に修正して、修正された第
1拡張ビットを設ける段階;によって構成されることを
特徴とする方法。 【請求項303】 シフト値が第1拡張ビットである請
求項302記載の方法。(vlshft, vrshft−−図170
6−2) 【請求項304】 ソース・オペランドの第1ビットが
ソース・オペランドの最下位ビットである請求項303
記載の方法。(vlshft−−図1706−2) 【請求項305】 第1拡張ビットをシフトする段階の
後で、第1拡張ビットおよび第2拡張ビットの両方がデ
フォルト状態になる請求項304記載の方法。(非予
備) 【請求項306】 ソース・オペランドの第1ビットが
ソース・オペランドの最上位ビットである請求項303
記載の方法。(vrshft) 【請求項307】 第1拡張ビットをシフトする段階の
後で、第1拡張ビットおよび第2拡張ビットの両方がデ
フォルト状態になる請求項306記載の方法。(表2.
60) 【請求項308】 第2拡張ビットがネゲートされると
シフト値が符号ビットであり、第2拡張ビットがアサー
トされるとシフト値が第1拡張ビットである請求項30
2記載の方法。(vrshftp −−図1706−2,非予
備) 【請求項309】 左シフト動作の実行中は第2拡張ビ
ットが用いられない請求項302記載の方法。(表2.
60)/ 請求項4 (請求項310ないし332は、SC-01700A :スケーラ
およびベクタ飽和保護命令に対応する。) (請求項310は、AE内の飽和命令の実行を説明す
る。) 【請求項310】 データ処理命令を実行する方法であ
って:データ処理命令を受信する段階;(飽和命令:ad
d, sub, addsx, subsx, neg,abs, sat, vsat, vadd, vs
ub, vaddsx, vsubsx, vneg, vabs ) データ処理命令を解読して複数の制御信号(23または
25,図78参照)を設ける段階;第1記憶ロケーショ
ンからオーバーフロー値(SVビット214またはVV
ビット106,SPCRレジスタ208またはVPCR
レジスタ102内の1ビット)にアクセスする段階であ
って、このオーバーフロー値は結果がデータ値の範囲内
のある値でないときにアサートされ、結果がデータ値の
範囲内のある値であるときにネゲートされる段階;およ
びオーバーフロー値がアサートされると結果を修正して
所定の値に等しくなるようにする段階;によって構成さ
れることを特徴とする方法。(図54,表2.29,図
74,表2.31,図1700.2,図1700−1の
例も参照のこと) 【請求項311】 複数の制御信号に応答してデータ処
理動作を実行し、結果を生成する段階;によってさらに
構成される請求項310記載の方法。 【請求項312】 第2記憶ロケーション(SPCR2
08またはVPCR102)からオーバーフロー方向値
(SDビット216またはVDビット108)にアクセ
スする段階であって:オーバーフロー方向値がアサート
されるときは、結果が最大値よりも大きくなり;オーバ
ーフロー方向値がネゲートされるときは、結果が最小値
よりも小さくなる段階;によってさらに構成される請求
項310記載の方法。(図1700−2,図54,表
2.29,図74,表2.31) 【請求項313】 オーバーフロー値がアサートされ、
オーバーフロー方向値がアサートされるときは、所定の
値は正の値が最も大きくなる値である請求項312記載
の方法。(図1700−2,表2.39,表2.40,
セクション2.5.9) 【請求項314】 オーバーフロー値がアサートされ、
オーバーフロー方向値がネゲートされるときは、所定の
値は負の値が最も大きくなる値および0のいずれか一方
である請求項312記載の方法。(図1700−2,表
2.39,表2.40,セクション2.5.9) 【請求項315】 結果が2の補数の符号つきのデータ
値である請求項312記載の方法。(図1700−2,
表2.39,表2.40,セクション2.5.9) 【請求項316】 オーバーフロー値がアサートされ、
オーバーフロー方向値がアサートされるときは、所定の
値は16進数$7Fに等しくなる請求項315記載の方
法。(図1700−2,表2.29,表2.31,セク
ション2.5.9) 【請求項317】 オーバーフロー値がアサートされ、
オーバーフロー方向値がネゲートされるときは、所定の
値は16進数$80に等しくなる請求項315記載の方
法。(図1700−2,表2.29,表2.31,セク
ション2.5.9) 【請求項318】 結果が符号なしのデータ値である請
求項312記載の方法。(図1700−2,表2.2
9,表2.31,セクション2.5.9) 【請求項319】 オーバーフロー値がアサートされ、
オーバーフロー方向値がアサートされるときは、所定の
値は16進数$FFに等しくなる請求項318記載の方
法。(図1700−2,表2.29,表2.31,セク
ション2.5.9) 【請求項320】 オーバーフロー値がアサートされ、
オーバーフロー方向値がネゲートされるときは、所定の
値は16進数$00に等しくなる請求項318記載の方
法。(図1700−2,表2.29,表2.31,セク
ション2.5.9) 【請求項321】 データ処理命令のオペランドが、ス
ケーラ・データ値とベクタ・データ値の一部とのいずれ
か一方である請求項310記載の方法。(表2.44,
表2.51) 【請求項322】 オペランドがスケーラ・データ値で
あるときには、データ処理命令がネモニック形式の「sa
t 」を有し;オペランドがベクタ・データ値の一部であ
るときには、データ処理命令はネモニック形式の「vsa
t」を有する;請求項321記載の方法。(表2.4
4,表2.51) (請求項323はAE内での飽和命令の用途を請求す
る。) 【請求項323】 データ処理命令を受信するインター
フェース手段(命令キャッシュ20またはCMA1
4);(外部ピン,内部バス) データ処理命令を解読して複数の制御信号を設けるシー
ケンサであって、インターフェース手段に結合されてデ
ータ処理命令を受信するシーケンサ;(マイクロシーケ
ンサ) 複数の制御信号に応答してデータ処理動作を実行する命
令実行手段(ALU304,制御回路308またはAL
U119,制御回路構成115)であって、データ処理
動作の結果を設け、シーケンサに結合されて複数の制御
信号を受信する命令実行手段;(スケーラ・エンジン,
ベクタ・エンジン) オーバーフロー値(SVビット214またはVVビット
106)を記憶する第1記憶回路(SPCR208また
はVPCR102の1ビット)であって、オーバーフロ
ー値は結果がデータ値の範囲のある値でないときにアサ
ートされ、結果がデータ値の範囲のある値であるときに
ネゲートされる第1記憶回路;および第1記憶回路に結
合されてオーバーフロー値を受信し、命令実行手段に結
合されて結果を受信する第1修正回路(ベクタ118ま
たはスケーラ306)であって、オーバーフロー値がア
サートされると結果を修正して所定の値に等しくなるよ
うにする第1修正回路;によって構成されることを特徴
とするデータ・プロセッサ(10)。(図78,図8
0,図82) 【請求項324】 オーバーフロー方向値(SDビット
216またはVDビット108)を記憶する第2記憶回
路(SPCR208またはVPCR102の1ビット)
であって、結果が最大値よりも大きいときにはオーバー
フロー方向値はアサートされ、結果が最小値よりも小さ
いときにはオーバーフロー方向値がネゲートされる第2
記憶回路;によってさらに構成される請求項323記載
のデータ・プロセッサ。(図54,表2.29,図7
4,表2.31) 【請求項325】 オーバーフロー値がアサートされ、
オーバーフロー方向値がアサートされるときは、所定の
値は正の値が最も大きくなる値である請求項324記載
の方法。(図1700−2,セクション2.5.9,表
2.29,表2.31) 【請求項326】 オーバーフロー値がアサートされ、
オーバーフロー方向値がネゲートされるときは、所定の
値は負の値が最も大きくなる値および0のいずれか一方
である請求項324記載の方法。(図1700−2,セ
クション2.5.9,表2.29,表2.31) 【請求項327】 信号制御値(SSGNビット174
またはVSGNビット176)を記憶する第3記憶回路
(ACR172の1ビット)であって、結果が2の補数
である符号つきのデータ値であるときには符号制御値が
アサートされ、結果が符号なしのデータ値であるときに
は符号制御値がネゲートされる第3記憶回路;によって
さらに構成される請求項323記載のデータ・プロセッ
サ。(ACR;図22,表2.7) 【請求項328】 符号制御値がアサートされ、オーバ
ーフロー値がアサートされ、オーバーフロー方向値がア
サートされるときは、所定の値は正の値が最も大きくな
る値である請求項327記載の方法。(図1700−
2,セクション2.5.9,表2.29,表2.31) 【請求項329】 符号制御値がネゲートされ、オーバ
ーフロー値がアサートされ、オーバーフロー方向値がネ
ゲートされるときは、所定の値は負の値が最も大きくな
る符号つきの数である請求項327記載の方法。(図1
700−2,セクション2.5.9,表2.29,表
2.31) 【請求項330】 符号制御値がネゲートされ、オーバ
ーフロー値がアサートされ、オーバーフロー方向値がア
サートされるときは、所定の値は正の値が最も大きくな
る符号なしの数である請求項327記載の方法。(図1
700−2,セクション2.5.9,表2.29,表
2.31) 【請求項331】 符号制御値がネゲートされ、オーバ
ーフロー値がアサートされ、オーバーフロー方向値がネ
ゲートされるときは、所定の値は0に等しくなる請求項
327記載の方法。(図1700−2,セクション2.
5.9,表2.29,表2.31) 【請求項332】 データ処理命令のオペランドが、ス
ケーラ・データ値とベクタ・データ値の一部とのいずれ
か一方である請求項324記載の方法。(表2.44,
表2.51) ( 請求項333ないし372は開示SC1707A :ベクタ要
素を集合する並行計算メカニズムに対応する。−−図1
707−1ないし図1707−5,セクション2.5.
12.2,表2.46参照) 【請求項333】 複数の処理要素(16)を有するデ
ータ・プロセッサ(10)内でデータ処理命令を実行す
る方法であって:データ処理命令を受信する段階;(DA
DD, DMIN, DMAX, DSROT ) データ処理命令に応答して下向きシフト値(#S)にア
クセスする段階;(DADD #S, VO ) 複数の処理要素(16)の第1部分から第1データ値に
選択的にアクセスする段階であって、複数の処理要素
(16)の第1部分は下向きシフト値に応答して決定さ
れる段階;第1データ値を複数の処理要素(16)の第
2部分のそれぞれに転送する段階であって、複数の処理
要素(16)の第2部分は下向きシフト値に応答して決
定される段階;[従来技術との差は、従来技術が第1デ
ータ値を1つのPEに転送するだけなのに対して、本発
明は第1データ値を2**N個のPE(たとえば1,2,
4,8など)に転送することである;下向きシフト値
は、次のいくつのPEが第1データ値を受け取るかを決
める] 複数の処理要素(16)の第2部分のそれぞれで第1デ
ータ値を用いてデータ処理動作を実行する段階;および
データ処理動作の結果を複数の処理要素(16)の第2
部分のそれぞれに記憶する段階;によって構成されるこ
とを特徴とする方法。(**DADD命令は実現される符号
拡張命令を有するが、将来的にそうなる。) 【請求項334】 データ処理動作が第1データ値と、
複数の第2データ値のうちの1つを両方とも用いる数学
的計算であって、複数の第2データ値のそれぞれが複数
の処理要素のうちの対応する処理要素に記憶される請求
項333記載の方法。(図1701−1ないし図170
1−5) 【請求項335】 第1メモリ記憶回路から複数のイネ
ーブル値にアクセスする段階であって、複数のイネーブ
ル値のそれぞれが複数の処理要素の1つに対応する段
階;(VT)および複数の処理要素の第2部分のそれぞ
れが、選択的に複数のイネーブル値の対応する値に応答
してデータ処理動作の結果を記憶することができるよう
にする段階;によってさらに構成される請求項333記
載の方法。(図74,表2.31) 【請求項336】 データ処理動作が、第1データ値が
複数の第2データ値の1つと合計される加算動作であっ
て、複数の第2データ値のそれぞれは複数の処理要素の
うちの対応する処理要素に記憶される請求項333記載
の方法。(図1707−1ないし図1707−5;DADD
命令は、これらの命令がAEに追加された場合に符号拡
張を決定するために用いられる) 【請求項337】 第2メモリ記憶回路(VPCR10
2の1ビット)から第1拡張ビット(VX0ビット10
4)にアクセスして、第1拡張ビットがステータス情報
値を設ける段階;(キャリー) 加算動作の実行中に第1拡張ビットを用いる段階;およ
び第1拡張ビットを選択的に修正して加算動作の結果に
対応する修正されたステータス情報値を記憶する段階;
によってさらに構成される請求項336記載の方法。
(表2.64,表2.53) 【請求項338】 修正されたステータス情報値が、加
算動作の実行中にキャリー値がいつ生成されるかを示す
請求項337記載の方法。(表2.64,表2.53) 【請求項339】 データ処理命令が予備命令および非
予備命令のいずれか一方であり:予備命令は加算動作の
結果に応答して第1拡張ビットを修正し;非予備命令は
第1拡張ビットを修正してデフォルト状態にする;請求
項337記載の方法。(表2.64,表2.53) 【請求項340】 非予備命令(dadd)が飽和命令であ
り、予備命令(daddp )が不飽和命令であって:結果に
対応するオーバーフロー値がアサート状態であって、デ
ータ処理命令が非予備命令であるときに、加算動作の結
果が上位境界および下位境界のいずれか一方と置き換え
られる;および結果に対応するオーバーフロー値がアサ
ート状態であって、データ処理命令が予備命令であると
きに、加算動作の結果が置き換えられない;請求項33
9記載の方法。(表2.64,表2.53,表2.44
−−「dadd」および「daddp 」のみに言及) 【請求項341】 データ処理命令が非予備命令である
ときに、第1拡張ビットをネゲートする段階;およびデ
ータ処理命令が予備命令であるときに、データ処理命令
の実行に応答して第1拡張ビットを選択的に修正する段
階;によってさらに構成される請求項340記載の方
法。(表2.64,表2.53,表2.44−−「dad
d」および「daddp 」のみに言及) 【請求項342】 データ処理命令が非予備命令である
ときに、データ処理命令がネモニック形式の「dadd」を
有し、データ処理命令が予備命令であるときにデータ処
理命令がネモニック形式の「daddp 」を有する請求項3
39記載の方法。(表2.64,表2.53,表2.4
4−−「dadd」および「daddp 」のみに言及) 【請求項343】 データ処理動作が:複数の処理要素
の第2部分のそれぞれが、第1データ値を複数の第2デ
ータ値の1つと比較することができるようにする段階で
あって、複数の第2データ値のそれぞれが複数の処理要
素の第2部分のうちの対応する処理要素に記憶されてい
る段階;および第1データ値を選択的に転送して、複数
の処理要素の第2部分のうちの対応する処理要素に記憶
する段階;によって構成される請求項333記載の方
法。(表2.64,表2.58,表2.59,表2.4
4−−dmin(p), dmax(p)) 【請求項344】 データ処理動作の結果が最大値およ
び最小値のいずれか一方である請求項343記載の方
法。(dmin, dminp, dmax, dmaxp;表2.64,表2.
58,表2.59,表2.44) 【請求項345】 記憶ロケーションから第1拡張ビッ
ト(VX0 104)および第2拡張ビット(VX1
105)にアクセスする段階であって、第1拡張ビット
および第2拡張ビットがデータ処理命令の受信に先立っ
て実行されたデータ処理動作の前回の結果を示す段階;
複数の処理要素の第2部分のそれぞれが比較することが
できるようにする段階の実行中に、第1拡張ビットおよ
び第2拡張ビットを用いる段階;およびデータ処理動作
に応答して第1拡張ビットおよび第2拡張ビットを選択
的に修正する段階;によってさらに構成される請求項3
43記載の方法。(表2.64,表2.58,表2.5
9,表2.44) 【請求項346】 第1拡張ビットおよび第2拡張ビッ
トが:第1ステータス状態では第1拡張ビットおよび第
2拡張ビットはデフォルト状態である;第1拡張ビット
および第2拡張ビットが第2ステータス状態にあるとき
には、第1拡張ビットおよび第2拡張ビットは、第2群
のデータ値の1つが第1データ値よりも小さいことを示
す;第1拡張ビットおよび第2拡張ビットが第3ステー
タス状態にあるときには、第1拡張ビットおよび第2拡
張ビットは、第2群のデータ値の1つが第1データ値よ
りも大きいことを示す;および第1拡張ビットおよび第
2拡張ビットが第4ステータス状態にあるときには、第
1拡張ビットおよび第2拡張ビットは、第2群のデータ
値の1つが第1データ値と等しいことを示す;これらの
複数のステータス状態を集合的に表す請求項345記載
の方法。(表2.64,表2.58,表2.59) 【請求項347】 データ処理動作が:複数の処理要素
の第2部分のそれぞれに第1データ値を選択的に記憶す
る段階;によって構成される請求項333記載の方法。
(dsrot ;表2.43,セクション2.5.11.2で
はVtビットはPEが下隣にどのような値を与えるかに
影響を与えないと述べている;受信側PEのすべてが第
1データ値を記憶するわけではない) 【請求項348】 データ処理命令がネモニック形式の
「dsrot 」を有する請求項347記載の方法。(表2.
43,セクション2.5.11.2) 【請求項349】 複数の処理要素の第3部分から第3
データ値にアクセスする段階;および第3データ値を、
複数の処理要素の第1部分のそれぞれに選択的に転送す
る段階;によってさらに構成される請求項347記載の
方法。(表2.43,セクション2.5.11.2;終
点から始点に折り返す) 【請求項350】 第3データ値を与える複数の処理要
素の第3部分の1つを示すためにレジスタが用いられる
請求項349記載の方法。(PESR220,表2.4
3,セクション2.5.11.2,図25) 【請求項351】 下向きシフト値がデータ処理命令の
オペランドである請求項333記載の方法。(表2.4
4,セクション2.5.12.2,図1700−1ない
し図1700−5) 【請求項352】 複数の処理要素のそれぞれが処理要
素番号に対応して、処理要素番号は複数のビット(64
個のPEには6ビットが必要)を用いる二値表現を有
し、複数のビットの最下位ビットが0のビット位置を有
する請求項333記載の方法。(表2.44,セクショ
ン2.5.12.2,図1700−1ないし図1700
−5) 【請求項353】 下向きシフト値が複数の処理要素の
それぞれの処理要素番号の二値表現においてビット位置
を示す請求項352記載の方法。(表2.44,セクシ
ョン2.5.12.2,図1700−1ないし図170
0−5) 【請求項354】 複数の処理要素の第1部分が、下向
きシフト値により示されるビット位置がネゲートされる
第1群の処理要素番号に対応する複数の処理要素のそれ
ぞれを含み、第1の所定値が複数のより上位のビット位
置に記憶される請求項353記載の方法。(表2.4
4,セクション2.5.12.2,図1700−1ない
し図1700−5) 【請求項355】 複数の処理要素の第2部分が、下向
きシフト値により示されるビット位置がアサートされる
第2群の処理要素番号に対応する複数の処理要素のそれ
ぞれを含み、第2の所定値が複数のより上位のビット位
置に記憶される請求項354記載の方法。(表2.4
4,セクション2.5.12.2,図1700−1ない
し図1700−5) 【請求項356】 複数の処理要素の第1部分が、下向
きシフト値により示されるビット位置がアサートされる
第1群の処理要素番号に対応する複数の処理要素のそれ
ぞれを含み、第1の所定値が複数のより上位のビット位
置に記憶される請求項353記載の方法。(表2.4
4,セクション2.5.12.2,図1700−1ない
し図1700−5) 【請求項357】 複数の処理要素の第2部分が、下向
きシフト値により示されるビット位置がネゲートされる
第2群の処理要素番号に対応する複数の処理要素のそれ
ぞれを含み、第2の所定値が複数のより上位のビット位
置に記憶される請求項356記載の方法。(表2.4
4,セクション2.5.12.2,図1700−1ない
し図1700−5) 手段および機能(32の請求項の複写) 【請求項358】 データ処理命令を受信するインター
フェース回路(命令キャッシュ20またはCMA1
4);(DADD, DMIN, DMAX, DSROT ) データ処理命令に応答して下向きシフト値にアクセスす
る手段(マイクロシーケンサ22)であって、インター
フェース回路に結合されてデータ処理命令を受信するア
クセス手段;(DADD #S, V0 ) 複数のデータ値を記憶する複数の処理要素(16);複
数の処理要素の第1部分から第1データ値に選択的にア
クセスする手段(制御回路構成115)であって、複数
の処理要素の第1部分は下向きシフト値に応答して決定
され、選択的アクセス手段が複数の処理要素に結合され
る選択的アクセス手段;第1データ値を複数の処理要素
の第2部分のそれぞれに転送する手段(mux310,
312,314,316,318,320,322,3
24から選択された1つ)であって、複数の処理要素の
第2部分は下向きシフト値に応答して決定され、転送手
段が選択的アクセス手段に結合される転送手段;複数の
処理要素の第2部分のそれぞれが第1データ値を用いて
データ処理動作を行うことができるようにするイネーブ
ル手段(ALU119)であって、複数の処理要素に結
合されるイネーブル手段;およびデータ処理動作の結果
を複数の処理要素の第2部分のそれぞれに記憶する第1
記憶回路([x]レジスタ128のうちの1つ);によ
って構成されることを特徴とするデータ・プロセッサ。
(図78,図80,図1707−3,図1707−4,
図1707−5) 【請求項359】 データ処理動作が第1データ値と、
複数の第2データ値のうちの1つとを両方とも用いる数
学的計算であって、複数の第2データ値のそれぞれが複
数の処理要素のうちの対応する処理要素に記憶される請
求項358記載のデータ・プロセッサ。(図1707−
1ないし図1707−5) 【請求項360】 複数のイネーブル値(Vtビット1
10)を記憶する第2記憶回路(VPCR102の1ビ
ット)であって、複数のイネーブル値のそれぞれが複数
の処理要素の1つに対応し、複数のイネーブル値のそれ
ぞれは、複数の処理要素の第2部分のそれぞれが複数の
イネーブル値のうちの対応する1つの値に応答してデー
タ処理動作の結果を記憶することができるようにする第
2記憶回路;によってさらに構成される請求項358記
載のデータ・プロセッサ。(図74,表2.31) 【請求項361】 データ処理動作が、第1データ値が
複数の第2データ値の1つと合計される加算動作であっ
て、複数の第2データ値のそれぞれは複数の処理要素の
うちの対応する処理要素に記憶される請求項358記載
の方法。(図1707−1ないし図1707−5) 【請求項362】 第1拡張ビット(VX0ビット10
4)を記憶する第3メモリ記憶回路(VPCR102の
1ビット)であって、第1拡張ビットがステータス情報
値を設ける第3メモリ記憶回路;(キャリー) 第2拡張ビットを記憶する第4メモリ記憶回路であっ
て、第2拡張ビットが複数の処理要素の第1部分のそれ
ぞれの第1データ値に対応する符号値を設ける第4メモ
リ記憶回路;および第1拡張ビットを選択的に修正して
加算動作の結果に対応する修正されたステータス情報値
を記憶する修正手段(118)であって、修正手段は第
2拡張ビットを選択的に修正して第1データ値の符号値
に対応する修正された符号値を記憶する修正手段;によ
ってさらに構成される請求項361記載のデータ・プロ
セッサ。(図1−64,表2.31,図80) 【請求項363】 修正されたステータス情報値が、加
算動作の実行中にキャリー値がいつ生成されるかを示す
請求項362記載のデータ・プロセッサ。(表2.6
4,表2.53) 【請求項364】 データ処理命令が予備命令および非
予備命令のいずれか一方であり:予備命令は加算動作の
結果に応答して第1拡張ビットおよび第2拡張ビットの
それぞれを修正し;非予備命令は第1拡張ビットおよび
第2拡張ビットのそれぞれを修正してデフォルト状態に
する;請求項362記載の方法。(表2.64,表2.
53) 【請求項365】 データ処理動作の結果が最大値およ
び最小値のいずれか一方である請求項358記載のデー
タ・プロセッサ。(dmin, dminp, dmax, dmaxp) 【請求項366】 第1拡張ビットおよび第2拡張ビッ
ト(VX1ビット105)を記憶する記憶ロケーション
(VPCR102)であって、第1拡張ビットおよび第
2拡張ビットは、データ処理命令の受信に先立って実行
されたデータ処理動作の前回の結果を示し、第1拡張ビ
ットおよび第2拡張ビットがデータ処理動作実行中に用
いられる記憶ロケーション;によってさらに構成される
請求項358記載のデータ・プロセッサ。(図74,表
2.31,表2.64,表2.58,表2.59,表
2.44) 【請求項367】 データ処理動作に応答して第1拡張
ビットおよび第2拡張ビットを選択的に修正する修正手
段(118);によってさらに構成される請求項366
記載のデータ・プロセッサ。(図80,表2.31,表
2.64,表2.58,表2.59,表2.44) 【請求項368】 データ処理動作の実行中に、第1デ
ータ値が複数の処理要素の第2部分のそれぞれにコピー
される請求項358記載のデータ・プロセッサ。(表
2.43,セクション2.5.11.2) 【請求項369】 データ処理命令がネモニック形式の
「dsrot 」を有する請求項368記載のデータ・プロセ
ッサ。(表2.43,セクション2.5.11.2) 【請求項370】 選択的アクセス手段が、複数の処理
要素の第3部分から第3データ値にアクセスして、転送
手段が第3データ値を複数の処理要素の第1部分のそれ
ぞれに転送する請求項368記載のデータ・プロセッ
サ。(表2.43,セクション2.5.11.2) 【請求項371】 第3データ値を設ける複数の処理要
素の第3部分の1つを示すレジスタ;によってさらに構
成される請求項370記載のデータ・プロセッサ。(P
ESR220;図25) 【請求項372】 下向きシフト値がデータ処理命令の
オペランドである請求項358記載のデータ・プロセッ
サ。 (請求項373ないし412はSC-01739A :SIMDア
ーキテクチャにおける命令の多重レベル条件付き実行に
対応する。) *セクション3.5.2.2:VtおよびVhビットに
より影響を受ける命令 *セクション5.5.1:例 *セクション2.5.18および2.5.19:vif
/elseの説明および状態図 *セクション2.3.35〜2.3.37:Vtおよび
Vhビットの定義 (請求項373はELSE命令を請求する方法クレームであ
る。) 【請求項373】 データ・プロセッサ(10)内で命
令を実行する方法であって: 第1命令を受信する段階;(マイクロシーケンサ22) 第1命令を解読(19)して、第1群の制御信号(信号
23の一部)を設ける段階;複数の制御信号の第1部分
に応答して複数の処理要素(16)のうちイネーブルに
なった処理要素からイネーブル値(Vtビット110)
にアクセスして、イネーブル値により、複数の処理要素
のうちのイネーブルになった処理要素が選択的に命令の
実行に関与することができるようになる段階;複数の制
御信号の第2部分に応答して複数の処理要素のうちのイ
ネーブルになった処理要素から履歴値(VHビット11
2)にアクセスする段階;および履歴値の論理状態に応
答してイネーブル値を選択的に修正する(115,11
8,102)段階;によって構成されることを特徴とす
る方法。(図75,図72,図77,図87,表2.3
2,表2.48) 【請求項374】 複数の制御信号の第1部分に応答し
て複数の処理要素のイネーブルになった部分のそれぞれ
から複数のイネーブル値にアクセスする段階であって、
複数のイネーブル値のそれぞれによって、複数の処理要
素のうち対応する処理要素が選択的に命令の実行に関与
することができるようになる段階;(VTビット) 複数の制御信号の第2部分に応答して複数の処理要素の
イネーブルになった部分のそれぞれから複数の履歴値に
アクセスして、複数の履歴値のそれぞれが複数の処理要
素のイネーブルになった部分の1つに対応する段階;
(VHビット)および複数の履歴値のうちの対応する値
の論理状態に応答して複数のイネーブル値のそれぞれを
選択的に修正する段階;によってさらに構成される請求
項373記載の方法。(図75,図72,図77,表
2.32) 【請求項375】 第1命令がネモニック形式の「vels
e 」を有する請求項373記載の方法。(セクション
2.5.18および2.5.19,表2.47) 【請求項376】 選択的に修正する段階が:複数の履
歴値のうちの対応する1つの値が第1論理状態にあると
きに複数のイネーブル値の第1値を補足する段階;およ
び(VH=0のときVTは1から0へ、0から1に変化
する,移行4,5,7,8) 複数の履歴値のうちの対応する1つの値が第2論理状態
にあるときに複数のイネーブル値の第1値をネゲートす
る段階;(VH=1のときVT=0,移行6)によって
さらに構成される請求項373記載の方法。(表2.4
8,図85) 【請求項377】 複数のイネーブル値のうち対応する
1つの値がアサートされた論理状態にあるときに複数の
履歴値の第1値をアサートする段階;(現在の状態:V
T=1,VH=0,次の状態:VT=0,VH=1−−
移行7)によってさらに構成される請求項373記載の
方法。(表2.48,図85) 【請求項378】 複数のイネーブル値のうち対応する
値がアサートされた論理状態であって、前回実行された
命令の条件が満たされたことを示す請求項377記載の
方法。(表2.48,図85) 【請求項379】 複数のイネーブル値のうち対応する
値がネゲートされた論理状態であって、前回実行された
命令の条件が満たされていないことを示す請求項377
記載の方法。(表2.48,図85) 【請求項380】 第1命令が第2命令の実行の後で実
行される方法であって、第2命令を実行する方法が: 第2命令を受信する段階;(VIF) 第2命令を解読して、第2群の制御信号を設ける段階;
第2群の制御信号の第1部分に応答して処理要素からイ
ネーブル値にアクセスする段階;イネーブル値がアサー
ト状態にあるときに、処理要素が選択的に第2命令の実
行に関与することができるようにする段階;複数の制御
信号の第2部分に応答して比較動作を実行し、処理要素
が関与することができるときには比較動作の実行中に処
理要素が用いられる段階;および処理要素が関与するこ
とができるときに、処理要素に対応するイネーブル値を
選択的にネゲートし、比較動作の条件が満たされていな
い場合はイネーブル値がネゲートされる段階;によって
構成される請求項373記載の方法。(表2.48,図
85) 【請求項381】 第2群の制御信号の第1部分に応答
して複数の処理要素のそれぞれから複数のイネーブル値
にアクセスする段階;複数の処理要素の部分が選択的に
第2命令の実行に関与することができるようにする段階
であって、複数の処理要素の部分のそれぞれがアサート
状態のイネーブル値を有する段階;複数の制御信号の第
2部分に応答して比較動作を実行し、複数の処理要素の
第2部分が比較動作の実行中に用いられる段階;および
比較動作の条件が満たされていない場合は、複数の処理
要素の部分に対応する複数のイネーブル値の部分のそれ
ぞれを選択的にネゲートする段階;によってさらに構成
される請求項380記載の方法。(表2.48,図8
5) 【請求項382】 第3命令を受信する段階;(ENDIF
) 第3命令を解読して第3群の制御信号を設ける段階;複
数のイネーブル値のそれぞれをアサートする段階;およ
び複数の履歴値のそれぞれをネゲートする段階;によっ
てさらに構成される請求項373記載の方法。(表2.
48,図85) 【請求項383】 第3命令がネモニック形式の「vend
if」を有する請求項382記載の方法。(表2.48,
図85) 【請求項384】 第2命令がネモニック形式の「vif
」を有する1組の命令の1つである請求項382記載
の方法。(表2.47) (請求項385は、ELSE命令と履歴ビットの概念とを実
現するデータ・プロセッサを説明する。) 【請求項385】 第1命令を記憶する記憶手段(20
またはポート論理17);(命令はどのようにデコーダ
に到達するか) 第1命令を解読して第1群の制御値(23)を設ける命
令解読手段(19)であって、記憶手段に結合されて第
1命令を受信する命令解読手段;(マイクロシーケン
サ) デジタル・データ値を記憶する処理要素(16);(P
E) イネーブル値を記憶する第1記憶回路(Vtビット11
0)であって、イネーブル値は処理要素に対応し、処理
要素が選択的に命令の実行に関与することができるよう
にする第1記憶回路;(VTビット) 履歴値を記憶する第2記憶回路(Vhビット112)で
あって、履歴値は処理要素に対応し、履歴値がイネーブ
ル値を選択的に修正するために用いられる第2記憶回
路;および(VHビット) 履歴値の論理状態に応答してイネーブル値を選択的に修
正する修正回路(118)であって、第1記憶回路およ
び第2記憶回路に結合されている修正回路;によって構
成されることを特徴とするデータ・プロセッサ。(図7
5,図72,図77,表2.32) 【請求項386】 複数のデジタル・データ値を記憶す
る複数の処理要素(16);によってさらに構成される
請求項385記載のデータ・プロセッサ。(PE,図7
5) 【請求項387】 第1記憶回路が複数のイネーブル値
を記憶し、複数のイネーブル値のそれぞれが複数の処理
要素の1つに対応し、複数のイネーブル値のそれぞれが
複数の処理要素のうちの対応する1つの処理要素を選択
的に命令の実行に関与することができるようにする請求
項386記載のデータ・プロセッサ。(VTビット(1
10);図72,表2.32) 【請求項388】 第2記憶回路が複数の履歴値を記憶
し、複数の履歴値のそれぞれが複数の処理要素の1つに
対応し、複数の履歴値のそれぞれが複数のイネーブル値
のうちの対応する1つの値を選択的に修正するために用
いられる請求項387記載のデータ・プロセッサ。(V
Hビット(112);図72,表2.32) 【請求項389】 複数の履歴値のうちの対応する1つ
の履歴値の論路状態に応答して、修正回路(118)が
複数のイネーブル値のそれぞれを選択的に修正する請求
項388記載のデータ・プロセッサ。(図77) 【請求項390】 第1命令がIF, ELSEプログラミング
構造のELSE部分を実行するために用いられる請求項38
9記載のデータ・プロセッサ。(追加本文,表3.1
3,表3.14) 【請求項391】 複数の履歴ビットのうち対応する1
つのビットが第1論理状態にあるときに、修正回路が複
数のイネーブル値の第1値を補足し、複数の履歴値のう
ち対応する1つの値が第2論理状態にあるときに修正回
路が複数のイネーブル値の第1値をネゲートする請求項
389記載のデータ・プロセッサ。(表2.48,図8
5) 【請求項392】 複数のイネーブル値のうち対応する
1つの値がアサートされた論理状態にあるときに、複数
の履歴値のうち第1値がアサートされる請求項389記
載のデータ・プロセッサ。(表2.48,図85) 【請求項393】 第2命令が第1命令の実行に先立っ
て実行され、第2命令は複数のデジタル・データ値の第
1値と複数のデジタル・データ値の第2値とを比較し
て、所定の条件をテストする請求項389記載のデータ
・プロセッサ。(VIF ;表2.48,表3.13,表
3.14) 【請求項394】 所定の条件が偽であるときに、第2
命令が第1記憶回路に記憶される複数のイネーブル値の
それぞれをネゲートする請求項389記載のデータ・プ
ロセッサ。(If条件が偽,VT=0)(表2.48,図
85) 【請求項395】 第3命令が第1命令の実行の後に実
行され、第3命令は複数のイネーブル値のそれぞれをア
サートし、複数の履歴値のそれぞれをネゲートする請求
項385記載のデータ・プロセッサ。(VENDIF)(表
2.48,図85) (請求項396はDSKIPE命令を実行する方法を請求す
る。) *セクション2.4.3.7〜2.4.5:命令タイプ
・テーブル *セクション2.5.19.11〜2.5.21;命令
が何を行うかの定義 *セクション5.3および5.4:命令の流れ *セクション5.5.1:ループの例 【請求項396】 データ・プロセッサ内で命令を実行
する方法であって:オペランドを有する命令を受信する
段階;命令を解読して複数の制御信号を設ける段階;複
数の制御信号に応答して命令のオペランドにより示され
る記憶ロケーションに記憶されたデータ値にアクセスす
る段階;記憶ロケーションに記憶されるデータ値を調整
値だけ調整して被調整値を生成する段階;記憶ロケーシ
ョンに対応するイネーブル値をアサートし、イネーブル
値は記憶ロケーションが選択的に命令の実行に関与する
ことができるようにする段階;記憶ロケーションに対応
する履歴値をネゲートし、履歴値は条件付き命令の実行
に記憶ロケーションが前回用いられたか否かを示す段
階;比較テストを実行して被調整データ値と所定の値と
を比較する段階;比較テストの結果が偽であるときに、
次の命令を実行する段階;および比較テストの結果が真
であるときに、次の命令の実行をスキップする段階;に
よって構成されることを特徴とする方法。(図173
9.1) 【請求項397】 命令がネモニック形式の「dskipe」
を有する請求項396記載の方法。(図1739.1) 【請求項398】 調整値が1であり、比較テストが等
式テストである請求項396記載の方法。(図173
9.1) 【請求項399】 所定の値が−1に等しい請求項39
6記載の方法。(図1739.1) 【請求項400】 データ値がデータ・プロセッサのス
ケーラ・レジスタに記憶される請求項396記載の方
法。(表2.52) 【請求項401】 比較テストにより、被調整データ値
が所定の値より小さいか、それと等しいか否かが判定さ
れる請求項396記載の方法。(代替例を仕様に説明) 【請求項402】 調整段階が:データ値に−1の値を
加算して被調整データ値を生成する段階;によって構成
される請求項396記載の方法。(代替例を仕様に説
明) 【請求項403】 データ・プロセッサでリピート(re
peat)命令を実行する方法であって: i)プログラムの第1アドレスで第1オペランドと第2
オペランドとを有するリピート命令を受信する段階; ii)リピート命令を解読して複数の制御信号を設ける
段階; iii)複数の制御信号に応答してリピート命令の第2
オペランドによって示される記憶ロケーションに記憶さ
れるデータ値にアクセスする段階; iv)後続の段階をあらかじめ選択された回数だけ実行
する段階であって、あらかじめ選択された回数はリピー
ト命令の第2オペランドにより与えられる段階; v)複数の命令を順次実行する段階であって、複数の命
令の第1命令は第2アドレスにあり、複数の命令の最後
の命令は第3アドレスにあり、第2アドレスは第1アド
レスに続くアドレスで、第3アドレスはリピート命令の
第1オペランドに基づくものである段階; vi)複数の命令の最後の命令の実行中にアクセスされ
た記憶ロケーションに対応するイネーブル値をアサート
する段階であって、このイネーブル値は記憶ロケーショ
ンが選択的に複数の命令の1つの命令の実行に関与する
ことができるようにする段階;および vii)複数の命令の最後の命令の実行中にアクセスさ
れた記憶ロケーションに対応する履歴値をネゲートする
段階であって、この履歴値はその記憶ロケーションが命
令の実行において前回用いられたか否かを示す段階;に
よって構成されることを特徴とする方法。(repeate :
すべてのVtビットをアサートし、すべてのVhビット
をクリアする,ただし最後の命令の間に用いられたPE
を除く;図1739.2,図88ないし図92) 【請求項404】 リピート命令がネモニック形式の
「repeate 」を有する請求項403記載の方法。(表
2.52) 【請求項405】 複数の命令の最後の命令がベクタ命
令である場合に、複数の命令の最後の命令によって指定
された動作をデータ・プロセッサが実行しない請求項4
03記載の方法。(セクション2.5.21〜2.5.
23,図17,図18) 【請求項406】 第2オペランドがデータ・プロセッ
サのスケーラ・レジスタに記憶される請求項403記載
の方法。(セクション2.5.19.9〜2.5.1
9.11,表2.51) 【請求項407】 第1オペランドが、プログラム・カ
ウンタ値に加算されるオフセット値である請求項403
記載の方法。(図1739.2) 【請求項408】 第3アドレスに続く第4アドレスで
次の命令を実行する段階;によってさらに構成される請
求項403記載の方法。(図1739.2) 【請求項409】 第1オペランドがリピート命令のフ
ィールドとして指定される請求項403記載の方法。
(表2.52) 【請求項410】 第2オペランドが0の値に等しいと
きには、ステップiv)ないしvii)は実行されない
請求項403記載の方法。(図1739.2) 【請求項411】 複数の命令の最後の命令であるステ
ップvi)およびvii)がすべて並行に実行される請
求項403記載の方法。 【請求項412】 リピート命令の実行中にステータス
値をアサートする段階;によってさらに構成される請求
項403記載の方法。(MCR 内のRELF, RPLF)
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US08/040,779 US5717947A (en) | 1993-03-31 | 1993-03-31 | Data processing system and method thereof |
| US040779 | 1993-03-31 |
Related Child Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2005220042A Division JP2006012182A (ja) | 1993-03-31 | 2005-07-29 | データ処理システムとその方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH0773149A true JPH0773149A (ja) | 1995-03-17 |
Family
ID=21912891
Family Applications (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP6082769A Pending JPH0773149A (ja) | 1993-03-31 | 1994-03-30 | データ処理システムとその方法 |
| JP2005220042A Pending JP2006012182A (ja) | 1993-03-31 | 2005-07-29 | データ処理システムとその方法 |
Family Applications After (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2005220042A Pending JP2006012182A (ja) | 1993-03-31 | 2005-07-29 | データ処理システムとその方法 |
Country Status (6)
| Country | Link |
|---|---|
| US (18) | US5717947A (ja) |
| EP (1) | EP0619557A3 (ja) |
| JP (2) | JPH0773149A (ja) |
| KR (1) | KR940022257A (ja) |
| CN (1) | CN1080906C (ja) |
| TW (1) | TW280890B (ja) |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2010501937A (ja) * | 2006-08-18 | 2010-01-21 | クゥアルコム・インコーポレイテッド | スカラー/ベクトル命令を使用したデータ処理システムおよび方法 |
| JP2012033176A (ja) * | 1999-01-28 | 2012-02-16 | Altera Corp | サブワード実行を用いるvliwベースのアレイプロセッサで条件付き実行をサポートする方法及び装置 |
| JP2013530450A (ja) * | 2010-05-11 | 2013-07-25 | アーム・リミテッド | 条件付き比較命令 |
| JP2016530631A (ja) * | 2013-08-14 | 2016-09-29 | クアルコム,インコーポレイテッド | ベクトルの算術的削減 |
| JP2020504345A (ja) * | 2016-10-27 | 2020-02-06 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 第1の値と第2の値の比較を行う命令のためのコンピュータ・プログラム製品、コンピュータ・システムおよびコンピュータ実装方法 |
Families Citing this family (193)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5354695A (en) | 1992-04-08 | 1994-10-11 | Leedy Glenn J | Membrane dielectric isolation IC fabrication |
| US6714625B1 (en) | 1992-04-08 | 2004-03-30 | Elm Technology Corporation | Lithography device for semiconductor circuit pattern generation |
| US5717947A (en) * | 1993-03-31 | 1998-02-10 | Motorola, Inc. | Data processing system and method thereof |
| DE69535409T2 (de) * | 1994-06-29 | 2007-11-08 | Intel Corp., Santa Clara | Prozessor, das das systembusrecht in einem erweiterbaren multiprozessor-rechnersystem anzeigt |
| CN1094610C (zh) | 1994-12-02 | 2002-11-20 | 英特尔公司 | 可以对复合操作数进行压缩操作和拆开操作的微处理器 |
| CN102707922B (zh) * | 1995-08-31 | 2015-10-07 | 英特尔公司 | 控制移位分组数据的位校正的装置 |
| US5872947A (en) * | 1995-10-24 | 1999-02-16 | Advanced Micro Devices, Inc. | Instruction classification circuit configured to classify instructions into a plurality of instruction types prior to decoding said instructions |
| US5822559A (en) * | 1996-01-02 | 1998-10-13 | Advanced Micro Devices, Inc. | Apparatus and method for aligning variable byte-length instructions to a plurality of issue positions |
| US5727229A (en) * | 1996-02-05 | 1998-03-10 | Motorola, Inc. | Method and apparatus for moving data in a parallel processor |
| JP2904099B2 (ja) * | 1996-02-19 | 1999-06-14 | 日本電気株式会社 | コンパイル装置およびコンパイル方法 |
| US6049863A (en) * | 1996-07-24 | 2000-04-11 | Advanced Micro Devices, Inc. | Predecoding technique for indicating locations of opcode bytes in variable byte-length instructions within a superscalar microprocessor |
| US5867680A (en) * | 1996-07-24 | 1999-02-02 | Advanced Micro Devices, Inc. | Microprocessor configured to simultaneously dispatch microcode and directly-decoded instructions |
| JP3790619B2 (ja) * | 1996-11-29 | 2006-06-28 | 松下電器産業株式会社 | 正値化処理及び飽和演算処理からなる丸め処理を好適に行うことができるプロセッサ |
| JP4235987B2 (ja) | 1996-12-19 | 2009-03-11 | マグナチップセミコンダクター有限会社 | ビデオフレームレンダリングエンジン |
| US6112291A (en) * | 1997-01-24 | 2000-08-29 | Texas Instruments Incorporated | Method and apparatus for performing a shift instruction with saturate by examination of an operand prior to shifting |
| US6551857B2 (en) | 1997-04-04 | 2003-04-22 | Elm Technology Corporation | Three dimensional structure integrated circuits |
| US5915167A (en) | 1997-04-04 | 1999-06-22 | Elm Technology Corporation | Three dimensional structure memory |
| US6430589B1 (en) | 1997-06-20 | 2002-08-06 | Hynix Semiconductor, Inc. | Single precision array processor |
| US6044392A (en) * | 1997-08-04 | 2000-03-28 | Motorola, Inc. | Method and apparatus for performing rounding in a data processor |
| US5864703A (en) | 1997-10-09 | 1999-01-26 | Mips Technologies, Inc. | Method for providing extended precision in SIMD vector arithmetic operations |
| US7197625B1 (en) * | 1997-10-09 | 2007-03-27 | Mips Technologies, Inc. | Alignment and ordering of vector elements for single instruction multiple data processing |
| FR2772949B1 (fr) * | 1997-12-19 | 2000-02-18 | Sgs Thomson Microelectronics | Partage de l'adressage indirect des registres d'un peripherique dedie a l'emulation |
| JPH11282683A (ja) * | 1998-03-26 | 1999-10-15 | Omron Corp | エージェントシステム |
| JPH11338844A (ja) * | 1998-05-22 | 1999-12-10 | Nec Corp | 発火数制御型神経回路装置 |
| US6282634B1 (en) * | 1998-05-27 | 2001-08-28 | Arm Limited | Apparatus and method for processing data having a mixed vector/scalar register file |
| EP1044407B1 (en) * | 1998-10-09 | 2014-02-26 | Koninklijke Philips N.V. | Vector data processor with conditional instructions |
| US6574665B1 (en) * | 1999-02-26 | 2003-06-03 | Lucent Technologies Inc. | Hierarchical vector clock |
| US6308253B1 (en) * | 1999-03-31 | 2001-10-23 | Sony Corporation | RISC CPU instructions particularly suited for decoding digital signal processing applications |
| US20070294510A1 (en) * | 1999-04-09 | 2007-12-20 | Dave Stuttard | Parallel data processing apparatus |
| US8169440B2 (en) * | 1999-04-09 | 2012-05-01 | Rambus Inc. | Parallel data processing apparatus |
| US8171263B2 (en) * | 1999-04-09 | 2012-05-01 | Rambus Inc. | Data processing apparatus comprising an array controller for separating an instruction stream processing instructions and data transfer instructions |
| US8762691B2 (en) * | 1999-04-09 | 2014-06-24 | Rambus Inc. | Memory access consolidation for SIMD processing elements using transaction identifiers |
| US7966475B2 (en) | 1999-04-09 | 2011-06-21 | Rambus Inc. | Parallel data processing apparatus |
| US7506136B2 (en) * | 1999-04-09 | 2009-03-17 | Clearspeed Technology Plc | Parallel data processing apparatus |
| US20080008393A1 (en) * | 1999-04-09 | 2008-01-10 | Dave Stuttard | Parallel data processing apparatus |
| US8174530B2 (en) * | 1999-04-09 | 2012-05-08 | Rambus Inc. | Parallel date processing apparatus |
| JP5285828B2 (ja) * | 1999-04-09 | 2013-09-11 | ラムバス・インコーポレーテッド | 並列データ処理装置 |
| GB2348982A (en) * | 1999-04-09 | 2000-10-18 | Pixelfusion Ltd | Parallel data processing system |
| US7802079B2 (en) * | 1999-04-09 | 2010-09-21 | Clearspeed Technology Limited | Parallel data processing apparatus |
| US20080007562A1 (en) * | 1999-04-09 | 2008-01-10 | Dave Stuttard | Parallel data processing apparatus |
| US20080184017A1 (en) * | 1999-04-09 | 2008-07-31 | Dave Stuttard | Parallel data processing apparatus |
| US7627736B2 (en) * | 1999-04-09 | 2009-12-01 | Clearspeed Technology Plc | Thread manager to control an array of processing elements |
| US20070242074A1 (en) * | 1999-04-09 | 2007-10-18 | Dave Stuttard | Parallel data processing apparatus |
| US20080162874A1 (en) * | 1999-04-09 | 2008-07-03 | Dave Stuttard | Parallel data processing apparatus |
| US7526630B2 (en) * | 1999-04-09 | 2009-04-28 | Clearspeed Technology, Plc | Parallel data processing apparatus |
| US20080016318A1 (en) * | 1999-04-09 | 2008-01-17 | Dave Stuttard | Parallel data processing apparatus |
| JP2003500740A (ja) * | 1999-05-19 | 2003-01-07 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | デバッグ回路を有するデータプロセッサ |
| US7401205B1 (en) * | 1999-08-13 | 2008-07-15 | Mips Technologies, Inc. | High performance RISC instruction set digital signal processor having circular buffer and looping controls |
| US6438664B1 (en) | 1999-10-27 | 2002-08-20 | Advanced Micro Devices, Inc. | Microcode patch device and method for patching microcode using match registers and patch routines |
| JP2001175933A (ja) * | 1999-12-15 | 2001-06-29 | Sanden Corp | 自動販売機の制御プログラム書換システム及び自動販売機の制御装置 |
| DE10001874A1 (de) * | 2000-01-18 | 2001-07-19 | Infineon Technologies Ag | Multi-Master-Bus-System |
| US7191310B2 (en) * | 2000-01-19 | 2007-03-13 | Ricoh Company, Ltd. | Parallel processor and image processing apparatus adapted for nonlinear processing through selection via processor element numbers |
| US6665790B1 (en) * | 2000-02-29 | 2003-12-16 | International Business Machines Corporation | Vector register file with arbitrary vector addressing |
| US6968469B1 (en) | 2000-06-16 | 2005-11-22 | Transmeta Corporation | System and method for preserving internal processor context when the processor is powered down and restoring the internal processor context when processor is restored |
| AU2001279304A1 (en) | 2000-07-13 | 2002-01-30 | Christopher J. Feola | System and method for associating historical information with sensory data and distribution thereof |
| US6606614B1 (en) * | 2000-08-24 | 2003-08-12 | Silicon Recognition, Inc. | Neural network integrated circuit with fewer pins |
| DE10102202A1 (de) * | 2001-01-18 | 2002-08-08 | Infineon Technologies Ag | Mikroprozessorschaltung für tragbare Datenträger |
| US7711763B2 (en) * | 2001-02-21 | 2010-05-04 | Mips Technologies, Inc. | Microprocessor instructions for performing polynomial arithmetic operations |
| US7181484B2 (en) * | 2001-02-21 | 2007-02-20 | Mips Technologies, Inc. | Extended-precision accumulation of multiplier output |
| US7162621B2 (en) * | 2001-02-21 | 2007-01-09 | Mips Technologies, Inc. | Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration |
| US7599981B2 (en) | 2001-02-21 | 2009-10-06 | Mips Technologies, Inc. | Binary polynomial multiplier |
| CA2344098A1 (fr) * | 2001-04-12 | 2002-10-12 | Serge Glories | Systeme de processeur modulaire a elements configurables et intereliables permettant de realiser de multiples calculs paralleles sur du signal ou des donnees brutes |
| US7155496B2 (en) * | 2001-05-15 | 2006-12-26 | Occam Networks | Configuration management utilizing generalized markup language |
| US7685508B2 (en) * | 2001-05-15 | 2010-03-23 | Occam Networks | Device monitoring via generalized markup language |
| US6725233B2 (en) | 2001-05-15 | 2004-04-20 | Occam Networks | Generic interface for system and application management |
| US6666383B2 (en) | 2001-05-31 | 2003-12-23 | Koninklijke Philips Electronics N.V. | Selective access to multiple registers having a common name |
| US7088731B2 (en) * | 2001-06-01 | 2006-08-08 | Dune Networks | Memory management for packet switching device |
| US6912638B2 (en) * | 2001-06-28 | 2005-06-28 | Zoran Corporation | System-on-a-chip controller |
| US7007058B1 (en) | 2001-07-06 | 2006-02-28 | Mercury Computer Systems, Inc. | Methods and apparatus for binary division using look-up table |
| US7027446B2 (en) * | 2001-07-18 | 2006-04-11 | P-Cube Ltd. | Method and apparatus for set intersection rule matching |
| GB2382887B (en) * | 2001-10-31 | 2005-09-28 | Alphamosaic Ltd | Instruction execution in a processor |
| US7278137B1 (en) | 2001-12-26 | 2007-10-02 | Arc International | Methods and apparatus for compiling instructions for a data processor |
| US7000226B2 (en) * | 2002-01-02 | 2006-02-14 | Intel Corporation | Exception masking in binary translation |
| US7349992B2 (en) * | 2002-01-24 | 2008-03-25 | Emulex Design & Manufacturing Corporation | System for communication with a storage area network |
| US6934787B2 (en) * | 2002-02-22 | 2005-08-23 | Broadcom Corporation | Adaptable switch architecture that is independent of media types |
| US7159099B2 (en) * | 2002-06-28 | 2007-01-02 | Motorola, Inc. | Streaming vector processor with reconfigurable interconnection switch |
| US7140019B2 (en) * | 2002-06-28 | 2006-11-21 | Motorola, Inc. | Scheduler of program instructions for streaming vector processor having interconnected functional units |
| US7415601B2 (en) * | 2002-06-28 | 2008-08-19 | Motorola, Inc. | Method and apparatus for elimination of prolog and epilog instructions in a vector processor using data validity tags and sink counters |
| US7402897B2 (en) | 2002-08-08 | 2008-07-22 | Elm Technology Corporation | Vertical system integration |
| US7231552B2 (en) * | 2002-10-24 | 2007-06-12 | Intel Corporation | Method and apparatus for independent control of devices under test connected in parallel |
| US20040098568A1 (en) * | 2002-11-18 | 2004-05-20 | Nguyen Hung T. | Processor having a unified register file with multipurpose registers for storing address and data register values, and associated register mapping method |
| US6912646B1 (en) * | 2003-01-06 | 2005-06-28 | Xilinx, Inc. | Storing and selecting multiple data streams in distributed memory devices |
| WO2004073551A2 (en) * | 2003-02-18 | 2004-09-02 | Massachusetts Eye And Ear Infirmary | Transscleral drug delivery device and related methods |
| US20040215924A1 (en) * | 2003-04-28 | 2004-10-28 | Collard Jean-Francois C. | Analyzing stored data |
| US7191432B2 (en) * | 2003-06-05 | 2007-03-13 | International Business Machines Corporation | High frequency compound instruction mechanism and method for a compare operation in an arithmetic logic unit |
| KR20060060689A (ko) * | 2003-08-15 | 2006-06-05 | 코닌클리즈케 필립스 일렉트로닉스 엔.브이. | 병렬 처리 어레이 및 데이터 처리 방법 |
| US20050043872A1 (en) * | 2003-08-21 | 2005-02-24 | Detlef Heyn | Control system for a functional unit in a motor vehicle |
| US7290122B2 (en) * | 2003-08-29 | 2007-10-30 | Motorola, Inc. | Dataflow graph compression for power reduction in a vector processor |
| US7610466B2 (en) * | 2003-09-05 | 2009-10-27 | Freescale Semiconductor, Inc. | Data processing system using independent memory and register operand size specifiers and method thereof |
| US7107436B2 (en) * | 2003-09-08 | 2006-09-12 | Freescale Semiconductor, Inc. | Conditional next portion transferring of data stream to or from register based on subsequent instruction aspect |
| US7275148B2 (en) * | 2003-09-08 | 2007-09-25 | Freescale Semiconductor, Inc. | Data processing system using multiple addressing modes for SIMD operations and method thereof |
| US7315932B2 (en) * | 2003-09-08 | 2008-01-01 | Moyer William C | Data processing system having instruction specifiers for SIMD register operands and method thereof |
| US7818729B1 (en) * | 2003-09-15 | 2010-10-19 | Thomas Plum | Automated safe secure techniques for eliminating undefined behavior in computer software |
| WO2005037326A2 (en) * | 2003-10-13 | 2005-04-28 | Clearspeed Technology Plc | Unified simd processor |
| US7526691B1 (en) * | 2003-10-15 | 2009-04-28 | Marvell International Ltd. | System and method for using TAP controllers |
| EP1544631B1 (en) | 2003-12-17 | 2007-06-20 | STMicroelectronics Limited | Reset mode for scan test modes |
| JP4728581B2 (ja) * | 2004-02-03 | 2011-07-20 | 日本電気株式会社 | アレイ型プロセッサ |
| JP4502650B2 (ja) * | 2004-02-03 | 2010-07-14 | 日本電気株式会社 | アレイ型プロセッサ |
| JP4547198B2 (ja) * | 2004-06-30 | 2010-09-22 | 富士通株式会社 | 演算装置、演算装置の制御方法、プログラム及びコンピュータ読取り可能記録媒体 |
| US20060095714A1 (en) * | 2004-11-03 | 2006-05-04 | Stexar Corporation | Clip instruction for processor |
| US7650542B2 (en) * | 2004-12-16 | 2010-01-19 | Broadcom Corporation | Method and system of using a single EJTAG interface for multiple tap controllers |
| US7370136B2 (en) * | 2005-01-26 | 2008-05-06 | Stmicroelectronics, Inc. | Efficient and flexible sequencing of data processing units extending VLIW architecture |
| US7873947B1 (en) * | 2005-03-17 | 2011-01-18 | Arun Lakhotia | Phylogeny generation |
| US20060218377A1 (en) * | 2005-03-24 | 2006-09-28 | Stexar Corporation | Instruction with dual-use source providing both an operand value and a control value |
| WO2006112045A1 (ja) * | 2005-03-31 | 2006-10-26 | Matsushita Electric Industrial Co., Ltd. | 演算処理装置 |
| US7757048B2 (en) * | 2005-04-29 | 2010-07-13 | Mtekvision Co., Ltd. | Data processor apparatus and memory interface |
| WO2006128148A1 (en) * | 2005-05-27 | 2006-11-30 | Delphi Technologies, Inc. | System and method for bypassing execution of an algorithm |
| US7543136B1 (en) * | 2005-07-13 | 2009-06-02 | Nvidia Corporation | System and method for managing divergent threads using synchronization tokens and program instructions that include set-synchronization bits |
| EP1951718B9 (en) * | 2005-11-21 | 2012-08-15 | Purdue Pharma LP | 4-oxadiazolyl-piperidine compounds and use thereof |
| US7404065B2 (en) * | 2005-12-21 | 2008-07-22 | Intel Corporation | Flow optimization and prediction for VSSE memory operations |
| US7602399B2 (en) * | 2006-03-15 | 2009-10-13 | Ati Technologies Ulc | Method and apparatus for generating a pixel using a conditional IF—NEIGHBOR command |
| DE602008006037D1 (de) * | 2007-02-09 | 2011-05-19 | Nokia Corp | Optimierte verbotene verfolgungsbereiche für private/heimnetzwerke |
| US8917165B2 (en) * | 2007-03-08 | 2014-12-23 | The Mitre Corporation | RFID tag detection and re-personalization |
| JP4913685B2 (ja) * | 2007-07-04 | 2012-04-11 | 株式会社リコー | Simd型マイクロプロセッサおよびsimd型マイクロプロセッサの制御方法 |
| US8131909B1 (en) | 2007-09-19 | 2012-03-06 | Agate Logic, Inc. | System and method of signal processing engines with programmable logic fabric |
| US7970979B1 (en) * | 2007-09-19 | 2011-06-28 | Agate Logic, Inc. | System and method of configurable bus-based dedicated connection circuits |
| FR2922663B1 (fr) * | 2007-10-23 | 2010-03-05 | Commissariat Energie Atomique | Structure et procede de sauvegarde et de restitution de donnees |
| US7945768B2 (en) * | 2008-06-05 | 2011-05-17 | Motorola Mobility, Inc. | Method and apparatus for nested instruction looping using implicit predicates |
| US9335997B2 (en) | 2008-08-15 | 2016-05-10 | Apple Inc. | Processing vectors using a wrapping rotate previous instruction in the macroscalar architecture |
| US8539205B2 (en) | 2008-08-15 | 2013-09-17 | Apple Inc. | Processing vectors using wrapping multiply and divide instructions in the macroscalar architecture |
| US8417921B2 (en) * | 2008-08-15 | 2013-04-09 | Apple Inc. | Running-min and running-max instructions for processing vectors using a base value from a key element of an input vector |
| US8527742B2 (en) * | 2008-08-15 | 2013-09-03 | Apple Inc. | Processing vectors using wrapping add and subtract instructions in the macroscalar architecture |
| US8549265B2 (en) | 2008-08-15 | 2013-10-01 | Apple Inc. | Processing vectors using wrapping shift instructions in the macroscalar architecture |
| US8555037B2 (en) | 2008-08-15 | 2013-10-08 | Apple Inc. | Processing vectors using wrapping minima and maxima instructions in the macroscalar architecture |
| US8447956B2 (en) * | 2008-08-15 | 2013-05-21 | Apple Inc. | Running subtract and running divide instructions for processing vectors |
| US9335980B2 (en) | 2008-08-15 | 2016-05-10 | Apple Inc. | Processing vectors using wrapping propagate instructions in the macroscalar architecture |
| US8583904B2 (en) | 2008-08-15 | 2013-11-12 | Apple Inc. | Processing vectors using wrapping negation instructions in the macroscalar architecture |
| US9342304B2 (en) | 2008-08-15 | 2016-05-17 | Apple Inc. | Processing vectors using wrapping increment and decrement instructions in the macroscalar architecture |
| US8560815B2 (en) | 2008-08-15 | 2013-10-15 | Apple Inc. | Processing vectors using wrapping boolean instructions in the macroscalar architecture |
| TWI417798B (zh) * | 2008-11-21 | 2013-12-01 | Nat Taipei University Oftechnology | High - speed reverse transfer neural network system with elastic structure and learning function |
| JP5321806B2 (ja) * | 2009-01-13 | 2013-10-23 | 株式会社リコー | 画像形成装置の操作装置及び画像形成装置 |
| US20110119469A1 (en) | 2009-11-13 | 2011-05-19 | International Business Machines Corporation | Balancing workload in a multiprocessor system responsive to programmable adjustments in a syncronization instruction |
| US8693788B2 (en) * | 2010-08-06 | 2014-04-08 | Mela Sciences, Inc. | Assessing features for classification |
| US9141386B2 (en) * | 2010-09-24 | 2015-09-22 | Intel Corporation | Vector logical reduction operation implemented using swizzling on a semiconductor chip |
| GB2484729A (en) * | 2010-10-22 | 2012-04-25 | Advanced Risc Mach Ltd | Exception control in a multiprocessor system |
| RU2010145507A (ru) * | 2010-11-10 | 2012-05-20 | ЭлЭсАй Корпорейшн (US) | Устройство и способ управления микрокомандами без задержки |
| CN103002276B (zh) * | 2011-03-31 | 2017-10-03 | Vixs系统公司 | 多格式视频解码器及解码方法 |
| WO2012156995A2 (en) * | 2011-05-13 | 2012-11-22 | Melange Systems (P) Limited | Fetch less instruction processing (flip) computer architecture for central processing units (cpu) |
| US9489196B2 (en) | 2011-12-23 | 2016-11-08 | Intel Corporation | Multi-element instruction with different read and write masks |
| WO2013095601A1 (en) | 2011-12-23 | 2013-06-27 | Intel Corporation | Instruction for element offset calculation in a multi-dimensional array |
| CN104040482B (zh) | 2011-12-28 | 2018-02-16 | 英特尔公司 | 用于在打包数据元素上执行增量解码的系统、装置和方法 |
| US9465612B2 (en) | 2011-12-28 | 2016-10-11 | Intel Corporation | Systems, apparatuses, and methods for performing delta encoding on packed data elements |
| US20130227190A1 (en) * | 2012-02-27 | 2013-08-29 | Raytheon Company | High Data-Rate Processing System |
| US20160364643A1 (en) * | 2012-03-08 | 2016-12-15 | Hrl Laboratories Llc | Scalable integrated circuit with synaptic electronics and cmos integrated memristors |
| US9389860B2 (en) | 2012-04-02 | 2016-07-12 | Apple Inc. | Prediction optimizations for Macroscalar vector partitioning loops |
| US8849885B2 (en) * | 2012-06-07 | 2014-09-30 | Via Technologies, Inc. | Saturation detector |
| KR102021777B1 (ko) * | 2012-11-29 | 2019-09-17 | 삼성전자주식회사 | 병렬 처리를 위한 재구성형 프로세서 및 재구성형 프로세서의 동작 방법 |
| US9558003B2 (en) * | 2012-11-29 | 2017-01-31 | Samsung Electronics Co., Ltd. | Reconfigurable processor for parallel processing and operation method of the reconfigurable processor |
| CN103914426B (zh) * | 2013-01-06 | 2016-12-28 | 中兴通讯股份有限公司 | 一种多线程处理基带信号的方法及装置 |
| US9817663B2 (en) | 2013-03-19 | 2017-11-14 | Apple Inc. | Enhanced Macroscalar predicate operations |
| US9348589B2 (en) | 2013-03-19 | 2016-05-24 | Apple Inc. | Enhanced predicate registers having predicates corresponding to element widths |
| US11501143B2 (en) * | 2013-10-11 | 2022-11-15 | Hrl Laboratories, Llc | Scalable integrated circuit with synaptic electronics and CMOS integrated memristors |
| FR3015068B1 (fr) * | 2013-12-18 | 2016-01-01 | Commissariat Energie Atomique | Module de traitement du signal, notamment pour reseau de neurones et circuit neuronal |
| US20150269480A1 (en) * | 2014-03-21 | 2015-09-24 | Qualcomm Incorporated | Implementing a neural-network processor |
| US10042813B2 (en) * | 2014-12-15 | 2018-08-07 | Intel Corporation | SIMD K-nearest-neighbors implementation |
| US9996350B2 (en) | 2014-12-27 | 2018-06-12 | Intel Corporation | Hardware apparatuses and methods to prefetch a multidimensional block of elements from a multidimensional array |
| WO2016109447A1 (en) | 2014-12-29 | 2016-07-07 | Concentric Meter Corporation | Fluid parameter sensor and meter |
| US10789071B2 (en) * | 2015-07-08 | 2020-09-29 | Intel Corporation | Dynamic thread splitting having multiple instruction pointers for the same thread |
| US10419501B2 (en) * | 2015-12-03 | 2019-09-17 | Futurewei Technologies, Inc. | Data streaming unit and method for operating the data streaming unit |
| JP6549697B2 (ja) * | 2016-03-31 | 2019-07-24 | 三菱電機株式会社 | ユニット及び制御システム |
| CN111651203B (zh) * | 2016-04-26 | 2024-05-07 | 中科寒武纪科技股份有限公司 | 一种用于执行向量四则运算的装置和方法 |
| TWI627860B (zh) * | 2016-05-31 | 2018-06-21 | 晨星半導體股份有限公司 | 影音處理裝置與方法 |
| US10147035B2 (en) | 2016-06-30 | 2018-12-04 | Hrl Laboratories, Llc | Neural integrated circuit with biological behaviors |
| US10379854B2 (en) * | 2016-12-22 | 2019-08-13 | Intel Corporation | Processor instructions for determining two minimum and two maximum values |
| KR102753546B1 (ko) * | 2017-01-04 | 2025-01-09 | 삼성전자주식회사 | 반도체 장치 및 반도체 장치의 동작 방법 |
| CN107423816B (zh) * | 2017-03-24 | 2021-10-12 | 中国科学院计算技术研究所 | 一种多计算精度神经网络处理方法和系统 |
| US10671349B2 (en) | 2017-07-24 | 2020-06-02 | Tesla, Inc. | Accelerated mathematical engine |
| US11893393B2 (en) | 2017-07-24 | 2024-02-06 | Tesla, Inc. | Computational array microprocessor system with hardware arbiter managing memory requests |
| US11157287B2 (en) | 2017-07-24 | 2021-10-26 | Tesla, Inc. | Computational array microprocessor system with variable latency memory access |
| US11409692B2 (en) | 2017-07-24 | 2022-08-09 | Tesla, Inc. | Vector computational unit |
| US11157441B2 (en) | 2017-07-24 | 2021-10-26 | Tesla, Inc. | Computational array microprocessor system using non-consecutive data formatting |
| CN109754061B (zh) * | 2017-11-07 | 2023-11-24 | 上海寒武纪信息科技有限公司 | 卷积扩展指令的执行方法以及相关产品 |
| EP3721340A4 (en) * | 2017-12-04 | 2021-09-08 | Optimum Semiconductor Technologies Inc. | NEURONAL NETWORK ACCELERATOR SYSTEM AND ARCHITECTURE |
| CN108153190B (zh) * | 2017-12-20 | 2020-05-05 | 新大陆数字技术股份有限公司 | 一种人工智能微处理器 |
| CN109416757B (zh) * | 2017-12-29 | 2022-05-03 | 深圳市大疆创新科技有限公司 | 用于处理数值数据的方法、设备和计算机可读存储介质 |
| US11561791B2 (en) | 2018-02-01 | 2023-01-24 | Tesla, Inc. | Vector computational unit receiving data elements in parallel from a last row of a computational array |
| US12210904B2 (en) * | 2018-06-29 | 2025-01-28 | International Business Machines Corporation | Hybridized storage optimization for genomic workloads |
| CN110059809B (zh) * | 2018-10-10 | 2020-01-17 | 中科寒武纪科技股份有限公司 | 一种计算装置及相关产品 |
| US12124530B2 (en) | 2019-03-11 | 2024-10-22 | Untether Ai Corporation | Computational memory |
| EP3938921A4 (en) * | 2019-03-11 | 2022-12-14 | Untether AI Corporation | CALCULATION MEMORY |
| CN110609706B (zh) * | 2019-06-13 | 2022-02-22 | 眸芯科技(上海)有限公司 | 配置寄存器的方法及应用 |
| US11604972B2 (en) | 2019-06-28 | 2023-03-14 | Microsoft Technology Licensing, Llc | Increased precision neural processing element |
| CN112241613B (zh) * | 2019-07-19 | 2023-12-29 | 瑞昱半导体股份有限公司 | 检测电路的引脚关联性的方法及其计算机处理系统 |
| US20220180007A1 (en) * | 2019-08-26 | 2022-06-09 | Hewlett-Packard Development Company, L.P. | Centralized access control of input-output resources |
| US11342944B2 (en) | 2019-09-23 | 2022-05-24 | Untether Ai Corporation | Computational memory with zero disable and error detection |
| CN110908716B (zh) * | 2019-11-14 | 2022-02-08 | 中国人民解放军国防科技大学 | 一种向量聚合装载指令的实现方法 |
| KR102800488B1 (ko) * | 2019-12-06 | 2025-04-25 | 삼성전자주식회사 | 연산 장치, 그것의 동작 방법 및 뉴럴 네트워크 프로세서 |
| CN113011577B (zh) * | 2019-12-20 | 2024-01-05 | 阿里巴巴集团控股有限公司 | 处理单元、处理器核、神经网络训练机及方法 |
| CN113033791B (zh) * | 2019-12-24 | 2024-04-05 | 中科寒武纪科技股份有限公司 | 用于保序的计算装置、集成电路装置、板卡及保序方法 |
| US11468002B2 (en) | 2020-02-28 | 2022-10-11 | Untether Ai Corporation | Computational memory with cooperation among rows of processing elements and memory thereof |
| US11309023B1 (en) | 2020-11-06 | 2022-04-19 | Micron Technology, Inc. | Memory cycling tracking for threshold voltage variation systems and methods |
| US11182160B1 (en) | 2020-11-24 | 2021-11-23 | Nxp Usa, Inc. | Generating source and destination addresses for repeated accelerator instruction |
| US20250328346A1 (en) * | 2024-04-22 | 2025-10-23 | International Business Machines Corporation | Instruction with a preserve sign control |
Family Cites Families (112)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| GB211387A (en) * | 1923-05-22 | 1924-02-21 | Joseph William Guimont | Improvements in and relating to radiators for heating buildings and the like |
| US3287703A (en) * | 1962-12-04 | 1966-11-22 | Westinghouse Electric Corp | Computer |
| FR1416562A (fr) * | 1964-09-25 | 1965-11-05 | Constr Telephoniques | Système de traitement de données simplifié |
| US3665402A (en) * | 1970-02-16 | 1972-05-23 | Sanders Associates Inc | Computer addressing apparatus |
| JPS4871547A (ja) * | 1971-12-27 | 1973-09-27 | Hitachi Ltd | |
| US3744034A (en) * | 1972-01-27 | 1973-07-03 | Perkin Elmer Corp | Method and apparatus for providing a security system for a computer |
| US4075679A (en) * | 1975-12-08 | 1978-02-21 | Hewlett-Packard Company | Programmable calculator |
| US4437156A (en) * | 1975-12-08 | 1984-03-13 | Hewlett-Packard Company | Programmable calculator |
| US4180854A (en) * | 1977-09-29 | 1979-12-25 | Hewlett-Packard Company | Programmable calculator having string variable editing capability |
| US4270170A (en) * | 1978-05-03 | 1981-05-26 | International Computers Limited | Array processor |
| US4244024A (en) * | 1978-08-10 | 1981-01-06 | Hewlett-Packard Company | Spectrum analyzer having enterable offsets and automatic display zoom |
| US4514804A (en) * | 1981-11-25 | 1985-04-30 | Nippon Electric Co., Ltd. | Information handling apparatus having a high speed instruction-executing function |
| JPS58114274A (ja) * | 1981-12-28 | 1983-07-07 | Hitachi Ltd | デ−タ処理装置 |
| US4470112A (en) * | 1982-01-07 | 1984-09-04 | Bell Telephone Laboratories, Incorporated | Circuitry for allocating access to a demand-shared bus |
| US4488218A (en) * | 1982-01-07 | 1984-12-11 | At&T Bell Laboratories | Dynamic priority queue occupancy scheme for access to a demand-shared bus |
| US4463445A (en) * | 1982-01-07 | 1984-07-31 | Bell Telephone Laboratories, Incorporated | Circuitry for allocating access to a demand-shared bus |
| JPS58134357A (ja) * | 1982-02-03 | 1983-08-10 | Hitachi Ltd | ベクトルプロセッサ |
| US4482996A (en) * | 1982-09-02 | 1984-11-13 | Burroughs Corporation | Five port module as a node in an asynchronous speed independent network of concurrent processors |
| JPS59111569A (ja) * | 1982-12-17 | 1984-06-27 | Hitachi Ltd | ベクトル処理装置 |
| US4539549A (en) * | 1982-12-30 | 1985-09-03 | International Business Machines Corporation | Method and apparatus for determining minimum/maximum of multiple data words |
| US4546428A (en) * | 1983-03-08 | 1985-10-08 | International Telephone & Telegraph Corporation | Associative array with transversal horizontal multiplexers |
| US4661900A (en) * | 1983-04-25 | 1987-04-28 | Cray Research, Inc. | Flexible chaining in vector processor with selective use of vector registers as operand and result registers |
| US4814973A (en) * | 1983-05-31 | 1989-03-21 | Hillis W Daniel | Parallel processor |
| US5152000A (en) * | 1983-05-31 | 1992-09-29 | Thinking Machines Corporation | Array communications arrangement for parallel processor |
| JPS606429A (ja) * | 1983-06-27 | 1985-01-14 | Ekuseru Kk | 異径中空成形品の製造方法及びその製造装置 |
| US4569016A (en) * | 1983-06-30 | 1986-02-04 | International Business Machines Corporation | Mechanism for implementing one machine cycle executable mask and rotate instructions in a primitive instruction set computing system |
| US4589087A (en) * | 1983-06-30 | 1986-05-13 | International Business Machines Corporation | Condition register architecture for a primitive instruction set machine |
| JPS6015771A (ja) * | 1983-07-08 | 1985-01-26 | Hitachi Ltd | ベクトルプロセッサ |
| FR2557712B1 (fr) * | 1983-12-30 | 1988-12-09 | Trt Telecom Radio Electr | Processeur pour traiter des donnees en fonction d'instructions provenant d'une memoire-programme |
| US4588856A (en) * | 1984-08-23 | 1986-05-13 | Timex Computer Corporation | Automatic line impedance balancing circuit for computer/telephone communications interface |
| CN85108294A (zh) * | 1984-11-02 | 1986-05-10 | 萨德利尔计算机研究有限公司 | 数据处理系统 |
| JPS61122747A (ja) * | 1984-11-14 | 1986-06-10 | インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション | デ−タ処理装置 |
| US5226171A (en) * | 1984-12-03 | 1993-07-06 | Cray Research, Inc. | Parallel vector processing system for individual and broadcast distribution of operands and control information |
| EP0190813B1 (en) * | 1985-01-29 | 1991-09-18 | The Secretary of State for Defence in Her Britannic Majesty's Government of the United Kingdom of Great Britain and | Processing cell for fault tolerant arrays |
| JPS61221939A (ja) * | 1985-03-28 | 1986-10-02 | Fujitsu Ltd | デイジタル信号処理プロセツサにおける命令機能方式 |
| US5113523A (en) * | 1985-05-06 | 1992-05-12 | Ncube Corporation | High performance computer system |
| US5045995A (en) * | 1985-06-24 | 1991-09-03 | Vicom Systems, Inc. | Selective operation of processing elements in a single instruction multiple data stream (SIMD) computer system |
| EP0211179A3 (en) * | 1985-06-28 | 1990-09-05 | Hewlett-Packard Company | Apparatus for performing variable shift |
| IN167819B (ja) * | 1985-08-20 | 1990-12-22 | Schlumberger Ltd | |
| JPS62180427A (ja) * | 1986-02-03 | 1987-08-07 | Nec Corp | プログラム制御回路 |
| JPH0731669B2 (ja) * | 1986-04-04 | 1995-04-10 | 株式会社日立製作所 | ベクトル・プロセツサ |
| US4809169A (en) * | 1986-04-23 | 1989-02-28 | Advanced Micro Devices, Inc. | Parallel, multiple coprocessor computer architecture having plural execution modes |
| GB8617674D0 (en) * | 1986-07-19 | 1986-08-28 | Armitage P R | Seismic processor |
| US4985832A (en) * | 1986-09-18 | 1991-01-15 | Digital Equipment Corporation | SIMD array processing system with routing networks having plurality of switching stages to transfer messages among processors |
| US5155389A (en) * | 1986-11-07 | 1992-10-13 | Concurrent Logic, Inc. | Programmable logic cell and array |
| US5418970A (en) * | 1986-12-17 | 1995-05-23 | Massachusetts Institute Of Technology | Parallel processing system with processor array with processing elements addressing associated memories using host supplied address value and base register content |
| GB2201015B (en) * | 1987-02-10 | 1990-10-10 | Univ Southampton | Parallel processor array and array element |
| US5058001A (en) * | 1987-03-05 | 1991-10-15 | International Business Machines Corporation | Two-dimensional array of processing elements for emulating a multi-dimensional network |
| US4891751A (en) * | 1987-03-27 | 1990-01-02 | Floating Point Systems, Inc. | Massively parallel vector processing computer |
| JPS63253468A (ja) * | 1987-04-10 | 1988-10-20 | Hitachi Ltd | ベクトル処理装置 |
| JPS6491228A (en) * | 1987-09-30 | 1989-04-10 | Takeshi Sakamura | Data processor |
| US5218712A (en) * | 1987-07-01 | 1993-06-08 | Digital Equipment Corporation | Providing a data processor with a user-mode accessible mode of operations in which the processor performs processing operations without interruption |
| JP2509947B2 (ja) * | 1987-08-19 | 1996-06-26 | 富士通株式会社 | ネットワ−ク制御方式 |
| US5168573A (en) * | 1987-08-31 | 1992-12-01 | Digital Equipment Corporation | Memory device for storing vector registers |
| US5072418A (en) * | 1989-05-04 | 1991-12-10 | Texas Instruments Incorporated | Series maxium/minimum function computing devices, systems and methods |
| US4916652A (en) * | 1987-09-30 | 1990-04-10 | International Business Machines Corporation | Dynamic multiple instruction stream multiple data multiple pipeline apparatus for floating-point single instruction stream single data architectures |
| US4942517A (en) * | 1987-10-08 | 1990-07-17 | Eastman Kodak Company | Enhanced input/output architecture for toroidally-connected distributed-memory parallel computers |
| US5047975A (en) * | 1987-11-16 | 1991-09-10 | Intel Corporation | Dual mode adder circuitry with overflow detection and substitution enabled for a particular mode |
| US4949250A (en) * | 1988-03-18 | 1990-08-14 | Digital Equipment Corporation | Method and apparatus for executing instructions for a vector processing system |
| US5043867A (en) * | 1988-03-18 | 1991-08-27 | Digital Equipment Corporation | Exception reporting mechanism for a vector processor |
| JPH01320564A (ja) * | 1988-06-23 | 1989-12-26 | Hitachi Ltd | 並列処理装置 |
| JP2602906B2 (ja) * | 1988-07-12 | 1997-04-23 | 株式会社日立製作所 | 解析モデル自動生成方法 |
| DE68920388T2 (de) * | 1988-09-19 | 1995-05-11 | Fujitsu Ltd | Paralleles Rechnersystem mit Verwendung eines SIMD-Verfahrens. |
| EP0390907B1 (en) * | 1988-10-07 | 1996-07-03 | Martin Marietta Corporation | Parallel data processor |
| US5083285A (en) * | 1988-10-11 | 1992-01-21 | Kabushiki Kaisha Toshiba | Matrix-structured neural network with learning circuitry |
| US5150328A (en) * | 1988-10-25 | 1992-09-22 | Internation Business Machines Corporation | Memory organization with arrays having an alternate data port facility |
| US5150327A (en) * | 1988-10-31 | 1992-09-22 | Matsushita Electric Industrial Co., Ltd. | Semiconductor memory and video signal processing circuit having the same |
| FR2639461A1 (fr) * | 1988-11-18 | 1990-05-25 | Labo Electronique Physique | Arrangement bidimensionnel de points memoire et structure de reseaux de neurones utilisant un tel arrangement |
| US4890253A (en) * | 1988-12-28 | 1989-12-26 | International Business Machines Corporation | Predetermination of result conditions of decimal operations |
| US5165010A (en) * | 1989-01-06 | 1992-11-17 | Hitachi, Ltd. | Information processing system |
| US5127093A (en) * | 1989-01-17 | 1992-06-30 | Cray Research Inc. | Computer look-ahead instruction issue control |
| US5187795A (en) * | 1989-01-27 | 1993-02-16 | Hughes Aircraft Company | Pipelined signal processor having a plurality of bidirectional configurable parallel ports that are configurable as individual ports or as coupled pair of ports |
| US5168572A (en) * | 1989-03-10 | 1992-12-01 | The Boeing Company | System for dynamic selection of globally-determined optimal data path |
| US5140530A (en) * | 1989-03-28 | 1992-08-18 | Honeywell Inc. | Genetic algorithm synthesis of neural networks |
| US5020059A (en) * | 1989-03-31 | 1991-05-28 | At&T Bell Laboratories | Reconfigurable signal processor |
| EP0395349B2 (en) * | 1989-04-26 | 1998-06-10 | Yamatake-Honeywell Co. Ltd. | Moisture sensitive element |
| US5001662A (en) * | 1989-04-28 | 1991-03-19 | Apple Computer, Inc. | Method and apparatus for multi-gauge computation |
| US5073867A (en) * | 1989-06-12 | 1991-12-17 | Westinghouse Electric Corp. | Digital neural network processing elements |
| US5422881A (en) * | 1989-06-30 | 1995-06-06 | Inmos Limited | Message encoding |
| JPH0343827A (ja) * | 1989-07-12 | 1991-02-25 | Omron Corp | ファジーマイクロコンピュータ |
| US5173947A (en) * | 1989-08-01 | 1992-12-22 | Martin Marietta Corporation | Conformal image processing apparatus and method |
| US5440749A (en) * | 1989-08-03 | 1995-08-08 | Nanotronics Corporation | High performance, low cost microprocessor architecture |
| JP2659436B2 (ja) * | 1989-08-25 | 1997-09-30 | 富士通株式会社 | 半導体記憶装置 |
| US5140523A (en) * | 1989-09-05 | 1992-08-18 | Ktaadn, Inc. | Neural network for predicting lightning |
| US5140670A (en) * | 1989-10-05 | 1992-08-18 | Regents Of The University Of California | Cellular neural network |
| DE58908974D1 (de) * | 1989-11-21 | 1995-03-16 | Itt Ind Gmbh Deutsche | Datengesteuerter Arrayprozessor. |
| US5197130A (en) * | 1989-12-29 | 1993-03-23 | Supercomputer Systems Limited Partnership | Cluster architecture for a highly parallel scalar/vector multiprocessor system |
| US5623650A (en) * | 1989-12-29 | 1997-04-22 | Cray Research, Inc. | Method of processing a sequence of conditional vector IF statements |
| JP2559868B2 (ja) * | 1990-01-06 | 1996-12-04 | 富士通株式会社 | 情報処理装置 |
| US5067095A (en) * | 1990-01-09 | 1991-11-19 | Motorola Inc. | Spann: sequence processing artificial neural network |
| JP3260357B2 (ja) * | 1990-01-24 | 2002-02-25 | 株式会社日立製作所 | 情報処理装置 |
| KR920008271B1 (ko) * | 1990-04-03 | 1992-09-26 | 정호선 | 신경회로망을 이용한 부동소수점방식 가산기회로 |
| KR930001024B1 (ko) * | 1990-04-03 | 1993-02-12 | 정호선 | 신경회로망을 이용한 제곱근 연산용 집적회로 |
| KR920006322B1 (ko) * | 1990-04-03 | 1992-08-03 | 정호선 | 나눗셈기 |
| US5146420A (en) * | 1990-05-22 | 1992-09-08 | International Business Machines Corp. | Communicating adder tree system for neural array processor |
| US5148515A (en) * | 1990-05-22 | 1992-09-15 | International Business Machines Corp. | Scalable neural array processor and method |
| EP0485466A4 (en) * | 1990-05-30 | 1992-12-16 | Daniel W. Hammerstrom | Distributive, digital maximization function architecture and method |
| CA2043505A1 (en) * | 1990-06-06 | 1991-12-07 | Steven K. Heller | Massively parallel processor including queue-based message delivery system |
| US5182794A (en) * | 1990-07-12 | 1993-01-26 | Allen-Bradley Company, Inc. | Recurrent neural networks teaching system |
| US5418915A (en) * | 1990-08-08 | 1995-05-23 | Sumitomo Metal Industries, Ltd. | Arithmetic unit for SIMD type parallel computer |
| JPH04107731A (ja) * | 1990-08-29 | 1992-04-09 | Nec Ic Microcomput Syst Ltd | 乗算回路 |
| US5208900A (en) * | 1990-10-22 | 1993-05-04 | Motorola, Inc. | Digital neural network computation ring |
| US5216751A (en) * | 1990-10-22 | 1993-06-01 | Motorola, Inc. | Digital processing element in an artificial neural network |
| US5167008A (en) * | 1990-12-14 | 1992-11-24 | General Electric Company | Digital circuitry for approximating sigmoidal response in a neural network layer |
| US5164914A (en) * | 1991-01-03 | 1992-11-17 | Hewlett-Packard Company | Fast overflow and underflow limiting circuit for signed adder |
| US5175858A (en) * | 1991-03-04 | 1992-12-29 | Adaptive Solutions, Inc. | Mechanism providing concurrent computational/communications in SIMD architecture |
| EP0545581B1 (en) * | 1991-12-06 | 1999-04-21 | National Semiconductor Corporation | Integrated data processing system including CPU core and parallel, independently operating DSP module |
| US5418973A (en) * | 1992-06-22 | 1995-05-23 | Digital Equipment Corporation | Digital computer system with cache controller coordinating both vector and scalar operations |
| US5440702A (en) * | 1992-10-16 | 1995-08-08 | Delco Electronics Corporation | Data processing system with condition code architecture for executing single instruction range checking and limiting operations |
| US5422805A (en) * | 1992-10-21 | 1995-06-06 | Motorola, Inc. | Method and apparatus for multiplying two numbers using signed arithmetic |
| US5717947A (en) * | 1993-03-31 | 1998-02-10 | Motorola, Inc. | Data processing system and method thereof |
| JPH0756892A (ja) * | 1993-08-10 | 1995-03-03 | Fujitsu Ltd | マスク付きベクトル演算器を持つ計算機 |
-
1993
- 1993-03-31 US US08/040,779 patent/US5717947A/en not_active Expired - Lifetime
-
1994
- 1994-03-18 EP EP94104274A patent/EP0619557A3/en not_active Ceased
- 1994-03-25 TW TW083102642A patent/TW280890B/zh active
- 1994-03-28 KR KR1019940006182A patent/KR940022257A/ko not_active Withdrawn
- 1994-03-30 JP JP6082769A patent/JPH0773149A/ja active Pending
- 1994-03-30 CN CN94103297A patent/CN1080906C/zh not_active Expired - Fee Related
-
1995
- 1995-02-09 US US08/389,511 patent/US6085275A/en not_active Expired - Lifetime
- 1995-02-10 US US08/390,191 patent/US5752074A/en not_active Expired - Lifetime
- 1995-02-13 US US08/389,512 patent/US5742786A/en not_active Expired - Lifetime
- 1995-02-17 US US08/390,831 patent/US5600846A/en not_active Expired - Fee Related
- 1995-02-23 US US08/393,602 patent/US5664134A/en not_active Expired - Fee Related
- 1995-03-01 US US08/398,222 patent/US5706488A/en not_active Expired - Lifetime
- 1995-03-08 US US08/401,400 patent/US5598571A/en not_active Expired - Fee Related
- 1995-03-09 US US08/401,610 patent/US5754805A/en not_active Expired - Fee Related
- 1995-03-21 US US08/408,098 patent/US5737586A/en not_active Expired - Fee Related
- 1995-03-21 US US08/408,045 patent/US5572689A/en not_active Expired - Fee Related
- 1995-03-22 US US08/409,761 patent/US5734879A/en not_active Expired - Lifetime
- 1995-04-06 US US08/419,861 patent/US5548768A/en not_active Expired - Fee Related
- 1995-04-17 US US08/425,004 patent/US5559973A/en not_active Expired - Fee Related
- 1995-04-18 US US08/425,961 patent/US5805874A/en not_active Expired - Fee Related
- 1995-04-19 US US08/424,990 patent/US5537562A/en not_active Expired - Lifetime
- 1995-08-03 US US08/510,895 patent/US5600811A/en not_active Expired - Fee Related
- 1995-08-03 US US08/510,948 patent/US5790854A/en not_active Expired - Fee Related
-
2005
- 2005-07-29 JP JP2005220042A patent/JP2006012182A/ja active Pending
Cited By (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2012033176A (ja) * | 1999-01-28 | 2012-02-16 | Altera Corp | サブワード実行を用いるvliwベースのアレイプロセッサで条件付き実行をサポートする方法及び装置 |
| JP2010501937A (ja) * | 2006-08-18 | 2010-01-21 | クゥアルコム・インコーポレイテッド | スカラー/ベクトル命令を使用したデータ処理システムおよび方法 |
| US8190854B2 (en) | 2006-08-18 | 2012-05-29 | Qualcomm Incorporated | System and method of processing data using scalar/vector instructions |
| JP2013175218A (ja) * | 2006-08-18 | 2013-09-05 | Qualcomm Inc | スカラー/ベクトル命令を使用したデータ処理システムおよび方法 |
| JP2013530450A (ja) * | 2010-05-11 | 2013-07-25 | アーム・リミテッド | 条件付き比較命令 |
| US9383999B2 (en) | 2010-05-11 | 2016-07-05 | Arm Limited | Conditional compare instruction |
| JP2016530631A (ja) * | 2013-08-14 | 2016-09-29 | クアルコム,インコーポレイテッド | ベクトルの算術的削減 |
| JP2020504345A (ja) * | 2016-10-27 | 2020-02-06 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 第1の値と第2の値の比較を行う命令のためのコンピュータ・プログラム製品、コンピュータ・システムおよびコンピュータ実装方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| KR940022257A (ko) | 1994-10-20 |
| US5572689A (en) | 1996-11-05 |
| US5737586A (en) | 1998-04-07 |
| JP2006012182A (ja) | 2006-01-12 |
| US5717947A (en) | 1998-02-10 |
| US5754805A (en) | 1998-05-19 |
| US5600846A (en) | 1997-02-04 |
| US5559973A (en) | 1996-09-24 |
| EP0619557A3 (en) | 1996-06-12 |
| US5805874A (en) | 1998-09-08 |
| US5752074A (en) | 1998-05-12 |
| US6085275A (en) | 2000-07-04 |
| US5734879A (en) | 1998-03-31 |
| US5706488A (en) | 1998-01-06 |
| TW280890B (ja) | 1996-07-11 |
| US5537562A (en) | 1996-07-16 |
| US5790854A (en) | 1998-08-04 |
| CN1080906C (zh) | 2002-03-13 |
| US5598571A (en) | 1997-01-28 |
| US5548768A (en) | 1996-08-20 |
| US5742786A (en) | 1998-04-21 |
| CN1107983A (zh) | 1995-09-06 |
| US5664134A (en) | 1997-09-02 |
| EP0619557A2 (en) | 1994-10-12 |
| US5600811A (en) | 1997-02-04 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH0773149A (ja) | データ処理システムとその方法 | |
| US12254316B2 (en) | Vector processor architectures | |
| CN109213523B (zh) | 具有存储器系统性能、功率减小和原子支持特征的可配置空间加速器的处理器、方法和系统 | |
| US10469397B2 (en) | Processors and methods with configurable network-based dataflow operator circuits | |
| US10380063B2 (en) | Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator | |
| US10515046B2 (en) | Processors, methods, and systems with a configurable spatial accelerator | |
| US8250507B1 (en) | Distributing computations in a parallel processing environment | |
| US8832166B2 (en) | Floating point multiplier circuit with optimized rounding calculation | |
| US20190095383A1 (en) | Processors, methods, and systems for debugging a configurable spatial accelerator | |
| US20190102179A1 (en) | Processors and methods for privileged configuration in a spatial array | |
| JP7183197B2 (ja) | 高スループットプロセッサ | |
| US6839831B2 (en) | Data processing apparatus with register file bypass | |
| JPH06318155A (ja) | コンピュータシステム | |
| US20250044975A1 (en) | Quick clearing of registers | |
| US6728741B2 (en) | Hardware assist for data block diagonal mirror image transformation | |
| US6889320B1 (en) | Microprocessor with an instruction immediately next to a branch instruction for adding a constant to a program counter | |
| CN112074810B (zh) | 并行处理设备 | |
| US8006074B1 (en) | Methods and apparatus for executing extended custom instructions | |
| JP2004503872A (ja) | 共同利用コンピュータシステム | |
| Chang et al. | A general purpose Slim-II image processor | |
| Simar et al. | How TI adopted VLIW in digital signal processors | |
| US7112991B1 (en) | Extended custom instructions | |
| Endecott | Superscalar instruction issue in an asynchronous microprocessor | |
| JP2001216154A (ja) | むき出しのパイプラインを具備するコードのサイズを、nop演算を命令オペランドとしてコード化することで削減するための方法並びに装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20040927 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050201 |
|
| A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20050428 |
|
| A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20050601 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050729 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060328 |
|
| A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20060628 |
|
| A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20060704 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060906 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070130 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070530 |
|
| A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20070605 |
|
| A912 | Re-examination (zenchi) completed and case transferred to appeal board |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20080328 |