JP2766404B2 - データ駆動形マイクロプロセッサ - Google Patents
データ駆動形マイクロプロセッサInfo
- Publication number
- JP2766404B2 JP2766404B2 JP12233891A JP12233891A JP2766404B2 JP 2766404 B2 JP2766404 B2 JP 2766404B2 JP 12233891 A JP12233891 A JP 12233891A JP 12233891 A JP12233891 A JP 12233891A JP 2766404 B2 JP2766404 B2 JP 2766404B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- memory
- packet
- address
- unit
- 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 - Fee Related
Links
Landscapes
- Advance Control (AREA)
- Complex Calculations (AREA)
Description
て並列に命令実行を行う、いわゆる「データ駆動形計算
機」のハードウェア構成に関するものである。より詳細
には、ベクトル演算処理機能を兼ね備えた、データ駆動
形マイクロプロセッサに関する発明である。
形計算機の一例が、「高並列データ駆動形計算機EDD
ENの概要」として、平成元年3月に発行された情報処
理学会第38回(昭和64年前期)全国大会予稿集に開
示されている。
点の一つとして、配列などの定型的な構造体に対して単
純な処理を繰り返す定型的演算での性能低下を指摘して
おり、命令実行部にベクトル演算機構を導入し、外部メ
モリに格納された配列データに対して局所的にベクトル
演算命令を実行することによって、この問題の解決が図
り得ることを示している。更に、通常のスカラーデータ
とベクトル演算制御機構が、演算器を時分割で共有する
方式により、演算パイプラインの充足率の向上が図り得
ることも示されている。本公知文献に開示されているデ
ータ駆動形計算機は、図64に示すような構成をとって
いる。以下、図について従来例の動作の説明を行う。
形計算機は、ネットワーク制御部NC、入力制御部I
C、キュー部Q、プログラム記憶部PS、出力制御部O
C、発火制御・カラー管理部FCCM、命令実行部EX
E、およびベクトル演算制御部VCから構成されてい
る。また、図65は、公知例のデータ駆動形計算機の具
体的な動作を説明するためのプログラム(データフロー
グラフ)の簡単な例であり、A+Bの演算結果をCとし
て出力する処理を示している。データフローグラフは、
ノード番号が割り付けられた複数のノードと、これらの
間でのデータ依存関係を示すアークから構成されてい
る。図中、5角形のノードは、外部との入出力を示す特
殊なノードであり、演算は行わない。一方、丸いノード
では、ノードの中に示されている演算が入力されたデー
タに対して施される。
入力されたパケット(タグ情報を有するデータ)Aは、
ホスト計算機によって行き先ノード番号として#0が与
えられている。また、もう一つの入力パケットBは行き
先ノード番号#1をもっている。これらのパケットは、
入力制御部ICを経由してキュー部Qに一時記憶された
後、プログラム記憶部PSにおいて、それぞれのもって
いる行き先ノード番号を入力アドレスとしてプログラム
メモリの読み出しを行い、次の行き先ノード番号、すな
わち#2と、#2のノードに対応する命令コード「+」
を読み出す。この後、これらのパケットは出力制御部O
Cを通過して発火制御・カラー管理部FCCMに到る。
は、これらのパケットの行き先ノード番号が何れも#2
であるため、「A」、「B」の両方のパケットが発火制
御・カラー管理部FCCMに到着した時点で、発火処理
が行われ、2つのオペランドをもつ実行パケットが生成
され、命令実行部EXEに送られる。
されている命令コード、すなわち「+」に従ってA+B
の演算を行い、結果データCを含む結果パケットCを出
力する。結果パケットは、再び入力制御部ICとキュー
Qを経由してプログラム記憶部PSに到る。
もつ行き先ノード番号を入力アドレスとしてプログラム
メモリに読み出され、次の行き先ノード番号#3と、命
令コード「OUT」が読み出される。命令コード「OU
T」をもつこのパケットは、出力制御部OCで外部に分
岐処理され、プロセッサ外に出力するためにネットワー
ク制御部NCに送られる。
示したデータフローグラフに相当する演算が施され、プ
ログラムの実行が終了する。図5は、最も簡単な一例を
示したが、多数の命令ノードとこれらの命令ノード間の
データ依存関係を示すアークから構成される更に複雑な
データフローグラフの実行も全く同様にして行うことが
できる。
存在するノードの処理は逐次的に実行されるが、データ
依存関係の存在しないノードの処理は処理資源の許す限
りにおいて並列に実行できる。ここで、データ依存関係
とは、二つのノード間の接続関係において、一方のノー
ドの処理が完了することによってはじめて他方の処理を
行うために必要な入力データが供給されるような接続関
係にあることを指している。
るが、命令実行部EXEをスカラーデータ処理と時分割
でベクトルデータ処理のために用いる方法が本公知文献
に開示されている。ベクトル演算制御部VCは、ベクト
ル演算関連命令、および通常のメモリアクセス命令の実
行制御を行っている。ベクトル演算制御部VCと、入力
制御部IC及び出力制御部OCの間には構造体(ベクト
ル)通信用のバイパス線を設けている。外部データメモ
リは、構造体等を格納するデータメモリである。
開示されている従来のベクトル演算機構を備えたデータ
駆動形計算機には、二つの問題点がある。
たないため、ベクトル演算実行時のスループットが低い
ことである。例えば、ベクトルXとベクトルYの加算を
行い、結果をベクトルZとしてデータメモリに格納する
場合、ベクトルXの要素xiとベクトルYの要素yiを
読み出し、演算結果をベクトルZの要素ziとしてデー
タメモリに書き込むという処理をベクトルの要素の数だ
け繰り返す必要がある。ところが、公知文献に開示され
ている1チップデータ駆動形計算機は、内部にデータメ
モリをもたず、チップ内には外部データメモリに対する
アクセス制御機能しかもたないため、1要素のベクトル
演算を行うために3回のメモリアクセスを逐次的に行う
必要があり、データメモリのアクセスが処理のボトルネ
ックとなって、ベクトル演算のみでは命令実行部EXE
の高い性能を活かすことができない構成になっている。
EXE部の処理が、データメモリのアクセスと、命令の
実行の二者択一になっていることである。このため、デ
ータメモリの中に記憶されているデータを演算に用いた
ときに、メモリからのデータ読み出しのために巡回型パ
イプライン処理の1周回を要し、さらに演算実行のため
に一周回を要することとなり、効率が悪い。従って、本
発明の目的は、ベクトル演算における被演算データの読
出し、演算結果データの書き込み、メモリアクセス処理
を短いアクセス時間内に、しかも同時並列的に行うよう
にして、高いベクトル演算性能を達成する。また、効率
のよいログラム実行ができるようにする。
動形マイクロプロセッサは、演算部FALUとプログラ
ムメモリ部PMを並列配置し、上記演算部FALU及び
上記プログラムメモリ部PMで更新された情報を入出力
インターフェース部IFへ送る構成とするとともに、デ
ータを同時に並行かつ連続的に読み書き可能なデータメ
モリ部DMを上記演算部FALUよりも手前に配置し、
マッチングメモリ部MMから被演算データを連続的に上
記データメモリ部DMへ読み出し、予め設定されている
命令コードとともに上記演算部FALUへ送り込みベク
トル演算を実行することを特徴とするものである。
形マイクロプロセッサ内部にマルチポートのデータメモ
リ部DMを備えたことにより、ベクトル演算のための2
つの被演算データの読み出し、演算結果データの書き込
み、通常のメモリアクセスなどの処理が、短いアクセス
時間内に、しかも同時並行に行われ、きわめて高いベク
トル演算性能を達成することができる。
中に取り込み、かつ演算部の前段に配置したことによ
り、データの読み出しと演算実行が巡回パイプラインの
1周回で完了し、効率のよいプログラム実行が可能とな
る。
説明する。図1は、本発明の一実施例を示すデータ駆動
形マイクロプロセッサのブロック図である。図3のプロ
グラム(データフローグラフ)を実行する場合につい
て、動作を説明する。外部から入出力インターフェース
部IFを経由して入力されたパケットは、図4に示され
ているように、行き先プロセッサ番号(PE#)
「1」、制御情報(SEL−CODE)、命令コード
(OPC)「+」、行き先ノード番号#1、左データ
「I」を含んでいる。制御情報SEL−CODEのう
ち、PAIRはマッチングメモリで発火処理をするか否
か、IMはデータメモリからオペランド(被演算デー
タ)の読み出しを行うか否か、I/O(Oは反転)は演
算終了後プロセッサ内で継続処理するか否か、VECT
はベクトル演算対象データであるか否か、L/R(Rは
反転)は発火処理以前に左データ位置に格納されている
データが2項演算の左データとなるデータであるか否か
を示している。
出力インターフェース部IFを経由してマッチングメモ
リ部MMに到るが、図4(a)に示すように、SEL−
CODEのIMフラグが1であるため、2項演算の相手
のデータはデータメモリ部DMから読み出すものと解釈
されて何も処理されずにデータメモリ部DMに送られ
る。データメモリ部DMにおいては、IMフラグが1で
あるため、パケットの右データ位置に格納されている値
「n」に相当するアドレスに記憶されているデータが読
み出され「n」の代わりに右データ位置に格納される。
とプログラムメモリ部PMに同時にパケットが送出され
る。FALU部では、命令コード「+」に従って2項演
算が実行され、結果データがパケットの左データ位置に
格納される。
ットの行き先ノード番号「#1」に従ってプログラムメ
モリの読み出しが行われ、次の行き先ノード番号の「#
2」、次の命令コード「×」、次の制御情報などが読み
出されてパケット中の相当部分が更新される。
部PMで更新されたこれらの情報は、コピー部KCOP
Yで併合され再び入出力インターフェース部IFに送ら
れる。コピー部KCOPYでは、1つのノードの演算結
果に対して複数の行き先ノードが存在するような場合
に、演算結果データのコピーが行われ、プログラムメモ
リ部PMで読み出された複数のタグ情報に付与されて、
同一の結果データをもつ複数のパケットが出力される。
ェース部IFを経由して再びマッチングメモリ部MMに
到達したとき、すでにデータ「J」をもつパケット(図
4(b)参照)がマッチングメモリ部MMに到着して格
納されていれば、これら2つのパケットの行き先ノード
番号が何れも「#2」であることから、発火処理が行わ
れ、2項演算のためのパケットが生成される。一方、相
手となるパケットが未到着であれば、マッチングメモリ
部MMにおいて相手パケットの待ち合わせを行う。マッ
チングメモリ部MMで生成された前記パケットは、IM
フラグが0であり、命令コードがDM命令ではないこと
から、データメモリ部DMを通過し、演算部FALU
と、プログラムメモリ部PMに送られる。演算部FAL
Uでは、乗算が実行される。また、プログラムメモリ部
PMでは、次のタグ情報が読み出され、図4(c)に示
すようなパケットに付与される。これらの情報は、コピ
ー部KCOPYで併合された後IF部に送られるが、図
4(c)に示されているようにSEL−CODEのI/
O(Oは反転)フラグが0であることから外部に出力さ
れる。
れたプログラム(データフローグラフ)は、所定の処理
を完了し、結果をパケットの形で出力する。
n番地に格納されているデータとの演算が行われたが、
データメモリ部DMが、演算部FALUの手前に配置さ
れているので、メモリアクセスのために巡回パイプライ
ンを余分に周回することなく、効率のよいプログラム実
行が実現されている。
る。図2は、本発明に係るデータ駆動形マイクロプロセ
ッサのデータメモリ部DMの構成を示す一実施例であ
る。
ン構成となっている。最初の4段は、アドレス発生用に
用いられている。5つのメモリアクセスを同時に行うた
めに、5つの独立に動作するアドレス発生器AG1〜A
G5が備えられている。5つのメモリアクセスは、ベク
トル演算用の2つのオペランドデータ読み出し、1つの
結果データ書き込み、スカラーデータ用のデータの読み
出しまたは書き込み、および、外部データメモリとの間
でのDMAデータ転送用のデータの読み出しまたは書き
込みを含んでいる。5段目は、メモリアドレスのマトリ
クススイッチを備え、5つのアドレス発生器と、8つの
メモリバンクを任意に組み合わせて構成することができ
る。6段目は、メモリアクセスのための段であり、8つ
のメモリバンクBK1〜BK8を有し、このメモリバン
クBK1〜BK8中の5つのメモリバンクを同時にアク
セスすることができる。このとき、例えば、バンクBK
3とバンクBK4を結合して一つのメモリバンクとする
ことも、マトリクススイッチの開閉の制御と、各メモリ
バンクに設けられたアドレス判定機能によって可能とな
っている。7段目は、データのマトリクススイッチMS
より成り、8つのメモリバンクと、入出力バスが任意に
組み合わされ、構成される。パイプラインの8段目で
は、ベクトル処理パケットと、スカラー処理パケットの
調停が行われ、何れかが選択されて出力される。
機能設定用の命令コードをもったパケットを送り込み、
制御用レジスタファイルCRFの書き込みを行うことに
よって、プログラマブルに設定することができる。設定
できる機能は、次の通りである。 各々のアドレス発生器の機能、すなわち連続アドレス
発生回数、アドレス増分、法(モジュロ)演算、アドレ
スビット反転、アドレス最下位ビットマスク、開始アド
レス設定など。 アドレス発生器とメモリバンクの組み合わせ。 メモリバンクと入出力データバスの組み合わせ。 ベクトル演算パケットに付与する命令コードおよび行
き先PE#。
トルデータ間の演算「X×Y+Z→W」を実行する場合
について説明する。まず、外部データメモリからベクト
ルXとYを、それぞれ、バンクBK3とバンクBK4に
DMA転送する。このために、図2中のアドレス発生器
AG5をバンクBK3と結合し、128ワード分のアド
レスを連続的に生成し、外部データメモリとのDMA転
送を行ってベクトルXをバンクBK3に読み込み、また
同様にしてベクトルYをバンクBK4に読み込む。
アドレス発生器AG1及びAG2を用いて、同時にオペ
ランドデータを読み出しつつ、乗算の命令コードを付加
して演算パケットを連続的に生成し、演算部FALUに
送り込む。この時、この演算パケットは同時にプログラ
ムメモリ部PMにも送られるが、パケット中のVECT
フラグが1であるため、プログラムメモリ部PMでは処
理されずそのまま出力され、演算部FALUからの出力
と併合される。
クトルZの外部データメモリからの読み込みがDMA転
送を用いて行われ、ベクトルZはアドレス発生器AG5
によって生成されるアドレスに従い、バンクBK6に格
納される。
結果は、VECTフラグとして1をもって入出力インタ
ーフェース部IF、マッチングメモリ部MMを通過し、
データメモリ部DMに到ると、VECTフラグが1であ
るので、アドレス発生器AG4によって書き込みアドレ
スが連続的に生成され、予めベクトル演算結果の書き込
み用に割り当てられていたバンクBK5に連続的に書き
込まれていく。
結果が格納されているバンクBK5と、ベクトルZが読
み込まれているバンクBK6との間で、同様にしてベク
トル加算が行われ、加算結果はバンクBK7に格納され
る。
ら、外部データメモリにDMA転送される。以上のよう
な処理により、ベクトル演算が高速に実行される。外部
データメモリと内部メモリバンクの間でのデータの授受
は、開始アドレスを双方設定した上で、アドレス情報無
しでデータをブロック転送するDMA転送を用いたこと
により高速化されており、演算のレートと、データの供
給レートが均衡し、効率のよいベクトル演算が実現して
いる。さらに、ベクトル演算実行中であっても、アドレ
ス発生器AG3やスカラーデータ用の入出力データバス
を独立にもっているため、通常のメモリアクセスも同時
に実行することができる。
IFの詳細を説明する。図5はこの入出力インターフェ
ース部IFのブロック図である。入出力インターフェー
ス部IFは、3語1語変換回路、合流回路、分岐回路、
1語3語変換回路、キューバッファ回路、および初期化
回路(図示せず)から構成される。この入出力インター
フェース部IFにおける3語1語変換回路は図6に、初
期化回路は図7に、合流回路は図8に、分岐回路は図9
に、1語3語変換回路は図10にそれぞれ一例として示
す。
ース部IFは次のような機能を持っている。 (1)初期化 外部から入力される初期化パケットを受け取り、プロセ
ッサエレメント番号(PE#)レジスタ、ブロック合流
比率(IFブロック、DMブロック)レジスタの初期化
を行う。初期化のためのオペコードをもったパケット
は、レジスタの初期化に用いれらた後、IFブロック内
で消去される。 (2)3ワード→1ワード変換 42ビット×3ワード形式で入力される外部パケット
を、1ワードに展開する。 (3)合流 外部から入力されたパケットを、非同期調停回路を用い
て、内部巡回パイプラインに合流させる。合流のための
経路切り換えオーバーヘッドを低減するために、複数の
パケット毎に経路切り換えを行う「ブロック合流」を採
用している。 (4)分岐 巡回パイプライン上のパケットの中で、PE外に出力す
べきものを分岐させて外部に出力する。 (5)1ワード→3ワード変換 1ワード形式の内部パケットを、42ビット×3ワード
の外部パケット形式に変換して出力する。
低減するため、プロセッサ外部ではパケットは3語構成
で通信され、外部から入力したパケットはプロセッサ内
部で3語から1語への語数変換を行う必要がある。12
0ビット幅の1語パケットに変換された入力パケット
は、非同期合流回路の合流側に入力される。合流回路内
部では、内部巡回パイプライン上のパケットとの非同期
調停がなされ、1本の経路に合流してマッチングメモリ
部MMに出力される。出力されたパケットは、[MM]
→[DM]→[PM、FALU]→[KCOPY]を経
て再び入出力インターフェース部IFに入力され、分岐
回路に到る。分岐回路では、パケットのセレクションコ
ードと行き先PE#から、分岐するか否かが決定され
る。
する。入出力ピン数の制約があるため、入力パケットは
42ビット×3語構成で入力される。これを120ビッ
ト1語に変換するための回路が設けられている。3語1
語変換回路においては、入力された42ビットのデータ
の上位2ビットをデコードして先頭/中間/末尾語の何
れであるかを判定し、相当するデータラッチに記憶させ
るべくC素子に対するSend信号を制御する。
初期化回路においては、3語1語変換回路の出力パケッ
トに含まれている命令コードをデコードし、初期化パケ
ットであると判断された場合には、初期化レジスタに対
するラッチ信号を発生してパケット中の左データ領域の
下位12ビットに格納されている初期化情報を初期化レ
ジスタに記憶させ、かつアクノレッジ信号を3語1語変
換回路に返す。一方、初期化のためのパケットは初期化
回路で消すために、初期化パケットであった場合には次
段へのSend信号の伝搬を禁止するためのANDゲー
トが設けられいてる。
入力されるパケットを1本の出力経路にまとめるため
に、非同期の合流調停回路が設けられている。詳細な回
路は、例えば本件出願人が既に出願している明細書(特
願昭60−136610号、特開昭61−294949
号、昭和60年6月21日出願、「データ伝送装置」)
の実施例に開示されている。
力パケットのセレクションコード、命令コードなどをデ
コードして分岐するか否かが決定され、本線側、または
分岐側にパケットが送られる。分岐回路における分岐条
件を以下に示す。
に行き先PEが自PEであるために、CONDXとCO
NDYは成立しているのに、Aが成立しないために分岐
しなかったパケットについては、入出力インターフェー
ス部IFでそのパケットのPEおよびPMTHフラグを
クリアして通常のローカル・メモリ・アクセスパケット
に変更する機能を入出力インターフェース部IFに与え
ることとする。この機能を実現するために、分岐回路か
ら合流回路に至る本線経路上において、セレクションコ
ードに関して次の処理が実行される。 PE(NEW)=PE*CONDX*CONDY PMTH(NEW)=PMTH*CONDX*CONDY
ース部の動作について説明する。PEフラグの値が
“1”,すなわちパケットをPE外へ出力する場合で
も、行き先PE#が自PEである場合には、出力しな
い。データメモリ部DMは、入力のセレクション・コー
ドがPE=“0”かつPM_Thru=“1”のとき、
右データをアドレスとしてメモリを読み出して結果を右
データフィールドに格納する。かつ、PM_Thru=
“0”に変えて出力する。また、データメモリ部DMを
アクセスする命令を実行した時には、常に左データの上
位8ビットを右データの上記8ビットに移動させる(P
E間を渡るメモリアクセスパケットの戻り先PE#を保
存するため)。さらに、PE#=“1”,PM_Thr
u=“0”のときデータメモリ部DMはNOP(空命
令)と見なす(PE間を渡るメモリアクセスをした後
に、もとのPEに戻ったときにデータメモリ部DMをス
ルーさせるため)。
トと、読み出し専用ポートをもつ、2ポートメモリで実
現されている。
セッサシステムにおける分散型共有データメモリを効率
的にアクセスするための機構について説明する。図11
は、上記分散型共有データメモリアクセス機構を示した
概念図である。 図中の“RAPID”は本データ駆動形
マイクロプロセッサを示す。PE#0側は、データメモ
リの読み出し要求パケットのアドレス上位(PE#0に
対応)のチェックを行い、前記パケットの戻り先PE#
(“0”)を付加してネットワークへ出力を行う。次に
PE#7側は、データメモリの読み出し、行き先PE#
の付け換え、要求元PEへの送出を行う、次にPE#0
側は読み出し結果の受け取りを行う。バス結合型の共有
メモリ方式のマルチプロセッサの場合、メモリアクセス
のボトルネックによって全体性能が律則される。本マイ
クロプロセッサは、分散型共有メモリ方式を採用してお
り、プロセッサ間のメッセージ通信を用いて、同時並列
的に分散配置されたメモリのアクセスを行う。このた
め、上記のようなボトルネックはなく、性能が飛躍的に
向上する。なお、本動作の詳細は後述する。
の構成を示すブロック図である。このマッチングメモリ
部MMの機能について説明する。 (1)オペランド対の生成 マッチングメモリ部MMでは、二項演算に必要な2つの
オペランドの対を生成して出力する。この機能を、基本
的にはハッシュメモリ上でのオペランド待ち合わせによ
り実現している。つまり、入力パケットのタグ情報から
計算したハッシュ値をメモリ上の待ち合わせアドレスと
して先に到着したパケットのオペランドを格納してお
き、同一のタグ情報を有するパケットが到着したときに
演算可能な実行パケットを生成する。マッチングメモリ
部MMでは、この待ち合わせメモリとしてハッシュメモ
リと連想メモリを組み合わせて用いている。すなわち、
通常はハッシュメモリを使用し、連想メモリはハッシュ
衝突時に溢れたパケットの受け皿として用いている。ハ
ッシュアドレスの生成には、入力パケットのタグ情報の
行き先ノード番号の下位9ビットとカラー/世代9ビッ
トが用いられる。これら2つの情報をビット毎にEXN
ORをとることで、9ビットのハッシュアドレスが計算
される。この方法によりハッシュ衝突の頻度を下げるこ
とが可能となる。この効果によりハッシュ衝突時の受け
皿である連想メモリの容量を小容量化することができ
る。尚、万一この連想メモリが溢れた場合には、入力パ
ケットに対して、ハッシュ衝突フラグを立て、他の機能
ブロックで何も処理されないスルーパケットとして出力
され、巡回パイプラインを1周した後に再びMMに戻る
ようにしている。
ジに分割されている。各ステージにおける処理は次のよ
うになっている。 第一段:ハッシュアドレスの生成。 第二段:アドレス比較によるハッシュメモリの事前競合
検知。 第三段:ハッシュアドレスのプリデコード。 ハッシュメモリの事前競合回避。 第四段:ハッシュメモリと連想メモリの読み出し。 第五段:ハッシュメモリ読み出し結果と入力パケット
のタグ情報の比較。 右オペランドの選択(入力パケット/ハッシュメモリ
/連想メモリ)。 第六段の処理の決定(ハッシュメモリへ書き込み/ハ
ッシュメモリと対生成/連想メモリへ書き込み/連想メ
モリと対生成)。 第六段:第五段での決定結果によるメモリ書き込みの
実行(対生成の場合にもプログラムメモリ部PBへの
“0”書き込みが行われる)。 左右オペランドの交換。
れる毎に、ハッシュメモリと連想メモリのそれぞれに対
して、読み出しと書き込みの合計2回のメモリアクセス
を行う。入力パケットが連続してやってくる場合にもパ
ケットの転送レートを低下させないために、メモリアク
セスのサイクルタイムを最小にした上で、N番目の入力
パケットの書き込みを実行する前にN+1番目の入力パ
ケットの読み出しを実行させている。これにより、もっ
とも効率よくメモリ読み出しとメモリ書き込みを連続し
て実行させることが可能となる。メモリアクセスのサイ
クルタイムを10nsとした場合のタイムチャートを図
14に示す。非同期に入力されるパケットに対して、上
記の順序で処理を実行させるために、メモリ読み出しと
書き込みが重ならないことを保証する排他制御を行って
いる。 マッチングメモリ部MMでは、各パイプライン段
間のデータ転送を自己同期回路により実現している。こ
の自己同期回路のデータ転送制御信号を操作すること
で、メモリ読み出しステージ、あるいはメモリ書き込み
ステージへのデータ転送を局所的に停止し、メモリアク
セスの排他制御を行っている。つまり、メモリ読み出し
中には、メモリ書き込みステージへのデータ転送を停止
させ、メモリ書き込み中には、メモリ読み出しステージ
へのデータ転送を停止するように制御される。
くる場合には、N番目の入力パケットの書き込みが行わ
れる前に、N+1番目の入力パケットの読み出しが行わ
れる。この場合、N番目の入力パケットとN+1番目の
入力パケットがハッシュメモリに対して、同じアドレス
をアクセスすると誤動作を起こす。これを防ぐためにパ
イプラインステージの第二段と第三段においてハッシュ
メモリの競合を事前に回避している。これは、まず第二
段目で先行する入力パケットがアクセスしたハッシュア
ドレスと次にアクセスしようとするハッシュアドレスと
を比較する。この比較結果がもし一致していれば、先行
する入力パケットのメモリ書き込みが終了するまで、第
三段目において待たされる。以上の処理によりハッシュ
メモリの事前競合回避が実現されている。この処理はオ
ペランド対生成の必要な二項演算命令実行パケットに対
してのみ必要な処理であり(5)で述べるマッチングメ
モリ部MMでの処理とは関係のないパケットに対しては
実行されない。
スルー マッチングメモリ部MMでは、(3)で述べたように二
項演算命令実行のためのパケットが入力されるとオペラ
ンド対生成のために、必ずメモリを2回アクセスする。
しかし、単項演算命令実行のためのパケットやマッチン
グメモリ部MMを強制的にスルーさせる必要のある特殊
パケットが入力されると、メモリアクセスや入力パケッ
トへの処理は全く行わずに出力される。マッチングメモ
リ部MMを強制的にスルーする特殊パケットとは、パケ
ットのタグ情報のセレクションコードの内、sel
(0)、sel(9)、sel(10)の何れかが
“1”であるものである。但し例外として、特殊パケッ
ト以外の単項演算命令実行パケットであっても右オペラ
ンドフラグの立つパケットに関しては、左右のオペラン
ド位置を入れ換える。
たようにハッシュメモリ、連想メモリ、データラッチ、
データ転送制御回路“C”、およびその他の論理回路で
構成されている。入力データは、左の入力部よりパケッ
ト形式で入力される。この入力パケットのフォーマット
を図15に示す。図13において、“C”から長方形の
ブロックへ向かう矢印がラッチ制御信号で、この長方形
のブロックがデータラッチである。ラッチされる内容に
は、アドレス、タグ、データがある。アドレスは、ハッ
シュメモリをアクセスするためのハッシュアドレスで、
入力パケットのカラー/世代と行き先ノード番号より生
成される。タグは、入力パケットのタグ情報が、データ
は、オペランド情報がそれぞれ入力される。尚、データ
の上側の経路には、左オペランドが、下側の経路には右
オペランドがそれぞれ入力される。入力されたデータ
は、左から右へとデータラッチ間をデータ転送制御回路
“C”により順次転送されつつ処理が施されていく。デ
ータラッチとデータラッチに挟まれた部分が各パイプラ
インステージの1段分に相当し、データラッチ間を転送
される間にそのステージでの処理が実行される。
明する。 (1)ハッシュメモリ本体 ハッシュメモリへは、図16に示すような56ビットの
情報が9ビットのアドレスで指定可能な512ワードま
で格納できる。ハッシュメモリのアレイ構成を図17に
示す。アドレス9ビットの内2ビットをYデコードする
ため、物理的には、224ビット×128ワードの構成
となっている。2ビットのYアドレスと7ビットのXア
ドレスの内の4ビットは、プリデコードされる。したが
って、このブロックへ入力されるアドレスはYデコード
結果の4ビットとXアドレスのプリデコード結果16ビ
ットとデコードされていないXアドレス3ビットの正負
6ビットの合計26ビットである。よって図17の1コ
ラムには、未デコードアドレス3ビットをデコードした
8本のワード線が存在する。
Yデコード結果により1組を選択するセレクタでトラン
スファーゲートを用いている。メモリセルには、ロード
トランジスタの代わりに高抵抗ポリシリコンを採用した
4トランジスタ構成の回路を用いている。プレゼンスビ
ット(PB)のメモリセルは直接リセット機構を備えた
もので、システムのリセット時にリセットされる。その
回路図を図18に示す。
9ビットの内2ビットをYデコードしているため、ビッ
トライン4本に対して書き込みドライバ、読み出しラッ
チ、センスアンプ、イコライズ・プリチャージが、それ
ぞれ1つずつ付く構成となっている。イコライズ・プリ
チャージに関しては、反転論理EQLH信号により同期
的にセンスアンプのビット・反転論理ビット線をイコラ
イズ・プリチャージする回路に加えて、メモリセルのビ
ット・反転論理ビット線をイコライズ・プリチャージす
る回路が存在する。メモリセルに関する回路のイコライ
ズは反転論理EQLH信号により同期的に行われるが、
プリチャージはチャネル幅Wの狭いNチャネルトランジ
スタにより、常時行われている。尚、このメモリセルの
ビット・反転論理ビット線をイコライズ・プリチャージ
する回路の物理的なレイアウト上の配置は、メモリセル
128列の中央の列に置かれている。W/Rアドレスセ
レクタは、CMOSトランスファーゲートで構成されて
いる。メモリ書き込み/読み出しの切り換えは、HWA
信号によって行われている。
る論理回路を示す。図中のC0〜C3は、データ転送制
御回路を示す。これは、SEND、ACK信号のハンド
シェイクにより自己同期的にラッチーラッチ間のデータ
転送を司るものである。また、図中のDELAYは、遅
延回路を示している。図20に示された信号線の内、S
WEEPは後で述べる事前競合検知機構に関する信号
で、ハッシュメモリの競合を事前に防ぐための例外処理
実行の制御線である。この信号による制御に関しては、
事前競合検知機構のところで述べる。
し、書き込みの制御について説明する。まず読み出しで
あるが、データ転送制御回路C0からC1へ入力パケッ
トが転送される間に実行される。読み出しに関係する信
号には、EQL、SAE、CBがあり、これらは、図1
9の同名の信号線に入力される。つまり、EQL信号は
ビット線のイコライズ・プリチャージを行い、SAE信
号はセンスアンプをアクティブにし、CB信号は立ち下
がりで読み出しデータをラッチする。データ転送制御回
路C0からC1へパケットが転送されると、まずEQL
信号が“1”から“0”へ変化するとともに、SAE信
号が“0”から“1”へ変化する。これにより、イコラ
イズ・プリチャージが中止され、センスアンプが駆動さ
れることにより読み出しが開始する。次に、パケットが
データ転送制御回路C0に到着した時に“0”から
“1”へ変化した信号CBが、パケットがデータ転送制
御回路C1に到達することで再び“1”から“0”へ変
化する。これにより、CB信号が“1”の期間に読み出
しデータラッチに入力されていたデータが確定し、メモ
リ読み出しの一連の動作が完了する。
路C2からC3へパケットが転送される間に実行され
る。書き込みに関係する信号には、WE、WAEがあ
り、これらは、図19の反転論理HWE、HWAにそれ
ぞれ入力される。但し、反転論理HWEへはWE信号の
反転論理が入力される。WE信号は、書き込みドライバ
ーの駆動、WAE信号は、読み出しアドレスから書き込
みアドレスへの切り換えを行う。データ転送制御回路C
2へパケットが到着すると、後続するパケットがない
(EMP=“1”)場合を除き、後続パケットがデータ
転送制御回路C1へ到達し、メモリ読み出しが完了する
までメモリへの書き込みおよびデータ転送制御回路C3
へのデータ転送は待たされる。もちろん、このような制
御が行われるのは、反転論理WRITE信号が“0”で
あるメモリ書き込みパケットの場合だけであり、マッチ
ングメモリ部MMをスルーするパケットは待たされるこ
とはない。このデータ転送の停止は、RDCOMP信号
により行われる。後続パケットのメモリ読み出しが完了
すると、まずWAE信号が“0”から“1”へ変化す
る。これによりメモリに対して与えられていたアドレス
が、書き込みアドレスに切り変えられる。次に、アドレ
スのデコードが完了し特定のワード線が立ち上がるに要
する遅延Daの後に、WE信号が“0”から“1”へ変
化する。これにより書き込みドライバーが駆動されメモ
リへのデータ書き込みが実行される。その後、遅延Db
の後、WAE、WEの信号とも、“1”から“0”変化
しメモリ書き込みの動作は完了する。WAE信号が
“1”であるメモリ書き込み中はWRCOMP信号は
“0”となり、後続データのデータ転送制御回路C0か
らC1へのデータ転送はなされず、メモリ読み出しは行
われない。
イムチャートに示す。まず第1番目のパケット()が
アドレスAから値0を読み出す。次に第2番目のパケッ
ト()がアドレスBから値1を読み出すまで、第1番
目のパケットの書き込みは待たされる。第2番目のパケ
ットの書き込みが完了すると、第1番目のパケットがア
ドレスAへ、値1を書き込む。第1番目のパケットの書
き込み終了後、第3番目のパケット()はアドレスA
から値1を読み出す。第3番目のパケットの読み出し完
了後、第2番目のパケットがアドレスBへ、値2を書き
込む。以下同様にして、連続して投入されたパケットに
対して、メモリの読み出し/書き込みが排他的に行われ
る。
この処理は、図22に示すように、メモリアクセスを行
うパイプラインより前の3段のパイプラインで実行され
る。つまり、 第一段(Cm3):ハッシュアドレスの生成 第二段(Cm2):ハッシュアドレスの比較 第三段(Cm1):ハッシュアドレスのプリデコード ハッシュアドレスの事前競合回避 である。
これは、入力パケットのタグ情報の内、行き先ノード番
号21ビットの下位9ビットと、カラー/世代9ビット
より生成される。つまり、行き先ノード番号の下位9ビ
ットと、カラー/世代9ビットのビット位置を上位下位
反転させたものに対して、ビット毎にEXNORをとる
ことで9ビットのハッシュアドレスを生成している。こ
うすることで、単一世代プログラム実行時の行き先ノー
ド番号のハッシュアドレス空間を上限の9ビットまで広
げられる。しかも、カラー/世代のビット位置を上位下
位反転させたことで、世代が連続して入力された場合で
も、生成されるハッシュアドレスはより分散されること
になり、近接した世代間でおこるハッシュ衝突の低減が
期待できる。このハッシュアドレス生成法により、ハッ
シュ衝突の抑制が期待できることから、ハッシュ衝突時
の受け皿である連想メモリの容量を32ワードと小容量
化することができる。
これはデータ転送制御回路Cm2でラッチされた9ビッ
トのハッシュアドレスとデータ転送制御回路Cm1でラ
ッチされている先行パケットの9ビットのハッシュアド
レスの比較を行う。データ転送制御回路Cm2ではトラ
ンスペアレントタイプのデータラッチ回路でラッチされ
ているのに対して、データ転送制御回路Cm1では、エ
ッジトリガタイプのデータラッチ回路でラッチされてい
る。比較結果が一致したか否かを示す1ビットのEQU
AL信号は、データ転送制御回路Cm1でトランスペア
レントタイプのデータラッチ回路でラッチされる。この
アドレス一致検出では、アドレス比較に加えて相前後す
る2つのパケットがともに二項演算命令実行パケットで
あることも検出しており、アドレスが一致し、かつ、と
もに二項演算実行パケットである場合に限りEQUAL
信号は“1”となる。
ュアドレスのプリデコードとハッシュアドレスの事前競
合回避の処理が実行される。ハッシュアドレスのプリデ
コードは、ハッシュアドレス9ビットの内の2ビットの
Yデコードと4ビットのプリデコードが行われる。従っ
て、Yデコード結果4ビット、プリデコード結果16ビ
ット、未デコードアドレス3ビットの正負6ビットの計
26ビットが出力される。
理であるが、これは、マッチングメモリ部MMに対して
連続してパケットが入力されている場合には、同じハッ
シュアドレスを連続してアクセスすると、本来ハッシュ
アドレスに対して、書き込みがなされた後に読み出さな
ければならない場合でも、マッチングメモリ部MMで
は、後続パケットの読み出しが優先して実行されるため
に、誤ったデータの読み出しを行うという誤動作をが起
きる。これを防ぐために、事前に相前後してアクセスさ
れる2つのアドレスの比較を行い、これらがもし一致す
る場合には、先行するパケットの書き込みが終了するま
で、後続のパケットの読み出し段への進入を一時待たせ
るという処理を行っている。これを図22の論理回路図
より説明すると、先行するパケットがマッチングメモリ
部MM内に全くないことを示すALLZ信号が“0”
(先行するデータ有り)で、ハッシュアドレスの比較結
果で一致したことを示すEQUAL信号が“1”で、し
かも先行パケットがデータ転送制御回路C0を通過した
場合にCGO信号が“0”となり、先行パケットと同じ
ハッシュアドレスをアクセスしようとする後続パケット
のデータ転送制御回路C0段への進入を阻止する。その
後、先行パケットの書き込みが終了しALLZ信号が
“0”から“1”へと変化すると、CGO信号は、
“0”から“1”へと変化し、後続パケットのデータ転
送制御回路C0段への進入が許され、メモリ読み出しが
実行される。
Mでは、後続パケットの読み出しが終了するまで先行す
るパケットの書き込みは待たされる。このため、上記の
ハッシュアドレスの事前競合回避処理は矛盾をきたす。
そのための例外処理として、SWEEP信号が用いられ
る。つまり、後続パケットに対して、CGO信号を
“0”として、データ転送を阻止し、しかも実際に後続
パケットが待たされている場合に限り、SWEEP信号
を“1”として先行するパケットのメモリ書き込みを強
制的に実行させる(後続パケットの読み出しの完了を待
つことをせずに)。こうすることでデッドロックを起こ
すことなく、ハッシュアドレスの競合の事前回避が実現
できる。
る。 (1)連想メモリの機能 連想メモリは、ハッシュメモリを用いてオペランド対を
生成する際に、ハッシュ衝突を起こしたパケットの受け
皿として用いられる。つまり、ハッシュ衝突を起こした
パケットは、連想メモリで待ち合わせを行いオペランド
対が生成される。連想メモリへのアクセスは、ハッシュ
メモリのアクセスと並行して行われる。つまり、パイプ
ライン段の第四段で読み出しが行われ、第六段で書き込
みが実行される。第四段でのメモリ読み出しの処理は、
ハッシュメモリ、連想メモリ共に、パケットが入力する
度に実行されるが、第六段でのメモリ書き込みの処理
は、ハッシュメモリ、連想メモリの何れか一方のみに対
して実行される。当然のことながら、マッチングメモリ
部MMをスルーするパケットに対しては、メモリ書き込
みは実行されない。第六段で何れのメモリに対して書き
込みを行うかの判断は第五段でなされる。この判断は第
四段でのメモリの読み出し結果と、第五段でハッシュメ
モリのタグ情報と入力パケットのタグ情報とを比較した
結果とから行われる。この判断を行うもととなる処理の
決定表を図23に示す。図23において、第六段での処
理内容の欄のオペランド対の生成では、読み出したメモ
リ内容の内、オペランド情報をパケットへマージさせオ
ペランド対の生成を行う。その際、読み出したメモリワ
ードをクリアするために、そのワードのPBに対して
“0”書き込みを実行している。これは、ハッシュメモ
リ、連想メモリの何れの場合も同様である。したがっ
て、オペランド対生成の処理の場合であってもメモリ書
き込みは実行される。
うに、連想メモリは32ワード×32ビットのCAM部
と32ワード×36ビットのデータRAM部より構成さ
れる。CAM部とキー一致検索部により、与えられた3
2ビットのタグ情報(キー)と等しい情報が、すでに書
き込まれている32ワードの中に存在するかどうかの判
定がなされる。データRAM部はCAM部とワード線方
向に接続されており、CAM部のキーに対応するオペラ
ンド情報が格納される。CAM部とデータRAM部の接
続は、書き込み/読み出しワード線選択部により、読み
出し時にはCAM部のマッチ線とデータRAM部のワー
ド線が接続れ、書き込み時には双方のワード線が、空ワ
ード検知プライオリティデコーダにより求められたワー
ド線へ接続される。
ット(PB)1ビット、行き先ノード番号(NODE)
21ビット、カラー/世代(COL/GEN)8ビッ
ト、空き1ビットの合計32ビットである。これらのキ
ーは、書き込み時と読み出し時とで切り替える必要があ
る、これは、書き込み/読み出し選択のセレクタで実行
している。キーとして与えられるPBは、読み出し時に
は、常に“1”であるが、書き込み時には、入力パケッ
トを連想メモリに書き込む場合と連想メモリから読み出
した内容とオペランド対を生成する場合とで異なる。つ
まり、入力パケットを書き込む場合には“1”を書き込
み、オペランド対を生成する場合には“0”を書き込
む。与えられたキーの各ビット毎の比較は、図25に示
すようなフルCMOSのCAMセルを用いる。マッチ線
がワード線方向に32ビット分接続されており、同一ワ
ード線上のすべてのビットが一致すれば、予めプリチャ
ージされていたマッチラインのディスチャージが起こら
ないことで一致検出が行える。一致検出を行うためのマ
ッチ線のプリチャージ、ディスチャージの制御はCE信
号によって行っている(図26参照)。つまり、CE=
“0”の時には、マッチ線のデータRAM部側の接続を
切り、マッチ線のプリチャージを行う。CE=“1”の
時には、マッチ線のデータRAM部側を接続し、すべて
のCAMセルのCE入力を“1”としてマッチ線のディ
スチャージを行う。このCE信号のワード毎に設けられ
たドライバーとプリチャージのための回路は、CAM部
のマッチ線中央に付けられている。
ダ キーの書き込みワードの選択のために、図27に示す空
ワード検知プライオリティデコーダを用いている。この
回路は、各ワードのPBを観測することにより空ワード
で最も左側にあるワードを選択するものである。キャリ
ーの伝搬による遅延を抑えるために、32ワードを8ワ
ード単位の4つのブロックに分割し、各ブロック毎のプ
ライオリティデコーダと各ブロック内に空ワードが存在
するかどうかの検索を同時に実行し、最も左側に空ワー
ドが存在するブロックのプライオリティデコード結果を
採用している。すべてのブロックに空ワードが存在しな
かった場合には、反転論理FULL信号により連想メモ
リが満杯であることを表示する。この処理結果は、デー
タ転送制御信号C2の立ち上がりでエッヂトリガータイ
プのデータラッチでラッチされる。連想メモリ書き込み
時には、このラッチ結果が、CAM部、データRAM部
双方のワード線へ直結される。
ーと等しいキーが既に書き込まれているかを調べ、もし
存在する場合には、HIT信号を“1”とするものであ
る。キー一致検索部へは、CAM部で各ワード毎に束ね
られた32本のマッチ線をプリチャージした後、比較し
た結果をデータ転送制御回路C1でラッチしたものが入
力される。入力された32本のマッチ線からディスチャ
ージされなかったものが1本でも存在すれば、HIT信
号を立てて出力する。この回路は、NOR−NAND−
NOR回路で実現されている。
の際にCAM部にキーとして書き込まれたタグ情報に対
応するオペランド情報が格納される。各ワード毎に32
ビットのオペランドデータと2ビットのデータフラグの
計34ビットが格納される。メモリ周辺回路のイコライ
ズ・プリチャージ回路、センスアンプ、読み出しデータ
ラッチ、書き込みドライバーに関しては、ハッシュメモ
リのメモリ周辺回路と全く同一のものを用いている。デ
ータRAM部においてはCAM部のマッチ線出力で、直
接ワード線をアクセスする構成をとっているため、アド
レスデコーダは存在しない。
ら述べるこれらの接続の様子を図26に示す。この回路
は、基本的には、RWA信号により読み出し時(RWA
=“0”)にはCAM部のマッチ線とデータRAM部の
ワード線を接続し、書き込み時(RWA=“1”)には
空ワード検知プライオリティデコーダによって求められ
た書き込みワードとを接続するものである。RWA=
“0”の読み出し時には、CAM出力の32本のマッチ
線はすべて一旦レベル“1”へプリチャージされる。そ
のため、単にCAM部のマッチ線とデータRAM部のワ
ード線を接続しただけでは、データRAM部の全てのワ
ード線を立ち上げる結果となり、データRAM部のデー
タを破壊してしまう。したがって、CAM部におけるマ
ッチ線のディスチャージが完全に終了するまでは、CA
M部のマッチ線とデータRAM部のワード線は接続して
はならない。CAM部におけるマッチ線のディスチャー
ジはCE信号の立ち上がりで開始される。よって、CE
信号の立ち上がりよりもマッチ線のディスチャージが完
全に終了する時間だけ遅延して立ち上がり、CE信号の
立ち下がりと同期して立ち下がる信号MLEでCAM部
のマッチ線出力を殺すように制御している。
はデータRAM部と同様にRWA信号により行ってい
る。このためにCAM部のワード線へは、データRAM
部への書き込みが実施される場合には空ワード検知プラ
イオリティデコーダの出力結果が、それ以外の場合に
は、キー一致検索に用いられたマッチ線の情報をデータ
転送制御回路C2でさらにラッチした結果がそれぞれ入
力される。後者の場合のキー一致検索に用いたマッチ線
の情報をデータ転送制御回路C2でさらにラッチした結
果とは、データ転送制御回路C2を通過しメモリ書き込
み、あるいはオペランド対の生成を行おうとしているパ
ケットが、データ転送制御回路C0を通過した際に、C
AM部でキー比較を行った後のディスチャージされたマ
ッチ線の状態である。データRAM部への書き込みが実
施されるのは、連想メモリへ入力パケットのオペランド
情報を書き込む場合のみで、連想メモリの読み出し内容
とオペランド対を生成する場合には、データRAM部へ
の書き込みは実施されない。
リへ入力パケットのタグ情報を書き込む場合はもちろ
ん、連想メモリの読み出し内容とオペランド対を生成す
る場合にも実施する必要がある。連想メモリの読み出し
内容とオペランド対を生成する場合のCAM部への書き
込みは、連想メモリを読み出したワードのPBに対して
“0”を書き込み、そのワードの情報を無効化するもの
である。この時の連想メモリを読み出したワードがどの
ワードであるかは、先に述べたキー一致検索に用いたマ
ッチ線の情報をデータ転送制御回路C2でラッチした結
果が示している。したがって、連想メモリの読み出し内
容とオペランド対を生成する場合には、PBを“0”と
してCAMに対してのみ書き込みを実施することで、読
み出された連想メモリのワードをクリアできる。
発生回路を示す。メモリ読み出しに関する制御信号のE
QL、SAE、CBについては、その発生源はハッシュ
メモリと共通のものを用いている。メモリ書き込みに関
する制御信号のCWA、CWE、RWA、RWEについ
ては、その発生回路の回路構成はハッシュメモリと同一
であるが、ハッシュメモリとCAM部とデータRAM部
とでは、これらの制御信号を発生する条件がそれぞれ異
なるため、各々独立に持たせている。つまり、図28に
おけるCAMWR(反転)、RAMWR(反転)信号が
アクティブとなる条件がハッシュメモリの場合とは異な
るからである。
信号の他に、連想メモリ独特の制御信号がある。つま
り、CAM部のマッチ線のプリチャージ、ディスチャー
ジを制御するCE信号と、マッチ線のディスチャージ後
マッチ線とデータRAM部の読み出しワード線との接続
を制御するMLE信号である。これらの信号は、データ
転送制御回路C0のSEND出力をWRCOMP信号で
ゲートした後のCOO信号と、この信号を遅延回路DE
LAYにより遅延させたCOOD信号から生成される。
つまり、COO信号の立ち上がりでCE信号は“1”に
変化し、ある遅延の後のCOOD信号の立ち上がりでM
LE信号も“1”へ変化する。その後、COOD信号の
立ち下がりでCE、MLE信号ともに“0”へ変化す
る。
連想メモリ読み出しのタイムチャートを図29に示す。
4つのパケットが順次入力されており、その内最初の2
つは、キーが一致せずに何も読み出されていないが、後
の2つは、それぞれワード1、ワード2とそれぞれ一致
し、データ3、データ4がそれぞれ読み出されたことを
示している。
明を行う。データメモリ部DMは、チップ内部に例えば
32ビット×1Kワードのメモリが内蔵されている。ま
た、メモリアクセスを制御するための4種類のアドレス
ジェネレータを内蔵している。データメモリ部DMは、
大別すると、ノーマルモードと、バンクモードの2種類
の動作モードがあり、モードによってメモリの使用形態
が異なる。図30,31は、上記各動作モード時のアド
レスジェネレータと内蔵メモリとの接続関係を示した模
式図である。 (1)ノーマルモード(図30参照) ・ノーマルモードでは、内蔵されている1Kワードのメ
モリを単一のメモリとして使用するモードである。デー
タメモリ部DMに入力された1個のパケットにより1回
のメモリアクセスが行われる(スカラーアクセス)。 ・1Kワードを越えるアドレス空間を外部に拡張するこ
とができる。 (2)バンクモード(図31参照) ・バンクモードでは、内蔵のメモリを128ワードを単
位として、128×2ワード、128×3ワード・・・
のバンクに分割し、これらのバンク を上記アドレスジェ
ネレータのいづれかと接続することにより、データメ モ
リ部内で同時に複数のメモリアクセス実行することが可
能となる。上記 の機能を用いてベクトル演算を実現する
ことができる。すなわち、各バン クを、いわゆるベクト
ルレジスタとして用いてベクトル演算を実現する。 ベク
トル演算では、指定したバンクから、被演算データを連
続に読み出し、それらを演算し、演算結果の格納、外部
メモリからバンクメモリへのデータの充足、バンクメモ
リから外部メモリへのデータの書き出し(DMA転
送)、を同時に実行する。 ・スカラーアクセスも同時に実行可能であるが、アドレ
ス空間は、256アドレス(0番地〜255番地)に制
限され、この範囲を越えるアドレスをアクセスするパケ
ットが入力された場合、パケットのフラグ(セレクショ
ンコードのMEM_ACCESS_VIOLビット)を
セットし、メモリアクセスは、行われない。
いるアドレスジェネレータとその役割を示す。ここで
は、図2で説明したアドレス発生器に対し、その機能を
あらわす名称を付けている。ノーマルアドレスジェネレ
ータ(NAG)はアドレス指定でメモリをアクセスする
もので、スカラアクセスを制御する。(図2のAG3に
対応)リードアドレスジェネレータ(RAG)はバンク
モードにおいて、ベクトル演算データの連続読みだしを
制御するもので、2項演算のために、第1オペランド、
第2オペランド用に2個のメモリバンクを割り付けるこ
とができる。(図2のAG1,AG2に対応)ライトア
ドレスジェネレータ(WAG)はバンクモードにおいて
ベクトル演算結果の格納を制御する。(図2のAG4に
対応)DMAアドレスジェネレータ(DMAAG)はバ
ンクモードにおいて、外部メモリとの間のDMA転送を
制御する。(図2のAG5に対応)また、図58にデー
タメモリDM部のブロック図を示す。図58は、上記ア
ドレスジェネレータ、および、自己同期型データ転送線
路の関係に着目して描いたブロック図であり、図2で示
したデータメモリDM部のブロック構成図と等価な図で
ある。図58において、データメモリDM部は、#0〜
#7の128ワードのメモリバンクと、入力部から分岐
部を経てNAGおよび合流部を通過し出力部に至るデー
タ転送路と、入力部から分岐部を経てWAGで終端する
データ転送路と、RAGを始点とし合流部を経て出力部
に至るデータ転送路、および、NAG、RAG、WA
G、DMAAGの各アドレスジェネレータとSW回路、
外部I/F回路を接続する5組のアドレスバス、データ
バスと、各アドレスジェネレータから入出力されている
アドレスバス、データバスと各メモリバンクの接続を規
定するSW回路から構成されている。なお、分岐部は、
入力されたパケットのVECTフラグ(図50の特殊フ
ラグC1に相当)の値が“1”のとき入力されたパケッ
トをWAGに分岐させ、それ以外は、NAG側へ転送す
る。また、図2で陽に示してあった制御レジスタファイ
ルは、各アドレスジェネレータ、SW回路の内部にある
ため陽には示していない。図58におけるSW回路は、
図2における、2個のマトリックススイッチ回路に対応
する。また、図58における合流部は、図2における調
停回路(Arbiter)に対応する。VECTフラグの値が
“1”のパケット即ち、ベクトル演算パケットが入力さ
れると、このパケットは、分岐部においてVECT=
“1”を分岐条件としてWAG側へ分岐しベクトルデー
タのメモリバンクへの書き込み処理が行われる。この
際、入力されたパケットは書き込み処理の後消去され
る。一方、VECTフラグの値が“0”のパケット即
ち、スカラー演算パケットが入力されると、このパケッ
トは、分岐部において、NAGに転送され、オペコード
に従った処理を受け合流部を経て出力される。また、ベ
クトル演算のための被演算データの読み出しの開始命令
であるトリガー命令(詳細は、後述する)が発行される
とRAGによりメモリバンクの連続読み出しが開始さ
れ、読みだされたデータにFALUでのオペコードなど
のタグ情報を付加しパケットデータを形成し、合流部へ
転送する。合流部では、NAGから転送されるスカラー
演算パケットとRAGから転送されるベクトル演算パケ
ットを一本のデータ転送路に合流させ出力部をへて出力
する。各アドレスジェネレータ、SW回路内にある制御
レジスタの設定はSETAG命令にて行われる。SET
AG命令は、NAGにて実行されるが、各レジスタへの
設定データは、NAGに接続されているデータバスにて
各レジスタに伝達される。
データメモリDM部の動作モードとの関係を示す。図3
0は、ノーマルモード時のメモリの使用形態を示したも
のである。ノーマルモードでは、1Kワードの内蔵メモ
リはNAGのみがアクセス可能であり、入力したパケッ
トは、メモリとして、内部に1Kワードまでの単一のメ
モリをアクセスでき、チップの外部に1Kワード以降最
大16Mワードまでのメモリ空間をアクセスすることが
できる。図31は、バンクモードの状態の一例を示して
いる。バンクモードでは、NAGにのみ接続された専用
のバンク(バンク#0〜1)をのぞいてメモリは128
ワードのバンク単位で、各アドレスジェネレータに割付
けることができる。図31では、バンク#2,3をRA
Gに、バンク#4をWAGに、また、バンク#5をDM
AAGに割り付けている。なお、図2におけるBK1〜
BK8は図58,図30,図31におけるバンク#0〜
バンク#7にそれぞれ相当している。
ついて説明する。データメモリ部DMは、オペコードの
ほかにセレクションコードを参照し、入力されたパケッ
トのオペコードがDM命令であっても、セレクションコ
ードの値が以下の組み合わせの場合は、命令を実行しな
い。 DM命令実行禁止条件・・・IM=0 AND(HAS
H=1 OR(PE=1 AND PM_Thru=
0)) 図32,33にデータメモリアクセス関連命令(DM命
令)仕様の一覧表を示す。DM命令は、以下のように分
類することができる。
ログラム内に埋め込まれた即値が指定可能である。バン
クモード時は、アクセスしようとするアドレスをチェッ
クし256ワードを越えるアドレスをアクセスする場合
は、セレクションコードのMEM_ACCESS_VI
OLビットをセットし、メモリアクセスは行わない。M
EM_ACCESS_VIOLビットがセットされたパ
ケットは、ベクトル演算が終了し、ノーマルモードにも
どるまでリング上を処理を受けずに周回する。また、ア
ドレッシングモードにはベースアドレス加算モードもあ
る。
命令を順に実行することで実現され、共有資源管理が可
能である。共有資源をデータメモリ部DMの1つのアド
レスに代表させ、このアドレスに対して本命令が成功し
たタスクのみがその資源を獲得できるように制御する。
クセス セレクションコードが以下の条件を満たす場合、データ
メモリ部DMは、右データをデータメモリに格納された
データへのポインタと解釈し、ポインタの示す内容と置
換する。 セレクションコードがIM=1 AND HASH=
0の条件を満たす場合、右データにベースアドレスを加
算した値をアドレスとしてデータメモリ部DMを読みだ
し結果を右データに格納する。 PE=0 AND PM_Thru=1の条件を満た
す場合、右データをアドレスとしてデータメモリ部DM
を読みだし、結果を右データに格納する。このときPM
_Thru→0とする。
クセスするパケットが持つアドレスは、上位8ビットの
PE識別番号と下位24ビットの物理アドレスとの計3
2ビットで構成されている。大規模データを各PEに分
散配置して処理する場合、アドレス計算によって得られ
た結果に基づいて異なるPEのデータメモリ部DMをア
クセスし自PEに戻る過程がハードウェアでサポートさ
れている。
ず他のブロックとの協調動作であるので詳しい動作は、
後で説明する。データメモリ部DMでは、以下の動作を
する。 ・分散型共有メモリアクセスを行うパケットが入力さ
れ、データメモリ部DMをアクセスした後、左データの
上位8ビット(戻り先PE番号)右データの上位8ビッ
トに待避させる。 ・セレクションコードがPE=1 AND PM_Th
ru=0のパケットは、NOPで通過させる。
AG)命令 本命令はバンクモードの時のパラメータを指定するため
の命令である。ベクトル演算を制御するアドレスジェネ
レータ群、RAG、WAG、DMAAGには、読み出し
回数、アドレッシングモード等の設定、メモバンクのア
ドレスジェネレータへの割付を指定する。レジスタアド
レス(右データフィールドで指定)70h〜ffhは、
DMAC等の周辺チップ用に予約されており、左データ
のビットパターンがそのままデータポートより出力され
る。
(TRGRB,TRGRB2,TRGDMA) 本命令はアドレスジェネレータ、RAG、およびDMA
AGの一方もしくは、両方に対して連続的なメモリアク
セスの開始を指定する。
KAG)命令 本命令はRAG、WAG、DMAAGがSETAG命令
で設定した回数のメモリアクセスが終了したか否かをチ
ェックし、本命令が発行された時点でのアドレスレジェ
ネレータの稼動状態を左データに格納する(図33脚注
参照)。
との対応関係について説明する。バンクモードでは、S
ETAG命令にてアドレスジェネレータ内のモードレジ
スタ、バンクメモリ割付を指定するバンクレジスタを設
定する必要がある。ここでは、アドレスジェネレータの
仕様、バンクモード時に設定が必要なモードレジスタの
設定法について説明する。
り付けるため、バンクレジスタを設定する必要がある。
バンクレジスタは30ビットのレジスタであり図34に
示すフォーマットである。フィールドbank#nの5
ビットはバンク#nを割り付けるアドレスジェネレータ
のビットのみを1、その他は0を設定する。(n:2〜
7) なお、バンク#0,1は、常にNAGに割り付けら
れている。初期化時には、全てのバンクがNAGに割り
付けられる。すなわち、初期化時は、ノーマルモードと
なる。バンクレジスタを設定するには、SETAG命令
にて、右データ(レジスタアドレス)を50h、左デー
タを上記30ビットのビットパターンを下詰めで入力す
る。この設定は、ハードウェア的にアドレス、データ線
を所望のメモリバンクに接続するためのスイッチ回路
(図2におけるMS,図58におけるSW回路)を制御
するために行う。
り付けた場合にバンクメモリを識別するために、バンク
番号レジスタを設定する。バンク番号レジスタは、30
ビットのレジスタであり、図35に示すフォーマットで
ある。フィールドbank#nのビット1〜3の3ビッ
トにバンク#nのバンク番号を設定する。メモリアクセ
ス時、設定されたバンク番号は、アドレスジェネレータ
から生成されるアドレスの上位3ビットと比較され、一
致している場合のみメモリアクセスが行われる。メモリ
アクセスの詳細は後述する。初期化時には、フィールド
bank#nのバンク番号フィールド3ビットには、
(n+2)がセットされる。すなわち、初期化時は、ノ
ーマルモードとなる。(ただし、n=0,1,2・・・
5)。初期化時のバンク番号、0,1,はNAG専用の
2枚のバンクに割り当てられている。バンク番号レジス
タを設定するには、SETAG命令にて、右データ(レ
ジスタアドレス)を51h、左データを上記30ビット
のビットパターンを下詰めで入力する。
スタ設定 内蔵されているアドレスジェネレータの機能について説
明する。図36はアドレスジェネレータ内のモード設定
レジスタを示した一覧表である。
RAG、WAG、DMAAGは各々複数個のメモリバン
クを割当てることが可能である。生成されるアドレスは
10ビットであり、上位3ビットはメモリバンクを示す
ID番号を表現し、下位7ビットがID番号で指定され
たメモリバンクの物理アドレスである。各々のバンクメ
モリには、前述したバンク番号レジスタのうちで自バン
クに対応するフィールドが保持されており、ID番号と
バンク番号が一致したメモリバンクのみメモリアクセス
が実行される。バンクメモリアクセスモードフラグli
nkflの値によって生成されるID番号が異なる。以
下に、生成されるアドレスを示し、この状況を説明す
る。 (1)バンクメモリアクセスモードフラグが0の場合 ID番号(アドレス上位3ビット)=k ただし、 128*(k−1)≦base+step*(i−1)<128*k,1≦i ≦repeat、kは自然数;なお、上記アドレスは、アドレスジェネレータがアドレ
スを生成を開始してからi番目に生成されたアドレスを
示している。 (2)バンクメモリアクセスモードフラグが1の場合 ID番号(アドレス上位3ビット)=1+{i mod linknum} なお、生成されるアドレスの下位7ビットは、(1)
(2)ともに、base+step*(i−1)で表さ
れる数の下位7ビットが出力される。ここで、bas
e:ベースアドレス、step:アドレス増分、rep
eat繰り返し数、linknum:割り付けるバンク
メモリ数、linkfl:バンクメモリアクセスモード
フラグ,x mod yはxをyで割った剰余である
(x,yは自然数)。図37は、上記のアドレッシング
モードの概念を説明したものである。 (1)の場合は、割り当てられた複数のメモリバンクを
線形に接続し128の倍数ワードのメモリとしてアクセ
スをするモードを示しており、(2)の場合は、1回の
メモリアクセス毎にアクセスするメモリバンクが循環的
に変化してゆくモードを示している。
は、24ビットのベースアドレスレジスタ(nbas
e)があり、ベースアドレス加算モードのデータメモリ
アクセスパケットが入力された場合に用いられる。NA
Gが生成する論理アドレスは、24ビットであり、以下
のように表わされる。 論理アドレス=ε×nbase+(アドレスが格納されたデータフィールドの ビット2〜ビット23) たたし、 ε=1・・・ベースアドレス加算を行うモードの場合
(DMRB,DMRIB,DMWB,DMWIB,DM
WBA,DMWIBA) ε=0・・・ベースアドレス加算を行わないモードの場
合(DMR,DMRI,DMW,DMWI,DMWA,
DMWIA)
レス>1kワード)においては、ノーマルアドレスジェ
ネレータNAGは、論理アドレスの値をチェックし、1
kワードを越える場合は、データメモリ部DMのポート
経由で外部メモリをアクセスする。ポートから出力され
る物理アドレスは、論理アドレスに等しい。
レス<1kワード)においては、RAG等と同様に、生
成されるアドレスは、ID番号3ビット、メモリバンク
内の物理アドレス7ビットの計10ビットである。生成
されるアドレスは、以下のようになる。 ID番号=論理アドレスのビット7〜ビット9 バンクメモリ物理アドレス=論理アドレスの下位7ビッ
ト
スタに設定する内容と、そのレジスタアドレスを示す。
設定は、SETAG命令を用い、パケット内の左データ
に設定内容、右データにレジスタアドレスをセットす
る。 RAGのレジスタは、図38に示すような3組のデー
タで設定する。 RAGのアクノリッジ・パケットには図39に示すよ
うな2組のデータにより内容が設定される。 WAGのレジスタは、図40に示すような2組のデー
タで設定する。
の動作では、説明できない協調動作がある。ここでは、
データメモリ部DMに関連する協調動作について説明す
る。 (1)即値アドレスによるメモリアクセス ノイマン形プロセッサと同様に本プロセッサでもプログ
ラムにデータメモリ部DMの即値アドレスを格納し用い
ることができる。2通りの機構がサポートされており、
以下のように制御される。 (1.1)セレクション・コードのIMビットを用いる
場合 プログラム・コードを生成する際に、IM=1をセット
することで、プログラムのセレクションコードフィール
ドの上位8ビットを即値アドレスとして用いることがで
きる。 プログラムメモリ部PMにおいて、タグ更新の際にプ
ログラムメモリから読み出した値のうちセレクションコ
ードのIMビットが“1”である場合、セレクションコ
ードの残り8ビットが定数データを格納しているDMの
アドレスと解釈されて、右データフィールドのビット2
からビット9にこの8ビットのセレクションコードが格
納される(スカラーアクセスがバイトアドレスを取って
いるためセレクションコードフィールドで表現される値
を2ビットシフトする。)。PMから出力するパケット
のセレクションコードの該当する8ビットのフィールド
には、デフォールトのセレクションコード値が格納され
る。 セレクションコードのIMビットが“1”であるの
で、プログラムメモリ部PMから出力されたパケット
は、出力ブロック、入力ブロック、MMブロックをNO
Pで通過しデータメモリ部DMに到着する。 データメモリ部DMでは、IMビットが“1”である
ためにパケットの右データフィールドは、アドレスであ
ると解釈してベースアドレスレジスタnbaseの内容
と該アドレスの加算を行い、この結果をアドレスとして
メモリ読み出し動作を行い、読み出したデータを右デー
タフィールドに格納する。〜のプロセスでデータの
演算相手である定数がフェッチされる。
hru=1,PE=0を用いる場合 プログラム・コードを生成する際に、セレクションコー
ドのビットを、PM_Thru=1,PE=0,PAI
R=1,L/反転論理R=1の組み合わせに設定する
(PAIR=1,L/反転論理R=1の組み合わせは、
単項演算パケットを示しており、MMブロックをNOP
で通過するための処理である)。また、プログラム・コ
ードの次のアドレスにデータメモリ部DMの即値アドレ
スを定数として格納することで、24ビットフルビット
を即値アドレスとして用いることができる。 プログラムメモリ部PMでは、プログラムの制御ビッ
トにより、データメモリ部DMの即値アドレスが定数と
してパケットの右データフィールドに格納される。 出力ブロックでは、セレクションコードを、PM_T
hru=1,PE=0の組み合わせであるのでパケット
は、チップ外に出力されることなくMMブロックへ、出
力される。セレクションコードが、PAIR=1,L/
反転論理R=1の組み合わせであるためMMブロック
は、このデータパケットをNOPで通過させる。 データメモリ部DMにおいて、セレクションコードが
PM_Thru=1,PE=0の組み合わせであるの
で、パケットの右データフィールドにデータメモリ部D
Mのアドレスが格納されているものと解釈して右データ
をアドレスとしてメモリを読み出し、結果を右データフ
ィールドに格納し出力する。この際、PM_Thru→
0とフラグを変更し、次のPMブロックでのタグ更新の
処理が禁止されないようにする。また、この際、データ
メモリ部DMの動作モードがバンクモードである場合
で、読み出しアドレスが、256ワードを越える場合
は、前述のように、セレクションコードのMEM_AC
CESS_VIOLフラグをセットし、メモリアクセス
は行われない。
て処理するため、各プロセッサ・エレメント(PE)の
データメモリ部DMを透過的にアクセスする機構を備え
ている。論理的なアドレスは32ビットであり、上位8
ビットがPE番号、下位24ビットが各PEのデータメ
モリの物理アドレス(ローカルアドレス)である。 マッチングメモリ部MMにおいてマッチングされアド
レス(32ビット論理アドレス)及びデータが対になっ
たパケットが、プログラムメモリ部PMにてタグ更新が
なされる。この際に、セレクションコードの組み合わせ
がPE=1,PM_Thru=1,OUT/反転論理I
N=1,PAIR=1,L/反転論理R=1となるよう
にプログラムコーディングしておく(メモリ書き込みの
場合。メモリ読み出しの場合は、1入力命令であるので
最初のマッチング処理は必要ない)。 出力ブロックでは、PE=1,PM_Thru=1の
組み合わせによって、行き先PE番号が左データフィー
ルドの上位8ビットにあると解釈し、(a)自PE番号
と等しい場合は、チップ外に出力せずMMブロックへ出
力する。(b)自PE番号と等しくない場合は、左デー
タの上位8ビットに格納されているPE番号を3ワード
形式のPE間を渡るパケットのPE番号フィールドに格
納し、自PE番号を、左データの上位8ビットへ待避し
てチップ外へ出力する。(a)の場合は、自PEのMM
ブロックへ、(b)の場合は、行き先PE番号を持つP
Eへネットワークを介してルーティングされ、行き先の
PEの入力ブロックを通ってMMブロックへ到着する。
も、セレクションコードは、PE=1,PM_Thru
=1の組み合わせである。(a)の場合は、行き先PE
番号と戻り先PE番号が同一であることを除くと(b)
の場合と同様に考えることができる。従って、ここで
は、(b)の場合に限定して説明する。以上〜の処
理はメモリアクセスの要求元PEでの処理である。
R=1,L/反転論理R=1の組み合わせであるため、
このパケットが単項演算のパケットであると解釈し、パ
ケットをNOPで通過させDMブロックへ出力する。 DMブロックでは、パケットのオペコードフィールド
に従ってデータメモリをアクセスし、左データの上位8
ビット(すなわち、戻り先PE番号)の値を命令実行後
は、使用しないフィールドである右データの上位8ビッ
トに待避し、PM、FALUブロックに出力する。な
お、DMブロックでは、OUT/反転論理INフラグ
は,常に、“0”が出力される。従って、DMブロック
を出力させるパケットのセレクションコードは、PE=
1,PM_Thru=1,OUT/反転論理IN=0の
組み合わせとなる。 演算部FALUは、オペコードがDM命令であるため
にNOPで通過する。プログラムメモリ部PMは、フラ
グがPM_Thru=1であるために、入力されたパケ
ットをNOPで通過させる。 出力ブロックでは、入力されるパケットのセレクショ
ンコードがPE=1,PM_Thru=1,OUT/反
転論理IN=0の組み合わせであると、無条件に、PM
_Thru→0とフラグの値を変化させる。また、上記
パケットに対し行き先PE番号が、右データの上位8ビ
ットに格納されているものと解釈し、この行き先PE番
号が自PE番号と異なる場合は、PE間を渡るパケット
のPE番号フィールドに右データの上位8ビットを格納
してパケットをチップ外のネットワークに出力する。こ
のパケットは、ネットワーク中でルーティングされ、再
びデータメモリアクセスの要求元PEに戻る。 以上〜の処理は、メモリアクセス要求先PEの処理
である。
は、パケットをチップ外に出力せずMMブロックへと転
送するが(で(a)の場合に要求元PEと行先PEが
同一であるためこのようなことが起こる),データメモ
リアクセス要求元PEでのMMブロック以降での処理
は、いずれの場合も同様であり、〜○10で説明する。
先PE(メモリアクセス要求元PE)の入力ブロックを
通過したパケットは、セレクションコードの組み合わせ
が、PAIR=1,L/反転論理R=1であるためこの
パケットを単項演算パケットと解釈し、MMブロックを
NOPで通過させ、DMブロックへ転送される。 データメモリ部DMにおいては、セレクションコード
の組み合わせが、PE=1,PM_Thru=0である
場合パケットをNOPで通過させる。○10FALUで
は、オペコードがDM命令であるため、データ処理は、
行われない。プログラムメモリ部PMにおいては、通常
のタグ更新が実行され、次に実行すべきノードの命令の
読み出しが行われる。
する。プログラムメモリ部PMの機能は、大きく次の3
つに分類される。 (1)タグ部(セレクションコード、命令コード、行き
先ノード番号)の更新を行う。 データフローグラフのノード間の接続情報と、ノードで
実行される命令コードがプログラムメモリ部PMに格納
される。プログラムメモリ部PMに入力されたパケット
は、ノード番号をアドレスとしてメモリをアクセスし、
タグの更新を行う。 (2)タグ部の操作を伴う特殊命令の実行を行う。 タグ部の操作を伴う特殊命令は、プログラムメモリ部P
Mと併置されている演算部FALUのハードウェア負担
を軽減するためにプログラムメモリ部PMで実行する。
例えば、ツルーゲート「TG」命令は右データに格納さ
れている“真偽”値を判定し“真”の時は、メモリの読
みだしを行い、“偽”の時には、パケットを消滅させ
る。 (3)定数データの読み出しを行う。 (4)パケットのコピーを行う。
41に示す。プログラムメモリ部PMの全体は、図41
に示すように6段のパイプラインで構成されている。次
に各ステージの実行内容を示す。 第1ステージ:OPCのプリデコード。 第2ステージ:制御命令の実行。 第3ステージ:メモリの書き込み/読みだし。 第4ステージ:メモリ連続読みだしが起こったときのパ
ケット再構成。 第5,6ステージ:行き先ノード番号の計算。 プログラムメモリ部PMに入力されるパケットフォーマ
ットを図42に、また出力フォーマットを図43に示
す。 例としてTG命令の実行手順をパイプラインステージを
追いながら示す。 第1ステージ:OPC=TGのプリデコード。 第2ステージ:右データの真偽値を判定。 偽の時、ABSビット(PM内部ビット)をたてる。
(ABSビットについては、その他の機能「PM内部ビ
ットについて」の項で詳説する。)このとき、入力パケ
ットは、PMをスルーし、KCOPY部ではABSビッ
トが1であるためにパケットを消滅させる。また、真の
時にはPMにおいてタグ部の更新を行い、KCOPY部
から出力する。 第3ステージ:メモリを読み出し、タグ部を更新する。
(右データの真偽値に関わらず行う。 第4ステージ:メモリ連続読みだしが起こった時パケッ
ト再構成。 第5,6ステージ:行き先ノード番号の計算。
る。 (1)メモリコアのフィールド割付 プログラムメモリ部PMは、32ビット×512ワード
のメモリを備える。このメモリコアイメージを図44に
示す。各フィールドの略説を次に述べる。 AAN (1BIT):メモリ連続読み出しの偽の制御フラグ。 CPY1 (1BIT):メモリ連続読み出しの偽の制御フラグ。 CPY0 (1BIT):メモリ連続読み出しの偽の制御フラグ。 SEL (9BIT):セレクションコード。このコードのビット並びは 、図45に示すようになる。 OPC (8BIT):オペコード。 NODE#(12BIT):行先ノード番号(符号付き12ビット)。
セレクションコードのDISP/反転論理ABSビット
が“1”のときには、相対アドレスと解釈され入力パケ
ットのノード番号と加算され行先ノード番号を得る。以
下に相対アドレスの方式を説明する。プログラムメモリ
部PMにおいては、命令コードの他に、この命令の次に
実行すべき命令が格納されているアドレス(行き先ノー
ド番号)を記憶しておく必要がある。このため、1命令
当たりのメモリビット数が増加することとなり、1チッ
プにプログラムの全体を格納し、高速に処理を行う上で
大きな制約となる。そこで、本プロセッサでは、プログ
ラムメモリ部PMに格納するノード番号を相対アドレス
とし、ビット幅を圧縮する方式を採用した。例えば、制
御フラグが8ビット、命令コードが8ビット、行き先ノ
ード番号を格納する領域が32ビットであると仮定すれ
ば、従来方式の場合1命令当たりのビット幅は48ビッ
トになる。これに対して、行き先ノードのアドレスを、
現在のノードのアドレスと行き先ノードの格納アドレス
との差分で与えられるものとし、相対アドレスが12ビ
ットで表現できるとすれば、1命令当たりのビット幅は
28ビットとなりメモリのビット幅を大幅に圧縮するこ
とができる。本方式は、基本的には命令ノード間の接続
の大半は局所的であり、行き先ノードに対する相対アド
レスが大きな値をとることは稀である、という性質に基
づいている。図46に従来のプログラムメモリ部の1語
の構成と本方式によるプログラムメモリ部の1語の構成
を示す。
ち、行き先ノードの命令を格納しているアドレスと現在
のアドレスの差分が−2048(=−2 11 )〜2047
(=2 11 −1)の範囲を越える場合は、溢れた桁は次の
アドレスに格納し、この領域を拡張アドレスとする。ま
た、制御フラグ(CPY1,CPY0)を追加して拡張
アドレスの存在を示すものとする。このようなプログラ
ムメモリ部PMにおいて、プログラムメモリ部PMのN
番地を読み出した結果、相対アドレスがRであり、制御
フラグが拡張アドレスの存在を示す時には、次のアドレ
スを連続して読み出して拡張アドレスEを得る。このと
き、次の行き先ノード番号Dは、D=N+(R+E*2 11 ) で与えられる。括弧内の和は、EとRの2進ビット列の
連結であり、実際の加算は一度でよい。また、マルチプ
ロセッサ構成の場合には、行先ノードが他のPEにマッ
プされている場合が当然ある。このため、拡張アドレス
のMSBから上位8ビットにPE#を格納する。このP
E#を読み出し、パケットに付与することによって、他
のPEにパケットをルーティングできる。
のセレクションコードのDISP/反転論理ABSビッ
トが“0”の時には、絶対アドレスと解釈され、メモリ
から読み出されたノード番号(11BIT)をそのまま
行先ノード番号とする。この時PMから出力されるパケ
ットのノード#(21BIT)は、符号拡張される。
定数データのMSBビットは、SELコードのLSBビ
ットにマップされ、残りの31ビットは拡張ア ドレスフ
ィールドに格納される。定数データのMSBと残りのビ
ットは、パケット再構成ステージで連結される。定数デ
ータの読みだし方法は、後述する。
る。プログラムのロード/ダンプは、PMWT(PM
WRITE)、PMRD(PM READ)命令によっ
て行う。PMWT命令実行の際、プログラムメモリ部P
MはABS(ABSORB)ビットを立てて、入力パケ
ットをそのままKCOPY部へ出力する。KCOPY部
は、このABSビットに従ってパケットを消滅させる。
ABSビットに付いては、後述のPM内部フラグの項で
説明する。
る。メモリの連続読みだしが行われるのは、次の各場合
である。 (1)パケットのコピー (2)拡張アドレスの発生 (3)定数データの読みだし 一つの演算結果に対して複数の行き先ノード番号が与え
られる場合、一つの入力パケットに対して連続してプロ
グラムメモリを読みだす必要がある。本プロセッサで
は、プログラムロード時にあらかじめ、連続読みだしフ
ラグ(D_COPY)をプログラムメモリに書き込んで
おき、プログラムメモリ読み出し時に、この「連続読み
出しフラグ」(D_COPY)を読み出し、PMが入力
パケットを受け取った時点で、連続アドレス読み出しの
要否が即座に判定できるようにして処理の高速化を計っ
た。入力パケットに対するメモリ読みだしが完了すると
同時に、次のアドレスに対する読みだしを開始すること
ができる。これは、拡張アドレス、また、拡張アドレス
の読みだし、定数データの読み出しについても同様に制
御される。
ラグの機能について説明する。 (1)PM内部フラグ プログラムメモリ部PMでは内部フラグとして、TH
R、ABS、COPYフラグの3ビットをもつ。各フラ
グの機能を次に示す。 THRB: スルーフラグ。PM入力パケットのセレク
ションコード中のPM_Thru、MEM_ACCES
S_VIOL、VECTOR_INSTR、HASH_
CONFLICTの論理和をとった(第1ステージで実
行)信号である。このフラグが“0”の時プログラムメ
モリ部PMは入力パケットを保存し内部をスルーさせ
る。 ABS: パケット消滅フラグ。PM入力パケット
のABSフラグと、PM内部のパケット消滅条件(PM
WRT命令が実行された時など)の論理和をとった信号
である。このフラグは、プログラムメモリ部PMからコ
ピー部KCOPYへ出力される。コピー部KCOPY部
はABSフラグが“1”の時パケットを消滅させる。KCOPY : コピーフラグ。コピーパケットが発生
した時、プログラムメモリ部PMはこのフラグを“1”
にして出力する。コピー部KCOPY部はこのフラグが
“1”の時、演算部FALUへのACK信号を禁止す
る。
ッサ番号。DM部で付加される。)の値は、通常PMを
スルーしPM出力パケットのPEの値として出力され
る。ただし、PMで拡張アドレスをアクセスしてPE番
号を読みだした時は、この値をPE番号として出力す
る。
いて説明する。 D_COPYはこのビットが“1”の時、プログラムメ
モリ部PMはメモリ連続読みだしモードにはいる。 PM_Thru、MEM_ACCESS_VIOL、V
ECTOR_INSTR、HASH_CONFLICT
の5ビットは、PM内部フラグTHRBを立てるために
参照される。 MEM_ACCESS_VIOL、VECTOR_IN
STR、HASH_CONFLICTの以上の4ビット
は、PM内部をスルーして出力される。
ョン・コードについて説明する。 DISP/反転論理ABSは、このビットが“1”の時
読み出された行先ノード番号は、相対アドレスと解釈さ
れ、入力パケットの行先ノード番号と相対アドレス(符
号付き)の加算結果が、新しい行先ノード番号としてパ
ケットに付与されて出力される。IMは、このビットが
“1”の時、読み出されたセレクション・コードの、上
位8ビットはデータメモリ部DMの即値アドレスと解釈
され、右データフィールドに格納されてプログラムメモ
リ部PMより出力される。なお、右データのあいたフィ
ールドには、“0”が格納される。このパケットがDM
部に到ると、右データの値をアドレスとしてデータメモ
リがアクセスされ、読みだしたデータが即値として格納
され演算可能パケットとなる。このため、IMフラグを
用いた即値読みだしパケットは、PMで即値を読みだす
ための余分なメモリアクセスが不用であり、かつMMで
パケットの待ち合わせを行う必要もなく、1入力命令と
同じパイプライン制御で命令実行を行うことができる。
また、プログラムメモリ部PMより出力されるパケット
のセレクション・コードの上位8ビットは、図47に示
すデフォルト値に設定される。次にメモリを読み出した
結果、AANの値が“1”であったときの動作を説明す
る。例として図66に示すようなデータフローグラフで
表されるプログラムを実行することを考える。このプロ
グラムはデータaとbとを乗算し、その結果cを3パケ
ットにコピーし、それぞれデータd,e,fと加算を行
って結果g,h,i,jを得るものである。このプログ
ラムをプログラムメモリ部PMのメモリにロードした状
態を図67に示す。図67を参考にしながら動作を示
す。ここでは入力パケットのD_COPYの値が“1”
であることによりアドレス1が、またアドレス0のAA
Nの値が“1”であることによりアドレス2が連続読み
出しされる。プログラムメモリ部PMに入力されたパケ
ットのノード番号は“0”である。メモリ読み出しステ
ージでは、上述のノード番号“0”に従ってアドレス
“0”を読み出す。このメモリ読み出しと並行して次の
メモリ読み出しアドレスを生成する。アドレス“0”の
読み出しが完了すると、直ちにアドレス“1”の読み出
しが開始される。先程アドレス“0”を読み出した結果
AAN=“1”であったので、アドレス“1”の読み出
しと並行して次のメモリ読み出しアドレス、すなわち
“2”を生成する。アドレス“1”の読み出しが完了す
ると、上述と同様にして、アドレス“2”の読み出しが
開始される。アドレス“1”を読み出した結果AAN=
“0”であるので、アドレス“3”は連続には読み出さ
れない。
る。このコピー部KCOPYの一構成例を図48に示
す。コピー部KCOPYは、基本的な構成として1個の
データラッチ回路と1個のC素子(転送制御素子)から
成る。C素子の詳細については前述したので、ここでは
省略する。このコピー部KCOPYは、図48に示すよ
うにC素子に対する4本の入出力線に数個の論理ゲート
を挿入することにより、下記の3機能を実現している。
タと、演算部FALUより送られてきた左データ(ここ
に演算結果が格納されている)とをデータラッチ回路に
おいて1つのパケットに構成して出力する。プログラム
メモリ部PMより送られてきたC信号(PMCI)と、
演算部FALUより送られてきたC信号(FALUC
I)との論理積をもってC素子を制御することで、デー
タラッチ回路に与えられる2系統のデータを正しくマー
ジする。
に読み出された複数のタグ情報に対し、演算部FALU
より送られてきた1つの演算結果を組み合わせ、所望の
数のパケットをデータラッチ回路から送出する。演算部
FALUに対して与えるAcknowledge信号(反転論理F
ALUACK)を、図48に示すように論理ゲートを構
成することで、次にコピーパケットが存在する場合、演
算部FALUにはAcknowledge信号を返さない。これに
より、コピー動作が続く限り、演算部FALUは単一の
データ(演算結果)を出力し続ける。なお、図48中の
COPYは現在転送中のパケットに引き続きコピーパケ
ットが存在することを示す。
ABS(現在転送中のパケットを次ステージに送らず演
算部FALUより送られてきた左データとともに消滅さ
せるべきことを示すもの)なる指示が与えられていた場
合、対応するタグ、右データ、及び左データ(演算結
果)をすべて消去する。これによりパケットの吸い込み
が行われる。詳しくは、プログラムメモリ部PMよりA
BS信号が与えられた場合、コピー部KCOPYより次
ステージにはCOUT(C出力信号)は送出されない。
当然Acknowledge信号を受け取ることもできないが、代
替信号として論理ゲート1と論理ゲート2より信号が供
給され、C素子のクリアを行う。プログラムメモリ部P
Mと演算部FALUに対するAcknowledge信号は通常通
り返されているため、コピー部KCOPYにおいてパケ
ットが消滅しことになる。
の特徴と効果について要約して述べる。 (1)ベクトル演算機能 本プロセッサのデータメモリ部DMは、独立に動作する
5組のアドレスジェネレータと、8つのメモリバンクを
もっている。アドレスジェネレータのうち、1組は通常
のメモリアクセスに用いられるが、残りの4組はベクト
ル演算のために用いられる。すなわち、2組のアドレス
ジェネレータを用いて2つのオペランド(被演算デー
タ)を連続的に読み出し、あらかじめ設定されている命
令コードとともに演算部FALUに送り込みベクトル演
算を実行する。演算部FALUから出力されるリザルタ
ント(結果データ)はコピー部KCOPY、入出力イン
タフェース部IF、マッチングメモリ部MMを通過した
後データメモリ部DMに到着し、結果格納用のメモリバ
ンクに連続書き込みされる。もう1組のアドレスジェネ
レータはメモリバンクと外部メモリとの間のブロックデ
ータ転送のために用いられ、次のベクトル演算に必要な
データの読み込みなどが行われる。
w、外部:222w)をもっているが、マルチプロセッサ
構成時には、他のプロセッサのローカルメモリを透過的
にアクセスすることができる。データメモリアドレス
は、上位8ビットのPE(Processing Element)番号フ
ィールドと、下位24ビットのローカルメモリアドレス
から構成されており、メモリアクセスの命令コードをも
つパケットは、PE番号に従って自動的に行き先PEに
転送され、メモリアクセス後、もとのPEに自動的に戻
ってくる。分散型共有メモリのアクセスは、プロセッサ
間のパケット通信経路を介してい行われ、特別の通信経
路を設ける必要はない。
タを格納しておくことにより、パイプラインの流れを乱
すことなく処理を行うことができる。これは、従来型の
マイクロプロセッサで考えると、レジスタに格納された
定数にたとえることができ、余分なサイクルなしで処理
を行うことができる。通常、即値データはプログラムメ
モリ部PMに埋め込まれているため、即値を読み出すた
めにはプログラムメモリ部PMを2回以上読む必要があ
り、パイプラインの流れを止め、効率を落とす要因とな
っていた。
ケータブルであることが必要条件となる。本プロセッサ
は、プログラム中の行き先ノード番号(ジャンプ先アド
レスに相当)を、現在実行中のノード番号に対する相対
アドレスで格納しているため、任意番地にタスクを動的
にローディングして実行することができる。相対アドレ
スのビット幅(例えば11ビット)は、絶対アドレス
(例えば21ビット)にくらべて少ないので、プログラ
ムメモリ部PMの容量の削減にも効果がある。もちろ
ん、固定番地へのジャンプもサポートされており、メモ
リ常駐のシステムコールを行うことも可能である。
制御の実現 マルチタスクが履歴(例えば、ファイル)や資源(ベク
トル演算機能)を共有するとき、これらを排他的に利用
するように制御する必要がある。この目的のために、デ
ータメモリ部DMの各アドレスに対してテスト・アンド
・セットを行うことができる。テスト・アンド・セット
命令は実際には共有資源を代表するデータメモリのワー
ドに対するテスト・アンド・ロック命令とセット・アン
ド・アンロック命令の2命令に分割されて実行される
が、この2つの命令はインターロック(連結)されてお
り、例えばタスクAのテスト・アンド・ロック命令が成
功した後は、対応するセット・アンド・アンロック命令
が実行されるまでは、対象とする共有資源が同一である
か否かにかかわらず他のタスク(例えば、タスクB)に
よるテスト・アンド・ロック命令の実行が不成功となる
ように制御されている。さらに、タスクAのセット・ア
ンド・アンロック命令によってセットされたワードが、
共有資源利用後にリセットされるまでは同一資源(すな
わち同一ワード)に対するテスト・アンド・ロック命令
は不成功となるように制御されている。
D)と、書き込む命令(PMWT)を用いて、プログラ
ムを他のPEに移動させる(プロセス・マイグレーショ
ン)ことができる。また、第2オペランド(右データの
値)を行き先ノード番号フィールドにコピーするSEN
D命令を用いることにより、他のPEの任意の番地に対
して入力パケットを送出することができる。この二つの
機能を用いることにより、先進的な動的負荷分散方法で
ある、プロセス・マイグレーションを実現することがで
きる。
ュ法が一般的である。しかし、ハッシュ衝突が発生した
ときには、ポインタチェインに従ってメモリを逐次的に
アクセスする必要があり、同一アドレス上でハッシュ衝
突が多重に起こった場合には時間的なペナルティーが大
きい。本プロセッサは、この問題を解決するために、ハ
ッシュメモリと、連想メモリを併用している。ハッシュ
衝突したパケットを連想メモリに格納しておき、入力し
たパケットに対して両方のメモリを同時に検索すること
により、ハッシュ衝突の有無にかかわらず、一定の遅延
でマッチングの処理を行うことが可能となった。
接続用ポートを介して、巡回しているパケットの内容を
モニタすることができ、実動作速度での内部状態を容易
にトレースすることができる。
たことにより、周回パイプライン段数を抑制し、最高性
能を引き出しやすくし、また単発入力に対する応答性を
高めた。
ングノイズ、クロック波形のなまり等)を解決するため
に、パイプライン間のデータ転送は外部クロックを用い
ない自己同期クロック方式を採用した。
説明する。
動作について説明する。 [1−1]拡張アドレスの読みだし、パケットのコピ
ー、プログラムメモリ部PMからの即値(定数)読みだ
しの各動作 データ駆動形マイクロプロセッサ内部のパケットフォー
マットは、図49に示すとおりである。また、図49の
Sel_Code(セレクションコード)の詳しい内容
を図50に示す。プログラムメモリ部において、拡張ア
ドレスの読みだし、パケットのコピー、即値(定数)読
み出しの各動作をするパケットをケース1パケットと呼
ぶ。
ようになる。本データ駆動形マイクロプロセッサ(RA
PID)に入力された、ケース1パケットはプログラム
メモリ部PMの入り口まで他の入力パケットと同様の動
作をする。
は、本プロセッサ外部より入力されたケース1パケット
は、リングパイプラインを周回してきたパケットと合流
する。ケース1パケットがリングパイプラインを周回し
てきた場合はセレクションコードに従って外部に出力さ
れるか、または、外部より入力されたパケットと合流し
て再びリングパイプラインに入力される。
ットの待ち合わせをする(2項演算命令の場合)。マッ
チングメモリ部MMでの詳しい動作は、前述したので、
ここではマッチングメモリ部MMより出力されるパケッ
トを次のように整理しておく。 (1)プログラムメモリ部PMをスルーするパケット ・セレクションコードのPM_Thru、MEM_VI
OL、HASH_CONの何れかのBITが“1”であ
るパケット。 (2)プログラムメモリ部PMをスルーしないパケット セレクションコードが(1)で示した以外であって、次
の2つの場合である。 ・左右オペランドの待ち合わせが完了した2項(2入
力)演算パケット。 ・単項演算(1入力)パケット。 上記(1)のパケットは、プログラムメモリ部PMでな
んら操作を受けない。
演算命令パケット及び、ベクトル演算設定パケットを処
理する。そうでないパケットはスルーする。プログラム
メモリ部PMでは、ケース1パケットの所定の動作が行
われる。この内、何れのパケットにも共通な動作は、タ
グ部(セレクションコード、オペコード、ノード番号)
の更新である。これについては、プログラムメモリ部P
Mと併置されている演算部FALUの動作と併せて理解
する必要がある。即ち、演算部FALUはプログラムメ
モリ部PM、演算部FALUに入力されたパケットのオ
ペコードに従って演算を実行する。一方、プログラムメ
モリ部PMは演算部FALUの動作と並列に、入力され
たノード番号をメモリアドレスとして、プログラムメモ
リ部PMから次回プログラムメモリ部PMと演算部FA
LUにパケットが入力されたときに必要なタグ部(セレ
クションコード、オペコード、ノード番号)を読み出し
更新する。
れたケース1パケットは、コピー部KCOPYでは、コ
ピーパケットに関して所定の操作が行われる。その他の
ケース1パケットは、コピー部KCOPYにおいて演算
結果データとマージされる。
力されたケース1パケットは、セレクションコードの内
容に従って本プロセッサより出力されるか、再びマッチ
ングメモリ部MMに入力され上述の2以降の動作をす
る。
説明 図51にケース1パケットの動作を説明するためのフロ
ーグラフを示す。図中、$****はノード番号を示
し、P1〜P7は、各ノードから出力されるパケットを
示す。これらP1〜P7のパケットフォーマットを図5
2に示す。図52に示されるパケットフォーマットはプ
ログラムメモリ部PMから出力された直後のものであ
る。また、図53には図51のフローグラフをプログラ
ムメモリ部PMのメモリにマップした様子を示す。プロ
グラムメモリ部PMのメモリへのプログラムのマッピン
グは、PMWT(PM WRITE)命令によって行わ
れる。プログラムメモリ部PMに書かれたノード番号
は、相対ノード番号である。従ってプログラムメモリ部
PMは、入力されたパケットのノード番号に読み出され
た相対ノード番号を加算して、行き先ノード番号とし、
プログラムメモリ部PM出力パケットのノード番号フィ
ールドに格納する。
ムメモリ部PMから出力されたところから話を始める。
P1は、プログラムメモリ部PMから出力された後[1
−1]の(d),(e)で述べたようにコピー部KCO
PY、入出力インタフェース部IFの各ブロックを通過
した後再びマッチングメモリ部MMに入力される。P1
は1入力命令であり、非ベクトル演算命令であるので、
マッチングメモリ部MM、データメモリ部DMの各ブロ
ックは、スルーし再びプログラムメモリ部PMと演算部
FALUに入力され、ノード($000000)の処理
が実行される。本プロセッサでは、プログラムメモリ部
PMと演算部FALUは、並列にインプリメントされて
いるので演算実行は演算部FALUで,タグ部(セレク
ションコード、オペコード、ノード番号)の更新は、プ
ログラムメモリ部PMで同時に行われる。
は、プログラムメモリ部PMのメモリを連続に読み出す
必要がある。これは、図49中のSel_Code(セ
レクションコード)の内のS5:D_COPY(図5
0)のビットによって制御される。つまり、プログラム
メモリ部PMで更新されたSel_Code(セレクシ
ョンコード)のS5:D_COPYが“1”であるパケ
ットは、次回プログラムメモリ部PMに入力された時ノ
ード番号で表されるアドレスとノード番号を1インクリ
メントしたアドレスが連続して読み出された。また、ノ
ード番号を2インクリメントしたアドレスが連続して読
み出されたか否かは、プログラムメモリ部PMのメモリ
を読み出されたとき、図53に示すAANの値によって
制御されるが、ここでは、詳しい説明は省略する。
プロセッサの動作を説明する。 1.ノード($000000) プログラムメモリ部PMに入力されたパケットP1は、
タグ部の更新とパケットコピーが行われる。ここで、図
53を参照する。パケットP1のノード番号は、($0
00000)であるのでプログラムメモリ部PMのメモ
リのアドレス(000000)番地が読み出された、そ
の結果、パケットP1のタグ部が更新され、プログラム
メモリ部PMよりパケットP2として出力される。続い
て、アドレスが1インクリメントされ、(00000
1)番地が連続して読み出され、再びパケットP1のタ
グが更新されプログラムメモリ部PMよりパケットP3
として出力される。このP3がコピーパケットである。
つまり、プログラムメモリ部PMの入力端と出力端で見
ると、1入力パケットに対し2出力パケットとなる。こ
こで注意すべき事が1つある。コビーパケットのタグ部
は、メモリの読み出し内容で更新されるが、パケットの
その他のフィールド(c/g、DATAR、DATA
L)は、プログラムメモリ部PM入力パケットの内容が
そのままプログラムメモリ部PM出力パケットの内容と
なる。プログラムメモリ部PMから出力されるP2、P
3のパケットフォーマットを図52に示す。
れたP2、P3は次にコピー部KCOPYに入力され
る。コピー部KCOPYでは、演算結果データとマージ
されると同時にコピーパケットであるP3に対し次のよ
うな操作が行われる。パケットP3のc/g、DATA
R、DATALの各フィールドは、パケットP2のそれ
と同じでなければいけない。そこで、パケットP2がコ
ピー部KCOPYに入力された時点で、本来、演算部F
ALUとプログラムメモリ部PMの両方に帰さなければ
ならないデータ転送完了信号反転論理(Ack)をプロ
グラムメモリ部PMだけに帰す。すると演算部FALU
では、パケットP2の転送が完了していないと解釈さ
れ、パケットP2のc/g、DATAR、DATALの
内容を出し続ける。一方、プログラムメモリ部PMで
は、パケットP2の転送が完了したと解釈され、パケッ
トP3の転送を行う。こうしてパケットP3は、パケッ
トP2と同じc/g、DATAR、DATALの内容を
持つ。
ログラムメモリ部PMより転送されると今度は、演算部
FALUとプログラムメモリ部PM両方に反転論理Ac
kを帰しコピーパケットに対する所定の動作を完了す
る。以上のコピー部KCOPYでの動作は、先に述べた
注意事項に相当するものである。ただし、DATALに
関しては、例外事項が有するが、ここでは立ち入らない
ことにする。(例えば、プログラムメモリ部PMから定
数を読みだした場合、その定数はDATALに格納され
る。従ってこの場合には、DATALは、演算部FAL
Uではなく、プログラムメモリ部PMのDATALがコ
ピー部KCOPYで選択される。
は、コピー部KCOPYを経て入出力インタフェース部
IFに入力される。入出力インタフェース部IFでパケ
ットP2は、再度本プロセッサ内に入力されるパケット
であると判断され、マッチングメモリ部MMに入力され
る。マッチングメモリ部MMは、パケットP2が1入力
命令であるので(セレクションコードのS7:PAIR
=1の時1入力命令)パケットP2をスルーさせる。続
くデータメモリ部DMにおいてもパケットP2は、ベク
トル演算命令ではないのでスルーされる。こうして、パ
ケットP2はプログラムメモリ部PMと演算部FALU
に入力され、演算部FALUでINC命令の実行が行わ
れプログラムメモリ部PMでタグ 部の更新が行われる。
この時更新されるノード番号は拡張アドレス付きであ
る。
ノード番号は、($000002)なので、アドレス
(000002)番地が読み出される。続いて、拡張ア
ドレス、PE番号が格納されるアドレス(00000
3)番地が読み出され、その結果、セレクションコード
とOPC=MUL、拡張アドレス付きのノード番号、P
E番号が更新される。これらの動作をフローチャート風
に示すと次のようになる。 (1)アドレス(000002)番地を読み出す。読み
だした内容に従って、セレクションコードとオペコード
を更新する。ノード番号(7FD)の値は保持する。ま
た読み出されたPE番号は、PE番号フィールドに格納
される。 (2)アドレス(000003)番地を連続して読み出
す。読みだした拡張アドレス(3FF)を先に読み出し
たノード番号(7FD)の最上位ビットから連結し、相
対ノード番号((1FFFFD)21ビット)を得る。 (3)相対ノード番号(1FFFFD)とプログラムメ
モリ部PM入力パケットP2のノード番号(00000
2)を加算し、行き先きノード番号(1FFFFF)を
プログラムメモリ部PM出力パケットP4のノード番号
フィールドに格納する。 以上のようにタグ部更新された、拡張アドレス付きパケ
ットP4は、プログラムメモリ部PMから出力された
後、前述のようにコピー部KCOPYで演算結果データ
とマージされ、入出力インタフェース部IFブロックを
経てマッチングメモリ部MMに入力され、右オペランド
であるパケットP8とオペランドの待ち合わせをする。
ノード($1FFFFF)の動作説明は、ここでは省略
する。
は、コピー部KCOPY、入出力インタフェース部IF
の各ブロックを経て、マッチングメモリ部MMに入力さ
れる。マッチングメモリ部MMで、右オペランドを持っ
たパケットP6とオペランドの待ち合わせをする。ここ
では、簡単のため待ち合わせの動作説明は省略し、パケ
ットP6及び待ち合わせの完了したパケットP7のパケ
ットフォーマットを図52に示すにとどめる。
ち合わせが完了したパケットP7は、非ベクトル演算パ
ケットなのでデータメモリ部DMをスルーしプログラム
メモリ部PMに入力される。パケットP7はノード番号
($000004)に従って(000004)番地を読
み出す。ここで図53を参照する。読み出されたタグ部
(セレクションコード、オペコード、ノード番号)に従
って既に述べたようにパケットP7のタグ部を更新す
る。定数読み出しのための特別な動作は、次の通りであ
る。 (1)(000004)番地を読み出した結果、得られ
たセレクションコードのS1には定数のMSBが格納さ
れている。このS1の内容を保持しておく。 (2)続いて、(000005)番地が読み出される。
ここには、定数の下位31ビットが書かれている。この
下位31ビットと、先に読みだしたMSB1ビットを連
結して32ビットの定数データを得る。 (3)(2)で得られた32ビット定数データをDAT
ARフィールドに格納し、更新したタグ部を付けてパケ
ットP5をプログラムメモリ部PMから出力する。パケ
ットP7の演算MULは、プログラムメモリ部PMと併
置されている演算部FALUで実行され、その結果はコ
ピー部KCOPYでマージされてパケットP5のDAT
ALに格納される。
する。パケットP5は加算を実行するパケットである。
加算命令は、2入力演算命令であり、通常マッチングメ
モリ部MMでオペランドの待ち合わせを行う。しかし今
の例のように、オペランドの一方がプログラムメモリ部
PMから読み出した定数であるような場合には、マッチ
ングメモリ部MMでオペランドの待ち合わせをする必要
がなくただちに加算が実行される。この動作をさせるに
は、セレクションコードのS7:PAIR=1(1入力
命令を意味する)にしてやればよい。こうすればマッチ
ングメモリ部MMは、本来2入力命令である加算命令を
持つパケットであってもオペランドの待ち合わせ動作は
行わない。
ドレスの読み出し、パケットのコピー、即値(定数)読
みだしの各動作について説明してきた。図53に示した
プログラムメモリ部PMメモリコアイメージのAAN、
CPY1、CPY2はプログラムメモリ部PMのメモリ
を連続に読みだすための制御ビットと、読みだした内容
の属性(コピー等であること)を示す制御ビットであ
る。
によるアクセスについてデータフローグラフを用いて説
明する。 ノイマン形プロセッサと同様に本プロセッサでもプログ
ラムにデータメモリの即値アドレスを格納し用いること
ができる。図54(a)はデータメモリアドレスを即値
指定でアクセスするためのプログラムを示したものであ
り、図54(b)は対応するデータフローグラフを示し
ている。以下に示すように、2通りの機構がサポートさ
れている。2.1セレクション・コードのIMビット
(S0)を用いる方法図54(a)に示したように(プ
ログラムメモリの#1)、プログラム・コードを生成す
る際に、IM(S0)=1をセットすることで、プログ
ラムのセレクションコードフィールドの上位8ビットを
即値アドレスとして用いることができる。即ち、データ
フローグラフ(図54(b))で考えると、ノード#2
で行われる処理に対応し、ノード#1でのADD演算の
結果と、セレクション・コードフィールドに指定した即
値アドレス(i番地)にデータメモリ部DMに設定され
ているベースアドレスを加算したアドレス(i+bas
e)番地に格納されたデータメモリの内容とをAND演
算する。
る。 プログラムメモリ部PMにおいて、タグ更新の際にプ
ログラムメモリから読み出した値のうちセレクションコ
ードのIMビット(S0)が“1”である場合、右デー
タフィールドのビット2からビット9にセレクションコ
ードフィールドのビット1からビット8を格納する(ス
カラーアクセスがバイトアドレスを取っているためセレ
クションコードフィールドで表現される値を2ビットシ
フトする)。出力パケットのセレクションコードフィー
ルドには、デフォールトの値が格納される。 セレクションコードのIMビット(S0)が“1”で
あるので、プログラムメモリ部PMを出力されたパケッ
トは、出力ブロック、入力ブロック、マッチングメモリ
部MMブロック、はNOPで通過しデータメモリ部DM
に到着する。 データメモリ部DMではIMビット(S0)が“1”
であるためにパケットの右データフィールドは、アドレ
スであると解釈して、設定されているベースアドレスと
加算を行い、生成されたアドレスで、メモリ読み出し動
作を行う。読みだしたデータを右データフィールドに格
納する。 演算部FALUでは、パケットのもつオペコード“A
ND”にしたがって演算が行われる。また、プログラム
メモリ部PMでは通常どうりのタグの更新が行われ次の
演算情報がパケットに付与される。 〜の過程でデータの演算相手である定数がフェッチ
され演算が実行される。
u(S3)=1,PE(S4)=0を用いる方法 図54(a)の#3にあるように、プログラム・コード
を生成する際に、セレクションコードのビットがPM_
Thru(S3)=1,PE(S4)=0,PAIR
(S7)=1,L/反転論理R(S6)=1の組み合わ
せに設定する(PAIR=1,L/反転論理R=1の組
み合わせは、単項演算パケットを示しており、マッチン
グメモリ部MMブロックをNOPで通過するための処置
である)。また、プログラムメモリの次のアドレスにデ
ータメモリ部DMの即値アドレスを定数として格納する
ことで24ビットフルビットを即値アドレスとして用い
ることができる。データフローグラフでは、ノード#5
での処理に対応し、ノード#3での演算“OR”の結果
と、即値アドレス(j番地)のデータメモリ内容とのM
UL演算が実現される。
る。 プログラムメモリ部PMでは、プログラムの制御ビッ
ト(AAN,CPY1,CPY0)により、データメモ
リ部DMの即値アドレス(j番地)を定数としてパケッ
トの右データフィールド格納する。 出力ブロックでは、セレクションコードがPM_Th
ru(S3)=1,PE(S4)=0の組み合わせであ
るのでパケットは、チップ外に出力されることなくマッ
チングメモリ部MMブロックへ、出力される。セレクシ
ョンコードが、PAIR(S7)=1,L/反転論理R
(S6)=1の組み合わせであるためマッチングメモリ
部MMブロックは、NOPで通過する。 データメモリ部DMにおいて、セレクションコードが
PM_Thru(S3)=1,PE(S4)=0の組み
合わせであるので、パケットの右データフィールドにデ
ータメモリ部DMのアドレスが格納されているものと解
釈して右データをアドレスとしてメモリを読み出し、結
果を右データフィールドに格納し出力する。この際、P
M_Thru→0とフラグを変更し、次のプログラムメ
モリ部PMブロックでのタグ更新の処理が禁止されない
ようにする。また、この際、データメモリ部DMの動作
モードがバンクモードである場合で、読み出しアドレス
が、256ワードを越える場合は、セレクションコード
のMEM_ACCESS_VIOLビット(C2)をセ
ットし、メモリアクセスは行われない。 演算部FALUでは、パケットのもつオペコード“M
UL”に従って演算が行われる。また、プログラムメモ
リ部PMでは通常どうりのタグの更新が行われ次の演算
情報がパケットに付与される(もしMEM_ACCES
S_VIOLビットがセットされていれば、演算部FA
LU、プログラムメモリ部PM共にNOPで通過す
る)。
について説明する。 大規模構造化データをマルチプロセッサシステムにおい
て処理するため、各プロセッサ・エレメント(PE)の
データメモリを透過的にアクセスする機構を備えてい
る。論理的なアドレスは32ビットであり、上位8ビッ
トがPE番号、下位24ビットが各PEのデータメモリ
の物理アドレス(ローカルアドレス)である。図55に
示したように、あるプロセッサエレメント(アクセス要
求元PE)内でデータメモリの透過的アクセスの要求が
発生した場合、パケットはネットワークを通じて論理ア
ドレス上位8ビットで指定されたPE(要求先PE)へ
ルーティングされ、要求先PEにてデータメモリをアク
セスし、再び要求元PEへ戻る。図56に示したよう
に、パケットは本過程を通じて(a)〜(b)の変遷を
たどる。以下に、透過的メモリアクセスの過程を示す。
ングされアドレス(32ビット論理アドレス)、データ
が対になったパケットが、プログラムメモリ部PMにて
タグ更新がなされる。この際に、セレクションコードの
組み合わせがPE=1,PM_Thru=1,OUT/
反転論理IN=1,PAIR=1,L/反転論理R=1
とプログラムコーディングしておく(メモリ書き込みの
場合。メモリの読み出し操作の場合は、最初のマッチン
グ処理は必要ない)。(図56(a)) 出力ブロック(I/Fブロック)PE=1,PM_T
hru=1の組み合わせによって、行き先PE番号が左
データフィールドの上位8ビットにあると解釈し、
(A)自PE番号と等しい場合は、チップ外に出力せず
マッチングメモリ部MMブロックへ出力する。(B)自
PE番号と等しくない場合は、左データの上位8ビット
に格納されているPE番号を3ワード形式のPE間を渡
るパケットのPE番号フィールドに格納し、自PE番号
を、行き先PEからの戻りPE番号として左データの上
位8ビットへ退避してチップ外へ出力する。(A)の場
合は、自PEのマッチングメモリ部MMブロックへ、
(B)の場合は、行き先PE番号のPEへネットワーク
を介してルーティングされ、行き先のPEの入力ブロッ
クを通ってマッチングメモリ部MMブロックへ到着す
る。(パケット形式は、図56(b))上記の(A)、
(B)いずれの場合であっても、セレクションコードは
PE=1,PM_Thru=1の組み合わせである。
(A)の場合は、行き先PE番号と戻り先PE番号が同
一であることを除くと(B)の場合と同様に考えること
ができる。従って、ここでは、(B)の場合に限定して
説明する。以上〜の処理はメモリアクセスの要求元
PEでの処理である。
ロックでは、PAIR=1,L/反転論理R=1の組み
合わせであるため、このパケットが単項演算のパケット
であると解釈し、パケットをNOPで通過させデータメ
モリ部DMブロックへ出力する。 データメモリ部DMブロックでは、パケットのオペコ
ードフィールドに従ってデータメモリをアクセスし、左
データの上位8ビット(すなわち、戻り先PE番号)の
値を命令実行後は、使用しないフィールドである右デー
タの上位8ビットに退避し、プログラムメモリ部PM、
演算部FALUブロックに出力する。なお、データメモ
リ部DMブロックでは、OUT/反転論理INフラグ
は、常に、“0”が出力される。従って、データメモリ
部DMブロックを出力されるパケットのセレクションコ
ードは、PE=1,PM_Thru=1,OUT/反転
論理IN=0の組み合わせとなる。(パケット形式は、
図56(c)) 演算部FALUは、オペコードがデータメモリ部DM
命令であるためにNOPで通過する。プログラムメモリ
部PMは、フラグ、PM_Thru=1であるために、
入力されたパケットをNOPで通過させる。 出力ブロックでは、入力されるパケットのセレクショ
ンコードがPE=1,PM_Thru=1,OUT/反
転論理IN=0の組み合わせであると、無条件に、PM
_Thru→0とフラグの値を変化させる。また、行き
先PE番号が、右データの上位8ビットに格納されてい
るものと解釈し、行き先PE番号が自PE番号と異なる
場合は、PE間を渡るパケットのPE番号フィールドに
右データの上位8ビットを格納して、再びパケットをネ
ットワークへ出力する。(図56(d)) 以上〜の処理は、メモリアクセス要求先PEの処理
である。
は、パケットをチップ外に出力せずマッチングメモリ部
MMブロックへと転送するが、で(A)の場合にこの
ようなことが起こる。この後のマッチングメモリ部MM
ブロック以降での処理は、いずれの場合も同様である。
PE(メモリアクセス要求元PE)の入力ブロックを通
過したパケットは、セレクションコードの組み合わせ
が、PAIR=1,L/反転論理R=1であるためこの
パケットを単項演算パケットと解釈し、マッチングメモ
リ部MMブロックをNOPで通過させ、データメモリ部
DMブロックへ転送される。 データメモリ部DMにおいては、セレクションコード
の組み合わせが、PE=1,PM_Thru=0である
場合パケットをNOPで通過させる。演算部FALU
は、オペコードがデータメモリ部DM命令であるため、
データ処理は、行われない。プログラムメモリ部PMに
おいては、通常のタグ更新が実行され、フローグラフ上
の次のノードの命令が読み出される。
うことを考える。 第一のベクトル演算 RAGで、予めバンク#2に格納された第1オペランド
(ai )、バンク#3に格納された第2オペランド(b
i )を連続的に読みだす。WAGでは、RAGで生成
し、演算部FALUで演算された結果(ai +bi )を
バンク#4に格納する。また、同時に、バンク#5には
外部メモリからデータ(ci )をDMA転送する。 第二のベクトル演算 上記のベクトル演算過程が終了した後、バンク#4(a
i +bi )、#5(ci )をRAGに、バンク#1(最
終結果を格納)をWAGに割付け、RAGが連続的にオ
ペランド対{(ai +bi )、ci }を生成し、演算部
FALUにてベクトル演算、(ai +bi )×ci を実
行し、WAGにてバンク#1にその結果(ai +bi )
×ci 、が格納され上記のベクトル演算が完了する。
ラフを示す。本データフローグラフは「トリガーパケッ
ト」の入力により起動される。本過程は、第一のベク
トル演算のためのセットアップ、ベクトル演算の実
行、ベクトル演算の終了の検知、第二のベクトル演
算のためのセットアップ、ベクトル演算の実行、ア
クノーリッジパケットの送出、によりなる。以下各過程
の詳細を説明する。
アップ、アドレスジェネレータとメモリバンクを関連づ
け等を行う。図中パターンなど、10h等は、プログ
ラムメモリ部PM内に予め設定された定数である(詳し
くは、第1節参照)。トリガーパケットを必要なSET
AG命令数分コピーして、SYNCノードで設定するビ
ットパターン(図中パターンなど)を定数としてプロ
グラムメモリより取り出し、左データに格納する
(*)。更に、レジスタアドレス(10hなど)を定数
としてプログラムメモリ部PMより取り出し、右データ
に格納しSETAG命令を実行する(SETAG命令の
引き数は、左データに設定するビットパターン、右デー
タにレジスタアドレスである)。(設定する内容は、後
述)。なお、SETAG命令は、図58におけるNAG
にて実行され、制御線を介して各アドレスジェネレー
タ、SW回路、メモリバンク内の各々のレジスタへのデ
ータの書き込みが制御される。
用いる場合、定数値は、右データに格納されるが、セレ
クション・コードの組み合わせをPAIR=1,L/反
転論理R=0とすことで、マッチングメモリ部MMが右
データと左データを交換する機能を持つ。ここでは、こ
の機能を用いることを仮定している。従って、SYNC
ノードにて定数(パターン等)が左データとして入力
されている。
たない)をSYNCノードで同期して、即ち、必要なS
ETAG命令が全て実行されたことを保証した上でTR
GW命令にてRAG、DMAAGの両方にトリガーをか
けベクトル演算を開始させる。RAGは、NAGにより
発行されたトリガー命令を受け、連続的にアドレスを生
成する。そのアドレスは、SW回路を介して対象とする
メモリバンクに作用しデータが読み出され、再びSW回
路を介してRAGに伝達され、パケットの左右データフ
ィールドに格納される。(オペコードなどの)タグ部は
予めSETAG命令で設定された内容が格納される。R
AGから出力されるパケットはセレクションコードC1
(VECTOR INSTR.)がセットされている。
このビットにより、演算部FALUを除くブロックは、
このベクトル演算パケットに対して何も処理をしない。
また、再びデータメモリ部DMに戻ってきたパケット
は、分岐部でC1がセットされていることでWAGへ分
岐し結果が格納される。
でアクノーリッジパケットを出力する。このパケットに
は、各アドレスジェネレータの稼働状態が格納されてい
る。(DMAAGの状態は、左データの最下位ビットに
格納されている)。ここでは、DMAAGがデータの転
送を終了したかどうかを確認するためアクノーリッジパ
ケットの最下位ビットをAND演算でテストし、終了し
ていなかった場合(AND演算結果が0でない場合)
は、CHKAG命令にて再度DMAAGの状態をチェッ
クしDMA転送の終了するまでループする。DMAAG
のデータ転送が終了した時点で第二のベクトル演算のセ
ットアップに入る。なお、命令「zero」は入力され
たデータが“0”であれば真(T)を、それ以外であれ
ば偽(F)を出力する。
こでは、アドレスジェネレータは、同一のアドレッシン
グモードを実行するため、バンクメモリとアドレスジェ
ネレータと関連づけ等を規定するレジスタのみを設定し
直す。
は、意味を持たない)をSYNCノードで同期して、即
ち、必要なSETAG命令が全て実行されたことを保証
した上でTRGRB命令にてRAGにトリガーをかけベ
クトル演算を開始させる。
ーリッジパケットを出力する。このパケットの行き先ノ
ード#に従ってベクトル演算の終了を示すパケットがベ
クトル演算の要求元へ出力される。なお、アクノーリッ
ジパケットの行き先ノード番号は、TRGRB等のベク
トル演算を開始させる命令を持ったパケットの行き先ノ
ード番号が設定される。
共有関数“i”の排他的実行について説明する。 データ駆動形マイクロプロセッサの特徴の一つは、プロ
グラムのコードサイズを圧縮するために複数回呼ばれる
関数を共有関数化し、かつカラー識別番号をデータに付
与することにより、プログラム中の複数の箇所から共有
関数を同時に呼び出して並列に実行できることである。
ところが、共有関数中にメモリの読み書きを含む場合、
読み書きの順序性を保証するために、同時実行を禁止
し、排他的に実行する必要の生じる場合がある。これ
は、履歴を伴う処理の場合一般的に要求されることであ
り、例えば、磁気ディスク記憶のディレクトリをチェッ
クして、空き領域が存在することを確かめた後に、ディ
スクの空き領域に引数として渡されたデータを書き込む
ような関数の場合、処理の一貫性を保証するためには同
時に呼び出される数を1つに限定する必要がある。すな
わち、関数の排他的実行が必要となる。
るためのプログラムを示すデータフローグラフである。
各命令の意味を以下に示す。 nop:データ操作をしない命令。1入力命令。 SYNC:2入力のnop命令。2つの入力が揃ったこ
とを検出して同期をかける(synchronize )ための命
令、左入力をパケットの左データフィールド、右入力を
右データ入力に格納して出力する。通常、出力パケット
の右データは、無意味。 T&L:テスト・アンド・ロック命令。左入力の値が示
すデータメモリのアドレスの内容が1であるか、またデ
ータメモリのロックフラグの値が1の時パケットのキャ
リフラグを1に変化させる。左入力の値が示すデータメ
モリアドレスの内容が0の時パケットのキャリフラグを
0とし、かつデータメモリのロックフラグを1にする。 CY:キャリフラグが1の時に、左データの値を1にす
る命令。 SW:右入力が1のとき、右側のアークにデータを出力
し、右入力が0のとき、左側のアークにデータを出力す
る命令。 S&U:セット・アンド・アンロック命令であり、左入
力の値が示すデータメモリの内容を1に変化させ、かつ
データメモリのロックフラグを0にする。DMW :左データ入力の示すデータメモリアドレスに、
右データ入力の値を書き込む命令。
ケットが送り出される。トリガーパケットはnop命令
を経由した後、関数“i”に相当する定数「i」を伴っ
たT&L命令を実行する。データメモリの「i」番地を
読みだした結果データが0であったとき、他のT&L命
令の実行が成功しないようにするためにロックフラグを
1にすると同時に、パケットのキャリフラグは本T&L
命令が成功したことを示すために0にする。一方、もし
「i」番地の内容が1であったり、データメモリのロッ
クフラグが1であった場合には本T&L命令は不成功に
終わり、キャリフラグは1となる。
ドでチェックされ、キャリフラグの0/1に応じてCY
命令ノードの出力パケットの左データの値が0/1にな
る。SW命令ノードでは右データ入力、すなわちCY命
令ノードの出力パケットの左データの値の0/1に応じ
て、0のとき左出力アーク上に、また1のとき右出力ア
ーク上にパケットを出力する。T&L命令の実行が不成
功であった場合には、再度T&L命令を実行するために
トリガーパケットが最初に入力するnopノードにパケ
ットを送る。反対に、T&L命令の実行が成功した場合
には、パケットをS&U命令ノードに送って、データメ
モリの「i」番地の内容を1に変化させるとともに、デ
ータメモリのロックフラグを0にクリアする。
〜In はsync命令ノードを経由して関数“i”に引
き渡される。関数“i”の実行が終了すると、関数の実
行結果として、出力数O1 〜On が呼び出し側に引き渡
される。nopノードを経由した出力引数は、呼び出し
側で次の処理のために利用されるとともに、syncノ
ードで出力の同期を取り、全出力が送出されたことを検
出する。最終的に、左データとして0を有するパケット
がDMW命令ノードに入力される。DMW命令は、デー
タメモリの「i」番地に0を書き込んで、i番地(関数
「i」)に対する他のT&L命令が成功可能な状態に戻
す。以上のようにして、関数の排他実行が実現される。
ローチャート、テスト・アンド・セット命令の実現方法
については先行出願(1991年1月9日出願「マイク
ロプロセッサ」)に詳述している。
60〜図63に参考として記載しておく。
を有する内部データメモリを、マルチバンク構成のメモ
リで実現した例を示したが、特にこれに限るわけではな
く、複数のビット線とこれに対応するす複数のアドレス
デコーダを有するいわゆるマルチポートメモリを用いて
もメモリの同時並行アクセスが実現可能であることは言
うまでもない。
タ駆動形マイクロプロセッサの構成における機能ブロッ
クの接続はほんの一例であり、これに限るものではな
い。例えば、演算部FALUと、プログラムメモリ部P
Mは並列配置されているが、これは命令実行の遅延時間
を短縮するための工夫であり、これら2つの機能ブロッ
クは、縦列接続されて演算処理、プログラム読み出しの
順に実行されても差し支えない。なお、このように接続
された場合、演算結果データのコピー機能はプログラム
メモリ部PMにおいて実現されることになり、コピー部
KCOPYは不要となる。
器、メモリバンクの数は固定的なものではなく、例えば
DMA転送を同時多重に行うことによってさらに性能を
向上させるためには、アドレス発生器、メモリバンク、
および外部メモリポートなどの数を増やせばよい。ただ
し、高速ベクトル演算を行うためには、最低3つのアド
レス発生器と、3つのメモリバンクが必須となる。
パイプライン構成も固定的なものではなく、例えば、ア
ドレス発生のためのパイプラインの段数が、アドレスの
ビット幅や、アドレッシングモードの機能の内容(任意
ビット数のビット反転処理を含むか否か)によって変わ
るものであることは言うまでもいない。
ットに付与されるべきカラーおよび世代番号識別子を省
略したが、これらの識別子を用いることによって、通常
のデータ駆動形計算機と同様に、動的データ駆動方式が
実現できることは言うまでもない。
プログラムメモリ部を並列配置し、演算部およびプログ
ラムメモリ部で更新された情報を入出力インタフェース
部へ送る構成とするとともに、データを同時並行かつ連
続的に読み書き可能なデータメモリ部を演算部よりも手
前えに配置し、マッチングメモリ部から被演算データを
連続的にデータメモリ部へ読み出し、予め設定されてい
る命令コードとともに演算部へ送り込みベクトル演算を
実行するようにしたので、ベクトル演算のための2つの
被演算データの読み出し、演算結果データの書き込み、
通常のメモリアクセスなどの処理が、短いアクセス時間
内に、しかも同時並列に行われ、極めて高いベクトル演
算性能を達成することができる。
中に取り込み、かつ演算部よりも手前の段に配置したこ
とにより、データの読み出しと演算実行を巡回パイプラ
インの1周回で完了することが可能となり、効率のよい
プログラム実行が可能となった。
の一実施例を示すブロック図である。
のデータメモリ部のブロック構成を示す図である。
ログラム(データフローグラフ)の一例を示す図であ
る。
で図3に示すプログラムを実行した場合のパケットの変
遷を示す図である。
である。
変換回路の一例を示す図である。
路の一例を示す図である。
の一例を示す図である。
の一例を示す図である。
語変換回路の一例を示す図である。
の効率的なアクセスについて説明するための図である。
動作を説明するための図である。
ある。
めのメモリアクセスのタイムチャートである。
フォーマットを示す図である。
す図である。
モリセルの回路図である。
である。
制御の論理回路図である。
ムチャートである。
スの事前競合検知回路の回路図である。
の図である。
す回路図である。
オリティデコーダの論理回路図である。
信号発生回路の論理回路図である。
信号発生回路による連想メモリ読み出しのタイムチャー
トである。
ード時のメモリの使用形態を示す図である。
ド時のメモリの使用形態を示す図である。
す図である。
す図である。
のフォーマットを示す図である。
スタのフォーマットを示す図である。
レータ内のモード設定レジスタを示す図である。
モードの概念を説明するための図である。
レジスタに設定される内容を示す図である。
アクノリッジ・パケットに設定される内容を示す図であ
る。
レジスタに設定される内容を示す図である。
ある。
トのフォーマットを示す図である。
ットのフォーマットを示す図である。
イメージを示す図である。
クションコードのビット並びを示す図である。
実施例によるプログラムメモリ部の1語の構成を示す図
である。
クション・コードの設定値を示す図である。
形式を示す図である。
するための図である。
説明するためのフローグラフを示す図である。
す図である。
図である。
レスアクセスを説明するための図である。
クセスを説明するための図である。
クセス時のパケットの変化を説明するための図である。
めのデータフローグラフを示す図である。
明するためのブロック図である。
関数の排他的実行を説明するためのデータフローグラフ
を示す図である。
る内容を示す図である。
る内容を示す図である。
る内容を示す図である。
る内容を示す図である。
ック図である。
ローグラフ)の一例を示す図である。
図(データフローグラフ)である。
メモリでの格納内容を示す図である。
Claims (6)
- 【請求項1】 データの入出力を行う入出力インターフ
ェース部と、この入出力インターフェース部から入力さ
れたデータであって、このデータに付属しているタグ情
報の内の少なくとも行き先ノード番号が一致する2つの
データを検出する機能を有するマッチングメモリ部と、
このマッチングメモリ部において一致検出がなされたデ
ータに対してデータに付属している命令コードに従って
演算処理を施す演算部と、データに付属している行き先
ノード番号を入力アドレスとしてメモリの内容を読み出
し、この読み出した内容に基づいてタグ情報の内の少な
くとも行き先ノード番号と命令コードの更新を行うプロ
グラムメモリ部とを備えたデータ駆動形マイクロプロセ
ッサであって、上記演算部と上記プログラムメモリ部を
並列配置し、上記演算部および上記プログラムメモリ部
で更新された情報を上記入出力インターフェース部へ送
る構成とするとともに、データを同時並行かつ連続的に
読み書き可能なデータメモリ部を上記演算部よりも手前
に配置し、上記マッチングメモリ部から被演算データを
連続的に上記データメモリ部へ読み出し、予め設定され
ている命令コードとともに上記演算部へ送り込みベクト
ル演算を実行することを特徴とするデータ駆動形マイク
ロプロセッサ。 - 【請求項2】 マルチプロセッサ構成時には上記データ
メモリ部を用いることにより他のプロセッサのローカル
メモリを透過的にアクセスすることを特徴とする請求項
1のデータ駆動形マイクロプロセッサ。 - 【請求項3】 上記データメモリ部に即値データを格納
しておくことを特徴とする請求項1のデータ駆動形マイ
クロプロセッサ。 - 【請求項4】 マルチタスクが履歴や資源を共有すると
き、履歴や資源を排他的に利用するように制御すること
を特徴とする請求項1のデータ駆動形マイクロプロセッ
サ。 - 【請求項5】 プログラムメモリ部の内容を読み出す命
令と書き込む命令を用いるとともに第2オペランドを行
き先ノード番号フィールドにコピーする命令を用いるこ
とにより、動的負荷分散処理を行うことを特徴とする請
求項1のデータ駆動形マイクロプロセッサ。 - 【請求項6】 外部データメモリ接続用ポート及び外部
プログラムメモリ接続用ポートを介して巡回しているパ
ケットの内容をモニタすることを特徴とする請求項1の
データ駆動形マイクロプロセッサ。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP12233891A JP2766404B2 (ja) | 1991-02-12 | 1991-04-24 | データ駆動形マイクロプロセッサ |
US07/819,164 US5404553A (en) | 1991-01-09 | 1992-01-02 | Microprocessor and data flow microprocessor having vector operation function |
US08/330,880 US5666535A (en) | 1991-01-09 | 1994-10-28 | Microprocessor and data flow microprocessor having vector operation function |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP4098191 | 1991-02-12 | ||
JP3-40981 | 1991-02-12 | ||
JP12233891A JP2766404B2 (ja) | 1991-02-12 | 1991-04-24 | データ駆動形マイクロプロセッサ |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH08212186A JPH08212186A (ja) | 1996-08-20 |
JP2766404B2 true JP2766404B2 (ja) | 1998-06-18 |
Family
ID=26380500
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP12233891A Expired - Fee Related JP2766404B2 (ja) | 1991-01-09 | 1991-04-24 | データ駆動形マイクロプロセッサ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2766404B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7827386B2 (en) * | 2003-06-30 | 2010-11-02 | Intel Corporation | Controlling memory access devices in a data driven architecture mesh array |
-
1991
- 1991-04-24 JP JP12233891A patent/JP2766404B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH08212186A (ja) | 1996-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5666535A (en) | Microprocessor and data flow microprocessor having vector operation function | |
US4524416A (en) | Stack mechanism with the ability to dynamically alter the size of a stack in a data processing system | |
US5113339A (en) | Data processor for detecting identical data simultaneously coexisting in a plurality of data sections of data transmission paths | |
US5251306A (en) | Apparatus for controlling execution of a program in a computing device | |
TWI525537B (zh) | 具有為向量衝突指令與置換指令所共享的全連接互連的處理器 | |
US3943494A (en) | Distributed execution processor | |
JPH0786845B2 (ja) | データ処理装置 | |
US4348724A (en) | Address pairing apparatus for a control store of a data processing system | |
US5586289A (en) | Method and apparatus for accessing local storage within a parallel processing computer | |
US5117499A (en) | Data flow type processing apparatus having external and cache memories for fetching paired executing instruction when mishit occurs | |
KR100431975B1 (ko) | 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템 | |
JP2766404B2 (ja) | データ駆動形マイクロプロセッサ | |
EP0797803B1 (en) | Chunk chaining for a vector processor | |
EP0374598B1 (en) | Control store addressing from multiple sources | |
US7636817B1 (en) | Methods and apparatus for allowing simultaneous memory accesses in a programmable chip system | |
JPH0793152A (ja) | マイクロプロセッサ制御装置 | |
JP2001297074A (ja) | データ駆動型情報処理装置の実行制御装置 | |
US4348723A (en) | Control store test selection logic for a data processing system | |
JPH0330175B2 (ja) | ||
JP2765882B2 (ja) | 並列計算機,ベクトルレジスタ間データフロー同期装置およびネットワークプリセット装置 | |
CN117009287A (zh) | 一种于弹性队列存储的动态可重构处理器 | |
JPH01211126A (ja) | データ駆動型データ処理装置 | |
JP2594091B2 (ja) | データ駆動型データ処理装置 | |
JP3102399B2 (ja) | データ処理装置及び方法 | |
JP2594092B2 (ja) | データ駆動型データ処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080403 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Year of fee payment: 11 Free format text: PAYMENT UNTIL: 20090403 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090403 Year of fee payment: 11 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Year of fee payment: 11 Free format text: PAYMENT UNTIL: 20090403 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Year of fee payment: 11 Free format text: PAYMENT UNTIL: 20090403 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Year of fee payment: 11 Free format text: PAYMENT UNTIL: 20090403 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Year of fee payment: 12 Free format text: PAYMENT UNTIL: 20100403 |
|
LAPS | Cancellation because of no payment of annual fees |