(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-05-10
(45)【発行日】2023-05-18
(54)【発明の名称】処理速度整合回路およびマイクロプロセッサ
(51)【国際特許分類】
G06F 9/30 20180101AFI20230511BHJP
【FI】
G06F9/30 330C
(21)【出願番号】P 2021202559
(22)【出願日】2021-12-14
(62)【分割の表示】P 2017137436の分割
【原出願日】2017-07-13
【審査請求日】2021-12-14
(73)【特許権者】
【識別番号】308033711
【氏名又は名称】ラピスセミコンダクタ株式会社
(74)【代理人】
【識別番号】100084995
【氏名又は名称】加藤 和詳
(74)【代理人】
【識別番号】100099025
【氏名又は名称】福田 浩志
(72)【発明者】
【氏名】山崎 博
【審査官】漆原 孝治
(56)【参考文献】
【文献】特開昭62-174832(JP,A)
【文献】特開2000-311061(JP,A)
【文献】特開2008-071084(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/30
(57)【特許請求の範囲】
【請求項1】
演算処理部を動作させるためのプログラムが記憶された記憶装置から前記プログラムに含まれる命令コードに基づいて、前記命令コードの処理に要する時間と前記演算処理部の処理速度との間に不整合が発生すると予測される特定命令コードを検知する検知部と、
前記記憶装置からの待機信号または前記検知部が前記特定命令コードを検知した場合に前記検知部により発出される検知信号が入力され、前記検知信号と前記待機信号の論理和を演算するとともに、演算結果を出力する論理和回路と、
前記論理和回路から出力された信号に基づいて、前記不整合に対応する時間分だけ前記特定命令コードの実行開始を待機させる待機部と、
前記命令コードを解読して前記検知部に解読された第1の命令を送出する解読部と、
を含
み、
前記待機部は、前記不整合に対応する時間分だけ前記特定命令コードの実行開始を待機させるための待機信号を前記解読部に送り、
前記解読部は、前記待機信号に基づいて前記演算処理部を動作させる第2の命令を送出し、
前記検知部は、外部からの切り替え信号によって動作、非動作が切り替え可能となっている
処理速度整合回路。
【請求項2】
前記不整合が、前記演算処理部の動作速度の向上、および前記プログラムが前記動作速度の向上前のプログラムと同じプログラムであることによって発生したものであり、
前記不整合に対応する時間が、前記特定命令コードの前記演算処理部の動作速度の向上前後における処理速度の差分である
請求項1
に記載の処理速度整合回路。
【請求項3】
前記不整合が、前記特定命令コードのタイミングマージンが小さいことによって発生したものであり、
前記不整合に対応する時間が、前記特定命令コードごとに予め定められた時間である
請求項1
に記載の処理速度整合回路。
【請求項4】
プログラムに基づいて処理を実行する演算処理部と、
請求項1から請求項
3のいずれか1項に記載の処理速度整合回路と、
を含むマイクロプロセッサ。
【請求項5】
処理の時間的な基準となるクロック源をさらに含み、
前記不整合に対応する時間が前記クロック源のクロック数で規定される
請求項
4に記載のマイクロプロセッサ。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、処理速度整合回路およびマイクロプロセッサ、特に特定の命令の処理速度が変更された場合でもプログラムの互換性が維持される処理速度整合回路、および該処理速度整合回路を備えたマイクロプロセッサに関する。
【背景技術】
【0002】
従来、プログラムの互換性を問題とした文献として特許文献1が知られている。特許文献1では、実行タイミングが異なる2つのCPU(Central Processing Unit)のソフトウェア互換性を問題としている。特許文献1に開示された論理回路シミュレータでは、2つの異なるシミュレーションの実行結果から、命令実行の区切りのタイミングを検出し、その時点におけるフリップフロップ等の記憶素子の状態値を比較することにより、2つのCPUがソフトウェア互換性を有することを確認している。
【0003】
ここで、
図3を参照してマイクロプロセッサにおける処理について説明する。
図3は、比較例に係るマイクロプロセッサ50の構成を示すブロック図であり、外部に接続される記憶装置60も一緒に図示している。
図3に示すように、マイクロプロセッサ50は、命令デコーダ52、ウエイト回路54、演算処理装置(ALU:Arithmetic Logic Unit)56を含んで構成されている。
【0004】
マイクロプロセッサ50による処理は、次のように行われる。すなわち、プログラムが記憶された記憶装置60のアドレス(
図3に<5>で示す信号、以下<数字>の表記は図中の信号を示す)を指定して命令デコーダ52が命令コード<1>を呼び出し、命令デコーダ52が解読する。解読された命令コード<1>は命令<2>として演算処理装置56に送られ、演算処理装置56によって実行されるとともに、実行結果が所定の記憶装置に書き込まれる。
【0005】
マイクロプロセッサ50が記憶装置60にアクセスする場合において、記憶装置60からのデータ出力がマイクロプロセッサ50の処理時間より遅い場合は、マイクロプロセッサ50を待機させるために、記憶装置60からウエイト信号<3>がウエイト回路54に送られる。ウエイト信号<3>を受け取ったウエイト回路54は、所定の時間だけ処理の実行を待たせる(待機させる)ために命令デコーダ52にウエイトコントロール信号<4>を送る。
【先行技術文献】
【特許文献】
【0006】
【発明の概要】
【発明が解決しようとする課題】
【0007】
ところで、半導体装置一般に共通のことではあるが、特にマイクロプロセッサの技術分野では、処理能力の向上等を目的とした新たな機種の開発が日々行われている。例えば、当初8ビットに対応する機種として開発されたマイクロプロセッサが、バージョンアップして処理能力の向上した16ビットに対応する機種とされることがある。その場合、8ビットに対応するマイクロプロセッサ用に開発したプログラムが極力使用可能なように(プログラムの継承が可能なように)命令互換とされる場合も多い。それと同時に、処理能力を向上させた16ビット対応のマイクロプロセッサを搭載したマイクロコンピュータ(以下、「16ビットマイコン」)が、8ビット対応のマイクロプロセッサを搭載したマイクロコンピュータ(以下、「8ビットマイコン」)の上位機種として開発される。
【0008】
しかしながら、16ビットマイコンが開発される以前に8ビットマイコンを採用したユーザによって、処理能力が向上した16ビットマイコンに置き換えられた場合、プログラムの継承に問題が起きることがある。例えば、ユーザにより8ビットマイコンで開発されたプログラムにおいて、あるプログラムルーチンが8ビット対応のマイクロプロセッサの命令処理時間を見込んで組まれ、該命令処理時間の経過後にさらに次のプログラムルーチンに移行するようなルーチンが組まれていた場合である。つまり、処理能力が向上したことに起因し、あるプログラムルーチンから次のプログラムルーチンへの移行時間が短くなることによって、誤動作が発生するという問題である。
【0009】
上記問題が発生すると、8ビットマイコンと16ビットマイコンとがたとえ命令互換であっても、8ビットマイコンで開発したプログラムを16ビットマイコンで使用する場合に、当該プログラムを変更せずそのまま使用することができないので、既存のプログラムを修正する必要が生ずる。その結果、マイコンの置き換えに時間を要することになる。
【0010】
この点、特許文献1は、命令の処理時間そのものを問題とした文献ではない。
【0011】
本発明は、上述した課題を解決するためになされたものであり、演算処理部の処理速度に対して処理速度が整合しない命令コードを含むプログラムを用いた場合でも、プログラムの誤動作の発生が抑制された処理速度整合回路およびマイクロプロセッサを提供することを目的とする。
【課題を解決するための手段】
【0012】
本発明に係る処理速度整合回路は、演算処理部を動作させるためのプログラムが記憶された記憶装置から前記プログラムに含まれる命令コードを取得し、前記命令コードの処理に要する時間と前記演算処理部の処理速度との間に不整合が発生すると予測される特定命令コードを検知する検知部と、前記検知部で前記特定命令コードが検知された場合に、前記不整合に対応する時間分だけ前記特定命令コードの実行開始を待機させる待機部と、を含むものである。
【0013】
本発明に係るマイクロプロセッサは、プログラムに基づいて処理を実行する演算処理部と、上記の処理速度整合回路と、を含むものである。
【発明の効果】
【0014】
本発明によれば、演算処理部の処理速度に対して処理速度が整合しない命令コードを含むプログラムを用いた場合でも、プログラムの誤動作の発生が抑制された処理速度整合回路およびマイクロプロセッサを提供することができるという効果を奏する。
【図面の簡単な説明】
【0015】
【
図1】第1の実施の形態に係るマイクロプロセッサの構成の一例を示すブロック図である。
【
図2】第2の実施の形態に係るマイクロプロセッサの構成の一例を示すブロック図である。
【
図3】比較例に係るマイクロプロセッサの構成を示すブロック図である。
【発明を実施するための形態】
【0016】
以下、図面を参照し、本発明を実施するための形態について詳細に説明する。以下の説明においては、外部記憶装置から命令を読み出し実行するマイクロプロセッサの回路構成を例示して説明する。
【0017】
[第1の実施の形態]
図1を参照して、本実施の形態に係るマイクロプロセッサ10の構成について説明する。
図1には、マイクロプロセッサ10に付随し、マイクロプロセッサ10で用いるプログラム等が記憶された記憶装置30も併せて示している。記憶装置30の種類に特に制限はないが、本実施の形態では不揮発性メモリとされている。
図1に示すように、マイクロプロセッサ10は、特定命令検知回路(処理能力)12、命令デコーダ14、ウエイト回路16、演算処理装置(ALU)20、OR回路18を含んで構成されている。マイクロプロセッサ10の種類に特に制限はないが、本実施の形態では、16ビット対応のマイクロプロセッサとされている。なお、ここでいう「16ビット対応」とは、演算処理装置20のビット幅が16ビットであることをさす。なお、
図1に示す特定命令検知回路(処理能力)12、およびウエイト回路16が、本発明に係る「処理速度整合回路」を構成している。
【0018】
演算処理装置20は、入力された命令に基づいて処理を実行するとともに、実行結果を出力する装置である。
【0019】
命令デコーダ14は、記憶装置30に記憶されたプログラムの命令コード<1>を、記憶装置30のアドレス<8>を指定して呼び出し、解読する。解読された命令<7>は当該命令<7>を実行する演算処理装置20に送られ、当該演算処理装置20によって実行され、図示しない記憶装置等に実行結果が書き込まれる。また、解読された命令<2>は同時に特定命令検知回路(処理能力)12にも送られる。
【0020】
ウエイト回路16は、マイクロプロセッサ10が記憶装置30のような外部装置にアクセスする場合において、外部装置からのデータ出力がマイクロプロセッサ10の処理時間より遅いときに、マイクロプロセッサ10による処理を待機させるための回路である。マイクロプロセッサ10による処理の待機は、記憶装置30から送られるウエイト信号<4>に基づいて実行される。ウエイト回路16は、処理を待機させる場合にはウエイトコントロール信号<6>を命令デコーダ14に送る。
【0021】
特定命令検知回路(処理能力)12は、命令デコーダ14でデコードされた命令<2>の中から、予め定められた命令を検知し、検知したことの情報を含む検知信号<3>をウエイト回路16に送る。この際、該検知信号<3>はOR回路18によって上記ウエイト信号<4>との論理和が取られ、その結果がウエイト入力信号<5>としてウエイト回路16に入力される。特定命令検知回路(処理能力)12には、特定命令検知回路(処理能力)12を動作させるか、させないか(動作、非動作)を選択するイネーブル信号<9>が外部端子32を介して入力されている。従って、必要な場合には該イネーブル信号<9>によって特定命令検知回路(処理能力)12の動作を停止させることが可能となっている。
【0022】
ここで、特定命令検知回路(処理能力)12で検知される特定命令について説明する。
本実施の形態に係る特定命令とは、何らかの原因によって演算処理装置20の処理速度と処理速度が整合していない命令をいう。演算処理装置20との処理速度が整合しない原因については特に制限はないが、本実施の形態ではマイクロプロセッサ10が制御する対象(制御対象)の応答速度が遅く、通常のマイクロプロセッサ10の処理において誤動作が発生する可能性のある命令をいう。制御対象の応答速度が遅くなる原因としてはさまざま考えられるが、本実施の形態ではマイクロプロセッサ10が旧仕様のマイクロプロセッサ(例えば、8ビット対応のマイクロプロセッサ)からバージョンアップされ処理能力が向上されたために、相対的な応答速度が遅くなった命令をいう。つまり、特定命令は旧仕様のマイクロプロセッサと本来互換性のある命令であるが、マイクロプロセッサ10の処理速度向上により、所定の動作条件において互換ではなくなった命令をいう。
【0023】
上記のような応答速度における不整合発生の具体例は、上述したように、8ビットマイコンでユーザが開発したプログラムを上位機種である16ビットマイコンで動作させる場合において、あるプログラムルーチンが8ビット対応のマイクロプロセッサの命令処理時間(以下、「特定命令処理時間」)を見込んで組まれ、さらに次のプログラムルーチンに移行するようなプログラムであった場合である。この場合は、16ビットマイコンの処理速度が速くなったことに起因して特定命令処理時間も短くなることが想定さる。
【0024】
すると、この特定命令処理時間が経過しないうちに次のプログラムルーチンに移行する場合が想定され、この場合にはプログラムの処理において誤動作が発生する恐れがある。
このような特定命令処理時間を含む命令として、例えばデータの転送命令が挙げられる。転送命令の場合、マイクロプロセッサが8ビット対応から16ビット対応にバージョンアップしたことにより処理速度が速くなる(例えば、2倍になる)と、転送が完了しないうちに次のプログラムルーチンに移行してしまうことも想定される。
【0025】
そこで、本実施の形態では、マイクロプロセッサ10において、マイクロプロセッサ10のバージョンアップ前のマイクロプロセッサ(以下、「旧マイクロプロセッサ」)に対して処理能力の高くなった命令(特定命令)による処理を意図的に遅くし、特定命令に対する当該マイクロプロセッサ10の処理速度と旧マイクロプロセッサの処理速度との整合を図っている。このことにより、本来互換性のある命令の命令実行タイミングも同等となるため、旧マイクロプロセッサ用に開発されたプログラムの変更を行うことなく旧マイクロプロセッサからマイクロプロセッサ10への置き換えが可能となる。また、マイクロプロセッサ10は、特定命令検知回路(処理能力)12に入力されるイネーブル信号<9>の入力部を備えているので、マイクロプロセッサ10のプログラムにおいて特定命令が用いられていないことが予めわかっている場合には特定命令検知回路(処理能力)12の動作を停止させ、本来のマイクロプロセッサ10の処理能力を発揮させることができる。
【0026】
図1を参照して、マイクロプロセッサ10の動作についてより具体的に説明する。以下では、イネーブル信号<9>がアクティブとされ、特定命令検知回路(処理能力)12が動作状態にあるものとする。特定命令検知回路(処理能力)12は、命令デコーダ14から命令<2>を受け取ると、受け取った命令<2>が特定命令に該当するか否か判定する。本実施の形態では、特定命令に該当する命令が予めわかっており、例えば図示しない記憶部に記憶されている。特定命令検知回路(処理能力)12は、受け取った命令<2>を記憶部に記憶されている特定命令と照合し、特定命令に該当すると判定した場合には検知信号<3>を発出する。
【0027】
検知信号<3>はウエイト回路16にウエイト入力として入力され、ウエイト入力を受け取ったウエイト回路16は、ウエイトコントロール信号<6>を命令デコーダ14に送り、所定の時間だけ特定命令の処理を待機させる。具体的には、旧マイクロプロセッサの処理時間と、処理能力が向上したマイクロプロセッサ10の処理時間(特定命令処理時間)との差分の時間(以下、「待機時間」)に相当する時間だけ検知信号<3>をアクティブにする。待機時間は、マイクロプロセッサ10で用いられるクロックの数でカウントしてもよい。すなわち、クロック数で待機時間を規定してもよい。
【0028】
検知信号<3>は、OR回路18でウエイト信号<4>と論理和がとられウエイト入力信号<5>としてウエイト回路16に入力される。ウエイト入力信号<5>が入力されたウエイト回路16は所定の時間だけ特定命令の実行を待機させるウエイトコントロール信号<6>を命令デコーダ14に送る。従って、ウエイト信号<4>の状態にかかわらず少なくとも待機時間の間、特定命令の実行が待機される。
【0029】
以上詳述したように、本実施の形態に係るマイクロプロセッサ10によれば、特定命令の実行を所定の待機時間だけ待機させているので、命令実行のタイミングも含めて旧マイクロプロセッサと命令互換とすることが可能となる。その結果、旧マイクロプロセッサからマイクロプロセッサへ10への置き換えが、旧マイクロプロセッサのプログラムを変更することなくそのまま用いて行うことが可能となる。また、本実施の形態では既存のウエイト回路16を用いているので、回路規模削減の効果もある。
【0030】
[第2の実施の形態]
図2を参照して、本実施の形態に係るマイクロプロセッサ10Aについて説明する。本実施の形態は、上記実施の形態に係る特定命令検知回路(処理能力)12を変更したものである。従って、マイクロプロセッサ10と同様の構成には同じ符号を付して詳細な説明を省略する。なお、
図2に示す特定命令検知回路(実行タイミングマージン)12A、およびウエイト回路16が、本発明に係る「処理速度整合回路」を構成している。
【0031】
図2に示すように、マイクロプロセッサ10Aは、マイクロプロセッサ10の特定命令検知回路(処理能力)12が特定命令検知回路(実行タイミングマージン)12Aに置き換えられている。特定命令検知回路(実行タイミングマージン)12Aは、マイクロプロセッサ10に係る命令のうち、タイミングマージンのない命令(特定命令)を検知する回路である。タイミングマージンのない命令とは、何らかの原因によって実行タイミングがクリティカルになっている命令である。例えば、遅延時間の大きい遅延回路、あるいは演算処理装置を通過するように構成されているために遅延時間が大きくなり、実行タイミングのずれに対する許容度が低くなっている命令である。
【0032】
マイクロプロセッサで実行されるプログラムに上記のようなタイミングマージンのない特定命令が存在すると、該特定命令のタイミングがボトルネックとなり、マイクロプロセッサの動作の基準となるクロックの周波数を上げることができない場合がある。そこで、本実施の形態に係るマイクロプロセッサ10Aでは、このような特定命令の実行において所定の時間待機させるようにした。
【0033】
イネーブル信号<9>がアクティブとされ、特定命令検知回路(実行タイミングマージン)12Aが動作状態にある場合、本実施の形態に係る特定命令検知回路(実行タイミングマージン)12Aは、上記のタイミングマージンのない命令を特定命令として検知する。本実施の形態に係る特定命令も予めリストアップされ、図示しない記憶部に記憶されている。特定命令検知回路(実行タイミングマージン)12Aは命令デコーダ14から受け取った命令<2>と予め定められた特定命令とを対比し、特定命令を検知すると、予め定められたクロック数分の時間だけ検知信号<3>を発出する。以降、上記実施の形態で説明した手順に基づいて、予め定められたクロック数分の時間だけ特定命令の実行が待機される。
【0034】
以上のように、本実施の形態に係るマイクロプロセッサ10Aによれば、タイミングマージンのない命令を検知した場合、ウエイト回路16により予め定められた時間だけ該命令の実行を待機させるので、動作クロックの周波数を高くした場合のボトルネックが解消され、動作クロック周波数の上限を高く設定することできる。また、マイクロプロセッサ10Aは、特定命令検知回路(実行タイミングマージン)12Aに入力されるイネーブル信号<9>の入力部を備えているので、マイクロプロセッサ10Aのプログラムにおいて特定命令が用いられていないことが予めわかっている場合には特定命令検知回路(実行タイミングマージン)12Aの動作を停止させ、本来のマイクロプロセッサ10Aの処理能力を発揮させることができる。
【符号の説明】
【0035】
10 マイクロプロセッサ
12 特定命令検知回路(処理能力)
12A 特定命令検知回路(実行タイミングマージン)
14 命令デコーダ
16 ウエイト回路
18 OR回路
20 演算処理装置
30 記憶装置
32 外部端子
50 マイクロプロセッサ
52 命令デコーダ
54 ウエイト回路
56 演算処理装置
60 記憶装置