SPIフラッシュ
SPIフラッシュは、シリアル周辺機器インタフェースで接続する不揮発性メモリである。主にブートコードや設定情報の保持に用いられ、低ピン数・小型パッケージ・比較的低コストという特徴を持つ。代表的な実装はコード格納に適したSPI-NORと、大容量志向のSPI-NANDに大別される。システムは1本のシリアルバスに複数デバイスをぶら下げられ、基板配線の単純化やEMI低減にも寄与する。加えて、近年は4線以上を使う拡張(QSPIやOctalなど)により、実行時の読み出し帯域を大幅に引き上げられる点が実装上の利点である。
基本構造と種類
SPI-NORは各ビットをセル単位で直接読み出せるためランダムリードが速く、実行-イン-プレース(XIP)に適する。一方で書込み・消去はブロック単位で、典型的に4 KBセクタや64 KBブロックを用いる。SPI-NANDはページ/ブロック管理で大容量を実現するが、誤り率が高いためECCの前提が強い。容量帯は数Mbit〜数百Mbit級がSPI-NOR、数Gbit級以上はSPI-NANDが一般的である。
インタフェースと信号
SPIフラッシュは通常、CS#, SCLK, SI/MOSI, SO/MISOの4線で接続する。SPIモードは0または3が多く、最大動作周波数は数十MHz〜数百MHzに達する。QSPIではデータ線を2/4本(Dual/Quad)に拡張し、Octal/OPIでは8本・DDR転送により実効帯域を高める。電源は3.3 V系が主流で、1.8 V版も流通する。WP#やHOLD#端子を備える品種では、書込み保護やバス一時停止が可能である。
コマンド体系と標準
JEDECのベンダID・デバイスIDで同定し、読み出しは0x03(標準)や0x0B(高速)、書込みは0x06(WREN)後にページプログラム、消去は0x20/0x52/0xD8(セクタ/ブロック)や0xC7/0x60(全消去)が代表的である。4 byteアドレス拡張(>16 MB空間)は0xB7によって有効化する実装が多い。SFDP(JESD216)はデバイス固有のレイテンシ、ダミーサイクル、消去サイズなどの特性を自己記述し、汎用ドライバでの自動最適化を可能にする。
読み出し・書込み・消去動作
読み出しはアドレス指定後、必要に応じてダミーサイクルを挿入し連続転送する。書込みは通常256 B程度のページ単位で行い、その前にWRENを発行する。消去はブロック単位で、時間が最も長い操作である。ステータスレジスタ(SR)のWIP/WELビットを監視して完了を判断する。SPI-NANDではページプログラム/ブロック消去に加え、コマンドで内部ECCの結果(成功/訂正/失敗)を確認する流れが一般的である。
性能指標と最適化
実効性能は「I/O幅×SCLK×プロトコル効率」で概算できる。QSPI/Octalと高速コマンドの併用、適切なダミーサイクル設定、ライン長の抑制が読み出し帯域の鍵である。XIP構成ではキャッシュヒット率を高め、リニアマップされた高速リードを用いると体感速度が向上する。書込みはページバッファを活用した連続プログラムで効率化し、消去は電源投入直後のバックグラウンド実行を避けて起動時間を短縮する。
信頼性・保護機能
SPI-NORの消去耐久は1セクタあたりおおむね10^4〜10^5回、データ保持は10〜20年が目安である。SRによるブロック保護、OTP領域(1回書込み)、ユニークID、電源断耐性向上のためのプログラムアルゴリズムなどを備える。SPI-NANDではECC(たとえばBCH/LDPC)とウェアレベリング/不良ブロック管理をホストまたはコントローラで実施するのが前提となる。
電気的設計とレイアウト
配線はCS#/CLK/IOに終端・等長・帰還電流の最短化を意識する。特にQSPI/Octalでは差動並みに波形整合を配慮した方がよい。電源は十分なデカップリングと起動時シーケンスを守る。リセット/保護端子のプルアップ設定は誤動作防止に有効で、ESD/サージ対策はデータ保持の観点からも重要である。パッケージはSOIC-8やWSON、BGA等があり、放熱と実装歩留まりも選定基準となる。
応用例とシステム設計要点
- マイコン/SoCのブートROMからのXIPコード格納
- FPGAのコンフィギュレーションビットストリーム保存
- 設定ファイル、ログ、証明書などのキーバリュ格納
- 外部ストレージとしての簡易ファイルシステム(小規模)
設計要点としては、容量見積り(コード+更新余裕)、書換頻度に応じた耐久設計、電源断時の一貫性確保(ジャーナリングやダブルバッファ)を挙げる。セキュリティではブートチェーンの認証や暗号化、SR保護とOTP活用が基本となる。
ソフトウェアスタック
下層はSPIコントローラ/DMAC、上層はフラッシュ抽象化層(FAL)とファイルシステムで構成する。SFDPを読み取り、最適なリードコマンド・ダミー数・4 byteアドレスの有無を動的決定する実装が保守性に優れる。SPI-NANDではMTD/UBIのような不良ブロック耐性のある層を組み合わせる。
評価・テスト観点
起動時間の分解計測(初期化〜XIP開始)、高速I/O時のタイミングマージン、ノイズ環境でのエラーレート、長期書換試験(耐久・保持)、電源瞬断試験、温度サイクルでのパラメータ変動を評価する。量産ではベンダID照合やSR/OTPの初期化、ロット間差の監視をルーチン化するとよい。
実装上の注意
SPIフラッシュの置き換えは同一ピン互換でも内部仕様差がある。SFDPで特性を読み出し、クロック・ダミー数・保護設定を必ず再最適化すること。XIP中断を避けるため、消去/書込みは割り込みやスケジューラで分離し、クリティカル区間を最小化する。