説明

マイクロプロセッサ

【課題】構造が簡単で設計や検証にかかる期間が短く、複数のタスクを実行するときにバスエラーの原因ではないタスクの保護を実現する。
【解決手段】命令フェッチに起因するバス要求をバスインタフェースユニット4に要求し,バスインタフェースユニット4に出力した命令フェッチ要求の内,処理が終わっていない要求を記憶する第1の要求キュー装置8を備える命令フェッチユニット16と、ロード命令又はストア命令に起因するバス要求をバスインタフェースユニットに要求するロード・ストアユニット3と、命令フェッチユニット16からの命令をデコードするデコードユニット1と、デコードユニット1からの命令を実行する実行ユニット2と、デコードユニット1,実行ユニット2,ロード・ストアユニット3からの入力信号のいずれか1つでもアクティブになると、出力信号をアクティブにして、命令フェッチユニット16に入力するオア・ユニット10とを備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マイクロプロセッサに関し、特に、回路規模の小さいバスを使用し、複数のタスクを実行しているときにバスエラーの原因ではないタスクの保護を実現できるマイクロプロセッサに関する。
【背景技術】
【0002】
近年、マイクロプロセッサの命令は、小規模で単純な回路で実現できるものに限定して実装され、処理の進行を互いに依存のないステージに分割し、処理をステージごとに並列に行うことでプログラムの処理時間の短縮化を図ってきた。 演算命令やロード・ストア命令等はこの様な実装が比較的簡単に行うことができる。一方で、マイクロプロセッサの制御命令の内、幾つかはマイクロプロセッサ全体をロックして行うことが必要であり、処理が複雑となり、処理のステージ分割,パイプラインのステージへの割り当てが困難なものとなる。
従来はこのような命令を実装するために、敢えて大規模な回路と複雑な制御により、機能を分割してパイプラインのステージに割り当てるか、パイプラインから分離する等の方法を採用してきた。機能を分割してパイプラインのステージに割り当てる場合、回路の複雑さから消費電力の増大や不良回路の混入が問題となる。又、機能を分割してパイプラインから分離する場合、マイクロプロセッサの命令間の連係不十分により、マイクロプロセッサの性能劣化が起こっていた。
【0003】
また、従来のマイクロプロセッサでは、パイプラインに投入した命令が、その時のパイプラインの状況やマイクロプロセッサ全体の状態で実行できるか否かの判断をする際、その結果を得るためには、そのステージの動作を、判断を開始したステージと同一にする必要があった。これは、仮に実行が不可能であると判別された際に、そのステージの動作をその命令が実行可能になるまで凍結し、その後に実行を再開するからである。
【0004】
このような実装方法では、実行可能か否かを判断するステージの開始から判断結果が出るまでの時間が、他のステージの実行時間より長くなると、その実行可否判断回路の処理時間がマイクロプロセッサ全体の動作周波数を規定してしまっていた。
【0005】
近年、複数のマイクロプロセッサをワンチップに集積する要求が高まっており、その場合、実行可否判断回路はより複雑化、低速化する傾向にあり、問題となっている。
【0006】
マイクロプロセッサに接続されるバスにおいて、バスエラーの扱いには様々な実装が存在する。簡単な実装方法として、バスエラーを意味する,バスエラー信号(BEC:BUS_ERROR_CAUSED)だけを設ける方法がある。ここで、バスエラー信号BECがアサートされるサイクルには、同期式と非同期式の2つの方式がある。
【0007】
同期式とは、バスエラー信号BECがアサートされる位置がプロトコルで規定されているためにバスエラーの要因がどのバス要求に起因するのかを特定することが可能な方式である。同期式では、バスエラー要因の特定のためのプロトコル規定を守るための回路が増大する。この理由は、一般的にバスエラーは様々な原因やタイミングで発生するために、バスエラーの要因と、その原因となったバス要求の対応関係を記憶する記憶回路が必要となるためである。この記憶回路の増大を避けるために、バスエラーが発生する可能性があるサイクル期間では他のバス要求を受け付けない実装方法がある。しかし、バスの転送能力が低下するので一般的には採用されていない。
【0008】
一方、非同期式とは、バスエラー信号BECに関するプロトコルの規定を緩やかなものとして、バスエラーが発生した場合には、速やかにバスエラー信号BECをアサートする方式である。従って、バスエラーを引き起こした要因との関連を処理する等の処理回路が不要となり、実装も簡単である。ただし欠点として、複数の要求を処理可能なバスにおいて、どのバス要求が原因でバスエラーが発生したのかが特定できないという問題点がある。
【0009】
ここで、転送効率を上げるために複数のバス要求を処理することが可能なバスについて説明する。このような複数の要求を処理可能なバスにおいて非同期式のバスエラーを採用した場合には、バスエラーの要因を特定できないために、バスに投入されている要求をすべて破棄しなければならない。このとき、バスエラーの要因ではなかったバス要求も巻き添え(犠牲)となって破棄される。そこで従来は、犠牲となったバス要求を再処理するために、破棄された要求を再処理する再処理回路をバスに付加する必要があった。
【0010】
マイクロプロセッサのバス要求は、命令フェッチ系とロード・ストア系の2種類に大別できる。バスエラーなどの要因が発生した場合でも、マイクロプロセッサは可能な限り復帰動作を行う必要がある。従って、命令フェッチ系のバス要求は犠牲となって破棄された場合に再処理される必要がある。
【0011】
しかし、ロード・ストア系のバス要求に関しては、一つでもバスエラーになった場合には、そのプログラムの実行は保証できなくなる。そこで、そのプログラムの処理をマイクロプロセッサのタスクとして破棄する。従って、ロード・ストア系のバス要因はすべて破棄し、再処理を行う必要がない。
【0012】
バスに実装されている再転送機構が、命令フェッチ系のバス要求なのか、ロード・ストア系のバス要求なのかを区別することが出来ない場合には、マイクロプロセッサとしては再処理を行う必要がないバス要求も再処理されてしまう。
【0013】
マイクロプロセッサとしては、こうした無駄な再処理が行われることに起因する処理性能の低下は問題とはならない。しかし、こうした無駄な処理が行われていると、マイクロプロセッサ開発やプログラムの開発時において、原因解析に時間がかかるという問題がある。
【0014】
同様に、フェッチ要求も破棄してかまわないマイクロプロセッサも可能である。しかしこれはマイクロプロセッサの構造に依存する。一般的には、バスエラーが発生すると「例外処理」を行うが、このとき、「実在する命令」に対してのみ、例外処理を行うマイクロプロセッサも存在する。この場合には、「フェッチ要求」が犠牲となって停止したままになっていると、そもそも、例外処理に入ることができない。従って、フェッチ要求だけは、可能な限り再処理する必要がある。
【0015】
次に、マイクロプロセッサの命令フェッチ動作でバスエラーが発生した場合、取得したデータは不正な値となる。マイクロプロセッサがこのデータを正常な命令とみなして実行を行うと、データが不正なので、実装されていない命令を実行する可能性がある。このとき、不正な実行を行ってもマイクロプロセッサが停止しない場合には問題にはならない。しかし、不正な命令を実行してもマイクロプロセッサは絶対に停止しない、ということをマイクロプロセッサの設計において検証しなければならない。
【0016】
こうした検証は普通、非常にコストが高い検証となる。何故ならば、定義されていない命令や禁止されている命令列の組み合わせの実行がすべて問題を起こさないことを検証する必要があるためである。
【0017】
この問題の対策としては、不正な命令は可能な限り実行しないことであり、従来は、バスエラーが発生した場合に、マイクロプロセッサに到達するデータを0(ゼロ)にするなどの対策が行われている。一般的に命令コード0(ゼロ)は、何もしない命令(NOP)として定義された命令であることが多いため、このような対策が行われてきている。この対策の場合、バス又はマイクロプロセッサに接続される途中のどこかでデータの値を0(ゼロ)にする回路を入れる必要がある。
【0018】
他の対策としては、バスエラーが発生した場合に割込みを発生させる方法がある。不正なデータをコアが実行する前に割込みを発生させれば、マイクロプロセッサは命令を破棄する。例えば、バスエラーが発生した場合に、拒絶できない割込みの1つであるNMI(Non-Maskable Interrupt)を発生させる方法がある。
【0019】
しかしこの方法の場合には、マイクロプロセッサにすべての割込みを受け付けない状態を設けることや、割込みが発生しない命令を実装することが出来なくなるという問題点がある。
【0020】
バスエラー信号受信時、CPUがバスエラー発生を対応するフラグに表示することによって、ユーザプログラム側でバスアクセスエラー発生時の回避処理を実行可能にするバスアクセスエラー処理方式については、既に開示されている(例えば、特許文献1参照。)。
【0021】
複数の要求を処理するバスにおいて、1つの要求がバスエラーを発生した場合に、投入されている要求すべてが破棄されて再要求処理も行われないバスがある。こうしたバスにマイクロプロセッサを接続し、命令フェッチに起因するバス要求とロード・ストア命令に起因するバス要求が同時期にバス要求として投入される場合、ロード・ストア命令に起因するバス要求がバスエラーを発生すると命令フェッチに起因するバス要求も破棄されてしまう。また、命令フェッチ要求がバスエラーの原因でもないのに、命令フェッチ要求の再要求処理が行われることはない。
【特許文献1】特許第3177794号公報
【発明の開示】
【発明が解決しようとする課題】
【0022】
本発明の目的は、回路規模の小さいバスを使用し、構造が簡単で設計や検証にかかる期間が短くて済み、動作速度の低下を防ぐことができ、複数のタスクを実行しているときにバスエラーの原因ではないタスクの保護を実現できるマイクロプロセッサを提供することにある。
【課題を解決するための手段】
【0023】
本発明の一態様によれば、(イ)バスインタフェースユニット,バス装置を含む外部バスに接続可能なマイクロプロセッサであって、(ロ)命令フェッチに起因するバス要求をバスインタフェースユニットに要求し、バスインタフェースユニットに出力した命令フェッチ要求のうち、処理が終わっていない要求を記憶する第1の要求キュー装置を備える命令フェッチユニットと、(ハ)ロード命令またはストア命令に起因するバス要求をバスインタフェースユニットに要求するロード・ストアユニットと、(ニ)命令フェッチユニットからの命令をデコードするデコードユニットと、(ホ)デコードユニットからの命令を実行する実行ユニットと、(へ)デコードユニット,実行ユニット,ロード・ストアユニットからの入力信号のいずれか1つでもアクティブになると、出力信号をアクティブにして、命令フェッチユニットに入力するオア・ユニットとを備えるマイクロプロセッサが提供される。
【0024】
本発明の他の態様によれば、(イ)バスインタフェースユニット,バス装置を含む外部バスに接続可能なマイクロプロセッサであって、(ロ)命令フェッチに起因するバス要求をバスインタフェースユニットに要求し、バス要求が実行されているタスクを識別するタスク番号を記憶する第2の要求キュー装置を備える命令フェッチユニットと、(ハ)ロード命令またはストア命令に起因するバス要求をバスインタフェースユニットに要求し、バス要求が実行されているタスクを識別するタスク番号を記憶するメモリを備えるロード・ストアユニットと、(ニ)命令フェッチユニットからの命令をデコードするデコードユニットと、(ホ)デコードユニットからの命令を実行する実行ユニットと、(へ)バス装置から受信するバスエラー信号がアクティブになると、再処理モードに移行する第2のステートリトライ装置を備え、再処理モードにおいて、バスインタフェースユニットからのバスインタフェース信号がアクティブの場合、命令フェッチユニット,ロード・ストアユニットにアクティブ信号を出力するシリアライゼーションコントロールユニットとを備えるマイクロプロセッサが提供される。
【発明の効果】
【0025】
本発明のマイクロプロセッサによれば、回路規模の小さいバスを使用し、構造が簡単で設計や検証にかかる期間が短くて済み、動作速度の低下を防ぐことができ、複数のタスクを実行しているときにバスエラーの原因ではないタスクの保護を実現することができる。
【発明を実施するための最良の形態】
【0026】
次に、図面を参照して、本発明の実施の形態を説明する。以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付している。ただし、図面は模式的なものであり、各ブロックの平面寸法、各タイミングチャートのタイミング幅、各タスク,命令フォーマット等の平面寸法幅は、現実のものとは異なることに留意すべきである。又、図面相互間においても互いの寸法の関係や比率が異なる部分が含まれていることはもちろんである。
【0027】
また、以下に示す実施の形態は、この発明の技術的思想を具体化するための装置や方法を例示するものであって、この発明の技術的思想は、各ブロックの構成部品の配置等を下記のものに特定するものでない。この発明の技術的思想は、特許請求の範囲において、種々の変更を加えることができる。
【0028】
[第1の実施の形態]
本発明の第1の実施の形態に係るマイクロプロセッサは、図1に示すように、バスインタフェースユニット(BIU:Bus Interface Unit)4,バス(BUS)装置5を含む外部バス200に接続可能なマイクロプロセッサ100であって、命令フェッチに起因するバス要求をバスインタフェースユニット4に要求し、バスインタフェースユニット4に出力した命令フェッチ要求のうち、処理が終わっていない要求を記憶する第1の要求キュー装置8を備える命令フェッチユニット(IFU:Instruction Fetch Unit)16と、ロード命令またはストア命令に起因するバス要求をバスインタフェースユニット4に要求するロード・ストアユニット(LSU:Load Store Unit)3と、命令フェッチユニット16からの命令をデコードするデコードユニット(DCU:Decode Unit)1と、デコードユニット1からの命令を実行する実行ユニット(EXU:Execution Unit)2と、入力信号の内、デコードユニット1からの信号DC,実行ユニット2からの信号EX,ロード・ストアユニット3からの信号LSのいずれか1つでもアクティブになると、出力信号SOをアクティブにして、命令フェッチユニット16に入力するオア・ユニット(ORU:OR Unit)10とを備える。
【0029】
或いは又、本発明の第1の実施の形態に係るマイクロプロセッサにおいて、命令フェッチユニット16は、図1に示すように、第1の要求キュー装置8に存在する要求を再度、バスインタフェースユニット4に出力し、かつ命令フェッチの再要求を行ったことを記憶する第1のステートリトライ装置9を更に備えていても良い。
【0030】
或いは又、本発明の第1の実施の形態に係るマイクロプロセッサにおいて、デコードユニット1は、図1に示すように、第1のステートリトライ装置9のステートリトライの値が“1”の場合、バスエラーが発生すると、命令フェッチユニット16から出力される命令コードをNOP命令に変換する構成を備えていても良い。
【0031】
本発明の第1の実施の形態において、バス装置5及びバスインタフェースユニット4で構成される部分を外部バス200と定義する。命令フェッチユニット16、デコードユニット1、実行ユニット2、ロード・ストアユニット3、オア・ユニット10で構成される部分をマイクロプロセッサ100と定義する。
【0032】
バスエラー信号BECは非同期バスエラーとして実装されている。BUS装置5はデータ転送を行う装置である。バスエラーが発生するとバスエラー信号BECをアクティブにする。
【0033】
命令フェッチユニット16は、マイクロプロセッサ100の命令フェッチに起因するバス要求をバス要求信号IFSを通じて、バスインタフェースユニット4に要求する。
【0034】
ロード・ストアユニット3は、マイクロプロセッサ100のロード命令またはストア命令に起因するバス要求をバス要求信号LSSを通じて、バスインタフェースユニット4に要求する。
【0035】
バスインタフェースユニット4は、マイクロプロセッサ100からのバス要求をバス要求信号BRSを通じて、BUS装置5と送受信するための装置である。バスインタフェースユニット4はマイクロプロセッサ100からの要求を記憶する処理キュー装置7を備える。バスインタフェースユニット4はバスエラー信号BECがアクティブにされると、処理キュー装置7のバス要求を、不定値のデータが読み出されたものとして、終了(terminate)させる。終了とは、バス要求元とのプロトコルを閉じることを意味する。バス要求が読み出し(read)要求であった場合には、不定値のデータを要求元に返してプロトコルを閉じる。
【0036】
デコードユニット1は、マイクロプロセッサ100の命令をデコード(decode)する装置である。デコードユニット1に実行すべき命令が存在する場合には、デコード信号DCはアクティブになる。
【0037】
実行ユニット2は、マイクロプロセッサ100の命令を実行(execute)する装置である。実行ユニット2に実行すべき命令が存在する場合には、実行信号EXはアクティブになる。
【0038】
ロード・ストアユニット3は、ロード命令またはストア命令で必要となるバス要求を、バス要求信号LSSを通じてバスインタフェースユニット4と送受信するための装置である。ロード・ストアユニット3にバスインタフェースユニット4と送受信すべきバス要求が存在する場合には、ロード・ストア信号LSはアクティブになる。
【0039】
オア・ユニット10は、デコード信号DC,実行信号EX,ロード・ストア信号LSのいずれか1つでもアクティブになると、出力信号SOをアクティブにするORゲートである。出力信号SOがアクティブとは、マイクロプロセッサ100に実行すべき命令が存在することを意味する。
【0040】
命令フェッチユニット16は、マイクロプロセッサ100の命令フェッチ要求を管理する装置である。命令フェッチユニット16はマイクロプロセッサ100が実行する命令を取得するためにバスインタフェースユニット4に命令フェッチ要求を出力する。また、命令フェッチユニット16は、バスインタフェースユニット4に出力した命令フェッチ要求のうち、要求結果が帰ってきていない(処理が終わっていない)要求を記憶する第1の要求キュー装置8を有する。
【0041】
又、命令フェッチユニット16は、要求キューに存在する要求を再度、バスインタフェースユニット4に出力することができる。この出力行為を「命令フェッチの再要求」と呼ぶ。命令フェッチユニット16は、命令フェッチの再要求を行ったことを記憶するための第1のステートリトライ(STATE_RETRY)装置9を備える。命令フェッチの再要求が行われると、第1のステートリトライ装置9のステートリトライの値に“1”をセットする。
【0042】
命令フェッチユニット16は、バスエラー信号BECがアクティブにされ、かつステートリトライの値が“0”の場合、かつ又、出力信号SOが非アクティブの場合に、命令フェッチの再要求を実行する。ここで、出力信号SOがアクティブだった場合には、非アクティブになるまで待ってから、命令フェッチの再要求を行う。
【0043】
デコードユニット1は、第1のステートリトライ装置9のステートリトライの値が“1”の場合、バスエラーが発生すると、命令フェッチユニット16から出力される命令コードをNOP命令(何もしない命令)に変換する。
【0044】
命令フェッチユニット16は、命令フェッチの再要求がすべて終了すると、ステートリトライの値に“0”をセットして、通常の動作に戻る。
【0045】
ここで、各装置は独立に動作する。バスエラーが発生していない場合は、命令フェッチユニット16は、実行すべき命令を次々にフェッチし、デコードユニット1、実行ユニット2、ロード・ストアユニット3が命令を次々に実行することで、マイクロプロセッサ100として動作する。バスエラーが発生した場合には、再フェッチ動作が行われる。
【0046】
出力信号SOが存在する意味を次に説明する。再フェッチ要求を行う場合に、デコードユニット1、実行ユニット2、ロード・ストアユニット3に、まだ処理すべき命令が存在している場合がある。このとき、デコードユニット1、実行ユニット2、ロード・ストアユニット3の命令の実行が終わるのを待たずに、再フェッチ要求を実行してしまうと、バスインタフェースユニット4に再フェッチ要求とロード・ストア命令に起因するバス要求が同時に存在する状態になる可能性がある。これでは、再フェッチしている意味がなくなる。なぜならば、再度、ロード・ストア命令でバスエラーが発生すると、再フェッチまでもが、犠牲となってしまい、無限にフェッチができない状態になる可能性があるからである。出力信号SO は、このような状態を回避するために必要な信号である。
【0047】
本発明の第1の実施の形態に係るマイクロプロセッサ100において、バスエラーが発生していない場合の、バスインタフェースユニット4の動作の様子は、図2の動作タイミングチャート図に示す通りである。
【0048】
図2において、Inst_Q1, Inst_Q2, Inst_Q3, load1, load2及びstore1は、バスインタフェースユニット4が処理しているバス要求信号を意味している。Inst_Q1, Inst_Q2, Inst_Q3は、フェッチ要求キューのQ1,Q2,Q3のバス要求信号を意味している。load1, load2及びstore1は、ロード・ストア命令に起因するバス要求信号を意味している。
【0049】
バス要求信号BRSは、Request, Address, WRITEreadEn, WriteData, Ack, ReadData そして BUS_ERROR_CAUSED で構成される信号群である。
【0050】
Request信号は、バスインタフェースユニット4がバス装置5に対して出力すべき要求があるときにアクティブになる。Request信号がアクティブ(=“1”)のときに、Address, WRITEreadEn 及び WriteData は意味のある信号となる。
【0051】
Address信号は、メモリのアドレス信号を意味する。
【0052】
WRITEreadEn信号は、アクティブ(=“1”)のときに、書き込み要求信号を意味し、インアクティブ(=“0”)の場合に読み出し要求信号を意味する。
【0053】
WriteData信号は、書き込み要求時の書き込みデータ信号である。
【0054】
尚、信号BUS_ERROR_CAUSEDは、図1の信号BECと同じである。
【0055】
REQ、WAIT及びFINは バスインタフェースユニット4の内部ステートを意味し、バスインタフェースユニット4が処理しているバス要求が、どの処理状態にあるかを示している。
REQは、バス要求を外部バス200に出力するステートであり、Request信号 をアクティブ(=1)にするステートである。
【0056】
WAITは、Ack信号がアクティブになるのを待つステートである。
【0057】
FINは、バス要求の終わりを意味するステートである。Ack信号がアクティブになると、このステートになる。
【0058】
図2では、バスエラーが発生していない。従ってバス要求信号Inst_Q1, Inst_Q2, Inst_Q3,load1,load2及びstore1は連続して処理されている。
【0059】
本発明の第1の実施の形態に係るマイクロプロセッサ100において、図2のクロックサイクルC3でバスエラーが発生した場合の、バスインタフェースユニット4の動作の様子は、図3の動作タイミングチャート図に示す通りである。
【0060】
図3のクロックサイクルC3において、バスインタフェースユニット4は、バス要求信号load1,Inst_Q2及びload2の3つの要求を処理している。ここで、バスエラー信号BUS_ERROR_CAUSEDは、非同期バスエラーとして実装されている。従って、クロックサイクルC3において、バスインタフェースユニット4は処理中の3つの要求を破棄する。
【0061】
その破棄後、クロックサイクルC5から、バス要求信号Inst_Q2の処理を開始する。
【0062】
図3のクロックサイクルC7において、もしバスエラー信号BUS_ERROR_CAUSEDがアクティブになっていた場合には、再処理においてバスエラーが発生したことになる。この場合、先に説明したように、デコードユニット1は取得された命令を何もしない命令NOPに変換する。
【0063】
デコードユニット1は命令を無効化することで、命令をNOP命令に変換する。
【0064】
本発明の第1の実施の形態に係るマイクロプロセッサにおいて、デコードユニット1及び命令フェッチユニット16の内部の模式的ブロック構成は、図4に示すように表される。
【0065】
命令フェッチユニット16内には、バスエラー検出回路21が配置されている。
【0066】
バスエラー検出回路21は、命令フェッチの再要求においてバスエラーが発生したことを検出する回路である。バスエラーを検出すると、信号A03をアクティブ(=“1”)にする。
【0067】
命令フェッチユニット16から、デコードユニット1に対して、命令コード信号A00,A01,A02が出力される。
【0068】
信号A00は、デコードユニット1内に配置される命令デコーダ20に入力される。信号A01及びA02は、デコードユニット1内に配置される片側反転付きANDゲート28に入力される。信号A01は、命令フェッチユニット16から出力される命令コードが有効か否かを意味する信号であり、有効の場合には、“1”(valid)、無効の場合には、“0”(invalid)となる。
【0069】
命令デコーダ20は、命令をデコードする回路の一つである。信号A02は、命令をデコードした結果、その命令コードが有効か否かを意味する信号であり、有効の場合には、“1”(valid)、無効の場合には、“0”(invalid)となる。信号A02及び片側反転付きANDゲート28の出力信号は、デコードユニット1内に配置される片側反転付きANDゲート27に入力される。
【0070】
信号A04は、デコードされた命令を実行するかどうかを示す信号である。信号A04がアクティブ(=“1”)の場合に、デコードユニット1に接続される実行ユニット2は、命令を実行する。
【0071】
信号A03がアクティブになると、信号A04はインアクティブ(=“0”)となる。従って、デコードユニット1に接続される実行ユニット2は、命令の実行を行わない。
【0072】
図4に示すデコードユニット1の構成により、信号A00を“0(ゼロ)”に変換する回路を入れることなく、命令をNOP命令と等価な動作に置き換えることが可能となる。
【0073】
本発明の第1の実施の形態に係るマイクロプロセッサによれば、バスエラー発生時に再度バス要求出力を行い、回復できない場合は命令を NOP命令に変換して実行する。こうしたバスを使用する場合に、マイクロプロセッサ自身が再フェッチ要求を行うことができる。
【0074】
又、本発明の第1の実施の形態に係るマイクロプロセッサによれば、バスエラー要因を特定できない回路規模の小さいバスを使用し、複数のタスクを実行中に、バスエラーを発生したタスクで不定な命令を実行して処理が停止し、他のタスク又はOSへの実行切替えができなくなり、マイクロプロセッサで実行中のタスク全体が停止することを防ぐために、マイクロプロセッサが再フェッチ要求を行うことができる。
【0075】
又、本発明の第1の実施の形態に係るマイクロプロセッサにおいては、バスエラー発生時に再度バス要求出力を行い、回復できない場合は命令をNOP命令に変換して実行することで、再フェッチの失敗に起因してマイクロプロセッサが不定な命令を実行し、タスク全体が停止することを防止することができる。
【0076】
また、本発明の第1の実施の形態に係るマイクロプロセッサにおいては、再フェッチを行ってもバスエラーが発生する場合には、命令が無効であるものとしてNOP命令に変換して実行することができる。
【0077】
バスエラーを検出した場合に、バスに要求中のバス要求のうち、命令フェッチに起因するバス要求のみを再度出力する機能を有するマイクロプロセッサによれば、バスエラーが発生した場合に、処理中のバス要求をすべて破棄し、再要求処理を行わないバスでもマイクロプロセッサのバスとして使用することができる。例えば、非同期式のバスエラーが実装された、再要求処理に必要な回路を有さないバスを使用することができる。こうしたバスは回路規模が小さく、構造が簡単になるために、設計や検証にかかる期間が短くて済む。
【0078】
又、再度出力した要求がバスエラーになった場合に、取得された命令コードをNOP命令に変換する機能を有するマイクロプロセッサによれば、バスエラーが発生した場合に、転送データの値が不定値となるバスをマイクロプロセッサのバスとして使用することができる。又、バスエラーが発生した場合に、転送データを固定値、例えば 0(ゼロ)にする必要がない。
【0079】
又、NOP命令に変換する回路として、命令デコード前に、命令コードをNOP命令の命令コードに変換する回路ではなく、命令デコード結果を無効にすることでNOP命令の動作と等価な動作に置き換える回路を有するマイクロプロセッサによれば、不正な命令コードをNOP命令へ変換する方法として、命令のデコード処理前に、命令コードそのものに変換する方式は簡単に実装できる。しかし、一般的にマイクロプロセッサの命令デコード回路は複雑で、特にデコード回路の前に回路を入れることは、マイクロプロセッサの動作速度の低下を招く原因となることが多い。そこで、命令デコード後に、命令をNOP命令と等価に動作させる回路を入れることでマイクロプロセッサの動作速度の低下を防ぐことができる。
【0080】
本発明の第1の実施の形態に係るマイクロプロセッサによれば、回路規模の小さいバスを使用し、構造が簡単になり、設計や検証にかかる期間が短くて済み、動作速度の低下を防ぐことができ、又、複数のタスクを実行しているときにバスエラーの原因ではないタスクの保護を実現することができる。
【0081】
[第2の実施の形態]
本発明の第2の実施の形態に係るマイクロプロセッサは、図5に示すように、バスインタフェースユニット4,バス装置5を含む外部バス200に接続可能なマイクロプロセッサ100であって、命令フェッチに起因するバス要求をバスインタフェースユニット4に要求し、バス要求が実行されているタスクを識別するタスク番号を記憶する第2の要求キュー装置58を備える命令フェッチユニット16と、ロード命令またはストア命令に起因するバス要求をバスインタフェースユニット4に要求し、バス要求が実行されているタスクを識別するタスク番号を記憶するメモリ68を備えるロード・ストアユニット3と、命令フェッチユニット16からの命令をデコードするデコードユニット1と、デコードユニット1からの命令を実行する実行ユニット2と、バス装置5から受信するバスエラー信号BECがアクティブになると、再処理モードに移行する第2のステートリトライ装置74を備え、再処理モードにおいて、バスインタフェースユニット4からのバスインタフェース信号BISがアクティブの場合、命令フェッチユニット16にアクティブなシリアライゼーションフェッチ信号SFS,ロード・ストアユニット3にアクティブなシリアライゼーションロード・ストア信号SLSを出力する,シリアライゼーションコントロールユニット(SCU:Serialization Control Unit)71とを備える。
【0082】
或いは又、本発明の第2の実施の形態に係るマイクロプロセッサにおいて、ロード・ストアユニットは、図5に示すように、メモリ68に存在する要求を再度、バスインタフェースユニット4に出力し、かつメモリ68に存在する要求を再度行ったことを記憶する第3のステートリトライ装置73を更に備えていても良い。
【0083】
本発明の第2の実施の形態においては、バス装置5及びバスインタフェースユニット4で構成される部分を外部バス200と定義し、命令フェッチユニット16,デコードユニット1,実行ユニット2,ロード・ストアユニット3及びシリアライゼ−ションコントロールユニット71で構成される部分をマイクロプロセッサ100と定義する。
【0084】
バスエラー信号BECは非同期バスエラーとして実装されている。BUS装置5はデータ転送を行う装置である。バスエラーが発生するとバスエラー信号BECをアクティブにする。
【0085】
命令フェッチユニット16は、マイクロプロセッサ100の命令フェッチに起因するバス要求をバス要求信号IFSを通じて、バスインタフェースユニット4に要求する。
【0086】
ロード・ストアユニット3は、マイクロプロセッサ100のロード命令またはストア命令に起因するバス要求をバス要求信号LSSを通じて、バスインタフェースユニット4に要求する。
【0087】
バスインタフェースユニット4は、マイクロプロセッサ100からのバス要求をバス要求信号BRSを通じて、BUS装置5と送受信するための装置である。バスインタフェースユニット4はマイクロプロセッサ100からの要求を記憶する処理キュー装置57を備える。バスインタフェースユニット4はバスエラー信号BECがアクティブにされると、処理キュー装置57のバス要求を、不定値のデータが読み出されたものとして、終了させる。バス要求が読み出し要求であった場合には、不定値のデータを要求元に返してプロトコルを閉じる。
【0088】
デコードユニット1は、マイクロプロセッサ100の命令をデコードする装置である。
【0089】
実行ユニット2は、マイクロプロセッサ100の命令を実行する装置である。
【0090】
ロード・ストアユニット3は、ロード命令またはストア命令で必要となるバス要求を、バス要求信号LSSを通じてバスインタフェースユニット4と送受信するための装置である。ロード・ストアユニット3にバスインタフェースユニット4と送受信すべきバス要求が存在する場合には、ロード・ストア信号LSAはアクティブになる。
【0091】
命令フェッチユニット16は、マイクロプロセッサ100の命令フェッチ要求を管理する装置である。命令フェッチユニット16はマイクロプロセッサ100が実行する命令を取得するためにバスインタフェースユニット4に命令フェッチ要求を出力する。また、命令フェッチユニット16は、バスインタフェースユニット4に出力した命令フェッチ要求のうち、要求結果が帰ってきていない(処理が終わっていない)要求を記憶する第2の要求キュー装置58を有する。命令フェッチ信号IFAは、命令フェッチユニット16の再処理が終了するとアクティブになる信号である。
【0092】
命令フェッチユニット16は、要求キューに存在する要求を再度、バスインタフェースユニット4に出力する,命令フェッチの再要求を実行することができる。命令フェッチユニット16は、命令フェッチの再要求を行ったことを記憶するためのステートリトライ(STATE_RETRY0)装置59を備える。命令フェッチの再要求が行われると ステートリトライ装置59のステートリトライ(STATE_RETRY)に“1”をセットする。
【0093】
命令フェッチユニット16は、バスエラー信号BECがアクティブにされ、かつステートリトライの値が“0”の場合、命令フェッチの再要求を実行する。
【0094】
デコードユニット1は、ステートリトライ装置59のステートリトライの値が“1”の場合、バスエラーが発生すると、命令フェッチユニット16から出力される命令コードをNOP命令(何もしない命令)に変換する。
【0095】
命令フェッチユニット16は、命令フェッチの再要求がすべて終了すると、ステートリトライ(STATE_RETRY)の値に“0”をセットして、通常の動作に戻る。
【0096】
ここで、各装置は独立に動作する。バスエラーが発生していない場合は、命令フェッチユニット16は、実行すべき命令を次々にフェッチし、デコードユニット1、実行ユニット2、ロード・ストアユニット3が命令を次々に実行することで、マイクロプロセッサ100として動作する。バスエラーが発生した場合には、再フェッチ動作が行われる。
【0097】
命令フェッチユニット16内の第2の要求キュー装置58は、バス要求がマイクロプロセッサ100で実行されているどのタスクのものであるのかを識別するためのタスク番号を、対応するバス要求と同時に記憶できるような装置として拡張されている。
【0098】
ロード命令・ストア命令に起因するバス要求と、そのバス要求がどのタスクのものであるかを識別するためのタスク番号を、対応するバス要求と同時に記憶できるようなメモリ68をロード・ストアユニット3に配置する。
【0099】
本発明の第2の実施の形態に係るマイクロプロセッサ100において、命令フェッチユニット16に配置する第2の要求キュー装置58に記憶されるバス要求の様子は、図6に示す通りである。図6(a)は、キュー番号(Que No.) の降順に行われるバスインタフェースユニットへのバス要求の模式的構成図、図6(b)は、マイクロプロセッサが実行中のタスクTask0,Task1, Task2と、タスクを識別するための番号と対応して記憶される各タスクの命令フェッチに必要なバス要求fetch0,fetch1,fetch2,・・・の模式的構成図を示す。
【0100】
マイクロプロセッサ100が実行中のタスクはTask0,Task1, Task2の3つが存在するものとする。このとき、図6(b)に示すように、各タスクの命令フェッチに必要なバス要求fetch0,fetch1,fetch2,・・・がタスクを識別するための番号と対応して記憶される。記憶できるバス要求は7個である。バスインタフェースユニット4へのバス要求は、図6(a)に示すように、キュー番号の降順に行われる。
【0101】
同様に、本発明の第2の実施の形態に係るマイクロプロセッサ100において、ロード・ストアユニット3に配置するメモリ68に記憶されるバス要求の様子は、図7に示す通りである。図7(a)は、キュー番号の降順に行われるバスインタフェースユニットへのバス要求の模式的構成図、図7(b)は、マイクロプロセッサが実行中のタスクTask0,Task1, Task2と、タスクを識別する番号と対応して記憶される各タスクで実行されるロード命令、ストア命令に起因するバス要求read0,read1・・・又はwrite0,write1,・・・の模式的構成図を示す。
【0102】
各タスクで実行されるロード命令、ストア命令に起因するバス要求read0,read1・・・又はwrite0,write1,・・・のバス要求がタスクを識別する番号と対応してメモリ68 に記憶される。記憶できる要求の個数は7個である。バスインタフェースユニット4へのバス要求はキュー番号の降順に行われる。
【0103】
本発明の第2の実施の形態に係るマイクロプロセッサ100においては、図5に示すように、第1の実施の形態に比較して、シリアライゼーションコントロールユニット71が追加され、シリアライゼーションフェッチ信号SFS, シリアライゼーションロード・ストア信号SLS及びバスインタフェース信号BISが追加されている。又、シリアライゼーションコントロールユニット71の作用により、「バス要求の単一要求の連続への変換」が実行される。
【0104】
バスインタフェースユニット4がバス要求を処理中の場合には、バスインタフェース信号BISがアクティブにされる。
【0105】
シリアライゼーションコントロールユニット71は、バスエラー信号BECがアクティブになると、第2のステートリトライ(STATE_RETRY2)装置74に“1”をセットして再処理モードに移行する。再処理モードでは、以下の動作を実行する。
【0106】
バスインタフェース信号BISがアクティブの場合、シリアライゼーションフェッチ信号SFS, シリアライゼーションロード・ストア信号SLSはアクティブとする。バスインタフェース信号BISが非アクティブの場合には、シリアライゼーションフェッチ信号SFS又はシリアライゼーションロード・ストア信号SLSのどちらか片方だけを非アクティブとする。このとき、最後に非アクティブであった方とは別の信号が非アクティブとなる。従って、命令フェッチユニット16からのバス要求とロード・ストアユニット3からのバス要求は、交互にバスインタフェースユニット4で処理される。
【0107】
シリアライゼーションコントロールユニット71は、再処理モードでない場合には、シリアライゼーションフェッチ信号SFS, シリアライゼーションロード・ストア信号SLSは常に非アクティブである。
【0108】
命令フェッチユニット16は、シリアライゼーションフェッチ信号SFSがアクティブの場合には、バスインタフェースユニット4にバス要求を出力しない。
【0109】
ロード・ストアユニット3は、シリアライゼーションロード・ストア信号SLSがアクティブの場合は、バスインタフェースユニット4にバス要求を出力しない。
【0110】
従って、再処理モードの場合には、バスインタフェースユニット4にはバス要求が1つずつ投入される。この結果、再処理モードにおいてバスエラーが発生しても、バスエラーを発生させたバス要求を特定することができる。要するに、バスエラーが非同期方式の場合に、複数のバス要求が投入されていると、バスエラーの要因となったバス要求を特定できないが、バス要求を1個づつ処理すれば、バスエラーの要因を特定可能となる。
【0111】
命令フェッチユニット16は再処理を開始すると、ステートリトライ(STATE_RETRY0)装置59に“1”をセットする。再処理がすべて終わると、“0”をセットする。
【0112】
ロード・ストアユニット3はバスエラー信号BECがアクティブになると、第3のステートリトライ(STATE_RETRY1)装置73に“1”をセットして再処理を開始する。
【0113】
なお、本発明の第2の実施の形態に係るマイクロプロセッサ100においては、図5に示すように、第1の実施の形態には存在したORユニット10が存在しない。従って、命令フェッチユニット16はバスエラー信号BECがアクティブになると、直ちに再処理を開始する。
【0114】
バスエラーが発生し、再処理モードである場合にバスエラーが発生した場合、そのバスエラーが命令フェッチユニット16から出力されるバス要求(命令フェッチに起因するバス要求)であった場合には、そのバス要求のタスク番号nと同じタスク番号のバス要求をロード・ストアユニット3の内部に配置されたメモリ68から削除する。削除できる理由は、1つでもバスエラーが発生していたら、そのタスクの実行はもはや、保証できないので削除しても問題がないためである。
【0115】
また、再処理モードである場合にバスエラーが発生した場合、そのバスエラーがロード・ストアユニット3から出力されるバス要求 (ロード命令またはストア命令に起因するバス要求)であった場合には、そのバス要求のタスク番号nと同じタスク番号のバス要求をロード・ストアユニット3内部に配置されたメモリ68から削除する。
【0116】
再処理すべきバス要求がなくなったら、再処理モードから通常の動作モードに戻る。命令フェッチ信号IFAは、命令フェッチユニット16の再処理が終了するとアクティブになる信号である。ロード・ストア信号LSA は、ロード・ストアユニット3の再処理が終了するとアクティブになる信号である。
【0117】
なお、命令フェッチ信号IFA,ロード・ストア信号LSAが両方アクティブになってから、命令フェッチユニット16は通常の動作を開始する。尚、シリアライゼーションコントロールユニット71内に配置される第2のステートリトライ(STATE_RETRY2)装置74はマイクロプロセッサ100の一部を構成している。
【0118】
同じタスク番号のバス要求を削除された場合について、図6、図7の各バス要求が、どのような順番でバスインタフェースユニットに出力されるかを、図8及び図9に示す。
【0119】

