JPWO2004023291A1 - 情報処理装置 - Google Patents
情報処理装置 Download PDFInfo
- Publication number
- JPWO2004023291A1 JPWO2004023291A1 JP2004534043A JP2004534043A JPWO2004023291A1 JP WO2004023291 A1 JPWO2004023291 A1 JP WO2004023291A1 JP 2004534043 A JP2004534043 A JP 2004534043A JP 2004534043 A JP2004534043 A JP 2004534043A JP WO2004023291 A1 JPWO2004023291 A1 JP WO2004023291A1
- Authority
- JP
- Japan
- Prior art keywords
- processing
- pipeline
- instruction
- memory
- dma 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
- 230000010365 information processing Effects 0.000 title claims abstract description 28
- 238000012546 transfer Methods 0.000 claims abstract description 140
- 238000012545 processing Methods 0.000 claims abstract description 122
- MHABMANUFPZXEB-UHFFFAOYSA-N O-demethyl-aloesaponarin I Natural products O=C1C2=CC=CC(O)=C2C(=O)C2=C1C=C(O)C(C(O)=O)=C2C MHABMANUFPZXEB-UHFFFAOYSA-N 0.000 claims description 31
- 238000000034 method Methods 0.000 abstract description 24
- 230000008569 process Effects 0.000 abstract description 19
- 230000004913 activation Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 20
- 230000002093 peripheral effect Effects 0.000 description 15
- 230000004044 response Effects 0.000 description 12
- 239000011159 matrix material Substances 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 6
- 241001522296 Erithacus rubecula Species 0.000 description 5
- 238000012856 packing Methods 0.000 description 4
- 230000014759 maintenance of location Effects 0.000 description 3
- 230000003213 activating effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
Abstract
CPU処理性能をほとんど低下させずに、DMAコントローラのモジュール相当分のゲート論理を不要にして、チップ面積を小さくすることができ、またデータ演算処理時のCPUに対する割り込み処理の起動といった余計な切り替えオーバヘッドなどを回避し、高機能なデータ転送処理の処理性能を大幅に向上することができる情報処理装置である。コンフィグラブルスーパースカラマイクロプロセッサにおいて、DMA転送要求がない場合は、パイプライン0とパイプライン1を合わせて通常のCPU命令の処理を実行する。このとき、同時に処理を実行できない場合はパイプライン1側は処理を休止する。DMA転送要求がある場合は、パイプライン1側をDMA処理実行モードに設定し、必要に応じてデータ演算なども含めて、設定された転送語数のDMA転送処理を実行し、DMA転送終了後、通常のCPU命令実行モードに戻す。
Description
本発明は、情報処理装置に関し、特に複数系統の命令実行パイプラインを有するスーパースカラパイプライン構成のマイクロプロセッサに適用して有効な技術に関する。
本発明者が検討したところによれば、情報処理装置については、以下のような技術が考えられる。図14および図15により、本発明者が本発明の前提として検討した情報処理装置の一例を説明する。
図14は、本発明者が本発明の前提として検討したマイクロプロセッサの構成の一例を示す。
マイクロプロセッサは、命令フェッチ要求・命令デコード・演算処理・汎用レジスタなどによるデータ保持などを行うCPU10、DMA転送処理を行うDMAコントローラ13、命令コードやデータを格納するためのRAMなどで構成される内蔵メモリ12、CPU10やDMAコントローラ13のデータ転送を行う内部バス11、内部バス11からの外部メモリアクセス要求に応じて外部メモリ制御を行う外部バスコントローラ14、外部バスコントローラ14に制御され外部メモリに信号を伝達する外部端子141、内部バス11からの周辺モジュールアクセス要求に応じて周辺モジュールバス17の制御を行う周辺バスコントローラ16、マイクロプロセッサ内部に供給する動作クロックを生成するクロック生成回路15、および各種周辺モジュールから構成される。内部バス11には、内蔵メモリ12や外部バスコントローラ14や周辺バスコントローラ16が接続される。
各種周辺モジュールは、一般的に、タイマ180、シリアル通信などを行うシリアルインタフェース181、ポートなどとして使われるポートインタフェース182などから成る。
CPU10は、命令フェッチ要求・命令デコードなどを行う命令フェッチユニット100、演算処理を行う演算器101、データ保持を行うレジスタファイル102から成る。このCPU10は、命令ポインタで指定されたアドレスから、順次命令をフェッチ・デコードし、デコード結果に従って、演算処理や、データのレジスタへの格納、レジスタからメモリなどへのデータの退避などを行う。
DMAコントローラ13は、転送元アドレス(以下、ソースアドレスともいう)や転送先アドレス(以下、デスティネーションアドレスともいう)やアドレスラップアラウンド用のアドレスを保持するアドレスポインタ130、転送語数を保持するカウンタ131、DMA転送時にデータを一時的に保持するデータレジスタ132を内蔵する。このDMAコントローラ13は、プロセッサ外部や周辺モジュールからのDMA転送要求に応じて、アドレスポインタ130で示される転送元アドレスから転送先アドレスへのデータ転送を行う。
図15は、本発明者が本発明の前提として検討したスーパースカラマイクロプロセッサの構成の一例を示す。
スーパースカラマイクロプロセッサは、命令フェッチ要求・命令デコード・演算処理・汎用レジスタなどによるデータ保持を行うCPU10a、命令コードをキャッシングする命令キャッシュ19a、データをキャッシングするデータキャッシュ19b、命令コードやデータを格納するためのRAMなどで構成される内蔵メモリ12a、DMA転送処理を行うDMAコントローラ13、CPU10aからの命令コードフェッチ要求に対して命令コードを転送する命令転送バス11a、CPU10aからのデータ転送要求に対してデータを転送するデータ転送バス11bおよび11c、DMAコントローラ13や命令キャッシュ19a、データキャッシュ19bからのデータ転送要求に対してデータ転送を行う内部バス11d、内部バス11dからの外部メモリアクセス要求に応じて外部メモリ制御を行う外部バスコントローラ14、内部バス11dからの周辺モジュールアクセス要求に応じて周辺モジュールバスの制御を行う周辺バスコントローラ16などから構成される。なお、周辺モジュールバスや、周辺モジュール、外部端子などは省略してある。
命令転送バス11aには、命令キャッシュ19aや内蔵メモリ12aが接続される。データ転送バス11bおよび11cには、データキャッシュ19bや内蔵メモリ12aが接続される。内部バス11dには、内蔵メモリ12aや外部バスコントローラ14や周辺バスコントローラ16が接続される。
CPU10aは、命令フェッチ要求・命令デコードなどを行う命令フェッチユニット100a、演算処理を行う演算器101a、データ保持を行うレジスタファイル102aから成る。このCPU10aは、命令ポインタで指定されたアドレスから、順次命令をフェッチ・デコードし、デコードした結果、同時に複数命令が実行できる場合は、該当する複数命令の演算処理や、データのレジスタへの格納、レジスタからメモリなどへのデータの退避などを行う。
命令キャッシュ19aは、外部メモリに格納された、使用頻度の高いアドレスの命令コードのコピーを保持する。また、データキャッシュ19bは、外部メモリに格納された、使用頻度の高いアドレスのデータのコピーを保持し、データの書き換えなどが行われた場合、必要に応じて外部メモリに書き戻す。
内蔵メモリ12aは、RAMなどで構成され、命令コードおよびデータを保持し、必要に応じて内蔵する命令コードおよびデータを読み出す。
なお、このようなマイクロプロセッサに関する技術としては、たとえば特開平4−68459号公報に記載される技術などが挙げられる。この公報には、DMA転送処理と演算処理命令を並列に行うことができるようにしたデジタル信号処理プロセッサが開示されている。しかしながら、本発明のような複数系統の命令実行パイプラインを有するスーパースカラパイプライン構成のマイクロプロセッサに適用する技術ではない。
ところで、前記のようなスーパースカラマイクロプロセッサについて、本発明者が検討した結果、以下のようなことが明らかとなった。
たとえば、前記図15のような命令実行パイプラインを2系統以上有するスーパースカラパイプライン構成のマイクロプロセッサにおいては、命令の並列度は概ね1.3程度とそれほど高くないため、全ての命令実行パイプラインが常時埋まることはなく、リソースの無駄が生じている。具体的には、2本のパイプラインで同時に命令実行ができない場合、1本のパイプラインは休止しているため、リソースの利用効率が低い。一方、ビジネス的には、効率の悪いリソースの使い方は、価格性能比を悪化させるため、プロセッサ上には極力無駄なリソースがなく、常時、適切に動作していることが望ましい。
また、マイクロコントローラと呼ばれる製品群においては、コントローラ上にCPUに加えて、DMAコントローラを内蔵し、データ転送能力を強化する例が多い。このDMAコントローラの処理内容は、一般的なCPUの処理内容のサブセット的なことが一般的である。この場合、DMAコントローラは、専用の別モジュールとして構成されているため、面積効率が低い。さらには、データ転送において、単純なDMA転送だけではなく、転送の際に一種のデータ演算処理を行えると、より効率的なマイクロコントローラが構成できる。
これらにより、本発明者は、スーパースカラパイプラインプロセッサにおいて、使用頻度の低いパイプラインを、データ演算処理も行えるDMA転送用のDMAコントローラとしても使えれば、専用のDMAコントローラが不要になることで低価格になり、CPU処理の性能低下も回避できると考えた。
また、DMAコントローラを構成する際、アドレスポインタや転送語数などの情報をチャネル分だけ保持する必要があるが、これを全てレジスタとして保持するとチップ上の占有面積が多くなるため、占有面積に対するデータ保持量の効率がよいRAMモジュールなどに情報を保持し、必要なものだけを効率のよいキャッシングアルゴリズムを使って取得することにより、より占有面積を抑えたチップが作成できると考えた。
そこで、本発明の第1の目的は、CPU処理性能をほとんど低下させずに、DMAコントローラのモジュール相当分のゲート論理を不要にして、チップ面積を小さくすることができる情報処理装置を提供することにある。
また、本発明の第2の目的は、データ演算処理時のCPUに対する割り込み処理の起動といった余計な切り替えオーバーヘッドなどを回避し、高機能なデータ転送処理の処理性能を大幅に向上することができる情報処理装置を提供することにある。
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
図14は、本発明者が本発明の前提として検討したマイクロプロセッサの構成の一例を示す。
マイクロプロセッサは、命令フェッチ要求・命令デコード・演算処理・汎用レジスタなどによるデータ保持などを行うCPU10、DMA転送処理を行うDMAコントローラ13、命令コードやデータを格納するためのRAMなどで構成される内蔵メモリ12、CPU10やDMAコントローラ13のデータ転送を行う内部バス11、内部バス11からの外部メモリアクセス要求に応じて外部メモリ制御を行う外部バスコントローラ14、外部バスコントローラ14に制御され外部メモリに信号を伝達する外部端子141、内部バス11からの周辺モジュールアクセス要求に応じて周辺モジュールバス17の制御を行う周辺バスコントローラ16、マイクロプロセッサ内部に供給する動作クロックを生成するクロック生成回路15、および各種周辺モジュールから構成される。内部バス11には、内蔵メモリ12や外部バスコントローラ14や周辺バスコントローラ16が接続される。
各種周辺モジュールは、一般的に、タイマ180、シリアル通信などを行うシリアルインタフェース181、ポートなどとして使われるポートインタフェース182などから成る。
CPU10は、命令フェッチ要求・命令デコードなどを行う命令フェッチユニット100、演算処理を行う演算器101、データ保持を行うレジスタファイル102から成る。このCPU10は、命令ポインタで指定されたアドレスから、順次命令をフェッチ・デコードし、デコード結果に従って、演算処理や、データのレジスタへの格納、レジスタからメモリなどへのデータの退避などを行う。
DMAコントローラ13は、転送元アドレス(以下、ソースアドレスともいう)や転送先アドレス(以下、デスティネーションアドレスともいう)やアドレスラップアラウンド用のアドレスを保持するアドレスポインタ130、転送語数を保持するカウンタ131、DMA転送時にデータを一時的に保持するデータレジスタ132を内蔵する。このDMAコントローラ13は、プロセッサ外部や周辺モジュールからのDMA転送要求に応じて、アドレスポインタ130で示される転送元アドレスから転送先アドレスへのデータ転送を行う。
図15は、本発明者が本発明の前提として検討したスーパースカラマイクロプロセッサの構成の一例を示す。
スーパースカラマイクロプロセッサは、命令フェッチ要求・命令デコード・演算処理・汎用レジスタなどによるデータ保持を行うCPU10a、命令コードをキャッシングする命令キャッシュ19a、データをキャッシングするデータキャッシュ19b、命令コードやデータを格納するためのRAMなどで構成される内蔵メモリ12a、DMA転送処理を行うDMAコントローラ13、CPU10aからの命令コードフェッチ要求に対して命令コードを転送する命令転送バス11a、CPU10aからのデータ転送要求に対してデータを転送するデータ転送バス11bおよび11c、DMAコントローラ13や命令キャッシュ19a、データキャッシュ19bからのデータ転送要求に対してデータ転送を行う内部バス11d、内部バス11dからの外部メモリアクセス要求に応じて外部メモリ制御を行う外部バスコントローラ14、内部バス11dからの周辺モジュールアクセス要求に応じて周辺モジュールバスの制御を行う周辺バスコントローラ16などから構成される。なお、周辺モジュールバスや、周辺モジュール、外部端子などは省略してある。
命令転送バス11aには、命令キャッシュ19aや内蔵メモリ12aが接続される。データ転送バス11bおよび11cには、データキャッシュ19bや内蔵メモリ12aが接続される。内部バス11dには、内蔵メモリ12aや外部バスコントローラ14や周辺バスコントローラ16が接続される。
CPU10aは、命令フェッチ要求・命令デコードなどを行う命令フェッチユニット100a、演算処理を行う演算器101a、データ保持を行うレジスタファイル102aから成る。このCPU10aは、命令ポインタで指定されたアドレスから、順次命令をフェッチ・デコードし、デコードした結果、同時に複数命令が実行できる場合は、該当する複数命令の演算処理や、データのレジスタへの格納、レジスタからメモリなどへのデータの退避などを行う。
命令キャッシュ19aは、外部メモリに格納された、使用頻度の高いアドレスの命令コードのコピーを保持する。また、データキャッシュ19bは、外部メモリに格納された、使用頻度の高いアドレスのデータのコピーを保持し、データの書き換えなどが行われた場合、必要に応じて外部メモリに書き戻す。
内蔵メモリ12aは、RAMなどで構成され、命令コードおよびデータを保持し、必要に応じて内蔵する命令コードおよびデータを読み出す。
なお、このようなマイクロプロセッサに関する技術としては、たとえば特開平4−68459号公報に記載される技術などが挙げられる。この公報には、DMA転送処理と演算処理命令を並列に行うことができるようにしたデジタル信号処理プロセッサが開示されている。しかしながら、本発明のような複数系統の命令実行パイプラインを有するスーパースカラパイプライン構成のマイクロプロセッサに適用する技術ではない。
ところで、前記のようなスーパースカラマイクロプロセッサについて、本発明者が検討した結果、以下のようなことが明らかとなった。
たとえば、前記図15のような命令実行パイプラインを2系統以上有するスーパースカラパイプライン構成のマイクロプロセッサにおいては、命令の並列度は概ね1.3程度とそれほど高くないため、全ての命令実行パイプラインが常時埋まることはなく、リソースの無駄が生じている。具体的には、2本のパイプラインで同時に命令実行ができない場合、1本のパイプラインは休止しているため、リソースの利用効率が低い。一方、ビジネス的には、効率の悪いリソースの使い方は、価格性能比を悪化させるため、プロセッサ上には極力無駄なリソースがなく、常時、適切に動作していることが望ましい。
また、マイクロコントローラと呼ばれる製品群においては、コントローラ上にCPUに加えて、DMAコントローラを内蔵し、データ転送能力を強化する例が多い。このDMAコントローラの処理内容は、一般的なCPUの処理内容のサブセット的なことが一般的である。この場合、DMAコントローラは、専用の別モジュールとして構成されているため、面積効率が低い。さらには、データ転送において、単純なDMA転送だけではなく、転送の際に一種のデータ演算処理を行えると、より効率的なマイクロコントローラが構成できる。
これらにより、本発明者は、スーパースカラパイプラインプロセッサにおいて、使用頻度の低いパイプラインを、データ演算処理も行えるDMA転送用のDMAコントローラとしても使えれば、専用のDMAコントローラが不要になることで低価格になり、CPU処理の性能低下も回避できると考えた。
また、DMAコントローラを構成する際、アドレスポインタや転送語数などの情報をチャネル分だけ保持する必要があるが、これを全てレジスタとして保持するとチップ上の占有面積が多くなるため、占有面積に対するデータ保持量の効率がよいRAMモジュールなどに情報を保持し、必要なものだけを効率のよいキャッシングアルゴリズムを使って取得することにより、より占有面積を抑えたチップが作成できると考えた。
そこで、本発明の第1の目的は、CPU処理性能をほとんど低下させずに、DMAコントローラのモジュール相当分のゲート論理を不要にして、チップ面積を小さくすることができる情報処理装置を提供することにある。
また、本発明の第2の目的は、データ演算処理時のCPUに対する割り込み処理の起動といった余計な切り替えオーバーヘッドなどを回避し、高機能なデータ転送処理の処理性能を大幅に向上することができる情報処理装置を提供することにある。
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
本発明は、複数系統の命令実行パイプラインを有するスーパースカラパイプライン構成の情報処理装置に適用され、第1メモリに格納された命令を第1スーパースカラパイプラインに展開して実行する際に、第2スーパースカラパイプラインが命令実行を行えない空きステージ(たとえば空きサイクル、空き時間)が生じた場合に、この空きステージ(空きサイクル、空き時間)を用いて第2メモリに格納された命令を実行するように切り替える制御手段を有するものである。また、本発明の情報処理装置においては、第2メモリに格納された命令として、DMACコマンドを実行するようにしたものである。
具体的に、本発明の情報処理装置は、以下のような特徴を有するものである。
(1)スーパースカラプロセッサにおいて、一般的には、一連のCPU命令の並列実行を行うために構成されている複数のパイプラインの一部を、該当するCPU処理が行われていない空きステージに、該当するCPU処理とは別の独立した命令処理を行えるように切り替える制御手段を付加したエンハンストスーパースカラプロセッサ。
(2)スーパースカラプロセッサにおいて、一般的には、一連のCPU命令の並列実行を行うために構成されている複数のパイプラインの一部を、DMA転送用のプログラマブルDMAコントローラとしても使えるように切り替える制御手段を付加したエンハンストスーパースカラプロセッサ。
(3)前記(2)の切り替え制御手段を付加したパイプラインにおいて、CPU処理とDMA転送処理の切り替えを、CPU処理優先、DMA転送処理優先、DMA転送処理の一部チャネルのみをCPU処理より優先、一定期間毎に優先順位を切り替え、といったモードを持たせたプロセッサ。
(4)前記(2)の、複数パイプラインの一部はCPU処理とDMA転送処理の切り替えを、いずれか一方に固定的なモードを持たせたプロセッサ。
(5)DMA転送に必要な、ソースアドレス、デスティネーションアドレス、転送語数、アドレスラップアラウンド転送に必要な初期値情報やアドレス範囲情報などを、専用レジスタではなく、RAMなどのメモリに格納し、必要に応じてキャッシングレジスタに情報をキャッシングすることを特徴とするDMA転送機能を有するプロセッサ。
(6)前記(2)、(3)、(4)のいずれかのプロセッサにおいて、前記(5)の機能を付加したエンハンストスーパースカラプロセッサ。
前記のように、命令実行パイプラインを2系統以上有するスーパースカラパイプライン構成のマイクロプロセッサにおいては、一般に命令の並列度は常に全ての命令実行パイプラインを埋めるほど高くない。この時々空いてしまうパイプラインを、データ演算処理も行えるDMA転送用のDMAコントローラとしても使うことにより、CPU処理性能の低下を回避しながら、専用のDMAコントローラが不要になることで低価格になり、さらに、データ転送処理と同時に所望のデータ演算なども行えることにより、余計なCPU処理を起動するためのオーバーヘッドの大きい割り込み処理なども不要な、データ転送能力の強力なマイクロコントローラを実現することができる。
このとき、DMA転送の場合の、転送要求に対する応答速度の要求が著しく速くはないことを利用して、DMA転送用の各種情報を専用レジスタではなく、データ保持密度の高い、たとえばRAMなどに置き、必要な情報のみをキャッシングして使うことにより、さらにDMAコントローラとしてのチップ上の占有面積を抑えることができる。
本発明は、複数系統の命令実行パイプラインを有するスーパースカラパイプライン構成の情報処理装置に適用され、第1メモリに格納された命令を第1スーパースカラパイプラインに展開して実行する際に、第2スーパースカラパイプラインが命令実行を行えない空きステージ(たとえば空きサイクル、空き時間)が生じた場合に、この空きステージ(空きサイクル、空き時間)を用いて第2メモリに格納された命令を実行するように切り替える制御手段を有するものである。また、本発明の情報処理装置においては、第2メモリに格納された命令として、DMACコマンドを実行するようにしたものである。
具体的に、本発明の情報処理装置は、以下のような特徴を有するものである。
(1)スーパースカラプロセッサにおいて、一般的には、一連のCPU命令の並列実行を行うために構成されている複数のパイプラインの一部を、該当するCPU処理が行われていない空きステージに、該当するCPU処理とは別の独立した命令処理を行えるように切り替える制御手段を付加したエンハンストスーパースカラプロセッサ。
(2)スーパースカラプロセッサにおいて、一般的には、一連のCPU命令の並列実行を行うために構成されている複数のパイプラインの一部を、DMA転送用のプログラマブルDMAコントローラとしても使えるように切り替える制御手段を付加したエンハンストスーパースカラプロセッサ。
(3)前記(2)の切り替え制御手段を付加したパイプラインにおいて、CPU処理とDMA転送処理の切り替えを、CPU処理優先、DMA転送処理優先、DMA転送処理の一部チャネルのみをCPU処理より優先、一定期間毎に優先順位を切り替え、といったモードを持たせたプロセッサ。
(4)前記(2)の、複数パイプラインの一部はCPU処理とDMA転送処理の切り替えを、いずれか一方に固定的なモードを持たせたプロセッサ。
(5)DMA転送に必要な、ソースアドレス、デスティネーションアドレス、転送語数、アドレスラップアラウンド転送に必要な初期値情報やアドレス範囲情報などを、専用レジスタではなく、RAMなどのメモリに格納し、必要に応じてキャッシングレジスタに情報をキャッシングすることを特徴とするDMA転送機能を有するプロセッサ。
(6)前記(2)、(3)、(4)のいずれかのプロセッサにおいて、前記(5)の機能を付加したエンハンストスーパースカラプロセッサ。
前記のように、命令実行パイプラインを2系統以上有するスーパースカラパイプライン構成のマイクロプロセッサにおいては、一般に命令の並列度は常に全ての命令実行パイプラインを埋めるほど高くない。この時々空いてしまうパイプラインを、データ演算処理も行えるDMA転送用のDMAコントローラとしても使うことにより、CPU処理性能の低下を回避しながら、専用のDMAコントローラが不要になることで低価格になり、さらに、データ転送処理と同時に所望のデータ演算なども行えることにより、余計なCPU処理を起動するためのオーバーヘッドの大きい割り込み処理なども不要な、データ転送能力の強力なマイクロコントローラを実現することができる。
このとき、DMA転送の場合の、転送要求に対する応答速度の要求が著しく速くはないことを利用して、DMA転送用の各種情報を専用レジスタではなく、データ保持密度の高い、たとえばRAMなどに置き、必要な情報のみをキャッシングして使うことにより、さらにDMAコントローラとしてのチップ上の占有面積を抑えることができる。
図1は本発明の一実施の形態の情報処理装置(コンフィグラブルスーパースカラマイクロプロセッサ)を示す構成図、図2は本実施の形態において、CPUレジスタファイルを示す構成図、図3はDMACレジスタファイルを示す構成図、図4はキャッシング機構付きDMACレジスタファイルを示す構成図、図5はパイプラインのステージ構成を示す説明図、図6は各ステージの処理内容を示す説明図、図7はパイプライン1側のCPU命令実行およびDMA転送処理の切り替え制御を示すフロー図、図8はパイプライン0およびパイプライン1のCPU命令実行およびDMA転送処理の切り替えを含む処理の流れを示す説明図、図9はパイプライン1のDMA転送処理に関するモード設定を示す説明図、図10は簡易データ処理を伴うDMA転送処理を示す説明図、図11は簡易データ処理を伴うDMA転送処理を示すフロー図、図12はDMA転送時のDMA転送情報のキャッシング動作を示す説明図、図13はバス構成を適用したコンフィグラブルスーパースカラマイクロプロセッサを示す構成図、図14は本発明の前提として検討したマイクロプロセッサを示す構成図、図15は本発明の前提として検討したスーパースカラマイクロプロセッサを示す構成図である。
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一機能を有する部材には同一の符号を付し、その繰り返しの説明は省略する。
まず、図1により、本発明の一実施の形態の情報処理装置の構成の一例を説明する。図1は本実施の形態の情報処理装置の構成図を示す。
本実施の形態の情報処理装置は、たとえばコンフィグラブル(Configurable)スーパースカラマイクロプロセッサとされ、命令フェッチ要求・命令デコード・演算処理・汎用レジスタなどによるデータ保持・DMA転送要求を受けてDMA転送処理を行うECPU(エンハンストCPU)10b、命令コードを格納し、RAMや命令キャッシュなどで構成される命令格納メモリ他120a、データを格納し、RAMやデータキャッシュなどで構成されるデータメモリ他120cおよび120d、DMACコマンド群を格納するDMACコマンド格納メモリ120b、ECPU10bからの命令コードやデータ転送要求に対して、命令格納メモリ他120aやデータメモリ他120cや120dとの間で、命令コードやデータ転送を行うスイッチマトリックス(SWMX)11eなどから構成される。
なお、スイッチマトリックス11eは、特に限定されているわけではなく、通常のバス構成でも構わない。通常のバス構成にした場合は、たとえば後述する図13に示すような構成となる。また、周辺モジュールバスや、周辺モジュール、外部端子などは省略してある。
スイッチマトリックスモジュール(SWMX)11eは、スイッチマトリックスコントローラ11e1およびデータセレクタとしての機能を有するスイッチマトリックス11e0から成る。このスイッチマトリックスコントローラ11e1は、特に限定はされないが、アドレス情報やパイプラインコントローラ100b2の制御情報により、どのメモリとの間で命令コードやデータ転送を行うかを制御する。
ECPU10bは、命令アドレスを制御する命令ポインタ100b4、DMAC制御コマンドアドレスを制御するDMACポインタ100b5、命令実行パイプライン1側のCPU処理/DMA転送処理の切り替え制御などを行うパイプラインコントローラ100b2、パイプラインコントローラ100b2の制御を受けて命令/コマンドデコーダ100b1に送り込む情報を切り替えるセレクタ100b3、パイプライン0側の命令コードのデコードを行う命令デコーダ100b0、パイプライン1側の命令コードおよびDMAC制御コマンドのデコードを行う命令/コマンドデコーダ100b1、DMA要求の情報を保持して順次DMA転送処理を起動するDMAリクエストキュー100b6、演算処理を行う演算器(ALU0)101b0および(ALU1)101b1、CPUとしてのデータ保持を行うCPUレジスタファイル102b0、DMACとしてのデータ保持を行うDMACレジスタファイル102b1、パイプラインコントローラ100b2の制御を受けて演算器101b1に供給するデータを選択するセレクタ102b2から成る。
このECPU10bは、命令ポインタで指定されたアドレスから、順次命令をフェッチ・デコードし、デコードした結果をもとに同時に複数命令が実行できる場合は、該当する複数命令の演算処理や、データのレジスタへの格納、レジスタからメモリなどへのデータの退避などを行う。また、DMA転送要求がある場合は、後述する図9で示されるようなモードに従って、パイプライン1側(主な構成要素は、DMACポインタ100b5、命令ポインタ100b4の一部、命令/コマンドデコーダ100b1、演算器101b1、CPUレジスタファイル102b0の一部、DMACレジスタファイル102b1、セレクタ102b2)で、必要に応じてデータ演算も行いながら、DMAデータ転送処理を行う。
パイプラインコントローラ100b2は、DMAリクエストキュー100b6からのDMA転送要求、パイプライン1側の命令/コマンドデコーダ100b1のデコード結果などを受けて、主にパイプライン1側の動作を制御する。また、必要に応じて、スイッチマトリックスコントローラ11e1を介してスイッチマトリックス11e0の制御を行う。
DMACコマンド格納メモリ120bは、RAMなどで構成され、CPU用の命令コードと同様に順次実行されるようなDMACコマンドコードを保持し、必要に応じて内蔵するDMACコマンドコードを読み出す。
次に、図2により、本実施の形態において、ECPUを構成するCPUレジスタファイルの構成の一例を説明する。図2はCPUレジスタファイルの構成図を示す。
CPUレジスタファイル102b0は、レジスタ102b00、書き込み用のセレクタ102b01、デコーダ102b02、ANDゲート102b03、読み出し用のセレクタ102b04などから構成される。この例では、書き込みが2ポート、読み出しが4ポートであり、これらが同時に動作可能となる。
デコーダ102b02は、パイプライン0およびパイプライン1からのレジスタ番号の指示情報102b06を受け、レジスタ読み出し用セレクタ102b04の制御および、クロック102b05と合わせてレジスタ書き込み信号の生成を行う。また、パイプライン0およびパイプライン1からの入力情報制御102b06により、レジスタへの書き込みデータを選択するセレクタ102b01の制御を行う。レジスタへの書き込みデータとしては、ALU0やALU1といった演算器の出力102b08やメモリからの読み出しデータ102b07が選択できる。
次に、図3により、DMACレジスタファイルの構成の一例を説明する。図3はDMACレジスタファイルの構成図を示す。
DMACレジスタファイル102b1は、ソースアドレスのレジスタ102b100、デスティネーションアドレスのレジスタ102b101、カウンタのレジスタ102b102、書き込み用のセレクタ102b11、デコーダ102b12、ANDゲート102b13、読み出し用のセレクタ102b14などから構成される。
デコーダ102b12は、パイプライン1からのレジスタ番号の指示情報102b16を受け、レジスタ読み出し用セレクタ102b14の制御および、クロック102b15と合わせてレジスタ書き込み信号の生成を行う。また、パイプライン1からの入力情報制御102b16により、レジスタへの書き込みデータを選択するセレクタ102b11の制御を行う。レジスタへの書き込みデータとしては、ALU1演算器の出力102b18やメモリからの読み出しデータ102b17が選択できる。また、ソースアドレスのレジスタ102b100、デスティネーションアドレスのレジスタ102b101、カウンタのレジスタ102b102などのDMA転送に必要なレジスタについては、転送に必要なチャネル数分有している。
次に、図4により、キャッシング機構付きDMACレジスタファイルの構成の一例を説明する。図4はキャッシング機構付きDMACレジスタファイルの構成図を示す。
キャッシング機構付きDMACレジスタファイルは、前記DMACレジスタファイル102b1の構成に対して、キャッシングレジスタ番号格納レジスタ102c160、キャッシングバリッド情報格納レジスタ102c161が付加され、ソースアドレスのレジスタ102c100、デスティネーションアドレスのレジスタ102c101、カウンタのレジスタ102c102などの働きが異なっている。この構成例では、DMA転送に必要なレジスタをチャネル数分全て内蔵することはせず、必要な情報はメモリに格納する。
キャッシング機構付きDMACレジスタファイルには、メモリに格納されている情報のキャッシュレジスタとしてコピーを保持する。キャッシングレジスタ番号格納レジスタ102c160に、現在保持しているDMA転送用情報のチャネル番号を保持し、キャッシングバリッド情報格納レジスタ102c161で保持している情報がValidかどうかを制御する。
保持するアドレス情報やカウンタ情報は、特に限定はされないが、アドレスポインタとして使われるソースアドレスa,b,cといったキャッシングソースアドレスポインタ102c100やデスティネーションアドレスa,b,cといったキャッシングデスティネーションアドレスポインタ102c101、転送語数カウンタとして使われるカウンタa,b,cといったキャッシングカウンタレジスタ102c102に格納され、随時更新される。
また、格納しているあるチャネル情報を別のチャネルの情報に入れ替える際は、まず、キャッシングレジスタのデータをメモリに書き戻して、その後、別のチャネルの情報をメモリから読み込んで設定する。
このキャッシングレジスタの入れ替えアルゴリズムは、後述する図9に示すようなモード設定に依存し、一部だけ常駐するモードや、各チャネルの優先順位が順に入れ替わるラウンドロビンモードおよび、LRUと呼ばれる使用頻度の低いものを優先的に入れ替えるアルゴリズムなどの組み合わせになる。
続いて、図5により、本実施の形態において、パイプラインのステージ構成の一例を説明する。併せて、図6により、各ステージの処理内容の一例を説明する。図5はパイプラインのステージ構成の説明図、図6は各ステージの処理内容の説明図をそれぞれ示す。
本実施の形態のパイプライン制御においては、特にメモリに格納された命令をパイプラインに展開して実行する際に、別のパイプラインが命令実行を行えない空きステージが生じた場合に、この空きステージを用いて別のメモリに格納された命令を実行するように切り替えることが可能となっている。
パイプライン0側は、一般的なマイクロプロセッサのパイプラインと同様の5段ステージ構成となる。すなわち、CPU命令処理専用となる。また、パイプライン1側は、一般的なマイクロプロセッサのパイプラインと同様の5段ステージ構成として動作する場合と、DMACとして5段ステージ構成で動作する場合がある。すなわち、CPU命令処理/インテリジェントDMA転送処理兼用となる。
各ステージの処理内容は、図6に示すように、IFが命令フェッチステージ、IDが命令デコード&レジスタ読み出しステージ、EXが演算・アドレス計算ステージ、MAがメモリアクセスステージ、WBがレジスタ書き込みステージ、CRがDMAC制御コマンド読み出しステージ、CDがDMAC制御コマンドデコード&レジスタ読み出しステージをそれぞれ表す。
次に、図7により、DMA処理優先モードの場合の、パイプライン1側のCPU命令実行およびDMA転送処理の切り替え制御のフローの一例を説明する。図7はパイプライン1側のCPU命令実行およびDMA転送処理の切り替え制御のフロー図を示す。
まず、DMA転送要求があるかどうかを判定し(ステップS1)、要求がある場合(Yes)は、パイプライン1側をDMA処理実行モードに設定し(ステップS2)、必要に応じてデータ演算なども含めて、設定された転送語数のDMA転送処理を終了するまで繰り返して実行する(ステップS3,S4)。この後、特に制限はされないが、DMA転送終了時に転送終了を示すフラグの設定などを行い(ステップS5)、DMA転送処理を終了する。なお、この設定されたフラグにより、割り込み要求信号を駆動したり、ソフトウェアによるポーリングで終了を確認したりする。
一方、ステップS1の判定において、DMA転送要求がない場合(No)は、パイプライン1側をCPU命令実行モードに設定し(ステップS6)、パイプライン0と同時実行可能かどうかを判定し(ステップS7)、可能な場合(Yes)はCPU命令を実行して(ステップS8)、パイプライン0と合わせて通常のスーパースカラマイクロプロセッサとして動作する。
次に、図8により、パイプライン0およびパイプライン1のCPU命令実行およびDMA転送処理の切り替えを含む処理の流れの一例を説明する。併せて、図9により、パイプライン1のDMA転送処理に関するモード設定の一例を説明する。図8はパイプライン0およびパイプライン1のCPU命令実行およびDMA転送処理の切り替えを含む処理の流れの説明図、図9はパイプライン1のDMA転送処理に関するモード設定の説明図をそれぞれ示す。これらのモード設定のための情報は、ECPU10bに含まれる図示はしない制御レジスタに設定する、もしくは命令を実行することによってそれぞれのモードを切り替えることが可能になる。
DMA転送要求がない場合は、パイプライン0とパイプライン1を合わせて通常のスーパースカラマイクロプロセッサとしてCPU命令の処理を実行する。このとき、パイプライン0側とパイプライン1側で実行するCPU命令によっては、同時に処理を実行できない場合があり、その場合はパイプライン1側は処理を休止する。
DMA転送要求がある場合は、モード設定にもよるが、パイプライン1側をDMA処理実行モードに設定し、必要に応じてデータ演算なども含めて、設定された転送語数のDMA転送処理を実行し、DMA転送終了後、通常のCPU命令実行モードに戻す。すなわち、DMA転送要求があった時点で、パイプライン1側のレジスタファイルをCPUレジスタファイルからDMACレジスタファイルに切り替え、DMA転送処理が終了したらCPUレジスタファイルに切り替える。
パイプライン1のDMA処理に関するモード設定は、図9(a)に示すように、モード0がDMA処理禁止、モード1がDMA処理許可の設定となる。さらに、DMA処理許可については、図9(b)に示すように、モード0がCPU処理優先、モード1が最優先DMAチャネルのみCPU処理より優先、モード2が最優先およびその次のDMAチャネルのみCPU処理より優先、モード3が一定時間毎にCPU処理優先とDMA処理優先モードを切り替え、モード4が一定時間毎にCPU処理優先とモード1ないし2を切り替え、モード5が制御信号によりCPU処理優先とDMA処理優先モードを切り替え、モード6が制御信号によりCPU処理優先とモード1ないし2を切り替え、モード7がDMA処理優先の各モードがある。
さらに、DMAチャネル(ch.)間の優先順位については、図9(c)に示すように、モード0がチャネル0>チャネル1>・・・>チャネルn−1で固定、モード1がラウンドロビン、モード2がチャネル0のみ固定で、チャネル1以下はラウンドロビン、モード3がチャネル0、チャネル1のみ固定で、チャネル2以下はラウンドロビンとなる。ラウンドロビンとは、複数チャネルの優先順位が順に変わっていくことを表す。
次に、表1により、RAMを用いたDMACコマンドメモリの構成の一例を説明する。
RAM上には、DMA転送に必要な情報の格納領域を確保し、DMA転送処理のプログラムを格納する。この例の場合、チャネル0は単純なDMA転送処理を行い、チャネル1はデータ転送時に付加的なデータ処理を同時に行える。DMACコマンドメモリとして、内蔵RAMを用意すれば、コマンドメモリ兼DMA情報格納エリアとして使用可能である。
次に、図10および図11により、簡易データ処理を伴うDMA転送処理の一例を説明する。図10は簡易データ処理を伴うDMA転送処理の説明図、図11はそのフロー図をそれぞれ示す。
この例では、入力データの上位ビットの“0”部分を取り除くパッキング処理をしながら、パッキングデータを単位サイズ毎の出力データとしてDMA転送処理を行っている。すなわち、DMA転送要求により起動し、まずパイプライン1をDMA処理実行モードに設定する(ステップS11)。そして、ソースアドレスから入力データを読み込み(ステップS12)、この読み込んだデータの上位ビットの“0”を読み飛ばして左詰し(ステップS13)、この左詰したパッキングデータを既存データに連結して書き込む(ステップS14)。この処理を、転送データが終了するまで繰り返して行い(ステップS15)、終了した時点でDMA転送終了フラグをセットして終了となる(ステップS16)。
これにより、従来行われていた、データパッキング処理や、ソフトウェアによる、DMA転送終了時にCPUをオーバーヘッドの大きい割り込み要求などで起動し、不要な“0”部分を取り除く処理を別途行わせるといった余計な処理を行わなくて済み、システム性能の向上が見込まれる。
次に、表2により、DMA転送コントローラにキャッシングレジスタを搭載した場合のDMA転送プログラムの一例を説明する。
この例では、キャッシングレジスタのヒット/ミスの判定と情報の設定を、Iddmarという命令にて行っている。
次に、図12により、DMA転送コントローラにキャッシングレジスタを1セット搭載した場合の、DMA転送時のDMA転送情報のキャッシングの動作の一例を説明する。図12はDMA転送時のDMA転送情報のキャッシングの動作の説明図を示す。
この例では、パイプライン1の動作において、チャネル0のDMA要求、続けてチャネル0のDMA要求があり、その後、チャネル1のDMA要求があった場合を示している。この際に、DMA転送後のCPU処理においては、命令の組み合わせにより一時的に命令処理を休止することがある。
この例の場合に、チャネル0のDMA転送要求が連続したため、1回目はDMA転送情報をメモリなどからロードするが、2回目のDMA転送情報はメモリなどからロードせず、キャッシングされている情報を使用しており、応答速度の改善および低消費電力化が見込める。その後、チャネル1のDMA転送要求が発生しているため、チャネル0のDMA転送情報をメモリなどに退避してから、チャネル1のDMA転送情報をキャッシングレジスタにコピーしている。
次に、図13により、バス構成を適用したコンフィグラブルスーパースカラマイクロプロセッサの構成の一例を説明する。図13はバス構成を適用したコンフィグラブルスーパースカラマイクロプロセッサの構成図を示す。
バス構成を適用したコンフィグラブルスーパースカラマイクロプロセッサは、前記図1に示したスイッチマトリックスモジュール(SWMX)をバス構成に代えた構成であり、ECPU10bからの命令コードフェッチ要求に対して命令コードを転送する命令転送バス110a、ECPU10bからのデータ転送要求に対してデータを転送するデータ転送バス110bおよび110cから成る。他の構成および動作は、前記図1と同様である。
以上説明したように、本実施の形態のコンフィグラブルスーパースカラマイクロプロセッサによれば、CPU処理用のパイプライン機構によって、CPU処理の空き時間などにDMA転送処理を行うことにより、CPU処理性能をほとんど低下させずに、DMAコントローラのモジュール相当分のゲート論理が不要になり、チップ面積が小さくなる。
また、従来の汎用のDMAコントローラの場合、DMA転送処理と同時にデータ演算処理を行うことは難しく、本実施の形態のプログラマブルDMA転送機能により、DMAデータ転送とデータ演算を連続して行えるため、データ演算処理時のCPUに対する割り込み処理の起動といった余計な切り替えオーバヘッドなどが回避でき、高機能なデータ転送処理の処理性能が大幅に向上できる。
この結果、製品全体として、DMAコントローラのモジュール相当分のチップ面積削減を可能とする。さらに、高機能・高性能データ転送機能により、演算を伴うようなデータ転送処理を行う場合、システム性能が大幅に向上する。また、内部バスなどに接続されるバスマスタの個数が減るため、負荷容量的にも、レイアウト的にも、負荷が減り、動作速度向上も期待できる。
以上、本発明者によってなされた発明をその実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
たとえば、スーパースカラプロセッサの命令実行パイプラインは、2本に限定されるものではなく、3本以上のパイプラインを有する場合にも適用可能である。パイプラインの本数が多くなると、CPU命令を同時に行うスーパースカラマイクロプロセッサとしては、同時に各パイプラインを途切れなく動作させられる確立は下がるが、空いているパイプラインを別の処理に充てられるため、さらにDMA転送能力の高いマイクロプロセッサを構成することができる。
まず、図1により、本発明の一実施の形態の情報処理装置の構成の一例を説明する。図1は本実施の形態の情報処理装置の構成図を示す。
本実施の形態の情報処理装置は、たとえばコンフィグラブル(Configurable)スーパースカラマイクロプロセッサとされ、命令フェッチ要求・命令デコード・演算処理・汎用レジスタなどによるデータ保持・DMA転送要求を受けてDMA転送処理を行うECPU(エンハンストCPU)10b、命令コードを格納し、RAMや命令キャッシュなどで構成される命令格納メモリ他120a、データを格納し、RAMやデータキャッシュなどで構成されるデータメモリ他120cおよび120d、DMACコマンド群を格納するDMACコマンド格納メモリ120b、ECPU10bからの命令コードやデータ転送要求に対して、命令格納メモリ他120aやデータメモリ他120cや120dとの間で、命令コードやデータ転送を行うスイッチマトリックス(SWMX)11eなどから構成される。
なお、スイッチマトリックス11eは、特に限定されているわけではなく、通常のバス構成でも構わない。通常のバス構成にした場合は、たとえば後述する図13に示すような構成となる。また、周辺モジュールバスや、周辺モジュール、外部端子などは省略してある。
スイッチマトリックスモジュール(SWMX)11eは、スイッチマトリックスコントローラ11e1およびデータセレクタとしての機能を有するスイッチマトリックス11e0から成る。このスイッチマトリックスコントローラ11e1は、特に限定はされないが、アドレス情報やパイプラインコントローラ100b2の制御情報により、どのメモリとの間で命令コードやデータ転送を行うかを制御する。
ECPU10bは、命令アドレスを制御する命令ポインタ100b4、DMAC制御コマンドアドレスを制御するDMACポインタ100b5、命令実行パイプライン1側のCPU処理/DMA転送処理の切り替え制御などを行うパイプラインコントローラ100b2、パイプラインコントローラ100b2の制御を受けて命令/コマンドデコーダ100b1に送り込む情報を切り替えるセレクタ100b3、パイプライン0側の命令コードのデコードを行う命令デコーダ100b0、パイプライン1側の命令コードおよびDMAC制御コマンドのデコードを行う命令/コマンドデコーダ100b1、DMA要求の情報を保持して順次DMA転送処理を起動するDMAリクエストキュー100b6、演算処理を行う演算器(ALU0)101b0および(ALU1)101b1、CPUとしてのデータ保持を行うCPUレジスタファイル102b0、DMACとしてのデータ保持を行うDMACレジスタファイル102b1、パイプラインコントローラ100b2の制御を受けて演算器101b1に供給するデータを選択するセレクタ102b2から成る。
このECPU10bは、命令ポインタで指定されたアドレスから、順次命令をフェッチ・デコードし、デコードした結果をもとに同時に複数命令が実行できる場合は、該当する複数命令の演算処理や、データのレジスタへの格納、レジスタからメモリなどへのデータの退避などを行う。また、DMA転送要求がある場合は、後述する図9で示されるようなモードに従って、パイプライン1側(主な構成要素は、DMACポインタ100b5、命令ポインタ100b4の一部、命令/コマンドデコーダ100b1、演算器101b1、CPUレジスタファイル102b0の一部、DMACレジスタファイル102b1、セレクタ102b2)で、必要に応じてデータ演算も行いながら、DMAデータ転送処理を行う。
パイプラインコントローラ100b2は、DMAリクエストキュー100b6からのDMA転送要求、パイプライン1側の命令/コマンドデコーダ100b1のデコード結果などを受けて、主にパイプライン1側の動作を制御する。また、必要に応じて、スイッチマトリックスコントローラ11e1を介してスイッチマトリックス11e0の制御を行う。
DMACコマンド格納メモリ120bは、RAMなどで構成され、CPU用の命令コードと同様に順次実行されるようなDMACコマンドコードを保持し、必要に応じて内蔵するDMACコマンドコードを読み出す。
次に、図2により、本実施の形態において、ECPUを構成するCPUレジスタファイルの構成の一例を説明する。図2はCPUレジスタファイルの構成図を示す。
CPUレジスタファイル102b0は、レジスタ102b00、書き込み用のセレクタ102b01、デコーダ102b02、ANDゲート102b03、読み出し用のセレクタ102b04などから構成される。この例では、書き込みが2ポート、読み出しが4ポートであり、これらが同時に動作可能となる。
デコーダ102b02は、パイプライン0およびパイプライン1からのレジスタ番号の指示情報102b06を受け、レジスタ読み出し用セレクタ102b04の制御および、クロック102b05と合わせてレジスタ書き込み信号の生成を行う。また、パイプライン0およびパイプライン1からの入力情報制御102b06により、レジスタへの書き込みデータを選択するセレクタ102b01の制御を行う。レジスタへの書き込みデータとしては、ALU0やALU1といった演算器の出力102b08やメモリからの読み出しデータ102b07が選択できる。
次に、図3により、DMACレジスタファイルの構成の一例を説明する。図3はDMACレジスタファイルの構成図を示す。
DMACレジスタファイル102b1は、ソースアドレスのレジスタ102b100、デスティネーションアドレスのレジスタ102b101、カウンタのレジスタ102b102、書き込み用のセレクタ102b11、デコーダ102b12、ANDゲート102b13、読み出し用のセレクタ102b14などから構成される。
デコーダ102b12は、パイプライン1からのレジスタ番号の指示情報102b16を受け、レジスタ読み出し用セレクタ102b14の制御および、クロック102b15と合わせてレジスタ書き込み信号の生成を行う。また、パイプライン1からの入力情報制御102b16により、レジスタへの書き込みデータを選択するセレクタ102b11の制御を行う。レジスタへの書き込みデータとしては、ALU1演算器の出力102b18やメモリからの読み出しデータ102b17が選択できる。また、ソースアドレスのレジスタ102b100、デスティネーションアドレスのレジスタ102b101、カウンタのレジスタ102b102などのDMA転送に必要なレジスタについては、転送に必要なチャネル数分有している。
次に、図4により、キャッシング機構付きDMACレジスタファイルの構成の一例を説明する。図4はキャッシング機構付きDMACレジスタファイルの構成図を示す。
キャッシング機構付きDMACレジスタファイルは、前記DMACレジスタファイル102b1の構成に対して、キャッシングレジスタ番号格納レジスタ102c160、キャッシングバリッド情報格納レジスタ102c161が付加され、ソースアドレスのレジスタ102c100、デスティネーションアドレスのレジスタ102c101、カウンタのレジスタ102c102などの働きが異なっている。この構成例では、DMA転送に必要なレジスタをチャネル数分全て内蔵することはせず、必要な情報はメモリに格納する。
キャッシング機構付きDMACレジスタファイルには、メモリに格納されている情報のキャッシュレジスタとしてコピーを保持する。キャッシングレジスタ番号格納レジスタ102c160に、現在保持しているDMA転送用情報のチャネル番号を保持し、キャッシングバリッド情報格納レジスタ102c161で保持している情報がValidかどうかを制御する。
保持するアドレス情報やカウンタ情報は、特に限定はされないが、アドレスポインタとして使われるソースアドレスa,b,cといったキャッシングソースアドレスポインタ102c100やデスティネーションアドレスa,b,cといったキャッシングデスティネーションアドレスポインタ102c101、転送語数カウンタとして使われるカウンタa,b,cといったキャッシングカウンタレジスタ102c102に格納され、随時更新される。
また、格納しているあるチャネル情報を別のチャネルの情報に入れ替える際は、まず、キャッシングレジスタのデータをメモリに書き戻して、その後、別のチャネルの情報をメモリから読み込んで設定する。
このキャッシングレジスタの入れ替えアルゴリズムは、後述する図9に示すようなモード設定に依存し、一部だけ常駐するモードや、各チャネルの優先順位が順に入れ替わるラウンドロビンモードおよび、LRUと呼ばれる使用頻度の低いものを優先的に入れ替えるアルゴリズムなどの組み合わせになる。
続いて、図5により、本実施の形態において、パイプラインのステージ構成の一例を説明する。併せて、図6により、各ステージの処理内容の一例を説明する。図5はパイプラインのステージ構成の説明図、図6は各ステージの処理内容の説明図をそれぞれ示す。
本実施の形態のパイプライン制御においては、特にメモリに格納された命令をパイプラインに展開して実行する際に、別のパイプラインが命令実行を行えない空きステージが生じた場合に、この空きステージを用いて別のメモリに格納された命令を実行するように切り替えることが可能となっている。
パイプライン0側は、一般的なマイクロプロセッサのパイプラインと同様の5段ステージ構成となる。すなわち、CPU命令処理専用となる。また、パイプライン1側は、一般的なマイクロプロセッサのパイプラインと同様の5段ステージ構成として動作する場合と、DMACとして5段ステージ構成で動作する場合がある。すなわち、CPU命令処理/インテリジェントDMA転送処理兼用となる。
各ステージの処理内容は、図6に示すように、IFが命令フェッチステージ、IDが命令デコード&レジスタ読み出しステージ、EXが演算・アドレス計算ステージ、MAがメモリアクセスステージ、WBがレジスタ書き込みステージ、CRがDMAC制御コマンド読み出しステージ、CDがDMAC制御コマンドデコード&レジスタ読み出しステージをそれぞれ表す。
次に、図7により、DMA処理優先モードの場合の、パイプライン1側のCPU命令実行およびDMA転送処理の切り替え制御のフローの一例を説明する。図7はパイプライン1側のCPU命令実行およびDMA転送処理の切り替え制御のフロー図を示す。
まず、DMA転送要求があるかどうかを判定し(ステップS1)、要求がある場合(Yes)は、パイプライン1側をDMA処理実行モードに設定し(ステップS2)、必要に応じてデータ演算なども含めて、設定された転送語数のDMA転送処理を終了するまで繰り返して実行する(ステップS3,S4)。この後、特に制限はされないが、DMA転送終了時に転送終了を示すフラグの設定などを行い(ステップS5)、DMA転送処理を終了する。なお、この設定されたフラグにより、割り込み要求信号を駆動したり、ソフトウェアによるポーリングで終了を確認したりする。
一方、ステップS1の判定において、DMA転送要求がない場合(No)は、パイプライン1側をCPU命令実行モードに設定し(ステップS6)、パイプライン0と同時実行可能かどうかを判定し(ステップS7)、可能な場合(Yes)はCPU命令を実行して(ステップS8)、パイプライン0と合わせて通常のスーパースカラマイクロプロセッサとして動作する。
次に、図8により、パイプライン0およびパイプライン1のCPU命令実行およびDMA転送処理の切り替えを含む処理の流れの一例を説明する。併せて、図9により、パイプライン1のDMA転送処理に関するモード設定の一例を説明する。図8はパイプライン0およびパイプライン1のCPU命令実行およびDMA転送処理の切り替えを含む処理の流れの説明図、図9はパイプライン1のDMA転送処理に関するモード設定の説明図をそれぞれ示す。これらのモード設定のための情報は、ECPU10bに含まれる図示はしない制御レジスタに設定する、もしくは命令を実行することによってそれぞれのモードを切り替えることが可能になる。
DMA転送要求がない場合は、パイプライン0とパイプライン1を合わせて通常のスーパースカラマイクロプロセッサとしてCPU命令の処理を実行する。このとき、パイプライン0側とパイプライン1側で実行するCPU命令によっては、同時に処理を実行できない場合があり、その場合はパイプライン1側は処理を休止する。
DMA転送要求がある場合は、モード設定にもよるが、パイプライン1側をDMA処理実行モードに設定し、必要に応じてデータ演算なども含めて、設定された転送語数のDMA転送処理を実行し、DMA転送終了後、通常のCPU命令実行モードに戻す。すなわち、DMA転送要求があった時点で、パイプライン1側のレジスタファイルをCPUレジスタファイルからDMACレジスタファイルに切り替え、DMA転送処理が終了したらCPUレジスタファイルに切り替える。
パイプライン1のDMA処理に関するモード設定は、図9(a)に示すように、モード0がDMA処理禁止、モード1がDMA処理許可の設定となる。さらに、DMA処理許可については、図9(b)に示すように、モード0がCPU処理優先、モード1が最優先DMAチャネルのみCPU処理より優先、モード2が最優先およびその次のDMAチャネルのみCPU処理より優先、モード3が一定時間毎にCPU処理優先とDMA処理優先モードを切り替え、モード4が一定時間毎にCPU処理優先とモード1ないし2を切り替え、モード5が制御信号によりCPU処理優先とDMA処理優先モードを切り替え、モード6が制御信号によりCPU処理優先とモード1ないし2を切り替え、モード7がDMA処理優先の各モードがある。
さらに、DMAチャネル(ch.)間の優先順位については、図9(c)に示すように、モード0がチャネル0>チャネル1>・・・>チャネルn−1で固定、モード1がラウンドロビン、モード2がチャネル0のみ固定で、チャネル1以下はラウンドロビン、モード3がチャネル0、チャネル1のみ固定で、チャネル2以下はラウンドロビンとなる。ラウンドロビンとは、複数チャネルの優先順位が順に変わっていくことを表す。
次に、表1により、RAMを用いたDMACコマンドメモリの構成の一例を説明する。
RAM上には、DMA転送に必要な情報の格納領域を確保し、DMA転送処理のプログラムを格納する。この例の場合、チャネル0は単純なDMA転送処理を行い、チャネル1はデータ転送時に付加的なデータ処理を同時に行える。DMACコマンドメモリとして、内蔵RAMを用意すれば、コマンドメモリ兼DMA情報格納エリアとして使用可能である。
この例では、入力データの上位ビットの“0”部分を取り除くパッキング処理をしながら、パッキングデータを単位サイズ毎の出力データとしてDMA転送処理を行っている。すなわち、DMA転送要求により起動し、まずパイプライン1をDMA処理実行モードに設定する(ステップS11)。そして、ソースアドレスから入力データを読み込み(ステップS12)、この読み込んだデータの上位ビットの“0”を読み飛ばして左詰し(ステップS13)、この左詰したパッキングデータを既存データに連結して書き込む(ステップS14)。この処理を、転送データが終了するまで繰り返して行い(ステップS15)、終了した時点でDMA転送終了フラグをセットして終了となる(ステップS16)。
これにより、従来行われていた、データパッキング処理や、ソフトウェアによる、DMA転送終了時にCPUをオーバーヘッドの大きい割り込み要求などで起動し、不要な“0”部分を取り除く処理を別途行わせるといった余計な処理を行わなくて済み、システム性能の向上が見込まれる。
次に、表2により、DMA転送コントローラにキャッシングレジスタを搭載した場合のDMA転送プログラムの一例を説明する。
この例では、キャッシングレジスタのヒット/ミスの判定と情報の設定を、Iddmarという命令にて行っている。
この例では、パイプライン1の動作において、チャネル0のDMA要求、続けてチャネル0のDMA要求があり、その後、チャネル1のDMA要求があった場合を示している。この際に、DMA転送後のCPU処理においては、命令の組み合わせにより一時的に命令処理を休止することがある。
この例の場合に、チャネル0のDMA転送要求が連続したため、1回目はDMA転送情報をメモリなどからロードするが、2回目のDMA転送情報はメモリなどからロードせず、キャッシングされている情報を使用しており、応答速度の改善および低消費電力化が見込める。その後、チャネル1のDMA転送要求が発生しているため、チャネル0のDMA転送情報をメモリなどに退避してから、チャネル1のDMA転送情報をキャッシングレジスタにコピーしている。
次に、図13により、バス構成を適用したコンフィグラブルスーパースカラマイクロプロセッサの構成の一例を説明する。図13はバス構成を適用したコンフィグラブルスーパースカラマイクロプロセッサの構成図を示す。
バス構成を適用したコンフィグラブルスーパースカラマイクロプロセッサは、前記図1に示したスイッチマトリックスモジュール(SWMX)をバス構成に代えた構成であり、ECPU10bからの命令コードフェッチ要求に対して命令コードを転送する命令転送バス110a、ECPU10bからのデータ転送要求に対してデータを転送するデータ転送バス110bおよび110cから成る。他の構成および動作は、前記図1と同様である。
以上説明したように、本実施の形態のコンフィグラブルスーパースカラマイクロプロセッサによれば、CPU処理用のパイプライン機構によって、CPU処理の空き時間などにDMA転送処理を行うことにより、CPU処理性能をほとんど低下させずに、DMAコントローラのモジュール相当分のゲート論理が不要になり、チップ面積が小さくなる。
また、従来の汎用のDMAコントローラの場合、DMA転送処理と同時にデータ演算処理を行うことは難しく、本実施の形態のプログラマブルDMA転送機能により、DMAデータ転送とデータ演算を連続して行えるため、データ演算処理時のCPUに対する割り込み処理の起動といった余計な切り替えオーバヘッドなどが回避でき、高機能なデータ転送処理の処理性能が大幅に向上できる。
この結果、製品全体として、DMAコントローラのモジュール相当分のチップ面積削減を可能とする。さらに、高機能・高性能データ転送機能により、演算を伴うようなデータ転送処理を行う場合、システム性能が大幅に向上する。また、内部バスなどに接続されるバスマスタの個数が減るため、負荷容量的にも、レイアウト的にも、負荷が減り、動作速度向上も期待できる。
以上、本発明者によってなされた発明をその実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
たとえば、スーパースカラプロセッサの命令実行パイプラインは、2本に限定されるものではなく、3本以上のパイプラインを有する場合にも適用可能である。パイプラインの本数が多くなると、CPU命令を同時に行うスーパースカラマイクロプロセッサとしては、同時に各パイプラインを途切れなく動作させられる確立は下がるが、空いているパイプラインを別の処理に充てられるため、さらにDMA転送能力の高いマイクロプロセッサを構成することができる。
以上のように、本発明にかかる情報処理装置は、特に複数系統の命令実行パイプラインを有するスーパースカラパイプライン構成のマイクロプロセッサや、組み込み分野を主なターゲットとする高性能マイクロコントローラに適用して有用であり、さらに信号処理を行うための処理プロセッサにおいての、インテリジェントデータ転送コントローラなどにも広く適用することができる。
Claims (7)
- 複数系統の命令実行パイプラインを有するスーパースカラパイプライン構成の情報処理装置であって、
第1メモリに格納された命令を第1スーパースカラパイプラインに展開して実行する際に、第2スーパースカラパイプラインが命令実行を行えない空きステージが生じた場合に、前記空きステージを用いて第2メモリに格納された命令を実行するように切り替える制御手段を有することを特徴とする情報処理装置。 - 複数系統の命令実行パイプラインを有するスーパースカラパイプライン構成の情報処理装置であって、
第1メモリに格納された命令を第1スーパースカラパイプラインに展開して実行する際に、第2スーパースカラパイプラインが命令実行を行えない空きステージが生じた場合に、前記空きステージを用いて第2メモリに格納されたDMACコマンドを実行するように切り替える制御手段を有することを特徴とする情報処理装置。 - 請求項2記載の情報処理装置において、
前記DMACコマンドは、演算処理したデータを転送可能とすることを特徴とする情報処理装置。 - 請求項2記載の情報処理装置において、
前記制御手段は、CPU処理とDMA転送処理とを切り替える際に、前記CPU処理を優先する第1モード、前記DMA転送処理を優先する第2モード、前記DMA転送処理の一部チャネルのみを前記CPU処理より優先する第3モード、一定期間毎に優先順位を切り替える第4モードを選択的なモードとして有することを特徴とする情報処理装置。 - 請求項2記載の情報処理装置において、
前記制御手段は、CPU処理とDMA転送処理とを切り替える際に、命令実行を行えない空きステージが生じた第2スーパースカラパイプラインに対して前記CPU処理と前記DMA転送処理のいずれか一方を固定的なモードとして切り替えることを特徴とする情報処理装置。 - 請求項2記載の情報処理装置において、
前記制御手段は、DMA転送処理の際に、DMA転送に必要なソースアドレス、デスティネーションアドレスおよび転送語数と、アドレスラップアラウンド転送に必要な初期値情報とアドレス範囲情報をメモリに格納し、必要な情報のみをキャッシングレジスタにキャッシングすることを特徴とする情報処理装置。 - 複数系統の命令実行パイプラインを有するスーパースカラパイプライン構成の情報処理装置であって、
命令実行を行うための命令が格納された第1メモリと、
データ転送を実行するための第2メモリと、
少なくとも第1および第2スーパースカラパイプラインとを有し、
前記第1メモリに格納された命令を前記第1スーパースカラパイプラインに展開して実行する際に、前記第2スーパースカラパイプラインが前記第1メモリに格納された命令実行を行えない空きステージが生じた場合に、前記空きステージを用いて前記第2メモリに格納された命令を実行するように切り替える制御手段を有することを特徴とする情報処理装置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2002/008801 WO2004023291A1 (ja) | 2002-08-30 | 2002-08-30 | 情報処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2004023291A1 true JPWO2004023291A1 (ja) | 2005-12-22 |
Family
ID=31972273
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004534043A Pending JPWO2004023291A1 (ja) | 2002-08-30 | 2002-08-30 | 情報処理装置 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JPWO2004023291A1 (ja) |
WO (1) | WO2004023291A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9015397B2 (en) | 2012-11-29 | 2015-04-21 | Sandisk Technologies Inc. | Method and apparatus for DMA transfer with synchronization optimization |
CN102736895B (zh) * | 2011-04-07 | 2015-06-10 | 中兴通讯股份有限公司 | 一种实现寄存器文件间的数据传输方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01125644A (ja) * | 1987-11-11 | 1989-05-18 | Hitachi Ltd | データ転送装置 |
JP3778573B2 (ja) * | 1996-09-27 | 2006-05-24 | 株式会社ルネサステクノロジ | データプロセッサ及びデータ処理システム |
-
2002
- 2002-08-30 WO PCT/JP2002/008801 patent/WO2004023291A1/ja active Application Filing
- 2002-08-30 JP JP2004534043A patent/JPWO2004023291A1/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2004023291A1 (ja) | 2004-03-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8191085B2 (en) | Method and apparatus for loading or storing multiple registers in a data processing system | |
US6507921B1 (en) | Trace fifo management | |
EP1582980B1 (en) | Context switching method, device, program, recording medium, and central processing unit | |
EP1979808B1 (en) | Thread optimized multiprocessor architecture | |
US6230259B1 (en) | Transparent extended state save | |
US20080071991A1 (en) | Using trap routines in a RISC microprocessor architecture | |
JP4057911B2 (ja) | 予め格納されるベクトルの割込処理システムおよび方法 | |
US20080270707A1 (en) | Data processor | |
JP2001256105A (ja) | 非整列循環アドレス指定を用いるマイクロプロセッサ | |
US6418489B1 (en) | Direct memory access controller and method therefor | |
JPH08505965A (ja) | コンテキスト切り換え装置及び方法 | |
US20030196058A1 (en) | Memory system for supporting multiple parallel accesses at very high frequencies | |
JPH0863354A (ja) | コンピュータプロセッシングを行うための装置及び方法 | |
JP2001216194A (ja) | 演算処理装置 | |
JP2007087108A (ja) | 演算処理装置,情報処理装置,及びレジスタファイルの制御方法 | |
US6782470B1 (en) | Operand queues for streaming data: A processor register file extension | |
US20030196072A1 (en) | Digital signal processor architecture for high computation speed | |
KR19990029748A (ko) | 중앙처리장치의 레지스터에 대해 판독/기록 액세스하기 위한 장치 | |
US7340591B1 (en) | Providing parallel operand functions using register file and extra path storage | |
JP2007500394A (ja) | 優先レベル毎に異なるレジスタセットが関連付けられたプログラマブル優先レベルを有する割り込み構造を備えたマイクロコントローラ | |
CN112559403A (zh) | 一种处理器及其中的中断控制器 | |
JPWO2004023291A1 (ja) | 情報処理装置 | |
JPH1083349A (ja) | キャッシュ・メモリ・バンク制御装置 | |
US6708259B1 (en) | Programmable wake up of memory transfer controllers in a memory transfer engine | |
JP4451010B2 (ja) | プログラマブルコントローラ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060425 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20060822 |