

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

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


マイクロコントローラは、CPU と同じチップ上に RAM と不揮発性メモリを統合しているため、外部アドレス バスやデータ バスを実装しない場合があります。使用するピンの数が少ないため、チップははるかに小型で安価なパッケージに収めることができます。
メモリとその他の周辺機器を 1 つのチップに統合し、ユニットとしてテストすると、そのチップのコストは増加しますが、組み込みシステム全体の純コストは減少することがよくあります。周辺機器を統合した CPU のコストが CPU と外部周辺機器のコストよりわずかに高い場合でも、チップの数が少ないと、通常、回路基板が小型で安価になり、回路基板の組み立てとテストに必要な労力が軽減されるだけでなく、完成したアセンブリの不良率も低下する傾向があります。
マイクロコントローラは単一の集積回路であり、一般的に以下の機能を備えています。
- 中央処理装置- 小型で単純な4 ビットプロセッサ から複雑な32 ビットまたは64 ビットプロセッサまで
- データ保存用の揮発性メモリ ( RAM )
- プログラムおよび動作パラメータ保存用のROM、EPROM、EEPROM、またはフラッシュメモリ
- 個別の入力ビットと出力ビットにより、個々のパッケージピンの論理状態を制御または検出できます。
- シリアルポート(UART)などのシリアル入出力
- システム相互接続用のI²C、シリアル周辺機器インターフェース、コントローラエリアネットワークなどのその他のシリアル通信 インターフェース
- タイマー、イベントカウンタ、PWMジェネレータ、ウォッチドッグなどの周辺機器
- クロックジェネレーター- 多くの場合、水晶タイミングクリスタル、共振器、またはRC回路 の発振器です。
- 多くはアナログ-デジタルコンバーターを含み、一部はデジタル-アナログコンバーターを含む
- インサーキットプログラミングとインサーキットデバッグのサポート
この統合により、個別のチップを使用して同等のシステムを作成するために必要なチップの数、配線の量、および回路基板のスペースが大幅に削減されます。さらに、特にピン数の少ないデバイスでは、各ピンが複数の内部周辺機器とインターフェイスし、ピンの機能がソフトウェアによって選択されます。これにより、ピンに専用の機能がある場合よりも、部品をより幅広いアプリケーションで使用できるようになります。
マイクロコントローラは、1970 年代に導入されて以来、 組み込みシステムで非常に人気を博しています。
一部のマイクロコントローラは、ハーバード アーキテクチャを使用します。これは、命令とデータに別々のメモリ バスを用意し、同時にアクセスできるようにするものです。ハーバード アーキテクチャが使用されている場合、プロセッサの命令ワードのビット サイズは、内部メモリおよびレジスタの長さと異なる場合があります。たとえば、12 ビットの命令を 8 ビットのデータ レジスタで使用するなどです。
どの周辺機器を統合するかの決定は、しばしば困難です。マイクロコントローラ ベンダーは、動作周波数とシステム設計の柔軟性を、顧客からの市場投入までの時間要件や全体的なシステム コストの削減とトレードオフすることがよくあります。メーカーは、チップ サイズを最小限に抑える必要性と追加機能のバランスを取る必要があります。
マイクロコントローラのアーキテクチャは多種多様です。一部の設計には、1 つ以上の ROM、RAM、または I/O 機能がパッケージに統合された汎用マイクロプロセッサ コアが含まれています。他の設計は、制御アプリケーション専用です。マイクロコントローラの命令セットには通常、制御プログラムをよりコンパクトにするためのビット操作(ビット単位の操作) を目的とした多くの命令が含まれています。[26]たとえば、汎用プロセッサでは、レジスタ内のビットをテストし、ビットが設定されている場合は分岐するために複数の命令が必要になる場合がありますが、マイクロコントローラでは、一般的に必要な機能を 1 つの命令で提供できます。
マイクロコントローラには歴史的に数値演算コプロセッサがなかったため、浮動小数点演算はソフトウェアによって実行されていました。ただし、最近の設計には FPU と DSP に最適化された機能が含まれています。例としては、Microchip の PIC32 MIPS ベース ラインが挙げられます。
プログラミング環境
マイクロコントローラはもともとアセンブリ言語でのみプログラムされていましたが、現在ではC、Python、JavaScriptなどのさまざまな高水準プログラミング言語も、マイクロコントローラや組み込みシステムを対象に一般的に使用されています。[27]汎用言語のコンパイラには通常、マイクロコントローラの独自の特性をより適切にサポートするための機能強化だけでなく、いくつかの制限があります。一部のマイクロコントローラには、特定の種類のアプリケーションの開発を支援する環境があります。マイクロコントローラベンダーは、ハードウェアの採用を容易にするために、ツールを無料で提供することがよくあります。
特殊なハードウェアを搭載したマイクロコントローラでは、 8051 用の SDCCなど、独自の非標準の C 方言が必要になる場合があります。これにより、ハードウェア機能に関係のないコードに対しても標準ツール (コード ライブラリや静的解析ツールなど) を使用できなくなります。インタープリタにもMicroPythonなどの非標準の機能が含まれる場合がありますが、フォークであるCircuitPythonでは、ハードウェアの依存関係をライブラリに移動し、言語をよりCPython標準に準拠させようとしています。
一部のマイクロコントローラでは、インタープリタファームウェアも利用できます。たとえば、初期のマイクロコントローラIntel 8052上のBASIC [28]、Zilog Z8上のBASICとFORTH [29]、および一部の最新デバイスなどです。通常、これらのインタープリタは対話型プログラミングをサポートしています。
一部のマイクロコントローラではシミュレータが利用可能です。開発者はシミュレータを使用することで、実際の部品を使用した場合のマイクロコントローラとプログラムの動作を分析できます。シミュレータはプロセッサの内部状態と出力の状態を表示し、入力信号を生成することもできます。一方で、ほとんどのシミュレータはシステム内の他のハードウェアをほとんどシミュレートできないという制限がありますが、物理的な実装では自由に再現することが難しい条件を実行できるため、問題をデバッグして分析する最も迅速な方法となります。
最近のマイクロコントローラには、オンチップデバッグ回路が統合されていることが多く、インサーキット エミュレータ(ICE)からJTAG経由でアクセスすると、デバッガを使用してファームウェアをデバッグできます。リアルタイム ICE を使用すると、実行中に内部状態を表示したり操作したりできます。トレース ICE は、トリガー ポイントの前後の実行されたプログラムと MCU の状態を記録できます。
種類
2008 年現在[アップデート]、マイクロコントローラ アーキテクチャとベンダーは数十種類存在し、その中には次のものがあります。
- ARMコアプロセッサ(多くのベンダー)
- ARM Cortex-Mコアはマイクロコントローラアプリケーションに特化しています。
- Microchip Technology Atmel AVR (8 ビット)、AVR32 (32 ビット)、およびAT91SAM (32 ビット)
- Cypress SemiconductorのM8Cコアは、同社のCypress PSoCで使用されています。
- Freescale ColdFire (32 ビット) およびS08 (8 ビット)
- Freescale 68HC11 (8 ビット)、およびMotorola 6800 ファミリに基づくその他の製品
- Intel 8051 、 NXP Semiconductors、Infineonなど多くの企業によって製造されている。
- インフィニオン:8ビットXC800、16ビットXE166、32ビットXMC4000(ARMベースのCortex M4F)、32ビットTriCore、32ビットAurix Tricoreビットマイクロコントローラ[30]
- マキシム・インテグレーテッドMAX32600、MAX32620、MAX32625、MAX32630、MAX32650、MAX32640
- ミップス
- マイクロチップテクノロジー PIC、(8 ビット PIC16、PIC18、16 ビット dsPIC33/PIC24)、(32 ビット PIC32)
- NXP セミコンダクターズLPC1000、LPC2000、LPC3000、LPC4000 (32 ビット)、LPC900、LPC700 (8 ビット)
- パララックスプロペラ
- パワーPC
- ラビット 2000 (8 ビット)
- ルネサス エレクトロニクス: RL78 16 ビット MCU、RX 32 ビット MCU、SuperH、V850 32 ビット MCU、H8、R8C 16 ビット MCU
- Silicon Laboratoriesのパイプライン型 8 ビット 8051 マイクロコントローラとミックスドシグナル ARM ベースの 32 ビット マイクロコントローラ
- STマイクロエレクトロニクス STM8 (8ビット)、ST10 (16ビット)、STM32 (32ビット)、SPC5 (自動車用32ビット)
- Texas Instruments TI MSP430 (16 ビット)、MSP432 (32 ビット)、C2000 (32 ビット)
- 東芝 TLCS-870 (8 ビット/16 ビット)
他にも多くのマイクロコントローラが存在しますが、その中には、非常に狭い範囲のアプリケーションで使用されているものや、マイクロコントローラというよりはアプリケーション プロセッサに近いものもあります。マイクロコントローラ市場は、多数のベンダー、テクノロジ、市場が存在する非常に細分化された市場です。多くのベンダーが複数のアーキテクチャを販売しているか、販売していたことに注意してください。
割り込み遅延
汎用コンピュータとは対照的に、組み込みシステムで使用されるマイクロコントローラは、多くの場合、命令スループットよりも割り込みレイテンシを最適化しようとします。課題には、レイテンシの削減と、レイテンシをより予測可能にすること(リアルタイム制御をサポートするため)の両方が含まれます。
電子デバイスが割り込みを発生させる場合、コンテキスト スイッチ中に、割り込み処理を担当するソフトウェアを実行する前に、中間結果 (レジスタ) を保存する必要があります。また、割り込み ハンドラが終了した後に、中間結果 (レジスタ) を復元する必要があります。プロセッサ レジスタの数が多いと、この保存と復元のプロセスに時間がかかり、レイテンシが増加する可能性があります (ISR が一部のレジスタの使用を必要としない場合、レジスタを保存して復元するのではなく、そのままにしておくことがあります。この場合、これらのレジスタはレイテンシに関係しません)。このようなコンテキスト/復元のレイテンシを削減する方法としては、中央処理装置のレジスタの数を比較的少なくする (ほとんどの非割り込み処理が大幅に遅くなるため望ましくない)、または少なくともハードウェアがすべてのレジスタを保存しないようにする (ソフトウェアが残りのレジスタを「手動で」保存して補正する必要がある場合、この方法は失敗します) などがあります。別の手法では、シリコン ゲートを「シャドウ レジスタ」に使用します。これは、専用のスタックをサポートするなど、割り込みソフトウェアだけが使用する 1 つ以上の重複レジスタです。
割り込み遅延に影響するその他の要因は次のとおりです。
- 現在の CPU アクティビティを完了するために必要なサイクル。これらのコストを最小限に抑えるために、マイクロコントローラはパイプラインを短くし (多くの場合、命令は 3 つ以下)、書き込みバッファを小さくし、長い命令が継続または再開可能であることを保証します。RISC設計原則では、ほとんどの命令が同じ数のサイクルを要し、このような継続/再開ロジックの必要性をほとんど回避します。
- 割り込みが必要なクリティカル セクションの長さ。クリティカル セクションに入ると、同時データ構造アクセスが制限されます。割り込みハンドラがデータ構造にアクセスする必要がある場合、クリティカル セクションはその割り込みをブロックする必要があります。したがって、割り込みがブロックされている時間に応じて、割り込み待ち時間が増加します。システム待ち時間に厳しい外部制約がある場合、開発者は割り込み待ち時間を測定し、どのクリティカル セクションが速度低下の原因となっているかを追跡するツールが必要になることがよくあります。
- 一般的な手法の 1 つは、クリティカル セクションの期間中、すべての割り込みをブロックすることです。これは実装が簡単ですが、クリティカル セクションが不快なほど長くなることがあります。
- より複雑な手法では、そのデータ構造へのアクセスをトリガーする可能性のある割り込みをブロックするだけです。これは多くの場合、割り込みの優先順位に基づいていますが、関連するシステム データ構造とはあまり一致しない傾向があります。したがって、この手法は主に非常に制約の多い環境で使用されます。
- プロセッサには、一部のクリティカル セクションに対するハードウェア サポートがある場合があります。例としては、ワード内のビットまたはバイトへのアトミック アクセスのサポートや、ARMv6アーキテクチャで導入されたLDREX/STREX排他アクセス プリミティブなどのその他のアトミック アクセス プリミティブのサポートなどがあります。
- 割り込みネスト。一部のマイクロコントローラでは、優先度の高い割り込みが優先度の低い割り込みに割り込むことができます。これにより、ソフトウェアは、時間的に重要な割り込みに、それほど重要でない割り込みよりも高い優先度 (したがって、待ち時間が低く予測可能) を与えることで、待ち時間を管理できます。
- トリガー レート。割り込みが連続して発生すると、マイクロコントローラは、テール コール最適化の形式によって、余分なコンテキストの保存/復元サイクルを回避できます。
ローエンドのマイクロコントローラは、ハイエンドのマイクロコントローラよりもサポートされる割り込み遅延制御が少ない傾向があります。
メモリ技術
マイクロコントローラでは、ファームウェアを保存するための不揮発性メモリと一時データ用の読み書きメモリの 2 種類のメモリが一般的に使用されます。
データ
最も初期のマイクロコントローラから今日に至るまで、6 トランジスタ SRAM が読み取り/書き込み作業メモリとしてほぼ常に使用されており、レジスタ ファイルではビットあたりさらに数個のトランジスタが使用されています。
SRAM に加えて、一部のマイクロコントローラには、データ保存用の内部 EEPROM や NVRAM もあります。また、これらの機能を持たないマイクロコントローラ ( BASIC Stampなど) や内部メモリが不十分なマイクロコントローラでは、外部 EEPROM またはフラッシュ メモリ チップに接続されることがよくあります。
2003年以降のいくつかのマイクロコントローラには「自己プログラム可能な」フラッシュメモリが搭載されている。[7]
ファームウェア
最も初期のマイクロコントローラは、ファームウェアを保存するためにマスク ROM を使用していました。その後のマイクロコントローラ ( Freescale 68HC11の初期バージョンや初期のPIC マイクロコントローラなど) にはEPROMメモリが搭載され、半透明のウィンドウを使用して UV 光で消去できるようになりましたが、生産バージョンにはそのようなウィンドウはなく、OTP (ワンタイム プログラマブル) でした。ファームウェアの更新はマイクロコントローラ自体を交換することと同じであり、多くの製品はアップグレードできませんでした。
モトローラMC68HC805 [6]は、 EEPROMを使用してファームウェアを保存した最初のマイクロコントローラでした。EEPROMマイクロコントローラは、マイクロチップがPIC16C84 [5]を発表し、アトメルがファームウェアを保存するためにNORフラッシュメモリを使用した最初の8051コアマイクロコントローラを発表した1993年にさらに普及しました。 [7]今日のマイクロコントローラはほぼすべてフラッシュメモリを使用していますが、いくつかのモデルはFRAMを使用しており、一部の超低コストの部品では依然としてOTPまたはマスクROMを使用しています。
参照
- マイクロプロセッサ
- システムオンチップ
- 一般的なマイクロコントローラのリスト
- Wi-Fi マイクロコントローラのリスト
- オープンソースハードウェアプロジェクトの一覧
- マイクロボティクス
- プログラマブルロジックコントローラ
- シングルボードマイクロコントローラ
参考文献
- ^ 「1971年: マイクロプロセッサがCPU機能を1つのチップに統合」。シリコンエンジン。コンピュータ歴史博物館。 2019年7月22日閲覧。
- ^ Augarten, Stan (1983)。「最も広く使用され ているチップ上のコンピュータ: TMS 1000」。最先端技術: 集積回路の写真史。ニューヘブンおよびニューヨーク: Ticknor & Fields。ISBN 978-0-89919-195-9. 2010年2月17日時点のオリジナルよりアーカイブ。2009年12月23日閲覧。
- ^ 「半導体産業の動向」半導体歴史博物館。2019年6月27日時点のオリジナルよりアーカイブ。2019年6月27日閲覧。
- ^ ab 「Intel 8048 マイクロコントローラの開発と推進に関するオーラル ヒストリー パネル」(PDF)。コンピュータ歴史博物館オーラル ヒストリー、2008 年。p. 4 。2016 年 4 月 4 日閲覧。
- ^ ab 「チップの殿堂: Microchip Technology PIC 16C84 マイクロコントローラ」。IEEE。2017-06-30 。 2018年9月16日閲覧。
- ^ ab Motorola。事前情報、8 ビット マイクロコンピュータ MC68HC05B6、MC68HC05B4、MC68HC805B6、Motorola 文書 EADI0054RI。Motorola Ltd.、1988 年。
- ^ abc Odd Jostein Svendsli (2003). 「Atmel のセルフプログラミング フラッシュ マイクロコントローラ」(PDF) 。2024 年 6 月 18 日閲覧。
- ^ Turley, Jim (2002). 「2パーセントソリューション」. Embedded . 2018年7月11日閲覧。
- ^ Cantrell, Tom (1998). 「Microchip on the March」. Circuit Cellar . 2007-09-27時点のオリジナルよりアーカイブ。2018-07-11閲覧。
- ^ 「セミコリサーチ」.
- ^ 「勢いがMCUを2011年に持ち込む | Semico Research」。semico.com 。 2018年7月11日閲覧。
- ^ ab 「MCU 市場は 32 ビットおよび ARM ベースのデバイスへの移行の道をたどる」。2013 年 4 月 25 日。
多様な MCU 市場を混乱させるには、通常、世界的な経済不況が必要ですが、2009 年にはまさにそれが起こり、マイクロコントローラ事業は過去最悪の年間売上 22% 減を記録し、111 億ドルとなりました。
- ^ ab 「本当に低コストの MCU」。www.additude.se。2020 年 8 月 3 日時点のオリジナルよりアーカイブ。2019 年 1 月 16 日閲覧。
- ^ Bill Giovino (2013 年 6 月 7 日)。「Zilog が Samsung からマイクロコントローラ製品ラインを買収」。
- ^ ab "EFM8BB10F2G-A-QFN20 Silicon Labs | Mouser".
- ^ ab "MSP430G2001IPW14R Texas Instruments | Mouser".
- ^ ab "CY8C4013SXI-400 Cypress Semiconductor | Mouser". Mouser Electronics . 2015年2月18日時点のオリジナルよりアーカイブ。
- ^ 「MSP430FR2000IPW16R Texas Instruments | Mouser」.
- ^ 「CY8C4013SXI-400 Cypress Semiconductor | Mouser」。Mouser Electronics 。 2018年7月11日閲覧。
- ^ ミシガン大学の研究者が世界最小の「コンピューター」を開発、ミシガン大学、2018-06-21
- ^ ミシガン大学が世界最小の「コンピュータ」でIBMを上回る、CNET、2018-06-22
- ^ IBM、世界最小のコンピューターで偽造品と戦う、CNET、2018-03-19
- ^ IBM が塩粒ほどの大きさのコンピューターを開発。その用途は?、Fortune、2018-03-19
- ^ Heath, Steve (2003).組み込みシステム設計. 設計エンジニアのためのEDNシリーズ(第2版). Newnes. pp. 11–12. ISBN 9780750655460。
- ^ David Harris & Sarah Harris (2012).デジタルデザインとコンピュータアーキテクチャ、第2版、p.515。Morgan Kaufmann。ISBN 0123944244。
- ^ 「マイクロコントローラ プロジェクトを構築する簡単な方法」 2009 年 1 月 14 日。
- ^ Mazzei, Daniele; Montelisciani, Gabriele; Baldi, Giacomo; Fantoni, Gualtiero (2015). 「IoT ドメインにおける組み込みプログラミング パラダイムの変更」。2015 IEEE 第 2 回世界フォーラム on Internet of Things (WF-IoT) 。Internet of Things (WF-IoT)、 2015 IEEE 第 2 回世界フォーラム。ミラノ: IEEE。pp. 239–244。doi : 10.1109/WF-IoT.2015.7389059。ISBN 978-1-5090-0366-2。
- ^ Jan Axelson (1994). 「8052-Basic マイクロコントローラ」
- ^ Edwards, Robert (1987). Rapid Prototyping のための Zilog Z8 Forth マイクロコントローラの最適化(PDF) (技術レポート). Martin Marietta. p. 3. 2023年1月24日時点のオリジナル(PDF)からのアーカイブ。
- インフィニオン
