(57)【要約】  少なくとも二つの命令実行部を備えたコンピュータシステムにおいて初期状態を設定する方法であって、パフォーマンスモードとコンペアモードとの間で切り替え可能であり、パフォーマンスモード用の第１レジスタセットが設けられており、第１レジスタセットは少なくとも第１命令実行部用の第１レジスタと少なくとも第２命令実行部用の第２レジスタから成り、パフォーマンスモードからコンペアモードへ切り替わる際に、第２レジスタセットがコンペアモードの初期状態に設定され、第２レジスタセットは少なくとも第１命令実行部用の第３レジスタと少なくとも第２命令実行部用の第４レジスタから成り、コンペアモードの初期状態が第１レジスタセットから第２レジスタセットに切り替わることによって得られることを特徴とする、少なくとも二つの命令実行部を備えたコンピュータシステムにおいて初期状態を設定する方法が提供される。【特許請求の範囲】
【請求項１】
少なくとも二つの命令実行部を備えたコンピュータシステムにおいて初期状態を設定する方法であって、パフォーマンスモードとコンペアモードとの間で切り替え可能であり、前記パフォーマンスモード用の第１レジスタセットが設けられており、前記第１レジスタセットは少なくとも第１命令実行部用の第１レジスタと少なくとも第２命令実行部用の第２レジスタから成る方法において、
前記パフォーマンスモードから前記コンペアモードへ切り替わる際に、第２レジスタセットがコンペアモードの初期状態に設定され、前記第２レジスタセットは少なくとも第１命令実行部用の第３レジスタと少なくとも第２命令実行部用の第４レジスタから成り、前記コンペアモードの初期状態が前記第１レジスタセットから前記第２レジスタセットに切り替わることによって得られることを特徴とする、少なくとも二つの命令実行部を備えたコンピュータシステムにおいて初期状態を設定する方法。
【請求項２】
前記パフォーマンスモードの初期状態が、前記第２レジスタセットから前記第１レジスタセットに切り替わることによって得られることを特徴とする請求項１に記載の方法。
【請求項３】
少なくとも二つの命令実行部を備えたコンピュータシステムにおいて初期状態を設定する装置であって、パフォーマンスモードとコンペアモードとの間で切り替え可能であり、前記パフォーマンスモード用の第１レジスタセットが設けられており、前記第１レジスタセットは少なくとも第１命令実行部用の第１レジスタと少なくとも第２命令実行部用の第２レジスタから成るように構成された手段を備えた装置において、
前記パフォーマンスモードから前記コンペアモードへ切り替わる際に、第２レジスタセットがコンペアモードの初期状態に設定され、前記第２レジスタセットは少なくとも第１命令実行部用の第３レジスタと少なくとも第２命令実行部用の第４レジスタから成り、前記コンペアモードの初期状態が前記第１レジスタセットと前記第２レジスタセット間で切り替わることによって得られることを特徴とする、少なくとも二つの命令実行部を備えたコンピュータシステムにおいて初期状態を設定する装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、特許請求の範囲に記載の概念に基づいてプログラムセグメントを実行する、少なくとも２つの命令実行部を備えたマイクロプロセッサ（コンピュータシステム）において、少なくとも２つの演算モード間で切り替える方法および装置に関する。
【背景技術】
【０００２】
アルファ粒子や宇宙線によって引き起こされる一時的エラーは半導体集積回路の大きな問題となっている。構造幅が狭小になり、駆動電圧が低下し、クロック周波数が高くなるにつれ、アルファ粒子や宇宙線に起因するピーク電圧により、集積回路内で論理値の誤りが発生する確率が高まっている。その結果、誤った演算結果が生じる可能性がある。そのため、安全性に関わるシステムにおいては、このようなエラーを確実に検出しなければならない。
【０００３】
車両のアンチロック・ブレーキ・システム（ＡＢＳ）のように、電子装置の機能不全を確実に検出する必要がある安全性に関わるシステムにおいては、通常、システムの対応する制御装置自体に予めエラー検出のためのリダンダンシーが設けられている。例えば、前記ＡＢＳシステムにおいては全マイクロコントローラが二重化されており、ＡＢＳ機能全体が冗長性を持って計算され、それらの結果が一致するかどうかがチェックされる。演算結果が不一致の場合には、ＡＢＳシステムは停止される。
【０００４】
このようなプロセッサユニットはデュアルコアまたはマルチコア・アーキテクチャとしても知られている。異なるコアが冗長性を持って、クロック信号に同期して同一のプログラムセグメントを実行する。両コアの演算結果は比較され、演算結果の一致を比較した際にエラーが認識される。以下では、このような機器構成をコンペアモードと呼ぶ。
【０００５】
デュアルコアまたはマルチコア・アーキテクチャは他の用途では性能向上、つまりパフォーマンス向上のために投入される。両コアはコンペアモードやシングルコアシステムとは違い、異なるプログラムセグメントを実行してパフォーマンス向上を図る。この機器構成を性能モードまたはパフォーマンスモードと呼ぶ。このようなシステムは、同種のコアを備える特別な実施形態において、対称型マルチプロセッシングシステム（ＳＭＰ）とも呼ばれる。
【０００６】
このシステムは、特定のアドレスと特化されたハードウエアデバイスにアクセスし、ソフトウエアによってこの２つのモードを切り替えることで拡張される。コンペアモードにおいてはコアの出力信号が相互に比較される。パフォーマンスモードにおいて、両コアは対称型マルチプロセッシングシステム（ＳＭＰ）として機能し、異なるプログラム、プログラムセグメントまたは指令を実行する。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
背景技術で述べたマイクロプロセッサは、パフォーマンスモードからコンペアモードへ切り替える前に、命令実行部の内部状態（レジスタ、パイプライン等）を一致させる必要がある。そのため、４つのレジスタを搭載した命令実行部においては、計算に比較的長く時間が掛かり、パフォーマンスモードからコンペアモードへのモード切り替えが長引く可能性がある。従来の方法では、命令実行部のすべてのレジスタを「０」の値に設定するか、またはレジスタの内容を無効としてマークして命令実行部の状態を一致させる必要がある。
【０００８】
本発明は、このようなパフォーマンスモードからコンペアモードへの変換（プロセス）を短縮することを課題としている。以下に述べる実施形態は従来の技術に比べて、パフォーマンスモードからコンペアモードへのより迅速な切り替えを可能にする点で優れている。つまり、命令実行部のレジスタをそれぞれのモードに応じて、本発明の方法また装置を用いて、迅速に初期化することが出来る。
【課題を解決するための手段】
【０００９】
本発明の利点は、少なくとも二つの命令実行部を備えたコンピュータシステムにおいて初期状態を設定する方法であって、パフォーマンスモードとコンペアモードとの間で切り替え可能であり、前記パフォーマンスモード用の第１レジスタセットが設けられており、前記第１レジスタセットは少なくとも第１命令実行部用の第１レジスタと少なくとも第２命令実行部用の第２レジスタから成る方法において、前記パフォーマンスモードから前記コンペアモードへ切り替わる際に、第２レジスタセットがコンペアモードの初期状態に設定され、前記第２レジスタセットは少なくとも第１命令実行部用の第３レジスタと少なくとも第２命令実行部用の第４レジスタから成り、前記コンペアモードの初期状態が前記第１レジスタセットから前記第２レジスタセットに切り替わることによって得られることを特徴とする、少なくとも二つの命令実行部を備えたコンピュータシステムにおいて初期状態を設定する方法にある。
本発明の利点は、前記パフォーマンスモードの初期状態が、前記第２レジスタセットから前記第１レジスタセットに切り替わることによって得られるように構成することにある。
本発明の利点は、少なくとも二つの命令実行部を備えたコンピュータシステムにおいて初期状態を設定する装置であって、パフォーマンスモードとコンペアモードとの間で切り替え可能であり、前記パフォーマンスモード用の第１レジスタセットが設けられており、前記第１レジスタセットは少なくとも第１命令実行部用の第１レジスタと少なくとも第２命令実行部用の第２レジスタから成るように構成された手段を備えた装置において、前記パフォーマンスモードから前記コンペアモードへ切り替わる際に、第２レジスタセットがコンペアモードの初期状態に設定され、前記第２レジスタセットは少なくとも第１命令実行部用の第３レジスタと少なくとも第２命令実行部用の第４レジスタから成り、前記コンペアモードの初期状態が前記第１レジスタセットと前記第２レジスタセット間で切り替わることによって得られることを特徴とする、少なくとも二つの命令実行部を備えたコンピュータシステムにおいて初期状態を設定する装置にある。
【発明の効果】
【００１０】
本発明によれば、このようなパフォーマンスモードからコンペアモードへの変換（プロセス）を短縮することができる。本発明は従来の技術に比べて、パフォーマンスモードからコンペアモードへのより迅速な切り替えを可能にする点で優れている。つまり、命令実行部のレジスタをそれぞれのモードに応じて、本発明の方法また装置を用いて、迅速に初期化することが出来る。
【００１１】
本発明のさらに別の利点や有利な実施形態は、特許請求の範囲または発明の詳細な記述の構成から明らかとなろう。
【発明を実施するための最良の形態】
【００１２】
図に示す幾つかの構成要素には同じ符号と、さらにａまたｂを付している。ａまたはｂがない符号に言及する場合、そこで示す構成要素は特定の実施形態に関するものではない。構成要素の特定の実施形態に言及する場合は常に符号の後にａまたはｂの識別子を付する。
【００１３】
以下、プロセッサ、コア、ＣＰＵ、ＦＰＵ（浮動小数点演算装置）、ＤＳＰ（デジタルシグナルプロセッサ）、コプロセッサ、ＡＬＵ（演算論理装置）を命令実行部と総称する。
【００１４】
図１は、２つの命令実行部Ｃ１００ａ、Ｃ１００ｂを備え、コンペアモードとパフォーマンスモード間で切り替わるプロセッサシステムＣ１０００を示している。ここに示す実施形態において、命令実行部は同一のものを指している。両命令実行部Ｃ１００ａ、Ｃ１００ｂはそれぞれ、ＲＡＭ、ＲＯＭ、フラッシュメモリ等の記憶装置、または周辺装置へアクセスするシステムバスとして、インタフェースＣ１１０ａ、Ｃ１１０ｂを備えている。プロセッサシステムＣ１０００がコンペアモードの状態にある場合、命令実行部Ｃ１００ａ、Ｃ１００ｂの出力信号はユニットＣ１２０を介して相互に比較される。主としてこの比較はクロック信号と同期してまたは固定のクロック周期で行われる。このことは、クロック信号ごとにユニットＣ１２０が少なくとも２つの命令実行部Ｃ１００ａ、Ｃ１００ｂの入力信号を比較することを意味している。比較した信号が不一致の場合、ユニットＣ１２０はエラー信号を生成する。理想的には、さらに命令実行部Ｃ１００ａ、Ｃ１００ｂの出力信号も比較することが可能である。プロセッサＣ１０００がパフォーマンスモードの状態にある場合、コンペアユニットＣ１２０はアクティブではなく、命令実行部の出力信号が不一致であってもエラー信号が生成されない。コンペアユニットの不活性化は様々な方法で実現可能である。つまり、ユニットＣ１２０による比較が実行されない。または、ユニットＣ１２０に（ａｎ）比較を促す信号が入力されない。あるいは、ユニットＣ１２０は比較を実行するが結果は無視されるのである。
【００１５】
パフォーマンスモードからコンペアモードへの変換においては、コンペアモードの開始とともに、つまり、コンパレータＣ１２０が活性化される時点で、両命令実行部Ｃ１００ａ、Ｃ１００ｂの内部状態が一致していることを確認する必要がある。以下、コンペアモードにおいて演算を開始する、コンペアモード開始時点の状態を初期状態と呼ぶ。コンペアモードのどの時点でも、Ｃ１２０に比較された信号にエラーがない場合には不一致を示さないように、命令実行部の状態は一致している必要がある。コンペアモードにおいて命令実行部の状態が異なる（一致しない）場合は通常、異なる出力信号が生成される。コンパレータは入力信号が同じで処理の際に検出すべきエラーが発生していなくても、この異なる出力信号をエラーとして検出することが予想される。
【００１６】
両命令実行部でコンペアモードの開始時点に同じ状態を実現する方策のひとつとして、命令実行部の内部レジスタをすべて無効としてマーキングすることが挙げられる。しかし、マーキングはすべての内部レジスタで実行可能ではない。また、レジスタは両命令実行部で同一の、ある固定値に設定する必要がある。
【００１７】
図２は、第１の実施形態において、２つのレジスタセット間の切り替える状態を示している。図２は可能な命令実行部Ｃ１００の実施形態を示している。命令実行部は少なくとも２つの異なるレジスタグループＣ１０１、Ｃ１０２と内部装置Ｃ１０３を含む。レジスタグループＣ１０１は、無効としてマークすることが可能である。つまり、命令実行部の内部装置Ｃ１０３は、この無効としてマークしたレジスタグループにアクセスする際に、ＲＡＭ、ＲＰＭ、フラッシュメモリからのリロード、または新たに計算をして、このレジスタの内容を新たに識別する必要がある。他方のレジスタグループＣ１０２の内容は常に有効である。例えば、命令実行部のワーキングレジスタはこのレジスタグループに分類される。パフォーマンスモードからコンペアモードへ切り替わる場合、前記のとおり両命令実行部Ｃ１００のレジスタＣ１０１、Ｃ１０２が一致している必要がある。
【００１８】
このようなレジスタグループＣ１０１、Ｃ１０２の条件は、必ずしもパフォーマンスモードからコンペアモードへ切り替わる時点から有効である必要はないが、コンペアモードへ切り替わった後で、遅くとも命令実行部Ｃ１００内の２つの一致したレジスタへ１回目の読込みアクセスをする際には条件が整っている必要がある。従来の方法では、コンペアモードへの切り替え前または後、適時にレジスタグループＣ１０２のレジスタすべてにある固定値を指定している。  このこととは無関係に、レジスタグループＣ１０１はコンペアモードへ切り替わる際に無効としてマークする。
【００１９】
図３に示すように、命令実行部Ｃ１００をＣ１００ｃのように構成すると、それぞれの命令実行部で２つのレジスタセットＣ１０１ａ、Ｃ１０２ａ  とＣ１０１ｂ，  Ｃ１０２ｂを投入して、前述のプロセスを加速することが可能である。切り替え前、切り替え中、または切り替え後にレジスタを一致させる代わりに、パフォーマンスモードとコンペアモードで異なるレジスタを使用する。コンペアモードにおいてはレジスタグループＣ１０１ａ、Ｃ１０２ａを、パフォーマンスモードにおいてはレジスタグループＣ１０１ｂ、Ｃ１０２ｂを使用する。これらのレジスタセットは、コンペアモードまたはパフォーマンスモードへ切り替わる時点で切り替えられる。例えば、プロセッサを起動する際に当該初期化を行い、レジスタ１０１ａ、１０２ａの内容が一致していることを一度確定すれば、このレジスタは演算中も両命令実行部において同じ内容のままである。そのため、パフォーマンスモードからコンペアモードへ切り替わる際にレジスタの内容を一致させる必要はない。つまり、コンペアモードにおいては常に、両命令実行部Ｃ１００ａ、Ｃ１００ｂで同一の、コンペアモードに限り書込み可能なレジスタにのみアクセスするのである。
【００２０】
図４は、第２の実施形態において、一方の命令実行部の内部状態を他方の命令実行部へとコピーする（プロセス）を描写している。パフォーマンスモードからコンペアモードへの切り替えプロセスを加速させる、更なる可能性を図４に示す。つまり、内部状態Ｃ１０４ｄまたはＣ１０４ｅを命令実行部Ｃ１００ｄ、Ｃ１００ｅからもう一方の命令実行部Ｃ１００ｄ、Ｃ１００ｅへコピーするのである。演算中パフォーマンスモードからコンペアモードへ切り替わる際は通常、一方の命令実行部が他方の命令実行部よりも早期に（モード）切り替えの準備ができている。先に準備できている命令実行部の内部レジスタ（Ｃ１００ｄ内のＣ１０４ｄ、Ｃ１００ｅ内の１０４ｅ）を、切り替え前にコンペアモードに要する値に初期化すると、第１命令実行部の内部状態を引き継いで、後続の第２命令実行部の内部状態を一致させることが可能である。例えば、命令実行部Ｃ１００ｄが命令実行部Ｃ１００ｅより先に切り替え準備ができている場合、切り替えの際に内部状態Ｃ１０４ｄはＣ１０４ｅへとコピーされる。
【００２１】
このような内部状態のコピーは、両命令実行部間を結ぶ接続Ｃ３００を直接利用して行うことが可能である。その他の方法では、先にモード切り替えする、第１命令実行部の状態を高速アクセス可能な中間記憶装置Ｃ２００にコピーし、後続の命令実行部がその内部状態を内部レジスタに引き継ぐ。
【００２２】
図５は、さらに別の実施形態において、高速の接続を設けた記憶装置領域からレジスタの内容をコピーし、コンペアモードに入るために内部状態を初期化する（プロセス）を示している。その際、パフォーマンスモードの開始時点において、少なくとも２つの命令実行部Ｃ１００ｆ、Ｃ１００ｇの内部状態Ｃ１０４ｆ、Ｃ１０４ｇを常に正確にある固定値に設定することを前提としている。この値は、命令実行部Ｃ１００ｆ、Ｃ１００ｇ、さらにレジスタＣ１０４ｆ、Ｃ１０４ｇに可能な限り高速で接続する記憶装置Ｃ４００に保存されている。この記憶装置は非揮発性記憶装置であることが好ましい。しかし、マルチプロセッサシステムの初期化の際に、記憶装置に保存されているパフォーマンスモード向けの初期化状態を非揮発性記憶装置からコピーするか、外部データソースから受け取るか、またはマルチプロセッサシステムから生成するなら、揮発性記憶装置でも可能である。パフォーマンスモードからコンペアモードへの切り替えのため、またはその際に、記憶装置Ｃ４００に保存されたコンペアモード向けの初期化状態は、少なくとも２つの命令実行部Ｃ１００ｆ、Ｃ１００ｇ内の、コンペアモードに限り記述（ｂｅｓｃｈｒｅｉｂｅｎ）可能なレジスタＣ１０４ｆ、Ｃ１０４ｇに書き込まれる。
【００２３】
別の実施形態においては、コンペアモードへの切り替えの際に命令実行部間で一致させる必要のない、下位状態（Ｔｅｉｌｚｕｓｔａｎｄ）を特記している（ｍａｋｉｅｒｅｎ）。パフォーマンスモードからコンペアモードへ切り替わる際、命令実行部のレジスタを常にすべて一致させる必要はない。コンペアモードで誤ってエラーを認識しないように、命令実行部の、コンペアモードで事実上利用するレジスタに限り、第２命令実行部のレジスタと一致させる必要がある。これは特に、命令実行部に予め多数のレジスタを用意したアーキテクチャに該当することであるが、ソフトウエア開発において付帯条件（Ｎｅｂｅｎｂｅｄｉｎｇｕｎｇ）として考慮する余地がある。いずれにせよ、コンペアモードにおいて使用するレジスタの数を決定することが可能である。すべてのレジスタを利用しない場合、すべてではなく使用するレジスタに限って一致させる必要がある。そのため、どのレジスタにも予め追加的ビットを備えることを提案する。このビットには、パフォーマンスモードからコンペアモードへ切り替わる際、このレジスタの内容を他方の命令実行部の当該レジスタと一致させるか否かについて符号化される。その他の方法として、命令実行部のどのレジスタを他方の命令実行部の当該レジスタと一致させる必要があるかを決定する、特別なレジスタを想定することが可能である。一致化自体はマーキングとは無関係に、前記のまたはここで紹介する方法によって実行することが可能である。
【００２４】
図７は、レジスタＣ３１１、Ｃ３２１を備えた複数の命令実行部Ｃ３１０、Ｃ３２０を搭載するプロセッサシステムＣ３００を示している。各レジスタＣ３１１、Ｃ３２１は、ユーティリティデータ（図６、Ｃ２０１０参照）を持つｎ  ビット（ｎ＞１）で構成される。このｎビットに、さらに制御データＳｔｅｕｅｒｄａｔｅｎ（図６、Ｃ２０００参照）を持つｍビット（ｍ＞＝１）が加わる。このｍビットには、コンペアモードへの変換の際に一致させるかについて符号化されている。もっとも簡単なケースで制御ビットが１ビットなら、「０」の値は一致させる必要がないことを意味し、「１」の値は一致させる必要があることを意味している。このようなビットに関する評価は、パフォーマンスモードからコンペアモードへ切り替わる際に行われる。
【００２５】
図８は、命令実行部Ｃ４１０、Ｃ４２０とさらにその内部にレジスタＣ４１１、Ｃ４２２を備えたプロセッサシスムＣ４００を搭載した、本発明における別の実施形態を示している。プロセッサシステムＣ４００はさらに追加レジスタＣ４３０を備えている。このレジスタＣ４３０の内容が、コンペアモードへ切り替わる際に命令実行部Ｃ４１０、Ｃ４２０のレジスタＣ４１１、Ｃ４２１のどちらを一致させる必要があるかを決定する。例えば、レジスタＣ４３０は、潜在的に統一されうるレジスタＣ４１１、Ｃ４２１がＣ４３０に予め１ビット備えるような設計で実現可能である。当該ビットを設定した場合対応するレジスタを一致させる必要があり、ビットを設定しない場合は対応するレジスタを一致させる必要はない。このレジスタに関する評価は、パフォーマンスモードからコンペアモードへ切り替わる際に行われる。図示していないが、新たな実施形態において、図８に示す中央レジスタＣ４３０は用意されていない。しかし、それぞれの命令実行部にレジスタＣ４３０のタスクを代行するレジスタが備わっている。つまり、このレジスタには、パフォーマンスモードからコンペアモードへ切り替わる際に、命令実行部のどのレジスタが少なくとも第２命令実行部のレジスタと一致させる必要があるかどうかについて符号化される。パフォーマンスモードからコンペアモードへ切り替わる際はむろん、同期的に稼動しているすべての命令実行部でこの特別なレジスタの内容が一致していることを確認する必要がある。
【図面の簡単な説明】
【００２６】
【図１】２つの命令実行部と１つのコンペアユニットを備えたプロセッサの一般的な構成を示す。
【図２】２つの異なるレジスタグループと処理装置を備えた命令実行部の可能な構成を示す。
【図３】２つの異なるレジスタセットと処理装置を備えた命令実行部の可能な構成を示し、レジスタセットは内部でさらに２つの異なる下位グループに分かれている。
【図４】内部レジスタ、中間記憶装置、命令実行部間で内部状態をコピーする接続が備わった２つの命令実行部を示す。
【図５】内部レジスタと、コンペアモードの初期状態に入るために内部状態を読み取る中間記憶装置が備わった２つの命令実行部を示す。
【図６】ユーティリティデータと制御データを備えたレジスタの構成を示す。
【図７】２つの命令実行部とその内部レジスタを備えたマルチプロセッサを示す。
【図８】２つの命令実行部とその内部レジスタ、特別なレジスタを備えたマルチプロセッサを示す。
【図１】
2009505187.tif 000002
【図２】
2009505187.tif 000003
【図３】
2009505187.tif 000004
【図４】
2009505187.tif 000005
【図５】
2009505187.tif 000006
【図６】
2009505187.tif 000007
【図７】
2009505187.tif 000008
【図８】
2009505187.tif 000009
【国際調査報告】
2009505187.tif 000010
2009505187.tif 000011
2009505187.tif 000012
2009505187.tif 000013
2009505187.tif 000014
2009505187.tif 000015