JP2005275703A - プロセッサ及びコンテキスト切り替え方法 - Google Patents
プロセッサ及びコンテキスト切り替え方法 Download PDFInfo
- Publication number
- JP2005275703A JP2005275703A JP2004086841A JP2004086841A JP2005275703A JP 2005275703 A JP2005275703 A JP 2005275703A JP 2004086841 A JP2004086841 A JP 2004086841A JP 2004086841 A JP2004086841 A JP 2004086841A JP 2005275703 A JP2005275703 A JP 2005275703A
- Authority
- JP
- Japan
- Prior art keywords
- register
- data storage
- storage device
- unit
- transfer
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
- G06F9/462—Saving or restoring of program or task context with multiple register sets
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
【課題】 コードサイズが小さくプロセッサの命令実行時間への影響が少ない高速で高性能なプロセッサ及びコンテキスト切り替え方法を提供する。
【解決手段】
プロセッサ1は、表レジスタ部10a及び表レジスタ部と同構成の裏レジスタ部10bとを備えるレジスタ装置10と、データ記憶装置14と、転送レジスタを備える転送装置11と、表レジスタ部10a中のコピーされた裏レジスタ部10bの内容を所定の順序でデータ記憶装置14に転送するストアレジスタ手段、裏レジスタ部10bを表レジスタ部10aにコピーし、転送すべき裏レジスタ部10bのデータがデータ記憶装置14に残っていれば、裏レジスタ部10bへ転送するロードレジスタ手段とを備え、データ転送はプロセッサがデータ記憶装置14へのメモリアクセスを伴わない命令実行時にプロセッサの命令実行と並列に行う演算装置12とを備える。
【選択図】 図1
【解決手段】
プロセッサ1は、表レジスタ部10a及び表レジスタ部と同構成の裏レジスタ部10bとを備えるレジスタ装置10と、データ記憶装置14と、転送レジスタを備える転送装置11と、表レジスタ部10a中のコピーされた裏レジスタ部10bの内容を所定の順序でデータ記憶装置14に転送するストアレジスタ手段、裏レジスタ部10bを表レジスタ部10aにコピーし、転送すべき裏レジスタ部10bのデータがデータ記憶装置14に残っていれば、裏レジスタ部10bへ転送するロードレジスタ手段とを備え、データ転送はプロセッサがデータ記憶装置14へのメモリアクセスを伴わない命令実行時にプロセッサの命令実行と並列に行う演算装置12とを備える。
【選択図】 図1
Description
本発明は、高速な切り替え処理を行なうパイプライン構成のプロセッサ及びコンテキスト切り替え方法に関する。
従来のプロセッサでは、複数のレジスタファイルを設け、それら複数のレジスタファイルの内容をシフトすることで割込み処理やマルチタスク処理で共通に必要な現在実行中のプログラムに関する情報の退避、復帰動作(コンテキストスイッチ)の高速化を実現する方法が知られている(例えば、特許文献1参照。)。
また、割込み処理中に、更なる割込み処理を受け付けるネスティング処理ができるように、コンテキストスイッチ動作後、シフトしたレジスタファイルの内容を外部メモリへ退避および復帰させる処理をDMA転送により行いレジスタファイルの数を増やすことなくコンテキストスイッチを高速化する方法が知られている(例えば、特許文献2参照。)。
特開平6−83639号公報
特開平5−28092号公報
しかしながらこれらの方法では、複数のレジスタからなるコンテキスト情報の退避、復帰毎に複数の命令を実行する必要があった。
又、プロセッサの動作クロック周波数を上げることなくコンテキストスイッチの高速化を実現するので、組込み機器や携帯用途のプロセッサでは消費電力を低減しなければならないが、動作する回路や回数が多い為、消費電力を効率よく削減することができなかった。
更に、保存が必要なものや不要なものを区別せずにデータ転送を行なうため、プロセッサの命令実行時間を延長させ、プロセッサの処理性能を低下させていた。
本発明は、上記問題点を解決する為になされたものであり、コードサイズが小さく高速な処理が実現でき、消費電力を削減することができ、更に、プロセッサの命令実行時間への影響が少ない高速で高性能なコンテキスト切り替え機能を実現できるプロセッサ及びコンテキスト切り替え方法を提供することを目的とする。
上記問題点を解決する為、本発明の第1の特徴は、(イ)プロセッサによるプログラム実行時に用いる表レジスタ部及び表レジスタ部と同構成の裏レジスタ部とを備えるレジスタ装置と、(ロ)プログラム実行時にデータの記憶領域として使用するデータ記憶装置と、(ハ)表レジスタ部及び裏レジスタ部間におけるデータの転送にて使用する転送レジスタを備える転送装置と、(ニ)表レジスタ部中の命令オペランドで示されたレジスタを裏レジスタ部にコピーし、コピーされた裏レジスタ部の内容を所定の順序にしたがいデータ記憶装置に転送するストアレジスタ手段、ストアレジスタ手段により裏レジスタ部にコピーしたレジスタを表レジスタ部にコピーし、転送すべき裏レジスタ部のデータがデータ記憶装置に残っていれば、データ記憶装置から裏レジスタ部へ転送するロードレジスタ手段とを備え、表レジスタ部と裏レジスタ部間のコピーは1サイクルで行い、データ記憶装置と裏レジスタ部間のデータ転送は、プロセッサがデータ記憶装置へのメモリアクセスを伴わない命令実行時に、プロセッサの命令実行と並列に行う演算装置とを備えるプロセッサであることを要旨とする。
更に、本発明の第1の特徴は、(ホ)演算装置は、表レジスタ部の内容をコピーした裏レジスタ部の内容を所定の順序にしたがいデータ記憶装置に転送するストアレジスタ手段、転送すべき裏レジスタ部のデータがデータ記憶装置に残っていれば、データ記憶装置から裏レジスタ部へ転送するロードレジスタ手段とを備え、表レジスタ部と裏レジスタ部間のコピーは1サイクルで行い、データ記憶装置と裏レジスタ部間のデータ転送は、プロセッサがデータ記憶装置へのメモリアクセスを伴わない命令実行時に、プロセッサの命令実行と並列に行うことと、(ヘ)転送装置は、転送レジスタとして、レジスタ装置とデータ記憶装置間のデータ転送方向を示すディレクションフラグを格納する転送方向フラグ部と、裏レジスタ部とデータ記憶装置間のデータ転送開始を指示するとともに、転送状態を示すトランスファフラグを格納する転送要求フラグ部と、表レジスタ部及び裏レジスタ部間のコピー若しくは裏レジスタ部とデータ記憶装置間の転送をするか否かをレジスタ単位に制御するパターンフラグを格納する転送パターン部とを備えることを加えても良い。
本発明の第2の特徴は、(イ)プロセッサによるプログラム実行時に用いる表レジスタ部中の命令オペランドで示されたレジスタを表レジスタ部と同構成の裏レジスタ部にコピーするステップと、(ロ)コピーされた裏レジスタ部の内容を所定の順序にしたがいデータ記憶装置に転送するステップと、(ハ)裏レジスタ部にコピーされているレジスタを表レジスタ部にコピーするステップと、(ニ)転送すべき裏レジスタ部のデータがデータ記憶装置に残っていれば、プロセッサがデータ記憶装置へのメモリアクセスを伴わない命令実行時に、プロセッサの命令実行と並列に、データ記憶装置から裏レジスタ部へ転送するステップとを有するコンテキスト切り替え方法であることを要旨とする。
本発明の第3の特徴は、(イ)プロセッサによるプログラム実行時に用いる表レジスタ部中の命令オペランドで示されたレジスタをコピーされた裏レジスタ部の内容を所定の順序にしたがいデータ記憶装置に転送するステップと、(ロ)転送すべき裏レジスタ部のデータがデータ記憶装置に残っていれば、プロセッサがデータ記憶装置へのメモリアクセスを伴わない命令実行時に、プロセッサの命令実行と並列に、データ記憶装置から裏レジスタ部へ転送するステップとを有するコンテキスト切り替え方法であることを要旨とする。
本発明のプロセッサ及びコンテキスト切り替え方法によると、複数のレジスタからなるコンテキスト情報の退避、復帰がそれぞれ1つの命令により実現できるので、割込み処理やタスク切り替え処理において通常必要なコンテキスト保存と復帰の処理プログラムが不要となり、コードサイズを小さくすることで高速なコンテキスト切り替え処理が実現できる。
また、退避すべきレジスタを退避命令のオペランドで指定するので、不要なレジスタの退避動作がなく、表レジスタ部10aと裏レジスタ部10bへのコピー動作や転送ユニットによって裏レジスタ部10bとメモリの間のデータ転送動作の所要回数が少なくなり、動作する回路や回数が減少するため消費電力が削減できる。
さらに、プロセッサの内部バスが開放されるタイミングでデータ転送するため、プロセッサの命令実行時間への影響が少なく、プロセッサの処理性能低下を少なくすることができる。
次に、図面を参照して、本発明の実施の形態を説明する。以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付している。ただし、図面は模式的なものであることに留意すべきである。
(実施の形態)
(プロセッサ)
本発明の実施の形態におけるプロセッサ1は、図1に示すように、レジスタ装置10、転送装置11、演算装置12、記憶アクセス装置13、データ記憶装置14、デコーダ装置15、フェッチ装置16及び命令記憶装置17等を備えている。
(プロセッサ)
本発明の実施の形態におけるプロセッサ1は、図1に示すように、レジスタ装置10、転送装置11、演算装置12、記憶アクセス装置13、データ記憶装置14、デコーダ装置15、フェッチ装置16及び命令記憶装置17等を備えている。
レジスタ装置10は、表レジスタ部10a及び裏レジスタ部10bを備えている。表レジスタ部10aは、プロセッサ1のプログラム実行時に用いる汎用レジスタ(R0〜R15)18aと、専用レジスタ(Hi:ハイ、Lo:ロウ、LP:リンクポインタ、PSW:プロセッサステイタスワード、EPC:エクセプションプログラムカウンタ)19a等から構成される。裏レジスタ部10bは、表レジスタ部10aと同様の汎用レジスタ18b及び専用レジスタ19bを備えている。
データ記憶装置14は、プロセッサ1の実行の際にデータの記憶領域として使用される主メモリ若しくは補助メモリ等を指す。データ記憶装置14内の記憶領域は、メモリアドレスにて指定される。
転送装置11は、レジスタ装置10の内容を記憶アクセス装置13に入出力する処理を行う。転送装置11は、表レジスタ部10a及び裏レジスタ部10b間において、両レジスタ内のデータ転送にて使用する転送レジスタを備える。転送レジスタとしては、ボトムポインタ部21、トップポインタ部22、転送パターン部23、転送方向フラグ部24及び転送要求フラグ部25等がある。
トップポインタ部22は、裏レジスタ部10bとデータ記憶装置14との間の転送のためのTopポインタを格納する。ボトムポインタ部21は、裏レジスタ部10bとデータ記憶装置14との間の転送のためのBottomポインタを格納する。
転送方向フラグ部24は、レジスタ装置10とデータ記憶装置14の間のデータ転送方向を示すDirectionフラグを格納する。転送要求フラグ部25は、裏レジスタ部10bとデータ記憶装置14の間のデータ転送開始を指示するとともに、転送中であるかどうかを示すTransferフラグを格納する。転送パターン部23は、表レジスタ部10a及び裏レジスタ部10bの間のコピー、裏レジスタ部10bとデータ記憶装置14の間の転送するか否かをレジスタ単位に制御するPatternフラグを格納する。Patternフラグと表レジスタ部10a若しくは裏レジスタ部10bとの関係は図2に示すようになっている。尚、図2のPatternフラグは、指定したパラメータの最上位値の設定を行なうモストシグニフィカントビット(以下「MSB」と記載)から、指定したパラメータの最下位値の設定を行なうリーストシグニフィカントビット(以下「LSB」と記載)へ向かってサーチされる。
上記の5つの転送レジスタは、プログラムの命令実行時に制御動作に伴って自立的に変化するが、コンテキストの切り替え動作を柔軟に制御できるように、命令プログラムにより読み出し、設定等が可能なように構成される。
命令記憶装置17は、演算装置12が演算処理を行なう為の命令プログラムを複数格納しており、演算装置12が適宜これらの命令プログラムを実行することによりプロセッサ1の処理が行なわれる。演算装置12は、ストアレジスタ命令(以下「stregs命令」と記載)と、ロードレジスタ命令(以下「ldregs命令」と記載)を備え、この他機械語にて使用される領域定義命令、ムーブ命令、加算命令、減算命令等のアセンブラ命令を備えている。
stregs命令は、命令オペランドで示された表レジスタ部10aの中のレジスタのみを、裏レジスタ部10bにコピーし、コピーした裏レジスタ部10bの内容を順にデータ記憶装置14にデータ転送する。
ldregs命令は、先に実行したstregs命令で裏レジスタ部10bにコピーしたレジスタのみを表レジスタ部10aにコピーし、データ記憶装置14に転送すべき裏レジスタ部10bのデータが残っていれば、データ記憶装置14から裏レジスタ部10bへデータ転送する。
stregs命令及びldregs命令による表レジスタ部10a及び裏レジスタ部10b間のコピーは、1サイクルで行われ、データ記憶装置14と裏レジスタ部10b間のデータ転送は、プロセッサ1がデータ記憶装置14へのメモリアクセスを伴わない命令実行時に、プロセッサ1の命令実行と並列に行われる。
stregs命令を実行し、データ記憶装置14への転送が終了した後は、指定された裏レジスタ部10bとデータ記憶装置14のデータ構造ブロックは、図3に示すように、同一となる。Topポインタとボトムポインタは、図3のように構造ブロックのメモリアドレスを示している。なお最初のデータ構造ブロックの直前は、終端を示す「0」で初期化されている。
図4(a)は、データ構造ブロックが初期状態か、コンテキスト切り替えによる退避および対応する復帰動作が全て終了している状態を示す。図4(b)は、割込み受付動作やサブルーチン呼び出し命令動作に伴って、割込み処理やサブプログラムの先頭で実行されたstregs命令によってコンテキスト切り替えが行われて退避された状態のデータ構造ブロックを示す。図4(c)は、図4(b)の状態で、再度許可された割込み受付動作やサブルーチン呼び出し命令動作に伴って(ネスティング)、それらの処理プログラムで実行されたstregs命令によってコンテキスト切り替えを行った状態のデータ構造ブロックを示す。
図5(a)は、2回のコンテキスト切り替えでデータ記憶装置14にコンテキストが保存されている状態のデータ構造ブロックを示す。図5(b)は図5(a)の状態でldregs命令を実行した状態のデータ構造ブロックを示す。図5(c)は、図5(b)の状態で再びldregs命令を実行してコンテキスト切り替えを行い、退避および対応する復帰動作が終了した状態のデータ構造ブロックを示す。
プロセッサ1は、演算、制御、その他の通常の命令実行時には表レジスタ部10aのみを用いて動作するが、stregs命令とldregs命令の2つの命令実行時には、表レジスタ部10a及び裏レジスタ部10bを用いて、両レジスタ間のコピー動作、裏レジスタ部10bとデータ記憶装置14との間のデータ転送動作を行う。
記憶アクセス装置13は、データ記憶装置14に対してアドレスや読み書きのコントロール、データの入出力を行なう。データ記憶装置14は、アービター部13aを備える。アービター部13aは、デコータ装置15からの情報を使用し、演算装置12の入出力と転送装置11の入出力の調停を行なう。
デコーダ装置15は、フェッチ装置16より受信するコード信号を解読し、演算装置12に送信する。又、レジスタ装置10の汎用レジスタ18aからデータを読み込み、演算内容の指示に従うと共に、コード信号で指示されるレジスタ装置10からのデータを読み込み、演算装置12に送信する。コード信号の解読の際には、このコードがデータを読み込み、演算処理を行なうか、記憶アクセスを行なうか等を判断し、その情報を記憶アクセス装置13に送信する。
フェッチ装置16は、プログラムカウンタが示すメモリアドレスを基に、命令記憶装置17よりプロセッサ実行に必要な命令を取得する。
(コンテキストの切り替え動作)
プロセッサ1によるコンテキスト切り替えの動作は、代表的に、割り込み要求発生時及び関数呼び出し時等に使用される。この2つのコンテキスト切り替えの動作について図面を参照して以下に説明する。
プロセッサ1によるコンテキスト切り替えの動作は、代表的に、割り込み要求発生時及び関数呼び出し時等に使用される。この2つのコンテキスト切り替えの動作について図面を参照して以下に説明する。
先ず、割り込み要求発生時の動作を図6のフローチャートを用いて説明する。
(a)ステップS101において、演算結果がエラーを起こした、周辺機器から処理要求が送られてくる等の理由により、演算装置12の演算処理実行中に割り込みが発生すると、演算装置12はこれまで実行していたコンテキストを保存する命令を実行する。尚、コンテキスト保存処理の詳細については後述する。次にステップS102において、演算装置12は、割り込み原因の特定を行なう。又、割り込み原因が複数ある場合には、割り込みの優先順位を決定する。ステップS103において、割り込み原因が確定すると、図12の演算装置はそれまで行なっていた処理を一時中断し、割り込み要因毎に、割り込みハンドラを実行し、割り込みハンドラの指示するサブルーチンへジャンプする。
(b)ステップS104においては、割り込みハンドラの指示するサブルーチンを実行する為に、サブルーチンのコンテキストをレジスタ装置10へ保存する命令を実行する。このコンテキスト保存命令の詳細については後述する。ステップS105においては、割り込みハンドラに予め設定されているプログラム処理を実行する。
(c)ステップS106では、割り込みハンドラの処理が終了すると、演算装置12は、コンテキストの復帰命令を実行する。ステップS107では、割り込みハンドラは、このサブルーチンを終了する。
(d)割り込みハンドラの実行後、ステップS108において、演算装置12は、割り込み処理を終了させるために、保存していたコンテキストの復帰命令を実行する。尚、コンテキスト復帰命令の詳細については後述する。最後にステップS109において、演算装置12は、割り込みハンドラの終了命令を実行する。
次に、関数呼び出し時の動作を図7のフローチャートを用いて説明する。
(a)ステップS201において、関数呼び出し命令が読みだされると、演算装置12は、サブルーチン実行の為にコンテキストの保存命令を実行する。コンテキスト保存命令の詳細については後述する。ステップS202において、サブルーチンとして、呼び出された関数の処理を実行する。
(b)ステップS203において、呼び出し関数の処理が完了すると、演算装置12は、サブルーチン終了の為のコンテキストの復帰命令を実行する。コンテキスト復帰命令の詳細については後述する。ステップS204では、演算装置12は、関数呼び出しのサブルーチンを終了する。
(コンテキスト保存の動作)
次に、stregs命令を実行する際のコンテキスト保存の為の切り替え動作について、図8のフローチャートを用いて説明する。尚、レジスタ装置10のレジスタのBottomポインタ及びTopポインタは初期状態として、図4(a)のようにコンテキスト保存領域を指しているものとする。
次に、stregs命令を実行する際のコンテキスト保存の為の切り替え動作について、図8のフローチャートを用いて説明する。尚、レジスタ装置10のレジスタのBottomポインタ及びTopポインタは初期状態として、図4(a)のようにコンテキスト保存領域を指しているものとする。
(a)ステップS301において、呼び出し関数実行開始時又は割り込みハンドラ実行開始時に、演算装置12は、stregs命令を実行し、表レジスタ部10a内の指定されたデータだけを裏レジスタ部10bにコピーする。コピーするレジスタの指定は命令オペランドで行なわれる。
(b)ステップS302において、演算装置12によりstregs命令が実行されると、命令オペランドで指定された表レジスタ部10aのみを、裏レジスタ部10bにコピーする。更にステップS303において、コピーした裏レジスタ部10bに対応する転送パターン部23のPatternフラグ「1」を立て、転送必要とする。転送不要の場合は、フラグ「0」を立てる。ステップS304では、転送方向フラグ部24のDirectionフラグを設定し、裏レジスタ部10bからデータ記憶装置14への転送方向を指示する。
(c)ステップS305では、転送要求フラグ部25のTransferフラグをOFF「0」からON「1」とし、データ記憶装置14への転送動作を開始させる。ステップS306では、ボトムポインタ部21にトップポインタ部22の内容をコピーする。ステップS307では、図1の転送パターン部23のPatternフラグをMSB側からLSB側に順に調べる。転送可の場合は、対応する裏レジスタ部10bのデータを読み出し、Topポインタの指し示すメモリアドレスに図4(b)のように書き込む。この後、再度PatternフラグをMSB側からLSB側に順に調べ、転送を意味する「1」の位置を得たら、対応する裏レジスタ部10bを設定し、転送を開始する。
(d)ステップS308では、全てのPatternフラグのサーチが終了したか否かの判断を行い、サーチ終了と判断されるとステップS312へ進み、まだサーチを行なうと判断されるとステップS309へ進む。
ステップS309では、演算装置12のIDステージを見て、演算命令等のデータ記憶装置14へのアクセスを行わない命令の実行、つまり、データ記憶装置14へのパスが空くのを待つ。ステップS310にてデータ記憶装置14へのパスが空くと、選択したレジスタをTopポインタの指すメモリアドレスに格納する。ステップS311では、Topポインタを次にレジスタを格納するメモリアドレスに進める。実施の形態では、メモリアドレスがバイト単位に付与され、汎用レジスタ18aなどのデータ長が32ビットであり一度に転送するデータ幅が32ビットあるので、ポインタの内容は4増加する。この後、ステップS307へ戻り、再度同様に転送処理を行う。
(e)ステップS312において、転送パターン部23のPatternフラグの内容が読み出されて、裏レジスタ部10bからデータ記憶装置14への転送動作が終了すると、Topポインタの示すメモリアドレスに図4(c)のように書き込まれる。ステップS313では、トップポインタ部22のTopポインタの内容が、次に書き込むメモリアドレスを示すように4増加させる。ステップS314では、転送要求フラグ部25のTransferフラグをOFF、つまり「0」にして、データ記憶装置14への転送動作を終了する。
(コンテキスト復帰の動作)
次に、コンテキスト復帰を行なうldregs命令を実行する際のコンテキスト切り替え動作について、図9のフローチャートを用いて説明する。尚、レジスタ装置10のレジスタのBottomポインタ及びTopポインタは初期状態として、図5(a)の2回のコンテキスト切り替えでデータ記憶装置14にコンテキストが保存されている状態を示しているものとする。
次に、コンテキスト復帰を行なうldregs命令を実行する際のコンテキスト切り替え動作について、図9のフローチャートを用いて説明する。尚、レジスタ装置10のレジスタのBottomポインタ及びTopポインタは初期状態として、図5(a)の2回のコンテキスト切り替えでデータ記憶装置14にコンテキストが保存されている状態を示しているものとする。
(a)先ず、ステップS401において、関数実行終了時又は割り込みハンドラ実行終了時に、演算装置12は、ldregs命令を実行し、裏レジスタ部10bの指定されたものだけ表レジスタ部10aにコピーする。尚、レジスタの指定は命令オペランドで行なわれる。ldregs命令が実行される際、転送要求フラグ部25のTransferフラグがONであれば、命令はストールされ、実行待機状態となる。転送要求フラグ部25のTransferフラグがOFFとなった次のサイクルから命令は実行される。
(b)ステップS402において、TransferフラグがOFFとなると、演算装置12は、命令オペランドで指定された裏レジスタ部10bのみを表レジスタ部10aにコピーする。ステップS403において、トップポインタ部22にボトムポインタ部21の内容をコピーする。ステップS404において、転送方向フラグ部24のDirectionフラグに、データ記憶装置14からレジスタへの転送方向を設定する。ステップS405においては、転送要求フラグ部25のTransferフラグをOFFからONとして、転送動作を開始させる。
(c)転送開始が指示されると、ステップS405において、演算装置12は、ボトムポインタ部21のBottomポインタを4減少させる。ステップS406では、ボトムポインタ部21が示す内容がデータ記憶装置14内から読み出される。ステップS407では、このボトムポインタ部21の内容が「0」であれば、ステップS413へ進む。ボトムポインタ部21の内容が「0」でなければステップS408へ進む。
(d)ステップS408では、読み出したデータを転送パターン部23に書き込み、ボトムポインタ部21のレジスタの内容を4減少させる。ステップS409では、次に更新された転送パターン部23のPatternフラグのフラグをLSB側から順に調べ、転送必要を示す「1」を得ると、Bottomポインタの示すメモリアドレスからデータを読み出し、転送必要のフラグに対応した裏レジスタ部10bにデータを書き込むと共に、ボトムポインタ部21のBottomポインタを4減少させる。ステップS410では、転送パターン部23のPatternフラグの調査をLSBからMSBへ向かって順に行い、全てのPatternフラグのサーチが終了したかの判定を行う。全てのサーチが終了した場合はS413へ進み処理を終了する。まだサーチを行なう場合は、ステップS411へ進む。
(e)ステップS411では、演算装置12のIDステージを見て、演算命令等のデータ記憶装置14へのアクセスを行わない命令の実行、つまり、データ記憶装置14へのパスが空くのを待つ。ステップS412にてデータ記憶装置14へのパスが空くと、選択したレジスタをBottomポインタの指すメモリアドレスに格納する。ステップS311では、Bottomポインタを次にレジスタを格納するメモリアドレスに進める。
(f)このようにして全てのPatternフラグの処理が終了すると、ステップS413において、転送要求フラグ部25のTransferフラグをOFFとしてデータ記憶装置14からレジスタへの転送動作を終了する。
本発明の実施の形態においては、表レジスタ部10aと裏レジスタ部10bは1対1で接続されて、1サイクルでデータ転送が行われるが、裏レジスタ部10bとデータ記憶装置14の間のデータ転送は、ハードウェアの増加量を削減するためプロセッサ1の内部データメモリのバスを共有して行われる。
尚、割り込み発生時及び関数呼び出し時においてstregs命令とldregs命令を使用したソースコード例を図12に示す。
本発明の実施の形態におけるプロセッサ1は、割込み処理時に、割込み処理プログラムやサブルーチンで呼び出されるプログラムで必要なコンテキスト保存とコンテキスト復帰の処理プログラムが、stregs命令とldregs命令の2命令で実現でき、プログラムサイズを小さくすることができる。これによりコンテキスト切り替えの処理速度が向上するとともに、コンテキストをレジスタからデータ記憶装置14に退避復帰させるデータ転送をプロセッサ1の命令実行と平行に実施してできるため転送時間が隠蔽され、高速なコンテキスト切り替えが実現できる。更に、不要なレジスタ装置10のコピー動作やデータ記憶装置14へのデータ転送動作が行われないため、動作する回路が減って、消費電力の低減が実現できる。
(変更例1)
本発明の実施の形態に係るコンテキスト切り替え操作は、通常の命令実行時には、表レジスタ部10aのみを用いて動作し、割込み受付時及びサブルーチン呼び出し命令実行時等は、stregs命令を使用して、レジスタ部10a→裏レジスタ部10b→データ記憶装置14の流れで、若しくはldregs命令を使用して、データ記憶装置14→裏レジスタ部10b→表レジスタ部10aの流れでレジスタ内容のコピー又はデータ転送を行なっていた。
本発明の実施の形態に係るコンテキスト切り替え操作は、通常の命令実行時には、表レジスタ部10aのみを用いて動作し、割込み受付時及びサブルーチン呼び出し命令実行時等は、stregs命令を使用して、レジスタ部10a→裏レジスタ部10b→データ記憶装置14の流れで、若しくはldregs命令を使用して、データ記憶装置14→裏レジスタ部10b→表レジスタ部10aの流れでレジスタ内容のコピー又はデータ転送を行なっていた。
しかし、表レジスタ部10aと裏レジスタ部10b間のコピーは、stregs命令及びldregs命令に含まずに、別の命令を用いて行なってもコンテキスト切り替え操作は可能である。実施の形態において割り込み発生時及び関数呼び出し時においてstregs命令とldregs命令を使用したソースコード例は図12のようになるが、変更1では、このソースコードの(*)の箇所の「レジスタの保存」及び「レジスタの復帰」のコードを省略することが可能となる。
この表レジスタ部10aと裏レジスタ部10b間のコピーを省略する場合の「レジスタの保存」の動作が図10のフローチャートに示されている。ステップS501においては、stregs命令の準備として、表レジスタ部10aから裏レジスタ部10bへのコピー動作を行うようにする命令を新たに追加したり、PSWにコピーフラグを設けて、そのコピーフラグの状態でコピー動作を制御したりする。PSWを用いる場合は、新たな命令コードの追加が不要となる。
この準備処理の終了後、ステップS502〜ステップS513において、プロセッサ1はstregs命令を用いて、命令オペランドで示された裏レジスタ部10bのみを、データ記憶装置14にデータ転送する。尚、ステップS502〜ステップS513の動作は、実施の形態のステップS302〜ステップS314と同様である為説明を省略する。
又、表レジスタ部10aと裏レジスタ部10b間のコピーを省略する場合の「レジスタの復帰」の動作が図11のフローチャートに示されている。ステップS601において、ldregs命令の準備として、裏レジスタ部10bから表レジスタ部10aへのコピー動作を行うようにする命令を新たに追加したり、PSWを用いてコピー動作を制御したりする。
この準備処理の終了後、ステップS602〜ステップS613において、プロセッサ1はldregs命令を用いて、命令オペランドで示されたデータ記憶装置14のみを、裏レジスタ部10bにデータ転送する。尚、ステップS602〜ステップS613の動作は、実施の形態のステップS402〜ステップS413と同様である為説明を省略する。
データ記憶装置14と裏レジスタ部10b間のデータ転送は、プロセッサのメモリアクセスを伴わない命令実行時に、プロセッサの命令実行と並列に行われる。
上記により、stregs命令とldregs命令を使用するプログラムを作成する際の自由度を上げることができる。
(変形例2)
ldregs命令実行時に、裏レジスタ部10bから表レジスタ部10aへ各レジスタの指定をコピーするが、このレジスタの指定は、命令オペランドではなく、転送パターン部23のPatternフラグを用いて行うようにしてもよい。
ldregs命令実行時に、裏レジスタ部10bから表レジスタ部10aへ各レジスタの指定をコピーするが、このレジスタの指定は、命令オペランドではなく、転送パターン部23のPatternフラグを用いて行うようにしてもよい。
上記のように、Patternフラグを用いることにより、レジスタを指定する命令オペランド部が不要となるため、ldregs命令のコードサイズを小さくすることができる。ひいては、プログラムサイズを小さくすることができ、処理速度の向上が図れる。
(変更例3)
転送パターン部23のPatternフラグのフラグは、レジスタ毎に設ける必要はなく、複数のレジスタをグループとして扱い、グループ単位で指定するように構成してもよい。
転送パターン部23のPatternフラグのフラグは、レジスタ毎に設ける必要はなく、複数のレジスタをグループとして扱い、グループ単位で指定するように構成してもよい。
グループとして扱うことにより、プロセッサ1のコンテキストが増大して、指定する汎用レジスタ18a、18bや専用レジスタ19a、19bの数が増加しても、stregs命令やldregs命令の命令オペランドのサイズの増加を減らすことができる。ひいては、プログラムサイズの増加を抑制することができ、処理速度の低下を少なくすることができる。
1…プロセッサ
10…レジスタ装置
10a…表レジスタ部
10b…裏レジスタ部
11…転送装置
12…演算装置
13…記憶アクセス装置
13a…アービター部
14…データ記憶装置
15…デコーダ装置
16…フェッチ装置
17…命令記憶装置
18a、18b…汎用レジスタ
19a、19b…専用レジスタ
21…ボトムポインタ部
22…トップポインタ部
23…転送パターン部
24…転送方向フラグ部
25…転送要求フラグ部
10…レジスタ装置
10a…表レジスタ部
10b…裏レジスタ部
11…転送装置
12…演算装置
13…記憶アクセス装置
13a…アービター部
14…データ記憶装置
15…デコーダ装置
16…フェッチ装置
17…命令記憶装置
18a、18b…汎用レジスタ
19a、19b…専用レジスタ
21…ボトムポインタ部
22…トップポインタ部
23…転送パターン部
24…転送方向フラグ部
25…転送要求フラグ部
Claims (5)
- プロセッサによるプログラム実行時に用いる表レジスタ部及び前記表レジスタ部と同構成の裏レジスタ部とを備えるレジスタ装置と、
前記プログラム実行時にデータの記憶領域として使用するデータ記憶装置と、
前記表レジスタ部及び前記裏レジスタ部間におけるデータの転送にて使用する転送レジスタを備える転送装置と、
前記表レジスタ部中の命令オペランドで示されたレジスタを前記裏レジスタ部にコピーし、コピーされた裏レジスタ部の内容を所定の順序にしたがい前記データ記憶装置に転送するストアレジスタ手段、前記ストアレジスタ手段により前記裏レジスタ部にコピーしたレジスタを前記表レジスタ部にコピーし、転送すべき前記裏レジスタ部のデータが前記データ記憶装置に残っていれば、前記データ記憶装置から前記裏レジスタ部へ転送するロードレジスタ手段とを備え、前記表レジスタ部と前記裏レジスタ部間のコピーは1サイクルで行い、前記データ記憶装置と前記裏レジスタ部間のデータ転送は、前記プロセッサが前記データ記憶装置へのメモリアクセスを伴わない命令実行時に、前記プロセッサの命令実行と並列に行う演算装置
とを備えることを特徴とするプロセッサ。 - 前記演算装置は、
前記表レジスタ部の内容をコピーした裏レジスタ部の内容を所定の順序にしたがい前記データ記憶装置に転送するストアレジスタ手段、転送すべき前記裏レジスタ部のデータが前記データ記憶装置に残っていれば、前記データ記憶装置から前記裏レジスタ部へ転送するロードレジスタ手段とを備え、前記表レジスタ部と前記裏レジスタ部間のコピーは1サイクルで行い、前記データ記憶装置と前記裏レジスタ部間のデータ転送は、前記プロセッサが前記データ記憶装置へのメモリアクセスを伴わない命令実行時に、前記プロセッサの命令実行と並列に行うことを特徴とする請求項1に記載のプロセッサ。 - 前記転送装置は、前記転送レジスタとして、
前記レジスタ装置と前記データ記憶装置間のデータ転送方向を示すディレクションフラグを格納する転送方向フラグ部と、
前記裏レジスタ部と前記データ記憶装置間のデータ転送開始を指示するとともに、転送状態を示すトランスファフラグを格納する転送要求フラグ部と、
前記表レジスタ部及び前記裏レジスタ部間のコピー若しくは前記裏レジスタ部と前記データ記憶装置間の転送をするか否かをレジスタ単位に制御するパターンフラグを格納する転送パターン部
とを備えることを特徴とする請求項1又は2に記載のプロセッサ。 - プロセッサによるプログラム実行時に用いる表レジスタ部中の命令オペランドで示されたレジスタを前記表レジスタ部と同構成の裏レジスタ部にコピーするステップと、
コピーされた前記裏レジスタ部の内容を所定の順序にしたがいデータ記憶装置に転送するステップと、
前記裏レジスタ部にコピーされているレジスタを前記表レジスタ部にコピーするステップと、
転送すべき前記裏レジスタ部のデータが前記データ記憶装置に残っていれば、前記プロセッサが前記データ記憶装置へのメモリアクセスを伴わない命令実行時に、前記プロセッサの命令実行と並列に、前記データ記憶装置から前記裏レジスタ部へ転送するステップ
とを有することを特徴とするコンテキスト切り替え方法。 - プロセッサによるプログラム実行時に用いる表レジスタ部中の命令オペランドで示されたレジスタをコピーされた裏レジスタ部の内容を所定の順序にしたがいデータ記憶装置に転送するステップと、
転送すべき前記裏レジスタ部のデータが前記データ記憶装置に残っていれば、前記プロセッサが前記データ記憶装置へのメモリアクセスを伴わない命令実行時に、前記プロセッサの命令実行と並列に、前記データ記憶装置から前記裏レジスタ部へ転送するステップ
とを有することを特徴とするコンテキスト切り替え方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004086841A JP2005275703A (ja) | 2004-03-24 | 2004-03-24 | プロセッサ及びコンテキスト切り替え方法 |
US10/972,341 US20050216708A1 (en) | 2004-03-24 | 2004-10-26 | Processor for performing context switching, a method for performing context switching, a computer program for perform context switching |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004086841A JP2005275703A (ja) | 2004-03-24 | 2004-03-24 | プロセッサ及びコンテキスト切り替え方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005275703A true JP2005275703A (ja) | 2005-10-06 |
Family
ID=34991541
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004086841A Pending JP2005275703A (ja) | 2004-03-24 | 2004-03-24 | プロセッサ及びコンテキスト切り替え方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20050216708A1 (ja) |
JP (1) | JP2005275703A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009217681A (ja) * | 2008-03-12 | 2009-09-24 | Omron Corp | 割込機能を備えたplc |
JP2011150636A (ja) * | 2010-01-25 | 2011-08-04 | Renesas Electronics Corp | マイクロプロセッサ及びその制御方法 |
JP2011221867A (ja) * | 2010-04-12 | 2011-11-04 | Renesas Electronics Corp | マイクロコンピュータ及び割込み制御方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101669989B1 (ko) * | 2010-05-27 | 2016-10-28 | 삼성전자주식회사 | 파이프라인 프로세서 및 이퀄 모델 보존 방법 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6671762B1 (en) * | 1997-12-29 | 2003-12-30 | Stmicroelectronics, Inc. | System and method of saving and restoring registers in a data processing system |
US6408325B1 (en) * | 1998-05-06 | 2002-06-18 | Sun Microsystems, Inc. | Context switching technique for processors with large register files |
WO2000031641A1 (fr) * | 1998-11-20 | 2000-06-02 | Fujitsu Limited | Processeur d'informations |
US6292888B1 (en) * | 1999-01-27 | 2001-09-18 | Clearwater Networks, Inc. | Register transfer unit for electronic processor |
US6957326B1 (en) * | 2001-06-28 | 2005-10-18 | Turin Networks | Methods and apparatuses for executing threads |
-
2004
- 2004-03-24 JP JP2004086841A patent/JP2005275703A/ja active Pending
- 2004-10-26 US US10/972,341 patent/US20050216708A1/en not_active Abandoned
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009217681A (ja) * | 2008-03-12 | 2009-09-24 | Omron Corp | 割込機能を備えたplc |
JP2011150636A (ja) * | 2010-01-25 | 2011-08-04 | Renesas Electronics Corp | マイクロプロセッサ及びその制御方法 |
JP2011221867A (ja) * | 2010-04-12 | 2011-11-04 | Renesas Electronics Corp | マイクロコンピュータ及び割込み制御方法 |
US8959317B2 (en) | 2010-04-12 | 2015-02-17 | Renesas Electronics Corporation | Processor and method for saving designated registers in interrupt processing based on an interrupt factor |
US9116870B2 (en) | 2010-04-12 | 2015-08-25 | Renesas Electronics Corporation | Process and method for saving designated registers in interrupt processing based on an interrupt factor |
Also Published As
Publication number | Publication date |
---|---|
US20050216708A1 (en) | 2005-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6807383B2 (ja) | 転送プレフィックス命令 | |
JP3439033B2 (ja) | 割り込み制御装置及びプロセッサ | |
KR100777772B1 (ko) | 연산 처리 장치, 정보 처리 장치 및 레지스터 파일의 제어방법 | |
CN112579162A (zh) | 异构isa平台上硬件和软件协调的对高级特征选入的方法 | |
KR101793282B1 (ko) | 마이크로 컴퓨터 | |
JP2005100034A (ja) | 情報処理制御システム | |
JPS6250934A (ja) | 処理装置の割込制御方式 | |
JP2005275703A (ja) | プロセッサ及びコンテキスト切り替え方法 | |
EP1039376B1 (en) | Sub-instruction emulation in a VLIW processor | |
JPS63268033A (ja) | データ処理装置 | |
JPS6217773B2 (ja) | ||
JPH0377137A (ja) | 情報処理装置 | |
EP0915416B1 (en) | System for allowing a two word instruction to be executed in a single cycle and method therefor | |
EP4193250B1 (en) | Processing apparatus | |
JPS62262146A (ja) | 処理装置 | |
JPS59218569A (ja) | マイクロ・コンピユ−タ | |
JP2000112754A (ja) | データ処理装置 | |
JP2562838B2 (ja) | プロセッサ及びストアバッファ制御方法 | |
KR100870175B1 (ko) | 에이알엠7 계열 마이크로 컨트롤러에서의 콘텍스트 스위치방법 | |
JP3197045B2 (ja) | 拡張中央演算処理装置 | |
JPH06131250A (ja) | データ処理装置 | |
JPS6220032A (ja) | 情報処理装置 | |
JPS6149695B2 (ja) | ||
JP2011150636A (ja) | マイクロプロセッサ及びその制御方法 | |
JPH06324884A (ja) | データ処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20061214 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061219 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070529 |