JP4979975B2 - 論理集積回路、その演算用回路のソース、及びそのソースを記録したコンピュータ読み取り可能な記録媒体 - Google Patents

論理集積回路、その演算用回路のソース、及びそのソースを記録したコンピュータ読み取り可能な記録媒体 Download PDF

Info

Publication number
JP4979975B2
JP4979975B2 JP2006118502A JP2006118502A JP4979975B2 JP 4979975 B2 JP4979975 B2 JP 4979975B2 JP 2006118502 A JP2006118502 A JP 2006118502A JP 2006118502 A JP2006118502 A JP 2006118502A JP 4979975 B2 JP4979975 B2 JP 4979975B2
Authority
JP
Japan
Prior art keywords
data
memory
result storage
dedicated memory
multiplication
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.)
Active
Application number
JP2006118502A
Other languages
English (en)
Other versions
JP2007295128A (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.)
Daihen Corp
Original Assignee
Daihen Corp
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 Daihen Corp filed Critical Daihen Corp
Priority to JP2006118502A priority Critical patent/JP4979975B2/ja
Publication of JP2007295128A publication Critical patent/JP2007295128A/ja
Application granted granted Critical
Publication of JP4979975B2 publication Critical patent/JP4979975B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Logic Circuits (AREA)
  • Complex Calculations (AREA)

Description

