

マイクロコントローラ(MC、uC、またはμC)またはマイクロコントローラユニット(MCU )は、単一の集積回路上に集積された小型コンピュータです。マイクロコントローラには、1つ以上のプロセッサコアに加え、メモリとプログラム可能な入出力周辺機器が搭載されています。プログラムメモリは、 NORフラッシュ、OTP ROM、または強誘電体RAMの形式で、少量のRAMとともにチップ上に搭載されていることがよくあります。マイクロコントローラは、パーソナルコンピュータやその他の汎用アプリケーションで使用される、さまざまな個別チップで構成されるマイクロプロセッサとは対照的に、組み込みアプリケーション向けに設計されています。
現代の用語では、マイクロコントローラはシステムオンチップ(SoC)に似ていますが、より簡素なものです。SoCは構成要素の一つとしてマイクロコントローラを含む場合もありますが、通常はグラフィックス処理ユニット(GPU)、Wi-Fiモジュール、あるいは1つ以上のコプロセッサといった高度な周辺機器と統合されています。
マイクロコントローラは、自動車のエンジン制御システム、埋め込み型医療機器、リモコン、事務機器、家電製品、電動工具、玩具、その他の組み込みシステムなど、自動制御される製品や機器に使用されています。マイクロコントローラは、マイクロプロセッサ、メモリ、入出力デバイスを別々に使用する設計と比較してサイズとコストを削減できるため、より多くの機器やプロセスのデジタル制御を実用的にします。ミックスドシグナルマイクロコントローラは一般的で、非デジタル電子システムの制御に必要なアナログコンポーネントを統合しています。モノのインターネット(IoT)の文脈では、マイクロコントローラはエッジデバイスとして物理世界のデータ収集、センシング、アクチュエーションを行うための経済的で普及した手段となっています。
マイクロコントローラの中には、4ビットワードを使用し、消費電力を低く抑えるため(ミリワットまたはマイクロワットの1桁台) 、4kHz程度の低周波数で動作するものがあります。これらは一般的に、ボタンの押下やその他の割り込みなどのイベントを待機している間も機能を維持する能力を備えています。スリープ状態(CPUクロックとほとんどの周辺機器がオフの状態)での消費電力はわずかナノワット程度であるため、長時間駆動バッテリーアプリケーションに最適です。一方、性能が重要な役割を果たすマイクロコントローラもあり、より高いクロック速度と消費電力で、デジタル信号プロセッサ(DSP)のように動作する必要がある場合があります。
最初のマルチチップマイクロプロセッサは、 1969年のFour-Phase Systems AL1と1970年のGarrett AiResearch MP944で、複数のMOS LSIチップを使用して開発されました。最初のシングルチップマイクロプロセッサは、1971年に単一のMOS LSIチップでリリースされたIntel 4004です。これは、 Federico Fagginが自身のシリコンゲートMOS技術を使用して、 IntelのエンジニアであるMarcian HoffとStan Mazor、およびBusicomのエンジニアである島正敏とともに開発しました。[ 1 ]その後、4ビットのIntel 4040、8ビットのIntel 8008、および8ビットのIntel 8080が続きました。これらのプロセッサはすべて、メモリや周辺インターフェースチップなど、動作するシステムを実装するために複数の外部チップを必要としました。その結果、システム全体のコストは数百ドル(1970年代の米ドル)になり、小型機器を経済的にコンピュータ化することは不可能でした。
MOSテクノロジーは1975年に100ドル以下のマイクロプロセッサ、6501と6502を発表した。その主な目的はコストの壁を下げることだったが、これらのマイクロプロセッサには依然として外部サポート、メモリ、周辺チップが必要であり、システム全体のコストは数百ドルにとどまっていた。
ある書籍では、TIのエンジニアであるゲイリー・ブーンとマイケル・コックランが1971年に最初のマイクロコントローラの開発に成功したとされている。彼らの研究成果はTMS 1000であり、1974年に市販された。これは読み出し専用メモリ、読み書きメモリ、プロセッサ、クロックを1つのチップに統合したもので、組み込みシステムを対象としていた。[ 2 ]
1970年代前半から中頃にかけて、日本の電子機器メーカーは自動車向けマイクロコントローラの生産を開始し、車載エンターテインメント、自動ワイパー、電子ロック、ダッシュボード用の4ビットMCUや、エンジン制御用の8ビットMCUなどが開発された。[ 3 ]
シングルチップのTMS 1000の存在に部分的に対応して、[ 4 ] Intelは制御アプリケーションに最適化されたチップ上のコンピュータシステムであるIntel 8048を開発し、商用部品は1977年に初めて出荷されました。[ 4 ]これは、マイクロプロセッサとともにRAMとROMを同じチップに統合したものです。数多くのアプリケーションの中でも、このチップは最終的に10億台以上のPCキーボードに搭載されることになります。当時、Intelの社長であるLuke J. Valenterは、マイクロコントローラは同社史上最も成功した製品の1つであると述べ、マイクロコントローラ部門の予算を25%以上拡大しました。
当時、ほとんどのマイクロコントローラには複数のバリエーションが存在した。1つはEPROMプログラムメモリを搭載しており、パッケージの蓋に透明な石英窓があり、紫外線照射によって消去できる。こうした消去可能なチップは、プロトタイプの作成によく用いられた。もう1つのバリエーションは、マスクプログラムROM、または一度しかプログラムできないPROMであった。後者の場合、 「ワンタイムプログラマブル」を意味するOTPという表記が使われることもあった。OTPマイクロコントローラでは、PROMは通常EPROMと同じタイプであったが、チップパッケージに石英窓がなかった。EPROMは紫外線照射できないため、消去できなかった。消去可能なバージョンは石英窓付きのセラミックパッケージが必要であったため、より低コストの不透明プラスチックパッケージで製造できるOTPバージョンよりも大幅に高価であった。消去可能なタイプでは、より安価なガラスではなく、紫外線に対する透明性(ガラスは紫外線に対してほとんど不透明)のために石英が必要でしたが、主なコスト差はセラミックパッケージ自体でした。ピギーバックマイクロコントローラも使用されました。[ 5 ] [ 6 ] [ 7 ]
1993年、 EEPROMメモリの導入により、マイクロコントローラ(Microchip PIC16C84から始まる)[ 8 ]は、 EPROMに必要な高価なパッケージなしで電気的に迅速に消去できるようになり、ラピッドプロトタイピングとインシステムプログラミングの両方が可能になった。(EEPROM技術はこれ以前にも利用可能だったが[ 9 ]、以前のEEPROMは高価で耐久性が低かったため、低コストで大量生産されるマイクロコントローラには適していなかった。)同年、AtmelはEEPROMの特殊なタイプであるフラッシュメモリを使用した最初のマイクロコントローラを発表した[ 10 ] 。他の企業もすぐにこれに追随し、両方のメモリタイプを採用した。
現在ではマイクロコントローラは安価で入手しやすく、趣味で利用する人にも普及しており、特定のプロセッサを中心に大規模なオンラインコミュニティが存在する。
2002年には、世界で販売されたすべてのCPUの約55%が8ビットマイクロコントローラとマイクロプロセッサでした。 [ 11 ]
1997年には20億個以上の8ビットマイクロコントローラが販売され[ 12 ]、Semicoによると2006年には40億個以上の8ビットマイクロコントローラが販売された[ 13 ]。最近では、SemicoはMCU市場が2010年に36.5%、2011年に12%成長したと主張している[ 14 ]。
先進国の一般的な家庭には、汎用マイクロプロセッサはわずか4個程度しか搭載されていないのに対し、マイクロコントローラは約30個も搭載されている。一般的な中級自動車には約30個のマイクロコントローラが搭載されている。また、洗濯機、電子レンジ、電話機など、多くの電気機器にもマイクロコントローラが使われている。
歴史的に、8 ビットセグメントが MCU 市場を支配してきました [..] 16 ビットマイクロコントローラは 2011 年に最大の MCU カテゴリとなり、その年に初めて 8 ビットデバイスを追い抜きました [..] IC Insights は、今後 5 年間で MCU 市場の構成が大きく変化し、32 ビットデバイスが販売とユニット数量のシェアを着実に拡大していくと考えています。2017 年までに、32 ビット MCU がマイクロコントローラ販売の 55% を占めると予想されています [..] ユニット数量に関しては、2017 年のマイクロコントローラ出荷の 38% を 32 ビット MCU が占めると予想され、16 ビットデバイスは全体の 34% を占め、4/8 ビット設計はその年の販売ユニットの 28% を占めると予測されています。組み込み処理システムにおけるより高いレベルの精度に対する需要の増加と、インターネットを使用した接続性の増加により、32 ビット MCU 市場は急速に成長すると予想されています。 […]今後数年間で、複雑な32ビットMCUが自動車の処理能力の25%以上を占めるようになると予想されています。
— IC Insights、MCU市場は32ビットおよびARMベースのデバイスへの移行パスについて報告[ 15 ]
製造コストは1個あたり0.10米ドル未満となる可能性がある。
時間の経過とともにコストは急激に低下し、2018年には最も安価な8ビットマイクロコントローラが0.03米ドル未満で入手可能になり[ 16 ]、同様の数量で一部の32ビットマイクロコントローラは1米ドル前後で入手可能になった。
2012年、世界的な危機(過去最悪の年間売上高減少と回復、平均販売価格の前年比17%下落、1980年代以来最大の減少)の後、マイクロコントローラの平均価格は0.88米ドル(4/8ビットで0.69米ドル、 16ビットで0.59米ドル、 32ビットで1.76米ドル)でした。 [ 15 ]
2012年には、8ビットマイクロコントローラの世界売上高は約40億米ドルに達し、4ビットマイクロコントローラもかなりの売上を記録した。[ 17 ]
2015年には、8ビットマイクロコントローラは1,000個で0.311米ドル[ 18 ] 、 16ビットは1,000個で0.385米ドル[ 19 ] 、 32ビットは1,000個で0.378米ドル(ただし5,000個では0.35米ドル)で購入できた[ 20 ] 。
2018年には、8ビットマイクロコントローラはUS$0.03で購入でき、[ 16 ] 16ビットはUS$0.393(1,000個の場合、ただし100個の場合はUS$0.563、2,000個のフルリールの場合はUS$0.349 )、 [ 21 ] 32ビットはUS$0.503(1,000個の場合、ただし5,000個の場合はUS$0.466)でした。[ 22 ]
2018年には、2015年に低価格だった上記のマイクロコントローラはすべて、以下の通り値上がりしました(インフレ率を2018年と2015年の価格で計算)。8ビットのマイクロコントローラは1,000個で0.319米ドル、つまり2.6%値上がりしました[ 18 ] 。16ビットのマイクロコントローラは1,000個で0.464米ドル、つまり21%値上がりしました[ 19 ]。32ビットのマイクロコントローラは1,000個で0.503米ドル、ただし5,000個で0.466米ドル、つまり33%値上がりしました[ 20 ] 。

2018年6月21日、ミシガン大学が「世界最小のコンピュータ」を発表した。このデバイスは「0.04 mm 3 「わずか16 nWの ワイヤレスでバッテリーレスのセンサーシステムで、Cortex-M0+プロセッサと光通信を統合し、セルラー温度測定に使用されます。」1辺が0.3 mmで、米粒よりも小さい。[...] RAMと太陽光発電に加えて、新しいコンピューティング デバイスにはプロセッサと無線送信機と受信機があります。従来の無線アンテナを持つには小さすぎるため、可視光でデータを受信および送信します。基地局は、電力とプログラミングのために光を供給し、データを受信します。」[ 23 ]このデバイスは、 2018 年3 月に IBM が以前に主張した世界記録サイズのコンピュータの 1/10のサイズで、[ 24 ]「塩の粒よりも小さい」[ 25 ] 100 万個のトランジスタを備え、製造コストは0.10 ドル未満で、ブロックチェーン技術と組み合わせることで、物流と「クリプト アンカー」、つまりデジタル指紋アプリケーションを目的としています。[ 26 ]
マイクロコントローラは、プロセッサ、メモリ、周辺機器を備えた自己完結型のシステムとみなすことができ、組み込みシステムとして使用できます。[ 27 ]現在使用されているマイクロコントローラの大部分は、自動車、電話、家電製品、コンピュータシステムの周辺機器などの他の機械に組み込まれています。
組み込みシステムの中には非常に高度なものもありますが、多くはメモリやプログラムの長さに関する要件が最小限で、オペレーティングシステムがなく、ソフトウェアの複雑さも低くなっています。一般的な入出力デバイスには、スイッチ、リレー、ソレノイド、LED、小型またはカスタムの液晶ディスプレイ、無線周波数デバイス、温度、湿度、照度などのデータ用センサーなどがあります。組み込みシステムには通常、キーボード、画面、ディスク、プリンター、その他パーソナルコンピュータでおなじみの入出力デバイスはなく、人間とのインタラクションデバイスも一切ありません。
マイクロコントローラは、制御対象の組み込みシステムで発生するイベントに対して、リアルタイム(予測可能ではあるが、必ずしも高速とは限らない)な応答を提供する必要があります。特定のイベントが発生すると、割り込みシステムはプロセッサに現在の命令シーケンスの処理を中断し、割り込みサービスルーチン(ISR、または「割り込みハンドラ」)を開始するように指示します。ISRは、割り込みの発生源に基づいて必要な処理を実行し、その後、元の命令シーケンスに戻ります。割り込みの発生源はデバイスによって異なり、内部タイマーのオーバーフロー、アナログ-デジタル変換の完了、ボタンの押下などによる入力の論理レベルの変化、通信リンクで受信したデータなどのイベントが含まれることがよくあります。バッテリー駆動デバイスのように消費電力が重要な場合、割り込みによって、周辺機器からのイベントによって何らかの処理が必要になるまでプロセッサが停止している低電力スリープ状態からマイクロコントローラが復帰することもあります。
マイクロコントローラのプログラムは、通常、オンチップメモリに収まるサイズでなければなりません。外部に拡張可能なメモリをシステムに搭載するのはコストがかかるためです。コンパイラとアセンブラは、高水準言語とアセンブリ言語の両方のコードを、マイクロコントローラのメモリに格納するためのコンパクトなマシンコードに変換するために使用されます。デバイスによっては、プログラムメモリは工場でのみプログラム可能な永続的な読み出し専用メモリの場合もあれば、現場で変更可能なフラッシュメモリや消去可能な読み出し専用メモリの場合もあります。
メーカーは、対象システムのハードウェアおよびソフトウェア開発を支援するために、マイクロコントローラの特殊バージョンを製造してきた。当初は、デバイス上部に「窓」があり、そこから紫外線を照射してプログラムメモリを消去し、プログラミング(書き込み)とテストサイクル後に再プログラミングできるようにしたEPROMバージョンが含まれていた。1998年以降、EPROMバージョンは稀になり、より使いやすく(電子的に消去可能)、製造コストも安いEEPROMやフラッシュメモリに置き換えられた。
ROMを内部メモリとしてではなく外部デバイスとしてアクセスするバージョンも存在するかもしれないが、安価なマイクロコントローラプログラマが広く普及したため、こうしたバージョンは稀になりつつある。
マイクロコントローラにフィールドプログラマブルデバイスを使用することで、ファームウェアの現場アップデートや、組み立て済みだがまだ出荷されていない製品に対する工場での最終改訂が可能になります。プログラマブルメモリは、新製品の展開に必要なリードタイムも短縮します。
何十万個もの同一デバイスが必要な場合、製造時にプログラムされた部品を使用することが経済的となる。これらの「マスクプログラム」部品は、チップのロジックと同じ方法で、同時にプログラムが書き込まれている。
カスタムマイクロコントローラは、処理能力の向上、周辺機器、およびアプリケーションの要件に合わせたインターフェースなど、カスタマイズ可能なデジタルロジックブロックを組み込んでいます。Atmel社のAT91CAPはその一例です。
マイクロコントローラには通常、数個から数十個の汎用入出力ピン(GPIO)が搭載されています。GPIOピンはソフトウェアによって入力状態または出力状態に設定可能です。GPIOピンが入力状態に設定されている場合は、センサーや外部信号の読み取りによく使用されます。出力状態に設定されている場合は、LEDやモーターなどの外部デバイスを駆動できますが、多くの場合、外部電源回路を介して間接的に駆動します。
多くの組み込みシステムは、アナログ信号を生成するセンサーを読み取る必要があります。しかし、組み込みシステムはデジタルデータ(1と0)を解釈および処理するように設計されているため、デバイスから送信されるアナログ信号を処理することができません。そのため、アナログ-デジタル変換器(ADC)を使用して、入力データをプロセッサが認識できる形式に変換します。一部のマイクロコントローラには、プロセッサがアナログ信号または電圧レベルを出力できるようにするデジタル-アナログ変換器(DAC)という、あまり一般的ではない機能があります。
コンバータに加えて、多くの組み込みマイクロプロセッサにはさまざまなタイマーも搭載されています。最も一般的なタイマーの1つは、プログラマブルインターバルタイマー(PIT)です。PITは、ある値からゼロまでカウントダウンするか、カウントレジスタの容量までカウントアップしてオーバーフローし、ゼロに収束します。ゼロに達すると、カウントが終了したことを示す割り込みをプロセッサに送信します。これは、サーモスタットなどのデバイスに役立ちます。サーモスタットは、周囲の温度を定期的に測定して、エアコンやヒーターのオン/オフなどを切り替える必要があるかどうかを判断します。
専用のパルス幅変調(PWM)ブロックにより、CPUはタイトなタイマーループで多くのCPUリソースを使用することなく、電力変換器、抵抗負荷、モーターなどを制御することが可能になります。
汎用非同期送受信機(UART)ブロックにより、CPUへの負荷をほとんどかけずにシリアルラインを介してデータを受信および送信することが可能になります。専用のオンチップハードウェアには、I²C 、 SPI 、 USB 、イーサネットなどのデジタル形式で他のデバイス(チップ)と通信する機能も含まれていることがよくあります。[ 28 ]


マイクロコントローラは、CPUと同じチップ上にRAMと不揮発性メモリを統合しているため、外部アドレスバスやデータバスを実装しない場合があります。ピン数が少ないため、チップをより小型で安価なパッケージに収めることができます。
メモリやその他の周辺機器を単一のチップに統合し、それらを一体としてテストすると、そのチップのコストは上昇しますが、多くの場合、組み込みシステム全体の正味コストは低下します。周辺機器を統合したCPUのコストが、CPUと外部周辺機器を個別に購入するコストよりもわずかに高くなったとしても、チップ数が少なくなることで、通常はより小型で安価な回路基板が実現し、回路基板の組み立てとテストに必要な労力が削減されるだけでなく、完成品の不良率も低下する傾向があります。
マイクロコントローラは単一の集積回路であり、一般的に以下の特徴を備えています。
この統合により、個別のチップを使用して同等のシステムを製造する場合に必要なチップ数、配線量、および回路基板スペースが大幅に削減されます。さらに、特にピン数の少ないデバイスでは、各ピンが複数の内部周辺機器と接続でき、ピンの機能はソフトウェアによって選択されます。これにより、ピンに専用の機能を持たせる場合よりも、より幅広い用途で部品を使用できるようになります。
マイクロコントローラは、1970年代に登場して以来、組み込みシステムにおいて非常に人気が高いことが証明されている。
一部のマイクロコントローラはハーバードアーキテクチャを採用しています。これは、命令とデータ用に別々のメモリバスを使用することで、同時アクセスを可能にするものです。ハーバードアーキテクチャが使用されている場合、プロセッサの命令ワードのビットサイズは、内部メモリやレジスタの長さと異なる場合があります。例えば、8ビットのデータレジスタに対して12ビットの命令が使用されるといった具合です。
どの周辺機器を統合するかという決定は、しばしば困難を伴う。マイクロコントローラベンダーは、動作周波数やシステム設計の柔軟性と、顧客からの市場投入までの時間要件、そしてシステム全体のコスト削減との間でトレードオフを行うことが多い。メーカーは、チップサイズの最小化と追加機能の必要性とのバランスを取らなければならない。
マイクロコントローラのアーキテクチャは多岐にわたります。汎用マイクロプロセッサコアを備え、1つ以上のROM、RAM、またはI/O機能がパッケージに統合されている設計もあります。制御アプリケーション専用に設計された設計もあります。マイクロコントローラの命令セットには、制御プログラムをよりコンパクトにするために、ビット操作(ビット単位の演算)を目的とした命令が多数含まれているのが一般的です。[ 29 ]例えば、汎用プロセッサでは、レジスタ内のビットをテストし、ビットがセットされている場合に分岐するために複数の命令が必要になる場合がありますが、マイクロコントローラでは、その一般的に必要とされる機能を提供する命令が1つで済む場合があります。
従来、マイクロコントローラには演算コプロセッサが搭載されていなかったため、浮動小数点演算はソフトウェアによって行われていました。しかし、最近の設計の中には、FPU(浮動小数点演算ユニット)やDSP(デジタル信号処理)に最適化された機能を搭載したものもあります。例えば、マイクロチップ社のMIPSベースのPIC32シリーズなどが挙げられます。
マイクロコントローラは当初アセンブリ言語のみでプログラミングされていましたが、現在ではC、Python、JavaScriptなどのさまざまな高水準プログラミング言語もマイクロコントローラや組み込みシステム向けに広く使用されています。[ 30 ]汎用言語のコンパイラには、マイクロコントローラの固有の特性をより良くサポートするための制限と機能強化が通常含まれています。一部のマイクロコントローラには、特定の種類のアプリケーションの開発を支援する環境があります。マイクロコントローラベンダーは、ハードウェアの採用を容易にするためにツールを無料で提供することがよくあります。
特殊なハードウェアを搭載したマイクロコントローラでは、8051用のSDCCのように、独自の非標準C言語方言が必要になる場合があり、ハードウェア機能とは無関係なコードであっても、標準ツール(コードライブラリや静的解析ツールなど)を使用できなくなる。また、 MicroPythonのように、インタプリタにも非標準機能が含まれる場合があるが、そのフォークであるCircuitPythonは、ハードウェアへの依存関係をライブラリに移行し、言語をよりCPython標準に準拠させることを目指している。
一部のマイクロコントローラには、インタープリタファームウェアも用意されています。例えば、初期のマイクロコントローラであるIntel 8052のBASIC [ 31 ]、Zilog Z8 [ 32 ]のBASIC とFORTH 、および一部の最新デバイスなどです。通常、これらのインタープリタは対話型プログラミングをサポートしています。
一部のマイクロコントローラにはシミュレータが用意されています。これにより、開発者は実際のマイクロコントローラを使用した場合に、マイクロコントローラとプログラムがどのように動作するべきかを分析できます。シミュレータは、プロセッサの内部状態と出力状態を表示するだけでなく、入力信号の生成も可能です。多くのシミュレータは、システム内の他のハードウェアをシミュレートできないという制約がありますが、物理的な実装では再現が難しい条件をテストすることができ、問題のデバッグと分析を迅速に行うための最良の方法となる場合があります。
近年のマイクロコントローラには、オンチップデバッグ回路が組み込まれていることが多く、JTAGを介してインサーキットエミュレータ(ICE)からアクセスすることで、デバッガによるファームウェアのデバッグが可能になります。リアルタイムICEでは、実行中に内部状態を表示したり操作したりできます。トレースICEでは、トリガーポイントの前後の実行プログラムとMCUの状態を記録できます。
2008年現在マイクロコントローラには、以下のような数十種類のアーキテクチャとベンダーが存在します。


他にも多くの種類が存在し、その中には非常に限られた用途で使用されるものや、マイクロコントローラというよりアプリケーションプロセッサに近いものもある。マイクロコントローラ市場は極めて細分化されており、多数のベンダー、技術、市場が存在する。多くのベンダーが複数のアーキテクチャを販売している、あるいは過去に販売していたことに留意すべきである。
汎用コンピュータとは対照的に、組み込みシステムで使用されるマイクロコントローラは、命令スループットよりも割り込みレイテンシの最適化を重視することが多い。課題としては、レイテンシの低減と、リアルタイム制御をサポートするためにレイテンシをより予測可能にすることが挙げられる。
電子デバイスが割り込みを発生させると、コンテキストスイッチ中に、割り込み処理を担当するソフトウェアが実行される前に、中間結果(レジスタ)を保存する必要があります。また、割り込みハンドラが終了した後には、それらを復元する必要があります。プロセッサレジスタが多い場合、この保存と復元の処理に時間がかかり、レイテンシが増加する可能性があります。(ISRが一部のレジスタの使用を必要としない場合、保存と復元を行う代わりに、それらをそのままにしておくことがあります。この場合、それらのレジスタはレイテンシに関係しません。)このようなコンテキスト/復元レイテンシを削減する方法としては、中央処理装置のレジスタ数を比較的少なくすること(ほとんどの非割り込み処理が大幅に遅くなるため望ましくない)、または少なくともハードウェアがすべてのレジスタを保存しないようにすること(ソフトウェアが残りのレジスタを「手動で」保存して補償する必要がある場合は失敗します)などがあります。別の手法としては、「シャドウレジスタ」にシリコンゲートを割く方法があります。これは、割り込みソフトウェアのみが使用する1つ以上の複製レジスタで、専用のスタックをサポートする場合があります。
割り込み遅延に影響を与えるその他の要因には、以下のようなものがあります。
低価格帯のマイクロコントローラは、高価格帯のものに比べて、割り込み遅延制御機能のサポートが少ない傾向がある。
マイクロコントローラでは、ファームウェアを保存するための不揮発性メモリと、一時データ用の読み書き可能なメモリという、 2種類のメモリが一般的に使用されます。
初期のマイクロコントローラから今日に至るまで、6トランジスタSRAMはほぼ常に読み書き作業用メモリとして使用され、レジスタファイルではビットあたり数個多いトランジスタが使用されています。
SRAMに加えて、一部のマイクロコントローラはデータ保存用に内部EEPROMやNVRAMも搭載しています。また、これらのメモリを搭載していないもの( BASIC Stampなど)や、内部メモリが不足している場合は、外部EEPROMやフラッシュメモリチップに接続されることがよくあります。
2003年以降、一部のマイクロコントローラには「自己プログラム可能な」フラッシュメモリが搭載されている。[ 10 ]
初期のマイクロコントローラは、ファームウェアの保存にマスクROMを使用していた。後のマイクロコントローラ( Freescale 68HC11の初期バージョンや初期のPICマイクロコントローラなど)はEPROMメモリを採用し、紫外線による消去を可能にする半透明の窓を備えていたが、量産バージョンではそのような窓はなく、OTP(ワンタイムプログラマブル)となった。ファームウェアのアップデートはマイクロコントローラ本体の交換に等しかったため、多くの製品はアップグレードできなかった。
Motorola MC68HC805 [ 9 ]は、ファームウェアを保存するためにEEPROMを使用した最初のマイクロコントローラでした。EEPROM マイクロコントローラは、Microchip がPIC16C84 [ 8 ]を発表し、Atmel がファームウェアを保存するためにNOR フラッシュメモリを使用した最初の8051 コアマイクロコントローラを発表した 1993 年にさらに普及しました。 [ 10 ]今日のマイクロコントローラはほぼすべてフラッシュメモリを使用しており、一部のモデルは FRAM を使用し、一部の超低コスト部品は依然として OTP またはマスク ROM を使用しています。
多様なMCU市場を混乱させるには、通常、世界的な経済不況が必要となるが、まさにそれが2009年に起こった。マイクロコントローラ事業は、年間売上高が22%減の111億ドルとなり、過去最悪の落ち込みを記録した。