(57)【要約】マイクロプロセッサまたはマイクロコントローラデバイスは、中央処理ユニット（ＣＰＵ）と、ＣＰＵと結合されたデータメモリとを有し得、データメモリは、複数のメモリバンクに分割され、バンク選択レジスタがどのメモリバンクが現在ＣＰＵと結合されているかを決定する。さらに、第１および第２のセットの特殊機能レジスタが提供され、コンテキストスイッチの発生に応じて、第１または第２のセットの特殊機能レジスタのいずれかがＣＰＵのためのアクティブコンテキストレジスタとして選択され、対応する他方のセットの特殊機能レジスタが非アクティブコンテキストレジスタとして選択され、アクティブコンテキストレジスタのレジスタのうちの少なくともいくつかは、データメモリの３つ以上のメモリバンクにメモリマップされ、非アクティブコンテキストレジスタの全レジスタは、データメモリ内の少なくとも１つのメモリ位置にメモリマップされる。【特許請求の範囲】
【請求項１】
マイクロプロセッサまたはマイクロコントローラデバイスであって、前記デバイスは、
中央処理ユニット（ＣＰＵ）と、
前記ＣＰＵと結合されたデータメモリであって、前記データメモリは、複数のメモリバンクに分割され、バンク選択レジスタが、どのメモリバンクが、現在、前記ＣＰＵと結合されているかを決定する、データメモリと、
第１のセットの特殊機能レジスタおよび第２のセットの特殊機能レジスタであって、コンテキストスイッチの発生に応じて、前記第１のセットの特殊機能レジスタまたは前記第２のセットの特殊機能レジスタのいずれかが、前記ＣＰＵのためのアクティブコンテキストレジスタとして選択され、対応する他方のセットの特殊機能レジスタは、非アクティブコンテキストレジスタとして選択され、前記アクティブコンテキストレジスタのレジスタのうちの少なくともいくつかは、前記データメモリのうちの３つ以上のメモリバンクにメモリマップされ、前記非アクティブコンテキストレジスタのうちの全レジスタは、前記データメモリ内の少なくとも１つのメモリ位置にメモリマップされている、第１のセットの特殊機能レジスタおよび第２のセットの特殊機能レジスタと
を備える、デバイス。
【請求項２】
前記非アクティブコンテキストレジスタのうちの全レジスタは、前記複数のメモリバンクのうちの１つのメモリバンクのみにメモリマップされている、請求項１に記載のデバイス。
【請求項３】
前記アクティブコンテキストレジスタのレジスタのうちの少なくともいくつかは、前記データメモリの全メモリバンクにメモリマップされている、請求項１に記載のデバイス。
【請求項４】
前記コンテキストレジスタは、作業レジスタ、ステータスレジスタ、間接アドレスを定義するためのファイル選択レジスタ、および、バンク選択レジスタを備える、請求項１に記載のデバイス。
【請求項５】
前記アクティブコンテキストレジスタの前記ステータスレジスタおよび前記ファイル選択レジスタのみが、前記データメモリの全メモリバンクにメモリマップされ、前記作業レジスタおよび前記バンク選択レジスタは、メモリマップされないレジスタである、請求項４に記載のデバイス。
【請求項６】
前記非アクティブコンテキストレジスタは、前記データメモリの最後のメモリバンクにメモリマップされている、請求項１に記載のデバイス。
【請求項７】
前記ＣＰＵと結合された割込ユニットをさらに備え、前記コンテキストスイッチは、割込によって誘発される、請求項１に記載のデバイス。
【請求項８】
前記コンテキストスイッチは、ソフトウェアによって誘発される、請求項１に記載のデバイス。
【請求項９】
前記デバイスは、４つのメモリバンクを備える、請求項１に記載のデバイス。
【請求項１０】
前記非アクティブコンテキストレジスタは、第４のバンクにのみメモリマップされている、請求項９に記載のデバイス。
【請求項１１】
マイクロプロセッサまたはマイクロコントローラデバイスを動作させる方法であって、前記マイクロプロセッサまたはマイクロコントローラデバイスは、中央処理ユニット（ＣＰＵ）と、前記ＣＰＵと結合されたデータメモリであって、前記データメモリは、複数のメモリバンクに分割されている、データメモリと、第１のセットの特殊機能レジスタおよび第２のセットの特殊機能レジスタであって、前記第１のセットの特殊機能レジスタまたは前記第２のセットの特殊機能レジスタのいずれかは、アクティブコンテキストを形成し、対応する他方のセットは、非アクティブコンテキストを形成する、特殊機能レジスタとを備え、前記方法は、
前記第１のセットのレジスタまたは前記第２のセットのレジスタのいずれかをアクティブコンテキストとして選択し、対応する他方のセットのレジスタを非アクティブコンテキストとして選択するステップであって、前記アクティブコンテキストレジスタのレジスタのうちの少なくともいくつかは、前記データメモリのうちの３つ以上のメモリバンクにメモリマップされ、前記非アクティブコンテキストレジスタの全レジスタは、前記データメモリ内の少なくとも１つのメモリ位置にメモリマップされる、ステップと、
コンテキストスイッチの発生に応じて、前記第１のセットのレジスタと第２のセットのレジスタとの間を、それぞれ、アクティブコンテキスト、非アクティブコンテキストとして切り替えるステップと
を含む、方法。
【請求項１２】
前記非アクティブコンテキストレジスタのうちの全レジスタは、前記複数のメモリバンクのうちの１つのメモリバンクのみにメモリマップされる、請求項１１に記載の方法。
【請求項１３】
前記コンテキストスイッチを割込によって誘発することをさらに含む、請求項１１に記載の方法。
【請求項１４】
前記コンテキストスイッチは、ソフトウェアによって誘発される、請求項１１に記載の方法。
【請求項１５】
前記デバイスは、４つのメモリバンクを備える、請求項１１に記載の方法。
【請求項１６】
前記非アクティブコンテキストレジスタは、第４のバンクにのみメモリマップされる、請求項１５に記載のデバイス。
【請求項１７】
前記アクティブコンテキストのレジスタのうちの少なくともいくつかは、前記データメモリの全メモリバンクにメモリマップされる、請求項１１に記載の方法。
【請求項１８】
前記コンテキストレジスタは、作業レジスタ、ステータスレジスタ、間接アドレスを定義するためのファイル選択レジスタ、および、バンク選択レジスタを備える、請求項１１に記載の方法。
【請求項１９】
前記アクティブコンテキストレジスタの前記ステータスレジスタおよび前記ファイル選択レジスタのみが、前記データメモリの全メモリバンクにメモリマップされ、前記作業レジスタおよび前記バンク選択レジスタは、メモリマップされないレジスタである、請求項１８に記載の方法。
【請求項２０】
前記非アクティブコンテキストレジスタは、前記データメモリの最後のメモリバンクにメモリマップされる、請求項１１に記載の方法。
【請求項２１】
前記アクティブコンテキストを通してそれぞれのメモリバンクを選択することによって、前記非アクティブコンテキストのレジスタにアクセスすることと、前記非アクティブコンテキストレジスタにアクセスすることとをさらに含む、請求項１１に記載の方法。
【請求項２２】
複数の割込を生成することを含み、割込の発生に応じて、コンテキストスイッチが生じ、割込ルーチンが、実行され、前記割込ルーチンは、前記割込ルーチンの以前の実行中に選択されたレジスタセットに記憶された値を使用する、請求項１１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願への相互参照）
本願は、米国仮特許出願６１／６１３，８０２号（２０１２年３月２１日出願）の利益を主張し、その出願は、その全体が本明細書に援用される。
【０００２】
（技術分野）
本開示は、マイクロコントローラに関し、特に、自動コンテキストスイッチ能力を有するマイクロコントローラに関する。
【背景技術】
【０００３】
マイクロコントローラは、概して、単一チップ上のシステムであり、マイクロコントローラコアまたは中央処理ユニットと、複数の周辺構成要素とを備える。８ビット、１６ビット、および３２ビットアーキテクチャを有する種々のそのようなマイクロコントローラが、存在する。本出願人であるＭｉｃｒｏｃｈｉｐ  Ｔｅｃｈｎｏｌｏｇｙ  Ｉｎｃ．によって製造された８ビットマイクロコントローラ等の既存のマイクロコントローラは、柔軟性のあるアーキテクチャを提供し、複数のファミリが、利用可能であり、各ファミリは、異なる複雑性を有する。そのようなマイクロコントローラとして、例えば、プログラムおよびデータメモリが分離されるハーバード・アーキテクチャが挙げられ得る。本タイプのマイクロコントローラはさらに、複雑な復号回路を伴わずに、データメモリへのアクセスを可能にする特有のバンク化システムを備えてもよい。概して、データメモリは、複数のバンクに分割され、バンク選択レジスタが、どのバンクが、現在、選択されており、かつアクセス可能であるかを定義する。他のバンクにアクセスするために、バンク選択レジスタは、再プログラムされる必要がある。そのようなバンク化スキームは、単一の定義されたメモリバンクのみへのアクセスを可能にするが、これらのコントローラは、所定のバンクへの切替を強制する命令を含んでもよい。これは、一般的なアクセス制限にもかかわらず、改良された高性能を提供する。
【０００４】
製品パレットによると、８ビットファミリ内の異なるファミリのマイクロコントローラは、前述のように、提供されることができる。例えば、ベースラインファミリは、必須機能性のみ提供する場合があり、それは、非常に低コストでのそのようなデバイスの製造を可能にする。例えば、そのようなベースライン製品は、割込をサポートしていない場合があり、より高度なファミリは、これらの機能性を有し得る。割込機能性は、有意な回路を追加する可能性があり、有意な回路は、そのようなデバイスを非常に低コストで製造することを可能にしない。
【０００５】
前述のように、多くのマイクロコントローラ設計、特に、８ビットマイクロコントローラは、縮小された機能性、したがって、簡略化されたアーキテクチャを有することにより、貴重なシリコン専有面積を節約し、縮小されたチップサイズ、したがって、ウエハあたりのより多くのチップ数を可能にする。例えば、本出願人であるＭｉｃｒｏｃｈｉｐ  Ｔｅｃｈｎｏｌｏｇｙ  Ｉｎｃ．の製品ラインによると、いわゆるベースライン８ビットマイクロコントローラのコード実行の多くは、割込機能の欠如によって制限される。
【０００６】
図１は、バンク化メカニズムを用いてアクセスされ得るデータメモリを伴う、そのような従来のマイクロコントローラの簡略化されたブロック図を示す。プログラムメモリ１１０は、実行可能なプログラムを形成する複数の命令を記憶する。プログラムカウンタ１１５は、２ｋ線形プログラムメモリをアドレス指定するために、例えば、１１ビットを有するように設計されてもよい。スタック１２０は、サブルーチンが実行されると、プログラムカウンタ値を記憶するために提供されてもよい。示される例示的マイクロコントローラは、プログラムメモリ１１０内に記憶された１２ビット命令語で動作する、８ビットハーバードタイプマイクロコントローラである。したがって、中央８ビットデータバス１０５が、例えば、タイマユニット０および外部ポートＢ１３０等のマイクロコントローラ内の種々の機能要素に結合するために使用されてもよい。データメモリ１２５は、本バス１０５と結合され、アドレスマルチプレクサ１４０から、例えば、８ビットアドレスを受信する。直接アドレス指定するために、アドレスマルチプレクサ１４０は、命令レジスタ１３５によって供給されるアドレスデータおよび特殊機能レジスタ１４５によって供給されるアドレスデータからのアドレスを組み合わせる。したがって、直接アドレス指定モードでは、命令レジスタ１３５が、下位５ビットを供給し、特殊機能レジスタ１４５が、上位３ビットを供給する。したがって、実施形態によると、特殊機能レジスタ１４５は、８つの異なるメモリバンクのうちの１つを選択可能なバンク選択レジスタとして動作する。間接アドレス指定では、特殊機能レジスタ１４５は、全ビット０−７を伴う完全アドレスを提供する。間接アドレス指定は、特殊機能レジスタＩＮＤＦにアクセスすることによって実施され、特殊機能レジスタＩＮＤＦは、仮想レジスタであり、したがって、物理的に実装されない。本レジスタＩＮＤＦへのいかなる読取または書込アクセスも、間接アクセスが、特殊機能レジスタ１４５を介して、データメモリ１２５に適用されるように強制する。したがって、レジスタＩＮＤＦの読取または書込の代わりに、間接データメモリアクセスが、行なわれる。
【０００７】
本タイプのアーキテクチャによると、命令レジスタ１３５は、プログラムメモリ１１０から直接命令を受信し、命令レジスタ１３５は、例えば、別の内部８ビットバスを通して、命令復号＆制御ユニット１８０と結合される。命令復号＆制御ユニット１８０はさらに、ユニット１７５によって提供される特定の内部機能と結合される。例えば、本機能ユニット１７５は、デバイスリセットタイマ、パワーオンリセット、ウォッチドッグタイマ、内部ＲＣクロック等を含んでもよい。他の機能が、統合されることができ、かつ／または、特定の機能が、省略されてもよい。タイミング生成ユニット１８５は、内部タイミング信号を提供してもよく、また、ユニット１７５と結合されることもできる。図１に示される従来の８ビットマイクロコントローラコアは、ステータスレジスタ１５０と結合された算術論理ユニット１６０（ＡＬＵ）を有する。ＡＬＵ１６０はさらに、作業レジスタ１６５と結合され、一方では、命令レジスタ１３５および８ビットデータバスからマルチプレクサ１５５を通してデータを受信し、他方では、作業レジスタ１６５からデータを受信する。図１は、したがって、単に、いわゆるベースラインマイクロコントローラコアのいくつかの必須構造を示す。
【０００８】
図２は、より多くの機能性を提供するマイクロコントローラコアの別のブロック図の例を示す。概して、同様の要素は、同一の参照記号を保有する。図２に示されるデータメモリＲＡＭ２２５は、図１に示されるメモリと同じであることができる。しかしながら、異なる参照記号は、本ＲＡＭ２２５が、より詳細に以下に説明されるように、異なってマップされることを示すために使用される。本データメモリは、ここでは、複数の順次メモリバンクから成る線形メモリブロックを備え、特殊機能レジスタは、複数の順次メモリバンクにマップされない。付加的バンク選択レジスタ（ＢＳＲ）２１０が、提供され、本レジスタは、専用命令を通してアクセス可能であり、したがって、メモリがマップされなくてもよい。本レジスタ２１０のコンテンツは、命令レジスタ１３５から下位５ビットを受信するアドレスマルチプレクサ２２０によって提供されるアドレスの上位３ビットを提供する。特殊機能レジスタＦＳＲ１４５は、ここでは、現在選択されているメモリバンクから独立して、線形データメモリ全体の間接アドレス指定のために使用され得る８ビットレジスタであってもよい。他の実施形態では、本レジスタは、ビット７を恒久的に「１」に設定することによって、線形データメモリを形成する上位４つのバンクにアクセスするように制限されることができる。しかしながら、本レジスタは、それ自体、もはやバンク選択機能を提供しない。バンク選択は、それぞれのバンク番号をメモリマップされないバンク選択レジスタ２１０に書き込むことによってのみもたらされる。したがって、線形メモリブロック内のメモリバンクが選択されるときでも、専用命令が、任意の他のメモリバンクへの変更を可能にする。低コストマイクロコントローラコアの他の内部構造が、可能性として考えられ、以下により詳細に説明されるように、種々の実施形態に開示される特有の実施形態と組み合わせられることができる。
【０００９】
前述のように、多くの低コストマイクロコントローラコアは、コア論理の増加により、割込機能性を提供しない。単純割込論理２５０が、図２に示されるような、前述のアーキテクチャに追加されることができ、例えば、種々のソースから割込を開始し得る単一割込入力ＩＮＴが、提供されることができ、ソフトウェアが、割込関連タスクの識別および管理に対処する必要がある。そのような単純割込論理２５０が実装される場合、割込サービスルーチンコードは、共通特殊機能レジスタをメインラインコードと共有しなければならない。したがって、レジスタ２４５、１６５、および１５０等の特定のレジスタは、割込ルーチンを開始するとき、手動で保存される必要がある。特定のマイクロコントローラ、例えば、本出願人のマイクロコントローラシリーズＰＩＣ１６Ｆ１ｘｘｘは、いわゆるシャドーレジスタを使用して、自動保存を提供し、コンテキストレジスタの機能を復元する。シャドーレジスタは、単に、現在のコンテキストを保存する目的のための特殊機能レジスタである。これらは、割込が開始されるたびに、上書きされ、そのコンテンツは、割込ルーチンからの戻りに応じて、それぞれのコンテキストレジスタに書き戻される。しかしながら、これは、改良ではあるが、割込能力を追加するとき、それらのレジスタを手動で記憶および復元する必要性をなくし、保存されたコンテキストのさらなる使用を可能にする、さらにより改良された自動コンテキストスイッチの必要性が存在する。
【発明の概要】
【課題を解決するための手段】
【００１０】
（概要）
実施形態によると、マイクロプロセッサまたはマイクロコントローラデバイスは、中央処理ユニット（ＣＰＵ）と、ＣＰＵと結合されたデータメモリであって、そのデータメモリは、複数のメモリバンクに分割され、バンク選択レジスタが、どのメモリバンクが、現在、ＣＰＵと結合されているかを決定する、データメモリと、第１のセットの特殊機能レジスタおよび第２のセットの特殊機能レジスタであって、コンテキストスイッチの発生に応じて、第１のセットの特殊機能レジスタまたは第２のセットの特殊機能レジスタのいずれかが、ＣＰＵのためのアクティブコンテキストレジスタとして選択され、対応する他方のセットの特殊機能レジスタは、非アクティブコンテキストレジスタとして選択され、アクティブコンテキストレジスタのレジスタのうちの少なくともいくつかは、データメモリのうちの３つ以上のメモリバンクにメモリマップされ、非アクティブコンテキストレジスタの全レジスタは、データメモリ内の少なくとも１つのメモリ位置にメモリマップされている、特殊機能レジスタとを備えてもよい。
【００１１】
さらなる実施形態によると、非アクティブコンテキストレジスタのうちの全レジスタは、複数のメモリバンクのうちの１つのメモリバンクのみにメモリマップされることができる。さらなる実施形態によると、アクティブコンテキストレジスタのレジスタのうちの少なくともいくつかは、データメモリの全メモリバンクにメモリマップされることができる。さらなる実施形態によると、コンテキストレジスタは、作業レジスタ、ステータスレジスタ、間接アドレスを定義するためのファイル選択レジスタ、および、バンク選択レジスタを備えてもよい。さらなる実施形態によると、アクティブコンテキストレジスタのステータスレジスタおよびファイル選択レジスタのみが、データメモリの全メモリバンクにメモリマップされもよく、作業レジスタおよびバンク選択レジスタは、メモリマップされないレジスタである。さらなる実施形態によると、非アクティブコンテキストレジスタは、データメモリの最後のメモリバンクにメモリマップされることができる。さらなる実施形態によると、本デバイスはさらに、ＣＰＵと結合された割込ユニットを備えてもよく、コンテキストスイッチは、割込によって誘発される。さらなる実施形態によると、コンテキストスイッチは、ソフトウェアによって誘発されることができる。さらなる実施形態によると、本デバイスは、４つのメモリバンクを備えてもよい。さらなる実施形態によると、非アクティブコンテキストレジスタは、第４のバンクのみメモリマップされることができる。
【００１２】
別の実施形態によると、中央処理ユニット（ＣＰＵ）と、ＣＰＵと結合されたデータメモリであって、そのデータメモリは、複数のメモリバンクに分割される、データメモリと、第１のセットの特殊機能レジスタおよび第２のセットの特殊機能レジスタであって、第１のセットの特殊機能レジスタまたは第２のセットの特殊機能レジスタのいずれかが、アクティブコンテキストを形成し、対応する他方のセットは、非アクティブコンテキストを形成する、特殊機能レジスタとを備えるマイクロプロセッサまたはマイクロコントローラデバイスを動作させる方法は、第１のセットのレジスタまたは第２のセットのレジスタのいずれかをアクティブコンテキストとして選択し、対応する他方のセットのレジスタを非アクティブコンテキストとして選択するステップであって、アクティブコンテキストレジスタのレジスタのうちの少なくともいくつかは、データメモリのうちの３つ以上のメモリバンクにメモリマップされ、非アクティブコンテキストレジスタのうちの全レジスタは、データメモリ内の少なくとも１つのメモリ位置にメモリマップされる、ステップと、コンテキストスイッチの発生に応じて、第１のセットのレジスタと第２のセットのレジスタとの間で、それぞれ、アクティブ、非アクティブコンテキストとして切り替えるステップとを含んでもよい。
【００１３】
本方法のさらなる実施形態によると、非アクティブコンテキストレジスタのうちの全レジスタは、複数のメモリバンクのうちの１つのメモリバンクのみにメモリマップされることができる。本方法のさらなる実施形態によると、本方法はさらに、割込によってコンテキストスイッチを誘発することを含んでもよい。本方法のさらなる実施形態によると、コンテキストスイッチは、ソフトウェアによって誘発されることができる。本方法のさらなる実施形態によると、本デバイスは、４つのメモリバンクを備えてもよい。本方法のさらなる実施形態によると、非アクティブコンテキストレジスタは、第４のバンクのみにメモリマップされることができる。本方法のさらなる実施形態によると、アクティブコンテキストのレジスタのうちの少なくともいくつかは、データメモリの全メモリバンクにメモリマップされることができる。本方法のさらなる実施形態によると、コンテキストレジスタは、作業レジスタ、ステータスレジスタ、間接アドレスを定義するためのファイル選択レジスタ、および、バンク選択レジスタを備えてもよい。本方法のさらなる実施形態によると、アクティブコンテキストレジスタのステータスレジスタおよびファイル選択レジスタのみが、データメモリの全メモリバンクにメモリマップされ、作業レジスタおよびバンク選択レジスタは、メモリマップされないレジスタである。本方法のさらなる実施形態によると、非アクティブコンテキストレジスタは、データメモリの最後のメモリバンクにメモリマップされる。本方法のさらなる実施形態によると、本方法はさらに、アクティブコンテキストを通してそれぞれのメモリバンクを選択することによって、非アクティブコンテキストのレジスタにアクセスすること、および非アクティブコンテキストレジスタにアクセスすることを含んでもよい。本方法のさらなる実施形態によると、本方法は、複数の割込を生成することを備えてもよく、割込の発生に応じて、コンテキストスイッチが生じ、割込ルーチンが、実行され、割込ルーチンは、割込ルーチンの以前の実行中に選択されたレジスタセット内に記憶された値を使用する。
【図面の簡単な説明】
【００１４】
【図１】図１は、従来のマイクロコントローラのブロック図を示す。
【図２】図２は、別の従来のマイクロコントローラのブロック図を示す。
【図３】図３は、スワップ可能なシャドーレジスタセットの実施形態を示す。
【図４】図４は、二重レジスタセットを提供するための循環バッファの別の実施形態を示す。
【図５】図５は、種々の実施形態による、メモリマッピングを示す。
【図６】図６および図７は、詳細な特殊機能要約表を示す。
【図７】図６および図７は、詳細な特殊機能要約表を示す。
【図８】図８は、種々の実施形態による、割込優先順位を示す。
【発明を実施するための形態】
【００１５】
（詳細な説明）
前述のマイクロコントローラにおけるベースラインＣＰＵは、多くの場合、割込能力を有していない。ベースラインＣＰＵに割込を追加することは、特有の短所および制限を提示する。種々の実施形態によるコンテキストスイッチは、それらの短所の多くを克服する。
【００１６】
割込能力を有するデバイスが、その割込サービスルーチン（ＩＳＲ）にベクトル化（ｖｅｃｔｏｒ）されると、種々のレジスタの値、すなわち、コンテキストは、メインラインコードへの戻りに応じて、プログラムが中断した場所から再開することを可能にするように、保存および復元されなければならない。他のレジスタは、デバイスがＩＳＲにベクトル化するたびに、再初期化されなければならない。種々の実施形態によるコンテキストスイッチは、これらの重要レジスタのコピーが、各メインラインおよびＩＳＲ実行コードのために維持されて使用のためにスワップされることを可能にする。種々の実施形態によると、コンテキストレジスタへの循環バッファの追加は、含まれる値が、ＩＳＲの開始および終了に応じて、スワップすることを可能にするように提供される。
【００１７】
種々の実施形態によると、例えば、図３または図４に示されるように、コンテキストスイッチメカニズムが、基本プロセッサ論理に追加されることにより、割込能力および関連付けられたコンテキストスイッチを提供することができる。したがって、図１または図２に示されるようなアーキテクチャは、スワップ機能が追加された付加的セットのレジスタを提供することによって、改良されることができる。故に、現在のコンテキストをシャドーレジスタセットに保存する代わりに、第２のセットのレジスタ全体が、提供され、割込の実行中、この第２のセットが、使用される。したがって、割込コンテキストが、提供され、割込コンテキストのコンテンツは、関連付けられた割込コンテキストレジスタ内に記憶されたままである一方、「通常」コンテキストは、規定のコンテキストレジスタを用いて、同一の方法で維持される。本タイプの二重レジスタセットは、以下により詳細に説明されるように、特に、循環バッファの使用によって実装されることができ、循環バッファは、循環バッファ機能を提供するために、データのブロックをラップアラウンドする個別のポインタを使用する。
【００１８】
図３は、コンテキストスイッチ機能性を提供するために使用され得る循環バッファの例示的実施形態を示す。循環バッファ３００は、アクティブコンテキストおよび非アクティブコンテキストを記憶するために使用される２つのレジスタセットのための記憶容量を提供するように設計されてもよい。例えば、コンテキストは、４個、８個、または１６個のレジスタを含んでもよく、したがって、循環バッファ３００は、８個、１６個、または３２個のメモリ位置あるいはレジスタを提供する。循環バッファ３００は、メインデータメモリ２２５に少なくとも部分的にメモリマップされることができる。例えば、循環バッファ３００の最初の半分は、メインコンテキストとして使用されてもよく、後の半分は、割込コンテキストとして使用されてもよい。２つのコンテキストのうちの１つのみ、随時、「アクティブ」である一方、対応する他方のコンテキストは、「非アクティブ」である。したがって、循環バッファの最初の半分の特定のレジスタが、全メモリバンクにメモリマップされることができ、後の半分の全レジスタは、単一、好ましくは、最後のメモリバンクのみにメモリマップされもよい。したがって、バンクへのアクティブレジスタセットのメモリマッピングは、非アクティブレジスタセットのメモリマッピングと同一である必要はない。アクティブコンテキストは、全部または選択された数のバンクに部分的にマップされることができるが、「非アクティブ」コンテキストの全レジスタは、単一のメモリバンク、好ましくは、最後のメモリバンクにメモリマップされる。アクティブコンテキストの特定のレジスタは、全くメモリがマップされず、代わりに、特有のレジスタに有線接続またはマップされることにより、特有の機能を行なってもよい。したがって、マイクロコントローラの動作中、アクティブコンテキストのメモリがマップされたレジスタは、全メモリバンクにおいてアクセス可能である一方、他のメモリマップされないレジスタは、専用命令を通してのみ、利用可能である。例えば、バンク選択レジスタは、特有の命令を通してのみ、利用可能であってもよい。作業レジスタは、種々の実施形態によると、メモリマップされてもよく、またはメモリマップされなくてもよい。特定のコンテキストレジスタは、全メモリバンク、例えば、ステータスレジスタＳＴＡＴＵＳおよび／またはファイル選択レジスタＦＳＲにメモリマップされもよい。しかしながら、非アクティブコンテキストの全レジスタは、少なくとも、単一の「メモリ位置」にメモリマップされる。これらは、それらのアクティブレジスタをそのメモリバンク内で利用不可能にするアクティブコンテキストのそれぞれのレジスタの同一の位置にメモリマップされる必要はない。また、他の実施形態によると、これらのレジスタが全て、同一のバンク内に置かれるか、または最後のバンク内に位置する必要はない。
【００１９】
本実施形態によるメモリマッピングは、図３に示されるように、ポインタ３１０、３２０を用いて提供されることができる。したがって、ポインタ３１０は、現在アクティブコンテキストである第１のレジスタを指す一方、ポインタ３３０は、非アクティブコンテキストの第１のレジスタを指す。他のレジスタは、所定の関係に従って、メモリマップされてもよい。したがって、メモリマッピングは、連続する必要はない。表が、各レジスタをメモリマップするために定義されてもよい。そのような表はまた、アクティブコンテキストのメモリマップされないレジスタを定義するために使用されてもよい。同様に、非アクティブコンテキストの全レジスタは、表を用いて、単一のメモリバンクにメモリマップされてもよい。図３に示されるような、ＡからＢへのコンテキストスイッチは、ポインタ３１０’に、今度は、下半分を指させる一方、ポインタ３３０’に、今度は、循環バッファ３００の上半分を指させる。本機能性は、単に、定数値をそれぞれのアドレスポインタに追加することによって提供されることができる。バッファ３００のための最大可能アドレスをラップアラウンドすることによって、循環バッファ機能が、実現される。故に、通常の動作中、バッファ３００の上半分によって定義されるコンテキストは、図３の左側の参照記号Ａで示されるように、アクティブコンテキストとして選択される一方、バッファ３００の下半分のコンテキストは、最後のバンクのみにメモリマップされる。割込ルーチンの開始に応じて、コンテキストポインタは、図３の右側に示されるように、参照記号Ｂに従って配置される。今度は、ポインタ３１０’は、バッファ３００の下半分を指す。したがって、バッファ３００の下半分のレジスタは、今度は、アクティブコンテキストとして選択される。したがって、割込ルーチンの再開は、今度は、割込ルーチンの前の実行によって残された同一のコンテキストを提供し、非アクティブコンテキストは、最後のメモリバンクを通して完全に利用可能である。
【００２０】
図４は、類似機能性を提供する別の実施形態を示す。ここでは、２つのバッファ４１０および４２０が提供され、バッファ４１０は、通常コンテキストのために提供され、バッファ４２０は、割込コンテキストのために提供される。双方向性マルチプレクサ４３０および４４０は、特定のレジスタをデータメモリ４５０の種々のメモリバンク４５０ｉにメモリマップするために提供される。例えば、マルチプレクサ４３０の第１のＩ／Ｏは、レジスタセット４１０のあるレジスタを全メモリバンク４５０１．．４５０ｎにメモリマップしてもよい一方、第２のＩ／Ｏは、全レジスタをメモリバンク４５０ｎのみにマップする。第２のマルチプレクサ４４０は、図４に示されるように、逆機能を行なう。したがって、レジスタセット４１０またはレジスタセット４２０のいずれかが、メインレジスタセットとして選択される。付加的回路が、メモリマップされないレジスタへの接続またはメモリマップされないレジスタの選択を提供するために提供されてもよい。
【００２１】
図５は、実施形態による、ベースラインマイクロコントローラ内のメモリマッピングの実装を示す。ここでは、例えば、データメモリは、４つのメモリバンクのためのメモリ空間のみ提供し、各メモリバンクは、３２個のレジスタを備える。したがって、各メモリバンクは、５ビットのみによって、完全にアドレス指定されることができる。これは、例えば、１２ビットのみを使用する縮小された命令サイズを可能にする。図５に示されるように、コンテキストは、限定された数の選択された特殊機能レジスタのみから成ってもよい。図５によると、コンテキストは、４つのレジスタ、すなわち、作業レジスタＷ、ステータスレジスタＳＴＡＴＵＳ、間接アドレスレジスタＦＳＲ、およびバンク選択レジスタＢＳＲを有する。図から分かるように、本実施形態によると、４つのアクティブコンテキストレジスタのうちの２つ、すなわち、作業レジスタＷおよびバンク選択レジスタＢＳＲは、全くメモリマップされない。他の２つ、すなわち、ステータスレジスタＳＴＡＴＵＳおよびファイル選択レジスタＦＳＲは、それぞれ、アドレス０３ｈおよび０４ｈにおいて、全メモリバンクにメモリマップされる。最後のメモリバンク「０１１」は、非アクティブコンテキストを含む。示されるように、非アクティブ作業レジスタＩ＿Ｗは、アドレス０１ｈに記憶され、非アクティブステータスレジスタＩ＿ＳＴＡＴＵＳは、アドレス０６ｈに記憶され、非アクティブファイル選択レジスタは、アドレス０７ｈに記憶され、非アクティブバンク選択レジスタＩ＿ＢＳＲは、アドレス０８ｈに記憶される。図５の実施形態では、アドレス０Ｃｈからアドレス０Ｆｈにおけるレジスタは、全メモリバンクにメモリマップされる一方、各バンクは、メモリ位置１０ｈから１Ｆｈに別個の汎用レジスタを有する。さらに、アドレス００ｈから０Ｂｈにおける特殊機能レジスタのメモリマッピングは、全バンクに対して同一ではない。バンク「０００」および「０１０」のみが、それらのアドレスに同じメモリマッピングを有する。他のレジスタまたはより多くのレジスタが、他の実施形態によると、コンテキストのために選択されてもよい。
【００２２】
図６および図７は、第１の１２個のメモリマップされた特殊機能レジスタのみのより詳細なリストを示す。再び、コンテキストは、４つのレジスタ、作業レジスタＷ、バンク選択レジスタＢＳＲ、ステータスレジスタＳＴＡＴＵＳ、およびファイル選択レジスタＦＳＲから成る。本実施形態によると、再び、２つのレジスタ、すなわち、アクティブコンテキストのＳＴＡＴＵＳおよびＦＳＲのみが、図６および図７に示されるように、それぞれのアドレス０３ｈ、０４ｈにおける全メモリバンクにメモリマップされる一方、４つのメモリマップされないレジスタＷ、ＴＲＩＳ、ＯＰＴＩＯＮ、およびＢＳＲは、依然として、図６および図７の表に示されるように、「全バンクに」提供される。非アクティブコンテキストは、線形化アドレス６１ｈ、６６ｈ、６７ｈ、および６８ｈにおいて、最後のメモリバンクのみにメモリマップされる。
【００２３】
種々の実施形態によると、付加的命令が、前述のように、拡張割込機能性を有するベースラインマイクロコントローラのために提供されることができる。例えば、Ｒｅｔｕｒｎ命令、Ｒｅｔｕｒｎ  ｆｒｏｍ  Ｉｎｔｅｒｒｕｐｔ命令、およびＭｏｖｅ  Ｌｉｔｅｒａｌ  ｔｏ  ＢＳ命令が、そのようなマイクロコントローラコアに追加されることにより、割込および他のコンテキストスイッチ機能性をさらにサポートすることができる。したがって、種々の実施形態によると、重要な特殊機能レジスタのコンテキストスイッチは、割込サービスルーチンの開始および終了のためだけではなく、また、ソフトウェアによって制御される他のイベントのためにも追加されることができる。
【００２４】
種々の実施形態によると、以下の３つの新しい命令が、ベースラインマイクロコントローラに追加されてもよい。
【００２５】
ＭＯＶＬＢ  −  Ｍｏｖｅ  Ｌｉｔｅｒａｌ  ｔｏ  ＢＳＲ  Ｒｅｇｉｓｔｅｒ：本命令は、定数値をバンク選択レジスタに書き込み、それによって、バンク切替を強制することによって、直接、バンク選択レジスタを制御する。１２ビットＯｐｃｏｄｅは、１２’ｈ０１０−１２’ｈ０１７を使用してもよい。
【００２６】
ＲＥＴＵＲＮ  −  Ｒｅｔｕｒｎ  ｆｒｏｍ  ＣＡＬＬ：本命令は、サブルーチン呼び出しから復帰させ、ベースラインは、最後のプログラム位置からの１バイトを作業レジスタに返すＲＥＴＬＷのみを提供していた。１２ビットＯｐｃｏｄｅは、１２’ｈ０１Ｅを使用してもよい。
【００２７】
ＲＥＴＦＩＥ  −  Ｒｅｔｕｒｎ  ｆｒｏｍ  Ｉｎｔｅｒｒｕｐｔ：本命令は、割込から復帰させ、前述のように、従来のベースラインデバイスは、割込を有していなかった。１２ビットＯｐｃｏｄｅは、１２’ｈ０１Ｆを使用してもよい。
【００２８】
割込コンテキストスイッチは、以下のように、種々の実施形態に従って実装される。選択されたＳＦＲの第２のコピー（コンテキスト）が、割込サービスルーチンから実行するときに使用される。例えば、ＦＳＲレジスタ、ＳＴＡＴＵＳレジスタ、ＢＳＲレジスタ、およびＷレジスタは、種々の実施形態による改良されたマイクロコントローラデバイス上でスワップされることができる。現在のコンテキストを保存してサービスルーチンの開始および終了に応じて、それを復元するためにいわゆるシャドーレジスタを使用するＰＩＣ１６Ｆ１ｘｘｘライン等の先行技術デバイスから公知であるが、種々の実施形態は、種々のメモリバンクのうちの１つに実装され得る第２のレジスタセットをスワップすることが可能である。故に第２のコンテキストレジスタセットのコンテンツが、それぞれのトリガに応じて、メインコンテキストレジスタセットの代わりに使用される、真のコンテキストスイッチが生じる。したがって、割込ルーチンは、最初に、これらのレジスタを初期化する必要なく、これらのレジスタのための完全に異なるセットの値を使用してもよい。メインプログラムの値は、同様に、スワップメカニズムを通して対処される。
【００２９】
以下の２つのレジスタスワップトリガソースが存在し得る。
−割込のベクトル化
−割込復帰命令。
【００３０】
各コンテキストは、その個別のソースによってもたらされることができる。本実施形態は、２つのコンテキストを使用する。別の実施形態によると、Ｉｎｔｅｒｒｕｐｔ０、Ｉｎｔｅｒｒｕｐｔ１、Ｉｎｔｅｒｒｕｐｔ２、およびＭａｉｎの４つが存在し得る。
【００３１】
種々の実施形態によると、非アクティブコンテキストは、常時、図７に示されるように、Ｉ＿Ｗレジスタ、Ｉ＿ＳＴＡＴＵＳレジスタ、Ｉ＿ＦＳＲレジスタ、およびＩ＿ＢＳＲレジスタによって、特殊機能レジスタのＢａｎｋ３において見ることができる。
【００３２】
種々の実施形態による割込機能は、デフォルトで有効にされることができる。従来のベースラインデバイスでは、任意の割込ソースが、デバイスをリセットさせた。ＧＩＥビットを設定することは、代わりに、デバイスをアドレス０ｘ００４にベクトル化させ、割込サービスルーチン（ＩＳＲ）の実行を可能にする。
【００３３】
Ｒｅｔｕｒｎ  Ｆｒｏｍ  Ｉｎｔｅｒｒｕｐｔ（ＲＥＴＦＩＥ）命令は、ＩＳＲから復帰させるために使用され、ＧＩＥビットを設定し、後の割込を可能にする。デバイスがＩＳＲから実行している間、二次セットのＷレジスタ、ＳＴＡＴＵＳレジスタ、ＦＳＲレジスタ、およびＢＳＲレジスタが、ＣＰＵによって使用される。これらのレジスタは、依然として、同一の位置にアドレス指定されるが、ＩＳＲ内で使用するための不変の独立値を保持する。これは、これらのレジスタのコンテンツが、メインライン実行における割込によって影響を受けないことを可能にする。他のコンテキストのレジスタのコンテンツは、Ｉ＿Ｗレジスタ、Ｉ＿ＳＴＡＴＵＳレジスタ、Ｉ＿ＦＳＲレジスタ、およびＩ＿ＢＳＲレジスタによって、ＳＦＲマップのバンク３において見ることができる。ＩＳＲから実行するとき、これらは、メインラインコンテキストを示し、その逆もまた同様である。
【００３４】
ある実施形態によると、４つの割込ソース、すなわち、タイマＴＭＲ０、アナログ／デジタルコンバータＡＤＣ、コンパレータ、およびＰｉｎ  Ｃｈａｎｇｅの割込が利用可能であってもよい。割込は、ＩＮＴＥＩ＿ＲＥＧレジスタ内のｘｘＩＥビットを使用して有効にされる。Ｐｉｎ  Ｃｈａｎｇｅの割込は、オプションレジスタＯＰＴＩＯＮのＲＡＷＵビットを使用して有効にされ、ＲＡＩＦビットが機能することを可能にすることができる。コンパレータ割込フラグは、割込生成が、図６に示されるように、ＣＭ１ＣＯＮ０およびＣＭ２ＣＯＮ０レジスタ内で有効にされる場合、使用されることができる。
【００３５】
ＩＮＴＣＯＮのＧＩＥビットは、割込サービスルーチンへのベクトル化を有効にする。ＷＵＲビットが設定されると、スリープ中のいずれの有効にされた割込ソースも、デバイスをウェークアップさせ、リセットさせる。本機能は、従来のベースライン動作に類似する。
【００３６】
図８は、内部プログラミングに従う異なる優先順位の可能性として考えられる実装である。ここでは、３つの制御ビット、すなわち、低電力モードを示す「Ｉｎ  Ｓｌｅｅｐ」、割込を有効にする「ＧＩＥ」、およびウェークアップリセットを示すための「ＷＵＲ」が、提供される。図８における表は、これらのビットの異なる設定に従う関連付けられた機能を示す。したがって、デバイスリセット、ベクトル化、または継続動作のいずれかが、それぞれの設定に従ってもたらされ得る。
【図１】
2015511049.tif 000002
【図２】
2015511049.tif 000003
【図３】
2015511049.tif 000004
【図４】
2015511049.tif 000005
【図５】
2015511049.tif 000006
【図６】
2015511049.tif 000007
【図７】
2015511049.tif 000008
【図８】
2015511049.tif 000009
【国際調査報告】
2015511049.tif 000010
2015511049.tif 000011