(57)【要約】【課題】  プロセッサエレメントのデータエレメントに対する演算の指示を効率的に送信することによって演算処理にかかる時間を短縮できる演算処理装置を提供する。【解決手段】  複数のスレッドを並行して処理可能なプロセッサ部１と、プロセッサ部１の依頼に応じて演算処理を実行する複数の演算機能を有する演算実行部１５０を備える演算処理部２とを備える演算処理装置において、プロセッサ部１が、複数のスレッドが発生する演算の実行依頼を調整する演算依頼調整部と、調整の結果にしたがって複数の演算機能の各々に対して演算の実行を依頼したスレッドを特定するための情報と、依頼された演算を実行するための情報とを含むデータをパケット送信する送受信部とを備える。【選択図】  図１
2006099337.tif 000002
【特許請求の範囲】
【請求項１】
複数のスレッドを並行して処理可能なプロセッサ部と、
前記プロセッサ部の依頼に応じて演算処理を実行する複数の演算実行手段を有する演算処理部と、を備える演算処理装置であって、
前記プロセッサ部は、
前記複数のスレッドが発生する前記演算実行手段に対する演算の実行依頼を調整する演算依頼調整手段と、
前記演算依頼調整手段による調整の結果にしたがって、複数の前記演算実行手段の各々に対して演算の実行を依頼したスレッドを特定するための情報と、依頼された演算を実行するための情報とを含むデータをパケット送信する実行依頼送信手段と、を備えることを特徴とする演算処理装置。
【請求項２】
複数の前記演算実行手段は、各々が互いに異なる種別の演算を専用に実行することを特徴とする請求項１に記載の演算処理装置。
【請求項３】
複数の前記演算実行手段は、前記プロセッサ部における動作の最小単位で処理可能な処理以上の処理量を要する演算を実行するハードウェア構成であることを特徴とする請求項２に記載の演算処理装置。
【請求項４】
前記演算の実行依頼は、演算実行を依頼したスレッドを特定するための情報、演算の実行が依頼された前記演算実行手段を特定するための情報を少なくとも含むことを特徴とする請求項１から３のいずれか１項に記載の演算処理装置。
【請求項５】
前記実行依頼送信手段は、前記演算実行手段に対する演算の実行依頼に係る情報の送信専用に設けられることを特徴とする請求項１から４のいずれか１項に記載の演算処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置に関する。
【背景技術】
【０００２】
現在、プログラムをスレッドと呼ばれる実行単位に分割し、このスレッドを並列に実行するマルチスレッド方式のプロセッサ部がある。マルチスレッド方式は、演算にかかる総合的な時間を短縮することを主な目的としてなされたものである。近年、マルチスレッド方式における演算の効率を高め、いっそう演算処理にかかる時間を短縮することを目的とした技術も多数提案されている。
【０００３】
このようなマルチスレッドについての従来技術として、例えば、特許文献１、特許文献２が挙げられる。特許文献１に記載された発明は、マルチスレッド方式のプロセッサにおけるレジスタの承継にかかるものであり、レジスタの内容をコピーすることなくレジスタを承継可能にしたものである。このような技術によれば、プロセッサにおける演算処理を、ｉｎ−ｏｒｄｅｒ発行型、ｏｕｔ−ｏｆ−ｏｒｄｅｒ発行型のいずれに対しても効率的に行うことができる。
【０００４】
また、特許文献２は、メインのＣＰＵからサブ処理装置からサブ処理装置にマクロ命令を発行する。そして、マクロ命令の発行以前に指令されたマクロ命令の実行結果をサブ処理装置からメインＣＰＵのバスサイクルに呼応して出力させ、メインＣＰＵとサブ処理装置との演算効率を高めている。
【特許文献１】特開２０００−２０３２６号公報
【特許文献２】特開平６−１３１１８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記した従来技術は、いずれもスレッドの処理を指示する側（例えばプロセッサエレメント）から処理にかかる演算を実行する構成（例えばデータエレメント）に対し、演算を指示するデータ（指示データ）をスレッドごとにデータバスによって送出している。このため、従来技術では、あるスレッドの指示データ送信中はバスがこのスレッドに占有され、他のスレッドの指示データをデータエレメントに送出することができないという不具合があった。
【０００６】
本発明は、上記した点に鑑みてなされたものであり、プロセッサエレメントのデータエレメントに対する演算の指示を効率的に送信し、データエレメントを有効に活用して全体的に演算処理にかかる時間を短縮可能な演算処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
以上の課題を解決するため、本発明の演算処理装置は、複数のスレッドを並行して処理可能なプロセッサ部と、前記プロセッサ部の依頼に応じて演算処理を実行する複数の演算実行手段を有する演算処理部と、を備える演算処理装置であって、前記プロセッサ部は、前記複数のスレッドが発生する前記演算実行手段に対する演算の実行依頼を調整する演算依頼調整手段と、前記演算依頼調整手段による調整の結果にしたがって、複数の前記演算実行手段の各々に対して演算の実行を依頼したスレッドを特定するための情報と、依頼された演算を実行するための情報を含むデータをパケット送信する実行依頼送信手段と、を備えることを特徴とする。
【０００８】
このような発明によれば、複数のスレッドを並行して処理する場合、複数のスレッドに係る演算の実行をパケット通信によって演算実行手段に依頼することができる。このため、演算依頼に用いられる通信網、あるいは回線を特定のデータが占有することがなく、効率的に演算の依頼を送信することができる。さらに、演算依頼調整手段が演算の実行依頼を調整するため、演算実行手段の側で演算の依頼が競合することがなく、演算実行手段の使用効率を高めることができる。このような本発明は、プロセッサエレメントのデータエレメントに対する演算の指示を効率的に送信し、データエレメントを有効に活用して全体的に演算処理にかかる時間を短縮可能な演算処理装置を提供することができる。
【０００９】
また、本発明の演算処理装置は、複数の前記演算実行手段が、各々が互いに異なる種別の演算を専用に実行することを特徴とする。
このような発明によれば、各演算実行手段の演算処理効率を高めることができる。また、プロセッサ部においても演算を依頼するためのデータを演算実行手段ごとにパケット化することができる。
【００１０】
また、本発明の演算処理装置は、複数の前記演算実行手段が、前記プロセッサ部における動作の最小単位で処理可能な処理以上の処理量を要する演算を実行するハードウェア構成であることを特徴とする。
このような発明によれば、１サイクルで処理できない処理量の演算を高速に動作できるハードウェア側で実行することができる。このため、プロセッサ部にかかる負荷を軽減すると共に装置全体の演算にかかる時間を短縮し、より高速に演算処理をすることができる。
【００１１】
また、本発明の演算処理装置は、前記演算の実行依頼が、演算実行を依頼したスレッドを特定するための情報、演算の実行が依頼された前記演算実行手段を特定するための情報を少なくとも含むことを特徴とする。
このような発明によれば、実行依頼に含まれる情報を利用して簡易に演算を依頼するデータを生成することができる。
【００１２】
また、本発明の演算処理装置は、前記実行依頼送信手段が、前記演算実行手段に対する演算の実行依頼に係る情報の送信専用に設けられることを特徴とする。
このような発明によれば、演算の実行依頼をいっそう円滑に送信することができ、演算の依頼の送信効率をいっそう高めることができる。
【発明を実施するための最良の形態】
【００１３】
以下、図を参照して本発明の一実施形態に係る演算処理装置の実施の形態を説明する。
図１は、本実施形態の演算処理装置を説明するための図である。図示した演算処理装置は、複数のスレッドを並行して処理可能なプロセッサ部１と、プロセッサ部１の依頼に応じて演算処理を実行する演算実行部１５０を有する演算処理部２とを備えている。また、本実施形態の演算処理装置は、演算処理装置の処理に使用されるプログラムやデータ、あるいは演算処理部２の演算結果を記憶するためのメモリエレメント３を備えている。
【００１４】
プロセッサ部１は、演算処理部２に対する演算の実行依頼（演算依頼）を調整する演算依頼調整部１０５と、演算依頼調整部１０５による調整の結果にしたがって、演算処理部２に演算依頼に必要なデータを送信する送受信部１０７とを備えている。なお、演算依頼調整部１０５は、上記した演算依頼の調整の他、送受信部１０７に対する送信の依頼、送受信部１０７におけるデータの受信判定及び受信の通知全般を制御する制御部としても機能する。
【００１５】
このようなプロセッサ部１は、主にソフトウェアによって動作する。なお、プロセッサ部１の動作タイミングは、サイクルと呼ばれる複数のクロックでなる単位時間を基準にして決定する。本実施形態では、サイクルを動作の最小単位とし、例えば、ある動作が３サイクルで完了するというように用いる。
一方、演算処理部２は、送受信部１０７から送信されたデータを受信する送受信部１０９、送受信部１０９が受信したデータを受け取り、このデータに基づいて演算を実行する演算実行部１５０を備えている。演算実行部１５０は、複数の演算機能でなり、各演算機能は、各々が互いに異なる種別の演算を専用に実行する。
【００１６】
本実施形態では、演算実行部１５０が、平均値算出部１１１、差分絶対値和算出部１１３、半画素生成部１１５、イントラ処理部１１７、間引き処理部１１９、補間処理部１２１、比較処理部１２３でなるものとする。このような各演算機能は、いずれも画像処理のための演算を実行するものである。
このような演算処理部２は、ハードウェアで構成されている。このため、ソフトウェアで動作するプロセッサ部１よりも演算を高速に処理することが可能である。
【００１７】
送受信部１０９は、このような複数の演算機能の各々に対して演算依頼をパケット送信する。本実施形態でいう演算依頼に必要なデータとは、複数の演算機能の各々に対して演算の実行を依頼したスレッドを特定するための情報と、依頼された演算を実行するための情報とを含むデータである。
また、本実施形態の送受信部１０９は、演算処理部２に対する演算依頼と共に必要なデータの送受信用に設けられるものである。送受信部１０９を演算依頼専用に設けたことにより、本実施形態は、プロセッサ部１から演算処理部２へ演算依頼をスムーズに送信し、演算依頼が送信を待つ時間を短縮することができる。
【００１８】
以上の構成は、以下のように動作する。すなわち、プロセッサ部１においては、複数のスレッドがメモリエレメント３から読み出され、演算依頼調整部１０５に各々演算依頼のコマンドを渡す。図１に示した例では、スレッド１０３ａ（ＴＨ１）、スレッド１０３ｂ（ＴＨ２）、スレッド１０３ｃ（ＴＨ３）、スレッド１０３ｄ（ＴＨ４）がプロセッサ部１において並列に処理されている。本実施形態では、各スレッドが、パケット式のデータとして演算依頼のコマンドを演算依頼調整部１０５に渡すものとする。
【００１９】
図２は、演算依頼のコマンドのパケットを例示した図である。図示した例は、スレッド１０３ａの演算依頼を示したものであって、スレッド１０３ａで行われる演算の種別を演算の実行順序にしたがって示すものである。なお、図２に示したＤＥ３、ＤＥ２…は、データエレメント３、演算処理部２…を意味し、演算を実行する演算機能の種別を示している。
【００２０】
本実施形態では、ＤＥ１が平均値算出部１１１を、ＤＥ２が差分絶対値和算出部１１３を、ＤＥ３が半画素生成部１１５を、ＤＥ４がイントラ処理部１１７を、ＤＥ５が間引き処理部１１９を、ＤＥ６が補間処理部１２１を、ＤＥ７が比較処理部１２３をそれぞれ示している。したがって、図示したＴＨ１では、先ず半画素生成部１１５に演算を依頼し、次に差分絶対値和算出部１１３に演算が依頼される。さらに、平均値算出部１１１に連続して２度の演算の依頼がなされ、イントラ処理部１１７に演算の依頼がなされる。
【００２１】
また、図２では、パケットに演算機能を特定するＤＥ１、ＤＥ３等の文字を記し、スレッドが送出するパケットが演算の実行が依頼された演算機能を特定するための情報を含むことを示している。また、各パケットのデータには、演算機能ばかりでなく演算の実行を依頼したスレッドを特定するための情報が含まれている。このことを、図２のパケットの先頭にＴＨ１の文字を記すことによって示す。
【００２２】
演算依頼調整部１０５は、図２に示したようなパケットを他のスレッド（ＴＨ２、ＴＨ３…）からも受け取って管理する。図３は、この管理に使用される管理テーブルを示した図である。図示した管理テーブルにおいては、パケットを平均値算出部１１１（ＤＥ１）、差分絶対値和算出部１１３（ＤＥ２）といった演算機能ごとに演算の実行を依頼したスレッドの番号（ＴＨ１、ＴＨ２…）と、依頼された演算を実行するためのデータ等とを管理する。そして、管理テーブルに基づいて、演算処理部２に演算依頼をするためのデータを生成する。
【００２３】
演算依頼をするためのデータは、演算処理部２における各演算機能の使用効率が最も高まるように生成される。すなわち、平均値算出部１１１、差分絶対値和算出部１１３、半画素生成部１１５、イントラ処理部１１７、間引き処理部１１９、補間処理部１２１、比較処理部１２３の各演算機能において、例えば、演算を行っていない待ち時間の合計が最小になる組合せを選択する。そして、この組合せに基づいてデータを生成することにより、演算機能の使用効率が高まるデータを生成することができる。
【００２４】
なお、演算依頼のデータの生成には、演算機能の使用効率ばかりでなく、スレッド間の優先順位等、他の条件が考慮される場合があることは言うまでもない。
図４は、演算依頼のためのデータを例示する図である。図示したデータは、パケットの単位で送信されるデータであって、平均値算出部１１１に対して行われる演算依頼のものである。図示したデータは、平均値算出部１１１に対して、先ず、ＴＨ１に依頼された演算を実行し、次にＴＨ３に依頼された演算を実行するように指示する。さらに、以降、順次、ＴＨ２、ＴＨ７、ＴＨ４の順序で依頼された演算を実行するよう指示するものである。
【００２５】
なお、図４に示した各パケットのデータには、管理テーブルで管理されていた演算に必要なデータ等をも含まれている。このようなデータは、演算依頼調整部１０５から送受信部１０７に渡され、送受信部１０７からパケット単位で送受信部１０９に送信される。
演算処理部２では、送受信部１０９が図４に示したデータを受け取る。そして、送受信部１０９は、パケットごとのデータに含まれるＤＥ１、ＤＥ２…の情報にしたがって平均値算出部１１１、差分絶対値和算出部１１３、半画素生成部１１５、イントラ処理部１１７、間引き処理部１１９、補間処理部１２１、比較処理部１２３のいずれかにデータをパケットごとに振り分ける。
【００２６】
平均値算出部１１１、差分絶対値和算出部１１３、半画素生成部１１５、イントラ処理部１１７、間引き処理部１１９、補間処理部１２１、比較処理部１２３は、各々依頼された演算を実行し、演算の結果をプロセッサ部１に返す、あるいはメモリエレメント３に書き込む。
以上述べた本実施形態によれば、送受信部１０７、送受信部１０９間の通信において回線が占有されることがなく、プロセッサ部１から演算処理部２へ演算依頼が効率よく送信できる。また、このような効果は、１つのスレッドをより小さくして並行に処理されるスレッドの数を増やした場合により大きくなる。
【００２７】
ところで、演算にかかる時間を短縮するにあたり、並行して処理されるスレッドを増やす方法は、クロックを上げて処理速度を高めるよりも演算処理装置の消費電力を省力化ことに有利である。したがって、並行に処理されるスレッドを増やす場合に効果を奏する本実施形態は、高速であって、かつ、消費電力の小さい演算処理装置を構成することに適したものであるといえる。
【００２８】
また、本実施形態は、プロセッサ部が１サイクルで演算依頼を演算処理部２に送出できることから、演算処理部２が有する複数の演算機能（平均値算出部１１１、差分絶対値和算出部１１３等）を、いずれも、プロセッサ部１が１サイクルで処理可能な処理以上の処理量を要する演算を実行するハードウェア構成とした。このような構成により、本実施形態は、プロセッサ部１にかかる演算の負荷を軽減し、また、処理量の多い演算をハードウェア側で処理することができる。
【００２９】
図５は、以上述べた本実施形態の処理を説明するためのフローチャートである。図示したフローチャートに示すように、本実施形態では、プロセッサ部１の演算依頼調整部１０５が、複数のスレッドの各々から演算処理部２（図中ＤＥと記す）に依頼する演算（処理）を要求する（Ｓ５０１）。そして、要求に応じて取得した演算依頼に基づいて演算を依頼するためのパケット式のデータを生成する（Ｓ５０２）。そして、演算依頼調整部１０５から送受信部１０７に対し、生成されたデータの送信が依頼される（Ｓ５０３）。
【００３０】
次に、演算依頼調整部１０５は、演算処理部２へのデータ送信が終了したか否か判断する（Ｓ５０４）。この結果、終了していない場合（Ｓ５０４：Ｎｏ）、終了するまで待機する。また、データの送信が終了した場合（Ｓ５０４Ｙｅｓ）、演算処理部２が演算依頼のデータを受信する（Ｓ５０５）。演算処理部２は、パケット単位で送信されてきたデータの内容を内部で判定し（Ｓ５０６）、先頭にあるパケットが示す演算を、対応する演算機能に実行させる（Ｓ５０７）。
【００３１】
次に、演算処理部２は、完了した演算の依頼をしたパケットをデータから削除し、演算を依頼したパケットのすべてについて演算が終了したか判断する（Ｓ５１０）。この判断の結果、依頼された演算を示すパケットがすべて終了していない場合（Ｓ５０９：Ｎｏ）、パケットが示す演算を実行し、完了したパケットを削除する処理を繰り返す。
ステップＳ５０９において、演算が全て終了してパケットがなくなったと判断された場合（Ｓ５０９：Ｙｅｓ）、演算処理部２は、演算依頼を送信したスレッドを特定する。そして、特定されたスレッドを、演算結果の返信先に決定する（Ｓ５１１）。そして、決定した返信先に演算結果を送信する。なお、本実施形態では、演算処理部２の送受信部１０９に送受信にかかる簡単な制御部を設け、この制御部でパケットの内容の判定や演算機能に対する振り分け等の制御を行うものとする。以上の処理により、演算処理部２からプロセッサ部１に演算の実行結果を示すデータが返信先のスレッドを示すデータと共に返信されてくる。
【００３２】
プロセッサ部１は、返信されてきたデータを送受信部１０７で受信する（Ｓ５１２）。演算依頼調整部１０５は、受信したデータに含まれる返信先のスレッドを判定し、このスレッドに演算結果が送信されてきたことを通知する（Ｓ５１４）。さらに、返信されてきたデータを、演算依頼したスレッドに返信する（Ｓ５１５）。
【図面の簡単な説明】
【００３３】
【図１】本発明の一実施形態の演算処理装置を説明するための図である。
【図２】本発明の一実施形態の演算処理装置において生成される演算依頼のコマンドのパケットを例示した図である。
【図３】本発明の一実施形態の演算処理装置において演算依頼を管理する管理テーブルを示した図である。
【図４】本発明の一実施形態の演算依頼のためのデータを例示する図である。
【図５】本発明の一実施形態の演算処理装置においてなされる処理を示したフローチャートである。
【符号の説明】
【００３４】
１  プロセッサ部、２  演算処理部、３  メモリエレメント、
１０３ａ，１０３ｂ，１０３ｃ，１０３ｄ  スレッド、１０５  演算依頼調整部
１０７  送受信部、１０９  送受信部、１１１  平均値算出部
１１３  差分絶対値和算出部、１１５  半画素生成部、１１７  イントラ処理部
１１９  間引き処理部、１２１  補間処理部、１２３  比較処理部
１５０  演算実行部
【図１】
2006099337.tif 000003
【図２】
2006099337.tif 000004
【図３】
2006099337.tif 000005
【図４】
2006099337.tif 000006
【図５】
2006099337.tif 000007