JPS63503176A - コンピュータにおける制御フローに関する改良 - Google Patents

コンピュータにおける制御フローに関する改良

Info

Publication number
JPS63503176A
JPS63503176A JP62501191A JP50119187A JPS63503176A JP S63503176 A JPS63503176 A JP S63503176A JP 62501191 A JP62501191 A JP 62501191A JP 50119187 A JP50119187 A JP 50119187A JP S63503176 A JPS63503176 A JP S63503176A
Authority
JP
Japan
Prior art keywords
instruction
control flow
block
program
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP62501191A
Other languages
English (en)
Inventor
ハリソン,ジョン ノーマン
モリス,デリック オーエン
マターズヘッド,クリストファー ジョン
ロバーツ,キース ダンカン
Original Assignee
ザ ブリテイッシュ ピトローリアム コンパニー ピー.エル.シー.
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 ザ ブリテイッシュ ピトローリアム コンパニー ピー.エル.シー. filed Critical ザ ブリテイッシュ ピトローリアム コンパニー ピー.エル.シー.
Publication of JPS63503176A publication Critical patent/JPS63503176A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるため要約のデータは記録されません。

Description

【発明の詳細な説明】 コンピュータにおける制御フローに関する改良本発明は、少なくとも2つのプロ セッサを備えたコンピュータにおける制御フローの改良に関する。
1つのプロセッサを設けたコンピュータの場合、プログラム内の制御フローは、 通常プロセッサに送られる単一の命令ストリーム内にデータ操作命令を点在させ た制御フロー命令を実行するプロセッサより得られる。今日、演算速度を速くす るために、1つ以上のプロセッサを備えたコンピュータが知られている。そのう ちの1つは、(1)複数の独立した処理要素と(2)処理要素同士を調整してそ れ自体が制御と調整機能の実行に使用されるプロセッサを備えるコントローラと を設けた演算プロセッサより成る。かかるコンピュータは、米国特許第4101 960号と例えば「個別データフローアーキテクチャ:アーキテクチャ コンセ プトJ (IEEEコンピュータのトランザクション、1983年5月)中でレ キュアとマクグローの両氏によって開示されている通りである。前記コンピュー タにおいて、制御フロー命令と演算プロセッサに対する命令とを共に含むプログ ラムブロックは、まずコントローラのプロセッサに送られてそこで制御フロー命 令はコントローラにより抜き出されて実行され、その後データ処理命令が演算プ ロセッサへ送られる。
機械語コードやアセンブリ言語よりも従来の高水準言語でコンピュータをプログ ラムできることが望ましい、しかしながら、多くのマルチプロセッサコンピュー タは標準的な高水準言語ではプログラムネ可能である。レキュアとマクグロー両 氏による論文は高水準言語を編集する問題について論じてイル、シカシナがら、 両氏により提案された!類のコンピュータアーキテクチャは、その上で効率的に 実行可能なプログラムのタイプが制限されている。
それ故、本発明の目的は、高水準言語で書かれたプログラムを1つ以上のプロセ ッサを有するコンピュータで使用できる方法を改良することである。
従って、本発明は、 (1) 演算プロセッサ、 (21前記波K 7’ロセツサに接続したコントローラ、(3) 制御フロー命 令と演算命令とが互いに混ざり合ったソースコードの表示を受けとる手段、 (4) 前記ソースコードの表示から (al 何れの命令ブロックも5ESEブロツクであるような一連のブロックか ら成る演算プロセッサプログラムと、(blsEsEブロックが演算プロセッサ により実行される順序を制御するための制御フロープログラムと、を生成するた めのコンパイル機、 +51 (i )前記プログラムをコントローラ内へ入力するためのプログラム 入力手段、 (ii )制御フロープログラムを実行するための制御フロープロセンサ、およ び (iii )制御フロープロセッサの制御下に前記5ESEブロツクを演算プロ セッサへ移送するための手段、とから成るコントローラ、 とから構成されるコンピュータを提供するものである。
本発明をもう一つの面から見ると、少なくとも2つのプロセンサを有するコンピ ュータを操作するプロセスは、+11 制御フロー命令と演算命令とが互いに混 ざり合ったソースコードの表示を2つの分離したプログラム、すなわち、fal  命令ブロックが5ESEブロツクであるような演算プログラム、および (b)SESE命令が演算プロセッサにより実行される順序を制御するための制 御フロープログラムに変換し、− (2) 制御フロープロセッサ上で制御フロープログラムを実行し、 (3)演算プロセッサで演算プログラムを実行し、(4)制御フロープロセッサ 内で実行されるプログラムに従って演算プログラムのフローを変更する、ことよ り構成される。
前記の“プロセッサ”という用語は、特定の処理操作を遂行するために使用され る構造全体を指すために、コンピュータの設計と構築の当業者によって使用され ている。該用語は、また構造全体で特定の処理ステップを遂行する装置を指すた めにも使用される。かくして、例えば“アレイプロセッサ”とはデータ配列の処 理を遂行する構造ということになる。アレイプロセッサは、複数の独立した処理 要素より構成することができる。それぞれの処理要素は、メモリと単一の論理演 算回路(A L U)を有する“プロセッサ”とから成る。しかしながら、当業 者は文脈より“プロセッサ“という用語が所定の場合に使用される時の意味で容 易に理解するであろう。
演算プロセッサは、2進数で演算を実行することにより数値問題に対する解を与 えることができる。また、同様にして、テキスト操作の一部としてアルファベッ ト文字のコードを表わす2進数で演算を行うこともできる。
” 5ESE”ブロックは、コンパイラの設計に携わっているものには周知の用 語である0本願中に使用する“5ESE”ブロックは、1つの入口点と1つの出 口点とを有し、該ブロック内に制御のシーケンシャルフローを有している。すな わち、ブロック内には、ループもジャンプもサブルーチンの呼出しも存在しない 。
高水準言語で提示されるソースプログラムは、種々の形で生成させることができ る。一般的にいって、高水準言語内で使用される記号を表わす英数字は、一定の 形の記憶媒体、例えば磁気ディスク上に格納されたコードに変換されることにな る。その後、このコードは記憶媒体より抽出しコンパイルコンパイル機は、コン パイル処理の高速化のために無視し得るものであれば専用機となりうる。しかし ながら、一般にコンパイル機の機能は、コンパイラプログラムの制御下に汎用コ ンピュータによって与えられることになる。コンパイラの設計法に関しては、今 日、広範な文献が存在し、所定の高水準言語のためのコンパイラ、例えば字句解 析機、構文解析機、コード生成機の如きものを設計するための通常のエレメント がよく知られている。
本発明で使用するためのコンパイル機の特に望ましい構成は、以下の特徴を備え ている。
(11コンパイル機は、高水準言語で表わされたソースプログラムを入力と、し て受取る。
(2) 前記ソースプログラムは、字句、構文および意味を解析されて、標準技 法を用いたソースプログラムを表わす中間的な形がつくりだされる。
(3)前記中間の形は一般に“オプティマイ:4y(最適化機)”として知られ るものに移送され、そこで標準技法を用いてさらに“ペイシックブロック(基本 ブロック)”が検出される。これらの基本ブロックは、次いで単一人口、単一出 口(S E S E)ブロックに変形される。制御フロー命令は、基本ブロック から5ESEブロツクへ変形される中で識別される。
(413ESF、ブロックは、コード生成機へ移送され、演算プロセッサプログ ラムを生成し出力する。
(5)制御フロー命令がコード生成機に移送され、制御フロープログラムを生成 し出力する。
コンパイル機により性成された2つの出力プログラムは、制御フロープロセンサ と演算プロセッサ内で直接実行できるようなものでよい、しかしながら、何れか 所定のプロセッサでも実行できない汎用プログラムコードではあるが、任意の所 定のプロセッサ用のコードに容易に変換できるような中間コードを生成させるこ とが好ましいかもしれない、このことによって、単一のコンパイル機を種々の異 なるプロセッサに対して使用することが可能になる。
コンパイラの設計と使用用語についての詳細は、「コンパイラ段重の原理」アル フレンド ヴイ、エイホ、ジエフリーディ、ウルマン、アディソンーウエズリイ 著、1977年と、「ディジタルコンピュータ用のコンパイラ構造」ディピント  グリース、ウィリー著、1971年および「コンパイラの理解と書き方」リチ ャード ボーナンド、マクミラン著、1979年を参照されたい、基本ブロック を論じたものが、以上の本文中箱412−413頁(エイホ、ウルマン)、第2 56頁(グリース)、および第160頁(ボーナフト)中に見出される。エイホ とウルマンは、第412−413iテ基本ブロック検出のためのアルゴリズムを 規定している。
2つの出力プログラムは、コンパイル機からコントローラへ直接供給することが できる。しかしながら、出力プログラムをコントローラへ供給する前に、この出 力プログラムを一定の形式の中間記憶装置に記憶することが、一般的に望ましい であろう。
ソースプログラムを供給するための手段とコンパイル機とは、コントローラと演 算プロセッサに物理的に隣接していることが一般的にいって好都合であるが、そ れらが適当な通信リンクにより接続される限り、幅広(隔たった位置に配置する ことも可能である。
先に示した如く、高水準言語プログラムは、制御フロープロセッサと演算プロセ ッサとによって直接実行可能な別個の機械語コードプログラムへコンパイルして もよい、しかしながら、コンバイリングにより得られる別個のプログラムは、中 間コードもしくはアセンブリ言語の形をとっても差支えない、それぞれのプログ ラムは、その後順次機械語コードへ変換され、プロセッサ上で適当なアセンブラ によって実行される。アセンブラの設定は、当業者のよく知るところである。
制御フロープロセッサのためにコンパイルされるプログラムがアセンブラプログ ラムである場合には、該プログラムは次のフォーマットの命令を含むことができ る。すなわち、個々の命令を一義的に識別するための命令ラベル、5ESEブロ ツクを演算プロセッサへ移送する命令形式の識別子、演算プロセッサへ移送され る5ESEブロックを識別するプロンク識別子フィールド、および制御フロープ ロセッサで実行される少なくとも一つの連続命令の命令ラベルである。
命令を含むことになろう、かくして、例えば、プログラムは以下のフォーマット を有する命令によって終了させることができる。すなわち、命令を一義的にiΔ 別するための命令ラベルと、制御フロープログラムの実行を終了させる命令形式 の識別子とである。
演算プロセッサは、演算プロセッサにより実行されるプログラム中のテスト条件 が満たされたかどうかを制御フロープロセッサに表示するための手段を備えてい ることが望ましい。
このような場合、5ESEブロツクが演算プロセッサに移送されることにより生 じる命令形式の識別子を含む制御フロープロセッサのアセンブリプログラム中の 命令は、2つの相異なる命令ラベルに従う、これらのうちの一つは、5ESEブ ロツク内のテスト条件が満たされた場合に、制御フロープロセッサにより実行さ れる次の命令を識別するための命令ラベルである。他方は、テスト条件が満たさ れていない場合に、制御フロープロセッサにより実行される異なる命令の命令ラ ベルである。
制御フロープロセッサにより実行される機械語コードプログラムは、制御フロー プログラムを格納するメモリのアドレス置換した命令形式の識別子に従うラベル を有することになろう、前記識別子は、命令ラベルの代りに命令を識別すること になろう。
種々の5ESE命令ブロツクのうちの何れが演算プロセッサに移送されるべきか を識別するブロックムロ割子フィールドは、アセンブル中にメモリアドレスに変 換されるラベルで差支えない、5ESEブロツクは、制御フロープログラムの実 行を開始する前に、独立のアドレス可能なメモリロケーションを有する命令メモ リ内に格納し、5ESEブロツク識別子がブロックの長さもしくはその最終アド レスと共に5ESEブロツクの格納が開始されるメモリロケーションのアドレス となることが望ましい。
コンパイル動作の示範として、高水準言語で表わしたプログラムの一例が仮想的 スタックに基づいた機械のための“擬似”アセンブラ言語で同一プログラムに変 換されることになろう、基本ブロックおよび次の5BSEブロツクおよび制御フ ロー命令は、擬似機械言語プログラム中で識別され、これは出願人の係属出願( ケース6147/6326)中に開示した形式のコンピュータによる使用に通し た形式のプログラム表示に変換されることになろう。
以下に説明する簡単なプログラムは、制御フロープロセッサと単一の演算プロセ ッサとから成るコンピュータに使用することができよう、従来、簡単なデモンス トレーションプログラムは、基本原理を明確に提示して、複数の処理要素と共に 並行処理を行うコンピュータの動作の説明を試みる場合に必要となる複雑な説明 の要求を回避するために用いられてきた。デモンストレーションプログラムは、 簡単でありで、サブルーチンや手続きを呼出す必要がない、しかしながら、制御 フロープログラム中で、サブルーチンを活用することができ、このことは如何に して行うことができるかについての注記は、以下の本文中に若干組込んである。
ソースプログラム用の高水準言語表記法としてフォートラン(FORTRAN) を選択することは自由である。擬似機械言語で等測的なプログラムへ変換可能な プログラムを書き表わす際に使用できる高水準言語であれば、何れも選択するこ とができるであろう。
高水準言語フォートランでプログラム例を以下に示す、フォートランの形式と意 味は、ANS IX3.9−1978の「アメリカ規格プログラミング言語フォ ートラン」中に明らかにされている。このプログラム例は、フィボナフチ数列中 の最初の10語と開始値1.1との和を演算する。
PROGRAM FIBONA CPROGRAM TOCALCULATE T)IE SUM OF THE  FIRST TENFIBONACCI NLIMBER3−CTHE RE SULT Is )IELD IN VARIABLE ANSWERINTE GERN1.N2.NE讐、 SUM、 ANSWEI?1N2= 1SU = N1+ N2 Do 101 =3.1O NEW = N1+ N2 N1 =N2 N2 =NEW SIIM = SUM 十NEW 10 C0NTIN[lE ANSWER二SUM ND 同じプログラムの擬似アセンブラ言語表示を以下に示す。
擬似アセンブラ言語は、コンパイラがソースプログラムの字句、構文および意味 を解析した結果生成させることができる。
以上の解析を実行するための技法はよく知られており、コンパイラに関するどの 参考書にも見出すことができる。生成した擬似アセンブラ言語は、仮想的スタッ クをベースとした機械用のものである。スタックをベース(もしくはゼロアドレ ス)とした機械を徹底的に論じたものとしては、「コンピュータアーキテクチャ 序説」、サイエンス リサーチ アソシ1−ツ71 1975年、第7章、「ス タックコンピュータ」。
ウィリアム エム、マツキーマン著、第281.−317頁を参照されたい。擬 似アセンブラ命令の右側の注記は命令の使用法を説明したものである。
基本ブロックを検出およびマーキングした前記リストの擬似アセンブラ言語を以 下に示す、この基本ブロックの検出は、「コンパイラ設計の原理」アルフレンド  ヴイ、エイホ、ジェフリー ディー、ウルマン、アディソンーウエズリー著。
1977年、第412−413頁に述べられた用語法と仮想的スタックに基づい た機械と一致するように修正したアルゴリズムを使用して行う。このアルゴリズ ムは以下の通りである。
入カニゼロアドレス命令のシーケンス。
出カニそれぞれのゼロアドレス命令を正確に1ブロツク中に有する基本ブロック のリスト。
方法=1.コンパイラは、まず基本ブロックの最初の命令群である先導部の組を 決定する。使用される規則は以下の通りである。
i)最初の命令は先導部である。
ii)条件付きもしくは無条件分岐命令の目標であるような命令は何れも先導部 である。
iii )直ちに条件付き分岐命令に従う命令は何れも先導部である。
2、それぞれの先導部毎にその基本ブロックを構成する。前記基本ブロックは、 先導部および次の先導部もしくはプログラム終了、但しこれら次の先導部とプロ グラム終了は含まない、に至る全命令より構成される。1ブロツク内に配置され ない命令は、何れも決して実行されることはあり得ないから、必要であれば除去 してもよい。
前記アルゴリズムは、ステップ1内に追加的なサブステップを含めることによっ て、サブルーチンを処理すべく修正することができる。
iv)サブルーチン呼出し命令の次に来る命令は先導部である。
全アルゴリズムは、独立してそれぞれのサブルーチンに応用することができる。
基本ブロックをマーキングした擬似コードPUSH1規則1 (i)による先導 部POP NI PUSHI POP N2 PUSHN2 PUSHNI DD POP StJM 基本ブロック磁I PUSH10 POP I?E PUSHI POP I?5 PUSH3 UBR Ll:PUSHI 規則1(ii)による先導部PUSHI?S DD POP I 基本ブロック11h2 PUSHI PUSHI?E 5TLT BRCL2 PUSHN2 規則1(iii)による先導部PUSHNI DD POP NEW PLISHN2 POP NI PUSI NF、W 基本ブロック階3POP N2 PUSHNEW PUSHStJM DD POP SUM L2:PUSHSUM 基本ブロック隘4規則1(ii)による先導部 P OP ANSWER 前記列挙した基本ブロックより派生する5ESEブロツクを“5ESE BLO CKSゝの見出しの下に以下に列挙する。基本ブロックより派生する制御フロー 命令は“制御フロー命令”の見出しの下に以下に列挙する。
コントローラと複数の処理要素とから成るマルチプロセッサコンピュータは、制 御フローと演算プログラムを作成する手続きを説明した後、以下に説明する。処 理要素は、それらが実行中のプログラム内のテスト条件が全ての処理要素により 満たされるかどうかに応じて、基準値をコントローラへ通信することができる。
基準値は、処理要素による投票の結果と見なすことができる。投票は、テスト条 件が全ての処理要素により満たされていれば真であり、満たされていなければ誤 すである。コンパイルプロセスの説明において、以下に述べる投票ごと投票誤り の命令を使用することは、マルチプロセッサコンピュータの解説中に示されてい る通りである。
投票真と投票誤りの命令の使用法は、以下の詳細な説明に示されているが、その 場合演算プロセッサにより生成される信号(投票信号)が、コントローラへ戻さ れプログラムの未決定フローを決定するために使用される。この信号は、特定の 実施例でのプログラムフローが全ての処理要素について同一の信号(全部一致投 票)を与えるかどうかにかかっているため、“投票”信号として説明される。
制御フロー命令は、次のフォーマットを有する。
LI BRD(id)→L21L3 但し、Llは命令ラベル。
idは5ESEブロツク識別子フイールド。
L2は投票誤り命令ラベルフィールド。
L3は投票真命令ラベルフィールドである。
もし投票真命令ラベルフィールドと先行するバーが抜けていれば、投票真命令ラ ベルフィールドが投票誤り命令ラベルフィールドと同一であると想定される。投 票真命令ラベルフィールドと投票誤り命令ラベルフィールドとは、他の定義され た命令ラベルとの照会を行う、その他、実行されるべき第1の制御フロー命令の ラベルは“大ロー”後に見出され、制御フローの実行は“出口”に続く命令ラベ ルで終了する。
基本ブロックのリストから5ESEブロツクおよび制御フロー命令を引き出すた めに、コンパイラにより使用されるアルゴリズムは、次の通りである。
入カニそれぞれのゼロアドレスの命令を正確に1ブロツク内に有する基本ブロッ クのリスト。
出カニ 5ESEブロツクの実行順序で決定する単一人口単一出口(SESE) のブロックのリストと制御フロー命令リスト。
方法;1)唯一つのブロック識別子を各基本ブロックへ付与し、 2)各基本ブロックについてブロック開始点に“ブロックスタート”とブロック 識別子とをマーキングしてブロックの終りに1プロツ乞エンド”とブロック識別 子とをマーキングし、 3)各基本ブロックにつき i)一義的命令ラベルと、 ii)基本ブロックのブロック識別子にセットされた5ESEブロツク識別子フ イールドと、iii )まだ決定されていない投票誤り命令ラベルフィールドと 、投票真命令ラベルフィールドと、を有する一つの制御フロー命令を生成させ、 4)制御フロープログラム開始命令、例えば“入口−”後に、第1基本ブロック の基本ブロック識別子にセットされた5ESEブロツク識別子を有する制御フロ ー命令の命令ラベルに対して照会することによって、制御フロー人口点を生成さ せ、 5)追加的な一義的命令ラベルを作り出すことによって制御フロー出口点を生成 させ、それを制御フロープログラム終了命令、例えば“出口”によって追跡し、 6)前記ステップ3において生成した各制御フロー命令につき i)現在制御フロー命令中の5ESEブロツク識別子フイールドにより照会され た基本ブロック中の最終命令を識別し、 もしその命令が条件付分岐命令BRCであればステップviへ移行し、 もし命令が無条件分岐命令BRであればステップVへ移行し、 その他の場合にはステップ11へ移行し、ii)もし現在制御フロー命令中の5 ESEブロツク識別子フイールドにより照会される基本ブロックが、基本ブロッ クの入力リスト中の最後の基本ブロックであれば、ステップivへ移行し、その 他の場合にはステップjIiへ移行し、iii )次の基本ブロックの基本ブロ ック識別子にセットされた5ESEブロック識別子フイールドにより、制御フロ ー命令を見出しく次の基本ブロックは現在基本ブロックのすぐ次のプロ7りであ り、この現在基本ブロックは、現在制御フロー命令中の5ESEブロツク識別子 によって照会されるブロックであり)、現在制御フロー命令の投票誤り命令ラベ ルフィールド中に見出された制御フロー命令の命令ラベルを記入し、 ステップviへ移行し、 iv)現在制御フロー命令の投票誤り命令ラベルフィールド内の制御フロー出口 点の命令ラベルを記入し、 ステップviへ移行し、 ■)分岐命令の転送ラベルを格納する基本プロ、りの基本ブロック識別子にセッ トされた5ESEブロツク識別子フイールドにより制御フロー命令を見出し、現 在制御フロー命令の投票誤り命令ラベルフィールド中に見出された制御フロー命 令の命令ラベルを記入し、 ステップviへ移行し、 vi)条件付分岐命令前で、しかも先行するテスト命令後に、“投票”命令を加 え、分岐命令の転送ラベルを格納する基本ブロックの基本ブロック識別子にセッ トされた5ESEブロック識別子フイールドにより制御フロー命令を見出し、現 在制御フロー命令の投票真命令ラベルフィールド中に見出された制御フロー命令 の命令ラベルを記入し、ステップiiへ移行し、 vi)前記ステップ3で生成した次の制御フロー命令についてはステップiに復 帰し、 7)各基本ブロックにつき全ラベルと全ての条件付および無条件分岐命令を削除 する。
前記プロセスは、所望に応じてサブルーチン呼出しおよびリターンを処理するた めに容易に拡張することができる。
PUSH1 POP N2 F’USHN2 PUSHNI DD POP SUM PUSH10 UBR PUSH175 PUSHI ?E block end (c2) block 5tart (cJ) PUSHN2 PUSHNl DD POP NEW PUSHN2 POP NI PUSHNEW POP N2 PUSHNEW PUSHSUM DD POP SUM block end (cJ) block 5tart (cJ) PUSHSUM P OP ANSWEI? block end (cJ) LI BRD (c 1) −L2 L2 BRD(c2) −L3 l L4L3 BRD (cJ) −L2 L4 BRD(cJ) L5 L5 出口 制御フロープログラムと演算命令プログラムは、(必要に応じ)各プロセッサに より使用される機械語コードに変換された後、制御フローメモリと命令メモリ内 に便宜上格納し、そこからそれらを各プロセッサにディスパッチングすることが できる。
前記の制御フローメモリと演算命令メモリとは、制御フロープロセッサと演算プ ロセッサ用の命令の個別のシーケンスを格納するメモリである。それらは、制御 フロー命令と演算命令とを共に格納する命令のブロックから取り除いた制御フロ ー命令を一時的に格納するプロセッサ内のレジスタと区別される。
前記の本発明の説明は、一つの制御フロープロセッサと1つの演算処理要素とか ら成るシステムへの応用について行った。しかしながら、本発明は、複数の処理 要素から成る演算プロセッサにおいて、並行演算を行うシステムに適用した場合 、特に有利である。SIMDもしくはロック−ステップモードで動作する複数の 独立した処理要素から成るコンピュータは、周知のところである。かかるコンピ ュータシステムは、例えばストーン外部の「コンピュータアーキテクチャ序説。
ニスアールエイ リサーチ アソシェイッ社、1975年、第327〜354頁 に説明されている通りである。
本発明は、出願人の係属出願(ケース6147/6326)中に開示したコンピ ュータを使用する場合に、特に好適である。かかるコンピュータと共に本発明の 実施につき図面を参照して説明する。
第1図は、ホストコンピュータがコントローラに接続され、コント、ローラは複 数の処理要素に接続された本発明のマルチプロセッサコンピュータの線図、 第2図は、第1図に示すものの変形例であって3つの処理要素のみを選択的に示 した線図、そして第3図は、コントローラの線図である。
第1図において、ホストコンピュータAは、コントローラBに接続され、コント ローラBはCで表示した複数の処理要素に接続される。ホストコンピュータは、 システム全体の操作と外部との通信に関与する。ホストコンピュータAは、ホス トの操作を制御するプロセッサDを備え、ディスクファイルEから導入されたコ ンパイラプログラムによってコンパイラとして動作するように計画することがで きる。ディスクファイルFからのコンパイラソースコードとしての動作が2つの 別個のプログラムに変換された場合、演算プログラムと制御フロープログラムは 、その後ディスクファイルGおよびHに格納される。マルチプロセッサコンピュ ータの動作に際して、これらのプログラムはディスクファイルからホストコンピ ュータAを介してコントローラB内のメモリに送られる。
コンパイルプロセスは、第1図に関して前述した通りである。さらに、コンピュ ータの操作を第2図および第3図について説明する。
コンピュータは、一般的に、所定の長さの2進桁(ビット)の群(ワード)によ って動作する。一つの命令は、幾つかのワードを採用することにより、完全な一 つの命令のディスパンチングがメモリ内の個々のアドレスに格納された幾つかの ワードを連続的にディスパンチングすることを伴う。一つの命令のディスパンチ ングに関する説明においては、個々のワードのディスパンチングについて述べる ことであり、個々のワードは全命令または命令の一部を含むことがある。
第2図は、ホスト通信バス3により、ホストコンピュータ2 (第1図のAに相 当する)に接続されたSIMDコンピコンピュータ11図の要素B、Cに相当す る)を示す。コントローラ4は、複数の処理要素6に接続され、わかり易いよう にそのうち3つだけを示しである。
命令は、演算命令バス5により処理要素に発することができる。処理要素は、コ ントローラに接続された投票信号線により制御のフローに影響を及ぼすことがで きる。
第3図において、制御フロープロセッサ8は、バス10に沿って制御フローメモ リ9から制御フローに関する命令を取出す。メモリ9は、コントローラ内のメモ リであり、このメモリには第1図に関して説明したように(バス3により)、制 御フロープログラムがホストコンピュータから移送される。
制御フロープロセッサ8は、演算命令のブロックを選択して処理要素により実行 させるが、この選択は制御フロー命令に従って行われる。命令転送手段11は、 制御フロープロセッサによりバス12に沿ってアドレス情報が提供される。制御 信号は、信号線13により制御フロープロセッサ8に送り戻すことができる。命 令転送手段11は、命令メモリ14に対しバス15により個々の演算命令のアド レスを供給する。命令メモリ14は、コンパイラにより作成されバス3によりコ ントローラへ送られる演算プログラムを格納するメモリである。
演算命令は、演算命令バス5を介して処理要素へ送られる。
命令転送手段11は、演算命令アドレスのシーケンスを発生させることによって 、命令ブロック全体をシーケンシャルに処理要素へ発する。同報通信手段16は 、命令転送手段が次の演算命令アドレスに順次変化する時間を制御する。同報通 信手段16は、処理要素から一般的に17で示した制御線に沿って、送られる共 通制御信号に応答し、これによって全ての処理要素がそれを受領する準備が整う まで、次の演算命令がディスパンチングされないようにする。制御線18は、制 御信号を命令転送手段と同報通信手段との間で交換することを可能にする。
制御フロープロセッサは、制御フローメモリから制御フロー命令を取出す、制御 フロープログラムは、制御フロー命令ポインタにより制御フロープロセッサが従 う制御フロー命令の連係リストによって表示される。制御フロー命令は、処理要 素により実行される演算命令のブロックを識別することができる。かかるブロッ クは、命令メモリ内のそのアドレスとその長さくブロック内の演算命令の数)に より識別される。
制御フロープロセッサは、ブロック識別情報を命令転送手段へ送り、該手段はブ ロック内の最初の演算命令のアドレスで命令メモリにアドレスする。同報通信手 段が全ての処理要素につき、次の演算命令を受取る準備が整ったと判断すると、 命令転送手段はそれが命令メモリに供給しているアドレスをインクリメントする 。このことは、1つの命令ブロックが命令メモリ内の連続するロケーションに格 納されていることから、ブロック内の次の演算命令を選択する効果を育する。命 令転送手段は、同時にまた、未だディスパンチングされていない演算命令の数を 格納するレジスタをデクリメントするが、このレジスタはブロックの長さを初期 ロードしている。このレジスタがゼロ値を格納する場合には、ブロック全体がデ ィスパンチングされて、命令転送手段は制御フロープロセッサに終了の信号を送 る。
制御フロー命令の幾つかは、演算命令を照会しないものもあり、それらは制御フ ロープロセッサにより完全に処理される。サブルーチン呼出しとリターン操作は 、このように制御フロープロセッサ内のスタックを用いて処理される。
制御フロー命令は、2つの可能な連続命令を有することがあり、その場合にはそ の2つのうちの1つを選択する必要がある。制御フロープロセッサは、処理要素 から送信される投票信号の値に従って、2つの連続命令のうちの1つを選択する 。それぞれの処理要素は、1つのピント投票レジスタを有し、同しジスクを真値 または誤り値にセットすることができる。レジスタのセツティングは、コンパイ ル作業と関連して上述した投票命令によって実行される。投票信号は、これら全 ての投票信号の論理積であり、換言すれば、投票信号はもし全ての投票レジスタ が真でなければ誤りとなる。このような手段によって、データに依存した制御フ ローが達成される。
国際調査報告 ANNEX To i’HE INTERNATIONAL 5EARCRRE PORT ON

Claims (1)

  1. 【特許請求の範囲】 1.(1)演算プロセッサ、 (2)前記演算プロセッサにリンクされたコントローラ、(3)制御フロー命令 と演算命令とが互いに混合したソースコードの表示を受け取るための手段、(4 )前記ソースコードの表示から (a)どの命令ブロックもSESEブロックであるような一連のブロックから成 る演算プロセッサ命令/データプログラムと、 (b)SESEブロックが演算プロセッサにより実行される順序を制御する制御 フロープログラムとを生成させるためのコンパイル機、 (5)(i)前記プログラムをコントローラ内に入力するためのプログラム入力 手段と、 (ii)制御フロープログラムを実行するための制御フロープロセッサと、 (iii)制御フロープロセッサの制御の下に演算プロセッサプログラムを演算 プロセッサへ移送するための手段と からなるコントローラ、 によって構成されるコンピュータ。 2.コントローラは、演算プロセッサプログラムを格納する命令メモリと、制御 フロープログラムを格納するための制御フローメモリとを有し、前記両メモリが プログラム入力手段へリンクされる請求の範囲第1項記載のコンピュータ。 3.演算プロセッサは、SIMDモードで操作可能な複数の処理要素を備える請 求の範囲第1項または第2項記載のコンピュータ。 4(1)制御フロー命令と演算命令とが互いに混合されたソースコードの表示を 、2つの別個のプログラムすなわち、 (a)命令ブロックがSESEブロックであるような演算プログラムと、 (b)SESE命令ブロックが演算プロセッサにより実行される順序を制御する ための制御フロープログラムと に変換し、 (2)制御ッロープロセッサで制御フロープログラムを実行し、 (3)演算プロセッサで演算プログラムを実行し、(4)制御フロープロセッサ で実行されるプログラムに従って演算プログラム中のッローを変更することから 成る少なくとも2つのプロセッサを備えるコンピュータ操作方式。 5.下記のフオーマットの命令、すなわち、個々の命令を一義的に識別するため の命令ラベルと、SESE命令/データブロックを演算プロセッサへ移送する命 令形式の識別子と、 演算プロセッサへ移送されるSESEブロックを識別するブロック識別子ッィー ルドと、 制御ッロープロセッサで実行されるべき少なくとも1つの連続命令の命令ラベル と、 から構成される制御フローアセンブラプログラムに対し、ソースコードの表示変 換を行うことからなる請求の範囲第4項記載のコンピュータ操作方法。 6.制御フロープログラムは、命令を一義的に識別するための命令ラベルと、制 御ッロープログラムの実行を終了させる命令形式の識別子とからなるフオーマッ トを有する命令により終了される請求の範囲第5項記載の方法。 7.演算プロセッサは、制御フロープロセッサに対して演算プロセッサにより実 行されるプログラム内のテスト条件が満たされているかどうかを表示するための 手段を備え、該手段がソースコードの表示を下記のフオーマットの命令、すなわ ち、 命令を一義的に識別するための命令ラベルと、SESEブロックを演算プロセッ サへ移送させるために生じる命令識別子と、 SESEブロックを演算プロセッサへ移送させるために、識別するブロック識別 子ッィールドと、SESEブロック内のテスト条件が満たされた場合に制御フロ ープロセッサにより実行される次の命令を識別するための命令ラベルと、 テスト条件が満たされない場合に制御フロープロセッサにより実行される異なる 命令の命令ラベルと、を有する制御フローアセンブラプログラムへ変換を行うこ とからなる請求の範囲第4項ないし第6項の何れかに記載の方法。 8.まずソースコードの表示を基本ブロックのリストへ変換し、基本ブロックの リストをSESEブロックのリストと制御ッロー命令のリストとに変換した後、 下記のステップ、すなわち、 1)唯一つのブロック識別子を各基本ブロックへ付与し、2)各基本ブロックに ついてブロック開始点に“ブロックスタート”とブロック識別子とをマーキング してブロックの終りに“ブロックエンド”とブロック識別子とをマーキングし、 3)各基本ブロックにつき i)一義的命令ラベルと、 ii)基本ブロックのブロック識別子にセットされたSESEブロック識別子フ ィールドと、 iii)未だ決定されていない投票誤り命令ラベルッィールドと投票真命令ラベ ルフィールドと、を有する1つの制御フロー命令を生成させ、4)制御フロープ ログラム開始命令後に、第1基本ブロックの基本ブロック識別子にセットされた SESEブロック識別子を有する制御フロー命令の命令ラベルに対して照会する ことによって、制御フロー入口点を生成させ、5)追加的な一義的命令ラベルを 作り出すことによって制御フロー出口点を生成させ、それを制御フロープログラ ム終了命令によって追跡し、 6)前記ステップ3において生成した各制御ッロー命令につき、 i)現在制御ッロー命令中のSESEブロック識別子ッィールドにより照会され た基本ブロック中の最終命令を識別し、 もしその命令が条件付分岐命令であれば、ステップviへ移行し、 もし命令が無条件分岐命令であればステップvへ移行し、 その他の場合にはステップiiへ移行し、ii)もし現在制御ッロー命令中のS ESEブロック識別子ッィールドにより照会される基本ブロックが、基本ブロッ クの入力リスト中の最後の基本ブロックであればステップivへ移行し、 その他の場合にはステップiiiへ移行し、lii)次の基本ブロックの基本ブ ロック識別子にセットされたSESEブロック識別子フィールドにより制御フロ ー命令を見出し、現在制御フロー命令の投票誤り命令ラベルフィールド中に見出 された制御フロー命令の命令ラベルを記入し、 ステップviiへ移行し、 iv)現在制御フロー命令の投票誤り命令ラベルッィールド内の制御フロー出口 点の命令ラベルを記入し、ステップviiへ移行し、 v)分岐命令の転送ラベルを格納する基本ブロックの基本ブロック識別子にセッ トされたSESEブロック識別子ッィールドにより制御ッロー命令を見出し、現 在制御フロー命令の投票誤り命令ラベルフィールド中に見出された制御フロー命 令の命令ラベルを記入し、ステップviiへ移行し、 vi)条件付分岐命令前で、しかも先行するテスト命令後に、“投票”命令を加 え、分岐命令の転送ラベルを格納する基本ブロックの基本ブロック識別子にセッ トされたSESEブロック識別子フィールドにより制御フロー命令を見出し、現 在制御フロー命令の投票真命令ラベルフィールド中に見出された制御フロー命令 の命令ラベルを記入し、 ステップliへ移行し、 vii)前記ステップ3で生成した次の制御フロー命令についてはステップ1に 復帰し、 7)各基本ブロックにつき全うベルと全ての条件付および無条件分岐命令を削除 する、 ことを実行することにより、SESEブロックの実行順序を決定し、これらのス テップを1つのコンピュータで実行して演算プログラムおよび制御フロープログ ラムを作成する請求の範囲第4項ないし第7項のいずれかに記載のコンピユータ 操作方法。
JP62501191A 1986-05-01 1987-02-06 コンピュータにおける制御フローに関する改良 Pending JPS63503176A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB868610658A GB8610658D0 (en) 1986-05-01 1986-05-01 Flow control
GB8610658 1986-05-01

Publications (1)

Publication Number Publication Date
JPS63503176A true JPS63503176A (ja) 1988-11-17

Family

ID=10597166

Family Applications (1)

Application Number Title Priority Date Filing Date
JP62501191A Pending JPS63503176A (ja) 1986-05-01 1987-02-06 コンピュータにおける制御フローに関する改良

Country Status (4)

Country Link
EP (1) EP0244928A1 (ja)
JP (1) JPS63503176A (ja)
GB (1) GB8610658D0 (ja)
WO (1) WO1987006736A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8717689D0 (en) * 1987-07-25 1987-09-03 British Petroleum Co Plc Computers
DE4314114A1 (de) * 1993-04-29 1994-11-03 Krupp Maschinentechnik Verfahren zum Auflegen eines gummierten Textilgewebestreifens auf eine Reifenaufbautrommel und Vorrichtung für die Durchführung des Verfahrens
TW525090B (en) * 2000-06-30 2003-03-21 Intel Corp Multi-entry threading method and apparatus for automatic and directive-guided parallelization of a source program

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS56127266A (en) * 1980-03-10 1981-10-05 Ibm Method of executing and controlling command stream

Also Published As

Publication number Publication date
WO1987006736A1 (en) 1987-11-05
EP0244928A1 (en) 1987-11-11
GB8610658D0 (en) 1986-06-04

Similar Documents

Publication Publication Date Title
Fisher Microcode compaction
US5499350A (en) Vector data processing system with instruction synchronization
GB1576000A (en) Multibus processor for increasing execution speed using a pipeline effect
JPH0695312B2 (ja) コンピュータプログラムを処理する方法およびシステム
EP0552816A2 (en) Processor to process tagged and untagged data
Haigh et al. Where code comes from: Architectures of automatic control from Babbage to algol
WO1989001203A1 (en) Mimd computer system
Forgie A time-and memory-sharing executive program for quick-response, on-line applications
CA2304609A1 (en) Autonomously cycling data processing architecture
JPS63503176A (ja) コンピュータにおける制御フローに関する改良
Knuth Runcible—algebraic translation on a limited computer
JPH02278424A (ja) 正規化装置
JPH0227709B2 (ja) Deetakudoseigyohoshiki
Clippinger FACT—A business compiler: Description and comparison with COBOL and commercial translator
Barton The macro assembler, SWAP: a general purpose interpretive processor
Skansholm C++ from the Beginning
Jackson The design and use of conventional programming languages
JP2729795B2 (ja) 並列計算機及びその制御方法
Fuller PDP-11 40E microprogramming reference manual
JPH01144124A (ja) コンピュータ装置
CN120255902A (zh) 一种基于dsp的机载软件编译过程的自动追溯方法
Noguez A standardized microprogram sequencing control with a push down storage
Ting Systems Guide to fig-FORTH
Foxley et al. The implementation of syntax analysis using ALGOL, and some mathematical applications
Frelich et al. A simulated micro-programmed computer utilizing the graphic display of an IBM 360