(57)【要約】【課題】データ転送の速度を向上させる。【解決手段】ＣＰＵ１１のコプロセッサポート２１とローカルメモリ１３は、ローカルバスインタフェース１２とローカルバス１４を介して接続されている。ローカルバス１４は、ＣＰＵ１１が単独で使用することができるバスとして設けられている。また、ローカルメモリ１３も、ＣＰＵ１１が単独で使用することができるメモリとして設けられている。ＣＰＵ１１とローカルメモリ１３との間でデータが授受される際、ＣＰＵ１１の命令セットを拡張した命令が用いられる。本発明は、パーソナルコンピュータやリアルタイムに音声データや画像データをエンコードするエンコーダに適用できる。【選択図】      図１
2004171458.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵのみがアクセスする第１の記憶デバイスと、
前記ＣＰＵと前記ＣＰＵとは異なるデバイスがアクセスする第２の記憶デバイスと、
前記ＣＰＵと前記第１の記憶デバイスを接続する第１のバスと、
前記ＣＰＵと前記第２の記憶デバイスを接続する第２のバスと
を備え、
前記第１のバスを介した前記ＣＰＵと前記第１の記憶デバイスとの間で用いられる前記第１のバス用の命令セットは、レイテンシが固定長で、応答信号の１つであるＡｃｋｎｏｗｌｅｄｇｅを有しない
ことを特徴とする情報処理装置。
【請求項２】
前記第１のバス用の命令セットは、前記第２のバスを介した前記ＣＰＵと前記第２の記憶デバイスの間で用いられる前記第２のバス用の命令セットと同一の形式である
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第１の記憶デバイスと前記第２のバスとを接続する第３のバスを
さらに備えることを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記第１のバスは、前記ＣＰＵのコプロセッサポートと接続される
ことを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記第１のバス用の命令セットは、オフセット値を有せず、即値またはポインタを用いて前記第１の記憶デバイスにアクセスするようにされている
ことを特徴とする請求項１に記載の情報処理装置。
【請求項６】
前記第１のバス用の命令セットは、前記第１の記憶デバイスに、前記ポインタを用いてアクセスする場合、前記第１のバス用の命令セットの前記ポインタに格納されている値のうち、所定の上位ビットにマスクを施し、前記所定の上位ビット以外の下位ビットのみを増減させるようにされている
ことを特徴とする請求項５に記載の情報処理装置。
【請求項７】
ＣＰＵのみがアクセスする第１の記憶デバイスと、
前記ＣＰＵと前記ＣＰＵとは異なるデバイスがアクセスする第２の記憶デバイスと、
前記ＣＰＵと前記第１の記憶デバイスを接続する第１のバスと、
前記ＣＰＵと前記第２の記憶デバイスを接続する第２のバスと
を備える情報処理装置の情報処理方法において、
前記第１のバスを介した前記ＣＰＵと前記第１の記憶デバイスとの間で用いられる前記第１のバス用の命令セットは、レイテンシが固定長で、応答信号の１つであるＡｃｋｎｏｗｌｅｄｇｅを有しない
ことを特徴とする情報処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は情報処理装置および方法に関し、特に、ＣＰＵが行う処理速度の向上をはかるための情報処理装置および方法に関する。
【０００２】
【従来の技術】
近年、パーソナルコンピュータが普及し、そのパーソナルコンピュータの頭脳であるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の処理能力（処理速度）が向上しつつある。ＣＰＵの処理能力を向上させるために、ＣＰＵの他に、コプロセッサを設けといったことが行われている。（例えば、特許文献１乃至５参照）
【０００３】
【特許文献１】
特開平１１−７３３１４号公報
【特許文献２】
特開平９−３２５７５９号公報
【特許文献３】
特開平９−６９０４７号公報
【特許文献４】
特許第２８４９１８９号明細書
【特許文献５】
特許第２９０８０９６号明細書
【０００４】
【発明が解決しようとする課題】
ＣＰＵが演算を実行する際、必要なデータおよび命令を記憶装置にアクセスして取り出す必要がある。その記憶装置としては、例えば、ＣＰＵ内に備えられているキャッシュや、ＣＰＵの外部に備えられているメモリやレジスタなどがある．ＣＰＵがＣＰＵ内のキャッシュにアクセスする場合、そのＣＰＵとキャッシュ間で行われるデータ転送の速度は、ＣＰＵとメモリ間で行われるデータ転送速度と比較すれば早い。ＣＰＵがＣＰＵ外部のレジスタやメモリにアクセスする場合、そのアクセスの速度（データ転送の速度）は、ＣＰＵとメモリ（レジスタ）を接続しているバスが経由されるため、データ転送が完了するまでに時間がかかる。
【０００５】
これは、ＣＰＵが、データ要求信号および対象となっているデータが格納されているアドレスをメモリやレジスタに送り、その応答としてのレジスタやメモリからデータが転送されるまで、次の要求信号を送信することができないためである。
【０００６】
また、ＣＰＵ以外にもバスを使用してデータの転送などを行うデバイスがあるために、バスがビジー状態になってしまうことなどに起因して、ＣＰＵがバスを使用できるようになるまでに、待ち時間が必要となる場合がある。そのために、非常に演算量が多いときなどは、処理速度が遅くなり、リアルタイムでの処理が要求されるときには、その要求に答えることができなくなり、現状でのＣＰＵの性能では不充分なときがあった。
【０００７】
この問題への対策の一つとして、例えばＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）がある。このＤＭＡは、ＣＰＵの代わりにメモリとメモリ間などのデータ転送を行うものであり、ＣＰＵを介することなく高速なデータ転送が可能である。しかしながら、ＣＰＵは、データ転送をＤＭＡに移管するために、アドレスや転送サイズなどをＤＭＡコントローラに設定する必要があり、その設定するための処理が行われる間には、上述した問題が発生する可能性があった。
【０００８】
本発明はこのような状況に鑑みてなされたものであり、ＣＰＵの処理速度を向上させることを目的とする。
【０００９】
【課題を解決するための手段】
本発明の情報処理装置は、ＣＰＵのみがアクセスする第１の記憶デバイスと、ＣＰＵとＣＰＵとは異なるデバイスがアクセスする第２の記憶デバイスと、ＣＰＵと第１の記憶デバイスを接続する第１のバスと、ＣＰＵと第２の記憶デバイスを接続する第２のバスとを備え、第１のバスを介したＣＰＵと第１の記憶デバイスとの間で用いられる第１のバス用の命令セットは、レイテンシが固定長で、応答信号の１つであるＡｃｋｎｏｗｌｅｄｇｅを有しないことを特徴とする。
【００１０】
前記第１のバス用の命令セットは、前記第２のバスを介したＣＰＵと第２の記憶デバイスの間で用いられる第２のバス用の命令セットと同一の形式であるようにすることができる。
【００１１】
前記第１の記憶デバイスと前記第２のバスとを接続する第３のバスをさらに備えるようにすることができる。
【００１２】
前記第１のバスは、前記ＣＰＵのコプロセッサポートと接続されるようにすることができる。
【００１３】
前記第１のバス用の命令セットは、オフセット値を有せず、即値またはポインタを用いて前記第１の記憶デバイスにアクセスするようにされているようにすることができる。
【００１４】
前記第１のバス用の命令セットは、前記第１の記憶デバイスに、前記ポインタを用いてアクセスする場合、第１のバス用の命令セットのポインタに格納されている値のうち、所定の上位ビットにマスクを施し、所定の上位ビット以外の下位ビットのみを増減させるようにされているようにすることができる。
【００１５】
本発明の情報処理方法は、ＣＰＵのみがアクセスする第１の記憶デバイスと、ＣＰＵとＣＰＵとは異なるデバイスがアクセスする第２の記憶デバイスと、ＣＰＵと第１の記憶デバイスを接続する第１のバスと、ＣＰＵと第２の記憶デバイスを接続する第２のバスとを備える情報処理装置の情報処理方法において、第１のバスを介したＣＰＵと第１の記憶デバイスとの間で用いられる第１のバス用の命令セットは、レイテンシが固定長で、応答信号の１つであるＡｃｋｎｏｗｌｅｄｇｅを有しないことを特徴とする。
【００１６】
本発明の情報処理装置および方法においては、ＣＰＵとＣＰＵ専用のメモリが、専用のバスで接続され、そのバスにおける命令セットは、レイテンシが固定長で、Ａｃｋｎｏｗｌｅｄｇｅを有しないものとされているため、ＣＰＵが処理を実行する上で、連続的に命令を出すことが可能となり、もって、ＣＰＵの処理能力を向上させることが可能となる。
【００１７】
【発明の実施の形態】
以下に、本発明の実施の形態について図面を参照して説明する。図１は、本発明を適用した情報処理装置の一実施の形態の構成を示している。図１に示した情報処理装置１０は、例えば、パーソナルコンピュータなどに組み込まれる。ＣＰＵ１１とローカルメモリ１３は、ローカルバスインタフェース１２およびローカルバス１４により、データの授受ができるように接続されている。ＣＰＵ１１とローカルバスインタフェース１２は、標準メモリバス１５により、レジスタ１６やメモリ１７とも接続されている。
【００１８】
ローカルバスインタフェース１２は、ＣＰＵ２１のコプロセッサポート２１と接続されている。
【００１９】
ここで、コプロセッサポート２１について説明する。コプロセッサポート２１は、本来、コプロセッサと接続するために設けられている。コプロセッサとは、ＣＰＵ１１を補完し、性能を強化するためのプロセッサであり、浮動小数点演算を行うコプロセッサが代表的なものとしてあげられる。
【００２０】
このコプロセッサを接続するためにＣＰＵ１１に備わっているコプロセッサポート２１に、本実施の形態においては、コプロセッサではなく、ＣＰＵ１１が単独で使用するローカルバスインタフェース１２を接続する。そして、ＣＰＵ１１は、ローカルバスインタフェース１２およびローカルバス１４を経由して、ローカルメモリ１３とデータ授受を行うことができるように構成されている。
【００２１】
ローカルメモリ１３は、ＣＰＵ１１が単独で使用するものである。ローカルメモリ１３が、ＣＰＵ１１が単独で使用するものであるため、ローカルバス１４も、ＣＰＵ１１が単独で使用するバスとされている。ＣＰＵ１１が単独で使用するローカルメモリ１３とのデータの授受を制御するために、ローカルバスインタフェース１２が設けられている。
【００２２】
ローカルメモリ１３に対して、ＣＰＵ１１も使用するが、ＣＰＵ１１以外のデバイスも、必要に応じて用いるのが、レジスタ１６やメモリ１７である。標準メモリバス１５には、ＣＰＵ１１以外のデバイスが必要とするデータも送受信されるが、ローカルバス１４には、ＣＰＵ１１が必要とするデータのみが送受信される。なお、ローカルバス１４においては、例えば、３２ビットでデータの授受が行われる。
【００２３】
ＣＰＵ１１とローカルメモリ１３との間でデータの授受が行われる際の動作について、図２のフローチャートを参照して説明する。ステップＳ１１において、ＣＰＵ１１は、命令を発行する。この発行された命令は、ローカルバスインタフェース１２に受信される。ローカルバスインタフェース１２は、ステップＳ１２において、受信した命令を解析し、処理対象となっているデータが格納されているまたは格納するアドレスのデータ、処理対象となるデータ、読み出し信号（ｒｅａｄ信号）又は書き込み信号（Ｗｒｉｔｅ信号）などに変換する。
【００２４】
変換されたそれらのデータや信号は、ステップＳ１３において、ローカルバスインタフェース１２からローカルメモリ１３に対して転送される。ローカルメモリ１３は、ステップＳ１４において、受信したデータに対応する処理として、応答信号を生成する。その応答信号は、ローカルバスインタフェース１２に対して送信（出力）される。
【００２５】
ローカルバスインタフェース１２は、ステップＳ１５において、ローカルメモリ１３からの応答信号を、ＣＰＵ１１が処理できるデータに変換し、出力する。ＣＰＵ１１は、ステップＳ１６において、ローカルバスインタフェース１２からのデータを受信し、その受信したデータに基づく処理を開始する。
【００２６】
このようにして、ＣＰＵ１１とローカルメモリ１３との間で、データの授受（命令の発行と、その命令に対応する処理）が行われる。このＣＰＵ１１とローカルメモリ１３との間でのデータの授受、すなわち、ローカルバス１４を介してデータの授受が行われる場合と、標準メモリバス１５を介して、例えば、ＣＰＵ１１とメモリ１７との間でデータの授受が行なわれる場合とを比較する。
【００２７】
ローカルバス１４におけるデータの授受と、標準メモリバス１５におけるデータの授受との違いは、標準メモリバス１５を介するデータの授受は、ＣＰＵ１１が要求信号（命令）を出し、その信号がレジスタ１６やメモリ１７等の記憶装置に到達した後、ＣＰＵ１１は、記憶装置が応答信号として出したデータの受信を待つという動作が行われる。そのため、ＣＰＵ１１は、要求信号を出した後から応答信号を受信するまでの間、他の動作を行うことができない。
【００２８】
これに対し、ローカルバス１４におけるデータ授受のプロトコル（後述）は、応答信号の１つであるＡｃｋｎｏｗｌｅｄｇｅを持たないレイテンシが固定長であるため、ＣＰＵ１１は、命令を出した後の応答信号を待つ必要がない。従って、要求信号を出した後、他の動作を行うことが可能である。例えば、要求信号を連続して発行するといったことが可能となる。このように、ローカルバス１４におけるデータの授受においては、ＣＰＵ１１は、信号を発行した直後に別の動作を行うことができ、効率的な動作ができるようになる。
【００２９】
ステップＳ１１において、ＣＰＵ１１が、ローカルバスインタフェース１２とローカルバス１４を介して、ローカルメモリ１３に対して発行する命令は、ＣＰＵ１１に通常備わっている命令セットを拡張し、ローカルメモリ１３を用いるために（ローカルバス１４を用いるために）独自に用意したコプロセッサ命令の様式である。
【００３０】
独自に用意したコプロセッサ命令の様式を用いることによって、レジスタ１６やメモリ１７といったＣＰＵ１１以外のデバイスもアクセスする記憶装置にアクセスする場合には標準の命令を使用し、ＣＰＵ１１専用に用意したローカルメモリ１３にアクセスする場合には、独自に用意したコプロセッサ命令の様式の命令を使用するといった、用いるバスによる区別を行うことが可能となる。ただし、命令の形式は、通常の命令と同形態になっているため、ＤＭＡコントローラへの設定のような特別な動作は不要である。
【００３１】
このようなローカルバス１４を用いたデータの授受を行うための拡張命令について説明する。図３に、ローカルバス１４でデータを授受するための拡張命令であるＬＤＬ（Ｌｏａｄ−Ｄａｔａ−Ｌｏｃａｌ）とＳＤＬ（Ｓｔｏｒｅ−Ｄａｔａ−Ｌｏｃａｌ）の命令のデータ構成を示す。ＬＤＬは、ローカルメモリ１３からＣＰＵ１１へのｒｅａｄ命令（リード命令）であり、ＳＤＬは、逆にＣＰＵ１１からローカルメモリ１３へのｗｒｉｔｅ命令（ライト命令）である。
【００３２】
命令は、例えば、３２ビット長で構成され、ＣＰＵ１１が備えている他の命令（標準メモリバス１５に出力する命令）と同様な構成で構成される。３１乃至２６ビットがオペコード、２０乃至１６ビットがターゲットレジスタであり、この部分に関しては、ＣＰＵ１１が備えている他の命令と同様に構成されている。
【００３３】
ローカルバス１４用の拡張命令は、オフセット値を持たない構成とされている。オフセット値を持たせないことにより、アドレス計算を行わないにすることができる。ローカルバス１４用の拡張命令は、オフセット値を持たない代わりに、即値（Ｉｍｍｅｄｉａｔｅ）またはポインタ（Ｐｏｉｎｔｅｒ）を用いてローカルメモリ１３にアクセスするように構成されている。
【００３４】
図４に示したように、２５乃至２１ビットのＬｍｏｄｅのデータにより、即値を用いるかポインタを用いるかが指示されるように構成されている。同時に、即値が選ばれた場合（Ｌｍｏｄｅが＄０乃至＄７の場合）には、その即値をポインタに代入するのか否か、ポインタが選ばれた場合（Ｌｍｏｄｅが＄８乃至＄１３の場合）には、その値を増減するのか否かが選択できるようになっている。
【００３５】
例えば、アセンブラで、
ＬＤＬ  ＄１０，２５６（＄０）  は、
ＣＰＵ．Ｒｅｇ［１０］＝ＬｏｃａｌＭｅｍ［２５６］；  Ｐｏｉｎｔｅｒ［０］＝２５６；  を意味する。
【００３６】
また，アドレス  ０ｘ４００２  に  Ｐｏｉｎｔｅｒ［２］  を割り当てると、
ＳＤＬ  ＄１２，０ｘ４００２（＄１２）  は、
ＬｏｃａｌＭｅｍ［Ｐｏｉｎｔｅｒ［２］］＝ＣＰＵ．Ｒｅｇ［１２］；  Ｐｏｉｎｔｅｒ［２］−−；  を意味する。
【００３７】
また、各ポインタには、１対１で対応したマスクが用意されている。その一例を図５に示す。このようなマスクを用意することにより、ポインタを用いてアドレスを送出する際、所望の下位ビットを残し、それより上位のビットを変化させことなくアドレスの増減を実行することが可能となる。
【００３８】
次に、ローカルバス１４のプロトコルについて、図６乃至図９のタイミングチャートを参照して説明する。図６乃至図９において、１行目（ＨＣＬＫ）は、ＣＰＵ１１の動作クロックの信号の波形を示し、２行目（ＬＤＬまたはＳＤＬ）は、パイプラインステージを示し、３行目（ｅｎａｂｌｅ）は、読み出し（ｒｅａｄ）または書き込み（ｗｒｉｔｅ）のイネーブル信号を示し、４行目（ａｄｄｒｅｓｓ）は、読み出しまたは書き込みを行う対象となるアドレス（そのアドレスがローカルバス１４上を通るタイミング）を示し、５行目（Ｈ：ｒｅａｄ，Ｌ：ｗｒｉｔｅ）は、読み出しまたは書き込みを指示する信号を示し、６行目（ｒｅａｄ  ｄａｔａ［３１：０］）は、読み出しまたは書き込みの対象とされたデータ（そのデータがローカルバス１４上を通るタイミング）を示している。
【００３９】
図６乃至図９における２行目のパイプラインステージにおいて、ＩＦは、Ｉｎｓｔｒｕｃｔｉｏｎ  Ｆｅｔｃｈ、ＲＦは、Ｒｅｇｉｓｔｅｒ  Ｆｅｔｃｈ、ＥＸは、Ｅｘｅｃｕｔｉｏｎ、ＤＦは、Ｄａｔａ  Ｆｅｔｃｈ、ＷＢは、Ｗｒｉｔｅ  Ｂａｃｋを、それぞれ示す。また、図７の４行目におけるＲＡは、Ｒｅａｄ  Ａｄｄｒｅｓｓを示し、６行目のＲＤは、Ｒｅａｄ  Ｄａｔａを示す。同様に、図８の４行目におけるＷＡは、Ｗｒｉｔｅ  Ａｄｄｒｅｓｓを示し、６行目のＷＤは、Ｗｒｉｔｅ  Ｄａｔａを示す。
【００４０】
図６は、ＣＰＵ１１からローカルメモリ１３へのｒｅａｄ命令が出される時のものであり、２行目にその命令であるＬＤＬ命令のパイプラインステージを示している。標準メモリバス１５（通常のバス）に対しては、命令に含まれているレジスタの内容を読み出し、オフセットを加えるなどの処理をした後に、４番目のステージであるＤＦで要求が出される。
【００４１】
それに対しローカルバス１４に対しては、命令中にアドレスの即値しか含まれていないため、２番目のステージであるＲＦで要求（読み出すデータのアドレスなど）を出すことができる。そのため、ＬＤＬ命令の後にＬＤＬ命令を続けて出してもインターロックが起きるようなことがなく、遅延のない連続したデータ転送が可能となる。このような連続的にＬＤＬ命令が出されたときの状態を、図７に示す。
【００４２】
図８は、ＣＰＵ１１からローカルメモリ１３へのｗｒｉｔｅ命令が出される時のものであり、２行目にその命令であるＳＤＬ命令のパイプラインステージを示している。ＳＤＬはＬＤＬと異なり、５番目のステージであるＷＢで要求を出し、そのステージで書き込みが完了する。要求をもっと早い段階で出さない理由は、４番目のステージであるＤＦにおいて割り込みが発生する可能性があるからである。このような場合も、ＬＤＬと同様に、ＳＤＬ命令を連続して出しても、インターロックが起きることなくデータの転送を行うことができる。このような連続的にＳＤＬ命令が出されたときの状態を、図９に示す。
【００４３】
このようなローカルバス１４を用いることにより、ＣＰＵ１１の高効率の動作が可能になるが、このローカルバス１４を通るデータ等は、通常のデバッガでは検知することができない。一般的なデバッガは、標準メモリバス１５を通してメモリ１７などの記憶装置にアクセスし、デバッグ信号は、コプロセッサポート２１を使用しないためである。
【００４４】
このような問題を解決するために、標準メモリバス１５とローカルバスインタフェース１２をつなぐバイパスを用意する。このデバッグ用バイパス経由で、ローカルメモリ１２または図示していないローカルレジスタといった記憶装置とのデータ転送を行うことができ、その結果としてデバッグも可能となる。
【００４５】
ＣＰＵ１１とメモリなどの記憶装置間におけるデータ転送は、従来では、要求信号に対する応答信号を待たなければ次の信号を発行することができず（次の動作にうつることができず）、記憶装置にアクセスし、データが転送されるまでの数サイクルの待ち時間が必要であった。
【００４６】
しかしながら、上述した本実施の形態を適用することにより、ＣＰＵ１１に、コプロセッサの代わりにローカルバス１４を用いることで、ＣＰＵ内のキャッシュにアクセスするのと同程度の速度でのデータ転送が可能となり、高効率にデータの転送を行うことが可能となり、高効率にＣＰＵ１１が動作することが可能となる。このため、例えば、オーディオ信号やビデオ信号のリアルタイムエンコーダとして、図１に示したような情報処理装置１０を含む装置を使用すれば、大きな影響を与え、特別な処理装置を別途用意することなく、高速な動作が可能となる。
【００４７】
なお、本明細書において、媒体により提供されるプログラムを記述するステップは、記載された順序に従って、時系列的に行われる処理は勿論、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【００４８】
【発明の効果】
本発明の情報処理装置および方法によれば、ＣＰＵと記憶装置間におけるデータの転送を行うことができる。
【００４９】
また、本発明の情報処理装置および方法によれば、ＣＰＵと記憶装置間におけるデータの転送を、より高効率に行うことができ、もって、データ処理速度を向上させることができる。
【図面の簡単な説明】
【図１】本発明を適用した情報処理装置の一実施の形態の構成を示す図である。
【図２】情報処理装置の動作について説明するためのフローチャートである。
【図３】拡張命令について説明するための図である。
【図４】拡張命令について説明するための図である。
【図５】マスクについて説明するための図である。
【図６】ローカルバスプロトコルについて説明するための図である。
【図７】ローカルバスプロトコルについて説明するための図である。
【図８】ローカルバスプロトコルについて説明するための図である。
【図９】ローカルバスプロトコルについて説明するための図である。
【符号の説明】
１０  情報処理装置，  １１  ＣＰＵ，  １２  ローカルバスインタフェース，  １３  ローカルメモリ，  １４  ローカルバス，  １５  標準メモリバス，
１６  レジスタ，  １７  メモリ
【図１】
2004171458.tif 000003
【図２】
2004171458.tif 000004
【図３】
2004171458.tif 000005
【図４】
2004171458.tif 000006
【図５】
2004171458.tif 000007
【図６】
2004171458.tif 000008
【図７】
2004171458.tif 000009
【図８】
2004171458.tif 000010
【図９】
2004171458.tif 000011