人間の記憶と電子記憶は多くの点で似ていますが、一見するとそれほど明白ではないと思われる違いもあります。
人間の記憶とメモリ チップの記憶の主な違いは、時間の経過による記憶の消耗の仕方です。人間は記憶力を鍛えると、記憶力が向上します。記憶力トレーニングは、記憶力の低下に悩む人や、記憶力を改善したい人にとって一般的な方法です。しかし、電子の世界では、メモリ チップの読み取りと書き込みには限界があり、使用頻度を減らす (または効率を上げる) ことは実際には良いことです。
メモリ管理を賢く行うことは、電子メモリの寿命と整合性に大きな影響を与える可能性があります。さらに、より高度なアプリケーション用のメモリ コントローラは、エラーのない状態を維持しながらメモリを調整および管理するのに役立ちます。
この記事では、さまざまなアプリケーションでメモリ寿命を延ばすための一般的な戦略について詳しく説明し、専用メモリ コントローラーがもたらす利点をまとめます。
電子メモリの背景
電子(または半導体)メモリは1960年代初頭から存在しています。最初はBJT型トランジスタを含む磁気コア メモリから始まりましたが、注目すべきことに、MOS型トランジスタの方が安価で消費電力が少ないため、すぐにMOS型トランジスタに置き換えられました。現在でも、MOSトランジスタは、SRAM (静的) やDRAM (動的) などのほとんどのランダム アクセス メモリ (RAM) ベースのアプリケーション用のメモリ集積回路 (IC) の基盤として機能し続けています。
同じ頃、読み取り専用メモリ (ROM) も発明されました。ROMは、電源が切断された場合でもMOSFETのフローティング ゲートを使用して情報を保存できることが認識されたときに発見されました。ここで注目すべきは、ROMにはROM、EPROM、EEPROMの3つのバリエーションがあり、後者は組み込みシステムで最も一般的に使用されているということです。
「フラッシュ」から20年後、新しい種類のメモリが発明された。それは、東芝の社員である舛岡富士雄氏による、はるかに高速なメモリ消去技術の実験の結果として生まれた「フラッシュメモリ」である。もう少し具体的に言うと、この新しい技術は、共通ノードを共有するメモリブロック全体に電圧を印加するというもので、増岡氏の同僚の一人は、それがカメラのフラッシュの仕組みを思い起こしたという。この技術はROMの基礎に基づいていますが、フラッシュには多くの利点があり、それ以来、サムドライブ、カメラ、電話、その他のほとんどの組み込みシステムなどのROMベースのアプリケーションで主流となっています。フラッシュ メモリの多くの利点の中には、より安価で小さなフットプリントで、より高速で、より大規模なブロック単位の機能 (EEPROMのバイト単位の機能とは対照的) などがあります。比較については 図1 を参照してください。
図1: 技術と物理的サイズの観点から見たEEPROMとフラッシュ (出典: Microchip Technology)
ほとんどの組み込みアプリケーションは、プログラムと長期データ保存用のROMと、一時的または即時のデータ使用用のRAMの両方の種類のメモリに依存しています。MCUの内部か外部かを問わず、これらのメモリ デバイスの寿命を延ばすための手法は数多くあります。探検してみましょう。
組み込みアプリケーションでメモリを賢く使用するためのヒントとコツ
デザイナーがメモリをより効率的に使用するためにできることはたくさんあります。多くの場合、それは単によりスマートなプログラミングの問題です。これらの機会のほとんどは組み込み領域内にあるため、低レベルのMCU設計に焦点を当てましょう。
ルール1: データの書き込みや保存に関しては、許可されている場合は必ずROMではなくRAMを使用してください。RAMはより高速であり (MCUの内部と外部の両方で、パラレル インターフェイスのため)、ROMのように時間の経過とともに消耗することがなく、通常はファームウェア サポートがそれほど複雑ではありません (より高度な組み込みアプリケーション用の外部メモリ バスを除く)。電源サイクル間で保存する必要のないデータを扱っている場合は、ROMメモリ内に保存する必要はありません。ROMデバイスは理論上は読み取り耐久性が無限ですが、書き込みと消去のサイクルによって消耗します。
特に、プログラムの後半でホストまたは上位レベルのエンティティからそれらの場所に書き込まれる場合は、内部または外部のROMデバイスへの定期的な書き込みを含む起動または初期化手順は避けてください。ROMコンポーネントの書き込みと読み取りは、MCUの起動フェーズでは非常に一般的であり、書き込み (および消去またはクリア機能) は、電源サイクル間での将来の使用のために保存する必要がある重要な情報に制限するのが最善です。
ROMとの間の読み取り/書き込み操作にチェックサムを追加します。これは必ずしもROMデバイスの健全性や寿命を改善するわけではありませんが、エラーや破損したメモリ セクションを最小限に抑えるのに役立ちます。通常、初期開発時には多少の余分な労力が必要になりますが、特にデータがMCUメイン コードの実行に関連している場合は、信頼性の面で得られる見返りは長期的に見れば価値があります。
ROMコンポーネントまたはメモリ ブロックの使用期間を延ばすためのもう1つの優れた手法は、異なるセクターまたはブロックを使用することです。ルーチンで比較的少量のデータを頻繁にROMに書き換える必要がある場合は、指定された「インデックス セルまたはブロック」にインデックスを付けて、同じ場所が消耗しないように新しいセルに保存します (「ウェア レベリング」の簡易版)。これはメモリ コントローラが頻繁に提供するものです。図2 それがどのように機能するかを視覚的に示します。
図2: ウェアレベリングの視覚的なデモンストレーション (出典: 超越情報)
フラッシュなどのROMから読み取る場合は、同じセルからの過度または頻繁な読み取り操作を避けてください。これにより、「読み取り妨害」と呼ばれる現象が発生する可能性があります。これは、同じセルから何度も読み取ると、近くのセルに影響を与え、時間の経過とともにセルが変化する可能性があることを意味します。多くのメモリ コントローラには、監視とセル管理によってこれを処理するための保護機能が備わっていますが、これらのプログラムが常にこれを検出できるとは限りません。
メモリコントローラは大きなメリットをもたらす
前述したように、メモリ コントローラはメモリ マップの管理と維持を助け、早期の消耗を防ぎます。これらのメモリ コントローラは、さまざまなメモリ バス インターフェイスをサポートするためにMCUに一般的に統合されている外部メモリ コントローラ (EMC) と混同しないでください。これらは設計エンジニアにとって非常に役立ち、RAM、ROM、またはその両方の組み合わせに対してさまざまなメモリ インターフェイスを提供できますが、ここで説明されているような利点は提供しません。代わりに、データとメモリの管理に特化したスタンドアロン メモリ コントローラについて見ていきます。その最も一般的な用途は、NANDフラッシュ ベースのメモリです。
フラッシュ メモリ コントローラの恩恵を受けられるアプリケーションは多数あります。たとえば、GPSデバイス、ビデオ キャプチャ デバイス、USBサム ドライブ、SDカード、カメラ、スマートフォン、セキュリティまたは認証デバイス、ワイヤレスLANデバイス、MP3またはその他のオーディオ再生デバイスなどです。つまり、基本的にファイルベースのストレージが含まれ、書き込み頻度が高いものであれば何でも対象となります。
通常、フラッシュ コントローラは、フラッシュ メモリとのインターフェイス用に特別に構成されたプログラム可能なコンポーネント (ファームウェア イメージが標準装備されている場合もあります) になります。CypressのCY7C680XXファミリのデバイス (NX2LP-Flexとも呼ばれます) は、プログラム可能なインターフェイス、追加の構成可能なGPIO、大容量ストレージ アプリケーション向けのUSBサポート、エラー訂正、割り込み管理、ウェア レベリングなどの柔軟性を提供するUSB NANDフラッシュ コントローラです。これらは、USBとNAND型フラッシュの仲介役として機能し、読み取り、書き込み、消去のすべての操作を管理しながら、同時に上記の利点も提供します。見る 図3 NANDフラッシュを利用したGPSデバイスの例。
図3: CypressのNANDフラッシュとNX2LP-Flexメモリコントローラを搭載したGPSユニット(出典: サイプレスセミコンダクタ)
MicronのMTFC8GAMALGT-AIT e.MMCメモリ + コントローラ チップは、マルチメディア カード (MMC) アプリケーション向けのオンボード コントローラと組み合わせたNANDフラッシュ メモリです。コントローラは、MMC通信プロトコルを管理するとともに、ブロック割り当てやウェアレベリングなどのブロック管理機能も処理し、これらすべてをホストに知られることなくバックグラウンドで実行します。また、欠陥およびエラー管理操作も組み込まれており、障害のあるメモリ ブロックを識別してスペアと交換するとともに、エラー訂正コード アルゴリズムを使用してデータの整合性を確保します。8 GBから128 GBまでのさまざまなサイズとさまざまな機能があり、Cypressコンポーネントと同様に完全にプログラム可能です。
Silicon Motionは、SSD、MMC、ユニバーサル フラッシュ ストレージ (UFS)、USB、一般的な組み込みフラッシュ アプリケーションをサポートするメモリ インターフェイスとコントローラを専門としています。USBおよびMMCアプリケーションについてはすでに説明しましたが、SSDコントローラー ソリューションについても見てみましょう。Silicon MotionのSM2XXXファミリのASICデバイスには、PCと外部SSDデバイス間の超高速データ転送を可能にするPCIe、SATA、およびUSB 3.2インターフェイスが搭載されています。注目すべきは、外部SSDデバイスは一般に、NANDフラッシュの複数のチャネル/バンクで構成されていることです。これらのデバイスは、特許取得済みのNANDXtendテクノロジーを活用することで、データの損失や破損を防ぐエンコード/デコード アルゴリズムを提供し、電力効率を高め、高度なエラー訂正機能も提供します。さらに、NANDXtendテクノロジーは、SSDの寿命を延ばし、古いNANDフラッシュ アレイを使用する場合でもデータの整合性と正確性を保証します。図4 は、NANDXtendアルゴリズムといくつかの追加レベルのセキュリティおよび暗号化を使用してSATAからSSDへのメモリを可能にする同社のSM2271デバイスを示しています。
図4: NANDXtendテクノロジーを搭載したSilicon MotionのSM2271 SATA-SSDメモリ コントローラ (出典: Silicon Motion)