JP4208577B2 - 集積回路装置 - Google Patents

集積回路装置 Download PDF

Info

Publication number
JP4208577B2
JP4208577B2 JP2002592291A JP2002592291A JP4208577B2 JP 4208577 B2 JP4208577 B2 JP 4208577B2 JP 2002592291 A JP2002592291 A JP 2002592291A JP 2002592291 A JP2002592291 A JP 2002592291A JP 4208577 B2 JP4208577 B2 JP 4208577B2
Authority
JP
Japan
Prior art keywords
data
arithmetic
arithmetic units
types
integrated circuit
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 - Lifetime
Application number
JP2002592291A
Other languages
English (en)
Other versions
JPWO2002095946A1 (ja
Inventor
顕士 池田
大 志村
友美 佐藤
Original Assignee
アイピーフレックス株式会社
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 アイピーフレックス株式会社 filed Critical アイピーフレックス株式会社
Publication of JPWO2002095946A1 publication Critical patent/JPWO2002095946A1/ja
Application granted granted Critical
Publication of JP4208577B2 publication Critical patent/JP4208577B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Logic Circuits (AREA)
  • Semiconductor Integrated Circuits (AREA)

Description

技術分野
本発明は、複数の演算ユニットがマトリクス状に配置された集積回路装置に関するものである。
背景技術
論理ゲートをアレイ状に敷き詰めてその間の結線を自由に変更することができる集積回路装置としてFPGA(Field Programmable Gate Array)が知られている。FPGAは、大きく分けると、複数の論理ブロックと、これらの論理ブロックの間を接続する配線によって構成されている。論理ブロックは、ルックアップテーブルとフリップフロップを含む回路ユニットであり、ルックアップテーブルの設定値を変えることにより、ビット単位でANDあるいはORなどの論理関数を実現する論理ゲートとして機能する。複数の論理ブロックは、アレイ状あるいはマトリクス状に配置され、行配線および列配線により接続される。行配線および列配線は、それらの配線の交点でスイッチマトリクスなどによって接続されて配線の組換えが可能となっており、それにより論理ブロックの組み合わせを変更することができる。
FPGAはトランジスタレベルでの接続を変更可能なアーキテクチャとして発展しており、実行可能な機能を製造した後にある程度自由に変更することが可能な集積回路装置である。したがって、FPGAは、各種の専用演算回路を同一のハードウェアで実現することが可能であり、さらに、実現される機能を、ある程度動的に制御できる可能性のあるアーキテクチャである。また、汎用的に利用可能なアーキテクチャを提供するために、FPGAを構成する論理ブロックは同一構成であり、個々の論理ブロックで実現可能な論理関数をAND、ORあるいはNAND程度のレベルに限定されている。さらに、処理するデータもビット単位である。したがって、個々の論理ブロックは4ビット程度のSRAMから成るルックアップテーブルを搭載しているに過ぎない。
FPGAは、ルックアップテーブルを含む論理ブロックでANDやORなどの論理ゲートの機能を実現し、それらを組み替え可能な配線群で接続することにより各種の専用演算回路としての機能を実現する。したがって、実現可能な機能に対して面積効率は低く、演算速度もそれほど高くはならない。さらに、FPGAで実現可能な機能を変更しようとすると、膨大な数の論理ブロックの機能を変更する必要があるので、ダイナミックに変更することは無理である。各々の論理ブロックをダイレクトに制御できるような特殊なハードウェアを設けることにより機能を変更する時間を短縮することが可能であるとしても、アプリケーションの実行中に特殊なハードウェアを動的に制御することは難しく、さらに、経済的な解であるとも言えない。
これに対し、本願の発明者らは、適当な、あるいは特定の処理に適したデータパス(ハードウェアロジックあるいは回路)を予め備えた複数種類の演算ユニットを用意し、これらの演算ユニット間の接続を変えることにより所望の専用演算回路としての機能を定義できる集積回路装置を提案する。この集積回路装置であれば、FPGAのようにトランジスタレベルでの接続をすべて変更する必要がないので、短時間でハードウェアを再構成できる。FPGAのようにトランジスタレベルでの汎用性を要求するアーキテクチャではないので、実装密度も向上でき、コンパクトで経済的なシステムを提供できる。さらに、冗長な構成を削減することができるので、処理速度も高速になり、AC特性も向上する。
しかしながら、FPGAは各回路ユニットあるいは回路ブロックが同一の構成であるために、これらの回路ブロックをマトリクス状に配列し、それらの間に行配線および列配線を配置するレイアウトは極めて規則性が高く、設計も容易であり、さらに素子レベルの面積効率も高い。これに対し、特定の処理に適したデータパスを備えた演算ユニットは、その処理により内蔵するデータパスが異なるので回路構成は同一にならない。したがって、各種の演算ユニットをシリコン基板上で実現するために必要となる面積は同一にはならない。単一構成のFPGAと同じようなマトリクスを得るために、各種の演算ユニットが内蔵するデータパスが異なるにも関わらず各種の演算ユニットが占める面積を同一にするように配置することは可能である。すなわち、占有面積が最大となる演算ユニットに揃えたマトリクスで複数の演算ユニットをレイアウトすることも可能である。しかしながら、面積効率は低下し、集積回路が非常に大きくなり、AC特性が悪化する要因となる。したがって、特定の処理に適したデータパスを備えた演算ユニットからなる集積回路装置の本来のメリットを十分に活かすことができない。
そこで、本発明においては、特定の処理に適したデータパスを備えた複数種類の演算ユニットを含む集積回路装置を実際に設計する上で、そのような演算ユニットのメリットを十分に活かすことができる集積回路装置を提供することを目的としている。そして、コンパクトで経済的な集積回路装置であり、処理速度も速く、AC特性も良好な集積回路装置を提供することを目的としている。
発明の開示
本発明の集積回路装置は、第1および第2の方向にマトリクス状に配置された複数の演算ユニットと、複数の演算ユニットの第1の方向の配列に対応して第1の方向に延び、各演算ユニットの入力および/または出力データを伝送する複数の第1の配線群と、複数の演算ユニットの第2の方向の配列に対応して第2の方向に延び、各演算ユニットの入力および/または出力データを伝送する複数の第2の配線群と、第1および第2の配線群の各々の交点に配置され、第1の配線群に含まれる任意の配線と第2の配線群に含まれる任意の配線を選択して接続可能な複数のスイッチングユニットと、を備えたデータ処理区画を有する。この集積回路装置においては、さらに、複数の演算ユニット(Operation Unit)が、特定の処理に適した、異なるデータパスを備えた複数種類の演算ユニットを含み、あるいは複数種類の演算ユニットに分類でき、さらに、同一種類の演算ユニットが第1または第2の方向の配列を形成する。
各々が特定の処理に適したデータパスを備え、特定の算術演算または論理演算、それらの組み合わせを実行可能な小規模な、しかしながらバイトあるいはワード単位のデータを処理できる、ユニットを本明細書では演算ユニットと呼ぶ。この演算ユニットは、エレメント、論理エレメント、論理ユニットあるいは回路ユニットなどとも称されるものである。特定の処理に適した、異なる、あるいは固有のデータパスを備えた複数種類の演算ユニットを半導体基板上に実現するための面積は、各種の演算ユニットにより異なる可能性が高い。しかしながら、同一種類の演算ユニットであれば占有する面積は同じになる。したがって、同一種類の演算ユニットにより、第1の方向または第2の方向の配列を形成することにより、配列された方向では、演算ユニットのサイズの差による凸凹はなくなる。第1の方向を行方向(水平あるいは横ライン方向)とすると、第2の方向は列方向(垂直あるいは縦ライン方向)となる。たとえば、同一種類の演算ユニットにより第1の方向の配列を形成すれば、複数の演算ユニットを、第1の方向に、直線的な、同一幅の帯を形成するように配置できる。したがって、種類毎にデータパスが異なりサイズが異なる可能性の高い複数の演算ユニットを、第2の方向には無駄なスペースを発生させずに、第1の方向は直線的に配置できる。第1の方向に演算ユニットが凹凸なく直線的に並ぶので、少なくとも第1の方向の配線群は直線的にレイアウトできる。このため、異なるデータパスを備えた演算ユニットがマトリクス状に配置された集積回路装置の面積効率および集積度を高めることが可能であり、経済的で処理速度が速くAC特性も良好な集積回路装置を提供できる。
同一種類の演算ユニットを多数配置するときは、第1または第2の方向に複数の配列を形成するように配置することができる。ある種類、たとえば第1種の演算ユニットの数が、第2種の演算ユニットの数より非常に多い場合、第2類の演算ユニットの配列に単純に合わせて、第1種の演算ユニットを配置すると、データ処理区画の形状が細長くなりすぎて面積効率が低下する可能性がある。この場合は、第2種の演算ユニットの配列に、第1種の演算ユニットの配列を繋げることにより、データ処理区画の形状を改善することが望ましい。この場合も、データ処理区画の少なくとも一部である、第2種の演算ユニットの配列の幅の範囲では、同一種類の演算ユニットにより第1または第2の方向の配列が形成される。
同一種類の演算ユニットを第1の方向に配列した場合、種類によりサイズの異なる演算ユニットであっても第1の方向には直線に凹凸のない状態で並ぶが、第2の方向の直線性は保障されない。したがって、複数種類の演算ユニットを第1の方向に等間隔で配置し、第2の方向の直線性を保障することが望ましい。これにより、第2の方向の配線群を直線的にレイアウトすることが可能となり、演算ユニットを結ぶ配線長を最短にすることができる。それと共に、第1および第2の配線群を全て直線的に配置することが可能となり、異なるデータパスを備えた演算ユニットがマトリクス状に配置された集積回路装置のデザインが容易になる。各種の演算ユニットの第1の方向のサイズが異なると第2の方向は最も効率の良い配置とはならない。しかしながら、各種の演算ユニットが必要とする面積の差を、第2の方向は等しくなるように設計し、第1の方向でその差を吸収することにより、第1および第2の方向とも最密となるように効率良く各種の演算ユニットを配置することができる。
第1および第2の配線群はデータを伝送するデータバスとなるバス配線に加え、キャリー信号を伝送するキャリー配線を設けておくことが望ましい。桁上げ用の信号や真偽を示す信号をデータバスと同様の経路で演算ユニットから演算ユニットに伝送することができる。
演算ユニットは第1の配線群および第2の配線群のいずれからデータを入力しても良く、いずれにデータを出力しても良い。しかしながら、一方の配線群からデータを入力し、他方の配線群にデータを出力するように規則を決めることにより、常に1つのスイッチングユニットを経由するだけで演算ユニットから演算ユニットにデータを伝送できる。このため、演算ユニットは、第2の配線群に含まれる任意の配線から信号を入力する手段と、第1の配線群に含まれる任意の配線に信号を出力する手段とを備えていることが望ましい。
また、演算ユニットは各々が特定の処理に適したデータパスを備えているので、算術演算、論理演算などの複数の入力データがある処理を行う場合には、それに即した配置にすることができる。したがって、入力配線となる第2の配線群として、演算ユニットの第2の方向の配列の両側に沿って延びた1組の配線群を設け、演算ユニットに複数の入力データを取り込みやすい配線にすることが望ましい。
さらに、マトリクスに含まれる演算ユニットが多くなり、それらをフレキシブルに接続しようとすると演算ユニットの数に対応した配線が必要となり、膨大な配線量が要求される。したがって、マトリクスを複数に分け、隣接して配置された第1のマトリクスと第2のマトリクスの境界に、データの伝送を遅延する処理に適した演算ユニットを配列し、第1および第2のマトリクスの間で第1および第2の配線群をいったん切り離すと共に、第1および第2のマトリクスの間で伝送される信号だけが第1および第2のマトリクスの配線を共有するようにすることが望ましい。
特定の処理に適したデータパスを備えた演算ユニットとして、少なくとも1つの異なる命令あるいは命令レベルの処理に適したデータパスを備えた幾つかの種類の演算ユニットを用意することが望ましい。本明細書において、命令とは、特に断らない限り、プログラムを記述するための命令セットを構成する命令を意味し、複合命令、マクロ命令、ファンクション・コールなどを含む。したがって、各論理ユニットは、データを8ビットのバイト単位、あるいは、16、32さらには64ビットなどのワード単位で処理するものとなる。この集積回路装置では、実行する処理を、演算ユニットがサポートする命令のプログラム言語で記述できれば、演算ユニットの配置配線に変換することにより、その処理を実行するための集積回路装置を簡単に設計および製造できる。
すなわち、本発明では、第1および第2の方向にマトリクス状に配置された複数種類の演算ユニットと、それら複数種類の演算ユニットを接続する配線群とを備えたデータ処理区画を有し、複数種類の演算ユニットは、少なくとも1つの異なる命令を実行可能なデータパスを備えた種類の異なる種類の演算ユニットを含んでいる集積回路装置を提供する。この集積回路装置を設計する際は、当該集積回路装置において実行する処理の少なくとも一部を、複数種類の演算ユニットのいずれかにより提供される、あるいは実行可能な命令のプログラム言語で記述された中間記述に変換する。次に、その中間記述の処理を実行可能な複数種類の演算ユニットの実行用の組み合わせを生成し、実行用の組み合わせを実現できるように複数種類演算ユニットが配置されたデータ処理区画を生成する。これにより、与えられた処理を実行可能な集積回路装置を短時間に手間なく設計および製造できる。そして、この設計および製造方法により提供される集積回路装置は、与えられた処理をハードウェアで実行するものになるので、高い処理速度を備えたものとなる。
命令レベルの処理に適したデータパスを備えた演算ユニットとしては、データの入力処理に適したデータパスを備えた第1種の演算ユニット、入力データのアドレスを指定する処理に適したデータパスを備えた第2種の演算ユニット、データの出力処理に適したデータパスを備えた第3種の演算ユニット、出力するデータのアドレスを指定する処理に適したデータパスを備えた第4種の演算ユニット、整数の加減などの算術演算および/または比較、選択などを含む論理演算処理に適したデータパスを備えた第5種の演算ユニットがある。掛け算を第5種の演算ユニットに含めても良いが、それにより第5種の演算ユニットが大きくなりすぎる場合は、乗算処理に適したデータパスを備えた第6種の演算ユニットを別に設けることも有効である。これらの種類の演算ユニットにより、多くの処理において時間が費やされる検索処理や計算処理を記述あるいは定義する命令を実行することが可能である。したがって、高い頻度で繰り返し実行される処理、たとえば、信号処理やループ処理を、多数のハードウェアリソースに展開して高速に処理できる。
すなわち、本発明により、少数のハードウェアリソースを繰り返し使用する従来のソフトウェア手法では実行速度が上がらない部分を多数のハードウェアリソース上に展開して同時実行することによりパフォーマンスを向上できる。
これらの演算ユニットを配置してデータ処理区画においてスムーズなデータフローを形成するには、データの入力命令および/または出力命令の処理に適したデータパスを備えた演算ユニットが、データ処理区画の一方の端と他方の端に配列されていることが望ましい。また、パイプライン的な処理を実行するためには、各演算ユニットで消費されるクロックを明確にする必要がある。このために、各演算ユニットは、入力データをラッチする入力側のフリップフロップと、出力データをラッチする出力側のフリップフロップとを備えていることが望ましい。ただし、入力命令あるいは出力命令の処理に適したデータパスは、それ自体がバイトあるいはワード単位でデータをラッチするフリップフロップであることがあり、この場合は、1つのフリップフロップで入力データと出力データをラッチすることになる。
内蔵されたデータパスが異なると、演算ユニットで消費されるクロック数も異なる。また、データ処理区画におけるパスが異なると、演算ユニットに到達するタイミングも異なる。したがって、データの伝送時間を遅らせる処理に適したデータパスを備えた第7種の演算ユニットを備えていることが望ましい。また、演算ユニットの組み合わせを生成する際も、タイミング調整のために、そのような演算ユニットを含めた実行用の組み合わせを生成する。
さらに、演算ユニットで処理可能な範囲を広げるためには、データ処理区画の外部に配置された演算回路と接続する処理に適したデータパスを備えた第8種の演算ユニットも有用である。また、ルックアップテーブルにより処理が選択されるデータパスを備えた第9種の演算ユニットも有用である。さらに、同一種類の演算ユニットを同一方向に配列することにより、複数の同一の演算ユニットが連携し、拡張された演算機能を提供するようにしても良い。そのために、同一方向に配列された同一種類の演算ユニットは、複数の演算ユニットが連携して拡張された演算機能を提供するためのパスを備えていることが望ましい。たとえば、算術演算処理に適した演算ユニットであれば、単精度の演算ユニットを同一方向に並べることにより倍精度の演算処理を行わせることができる。
さらに、複数のデータ処理区画と、これらのデータ処理区画を接続する第3の配線群とを設けることにより、演算ユニットの組み合わせで処理可能な範囲を大幅に拡張できる。
本発明の集積回路装置は、第1の配線群に含まれる任意の配線と第2の配線群に含まれる任意の配線を選択して接続可能なスイッチングユニットを制御することにより、演算ユニットに供給されるデータのルートを変え、データ処理のための演算ユニットの組み合わせを変えることができる。したがって、本発明においては、複数種類の演算ユニットが配置され、配線群により複数種類の演算ユニットに供給されるデータのルートを変えてデータ処理のための複数種類の演算ユニットの組み合わせを変更可能なデータ処理区画を有し、複数種類の演算ユニットは、少なくとも1つの異なる命令レベルの処理に適したデータパスを備えた、異なる種類の演算ユニットを含んでいる集積回路装置を提供できる。この集積回路装置では、製造後に、データ処理区画の機能や実行可能な処理内容を変えることができる。トランジスタレベルで回路をマッピングすることを目的としたFPGAと異なり、予め特定の処理に適したデータパスを備えた演算ユニットの組み合わせを変えることで機能や処理内容を変更するので、短時間に処理内容を変更できる。したがって、ハードウェアで行う処理内容を動的に変更する能力を備えた集積回路装置を提供できる。
さらに、この集積回路装置のデータ処理区画は、全体として異なる処理を実行可能な汎用性を備えているが、各々の演算ユニットは、予め特定の処理に適したデータパスを備えた専用的な回路ユニットで汎用性は低い。したがって、冗長な部分は少なくなり、回路に無駄が発生しにくいので、コンパクトで経済的であり、さらに処理速度の速い集積回路装置を提供できる。
演算ユニットの組み合わせのフレキシビリティーを向上するには、演算ユニットに、第1の配線群および第2の配線群に含まれる任意の配線を選択して信号を入力または出力する手段を設けることが望ましい。演算ユニットに、配線の選択を記憶する書き換え可能なコンフィグレイションメモリを設け、スイッチングユニットに、配線の選択を記憶する書き換え可能なコンフィグレイションメモリを設けることが望ましい。コンフィグレイションメモリ、たとえばレジスタの内容を書き換えることにより、データ処理区画の機能を動的に変更できる。また、変更する内容を予めメモリに記録しておくことにより、広範囲の演算ユニットにより構成される機能を1クロックで簡単に変更できる。
集積回路装置に、コンフィグレイションメモリの内容を書き換えられる制御ユニットを搭載することにより、ハードウェアで実行可能な処理内容をプログラムにより制御できる集積回路装置を提供できる。制御ユニットはシーケンサあるいはマイクロコードメモリによる小規模なものでも良い。しかしながら、プログラムにより演算ユニットの組み合わせを変えることができる程度の機能を備えた演算ユニットが望ましい。演算ユニット(論理エレメントまたは論理ユニット)がマトリクス状に配置されたデータ処理区画と、リスクプロセッサなどの汎用プロセッサとを共存させることにより、少数のハードウェアリソースを繰り返し使用する従来のソフトウェア手法が適している処理は汎用プロセッサで実行し、実行速度が上がらない部分をデータ処理区画で実行することができる。さらに、汎用プロセッサにおける処理とデータ処理区画における処理を並列実行することも可能である。さらに、データ処理区画を構成する演算ユニットから他の演算ユニットのコンフィグレイションメモリを設定することも可能である。
プログラムにより制御できる集積回路装置においては、実行する処理を演算ユニットがサポートする命令を含むプログラム言語で記述し、その中間記述を実行可能な複数種類の演算ユニットの実行用の組み合わせを指示する命令を含めることにより、集積回路装置の実行プログラムを作成できる。中間言語は、アセンブラライクの線形性が高く、データフローグラムを生成しやすいものが望ましい。
さらに、演算ユニットに、内部のデータパスの一部を変更および/または選択する手段を設けることにより、データ処理区画でハードウェアにより実行できる機能あるいは処理の選択肢を広げることができる。そして、コンフィグレイションメモリに内部のデータパスの変更および/または選択も記憶させることができる。命令レベルの処理に適した演算ユニットの内部のデータパスは、少なくとも1つの命令の実行に適したデータパスである。この集積回路装置を設計し、実行プログラムを作成する過程では、内部のデータパスの選択および/または変更も含めた実行用の組み合わせを生成し、それを指示する命令を実行プログラムに含める。
発明を実施するための最良の形態
以下に図面を参照しながら、本発明についてさらに説明する。図1に、本発明に係る集積回路装置としてシステムLSI10を構成した例を示してある。このシステムLSI10は、実行プログラム3に含まれた命令に基づきエラー処理を含めたRISCプロセッサなどの汎用的な処理を行う汎用のプロセッサ部11と、マトリクス状に配置された複数の演算ユニットにより特定のデータ処理に適合したデータフローあるいは擬似データフローが形成されるデータ処理区画(以降ではマトリクス部)20とを備えている。汎用プロセッサ部(以降ではRISCとも称する)は、実行プログラム3に基づき、マトリクス部20の組み合わせ(コンフィグレイション)も制御でき、マトリクス部20のコンフィグレイションをダイナミックに変更することができる。LSI10は、さらに、マトリクス部20からの割り込み処理を制御する割り込み制御部12と、マトリクス部20に作動用のクロック信号を供給するクロック発生部13と、さらにフレキシブルな演算回路を構成するためのFPGA部14と、外部に対するデータの入出力を制御するバス制御部15とを備えている。プロセッサ部11とマトリクス部20は、プロセッサ11とマトリクス部20との間でデータを交換可能なデータバス17と、プロセッサ11からマトリクス部20の構成および動作を制御するための命令バス18とにより接続されている。また、マトリクス部20から割り込み制御部12に信号線19を介して割り込み信号が供給され、マトリクス部20における処理が終了したり、処理中にエラーが発生したときはマトリクス部20の状態をプロセッサ11にフィードバックできるようになっている。
マトリクス部20とFPGA14との間もデータバス21により接続されており、マトリクス部20からFPGA14にデータを供給して処理が行われ、その結果がマトリクス部20に返される。マトリクス部20は、ロードバス22およびストアバス23によってバス制御ユニット15と接続されており、LSI10の外部のデータバスとの間でデータを交換する。したがって、マトリクス部20には、外部のDRAM2やその他のデバイスからデータを入力でき、そのデータをマトリクス部20で処理した結果を再び外部のデバイスに出力できる。プロセッサ部11もデータバス11aを介してバス制御ユニット15を介して外部のデバイスとデータを入出力することが可能である。プロセッサ11の実行プログラム(オブジェクトプログラム)3は、プロセッサ11がコードRAMあるいはROMを内蔵した構成であれば予めプロセッサ11に格納しておくことができる。また、実行プログラム3を、バス11aを介してLSI10の外から供給することも可能である。
図2にマトリクス部20の概要を示してある。このマトリクス部20は、68個の演算ユニット(演算エレメント)30により、横方向(行方向)に延びた配列が17ライン、縦方向(列方向)に延びた配列が4ライン構成されており、複数の演算ユニット30がアレイ状あるいはマトリクス状に配置されたものとなっている。これらの演算ユニット30の間に、さらに、横方向に延びた行配線群51と、縦方向に延びた列配線群52とが配置されている。列配線群52は、列方向に並んだ演算ユニット30の左右に分かれて配置された1対の配線群52xおよび52yを備えている。これらの配線群52xおよび52yからデータが各々の演算ユニット30に供給される。これらの列配線群52は、上から9行目の演算ユニット(DELユニット)でいったん分離されており、マトリクス部20は、上方に形成された8行4列の演算ユニット30を備えた第1のマトリクス28と、下方に形成された9行4列の演算ユニット30を備えた第2のマトリクス29との2つのセグメントに分けられている。
図3に、演算ユニット30と、行配線群51および列配線群52との交点に配置されたスイッチングユニット55を拡大して示してある。行配線群51は、バイト(8ビット)またはワード(16ビットまたは32ビット)単位のデータ、すなわち、8から32ビット程度のデータを行方向に並んだ各演算ユニット30(本例では4つの演算ユニット)から伝送できる配線量を備えている。したがって、本例のマトリクス部20では、行方向の配線群51は、少なくとも4チャンネル分の配線量のあるバスである。さらに、データ数に応じた数のキャリー信号を伝送する配線も用意されている。
列配線群52も、バイトまたはワード単位のデータを各々の演算ユニット30に供給できる配線量を備えている。マトリクス部20は1つのセグメントに着目すると列方向に8つの演算ユニット30が並んでいるので、本例の列配線群52は8チャンネル分の配線量を備えたバスである。伝送するデータ数に応じたキャリー信号を伝送する配線も用意されている。
図4は、本例のマトリクス部20の行配線群51および列配線群52のうち、キャリー信号を伝送するための配線51c、52cxおよび52cyを抜き出して示してある。キャリー信号は、桁上げ用の信号や真偽を示す信号として使用することが可能であり、本例のマトリクス部20では、演算ユニット30のうち、算術演算および論理演算に適したデータパス部(SMA)32bと、遅延用のデータパス部(DEL)32cと、FPGAとのインターフェイスとなるデータパス部(FPG)32eとでキャリー信号Ciが使用されている。したがって、これらを備えた演算ユニット30を接続するようにキャリー信号用の配線51c、52cxおよび52cyが配置されている。
行配線群51と列配線群52の各々の交点に配置されたスイッチングユニット55は、行配線群51の任意のチャンネルを、列配線群52の任意のチャンネルに切り替えて接続し、バイトまたはワード単位のデータの再構成可能な伝送路を構築している。図3に示したスイッチングユニット55では、行配線群51の任意のチャンネルを選択して列配線群52に接続する複数のセレクタ58と、それらのセレクタ58の設定を記憶するコンフィグレイションRAM59を備えている。コンフィグレイションRAM59のデータは、プロセッサ部11から供給されるデータにより書き換えられるようになっており、行配線群51と列配線群52との接続はプロセッサ部11の制御の下で任意に動的に制御できる。
図5に示した、異なるタイプのスイッチングユニット56は、行配線群51の任意のチャンネルを構成する配線と、列配線群52の任意のチャンネルを構成する配線とをクロスバースイッチ57により切り替えて接続する。このタイプのスイッチングユニット56もプロセッサ部11によりデータがセットされるコンフィグレイションRAMあるいはレジスタ59を備えており、行配線群51と列配線群52との接続を自由に切り替えることができる。
図2に示すように、マトリクス部20に配列された各演算ユニット30は、1組の列配線群52xおよび52yのそれぞれから入力データを選択するための1組のセレクタ31xおよび31yと、これらのセレクタ31xおよび31yにより選択された入力データdixおよびdiyに特定の演算処理を施し、出力データdoとして行配線群51に出力するデータパス部32を備えている。本例のマトリクス部20に配置された複数の演算ユニット30は、異なる特定の処理に適したデータパスを備えた複数種類の演算ユニットを含んでいる。そして、各行を構成する演算ユニット30は、同一種類の処理を提供する同一のデータパス32を備えている。つまり、各行毎に異なる処理を行うためのデータパス32を備えた演算ユニット30が並んで配置されている。
まず、第1行目に配列されたエレメントまたは演算ユニット30は、ロードバス22に接続されており、データをロードする処理に適したデータパス部32fを備えている。ロード用のデータパス部(LD)32fの構成の一例を図6に示してある。LD32fは、入力データおよび出力データをラッチするフリップフロップ41と、出力データのチャンネルを切り替える必要がある場合はそれを選択する情報を記録するコンフィグレイションRAM39とを備えている。このLD32fは、「input」あるいは「load」と言った入力命令を実行するユニットである。LD32fは、ロードバス22からデータを受信して、行配線群51に出力する。なお、図2に示したLD、以降で説明するBAL、LDA、SMAおよびDELなどの略語は、データパス部32や、そのデータパス部を備えた演算ユニット30を示すために本明細書では使用される。
以下で説明する各演算ユニット30は、それぞれコンフィグレイションRAM39を備えており、その内容をRISC11により設定することにより、演算ユニット30と行配線群51と列配線群52との接続を動的に切り替えることができる。また、演算ユニット30が、セレクタにより切り替えたり、変更したり、選択できるデータパスや、初期値を含めたコンディションやパラメータを設定できる機能を備えている場合は、コンフィグレイションRAM39のデータを設定することにより、それらを制御することができる。
第2行目および第3行目に配列された演算ユニット30は、データをロードするためのアドレスを出力する処理に適したデータパス部32aを備えている。このデータパス部(BLAおよびLDA)32aの構成の一例を図7に示してある。このBLAおよびLDA32aは、「input.address_external」および 「input.address_internal」などの命令により入力データのアドレスを指定する命令(ファンクション)を実行するユニットである。BLAおよびLDA32aは、カウンタなどで構成されたアドレス発生回路38を備えている。このアドレス発生回路38からアドレスが出力データdoとして出力され、行配線群51および列配線群52を介して入力データdixあるいはdiyとして供給される。さらに、入力データとして供給されたアドレスのいずれかを選択するセレクタ42と、入力データおよび出力データをラッチするフリップフロップ41とを備えている。これにより、ロードするアドレスデータdaがマトリクス部20からバス制御ユニット15に出力される。この演算ユニット30もアドレス発生回路38やセレクタ42の状態を設定するコンフィグレイションRAM39を備えている。このコンフィグレイションメモリ39の内容(データ)はプロセッサ部11によりセットされ、行配線群51と列配線群52との接続を動的に切り替えたり、アドレス発生回路38の設定を自由に変更できる。
マトリクス部20の第2行目を構成する演算ユニット30のBLA32aは、ブロックロードするためのアドレスを発生する。一方、第3行目を構成する演算ユニット30のLDA32aは、にブロックロードされた中から所望のデータをロードするアドレスを発生する。これらのデータパス部BLAおよびLDAのいずれも、詳細な構成は異なるとしても、概略は図7に示したような同じ構成になる。
第4行目および第5行目に配列された演算ユニット30は、算術演算および論理演算に適したデータパス部32bを備えている。そのデータパス部(SMA)32bの構成の一例を図8に示してある。SMA32bは、演算用の基本エレメントであり、バイトまたはワード単位で供給される入力データdixおよびdiyをビット単位できりだすためのビットシフト回路43と、マスク回路44とを備えている。さらに、入力データdixおよびdiyを加算あるいは減算したり、比較したり、論理和あるいは論理積を演算できる論理演算ユニット(ALU)45を備えている。さらに、隣接するSMA32bの演算結果を結合したり選択したりするための論理ユニット(LU)46を備えている。
また、ビットシフト回路43、マスク回路44、ALU45およびLU46の処理を選択または変更するデータを記憶するコンフィグレイションRAM39を備えている。さらに、入力データをラッチするフリップフロップ48と出力データをラッチするフリップフロップ49と、タイミング調整用の他のフリップフロップFFなどを備えている。
このSMA32bは、「add」、「sub」、「compare」、「shift」、「and」、「select」などの加減算、比較、選択、その他の論理演算といったプログラムを記述する際に多用される算術演算命令および論理演算命令をサポートする。いずれの演算処理を行うか、また、いずれかの演算処理を複合的に行うかは、RISC11により設定されるコンフィグレイションRAM39の内容により自由に制御でき、いつでも変更できる。また、コンフィグレイションRAM39により、入力データdixおよびdiyとして固定値を設定することができる。キャリー信号CixおよびCiyについても同様である。加えて、出力データdoからALU45にフィードバックする経路を設けることによりステートマシンやカウンタを構成することができる。また、入力データdixおよびdiyを交換する機能もサポートしており、縦配線群52の選択自由度および使用効率を上げるためにも利用できる。
また、データパス部32bには、キャリー信号CixおよびCiyを入力し選択することができるパスが用意されており、キャリー信号によりALU45およびLU46を制御することが可能である。また、ALU45の演算結果に関わるキャリー信号Coを出力するパスも用意されている。隣接するSMA32bのキャリー信号を任意に演算した結果をALU45およびLU46に入力することができ、キャリー信号を選択するだけでなく、キャリー信号同士を演算することも可能であり、キャリー信号の自由度は高い。
左右に配置されたSMA32bの一方に設けられた論理ユニット(LU)46により左側のALU45の出力と、右側のALU45の出力を論理演算できる。このため、コンフィグレイションRAM39でLU46を制御し、行方向に左右に並んだ2つのSMA32bで1つの拡張された機能を果たせることができる。たとえば、1つの入力データdixが32ビットであるときに、倍精度の64ビットのデータを処理するために、2つの入力データdixおよびdiyで1つの入力データを表すことができる。
本例のマトリクス部20では、SMA32bを備えた演算ユニット30により、7、8、11および13行目の配列も形成されている。
第6行目に配列された演算ユニット30は、データが伝送されるタイミングを遅延する処理に適したデータパス部32cを備えている。このデータパス部(DEL)32cの構成の一例を図9に示してある。DEL32cは、複数のセレクタとフリップフロップの組み合わせで構成された遅延回路47と、入力側のフリップフロップ48と、出力側のフリップフロップ49と、回路を選択するセレクタ42とを備えている。遅延回路47は、コンフィグレイションRAM39のデータにより0〜5クロックの遅延をセットでき、XまたはY系統で1〜7クロックの遅延を制御できる。さらに、コンフィグレイションRAM39の設定により、X系統とY系統とを直列に接続することが可能であり、2倍の遅延時間を制御できる。また、これらのデータと共に行配線群51および列配線群52で導かれるキャリー信号cixおよびciyも同様のデータパスにより遅延して出力される。
遅延用のデータパスDEL32cを備えた演算ユニット30を用意することにより、各種のデータパス部32における信号の遅延を任意に調整できる。したがって、算術演算や論理演算用のSMA32b、また、以下で説明する乗算の処理用のMUL32dなどを組み合わせてデータフローを形成したときの遅延時間の差を調整するために各データパス部32に遅延調整用のフリップフロップおよびセレクタを設ける必要がない。このため、各々のデータパス部32の構成が簡易になり、データパス部32の汎用性を向上できる共に、データパス部32が占有する面積を最小限に留めることができる。また、各データパス部32においては、入力データをラッチする入力側のフリップフロップ48および出力データを出力側のフリップフロップ49を設けたり、入力データおよび出力データを共にラッチするフリップフロップ41を設けることにより、入力データがそのままあるいは加工されて出力される待ち時間(レイテンシ)はクロック単位で制御されている。したがって、レイテンシの差は、DEL32cの機能により埋めることは容易であり、演算ユニット32を組み合わせて行う演算のパイプラインのタイミングを保障できる。
このDEL32cは、縦配線群52で供給されるデータを横配線群51にいったん移行するという機能も果たす。このため、第9行目に配列された演算ユニット30は、第1のマトリクス28の縦配線群52で供給されたデータを選択して第2のマトリクス29の横配線群51に出力している。このように、遅延用のDEL32cの機能を用いて第1のマトリクス28のデータを選択して第2のマトリクス29に供給することが可能であり、セグメント化された第1のマトリクス28の縦配線群52と第2のマトリクス29の縦配線群52とを分離することができる。したがって、縦配線群52の配線量を各々のマトリクス28または29を構成する演算ユニットの数をカバーするだけに限定することが可能となり、配線が占める面積を削減でき、配線群からデータを選択するスイッチングユニット55あるいは56などの構成を簡易にすることができる。
このDEL32cは、マトリクス部20でデータフローを構成する際に、タイミング調整などのために自動的に挿入される。プログラム中に「delay」命令を記述して、データフロー間あるいはRISCプロセッサとのタイミング調整を行うことも可能であり、そのような場合は、遅延命令を実行するための演算ユニットとして使用される。
第10行目に配列された演算ユニット30は、「multiply」命令で指示される乗算処理の実行に適したデータパス部32dを備えている。そのデータパス部(MUL)32dの構成の一例を図10に示してある。このMUL32dは、行方向に配置された4つの16ビット×16ビット(結果32ビット)の乗算器MUL61が個々のMUL32dを構成する。それと共に、これらの4つのMUL61からの出力をさらに演算処理するデータパスCSA62およびCPA63が配置されている。したがって、本例の乗算処理用のMUL32dは、行方向に配列された4つのMUL32dを結合することにより機能を拡張できる。たとえば、倍精度の乗算を実行することができる。そして、MUL61、CSA62およびCPA63、さらには、セレクタ64の機能はデータパス部32dのコンフィグレイションRAM39にセットされたデータで制御される。
具体的には、左端のMUL61(AH×BH)で、入力データdixの上位16ビットと入力データdiyの上位16ビットの乗算を行い、次のMUL61(AH×BL)で入力データdixの上位16ビットと入力データdiyの下位16ビットの乗算を行い、MUL61(AL×BH)で入力データdixの下位16ビットと入力データdiyの上位16ビットの乗算を行い、MUL61(AL×BL)で入力データdixの下位16ビットと入力データdiyの下位16ビットの乗算を行う。そして、これらの乗算器の結果をCSA62およびCPA63により加算することにより、行方向に配置された4つのMUL32dは32ビット×32ビット(結果64ビット)の乗算器としても動作する。各々のMUL32dの演算結果を、SMA32bで加算することによっても同様の結果を得ることが可能であるが、MUL32dを行方向に並べて配置し、加算用の演算器となる少量の専用回線を組み込むことにより、少ない遅延時間とゲート量で同等の結果を得ることができる。
MUL32dを配置する代わりに、SMA32bに掛け算機能を付加したデータパス部(SMAM)をSMA32bの代わりに、あるいはSMA32bと共に配置しても良い。単一の演算ユニット30にどの程度多くの演算機能を搭載し、それをコンフィグレイションRAM39により選択して使用するかは、マトリクス部20の設計思想の差となる。本発明においては、1つの演算ユニット30で処理可能な内容の大小はあっても、異なるデータパスを備えた複数種類の演算ユニット30でマトリクス部20を構成する。したがって、すべての処理をサポートするような単一の構成の処理ユニットを敷き詰めたようなマトリクスと比較すれば、はるかに無駄なスペースは少なくなり、無駄な処理時間も少なくなり、AC特性は向上する。
第14行目に配列された演算ユニット30は、マトリクス部20の外部に用意されたFPGA14とのインターフェイス用のデータパス部32eを備えている。このインターフェイス用のデータパス部(FPG)32eの概略構成を図11(a)に示してある。FPG32eは、入力データを選択するセレクタ42と、入力データをラッチしてオフチップFPGA14に供給するフリップフロップ48と、オフチップFPGA14の出力をラッチして出力データとするフリップフロップ49とを備えている。このFPG32eを用いることにより、入力データをいったんオフチップFPGA14に供給して処理した後、再びマトリクス部20に戻して処理を継続することができる。マトリクス部20に配列される演算ユニット30は、LSI10で実行するアプリケーションプログラム中に出現頻度の高い命令をサポートするものが選択され設計および配置される。汎用性の少ない機能を含めた演算ユニット30は面積効率を悪化させることになるので配置されない。FPG32eを配置することにより、そのような処理あるいは機能であってもハードウェアで高速処理することができる。
このFPG32eは、マトリクス内に外部インターフェイスを導入する汎用性の高いデータパス部であり、接続可能な外部処理回路はFPGAに限定されるものではない。ASICや、本例のマトリクス部20を備えた他のLSIなどを接続することも可能である。
第15行目および16行目に配列された演算ユニット30は、ストア用のアドレスを発生するのに適したデータパス部STAおよびBSAを備えている。データパス部STAおよびBSAは、上述したインプットアドレスを指示する命令と同形式の出力アドレスを指示する命令を実行する。アドレスを発生させる機能としては、図7に示したデータパス部32aと同様の回路を使用することができる。ストア用にも2種類のアドレスが発生されるようになっており、データパス部BSAはブロック化したデータをストアするためのアドレスを発生し、データパス部STAはブロック化するためのアドレスを発生する。
最下段の17行目には、「output」、「store」などの命令によりデータを出力するのに適したデータパス部STを備えた演算ユニット30が配列されている。このデータパス部STと称されているが、算術演算用のデータパス部32bとほぼ同様の構成のデータパス部を採用できる。マトリクス部20で算術演算した結果の外部の格納先が指定されている場合には、この演算ユニットSTを介してデータが出力される。
本発明の演算ユニット30の種類はこれらに限定されるものではない。図11(b)は、ルックアップテーブル用のSRAM65を備えたデータパス部(RAM)32gの概略構成を示してある。入力データdixをアドレス、入力データdiyをデータとして使用することができ、データとアドレスが同時に与えられた場合は書き込み、アドレスのみが与えられた場合は読み出しを行う。SRAM65は複数のバンクを備えており、コンフィグレイションRAM39の設定により、切り替えて使用することができる。また、4つのRAM32gを行方向に並べて配置したときに、8ビットの4つのRAMとしても、16ビットの2つのRAMとしても、さらに、32ビットの1つのRAMとしても利用できる。このデータパス部32gは、バイトあるいはワード単位の入力データに対して任意の関数による出力データを得るためのルックアップテーブルとして使用できる。コサイン変換処理やCRC計算をマトリクス部20で実現する場合に有用である。
本例のシステムLSI10は集積回路装置の一例であり、その第1の方向(本例では行または横方向)、および第2の方向(本例では列または縦方向)にマトリクス状に配置された複数の演算ユニット30を備えている。複数の演算ユニット30は、特定の処理に適した異なるデータパス部32を備えた複数種類の演算ユニットを含んでおり、上記では、データの入力に適したデータパス部32f、データのアドレスを発生する処理に適したデータパス部32a、算術または論理演算処理に適したデータパス部32b、乗算処理に適したデータパス部32d、データの伝送時間を遅らせる処理に適したデータパス部32cを例示している。これら複数種類の演算ユニット30の間でデータを転送する横配線群51および縦配線群52の接続をスイッチングユニット55で制御し、これらの演算ユニット30の間の接続を変えることにより、マトリクス部20に所望のデータ処理を行うデータフロー型の専用演算回路を定義できる。このため、本例のマトリクス部20では、FPGAのように各トランジスタ間の接続をすべて変更しなくても、演算ユニット30の間の接続を変更することにより、短時間で処理内容の異なる専用演算回路を再構成できる。さらに、各演算ユニット30は、FPGAの論理ブロックようにトランジスタレベルでの汎用性が要求されるアーキテクチャではなく、各々の演算ユニット30が特定のデータ処理に特化したデータパス部32を備えているので、冗長な回路を省き、実装密度を向上できる。したがって、ハードウェアの処理内容を変更可能な、コンパクトで経済的なシステムを提供できる。また、冗長な構成を極力削減できるので、FPGAに比べて大幅に処理速度を高速化でき、AC特性も向上できる。
図6ないし図11に示したように、各々の処理に適したデータパス部32a〜32gはそれぞれ異なる構成になるので、各々のデータパス部が目的とする処理を高速で実行できる反面、各々のデータパス部が占有する面積が異なる。そこで、本例のマトリクス部20においては、同一の機能のデータパス部32を備えた演算ユニット30を行方向に並べて配置することにより、演算ユニット30が占有する面積がデータパス部32の種類によって異なっても行方向の直線性を確保している。さらに、種類が異なるデータパス部32であっても行方向のピッチが同じになるように等間隔に配置することにより、列方向の直線性も確保している。これにより、行配線群51および列配線群52をそれぞれ直線的にレイアウトできる。
すなわち、同一種類のデータパス部32を備えた演算ユニット30を行方向に等間隔で配置することにより、それらのサイズの差は、列方向の間隔で吸収することが可能であり、列方向の間隔が行単位で変わっても直線性は保障できるので、行配線群51としては直線的に配線できる。もちろん、行方向と列方向とを入れ替えてデザインすることは可能であり、本願の発明の範囲に含まれる。
したがって、異なる構成のデータパス部32を備えたサイズの異なる演算ユニット30を極めて効率よくマトリクス状に配置することができる。さらに、それらを接続する行および列配線群(バス)を直線的に配置することができる。したがって、製造後に機能をセットすることができる再構成可能な集積回路装置を、よりコンパクトに、そして低コストで供給することができる。そして、FPGAに比較して、高速処理が可能でAC特性も良い演算ユニット30を、よりコンパクトなレイアウトで配置し、最短の配線長で接続することができるので、その高速性を確実に活かせる集積回路装置を提供できる。
このように、同一の機能のデータパス部32を備えた演算ユニット30を行方向に配列することは、マトリクス部20をデータフロータイプの処理装置として機能させる上でも有効である。たとえば、上記の例では、列方向の一方の端となる第1行目にデータの入力用の演算ユニット30を配列し、列方向の他方の端となる第17行目にデータの出力用の演算ユニット30を配列している。そして、マトリクス部20では巨視的には上から下に向かうデータフローが形成されており、それに対応して他の処理に適したデータパス部を備えた演算ユニット30が配列されている。もちろん、行配線群51および列配線群52を用いて下から上に向かうデータフローを形成することも可能であり、マトリクス部20に配置された各演算ユニット30を最大限に活かしてデータ処理を行うことができる。
さらに、算術演算などに適したデータパス部32bおよび乗算に適したデータパス部32dのように、同一種類の演算ユニット30を同一方向に配列することにより複数の演算ユニット30を連携させることが可能となる。したがって、本例のマトリクス部20においては、演算ユニット30を個々に利用すると共に、行方向に配列された演算ユニットを束ねて、あるいは連携させて、倍精度の演算などの拡張された演算機能を提供できるようにしている。
そして、各々の演算ユニット30およびスイッチングユニット55あるいは56はプロセッサ11からデータを設定し、個別に制御することができるコンフィグレイションメモリを備えている。したがって、演算ユニット30の組み合わせはプロセッサ11から自由に変更することが可能であり、さらに、トランジスタレベルで回路をマッピングするFPGAと異なり、予め特定の処理に適したデータパス部32を備えた演算ユニット30の組み合わせを変えるので、短時間で、ほとんど1クロックで機能を変更することができる。
さらに、各々の演算ユニット30では、データパス部32を構成するセレクタやALUなどの論理ゲートの機能もコンフィグレイションメモリ39を介してプロセッサ11によって独立してセットすることが可能である。このため、演算ユニット30の機能自体も、データパス部32がサービスする機能の範囲内でフレキシブルに変更することができる。本例のマトリクス部20において、データフロー型または擬似データフロー型で処理可能な機能の範囲は非常に広くなる。また、ネットワーク処理や、画像処理などのLSI10が用いられるアプリケーションに適した種類の演算ユニット30を選択し、配列することが可能であり、さらに実装効率の良い集積回路装置を提供することが可能である。
なお、上記の実施の形態で説明した行配線群51および列配線群52を入れ替えることが可能であると共に、演算ユニット30の配列方向も行と列を入れ替えることができる。また、演算ユニット30は行または列配線群のいずれに対してもデータを入出力しても良い。しかしながら、上記のマトリクス部20で示しているように、一方の配線群、本例では列配線群52からデータを入力し、他方の配線群、本例では行配線群51にデータを出力するように規則を決めることにより、常に1つのスイッチングユニット55を経由するだけで演算ユニット30から演算ユニット30にデータを伝送できる。
図12に、本発明にかかる、異なるLSIの例を示してある。本図では、割り込み制御ユニット12、クロック発生部13などを省略しているが、図1に示したLSIと同様に種々のユニットが搭載されている。本例のLSI10のマトリクス部20の、2行目以降では、行方向に6個の演算ユニット30が配列されている。これらの内、左側の4個の演算ユニット30は、各行毎に、上述したRAMとして機能するデータパス部32gを備えた演算ユニット30、ロードするデータのアドレスを発生するBLAとして機能するデータパス部32aを備えた演算ユニット30、同じくアドレスを発生するLDAとして機能するデータパス部32aを備えた演算ユニット30である。しかしながら、各行の右側の2個の演算ユニット30は、算術および論理演算機能をサポートするSMAとして機能するデータパス部32bを備えた演算ユニット30である。これは、本例のLSI10として要求される仕様を満足するように演算ユニット30を選択すると、SMA32bとして機能する演算ユニットが他のタイプの演算ユニットに対し大量に必要となっているからである。SMA32bの論理ユニットを他のタイプの演算ユニットの数に合わせて配置し、行方向に4つの演算ユニット30を並べたマトリクス部20を設計することも可能である。しかしながら、LSI10を構成する他のユニットの配置にも依存するが、マトリクス部20だけを考えると縦長の配置になるために面積効率が悪化する。また、縦方向の数が増加するので、縦配線群52の負荷が増し、セグメントの数が増加し、その結果、DEL32cの論理ユニットが必要となり、処理速度が低下することになる。
したがって、本例のマトリクス部20では、数の多いSMA32bの演算ユニット30を行方向に追加して配置し、全体が正方形に近づくようにしている。このマトリクス部20は、行方向の配列がすべて同一種類の演算ユニット30で構成されているとは言えない。しかしながら、数の少ないRAM32gや、BLAおよびLDAなどの演算ユニット30が配列された範囲では、行方向の配列はすべて同一種類の演算ユニット30で構成され、行方向の直線性が確保されている。列方向の直線性は、各種の演算ユニット30を行方向の等ピッチで配置することにより確保できることは上記と同様である。
また、本例のマトリクス部20では、ロードバス22およびストアバス23にそれぞれ6つの入力バッファ24および出力バッファ25が配置され、それらのうち、2つのバッファ24および25がバス制御ユニット15の代わりに拡張入出力用のインターフェイス26および27に接続されている。この拡張インターフェイス26および27は、マトリクス部20の間のインターフェイスとして利用することができる。したがって、同一チップ内に複数のマトリクス部20を配置して拡張インターフェイス26および27で接続したり、マトリクス部20を備えた複数のチップ10を拡張インターフェイス26および27を使用して接続することができる。
このため、これらの拡張インターフェイス26および27により、マトリクス部20を備えたLSI10を複数個使用してデータフロー型の演算器を自由に拡張できる。接続可能なマトリクス部20が増え、接続可能な演算ユニット30が増加することにより、複雑な処理が実行可能となる。また、演算ユニット30の組み合わせを変えて再構成できる範囲が広がり、柔軟性のさらに高い演算処理装置を提供できる。並列度を上げるなどのパフォーマンスを向上する演算ユニット30の組み合わせもフレキシブルに選択できるようになる。さらに、複数のマトリクス部20を3次元方向に配列して3次元マトリクスを構成することも可能である。
図13(a)は、拡張インターフェイス26および27により、n個のLSI10を接続することにより、マトリクス部20を実質的にn倍に広げられるようにした演算処理装置あるいは集積回路装置9を示している。これらのLSIは2次元方向にも3次元方向にも組み合わせできる。
また、複数のLSI10が接続されたシステム9において、複数のマトリクス部20およびそれを備えたLSI10に対し、必要な情報を伝えるためのバスとして拡張インターフェイス26および27を使うことも可能である。図13(b)〜(d)はその幾つかの例である。図13(b)では、拡張インターフェイスによりLSI10をチェーン状に接続しており、図13(c)ではツリー状に接続している。また、図13(d)では、複数のLSI10をリング状に接続している。
情報を伝達するアルゴリズムは簡単で良く、たとえば、全てのLSI10に初期設定を伝播するための単純なプログラムを用意しておく。システム9をコントロールするLIS(チェーン接続ではチェーンの先頭、ツリー接続ではツリーの最上、リング接続の場合はいずれかのLSI)が情報をデータとトークンの形で次のLIS10に伝え、情報を受け取ったLSI10は、自分自身の情報として受け取ると同時に次のLSI10に情報を伝える。情報の中身とそれが自分自身の情報であるか否かは、マトリクス20のいずれかの演算ユニット30を用いて判断できるように定義できる。情報の転送場所は、RAMとしての機能を備えた演算ユニット30であっても良く、プロセッサ11のRAMでも良く、各演算ユニット30のコンフィグレイションRAM39であっても良い。
伝達する情報としては、RISCプロセッサ11のプログラム3、マトリクス20のコンフィグレイションRAM39に設定する情報などがある。コンフィグレイションRAM39に設定するには、拡張入力インターフェイス26から受信した設定情報を、マトリクス部20のストア機能を用いて出力バス23とバス制御ユニット15を介して演算ユニット30のコンフィグレイションRAM39にアドレス指定して書き込むことができる。いったん、外部のDRAM2に格納して、プロセッサ11の機能を用いてコンフィグレイションRAM39に転送しても良い。
伝達する情報としては、さらに、時間の制御用の情報がある。一定周期(例えば1秒間隔)でデータを流すことにより、システム9の基準時計として使用し、システム9を構成する複数のLIS10における処理を同期させることができる。
図14に、本例のLSI10の設計および製造方法の概要を示してある。LSI10で実行したい処理が仕様71として与えられると、それをLIS10で実行するためのプログラム言語で記述されたソースファイル73に変換する処理72を行う。変換処理72においては、ANSI−Cなどの一般的な高級言語で記述された仕様71を、演算ユニットライブラリ79を参照して、演算ユニット30がサポートする命令を含むプログラム言語(以降では中間言語)で記述された中間記述73に変換する。この変換処理72は、マニュアルでも良いし、コンパイラなどのソフトウェアを使用しても実行できる。
マトリクス20を構成する演算ユニット30のうち、演算ユニットLDは、データパス32fを備えており、データの入力命令の処理に適した演算ユニットである。演算ユニットBLAおよびLDAは、データパス32aを備えており入力データのアドレスを指定する命令の処理に適した演算ユニットである。演算ユニットSTは、データの出力命令の処理に適した演算ユニットである。また、演算ユニットBSAおよびSTAは、データパス32aを備えており、出力するデータのアドレスを指定する命令の処理に適した演算ユニットである。演算ユニットSMAは、データパス32bを備えており、算術演算命令および/または論理演算命令の処理に適した演算ユニットであり、さらに、演算ユニットMULは、データパス32dを備えており、乗算命令の処理に適した演算ユニットである。そして、これらの演算ユニット30は、バイトあるいはワード単位のデータを処理するので、1つの演算ユニット30で1つの命令あるいは複数の命令の処理を実行できる。
したがって、本例のマトリクス20を構成する複数種類の演算ユニット30は、データの入出力命令、算術演算命令および論理演算命令をサポートしていると言うことができ、データの入出力処理、算術演算処理、論理演算処理は、演算ユニット30がサポートする命令セット(中間言語)で記述することが可能である。入出力処理、信号処理、算術演算処理および/または論理演算処理を繰り返して行うプロセス(ループ処理)は、RISCプロセッサ11を用い、限られたハードウェアリソースを用いてソフトウェアで繰り返し実行しても処理速度の向上が望みにくい。これに対し、本例のマトリクス20であれば、演算ユニットという多数のハードウェアリソース上に展開して同時並列実行することによりパフォーマンスを向上できる。したがって、そのようなプロセスをパフォーマンスアナライザなどで見つけ、簡単にハードウェア化し、処理速度を向上できる。
与えられた仕様71を変換した中間記述73は、C言語で記述されたRISCプロセッサ11で実行する部分73aと、マトリクス20で実行するように中間言語で記述された部分73bとに分かれる。中間記述の中間言語の部分73bは、図17に示したようなものであり、演算ユニット30でサポートされる命令を考慮して、データフローグラムあるいはそれに制御情報が加わったコントロールデータフローグラフに変換できる程度に処理手順に表す記述である。したがって、ハードウェア記述言語であるHDLなどと異なり、システムの仕様が設計者にも十分に分かり、システムの変更や修正があったとき中間記述73bにその変更や修正を容易に反映することができる。中間言語の1つの形態は、アセンブラライクなもの、たとえば、マクロアセンブル的なものである。C言語よりも、難易度も低く、線形性も確保しやすいので、データフローグラムを作成しやすく、マトリクス部20にマッピングされたときにどのような組み合わせで実現されたかも理解しやすい。したがって、マトリクス部20およびプログラムの開発も容易であり、デバックやメンテナンスも容易である。
中間言語で記述された部分73bは、演算ユニット30がサポートする命令で記述されているので、その部分73bの処理は、マトリクス20における演算ユニット30の組み合わせで表すことが可能となる。したがって、次に、配置配線処理75により、中間言語により記述された処理73bを実行可能な演算ユニット30の組み合わせ(実行用の組み合わせ)76を生成する。この処理は、コンパイラ(ソフトウェア)により行われる。実行用の組み合わせ76が生成されると、その実行用の組み合わせ76が実現できるように演算ユニット30が配置されたマトリクス部20の情報78が出力される。その情報78に基づきマトリクス部20を生成すれば、LSI10の基本的な設計は終了し、それに基づきLSI10を製造できる。また、実行用の組み合わせ76を指示する命令80を生成し、中間言語の記述73bの代わりに、実行用の組み合わせを指示する命令80と、その組み合わせを起動する命令とを含んだCソースファイル74をCコンパイラ81でコンパイルすることにより、LSI10の実行用のプログラム(オブジェクトプログラム)3を生成できる。
与えられた仕様71を実行するために、マトリクス部20の演算ユニット30の組み合わせを変更する必要がなければ、組み合わせを指示する命令を生成する必要はなく、中間言語で記述された部分73bの処理を実行可能な演算ユニット30を備えたマトリクス部20を生成するだけで良い。また、既存のマトリクス部20を使用して、与えられた仕様71を実行する場合は、マトリクス部20を生成することはない。既存のマトリクス部20に配置された演算ユニット30の組み合わせを実行用の組み合わせ76にするための命令80を生成して、中間言語で記述された部分73bを置き換えてコンパイルすることにより実行用プログラム3を生成できる。
実行用の組み合わせ76を生成する配置配線処理75では、演算ユニット30における処理のタイミング調整のために、データパス32cを備えた遅延用の演算ユニットDELを含めた組み合わせを生成する必要がある。したがって、配置配線処理75では、異なるレイアウトのマトリクス部20を設計し、すべての実行用の組み合わせが生成できるか否かを確認する作業を、適当なアルゴリズムで繰り返し行い、適切な組み合わせを見つける必要がある。
また、各々の演算ユニット30は、コンフィグレイションRAM39により内部データパスの構成を変更あるいは選択することが可能である。データパス32bを備えた演算ユニットSMAでは、演算処理の内容をコンフィグレイションRAM39により設定する必要がある。したがって、配置配線処理75においては、組み合わされる演算ユニット30の内部のデータパス32の構成も含めた実行用の組み合わせを生成する必要がある。そして、演算ユニット30の設定は、実行用プログラム3に含まれた組み合わせを指示する命令により、各々の演算ユニット30のコンフィグレイションRAM39でアクティブになるようにマトリクス部20に供給される。
図15ないし図21を参照して、演算ユニット30の組み合わせを生成する過程の概略を説明する。図15に、配置配線を行うコンパイラ75における処理をフローチャートで示してある。まず、ステップ91で、図17に示した中間言語の記述73bから図18に示したデータフローグラム(DFG)101を生成する。複数のデータフローグラム101が必要な場合は、それらを作成する。次に、ステップ92で、それらのデータフローグラム101を構成できる演算ユニット30を含んだ適当なレイアウトのマトリクス部20を生成し、ステップ93で1つ1つのデータフローグラム101について配置配線を行い、すべてのデータフローグラム101が割付できるマトリクス部20のレイアウトと、実行用の組み合わせを見つける。ステップ94で、1つのデータフローグラム101でも配置配線できない場合は、配置配線不可として、ステップ92に戻って新しいレイアウトのマトリクス部20を生成する。マトリクス部20の出力側は、データを出力する処理を行う演算ユニットSTになるので、すべての演算ユニットSTについてデータフローグラム101を割り当てできれば、配置配線が成功したことになる。
図16に、1つのデータフローグラム101を実行するための演算ユニット30を組み合わせを生成する処理をフローチャートにより示してある。レイテンシの維持を容易にするためにデータフローグラム101の下流から順番に演算ユニット30を割り当てていくことが望ましい。したがって、ステップ111で、データフローグラム101を構成する末尾の演算ユニットを配置でき、それを出力の演算ユニットSTに配線できるか否かを確認する。ステップ112で、適当な演算ユニット30とそれらを接続する配線群が見つかれば配置配線は成功である。次に、ステップ113では、発見した資源、すなわち、演算ユニット30と配線群とにマークし、末尾の演算ユニット30を配置済みとする。そして、ステプ114で、配置済みの演算ユニット30の入力元の演算ユニット30が配置配線可能であるか否かを下流から上流へ辿りながら確認する。ステップ115で、入力元の演算ユニット30の配置配線が可能であり、すべての入力元の演算ユニット30が配置配線できれば、1つのデータフローグラム101がマトリクス部20に配置できたことになる。
図18に示したデータフローグラム101は、2つの入力データを、2回加算して出力データを得るものであり、図19に示すように論理ユニット30の組み合わせに置き換えることができる。すなわち、下流側から、出力用の論理ユニットST、2つの算術計算用の論理ユニットSMA、そして、2つの入力用の論理ユニットLDを含む組み合わせである。算術演算用の論理ユニットSMAで加算を行うと2クロックが費やされるので、そのクロック(レイテンシ)を調整するために遅延用の論理ユニットDELが組合される。さらに、マトリクス部20のレイアウトによる遅延を調整するために論理ユニットDELを適当に組み合わせる必要がある。
図20に、このデータフローグラム101をマトリクス部20に割り付けた様子を示してある。末尾の演算ユニットSMAは、その値を出力する演算ユニットSTと同じ列で見つかっている。その演算ユニットSMAの一方の入力元となる演算ユニットDELは同じ列で見つかり、他方の入力元となる演算ユニットSMAは隣の列で見つかっている。図20のマトリクス部20は、3つのセグメント29に分かれているので、同じ列で見つかった演算ユニットDELの入力元となる演算ユニットLDとは2つの演算ユニットDELを介して接続されている。同様に、隣の列で見つかった演算ユニットSMAの入力元となる演算ユニットLDとは2つの演算ユニットDELを介して接続されている。したがって、マトリクス部20にマッピングされたデータフローグラム101の実際の組み合わせは図21に示すようになる。この組み合わせを指示する命令80が、このマトリクス部20を有するLSI10の実行プログラム3に組み込まれ、その命令80によりRISCプロセッサ11がマトリクス部20の組み合わせを制御する。それにより、中間記述73bの処理がマトリクス部20でハードウェアにより実行される。
以上に説明したように、本発明の集積回路装置は、特定の処理に適したデータパスを備えた複数種類の演算ユニットが配置されたデータ処理区画(マトリクス部)を備えており、これら複数種類の演算ユニットの組み合わせを決めることにより、与えられた仕様、あるいはその一部をハードウェアで実行可能な集積回路装置を極めて短期間に設計および製造できる。データ処理区画に配置された演算ユニットは、命令を実行する機能を備えているので、与えられた仕様を、演算ユニットがサポートする命令を含む中間言語による記述に置き換えるだけで、ソフトウェア処理をハードウェア処理に変換することが可能である。そして、演算ユニットの組み合わせを見つけるだけで、そのデータ処理区画で実行可能な処理を定義できる。したがって、与えられた仕様を実行するハードウェアを製造するために、ハードウェア記述言語に展開し、トランジスタレベルの構成に論理合成し、それからハードウェアを生成したり、FPGAにロードできる情報に変換したりする必要はない。さらに、論理ユニットの組み合わせを生成するために作成される中間言語の記述は、設計者が容易に処理を把握できるプログラム言語であり、修正や変更に対しても極めて柔軟に短期間で対応できる。
また、データ処理区画に配置された演算ユニットは、すべてが同一構成の汎用性だけを追求したものではなく、命令により指示される処理を実行するのに適した、異なる、または固有のデータパスを備えているので、回路の冗長性は少ない。したがって、コンパクトで経済的な集積回路装置を提供することができる。処理速度も速く、AC特性も良好な集積回路装置を提供することができる。そして、この集積回路装置は、複数の演算ユニットにより構成される機能を1クロックで簡単に変更できる能力を備えているので、データ処理区画を構成する演算ユニットおよび配線群といった資源を多種多様な処理に有効活用できる。
上述した例は、本発明の一例であり、本発明は、本明細書で開示したように様々なバリエーションを含んでいる。たとえば、マトリクス状に配置された演算ユニットの組み合わせにより構成されるデータフローグラムが固定されたものから、データフローグラムがプログラムによりダイナミックに再構成可能なものまで含んでいる。また、演算ユニットの組み合わせ、および演算ユニットの内部のデータパスの選択の制御は、リスクプロセッサからの指示に限らず、他のLSI、他のマトリクス、さらには、マトリクス内の演算ユニットからも可能である。上述した演算ユニットはアドレス発生、算術演算、論理演算、乗算、遅延などの特定の処理に適したデータパスを備えているものの例であり、演算ユニットに含まれるデータパスの機能や、構成は本例に限定されるものではない。また、マトリクス状に配置される演算ユニットの種類も上記の例に限定されるものではない。本発明のデータ処理装置で実行されるアプリケーションに適した機能のデータパスを備えた幾種類の演算ユニットを生成し、それらを配置してバスで配線することにより本発明の効果を得ることが可能である。
産業上の利用可能性
本発明の集積回路装置は、様々なデータ処理を実行可能なシステムLSIなどとして提供することが可能である。また、本発明の集積回路装置は、電子回路に限定されることはなく、光回路あるいは光電子回路にも適用できるものである。本発明の集積回路装置は、再構成可能なハードウェアによりデータ処理を高速に実行できるので、ネットワーク処理や、画像処理などの高速性およびリアルタイム性が要求されるデータ処理装置に好適なものである。
【図面の簡単な説明】
図1は、本発明の実施の形態に係る集積回路装置の概略構成を示すブロック図である。
図2は、マトリクス部の概略構成を示す図である。
図3は、図2に示すマトリクス部の一部を拡大して示す図である。
図4は、図2に示すマトリクス部の配線群のうち、キャリー信号を伝送する配線の配置を示す図である。
図5は、スイッチングユニットの一例を示す図である。
図6は、データを入力する命令の処理に適したデータパス部の例である。
図7は、アドレスを出力する命令の処理に適したデータパス部の例である。
図8は、算術演算および/または論理演算の命令の処理に適したデータパス部の例である。
図9は、データが伝送されるタイミングを遅延する処理に適したデータパス部の例である。
図10は、乗算命令の処理に適したデータパス部の例である。
図11(a)は、外部に配置された演算回路と接続する処理に適したデータパス部の例である。図11(b)は、ルックアップテーブルにより処理が選択されるデータパス部の例である。
図12は、本発明の異なる集積回路装置の概略構成を示すブロック図である。
図13は、複数のLSIを接続した幾つかの例を示す図である。
図14は、本発明の集積回路装置を設計および製造する方法の概要を示す図である。
図15は、配置配線処理の概要を示すフローチャートである。
図16は、1つのデータフローグラムの組み合わせを求める処理の概要を示すフローチャートである。
図17は、中間言語の記述の例である。
図18は、マトリクス部で実現するデータフローグラムの例である。
図19は、データフローグラムを演算ユニットの組み合わせで構成する例である。
図20は、データフローグラムをマトリクス部にマッピングした例である。
図21は、データフローグラムをマトリクス部で実現する組み合わせを示す例である。

Claims (41)

  1. 第1および第2の方向にマトリクス状に配置された複数の演算ユニットと、
    前記複数の演算ユニットの前記第1の方向の配列に対応して前記第1の方向に延び、各演算ユニットの入力および/または出力データを伝送する複数の第1の配線群と、
    前記複数の演算ユニットの前記第2の方向の配列に対応して前記第2の方向に延び、前記各演算ユニットの入力および/または出力データを伝送する複数の第2の配線群と、
    前記第1および第2の配線群の各々の交点に配置され、前記第1の配線群に含まれる任意の配線と前記第2の配線群に含まれる任意の配線を選択して接続可能な複数のスイッチングユニットと、を備えたデータ処理区画を有し、
    前記複数の演算ユニットは、特定の処理に適した異なるデータパスを備えた複数種類の演算ユニットに分類され、前記データ処理区画の少なくとも一部では、同一種類の演算ユニットが前記第1または第2の方向の配列を形成しており、
    前記複数種類の演算ユニットは、データの伝送時間を遅らせる処理に適したデータパスを備えた遅延用の演算ユニットを含んでいる集積回路装置。
  2. 前記複数種類の演算ユニットが前記第1の方向に等間隔で配置されている請求項1の集積回路装置。
  3. 前記複数種類の演算ユニットは、少なくとも1つの異なる命令レベルの処理に適したデータパスを備えた、異なる種類の演算ユニットを含んでいる請求項1の集積回路装置。
  4. 前記複数種類の演算ユニットのうち、データの入力および/または出力処理に適したデータパスを備えた演算ユニットが、前記データ処理区画の一方の端と他方の端に配列されている、請求項1の集積回路装置。
  5. 前記各演算ユニットは、クロック単位で制御されるフリップフロップであって、当該各演算ユニットにおいて消費されるクロックを明確にする、入力データをラッチするフリップフロップと、出力データをラッチするフリップフロップとを備えている、請求項1の集積回路装置。
  6. 前記複数種類の演算ユニットの少なくとも1つの種類の演算ユニットは、同一方向に配列されたときに、他の演算ユニットと連携して拡張された演算機能を提供可能なパスを備えている、請求項1の集積回路装置。
  7. 前記各演算ユニットは、前記第1の配線群および/または第2の配線群に含まれる任意の配線を選択して信号を入力および/または出力する手段を備えている、請求項1の集積回路装置。
  8. 前記各演算ユニットは、配線の選択を記憶する書き換え可能なコンフィグレイションメモリを備えており、
    前記スイッチングユニットは、配線の選択を記憶する書き換え可能なコンフィグレイションメモリを備えている請求項7の集積回路装置。
  9. 前記各演算ユニットは、内部のデータパスの一部を変更および/または選択する手段を備えており、前記コンフィグレイションメモリは前記内部のデータパスの変更および/または選択も記憶する、請求項8の集積回路装置。
  10. 前記内部のデータパスは、少なくとも1つの命令レベルの処理に適したデータパスである、請求項9の集積回路装置。
  11. 前記コンフィグレイションメモリの内容を書き換え可能な汎用プロセッサを有する請求項8の集積回路装置。
  12. 複数の前記データ処理区画と、これらのデータ処理区画を接続する第3の配線群とを有する請求項1の集積回路装置。
  13. 前記各演算ユニットは、データをバイトおよび/またはワード単位で処理する、請求項1の集積回路装置。
  14. 前記第1および第2の配線群はデータを伝送するバス配線と、キャリー信号を伝送するキャリー配線とを備えている、請求項1の集積回路装置。
  15. 前記各演算ユニットは、前記第2の配線群に含まれる任意の配線から信号を入力する手段と、前記第1の配線群に含まれる任意の配線に信号を出力する手段とを備えており、
    前記第2の配線群は、前記複数の演算ユニットの前記第2の方向の配列の両側に沿って延びた1組の配線群を備えている、請求項1の集積回路装置。
  16. 前記データ処理区画は、前記遅延用の演算ユニットの配列を介して接続された第1のマトリクスと第2のマトリクスとを備えている、請求項1の集積回路装置。
  17. 前記複数種類の演算ユニットは、
    データの入力処理に適したデータパスを備えた第1種の演算ユニット、
    入力データのアドレスを指定する処理に適したデータパスを備えた第2種の演算ユニット、
    データの出力処理に適したデータパスを備えた第3種の演算ユニット、
    出力するデータのアドレスを指定する処理に適したデータパスを備えた第4種の演算ユニット、
    算術演算および/または論理演算の処理に適したデータパスを備えた第5種の演算ユニット、
    乗算処理に適したデータパスを備えた第6種の演算ユニット、
    前記データ処理区画の外部に配置された演算回路と接続する処理に適したデータパスを備えた第7種の演算ユニット、および
    ルックアップテーブルにより処理が選択されるデータパスを備えた第8種の演算ユニットの少なくともいずれかを含んでいる、請求項1の集積回路装置。
  18. 複数種類の演算ユニットと、それら複数種類の演算ユニットを接続する配線群と、を備えたデータ処理区画を有し、
    前記複数種類の演算ユニットは、少なくとも1つの異なる命令の実行に適したデータパスを備えた、異なる種類の演算ユニットと、データの伝送時間を遅らせる処理に適したデータパスを備えた遅延用の演算ユニットとを含んでいる集積回路装置。
  19. 前記複数種類の演算ユニットは、
    データの入力命令の実行に適したデータパスを備えた第1種の演算ユニット、
    入力データのアドレスを指定する命令の実行に適したデータパスを備えた第2種の演算ユニット、
    データの出力命令の実行に適したデータパスを備えた第3種の演算ユニット、
    出力するデータのアドレスを指定する命令の実行に適したデータパスを備えた第4種の演算ユニット、
    算術演算命令および/または論理演算命令の実行に適したデータパスを備えた第5種の演算ユニット、および
    乗算命令の実行に適したデータパスを備えた第6種の演算ユニットの少なくともいずれかを含んでいる、請求項18の集積回路装置。
  20. 前記複数種類の演算ユニットは、さらに、
    前記データ処理区画の外部に配置された演算回路と接続する処理に適したデータパスを備えた第7種の演算ユニット、および
    ルックアップテーブルにより処理が選択されるデータパスを備えた第8種の演算ユニットの少なくともいずれかを含んでいる、請求項19の集積回路装置。
  21. 複数種類の演算ユニットと、それら複数種類の演算ユニットを接続する配線群と、を備えたデータ処理区画を有し、
    前記複数種類の演算ユニットは、少なくとも1つの異なる命令の実行に適したデータパスを備えた、異なる種類の演算ユニットを含み、
    各演算ユニットは、クロック単位で制御されるフリップフロップであって、当該各演算ユニットにおいて消費されるクロックを明確にする、入力データをラッチするフリップフロップと、出力データをラッチするフリップフロップとを備えている集積回路装置。
  22. 前記複数種類の演算ユニットは、第1および第2の方向にマトリクス状に配置されている、請求項18の集積回路装置。
  23. 前記複数種類の演算ユニットのうち、データの入力命令および/または出力命令の実行に適したデータパスを備えた演算ユニットが、前記データ処理区画の一方の端と他方の端に配列されている、請求項22の集積回路装置。
  24. 前記配線群は、前記複数種類の演算ユニットの前記第1の方向の配列の対応して前記第1の方向に延び、各演算ユニットの入力および/または出力データを伝送する複数の第1の配線群と、
    前記複数種類の演算ユニットの前記第2の方向の配列に対応して前記第2の方向に延び、前記各演算ユニットの入力および/または出力データを伝送する複数の第2の配線群と、
    前記第1および第2の配線群の各々の交点に配置され、前記第1の配線群に含まれる任意の配線と前記第2の配線群に含まれる任意の配線を選択して接続可能な複数のスイッチングユニットとを備えており、
    前記各演算ユニットは、前記第1の配線群および/または第2の配線群に含まれる任意の配線を選択して信号を入力および/または出力する手段を備えている、請求項22の集積回路装置。
  25. 前記配線群は、前記複数種類の演算ユニットに供給されるデータのルートを変えてデータ処理のための前記複数種類の演算ユニットの組み合わせを変更可能である、請求項18の集積回路装置。
  26. 前記複数種類の演算ユニットは、配線の選択を記憶する書き換え可能なコンフィグレイションメモリを備えており、
    前記スイッチングユニットは、配線の選択を記憶する書き換え可能なコンフィグレイションメモリを備えている請求項25の集積回路装置。
  27. 前記複数種類の演算ユニットの少なくともいずれかは、少なくとも1つの命令の実行に適した内部のデータパスと、その内部のデータパスの一部を選択および/または変更する手段とを備えており、
    前記コンフィグレイションメモリは前記内部のデータパスの選択および/または変更も記憶する、請求項26の集積回路装置。
  28. プログラムに基づき前記コンフィグレイションメモリの内容を書き換える制御ユニットを有する請求項26の集積回路装置。
  29. プログラムに基づき前記複数種類の演算ユニットの組み合わせを制御する制御ユニットを有する請求項25の集積回路装置。
  30. 前記複数種類の演算ユニットの少なくともいずれかは、少なくとも1つの命令の実行に適した内部のデータパスと、その内部のデータパスの一部を選択および/または変更する手段とを備えており、
    前記制御ユニットは、前記内部のデータパスの選択および/または変更も制御する、請求項29の集積回路装置。
  31. 前記制御ユニットは汎用プロセッサである、請求項29の集積回路装置。
  32. 複数の前記データ処理区画と、これらのデータ処理区画を接続する配線群とを有する請求項18の集積回路装置。
  33. 複数の演算ユニットと、それら複数の演算ユニットを接続する配線群と、を備えたデータ処理区画を有し、
    前記複数の演算ユニットは、特定の処理に適した異なるデータパスを備えた複数種類の演算ユニットに分類され、さらに、各演算ユニットは、データをバイトおよび/またはワード単位で処理する、集積回路装置。
  34. 前記複数種類の演算ユニットは、少なくとも1つの異なる命令レベルの処理に適したデータパスを備えた、異なる種類の演算ユニットを含んでいる、請求項33の集積回路装置。
  35. 第1および第2の方向にマトリクス状に配置された複数種類の演算ユニットと、それら複数種類の演算ユニットを接続する配線群と、を備えたデータ処理区画を有し、前記複数種類の演算ユニットは、少なくとも1つの異なる命令の処理に適したデータパスを備えた、異なる種類の演算ユニットと、データの伝送時間を遅らせる処理に適したデータパスを備えた遅延用の演算ユニットとを含んでいる集積回路装置の設計方法であって、
    当該集積回路装置において実行する処理の少なくとも一部を、前記複数種類の演算ユニットのいずれかにより実行可能な命令を含むプログラム言語で記述された中間記述に変換する工程と、
    その中間記述の処理を実行可能な前記複数種類の演算ユニットに加えて前記遅延用の演算ユニットをタイミング調整のために含めた実行用の組み合わせを生成する工程と、
    前記実行用の組み合わせを実現するように前記複数種類演算ユニットが配置された前記データ処理区画を生成する工程とを有する集積回路装置の設計方法。
  36. 複数種類の演算ユニットが配置され、配線群により前記複数種類の演算ユニットに供給されるデータのルートを変えてデータ処理のための前記複数種類の演算ユニットの組み合わせを変更可能なデータ処理区画を有し、前記複数種類の演算ユニットは、少なくとも1つの異なる命令の処理に適したデータパスを備えた、異なる種類の演算ユニットと、データの伝送時間を遅らせる処理に適したデータパスを備えた遅延用の演算ユニットとを含んでいる集積回路装置の設計方法であって、
    当該集積回路装置において実行する処理の少なくとも一部を、前記複数種類の演算ユニットのいずれかにより実行可能な命令を含むプログラム言語で記述された中間記述に変換する工程と、
    その中間記述の処理を実行可能な前記複数種類の演算ユニットに加えて前記遅延用の演算ユニットをタイミング調整のために含めた実行用の組み合わせを生成する工程と、
    前記実行用の組み合わせに必要となる前記複数種類演算ユニットが配置された前記データ処理区画を生成する工程と、
    前記実行用の組み合わせを指示する命令を備えた前記集積回路装置の実行プログラムを生成する工程とを有する集積回路装置の設計方法。
  37. 前記複数の演算ユニットの少なくともいずれかは、少なくとも1つの命令の処理に適した内部のデータパスと、その内部のデータパスの一部を選択および/または変更する手段とを備えており、
    前記実行用の組み合わせを生成する工程では、前記内部のデータパスの選択および/または変更も含めた前記実行用の組み合わせを生成する、請求項37の集積回路装置の設計方法。
  38. 複数種類の演算ユニットが配置され、配線群により前記複数種類の演算ユニットに供給されるデータのルートを変えてデータ処理のための前記複数種類の演算ユニットの組み合わせを変更可能なデータ処理区画を有し、前記複数種類の演算ユニットは、少なくとも1つの異なる命令の処理に適したデータパスを備えた、異なる種類の演算ユニットと、データの伝送時間を遅らせる処理に適したデータパスを備えた遅延用の演算ユニットとを含んでいる集積回路装置の実行プログラムの作成方法であって、
    当該集積回路装置において実行する処理の少なくとも一部を、前記複数種類の演算ユニットのいずれかにより実行可能な命令を含むプログラム言語で記述された中間記述に変換する工程と、
    その中間記述の処理を実行可能な前記複数種類の演算ユニットに加えて前記遅延用の演算ユニットをタイミング調整のために含めた実行用の組み合わせを生成する工程と、
    前記実行用の組み合わせを指示する命令を備えた前記実行プログラムを生成する工程とを有する集積回路装置の実行プログラムの作成方法。
  39. 前記複数の演算ユニットの少なくともいずれかは、少なくとも1つの命令の処理に適した内部のデータパスと、その内部のデータパスの一部を選択および/または変更する手段とを備えており、
    前記実行用の組み合わせを生成する工程では、前記内部のデータパスの選択および/または変更も含めた前記実行用の組み合わせを生成する、請求項39の集積回路装置の実行プログラムの作成方法。
  40. 前記複数種類の演算ユニットは、データの伝送時間を遅らせる処理に適したデータパスを備えた遅延用の演算ユニットを含んでいる、請求項33の集積回路装置。
  41. 前記各演算ユニットは、クロック単位で制御されるフリップフロップであって、当該各演算ユニットにおいて消費されるクロックを明確にする、入力データをラッチするフリップフロップと、出力データをラッチするフリップフロップとを備えている、請求項33の集積回路装置。
JP2002592291A 2001-05-24 2002-05-24 集積回路装置 Expired - Lifetime JP4208577B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2001155759 2001-05-24
JP2001155759 2001-05-24
PCT/JP2002/005047 WO2002095946A1 (fr) 2001-05-24 2002-05-24 Dispositif a circuit integre

Publications (2)

Publication Number Publication Date
JPWO2002095946A1 JPWO2002095946A1 (ja) 2004-09-09
JP4208577B2 true JP4208577B2 (ja) 2009-01-14

Family

ID=18999886

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002592291A Expired - Lifetime JP4208577B2 (ja) 2001-05-24 2002-05-24 集積回路装置

Country Status (9)

Country Link
US (2) US7191312B2 (ja)
EP (1) EP1391991A4 (ja)
JP (1) JP4208577B2 (ja)
KR (1) KR100952760B1 (ja)
CN (1) CN1274085C (ja)
CA (1) CA2448549A1 (ja)
EA (1) EA005344B1 (ja)
TW (1) TWI234737B (ja)
WO (1) WO2002095946A1 (ja)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8412915B2 (en) * 2001-11-30 2013-04-02 Altera Corporation Apparatus, system and method for configuration of adaptive integrated circuitry having heterogeneous computational elements
EP1620806A2 (en) * 2003-04-03 2006-02-01 Koninklijke Philips Electronics N.V. Runtime configurable virtual video pipeline
JP2005018626A (ja) * 2003-06-27 2005-01-20 Ip Flex Kk 並列処理システムの生成方法
JP4423953B2 (ja) * 2003-07-09 2010-03-03 株式会社日立製作所 半導体集積回路
JP3887622B2 (ja) * 2003-10-17 2007-02-28 松下電器産業株式会社 データ処理装置
US20050097499A1 (en) * 2003-11-03 2005-05-05 Macronix International Co., Ltd. In-circuit configuration architecture with non-volatile configuration store for embedded configurable logic array
US20050102573A1 (en) * 2003-11-03 2005-05-12 Macronix International Co., Ltd. In-circuit configuration architecture for embedded configurable logic array
US20050093572A1 (en) * 2003-11-03 2005-05-05 Macronix International Co., Ltd. In-circuit configuration architecture with configuration on initialization function for embedded configurable logic array
US7425841B2 (en) * 2004-02-14 2008-09-16 Tabula Inc. Configurable circuits, IC's, and systems
JP4208919B2 (ja) * 2004-03-19 2009-01-14 アイピーフレックス株式会社 活性化コードの生成方法
JP4546775B2 (ja) 2004-06-30 2010-09-15 富士通株式会社 時分割多重処理可能なリコンフィギュラブル回路
EP2618308B1 (en) 2004-08-20 2017-05-10 Fuji Xerox Co., Ltd. Method for generating label image and image processing system
US7330050B2 (en) 2004-11-08 2008-02-12 Tabula, Inc. Storage elements for a configurable IC and method and apparatus for accessing data stored in the storage elements
JP3810419B2 (ja) 2004-12-07 2006-08-16 松下電器産業株式会社 再構成可能な信号処理プロセッサ
JP4810090B2 (ja) 2004-12-20 2011-11-09 キヤノン株式会社 データ処理装置
JP4654731B2 (ja) * 2005-03-31 2011-03-23 富士ゼロックス株式会社 集積回路装置および信号処理装置
KR20070114690A (ko) 2005-04-12 2007-12-04 마츠시타 덴끼 산교 가부시키가이샤 프로세서
US7389481B2 (en) * 2005-05-12 2008-06-17 International Business Machines Corporation Integrated circuit design utilizing array of functionally interchangeable dynamic logic cells
JP4720436B2 (ja) * 2005-11-01 2011-07-13 株式会社日立製作所 リコンフィギュラブルプロセッサまたは装置
JP2007141132A (ja) * 2005-11-22 2007-06-07 Renesas Technology Corp 動的再構成可能プロセッサおよびそれを制御するプロセッサ制御プログラム
US20100174884A1 (en) * 2005-12-27 2010-07-08 Matsushita Electric Industrial Co., Ltd. Processor having reconfigurable arithmetic element
JP4838009B2 (ja) * 2006-02-22 2011-12-14 富士通セミコンダクター株式会社 リコンフィグラブル回路
JP4782591B2 (ja) 2006-03-10 2011-09-28 富士通セミコンダクター株式会社 リコンフィグラブル回路
JP4702159B2 (ja) * 2006-04-25 2011-06-15 富士ゼロックス株式会社 集積回路装置
JP4998806B2 (ja) * 2006-08-31 2012-08-15 富士ゼロックス株式会社 再構成可能なデバイスに回路デザインを実装するための方法およびシステム
JP4866194B2 (ja) 2006-09-29 2012-02-01 富士通セミコンダクター株式会社 集積回路及びリコンフィギュラブル回路の入力データ制御方法
JP5079342B2 (ja) 2007-01-22 2012-11-21 ルネサスエレクトロニクス株式会社 マルチプロセッサ装置
TW200849087A (en) * 2007-06-01 2008-12-16 Holtek Semiconductor Inc Method of accelerating the excution of repeatative commands and its micro controller
US8248101B2 (en) 2007-09-06 2012-08-21 Tabula, Inc. Reading configuration data from internal storage node of configuration storage circuit
JP5119902B2 (ja) 2007-12-19 2013-01-16 富士通セミコンダクター株式会社 動的再構成支援プログラム、動的再構成支援方法、動的再構成回路、動的再構成支援装置および動的再構成システム
WO2009148021A1 (ja) * 2008-06-03 2009-12-10 株式会社日立製作所 パケット解析装置
EP2175374A1 (en) * 2008-10-08 2010-04-14 Panasonic Corporation Method and apparatus for scalable array configuration
DE102008037431B4 (de) * 2008-10-10 2013-06-06 Lear Corporation Gmbh Verfahren zur dynamischen Konfiguration eines Signalaufbereiters
JP5590849B2 (ja) * 2009-10-08 2014-09-17 キヤノン株式会社 複数の処理モジュールを有する並列処理回路を備えるデータ処理装置、その制御装置、およびその制御方法、プログラム
JP2011209948A (ja) * 2010-03-29 2011-10-20 Canon Inc 情報処理装置、情報処理方法、プログラム及び記憶媒体
US8996906B1 (en) 2010-05-13 2015-03-31 Tabula, Inc. Clock management block
US9148151B2 (en) 2011-07-13 2015-09-29 Altera Corporation Configurable storage elements
JP5653865B2 (ja) * 2011-08-23 2015-01-14 日本電信電話株式会社 データ処理システム
US9507541B2 (en) 2012-12-25 2016-11-29 Nec Corporation Computation device, computation method, and medium
US9000801B1 (en) 2013-02-27 2015-04-07 Tabula, Inc. Implementation of related clocks
US9667256B2 (en) * 2013-03-01 2017-05-30 Axion Research Inc. Data processing device and control method therefor
US10833843B1 (en) * 2015-12-03 2020-11-10 United Services Automobile Association (USAA0 Managing blockchain access
FR3063855B1 (fr) * 2017-03-08 2019-04-12 Areva Np Circuit logique programmable de commande d'une installation electrique, en particulier une installation nucleaire, dispositif et procede de commande associes
EP3607454A4 (en) * 2017-04-06 2021-03-31 Goldman Sachs & Co. LLC PARALLEL MULTIPURPOSE COMPUTER ARCHITECTURE
US10796048B1 (en) * 2017-06-16 2020-10-06 Synopsys, Inc. Adding delay elements to enable mapping a time division multiplexing circuit on an FPGA of a hardware emulator
CN111897580B (zh) * 2020-09-29 2021-01-12 北京清微智能科技有限公司 一种可重构阵列处理器的指令调度系统及方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4967340A (en) * 1985-06-12 1990-10-30 E-Systems, Inc. Adaptive processing system having an array of individually configurable processing components
US4943909A (en) * 1987-07-08 1990-07-24 At&T Bell Laboratories Computational origami
US5450557A (en) * 1989-11-07 1995-09-12 Loral Aerospace Corp. Single-chip self-configurable parallel processor
SG46393A1 (en) * 1993-05-28 1998-02-20 Univ California Field programmable logic device with dynamic interconnections to a dynamic logic core
US5457644A (en) 1993-08-20 1995-10-10 Actel Corporation Field programmable digital signal processing array integrated circuit
GB9403030D0 (en) * 1994-02-17 1994-04-06 Austin Kenneth Re-configurable application specific device
US5426378A (en) 1994-04-20 1995-06-20 Xilinx, Inc. Programmable logic device which stores more than one configuration and means for switching configurations
US5692147A (en) 1995-06-07 1997-11-25 International Business Machines Corporation Memory mapping method and apparatus to fold sparsely populated structures into densely populated memory columns or rows by selectively transposing X and Y address portions, and programmable gate array applications thereof
GB9611994D0 (en) 1996-06-07 1996-08-07 Systolix Ltd A field programmable processor
US6057367A (en) * 1996-08-30 2000-05-02 Duke University Manipulating nitrosative stress to kill pathologic microbes, pathologic helminths and pathologically proliferating cells or to upregulate nitrosative stress defenses
US5841296A (en) * 1997-01-21 1998-11-24 Xilinx, Inc. Programmable delay element
US5966534A (en) 1997-06-27 1999-10-12 Cooke; Laurence H. Method for compiling high level programming languages into an integrated processor with reconfigurable logic
JP3850531B2 (ja) 1997-10-21 2006-11-29 株式会社東芝 再構成可能な回路の設計装置、及び再構成可能な回路装置
US6122719A (en) * 1997-10-31 2000-09-19 Silicon Spice Method and apparatus for retiming in a network of multiple context processing elements
JP3123977B2 (ja) 1998-06-04 2001-01-15 日本電気株式会社 プログラマブル機能ブロック
EP1085426B1 (en) * 1999-09-13 2006-01-11 Nippon Telegraph and Telephone Corporation Parallel-processing apparatus and method
US6633181B1 (en) * 1999-12-30 2003-10-14 Stretch, Inc. Multi-scale programmable array
US6469540B2 (en) * 2000-06-15 2002-10-22 Nec Corporation Reconfigurable device having programmable interconnect network suitable for implementing data paths
US20030088757A1 (en) * 2001-05-02 2003-05-08 Joshua Lindner Efficient high performance data operation element for use in a reconfigurable logic environment

Also Published As

Publication number Publication date
CN1518798A (zh) 2004-08-04
US7577821B2 (en) 2009-08-18
KR100952760B1 (ko) 2010-04-14
US20070186078A1 (en) 2007-08-09
US7191312B2 (en) 2007-03-13
TWI234737B (en) 2005-06-21
US20030184339A1 (en) 2003-10-02
EA005344B1 (ru) 2005-02-24
CN1274085C (zh) 2006-09-06
EP1391991A1 (en) 2004-02-25
CA2448549A1 (en) 2002-11-28
WO2002095946A1 (fr) 2002-11-28
JPWO2002095946A1 (ja) 2004-09-09
KR20040004631A (ko) 2004-01-13
EA200301290A1 (ru) 2004-06-24
EP1391991A4 (en) 2007-10-24

Similar Documents

Publication Publication Date Title
JP4208577B2 (ja) 集積回路装置
JP4104538B2 (ja) リコンフィギュラブル回路、リコンフィギュラブル回路を備えた処理装置、リコンフィギュラブル回路における論理回路の機能決定方法、回路生成方法および回路
US9135387B2 (en) Data processing apparatus including reconfiguarable logic circuit
US20050283743A1 (en) Method for generating hardware information
US8138788B2 (en) Reconfigurable device
US7614020B2 (en) Structurally field-configurable semiconductor array for in-memory processing of stateful, transaction-oriented systems
US7906987B2 (en) Semiconductor integrated circuit, program transformation apparatus, and mapping apparatus
JP4484756B2 (ja) リコンフィギュラブル回路および処理装置
KR20060135600A (ko) 데이터 처리 장치
Zamacola et al. Multi-grain reconfigurable and scalable overlays for hardware accelerator composition
JP4562679B2 (ja) データフローグラフ生成装置
Russo Adaptation of High Performance and High Capacity Reconfigurable Systems to OpenCL Programming Environments
JP4276911B2 (ja) 集積回路の回路要素の配置方法および配置プログラム
JP5565456B2 (ja) 集積回路及びその使用方法
Fabiani et al. Intermediate level components for reconfigurable platforms
JP4212161B2 (ja) 半導体装置
JP2004302856A (ja) 集積回路装置およびその装置に対するデータ設定装置
JP2007272394A (ja) データフローグラフ再構成装置、リコンフィギュラブル回路の設定データ生成装置、処理装置、及びリコンフィギュラブル回路
JP2008090869A (ja) 処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050517

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4208577

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20111031

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20111031

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

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

Free format text: PAYMENT UNTIL: 20111031

Year of fee payment: 3

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

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

Free format text: PAYMENT UNTIL: 20111031

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20111031

Year of fee payment: 3

R370 Written measure of declining of transfer procedure

Free format text: JAPANESE INTERMEDIATE CODE: R370

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

Free format text: PAYMENT UNTIL: 20111031

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20111031

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

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

Free format text: PAYMENT UNTIL: 20111031

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20111031

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20121031

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20121031

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20131031

Year of fee payment: 5

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

EXPY Cancellation because of completion of term