JPS6346856B2 - - Google Patents

Info

Publication number
JPS6346856B2
JPS6346856B2 JP57006721A JP672182A JPS6346856B2 JP S6346856 B2 JPS6346856 B2 JP S6346856B2 JP 57006721 A JP57006721 A JP 57006721A JP 672182 A JP672182 A JP 672182A JP S6346856 B2 JPS6346856 B2 JP S6346856B2
Authority
JP
Japan
Prior art keywords
task
return address
subroutine
storage means
return
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
Application number
JP57006721A
Other languages
English (en)
Other versions
JPS57147761A (en
Inventor
Robaato Kimu Dongusangu
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.)
YUNISHISU CORP
Original Assignee
YUNISHISU CORP
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 YUNISHISU CORP filed Critical YUNISHISU CORP
Publication of JPS57147761A publication Critical patent/JPS57147761A/ja
Publication of JPS6346856B2 publication Critical patent/JPS6346856B2/ja
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address

Description

【発明の詳細な説明】 共に譲渡されたアメリカ合衆国特許出願であ
る、1980年5月6日に出願されたアメリカ合衆国
特許出願連続番号147149号(USP4493019)で、
発明者がD.R.KimおよびJ.H.Mc Clintockである
「マイクロ命令タスキングを使用するパイプライ
ンされマイクロプログラムされたデイジタルデー
タプロセツサ(Pipelined Microprogrammed
Digital Data Processor Employing
Microinstruction Tasking)」、および、1980年
5月6日に出願されたアメリカ合衆国特許出願連
続番号第147251号(USP4384324)で、発明者が
D.R.KimおよびJ.H.Mc Clintockである「マイク
ロ命令レベルでのタスキングを使用するマイクロ
プログラムされたデイジタルデータ処理システム
(Microprogrammed Digital Data Processing
System Employing Tasking at a
Microinstruction Level)」には、この出願に関
係する内容が含まれている。
本願出願人の同時に出願され、共に譲渡された
出願である1981年2月4日に出願されたアメリカ
合衆国特許出願連続番号231553号
(USP4459659、特開昭57−143642)(本願と同日
付で出願した特許出願に対応)の「サブルーチン
制御回路(Subroutine Control Circuity)」もま
たこの出願に関係する。
この発明は、一般的に、デイジタルデータ処理
システムにおけるデータ処理動作を実行するため
の改善された手段と方法に関し、特に、マルチプ
ログラミングおよびマルチプロセツシング環境に
おけるサブルーチン動作の制御のための改善され
た手段と方法に関する。
前述した特許出願には、マイクロプログラムさ
れたデータ処理システムの実施例が開示されてお
り、それは、マイクロ命令レベルでのタスクのマ
イクロプログラミングおよびマイクロプロセツシ
ングの両方を利用するような方法でタスクを実行
する。この出願の1つの目的は、この種のシステ
ムにおけるサブルーチン動作を制御するための改
善された手段と方法を提供することである。
この発明のより一般的な目的は、データ処理シ
ステムにおける改善されたサブルーチン制御手段
および方法を提供することである。
この発明の付加的な目的は、サブルーチンエン
トリの多くのレベルを調節することができ、か
つ、多数の命令および/またはタスクの中でサブ
ルーチンを共用する、データ処理システムにおけ
る多相サブルーチン制御回路を提供することであ
る。
特定の好ましい実施例においては、この発明
は、前述した特許出願中に開示されたタイプのデ
ータ処理システムに組合せて用いるようにされて
おり、そこでは、マイクロ命令レベルでのマルチ
プログラミングおよびマルチプロセツシングを提
供するような方法で複数のタスクが同時に実行さ
れる。この発明の好ましい実施例においては、複
数の選択的にアクセス可能なスタツクを、各タス
クごとに1つずつ、対応するポインタレジスタと
一緒に使用することにより、特に有利なサブルー
チン制御能力が与えられている。また、リターン
アドレスが必要なときに即座に利用できるように
するために、各タスクの最新のリターンアドレス
を記憶するための比較的高速のアクセスレジスタ
が設けられている。動作は、サブルーチンエント
リの多数のレベルが各タスクごとに調節されるの
を可能にし、一方また、多くのタスクが同一のサ
ブルーチンを共有するのを可能にするような方法
で行なわれる。さらに、サブルーチン制御動作
は、マルチプログラミングおよびマルチプロセツ
シング環境において、複数の同時に実行している
タスクに対して多相サブルーチン制御を提供でき
るようにするために行なわれる。
この発明の特有の性質は、他の目的、特徴、利
点および用途はもちろんのこと、添付図面ととも
に以下の発明の詳細な説明から明らかとなろう。
図面の記号中同一番号および同一文字は同一要
素を表わす。
この記載の目的のために、この発明のサブルー
チン制御回路の好ましい実施例が、前述した特許
出願中に開示されているタイプのデータ処理シス
テムに特別に組合せて用いるようにされている実
施例のために記載されている。しかしながら、こ
の発明によつて提供されるサブルーチン制御能力
はまた、他のタイプのシステムにおける使用のた
めに実施され得るということを理解すべきであ
る。
ここに紹介するサブルーチン制御回路の好まし
い実施例の詳細な説明をよりよく理解するため
に、前述した特許出願中に開示されたシステムの
適当な部分の簡単な説明をまず初めに行なう。こ
れらの特許出願の完全な開示はここに組入れられ
ているものとして考えるべきである。
前述した特許出願中に開示されたデータ処理シ
ステムの好ましい実施例においては、高レベル入
力命令が、実行されるべき複数のタスクとして観
察される。各タスクは、1以上のタスクマイクロ
命令に分割される。各タスクマイクロ命令の実行
は、3ステージ(リード、計算およびライト)に
よつて行なわれ、各ステージは1つのクロツクを
必要とする。マルチプログラミングは、各タスク
マイクロ命令が属するタスクにかかわらずに混合
した仕方でタスクマイクロ命令を実行することに
より達成される。マルチ処理は、お互いに120゜位
相を異にして動作し同一の物理的なハードウエア
を共有する3つの独立したプロセツサとして事実
上動作するような方法でパイプラインされた3ス
テージのアーキテクチヤを使用することにより達
成される。各クロツク期間中、各プロセツサは、
異なつたタスクマイクロ命令に対応するリード、
計算およびライトステージのうちの異なつたもの
を実行する。換言すれば、各クロツク期間中、リ
ード動作は第1のタスクマイクロ命令に対して実
行されることが可能であり、計算動作は第2のタ
スクマイクロ命令に対して実行されることが可能
であり、ライト動作は第3のタスクマイクロ命令
に対して実行されることが可能である。
第1図および第2図は、前述した特許出願にお
いて開示されたシステムの動作例を示す。第1図
は基本的に、3つの120゜位相を異にしたプロセツ
サがどのように3つのタスクマイクロ命令TXm、
TYmおよびTZmを同時に実行するかを示す。第
1図における文字R、CおよびWはそれぞれ、各
タスクマイクロ命令の実行中に実行された3つの
連続的なリード、ライトおよび計算ステージを指
す。前述した出願のシステムにおけるタスクマイ
クロ命令の典型的な3ステージ動作は以下のとお
りである。
第1のステージの間、リード動作は、特定の選
択されたタスクマイクロ命令の実行を準備するた
めになされる。これは、マイクロ命令実行の間に
使用されるべき適当なオペランドデータをストレ
ージから読出すことと、次のマイクロ命令アドレ
スを決定するのに用いる条件選択データを読出す
ことと、次に続く計算ステージの間データパス機
能を制御するのに用いる制御信号を抽出するため
のマイクロ命令の適当なフイールドをデコードす
ることとを含む。
この次に続く計算ステージにおいては、選択さ
れたマイクロ命令が実行される間に計算動作は実
行される。また、(リードステージの間の条件選
択データ読出しによつて決定された)選択された
条件は、次のマイクロ命令データを作るのに使用
される。
次に続くライトステージにおいては、これはタ
スクマイクロ命令の実行における最後のステージ
であるが、ライト動作は、マイクロ命令動作の結
果がストレージに書込まれる間に実行される。ま
た、計算ステージの間に作られた次のマイクロ命
令データは、次のマイクロ命令を選択するのに使
用される。
第2図は、前述した特許出願において開示され
たシステムが、どのように、マルチプログラミン
グとマルチプロセツシングの両方を利用する方法
でタスクマイクロ命令を実行するかを示す例であ
る。第2図におけるこの例は、次の3つの計算の
同時動作を示す。(A+B)+(C+D)=H、(A
+B)−E=I、(C+D)−E=J。TAからTJ
での10個のタスクは次のように特徴づけられる。
タスク オペレータ TA=TAm1wTAm2 VALC A TB=TBm1wTBm2 VALC B TC=TCm1wTCm2 VALC C TD=TDm1wTDm2 VALC D TE=TEm1wTEm2 VALC E TF=TFm ADD(A+B)=F TG=TGm ADD(C+D)=G TH=THm SUBTRACT F−G=H TI=TIm SUBTRACT F−E=I TJ=TJm SUBTRACT G−E=J 前記例に対しては、“オペランドフエツチ”タ
スクTA−TEの各々は、少なくとも3クロツク待
ち時間(上記において“w”によつて示されてい
る)をその間にもつ2つのタスクマイクロ命令を
必要とすることを仮定している。“ADD”および
“SUBTRACT”タスクTF−TJの各々は、1クロ
ツク期間(上記および第2図において下付文字を
有さない“m”によつて示されている)のみを必
要とすることもまた仮定している。また第2図に
おいて、タスクマイクロ命令が実行されないとき
“No−Op”マイクロ命令が示されているのがわ
かる。
前述した出願中に開示されたデータ処理システ
ムの好ましい実施例の上記の簡単な説明から、計
算動作の間に、特定のタスクマイクロ命令が実行
されかつ次のマイクロ命令データもまた作られる
ということが思い起されるであろう。この発明の
好ましい実施例は、このタスクに対して実行され
るべき次のタスクマイクロ命令がサブルーチンの
最初のタスクマイクロ命令であるということを、
この次のタスクマイクロ命令データが指示してい
る状態に関する。そのような状態では、次のマイ
クロ命令データは、サブルーチンの第1のマイク
ロ命令のアドレスを与えるだけでなく、記号で表
わされたオフセツト値Fとともにサブルーチンエ
ントリ信号Eをもまた与える。この記号で表わさ
れたオフセツト値Fは、サブルーチンに対するリ
ターンマイクロ命令アドレスが記号で表わされた
オフセツト値Fを現在のマイクロ命令のアドレス
PAに加算することにより得られるような値をも
つ。サブルーチンの最後のマイクロ命令の計算ス
テージの間、システムは、適当なリターンアドレ
スが次のマイクロ命令アドレスとしての使用のた
めに与えられることをリクエストするリターン信
号Rを与える。
第3図は、前述した特許出願のシステム中に応
用されたマルチレベルサブルーチン制御回路の好
ましい実施例を示す。この実施例を詳細に説明す
る前に、詳細な説明がより容易に理解されるよう
にするため、まず初めに、全体の動作の機能上の
説明をする。
サブルーチンが入れられるべきときにシステム
によつて作られたエントリ信号Eによつて、第3
図のサブルーチン制御回路がリターンアドレス
RAを形成するため記号で表わされたオフセツト
値Fを現在のマイクロ命令アドレスPAに加算す
る。この計算されたリターンアドレスPAは、そ
の後、エントリ信号Eを作つたタスクに対応する
スタツク中に記憶され(各タスクごとに1つのそ
のようなスタツクがある)、そして、スタツクレ
ベルポインタは1だけインクリメントされかつ
各々のレジスタ中にセーブされる。典型的には、
各スタツクは、たとえば、15のリターンアドレス
が各タスクに対して対応するスタツク中に記憶さ
れるようにするため、サブルーチンエントリの15
のレベルを調節する。
各スタツクにおける最新のリターンアドレス
が、対応する高速アクセスレジスタ中に別々に記
憶されるようにするために準備がなされ、そのた
め最新のリターンアドレスは、サブルーチンリタ
ーンが要求されるとき、次のマイクロ命令アドレ
スとして使用するため迅速にシステムへ供給され
得る。サブルーチンリターンは、タスク実行の計
算ステージの間にシステムがリターン信号Rを供
給するとき開始される、ということが思い出され
るであろう。このリターン信号によつて、タスク
に対する別々に記憶された最新のリターンアドレ
スがシステムに送られ、かつ、タスクに対する次
の最新のリターンアドレスによつて別々のストレ
ージ中に置き代えられる。また、タスクに対して
対応するスタツクポインタは、この最新のリター
ンアドレスがシステムに転送されたということを
反映するために1だけデクリメントされる。
第3図に示した好ましい実施例の上記に要約し
たサブルーチン制御動作は、3つのステージにお
いて実行される。そのステージは、第1図および
第2図に示したようなシステムのマルチプログラ
ミングおよびマルチプロセツシング能力に寄与す
るのはもちろんこれを利用するために、前述した
特許出願中に開示されたシステムの前述した3ス
テージ リード、計算およびライト動作と同期し
て動作する。特に、第3図に示したこの好ましい
サブルーチン制御回路は、お互いに120゜位相を異
にして動作する3つの別々のサブルーチン制御回
路を事実上提供するような方法で構成かつ配置さ
れており、各回路は異なつたタスクに対するサブ
ルーチン制御を提供する。
次に第4図および第5図の例を参照する。第4
図は、たとえば4つのサブルーチンコールSUB
−1、SUB−2、SUB−3およびSUB−4を含
むタスクTを示す。第5図は、タスクの実行中の
特定の時間t0−t8におけるタスクTに対するリタ
ーンアドレススタツク20および高速アクセスレ
ジスタ22の内容を示す。
第4図に示すように、タスクTは、主要部およ
び4つのサブルーチンコールSUB−1、SUB−
2、SUB−3およびSUB−4からなる。タスク
Tの初めにおいては(時間t0)、スタツク20お
よび高速アクセスリターンアドレスレジスタ22
は空であり、スタツクポインタPはレベル0を指
示する。時間t1においてSUB−1が見出される
と、SUB−1に対して対応するリターンアドレ
スRTN−1は計算されかつスタツク20および
高速アクセスレジスタ22中に記憶される(第5
図)。スタツクポインタPは、レベル1が次の利
用できるスタツク位置であることを示すためにレ
ベル1を指示するため1だけインクリメントされ
る。
第4図に示すように、SUB−1の実行の間に
時間t2においてSUB−2が見出される。第5図に
おいてt2に対して示したように、SUB−2に対す
るリターンアドレスRTN−2は、計算されかつ
スタツク20中のレベル1に記憶され、そしてポ
インタPはレベル2を指示するため1だけインク
リメントされる。高速アクセスレジスタ22にお
いてRTN−2はまたRTN−1にとつて代わる。
つまり、RTN−2が今や最新のリターンアドレ
スだからである。
SUB−2の実行中、第3のサブルーチンSUB
−3は、時間t3において見出され、そしてそれ
は、第3のリターンアドレスRTN−3が計算さ
れかつスタツク20のレベル2および高速アクセ
スレジスタ22に置かれるようにする。これは、
第5図のt3において示されている。また、ポイン
タPは、1だけインクリメントされレベル3を指
示する。SUB−3が時間t4において完了すると
(第4図)、対応するリターンアドレスRTN−3
は、高速アクセスレジスタ22から即座にアクセ
スされかつスタツク20からの次の最新のリター
ンアドレスRTN−2によつてとつて代わられる。
これは第5図の時間t4において示されている。第
5図のt4において、リターンが実行されるので、
ポインタPがレベル2を指示するため1だけデク
リメントされることもわかる。リターンアドレス
RTN−3がいまだにレベル2に留まつているこ
とが理解できるであろう。しかし、もしレベル2
が他のリターンアドレスを受取ればRTN−3は
書き直されるので、このことは全く重要でない。
したがつて、明確のために、第5図におけるt4
対してレベル2が空であることが示されている。
この約束は、第5図を通じて使用されている。
第4図に示すように、t4におけるSUB−3の完
了後、SUB−2が続きかつt5で完了する。高速ア
クセスレジスタ22中の対応するリターンアドレ
スRTN−2は、このようにアクセスされ、次の
最新のリターンアドレスRTN−1によつて置き
換えられ、かつポインタPはレベル1を指示する
ため1だけデクリメントされる。これは、第5図
のt5において示されている。
時間t6において、SUB−4が見出され(第4
図)、第5図におけるt6に対して示すように、こ
れは、対応する計算されたリターンアドレス
RTN−4がスタツク20中のレベル1に置かれ、
かつ高速アクセスレジスタ22中に置かれるよう
にする。そして、ポインタPはレベル2を指示す
るためインクリメントされる。t7においてSUB−
4が完了すると(第4図)、リターンアドレス
RTN−4は、高速アクセスレジスタ22からア
クセスされ、かつ次の最新のリターンアドレス
RTN−1によつてとつて代わられる。これは、
第5図のt7において示されている。一方、ポイン
タPはレベル1を指示するため1だけデクリメン
トされる。
第4図に示すように、その後、SUB−1が続
き、それはt8において完了する。そのとき、
RTN−1は高速アクセスレジスタ22からアク
セスされ、かつ、処理はタスクTの主要部に戻
る。したがつて、第5図におけるt8に対して示し
たように、スタツク20および高速アクセスレジ
スタ22はいまや空であり、かつポインタPはレ
ベル0を指示している。
先に指摘したように、第3図に示した好ましい
実施例によつて提供されたサブルーチン制御動作
は、お互いに120゜位相を異にして動作する3つの
別々のサブルーチン制御回路を事実上提供するよ
うな方法で実現されており、各回路は異なつたタ
スクに対するサブルーチン制御を与えている。し
たがつて、第3図の好ましい実施例において、第
4図および第5図に関連して上述した実例となる
タスクTに対する動作は、3つまでの異なつたタ
スクに対して、お互いに120゜位相を異にして同時
に実行されるということを理解すべきである。こ
れは、サブルーチンエントリあるいは特定のタス
クに対するサブルーチンリターンに応答して必要
とされるサブルーチン制御動作の実行に対する3
つの連続的なステージS−1、S−2およびS−
3(ステージごとに1クロツク)を提供すること
により達成される。さらに、単一のクロツク期間
中において、各クロツク期間中ステージS−1、
S−2およびS−3の各々が異なつたタスクに対
するそれぞれのサブルーチン動作を実行するよう
な方法で、3つのステージS−1、S−2および
S−3のすべてを実行するために準備がなされ
る。
これらのサブルーチン制御ステージS−1、S
−2およびS−3は、それぞれ、前述した特許出
願のシステムの計算、ライトおよびリード ステ
ージに同期してそれぞれの動作を行なうこともま
た注意すべきである。このシステムは第1図およ
び第2図に関連して簡単に記載された。そのよう
な動作は第6図に示されている。第6図は、第1
図と概略同様のタイプの図であるが、それに加え
て、各タスクごとにサブルーチンエントリおよび
サブルーチンリターンの特定の実施中に生じてい
る対応するサブルーチン制御ステージS−1、S
−2およびS−3を示している。
特に、第6図は、第1図と同様に、タスクTX
TYおよびTZが、それぞれプロセツサ#1,#2
および#3により、お互いに120゜位相を異にして
同時に実行されているのを示す。この発明の好ま
しい実施例をここに記述するために、一例として
次のことを仮定する。すなわち第6図において、
タスクTXYおよびTZの最初に示されたタスクマ
イクロ命令TXm、TYmおよびTZmの各々は、そ
れの計算(C)動作中サブルーチンエントリ信号を供
給しており、それぞれのタスクに対する次のタス
クマイクロ命令(TXs1、TYs1あるいはTZs1)が
特定のサブルーチンの最初のマイクロ命令である
べきことを示している。したがつて、各々のマイ
クロ命令TXm1、TYm1およびTZm1の計算ステー
ジ(C)の間、ステージS−1、S−2およびS−3
からなるサブルーチン動作は、対応する計算動作
中システムによつて供給されたサブルーチンエン
トリ信号Eに応答して、各タスクごとに始められ
る。結果として、各タスクごとの対応するリター
ンアドレスは、計算され、かつそれのそれぞれの
スタツク20および高速アクセスレジスタ22中
に記憶される。そして、第4図および第5図に関
して前述したように、それぞれのスタツクレベル
ポインタPはインクリメントされる(たとえば時
間t1を注目されたい)。その後、各サブルーチン
の最後のタスクマイクロ命令中(第6図において
タスクマイクロ命令TXso、TYsoおよびTZsoとし
て示されている)、ステージS−1、S−2およ
びS−3からなるサブルーチン動作は、対応する
計算動作中システムによつて与えられたサブルー
チンリターン信号Rに応答して再び始められ、そ
れによつて、それぞれの高速アクセスレジスタ2
2中の対応するリターンアドレスが、それのそれ
ぞれのタスクに対する次のマイクロ命令アドレス
としての使用のためシステムに送られ、一方ま
た、対応するスタツクレベルポインタPがデクリ
メントされ、かつ次の最新のリターンアドレス
(もし与えられれば)が高速アクセスレジスタ2
2中に記憶される(たとえば第4図および第5図
における時間t4を注目されたい)。
もちろん、第6図において例示の目的で示され
ているサブルーチンエントリおよびサブルーチン
リターン動作は、各プロセツサごとに独立して生
じ、図示されたような特定の時間に生ずる必要は
ない、ということが理解されるべきである。しか
しながら、第6図に示した特定の時間は、サブル
ーチン制御動作が、どのようにしてここに記述し
た好ましい実施例中の3つまでのタスクに対して
同時に実行され、かつシステムの対応する計算、
ライトおよびリード動作に同期して典型的に実行
されるかを説明するのに有益である。
上記一般的かつ機能的な説明を考慮すれば、第
3図に示した好ましいサブルーチン制御回路は、
ステージS−1、S−2およびS−3の各々に与
えられた構造および動作を記述することにより詳
細に検討できるであろう。このことについては、
好ましい実施例において、各ステージは1クロツ
ク期間中に実行され、単一のクロツク期間中に各
ステージが異なつたタスクに対するそれの動作を
実行する、ということを思い起すべきである。た
とえば、第6図におけるクロツク期間4に注目す
れば、その間、S−3動作がタスクTXに対して
実行され、S−2動作がタスクTYに対して実行
され、S−1動作がタスクTZに対して実行され
る。
ステージS−1 第3図に示したように、ステージS−1は、S
−1レジスタ30、マルチプレクサ32およびロ
ジツク34を含む。S−1レジスタ30は、サブ
ルーチンエントリあるいはサブルーチンリターン
位置のいずれかが指示されるとき、タスクマイク
ロ命令の計算動作の間に与えられたサブルーチン
信号を記憶するために働く。もしサブルーチンエ
ントリが指示されると、サブルーチン信号は、タ
スク番号T1(これはまたステージS−3にも加え
られる。)、現アドレスPA1、記号化されたオフセ
ツト値F1、ポインタP1(これはT1に応答してステ
ージS−3により与えられる。)により指示され
た次の利用可能なスタツクレベルおよびサブルー
チンエントリ信号E1を示す。
もしサブルーチンリターンが指示されると、与
えられたサブルーチン信号は、タスク番号T1
ポインタP1(ステージS−3により与えられる)
によつて指示された次の利用可能なスタツクレベ
ルおよびサブルーチンリターンR1だけを示す。
後でステージS−3の記載のところで検討するけ
れども、ステージS−3に与えられたタスク番号
T1によつて、そのタスクに対する最新のリター
ンアドレスがマルチプレクサ32の入力に加えら
れる。サブルーチンリターンのS−1の間にマル
チプレクサ32に印加されたリターン信号R1
よつて、その後、このリターン信号がこのタスク
に対する次のマイクロ命令アドレスとして使用す
るためシステムに送られる。
ステージS−1はまたロジツク34を含み、こ
れにはE1、R1およびP1が加えられる。E1が存在
していれば、ロジツク34は、それぞれのスタツ
クレベルポインタP1がその最高のレベルである
かどうかを決定する。もしそうであれば、オーバ
フロー信号OVが作られ、これは、タスクT1に対
するそれぞれのスタツクが一杯であり他のリター
ンアドレスを受入れることができないことを示
す。R1が存在していれば、ロジツク34は、そ
れぞれのスタツクレベルポインタP1がその最低
のレベルにあるかどうかを決定する。もしそうで
あれば、信号EOが作られ、これは、T1に対する
それぞれのスタツクが空であることを示す。シス
テムはその後、OVあるいはEO信号に応答して
適当な動作を行なう。
ステージS−2 ステージS−2は、S−2レジスタ40、加算
器42、インクリメンタ/デクリメンタ44およ
びマルチプレクサ46を含む。第3図において、
ステージS−2に与えられた信号の下付文字は、
“1”から“2”に変えられることがわかるであ
ろう。これは、先のクロツク期間中にステージS
−1に加えられたこれらの信号が、今、次のクロ
ツク期間においてステージS−2に加えられてい
ることを示すためになされる。これらの下付文字
“2”はまた、S−2に加えられたこれらの信号
を下付文字“1”信号の新しい組と区別するため
に働く。その下付文字“1”の信号は、同時に、
同一のクロツク期間中異なつたタスクに対するス
テージS−1に加えられる。このことは第6図に
関して先に説明したとおりである(たとえば第6
図のクロツク期間3を参照されたい)。同一の規
約は、S−3に加えられた信号に関しても用いら
れる。
サブルーチンエントリのステージS−2の間、
それぞれのタスクに対するリターンアドレスRA2
は、加算器42により現アドレスPA2をオフセツ
ト値F2に加算することにより計算される。この
計算されたリターンアドレスRA2は、その後、そ
れぞれのタスク番号T2およびエントリ信号E2
ともにS−2レジスタ40中に記憶される。さら
に、サブルーチンエントリに対して作られたエン
トリ信号E2によつて、インクリメンタ/デクリ
メンタ44がポインタP2を1だけインクリメン
トし、かつまたマルチプレクサ46が一定のP2
値を出力する。これP2およびP2+1の値もまた
S−2レジスタ40中に記憶される。
サブルーチンリターンのステージS−2中、
P2、R2およびT2のみが存在する。S−2中の動
作は、次のようなものである。すなわち、R2
よりインクリメンタ/デクリメンタ44がP2
1だけデクリメントするようにされ、またそれに
より、マルチプレクサ46が結果であるP2−1
値をR3およびT2とともにS−2レジスタ40中
のそれぞれの位置に記憶するため進める。
ステージS−3 第3図に示したように、ステージS−3は、リ
ターンアドレススタツクストレージ50、高速ア
クセスレジスタフアイル52、スタツクポインタ
レジスタフアイル54、ORゲート56およびマ
ルチプレクサ58を含む。リターンアドレススタ
ツクストレージ50は、ランダムアクセスメモリ
を含み、このランダムアクセスメモリは各タスク
に対して1つのストレージを複数のスタツクに与
える。これらのスタツクの1つが第5図において
スタツク20によつて示されている。高速アクセ
スレジスタフアイル52は、即座にアクセス可能
なストレージを複数の高速アクセスレジスタに与
え、これらのレジスタのうちの1つは第5図にお
いてレジスタ22で示されている。スタツクポイ
ンタレジスタフアイル54は、また各タスクごと
に1つずつ、ストレージを複数のスタツクレベル
ポインタレジスタに与える。
リターンアドレススタツクストレージ50は、
(サブルーチンエントリのための)書込みのため
あるいは(サブルーチンリターンのための)読出
しのための各クロツク期間中にイネーブルされ得
る。したがつて、E3はストレージ50に対する
ライトイネーブルとして働き、かつR3はリード
イネーブルとして働く。高速アクセスレジスタフ
アイル52およびスタツクポインタレジスタフア
イル54は、各クロツク期間中異なつたレジスタ
からの書込みおよび読出しの両者を供給できる。
この能力は、フアイル52および54のために、
サブルーチンステージS−1、S−2およびS−
3の3つ全部が、たとえば第6図に示したよう
に、異なつたタスクに対する各クロツク期間中に
実行され得るよう準備されている。クロツク期間
中読出しは常時与えられており、一方書込みは
E3あるいはR3のいずれかによりイネーブルされ
る。これは第3図において、ORゲート56のE3
+R3出力をフアイル52および54のライトイ
ネーブル入力に加えることにより実施されてい
る。T3は、リターンアドレススタツクストレー
ジ50のためのスタツクセレクタとして働き、か
つ高速レジスタフアイル52およびスタツクポイ
ンタレジスタフアイル54の両者のためのライト
レジスタセレクタとして働く。T1は、フアイル
52および54の両者に対してリードレジスタセ
レクタとして働く。リターンアドレススタツクス
トレージに対するレベルポインタは、サブルーチ
ンエントリに対するP3またはサブルーチンリタ
ーンに対するP3−1である。
サブルーチンエントリのステージS−3の間、
E3は、(S−2中に計算された)リターンアドレ
スRA3がタスクT3によつて選択された特定のス
タツク中へ、ポインタP3によつて指示されたレ
ベルに書込まれるようにするためにリターンアド
レスストレージ50に対するライトイネーブルを
供給する。このリターンアドレスはまた、フアイ
ル52中のT3によつて選択された(たとえば第
5図の時間t1を参照されたい)特定の高速アクセ
スレジスタにマルチプレクサ58を経て書込まれ
る。マルチプレクサ58の動作は次のようなもの
である。つまり、サブルーチンエントリ中(R3
が存在しないとき)、マルチプレクサ58はリタ
ーンアドレススタツクストレージ50の出力より
もむしろRA3を通過させる。サブルーチンエント
リのS−3中もまた、インクリメントされたレベ
ルポインタP3+1は、T3によつて選定されたフ
アイル54中の特定のスタツクポインタレジスタ
中に書込まれる。
サブルーチンリターンのステージS−3の間、
動作は主としては、リターンアドレススタツクス
トレージ50に書込まれるべきリターンアドレス
がないという点で、サブルーチンエントリに対し
て実行された動作とは異なる。その代わりとし
て、ストレージ50はR3により読出しのために
イネーブルされる。そのような場合に、T3はな
お、アクセスされるべきであるストレージ50中
のスタツクおよびフアイル52中のレジスタを選
択する。しかしながら、スタツクレベルポインタ
はタスクT3に対する次の最新のリターンアドレ
スを読出すために(ステージS−2中に1だけデ
クリメントされた結果として)P3−1の値を今
はもつであろう。そのリターンアドレスは、T3
の対応する高速アクセスレジスタにおける書込み
のためマルチプレクサ58を経て高速アクセスレ
ジスタフアイル52に進む(たとえば第6図の時
間t2を参照されたい)。またサブルーチンリター
ンのステージS−3の間、デクリメントされたレ
ベルポインタP3−1は、T3によつて選択された
フアイル54のスタツクポインタレジスタ中に書
込まれ、ストレージ50から次の最新のリターン
アドレスの読出しを説明するためにレベルポイン
タ値が調整される。
T3によつて選択されたフアイル52の特定の
高速アクセスレジスタ中のリターンアドレスのス
テージS−3の間の書込と同時に、同一クロツク
期間中にステージS−1に加えられたタスク番号
T1もまた、T1に対する最新のリターンアドレス
の読出しのために対応する高速アクセスレジスタ
を選択するためにステージS−3のフアイル52
に加えられる、ということが理解されるであろ
う。ステージS−1に関して先に説明したよう
に、このアクセスされたリターンアドレスは、サ
ブルーチンリターンがステージS−1に対して指
示された場合にはシステムに転送するためにステ
ージS−1のマルチプレクサ32に加えられる。
T3によつて選択されたスタツクポインタレジ
スタフアイル54の中の特定のレジスタ中のレベ
ルポインタ値のステージS−3の間の書込と同時
に、同一クロツク期間中にステージS−1に加え
られたタスク番号T1もまた、ステージS−3の
フアイル54に加えられることが理解されるであ
ろう。これは、同時に実行されたステージS−1
動作に対するP1値として使用するために、タス
クT1に対するレベルポインタの現在の値を読出
すために対応するスタツクポインタレジスタを選
択するためになされる。
以上の説明は特定の好ましい実施例を記載して
いるけれども、構造、配置、動作および用途にお
ける多くの変更態様がここに開示した発明の内容
から外れることなく可能であるということを理解
すべきである。したがつて、この発明は前掲の特
許請求の範囲内にあるすべての可能な変更態様を
包含しているものとして考えられるべきである。
【図面の簡単な説明】
第1図および第2図は、前述した特許出願中に
開示されたシステムの動作例を示す。第3図は、
この発明に従つたマルチレベルサブルーチン制御
回路の好ましい実施例を示す。第4図は、複数の
サブルーチンコールを含む典型的なタスクリステ
イングの一例を示す。第5図は、第4図のタスク
の実行中の第3図の実施例の基本動作を示す。第
6図は、第3図のサブルーチン制御回路のステー
ジの実行とプロセツサシステムのステージの実行
との間の時間関係を示す。 図において、20はリターンアドレススタツ
ク、22は高速アクセスレジスタ、30,40は
レジスタ、32,46,58はマルチプレクサ、
34はロジツク、42は加算器、44はインクリ
メンタ/デクリメンタ、50はリターンアドレス
スタツクストレージ、52は高速アクセスレジス
タフアイル、54はスタツクポインタレジスタフ
アイル、56はORゲートである。

