(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024155088
(43)【公開日】2024-10-31
(54)【発明の名称】処理制御装置及びプロセッサ
(51)【国際特許分類】
G06F 11/14 20060101AFI20241024BHJP
【FI】
G06F11/14 641A
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2023069503
(22)【出願日】2023-04-20
(71)【出願人】
【識別番号】598121341
【氏名又は名称】慶應義塾
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】山▲崎▼ 信行
(72)【発明者】
【氏名】中別府 将太
(57)【要約】
【課題】リアルタイム性と耐障害性の両方を満たす処理制御装置及びプロセッサを提供する。
【解決手段】処理制御装置は、フリップフロップと、フリップフロップが保持する情報がストアされる不揮発性素子とを有する不揮発性フリップフロップをそれぞれ含む一対のバンクと、一対のバンクを交互に有効に設定し、有効でないバンクのフリップフロップに保持された情報を不揮発性素子にストアするストア動作と、遮断された電源の復帰時に有効なバンクの不揮発性素子に保持された情報をフリップフロップにリストアするリストア動作とを実行する情報格納制御部と、交互に切り替えられる有効なバンクのフリップフロップに保持された情報を使用して処理を実行し、電源の復帰時に有効なバンクのフリップフロップにリストアされた情報を使用して電源の遮断により中断した処理を再開する処理実行部と、を有する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
処理で使用する情報を保持するフリップフロップと、前記フリップフロップが保持する前記情報がストアされる不揮発性素子とを各々有する1以上の不揮発性フリップフロップをそれぞれ含む一対のバンクと、
前記一対のバンクを交互に有効に設定し、有効でない前記バンクの前記フリップフロップに保持された前記情報を対応する前記不揮発性素子にストアするストア動作と、遮断された電源の復帰時に有効な前記バンクの前記不揮発性素子に保持された前記情報を対応する前記フリップフロップにリストアするリストア動作とを実行する情報格納制御部と、
交互に切り替えられる有効な前記バンクのフリップフロップに保持された前記情報を使用して処理を実行し、電源の復帰時に有効な前記バンクの前記フリップフロップにリストアされた前記情報を使用して前記電源の遮断により中断した処理を再開する処理実行部と、を有すること
を特徴とする処理制御装置。
【請求項2】
有効な前記バンクを示す有効情報を不揮発に保持する有効情報保持部を有し、
前記情報格納制御部は、有効でない前記バンクの前記ストア動作の完了に基づいて、有効情報保持部が保持する前記有効情報を書き換えて有効でない前記バンクを有効に切り替えること
を特徴とする請求項1に記載の処理制御装置。
【請求項3】
処理で使用する情報を交互に保持する複数の不揮発性フリップフロップをそれぞれ含む一対のバンクを有する複数の不揮発性フリップフロップモジュールを有するコアと、
前記複数の不揮発性フリップフロップモジュールに保持される前記情報をそれぞれ制御する情報格納制御部と、を有し、
前記複数の不揮発性フリップフロップの各々は、前記情報を保持するフリップフロップと、前記フリップフロップが保持する前記情報がストアされる不揮発性素子とを有し、
前記情報格納制御部は、前記複数の不揮発性フリップフロップモジュールの前記一対のバンクを交互に有効に設定し、有効でない前記バンクの前記フリップフロップに保持された前記情報を対応する前記不揮発性素子にストアするストア動作と、遮断された電源の復帰時に有効な前記バンクの前記不揮発性素子に保持された前記情報を対応する前記フリップフロップにリストアするリストア動作とを実行し、
前記コアは、交互に切り替えられる有効な前記バンクのフリップフロップに保持された前記情報を使用して処理を実行し、電源の復帰時に有効な前記バンクの前記フリップフロップにリストアされた前記情報を使用して前記電源の遮断により中断した処理を再開すること
を特徴とするプロセッサ。
【請求項4】
前記複数の不揮発性フリップフロップモジュールの各々は、有効な前記バンクを示す有効情報を不揮発に保持する有効情報保持部を有し、
前記情報格納制御部は、有効でない前記バンクの前記ストア動作の完了に基づいて、有効情報保持部が保持する前記有効情報を書き換えて有効でない前記バンクを有効に切り替えること
を特徴とする請求項3に記載のプロセッサ。
【請求項5】
前記情報格納制御部は、前記複数の不揮発性フリップフロップモジュールのうちの1つであるマスタ不揮発性フリップフロップモジュールの前記有効情報保持部にグローバル有効情報を保持し、保持したグローバル有効情報により示される、前記複数の不揮発性フリップフロップモジュールの前記バンクの前記リストア動作を実施し、保持したグローバル有効情報により示されない、前記複数の不揮発性フリップフロップモジュールの前記バンクの前記ストア動作を実施すること
を特徴とする請求項4に記載のプロセッサ。
【請求項6】
前記不揮発性フリップフロップモジュールは、前記ストア動作を開始するタイミングを所定数の不揮発性フリップフロップ毎にずらすインタリーブ機能を有し、
前記タイミングのずれ量は、変更可能であること
を特徴とする請求項3ないし請求項5のいずれか1項に記載のプロセッサ。
【請求項7】
前記コアで使用するデータを保持する不揮発性メインメモリと、
前記コアに設けられ、前記不揮発性メインメモリに保持されるデータの一部を前記不揮発性フリップフロップモジュールに保持する不揮発性データキャッシュと、を有し、
前記不揮発性データキャッシュは、前記不揮発性データキャッシュにおいて前記ストア動作が完了したデータを前記不揮発性メインメモリにライトバックすること
を特徴とする請求項3ないし請求項5のいずれか1項に記載のプロセッサ。
【請求項8】
前記不揮発性データキャッシュは、前記不揮発性メインメモリにライトバックするライトバックデータを保持するライトバッファを有し、前記ライトバッファに保持している前記ライトバックデータのうち、前記ストア動作が完了したライトバックデータを前記不揮発性メインメモリにライトバックすること
を特徴とする請求項7に記載のプロセッサ。
【請求項9】
前記不揮発性データキャッシュは、前記ストア動作が完了していない前記ライトバックデータを前記ライトバッファに保持し、前記ライトバッファに所定量の前記ライトバックデータが保持されたとき、前記情報格納制御部に所定量の前記ライトバックデータの前記ストア動作を依頼し、前記ストア動作が完了した前記ライトバックデータを前記不揮発性メインメモリにライトバックすること
を特徴とする請求項8に記載のプロセッサ。
【請求項10】
前記コアは、各々が前記処理で使用する情報を保持する前記不揮発性フリップフロップモジュールを含むパイプライン、レジスタファイル、命令キャッシュ、データキャッシュ及びアドレス変換バッファのうちの1つ又は複数を有すること
を特徴とする請求項3ないし請求項5のいずれか1項に記載のプロセッサ。
【請求項11】
前記情報格納制御部による前記バンクの切り替えタイミングと、前記ストア動作の開始タイミングとは、ソフトウェアにより設定可能であること
を特徴とする請求項3ないし請求項5のいずれか1項に記載のプロセッサ。
【請求項12】
前記複数の不揮発性フリップフロップモジュールの各々は、前記不揮発性フリップフロップに前記情報を書き込む場合、前記ストア動作又は前記リストア動作の実行中を除き、前記一対のバンクの両方の前記フリップフロップへの前記情報の書き込みを許可し、前記ストア動作又は前記リストア動作を実行中の前記バンクへの前記情報の書き込みを禁止すること
を特徴とする請求項3ないし請求項5のいずれか1項に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、処理制御装置及びプロセッサに関する。
【背景技術】
【0002】
自動車、ロボット、宇宙船、ウェアラブルデバイス、センサネットワークなどに使用される組込みシステムは、時間制約を守りつつ処理を実行するリアルタイム性と、電源障害などに対する耐障害性とが要求される。電源障害が発生した場合、揮発性メモリ及びフリップフロップに保持された情報は失われるため、システムの再起動が必要となる。
【0003】
プロセッサシステムの耐障害性を向上するために、プロセスの再実行に必要な情報をチェックポイント毎に定期的にメインメモリに保存しておき、障害の発生によりプログラムの実行が中断されたときに、プロセスの状態をチェックポイントまで戻して再実行する手法が知られている(例えば、特許文献1参照)。
【0004】
マイクロコンピュータにおいて、停電の発生時にプログラムカウンタの値とメモリの内容とを不揮発性メモリにそれぞれ待避し、停電からの復旧時に待避したプログラムカウンタの値とメモリの内容とを復元する手法が知られている(例えば、特許文献2参照)。
【0005】
フリップフロップに不揮発性フリップフロップを使用した不揮発性プロセッサが知られている(例えば、非特許文献1参照)。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開平9-69082号公報
【特許文献2】特開2000-39928号公報
【非特許文献】
【0007】
【非特許文献1】Y. Wang, Y. Liu, S. Li, D. Zhang, B. Zhao, M. Chiang, Y. Yan, B. Sai, and H. Yang, "A 3us wake-up time nonvolatile processor based on ferroelectric flip-flops," 2012 Proceedings of the ESSCIRC (ESSCIRC), pp.149-152, 2012.
【非特許文献2】K. Usami, J. Akaike, S. Akiba, M. Kudo, H. Amano, T. Ikezoe, K. Hiraga, Y. Shuto, and K. Yagami, "Energy efficient write verify and retry scheme for mtj based flip-flop and application," 2018 IEEE 7th Non-Volatile Memory Systems and Applications Symposium (NVMSA), pp.91-98, 2018.
【非特許文献3】A. Kamei, T. Kojima, H. Amano, D. Yokoyama, H. Miyauchi, K. Usami, K. Hiraga, K. Suzuki, and K. Bessho, "Energy saving in a multi-context coarse grained reconfigurable array with non-volatile flip-flops," 2021 IEEE 14th International Symposium on Embedded Multicore/Many-core Systems-on-Chip (MCSoC), pp.273-280, 2021.
【発明の概要】
【発明が解決しようとする課題】
【0008】
チェックポイント毎に情報を保存する手法では、システムの処理は、チェックポイントでの情報をメモリ等に書き込んでいる間に停止される。このため、チェックポイントの周期が短いほど、停電からの復旧時に停電の発生時点に近いところから処理を再開することができるが、チェックポイントの周期が短いほど、システムの処理性能は低下する。
【0009】
また、チェックポイントでの情報を不揮発性フリップフロップの不揮発性要素に書き込み中に停電等が発生した場合、不揮発性要素に正しい情報が保持されないおそれがある。これにより、停電が発生する前のチェックポイントでの状態を復元できない場合、その後の処理を正しく実施できない。この結果、システムの再起動が必要になり、リアルタイム性と耐障害性とが満たされなくなる。
【0010】
上記の課題に鑑み、本発明は、リアルタイム性と耐障害性の両方を満たす処理制御装置及びプロセッサを提供することを目的とする。
【課題を解決するための手段】
【0011】
一つの観点によれば、処理制御装置は、処理で使用する情報を保持するフリップフロップと、前記フリップフロップが保持する前記情報がストアされる不揮発性素子とを各々有する1以上の不揮発性フリップフロップをそれぞれ含む一対のバンクと、前記一対のバンクを交互に有効に設定し、有効でない前記バンクの前記フリップフロップに保持された前記情報を対応する前記不揮発性素子にストアするストア動作と、遮断された電源の復帰時に有効な前記バンクの前記不揮発性素子に保持された前記情報を対応する前記フリップフロップにリストアするリストア動作とを実行する情報格納制御部と、交互に切り替えられる有効な前記バンクのフリップフロップに保持された前記情報を使用して処理を実行し、電源の復帰時に有効な前記バンクの前記フリップフロップにリストアされた前記情報を使用して前記電源の遮断により中断した処理を再開する処理実行部と、を有することを特徴とする。
【発明の効果】
【0012】
本発明によれば、リアルタイム性と耐障害性の両方を満たす処理制御装置及びプロセッサを提供することができる。
【図面の簡単な説明】
【0013】
【
図1】本発明の一実施形態におけるプロセッサが搭載されたシステムの一例を示すブロック図である。
【
図2】
図1の不揮発性フリップフロップモジュールの一例を示すブロック図である。
【
図3】NVFFユニットの構成の一例と、NVFFMによりチェックポイントを作成しているときのBankの状態の一例とを示す図である。
【
図4】チェックポイントの作成中に発生した停電からの復旧後にNVFFMがチェックポイントを復元する動作の一例を示すシーケンス図である。
【
図5】グローバルNVDCの一例を示すブロック図である。
【
図6】ローカルNVDCの一例を示すブロック図である。
【
図7】チェックポイントを作成するSO手法の例を示すフロー図である。
【
図8】チェックポイントを作成するOSS手法の例を示すフロー図である。
【
図9】チェックポイントを作成するTSS手法の例を示すフロー図である。
【
図10】チェックポイントを作成するMSS手法の例を示すフロー図である。
【
図11】ノンストップSoCのチップレイアウトの概要を示す図である。
【
図12】チェックポイントの作成開始間隔及び復元開始間隔とチェックポイントの作成時間及び復元時間との関係の例を示す図である。
【
図13】bitcountベンチマークによるチェックポイントの作成周期とIPCとの関係を示す図である。
【
図14】qsortベンチマークによるチェックポイントの作成周期とIPCとの関係を示す図である。
【
図15】bitcountベンチマークによるチェックポイントの作成周期とエネルギー消費との関係を示す図である。
【
図16】qsortベンチマークによるチェックポイントの作成周期とエネルギー消費との関係を示す図である。
【発明を実施するための形態】
【0014】
以下、図面を用いて実施形態を説明する。
【0015】
(ノンストップSoCのブロック図)
図1は、本発明の一実施形態におけるプロセッサが搭載されたシステムの一例を示すブロック図である。
図1に示すシステムSYSは、ノンストップSoC(System-on-Chip)と、ノンストップSoCに接続された複数の周辺機器とを有する。
図1において、細い矩形枠で示す要素は、揮発性の要素を示し、太い矩形枠で示す要素は、不揮発性の要素を含むことを示す。
【0016】
例えば、ノンストップSoCは、自動車、ロボット、宇宙船、ウェアラブルデバイス、センサネットワーク等に耐障害性のある組み込みリアルタイムシステムとして搭載される。ノンストップSoCは、電源が一時的に遮断された場合にもデータを失わないため、電源の復旧後に再起動処理を実施することなく、電源の遮断前に実施していた動作を再開することができる。このため、例えば、ノンストップSoCは、太陽光発電、風力発電又は水力発電等の電源が不安定な環境下でも再起動処理を実施することなく動作を継続可能である。
【0017】
ノンストップSoCは、内部バスIBUSを介して相互に接続されたNVDC(Non-Volatile Device Controller)トップモジュール、ノンストッププロセッサ、SRAM(Static Random Access Memory)、DMAC(Direct Memory Access Controller)、MRAM(Magnetoresistive Random Access Memory)、クロック制御回路、PWN(Pulse Width Modulation)ジェネレータ及び各種I/Oインタフェースを有する。
【0018】
NVDCトップモジュールは、例えば、1チャネル(CH0)のグローバルNVDC(Non-Volatile Device Controller)と、31チャネル(CH1-CH31)のローカルNVDCと1チャネル(CH1)のNVFFM(Non-Volatile Flip-Flop Module)とを有する。CH1のNVFFMは、グローバルNVDCで使用する制御情報を不揮発に保持する。なお、CH1のNVFFMは、グローバルNVDC内に配置されてもよい。ノンストッププロセッサは、CH2-CH9に対応する8個のNVFFMを有する。グローバルNVDC及びローカルNVDCは、情報格納制御部の一例である。ノンストッププロセッサは、コア及び処理実行部の一例である。MRAMは、不揮発性メインメモリの一例である。
【0019】
グローバルNVDC及びローカルNVDCは、NVFFMの動作を制御し、NVFFMに後述するストア動作及びリストア動作を実施させる。グローバルNVDCは、ノンストップSoC内の複数のNVFFMを同時に制御可能である。各ローカルNVDCは、対応するNVFFMを個別に制御可能である。不揮発性デバイスコントローラNVDCは、ビット幅が異なる様々な構成のNVFFMを、ソフトウェアの設定により柔軟に吸収して制御可能である。
【0020】
各NVFFMは、グローバルNVDC又は対応するチャネルのNVDCによって制御される。NVFFMは、複数のNVFF(Non-Volatile Flip-Flop)と、各NVFFのチェックポイントの作成とチェックポイントの復元とを制御する制御ロジックとを有するレジスタファイルである。NVFFM及びNVFFの構成については、
図2及び
図3に示される。
【0021】
チェックポイントは、停電等による電源の遮断からの復旧時に再現する電源の遮断前の発生前のデータを取得するポイント、取得タイミング及び取得するデータ等を示す。チェックポイントの作成は、NVFFの揮発性要素から不揮発性要素にデータをストアすることを示す。チェックポイントの復元は、NVFFの不揮発性要素から揮発性要素にデータをリストアすることを示す。以下の説明では、停電等による電源の遮断は、停電と称される。
【0022】
図1に示す例では、ノンストップSoCは、I/OインタフェースとしてSPI(Serial Peripheral Interface:登録商標)、I2C(Inter-Integrated Circuit:登録商標)、UART(Universal Asynchronous Receiver Transmitter)、GPIO(General Purpose Input/Output)及び外部バスインタフェースを有する。なお、ノンストップSoCに搭載されるI/Oインタフェースは、
図1に示す例に限定されず、システムSYSに搭載される周辺機器に応じて決められる。
【0023】
ノンストッププロセッサのアーキテクチャは、RISC(Reduced Instruction Set Computer)プロセッサと同様であり、通常のCPU(Central Processing Unit)と同様に動作する。このため、ノンストッププロセッサは、CPUと同様に、パイプライン、汎用レジスタGPR(General Purpose Register)、浮動小数点レジスタFPR(Floating Point Register)、命令キャッシュICache、データキャッシュDCache、命令TLBであるITLB(TLB:Translation Lookaside Buffer)、データTLBであるDTLB及び制御レジスタを有する。なお、ノンストッププロセッサは、パイプライン、汎用レジスタGPR、浮動小数点レジスタFPR、命令キャッシュICache、データキャッシュDCache、ITLB、DTLB及び制御レジスタのうち、1つ又は複数のみを有してもよい。
【0024】
汎用レジスタGPR及び浮動小数点レジスタFPRは、レジスタファイルの一例である。データキャッシュDCacheは、不揮発性データキャッシュの一例である。命令TLB及びデータTLBは、アドレス変換バッファの一例である。以下では、汎用レジスタGPR、浮動小数点レジスタFPR、命令キャッシュICache及びデータキャッシュDCacheは、それぞれGPR、FPR、ICache及びDCacheと称される。
【0025】
パイプライン、GPR、FPR、ICache、DCache、ITLB、DTLB及び制御レジスタに搭載されるフリップフロップは、それぞれチャネルCH2からチャネルCH9までの8個のNVFFMとして設計される。すなわち、ノンストッププロセッサに含まれるパイプライン等の全ての回路ブロックに含まれる全てのフリップフロップは、チェックポイントの作成と復元とが可能なNVFFである。これにより、ノンストッププロセッサに保持される全ての情報を不揮発に保持することができる。
【0026】
DCacheは、MRAMに記憶されているデータの一部を保持するデータ記憶領域と、記憶領域の記憶状態を保持する状態記憶領域と、ライトバッファとを有する。例えば、ライトバッファのサイズは、DCacheの10キャッシュラインから20キャッシュライン程度である。状態記憶領域は、データがNVFFの不揮発性要素にストアされたか否かを示すストアドビットを含む。MRAMへの書き込み回数をできる限り少なくするため、DCacheは、ストア命令の実施時にDCacheのデータ記憶領域のみにデータを書き込み、MRAMにデータを書き込まず、状態記憶領域をダーティー状態にする(ライトバック形式)。
【0027】
また、ストア命令でキャッシュミスが発生したときに、DCacheは、MRAMからデータを読み出して、キャッシュラインにストアデータを書き込む一方、MRAMには書き込まず、状態記憶領域をダーティー状態にする(ライトアロケート形式)。さらに、ライトバックの発生時にライトバックデータをライトバッファに一旦書き込み、ノンストッププロセッサが動作しているバックグラウンドでライトバッファに書き込んだデータをMRAMに書き込む(ライトバッファ形式)。以上の3つの形式により、停電が発生した場合にも、MRAMとDCacheとの間でデータの一貫性を維持することができる。
【0028】
DCachは、ライトバッファに所定量のライトバックデータを保持したとき、DCacheに対応するCH6のローカルNVDCにチェックポイントの作成(すなわち、ストア動作の実施)を依頼する。例えば、所定量は、ライトバッファのサイズの半分程度である。
【0029】
ライトバッファを設けることで、チェックポイントの作成頻度を下げることができ、ライトバックデータをライトバッファからMRAMにまとめてライトバックすることができる。この結果、ライトバッファを設けない場合に比べて、ノンストッププロセッサの消費電力を低減することができる。
【0030】
CH6のローカルNVDCは、ライトバッファに保持されているデータに対応してデータ記憶領域のNVFFに保持されているデータを不揮発領域にストアすることでチェックポイントの作成を制御する。以下では、NVFFの揮発領域に保持しているデータを不揮発領域にストアする動作は、チェックポイントの作成とも称される。DCacheは、チェックポイントを作成したデータに対応するストアドビットをセットする。そして、DCacheは、ライトバッファに保持されているデータのうちストアドビットがセットされた、すなわちチェックポイントを作成済みのデータをMRAMにライトバックする。換言すれば、DCacheは、チェックポイントの作成が完了するまで、データのMRAMへの書き込みを抑止する。
【0031】
チェックポイントが作成されたデータのみをMRAMにライトバックすることで、停電が発生した場合にも、MRAMとDCacheとの間でデータの一貫性を維持することができる。これに対して、チェックポイントが作成されていないデータがMRAMにライトバックされた後に停電が発生した場合、チェックポイントが作成されていないDCacheのデータは失われる場合がある。このため、MRAMとDCacheとのデータの一貫性を維持することができない。
【0032】
ライトバッファに空きがある間、DCacheは動作することができ、ノンストッププロセッサは、CPUとして動作することができる。一方、ライトバッファが一杯になると、DCacheからのデータの追い出しができないため、キャッシュミス時にデータをMRAMから転送することができない。このため、ノンストッププロセッサは、ライトバッファに空きができるまで動作を停止する。
【0033】
ノンストッププロセッサの動作の停止による演算性能の低下を抑制するためには、ライトバッファが一杯になる前にデータをMRAMにライトバックする必要がある。ノンストップSoCは、ノンストッププロセッサの動作を停止させることなく、ライトバッファを使用してデータの一貫性を維持する2つの手法のいずれかを実施する。
【0034】
最初の手法では、ノンストッププロセッサが実行するソフトウェアによりライトバッファのデータ保持容量をモニタし、チェックポイントの作成が必要な容量が保持されたときに割り込み処理を実施する。例えば、割り込み処理は、DCacheに対応するCH6のローカルNVDCにチェックポイントの作成を依頼し、依頼を受けたローカルNVDCがチェックポイントを作成することで実施される。この手法により、プログラマが意図した時間にチェックポイントを作成することが可能になる。
【0035】
2番目の手法では、ハードウェアは、データの一貫性を意識したチェックポイントの作成が必要であることを検出するとチェックポイントを自動的に作成する。この手法では、割り込みを発生させずにチェックポイントを作成できるため、チェックポイントの作成時間を最初の手法より短縮することができる。
【0036】
SRAMは、ノンストップSoCで使用するワークデータ等を保持する。DMACは、例えば、ノンストップSoCが内蔵する2つの要素間でのデータ転送をノンストッププロセッサを介在させることなく実施する。
【0037】
MRAMは、ノンストッププロセッサのメインメモリとして使用され、ノンストッププロセッサが実行するプログラム及びノンストッププロセッサが使用するデータ等を不揮発に記憶する。高速かつランダムアクセス可能な不揮発性メモリをメインメモリとすることで、メインメモリに保持されたデータに対するチェックポイントの作成を不要にすることができる。
【0038】
SPI又はI2Cは、ADC(Analog-to-Digital Converter)又はDAC(Digital-to-Analog Converter)等に接続される。UART及びGPIOは、各種I/Oデバイスにそれぞれ接続される。クロック制御回路は、ノンストップSoCに搭載されるフリップフロップ等の各種クロック同期回路で使用するクロックを生成し、クロックの周波数を調整する。
【0039】
PWMジェネレータは、不揮発性のPWM入力(以下、PWMIN)、不揮発性のパルスカウンタレジスタ(以下、PLSCNT)及び揮発性のPWM出力(以下、PWMOUT)を有する。例えば、PWMIN及びPLSCNTは、それぞれ2チャネル(CH20、CH21とCH22、CH23)のNVFFMを有するが、それぞれのチャネル数は1以上であればよい。
【0040】
例えば、PWMジェネレータは、ノンストップSoCに接続されるAC(Alternating Current)モータ又はDC(Direct Current)モータ等のモータの回転数と回転方向とを制御する。特に限定されないが、モータは、システムSYSに搭載されるアクチュエータの制御に使用されてもよい。システムSYSがロボットの場合、アクチュエータは、ロボットのアーム又は車輪等を動かしてもよい。
【0041】
PLSCNT(NVFFM)は、モータに取り付けられたエンコーダから出力されるモータの回転数と回転方向とを示す情報を保持する。PWMIN(NVFFM)は、例えば、モータの極情報を保持する。
【0042】
PWMOUTは、揮発性のレジスタを含むモータ制御用のIOである。PWMOUTは、PLSCNT及びPWMINに保持された回転数等の情報に応じてPWMジェネレータが生成するモータの回転数又は回転方向等を制御情報として保持する。そして、PWMジェネレータは、PWMOUTに保持している制御情報に基づいてPWM信号を生成し、生成したPWM信号をモータに出力する。
【0043】
PWMIN及びPLSCNTをNVFFMにより設計することで、電源の瞬停時等にPWMIN及びPLSCNTの設定値が失われることを抑止することができる。このため、PWMジェネレータは、電源の復旧後に、復元したPWMIN及びPLSCNTの値に基づいて、モータの回転数の制御に使用するPWMOUTの制御情報を迅速に復元することができる。この結果、電源の復旧後に、モータに接続されるアクチュエータ等を電源の遮断前の状態から動作させることができる。
【0044】
例えば、外部バスインタフェースは、ノンストップSoCの外部に配置されるROM(Read Only Memory)やI/Oデバイスに接続され、ROMやI/Oデバイスのアクセスを制御する。
【0045】
(NVFFMのブロック図)
図2は、
図1の不揮発性フリップフロップモジュールNVFFMの一例を示すブロック図である。
図2においても、細い矩形枠で示す要素は、揮発性の要素を示し、太い矩形枠で示す要素は、不揮発性の要素を含むことを示す。
【0046】
NVFFMは、一対のバンクと、バリッドビットと、セレクタSELと、制御ロジックとを有する。以下では、一対のバンクのうち片方のバンクをBank0、他方のバンクをBank1と称し、Bank0、Bank1を区別なく表す場合はBankと称する。Bank0、Bank1は、互いに同じ構成である。Bank0、Bank1は、それぞれインタリーブロジックとN個のNVFFユニットとを有する。
【0047】
Bank0、Bank1がチェックポイントを作成中でない場合、NVFFMへの入力データは、両方のバンク(Bank0、Bank1)に格納される。Bank0、Bank1の両方にデータを保持することで、NVFFMは、どのBankがアクティブバンクとして選択されていても、正常に動作することができる。NVFFMからの出力データは、制御ロジックにより選択されたBankから出力される。制御ロジックは、対応するローカルNVDC又はグローバルNVDCからの指示に基づいて、各Bank0、Bank1のNVFFユニットの動作を制御する。
【0048】
Bank0、Bank1において、同じ番号のNVFFユニットは、NVFFMに入出力される1つのビット値に対応して割り当てられる。NVFFMは、一方のBankがチェックポイントの作成又は復元を実施している間、他方のBankをレジスタファイルとして使用する。これにより、チェックポイントの作成中又は復元中にも、ノンストッププロセッサ及びPWMジェネレータは、停止することなく動作を継続することができる。
【0049】
なお、チェックポイントの作成又は復元を実施しているBankは、クロックゲーティングにより入力データの受け付けが禁止され、Bankへのデータの書き込みが禁止される。これにより、チェックポイントの作成又は復元中のNVFFユニットに保持されているデータが入力データにより書き換わることを抑止することができる。
【0050】
NVFFMは、1つのビット値をBank0のNVFFとBank1のNVFF(NVFFペア)で交互に保持し、チェックポイントをBank0、Bank1で交互に作成する。これにより、NVFFMは、一方のBankでチェックポイントを作成中に停電が発生しても、他方のBankが正常なチェックポイントを保持できる。一方、NVFFMが1つのBankのみを有し、1つのBankにチェックポイントを作成する場合、チェックポイントの作成中に停電が発生すると、NVFFMは、チェックポイントを失ってしまう。
【0051】
バリッドビットは、有効なチェックポイントを保持しているBankを示す。例えば、バリッドビット=0は、有効なチェックポイントがBank0に保持されていることを示し、バリッドビット=1は、有効なチェックポイントがBank1に保持されていることを示す。このため、NVFFMは、バリッドビットを参照し、バリッドビットの値で示されるBankでチェックポイントを復元することができる。
【0052】
バリッドビットの復元は、停電からの復旧後等に実施されるため、バリッドビットは、NVFFを使用して不揮発に保持する必要がある。なお、NVFFMは、バリッドビットの値を反転した値で示されるBankでチェックポイントを作成した後、バリッドビットの値を反転する。バリッドビットは、有効なBankを示す有効情報を保持する有効情報保持部の一例であり、バリッドビットの値は、有効情報の一例である。
【0053】
(NVFFユニットの構成の一例)
図3は、NVFFユニットの構成の一例と、NVFFMによりチェックポイントを作成しているときのBankの状態の一例とを示す図である。各Bankは、N個のNVFFユニット(NVFFユニット0-NVFFユニット(N-1))を有する。各NVFFユニットは、フリップフロップFFと磁気トンネル接合素子MTJとを各々含むM個の不揮発性フリップフロップNVFF(NVFF0-NVFF(M-1))を有する。磁気トンネル接合素子MTJは、不揮発性素子の一例である。
【0054】
例えば、NVFFユニットに搭載される各NVFFは、フリップフロップFFと、MRAMの記憶素子に使用される磁気トンネル接合素子MTJとを有する。以下では、フリップフロップFFは、単にFFとも称され、磁気トンネル接合素子MTJは、単にMTJとも称される。NVFFMは、FFに保持されているデータをMTJにストア(ST)することで、チェックポイントを作成し、MTJに保持されているデータをFFにリストア(RS)することで、チェックポイントを復元する。
【0055】
NVFFMは、ローカルNVDC又はグローバルNVDCからの指示に基づいて、Bank0、Bank1にチェックポイントを交互に作成する。一方のBankがチェックポイントを作成している間、他方のBankは、処理に使用するデータをFFに保持する単純なレジスタファイルとして動作する。これにより、NVFFMは、チェックポイントの作成のオーバーヘッドを隠してN個のレジスタファイルとして動作することができる。
【0056】
通常動作においてレジスタファイルとして動作する一方のBankは、通常のフリップフロップと同様に、クロックの立ち上がりエッジに同期して入力データをFFに格納する。また、消費電力を低減するために、NVFFMは、一方のBankのみを選択して読み出し動作及び書き込み動作を実施してもよい。以下では、選択されたBankは、アクティブバンクと称される。
【0057】
なお、メインメモリがReRAM(Resistive Random Access Memory)により形成される場合、NVFFは、ReRAMの記憶素子に使用される抵抗変化素子により形成されてもよい。メインメモリがFeRAM(Ferroelectric Random Access Memory)により形成される場合、NVFFは、FeRAMの記憶素子に使用される強誘電体キャパシタにより形成されてもよい。
【0058】
ノンストップSoCに搭載されるメインメモリに使用される記憶素子によりNVFFを形成することで、メインメモリとNVFFとを共通の製造プロセスで製造することができ、ノンストップSoCの製造プロセスが複雑になることを抑制することができる。この結果、ノンストップSoCの良品率である歩留まりが低下することを抑制することができる。
【0059】
図3に示す状態では、Bank0のNVFFユニット0は、データをJ-1番目のチェックポイントとして各MTJに格納済みであり、各FFに2つ先のJ+1番目のチェックポイントとなるデータを保持している。Bank0の他のNVFFユニット1-NVFFユニット(N-1)もデータをJ-1番目のチェックポイントとして各MTJに格納済みである。
【0060】
一方、Bank1のNVFFユニット0は、チェックポイントを作成中であり、各MTJに格納済みのJ-2番目のデータを、各FFに格納されたJ番目のデータに書き換え中である。例えば、Bank1は、NVFFユニット0のNVFF0-NVFF1のMTJにJ番目のチェックポイントを格納済みであるが、NVFFユニット0のNVFF2-NVFF(M-1)のMTJにはJ番目のチェックポイントを格納していない。Bank1の他のNVFFユニット1-NVFFユニット(N-1)もチェックポイントを更新中の場合がある。
【0061】
したがって、
図3に示す状態で停電が発生した場合、Bank1のNVFFユニット0は、誤ったチェックポイントを保持する。Bank1の他のNVFFユニット1-NVFFユニット(N-1)も誤ったチェックポイントを保持するおそれがある。一方、Bank0のNVFFユニット0及び他のNVFFユニット1-NVFFユニット(N-1)は、全てのMTJにJ-1番目のチェックポイントを格納済みである。
【0062】
このため、NVFFMは、チェックポイントの更新中に停電が発生した場合にも、Bank0のNVFFユニット0が保持するJ-1番目のデータを使用してチェックポイントを復元することができる。NVFFMの他のNVFFユニット1-NVFFユニット(N-1)及び他のNVFFMも、NVFFユニット0と同様にチェックポイントを復元することができる。したがって、ノンストップSoCは、停電が発生した場合にも、全てのNVFFMのデータを復元することができ、停電からの復旧後に、停電前に実施していた動作を迅速に再開して、再起動することなく処理を継続することができる。
【0063】
なお、耐障害性のあるリアルタイムシステムは、MTJ素子の永久故障やストア動作の失敗などの様々な障害にもかかわらず、正常に動作する必要がある。このため、NVFFMは、誤り訂正符号(ECC)を用いたデータの符号化と復号の機能を有してもよい。
【0064】
この場合、MTJに永久故障が発生した場合にも、システムSYSを正常に動作させることが可能になる。例えば、ECCとして(64,72)ハミング符号を使用することで、1ビット誤りを訂正することができ、2ビット誤りを検出することができる。また、ストア動作の成功又は失敗を検証できるように、VR-NVFF(非特許文献2)を使用したNVFFMが設計されてもよい。
【0065】
なお、
図2及び
図3に示すNVFFMは、処理制御装置に含まれてもよい。例えば、処理制御装置は、時間制約を守りつつ処理を実行するリアルタイム性と電源障害などに対する耐障害性との両方を必要とするロボット又は車両等の各種装置に搭載されて各種装置の様々な機構を制御可能である。例えば、処理制御装置は、複数のNVFFMと、各NVFFMのBankの切り替え制御を実施する情報格納制御部と、NVFFMに保持されたデータ等の情報を使用してデータ処理又は情報処理を実施する処理実行部とを有する。
【0066】
情報格納制御部は、NVFFMの一対のBankを交互に有効に設定し、有効でないBankの各フリップフロップに保持された情報を、各フリップフロップに対応するMTJ等の不揮発性素子にストアするストア動作を実施する。また、情報格納制御部は、停電による電源の遮断後に電源が復帰したときに、有効なBankの各不揮発性素子に保持された情報を、各不揮発性素子に対応するフリップフロップにリストアするリストア動作を実施する。情報格納制御部が実施するNVFFMの制御は、後述する
図4の動作と同様である。
【0067】
処理実行部は、有効なBankのフリップフロップに保持された情報を使用して処理を実行し、電源の復帰時に有効なBankのフリップフロップにリストアされた情報を使用して、電源の遮断により中断した処理を再開する。例えば、情報格納制御部及び処理実行部は、処理制御装置に搭載されるCPU等のコントローラにより実現されてもよい。
【0068】
(停電からの復旧時のチェックポイントの復元例)
図4は、チェックポイントの作成中に発生した停電からの復旧後にNVFFMがチェックポイントを復元する動作の一例を示すシーケンス図である。
図4に示す動作は、ローカルNVDC又はグローバルNVDCによる制御に基づいて、ノンストップSoCに搭載されている全てのNVFFMで並列に実施される。
【0069】
例えば、ノンストップSoCは、時間の制約があるリアルタイムタスクを複数のサブタスクに分割し、複数のサブタスクを2つのBank0、Bank1を使用して交互に実行する。NVFFMは、一方のBankを使用してサブタスクが実行されているバックグラウンドで、他方のBankのチェックポイントを作成する。例えば、i番目のチェックポイントの作成は、i+1番目のサブタスクの実行と並列に実施されるため、チェックポイントの作成を隠蔽することができる。
【0070】
なお、
図4では、チェックポイントは、ノンストップSoCが実行するソフトウェアによりサブタスクの実行完了に合わせて作成することができる。チェックポイントをソフトウェアにより作成する場合、ソフトウェアは、チェックポイントの作成が必要であることを検出したときに割り込みを生成する。そして、割り込み処理によりチェックポイント機能が呼び出されてBankが切り替えられ、チェックポイントが作成される。
【0071】
ソフトウェアの制御によるチェックポイントの作成手法では、プログラマの意図する時間にチェックポイントの開始タイミングを設定可能であり、Bankの切り替えタイミングを設定可能である。しかし、割り込み処理が必要になるため、チェックポイントの作成の完了までに長い時間が掛かるおそれがある。
【0072】
一方、
図4の動作とは異なるが、ハードウェアによりチェックポイントを自動的に作成することが可能である。例えば、ハードウェアは、チェックポイントの作成が必要であることを検出したときにチェックポイントを自動的に作成する。ハードウェアの制御によるチェックポイントの作成手法では、プログラマは、チェックポイントがいつ作成されるかを知ることができないが、ソフトウェアに掛かる負荷を軽減してチェックポイントを作成することができる。
【0073】
NVFFMは、サブタスクが完了する毎に、サブタスクの実行に使用したBankでチェックポイントを作成する。NVFFMは、チェックポイントの作成の完了に基づいてバリッドビットを反転することで、チェックポイントを作成したBankを示す値にバリッドビットを設定する。
【0074】
例えば、停電の発生前、NVFFMは、Bank0を使用してi+2番目のサブタスクEの実行が完了された時点でバリッドビットが1であるため、Bank0でi+2番目のチェックポイントCの作成を開始する(
図4(a))。また、i+2番目のサブタスクEの実行が完了された時点でバリッドビットが1であるため、i+3番目のサブタスクEは、Bank1で開始される(
図4(b))。
【0075】
停電の発生により、i+2番目のチェックポイントCの作成と、i+3番目のサブタスクEの実行とが中断する(
図4(c))。停電からの復旧後、NVFFMは、まず、バリッドビットの値をMTJからFFにリストアすることで、バリッドビットを復元する。
図4に示す例では、復元されるバリッドビットは1である(
図4(d))。
【0076】
次に、MVFFMは、バリッドビットの値(=1)に基づいて、最新のチェックポイントCがあるBank1をリストアの対象バンクとして選択する。Bank1は、各NVFFユニットにNVFFを制御する制御信号を出力し、各NVFFユニットのリストア動作Rを実施する。そして、Bank1において、最新であるi+1番目のチェックポイントCがMTJからFFにリストアされ、各NVFFのチェックポイントCが復元される(
図4(e))。
【0077】
チェックポイントCの復元後、NVFFMは、リストア対象バンクであるBank1内の複数のNVFFのFFに保持された値に基づいてECCをデコードしてもよい。NVFFMは、1ビットエラー又は2ビットエラーを検出した場合、検出したエラーに対応する割り込みを発生してエラー処理を実施する。
図4では、復元したチェックポイントCにエラーがないとする。
【0078】
NVFFMは、リストア対象バンクであるBank1をアクティブバンクとして選択する。これにより、Bank1の各NVFFユニットは、Nビットのレジスタファイルとして機能する。そして、ノンストップSoCは、停電前にBank0で実行が完了し、かつ、チェックポイントCが未作成であるi+2番目のサブタスクEの実行を、アクティブバンクであるBank1を使用して再開する(
図4(f))。
【0079】
図4に示すように、少なくとも1つのBankは、常に正しいチェックポイントCを持っている。このため、チェックポイントCの作成中に停電が発生した場合にも、ノンストップSoCは、停電からの復旧直後に正しいチェックポイントCを復元して処理を再開することができる。
【0080】
Bank1では、i+2番目のサブタスクEの完了後、i+3番目のサブタスクEが開始される(
図4(g))。NVFFMは、i+3番目のサブタスクEの実行中に、バリッドビット=1を反転した値で示されるBank0でi+2番目のチェックポイントCを作成する(
図4(h))。NVFFMは、i+2番目のチェックポイントCの作成後、バリッドビットを反転する(
図4(i))。この後、NVFFMは、サブタスクEをBank0、Bank1で交互に実行し、一方のBankでサブタスクEが実行されている間に、他方のBankでチェックポイントCを作成する。
【0081】
図4のかぎ括弧内にBankを使用しないでチェックポイントCを作成する例が示される。この場合、チェックポイントCは、サブタスクEの実行を停止して作成される必要がある。チェックポイントCの作成期間をサブタスクEの実行期間に含めることができないため、チェックポイントCの作成によりサブタスクEの処理性能は低下する。
【0082】
ところで、複数のNVFFMでチェックポイントが作成される場合、チェックポイントの作成が完了する時間は、各NVFFMで異なる場合があり、バリッドビットの更新タイミングが各NVFFMで異なる場合がある。これにより、以下の問題が発生するおそれがある。
【0083】
チェックポイントの作成中に停電が発生した場合、所定数のNVFFMは、Bank0でチェックポイントを復元し、残りのNVFFMは、Bank1でチェックポイントを復元する。これにより、システム全体では正しいチェックポイントを復元できないおそれがある。
【0084】
チェックポイントを復元するBankが相違することを抑止するために、ノンストップSoCは、NVFFMの1つをマスターNVFFMとして設定することができる(グローバルバンク選択モード)。マスターNVFFMは、マスタ不揮発性フリップフロップモジュールの一例であり、マスターNVFFMのバリッドビットに保持される値は、グローバル有効情報の一例である。
【0085】
各NVFFMは、マスターNVFFMのバリッドビットで示されないBankでチェックポイントを作成し、マスターNVFFMのバリッドビットで示されるBankでチェックポイントを復元する。以下では、マスターNVFFMのバリッドビットは、グローバルバリッドビットと称される。
【0086】
グローバルバリッドビットは、停電の発生時にも保持される必要があるため、NVFFに格納される。グローバルバリッドビットを使用する手法では、マスターNVFFMを除く全てのNVFFMがチェックポイントの作成を完了した後、マスターNVFFMがチェックポイントを作成する。グローバルバリッドビットの値は、グローバルバリッドビット用のNVFFのFFからMTJにストアされる。
【0087】
これにより、グローバルバンク選択モードでは、全てのNVFFMにより同じバンクでチェックポイントが復元されることを保証することができる。この結果、チェックポイントの作成中に停電が発生しても、ノンストップSoC全体で正しいチェックポイントを復元することができ、停電からの復旧時にノンストップSoCが誤動作することを抑制することができる。
【0088】
(グローバルNVDCのブロック図)
図5は、グローバルNVDCの一例を示すブロック図である。グローバルNVDCは、割り込みコントローラ、揮発性制御レジスタ(NVFFM CH1)、不揮発性制御レジスタ及びバスインタフェースを有し、全てのチャネル(CH0-CH31)を並列に制御する。バスインタフェースは、割り込みコントローラ、揮発性制御レジスタ及び不揮発性制御レジスタを内部バスIBUSに接続する。なお、不揮発性制御レジスタは、
図1では、グローバルNVDCの外であってNVDCトップモジュール内に配置されている。
【0089】
割り込みコントローラは、MRAMがハミング符号等によりエラーを検出したとき、又は、エラーを訂正したときに出力する割り込み信号を処理し、ノンストッププロセッサに割り込み要求を発行する。
【0090】
グローバルNVDCは、ソフトウェアにより設定されるアドレスマップ制御レジスタ又はIOデバイスからの外部制御信号(ストア要求、リストア要求)により揮発性制御レジスタに値が格納されたときに、複数のNVFFMのチェックポイントの作成又は復元を開始する。また、グローバルNVDCは、複数のNVFFMを並列に制御するために、揮発性制御レジスタ及び不揮発性制御レジスタに保持している情報を使用して、複数のローカルNVDCのうちの任意のローカルNVDCに制御信号を同時に出力することができる。
【0091】
グローバルNVDCで使用する制御情報等をNVFFM(CH1)に保持することで、停電が発生した場合にも、制御情報を失うことなく保持することができる。例えば、不揮発性制御レジスタには、Bankをどのように選択するかを示す情報及びチェックポイントの作成手法(
図7から
図10に示すSO手法、OSS手法、TSS手法及びMSS手法)を示す情報等が保持される。
【0092】
(ローカルNVDCのブロック図)
図6は、ローカルNVDCの一例を示すブロック図である。ローカルNVDCは、割り込みコントローラ、制御レジスタ、制御ロジック及びバスインタフェースを有する。割り込みコントローラは、対応するNVFFMからの割り込みを処理し、ノンストッププロセッサに割り込み要求を発行する。
【0093】
各ローカルNVDCは、アドレスマップ制御レジスタを介して、対応するNVFFMに対するチェックポイントの作成又は復元を開始することができる。各ローカルNVDCは、耐障害性と消費電力とのトレードオフを考慮して、対応するNVFFMに保持されるデータのECC符号化と復号化とを行うか否かを設定することができる。各ローカルNVDCは、対応するNVFFMでのチェックポイントの作成手法を
図7から
図10に示すSO手法、OSS手法、TSS手法又はMSS手法のいずれかに設定することができる。
【0094】
各ローカルNVDCには、後述するように、NVFFの制御信号の切り替え時間の制御機能、ユニットインタリーブ機能、オートストア機能等を有する。これらの機能により、各ローカルNVDCは、ソフトウェア設定により、様々な状況においてフレキシブルにNVFFMを制御することができる。
【0095】
以下、NVFFMによるチェックポイントの作成手法が説明される。第1ステージから第5ステージは、チェックポイントを作成するための前処理を示す。第6ステージから第10ステージは、各MTJにデータを格納するチェックポイントの作成動作を示す。第6ステージから第10ステージは、
図10に示すMSS手法に対応する処理である。OSS手法、TSS手法及びMSS手法では、第6ステージから第10ステージの処理の一部が省略される。
【0096】
(第1ステージ)NVFFMは、バリッドビットの値の反転値で示されるBankをチェックポイントを作成するBankとして選択する。選択されたBankは、ストア対象バンクと称される。
【0097】
(第2ステージ)NVFFMは、入力データをBank0、Bank1の両方に送信する。Bank0、Bank1の各NVFFは、典型的なFFと同様に、入力データをFFに格納する。すなわち、Bank0、Bank1の両方への入力データの書き込みが許可される。Bank0、Bank1は、ともに最新の入力データを保持するため、NVFFMは、どのBankがアクティブバンクとして選択されても、正常に動作することができる。
【0098】
(第3ステージ)NVFFMは、バリッドビットの値で示されるBankをアクティブバンクとして選択する。NVFFMは、チェックポイントの作成時にストア対象バンク以外のBank(アクティブバンク)にアクセスできる。したがって、NVFFMは、チェックポイントを作成中、ストア対象バンク以外のBankを単純なNビットのレジスタファイルとして動作し続けることができる。これにより、NVFFMは、チェックポイントの作成をサブタスクの実施のバックグラウンドで実施することができる。
【0099】
(第4ステージ)ECC符号化と復号化とを機能させる場合、NVFFMは、ストア対象バンク内のNVFFのFFの値に基づいてECCを符号化する。
【0100】
(第5ステージ)
図1のクロック制御回路は、ストア対象バンクのクロックをゲート制御する。したがって、ストア対象バンク内の各NVFFのFFの値は、チェックポイントの作成時に変更されない。
【0101】
(第6ステージ)NVFFMは、ストア対象バンク内の各NVFFに対してベリファイ動作を実施する。FFの値とMTJの値が全てのNVFFで同じ場合、NVFFMは、ストア動作を実施する必要がないため、第7ステージ及び第8ステージをスキップする。
【0102】
(第7ステージ)ストア対象バンクの各NVFFユニットは、NVFFに制御信号を出力し、FFの値をMTJに書き込むストア動作を実施する。
【0103】
(第8ステージ)ストア対象バンクの各NVFFユニットは、ストア動作後にベリファイ動作を実施する。MTJの値とFFの値が全てのNVFFで同じ場合、NVFFMは、第9ステージに進む。MTJの値とFFの値がNVFFで異なる場合、NVFFMは、ストア動作のリトライカウンタをチェックする。リトライカウンタの値が予め設定された最大値以下の場合、NVFFMは、リトライカウンタをインクリメントし、第7ステージに戻る。リトライカウンタの値が最大値を超えた場合、NVFFMは、チェックポイントの作成を中止し、ストア動作の失敗を処理するために割り込みを発生する。
【0104】
(第9ステージ)NVFFMは、バリッドビットの値を反転することで、バリッドビットを更新する。更新後のバリッドビットの値は、リストア対象バンクを示す。更新された値は、バリッドビット用のNVFFのFFに書き込まれる。もし、第9ステージまでに停電が発生した場合、バリッドビットの値は、バリッドビット用のNVFFのMTJに格納されない。しかしながら、NVFFMは、正常なチェックポイントを不揮発に保持しているBankを使用してチェックポイントの復元処理を実施することができる。
【0105】
(第10ステージ)NVFFMは、バリッドビットを含むNVFFでストア動作を実施する。第10ステージで停電が発生すると、MTJの値が不安定になる可能性がある。したがって、チェックポイントの復元時にバリッドビットが0であるか1であるかは分からない。しかしながら、この時点でBank0、Bank1の両方が正常なチェックポイントを持っているため、NVFFMは、Bank0、Bank1のどちらが有効であるか否かにかかわりなく、正しいチェックポイントの復元処理を実施できる。以上の10ステージの処理により、NVFFMは、チェックポイントの作成をバックグラウンドで実施しつつ、停電が発生した場合にも正しいチェックポイントを維持することができる。
【0106】
(チェックポイントの作成手法(SO、OSS、TSS、MSS))
図7から
図10は、チェックポイントを作成する手法をそれぞれ示すフロー図である。NVFFMは、
図7に示すSO(Store Only)手法、
図8に示すOSS(One Step Store)手法、
図9に示すTSS(Two Step Store)手法及び
図10に示すMSS(Multi Step Store)手法をサポートしている。なお、SO手法、OSS手法、TSS手法は、既存の手法である。MSS手法は、本発明者等により提案された手法である。
【0107】
図7に示すSO手法では、まず、ステップS10において、NVFFMは、フロントエンドとして上述した第1ステージから第5ステージまでを実施する。次に、ステップS20において、NVFFMは、十分に長い時間を掛けてロングストア動作を実施し、1回のロングストア動作でFFからMTJにデータを確実にストアする。次に、ステップS30において、NVFFMは、バリッドビットを反転することで更新し、チェックポイントの作成を終了する。
【0108】
MTJのストア動作時間が長いほど、データを確実にMTJに書き込むことができるが、消費電力は大きくなる。MTJのストア動作時間が短いほど、データをMTJに書き込みにくくなるが、消費電力は小さくなる。SO手法は、多数のNVFFに対して長い時間を掛けてストア動作を実施するため、他のチェックポイントの作成手法に比べて消費電力が大きい。
【0109】
図8に示すOSS手法では、まず、ステップS10において、NVFFMは、フロントエンドとして第1ステージから第5ステージまでを実施する。次に、ステップS12において、NVFFMは、ベリファイ動作を実施し、MTJの値とFFの値とが一致しているか否かを判定する。
【0110】
NVFFMは、MTJの値とFFの値とが一致している場合、ストア動作を実施せずにステップS30を実施する。NVFFMは、MTJの値とFFの値とが一致していない場合、ステップS20において、MTJの値とFFの値とが異なるNVFFのみを対象として、ロングストア動作を実施した後、ステップS30を実施する。そして、ステップS30において、NVFFMは、バリッドビットを反転することで更新し、チェックポイントの作成を終了する。OSS手法は、ストア動作を実施するNVFFの数を減らすことができるため、消費電力を低減できる。ただし、OSS手法は、ロングストア動作を実施するため、チェックポイントの作成時間が長くなる。
【0111】
図9に示すTSS手法では、まず、ステップS10において、NVFFMは、フロントエンドとして第1ステージから第5ステージまでを実施する。次に、ステップS12において、NVFFMは、ベリファイ動作を実施し、MTJの値とFFの値とが一致しているか否かを判定する。
【0112】
NVFFMは、MTJの値とFFの値とが一致している場合、ステップS14のショートストア動作及びステップS20のロングストア動作を実施せずにステップS30を実施する。NVFFMは、MTJの値とFFの値とが一致していない場合、ステップS14において、MTJの値とFFの値とが異なるNVFFのみを対象として、ショートストア動作を実施した後、ステップS16を実施する。ショートストア動作は、ロングストア動作に比べてストア時間が短い。
【0113】
ステップS16において、NVFFMは、ベリファイ動作を実施し、MTJの値とFFの値とが一致しているか否かを判定する。NVFFMは、MTJの値とFFの値とが一致している場合、ステップS20のロングストア動作を実施せずにステップS30を実施する。NVFFMは、MTJの値とFFの値とが一致していない場合、ステップS20において、MTJの値とFFの値とが異なるNVFFのみを対象として、ロングストア動作を実施した後、ステップS30を実施する。そして、ステップS30において、NVFFMは、バリッドビットを反転することで更新し、チェックポイントの作成を終了する。
【0114】
ほとんどのNVFFでは、ステップS14のショートストア動作によりFFに保持されているデータをMTJに書き込むことができる。このため、TSS手法は、まずショートストア動作を実施することで、ストア動作に掛かる時間を短縮することができ、消費電力を削減することができる。
【0115】
図10に示すMSS手法では、まず、ステップS10において、NVFFMは、フロントエンドとして第1ステージから第5ステージまでを実施する。次に、ステップS12において、NVFFMは、ベリファイ動作を実施し、MTJの値とFFの値とが一致しているか否かを判定する。
【0116】
NVFFMは、MTJの値とFFの値とが一致している場合、ステップS14のショートストア動作及びステップS20のロングストア動作を実施せずにステップS30を実施する。NVFFMは、MTJの値とFFの値とが一致していない場合、ステップS14において、MTJの値とFFの値とが異なるNVFFのみを対象として、ショートストア動作を実施した後、ステップS16を実施する。
【0117】
ステップS16において、NVFFMは、ベリファイ動作を実施し、MTJの値とFFの値とが一致しているか否かを判定する。NVFFMは、MTJの値とFFの値とが一致している場合、ステップS20のロングストア動作を実施せずにステップS30を実施する。NVFFMは、MTJの値とFFの値とが一致していない場合、ステップS17を実施する。
【0118】
ステップS17において、NVFFMは、ロングストア動作のリトライ回数が予め設定された最大値max以下であるか否かを判定する。NVFFMは、リトライ回数が最大値max以下の場合、ステップS18においてリトライカウンタをインクリメントし、ステップS20を実施する。NVFFMは、リトライ回数が最大値maxを超えた場合、ステップS19において、ストア動作の失敗を処理するためにアボートし、割り込みを発生してMSS手法を強制終了する。
【0119】
ステップS20において、MTJの値とFFの値とが異なるNVFFのみを対象として、ロングストア動作を実施した後、ステップS16に戻る。ステップS30において、NVFFMは、バリッドビットを反転することで更新し、チェックポイントの作成を終了する。
【0120】
MSS手法は、全てのNVFFでFFの値をMTJに格納するまで、ベリファイ動作とストア動作とを繰り返すため耐障害性を高めることができる。また、ベリファイ回数がリトライ回数を超えた場合に割り込みを発生させることで、チェックポイントが作成できなかったことを上位のシステム等に通知することができる。
【0121】
(NVFFのストア動作時間の切り替え)
NVFFでは、ストア動作を実施しているストア動作時間(MTJに電流を流す時間)とMTJに正しいデータが書き込まれる確率との間に相関がある。例えば、ストア動作時間内にデータをMTJに書き込めない場合、チェックポイントを作成することができない。また、DVFS(Dynamic Voltage and Frequency Scaling)などの動作電圧と動作周波数とを動的に変化させる制御手法を使用すると、クロック周波数の変化によりストア動作時間が変化し、データをMTJに書き込めなくなる場合がある。
【0122】
このような状況に対処するため、グローバルNVDC及びローカルNVDCは、チェックポイントの作成時間又は復元時間と、MTJへのストア又はリストアが成功する確率とのトレードオフを考慮して、ストア動作時間のクロックサイクル数を制御することができる。
【0123】
(ユニットインタリーブ機能)
チェックポイントの作成又は復元を最も早くする方法は、ストア動作又は復元動作を複数のNVFFで同時に実施することである。ただし、ストア動作又は復元動作を同時に実施するNVFFの数が多いほど、ピーク電流が大きくなる。ピーク電流を低減するために、NVFFMの各Bankは、
図3に示したように複数のNVFFを含むNVFFユニットに分割され、NVFFユニット毎にストア動作を実施することができる。
【0124】
そして、NVFFMは、1つのNVFFユニットのストア動作の開始から次のNVFFユニットのストア動作の開始までのクロックサイクル数Csを変更可能なユニットインタリーブ機能を有する。同様に、NVFFMは、1つのNVFFユニットのリストア動作の開始から次のNVFFユニットのリストア動作の開始までのクロックサイクル数Crを変更可能なユニットインタリーブ機能を有する。ユニットインタリーブ機能では、ストア動作を開始するタイミングを所定数の不揮発性フリップフロップを含むNVFFユニット毎にずらすことができ、ストア動作時間又はリストア動作時間とピーク電流とを変えることができる。
【0125】
クロックサイクル数Cs又はCrを増やすほど、チェックポイントの作成時間又は復元時間は増加するが、ストア動作又はリストア動作を同時に実施するNVFFの最大数が減るため、ピーク電流は削減される。クロックサイクル数Cs又はCrを減らすほど、チェックポイントの作成時間又は復元時間は減少するが、ストア動作又はリストア動作を同時に実施するNVFFの最大数が増えるため、ピーク電流は増加される。
【0126】
グローバルNVDC及びローカルNVDCには、チェックポイントの作成時間又は復元時間とピーク電流とのトレードオフを考慮して、ユニットインタリーブ機能によってクロックサイクル数Cs、Crを設定することができる。これにより、チェックポイントの作成時間又は復元時間とピーク電流とを適切に設定することができる。
【0127】
(オートストア機能)
アドレスマップ制御レジスタを使用してローカルNVDC又はグローバルNVDCにチェックポイントの作成を開始させる場合、チェックポイントの作成毎にソフトウェアが介在される。このため、チェックポイントが頻繁に作成されるとノンストッププロセッサの処理性能が低下する場合がある。
【0128】
チェックポイントの作成による性能劣化を避けるために、ローカルNVDC及びグローバルNVDCは、オートストア機能を有する。オートストア機能は、ハードウェアのみでチェックポイントを自動で定期的に作成するため、ノンストッププロセッサの処理性能が低下することはない。例えば、オートストア機能では、専用のハードウェアタイマのタイマ値が予め設定された値に到達する毎にチェックポイントが作成される。
【0129】
(ノンストップSoCの実装)
図11は、ノンストップSoCのチップレイアウトの概要を示す図である。ノンストップSoCは、SONY社から標準セルとして提供されているNVFFとSONY社の40nmプロセスのMRAMとを使用して設計された。NVFFは、
図11に網掛けで示す領域に配置されている。MRAMは
図11の右下部分に配置され、十分な電力を供給するために高密度に配線されている。
【0130】
ノンストップSoCは、多数のNVFF(約160k個)を使用するため、いくつかのNVFFは動作しない可能性がある。しかしながら、NVFFMとNVDCに、上述した誤り訂正機能と誤り検出機能とを搭載することで、ノンストップSoCは、動作しないNVFFを含む場合にも正常に動作することができる。この結果、ノンストップSoCの歩留まりを向上することができ、製造コストを低減することができる。
【0131】
(ノンストップSoCの評価)
本発明者等は、Synopsys VCSシミュレータを使用して、RTLシミュレーションによりノンストップSoCの評価を実施した。この際、全てのリセット信号が有効に設定され、全てのNVFFに不定値が割り当てられるように、電源オフ時の状態をエミュレートした。
【0132】
評価に使用したパラメータは、表1から表3に示される。
【0133】
【0134】
【0135】
【0136】
表3に示すパスレート(PRL、PRS、PRVS)は、NVFFにおいて、FFの値がMTJに正しく書き込まれる確率を示す。なお、VR-NVFFを用いて設計された実際のチップに関する非特許文献3では、ストア動作時間とパスレートとの関係が評価されている。
【0137】
表3中のロングストア動作時間(TL)、ショートストア動作時間(TS)、ベリーショート動作時間(TVS)は、対応するパスレートを考慮して決定した。ロングストア動作時間(TL)は、ロングストア動作のパスレート(PRL)が約1.00になるのに十分な時間である140nsに設定した。ショートストア動作時間(TS)は、ショートストア動作のパスレート(PRS)が平均で約0.95であるという条件下で40nsに設定した。ベリーショート動作時間(TVS)は、ベリーショートストア動作のパスレート(PRVS)が平均で約0.65であるという条件下で、20nsに設定した。
【0138】
以下では、最初のストア動作時間がTVSであるTSS手法によるチェックポイントの作成は、TSS-VSチェックポイントと称される。最初のストア動作時間がTSであるTSS手法によるチェックポイントの作成は、TSS-Sチェックポイントと称される。最初のストア動作時間がTVSであるMSS手法によるチェックポイントの作成は、MSS-VSチェックポイントと称される。最初のストア動作時間がTSであるMSS手法によるチェックポイントの作成は、MSS-Sチェックポイントと称される。
【0139】
ベリファイ動作は、MTJの値をベリファイ回路に戻すリストア動作であるため、表3のベリファイ動作時間は、リストア動作時間と同じであると仮定し、表3のベリファイエネルギーは、リストアエネルギーと同じであると仮定した。
【0140】
(チェックポイントの作成時間及び復元時間とピーク電流とのトレードオフ)
図12は、チェックポイントの作成開始間隔及び復元開始間隔とチェックポイントの作成時間及び復元時間との関係の例を示す図である。同時に動作するNVFFの数は、ピーク電流とほぼ比例する。
【0141】
図12では、ユニットインタリーブ機能を使用して、MSS-Sチェックポイントの作成開始間隔と作成時間との関係、及び、チェックポイントの復元開始間隔と復元時間との関係を計算した。上述したように、ユニットインタリーブ機能では、チェックポイントの作成動作と復元動作のそれぞれにおいて、1つのNVFFユニットのストア動作の開始から次のNVFFユニットのストア動作の開始までのクロックサイクル数が変更可能である。
【0142】
(チェックポイントの作成)
例えば、MSS-Sチェックポイントの作成の評価では、
図10のステップS14の最初のショートストア動作時間をT
S(40ns)に設定し、ステップS20の2番目以降のロングストア動作時間をT
L(140ns)に設定した。
【0143】
チェックポイントの作成では、作成開始間隔が大きくなるにしたがい、チェックポイントの作成時間は増加するが(比例関係)、同時に動作するNVFFの数(以下、同時動作数)は減少する(反比例関係)。作成開始間隔が14クロックサイクル以下の範囲では、作成開始間隔が増加すると、同時動作数は急激に減少する。
【0144】
作成開始間隔が15クロックサイクル以上で42クロックサイクル以下の範囲では、作成開始間隔が増加するにつれて、同時動作数が少しずつ減少する。作成開始間隔が43クロックサイクル以上の範囲では、同時動作数は一定になる。例えば、同時動作数を最小化した場合のチェックポイントの作成時間は27.48μ秒であった。
【0145】
作成開始間隔が0の場合、作成時間は1.86μ秒であった。作成開始間隔が0の場合、全てのNVFFユニットがチェックポイントの作成を同時に開始するため、チェックポイントの作成時間は、単一のNVFFユニットのチェックポイントの作成時間と等しくなる。
【0146】
全てのチェックポイントが作成されるまでの作成時間及び全てのチェックポイントが復元されるまでの復元時間は、作成開始間隔及び復元開始間隔が大きくなるにしたがい増加する。したがって、チェックポイントの作成と復元では、データが同時に格納されるNVFFが多いほど、動作完了までの時間が短くなり、ピーク電流が大きくなる。
【0147】
ノンストッププロセッサは、さまざまなアプリケーションをサポートする必要がある。このため、ピーク電流を増やして動作完了までの時間を短くしたい場合と、動作完了までの時間を長くしてピーク電流を減らしたい場合とを考慮する必要がある。ノンストップSoCは、ユニットインタリーブ機能によりチェックポイントの作成と復元に掛かる時間とピーク電流とのトレードオフを制御することができる。
【0148】
(チェックポイントの復元)
チェックポイントの復元の評価では、復元動作時間をTR(50ns)に設定した。チェックポイントの復元では、復元開始間隔が大きくなるにしたがい、チェックポイントの復元時間は増加するが(比例関係)、NVFFの同時動作数は減少する(反比例関係)。
【0149】
復元開始間隔が5クロックサイクル以下の範囲では、復元開始間隔が増加すると、同時動作数は急激に減少する。復元開始間隔が6クロックサイクル以上の範囲では、復元開始間隔が増加しても、同時動作数は一定になる。例えば、同時動作数を最小化した場合のチェックポイントの復元時間は4.99μ秒であった。
【0150】
復元開始間隔が0の場合、復元時間は1.94μ秒であった。復元開始間隔が0の場合、全てのユニットがチェックポイントの復元を同時に開始するため、チェックポイントの復元時間は、単一のNVFFユニットのチェックポイントの復元時間と等しくなる。
【0151】
(ベンチマークの実施結果)
図13から
図16は、定期的にチェックポイントを作成するベンチマークの実施結果の例を示す図である。本発明者等は、チェックポイントを定期的に作成する複数種のベンチマークを実施し、各ベンチマークのIPC(Instruction Per Clock Cycle)を測定することで、チェックポイントの作成時間を評価した。
【0152】
各図において、符号W/O ccは、ストアドビットを見ずにMRAMにライトバックする、データの一貫性のチェックなしでの評価を示す。符号W/ ccは、チェックポイントを作成済みでストアドビットがセットされたデータのみをMRAMにライトバックする、データの一貫性のチェックありでの評価を示す。また、baselineは、基準となる評価結果を示す。
【0153】
図13は、bitcountベンチマークによるチェックポイントの作成周期とIPCとの関係を示す図である。
図14は、qsortベンチマークによるチェックポイントの作成周期とIPCとの関係を示す図である。
【0154】
データの一貫性チェックなしの評価(W/O cc)では、チェックポイントの作成周期とチェックポイントの作成手法とに関係なく、各ベンチマークでのIPCがベースラインのIPCと同じになることが示される。すなわち、IPCは、チェックポイントの作成周期を短くしても変化しない。
【0155】
データの一貫性チェックありの評価(W/ cc)では、ライトバッファからMRAMへの書き込みに条件が付与されたことにより、qsortベンチマークではIPCにぶれが発生している。一方、bitcountベンチマークでは、全てのチェックポイントの作成周期と全てのチェックポイント手法のIPCがベースラインのIPCと同じになることが示される。
【0156】
IPCにぶれが発生する要因として、以下が考えられる。例えば、DCacheがバス権を獲得する頻度が低下した場合、ICacheがバス権を獲得する頻度が相対的に増加するため、IPCが増加する。また、ライトバッファが一杯になる頻度が増加する場合、ノンストッププロセッサがストールする頻度が増加するため、IPCが低下する。
【0157】
図15は、bitcountベンチマークによるチェックポイントの作成周期とエネルギー消費との関係を示す図である。
図16は、qsortベンチマークによるチェックポイントの作成周期とエネルギー消費との関係を示す図である。
【0158】
bitcountベンチマークでは、各チェックポイント手法において、データの一貫性チェックなしの評価(W/O cc)とデータの一貫性チェックありの評価(W/ cc)との間で優位差はない。qsortベンチマークでは、チェックポイントの作成周期が1msの場合、データの一貫性チェックありの評価(W/ cc)が、データの一貫性チェックなしの評価(W/O cc)に比べてエネルギー消費が大きい。他の作成周期では、データの一貫性チェックなしの評価(W/O cc)とデータの一貫性チェックありの評価(W/ cc)との間で優位差はない。
【0159】
(チェックポイントの復元のエネルギー消費量)
チェックポイントの復元では、バリッドビットがリストアされ、チェックポイントが有効なBankが選択され、NVFFのリストア動作が実施される。したがって、チェックポイントの復元のエネルギー消費量ERは、復元動作を実施するNVFFの総数NRとリストアエネルギーとを使用して、式(1)により計算される。式(1)において、符号*は乗算を示す。
【0160】
E
R=N
R*リストアエネルギー …(1)
式(1)の各パラメータと、式(1)により計算したチェックポイントの復元時の総エネルギーErを表4に示す。
図1のノンストップSoCでは、チェックポイントの復元時の総エネルギーErは、約180nJである。
【0161】
【0162】
(実施形態の効果)
1つのビット値をBank0、Bank1で交互に保持し、チェックポイントをBank0、Bank1で交互に作成することで、一方のBankでチェックポイントを作成中に停電が発生しても、他方のBankによりチェックポイントを失うことなく保持することができる。
【0163】
NVFFMは、ローカルNVDC又はグローバルNVDCからの指示に基づいて、Bank0、Bank1にチェックポイントを交互に作成する。一方のBankがチェックポイントを作成している間、ノンストッププロセッサは、他方のBankを単純なレジスタファイルとして使用することができる。このため、システムSYSの処理に影響を与えることなく、システムSYSの処理のバックグラウンドでチェックポイントを作成することができる。この結果、リアルタイム性と耐障害性の両方を満たす処理制御装置及びプロセッサを提供することができる。
【0164】
有効なチェックポイントを保持しているBankを示すバリッドビットをNVFFMに設けることで、NVFFMは、バリッドビットを参照し、バリッドビットの値で示されるBankでチェックポイントを復元することができる。
【0165】
複数のNVFFMの1つであるマスターNVFFMのバリッドビットをグローバルバリッドビットとして使用して全てのNVFFMのチェックポイントを作成し復元することで、全てのNVFFMにより同じBankでチェックポイントが復元されることを保証することができる。この結果、チェックポイントの作成中に停電が発生しても、ノンストップSoC全体で正しいチェックポイントを復元することができ、停電からの復旧時にノンストップSoCが誤動作することを抑制することができる。
【0166】
ユニットインタリーブ機能によって、NVFFユニットのストア動作の開始間隔であるクロックサイクル数CsとNVFFユニットのストア動作の開始間隔であるクロックサイクル数Crとを設定することができる。これにより、チェックポイントの作成時間又は復元時間とピーク電流とのトレードオフを考慮して、チェックポイントの作成時間又は復元時間とピーク電流とを適切に設定することができる。
【0167】
チェックポイントの作成が完了するまで、DCacheに保持されているデータのMRAMへの書き込みを抑止することで、停電が発生した場合にも、MRAMとDCacheとの間でデータの一貫性を維持することができる。
【0168】
ライトバッファに所定量のライトバックデータが保持されたことに基づいてチェックポイントを作成することで、チェックポイントの作成頻度を下げることができ、ノンストッププロセッサの消費電力を低減することができる。また、チェックポイントが作成されたライトバックデータをMRAMにまとめてライトバックすることで、ノンストッププロセッサの消費電力を低減することができる。
【0169】
ノンストッププロセッサに含まれるパイプライン、GPR、FPR、ICache、DCache、ITLB、DTLB及び制御レジスタ等の全ての回路ブロックに含まれる全てのフリップフロップが、チェックポイントの作成と復元とが可能なNVFFにより形成される。また、各NVFFのデータは、一つのBank0、Bank1に交互に保持される。これにより、停電が発生した場合にもノンストッププロセッサに保持される全ての情報を不揮発に保持することができる。
【0170】
ノンストップSoCが実行するソフトウェアによりサブタスクの実行に合わせてチェックポイントを作成することで、プログラマの意図する時間にチェックポイントを作成することができる。
【0171】
チェックポイントの作成又は復元を実施しているBankは、クロックゲーティングにより入力データの受け付けが禁止され、Bankへのデータの書き込みが禁止される。これにより、チェックポイントの作成又は復元中のNVFFユニットに保持されているデータが入力データにより書き換わることを抑止することができる。
【0172】
以上、各実施形態に基づき本発明の説明を行ってきたが、上記実施形態に示した要件に本発明が限定されるものではない。これらの点に関しては、本発明の主旨をそこなわない範囲で変更することができ、その応用形態に応じて適切に定めることができる。
【符号の説明】
【0173】
Bank0、Bank1 バンク
DCache データキャッシュ
FF フリップフロップ
IBUS 内部バス
ICache 命令キャッシュ
NVDC Non-Volatile Device Controller
NVFFM Non-Volatile Flip-Flop Module
PLSCNT パルスカウンタレジスタ
PWMIN PWM入力
PWMOUT PWM出力
SYS システム