JPH0727516B2 - Simdアレイ・プロセツサ - Google Patents
Simdアレイ・プロセツサInfo
- Publication number
- JPH0727516B2 JPH0727516B2 JP63204859A JP20485988A JPH0727516B2 JP H0727516 B2 JPH0727516 B2 JP H0727516B2 JP 63204859 A JP63204859 A JP 63204859A JP 20485988 A JP20485988 A JP 20485988A JP H0727516 B2 JPH0727516 B2 JP H0727516B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- array
- data
- global
- processing element
- 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.)
- Expired - Lifetime
Links
- 238000012545 processing Methods 0.000 claims description 152
- 230000004048 modification Effects 0.000 claims description 26
- 238000012986 modification Methods 0.000 claims description 26
- 238000012937 correction Methods 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 8
- 230000002457 bidirectional effect Effects 0.000 description 6
- 238000000034 method Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR 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/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/30181—Instruction operation extension or modification
- G06F9/30196—Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Multi Processors (AREA)
- Image Processing (AREA)
Description
【発明の詳細な説明】 A.産業上の利用分野 本発明は、相互接続されたプロセッサの多次元アレイを
含む単一命令多重データ(SIMD)アレイ・プロセッサに
関する。
含む単一命令多重データ(SIMD)アレイ・プロセッサに
関する。
B.従来技術 アレイ・プロセッサには、大別して、MIMD(多重命令多
重データ)式とSIMD(単一命令多重データ)式の2種が
ある。MIMDアレイ・プロセッサでは、アレイ中の処理要
素のそれぞれが、その独自の命令ストリームを自身のデ
ータで実行する。これは、本発明の対象となる種類のア
レイ・プロセッサ、すなわち単一の制御装置からの共通
の命令ストリーム、すなわち大域命令ストリームの制御
下で個々の処理要素が動作する、SIMDアレイ・プロセッ
サとは対照的である。すなわち、共通の命令ストリーム
の制御下で個々の処理要素が動作するので、SIMDマシン
はMIMDマシンよりも柔軟性が小さく、並列に実行できる
機能の範囲がより限られていることになる。ただし、SI
MDマシンの並列処理要素は、通常、MIMDプロセッサより
も単純で数が多い。
重データ)式とSIMD(単一命令多重データ)式の2種が
ある。MIMDアレイ・プロセッサでは、アレイ中の処理要
素のそれぞれが、その独自の命令ストリームを自身のデ
ータで実行する。これは、本発明の対象となる種類のア
レイ・プロセッサ、すなわち単一の制御装置からの共通
の命令ストリーム、すなわち大域命令ストリームの制御
下で個々の処理要素が動作する、SIMDアレイ・プロセッ
サとは対照的である。すなわち、共通の命令ストリーム
の制御下で個々の処理要素が動作するので、SIMDマシン
はMIMDマシンよりも柔軟性が小さく、並列に実行できる
機能の範囲がより限られていることになる。ただし、SI
MDマシンの並列処理要素は、通常、MIMDプロセッサより
も単純で数が多い。
多くのSIMDアレイ・プロセッサは、2次元アレイの処理
要素から構成され、各処理要素はその最も近くの処理要
素に接続されて、いわゆるNEWS(北、東、西、南)ネッ
トワークを形成している。この種のアレイ・プロセッサ
の例は、ホックニイ(Hockney)とジェスホープ(Jessh
ope)の共著「並列コンピュータ(Parallel Computer
s)」、Adam Hilger社、1981年刊、pp.182−184、及び
W.ダニエル・ヒリス(Daniel Hillis)の著書「コネク
ション・マシン(The Connection Machine)」、MIT P
ress、1986年刊、pp.74−76にそれぞれ記載されてい
る、ICL分散アレイ・プロセッサ(DAP)及びコネクショ
ン・マシンである。英国特許第1445714号も、従来技術
のSIMDアレイ・プロセッサを例示している。
要素から構成され、各処理要素はその最も近くの処理要
素に接続されて、いわゆるNEWS(北、東、西、南)ネッ
トワークを形成している。この種のアレイ・プロセッサ
の例は、ホックニイ(Hockney)とジェスホープ(Jessh
ope)の共著「並列コンピュータ(Parallel Computer
s)」、Adam Hilger社、1981年刊、pp.182−184、及び
W.ダニエル・ヒリス(Daniel Hillis)の著書「コネク
ション・マシン(The Connection Machine)」、MIT P
ress、1986年刊、pp.74−76にそれぞれ記載されてい
る、ICL分散アレイ・プロセッサ(DAP)及びコネクショ
ン・マシンである。英国特許第1445714号も、従来技術
のSIMDアレイ・プロセッサを例示している。
C.発明が解決しようとする問題点 NEWSネットワークとして配列されたSIMDマシンが柔軟性
を欠くことの一例が、シフト命令に関して見られる。通
常のNEWSネットワークでは、すべての処理要素がある方
向(例えば南)に1位置離れた隣接処理要素からデータ
を受け取る。通常のNEWSネットワークの各処理要素に対
するシフトの方向は、実行中の大域機械命令のパラメー
タとして大域的にしかも一様に決定され、その結果、全
処理要素がデータを同一方向にシフトすることになる。
典型的な命令は、データを北側に3位置だけシフトさせ
るものである。従来技術で知られているその唯一の例外
は、ある種のマシンでは、マスク機能を使ってNEWSネッ
トワークの処理要素を選択的に使用可能にし、使用可能
となった処理要素が大域命令を受け取るようにできるこ
とである。
を欠くことの一例が、シフト命令に関して見られる。通
常のNEWSネットワークでは、すべての処理要素がある方
向(例えば南)に1位置離れた隣接処理要素からデータ
を受け取る。通常のNEWSネットワークの各処理要素に対
するシフトの方向は、実行中の大域機械命令のパラメー
タとして大域的にしかも一様に決定され、その結果、全
処理要素がデータを同一方向にシフトすることになる。
典型的な命令は、データを北側に3位置だけシフトさせ
るものである。従来技術で知られているその唯一の例外
は、ある種のマシンでは、マスク機能を使ってNEWSネッ
トワークの処理要素を選択的に使用可能にし、使用可能
となった処理要素が大域命令を受け取るようにできるこ
とである。
本発明の目的は、MIMDプロセッサのように経費と複雑さ
を増大させずに、並列処理能力をより発揮させることの
できる、柔軟度が高まった処理要素の多次元アレイを含
む、SIMDアレイ・プロセッサを提供することにある。
を増大させずに、並列処理能力をより発揮させることの
できる、柔軟度が高まった処理要素の多次元アレイを含
む、SIMDアレイ・プロセッサを提供することにある。
D.問題点を解決するための手段 本発明によれば、処理要素の多次元アレイと、大域命令
を上記アレイに出すための制御論理回路とを含む、SIMD
アレイ・プロセッサが提供される。処理要素は、大域命
令を処理要素により実行するために各々デコードするた
めのプログラマブル・デコード手段を含む。
を上記アレイに出すための制御論理回路とを含む、SIMD
アレイ・プロセッサが提供される。処理要素は、大域命
令を処理要素により実行するために各々デコードするた
めのプログラマブル・デコード手段を含む。
当該処理要素のプログラム式デコード手段は、制御論理
回路からの大域ロード命令に応答してプログラミングで
きるようにすると好都合である。
回路からの大域ロード命令に応答してプログラミングで
きるようにすると好都合である。
これから説明する、本発明に基づく、SIMDアレイ・プロ
セッサの特定の実施例では、プログラム式デコード手段
は、大域命令の選択したビットを局所的に修正して局所
修正ビットを形成するためのプログラム式修正手段、及
び受け取った大域命令のビットと上記局所修正ビットを
デコードするための固定デコード手段を含んでいる。
セッサの特定の実施例では、プログラム式デコード手段
は、大域命令の選択したビットを局所的に修正して局所
修正ビットを形成するためのプログラム式修正手段、及
び受け取った大域命令のビットと上記局所修正ビットを
デコードするための固定デコード手段を含んでいる。
E.実施例 この特定の実施例では、アレイ中の処理要素は、それぞ
れ制御情報用及びデータ用の記憶域が付属しており、大
域ロード命令に応答して、処理要素内の固定デコード手
段が、上記記憶域中の選択された記憶位置から当の処理
要素のプログラム式修正手段内へ修正情報をロードさ
せ、それによって当該処理要素のプログラム式修正手段
がプログラミングされる。さらに、本実施例の処理要素
は、それぞれ、制御情報用及びデータ用の上記記憶域の
当該ブロックと関連付けられており、上記記憶域にアク
セスして、上記各記憶ブロック中の当該の記憶位置にプ
ログラム式デコード手段用の当該の修正情報を記憶させ
る手段が、制御論理回路に設けられている。
れ制御情報用及びデータ用の記憶域が付属しており、大
域ロード命令に応答して、処理要素内の固定デコード手
段が、上記記憶域中の選択された記憶位置から当の処理
要素のプログラム式修正手段内へ修正情報をロードさ
せ、それによって当該処理要素のプログラム式修正手段
がプログラミングされる。さらに、本実施例の処理要素
は、それぞれ、制御情報用及びデータ用の上記記憶域の
当該ブロックと関連付けられており、上記記憶域にアク
セスして、上記各記憶ブロック中の当該の記憶位置にプ
ログラム式デコード手段用の当該の修正情報を記憶させ
る手段が、制御論理回路に設けられている。
以下で説明するこの特定の実施例では、プログラム式修
正手段は、記憶域から上記修正情報を順次受け取る逐次
書込みポート、及び大域命令の上記の選択されたビット
を並列的に受け取る並列読取りポートを有する、ルック
アップ・テーブルを含んでいる。
正手段は、記憶域から上記修正情報を順次受け取る逐次
書込みポート、及び大域命令の上記の選択されたビット
を並列的に受け取る並列読取りポートを有する、ルック
アップ・テーブルを含んでいる。
また、以下で説明する特定のSIMDアレイ・プロセッサで
は、プログラム式デコード手段が大域シフト命令を局所
的に修正するようにプログラミングでき、それによっ
て、アレイ全体に分散されたデータを、アレイ内の複数
の局所的に決定された方向に、一時にシフトさせること
ができる。このプロセッサ中の処理要素は、直交する複
数の方向で相互接続されている。各処理要素は、複数の
出力レジスタ及び多方向入力マルチプレクサを含み、し
たがって、処理要素により、直交する複数方向のそれぞ
れで、多重同時シフト操作を実行できる。
は、プログラム式デコード手段が大域シフト命令を局所
的に修正するようにプログラミングでき、それによっ
て、アレイ全体に分散されたデータを、アレイ内の複数
の局所的に決定された方向に、一時にシフトさせること
ができる。このプロセッサ中の処理要素は、直交する複
数の方向で相互接続されている。各処理要素は、複数の
出力レジスタ及び多方向入力マルチプレクサを含み、し
たがって、処理要素により、直交する複数方向のそれぞ
れで、多重同時シフト操作を実行できる。
本発明によるSIMDアレイ・プロセッサでは制御に余分の
自由度があるので、従来のSIMDアレイ・プロセッサでは
並列的に処理するのが不可能であった一群のアルゴリズ
ムが日の目を見る。これらのアルゴリズムのいくつかに
ついては、後で説明する。本発明によるSIMDアレイ・プ
ロセッサは、特に、映像処理の応用分野に適しており、
したがって表示装置の一部として実現することができ
る。
自由度があるので、従来のSIMDアレイ・プロセッサでは
並列的に処理するのが不可能であった一群のアルゴリズ
ムが日の目を見る。これらのアルゴリズムのいくつかに
ついては、後で説明する。本発明によるSIMDアレイ・プ
ロセッサは、特に、映像処理の応用分野に適しており、
したがって表示装置の一部として実現することができ
る。
第1図は、SIMDアレイ・プロセッサ10の典型的な構造を
示す。プロセッサ10は、処理要素P(i、j)のアレイ
12、及び処理要素P(i、j)に大域命令のストリーム
を出すアレイ・コントローラ14を含んでいる。各処理要
素は、いつでも1ビットに作用し、記憶ブロック(図示
せず)がそれに関連付けられている。処理要素は、いわ
ゆるNEWS(北、東、西、南)ネットワークによって両方
向ビット線を介してその当該の隣接処理要素に接続され
ている。すなわち、処理要素P(i、j)は、それぞれ
北側、東側、西側、南側で、処理要素P(i−1、
j)、P(i、j+1)、P(i、j−1)、P(i+
1、j)に接続されている。NEWSネットワークは、ま
た、その末端で環状に接続されており、北端と南端が両
方向に相互接続され、東端と西端も同様に相互接続され
ている。データをプロセッサ・アレイに入力したり、そ
こから出力したりするために、NEWSネットワークにコン
トローラ/アレイ・データ母線26が接続されている。図
のように、これらのデータ母線はアレイの東西の境界に
接続されている。同様に、その代わりに、あるいはそれ
に加えて、それらのデータ母線を南北の境界に、または
各処理要素に接続することも可能である。データ母線
は、環状の東西NEWS接続部に接続した両方向三状態ドラ
イバを用いて、東西の境界に接続される。当業者には自
明なように、これはデータ母線26の可能な多数の接続手
段の1つにすぎない。
示す。プロセッサ10は、処理要素P(i、j)のアレイ
12、及び処理要素P(i、j)に大域命令のストリーム
を出すアレイ・コントローラ14を含んでいる。各処理要
素は、いつでも1ビットに作用し、記憶ブロック(図示
せず)がそれに関連付けられている。処理要素は、いわ
ゆるNEWS(北、東、西、南)ネットワークによって両方
向ビット線を介してその当該の隣接処理要素に接続され
ている。すなわち、処理要素P(i、j)は、それぞれ
北側、東側、西側、南側で、処理要素P(i−1、
j)、P(i、j+1)、P(i、j−1)、P(i+
1、j)に接続されている。NEWSネットワークは、ま
た、その末端で環状に接続されており、北端と南端が両
方向に相互接続され、東端と西端も同様に相互接続され
ている。データをプロセッサ・アレイに入力したり、そ
こから出力したりするために、NEWSネットワークにコン
トローラ/アレイ・データ母線26が接続されている。図
のように、これらのデータ母線はアレイの東西の境界に
接続されている。同様に、その代わりに、あるいはそれ
に加えて、それらのデータ母線を南北の境界に、または
各処理要素に接続することも可能である。データ母線
は、環状の東西NEWS接続部に接続した両方向三状態ドラ
イバを用いて、東西の境界に接続される。当業者には自
明なように、これはデータ母線26の可能な多数の接続手
段の1つにすぎない。
アレイ中の処理要素の数は、必要に応じて選択すること
ができる。典型的な処理要素数は、後で説明する本発明
の特定の実施例で使用するように、32×32=1024個であ
る。ただし、図示し易くするために、16個の個別処理要
素だけを示してある。また、図示し易いという理由で、
第1図には、プロセッサの動作を理解するのに必要な主
要接続だけを示してある。他の図でも同様であるが、第
1図では、機能要素を接続する2重線を用いて、複数の
接続線、すなわち母線を表わし、1本線は、単一ビット
線を示す。接続線は、図の矢印による指示に応じて、1
方向性または、両方向性である。
ができる。典型的な処理要素数は、後で説明する本発明
の特定の実施例で使用するように、32×32=1024個であ
る。ただし、図示し易くするために、16個の個別処理要
素だけを示してある。また、図示し易いという理由で、
第1図には、プロセッサの動作を理解するのに必要な主
要接続だけを示してある。他の図でも同様であるが、第
1図では、機能要素を接続する2重線を用いて、複数の
接続線、すなわち母線を表わし、1本線は、単一ビット
線を示す。接続線は、図の矢印による指示に応じて、1
方向性または、両方向性である。
アレイ・コントローラは、命令母線18を介して処理要素
に命令を並列に出し、行選択線20及び列選択22を介し
て、それぞれ行選択信号及び列選択信号を出す。これら
の命令は、処理要素に、データを記憶域からロードさ
せ、データを処理させ、次いで再度、記憶域にデータを
記憶させる。
に命令を並列に出し、行選択線20及び列選択22を介し
て、それぞれ行選択信号及び列選択信号を出す。これら
の命令は、処理要素に、データを記憶域からロードさ
せ、データを処理させ、次いで再度、記憶域にデータを
記憶させる。
各処理要素は、主メモリの1ビット・スライスにアクセ
スできる。したがって、論理的に言えば、アレイ・プロ
セッサの主メモリは、1024個の処理要素のアレイ用に10
24個のスライスに分離されている。これは、最大32個の
ビット・ワードを一時に記憶域にまた記憶域から転送で
きることを意味する。読取り操作または書込み操作を実
行するには、アドレス母線24を介してメモリ・アドレス
線に供給されるインデックス・アドレスを用いてメモリ
をアドレスし、読取り命令または書込み命令を各処理要
素に並列に供給する。読取り操作中、行選択線及び列選
択線上の行選択信号及び列選択信号が、どの処理要素が
操作を実行すべきかを識別する。すなわち、たとえば、
選んだ行の32個の処理要素内へメモリから1個の32ビッ
ト・ワードを読み込むことが可能である。
スできる。したがって、論理的に言えば、アレイ・プロ
セッサの主メモリは、1024個の処理要素のアレイ用に10
24個のスライスに分離されている。これは、最大32個の
ビット・ワードを一時に記憶域にまた記憶域から転送で
きることを意味する。読取り操作または書込み操作を実
行するには、アドレス母線24を介してメモリ・アドレス
線に供給されるインデックス・アドレスを用いてメモリ
をアドレスし、読取り命令または書込み命令を各処理要
素に並列に供給する。読取り操作中、行選択線及び列選
択線上の行選択信号及び列選択信号が、どの処理要素が
操作を実行すべきかを識別する。すなわち、たとえば、
選んだ行の32個の処理要素内へメモリから1個の32ビッ
ト・ワードを読み込むことが可能である。
第1図には、ホスト・プロセッサ28も示されている。こ
のプロセッサを使って、アレイ・コントローラ14にマイ
クロコード・プログラムをロードさせ、それとデータを
交換し、ホスト・コントローラのデータ母線30及びアド
レス/制御母線31を介して、その状態を監視する。ホス
ト・プロセッサは、メインフレーム・コンピュータやパ
ーソナル・コンピュータなど適当な汎用コンピュータな
らどんなものでもよい。ホスト・プロセッサは、本発明
の一部ではないので、これ以上詳しく説明する必要はな
い。
のプロセッサを使って、アレイ・コントローラ14にマイ
クロコード・プログラムをロードさせ、それとデータを
交換し、ホスト・コントローラのデータ母線30及びアド
レス/制御母線31を介して、その状態を監視する。ホス
ト・プロセッサは、メインフレーム・コンピュータやパ
ーソナル・コンピュータなど適当な汎用コンピュータな
らどんなものでもよい。ホスト・プロセッサは、本発明
の一部ではないので、これ以上詳しく説明する必要はな
い。
上記のような構造が、従来技術のSIMDアレイ・プロセッ
サにとって典型的である。このタイプのプロセッサは、
英国特許第1445714号明細書に記載されている。
サにとって典型的である。このタイプのプロセッサは、
英国特許第1445714号明細書に記載されている。
以下では、第1図に示す全体構造をもつ、本発明よるSI
MDアレイ・プロセッサの特定の実施例について説明する
ことにする。ただし、以下の説明から明らかなように、
本発明は第1図に示した構造に限られるものではない。
たとえば、プロセッサのアレイを、2次元ではなく、
(クラスタを使って)3次元、4次元などで編成するこ
とも可能である。また、本発明によるSIMDアレイ・プロ
セッサを、ホスト・プロセッサから分離したものとして
構成するのでなく、たとえば表示アダプタを備えたワー
クステーションなど、表示システムの一体部分にするこ
ともできる。以下で説明するアルゴリズムの例から明ら
かなように、本発明によるSIMDアレイ・プロセッサは、
特に画像処理用に適している。
MDアレイ・プロセッサの特定の実施例について説明する
ことにする。ただし、以下の説明から明らかなように、
本発明は第1図に示した構造に限られるものではない。
たとえば、プロセッサのアレイを、2次元ではなく、
(クラスタを使って)3次元、4次元などで編成するこ
とも可能である。また、本発明によるSIMDアレイ・プロ
セッサを、ホスト・プロセッサから分離したものとして
構成するのでなく、たとえば表示アダプタを備えたワー
クステーションなど、表示システムの一体部分にするこ
ともできる。以下で説明するアルゴリズムの例から明ら
かなように、本発明によるSIMDアレイ・プロセッサは、
特に画像処理用に適している。
第1図に示したアレイ・コントローラが、本発明による
SIMDアレイ・プロセッサのこの特定の実施例ではどのよ
うに構成されるかを第2図に示す。本発明にとっては、
第2図に示したアレイ・コントローラの細部構造も、そ
の動作の特定の細部も本質的なものでない。したがっ
て、以下ではアレイ・コントローラの構造及び動作を簡
単に説明するにとどめておく。
SIMDアレイ・プロセッサのこの特定の実施例ではどのよ
うに構成されるかを第2図に示す。本発明にとっては、
第2図に示したアレイ・コントローラの細部構造も、そ
の動作の特定の細部も本質的なものでない。したがっ
て、以下ではアレイ・コントローラの構造及び動作を簡
単に説明するにとどめておく。
アレイ・コントローラ14は、アレイ・プロセッサが実行
すべき処理を定義するマイクロコードを、ホスト・プロ
セッサ28がデータ母線30及びアドレス/制御母線31を介
してロードする場所であるマイクロコード記憶域32を含
んでいる。ホスト・プロセッサ28がアレイ・コントロー
ラ14の動作を始動させると、母線36を介してマイクロコ
ード記憶域に接続されているマイクロコード制御機構34
によって、マイクロコードの実行順序が制御される。演
算論理機構(ALU)38及びレジスタ・バンク40は、アド
レス母線24上に出力されるアレイ・メモリ・アドレスの
生成、ループ・カウンティング、飛越し先アドレス計
算、及び様々な汎用レジスタ動作に使用される。条件付
分岐用にフラグ線39が設けられている。行マスク用プロ
グラム式論理アレイ(PLA)42及び列マスク用プログラ
ム式論理アレイ(PLA)44は、個々の行選択線20及び列
選択線22上に信号を発生させるために実行されるマイク
ロ命令中の行マスク・コード及び列マスク・コードをデ
コードするために使われる。処理要素P(i、j)への
命令を形成する命令コードが、命令母線18に送られる。
ホスト・コントローラ間データ母線30とコントローラ・
アレイ間データ母線26の中間に、データ・バッファ46が
示されている。このデータ・バッファにより、プロセッ
サのアレイへ書き込むべきホストからのデータを、高速
でアレイ・コントローラ14にダウン・ロードすることが
可能となる。次いで、マイクロコードの制御下で、デー
タをプロセッサのアレイにロードすることができる。同
様に、このバッファを利用して、アレイとホストの間で
データを転送することができる。そのために、データ・
バッファは、マイクロコード制御機構の制御下にある両
方向先入れ先出し(FIFO)バッファとして配置されてい
る。
すべき処理を定義するマイクロコードを、ホスト・プロ
セッサ28がデータ母線30及びアドレス/制御母線31を介
してロードする場所であるマイクロコード記憶域32を含
んでいる。ホスト・プロセッサ28がアレイ・コントロー
ラ14の動作を始動させると、母線36を介してマイクロコ
ード記憶域に接続されているマイクロコード制御機構34
によって、マイクロコードの実行順序が制御される。演
算論理機構(ALU)38及びレジスタ・バンク40は、アド
レス母線24上に出力されるアレイ・メモリ・アドレスの
生成、ループ・カウンティング、飛越し先アドレス計
算、及び様々な汎用レジスタ動作に使用される。条件付
分岐用にフラグ線39が設けられている。行マスク用プロ
グラム式論理アレイ(PLA)42及び列マスク用プログラ
ム式論理アレイ(PLA)44は、個々の行選択線20及び列
選択線22上に信号を発生させるために実行されるマイク
ロ命令中の行マスク・コード及び列マスク・コードをデ
コードするために使われる。処理要素P(i、j)への
命令を形成する命令コードが、命令母線18に送られる。
ホスト・コントローラ間データ母線30とコントローラ・
アレイ間データ母線26の中間に、データ・バッファ46が
示されている。このデータ・バッファにより、プロセッ
サのアレイへ書き込むべきホストからのデータを、高速
でアレイ・コントローラ14にダウン・ロードすることが
可能となる。次いで、マイクロコードの制御下で、デー
タをプロセッサのアレイにロードすることができる。同
様に、このバッファを利用して、アレイとホストの間で
データを転送することができる。そのために、データ・
バッファは、マイクロコード制御機構の制御下にある両
方向先入れ先出し(FIFO)バッファとして配置されてい
る。
本発明の特定の実施例で使用する命令形式を第3図に示
す。第3図に示した形式は、単に、本明細書で説明する
SIMDアレイ・プロセッサの特定の例で使用されるものに
すぎないことに留意されたい。当業者なら以下の記載か
ら明らかなように、本発明の他の実施例では、プロセッ
サ・アレイ用コントローラの形態、個々の処理要素の複
雑さなどに応じて、別の形式を用いることもできる。
す。第3図に示した形式は、単に、本明細書で説明する
SIMDアレイ・プロセッサの特定の例で使用されるものに
すぎないことに留意されたい。当業者なら以下の記載か
ら明らかなように、本発明の他の実施例では、プロセッ
サ・アレイ用コントローラの形態、個々の処理要素の複
雑さなどに応じて、別の形式を用いることもできる。
プロセッサ・アレイの制御に関係する命令のフィールド
は、第63ないし第56ビットの処理要素命令コード“PeO
p"、第55ないし第48ビットの行マスク・コード“Mask
r"、第47ないし第40ビットの列マスク・コード“Maskc"
である。“PeOp"フィールドは、命令コード、すなわち
大域的にアレイ内の処理要素に並列に出される命令を形
成する。行マスク及び列マスクの目的は、“PeOp"コー
ドで指定される命令を、選んだ処理要素だけが実行でき
るようにすることにある。そうするとメモリ読取り操
作、プロセッサ間要素シフト、プロセッサ内要素レジス
タ操作を、選んだ処理要素だけが実行できるようにな
る。“Maskr"及び“Maskc"フィールドの内容は、それぞ
れ行マスクPLA42及び列マスクPLA44によってデコードさ
れ、個々の行選択線20及び列選択22が適宜設定される。
は、第63ないし第56ビットの処理要素命令コード“PeO
p"、第55ないし第48ビットの行マスク・コード“Mask
r"、第47ないし第40ビットの列マスク・コード“Maskc"
である。“PeOp"フィールドは、命令コード、すなわち
大域的にアレイ内の処理要素に並列に出される命令を形
成する。行マスク及び列マスクの目的は、“PeOp"コー
ドで指定される命令を、選んだ処理要素だけが実行でき
るようにすることにある。そうするとメモリ読取り操
作、プロセッサ間要素シフト、プロセッサ内要素レジス
タ操作を、選んだ処理要素だけが実行できるようにな
る。“Maskr"及び“Maskc"フィールドの内容は、それぞ
れ行マスクPLA42及び列マスクPLA44によってデコードさ
れ、個々の行選択線20及び列選択22が適宜設定される。
第3図に示したその他のフィールドは、すべて、通常の
やり方でのアレイ・コントローラの実行順序制御及びア
レイ・メモリ・アドレスの生成に関係するものである。
第39ないし第36ビットの“Test"フィールドは、アレイ
・コントローラ内部の命令の流れを定義するもので、マ
イクロコード制御機構の“テスト”入力ポートに送ら
れ、飛越しなどが可能となる。第35ないし第32ビットの
“Aluop"フィールドは、コントローラALU38の全般的動
作を定義するもので、そのFsel入力ポートに送られる。
第31ないし第28ビットの“Regs"フィールド及び第27な
いし第24ビットの“Regd"フィールドは、コントローラ
のレジスタ・バンク40中の転送元レジスタ及び転送レジ
スタを選択するのに使用され、この目的で、それぞれレ
ジスタ・バンクのR及びW制御入力端に送られる。
やり方でのアレイ・コントローラの実行順序制御及びア
レイ・メモリ・アドレスの生成に関係するものである。
第39ないし第36ビットの“Test"フィールドは、アレイ
・コントローラ内部の命令の流れを定義するもので、マ
イクロコード制御機構の“テスト”入力ポートに送ら
れ、飛越しなどが可能となる。第35ないし第32ビットの
“Aluop"フィールドは、コントローラALU38の全般的動
作を定義するもので、そのFsel入力ポートに送られる。
第31ないし第28ビットの“Regs"フィールド及び第27な
いし第24ビットの“Regd"フィールドは、コントローラ
のレジスタ・バンク40中の転送元レジスタ及び転送レジ
スタを選択するのに使用され、この目的で、それぞれレ
ジスタ・バンクのR及びW制御入力端に送られる。
第23ないし第0ビットの“オフセット”フィールドは、
ALU動作用及びアレイ・メモリ・アドレス生成用の引数
を定義するもので、ALU38の入力ポートAに送られる。
ALU動作用及びアレイ・メモリ・アドレス生成用の引数
を定義するもので、ALU38の入力ポートAに送られる。
第4図に、プロセッサ・アレイ12の個々の処理要素P
(i、j)の主要構成要素を示す。各処理要素は、一時
に1データ・ビットに作用することを理解されたい。
(i、j)の主要構成要素を示す。各処理要素は、一時
に1データ・ビットに作用することを理解されたい。
処理要素はALU48を含み、ALU48は、図に示した処理要素
の特定の例ではA、C、Q、M、Nと記した入力ポート
及びA、C、Qと記した出力ポートを備えている。出力
ポートA、C、Qは、Aレジスタすなわち演算結果レジ
スタ50、Cレジスタ、すなわちシフト・レジスタ52、及
びQレジスタ、すなわちNEWS出力レジスタ54に接続され
ており、これらのレジスタはそれぞれ1ビットの情報を
記憶することができる。これらのレジスタの出力線は、
ALUの当該入力ポートA、C、Q及びマルチプレクサ56
に接続されている。マルチプレクサ56により、A、C、
Qレジスタのうち選択可能な1つのレジスタの出力をそ
の出力線58に送ることができる。マルチプレクサ56の出
力線58は、ALUのM入力ポート、及び処理要素P(i、
j)に関連するメモリ・スライス16(i、j)の両方向
データ・ポート59にも接続されている。
の特定の例ではA、C、Q、M、Nと記した入力ポート
及びA、C、Qと記した出力ポートを備えている。出力
ポートA、C、Qは、Aレジスタすなわち演算結果レジ
スタ50、Cレジスタ、すなわちシフト・レジスタ52、及
びQレジスタ、すなわちNEWS出力レジスタ54に接続され
ており、これらのレジスタはそれぞれ1ビットの情報を
記憶することができる。これらのレジスタの出力線は、
ALUの当該入力ポートA、C、Q及びマルチプレクサ56
に接続されている。マルチプレクサ56により、A、C、
Qレジスタのうち選択可能な1つのレジスタの出力をそ
の出力線58に送ることができる。マルチプレクサ56の出
力線58は、ALUのM入力ポート、及び処理要素P(i、
j)に関連するメモリ・スライス16(i、j)の両方向
データ・ポート59にも接続されている。
各処理要素は、1ビット幅のメモリ・スライス16(i、
j)すなわちブロックに関連付けられている。このスラ
イスまたはブロック・メモリは、論理的に処理要素内に
含まれているが、実際にはそれから物理的に分離してい
てもよい。各処理要素は同様なメモリ・ブロックを有す
るので、アレイの32×32個のメモリ・ブロックは、それ
ぞれが32個の32ビット・ワードを含む、複数の平面を構
成するアレイ・メモリと考えることができる。各平面
は、当該のインデックス・アドレスにある各処理要素か
らの1ビットから構成される。アドレス母線24を介し
て、1個のインデックス・アドレスをアレイ・メモリに
供給することにより、ビット平面の1つにアクセスする
ことができる。
j)すなわちブロックに関連付けられている。このスラ
イスまたはブロック・メモリは、論理的に処理要素内に
含まれているが、実際にはそれから物理的に分離してい
てもよい。各処理要素は同様なメモリ・ブロックを有す
るので、アレイの32×32個のメモリ・ブロックは、それ
ぞれが32個の32ビット・ワードを含む、複数の平面を構
成するアレイ・メモリと考えることができる。各平面
は、当該のインデックス・アドレスにある各処理要素か
らの1ビットから構成される。アドレス母線24を介し
て、1個のインデックス・アドレスをアレイ・メモリに
供給することにより、ビット平面の1つにアクセスする
ことができる。
Qレジスタの出力線は、北側の隣接処理要素(P(i−
1、j))、東側の(P(i、j+1))、西側の(P
(i、j−1))、南側の(P(i+1、j))に接続
されている処理要素P(i、j)のNEWS出力線60(i、
j)ともなっている。NEWSネットワーク中の隣接処理要
素から処理要素P(i、j)にシフトすべきデータは、
入力マルチプレクサ62によって選択される。入力マルチ
プレクサ62は、北側、東側、西側、南側の隣接処理要素
のNEWS出力線60(i−1、j)、60(i、j+1)、60
(i、j−1)、60(i+1、j)に接続されている。
入力マルチプレクサ62の出力線は、ALU48のN入力ポー
トに接続されている。
1、j))、東側の(P(i、j+1))、西側の(P
(i、j−1))、南側の(P(i+1、j))に接続
されている処理要素P(i、j)のNEWS出力線60(i、
j)ともなっている。NEWSネットワーク中の隣接処理要
素から処理要素P(i、j)にシフトすべきデータは、
入力マルチプレクサ62によって選択される。入力マルチ
プレクサ62は、北側、東側、西側、南側の隣接処理要素
のNEWS出力線60(i−1、j)、60(i、j+1)、60
(i、j−1)、60(i+1、j)に接続されている。
入力マルチプレクサ62の出力線は、ALU48のN入力ポー
トに接続されている。
処理要素の動作は、命令母線18を介してアレイ・コント
ローラ14から受け取る命令、または命令コードによって
制御される。アレイ・コントローラからの命令コード
“PeOp"は、アレイ・コントローラからの命令母線18を
介して、各処理要素内のデコーダ64で並列に受け取られ
る。従来技術のSIMDアレイ・プロセッサと同様に、問題
の処理要素用の行選択線20i及び列選択線22jの状態によ
って、命令をその処理要素が実行するかどうかが決ま
る。各処理要素中のデコーダは、その処理要素のアレイ
内の位置に該当する行選択線及び列選択線に接続されて
いる。第i行第j列にある処理要素P(i、j)の場
合、これは第i行選択線20i及び第j列選択線20jとな
る。特定のデコーダ64への行選択線と列選択線の両方を
選択すると、デコーダは受け取った命令コードをデコー
ドし、それによって制御母線66、68、70を介して入力側
マルチプレクサ62、ALU48、出力側マルチプレクサ56に
制御信号を出すことにより、指定された命令をプロセッ
サに実行させる。
ローラ14から受け取る命令、または命令コードによって
制御される。アレイ・コントローラからの命令コード
“PeOp"は、アレイ・コントローラからの命令母線18を
介して、各処理要素内のデコーダ64で並列に受け取られ
る。従来技術のSIMDアレイ・プロセッサと同様に、問題
の処理要素用の行選択線20i及び列選択線22jの状態によ
って、命令をその処理要素が実行するかどうかが決ま
る。各処理要素中のデコーダは、その処理要素のアレイ
内の位置に該当する行選択線及び列選択線に接続されて
いる。第i行第j列にある処理要素P(i、j)の場
合、これは第i行選択線20i及び第j列選択線20jとな
る。特定のデコーダ64への行選択線と列選択線の両方を
選択すると、デコーダは受け取った命令コードをデコー
ドし、それによって制御母線66、68、70を介して入力側
マルチプレクサ62、ALU48、出力側マルチプレクサ56に
制御信号を出すことにより、指定された命令をプロセッ
サに実行させる。
ALU48中で、2つの基本的動作形式が実行される。第1
の動作形式は、入力データの1ビットが単にALUの入力
ポートから出力ポートへ送られるだけの経路指定動作で
ある。たとえば、NEWS入力線の選んだ1本からマルチプ
レクサ62へ、さらにその入力側マルチプレクサ62、ALU
の入力ポートN、ALUの出力ポートQを介して、NEWS出
力レジスタを形成するQレジスタへ、データの1ビット
を送ることができる。そこから、NEWSネットワークに情
報が出力される。同様に、メモリ・アドレス母線24上の
アドレスによって指定されたメモリ16内の記憶位置か
ら、メモリの両方向データ・ポート59、ALUのM入力ポ
ートとQ出力ポートを介して、Qレジスタへ、データの
1ビットを送ることができる。第2の基本的動作形式は
算術演算である。図の処理要素中で、演算結果レジスタ
50及びシフト・レジスタ52が主としてそのような演算に
使用される。ALUで実行できる実際の演算は、ALUの内部
構造によって変わる。このことは、本発明の理解にとっ
て本質的ではないので、詳しくは説明しないことにす
る。当業者にとって自明なように、通常の場合、ALUは
通常のやり方で実現される。
の動作形式は、入力データの1ビットが単にALUの入力
ポートから出力ポートへ送られるだけの経路指定動作で
ある。たとえば、NEWS入力線の選んだ1本からマルチプ
レクサ62へ、さらにその入力側マルチプレクサ62、ALU
の入力ポートN、ALUの出力ポートQを介して、NEWS出
力レジスタを形成するQレジスタへ、データの1ビット
を送ることができる。そこから、NEWSネットワークに情
報が出力される。同様に、メモリ・アドレス母線24上の
アドレスによって指定されたメモリ16内の記憶位置か
ら、メモリの両方向データ・ポート59、ALUのM入力ポ
ートとQ出力ポートを介して、Qレジスタへ、データの
1ビットを送ることができる。第2の基本的動作形式は
算術演算である。図の処理要素中で、演算結果レジスタ
50及びシフト・レジスタ52が主としてそのような演算に
使用される。ALUで実行できる実際の演算は、ALUの内部
構造によって変わる。このことは、本発明の理解にとっ
て本質的ではないので、詳しくは説明しないことにす
る。当業者にとって自明なように、通常の場合、ALUは
通常のやり方で実現される。
従来技術のSIMDアレイ・プロセッサでは、デコーダは、
通常、複数のハード配線で接続された論理ゲートの形で
ハード配線で接続されている。それとは対照的に、本発
明によるSIMDアレイ・プロセッサ中のデコーダは、プロ
グラム可能である。本発明の特定の実施例では、命令修
正機構として働くルックアップ・テーブルを設けること
により、デコーダはプログラム可能となっている。さら
に、本発明のこの実施例では、デコーダ64への命令コー
ド入力の選んだビットだけがルックアップ・テーブルに
よって修正される。
通常、複数のハード配線で接続された論理ゲートの形で
ハード配線で接続されている。それとは対照的に、本発
明によるSIMDアレイ・プロセッサ中のデコーダは、プロ
グラム可能である。本発明の特定の実施例では、命令修
正機構として働くルックアップ・テーブルを設けること
により、デコーダはプログラム可能となっている。さら
に、本発明のこの実施例では、デコーダ64への命令コー
ド入力の選んだビットだけがルックアップ・テーブルに
よって修正される。
第5図に、本発明のこの特定の実施例のデコーダ64をよ
り詳しく示す。このデコーダは、ハード配線によって接
続されたゲートなど通常の固定式デコーダ論理回路の形
の第1の部分72、及びルックアップ・テーブル(LUT)7
4の形の第2のプログラム可能部分から構成されてい
る。線18(i)ないし18(vi)及び行選択線、列選択線
上の命令コードのビットは、通常のようにプログラム式
論理アレイ(PLA)に直接入力されるが、命令コードの
ビット18(v)及び18(vi)の2個はルックアップ・テ
ーブルを並列にアドレスするために使われる。これらの
ビットによってアクセスされたルックアップ・テーブル
の記憶位置の2ビット出力線が、修正命令ビット線18
(vii)及び18(viii)を形成し、それらのビット線も
固定式デコーダ論理回路72に入力される。固定式デコー
ダ論理回路72は、線18(i)ないし(viii)上の入力デ
ータを論理的に組み合わせて、制御母線66、68、70上に
出力制御情報を形成する。
り詳しく示す。このデコーダは、ハード配線によって接
続されたゲートなど通常の固定式デコーダ論理回路の形
の第1の部分72、及びルックアップ・テーブル(LUT)7
4の形の第2のプログラム可能部分から構成されてい
る。線18(i)ないし18(vi)及び行選択線、列選択線
上の命令コードのビットは、通常のようにプログラム式
論理アレイ(PLA)に直接入力されるが、命令コードの
ビット18(v)及び18(vi)の2個はルックアップ・テ
ーブルを並列にアドレスするために使われる。これらの
ビットによってアクセスされたルックアップ・テーブル
の記憶位置の2ビット出力線が、修正命令ビット線18
(vii)及び18(viii)を形成し、それらのビット線も
固定式デコーダ論理回路72に入力される。固定式デコー
ダ論理回路72は、線18(i)ないし(viii)上の入力デ
ータを論理的に組み合わせて、制御母線66、68、70上に
出力制御情報を形成する。
第5図に示したルックアップ・テーブルは、それぞれ2
ビットからなるワードを4個含む。アレイ・コントロー
ラからの大域「ルックアップ・テーブル・ロード」命令
に応答して、これら8ビットのデータが、メモリ16
(i、j)からデータ線76を経て並列にロードされる
(第4図も参照のこと)。処理要素のルックアップ・テ
ーブルは、初期設定以前には不確定情報を含んでいるの
で、「ルックアップ・テーブル・ロード」命令は、受け
取ったままの命令コードの未修正ビット18(i)ないし
18(vi)、すなわちルックアップ・テーブルを通過して
いないビットのみを使用する。各処理要素中のデコーダ
は、この命令を受け取ると、線18(v)及び18(vi)の
値に関係なく、母線66、68、70上及びデコーダ内部の制
御線78上に制御信号を生成する。制御線78は、ルックア
ップ・テーブル用の書込み許可線である。当該の各処理
要素のルックアップ・テーブル用の当該の制御または修
正データが、以前にデータ母線26及びQレジスタ54を介
して各処理要素P(i、j)に関連するメモリ・スライ
ス16(i、j)中の当該の記憶位置にロードされてお
り、したがって大域命令及びメモリ・アドレスを使っ
て、制御データにアクセスしそれを各処理要素のルック
アップ・テーブルに読み込むことができる。大域無修正
命令を使って、従来技術のやり方でアレイを操作するこ
とにより、制御情報の記憶を行なう。
ビットからなるワードを4個含む。アレイ・コントロー
ラからの大域「ルックアップ・テーブル・ロード」命令
に応答して、これら8ビットのデータが、メモリ16
(i、j)からデータ線76を経て並列にロードされる
(第4図も参照のこと)。処理要素のルックアップ・テ
ーブルは、初期設定以前には不確定情報を含んでいるの
で、「ルックアップ・テーブル・ロード」命令は、受け
取ったままの命令コードの未修正ビット18(i)ないし
18(vi)、すなわちルックアップ・テーブルを通過して
いないビットのみを使用する。各処理要素中のデコーダ
は、この命令を受け取ると、線18(v)及び18(vi)の
値に関係なく、母線66、68、70上及びデコーダ内部の制
御線78上に制御信号を生成する。制御線78は、ルックア
ップ・テーブル用の書込み許可線である。当該の各処理
要素のルックアップ・テーブル用の当該の制御または修
正データが、以前にデータ母線26及びQレジスタ54を介
して各処理要素P(i、j)に関連するメモリ・スライ
ス16(i、j)中の当該の記憶位置にロードされてお
り、したがって大域命令及びメモリ・アドレスを使っ
て、制御データにアクセスしそれを各処理要素のルック
アップ・テーブルに読み込むことができる。大域無修正
命令を使って、従来技術のやり方でアレイを操作するこ
とにより、制御情報の記憶を行なう。
本発明によるSIMDアレイ・プロセッサでは、“PeOp"命
令コードによって定義される大域命令が基本的に2種類
存在する。局所的に修正できない大域命令と、局所的に
修正できる大域命令である。前者は、まずデータを処理
要素にロードし、データをアレイ中でシフトさせ、その
データをアレイ・メモリに記憶させ、次いで修正データ
をルックアップ・テーブルにロードするのに用いる大域
命令である。その他のすべての命令は、原則上、局所的
に修正できるが、適当な修正情報がルックアップ・テー
ブルにロードされている場合にしか使用できない。固定
式デコーダ論理回路72は、デコード中の命令が局所的に
修正可能かどうか、及び処理要素によって実際に実行さ
れる操作を決定するために線18(vii)及び18(viii)
上の入力データ(すなわち修正された命令ビット)を使
うかどうかが認識できるように、線18(i)ないし18
(vi)上の入力データ(すなわち未修正の命令ビット)
を論理的に組み合わせる。
令コードによって定義される大域命令が基本的に2種類
存在する。局所的に修正できない大域命令と、局所的に
修正できる大域命令である。前者は、まずデータを処理
要素にロードし、データをアレイ中でシフトさせ、その
データをアレイ・メモリに記憶させ、次いで修正データ
をルックアップ・テーブルにロードするのに用いる大域
命令である。その他のすべての命令は、原則上、局所的
に修正できるが、適当な修正情報がルックアップ・テー
ブルにロードされている場合にしか使用できない。固定
式デコーダ論理回路72は、デコード中の命令が局所的に
修正可能かどうか、及び処理要素によって実際に実行さ
れる操作を決定するために線18(vii)及び18(viii)
上の入力データ(すなわち修正された命令ビット)を使
うかどうかが認識できるように、線18(i)ないし18
(vi)上の入力データ(すなわち未修正の命令ビット)
を論理的に組み合わせる。
本発明によるSIMDアレイ・プロセッサのこの例では、プ
ログラム式デコーダを使って、大域命令の制約にもかか
わらず、異なる処理要素に対して異なるシフト方向を指
定する。データがシフトされる実際の方向は、入力マル
チプレクサ62へのNEWS入力の1つを選択した結果であ
る。命令コードの2ビット(すなわちビット18(v)及
び18(vi))を使ってNEWSネットワーク内での大域シフ
ト方向を指定するものとすると、この2ビットの局所的
修正用のルックアップ・テーブルは、所与のシフト命令
に応答して各処理要素内で局所的シフト方向を個別に指
定するのが可能なことを意味する。
ログラム式デコーダを使って、大域命令の制約にもかか
わらず、異なる処理要素に対して異なるシフト方向を指
定する。データがシフトされる実際の方向は、入力マル
チプレクサ62へのNEWS入力の1つを選択した結果であ
る。命令コードの2ビット(すなわちビット18(v)及
び18(vi))を使ってNEWSネットワーク内での大域シフ
ト方向を指定するものとすると、この2ビットの局所的
修正用のルックアップ・テーブルは、所与のシフト命令
に応答して各処理要素内で局所的シフト方向を個別に指
定するのが可能なことを意味する。
シフト命令の局所修正を活用するアルゴリズムを実行す
るための図のSIMDアレイ・プロセッサの準備は、次のよ
うに要約できる。
るための図のSIMDアレイ・プロセッサの準備は、次のよ
うに要約できる。
環状の東西NEWS接続部における両方向三状態ドライバを
介して、プロセッサのアレイの西端に連続する32ビット
のデータ・ワードを読み込み、大域未修正東側シフト命
令を使って、アレイ内でシフトさせる。最初のデータ・
ワードがプロセッサのアレイを横切って移動するとき、
最初の32データ・ワードの当該ビットが、大域無修正書
込み命令を用いて、各処理要素に関連するメモリ・ブロ
ック中の対応するメモリ記憶位置に書き込まれる。必要
なすべての情報がメモリにロードされるまで、これらの
ステップが反復される。上記シーケンス中に、またはそ
の後で、大域無修正「ルックアップ・テーブル・ロー
ド」命令を使って、処理要素のルックアップ・テーブル
に修正データが読み込まれる。このステップを実行し終
わると、プロセッサのアレイを使って局所的に修正可能
な命令によりアルゴリズムを実行することができる。
介して、プロセッサのアレイの西端に連続する32ビット
のデータ・ワードを読み込み、大域未修正東側シフト命
令を使って、アレイ内でシフトさせる。最初のデータ・
ワードがプロセッサのアレイを横切って移動するとき、
最初の32データ・ワードの当該ビットが、大域無修正書
込み命令を用いて、各処理要素に関連するメモリ・ブロ
ック中の対応するメモリ記憶位置に書き込まれる。必要
なすべての情報がメモリにロードされるまで、これらの
ステップが反復される。上記シーケンス中に、またはそ
の後で、大域無修正「ルックアップ・テーブル・ロー
ド」命令を使って、処理要素のルックアップ・テーブル
に修正データが読み込まれる。このステップを実行し終
わると、プロセッサのアレイを使って局所的に修正可能
な命令によりアルゴリズムを実行することができる。
上記のように、本発明によるSIMDアレイ・プロセッサ
は、特に画像処理用に適している。画像データの入力を
プロセッサのアレイに急送したり映像データの出力をプ
ロセッサのアレイから急送したりするには、本発明によ
るSIMDアレイ・プロセッサのプロセッサ・アレイに高帯
域データ母線を追加して接続すればよい。そうすれば、
コントローラ・アレイ間データ母線26の代わりにこのよ
うな高帯域母線を介して、データをビデオ・カメラやビ
デオ記憶装置からアレイに入力させたり、ビデオ記憶装
置やビデオ・ディスプレイに出力させたりすることがで
きる。高帯域データ母線は、コントローラ・アレイ間デ
ータ母線と同様なやり方でアレイに接続することができ
る。別法として、このような高帯域データ母線用に、入
力マルチプレクサ62への分離ビデオ入力(図示せず)、
及び第4図に示すような処理要素のALU48からの分離ビ
デオ出力レジスタ(図示せず)を設けることもできる。
ただし、高帯域データ母線を設けることは、本発明にと
って不可欠ではない。
は、特に画像処理用に適している。画像データの入力を
プロセッサのアレイに急送したり映像データの出力をプ
ロセッサのアレイから急送したりするには、本発明によ
るSIMDアレイ・プロセッサのプロセッサ・アレイに高帯
域データ母線を追加して接続すればよい。そうすれば、
コントローラ・アレイ間データ母線26の代わりにこのよ
うな高帯域母線を介して、データをビデオ・カメラやビ
デオ記憶装置からアレイに入力させたり、ビデオ記憶装
置やビデオ・ディスプレイに出力させたりすることがで
きる。高帯域データ母線は、コントローラ・アレイ間デ
ータ母線と同様なやり方でアレイに接続することができ
る。別法として、このような高帯域データ母線用に、入
力マルチプレクサ62への分離ビデオ入力(図示せず)、
及び第4図に示すような処理要素のALU48からの分離ビ
デオ出力レジスタ(図示せず)を設けることもできる。
ただし、高帯域データ母線を設けることは、本発明にと
って不可欠ではない。
次に、画像処理に特に適用され、本発明によるSIMDアレ
イ・プロセッサの一実施例の柔軟性を活用できる、2つ
のアルゴリズムを、第5図に示すプログラム式デコーダ
装置の例と共に説明することにする。
イ・プロセッサの一実施例の柔軟性を活用できる、2つ
のアルゴリズムを、第5図に示すプログラム式デコーダ
装置の例と共に説明することにする。
第1のアルゴリズムは、プロセッサ・アレイ内に保持さ
れているデータを取り上げて、これを90度回転させるも
のである。4×4ビット・アレイでは、回転前と回転後
のデータ行列は、下に示すようになる。
れているデータを取り上げて、これを90度回転させるも
のである。4×4ビット・アレイでは、回転前と回転後
のデータ行列は、下に示すようになる。
1 2 3 4 4 8 12 16 5 6 7 8 → 3 7 11 15 9 10 11 12 2 6 10 14 13 14 15 16 1 5 9 13 回転前 回転後 このアルゴリズムは、基本的に、どの処理要素から始め
ても、経路に沿ってちょうどMステップ進むと写像すべ
き正しい処理要素に達するように、1組の閉じた重なり
合わない「経路」または「ループ」のうちの1つの経路
上で、処理要素のアレイのまわりでデータ回転させるこ
とのできる、一連のシフト操作を含んでいる。第6図
に、32×32プロセッサ・アレイ用の1組のループをセッ
トアップする可能な1つの方法の西北四半部を示す。残
りの四半部は、回転対称性から推察できる。
ても、経路に沿ってちょうどMステップ進むと写像すべ
き正しい処理要素に達するように、1組の閉じた重なり
合わない「経路」または「ループ」のうちの1つの経路
上で、処理要素のアレイのまわりでデータ回転させるこ
とのできる、一連のシフト操作を含んでいる。第6図
に、32×32プロセッサ・アレイ用の1組のループをセッ
トアップする可能な1つの方法の西北四半部を示す。残
りの四半部は、回転対称性から推察できる。
ループの長さは様々であり、また矢印で示すように、シ
フト方向が時計回りのものも反時計回りのものもあるこ
とに留意されたい。ただし、あるビットをその位置する
ループに沿って33回シフトさせると、隣接四半部の対応
する位置にくることが、各ループで共通している。言い
換えれば、33ステップ進むと、アレイ全体が90度だけ回
転される。
フト方向が時計回りのものも反時計回りのものもあるこ
とに留意されたい。ただし、あるビットをその位置する
ループに沿って33回シフトさせると、隣接四半部の対応
する位置にくることが、各ループで共通している。言い
換えれば、33ステップ進むと、アレイ全体が90度だけ回
転される。
処理要素間でのデータ・シフトを個別に指定できるよう
にすることにより、1命令サイクルのうちにネットワー
ク内部でデータを異なる方向に転送させることが可能で
ある。従来のSIMDアレイ・プロセッサでは、大域シフト
操作を有するという制約のために、いつでもアレイ内で
一方向にしかシフトできなかったことを思い起こされた
い。局所的命令修正用に、本発明によるSIMDアレイ・プ
ロセッサにプログラム式デコーダを設けることは、大域
命令の制約にもかかわらず、データを異なる方向にシフ
トできることを意味する。第6図に示したアルゴリズム
では、ルックアップ・テーブルのアクセスされた記憶位
置に含まれる図のループを定義するための修正データ
は、処理要素ごとに変わる。
にすることにより、1命令サイクルのうちにネットワー
ク内部でデータを異なる方向に転送させることが可能で
ある。従来のSIMDアレイ・プロセッサでは、大域シフト
操作を有するという制約のために、いつでもアレイ内で
一方向にしかシフトできなかったことを思い起こされた
い。局所的命令修正用に、本発明によるSIMDアレイ・プ
ロセッサにプログラム式デコーダを設けることは、大域
命令の制約にもかかわらず、データを異なる方向にシフ
トできることを意味する。第6図に示したアルゴリズム
では、ルックアップ・テーブルのアクセスされた記憶位
置に含まれる図のループを定義するための修正データ
は、処理要素ごとに変わる。
第2のアルゴリズムは、X軸での鏡映に関するものであ
る。
る。
第2のアルゴリズムは、プロセッサ・アレイ中に保持さ
れているデータを取り上げて、これを「X軸」で鏡映反
転させるものである。4×4ビット・アレイでは、鏡映
前と鏡映後のデータ行列は、下に示すようになる。
れているデータを取り上げて、これを「X軸」で鏡映反
転させるものである。4×4ビット・アレイでは、鏡映
前と鏡映後のデータ行列は、下に示すようになる。
1 2 3 4 13 14 15 16 5 6 7 8 9 10 11 12 9 10 11 12 5 6 7 8 13 14 15 16 1 2 3 4 鏡映前 鏡映後 図示し易くするため、第7a図及び第7b図には、8×8プ
ロセッサ・アレイ用のアルゴリズムを示す。これは32×
32プロセッサ・アレイ用に、容易に発展させることがで
きる、このアルゴリズムは、2段階で実行される。第1
段階は、4サイクルの間に実行され、第7a図に示すNEWS
設定を有する。第2段階は、1サイクルで実行され、単
に西側大域シフトであり、第7b図に示すNEWS設定を有す
る。このアルゴリズムは、n×nアレイ(n:偶数)での
X軸鏡映を実施するのに、1+n/2サイクルを要する。
ロセッサ・アレイ用のアルゴリズムを示す。これは32×
32プロセッサ・アレイ用に、容易に発展させることがで
きる、このアルゴリズムは、2段階で実行される。第1
段階は、4サイクルの間に実行され、第7a図に示すNEWS
設定を有する。第2段階は、1サイクルで実行され、単
に西側大域シフトであり、第7b図に示すNEWS設定を有す
る。このアルゴリズムは、n×nアレイ(n:偶数)での
X軸鏡映を実施するのに、1+n/2サイクルを要する。
図のアルゴリズムでは、鏡映操作の始めに一度、ルック
アップ・テーブルを設定しておくだけでよい。どのビッ
トをもその位置する経路に沿って4ステップ移動させ
る、第7a図に示したパターンを与えるように局所的に修
正された、4個の第1の大域シフト命令が出される。次
いで、局所的に修正する必要なしに第7b図に示したNEWS
パターンを与える、1個の第2の大域シフト命令(西側
大域シフト)が出される。これは、どのビットも西側に
1ステップ移動させる。各ビットは、最後には、その始
めの位置に対してX軸で鏡映をなす位置にくることがわ
かる。第7a図に比べて第7b図のシフト方向の変化は、単
に、2つの異なる大域シフト命令の使用によって生じる
にすぎない。第7a図の場合には、大域命令は、処理要素
ごとに変わる修正子ビットによって修正される。第7b図
の場合には、大域命令は修正されない。
アップ・テーブルを設定しておくだけでよい。どのビッ
トをもその位置する経路に沿って4ステップ移動させ
る、第7a図に示したパターンを与えるように局所的に修
正された、4個の第1の大域シフト命令が出される。次
いで、局所的に修正する必要なしに第7b図に示したNEWS
パターンを与える、1個の第2の大域シフト命令(西側
大域シフト)が出される。これは、どのビットも西側に
1ステップ移動させる。各ビットは、最後には、その始
めの位置に対してX軸で鏡映をなす位置にくることがわ
かる。第7a図に比べて第7b図のシフト方向の変化は、単
に、2つの異なる大域シフト命令の使用によって生じる
にすぎない。第7a図の場合には、大域命令は、処理要素
ごとに変わる修正子ビットによって修正される。第7b図
の場合には、大域命令は修正されない。
第8図は、本発明によるSIMDアレイ・プロセッサの柔軟
性をさらに増大させる、プロセッサ要素に対する修正を
示す。
性をさらに増大させる、プロセッサ要素に対する修正を
示す。
SIMDアレイ・プロセッサの典型的な動作サイクルでは、
アレイ中の処理要素が、NEWSネットワークの1つの隣接
処理要素からデータを選択する。ただし、どのシフト・
サイクルでも各セルに対する入力接続線の1本だけが使
用されるので、これは、ネットワーク接続の最適利用に
はならない。NEWS接続線の75%が遊休状態であると思わ
れる。ただし、実際には、NEWS接続線は両方向性であ
り、所与の処理要素に対する「入力」接続線の1本がそ
の処理要素からの出力に用いられるので、実際にはネッ
トワークの50%だけが遊休状態である。とはいえ、この
50%さえ、ネットワークを十分に利用していないことの
現われである。第8図に示した処理要素に対する主な修
正は、2個のNEWS出力レジスタQns54ns及びQew54ewを設
けることである。この2個のレジスタを設けると、1サ
イクル当り2方向へのシフト操作、すなわち、北側に1
つと東側1つのシフト操作を可能にする基礎が得られ
る。これは、NEWS配線のより効率的な使用の現われであ
る。上記の修正に加えて、処理要素に若干の追加修正が
必要である。
アレイ中の処理要素が、NEWSネットワークの1つの隣接
処理要素からデータを選択する。ただし、どのシフト・
サイクルでも各セルに対する入力接続線の1本だけが使
用されるので、これは、ネットワーク接続の最適利用に
はならない。NEWS接続線の75%が遊休状態であると思わ
れる。ただし、実際には、NEWS接続線は両方向性であ
り、所与の処理要素に対する「入力」接続線の1本がそ
の処理要素からの出力に用いられるので、実際にはネッ
トワークの50%だけが遊休状態である。とはいえ、この
50%さえ、ネットワークを十分に利用していないことの
現われである。第8図に示した処理要素に対する主な修
正は、2個のNEWS出力レジスタQns54ns及びQew54ewを設
けることである。この2個のレジスタを設けると、1サ
イクル当り2方向へのシフト操作、すなわち、北側に1
つと東側1つのシフト操作を可能にする基礎が得られ
る。これは、NEWS配線のより効率的な使用の現われであ
る。上記の修正に加えて、処理要素に若干の追加修正が
必要である。
第8図に示したように、入力マルチプレクサ62′は、一
時に処理要素P′(i、j)に対するNEWS入力のうち2
つを別々に選択して、それらをALU48′の当該の入力ポ
ートNns及びNewに供給する、多方向マルチプレクサであ
る。さらに、Qnsレジスタ及びQewレジスタのどちらかの
出力を選択するマルチプレクサ機能が、ALU48′内部に
設けられている。Qnsレジスタは、データを北側及び南
側の隣接処理要素に出力し、Qewレジスタはデータを東
側及び西側の隣接処理要素に渡す。各Qレジスタは、入
力マルチプレクサ62′及びALU48′を介して4本のNEWS
入力線のどれからでもデータをサンプリングすることが
できる。典型的なサイクルは西側からデータをサンプリ
ングするQnsと南側からデータをサンプリングするQewか
ら構成することができる。このような2サイクルで、Qn
sレジスタ及びQewレジスタに保持されている2組のデー
タがそれぞれ対角線方向に北東に1位置だけ移動される
ことになる。1個の出力レジスタQしかない場合は、こ
れらのシフトを実現するのに4サイクルが必要である。
このようにして、処理要素が2個のデータ・ビットを同
時にシフトすることが可能である。
時に処理要素P′(i、j)に対するNEWS入力のうち2
つを別々に選択して、それらをALU48′の当該の入力ポ
ートNns及びNewに供給する、多方向マルチプレクサであ
る。さらに、Qnsレジスタ及びQewレジスタのどちらかの
出力を選択するマルチプレクサ機能が、ALU48′内部に
設けられている。Qnsレジスタは、データを北側及び南
側の隣接処理要素に出力し、Qewレジスタはデータを東
側及び西側の隣接処理要素に渡す。各Qレジスタは、入
力マルチプレクサ62′及びALU48′を介して4本のNEWS
入力線のどれからでもデータをサンプリングすることが
できる。典型的なサイクルは西側からデータをサンプリ
ングするQnsと南側からデータをサンプリングするQewか
ら構成することができる。このような2サイクルで、Qn
sレジスタ及びQewレジスタに保持されている2組のデー
タがそれぞれ対角線方向に北東に1位置だけ移動される
ことになる。1個の出力レジスタQしかない場合は、こ
れらのシフトを実現するのに4サイクルが必要である。
このようにして、処理要素が2個のデータ・ビットを同
時にシフトすることが可能である。
これらの構成要素に対する修正、ならびに制御線66′、
68′、70′及びデコーダ64′中の論理回路に対する変更
についてのこれ以上の詳細は、決まった手順にすぎない
ので、当明細書に示す必要はない。また、当業者にとっ
て明らかなように、Qレジスタの増設をサポートするた
めの処理要素のその他の修正も可能である。
68′、70′及びデコーダ64′中の論理回路に対する変更
についてのこれ以上の詳細は、決まった手順にすぎない
ので、当明細書に示す必要はない。また、当業者にとっ
て明らかなように、Qレジスタの増設をサポートするた
めの処理要素のその他の修正も可能である。
結果として得られる第8図の処理要素は、第4図に示し
た処理要素よりも複雑であるものの、NEWSネットワーク
の柔軟性と効率をさらに増大させる。その上、処理要素
に対する入力線と出力線が両方向性の場合には処理要素
の入力及び出力NEWS接続線が共用されるので、各処理要
素ごとに追加のNEWS接続線を設けなくとも上記のことが
実現される。また、第8図に示すように、1処理要素が
同時に2データ・ビットを処理することも可能である。
た処理要素よりも複雑であるものの、NEWSネットワーク
の柔軟性と効率をさらに増大させる。その上、処理要素
に対する入力線と出力線が両方向性の場合には処理要素
の入力及び出力NEWS接続線が共用されるので、各処理要
素ごとに追加のNEWS接続線を設けなくとも上記のことが
実現される。また、第8図に示すように、1処理要素が
同時に2データ・ビットを処理することも可能である。
次に、第9図、第10図、第11図を参照して、第8図にお
ける修正を活用する3つのアルゴリズムについて説明す
る。図示し易くするために、8×8アレイ用のアルゴリ
ズムだけを示し、各処理要素P′(i、j)は、前と同
様に、小さな円で表わす。図を理解する場合、アレイが
環状に接続されていることを思い起こされたい。
ける修正を活用する3つのアルゴリズムについて説明す
る。図示し易くするために、8×8アレイ用のアルゴリ
ズムだけを示し、各処理要素P′(i、j)は、前と同
様に、小さな円で表わす。図を理解する場合、アレイが
環状に接続されていることを思い起こされたい。
第9図に、これらのアルゴリズムの最初のものを示す。
この図は、アレイ全体にわたる西北へのシフトを表わし
ている。第9図で、処理要素82の所の86と記した矢印
は、この処理要素に対する東側NEWS接続線から入力マル
チプレクサ62′を介してデータを受け取るために、第8
図のQns出力レジスタ54nsを使用することを表わす。同
様に、第9図で、この処理要素の所の84と記した矢印
は、この処理要素に対する入力マルチプレクサ62′を介
して南側NEWS接続線からデータを受け取るために、第8
図のQew出力レジスタ54ewを使用することを表わしてい
る。したがって、このノードの処理要素で、2つの転送
が実行される。
この図は、アレイ全体にわたる西北へのシフトを表わし
ている。第9図で、処理要素82の所の86と記した矢印
は、この処理要素に対する東側NEWS接続線から入力マル
チプレクサ62′を介してデータを受け取るために、第8
図のQns出力レジスタ54nsを使用することを表わす。同
様に、第9図で、この処理要素の所の84と記した矢印
は、この処理要素に対する入力マルチプレクサ62′を介
して南側NEWS接続線からデータを受け取るために、第8
図のQew出力レジスタ54ewを使用することを表わしてい
る。したがって、このノードの処理要素で、2つの転送
が実行される。
このアルゴリズムでは、大域シフト命令が各処理要素に
ついて同じやり方でデコードされる。処理要素を表わす
円を貫く左上がりの斜線は、異なる経路に沿った情報の
流れがどのように分離されるかを示している。この図を
読み取る際、対角線をデータ流れを反射する鏡と考える
のが有用である。いくつかの処理要素をつなぐ太線は、
このような1本の経路88を示している。1項目のデータ
がどのようにして2ステップで西北にシフトされるかが
この図からわかる。各処理要素は一度に2ビットを処理
するので、西北へのビット・シフト1回につき1ステッ
プしか必要でない。
ついて同じやり方でデコードされる。処理要素を表わす
円を貫く左上がりの斜線は、異なる経路に沿った情報の
流れがどのように分離されるかを示している。この図を
読み取る際、対角線をデータ流れを反射する鏡と考える
のが有用である。いくつかの処理要素をつなぐ太線は、
このような1本の経路88を示している。1項目のデータ
がどのようにして2ステップで西北にシフトされるかが
この図からわかる。各処理要素は一度に2ビットを処理
するので、西北へのビット・シフト1回につき1ステッ
プしか必要でない。
第10図には、第2のアルゴリズムを示す。アレイを転置
するこのアルゴリズムでは、大域シフト命令が異なる2
つのやり方でデコードされるように、処理要素がプログ
ラミングされる。左上りの斜線を施した円で表わした、
処理要素90及び92などの処理要素が、第9図の処理要素
82と同じやり方で、大域シフト命令をデコードして、矢
印84及び86で表わすようにデータを処理する。入力マル
チプレクサ62′によって南側及び東側のNEWS入力線から
データが選択され、それぞれQnsレジスタ及びQewレジス
タにロードされるように、単円で表わした処理要素94な
どの処理要素がプログラミングされる。
するこのアルゴリズムでは、大域シフト命令が異なる2
つのやり方でデコードされるように、処理要素がプログ
ラミングされる。左上りの斜線を施した円で表わした、
処理要素90及び92などの処理要素が、第9図の処理要素
82と同じやり方で、大域シフト命令をデコードして、矢
印84及び86で表わすようにデータを処理する。入力マル
チプレクサ62′によって南側及び東側のNEWS入力線から
データが選択され、それぞれQnsレジスタ及びQewレジス
タにロードされるように、単円で表わした処理要素94な
どの処理要素がプログラミングされる。
経路が斜線を施した処理要素の所でどのように方向を変
え、別の処理要素の所でどのように交差するかを示す、
太線で示した経路96と破線で示した経路98の2つのデー
タ経路が示されている。
え、別の処理要素の所でどのように交差するかを示す、
太線で示した経路96と破線で示した経路98の2つのデー
タ経路が示されている。
第11図には、180度回転を実施する第3のアルゴリズム
を示す。この図、とりわけ太線116及び破線118で表わさ
れる2本のデータ経路を検討すると明らかなように、各
四半部で異なる2方向、合計8方向で大域シフト命令を
デコードするように、処理要素がプログラミングされ
る。それらを、以下の表に示す。
を示す。この図、とりわけ太線116及び破線118で表わさ
れる2本のデータ経路を検討すると明らかなように、各
四半部で異なる2方向、合計8方向で大域シフト命令を
デコードするように、処理要素がプログラミングされ
る。それらを、以下の表に示す。
データ経路116及び118から、あるいはデータ・ビット
を、8回のシフトすなわちステップで(すなわち経路11
8に沿って)8×8プロセッサ・アレイ内部で180度(た
とえば、要素114から要素106に)回転できることがわか
る。各処理要素は同時に2ビットを処理するので、180
度回転1回当りの平均ステップ数は4にすぎない。この
アルゴリズムは、第9図及び第10図に示した他のアルゴ
リズムと同様に、容易にn×nアレイに一般化できる。
ただし、nは偶数である(たとえば、32×32アレイ)。
を、8回のシフトすなわちステップで(すなわち経路11
8に沿って)8×8プロセッサ・アレイ内部で180度(た
とえば、要素114から要素106に)回転できることがわか
る。各処理要素は同時に2ビットを処理するので、180
度回転1回当りの平均ステップ数は4にすぎない。この
アルゴリズムは、第9図及び第10図に示した他のアルゴ
リズムと同様に、容易にn×nアレイに一般化できる。
ただし、nは偶数である(たとえば、32×32アレイ)。
以上可能な修正を加えた、本発明によるSIMDアレイ・プ
ロセッサの特定の例について説明した。ただし、当業者
には、明らかなように頭記の特許請求の範囲の範囲内で
他の多くの修正代案が可能である。たとえば、命令コー
ドの2ビットを修正するためのルックアップ・テーブル
についてしか説明しなかったが、様々なビット数と様々
なタイプの命令(すなわち、シフト命令だけでなく)を
修正するためのルックアップ・テーブルを設けることが
できることは明らかとなる。別の実施例では、行選択線
と列選択線をもルックアップ・テーブルに対する入力線
の一部をなすように配線して、これらの線上の選択信号
を使って、ルックアップ・テーブルの使用により大域命
令に対する局所的修正を指定することもできる。プログ
ラム式デコーダは本明細書では、ハード配線で接続され
たゲートなどの通常の固定式デコーダ論理回路の形の第
1部分とルックアップ・テーブルの形の第2のプログラ
ム化可能部分から構成されるものとして説明した。ただ
し、当業者には、明らかなように、その代わりにアレイ
の一部分を固定式にし、一部分を処理中にプログラミン
グ可能にした、別のプログラム式デコーダ手段を使用す
ることもできる。
ロセッサの特定の例について説明した。ただし、当業者
には、明らかなように頭記の特許請求の範囲の範囲内で
他の多くの修正代案が可能である。たとえば、命令コー
ドの2ビットを修正するためのルックアップ・テーブル
についてしか説明しなかったが、様々なビット数と様々
なタイプの命令(すなわち、シフト命令だけでなく)を
修正するためのルックアップ・テーブルを設けることが
できることは明らかとなる。別の実施例では、行選択線
と列選択線をもルックアップ・テーブルに対する入力線
の一部をなすように配線して、これらの線上の選択信号
を使って、ルックアップ・テーブルの使用により大域命
令に対する局所的修正を指定することもできる。プログ
ラム式デコーダは本明細書では、ハード配線で接続され
たゲートなどの通常の固定式デコーダ論理回路の形の第
1部分とルックアップ・テーブルの形の第2のプログラ
ム化可能部分から構成されるものとして説明した。ただ
し、当業者には、明らかなように、その代わりにアレイ
の一部分を固定式にし、一部分を処理中にプログラミン
グ可能にした、別のプログラム式デコーダ手段を使用す
ることもできる。
第1図は、典型的なSIMDアレイ・プロセッサの全体構造
を示す概略構成図である。 第2図は、本発明によるSIMDアレイ・プロセッサの一実
施例のアレイ・コントローラの主要構成要素を示す概略
構成図である。 第3図は、第2図のアレイ・コントローラで使用される
命令形式を示す。 第4図は、本発明の一実施例のプロセッサ・アレイの個
々の処理要素の主要構成要素を示す構成図である。 第5図は、第4図の処理要素中のデコーダをさらに詳し
く示した概略構成図である。 第6図は、本発明によるSIMDアレイ・プロセッサ上で実
施できるアルゴリズムを示す図である。 第7a図及び第7b図は、本発明によるSIMDアレイ・プロセ
ッサ上で実施できる別のアルゴリズムを示す図である。 第8図は、第4図の処理要素に対する修正を示す、概略
構成図である。 第9図、第10図、第11図は、第8図に示した処理要素に
修正を施した、本発明によるSIMDアレイ・プロセッサ上
で実施できるアルゴリズムを示す図である。 10……SIMDアレイ・プロセッサ、12……処理要素のアレ
イ、14……アレイ・コントローラ、18……命令母線、20
……列選択線、24……アドレス母線、26……コントロー
ラ・アレイ間データ母線、30……ホスト・コントローラ
間データ母線、31……アドレス/データ母線、32……マ
イクロコード記憶域、34……マイクロコード制御機構、
38、48……演算論理機構、39……フラグ線、40……レジ
スタ・バンク、42……行マスク用プログラム式論理アレ
イ、44……列マスク用プログラム式論理アレイ、46……
データ用バッファ。
を示す概略構成図である。 第2図は、本発明によるSIMDアレイ・プロセッサの一実
施例のアレイ・コントローラの主要構成要素を示す概略
構成図である。 第3図は、第2図のアレイ・コントローラで使用される
命令形式を示す。 第4図は、本発明の一実施例のプロセッサ・アレイの個
々の処理要素の主要構成要素を示す構成図である。 第5図は、第4図の処理要素中のデコーダをさらに詳し
く示した概略構成図である。 第6図は、本発明によるSIMDアレイ・プロセッサ上で実
施できるアルゴリズムを示す図である。 第7a図及び第7b図は、本発明によるSIMDアレイ・プロセ
ッサ上で実施できる別のアルゴリズムを示す図である。 第8図は、第4図の処理要素に対する修正を示す、概略
構成図である。 第9図、第10図、第11図は、第8図に示した処理要素に
修正を施した、本発明によるSIMDアレイ・プロセッサ上
で実施できるアルゴリズムを示す図である。 10……SIMDアレイ・プロセッサ、12……処理要素のアレ
イ、14……アレイ・コントローラ、18……命令母線、20
……列選択線、24……アドレス母線、26……コントロー
ラ・アレイ間データ母線、30……ホスト・コントローラ
間データ母線、31……アドレス/データ母線、32……マ
イクロコード記憶域、34……マイクロコード制御機構、
38、48……演算論理機構、39……フラグ線、40……レジ
スタ・バンク、42……行マスク用プログラム式論理アレ
イ、44……列マスク用プログラム式論理アレイ、46……
データ用バッファ。
Claims (2)
- 【請求項1】各々の処理要素が大域命令をそれぞれ自己
の処理要素内で局所的に実行するためにデコードするデ
コード手段を備え持つ多次元アレイの処理要素と、 上記多次元アレイの処理要素へ大域命令を発するための
制御論理手段と、 上記大域命令が上記処理要素の各々によって並列的に受
け取られるように上記制御論理手段を上記処理要素の各
々に接続するための、複数命令ビット線で構成される命
令母線と、 少なくとも1つの上記処理要素の上記デコード手段に含
まれる手段であって、上記大域命令の選択したビットを
局所的に修正し、局所的に修正された該命令ビットを局
所命令ビット線に出力するための、選択した命令ビット
線に接続されたプログラム式修正手段と、 少なくとも1つの上記処理要素の上記デコード手段に含
まれる手段であって、上記プログラム式修正手段から上
記局所的に修正された命令ビットを受け取るために上記
局所命令ビット線に接続され、かつ、上記大域命令の未
修正ビットを受け取るため上記命令母線に接続された固
定デコード手段と、 上記処理要素の各々に関連し該処理要素によりアクセス
されるブロックで構成される記憶手段と、 上記制御論理手段が上記記憶手段にアクセスし、上記プ
ログラム式修正手段の各々のための制御データを上記記
憶手段の該当ブロックに記憶するための手段と、 上記プログラム式修正手段の各々を個別にプログラムす
るための上記制御データを受け取るために、上記処理要
素の各々の上記プログラム式修正手段を上記記憶手段の
該当ブロックに接続する手段と、 上記記憶手段の該当ブロックから修正データを逐次受け
取るため上記記憶手段のブロックに接続された逐次書き
込みポートと、上記大域命令の上記選択した命令ビット
を並列に受け取るため上記選択した命令ビット線に接続
された並列読み取りポートとを備え持ち、上記プログラ
ム式修正手段の一部をなすルックアップ・テーブルと、 からなるSIMDアレイ・プロセッサであって、 上記処理要素の各々の上記固定デコーダ手段が、上記命
令母線上の大域ロード命令の未修正ビットに同時に応答
して、上記局所的に修正されたビットの値と関係なく、
上記制御データを上記記憶手段の該当ブロックから上記
プログラム式修正手段へとロードさせる機能を有する、 SIMDアレイ・プロセッサ。 - 【請求項2】上記プログラム式修正手段が、シフト方向
を決定する大域シフト命令ビットを受け取るため上記選
択した命令ビット線に接続し、上記大域シフト命令に応
答して上記大域シフト命令を局所的に修正しアレイ内の
複数の方向に一度にデータを分配する機能を持った請求
項1記載のSIMDアレイ・プロセッサ。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB8725116 | 1986-10-27 | ||
GB8725116A GB2211638A (en) | 1987-10-27 | 1987-10-27 | Simd array processor |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH01114982A JPH01114982A (ja) | 1989-05-08 |
JPH0727516B2 true JPH0727516B2 (ja) | 1995-03-29 |
Family
ID=10625947
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP63204859A Expired - Lifetime JPH0727516B2 (ja) | 1987-10-27 | 1988-08-19 | Simdアレイ・プロセツサ |
Country Status (5)
Country | Link |
---|---|
US (1) | US4992933A (ja) |
EP (1) | EP0314277B1 (ja) |
JP (1) | JPH0727516B2 (ja) |
DE (1) | DE3854568T2 (ja) |
GB (1) | GB2211638A (ja) |
Families Citing this family (171)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5729757A (en) * | 1985-05-20 | 1998-03-17 | Shekels; Howard D. | Super-computer system architectures using status memory to alter program |
US4965717A (en) * | 1988-12-09 | 1990-10-23 | Tandem Computers Incorporated | Multiple processor system having shared memory with private-write capability |
US5689647A (en) * | 1989-03-14 | 1997-11-18 | Sanyo Electric Co., Ltd. | Parallel computing system with processing element number setting mode and shortest route determination with matrix size information |
US5212777A (en) * | 1989-11-17 | 1993-05-18 | Texas Instruments Incorporated | Multi-processor reconfigurable in single instruction multiple data (SIMD) and multiple instruction multiple data (MIMD) modes and method of operation |
EP0444368B1 (en) * | 1990-02-28 | 1997-12-29 | Texas Instruments France | Digital Filtering with SIMD-processor |
DE4017132A1 (de) * | 1990-05-28 | 1991-12-05 | Oliver Bartels | Datenverarbeitungsanlage |
US5157785A (en) * | 1990-05-29 | 1992-10-20 | Wavetracer, Inc. | Process cell for an n-dimensional processor array having a single input element with 2n data inputs, memory, and full function arithmetic logic unit |
SE9002558D0 (sv) * | 1990-08-02 | 1990-08-02 | Carlstedt Elektronik Ab | Processor |
US5418915A (en) * | 1990-08-08 | 1995-05-23 | Sumitomo Metal Industries, Ltd. | Arithmetic unit for SIMD type parallel computer |
US5546343A (en) * | 1990-10-18 | 1996-08-13 | Elliott; Duncan G. | Method and apparatus for a single instruction operating multiple processors on a memory chip |
US5966528A (en) * | 1990-11-13 | 1999-10-12 | International Business Machines Corporation | SIMD/MIMD array processor with vector processing |
US5617577A (en) * | 1990-11-13 | 1997-04-01 | International Business Machines Corporation | Advanced parallel array processor I/O connection |
US5630162A (en) * | 1990-11-13 | 1997-05-13 | International Business Machines Corporation | Array processor dotted communication network based on H-DOTs |
US5765012A (en) * | 1990-11-13 | 1998-06-09 | International Business Machines Corporation | Controller for a SIMD/MIMD array having an instruction sequencer utilizing a canned routine library |
US5625836A (en) * | 1990-11-13 | 1997-04-29 | International Business Machines Corporation | SIMD/MIMD processing memory element (PME) |
US5713037A (en) * | 1990-11-13 | 1998-01-27 | International Business Machines Corporation | Slide bus communication functions for SIMD/MIMD array processor |
US5765011A (en) * | 1990-11-13 | 1998-06-09 | International Business Machines Corporation | Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams |
US5734921A (en) * | 1990-11-13 | 1998-03-31 | International Business Machines Corporation | Advanced parallel array processor computer package |
US5590345A (en) * | 1990-11-13 | 1996-12-31 | International Business Machines Corporation | Advanced parallel array processor(APAP) |
DE69131272T2 (de) * | 1990-11-13 | 1999-12-09 | International Business Machines Corp., Armonk | Paralleles Assoziativprozessor-System |
US5765015A (en) * | 1990-11-13 | 1998-06-09 | International Business Machines Corporation | Slide network for an array processor |
US5963745A (en) * | 1990-11-13 | 1999-10-05 | International Business Machines Corporation | APAP I/O programmable router |
US5809292A (en) * | 1990-11-13 | 1998-09-15 | International Business Machines Corporation | Floating point for simid array machine |
US5815723A (en) * | 1990-11-13 | 1998-09-29 | International Business Machines Corporation | Picket autonomy on a SIMD machine |
US5963746A (en) * | 1990-11-13 | 1999-10-05 | International Business Machines Corporation | Fully distributed processing memory element |
US5828894A (en) * | 1990-11-13 | 1998-10-27 | International Business Machines Corporation | Array processor having grouping of SIMD pickets |
US5794059A (en) * | 1990-11-13 | 1998-08-11 | International Business Machines Corporation | N-dimensional modified hypercube |
US5588152A (en) * | 1990-11-13 | 1996-12-24 | International Business Machines Corporation | Advanced parallel processor including advanced support hardware |
US5594918A (en) * | 1991-05-13 | 1997-01-14 | International Business Machines Corporation | Parallel computer system providing multi-ported intelligent memory |
US5689719A (en) * | 1991-06-28 | 1997-11-18 | Sanyo Electric O., Ltd. | Parallel computer system including processing elements |
US5487153A (en) * | 1991-08-30 | 1996-01-23 | Adaptive Solutions, Inc. | Neural network sequencer and interface apparatus |
CA2073516A1 (en) * | 1991-11-27 | 1993-05-28 | Peter Michael Kogge | Dynamic multi-mode parallel processor array architecture computer system |
EP0562251A2 (en) * | 1992-03-24 | 1993-09-29 | Universities Research Association, Inc. | Parallel data transfer network controlled by a dynamically reconfigurable serial network |
JP2642039B2 (ja) * | 1992-05-22 | 1997-08-20 | インターナショナル・ビジネス・マシーンズ・コーポレイション | アレイ・プロセッサ |
US5331315A (en) * | 1992-06-12 | 1994-07-19 | Universities Research Association, Inc. | Switch for serial or parallel communication networks |
FR2692702A1 (fr) * | 1992-06-17 | 1993-12-24 | Philips Electronique Lab | Dispositif de traitement de données ayant une architecture à instruction commune agissant sur des données multiples. |
JPH0612253A (ja) * | 1992-06-25 | 1994-01-21 | Rohm Co Ltd | マイクロコンピュータ |
US5495618A (en) * | 1992-08-26 | 1996-02-27 | Eastman Kodak Company | System for augmenting two dimensional data sets in a two dimensional parallel computer system |
US5493651A (en) * | 1993-02-16 | 1996-02-20 | International Business Machines Corporation | Method and system for dequeuing connection requests in a simplex switch |
US5499376A (en) * | 1993-12-06 | 1996-03-12 | Cpu Technology, Inc. | High speed mask and logical combination operations for parallel processor units |
JPH09511078A (ja) * | 1993-12-12 | 1997-11-04 | エーエスピー ソルーション ユーエスエイ インコーポレイション | 信号処理方法および装置 |
IL110181A (en) * | 1994-06-30 | 1998-02-08 | Softchip Israel Ltd | Install microprocessor and peripherals |
US5553272A (en) * | 1994-09-30 | 1996-09-03 | The University Of South Florida | VLSI circuit structure for determining the edit distance between strings |
US6128720A (en) * | 1994-12-29 | 2000-10-03 | International Business Machines Corporation | Distributed processing array with component processors performing customized interpretation of instructions |
US5649135A (en) * | 1995-01-17 | 1997-07-15 | International Business Machines Corporation | Parallel processing system and method using surrogate instructions |
US5680597A (en) * | 1995-01-26 | 1997-10-21 | International Business Machines Corporation | System with flexible local control for modifying same instruction partially in different processor of a SIMD computer system to execute dissimilar sequences of instructions |
US5742180A (en) * | 1995-02-10 | 1998-04-21 | Massachusetts Institute Of Technology | Dynamically programmable gate array with multiple contexts |
US6052773A (en) * | 1995-02-10 | 2000-04-18 | Massachusetts Institute Of Technology | DPGA-coupled microprocessors |
FR2731094B1 (fr) * | 1995-02-23 | 1997-04-30 | Dufal Frederic | Procede et dispositif de commande simultanee des etats de controle des unites d'execution d'un processeur programmable |
JPH08235130A (ja) * | 1995-02-24 | 1996-09-13 | Sony Corp | 並列プロセッサ |
US5649179A (en) * | 1995-05-19 | 1997-07-15 | Motorola, Inc. | Dynamic instruction allocation for a SIMD processor |
US7266725B2 (en) | 2001-09-03 | 2007-09-04 | Pact Xpp Technologies Ag | Method for debugging reconfigurable architectures |
US6088783A (en) * | 1996-02-16 | 2000-07-11 | Morton; Steven G | DPS having a plurality of like processors controlled in parallel by an instruction word, and a control processor also controlled by the instruction word |
US6317819B1 (en) | 1996-01-11 | 2001-11-13 | Steven G. Morton | Digital signal processor containing scalar processor and a plurality of vector processors operating from a single instruction |
DE19629130A1 (de) * | 1996-07-19 | 1998-05-14 | Philips Patentverwaltung | Signalprozessor |
DE19651075A1 (de) * | 1996-12-09 | 1998-06-10 | Pact Inf Tech Gmbh | Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen |
DE19654595A1 (de) | 1996-12-20 | 1998-07-02 | Pact Inf Tech Gmbh | I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen |
FR2757973B1 (fr) * | 1996-12-27 | 1999-04-09 | Sgs Thomson Microelectronics | Processeur de traitement matriciel |
ATE243390T1 (de) * | 1996-12-27 | 2003-07-15 | Pact Inf Tech Gmbh | Verfahren zum selbständigen dynamischen umladen von datenflussprozessoren (dfps) sowie bausteinen mit zwei- oder mehrdimensionalen programmierbaren zellstrukturen (fpgas, dpgas, o.dgl.) |
DE19654846A1 (de) * | 1996-12-27 | 1998-07-09 | Pact Inf Tech Gmbh | Verfahren zum selbständigen dynamischen Umladen von Datenflußprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o. dgl.) |
US6542998B1 (en) | 1997-02-08 | 2003-04-01 | Pact Gmbh | Method of self-synchronization of configurable elements of a programmable module |
US8686549B2 (en) | 2001-09-03 | 2014-04-01 | Martin Vorbach | Reconfigurable elements |
DE19756591B4 (de) * | 1997-12-18 | 2004-03-04 | Sp3D Chip Design Gmbh | Vorrichtung zum hierarchischen Verbinden einer Mehrzahl von Funktionseinheiten in einem Prozessor |
DE19861088A1 (de) * | 1997-12-22 | 2000-02-10 | Pact Inf Tech Gmbh | Verfahren zur Reparatur von integrierten Schaltkreisen |
US6079008A (en) * | 1998-04-03 | 2000-06-20 | Patton Electronics Co. | Multiple thread multiple data predictive coded parallel processing system and method |
US6839728B2 (en) * | 1998-10-09 | 2005-01-04 | Pts Corporation | Efficient complex multiplication and fast fourier transform (FFT) implementation on the manarray architecture |
US7506136B2 (en) | 1999-04-09 | 2009-03-17 | Clearspeed Technology Plc | Parallel data processing apparatus |
US7627736B2 (en) | 1999-04-09 | 2009-12-01 | Clearspeed Technology Plc | Thread manager to control an array of processing elements |
GB2391093B (en) * | 1999-04-09 | 2004-04-07 | Clearspeed Technology Ltd | Parallel data processing systems |
US20070294510A1 (en) * | 1999-04-09 | 2007-12-20 | Dave Stuttard | Parallel data processing apparatus |
US7526630B2 (en) | 1999-04-09 | 2009-04-28 | Clearspeed Technology, Plc | 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 |
GB2348972A (en) * | 1999-04-09 | 2000-10-18 | Pixelfusion Ltd | Array controller for array of processing elements |
US7802079B2 (en) | 1999-04-09 | 2010-09-21 | Clearspeed Technology Limited | Parallel data processing apparatus |
CN1378665A (zh) | 1999-06-10 | 2002-11-06 | Pact信息技术有限公司 | 编程概念 |
WO2001031418A2 (en) | 1999-10-26 | 2001-05-03 | Pyxsys Corporation | Wide connections for transferring data between pe's of an n-dimensional mesh-connected simd array while transferring operands from memory |
US6728863B1 (en) | 1999-10-26 | 2004-04-27 | Assabet Ventures | Wide connections for transferring data between PE's of an N-dimensional mesh-connected SIMD array while transferring operands from memory |
US6816593B1 (en) * | 1999-12-23 | 2004-11-09 | Ati International Srl | Method and apparatus for transposing bits |
US6578133B1 (en) * | 2000-02-24 | 2003-06-10 | Stanley M. Hyduke | MIMD array of single bit processors for processing logic equations in strict sequential order |
US7249247B2 (en) * | 2000-04-11 | 2007-07-24 | Microsoft Corporation | Common feature mode for microprocessors in a multiple microprocessor system |
US6792529B1 (en) * | 2000-04-11 | 2004-09-14 | Microsoft Corporation | Common feature mode for microprocessors in a multiple microprocessor system |
EP1342158B1 (de) | 2000-06-13 | 2010-08-04 | Richter, Thomas | Pipeline ct-protokolle und -kommunikation |
WO2002029601A2 (en) * | 2000-10-04 | 2002-04-11 | Pyxsys Corporation | Simd system and method |
US8058899B2 (en) * | 2000-10-06 | 2011-11-15 | Martin Vorbach | Logic cell array and bus system |
US7003450B2 (en) * | 2000-10-20 | 2006-02-21 | Pts Corporation | Methods and apparatus for efficient vocoder implementations |
US6732253B1 (en) | 2000-11-13 | 2004-05-04 | Chipwrights Design, Inc. | Loop handling for single instruction multiple datapath processor architectures |
US6931518B1 (en) | 2000-11-28 | 2005-08-16 | Chipwrights Design, Inc. | Branching around conditional processing if states of all single instruction multiple datapaths are disabled and the computer program is non-deterministic |
WO2002046885A2 (en) * | 2000-11-28 | 2002-06-13 | Chipwrights Design, Inc. | Handling conditional processing in a single instruction multiple datapath processor architecture |
GB2370380B (en) | 2000-12-19 | 2003-12-31 | Picochip Designs Ltd | Processor architecture |
US20020133688A1 (en) * | 2001-01-29 | 2002-09-19 | Ming-Hau Lee | SIMD/MIMD processing on a reconfigurable array |
US9037807B2 (en) * | 2001-03-05 | 2015-05-19 | Pact Xpp Technologies Ag | Processor arrangement on a chip including data processing, memory, and interface elements |
US7444531B2 (en) * | 2001-03-05 | 2008-10-28 | Pact Xpp Technologies Ag | Methods and devices for treating and processing data |
US7844796B2 (en) | 2001-03-05 | 2010-11-30 | Martin Vorbach | Data processing device and method |
US20070299993A1 (en) * | 2001-03-05 | 2007-12-27 | Pact Xpp Technologies Ag | Method and Device for Treating and Processing Data |
US20090300262A1 (en) * | 2001-03-05 | 2009-12-03 | Martin Vorbach | Methods and devices for treating and/or processing data |
US7127593B2 (en) * | 2001-06-11 | 2006-10-24 | Broadcom Corporation | Conditional execution with multiple destination stores |
AU2002347560A1 (en) * | 2001-06-20 | 2003-01-02 | Pact Xpp Technologies Ag | Data processing method |
US7383421B2 (en) * | 2002-12-05 | 2008-06-03 | Brightscale, Inc. | Cellular engine for a data processing system |
US7996827B2 (en) * | 2001-08-16 | 2011-08-09 | Martin Vorbach | Method for the translation of programs for reconfigurable architectures |
US7434191B2 (en) * | 2001-09-03 | 2008-10-07 | Pact Xpp Technologies Ag | Router |
US8686475B2 (en) * | 2001-09-19 | 2014-04-01 | Pact Xpp Technologies Ag | Reconfigurable elements |
AU2003208266A1 (en) * | 2002-01-19 | 2003-07-30 | Pact Xpp Technologies Ag | Reconfigurable processor |
AU2003214003A1 (en) * | 2002-02-18 | 2003-09-09 | Pact Xpp Technologies Ag | Bus systems and method for reconfiguration |
US8914590B2 (en) * | 2002-08-07 | 2014-12-16 | Pact Xpp Technologies Ag | Data processing method and device |
AU2003223892A1 (en) * | 2002-03-21 | 2003-10-08 | Pact Xpp Technologies Ag | Method and device for data processing |
US7493607B2 (en) * | 2002-07-09 | 2009-02-17 | Bluerisc Inc. | Statically speculative compilation and execution |
WO2004021176A2 (de) * | 2002-08-07 | 2004-03-11 | Pact Xpp Technologies Ag | Verfahren und vorrichtung zur datenverarbeitung |
US7657861B2 (en) * | 2002-08-07 | 2010-02-02 | Pact Xpp Technologies Ag | Method and device for processing data |
US20110238948A1 (en) * | 2002-08-07 | 2011-09-29 | Martin Vorbach | Method and device for coupling a data processing unit and a data processing array |
AU2003289844A1 (en) | 2002-09-06 | 2004-05-13 | Pact Xpp Technologies Ag | Reconfigurable sequencer structure |
GB2393277B (en) * | 2002-09-17 | 2006-01-18 | Micron Europe Ltd | Method for manipulating data in a group of processing elements to perform a reflection of the data |
GB2395299B (en) * | 2002-09-17 | 2006-06-21 | Micron Technology Inc | Control of processing elements in parallel processors |
GB2397668B (en) * | 2003-01-27 | 2005-12-07 | Picochip Designs Ltd | Processor array |
DE112004000026D2 (de) * | 2003-04-04 | 2006-06-14 | Pact Xpp Technologies Ag | Verfahren und Vorrichtung für die Datenverarbeitung |
US7437726B2 (en) * | 2003-04-23 | 2008-10-14 | Micron Technology, Inc. | Method for rounding values for a plurality of parallel processing elements |
US7676648B2 (en) | 2003-04-23 | 2010-03-09 | Micron Technology, Inc. | Method for manipulating data in a group of processing elements to perform a reflection of the data |
US7448038B2 (en) * | 2003-04-23 | 2008-11-04 | Micron Technology, Inc. | Method for using filtering to load balance a loop of parallel processing elements |
US7437729B2 (en) * | 2003-04-23 | 2008-10-14 | Micron Technology, Inc. | Method for load balancing a loop of parallel processing elements |
US7581080B2 (en) | 2003-04-23 | 2009-08-25 | Micron Technology, Inc. | Method for manipulating data in a group of processing elements according to locally maintained counts |
US7430742B2 (en) * | 2003-04-23 | 2008-09-30 | Micron Technology, Inc. | Method for load balancing a line of parallel processing elements |
US7472392B2 (en) * | 2003-04-23 | 2008-12-30 | Micron Technology, Inc. | Method for load balancing an n-dimensional array of parallel processing elements |
US7596678B2 (en) | 2003-04-23 | 2009-09-29 | Micron Technology, Inc. | Method of shifting data along diagonals in a group of processing elements to transpose the data |
US7913062B2 (en) | 2003-04-23 | 2011-03-22 | Micron Technology, Inc. | Method of rotating data in a plurality of processing elements |
US20040252547A1 (en) * | 2003-06-06 | 2004-12-16 | Chengpu Wang | Concurrent Processing Memory |
JP4423953B2 (ja) * | 2003-07-09 | 2010-03-03 | 株式会社日立製作所 | 半導体集積回路 |
EP1676208A2 (en) * | 2003-08-28 | 2006-07-05 | PACT XPP Technologies AG | Data processing device and method |
US20050114850A1 (en) | 2003-10-29 | 2005-05-26 | Saurabh Chheda | Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control |
US7996671B2 (en) * | 2003-11-17 | 2011-08-09 | Bluerisc Inc. | Security of program executables and microprocessors based on compiler-architecture interaction |
US8607209B2 (en) | 2004-02-04 | 2013-12-10 | Bluerisc Inc. | Energy-focused compiler-assisted branch prediction |
US20100235608A1 (en) * | 2004-03-25 | 2010-09-16 | Aiseek Ltd. | Method and apparatus for game physics concurrent computations |
US20050226337A1 (en) * | 2004-03-31 | 2005-10-13 | Mikhail Dorojevets | 2D block processing architecture |
JP4477959B2 (ja) * | 2004-07-26 | 2010-06-09 | 独立行政法人理化学研究所 | ブロードキャスト型並列処理のための演算処理装置 |
JP2006099232A (ja) * | 2004-09-28 | 2006-04-13 | Renesas Technology Corp | 半導体信号処理装置 |
US7555630B2 (en) * | 2004-12-21 | 2009-06-30 | Intel Corporation | Method and apparatus to provide efficient communication between multi-threaded processing elements in a processor unit |
US7725691B2 (en) * | 2005-01-28 | 2010-05-25 | Analog Devices, Inc. | Method and apparatus for accelerating processing of a non-sequential instruction stream on a processor with multiple compute units |
EP1849095B1 (en) * | 2005-02-07 | 2013-01-02 | Richter, Thomas | Low latency massive parallel data processing device |
CN101258480A (zh) * | 2005-09-05 | 2008-09-03 | 皇家飞利浦电子股份有限公司 | 具有分离串行模块的处理器阵列 |
US7516301B1 (en) * | 2005-12-16 | 2009-04-07 | Nvidia Corporation | Multiprocessor computing systems with heterogeneous processors |
US7451293B2 (en) * | 2005-10-21 | 2008-11-11 | Brightscale Inc. | Array of Boolean logic controlled processing elements with concurrent I/O processing and instruction sequencing |
CN101371264A (zh) * | 2006-01-10 | 2009-02-18 | 光明测量公司 | 用于在并行处理***中处理多媒体数据的子块的方法和装置 |
WO2007082730A1 (de) * | 2006-01-18 | 2007-07-26 | Pact Xpp Technologies Ag | Hardwaredefinitionsverfahren |
US20070294181A1 (en) * | 2006-05-22 | 2007-12-20 | Saurabh Chheda | Flexible digital rights management with secure snippets |
US20080059763A1 (en) * | 2006-09-01 | 2008-03-06 | Lazar Bivolarski | System and method for fine-grain instruction parallelism for increased efficiency of processing compressed multimedia data |
WO2008027567A2 (en) * | 2006-09-01 | 2008-03-06 | Brightscale, Inc. | Integral parallel machine |
US7441099B2 (en) * | 2006-10-03 | 2008-10-21 | Hong Kong Applied Science and Technology Research Institute Company Limited | Configurable SIMD processor instruction specifying index to LUT storing information for different operation and memory location for each processing unit |
US20080126766A1 (en) | 2006-11-03 | 2008-05-29 | Saurabh Chheda | Securing microprocessors against information leakage and physical tampering |
US20080154379A1 (en) * | 2006-12-22 | 2008-06-26 | Musculoskeletal Transplant Foundation | Interbody fusion hybrid graft |
US7941641B1 (en) * | 2007-10-01 | 2011-05-10 | Yong-Kyu Jung | Retargetable instruction decoder for a computer processor |
GB2454865B (en) * | 2007-11-05 | 2012-06-13 | Picochip Designs Ltd | Power control |
EP2254057B1 (en) * | 2008-03-04 | 2013-05-15 | NEC Corporation | Simd processor array system and data transfer method thereof |
US8261047B2 (en) * | 2008-03-17 | 2012-09-04 | Freescale Semiconductor, Inc. | Qualification of conditional debug instructions based on address |
US20090240928A1 (en) * | 2008-03-18 | 2009-09-24 | Freescale Semiconductor, Inc. | Change in instruction behavior within code block based on program action external thereto |
US20110202132A1 (en) * | 2008-09-29 | 2011-08-18 | Nxp B.V. | Visual prosthesis implant |
US20100146241A1 (en) * | 2008-12-09 | 2010-06-10 | Novafora, Inc. | Modified-SIMD Data Processing Architecture |
GB2466661B (en) * | 2009-01-05 | 2014-11-26 | Intel Corp | Rake receiver |
GB2470037B (en) | 2009-05-07 | 2013-07-10 | Picochip Designs Ltd | Methods and devices for reducing interference in an uplink |
GB2470891B (en) | 2009-06-05 | 2013-11-27 | Picochip Designs Ltd | A method and device in a communication network |
GB2470771B (en) | 2009-06-05 | 2012-07-18 | Picochip Designs Ltd | A method and device in a communication network |
GB2474071B (en) | 2009-10-05 | 2013-08-07 | Picochip Designs Ltd | Femtocell base station |
GB2482869B (en) | 2010-08-16 | 2013-11-06 | Picochip Designs Ltd | Femtocell access control |
US9552206B2 (en) * | 2010-11-18 | 2017-01-24 | Texas Instruments Incorporated | Integrated circuit with control node circuitry and processing circuitry |
GB2489716B (en) | 2011-04-05 | 2015-06-24 | Intel Corp | Multimode base system |
GB2489919B (en) | 2011-04-05 | 2018-02-14 | Intel Corp | Filter |
GB2491098B (en) | 2011-05-16 | 2015-05-20 | Intel Corp | Accessing a base station |
JP2011192305A (ja) * | 2011-06-01 | 2011-09-29 | Renesas Electronics Corp | 半導体信号処理装置 |
FR2984556B1 (fr) * | 2011-12-20 | 2014-09-26 | Commissariat Energie Atomique | Systeme et procede de communication entre un circuit d'acquisition et un circuit de traitement de donnees |
US9329834B2 (en) * | 2012-01-10 | 2016-05-03 | Intel Corporation | Intelligent parametric scratchap memory architecture |
US10313641B2 (en) * | 2015-12-04 | 2019-06-04 | Google Llc | Shift register with reduced wiring complexity |
FR3082331B1 (fr) * | 2018-06-08 | 2020-09-18 | Commissariat Energie Atomique | Processeur mimd emule sur architecture simd |
US11921559B2 (en) * | 2021-05-03 | 2024-03-05 | Groq, Inc. | Power grid distribution for tensor streaming processors |
US11940945B2 (en) * | 2021-12-31 | 2024-03-26 | Ceremorphic, Inc. | Reconfigurable SIMD engine |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5144847A (ja) * | 1974-10-16 | 1976-04-16 | Hitachi Ltd | Maikuropuroguramuseigyosochi |
JPS59132070A (ja) * | 1983-01-18 | 1984-07-30 | Mitsubishi Electric Corp | アレイ演算用デ−タ処理装置 |
US4580215A (en) * | 1983-03-08 | 1986-04-01 | Itt Corporation | Associative array with five arithmetic paths |
NZ207326A (en) * | 1983-03-08 | 1988-03-30 | Stc Plc | Associative data processing array |
GB8401805D0 (en) * | 1984-01-24 | 1984-02-29 | Int Computers Ltd | Data processing apparatus |
WO1986007174A1 (en) * | 1985-05-20 | 1986-12-04 | Shekels Howard D | Super-computer system architectures |
GB2177526B (en) * | 1985-06-24 | 1990-02-14 | Pixar | Selective operation of processing elements in a single instruction, multiple data stream (simd)computer system |
GB8517376D0 (en) * | 1985-07-09 | 1985-08-14 | Jesshope C R | Processor array |
GB8521672D0 (en) * | 1985-08-30 | 1985-10-02 | Univ Southampton | Data processing device |
US4720780A (en) * | 1985-09-17 | 1988-01-19 | The Johns Hopkins University | Memory-linked wavefront array processor |
CN1012297B (zh) * | 1985-11-13 | 1991-04-03 | 奥尔凯托N·V公司 | 具有内部单元控制和处理的阵列结构 |
US4783738A (en) * | 1986-03-13 | 1988-11-08 | International Business Machines Corporation | Adaptive instruction processing by array processor having processor identification and data dependent status registers in each processing element |
-
1987
- 1987-10-27 GB GB8725116A patent/GB2211638A/en not_active Withdrawn
-
1988
- 1988-08-19 JP JP63204859A patent/JPH0727516B2/ja not_active Expired - Lifetime
- 1988-08-25 DE DE3854568T patent/DE3854568T2/de not_active Expired - Fee Related
- 1988-08-25 EP EP88307885A patent/EP0314277B1/en not_active Expired - Lifetime
-
1990
- 1990-05-04 US US07/519,332 patent/US4992933A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
DE3854568T2 (de) | 1996-06-05 |
GB2211638A (en) | 1989-07-05 |
EP0314277B1 (en) | 1995-10-11 |
GB8725116D0 (en) | 1987-12-02 |
DE3854568D1 (de) | 1995-11-16 |
EP0314277A2 (en) | 1989-05-03 |
JPH01114982A (ja) | 1989-05-08 |
US4992933A (en) | 1991-02-12 |
EP0314277A3 (en) | 1990-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH0727516B2 (ja) | Simdアレイ・プロセツサ | |
US5175862A (en) | Method and apparatus for a special purpose arithmetic boolean unit | |
US5956518A (en) | Intermediate-grain reconfigurable processing device | |
EP0726532B1 (en) | Array processor communication architecture with broadcast instructions | |
US6128720A (en) | Distributed processing array with component processors performing customized interpretation of instructions | |
US5421019A (en) | Parallel data processor | |
US5682491A (en) | Selective processing and routing of results among processors controlled by decoding instructions using mask value derived from instruction tag and processor identifier | |
US7340562B2 (en) | Cache for instruction set architecture | |
JP4417567B2 (ja) | デュアルモードプロセッサ | |
US5968167A (en) | Multi-threaded data processing management system | |
US6816961B2 (en) | Processing architecture having field swapping capability | |
US6446190B1 (en) | Register file indexing methods and apparatus for providing indirect control of register addressing in a VLIW processor | |
US5148547A (en) | Method and apparatus for interfacing bit-serial parallel processors to a coprocessor | |
EP0539595A1 (en) | Data processor and data processing method | |
KR19990077230A (ko) | 이미지-처리 프로세서 | |
JPH07152722A (ja) | Simdマルチプロセッサ用動的再構成可能スイッチ装置 | |
EP0911725B1 (en) | Data processing system with a plurality of processors using a shared register bank | |
US8949576B2 (en) | Arithmetic node including general digital signal processing functions for an adaptive computing machine | |
US5481736A (en) | Computer processing element having first and second functional units accessing shared memory output port on prioritized basis | |
US7616628B2 (en) | Switched processor datapath | |
USRE41012E1 (en) | Register file indexing methods and apparatus for providing indirect control of register addressing in a VLIW processor | |
JPH03211688A (ja) | プロセッサアレイ | |
GB2393288A (en) | method of generating an interleave pattern for work loads in an array of processing elements. |