Claims (1)

  1. 【特許請求の範囲】 1 タスクが1個以上のサブルーチンを含み、複
    数のタスクを実行することにより動作するデータ
    処理システムにおけるサブルーチン制御方法であ
    つて、 実行中のタスクがサブルーチンの開始に到達し
    たときに、サブルーチンエントリおよびタスク識
    別指示を与えるステツプと、 実行中のタスクがサブルーチンの終了に到達し
    たときに、サブルーチンリターンおよびタスク識
    別指示を与えるステツプと、 前記サブルーチンエントリ指示に応答してリタ
    ーンアドレスを決定するステツプと、 決定されたリターンアドレスを識別されたタス
    クに対応する第1のリターンアドレス記憶手段に
    記憶するステツプと、 各タスクに対し最も新しく決定されたリターン
    アドレスを識別されたタスクに対応する第2のリ
    ターンアドレス記憶手段に記憶するステツプを備
    え、前記第2のリターンアドレス記憶手段は前記
    第1のリターンアドレス記憶手段よりも有意に高
    速のアクセスを有し、 前記サブルーチンリターン指示に応答して、前
    記システムへの転送のために、識別されたタスク
    の第2のリターンアドレス記憶手段に記憶されて
    いる最も新しいリターンアドレスへアクセスし、
    次に識別されたタスクの第1の記憶手段からの次
    に新しいアドレスと置き換えるステツプと、 異なる別のタスクに対し並行して上記記憶ステ
    ツプ、アクセスステツプおよび決定ステツプを行
    なうステツプをさらに備える、サブルーチン制御
    方法。 2 前記システムは周期的に動作し、記憶、アク
    セスおよび決定のステツプは、複数の同時並行実
    行中のタスクに対する同調のとれたサブルーチン
    制御を与えるように複数のサイクルにわたつて実
    行される、特許請求の範囲第1項記載のサブルー
    チン制御方法。 3 タスクが1個以上のサブルーチンを含み、複
    数のタスクの同時並行実行を行なう周期的に動作
    するデータ処理システムにおけるサブルーチン制
    御回路であつて、 タスク対応に設けられ、タスク実行中各タスク
    に対するリターンアドレスを記憶する手段と、 タスクがサブルーチンへ移行するときに前記シ
    ステムによつて与えられるサブルーチンエントリ
    指示およびタスク識別指示に応答して指示された
    サブルーチンに対するリターンアドレスを決定
    し、かつ前記リターンアドレスを各タスクのリタ
    ーンアドレス記憶手段に記憶させるリターンアド
    レス制御手段とを備え、 前記リターンアドレス制御手段はまた、タスク
    がサブルーチンの終わりに到達したときに、前記
    システムによつて与えられるサブルーチンリター
    ン指示およびタスク識別指示に応答して、識別さ
    れたタスクの各記憶手段に記憶された特定のリタ
    ーンアドレスがそこからアクセスされて前記シス
    テムへ与えられるようにし、 前記リターンアドレス制御手段は、 第2のタスクに対するリターンアドレスの対応
    のリターンアドレス記憶手段への記憶と同時並行
    して、かつ第3のタスクに対するリターンアドレ
    スを前記システムへの転送のために対応のリター
    ンアドレス記憶手段からアクセスすることと並行
    して第1のタスクに対しリターンアドレスが決定
    されるように1サイクルの間機能し、 前記リターンアドレス記憶手段は、各タスク対
    応に設けられ、対応のタスクに対する複数のリタ
    ーンアドレスを記憶する複数の第1の記憶手段
    と、前記第1の記憶手段より有意に高速でありか
    つ各タスク対応に設けられ対応のタスクの最も新
    しいリターンアドレスを記憶する第2の記憶手段
    とを含み、 前記リターンアドレス制御手段は、前記サブル
    ーチンエントリ指示およびタスク識別指示に応答
    して、決定されリターンアドレスを識別されたタ
    スク対応の第1および第2の記憶手段の両方に記
    憶するように1サイクルの間動作し、 前記リターンアドレス制御手段はまた、前記サ
    ブルーチンリターンおよびタスク識別指示に応答
    して、識別されたタスクの第2の記憶手段から最
    も新しいリターンアドレスを前記システムへの転
    送のためにアクセスするように1サイクルの間動
    作し、 前記リターンアドレス制御手段はまた、前記サ
    ブルーチンリターン指示およびタスク識別指示に
    応答して、識別されたタスクの対応の第1の記憶
    手段から次に新しいリターンアドレスがアクセス
    されかつ該識別されたタスクの第2の記憶手段に
    記憶されるように前記サイクルの間動作する、サ
    ブルーチン制御回路。 4 各タスク対応の第1の記憶手段は複数のリタ
    ーンアドレスを記憶するスタツクからなり、 各スタツク対応に設けられ、対応のスタツクに
    記憶されたリターンアドレスの数を示すスタツク
    レベルポインタを記憶するスタツクレベルポイン
    タレジスタをさらに備え、 各タスク対応の第2のリターンアドレス記憶手
    段は高速アクレスレジスタからなり、 前記制御手段はスタツク内の各対応のスタツク
    レベルポインタが示すレベルへリターンアドレス
    を記憶するよう動作し、 前記制御手段は前記サブルーチンエントリおよ
    びサブルーチンリターン指示に応答して正しく更
    新されたスタツクレベルポインタを保持するよう
    に動作し、 前記制御手段は、スタツクから各対応のスタツ
    クレベルポインタが示すレベルの次の新しいリタ
    ーンアドレスをアクセスする、特許請求の範囲第
    3項記載のサブルーチン制御回路。 5 前記リターンアドレス制御手段は、前記シス
    テムから与えられるタスク識別指示に応答して、
    識別されたタスクに対応するスタツクの適当なレ
    ベルにリターンアドレスを記憶する際に前記制御
    手段により使用されるために、識別されたタスク
    に対応する対応のスタツクレベルポインタ値を対
    応のスタツクレベルポインタレジスタからアクセ
    スする手段を含む、特許請求の範囲第4項記載の
    サブルーチン制御回路。
