JP3605978B2 - マイクロコンピュータ - Google Patents
マイクロコンピュータ Download PDFInfo
- Publication number
- JP3605978B2 JP3605978B2 JP00600797A JP600797A JP3605978B2 JP 3605978 B2 JP3605978 B2 JP 3605978B2 JP 00600797 A JP00600797 A JP 00600797A JP 600797 A JP600797 A JP 600797A JP 3605978 B2 JP3605978 B2 JP 3605978B2
- Authority
- JP
- Japan
- Prior art keywords
- task
- register
- contents
- register set
- control unit
- 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.)
- Expired - Fee Related
Links
Images
Description
【発明の属する技術分野】
本発明は、複数のタスクを切り換えながら実行するマイクロコンピュータに関する。
【0002】
【従来の技術】
近年、マイクロコンピュータはあらゆる機器に利用されており、処理能力の向上に伴い、より広い分野でより複雑な制御に応用されている。組み込み用途ではより複雑な制御に応用できるように、マルチタスク処理などの高度な機能が望まれている。
【0003】
図14は、第1の従来例におけるマルチタスク機能を有するマイクロコンピュータの説明図である。同図において、CPU10は、演算部11とレジスタセット12からなる。
【0004】
演算部11は、タスクを1つずつ実行し、レジスタセット12は、タスク実行に必要なデータを保持する。
【0005】
メモリ13は、各タスク毎にコンテキスト(レジスタセットのデータ、PCの内容、PSWの内容等のタスクの実行によって変化するタスク固有のデータ)を退避する領域であるコンテキストブロック14を有する。同図では、コンテキストブロック14中にタスク1〜3用のコンテキス退避領域が示されている。
【0006】
第1の従来例におけるタスクはソフトウェア(OS)によって管理される。例えば、タスク1からタスク2に切り換わる場合、OSは、タスク切り換えを示すイベント(タイマ割込み等)を受け付けると、まずCPU10からメモリ13にタスク1のコンテキストを退避し、次にメモリ13からCPU10にタスク2のコンテキストを復帰してからタスク2の実行を開始する。
【0007】
上記のように、第1の従来例では、ソフトウェア(OS)によりマルチタスクを実現しているので、ハードウェア規模が小さくて済むという利点がある。
【0008】
図15は、第2の従来例におけるマルチタスク機能を有するマイクロコンピュータの説明図である。同図においてCPU20は、演算部21、レジスタファイル22、レジスタセット切り換え部23、制御部24とからなる。
【0009】
演算部21は、タスクを1つずつ実行し、レジスタファイル22は、タスクの実行に必要なデータを保持する複数のレジスタセットからなる。
【0010】
レジスタセット切り換え部23は、現在実行中のタスクに対応するレジスタセットを有効にする。この有効なレジスタセットのみが演算部21に使用される。制御部24は、タスクの切り換えを制御する。
【0011】
メモリ25は、レジスタセットのデータを除くコンテキストの退避領域を有する。この第2の従来例におけるタスクはハードウェアによって管理される。例えば、タスク1からタスク2に切り換える場合、制御部24は、タスク切り換えを指示するイベント(タイマ割込み等)を受け付けると、レジスタセット切り換え部23にタスク2に対応するレジスタセットを有効にするように指示すると共に、演算部21のPCの内容、PSWの内容等をメモリ25に退避し、タスク2のPCの内容、PSWの内容等を演算部21に復帰する。その後、演算部21は、有効なレジスタセット2を用いてタスク2を実行する。
【0012】
上記のように第2の従来例では、ハードウェアによってマルチタスクを実現しているので、タスクの切り換えが高速であるという利点がある。
【0013】
【発明が解決しようとする課題】
しかしながら、上記従来例によれば、組み込み用途のマイクロコンピュータにおけるマルチタスク管理には適していないという問題があった。
【0014】
第1の従来例によれば、タスク切り換えに際してコンテキストの退避および復帰をソフトウェアによって実現するので切り換え速度が遅く、リアルタイム性を要求される制御の組み込み用途のマイクロコンピュータには適していない。また、第2の従来例によれば、タスク数と同数のレジスタセットを必要とし、しかもタスク切り換えをハードウェアで実現するので制御部のハードウェア規模が大きくなる。その結果コストが高くなり組み込み用途のマイクロコンピュータには適していない。
【0015】
本発明は上記の問題点に鑑み、コストを増大させることなく高速にタスクを切り換えるマイクロコンピュータを提供することを目的としている。
【0023】
【課題を解決するための手段】
上記課題を解決するため、請求項1の発明は、レジスタセットと、前記レジスタセットの内容の第1のバスへの読み出しをマイクロ制御部からの指示に応じて制御するコアレジスタ読出し制御部とを有するマイコンコアを備えるマイクロコンピュータであって、更に、第1および第2の拡張レジスタセットと、前記第1または第2の拡張レジスタセットの内容の前記第1のバスまたは第2のバスへの読み出しを前記指示に応じて制御する拡張レジスタ読出し制御部と、前記第2のバスに接続されたコンテキスト退避メモリとを有する拡張部を備え、前記コアレジスタ読出し制御部は、前記拡張部が接続されたことが通知された場合は前記指示によらず、前記レジスタセットの内容の前記第1のバスへの読み出しを行なわないよう制御し、前記拡張レジスタ読出し制御部は、前記指示に応じて、前記第1または前記第2の拡張レジスタセットのいずれか一方の拡張レジスタセットの内容を前記第1のバスに、他方の拡張レジスタセットの内容を前記第2のバスに読み出すよう制御することで、前記マイコンコアが前記一方の拡張レジスタセットの読み出しに前記第1のバスを占有している場合にも、前記他方の拡張レジスタセットの内容を前記コンテキスト退避メモリに退避することを特徴とする。
【0027】
【発明の実施の形態】
図1は、本発明の実施例におけるマイクロコンピュータの主要な構成を示すブロック図である。実施例のマイクロコンピュータは、レジスタファイル1、CPU2、コンテキスト退避メモリ3、メモリ4、転送部5を有する。
【0028】
レジスタファイル1は、レジスタセットA(GRA)とレジスタセットB(GAB)とからなる。レジスタセットA、Bはタスク切り換え毎に交互に切り換えられ、常にどちらか一方がCPU2のタスク実行に使用される。
【0029】
CPU2は、複数のタスクを切り換えながら実行する。CPU2が実行するタスクは、タスク切り換えを指示するイベントが発生する毎に、転送部5のタスク許可フラグに基づいてタスク番号の昇順又は降順に切り換えられる。タスク切り換えのイベントは例えば、周期的なタイマー割込み、シリアル転送割込み、タスク切り換え命令等である。
【0030】
コンテキスト退避メモリ3は、CPU2が実行中でないタスクの情報を退避しておくメモリである。タスクの情報はレジスタセットの内容、プロセッサステータスワード(PSW)の内容、プログラムカウンタ(PC)の内容等を含むコンテキストである。
【0031】
メモリ4は、CPU2がタスクの実行で処理するデータ等を記憶する。
転送部5は、タスク切り換えイベントが発生する毎に、CPU2が次に実行するタスクのコンテキストをコンテキスト退避メモリ3から使用中でないレジスタセットに復帰し、レジスタセットを切り換える。切り換えたレジスタセットを使用してCPU2が次のタスクを実行中に、切り換える前に使用中であったレジスタセットの内容をコンテキスト退避メモリ3に退避する。
【0032】
図2は、図1に示したマイクロコンピュータの転送部の内部バスを含むより詳細な構成を示すブロック図である。転送部5は、転送制御部51、ABUS501、BBUS502、CBUS503、ARAMBUS504、DRAMBUS505から構成される。
【0033】
転送制御部51は、転送部5の各バスや各バスに接続されたメモリ、レジスタファイル等を制御する。転送制御部51は、CPUがコンテキスト退避メモリ3をアクセスする際のアドレスをARAMBUS504から入力する。さらに、ABUS501にコンテキスト退避時の特定アドレスを出力する。
【0034】
図3は、図1に示したマイクロコンピュータのより詳細な構成を示すブロック図である。
【0035】
同図に示すように、本マイクロコンピュータは、レジスタセットA101、レジスタセットB102、インクリメンタ201、命令アドレスバッファ202、プリフェッチカウンタ203、命令フェッチバッファ204、プロセッサステータスワード205、命令バッファ206、命令レジスタ207、ステータスレジスタ208、PLA209、マイクロ命令レジスタ210、ALU211、ALU出力バッファ212、オペランドアドレスバッファ213、ストアバッファ214、ロードバッファ215、バス制御部216、タイミング生成部217、ROM401、RAM402、転送制御部51、タスクタイマ52、バススイッチ53、RAMアドレス生成部54、シーケンサ55、タスク許可フラグ56、次タスク番号レジスタ57、コンテキスト退避メモリアドレスレジスタ58、ABUS501、BBUS502、CBUS503、ARAMBUS504、DRAMBUS505、AROMBUS506、DROMBUS507、COREBUS508とからなる。
【0036】
レジスタセット101とレジスタセット102とは、同一のレジスタ構成であり、それぞれ8ビット幅のデータレジスタ(D0、D1、D2、D3)と16ビット幅のアドレスレジスタ(A0、A1)と、16ビット幅のスタックポインタ(SP)と、これらのデータを選択して出力するセレクタとを有する。インクリメンタ201、命令アドレスバッファ202、プリフェッチカウンタ203、命令フェッチバッファ204からなる回路は、ROM401から命令を順次プリフェッチする命令先読み準備部である。
【0037】
プロセッサステータスワード205は、ALU211の演算フラグやCPU2の割込み状態等を記憶する。
【0038】
命令バッファ206は、命令先読み準備部によってプリフェッチされた複数の命令を保持する命令キューである。
【0039】
命令レジスタ207、ステータスレジスタ208、PLA209、マイクロ命令レジスタ210からなる回路は、命令バッファ206から供給される命令を解読し、実行を制御する命令制御部である。また、この命令制御部はタスク切り換えを指示するイベントが発生すると、タスクのコンテキストの一部を退避、復帰する制御および転送制御部51に転送の開始を通知する制御を行う。本実施例では、上記イベントはタスクタイマー52による割込みとする。また、命令制御部は、ABUS501、BBUS502のデータの入出力を制御する。
【0040】
ALU211、ALU出力バッファ212、オペランドアドレスバッファ213、ストアバッファ214、ロードバッファ215からなる回路は、命令制御部の制御に従って命令を実行する命令実行部である。
【0041】
ROM401とRAM402は図1に示したメモリ4に相当し、複数のタスクのプログラム、スタック領域、タスク開始アドレス退避領域を有する。各タスクのプログラムはROM401に記憶され、スタック領域、タスク開始アドレス退避領域はRAM402に設けられる。
【0042】
CPU内部バスはABUS501、BBUS502、CBUS503の3本から構成され、CPU外部のメモリバスは、ARAMBUS504、DRAMBUS505、AROMBUS506、DROMBUS507、COREBUS508の5本から構成される。
【0043】
ABUS501、BBUS502は、主にレジスタファイル1に対してアクセスされるデータを伝達する。
【0044】
CBUS503は、主にコンテキスト退避メモリ3に対してアクセスするデータを伝達する。
【0045】
ARAMBUS504とDRAMBUS505は、それぞれ主にRAM402に対してアクセスするアドレスとデータを伝達し、AROMBUS506とDROMBUS507は、それぞれ主にROM401に対してアクセスするアドレスとデータを伝達する。
【0046】
COREBUS508は、主にマイクロコンピュータの周辺機能に含まれるレジスタ等をアクセスするアドレスとデータを伝達する。
【0047】
タスクタイマー52は、CPUが実行中のタスクの時間を計測するタイマーで、タスク実行開始時に設定され、一定時間間隔でタイマーの値がデクリメントされる。タスクタイマーの内容がゼロになると、CPU2に対してタスク切り換えイベントの割込みを発生する。タスクタイマーに設定される値は、あらかじめコンテキスト退避メモリに設定されている。また、タスク切り換え時にはタスクタイマーの内容は常にゼロであるため、コンテキスト退避メモリには退避されない。
【0048】
バススイッチ53は、DRAMBUS505とCBUS503との間でデータの受け渡しをするバッファである。
【0049】
RAMアドレス生成部54は、タスク切り換え時にCPUが退避、復帰するコンテキストの一部を格納するRAM402のアドレスを生成する。
【0050】
シーケンサ55は、CPUからの起動要求に応じて、CBUS503の制御や転送制御部内のレジスタの更新を制御する信号を出力し、タスクのコンテキストを退避、復帰させる。
【0051】
タスク許可フラグ56は、CPUが実行するタスクの数と同数のビット数から構成され、各ビットに対応するタスクの実行を許可するか、またはタスクの実行を禁止するかを指定する。
【0052】
次タスク番号レジスタ57は、タスク切り換えのイベントが発生したときに、次に切り換えて実行するタスクの番号を格納するレジスタで、レジスタの内容は、シーケンサがタスク許可フラグ56の内容に基づいて決められる。
【0053】
タスク許可レジスタ56および次タスク番号レジスタ57は、COREBUS508にも接続されており、CPUのプログラム実行によって内容の読み出しまたは書き込みが出来る。
【0054】
コンテキスト退避メモリアドレスレジスタ58は、コンテキスト退避メモリ3をアクセスする番地を格納するレジスタで、シーケンサ55がコンテキスト退避メモリをアクセスする際に参照される。
【0055】
図4は、図2のマイクロコンピュータの転送制御部51のより詳細な構成と、コンテキスト退避メモリ3のより詳細なデータ構成を示すブロック図である。
同図において、タスク許可フラグ制御部59は、次タスク番号レジスタ57に格納されたタスクの番号をデコードし、タスク許可フラグ56のタスク番号に対応するビットを1にする。また、命令によりタスク許可フラグを変更する場合、タスク許可フラグ制御部59はCOREBUS508のデータをタスク許可フラグ56に設定する。
【0056】
現タスク番号レジスタ60は、CPUが現在実行中のタスクの番号を格納する。前タスク番号レジスタ61は、CPUが現在実行中のタスクに切り換わる前に実行していたタスクの番号を格納する。
【0057】
タスク番号制御部62は、タスク許可フラグ56の内容と現タスク番号レジスタ60の内容とシーケンサ55が出力するレジスタ書換信号とを入力し、次タスク番号レジスタ57、現タスク番号レジスタ60、前タスク番号レジスタ61の内容をそれぞれ更新する。シーケンサ55が出力する書換信号のタイミングは、図9に矢印で示されている。また、タスク番号制御部が次タスク番号レジスタを更新する内容は、図11に示されている。
【0058】
図9によると、矢印で示されているように、前タスク番号レジスタ61が書き換えられるのはシーケンサ55のステート0であり、次タスク番号レジスタ57および現タスク番号レジスタ60が書き換えられるのはシーケンサ55のステート9である。
【0059】
レジスタセットA使用フラグ63は、CPUがタスク実行に使用するレジスタセットを指定するフラグであり、レジスタセットA使用フラグが1の時、レジスタセットAを使用し、0の時、レジスタBを使用する。
【0060】
メモリ制御部64は、コンテキスト退避メモリ3の読み出しおよび書き込みと、レジスタファイル1の読み出しおよび書き込みを制御する。メモリ制御部64は、コンテキスト退避メモリ3へのデータの書き込みを制御するコンテキスト退避メモリ書き込み制御部65と、コンテキスト退避メモリ3からのデータの読み出しを制御するコンテキスト退避メモリ読み出し制御部66と、レジスタファイルへのデータの書き込みを制御するレジスタ書き込み制御部67と、レジスタファイルからのデータの読み出しを制御するレジスタ読み出し制御部68とを有する。
【0061】
図4に示すコンテキスト退避メモリ3は、タスク数4までに対応する場合の構成を示し、64バイトの容量である。64バイトを4つに分割し、分割した各領域のアドレスの若いほうから順に、スタックポインタ(SP)、データレジスタ(D0、D1、D2、D3)、アドレスレジスタ(A0、A1)、プロセッサステータスワード(PSW)、タスクタイマー(TT)、オペランドアドレスバッファ(OAB)を退避する。16ビット幅のレジスタは、下位の8ビットがアドレスの若いほうに退避される。また、本実施例では分割した各領域には、2バイトの予備の退避領域が存在する。
【0062】
図5は、タスク切り換え時の処理のフローチャートである。同図において、「CPU、転送部」、「転送部」はそれぞれ、タスク切り換え時にCPU2および転送部5が同期して並行に処理するフローと転送部5単独で処理するフローを示す。
【0063】
同図のフローチャートは、CPU2がレジスタセットAを使用してタスク1を実行中に、タスク切り換え要求が発生し、タスク2に切り換わるフローを示している。CPU2は、タスク切り換え要求が発生すると、実行中のタスクを一次停止し、タスク切り換え処理に移行する。このタスク切り換えは、CPU2は割込み処理と同様にPLA209により処理され、転送部5はシーケンサ55により処理される。
【0064】
図6、図7、図8は、タスク切り換え処理のタイミングチャートを示す図である。同図には、タイミング(T2、T1)、IAB202、PFC203、IR207、MIR210、ABUS501、BBUS502、CBUS503、ALU211、ALB212、OAB213、STB214、LDB215、ARAMBUS504、DRAMBUS505の内容が、各サイクル毎にそれぞれ示されている。なお同図において右方向が時間軸である。
【0065】
また、ABUS、BBUS、CBUSの網かけは転送部5により制御されていることを示している。
【0066】
図9は、転送部5のシーケンサ55による各部の動作を示した図であり、シーケンサ55のステートおよびタイミング毎に、コンテキスト退避メモリ3のアドレス(address)とデータ(data)と転送方向(R/W)、バス(ABUS、BBUS、CBUS)、タスク番号レジスタ(PRVTSK、CRNTTSK、NEXTTSK)、レジスタファイルA使用フラグ(GRARUN)の状態がそれぞれ図示されている。
【0067】
転送方向のWはコンテキスト退避メモリへの書き込みを、Rはコンテキスト退避メモリからの読み出しをそれぞれ示している。
【0068】
同図のバスの欄にカッコ付きで示されたものは、他のバスに出力された内容が転送されていることを示す。また、「old」はタスク切り換え要求発生時点で実行していたタスクのコンテキストを指し、「new」はタスク切り換え要求により新しく切り換わるタスクのコンテキストを指す。「address」の欄の「crnttsk」、「nexttsk」、「prvtsk」はそれぞれ、現タスク番号レジスタCRNTTSK60、次タスク番号レジスタNEXTTSK57、前タスク番号レジスタPRVTSK61の内容を16倍した値を示し、例えば、ステート0の「crnttsk+12」はCRNTTSKの内容「1」を16倍した値に12を加算した値「28」をコンテキスト退避メモリのアドレスにすることを示している。
【0069】
同図のステートおよびタイミングは、図6Aから図6Cのサイクルの表示に一致している。従って、例えば図7のステート0は、図6Aのサイクル0に対応し、タイミングT2、タイミングT1は、図6のT2の状態1、T1の状態1にそれぞれ対応している。
【0070】
図10は、各タスクのプログラムカウンタを退避するRAM402の特定領域の構成を示した図である。本実施例では4つのタスクのプログラムカウンタの内容を退避する領域が、アドレス0からアドレス7までの8バイトの特定領域に設けられている。
【0071】
以下、図5、図6、図7、図8、図9に基づいてタスク切り換え処理をステートに従って詳細に説明する。
【0072】
<ステート0>
CPU2はタスク切り換え要求発生時のOAB213の内容をタイミングT2、T1でそれぞれBBUSに出力する。
【0073】
転送部5は、現タスク番号レジスタの内容が1なので、ABUSにはPCの退避アドレス2番地の下位8ビットをタイミングT2で、上位8ビットをタイミングT1でそれぞれABUSに出力するとともに、CPUがBBUSに出力したOABの内容をCBUSに転送し、コンテキスト退避メモリの28番地と29番地に書き込む(ステップ51)。また、CRNTTSKの内容をPRVTSKに転送する。
【0074】
ABUSに出力された退避アドレスは、CPUによりALUを通してALB212に転送される。
【0075】
<ステート1>
CPUはALBに格納された退避アドレスをIAB202に転送するとともに、AROMBUSを通して、ARAMBUSに出力する。また、ABUSにPFC203の内容を、BBUSに定数「1」をそれぞれ出力し、実行中であったタスク1の戻り番地(プログラムカウンタの値)をALUにより計算する。計算結果の下位8ビットはSTB214に転送され、タイミングT2でDRAMBUSに出力される。計算結果の上位8ビットはALBに格納される。従って、CPUはRAM402の2番地に戻り番地の下位8ビットを書き込む(ステップ52)。
【0076】
転送部はステート1では何もしない。
なお、戻り番地の計算は、計算時の命令バッファ206の先読み量によって制御されるが、本発明には関係ないので詳細な説明は省略する。
【0077】
<ステート2>
CPUはサイクル1で使用したIABの内容をインクリメンタ201により+1し、AROMBUSを通してARAMBUSに出力するとともに、サイクル1で計算したタスク1の戻り番地の上位8ビットをDRAMBUSに出力して、RAM402の3番地に書き込む(ステップ52)。また、タスク1のPSWの内容をABUSに出力する。
【0078】
転送部はタイミングT2でABUSに出力されたPSWの内容を、CBUSに転送し、コンテキスト退避メモリの26番地に書き込み(ステップ53)、タイミングT1でコンテキスト退避メモリの32番地を読み出す。また、転送部がアクセスするレジスタセットは、レジスタセットA使用フラグの内容を反転した値が示すレジスタセットを使用する。従って、図7の例では、ステート2よりステート8の間では、転送部はレジスタセットBに対してアクセスし、ステート9よりステート14の間では、レジスタセットAに対してアクセスする。
【0079】
<ステート3>
CPUは、ABUSに出力されたタスク2の戻り番地が退避されているRAM402のアドレスをALUを通してALBに格納する。
【0080】
転送部は、次タスク番号レジスタの内容「2」に基づいて、タスク2の戻り番地が退避されているRAM402のアドレス4番地の下位8ビットをタイミングT2で、上位8ビットをタイミングT1でそれぞれABUSに出力するとともに、前サイクルのタイミングT1で読み出したタスク2のSPLを、タイミングT2でCBUSに出力する。また、タイミングT2ではコンテキスト退避メモリの33番地を読み出し、タイミングT1でCBUSに出力する。CBUSに出力されたSPLの内容およびSPHの内容はBBUSに転送され、レジスタセットBのSPLおよびSPHに格納される(ステップ54)。
【0081】
<ステート4>
CPUは、ALBに格納されたアドレスをIABに転送するとともに、AROMBUSを通してARAMBUSに出力し、RAM402の4番地からタスク2の戻り番地の下位8ビットを読み出して、LDBに格納する。
【0082】
転送部は、前サイクルのタイミングT1でコンテキスト退避メモリの34番地から読み出したD0の内容を、CBUSに出力し、BBUSを通してレジスタセットBのD0に格納するとともに、タイミングT1でコンテキスト退避メモリの35番地のD1の内容を読み出してCBUSに出力し、BBUSを通してレジスタセットBのD1に格納する(ステップ54)。
【0083】
<ステート5>
CPUは、LDBの内容をABUSに出力し、ALUを通してALBに格納すると共に、前サイクルのIABの内容をインクリメンタにより+1したアドレスをARAMBUSに出力して、RAM401の5番地からタスク2の戻り番地の上位8ビットを読み出し、LDBに格納する(ステップ55)。
【0084】
転送部は、ステート4と同様に、D2の内容およびD3の内容をコンテキスト退避メモりから読み出して、レジスタセットBのD2、D3にそれぞれ格納する(ステップ54)。
【0085】
<ステート6>
CPUは、ALBに格納されたタスク2の戻り番地の下位8ビットの内容をIABの下位8ビットに格納すると共に、LDBの内容をABUSに出力し、ALUを通して再度ABUSに出力する。CPUはABUSに出力したタスク2の戻り番地の上位8ビットをALUを通してALBに格納する。
【0086】
転送部は、ステート4と同様に、A0の下位8ビットの内容および上位8ビットの内容をコンテキスト退避メモりから読み出して、レジスタセットBのA0L、A0Hにそれぞれ格納する(ステップ54)。
【0087】
<ステート7>
CPUは、ALBに格納されたタスク2の戻り番地の上位8ビットの内容をIABの上位8ビットに格納し(ステップ55)、IABの内容をAROMBUSに出力してタスク2の戻り番地から命令をフェッチしてIFBに格納する。
【0088】
転送部は、ステート4と同様に、A1の下位8ビットの内容および上位8ビットの内容をコンテキスト退避メモりから読み出して、レジスタセットBのA1L、A1Hにそれぞれ格納する。
【0089】
<ステート8>
CPUは、BBUSに出力されたタスク2のPSWの内容をALUを通してABUSに出力し、PSW205に格納する(ステップ56)。また、前サイクルでフェッチした命令を命令バッファ206に転送すると共に、タスク2の戻り番地を+1したアドレスから続けて命令をフェッチし、IFBに格納する。
【0090】
転送部は、前サイクルのタイミングT1でコンテキスト退避メモリの42番地から読み出したタスク2のPSWの内容を、タイミングT2でCBUSに出力すると共にBBUSに転送する。また、タイミングT2で読み出した43番地の内容を、タスクの実行時間を決めるタスクタイマ52に格納する(ステップ57)。
【0091】
<ステート9>
CPUは、タスク2の命令をIR207に格納して命令の解読を開始すると共に、BBUSに出力されたタスク2のOABの内容をALUを通してALBに格納する(ステップ58)。
【0092】
転送部は、前サイクルのタイミングT1でコンテキスト退避メモリの44番地から読み出したタスク2のOABLの内容を、タイミングT2でCBUSに出力すると共にBBUSに転送する。また、タイミングT2で読み出した45番地の内容を、タイミングT1でCBUSに出力すると共にBBUSに転送する。さらに、次タスク番号レジスタNEXTTSKの内容を現タスク番号レジスタCRNTTSKに転送し、NEXTTSKの内容を更新する。
【0093】
転送部はさらに、レジスタセットA使用フラグ63を「0」にして、以降でCPUがタスクの実行に使用するレジスタセットをB側にする(ステップ59)。
【0094】
<ステート10>
CPUは、ALBに格納された内容をタスク2のOABに格納し、タスク2の命令を転送部とは独立して実行する(ステップ61)。従って、ステート11以降は、転送部のみの動作を説明する。
【0095】
転送部は、タスク切り換え要求発生時のタスク1のコンテキストであるSPLおよびSPHをレジスタセットAから読み出してCBUSに出力し、コンテキスト退避メモリの16番地および17番地に格納する(ステップ62)。
【0096】
<ステート11>
転送部は、ステート10と同様にタスク切り換え要求発生時のタスク1のコンテキストであるD0およびD1をレジスタセットAから読み出してCBUSに出力し、コンテキスト退避メモリの18番地および19番地に格納する(ステップ62)。
【0097】
<ステート12>
転送部は、ステート10と同様にタスク切り換え要求発生時のタスク1のコンテキストであるD2およびD3をレジスタセットAから読み出してCBUSに出力し、コンテキスト退避メモリの20番地および21番地に格納する(ステップ62)。
【0098】
<ステート13>
転送部は、ステート10と同様にタスク切り換え要求発生時のタスク1のコンテキストであるA0LおよびA0HをレジスタセットAから読み出してCBUSに出力し、コンテキスト退避メモリの22番地および23番地に格納する(ステップ62)。
【0099】
<ステート14>
転送部は、ステート10と同様にタスク切り換え要求発生時のタスク1のコンテキストであるA1LおよびA1HをレジスタセットAから読み出してCBUSに出力し、コンテキスト退避メモリの24番地および25番地に格納する(ステップ62)。
【0100】
図11は、タスク番号制御部62が次タスク番号レジスタNEXTTSKの値を決定するための動作を示した図である。
【0101】
次タスク番号レジスタの値は、タスク許可フラグTSKEN56の内容と現タスク番号レジスタCRNTTSK60の内容とによって決定する。タスク許可フラグのLSB側が番号の若いタスクに対応しており、本実施例では、タスク許可フラグのLSB側が高い優先度となっている。従って、タスク許可フラグの複数のビットがセットされている場合には、番号の若いタスクから先に実行される。例えば、TSKEN=’0011’はタスク0とタスク1を許可することを示し、現タスク番号が「0」であれば次タスク番号は「1」になり、現タスク番号が「1」、「2」、「3」であれば次タスク番号は「0」になる。この例ではTSKENのビット2、ビット3は「0」になっているので、タスク2およびタスク3の許可フラグが命令の実行等でクリアされたことを示している。
【0102】
他の組み合わせ状態も同様であるので、詳細な説明は省略する。
なお、上記実施例の説明ではタスクの数を4にしたが、これに限定されるものではない。また、コンテキスト退避メモリやRAMへのタスクの退避領域のアドレスも限定されるものではない。
【0103】
上記実施例では、タスクのコンテキストのうちプログラムカウンタのみをRAMに退避したが、プログラムカウンタ以外にPSW等をRAMに退避してもよい。
【0104】
上記実施例では、RAMへの退避領域は特定番地としたが、実行中であったタスクのSPが指すスタック領域にコンテキストを退避してもよい。その場合、退避するSPはタスクの実行を停止した時点の値のままでもよい。
【0105】
図12は、本発明の第2の実施例における転送部とCPUとの接続を説明する図である。
【0106】
同図においてマイコンコア1は、CPU2とレジスタセット3とからなり、CPU2は、マイクロ制御部21と、コアレジスタ読み出し制御部22とバッファ23とを含む。拡張部4は、転送部5と2つのレジスタセットGRA6およびレジスタセットGRB7とからなり、転送部5は、拡張指定部51と拡張レジスタ読み出し制御部52とバッファ53とバッファ54とを含む。マイコンコア1と拡張部4とはABUSとBBUSからなる2本の内部バスで接続されている。
マイコンコア1は、拡張部4が接続されていない状態でも命令の実行が可能である。以下では、マイコンコア1に拡張部4が接続されている場合の動作を説明する。
【0107】
拡張指定部51により、拡張部4がマイコンコア1に接続されていることをCPU2に通知すると、コアレジスタ読み出し制御部22は、レジスタセットの読み出しをマイクロ制御部21から指示されても、バッファ23を動作させず、ABUSおよびBBUSには何も読み出さないようにする。一方、マイクロ制御部からのレジスタセット読み出しの指示は、拡張レジスタ読み出し制御部52に対しても出される。拡張部4に含まれる転送部5の動作は、2つのレジスタセットを有する本発明の第1の実施例と同様であるので詳細は省略する。
【0108】
図13は、図12に示された本発明の第2の実施例における回路配置を説明する図である。
【0109】
マイコンコア1はビット当りの回路の繰り返しから構成されるデータパス部と不規則回路から構成される制御部とからなり、データパス部は制御部から出力されるデータパス制御信号により制御される。データパス部で処理するデータの流れの方向をX軸とすると、データパス制御信号はY軸方向である。制御部、データパス部、拡張部の順にY軸方向に配置し、データパス制御信号をデータパス部を貫通させてY軸方向に延長することで、同一のデータパス制御信号をデータパス部と拡張部とに接続する。
【0110】
また、拡張部を制御する拡張部制御信号は、制御部から一旦X軸方向に出力した後、データパスを通らずに拡張部に接続する。
【0111】
図13には省略しているが、ABUSおよびBBUSは、データパス部からY軸方向に延ばして拡張部に接続する。
【0112】
なお、ABUSおよびBBUSは拡張部制御信号と同様に一旦X軸方向に延ばした後、拡張部に接続してもよい。
【0120】
【発明の効果】
請求項1の発明によれば、タスク切り換えの機能をマイコンコアに容易に追加して、機能拡張できるという効果がある。
【図面の簡単な説明】
【図1】本発明の実施例におけるマイクロコンピュータの主要な概略構成を示すブロック図
【図2】同実施例における転送部5の詳細な構成を示すブロック図
【図3】同実施例におけるマイクロコンピュータのより詳細な構成を示すブロック図
【図4】同実施例における転送制御部51のより詳細な構成と、コンテキスト退避メモリ3のより詳細なデータ構成を示すブロック図
【図5】同実施例におけるタスク切り換え時の処理のCPU2および転送部5の動作を示すフローチャート
【図6】同実施例におけるタスク切り換え時の処理のCPU2および転送部5の動作を示すタイミングチャート
【図7】同実施例におけるタスク切り換え時の処理のCPU2および転送部5の動作を示すタイミングチャート
【図8】同実施例におけるタスク切り換え時の処理のCPU2および転送部5の動作を示すタイミングチャート
【図9】同実施例における転送部5のシーケンサ55による各部の動作を示した図
【図10】同実施例における各タスクのプログラムカウンタを退避するRAM402の特定領域の構成を示した図
【図11】同実施例におけるタスク番号制御部62が、次タスク番号レジスタNEXTTSKの値を決定するための動作を示した図
【図12】本発明の第2の実施例におけるマイクロコンピュータの転送部とCPUとの接続を説明する図
【図13】同実施例における回路配置を説明する図
【図14】第1の従来技術におけるマルチタスク処理機能を有するマイクロコンピュータの説明図
【図15】第2の従来技術におけるマルチタスク処理機能を有するマイクロコンピュータの説明図
【符号の説明】
1 レジスタファイル
2 CPU
3 コンテキスト退避メモリ
4 メモリ
5 転送部
51 転送制御部
52 タスクタイマ
53 バススイッチ
54 RAMアドレス生成部
55 シーケンサ
56 タスク許可フラグ
57 次タスク番号レジスタ
58 コンテキスト退避メモリアドレスレジスタ
59 タスク許可フラグ制御部
60 現タスク番号レジスタ
61 前タスク番号レジスタ
62 タスク番号制御部
63 レジスタセットA使用フラグ
64 メモリ制御部
65 コンテキスト退避メモリ書き込み制御部
66 コンテキスト退避メモリ読み出し制御部
67 レジスタ書き込み制御部
68 レジスタ読み出し制御部
Claims (1)
- レジスタセットと、前記レジスタセットの内容の第1のバスへの読み出しをマイクロ制御部からの指示に応じて制御するコアレジスタ読出し制御部とを有するマイコンコアを備えるマイクロコンピュータであって、
更に、第1および第2の拡張レジスタセットと、前記第1または第2の拡張レジスタセットの内容の前記第1のバスまたは第2のバスへの読み出しを前記指示に応じて制御する拡張レジスタ読出し制御部と、前記第2のバスに接続されたコンテキスト退避メモリとを有する拡張部を備え、
前記コアレジスタ読出し制御部は、前記拡張部が接続されたことが通知された場合は前記指示によらず、前記レジスタセットの内容の前記第1のバスへの読み出しを行なわないよう制御し、
前記拡張レジスタ読出し制御部は、前記指示に応じて、前記第1または前記第2の拡張レジスタセットのいずれか一方の拡張レジスタセットの内容を前記第1のバスに、他方の拡張レジスタセットの内容を前記第2のバスに読み出すよう制御することで、前記マイコンコアが前記一方の拡張レジスタセットの読み出しに前記第1のバスを占有している場合にも、前記他方の拡張レジスタセットの内容を前記コンテキスト退避メモリに退避することを特徴とするマイクロコンピュータ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP00600797A JP3605978B2 (ja) | 1997-01-17 | 1997-01-17 | マイクロコンピュータ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP00600797A JP3605978B2 (ja) | 1997-01-17 | 1997-01-17 | マイクロコンピュータ |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10207717A JPH10207717A (ja) | 1998-08-07 |
JP3605978B2 true JP3605978B2 (ja) | 2004-12-22 |
Family
ID=11626679
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP00600797A Expired - Fee Related JP3605978B2 (ja) | 1997-01-17 | 1997-01-17 | マイクロコンピュータ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3605978B2 (ja) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SE9803632D0 (sv) * | 1998-10-22 | 1998-10-22 | Ericsson Telefon Ab L M | A processor |
US7020879B1 (en) | 1998-12-16 | 2006-03-28 | Mips Technologies, Inc. | Interrupt and exception handling for multi-streaming digital processors |
US6389449B1 (en) | 1998-12-16 | 2002-05-14 | Clearwater Networks, Inc. | Interstream control and communications for multi-streaming digital processors |
US7257814B1 (en) | 1998-12-16 | 2007-08-14 | Mips Technologies, Inc. | Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors |
US7035997B1 (en) | 1998-12-16 | 2006-04-25 | Mips Technologies, Inc. | Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors |
US7529907B2 (en) | 1998-12-16 | 2009-05-05 | Mips Technologies, Inc. | Method and apparatus for improved computer load and store operations |
US6292888B1 (en) * | 1999-01-27 | 2001-09-18 | Clearwater Networks, Inc. | Register transfer unit for electronic processor |
US7237093B1 (en) | 1998-12-16 | 2007-06-26 | Mips Technologies, Inc. | Instruction fetching system in a multithreaded processor utilizing cache miss predictions to fetch instructions from multiple hardware streams |
JP2004518183A (ja) | 2000-07-14 | 2004-06-17 | クリアウオーター・ネツトワークス・インコーポレイテツド | マルチスレッド・システムにおける命令のフェッチとディスパッチ |
JP3813930B2 (ja) | 2002-01-09 | 2006-08-23 | 松下電器産業株式会社 | プロセッサ及びプログラム実行方法 |
JP4825257B2 (ja) * | 2002-01-09 | 2011-11-30 | パナソニック株式会社 | プロセッサ |
JP4750350B2 (ja) | 2003-03-13 | 2011-08-17 | パナソニック株式会社 | タスク切換装置、方法及びプログラム |
KR100770034B1 (ko) | 2006-03-02 | 2007-10-26 | 삼성전자주식회사 | 복수의 레지스터 파일을 이용한 문맥 교환 방법 및 시스템 |
WO2012098684A1 (ja) | 2011-01-21 | 2012-07-26 | 富士通株式会社 | スケジューリング方法およびスケジューリングシステム |
JP5803721B2 (ja) * | 2012-02-13 | 2015-11-04 | 株式会社デンソー | データ処理装置 |
JP2019219984A (ja) * | 2018-06-21 | 2019-12-26 | ルネサスエレクトロニクス株式会社 | メモリモジュール |
-
1997
- 1997-01-17 JP JP00600797A patent/JP3605978B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH10207717A (ja) | 1998-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3605978B2 (ja) | マイクロコンピュータ | |
US5696989A (en) | Microcomputer equipped with DMA controller allowed to continue to perform data transfer operations even after completion of a current data transfer operation | |
JP3619939B2 (ja) | 中央処理装置 | |
JPH08305585A (ja) | 割込制御装置 | |
JPS62197830A (ja) | デ−タ処理システム | |
JP2734468B2 (ja) | プロセッサ | |
JP2970821B2 (ja) | データ処理装置 | |
JPH0991134A (ja) | 情報処理装置 | |
JPH07120338B2 (ja) | 共同プロセッサによる命令の実行をデータプロセッサが調整する方法および該データプロセッサ | |
JPH0916409A (ja) | マイクロコンピュータ | |
JP2514963B2 (ja) | デ―タ処理装置 | |
JPS6355635A (ja) | デ−タ処理システム | |
JPH056281A (ja) | 情報処理装置 | |
JP2826309B2 (ja) | 情報処理装置 | |
JPH0377137A (ja) | 情報処理装置 | |
US20050216708A1 (en) | Processor for performing context switching, a method for performing context switching, a computer program for perform context switching | |
JPH03269659A (ja) | マイクロプロセッサ | |
JP3199604B2 (ja) | プロセッサ | |
JPH06231072A (ja) | マイクロコンピュータ | |
JP2696578B2 (ja) | データ処理装置 | |
JP3345050B2 (ja) | 二次元配列型メモリシステム | |
JP2847729B2 (ja) | 情報処理装置 | |
JPH08249022A (ja) | マルチプロセッサ演算装置、および該装置を有するプログラマブルコントローラ | |
JPH0683614A (ja) | マイクロコンピュータ | |
JPH0256029A (ja) | 汎用レジスタ切換方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040316 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040415 |
|
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: 20040914 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040927 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081015 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091015 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091015 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101015 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111015 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121015 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |