JP2019016107A - マイクロコンピュータ - Google Patents
マイクロコンピュータ Download PDFInfo
- Publication number
- JP2019016107A JP2019016107A JP2017132179A JP2017132179A JP2019016107A JP 2019016107 A JP2019016107 A JP 2019016107A JP 2017132179 A JP2017132179 A JP 2017132179A JP 2017132179 A JP2017132179 A JP 2017132179A JP 2019016107 A JP2019016107 A JP 2019016107A
- Authority
- JP
- Japan
- Prior art keywords
- data
- mode
- control unit
- unit
- step mode
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Hardware Redundancy (AREA)
Abstract
【課題】少なくとも2つのプロセッサの動作を停止することなく、フリーステップモードからロックステップモードへと動作モードを切り替えることを可能とすること。【解決手段】フリーステップモードからロックステップモードに切り替えられると、各プロセッサ1、2のメモリ部11、21の各データ領域に対応付けられたフラグが、データが利用不可であることを示すアンロック状態に設定される。このフラグは、新たなデータがメモリ部11、21に書き込まれたときに、データが利用可能であることを示すロック状態に更新される。命令を実行するために、読み出し対象となったデータが記憶されているデータ領域に対応付けられたフラグが利用不可を示す状態であると、モード切替制御部4が、各プロセッサ1、2の演算処理部12、22へのデータ提供元をバックアップメモリ部31に切り替える。【選択図】図1
Description
本発明は、動作モードとして、少なくとも2つのプロセッサが、別個の命令ストリームを実行するフリーステップモードと、同じ命令ストリームを実行するロックステップモードとを有するマイクロコンピュータに関する。
例えば特許文献1に、少なくとも2つのプロセッサに同一の命令ストリームを実行させるロックステップモードと、異なる命令ストリームを実行させるフリーステップモードとの間で、動作モードを切り替え可能に構成されたプロセッサシステムについて開示されている。
特許文献1のプロセッサシステムでは、フリーステップモードからロックステップモードへの切り替え時に、2つのプロセッサが有する記憶回路の記憶状態を一致させるために要する時間を短縮することを狙いとしている。そのため、特許文献1のプロセッサシステムは、一方のプロセッサの記憶回路と、他方のプロセッサの記憶回路との間に信号線群及び選択回路を配置する。そして、フリーステップモードからロックステップモードへの切り替え時には、信号線群及び選択回路を用いて、一方の記憶回路と他方の記憶回路間を選択的に結合し、一方の記憶回路の記憶状態を他方の記憶回路へ転送可能としている。
しかしながら、特許文献1のプロセッサシステムでは、一方の記憶回路の記憶状態を他方の記憶回路へ転送してコピーする前に、2つのプロセッサの動作を停止することが必要である。2つのプロセッサの動作を停止するために、特許文献1のプロセッサシステムでは、まず、動作モードを切り替える制御ユニットが、2つのプロセッサに停止要求を送信する。この停止要求に応じて、2つのプロセッサは、中途の処理を全て完了した上で処理を停止して、停止完了応答を制御ユニットに送信する。すると、制御ユニットは、2つのプロセッサへのクロック供給を停止する。
このように、特許文献1のプロセッサシステムでは、フリーステップモードからロックステップモードへ移行する際に、2つのプロセッサの動作を停止した上で、一方の記憶回路の記憶状態を他方の記憶回路へ転送してコピーするようにしている。このため、特許文献1のプロセッサシステムにおいても、未だ、フリーステップモードからロックステップモードへと動作モードを移行するために、相応の時間を要するものとなっている。
本発明は、上述した点に鑑みてなされたものであり、少なくとも2つのプロセッサの動作を停止することなく、フリーステップモードからロックステップモードへと動作モードを切り替えることを可能とし、それにより、従来よりもさらに動作モードの切り替えに要する時間を短縮することが可能なマイクロコンピュータを提供することを目的とする。
上記目的を達成するために、本発明によるマイクロコンピュータは、少なくとも2つのプロセッサを備え、動作モードとして、少なくとも2つのプロセッサが、別個の命令ストリームを実行するフリーステップモードと、同じ命令ストリームを実行するロックステップモードとを有するものであって、
少なくとも2つのプロセッサは、それぞれ、
命令に応じた演算処理を実行する演算処理部と、
データを記憶する複数のデータ領域と、複数のデータ領域にそれぞれ対応付けられ、各データ領域のデータが利用可能であるか否かを示すフラグを記憶するフラグ領域と、を含むメモリ部と、を有し、
マイクロコンピュータは、さらに、
ロックステップモードの開始後に、少なくとも2つのプロセッサのメモリ部の対応するデータ領域に記憶される新たなデータを記憶する、少なくとも2つのプロセッサにて共用されるバックアップメモリ部を含むバックアップ制御部と、
フリーステップモードとロックステップモードとの間で、動作モードの切り替えを制御するモード切替制御部と、
少なくとも2つのプロセッサに対してそれぞれ設けられ、演算処理部へのデータ提供元を、対応するメモリ部とバックアップメモリ部とのいずれかに切り替えるデータ切替部と、を備え、
すべてのフラグ領域のフラグは、フリーステップモードからロックステップモードへの切り替え時に、メモリ部のすべてのデータ領域のデータが利用不可であることを示す状態となるように設定され、
少なくとも2つのプロセッサにおいて、ロックステップモードの開始後に、新たなデータがメモリ部のデータ領域に記憶されると、そのデータ領域に対応付けられたフラグが利用可能であることを示す状態に更新され、
少なくとも2つのプロセッサが同じ命令を実行するために、読み出し対象となったデータが記憶されているデータ領域に対応付けられたフラグが、データの利用が可能であることを示す状態であるか否かが判定され、利用可能であることを示す状態と判定された場合、データ切替部により演算処理部へのデータ提供元がメモリ部に切り替えられ、利用不可を示す状態であると判定された場合、演算処理部へのデータ提供元がバックアップメモリ部に切り替えられる。
少なくとも2つのプロセッサは、それぞれ、
命令に応じた演算処理を実行する演算処理部と、
データを記憶する複数のデータ領域と、複数のデータ領域にそれぞれ対応付けられ、各データ領域のデータが利用可能であるか否かを示すフラグを記憶するフラグ領域と、を含むメモリ部と、を有し、
マイクロコンピュータは、さらに、
ロックステップモードの開始後に、少なくとも2つのプロセッサのメモリ部の対応するデータ領域に記憶される新たなデータを記憶する、少なくとも2つのプロセッサにて共用されるバックアップメモリ部を含むバックアップ制御部と、
フリーステップモードとロックステップモードとの間で、動作モードの切り替えを制御するモード切替制御部と、
少なくとも2つのプロセッサに対してそれぞれ設けられ、演算処理部へのデータ提供元を、対応するメモリ部とバックアップメモリ部とのいずれかに切り替えるデータ切替部と、を備え、
すべてのフラグ領域のフラグは、フリーステップモードからロックステップモードへの切り替え時に、メモリ部のすべてのデータ領域のデータが利用不可であることを示す状態となるように設定され、
少なくとも2つのプロセッサにおいて、ロックステップモードの開始後に、新たなデータがメモリ部のデータ領域に記憶されると、そのデータ領域に対応付けられたフラグが利用可能であることを示す状態に更新され、
少なくとも2つのプロセッサが同じ命令を実行するために、読み出し対象となったデータが記憶されているデータ領域に対応付けられたフラグが、データの利用が可能であることを示す状態であるか否かが判定され、利用可能であることを示す状態と判定された場合、データ切替部により演算処理部へのデータ提供元がメモリ部に切り替えられ、利用不可を示す状態であると判定された場合、演算処理部へのデータ提供元がバックアップメモリ部に切り替えられる。
上述した構成を備える本発明によるマイクロコンピュータにおいては、フリーステップモードからロックステップモードに切り替えられると、最初に、メモリ部のすべてのデータ領域のデータが利用不可であることを示す状態となるように、すべてのフラグ領域のフラグが設定される。
そして、ロックステップモードにおける命令を実行するために、読み出し対象となったデータが記憶されているデータ領域に対応付けられたフラグが、利用不可を示す状態であると、データ切替部は、少なくとも2つのプロセッサの演算処理部へのデータ提供元を、共通のバックアップメモリ部に切り替える。このバックアップメモリ部には、過去のロックステップモードにおいて、少なくとも2つのプロセッサのメモリ部の対応するデータ領域に記憶されたデータが記憶されている。従って、少なくとも2つのプロセッサは、バックアップメモリ部に記憶された共通のデータを用いて、ロックステップモードにおける同じ命令を実行することができる。
ロックステップモードの開始後に、新たなデータがメモリ部の対応するデータ領域に記憶されると、そのデータ領域に対応付けられたフラグは、利用可能であることを示す状態に更新される。このようにして更新されたフラグに対応付けられているデータ領域のデータが読み出し対象となったときには、データ切替部は、それぞれのプロセッサのメモリ部を演算処理部へのデータ提供元に切り替える。従って、少なくとも2つのプロセッサは、ロックステップモードにおける同じ命令に応じた演算処理を、新たに記憶されたデータに基づきより適切に行うことができる。
このように、本発明によるマイクロコンピュータでは、少なくとも2つのプロセッサが、ロックステップモードへの切り替え直後から、バックアップメモリ部に記憶された共通のデータを用いて、ロックステップモードにおける同じ命令を実行することが可能である。従って、従来技術のように、2つのプロセッサの動作を停止する必要がないので、フリーステップモードからロックステップモードへの切り替えに要する時間を、従来技術よりもさらに短縮することができる。
上記括弧内の参照番号は、本発明の理解を容易にすべく、後述する実施形態における具体的な構成との対応関係の一例を示すものにすぎず、なんら本発明の範囲を制限することを意図したものではない。
また、上述した特徴以外の、特許請求の範囲の各請求項に記載した技術的特徴に関しては、後述する実施形態の説明及び添付図面から明らかになる。
以下、図面を参照しながら、本発明を実施するための複数の実施形態を説明する。各実施形態において、先行する実施形態で説明した事項に対応する部分には同一の参照符号を付して、重複する説明を省略する場合がある。
(第1実施形態)
図1は、第1実施形態に係るマイクロコンピュータ100の構成の概要を示すブロック図である。図1に示すように、マイクロコンピュータ100は、第1プロセッサ1、第2プロセッサ2、バックアップ制御部3、モード切替制御部4、ロックステップ比較器5、外部回路61、62、及び選択器63を有する。マイクロコンピュータ100は、動作モードとして、第1プロセッサ1及び第2プロセッサ2が、別個の命令ストリーム(プログラム)を実行するフリーステップモードと、同じ命令ストリーム(プログラム)を実行するロックステップモードとを有する。マイクロコンピュータ100は、外部からの要求などに応じて、フリーステップモードとロックステップモード間で、動作モードの切り替えを行う。以下、図1に示されている各要素について順に説明する。
図1は、第1実施形態に係るマイクロコンピュータ100の構成の概要を示すブロック図である。図1に示すように、マイクロコンピュータ100は、第1プロセッサ1、第2プロセッサ2、バックアップ制御部3、モード切替制御部4、ロックステップ比較器5、外部回路61、62、及び選択器63を有する。マイクロコンピュータ100は、動作モードとして、第1プロセッサ1及び第2プロセッサ2が、別個の命令ストリーム(プログラム)を実行するフリーステップモードと、同じ命令ストリーム(プログラム)を実行するロックステップモードとを有する。マイクロコンピュータ100は、外部からの要求などに応じて、フリーステップモードとロックステップモード間で、動作モードの切り替えを行う。以下、図1に示されている各要素について順に説明する。
第1プロセッサ1及び第2プロセッサ2は、ともに、例えば外部回路61、62を通じて、プログラムつまり命令ストリームを取得し、取得した命令ストリームに含まれる各命令を解読し、解読した命令に応じた算術演算、論理演算、比較、シフト等の処理を行う。例えば高い安全性が求められるプログラム(タスク)は、ロックステップモードにより、第1プロセッサ1及び第2プロセッサ2によって冗長的に実行される。一方、それほど高い安全性が求められない通常のプログラム(タスク)は、フリーステップモードにより、その通常のプログラムが、第1プロセッサ1と第2プロセッサ2とに適宜に振り分けて実行されたり、異なる別個のプログラムが、第1プロセッサ1と第2プロセッサ2とでそれぞれ実行されたりする。
第1プロセッサ1は、データや命令を保存するメモリ部11、算術論理演算を行う演算処理部12、命令の解読や命令に応じた演算処理の実行を指示する制御部13、及び選択器14、15を有する。第1プロセッサ1は、これらメモリ部11、演算処理部12、及び制御部13の協働により、命令の取得、命令の解読、命令に応じた演算処理などを行う。
メモリ部11は、第1プロセッサ1にて演算処理を行うためのデータや命令などを保存するためのものである。より具体的には、メモリ部11は、データを保存するための汎用レジスタや、命令を保存するための命令レジスタを有している。命令は、例えば、外部回路61を通じて図示しない主記憶装置から取得される。また、データは、その主記憶装置から取得されたり、演算処理部12における演算結果が、データとして、メモリ部11に保存されたりする。
図2に示すように、メモリ部11は、データを記憶する複数のデータ領域と、その複数のデータ領域にそれぞれ対応付けられ、各データ領域のデータが利用可能であるか否かを示すフラグを記憶するフラグ領域とを含む。このフラグは、制御部13によって、対応するデータ領域のデータが利用不可であることを示すアンロック状態に設定され得るものである。また、アンロック状態に設定されたフラグは、対応するデータ領域に新たなデータが書き込まれるときに、制御部13によってロック状態に更新される。すなわち、アンロック状態が示す「データが利用不可」とは、演算処理部12が、そのデータをメモリ部11から読み出して利用することができないことを意味し、「データが利用不可」の状態であっても、そのデータ領域に新たなデータを書き込むことは可能である。そして、新たなデータが書き込まれて、フラグがロック状態に更新されると、演算処理部12は、その新たなデータにアクセスして読み出すことができるようになる。
演算処理部12は、論理ゲート、エンコーダ、デコーダ、シフタ、比較器、加算器、乗算器などを含むものである。演算処理部12は、実行される命令に応じて、どの回路を動作させるかを選択することで、様々な演算処理を実行する。
制御部13は、命令の解読や命令に応じた演算処理の実行を指示するために、第1プロセッサ1内の相互接続ネットワークのリンクを通じて、データや命令の送信を管理する。例えば、制御部13は、必要な命令やデータを外部回路61を通じて主記憶装置からメモリ部11に送信させたりする。また、制御部13は、時期が到来すると、それらの命令やデータをメモリ部11から演算処理部12に送信させたりする。演算処理が終了すると、必要に応じて、制御部13は、その演算処理によるデータをメモリ部11に送信させる。メモリ部11は、そのデータをリリースされる準備が整うまで保持する。なお、図1では、制御部13と、各部を結ぶコントロールバスは省略されている。
また、制御部13は、モード切替制御部4からフラグのクリア要求を示す制御信号(例えば、図1のSEL信号)を受けると、上述したように、メモリ部11のすべてのデータ領域に対応付けられたすべてのフラグ領域のフラグを、データが利用不可であることを示す状態となるようにアンロック状態に設定する。なお、図1では、第1プロセッサ1とモード切替制御部4との間のコントロールバスも省略されている。
さらに、制御部13は、ロックステップモードにおいて、メモリ部11のデータ領域のフラグの状態に応じたフラグ状態信号STATE_FLAG1をモード切替制御部4に送信する。例えば、ある命令を実行するために、読出対象となったデータが保存されているデータ領域のフラグが、データ利用不可を示すアンロック状態であるとき、制御部13は、「0」にセットされたフラグ状態信号STATE_FLAG1をモード切替制御部4に送信する。逆に、読出対象となったデータが保存されているデータ領域のフラグが、データ利用可能を示すロック状態であるときには、制御部13は、「1」にセットされたフラグ状態信号STATE_FLAG1をモード切替制御部4に送信する。
なお、制御部13は、モード切替制御部4からのフラグのクリア要求に応じて、すべてのフラグをアンロック状態に設定すると、「00」にセットされたフラグ状態信号STATE_FLAG1をモード切替制御部4に送信する。これにより、モード切替制御部4は、すべてのフラグがクリアされたことを確認することができる。また、制御部13は、すべてのフラグがロック状態に更新されたときには、「11」にセットされたフラグ状態信号STATE_FLAG1をモード切替制御部4に送信する。これにより、モード切替制御部4は、すべてのフラグがロック状態に更新されたことを把握することができる。
なお、本実施形態では、フリーステップモードからロックステップモードに動作モードが切り替えられて、ロックステップモードが開始された後、メモリ部11の一部のデータ領域のデータが利用不可である状態を中間ロックステップモードと定義し、メモリ部11のすべてのデータ領域のデータが利用可能となった状態を完全ロックステップモードと定義する。つまり、本実施形態では、ロックステップモードは、中間ロックステップモードと完全ロックステップモードとを含む。本実施形態では、このように、フリーステップモードと完全ロックステップモードとの間に中間ロックステップモードを介在させているので、第1及び第2プロセッサ1、2を停止させることなく、フリーステップモードからロックステップモードへ動作モードを移行させることができるようになっている。
選択器14は、モード切替制御部4からの制御信号MEM_SEL1に従い、演算処理部12へのデータ提供元をメモリ部11とバックアップメモリ部31とのいずれかに切り替える。
選択器15は、プロセッサ1内部の相互接続ネットワークを通じて送信される制御部13からの制御信号に従い、外部回路61を通じて伝送されたデータや命令と演算処理部12によって演算処理されたデータとのいずれかを選択して出力するものである。そして、ロックステップモードにおいては、選択器15からデータが出力されると、そのデータはメモリ部11に供給され、メモリ部11の指定されたデータ領域に記憶される。さらに、メモリ部11のデータ領域に記憶されたデータは、バックアップ制御部3にも供給される。バックアップ制御部3に供給されたデータは、バックアップ比較器32において、第2プロセッサ2から供給されるデータと比較され、バックアップ比較器32は、両データが一致しているか否かを判定する。
第2プロセッサ2は、上述した第1プロセッサ1と同様の構成を備えている。すなわち、第2プロセッサ2は、メモリ部21、演算処理部22、制御部23、及び選択器24、25を有する。そして、第2プロセッサも、メモリ部21、演算処理部22、及び制御部23の協働により、命令の取得、命令の解読、命令に応じた演算処理などを行うことで、命令ストリーム(プログラム)を実行する。メモリ部21は、データ領域及びフラグ領域に関して、メモリ部11と同等の構造及び容量を有している。また、第2プロセッサ2の選択器24、25は、第1プロセッサ1の選択器14、15と同様の機能を有する。
バックアップ制御部3は、バックアップメモリ部31と、バックアップ比較器32とを有している。バックアップ制御部3は、上述したように、ロックステップモードにおいて、第1プロセッサ1のメモリ部11及び第2プロセッサ2のメモリ部21に記憶されたデータの供給を受ける。バックアップ比較器32は、第1プロセッサ1からのデータと第2プロセッサ2からのデータとを比較し、一致するか否かを判定する。バックアップ比較器32は、両データが一致したと判定すると、その一致判定したデータをバックアップメモリ部31に出力する。一方、両データが一致しないと判定すると、バックアップ比較器32はエラー信号を出力する。
バックアップメモリ部31は、第1プロセッサ1のメモリ部11及び第2プロセッサ2のメモリ部21におけるデータ領域に相当する容量の記憶領域を備えている。バックアップ比較器32によって一致判定されたデータは、メモリ部11及びメモリ部21において記憶されたデータ領域に対応する記憶領域に記憶される。そして、バックアップメモリ部31は、モード切替制御部4によって、第1プロセッサ1の選択器14及び第2プロセッサ2の選択器24が、それぞれの演算処理部12、22へのデータ提供元をバックアップメモリ部31に切り替えたとき、該当する記憶領域に記憶された同一のデータを演算処理部12、22に同時に提供する。
ロックステップ比較器5は、ロックステップモードにおいて、第1プロセッサ1から外部回路61へ出力される出力データと、第2プロセッサ2から外部回路62へ出力される出力データとを比較して、両データが一致するか否かを判定する。ロックステップ比較器5は、両データが一致しないと判定すると、エラー信号を出力する。
なお、ロックステップモードにおいて、いずれか一方のプロセッサ1(又はプロセッサ2)からの出力データが外部回路61(又は外部回路62)に出力されれば良い場合には、例えば、他方のプロセッサ2(又はプロセッサ1)と外部回路62(又は外部回路61)及びロックステップ比較器5との間に選択器を設けても良い。この場合、選択器は、フリーステップモードでは、他方のプロセッサ2(又はプロセッサ1)の出力データが、外部回路62(又は外部回路61)に出力されるように出力先を切り替える。一方、ロックステップモードでは、選択器は、他方のプロセッサ2(又はプロセッサ1)の出力データが、ロックステップ比較器5に出力されるように出力先を切り替える。
また、上述したバックアップメモリ部31が、データを記憶する条件として、バックアップ比較器32による一致判定だけでなく、ロックステップ比較器5における一致判定を併せて採用しても良い。
外部回路61及び外部回路62は、第1プロセッサ1及び第2プロセッサ2を、それぞれ、外部の主記憶装置、D/Aコンバータ、通信コントローラ等の周辺機器に接続するためのインタフェースである。
選択器63は、モード切替制御部4からの制御信号SELに応じて、外部回路61からの入力信号と、外部回路62からの入力信号とのいずれかを選択して、第2プロセッサ2に供給する。選択器63は、フリーステップモードのとき、外部回路62からの入力信号をプロセッサ2に供給する。一方、選択器63は、ロックステップモードのとき、第1プロセッサ1と共通の外部回路61からの入力信号を第2プロセッサ2に供給する。
モード切替制御部4は、マイクロコンピュータ100の動作モードの切り替えを制御するものである。モード切替制御部4は、様々な要因で動作モードの切り替えを開始することができる。例えば、モード切替制御部4は、外部からの要求(ユーザ操作、外部装置からの要求)、定期的なタイマ割込み、第1プロセッサ1又は第2プロセッサ2で実行されるオペレーティングシステムやアプリケーションプログラムからの要求に応じて、動作モードの切り替えを開始することができる。
例えば、モード切替制御部4は、動作モードの切り替え処理として、マイクロコンピュータ100の動作モードがフリーステップモードから中間ロックステップモードに切り替えられたときには、第1プロセッサ1からのフラグ状態信号STATE_FLAG1と第2プロセッサ2からのフラグ状態信号STATE_FLAG2に応じた制御信号MEM_SEL1、MEM_SEL2を選択器14、24に出力する処理を行う。具体的には、モード切替制御部4は、フラグ状態信号STATE_FLAG1、STATE_FLAG2が、該当するデータ領域が利用不可であることを示す「0」である場合には、演算処理部12、22へのデータ提供元をバックアップメモリ部31とするための制御信号MEM_SEL1、MEM_SEL2を選択器14、24に出力する。一方、モード切替制御部4は、フラグ状態信号STATE_FLAG1、STATE_FLAG2が、該当するデータ領域が利用可能であることを示す「1」である場合には、演算処理部12、22へのデータ提供元をメモリ部11、21とするための制御信号MEM_SEL1、MEM_SEL2を選択器14、24に出力する。
そして、モード切替制御部4は、フラグ状態信号STATE_FLAG1、STATE_FLAG2が、すべてのデータ領域に対応するフラグが、データの利用可能を示すロック状態に更新されたことを示す「11」となると、中間ロックステップモードから完全ロックステップモードへの移行が可能であるとみなす。この場合、モード切替制御部4は、フラグ状態信号STATE_FLAG1、STATE_FLAG2に基づく、選択器14、24による切り替え処理を終了し、演算処理部12、22へのデータ提供元をメモリ部11、21に固定する。これにより、マイクロコンピュータ100の動作モードは、中間ロックステップモードから完全ロックステップモードに移行する。
さらに、モード切替制御部4は、動作モードがロックステップモードである間、選択器63に対して、外部回路61からの入力信号を出力するように切り替え指示する制御信号SELを出力する。上述したように、この制御信号SELは制御部13、23にも与えられ、制御部13、23は、制御信号SELの出力開始を、フラグクリア要求とみなして、メモリ部11、21のすべてのデータ領域に対応付けられたフラグをアンロック状態に設定する。なお、モード切替制御部4は、制御信号SELによってではなく、フラグ状態信号STATE_FLAG1、STATE_FLAG2を受信するポートから、第1プロセッサ1及び第2プロセッサ2に対して、すべてのフラグをアンロック状態に設定することを指示するフラグクリア要求信号を送信するようにしても良い。
また、モード切替制御部4は、ロックステップモードへの切り替え中、バックアップ制御部3及びロックステップ比較器5に対して、それぞれ動作することを指示する制御信号BKUP_VALID、CMP_VALIDを出力する。これにより、バックアップ制御部3及びロックステップ比較器5は、動作モードがロックステップモードである間、各メモリ部11、21に記憶されたデータの一致判定や、各プロセッサ1、2の出力データの一致判定を実行することが可能となる。なお、モード切替制御部4は、動作モードがロックステップモードである間、常に、バックアップ制御部3に制御信号BKUP_VALIDを出力しても良いが、中間ロックステップモードの間だけ、バックアップ制御部3に制御信号BKUP_VALIDを出力するようにしても良い。
次に、上述した構成を備えるマイクロコンピュータ100において、動作モードの切り替え時に行われる処理について、図4〜6のフローチャートを参照して説明する。なお、図4のフローチャートは、動作モードがフリーステップモードから中間ロックステップモードに切り替えられたときに実行される処理を示している。換言すれば、図4のフローチャートは、マイクロコンピュータ100の動作モードが中間ロックステップモードとなったときに、マイクロコンピュータ100において実行される処理を示している。図5のフローチャートは、動作モードが中間ロックステップモードからフリーステップモードに切り替えられるときに実行される処理を示している。そして、図6のフローチャートは、動作モードが完全ロックステップモードからフリーステップモードに切り替えられるときに実行される処理を示している。
つまり、本実施形態では、図3に示すように、マイクロコンピュータ100の動作モードは、フリーステップモードから中間ロックステップモードを介して完全ロックステップモードに移行可能である一方で、中間ロックステップモードからフリーステップモードに移行することも可能であるし、完全ロックステップモードからフリーステップモードに移行することも可能である。
図4のフローチャートのステップS11では、モード切替制御部4から制御部13、23にフラグクリア要求信号が出力され、そのクリア要求信号に基づき、制御部13、23が、メモリ部11、21のすべてのデータ領域のフラグをアンロック状態に設定する。これにより、演算処理部12、22は、メモリ部11、21に記憶されたデータを利用することができなくなる。
なお、すべてのデータ領域に対応付けられたフラグがアンロック状態に設定されると、第1及び第2プロセッサ1、2は、「00」のフラグ状態信号STATE_FLAG1、STATE_FLAG2をモード切替制御部4に出力する。この際、モード切替制御部4が、フラグ状態信号STATE_FLAG1、STATE_FLAG2を受信するポートからフラグクリア信号を出力している場合には、「00」のフラグ状態信号STATE_FLAG1、STATE_FLAG2の受信に応じて、モード切替制御部4は、フラグクリア信号の出力を終了する。
上述したように、メモリ部11、21のすべてのデータ領域のフラグをアンロック状態に設定する理由は、フリーステップモードでは、メモリ部11、21のデータ領域に保存されているデータが一致するかどうかは不確定であるとともに、ロックステップモードでは、第1及び第2プロセッサ1、2の内部状態が一致する必要があるためである。
続くステップS12では、モード切替制御部4は、バックアップ制御部3及びロックステップ比較器5に対して、それぞれ動作することを指示する制御信号BKUP_VALID、CMP_VALIDを出力する。そして、ステップS13において、第2プロセッサ2への入力信号が、外部回路62からではなく、第1プロセッサ1と共通の外部回路61から与えられるように、選択器63を切り替える。
ステップS14では、モード切替制御部4が、命令によって読み出されるべきデータが記憶されたメモリ部11、21のデータ領域のフラグがロック状態であるかどうかを、フラグ状態信号STATE_FLAG1、STATE_FLAG2に基づいて判定する。具体的には、読出対象となっているデータ領域のフラグがアンロック状態である場合、制御部13、23は、「0」のフラグ状態信号STATE_FLAG1、STATE_FLAG2をモード切替制御部4に出力する。一方、読出対象となっているデータ領域のフラグがロック状態である場合、制御部13、23は、「1」のフラグ状態信号STATE_FLAG1、STATE_FLAG2をモード切替制御部4に出力する。従って、モード切替制御部4は、フラグ状態信号STATE_FLAG1、STATE_FLAG2に基づいて、読出対象となっているデータ領域のフラグがロック状態であるか否かを判定することができる。この際、モード切替制御部4が、フラグはロック状態ではない、すなわち、アンロック状態であると判定すると、ステップS15の処理に進む。逆に、モード切替制御部4は、フラグはロック状態であると判定すると、ステップS16の処理に進む。
ステップS15では、モード切替制御部4は、選択器14、24に対して、演算処理部12、22へのデータ提供元をバックアップメモリ部31に切り替えるための制御信号MEM_SEL1、MEM_SEL2を出力する。一方、ステップS16では、モード切替制御部4は、選択器14、24に対して、演算処理部12、22へのデータ提供元をメモリ部11、21に切り替えるための制御信号MEM_SEL1、MEM_SEL2を出力する。
そして、演算処理部12、22において命令に応じた演算処理が行われて処理結果が出力されると、ステップS17において、制御部13、23は、その出力結果が各メモリ部11、21のデータ領域に記憶されたか否かを判定する。この判定処理において、出力結果が各メモリ部11、21に記憶されたと判定すると、ステップS18の処理に進む。ステップS18では、制御部13、23が、出力結果が記憶されたデータ領域に対応付けられたフラグをロック状態に更新する。
このように、本実施形態では、中間ロックステップモードにおいて、各メモリ部11、21のデータ領域に新たなデータが記憶されると、そのデータ領域に対応付けられたフラグが、利用可能であることを示す状態に更新される。従って、次回以降の制御処理において、更新されたフラグに対応付けられているデータ領域のデータが読み出し対象となったときには、フラグがロック状態に更新されているので、モード切替制御部4は、各メモリ部11、21が演算処理部12、22へのデータ提供元となるように、選択器14、24を切り替える。このため、第1及び第2プロセッサ1、2は、ロックステップモードにおける同じ命令に応じた演算処理を、中間ロックステップモードの開始後に新たにメモリ部11、21に記憶されたデータに基づきより適切に行うことができる。一方、制御部13、23は、出力結果が各メモリ部11、21に記憶されていないと判定すると、ステップS22の処理に進む。
各演算処理部12、22の演算出力が各メモリ部11、21に記憶される場合、それらの演算出力は、バックアップ制御部3にも入力される。ステップS19では、バックアップ制御部3のバックアップ比較器32が、第1プロセッサ1からの演算出力と、第2プロセッサ2からの演算出力とが一致するか否かを判定する。この判定処理において、両演算出力が一致すると判定した場合には、ステップS20の処理に進んで、その一致した演算出力を、メモリ部11及びメモリ部21において記憶されたデータ領域に対応するバックアップメモリ部31の記憶領域に記憶する。一方、両演算出力が一致しないと判定した場合には、ステップS21に進んで、バックアップ制御部3からエラー信号を出力する。このエラー信号が出力された場合、フリーステップモードからロックステップモードへの移行が無効となり、例えば、マイクロコンピュータ100のリセット、外部装置への通知、異常状態からの復帰のための割込み処理、マイクロコンピュータ100の停止などの少なくとも1つの安全処置が取られる。
なお、ステップS19では、さらに、ロックステップ比較器5による第1及び第2プロセッサ1、2の出力データが一致しているか否かも併せて判定し、演算出力と出力データとのいずれかでも不一致であればエラー信号を出力するようにしても良い。
この結果、バックアップメモリ部31には、中間ロックステップモードにおいて、実際にメモリ部11、21に記憶され、かつ一致判定されたデータが記憶される。本実施形態では、フリーステップモードから中間ロックステップモードに移行した後、メモリ部11、21に記憶されたデータが一致するかどうか不確定である場合には、このバックアップメモリ部31に記憶されたデータを用いて、演算処理部12、22における演算を実行する。従って、過去の中間ロックステップモードにおいて、一致するとの判定がなされた共通のデータを用いて、中間ロックステップモードにおける同じ命令を実行することができる。従って、本実施形態によれば、ロックステップモードへの切り替え時に、第1及び第2プロセッサ1、2を停止させる必要はないので、フリーステップモードからロックステップモードへの切り替えに要する時間を、従来技術よりもさらに短縮することができる。
なお、図4のフローチャートでは、各演算処理部12、22の演算出力が各メモリ部11、21に記憶されるときに、併せてバックアップ比較器32において、一致判定する例を説明した。しかし、中間ロックステップモードが開始された後に、外部回路61を通じて主記憶装置などの外部装置から取得したデータが各メモリ部11、21に記憶されるときにも、フラグの更新、一致判定、及び一致と判定した場合のバックアップメモリ部31への記憶などの処理を行っても良い。
続くステップS22では、各メモリ部11、21のすべてのデータ領域のフラグがロック状態に更新されたか否かを判定する。この判定処理において、すべてのデータ領域のフラグがロック状態に更新されたと判定すると、ステップS23において、完全ロックステップモードに移行するための処理を行う。具体的には、すべてのデータ領域のフラグがロック状態に更新された場合、「11」のフラグ状態信号STATE_FLAG1、STATE_FLAG2が、各プロセッサ1、2からモード切替制御部4に出力される。モード切替制御部4は、フラグ状態信号STATE_FLAG1、STATE_FLAG2に基づいて、すべてのデータ領域のフラグがロック状態に更新されたと判定すると、完全ロックステップモードに移行が可能とみなす。完全ロックステップモードへの移行が可能である場合、モード切替制御部4は、演算処理部12、22へのデータ提供元をメモリ部11、21に固定するための制御信号MEM_SEL1、MEM_SEL2を出力する。さらに、モード切替制御部4は、それ以後、フラグ状態信号STATE_FLAG1、STATE_FLAG2に基づき、選択器14、24へ出力する制御信号MEM_SEL1、MEM_SEL2を切り替える処理を終了する。
一方、ステップS22の判定処理において、すべてのデータ領域のフラグがロック状態に更新されていないと判定すると、ステップS24の処理に進む。ステップS24では、フリーステップモードへの移行要求が、モード切替制御部4に入力されたか否かを判定する。フリーステップモードへの移行要求が入力されたと判定した場合には、ステップS25に進み、中間ロックステップモードからフリーステップモードへの移行処理を実行する。一方、フリーステップモードへの移行要求が入力されていないと判定した場合には、ステップS14に戻り、上述した処理を繰り返す。
次に、図5のフローチャートを参照して、中間ロックステップモードからフリーステップモードへの移行処理について説明する。
まず、ステップS31では、モード切替制御部4は、バックアップ制御部3及びロックステップ比較器5に対して、動作することを指示する制御信号BKUP_VALID、CMP_VALIDの出力を停止する。これにより、バックアップ制御部3及びロックステップ比較器5の動作が停止する。なお、バックアップメモリ部31は不揮発性メモリであり、バックアップ制御部3は動作を停止しても、その記憶内容を保持することができる。
続くステップS32では、モード切替制御部4は、各選択器14、24に対して、演算処理部12、22へのデータ提供元をメモリ部11、21に固定するための制御信号MEM_SEL1、MEM_SEL2を出力する。このとき、モード切替制御部4は、まだアンロック状態となっているフラグを、すべてロック状態に変更することを制御部13に指示しても良い。
そして、ステップS33において、モード切替制御部4は、選択器63に対して、外部回路61ではなく、外部回路62からの入力信号を出力するように切り替え指示する制御信号SELを出力する。これにより、第2プロセッサ2には、外部回路62からの入力信号が入力され、第1プロセッサ1には、外部回路61からの入力信号が入力されるようになる。
以上の処理を行うことにより、マイクロコンピュータ100の動作モードが中間ロックステップモードからフリーステップモードに移行する。これにより、第1及び第2プロセッサ1、2は、フリーステップモードにおいて、それぞれ別個の命令ストリームを実行することができるようになる。
次に、図6のフローチャートを参照して、完全ロックステップモードからフリーステップモードへの移行処理について説明する。この移行処理は、完全ロックステップモードを実行中に、モード切替制御部4にフリーステップモードへの移行要求が入力された場合に開始される。
図6のフローチャートに示すように、最初のステップS41において、モード切替制御部4は、バックアップ制御部3及びロックステップ比較器5に対して、動作することを指示する制御信号BKUP_VALID、CMP_VALIDの出力を停止する。続くステップS42において、モード切替制御部4は、選択器63に対して、外部回路61ではなく、外部回路62からの入力信号を出力するように切り替え指示する制御信号SELを出力する。
つまり、完全ロックステップモードからフリーステップモードへの移行処理は、中間ロックステップモードからフリーステップモードへの移行処理におけるステップS32の処理を省略したものと同等である。これは、完全ロックステップモードでは、すでに、演算処理部12、22へのデータ提供元がメモリ部11、21に固定されており、また、データ領域の各フラグはすべてロック状態に更新されているためである。
(第2実施形態)
次に、第2実施形態に係るマイクロコンピュータについて説明する。図7は、第2実施形態に係るマイクロコンピュータ200の構成の概要を示すブロック図である。
次に、第2実施形態に係るマイクロコンピュータについて説明する。図7は、第2実施形態に係るマイクロコンピュータ200の構成の概要を示すブロック図である。
上述した第1実施形態では、第1及び第2プロセッサ1、2の外部にモード切替制御部4を設け、当該モード切替制御部4が、マイクロコンピュータ100の動作モードを切り替えるための大部分の処理を行うように構成されていた。
それに対して、本実施形態では、第1及び第2プロセッサ101、102の制御部13、23が、モード切替制御部104の機能の一部を担うようにし、制御部13、23とモード切替制御部104とが協働して動作モードの切り替え処理を実行するように構成したものである。なお、制御部13、23とモード切替制御部104とに、どのように機能を振り分けるかに関して、本実施形態は、単なる一例を示すものにすぎず、機能の振り分けは適宜に行い得る。
本実施形態のマイクロコンピュータ200においても、モード切替制御部104は、動作モードをフリーステップモードから(中間)ロックステップモードへ切り替えるときに、第1及び第2プロセッサ101、102に対して、信号線71、72を通じてフラグクリア要求信号REQ1、REQ2を送信する。このフラグクリア要求信号REQ1、REQ2に応じて、第1及び第2プロセッサ101、102のそれぞれの制御部13、23は、対応するメモリ部11、21のすべてのメモリ領域に対応付けられたフラグをアンロック状態に設定する。ここまでの処理は、上述した第1実施形態のマイクロコンピュータ100と同様である。
しかし、本実施形態では、中間ロックステップモードにおいて、第1及び第2プロセッサ101、102が、ある命令を実行するために、読出対象となったデータが保存されているデータ領域のフラグの状態に応じたフラグ状態信号STATE_FLAG1、STATE_FLAG2は、信号線16、26を介してメモリ部11、21から制御部13、23に送信される。そして、制御部13、23は、そのフラグ状態信号STATE_FLAG1、STATE_FLAG2に応じて、演算処理部12、22へのデータ提供元をメモリ部11、21とバックアップメモリ部31とのいずれかに切り替えるための制御信号MEM_SEL1、MEM_SEL2を、信号線17、27を介して選択器14、24に送信する。
このように、本実施形態では、各プロセッサ101、102の内部に設けられた構成部に対する制御信号は、各プロセッサ101、102の制御部13、23から出力されるように構成されている。このように、第1及び第2プロセッサ101、102の制御部13、23が、モード切替制御部104の機能の一部を担うように構成した場合であっても、第1実施形態と同様に、マイクロコンピュータ200の動作モードの切り替え処理を実行することができる。
本実施形態のマイクロコンピュータ200における、その他の構成及び作動は、上述した第1実施形態のマイクロコンピュータ100と同様であるため、説明を省略する。
以上、本発明の好ましい実施形態について説明したが、本発明は、なんら上述した実施形態に制限されることなく、本発明の主旨を逸脱しない範囲において、種々変形して実施することができる。
例えば、上述した各実施形態では、マイクロコンピュータ100、200が2つのプロセッサ1、2、101、102を有する例について説明したが、プロセッサの数は3つ以上であっても良い。
1:第1プロセッサ、2:第2プロセッサ、3:バックアップ制御部、4:モード切替制御部、5:ロックステップ比較器、11:メモリ部、12:演算処理部、13:制御部、14:選択器、15:選択器、21:メモリ部、22:演算処理部、23:制御部、24:選択器、25:選択器、31:バックアップメモリ部、32:バックアップ比較器、61:外部回路、62:外部回路、100:マイクロコンピュータ
Claims (10)
- 少なくとも2つのプロセッサ(1、2)を備え、動作モードとして、前記少なくとも2つのプロセッサが、別個の命令ストリームを実行するフリーステップモードと、同じ命令ストリームを実行するロックステップモードとを有するマイクロコンピュータ(100)であって、
前記少なくとも2つのプロセッサは、それぞれ、
命令に応じた演算処理を実行する演算処理部(12、22)と、
データを記憶する複数のデータ領域と、複数のデータ領域にそれぞれ対応付けられ、各データ領域のデータが利用可能であるか否かを示すフラグを記憶するフラグ領域と、を含むメモリ部(11、21)と、を有し、
前記マイクロコンピュータは、さらに、
前記ロックステップモードの開始後に、前記少なくとも2つのプロセッサの前記メモリ部の対応するデータ領域に記憶される新たなデータを記憶する、前記少なくとも2つのプロセッサにて共用されるバックアップメモリ部(31)を含むバックアップ制御部(3)と、
前記フリーステップモードと前記ロックステップモードとの間で、動作モードの切り替えを制御するモード切替制御部(4)と、
前記少なくとも2つのプロセッサに対してそれぞれ設けられ、前記演算処理部へのデータ提供元を、対応する前記メモリ部と前記バックアップメモリ部とのいずれかに切り替えるデータ切替部(14、24)と、を備え、
すべてのフラグ領域のフラグは、前記フリーステップモードから前記ロックステップモードへの切り替え時に、前記メモリ部のすべてのデータ領域のデータが利用不可であることを示す状態となるように設定され、
前記少なくとも2つのプロセッサにおいて、前記ロックステップモードの開始後に、新たなデータが前記メモリ部のデータ領域に記憶されると、そのデータ領域に対応付けられたフラグが利用可能であることを示す状態に更新され、
前記少なくとも2つのプロセッサが同じ命令を実行するために、読み出し対象となったデータが記憶されているデータ領域に対応付けられたフラグが、データの利用が可能であることを示す状態であるか否かが判定され、利用可能であることを示す状態と判定された場合、前記データ切替部により前記演算処理部へのデータ提供元が前記メモリ部に切り替えられ、利用不可を示す状態であると判定された場合、前記演算処理部へのデータ提供元が前記バックアップメモリ部に切り替えられるマイクロコンピュータ。 - 前記バックアップ制御部は、前記少なくとも2つのプロセッサの前記メモリ部の対応するデータ領域に記憶される新たなデータが一致するか否かを判定するデータ一致判定部(32)を有し、
前記バックアップメモリ部には、前記データ一致判定部にて一致したと判定されたデータが記憶される請求項1に記載のマイクロコンピュータ。 - 前記バックアップ制御部は、前記データ一致判定部において、前記少なくとも2つのプロセッサの前記メモリ部のデータ領域に記憶される新たなデータが一致しないと判定された場合、エラー信号を出力する請求項1又は2に記載のマイクロコンピュータ。
- 前記ロックステップモードは、前記メモリ部の一部のデータ領域のデータが利用不可である中間ロックステップモードと、前記メモリ部のすべてのデータ領域のデータが利用可能である完全ロックステップモードとを含み、
前記モード切替制御部は、すべてのフラグ領域のフラグが利用可能であることを示す状態に更新されると、前記中間ロックステップモードから前記完全ロックステップモードに移行し、読み出し対象データが記憶されているデータ領域に対応付けられたフラグの状態に基づくデータ提供元の切り替えが終了され、前記演算処理部へのデータ提供元が前記メモリ部に固定される請求項1乃至3のいずれかに記載のマイクロコンピュータ。 - 前記モード切替制御部は、前記完全ロックステップモードと前記中間ロックステップモードの両方のモードから前記フリーステップモードへ動作モードを切り替えることが可能であり、前記フリーステップモードへの切り替え時には、前記バックアップ制御部の動作が停止される請求項4に記載のマイクロコンピュータ。
- 前記ロックステップモードにおいて、前記少なくとも2つのプロセッサから出力される出力データが一致するか否かを判定し、不一致である場合にはエラー信号を出力する出力データ一致判定部(5)を備える請求項4又は5に記載のマイクロコンピュータ。
- 前記モード切替制御部による、前記中間ロックステップモードあるいは前記完全ロックステップモードから前記フリーステップモードへの切り替え時に、前記出力データ一致判定部は動作を停止する請求項6に記載のマイクロコンピュータ。
- 前記モード切替制御部は、前記少なくとも2つのプロセッサの外部に設けられる請求項1乃至7のいずれかに記載のマイクロコンピュータ。
- 前記少なくとも2つのプロセッサは、それぞれ、各部の動作を制御する制御部を有し、
前記制御部が、前記モード切替制御部の機能の一部を担い、前記少なくとも2つのプロセッサの外部に設けられた前記モード切替制御部と協働して、動作モードの切り替え処理を実行し、
前記制御部は、前記モード切替制御部の機能の一部として、少なくとも、対応するプロセッサにおける前記データ切替部によるデータ提供元の切替処理とを実行する請求項8に記載のマイクロコンピュータ。 - 前記メモリ部は、汎用レジスタを含む請求項1乃至9のいずれかに記載のマイクロコンピュータ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017132179A JP2019016107A (ja) | 2017-07-05 | 2017-07-05 | マイクロコンピュータ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017132179A JP2019016107A (ja) | 2017-07-05 | 2017-07-05 | マイクロコンピュータ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019016107A true JP2019016107A (ja) | 2019-01-31 |
Family
ID=65357428
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017132179A Pending JP2019016107A (ja) | 2017-07-05 | 2017-07-05 | マイクロコンピュータ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2019016107A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020204877A (ja) * | 2019-06-17 | 2020-12-24 | ルネサスエレクトロニクス株式会社 | 半導体装置及びその動作方法 |
-
2017
- 2017-07-05 JP JP2017132179A patent/JP2019016107A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020204877A (ja) * | 2019-06-17 | 2020-12-24 | ルネサスエレクトロニクス株式会社 | 半導体装置及びその動作方法 |
JP7169942B2 (ja) | 2019-06-17 | 2022-11-11 | ルネサスエレクトロニクス株式会社 | 半導体装置及びその動作方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10235254B2 (en) | Processor and method of controlling execution of processes | |
US8458516B2 (en) | Processor system and operation mode switching method for processor system | |
GB2372350A (en) | Ranking order of threads in a multi-threaded processor | |
JPS61110256A (ja) | 複数の演算部を有するプロセツサ | |
US7590686B2 (en) | Apparatus for controlling a multi-processor system, scalable node, scalable multi-processor system, and method of controlling a multi-processor system | |
JP2875842B2 (ja) | プログラマブルコントローラ | |
JP6723941B2 (ja) | 制御装置および制御プログラム更新方法 | |
JP2019016107A (ja) | マイクロコンピュータ | |
CN103853528A (zh) | 处理器和处理器的控制方法 | |
JP7215389B2 (ja) | 電子制御装置 | |
JPH0679270B2 (ja) | デジタル装置 | |
JP5233869B2 (ja) | 処理システム及び処理装置が実行するプログラムの実行方法 | |
JP2008217623A (ja) | データプロセッサ | |
JP3813756B2 (ja) | プログラマブルコントローラ | |
JP2007316986A (ja) | システムlsi | |
JP3601758B2 (ja) | 情報処理装置及びその処理方法 | |
JPH0650001Y2 (ja) | 二重化デジタル制御装置 | |
JP5194360B2 (ja) | 情報処理装置およびその制御方法 | |
JPH07200282A (ja) | 無中断プログラム更新方式 | |
JP2001022414A (ja) | プロセスコントローラ、そのデータ転送方法およびプラント | |
JP2008047054A (ja) | マイクロプロセッサおよびその制御方法 | |
JP2000322255A (ja) | プログラム実行装置 | |
JPH05274169A (ja) | 計算機 | |
WO2015025343A1 (ja) | 電子回路、情報処理装置、及びメモリ制御方法 | |
JP2000267941A (ja) | ストアエラー補償装置 |