(57)【要約】  高速な演算処理が可能で且つ省エネルギー化されたキュープロセッサおよびキュープロセッサによるデータ処理方法を提供する。  取得したメモリ格納データおよび演算処理中の中間結果データを格納する複数の演算データ格納用キュー（１８、１９）と、複数の演算データ格納用キュー（１８、１９）のそれぞれにアクセス可能であり、複数の演算データ格納用キュー（１８、１９）のいずれかから取得したメモリ格納データまたは中間結果データを使用して演算処理を実行するとともに演算結果を複数の演算データ格納用キュー（１８、１９）のいずれかに格納する複数の実行ユニット（１７ａ、１７ｂ、１７ｃ）とを備える。
2007094256.tif 000002
【特許請求の範囲】
【請求項１】
プログラムの命令が実行されることにより外部のデータメモリに格納されているメモリ格納データを取得して演算処理を行うキュープロセッサにおいて、
取得したメモリ格納データおよび演算処理中の中間結果データを先入れ先出し方式で格納する複数の演算データ格納用キューと、
前記複数の演算データ格納用キューのそれぞれにアクセス可能であり、前記複数の演算データ格納用キューのいずれか一つまたは二つから前記メモリ格納データまたは前記中間結果データを先入れ先出し方式で取得して演算処理を実行するとともにこの演算結果を前記複数の演算データ格納用キューのいずれかに先入れ先出し方式で格納させるために送出する複数の実行ユニットと、
を備えることを特徴とするキュープロセッサ。
【請求項２】
請求項１に記載のキュープロセッサにおいて、
前記データメモリへアクセスするためのメモリアドレス修飾用のアドレスを格納するとともに、前記演算処理の中間結果データを格納することが可能なメモリアドレス用キューを有する
ことを特徴とするキュープロセッサ。
【請求項３】
請求項１または２に記載のキュープロセッサにおいて、
プログラムの実行に関するシステム情報を格納するとともに、前記演算処理の中間結果データを格納することが可能なシステム情報用キューを有する
ことを特徴とするキュープロセッサ。
【請求項４】
プログラムの命令が実行されることにより外部のデータメモリに格納されているメモリ格納データを取得して演算処理を行うキュープロセッサにおいて、
前記データメモリへアクセスするためのメモリアドレス修飾用のアドレスを格納するとともに、前記演算処理の中間結果データを格納することが可能なメモリアドレス用キューを有する
ことを特徴とするキュープロセッサ。
【請求項５】
プログラムの命令が実行されることにより外部のデータメモリに格納されているメモリ格納データを取得して演算処理を行うキュープロセッサにおいて、
プログラムの実行に関するシステム情報を格納するとともに、前記演算処理の中間結果データを格納することが可能なシステム情報用キューを有する
ことを特徴とするキュープロセッサ。
【請求項６】
プログラムの命令が実行されることにより外部のデータメモリに格納されているメモリ格納データを取得して演算処理を行うキュープロセッサによるデータ処理方法において、
取得したメモリ格納データおよび演算処理中の中間結果データを先入れ先出し方式で格納する複数の演算データ格納用キューのそれぞれにアクセス可能な実行ユニットが、前記複数の演算データ格納用キューの中のいずれか一つまたは二つから前記メモリ格納データまたは前記中間結果データを先入れ先出し方式で取得して演算処理を実行するとともにこの演算結果を前記複数の演算データ格納用キューのいずれかに先入れ先出し方式で格納させるために送出する
ことを特徴とするキュープロセッサによるデータ処理方法。
【請求項７】
請求項６に記載のキュープロセッサによるデータ処理方法において、
前記データメモリへアクセスするときは、メモリアドレス修飾用のアドレスを格納するメモリアドレス用キューを用いる
ことを特徴とするキュープロセッサによるデータ処理方法。
【請求項８】
請求項６または７に記載のキュープロセッサによるデータ処理方法において、
前記演算処理を行うときは、プログラムの実行に関するシステム情報を格納するシステム情報用キューを用いる
ことを特徴とするキュープロセッサによるデータ処理方法。
【請求項９】
プログラムの命令が実行されることにより外部のデータメモリに格納されているメモリ格納データを取得して演算処理を行うプロセッサによるデータ処理方法において、
前記データメモリへアクセスするときは、メモリアドレス修飾用のアドレスを格納するメモリアドレス用キューを用いる
ことを特徴とするキュープロセッサによるデータ処理方法。
【請求項１０】
プログラムの命令が実行されることにより外部のデータメモリに格納されているメモリ格納データを取得して演算処理を行うプロセッサによるデータ処理方法において、
前記演算処理を行うときは、プログラムの実行に関するシステム情報を格納するシステム情報用キューを用いる
ことを特徴とするキュープロセッサによるデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、先入れ先出しのキューを中間結果格納用メモリとして複数用いるキュープロセッサおよびキュープロセッサによるデータ処理方法に関する。
【背景技術】
【０００２】
従来、コンピュータに搭載されているプロセッサは、コンピュータ内の主メモリに記憶されたデータを読み込んで演算処理を行っている。【０００３】
プロセッサは、内部に演算の中間結果データを格納する中間結果格納用メモリと演算ユニットとを備えている。これらを用いて演算処理を行うときには、まず外部の主メモリに記憶されたデータであるメモリ格納データをプロセッサ内の中間結果格納用メモリにコピーし、コピーされたデータを用いて演算ユニットで演算処理をしてその結果を中間結果格納用メモリに返す。この演算処理を何回か繰り返した後に、中間結果格納用メモリで得られた演算結果を外部の主メモリに返す。【０００４】
この中間結果格納用メモリとして、レジスタと呼ばれる小容量で高速なアクセスが可能なランダムアクセスメモリ（ＲＡＭ）を用いたプロセッサが広く普及している。【０００５】
しかし、レジスタを中間結果格納用メモリとして用いると、命令語のオペランドで使用レジスタを指定しなければならないので、命令長が長くなる。そのため、プロセスの切り替えが遅くなる、あるいはプログラム長が長くなるなどの問題があった。【０００６】
特に近年は携帯電話に代表される小型デジタル機器による通信が盛んになってきているため、高速な演算処理が可能で且つ省エネルギー化された小型のプロセッサの開発が要求されていた。【０００７】
通信量の問題を解決するプロセッサとして、中間結果格納用メモリにスタックを用いるプロセッサがある。中間結果格納用メモリにスタックを用いると命令語においてオペランドを指定する必要がないため、命令長を短くすることができる。しかし、スタックは先入れ後出し（ＦＩＬＯ：First In Last Out）方式であり後から記録したデータから使用されるため、高速に処理を行うための並列処理が困難であるという問題があった。【０００８】
そこで並列処理を可能にするため、本発明者は中間結果格納用メモリに先入れ先出し（ＦＩＦＯ：First In First Out）方式のキューを用いたプロセッサを開発した。【０００９】
キューを用いたプロセッサは、同時に実行可能な命令が連続して現れるため並列処理が可能であり、高いパフォーマンスが得られる、命令語においてオペランド指定が必要ないため命令長が短い、プログラム量が少ない、ハードウェアが小さく消費電力が少ない、クロック周波数が高い、などの特徴を持っている。【００１０】
キューを用いたプロセッサに関する技術として、特許文献１および２に記載のものがある。【００１１】
特許文献１：特許第３７０１５８３号公報
特許文献２：特開２００５−２９３０８３号公報
特許文献１のキュープロセッサは、命令の実行に必要なデータが中間結果格納用メモリとして用いたキューの中にあるか否かをチェックし、キューにある必要なデータはすべて同時に実行ユニットに送ることにより並列処理の実行を可能にするものである。【００１２】
この技術により、プロセッサを高速化することが可能になる。【００１３】
また、特許文献２のキュープロセッサは、命令の割り込み処理などでコンテキスト切り替えが起こった場合に、切り替え前のプログラム用データを待避および復帰させることができるとともにキューの構成に自由度を持たせることができ、さらにはキューにデータが満になったときに拡張させることができるものである。これらの技術により、さらに効率良くキュープロセッサを利用することができる。【００１４】
しかし、キュープロセッサでは格納された順にデータが取り出されるため、命令により生産され格納されるデータの順序（生産順）と格納された中から演算のために取り出すデータの順序（消費順）とが一致していないと正しく命令が実行されないという問題点があり、これは上記特許文献１および２の技術では解決することができない。【００１５】
この問題を解決するため、生産順に格納されたデータから演算に使用するためのデータを消費順に取り出す、生産順序型キュー計算モデルを用いたキュープロセッサが特許文献３に提案されている。【００１６】
特許文献３：特開２００４−２４６４４９号公報
しかし、この生産順序型キュー計算モデルには、次のような問題点があった。【００１７】
（ａ）キュー内の離れたデータを参照するためには、それを表す命令語のオフセット部が必要であり、データの位置が離れるほど多くのビット数が必要となる。例えば、図８に示すように、キューヘッドQHのデータと、キューヘッドQH+1から２語離れた位置のデータとを引き算する場合は、命令「sub +2」のようにオフセット部が必要である。【００１８】
（ｂ）キューはパイプ状であるため、キューの先頭に後で必要なデータがありそれ以降に不必要なデータがある場合にもこの不必要なデータを捨てることができず、無駄なデータが格納されていることがある。そのため、必要以上にキュー長が長くなることがある。また、先頭近くのデータを参照するためには、やはり命令語のオフセット部に多くのビット数が必要となる。【００１９】
（ｃ）プロセッサ内には、図９（ａ）に示すように中間結果格納用メモリとは別にプロセッサ内にメモリアドレス修飾用レジスタが設けられているが、効率良く図９（ｂ）のメモリアクセス修飾を行うためにはメモリアドレス修飾用レジスタ内に多くのレジスタ数が必要であるとともに、データメモリに格納されたデータを読み出す際にはどのレジスタを使用するか指定する必要があり、命令長が長くなってしまう。【００２０】
例えば、図９（ｂ）においてデータメモリの512番地のデータにアクセスするには、命令「ld r1,12(r5)」により、メモリアドレス修飾用レジスタのレジスタr5に格納されているデータ「500」をメモリアドレス修飾用のアドレスとして取得し、この「500」に「12」を足した「512」番地のデータをレジスタr1に格納することを示さなければならない。【００２１】
同様に、データメモリの9012番地のデータにアクセスするには、命令「ld r1,12(r6)」により、メモリアドレス修飾用レジスタのレジスタr6に格納されているデータ「9000」をメモリアドレス修飾用のアドレスとして取得し、この「9000」に「12」を足した「9012」番地のデータをレジスタr1に格納することを示さなければならない。【００２２】
また、生産順序型キュー計算モデルを用いたキュープロセッサにおいて、演算に用いるデータを格納するオペレーションキューの他に、一時的にデータを待避させておくテンポラリーキューを設けることにより、消費順にデータを取り出すことを可能にした技術がある。【００２３】
このテンポラリーキューを設けたプロセッサ１００の構成を図１０に示す。【００２４】
図１０のプロセッサ１００において、命令メモリ（ＩＭ）１１からフェッチされ命令解釈ユニット（ＤＵ）１３で解釈された命令が、データメモリ（ＤＭ）２２から取得されたデータを用いて実行ユニット（ＥＵ）１７で実行され、実行により得られたデータがオペレーションキューとしての演算データ格納用キュー１８またはテンポラリーキュー２６に格納される。【００２５】
実行ユニット（ＥＵ）１７には、オペレーションキュー１８のみにアクセス可能な第１実行ユニット１７ａおよび第２実行ユニット１７ｂと、オペレーションキュー１８とテンポラリーキュー２６との両方にアクセス可能な転送ユニット１７ｘとが設けられており、一時的にテンポラリーキュー２６に格納されるデータはすべて転送ユニット１７ｘを介して転送される。【００２６】
このようにオペレーションキュー１８とテンポラリーキュー２６とを並行して設けることにより、消費順にデータを取得することを可能にしているため、正しく命令が実行される。【００２７】
また、後で必要になるデータに続いて不必要なデータがある場合は、必要なデータをテンポラリーキュー２６に一時的に格納しておくことで、無駄なデータが格納されてキュー長が必要以上に長くなることを避けることができる。【００２８】
しかし、上記のプロセッサ１００では、テンポラリーキュー２６にアクセスする際は転送ユニット１７ｘに転送する命令が必要であるためプログラム長が長くなり、プロセッサの実行速度の高速化を妨げるという問題があった。【００２９】
本発明は、上記事情に鑑みてなされたものであり、命令長を短くするとともにプログラムを単純化することにより、高速な演算処理が可能で且つ省エネルギー化されたキュープロセッサおよびキュープロセッサによるデータ処理方法を提供することを目的とする。
【発明の開示】
【００３０】
請求項１に記載のキュープロセッサは、プログラムの命令が実行されることにより外部のデータメモリに格納されているメモリ格納データを取得して演算処理を行うキュープロセッサにおいて、取得したメモリ格納データおよび演算処理中の中間結果データを先入れ先出し方式で格納する複数の演算データ格納用キューと、複数の演算データ格納用キューのそれぞれにアクセス可能であり、複数の演算データ格納用キューのいずれか一つまたは二つから先入れ先出し方式でメモリ格納データまたは中間結果データを取得して演算処理を実行するとともにこの演算結果を複数の演算データ格納用キューのいずれかに先入れ先出し方式で格納させるために送出する複数の実行ユニットとを備えることを特徴とする。
【００３１】
請求項２は、請求項１に記載のキュープロセッサにおいて、データメモリへアクセスするためのメモリアドレス修飾用のアドレスを格納するとともに、演算処理の中間結果データを格納することが可能なメモリアドレス用キューを有することを特徴とする。
【００３２】
請求項３は、請求項１または２に記載のキュープロセッサにおいて、プログラムの実行に関するシステム情報を格納するとともに、演算処理の中間結果データを格納することが可能なシステム情報用キューを有することを特徴とする。
【００３３】
請求項４は、プログラムの命令が実行されることにより外部のデータメモリに格納されているメモリ格納データを取得して演算処理を行うキュープロセッサにおいて、データメモリへアクセスするためのメモリアドレス修飾用のアドレスを格納するとともに、演算処理の中間結果データを格納することが可能なメモリアドレス用キューを有することを特徴とする。
【００３４】
請求項５は、プログラムの命令が実行されることにより外部のデータメモリに格納されているメモリ格納データを取得して演算処理を行うキュープロセッサにおいて、プログラムの実行に関するシステム情報を格納するとともに、演算処理の中間結果データを格納することが可能なシステム情報用キューを有することを特徴とする。
【００３５】
請求項６に記載のキュープロセッサによるデータ処理方法は、プログラムの命令が実行されることにより外部のデータメモリに格納されているメモリ格納データを取得して演算処理を行うキュープロセッサによるデータ処理方法において、取得したメモリ格納データおよび演算処理中の中間結果データを先入れ先出し方式で格納する複数の演算データ格納用キューのそれぞれにアクセス可能な実行ユニットが、複数の演算データ格納用キューの中のいずれか一つまたは二つからメモリ格納データまたは中間結果データを先入れ先出し方式で取得して演算処理を実行するとともにこの演算結果を複数の演算データ格納用キューのいずれかに先入れ先出し方式で格納させるために送出することを特徴とする。
【００３６】
請求項７は、請求項６に記載のキュープロセッサによるデータ処理方法において、データメモリへアクセスするときは、メモリアドレス修飾用のアドレスを格納するメモリアドレス用キューを用いることを特徴とする。
【００３７】
請求項８は、請求項６または７に記載のキュープロセッサによるデータ処理方法において、演算処理を行うときは、プログラムの実行に関するシステム情報を格納するシステム情報用キューを用いることを特徴とする。
【００３８】
請求項９は、プログラムの命令が実行されることにより外部のデータメモリに格納されているメモリ格納データを取得して演算処理を行うプロセッサによるデータ処理方法において、データメモリへアクセスするときは、メモリアドレス修飾用のアドレスを格納するメモリアドレス用キューを用いることを特徴とする。
【００３９】
請求項１０は、プログラムの命令が実行されることにより外部のデータメモリに格納されているメモリ格納データを取得して演算処理を行うプロセッサによるデータ処理方法において、演算処理を行うときは、プログラムの実行に関するシステム情報を格納するシステム情報用キューを用いることを特徴とする。
【図面の簡単な説明】
【００４０】
【図１】図１は、本発明の第１実施形態によるキュープロセッサの構成を示すブロック図である。
【図２】図２は、本発明の第１実施形態によるキュープロセッサの演算データ格納用キューにおいて、データが生産されるときの動作を示す説明図である。
【図３】図３は、本発明の第１実施形態によるキュープロセッサの演算データ格納用キューにおいて、データが消費されるときの動作を示す説明図である。
【図４】図４は、本発明の第２実施形態によるキュープロセッサの構成を示すブロック図である。
【図５】図５は、本発明の第２実施形態によるキュープロセッサから、データメモリに格納されているデータを読み出すときの動作を示す説明図である。
【図６】図６は、本発明の第２実施形態によるキュープロセッサから、データメモリに格納されているデータを読み出すときの動作を示す説明図である。
【図７】図７は、本発明の第２実施形態によるキュープロセッサのシステムメモリを示す説明図である。
【図８】図８は、従来の生産順序型キュー計算モデルを用いたキュープロセッサの演算データ格納用キューにおいて、データが消費されるときの動作を示す説明図である。
【図９】図９は、従来のプロセッサから、データメモリに格納されているデータを読み出すときの動作を示す説明図である。
【図１０】図１０は、従来のキュープロセッサの構成を示すブロック図である。
【図１１】図１１は、従来の生産消費順序型キュー計算モデルを用いたキュープロセッサにおいて、プログラムの実行による命令ホール問題が発生したときのデータの流れを示す説明図である。
【図１２】図１２は、従来の生産消費順序型キュー計算モデルを用いたキュープロセッサにおいて、プログラムの実行による命令ホール問題が発生したときのキュー内のデータの遷移状態を示す説明図である。
【図１３】図１３は、従来の生産消費順序型キュー計算モデルを用いたキュープロセッサにおいて、プログラムの実行によるクロスアーク問題が発生したときのデータの流れを示す説明図である。
【図１４】図１４は、従来の生産消費順序型キュー計算モデルを用いたキュープロセッサにおいて、プログラムの実行によるクロスアーク問題が発生したときのキュー内のデータの遷移状態を示す説明図である。
【図１５】図１５は、従来の生産消費順序型キュー計算モデルを用いたキュープロセッサにおいて、プログラムの実行による同値データ生産問題が発生したときのデータの流れを示す説明図である。
【発明を実施するための最良の形態】
【００４１】
以下、本発明の実施例について説明するが、これらの実施例は、あくまでも本発明の説
明のためのものであり、本発明の範囲を制限するものではない。したがって、当業者であ
れば、これらの各要素又は全要素を含んだ各種の実施例を採用することが可能であるが、
これらの実施例も本発明の範囲に含まれる。【００４２】
プログラムの中間結果格納用メモリにキューを用いるキュープロセッサの基本原理について説明する。【００４３】
《基本原理》
（１）キュープロセッサの計算方式
プロセッサにおいて、中間結果格納用メモリからデータを取り出す処理を消費とし、演算結果を中間結果格納用メモリに格納する処理を生産とすると、命令間の関係から、キュープロセッサを用いる計算モデルは次の３つに分けられる。【００４４】
１）生産消費順序型キュー計算モデル
キューに中間結果データを格納する順序が、生産される順序および消費される順序と一致する方式である。つまり、キュー内のデータの並び順が、データの生産順および消費順と一致する方式である。【００４５】
２）消費順序型キュー計算モデル
キューに中間結果データを格納するとき、消費される順序に従って格納する方式である。つまり、キュー内のデータの並び順が、データの消費順と一致する方式である。【００４６】
３）生産順序型キュー計算モデル
キューに中間結果データを格納するとき、生産される順序に従って格納し、消費する際には格納順序にかかわらず消費される順序に従ってデータを取り出す方式である。つまり、キュー内のデータの並び順が、データの生産順と一致する方式である。【００４７】
（２）生産消費順序型キュー計算モデルの問題点
生産消費順序型キュー計算モデルは、命令により生産され格納されるデータの順序（生産順）と格納された中から演算のために取り出すデータの順序（消費順）とが一致していないと正しく命令が実行されない。【００４８】
そのため、生産消費順序型キュー計算モデルでは、（i）命令ホール問題、（ii）クロスアーク問題、（iii）同値データ生産問題と呼ばれる３つの問題が発生する。これらの問題について説明する。【００４９】
（i）命令ホール問題
生産消費順序型キュー計算モデルで発生する命令ホール問題について、図１１および図１２を参照して説明する。【００５０】
図１１は、データ「a」,「b」,「c」,および「d」を用いて、x=「ab*c/d」,y=「c/d-d」を演算するプログラムの実行によるデータの流れを示す説明図である。【００５１】
図１１において、「ld」はデータメモリからデータをキューに読み込むロード命令であり、「*」は掛け算であり、「/」は割り算であり、「-」は引き算であり、「st」はキューのデータをメモリに格納するストア命令である。【００５２】
各命令は、命令A1→命令A2→命令A3・・・→命令A9→命令A10の順に実行され、実行内容により命令A1〜A4をレベル0、命令A5およびA6をレベル1、命令A7およびA8をレベル2、命令A9およびA10をレベル3とする。また、各矢印はデータの流れを示すアークである。【００５３】
図１１に示すように、メモリに格納されているメモリ格納データであるデータ「a」,「b」,「c」,および「d」がそれぞれ命令A1,A2,A3,およびA4において命令ldで読み込まれ（ロードされ）、命令A1においてロードされたデータ「a」と命令A2においてロードされたデータ「b」とが命令A5において掛け算されデータ「ab」が算出され、命令A3においてロードされたデータ「c」と命令A4においてロードされたデータ「d」とが命令A6により割り算されデータ「c/d」が算出され、命令A5において算出されたデータ「ab」と命令A6において算出されたデータ「c/d」とが命令A7において掛け算されデータ「ab(c/d)」が算出され、命令A6において算出された「c/d」から命令A4においてロードされたデータ「d」が引き算されデータ「c/d-d」が算出され、命令A7において算出されたデータ「ab(c/d)」が命令A9においてメモリのxに格納され、命令A8において算出されたデータ「c/d-d」が命令A10においてメモリのyに格納される。【００５４】
しかし、生産消費順序型キュー計算モデルにおいてこのプログラムが実行される場合、命令A4と命令A8との間のように、１レベル以上を飛び越えてアークが引かれているため正しく動作しない。【００５５】
生産消費順序型キュー計算モデルで図１１のプログラムが実行されたときの、キュー内のデータの遷移状態を図１２に示す。【００５６】
図１２において、左側は実行する命令であり、右側はキュー内のデータの格納状態を示す遷移図である。【００５７】
この図１２の命令の内容において、命令「ld a」はメモリのa番地のデータをキューに読み込む（ロードする）命令であり、命令「ld2 d」はメモリのd番地のデータを２個ロードする命令であり、命令「mul」,「div」,「sub」はそれぞれ掛け算、割り算、引き算を表す命令であり、命令「div2」は割り算の結果出力するデータ数が２個である命令であり、命令「st x」はメモリのx番地にデータを格納する命令である。【００５８】
一つの命令で生産または消費されるデータを｛｝内で表すと、図１２の場合はデータの生産順序はa,b,c,{d,d},ab,{c/d,c/d}…であるが、消費順序は{a,b}, {c,d}, {ab,c/d}, {c/d,d}…であり、データの生産と消費との順序関係を狂わすことになる。【００５９】
その結果、計算結果がx=ab(c/d)，y=cd-dとなるべきところが x=dab，y=c/d-c/dとなって誤った計算結果になる。これは図１１のIHで表す場所に命令が欠けていることが原因であり、このIHを命令ホールと呼び、この問題を命令ホール問題と呼ぶ。【００６０】
（ii）クロスアーク問題
生産消費順序型キュー計算モデルで発生するクロスアーク問題について、図１３および図１４を参照して説明する。【００６１】
図１３のA5,A6からA7,A8へのアークのように、クロスしている時にもキュープロセッサを用いて実行されるプログラムは正しく動作しない。【００６２】
生産消費順序型キュー計算モデルで図１３のプログラムが実行されたときの、キュー内のデータの遷移状態を図１４に示す。【００６３】
この図１４において、データの生産順序はa,b,c,d,{ab,ab},{c/d,c/d}・・・であるが、消費順序は{a,b},{c,d},{ab,c/d},{ab,c/d}・・・であり、アークのクロスすることによりデータの生産と消費との順序関係を狂わす。【００６４】
その結果、計算結果がx=ab(c/d)，y= ab-c/dとなるべきところが x=abab，y=c/d-c/dとなって誤った計算結果になる。この問題をクロスアーク問題と呼ぶ。【００６５】
（iii）同値データ生産問題
生産消費順序型キュー計算モデルでは、データは一度使われると消滅する。したがって同じ値のデータであっても、必要な個数だけ生産しなければならない。【００６６】
もし、図１５の命令A1のように１つの命令で多くのデータを生産しようとすると、命令長が大きくなり、また実行時間も長くなってしまう。この問題を同値データ生産問題と呼ぶ。【００６７】
《第１実施形態》
本発明の第１実施形態によるキュープロセッサは、基本原理において説明した計算モデルの中で、（i）命令ホール問題、（ii）クロスアーク問題、（iii）同値データ生産問題のすべてを解決することができるものである。【００６８】
〈第１実施形態によるキュープロセッサの構成〉
本実施形態によるキュープロセッサ１の構成を、図１を用いて説明する。【００６９】
本実施形態によるキュープロセッサ１は、フェッチユニット（ＦＵ）１２と、命令解釈ユニット（ＤＵ）１３と、キュー計算ユニット（ＱＣＵ）１４と、バリヤ・キュー制御ユニット（ＢＱＵ）１５と、発行ユニット（ＩＵ）１６と、実行ユニット（ＥＵ）１７と、第１演算データ格納用キュー１８と、第２演算データ格納用キュー１９と、フェッチバッファ（ＦＢ）２３と、デコードバッファ（ＤＢ）２４と、キュー計算バッファ（ＱＢ）２５とを有する。また、命令メモリ（ＩＭ）１１と、データメモリ（ＤＭ）２２とで外部メモリ（主メモリ）を構成する。【００７０】
命令メモリ１１は、プログラムを実行するための命令を格納する。【００７１】
フェッチユニット１２は、命令群を命令メモリ１１からフェッチする。【００７２】
命令解釈ユニット１３は、命令群を個々の命令に分ける。【００７３】
キュー計算ユニット１４は、命令が実行されたときのキューヘッドQH値およびキューテールQT値を計算する。【００７４】
バリヤ・キュー制御ユニット１５は、バリヤ系の命令を処理し、循環キューの制御を行う。【００７５】
発行ユニット１６は、実行可能命令群を見つけて実行ユニット１７に送出する。【００７６】
実行ユニット１７は、第１実行ユニット１７ａと第２実行ユニット１７ｂと第３実行ユニット１７ｃとを有し、それぞれが第１演算データ格納用キュー１８と第２演算データ格納用キューとの両方にアクセス可能である。これら第１実行ユニット１７ａと第２実行ユニット１７ｂと第３実行ユニット１７ｃとは、同一機能を有する。【００７７】
第１演算データ格納用キュー１８および第２演算データ格納用キュー１９は、演算に用いるデータを格納する中間結果格納用メモリである。【００７８】
データメモリ２２は、演算に用いるデータを格納する。【００７９】
フェッチバッファ２３、デコードバッファ２４、キュー計算バッファ２５は、パイプライン処理を行うためのバッファである。【００８０】
〈第１実施形態によるキュープロセッサの動作〉
本実施形態によるキュープロセッサ１の動作について説明する。【００８１】
まず、プログラムの実行が開始されると、命令メモリ１１から複数の命令で構成される命令群がフェッチユニット１２によりフェッチされる。【００８２】
フェッチされた命令群は、命令解釈ユニット１３において個々の命令に分けて解釈され、さらにキュー計算ユニット１４で命令がシリアルに実行されたときのキューヘッドQH値およびキューテールQT値が算出される。【００８３】
次に、バリヤ・キュー制御ユニット１５においてキューのオーバーフローとバリヤ系の命令の処理とが行われる。【００８４】
次に、発行ユニット１６において命令群がメモリアクセス命令と演算命令とに分けられ、実行可能な命令群が実行ユニット１７に送出される。【００８５】
次に、実行ユニット１７の第１実行ユニット１７ａ、第２実行ユニット１７ｂ、または第３実行ユニット１７ｃのいずれかにおいて、取得された命令群のメモリアクセス命令により必要なデータがデータメモリ２２から取得される。【００８６】
次に、取得されたデータが使用されて、実行ユニット１７の第１実行ユニット１７ａ、第２実行ユニット１７ｂ、または第３実行ユニット１７ｃのいずれかで演算命令が実行される。【００８７】
実行により得られた中間結果データは、第１実行ユニット１７ａ、第２実行ユニット１７ｂ、または第３実行ユニット１７ｃのいずれかから、第１演算データ格納用キュー１８または第２演算データ格納用キュー１９のいずれかに格納される。【００８８】
ここで、第１演算データ格納用キュー１８が主な演算データを格納することに用いられ、第２演算データ格納用キュー１９が後の演算で使用する必要データを格納することに用いられるときの、中間結果データの格納処理について説明する。【００８９】
図３は命令「sub Q1,Q2,Q1」が実行された場合について示したものであり、第１演算データ格納用キュー１８のキューヘッドQHから取得されたデータから、第２演算データ格納用キュー１９のキューヘッドQHから取得されたデータが引き算され、その演算結果が第１演算データ格納用キュー１８のキューテールQTに格納される。【００９０】
以上の第１実施形態によれば、演算データ格納用に２個のキューを使用しているため、一方を後の演算で使用するデータを一時的に格納するために使用することができ、クロスアーク問題，命令ホール命令，同値データ生産問題を解決することができる。【００９１】
第１実行ユニット１７ａと、第２実行ユニット１７ｂと、第３実行ユニット１７ｃとのそれぞれが第１演算データ格納用キュー１８および第２演算データ格納用キュー１９のいずれにもアクセス可能であり、アクセスする際に演算命令とアクセスするキューとを１つの命令で記述することが可能であるためオフセットが必要なく、従来の図１０に示すキュープロセッサで実行されていた転送ユニット１７ｘに転送する命令も必要ないため、プログラム長を短くすることができる。【００９２】
また、これらの複数の実行ユニットにより複数のデータを出し入れすることが可能であり、プログラムの実行速度を上げることができる。【００９３】
本実施形態において、演算データ格納用キューを２個用いて説明したが、これには限定されず、さらにキューの数を増やすことも可能である。【００９４】
《第２実施形態》
本発明の第２実施形態によるキュープロセッサは、第１演算データ格納用キューおよび第２演算データ格納用キューの他に、メモリアドレス修飾用レジスタの替わりにメモリアドレス用キューを用い、さらにシステム情報を格納するメモリとしてもキューを用いるものである。【００９５】
〈第２実施形態によるキュープロセッサの構成〉
本実施形態によるキュープロセッサ２の構成を、図４を用いて説明する。【００９６】
本実施形態によるキュープロセッサ２は、メモリアドレス用キュー２０と、システム情報用キュー２１を有する他は第１実施形態と同様であるため、詳細な説明は省略する。【００９７】
メモリアドレス用キュー２０は、メモリアドレス修飾用にインデックスとなるアドレスを格納する。【００９８】
システム情報用キュー２１は、戻り値アドレス、スタックポインタ、フレームポインタ、割り込みベクトル表ポインタ、例外時のPC、プログラムステータス語0〜3等のシステム情報を格納する絶対アドレスを有しており、実際にはレジスタと同様の方法で使用される。【００９９】
〈第２実施形態によるキュープロセッサの動作〉
本実施形態によるキュープロセッサ１の動作について説明する。【０１００】
本実施形態において、命令メモリ１１から発行ユニット１６で行われる処理は第１実施形態と同様であるため、詳細な説明を省略する。【０１０１】
実行ユニット１７でメモリアクセス命令が取得されると、このメモリアクセス命令を基にデータメモリ２２にアクセスが行われる。【０１０２】
メモリアクセス命令は、ファンクション部、メモリアドレス部、修飾用アドレス部からなる。この修飾用アドレス部により、複数のキューの中から、メモリアドレス修飾用にインデックスとなるアドレスを格納するメモリアドレス用キュー２０が指定される。【０１０３】
本実施形態において、キューは、第１演算データ格納用キュー１８、第２演算データ格納用キュー１９、メモリアドレス用キュー２０、およびシステム情報用キュー２１の４個が使用されるため、これらを識別するためには２ビットあれば足りる。【０１０４】
そのため、メモリアクセス命令は、ファンクション部に８ビット、メモリアドレス部に１６ビット、修飾用アドレス部に２ビットで構成され、命令長が２６ビットになる。【０１０５】
このように構成されたメモリアクセス命令が実行ユニット１７で実行されることにより、データメモリ２２からデータが取得される。【０１０６】
本実施形態において、データメモリ２２からメモリアクセス命令によりデータを取得する際の動作について図５および図６を参照して説明する。【０１０７】
図５および図６において、（ａ）はメモリアドレス用キュー２０であり、（ｂ）はデータメモリ２２である。【０１０８】
データメモリ２２の512番地にアクセスする場合、図５（ａ）に示すように、キューヘッドQHの位置からメモリアドレス修飾用のアドレスデータ「500」が取得されるため、メモリアクセス命令では「ld 12」が示されるのみでアクセス可能である。【０１０９】
また、データメモリ２２の9012番地にアクセスする場合、図６（ａ）に示すように、キューヘッドQHの位置からメモリアドレス修飾用のアドレスデータ「9000」が取得されるため、メモリアクセス命令では「ld 12」が示されるのみでアクセス可能である。【０１１０】
図５（ｂ）または図６（ｂ）に示すように、データメモリ２２から取得されたデータは、第１演算データ格納用キュー１８または第２演算データ格納用キュー１９のいずれかに格納される。【０１１１】
次に、第１演算データ格納用キュー１８または第２演算データ格納用キュー１９のいずれかに格納されたデータを用いて、演算命令が実行される。【０１１２】
演算命令の実行動作については、第１実施形態と同様であるため、詳細な説明は省略する。【０１１３】
また、メモリアドレス用キュー２０は、空きのキュー語を演算データの中間結果格納用として使用することも可能である。【０１１４】
また、システム情報用キュー２１は、図７に示すように、スタックレジスタ、戻り値アドレスなどのシステム情報が絶対アドレスで格納されており、必要に応じてレジスタと同様の方法で使用されるが、空きのキュー語を演算データの中間結果格納用のランダムアクセスのレジスタとして使用することも可能である。【０１１５】
以上の第２実施形態によれば、メモリアドレス修飾用のアドレスを格納するメモリとしてメモリアドレス用キューを使用するため、メモリアクセス命令のメモリアドレス修飾用アドレスを指定する際にこのメモリアドレス用キューを指定すればよく、オフセットが不要になる。【０１１６】
そのため、メモリアドレス修飾用アドレスを格納するメモリとしてレジスタを使用していた場合には命令が２９ビット（ファンクション部８ビット、メモリアドレス部１６ビット、修飾用レジスタ部５ビット）で構成されていたのに対し、本実施形態では２６ビットで構成することができ、命令長を短くすることができる。【０１１７】
また、演算データ格納用、メモリアドレス用、およびシステム情報用のメモリにすべてキューを使用することにより、プロセッサの構成が簡易になるとともに、メモリアドレス用キューやシステム情報用キューも演算データ格納用に使用することも可能であり、さらにパフォーマンスの向上を図ることができる。【０１１８】
また、これらのキューはランダムアクセス方式でデータの格納および取り出しを行うことも可能である。【０１１９】
本発明のキュープロセッサおよびキュープロセッサによるデータ処理方法によれば、従来のレジスタに換えて複数のキューを設けることにより、実行する命令の命令長を短くして高速な演算処理を可能にすることができるとともに、プロセッサの構成を簡易にして省エネルギー化を図ることができる。
【図１】
2007094256.tif 000003
【図２】
2007094256.tif 000004
【図３】
2007094256.tif 000005
【図４】
2007094256.tif 000006
【図５】
2007094256.tif 000007
【図６】
2007094256.tif 000008
【図７】
2007094256.tif 000009
【図８】
2007094256.tif 000010
【図９】
2007094256.tif 000011
【図１０】
2007094256.tif 000012
【図１１】
2007094256.tif 000013
【図１２】
2007094256.tif 000014
【図１３】
2007094256.tif 000015
【図１４】
2007094256.tif 000016
【図１５】
2007094256.tif 000017
【国際調査報告】
2007094256.tif 000018
2007094256.tif 000019
2007094256.tif 000020