JP2853460B2 - データロード方法及びそれを用いた演算プロセッサ - Google Patents

データロード方法及びそれを用いた演算プロセッサ

Info

Publication number
JP2853460B2
JP2853460B2 JP18327692A JP18327692A JP2853460B2 JP 2853460 B2 JP2853460 B2 JP 2853460B2 JP 18327692 A JP18327692 A JP 18327692A JP 18327692 A JP18327692 A JP 18327692A JP 2853460 B2 JP2853460 B2 JP 2853460B2
Authority
JP
Japan
Prior art keywords
instruction
load
execution
sequence
data
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
Application number
JP18327692A
Other languages
English (en)
Other versions
JPH0628187A (ja
Inventor
薫 内田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
Nippon Electric Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Electric Co Ltd filed Critical Nippon Electric Co Ltd
Priority to JP18327692A priority Critical patent/JP2853460B2/ja
Publication of JPH0628187A publication Critical patent/JPH0628187A/ja
Application granted granted Critical
Publication of JP2853460B2 publication Critical patent/JP2853460B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、複数の命令列を並行し
て処理し、実行命令列内の命令を実行する演算プロセッ
サにおけるデータロード方法及びそれを用いた演算プロ
セッサに関する。
【0002】
【従来の技術】従来のフオン・ノイマン方式で動作する
演算プロセッサにおいては、命令列を順に実行している
中で、メモリにアクセスする命令があった場合、その命
令を実行し、そのメモリアクセスが終了するまで、演算
部の処理動作は次の命令の処理に進まずにそこで待って
いるという制御方式をとっていた。特にアクセスがメモ
リ読み出し(ロード)動作の場合には読み出した値をそ
れ以降の命令で使用するために、このように待つという
動作は必須となる。
【0003】このような制御方式をとると、メモリのア
クセスを起動してからそれを終了するまでにかかる時間
が演算プロセッサの一命令を実行する時間に比べて長い
場合には、演算プロセッサが演算処理を実行せずに無駄
に費やすサイクルが生じることになり、処理性能を低下
させる原因となる。
【0004】それを解決するために、本出願人出願の特
願平04−108071に記載の発明ではメモリをアク
セスするロード命令実行時に実行命令列を切り替え、メ
モリアクセスと他の命令列実行を並列に行なうことによ
り処理性能を高く保つことを可能にしている。
【0005】
【発明が解決しようとする課題】上述の方式では、メモ
リをアクセスするロード命令実行時に実行命令列を切り
替え、メモリアクセスと他の命令列実行を並列に行なう
ことにより処理性能を高く保つことを可能にしている
が、高速化のために命令キャッシュを使用している場合
には、命令列の切り替えにより命令キャッシュのミスの
確率が高くなり、実行命令フエッチ速度が低下する。
【0006】また、特に並列に実行可能な命令列の数が
少ない場合には、たとえ前述の特願平04−10807
1記載の発明を利用しても、連続実行される部分が短か
いと、トークンメモリが空の場合にそれだけ演算処理部
がアイドルであるサイクルが多くなる。
【0007】例えば、 データAをレジスタにロードするためのアドレス計算 データAのロード (「ロード」とはローカルまたはリモートのメモリから
データをフエッチし演算プロセッサの指定されたレジス
タへ移す動作を指す) データBをレジスタにロードするためのアドレス計算 データBのロード データAとBを使用する演算 という処理の流れがあったとする。
【0008】上で提案した方式でもトークンメモリが空
の場合には、この命令列に関する処理の時間経過は図6
(A)のように図示できる(図で「Aのロード」の部分
はメモリより戻ってからトークンメモリに並び、それを
出て演算処理部に入るまでの時間を含んでいる)。
【0009】このとき、「データAのロードの動作」と
「データBをレジスタにロードするためのアドレス計
算」とは本来は並列に実行できるが、制御の関係で直列
に処理されることになり、この命令列処理全体の始まっ
てから終わるまでにかかる時間が長くなり、特に、他に
十分な数の並列に実行可能な命令列がない場合には、
「Aのロード」の間、他に進める処理がなく、演算部の
稼働率が下る可能性がある、という問題が生じる。
【0010】そこで、一つの命令列のなかで中断動作を
起こさずに連続的に実行される部分(部分命令列)であ
るシーケンス長をできるだけ長くするようにして一つの
命令列の実行を継続し続けた方が、処理高速化には好ま
しい。言い換えれば命令列のうち中断する必要の無いと
ころでは中断せずに、行けるところまで同じ命令列の実
行を続行してから、どうしても中断が必要なところで中
断動作をすることが、より望ましいということになる。
【0011】すなわち、もし図6(B)のように「Aの
ロード」「Bのアドレス計算」を並列して実行できれば
この問題を緩和することができることになるが、まだ本
来並列に実行できる「Aのロード」と「Bのロード」を
オーバーラップさせることができないため上の問題は残
る。すなわち図6(C)のような処理ができることが望
ましい。
【0012】本発明の目的は、このような問題点を解決
し、より高い処理性能を実現する命令列切り替え方法及
びそれを用いた演算プロセッサを提供することにある。
【0013】
【課題を解決するための手段】第1の発明のデータロー
ド方法は、並行して実行可能な命令列をあらかじめ複数
用意しておきそれらを切り替えながらそのうちから1つ
を実行命令列として選択しその実行命令列中の命令を順
に実行する演算プロセッサで第1および第2の2個のデ
ータのロード動作の終了後に前記2個のデータを使用し
て実行すべきターゲット命令を含む第1の命令列を実行
中に前記2個のデータをメモリから前記演算プロセッサ
内へロードするデータロード方法において、前記メモリ
から前記第1のデータをロードする第1のロード命令実
行時には前記第1のデータを使用する前記ターゲット命
令のアドレスを含む第1のトークンを外部に発行してメ
モリアクセス動作を起動すると共に前記第1の命令列の
実行を続行し、ついで前記メモリから前記第2のデータ
をロードする第2のロード命令実行時には前記第2のデ
ータを使用する前記ターゲット命令のアドレスを含む第
2のトークンを外部に発行してメモリアクセス動作を起
動すると共に前記第1の命令列の実行を続行し、その後
に前記ターゲット命令の直前で前記第1の命令列の実行
を中断して他の命令列実行に移り、前記メモリアクセス
動作を終了して前記ターゲット命令に必要なデータを有
する前記演算プロセッサに入力する入力トークンの数を
計数し、前記計数の結果が2になったときには前記第1
の命令列の実行を前記入力トークンに含まれる前記ター
ゲット命令のアドレスにより前記ターゲット命令から再
開することを特徴としている。
【0014】第2の発明の演算プロセッサは、並行して
実行可能な命令列をあらかじめ複数用意しておきそれら
を切り替えながらそのうちから1つを実行命令列として
選択しその実行命令列中の命令を順に実行する演算プロ
セッサにおいて、1つの命令列内の命令を順に実行する
演算処理部と、外部から入力されたトークンを保持し前
記演算処理部に供給するトークンメモリと、前記演算処
理部からアクセスされるデータを保持するレジスタ群
と、外部で行なう動作の記述とそのとき実行中の命令コ
ード中に記述された命令列実行を中断した後に再開する
べき再開命令アドレスとを含むトークンの入出力情報を
管理しまたその入力数を計数するとともに外部から前記
演算プロセッサに戻ったトークンをトークンメモリに保
持するのに先立ってトークン中のメモリ読み出しデータ
をレジスタ群中のレジスタに書き込むロード制御部と、
各ロード命令には前記再開命令アドレスと再開に必要な
到着トークン数である発火必要数を有し各命令について
はその命令実行後に直後の命令を続行実行すか否かを示
したフラグを有する命令群よりなるプログラムを格納し
前記演算処理部へ命令列を供給するとともに前記各部の
動作を制御する命令列制御部とを有することを特徴とし
ている。
【0015】第3の発明の方法は、第1の発明に加え
て、第1の命令列中にn個のデータのロード動作の終了
後に前記n個のデータを使用して実行すべきターゲット
命令を含んでいるときには、前記n個のデータのそれぞ
れをロードするロード命令の実行時にそれぞれ前記ター
ゲット命令のアドレスを含むトークンを外部に発行して
メモリアクセス動作を起動すると共に前記第1の命令列
の実行を続行し、その後に前記ターゲット命令の直前で
前記第1の命令列の実行を中断して他の命令列実行に移
り、前記メモリアクセス動作を終了して前記ターゲット
命令に必要なデータを有する入力トークンの数を計数
し、前記計数の結果がnになったときには前記第1の命
令列の実行を前記入力トークンに含まれる前記ターゲッ
ト命令のアドレスにより前記ターゲット命令から再開す
ることを特徴としている。
【0016】第4の発明の方法は、第3の発明に加え
て、ロード命令実行時にはそのターゲット命令の代わり
にロード命令とターゲット命令のあいだのいずれかの命
令(これを再開命令と呼ぶ)のアドレスを含むトークン
を外部に発行してメモリアクセス動作を起動し、その後
前記再開命令の直前でその命令列の実行を中断し、前記
再開命令のアドレスを持つトークンがあらかじめ定めら
れた回数入力されたときに前記トークン中に含まれるア
ドレスにより前記再開命令から再開可能とすることを特
徴としている。
【0017】第5の発明の方法は、第4の発明に加え
て、命令列の中に、命令実行に2個のデータを必要とす
る命令に対して複数のロード命令とそれぞれのターゲッ
ト命令が存在する場合に、全てのロード命令について、
第1のロード命令実行時には、前記第1のロード命令と
そのターゲットである第1のターゲット命令との間に他
のロード命令がないときには前記第1のロード命令は前
記第1のターゲット命令を再開命令とし、他のロード命
令が存在しかつ前記第1のロード命令に最も近いロード
命令が別の第2のターゲット命令を持つ第2のロード命
令であるときには前記第1のロード命令は前記第2のロ
ード命令を再開命令とし、他のロード命令が存在しかつ
前記第1のロード命令に最も近いロード命令が同じ前記
第1のターゲット命令を持つ第3のロード命令であると
きには前記第1のロード命令は前記第3のロード命令の
再開命令と同じ命令をその再開命令とし、全ての命令に
ついて、ある命令がいずれかのロード命令の再開命令に
なっているときにはその直前で前記ある命令の属する命
令列の実行を中断し、前記ある命令をその再開命令とす
る前記ロード命令が2個あるときにはその再開命令を持
つトークンが2個到着したときに前記ある命令からそれ
の属する命令列を再開可能とすることを特徴としてい
る。
【0018】
【作用】第1および第2の発明では、ロード命令に対応
するターゲット命令のアドレスをあらかじめ調べてお
き、ターゲット命令のアドレスを持つトークンを2つ発
行した後にターゲット命令直前で命令列実行を中断し、
2つのトークンが入力されたことを発見することにより
命令列実行を再開する。
【0019】第3の発明では、ターゲット命令実行に必
要なデータが2つより多いときも再開時にそれを必要数
まで計数することにより同様な動作を行なう。
【0020】第4の発明では、ロード命令とターゲット
命令との間に第3の発明の方法を実施するうえでの障害
になる命令があってもコンパイル時に静的にこれを検出
してその命令のアドレスを再開アドレスとするように設
定することで同様な動作を行なう。
【0021】第5の発明では、2つ以上のロード命令と
ターゲット命令の組が干渉しあっていても中断後の再開
アドレスを干渉を解決するように設定することにより同
様な動作を行なう。
【0022】
【実施例】まず第1の発明の方法を使用する第2の発明
の装置の実施例について、図面を用いて説明する。
【0023】図1は第2の発明の演算プロセッサの一実
施例の基本構成図、図2は本演算プロセッサで使用され
るトークンの形式を示す形式図、図3は本演算プロセッ
サで使用される命令の形式を示す形式図である。
【0024】図1の演算プロセッサ1は、命令列が与え
られたときに内部に持つプログラムカウンタの値を1つ
ずつ増やしながらそれで参照される命令列内の命令に従
った演算処理を行なう演算処理部10と、演算処理部1
0から参照・更新される複数のレジスタの集合であるレ
ジスタ群11と、演算処理部10内の命令とプログラム
カウンタの値からトークンを生成し、これを図示されて
いないメモリアクセスコントローラに対して発行するト
ークン生成部12と、メモリアクセスコントローラから
ロード制御部21を介して入力されるトークンをFIF
O的に順に保持するトークンメモリ13と、ロード制御
部21と、トークンメモリ13と演算処理部10とトー
クン生成部12の動作を制御し、またプログラムを保持
するプログラムメモリを内部に持つ命令列制御部14と
から構成されている。レジスタ群11の中は、グローバ
ルレジスタフレームと、R個のローカルレジスタフレー
ムとに分かれている。Rは2以上の整数、例えば16と
する。
【0025】図4は入力トークンテーブル20と入力管
理部25からなるロード制御部21の構成を示す。入力
トークンテーブル20はR行からなり、各行は発火必要
数22と既到着数23のフイールドを持つ。既到着数2
3は″0″に初期化されている。
【0026】このような演算処理プロセッサ1を用いて
演算処理を行なう場合、次のような手順で進める。
【0027】まず外部から信号線90を介して命令列制
御部14に対して、全体の動作を記述したプログラム
を、ついでそれぞれが実行開始アドレスを持ったトーク
ンをいくつか与える。
【0028】同時に与えられ、また演算プロセッサ1内
外に存在できるトークン数の上限はレジスタ群11中の
ローカルレジスタフレーム数Rである。初期起動時にト
ークン数がこれを越さない様にプログラムコード作成時
にコンパイラで調整される。これにより同時にシステム
内に存在する実行可能な命令列数はR個以下となる。プ
ログラム起動時にR個以下のトークンが外部から与えら
れると、命令列制御部14はそれぞれのトークンに異な
るフレーム識別子を与える。フレーム識別子はR個ある
ローカルレジスタフレームのうちそのトークンが表現す
る命令列がどれを独占的に使用するかを識別するもので
ある。
【0029】命令列制御部14内のプログラムは一連の
命令の連続であり、実行開始アドレスはその内の1つの
アドレスである。以下、プログラム内の、実行開始アド
レスからある終了点までの部分列を命令列と呼ぶ。
【0030】トークンはすべてトークンメモリ13内に
おかれる。トークンメモリ13内のトークンは図2の形
式50に示されており、実行開始アドレスのフイールド
51を持つ。このとき、フイールド60は使用しない
し、またフラグ52の値は″0″である。前述のフレー
ム識別子はフイールド63に書き込まれる。また外から
トークンメモリ13へ与えたトークンの数を命令列制御
部14内のトークン数カウンタにセットする。
【0031】外部から命令列制御部14に対して処理開
始信号が与えられると、トークンメモリ13内の先頭の
トークンが演算処理部10に送られ、そのトークンのフ
ラグ52の値が″0″であるので、演算処理部10では
そのトークン内の実行開始アドレス51の値がプログラ
ムカウンタに設定される。同時にそのフレーム識別子6
3の値が演算処理部10の中のフレームレジスタにセッ
トされる。これを以下命令列フエッチ動作と呼ぶ。その
後、その命令列の実行が開始される。
【0032】演算処理部10の演算処理では、まずプロ
グラムカウンタの値を命令列制御部14に送り、それを
アドレスとしてそれで示される命令列制御部14内のプ
ログラムメモリ中の命令が演算処理部10にフエッチさ
れる。これを命令フエッチ動作と呼ぶ。
【0033】ついで演算処理部10では、フエッチされ
た命令に記述された命令の実行を行なった後に、命令の
シーケンス終了フラグ(後述の図3の命令形式の参照数
字65)が″0″であればプログラムカウンタの値を1
つインクリメントして次の命令の実行へ進む。命令のシ
ーケンス終了フラグが″1″であれば、後で述べる命令
列終了命令が実行された場合と同様に、その命令列の実
行を終了し別の命令列フエッチ動作を行なう。以上が命
令実行の基本動作である。
【0034】命令フエッチで得られる命令の種類として
は、レジスタ群11内のレジスタの値を最大2つ参照し
て加減乗除などの演算を行ない結果を指定されたレジス
タに書き込むALU演算命令、外部メモリ上のデータを
そのアドレスを指定することにより読み出してレジスタ
にロードするロード命令、レジスタ上のデータを外部メ
モリの指定された場所へ書き出すストア命令、プログラ
ムカウンタの値を命令で指示された値だけ変化させるジ
ャンプ命令およびブランチ命令、命令列の終わりで命令
列実行を終了する命令列終了命令、がある。
【0035】ALU演算命令、ロード命令、ストア命令
を実行する場合、命令は、図3の参照数字80、70お
よび75の形式を使用するが、この中のレジスタ識別子
は直接にレジスタを識別するためではなく、その命令列
に割り当てられたフレーム内での識別に利用される。レ
ジスタ識別子はまずそれがグローバルフレームのレジス
タを指すかローカルフレームのレジスタを指すかを示
し、前者である場合は残りの部分がその内の一つをアド
レスする。後者である場合には、演算処理部10内フレ
ームレジスタに保持されているフレーム識別子で1つの
フレームが決まり、命令の中のレジスタ識別子でその中
の一つのレジスタがアドレスされる。
【0036】命令フエッチで得られた命令がALU演算
命令のときは上述の基本動作を行なう。ALU演算命令
の形式は図3の参照数字80に示す。読みレジスタ識別
子A83と読みレジスタ識別子B84が演算に用いるデ
ータの入ったレジスタを、書き込みレジスタ識別子82
が結果を格納すべきレジスタを示す。
【0037】命令フエッチで得られた命令がロード命令
の場合には、命令列制御部14からトークン生成部12
に対しての指示により、トークン生成部12で図2の形
式55に示す読み出し要求トークンが生成される。
【0038】ロード命令の形式を図3の参照数字70に
示す。ロード命令の形式70はロード命令を示す命令コ
ード71と、メモリ読み出しを行なう読み出しアドレス
73と、読み出したデータを書き込むレジスタの識別子
72と、ロード命令実行により命令列実行を中断した後
に再開する命令であるターゲット命令のプログラムメモ
リ内のアドレス66と、ターゲット命令アドレスから命
令列実行を再開するために必要な入力トークン数を保持
する発火必要数67を有しており、この発火必要数67
には第1の発明の方法を実現するための演算プロセッサ
では″1″または″2″を、第3の発明以下の方法を実
現するための演算プロセッサではプログラムで決まる数
nを入れる。
【0039】読み出し要求トークンの形式55はそのと
きのロード命令70内のターゲット命令アドレス66の
値を実行開始アドレス58に、ロード命令70中の外部
メモリのアクセスすべき読み出しアドレス73をアクセ
スアドレス57に、ロード命令70中のレジスタ識別子
72をレジスタ識別子61に、メモリアクセスコントロ
ーラで行なう動作としてメモリ読み出しを指示するコー
ドをオペレーションコード56に持つ。またフイールド
64には演算処理部10内に保持されたフレーム識別子
が書き込まれる。このときフイールド59は使用しな
い。
【0040】ロード命令実行時、この読み出し要求トー
クンは生成後信号線91を介してメモリアクセスコント
ローラへ送られる。同時に命令制御部14から信号線9
3,94を介して、ロード制御部21内の入力トークン
テーブル20(図4参照)の、そのときの演算処理部1
0内に保持されたフレーム識別子でアドレスされる行の
発火必要数のフイールド22に、ロード命令70(図3
参照)の発火必要数67のフイールドの値が書き込まれ
る。
【0041】命令フエッチで得られた命令がレジスタ上
のデータを外部メモリの指定された場所へ書き出すスト
ア命令であった場合には、命令列制御部14からトーク
ン生成部12に対しての指示により、トークン生成部1
2で図2の形式55に示す書き込み要求トークンが生成
される。
【0042】ストア命令の形式を図3の参照数字75に
示す。形式75はストア命令を示す命令コード76と、
メモリ書き込みを行なう書き込みアドレス77と、書き
込むデータを読み出すレジスタの識別子78とを有す
る。
【0043】書き込み要求トークンの形式55はストア
命令75中の外部メモリの書き込みアドレス77をアク
セスアドレス57に、メモリアクセスコントローラで行
なう動作としてメモリ書き込みを指示するコードをオペ
レーションコード56に、ストア命令のフイールド78
で指定されたレジスタから読み出した書き込むべきデー
タをフイールド59に持つ。このときフイールド58、
61、64は使用しない。この書き込き要求トークンは
生成後信号線91を介してメモリアクセスコントローラ
へ送られる。
【0044】命令フエッチで得られた命令がプログラム
カウンタの値を命令で指示された値だけ変化させるジャ
ンプ命令であった場合には、プログラムカウンタに命令
中で指定された値が加算され、そのアドレスから処理が
続行される。またこれに類似したブランチ命令では、直
前の演算結果に応じてジャンプするか直後の命令の実行
にそのまま進むかを決定する。
【0045】命令フエッチで得られた命令が命令列の終
わりで命令列実行を終了する命令列終了命令であった場
合、および他の命令でそのシーケンス終了フラグ65
が″1″であった場合には、次の様な動作を行なう。
【0046】命令列制御部14内のトークン数カウンタ
の値を1つデクリメントする。デクリメント後これが0
になったら信号線90を介して外部にプログラム実行終
了を知らせ、演算プロセッサ1は停止する。0でなけれ
ば、その後命令列制御部14の制御により命令列フエッ
チ動作が行なわれ、フエッチされた命令列の実行が開始
される。トークンメモリ13中にトークンが1つも存在
しない場合には演算処理部10はトークンが得られるま
で待ち続ける。
【0047】メモリアクセスコントローラは読み出し要
求トークン(形式55)を受け取ると、このオペレーシ
ョンコード56に従ってアクセスアドレス57で示され
る番地からデータを読み出し、図2の形式50のトーク
ンを生成して演算プロセッサ1に対して送る。このとき
フイールド51には形式55のフイールド58の値を、
フイールド60には形式55のフイールド61の値を、
データ53にはメモリから読み出した値を、フラグ52
には″1″を与える。また受け取ったトークンのフレー
ム識別子64の値をそのまま戻りトークンの対応するフ
イールド63に埋め込む。
【0048】メモリアクセスコントローラでは書き込み
要求トークン(形式55)を受け取ると、このオペレー
ションコード56に従って、データ59をアクセスアド
レス57で示される番地に書き込む。
【0049】メモリアクセスコントローラからの図2の
形式50でフイールド52のフラグが″1″であるよう
なトークンが信号線92を介して演算処理プロセッサ1
に入力された場合にはロード制御部21において、次の
ような動作が行なわれる。
【0050】まず図2のトークンの形式50のフイール
ド63で指定されるフレーム中のフイールド60で指定
されるレジスタに対してデータ53を書き込む。なお演
算処理部10がレジスタに対して書き込みを行なってい
るサイクルではロード制御部21から同時に書き込むこ
とはできないので、そのときは入力管理部25内のFI
FOに書き込み要求を保持し、最初に書き込みが可能に
なったときに書き込む。また演算処理部10で命令列が
切り替わるときには、必要なら新たな命令列の実行開始
を遅らせてFIFO内にある書き込み要求を全て完了さ
せる。
【0051】書き込みが終了すると、ついでトークン形
式50中のフレーム識別子63に基づいて入力トークン
テーブル20の一行がアドレスされ、その行の既到着数
のフイールド23がインクリメントされ、インクリメン
ト後の値がその行の発火必要数フイールド22の値と比
較される。
【0052】それらが等しくない場合には、命令列再開
に必要な数のトークンが全て到着していないので、その
トークンはそこで消滅する。等しければ、命令列再開に
必要な数のトークンが入力されたことが分かるので、既
到着数23を″0″にリセットし、トークン形式50の
フラグ52を″0″にセットした後に到着トークンはト
ークンメモリ13のFIFOの最後尾に加えられる。F
IFOでは先頭のトークンが演算処理部10からフエッ
チされる度にそれが取り除かれそれまで2番目であった
トークンが先頭になり、以下順に順序が繰り上がる。
【0053】演算処理部10での命令列フエッチ動作に
おいては、フエッチしたトークン内の実行開始アドレス
51の値をプログラムカウンタに設定される。同時にそ
のフレーム識別子63の値が演算処理部10の中のフレ
ームレジスタにセットされる。そしてプログラムカウン
タで指示される命令からその命令列の演算処理が再開さ
れる。
【0054】以上の構成を持つ装置において本発明の目
的とする効果の達成を可能にする動作について説明す
る。まず第1の発明の方法の実現について述べる。
【0055】ロード命令LaとLbでメモリアドレスad
dr1 、addr2 からフエッチされレジスタr1、r2にロード
されるデータが命令Tabで初めて必要であるとする。つ
まり命令列は、 であるとする。このときTabはロード命令La,Lbに
対する「ターゲット命令」である。
【0056】一方、命令列が与えられたとき、コンパイ
ル時に全てのロード命令についてそれぞれ対応するター
ゲット命令を発見しそのコードアドレスの値を得ること
が可能であるので、La、Lbにおける読み出し要求ト
ークンの中の実行開始アドレスとしてTabのアドレスを
与えれば、再開時にそこから実行を再開することができ
る。
【0057】この方式を実現するために、コンパイル時
に、 1.前述のように全てのロード命令についてそのターゲ
ット命令のアドレスを求め、 2.プログラムメモリの中の各ロード命令のところにそ
れを埋め込み(図3のフイールド66)、 3.ターゲット命令が命令列実行再開にn個のデータを
必要とするとする場合は″n″をその命令のフイールド
67に埋め込む。第1の発明の方法ではこれは″2″ま
たは″1″である 4.さらにそれぞれのターゲットとなっている命令につ
いて、その直前の命令のシーケンス終了フラグ65を″
1″とする 5.他の命令については命令のシーケンス終了フラグ6
5を″0″とするという前処理をする。
【0058】実行時にはこれに従い、動作の説明で述べ
たように、 1.ある命令列中でロード命令Laがあったらそこでそ
のターゲット命令Tabのアドレスを実行開始アドレスと
するトークンを発行し、同時にあらかじめロード命令の
形式70のフイールド67に書き込まれていた、再開に
必要なデータ数を入力トークンテーブル20の発火必要
数フイールド22に書き込む 2.そこで命令列を中断せずに続行する 3.実行した命令のシーケンス終了フラグ65が″1″
であったらそこで単にその命令列の実行をやめ(単に
「消える」) 4.次の命令列をトークンメモリ13から読み込む 5.トークンがメモリアクセスから戻るとそのたびごと
にトークン中のデータがレジスタに書き込まれると共
に、入力トークンテーブル20の既到着数フイールド2
3をカウンターとして到着数が計数され、発火必要数2
2に等しくなったらトークンがトークンメモリ13へ送
られる 6.トークンメモリ13からトークンがフエッチされ演
算される順番になると 7.Tabの命令から処理を続行するという手順で処理が
進む。
【0059】この様子は図5のように図示できる。ここ
で下の細破線矢印はロード命令からそのターゲット命令
へのデータ依存関係を、縦棒はそのターゲット命令の直
前で命令シーケンスが切られ、命令列実行が中断される
ことを、また上の太い破線矢印はターゲット命令Tabの
アドレスを実行開始アドレスとして持つ読み出し要求ト
ークンが発行されてターゲット命令から命令列実行が再
開されることを示している。
【0060】例えば上のプログラムの例では、La、L
b実行時にはTabを実行開始アドレスとし、発火必要数
が″2″であるようなトークンが発行された後に処理が
継続され、Tabの直前で命令列実行が中断される。その
後トークンが2つ戻ったことを計数すると命令列は実行
可能となり、トークンメモリ13内で順番が回ってきた
ときに命令Tabから実行を再開する。
【0061】以上、ターゲット命令の必要とするデータ
数がたかだか2である場合にそれらをロードし、ターゲ
ット命令から再開する方法について説明した。
【0062】一般に3以上の数nについてn個のデータ
が到着したときに命令列実行を再開する必要がある場合
には、第3の発明の方法を用いる。この場合コンパイル
時には図3のロード命令の形式70の発火必要数67に
は″n″が設定され、また実行時、図4の入力トークン
テーブル20内の発火必要数フイールド22には″n″
がセットされる。また既到着数フイールド23は初期
値″0″から計数され、″n″に等しくなったときにト
ークンがトークンメモリ13へ送られる。
【0063】以上、2項データを必要とするターゲット
命令に対する全てのロード命令についてターゲット命令
の直前で中断し、全てのデータトークンが到着したとき
にターゲット命令から再開する方法について説明した。
【0064】しかしこれら2つの命令の間に例えばジャ
ンプ命令があって命令列と逆の方向(プログラムカウン
タが小さくなる方向)へ飛ぶ場合には、コンパイル時の
解析においてロード命令のターゲットを発見しにくいこ
とがある。このときは1パスではターゲットの発見が困
難であり、またはテーブル管理が複雑になる。
【0065】そのような場合には第4の発明の方法によ
り、このジャンプ命令を第1および第3の発明でのター
ゲット命令と見立ててその手前で中断し、再開アドレス
としてそのアドレスをプログラム中のターゲット命令ア
ドレスとして与える。
【0066】また演算結果に応じて条件分岐するブラン
チ命令ではさらに、ブランチの一方ではレジスタを使用
するのでターゲットが有るが、他方ではターゲットが発
見できないという場合もある。この場合には同様にその
ブランチ命令をターゲット命令とすることで対処する。
【0067】このように第4の発明により、ロード命令
とターゲット命令との間に第1の発明の方法の実施の障
害となる命令が存在するケースであっても、コンパイル
時に静的にこれを検出して適切なターゲットを発見し使
用するという制御を埋め込むことができる。
【0068】以上、2項データを必要とするターゲット
命令に対する全てのロード命令についてターゲット命令
の直前、またはロード命令とターゲット命令の間のある
命令の地点で中断し、すべてのデータトークンが到着し
たときにターゲット命令から再開する方法について説明
した。
【0069】しかしロード命令からターゲット命令まで
の区間が複数重なっている場合には、同時に異なるター
ゲットアドレスを持つトークンが演算プロセッサ1から
発行された後、後ろにあるターゲット命令に対するトー
クンが先に入力される際には誤った動作を行なうという
ように、正しい動作が保証されないという問題がある。
【0070】第5の発明はこの問題を次のように解決す
る。ロード命令La、Lbとそれらのターゲット命令T
abがこの順に並んでいるとし、それに加えてロード命令
Lcとそのターゲット命令Tcが同じ命令列中にあると
する。
【0071】コンパイル時に、複数のロード命令とそれ
ぞれのターゲット命令の順序を解析し、 1.ロード命令Laとそのターゲット命令Tabとの間に
他のロード命令がない場合には第1の発明の方法と同様
に、(a)そのターゲット命令をロード命令La、Lb
の再開命令に、発火必要数を″2″にし、(b)ターゲ
ット命令直前で中断するようにシーケンス終了フラグを
セットしておく 2.ロード命令LaとLbとの間に他のロード命令がは
さまれている場合には、(a)はさまれているロード命
令Lcのアドレスをロード命令La実行の再開命令に、
発火必要数を″1″とし、(b)ロード命令Lc実行直
前で中断するようにし、(c)さらにLcの再開命令を
Lbに、発火必要数を″1″にし、(d)Lbの再開命
令をTabに、発火必要数を″1″にしておく 3.ロード命令Lbとターゲット命令Tabとの間に他の
ロード命令がはさまれている場合には、(a)はさまれ
ているロード命令Lcのアドレスをロード命令La、L
b実行の再開命令とし、発火必要数を″2″にし、
(b)ロード命令Lc実行直前で中断するようにして
(c)さらにLcの再開命令をTcに、発火必要数を″
1″にしておくこのコンパイルの結果得られたプログラ
ムメモリを用いて、実行時には演算プロセッサは次のよ
うな動作をする。
【0072】1.ロード命令Laとそのターゲット命令
Tabとの間に他のロード命令がない場合には第1の発明
の説明と同様に動作する 2.ロード命令LaとLbとの間にロード命令Lcがは
さまれている場合には(図7(A)参照)、 (a)ロード命令La実行時には、はさまれているロー
ド命令Lcを実行開始アドレスとするトークンを出して
シーケンスを続行し、 (b)ロード命令Lc実行直前で命令列処理を中断し、
演算処理部10は別の命令列をフエッチする (c)その後戻ったトークンにより命令列はLcから再
開される (d)LcではLbをターゲット命令とするロード命令
を実行した後シーケンスの処理を続行する (e)その後戻ったトークンにより命令列はLbから再
開される (f)LbではTabをターゲット命令とし、発火必要数
を″1″とするロード命令を実行した後シーケンスの処
理を続行する (g)このときはTcで必要なデータはロードが完了し
ていることが保証されているので、Tcはそのまま実行
することができ、 (h)Tabの直前で命令列処理を中断し、演算処理部1
0は別の命令列をフエッチする (i)戻ったトークンにより命令列はTabから再開され
る 3.ロード命令Lbとターゲット命令Tabとの間にロー
ド命令Lcがはさまれている場合には(図7(B)参
照)、 (a)ロード命令La実行時には、Lcを実行開始アド
レスとし、発火必要数を″2″とするトークンを出して
シーケンスを続行 (b)ロード命令Lb実行時にも、Lcを実行開始アド
レスとし、発火必要数を″2″とするトークンを出して
シーケンスを続行 (c)ロード命令Lc実行直前で命令列処理を中断し、
演算処理部10は別の命令列をフエッチする (d)その後トークンが2つ戻った後に命令列はLcか
ら再開される (e)LcではTcをターゲット命令とするロード命令
を実行した後シーケンスの処理を続行する (f)このときはTabで必要なデータはロードが完了し
ていることが保証されているので、Tabはそのまま実行
することができる (g)Tcの直前で命令列処理を中断し、演算処理部1
0は別の命令列をフエッチする (h)Lcから戻ったトークンにより命令列はTcから
再開される 一般にロード命令とそのターゲット命令との間に他のタ
ーゲット命令を持つロード命令が複数存在する場合で
も、上述のように各ロード命令Lxのターゲット命令よ
り他のロード命令が近くにある場合には直後のロード命
令Lyを再開命令とするようにすれば、正しい動作をす
ることができる。
【0073】
【発明の効果】第1および第2の発明では、2つのデー
タを必要とするターゲット命令とそのロード命令のアド
レスをあらかじめ調べでおき、2つのトークンを発行し
てから命令列実行の中断をターゲット命令の直前まで遅
延させることにより、並列に実行可能な命令列の数が少
ない場合にも演算処理部がアイドルであるサイクルを減
少させ、より高い処理性能を実現できる。また2つのメ
モリアクセスをオーバーラップさせ処理を高速化するこ
とができる。この様子は図6において、一つの命令列実
行についての時間経過が従来方式においては(A)、ま
だ公知ではない方式では(B)であるのに比較して
(C)のように処理時間を短縮できることを意味する。
【0074】第3の発明では、上記の発明を一般化し、
n個のデータを必要とするターゲット命令がある場合で
もn個のデータトークンの到着を判定して命令列実行を
開始することを可能にする。この方法はデータロードだ
けでなく、並列処理においてn個のプロセスでのイベン
ト完了情報が到着後にある動作を開始するというバリア
同期の高速な実現を可能にする。
【0075】第4の発明では、上で述べた作用に加えて
上記の発明を一般化し、ロード命令とターゲット命令と
の間に第1の発明の方法の実施の障害となる命令が存在
するケースであっても、コンパイル時に静的にこれを検
出して適切な再開命令を発見し使用するという制御を埋
め込むことができ、これにより同様な効果の実現を可能
にする。
【0076】第5の発明では、上で述べた作用に加えて
二つ以上のロード命令とターゲット命令が干渉しあって
いても中断後の再開アドレスを干渉を解決するように設
定することを可能にする。
【図面の簡単な説明】
【図1】本発明の一実施例である演算プロセッサの構成
を示すブロック図である。
【図2】本実施例で用いられるトークンの形式を示す形
式図である。
【図3】本実施例で用いられる命令の形式を示す形式図
である。
【図4】本実施例で用いられるロード制御部の構成を示
すブロック図である。
【図5】第1の発明の方法を示す線図である。
【図6】従来方式等と本発明の方式の実行の様子を比較
するタイムチャートである。
【図7】第5の発明の方法を示す線図である。
【符号の説明】
1 演算プロセッサ 10 演算処理部 11 レジスタ部 12 トークン生成部 13 トークンメモリ 14 命令列制御部 21 ロード制御部

Claims (5)

    (57)【特許請求の範囲】
  1. 【請求項1】 並行して実行可能な命令列をあらかじめ
    複数用意しておきそれらを切り替えながらそのうちから
    1つを実行命令列として選択しその実行命令列中の命令
    を順に実行する演算プロセッサで第1および第2の2個
    のデータのロード動作の終了後に前記2個のデータを使
    用して実行すべきターゲット命令を含む第1の命令列を
    実行中に前記2個のデータをメモリから前記演算プロセ
    ッサ内へロードするデータロード方法において、前記メ
    モリから前記第1のデータをロードする第1のロード命
    令実行時には前記第1のデータを使用する前記ターゲッ
    ト命令のアドレスを含む第1のトークンを外部に発行し
    てメモリアクセス動作を起動すると共に前記第1の命令
    列の実行を続行し、ついで前記メモリから前記第2のデ
    ータをロードする第2のロード命令実行時には前記第2
    のデータを使用する前記ターゲット命令のアドレスを含
    む第2のトークンを外部に発行してメモリアクセス動作
    を起動すると共に前記第1の命令列の実行を続行し、そ
    の後に前記ターゲット命令の直前で前記第1の命令列の
    実行を中断して他の命令列実行に移り、前記メモリアク
    セス動作を終了して前記ターゲット命令に必要なデータ
    を有する前記演算プロセッサに入力する入力トークンの
    数を計数し、前記計数の結果が2になったときには前記
    第1の命令列の実行を前記入力トークンに含まれる前記
    ターゲット命令のアドレスにより前記ターゲット命令か
    ら再開することを特徴とするデータロード方法。
  2. 【請求項2】 並行して実行可能な命令列をあらかじめ
    複数用意しておきそれらを切り替えながらそのうちから
    1つを実行命令列として選択しその実行命令列中の命令
    を順に実行する演算プロセッサにおいて、1つの命令列
    内の命令を順に実行する演算処理部と、外部から入力さ
    れたトークンを保持し前記演算処理部に供給するトーク
    ンメモリと、前記演算処理部からアクセスされるデータ
    を保持するレジスタ群と、外部で行なう動作の記述とそ
    のとき実行中の命令コード中に記述された命令列実行を
    中断した後に再開するべき再開命令アドレスとを含むト
    ークンの入出力情報を管理しまたその入力数を計数する
    とともに外部から前記演算プロセッサに戻ったトークン
    をトークンメモリに保持するのに先立ってトークン中の
    メモリ読み出しデータをレジスタ群中のレジスタに書き
    込むロード制御部と、各ロード命令には前記再開命令ア
    ドレスと再開に必要な到着トークン数である発火必要数
    を有し各命令についてはその命令実行後に直後の命令を
    続行実行すか否かを示したフラグを有する命令群よりな
    るプログラムを格納し前記演算処理部へ命令列を供給す
    るとともに前記各部の動作を制御する命令列制御部とを
    有することを特徴とする演算プロセッサ。
  3. 【請求項3】 第1の命令列中にn個のデータのロード
    動作の終了後に前記n個のデータを使用して実行すべき
    ターゲット命令を含んでいるときには、前記n個のデー
    タのそれぞれをロードするロード命令の実行時にそれぞ
    れ前記ターゲット命令のアドレスを含むトークンを外部
    に発行してメモリアクセス動作を起動すると共に前記第
    1の命令列の実行を続行し、その後に前記ターゲット命
    令の直前で前記第1の命令列の実行を中断して他の命令
    列実行に移り、前記メモリアクセス動作を終了して前記
    ターゲット命令に必要なデータを有する入力トークンの
    数を計数し、前記計数の結果がnになったときには前記
    第1の命令列の実行を前記入力トークンに含まれる前記
    ターゲット命令のアドレスにより前記ターゲット命令か
    ら再開することを特徴とする請求項1記載のデータロー
    ド方法。
  4. 【請求項4】 ロード命令実行時にはそのターゲット命
    令の代わりにロード命令とターゲット命令のあいだのい
    ずれかの命令(これを再開命令と呼ぶ)のアドレスを含
    むトークンを外部に発行してメモリアクセス動作を起動
    し、その後前記再開命令の直前でその命令列の実行を中
    断し、前記再開命令のアドレスを持つトークンがあらか
    じめ定められた回数入力されたときに前記トークン中に
    含まれるアドレスにより前記再開命令から再開可能とす
    ることを特徴とする請求項3記載のデータロード方法。
  5. 【請求項5】 命令列の中に、命令実行に2個のデータ
    を必要とする命令に対して複数のロード命令とそれぞれ
    のターゲット命令が存在する場合に、全てのロード命令
    について、第1のロード命令実行時には、前記第1のロ
    ード命令とそのターゲットである第1のターゲット命令
    との間に他のロード命令がないときには前記第1のロー
    ド命令は前記第1のターゲット命令を再開命令とし、他
    のロード命令が存在しかつ前記第1のロード命令に最も
    近いロード命令が別の第2のターゲット命令を持つ第2
    のロード命令であるときには前記第1のロード命令は前
    記第2のロード命令を再開命令とし、他のロード命令が
    存在しかつ前記第1のロード命令に最も近いロード命令
    が同じ前記第1のターゲット命令を持つ第3のロード命
    令であるときには前記第1のロード命令は前記第3のロ
    ード命令の再開命令と同じ命令をその再開命令とし、全
    ての命令について、ある命令がいずれかのロード命令の
    再開命令になっているときにはその直前で前記ある命令
    の属する命令列の実行を中断し、前記ある命令をその再
    開命令とする前記ロード命令が2個あるときにはその再
    開命令を持つトークンが2個到着したときに前記ある命
    令からそれの属する命令列を再開可能とすることを特徴
    とする請求項4記載のデータロード方法。
JP18327692A 1992-07-10 1992-07-10 データロード方法及びそれを用いた演算プロセッサ Expired - Lifetime JP2853460B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP18327692A JP2853460B2 (ja) 1992-07-10 1992-07-10 データロード方法及びそれを用いた演算プロセッサ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP18327692A JP2853460B2 (ja) 1992-07-10 1992-07-10 データロード方法及びそれを用いた演算プロセッサ

Publications (2)

Publication Number Publication Date
JPH0628187A JPH0628187A (ja) 1994-02-04
JP2853460B2 true JP2853460B2 (ja) 1999-02-03

Family

ID=16132827

Family Applications (1)

Application Number Title Priority Date Filing Date
JP18327692A Expired - Lifetime JP2853460B2 (ja) 1992-07-10 1992-07-10 データロード方法及びそれを用いた演算プロセッサ

Country Status (1)

Country Link
JP (1) JP2853460B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2483903A (en) * 2010-09-24 2012-03-28 Advanced Risc Mach Ltd Instruction which specifies the type of the next instruction to be executed

Also Published As

Publication number Publication date
JPH0628187A (ja) 1994-02-04

Similar Documents

Publication Publication Date Title
US5353418A (en) System storing thread descriptor identifying one of plural threads of computation in storage only when all data for operating on thread is ready and independently of resultant imperative processing of thread
JP3804941B2 (ja) 命令フェッチ制御装置
JP2746549B2 (ja) コンピュータシステム及びその動作方法
US7281250B2 (en) Multi-thread execution method and parallel processor system
JPH02224025A (ja) コンピューターシステム
WO1990014629A2 (en) Parallel multithreaded data processing system
JP2560988B2 (ja) 情報処理装置および処理方法
EP0357188B1 (en) Pipelined processor
JPH11212788A (ja) プロセッサのデータ供給装置
JP2004145485A (ja) 命令の投機的実行制御装置およびその方法
JPH0778088A (ja) プロセッサシステムで複数個の割込を処理するための装置、プロセッサシステムで複数個の割込トリガからの割込に応動する方法、ならびに複数個のプロセッサ間の同時タスクのための方法および装置
EP0655679A2 (en) Method and apparatus for controlling instruction in pipeline processor
US20030120882A1 (en) Apparatus and method for exiting from a software pipeline loop procedure in a digital signal processor
EP0742517B1 (en) A program translating apparatus and a processor which achieve high-speed execution of subroutine branch instructions
JPH09134287A (ja) マイクロプロセッサ及びそのロードアドレス予想方法
JP2853460B2 (ja) データロード方法及びそれを用いた演算プロセッサ
EP0279953A2 (en) Computer system having mixed macrocode and microcode instruction execution
JP2001060152A (ja) 分岐予測を抑止する情報処理装置および方法
JP2005521937A (ja) コンピュータオペレーティングシステムにおけるコンテキスト切り替え方法及び装置
JP2853458B2 (ja) 命令列切り替え方法及びそれを用いた演算プロセッサ
JPH0877021A (ja) 割込処理装置および方法
JP2927102B2 (ja) 命令列切り替え方法及びそれを用いた演算プロセッサ
CN113407240B (zh) 一种C64x+ DSP软件流水循环缓冲机制的模拟方法
JPH10340197A (ja) キャッシング制御方法及びマイクロコンピュータ
JP2001014161A (ja) プログラマブルコントローラ

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 19981020