topへ
メモリ技術

ポーリング処理の撤廃:FRAM切り替えによるミドルウェア設計の簡素化

EEPROMの書き込み待ちによるポーリング処理は、組み込みソフトウェアの設計を複雑化させます。高速に書き込めるFRAM(FeRAM、強誘電体メモリ)へ切り替えて無駄な待機ループを撤廃し、ミドルウェアを簡素化してシステムのリアルタイム性能を高める手法を詳しく解説します。

不揮発性メモリアクセスとポーリング処理

組み込みシステムにおける外部デバイスとの通信では、ハードウェアの処理完了をソフトウェア側で監視するポーリング処理が多用されます。とくに不揮発性メモリへのデータ書き込みは、CPUの動作クロックに対して桁違いに遅い物理的な現象を伴うため、この待ち時間をミドルウェアでどう隠蔽するかがシステム全体の性能を左右します。

ポーリング処理の基本的な仕組み

ポーリングとは、対象デバイスの状態レジスタや特定のハードウェアピンの電圧を、CPUがループ処理によって定期的に読み取り、完了フラグの成立といった状態変化を待つ制御方式です。割り込み回路の設定を必要とせず数行のコードで実装できるため、OSを持たない単純な環境では好んで使用されます。しかし、フラグが成立するまでの間、CPUは実質的に無駄なループ待機を続けることになり、並行して動くべき他の重要なタスクの実行機会を長期間奪ってしまうというシステム設計上の致命的な欠点を持っています。

組み込みシステムでポーリング処理が使われる場面

A/Dコンバータの変換完了待ちや、通信周辺回路の送信バッファ空き待ちなど、数マイクロ秒で完了するハードウェア処理であれば、ポーリングによる待機は許容範囲となります。しかし、不揮発性メモリへのデータ書き込みや、外部ストレージのブロック消去など、ミリ秒単位の時間を要する処理に対して単純な待機ループを適用すると、システムに求められる厳密な応答性が完全に崩壊します。そのため、タイマー割り込みと組み合わせて定期的に確認を行うような、複雑な状態遷移を伴う設計が現場では強く求められます。

不揮発性メモリアクセスとポーリング処理の関係

SRAMやDRAMなどの揮発性メモリは、バスのクロックサイクルに同期して即座にデータの読み書きが完了します。しかし、データを永続化する不揮発性メモリは、内部で高電圧を生成し、絶縁膜を通して電子を注入・引き抜くといった物理的な状態遷移を伴います。この物理的な制約により、データの通信転送が終わった後も、メモリチップ内部ではデータ確定のための自己完結した処理が数ミリ秒にわたって継続します。この間、外部からのアクセスは一切受け付けられないため、ソフトウェア側からの定期的な完了確認が必須となります。

EEPROMの書き込みサイクルによる書き込み待ち

従来の組み込み機器で設定値やログの保存に多用されてきたEEPROMは、書き込み処理においてシステム全体に非常に重い制約を課します。データのバス転送が完了したとしても、チップ内部で書き込み完了処理が終了するまで、ミドルウェア側で確実な完了待ちを長期間にわたって行わなければなりません。

EEPROMで発生する書き込みサイクル

EEPROMに対して1バイト、あるいはページ単位のデータを送信し終えると、チップ内部で自己完結型の内部書き込み動作が自動起動します。この処理には一般的に約5ミリ秒から最大10ミリ秒という非常に長い時間を要します。100MHzで動作するマイコンにとって、5ミリ秒は50万クロックサイクルに相当する膨大な待機時間となります。この間、EEPROM内部の制御回路は完全に応答不可状態となり、新たなメモリアドレスの指定やデータの読み込み要求を一切拒絶して処理をブロックし続けます。

ACKポーリングによる書き込み完了確認

I2C通信方式のEEPROMでは、この5ミリ秒の応答不可状態を検知するために確認通信の手法を用います。処理中のEEPROMに対し、制御側マイコンから対象機器のアドレスを送信しても、メモリ側は正常応答を返さず通信拒否状態となります。ミドルウェアは、一定の時間を空けながら空の書き込み命令を送信し続け、EEPROMから正常応答が返ってきた瞬間を書き込み完了と判定します。このバス通信を伴うループ処理が、CPUの演算能力と通信線の帯域を無駄に占有し続けることになります。

書き込み待ち処理がミドルウェア設計を複雑にする

リアルタイムOS環境下において、5ミリ秒の確認通信を単一タスク内で連続待機させると、システム全体の処理のばらつきに直結します。そのため、タイマーを用いてタスクを一定時間の休止状態にし、タスクを意図的に切り替えて他の処理にCPUを譲る設計が必須となります。さらに、待機中に他のタスクが通信線を使用できるよう、厳密な通信の排他制御を組み込む必要があり、メモリアクセスを行うだけのミドルウェアが巨大で複雑な状態管理プログラムへと肥大化してしまうのが開発現場での大きな課題となっています。

