(57)【要約】【課題】共通のハードウェアを用いつつ様々な用途に対応することが可能な信号処理装置を提供すること。【解決手段】信号処理装置１は、演算対象のデータを記憶するデータレジスタ１２と、データレジスタ１２に記憶されたデータを並列に演算可能な複数の演算器１１−１〜１１−ｍと、命令メモリ１４に記憶されたプログラムに応じて複数の演算器１１−１〜１１−ｍによる演算を制御するコントローラ１３とを含む。命令メモリ１４には、プログラムとして、信号処理プログラムマイクロコードと、拡張マイクロコードと、基本マイクロコードとが記憶される。コントローラ１３は、ＣＰＵ２からの信号処理要求に応じてこれらのマイクロコードを実行することによって信号処理を行なう。したがって、マイクロコードを変更するだけで、共通のハードウェアを用いつつ様々な用途に対応することが可能となる。【選択図】図１
2008305015.tif 000002
【特許請求の範囲】
【請求項１】
演算対象のデータを記憶するデータ記憶手段と、
前記データ記憶手段に記憶されたデータを並列に演算可能な複数の演算手段と、
前記複数の演算手段に演算を行なわせるためのプログラムが記憶されるプログラム記憶手段と、
前記プログラム記憶手段に記憶されたプログラムに応じて前記複数の演算手段による演算を制御する制御手段とを含み、
前記プログラムは、外部からの信号処理要求に対応した命令コードを前記複数の演算手段に実行させる複数のマイクロコードを含む、信号処理装置。
【請求項２】
前記複数のマイクロコードは、信号処理要求を発行するアプリケーションプログラムに対応して設けられる信号処理プログラムマイクロコードと、
前記信号処理プログラムマイクロコードを実行する際に呼出される拡張マイクロコードと、
前記信号処理プログラムマイクロコードおよび前記拡張マイクロコードを実行する際に呼出される基本マイクロコードとを含む、請求項１記載の信号処理装置。
【請求項３】
前記信号処理装置はさらに、外部からの信号処理要求を受けて前記制御手段に出力し、該制御手段から信号処理の完了通知を受けて外部に出力するインタフェース手段を含む、請求項１または２記載の信号処理装置。
【請求項４】
信号処理装置とプロセッサと第１のプログラム記憶手段とがバスによって接続される情報処理システムであって、
前記信号処理装置は、演算対象のデータを記憶するデータ記憶手段と、
前記データ記憶手段に記憶されたデータを並列に演算可能な複数の演算手段と、
前記複数の演算手段に演算を行なわせるためのプログラムが記憶される第２のプログラム記憶手段と、
前記第２のプログラム記憶手段に記憶されたプログラムに応じて前記複数の演算手段による演算を制御する制御手段とを含み、
前記プログラムは、前記プロセッサからの信号処理要求に対応した命令コードを前記複数の演算手段に実行させる複数のマイクロコードを含み、
前記第１のプログラム記憶手段は、アプリケーションプログラムと通信ライブラリとを記憶し、
前記プロセッサは、前記アプリケーションプログラムを実行中に信号処理要求を検出すると、前記通信ライブラリを実行して前記信号処理装置に当該信号処理要求を送信する、情報処理システム。
【請求項５】
前記第１のプログラム記憶手段はさらに、マルチタスクカーネルを記憶し、
前記プロセッサは、第１のタスクを処理中に信号処理要求を検出すると、前記通信ライブラリを実行して前記信号処理装置に当該信号処理要求を送信し、前記第１のタスクの処理において前記信号処理装置からの完了通知待ちのときに、前記マルチタスクカーネルを実行して前記第１のタスクとは異なる第２のタスクの処理を実行する、請求項４記載の情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の演算器を同時に動作させて信号処理を行なう技術に関し、特に、共通のハードウェアを用いつつ様々な用途に使用することが可能な信号処理装置およびそれを含んだ情報処理システムに関する。
【背景技術】
【０００２】
近年、携帯端末機器の普及に伴い、音声や画像のような大量のデータを高速に処理するデジタル信号処理の重要性が高くなってきている。一般に、このようなデジタル信号処理には、専用の半導体装置としてＤＳＰ（Digital Signal Processor）が用いられることが多い。しかしながら、処理対象のデータが非常に多い場合には、専用ＤＳＰを用いたとしても性能を飛躍的に向上させることは難しい。たとえば、演算対象のデータが１万組ある場合には、１つ１つのデータに対する積和演算を１マシンサイクルで実行できたとしても、演算のために最低でも１万サイクルが必要になる。すなわち、１つ１つのデータに対する処理は高速であるが、データ処理が直列であるため、オーディオや画像などのようにデータ量が多くなると、それに比例して処理時間が長くなってしまう。
【０００３】
処理対象のデータが多い場合には、並列演算によって処理性能を向上させることが可能である。すなわち、演算器を複数個用意し、それらを同時に動作させることで複数のデータ処理を同時に行なうことが可能である。このとき、複数のデータに対して同じ演算を行なう場合には、ＳＩＭＤ（Single Instruction stream-Multiple Data stream）と呼ばれる方式を採用することにより、高い並列性を保ったまま演算器の面積を削減することが可能である。すなわち、データ処理器を複数用意するが、命令を解釈して処理を制御する制御部を共通にすることで、小さい面積で高い性能を発揮させることができる。
【０００４】
一方、プラットフォームに依存しないプログラミング言語として、Ｊａｖａ（登録商標）が広く知られている。Ｊａｖａ（登録商標）コンパイラは、Ｊａｖａ（登録商標）プログラムをコンパイルするときに特定のプロセッサのマシンコードを生成する代わりにバイトコードを生成する。そして、Ｊａｖａ（登録商標）プログラムを実行する場合には、バイトコード・インタプリタがＪａｖａ（登録商標）バイトコードをプロセッサのマシンコードに変換しながらＪａｖａ（登録商標）プログラムを実行する。これに関連する技術として、下記の特許文献１に開示された発明がある。
【０００５】
特許文献１に開示された発明は、ネィティブコードよりも抽象度の高い中間コード形式のプログラムを実行する中間コード実行システムであり、プロセッサと、プロセッサに接続されたメインメモリおよびメインメモリよりも高速な補助メモリと、中間コード形式のプログラムに含まれる命令の一部について実行を高速化するアクセラレータとを備える。
【０００６】
中間コード形式のプログラムに含まれる命令のうち、アクセラレータを利用することができない命令を実行するためのプログラムコードが補助メモリに格納されている。中間コード形式のプログラムを実行するにあたり、アクセラレータを利用することができる命令はアクセラレータを利用して実行し、アクセラレータを利用することができない命令はプログラムコードを利用してソフトウェア的に実行する。
【特許文献１】特開２００４−２８０７６６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上述のように、複数の演算器を並列に動作させることにより、ＤＳＰの処理速度を向上させることができる。しかしながら、ＤＳＰは特定の用途に特化して設計されることが多く、演算ビット幅や演算回路構成などが固定されているため他の用途に転用する場合には融通性がないことが多い。
【０００８】
また、特許文献１に開示された中間コード実行システムは、中間コード実行時におけるパフォーマンスを向上させることができるが、複数の演算器を並列に動作させて処理を行なうＤＳＰには適用することはできない。
【０００９】
本発明は、上記問題点を解決するためになされたものであり、その目的は、共通のハードウェアを用いつつ様々な用途に対応することが可能な信号処理装置およびそれを用いた情報処理システムを提供することである。
【課題を解決するための手段】
【００１０】
本発明の一実施例によれば、演算対象のデータを記憶するデータレジスタと、データレジスタに記憶されたデータを並列に演算可能な複数の演算器と、命令メモリに記憶されたプログラムに応じて複数の演算器による演算を制御するコントローラとを含んだ信号処理装置が提供される。命令メモリには、プログラムとして、信号処理プログラムマイクロコードと、拡張マイクロコードと、基本マイクロコードとが記憶される。コントローラは、ＣＰＵからの信号処理要求に応じてこれらのマイクロコードを実行することによって信号処理を行なう。
【発明の効果】
【００１１】
この実施例によれば、コントローラがＣＰＵからの信号処理要求に応じてマイクロコードを実行することにより、複数の演算器に演算を行なわせることができるため、マイクロコードを変更するだけで、共通のハードウェアを用いつつ様々な用途に対応することが可能となる。
【発明を実施するための最良の形態】
【００１２】
（第１の実施の形態）
図１は、本発明の第１の実施の形態における信号処理装置を含んだ情報処理システムの概略構成を示すブロック図である。この情報処理システムは、信号処理装置１と、ＣＰＵ（Central Processing Unit）２と、メモリ３と、メモリコントローラ４と、ＤＭＡＣ（Direct Memory Access Controller）５とを含み、これらがバス６を介して接続される。
【００１３】
メモリ３は、ＣＰＵ２によって実行されるプログラムや、プログラムの実行の際に参照されるデータなどを記憶する。メモリコントローラ４は、ＣＰＵ１およびＤＭＡＣ５からの要求に応じてメモリ３に対する命令コードおよびデータの読出し／書込みを行なう。
【００１４】
ＣＰＵ１は、メモリコントローラ４を介してメモリ３から命令コードをフェッチして実行することにより、情報処理システム全体の制御を行なう。
【００１５】
ＤＭＡＣ５は、ＣＰＵ２からのＤＭＡ転送要求に応じて情報処理システム内のＤＭＡ転送を制御する。たとえば、ＤＭＡＣ５は、メモリ３と信号処理装置１内の命令メモリ１４との間のＤＭＡ転送を実行する。
【００１６】
信号処理装置１は、ｍ個の演算器１１−１〜１１−ｍと、データレジスタ１２と、コントローラ１３と、バスインタフェース１５とを含む。また、コントローラ１３は、命令メモリ１４を含む。
【００１７】
データレジスタ１２は、たとえばメディアデータをサンプリングされたデータの配列として記憶する。演算器１１−１〜１１−ｍのそれぞれは、データレジスタ１２に記憶された配列データの各要素に対して演算を行うことにより並列に処理を行なう。なお、演算器１１−１〜１１−ｍおよびデータレジスタ１２の動作の詳細は後述する。
【００１８】
バスインタフェース１５は、バス６を介してデータの入出力を行なう。バスインタフェース１５は、バス６を介して信号処理要求を受けると、その信号処理要求をコントローラ１３に出力する。また、バスインタフェース１５は、コントローラ１３から信号処理結果を受けると、その信号処理結果をバス６を介して出力する。
【００１９】
コントローラ１３は、バスインタフェース１５から信号処理要求を受けると、命令メモリ１４に格納されたマイクロコードに対応する演算を順次演算器１１−１〜１１−ｍに行なわせ、信号処理要求に対応した信号処理を行なわせる。そして、コントローラ１３は、信号処理結果をバスインタフェース１５に出力する。
【００２０】
図２は、１つの演算器のみによって演算処理を行なう場合の問題点を説明するための図である。データレジスタ１２は、配列要素数がＭ、データビット幅がｎのレジスタで構成されており、メディアデータとしてサンプリングされたデータの配列を記憶する。
【００２１】
演算器１１は、配列データの各要素を１つずつ順番にロードして演算を行ない、演算結果をストアすることにより配列データの処理を行なう。演算器１１は、積和演算を１マシンサイクルで実行することが可能であるとしても、配列データの数に比例したサイクル数が必要になる。そのため、オーディオや画像などの膨大な数のデータを処理するために必要な時間は、データ量に比例して膨大となる。
【００２２】
また、積和演算などの演算処理を１マシンサイクルで行なうためには、そのハードウェア量もかなりの量となる。また、図２に示す構成で高速処理を実現するためには、動作周波数を高くしなければならず、消費電力も増大する。そのため、本実施の形態における信号処理装置１は、複数の演算器を並列に動作させる構成を採用する。
【００２３】
図３は、本発明の第１の実施の形態における信号処理装置１における演算器およびデータレジスタの構成例を示す図である。データレジスタ１２は、図２に示すのと同様に、配列要素数がＭ、データビット幅がｎのレジスタで構成されており、メディアデータとしてサンプリングされたデータの配列を記憶する。
【００２４】
演算器１１−１〜１１−ｍは、データレジスタ１２の配列要素数Ｍに対応して設けられており、Ｍ個の要素の処理を並列に行なう。全体のハードウェア規模を抑えるためには、各演算器の回路規模を小さくし、並列度を上げることで全体の処理性能を向上させることができる。
【００２５】
図４は、本発明の第１の実施の形態における信号処理装置をハードウェアとソフトウェアとに分けて説明するための図である。信号処理プログラム（アプリケーションプログラム）マイクロコード２１、拡張マイクロコード２２および基本マイクロコード２３は、信号処理装置１内の命令メモリ１４にソフトウェアとして格納される。
【００２６】
従来のプロセッサにおいては、ＡＰＩ（Application Programming Interface）がハードウェアとして配置される。本実施の形態においては、ＡＰＩを拡張マイクロコード２２および基本マイクロコード２３の上位に配置し、ユーザ向け機能をハードウェアとソフトウェアとを協調させて動作させることにより実現する。
【００２７】
信号処理プログラムマイクロコード２１、拡張マイクロコード２２および基本マイクロコード２３は階層化されており、後述するアプリケーションプログラムから各マイクロコード層を呼出すことが可能であり、また上位のマイクロコード層から下位のマイクロコード層を呼出すことも可能である。
【００２８】
信号処理プログラムマイクロコード２１は、アプリケーション毎に用意されるマイクロコードであり、ＣＰＵ２から処理要求を受けると、処理要求に対応したマイクロコードを生成し、拡張マイクロコード２２または基本マイクロコード２３を呼出す。
【００２９】
拡張マイクロコード２２は、ＦＦＴ（Fast Fourier Transform）、ＤＣＴ（Discrete Cosine Transform）、三角関数、平方根などの信号処理のモジュールによって構成され、ＣＰＵ２からの処理要求または信号処理プログラムマイクロコード２１からの呼出しを受けると、それに対応したマイクロコードを生成し、基本マイクロコード２３を呼出す。
【００３０】
基本マイクロコード２３は、整数や浮動小数点の四則演算、初期関数などの信号処理のモジュールによって構成され、ＣＰＵ２からの処理要求、信号処理プログラムマイクロコード２１または拡張マイクロコード２２からの呼出しを受けると、それに対応した命令コードを生成して順次信号処理装置ハードウェア１内の演算器１１−１〜１１−ｍに出力する。
【００３１】
図５は、本発明の第１の実施の形態における信号処理装置を含んだ情報処理システム全体をハードウェアとソフトウェアとに分けて説明するための図である。アプリケーションプログラム３１および通信ライブラリ３２は、ソフトウェアとしてメモリ３に格納されており、ＣＰＵ２がこれらを実行することにより所望の機能を実現する。
【００３２】
通信ライブラリ３２は、アプリケーションプログラム３１と信号処理装置１との間でデータ通信を行なう機能を有している。信号処理装置１に信号処理を行なわれせる場合、アプリケーションプログラム３１は、通信ライブラリ３２を介して信号処理要求を信号処理装置１に発行する。
【００３３】
なお、信号処理プログラムマイクロコード２１、拡張マイクロコード２２および基本マイクロコード２３は、信号処理装置ハードウェア１上で動作するが、その動作は図４を用いて説明したものと同様である。
【００３４】
図６は、本発明の第１の実施の形態における情報処理システムの処理の流れを模式的に示す図である。ＣＰＵ２がアプリケーションプログラム３１を実行しているときに、信号処理装置の処理コード呼出しがあれば、その信号処理要求を通信ライブラリ３２を介して発行する。
【００３５】
信号処理装置ハードウェア１内のコントローラ１３は、バスインタフェース１５を介して信号処理要求を受けると、その信号処理要求に対応するマイクロコードを呼出して信号処理を行なう。そして、コントローラ１３は信号処理が終了すると、バスインタフェース１５を介して完了通知を通信ライブラリ３２に発行する。
【００３６】
図７は、本発明の第１の実施の形態における情報処理システムの処理の流れをさらに詳細に説明するための図である。まず、ＣＰＵ２がアプリケーションプログラム３１を実行中に信号処理を検出すると、信号処理要求を通信ライブラリ３２に発行する（Ｓ１１）。このとき、アプリケーションプログラム３１は、信号処理装置１からの完了通知待ちとなる。
【００３７】
通信ライブラリ３２は、アプリケーションプログラム３１から信号処理要求を受けると、その信号処理要求を信号処理装置１に送信する（Ｓ１２）。このとき、通信ライブラリ３２は、信号処理装置１からの完了通知待ちとなる。
【００３８】
信号処理装置１内のコントローラ１３は、バスインタフェース１５を介して信号処理要求を受けると、信号処理プログラムマイクロコード２１、拡張マイクロコード２２または基本マイクロコード２３を呼出すことにより信号処理要求に対応した信号処理を行なう（Ｓ１３）。上述のように、マイクロコードは命令コードを生成して演算器１１−１〜１１−ｍに出力することにより、信号処理要求に対応した信号処理を行なう。
【００３９】
コントローラ１３は、信号処理要求に対応した信号処理を完了すると、バスインタフェース１５を介して完了通知を発行し、次の信号処理要求待ちとなる（Ｓ１４）。通信ライブラリ３２は、信号処理装置１から完了通知を受けると、アプリケーションプログラム３１に完了通知を発行する。そして、アプリケーションプログラム３１は通信ライブラリ３２から完了通知を受けると、信号処理に引き続く処理を再開する。
【００４０】
図８は、各マイクロコードの処理の一例を具体的に説明するための図である。信号処理要求“ｃｌｒＣ（）；”、“ａｄｄ（ａ，ｂ，ｃ）；”および“ｍｕｌ（ａ，ｂ，ｃ，ｄ）；”は、基本マイクロコード２３に定義されており、コントローラ１３がこれらの信号処理要求を受けると、基本マイクロコード２３を呼出す。基本マイクロコード２３は、信号処理要求に対応した命令コードを生成して、演算器１１−１〜１１−ｍに出力する。
【００４１】
信号処理要求“ｓｏｒｔ（ａｒｇｓ）；”は、拡張マイクロコード２２に定義されており、コントローラ１３がこの信号処理要求を受けると、拡張マイクロコード２２を呼出す。拡張マイクロコード２２において、この信号処理要求“ｓｏｒｔ（ａｒｇｓ）；”がさらに“ｃｌｒＣ（）；”、“ａｄｄ（）；”などのマイクロコードで定義されているため、基本マイクロコード２３を呼出して処理を行なうことになる。
【００４２】
信号処理要求“ＡＰＬＸ（ａｒｇｓ）；”は、信号処理プログラムマイクロコード２１に定義されており、コントローラ１３がこの信号処理要求を受けると、信号処理プログラムマイクロコード２１を呼出す。信号処理プログラムマイクロコード２１において、この信号処理要求“ＡＰＬＸ（ａｒｇｓ）；”がさらに“ａｄｄ（）；”、“ｓｏｒｔ（）；”，“ｆｉｌｔｅｒＸ（）”などのマイクロコードで定義されているため、拡張マイクロコード２２および基本マイクロコード２３を呼出して処理を行なうことになる。
【００４３】
以上説明したように、本実施の形態における信号処理装置１によれば、ソフトウェアで定義した拡張マイクロコード２２および基本マイクロコード２３をＡＰＩの下位に配置し、ソフトウェアで定義した信号処理プログラムマイクロコード２１をＡＰＩの上位に配置した。そして、アプリケーションプログラム３１からの信号処理要求に応じて、これらのマイクロコードを呼出すようにしたので、共通の信号処理装置ハードウェアを用いつつ、ソフトウェアであるマクロコードを変更するだけで様々な用途に対応することが可能となった。
【００４４】
また、ＡＰＩを拡張マイクロコード２２および基本マイクロコード２３の上位に配置するようにしたので、信号処理装置１のマイクロコードおよびハードウェア仕様を隠蔽することが可能となった。
【００４５】
（第２の実施の形態）
本発明の第２の実施の形態における情報処理システムの構成は、図１に示す第１の実施の形態における情報処理システムの構成と同様である。したがって、重複する構成および機能の詳細な説明は繰返さない。
【００４６】
図９は、本発明の第２の実施の形態における情報処理システムをハードウェアとソフトウェアとに分けて説明するための図である。図５に示す第１の実施の形態における情報処理システムと比較して、マルチタスクカーネル４１が追加されている点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
【００４７】
マルチタスクカーネル４１は、タスクスイッチを適宜切替えることにより、ＣＰＵ２上で複数のタスクを動作させることを可能にする。
【００４８】
図１０は、シングルタスクの場合の処理の一例を示す図である。ＣＰＵ２がアプリケーションプログラム３１を実行しているときに、信号処理装置の処理コード呼出しがあれば、その信号処理要求を信号処理装置１に発行する（Ｓ２１）。
【００４９】
信号処理装置１は、ＣＰＵ２から信号処理要求を受けると、その信号処理要求に対応するマイクロコードを呼出して信号処理を行なう（Ｓ２２）。そして、信号処理装置１は信号処理が終了すると、ＣＰＵ１に対して完了通知を発行する（Ｓ２３）。図１０に示すように、シングルタスクの場合には、ＣＰＵ２が信号処理要求を発行してから完了通知を受けるまでの間遊び時間が発生することになる。
【００５０】
図１１は、マルチタスクの場合の処理の一例を示す図である。アプリケーションプログラム３１は、２つのタスク（タスクＡ、タスクＢ）によって処理が進められる。まず、ＣＰＵ２がタスクＡ４３の処理を行なっているときに、信号処理装置の処理コード呼出しがあれば、その信号処理要求を信号処理装置１に発行する（Ｓ２１）。
【００５１】
信号処理装置１は、ＣＰＵ２から信号処理要求を受けると、その信号処理要求に対応するマイクロコードを呼出して信号処理を行なう（Ｓ２２）。そして、信号処理装置１は信号処理が終了すると、ＣＰＵ１に対して完了通知を発行する（Ｓ２３）。図１１に示すように、マルチタスクの場合には、ＣＰＵ２が信号処理要求を発行してから完了通知を受けるまでの間、別のタスクＸ４２の処理（Ｓ２４、Ｓ２５）を行なうことができる。
【００５２】
図１２は、本発明の第２の実施の形態における情報処理システムの概略構成の他の一例を示すブロック図である。図１に示す情報処理システムと比較して、バス６に別の信号処理装置１’が接続される点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
【００５３】
図１３は、図１２に示す情報処理システムをハードウェアとソフトウェアとに分けて説明するための図である。図９に示す情報処理システムと比較して、ＣＰＵ２上で２つの通信ライブラリ３２ａおよび３２ｂが動作する点と、信号処理装置ハードウェアＢ（１’）上で信号処理プログラム２１’、拡張マイクロコード２２’および基本マイクロコード２３’が動作する点とが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
【００５４】
図１４は、マルチタスクの場合の処理の他の一例を示す図である。図１４においては、アプリケーションプログラム３１は、３つのタスク（タスクＡ、タスクＢ、タスクＸ）によって処理が進められる。また、タスクＡ４３が、図１３に示す通信ライブラリ３２ａを介して信号処理装置Ａに信号処理要求を発行し、タスクＢ４４が、図１３に示す通信ライブラリ３２ｂを介して信号処理装置Ｂに信号処理要求を発行する。
【００５５】
まず、ＣＰＵ２がタスクＡ４３の処理を行なっているときに、信号処理装置Ａの処理コード呼出しがあれば、その信号処理要求を信号処理装置Ａに発行する（Ｓ３１）。このとき、ＣＰＵ２はタスクスイッチを切替えて別のタスクＢ４４の処理を開始する。
【００５６】
信号処理装置Ａは、ＣＰＵ２から信号処理要求を受けると、その信号処理要求に対応するマイクロコードを呼出して信号処理を行なう（Ｓ３２）。ＣＰＵ２がタスクＢ４４の処理を行なっているときに、信号処理装置Ｂの処理コード呼出しがあれば、その信号処理要求を信号処理装置Ｂに発行する（Ｓ３３）。
【００５７】
信号処理装置Ｂは、ＣＰＵ２から信号処理要求を受けると、その信号処理要求に対応するマイクロコードを呼出して信号処理を行なう（Ｓ３４）。そして、信号処理装置Ａは信号処理が終了すると、ＣＰＵ２に対して完了通知を発行する（Ｓ３５）。また、信号処理装置Ｂは信号処理が終了すると、ＣＰＵ２に対して完了通知を発行する（Ｓ３６）。
【００５８】
図１４に示すように、タスクＡ４３の処理およびタスクＢ４４の処理のいずれも完了通知待ちであれば、別のタスクＸ４２の処理（Ｓ３７）を行なうことができる。
【００５９】
以上説明したように、本実施の形態における情報処理システムによれば、ＣＰＵ２が信号処理要求を発行してから完了通知を受けるまでの間、別のタスクの処理を行なうことができるので、ＣＰＵ２の待ち時間がなくなり、処理の高速化を図ることが可能となった。
【００６０】
また、マルチタスクと複数の信号処理装置とを組合わせることにより、複数の信号処理要求を効率よく処理することが可能となった。
【００６１】
（第３の実施の形態）
本発明の第３の実施の形態における情報処理システムの構成は、図１に示す第１の実施の形態における情報処理システムから信号処理装置１を削除した点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
【００６２】
図１５は、本発明の第３の実施の形態における情報処理システムをハードウェアとソフトウェアとに分けて説明するための図である。図５に示す第１の実施の形態における情報処理システムと比較して、信号処理装置１のハードウェアおよびソフトウェアの機能がエミュレーションライブラリ５１によって実現される点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
【００６３】
図１６は、本発明の第３の実施の形態における情報処理システムの処理の流れを模式的に示す図である。ＣＰＵ２がアプリケーションプログラム３１を実行しているときに、信号処理装置の処理コード呼出しがあれば、その信号処理要求をエミュレーションライブラリ５１に対して発行する。
【００６４】
エミュレーションライブラリ５１は、信号処理プログラムマイクロコード２１、拡張マイクロコード２２および基本マイクロコード２３の機能をエミュレートする機能を有しており、信号処理要求を受けると、その信号処理要求に対応する処理をエミュレートする。そして、信号処理が終了すれば、その完了通知をアプリケーションプログラム３１に対して発行する。
【００６５】
図１７は、本発明の第３の実施の形態における情報処理システムの処理の流れをさらに詳細に説明するための図である。まず、ＣＰＵ２がアプリケーションプログラム３１を実行中に信号処理を検出すると、信号処理要求をエミュレーションライブラリ５１に発行する（Ｓ４１）。このとき、アプリケーションプログラム３１は、エミュレーションライブラリ５１からの完了通知待ちとなる。
【００６６】
エミュレーションライブラリ５１は、アプリケーションプログラム３１から信号処理要求を受けると、信号処理マイクロコード２１、拡張マイクロコード２２および基本マイクロコード２３の機能をエミュレートすることにより信号処理要求に対応した信号処理を行なう（Ｓ４２）。
【００６７】
エミュレーションライブラリ５１は、信号処理要求に対応した信号処理を完了すると、完了通知をアプリケーションプログラム３１に発行する。アプリケーションプログラム３１はエミュレーションライブラリ５１から完了通知を受けると、信号処理に引き続く処理を再開する。
【００６８】
図１８は、本発明の第３の実施の形態における情報処理システムの他の一例をハードウェアとソフトウェアとに分けて説明するための図である。図１５と比較して、マルチタスクカーネル４１が追加されている点と、ＣＰＵ２上で動作するエミュレーションライブラリＡ（５１ａ）が、信号処理装置ハードウェアＡ１上で動作する信号処理プログラムマイクロコード２１、拡張マイクロコード２２および基本マイクロコード２３に対応する処理をエミュレートし、ＣＰＵ２上で動作するエミュレーションライブラリＢ（５１ｂ）が、信号処理装置ハードウェアＢ１’上で動作する信号処理プログラムマイクロコード２１’、拡張マイクロコード２２’および基本マイクロコード２３’に対応する処理をエミュレートする点のみが異なる。
【００６９】
マルチタスクカーネル４１は、タスクスイッチを適宜切替えることにより、ＣＰＵ２上で複数のエミュレーションライブラリを動作させることを可能にする。
【００７０】
以上説明したように、本実施の形態における情報処理システムによれば、エミュレーションライブラリ５１が信号処理マイクロコード２１、拡張マイクロコード２２および基本マイクロコード２３の機能をエミュレートするようにしたので、信号処理装置１を実際にシステムに接続しなくても、ＣＰＵ２のみでアプリケーションプログラム３１を動作させることが可能となった。
【００７１】
また、ＣＰＵ２のデバッグ環境で信号処理装置１における信号処理の動作をデバッグしたり、トレースしたりすることが可能となった。これによって、アプリケーションプログラム３１の詳細なデバッグが可能となった。
【００７２】
また、複数のエミュレーションライブラリとマルチタスクとを組合わせることにより、図１１に示すマルチタスク動作や図１４に示す複数の信号処理装置の動作をエミュレートすることが可能となった。
【００７３】
（第４の実施の形態）
図１９は、本発明の第４の実施の形態における情報処理システムをハードウェアとソフトウェアとに分けて説明するための図である。本発明の第４の実施の形態における情報処理システムにおいては、ワークステーション、ＰＣ（Personal Computer）などの汎用コンピュータ６２のハードウェア上で、アプリケーションプログラム３１およびシミュレーションライブラリ６１を動作させるものである。
【００７４】
シミュレーションライブラリ６１は、図１５に示すエミュレーションライブラリ５１と同等の機能を有しており、ホストコンピュータ６２のハードウェア上で動作するようプログラミングされている。
【００７５】
ホストコンピュータ６２がアプリケーションプログラム３１を実行しているときに、信号処理装置の処理コード呼出しがあれば、その信号処理要求をシミュレーションライブラリ６１に対して発行する。
【００７６】
シミュレーションライブラリ６１は、信号処理プログラムマイクロコード２１、拡張マイクロコード２２および基本マイクロコード２３の機能をシミュレートする機能を有しており、信号処理要求を受けると、その信号処理要求に対応する処理をシミュレートする。そして、信号処理が終了すれば、その完了通知をアプリケーションプログラム３１に対して発行する。
【００７７】
図２０は、本発明の第４の実施の形態における情報処理システムの処理の流れをさらに詳細に説明するための図である。まず、ホストコンピュータ６２上のＣＰＵがアプリケーションプログラム３１を実行中に信号処理を検出すると、信号処理要求をシミュレーションライブラリ６１に発行する（Ｓ５１）。このとき、アプリケーションプログラム３１は、シミュレーションライブラリ６１からの完了通知待ちとなる。
【００７８】
シミュレーションライブラリ６１は、アプリケーションプログラム３１から信号処理要求を受けると、信号処理マイクロコード２１、拡張マイクロコード２２および基本マイクロコード２３の機能と同様の動作を行なうことにより信号処理要求に対応した信号処理を行なう（Ｓ５２）。
【００７９】
シミュレーションライブラリ６１は、信号処理要求に対応した信号処理を完了すると、完了通知をアプリケーションプログラム３１に発行する。アプリケーションプログラム３１はシミュレーションライブラリ６１から完了通知を受けると、信号処理に引き続く処理を再開する。
【００８０】
図２１は、本発明の第４の実施の形態における情報処理システムの他の一例をハードウェアとソフトウェアとに分けて説明するための図である。シミュレーションライブラリＡ（６１ａ）は、ＣＰＵ２上で動作する通信ライブラリ３２ａの動作と、信号処理装置ハードウェアＡ１上で動作する信号処理プログラムマイクロコード２１、拡張マイクロコード２２および基本マイクロコード２３の動作とをシミュレートする。
【００８１】
シミュレーションライブラリＢ（６１ｂ）は、ＣＰＵ２上で動作する通信ライブラリ３２ｂの動作と、信号処理装置ハードウェアＢ１’上で動作する信号処理プログラムマイクロコード２１’、拡張マイクロコード２２’および基本マイクロコード２３’の動作とをシミュレートする。
【００８２】
マルチスレッドマネージャ６３は、シミュレーションライブラリＡ（６１ａ）が動作するスレッドとシミュレーションライブラリＢ（６１ｂ）が動作するスレッドとの管理を行ない、スレッドを適宜切替えることによりマルチタスクカーネル４１と同等の機能を実現する。
【００８３】
以上説明したように、本実施の形態における情報処理システムによれば、ホストコンピュータ６２上でアプリケーションプログラム３１およびシミュレーションライブラリ６１を動作させるようにしたので、ユーザはホストコンピュータ６２上でアプリケーションプログラム３１のシミュレーションを行なうことが可能となった。
【００８４】
また、複数のシミュレーションライブラリとマルチスレッドマネージャとを組合わせることにより、図１１に示すマルチタスク動作や図１４に示す複数の信号処理装置の動作をシミュレートすることが可能となった。
【００８５】
（第５の実施の形態）
図２２は、本発明の第５の実施の形態における情報処理システムの構成例を示すブロック図である。この情報処理システムは、信号処理装置用基本ツール７と、信号処理プログラムソース７１と、命令・機能定義ファイル７２とを含む。
【００８６】
信号処理プログラムソース７１は、信号処理プログラムマイクロコード２１のソースプログラムであり、図１９に示すホストコンピュータ６２と同様のコンピュータ上で作成される。
【００８７】
信号処理装置用基本ツール７は、機能シミュレータ７３と、コード生成部７４と、アセンブラ７５と、命令シミュレータ７６とを含む。この信号処理装置用基本ツール７は、図１９に示すホストコンピュータ６２と同様のコンピュータ上で動作する。
【００８８】
機能シミュレータ７３は、図１５に示すエミュレーションライブラリ５１と同様の機能を有しており、命令・機能定義ファイル７２を参照しながら信号処理のシミュレーションを行なう。
【００８９】
コード生成部７４は、信号処理プログラムソース７１から信号処理装置１用の命令コードを生成する。アセンブラ７５は、コード生成部７４によって生成された命令コードから信号処理装置１上で実行可能なマシンコードを生成する。
【００９０】
命令シミュレータ７６は、信号処理装置１上で動作するプログラムのデバッガの機能を有している。
【００９１】
図２３は、本発明の第５の実施の形態の情報処理システムにおける信号処理プログラムの開発手順を説明するための図である。まず、ユーザは、作成した信号処理プログラムソース７１を機能シミュレータ７３と協調させて動作させることにより、信号処理プログラムソース７１のデバッグ作業を行なう。信号処理プログラムソース７１のデバッグ後、信号処理プログラムソース７１を改訂して、再度機能シミュレータ７３によるデバッグ作業が行なわれる。
【００９２】
信号処理プログラムソース７１のデバッグ作業が終了すると、ユーザは、コード生成部７４を用いて信号処理プログラムソース７１から命令コードを生成する。そして、ユーザは、アセンブラ７５を用いて、コード生成部７４によって生成された命令コードをマシンコードに変換することにより、信号処理プログラムオブジェクト７７を生成する。
【００９３】
次に、ユーザは、命令シミュレータ７６を用いることにより、信号処理プログラムオブジェクト７７のデバッグ作業を行なう。信号処理プログラムオブジェクト７７のデバッグ後、信号処理プログラムソース７１を改訂して、再度機能シミュレータ７３によるデバッグ以降の処理を行なう。
【００９４】
信号処理プログラムオブジェクト７７のデバッグ作業が終了すると、ユーザは、その信号処理プログラムオブジェクト７７を信号処理プログラムマイクロコード２１として信号処理装置１内の命令メモリ１４に格納する。
【００９５】
図２４は、本発明の第５の実施の形態の情報処理システムにおける信号処理装置用基本ツール７の動作を説明するための図である。ユーザは、拡張マイクロコード２２および基本マイクロコード２３を、ホストコンピュータ６２上でアプリケーションプログラム３１と協調して動作するように変更して、命令・機能定義ファイル７２に格納する。
【００９６】
機能シミュレータ７３は、命令・機能定義ファイル７２を参照しながら、拡張マイクロコード２２および基本マイクロコード２３の機能をエミュレートし、信号処理プログラムソース７１のデバッグが行なわれる。
【００９７】
なお、命令・機能定義ファイル７２には、コード生成部７４が命令コードを生成する際に参照する情報、アセンブラ７５がマシンコードを生成する際に参照する情報、および命令シミュレータ７６が命令コードをシミュレートする際に参照する情報が格納される。
【００９８】
以上説明したように、本実施の形態における情報処理システムによれば、ホストコンピュータ上で動作する信号処理装置用基本ツール７を設けるようにしたので、ユーザは信号処理装置プログラムソース７１のデバッグ作業が容易に行なえるようになった。
【００９９】
また、ＡＰＩ（拡張マイクロコード２２、基本マイクロコード２３）の変更に応じて、命令・機能定義ファイル７２を更新するようにしたので、ＡＰＩの変更に応じて信号処理装置用基本ツール７を容易に再構成することが可能となった。
【０１００】
（第６の実施に形態）
図２５は、本発明の第６の実施の形態における情報処理システムの構成例を示すブロック図である。この信号処理システムは、信号処理装置用高位ツール８を含む。
【０１０１】
信号処理装置用ツール８は、Ｃ言語記述ファイル８１と、並列Ｃコンパイラ８２と、データフローグラフファイル８３と、データフローコンパイラ８４と、信号処理記述ファイル８５と、信号処理コンパイラ８６とを含む。
【０１０２】
Ｃ言語記述ファイル８１は、ユーザによって作成されたＣ言語のプログラムが格納されるファイルである。並列Ｃコンパイラ８２は、Ｃ言語記述ファイル８１に格納されたプログラムをコンパイルして、信号処理装置１内の複数の演算器１１−１〜１１−ｍに並列に実行させるように命令コードを生成する。
【０１０３】
データフローグラフファイル８３は、ユーザによって作成されたデータフローグラフを格納する。データフローコンパイラ８４は、データフローグラフファイル８３に格納されたデータフローグラフをコンパイルして、信号処理装置１内の複数の演算器１１−１〜１１−ｍに並列に実行させるように命令コードを生成する。
【０１０４】
信号処理記述ファイル８５は、ユーザによって作成された信号処理記述、たとえば信号処理専用言語であるＭＡＴＬＡＢなどで記述されたプログラムが格納されるファイルである。信号処理コンパイラ８６は、信号処理記述ファイル８５に格納されたプログラムをコンパイルして、信号処理装置１内の複数の演算器１１−１〜１１−ｍに並列に実行させるように命令コードを生成する。
【０１０５】
並列Ｃコンパイラ８２、データフローコンパイラ８４または信号処理コンパイラ８６によってコンパイルされたプログラムは、図２２に示す信号処理装置用基本ツール７によってデバッグ作業が行なわれる。
【０１０６】
以上説明したように、本実施の形態における情報処理システムによれば、高級言語で作成されたプログラムを信号処理装置用高位ツール８でコンパイルし、信号処理装置用基本ツール７でデバッグ可能な形式のプログラムを生成するようにしたので、ユーザは信号処理プログラムソース７１を容易に生成することが可能となった。
【０１０７】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【０１０８】
【図１】本発明の第１の実施の形態における信号処理装置を含んだ情報処理システムの概略構成を示すブロック図である。
【図２】１つの演算器のみによって演算処理を行なう場合の問題点を説明するための図である。
【図３】本発明の第１の実施の形態における信号処理装置１における演算器およびデータレジスタの構成例を示す図である。
【図４】本発明の第１の実施の形態における信号処理装置をハードウェアとソフトウェアとに分けて説明するための図である。
【図５】本発明の第１の実施の形態における信号処理装置を含んだ情報処理システム全体をハードウェアとソフトウェアとに分けて説明するための図である。
【図６】本発明の第１の実施の形態における情報処理システムの処理の流れを模式的に示す図である。
【図７】本発明の第１の実施の形態における情報処理システムの処理の流れをさらに詳細に説明するための図である。
【図８】各マイクロコードの処理の一例を具体的に説明するための図である。
【図９】本発明の第２の実施の形態における情報処理システムをハードウェアとソフトウェアとに分けて説明するための図である。
【図１０】シングルタスクの場合の処理の一例を示す図である。
【図１１】マルチタスクの場合の処理の一例を示す図である。
【図１２】本発明の第２の実施の形態における情報処理システムの概略構成の他の一例を示すブロック図である。
【図１３】図１２に示す情報処理システムをハードウェアとソフトウェアとに分けて説明するための図である。
【図１４】マルチタスクの場合の処理の他の一例を示す図である。
【図１５】本発明の第３の実施の形態における情報処理システムをハードウェアとソフトウェアとに分けて説明するための図である。
【図１６】本発明の第３の実施の形態における情報処理システムの処理の流れを模式的に示す図である。
【図１７】本発明の第３の実施の形態における情報処理システムの処理の流れをさらに詳細に説明するための図である。
【図１８】本発明の第３の実施の形態における情報処理システムの他の一例をハードウェアとソフトウェアとに分けて説明するための図である。
【図１９】本発明の第４の実施の形態における情報処理システムをハードウェアとソフトウェアとに分けて説明するための図である。
【図２０】本発明の第４の実施の形態における情報処理システムの処理の流れをさらに詳細に説明するための図である。
【図２１】本発明の第４の実施の形態における情報処理システムの他の一例をハードウェアとソフトウェアとに分けて説明するための図である。
【図２２】本発明の第５の実施の形態における情報処理システムの構成例を示すブロック図である。
【図２３】本発明の第５の実施の形態の情報処理システムにおける信号処理プログラムの開発手順を説明するための図である。
【図２４】本発明の第５の実施の形態の情報処理システムにおける信号処理装置用基本ツール７の動作を説明するための図である。
【図２５】本発明の第６の実施の形態における情報処理システムの構成例を示すブロック図である。
【符号の説明】
【０１０９】
１  信号処理装置、２  ＣＰＵ、３  メモリ、４  メモリコントローラ、５  ＤＭＡＣ、６  バス、７  信号処理装置用基本ツール、８  信号処理装置用高位ツール、１１−１〜１１−ｍ  演算器、１２  データレジスタ、１３  コントローラ、１４  命令メモリ、１５  バスインタフェース、２１  信号処理プログラムマイクロコード、２２  拡張マイクロコード、２３  基本マイクロコード、３１  アプリケーションプログラム、３２  通信ライブラリ、４１  マルチタスクカーネル、４２〜４４  タスク、５１  エミュレーションライブラリ、６１  シミュレーションライブラリ、６２  ホストコンピュータ、６３  マルチスレッドマネージャ、７１  信号処理プログラムソース、７２  命令・機能定義ファイル、７３  機能シミュレータ、７４  コード生成部、７５  アセンブラ、７６  命令シミュレータ、７７  信号処理プログラムオブジェクト、８１  Ｃ言語記述ファイル、８２  並列Ｃコンパイラ、８３  データフローグラフファイル、８４  データフローコンパイラ、８５  信号処理記述ファイル、８６  信号処理コンパイラ。
【図１】
2008305015.tif 000003
【図２】
2008305015.tif 000004
【図３】
2008305015.tif 000005
【図４】
2008305015.tif 000006
【図５】
2008305015.tif 000007
【図６】
2008305015.tif 000008
【図７】
2008305015.tif 000009
【図８】
2008305015.tif 000010
【図９】
2008305015.tif 000011
【図１０】
2008305015.tif 000012
【図１１】
2008305015.tif 000013
【図１２】
2008305015.tif 000014
【図１３】
2008305015.tif 000015
【図１４】
2008305015.tif 000016
【図１５】
2008305015.tif 000017
【図１６】
2008305015.tif 000018
【図１７】
2008305015.tif 000019
【図１８】
2008305015.tif 000020
【図１９】
2008305015.tif 000021
【図２０】
2008305015.tif 000022
【図２１】
2008305015.tif 000023
【図２２】
2008305015.tif 000024
【図２３】
2008305015.tif 000025
【図２４】
2008305015.tif 000026
【図２５】
2008305015.tif 000027