命令フェッチユニット内に配置されるの第2の要求キュー装置58及びロード・ストアユニット3内に配置されるメモリ68がそれぞれ、図6,図7に示す要求を有している場合について、バスインタフェースユニット57の処理内容及びバス要求信号BRSの動作を図8に示す。
【0120】
図8において、Inst_Q1, Inst_Q2,… 及び LdSt_Q1,LdSt_Q2,…はバスインタフェースユニッ トが処理しているバス要求を意味している。
【0121】
Inst_Q1, Inst_Q2,…はそれぞれ、フェッチ要求キューの Q1,Q2,Q3のバス要求を意味している。
【0122】
LdSt_Q1,LdSt_Q2,…はそれぞれ、ロード・ストア要求キューのQ1,Q2…のバス要求を意味している。
【0123】
信号Request, Address, WRITEreadEn, WriteData, Ack, ReadData及びBUS_ERROR_CAUSED は、バスインタフェースユニット4がバス装置5と要求を送受信する信号である。信号Requestは、バスインタフェースユニット4がバス装置5に対して出力すべき要求があるときにアクティブになる。信号Request がアクティブ(=“1”)のときに、Address, WRITEreadEn及びWriteDataは意味のある信号である。信号Addressはメモリのアドレスを意味する。信号WRITEreadEn はアクティブ(=“1”)のときに、書き込み要求を意味し、インアクティブ(=“0”)の場合に読み出し要求を意味する。信号WriteDataは書き込み要求の場合の、書き込みデータを意味する。信号BUS_ERROR_CAUSED は図5の信号BECと同じである。
【0124】
REQ,WAIT及びFINは、バスインタフェースユニット4が処理しているバス要求が、どの処理ステートにあるかを示す。REQは、バス要求を外部バス200に出力するステートを意味する。信号Requestをアクティブにすることで、外部バス200への要求出力を開始する。要求は外部バス200からの信号Ackで終わる。
【0125】
WAITは、信号Ack がアクティブになるまでの状態を意味する。FINは、信号Ackがアクティブになってバス要求が終了したことを意味する。
【0126】
本発明の第2の実施の形態に係るマイクロプロセッサ100において、バスエラーが発生していない場合の、バスインタフェースユニット4の動作の様子は、図8の動作タイミングチャート図に示す通りである。
【0127】
図8において、Inst_Q1, Inst_Q2, Inst_Q3, LdSt_Q1, LdSt_Q2及びLdSt_Q3は、バスインタフェースユニット4が処理しているバス要求信号を意味している。Inst_Q1, Inst_Q2, Inst_Q3は、フェッチ要求キューのQ1,Q2,Q3のバス要求信号を意味している。LdSt_Q1, LdSt_Q2及びLdSt_Q3は、ロード・ストア命令に起因するバス要求信号を意味している。
【0128】
バス要求信号BRSは、Request, Address, WRITEreadEn, WriteData, Ack, ReadData そして BUS_ERROR_CAUSED で構成される信号群である。
【0129】
Request信号は、バスインタフェースユニット4がバス装置5に対して出力すべき要求があるときにアクティブになる。Request信号がアクティブ(=1)のときに、Address, WRITEreadEn 及び WriteData は意味のある信号となる。
【0130】
Address信号は、メモリのアドレス信号を意味する。
【0131】
WRITEreadEn信号は、アクティブ(=“1”)のときに、書き込み要求信号を意味し、インアクティブ(=“0”)の場合に読み出し要求信号を意味する。
【0132】
WriteData信号は、書き込み要求時の書き込みデータ信号である。
【0133】
信号BUS_ERROR_CAUSEDは、図5のBECと同じである。
【0134】
REQ、WAIT及びFINは バスインタフェースユニット4の内部ステートを意味し、バスインタフェースユニット4が処理しているバス要求が、どの処理状態にあるかを示している。
REQは、バス要求を外部バス200に出力するステートであり、Request信号 をアクティブ(=“1”)にするステートである。
【0135】
WAITは、Ack信号がアクティブになるのを待つステートである。
【0136】
FINは、バス要求の終わりを意味するステートである。Ack信号がアクティブになると、このステートになる。
【0137】
図8では、バスエラーが発生していない。従ってバス要求信号Inst_Q1, Inst_Q2, Inst_Q3, LdSt_Q1, LdSt_Q2及びLdSt_Q3は連続して処理されている。
【0138】
本発明の第2の実施の形態に係るマイクロプロセッサ100において、図8のクロックサイクルC3でバスエラーが発生した場合の、バスインタフェースユニット4の動作の様子は、図9の動作タイミングチャート図に示す通りである。
【0139】
クロックサイクルC3において、バスエラー信号BUS_ERROR_CAUSEDがアサートされ、バスエラーが発生している。クロックサイクルC3において、バスインタフェースユニット4は、 LdSt_Q1,Inst_Q2,LdSt_Q2の3つの要求を処理している。ここで、バスエラー信号BUS_ERROR_CAUSEDは非同期バスエラーとして実装されている。従って、クロックサイクルC3において、バスインタフェースユニット4は処理中の3つの要求を破棄する。
【0140】
この破棄後、バスインタフェースユニット4は先に説明した手順に従って、クロックサイクルC7からバス要求を再処理する。再処理が行われている期間では、バスインタフェースユニット4への要求出力は1つずつ行われる。1 つ1つ処理することで、バスエラーの原因を特定することができる。
【0141】
まず、クロックサイクルC7において、破棄されたバス要求の内、もっとも古い要求である LdSt_Q1が出力される。その後、クロックサイクルC9において、バスエラー信号BUS_ERROR_CAUSEDがアサートされる。従って、クロックサイクルC3で発生したバスエラーは、バス要求LdSt_Q1が原因であったことがわかる。図7を参照すると、Q1のバス要求は、Task No.2のバス要求である。そこで、ロード・ストアユニット3は、図7に示すキュー番号Q1,Q5,Q6,Q7を要求キューから削除する動作を行う。
【0142】
本発明の第2の実施の形態に係るマイクロプロセッサによれば、バスエラー発生時に再度バス要求出力を行い、回復できない場合は命令を NOP命令に変換して実行する。こうしたバスを使用する場合に、マイクロプロセッサ自身が再フェッチ要求を行うことができる。
【0143】
又、本発明の第2の実施の形態に係るマイクロプロセッサにおいては、回路規模の小さいバスを使用し、複数のタスクを実行中に、バスエラーを発生したタスクの犠牲となって他のタスクの実行が破壊されることを回避するために、バスエラーが発生すると、一時的に非同期バスエラー方式のバスを同期バスエラー方式として使用する動作を行うことができる。
【0144】
また、本発明の第2の実施の形態に係るマイクロプロセッサにおいては、再フェッチを行ってもバスエラーが発生する場合には、命令が無効であるものとしてNOP命令に変換して実行することができる。
【0145】
バスエラーを検出した場合に、バスに要求中のバス要求のうち、命令フェッチに起因するバス要求のみを再度出力する機能を有するマイクロプロセッサによれば、バスエラーが発生した場合に、処理中のバス要求をすべて破棄し、再要求処理を行わないバスでもマイクロプロセッサのバスとして使用することができる。例えば、非同期式のバスエラーが実装された、再要求処理に必要な回路を有さないバスを使用することができる。こうしたバスは回路規模が小さく、構造が簡単になるために、設計や検証にかかる期間が短くて済む。
【0146】
又、再度出力した要求がバスエラーになった場合に、取得された命令コードをNOP命令に変換する機能を有するマイクロプロセッサによれば、バスエラーが発生した場合に、転送データの値が不定値となるバスをマイクロプロセッサのバスとして使用することができる。又、バスエラーが発生した場合に、転送データを固定値、例えば 0(ゼロ)にする必要がない。
【0147】
又、NOP命令に変換する回路として、命令デコード前に、命令コードをNOP命令の命令コードに変換する回路ではなく、命令デコード結果を無効にすることでNOP命令の動作と等価な動作に置き換える回路を有するマイクロプロセッサによれば、不正な命令コードをNOP命令へ変換する方法として、命令のデコード処理前に、命令コードそのものに変換する方式は簡単に実装できる。しかし、一般的にマイクロプロセッサの命令デコード回路は複雑で、特にデコード回路の前に回路を入れることは、マイクロプロセッサの動作速度の低下を招く原因となることが多い。そこで、命令デコード後に、命令をNOP命令と等価に動作させる回路を入れることでマイクロプロセッサの動作速度の低下を防ぐことができる。
【0148】
又、本発明の第2の実施の形態に係るマイクロプロセッサにおいては、バスエラーを検出した場合にバスに要求中のバス要求を再度出力するための機能を有し、再度出力しているときに、前回のバス要求の処理が終わるまで、次のバス要求を出力しない機能を有するため、バスエラーの要因を特定することで、タスク保護を実現することができる。
【0149】
又、本発明の第2の実施の形態に係るマイクロプロセッサにおいては、バスに要求中のバス要求と対応するタスク番号を記憶する機能を有し、バス要求を再度出力しているときにバスエラーが発生すると、そのバスエラーの要因となったバス要求のタスク番号と同じタスク番号を有するバス要求のうち、タスクの実行上不要なバス要求を記憶から削除する機能を有する。破棄可能なタスクに関しては保護する必要がないので、そのタスクに起因するバス要求を再処理の記憶から削除することで、バスエラーが発生した場合の処理速度を上げることができる。
【0150】
本発明の第2の実施の形態に係るマイクロプロセッサによれば、回路規模の小さいバスを使用し、構造が簡単になり、設計や検証にかかる期間が短くて済み、動作速度の低下を防ぐことができ、又、複数のタスクを実行しているときにバスエラーの原因ではないタスクの保護を実現することができる。
【0151】
[その他の実施の形態]
上記のように、本発明は第1乃至第2の実施の形態によって記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施例及び運用技術が明らかとなろう。
【0152】
このように、本発明はここでは記載していない様々な実施の形態等を含むことは勿論である。したがって、本発明の技術的範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【図面の簡単な説明】
【0153】
【図1】本発明の第1の実施の形態に係るマイクロプロセッサの模式的ブロック構成図。
【図2】本発明の第1の実施の形態に係るマイクロプロセッサにおいて、バスエラーが発生していない場合の、バスインタフェースユニットの動作タイミングチャート図。
【図3】本発明の第1の実施の形態に係るマイクロプロセッサにおいて、図2のクロックサイクルC3でバスエラーが発生した場合の、バスインタフェースユニットの動作タイミングチャート図。
【図4】本発明の第1の実施の形態に係るマイクロプロセッサにおいて、デコードユニット1及び命令フェッチユニット16の内部の模式的ブロック構成図。
【図5】本発明の第2の実施の形態に係るマイクロプロセッサの模式的ブロック構成図。
【図6】本発明の第2の実施の形態に係るマイクロプロセッサにおいて、命令フェッチユニットの要求キュー装置に記憶されるバス要求の様子を示す図であって、(a)キュー番号 の降順に行われるバスインタフェースユニットへのバス要求の模式的構成図、(b)マイクロプロセッサが実行中のタスクTask0,Task1, Task2と、タスクを識別するための番号と対応して記憶される各タスクの命令フェッチに必要なバス要求fetch0,fetch1,fetch2,・・・の模式的構成図。
【図7】本発明の第2の実施の形態に係るマイクロプロセッサにおいて、ロード・ストアユニットに配置するメモリに記憶されるバス要求の様子を示す図であって、(a)は、キュー番号の降順に行われるバスインタフェースユニットへのバス要求の模式的構成図、(b)は、マイクロプロセッサが実行中のタスクTask0,Task1, Task2と、タスクを識別する番号と対応して記憶される各タスクで実行されるロード命令、ストア命令に起因するバス要求read0,read1・・・又はwrite0,write1,・・・の模式的構成図。
【図8】本発明の第2の実施の形態に係るマイクロプロセッサにおいて、バスエラーが発生していない場合の、バスインタフェースユニットの動作タイミングチャート図。
【図9】本発明の第2の実施の形態に係るマイクロプロセッサにおいて、図8のクロックサイクルC3でバスエラーが発生した場合の、バスインタフェースユニットの動作タイミングチャート図。
【符号の説明】
【0154】
1…デコードユニット(DCU)
2…実行ユニット(EXU)
3…ロード・ストアユニット(LSU)
4…バスインタフェースユニット(BIU)
5…BUS装置
7,57…処理キュー装置
8…第1の要求キュー装置
58…第2の要求キュー装置
9…第1のステートリトライ装置
10…ORU(ORゲート)
16…命令フェッチユニット(IFU)
20…命令デコーダ
21…バスエラー検出回路
27,28…片側反転付きANDゲート
59…ステートリトライ(STATE_RETRY0)装置
68…メモリ
71…シリアライゼーションコントロールユニット(SCU)
73…第3のステートリトライ(STATE_RETRY1)装置
74…第2のステートリトライ(STATE_RETRY2)装置
100…マイクロプロセッサ
200…外部バス
IFS,LSS,BRS…バス要求信号
DC…デコード信号
EX…実行信号
IFA…命令フェッチ信号
LS,LSA…ロード・ストア信号
SO…出力信号
SFS…シリアライゼーションフェッチ信号
SLS…シリアライゼーションロード・ストア信号
BIS…バスインタフェース信号
BEC(BUS_ERROR_CAUSED)…バスエラー信号

