JP4647533B2 - 演算処理装置、演算処理装置の内部構成決定方法および演算処理システム - Google Patents

演算処理装置、演算処理装置の内部構成決定方法および演算処理システム Download PDF

Info

Publication number
JP4647533B2
JP4647533B2 JP2006091025A JP2006091025A JP4647533B2 JP 4647533 B2 JP4647533 B2 JP 4647533B2 JP 2006091025 A JP2006091025 A JP 2006091025A JP 2006091025 A JP2006091025 A JP 2006091025A JP 4647533 B2 JP4647533 B2 JP 4647533B2
Authority
JP
Japan
Prior art keywords
unit
data
arithmetic processing
priority
arithmetic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006091025A
Other languages
English (en)
Other versions
JP2007172569A (ja
Inventor
博之 関山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Semiconductor Ltd
Original Assignee
Fujitsu Semiconductor Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Semiconductor Ltd filed Critical Fujitsu Semiconductor Ltd
Priority to JP2006091025A priority Critical patent/JP4647533B2/ja
Priority to US11/553,165 priority patent/US7624252B2/en
Publication of JP2007172569A publication Critical patent/JP2007172569A/ja
Application granted granted Critical
Publication of JP4647533B2 publication Critical patent/JP4647533B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/507Low-level

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Description

本発明は、演算処理装置、演算処理装置の内部構成決定方法および演算処理システムに関する。
所望のアプリケーションを実現するLSI(Large Scale Integration)の手段として、ASIC(Application Specific Integrated Circuit)やプロセッサなどが挙げられる。ASICは、ハードワイヤード構成であるため、プログラマビリティが低いという欠点がある。また、ASICでは、アプリケーションがトランジスタへの展開により実現されるため、アプリケーションの処理を開始してから終了するまでの一連の動作におけるリソースの有効活用という点で効率が悪い。
一方、プロセッサでは、リソースを非共有とするマルチプロセッシングのような分散処理型アーキテクチャを採用する場合、アプリケーションを各々のプロセッサエレメント毎にタスク分解するために、分解能力の高いコンパイラが必要となる。しかしながら、そのようなコンパイラは現存せず、人手によりタスク分解を実施した後に、タスク分解の最適化を図るために膨大な時間を費やして微調整する必要がある。
また、プロセッサでは、リソースを非共有とする分散処理型アーキテクチャを採用する場合、リソースの使用率が高くなり難いという欠点がある。プロセッサ間でのリソースの共有がないため、各々のプロセッサにおいて限られたリソースを使い切らなくてはならない。このため、タスク分解およびタスク分解の最適化が難しいわりには、処理性能および回路面積の面で十分な実力があるとは言い難い。
より詳細に説明すると、マルチプロセッサでは、複数のプロセッサコアがネットワークあるいはバスを介して接続されており、プロセッサコア毎に専用の拡張演算処理部あるいはプログラマブル拡張演算処理部が設けられている。各プロセッサコアは、拡張演算処理部やプログラマブル拡張演算処理部のリソースを用いて演算処理を実施する。しかしながら、演算処理用のリソースがプロセッサコア毎に独立して設けられているため、プロセッサコアに割り当てられたタスクによってリソースが最大限に効率良く使用されるとは限らない。多くの場合は、演算処理が短時間で完了して頻繁にアイドル状態となるプロセッサコアがある一方で、常に演算処理を実施し、場合によっては要求される時間までに演算処理が完了しないプロセッサコアがあるなど、リソースが効率良く使用されていない。ソフトウェア設計(機能割り当て)の効率を重視するほど、この傾向が強くなるが、逆に、リソースの使用効率を重視すると、タスク分解やコンパイラの負荷が高まる。そして、このようなコンパイラの開発は難しいとされている。
以上のようなことから、所望のアプリケーションを容易に実現でき、かつリソースを有効に活用できる技術が望まれている。このような要望に応えるために、例えば、アーキテクチャの再構成を可能にしたLSI(リコンフィギュアブルLSI)の開発が進んでいる。特許文献1には、電気的に再構成可能なゲートアレイを用いて論理構成を構築する技術が開示されている。特許文献2には、プログラマブル論理チップの内部に入出力回路間の接続または入出力回路および論理・配線ブロック間の接続を可能にするプログラマブル配線領域を設けることで、マルチチップシステムを構成する場合の遅延量の増加やチップ間配線に使用される配線要素の増加を抑制する技術が開示されている。
特開2000−36737号公報 特開平6−231283号公報
LSIとして構成される演算処理装置において、演算処理部は、高速化および高集積化へ向かう傾向にあるが、外部インタフェース部は、必ずしも演算処理部と同じように高速化されるとは限らない。このため、演算処理部が必要以上に高速化および高集積化されている可能性がある。なぜならば、演算処理部の動作速度(処理速度)は、所望のスループット(単位時間あたりに演算処理装置が処理結果データを外部に出力する回数)を満たす範囲であれば遅くてもよいからである。演算処理部が過剰に高速化および高集積化されている場合、演算処理に使用されないリソース(レジスタや演算器など)が多数存在していることになり、回路面積が無駄に増大していることになる。
本発明は、このような問題に鑑みてなされたものであり、演算処理装置のスループットを低下させることなく、演算処理用のリソースの数を最小限に抑える技術を提供することを目的とする。
本発明の一態様では、演算処理装置は、複数の入力バッファ部と、演算処理部と、複数の出力バッファ部と、制御部とを備える。入力バッファ部は、複数のデータ系列に対応して設けられ、対応する外部入力データを格納して処理対象データとして出力する。演算処理部は、データ系列毎に処理対象データに対して所望の演算処理を実施して処理結果データを出力するために、接続情報に応じて内部の構成要素の接続関係を確立することで演算処理機能を変更する。出力バッファ部は、データ系列に対応して設けられ、対応する処理結果データを格納して外部出力データとして出力する。制御部は、処理サイクル毎に、データ系列に対応する複数の命令情報に対して、命令情報が示す演算への演算処理部の構成要素の割り当てに関する制御処理を実施し、制御処理における演算処理部の構成要素の割り当て結果を接続情報として出力する。制御部は、制御処理において、命令情報が示す演算を実行可である場合に、演算に割り当てる演算処理部の構成要素を決定し、演算処理部の構成要素の不足により命令情報が示す演算を実行不可である場合に、演算を実行すべき処理サイクルを次の処理サイクルに移行させるとともに、演算を実行すべき処理サイクルにおいて演算が実行されたときに演算の結果が出力バッファ部から出力されるべきタイミングで次の処理サイクルにおいて実行された演算の結果を出力バッファ部から出力させる。
本発明に関連する技術では、演算処理装置は、複数の入力バッファ部、演算処理部、複数の出力バッファ部および制御部を備えて構成される。入力バッファ部は、複数のデータ系列に対応して設けられる。各入力バッファ部は、対応する外部入力データを格納して処理対象データとして出力する。演算処理部は、データ系列毎に処理対象データに対して所望の演算処理を実施して処理結果データを出力するために、接続情報に応じて内部の構成要素の接続関係を確立することで演算処理機能を変更する。例えば、演算処理部は、複数のレジスタ、複数の演算器、複数のメモリおよび接続関係変更部を備えて構成される。レジスタ、演算器およびメモリは、演算処理部の構成要素として設けられる。接続関係変更部は、接続情報に応じて、レジスタ、演算器およびメモリの接続関係を変更する。
出力バッファ部は、データ系列に対応して設けられる。各出力バッファ部は、対応する処理結果データを格納して外部出力データとして出力する。制御部は、処理サイクル毎に、データ系列に対応する複数の命令情報に対して制御処理を所定順序で実施し、制御処理における演算処理部の構成要素の割り当て結果を接続情報として出力する。制御部は、制御処理において、命令情報が示す演算を実行可である場合に、演算に割り当てる演算処理部の構成要素を決定し、演算処理部の構成要素の不足により命令情報が示す演算を実行不可である場合に、出力バッファ部のデータ出力タイミングを満たしたうえで演算を実行すべき処理サイクルを次の処理サイクルに移行させる。
このような演算処理装置の内部構成(演算処理部の構成要素の数)は、以下に示す第1〜第4工程を実施して決定される。まず、演算処理部の構成要素の数をパラメータ化した演算処理装置の回路記述を用いて、演算処理部の構成要素の数を、制御処理で常に演算実行可となる値に設定してシミュレーションを実施する(第1工程)。次に、第1工程で実施したシミュレーションの結果から、そのシミュレーションで制御部により演算に割り当てられた演算処理部の構成要素の数を仮設計値として取得する(第2工程)。
次に、演算処理部の構成要素の数をパラメータ化した演算処理装置の回路記述を用いて、演算処理部の構成要素の数を、仮設計値より小さい値を初期値として順次減少させながら、出力バッファ部のデータ出力タイミングが満たされなくなるまでシミュレーションを繰り返し実施する(第3工程)。そして、第3工程で実施したシミュレーションのうち、出力バッファ部のデータ出力タイミングが満たされた最後のシミュレーションの結果から、そのシミュレーションで制御部により演算に割り当てられた演算処理部の構成要素の数を実設計値として取得する(第4工程)。
例えば、演算処理部の構成要素として、複数のレジスタ、複数の演算器および複数のメモリが設けられる場合には、第1および第3工程において、演算処理部の構成要素の数として、レジスタの数、演算器の数およびメモリの数をパラメータ化した演算処理装置の回路記述を用いてシミュレーションを実施する。好ましくは、第1および第3工程において、レジスタの数、演算器の数およびメモリの数に加えて、各メモリの容量をパラメータ化した演算処理装置の回路記述を用いてシミュレーションを実施する。
演算処理部の構成要素の数が前述の方法により取得された実設計値である演算処理装置では、ある命令情報に対する制御処理において、演算処理部の構成要素の不足に起因して命令情報が示す演算を実行すべき処理サイクルが現在の処理サイクルから次の処理サイクルに変更されたとしても、出力バッファ部のデータ出力タイミングは必ず満たされる。従って、演算処理装置のスループットを低下させることなく、演算処理部の構成要素の数(レジスタの数、演算器の数およびメモリの数)を最小限に抑えることができる。すなわち、演算処理装置の処理性能を保ちながら回路面積を削減できる。
また、前述のような構成の演算処理装置は、複数のデータ系列に対応する複数のメイン演算処理部と、メイン演算処理部に共通して設けられ、メイン演算処理部に代わって演算処理を実施するサブ演算処理部とを有する演算処理システムにおいて、サブ演算処理部として用いられる。このような演算処理システムとしては、マルチプロセッサが挙げられる。マルチプロセッサにおいて、ネットワークあるいはバスを介して接続される複数のプロセッサコアが複数のメイン演算処理部に対応し、複数のプロセッサコアにより共有される共有演算処理部がサブ演算処理部に対応する。
このような構成のマルチプロセッサでは、各プロセッサコアにより実現される機能の要求性能を満たしつつ、演算処理用のリソースの数を最小限に抑えることができる。このため、マルチプロセッサの全体で高効率なリソース使用を実現できるとともに、マルチプロセッサの小面積化を図ることができる。そして、マルチプロセッサによるアプリケーションの実現を前提にしたソフトウェア設計の面では、従来、個々のプロセッサコアに対してソフトウェア設計時に実施されていたリソースの使用効率の最適化が共有演算処理部(本技術の演算処理装置)により実施されるため、ソフトウェア設計が容易になるという大きな効果が得られる。このように、本技術の演算処理装置をマルチプロセッサにおける共有演算処理部に用いることで、システム設計における総合的な最適化を実現できる。
本発明に関連する技術における好ましい例では、各入力バッファ部は、第1データ蓄積部および第1優先度情報生成部を備えて構成される。第1データ蓄積部は、対応する外部入力データをライト要求に応答して格納し、格納している外部入力データをリード要求に応答して処理対象データとして出力する。第1優先度情報生成部は、第1データ蓄積部のデータ蓄積量が多いほど高い優先度を示す第1優先度情報を出力する。各出力バッファ部は、第2データ蓄積部および第2優先度情報生成部を備えて構成される。第2データ蓄積部は、対応する処理結果データをライト要求に応答して格納し、格納している処理結果データをリード要求に応答して外部出力データとして出力する。第2優先度情報生成部は、第2データ蓄積部のデータ蓄積量が多いほど低い優先度を示す第2優先度情報を出力する。制御部は、優先順位判定部および構成要素割当部を備えて構成される。優先順位判定部は、入力バッファ部から供給される複数の第1優先度情報と出力バッファ部から供給される複数の第2優先度情報とに応じてデータ系列の優先順位を決定する。構成要素割当部は、処理サイクル毎に、データ系列に対応する複数の命令情報に対して、対応するデータ系列の優先順位判定部により決定された優先順位が高い順に制御処理を実施し、制御処理における演算処理部の構成要素の割り当て結果を接続情報として出力する。
このため、入力バッファ部の第1データ蓄積部のデータ蓄積量が増加して、第1データ蓄積部からデータを出力する必要性が高くなっているデータ系列、あるいは出力バッファ部の第2データ蓄積部のデータ蓄積量が減少して、第2データ蓄積部にデータを格納する必要性が高くなっているデータ系列に対する演算処理を優先して実施させることができる。従って、各データ系列に対する演算処理をより安定して実施させることができる。
本発明に関連する技術における好ましい例では、第1優先度情報生成部は、第1カウンタおよび第1優先度判定部を備えて構成される。第1カウンタは、第1データ蓄積部のデータ格納動作に伴ってアップカウントし、第1データ蓄積部のデータ出力動作に伴ってダウンカウントする。第1優先度判定部は、第1カウンタのカウンタ値を第1閾値と比較して優先度を決定し、決定した優先度を示す第1優先度情報を出力する。第1カウンタのカウンタ値は、第1データ蓄積部のデータ蓄積量に対応しているため、第1優先度判定部は、第1カウンタのカウンタ値を第1閾値と比較するだけで、第1データ蓄積部のデータ蓄積量が多いほど高い優先度を示す第1優先度情報を生成できる。このため、第1優先度情報生成部を簡易な回路で構成できる。
本発明に関連する技術における好ましい例では、第2優先度情報生成部は、第2カウンタおよび第2優先度判定部を備えて構成される。第2カウンタは、第2データ蓄積部のデータ格納動作に伴ってアップカウントし、第2データ蓄積部のデータ出力動作に伴ってダウンカウントする。第2優先度判定部は、第2カウンタのカウンタ値を第2閾値と比較して優先度を決定し、決定した優先度を示す第2優先度情報を出力する。第2カウンタのカウンタ値は、第2データ蓄積部のデータ蓄積量に対応しているため、第2優先度判定部は、第2カウンタのカウンタ値を第2閾値と比較するだけで、第2データ蓄積部のデータ蓄積量が多いほど低い優先度を示す第2優先度情報を生成できる。このため、第2優先度情報生成部を簡易な回路で構成できる。
本発明に関連する技術における好ましい例では、優先順位判定部は、複数の第3優先度判定部および調停部を備えて構成される。第3優先度判定部は、データ系列に対応して設けられる。各第3優先度判定部は、対応する入力バッファ部から供給される第1優先度情報、対応する出力バッファ部から供給される第2優先度情報、および優先度定義テーブルを参照して優先度を決定し、決定した優先度を示す第3優先度情報を出力する。調停部は、第3優先度判定部から供給される複数の第3優先度情報に応じて、データ系列の優先順位を決定する。第3優先度判定部により、各データ系列の優先度が入力側の優先度と出力側の優先度とに基づいて決定され、調停部により、データ系列の優先順位が各データ系列の総合的な優先度に基づいて決定されるため、優先順位判定部を容易に構成できる。
本発明に関連する技術における好ましい例では、制御部に供給される命令情報は、処理サイクルあたりの演算の数を示す情報を含むとともに、演算毎に、演算の種類を示す情報と演算対象データを識別するための情報とを含む。演算に割り当てられる演算処理部の構成要素を一意に示す情報を命令情報に含ませる必要はなく、命令情報が示す演算に割り当てられる演算処理部の構成要素はハードウェア上で制御部により決定される。従って、命令情報を生成するコンパイラの負荷を軽減できる。
本発明によれば、演算処理装置のスループットを低下させることなく、演算処理部の構成要素(演算処理用のリソース)を最小限に抑えることができ、演算処理装置の小規模化に大きく寄与できる。
本発明の実施形態を説明する前に、図面を用いて本発明の基本概念を説明する。
図1は、演算処理装置の概要を示している。LSIとして構成される演算処理装置において、演算処理部は、高速化および高集積化へ向かう傾向にあるが、入力IF部(入力インタフェース部)および出力IF部(出力インタフェース部)は、必ずしも演算処理部と同じように高速化されるとは限らない。このため、例えば、演算処理部の動作周波数が300MHzであり、入力IF部および出力IF部の動作周波数が50MHzである場合、演算処理部が過剰に高速化および高集積化されている可能性がある。従って、演算処理部におけるREG(レジスタ)、ALUあるいはMUL(乗算器)などの演算処理用のリソースをより有効に活用する必要性が高まっている。演算処理用のリソースの有効活用を実現するためには、所定のハードウェア構成に対する最適なアルゴリズム(演算処理プログラム)、あるいは所定のアルゴリズムに対する最適なハードウェア構成を実現する必要がある。本発明は、所定のアルゴリズムに対する最適なハードウェア構成を実現することを目的としてなされたものである。
図2は、本発明で用いる命令情報の生成工程を示している。例えば、図2(a)の演算処理プログラムを図1のような構成の演算処理装置で実現する場合について説明する。まず、図2(a)のプログラム(演算処理)について、演算処理部の演算器(ALUやMULなど)を考慮しながら、演算処理を複数の演算要素に分解し、演算要素を互いに異なる処理サイクルに対応づけることで、図2(b)のプログラムを生成する。なお、演算処理部の演算器は、2入力1出力の演算器(2つの演算対象データに対する演算を実施して1つの演算結果データを出力する演算器)であるものとする。
次に、図2(b)のプログラムについて、演算の並列化を実現するために、各演算要素をデータ依存関係が破綻しない範囲で可能な限り前の処理サイクルに対応付けることで、図2(c)のプログラムを生成する。そして、図2(c)のプログラムについて、図2(a)のプログラムの作成時にはそれ程意識されない小変数化を実現するために、処理サイクルが変わる度に変数を開放して識別番号の小さい変数から順番に使用することで、図2(d)のプログラムを生成する。この後、図2(d)のプログラムをコード化して命令情報(命令コード)を生成する。本発明では、演算(図2のプロセスP0〜P10)の実行に使用されるハードウェア上のレジスタや演算器を命令情報で一意に決めず、演算の実行に使用されるレジスタや演算器はハードウェア上で決定される。例えば、命令情報は、処理サイクルあたりの演算の数を示す情報を含むとともに、演算毎に、演算の種類を示す情報と演算のオペランドを識別するための情報とを含むように生成される。
例えば、図2(d)のプログラムをコード化して生成される第tサイクルの命令情報は、演算の数が6個であることを示す情報、第0演算の種類が”加算”であり第0演算のオペランドがデータ”a”、”b”であることを示す情報、第1演算の種類が”減算”であり第1演算のオペランドがデータ”a”、”b”であることを示す情報、第2演算の種類が”加算”であり第2演算のオペランドがデータ”b”、”c”であることを示す情報、第3演算の種類が”減算”であり第3演算のオペランドがデータ”b”、”c”であることを示す情報、第4演算の種類が”加算”であり第4演算のオペランドがデータ”c”、”a”であることを示す情報、第5演算の種類が”減算”であり第5演算のオペランドがデータ”c”、”a”であることを示す情報を含むように生成される。従って、本発明で用いる命令情報を生成する際には、アーキテクチャのリソース制限がない。このため、コンパイラの負荷が軽減される。
図3は、演算へのリソースの割り当ての一例を示している。例えば、図2(d)のプログラムから生成された命令情報が示す演算に対してリソースを割り当てる場合について説明する。演算処理部のリソースの数(REGの数、ALUの数およびMULの数)は、十分に大きいものとする。ALUは、加算器および減算器の双方の機能を有するものとする。また、第t−1サイクルにおいて、外部から入力インタフェース部に供給された外部入力データ”a”、”b”、”c”がREG(0)、REG(1)、REG(2)にそれぞれ格納されているものとする。
第tサイクルにおいて、プロセスP0、P1を実行するために、演算対象データ(オペランド)の入力元としてREG(0)、REG(1)を共通に割り当て、演算器としてALU(0)を共通に割り当て、演算結果データの出力先としてREG(0)、REG(1)を別々に割り当てる。プロセスP2、P3を実行するために、演算対象データの入力元としてREG(1)、REG(2)を共通に割り当て、演算器としてALU(1)を共通に割り当て、演算結果データの出力先としてREG(2)、REG(3)を別々に割り当てる。プロセスP4、P5を実行するために、演算対象データの入力元としてREG(2)、REG(0)を共通に割り当て、演算器としてALU(2)を共通に割り当て、演算結果データの出力先としてREG(4)、REG(5)を別々に割り当てる。
第t+1サイクルにおいて、プロセスP6を実行するために、演算対象データの入力元としてREG(0)、REG(1)を割り当て、演算器としてMUL(0)を割り当て、演算結果データの出力先としてREG(0)を割り当てる。プロセスP7を実行するために、演算対象データの入力元としてREG(2)、REG(3)を割り当て、演算器としてMUL(1)を割り当て、演算結果データの出力先としてREG(1)を割り当てる。プロセスP8を実行するために、演算対象データの入力元としてREG(4)、REG(5)を割り当て、演算器としてMUL(2)を割り当て、演算結果データの出力先としてREG(2)を割り当てる。
第t+2サイクルにおいて、プロセスP9を実行するために、演算対象データの入力元としてREG(0)、REG(1)を割り当て、演算器としてALU(0)を割り当て、演算結果データの出力先としてREG(0)を割り当てる。また、プロセスP8の演算結果データの転送を実行するために、転送元としてREG(2)を割り当て、転送先としてREG(1)を割り当てる。
第t+3サイクルにおいて、プロセスP10を実行するために、演算対象データの入力元としてREG(0)、REG(1)を割り当て、演算器としてALU(0)を割り当て、演算結果データの出力先としてREG(0)を割り当てる。これにより、出力インタフェース部は、第t+4サイクルにおいて、データ”x”を外部に出力することが可能な状態になる。
このように、演算処理部のリソースの数が十分に大きいものと仮定すると、命令情報が示す最大限に並列化された演算が同一の処理サイクルで実行されるように、リソースが割り当てられるため、演算処理部の処理速度は非常に速くなる。しかしながら、入力インタフェース部および出力インタフェース部の動作速度がそれに比べて遅い場合、演算処理部の処理速度が過剰に速くなっている可能性がある。演算処理部の処理速度は、演算処理装置のスループットを満たす範囲であれば遅くても問題はない。
図4および図5は、本発明における演算へのリソースの割り当ての基本概念を示している。データ系列0、1に対する2つの演算処理を演算処理部で実施することを考える。例えば、2つの演算処理は図2(a)の演算処理で同一であり、図2(d)のプログラムから生成された命令情報が示す演算に対してリソースを割り当てる場合について説明する。演算処理部のリソースの数(REGの数、ALUの数およびMULの数)は、十分に大きいものとする。ALUは、加算器および減算器の双方の機能を有するものとする。また、第t−1サイクルにおいて、外部から系列0の入力インタフェース部0に供給された外部入力データ”a”、”b”、”c”がREG(0)、REG(1)、REG(2)に格納されており、外部から系列1の入力インタフェース部1に供給されたデータ”a”、”b”、”c”がREG(3)、REG(4)、REG(5)に格納されているものとする。また、系列0に対する演算処理が系列1に対する演算処理よりも優先して実施されるものとする。
このような場合、図4に示すように、第tサイクルにおいて、系列0のプロセスP0〜P5を実行するために、図3と同様に、リソースを割り当てる。続いて、系列1のプロセスP0、P1を実行するために、演算対象データの入力元としてREG(3)、REG(4)を共通に割り当て、演算器としてALU(3)を共通に割り当て、演算結果データの出力先としてREG(6)、REG(7)を別々に割り当てる。系列1のプロセスP2、P3を実行するために、演算対象データの入力元としてREG(4)、REG(5)を共通に割り当て、演算器としてALU(4)を共通に割り当て、演算結果データの出力先としてREG(8)、REG(9)を別々に割り当てる。系列1のプロセスP4、P5を実行するために、演算対象データの入力元としてREG(5)、REG(3)を共通に割り当て、演算器としてALU(5)を共通に割り当て、演算結果データの出力先としてREG(10)、REG(11)を別々に割り当てる。
第t+1サイクルにおいて、系列0のプロセスP6〜P8を実行するために、図3と同様に、リソースを割り当てる。続いて、系列1のプロセスP6を実行するために、演算対象データの入力元としてREG(6)、REG(7)を割り当て、演算器としてMUL(3)を割り当て、演算結果データの出力先としてREG(3)を割り当てる。系列1のプロセスP7を実行するために、演算対象データの入力元としてREG(8)、REG(9)を割り当て、演算器としてMUL(4)を割り当て、演算結果データの出力先としてREG(4)を割り当てる。系列1のプロセスP8を実行するために、演算対象データの入力元としてREG(10)、REG(11)を割り当て、演算器としてMUL(5)を割り当て、演算結果データの出力先としてREG(5)を割り当てる。
第t+2サイクルにおいて、系列0におけるプロセスP9およびプロセスP8の演算結果データの転送を実行するために、図3と同様に、リソースを割り当てる。続いて、系列1のプロセスP9を実行するために、演算対象データの入力元としてREG(3)、REG(4)を割り当て、演算器としてALU(1)を割り当て、演算結果データの出力先としてREG(2)を割り当てる。また、系列1におけるプロセスP8の演算結果データの転送を実行するために、転送元としてREG(5)を割り当て、転送先としてREG(3)を割り当てる。
第t+3サイクルにおいて、系列0のプロセスP10を実行するために、図3と同様に、リソースを割り当てる。続いて、系列1のプロセスP10を実行するために、演算対象データの入力元としてREG(2)、REG(3)を割り当て、演算器としてALU(1)を割り当て、演算結果データの出力先としてREG(1)を割り当てる。これにより、系列0の出力インタフェース部0は、第t+4サイクルにおいて、データ”x”を外部に出力することが可能な状態になる。また、系列1の出力インタフェース部1も、第t+4サイクルにおいて、データ”x”を外部に出力することが可能な状態になる。
このように、演算処理部のリソースの数が十分に大きいものと仮定すると、多数のリソースを使用して最速に2つの演算処理を実施できる。しかしながら、このリソース割り当てでは、瞬間的に(第tサイクルのみで)リソースが多く使用され、その他の期間ではリソースがあまり使用されないため、演算処理装置の系列0、1のスループットが低ければ、相対的にリソースが過剰に確保されていることになる。
そこで、例えば、REGの数、ALUの数、MULの数がそれぞれ12個、5個、6個であるものとして、演算にリソースを割り当てる場合について説明する。このような場合、図5に示すように、第tサイクルにおいて、系列0のプロセスP0〜P5を実行するために、図3と同様に、リソースを割り当てる。系列1のプロセスP0〜P5を実行するためには、ALUが3個必要であるが、未割り当てのALUは2個しかない。このため、系列1のプロセスP0〜P5を実行すべき処理サイクルを次の処理サイクル(第t+1サイクル)に変更する。なお、プロセスP4、P5だけではなく、プロセスP0〜P3も次の処理サイクルにシフトするのは、ハードウェアの設計を容易にするためである。この際、REG(3)、REG(4)、REG(5)にそれぞれ格納されているデータ”a”、”b”、”c”を次の処理サイクルで使用するために退避させる必要がある。従って、REG(3)に格納されているデータ”a”を退避させるために、転送元としてREG(3)を割り当て、転送先としてREG(6)を割り当てる。REG(4)に格納されているデータ”b”を退避させるために、転送元としてREG(4)を割り当て、転送先としてREG(7)を割り当てる。REG(5)に格納されているデータ”c”を退避させるために、転送元としてREG(5)を割り当て、転送先としてREG(8)を割り当てる。
第t+1サイクルにおいて、系列0のプロセスP6〜P8を実行するために、図3と同様に、リソースを割り当てる。続いて、第tサイクルで実行されるはずであった系列1のプロセスP0、P1を実行するために、演算対象データの入力元としてREG(6)、REG(7)を共通に割り当て、演算器としてALU(0)を共通に割り当て、演算結果データの出力先としてREG(3)、REG(4)を別々に割り当てる。第tサイクルで実行されるはずであった系列1のプロセスP2、P3を実行するために、演算対象データの入力元としてREG(7)、REG(8)を共通に割り当て、演算器としてALU(1)を共通に割り当て、演算結果データの出力先としてREG(5)、REG(6)を別々に割り当てる。第tサイクルで実行されるはずであった系列1のプロセスP4、P5を実行するために、演算対象データの入力元としてREG(8)、REG(6)を共通に割り当て、演算器としてALU(2)を共通に割り当て、演算結果データの出力先としてREG(7)、REG(8)を別々に割り当てる。
第t+2サイクルにおいて、系列0におけるプロセスP9およびプロセスP8の演算結果データの転送を実行するために、図3と同様に、リソースを割り当てる。続いて、第t+1サイクルで実行されるはずであった系列1のプロセスP6を実行するために、演算対象データの入力元としてREG(3)、REG(4)を割り当て、演算器としてMUL(0)を割り当て、演算結果データの出力先としてREG(2)を割り当てる。第t+1サイクルで実行されるはずであった系列1のプロセスP7を実行するために、演算対象データの入力元としてREG(5)、REG(6)を割り当て、演算器としてMUL(1)を割り当て、演算結果データの出力先としてREG(3)を割り当てる。第t+1サイクルで実行されるはずであった系列1のプロセスP8を実行するために、演算対象データの入力元としてREG(7)、REG(8)を割り当て、演算器としてMUL(2)を割り当て、演算結果データの出力先としてREG(4)を割り当てる。
第t+3サイクルにおいて、系列0のプロセスP10を実行するために、図3と同様に、リソースを割り当てる。これにより、系列0の出力インタフェース部0は、第t+4サイクルにおいて、データ”x”を外部に出力することが可能な状態になる。続いて、第t+2サイクルで実行されるはずであった系列1のプロセスP9を実行するために、演算対象データの入力元としてREG(2)、REG(3)を割り当て、演算器としてALU(1)を割り当て、演算結果データの出力先としてREG(1)を割り当てる。また、第t+2サイクルで実行されるはずであった系列1におけるプロセスP8の演算結果データの転送を実行するために、転送元としてREG(4)を割り当て、演算結果データの出力先としてREG(2)を割り当てる。
第t+4サイクルにおいて、第t+3サイクルで実行されるはずであった系列1のプロセスP10を実行するために、演算対象データの入力元としてREG(1)、REG(2)を割り当て、演算器としてALU(0)を割り当て、演算結果データの出力先としてREG(0)を割り当てる。これにより、系列1の出力インタフェース部1は、第t+5サイクルにおいて、データ”x”を外部に出力することが可能な状態になる。
このような場合、第tサイクルにおいて系列1のプロセスP4、P5を実行できなくなるため、系列1のプロセスP4、5がプロセスP0〜P3と共に第t+1サイクルへシフトされる。これに伴い、系列1のプロセスP6〜P10が1サイクル後ろにシフトされる。この結果、系列1の出力インタフェース部1は、第t+4サイクルではなく第t+5サイクルでデータ”x”を外部に出力することが可能な状態になるが、系列1の出力インタフェース部1に要求されるデータ出力タイミングが第t+5サイクルであれば問題はない。つまり、外部から第t−1サイクル、第t+5サイクル、第t+11サイクル(図示せず)というコンスタントな時間間隔(6サイクル周期)でデータが入力されても、系列0は第t+4サイクル、第t+10サイクル(図示せず)、第t+16サイクル(図示せず)に結果を出力することができ、系列1は第t+5サイクル、第t+11サイクル(図示せず)、第t+17サイクル(図示せず)に結果を出力することができる。すなわち、外部からのデータの入力時間間隔(6サイクル)を所望のスループットとする場合に、これを満たすことができる。従って、演算処理装置のスループットを保ちながらリソース(ALU)を削減できたことになる。この例では、ALUのみならず、REGやMULも削減できる。本発明は、以上のような基本概念に基づいてなされたものである。
以下、図面を用いて本発明の実施形態を説明する。図6は、本発明の一実施形態を示している。図7は、図6の入力制御部の詳細を示している。図8は、図7の入力優先レベル判定部の動作例を示している。図9は、図6の出力制御部の詳細を示している。図10は、図9の出力優先レベル判定部の動作例を示している。図11は、図6の命令情報メモリに格納される命令情報の概要を示している。図12は、図6の命令情報メモリに格納される命令情報の具体例を示している。図13は、図6の命令情報メモリに格納される命令情報の別の具体例を示している。図14は、図6のシステム制御部の詳細を示している。図15は、図14の総合優先レベル判定部で用いられる優先レベル定義テーブルの具体例を示している。図16は、図14のリソース割当部で用いられる内部変数を示している。図17および図18は、図14のリソース割当部の動作を示している。
図6に示すように、演算処理装置OPDは、入力バッファ部IB0〜IBn(n:1以上の整数)、演算処理部OP、出力バッファ部OB0〜OBn、命令情報メモリINSM0〜INSMnおよびシステム制御部SYSCを有している。
入力バッファ部IBi(i=0、・・・、n)は、系列iに対応して設けられている。入力バッファ部IBiは、入力FIFO部IFiおよび入力制御部ICiを有している。入力FIFO部IFiは、外部から供給されるライトコマンドWCMIiに応答して、入力制御部ICiから供給されるライトアドレスWADIiが示す番地に、外部から供給される外部入力データDIiを格納する。入力FIFO部IFiは、入力制御部ICiから供給されるリードコマンドRCMIiに応答して、入力制御部ICiから供給されるリードアドレスRADIiが示す番地に格納されている外部入力データを、処理対象データDPOiとして演算処理部OPに出力する。
図7に示すように、入力制御部ICiは、ライト制御部WCIi、リード制御部RCIi、カウンタCIiおよび入力優先レベル判定部ILDiを有している。ライト制御部WCIiは、外部から供給されるライトコマンドWCMIiに応答して、ライトアドレスWADIiを入力FIFO部IFiに出力する。リード制御部RCIiは、システム制御部SYSCから供給される入力許可通知IENiに応答して、リードコマンドRCMIiおよびリードアドレスRADIiを入力FIFO部IFiに出力する。カウンタCIiは、ライトコマンドWCMIiに応答してアップカウントし、入力許可通知IENiに応答してダウンカウントする。すなわち、カウンタCIiのカウンタ値CVIiは、ライトコマンドWCMIiに応答して増加し、入力許可通知IENiに応答して減少する。従って、カウンタCIiのカウンタ値CVIiは、入力FIFO部IFiのデータ蓄積量に対応している。カウンタCIiは、カウンタ値CVIiを入力優先レベル判定部ILDiに出力する。
入力優先レベル判定部ILDiは、ソフトウェアにより閾値VI0i〜VI3i(VI0i<VI1i<VI2i<VI3i)が設定される閾値レジスタTRIiを有している。入力優先レベル判定部ILDiは、カウンタCIiから供給されるカウンタ値CVIiを閾値レジスタTRIiに設定されている閾値VI0i〜VI3iと比較することで優先レベルを決定し、決定した優先レベルを示す入力優先レベル情報ILIiをシステム制御部SYSCに出力する。例えば、図8に示すように、入力優先レベル判定部ILDiは、カウンタ値CVIiが閾値VI0i未満であるとき、優先レベルを”0”に決定する。入力優先レベル判定部ILDiは、カウンタ値CVIiが閾値VI0i以上かつ閾値VI1i未満であるとき、優先レベルを”1”に決定する。入力優先レベル判定部ILDiは、カウンタ値CVIiが閾値VI1i以上かつ閾値VI2i未満であるとき、優先レベルを”2”に決定する。入力優先レベル判定部ILDiは、カウンタ値CVIiが閾値VI2i以上かつ閾値VI3i未満であるとき、優先レベルを”3”に決定する。入力優先レベル判定部ILDiは、カウンタ値CVIiが閾値VI3i以上であるとき、優先レベルを”4”に決定する。このように、入力優先レベル判定部ILDiは、カウンタCIiのカウンタ値CVIiが大きいほど高い優先レベルに決定する。換言すれば、入力優先レベル判定部ILDiは、入力FIFO部IFiのデータ蓄積量が多いほど高い優先レベルに決定する。
図6に示すように、演算処理部OPは、レジスタ群RGR、演算器群OGR、メモリ群MGRおよびマルチプレクサMPXを有している。レジスタ群RGRは、複数のレジスタREGを備えて構成されている。演算器群OGRは、”演算A”を実施するための複数の演算器OPAと、”演算B”を実施するための複数の演算器OPBと、”演算C“を実施するための複数の演算器OPCとを備えて構成されている。例えば、演算器OPA、OPB、OPCは、2入力1出力の演算器である。メモリ群MGRは、複数のメモリMEMを備えて構成されている。マルチプレクサMPXは、システム制御部SYSCから供給される接続情報CIに基づいて、レジスタ群RGRにおけるレジスタREG、演算器群OGRにおける演算器OPA、OPB、OPCおよびメモリ群MGRにおけるメモリMEMの接続関係を変更する。このような演算処理部OPは、接続情報CIに応じて内部構成を変更することで、入力バッファ部IBiから供給される処理対象データDPOiに対して系列i用の演算処理を実施して処理結果データDPRiを出力バッファ部OBiに出力する。
出力バッファ部OBiは、系列iに対応して設けられている。出力バッファ部OBiは、出力FIFO部OFiおよび出力制御部OCiを有している。出力FIFO部OFiは、出力制御部OCiから供給されるライトコマンドWCMOiに応答して、出力制御部OCiから供給されるライトアドレスWADOiが示す番地に、演算処理部OPから供給される処理結果データDPRiを格納する。出力FIFO部OFiは、外部から供給されるリードコマンドRCMOiに応答して、出力制御部OCiから供給されるリードアドレスRADOiが示す番地に格納されている処理結果データを、外部出力データDOiとして外部に出力する。
図9に示すように、出力制御部OCiは、ライト制御部WCOi、リード制御部RCOi、カウンタCOiおよび出力優先レベル判定部OLDiを有している。ライト制御部WCOiは、システム制御部SYSCから供給される出力許可通知OENiに応答して、ライトコマンドWCMOiおよびライトアドレスWADOiを出力FIFO部OFiに出力する。リード制御部RCOiは、外部から供給されるリードコマンドRCMOiに応答してリードアドレスRADOiを出力FIFO部OFiに出力する。カウンタCOiは、出力許可通知OENiに応答してアップカウントし、リードコマンドRCMOiに応答してダウンカウントする。すなわち、カウンタCOiのカウンタ値CVOiは、出力許可通知OENiに応答して増加し、リードコマンドRCMOiに応答して減少する。従って、カウンタCOiのカウンタ値CVOiは、出力FIFO部OFiのデータ蓄積量に対応している。カウンタCOiは、カウンタ値CVOiを出力優先レベル判定部OLDiに出力する。
出力優先レベル判定部OLDiは、ソフトウェアにより閾値VO0i〜VO3i(VO0i<VO1i<VO2i<VO3i)が設定される閾値レジスタTROiを有している。出力優先レベル判定部OLDiは、カウンタCOiから供給されるカウンタ値CVOiを閾値レジスタTROiに設定されている閾値VO0i〜VO3iと比較することで優先レベルを決定し、決定した優先レベルを示す出力優先レベル情報OLIiをシステム制御部SYSCに出力する。例えば、図10に示すように、出力優先レベル判定部OLDiは、カウンタ値CVOiが閾値VO0i未満であるとき、優先レベルを”4”に決定する。出力優先レベル判定部OLDiは、カウンタ値CVOiが閾値VO0i以上かつ閾値VO1i未満であるとき、優先レベルを”3”に決定する。出力優先レベル判定部OLDiは、カウンタ値CVOiが閾値VO1i以上かつ閾値VO2未満であるとき、優先レベルを”2”に決定する。出力優先レベル判定部OLDiは、カウンタ値CVOiが閾値VO2i以上かつ閾値VO3i未満であるとき、優先レベルを”1”に決定する。出力優先レベル判定部OLDiは、カウンタ値CVOiが閾値VO3i以上であるとき、優先レベルを”0”に決定する。このように、出力優先レベル判定部OLDiは、カウンタCOiのカウンタ値CVOiが大きいほど低い優先レベルに決定する。換言すれば、出力優先レベル判定部OLDiは、出力FIFO部OFiのデータ蓄積量が多いほど低い優先レベルに決定する。
図6に示すように、命令情報メモリINSMiは、系列iに対応して設けられている。命令情報メモリINSMiは、系列i用の演算処理プログラムをコンパイルして生成された複数の命令情報を格納している。命令情報メモリINSMiは、システム制御部SYSCから供給されるリードコマンドRCMMiに応答して、システム制御部SYSCから供給されるリードアドレスRADMiが示す番地に格納されている命令情報を、システム制御部SYSCに供給する命令情報INSiとして選択する。
例えば、図11に示すように、命令情報メモリINSMiに格納されている命令情報は、共通情報およびm+1個(m:0以上の整数)の演算情報で構成されている。共通情報は、exec_numおよびopd_numをフィールドとして有している。exec_numは、処理サイクルあたりの演算の数を示すフィールドである。opd_numは、演算処理部OP(レジスタ群RGR)のレジスタREGが入力元であるオペランドの数を示すフィールドである。
第j演算情報は、exec_type[j]、opd0[j]、opd1[j]、fin0[j]、fin1[j]およびfout[j]をフィールドとして有している。exec_type[j]は、第j演算の種類を示すフィールドである。例えば、第j演算の種類が”加算”であるとき、exec_type[j]は”0”に設定される。第j演算の種類が”減算”であるとき、exec_type[j]は”1”に設定される。第j演算の種類が”乗算”であるとき、exec_type[j]は”2”に設定される。第j演算の種類が”転送”であるとき、exec_type[j]は”3”に設定される。opd0[j]は、第j演算のオペランド0(第j演算で用いられる2つの演算対象データの一方)の識別番号を示すフィールドである。opd1[j]は、第j演算のオペランド1(第j演算で用いられる2つの演算対象データの他方)の識別番号を示すフィールドである。
fin0[j]は、第j演算のオペランド0の格納場所を示すフィールドである。例えば、第j演算のオペランド0の格納場所が演算処理部OPのレジスタREGである場合、fin0[j]は”0”に設定される。第j演算のオペランド0の格納場所が入力バッファ部IBiの入力FIFO部IFiである場合、fin0[j]は”1”に設定される。fin1[j]は、第j演算のオペランド1の格納場所を示すフィールドである。例えば、fin0[j]と同様に、第j演算のオペランド1の格納場所が演算処理部OPのレジスタREGである場合、fin1[j]は”0”に設定される。第j演算のオペランド1の格納場所が入力バッファ部IBiの入力FIFO部IFiである場合、fin1[j]は”1”に設定される。fout[j]は、第j演算の演算結果データの格納場所を示すフィールドである。例えば、第j演算の演算結果データの格納場所が演算処理部OPのレジスタREGである場合、fout[j]は”0”に設定される。第j演算の演算結果データの格納場所が出力バッファ部OBiの出力FIFO部OFiである場合、fout[j]は”1”に設定される。例えば、図2(a)の演算処理プログラムをコンパイルして生成される命令情報は、図12に示すとおりである。また、図13(a)の演算処理プログラムをコンパイルして得られる命令情報は、図13(e)に示すとおりである。
図14に示すように、システム制御部SYSCは、総合優先レベル判定部TLD0〜TLDn、調停部ABT、メモリアクセス部MA0〜MAnおよびリソース割当部RAを有している。総合優先レベル判定部TLDiは、系列iに対応して設けられている。総合優先レベル判定部TLDiは、入力バッファ部IBiから供給される入力優先レベル情報ILIiと出力バッファ部OBiから供給される出力優先レベル情報OLIiとを受けて優先レベル定義テーブルを参照することで優先レベルを決定し、決定した優先レベルを示す総合優先レベル情報TLIiを調停部ABTに出力する。例えば、総合優先レベル判定部TLDiは、入力優先レベル情報IPLiが示す優先レベルが”a”(a=0、1、・・・、4)であり、かつ出力優先レベル情報OPLiが示す優先レベルが”b”(b=0、1、・・・、4)であるとき、図15に示すような優先レベル定義テーブルを参照することで優先レベルを”a+b”に決定し、”a+b”を示す総合優先レベル情報TLIiを調停部ABTに出力する。
図14に示すように、調停部ABTは、総合優先レベル判定部TLD0〜TLDnからそれぞれ供給される総合優先レベル情報TLI0〜TLInに基づいて、系列0〜nの優先順位を決定し、決定した優先順位を示す優先順位情報PIをリソース割当部RAに出力する。具体的には、調停部ABTは、系列0〜nの優先順位を、対応する総合優先レベル情報が示す優先レベルが高い系列ほど優先順位が高くなるように決定する。
メモリアクセス部MAiは、プログラムカウンタPCiおよびリード制御部RCMiを有している。プログラムカウンタPCiは、リソース割当部RAから供給されるアクセス要求ARiに応答してカウンタ値PCViを更新する。プログラムカウンタPCiは、カウンタ値PCViをリード制御部RCMiに出力する。リード制御部RCiは、プログラムカウンタPCiから供給されるカウンタ値PCViの変化に伴って、カウンタ値PCViに応じたリードアドレスRADMiをリードコマンドRCMMiと共に命令情報メモリINSMiに出力する。
リソース割当部RAは、命令情報メモリINSM0〜INSMnからそれぞれ供給される命令情報INS0〜INSnと、調停部ABTから供給される優先順位情報PIとを受けて、後述の内部変数を用いた動作を実施することで、接続情報CI、入力許可通知IEN0〜IENn、出力許可通知OEN0〜OENnおよびアクセス要求AR0〜ARnを所望のタイミングでそれぞれ出力する。
リソース割当部RAは、図16に示すexec_num[i]、opd_num[i]、exec_type[i][j]、opd0[i][j]、opd1[i][j]、fin0[i][j]、fin1[i][j]、fout[i][j]、vr、va、vb、vc、ofst_r、ofst_a、ofst_b、ofst_c、ofst_r_l[i]、stad_fin[i]、stad_fout[i]およびpriを内部変数として有している。
exec_num[i]およびopd_num[i]は、命令情報INSiが命令情報メモリINSMiからリソース割当部RAに供給されたときに、命令情報INSiにおける共通情報のexec_numおよびopd_numの値にそれぞれ設定される。opd0[i][j]、opd1[i][j]、fin0[i][j]、fin1[i][j]およびfout[i][j]は、命令情報INSiが命令情報メモリINSMiからリソース割当部RAに供給されたときに、命令情報INSiにおける第j演算情報のopd0[j]、opd1[j]、fin0[j]、fin1[j]およびfout[j]の値にそれぞれ設定される。すなわち、exec_num[i]は、系列iにおける演算の数を示す変数である。opd_num[i]は、系列iにおける演算処理部OPのレジスタREGが入力元であるオペランドの数を示す変数である。exec_type[i][j]は、系列iにおける第j演算の種類を示す変数である。opd0[i][j]は、系列iにおける第j演算のオペランド0の識別番号を示す変数である。opd1[i][j]は、系列iにおける第j演算のオペランド1の識別番号を示す変数である。fin0[i][j]は、系列iにおける第j演算のオペランド0の格納場所を示す変数である。fin1[i][j]は、系列iにおける第j演算のオペランド1の格納場所を示す変数である。fout[i][j]は、系列iにおける第j演算の演算結果データの格納場所を示す変数である。
vrは、レジスタREG割り当て用の一時変数である。vaは、演算器OPA割り当て用の一時変数である。vbは、演算器OPB割り当て用の一時変数である。vcは、演算器OPC割り当て用の一時変数である。ofst_rは、レジスタREG割り当て用のオフセットを示す変数である。ofst_aは、演算器OPA割り当て用のオフセットを示す変数である。ofst_bは、演算器OPB割り当て用のオフセットを示す変数である。ofst_cは、演算器OPC割り当て用のオフセットを示す変数である。ofst_r_l[i]は、前回の処理サイクルにおける系列iのレジスタREG割り当て用のオフセットを示す変数である。stad_fin[i]は、系列iにおける入力FIFO部IFiの読み出し開始アドレスを示す変数である。stad_fout[i]は、系列iにおける出力FIFO部OFiの書き込み開始アドレスを示す変数である。priは、優先順位番号を示す変数である。
リソース割当部RAは、このような内部変数を使用して、図17および図18に示すステップS1〜S34を適宜実施する。
ステップS1において、リソース割当部RAは、vr=0、va=0、vb=0、vc=0、ofst_r_l[0]=0、・・・、ofst_r_l[n]=0に設定する。リソース割当部RAは、例えば、演算処理装置OPDのリセット解除の直後に、この動作を実施する。これと同時に、リソース割当部RAは、アクセス要求AR0〜ARnを出力することで、系列0〜nの最初に実行すべき演算を示す命令情報INS0〜INSnを取得する。この後、リソース割当部RAの動作はステップS2に移行する。
ステップS2において、リソース割当部RAは、ofst_r=0、ofst_a=0、ofst_b=0、ofst_c=0、pri=0に設定する。この後、リソース割当部RAの動作はステップS3に移行する。
ステップS3において、リソース割当部RAは、priの値が系列数(n+1)以上であるか否かを判定する。priの値が系列数以上であるとき、リソース割当部RAの動作はステップS30に移行する。priの値が系列数未満であるとき、リソース割当部RAの動作はステップS4に移行する。
ステップS4において、リソース割当部RAは、優先順位情報PIが示す系列0〜nの優先順位に基づいて、処理対象の系列として第pri優先の系列i(優先順位が”pri+1”番目に高い系列i)を選択する。この後、リソース割当部RAの動作はステップS5に移行する。
ステップS5において、リソース割当部RAは、残りのリソースの数(演算処理部OPにおける未割り当てのレジスタREG、演算器OPA、演算器OPBおよび演算器OPCの数)が、必要なリソースの数(命令情報INSiが示す演算を実行するために必要なレジスタREG、演算器OPA、演算器OPBおよび演算器OPCの数)以上であるか否かを判定する。残りのリソースの数が必要なリソースの数以上であるとき、リソース割当部RAの動作はステップS6に移行する。残りのリソースの数が必要なリソースの数未満であるとき、リソース割当部RAの動作はステップS31に移行する。
ステップS6において、リソース割当部RAは、vrの値がexec_num[i]の値未満であるか否かを判定する。vrの値がexec_num[i]の値未満であるとき、リソース割当部RAの動作はステップS7に移行する。vrの値がexec_num[i]の値以上であるとき、リソース割当部RAの動作はステップS25に移行する。
ステップS7において、リソース割当部RAは、fin0[i][vr]の値が”0”であるか否かを判定する。fin0[i][vr]の値が”0”であるとき、リソース割当部RAの動作はステップS8に移行する。fin0[i][vr]の値が”1”であるとき、リソース割当部RAの動作はステップS9に移行する。
ステップS8において、リソース割当部RAは、第vr演算のオペランド0の入力元として、演算処理部OPのレジスタREG(ofst_r_l[i]+opd0[i][vr])を割り当てる。この後、リソース割当部RAの動作はステップS10に移行する。
ステップS9において、リソース割当部RAは、第vr演算のオペランド0の入力元として、入力バッファ部IBiのレジスタREG(stad_fin[i]+opd0[i][vr])を割り当てる。ここで、入力バッファ部IBiのレジスタREG(stad_fin[i]+opd0[i][vr])は、入力FIFO部IFiの”stad_fin[i]+opd0[i][vr]”番地を意味している。この後、リソース割当部RAの動作はステップS10に移行する。
ステップS10において、リソース割当部RAは、fin1[i][vr]の値が”0”であるか否かを判定する。fin1[i][vr]の値が”0”であるとき、リソース割当部RAの動作はステップS11に移行する。fin1[i][vr]の値が”1”であるとき、リソース割当部RAの動作はステップS12に移行する。
ステップS11において、リソース割当部RAは、第vr演算のオペランド1の入力元として、演算処理部OPのレジスタREG(ofst_r_l[i]+opd1[i][vr])を割り当てる。この後、リソース割当部RAの動作はステップS13に移行する。
ステップS12において、リソース割当部RAは、第vr演算のオペランド1の入力元として、入力バッファ部IBiのレジスタREG(stad_fin[i]+opd1[i][vr])を割り当てる。ここで、入力バッファ部IBiのレジスタREG(stad_fin[i]+opd1[i][vr])は、入力FIFO部IFiの”stad_fin[i]+opd1[i][vr]”番地を意味している。この後、リソース割当部RAの動作はステップS13に移行する。
ステップS13において、リソース割当部RAは、exec_type[i][vr]に基づいて、系列iにおける第vr演算の種類が”転送”であるか否かを判定する。第vr演算の種別が”転送”であるとき、リソース割当部RAの動作はステップS21に移行する。第vr演算の種別が”転送”ではないとき、リソース割当部RAの動作はステップS14に移行する。
ステップS14において、リソース割当部RAは、exec_type[i][vr]に基づいて、系列iにおける第vr演算の種別を判別する。第vr演算の種類が”演算A”であるとき、リソース割当部RAの動作はステップS15に移行する。第vr演算の種類が”演算B”であるとき、リソース割当部RAの動作はステップS16に移行する。第vr演算の種類が”演算C”であるとき、リソース割当部RAの動作はステップS17に移行する。
ステップS15において、リソース割当部RAは、第vr演算の演算器として、演算器OPA(ofst_a+va)を割り当てる。この後、リソース割当部RAの動作はステップS18に移行する。
ステップS16において、リソース割当部RAは、第vr演算の演算器として、演算器OPB(ofst_b+vb)を割り当てる。この後、リソース割当部RAの動作はステップS19に移行する。
ステップS17において、リソース割当部RAは、第vr演算の演算器として、演算器OPC(ofst_c+vc)を割り当てる。この後、リソース割当部RAの動作はステップS20に移行する。
ステップS18において、リソース割当部RAは、va=va+1に設定する。この後、リソース割当部RAの動作はステップS21に移行する。
ステップS19において、リソース割当部RAは、vb=vb+1に設定する。この後、リソース割当部RAの動作はステップS21に移行する。
ステップS20において、リソース割当部RAは、vc=vc+1に設定する。この後、リソース割当部RAの動作はステップS21に移行する。
ステップS21において、リソース割当部RAは、fout[i][vr]の値が”0”であるか否かを判定する。fout[i][vr]の値が”0”であるとき、リソース割当部RAの動作はステップS22に移行する。fout[i][vr]の値が”1”であるとき、リソース割当部RAの動作はステップS23に移行する。
ステップS22において、リソース割当部RAは、系列iにおける第vr演算の演算結果データの出力先として、演算処理部OPのレジスタREG(ofst_r+vr)を割り当てる。この後、リソース割当部RAの動作はステップS24に移行する。
ステップS23において、リソース割当部RAは、系列iにおける第vr演算の演算結果データの出力先として、出力バッファ部OBiのレジスタREG(stad_fout[i]+vr)を割り当てる。ここで、出力バッファ部OBiのレジスタREG(stad_fout[i]+vr)は、出力FIFO部OFiの”stad_fout[i]+vr”番地を意味している。この後、リソース割当部RAの動作はステップS24に移行する。
ステップS24において、リソース割当部RAは、vr=vr+1に設定する。この後、リソース割当部RAの動作はステップS6に移行する。
ステップS25において、リソース割当部RAは、系列iの命令情報を更新するために、メモリアクセス部MAiへのアクセス要求ARiを出力する。これにより、メモリアクセス部MAiにおいて、プログラムカウンタPCiのカウンタ値PCViが更新され、命令情報メモリINSMiへのリードコマンドRCMMiおよびリードアドレスRADMiが出力される。従って、次の処理サイクル用の命令情報INSiが命令情報メモリIIMiからリソース割当部RAに供給される。この後、リソース割当部RAの動作はステップS26に移行する。
ステップS26において、リソース割当部RAは、今回の処理サイクルにおける系列iのレジスタ割り当て用のオフセットを保存するために、ofst_r_l[i]=ofst_rに設定する。この後、リソース割当部RAの動作はステップS27に移行する。
ステップS27において、リソース割当部RAは、レジスタREG割り当て用のオフセット、演算器OPA割り当て用のオフセット、演算器OPB割り当て用のオフセットおよび演算器OPC割り当て用のオフセットを更新するために、ofst_r=ofst_r+vr、ofst_a=ofst_a+va、ofst_b=ofst_b+vb、ofst_c=ofst_c+vcに設定する。この後、リソース割当部RAの動作はステップS28に移行する。
ステップS28において、リソース割当部RAは、vr=0、va=0、vb=0、vc=0に設定する。この後、リソース割当部RAの動作はステップS29に移行する。
ステップS29において、リソース割当部RAは、pri=pri+1に設定する。この後、リソース割当部RAの動作はステップS3に移行する。
ステップS30において、リソース割当部RAは、演算処理部OPにより演算を実行するために、これまでのリソース割り当て結果を示す接続情報CIを生成して演算処理部OPに出力する。この際、オペランド0、1の入力元として入力FIFO部が割り当てられた演算が存在する場合、リソース割当部RAは、対応する入力FIFO部への入力許可通知を出力する。また、演算結果データの出力先として出力FIFO部が割り当てられた演算が存在する場合、リソース割当部RAは、対応する出力FIFO部に出力許可通知を出力する。この後、リソース割当部RAの動作はステップS2に移行する。
ステップS31において、リソース割当部RAは、残りのレジスタREGの数(演算処理部OPにおける未割り当てのレジスタREGの数)がopd_num[i]の値未満であるか否かを判定する。残りのレジスタREGの数がopd_num[i]の値未満であるとき、リソース割当部RAの動作はステップS26に移行する。残りのレジスタREGの数がopd_num[i]の値以上であるとき、リソース割当部RAの動作はステップS32に移行する。
ステップS32において、リソース割当部RAは、vrの値がopd_num[i]の値未満であるか否かを判定する。vrの値がopd_num[i]の値未満であるとき、リソース割当部RAの動作はステップS33に移行する。vrの値がopd_num[i]の値以上であるとき、リソース割当部RAの動作はステップS26に移行する。
ステップS33において、リソース割当部RAは、演算処理部OPのレジスタREG(ofst_r_l[i]+vr)の退避先として、演算処理部OPのレジスタREG(ofst_r+vr)を割り当てる。この後、リソース割当部RAの動作はステップS34に移行する。
ステップS34において、リソース割当部RAは、vr=vr+1に設定する。この後、リソース割当部RAの動作はステップS32に移行する。
ここで、演算処理装置OPDの内部構成(演算処理部OPにおけるレジスタREGの数、演算器OPAの数、演算器OPBの数、演算器OPCの数)を決定する方法について、具体例を用いて説明する。この方法は、演算処理装置OPDの回路記述(RTL記述など)を用いた機能シミュレーションを利用して実施される。なお、機能シミュレーションで用いる演算処理装置OPDの回路記述において、レジスタ群RGRにおけるレジスタREGの数と、演算器群OGRにおける演算器OPAの数、演算器OPBの数および演算器OPCの数と、メモリ群MGRにおけるメモリMEMの数およびメモリMEMの容量と、入力FIFO部IFiの容量と、出力FIFO部OFiの容量と、入力優先レベル判定部ILDiの閾値VI0i〜VI4iと、出力優先レベル判定部OLDiの閾値VO0i〜VO4iとは、パラメータ化されている。
例えば、系列数が”2”である場合(n=1)について説明する。なお、命令情報メモリINSM0には、図12に示した命令情報が格納されているものとする。命令情報メモリINSM1には、図13に示した命令情報が格納されているものとする。入力FIFO部IF0において、”stad_fin[0]”番地に外部入力データ”a”が格納され、”stad_fin[0]+1”番地に外部入力データ”b”が格納され、”stad_fin[0]+2”番地に外部入力データ”c”が格納されているものとする。また、入力FIFO部IF1において、”stad_fin[1]”番地に外部入力データ”d”が格納され、”stad_fin[1]+1”番地に外部入力データ”e”が格納され、”stad_fin[1]+2”番地に外部入力データ”f”が格納され、”stad_fin[1]+3”番地に外部入力データ”g”が格納されているものとする。この例における機能シミュレーションの実施中は、常に、第0優先の系列が系列0であり、第1優先の系列が系列1であるものとする。演算器OPA、OPB、OPCは、それぞれ加算器ADD、減算器SUB、乗算器MULであるものとする。
まず、レジスタREGの数、加算器ADDの数、減算器SUBの数および乗算器MULの数のパラメータ値を十分に大きな値(例えば、”1024”)に設定して、演算処理装置OPDの回路記述を用いた1回目の機能シミュレーションを実施する。
図19は、1回目の機能シミュレーション(リソースの数を大きく設定した場合の機能シミュレーション)におけるリソース割当状態および内部変数状態を示している。1回目の機能シミュレーションにおいて、リソース割当部RAは、以下のように動作する。
ステップS1において、リソース割当部RAは、演算処理装置OPDのリセットが解除されると、vr=0、va=0、vb=0、vc=0、ofst_r_l[0]=0、ofst_r_l[1]=0に設定する。このとき、命令情報メモリINS0からリソース割当部RAに第tサイクルの命令情報(図12)が供給されるとともに、命令情報メモリINSM1からリソース割当部RAに第tサイクルの命令情報(図13)が供給される。この後、リソース割当部RAの動作はステップS2に移行する。
ステップS2において、リソース割当部RAは、ofst_r=0、ofst_a=0、ofst_b=0、ofst_c=0、pri=0に設定する。この後、リソース割当部RAの動作はステップS3に移行する。
ステップS3において、pri=0であり、かつ系列数が”2”であるため、リソース割当部RAは、”偽”と判定する。従って、リソース割当部RAの動作はステップS4に移行する。
ステップS4において、pri=0であるため、リソース割当部RAは、処理対象の系列として第0優先の系列0を選択する。この後、リソース割当部RAの動作はステップS5に移行する。
ステップS5において、残りのリソースの数(レジスタREG:1024個、加算器ADD:1024個、減算器SUB:1024個、乗算器MUL:1024個)が、系列0の第tサイクルの命令情報が示す演算を実行するために必要なリソースの数(レジスタREG:6個、加算器ADD:3個、減算器SUB:3個、乗算器MUL:0個)より大きいため、リソース割当部RAは、”真”と判定する。従って、リソース割当部RAの動作はステップS6へ移行する。
ステップS6において、vr=0、exec_num[0]=6であるため、リソース割当部RAは、”真”と判定する。従って、リソース割当部RAの動作はステップS7に移行する。
ステップS7において、fin0[0][0]=1であるため、リソース割当部RAは、”偽”と判定する。従って、リソース割当部RAの動作はステップS9に移行する。
ステップS9において、opd0[0][0]=0であるため、リソース割当部RAは、系列0における第0演算のオペランド0の入力元として、入力バッファ部IF0のレジスタREG(stad_fin[0])を割り当てる。この後、リソース割当部RAの動作はステップS10に移行する。
ステップS10において、fin1[0][0]=1であるため、リソース割当部RAは、”偽”と判定する。従って、リソース割当部RAの動作はステップS12に移行する。
ステップS12において、opd1[0][0]=1であるため、リソース割当部RAは、系列0における第0演算のオペランド1の入力元として、入力バッファ部IB0のレジスタREG(stad_fin[0]+1)を割り当てる。この後、リソース割当部RAの動作はステップS13に移行する。
ステップS13において、系列0における第0演算の種類は”加算”(exec_type[0][0]=0)であるため、リソース割当部RAは、”偽”と判定する。従って、リソース割当部RAの動作はステップS14に移行する。
ステップS14において、リソース割当部RAは、系列0における第0演算の種類を判別する。系列0における第0演算の種類は”加算”であるため、リソース割当部RAの動作はステップS15に移行する。
ステップS15において、va=0、ofst_a=0であるため、リソース割当部RAは、系列0における第0演算の演算器として、加算器ADD(0)を割り当てる。この後、リソース割当部RAの動作はステップS18へ移行する。
ステップS18において、リソース割当部RAは、va=1に設定する。この後、リソース割当部RAの動作はステップS21へ移行する。
ステップS21において、fout[0][0]=0であるため、リソース割当部RAは、は、”真”と判定する。従って、リソース割当部RAの動作はステップS22に移行する。
ステップS22において、ofst_r=0、vr=0であるため、リソース割当部RAは、系列0における第0演算の演算結果データの出力先として、演算処理部OPのレジスタREG(0)を割り当てる。この後、リソース割当部RAの動作はステップS24に移行する。
ステップS24において、リソース割当部RAは、vr=1に設定する。このときのリソース割当状態および内部変数状態は、図19<1>に示すとおりである。この後、リソース割当部RAの動作はステップS6に移行する。
ステップS6において、vr=1、exec_num[0]=6であるため、リソース割当部RAは、”真”と判定する。従って、リソース割当部RAの動作はステップS7に移行する。そして、系列0の第tサイクルの第0演算に対する処理と同様に、系列0の第tサイクルの第1演算に対する処理が実施される。系列0の第tサイクルの第1演算に対する処理が系列0の第tサイクルの第0演算に対する処理と異なる点は、第tサイクルの第1演算の種類が”減算”であるため、ステップS15、S18の代わりにステップS16、S19が実施される点である。系列0の第tサイクルの第1演算に対する処理におけるステップS24の実施後のリソース割当状態および内部変数状態は、図19<2>に示すとおりである。以降、同様に、系列0の第tサイクルの第2演算〜第5演算に対する処理が順次実施される。系列0の第tサイクルの第2演算〜第5演算に対する処理におけるステップS24の実施後のリソース割当状態および内部変数状態は、図19<3>〜図19<6>に示すとおりである。系列0の第tサイクルの第5演算に対する処理におけるステップS24の実施後に、リソース割当部RAの動作はステップS6に移行する。
ステップS6において、vr=6、exec_num[0]=6であるため、リソース割当部RAは、”偽”と判定する。従って、リソース割当部RAの動作はステップS25に移行する。
ステップS25において、リソース割当部RAは、系列0の命令情報を更新するために、アクセス要求AR0を出力する。これにより、命令情報メモリINSM0からリソース割当部RAに、次の処理サイクル(第t+1サイクル)の命令情報が供給される。この後、リソース割当部RAの動作はステップS26に移行する。
ステップS26において、ofst_r=0であるため、リソース割当部RAは、ofst_r_l[0]=0に設定する。この後、リソース割当部RAの動作はステップS27に移行する。
ステップS27において、vr=6、va=3、vb=3、vc=0、ofst_r=0、ofst_a=0、ofst_b=0、ofst_c=0であるため、リソース割当部RAは、ofst_r=6、ofst_a=3、ofst_b=3、ofst_c=0に設定する。この後、リソース割当部RAの動作はステップS28に移行する。
ステップS28において、リソース割当部RAは、vr=0、va=0、vb=0、vc=0に設定する。この後、リソース割当部RAの動作はステップS29に移行する。
ステップS29において、リソース割当部RAは、pri=1に設定する。このときの内部変数状態は、図19<7>に示すとおりである。この後、リソース割当部RAの動作はステップS3に移行する。
ステップS3において、pri=1、系列数=2であるため、リソース割当部RAは、”偽”と判定する。従って、リソース割当部RAの動作はステップS4に移行する。
ステップS4において、pri=1であるため、処理対象の系列として第1優先の系列1を選択する。この後、リソース割当部RAの動作はステップS5に移行する。
ステップS5において、残りのリソースの数(レジスタREG:1018個、加算器ADD:1021個、減算器SUB:1021個、乗算器MUL:1024個)が、系列1の第tサイクルの命令情報が示す演算を実行するために必要なリソースの数(レジスタREG:2個、加算器ADD:2個、減算器SUB:0個、乗算器MUL:0個)より大きいため、リソース割当部RAは、”真”と判定する。従って、リソース割当部RAの動作はステップS6へ移行する。
ステップS6において、vr=0、exec_num[1]=2であるため、リソース割当部RAは、”真”と判定する。従って、リソース割当部RAの動作はステップS7に移行する。以降、系列0の第tサイクルの第0演算〜第5演算に対する処理と同様に、系列1の第tサイクルの第0演算および第1演算に対する処理が順次実施される。系列1の第tサイクルの第0演算および第1演算に対する処理におけるステップS24の実施後のリソース割当状態および内部変数状態は、図19<8>および図19<9>に示すとおりである。系列1の第tサイクルの第1演算に対する処理におけるステップS24の実施後に、リソース割当部RAの動作はステップS6に移行する。
ステップS6において、vr=2、exec_num[1]=2であるため、リソース割当部RAは、”偽”と判定する。従って、リソース割当部RAの動作はステップS25に移行する。そして、系列0の場合と同様に、ステップS25〜29が順次実施される。ステップS29の実施後の内部変数状態は、図19<10>に示すとおりである。この後、リソース割当部RAの動作はステップS3に移行する。
ステップS3において、pri=2であり、かつ系列数が”2”であるため、リソース割当部RAは、”真”と判定する。従って、リソース割当部RAの動作はステップS30に移行する。
ステップS30において、リソース割当部RAは、これまでのリソース割り当て結果を示す接続情報CIを出力するとともに、入力許可通知IEN0、1を出力する。従って、演算処理部OPにより系列0の第tサイクルの第0演算〜第5演算および系列1の第tサイクルの第0演算および第1演算が第tサイクルで並列に実行される。これにより、第tサイクルの処理が完了する。この後、リソース割当部RAの動作はステップS2に移行する。
ステップS2において、リソース割当部RAは、ofst_r=0、ofst_a=0、ofst_b=0、ofst_c=0、pri=0に設定する。このときの内部変数状態は、図19<11>に示すとおりである。この後、リソース割当部RAの動作はステップS3に移行する。以降、第tサイクルの処理と同様に、第t+1サイクルの処理、第t+2サイクルの処理および第t+3サイクルの処理が順次実施される。これらの処理におけるリソース割当状態および内部変数状態は、図19<12>〜<27>に示すとおりである。これにより、1回目の機能シミュレーションが完了する。
1回目のシミュレーションにおいては、レジスタREGの数、加算器ADDの数、減算器SUBの数および乗算器MULの数のパラメータ値が”1024”であるのに対して、演算の実行に使用されたレジスタREGの数、加算器ADDの数、減算器SUBの数および乗算器MULの数は、各処理サイクルにおいて、以下に示すとおりである。これらの数は、例えば、ステップS30の実施毎に、ofst_r、ofst_a、ofst_b、ofst_cの値を記憶しておくことで取得できる。
(第tサイクル) REG:8個、ADD:5個、SUB:3個、MUL:0個
(第t+1サイクル)REG:4個、ADD:1個、SUB:0個、MUL:3個
(第t+2サイクル)REG:3個、ADD:1個、SUB:0個、MUL:1個
(第t+3サイクル)REG:1個、ADD:1個、SUB:0個、MUL:0個
従って、1回目の機能シミュレーションにおけるリソース割り当てにより系列0、1の演算処理を実施するためには、演算処理部OPにおいて、レジスタREGが8個、加算器ADDが5個、減算器SUBが3個、乗算器MULが3個設けられていれば十分であることが分かる。しかしながら、このように、レジスタREGの数、加算器ADDの数、減算器SUBの数および乗算器MULの数を、各処理サイクルで要求される数のピーク値に決定すると、演算処理装置OPDに要求されるスループットに対して、系列0、1の演算処理が必要以上に高速に実行される場合が多い。
そこで、レジスタREGの数、加算器ADDの数、減算器SUBの数、乗算器MULの数のパラメータ値を1回目のシミュレーションで演算の実行に使用された数より小さく設定して、演算処理装置OPDの回路記述を用いた2回目の機能シミュレーションを実施する。例えば、レジスタREGの数のパラメータ値を”8”に設定し、加算器ADDの数のパラメータ値を”3”に設定、減算器SUBの数のパラメータ値を”3”に設定し、乗算器MULの数のパラメータ値を”3”に設定する。
図20は、2回目の機能シミュレーション(リソースの数を小さく設定した場合の機能シミュレーション)におけるリソース割当状態および内部変数状態を示している。2回目の機能シミュレーションにおいて、リソース割当部RAは、以下のように動作する。
まず、1回目の機能シミュレーションと同様に、系列0の第tサイクルの命令情報(第0演算〜第5演算)に対する処理が実施される。系列0の第tサイクルの命令情報に対する処理におけるステップS24の実施後のリソース割当状態および内部変数状態は、図20<1>〜<6>に示すとおりである。系列0の第tサイクルの命令情報に対する処理におけるステップS29の実施後の内部変数状態は、図20<7>に示すとおりである。この後、リソース割当部RAの動作はステップS3に移行する。
ステップS3において、pri=1であり、かつ系列数が”2”であるため、リソース割当部RAは、”偽”と判定する。従って、リソース割当部RAの動作はステップS4に移行する。
ステップS4において、pri=1であるため、リソース割当部RAは、処理対象の系列として第1優先の系列1を選択する。この後、リソース割当部RAの動作はステップS5に移行する。
ステップS5において、残りのリソースの数(レジスタREG:2個、加算器ADD:0個、減算器SUB:0個、乗算器MUL:3個)が、系列1の第tサイクルの命令情報が示す演算を実行するために必要なリソースの数(レジスタREG:2個、加算器ADD:2個、減算器SUB:0個、乗算器MUL:0個)より小さい、すなわち、レジスタREGと減算器SUBと乗算器MULとは足りるが、加算器ADDが足りないため、リソース割当部RAは、”偽”と判定する。従って、リソース割当部RAの動作はステップS31に移行する。
ステップS31において、残リのレジスタREGの数が”2”であり、かつopd_num[1][0]=0であるため、リソース割当部RAは、”偽”と判定する。従って、リソース割当RAの動作はステップS32に移行する。
ステップS32において、vr=0、opd_num[1][0]=0であるため、リソース割当部RAは、”偽”と判定する。従って、リソース割当部RAの動作はステップS26に移行する。そして、ステップS26〜S29が順次実施される。ステップS29の実施後の内部変数状態は、図20<8>に示すとおりである。このとき、ステップS25が実施されないため、系列1の次の処理サイクル(第t+1サイクル)の命令情報は供給されない。従って、今回の処理サイクル(第tサイクル)の命令情報が示す演算が次の処理サイクル(第t+1サイクル)で実行されることになる。この後、リソース割当部RAの動作はステップS3に移行する。
ステップS3において、pri=2であり、かつ系列数が”2”であるため、リソース割当部RAは、”真”と判定する。従って、リソース割当部RAの動作はステップS30に移行する。
ステップS30において、系列0の第tサイクルの命令情報が示す演算に対してのみリソースが割り当てられているため、系列0の第tサイクルの第0演算〜第5演算のみが第tサイクルで並列に実行される。この後、リソース割当部RAの動作はステップS2に移行する。
ステップS2において、リソース割当部RAは、ofst_r=0、ofst_a=0、ofst_b=0、ofst_c=0、pri=0に設定する。このときの内部変数状態は、図20<9>に示すとおりである。この後、リソース割当部RAの動作はステップS3に移行する。そして、系列0の第t+1サイクルの命令情報に対する処理が実施される。系列0の第t+1サイクルの命令情報に対する処理におけるリソース割当状態および内部変数状態は、図20<10>〜<13>に示すとおりである。系列0の第t+1サイクルの命令情報に対する処理におけるステップS29が実施された後、リソース割当部RAの動作はステップS5に移行する。
ステップS5において、残りのリソースの数(レジスタREG:5個、加算器ADD:3個、減算器SUB:3個、乗算器MUL:0個)が、系列1の第tサイクルの命令情報が示す演算を実行するために必要なリソースの数(レジスタREG:2個、加算器ADD:2個、減算器SUB:0個、乗算器MUL:0個)より大きい、すなわち、全ての種類のリソースが足りるため、リソース割当部RAは、”真”と判定する。従って、リソース割当部RAの動作はステップS6へ移行する。そして、系列1の第tサイクルの命令情報に対する処理が実施される。系列1の第tサイクルの命令情報に対する処理におけるリソース割当状態および内部変数状態は、図20<14>〜<17>に示すとおりである。これにより、第t+1サイクルでは、系列0の第t+1サイクルの命令情報が示す演算が実行されるとともに、系列1の第tサイクルの命令情報が示す演算が実行される。以降、第t+2サイクルの処理および第t+3サイクルの処理が順次実施される。これらの処理におけるリソース割当状態および内部変数状態は、図20<18>〜<28>に示すとおりである。これにより、2回目の機能シミュレーションが完了する。
2回目のシミュレーションにおいては、レジスタREGの数のパラメータ値が”8”であり、加算器ADDの数のパラメータ値が”3”であり、減算器SUBの数のパラメータ値が”3”であり、乗算器MULの数のパラメータ値が”3”であるのに対して、演算の実行に使用されたレジスタREGの数、加算器ADDの数、減算器SUBの数および乗算器MULの数は、各処理サイクルにおいて、以下に示すとおりである。
(第tサイクル) REG:6個、ADD:3個、SUB:3個、MUL:0個
(第t+1サイクル)REG:5個、ADD:2個、SUB:0個、MUL:3個
(第t+2サイクル)REG:3個、ADD:2個、SUB:0個、MUL:0個
(第t+3サイクル)REG:2個、ADD:1個、SUB:0個、MUL:1個
従って、2回目の機能シミュレーションでのリソース割り当てにより系列0、1の演算処理を実施するためには、演算処理部OPにおいて、レジスタREGが6個、加算器ADDが3個、減算器SUBが3個、乗算器MULが3個設けられていれば十分であることが分かる。この例では、系列1の命令情報が示す演算が1サイクル後ろにずらされて実行される。しかしながら、系列1の演算処理が何回も呼び出されて連続して実行されるものであったとしても、系列1の出力バッファ部OB1に要求されるデータ出力タイミングが満たされていれば問題はない。すなわち、系列1において、1回の演算処理のデータが4サイクルに1回、入力FIFO部IF1に格納され、出力FIFO部OF1から出力されるような場合、3サイクルで処理される系列1の演算処理は、第tサイクル〜第t+3サイクルのいずれか3サイクルで実施されれば、演算処理装置OPDのスループットは保たれる。
この例においては、機能シミュレーションの実施中に調停部ABTからリソース割当部RAに送られてくる優先順位情報PIが、常に系列0の優先順位が系列1の優先順位より高いことを示す場合について説明したが、仮に系列1のリソース割り当てが次々に先送りにされると、系列1の入力データが溜まり、系列1の出力データが減ってくるので、やがて系列1の優先順位が系列0の優先順位より高い状態になる。すると、まず系列1のリソース割り当てが実施され、続いて系列0のリソース割り当てが実施される。このように、リソース割り当てがどちらかの系列に偏ることなく、どちらの系列のスループットも保たれるように制御される。
この後、レジスタREGの数、加算器ADDの数、減算器SUBの数、乗算器MULの数のパラメータ値を2回目のシミュレーションで演算の実行に使用された数より小さく設定して、演算処理装置OPDの回路記述を用いた3回目の機能シミュレーションを実施する。例えば、レジスタREGの数のパラメータ値を”8”に設定し、加算器ADDの数のパラメータ値を”2”に設定、減算器SUBの数のパラメータ値を”3”に設定し、乗算器MULの数のパラメータ値を”3”に設定する。系列0の演算処理を実施するためには、演算処理部OPに加算器ADDが少なくとも3個設けられている必要があるため、3回目の機能シミュレーションは、系列0の出力バッファ部OB0に要求されるデータ出力タイミングを満たせなくなり強制終了されることになる。
従って、演算処理部OPにおける最終的なレジスタREGの数、加算器ADDの数、減算器SUBの数および乗算器MULの数を、2回目の機能シミュレーションで演算の実行に使用されたレジスタREGの数(6個)、加算器ADDの数(3個)、減算器SUBの数(3個)および乗算器MULの数(3個)に決定する。これにより、演算処理装置OPDのスループットを低下させることなく、演算処理部OPにおけるレジスタREGの数、加算器ADDの数、減算器SUBの数および乗算器MULの数を最小限に抑えることができる。すなわち、演算処理装置OPDの処理性能を保ったまま回路面積を削減できる。なお、ここでは、系列数が”2”である場合について説明したが、系列数が大きくなるほど本発明は多大な効果を奏する。系列数が大きいほど演算処理部OPのリソース(レジスタREG、加算器ADD、減算器SUBおよび乗算器MUL)が演算に割り当てられる機会が多くなるため、非常に長い期間で考えれば、レジスタREG、加算器ADD、減算器SUBおよび乗算器MULは、平均的に最大限にそれぞれ利用され、かつその数は最小限に抑えられる。
図21は、図6の演算処理装置の応用例を示している。マルチプロセッサ100は、系列0〜3の演算処理をそれぞれ担当するプロセッサコア110〜113と、プロセッサコア110〜113に共通して設けられる共有演算処理部120と、マルチプロセッサ100の全体を制御するメインCPU130と、各種データを格納するメモリ140と、タイマ機能や通信インタフェース機能等を具現する周辺回路150と、外部とのデータ授受を実施するI/O回路160と、ネットワーク170とを備えて構成されている。ネットワーク170は、プロセッサコア110〜113、メインCPU130、メモリ140、周辺回路150およびI/O回路160を相互に接続し、これらの間でのデータ授受を可能にする。なお、マルチプロセッサ100では、プロセッサコア110〜113、メインCPU130、メモリ140、周辺回路150およびI/O回路160がネットワーク170を介して接続されているが、これらがバスを介して接続されるようにしてもよい。
共有演算処理部120は、図6の演算処理装置OPD(n=3)により構成されている。共有演算処理部120において、入力バッファ部IB0〜IB3(図6)へのライトコマンドWCMI0〜WCMI3および外部入力データDI0〜DI3と、出力バッファ部OB0〜OB3(図6)へのリードコマンドRCMO0〜RCMO3とは、プロセッサコア110〜113からそれぞれ供給される。また、出力バッファ部OB0〜OB3からの外部出力データDO0〜DO3は、プロセッサコア110〜113にそれぞれ供給される。
このような構成のマルチプロセッサ100では、プロセッサコア110〜113の各々は、自身が担当する演算処理のうち、高速性が要求される演算処理を共有演算処理部120に実施させる。共有演算処理部120は、プロセッサコア110〜113からの演算処理要求に従って、プロセッサコア110〜113に代わって演算処理を実施する。その際、共有演算処理部120において、プロセッサコア110〜113からの演算処理要求の優先順位に従って演算処理が実施され、かつプロセッサコア110〜113の全てについて、要求される処理速度に遅延が発生しないようにバランスがとられるため、処理性能の面およびリソースの使用効率の面でマルチプロセッサ100の全体として高い最適化が図られる。
また、マルチプロセッサ100では、プロセッサコア110〜113にアプリケーションをそれぞれ実装する際、プロセッサコア110〜113の各々におけるソフトウェア設計において、演算処理用のリソースの数が非常に大きいものとして扱える。そして、リソースの使用効率の最適化が共有演算処理部120により実施されるため、従来のマルチプロセッサにおけるアプリケーションの実装に比べて、ソフトウェア設計が非常に容易になる。
図22は、マルチプロセッサにおけるリソースの使用効率を示している。図22では、4個のプロセッサコアの各々について拡張演算処理部が設けられたリソース非共有型マルチプロセッサ(第1従来例)と、4個のプロセッサコアの各々についてプログラマブル拡張演算処理部が設けられたリソース非共有型マルチプロセッサ(第2従来例)と、4個のプロセッサコアに共通して共有演算処理部が設けられたリソース共有型マルチプロセッサ(図21のマルチプロセッサ100)とについて、演算処理用のリソースの使用効率を示している。図中、横軸はリソース数(リソース面積)を示し、縦軸は時間を示している。また、網掛されることなくA〜Dが記載された部分は、あるアプリケーションの演算処理A〜Dに使用されているリソースに対応している。網掛されることなくA’〜D’が記載された部分は、別のアプリケーションの演算処理A’〜D’に使用されているリソースに対応している。網掛された部分は、演算処理に使用されていないリソースに対応している。
図22を参照すると、リソース非共有型マルチプロセッサ(第1従来例)では、アプリケーションの非動作状態がそのまま演算処理用のリソースの未使用状態として表れるため、リソースの使用効率が非常に悪いことが分かる。また、リソース非共有型マルチプロセッサ(第2従来例)では、プロセッサコア毎に演算処理用のリソースが独立して設けられているため、2つのアプリケーションの演算処理が時分割多重方式で実施されても、マルチプロセッサの全体としてはリソースの未使用状態が多くなることが分かる。これに対して、リソース共有型マルチプロセッサ(図21のマルチプロセッサ100)では、プロセッサコアが演算処理用のリソース(図21の共有演算処理部120)を共有するため、リソースの数が最小限に抑えられ、リソースが効率良く使用されることが分かる。
なお、前述の実施形態では、演算に割り当てるリソースとしてメモリMEMを利用しない例について述べたが、本発明はかかる実施形態に限定されるものではない。例えば、ある演算の演算結果データが長期間使用されない場合に、その演算の演算結果データの格納先としてレジスタREGではなくメモリMEMを割り当てるようにしてもよい。また、前述の実施形態では、図17および図18に示すステップS2〜S34が同一の処理サイクルで実施される例について述べたが、本発明はかかる実施形態に限定されるものではない。例えば、パイプライン方式を使用して処理の効率化を図ってもよい。
前述の実施形態では、機能シミュレーションを実施する際に、メモリ群MGRにおけるメモリMEMの数およびメモリMEMの容量、入力FIFO部IFiの容量、出力FIFO部OFiの容量、入力優先レベル判定部ILDiの閾値VI0i〜VI4i、出力優先レベル判定部OLDiの閾値VO0i〜VO4iのパラメータ値を変更しない例について述べたが、本発明はかかる実施形態に限定されるものではない。例えば、演算処理部OPのリソースの数を更に削減するために、これらのパラメータ値を変更しながら機能シミュレーションを実施するようにしてもよい。
以上の実施形態で説明した発明を整理して、付記として開示する。
(付記1)
複数のデータ系列に対応して設けられ、対応する外部入力データを格納して処理対象データとして出力する複数の入力バッファ部と、
前記データ系列毎に処理対象データに対して所望の演算処理を実施して処理結果データを出力するために、接続情報に応じて内部の構成要素の接続関係を確立することで演算処理機能を変更する演算処理部と、
前記データ系列に対応して設けられ、対応する処理結果データを格納して外部出力データとして出力する複数の出力バッファ部と、
処理サイクル毎に、前記データ系列に対応する複数の命令情報に対して、命令情報が示す演算を実行可である場合に、演算に割り当てる前記演算処理部の構成要素を決定し、前記演算処理部の構成要素の不足により命令情報が示す演算を実行不可である場合に、前記出力バッファ部のデータ出力タイミングを満たしたうえで演算を実行すべき処理サイクルを次の処理サイクルに移行させる制御処理を所定順序で実施し、前記制御処理における前記演算処理部の構成要素の割り当て結果を前記接続情報として出力する制御部とを備えることを特徴とする演算処理装置。
(付記2)
付記1記載の演算処理装置において、
前記各入力バッファ部は、
対応する外部入力データをライト要求に応答して格納し、格納している外部入力データをリード要求に応答して処理対象データとして出力する第1データ蓄積部と、
前記第1データ蓄積部のデータ蓄積量が多いほど高い優先度を示す第1優先度情報を出力する第1優先度情報生成部とを備え、
前記各出力バッファ部は、
対応する処理結果データをライト要求に応答して格納し、格納している処理結果データをリード要求に応答して外部出力データとして出力する第2データ蓄積部と、
前記第2データ蓄積部のデータ蓄積量が多いほど低い優先度を示す第2優先度情報を出力する第2優先度情報生成部とを備え、
前記制御部は、
前記入力バッファ部から供給される複数の第1優先度情報と前記出力バッファ部から供給される複数の第2優先度情報とに応じて前記データ系列の優先順位を決定する優先順位判定部と、
処理サイクル毎に、前記データ系列に対応する複数の命令情報に対して、対応するデータ系列の前記優先順位判定部により決定された優先順位が高い順に前記制御処理を実施し、前記制御処理における前記演算処理部の構成要素の割り当て結果を前記接続情報として出力する構成要素割当部とを備えることを特徴とする演算処理装置。
(付記3)
付記2記載の演算処理装置において、
前記第1優先度情報生成部は、
前記第1データ蓄積部のデータ格納動作に伴ってアップカウントし、前記第1データ蓄積部のデータ出力動作に伴ってダウンカウントする第1カウンタと、
前記第1カウンタのカウンタ値を第1閾値と比較して優先度を決定し、決定した優先度を示す第1優先度情報を出力する第1優先度判定部とを備えることを特徴とする演算処理装置。
(付記4)
付記3記載の演算処理装置において、
前記第1優先度判定部は、前記第1閾値を設定するための第1閾値設定部を備えることを特徴とする演算処理装置。
(付記5)
付記2記載の演算処理装置において、
前記第2優先度情報生成部は、
前記第2データ蓄積部のデータ格納動作に伴ってアップカウントし、前記第2データ蓄積部のデータ出力動作に伴ってダウンカウントする第2カウンタと、
前記第2カウンタのカウンタ値を第2閾値と比較して優先度を決定し、決定した優先度を示す第2優先度情報を出力する第2優先度判定部とを備えることを特徴とする演算処理装置。
(付記6)
付記5記載の演算処理装置において、
前記第2優先度判定部は、前記第2閾値を設定するための第2閾値設定部を備えることを特徴とする演算処理装置。
(付記7)
付記2記載の演算処理装置において、
前記優先順位判定部は、
前記データ系列に対応して設けられ、対応する入力バッファ部から供給される第1優先度情報、対応する出力バッファ部から供給される第2優先度情報、および優先度定義テーブルを参照して優先度を決定し、決定した優先度を示す第3優先度情報を出力する複数の第3優先度判定部と、
前記第3優先度判定部から供給される複数の第3優先度情報に応じて、前記データ系列の優先順位を決定する調停部とを備えることを特徴とする演算処理装置。
(付記8)
付記1記載の演算処理装置において、
前記演算処理部は、
構成要素として設けられる複数のレジスタ、複数の演算器および複数のメモリと、
前記接続情報に応じて、前記レジスタ、前記演算器および前記メモリの接続関係を変更する接続関係変更部とを備えることを特徴とする演算処理装置。
(付記9)
付記1記載の演算処理装置において、
前記制御部に供給される命令情報は、処理サイクルあたりの演算の数を示す情報を含むとともに、演算毎に、演算の種類を示す情報と演算対象データを識別するための情報とを含むことを特徴とする演算処理装置。
(付記10)
複数のデータ系列に対応して設けられ、対応する外部入力データを格納して処理対象データとして出力する複数の入力バッファ部と、
前記データ系列毎に処理対象データに対して所望の演算処理を実施して処理結果データを出力するために、接続情報に応じて内部の構成要素の接続関係を確立することで演算処理機能を変更する演算処理部と、
前記データ系列に対応して設けられ、対応する処理結果データを格納して外部出力データとして出力する複数の出力バッファ部と、
処理サイクル毎に、前記データ系列に対応する複数の命令情報に対して、命令情報が示す演算を実行可である場合に、演算に割り当てる前記演算処理部の構成要素を決定し、前記演算処理部の構成要素の不足により命令情報が示す演算を実行不可である場合に、演算を実行すべき処理サイクルを次の処理サイクルに移行させる制御処理を所定順序で実施し、前記制御処理における前記演算処理部の構成要素の割り当て結果を前記接続情報として出力する制御部とを備える演算処理装置の内部構成を決定する方法であって、
前記演算処理部の構成要素の数をパラメータ化した前記演算処理装置の回路記述を用いて、前記演算処理部の構成要素の数を、前記制御処理で常に演算実行可となる値に設定してシミュレーションを実施する第1工程と、
前記第1工程で実施したシミュレーションの結果から、そのシミュレーションで前記制御部により演算に割り当てられた前記演算処理部の構成要素の数を仮設計値として取得する第2工程と、
前記演算処理部の構成要素の数をパラメータ化した前記演算処理装置の回路記述を用いて、前記演算処理部の構成要素の数を、前記仮設計値より小さい値を初期値として順次減少させながら、前記出力バッファ部のデータ出力タイミングが満たされなくなるまでシミュレーションを繰り返し実施する第3工程と、
前記第3工程で実施したシミュレーションのうち、前記出力バッファ部のデータ出力タイミングが満たされた最後のシミュレーションの結果から、そのシミュレーションで前記制御部により演算に割り当てられた前記演算処理部の構成要素の数を実設計値として取得する第4工程とを含むことを特徴とする演算処理装置の内部構成決定方法。
(付記11)
付記10記載の演算処理装置の内部構成決定方法において、
前記演算処理部は、構成要素として設けられる複数のレジスタ、複数の演算器および複数のメモリと、前記接続情報に応じて、前記レジスタ、前記演算器および前記メモリの接続関係を変更する接続関係変更部とを備え、
前記第1および第3工程において、前記演算処理部の構成要素の数として、前記レジスタの数、前記演算器の数および前記メモリの数をパラメータ化した前記演算処理装置の回路記述を用いてシミュレーションを実施することを特徴とする演算処理装置の内部構成決定方法。
(付記12)
付記11記載の演算処理装置の内部構成決定方法において、
前記第1および第3工程において、前記レジスタの数、前記演算器の数および前記メモリの数に加えて、前記各メモリの容量をパラメータ化した前記演算処理装置の回路記述を用いてシミュレーションを実施することを特徴とする演算処理装置の内部構成決定方法。(付記13)
付記10記載の演算処理装置の内部構成決定方法において、
前記各入力バッファ部は、対応する外部入力データをライト要求に応答して格納し、格納している外部入力データをリード要求に応答して処理対象データとして出力する第1データ蓄積部と、前記第1データ蓄積部のデータ蓄積量が多いほど高い優先度を示す第1優先度情報を出力する第1優先度情報生成部とを備え、
前記各出力バッファ部は、対応する処理結果データをライト要求に応答して格納し、格納している処理結果データをリード要求に応答して外部出力データとして出力する第2データ蓄積部と、前記第2データ蓄積部のデータ蓄積量が多いほど低い優先度を示す第2優先度情報を出力する第2優先度情報生成部とを備え、
前記制御部は、前記入力バッファ部から供給される複数の第1優先度情報と前記出力バッファ部から供給される複数の第2優先度情報とに応じて前記データ系列の優先順位を決定する優先順位判定部と、処理サイクル毎に、前記データ系列に対応する複数の命令情報に対して、対応するデータ系列の前記優先順位判定部により決定された優先順位が高い順に前記制御処理を実施し、前記制御処理における前記演算処理部の構成要素の割り当て結果を前記接続情報として出力する構成要素割当部とを備え、
前記第1優先度情報生成部は、前記第1データ蓄積部のデータ格納動作に伴ってアップカウントし、前記第1データ蓄積部のデータ出力動作に伴ってダウンカウントする第1カウンタと、前記第1カウンタのカウンタ値を第1閾値と比較して優先度を決定し、決定した優先度を示す第1優先度情報を出力する第1優先度判定部とを備え、
前記第1および第3工程において、前記演算処理部の構成要素の数に加えて、前記第1データ蓄積部の容量および前記第1閾値をパラメータ化した前記演算処理装置の回路記述を用いてシミュレーションを実施することを特徴とする演算処理装置の内部構成決定方法。
(付記14)
付記10記載の演算処理装置の内部構成決定方法において、
前記各入力バッファ部は、対応する外部入力データをライト要求に応答して格納し、格納している外部入力データをリード要求に応答して処理対象データとして出力する第1データ蓄積部と、前記第1データ蓄積部のデータ蓄積量が多いほど高い優先度を示す第1優先度情報を出力する第1優先度情報生成部とを備え、
前記各出力バッファ部は、対応する処理結果データをライト要求に応答して格納し、格納している処理結果データをリード要求に応答して外部出力データとして出力する第2データ蓄積部と、前記第2データ蓄積部のデータ蓄積量が多いほど低い優先度を示す第2優先度情報を出力する第2優先度情報生成部とを備え、
前記制御部は、前記入力バッファ部から供給される複数の第1優先度情報と前記出力バッファ部から供給される複数の第2優先度情報とに応じて前記データ系列の優先順位を決定する優先順位判定部と、処理サイクル毎に、前記データ系列に対応する複数の命令情報に対して、対応するデータ系列の前記優先順位判定部により決定された優先順位が高い順に前記制御処理を実施し、前記制御処理における前記演算処理部の構成要素の割り当て結果を前記接続情報として出力する構成要素割当部とを備え、
前記第2優先度情報生成部は、前記第2データ蓄積部のデータ格納動作に伴ってアップカウントし、前記第2データ蓄積部のデータ出力動作に伴ってダウンカウントする第2カウンタと、前記第2カウンタのカウンタ値を第2閾値と比較して優先度を決定し、決定した優先度を示す第2優先度情報を出力する第2優先度判定部とを備え、
前記第1および第3工程において、前記演算処理部の構成要素の数に加えて、前記第2データ蓄積部の容量および前記第2閾値をパラメータ化した前記演算処理装置の回路記述を用いてシミュレーションを実施することを特徴とする演算処理装置の内部構成決定方法。
(付記15)
複数のデータ系列に対応する複数のメイン演算処理部と、
前記メイン演算処理部に共通して設けられ、前記メイン演算処理部に代わって演算処理を実施するサブ演算処理部とを備え、
前記サブ演算処理部は、付記1〜付記9のいずれかに記載の演算処理装置により構成されることを特徴とする演算処理システム。
以上、本発明について詳細に説明してきたが、前述の実施形態およびその変形例は発明の一例に過ぎず、本発明はこれらに限定されるものではない。本発明を逸脱しない範囲で変形可能であることは明らかである。
演算処理装置の概要を示す説明図である。 本発明で用いる命令コードの生成工程を示す説明図である。 演算へのリソースの割り当ての一例を示す説明図である。 本発明における演算へのリソースの割り当ての基本概念を示す説明図(その1)である。 本発明における演算へのリソースの割り当ての基本概念を示す説明図(その2)である。 本発明の一実施形態を示すブロック図である。 図6の入力制御部の詳細を示すブロック図である。 図7の入力優先レベル判定部の動作例を示す説明図である。 図6の出力制御部の詳細を示すブロック図である。 図9の出力優先レベル判定部の動作例を示す説明図である。 図6の命令情報メモリに格納される命令情報の概要を示す説明図である。 図6の命令情報メモリに格納される命令情報の具体例を示す説明図である。 図6の命令情報メモリに格納される命令情報の別の具体例を示す説明図である。 図6のシステム制御部の詳細を示すブロック図である。 図14の総合優先レベル判定部で用いられる優先レベル定義テーブルの具体例を示す説明図である。 図14のリソース割当部で用いられる内部変数を示す説明図である。 図14のリソース割当部の動作を示すフロー図(その1)である。 図14のリソース割当部の動作を示すフロー図(その2)である。 リソースの数を大きく設定した場合の機能シミュレーションにおけるリソース割当状態および内部変数状態を示す説明図である。 リソースの数を小さく設定した場合の機能シミュレーションにおけるリソース割当状態および内部変数状態を示す説明図である。 図6の演算処理装置の応用例を示すブロック図である。 マルチプロセッサにおけるリソースの使用効率を示す説明図である。
符号の説明
ABT‥調停部;CI0〜CIn‥カウンタ;CO0〜COn‥カウンタ;IB0〜IBn‥入力バッファ部;IC0〜ICn‥入力制御部;IF0〜IFn‥入力FIFO部;ILD0〜ILDn‥入力優先レベル判定部;INSM0〜INSMn‥命令情報メモリ;MA0〜MAn‥メモリアクセス部;MGR‥メモリ群;MPX‥マルチプレクサ;OB0〜OBn‥出力バッファ部;OC0〜OCn‥出力制御部;OF0〜OFn‥出力FIFO部;OGR‥演算器群;OLD0〜OLDn‥出力優先レベル判定部;OP‥演算処理部;OPD‥演算処理装置;PC0〜PCn‥プログラムカウンタ;RA‥リソース割当部;RCI0〜RCIn‥リード制御部;RCM0〜RCMn‥リード制御部;RCO0〜RCOn‥リード制御部;RGR‥レジスタ群;SYSC‥システム制御部;TLD0〜TLDn‥総合優先レベル判定部;TRI0〜TRIn‥閾値レジスタ;TRO0〜TROn‥閾値レジスタ;WCI0〜WCIn‥ライト制御部;WCO0〜WCOn‥ライト制御部;100‥マルチプロセッサ;110〜113‥プロセッサコア;120‥共有演算処理部;130‥メインCPU;140‥メモリ;150‥周辺回路;160‥I/O回路;170‥ネットワーク

Claims (10)

  1. 複数のデータ系列に対応して設けられ、対応する外部入力データを格納して処理対象データとして出力する複数の入力バッファ部と、
    前記データ系列毎に処理対象データに対して所望の演算処理を実施して処理結果データを出力するために、接続情報に応じて内部の構成要素の接続関係を確立することで演算処理機能を変更する演算処理部と、
    前記データ系列に対応して設けられ、対応する処理結果データを格納して外部出力データとして出力する複数の出力バッファ部と、
    処理サイクル毎に、前記データ系列に対応する複数の命令情報に対して、命令情報が示す演算への前記演算処理部の構成要素の割り当てに関する制御処理を実施し、前記制御処理における前記演算処理部の構成要素の割り当て結果を前記接続情報として出力する制御部とを備え
    前記制御部は、前記制御処理において、命令情報が示す演算を実行可である場合に、演算に割り当てる前記演算処理部の構成要素を決定し、前記演算処理部の構成要素の不足により命令情報が示す演算を実行不可である場合に、演算を実行すべき処理サイクルを次の処理サイクルに移行させるとともに、前記演算を実行すべき処理サイクルにおいて演算が実行されたときに演算の結果が前記出力バッファ部から出力されるべきタイミングで前記次の処理サイクルにおいて実行された演算の結果を前記出力バッファ部から出力させることを特徴とする演算処理装置。
  2. 請求項1記載の演算処理装置において、
    前記各入力バッファ部は、
    対応する外部入力データをライト要求に応答して格納し、格納している外部入力データをリード要求に応答して処理対象データとして出力する第1データ蓄積部と、
    前記第1データ蓄積部のデータ蓄積量が多いほど高い優先度を示す第1優先度情報を出力する第1優先度情報生成部とを備え、
    前記各出力バッファ部は、
    対応する処理結果データをライト要求に応答して格納し、格納している処理結果データをリード要求に応答して外部出力データとして出力する第2データ蓄積部と、
    前記第2データ蓄積部のデータ蓄積量が多いほど低い優先度を示す第2優先度情報を出力する第2優先度情報生成部とを備え、
    前記制御部は、
    前記入力バッファ部から供給される複数の第1優先度情報と前記出力バッファ部から供給される複数の第2優先度情報とに応じて前記データ系列の優先順位を決定する優先順位判定部と、
    処理サイクル毎に、前記データ系列に対応する複数の命令情報に対して、対応するデータ系列の前記優先順位判定部により決定された優先順位が高い順に前記制御処理を実施し、前記制御処理における前記演算処理部の構成要素の割り当て結果を前記接続情報として出力する構成要素割当部とを備えることを特徴とする演算処理装置。
  3. 請求項2記載の演算処理装置において、
    前記第1優先度情報生成部は、
    前記第1データ蓄積部のデータ格納動作に伴ってアップカウントし、前記第1データ蓄積部のデータ出力動作に伴ってダウンカウントする第1カウンタと、
    前記第1カウンタのカウンタ値を第1閾値と比較して優先度を決定し、決定した優先度を示す第1優先度情報を出力する第1優先度判定部とを備えることを特徴とする演算処理装置。
  4. 請求項2記載の演算処理装置において、
    前記第2優先度情報生成部は、
    前記第2データ蓄積部のデータ格納動作に伴ってアップカウントし、前記第2データ蓄積部のデータ出力動作に伴ってダウンカウントする第2カウンタと、
    前記第2カウンタのカウンタ値を第2閾値と比較して優先度を決定し、決定した優先度を示す第2優先度情報を出力する第2優先度判定部とを備えることを特徴とする演算処理装置。
  5. 請求項2記載の演算処理装置において、
    前記優先順位判定部は、
    前記データ系列に対応して設けられ、対応する入力バッファ部から供給される第1優先度情報、対応する出力バッファ部から供給される第2優先度情報、および優先度定義テーブルを参照して優先度を決定し、決定した優先度を示す第3優先度情報を出力する複数の第3優先度判定部と、
    前記第3優先度判定部から供給される複数の第3優先度情報に応じて、前記データ系列の優先順位を決定する調停部とを備えることを特徴とする演算処理装置。
  6. 請求項1記載の演算処理装置において、
    前記演算処理部は、
    構成要素として設けられる複数のレジスタ、複数の演算器および複数のメモリと、
    前記接続情報に応じて、前記レジスタ、前記演算器および前記メモリの接続関係を変更する接続関係変更部とを備えることを特徴とする演算処理装置。
  7. 請求項1記載の演算処理装置において、
    前記制御部に供給される命令情報は、処理サイクルあたりの演算の数を示す情報を含むとともに、演算毎に、演算の種類を示す情報と演算対象データを識別するための情報とを含むことを特徴とする演算処理装置。
  8. 複数のデータ系列に対応して設けられ、対応する外部入力データを格納して処理対象データとして出力する複数の入力バッファ部と、
    前記データ系列毎に処理対象データに対して所望の演算処理を実施して処理結果データを出力するために、接続情報に応じて内部の構成要素の接続関係を確立することで演算処理機能を変更する演算処理部と、
    前記データ系列に対応して設けられ、対応する処理結果データを格納して外部出力データとして出力する複数の出力バッファ部と、
    処理サイクル毎に、前記データ系列に対応する複数の命令情報に対して、命令情報が示す演算への前記演算処理部の構成要素の割り当てに関する制御処理を実施し、前記制御処理における前記演算処理部の構成要素の割り当て結果を前記接続情報として出力する制御部とを備え
    前記制御部は、前記制御処理において、命令情報が示す演算を実行可である場合に、演算に割り当てる前記演算処理部の構成要素を決定し、前記演算処理部の構成要素の不足により命令情報が示す演算を実行不可である場合に、演算を実行すべき処理サイクルを次の処理サイクルに移行させるとともに、前記演算を実行すべき処理サイクルにおいて演算が実行されたときに演算の結果が前記出力バッファ部から出力されるべきタイミングで前記次の処理サイクルにおいて実行された演算の結果を前記出力バッファ部から出力させる演算処理装置の内部構成を決定する方法であって、
    コンピュータが、前記演算処理部の構成要素の数が前記制御処理で常に演算実行可となる値に設定された前記演算処理装置の回路記述を用いてシミュレーションを実施する第1工程と、
    コンピュータが、前記第1工程で実施したシミュレーションの結果から、そのシミュレーションで前記制御部により演算に割り当てられた前記演算処理部の構成要素の数を仮設計値として取得する第2工程と、
    コンピュータが、前記演算処理部の構成要素の数が前記仮設計値より小さい値を初期値とし前記初期値を順次減少させることで設定された前記演算処理装置の回路記述を用いて、前記出力バッファ部のデータ出力タイミングが満たされなくなるまでシミュレーションを繰り返し実施する第3工程と、
    コンピュータが、前記第3工程で実施したシミュレーションのうち、前記出力バッファ部のデータ出力タイミングが満たされた最後のシミュレーションの結果から、そのシミュレーションで前記制御部により演算に割り当てられた前記演算処理部の構成要素の数を実設計値として取得する第4工程とを含むことを特徴とする演算処理装置の内部構成決定方法。
  9. 請求項8記載の演算処理装置の内部構成決定方法において、
    前記演算処理部は、構成要素として設けられる複数のレジスタ、複数の演算器および複数のメモリと、前記接続情報に応じて、前記レジスタ、前記演算器および前記メモリの接続関係を変更する接続関係変更部とを備え、
    前記第1および第3工程において、前記演算処理部の構成要素の数として、前記レジスタの数、前記演算器の数および前記メモリの数をパラメータ化した前記演算処理装置の回路記述を用いてシミュレーションを実施することを特徴とする演算処理装置の内部構成決定方法。
  10. 複数のデータ系列に対応する複数のメイン演算処理部と、
    前記メイン演算処理部に共通して設けられ、前記メイン演算処理部に代わって演算処理を実施するサブ演算処理部とを備え、
    前記サブ演算処理部は、請求項1〜請求項7のいずれかに記載の演算処理装置により構成されることを特徴とする演算処理システム。
JP2006091025A 2005-11-28 2006-03-29 演算処理装置、演算処理装置の内部構成決定方法および演算処理システム Expired - Fee Related JP4647533B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006091025A JP4647533B2 (ja) 2005-11-28 2006-03-29 演算処理装置、演算処理装置の内部構成決定方法および演算処理システム
US11/553,165 US7624252B2 (en) 2005-11-28 2006-10-26 Processing device, method of determining internal configuration of processing device, and processing system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2005342158 2005-11-28
JP2006091025A JP4647533B2 (ja) 2005-11-28 2006-03-29 演算処理装置、演算処理装置の内部構成決定方法および演算処理システム

Publications (2)

Publication Number Publication Date
JP2007172569A JP2007172569A (ja) 2007-07-05
JP4647533B2 true JP4647533B2 (ja) 2011-03-09

Family

ID=38088882

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006091025A Expired - Fee Related JP4647533B2 (ja) 2005-11-28 2006-03-29 演算処理装置、演算処理装置の内部構成決定方法および演算処理システム

Country Status (2)

Country Link
US (1) US7624252B2 (ja)
JP (1) JP4647533B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4996929B2 (ja) * 2007-01-17 2012-08-08 株式会社日立製作所 仮想計算機システム
KR102032895B1 (ko) 2013-01-28 2019-11-08 삼성전자주식회사 기능 유닛들 간의 기능 로직 공유 장치, 방법 및 재구성 가능 프로세서
US9571545B2 (en) * 2013-03-15 2017-02-14 International Business Machines Corporation Evaluating a stream-based computing application
US9329970B2 (en) 2013-03-15 2016-05-03 International Business Machines Corporation Selecting an operator graph configuration for a stream-based computing application
US10437650B2 (en) * 2014-06-19 2019-10-08 Nec Corporation Controlling execution of tasks in a series of operational processing by identifying processing units based on task command, task setting information, state of operational processing
KR101724517B1 (ko) * 2016-08-31 2017-05-11 대한민국(방위사업청장) 워게임 사후 검토 상황 재연 시스템 및 방법

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5392033A (en) * 1993-01-05 1995-02-21 International Business Machines Corporation Priority generator for providing controllable guaranteed fairness in accessing a shared bus
US5615350A (en) * 1994-10-24 1997-03-25 International Business Machines Corporation Apparatus to dynamically control the out-of-order execution of load-store instructions in a processor capable of dispatching, issuing and executing multiple instructions in a single processor cycle
JP2000311156A (ja) * 1999-04-27 2000-11-07 Mitsubishi Electric Corp 再構成可能並列計算機
JP2004287883A (ja) * 2003-03-24 2004-10-14 Toshiba Corp プロセッサ、計算機及び優先度決定方法
JP2004326228A (ja) * 2003-04-22 2004-11-18 Matsushita Electric Ind Co Ltd 並列演算処理装置
JP2005267382A (ja) * 2004-03-19 2005-09-29 Ip Flex Kk データ処理装置およびその制御方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE68929518T2 (de) 1988-10-05 2005-06-09 Quickturn Design Systems, Inc., Mountain View Verfahren zur Verwendung einer elektronisch wiederkonfigurierbaren Gatterfeld-Logik und dadurch hergestelltes Gerät
JP3083126B2 (ja) 1993-02-03 2000-09-04 日本電信電話株式会社 プログラマブル論理チップおよびマルチチップシステム
US5625789A (en) * 1994-10-24 1997-04-29 International Business Machines Corporation Apparatus for source operand dependendency analyses register renaming and rapid pipeline recovery in a microprocessor that issues and executes multiple instructions out-of-order in a single cycle
US5745724A (en) * 1996-01-26 1998-04-28 Advanced Micro Devices, Inc. Scan chain for rapidly identifying first or second objects of selected types in a sequential list
US5884059A (en) * 1996-01-26 1999-03-16 Advanced Micro Devices, Inc. Unified multi-function operation scheduler for out-of-order execution in a superscalar processor
US5799165A (en) * 1996-01-26 1998-08-25 Advanced Micro Devices, Inc. Out-of-order processing that removes an issued operation from an execution pipeline upon determining that the operation would cause a lengthy pipeline delay
US7047397B2 (en) * 2002-09-13 2006-05-16 Intel Corporation Method and apparatus to execute an instruction with a semi-fast operation in a staggered ALU
US7073159B2 (en) * 2004-03-31 2006-07-04 Intel Corporation Constraints-directed compilation for heterogeneous reconfigurable architectures

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5392033A (en) * 1993-01-05 1995-02-21 International Business Machines Corporation Priority generator for providing controllable guaranteed fairness in accessing a shared bus
US5615350A (en) * 1994-10-24 1997-03-25 International Business Machines Corporation Apparatus to dynamically control the out-of-order execution of load-store instructions in a processor capable of dispatching, issuing and executing multiple instructions in a single processor cycle
JP2000311156A (ja) * 1999-04-27 2000-11-07 Mitsubishi Electric Corp 再構成可能並列計算機
JP2004287883A (ja) * 2003-03-24 2004-10-14 Toshiba Corp プロセッサ、計算機及び優先度決定方法
JP2004326228A (ja) * 2003-04-22 2004-11-18 Matsushita Electric Ind Co Ltd 並列演算処理装置
JP2005267382A (ja) * 2004-03-19 2005-09-29 Ip Flex Kk データ処理装置およびその制御方法

Also Published As

Publication number Publication date
US7624252B2 (en) 2009-11-24
JP2007172569A (ja) 2007-07-05
US20070124563A1 (en) 2007-05-31

Similar Documents

Publication Publication Date Title
CN106406812B (zh) 微处理器和微处理器内的执行融合复合算术运算的方法
US8522243B2 (en) Method for configuring resources and scheduling task processing with an order of precedence
Gebotys et al. Simultaneous scheduling and allocation for cost constrained optimal architectural synthesis
JP4647533B2 (ja) 演算処理装置、演算処理装置の内部構成決定方法および演算処理システム
US9753726B2 (en) Computer for amdahl-compliant algorithms like matrix inversion
Fell et al. Force-directed scheduling for data flow graph mapping on coarse-grained reconfigurable architectures
JP3722351B2 (ja) 高位合成方法およびその実施に使用される記録媒体
JP2021108104A (ja) 部分的読み取り/書き込みが可能な再構成可能なシストリックアレイのシステム及び方法
Huff et al. Clockwork: Resource-efficient static scheduling for multi-rate image processing applications on FPGAs
GB2567027A (en) Common priority information for multiple resource arbitration
WO2023062456A1 (en) Dynamic, low-latency, dependency-aware scheduling on simd-like devices for processing of recurring and non-recurring executions of time-series data
JP2007034888A (ja) 機能ユニットにおいて不必要な電力消費を最小限に抑えるためのデータ経路の割振りのための方法および装置
WO2011096016A1 (ja) コンパイラ装置
Hwang et al. Zone scheduling
Flynn et al. Shared resource multiprocessing
Bakshi et al. A scheduling and pipelining algorithm for hardware/software systems
Dieguez et al. New tridiagonal systems solvers on GPU architectures
CN116670644A (zh) 通用计算核上的交错处理的方法
Nagpal et al. Integrated temporal and spatial scheduling for extended operand clustered VLIW processors
KR20060090512A (ko) 리소스 공유 및 파이프 라이닝 구성을 갖는 재구성가능배열구조
Purkayastha et al. Exploring the efficiency of opencl pipe for hiding memory latency on cloud fpgas
Saito et al. An ILP-based multiple task allocation method for fault tolerance in networks-on-chip
Wang et al. Meshed bluetree: Time-predictable multimemory interconnect for multicore architectures
Eisenbeis et al. Compiler techniques for optimizing memory and register usage on the Cray 2
Gebotys et al. Optimal mapping of DSP application to architectures

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080616

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20080728

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091106

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091201

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100122

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20100301

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20100301

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101019

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101116

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20101207

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101208

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131217

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees