JPH0373010B2 - - Google Patents

Info

Publication number
JPH0373010B2
JPH0373010B2 JP57006720A JP672082A JPH0373010B2 JP H0373010 B2 JPH0373010 B2 JP H0373010B2 JP 57006720 A JP57006720 A JP 57006720A JP 672082 A JP672082 A JP 672082A JP H0373010 B2 JPH0373010 B2 JP H0373010B2
Authority
JP
Japan
Prior art keywords
subroutine
return address
storage means
task
stack
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
JP57006720A
Other languages
English (en)
Other versions
JPS57143642A (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.)
Unisys Corp
Original Assignee
Unisys 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 Unisys Corp filed Critical Unisys Corp
Publication of JPS57143642A publication Critical patent/JPS57143642A/ja
Publication of JPH0373010B2 publication Critical patent/JPH0373010B2/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

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号(USP4684324)
で、発明者がD.R.KimおよびJ.H.Mc Clintockで
ある「マイクロ命令レベルでのタスキングを使用
するマイクロプログラムされたデイジタルデータ
処理システム(Microprogrammed Digital
Data Processing System Employing Tasking
at a Microinstruction Level)」には、この出
願に関係する内容が含まれている。 本願出願人の同時に出願され、共に譲渡された
出願である1981年2月4日に出願されたアメリカ
合衆国特許出願連続番号第231554号
(USP4467410、特開昭57−147761)(本願と同日
付で出願した特許出願に対応)の「多相サブルー
チン制御回路(Multi−Phase Subroutine
Control Circuitry)」もまたこの出願に関係す
る。 この発明は、一般的に、デイジタルデータ処理
システムにおけるデータ処理動作を実行するため
の改善された手段と方法に関し、特に、マルチプ
ログラミングおよびマルチプロセツシング環境に
おけるサブルーチン動作の制御のための改善され
た手段と方法に関する。 前述した特許出願には、マイクロプログラムさ
れたデータ処理システムの実施例が開示されてお
り、それは、マイクロ命令レベルでのタスクのマ
イクロプログラミングおよびマイクロプロセツシ
ングの両方を利用するような方法でタスクを実行
する。この出願の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=JpTAから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 SUBTRACTF−G=H TI=TIm SUBTRACTF−E=I TJ=TJm SUBTRACTG−E=J 前記例に対しては、“オペランドフエツチ”タ
スクTA−TEの各々は、少なくとも3クロツク待
ち時間(上記において“w”によつて示されてい
る)をその間にもつ2つのタスクマイクロ命令を
必要とすることを仮定している。“ADD”および
“SUBTRACT”タスクTA−TJの各々は、1クロ
ツク期間(上記および第2図において下付文字を
有さない“m”によつて示されている)のみを必
要とすることもまた仮定している。また第2図に
おいて、タスクマイクロ命令が実行されないとき
“No−Op”マイクロ命令が示されているのがわ
かる。 前述した出願中に開示されたデータ処理システ
ムの好ましい実施例の上記の簡単な説明から、計
算動作の間に、特定のタスクマイクロ命令が実行
されかつ次のマイクロ命令データもまた作られる
ということが思い起されるであろう。この発明の
好ましい実施例は、このタスクに対して実行され
るべき次のタスクマイクロ命令がサブルーチンの
最初のタスクマイクロ命令であるということを、
この次のタスクマイクロ命令データが指示してい
る状態に関する。そのような状態では、次のマイ
クロ命令データは、サブルーチンの第1のマイク
ロ命令のアドレスを与えるだけでなく、記号で表
わされたオフセツト値Fとともにサブルーチンエ
ントリ信号Eをもまた与える。この記号で表わさ
れたオフセツト値Fは、サブルーチンに対するリ
ターンマイクロ命令アドレスが記号で表わされた
オフセツト値Fを現在のマイクロ命令のアドレス
PAに加算することにより得られるような値をも
つ。サブルーチンの最後のマイクロ命令の計算ス
テージの間、システムは、適当なリターンアドレ
スが次のマイクロ命令アドレスとして使用のため
に与えられることをリクエストするリターン信号
Rを与える。 第3図は、前述した特許出願のシステム中に応
用されたマルチレベルサブルーチン制御回路の好
ましい実施例を示す。この実施例を詳細に説明す
る前に、詳細の説明がより容易に理解されるよう
にするため、まず初めに、全体の動作の機能上の
説明をする。 サブルーチンが入れられるべきときにシステム
によつて作られたエントリ信号Eによつて、第3
図のサブルーチン制御回路がリターンアドレス
RAを形成するため記号で表わされたオフセツト
値Fを現在のマイクロ命令アドレスPAに加算す
る。この計算されたリターンアドレスRAは、そ
の後、エントリ信号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において示されている。 時間6において、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図において、
タスクTX,TYおよび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に応答して再び始められ、
それによつて、それぞれの高速アクセスレジスタ
22中の対応するリターンアドレスが、それのそ
れぞれのタスクに対する次のマイクロ命令アドレ
スとしての使用のためシステムに送られ、一方ま
た、対応するスタツクレベルポインタ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がその最低
のレベルにあるかどうかを決定する。もしそうで
あれば、信号FOが作られ、これは、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によつて選択された特定のス
タツク中へ、ポインタP5によつて指示されたレ
ベルに書込まれるようにするためにリターンアド
レスストレージ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のサブルーチンリターンアドレス記憶手段
    よりも有意に高速のアクセスを与え、 タスクがサブルーチンへエントリーするときに
    前記システムによつて与えられるサブルーチンエ
    ントリー指示およびタスク識別指示に応答して、
    このサブルーチンのリターンアドレスを決定し、
    この決定されたリターンアドレスを対応の第1お
    よび第2のサブルーチンリターンアドレス記憶手
    段の両方に格納する第1の制御手段、 タスクがサブルーチンから出るときに前記シス
    テムにより与えられるサブルーチンリターン指示
    およびタスク識別指示に応答して、この識別され
    たタスク対応の第2のサブルーチンリターンアド
    レス記憶手段に格納されているリターンアドレス
    をアクセスして前記システムへ送出する第2の制
    御手段、および 前記サブルーチンリターン指示と前記識別され
    たタスク対応の第2のサブルーチンリターンアド
    レス記憶手段からのリターンアドレスの送出とに
    応答して、前記識別されたタスク対応の第1のサ
    ブルーチンリターンアドレス記憶手段に格納され
    ているリターンアドレスのうち次に最も新しいリ
    ターンアドレスを前記第1のサブルーチンリター
    ンアドレス記憶手段からアクセスして、該識別さ
    れたタスク対応の第2のサブルーチンリターンア
    ドレス記憶手段へ格納する第3の制御手段を備
    え、 前記各タスク対応に設けられた第1のサブルー
    チンリターンアドレス記憶手段は、複数のリター
    ンアドレスを格納するスタツクを備え、かつ各ス
    タツク対応に設けられて対応のスタツクの格納位
    置を示すスタツクレベルポインタを記憶するため
    のスタツクレベルポインタ記憶手段を含み、 前記各タスク対応に設けられた第2のサブルー
    チンリターンアドレス記憶手段は、高速アクセス
    記憶手段からなり、 前記第1の制御手段は、各対応のスタツクレベ
    ルポインタ記憶手段により示されるレベルのスタ
    ツク位置にリターンアドレスを格納し、 前記第1および第2の制御手段は、前記サブル
    ーチンエントリー指示およびリターン指示に応答
    して動作して前記スタツクレベルポインタ記憶手
    段のスタツクレベルポインタの値を制御し、かつ
    さらに 前記第3の制御手段は、各対応のスタツクレベ
    ルポインタ記憶手段により示されるスタツクレベ
    ルから次に最も新しいリターンアドレスをアクセ
    スする、サブルーチン制御回路。 2 前記第1のサブルーチンリターンアドレス記
    憶手段がそれ以上のリターンアドレスを格納する
    ことができなくなつたときを検出し、前記システ
    ムへその状態を示す信号を与える手段をさらに備
    える、特許請求の範囲第1項記載のサブルーチン
    制御回路。 3 前記第1のサブルーチンリターンアドレス記
    憶手段が何も格納していない空状態となつたとき
    を検出し、この検出した空状態を示す信号を前記
    システムへ与える手段をさらに備える、特許請求
    の範囲第2項記載のサブルーチン制御回路。 4 前記システムによつて与えられるタスク識別
    指示に応答して、対応のスタツクレベルポインタ
    記憶手段から対応のスタツクレベルポインタ値を
    アクセスし、識別されたタスク対応のスタツクの
    対応する格納位置にリターンアドレスを格納する
    際に前記第1の制御手段に利用させる手段をさら
    に含む、特許請求の範囲第1項記載のサブルーチ
    ン制御回路。 5 前記第1、第2および第3の制御手段と協動
    し、それらの同時共存動作を与える手段を含む、
    特許請求の範囲第1項ないし第4項のいずれかに
    記載のサブルーチン制御回路。 6 マイクロ命令レベルでタスク実行するデータ
    処理システムにおけるサブルーチン制御方法であ
    つて、前記システムによる前記タスクの実行は1
    個以上のサブルーチンの実行を必要としており、 実行中のタスクがサブルーチンエントリーする
    ときにサブルーチンエントリー指示およびタスク
    識別指示を与えるステツプ、 前記サブルーチンエントリー指示に応答してサ
    ブルーチンリターンアドレスを決定し、この決定
    されたリターンアドレスを識別されたタスクに対
    応する第1のサブルーチンリターンアドレス記憶
    手段へ格納するステツプ、 識別されたタスクに対応する第2のサブルーチ
    ンリターンアドレス記憶手段へも前記決定された
    サブルーチンリターンアドレスを格納するステツ
    プ、前記第2のリターンアドレス記憶手段は前記
    第1のリターンアドレス記憶手段よりも有意に高
    速のアクセスを与え、 実行中のタスクがサブルーチンを出るときにサ
    ブルーチンリターン指示およびタスク識別指示を
    与えるステツプ、 サブルーチンリターン指示に応答して、識別さ
    れたタスク対応の第2のリターンアドレス記憶手
    段に格納されたリターンアドレスをアクセスして
    前記システムへ送出しかつ識別されたタスク対応
    の第1のリターンアドレス記憶手段に格納された
    リターンアドレスのうち次に最も新しいリターン
    アドレスで前記第2のリターンアドレス記憶手段
    の内容を置換えるステツプとを備え、 前記第1のリターンアドレス記憶手段は複数の
    サブルーチンリターンアドレスを格納するスタツ
    クを有し、かつ各スタツクにおけるリターンアド
    レス格納位置を示すスタツクレベルポインタを格
    納するスタツクレベルポインタ記憶手段を含み、 前記第1のリターンアドレス記憶手段へリター
    ンアドレスを格納するステツプは、 前記サブルーチンエントリー指示に応答して前
    記スタツクレベルポインタ記憶手段の示すポイン
    タ値に対応するスタツクの格納位置へリターンア
    ドレスを格納するステツプを含み、 前記第2のリターンアドレス記憶手段の内容を
    置換えるステツプは、 前記サブルーチンリターン指示に応答して、前
    記スタツクレベルポインタ記憶手段が示すポイン
    タ値に対応するスタツクレベルから次に最も新し
    いリターンアドレスをアクセスして前記第2のリ
    ターンアドレス記憶手段へ格納するステツプを含
    み、かつ、前記スタツクレベルポインタ記憶手段
    のポインタ値は前記サブルーチンエントリー指示
    および前記サブルーチンリターン指示に応答して
    制御される、サブルーチン制御方法。
JP57006720A 1981-02-04 1982-01-18 Circuit for and method of controlling subroutine Granted JPS57143642A (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US06/231,553 US4459659A (en) 1981-02-04 1981-02-04 Subroutine control circuitry for providing subroutine operations in a data processing system in which tasks are executed on a microprogrammed level

Publications (2)

Publication Number Publication Date
JPS57143642A JPS57143642A (en) 1982-09-04
JPH0373010B2 true JPH0373010B2 (ja) 1991-11-20

Family

ID=22869714

Family Applications (1)

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

Country Status (4)

Country Link
US (1) US4459659A (ja)
EP (1) EP0057312B1 (ja)
JP (1) JPS57143642A (ja)
DE (1) DE3171416D1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5958039A (en) * 1997-10-28 1999-09-28 Microchip Technology Incorporated Master-slave latches and post increment/decrement operations
US6345353B2 (en) * 1999-07-20 2002-02-05 Microchip Technology Incorporated Stack pointer with post increment/decrement allowing selection from parallel read/write address outputs
JP4286768B2 (ja) 2004-11-30 2009-07-01 富士通株式会社 分岐予測装置およびその制御方法
JP3768516B1 (ja) 2004-12-03 2006-04-19 株式会社ソニー・コンピュータエンタテインメント マルチプロセッサシステムとそのシステムにおけるプログラム実行方法
US10338928B2 (en) * 2011-05-20 2019-07-02 Oracle International Corporation Utilizing a stack head register with a call return stack for each instruction fetch

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS49104536A (ja) * 1973-02-06 1974-10-03
JPS5398753A (en) * 1977-02-09 1978-08-29 Nippon Telegr & Teleph Corp <Ntt> Interrupt processing system

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3805247A (en) * 1972-05-16 1974-04-16 Burroughs Corp Description driven microprogrammable multiprocessor system
US4030075A (en) * 1975-06-30 1977-06-14 Honeywell Information Systems, Inc. Data processing system having distributed priority network
US4156925A (en) * 1976-04-30 1979-05-29 International Business Machines Corporation Overlapped and interleaved control store with address modifiers
US4041462A (en) * 1976-04-30 1977-08-09 International Business Machines Corporation Data processing system featuring subroutine linkage operations using hardware controlled stacks
JPS5311547A (en) * 1976-07-20 1978-02-02 Oki Electric Ind Co Ltd Program call order system
SE403322B (sv) * 1977-02-28 1978-08-07 Ellemtel Utvecklings Ab Anordning i en styrdator for forkortning av exekveringstiden for instruktioner vid indirekt adressering av ett dataminne
JPS5474651A (en) * 1977-11-28 1979-06-14 Toshiba Corp Stack control system
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
US4346435A (en) * 1979-03-23 1982-08-24 Burroughs Corporation Pipelined interpretive digital data processor comprised of a multi-level hierarchy of processors
US4384324A (en) * 1980-05-06 1983-05-17 Burroughs Corporation Microprogrammed digital data processing system employing tasking at a microinstruction level

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS49104536A (ja) * 1973-02-06 1974-10-03
JPS5398753A (en) * 1977-02-09 1978-08-29 Nippon Telegr & Teleph Corp <Ntt> Interrupt processing system

Also Published As

Publication number Publication date
EP0057312A3 (en) 1982-08-18
JPS57143642A (en) 1982-09-04
DE3171416D1 (en) 1985-08-22
US4459659A (en) 1984-07-10
EP0057312A2 (en) 1982-08-11
EP0057312B1 (en) 1985-07-17

Similar Documents

Publication Publication Date Title
EP0368332B1 (en) Pipeline data processor
US4187539A (en) Pipelined data processing system with centralized microprogram control
US4430706A (en) Branch prediction apparatus and method for a data processing system
JP3120152B2 (ja) コンピューターシステム
EP0059810B1 (en) Microprogrammed digital data processing system employing multiphase subroutine control for concurrently executing tasks
US4179731A (en) Microprogrammed control system
US5905881A (en) Delayed state writes for an instruction processor
JPS5911943B2 (ja) デ−タ処理装置の為のトラツプ機構
JPH03116235A (ja) 分岐処理方法及び分岐処理装置
EP0357188B1 (en) Pipelined processor
JPH03116233A (ja) データプロセッサの命令処理システム
US5301331A (en) Interruption handling system
JPH0373010B2 (ja)
JP2002175181A (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
JPS6346856B2 (ja)
US4649472A (en) Multi-phase subroutine control circuitry
JPH0222413B2 (ja)
US5093784A (en) Data processor with efficient transfer between subroutines and main program
US20020129229A1 (en) Microinstruction sequencer stack
JP3102399B2 (ja) データ処理装置及び方法
JP2511063B2 (ja) パイプライン制御方式
JPH06131180A (ja) 命令処理方式および命令処理装置
JP3147884B2 (ja) 記憶装置及び情報処理装置