デュアルバンクフラッシュ
オンチップのフラッシュを独立した二つの領域に分け、片方からコードを実行しながらもう片方を消去・書き込みできるようにしたもの。
通常のフラッシュには厄介な性質がある。セクタの消去中は同じバンクから何も読み出せず、プロセッサは消去が終わるまで、ときに数百ミリ秒も止まってしまう。バンクを二つに分けてコントローラも別にすれば、片方に書き込んでいる間も、もう片方でコードを実行し続けられる。チップ内で実現したread-while-writeである。
主な用途はファームウェア更新だ。新しいイメージを使っていないバンクにゆっくり書き込み、検証し、ブートアドレスにマップされるバンクを決めるオプションバイトを切り替えて有効にする。STM32の複数のファミリにはまさにこのバンクスワップ用のビットがある。書き込み中に電源が落ちても、古いバージョンは手つかずで残っている。シングルバンクのチップは同じ問題をソフトウェアで解くしかなく、MCUbootがスクラッチ領域を使うのがその例だが、消去回数ははるかに増える。