JP2015511049A - コンテキストスイッチを伴うマイクロコントローラ - Google Patents

コンテキストスイッチを伴うマイクロコントローラ Download PDF

Info

Publication number
JP2015511049A
JP2015511049A JP2015501841A JP2015501841A JP2015511049A JP 2015511049 A JP2015511049 A JP 2015511049A JP 2015501841 A JP2015501841 A JP 2015501841A JP 2015501841 A JP2015501841 A JP 2015501841A JP 2015511049 A JP2015511049 A JP 2015511049A
Authority
JP
Japan
Prior art keywords
memory
register
context
registers
bank
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015501841A
Other languages
English (en)
Other versions
JP6143841B2 (ja
Inventor
ゼケ ランドストラム,
ゼケ ランドストラム,
ファニー ダベンヘイグ,
ファニー ダベンヘイグ,
ショーン スティードマン,
ショーン スティードマン,
ケビン リー キルザー,
ケビン リー キルザー,
ジョセフ ユーリッハー,
ジョセフ ユーリッハー,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microchip Technology Inc
Original Assignee
Microchip Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microchip Technology Inc filed Critical Microchip Technology Inc
Publication of JP2015511049A publication Critical patent/JP2015511049A/ja
Application granted granted Critical
Publication of JP6143841B2 publication Critical patent/JP6143841B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30138Extension of register space, e.g. register cache

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

マイクロプロセッサまたはマイクロコントローラデバイスは、中央処理ユニット(CPU)と、CPUと結合されたデータメモリとを有し得、データメモリは、複数のメモリバンクに分割され、バンク選択レジスタがどのメモリバンクが現在CPUと結合されているかを決定する。さらに、第1および第2のセットの特殊機能レジスタが提供され、コンテキストスイッチの発生に応じて、第1または第2のセットの特殊機能レジスタのいずれかがCPUのためのアクティブコンテキストレジスタとして選択され、対応する他方のセットの特殊機能レジスタが非アクティブコンテキストレジスタとして選択され、アクティブコンテキストレジスタのレジスタのうちの少なくともいくつかは、データメモリの3つ以上のメモリバンクにメモリマップされ、非アクティブコンテキストレジスタの全レジスタは、データメモリ内の少なくとも1つのメモリ位置にメモリマップされる。

Description

(関連出願への相互参照)
本願は、米国仮特許出願61/613,802号(2012年3月21日出願)の利益を主張し、その出願は、その全体が本明細書に援用される。
(技術分野)
本開示は、マイクロコントローラに関し、特に、自動コンテキストスイッチ能力を有するマイクロコントローラに関する。
マイクロコントローラは、概して、単一チップ上のシステムであり、マイクロコントローラコアまたは中央処理ユニットと、複数の周辺構成要素とを備える。8ビット、16ビット、および32ビットアーキテクチャを有する種々のそのようなマイクロコントローラが、存在する。本出願人であるMicrochip Technology Inc.によって製造された8ビットマイクロコントローラ等の既存のマイクロコントローラは、柔軟性のあるアーキテクチャを提供し、複数のファミリが、利用可能であり、各ファミリは、異なる複雑性を有する。そのようなマイクロコントローラとして、例えば、プログラムおよびデータメモリが分離されるハーバード・アーキテクチャが挙げられ得る。本タイプのマイクロコントローラはさらに、複雑な復号回路を伴わずに、データメモリへのアクセスを可能にする特有のバンク化システムを備えてもよい。概して、データメモリは、複数のバンクに分割され、バンク選択レジスタが、どのバンクが、現在、選択されており、かつアクセス可能であるかを定義する。他のバンクにアクセスするために、バンク選択レジスタは、再プログラムされる必要がある。そのようなバンク化スキームは、単一の定義されたメモリバンクのみへのアクセスを可能にするが、これらのコントローラは、所定のバンクへの切替を強制する命令を含んでもよい。これは、一般的なアクセス制限にもかかわらず、改良された高性能を提供する。
製品パレットによると、8ビットファミリ内の異なるファミリのマイクロコントローラは、前述のように、提供されることができる。例えば、ベースラインファミリは、必須機能性のみ提供する場合があり、それは、非常に低コストでのそのようなデバイスの製造を可能にする。例えば、そのようなベースライン製品は、割込をサポートしていない場合があり、より高度なファミリは、これらの機能性を有し得る。割込機能性は、有意な回路を追加する可能性があり、有意な回路は、そのようなデバイスを非常に低コストで製造することを可能にしない。
前述のように、多くのマイクロコントローラ設計、特に、8ビットマイクロコントローラは、縮小された機能性、したがって、簡略化されたアーキテクチャを有することにより、貴重なシリコン専有面積を節約し、縮小されたチップサイズ、したがって、ウエハあたりのより多くのチップ数を可能にする。例えば、本出願人であるMicrochip Technology Inc.の製品ラインによると、いわゆるベースライン8ビットマイクロコントローラのコード実行の多くは、割込機能の欠如によって制限される。
図1は、バンク化メカニズムを用いてアクセスされ得るデータメモリを伴う、そのような従来のマイクロコントローラの簡略化されたブロック図を示す。プログラムメモリ110は、実行可能なプログラムを形成する複数の命令を記憶する。プログラムカウンタ115は、2k線形プログラムメモリをアドレス指定するために、例えば、11ビットを有するように設計されてもよい。スタック120は、サブルーチンが実行されると、プログラムカウンタ値を記憶するために提供されてもよい。示される例示的マイクロコントローラは、プログラムメモリ110内に記憶された12ビット命令語で動作する、8ビットハーバードタイプマイクロコントローラである。したがって、中央8ビットデータバス105が、例えば、タイマユニット0および外部ポートB130等のマイクロコントローラ内の種々の機能要素に結合するために使用されてもよい。データメモリ125は、本バス105と結合され、アドレスマルチプレクサ140から、例えば、8ビットアドレスを受信する。直接アドレス指定するために、アドレスマルチプレクサ140は、命令レジスタ135によって供給されるアドレスデータおよび特殊機能レジスタ145によって供給されるアドレスデータからのアドレスを組み合わせる。したがって、直接アドレス指定モードでは、命令レジスタ135が、下位5ビットを供給し、特殊機能レジスタ145が、上位3ビットを供給する。したがって、実施形態によると、特殊機能レジスタ145は、8つの異なるメモリバンクのうちの1つを選択可能なバンク選択レジスタとして動作する。間接アドレス指定では、特殊機能レジスタ145は、全ビット0−7を伴う完全アドレスを提供する。間接アドレス指定は、特殊機能レジスタINDFにアクセスすることによって実施され、特殊機能レジスタINDFは、仮想レジスタであり、したがって、物理的に実装されない。本レジスタINDFへのいかなる読取または書込アクセスも、間接アクセスが、特殊機能レジスタ145を介して、データメモリ125に適用されるように強制する。したがって、レジスタINDFの読取または書込の代わりに、間接データメモリアクセスが、行なわれる。
本タイプのアーキテクチャによると、命令レジスタ135は、プログラムメモリ110から直接命令を受信し、命令レジスタ135は、例えば、別の内部8ビットバスを通して、命令復号&制御ユニット180と結合される。命令復号&制御ユニット180はさらに、ユニット175によって提供される特定の内部機能と結合される。例えば、本機能ユニット175は、デバイスリセットタイマ、パワーオンリセット、ウォッチドッグタイマ、内部RCクロック等を含んでもよい。他の機能が、統合されることができ、かつ/または、特定の機能が、省略されてもよい。タイミング生成ユニット185は、内部タイミング信号を提供してもよく、また、ユニット175と結合されることもできる。図1に示される従来の8ビットマイクロコントローラコアは、ステータスレジスタ150と結合された算術論理ユニット160(ALU)を有する。ALU160はさらに、作業レジスタ165と結合され、一方では、命令レジスタ135および8ビットデータバスからマルチプレクサ155を通してデータを受信し、他方では、作業レジスタ165からデータを受信する。図1は、したがって、単に、いわゆるベースラインマイクロコントローラコアのいくつかの必須構造を示す。
図2は、より多くの機能性を提供するマイクロコントローラコアの別のブロック図の例を示す。概して、同様の要素は、同一の参照記号を保有する。図2に示されるデータメモリRAM225は、図1に示されるメモリと同じであることができる。しかしながら、異なる参照記号は、本RAM225が、より詳細に以下に説明されるように、異なってマップされることを示すために使用される。本データメモリは、ここでは、複数の順次メモリバンクから成る線形メモリブロックを備え、特殊機能レジスタは、複数の順次メモリバンクにマップされない。付加的バンク選択レジスタ(BSR)210が、提供され、本レジスタは、専用命令を通してアクセス可能であり、したがって、メモリがマップされなくてもよい。本レジスタ210のコンテンツは、命令レジスタ135から下位5ビットを受信するアドレスマルチプレクサ220によって提供されるアドレスの上位3ビットを提供する。特殊機能レジスタFSR145は、ここでは、現在選択されているメモリバンクから独立して、線形データメモリ全体の間接アドレス指定のために使用され得る8ビットレジスタであってもよい。他の実施形態では、本レジスタは、ビット7を恒久的に「1」に設定することによって、線形データメモリを形成する上位4つのバンクにアクセスするように制限されることができる。しかしながら、本レジスタは、それ自体、もはやバンク選択機能を提供しない。バンク選択は、それぞれのバンク番号をメモリマップされないバンク選択レジスタ210に書き込むことによってのみもたらされる。したがって、線形メモリブロック内のメモリバンクが選択されるときでも、専用命令が、任意の他のメモリバンクへの変更を可能にする。低コストマイクロコントローラコアの他の内部構造が、可能性として考えられ、以下により詳細に説明されるように、種々の実施形態に開示される特有の実施形態と組み合わせられることができる。
前述のように、多くの低コストマイクロコントローラコアは、コア論理の増加により、割込機能性を提供しない。単純割込論理250が、図2に示されるような、前述のアーキテクチャに追加されることができ、例えば、種々のソースから割込を開始し得る単一割込入力INTが、提供されることができ、ソフトウェアが、割込関連タスクの識別および管理に対処する必要がある。そのような単純割込論理250が実装される場合、割込サービスルーチンコードは、共通特殊機能レジスタをメインラインコードと共有しなければならない。したがって、レジスタ245、165、および150等の特定のレジスタは、割込ルーチンを開始するとき、手動で保存される必要がある。特定のマイクロコントローラ、例えば、本出願人のマイクロコントローラシリーズPIC16F1xxxは、いわゆるシャドーレジスタを使用して、自動保存を提供し、コンテキストレジスタの機能を復元する。シャドーレジスタは、単に、現在のコンテキストを保存する目的のための特殊機能レジスタである。これらは、割込が開始されるたびに、上書きされ、そのコンテンツは、割込ルーチンからの戻りに応じて、それぞれのコンテキストレジスタに書き戻される。しかしながら、これは、改良ではあるが、割込能力を追加するとき、それらのレジスタを手動で記憶および復元する必要性をなくし、保存されたコンテキストのさらなる使用を可能にする、さらにより改良された自動コンテキストスイッチの必要性が存在する。
(概要)
実施形態によると、マイクロプロセッサまたはマイクロコントローラデバイスは、中央処理ユニット(CPU)と、CPUと結合されたデータメモリであって、そのデータメモリは、複数のメモリバンクに分割され、バンク選択レジスタが、どのメモリバンクが、現在、CPUと結合されているかを決定する、データメモリと、第1のセットの特殊機能レジスタおよび第2のセットの特殊機能レジスタであって、コンテキストスイッチの発生に応じて、第1のセットの特殊機能レジスタまたは第2のセットの特殊機能レジスタのいずれかが、CPUのためのアクティブコンテキストレジスタとして選択され、対応する他方のセットの特殊機能レジスタは、非アクティブコンテキストレジスタとして選択され、アクティブコンテキストレジスタのレジスタのうちの少なくともいくつかは、データメモリのうちの3つ以上のメモリバンクにメモリマップされ、非アクティブコンテキストレジスタの全レジスタは、データメモリ内の少なくとも1つのメモリ位置にメモリマップされている、特殊機能レジスタとを備えてもよい。
さらなる実施形態によると、非アクティブコンテキストレジスタのうちの全レジスタは、複数のメモリバンクのうちの1つのメモリバンクのみにメモリマップされることができる。さらなる実施形態によると、アクティブコンテキストレジスタのレジスタのうちの少なくともいくつかは、データメモリの全メモリバンクにメモリマップされることができる。さらなる実施形態によると、コンテキストレジスタは、作業レジスタ、ステータスレジスタ、間接アドレスを定義するためのファイル選択レジスタ、および、バンク選択レジスタを備えてもよい。さらなる実施形態によると、アクティブコンテキストレジスタのステータスレジスタおよびファイル選択レジスタのみが、データメモリの全メモリバンクにメモリマップされもよく、作業レジスタおよびバンク選択レジスタは、メモリマップされないレジスタである。さらなる実施形態によると、非アクティブコンテキストレジスタは、データメモリの最後のメモリバンクにメモリマップされることができる。さらなる実施形態によると、本デバイスはさらに、CPUと結合された割込ユニットを備えてもよく、コンテキストスイッチは、割込によって誘発される。さらなる実施形態によると、コンテキストスイッチは、ソフトウェアによって誘発されることができる。さらなる実施形態によると、本デバイスは、4つのメモリバンクを備えてもよい。さらなる実施形態によると、非アクティブコンテキストレジスタは、第4のバンクのみメモリマップされることができる。
別の実施形態によると、中央処理ユニット(CPU)と、CPUと結合されたデータメモリであって、そのデータメモリは、複数のメモリバンクに分割される、データメモリと、第1のセットの特殊機能レジスタおよび第2のセットの特殊機能レジスタであって、第1のセットの特殊機能レジスタまたは第2のセットの特殊機能レジスタのいずれかが、アクティブコンテキストを形成し、対応する他方のセットは、非アクティブコンテキストを形成する、特殊機能レジスタとを備えるマイクロプロセッサまたはマイクロコントローラデバイスを動作させる方法は、第1のセットのレジスタまたは第2のセットのレジスタのいずれかをアクティブコンテキストとして選択し、対応する他方のセットのレジスタを非アクティブコンテキストとして選択するステップであって、アクティブコンテキストレジスタのレジスタのうちの少なくともいくつかは、データメモリのうちの3つ以上のメモリバンクにメモリマップされ、非アクティブコンテキストレジスタのうちの全レジスタは、データメモリ内の少なくとも1つのメモリ位置にメモリマップされる、ステップと、コンテキストスイッチの発生に応じて、第1のセットのレジスタと第2のセットのレジスタとの間で、それぞれ、アクティブ、非アクティブコンテキストとして切り替えるステップとを含んでもよい。
本方法のさらなる実施形態によると、非アクティブコンテキストレジスタのうちの全レジスタは、複数のメモリバンクのうちの1つのメモリバンクのみにメモリマップされることができる。本方法のさらなる実施形態によると、本方法はさらに、割込によってコンテキストスイッチを誘発することを含んでもよい。本方法のさらなる実施形態によると、コンテキストスイッチは、ソフトウェアによって誘発されることができる。本方法のさらなる実施形態によると、本デバイスは、4つのメモリバンクを備えてもよい。本方法のさらなる実施形態によると、非アクティブコンテキストレジスタは、第4のバンクのみにメモリマップされることができる。本方法のさらなる実施形態によると、アクティブコンテキストのレジスタのうちの少なくともいくつかは、データメモリの全メモリバンクにメモリマップされることができる。本方法のさらなる実施形態によると、コンテキストレジスタは、作業レジスタ、ステータスレジスタ、間接アドレスを定義するためのファイル選択レジスタ、および、バンク選択レジスタを備えてもよい。本方法のさらなる実施形態によると、アクティブコンテキストレジスタのステータスレジスタおよびファイル選択レジスタのみが、データメモリの全メモリバンクにメモリマップされ、作業レジスタおよびバンク選択レジスタは、メモリマップされないレジスタである。本方法のさらなる実施形態によると、非アクティブコンテキストレジスタは、データメモリの最後のメモリバンクにメモリマップされる。本方法のさらなる実施形態によると、本方法はさらに、アクティブコンテキストを通してそれぞれのメモリバンクを選択することによって、非アクティブコンテキストのレジスタにアクセスすること、および非アクティブコンテキストレジスタにアクセスすることを含んでもよい。本方法のさらなる実施形態によると、本方法は、複数の割込を生成することを備えてもよく、割込の発生に応じて、コンテキストスイッチが生じ、割込ルーチンが、実行され、割込ルーチンは、割込ルーチンの以前の実行中に選択されたレジスタセット内に記憶された値を使用する。
図1は、従来のマイクロコントローラのブロック図を示す。 図2は、別の従来のマイクロコントローラのブロック図を示す。 図3は、スワップ可能なシャドーレジスタセットの実施形態を示す。 図4は、二重レジスタセットを提供するための循環バッファの別の実施形態を示す。 図5は、種々の実施形態による、メモリマッピングを示す。 図6および図7は、詳細な特殊機能要約表を示す。 図6および図7は、詳細な特殊機能要約表を示す。 図8は、種々の実施形態による、割込優先順位を示す。
(詳細な説明)
前述のマイクロコントローラにおけるベースラインCPUは、多くの場合、割込能力を有していない。ベースラインCPUに割込を追加することは、特有の短所および制限を提示する。種々の実施形態によるコンテキストスイッチは、それらの短所の多くを克服する。
割込能力を有するデバイスが、その割込サービスルーチン(ISR)にベクトル化(vector)されると、種々のレジスタの値、すなわち、コンテキストは、メインラインコードへの戻りに応じて、プログラムが中断した場所から再開することを可能にするように、保存および復元されなければならない。他のレジスタは、デバイスがISRにベクトル化するたびに、再初期化されなければならない。種々の実施形態によるコンテキストスイッチは、これらの重要レジスタのコピーが、各メインラインおよびISR実行コードのために維持されて使用のためにスワップされることを可能にする。種々の実施形態によると、コンテキストレジスタへの循環バッファの追加は、含まれる値が、ISRの開始および終了に応じて、スワップすることを可能にするように提供される。
種々の実施形態によると、例えば、図3または図4に示されるように、コンテキストスイッチメカニズムが、基本プロセッサ論理に追加されることにより、割込能力および関連付けられたコンテキストスイッチを提供することができる。したがって、図1または図2に示されるようなアーキテクチャは、スワップ機能が追加された付加的セットのレジスタを提供することによって、改良されることができる。故に、現在のコンテキストをシャドーレジスタセットに保存する代わりに、第2のセットのレジスタ全体が、提供され、割込の実行中、この第2のセットが、使用される。したがって、割込コンテキストが、提供され、割込コンテキストのコンテンツは、関連付けられた割込コンテキストレジスタ内に記憶されたままである一方、「通常」コンテキストは、規定のコンテキストレジスタを用いて、同一の方法で維持される。本タイプの二重レジスタセットは、以下により詳細に説明されるように、特に、循環バッファの使用によって実装されることができ、循環バッファは、循環バッファ機能を提供するために、データのブロックをラップアラウンドする個別のポインタを使用する。
図3は、コンテキストスイッチ機能性を提供するために使用され得る循環バッファの例示的実施形態を示す。循環バッファ300は、アクティブコンテキストおよび非アクティブコンテキストを記憶するために使用される2つのレジスタセットのための記憶容量を提供するように設計されてもよい。例えば、コンテキストは、4個、8個、または16個のレジスタを含んでもよく、したがって、循環バッファ300は、8個、16個、または32個のメモリ位置あるいはレジスタを提供する。循環バッファ300は、メインデータメモリ225に少なくとも部分的にメモリマップされることができる。例えば、循環バッファ300の最初の半分は、メインコンテキストとして使用されてもよく、後の半分は、割込コンテキストとして使用されてもよい。2つのコンテキストのうちの1つのみ、随時、「アクティブ」である一方、対応する他方のコンテキストは、「非アクティブ」である。したがって、循環バッファの最初の半分の特定のレジスタが、全メモリバンクにメモリマップされることができ、後の半分の全レジスタは、単一、好ましくは、最後のメモリバンクのみにメモリマップされもよい。したがって、バンクへのアクティブレジスタセットのメモリマッピングは、非アクティブレジスタセットのメモリマッピングと同一である必要はない。アクティブコンテキストは、全部または選択された数のバンクに部分的にマップされることができるが、「非アクティブ」コンテキストの全レジスタは、単一のメモリバンク、好ましくは、最後のメモリバンクにメモリマップされる。アクティブコンテキストの特定のレジスタは、全くメモリがマップされず、代わりに、特有のレジスタに有線接続またはマップされることにより、特有の機能を行なってもよい。したがって、マイクロコントローラの動作中、アクティブコンテキストのメモリがマップされたレジスタは、全メモリバンクにおいてアクセス可能である一方、他のメモリマップされないレジスタは、専用命令を通してのみ、利用可能である。例えば、バンク選択レジスタは、特有の命令を通してのみ、利用可能であってもよい。作業レジスタは、種々の実施形態によると、メモリマップされてもよく、またはメモリマップされなくてもよい。特定のコンテキストレジスタは、全メモリバンク、例えば、ステータスレジスタSTATUSおよび/またはファイル選択レジスタFSRにメモリマップされもよい。しかしながら、非アクティブコンテキストの全レジスタは、少なくとも、単一の「メモリ位置」にメモリマップされる。これらは、それらのアクティブレジスタをそのメモリバンク内で利用不可能にするアクティブコンテキストのそれぞれのレジスタの同一の位置にメモリマップされる必要はない。また、他の実施形態によると、これらのレジスタが全て、同一のバンク内に置かれるか、または最後のバンク内に位置する必要はない。
本実施形態によるメモリマッピングは、図3に示されるように、ポインタ310、320を用いて提供されることができる。したがって、ポインタ310は、現在アクティブコンテキストである第1のレジスタを指す一方、ポインタ330は、非アクティブコンテキストの第1のレジスタを指す。他のレジスタは、所定の関係に従って、メモリマップされてもよい。したがって、メモリマッピングは、連続する必要はない。表が、各レジスタをメモリマップするために定義されてもよい。そのような表はまた、アクティブコンテキストのメモリマップされないレジスタを定義するために使用されてもよい。同様に、非アクティブコンテキストの全レジスタは、表を用いて、単一のメモリバンクにメモリマップされてもよい。図3に示されるような、AからBへのコンテキストスイッチは、ポインタ310’に、今度は、下半分を指させる一方、ポインタ330’に、今度は、循環バッファ300の上半分を指させる。本機能性は、単に、定数値をそれぞれのアドレスポインタに追加することによって提供されることができる。バッファ300のための最大可能アドレスをラップアラウンドすることによって、循環バッファ機能が、実現される。故に、通常の動作中、バッファ300の上半分によって定義されるコンテキストは、図3の左側の参照記号Aで示されるように、アクティブコンテキストとして選択される一方、バッファ300の下半分のコンテキストは、最後のバンクのみにメモリマップされる。割込ルーチンの開始に応じて、コンテキストポインタは、図3の右側に示されるように、参照記号Bに従って配置される。今度は、ポインタ310’は、バッファ300の下半分を指す。したがって、バッファ300の下半分のレジスタは、今度は、アクティブコンテキストとして選択される。したがって、割込ルーチンの再開は、今度は、割込ルーチンの前の実行によって残された同一のコンテキストを提供し、非アクティブコンテキストは、最後のメモリバンクを通して完全に利用可能である。
図4は、類似機能性を提供する別の実施形態を示す。ここでは、2つのバッファ410および420が提供され、バッファ410は、通常コンテキストのために提供され、バッファ420は、割込コンテキストのために提供される。双方向性マルチプレクサ430および440は、特定のレジスタをデータメモリ450の種々のメモリバンク450にメモリマップするために提供される。例えば、マルチプレクサ430の第1のI/Oは、レジスタセット410のあるレジスタを全メモリバンク450..450にメモリマップしてもよい一方、第2のI/Oは、全レジスタをメモリバンク450のみにマップする。第2のマルチプレクサ440は、図4に示されるように、逆機能を行なう。したがって、レジスタセット410またはレジスタセット420のいずれかが、メインレジスタセットとして選択される。付加的回路が、メモリマップされないレジスタへの接続またはメモリマップされないレジスタの選択を提供するために提供されてもよい。
図5は、実施形態による、ベースラインマイクロコントローラ内のメモリマッピングの実装を示す。ここでは、例えば、データメモリは、4つのメモリバンクのためのメモリ空間のみ提供し、各メモリバンクは、32個のレジスタを備える。したがって、各メモリバンクは、5ビットのみによって、完全にアドレス指定されることができる。これは、例えば、12ビットのみを使用する縮小された命令サイズを可能にする。図5に示されるように、コンテキストは、限定された数の選択された特殊機能レジスタのみから成ってもよい。図5によると、コンテキストは、4つのレジスタ、すなわち、作業レジスタW、ステータスレジスタSTATUS、間接アドレスレジスタFSR、およびバンク選択レジスタBSRを有する。図から分かるように、本実施形態によると、4つのアクティブコンテキストレジスタのうちの2つ、すなわち、作業レジスタWおよびバンク選択レジスタBSRは、全くメモリマップされない。他の2つ、すなわち、ステータスレジスタSTATUSおよびファイル選択レジスタFSRは、それぞれ、アドレス03hおよび04hにおいて、全メモリバンクにメモリマップされる。最後のメモリバンク「011」は、非アクティブコンテキストを含む。示されるように、非アクティブ作業レジスタI_Wは、アドレス01hに記憶され、非アクティブステータスレジスタI_STATUSは、アドレス06hに記憶され、非アクティブファイル選択レジスタは、アドレス07hに記憶され、非アクティブバンク選択レジスタI_BSRは、アドレス08hに記憶される。図5の実施形態では、アドレス0Chからアドレス0Fhにおけるレジスタは、全メモリバンクにメモリマップされる一方、各バンクは、メモリ位置10hから1Fhに別個の汎用レジスタを有する。さらに、アドレス00hから0Bhにおける特殊機能レジスタのメモリマッピングは、全バンクに対して同一ではない。バンク「000」および「010」のみが、それらのアドレスに同じメモリマッピングを有する。他のレジスタまたはより多くのレジスタが、他の実施形態によると、コンテキストのために選択されてもよい。
図6および図7は、第1の12個のメモリマップされた特殊機能レジスタのみのより詳細なリストを示す。再び、コンテキストは、4つのレジスタ、作業レジスタW、バンク選択レジスタBSR、ステータスレジスタSTATUS、およびファイル選択レジスタFSRから成る。本実施形態によると、再び、2つのレジスタ、すなわち、アクティブコンテキストのSTATUSおよびFSRのみが、図6および図7に示されるように、それぞれのアドレス03h、04hにおける全メモリバンクにメモリマップされる一方、4つのメモリマップされないレジスタW、TRIS、OPTION、およびBSRは、依然として、図6および図7の表に示されるように、「全バンクに」提供される。非アクティブコンテキストは、線形化アドレス61h、66h、67h、および68hにおいて、最後のメモリバンクのみにメモリマップされる。
種々の実施形態によると、付加的命令が、前述のように、拡張割込機能性を有するベースラインマイクロコントローラのために提供されることができる。例えば、Return命令、Return from Interrupt命令、およびMove Literal to BS命令が、そのようなマイクロコントローラコアに追加されることにより、割込および他のコンテキストスイッチ機能性をさらにサポートすることができる。したがって、種々の実施形態によると、重要な特殊機能レジスタのコンテキストスイッチは、割込サービスルーチンの開始および終了のためだけではなく、また、ソフトウェアによって制御される他のイベントのためにも追加されることができる。
種々の実施形態によると、以下の3つの新しい命令が、ベースラインマイクロコントローラに追加されてもよい。
MOVLB − Move Literal to BSR Register:本命令は、定数値をバンク選択レジスタに書き込み、それによって、バンク切替を強制することによって、直接、バンク選択レジスタを制御する。12ビットOpcodeは、12’h010−12’h017を使用してもよい。
RETURN − Return from CALL:本命令は、サブルーチン呼び出しから復帰させ、ベースラインは、最後のプログラム位置からの1バイトを作業レジスタに返すRETLWのみを提供していた。12ビットOpcodeは、12’h01Eを使用してもよい。
RETFIE − Return from Interrupt:本命令は、割込から復帰させ、前述のように、従来のベースラインデバイスは、割込を有していなかった。12ビットOpcodeは、12’h01Fを使用してもよい。
割込コンテキストスイッチは、以下のように、種々の実施形態に従って実装される。選択されたSFRの第2のコピー(コンテキスト)が、割込サービスルーチンから実行するときに使用される。例えば、FSRレジスタ、STATUSレジスタ、BSRレジスタ、およびWレジスタは、種々の実施形態による改良されたマイクロコントローラデバイス上でスワップされることができる。現在のコンテキストを保存してサービスルーチンの開始および終了に応じて、それを復元するためにいわゆるシャドーレジスタを使用するPIC16F1xxxライン等の先行技術デバイスから公知であるが、種々の実施形態は、種々のメモリバンクのうちの1つに実装され得る第2のレジスタセットをスワップすることが可能である。故に第2のコンテキストレジスタセットのコンテンツが、それぞれのトリガに応じて、メインコンテキストレジスタセットの代わりに使用される、真のコンテキストスイッチが生じる。したがって、割込ルーチンは、最初に、これらのレジスタを初期化する必要なく、これらのレジスタのための完全に異なるセットの値を使用してもよい。メインプログラムの値は、同様に、スワップメカニズムを通して対処される。
以下の2つのレジスタスワップトリガソースが存在し得る。
−割込のベクトル化
−割込復帰命令。
各コンテキストは、その個別のソースによってもたらされることができる。本実施形態は、2つのコンテキストを使用する。別の実施形態によると、Interrupt0、Interrupt1、Interrupt2、およびMainの4つが存在し得る。
種々の実施形態によると、非アクティブコンテキストは、常時、図7に示されるように、I_Wレジスタ、I_STATUSレジスタ、I_FSRレジスタ、およびI_BSRレジスタによって、特殊機能レジスタのBank3において見ることができる。
種々の実施形態による割込機能は、デフォルトで有効にされることができる。従来のベースラインデバイスでは、任意の割込ソースが、デバイスをリセットさせた。GIEビットを設定することは、代わりに、デバイスをアドレス0x004にベクトル化させ、割込サービスルーチン(ISR)の実行を可能にする。
Return From Interrupt(RETFIE)命令は、ISRから復帰させるために使用され、GIEビットを設定し、後の割込を可能にする。デバイスがISRから実行している間、二次セットのWレジスタ、STATUSレジスタ、FSRレジスタ、およびBSRレジスタが、CPUによって使用される。これらのレジスタは、依然として、同一の位置にアドレス指定されるが、ISR内で使用するための不変の独立値を保持する。これは、これらのレジスタのコンテンツが、メインライン実行における割込によって影響を受けないことを可能にする。他のコンテキストのレジスタのコンテンツは、I_Wレジスタ、I_STATUSレジスタ、I_FSRレジスタ、およびI_BSRレジスタによって、SFRマップのバンク3において見ることができる。ISRから実行するとき、これらは、メインラインコンテキストを示し、その逆もまた同様である。
ある実施形態によると、4つの割込ソース、すなわち、タイマTMR0、アナログ/デジタルコンバータADC、コンパレータ、およびPin Changeの割込が利用可能であってもよい。割込は、INTEI_REGレジスタ内のxxIEビットを使用して有効にされる。Pin Changeの割込は、オプションレジスタOPTIONのRAWUビットを使用して有効にされ、RAIFビットが機能することを可能にすることができる。コンパレータ割込フラグは、割込生成が、図6に示されるように、CM1CON0およびCM2CON0レジスタ内で有効にされる場合、使用されることができる。
INTCONのGIEビットは、割込サービスルーチンへのベクトル化を有効にする。WURビットが設定されると、スリープ中のいずれの有効にされた割込ソースも、デバイスをウェークアップさせ、リセットさせる。本機能は、従来のベースライン動作に類似する。
図8は、内部プログラミングに従う異なる優先順位の可能性として考えられる実装である。ここでは、3つの制御ビット、すなわち、低電力モードを示す「In Sleep」、割込を有効にする「GIE」、およびウェークアップリセットを示すための「WUR」が、提供される。図8における表は、これらのビットの異なる設定に従う関連付けられた機能を示す。したがって、デバイスリセット、ベクトル化、または継続動作のいずれかが、それぞれの設定に従ってもたらされ得る。

Claims (22)

  1. マイクロプロセッサまたはマイクロコントローラデバイスであって、前記デバイスは、
    中央処理ユニット(CPU)と、
    前記CPUと結合されたデータメモリであって、前記データメモリは、複数のメモリバンクに分割され、バンク選択レジスタが、どのメモリバンクが、現在、前記CPUと結合されているかを決定する、データメモリと、
    第1のセットの特殊機能レジスタおよび第2のセットの特殊機能レジスタであって、コンテキストスイッチの発生に応じて、前記第1のセットの特殊機能レジスタまたは前記第2のセットの特殊機能レジスタのいずれかが、前記CPUのためのアクティブコンテキストレジスタとして選択され、対応する他方のセットの特殊機能レジスタは、非アクティブコンテキストレジスタとして選択され、前記アクティブコンテキストレジスタのレジスタのうちの少なくともいくつかは、前記データメモリのうちの3つ以上のメモリバンクにメモリマップされ、前記非アクティブコンテキストレジスタのうちの全レジスタは、前記データメモリ内の少なくとも1つのメモリ位置にメモリマップされている、第1のセットの特殊機能レジスタおよび第2のセットの特殊機能レジスタと
    を備える、デバイス。
  2. 前記非アクティブコンテキストレジスタのうちの全レジスタは、前記複数のメモリバンクのうちの1つのメモリバンクのみにメモリマップされている、請求項1に記載のデバイス。
  3. 前記アクティブコンテキストレジスタのレジスタのうちの少なくともいくつかは、前記データメモリの全メモリバンクにメモリマップされている、請求項1に記載のデバイス。
  4. 前記コンテキストレジスタは、作業レジスタ、ステータスレジスタ、間接アドレスを定義するためのファイル選択レジスタ、および、バンク選択レジスタを備える、請求項1に記載のデバイス。
  5. 前記アクティブコンテキストレジスタの前記ステータスレジスタおよび前記ファイル選択レジスタのみが、前記データメモリの全メモリバンクにメモリマップされ、前記作業レジスタおよび前記バンク選択レジスタは、メモリマップされないレジスタである、請求項4に記載のデバイス。
  6. 前記非アクティブコンテキストレジスタは、前記データメモリの最後のメモリバンクにメモリマップされている、請求項1に記載のデバイス。
  7. 前記CPUと結合された割込ユニットをさらに備え、前記コンテキストスイッチは、割込によって誘発される、請求項1に記載のデバイス。
  8. 前記コンテキストスイッチは、ソフトウェアによって誘発される、請求項1に記載のデバイス。
  9. 前記デバイスは、4つのメモリバンクを備える、請求項1に記載のデバイス。
  10. 前記非アクティブコンテキストレジスタは、第4のバンクにのみメモリマップされている、請求項9に記載のデバイス。
  11. マイクロプロセッサまたはマイクロコントローラデバイスを動作させる方法であって、前記マイクロプロセッサまたはマイクロコントローラデバイスは、中央処理ユニット(CPU)と、前記CPUと結合されたデータメモリであって、前記データメモリは、複数のメモリバンクに分割されている、データメモリと、第1のセットの特殊機能レジスタおよび第2のセットの特殊機能レジスタであって、前記第1のセットの特殊機能レジスタまたは前記第2のセットの特殊機能レジスタのいずれかは、アクティブコンテキストを形成し、対応する他方のセットは、非アクティブコンテキストを形成する、特殊機能レジスタとを備え、前記方法は、
    前記第1のセットのレジスタまたは前記第2のセットのレジスタのいずれかをアクティブコンテキストとして選択し、対応する他方のセットのレジスタを非アクティブコンテキストとして選択するステップであって、前記アクティブコンテキストレジスタのレジスタのうちの少なくともいくつかは、前記データメモリのうちの3つ以上のメモリバンクにメモリマップされ、前記非アクティブコンテキストレジスタの全レジスタは、前記データメモリ内の少なくとも1つのメモリ位置にメモリマップされる、ステップと、
    コンテキストスイッチの発生に応じて、前記第1のセットのレジスタと第2のセットのレジスタとの間を、それぞれ、アクティブコンテキスト、非アクティブコンテキストとして切り替えるステップと
    を含む、方法。
  12. 前記非アクティブコンテキストレジスタのうちの全レジスタは、前記複数のメモリバンクのうちの1つのメモリバンクのみにメモリマップされる、請求項11に記載の方法。
  13. 前記コンテキストスイッチを割込によって誘発することをさらに含む、請求項11に記載の方法。
  14. 前記コンテキストスイッチは、ソフトウェアによって誘発される、請求項11に記載の方法。
  15. 前記デバイスは、4つのメモリバンクを備える、請求項11に記載の方法。
  16. 前記非アクティブコンテキストレジスタは、第4のバンクにのみメモリマップされる、請求項15に記載のデバイス。
  17. 前記アクティブコンテキストのレジスタのうちの少なくともいくつかは、前記データメモリの全メモリバンクにメモリマップされる、請求項11に記載の方法。
  18. 前記コンテキストレジスタは、作業レジスタ、ステータスレジスタ、間接アドレスを定義するためのファイル選択レジスタ、および、バンク選択レジスタを備える、請求項11に記載の方法。
  19. 前記アクティブコンテキストレジスタの前記ステータスレジスタおよび前記ファイル選択レジスタのみが、前記データメモリの全メモリバンクにメモリマップされ、前記作業レジスタおよび前記バンク選択レジスタは、メモリマップされないレジスタである、請求項18に記載の方法。
  20. 前記非アクティブコンテキストレジスタは、前記データメモリの最後のメモリバンクにメモリマップされる、請求項11に記載の方法。
  21. 前記アクティブコンテキストを通してそれぞれのメモリバンクを選択することによって、前記非アクティブコンテキストのレジスタにアクセスすることと、前記非アクティブコンテキストレジスタにアクセスすることとをさらに含む、請求項11に記載の方法。
  22. 複数の割込を生成することを含み、割込の発生に応じて、コンテキストスイッチが生じ、割込ルーチンが、実行され、前記割込ルーチンは、前記割込ルーチンの以前の実行中に選択されたレジスタセットに記憶された値を使用する、請求項11に記載の方法。
JP2015501841A 2012-03-21 2013-03-19 コンテキストスイッチを伴うマイクロコントローラ Active JP6143841B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201261613802P 2012-03-21 2012-03-21
US61/613,802 2012-03-21
US13/830,377 US9195497B2 (en) 2012-03-21 2013-03-14 Microcontroller with context switch
US13/830,377 2013-03-14
PCT/US2013/032876 WO2013142450A1 (en) 2012-03-21 2013-03-19 Microcontroller with context switch

Publications (2)

Publication Number Publication Date
JP2015511049A true JP2015511049A (ja) 2015-04-13
JP6143841B2 JP6143841B2 (ja) 2017-06-07

Family

ID=49213440

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015501841A Active JP6143841B2 (ja) 2012-03-21 2013-03-19 コンテキストスイッチを伴うマイクロコントローラ

Country Status (7)

Country Link
US (1) US9195497B2 (ja)
EP (1) EP2828740B1 (ja)
JP (1) JP6143841B2 (ja)
KR (1) KR20140135796A (ja)
CN (1) CN104303143B (ja)
TW (1) TWI574152B (ja)
WO (1) WO2013142450A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10297003B2 (en) * 2015-09-21 2019-05-21 Qualcomm Incorporated Efficient saving and restoring of context information for context switches
CN105868003B (zh) * 2016-03-25 2019-08-13 浙江大学 一种基于tms320c6747的任务上下文切换优化方法
CN117555599B (zh) * 2024-01-10 2024-04-05 睿思芯科(成都)科技有限公司 加快关键数据访问速度的芯片设计方法、系统及相关设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006506751A (ja) * 2002-11-18 2006-02-23 エイアールエム リミテッド 安全モードと非安全モードとを切り換えるプロセッサ
US20090144481A1 (en) * 2007-11-30 2009-06-04 Microchip Technology Incorporated Enhanced Microprocessor or Microcontroller

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5115506A (en) 1990-01-05 1992-05-19 Motorola, Inc. Method and apparatus for preventing recursion jeopardy
US6134653A (en) * 1998-04-22 2000-10-17 Transwitch Corp. RISC processor architecture with high performance context switching in which one context can be loaded by a co-processor while another context is being accessed by an arithmetic logic unit
US6553487B1 (en) * 2000-01-07 2003-04-22 Motorola, Inc. Device and method for performing high-speed low overhead context switch
WO2004046925A1 (en) * 2002-11-18 2004-06-03 Arm Limited Security mode switching via an exception vector
US8689215B2 (en) * 2006-12-19 2014-04-01 Intel Corporation Structured exception handling for application-managed thread units
US7996651B2 (en) 2007-11-30 2011-08-09 Microchip Technology Incorporated Enhanced microprocessor or microcontroller
TWI493351B (zh) * 2009-11-16 2015-07-21 Via Tech Inc 通用串列匯流排主機控制方法和通用串列匯流排主機控制器

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006506751A (ja) * 2002-11-18 2006-02-23 エイアールエム リミテッド 安全モードと非安全モードとを切り換えるプロセッサ
US20090144481A1 (en) * 2007-11-30 2009-06-04 Microchip Technology Incorporated Enhanced Microprocessor or Microcontroller

Also Published As

Publication number Publication date
TW201351139A (zh) 2013-12-16
CN104303143A (zh) 2015-01-21
TWI574152B (zh) 2017-03-11
CN104303143B (zh) 2018-07-24
JP6143841B2 (ja) 2017-06-07
KR20140135796A (ko) 2014-11-26
EP2828740A1 (en) 2015-01-28
US9195497B2 (en) 2015-11-24
US20130254476A1 (en) 2013-09-26
WO2013142450A1 (en) 2013-09-26
EP2828740B1 (en) 2024-04-24

Similar Documents

Publication Publication Date Title
ES2903001T3 (es) Aparatos y métodos de hardware para detección de corrupción de memoria
US10241791B2 (en) Low energy accelerator processor architecture
US11341085B2 (en) Low energy accelerator processor architecture with short parallel instruction word
KR20100101090A (ko) 개선된 마이크로프로세서 또는 마이크로컨트롤러
US20110082999A1 (en) Data processing engine with integrated data endianness control mechanism
JP4226085B2 (ja) マイクロプロセッサ及びマルチプロセッサシステム
EP2396723B1 (en) Microcontroller with special banking instructions and method therefor
US7996651B2 (en) Enhanced microprocessor or microcontroller
JP6143841B2 (ja) コンテキストスイッチを伴うマイクロコントローラ
CN111984317A (zh) 用于对存储器中的数据进行寻址的系统和方法
TWI339354B (en) Microcontroller instruction set
EP3323039B1 (en) A method for enlarging data memory in an existing microprocessor architecture with limited memory addressing

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160309

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170308

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170428

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170509

R150 Certificate of patent or registration of utility model

Ref document number: 6143841

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250