(57)【要約】【課題】演算処理部の処理速度に対して処理速度が整合しない命令コードを含むプログラムを用いた場合でも、プログラムの誤動作の発生が抑制された処理速度整合回路およびマイクロプロセッサを提供すること。【解決手段】演算処理部２０を動作させるためのプログラムが記憶された記憶装置３０からプログラムに含まれる命令コード＜１＞を取得し、命令コード＜１＞の処理に要する時間と演算処理部２０の処理速度との間に不整合が発生すると予測される特定命令コードを検知する検知部１２と、検知部１２で特定命令コードが検知された場合に、不整合に対応する時間分だけ特定命令コードの実行開始を待機させる待機部１６と、を含む。【選択図】図１
2019020931.tif 000002
【特許請求の範囲】
【請求項１】
演算処理部を動作させるためのプログラムが記憶された記憶装置から前記プログラムに含まれる命令コードを取得し、前記命令コードの処理に要する時間と前記演算処理部の処理速度との間に不整合が発生すると予測される特定命令コードを検知する検知部と、
前記検知部で前記特定命令コードが検知された場合に、前記不整合に対応する時間分だけ前記特定命令コードの実行開始を待機させる待機部と、
を含む処理速度整合回路。
【請求項２】
前記不整合が、前記演算処理部の動作速度の向上、および前記プログラムが前記動作速度の向上前のプログラムと同じプログラムであることによって発生したものであり、
前記不整合に対応する時間が、前記特定命令コードの前記演算処理部の動作速度の向上前後における処理速度の差分である
請求項１に記載の処理速度整合回路。
【請求項３】
前記不整合が、前記特定命令コードのタイミングマージンが小さいことによって発生したものであり、
前記不整合に対応する時間が、前記特定命令コードごとに予め定められた時間である
請求項１に記載の処理速度整合回路。
【請求項４】
前記待機部は、外部からの待機信号によって前記命令コードの実行開始を待機させることが可能となっているとともに、前記特定命令コードを検知した場合、前記不整合に対応する時間だけ検知信号を発出し、
前記検知信号と前記待機信号との論理和を演算するとともに、演算結果を前記待機部に送る論理和回路をさらに含む
請求項１から請求項３のいずれか１項に記載の処理速度整合回路。
【請求項５】
前記検知部は、外部からの切り替え信号によって動作、非動作が切り替え可能となっている
請求項１から請求項４のいずれか１項に記載の処理速度整合回路。
【請求項６】
プログラムに基づいて処理を実行する演算処理部と、
請求項１から請求項５のいずれか１項に記載の処理速度整合回路と、
を含むマイクロプロセッサ。
【請求項７】
処理の時間的な基準となるクロック源をさらに含み、
前記不整合に対応する時間が前記クロック源のクロック数で規定される
請求項６に記載のマイクロプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理速度整合回路およびマイクロプロセッサ、特に特定の命令の処理速度が変更された場合でもプログラムの互換性が維持される処理速度整合回路、および該処理速度整合回路を備えたマイクロプロセッサに関する。
【背景技術】
【０００２】
従来、プログラムの互換性を問題とした文献として特許文献１が知られている。特許文献１では、実行タイミングが異なる２つのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）のソフトウェア互換性を問題としている。特許文献１に開示された論理回路シミュレータでは、２つの異なるシミュレーションの実行結果から、命令実行の区切りのタイミングを検出し、その時点におけるフリップフロップ等の記憶素子の状態値を比較することにより、２つのＣＰＵがソフトウェア互換性を有することを確認している。
【０００３】
ここで、図３を参照してマイクロプロセッサにおける処理について説明する。図３は、比較例に係るマイクロプロセッサ５０の構成を示すブロック図であり、外部に接続される記憶装置６０も一緒に図示している。図３に示すように、マイクロプロセッサ５０は、命令デコーダ５２、ウエイト回路５４、演算処理装置（ＡＬＵ：Ａｒｉｔｈｍｅｔｉｃ  Ｌｏｇｉｃ  Ｕｎｉｔ）５６を含んで構成されている。
【０００４】
マイクロプロセッサ５０による処理は、次のように行われる。すなわち、プログラムが記憶された記憶装置６０のアドレス（図３に＜５＞で示す信号、以下＜数字＞の表記は図中の信号を示す）を指定して命令デコーダ５２が命令コード＜１＞を呼び出し、命令デコーダ５２が解読する。解読された命令コード＜１＞は命令＜２＞として演算処理装置５６に送られ、演算処理装置５６によって実行されるとともに、実行結果が所定の記憶装置に書き込まれる。
【０００５】
マイクロプロセッサ５０が記憶装置６０にアクセスする場合において、記憶装置６０からのデータ出力がマイクロプロセッサ５０の処理時間より遅い場合は、マイクロプロセッサ５０を待機させるために、記憶装置６０からウエイト信号＜３＞がウエイト回路５４に送られる。ウエイト信号＜３＞を受け取ったウエイト回路５４は、所定の時間だけ処理の実行を待たせる（待機させる）ために命令デコーダ５２にウエイトコントロール信号＜４＞を送る。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１０−１８７７９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、半導体装置一般に共通のことではあるが、特にマイクロプロセッサの技術分野では、処理能力の向上等を目的とした新たな機種の開発が日々行われている。例えば、当初８ビットに対応する機種として開発されたマイクロプロセッサが、バージョンアップして処理能力の向上した１６ビットに対応する機種とされることがある。その場合、８ビットに対応するマイクロプロセッサ用に開発したプログラムが極力使用可能なように（プログラムの継承が可能なように）命令互換とされる場合も多い。それと同時に、処理能力を向上させた１６ビット対応のマイクロプロセッサを搭載したマイクロコンピュータ（以下、「１６ビットマイコン」）が、８ビット対応のマイクロプロセッサを搭載したマイクロコンピュータ（以下、「８ビットマイコン」）の上位機種として開発される。
【０００８】
しかしながら、１６ビットマイコンが開発される以前に８ビットマイコンを採用したユーザによって、処理能力が向上した１６ビットマイコンに置き換えられた場合、プログラムの継承に問題が起きることがある。例えば、ユーザにより８ビットマイコンで開発されたプログラムにおいて、あるプログラムルーチンが８ビット対応のマイクロプロセッサの命令処理時間を見込んで組まれ、該命令処理時間の経過後にさらに次のプログラムルーチンに移行するようなルーチンが組まれていた場合である。つまり、処理能力が向上したことに起因し、あるプログラムルーチンから次のプログラムルーチンへの移行時間が短くなることによって、誤動作が発生するという問題である。
【０００９】
上記問題が発生すると、８ビットマイコンと１６ビットマイコンとがたとえ命令互換であっても、８ビットマイコンで開発したプログラムを１６ビットマイコンで使用する場合に、当該プログラムを変更せずそのまま使用することができないので、既存のプログラムを修正する必要が生ずる。その結果、マイコンの置き換えに時間を要することになる。
【００１０】
この点、特許文献１は、命令の処理時間そのものを問題とした文献ではない。
【００１１】
本発明は、上述した課題を解決するためになされたものであり、演算処理部の処理速度に対して処理速度が整合しない命令コードを含むプログラムを用いた場合でも、プログラムの誤動作の発生が抑制された処理速度整合回路およびマイクロプロセッサを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明に係る処理速度整合回路は、演算処理部を動作させるためのプログラムが記憶された記憶装置から前記プログラムに含まれる命令コードを取得し、前記命令コードの処理に要する時間と前記演算処理部の処理速度との間に不整合が発生すると予測される特定命令コードを検知する検知部と、前記検知部で前記特定命令コードが検知された場合に、前記不整合に対応する時間分だけ前記特定命令コードの実行開始を待機させる待機部と、を含むものである。
【００１３】
本発明に係るマイクロプロセッサは、プログラムに基づいて処理を実行する演算処理部と、上記の処理速度整合回路と、を含むものである。
【発明の効果】
【００１４】
本発明によれば、演算処理部の処理速度に対して処理速度が整合しない命令コードを含むプログラムを用いた場合でも、プログラムの誤動作の発生が抑制された処理速度整合回路およびマイクロプロセッサを提供することができるという効果を奏する。
【図面の簡単な説明】
【００１５】
【図１】第１の実施の形態に係るマイクロプロセッサの構成の一例を示すブロック図である。
【図２】第２の実施の形態に係るマイクロプロセッサの構成の一例を示すブロック図である。
【図３】比較例に係るマイクロプロセッサの構成を示すブロック図である。
【発明を実施するための形態】
【００１６】
以下、図面を参照し、本発明を実施するための形態について詳細に説明する。以下の説明においては、外部記憶装置から命令を読み出し実行するマイクロプロセッサの回路構成を例示して説明する。
【００１７】
［第１の実施の形態］
図１を参照して、本実施の形態に係るマイクロプロセッサ１０の構成について説明する。図１には、マイクロプロセッサ１０に付随し、マイクロプロセッサ１０で用いるプログラム等が記憶された記憶装置３０も併せて示している。記憶装置３０の種類に特に制限はないが、本実施の形態では不揮発性メモリとされている。図１に示すように、マイクロプロセッサ１０は、特定命令検知回路（処理能力）１２、命令デコーダ１４、ウエイト回路１６、演算処理装置（ＡＬＵ）２０、ＯＲ回路１８を含んで構成されている。マイクロプロセッサ１０の種類に特に制限はないが、本実施の形態では、１６ビット対応のマイクロプロセッサとされている。なお、ここでいう「１６ビット対応」とは、演算処理装置２０のビット幅が１６ビットであることをさす。なお、図１に示す特定命令検知回路（処理能力）１２、およびウエイト回路１６が、本発明に係る「処理速度整合回路」を構成している。
【００１８】
演算処理装置２０は、入力された命令に基づいて処理を実行するとともに、実行結果を出力する装置である。
【００１９】
命令デコーダ１４は、記憶装置３０に記憶されたプログラムの命令コード＜１＞を、記憶装置３０のアドレス＜８＞を指定して呼び出し、解読する。解読された命令＜７＞は当該命令＜７＞を実行する演算処理装置２０に送られ、当該演算処理装置２０によって実行され、図示しない記憶装置等に実行結果が書き込まれる。また、解読された命令＜２＞は同時に特定命令検知回路（処理能力）１２にも送られる。
【００２０】
ウエイト回路１６は、マイクロプロセッサ１０が記憶装置３０のような外部装置にアクセスする場合において、外部装置からのデータ出力がマイクロプロセッサ１０の処理時間より遅いときに、マイクロプロセッサ１０による処理を待機させるための回路である。マイクロプロセッサ１０による処理の待機は、記憶装置３０から送られるウエイト信号＜４＞に基づいて実行される。ウエイト回路１６は、処理を待機させる場合にはウエイトコントロール信号＜６＞を命令デコーダ１４に送る。
【００２１】
特定命令検知回路（処理能力）１２は、命令デコーダ１４でデコードされた命令＜２＞の中から、予め定められた命令を検知し、検知したことの情報を含む検知信号＜３＞をウエイト回路１６に送る。この際、該検知信号＜３＞はＯＲ回路１８によって上記ウエイト信号＜４＞との論理和が取られ、その結果がウエイト入力信号＜５＞としてウエイト回路１６に入力される。特定命令検知回路（処理能力）１２には、特定命令検知回路（処理能力）１２を動作させるか、させないか（動作、非動作）を選択するイネーブル信号＜９＞が外部端子３２を介して入力されている。従って、必要な場合には該イネーブル信号＜９＞によって特定命令検知回路（処理能力）１２の動作を停止させることが可能となっている。
【００２２】
ここで、特定命令検知回路（処理能力）１２で検知される特定命令について説明する。
本実施の形態に係る特定命令とは、何らかの原因によって演算処理装置２０の処理速度と処理速度が整合していない命令をいう。演算処理装置２０との処理速度が整合しない原因については特に制限はないが、本実施の形態ではマイクロプロセッサ１０が制御する対象（制御対象）の応答速度が遅く、通常のマイクロプロセッサ１０の処理において誤動作が発生する可能性のある命令をいう。制御対象の応答速度が遅くなる原因としてはさまざま考えられるが、本実施の形態ではマイクロプロセッサ１０が旧仕様のマイクロプロセッサ（例えば、８ビット対応のマイクロプロセッサ）からバージョンアップされ処理能力が向上されたために、相対的な応答速度が遅くなった命令をいう。つまり、特定命令は旧仕様のマイクロプロセッサと本来互換性のある命令であるが、マイクロプロセッサ１０の処理速度向上により、所定の動作条件において互換ではなくなった命令をいう。
【００２３】
上記のような応答速度における不整合発生の具体例は、上述したように、８ビットマイコンでユーザが開発したプログラムを上位機種である１６ビットマイコンで動作させる場合において、あるプログラムルーチンが８ビット対応のマイクロプロセッサの命令処理時間（以下、「特定命令処理時間」）を見込んで組まれ、さらに次のプログラムルーチンに移行するようなプログラムであった場合である。この場合は、１６ビットマイコンの処理速度が速くなったことに起因して特定命令処理時間も短くなることが想定さる。
【００２４】
すると、この特定命令処理時間が経過しないうちに次のプログラムルーチンに移行する場合が想定され、この場合にはプログラムの処理において誤動作が発生する恐れがある。
このような特定命令処理時間を含む命令として、例えばデータの転送命令が挙げられる。転送命令の場合、マイクロプロセッサが８ビット対応から１６ビット対応にバージョンアップしたことにより処理速度が速くなる（例えば、２倍になる）と、転送が完了しないうちに次のプログラムルーチンに移行してしまうことも想定される。
【００２５】
そこで、本実施の形態では、マイクロプロセッサ１０において、マイクロプロセッサ１０のバージョンアップ前のマイクロプロセッサ（以下、「旧マイクロプロセッサ」）に対して処理能力の高くなった命令（特定命令）による処理を意図的に遅くし、特定命令に対する当該マイクロプロセッサ１０の処理速度と旧マイクロプロセッサの処理速度との整合を図っている。このことにより、本来互換性のある命令の命令実行タイミングも同等となるため、旧マイクロプロセッサ用に開発されたプログラムの変更を行うことなく旧マイクロプロセッサからマイクロプロセッサ１０への置き換えが可能となる。また、マイクロプロセッサ１０は、特定命令検知回路（処理能力）１２に入力されるイネーブル信号＜９＞の入力部を備えているので、マイクロプロセッサ１０のプログラムにおいて特定命令が用いられていないことが予めわかっている場合には特定命令検知回路（処理能力）１２の動作を停止させ、本来のマイクロプロセッサ１０の処理能力を発揮させることができる。
【００２６】
図１を参照して、マイクロプロセッサ１０の動作についてより具体的に説明する。以下では、イネーブル信号＜９＞がアクティブとされ、特定命令検知回路（処理能力）１２が動作状態にあるものとする。特定命令検知回路（処理能力）１２は、命令デコーダ１４から命令＜２＞を受け取ると、受け取った命令＜２＞が特定命令に該当するか否か判定する。本実施の形態では、特定命令に該当する命令が予めわかっており、例えば図示しない記憶部に記憶されている。特定命令検知回路（処理能力）１２は、受け取った命令＜２＞を記憶部に記憶されている特定命令と照合し、特定命令に該当すると判定した場合には検知信号＜３＞を発出する。
【００２７】
検知信号＜３＞はウエイト回路１６にウエイト入力として入力され、ウエイト入力を受け取ったウエイト回路１６は、ウエイトコントロール信号＜６＞を命令デコーダ１４に送り、所定の時間だけ特定命令の処理を待機させる。具体的には、旧マイクロプロセッサの処理時間と、処理能力が向上したマイクロプロセッサ１０の処理時間（特定命令処理時間）との差分の時間（以下、「待機時間」）に相当する時間だけ検知信号＜３＞をアクティブにする。待機時間は、マイクロプロセッサ１０で用いられるクロックの数でカウントしてもよい。すなわち、クロック数で待機時間を規定してもよい。
【００２８】
検知信号＜３＞は、ＯＲ回路１８でウエイト信号＜４＞と論理和がとられウエイト入力信号＜５＞としてウエイト回路１６に入力される。ウエイト入力信号＜５＞が入力されたウエイト回路１６は所定の時間だけ特定命令の実行を待機させるウエイトコントロール信号＜６＞を命令デコーダ１４に送る。従って、ウエイト信号＜４＞の状態にかかわらず少なくとも待機時間の間、特定命令の実行が待機される。
【００２９】
以上詳述したように、本実施の形態に係るマイクロプロセッサ１０によれば、特定命令の実行を所定の待機時間だけ待機させているので、命令実行のタイミングも含めて旧マイクロプロセッサと命令互換とすることが可能となる。その結果、旧マイクロプロセッサからマイクロプロセッサへ１０への置き換えが、旧マイクロプロセッサのプログラムを変更することなくそのまま用いて行うことが可能となる。また、本実施の形態では既存のウエイト回路１６を用いているので、回路規模削減の効果もある。
【００３０】
［第２の実施の形態］
図２を参照して、本実施の形態に係るマイクロプロセッサ１０Ａについて説明する。本実施の形態は、上記実施の形態に係る特定命令検知回路（処理能力）１２を変更したものである。従って、マイクロプロセッサ１０と同様の構成には同じ符号を付して詳細な説明を省略する。なお、図２に示す特定命令検知回路（実行タイミングマージン）１２Ａ、およびウエイト回路１６が、本発明に係る「処理速度整合回路」を構成している。
【００３１】
図２に示すように、マイクロプロセッサ１０Ａは、マイクロプロセッサ１０の特定命令検知回路（処理能力）１２が特定命令検知回路（実行タイミングマージン）１２Ａに置き換えられている。特定命令検知回路（実行タイミングマージン）１２Ａは、マイクロプロセッサ１０に係る命令のうち、タイミングマージンのない命令（特定命令）を検知する回路である。タイミングマージンのない命令とは、何らかの原因によって実行タイミングがクリティカルになっている命令である。例えば、遅延時間の大きい遅延回路、あるいは演算処理装置を通過するように構成されているために遅延時間が大きくなり、実行タイミングのずれに対する許容度が低くなっている命令である。
【００３２】
マイクロプロセッサで実行されるプログラムに上記のようなタイミングマージンのない特定命令が存在すると、該特定命令のタイミングがボトルネックとなり、マイクロプロセッサの動作の基準となるクロックの周波数を上げることができない場合がある。そこで、本実施の形態に係るマイクロプロセッサ１０Ａでは、このような特定命令の実行において所定の時間待機させるようにした。
【００３３】
イネーブル信号＜９＞がアクティブとされ、特定命令検知回路（実行タイミングマージン）１２Ａが動作状態にある場合、本実施の形態に係る特定命令検知回路（実行タイミングマージン）１２Ａは、上記のタイミングマージンのない命令を特定命令として検知する。本実施の形態に係る特定命令も予めリストアップされ、図示しない記憶部に記憶されている。特定命令検知回路（実行タイミングマージン）１２Ａは命令デコーダ１４から受け取った命令＜２＞と予め定められた特定命令とを対比し、特定命令を検知すると、予め定められたクロック数分の時間だけ検知信号＜３＞を発出する。以降、上記実施の形態で説明した手順に基づいて、予め定められたクロック数分の時間だけ特定命令の実行が待機される。
【００３４】
以上のように、本実施の形態に係るマイクロプロセッサ１０Ａによれば、タイミングマージンのない命令を検知した場合、ウエイト回路１６により予め定められた時間だけ該命令の実行を待機させるので、動作クロックの周波数を高くした場合のボトルネックが解消され、動作クロック周波数の上限を高く設定することできる。また、マイクロプロセッサ１０Ａは、特定命令検知回路（実行タイミングマージン）１２Ａに入力されるイネーブル信号＜９＞の入力部を備えているので、マイクロプロセッサ１０Ａのプログラムにおいて特定命令が用いられていないことが予めわかっている場合には特定命令検知回路（実行タイミングマージン）１２Ａの動作を停止させ、本来のマイクロプロセッサ１０Ａの処理能力を発揮させることができる。
【符号の説明】
【００３５】
１０    マイクロプロセッサ
１２    特定命令検知回路（処理能力）
１２Ａ  特定命令検知回路（実行タイミングマージン）
１４    命令デコーダ
１６    ウエイト回路
１８    ＯＲ回路
２０    演算処理装置
３０    記憶装置
３２    外部端子
５０    マイクロプロセッサ
５２    命令デコーダ
５４    ウエイト回路
５６    演算処理装置
６０    記憶装置
【図１】
2019020931.tif 000003
【図２】
2019020931.tif 000004
【図３】
2019020931.tif 000005