FRAMのバス速度書き込みと消去処理不要の構造

こうしたEEPROMが持つ物理的な制約に起因するミドルウェアの肥大化と複雑化を根本から解決するのが、強誘電体を利用したFRAMです。データを記憶する物理的な仕組みそのものが従来のメモリと全く異なるため、数ミリ秒の待機時間という概念がハードウェアレベルで完全に消滅します。

FRAMはバス速度で書き込みが完了する

FRAMは、強誘電体膜の極性反転というナノ秒単位で完了する非常に高速な物理現象を利用してデータを記憶します。そのため、標準的な通信規格であるI2Cや高速なSPIといった直列通信線を通じてマイコンからデータを転送した瞬間、その通信波形の最終タイミングに完全に同期してメモリ内部へのデータ書き込みが終了しています。データ転送後の不要な追加待機時間は一切発生せず、揮発性メモリであるSRAMと全く同じプログラミング感覚で、連続した記憶領域に対して次々とデータを書き込んでいくことが可能です。

消去処理を必要としないメモリ構造

一般的な大容量Flashメモリは、データを書き込む前に一定の区画ごとに一括消去を行う処理が必須であり、これに数十ミリ秒から数百ミリ秒もの時間を要します。この消去待ち時間もまた、ミドルウェア側に複雑な裏側での並行処理や定期的な完了確認を強要します。しかしFRAMは、記憶素子の状態を直接変化させて直接上書きができるため、事前の消去命令の発行やその完了待ちが一切不要です。これにより、マイコン側から見たデータの更新手順がSRAM同等レベルにまで劇的に簡略化されます。

ポーリング処理を必要としないメモリアクセス

内部書き込みの遅延がなく、消去処理も不要であるため、FRAMに対するドライバ設計からは「完了応答の待機」や「状態レジスタの監視」といった処理中確認のループがソースコード上から完全に消滅します。マイコンの内蔵通信回路によるハードウェア的なデータ転送が完了したことを示す割り込みが一度入った時点で、データの不揮発化は確実に行われています。長時間の待ち時間に起因する異常検出や時間切れ処理も不要となり、ドライバの役割は純粋なデータの送受信制御のみへと極めてシンプルに純化されます。

FRAMによるポーリング処理の撤廃とミドルウェア設計の簡素化

ハードウェア側でデータ書き込みの遅延がゼロになることは、ソフトウェアの基本構造全体に測り知れない多大な恩恵をもたらします。定期的な確認処理の撤廃は、単なるドライバのソースコードの行数削減にとどまらず、OSのタスク分割手法やシステム全体のリアルタイム性能の大幅な向上に直結します。

ポーリング処理を削減できる理由

これまでEEPROMドライバの内部に存在していた「送信完了割り込み」から「タイマー起動」、そして「正常応答の確認」から「再送信」に至る複雑な状態遷移がすべて不要になります。FRAMを採用すれば、マイコンが備える直接メモリ転送機能を用いて周辺機器へデータを流し込み、その転送完了の割り込みを受けた直後に、別の重要なタスクへ即座に移行できます。CPUが通信経路上で完了応答を監視するためにわざわざ介入する必要がなくなるため、システムにかかる無駄な負荷がハードウェアレベルで極小化されます。

ミドルウェア設計がシンプルになるポイント

ソフトウェアの中間層から「書き込み処理中」という状態を管理するフラグや変数が完全に不要になります。従来のメモリを扱うシステムでは、書き込み処理中に予期せぬ電源断やリセットが発生した場合に備え、データ不整合を防ぐための複雑な復旧処理の作り込みが必要でした。FRAMではアクセス用の関数を呼び出して処理を抜けた時点でデータの不揮発化が完了しているため、プログラマは「常にデータが確定している」ことを前提とした直列的なプログラムを書くことができ、保守性とテストの容易性が飛躍的に向上します。

リアルタイムシステムにおけるFRAM採用のメリット

モーター制御や産業用ネットワークなど、数百マイクロ秒単位の厳密な制御周期が求められるシステムでは、各処理タスクにかかる最悪実行時間を設計段階で正確に見積もる必要があります。旧来のメモリがもつ確認通信による不定な待ち時間や、OSのタスク切り替えの負荷は、この時間の予測を極めて困難なものにします。FRAMを採用してメモリ起因の遅延と確認処理をシステムから完全に排除することで、確定的な実行時間がハードウェア的に保証され、高度なリアルタイムシステムにおけるデータ保存処理を極めて安全に実現できます。

RAMXEEDが提供するFeRAM製品一覧
https://www.ramxeed.com/jp/products/feram-products

この記事をシェア