説明

マイクロプロセッサ及びこれを用いた情報処理方法並びにプログラム

【課題】分岐処理を行うハードウェアに障害が生じた場合にリカバリ処理を実行して信頼性の向上を図ると共に、処理性能の低下を抑制することができるマイクロプロセッサを提供すること。
【解決手段】同一の所定の処理結果をそれぞれテストする複数のテスト処理手段と、各テスト処理手段によるテスト結果に応じてそれぞれ分岐処理を行う複数の分岐処理手段と、他の分岐処理手段に優先して実行される所定の分岐処理手段にて分岐できなった場合に障害対応処理を実行するトラップ手段と、を備えた。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マイクロプロセッサにかかり、特に、分岐処理を実行するマイクロプロセッサに関する。
【背景技術】
【0002】
近年、処理の高速化のために、VLIW方式の計算機システムが開発されている。ここで、VLIW方式とは、並列動作可能な複数の演算器を独立した複数の命令の集まりであるVLIW(Very Long Instruction Word)と称さされる1個の長い命令語により制御する方式である。つまり、かかる方式の計算機システムは、並列動作可能な複数の演算器を備えており、VLIW上の独立した各命令により、当該各演算器を同期をとって個々にかつ並列に制御して作動する。
【0003】
そして、上述したようなVLIW型プロセッサは、命令間に依存関係のない命令を同時に実行できる利点があるが、逆に処理によっては依存関係のために未使用(nop)となる演算器が生じる。この未使用の演算器を生かして、演算を二重化し、データインティグリティ(信頼性)を向上させる方法がある。例えば、先行する処理の出力をテストする処理を二重化し、両者のテスト結果を比較することによって不正を検出することにより、ハードウェア障害をプログラムにより検出する方法がある(下記、特許文献1参照)。
【0004】
【特許文献1】特開昭60−151753号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
ここで、上述したようなVLIW型プロセッサを用いてプログラミングする場合には、コンパイラを使用して並列処理を最も効率的に行なえるコードを生成するのが一般的である。このとき、プログラムの中でプログラムによってハードウェアの信頼性を確保することが必要な場合には、アセンブリ言語により意識的に信頼性を向上させるコーディングを行なう場合がある。かかる場合には、プログラムの本来性能を低下させずにプロセッサの故障検出率を高めることを行なうことが必要であるが、総じて性能向上と相反する傾向にある。
【0006】
例えば、上述した特許文献1の従来例では、テスト結果が一致していたと判明した後に実際の分岐処理が実行されるため、かかる分岐処理を実行するまでに余計な処理時間が必要であった。また、ハードウェアの障害が発生することによってテスト結果が不一致であった場合には、障害に対するリカバリ機能が装備されておらず、障害の発生したプロセッサをシステムから切り離したり、システムを停止するなどの処理が行われていたため、処理を続行することができない、という問題があった。
【0007】
このため、本発明では、上記従来例の有する不都合を改善し、特に、分岐処理を行うハードウェアに障害が生じた場合にリカバリ処理を実行して信頼性の向上を図ると共に、処理性能の低下を抑制することができるマイクロプロセッサを提供することをその目的とする。
【課題を解決するための手段】
【0008】
そこで、本発明の一形態であるマイクロプロセッサは、
同一の所定の処理結果をそれぞれテストする複数のテスト処理手段と、
各テスト処理手段によるテスト結果に応じてそれぞれ分岐処理を行う複数の分岐処理手段と、
他の分岐処理手段に優先して実行される所定の分岐処理手段にて分岐できなった場合に障害対応処理を実行するトラップ手段と、
を備えたことを特徴としている。
【0009】
具体的に、トラップ手段は、所定の分岐処理手段に対応するテスト処理手段によるテスト結果が正しいにも関わらず当該正しい方向に分岐できなかった場合に実行される。そして、トラップ手段は、所定の分岐処理手段の障害に関する情報を取得する処理を行う。また、トラップ手段は、障害対応処理の実行後に他の分岐処理手段の実行に復帰する。
【0010】
さらに、上記所定の分岐処理手段と上記他の分岐処理手段とは、ほぼ並列に実行される、ことを特徴としており、例えば、マイクロプロセッサは、所定の分岐処理手段と他の分岐処理手段とをそれぞれ異なる演算器にて実行するVLIW型プロセッサである。
【0011】
上記発明によると、まず、同一の所定の処理結果のテストが複数のテスト処理手段にて実行され、これに対する同一の分岐処理が複数の分岐処理手段にて多重化されていることにより、信頼性の向上を図ることができる。これに加え、所定の分岐処理手段にて正常に分岐されないなどハードウェア障害が発生した場合であっても、かかる障害情報の取得などリカバリ処理がトラップ手段にて実行されるため、さらなる信頼性の向上を図ることができると共に、後続する他の分岐処理手段による処理が実行されることで、処理性能の低下を抑制することができる。特に、VLIW型プロセッサを用いて、同一の分岐処理を異なる演算器にてほぼ並列に実行することで、より有効に処理性能の低下を抑制することができる。
【0012】
また、本発明の他の形態であるプログラムは、
マイクロプロセッサに、
同一の所定の処理結果をそれぞれテストする複数のテスト処理手段と、
各テスト処理手段によるテスト結果に応じてそれぞれ分岐処理を行う複数の分岐処理手段と、
他の分岐処理手段に優先して実行される所定の分岐処理手段にて分岐できなかった場合に障害対応処理を実行するトラップ手段と、
を実現させる、ことを特徴としている。
【0013】
さらに、本発明の他の形態であるマイクロプロセッサによる情報処理方法は、
マイクロプロセッサが、
同一の所定の処理結果をそれぞれテストする複数の分岐条件テスト工程と、各テスト処理によるテスト結果に応じてそれぞれ実行される複数の分岐処理工程と、を有すると共に、
複数の分岐処理工程のうち、他の分岐処理工程に優先して実行される所定の分岐処理工程に続いて、当該所定の分岐処理工程にて分岐できなかった場合に障害対応処理を実行するトラップ工程を有する、
ことを特徴としている。
【0014】
上述した構成のプログラムや情報処理方法であっても、上記マイクロプロセッサと同様に作用するため、上述した本発明の目的を達成することができる。
【発明の効果】
【0015】
本発明は、以上のように構成され機能するので、これによると、同一の所定の処理結果のテスト及びこれに応じた分岐処理が多重化されており、かつ、他の分岐処理手段と比べて先に実行される所定の分岐処理手段にて正常に分岐されないなどハードウェア障害が発生した場合に、かかる障害情報の取得などリカバリ処理がトラップ手段にて実行されるため、信頼性の向上を図ることができると共に、後続する他の分岐処理手段による処理が実行されることでシステムが停止することなく、処理性能の低下を抑制することができる、という従来にない優れた効果を有する。
【発明を実施するための最良の形態】
【0016】
本発明におけるマイクロプロセッサは、多重化した分岐処理の間にリカバリ処理を行うことを特徴としている。以下、実施例では、VLIW型プロセッサにて実現する場合を一例に挙げて説明する。
【実施例1】
【0017】
本発明の第1の実施例を、図1乃至4を参照して説明する。図1乃至図2は、本実施例におけるマイクロプロセッサの構成及び動作を示す説明である。図3は、プログラム例を示す図である。
【0018】
[構成]
本実施例におけるマイクロプロセッサは、上述したように、並列動作可能な複数の演算器を装備し、独立した複数の命令の集まりであるVLIW(Very Long Instruction Word)と称さされる1個の長い命令語により制御する方式のVLIW型プロセッサである。図1は、このVLIW型プロセッサを搭載した情報処理装置70を示している。
【0019】
そして、情報処理装置70のプロセッサには、本発明であるプログラムが組み込まれることにより、図1に示すような構成及び動作を実現可能となる。具体的には、情報処理装置70つまりVLIW型プロセッサには、プログラムが組み込まれることにより、処理W(10)を実行する機能と、処理X(201)を実行する機能と、処理W(10)の結果をテストするテストA(202)を実行する機能(テスト処理手段)と、当該テストA(202)と同じテストを行なうテストB(203)を実行する機能(テスト処理手段)と、テストA(202)の結果に応じて分岐する分岐処理a(301)を実行する機能(分岐処理手段)と、分岐処理a(301)に後続しテストA(202)の結果に応じてリカバリ処理(60)へ割り込むトラップ(302)を実行する機能(トラップ手段)と、トラップ(302)に後続しテストB(203)の結果に応じて分岐する分岐処理b(303)を実行する機能(分岐処理手段)と、が構築されている。また、分岐処理a(301)、分岐処理b(303)の結果に応じて実行される処理Y(40)と処理Z(50)とを実行する機能も構築されている。
【0020】
そして、上述したように、VLIW型プロセッサは、複数の演算器を装備して並列処理が可能であるため、上述した各機能は、それぞれ図2に示すように並列に作動する。ここでは、演算器が3つ装備されており、サイクル1では、演算器1は処理W(10)を実行し、演算器2及び演算器3は未使用(nop)となる。そして、後続するサイクル2(図1の符号20)では、演算器1は処理X(202)を、演算器2はテストA(202)を、演算器3ではテストB(203)を、それぞれ並列に実行する。さらに後続するサイクル3(図1の符号30)では、演算器1は分岐処理a(301)を、演算器2はトラップ(302)を、演算器3は分岐処理b(303)を、それぞれ並列に実行する。
【0021】
ここで、トラップ(302)は、特に、二重化された分岐処理a(301)と分岐処理b(303)との間で、分岐処理a(301)にて正常に分岐できなかった場合、つまり、分岐回路のハードウェア障害が生じた場合に、実行される。その具体的な動作については、動作説明時に詳述する。
【0022】
そして、トラップ(302)によるリカバリ処理(60)を実行する機能は、分岐処理a(301)で発生したハードウェア障害の状況を残すために必要なデータ採取や、再度分岐処理を実行するために割り込み元のプログラム格納アドレスを算出し、データ採取が完了した後に割り込みが発生したプログラム格納アドレスの次のアドレス、つまり分岐処理b(303)へ復帰する処理を行なう(図1の符号601,602,603参照)。
【0023】
ここで、図3に、図2に示す命令列を、Intel R IA64アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアルにおけるアセンブリ言語のニーモニックでコーディングした例を示す。図中において「cmp」は比較命令を表す。「br」は分岐命令を表す。「(p) br」は条件付きの分岐命令であることを表す。「break」は割り込みを表す。また、「p」、「r」はそれぞれテストA(202)とテストB(203)の結果が格納されるレジスタを表す。また、図4には、トラップ(302)の動作をコーディングした例を示す。
【0024】
[動作]
次に、本発明の動作について、図1乃至図2を参照して説明する。まず、図2に示すように、サイクル1にて処理W(10)が実行される。そして、次のサイクル2にて、先行する処理W(10)のテストが行われる。つまり、図1のサイクル20及び図2に示すように、演算器2でテストA(202)が実行され、演算器3でテストB(203)が実行される(テスト処理工程)。なお、テストB(203)は、テストA(202)を二重化した処理であり、テストA(202)と同じく、処理W(10)の結果をテストしている。
【0025】
そして、図1に示すさらに次のサイクル30つまり図2に示すサイクル3では、各演算器で、分岐処理a(301)(所定の分岐処理工程)、トラップ(302)(トラップ工程)、分岐処理b(303)(他の分岐処理工程)がそれぞれ実行される。このとき、各分岐先アドレスの計算は、ほぼ同時に(並列に)実行されるが、実際に分岐先にジャンプする動作は、図3のコーディング例の「#サイクル2」と「#サイクル3」の間に示されるように、分岐処理a(301)、トラップ(302)、分岐処理b(303)の優先順位で処理が実行される。つまり、図1のサイクル30に示す順に処理が実行される。
【0026】
具体的には、まず、分岐処理a(301)では、テストA(202)の結果が「真」の場合に処理Y(40)に分岐する。つまり、テストAの結果、分岐GO(p=1)の場合には、処理Y(40)に進み、先読みしたトラップ(302)つまり図3に示す「(p) break 10」、及び、分岐処理b(303)つまり「(r)br.cond.spnt Y」の分岐先へはジャンプしない。
【0027】
ここで、分岐処理a(301)を実行している演算器1の分岐回路が故障などにより、テスト結果が正しく「真」である(p=1)にも関わらず、実際に処理Y(40)にジャンプできなかった場合には、トラップ(302)に進む。つまり、図3に示す「(p) break 10 」に優先権が移り、かかる場合には「p=1」であるので「break 10」が実行される。すると、図4に示すコーディングのトラップ先となるリカバリ処理(60)が実行され、トラップ元のアドレスを取得して格納し(601)、障害情報などを採取する障害処理を実行して(602)、障害処理が完了した時点でトラップ元のアドレスの次のアドレスへ復帰する(603)、という障害対応処理を行なう。そして、その後、分岐処理b(303)に復帰し、当該分岐処理bが実行され、ここで正常に分岐が実行される。
【0028】
一方、分岐処理a(301)にて、テストA(202)の結果が「偽」の場合や、分岐処理a(301)において「p」というレジスタが壊れたハードウェア障害によりテストA(202)の結果が不正(プレディケーションレジスタ故障)である場合には、処理Y(40)へ分岐は実行されずに、サイクル30内のトラップ(302)へ進む。但し、このとき、「p=0」であるため、トラップ(302)では何もせず、サイクル30における後続の分岐処理b(303)へ進む。そして、分岐処理b(303)は、テストB(203)の結果に応じて処理Y(40)へ分岐するか、もしくは処理Z(50)へ進むが、単に上述した「p」というレジスタが壊れた場合には(サイクル2における演算器2の故障)、テストB(203)の結果は「真」となり、「r=1」となるので、分岐処理b(303)で正常に処理Y(40)に分岐される。
【0029】
なお、演算器1及び演算器2の双方が壊れ、「(p) br.cond.spnt Y」及び「(p) break 10」にジャンプできない場合であっても、演算器3による「(r) br.cond.spnt」で正しく分岐することができる。また、「p=r=0」のケースでは、分岐条件が成り立たないので、サイクル3の「(p) br.cond.spnt」、「(p) break 10」「(r)br.cond.spnt Y」は、分岐先アドレスの生成のみで、実際にはジャンプせずにNOP動作となる。
【0030】
以上のように、本発明によると、分岐条件となるテスト処理を多重化しているため、信頼性の向上を図ることができると共に、分岐処理aにて正常に分岐されないなどハードウェア障害が発生した場合であっても、かかる障害情報の取得などリカバリ処理がトラップにて実行されるため、さらなる信頼性の向上を図ることができると共に、後続する他の分岐処理bによる処理が実行されることで、処理性能の低下を抑制することができる。特に、VLIW型プロセッサを用いて、同一の分岐処理a,bを異なる演算器にてほぼ並列に実行することで、より有効に処理性能の低下を抑制することができる。
【0031】
ここで、上述した二重化されたテストAとテストBとの処理は、同一の命令を使ってテスト処理する必要はない。論理的に同一のテスト結果が得られる別のテスト命令を各テスト処理にて用いてもよい。
【0032】
また、上記では、図2のサイクル2においてテストAとテストBを実施しているが、テストAとテストBは、処理Wの次サイクルで実施する必要はなく、少なくとも1サイクル以上後に実行されればよい。さらには、テストAとテストBは、必ずしも同じサイクルで実行される必要はない。そして、テストAとテストBの実行順序は、テストBが先に実行されても同じである。但し、テストAは分岐処理aよりも前のサイクルで実行される必要があり、テストBは分岐処理bより前のサイクルで実行することが保障できればよい。
【0033】
さらに、上記では、テスト処理を二重化する場合について記載しているが、かかるテスト処理を三重化以上にして構成してもよい。これにより、さらなる信頼性の向上を図ることができる。そして、かかる場合には、各テスト処理ごとに対応する分岐処理が実行されるよう構成するが、いかなる分岐処理の間に上述したリカバリ処理つまりトラップを配置してもよく、全ての分岐処理の間に配置すると望ましい。
【産業上の利用可能性】
【0034】
本発明は、高性能を要求されるプログラムにおいて、データインティグリティを高めることも必要なミッションクリティカルなプログラムの開発といった用途に適用することができ、産業上の利用可能性を有する。
【図面の簡単な説明】
【0035】
【図1】情報処理装置の構成及び動作を示す説明図である。
【図2】情報処理装置の構成及び動作を示す説明図である。
【図3】コーディング例を示す図である。
【図4】コーディング例を示す図である。
【符号の説明】
【0036】
70 情報処理装置
202 テストA
203 テストB
301 分岐処理a
302 トラップ
303 分岐処理b


【特許請求の範囲】
【請求項1】
同一の所定の処理結果をそれぞれテストする複数のテスト処理手段と、
前記各テスト処理手段によるテスト結果に応じてそれぞれ分岐処理を行う複数の分岐処理手段と、
他の前記分岐処理手段に優先して実行される所定の前記分岐処理手段にて分岐できなった場合に障害対応処理を実行するトラップ手段と、
を備えたことを特徴とするマイクロプロセッサ。
【請求項2】
前記トラップ手段は、前記所定の分岐処理手段に対応する前記テスト処理手段によるテスト結果が正しいにも関わらず当該正しい方向に分岐できなかった場合に実行される、ことを特徴とする請求項1記載のマイクロプロセッサ。
【請求項3】
前記トラップ手段は、前記所定の分岐処理手段の障害に関する情報を取得する処理を行う、ことを特徴とする請求項1又は2記載のマイクロプロセッサ。
【請求項4】
前記トラップ手段は、前記障害対応処理の実行後に前記他の分岐処理手段の実行に復帰する、ことを特徴とする請求項1,2又は3記載のマイクロプロセッサ。
【請求項5】
前記所定の分岐処理手段と前記他の分岐処理手段とは、ほぼ並列に実行される、ことを特徴とする請求項1,2,3又は4記載のマイクロプロセッサ。
【請求項6】
前記所定の分岐処理手段と前記他の分岐処理手段とをそれぞれ異なる演算器にて実行するVLIW型プロセッサである、ことを特徴とする請求項5記載のマイクロプロセッサ。
【請求項7】
マイクロプロセッサに、
同一の所定の処理結果をそれぞれテストする複数のテスト処理手段と、
前記各テスト処理手段によるテスト結果に応じてそれぞれ分岐処理を行う複数の分岐処理手段と、
他の前記分岐処理手段に優先して実行される所定の前記分岐処理手段にて分岐できなかった場合に障害対応処理を実行するトラップ手段と、
を実現させるためのプログラム。
【請求項8】
マイクロプロセッサが、
同一の所定の処理結果をそれぞれテストする複数のテスト処理工程と、各テスト処理によるテスト結果に応じてそれぞれ実行される複数の分岐処理工程と、を有すると共に、
前記複数の分岐処理工程のうち、他の前記分岐処理工程に優先して実行される所定の前記分岐処理工程に続いて、当該所定の分岐処理工程にて分岐できなかった場合に障害対応処理を実行するトラップ工程を有する、
ことを特徴とするマイクロプロセッサによる情報処理方法。
【請求項9】
前記トラップ工程は、前記障害対応処理の実行後に前記他の分岐処理工程に復帰する、ことを特徴とする請求項8記載のマイクロプロセッサによる情報処理方法。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2007−304838(P2007−304838A)
【公開日】平成19年11月22日(2007.11.22)
【国際特許分類】
【出願番号】特願2006−132305(P2006−132305)
【出願日】平成18年5月11日(2006.5.11)
【出願人】(000168285)エヌイーシーコンピュータテクノ株式会社 (572)
【Fターム(参考)】