JP3719509B2 - シリアル演算パイプライン、演算装置、算術論理演算回路およびシリアル演算パイプラインによる演算方法 - Google Patents
シリアル演算パイプライン、演算装置、算術論理演算回路およびシリアル演算パイプラインによる演算方法 Download PDFInfo
- Publication number
- JP3719509B2 JP3719509B2 JP2002099202A JP2002099202A JP3719509B2 JP 3719509 B2 JP3719509 B2 JP 3719509B2 JP 2002099202 A JP2002099202 A JP 2002099202A JP 2002099202 A JP2002099202 A JP 2002099202A JP 3719509 B2 JP3719509 B2 JP 3719509B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- latch circuit
- line
- arithmetic
- output
- 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
Links
- 238000000034 method Methods 0.000 title claims description 20
- 238000004364 calculation method Methods 0.000 claims description 32
- 230000008569 process Effects 0.000 claims description 8
- 230000007246 mechanism Effects 0.000 claims description 7
- 230000001934 delay Effects 0.000 claims description 5
- 230000003111 delayed effect Effects 0.000 claims description 2
- 239000004065 semiconductor Substances 0.000 claims description 2
- 239000000470 constituent Substances 0.000 claims 1
- 230000007704 transition Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 35
- 230000006870 function Effects 0.000 description 15
- QZOCOXOCSGUGFC-KIGPFUIMSA-N SCB3 Chemical compound CCC(C)CCCC[C@@H](O)[C@H]1[C@H](CO)COC1=O QZOCOXOCSGUGFC-KIGPFUIMSA-N 0.000 description 3
- QZOCOXOCSGUGFC-UHFFFAOYSA-N SCB3 Natural products CCC(C)CCCCC(O)C1C(CO)COC1=O QZOCOXOCSGUGFC-UHFFFAOYSA-N 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 239000002360 explosive Substances 0.000 description 3
- 101001050607 Homo sapiens KH domain-containing, RNA-binding, signal transduction-associated protein 3 Proteins 0.000 description 2
- 102100023428 KH domain-containing, RNA-binding, signal transduction-associated protein 3 Human genes 0.000 description 2
- 241001415513 Salpida Species 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 235000012237 sodium aluminium phosphate Nutrition 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3875—Pipelining a single stage, e.g. superpipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Multi Processors (AREA)
Description
【発明の属する技術分野】
本発明は、例えば頻繁に動くオブジェクトをコンピュータ・グラフィクスによって表現するような、突発的かつ爆発的に膨らむ離散演算を必要とする用途に適したシリアル演算パイプライン(pipeline)及びその構成要素に関する。
ここで、シリアル演算パイプラインは、命令取り出し(fetch)、命令解読(decode)、その実行(execute)のような、別々の作業を順次同時に行なうことによって処理の高速化を図るものであり、少数の命令群を扱う演算器をカスケード接続して構成される。カスケード接続された複数の演算器のうち使用するものの組み合わせを適宜変えることにより、加減剰、浮動小数点演算、比較、ブール代数、選択(IF文)等、様々な演算処理を実現することができる。
【0002】
【発明の背景】
コンピュータ・グラフィクスの作成に際しては、通常、2次元ピクセル内・ピクセル間の演算、空間把握(コリジョン・デテクション等)、オブジェクト生成・合成、ジオメトリ演算等、多種の離散的演算を伴う。このような用途では、コンピュータのメインCPUだけでは、到底不可能なほどの大量演算パワーが必要となる。例えば、しばしば数100[Mpolygon /sec]、 数10[Gpixel / sec]のオーダのレンダリング処理能力が必要になる。
そのため、従来より、演算パイプラインを搭載した専用のプロセッサが使用されてきた。
【0003】
従来のこの種のプロセッサの殆どは、単一のデバイスで構成され、見込まれる演算量に応じて演算パイプラインを並列化して組み込まれている。演算パイプラインを構築する個々の演算器にも所定の機能が固定的に割り当てられている。いわゆる「1機能1演算器」である。このような1機能1演算器によるパイプラインは、例えば固定長のデータサイズを短スループットで処理する用途には、非常に適している。
【0004】
しかし、「1機能1演算器」では、多様的な用途には、使い回しが利きにくい。例えば用途に応じてパイプライン構成を変更しようとする場合は、演算対象となるデータの通り道と割り当てられた機能とを結びつけるためのセレクタ(バス)が別途必要となる。そのため、単一デバイス内での並列化には限界があった。また、演算器又は演算パイプラインを一定数以上並列化するとクラスタ化が避けられず、そのための制御やデータパス(キャッシュ又はバス)がそれぞれ必要となって、集積効率が悪化してしまう。
【0005】
用途の多様化に対応するために、プログラマブル・データ・フロー・グラフ(DFG)を構成することが考えられる。しかし、プログラマブルDFGは、演算器に対して、セレクタのような非演算要素の占める割合が比較的高い。演算のプログラマビリティを上げるほど、その比率が高まることは、よく知られていることである。プログラマブルDFGは、また、機能(function)が細分化されているため、すべての機能を常時稼動させることは困難である。稼働効率を上げるためには、ある程度固定された機能の塊にせざるを得ず、様々なタイプのデータを処理すること用途には不向きとなる。
【0006】
一方、より高い演算能力を確保する観点からは、演算器の2次元並列化も考えられる。「2次元的並列化」とは、演算器をパラレル及びカスケードに並列化することである。いわば、深パイプラインによるデータフローの並列化である。特殊なインプリメントとしては、並列化されたレンダリング・パイプラインがある。2次元並列化に際してはパイプライン内で必要な機能のみを盛り込み、プログラマビリティを極力排除して、専用演算器のカスケード接続で効率を上げている。
【0007】
今後は、離散演算の多様化が予想される。その際、様々なデータサイズに対して突発的かつ爆発的な演算量を伴う複雑な処理フローを実現する汎用的なパイプラインが望まれる。汎用的な演算パイプラインを構築するためには、データパスを単純(一直線)にし、無駄なくカスケード接続する必要がある。また、多種多様な演算を1演算器で実現できるような仕組みが必要となる。
【0008】
本発明は、このような仕組みを、コスト上昇を伴わずに実現しようとするものである。
【0009】
【課題を解決するための手段】
本発明は、各々独立に制御され他の算術論理演算回路と同時に動作可能な複数の算術論理演算回路をカスケード接続して成るシリアル演算パイプラインを提供する。
このシリアル演算パイプラインにおいて、前記複数の算術論理演算回路の全部又は一部は、後段へデータを出力するための第1ラインと、前段へデータをフィードバックするための第2ラインと、各ライン上のデータをラッチするラッチ回路とを有しており、複数の算術論理演算回路の各々は、外部から入力されたインストラクションの内容に応じた演算を含む処理を実行し、その実行結果を表すデータを所望のライン宛に出力するデコーダを有している。
前記第1ラインは、第1の出力データおよび第2の出力データを後段に出力するための一対のラインであり、前記ラッチ回路は、前記第1の出力データをラッチする第1のデータラッチ回路と、前記第2の出力データをラッチする第2のデータラッチ回路と、前記デコーダによる演算の結果生じるキャリーを次の桁の演算のためにラッチするキャリーラッチ回路と、前記第1の出力データおよび前記第2の出力データの一方を所定期間遅延させて他方との参照を可能にするシフトラッチ回路と、を含んでいる。
【0010】
前記複数の算術論理演算回路の各々は、外部から入力されたインストラクション(命令)の内容に応じた演算を含む処理を実行し、その実行結果を所望のライン宛に出力するデコーダを有するものである。
また、前記ラッチ回路は、後段に出力する第1の出力データをラッチする第1のデータラッチ回路と、後段に出力する第2の出力データをラッチする第2のデータラッチ回路と、前記デコーダによる演算の結果生じたキャリーを次の桁の演算のためにラッチするキャリーラッチ回路と、第1の出力データおよび第2の出力データの一方を所定期間遅延させて他方との参照を可能にするシフトラッチ回路とを含むものである。
前段にフィードバックするリバースデータをラッチするリバースラッチ回路と、前記第1および第2のデータラッチ回路およびリバースラッチ回路にラッチされているデータの出力タイミングを決めるコントロールデータをラッチするコントロールラッチ回路とをさらに含むようにしてもよい。
【0011】
回路面積を縮小とするとともに、パイプライン全体の処理速度を高める観点からは、前記デコーダにより処理されるデータを、単位処理サイズのデータ、例えば、前記複数の算術論理演算回路の動作タイミングを定める一つのクロックで処理可能な最低ビット長ないし同等のビット長のデータとする。
【0012】
本発明は、また、複数系統のデータ入出力ラインを切替接続する切替接続手段と、この切替接続手段に対して並列に接続された複数のシリアル演算パイプラインと、外部から入力された前記複数のシリアル演算パイプライン宛のインストラクションを受け付けるインストラクション受付機構とを備えた演算装置を提供する。
この演算装置において、前記複数のシリアル演算パイプラインの各々は、他の算術論理演算回路と同時に動作可能な複数の算術論理演算回路をカスケード接続して構成されたシリアル演算パイプラインであり、前記複数の算術論理演算回路の各々は、前段から受け取ったデータないしそれに基づく演算結果を後段に出力するための順方向ラインと、後段から受け取ったデータないしそれに基づく演算結果を前段にフィードバックするための逆方向ラインと、入力された前記インストラクションに応じた処理を実行し実行結果を所望のラインに出力するデコーダと、他の算術論理演算回路との間で各ライン上のデータ出力の同期をとるためのラッチ回路とを有するものである。前記複数の算術論理演算回路の各々のデコーダにおける順方向ライン上のデータおよび逆方向ライン上のデータは、単位処理サイズのデータである。
【0013】
この演算装置にコントローラを備え、n行m列の前記インストラクションの集合であるインストラクションアレイをコントローラに保持しておき、コントローラで、インストラクションアレイを列毎にm回前記複数の算術論理演算回路宛に出力するとともにパイプラインが後段に1段ずつn回移行させる際に、実行済みのインストラクションを1段毎に1つ減ずるようにしてもよい。
前記インストラクションアレイは、好ましくは、1パスで演算を実行するための演算手順が定められるようにする。
【0014】
また、前記複数の算術論理演算回路の各々のラッチ回路は、後段に出力する第1の出力データをラッチする第1のデータラッチ回路と、後段に出力する第2の出力データをラッチする第2のデータラッチ回路と、前段に出力するデータをラッチするリバースラッチ回路と、演算結果のキャリーを次の桁の演算のためにラッチするキャリーラッチ回路と、第1の出力データおよび第2の出力データの一方を所定期間遅延させて他方との参照を可能にするシフトラッチ回路とを含むものである。この演算装置においても、装置全体の処理速度を高める観点からは、前記複数の算術論理演算回路の各々のデコーダにおける順方向ライン上のデータおよび逆方向ライン上のデータを単位処理サイズのデータとする。
【0015】
この演算装置は、前記切替接続手段、前記複数のシリアル演算パイプライン、および前記インストラクション受付機構を一つの半導体デバイスの中に組み込んでおき、用途に応じて切替接続手段の制御信号とインストラクションアレイを入力することにより、用途の汎用性を持たせることができる。
【0016】
本発明は、シリアル演算パイプラインによる演算方法を提供する。この方法は、後段にデータを出力するための1又は複数の第1ラインと、前段にデータをフィードバックするための第2ラインとを有し、シリアル演算を行うとともに演算結果を表すデータの出力対象となるラインを各々独立に選択することができる算術論理演算回路を複数段カスケード接続してシリアル演算パイプラインを構築し、前記シリアル演算パイプラインに接続された外部コントローラで、前記複数の算術論理演算回路による1パスによる同時実行の手順を反映したn行m列のインストラクションの集合であるインストラクションアレイを列毎にm回前記複数の算術論理演算回路宛に個別に出力するとともに、パイプラインが後段に1段ずつn回移行させる際に、実行済みのインストラクションを1段毎に1つ減ずる制御を行うことを特徴とする演算方法である。
【0017】
【発明の実施の形態】
本発明の実施形態を説明するに当たり、図1を参照して、本発明の基本原理について説明する。
シリアル演算器は、例えば1〜3ビット程度のシリアル演算を行うもので、16ビット程度の多ビット演算を行うパラレル演算器と比較して、スループットが、データ幅分の1(1ビットのシリアル演算の場合)となるが、演算器面積もその分小さい。スループットが小さい分をパイプラインの並列度を上げるようにすれば、両者の製造コストは実質的に変わらない。
例えば、図1(a)のように、16ビットレジスタを二つパラレルにし、その出力を一つの16ビットアダーで加算して、加算結果を一つの16ビットレジスタに格納する構成の16ビット演算器と、(b)のように1ビットレジスタを32個並列にし、それぞれ2つの1ビットレジスタの出力を加算する1ビット加算器を16個設け、各々の加算機の出力を格納する16個の1ビットレジスタからなる16個の1ビット演算器とは実質的に同一コストとなる。後者の場合は、パイプの各ステージが短くなるため、その分高速化が可能になる利点もある。
【0018】
この実施形態では、以上の原理に基づき、様々な多ビット演算命令の実行環境を、単位処理サイズのフィードバック付シリアル算術論理演算回路(Serial-ALCell、以下「SALC」と称する)の組み合せによって実現する場合の例を挙げる。単位処理サイズとは、SALCにおいて一つのクロックで処理可能な最低ビット長であり、最も単純な例では1ビット、上記のように、通常は1〜3ビット程度である。
【0019】
<SALC>
SALCの構成例を図2に示す。図2からわかるように、この実施形態によるSALC1は、2系統のデータ入力端D1i、D2iおよび2系統のデータ出力端D1o、D2oと、1系統のリバースデータ入力端Riおよびリバースデータ出力端Roとを有し、前段(図の左側)から後段(図の右側)へ2系統のデータを出力するための順方向ラインと、後段から前段へデータをフィードバックするための逆方向ラインとが形成されている。
以後の説明では、データ出力端D1oから出力されるライン上のデータを「出力データ」、データ出力端D2oから出力されるライン上のデータを「参照データ」、リバースデータ出力端Roから出力(フィードバック)されるライン上のデータを「リバースデータ」とする。
SALC1において、後述するシリアル演算パイプラインを構成する他のSALCとの同期をとるため、出力データはデータラッチ回路11でラッチされ、参照データはリファレンスラッチ回路12でラッチされ、リバースデータはリバースラッチ回路12でラッチされる。
【0020】
SALC1は、また、インストラクション入力端CONから入力されるインストラクションの内容をデコードし、デコード結果に応じた処理を実行するとともに、実行結果を出力するラインの選定等を行うためのデコーダ10を有する。処理の例としては、例えば、四則演算、論理演算のような演算処理のほか、パス制御、ラッチ制御、条件付命令等の制御処理が挙げられる。デコーダ10は、また、前段から受け取ったデータが後段の方向に向かう順方向ラインと、後段から受け取ったデータが前段の方向に向かう逆方向ラインとの選択も行う。他の複数のSALC1のデコーダとの協働によって、マクロ命令の実行を行うことができる。
【0021】
デコーダ10には、上記の演算等を容易にするための種々のラッチ回路、すなわち、シフトラッチ回路14と、コントロールラッチ回路15と、キャリーラッチ回路16とが接続されている。
シフトラッチ回路14は、出力データのラインよりも参照データのラインが所定時間だけ遅れるようにするために、参照データをラッチし、例えば演算の際に次の桁でこれを出力するように動作する。キャリーラッチ回路15は、演算結果のキャリーを次の桁の演算時までラッチする。コントロールラッチ回路15は、出力データ、参照データ、リバースデータの出力タイミングをコントロールするコントロールデータをデコーダ10から出力の指示が出されるまでラッチする。
【0022】
以上のように構成されるSALC1では、デコーダ10によって順方向と逆方向の入れ替えができるため、複数のSALC1をカスケード接続してシリアル演算パイプラインを構築した場合に、順方向ラインと逆方向ラインとを適宜セレクトしてフレキシブルなデータレンジで論理演算を行うことができる。
また、乗算器や除算器、積和演算器、フロート演算器(指数・仮数を分けて演算し、それらの結果を互いに反映させる)などを容易に構築できるようになる。
【0023】
<SALP>
次に、上記のSALC1を用いたシリアル演算パイプラインの実施形態を説明する。
図3は、複数のSALC1をカスケード接続してなるシリアル演算パイプライン(Serial - ALPipeline、以下、「SALP」と称する)の構成例を示した図である。SALP2は、様々な多ビット演算命令を単純なシリアル命令の組み合わせで実現するものである。
なお、1パスで論理演算を完了させる場合、SALC1の連結数は、加算器では1以上あれば済むが、乗算器では、桁数分のSALC1が必要となる。さらに、多項式演算などを行わせる場合は、同時演算分やデータラッチ分(これらは共通化できる場合がある)が必要である。
【0024】
多項式を実現する場合は、SALP2を図4のように、SALC1の出力を数段前のSALC1のデータ入力端にフィードバックすればよい。これにより、前に演算した結果と新たに投入するデータ間で、論理演算ができるようになり、各々の中間値(入出力間の中間のデータ)同士を演算させるなどの複雑な多項式を1パスで演算することができるようになる。
【0025】
SALP2では、複数のSALC1の協働によって種々のマクロ命令を実行することができる。この場合の動作例を具体的に説明する。ここでは、単純な例として、4ビット乗算(Multiplier)の例を挙げる。
【0026】
図5〜図7は、4つのSALC1をカスケード接続したSALP2における各SALC1の状態とそのときのデータの内容を示した図である。
4ビット乗算は、図5(a)の0サイクルで最初のデータが入力され、1クロック毎に次のデータの入力・インストラクションのデコード・論理演算・ラッチ・出力が行われた後、図7(p)の16サイクル目で完結する。図中、個々のSALC1のうち面積が拾い部分はデコーダ10であり、デコーダ10の上部はキャリーラッチ回路16であり、デコーダ10の下部左側はシフトラッチ回路14、下部右側はコントロールラッチ回路15である。各々、空白になっている部分および破線部分にはデータ等が存在しないことを表している。0,A0〜A3,B0〜B3は演算対象データ、SM0〜SM7は演算結果データである。デコーダ10の部分に記入されている文字はインストラクションであり、「SET」はデータセット(data set:シフトラッチ回路14、コントロールラッチ回路15へのデータ格納)、「THR」はスルー(through:データを格納せず、そのまま通過させる)、「ADS」はデータ加算&シフト(add&shift)を表している。「carry」はキャリーラッチ回路16にラッチされるキャリービットを表している。
【0027】
最初のサイクル(0サイクル)で最初のデータ(0,A0)が初段のSALC1に入力され、デコーダ10でインストラクション解読および論理演算がなされた後(スルーを含む)、演算結果データ(スルーを含む)が後段のSALC1に出力される。この動作をすべてのSALC1に共通のクロックタイミングで同時に入力されるインストラクションに従って繰り返し、最終的に4ビット乗算の結果が最終段のSALC1からSM1〜SM7として出力される。
【0028】
マクロ命令の中には、フロート加算(Float Add)のような特殊な演算形態をとるものもある。この場合は、各SALC1に入力するインストラクションを変えるだけで、容易にそれを実現することができる。因みに、フロート加算において用いるインストラクションは、上記のADSのほか、FSUB(subtract for float)、SBS(subtract & set)、CCHG(controled change)、CSFT(controled shift)、INV(inverse)、REV(reverse)、SFT(shift)、OR、SUB(substract&envset)、NSUB(substract&RESET)を用いる。なお、上述したインストラクションの種類は例示であって、その他にもデコーダ10で実行可能な処理の種類に応じて任意に選定することができる。
【0029】
本実施形態のSALP2は、SALC1を基本構成とし、その連結状態を適宜変えながらフレキシブルなデータレンジで論理演算を行うことができるので、データレンジに比例した処理性能を実現することができる(例えば、8ビット演算は16ビット演算の倍の性能)。また、入出力間の中間データなどのビットを膨らませ,精度を保つことができるようになる。また、処理途上の上位・下位ビットを削除することで,データの質に合わせ効率的な有効桁数を持てるようになる。さらに、指数,仮数を別処理することで、フロート(float)演算が可能となる。
上述したように、SALP2では、パラレル演算パイプラインに比べてスループットがデータ幅分の1となるが、演算器面積もその分少ない。スループットが減少した分をパイプラインの並列度に割り振れば、原理的に(制御を考えなければ)コストは変わらない。その上、パイプ各ステージは短くなるため、その分を高速化できる。
【0030】
本実施形態のSALP2では、割り算、飽和演算、積和演算、多項式など、ほとんどの論理演算を実行することができる。単演算子としてのコストパフォーマンスをカスケード接続の演算器と比較すると、1要素の演算に対する比較では、スループットがデータ幅分の1であるためコスト上昇を伴うように見えるが、多量なデータに対する演算では、演算素子を並列に割り振ることによって同一コストとなる。また、クロック間のロジックは、単位処理サイズ(例えば1〜3ビット)毎で切ることができ、また、いわゆるファンアウトが非常に小さいので、周波数を大幅に上げることができる。また、都合のいいことに、パイプラインの先頭に、非常に小さい構成のクロスバを接続することができる。これにより、演算要素の並列ラインの判定、パイプライン末尾ラインのビット判定を非常に小さい構成で実現することができる。アドレス計算、ブランチの条件を算出する等のスカラ処理、処理領域が小領域でパラメータがその領域ごとに変化するような処理に対しては、領域をバインドすることによって実現することができる。
そのため、このようなSALP2を複数用いることにより、効率的な論理演算を行う演算装置を構成することができる。
【0031】
<演算装置>
図8は、32個のSALC(図1に示したSALC1)をカスケード接続したSALP2を256個含んでなる演算装置の構成図である。
各SALP2は、例えば外部コントローラ、あるいはネットワーク等と接続されるシリアルクロスバ(SCB)3に対して、並列に接続されている。SCB3は、アドレスデコーダと複数のクロスバスイッチとを有し、小面積で256ラインの交換を行うもので、外部コントローラ等からのバスのアドレス投入(コントロールフェーズ)とデータ投入(データフェーズ)の2フェーズで、所望のラインにデータを分配することができる。
【0032】
256個の各々のSALP2には、インストラクションコントローラ(iCON)4からn行m列のインストラクションの集合であるインストラクションアレイが入力され、このインストラクションアレイによって、論理演算およびデータの入出力ラインがそれぞれ独立に制御されるようになっている。
インストラクションアレイは、すべてのSALP2に共通内容のものを同時に入力してもよく、個々のSALP2のアドレスを指定したうえで共通内容のインストラクションアレイを同時に入力してもよく、個々のSALP2に個別的に個別内容のインストラクションアレイを入力してもよい。
iCON4は、インストラクションアレイを列毎にm回、各SALP2の個々のSALC宛に出力するとともにパイプラインが後段にn回移行する際に、実行済みのインストラクションを減ずる。
【0033】
このことを、1つのSALP2の場合の例を挙げた図9により説明する。
図9の左側に破線ブロックで示されているインストラクションアレイは、iCON4(図8参照)のメモリに保持されており、1クロック毎に、破線ブロックの右列のインストラクションから順次読み出されてSALP2のSALCに入力される。先頭のインストラクションが実行されると、そのインストラクションが1つ削除されて後段のSALCに入力され、前段のSALCには、次の列のインストラクションのすべてが入力される。これをインストラクションがなくなるまで繰り返す。
インストラクションアレイには、フェッチやデータループを埋め込むことができる。この場合には、従来技術において説明した複雑なDFGを1パスで記述することができるようになり、演算パイプライン動作の制御形態を簡略化させることができる。
【0034】
次に、この演算装置の動作例を説明する。
ここでは、一例として、ある一つのSALP2を用いて図10(a)に示す「1010」(Aデータ)×「1100」(Bデータ)+「00101101」(Cデータ)の乗算および加算を行う場合の例を挙げる。
出力される演算結果データは「11000101」となるのであるが、その演算過程が特徴的なので、最初のサイクルから演算結果データが出力されるまでの過程を図示して説明する。
用意されるデータは、図10(b)のように、2段に並べられ、その右側から順次演算装置(SALP2)に入力される。
なお、データサイズを合わせるために、データ取得時にMSBを4回取得し、これをAデータの先頭に付加する。この付加したデータは、演算結果には影響を及ぼさないものである。図10(b)右側のデータ説明において「intermediate data」は、演算過程で使用するいわゆる中間データであり、これも演算結果に影響を及ぼさないものである。
【0035】
インストラクションアレイは、図10(c)のようなものが用意される。
この例において乗算と加算に使用するインストラクションは、「SET」(データセット)、「ADS」(加算およびシフト)、「THR」の3種類である。
「SET」は、シフトラッチ回路14に参照データ(下段のデータ入力端に入力されたデータ)、コントロールラッチ回路15に出力データ(上段のデータ入力端に入力されたデータ)、キャリーラッチ回路16に「0」をセットすることを、その内容とする。
「ADS」はコントロールラッチ回路15にラッチされているデータが「0」の場合にはシフトのみ、それ以外は加算およびシフトを行うことを、その内容とする。シフトとは、参照データとしてシフトラッチ回路14にラッチされているデータを使用することをいう。加算のときには、キャリービットのチェンジが行われる(change carry)。
「THR]は入力されたデータ(出力データおよび参照データ)をそのまま後段に送ることを、その内容とする。
【0036】
最初のサイクルでは、図11に示すように、その先頭に「SET」が割り当てられた8個インストラクションの列が初段のSALCのインストラクション入力端CONに入力され、また、図10(b)の最右列の2つのデータがデータ入力端D1i、D2iの各々に入力される。インストラクションが「SET」なので、これらの2つのデータ「0」、「0」が、SALCのシフトラッチ回路14およびコントロールラッチ回路15にセットされる。キャリーラッチ回路16には、キャリービットが発生しないので、「0」がセットされる。
【0037】
2番目のサイクルでは、図12に示すように、次の列の2つのデータが初段のSALCのデータ入力端D1i、D2iの各々に入力され、前のサイクルで入力された2つのデータ「0」、「0」がデータラッチ回路11およびリファレンスラッチ回路12から2段目のSALCに入力されるようになる。インストラクションは、前のサイクルで初段のSALCに入力されたもののうち既に実行された「SET」が除かれたものが2段目のSALCに出力され、初段のSALCには、図10(c)の次の列のインストラクションが入力される。初段および2段目のSALCのインストラクションとも「THR」なので、それぞれ入力された2つのデータ「0」、「0」は、後段のSALCにそのまま送られる。
【0038】
3番目のサイクルでは、図13に示すように、さらに次の列の2つのデータが初段のSALCのデータ入力端D1i、D2iの各々に入力される。インストラクションは、初段のSALC以外のSALCには、2番目のサイクルで入力されたもののうち既に実行された分が除かれたものが入力され、初段のSALCには、図10(c)のさらに次の列のインストラクションが入力される。初段および3段目のSALCのインストラクションは「THR」、2段目のSALCのインストラクションは「SET」なので、2段目のSALCに入力されたデータ「0」、「0」は、そのSALCのシフトラッチ回路14およびコントロールラッチ回路15にセットされ、初段および3段目のSALCについては、それぞれ入力された2つのデータ「0」、「0」が後段のSALCにそのまま送られる。4番目のサイクルでの動作は図14のようになり、上記と同様の手順でSALCによる演算実行およびデータ移動が行われる。
【0039】
5番目のサイクルでは、図15に示すように、「ADS」のインストラクションが初段のSALCが入力される点以外は、上記と同様の手順でSALC間による演算実行およびデータ移動が行われる。初段のSALCでは、コントロールラッチ回路15にラッチされているデータが「0」なので、シフトのみとなる。6番目のサイクル(図16)〜11番目のサイクル(図22)についても、上記と同様の手順で、SALCによる演算実行およびデータ移動が行われる。
【0040】
12番目のサイクル(図23)からは、初段のSALCに入力されるデータがなくなり、前段のSALC(図23の場合は初段のSALC)のデータラッチ回路11およびリファレンスラッチ回路12にラッチされているデータが後段のSALC(図23の場合は2段目のSALC)に入力されるようになる。インストラクションについては、上記と同様、実行された分が削除されて、後段のSALCに入力される。最終段のSALCのデータラッチ回路11にラッチされているデータが最終演算結果を表すデータのLSBとなる。
【0041】
13番目のサイクル(図24)から20番目のサイクル(図31)まで、上記の動作を繰り返し、それぞれ最終段のSALC1のデータラッチ回路11にラッチされているデータを取り出すことにより、図31の上段に示される最終演算結果が得られる。
【0042】
このように、本実施形態の演算装置では、フィードバック機能付きのSALCが複数段カスケード接続されたSALP2をSCB3に対して複数ライン並列に接続し、個々のSALCによる演算動作をiCON4からのインストラクションアレイによって個別的に制御できるようにしたので、多種多様な論理演算(四則演算およびその組合せ、飽和演算、積和演算、多項式等)を共通のハードウエアによって容易且つフレキシブルに実現することができる。そのため、論理演算の用途が変わったときでもコストの増加を伴わずにそれに対応することができる。
【0043】
また、個々のSALC1がフィードバック機能を有しているので(ひいては、SALP2がそのような機能を有しているので)、様々なデータサイズに対して突発的かつ爆発的な演算量を伴う複雑な処理フローを実現する汎用的なシリアル演算パイプラインを容易に構築することができる。
【0044】
また、インストラクションアレイの中に、データの並び、その実行手順等を任意に組み込むことができるので、データパスを単純(一直線)にすることができる利点がある。
【0045】
上記の演算装置は、入出力データに対してインストラクションの量が相対的に多い論理演算に対しては、特に有効なツールとなり得る。この演算装置は、例えばテクスチャマッピングのような複雑な演算を何らのハードウエアを代えずに実施することができる。この場合、テクスチャが1フラグメントに収まらない場合は、周囲フラグメントが複数回投入される。
【0046】
演算装置は、また、複数の関数を定義したルックアップテーブルと、アドレスサイクル分のスループットでルックアップテーブルの内容を書き換える機能とを有し、様々な関数を多重に演算することもできる。
【0047】
【発明の効果】
以上の説明から明らかなように、本発明によれば、様々なデータサイズに対して突発的かつ爆発的な演算量を伴う複雑な処理フローを実現する汎用的なシリアル演算パイプラインを構築することができる。
【図面の簡単な説明】
【図1】 本発明の原理を示す図で、(a)は1つの16ビット演算器、(b)は16個の1ビット演算器の例を示す。
【図2】本発明の一実施形態による算術論理演算回路(SALC)の構成図。
【図3】本発明の一実施形態によるシリアル演算パイプライン(SALP)の構成図。
【図4】多項式を実行するときのSALPの構成例を示した図。
【図5】(a)〜(f)はシリアル演算パイプラインの動作の一例を示す説明図。
【図6】(g)〜(l)はシリアル演算パイプラインの動作の一例を示す説明図。
【図7】(m)〜(p)はシリアル演算パイプラインの動作の一例を示す説明図。
【図8】本発明の演算装置の一実施形態を表す構成図。
【図9】本発明の演算装置に含まれるシリアル演算パイプライン(SALP)の動作概要図。
【図10】(a)は本発明の演算装置の動作例を説明するための論理演算式、(b)は入力するデータ列の構造説明図、(c)は入力するインストラクションアレイの構造説明図。
【図11】本発明の演算装置の動作状態説明図(最初のサイクル)。
【図12】本発明の演算装置の動作状態説明図(2番目のサイクル)。
【図13】本発明の演算装置の動作状態説明図(3番目のサイクル)。
【図14】本発明の演算装置の動作状態説明図(4番目のサイクル)。
【図15】本発明の演算装置の動作状態説明図(5番目のサイクル)。
【図16】本発明の演算装置の動作状態説明図(6番目のサイクル)。
【図17】本発明の演算装置の動作状態説明図(7番目のサイクル)。
【図18】本発明の演算装置の動作状態説明図(8番目のサイクル)。
【図19】本発明の演算装置の動作状態説明図(9番目のサイクル)。
【図20】本発明の演算装置の動作状態説明図(10番目のサイクル)。
【図21】本発明の演算装置の動作状態説明図(11番目のサイクル)。
【図22】本発明の演算装置の動作状態説明図(12番目のサイクル)。
【図23】本発明の演算装置の動作状態説明図(13番目のサイクル)。
【図24】本発明の演算装置の動作状態説明図(14番目のサイクル)。
【図25】本発明の演算装置の動作状態説明図(15番目のサイクル)。
【図26】本発明の演算装置の動作状態説明図(16番目のサイクル)。
【図27】本発明の演算装置の動作状態説明図(17番目のサイクル)。
【図28】本発明の演算装置の動作状態説明図(18番目のサイクル)。
【図29】本発明の演算装置の動作状態説明図(19番目のサイクル)。
【図30】本発明の演算装置の動作状態説明図(20番目のサイクル)。
【図31】本発明の演算装置の動作状態説明図(21番目のサイクル)。
【符号の説明】
1 算術論理演算回路(SALC)
10 デコーダ
11 データラッチ回路
12 リファレンスラッチ回路
13 リバースラッチ回路
14 シフトラッチ回路
15 コントロールラッチ回路
16 キャリーラッチ回路
2 シリアル演算パイプライン(SALP)
3 シリアル・クロスバ(SCB)
4 インストラクションコントローラ(iCON)
Claims (13)
- 各々独立に制御され他の算術論理演算回路と同時に動作可能な複数の算術論理演算回路をカスケード接続して成るシリアル演算パイプラインであって、
前記複数の算術論理演算回路の全部又は一部が、後段へデータを出力するための第1ラインと、前段へデータをフィードバックするための第2ラインと、各ライン上のデータをラッチするラッチ回路とを有しており、
前記複数の算術論理演算回路の各々が、外部から入力されたインストラクションの内容に応じた演算を含む処理を実行し、その実行結果を表すデータを所望のライン宛に出力するデコーダを有しており、
前記第1ラインが、第1の出力データおよび第2の出力データを後段に出力するための一対のラインであり、
前記ラッチ回路が、前記第1の出力データをラッチする第1のデータラッチ回路と、前記第2の出力データをラッチする第2のデータラッチ回路と、前記デコーダによる演算の結果生じるキャリーを次の桁の演算のためにラッチするキャリーラッチ回路と、前記第1の出力データおよび前記第2の出力データの一方を所定期間遅延させて他方との参照を可能にするシフトラッチ回路と、を含む、
シリアル演算パイプライン。 - 前記ラッチ回路が、さらに、前段にフィードバックするリバースデータをラッチするリバースラッチ回路と、前記第1および第2のデータラッチ回路および前記リバースラッチ回路にラッチされているデータの演算を制御するコントロールデータをラッチするコントロールラッチ回路とを含むことを特徴とする、
請求項1記載のシリアル演算パイプライン。 - 前記デコーダにより処理されるデータが、単位処理サイズのデータであることを特徴とする、請求項1記載のシリアル演算パイプライン。
- 前記単位処理サイズが、前記複数の算術論理演算回路の動作タイミングを定める一つのクロックで処理可能な最低ビット長ないし同等のビット長であることを特徴とする、
請求項3記載のシリアル演算パイプライン。 - 前記第1ラインが前段から受け取ったデータないしそれに基づく演算結果を後段に出力するための順方向ラインであり、前記第2ラインが後段から受け取ったデータないしそれに基づく演算結果を前段に出力するための逆方向ラインであることを特徴とする、請求項1ないし4のいずれかの項記載のシリアル演算パイプライン。
- 複数系統のデータ入出力ラインを切替接続する切替接続手段と、この切替接続手段に対して並列に接続された複数のシリアル演算パイプラインと、外部から入力された前記複数のシリアル演算パイプライン宛のインストラクションを受け付けるインストラクション受付機構とを備え、
前記複数のシリアル演算パイプラインの各々は、他の算術論理演算回路と同時に動作可能な複数の算術論理演算回路をカスケード接続して構成されたシリアル演算パイプラインであり、
前記複数の算術論理演算回路の各々は、前段から受け取ったデータないしそれに基づく演算結果を後段に出力するための順方向ラインと、後段から受け取ったデータないしそれに基づく演算結果を前段にフィードバックするための逆方向ラインと、入力された前記インストラクションに応じた処理を実行し実行結果を所望のラインに出力するデコーダと、他の算術論理演算回路との間で各ライン上のデータ出力の同期をとるためのラッチ回路とを有するものであり、
前記複数の算術論理演算回路の各々のデコーダにおける順方向ライン上のデータおよび逆方向ライン上のデータが単位処理サイズのデータである、
演算装置。 - n行m列の前記インストラクションの集合であるインストラクションアレイを保持し、このインストラクションアレイを列毎にm回前記複数の算術論理演算回路宛に出力するとともにパイプラインが後段に1段ずつn回移行させる際に、実行済みのインストラクションを1段毎に1つ減ずるコントローラをさらに備えてなる、
請求項6記載の演算装置。 - 前記インストラクションアレイには、1パスで演算を実行するための演算手順が定められている、
請求項7記載の演算装置。 - 複数系統のデータ入出力ラインを切替接続する切替接続手段と、この切替接続手段に対して並列に接続された複数のシリアル演算パイプラインと、外部から入力された前記複数のシリアル演算パイプライン宛のインストラクションを受け付けるインストラクション受付機構とを備え、
前記複数のシリアル演算パイプラインの各々は、他の算術論理演算回路と同時に動作可能な複数の算術論理演算回路をカスケード接続して構成されたシリアル演算パイプラインであり、
前記複数の算術論理演算回路の各々は、前段から受け取ったデータないしそれに基づく演算結果を後段に出力するための順方向ラインと、後段から受け取ったデータないしそれに基づく演算結果を前段にフィードバックするための逆方向ラインと、入力された前記インストラクションに応じた処理を実行し実行結果を所望のラインに出力するデコーダと、他の算術論理演算回路との間で各ライン上のデータ出力の同期をとるためのラッチ回路とを有するものであり、
前記順方向ラインが、第1の出力データおよび第2の出力データを後段に出力するための一対のライン、前記逆方向ラインがリバースデータを出力するラインであり、
前記複数の算術論理演算回路の各々のラッチ回路が、後段に出力する第1の出力データをラッチする第1のデータラッチ回路と、
後段に出力する第2の出力データをラッチする第2のデータラッチ回路と、
前段に出力するデータをラッチするリバースラッチ回路と、
演算結果のキャリーを次の桁の演算のためにラッチするキャリーラッチ回路と、
前記第1の出力データおよび前記第2の出力データの一方を所定期間遅延させて他方との参照を可能にするシフトラッチ回路と、を含むことを特徴とする、演算装置。 - 前記切替接続手段、前記複数のシリアル演算パイプライン、および前記インストラクション受付機構が一つの半導体デバイスの中に組み込まれていることを特徴とする、
請求項6記載の演算装置。 - シリアル演算パイプラインの構成要素となるカスケード接続可能な算術論理演算回路であって、前記シリアル演算パイプラインの前段から受け取ったデータないしそれに基づく演算結果を後段に出力するための1又は複数の順方向ラインと、後段から受け取ったデータないしそれに基づく演算結果を前段にフィードバックするための逆方向ラインと、外部から入力されたインストラクションに応じた処理を実行し実行結果を表すデータを所望のラインに出力するデコーダと、他の算術論理演算回路との間で各ライン上のデータ出力のタイミングを同期させるためのラッチ回路とを備え、
前記順方向ラインが、第1の出力データおよび第2の出力データを出力する一対のライン、前記逆方向ラインがリバースデータを一つの出力するラインであり、
前記ラッチ回路が、前記第1の出力データをラッチする第1のデータラッチ回路と、前記第2の出力データをラッチする第2のデータラッチ回路と、前記リバースデータをラッチするリバースラッチ回路と、前記デコーダによる演算結果のキャリーを次の桁の演算のためにラッチするキャリーラッチ回路と、第1の出力データおよび第2の出力データの一方を所定期間遅延させて他方との参照を可能にするシフトラッチ回路と、前記第1および第2のデータラッチ回路およびリバースラッチ回路にラッチされているデータの演算を制御するためのコントロールデータをラッチするコントロールラッチ回路とを含んで成る、算術論理演算回路。 - 後段にデータを出力するための1又は複数の第1ラインと、前段にデータをフィードバックするための第2ラインとを有し、シリアル演算を行うとともに演算結果を表すデータの出力対象となるラインを各々独立に選択することができる算術論理演算回路を複数段カスケード接続してシリアル演算パイプラインを構築し、前記シリアル演算パイプラインに接続された外部コントローラで、前記複数の算術論理演算回路による1パスによる同時実行の手順を反映したm行n列のインストラクションの集合であるインストラクションアレイを列毎にm回前記複数の算術論理演算回路宛に個別に出力するとともに、パイプラインが後段に1段ずつn回移行させる際に、実行済みのインストラクションを1段毎に1つ減ずる制御を行うことを特徴とする、シリアル演算パイプラインによる演算方法。
- 前記複数の算術論理演算回路の各々のデコーダにおける各ライン上のデータが、単位処理サイズのデータであることを特徴とする、請求項12記載の演算方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002099202A JP3719509B2 (ja) | 2002-04-01 | 2002-04-01 | シリアル演算パイプライン、演算装置、算術論理演算回路およびシリアル演算パイプラインによる演算方法 |
EP03006757A EP1351134A3 (en) | 2002-04-01 | 2003-03-25 | Superpipelined arithmetic-logic unit with feedback |
US10/404,182 US7171535B2 (en) | 2002-04-01 | 2003-04-01 | Serial operation pipeline, arithmetic device, arithmetic-logic circuit and operation method using the serial operation pipeline |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002099202A JP3719509B2 (ja) | 2002-04-01 | 2002-04-01 | シリアル演算パイプライン、演算装置、算術論理演算回路およびシリアル演算パイプラインによる演算方法 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2003296096A JP2003296096A (ja) | 2003-10-17 |
JP2003296096A5 JP2003296096A5 (ja) | 2005-04-07 |
JP3719509B2 true JP3719509B2 (ja) | 2005-11-24 |
Family
ID=28035903
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002099202A Expired - Fee Related JP3719509B2 (ja) | 2002-04-01 | 2002-04-01 | シリアル演算パイプライン、演算装置、算術論理演算回路およびシリアル演算パイプラインによる演算方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7171535B2 (ja) |
EP (1) | EP1351134A3 (ja) |
JP (1) | JP3719509B2 (ja) |
Families Citing this family (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1669868A4 (en) * | 2003-09-30 | 2009-03-25 | Sanyo Electric Co | PROCESSOR AND INTEGRATED CIRCUIT WITH CONVERTIBLE CIRCUIT AND PROCESSING PROCESS THEREFORE |
JP4478050B2 (ja) * | 2005-03-18 | 2010-06-09 | 株式会社リコー | Simd型マイクロプロセッサ及びデータ処理方法 |
JP2006287675A (ja) * | 2005-04-01 | 2006-10-19 | Renesas Technology Corp | 半導体集積回路 |
US7681017B2 (en) * | 2005-11-01 | 2010-03-16 | Lsi Corporation | Pseudo pipeline and pseudo pipelined SDRAM controller |
TWI361379B (en) * | 2006-02-06 | 2012-04-01 | Via Tech Inc | Dual mode floating point multiply accumulate unit |
US8656143B2 (en) | 2006-03-13 | 2014-02-18 | Laurence H. Cooke | Variable clocked heterogeneous serial array processor |
US20070226455A1 (en) * | 2006-03-13 | 2007-09-27 | Cooke Laurence H | Variable clocked heterogeneous serial array processor |
JP2007249843A (ja) * | 2006-03-17 | 2007-09-27 | Fujitsu Ltd | 再構成可能な演算装置 |
WO2007143278A2 (en) | 2006-04-12 | 2007-12-13 | Soft Machines, Inc. | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
US7870556B2 (en) * | 2006-05-16 | 2011-01-11 | Ab Initio Technology Llc | Managing computing resources in graph-based computations |
US8346831B1 (en) * | 2006-07-25 | 2013-01-01 | Vivante Corporation | Systems and methods for computing mathematical functions |
US20080126472A1 (en) * | 2006-08-28 | 2008-05-29 | Tableau, Llc | Computer communication |
US20080052525A1 (en) * | 2006-08-28 | 2008-02-28 | Tableau, Llc | Password recovery |
US20080052429A1 (en) * | 2006-08-28 | 2008-02-28 | Tableau, Llc | Off-board computational resources |
US20080052490A1 (en) * | 2006-08-28 | 2008-02-28 | Tableau, Llc | Computational resource array |
EP2527972A3 (en) | 2006-11-14 | 2014-08-06 | Soft Machines, Inc. | Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes |
JP5089776B2 (ja) * | 2007-09-11 | 2012-12-05 | コア ロジック,インコーポレイテッド | 浮動小数点演算のための再構成アレイプロセッサ |
EP2366144B1 (en) | 2008-10-15 | 2015-09-30 | Hyperion Core, Inc. | Sequential processor comprising an alu array |
JP5590849B2 (ja) * | 2009-10-08 | 2014-09-17 | キヤノン株式会社 | 複数の処理モジュールを有する並列処理回路を備えるデータ処理装置、その制御装置、およびその制御方法、プログラム |
CN103250131B (zh) | 2010-09-17 | 2015-12-16 | 索夫特机械公司 | 包括用于早期远分支预测的影子缓存的单周期多分支预测 |
US9842005B2 (en) | 2011-03-25 | 2017-12-12 | Intel Corporation | Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines |
KR101966712B1 (ko) | 2011-03-25 | 2019-04-09 | 인텔 코포레이션 | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트 |
WO2012135031A2 (en) | 2011-03-25 | 2012-10-04 | Soft Machines, Inc. | Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines |
US9442772B2 (en) | 2011-05-20 | 2016-09-13 | Soft Machines Inc. | Global and local interconnect structure comprising routing matrix to support the execution of instruction sequences by a plurality of engines |
EP2710481B1 (en) | 2011-05-20 | 2021-02-17 | Intel Corporation | Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines |
CN104040491B (zh) | 2011-11-22 | 2018-06-12 | 英特尔公司 | 微处理器加速的代码优化器 |
KR101842550B1 (ko) | 2011-11-22 | 2018-03-28 | 소프트 머신즈, 인크. | 다중 엔진 마이크로프로세서용 가속 코드 최적화기 |
KR20150130510A (ko) | 2013-03-15 | 2015-11-23 | 소프트 머신즈, 인크. | 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법 |
US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
WO2014151018A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for executing multithreaded instructions grouped onto blocks |
US10140138B2 (en) | 2013-03-15 | 2018-11-27 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
WO2014150806A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register view data structure by using register template snapshots |
US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
US9569216B2 (en) | 2013-03-15 | 2017-02-14 | Soft Machines, Inc. | Method for populating a source view data structure by using register template snapshots |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
WO2014150991A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for implementing a reduced size register view data structure in a microprocessor |
US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction view data structure by using register template snapshots |
WO2014150971A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for dependency broadcasting through a block organized source view data structure |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
US9747104B2 (en) * | 2014-05-12 | 2017-08-29 | Qualcomm Incorporated | Utilizing pipeline registers as intermediate storage |
JP2017174291A (ja) | 2016-03-25 | 2017-09-28 | ルネサスエレクトロニクス株式会社 | 画像処理装置、画像処理方法、及び自動車制御装置 |
US11340875B2 (en) * | 2020-06-02 | 2022-05-24 | Sri International | Searchable storage of sequential application programs |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5179734A (en) * | 1984-03-02 | 1993-01-12 | Texas Instruments Incorporated | Threaded interpretive data processor |
JPH0767063B2 (ja) * | 1990-01-23 | 1995-07-19 | ヤマハ株式会社 | デジタル信号処理回路 |
US5038311A (en) * | 1990-08-10 | 1991-08-06 | General Electric Company | Pipelined fast fourier transform processor |
JP3096387B2 (ja) * | 1994-01-28 | 2000-10-10 | 三菱電機株式会社 | 数値演算処理装置 |
JPH08137819A (ja) * | 1994-11-04 | 1996-05-31 | Hitachi Ltd | 接続制御装置 |
US6044166A (en) * | 1995-01-17 | 2000-03-28 | Sarnoff Corporation | Parallel-pipelined image processing system |
JPH10240558A (ja) * | 1997-02-24 | 1998-09-11 | Hitachi Ltd | データ処理装置の制御方法、データ処理装置、電子線描画装置 |
-
2002
- 2002-04-01 JP JP2002099202A patent/JP3719509B2/ja not_active Expired - Fee Related
-
2003
- 2003-03-25 EP EP03006757A patent/EP1351134A3/en not_active Withdrawn
- 2003-04-01 US US10/404,182 patent/US7171535B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2003296096A (ja) | 2003-10-17 |
EP1351134A3 (en) | 2007-11-07 |
US20030200237A1 (en) | 2003-10-23 |
US7171535B2 (en) | 2007-01-30 |
EP1351134A2 (en) | 2003-10-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3719509B2 (ja) | シリアル演算パイプライン、演算装置、算術論理演算回路およびシリアル演算パイプラインによる演算方法 | |
US8271571B2 (en) | Microprocessor | |
Meher | Hardware-efficient systolization of DA-based calculation of finite digital convolution | |
US5946361A (en) | Viterbi decoding method and circuit with accelerated back-tracing and efficient path metric calculation | |
US20060242617A1 (en) | Automatic generation of streaming processor architectures | |
US5633897A (en) | Digital signal processor optimized for decoding a signal encoded in accordance with a Viterbi algorithm | |
JPH11261426A (ja) | 自動ビタビトレースバックビット格納機能を有する並列算術論理プロセッサ | |
CN109144469B (zh) | 流水线结构神经网络矩阵运算架构及方法 | |
US7827226B2 (en) | Hybrid arithmetic logic unit | |
EP0920137A1 (en) | Single-cycle, soft decision, compare-select operation using dual-add processor | |
JPH08123769A (ja) | 並列プロセッサ | |
Feng et al. | A high performance FPGA implementation of 256-bit elliptic curve cryptography processor over GF (p) | |
US10387118B2 (en) | Arithmetic operation unit and method of controlling arithmetic operation unit | |
CN110609804A (zh) | 半导体器件和控制半导体器件的方法 | |
EP1936492A1 (en) | SIMD processor with reduction unit | |
JP4413052B2 (ja) | データフローグラフ処理装置および処理装置 | |
US7007059B1 (en) | Fast pipelined adder/subtractor using increment/decrement function with reduced register utilization | |
Yeh et al. | Efficient pipelined multi-operand adders with high throughput and low latency: designs and applications | |
JP3144859B2 (ja) | 算術論理演算装置 | |
JP2000081966A (ja) | 演算装置 | |
JP2004220377A (ja) | リコンフィギュラブル回路とそれを利用可能な集積回路装置およびデータ変換装置 | |
JP4408727B2 (ja) | ディジタル回路 | |
KR100900790B1 (ko) | 재구성형 프로세서 연산 방법 및 장치 | |
US6844756B1 (en) | Configurable dedicated logic in PLDs | |
WO2008077803A1 (en) | Simd processor with reduction unit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040513 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040513 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050225 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050301 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050427 |
|
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: 20050830 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050831 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040513 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080916 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090916 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090916 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100916 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100916 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110916 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120916 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130916 Year of fee payment: 8 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |