アプリケーションノート 2035

高速8051マイクロコントローラ:進歩と革新を先導する

筆者: Kevin Self

要約: このアプリケーションノートでは、ダラスセミコンダクタが従来の8051マイクロコントローラを改良し、最大33MIPまで実行する高性能ドロップイン代替品をどのように作り出したかが記載されています。マルチプルデータポインタ、拡張メモリアドレス指定(最大16MB)、およびフラッシュメモリなどの付加機能によって製品の速度および有用性が向上します。

システム設計者は、あらゆる組込みシステムにおいてマイクロコントローラが心臓部、つまり動作の中心部となることを理解しています。過去18年間、マキシム・インテグレーテッド・プロダクツの完全子会社であるダラスセミコンダクタは、いたるところに使われている8051マイクロコントローラの再定義を続けてきました。過去10年において改良された最も顕著な部分は命令実行の速度でしょう。マシンサイクルあたり1クロックの当社のプロセッサの性能は卓越した域に達しました。1クロック/マシンサイクルは1秒につき 3,300万の命令(MIPS)となっています。このコアを使用して、当社のセキュリティの高いネットワークされたミックストシグナルの8051マイクロコントローラファミリは、高度な集積化と革新的な機能の標準を確立し続けます。

何故革新的なマイクロコントローラのファミリに旧式な8051の命令セットベースを使用するのでしょうか?その理由は世界で最も人気のある8ビットマイクロコントローラアーキテクチャの1つだからです。命令セットが理解しやすく、組込みシステムの設計者が最も好んで使っています。命令はほとんど直接I/O端子にアドレスし、外部周辺機能の迅速な操作(ビットバンギング)を可能にします。多様なオンチップ周辺機能の無限な組み合わせが可能です。さらに8051マイクロコントローラファミリの広範囲な開発ツールの入手が可能なため、アプリケーションの開発を容易に、また安価に始めることができます。

安全性とセキュリティ

ダラスセミコンダクタ/マキシムは、1987年に、8051の命令および機能セットに基づき独自に開発されたマイクロコントローラ、DS5000Tを紹介しました。新しい機能と便益性を提供すべく、当社のエンジニアは、EPROMではなくNV SRAM技術に基づいた設計を行いました。低電力技術の指導者としての能力を利用し、メモリパーティションおよびバッテリバックアップ回路を直接マイクロコントローラのダイに集積しました。このシステムの主要な利点は速度です。不揮発性メモリへの書き込みは時間がかかりますが、NV SRAMは1サイクルにおいて高速で読み取り、書き込みが可能です。これは、データがリアルタイムで捕捉されなければならない高速、不揮発性データロギングアプリケーションにとって最適な機能となります。外部SRAMおよびバッテリと組み合わせると、結果として、最高64kBの不揮発性プログラムおよびデータメモリを備えた完全なマイクロコントローラシステムとなります。

NV SRAMテクノロジを使うことにより、データとプログラムメモリの両方を、使用中にシステム内で、バイトレベルで再プログラムすることが可能です。標準マイクロコントローラシステムでは、プログラムメモリは、システム(EPROM)から物理的に取り外されるか、またはブロック消去される必要があり、消去(フラッシュ)中はメモリへのアクセスができません。NV SRAMベースのマイクロコントローラはシリアルポートでPCまたはデバイスプログラマから迅速且つ容易にプログラムすることが可能です。ROM常駐のブートストラップローダがプログラムとデータを直接マイクロコントローラにダウンロードするので、迅速なデバグまたはフィールドアップグレードが可能です。

NV SRAMの顕著な利点がファームウェアのセキュリティに関して新しい観点をもたらしました。ブートストラップローダがNV SRAMへのプログラムローディングを完全に制御するので、40ビットまたは80ビットのエンクリプションキーを使いアドレスおよびデータバスにエンクリプションしました。マイクロコントローラにロードされるあらゆるプログラムまたはデータはSRAMに保存される前に自動的に暗号化されます。このエンクリプションによって、ハッカーがマイクロコントローラのプログラムまたはデータに不正にアクセスすることが困難になります。命令実行中、マイクロコントローラは暗号化された演算コードを取り出し、暗号を解読しシングルマシンサイクルで実行します。NV SRAMを使うことによってフルスピードで読み出し/書き込みアクセスが可能になり、命令の復号化に遅延が起こりません。

これらのセキュリティ機能はDS5250で最高に達しました。DS5250は世界中の金融端末および支払システムで使用されているセキュア8051マイクロコントローラです。これらの不正対応マイクロコントローラは、プログラムメモリの強化されたトリプルDES暗号化だけでなくマシンサイクル当り4クロックサイクルの8051コアも内蔵しています。また、割り込み検出入力および自動的にメモリを不正応答として消去するオンチップ不正検出を追加することによってさらにセキュリティが強化されました。集積されたマイクロプローブシールドがダイへの不正行為を防止します。復唱しますが、NVSRAMは高度なセキュリティを要するアプリケーションに最適です。高速の書き込みタイミングは、マイクロプロセッサが他のタイプのメモリよりも高速に、機密または微妙なデータを消去することを可能にします。

DS5250は全ての命令をフルスピードで実行すると同時に最高のレベルのセキュリティを提供できる唯一のマイクロコントローラです。

高速、低電力

8051プロセシングコアは考案された1970年末期から1980年を通して変化がありませんでしたが、組込みシステムは変化しました。システム設計者は彼らの8051ベースのアプリケーションに、改良を加え、新しいソフトウェアの機能や周辺機能を追加することによりアップグレードをしてきました。この「機能の潜動」が8051の可能な性能の制限範囲を広げてきました。残念なことに、8051のコアはこのペースについていけず、システム設計者は他のプロセッサを使用し、システムアップグレードとして経費のかかる再設計が必要かと思われました。

性能向上を妨害するものは1970年代の8051マイクロコントローラのプロセッシングコアでした。外付け水晶の速度は40MHzに近づいてきたのですが、従来の8051は1マシンサイクルを実行するのに未だに12クロック必要としていました。各命令が1から4マシンサイクルを必要としていたということは、命令実行に最低12から最高48の発振クロックサイクルかかったということです。従ってスループットは、1サイクルNOPインストラクションの1ストリングというような基本的な実行すら、僅か3 MIPS少々に制限されていました(図1)。

図1. マシンサイクルあたりのクロック数を減らすことで、同じ命令セットの性能が3倍になります(マシンサイクルあたり12対4対1クロックです)。
図1. マシンサイクルあたりのクロック数を減らすことで、同じ命令セットの性能が3倍になります(マシンサイクルあたり12対4対1クロックです)。

性能向上のため、当社は1991年に8051マイクロコントローラの再設計に取り組みました。再設計チームは従来の8051の設計分析にとりかかりました。マシンサイクルあたり12クロックという従来のアーキテクチャは非常に無駄の多いものでした。殆どの命令が強制的にダミーサイクルを実行させられました。エンジニアはマシンサイクルにあたり12クロックでなく僅か4クロックしか必要としないCPUをゼロから設計し直しました。2つ目の内部データバスにより、性能を妨げるアーキテクチャ的な問題が排除されました。ハイパワーのI/Oドライバが外部メモリ動作中のスイッチング速度を上げました。タイマおよびシリアルポートのような全ての内部周辺機能は、より速いクロックスピードで動作するようになりました。しかし全ての段階において必ず1つ要件がついてまわりました。それは、命令セットが常に8051の命令セットと演算コードコンパチブルでなければならないということです。

その結果は?新しい8051ベースのマイクロコントローラは従来の8051に比べ3倍の効率を提供し、殆どの命令は同じ発振周波数で3倍速く動作するようになりました。コア効率が上がったことに加えて、多数のデバイスの外部発振器最高周波数が33MHzまたは40MHzに上がりました。旧式で緩慢な8051により進歩を妨げられていたシステム設計者は、ソフトウェア変更の必要なくシステムを最高速度10 MIPSまでアップグレードすることが可能になりました。

速度の改良に加えて、コアの再設計は消費電流が低減するという利点も生み出しました。物理の法則によると、デジタル回路の消費電流はトランジスタのスイッチ数とスイッチレート(周波数)に比例すると定められています。新しいコアはマシンサイクルあたりでより少ない発振器クロック数を使用するので、従来の8051に比べ1秒あたりの命令実行につき消費する電力が大きく低減しました。

ソフトウェア設定可能の内部クロック分周器を使うことにより、電力管理モードはマイクロコントローラの消費電力を一時的に低減しました。マシンサイクルレートをマシンサイクルあたり4クロックから64または256クロックまで下げることにより、電力消費量がさらに低減しました。スイッチバック機能は、外部割込みまたはシリアルポートスタートビットが検出されるとデバイスを4の分周(divide-by-4)モードに戻します。これはデバイスが低電力状態に留り、必要とあれば迅速にフルスピード動作に戻れることを可能にします。図2は異なるモードにおける相対的な消費電力を示しています。

図2. アクティビティの低減期間中、電力管理モードによってアイドルモードよりも電流消費が低減しますが、CPU動作継続は可能です。
図2. アクティビティの低減期間中、電力管理モードによってアイドルモードよりも電流消費が低減しますが、CPU動作継続は可能です。

33 MIPSの範囲を超える

1997年にダラスセミコンダクタ/マキシムは最高性能のコアの設計を開始しました。8051ベースのアプリケーションは進歩を続け、ユーザはより優れた性能を求めつづけました。設計チームは8051の命令セットを実行し、マシンサイクルあたり1クロックで命令を実行するマイクロコントローラのピーク性能を得ることを目標としました。ほとんど並行したアーキテクチャと新しい加工過程を使い、ピンレベルの8051置換え品が設計されました。

結果として生れたのが、マシンサイクルあたり1クロックの最高33 MIPSまで実行可能な新しい超高性能マイクロコントローラ、DS89C430/DS89C450です(図3)。これらのデバイスは過去の性能の障壁を破り、8ビットの価格で16ビットマイクロコントローラの性能を提供することに成功しました。多様なバスアドレスモードにより、ユーザは特定なアプリケーション設計の要件にあわせてプロセッサ動作を微調整することが可能となりました。しかしながら、最も重要なことは、8051命令セットと100%コンパチブルであり、他の8051ベースのマイクロコントローラに比べて、既存の8051アプリケーションを高速に実行することが可能であるということです。

図3. DS89C420は33 MIPSクロッキングで競合他社より優れています。
図3. DS89C430は33 MIPSクロッキングで競合他社より優れています。

電撃的なコアスピードに加えて、DS89C430/DS89C50には、最高64kBのシステム内プログラマブルフラッシュメモリが組み込まれています。ROMベースのブートストラップローダにより、マイクロコントローラのコードは最終アセンブリの前、途中、後に修正することが可能で、最高の柔軟性を提供しています。独自のまたは非標準型のインタフェースを使う他のマイクロコントローラと違い、DS89C430のブートストラップローダは、あらゆる端末エミュレータソフトウェアを使って標準PCからシリアルポートを使ってアクセスされます。

高速実行時間で大きなプログラムサイズを実現

プログラマが表現するために使える十分なメモリアドレスのスペースをプログラマに与える事ができないとスピードという利点は無駄になります。従来の8051は16ビットメモリバスを使用しており、メモリ範囲を64kBまでに制約していました。アプリケーションによっては、この限られたメモリ範囲で十分でしたが、アプリケーションのコードサイズが増大し、複雑になってくるにつれ、可能な限り8051との互換性を保ったソリューションがアプリケーションに必要であることに気が付きました。

設計者によっては、バンクスイッチングの技法を使ってアドレス範囲を拡張する可能性を見出した人もいました。I/Oラインがアドレスラインにも使われ、周辺I/Oの犠牲のもとにメモリが拡張されました。しかし、この方法には2つの大きな欠点があります。まず、コードが64kBまたはより小さなサイズにセグメントされなければならず、コードが修正される度にやり直しをしなければならない時間のかかる作業が要求されます。次にセグメント間でコード変換がなされる毎に、I/Oラインを適当な状況に変換するソフトウェアのルーチンを手動で書き込まなければなりません。これらの作業に関係してくるソフトウェアのオーバヘッドが性能を劣化してきました。

より良いソリューションとは、より多くのメモリをアドレスする大きなアドレスバスを備えたデバイスを実現することでした。このようなデバイスであるDS80C400は、16MBのプログラムメモリおよび16MBのデータメモリを直接アドレスする24ビットアドレスバスを備えています。これは8051の命令セットに新しい演算コードを必要とせず実行されます。2つのモードが提供されます。1つは高度な自動バンクスイッチングを組み込んだページアドレスモードで、メモリアクセスを高速拡張すると同時に従来の8051コンパイラのバイナリと適合しています。2つ目の連続モードは、16MBメモリマップ全部の透過アドレシングを可能にし、24ビットアドレスに必要とされる余分の演算数を提供するコンパイラが必要となります。大きなアドレススペースにより、大きなプログラムへの高速アクセスが可能になり、新しい可能性、例えば数学的機能の大きなライブラリ、ルックアップ表、またはJava™バーチャルマシンのような可能性が開かれます。これはMaxim Tiny Network Interface (TINI™)ランタイム環境を実行するDS80C390およびDS80C400を含むネットワークされたマイクロコントローラによってサポートされます。

全てのステップに対しては1つの絶対条件があります−opコードは8051インストラクションセットとコンパチブルである必要があります。

データポインタが性能を倍化

性能向上の妨害を避けるために、チップ全面における遠大な改善が必要でした。最も重要な改善はMOVXデータメモリへのアクセスに関するものでした。従来の8051デ−タメモリの操作は煩わしい作業でした。MOVXメモリのシングルバイトアクセスに、ターゲットアドレスの読み取りまたは書き込みをする前に単一16ビットデータポインタをロードするのに複数のサイクルを必要としました。

DS89C430は8051命令セットと100%コンパチブルであり、他の8051ベースのマイクロコントローラに比べて、既存の8051アプリケーションを高速に実行することが可能です。

ソフトウェアが、データを1つのMOVXメモリロケーションから他へ動かすようなブロックコピー動作を実行する場合、非効率性は倍化されました。シングルデータポインタの制限により、ブロックコピー動作において、余儀なくソースアドレスとデスティネーションアドレス両方を兼ねることになりました。従来の8051マイクロコントローラの動作は、複雑でマルチステップの手順を踏むものでした。

  1. データポインタにソースアドレスをロードする。
  2. データポインタを次のデータに増分または修正する。
  3. MOVXメモリからデータを取り込み、アキュムレータに入れる。
  4. 修正されたソースアドレスをストーレジレジスタへ保存する。
  5. デスティネーションアドレスをデータポインタにロードする。
  6. データポインタを次のデータに増分または修正する。
  7. アキュムレータからのデータをMOVXメモリに書き込む。
  8. 修正されたデスティネーションアドレスをストーレジレジスタへ保存する。

大きなアドレススペースにより、Javaバーチャルマシンのような、ネットワークマイクロコントローラでサポートされ大きなプログラムへの高速アクセスが可能になります。

上記の手順のおよそ半分がシングルデータポインタからソースおよびデスティネーションアドレスの出し入れに使われており、それが全体の性能を妨げていることに気付くと思います。ソリューションとして、ソースおよびデスティネーション専用のレジスタを作るため2つ目のデータポインタを追加します。2つ目のデータポインタにより、データ操作の殆どがハードウェアで処理され、ソフトウェアのオーバヘッドが削減されます。デュアルデータポインタは個々アドレス可能で、専用データポインタビットはMOVX命令中にどちらのポインタが有効データポインタなのか呈示します。デュアルデータポインタを使った同じブロックコピー動作の手順の数が減りました。

初期化の実行は一回のみ:

  1. ソースアドレスを最初のデータポインタに初期化する。
  2. デスティネーションアドレスを2つ目のデータポインタに初期化する。

メインループ:

  1. データをアキュムレータに取り込む。
  2. 最初のデータポインタを次のソースデータに増分または修正する。
  3. データポインタセレクタを2つ目のデータポインタに変換する。
  4. アキュムレータからのデータをMOVXメモリに書き込む。
  5. データポインタを次のデータに増分または修正する。