JP57006721A 1981-02-04 1982-01-18 Circuit for and method of controlling subroutine Granted JPS57147761A (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US06/231,554 US4467410A (en) 1981-02-04 1981-02-04 Multi-phase subroutine control circuitry

Publications (2)

Publication Number Publication Date
JPS57147761A JPS57147761A (en) 1982-09-11
JPS6346856B2 true JPS6346856B2 (ja) 1988-09-19

Family

ID=22869720

Family Applications (1)

Application Number Title Priority Date Filing Date
JP57006721A Granted JPS57147761A (en) 1981-02-04 1982-01-18 Circuit for and method of controlling subroutine

Country Status (4)

Country Link
US (1) US4467410A (ja)
EP (1) EP0057313B1 (ja)
JP (1) JPS57147761A (ja)
DE (1) DE3171418D1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4811243A (en) * 1984-04-06 1989-03-07 Racine Marsh V Computer aided coordinate digitizing system
US5129084A (en) * 1989-06-29 1992-07-07 Digital Equipment Corporation Object container transfer system and method in an object based computer operating system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS49104536A (ja) * 1973-02-06 1974-10-03
JPS52129252A (en) * 1976-04-21 1977-10-29 Hitachi Ltd Program processing unit
JPS54153542A (en) * 1978-05-24 1979-12-03 Nec Corp Data processor of microprogram control type

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3568158A (en) * 1968-01-03 1971-03-02 Bell Telephone Labor Inc Program and subroutine data storage and retrieval equipment
US3614740A (en) * 1970-03-23 1971-10-19 Digital Equipment Corp Data processing system with circuits for transferring between operating routines, interruption routines and subroutines
US3725868A (en) * 1970-10-19 1973-04-03 Burroughs Corp Small reconfigurable processor for a variety of data processing applications
US3909797A (en) * 1973-12-13 1975-09-30 Honeywell Inf Systems Data processing system utilizing control store unit and push down stack for nested subroutines
US3972029A (en) * 1974-12-24 1976-07-27 Honeywell Information Systems, Inc. Concurrent microprocessing control method and apparatus
DE2617485C3 (de) * 1976-04-22 1980-09-18 Nixdorf Computer Ag, 4790 Paderborn Schaltungsanordnung für Datenverarbeitungsanlagen zur Abarbeitung von Mikrobefehlsfolgen
US4041462A (en) * 1976-04-30 1977-08-09 International Business Machines Corporation Data processing system featuring subroutine linkage operations using hardware controlled stacks
US4156925A (en) * 1976-04-30 1979-05-29 International Business Machines Corporation Overlapped and interleaved control store with address modifiers
US4173782A (en) * 1978-01-03 1979-11-06 International Business Machines Corporation Return and link mechanism
US4197579A (en) * 1978-06-06 1980-04-08 Xebec Systems Incorporated Multi-processor for simultaneously executing a plurality of programs in a time-interlaced manner
US4229790A (en) * 1978-10-16 1980-10-21 Denelcor, Inc. Concurrent task and instruction processor and method
US4384324A (en) * 1980-05-06 1983-05-17 Burroughs Corporation Microprogrammed digital data processing system employing tasking at a microinstruction level

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS49104536A (ja) * 1973-02-06 1974-10-03
JPS52129252A (en) * 1976-04-21 1977-10-29 Hitachi Ltd Program processing unit
JPS54153542A (en) * 1978-05-24 1979-12-03 Nec Corp Data processor of microprogram control type

Also Published As

Publication number Publication date
EP0057313A2 (en) 1982-08-11
US4467410A (en) 1984-08-21
JPS57147761A (en) 1982-09-11
DE3171418D1 (en) 1985-08-22
EP0057313B1 (en) 1985-07-17
EP0057313A3 (en) 1982-08-25

Similar Documents

Publication Publication Date Title
EP0996057B1 (en) Data processor with an instruction unit having a cache and a ROM
US4477872A (en) Decode history table for conditional branch instructions
US4430706A (en) Branch prediction apparatus and method for a data processing system
US4430707A (en) Microprogrammed digital data processing system employing multi-phase subroutine control for concurrently executing tasks
JP3120152B2 (ja) コンピューターシステム
US5905881A (en) Delayed state writes for an instruction processor
US5301331A (en) Interruption handling system
US5434986A (en) Interdependency control of pipelined instruction processor using comparing result of two index registers of skip instruction and next sequential instruction
JP2002175181A (ja) プロセッサおよびリネーミング装置
JPH0373010B2 (ja)
US5363490A (en) Apparatus for and method of conditionally aborting an instruction within a pipelined architecture
US5737562A (en) CPU pipeline having queuing stage to facilitate branch instructions
US7275146B2 (en) Instruction control device and method therefor
JPS6346856B2 (ja)
JP3490005B2 (ja) 命令制御装置及びその方法
JPS581246A (ja) 命令処理順序制御方式
JPS60178580A (ja) 命令制御方式
US4649472A (en) Multi-phase subroutine control circuitry
JPS6329292B2 (ja)
JPH0222413B2 (ja)
JP3102399B2 (ja) データ処理装置及び方法
JP3147884B2 (ja) 記憶装置及び情報処理装置
US20020129229A1 (en) Microinstruction sequencer stack
JP2511063B2 (ja) パイプライン制御方式
EP0270873A2 (en) Single ALU computer system