(57)【要約】【課題】分岐命令に対して適正な分岐先命令を実行する。【解決手段】演算部１１は、分岐処理を含む処理命令をパイプライン処理により実行する。分岐決定部１３は、演算部１１が分岐命令を実行するとその実行結果に基づいて、分岐命令の次に実行する分岐先命令を特定した分岐情報を出力する。演算部２１は、演算部１１が実行する処理命令を、パイプライン処理により、演算部１１よりも所定時間だけ遅れて実行する。パイプライン制御部２２は、分岐決定部１３が出力した分岐情報を受け付けると、受け付けた分岐情報に対応する分岐先命令の演算部２１による実行を開始する。【選択図】図１
2010152640.tif 000002
【特許請求の範囲】
【請求項１】
処理命令をパイプライン処理により実行する第１の演算部と、
前記第１の演算部が前記処理命令として条件分岐命令を実行すると、前記条件分岐命令が分岐するか否かを決定する分岐決定部と、
を備える第１の処理部と、
前記第１の演算部が実行する前記処理命令を、前記第１の演算部よりも所定時間だけ遅れて実行する第２の演算部と、
前記分岐決定部が前記条件分岐命令が分岐するか否かの情報を出力すると、その情報により前記条件分岐命令の分岐の有無を処理するパイプライン制御部と、
を備える第２の処理部と、
を有することを特徴とする情報処理装置。
【請求項２】
前記第１の処理部は、前記第１の演算部が前記条件分岐命令を読み出すと、前記条件分岐命令が分岐するか否かを予測する分岐予測部を更に備え、
前記所定時間は、前記分岐予測部が予測した分岐先命令である予測分岐先命令の実行を前記第１の演算部が開始した時点から、当該分岐命令の前記分岐先命令が確定されるまでに要する時間であることを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記第１の処理部は、
前記第１の演算部が前記分岐命令を読み出すと、前記条件分岐命令が分岐するか否かを予測する分岐予測部と、
前記分岐予測部により予測された分岐の有無が、前記分岐決定部により特定された前記分岐の有無と一致するか否かを判定する予測結果判定部と、
を更に備え、
前記第２の演算部に動作クロックを供給するクロック供給部と、
前記予測結果判定部により分岐の有無が一致していないと判定された場合に、前記第１の演算部により実行された前記処理命令が、前記第２の演算部により前記所定時間だけ遅れて実行されるように、前記クロック供給部による前記第２の演算部への前記動作クロックの供給を制御するクロック調整部と、
を更に有することを特徴とする請求項１記載の情報処理装置。
【請求項４】
前記クロック調整部は、前記予測結果判定部により前記分岐の有無の予測が一致していないと判定された場合に、前記クロック供給部による前記第２の演算部への前記動作クロックの供給を前記所定時間だけ停止させることを特徴とする請求項３記載の情報処理装置。
【請求項５】
前記第１の処理部が前記処理命令を実行する際に外部メモリへのアクセスに用いるアドレス情報を含む第１の異常検出用情報と、前記第２の処理部が前記第１の処理部と同一の前記処理命令を実行する際に前記外部メモリへのアクセスに用いるアドレス情報を含む第２の異常検出用情報とが、一致するか否かを判定して、前記第１または第２の処理部の演算処理の異常検出を行う異常検出部と、
前記第１の処理部が出力した前記第１の異常検出用情報を取得し、当該第１の異常検出用情報の前記異常検出部への入力タイミングを対応する前記第２の異常検出用情報の前記異常検出部への入力タイミングに同期させる異常検出タイミング調整部と、
を更に有することを特徴とする請求項１〜４記載の情報処理装置。
【請求項６】
複数の処理部を備えた情報処理装置のパイプライン処理方法であって、
第１の処理部が、パイプライン処理により処理命令を実行し、
第２の処理部が、前記第１の処理部よりも所定時間だけ遅れて、パイプライン処理により前記処理命令を実行し、
前記第１の処理部が前記処理命令として条件分岐命令を実行すると、分岐の有無の結果を出力し、
前記第２の処理部が、前記第１の処理部が前記分岐の有無の結果を出力すると、前記条件分岐実行時の分岐予測情報として使用する、
ことを特徴とするパイプライン処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置およびパイプライン処理方法に関し、特に、それぞれ処理命令を実行可能な複数の処理部を備える情報処理装置およびこのような情報処理装置のパイプライン処理方法に関する。
【背景技術】
【０００２】
従来、システムの信頼性向上が図られている。特に高い信頼性が要求されるシステムでは、情報処理装置内に演算処理を行う処理回路を複数搭載して、各処理回路における処理の内容・結果を比較して、演算結果の信頼性を得る方法が用いられている。このような方法では、例えば、情報処理装置内に主処理回路および副処理回路を設け、各処理回路で同一の演算処理を行い、処理対象データや外部メモリへの読み書き時のアドレス情報を比較する。そして、主処理回路と副処理回路とが出力する上記の比較対象のデータが一致していない場合、処理に誤りが発生したものとし、システムの管理者等に異常が発生した旨の通知を行う。このような異常検出システムによれば、処理結果に対して高い信頼性を得ることができる。
【０００３】
ところで、一般に、処理回路における演算処理を効率的に行う方法として、パイプライン処理が知られている。処理回路内には、命令を実行する際に、命令の読み出し、デコード、実行、メモリへの書き戻し等の複数のステージを実行するための回路が別個に設けられている。パイプライン処理では、上記の各回路を独立して動作させ、動作クロック毎に各回路に対して処理を次々に投入して、複数の命令を並列に実行させる。これにより、各回路の処理の実行効率が向上し、処理速度を向上することができる。
【０００４】
また、上記処理回路では、更にパイプライン処理による処理速度を向上させるため、実行処理の対象が分岐命令である場合、分岐の有無を分岐命令の実行完了前に予測する分岐予測が行われる。分岐予測では、予測の結果得られた分岐命令の予測分岐先命令を、分岐条件となる演算結果を待たずにパイプライン処理に投入することで、予測ヒット時の処理速度が向上する。このような方法として、分岐命令の前々段の命令実行タイミングから、先行して分岐命令の分岐予測、および、予測の正否判定を行って、分岐予測が正しい場合に分岐命令の実行時間を見かけ上０にして、処理速度の向上を図る方法も知られている（例えば、特許文献１参照）。
【特許文献１】特開平５−１２７８９７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、近年情報処理装置は低消費電力化が求められており、冗長性を持たせて信頼性を高める装置であっても、可能な限り消費電力を削減することが望ましい。
本件はこのような点に鑑みてなされたものであり、分岐命令に対して適正な分岐先命令を実行する情報処理装置およびパイプライン処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、複数の処理部を備えた情報処理装置が提供される。この情報素処理装置は、第１の処理部および第２の処理部を有する。第１の処理部は、第１の演算部および分岐決定部を有する。第１の演算部は、処理命令をパイプライン処理により実行する。分岐決定部は、第１の演算部の実行結果に基づいて、条件分岐命令が分岐するか否かの情報を出力する。第２の処理部は、第２の演算部およびパイプライン制御部を有する。第２の演算部は、第１の演算部が実行する処理命令を、第１の演算部よりも所定時間だけ遅れて実行する。パイプライン制御部は、上記分岐決定部が条件分岐命令の分岐するか否かの情報を出力すると、この情報に対応する条件分岐先命令の次の命令の実行を第２の演算部に開始させる。
【０００７】
このような情報処理装置によれば、第１の処理部の第１の演算部により、処理命令がパイプライン処理により実行される。そして、第２の処理部の第２の演算部により、第１の処理部の第１の演算部によって実行される処理命令が、パイプライン処理により、第１の処理部よりも所定時間だけ遅れて実行される。更に、第１の処理部の第１の演算部により、処理命令として条件分岐命令が実行されると、第１の処理部の分岐決定部により、条件分岐命令が分岐するか否かの情報が出力される。そして、第１の処理部の分岐決定部により上記情報が出力されると、第２の処理部のパイプライン制御部により、この条件分岐情報に基づいて条件分岐命令の次に実行される命令が決定され、実行が開始させられる。
【０００８】
また、上記課題を解決するために、上記情報処理装置と同様の処理を行うパイプライン処理方法が提供される。
【発明の効果】
【０００９】
上記情報処理装置およびパイプライン処理方法によれば、分岐命令の分岐先予測ミスを防止することができる。
【発明を実施するための最良の形態】
【００１０】
以下、実施の形態を図面を参照して詳細に説明する。まず、実施の形態の概要について説明し、その後、実施の形態の具体的な内容を説明する。
図１は、実施の形態の情報処理装置の概要を示す図である。図１に示す情報処理装置１は、複数の処理回路を備える。情報処理装置１は、処理部１０，２０を有する。処理部１０，２０は、同一の命令を互いに異なるタイミングで実行する。
【００１１】
処理部１０は、演算部１１、分岐予測部１２、分岐決定部１３およびパイプライン制御部１４を有する。
演算部１１は、処理命令をパイプライン処理により実行する。なお、この処理命令として、条件分岐命令が実行される場合もある。
【００１２】
分岐予測部１２は、演算部１１が分岐命令を実行する場合、条件分岐命令の分岐の有無を予測・決定した分岐予測情報をパイプライン制御部１４に出力する。
分岐決定部１３は、演算部１１がコンディションコードの決定などにより条件分岐命令が分岐するか否かを最終的に決定した情報をパイプライン制御部１４に出力する。また、分岐決定部１３は、分岐情報を処理部２０のパイプライン制御部２２に出力する。
【００１３】
パイプライン制御部１４は、分岐予測部１２から分岐予測情報を取得すると、取得した分岐予測情報に対応する予測分岐先命令を、分岐命令の次に実行する命令として、演算部１１のパイプライン処理に投入する。その後、パイプライン制御部１４は、分岐決定部１３から分岐情報を取得すると、取得した分岐情報に基づいて、分岐予測部１２から取得した分岐予測情報が正しかったか否かを判定する。
【００１４】
パイプライン制御部１４は、予測が正しい場合、先行してパイプライン処理に投入した予測分岐先命令の実行を有効とする。
また、パイプライン制御部１４は、予測が誤っている場合、先行してパイプライン処理に投入した予測分岐先命令の実行を無効とし、実行を中止する。そして、無効とした命令の代わりに、分岐情報によって特定される正しい命令を新たにパイプライン処理に投入する。
【００１５】
一方、処理部２０は、演算部２１およびパイプライン制御部２２を有する。
演算部２１は、演算部１１が実行する処理命令と同一の処理命令をパイプライン処理により実行する。演算部２１は、演算部１１よりも所定時間だけ遅れて上記処理命令を実行する。
【００１６】
パイプライン制御部２２は、分岐決定部１３から分岐するか否かの情報を取得すると、受け付けた分岐情報に対応する分岐先命令または次命令を演算部２１のパイプライン処理に投入し、演算部２１による次の命令の実行を開始する。
【００１７】
上記の構成の情報処理装置１によれば、処理部２０は、処理部１０の分岐命令の実行結果に基づいて、分岐命令に対する分岐先命令を特定して実行する。
このようにすると、処理部２０において、分岐命令に対する分岐先命令を確実に特定することができる。これにより、処理部２０において分岐予測のミスによるペナルティ動作を行わないようにすることができ、消費電力を削減することができる。また、処理部２０について分岐予測用の構成を省くこともでき、処理部２０の小型化も可能である。
【００１８】
図２は、本実施の形態のコンピュータの構成を示す図である。図２に示すコンピュータ１００は、複数のＣＰＵ（Central Processing Unit）を備える。コンピュータ１００は、各ＣＰＵによる同一の演算処理の対象となるデータやそのデータの格納先を指定するアドレス情報を比較することで演算処理の正否を判定して、演算処理の異常検出を行う。コンピュータ１００は、この異常検出により、演算処理やデータの信頼性を向上する。コンピュータ１００は、メモリ１１０、メインＣＰＵ１２０、サブＣＰＵ１３０、クロック供給回路１４０、クロック調整回路１５０および異常検出タイミング調整回路１６０を有する。
【００１９】
メモリ１１０は、メインＣＰＵおよびサブＣＰＵの処理に用いる各種データを記憶する。
メインＣＰＵ１２０は、演算回路１２１、分岐予測回路１２２、分岐決定回路１２３、パイプライン制御回路１２４および入出力回路１２５を有する。
【００２０】
演算回路１２１は、命令アドレスで指定される各種処理命令をパイプライン処理により実行する。また、演算回路１２１の実行結果の情報（コンディションコード値等）を分岐決定回路１２３に通知する。
【００２１】
なお、演算回路１２１は、処理の対象となるデータの読み出し元を指定するアドレス情報を入出力回路１２５に出力して、入出力回路１２５から、処理対象となるデータを取得する。そして、演算回路１２１は、取得したデータに対して、演算処理を行ったデータおよび書き出し先を指定するアドレス情報を入出力回路１２５に出力する。
【００２２】
分岐予測回路１２２は、パイプライン制御回路１２４が条件分岐命令を実行すると、条件分岐命令が分岐するか否かを予測してパイプライン制御回路１２４に出力する。
分岐予測回路１２２は、例えば、同一の分岐命令に関する過去の分岐履歴情報を分岐予測回路１２２が有するバッファに記憶しており、この分岐履歴情報から上記分岐するか否かの予測を生成することができる。なお、分岐予測回路１２２は、他の条件により、分岐予測を行ってもよい。この場合、分岐予測のために必要な条件を演算回路１２１から取得してもよい。
【００２３】
分岐決定回路１２３は、演算回路１２１の実行結果を取得して、条件分岐命令が分岐するか否かを決定し、パイプライン制御回路１２４に出力する。また、分岐決定回路１２３は、上記の条件分岐命令が分岐するか否かの情報をサブＣＰＵ１３０のパイプライン制御回路１３２に出力する。
【００２４】
パイプライン制御回路１２４は、演算回路１２１でのパイプライン処理を制御する。
また、パイプライン制御回路１２４は、分岐予測回路１２２から条件分岐命令が分岐するか否かの情報を取得すると、分岐命令の次に実行する命令を決定する。その後、パイプライン制御回路１２４は、分岐決定回路１２３から分岐条件成立の可否を取得すると、取得した内容に基づいて、分岐予測回路１２２から取得した予測分岐先が正しかったか否かを判定する。
【００２５】
パイプライン制御回路１２４は、予測が正しい場合、先行してパイプライン処理に投入した予測分岐先命令の実行を有効とする。
また、パイプライン制御回路１２４は、予測が誤っている場合、先行してパイプライン処理に投入した予測分岐先命令の実行を無効とし、実行を中止する。そして、無効とした予測分岐先命令の代わりに、本来実行されるべき命令をフェッチして、新たな命令の実行を開始させる。
【００２６】
更に、パイプライン制御回路１２４は、分岐予測が誤っている場合、その旨をクロック調整回路１５０に通知する。
入出力回路１２５は、演算回路１２１から取得した処理対象となるデータの読み出し元アドレスに応じて、メモリ１１０からデータを読み出し、読み出したデータを演算回路１２１に出力する。このとき、読み出し元アドレスと読み出されたデータは、異常検出タイミング調整回路１６０を通じて異常検出回路１３４にも供給される。
【００２７】
また、入出力回路１２５は、演算回路１２１からの処理結果データおよびこのデータの書き出し先アドレスに応じて、メモリ１１０にデータを書き出す。このとき、処理結果データおよび書き出し先アドレスは、異常検出タイミング調整回路１６０を通じて異常検出回路１３４にも供給される。
【００２８】
なお、入出力回路１２５は、例えば、メインＣＰＵ１２０とメモリ１１０とを接続するバスに対するインタフェース回路として実現されてもよい。
サブＣＰＵ１３０は、演算回路１３１、パイプライン制御回路１３２、入出力回路１３３および異常検出回路１３４を有する。
【００２９】
演算回路１３１は、パイプライン制御回路１３２により、命令アドレスで指定される各種処理命令をパイプライン処理により実行する。演算回路１３１は、メインＣＰＵ１２０の演算回路１２１と同一の処理命令を所定時間だけ遅れて実行する。
【００３０】
また、演算回路１３１は、処理の対象となるデータの読み出し元を指定するアドレス情報を入出力回路１３３に出力して、入出力回路１３３から、処理対象となるデータを取得する。そして、演算回路１３１は、取得したデータに対して、演算処理を行ったデータおよび書き出し先を指定するアドレス情報を入出力回路１３３に出力する。
【００３１】
パイプライン制御回路１３２は、実行すべき処理命令の命令アドレスを演算回路１３１に順次供給するとともに、演算回路１３１でのパイプライン処理を制御する。
また、パイプライン制御回路１３２は、メインＣＰＵ１２０の分岐決定回路１２３から条件分岐命令が分岐するか否かの情報を取得すると、それに基づいて条件分岐命令の次の命令をパイプラインに投入する。
【００３２】
入出力回路１３３は、演算回路１３１から取得した処理対象となるデータの読み出し元アドレスを受け取ると、このアドレスを異常検出回路１３４に出力し、アドレスに対応するデータを異常検出回路１３４から受け取って演算回路１３１に出力する。また、入出力回路１３３は、演算回路１３１からの処理結果データおよびこのデータの書き出し先アドレスを、異常検出回路１３４に出力する。
【００３３】
異常検出回路１３４は、入出力回路１３３からデータの読み出し元アドレスを受け取ると、同じ処理命令に基づく読み出し元アドレスと、そのアドレスに基づいてメモリ１１０から読み出されたデータとを、入出力回路１２５から異常検出タイミング調整回路１６０を通じて取得する。そして、入出力回路１３３，１２５のそれぞれからのアドレスを比較し、これらが一致している場合には、入出力回路１２５から取得したデータを入出力回路１３３に転送する。一方、各アドレスが異なる場合には、演算回路１２１または演算回路１３１の処理結果に異常が生じたと判定し、コンピュータ１００の管理者等に対して通知するための処理を行う。
【００３４】
また、異常検出回路１３４は、入出力回路１３３から処理結果データおよび書き出し先アドレスを受け取ると、同じ処理命令に基づく処理結果データおよび書き出し先アドレスを、入出力回路１２５から異常検出タイミング調整回路１６０を通じて取得する。そして、入出力回路１３３，１２５のそれぞれからのアドレスおよびデータを比較し、これらが一致している場合には、サブＣＰＵ１３０での処理をそのまま続行させる。一方、各アドレスまたはデータが異なる場合には、演算回路１２１または演算回路１３１の処理結果に異常が生じたと判定し、コンピュータ１００の管理者等に対して通知するための処理を行う。
【００３５】
なお、異常検出回路１３４は、サブＣＰＵ１３０内部の構成としたが、サブＣＰＵ１３０の外部に設けてもよい。
クロック供給回路１４０は、メインＣＰＵ１２０およびサブＣＰＵ１３０への動作クロックを生成し、供給する。
【００３６】
クロック調整回路１５０は、クロック供給回路１４０が生成したクロックのサブＣＰＵ１３０への供給／停止の動作を制御する。クロック調整回路１５０は、メインＣＰＵ１２０とサブＣＰＵ１３０の動作クロック間隔が短くなったときに、動作を元通りメインＣＰＵ１２０から所定のタイミングだけ遅らせるように、サブＣＰＵ１３０への動作クロックの供給を一時的に停止させる。
【００３７】
異常検出タイミング調整回路１６０は、入出力回路１２５がメモリ１１０との間で送受信するアドレスやデータを、所定の時間遅延させて異常検出回路１３４に出力する。この遅延時間は、例えば、演算回路１３１が同一処理命令を演算回路１２１から遅延して実行する際の遅延時間とされる。これにより、演算回路１２１による処理命令の実行に応じて出力されたアドレスが異常検出回路１３４に供給されるタイミングを、演算回路１３１による同一の処理命令の実行に応じて出力されたアドレスが異常検出回路１３４に入力されるタイミングに一致させることができる。
【００３８】
以下では、上記に説明した本実施の形態のコンピュータ１００に対して、比較のために演算処理の異常検出を行う従来のコンピュータに関して説明する。
図３は、従来の演算処理の異常検出を行うコンピュータの構成を示す図である。コンピュータ１００ａは、メモリ１１０、メインＣＰＵ１２０ａ、サブＣＰＵ１３０ａおよびクロック供給回路１４０を有する。メモリ１１０およびクロック供給回路１４０に関しては、図２において同一の符号を付して説明した構成と同様であるため説明を省略する。
【００３９】
メインＣＰＵ１２０ａは、演算回路１２１、分岐予測回路１２２、分岐決定回路１２３ａ、パイプライン制御回路１２４ａおよび入出力回路１２５を有する。
ここで、演算回路１２１、分岐予測回路１２２および入出力回路１２５は、図２において同一の符号を付して説明した構成と同様の機能であるため説明を省略する。
【００４０】
分岐決定回路１２３ａは、演算回路１２１からその実行結果を取得して、後続の条件分岐命令が分岐するか否かを決定する。分岐決定回路１２３ａは、生成した情報をパイプライン制御回路１２４ａに出力する。
【００４１】
パイプライン制御回路１２４ａは、演算回路１２１でのパイプライン処理を制御する。
サブＣＰＵ１３０ａは、演算回路１３１ａ、パイプライン制御回路１３２ａ、入出力回路１３３、異常検出回路１３４、分岐予測回路１３５および分岐決定回路１３６を有する。
【００４２】
ここで、入出力回路１３３および異常検出回路１３４は、図２において同一の符号を付して説明した構成と同様の機能であるため説明を省略する。なお、異常検出回路１３４は、メインＣＰＵ１２０ａの入出力回路１２５がメモリ１１０との間で送受信するアドレスやデータを、上記の異常検出タイミング調整回路１６０を介さずに直接取得する。また、演算回路１３１ａ、パイプライン制御回路１３２ａ、分岐予測回路１３５および分岐決定回路１３６に関しては、メインＣＰＵ１２０ａにおいて同一の名称を付して示した構成と同様の機能であるため説明を省略する。
【００４３】
メインＣＰＵ１２０ａおよびサブＣＰＵ１３０ａは、同一のタイミングで同一の命令を実行しながら、異常検出回路１３４による異常検出を行う。このため、サブＣＰＵ１３０ａでもメインＣＰＵ１２０ａと同様に分岐予測回路１３５および分岐決定回路１３６を動作させる必要がある。
【００４４】
更に、比較のため、従来のコンピュータ１００ａのパイプライン処理において分岐予測を誤った場合の処理に関して説明する。
図４は、従来のパイプライン処理において分岐予測を誤った場合の処理を示すタイミングチャートである。
【００４５】
ここで、パイプライン処理は、以下の４つの処理に分割され、更に各処理が２段階に分割されて、合計で８個のステージに分割されているものとする。第１の処理ＦＥ（Fetch）は、外部メモリから命令を読み込む処理である。処理ＦＥは、ＦＥ１およびＦＥ２の２つのステージに分割される。第２の処理ＤＥ（Decode）は、処理ＦＥにより読み込んだ命令を解読する処理である。処理ＤＥは、ＤＥ１およびＤＥ２の２つのステージに分割される。第３の処理ＥＸ（Execute）は、処理ＤＥにより解読した命令を実行する処理である。処理ＥＸは、ＥＸ１およびＥＸ２の２つのステージに分割される。第４の処理ＷＢ（Write Back）は、処理ＥＸによる命令の実行結果をプロセッサ内部のレジスタに書き出す処理である。処理ＷＢは、ＷＢ１およびＷＢ２の２つのステージに分割される。
【００４６】
そして、上記の８つのステージがＦＥ１からＷＢ２まで順に実行される。これが、各ＣＰＵの演算回路における１つの命令の実行サイクルとなる。なお、以下の説明では、分岐命令に関してステージＦＥ２の処理が実行された時点で、分岐予測が行われ、予測分岐先命令がパイプライン処理に投入されるものとする。また、予測分岐先命令の予測実行の正否は、分岐命令の前に実行される前段命令のステージＥＸ２の実行結果に基づいて判定され、実行結果のデータが書き出されるステージＷＢ２の実行タイミングで判定結果が確定されるものとする。
【００４７】
図４において、実行サイクル５１０，５１０ａは、それぞれメインＣＰＵ１２０ａ、サブＣＰＵ１３０ａの演算回路１２１，１３１ａによって分岐命令の直前に実行される前段命令の実行サイクルである。実行サイクル５１０，５１０ａでは、同一のタイミングで同一の命令が実行される。
【００４８】
実行サイクル５２０，５２０ａは、それぞれメインＣＰＵ１２０ａ、サブＣＰＵ１３０ａの演算回路１２１，１３１ａによって実行される分岐命令の実行サイクルである。実行サイクル５２０，５２０ａは、同一のタイミングで同一の命令を実行される。
【００４９】
ここで、各ＣＰＵの分岐予測回路１２２，１３５は、実行サイクル５２０，５２０ａのステージＦＥ１，ＦＥ２で読み込まれた命令に基づいて分岐予測を行う。そして、予測の結果得られた予測分岐先命令が、タイミングＴ１１においてパイプライン処理に投入される。すなわち、それぞれ同一の命令を実行する実行サイクル５３０，５３０ａが、演算回路１２１，１３１ａによって同時に実行される。
【００５０】
更に、各ＣＰＵの分岐決定回路１２３ａ，１３６は、実行サイクル５１０，５１０ａのステージＷＢ２での出力結果に基づき、分岐先命令を確定する。実行サイクル５３０，５３０ａは、実行サイクル５１０，５１０ａのステージＷＢ２で分岐命令が確定したとき、パイプライン制御回路１２４ａ，１３２ａにより分岐予測が誤っていると判定された場合、実行が中止される。そして、タイミングＴ１２において、パイプライン制御回路１２４ａ、１３２ａから正しい分岐先命令の実行サイクル５４０，５４０ａが、パイプライン処理に投入される。
【００５１】
このように、従来の方法では、メインＣＰＵおよびサブＣＰＵで同一の命令を同一のタイミングで行う。そして、各ＣＰＵが分岐予測を行い、分岐予測を誤った場合には、各ＣＰＵで正しい分岐先命令がパイプライン処理に投入され、実行される。この場合、サブＣＰＵにおける命令実行動作は分岐予測のミスによりキャンセルされる分も含めて丸々二重に実行されることになる。
【００５２】
これに対し、本実施の形態のコンピュータ１００は、メインＣＰＵ１２０からの分岐確定の通知によって、分岐先命令を実行することとしている。次に、本実施の形態の分岐予測を誤った場合の処理に関して説明する。
【００５３】
図５は、実施の形態のパイプライン処理において分岐予測を誤った場合の処理を示すタイミングチャートである。図５においてパイプライン処理に設けられた各ステージは、図４に説明した各ステージと同一である。
【００５４】
実行サイクル２１０，２２０，２３０，２４０は、メインＣＰＵ１２０の演算回路１２１により実行される。これらの実行サイクル２１０，２２０，２３０，２４０は、図４における実行サイクル５１０，５２０，５３０，５４０のそれぞれと同一の命令に対する実行サイクルであるため、説明を省略する。
【００５５】
一方、サブＣＰＵ１３０の演算回路１３１では、基本的に、メインＣＰＵ１２０の演算回路１２１で実行されるものと同一の命令が、所定時間だけ遅れて実行される。実行サイクル２１０ａ，２２０ａ，２４０ａは、サブＣＰＵ１３０の演算回路１３１により実行される。
【００５６】
実行サイクル２１０ａは、分岐命令の直前に実行される前段命令の実行サイクルである。実行サイクル２１０ａは、実行サイクル２１０と同一の命令を実行するが、実行サイクル２１０よりも所定時間だけ遅れて命令実行を開始する。
【００５７】
実行サイクル２２０ａは、分岐命令の実行サイクルである。実行サイクル２２０ａは、実行サイクル２２０と同一の命令を実行するが、実行サイクル２２０よりも所定時間だけ遅れて命令実行を開始する。
【００５８】
なお、図５では、サブＣＰＵ１３０での命令実行の遅延時間を、例として、メインＣＰＵ１２０の分岐予測回路１２２による分岐予測タイミング（例えばタイミングＴ２１）から、分岐決定回路１２３により分岐先命令が確定されるタイミング（例えばタイミングＴ２２）までの５ステージ分とした場合を示している。なお、初期動作時には、演算回路１３１により命令実行が開始されるまでの間、クロック調整回路１５０によりサブＣＰＵ１３０へのクロック供給が停止されてもよい。
【００５９】
ここで、図４の場合と同様に、メインＣＰＵ１２０の分岐決定回路１２３は、実行サイクル２１０のステージＷＢ２での出力結果に基づき、分岐先命令を確定する。このとき、確定された分岐先命令の情報は、パイプライン制御回路１２４へ出力されるとともに、サブＣＰＵ１３０のパイプライン制御回路１３２にも出力される。パイプライン制御回路１３２は、分岐決定回路１２３からの分岐の有無を演算回路１３１に通知する。これにより、タイミングＴ２２において、正しい分岐先命令の実行サイクル２４０ａが開始される。
【００６０】
このようにすると、サブＣＰＵ１３０では、メインＣＰＵ１２０で実行される予測分岐先命令の実行サイクル２３０（図４の５３０ａに対応）を実行する必要がなくなる。すなわち、サブＣＰＵ１３０では、メインＣＰＵ１２０において分岐先が確定した段階で分岐先命令を実行するため無駄な動作を発生させることがない。
【００６１】
これにより、無駄な動作に要する電力が抑制されるため、従来に比べてサブＣＰＵ１３０における消費電力を削減することができる。
また、上記に示した例では、メインＣＰＵ１２０のパイプライン処理の分岐予測のタイミングから、分岐先確定のタイミングに要する時間までの５ステージ分の時間を、サブＣＰＵ１３０のメインＣＰＵ１２０に対する実行サイクルの遅延量とした。このように、分岐予測から分岐先確定までに要する時間分の遅延量をサブＣＰＵ１３０に与えると、サブＣＰＵ１３０では、分岐予測の実行が不要となる。このため、サブＣＰＵ１３０において分岐予測用の回路を省くことができ、サブＣＰＵ１３０を小型化することが可能となる。
【００６２】
なお、分岐予測から分岐先確定までに要する時間より大きい時間の遅延量をサブＣＰＵ１３０に与えた場合でも、同様に、サブＣＰＵ１３０に対して分岐予測用の回路を省くことができる。
【００６３】
なお、図５では、例として、メインＣＰＵ１２０において分岐予測が誤っていた場合の動作を示したが、分岐予測が正しかった場合でも、サブＣＰＵ１３０では図５と同様の動作が実行される。また、この場合には、メインＣＰＵ１２０では、予測分岐先命令の実行サイクル２３０は途中で停止されず、また、分岐先命令の実行サイクル２４０は実行されない。
【００６４】
ところで、図５の例のように、サブＣＰＵ１３０において、分岐予測が誤っていた場合には、メインＣＰＵ１２０およびサブＣＰＵ１３０で、分岐先命令の実行サイクル２４０，２４０ａ以降の命令の実行タイミングが同一となる。このため、クロック調整回路１５０は、クロック供給回路１４０からサブＣＰＵ１３０に供給される動作クロックを、以降の実行サイクルが再度５ステージ分だけ遅延して実行されるよう調整する。
【００６５】
図６は、動作クロックの調整方法の具体例を示すタイミングチャートである。図６においてパイプライン処理に設けられた各ステージは、図４に説明した各ステージと同一である。
【００６６】
実行サイクル２４０，２５０，２６０は、メインＣＰＵ１２０の演算回路１２１により実行される。
実行サイクル２４０は、分岐予測を誤った後に実行される正しい分岐先命令の実行サイクルである。実行サイクル２４０は、図５において同一の符号を付して説明した実行サイクルに対応する。
【００６７】
実行サイクル２５０は、分岐先命令の次段に実行される次段命令の実行サイクルである。
実行サイクル２６０は、次段命令の次段に実行される次々段命令の実行サイクルである。
【００６８】
実行サイクル２４０ｂ，２５０ａ，２６０ａは、サブＣＰＵ１３０の演算回路１３１によって実行される。
実行サイクル２４０ｂは、実行サイクル２４０と同一の分岐先命令の実行サイクルである。実行サイクル２４０ｂは、図５における実行サイクル２４０ａのステージＦＥ２とＤＥ１との間に、クロック調整回路１５０によって５ステージ分のクロック停止期間が与えられた場合を示している。
【００６９】
実行サイクル２５０ａは、実行サイクル２５０と同一の次段命令の実行サイクルである。実行サイクル２５０ａは、実行サイクル２４０ｂと同時に、クロック調整回路１５０によって、クロック停止期間が与えられるため、そのステージＦＥ１とＦＥ２との間に、５ステージ分のクロック停止期間が発生する。
【００７０】
実行サイクル２６０ａは、実行サイクル２６０と同一の次々段命令の実行サイクルである。実行サイクル２６０ａは、実行サイクル２６０よりも５ステージ分だけ遅れて命令実行を開始する。
【００７１】
クロック調整回路１５０は、メインＣＰＵ１２０で分岐予測を誤った場合、パイプライン制御回路１２４からその旨を示す通知を受けて、サブＣＰＵ１３０への動作クロックの供給を一旦停止する。図６の例では、分岐先命令が読み込まれたタイミングＴ３１において、動作クロックの供給が停止されている。そして、クロック調整回路１５０は、５ステージ分の時間が経過したタイミングＴ３２において、サブＣＰＵ１３０への動作クロックの供給を再開する。これにより、サブＣＰＵ１３０のパイプライン処理における実行サイクルが、再度、メインＣＰＵ１２０の実行サイクルよりも上記所定時間だけ遅延される。
【００７２】
これにより、この後に分岐命令が出現し、その分岐先の予測に失敗した場合にも、前述の電力削減の効果を実現することができる。
なお、図６の例では、サブＣＰＵ１３０の演算回路１３１において、分岐先命令の読み込みが済んだタイミングを起点に動作クロックの供給が停止されたが、クロック停止タイミングをそれより後にすることもできる。ただし、できるだけ早いタイミングでクロックを停止させて、演算回路１３１の命令実行を遅延させることが望ましい。また、例えば、パイプライン制御回路１３２などにおいて、分岐決定回路１２３から出力された分岐先命令のアドレスを保持しておくことができれば、クロック停止タイミングを、演算回路１３１による分岐先命令の読み込みの前とすることもできる。
【００７３】
なお、サブＣＰＵ１３０の命令実行をメインＣＰＵ１２０より遅延させるためのクロック調整回路１５０の動作としては、動作クロックの供給停止に限らない。クロック調整回路１５０は、例えば、メインＣＰＵ１２０の動作クロック周期よりもサブＣＰＵ１３０の動作クロック周期を、実行サイクルが所定時間だけ遅延するまで一時的に長くするようにしてもよい。
【００７４】
以上、説明したように、コンピュータ１００では、サブＣＰＵ１３０における分岐命令に対する分岐先命令の確定通知をメインＣＰＵ１２０から取得することで、サブＣＰＵ１３０が分岐命令に対する適正な分岐先命令を実行可能とする。
【００７５】
なお、上記の説明では、１つのメインＣＰＵ１２０に対して、異常検出を行うための１つのサブＣＰＵ１３０を設けた場合を示したが、このような構成に限らない。例えば、メインＣＰＵ１２０に対して、異常検出のための複数のサブＣＰＵ１３０を設け、演算処理の信頼性を向上することもできる。
【００７６】
また、サブＣＰＵ１３０とメインＣＰＵ１２０とを、それぞれに必要なすべての機能を備えた同一構成のＣＰＵとして実現し、各ＣＰＵが上記メインＣＰＵ１２０およびサブＣＰＵ１３０の役割を切り替え可能としてもよい。この場合、メインＣＰＵ１２０とサブＣＰＵ１３０とを区別する必要がなくなるため、製造のためのコストを削減することができる。
【００７７】
これにより、コンピュータ１００では、演算処理の異常検出において、無駄な動作に要する電力を抑制することができ、従来に比べて消費電力を削減することができる。
以上、本件の情報処理装置およびパイプライン処理方法を図示の実施の形態に基づいて説明したが、これらに限定されるものではなく、各部の構成は同様の機能を有する任意の構成のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。更に、本発明は前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【図面の簡単な説明】
【００７８】
【図１】実施の形態の情報処理装置の概要を示す図である。
【図２】本実施の形態のコンピュータの構成を示す図である。
【図３】従来の演算処理の異常検出を行うコンピュータの構成を示す図である。
【図４】従来のパイプライン処理において分岐予測を誤った場合の処理を示すタイミングチャートである。
【図５】実施の形態のパイプライン処理において分岐予測を誤った場合の処理を示すタイミングチャートである。
【図６】動作クロックの調整方法の具体例を示すタイミングチャートである。
【符号の説明】
【００７９】
１  情報処理装置
１０，２０  処理部
１１，２１  演算部
１２  分岐予測部
１３  分岐決定部
１４，２２  パイプライン制御部
【図１】
2010152640.tif 000003
【図２】
2010152640.tif 000004
【図３】
2010152640.tif 000005
【図４】
2010152640.tif 000006
【図５】
2010152640.tif 000007
【図６】
2010152640.tif 000008