図4は、33MHz DS89C430で1000バイトブロックコピーのルーチン実行時間を、デュアルデータポインタを使ってシングルデータポインタでやりくりするオーバヘッドを排除することにより、33%短縮することがいかに可能であるかを示しています。高速および超高速マイクロコントローラファミリの中には、オプションとしてデータポインタを追加し強化しているものもあります。自動増分/非増分機能(図4でAIDと表示)は、MOVX関連の命令に従いデータポインタの増分または非増分を自動的に行い、必要に応じてINC DPTR命令を削除します。自動トグル機能(図4でTSLと表示)は、MOVX関連命令に従い有効データポインタを自動的にトグルするので、データポインタ間を変換する命令を削除することができます。図4はこれら全ての機能を考慮に入れたときの相対的な実行時間を示しています。全機能がイネーブルされると、DS89C430は、従来の8051マイクロプロセッサに比べて1000バイトブロックコピーのルーチンを103%も速く実行します。

図4. デュアルデータポインタで強化することにより、ブロックコピー動作の速度を改善します。
図4. デュアルデータポインタで強化することにより、ブロックコピー動作の速度を改善します。

将来展望

アプリケーションがさらに高速な動作を要求するようになるにつれ、マキシムは以前の性能を超越する設計を実現すべく努力を重ねてきました。高速スタックアクセス、拡張アドレス、またはプロセッシングの速度の改良等、当社のマイクロコントローラ設計は組込みシステム設計者のニーズを満たすための努力を反映しています。

しかし、競合性の強い設計は速度以上のものを要求します。高度なアプリケーションはより大きなプログラムを必要とするので、当社はドロップイン置換え8051マイクロコントローラの製品群を拡張し、64kBのフラッシュメモリを入れました。当社の新製品パイプラインは、周辺機能を設計考慮に入れ、組込みシステムの機能を増大すると同時に基板スペースの削減を実現します。ネットワークされたマイクロコントローラは、マルチ層ネットワーキング用のCAN、イーサネットおよび1-Wire®ネット接続を含む高度な機能を備えています。機密性の高いマイクロコントローラは公共キー暗号用のハードウェアベースの数学加速器を備え、不正対応としてキーの高速ゼロ化をサポートします。ミックストシグナルマイクロコントローラは、端末機器をより良くするために必要な実世界のシグナル処理を実行します。

マキシムのマイクロコントローラ性能に対するコミットメントは、8051コアを上回っています。新しいファミリのMAXQ® 16ビットRISCマイクロコントローラは、高い電力対性能比を実現します。これを実現する基礎となっているのは、シングルサイクル命令実行です。シングルサイクル命令実行によるエンドユーザにとっての利点は、高性能に導く命令処理能力の向上、およびクロック周波数を減少することで可能となる低減された消費電力を実現することです。MAXQの命令は、ロングジャンプ/コールおよび特定の拡張レジスタアクセスを除いて、シングルクロックサイクルで実行されます。多くのRISCマイクロコントローラがシングルサイクル実行に対応しているとしながら、小さなサブセットの命令またはアドレッシングモードに対して適用していることがよくあります。MAXQでは、シングルサイクル実行が標準となっています。

加えてMAXQアーキテクチャは、シングルサイクル動作に命令パイプライン(多くのRISCマイクロコントローラに共通)を必要としないため、クロックサイクルの高い利用効率を実現します。MAXQ命令のデコードおよび実行ハードウェアは、非常にシンプル(かつ高速タイミング)であるため、これらの処理は、プログラムフェッチと同一クロックサイクルに組み込まれるので、最大動作周波数への影響は最小となります。命令パイプラインをなくす利点を説明するには、パイプラインから実行する一般のRISC CPUを考えてください。プログラム分岐が生じた場合、CPUは1クロックサイクル以上(パイプライン深度による)を使用して、プログラムのフェッチをターゲットブランチのアドレスに迂回させて、すでにフェッチされた命令を破棄します。明らかにクロックサイクルを使って命令を破棄するのは、それらを実行するのに対して、無駄であり好ましくありません。性能を低下させ、消費電力を増加させるためです。この動作はユーザにとって望ましくないことですが、CPUがパイプラインをリロードするために必要となるクロックは、このアーキテクチャの結果であり避けられません。MAXQアーキテクチャは、命令パイプライン(およびそれにともなう無駄なクロックサイクル)なしでシングルサイクル実行を提供することで、他の8ビットおよび16ビットRISCマイクロコントローラとは一線を画します。

消費電力を最小限に抑えながら最大性能を得るための情報については、白書「Teaching Old Dogs New Tricks: Improving the Power Efficiency of 8051-Based Designs」 (English only)を参照してください。