(57)【要約】【課題】レジスタの大容量化と状態保存の高速化を両立することができる非同期コンテキスト切り替えシステムを提供すること。【解決手段】本発明の非同期コンテキスト切り替えシステムは、マイクロプロセッサが演算を行うときに用いられるデータを保存するレジスタ（３）と、前記レジスタ（３）に保存されている前記データのコピーを保存するキャッシュレジスタ（１０）と、前記データを退避するためのキャッシュメモリ（４）と、前記マイクロプロセッサが前記キャッシュメモリ（４）に対してアクセスしていないときに、前記キャッシュレジスタ（１０）から前記データを読み出して前記キャッシュメモリ（４）に保存するメモリバスアービタ（２０）とを具備している。【選択図】図１
2008217563.tif 000002
【特許請求の範囲】
【請求項１】
マイクロプロセッサが演算を行うときに用いられるデータを保存するレジスタと、
前記レジスタに保存されている前記データのコピーを保存するキャッシュレジスタと、
前記データを退避するためのキャッシュメモリと、
前記マイクロプロセッサが前記キャッシュメモリに対してアクセスしていないときに、前記キャッシュレジスタから前記データを読み出して前記キャッシュメモリに保存するメモリバスアービタと
を具備する非同期コンテキスト切り替えシステム。
【請求項２】
請求項１に記載の非同期コンテキスト切り替えシステムにおいて、
前記キャッシュレジスタは、
前記レジスタに保存されている前記データを複製するフリップフロップ回路と、
前記フリップフロップ回路に複製された前記データを保存する複製用メモリと
を具備する非同期コンテキスト切り替えシステム。
【請求項３】
請求項２に記載の非同期コンテキスト切り替えシステムにおいて、
前記複製用メモリは、
前記キャッシュメモリへの書き出し先アドレスと、前記キャッシュメモリに書き出される前記レジスタの前記データとを表すレジスタセットを保存するメモリ領域
を備え、
前記メモリ領域は、
既に前記キャッシュメモリへの書き出しが完了している前記レジスタセットを保存する第１メモリ領域と、
前記キャッシュメモリへの書き出し対象となる前記レジスタセットを保存する第２メモリ領域と、
次回の前記キャッシュメモリへの書き出し対象となる前記レジスタセットを保存する第３メモリ領域と
を有する非同期コンテキスト切り替えシステム。
【請求項４】
請求項１に記載の非同期コンテキスト切り替えシステムにおいて、
前記キャッシュレジスタは、
前記レジスタと同容量であり、前記レジスタに保存されている前記データを保存するメモリ用フリップフロップ回路と、
前記メモリ用フリップフロップ回路の切り替え用スイッチであるスイッチ回路と
を具備する非同期コンテキスト切り替えシステム。
【請求項５】
請求項４に記載の非同期コンテキスト切り替えシステムにおいて、
前記メモリ用フリップフロップ回路は、
前記キャッシュメモリへの書き出し先アドレスと、前記キャッシュメモリに書き出される前記レジスタの前記データとを表すレジスタセットを保存するメモリ領域
を備え、
前記メモリ領域は、
既に前記キャッシュメモリへの書き出しが完了している前記レジスタセットを保存する第１メモリ領域と、
前記キャッシュメモリへの書き出し対象となる前記レジスタセットを保存する第２メモリ領域と、
次回の前記キャッシュメモリへの書き出し対象となる前記レジスタセットを保存する第３メモリ領域と
を有する非同期コンテキスト切り替えシステム。
【請求項６】
請求項１〜５のいずれかに記載の非同期コンテキスト切り替えシステムにおいて、
前記マイクロプロセッサの現在の動作状況に応じて、出力先制御信号を前記キャッシュレジスタと前記メモリバスアービタとに出力する制御回路
を更に具備し、
前記出力先制御信号は、前記マイクロプロセッサが前記キャッシュメモリに対してアクセスしているか否かを表し、
前記出力先制御信号が、前記マイクロプロセッサが前記キャッシュメモリに対してアクセスしていることを表している場合、
前記メモリバスアービタは、前記レジスタに保存されている前記データを前記キャッシュメモリに保存し、
前記出力先制御信号が、前記マイクロプロセッサが前記キャッシュメモリに対してアクセスしていることを表していない場合、
前記キャッシュレジスタは、前記レジスタに保存されている前記データのコピーを保存し、
前記メモリバスアービタは、前記キャッシュレジスタから前記データを読み出して前記キャッシュメモリに保存する
非同期コンテキスト切り替えシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサに適用される非同期コンテキスト切り替えシステムに関する。
【背景技術】
【０００２】
マイクロプロセッサには、コンテキストを切り替えるためのコンテキスト切り替えシステムが適用されている。コンテキスト切り替えシステムは、マイクロプロセッサが演算（操作を含む）を行うときに用いられるコンテキスト（データ）を保存するレジスタと、キャッシュメモリとを具備している。マイクロプロセッサは、レジスタを用いてデータを実行しているとき、今まで実行していたデータから、別のデータに切り替えることがある。このような場合、マイクロプロセッサは、レジスタに保存されているデータをキャッシュメモリに退避し、別のデータをレジスタに保存して実行する。これにより、キャッシュメモリに使用頻度の高いデータを蓄積しておくことにより、低速なメインメモリへのアクセスを減らすことができ、処理を高速化することができる。
【０００３】
上述のように、レジスタの状態（レジスタが保存するデータ）を退避させる処理はマルチタスク機構を実現するために用いられているが、近年、実行時の性能を向上させるためにレジスタの容量が増えており、レジスタの状態をメモリに記録するために要する時間が相対的に長くなる傾向にある。また、パイプライン化されたプロセッサにおいては、メモリ書き込み時間の増大によりパイプラインを乱し、性能低下の要因となっている。つまり、性能向上のためにレジスタの大容量化を図った結果、レジスタの状態保存によって性能低下を引き起こすことになっており、レジスタの大容量化と状態保存の高速化を両立することが要求されている。
【０００４】
一方、マイクロプロセッサが提供する命令を高度化する代わりに、レジスタの容量を減らすことでレジスタの状態保存時間を短くし、それによって高性能化を図る方法が提案されている。その結果、マイクロプロセッサの命令のデコード回路の構造が複雑化し、消費電力の増大や発熱の増加、動作周波数の向上が難しくなるという欠点がある。さらには、レジスタが少ないために頻繁にメインメモリにアクセスをすることになるが、メインメモリの遅延時間はマイクロプロセッサの動作に比べて非常に遅いため、高い演算力を持続させるのが難しいという問題もある。
【０００５】
コンテキストの切り替えに関連する技術について紹介する。
【０００６】
特開２００５−２７５７０３号公報（特許文献１）には“プロセッサ”が記載されている。プロセッサは、プロセッサによるプログラム実行時に用いる表レジスタ部及び前記表レジスタ部と同構成の裏レジスタ部とを備えるレジスタ装置と、前記プログラム実行時にデータの記憶領域として使用するデータ記憶装置と、前記表レジスタ部及び前記裏レジスタ部間におけるデータの転送にて使用する転送レジスタを備える転送装置と、前記表レジスタ部中の命令オペランドで示されたレジスタを前記裏レジスタ部にコピーし、コピーされた裏レジスタ部の内容を所定の順序にしたがい前記データ記憶装置に転送するストアレジスタ手段、前記ストアレジスタ手段により前記裏レジスタ部にコピーしたレジスタを前記表レジスタ部にコピーし、転送すべき前記裏レジスタ部のデータが前記データ記憶装置に残っていれば、前記データ記憶装置から前記裏レジスタ部へ転送するロードレジスタ手段とを備え、前記表レジスタ部と前記裏レジスタ部間のコピーは１サイクルで行い、前記データ記憶装置と前記裏レジスタ部間のデータ転送は、前記プロセッサが前記データ記憶装置へのメモリアクセスを伴わない命令実行時に、前記プロセッサの命令実行と並列に行う演算装置とを備えることを特徴としている。
【０００７】
特開２００４−２２００７０号公報（特許文献２）には“コンテキスト切り替え装置”が記載されている。コンテキスト切り替え装置は、演算論理ユニット又はメモリアクセスユニットで実行すべきスレッドに関するコンテキストが記憶されたレジスタファイルと、前記レジスタファイルに接続され、コンテキストをキャッシュするためのコンテキストキャッシュと、前記レジスタファイルと前記コンテキストキャッシュを接続するコンテキストスイッチ専用バスと、前記コンテキストキャッシュに記憶されているスレッドのコンテキストを識別するためのスレッド識別子（スレッドＩＤ）を記憶するスレッドＩＤテーブルを有し、演算論理ユニット及びメモリアクセスユニットと並列に接続され、前記コンテキストキャッシュと前記レジスタファイルとの間のデータ伝送を制御するスレッド制御ユニットとを備えている。前記スレッド制御ユニットは、コンテキストの切り替えが発生した場合、入力された切り替え命令と新たに入れ替えるスレッド識別子（スレッドＩＤ）に基づき前記スレッドＩＤテーブルを検索し、新たに入れ替えるコンテキストが記憶されている前記コンテキストキャッシュのアドレスと、実行中のコンテキストが記憶されている前記レジスタファイルのレジスタ識別子を求め、求めたアドレスに基付き前記コンテキストキャッシュをアクセスし、且つ、求めたレジスタ識別子に基付き前記レジスタファイルをアクセスし、前記レジスタファイル及び／又は前記コンテキストキャッシュのコンテキストを前記コンテキストスイッチ専用バスを介して入れ替え、退避又は復帰を実行する。
【０００８】
特開２００６−９９３３５号公報（特許文献３）には“コンテキスト処理装置”が記載されている。コンテキスト処理装置は、命令の実行に伴うコンテキストを記憶するためのレジスタ群を備えるプロセッサと、該プロセッサがアクセス可能なメモリとを備えている。このコンテキスト処理装置は、レジスタによって構成され、前記コンテキストを退避するためのコンテキストキャッシュ手段と、前記プロセッサによる前記メモリへのアクセスを介さずに、前記コンテキストキャッシュ手段と前記メモリとの間でデータを授受させるメモリアクセス手段と、を備えることを特徴としている。
【０００９】
特開２００６−１３９４９６号公報（特許文献４）には“演算処理装置”が記載されている。演算処理装置は、複数の命令流を並列に取り扱うマルチスレッド方式である。この演算処理装置は、前記命令流を構成するスレッドあるいはタスクの実行に使用されるレジスタと、前記レジスタに記憶されていたコンテキストを格納するキャッシュ領域を備えたコンテキストキャッシュと、前記レジスタと前記キャッシュ領域とを相互に接続するコンテキスト用接続手段と、を備えている。前記レジスタにコンテキストスイッチの要求が発生した場合、前記コンテキスト用接続手段は、前記コンテキストキャッシュに記憶されているコンテキストを前記レジスタに送り、前記レジスタに記憶されているコンテキストを前記コンテキストキャッシュのキャッシュ領域に送ることを特徴としている。
【００１０】
【特許文献１】特開２００５−２７５７０３号公報
【特許文献２】特開２００４−２２００７０号公報
【特許文献３】特開２００６−９９３３５号公報
【特許文献４】特開２００６−１３９４９６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
本発明の課題は、レジスタの大容量化と状態保存の高速化を両立することができる非同期コンテキスト切り替えシステムを提供することにある。
【課題を解決するための手段】
【００１２】
以下に、発明を実施するための最良の形態・実施例で使用される符号を括弧付きで用いて、課題を解決するための手段を記載する。この符号は、特許請求の範囲の記載と発明を実施するための最良の形態・実施例の記載との対応を明らかにするために付加されたものであり、特許請求の範囲に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１３】
本発明の非同期コンテキスト切り替えシステムは、
マイクロプロセッサが演算を行うときに用いられるデータを保存するレジスタ（３）と、
前記レジスタ（３）に保存されている前記データのコピーを保存するキャッシュレジスタ（１０）と、
前記データを退避するためのキャッシュメモリ（４）と、
前記マイクロプロセッサが前記キャッシュメモリ（４）に対してアクセスしていないときに、前記キャッシュレジスタ（１０）から前記データを読み出して前記キャッシュメモリ（４）に保存するメモリバスアービタ（２０）と
を具備している。
【００１４】
本発明の非同期コンテキスト切り替えシステムにおいて、
前記キャッシュレジスタ（１０）は、
前記レジスタ（３）に保存されている前記データを複製するフリップフロップ回路（１４）と、
前記フリップフロップ回路（１４）に複製された前記データを保存する複製用メモリ（１５）と
を具備している。
【００１５】
本発明の非同期コンテキスト切り替えシステムにおいて、
前記複製用メモリ（１５）は、
前記キャッシュメモリ（４）への書き出し先アドレスと、前記キャッシュメモリ（４）に書き出される前記レジスタ（３）の前記データとを表すレジスタセットを保存するメモリ領域
を備え、
前記メモリ領域は、
既に前記キャッシュメモリ（４）への書き出しが完了している前記レジスタセットを保存する第１メモリ領域と、
前記キャッシュメモリ（４）への書き出し対象となる前記レジスタセットを保存する第２メモリ領域と、
次回の前記キャッシュメモリ（４）への書き出し対象となる前記レジスタセットを保存する第３メモリ領域と
を有している。
【００１６】
本発明の非同期コンテキスト切り替えシステムにおいて、
前記キャッシュレジスタ（１０）は、
前記レジスタ（３）と同容量であり、前記レジスタ（３）に保存されている前記データを保存するメモリ用フリップフロップ回路（４４）と、
前記メモリ用フリップフロップ回路（４４）の切り替え用スイッチであるスイッチ回路（４５）と
を具備している。
【００１７】
本発明の非同期コンテキスト切り替えシステムにおいて、
前記メモリ用フリップフロップ回路（４４）は、
前記キャッシュメモリ（４）への書き出し先アドレスと、前記キャッシュメモリ（４）に書き出される前記レジスタ（３）の前記データとを表すレジスタセットを保存するメモリ領域
を備え、
前記メモリ領域は、
既に前記キャッシュメモリ（４）への書き出しが完了している前記レジスタセットを保存する第１メモリ領域と、
前記キャッシュメモリ（４）への書き出し対象となる前記レジスタセットを保存する第２メモリ領域と、
次回の前記キャッシュメモリ（４）への書き出し対象となる前記レジスタセットを保存する第３メモリ領域と
を有している。
【００１８】
本発明の非同期コンテキスト切り替えシステムにおいて、
前記マイクロプロセッサの現在の動作状況に応じて、出力先制御信号を前記キャッシュレジスタ（１０）と前記メモリバスアービタ（２０）とに出力する制御回路（２）
を更に具備し、
前記出力先制御信号は、前記マイクロプロセッサが前記キャッシュメモリ（４）に対してアクセスしているか否かを表し、
前記出力先制御信号が、前記マイクロプロセッサが前記キャッシュメモリ（４）に対してアクセスしていることを表している場合、
前記メモリバスアービタ（２０）は、前記レジスタ（３）に保存されている前記データを前記キャッシュメモリ（４）に保存し、
前記出力先制御信号が、前記マイクロプロセッサが前記キャッシュメモリ（４）に対してアクセスしていることを表していない場合、
前記キャッシュレジスタ（１０）は、前記レジスタ（３）に保存されている前記データのコピーを保存し、
前記メモリバスアービタ（２０）は、前記キャッシュレジスタ（１０）から前記データを読み出して前記キャッシュメモリ（４）に保存する。
【発明の効果】
【００１９】
以上により、本発明の非同期コンテキスト切り替えシステムでは、マイクロプロセッサ内にキャッシュレジスタ（１０）を搭載することにより、キャッシュレジスタ（１０）はメインメモリより高速に動作できるため、レジスタ（３）のデータを退避するとき、マイクロプロセッサはメモリへの書き出し（保存）を待つことなく動作することができる。
【００２０】
また、本発明の非同期コンテキスト切り替えシステムでは、キャッシュレジスタ（１０）がレジスタ（３）に保存されているデータを複製し、マイクロプロセッサがメモリにアクセスしていない時に、メモリバスアービタ（２０）がキャッシュレジスタ（１０）からデータを読み出してキャッシュメモリ（４）に保存するため、レジスタ（３）のデータをキャッシュメモリ（４）に保存している間、マイクロプロセッサの動作を妨げることはない。
【００２１】
したがって、本発明の非同期コンテキスト切り替えシステムによれば、レジスタ（３）の大容量化と状態保存の高速化を両立することができる。
【発明を実施するための最良の形態】
【００２２】
以下に添付図面を参照して、本発明の非同期コンテキスト切り替えシステムについて詳細に説明する。本発明の非同期コンテキスト切り替えシステムは、マイクロプロセッサに適用される。
【００２３】
図１は、本発明の非同期コンテキスト切り替えシステムの構成を示している。本発明の非同期コンテキスト切り替えシステムは、発信器１と、制御回路２と、レジスタ３と、キャッシュメモリ４と、キャッシュレジスタ１０と、メモリバスアービタ２０とを具備している。
【００２４】
発信器１は、出力端子１ａ、１ｂを具備している。制御回路２は、入力端子２ａ、出力端子２ｂ、２ｃを具備している。入力端子２ａには発信器１の出力端子１ａが接続されている。レジスタ３は、入力端子３ａ、出力端子３ｂを具備している。入力端子３ａには発信器１の出力端子１ａが接続されている。キャッシュレジスタ１０は、入力端子１１ａ、１１ｂ、１２ｂ、１５ｂ、１４ａ、１６ａ、出力端子１５ｃ、１６ｄ、１７ｂを具備している。入力端子１１ａには制御回路２の出力端子２ｂが接続され、入力端子１１ｂ、１２ｂ、１５ｂには発信器１の出力端子１ｂが接続され、入力端子１４ａにはレジスタ３の出力端子３ｂが接続され、入力端子１６ａには制御回路２の出力端子２ｃが接続されている。メモリバスアービタ２０は、入力端子２２ａ、２３ｂ、２４ａ、２５ｂ、２１ａ、２３ａ、２７ｂ、２６ｂ、２８ｂ、出力端子２９ｃ、３０ｃを具備している。入力端子２２ａ、２３ｂには発信器１の出力端子１ａが接続され、入力端子２４ａにはレジスタ３の出力端子３ｂが接続され、入力端子２５ｂには制御回路２の出力端子２ｃが接続されている。入力端子２１ａ、２３ａには制御回路２の端子２ｂが接続され、入力端子２７ｂにはキャッシュレジスタ１０の出力端子１６ｄが接続され、入力端子２６ｂにはキャッシュレジスタ１０の出力端子１７ｂが接続され、入力端子２８ｂにはキャッシュレジスタ１０の出力端子１５ｃが接続されている。キャッシュメモリ４は、入力端子４ａ、４ｂを具備している。入力端子４ａ、４ｂにはそれぞれメモリバスアービタ２０の出力端子２９ｃ、３０ｃが接続されている。
【００２５】
発信器１は、クロックパルス信号を出力端子１ａ、１ｂより出力し、その信号が、制御回路２の入力端子２ａとレジスタ３の入力端子３ａとメモリバスアービタ２０の入力端子２２ａ、２３ｂとキャッシュレジスタ１０の入力端子１１ｂ、１２ｂ、１５ｂとに供給される。制御回路２、レジスタ３、メモリバスアービタ２０、キャッシュレジスタ１０は、この信号に同期して動作する。
【００２６】
レジスタ３は、マイクロプロセッサが演算を行うときに用いられるデータを保存（保持）する。
【００２７】
制御回路２は、マイクロプロセッサの現在の動作状況に応じて、出力先制御信号を出力端子２ｂから出力し、その出力先制御信号が、メモリバスアービタ２０の入力端子２１ａ、２３ａとキャッシュレジスタ１０の入力端子１１ａとに入力される。また、制御回路２は、書き出し先アドレスを指定するアドレス信号を出力端子２ｃから出力し、そのアドレス信号が、メモリバスアービタ２０の入力端子２５ｂとキャッシュレジスタ１０の入力端子１６ａに入力される。
【００２８】
出力先制御信号は、第１出力先制御信号、又は、第２出力先制御信号を表している。第１出力先制御信号は、マイクロプロセッサがキャッシュメモリ４に対してアクセスしていることを表し、レジスタ３のデータをキャッシュメモリ４に保存するための制御信号である。第２出力先制御信号は、マイクロプロセッサがキャッシュメモリ４に対してアクセスしていないことを表し、レジスタ３のデータをキャッシュレジスタ１０に保存するための制御信号である。
【００２９】
レジスタ３が保持しているデータが読み出されるとき、そのデータは出力端子３ｂより出力され、メモリバスアービタ２０の入力端子２４ａとキャッシュレジスタ１０の入力端子１４ａに入力される。
【００３０】
キャッシュレジスタ１０は、出力先制御信号を入力端子１１ａにより入力し、その出力先制御信号が第２出力先制御信号を表している場合、内蔵しているメモリに対し、出力先制御信号が入力された時点におけるレジスタ３のデータを保存する。ここでレジスタ３とメモリは十分に高速なバス動作を行える。
【００３１】
キャッシュメモリ４は、それ固有のアルゴリズムにより入力されたデータを管理し、記録しきれないデータをメインメモリに出力する。その出力はメインメモリに入力され記録される。
【００３２】
ここで、マイクロプロセッサには、現在の動作状況を保存・復元するために、レジスタ３の全ての内容をキャッシュメモリ４に出力する命令が行われる。この処理に対し、キャッシュレジスタ１０は、第２出力先制御信号に応じて、レジスタ３の内容のコピーを一時的に記録し、制御回路２、レジスタ３がメモリバスアービタ２０にデータを出力していない間に、記録したレジスタ３の内容を出力する。
【００３３】
メモリバスアービタ２０は、制御回路２、レジスタ３からキャッシュメモリ４への入出力がある場合、第１出力先制御信号に応じて、その動作を優先して実行し、それ以外の場合には、第２出力先制御信号に応じて、キャッシュレジスタ１０からのデータをキャッシュメモリ４に出力する。
【００３４】
そのデータはキャッシュメモリ４に保存され、マイクロプロセッサの動作状況として、制御回路２、レジスタ３の動作とは独立して出力される。
【００３５】
図２は、キャッシュレジスタ１０の構成を示している。キャッシュレジスタ１０は、ＡＮＤ回路１１と、比較器１２と、ＡＮＤ回路１３と、Ｄ−ＦＦ（Ｄ型フリップフロップ）回路１４と、複製用メモリ（以下、メモリ）１５と、カウンタ回路１６と、カウンタ回路１７とを具備している。
【００３６】
ＡＮＤ回路１１は、入力端子１１ａ、１１ｂ、出力端子１１ｃを具備している。入力端子１１ａには制御回路２の端子２ｂが接続され、入力端子１１ｂには発信器１の出力端子１ｂが接続されている。比較器１２は、出力端子１２ａ、入力端子１２ｂ、１２ｃを具備している。入力端子１２ｂには発信器１の出力端子１ｂが接続されている。ＡＮＤ回路１３は、入力端子１３ａ、１３ｂ、出力端子１３ｃを具備している。入力端子１３ａにはＡＮＤ回路１１の出力端子１１ｃが接続され、入力端子１３ｂには比較器１２の出力端子１２ａが接続されている。Ｄ−ＦＦ回路１４は、入力端子１４ａ（Ｄ端子）、１４ｂ（ＣＬＫ端子）、出力端子１４ｃ（Ｑ端子）を具備している。なお、Ｒ端子に入力される論理（信号レベル）は“１”であるものとする。入力端子１４ａにはレジスタ３の出力端子３ｂが接続され、入力端子１４ｂにはＡＮＤ回路１３の出力端子１３ｃが接続されている。メモリ１５は、入力端子１５ａ〜１５ｃ、出力端子１５ｄを具備している。入力端子１５ａにはＤ−ＦＦ回路１４の出力端子１４が接続され、入力端子１５ｂには発信器１の出力端子１ｂが接続されている。カウンタ回路１６は、入力端子１６ａ、１６ｃ、出力端子１６ｂ、１６ｄを具備している。入力端子１６ａには制御回路２の出力端子２ｃが接続され、入力端子１６ｃにはＡＮＤ回路１１の出力端子１１ｃが接続されている。出力端子１６ｂにはメモリ１５の入力端子１５ｄが接続され、出力端子１６ｄにはメモリバスアービタ２０の入力端子２７ｂが接続されている。カウンタ回路１７は、入力端子１７ａ、出力端子１７ｂを具備している。入力端子１７ａにはＡＮＤ回路１１の出力端子１１ｃが接続されている。出力端子１７ｂにはメモリバスアービタ２０の入力端子２６ｂと比較器１２の入力端子１２ｃとが接続されている。
【００３７】
発信器１は、クロックパルス信号を出力端子１ａ、１ｂより出力し、制御回路２は、マイクロプロセッサの現在の動作状況とクロックパルス信号とに応じて、出力先制御信号を出力端子２ｂから出力する。出力先制御信号が第１、第２出力先制御信号を表している場合、それぞれ、その信号レベルがロウレベル“０”、ハイレベル“１”であるものとする。この出力先制御信号がキャッシュレジスタ１０の入力端子１１ａとメモリバスアービタ２０の入力端子２１ａ、２３ａに入力されることで、キャッシュメモリ４に保存されるデータの出力元がレジスタ３かキャッシュレジスタ１０かが決定される。
【００３８】
また、制御回路２は、マイクロプロセッサの現在の動作状況とクロックパルス信号とに応じて、アドレス信号を出力端子２ｃから出力する。アドレス信号は、指定されたアドレスの内容を表している。このアドレス信号は、キャッシュレジスタ１０の入力端子１６ａとメモリバスアービタ２０の入力端子２５ｂに入力され、キャッシュメモリ４にデータを保存する際に、書き出し先アドレスとして利用される。
【００３９】
キャッシュレジスタ１０のＡＮＤ回路１１は、制御回路２から出力された出力先制御信号と、発信器１から出力されたクロックパルス信号とをそれぞれ入力端子１１ａ、１１ｂにより入力する。その出力先制御信号が第２出力先制御信号を表している場合、ＡＮＤ回路１１は、第２出力先制御信号とクロックパルス信号とに応じて、出力信号を出力端子１１ｃから出力する。比較器１２は、カウンタ回路１７から出力された内容（カウント値）と、発信器１から出力されたクロックパルス信号とをそれぞれ入力端子１２ｂ、１２ｃにより入力し、カウント値と、自己が保持する内容（設定カウント値“０”）とを比較する。比較の結果、一致した場合、比較器１２は、クロックパルス信号に同期して、出力信号として残転送データ有無信号を出力端子１２ａから出力する。ＡＮＤ回路１３は、ＡＮＤ回路１１から出力された出力信号と、残転送データ有無信号とをそれぞれ入力端子１３ａ、１３ｂにより入力し、出力信号としてクロック信号ＣＬＫを出力端子１１ｃから出力する。Ｄ−ＦＦ回路１４は、クロック信号ＣＬＫに応じて、レジスタ３に保持されているデータをレジスタデータ出力信号として入力端子１４ａにより入力し、保持する。Ｄ−ＦＦ回路１４は、次のクロック信号ＣＬＫに応じて、自己が保持しているレジスタデータ出力信号（データ）をキャッシュレジスタメモリ入力信号として出力端子１４ｃから出力し、メモリ１５は、そのキャッシュレジスタメモリ入力信号（データ）を入力端子１５ａにより入力し、保持する。これにより、Ｄ−ＦＦ回路１４は、レジスタ３の内容（データ）を複製し、メモリ１５に保存する。
【００４０】
キャッシュレジスタ１０のカウンタ回路１６は、制御回路２から出力されたアドレス信号と、ＡＮＤ回路１１から出力された出力信号とをそれぞれ入力端子１６ａ、１６ｃにより入力する。カウンタ回路１６は、ＡＮＤ回路１１から出力された出力信号に同期して、１ずつカウントアップして、そのカウント値が、自己が保持する設定カウント値である場合、出力信号としてアドレス信号を出力端子１６ｂ、１６ｄから出力する。メモリ１５は、カウンタ回路１６から出力されたアドレス信号を入力端子１５ｄにより入力し、そのアドレス信号に応じて、保存しているデータをキャッシュレジスタメモリ出力信号として出力端子１５ｃからメモリバスアービタ２０に出力する。
【００４１】
また、図示しないが、レジスタ３に保持されているデータが読み出されたとき、キャッシュレジスタ１０のカウンタ回路１７には、キャッシュレジスタ１０の残り転送データ量として、レジスタ３のデータの容量を表すデータ容量設定値が設定される。カウンタ回路１７は、ＡＮＤ回路１１から出力された出力信号を入力端子１７ａにより入力し、その出力信号に同期して、データ容量設定値を１ずつカウントダウンして、そのカウント値を出力信号として出力端子１７ｂから出力する。
【００４２】
この構成により、メモリバスアービタ２０がキャッシュレジスタ１０のメモリ１５の内容（データ）をキャッシュメモリ４に出力するたびに、カウンタ回路１６の内容は１ずつカウントアップされ、カウンタ回路１７の内容は１ずつカウントダウンされる。
【００４３】
図３は、メモリバスアービタ２０の構成を示している。メモリバスアービタ２０は、ＮＯＴ回路２１と、ＡＮＤ回路２２と、ＡＮＤ回路２３と、ＡＮＤ回路２４と、ＡＮＤ回路２５と、比較器２６と、ＡＮＤ回路２７と、ＡＮＤ回路２８と、ＯＲ回路２９と、ＯＲ回路３０とを具備している。
【００４４】
ＮＯＴ回路２１は、入力端子２１ａ、出力端子２１ｂを具備している。入力端子２１ａには制御回路２の出力端子２ｃが接続されている。ＡＮＤ回路２２は、入力端子２２ａ、２２ｂ、出力端子２２ｃを具備している。入力端子２２ａには発信器１の出力端子１ａが接続され、入力端子２２ｂにはＮＯＴ回路２１の出力端子２１ｂが接続されている。ＡＮＤ回路２３は、入力端子２３ａ、２３ｂ、出力端子２３ｃを具備している。入力端子２３ａには制御回路２の出力端子２ｃが接続され、入力端子２３ｂには発信器１の出力端子１ａが接続されている。ＡＮＤ回路２４は、入力端子２４ａ、２４ｂ、出力端子２４ｃを具備している。入力端子２４ａにはレジスタ３の出力端子３ｂが接続され、入力端子２４ｂにはＡＮＤ回路２２の出力端子２２ｃが接続されている。ＡＮＤ回路２５は、入力端子２５ａ、２５ｂ、出力端子２５ｃを具備している。入力端子２５ａにはＡＮＤ回路２２の出力端子２２ｃが接続され、入力端子２５ｂには制御回路２の端子２ｃが接続されている。比較器２６は、入力端子２６ａ、２６ｂ、出力端子２６ｃを具備している。入力端子２６ａにはＡＮＤ回路２３の出力端子２３ｃが接続され、入力端子２６ｂにはカウンタ回路１７の出力端子１７ｂが接続されている。ＡＮＤ回路２７は、入力端子２７ａ、２７ｂ、出力端子２７ｃを具備している。入力端子２７ａには比較器２６の出力端子２６ｃが接続され、入力端子２７ｂにはカウンタ回路１６の出力端子１６ｄが接続されている。ＡＮＤ回路２８は、入力端子２８ａ、２８ｂ、出力端子２８ｃを具備している。入力端子２８ａには比較器２６の出力端子２６ｃが接続され、入力端子２８ｂにはメモリ１５の出力端子１５ｃが接続されている。ＯＲ回路２９は、入力端子２９ａ、２９ｂ、出力端子２９ｃを具備している。入力端子２９ａにはＡＮＤ回路２５の出力端子２５ｃが接続され、入力端子２９ｂにはＡＮＤ回路２７の出力端子２７ｃが接続されている。出力端子２９ｃにはキャッシュメモリ４の入力端子４ａが接続されている。ＯＲ回路３０は、入力端子３０ａ、３０ｂ、出力端子３０ｃを具備している。入力端子３０ａにはＡＮＤ回路２４の出力端子２４ｃが接続され、入力端子３０ｂにはＡＮＤ回路２８の出力端子２８ｃが接続されている。出力端子３０ｃにはキャッシュメモリ４の入力端子４ｂが接続されている。
【００４５】
メモリバスアービタ２０のＮＯＴ回路２１は、制御回路２から出力された出力先制御信号を入力端子２１ａにより入力し、その反転信号を出力信号として出力端子２１ｂから出力する。ＡＮＤ回路２２は、発信器１から出力されたクロックパルス信号と、ＮＯＴ回路２１から出力された出力信号とをそれぞれ入力端子２２ａ、２２ｂにより入力し、出力信号を出力端子２２ｃから出力する。ＡＮＤ回路２４は、レジスタ３に保持されているデータをレジスタデータ出力信号として入力端子２４ａにより入力し、ＡＮＤ回路２２から出力された出力信号を入力端子２４ｂにより入力する。ＡＮＤ回路２４は、レジスタデータ出力信号（データ）とＡＮＤ回路２２からの出力信号とに応じて、出力信号を出力端子２４ｃから出力する。ＡＮＤ回路２５は、ＡＮＤ回路２２から出力された出力信号と、制御回路２から出力されたアドレス信号とをそれぞれ入力端子２５ａ、２５ｂにより入力し、出力信号を出力端子２５ｃから出力する。
【００４６】
メモリバスアービタ２０のＡＮＤ回路２３は、制御回路２から出力された出力先制御信号と、発信器１から出力されたクロックパルス信号とをそれぞれ入力端子２３ａ、２３ｂにより入力し、出力信号を出力端子２３ｃから出力する。比較器２６は、ＡＮＤ回路２３から出力された出力信号と、カウンタ回路１７から出力されたカウント値とをそれぞれ入力端子２６ａ、２６ｂにより入力し、カウント値と、自己が保持する内容（設定カウント値“０”）とを比較する。比較の結果、一致した場合、比較器２６は、ＡＮＤ回路２３からの出力信号に同期して、出力信号を出力端子２６ｃから出力する。ＡＮＤ回路２７は、比較器２６から出力された出力信号と、カウンタ回路１６から出力されたアドレス信号とをそれぞれ入力端子２７ａ、２７ｂにより入力し、出力信号を出力端子２７ｃから出力する。ＡＮＤ回路２８は、比較器２６から出力された出力信号と、メモリ１５から出力されたキャッシュレジスタメモリ出力信号（データ）とをそれぞれ入力端子２８ａ、２８ｂにより入力し、出力信号を出力端子２８ｃから出力する。
【００４７】
メモリバスアービタ２０のＯＲ回路２９は、ＡＮＤ回路２５、２７から出力された出力信号をそれぞれ入力端子２９ａ、２９ｂにより入力し、出力信号を出力端子２９ｃからキャッシュメモリ４に出力する。ＯＲ回路３０は、ＡＮＤ回路２４、２８から出力された出力信号をそれぞれ入力端子３０ａ、３０ｂにより入力し、出力信号をキャッシュメモリ入力信号として出力端子３０ｃからキャッシュメモリ４に出力する。
【００４８】
この構成により、上記の出力先制御信号が第１出力先制御信号を表している場合、メモリバスアービタ２０は、レジスタ３の内容（データ）を読み出し、ＡＮＤ回路２４とＯＲ回路３０を経由して、キャッシュメモリ４に保存する。
【００４９】
一方、上記の出力先制御信号が第２出力先制御信号を表している場合、メモリバスアービタ２０は、キャッシュレジスタ１０内のメモリ１５の内容（データ）を読み出し、ＡＮＤ回路２８とＯＲ回路３０を経由して、キャッシュメモリ４に保存する。ここでメモリ１５から読み出される内容は、カウンタ回路１６により指定されたアドレスの内容である。
【００５０】
更に、メモリバスアービタ２０は、カウンタ回路１６より出力されたアドレス情報（書き出し先アドレス）を入力し、ＡＮＤ回路２７とＯＲ回路２９を経由して、キャッシュメモリ４に保存する。また、この動作は、カウンタ回路１７から比較器２６に出力されるカウント値が０より大きい場合にのみ行われる。
【００５１】
上述の発信器、制御回路、キャッシュレジスタメモリ、メインメモリ、カウンタ回路、Ｄ−ＦＦ回路、ＡＮＤ回路、ＯＲ回路、ＮＯＴ回路、比較器の内部構成は、当業者にとってよく知られているため、その説明を省略する。
【００５２】
図４は、キャッシュレジスタ１０の動作を示すタイミングチャートである。
【００５３】
ここで、本実施例ではレジスタ３のデータ容量はキャッシュメモリ４へのアクセス４回分と仮定する。また、残転送データ有無信号は、時間Ｔ０及びそれ以前について、キャッシュレジスタ１０の内容が全てキャッシュメモリ４に出力済みであることを示している。
【００５４】
まず、時間Ｔ０にて制御回路２の出力端子２ｂにより出力先制御信号が出力される。即ち、出力先制御信号が第２出力先制御信号を表している。この場合、Ｄ−ＦＦ回路１４の入力端子１４ｂにクロック信号ＣＬＫが供給され、時間Ｔ０の時点でレジスタ３の出力端子３ｂより出力されているデータがＤ−ＦＦ回路１４の入力端子１４ａに入力される。
【００５５】
また、このときレジスタ３のデータ容量（データ容量設定値）がカウンタ回路１７に入力される。先に述べたようにここでは４とする。カウンタ回路１７は、制御回路２の出力端子２ｂより信号が入力されるたびにカウントダウンしていく。比較器１２からの残転送データ有無信号であるカウント値が０以上、つまりキャッシュレジスタ１０のメモリ１５のデータがキャッシュメモリ４に出力し終わっていない場合には、比較器１２の出力端子１２ａより０が出力され続ける。このため、時間Ｔ１の時点のように制御回路２の出力端子２ｂより信号が出力された場合や、時間Ｔ２の時点のようにレジスタ３の出力端子３ｂよりデータが出力された場合でも、Ｄ−ＦＦ回路１４にクロック信号ＣＬＫは供給されない。
【００５６】
したがって、キャッシュレジスタ１０のメモリ１５には、入力端子１５ａより時間Ｔ０の時点でのレジスタ３の出力データが入力され続ける。ここでは時間Ｔ０〜Ｔ５までの間、時間Ｔ０の時点でレジスタ３の出力端子３ｂより出力されているデータが入力され続けている。
【００５７】
時間Ｔ３の時点のように、カウンタ回路１７の内容が０になると比較器１２の出力端子１２ａからは再び信号が出力され続ける。このため、その後に制御回路２の出力端子２ｂより出力先制御信号が出力されることで、入力端子１５ａに入力されるデータを変化させることができる。ここでは時間Ｔ４において比較器１２の出力端子１２ａから信号が出力されるようになり、その後の時間Ｔ５において制御回路２の出力端子２ｂから出力先制御信号が出力されることで、入力端子１５ａに入力されるデータが時間Ｔ５の時点でレジスタ３の出力端子３ｂより出力されているデータと等しくなることを示している。
【００５８】
図５は、メモリバスアービタ２０の動作を示すタイミングチャートである。
【００５９】
時間Ｔ０、Ｔ１、Ｔ３、Ｔ５の時点のように、制御回路２の出力端子２ｂより出力先制御信号が出力される。即ち、出力先制御信号が第２出力先制御信号を表している。この場合、キャッシュメモリ４の入力端子４ｂにはキャッシュレジスタ１０のメモリ１５の出力端子１５ｃから出力されているデータが入力される。
【００６０】
時間Ｔ２、Ｔ４の時点のように、制御回路２の出力端子２ｂより出力先制御信号が出力されていない。このとき、キャッシュメモリ４の入力端子４ｂには、レジスタ３の出力端子３ｂより出力されているデータが入力される。
【００６１】
以上の説明により、本発明の非同期コンテキスト切り替えシステムでは、マイクロプロセッサ内にキャッシュレジスタ１０を搭載することにより、キャッシュレジスタ１０はメインメモリより高速に動作できるため、レジスタ３のデータを退避するとき、マイクロプロセッサはメモリへの書き出し（保存）を待つことなく動作することができる。
【００６２】
また、本発明の非同期コンテキスト切り替えシステムでは、マイクロプロセッサがメモリにアクセスしていない時に、キャッシュレジスタ１０がレジスタ３に保存されているデータを複製し、メモリバスアービタ２０がキャッシュレジスタ１０からデータを読み出してキャッシュメモリ４に保存するため、レジスタ３のデータをキャッシュメモリ４に保存している間、マイクロプロセッサの動作を妨げることはない。
【００６３】
したがって、本発明の非同期コンテキスト切り替えシステムによれば、レジスタ３の大容量化と状態保存の高速化を両立することができる。
【００６４】
他の実施例について説明する。ここで、上述と重複する説明を省略する。
【００６５】
図６は、キャッシュレジスタ１０の構成を示している。キャッシュレジスタ１０は、Ｄ−ＦＦ回路１４、メモリ１５に代えて、Ｄ−ＦＦ回路４４、スイッチ回路４５を具備している。
【００６６】
Ｄ−ＦＦ回路４４は、入力端子４４ａ、４４ｂ、出力端子４４ｃを具備している。入力端子４４ａにはレジスタ３の出力端子３ｂが接続され、入力端子４４ｂにはＡＮＤ回路１３の出力端子１３ｃが接続されている。スイッチ回路４５は、入力端子４５ａ〜４５ｃ、出力端子４５ｄを具備している。入力端子４５ａにはＤ−ＦＦ回路４４の出力端子４４が接続され、入力端子４５ｂには発信器１の出力端子１ｂが接続されている。カウンタ回路１６の出力端子１６ｂにはスイッチ回路４５の入力端子４５ｄが接続されている。
【００６７】
そこで、図６では、Ｄ−ＦＦ回路４４をメモリ１５として利用し、レジスタ３に保存されているデータを保存する。また、図２でメモリ１５としていた部分をＤ−ＦＦ回路４４の切り替え用スイッチ回路としてスイッチ回路４５を利用する。このように、レジスタ３と同容量のＤ−ＦＦ回路４４を用意し、スイッチ回路４５に接続する。また、スイッチ回路４５は、入力端子４５ｄより入力された信号により、メモリバスアービタ２０に接続しているバス幅に合わせてＤ−ＦＦ回路４４のデータをメモリバスアービタ２０に供給する。
【００６８】
これによって、本発明の非同期コンテキスト切り替えシステムでは、Ｄ−ＦＦ回路４４と同じデータを保持するメモリ１５を搭載する無駄を省くことができる効果が得られる。また、レジスタ３と同容量のＤ−ＦＦ回路４４を搭載することで、レジスタ３のデータをより高速に退避できる効果が得られる。
【００６９】
更に他の実施例について説明する。ここで、上述と重複する説明を省略する。
【００７０】
図７は、図２のキャッシュレジスタ１０のメモリ１５の構造を示している。
【００７１】
図７では、メモリ１５は、キャッシュメモリ４への書き出し先アドレス（アドレス情報）と、キャッシュメモリ４に書き出されるレジスタ３の内容（データ）とを表すレジスタセットを保存するメモリ領域を備えている。そのメモリ領域は、既にキャッシュメモリ４への書き出しが完了しているレジスタセットを保存する第１メモリ領域と、キャッシュメモリ４への書き出し対象となるレジスタセットを保存する第２メモリ領域と、次回のキャッシュメモリ４への書き出し対象となるレジスタセットを保存する第３メモリ領域とを有している。第１メモリ領域に保存されたレジスタセットと第２メモリ領域に保存されたレジスタセットとが不一致であれば、書き出し対象となるべきレジスタセットは存在している。第３メモリ領域に保存されたレジスタセットは、第２メモリ領域に保存されたレジスタセットをキャッシュメモリ４に書き出し終えた場合に次にキャッシュメモリ４に書き出すためのレジスタセットを指し示している。
【００７２】
これにより、本発明の非同期コンテキスト切り替えシステムでは、メモリの内容がキャッシュメモリ４に書き出し終わる前に、次のレジスタ３状態をメモリに保存する動作が発生しても、メモリの空いている限り、メモリの内容をキャッシュメモリ４に書き出し終わるまで待たされないようにすることができる。
【００７３】
なお、更に他の実施例について上記の他の実施例と組み合わせることも可能である。即ち、本手法は図２でメモリ１５としていた部分を図６のようにＤ−ＦＦ回路４４とする実施例と組み合わせることも可能であり、Ｄ−ＦＦ回路４４は、上述のメモリ領域（第１メモリ領域、第２メモリ領域、第３メモリ領域）を備えている。
【図面の簡単な説明】
【００７４】
【図１】図１は、本発明の非同期コンテキスト切り替えシステムの構成を示している。
【図２】図２は、図１のキャッシュレジスタ１０の構成を示している。
【図３】図３は、図１のメモリバスアービタ２０の構成を示している。
【図４】図４は、キャッシュレジスタ１０の動作を示すタイミングチャートである。
【図５】図５は、メモリバスアービタ２０の動作を示すタイミングチャートである。
【図６】図６は、図１のキャッシュレジスタ１０の構成を示している。
【図７】図７は、図２のキャッシュレジスタ１０のメモリ１５の構造を示している。
【符号の説明】
【００７５】
１    発信器、
１ａ、１ｂ    出力端子、
２    制御回路
２ａ    入力端子、
２ｂ、２ｃ    出力端子、
３    レジスタ、
３ａ    入力端子、
３ｂ    出力端子、
４    キャッシュメモリ、
４ａ、４ｂ    入力端子、
１０    キャッシュレジスタ、
１１    ＡＮＤ回路、
１１ａ、１１ｂ    入力端子、
１１ｃ    出力端子、
１２    比較器、
１２ａ    出力端子、
１２ｂ、１２ｃ    入力端子、
１３    ＡＮＤ回路、
１３ａ、１３ｂ    入力端子、
１３ｃ    出力端子、
１４    Ｄ−ＦＦ回路、
１４ａ、１４ｂ    入力端子、
１４ｃ    出力端子、
１５    メモリ（複製用メモリ）、
１５ａ〜１５ｃ    入力端子、
１５ｄ    出力端子、
１６    カウンタ回路、
１６ａ、１６ｃ    入力端子、
１６ｂ、１６ｄ    出力端子、
１７    カウンタ回路、
１７ａ    入力端子、
１７ｂ    出力端子、
２０    メモリバスアービタ、
２１    ＮＯＴ回路、
２１ａ    入力端子、
２１ｂ    出力端子、
２２    ＡＮＤ回路、
２２ａ、２２ｂ    入力端子、
２２ｃ    出力端子、
２３    ＡＮＤ回路、
２３ａ、２３ｂ    入力端子、
２３ｃ    出力端子、
２４    ＡＮＤ回路、
２４ａ、２４ｂ    入力端子、
２４ｃ    出力端子、
２５    ＡＮＤ回路、
２５ａ、２５ｂ    入力端子、
２５ｃ    出力端子、
２６    比較器、
２６ａ、２６ｂ    入力端子、
２６ｃ    出力端子、
２７    ＡＮＤ回路、
２７ａ、２７ｂ    入力端子、
２７ｃ    出力端子、
２８    ＡＮＤ回路、
２８ａ、２８ｂ    入力端子、
２８ｃ    出力端子、
２９    ＯＲ回路、
２９ａ、２９ｂ    入力端子、
２９ｃ    出力端子、
３０    ＯＲ回路、
３０ａ、３０ｂ    入力端子、
３０ｃ    出力端子、
【図１】
2008217563.tif 000003
【図２】
2008217563.tif 000004
【図３】
2008217563.tif 000005
【図４】
2008217563.tif 000006
【図５】
2008217563.tif 000007
【図６】
2008217563.tif 000008
【図７】
2008217563.tif 000009