JPH06250856A - マイクロコンピュータ - Google Patents
マイクロコンピュータInfo
- Publication number
- JPH06250856A JPH06250856A JP3826993A JP3826993A JPH06250856A JP H06250856 A JPH06250856 A JP H06250856A JP 3826993 A JP3826993 A JP 3826993A JP 3826993 A JP3826993 A JP 3826993A JP H06250856 A JPH06250856 A JP H06250856A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- task
- address
- branch
- branch instruction
- 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
Links
Landscapes
- Advance Control (AREA)
Abstract
(57)【要約】
【目的】 複数のタスクを時分割でパイプライン処理す
る際の分岐命令後の無駄サイクルを無くして、パイプラ
インの遅延を防止する。 【構成】 2つのタスク(CPU0,CPU1)を時分
割で並行にパイプライン処理する際に、例えば、CPU
0のX+1番地の命令が分岐命令(JMP)であるとす
ると、このX+1番地の分岐命令をデコードする命令デ
コードステージで、分岐先アドレス(XX番地)をセッ
トし、当該分岐命令が含まれるタスク(CPU0)の次
の命令フェッチステージで、分岐先アドレス(XX番
地)の命令をフェッチする。このため、分岐命令があっ
ても、パイプラインに無駄サイクルが生じることは無
い。一般に、N個のタスクを時分割でパイプライン処理
する場合には、分岐先アドレスのセット(分岐命令実
行)を、当該分岐命令のフェッチ後、(N−1)サイク
ルの間に行えば良い。
る際の分岐命令後の無駄サイクルを無くして、パイプラ
インの遅延を防止する。 【構成】 2つのタスク(CPU0,CPU1)を時分
割で並行にパイプライン処理する際に、例えば、CPU
0のX+1番地の命令が分岐命令(JMP)であるとす
ると、このX+1番地の分岐命令をデコードする命令デ
コードステージで、分岐先アドレス(XX番地)をセッ
トし、当該分岐命令が含まれるタスク(CPU0)の次
の命令フェッチステージで、分岐先アドレス(XX番
地)の命令をフェッチする。このため、分岐命令があっ
ても、パイプラインに無駄サイクルが生じることは無
い。一般に、N個のタスクを時分割でパイプライン処理
する場合には、分岐先アドレスのセット(分岐命令実
行)を、当該分岐命令のフェッチ後、(N−1)サイク
ルの間に行えば良い。
Description
【0001】
【産業上の利用分野】本発明は、パイプライン処理する
機能を備えたマイクロコンピュータに関するものであ
る。
機能を備えたマイクロコンピュータに関するものであ
る。
【0002】
【従来の技術】近年のマイクロコンピュータにおいて
は、複数のタスクを並行処理するために、例えば、特開
昭58−155406号公報、特開昭59−19165
4号公報等に記載されているように、複数のタスクの処
理をレジスタカウンタやマルチプレクサにより順次切り
替えることで、複数のタスクを時分割並行処理するよう
にしたものがある。
は、複数のタスクを並行処理するために、例えば、特開
昭58−155406号公報、特開昭59−19165
4号公報等に記載されているように、複数のタスクの処
理をレジスタカウンタやマルチプレクサにより順次切り
替えることで、複数のタスクを時分割並行処理するよう
にしたものがある。
【0003】
【発明が解決しようとする課題】従来のパイプライン処
理では、分岐命令が実行されると、パイプラインの乱れ
が生じ、最低でも1サイクルの無駄サイクル(遅延サイ
クル)が生じて、パイプライン処理が遅延するという問
題があった。従来のパイプライン処理において、分岐命
令後に無駄サイクルが生じる原因は、分岐命令後でも、
その分岐先アドレスとは関係なく、次にフェッチする命
令のアドレスが予め順番に決められていて、この命令
(無駄な命令)がフェッチされた後でしか、分岐先アド
レスの命令がフェッチできないようになっているためで
ある。
理では、分岐命令が実行されると、パイプラインの乱れ
が生じ、最低でも1サイクルの無駄サイクル(遅延サイ
クル)が生じて、パイプライン処理が遅延するという問
題があった。従来のパイプライン処理において、分岐命
令後に無駄サイクルが生じる原因は、分岐命令後でも、
その分岐先アドレスとは関係なく、次にフェッチする命
令のアドレスが予め順番に決められていて、この命令
(無駄な命令)がフェッチされた後でしか、分岐先アド
レスの命令がフェッチできないようになっているためで
ある。
【0004】本発明はこのような事情を考慮してなされ
たもので、その目的は、複数のタスクのプログラムを時
分割で並行にパイプライン処理させ、分岐命令後の無駄
サイクルを利用することにより遅延なく迅速にパイプラ
イン処理することができるマイクロコンピュータを提供
することにある。
たもので、その目的は、複数のタスクのプログラムを時
分割で並行にパイプライン処理させ、分岐命令後の無駄
サイクルを利用することにより遅延なく迅速にパイプラ
イン処理することができるマイクロコンピュータを提供
することにある。
【0005】
【課題を解決するための手段】上記目的を達成するため
に、本発明のマイクロコンピュータは、N個のプログラ
ムを数サイクルごとに一定時分割で切り替えながら並行
にパイプライン処理する機能を備えたものにおいて、前
記各プログラムに含まれる分岐命令をフェッチしたとき
には、当該分岐命令が含まれるプログラムの次の命令フ
ェッチステージの1サイクル前までに実行終了し、当該
分岐命令が含まれるプログラムの次の命令フェッチステ
ージで、分岐先アドレスの命令をフェッチできて遅延サ
イクルが生じない構成としたものである。
に、本発明のマイクロコンピュータは、N個のプログラ
ムを数サイクルごとに一定時分割で切り替えながら並行
にパイプライン処理する機能を備えたものにおいて、前
記各プログラムに含まれる分岐命令をフェッチしたとき
には、当該分岐命令が含まれるプログラムの次の命令フ
ェッチステージの1サイクル前までに実行終了し、当該
分岐命令が含まれるプログラムの次の命令フェッチステ
ージで、分岐先アドレスの命令をフェッチできて遅延サ
イクルが生じない構成としたものである。
【0006】
【作用】上記構成によれば、複数のタスクのプログラム
を数サイクルごとに一定時分割で切り替えながら並行に
パイプライン処理する。例えば、2つのタスクのプログ
ラムをパイプライン処理する場合には、図4に示すよう
に、一方のタスク(CPU0)のX+1番地の命令が分
岐命令(JMP)であるとすると、このX+1番地の分
岐命令をデコードする命令デコードステージで、分岐先
アドレス(XX番地)をセットし、当該分岐命令が含ま
れるタスク(CPU0)の次の命令フェッチステージ
で、分岐先アドレス(XX番地)の命令をフェッチす
る。このため、分岐命令があっても、パイプラインに無
駄サイクル(遅延サイクル)が生じることは無く、パイ
プラインの遅延を防止できる。
を数サイクルごとに一定時分割で切り替えながら並行に
パイプライン処理する。例えば、2つのタスクのプログ
ラムをパイプライン処理する場合には、図4に示すよう
に、一方のタスク(CPU0)のX+1番地の命令が分
岐命令(JMP)であるとすると、このX+1番地の分
岐命令をデコードする命令デコードステージで、分岐先
アドレス(XX番地)をセットし、当該分岐命令が含ま
れるタスク(CPU0)の次の命令フェッチステージ
で、分岐先アドレス(XX番地)の命令をフェッチす
る。このため、分岐命令があっても、パイプラインに無
駄サイクル(遅延サイクル)が生じることは無く、パイ
プラインの遅延を防止できる。
【0007】
【実施例】以下、本発明の一実施例を図面に基づいて説
明する。本実施例のマイクロコンピュータは、例えばワ
ンチップマイクロコンピュータにより構成され、CPU
11と、ROMにより構成されたプログラムメモリ12
と、RAMにより構成されたデータメモリ13と、I/
Oブロック14(入出力ピン)と、後述するCPU切替
信号(クロック信号)を発生するタイミングジェネレー
タ(図示せず)と、データを送受信するデータバス15
と、アドレス信号を送受信するアドレスバス16と、リ
ード信号とライト信号をそれぞれ送受信するコントロー
ルバス17,18とを備えている。
明する。本実施例のマイクロコンピュータは、例えばワ
ンチップマイクロコンピュータにより構成され、CPU
11と、ROMにより構成されたプログラムメモリ12
と、RAMにより構成されたデータメモリ13と、I/
Oブロック14(入出力ピン)と、後述するCPU切替
信号(クロック信号)を発生するタイミングジェネレー
タ(図示せず)と、データを送受信するデータバス15
と、アドレス信号を送受信するアドレスバス16と、リ
ード信号とライト信号をそれぞれ送受信するコントロー
ルバス17,18とを備えている。
【0008】上記CPU11は、例えば、2種類のタス
ク(Lタスク,Aタスク)を時分割で並行にパイプライ
ン処理するために、2つのアドレスレジスタ19,20
と2つの演算レジスタ21,22を備え、これらアドレ
スレジスタ19,20と演算レジスタ21,22をタイ
ミングジェネレータにより発生したCPU切替信号によ
り交互に切り替えることで、見掛上、2つのCPUを交
互に切り替えて動作させるように機能する。この場合、
一方のアドレスレジスタ19と演算レジスタ21がCP
U0用(Lタスク用)のレジスタとなり、他方のアドレ
スレジスタ20と演算レジスタ22がCPU1用(Aタ
スク用)のレジスタとなる。これらアドレスレジスタ1
9,20の切替えに応じてプログラムカウンタ23の値
(次にフェッチする命令のアドレス)が更新され、この
プログラムカウンタ23からCPU0用(Lタスク用)
とCPU1用(Aタスク用)のアドレス信号が交互にプ
ログラムメモリ12に出力される。
ク(Lタスク,Aタスク)を時分割で並行にパイプライ
ン処理するために、2つのアドレスレジスタ19,20
と2つの演算レジスタ21,22を備え、これらアドレ
スレジスタ19,20と演算レジスタ21,22をタイ
ミングジェネレータにより発生したCPU切替信号によ
り交互に切り替えることで、見掛上、2つのCPUを交
互に切り替えて動作させるように機能する。この場合、
一方のアドレスレジスタ19と演算レジスタ21がCP
U0用(Lタスク用)のレジスタとなり、他方のアドレ
スレジスタ20と演算レジスタ22がCPU1用(Aタ
スク用)のレジスタとなる。これらアドレスレジスタ1
9,20の切替えに応じてプログラムカウンタ23の値
(次にフェッチする命令のアドレス)が更新され、この
プログラムカウンタ23からCPU0用(Lタスク用)
とCPU1用(Aタスク用)のアドレス信号が交互にプ
ログラムメモリ12に出力される。
【0009】また、CPU11内には、プログラムメモ
リ12から読み込まれた命令の属するタスクの種類を判
別してそのエラーを検出するエラー検出回路24と、こ
のエラー検出回路24を通過した命令をデコード(解
読)する命令デコーダ・命令シーケンサ25が設けら
れ、この命令デコーダ・命令シーケンサ25によりデコ
ードした命令の内容に応じて、演算器26(ALU)で
演算レジスタ21,22を用いて演算したり、リード信
号又はライト信号をコントロールバス17,18に出力
するようになっている。
リ12から読み込まれた命令の属するタスクの種類を判
別してそのエラーを検出するエラー検出回路24と、こ
のエラー検出回路24を通過した命令をデコード(解
読)する命令デコーダ・命令シーケンサ25が設けら
れ、この命令デコーダ・命令シーケンサ25によりデコ
ードした命令の内容に応じて、演算器26(ALU)で
演算レジスタ21,22を用いて演算したり、リード信
号又はライト信号をコントロールバス17,18に出力
するようになっている。
【0010】一方、プログラムメモリ12内には、CP
U0用(Lタスク用)のプログラム領域27と、CPU
1用(Aタスク用)のプログラム領域28と、テーブル
即値データ領域29とが設けられている。この場合、C
PU0用のプログラム領域27に格納されたLタスク
は、プログラム暴走に至る危険性のある分岐命令が禁止
された固定ループ化されたプログラムで構成されてい
る。これにより、Lタスクのプログラムの実行時には0
番地から実行を開始し、1番地,2番地,3番地,…と
順々に命令を実行していき、その後、所定番地まで行く
と、プログラムカウンタ23がオーバーフローして0番
地に戻り、以後、上述した番地順の命令実行を繰り返す
ようになる。また、このLタスクは、命令が全て1ワー
ド命令に固定されている。この理由は、命令のワード数
が固定されていない命令体系(例えば1ワード命令もあ
れば、2ワード命令もあるという命令体系)では、2ワ
ード命令を読み間違えて1ワード命令と解釈した場合
に、次のワードは本来の命令ではないので、何を実行す
るか分からないからである。
U0用(Lタスク用)のプログラム領域27と、CPU
1用(Aタスク用)のプログラム領域28と、テーブル
即値データ領域29とが設けられている。この場合、C
PU0用のプログラム領域27に格納されたLタスク
は、プログラム暴走に至る危険性のある分岐命令が禁止
された固定ループ化されたプログラムで構成されてい
る。これにより、Lタスクのプログラムの実行時には0
番地から実行を開始し、1番地,2番地,3番地,…と
順々に命令を実行していき、その後、所定番地まで行く
と、プログラムカウンタ23がオーバーフローして0番
地に戻り、以後、上述した番地順の命令実行を繰り返す
ようになる。また、このLタスクは、命令が全て1ワー
ド命令に固定されている。この理由は、命令のワード数
が固定されていない命令体系(例えば1ワード命令もあ
れば、2ワード命令もあるという命令体系)では、2ワ
ード命令を読み間違えて1ワード命令と解釈した場合
に、次のワードは本来の命令ではないので、何を実行す
るか分からないからである。
【0011】このLタスクは、シーケンス制御の処理を
行うのに適し、そのプログラム中に、他のタスクである
Aタスクの暴走監視用のルーチンと、システムのフェイ
ルセーフを成立させるためのバックアップシーケンス用
のルーチンが含まれている。更に、このLタスクは、固
定ループ動作によるタイマとしての機能も備え、例えば
インクリメント命令又はデクリメント命令を実行させて
そのカウント値が所定の設定値に達したときに、Aタス
クの処理に割込みを発生させることで、タイマ割込みと
等価な定時間処理が可能となっている。
行うのに適し、そのプログラム中に、他のタスクである
Aタスクの暴走監視用のルーチンと、システムのフェイ
ルセーフを成立させるためのバックアップシーケンス用
のルーチンが含まれている。更に、このLタスクは、固
定ループ動作によるタイマとしての機能も備え、例えば
インクリメント命令又はデクリメント命令を実行させて
そのカウント値が所定の設定値に達したときに、Aタス
クの処理に割込みを発生させることで、タイマ割込みと
等価な定時間処理が可能となっている。
【0012】一方、Aタスクは、Lタスクで禁止されて
いる分岐命令も許容されており、例えば複雑な解析処理
・数値処理に適している。このAタスクについても、L
タスクと同じく、命令が全て1ワード命令に固定されて
いる。このAタスクとLタスクは、1ワード内にオペコ
ードとオペランド(アドレス)の両方が割り付けられて
いる。
いる分岐命令も許容されており、例えば複雑な解析処理
・数値処理に適している。このAタスクについても、L
タスクと同じく、命令が全て1ワード命令に固定されて
いる。このAタスクとLタスクは、1ワード内にオペコ
ードとオペランド(アドレス)の両方が割り付けられて
いる。
【0013】また、図2に示すように、プログラムメモ
リ12内のCPU0・CPU1のプログラム領域27,
28に格納されたLタスク・Aタスクのプログラムの各
命令には、タスクの種類を判別するタスク判別ビット3
0が例えばMSB(最上位ビット)に設けられている。
本実施例では、タスク判別ビット30をパリティビット
とし、Lタスクを奇数パリティ、Aタスクを偶数パリテ
ィとしている。この場合、タスク判別のみではなく、命
令コードチェックも実施できる。
リ12内のCPU0・CPU1のプログラム領域27,
28に格納されたLタスク・Aタスクのプログラムの各
命令には、タスクの種類を判別するタスク判別ビット3
0が例えばMSB(最上位ビット)に設けられている。
本実施例では、タスク判別ビット30をパリティビット
とし、Lタスクを奇数パリティ、Aタスクを偶数パリテ
ィとしている。この場合、タスク判別のみではなく、命
令コードチェックも実施できる。
【0014】これに対応して、CPU11内には、プロ
グラムメモリ12から読み込まれた命令の属するタスク
の種類をパリティチェックにより判別してそのエラーを
検出するエラー検出回路24が設けられている。このエ
ラー検出回路24は、ノイズ等の予期せぬ原因により誤
って他のタスクを実行し始めようとしているか否かを検
出するもので、図3に示すように、タスク判別回路3
1,エラーフラグ回路32,ノーオペレーション(NO
P)コード回路33,ハイアクティブ型・ローアクティ
ブ型の両トランスファゲート34,35から構成されて
いる。
グラムメモリ12から読み込まれた命令の属するタスク
の種類をパリティチェックにより判別してそのエラーを
検出するエラー検出回路24が設けられている。このエ
ラー検出回路24は、ノイズ等の予期せぬ原因により誤
って他のタスクを実行し始めようとしているか否かを検
出するもので、図3に示すように、タスク判別回路3
1,エラーフラグ回路32,ノーオペレーション(NO
P)コード回路33,ハイアクティブ型・ローアクティ
ブ型の両トランスファゲート34,35から構成されて
いる。
【0015】上記タスク判別回路31は、プログラムメ
モリ12から読み込まれた命令の属するタスクの種類を
パリティチェックにより判別し(即ち奇数パリティであ
ればLタスク、偶数パリティであればAタスクと判別
し)、この判別結果をCPU切替信号と比較して、エラ
ーが発生しているか否かを判定し、もし、エラーが発生
していれば、エラーフラグ回路32へエラー信号(ハイ
レベル信号)を出力し、エラーが発生しているタスクの
アドレスレジスタ19,20をリセットする。この際、
エラー信号(ハイレベル信号)を、両トランスファゲー
ト34,35のコントロール端子にも与えて、ハイアク
ティブ型のトランスファーゲート34をオンさせ、NO
Pコード回路33から命令デコーダ・命令シーケンサ2
5へNOPコードの信号を出力する一方、ローアクティ
ブ型のトランスファーゲート35をオフさせて、命令デ
コーダ・命令シーケンサ25への命令の通過を阻止す
る。このため、ノイズ等の予期せぬ原因により誤って他
のタスクのアドレスに分岐してその命令を実行し始めよ
うとした場合には、即座に1命令サイクルでNOPとす
ることができて、メモリデータ,ポートデータ等の破壊
を未然に防止できる。
モリ12から読み込まれた命令の属するタスクの種類を
パリティチェックにより判別し(即ち奇数パリティであ
ればLタスク、偶数パリティであればAタスクと判別
し)、この判別結果をCPU切替信号と比較して、エラ
ーが発生しているか否かを判定し、もし、エラーが発生
していれば、エラーフラグ回路32へエラー信号(ハイ
レベル信号)を出力し、エラーが発生しているタスクの
アドレスレジスタ19,20をリセットする。この際、
エラー信号(ハイレベル信号)を、両トランスファゲー
ト34,35のコントロール端子にも与えて、ハイアク
ティブ型のトランスファーゲート34をオンさせ、NO
Pコード回路33から命令デコーダ・命令シーケンサ2
5へNOPコードの信号を出力する一方、ローアクティ
ブ型のトランスファーゲート35をオフさせて、命令デ
コーダ・命令シーケンサ25への命令の通過を阻止す
る。このため、ノイズ等の予期せぬ原因により誤って他
のタスクのアドレスに分岐してその命令を実行し始めよ
うとした場合には、即座に1命令サイクルでNOPとす
ることができて、メモリデータ,ポートデータ等の破壊
を未然に防止できる。
【0016】一方、エラーが発生していない場合には、
タスク判別回路31の出力をローレベルに維持して、ハ
イアクティブ型のトランスファーゲート34をオフさ
せ、NOPコードの通過を阻止する一方、ローアクティ
ブ型のトランスファーゲート35をオンさせて、命令デ
コーダ・命令シーケンサ25への命令の通過を許容する
ようになっている。
タスク判別回路31の出力をローレベルに維持して、ハ
イアクティブ型のトランスファーゲート34をオフさ
せ、NOPコードの通過を阻止する一方、ローアクティ
ブ型のトランスファーゲート35をオンさせて、命令デ
コーダ・命令シーケンサ25への命令の通過を許容する
ようになっている。
【0017】ところで、従来構成のものでは、多ワード
命令構成の場合、オペコード・オペランドの誤認識が、
プログラム暴走やデータメモリ内の重要情報の大量破壊
を招く原因となっていた。また、アドレスエラー等によ
り、プログラムアドレスがテーブル即値データ領域29
のアドレスに分岐し、テーブル即値データをオペコード
として認識して実行を開始し、プログラム暴走やデータ
メモリ内の重要情報の大量破壊を招く可能性もあった。
命令構成の場合、オペコード・オペランドの誤認識が、
プログラム暴走やデータメモリ内の重要情報の大量破壊
を招く原因となっていた。また、アドレスエラー等によ
り、プログラムアドレスがテーブル即値データ領域29
のアドレスに分岐し、テーブル即値データをオペコード
として認識して実行を開始し、プログラム暴走やデータ
メモリ内の重要情報の大量破壊を招く可能性もあった。
【0018】これに対して、本実施例では、全命令を1
ワード固定長の設計とし、1ワード内にオペコードとオ
ペランドの両方を割り付けている。また、アドレス構成
は、プログラムメモリアドレスとデータメモリアドレス
を完全に分離している。この構成により、オペコード・
オペランドの誤認識やデータメモリ内データの命令実行
等によるプログラム暴走を未然に防止できる。
ワード固定長の設計とし、1ワード内にオペコードとオ
ペランドの両方を割り付けている。また、アドレス構成
は、プログラムメモリアドレスとデータメモリアドレス
を完全に分離している。この構成により、オペコード・
オペランドの誤認識やデータメモリ内データの命令実行
等によるプログラム暴走を未然に防止できる。
【0019】また、本実施例のオペコードは、分岐命令
等の危険命令と、その他の命令との割り付けを分けてあ
り、オペコード内の特定ビットで判別できる構成となっ
ている。図2の要注意命令判別ビット37がこれに該当
する。この要注意命令判別ビット37が“0”の場合、
全てデータメモリ13から演算レジスタ21,22への
演算転送命令である。テーブル即値データ領域29で
は、要注意命令判別ビット37に“0”を埋め込む。
等の危険命令と、その他の命令との割り付けを分けてあ
り、オペコード内の特定ビットで判別できる構成となっ
ている。図2の要注意命令判別ビット37がこれに該当
する。この要注意命令判別ビット37が“0”の場合、
全てデータメモリ13から演算レジスタ21,22への
演算転送命令である。テーブル即値データ領域29で
は、要注意命令判別ビット37に“0”を埋め込む。
【0020】万一、アドレスエラー等により、プログラ
ムアドレスがテーブル即値データ領域29のアドレスに
分岐し、テーブル即値データをオペコードとして認識し
て実行を開始したとしても、要注意命令判別ビット37
にセットされた値“0”により、データメモリ13から
演算レジスタ21,22への演算転送命令を継続するの
みであり、データメモリ13内の重要情報は保守され
る。しかも、演算レジスタ21,22への演算転送命令
実行終了後は、テーブル即値データ領域29の最後に記
述されている初期化処理等のエラー処理ルーチン38が
実行される。これにより、従来のウォッチドッグタイマ
等による外部監視法よりも遥かに速い応答性で、エラー
検出からエラー処理までの処理を行うことができる。
ムアドレスがテーブル即値データ領域29のアドレスに
分岐し、テーブル即値データをオペコードとして認識し
て実行を開始したとしても、要注意命令判別ビット37
にセットされた値“0”により、データメモリ13から
演算レジスタ21,22への演算転送命令を継続するの
みであり、データメモリ13内の重要情報は保守され
る。しかも、演算レジスタ21,22への演算転送命令
実行終了後は、テーブル即値データ領域29の最後に記
述されている初期化処理等のエラー処理ルーチン38が
実行される。これにより、従来のウォッチドッグタイマ
等による外部監視法よりも遥かに速い応答性で、エラー
検出からエラー処理までの処理を行うことができる。
【0021】次に、本実施例で採用するパイプライン制
御方式について図4に基づいて説明する。本実施例のパ
イプラインは、例えば、命令フェッチ,命令デコード,
命令実行の各ステージからなる3段のパイプラインとし
て構成され、全命令がこの3段のパイプラインで遅滞な
く処理できるように設計されている。各ステージはそれ
ぞれ1サイクルで実行され、3サイクルで1命令を実行
するようになっているが、3段のパイプラインにより3
つの命令を並列処理することで、見掛上、1命令を1サ
イクルで実行するのと等価となっている。1サイクル
(各ステージ)の時間は、タイミングジェネレータから
出力されるCPU切替信号(クロック信号)により規定
されている。このCPU切替信号は、ローレベルの時間
TLoとハイレベルの時間THiとが同一であり、このCP
U切替信号のローレベル期間でCPU0(Lタスク)の
命令フェッチを行い、ハイレベル期間でCPU1(Aタ
スク)の命令フェッチを行うことにより、CPU0(L
タスク)とCPU1(Aタスク)の両プログラムを1:
1の時分割比で並行にパイプライン処理するようになっ
ている。これにより、両タスクの命令フェッチと命令デ
コードは、逆CPU関係(一方のタスクの命令をフェッ
チしている間に他方のタスクの命令をデコードする関
係)となっている。
御方式について図4に基づいて説明する。本実施例のパ
イプラインは、例えば、命令フェッチ,命令デコード,
命令実行の各ステージからなる3段のパイプラインとし
て構成され、全命令がこの3段のパイプラインで遅滞な
く処理できるように設計されている。各ステージはそれ
ぞれ1サイクルで実行され、3サイクルで1命令を実行
するようになっているが、3段のパイプラインにより3
つの命令を並列処理することで、見掛上、1命令を1サ
イクルで実行するのと等価となっている。1サイクル
(各ステージ)の時間は、タイミングジェネレータから
出力されるCPU切替信号(クロック信号)により規定
されている。このCPU切替信号は、ローレベルの時間
TLoとハイレベルの時間THiとが同一であり、このCP
U切替信号のローレベル期間でCPU0(Lタスク)の
命令フェッチを行い、ハイレベル期間でCPU1(Aタ
スク)の命令フェッチを行うことにより、CPU0(L
タスク)とCPU1(Aタスク)の両プログラムを1:
1の時分割比で並行にパイプライン処理するようになっ
ている。これにより、両タスクの命令フェッチと命令デ
コードは、逆CPU関係(一方のタスクの命令をフェッ
チしている間に他方のタスクの命令をデコードする関
係)となっている。
【0022】また、例えばCPU1(Aタスク)が複数
のサイクルを要する命令をフェッチした場合、CPU切
替信号によるプログラムの切替時に、この命令は実行途
中で切り替えられることになるが、この場合、命令デコ
ーダ・命令シーケンサ25が命令サイクル状態を記憶し
ており、次のCPU1のサイクルに、命令の途中状態よ
り実行開始し、必要サイクル数使って実行完了する。つ
まり、命令の必要サイクル数によらず、1:1の時分割
比で切り替えられる。このため、CPU0(Lタスク)
とCPU1(Aタスク)は、時間的独立性が確保され、
2つのCPUが存在しているように動作する。
のサイクルを要する命令をフェッチした場合、CPU切
替信号によるプログラムの切替時に、この命令は実行途
中で切り替えられることになるが、この場合、命令デコ
ーダ・命令シーケンサ25が命令サイクル状態を記憶し
ており、次のCPU1のサイクルに、命令の途中状態よ
り実行開始し、必要サイクル数使って実行完了する。つ
まり、命令の必要サイクル数によらず、1:1の時分割
比で切り替えられる。このため、CPU0(Lタスク)
とCPU1(Aタスク)は、時間的独立性が確保され、
2つのCPUが存在しているように動作する。
【0023】更に、本実施例では、各タスクのプログラ
ムに含まれる分岐命令をフェッチしたときには、当該分
岐命令が含まれるタスクの次の命令フェッチステージで
分岐先アドレスの命令をフェッチするために、命令デコ
ードステージで、分岐先アドレスをセットするように構
成されている。
ムに含まれる分岐命令をフェッチしたときには、当該分
岐命令が含まれるタスクの次の命令フェッチステージで
分岐先アドレスの命令をフェッチするために、命令デコ
ードステージで、分岐先アドレスをセットするように構
成されている。
【0024】本実施例のパイプライン処理の手順は、図
4に示すように、CPU切替信号によりCPU0(Lタ
スク)の命令フェッチとCPU1(Aタスク)の命令フ
ェッチとを1:1の時分割比で交互に繰り返し、一方の
タスクの命令をフェッチしている間に他方のタスクの命
令(1サイクル前にフェッチされた命令)をデコードす
ると共に、他方のタスクの命令をデコードしている間に
一方のタスクの命令(1サイクル前にデコードされた命
令)を実行する。これにより、2つのタスクのプログラ
ムを1:1の時分割比で並行にパイプライン処理するも
のである。
4に示すように、CPU切替信号によりCPU0(Lタ
スク)の命令フェッチとCPU1(Aタスク)の命令フ
ェッチとを1:1の時分割比で交互に繰り返し、一方の
タスクの命令をフェッチしている間に他方のタスクの命
令(1サイクル前にフェッチされた命令)をデコードす
ると共に、他方のタスクの命令をデコードしている間に
一方のタスクの命令(1サイクル前にデコードされた命
令)を実行する。これにより、2つのタスクのプログラ
ムを1:1の時分割比で並行にパイプライン処理するも
のである。
【0025】このパイプライン処理中に、図4に示すよ
うに、例えば、CPU0のX+1番地の命令が分岐命令
(JMP)であるとすると、このX+1番地の分岐命令
をデコードする命令デコードステージで、分岐先アドレ
ス(XX番地)をセットし、当該分岐命令が含まれるタ
スク(CPU0)の次の命令フェッチステージで、分岐
先アドレス(XX番地)の命令をフェッチする。このた
め、分岐命令があっても、パイプラインに無駄サイクル
(遅延サイクル)が生じることは無く、パイプラインの
遅延を防止できる。この場合、分岐先アドレスのセット
(分岐命令実行)を命令デコードステージで行う結果、
分岐命令については命令実行ステージで何も処理を行わ
ないことになる。
うに、例えば、CPU0のX+1番地の命令が分岐命令
(JMP)であるとすると、このX+1番地の分岐命令
をデコードする命令デコードステージで、分岐先アドレ
ス(XX番地)をセットし、当該分岐命令が含まれるタ
スク(CPU0)の次の命令フェッチステージで、分岐
先アドレス(XX番地)の命令をフェッチする。このた
め、分岐命令があっても、パイプラインに無駄サイクル
(遅延サイクル)が生じることは無く、パイプラインの
遅延を防止できる。この場合、分岐先アドレスのセット
(分岐命令実行)を命令デコードステージで行う結果、
分岐命令については命令実行ステージで何も処理を行わ
ないことになる。
【0026】以上説明した本実施例では、2つのタスク
を一定時分割でパイプライン処理するようにした例であ
るが、3つ以上のタスクを時分割でパイプライン処理す
るようにしても良い。一般に、N個のタスクを時分割で
パイプライン処理する場合には、分岐先アドレスのセッ
ト(分岐命令実行)を、当該分岐命令のフェッチ後、
(N−1)サイクルの間に行えば、分岐命令後の無駄サ
イクルを防止できる。この関係から、本実施例のように
2つのタスクをパイプライン処理する場合には、分岐命
令のフェッチ直後のサイクル(即ち命令デコードステー
ジ)で分岐先アドレスをセットする必要があるが、例え
ば3つのタスクをパイプライン処理する場合には、分岐
命令のフェッチ後の2サイクルの間に分岐先アドレスを
セットすれば良い。このように、タスクが3つの場合に
は、分岐命令のフェッチ後、分岐先アドレスのセットを
2サイクルかけて行えば良いので、分岐命令のアドレス
指定方式がアドレス計算を必要とする相対アドレス指定
等であっても、当該分岐命令が含まれるタスクの次の命
令フェッチステージまでに分岐先アドレスのセットを行
うことができる。
を一定時分割でパイプライン処理するようにした例であ
るが、3つ以上のタスクを時分割でパイプライン処理す
るようにしても良い。一般に、N個のタスクを時分割で
パイプライン処理する場合には、分岐先アドレスのセッ
ト(分岐命令実行)を、当該分岐命令のフェッチ後、
(N−1)サイクルの間に行えば、分岐命令後の無駄サ
イクルを防止できる。この関係から、本実施例のように
2つのタスクをパイプライン処理する場合には、分岐命
令のフェッチ直後のサイクル(即ち命令デコードステー
ジ)で分岐先アドレスをセットする必要があるが、例え
ば3つのタスクをパイプライン処理する場合には、分岐
命令のフェッチ後の2サイクルの間に分岐先アドレスを
セットすれば良い。このように、タスクが3つの場合に
は、分岐命令のフェッチ後、分岐先アドレスのセットを
2サイクルかけて行えば良いので、分岐命令のアドレス
指定方式がアドレス計算を必要とする相対アドレス指定
等であっても、当該分岐命令が含まれるタスクの次の命
令フェッチステージまでに分岐先アドレスのセットを行
うことができる。
【0027】尚、本実施例では、パイプラインを、命令
フェッチ,命令デコード,命令実行の各ステージからな
る3段のパイプラインとして構成したが、4段以上のパ
イプラインとして構成しても良い等、本発明は、要旨を
逸脱しない範囲内で種々変更して実施できることは言う
までもない。
フェッチ,命令デコード,命令実行の各ステージからな
る3段のパイプラインとして構成したが、4段以上のパ
イプラインとして構成しても良い等、本発明は、要旨を
逸脱しない範囲内で種々変更して実施できることは言う
までもない。
【0028】
【発明の効果】以上の説明から明らかなように、本発明
によれば、複数のタスクのプログラムを一定時分割で並
行にパイプライン処理する際に、各タスクのプログラム
に含まれる分岐命令をフェッチしたときには、当該分岐
命令が含まれるタスクの次の命令フェッチステージで、
分岐先アドレスの命令をフェッチするように構成したの
で、分岐命令後の無駄サイクルを無くすことができて、
パイプラインの遅延を防止することができ、複数のタス
クを遅延なく迅速にパイプライン処理することができる
という優れた効果を奏する。
によれば、複数のタスクのプログラムを一定時分割で並
行にパイプライン処理する際に、各タスクのプログラム
に含まれる分岐命令をフェッチしたときには、当該分岐
命令が含まれるタスクの次の命令フェッチステージで、
分岐先アドレスの命令をフェッチするように構成したの
で、分岐命令後の無駄サイクルを無くすことができて、
パイプラインの遅延を防止することができ、複数のタス
クを遅延なく迅速にパイプライン処理することができる
という優れた効果を奏する。
【図1】本発明の一実施例を示すマイクロコンピュータ
のブロック図
のブロック図
【図2】プログラムメモリ内におけるプログラムとテー
ブル即値データの格納状態を概念的に示す図
ブル即値データの格納状態を概念的に示す図
【図3】エラー検出回路の具体的構成を示すブロック図
【図4】パイプライン処理を説明するタイムチャート
11…CPU、12…プログラムメモリ、13…データ
メモリ、19,20…アドレスレジスタ、21,22…
演算レジスタ、23…プログラムカウンタ、24…エラ
ー検出回路、25…命令デコーダ・命令シーケンサ、2
6…演算器、27…CPU0(Lタスク)プログラム領
域、28…CPU1(Aタスク)プログラム領域、29
…テーブル即値データ領域、30…タスク判定ビット、
36,37…要注意命令判定ビット。
メモリ、19,20…アドレスレジスタ、21,22…
演算レジスタ、23…プログラムカウンタ、24…エラ
ー検出回路、25…命令デコーダ・命令シーケンサ、2
6…演算器、27…CPU0(Lタスク)プログラム領
域、28…CPU1(Aタスク)プログラム領域、29
…テーブル即値データ領域、30…タスク判定ビット、
36,37…要注意命令判定ビット。
Claims (1)
- 【請求項1】 N個のプログラムを数サイクルごとに一
定時分割で切り替えながら並行にパイプライン処理する
機能を備えたマイクロコンピュータにおいて、前記各プ
ログラムに含まれる分岐命令をフェッチしたときには、
当該分岐命令が含まれるプログラムの次の命令フェッチ
ステージの1サイクル前までに実行終了し、当該分岐命
令が含まれるプログラムの次の命令フェッチステージ
で、分岐先アドレスの命令をフェッチできて遅延サイク
ルが生じない構成としたことを特徴とするマイクロコン
ピュータ。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP3826993A JPH06250856A (ja) | 1993-02-26 | 1993-02-26 | マイクロコンピュータ |
DE69418916T DE69418916T2 (de) | 1993-02-26 | 1994-02-25 | Multitaskingverarbeitungseinheit |
US08/202,181 US6304957B1 (en) | 1993-02-26 | 1994-02-25 | Multitask processing unit |
EP94102917A EP0613085B1 (en) | 1993-02-26 | 1994-02-25 | Multitask processing unit |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP3826993A JPH06250856A (ja) | 1993-02-26 | 1993-02-26 | マイクロコンピュータ |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH06250856A true JPH06250856A (ja) | 1994-09-09 |
Family
ID=12520603
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP3826993A Pending JPH06250856A (ja) | 1993-02-26 | 1993-02-26 | マイクロコンピュータ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH06250856A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5930518A (en) * | 1995-12-20 | 1999-07-27 | Matsushita Electric Industrial Co., Ltd. | Arithmetic unit |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5099652A (ja) * | 1973-12-29 | 1975-08-07 | ||
JPS60252954A (ja) * | 1984-05-30 | 1985-12-13 | Fujitsu Ltd | プログラム制御回路 |
JPH03294930A (ja) * | 1990-04-11 | 1991-12-26 | Matsushita Electric Ind Co Ltd | 演算処理方法および演算処理装置 |
-
1993
- 1993-02-26 JP JP3826993A patent/JPH06250856A/ja active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5099652A (ja) * | 1973-12-29 | 1975-08-07 | ||
JPS60252954A (ja) * | 1984-05-30 | 1985-12-13 | Fujitsu Ltd | プログラム制御回路 |
JPH03294930A (ja) * | 1990-04-11 | 1991-12-26 | Matsushita Electric Ind Co Ltd | 演算処理方法および演算処理装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5930518A (en) * | 1995-12-20 | 1999-07-27 | Matsushita Electric Industrial Co., Ltd. | Arithmetic unit |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100588790B1 (ko) | 데이터처리기에서의후속명령처리에작용하는방법및장치 | |
US7243372B2 (en) | Modified Harvard architecture processor having data memory space mapped to program memory space with erroneous execution protection | |
US5802359A (en) | Mapping processor state into a millicode addressable processor state register array | |
EP0613085B1 (en) | Multitask processing unit | |
JPH07120338B2 (ja) | 共同プロセッサによる命令の実行をデータプロセッサが調整する方法および該データプロセッサ | |
EP0279953B1 (en) | Computer system having mixed macrocode and microcode instruction execution | |
KR100263262B1 (ko) | 마이크로프로세서 | |
US5625808A (en) | Read only store as part of cache store for storing frequently used millicode instructions | |
JPH06250856A (ja) | マイクロコンピュータ | |
JP2950080B2 (ja) | マイクロコンピュータ | |
JP3129873B2 (ja) | マイクロコンピュータ | |
US5621909A (en) | Specialized millicode instruction for range checking | |
JPH06250857A (ja) | マイクロコンピュータ | |
US5860155A (en) | Instruction decoding mechanism for reducing execution time by earlier detection and replacement of indirect addresses with direct addresses | |
US5787276A (en) | Microprocessor including circuit for generating signal used for tracing executed instruction stream | |
JP4702004B2 (ja) | マイクロコンピュータ | |
JPS62197831A (ja) | デ−タ処理装置 | |
US6662296B1 (en) | Method and system for testing millicode branch points | |
EP0525672A2 (en) | Microprocessor with program tracing | |
JP2871429B2 (ja) | 暴走監視機能を有するプロセッサ | |
JPH0752402B2 (ja) | データ処理装置 | |
US6212624B1 (en) | Selective canonizing on mode transitions | |
JP2503210B2 (ja) | マイクロプログラム制御装置 | |
JPH04290130A (ja) | プロセッサのエラー管理方式 | |
JPH06242946A (ja) | 分岐制御装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 19980113 |