本発明は、FA機器、通信機器、家電製品、医療機器等に組み込まれるフィールド・プログラマブル・ゲート・アレイ(以下、FPGAと略す)、プログラマブル・ロジック・デバイス(以下、PLDと略す)等の再プログラミング可能な論理集積回路に係わり、特に、論理集積回路上にコプロセッサ(co-processor)等の演算用回路を構築する技術に関する。
従来のFPGA、PLD等のユーザが手元で機能を完成させる方式の論理集積回路では、複雑な演算ロジックを構築する場合に、演算ロジックを直接ハードウェア記述言語で記述して、そのロジックに該当するハードウェア回路を作成する方法が採用されていた。これに対して、ASIC(Application Specific IC)の分野では、CPUコアを有するシステムLSIの構成を採るものが多く(例えば、特許文献1参照)、複雑な演算処理については、CPUコア内部のプログラムで処理する方式が採用されている。
しかしながら、上記のような従来の演算ロジックに相当するハードウェア回路を作成する方式のFPGA又はPLDでは、ディジタル信号処理における浮動小数点方式の演算用のロジック等の複雑な演算ロジックを構築する場合に、回路の規模が大きくなる。また、上記のような従来のASICに用いられているCPUコアをFPGA又はPLDに直接組み込んだ場合には、ゲートの使用率が大きくなり、また、FPGA又はPLD上におけるCPUコアの占有面積が大きくなる。
特開平6−250871号公報
本発明は、上記の問題を解決するためになされたものであり、FPGAやPLD等の論理集積回路上に簡易で高パーフォーマンスの演算用回路を構築することができるようにして、論理集積回路上における演算ロジックの省スペース化を図ることが可能な論理集積回路、その演算用回路のソース、及びそのソースを記録したコンピュータ読み取り可能な記録媒体を提供することを目的とする。
上記目的を達成するために請求項1の発明は、4段以上の段数のパイプライン処理を行う演算用回路を有するフィールド・プログラマブル・ゲート・アレイ等の論理集積回路において、前記演算用回路は、乗算器と、加算器と、前記乗算器による演算結果のデータを複数個格納可能な乗算結果格納専用メモリと、前記加算器による演算結果のデータを複数個格納可能な加算結果格納専用メモリと、これらの回路各部の制御を行うための制御部を備え、前記加算器は、前記乗算結果格納専用メモリに格納された複数個のデータのうちの2つのデータを加算し、前記乗算器は、前記加算結果格納専用メモリに格納された複数個のデータのうちの2つのデータを乗算し、前記乗算結果格納専用メモリと前記加算結果格納専用メモリとは、リード用のポートとライト用のポートを有し、データの読み出しとデータの書き込みを同時に行うことが可能なメモリであり、前記乗算器による乗算処理と、この乗算処理の結果の前記乗算結果格納専用メモリへの書き込み処理と、前記加算器による加算処理と、この加算処理の結果の前記加算結果格納専用メモリへの書き込み処理とを並列に処理し得るようにし、前記乗算処理の結果の前記乗算結果格納専用メモリへの書き込み処理と、前記加算処理の結果の前記加算結果格納専用メモリへの書き込み処理とを、セレクタを介さないで行うようにしたものである。
請求項2の発明は、請求項1に記載の論理集積回路において、前記制御部は、前記乗算結果格納専用メモリに格納された複数個のデータの中から、前記加算器に加算対象となるデータを出力するために、前記乗算結果格納専用メモリに前記加算対象となるデータに対応したアドレスを指示し、前記加算結果格納専用メモリに格納された複数個のデータの中から、前記乗算器に乗算対象となるデータを出力するために、前記加算結果格納専用メモリに前記乗算対象となるデータに対応したアドレスを指示するものである。
請求項3の発明は、請求項2に記載の論理集積回路において、前記制御部は、水平型マイクロコードを含むマイクロ命令を格納したプログラムメモリを有し、前記制御部は、前記乗算結果格納専用メモリ及び加算結果格納専用メモリに対する、アドレス指示用とライト・イネーブル信号出力用の制御線を有し、前記プログラムメモリから前記マイクロ命令を読み込み、このマイクロ命令に含まれる水平型マイクロコードを構成する各ビットのオン/オフ情報を前記制御線を介して前記乗算結果格納専用メモリ及び加算結果格納専用メモリに伝達することにより、前記乗算結果格納専用メモリ及び加算結果格納専用メモリに対するデータの読み書きを制御するものである。
請求項4の発明は、請求項1乃至3に記載の論理集積回路において、前記加算器による演算結果のデータを一時的に格納するためのレジスタをさらに備えるものである。
請求項の発明は、論理集積回路上における演算用回路についてのソースであって、前記ソースは、請求項1乃至請求項のいずれかに記載の論理集積回路上の演算用回路についてのハードウェア記述言語レベルのソースであるものである。
請求項の発明は、論理集積回路上における演算用回路についてのソースを記録したコンピュータ読み取り可能な記録媒体であって、前記ソースは、請求項1乃至請求項のいずれかに記載の論理集積回路上の演算用回路についてのハードウェア記述言語レベルのソースであるものである。
請求項1及び2の発明によれば、演算用回路を、主に、乗算器と、加算器と、乗算結果格納専用メモリと、加算結果格納専用メモリと、制御部とで構成したことにより、フィールド・プログラマブル・ゲート・アレイ等の論理集積回路上に、簡易な構成の演算用回路を構築することができるので、論理集積回路上における演算ロジックの省スペース化を図ることができる。また、演算用回路内のデータ・メモリを、乗算結果格納専用メモリと加算結果格納専用メモリとに分けて、加算器は、乗算結果格納専用メモリに格納された複数個のデータのうちの2つのデータを加算し、乗算器は、加算結果格納専用メモリに格納された複数個のデータのうちの2つのデータを乗算するようにしたことにより、演算用回路による加算処理と乗算処理とを並行して実行することができる。ここで、適応ディジタルフィルタにおけるフィルタリング等のディジタル信号処理においては、加算処理と乗算処理が交互に行われることが多いので、上記のように加算処理と乗算処理とを並行して実行することができるようにしたことにより、従来のASICに用いられているCPUコアをFPGA又はPLDに直接組み込んだ場合と比べて、クロックの周波数が同程度の場合には、ディジタル信号処理をより高速に実行することができる。
請求項3の発明によれば、制御部は、乗算結果格納専用メモリ及び加算結果格納専用メモリに対する、アドレス指示用とライト・イネーブル信号出力用の制御線を有し、プログラムメモリからマイクロ命令を読み込み、このマイクロ命令に含まれる水平型マイクロコードを構成する各ビットのオン/オフ情報を制御線を介して乗算結果格納専用メモリ及び加算結果格納専用メモリに伝達することにより、乗算結果格納専用メモリ及び加算結果格納専用メモリに対するデータの読み書きを制御するようにした。これにより、制御部が、命令をデコードしてレジスタやメモリに対する制御信号を生成することなく、乗算結果格納専用メモリ及び加算結果格納専用メモリに対するデータの読み書きを制御することができるので、制御部の行う処理を簡略化することができる。従って、制御部を簡易な構成とすることができると共に、乗算結果格納専用メモリ及び加算結果格納専用メモリに対するデータの読み書きの処理の高速化を図ることができる。
請求項4の発明によれば、加算器による演算結果のデータを一時的に格納するためのレジスタをさらに備えるようにしたことにより、ディジタル信号処理において、加算を連続して実行する場合における処理の高速化を図ることができる。
請求項6及び7の発明によれば、コンピュータにソースを読み取らせて、このソースを用いてコンピュータにより論理合成処理を行った結果を、論理集積回路にダウン・ロードすることにより、上記に記載の発明の効果と同等の効果を得ることができる。
本発明を実施するための最良の形態について図面を参照して説明する。なお、以下に記載した実施形態は、本発明を網羅するものではなく、本発明は、下記の形態だけに限定されない。
以下、本発明の一実施形態による論理集積回路であるフィールド・プログラマブル・ゲート・アレイ(以下、FPGAという)について図面を参照して説明する。図1に本実施形態によるFPGAにおけるコプロセッサ(co-processor)(請求項における演算用回路)周辺の構成を示す。コプロセッサ1は、FPGA(図6参照)上の演算ロジックの規模を小さくするために組み込まれたIPの一種である。このコプロセッサ1は、演算部3と、この演算部3による演算を制御する制御部2と、クロックジェネレータ14とを備えている。演算部3は、乗算器16と、加算器15と、乗算器16による演算結果のデータを複数個格納可能なメモリ19及びメモリ20(請求項における乗算結果格納専用メモリ)と、加算器15による演算結果のデータを複数個格納可能なメモリ21及びメモリ22(請求項における加算結果格納専用メモリ)と、加算器15に入力されるデータのルートの切り替えを行うためのマルチプレクサであるMUX1〜3と、乗算器16に入力されるデータのルートの切り替えを行うためのマルチプレクサであるMUX4〜6と、加算器15による演算結果のデータを一時的に格納するためのレジスタであるA_Reg23とから構成されている。メモリ19は、リード用のポート19aとライト用のポート19bを有するデュアル・ポート・メモリであり、メモリ19からのデータの読み出しとメモリ19へのデータの書き込みを同時に行うことができる。メモリ20〜22も同様である。メモリ19〜22は、それぞれ32ビットのデータを256個格納することができる。MUX2は、加算器15に入力されるデータを、MUX1から出力されたデータと、A_Reg23からのデータとの間で切り替えるためのマルチプレクサである。MUX17は、外部入力データの切り替え用のマルチプレクサである。MUX6は、乗算器16に入力されるデータを、MUX5から出力されたデータと、MUX17から出力された外部データとの間で切り替えるためのマルチプレクサである。
加算器15は、主に、ライン(データ用のバス)L5,L10とMUX1,3を介して、メモリ19及びメモリ20に格納された複数個のデータのうちの2つのデータを読み出して加算する。ただし、乗算器16による直前の乗算結果をそのまま次の加算処理に使用する場合は、加算器15は、ライン(データ用のバス)L4とMUX1を介して入力されたデータ、又はライン(データ用のバス)L9とMUX3を介して入力されたデータを加算処理に使用する。すなわち、ラインL4とラインL9とは、乗算器16による直前の乗算結果をそのままMUX1又はMUX3に送るためのバイパス用のラインである。
乗算器16は、主に、ライン(データ用のバス)L15,L20とMUX4,5を介して、メモリ21及びメモリ22に格納された複数個のデータのうちの2つのデータを読み出して乗算する。ただし、加算器15による直前の加算結果をそのまま次の乗算処理に使用する場合は、乗算器16は、ライン(データ用のバス)L14とMUX4を介して入力されたデータ、又はライン(データ用のバス)L19とMUX5を介して入力されたデータを乗算処理に使用する。すなわち、ラインL14とラインL19とは、加算器15による直前の加算結果をそのままMUX4又はMUX5に送るためのバイパス用のラインである。
制御部2は、プログラムカウンタ11と、プログラムメモリ12と、命令レジスタ13とを有している。プログラムカウンタ11は、次に実行すべきマイクロ命令が存在するプログラムメモリ12上のアドレスを指示する。プログラムメモリ12は、レングスが64ビットの水平型マイクロコード形式(マイクロ命令の1ビットを1つの制御信号に割り当てる単純な形式)のマイクロ命令を格納している。命令レジスタ13には、プログラムカウンタ11により指示されたプログラムメモリ12上のアドレスに格納されたマイクロ命令がセットされる。
命令レジスタ13とメモリ19との間には、メモリ19内のデータをMUX1に出力する際に、メモリ19に加算対象となる読み込みデータに対応したアドレスを入力するための制御線L1と、メモリ19に乗算器16から出力された乗算結果を書き込む際に、メモリ19上のデータが格納されるアドレスを入力するための制御線L2と、メモリ19にライト・イネーブル信号を出力するための制御線L21とが配設されている。また、命令レジスタ13とメモリ20との間には、メモリ20内のデータをMUX3に出力する際に、メモリ20に加算対象となる読み込みデータに対応したアドレスを入力するための制御線L6と、メモリ20に乗算器16から出力された乗算結果を書き込む際に、メモリ20上のデータが格納されるアドレスを入力するための制御線L7と、メモリ20にライト・イネーブル信号を出力するための制御線L22とが配設されている。なお、命令レジスタ13とA_Reg23との間には、命令レジスタ13からA_Reg23にライト・イネーブル信号を出力するための不図示の制御線(以下、A_Reg制御線という)が設けられている。このA_Reg制御線とA_Reg23とMUX2とを設けたことにより、加算器15は、前回の加算結果をそのまま用いて、次の加算処理を行うことができる。
命令レジスタ13とメモリ21との間には、メモリ21内のデータをMUX4に出力する際に、メモリ21に乗算対象となる読み込みデータに対応したアドレスを入力するための制御線L11と、メモリ21に加算器15から出力された加算結果を書き込む際に、メモリ21上のデータが格納されるアドレスを入力するための制御線L12と、メモリ21にライト・イネーブル信号を出力するための制御線L23とが配設されている。また、命令レジスタ13とメモリ22との間には、メモリ22内のデータをMUX5に出力する際に、メモリ22に乗算対象となる読み込みデータに対応したアドレスを入力するための制御線L16と、メモリ22に加算器15から出力された加算結果を書き込む際に、メモリ22上のデータが格納されるアドレスを入力するための制御線L17と、メモリ22にライト・イネーブル信号を出力するための制御線L24とが配設されている。
命令レジスタ13と演算部3内のMUX1〜6との間には、不図示の制御線(以下、マルチプレクサ制御線という)が設けられている。
乗算器16とメモリ19との間には、データ入力用のバスであるラインL3が設けられており、乗算器16とメモリ20との間には、データ入力用のバスであるラインL8が設けられている。また、加算器15とメモリ21との間には、データ入力用のバスであるラインL13が設けられており、加算器15とメモリ22との間には、データ入力用のバスであるラインL18が設けられている。
プログラムカウンタ11は、プログラムメモリ12からマイクロ命令を読み込んで命令レジスタ13にセットし、このマイクロ命令に含まれる各ビットのオン/オフ情報を、制御線L1,L2,L6,L7,L11,L12,L16,L17,L21,L22,L23及びL24を介して、メモリ19乃至22に伝達することにより、メモリ19乃至22に対するデータの読み書きを制御する。また、プログラムカウンタ11は、プログラムメモリ12からマイクロ命令を読み込んで命令レジスタ13にセットし、このマイクロ命令に含まれる各ビットのオン/オフ情報を、上記のマルチプレクサ制御線を介して、演算部3内のMUX1〜6に伝達することにより、演算部3内におけるデータの流れを制御する。すなわち、プログラムカウンタ11は、プログラムメモリ12からマイクロ命令を読み込んで命令レジスタ13にセットし、このマイクロ命令に含まれる各ビットのオン/オフ情報を、演算部3内のメモリ19乃至22及びMUX1〜6に伝達することにより、演算部3内における演算処理を制御する。
上記の構成においては、加算器15は、主に、乗算器16による乗算結果を用いて加算処理を行い、乗算器16は、主に、加算器15による加算結果を用いて加算処理を行う。従って、演算部3内のデータフローは、図2(b)に示されるようなイメージになる。従来のプロセッサにおいては、ALUを複数備えたものがある。しかしながら、図2(a)に示されるように、この種のプロセッサにおける各ALU101、102は、それぞれのALU101、102が過去に処理したデータのみを用いて、次の演算処理を行う。これに対して、本実施形態におけるコプロセッサ1の加算器15は、原則として、乗算器16が過去に処理したデータを用いて、次の演算処理を行う。また、本実施形態におけるコプロセッサ1の乗算器16は、原則として、加算器15が過去に処理したデータを用いて、次の演算処理を行う。
図3は、プログラムメモリ12に格納されるマイクロ命令の元になるコマンドとマイクロ命令との対応関係を示す表である。図における39の列と40の列は、それぞれマイクロ命令の元になるコマンドの第1オペランドと第2オペランドの内容を示している。また、各マイクロ命令は、全体で64ビットのレングスを持ち、第1コマンド部と第2コマンド部から構成される16ビットのコマンド部31と、第1乃至第6OP部から構成される48ビットのオペランド部32とから構成される。第1乃至第6OP部は、それぞれ8ビットのレングスを持つ。これらの第1乃至第6OP部には、該当するマイクロ命令の元になるコマンドにおける各オペランド39、40に対応した、メモリ19乃至22上のアドレスが格納される。
図中の”mult”は、乗算命令であり、”w_mult”は、乗算結果のメモリ19及び20への書込命令であり、”add”は、加算命令であり、”w_adds”は、加算結果のメモリ21及び22への書込命令である。”sub_ab”は、「(第1オペランドが指し示すアドレスのデータ) − (第2オペランドが指し示すアドレスのデータ)」を意味する減算命令であり、”sub_ba”は、「(第2オペランドが指し示すアドレスのデータ) − (第1オペランドが指し示すアドレスのデータ)」を意味する減算命令である。また、”lda”は、A_Reg23からのデータの書き込み命令であり、”sta”は、A_Reg23へのデータの読み込み命令である。また、”ld_div”,”ld_alimit”,”ld_din”は、いずれもロード(load)系の命令であり、”st_ua1”,”st_ua2”,”st_ub1”,”st_ub2”,”st_m1”,”st_m2”,”st_n1”,”st_n2”は、いずれもストア(store)系の命令である。
図中において「排他」と記載されたグループ内の2つ以上のコマンドを同時に実行させることはできない。従って、図4に示されるプログラムシート50において、図3中の「排他」と記載されたグループ(以下、排他グループという)内の2つ以上のコマンドを同じ行に記載することはできない。例えば、プログラムシート50において、図3中の最初の排他グループ(”add”と”sub_ab”と”sub_ba”から構成されるグループ)内の2つ以上のコマンド(例えば、”add”と”sub_ab”)を同じ行に記載することはできない。これに対して、図3中の同じ排他グループ内に含まれるコマンドどうしの組み合わせでなければ、図3中に示される2つ以上のコマンドを同時に実行することが可能である。例えば、図3中の”mult”、”w_mult”、”w_adds”、及び”add”を同時に実行させることができる。従って、図4に示されるプログラムシート50において、”mult”、”w_mult”、”w_adds”、及び”add”を同じ行に記載することができる。
図3において、35は、第2オペランド40内のラベルに対応したアドレスに格納された、メモリ19、20上のデータの正負の符号を反転させるためのビットを表す。36は、第1オペランド39内のラベルに対応したアドレスに格納された、メモリ19、20上のデータの正負の符号を反転させるためのビットを表す。また、34は、メモリ21、22へのライト・イネーブル信号に対応したビットを表し、33は、メモリ19、20へのライト・イネーブル信号に対応したビットを表す。さらにまた、37は、MUX2におけるデータの流れを切り替えるためのビットであり、38は、MUX6におけるデータの流れを切り替えるためのビットである。なお、第2コマンド部における37、38以外のビットは、演算部3内のMUX2、6以外のマルチプレクサにおけるデータの流れを切り替えるためのビットである。
図4は、図3に示されるコマンドを組み合せたプログラムを入力するためのエディターである、プログラムシートを示す。図中のプログラムシート50に示されるプログラムは、IIR(infinite impulse response:無限長インパルス応答)フィルタにおける処理の一部を記載したものである。なお、このコプロセッサ1においては、パイプライン処理の段数が4段であるので、乗算処理や加算処理の結果を、これらの処理から見て4つ以上後の処理において、メモリ19乃至22に書き込む必要がある。ただし、パイプライン処理の段数を変更すれば、乗算処理や加算処理の結果を、いくつ後の処理で書き込む必要があるかという点を変えることができる。
プログラムシート50における1行目のコマンド”mult const1”は、外部から入力されたデータ(図1中におけるMUX17から入力されたEXT_Data)を、定数”1”と掛けるためのコマンドである。この乗算の結果は、矢印(1)に示されるように、5行目の2つ目のコマンド”w_mult v_vc”により、加算器15側のメモリ19及び20における、ラベルv_vcに対応したアドレスに保存される。このように、外部から入力されたデータに定数”1”を掛けて加算器15側のメモリ19及び20に格納する処理を行った理由は、外部から入力されたデータを直接加算器15側のメモリ19及び20に書き込むルートがないからである。上記のような乗算処理を行うことにより、外部から入力されたデータを加算器15側のメモリ19及び20に書き込むことができる。これは、本実施形態のコプロセッサ1の構造をシンプルにするための工夫の一つである。
プログラムシート50における3行目のコマンド”mult v_vb v_aa”は、乗算器16側のメモリ21又は22における、ラベルv_vbに対応したアドレスに保存されたデータと、乗算器16側のメモリ21又は22における、ラベルv_aaに対応したアドレスに保存されたデータとの乗算を行うためのコマンドである。この乗算の結果は、矢印(2)に示されるように、7行目の2つ目のコマンド”w_mult v_ve”により、加算器15側のメモリ19及び20における、ラベルv_veに対応したアドレスに保存される。
プログラムシート50における5行目のコマンド”mult v_vi v_bb”は、乗算器16側のメモリ21又は22における、ラベルv_viに対応したアドレスに保存されたデータと、乗算器16側のメモリ21又は22における、ラベルv_bbに対応したアドレスに保存されたデータとの乗算を行うためのコマンドである。この乗算の結果は、矢印(4)に示されるように、9行目の2つ目のコマンド”w_mult v_vf”により、加算器15側のメモリ19及び20における、ラベルv_vfに対応したアドレスに保存される。
上記7行目の2つ目のコマンド”w_mult v_ve”により、加算器15側のメモリ19及び20における、ラベルv_veに対応したアドレスに保存された乗算結果と、上記9行目の2つ目のコマンド”w_mult v_vf”により、加算器15側のメモリ19及び20における、ラベルv_vfに対応したアドレスに保存された乗算結果は、矢印(3)及び(5)に示されるように、10行目の3つ目のコマンド”add v_vf v_ve”で、加算処理に用いられる。そして、このコマンド”add v_vf v_ve”による加算の結果は、矢印(6)に示されるように、14行目の4つ目のコマンド”w_adds v_vd”により、乗算器16側のメモリ21及び22における、ラベルv_vdに対応したアドレスに保存される。
7行目のコマンド”mult v_vb const1”は、乗算器16側のメモリ21又は22における、ラベルv_vbに対応したアドレスに保存されたデータと、定数”1”とを掛けるためのコマンドである。この乗算の結果は、矢印(7)に示されるように、11行目の2つ目のコマンド”w_mult v_vi”により、加算器15側のメモリ19及び20における、ラベルv_viに対応したアドレスに保存される。この乗算結果は、矢印(8)に示されるように、12行目の3つ目のコマンド”add v_vi const0”で、加算処理に用いられる。このコマンドは、加算器15側のメモリ19又は20における、ラベルv_viに対応したアドレスに保存されたデータと、定数”0”とを加算するためのコマンドである。このコマンドによる加算の結果は、矢印(9)に示されるように、14行目の4つ目のコマンド”w_adds v_vi”により、乗算器16側のメモリ21及び22における、ラベルv_viに対応したアドレスに保存される。
上記のように、乗算器16側のメモリ21又は22における、ラベルv_vbに対応したアドレスに保存されたデータに定数”1”を掛けて加算器15側のメモリ19及び20に格納する処理(7行目のコマンド”mult v_vb const1”)を行った後に、この加算器15側のメモリ19又は20に格納された乗算結果と、定数”0”とを加算して乗算器16側のメモリ21及び22における、ラベルv_viに対応したアドレスに格納する処理を行った理由は、乗算器16側のメモリ21又は22における、所定のアドレスに保存されたデータを、乗算器16側のメモリ21及び22における、他のアドレスに直接書き込むルートがないからである。上記のような処理を行うことにより、乗算器16側のメモリ上の所定のアドレスに保存されたデータを、同じメモリ上の他のアドレスにコピーすることができる。これも、本実施形態のコプロセッサ1の構造をシンプルにするための工夫の一つである。
また、図4には示していないが、上記の7行目のコマンド”mult v_vb const1”を、1行目のコマンド”mult const1”に置き換えることにより、外部から入力されたデータを乗算器16側のメモリ21及び22に書き込むことができる。これも、本実施形態のコプロセッサ1の構造をシンプルにするための工夫の一つである。
本実施形態のコプロセッサ1は、プログラムシート50における同じ行に記載された各コマンド(例えば、5行目の1つ目のコマンド”mult v_vi v_bb”と、2つ目のコマンド”w_mult v_vc”と)を並列に処理することができる。すなわち、コプロセッサ1は、multコマンドによる乗算処理と、w_multコマンドによる乗算結果の加算器15側のメモリ19及び20への書き込み処理と、addコマンドによる加算処理と、w_addsコマンドによる加算結果の乗算器16側のメモリ21及び22への書き込み処理等を並列に処理することができる。
上記のように、乗算処理と、乗算結果の加算器15側のメモリへの書き込み処理と、加算処理と、加算結果の乗算器16側のメモリへの書き込み処理とを並列に処理することができる理由は、従来のように、演算処理用のALUを用いるのではなく、加算専用の演算器である加算器15と、乗算専用の演算器である乗算器16とで演算を行うようにする共に、データメモリを、加算器15側のメモリ19及び20と、乗算器16側のメモリ21及び22とに分けたことによる。
次に、図5及び図6を参照して、上記のコプロセッサ1についてのハードウェア記述言語レベルのソースに基づく論理合成結果を、FPGA10にダウンロードする手順について説明する。ユーザは、プログラムメモリ12に格納するプログラムを作成して、パソコン上でこのプログラムのシミュレーション(オフライン・デバッグ)を行う。そして、このシミュレーションによる検証結果がOKになると、パソコンは、ユーザによる指示操作に応じて、コプロセッサ1についてのハードウェア記述言語(例えばVHDL(VHSIC Hardware Description Language))レベルのソースの生成と(S1)、FPGA10上の他のIP76、77についてのハードウェア記述言語レベルのソースの生成(#2)を行った後、これらのソースの論理合成を行い(#3)、その論理合成結果をFPGA10内のROM75にダウン・ロードする(#4)。このROM75が、請求項7における、コンピュータ読み取り可能な記録媒体に相当する。
上述したように、本実施形態によるコプロセッサ1によれば、演算用回路を、主に、乗算器16と、加算器15と、乗算結果格納専用メモリ19及び20と、加算結果格納専用メモリ21及び22と、制御部2とで構成したことにより、FPGA10上に、簡易な構成の演算用回路を構築することができるので、FPGA10上における演算ロジックの省スペース化を図ることができる。また、FPGA10内のデータ・メモリを、乗算結果格納専用メモリ19及び20と加算結果格納専用メモリ21及び22とに分けて、加算器15は、乗算結果格納専用メモリ19及び20に格納された複数個のデータのうちの2つのデータを加算し、乗算器16は、加算結果格納専用メモリ21及び22に格納された複数個のデータのうちの2つのデータを乗算するようにしたことにより、コプロセッサ1による加算処理と乗算処理とを並行して実行することができる。
ここで、適応ディジタルフィルタにおけるフィルタリング等のディジタル信号処理においては、加算処理と乗算処理が交互に行われることが多いので、上記のように加算処理と乗算処理とを並行して実行することができるようにしたことにより、従来のASICに用いられているCPUコアをFPGA又はプログラマブル・ロジック・デバイス(以下、PLDと略す)に直接組み込んだ場合と比べて、クロックの周波数が同程度の場合には、ディジタル信号処理をより高速に実行することができ、特に、FPGAにおいて浮動小数点演算を実行する場合における処理速度を高速化することができる。具体的には、本実施形態によるコプロセッサ1を浮動小数点演算に用いた場合、コプロセッサ1におけるクロックの周波数が50MB/Sであるとき、クロックの周波数が300MB/Sの通常のDSP(Digital Signal Processor)に比べて、処理速度を10倍の速さにすることができる。
上記の制御部2は、乗算結果格納専用メモリ19、20、及び加算結果格納専用メモリ21、22に対する、アドレス指示用の制御線L1,L2,L6,L7,L11,L12,L16,L17とライト・イネーブル信号出力用の制御線L21,L22,L23,L24とを有し、プログラムメモリ12からマイクロ命令を読み込み、このマイクロ命令に含まれる水平型マイクロコードを構成する各ビットのオン/オフ情報を上記の各制御線を介して乗算結果格納専用メモリ19、20及び加算結果格納専用メモリ21、22に伝達することにより、乗算結果格納専用メモリ19、20及び加算結果格納専用メモリ21、22に対するデータの読み書きを制御するようにした。これにより、制御部2が、命令をデコードしてレジスタやメモリに対する制御信号を生成することなく、乗算結果格納専用メモリ19、20及び加算結果格納専用メモリ21、22に対するデータの読み書きを制御することができるので、制御部2の行う処理を簡略化することができる。従って、制御部2を簡易な構成とすることができると共に、乗算結果格納専用メモリ19、20及び加算結果格納専用メモリ21、22に対するデータの読み書きの処理の高速化を図ることができる。
また、加算器15による加算結果のデータを一時的に格納するためのレジスタであるA_Reg23をさらに備えるようにしたことにより、コプロセッサ1におけるディジタル信号処理において、加算を連続して実行する場合における処理の高速化を図ることができる。
なお、本発明は、上記実施形態に限られるものではなく、様々な変形が可能である。例えば、上記の実施形態では、本発明によるコプロセッサ1が構築される論理集積回路が、FPGAである場合の例を示したが、本発明によるコプロセッサ1をFPGA以外の再プログラミング可能な論理集積回路(例えばPLD)に構築してもよい。また、上記の実施形態では、コプロセッサ1におけるパイプライン処理の段数が4段である場合の例を示したが、コプロセッサにおけるパイプライン処理の段数は、これに限られない。
本発明の一実施形態による論理集積回路上のコプロセッサの構成図。 (a)は、従来のプロセッサにおけるデータフローのイメージを示す図、(b)は、上記本実施形態によるコプロセッサ内の演算部におけるデータフローのイメージを示す図。 上記図1中のプログラムメモリに格納されるマイクロ命令の元になるコマンドとマイクロ命令との対応関係を示す表。 上記図3に示されるコマンドを組み合せたプログラムを入力するためのエディターである、プログラムシートを示す図。 上記コプロセッサについてのハードウェア記述言語レベルのソースに基づく論理合成結果を、FPGAにダウンロードする手順を示すフローチャート。 上記の論理合成結果のダウン・ロードとダウン・ロード後の実機テストに用いられる機器の構成図。
符号の説明
1 コプロセッサ(演算用回路)
2 制御部
10 FPGA
12 プログラムメモリ
15 加算器
16 乗算器
19 メモリ(乗算結果格納専用メモリ)
20 メモリ(乗算結果格納専用メモリ)
21 メモリ(加算結果格納専用メモリ)
22 メモリ(加算結果格納専用メモリ)
23 A_Reg(加算器による演算結果のデータを一時的に格納するためのレジスタ)
L1,L2,L6,L7,L11,L12,L16,L17 制御線(アドレス指示用の制御線)
L21,L22,L23,L24 制御線(ライト・イネーブル信号出力用の制御線)
75 ROM(コンピュータ読み取り可能な記録媒体)

Claims (6)

  1. 4段以上の段数のパイプライン処理を行う演算用回路を有するフィールド・プログラマブル・ゲート・アレイ等の論理集積回路において、
    前記演算用回路は、
    乗算器と、
    加算器と、
    前記乗算器による演算結果のデータを複数個格納可能な乗算結果格納専用メモリと、
    前記加算器による演算結果のデータを複数個格納可能な加算結果格納専用メモリと、
    これらの回路各部の制御を行うための制御部を備え、
    前記加算器は、前記乗算結果格納専用メモリに格納された複数個のデータのうちの2つのデータを加算し、
    前記乗算器は、前記加算結果格納専用メモリに格納された複数個のデータのうちの2つのデータを乗算し、
    前記乗算結果格納専用メモリと前記加算結果格納専用メモリとは、リード用のポートとライト用のポートを有し、データの読み出しとデータの書き込みを同時に行うことが可能なメモリであり、
    前記乗算器による乗算処理と、この乗算処理の結果の前記乗算結果格納専用メモリへの書き込み処理と、前記加算器による加算処理と、この加算処理の結果の前記加算結果格納専用メモリへの書き込み処理とを並列に処理し得るようにし、
    前記乗算処理の結果の前記乗算結果格納専用メモリへの書き込み処理と、前記加算処理の結果の前記加算結果格納専用メモリへの書き込み処理とを、セレクタを介さないで行うようにしたことを特徴とする論理集積回路。
  2. 前記制御部は、
    前記乗算結果格納専用メモリに格納された複数個のデータの中から、前記加算器に加算対象となるデータを出力するために、前記乗算結果格納専用メモリに前記加算対象となるデータに対応したアドレスを指示し、
    前記加算結果格納専用メモリに格納された複数個のデータの中から、前記乗算器に乗算対象となるデータを出力するために、前記加算結果格納専用メモリに前記乗算対象となるデータに対応したアドレスを指示することを特徴とする請求項1に記載の論理集積回路。
  3. 前記制御部は、水平型マイクロコードを含むマイクロ命令を格納したプログラムメモリを有し、
    前記制御部は、前記乗算結果格納専用メモリ及び加算結果格納専用メモリに対する、アドレス指示用とライト・イネーブル信号出力用の制御線を有し、前記プログラムメモリから前記マイクロ命令を読み込み、このマイクロ命令に含まれる水平型マイクロコードを構成する各ビットのオン/オフ情報を前記制御線を介して前記乗算結果格納専用メモリ及び加算結果格納専用メモリに伝達することにより、前記乗算結果格納専用メモリ及び加算結果格納専用メモリに対するデータの読み書きを制御するようにしたことを特徴とする請求項2に記載の論理集積回路。
  4. 前記加算器による演算結果のデータを一時的に格納するためのレジスタをさらに備えることを特徴とする請求項1乃至3のいずれかに記載の論理集積回路。
  5. 論理集積回路上における演算用回路についてのソースであって、
    前記ソースは、請求項1乃至請求項のいずれかに記載の論理集積回路上の演算用回路についてのハードウェア記述言語レベルのソースであることを特徴とする演算用回路のソース。
  6. 論理集積回路上における演算用回路についてのソースを記録したコンピュータ読み取り可能な記録媒体であって、
    前記ソースは、請求項1乃至請求項のいずれかに記載の論理集積回路上の演算用回路についてのハードウェア記述言語レベルのソースであることを特徴とする演算用回路のソースを記録したコンピュータ読み取り可能な記録媒体。
JP2006118502A 2006-04-21 2006-04-21 論理集積回路、その演算用回路のソース、及びそのソースを記録したコンピュータ読み取り可能な記録媒体 Active JP4979975B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006118502A JP4979975B2 (ja) 2006-04-21 2006-04-21 論理集積回路、その演算用回路のソース、及びそのソースを記録したコンピュータ読み取り可能な記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006118502A JP4979975B2 (ja) 2006-04-21 2006-04-21 論理集積回路、その演算用回路のソース、及びそのソースを記録したコンピュータ読み取り可能な記録媒体

Publications (2)

Publication Number Publication Date
JP2007295128A JP2007295128A (ja) 2007-11-08
JP4979975B2 true JP4979975B2 (ja) 2012-07-18

Family

ID=38765322

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006118502A Active JP4979975B2 (ja) 2006-04-21 2006-04-21 論理集積回路、その演算用回路のソース、及びそのソースを記録したコンピュータ読み取り可能な記録媒体

Country Status (1)

Country Link
JP (1) JP4979975B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012108411A1 (ja) 2011-02-10 2012-08-16 日本電気株式会社 符号化/復号化処理プロセッサ、および無線通信装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2583774B2 (ja) * 1987-12-25 1997-02-19 ジーイー横河メディカルシステム株式会社 高速数値演算装置
JPH01170111A (ja) * 1987-12-25 1989-07-05 Hitachi Ltd ディジタル・シグナル・プロセッサ
US4916651A (en) * 1988-01-29 1990-04-10 Texas Instruments Incorporated Floating point processor architecture
JP2696903B2 (ja) * 1988-04-19 1998-01-14 三菱電機株式会社 数値計算装置
JPH0289540U (ja) * 1988-12-23 1990-07-16
US5257214A (en) * 1992-06-16 1993-10-26 Hewlett-Packard Company Qualification of register file write enables using self-timed floating point exception flags

Also Published As

Publication number Publication date
JP2007295128A (ja) 2007-11-08

Similar Documents

Publication Publication Date Title
JP5748935B2 (ja) Simd命令をサポートするプログラマブルデータ処理回路
US8612726B2 (en) Multi-cycle programmable processor with FSM implemented controller selectively altering functional units datapaths based on instruction type
GB2464292A (en) SIMD processor circuit for performing iterative SIMD multiply-accumulate operations
KR900011167A (ko) 디지탈신호 처리장치 및 움직임 보상연산방법
JP3954171B2 (ja) コンピュータにおけるスカラ値をベクトルに記入する方法
WO2004053718A1 (en) Cellular engine for a data processing system
JP2006146953A (ja) プロセッサ、システムlsi、システムlsiの設計方法、及び、それを記録した記録媒体
US6505288B1 (en) Matrix operation apparatus and digital signal processor capable of performing matrix operations
JP2001504959A (ja) Riscアーキテクチャを有する8ビットマイクロコントローラ
JP3805314B2 (ja) プロセッサ
KR102000894B1 (ko) 이미지 프로세서용 다기능 실행 레인
Moorer The lucasfilm audio signal processor
JP4979975B2 (ja) 論理集積回路、その演算用回路のソース、及びそのソースを記録したコンピュータ読み取り可能な記録媒体
JP4391053B2 (ja) 複数の独立の専用プロセッサを有するデジタル信号プロセッサ
JP3727395B2 (ja) マイクロコンピュータ
Enzler et al. Co-Simulation of a Hybrid Multi-Context Architecture.
JP3841820B2 (ja) マイクロコンピュータ
JP2002229970A (ja) Simd積和演算方法、積和演算回路、および、半導体集積回路装置
US6260136B1 (en) Substitute register for use in a high speed data processor
US7526632B1 (en) System, apparatus and method for implementing multifunctional memory in reconfigurable data path processing
JPH09305401A (ja) コンピュータ及びコンパイラ
JP2885197B2 (ja) 演算処理装置及び演算処理方法
JP3532026B2 (ja) 演算装置
Tell A domain specific DSP processor
JP2004303058A (ja) ベクトルプロセッサおよびそのデータ処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090306

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110916

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110927

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111102

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: 20120327

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: 20120418

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

Free format text: PAYMENT UNTIL: 20150427

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4979975

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250