JP3719241B2 - 演算装置 - Google Patents
演算装置 Download PDFInfo
- Publication number
- JP3719241B2 JP3719241B2 JP2002262899A JP2002262899A JP3719241B2 JP 3719241 B2 JP3719241 B2 JP 3719241B2 JP 2002262899 A JP2002262899 A JP 2002262899A JP 2002262899 A JP2002262899 A JP 2002262899A JP 3719241 B2 JP3719241 B2 JP 3719241B2
- Authority
- JP
- Japan
- Prior art keywords
- cpu
- internal state
- calculation
- arithmetic unit
- register
- 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
Landscapes
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Multi Processors (AREA)
Description
【発明の属する技術分野】
演算装置に関する。
【0002】
【従来の技術】
従来より、CPUとは別に演算装置を設け、CPUが演算装置に演算を行わせることによって処理の高速化等を図ったコンピュータシステムが知られている(例えば、特許文献1参照)。
【0003】
こうした従来のコンピュータシステムの例を図8に示して説明する。図8に示すコンピュータシステムは、CPU520,演算装置510,ROM590,RAM600,割り込みコントローラ610,図示しない入出力装置,CPU520とROM590とを接続するアドレスバス710及びデータバス720,CPU520とRAM600・演算装置510・割り込みコントローラ610・入出力装置等を接続するアドレスバス730及びデータバス740を備える。
【0004】
CPU520は、制御部570が、アドレスバス710を介して読み込み対象の命令のアドレスを指定し、データバス720を介してROM590からそのアドレスの命令を取得して実行する。そしてCPU520は、命令の実行により、RAM600,演算装置510,割り込みコントローラ610,図示しないI/Oなどとのデータの入力または出力を行う場合には、アドレスバス730でそのアドレスを指定し、データバス740を介してデータの入力または出力を行う。
【0005】
演算装置510は、所定の演算(すなわち、このコンピュータシステム上で高速化する必要のある演算)を実行するための演算部560を備える。また演算装置510は、演算部560を制御する制御部550を備える。制御部550は、アドレスバス730の所定のアドレスにマップされた演算開始フラグレジスタを備え、この演算開始フラグレジスタのフラグが立った際にアドレスバス730及びデータバス740を制御してRAM600に記憶された演算対象のデータをデータバス740を介して取得して、演算部550に演算を実行させる。
【0006】
また制御部550は、演算部560による演算の終了時などCPUと同期を取る必要がある場合に、割り込みコントローラ610へ割り込み信号を送り、CPU520に対して割り込みをかける。
こうしたコンピュータシステムで、CPU520が演算装置510に演算を行わせる場合には、(1)CPU520から演算装置510への演算処理の開始要求を行い、(2)CPU520と演算装置510との演算用データ等のデータのやりとりを行って、(3)演算装置510とCPU520との同期をとる動作を行う。これらについて以下に詳細に説明する。
【0007】
(1)CPU520から演算装置510への演算処理の開始要求を行う場合、CPU520は、アドレスバス730を介して、演算装置510の演算開始フラグレジスタのアドレスを指定し、データバス740を介して演算開始フラグを立てるデータを出力する。演算装置510の制御部550は、演算開始フラグが立った場合に演算部560を制御して演算を開始させる。このようにCPU520から演算装置510への演算処理の要求は、アドレスバス730及びデータバス740を利用して行っている。
【0008】
(2)CPU520と演算装置510との演算データ等のデータの受け渡しは、例えばRAM600の所定の演算データ格納用アドレスの記憶領域を介して行う。すなわち、CPU520は、演算データ格納用アドレスをアドレスバス730を介して指定し、データバス740を介してCPU520のCPU内部状態部580の内部レジスタに保持されているデータをRAM600へ格納させる。一方、演算装置510がデータを取得する場合には、演算装置510は、演算データ格納用アドレスをアドレスバス730を介して指定し、データバス740を介してRAM600に保持されているデータを取得する。また、逆に演算装置510による演算結果をCPU510へ渡す場合には、演算装置510は、演算データ格納用アドレスをアドレスバス730を介して指定し、データバス740を介してRAM600に演算結果を記憶させて、CPU520が、この演算データ格納用アドレスをアドレスバス730を介して指定し、データバス740を介してRAM600に記憶された演算結果をCPU520の内部状態部580の内部レジスタに取り込む。
【0009】
このようにCPU520と演算装置510とのデータの受け渡しは、アドレスバス730及びデータバス740を利用して行っており、このようなアドレスバス730を介したアドレスを指定や、データバス740を介したデータのやりとりには、データ容量/バス幅分の処理サイクルが必要となっている。
【0010】
(3)演算装置510とCPU520との同期をとるため、CPU520は、上記(1)に示した演算処理の開始要求を演算装置510へ出力した後、自身の動作を停止する命令を実行して動作(処理)を停止する。そして、演算装置510は、例えば演算の終了時など、CPU520と同期をとる必要がある場合に、CPU520に対して所定の割り込みをかける。すなわち、演算装置510の制御部550は、割り込みコントローラ610に対してCPU520への割り込みを要求し、割り込みコントローラはこの要求を受けるとCPU520に対して割り込みをかける。CPU520は、割り込みコントローラ610から割り込みがかけられたことを検知した場合、処理を再開し、この割り込み要因(割り込みの種類)を割り込みコントローラ610から受け取って、割り込み要因に対応する割り込み処理を実行する。このようにして、演算装置510は、演算処理の終了など同期が必要な際に、その旨をCPU520へ通知して、CPU520の処理を再開させて、同期を取っている。
【0011】
【特許文献1】
特開2001−306317号公報
【0012】
【発明が解決しようとする課題】
このように従来のCPUと演算装置とのインターフェース(I/F)は、アドレスバス・データバスなどのバスや、割り込みコントローラ・RAMなどの周辺回路を介して行われており、データのやりとりや処理に時間がかるという課題がある。
【0013】
そこで、データの受け渡しや処理にかかる時間を短縮することができる演算装置を提供することを目的とする。
【0014】
【課題を解決するための手段及び発明の効果】
上述した問題点を解決するためになされた請求項1に記載の演算装置は、CPUと接続された演算装置であって、CPUはデータを入出力するためにバスを用いるものであって、演算装置とCPUとは、このバスとは別の、CPUの内部状態を入出力するための接続手段によって接続されている。
【0015】
そして、演算装置は、この接続手段を介してCPUの内部状態をモニタすることにより演算状態を決定したり、演算に必要な情報を取得したりする。そして、決定した演算状態と取得した演算に必要な情報とに基づいて演算を行い、この演算過程においてCPUの内部状態を変える必要が生じた場合には、この接続手段を介してCPUの内部状態を書き換える。
【0016】
したがって、演算装置は、バスを介して演算状態を決定したり、バスを介して演算に必要な情報をCPUから取得したり、バスを介して演算装置からCPUへ例えば演算結果等のデータを送ったりする必要がなくなる。そのため、データの受け渡しや処理にかかる時間を短縮することができる。またCPUは、演算装置の処理中にバスを使用してバスに接続された装置(例えばRAMやI/O装置)へのアクセスを行うことが可能となり、その結果、システム全体の処理速度を高めることが可能となる。
【0017】
このようにモニタしたり、書き換えたりするCPUの内部状態は、例えば、請求項2に示すようなCPUのレジスタの値とすることができる。例えばCPUのレジスタ値をCPUの内部状態としてモニタして、レジスタ値が所定の値になった場合に演算状態を所定の演算状態にすることができる。例えば汎用レジスタの値と実行対象の命令のデコード情報を格納したレジスタの値の双方をCPUの内部状態としてモニタして、汎用レジスタ値及びデコード情報が所定の状態となった場合に演算状態を所定の演算状態にすることができる。また、書き換えるCPUの内部状態として例えばレジスタファイルの値を用いれば演算結果をレジスタファイル内へ格納させることができ、書き換えるCPUの内部状態として例えば実行対象の命令のデコード情報を格納したレジスタを用いれば演算結果に応じた命令をCPUに実行させることができる。このように、モニタするCPUのレジスタとしては、例えば、CPUのレジスタファイル、ステータスレジスタ、デコード情報を格納したレジスタ、シーケンス遷移情報を格納するレジスタ、請求項5に例示するようなプログラムカウンタなどの、いずれか、あるいは、これらの組み合わせを用いることができる。
【0018】
なおCPUの内部状態は、レジスタの値そのものを接続手段を介して取得するようにしてもよいし、レジスタの値をデコードした結果を接続手段を介して取得するようにしてもよい。例えば、請求項3に示すように、演算装置がレジスタ値デコード手段を備えるようにしてモニタしてもよいし、請求項4に示すように、CPUでレジスタ値のデコードを行い、そのデコード結果をCPUの内部状態として演算装置でモニタするレジスタ値デコード結果モニタ手段を備えるようにして、モニタしてもよい。
【0019】
CPUの内部状態をモニタして決定する演算状態としては、例えば、請求項6に示すように、演算の開始を決定するものや、請求項7に示すように演算の内容を決定するものを含むとよい。
請求項6に示すように、演算状態として演算の開始を決定すれば、CPUはバスを使用することなく演算の開始を演算装置へ知らせることができる。したがって、CPUは、その間バスを使用して処理を行うことが可能となり、処理を高速化することができる。例えば、請求項5に示す構成を備える場合、CPUの処理を所定のアドレスへ移行させるだけで演算を開始させることができる。
【0020】
また、請求項7に示すように、演算状態として演算の内容を決定すれば、CPUはバスを使用することなく演算の内容を演算装置へ知らせることができる。したがって、CPUは、その間バスを使用して処理を行うことが可能となり、処理を高速化することができる。
【0021】
演算装置において用いるCPUの内部状態としては、例えば前述した請求項2〜5に示すものが挙げられる。例えば、請求項2に示した構成と請求項7に示した構成を備える場合には請求項8に示すように、CPUの内部状態としてCPUのレジスタの値をモニタし、演算の内容を、そのCPUのレジスタの値に基づいて決定することとなる。例えば、複数の種類の演算を実行可能な演算装置であって、いずれの演算を実行するかを、CPUのレジスタの値に基づいて決定することができる。また、例えば、プログラムカウンタやステータスレジスタの値によって実行する演算の内容を変えたり、レジスタファイルの値によって実行する演算の内容を変えたりすることができる。
【0022】
なお、こうしたCPUの内部状態は、CPUの内部で保持されている内部状態を直接演算装置が読み出してもよいし、例えば、演算装置内に記憶手段を設け、この記憶手段に対してCPUの内部で保持されている内部状態を転送し、この転送した内部状態を利用するようにしてもよい。また、CPUの内部状態を書き換える場合には、演算装置は直接CPUの内部で保持されている内部状態を書き換えるようにしてもよいし、演算装置の記憶手段に記憶されている内部状態を書き換えた上で記憶手段の内容をCPUの内部へ転送するようにして書き込んでもよい。例えば、CPUの内部状態としてCPUのレジスタの値を用いる場合には、請求項9に示すように、CPUの備えるレジスタを直接読み出すことにより演算に必要な情報を取得し、演算過程においてCPUのレジスタの値を変える必要が生じた場合にはCPUの備えるレジスタを演算装置が直接書き換えるようにしてもよいし、請求項10に示すように、演算装置にレジスタの値を記憶可能な記憶手段を備え、CPUの備えるレジスタの値を演算装置の記憶手段へ転送し、演算装置はこの記憶手段を読み出すことにより演算に必要な情報を取得して、演算過程においてCPUのレジスタの値を変える必要が生じた場合には、そのレジスタに対応する記憶手段を書き換えた後、その記憶手段の値をレジスタへ転送することによってCPUの備えるレジスタの値を書き換えるようにしてもよい。
【0023】
演算装置が記憶手段を備える場合には、例えば請求項11に示すように、記憶手段は、複数のバンクを備え、CPUの内部状態に基づき演算状態として、利用するバンクを決定するようにしてもよい。例えば、CPUのレジスタの内容をバンク切換により複数セット記憶可能とするとよい。
【0024】
そして、演算装置は、請求項12に示すように、CPUとの同期が必要な時点間の処理を予め定められた処理サイクルで行うとよい。このようにすれば、CPUが実行するプログラムの開発時に、次にCPUと演算装置との間で同期が必要な時点までの処理サイクルが分かる。したがって、従来のように、同期の必要な時点で演算装置から割り込みコントローラ等の周辺回路を介してCPUへ割り込みをかけて知らせなくても、例えばCPUで実行する処理の内容をこの処理サイクルに合わせて調整しておくことにより、演算装置との同期をとることができる。なお、この調整は、プログラマがこの予め定められた処理サイクルを加味してプログラムを作成するようにして行ってもよいし、例えば、コンパイラやアセンブラにこの処理サイクルを加味した命令コードを生成する機能を備えるようにして、調整されたプログラムを自動的に生成するようにしてもよい。
【0025】
こうしたCPUとの同期が必要な時点としては、例えば、請求項13に示すような演算の開始や終了、請求項14に示すようなCPUの内部状態の取り込みやCPUの内部状態の書き換えの時点などが挙げられる。
例えば演算装置での演算の終了後にその演算の結果を利用した処理をCPUで行う場合などには、演算装置で演算が終了したことをCPU側で知る必要がある。このように演算の終了をCPU側で知る必要がある場合、従来は前述のように、CPUに対して割り込みコントローラ等を介して演算の終了を通知するようにしていた。しかし、請求項13に示すように、演算の開始から終了までの処理を予め定められた処理サイクルで行うように演算装置を構成することにより、こうした通知を不要とすることができる。例えば、CPUと演算装置を並行して動作させ、演算開始からこの予め定められた処理サイクルが経過した時点で、演算結果を利用する処理を行うようにCPUのプログラムを作成することができる。
【0026】
また、請求項14に示す演算装置によれば、演算の開始からCPUの内部状態の取り込みまでの処理サイクルや、演算開始またはCPUの内部状態の取り込みからCPUの内部状態を書き換えまでの処理サイクルが予め定められている。したがって、この処理サイクルを加味してCPUで実行するプログラムを作成することができる。すなわち、演算の開始からCPUの内部状態の取り込みまでの処理サイクルの間に、演算装置が取り込むべき内部状態をCPUが生成するようにプログラムを構成したり、演算開始またはCPUの内部状態の取り込みからCPUの内部状態を書き換えまでの処理サイクルの間に、例えばCPUの内部状態の書き換えに対応するための内部状態の退避等を行うようなプログラムを構成することが容易にできる。
【0027】
このように請求項12〜14に示す演算装置によれば、例えばCPUと演算装置を並行して動作させることが容易にできる。また、演算装置の処理サイクルに適合したプログラムを容易に作成できる。つまりプログラムを最適化することができるため、システム全体の処理効率を高めて処理速度を向上させることが可能となる。なお、請求項12〜14に示した演算装置において、演算装置が複数の種類の演算を行う場合には、例えば、行う演算の種類毎に異なる処理サイクルが定められていてもよいし、すべての演算で処理サイクルを同一としてもよい。
【0028】
一方、こうした演算装置とCPUとの同期は、演算装置がCPUの実行する命令を制御することによって、とることもできる。例えば、請求項15に示すように、CPUの内部状態へ同期の為の命令を書き込むことにより前記CPUと同期をとるとよい。例えば、CPUの命令実行に関するレジスタの値を書き換えることによって、CPUと同期をとるようにしてもよい。CPUが実行する命令に関するレジスタとしては、例えば、CPUの命令をフェッチ、デコード、実行するいずれかのレジスタなどが挙げられる。例えば、こうしたレジスタに対して、同期のための命令を演算装置が書き込めば、CPUは同期のための命令を実行することとなる。例えば、同期のための命令として、同期後に実行すべき命令列の先頭アドレスへの分岐命令(例えばプログラムカウンタへの値の設定命令)などを書き込むことにより、同期後に実行すべき命令列を実行させることができる。こうすることで従来のような割り込みコントローラ等を介した同期のための通知をなくすことができ、演算処理の高速化を図ることができる。そして、例えば、請求項16に示すようにすれば、演算の終了の同期をとることができ、従来のような割り込みコントローラ等を介した演算の終了の通知の必要をなくすことが可能となり、演算処理の高速化を図ることができる。
【0029】
ところで、演算装置とCPUとは、例えば並列して動作するようにしてもよいし、演算装置の演算中にCPUを停止させてもよい。例えば請求項17のように演算装置にCPUの処理を停止させる手段を備えてもよい。例えば演算装置は、内部状態モニタ手段によってモニタされた内部状態に応じて、CPUの処理を停止させるか否かを決定するようにしてもよい。また、例えば、消費電力を低減させる必要のある場合に、CPUの処理を停止させるようにするとよい。また例えば演算結果に応じてCPUの接続されたバスを使用する他のバスマスタを制御する場合などにもCPUの処理を停止させるとよい。こうしたCPUの処理の停止は、例えば、請求項18に示すように、CPUへ供給されるクロックを停止させることで行うことができる。
【0030】
ところで、上述した演算装置は、例えば、算術演算等の演算を行うコプロセッサであってもよいし、例えば、タスクスケジューリングやコンテキストスイッチング等のオペレーティングシステムの演算を行うシリコンOSであってもよい。例えば請求項19に示すように、演算装置はオペレーティングシステムを実装したものとすることができる。
【0031】
【発明の実施の形態】
以下、本発明が適用された実施例について図面を用いて説明する。なお、本発明の実施の形態は、下記の実施例に何ら限定されることなく、本発明の技術的範囲に属する限り種々の形態を採りうることは言うまでもない。
[実施例]
図1は、実施例の演算装置10を含むコンピュータシステムの概略構成を示すブロック図である。図1に示すコンピュータシステムは、CPU20,ROM90,演算装置10,図示しないRAM・入出力装置,CPU20とROM90とを接続するアドレスバス110及びデータバス120,CPU20と図示しないRAM・入出力装置等を接続するアドレスバス130及びデータバス140,CPU20と演算装置10とを接続する接続部5a,5b(以下接続部5a,5bを総称して接続部5と記載する)を備える。
【0032】
CPU20は、制御部70とCPU内部状態部80を有する。CPU内部状態部80は、例えば、汎用レジスタ、プログラムカウンタ(PC)、ステータスレジスタ等のレジスタや、命令のデコード結果など、CPUの内部状態を示す部分であり、制御部70は、プログラムの実行を行う部分である。すなわち制御部70は、アドレスバス110を介してプログラムカウンタの指すアドレスの命令を、データバス120を介してROM90から取得して、実行し、アドレスバス130・データバス140等を制御したり、CPU内部状態部80の内部状態を変化させたりする。
【0033】
演算装置10は、CPU20のCPU内部状態部80に接続されたCPU内部状態モニタ部30とCPU内部状態制御部40とを備える。CPU内部状態部80とCPU内部状態モニタ部30とは、接続部5aによって接続されており、CPU内部状態部80とCPU内部状態制御部40とは接続部5bによって接続されている。これらの接続部5は、図1に示すように、アドレスバス110・データバス120・アドレスバス130・データバス140(以下、これらを総称してバスと記載する)とは別に設けた信号線である。
【0034】
CPU内部状態モニタ部30は、CPU内部状態部80に存在するCPUの内部状態をモニタし、演算装置10の処理タイミングや演算内容を決定して、制御部50にこれらを出力する。また、CPU内部状態制御部40は、CPU20の状態を示すCPU内部状態部80から、演算に必要なデータを取得し、制御部50へ出力する。
【0035】
制御部50は、CPU内部状態モニタ部30から受け取った処理タイミングと処理内容に従って、CPU内部状態制御部40から演算に必要なデータを取得し、演算部60を制御して、演算を実行させる。制御部50は、演算部60による演算結果を、CPU内部状態制御部40へ渡し、CPU内部状態制御部40は、CPU20のCPU内部状態部80における内部状態をこの演算結果に応じて変更する。
【0036】
従来の演算装置では、図8に示したように、CPU520の内部状態部580の内部状態を演算装置510に渡す為にはデータバスを介して情報を送る必要があったが、本実施例の演算装置は、接続部5を介して直接モニタするため、演算装置10がCPU20の状態を瞬時に判断することが可能となり、CPU20の内部状態を考慮した協調動作(同期を取る事)が可能となる。また、バスを介さずに演算結果をCPU20へ渡すことができる。つまり、本実施例の演算装置10によれば、[従来の技術]の欄の(1)(2)の部分に記載した一連の処理が不要となり、演算処理を高速化できる。またCPU20は、演算装置10がバスを仕様しないため、演算装置10の演算処理中にバスを使用してバスに接続された装置(例えばRAMやI/O装置)へのアクセスを行うことが可能となり、その結果、システム全体の処理速度を高めることが可能となる。
【0037】
演算装置10がモニタするCPUの内部状態としては、例えばプログラムカウンタの値やレジスタファイルの値とすることができる。
図2に示すコンピュータシステムは、CPU20のCPU内部状態部80の一部として、プログラムカウンタ85(PC)を備え、演算装置10のCPU内部状態モニタ部30としてプログラムカウンタデコード部32を備える。プログラムカウンタデコード部32は、プログラムカウンタ85と接続されており、プログラムカウンタ85の値が予め定められた演算処理開始アドレス値となった場合にこれを検知して、制御部50に対して処理開始信号を出力するデコーダーである。制御部50は、この処理開始信号をプログラムカウンタデコード部32から受け取ると演算処理を開始する。こうすることで、CPUは、演算処理の開始の処理タイミングをプログラムカウンタの値で与えることができる。例えば、演算処理開始アドレスを、演算処理のサブルーチンの開始アドレスとすれば、CPU20の処理がこのサブルーチンへ移行した時点で演算装置10の演算処理が開始される。特にこのサブルーチンはオペレーティングシステム内に設けるとよく、演算処理のシステムコールのアドレスとするとするとよい。このようにして、バスを介することなく演算装置10に対して演算処理の開始の処理タイミングを与えることができる。したがって、処理を高速化できる。
【0038】
また、図3に示すコンピュータシステムは、CPU20のCPU内部状態部80の一部として、レジスタファイル87を備え、演算装置10のCPU内部状態制御部40としてレジスタリード/ライト部42を備える。レジスタリード/ライト部42は、レジスタファイル87と接続されており、レジスタファイル87の所定のレジスタのデータを制御部50へ渡す。制御部50は、レジスタリード/ライト部42から受け取ったデータを演算部60による演算に利用する制御を行う。また、レジスタリード/ライト部42は、演算部60による演算結果を制御部50を介して受け取り、レジスタファイル87の所定のレジスタへその演算結果を書き込む。こうすることで、演算に必要なCPU内のデータをバスを介さずに直接演算装置10が参照したり、書き換えたりすることができる。したがって、処理を高速化できる。
【0039】
例えば、図2と図3に示した構成の双方を備える場合、演算の開始をプログラムカウンタの値で与え、演算に必要なデータを所定のレジスタの値で与えて、演算結果をCPUの所定のレジスタに格納させることができる。このような具体例を図4を参照して説明する。
【0040】
図4は、ROM90に記憶されたオペレーティングシステムにおける演算処理のシステムコールの開始アドレスからの命令列と、各命令を実行する際のレジスタファイル87の各レジスタ(Reg0〜Reg15で示す)の値と、演算装置10の演算の開始から終了までの起動区間と演算装置10とレジスタファイル87とのデータのやりとりのタイミングとを示す図である。
【0041】
プログラムカウンタデコード部32は、プログラムカウンタ85の値が、オペレーティングシステムの演算処理のシステムコールの開始アドレスになったことを検知すると、制御部50及び演算部60による演算処理を開始する。この演算処理の開始後の処理タイミングは、予め定められており、図4に示す演算処理では、演算の開始から終了までの演算装置10の起動区間の処理サイクルが、「演算装置の起動区間」で示すように8サイクルである。また、演算処理の開始サイクルの次のサイクル(2サイクル目)で、Reg2の値をレジスタリード/ライト部42が参照し、演算部60での演算結果をその3サイクル後にReg1へ書き込むように構成されている。したがって、この演算処理のプログラムの作成者あるいは演算処理のプログラムを生成するコンパイラやアセンブラは、2サイクル目には演算に必要なデータがReg2に格納されているように処理を行い、また5サイクル目のReg1への書き込みに対応するための処理を必要に応じて行い(例えばReg1の退避など)、6サイクル目以降でReg1に格納された値を利用した処理を行い、9サイクル目以降で演算装置10が起動している間には実行できない処理を行う必要があることを、予め知ることができる。したがって、演算装置10のこうした処理サイクルを加味して演算処理のプログラムを作成したり生成したりすることができる。図4の例では、演算処理の1サイクル目でアドレス#2のデータをReg2へ格納する命令(mov.l #2,r2)を設けることで2サイクル目の演算装置10のReg2の参照に備え、演算に必要なデータをReg2に格納させている。また6サイクル目以降では、演算装置10での演算結果が格納されたReg1の値を0と比較するなど、演算結果を利用した処理を行っている。なお、図4の例では、2サイクル目から5サイクル目は何も処理を行わないnop命令としているが、この部分で演算装置10の演算と並列(パラレル)に演算や制御等の処理命令を実行することも可能である。
【0042】
このように演算装置10における演算の開始や終了、CPU20の内部状態の取り込みやCPU20の内部状態の書き換えの処理サイクルが予め定められているため、[従来の技術]の欄の(3)の部分に記載した一連の処理は不要となり、バスや割り込みコントローラをして処理タイミングの通知を行うことなく、処理の同期をとることができる。
【0043】
なお、接続部5が特許請求の範囲における接続手段に相当する。また、制御部50の一部及びCPU内部状態モニタ部30がCPU内部状態モニタ手段に相当し、演算部60が演算手段に相当し、制御部50の一部及びCPU内部状態制御部40がCPU内部状態制御手段に相当する。
[その他]
(1)上記実施例では、演算装置10は、CPU20のレジスタファイル87やプログラムカウンタ85の値を内部状態としてモニタしたり利用したりすることとしたが、例えばステータスレジスタの値を内部状態として利用したり、これらの組み合わせを内部状態として利用するようにしてもよい。例えば、プログラムカウンタが所定のアドレスAでありかつステータスレジスタのゼロフラグが立っている場合に、演算装置10は演算処理を行うようにしてもよい。
【0044】
また例えば、プログラムカウンタデコード部32は、複数のアドレスをデコードし、そのアドレスによって、制御部50及び演算部60の行う演算の内容を変更するようにしてもよい。例えば、プログラムカウンタ85の値がアドレスAである場合には演算aを実行し、プログラムカウンタ85の値がアドレスBである場合には演算bを実行し、プログラムカウンタ85の値がアドレスCである場合には演算cを実行する。このようにすれば、例えば、オペレーティングシステムとして複数の演算システムコールを備えて、必要なシステムコールを行うだけで、演算装置10に異なる演算を行わせることことができる。また例えば、演算の内容は、レジスタファイルやステータスレジスタの値に応じて変更するようにしてもよい。このようにすればCPU20は、バスを介することなく、演算の内容を演算装置10へ知らせることができる。したがって、CPU20は、その間バスを使用して処理を行うことが可能となり、処理を高速化することができる。
(2)上記実施例では、図2に示したように、プログラムカウンタデコード部32を演算装置10に備えることとし、CPU20は、プログラムカウンタ85の値をプログラムカウンタデコード部32へ出力することとしたが、プログラムカウンタデコード部を、図5に示すようにCPU20内に設け、デコード結果を内部状態として演算装置10へ出力するようにしてもよい。
(3)上記実施例では、演算装置10の演算部60は、CPU内部状態制御部40及び制御部50を介してCPU内部状態部80から演算に必要なデータを受け取り、演算結果を制御部50がCPU内部状態制御部40へ渡して、CPU内部状態制御部40がCPU20のCPU内部状態部80へこの演算結果を書き込むといった具合に、CPU20の内部状態を直接演算に利用する構成について説明したが、CPU20の内部状態は、一旦演算装置10内に記憶してから利用するようにしてもよい。
【0045】
例えば、図6に示す演算装置10は、制御部50に接続された記憶部65を備え、CPU内部状態制御部40に、データ転送制御部44を備える。データ転送制御部44は、CPU20のレジスタファイル87から演算に必要なデータを制御部50を介して記憶部65に転送して記憶させる。そして、制御部50は、記憶部65に記憶されたデータを演算部60へ渡し、演算を行わせる。演算部60による演算結果は、制御部50によって記憶部65へ格納される。そして、所定のタイミングで、制御部50は、記憶部65に格納された演算結果をデータ転送制御部44へ渡し、データ転送制御部44は、この演算結果をレジスタファイル87へ書き込む。
【0046】
このようにすれば、演算装置10は、予め演算に必要なデータをレジスタファイル87から取り込んでおいて演算に利用したり、演算結果を任意のサイクルでレジスタファイルに書き込むことが容易にできる。例えば、すべての演算内容で同期のタイミングを統一することも容易にできるようになる。
【0047】
なお、こうした記憶部65は、複数のバンクから構成し、CPU内部状態モニタ部30のモニタしたCPU20の内部状態に基づき、制御部50が利用するバンクを切り換えるようにしてもよい。このようにすれば、CPU20におけるレジスタ退避の回数を減らすことができる。また、演算装置10において演算結果を再利用して演算を行うなど、多彩な演算を容易に実現できる。
(4)上記実施例では、演算装置10とCPU20とは、並列して動作可能としたが、図7に示すようにCPU停止回路95を設けて、CPU20の動作を演算装置10から停止可能にしてもよい。すなわちCPUの停止が必要な場合に、CPU停止手段としての制御部50が、CPU停止回路95に対してCPU停止信号を出力する。CPU停止回路95は、CPU停止信号を演算装置10の制御部50から受けると、CPU20の制御部70へ供給されるクロックを停止する。例えば、CPU内部状態モニタ部30のモニタ結果から制御部50がCPU20が動作する必要がないと判定した場合には、CPU停止信号を出力してCPU20の動作を停止させる。このようにすれば、コンピュータシステムの消費電力を低減させることができる。
(5)上記実施例では、演算装置10における演算の開始や終了、CPU20の内部状態の取り込みやCPU20の内部状態の書き換えの処理サイクルが予め定めることにより、バスや割り込みコントローラをして処理タイミングの通知を行うことなく、処理の同期をとることができる構成としたが、例えば、CPU内部状態部80に備えたCPUの実行する命令の格納されたレジスタに対して、同期の必要な際に、演算装置10のCPU内部状態制御部40が同期のための命令を書き込んで同期をとるようにしてもよい。例えば、同期のための命令として、同期後に実行すべき命令列の先頭アドレスへの分岐命令(例えばプログラムカウンタへの値の設定命令)などを書き込むことにより、同期後に実行すべき命令列を実行させることができる。例えば、同期が必要な場合としては、演算の終了時の同期をとるとよい。こうすることで従来のような割り込みコントローラ等を介した演算の終了の通知の必要をなくすことができ、演算処理の高速化を図ることができる。
(6)演算装置10は、算術演算等の演算を行うコプロセッサであってもよいし、例えば、タスクスケジューリングやコンテキストスイッチング等のオペレーティングシステムの演算を行うシリコンOSであってもよい。演算装置10を、ハードウェア化したOSとして実装した場合、CPU内部状態モニタ部30は、CPU20のプログラムカウンタ85をモニタし、その値がOSのシステムコールに相当すると判断した時は、OSが起動され、制御部50によりシステムコール処理が実行される。OSが起動中は、OS側では、CPU内部状態モニタ部30により、CPU20内のレジスタファイル87を参照し、必要があれば、CPU内部状態制御部40により、レジスタファイル87のデータを書き換えることで、例えば、OSの機能の1つであるコンテキストスイッチング処理を実現したり、OSの処理結果をCPU20へ渡すことができる。
【0048】
また、CPU20側では、システムコール処理に同期させてプログラムを実行することで、OSによりCPU20のレジスタファイルのデータが書き換えられても問題なく動作させるようにすることができる。また、OSの処理終了をOSがCPU20へ告知する必要がない。
【0049】
このように、CPU20と演算装置10によるOSが並行して処理を行うことができ、CPU20とOS間のI/F処理が高速に実現可能であるため、OSのシステムコール処理の高速化が可能である。
【図面の簡単な説明】
【図1】実施例の演算装置を含むコンピュータシステムの構成を示すブロック図である。
【図2】CPU内部状態部とCPU内部状態モニタ部の構成の例を示すブロック図である。
【図3】CPU内部状態部とCPU内部状態制御部の構成の例を示すブロック図である。
【図4】演算装置の処理サイクルの例を示す説明図である。
【図5】図3の構成の別例のブロック図である。
【図6】実施例の演算装置に記憶部を設ける場合の構成を示すブロック図である。
【図7】演算装置がCPUを停止させる場合の構成を示すブロック図である。
【図8】従来の演算装置を含むコンピュータシステムの構成を示すブロック図である。
【符号の説明】
5,5a,5b…接続部
10…演算装置
30…CPU内部状態モニタ部 40…CPU内部状態制御部
50…制御部 60…演算部
32…PC(プログラムカウンタ)デコード部
42…レジスタリード/ライト部 44…データ転送制御部
65…記憶部
20…CPU
70…制御部 80…CPU内部状態部
85…PC(プログラムカウンタ) 87…レジスタファイル
95…CPU停止回路
110,130…アドレスバス
120,140…データバス
510…演算装置 550…演算部 560…演算部
520…CPU 550…制御部 570…制御部 580…内部状態部
610…割り込みコントローラ
710,730…アドレスバス
720,740…データバス
Claims (19)
- CPUと接続された演算装置において、
前記CPUは、データを入出力するためにバスを用いるものであって、
前記演算装置とCPUとは、前記バスとは別の、前記CPUの内部状態を入出力するための接続手段によって接続されており、
前記演算装置は、
前記接続手段を介して前記CPUの内部状態をモニタすることにより演算状態を決定したり演算に必要な情報を取得したりするCPU内部状態モニタ手段と、
前記内部状態モニタ手段によって決定された演算状態と、前記内部状態モニタ手段によって取得された演算に必要な情報とに基づいて演算を行う演算手段と、
前記演算手段による演算過程において前記CPUの内部状態を変える必要が生じた場合には前記接続手段を介して前記CPUの内部状態を書き換えるCPU内部状態制御手段とを備えること
を特徴とする演算装置。 - 請求項1に記載の演算装置において、
前記CPUの内部状態は、前記CPUのレジスタの値であること
を特徴とする演算装置。 - 請求項2に記載の演算装置において、
前記CPU内部状態モニタ手段は、前記CPUのレジスタの値が所定の値になったことを検出するレジスタ値デコード手段を備えること
を特徴とする演算装置。 - 請求項2に記載の演算装置において、
前記CPU内部状態モニタ手段は、前記CPUのレジスタの値のデコード結果を前記CPUの内部状態としてモニタするレジスタ値デコード結果モニタ手段を備えること
を特徴とする演算装置。 - 請求項2〜4のいずれかに記載の演算装置において、
前記レジスタは、プログラムカウンタであること
を特徴とする演算装置。 - 請求項1〜5のいずれかに記載の演算装置において、
前記CPU内部状態モニタ手段は、前記CPUの内部状態に基づき前記演算状態として演算の開始を決定すること
を特徴とする演算装置。 - 請求項1〜6のいずれかに記載の演算装置において、
前記CPU内部状態モニタ手段は、前記CPUの内部状態に基づき前記演算状態として演算の内容を決定すること
を特徴とする演算装置。 - 請求項7に記載の演算装置において、
前記CPU内部状態モニタ手段は、前記CPUの内部状態として前記CPUのレジスタの値をモニタし、前記演算の内容を、当該CPUのレジスタの値に基づいて決定すること
を特徴とする演算装置。 - 請求項2に記載の演算装置において、
前記CPU内部状態モニタ手段は、前記CPUのレジスタを直接読み出すことにより演算に必要な情報を取得し、
前記CPU内部状態制御手段は、前記演算手段による演算過程において前記CPUのレジスタの値を変える必要が生じた場合にはCPUの備えるレジスタを直接書き換えること
を特徴とする演算装置。 - 請求項2または3に記載の演算装置において、
前記CPUの内部状態としてCPUのレジスタの値を用い、
前記レジスタの値を記憶可能な記憶手段を備え、
前記CPU内部状態モニタ手段は、前記CPUの備えるレジスタの値を前記記憶手段へ転送し、当該記憶手段を読み出すことにより演算に必要な情報を取得し、
前記CPU内部状態制御手段は、前記演算手段による演算過程において前記CPUのレジスタの値を変える必要が生じた場合には、当該レジスタに対応する前記記憶手段を書き換えた後、当該記憶手段の値を前記レジスタへ転送することによって前記CPUの備えるレジスタの値を書き換えること
を特徴とする演算装置。 - 請求項10に記載の演算装置において、
前記記憶手段は、複数のバンクを備え、
前記内部状態モニタ手段は、前記CPUの内部状態に基づき前記演算状態として、利用する前記バンクを決定すること
を特徴とする演算装置。 - 請求項1〜11のいずれかに記載の演算装置において、
前記CPUとの同期が必要な時点間の処理は、予め定められた処理サイクルで行うこと
を特徴とする演算装置。 - 請求項6に記載の演算装置において、
演算の開始から終了までの処理を予め定められた処理サイクルで行うこと
を特徴とする演算装置。 - 請求項6に記載の演算装置において、
演算の開始から、前記内部状態モニタ手段が、前記CPUの内部状態を取り込むまでの処理サイクルと、前記演算の開始または前記CPUの内部状態の取り込みから、前記内部状態書き換え手段が前記CPUの内部状態を書き換えるまでの処理サイクルが予め定められていること
を特徴とする演算装置。 - 請求項1〜14のいずれかに記載の演算装置において、
前記CPU内部状態制御手段は、前記CPUの内部状態へ同期の為の命令を書き込むことにより前記CPUと同期をとること
を特徴とする演算装置。 - 請求項15に記載の演算装置において、
前記同期が必要な場合は、演算の終了であって、前記同期の為の命令として演算の終了に相当する命令を書き込むこと
を特徴とする演算装置。 - 請求項1〜16のいずれかに記載の演算装置において、
前記CPUとの同期をとるために前記CPUの処理を停止させるCPU停止手段を備えること
を特徴とする演算装置。 - 請求項17に記載の演算装置において、
前記CPU停止手段は、CPUへ供給されるクロックを停止させることでCPUの処理を停止させること
を特徴とする演算装置。 - 請求項1〜18のいずれかに記載の演算装置はオペレーティングシステムを実装したこと
を特徴とする演算装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002262899A JP3719241B2 (ja) | 2002-09-09 | 2002-09-09 | 演算装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002262899A JP3719241B2 (ja) | 2002-09-09 | 2002-09-09 | 演算装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004102595A JP2004102595A (ja) | 2004-04-02 |
JP3719241B2 true JP3719241B2 (ja) | 2005-11-24 |
Family
ID=32262816
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002262899A Expired - Fee Related JP3719241B2 (ja) | 2002-09-09 | 2002-09-09 | 演算装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3719241B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5993687B2 (ja) * | 2012-09-27 | 2016-09-14 | 学校法人関西学院 | ワンチッププロセッサ |
-
2002
- 2002-09-09 JP JP2002262899A patent/JP3719241B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004102595A (ja) | 2004-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2513417B2 (ja) | 情報処理装置 | |
JPS63261449A (ja) | デ−タ処理装置 | |
JP2003005957A (ja) | データ処理装置およびその制御方法 | |
JP3719241B2 (ja) | 演算装置 | |
JPH1078887A (ja) | デバッグシステム及びデバッグ方法 | |
JP2004348327A (ja) | デジタル信号処理装置及びデジタル信号処理方法 | |
JP2010086497A (ja) | 画像処理装置及びデータプロセッサ | |
JPH05334459A (ja) | マイクロコンピュータ | |
JP2552738B2 (ja) | データ処理装置 | |
JP2002535749A (ja) | 複数の命令ソースからの命令を実行するプロセッサおよび方法 | |
JP2001014161A (ja) | プログラマブルコントローラ | |
JP4641708B2 (ja) | データ処理装置およびプロセッサユニット | |
JP2808757B2 (ja) | デバッグ用マイクロプロセッサ | |
JP3630904B2 (ja) | 演算実行方法および演算実行装置 | |
JPH06324861A (ja) | Cpu制御システム及び制御方法 | |
JP2504224B2 (ja) | デ―タ処理装置 | |
JP2004199630A (ja) | データ処理装置 | |
JP2674873B2 (ja) | プログラム開発支援装置のステップ実行動作方法 | |
JPS60229141A (ja) | レジスタのデ−タ保存方式 | |
JPS6221130B2 (ja) | ||
JP3206394B2 (ja) | 5段パイプライン構造のプログラマブルコントローラ | |
JP3729250B2 (ja) | 情報処理装置及び電子機器 | |
JP2003029966A (ja) | データ処理装置 | |
JP2522564B2 (ja) | プログラマブルコントロ―ラ | |
JP2004362368A (ja) | プロセッサおよび例外処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040915 |
|
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: 20050816 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050829 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080916 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110916 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110916 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120916 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120916 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130916 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |