(57)【要約】【課題】ソフトウェアパイプラインを用いて演算処理の効率性を高めるように基本演算（primitive operation）およびユーザ定義の拡張演算（user defined extended operation）が処理できるシステムおよび方法を提供する。【解決手段】コンピュータプログラムの演算（operation）を処理する演算処理システムにおいて、基本演算（primitive operation）を処理する複数の機能ユニット（ＦＵ、functional unit）と、機能ユニットの制御によって拡張演算（extended operation）を処理するプロセッサ（processor）とを含む。【選択図】図３
2008077625.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータプログラムの演算を処理する演算処理システムにおいて、
基本演算を処理する複数の機能ユニットと、
前記機能ユニットの制御によって拡張演算を処理するプロセッサと、
を含むことを特徴とする演算処理システム。
【請求項２】
前記機能ユニットは、
前記演算が前記基本演算である場合には前記基本演算を直接処理し、前記演算が前記拡張演算である場合には前記プロセッサで前記拡張演算を処理するように制御することを特徴とする請求項１に記載の演算処理システム。
【請求項３】
前記機能ユニットは、
前記演算が拡張演算である場合、前記演算の入力値をレジスタファイルに格納し、前記プロセッサにエクセプションを発生させて前記演算を処理するようにすることを特徴とする請求項１に記載の演算処理システム。
【請求項４】
前記機能ユニットは、
前記演算の種類を示す演算番号を前記プロセッサに伝送することを特徴とする請求項３に記載の演算処理システム。
【請求項５】
演算の種類を示す演算番号を、前記演算番号に対応する演算を処理するためのプログラムコードと対応させて格納する記録装置をさらに含み、
前記プロセッサは、
前記記録装置を参照して前記演算番号に対応するプログラムコードを実行して前記演算を処理することを特徴とする請求項４に記載の演算処理システム。
【請求項６】
前記プロセッサは、前記演算に対する処理結果を前記レジスタファイルに格納し、
前記機能ユニットは、前記レジスタファイルから前記処理結果を受信することを特徴とする請求項３に記載の演算処理システム。
【請求項７】
前記機能ユニットは、
前記受信した処理結果を前記演算に対する結果値として返送することを特徴とする請求項６に記載の演算処理システム。
【請求項８】
前記複数の機能ユニットは、再構成アレイを構成することを特徴とする請求項１に記載の演算処理システム。
【請求項９】
前記複数の機能ユニットは、複数の前記基本演算を処理すると同時に、前記拡張演算を前記プロセッサで処理するように制御することを特徴とする請求項１に記載の演算処理システム。
【請求項１０】
拡張演算に対する追加要請を受信し、前記プロセッサで前記追加要請に対応する拡張演算が処理できるように設定する拡張演算追加部をさらに含むことを特徴とする請求項１に記載の演算処理システム。
【請求項１１】
前記追加要請は、
前記プロセッサで前記拡張演算を処理するためのプログラムコードを含むことを特徴とする請求項１０に記載の演算処理システム。
【請求項１２】
前記拡張演算追加部は、
前記追加要請に対応する拡張演算に演算番号を付与し、前記プログラムコードを前記演算番号に対応させて記録装置に格納することを特徴とする請求項１１に記載の演算処理システム。
【請求項１３】
コンピュータプログラムの演算を処理する演算処理方法において、
機能ユニットで前記演算を受信する段階と、
前記演算が基本演算である場合、前記機能ユニットで前記演算を処理する段階と、
前記演算が拡張演算である場合、プロセッサを制御して前記拡張演算を処理する段階と、
を含むことを特徴とする演算処理方法。
【請求項１４】
前記拡張演算を処理する前記段階は、
少なくとも前記機能ユニットの１つを用いて前記演算の入力値をレジスタファイルに格納する段階と、
少なくとも前記機能ユニットの１つを用いて前記プロセッサによりエクセプションを発生させて前記演算を処理するようにする段階と、
を含むことを特徴とする請求項１３に記載の演算処理方法。
【請求項１５】
前記拡張演算を処理する前記段階は、
前記プロセッサで、前記演算に対する処理結果を前記レジスタファイルに格納する段階と、
少なくとも前記機能ユニットの１つを用いて、前記レジスタファイルから前記処理結果を受信する段階と、
をさらに含むことを特徴とする請求項１４に記載の演算処理方法。
【請求項１６】
前記拡張演算を処理する前記段階は、
前記機能ユニットで、前記受信した処理結果を結果値として返送する段階をさらに含むことを特徴とする請求項１５に記載の演算処理方法。
【請求項１７】
請求項１３〜１６のいずれかに記載の方法を実行するためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザ定義の拡張演算を処理する演算システムおよび方法に関し、より詳細には、ソフトウェアパイプラインを用いて演算処理の効率性を高めるために、基本演算（primitive operation）およびユーザ定義の拡張演算（user defined extended operation）の処理を行えるようにするシステムおよび方法に関するものである。
【背景技術】
【０００２】
最近、コンピュータ、ＰＤＡおよび携帯電話などのようにプログラムを実行し得る演算装置を含む装置などが幅広く普及されるに伴い、プログラムを実行するための演算処理を迅速に行えるようにする方法が研究されている。このような研究結果の１つとしてソフトウェアパイプライン（software pipelining）技法が挙げられる。
【０００３】
図１は、ソフトウェアパイプライン技法を行う方法を説明するための図である。
符号１１０は、演算処理システムが処理すべきソフトウェアプログラムの一部を示す。図中、Ａ、Ｂ、Ｃ、Ｄは各プログラムを構成する基本単位である演算（operation）を意味し、一般に、ＡＬＵ（arithmetic logic unit）を用いて処理し得る演算（例えば、足し算、引き算、掛け算、シフト、論理和、論理積など）と、メモリアクセス（memory access）のために提供される演算（ロード、ストアなど）とを含む。また、最終行のJMPＬという命令語は「最上行の演算Ａの前に位置したＬ：に戻る」という意味である。すなわち、符号１１０のプログラムを行うと、Ａ、Ｂ、Ｃ、Ｄの演算が順に行われ、さらにＡからＤまでの演算が継続して繰り返される。
【０００４】
符号１２０では、ソフトウェアパイプライン技法を利用せずに符号１１０のプログラムを行う場合の過程を示す。符号１１０のプログラムは、別途の条件がないので無限に繰り返されるが、ここでは比較の便宜上、４回の反復に限定した。符号１２０のように、ソフトウェアパイプラインを行わなければ、Ａ、Ｂ、Ｃ、Ｄの演算が順に行われ、さらにＡの演算が行われる。このように４回繰り返すと、合計１６回の演算が行われることになる。図中、各段階をサイクル（cycle）とし、符号１２０では合計１６サイクルの演算時間がかかる。
【０００５】
符号１３０では、ソフトウェアパイプライン技法を用いて符号１１０のプログラムを行う場合の過程を示す。同図に示すように、ソフトウェアパイプライン技法によれば、第１ループの一番目の演算Ａが行われ、第１ループの演算Ｂが行われるとき、第２ループの一番目の演算であるＡが同時に行われる。前記Ａ、Ｂ、Ｃ、Ｄの演算がそれぞれ独立的であれば、４つの演算を同時に行うことができる。このように演算を同時に行うことにより、演算を一層効率的に行うことができる。本例では、最大４つの演算を同時に行うことにより、符号１２０と同様にして４回繰り返すが、合計７サイクルで完了することができる。このようにソフトウェアパイプライン技法は、繰り返し演算処理において極めて効率的な方法である。
【０００６】
しかし、ソフトウェアパイプライン技法を利用するためには、ループ（loop）内に条件フロー（condition flow）が存在してはならない。条件フローとは、条件によって別の演算を行わせる演算のことである。例えば、ＸとＹを比較して、Ｘの方が大きければ演算Ａを行い、Ｙの方が大きければ演算Ｂを行う。すなわち、条件によって処理演算が決定されることを意味する。
【０００７】
このような条件フローがループ（loop）内に含まれると、符号１３０の如く所定の順序で演算を繰り返すことができなくなり、パイプライン構成が極めて困難となる。符号１３０と同様にして演算順序が既に定められている場合は、続いて繰り返すと、４行目のようにＤ、Ｃ、Ｂ、Ａの演算群（operation group）を処理し続けることになるので、パイプラインの構成が容易となるが、その中間に別の演算が含まれると、同じ演算群の繰り返し処理ができなくなることから、パイプラインの構成が困難となる。
【０００８】
しかし、プログラムのほとんどは条件フローを含んでおり、このため、条件フローが存在しないループに対してのみソフトウェアパイプライン技法を使用すれば、その使用範囲は極めて狭まる。
【０００９】
条件フローを含むループに対してもソフトウェアパイプラインを可能にする試みが行われている。その一例として、条件フローを含む部分を１つの新しい演算と定義し、前記新しい演算を処理するためのハードウェアを追加することにより、まるで条件フローが存在せず、前記新しい演算が行われるように動作する。しかし、この方法は、複雑な演算を処理するハードウェアを追加する必要があるのでコストが上昇するという問題があり、またハードウェア製作時に定義した新しい演算以外の演算が含まれる場合には、条件フローを含む部分を処理し得ないという問題点があった。
【００１０】
本発明では、条件フローを含むループに対してソフトウェアパイプライン技法を適用可能にすることはもとより、ユーザによる新しい演算の定義および追加を可能にすることにより、ソフトウェアパイプライン技法を一層幅広く利用できるようにして、演算を効率的に処理し得る演算処理システムおよび方法に関して提案する。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
本発明は、前述したような従来の技術を改善するために案出されたもので、ソフトウェアパイプライン技法を容易に利用できるようにすることを目的とする。
【００１２】
また、本発明は、拡張演算（extended operation）を別途のプロセッサが処理するようにすることにより、ソフトウェア的に拡張演算を処理できるようにすることを目的とする。
【００１３】
さらに、本発明は、ソフトウェア的に拡張演算が処理できるようにすることにより、ユーザが所望する拡張演算を追加できるようにすることを目的とする。
【００１４】
なお、本発明は、エクセプション（exception）を発生させ、プロセッサで拡張演算を処理するようにし、プロセッサのエクセプションハンドラー（exception handler）を活用することにより、効率的にプロセッサを利用できるようにすることにある。
【課題を解決するための手段】
【００１５】
前記目的を達成するために、本発明の一実施形態に係る演算処理システムは、コンピュータプログラムの演算（operation）を処理する演算処理システムにおいて、基本演算（primitive operation）を処理する複数の機能ユニット（ＦＵ、functional unit）と、前記機能ユニットの制御によって拡張演算（extended operation）を処理するプロセッサ（processor）とを含む。
【００１６】
また、本発明の一実施形態に係る演算処理方法は、コンピュータプログラムの演算（operation）を処理する演算処理方法において、機能ユニット（ＦＵ、functional unit）で前記演算を受信する段階と、前記演算が基本演算（primitive operation）である場合、前記機能ユニットで前記演算を処理する段階と、前記演算が拡張演算（extended operation）である場合、プロセッサを制御して前記拡張演算を処理する段階とを含む。
【００１７】
本発明における「演算（operation）」というのは、プログラムの基本単位のことである。コンピュータなどの装置で動作するプログラムは、複数の演算よりなるが、通常、演算はプロセッサの設計時に定義されてハードウェア（hardware）的に処理される。ゆえに、ハードウェアの構成後には演算を追加できないが、本発明では、ユーザが定義した拡張演算の追加を可能にすることを特徴とするので、既存のハードウェア的に処理する演算を基本演算（primitive operation）とし、ユーザが定義した演算を拡張演算（extended operation）とする。
【発明の効果】
【００１８】
本発明によれば、ソフトウェアパイプライン技法を容易に使用することができる。
【００１９】
また、本発明によれば、拡張演算（extended operation）を別途のプロセッサによって処理できるようにすることにより、ソフトウェア的に拡張演算を処理することができる。
【００２０】
また、本発明によれば、ソフトウェア的に拡張演算を処理できるようにすることにより、ユーザが所望する拡張演算を追加することができる。
【００２１】
また、本発明によれば、エクセプション（exception）を発生させてプロセッサによって拡張演算を処理できるようにすることにより、プロセッサのエクセプションハンドラー（exception handler）を活用することができ、その結果、プロセッサを効率よく用いることができる。
【発明を実施するための最良の形態】
【００２２】
以下、添付図面および添付図面に記載の内容を参照して本発明の好適な実施の形態を詳細に説明する。しかしながら、本発明は、後述する実施の形態によって限定されるものではない。
同じ部材については、他の図面上に示す場合であっても、同じ参照符号を付するものとする。
【００２３】
図２は、本発明の一実施形態に係る演算処理システムの構成を示す構成図である。
【００２４】
同図に示すように、本発明の一実施形態に係る演算処理システムは、プロセッサ（processor）２１０、レジスタファイル（register file）２２０および複数の機能ユニット（ＦＵ、functional unit）２３０を含み、複数の機能ユニット２３０は再構成アレイ（ＲＡ、reconfigurable array）を構成する。以下、各構成要素別に詳述する。
【００２５】
プロセッサ（processor）２１０とは、コンピュータ、ＰＤＡ、ＰＭＰ、携帯電話などの装置に備えて各装置で動作するプログラム（program）の演算（operation）を処理する装置を示す。プログラムはプロセッサで処理し得る複数の演算よりなる。この演算は、ＡＬＵ（arithmetic logic unit）を用いて処理する演算（例えば、足し算、引き算、掛け算、シフト、論理和、論理積など）と、メモリアクセス（memory access）のために提供される演算（ロード、ストアなど）とを含む。よって、プロセッサ２１０は、数学演算を処理し得るＡＬＵ装置と、メモリにアクセス（access）し得る装置とを含むように構成することができる。プロセッサ２１０の種類によって処理できる演算の種類が変わるが、本発明では、プロセッサ２１０の種類に関係なくいずれのプロセッサ２１０を適用しても構わない。
【００２６】
レジスタファイル（register file）２２０は、通常プロセッサ２１０がメモリデータにアクセスするために用いられるレジスタメモリ（register memory）が複数集まったものである。通常、コンピュータなどの装置において、データを格納する中央メモリはデータにアクセスするアクセス時間（access time）が長いので、メモリにプロセッサ２１０が直接アクセスすると、１サイクル（cycle）にかかる時間が長くなる。よって、プロセッサ２１０が迅速にアクセスすることが可能なレジスタメモリを用意しておき、プロセッサ２１０のメモリへのアクセスの命令により、中央メモリのデータをレジスタメモリに格納しておき、プロセッサ２１０はレジスタメモリにアクセスしてデータを確認する。
【００２７】
本発明では、機能ユニット２３０がプロセッサ２１０を制御して拡張演算の処理を行わせるとき、プロセッサ２１０が最も迅速にアクセスできるメモリであるレジスタファイル２２０に、演算に必要な入力値を記録することにより、プロセッサが最大限迅速に必要な演算を処理できるようにする。
【００２８】
また、本発明のレジスタファイル２２０は、１つのレジスタファイル２２０を用いて機能ユニット２３０とプロセッサ２１０との間のデータのやり取りを可能にし、機能ユニット２３０およびプロセッサ２１０がそれぞれのレジスタファイル２２０にアクセスし、レジスタファイル２２０間のデータの送受信を可能にすることができる。本発明は、かかるレジスタファイル２２０の構成によって限定されるものではない。
【００２９】
機能ユニット（ＦＵ、functional unit）２３０とは、演算を処理するために構成されたハードウェアのことであり、各機能ユニット２３０別に処理可能な演算が定義されている。よって、処理する演算の種類によって機能ユニット２３０も変わる。通常機能ユニット２３０は、複数の入力値を受信して演算処理を行い、この演算による結果値を返送（return）する。
【００３０】
また、機能ユニット２３０は、プロセッサ２１０を制御して拡張演算（extended operation）の処理を行うために、プロセッサを制御する機能を果すことができる。例えば、機能ユニット２３０は、プロセッサが認識し得るエクセプション（exception）を発生させることにより、プロセッサが機能ユニット２３０が発生させたエクセプションに対応して拡張演算の処理を行わせる。
【００３１】
再構成アレイ（reconfigurable array）２４０は、複数の機能ユニット２３０よりなるもので、複数の機能ユニットを同時に動作させて複数の演算を同時に処理できるようにする。この複数の演算が同時に処理できることから、再構成アレイ２４０を用いると、ソフトウェアパイプラインを実現することができる。再構成アレイ２４０には、多様な演算を処理する機能ユニット２３０を含んでも良いし、各機能ユニット２３０間でデータの送受信に用いられる連結線および送受信データを格納する臨時記憶装置を含んでも良い。また、プロセッサ２１０にデータが伝達できるように、さらにレジスタファイル２２０にデータを格納できるようにレジスタファイル２２０との連結線を含んでも良い。
【００３２】
再構成アレイ２４０に含まれた各機能ユニット２３０はそれぞれの演算を行い、演算結果を他の機能ユニット２３０に伝達して、この演算結果を基にして他の演算を行わせることができる。よって、演算の順序によって、データの効率的な移動のために機能ユニット２３０を適切に配置する必要がある。
【００３３】
図３は、本発明の一実施形態に係る演算処理システムから拡張演算を処理するためのシステム構成を示す構成図である。
【００３４】
同図に示すように、本発明の一実施の形態による演算処理システムは、機能ユニット３１０、プロセッサ３２０、レジスタファイル３３０および拡張演算追加部３４０を含む。以下、各構成要素別に詳述する。
【００３５】
機能ユニット３１０は、基本演算（primitive operation）を処理し、プロセッサ３２０を制御して拡張演算（extended operation）の処理を行わせる。機能ユニット３１０は、プログラムを構成する基本単位である演算（operation）を処理するハードウェア装置であって、演算に必要な複数の入力値３５１、３５２および３５３を受信して演算を行い、その後、結果値３５４を返還（return）する。各機能ユニット３１０には、ハードウェア設計時から処理できる演算の種類が決められている。例えば、ある機能ユニット３１０は、足し算および引き算の演算を行い、他の機能ユニット３１０は足し算および引き算の演算はもとより、掛け算および割り算の演算をも行う。さらに、他の機能ユニット３１０は、小数点演算（floating point operation）を処理することができる。
【００３６】
このように機能ユニット３１０で設計されたハードウェアを用いて処理できる演算を基本演算（primitive operation）とし、機能ユニット３１０では基本演算を処理してその結果を返送する。機能ユニット３１０には、基本演算を処理するために複数の入力値（３５１、３５２および３５３）が入力されるが、演算の種類によって所要入力値の数が変わる。
【００３７】
このように機能ユニット３１０で処理すべき演算が基本演算である場合は、機能ユニット３１０のハードウェアを用いて処理することができる。しかし、処理すべき演算が拡張演算である場合は、拡張演算は機能ユニット３１０のハードウェアを用いて処理することができないので、プロセッサ３２０を制御して処理させる。拡張演算は、普通ソフトウェアパイプラインの実現を困難にするコントロールフロー（control flow）を含む演算であって、複数の基本演算（primitive operation）が結合されたプログラム形態を有する。このようにコントロールフローを含む複数の基本演算が結合された拡張演算を、機能ユニット３１０がプロセッサ３２０を制御することによって１回で処理することにより、ソフトウェアパイプラインを容易に実現することができる。
【００３８】
機能ユニット３１０が処理すべき演算が拡張演算である場合、機能ユニット３１０は、拡張演算の入力値（３５１、３５２および３５３）をレジスタファイル３３０にコピーすることで、プロセッサ３２０による確認を可能にする。プロセッサは、最もアクセスしやすいメモリで演算に必要な入力値を確認することができる。入力値のコピー後、機能ユニット３１０は、プロセッサ３２０に対してエクセプション（exception）３７０を発生する。エクセプション３７０は、コンピュータなどの装置に問題が発生したり、入力装置から入力されて処理すべき状況が発生したりする場合、処理中である作業を停止して即時処理を行えるようにする信号を意味する。よって、エクセプション３７０が発生すると、プロセッサ３２０は処理中の作業を停止し、エクセプション３７０に対応する動作を行う。このようにエクセプション３７０に対応する動作を行わせるモジュールをエクセプションハンドラー（exception handler）と言う。エクセプションハンドラーはエクセプション３７０の種類を把握し、エクセプションの種類に対応する演算を行わせる。このようなエクセプションハンドラーは、通常プロセッサに基本的に含まれているため、エクセプションハンドラーに機能ユニット３１０からのエクセプション３７０を処理する演算を追加することだけで、機能ユニット３１０のプロセッサ３２０への制御を可能にする。
【００３９】
拡張演算は、プログラム形態で構成されるので、機能ユニット３１０がエクセプションを発生すると、プロセッサ３２０のエクセプションハンドラーは、エクセプション３７０を確認し、拡張演算を処理するためのプログラムを動作させる。このとき、拡張演算が種々存在する場合があるので、エクセプション３７０とともに拡張演算の演算番号（operation number）３８０をプロセッサ３２０に伝達することにより、エクセプションハンドラーで拡張演算の処理用プログラムの種類を決定することができる。
【００４０】
プロセッサ３２０は、拡張演算の処理するためのプログラムを処理する装置であって、上記のようにエクセプションハンドラーの動作に応じて拡張演算の種類に対応するプログラムを動作させる。このように拡張演算を処理するために、プロセッサ３２０は、複数の拡張演算をそれぞれ処理するためのプログラムのプログラムコードを記録装置に格納し、これらを用いて拡張演算を処理することができる。このとき、拡張演算の種類を識別するために、演算番号（operation number）とプログラムコードとを対応させて格納し、機能ユニット３１０からエクセプション３７０とともに受信する演算番号３８０に対応するプログラムコードを記録装置から確認することができる。
【００４１】
また、プロセッサ３２０は、拡張演算の処理に必要な入力値をレジスタファイル３３０から受信することができる。入力値を機能ユニット３１０からレジスタファイル３３０にコピーするので、プロセッサ３２０は最も迅速にアクセス可能なメモリであるレジスタファイルから入力値を受信することができる。また、プロセッサ３２０は、拡張演算を処理し、その処理結果をレジスタファイル３３０に記録して機能ユニットで確認できるようにする。機能ユニット３１０では、レジスタファイル３３０を参考して処理結果を受信し、これを結果値３５４として返送するように構成することができる。
【００４２】
上記のように拡張演算を処理すると、機能ユニット３１０を使用する側では、機能ユニット３１０の内部動作と関係なく機能ユニットに入力値（３５１、３５２および３５３）を入力し、演算による結果値３５４の受信することができるので、コントロールフローを含む複数の基本演算よりなる拡張演算を１つの基本演算と同様にして処理することができる。よって、コントロールフローが存在しない場合と同様にして演算を処理することができるので、ソフトウェアパイプラインを容易に実現することができる。
【００４３】
例えば、下記のようなループ（loop）があれば、従来の技術では４、５行目のコントロールフローのために、ソフトウェアパイプライニングを実現することができなかった。
【００４４】
１：while（TRUE）{
２：a = １０；
３：b = a + c；
４：if（a > b） d = a；
５：else d = b；
６：}
【００４５】
したがって、前述したプログラムの４、５行目を処理する「max」という拡張演算を定義することにより、下記のようにコントロールフロー無しのプログラムに変えることができる。
【００４６】
１：while（TRUE）{
２：a = １０；
３：b = a + c；
４：d = max（a、b）；
５：}
【００４７】
実際に前述のプログラムにおいてmaxはコントロールフローを含んでいるが、機能ユニット３１０がプロセッサ３２０を制御して処理することにより、足し算のような１つの演算として処理されるので、前述のプログラムのループは、コントロールフローを含まない３個の演算よりなるプログラムになって、ソフトウェアパイプラインを実現することができる。
【００４８】
レジスタファイル３３０は、機能ユニット３１０からプロセッサ３２０にデータを伝送するために用いられるメモリであって、プロセッサが最も迅速にアクセスできるので、拡張演算の処理速度を高めることができる。レジスタファイル３３０は複数のレジスタメモリよりなり、機能ユニット３１０およびプロセッサ３２０がそれぞれのレジスタファイル３３０にアクセスしてデータを用い、レジスタファイル３３０間でデータの送受信を可能にすることができ、１つのレジスタファイルを共有することができる。
【００４９】
拡張演算追加部３４０は、ユーザから拡張演算に対する追加要請を受信し、プロセッサ３２０に対して追加要請に対応する拡張演算を処理させるように設定する。この追加要請は、プロセッサ３２０が拡張演算を処理するために動作するプログラムのプログラムコードを含むように構成することができる。拡張演算は、複数の基本演算よりなるプログラムの形態を有するので、拡張演算を処理するためのプログラムが記憶装置に格納されていなければ、プロセッサ３２０は拡張演算を処理することができない。よって、ユーザの追加要請によって拡張演算を追加する場合、拡張演算に対応するプログラムコードを受信して格納しなければならない。
【００５０】
また、拡張演算追加部３４０は、追加要請に対応する拡張演算に演算番号（operation number）を付与し、受信したプログラムコードを演算番号に対応させて記録装置に格納することができる。したがって、機能ユニット３１０から演算番号をプロセッサ３２０に伝送することだけで、プロセッサは処理すべき拡張演算を確認し、演算番号に対応するプログラムコードを記憶装置で確認して動作させることにより、拡張演算の処理を行うように構成できる。
【００５１】
このように、拡張演算追加部３４０を用いてユーザが容易に拡張演算を追加することができ、ハードウェア装置の追加なしにユーザの必要に応じて演算を拡張することができる。
【００５２】
図４は、本発明の一実施形態に係る演算処理方法の流れを示す流れ図である。
【００５３】
段階Ｓ４０１では、機能ユニット（ＦＵ、functional unit）で処理すべき演算を受信する。通常機能ユニットでは、メモリに格納されているプログラムの演算を読み込んで処理する。この演算は、基本演算および拡張演算を含む。
【００５４】
段階Ｓ４０２では、段階Ｓ４０１で受信した演算が基本演算であるか否かを確認する。基本演算か拡張演算かを区分するために、演算コード（OP code）に基本演算および拡張演算の可否を確認できるｂｉｔを追加するように構成でき、他にも多様な方法で基本演算および拡張演算を区分するように構成できる。基本演算および拡張演算を区分する方法は、何れの方法を本発明に適用しても良いし、本発明はこのような区分方法によって制限されるものではない。
【００５５】
段階Ｓ４０３では、段階Ｓ４０１で受信した演算が段階Ｓ４０２で基本演算であると判断された場合、この演算を処理する。機能ユニットは、本来基本演算を処理するためのハードウェアを含んでいるので、このハードウェアを用いることにより、この基本演算を処理することができる。
【００５６】
段階Ｓ４０４では、段階Ｓ４０１で受信した演算が段階Ｓ４０２で拡張演算であると判断された場合、演算の入力値をレジスタファイルに格納する。レジスタファイルはプロセッサが直接アクセス（access）できるメモリ装置であるので、機能ユニットから入力値をレジスタファイルに格納することにより、プロセッサで入力値を簡単に確認することができる。
【００５７】
段階Ｓ４０５では、プロセッサに対してエクセプションを発生し、拡張演算の処理を行う。エクセプションが発生すると、プロセッサのエクセプションハンドラーが動作してエクセプションを処理する。したがって、このエクセプションに対応して拡張演算を処理するようにエクセプションハンドラーを設定することにより、別途の通信なしにプロセッサを制御することができる。
【００５８】
段階Ｓ４０６では、プロセッサで拡張演算を処理し、その処理結果をレジスタファイルに格納する。この拡張演算に対する処理結果は、さらに拡張演算を処理するように制御した機能ユニットで確認して返送する。このため、機能ユニットを用いる側では、機能ユニットが直接演算を処理するか、プロセッサを制御して処理するかの可否を確認できないので、拡張演算を基本演算と同様にして処理することができる。
【００５９】
段階Ｓ４０７では、機能ユニットでレジスタファイルに格納された処理結果を受信し、これを結果値として返送する。このように機能ユニットは、プロセッサと別途の通信チャンネルを構成しなくても、レジスタファイルを用いて入力値を伝送し、その結果値を受信するように構成できる。
【００６０】
本発明に係る演算処理方法は、多様なコンピュータ手段を用いて行えるプログラム命令の形態で実現され、コンピュータ読み取り可能媒体に記録できる。コンピュータ読み取り可能媒体としては、プログラム命令、データファイル、データ構造などを単独でまたは組み合わせて含むことができる。媒体に記録されるプログラム命令は、本発明によって特別に設計および構成されたものであって良いし、コンピュータソフトウェアの当業者に公知されて使用可能なものであっても良い。コンピュータ読み取り可能記録媒体の例としては、ハードディスク、フロッピー（登録商標）ディスクおよび磁気テープのような磁気媒体（magnetic media）と、ＣＤ−ＲＯＭ、ＤＶＤのような光記録媒体（optical media）と、フロプティカルディスク（floptical disk）のような磁気―光媒体（magneto-optical media）と、ＲＯＭ ロム（Read Only Memory）、ＲＡＭ、フラッシュメモリと、などのようなプログラム命令を格納および処理できるように特別に構成されたハードウェア装置が含まれる。プログラム命令の例としては、コムパイラによって生成される機械語コードはもとより、インタープリターなどを用いてコンピュータによって実行できる高級言語コードを含む。上記のハードウェア装置は、本発明の動作を行うために１つ以上のソフトウェアモジュールとして作動するように構成することができ、その逆もできる。
【００６１】
以上、実施形態および図面を挙げて本発明について説明したが、これは単なる例示的なものに過ぎず、本発明はこれらに限定されるものではない。なお、特許請求の範囲において請求するように、本発明の要旨を逸脱することなく、この技術分野における通常の知識を有する者であれば種々の修正および変更が可能である。よって、特許請求の範囲に記載された技術的思想の範疇内において各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
【図面の簡単な説明】
【００６２】
【図１】ソフトウェアパイプライン（software pipelining）技法を行う方法を示す図である。
【図２】本発明の一実施形態に係る演算処理システムの構成を示す構成図である。
【図３】本発明の一実施形態に係る演算処理システムで拡張演算を処理するためのシステム構成を示す構成図である。
【図４】本発明の一実施形態に係る演算処理方法の流れを示す流れ図である。
【符号の説明】
【００６３】
３１０      機能ユニット（ＦＵ、functional unit）
３２０      プロセッサ（processor）
３３０      レジスタファイル（register file）
３４０      拡張演算追加部
３５１      入力値１
３５２      入力値２
３５３      入力値３
３５４      結果値
３７０      エクセプション（exception）
３８０      演算番号（operation number）
【図１】
2008077625.tif 000003
【図２】
2008077625.tif 000004
【図３】
2008077625.tif 000005
【図４】
2008077625.tif 000006