【特許請求の範囲】
【請求項1】
バスインタフェースユニット,バス装置を含む外部バスに接続可能なマイクロプロセッサであって、
命令フェッチに起因するバス要求を前記バスインタフェースユニットに要求し、前記バスインタフェースユニットに出力した命令フェッチ要求のうち、処理が終わっていない要求を記憶する第1の要求キュー装置を備える命令フェッチユニットと、
ロード命令またはストア命令に起因するバス要求を前記バスインタフェースユニットに要求するロード・ストアユニットと、
前記命令フェッチユニットからの命令をデコードするデコードユニットと、
前記デコードユニットからの命令を実行する実行ユニットと、
前記デコードユニット,前記実行ユニット,前記ロード・ストアユニットからの入力信号のいずれか1つでもアクティブになると、出力信号をアクティブにして、前記命令フェッチユニットに入力するオア・ユニット
とを備えることを特徴とするマイクロプロセッサ。

【請求項2】
前記命令フェッチユニットは、前記第1の要求キュー装置に存在する要求を再度、前記バスインタフェースユニットに出力し、かつ命令フェッチの再要求を行ったことを記憶する第1のステートリトライ装置を更に備えることを特徴とする請求項1記載のマイクロプロセッサ。

【請求項3】
前記デコードユニットは、前記第1のステートリトライ装置のステートリトライの値が“1”の場合、バスエラーが発生すると、前記命令フェッチユニットから出力される命令コードをNOP命令に変換することを特徴とする請求項2記載のマイクロプロセッサ。
【請求項4】
バスインタフェースユニット,バス装置を含む外部バスに接続可能なマイクロプロセッサであって、
命令フェッチに起因するバス要求を前記バスインタフェースユニットに要求し、バス要求が実行されているタスクを識別するタスク番号を記憶する第2の要求キュー装置を備える命令フェッチユニットと、
ロード命令またはストア命令に起因するバス要求を前記バスインタフェースユニットに要求し、バス要求が実行されているタスクを識別するタスク番号を記憶するメモリを備えるロード・ストアユニットと、
前記命令フェッチユニットからの命令をデコードするデコードユニットと、
前記デコードユニットからの命令を実行する実行ユニットと、
前記バス装置から受信するバスエラー信号がアクティブになると、再処理モードに移行する第2のステートリトライ装置を備え、前記再処理モードにおいて、前記バスインタフェースユニットからのバスインタフェース信号がアクティブの場合、前記命令フェッチユニット,前記ロード・ストアユニットにアクティブ信号を出力するシリアライゼーションコントロールユニット
とを備えることを特徴とするマイクロプロセッサ。

【請求項5】
前記ロード・ストアユニットは、前記メモリに存在する要求を再度、前記バスインタフェースユニットに出力し、かつ前記メモリに存在する要求を再度行ったことを記憶する第3のステートリトライ装置を更に備えることを特徴とする請求項4記載のマイクロプロセッサ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate