JP3851989B2 - 命令発行速度を加速するプロセッサ・コントローラ - Google Patents

命令発行速度を加速するプロセッサ・コントローラ Download PDF

Info

Publication number
JP3851989B2
JP3851989B2 JP55012598A JP55012598A JP3851989B2 JP 3851989 B2 JP3851989 B2 JP 3851989B2 JP 55012598 A JP55012598 A JP 55012598A JP 55012598 A JP55012598 A JP 55012598A JP 3851989 B2 JP3851989 B2 JP 3851989B2
Authority
JP
Japan
Prior art keywords
data processor
instruction
instructions
controller
data
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
JP55012598A
Other languages
English (en)
Other versions
JP2001525966A (ja
JP2001525966A5 (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 JP2001525966A publication Critical patent/JP2001525966A/ja
Publication of JP2001525966A5 publication Critical patent/JP2001525966A5/ja
Application granted granted Critical
Publication of JP3851989B2 publication Critical patent/JP3851989B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions
    • 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/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • G06F9/38873Iterative single instructions for multiple data lanes [SIMD]

Landscapes

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

Description

本発明は、概して、コンピュータ技術に於ける並列処理、より具体的には、単一命令多重データ(SIMD)データ・プロセッサ等の並列式コンピュータのために命令を生成するためのシステム、装置及び方法に関する。
並列処理は、大半の挑戦的な科学及び工学的問題の計算要求に答えるべくますます利用されている。というのは、そのような問題に必要とされる計算性能は、通常、汎用の直列式コンピュータによって提供されるよりも数桁大きなものであるからである。並列処理の発達によって、画像処理、人工神経回路網、気象予報、及び原子炉の計算を含む広い範囲の用途が開かれている。
異なるモードの演算をサポートするために異なる並列式コンピュータアーキテクチャが使用されるが、非常に一般的には、並列式コンピュータのコアコンポーネントには、それぞれが単数又は複数のデータメモリと、オペランドレジスタとを備えた複数の処理素子(PE)からなるネットワークが含まれ、前記各処理素子は、相互接続網(IN)を介して相互接続されている。
並列処理に対する最も広く研究されているアプローチの一つは、アレイ・プロセッサに関するものであり、これは、多重データストリームプロセッサ処理される単一命令ストリーム(単一命令多重データ、又はSIMDプロセッサとして知られている)に於いて一般的に実施されている。SIMDプロセッサの基本処理ユニットは、処理素子(PE)、メモリ素子(M)、制御ユニット(CU)そして相互接続網(IN)である。その作動に於いて、前記CUは、プログラムから命令シーケンスを取り出し、これをデコードし、次に、すべてのPEを、それらに対して制御信号を放送することによって同期させる。これに対して、一つの共通の命令ストリームの制御下で作動するPEは、同じ命令を、但し、それぞれがそれ自身のメモリから取り出した異なるデータに対して実行する。前記相互接続網は、処理装置とメモリとの間のデータ通信を容易にする。従って、SIMDプロセッサに於ける並列化のキーは、一つの命令が、単数ではなく複数のオペランドに対して同時操作にすることにある。
標準的な構成に於いて、SIMDプロセッサは、ホストコンピュータに取り付けられ、このホストコンピュータは、ユーザの観点から見れば、フロントエンドシステムである。ホストコンピュータの役割は、コンパイルを実行すること、プログラムをロードすること、入出力(I/O)処理を行うこと、そして、その他のオペレーティング・システム機能を実行することである。
本出願人によって製造販売されているSIMDプロセッサの一例である、AspexTMASPTM(連想ストリングプロセッサ:Associative String Processor)データ・プロセッサは、典型的な機器構成に於いて、並列で、1000ないし100,000のデータアイテムを処理することができる。前記ASPの現行の実施形態の主要な特徴は、以下である。
○ 8.1mm × 9.3mmサイズの一つのデバイス上に256個の処理素子から14.5mm × 13.5mmのサイズの一つのデバイス上に1152個の処理素子。
○ 毎秒20M−50Mの命令(20−50MIPS)速度で作動する80−82ビット幅のDPCインターフェース。
○ 40−100MHzのクロック速度。
既に実施されているASPは、32ビットのコントロールフィールドと、32ビットのデータフィールドと12ビットのアクティビティフィールドとから成る76ビット幅の命令によって制御される。このASPは、受取られた各命令に対して、2つ(逐次的に実行される)の演算を実行する。これをサポートするために、前記コントロールフィールドは、更に、副命令フィールドA,Bに分割されている。前記ASPへのデータI/Oは、高速チャンネルを使用するが、それは、又、制御ユニットに対して32ビット幅の値に戻すことができ、制御ユニットによってモニタ可能な4本のステータス線を有する。
前記ASPは、ビット逐次(一度に1ビット)式又はビット並列(一度に多数のビット)式にAPEのデータに対して演算を行うことができる。演算は、一つのオペランドがすべてのAPEで同じ値である場合には、スカラ−ベクトル演算、その他すべての場合にはベクトル−ベクトル演算、として分類される。ベクトル−ベクトル演算の場合、制御ユニットは、命令中のオペランドアドレスを供給しなければならず、これらは通常、ビット逐次式に行われる。スカラ−ベクトル演算の場合、制御ユニットは、共通の、即ち、スカラな、オペランドの値と、命令中の第2オペランドのアドレスとを供給する必要があり、これらは、ビット逐次式又は並列式に行われる。両方の場合に於いて、その演算結果のアドレスも、命令中に含まれている必要がある。
SIMDプロセッサを制御する目的の為に、アーキテクチャの範囲は、二つのケース、即ち、スタンドアローンとコプロセッサ、とによって限定されているものと見なすことが出来る。その他のアーキテクチャは、これら二つの基本的ケースのバリエーション、複合又は多重構成である。スタンドアローン、コプロセッサ及び中間アーキテクチャに共通する制御ユニットは、データ・プロセッサ・コントローラ(DPC)である。後に明らかになるように、DPCは制御ステートメントを実行し、SIMDプロセッサに対して命令を発行する。
添付の図面の図1に図示されているスタンドアローン構成は、二つのブロック、即ち、データを操作するSIMDプロセッサと、SIMDプロセッサに命令を発行し、これによてこのSIMDプロセッサの動作を制御するDPC、とから成る。スタンドアローン構成の特徴は、データI/OがSIMDプロセッサに直接につながっていることにある。オプションの外部命令及びステータスチェックは、DPCを出入りする。
図2に図示されているコプロセッサ構成は、DPCを介して、より一般的な単一命令ストリームで単一データを演算するプロセッサ(単一命令単一データ又はSISDプロセッサとして知られている)として具体化されたより一般的なプロセッサに接続されている。前記DPCとSIMDプロセッサとの組み合わせは、SISDプロセッサに対するコプロセッサと見なすことができる。
SISDプロセッサには、その複雑性に於いて、ARM等のプロセッサコアから、インテル社のペンティアムやサン社のSPARC等のマイクロプロセッサ、更に、IBM/Apple PCやSun/DECワークステーション(すべて認証商標)等の完全な機械まである。
SISDによる所与のプログラムの実行中、システムの組織は、SISDが或る種のタスクを、それらのパラメータと共に、コプロセッサに委任するように構成される。DPCとSIMDとの間に於けるこのタスクの分割は、スタンドアローンの場合も同じである。コプロセッサがその割り当てられたタスクを実行している間、SISDプロセッサはプログラムの実行を続け、その全体の結果として、プログラムステップは、そのプログラムの実行をSISDプロセッサのみに依存した場合よりも早く完了する。たとえば、画像処理アプリケーションに於いて、プログラムは、一つの画像のすべての画素を値Xで割るステートメントを含み、SISDプロセッサは、このステートメントと値Xの実行をコプロセッサに割り当てる。同様に、たとえば、そのプログラムの別の部分がその画像の二次元重畳を実行するならば、このタスクも、その実行をコプロセッサに割り当てられるであろう。
特に、DPCの主要な属性は以下の通りである。
○ SIMDプロセッサに対して、通常は毎秒20−100M命令の非常に高速で命令を供給する。
○ 通常、数百ビット幅のビット幅の大きな命令を生成する。
○ データプロセッサからのステータス情報を処理する。
現在に於いて、公知のDPCは、二つの大きなカテゴリ、(i)ダイレクトプロセッサドライブ、と(ii)カスタムマイクロ−コードシーケンサー、のいずれかに分類される。
ダイレクトマイクロプロセッサドライブは、データ・プロセッサ命令を生成し、アセンブルするために、プログラム内蔵マイクロプロセッサ又はデジタル信号プロセッサ(DSP)装置で実行されるソフトウェアを使用した多目的で単純なDPCソリューションを提供する。図3は、そのようなソリューションを図示している。前記SIMDプロセッサのM−ビット幅の命令とN−ビット幅のステータス/演算結果インターフェースは、Pビット幅のインターフェースへのレジスタを介してマイクロプロセッサ/DSPのアドレス/データバス又はI/Oチャンネルに接続され、一般に、Mおよび/又はNは、Pよりも大きい。その使用に於いて、ソフトウェアプログラムは、それに一度にPビット書き込むことによって各データ・プロセッサ命令を組み立て、すべてのMビットが書き込まれると、その命令が発行される。同様に、N−ビットステータス/演算結果データがセグメント単位で読まれる。
上記ダイレクトマイクロプロセッサドライブ法の汎用性は、マイクロプロセッサ/DSPによるデータ・プロセッサ命令の直接生成から来るものである。しかしながら、その主要な欠点は、それぞれのM−ビット命令の命令を書き込む必要による命令生成速度が遅いことにあり、最新のマイクロプロセッサ/DSPでさえもその書き込み速度は比較的遅い。その結果、DSPの動作速度は、SIMDが動作可能な速度よりも遅れ、従って、SIMDプロセッサの処理能力は利用されないままとなる。
次にカスタムマイクロ−コードシーケンサーDPCに言及すると、これらは、完全なアプリケーション、又は、一つのアプリケーションを構築するためにアセンブル可能な単純なタスクを実行するマイクロルーチンのライブラリによってマイクロコード化された、カスタムマイクロ−コードシーケンサー又はビット−スライスシーケンサーアーキテクチャを使用している。前記マイクロコードは、通常、ハードワイヤードされているか、若しくは、アプリケーションの実行前にダウンロードされるが、或る種のDPCは、アプリケーションが実行させている間にそのマイクロコードを変更する機構を備えている。
図4は、単純化されたマイクロ−コードDPCソリューションを図示している。これは、4つのブロック、即ち、1)マイクロ−コードシーケンサー、2)演算プロセッサユニット(APU)、3)データ・プロセッサ命令マルチプレクサ(DPMX)及び4)命令バッファ、から成る。これら各ユニットを説明すると、
1)マイクロ−コードシーケンサーは、それがベースデータ・プロセッサ命令を生成するという意味に於いて、DPCを制御する。該シーケンサーは、前記アドレス生成ユニットによってアドレスされるマイクロ−コードを保持する非常に幅広で高速のメモリを備え、その出力はレジスタされ、次に、シーケンサーのアドレス生成ユニット及び他のDPCブロックを制御するか、若しくは、データ・プロセッサ命令を含むマイクロ−オーダフィールドに分割される。前記アドレス生成ユニットは、呼、ブランチ、決定型及び非決定型ループを実行するための専用ロジックを有する。それは、DPC又はSIMDプロセッサの状態に基づいて決定を行うことを可能にするテスト入力を有し、更に、ブランチアドレス又はループカウント値をロードするためのデータ入力を有する。
2)前記APUは、一般的な算術演算を行う。これには、前記命令バッファからのパラメータ、SIMDプロセッサからの演算結果、前記マイクロ−コードシーケンサーからのリテラル、をロードすることができる。その演算結果は、シーケンサーを制御するため、若しくは、データ・プロセッサ命令をパラメタライズするために使用される。しばしば、APUは、データ・プロセッサ命令のオペランド/演算結果アドレスフィールドの生成と、データ・プロセッサがスカラ−ベクトル演算を行っている時には、そのスカラ値を操作する機能を有する。実際には、DPCは、それぞれが特定の一つの機能又は複数組の機能に割り当てられた、プライベートデータ経路を備えた多数のAPUを備えたものとされる。たとえば、典型的なマイクロ−コードシーケンサーDPCは、特定の機能専用とされた4ないし6のAPUと、非常に高速のランダムアクセススタチックメモリから成る200ビット幅のマイクロ−コード記憶装置とを有する。
3)前記DPMXは、前記マイクロ−コードシーケンサーによって作り出されたベースデータ・プロセッサ命令をパラメタライズし、その命令のいくつかの部分をAPUレジスタから取り出された値と置換する。
4)前記命令バッファは、DPCの外部制御手段を提供し、そのパラメータと共にタスク請求が、バッファから取り出され、演算結果とステータス情報がバッファに格納される。バッファは、単純なレジスタ、小型メモリ、又は先入れ先出し(FIFO)メモリとして構成することができる。スタンドアローンの場合、命令バッファはオプションである。
カスタムマイクロ−コードシーケンサーアーキテクチャを備えたDPCの一例は、AspexTMMicrosystems LAC−1001TMカードである。このカードは、50ナノ秒毎に80ビットデータ命令を生成する。これは、340mm × 367mmのサイズで、5ボルトで12アンペアの消費電力である。
カスタムマイクロ−コードシーケンサーの主要な利点は、その動作速度である。しかしながら、これは、そのフレキシビリティの欠如と、回路の複雑性とによって相殺されてしまう。このようなDPCソリューションは、それを行うようにマイクロコード化されたタスクのみしか行うことが出来ず、マイクロ−コードのフレキシビリティは、それをアプリケーション特定にし、その有用性を限定するハードウエアの機能とデータ経路とによって限定される。更に、回路の複雑性によって、DPCは、大きく、高価で電力消費量が大きいという欠点を持つ。
回路の複雑性から特に生じる欠点は、数多くの望ましくないノックオン作用を有する。先ず、その回路設計は精密なものでなければならず、従って、多数のコンポーネントを製造、組み立て、コード化、テストしなければならない。必然的に、その回路は比較的大きなものとなり(典型的には、約1250cm2)、従って、PCベース又はOEM仕様に不適な「ビッグ・ボックス(“big box”)装置が必要となる。別の重要な問題は信頼性であり、複雑で多数のコンポーネントから成る回路では、これは常に問題となる。
これらの要因全部によって、コストが増加することは明白であり、これにより、この技術の利用可能性が劇的に限定されてしまう。たとえば、回路コストによって、3D医療用撮像システムは、100万ポンド1000万ポンドになり、それでも、まだ理想的なリアルタイム性能基準を満たすことができない。
このような背景に対して、本発明は、カスタムマイクロ−コードシーケンサー方式の性能と、ダイレクトマイクロプロセッサドライブ方式のフレキシビリティとを、ダイレクトドライブ方式のサイズ及びコスト、又はそれらに近いサイズ、コストで達成するDPCを提供することを目的とする。
この目的の為に、本発明は、高速、即ち、その命令生成バンド幅を増加する回路に対して、低速で生成されたマイクロプロセッサ命令を供給する。ここで「速度」という用語は、所与の時間中に生成される命令の数を意味し、「命令生成バンド幅」という用語は、所与の時間中に生成される命令ビットの数を意味する。
本発明は、スタンドアローンの場合とコプロセッサの場合との両方に適用可能である。スタンドアローンのケースに於いて、DPCが、データ・プロセッサ命令を含むプログラムの制御ステートメントを実行し、これらデータ・プロセッサ命令を逓倍し、その逓倍されたデータ・プロセッサ命令を、データを操作するデータ・プロセッサに送る。逓倍化データ・プロセッサ命令の生成速度は、プログラムのステートメントの実行速度よりも速い
コプロセッサのケースに於いては、SISDプロセッサがプログラムを実行し、いくつかのタスクを、DPCとデータ・プロセッサから成るコプロセッサに委任する。DPCは、データ・プロセッサ命令を逓倍し、それらをデータ・プロセッサに対して、DPCがSISDプロセッサから前記データ・プロセッサ命令を受取る速度よりも速い速度で送る。
本発明は、データ・プロセッサ命令ストリーム又は、典型的なアプリケーションによって作り出される命令ブロックの二つの特性を利用することができる。第1に、個々の命令と命令ブロックとを繰り返すことが可能である。第2に、命令ストリームを圧縮することができる。データ・プロセッサ命令ストリーム中の大半のループが、各反復中に於いて、そのオペランド/演算結果アドレス又は(スカラ−ベクトル演算の場合)スカラ値のいずれかが変化することを認識することによって、性能を更に増すことが可能である。
前記データ・プロセッサ命令には、逓倍回路の作動を制御するための特定の命令を含ませることができる。このようにすることにより、前記回路に、その回路が実行することが要求されうる特定のタスクセットをプリロードする必要がなくなる。むしろ、データ・プロセッサ命令に特定の命令を含ませることによって、DPCによって生成される命令ストリームを、ラン・タイムで、必要とされる特定の逓倍プロセスに関するなんら特定の知識無しで、データ・プロセッサに適したフォーマットに逓倍することが可能となる。従って、本発明のデータ・プロセッサ・コントローラは、非常にフレキシブルで、しかも、高価となりうる複雑な追加回路を必要としない。
本発明の逓倍化の側面の別の見方は、逓倍回路によって受取られるデータ・プロセッサ命令が、拡張されることによって多数化されるということである。この特徴によって、データ・プロセッサ命令生成器と、逓倍回路と、そのデータ・プロセッサ自身との間の物理的データ経路を、最大効率で完全に使用することが可能となり、各データ経路はその最適能力で作動する。加えて、前記データ・プロセッサ命令を複合フォーマットで生成し、これらがデータ・プロセッサに非複合フォーマットで到達する前に、前記逓倍回路によって分離することができる。従って、データ・プロセッサ命令生成器は、それら経路の内の最も遅い経路によってその全体の性能が制限されること無く、比較的小さなバンド幅の経路に沿って前記逓倍回路へ、又、比較的大きなバンド幅の経路に沿って逓倍回路からデータ・プロセッサへ命令を出力することができる。
換言すると、本発明は、データ・プロセッサを制御するデータ・プロセッサ・コントローラであって、第1速度でデータ・プロセッサ命令を発行する第1プロセッサと、前記第1プロセッサによって発行された前記データ・プロセッサ命令を受取り、これらのデータ・プロセッサ命令を逓倍し、その逓倍化データを前記第1速度よりも速い第2速度で前記データ・プロセッサに送る多重化手段とを有する、ものを提供する。
その一態様に於いて、本発明は、データ・プロセッサ・コントローラであって、第1速度でデータ・プロセッサ命令を生成するための命令生成手段と、前記第1速度で前記データ・プロセッサ命令を受取り、かつ、これらの命令を逓倍し、その逓倍化された命令を、前記第1速度よりも速い第2速度で前記データ・プロセッサに転送するように構成された命令加速手段とを有するものを提供する。
同じ発明概念内に於いて、本発明は、更に、データ・プロセッサを制御するデータ・プロセッサ命令を逓倍するためのバンド幅逓倍器を含み、該バンド幅逓倍器は、命令を受取る入力手段と、前記入力手段によって受取られた命令に含まれるデータ・プロセッサ命令を逓倍するためのバンド幅逓倍手段とを有する。
本発明は、更に、データ・プロセッサを制御する方法にまで拡張され、この方法は、第1速度でデータ・プロセッサ命令を発行する工程と、前記データ・プロセッサ命令を読み取る工程と、前記データ・プロセッサ命令を逓倍する工程と、そして、前記第1速度よりも速い第2速度で前記逓倍化データ・プロセッサ命令を書き込む工程とを有する。
上述した本発明の要旨、又、その好適実施例に関する以下の記載は、添付の図面を参照して読まれることによってより良く理解されるであろう。本発明を例示する目的で、図面には、現在に於いて好適とされる実施例が図示されているが、本発明は、ここに開示された特定の構成に限定されるものではない、と理解される。
図中:
図1は、従来技術のスタンドアローンのケースを示すブロック図、
図2は、従来技術のコプロセッサのケースを示すブロック図、
図3は、従来技術のダイレクトマイクロプロセッサドライブデータ・プロセッサコプロセッサ(DPC)を示すブロック図、
図4は、従来技術のカスタムマイクロ−コードシーケンサーDPCを示すブロック図、
図5は、本発明の実施例に依るDPCアーキテクチャを示すブロック図、
図6は、図5に示したDPCに使用されるバンド幅逓倍器を示すブロック図、
図7は、図6に示したバンド幅逓倍器に使用されるブロック反復エンジンを示すブロック図、
図8は、本発明の別実施例に依るバンド幅逓倍器を示すブロック図、
図9は、本発明の更に別の実施例に依るDPCアーキテクチャを示すブロック図、
図10は、図9のDPCに使用されるバンド幅逓倍器を示すブロック図、そして
図11は、図10に示したバンド幅逓倍器に使用されるブロック反復エンジンを示すブロック図である。
図1−4は、従来技術を概観するのに導入部に於いて説明した。次に図5を参照して、これは、スタンドアローンのケースに於ける本発明の一好適実施例に依るデータ・プロセッサ・コントローラ(DPC)アーキテクチャを示している。このDPCアーキテクチャは、データ・プロセッサ505と、更に、マイクロプロセッサ501とバンド幅逓倍器503とから成るDPCとを有する。前記データ・プロセッサ505は、単一命令ストリーム多重データ(SIMD)プロセッサである。前記マイクロプロセッサ501は、デジタル信号プロセッサ(DSP)とすることができる。
コプロセッサのケースに於いて、前記DPCアーキテクチャは、更に、前記データ・プロセッサを制御するDPCに接続された単一命令単一データ(SISD)プロセッサを有する。実際には、前記SISDプロセッサとDPCの役割を果す一つのSISDプロセッサからシステムを構築することが可能であるが、SISDプロセッサが実行するべき多数のタスクを有して、前記バンド幅逓倍器に対して供給するのに十分な時間を費やすことが出来ない場合には、二つのSISDプロセッサ、即ち、一つはSISDプロセッサとして、他は、DPCマイクロプロセッサとして、を使用することになるであろう。
図5に図示されているように、前記データ・プロセッサのMビット幅命令507及びNビット幅ステータス/演算結果インターフェース509は、前記バンド幅逓倍器503を介して、マイクロプロセッサ501のアドレス/データバス又はI/Oチャンネル511へのPビット幅インターフェースに接続されている。一般に、Mおよび/又はNは、Pよりも大きなものとなる。
前記マイクロプロセッサ501内のプログラムは、データ・プロセッサ命令と、バンド幅逓倍器503のための制御情報とを組み合わせたM*ビット幅の命令を組み立て、これの組み合わせM*ビット幅命令を、一度にPビット、即ち、Pビット幅ワード、の圧縮フォーマットで前記バンド幅逓倍器503に書き込む。このように完全な圧縮された命令が書き込まれると、バンド幅逓倍器503は、それを使用して、データ・プロセッサ505に対してMビット幅命令列507を生成する。データ・プロセッサ505の前記Nビットステータス/演算結果509は、マイクロプロセッサ501によって一度にPビット読み取られる。
前記組み合わせM*ビット命令がループの各反復に対して異なるスカラ値を要求する前記データ・プロセッサ命令ストリーム中のループを表わすものである場合、前記マイクロプロセッサ501のソフトウェアプログラムは、更に、そのスカラ値の列をバンド幅逓倍器503に送らなければならない。この列も、又、一度にPビット書き込まれる。
図6は、図5に示したバンド幅逓倍器503の一好適実施例のブロック図である。バンド幅逓倍器503は、以下の5つの要素を有する。
1.マイクロプロセッサ501がバンド幅逓倍器503とデータ・プロセッサ505との回路に対して非同期的に動作することを可能にする入力FIFO601、
2.前記入力FIFO601から圧縮命令を読み出し、それらを圧縮解凍する命令取り出しエンジン(IFE)603、
3.一連の命令を反復するブロック反復エンジン(BRE)605、
4.個々の命令を反復する命令反復エンジン(IRE)607、そして
5.前記マイクロプロセッサ501と前記データ・プロセッサ505とに接続された出力バッファ609。
前記入力FIFO601には、前記マイクロプロセッサ501によって生成された圧縮組み合わせM*ビット命令を構成するPビット幅のワード列から成る一ブロックの情報と、それに関連するスカラデータ値がロードされる。各ワードは、それが前記命令のどの部分を示すものであるかを定義するタグとともに、前記入力FIFO601に格納される。このタグの値は、二つの方法で得ることができる。これは、前記マイクロプロセッサ501によって書き込まれたワードの一部とすることができる。或いは、それは、たとえば、前記マイクロプロセッサ501がそこに書き込みを行うアドレスから派生されるもの、等の前記ワードに対する追加、とすることができる。
単一のバッファの代りに入力FIFO601を使用することによって、前記バンド幅逓倍器503は、前記マイクロプロセッサ501に対して非同期的に作動することが可能となる。このことの具体的な利点は、マイクロプロセッサ501が、バンド幅逓倍器503が次の命令を生成し、ロードするべく、既にロードされた命令から長い列を生成している時間を利用することが出来ることにある。換言すると、前記FIFOは、パイプライン処理、即ち、バンド幅逓倍器503によるデータ・プロセッサ命令の生成と、マイクロプロセッサ501による命令の生成とローディングとの間の重複、を可能にする。
前記IFE603は、入力FIFO601から、P*ビット幅ワードの列、タグ付きPビット幅ワード、としての圧縮命令、を読み取る。次に、IFE603は、そのワードが命令のどのフィールドを表わすものであるかを確認するためにそのタグを使用することによって、その圧縮された命令を圧縮解凍する。この解凍圧縮プロセスの終わりに於いて特定されなかった、命令のフィールドは、そのデフォルト値か、若しくは、以前にロードされた値のいずれかにセットされる。データ・プロセッサループ中での使用のために提供されるすべてのスカラ値が、前記IFE603によって前記命令ストリームから分離され、前記スカラ書き込みFIFO611に格納される。
前記BRE605は、IFE603から圧縮解凍された命令を受取る。図7は、このBRE605の詳細を図示している。該BRE605は、IFE603から圧縮解凍済み命令を受け入れ、それらをバッファメモリ701に格納する。それは、このバッファメモリ701から、IRE607に命令を送り、オプションとして、命令中のいくつかのフィールドを、BREレジスタ703からの取り出された値と置換する。即ち、IRE607に一つの命令が送られた時、それは、バッファメモリ701から廃棄されるが、反復制御ロジック705は、複数の命令のブロック又は入れ子構造ブロックをバッファメモリ701内に保持することを可能にし、決定反復回数(即ち、FORループ)、又は、非決定反復回数(即ち、REPEATループ)を、IRE607に送られることを可能にする。データ・プロセッサ505とマイクロプロセッサ501からのステータス線707が、前記REPEATループを終端させるために使用される。
命令のオペランド/演算結果アドレスフィールドが、一つのブロックの各反復毎に変化することを可能にするべく、BRE605は、その値がマルチプレクサ705によってIRE607命令に多重化可能な、単数又は複数のレジスタ703を含む。BRE命令中のフィールドによって、これらのレジスタ703のプレロード、ポストインクリメント、ポストデクレメントが制御される。同じ命令に於いて、一つのレジスタを、ロードし、使用し、変更することが可能である。前記制御ロジック705は、ブロックの第2の次の反復で、レジスタ703のプレロードを禁止する。
ブロックの各反復についてスカラ値の変更を可能にするために、前記BRE605は、更に、前記スカラ書き込みFIFO611から取り出された値を、前記マルチプレクサ709を使用して、IRE607命令に多重化することもできる。
図6に戻って、前記IRE607は、BRE605からの命令を受け入れ、それから、ゼロ又はそれ以上の同じデータ・プロセッサ命令の列を生成する。制御ロジックによって、この列の長さを決定的なものにするか、もしくは、外部条件、典型的にはデータ・プロセッサステータスが有効になるまで、または有効な間、継続させることが可能である。IRE607は、BRE605から命令が入手可能でない時には、データ・プロセッサ505非作動命令を発行する。
それぞれの命令が多数の逐次的に実行される副命令に分割される、前記ASP等のデータ・プロセッサを制御する場合、前記IRE607を拡張して、各副命令が、全体の命令の各反復内に於いて、個々に反復されることを可能にしてもよい。
前記出力バッファ609は、前記マイクロプロセッサ501が、前記バンド幅逓倍器503のステータスを読み取るか、若しくは、前記データ・プロセッサ505からの演算結果又はステータスを読み取るための手段を提供する。制御ロジックによって、マイクロプロセッサ501は、前記データ・プロセッサ505と前記バンド幅逓倍器503と同期化することが可能である。前記出力バッファ609は、単純なレジスタ、小型メモリ又はFIFOとして構成可能である。
上述したバンド幅逓倍器の変形例が図8に図示されている。この実施例に於いて、前記IFE603は、ダイレクトメモリアクセスコントローラ(DMAC)を追加することによって拡張され、これによって、それに、メモリ801から、圧縮命令又はスカラデータ値を直接に取り出す能力が付与されている。これによって、マイクロプロセッサ501は、ブロックの詳細以外を、バンド幅逓倍器503にコードをロードする負担がなくなり、これにより、通常、マイクロプロセッサ901によって達成可能なものよりも、より速い持続入力命令速度が可能となる。
従って、本発明は以下を実現する。
○ データ・プロセッサ命令が、マイクロコード化されたルーチンを呼び出す代りに、マイクロプロセッサ又はDSP装置によって、ラン・タイムで生成されること、
○ データ・プロセッサ命令がマイクロプロセッサ又はDSP装置によって生成可能な速度を逓倍する回路が使用されていること、
○ 命令生成バンド幅を逓倍する技術。
本発明の主要な利点は次の通りである。
○ DPCプログラミングのフレキシビリティ。DPCの能力は、カスタムマイクロ−コードシーケンサー設計によって提供されるファシリティに限定されない。
○ サイズとパワー。この新しいDPCは、従来世代のものの1248平方ミリと60Wの消費電力に比較して、60平方ミリ以下の有効面積で、200ミリワットの消費電力のシリコンデバイスとして容易に実施することが可能である。
○ コストと信頼性。この新しいDPCは、数10ポンドの単一のシリコン・デバイスとして実施することができる。そのような単一デバイスソリューションは、数百ものデバイスを含む従来のソリューションよりも遥かに信頼性が高いものとなる。
これらの利点によって、多数の新しい用途領域が開かれる。本発明によって、大量並列処理の、“big box”カスタム装置からカードベースのOEMマーケット(たとえば、VME及びPCカードベースのシステムビルダー)への移行(move)が可能となる。新しいDPCの小さなサイズと必要電力とによって、複数のデータ・プロセッサをPC及びワークステーションコンピュータのコアプロセッサに一体化することが可能になるであろう。これによって、更に、そのようなデスクトップ・コンピュータが新たな用途に応じることが可能となるであろう。その一例は、3D医療用撮像レンダリング市場である。これらの用途をサポート可能な現在のシステムは、100万ないし1000万ポンドするが、適切なリアルタイム性能を提供することができない。一体化された複数のデータ・プロセッサを備えたデスクトップ・コンピュータは、1万ないし10万ポンドのリアルタイム性能を提供することが出来るであろう。最後に、この新しいDPCのプログラミングフレキシビリティと、必要なサイズと消費電力が小さいことによって、DPCとデータ・プロセッサとを一体化することが可能となる。この一体化により、デバイスから大きなバンド幅のデータ・プロセッサ命令を送る必要がなくすことによって、新たなレベルのデータ・プロセッサ性能が可能となるであろう。
前記DPCプログラミングフレキシビリティは、前記マイクロプロセッサがラン・タイムでデータ・プロセッサ命令を間接的に生成し、そのハードウエアが割り当てられたタスクを実行することしかできないプリロードされたマイクロ−コードルーチンを単純に呼び出すことに限定されないことから達成されるものである。
サイズと消費電力の低減は、次によって達成される。
それぞれが単純な制御の多数のステージへの明確な分離を備えたバンド幅逓倍器の単純性。BREでさえも、改造RAMベースのFIFOとマルチプレクサといくつかのローディング可能なレジスタとによって実現可能である。これは、大半のDPC構成の心臓部の完全なマイクロ−コードシーケンサーよりも遥かに単純である。
○ より複雑なDPC機能を果すマイクロプロセッサのフレキシビリティと能力、従って、特定の機能のための専用のハードウエアソリューションがなくなる。
○ IFEによる命令のリニアな取り出し。これによって、ブロック/バーストモード転送が可能となり、更にこれによりより小型のメモリ技術を使用することが可能となる。
全体のシステムコストは、DPCの小さなサイズのみならず、DPCが、ブロック/バースト転送を使用してより安価なメモリデバイスとインターフェースすることが出来、これによって、高速のスタチックメモリに対する必要性がなくなること、とによって低減される。
例1
以下は、図5−7に図示されたDPCシステムを使用した例である。特定の用途のためにデータ・プロセッサ505に対して供給する必要がある命令列は以下の通りである。
{A,{B}32,C,D}16
ここで、A,B,C及びDは、データ・プロセッサ命令であり、{...}Nは、前記中かっこ内の命令をN回繰り返すことを意味する。Aは、オペランド1のアドレスによってパラメタライズされ、Cは、オペランド2のアドレスによってパラメタライズされ、Dは、その演算結果によってパラメタライズされる。
マイクロプロセッサ501によって生成される必要がある各非圧縮命令は、以下のフォーマットを有する。
<データ・プロセッサ命令><IRE制御><BRE制御><BREパラメータ>
ここで、前記データ・プロセッサ命令は、32ビットのフィールド(a,b&c)を有すると仮定され、bとcとは、BREパラメータによって置き換えられるか、もしくは、デフォルト値をとる。IRE制御、BRE制御及びBREパラメータは、追加の64ビットを必要とすると仮定される。従って、各非圧縮命令は160ビットを必要とする。
前記マイクロプロセッサ501によって生成される必要がある各非圧縮命令は以下の通りである。
A(a,b,c)&ブロックの開始&BRE制御&オペランド1のBREパラメータ
B(a,b,c)&命令を32回反復
C(a,b,c)&BRE制御&オペランド2のBREパラメータ
D(a,b,そ
)&ブロックを16回反復&BRE制御&演算結果のBREパラメータ
前記マイクロプロセッサ501によって圧縮された時、これらの命令はたとえば次のようになる。
A(a)&ブロックの開始&BRE制御&オペランド1のBREパラメータ(96ビット)
B(a)&命令を32回反復(64ビット)
C(a,c)&BRE制御&オペランド2のBREパラメータ(128ビット)
D(a)&ブロックを16回反復&BRE制御&演算結果のBREパラメータ(96ビット)
従って、560(=(1+1*32+1+1)*16)96ビットデータ・プロセッサ命令を生成するために、マイクロプロセッサ501は、バンド幅逓倍器503に対して、12(=3+2+4+3)の32ビット幅ワードから成るブロック命令を書き込まなければならない。
上記12の32ビットワードは、前記入力FIFOによって追加されたタグと共に、入力FIFO601を介してIFE603によって受け入れられる。IFE603は、これらのワードを、前記タグを利用して圧縮解凍し、4つの160ビット幅命令を生成する。従って、このステージで、命令生成バンド幅に於いて4*160/12*32=1.67倍、加速される。
前記圧縮解凍された4つの160ビット幅命令は、次に、BRE605によって受け入れられ、これは、これらの圧縮解凍命令に含まれている前記BRE制御情報とBREパラメータとを使用して4つの128ビット幅命令のブロックを16回繰り返す。従って、このステージで(16**128*/(4*160)=12.8倍にまで、加速される。
前記BRE605によって発行された4つの128ビット幅命令は、IRE607によって受け入れられ、これは、その受取られた4つの128ビット幅命令に含まれるIRE制御情報を利用して前記データ・プロセッサ505に35(=1+1*32+1+1)の96ビット幅の命令を発行する。従って、このステージで、(35*96/(4*128)=6.65倍にまで加速される。
結局、この例に於いては、前記バンド幅逓倍器503は、140(=1.67*12.8*6.56)倍以上の加速を達成した。
この例は、又、前記入力FIFO601の目的を際立たせている。もしも上記命令が、単独で生成されるならば、前記ループを解する第1回目で、IFE603とIRE607とに依る加速のみが得られるが、この前に、類似の命令列があるならば、BRE605は、プレローディングされているはずであり、フル加速が得られるであろう。
例2
μLACTM(micro low-level associative string processor controllerマイクロ低レベル連想ストリングプロセッサ・コントローラ)は、前述したように、そのASP(連想ストリングプロセッサ)データ・プロセッサ用として本出願人によって設計、製造された本発明の一実施例である。このμLACは、毎33ナノ秒毎に一つのデータ・プロセッサ命令を生成する。入力FIFO1001及び出力バッファ1013を除き、μLACは、200ミリワットを消費する有効面積65cm2の一つの1μmシリコンデバイスとして構成される。
図9に図示されているように、前記μLAC903は、マイクロプロセッサ901とASP905との間に接続されている。図10は、μLAC903のブロック図を示している。μLAC903に関する以下の簡略化された記載に於いて、従来IREと呼ばれていたものは、副命令がASP905に対で発行されること、そして、出力バッファ1013がスカラ読み出しFIFO1015によって補足されているという事実を反映するべく、今回、スロット反復エンジン(SRE)1007と呼称される。更に、前記スカラ読み出しFIFO1011は、IFE1003から供給されるのではなく、前記マイクロプロセッサ9001に直接に接続され、このFIFO1011から取り出された値は、BRE1005によってではなく、SRE1007によって前記SRE命令にマージされる。
前記入力FIFO1001を介して、前記μLAC命令は、それを32ビット幅のワード列に分割することによってローディングされ、各ワードを16のアドレスの一つに書き込む。書き込まれたデータ値と使用されたアドレスとは、36ビットの値へと結合され、これがFIFO1001に格納される。前記アドレスは、そのデータ値が命令のどの部分を表わすかを定義するタグを生成するのに使用される。
前記IFE1003は、前記入力FIFO1001又はライブラリメモリ1009からの命令を読み出し、圧縮解凍する。圧縮解凍は、前記4ビットタグを使用して、他の32ビットがその命令のどのフィールドを表わすものであるかを同定することによって行われる。該圧縮解凍プロセスの最後に於いて特定されなかった命令のフィールドは、そのデフォルト値、又は、前にロードされた時の値にセットされる。前記IFE1003は、2つの主要なタイプの命令、即ち、BRE及びライブラリメモリ、を扱う。BRE命令は、BRE1005に送られる。ライブラリメモリ命令は、IFE1003に対して、FIFO1001の代りに、ライブラリメモリ1009から命令ブロックを取り出すように指示する。BRE1005は、これらの圧縮解凍された命令を受取る。
図11は、前記BRE1005の詳細を図示している。IFE1003からの命令は、バッファメモリ1101に格納される。このバッファメモリ1101は、通常は、各命令を、それが出力された時に破棄するが、同時に、命令ブロックを保持し、繰り返し反復することを許容する改造FIFOである。このために使用される方法は、ブロックマーカレジスタ1103である。このレジスタは、ノーマルのFIFO動作モードでは、読み出しポインタ1105に従う。一つのブロックの始まりをマークするために、前記ブロックマーカ1103は、そのブロックが始まるアドレスを示す状態で、凍結される。一つのブロックを反復するためには、前記読み出しポインタ1105は、前記ブロックマーカ1103からローディングされる。前記書き込みポインタ1107とブロックマーカ1103とを比較することによって、FIFO−フル状態を検出することができる。前記読み出し及び書き取りポインタを比較することによって、FIFO−エンプティ状態を検出することができる。
前記バッファメモリ1101の出力は下記のフィールドに分割される。
<ASP及びSRE命令><BRE制御><BREパラメータ>
前記BRE制御フィールドは、制御ロジック1109を駆動する。前記制御ロジック1109は、命令ブロックを前記バッファメモリ内に保持し、決定反復回数(即ち、FORループ)又は非決定反復回数(即ち、REPEATループ)反復することを可能にする。前記ASP905とマイクロプロセッサ901とからの外部ステータス線1111を使用して前記REPEATループを終端させる。前記BREパラメータは、FORループの数を決定する。前記制御ロジック1109は、更に、前記sfa1,sfa2,sfa3及びsraレジスタの、プレローディング、ポストインクレメンティング、及びポストデクレメンティングを制御し、ブロックの第2とその後の反復時に於けるプレローディングを禁止する。
四つのレジスタ1113全部が、BREパラメータフィールドから取り出された値でローディングされる。sfa1,sfa2及びsfa3レジスタからの出力は、マルチプレクサ1115によって前記ASP命令のオペランド/演算結果アドレスフィールドに多重化される。前記sraレジスタの出力は、BREパラメータフィールドからの一つのビットをASP命令に多重化するのに使用される。
図10に戻って、前記SRE1007は、前記BRE1005から命令を受取り、それから、ASP命令列を生成する。制御ロジックによって、この列の長さを決定的なものにするか、若しくは、何らかの条件が有効になるまで、又は、有効である間、継続することを可能にする。この条件は、たとえば、ASPステータス信号の状態、あるいは、前記スカラ書き込みFIFO1011のエンプティフラグ、又は、前記スカラ読み出しFIFO1015のフルフラッグとすることができる。前記SRE1007は、BRE1005から命令が入手不能である時には、ASP905に対して非作動命令を発行する。
この生成されたASP命令のデータ及びアクティビティフィールドは、変わらないが、その制御フィールドは以下の列のいずれかでありうる。
{a},{b}
又は
{{a},b}
ここで、{}は、ゼロ回又はそれ以上の回数反復することを意味し、abは、そこから列が生成されたASP制御対である。実際には、ゼロ長列は生成されず、その代りに、非作動ASP制御対が生成される。前記μLACのこの実施例は、次の列はサポートしない。
{a,{b}}
或いは、より一般的なケースとして
{{a},{b}}
前記SRE1007は、前記スカラ書き込みFIFO1011から取り出された値を、ASP命令のデータフィールドに多重化することもできる。
前記スカラ読み出しFIFO1015は、前記マイクロプロセッサ901が、ASP905から演算結果を非同期的に読み取るための手段を提供する。
前記出力バッファ1013は、前記マイクロプロセッサ901が、前記μLAC903のステータス又はASP905のステータスを読み込むための手段を提供する。
前記出力バッファ1013の制御ロジックによって、μLAC903が、すべての命令のローディングをその読み出しの前に完了しているようにすることによって、ASPステータスの読み出しが完了することを許容する前に、マイクロプロセッサ901とASP905とを同期化する。
以下は、μLACのマイクロプロセッサインターフェースの完全な記載である。
μLACインターフェースに対するマイクロプロセッサは、下記のレジスタから成る。
Figure 0003851989
Figure 0003851989
すべてのレジスタは、どのビットフィールドが使用されているかに拘わらず、32ビット幅のワードとしてアクセスされる。
BRE命令ワードを書き込む時、BreIW1に書き込みを行うことによって、その命令はBRE1005に伝送される。もしも、最後の命令が伝送されてからなんらその他の命令ワードが書き込まれなかった場合には、それらのワードに対してデフォルト値が使用される。BREパラメータワードは、その最後に書き込まれた値を保持する。
ライブラリメモリ呼び出し、ロード、又はダンプを開始する時、そのデータのビット3からビット18が、開始アドレスとして使用され、ビット19から31は、ブロック長として使用される。ブロック長は、1..8191の範囲でなければならない。ライブラリメモリ操作は、以下のように定義される。
呼び出し LM =>BRE
ロード ISM=>LM
ダンプ LM =>ISM
ライブラリメモリロードが開始された時、アドレス0から8のレジスタの一つに書き込まれた次のNのワード(ここで、Nはブロック長)は、それが書き込まれたアドレスとともにライブラリメモリ1009に格納される。これらのNのワードが書き込まれた時、通常の動作が再開される。
ライブラリメモリダンプが開始されると、Nのワードをアドレス0のレジスタ0から読み取る必要があり、これは、ライブラリメモリ1009に格納されたデータに対応する。それぞれのワードが読み取られた後、アドレス1のレジスタを読み取ることができ、これは、そのワードに関連するアドレスを含む。
ライブラリメモリ呼び出しが開始されると、Nのワードを、前記ライブラリメモリから取り出し、これらが関連するアドレスに書き込まれる。ライブラリメモリ呼び出しは、1レベルの深さに入れ子構造にすることができる。尚、ライブラリメモリ呼び出しには、2クロックサイクルが必要であり、その一つで、前記開始アドレスとブロックカウント値を書き込み、他方で、ライブラリメモリ1009のパイプライン遅延を許容する。
データを前記スカラ書き込みFIFO1011に書き込む時、4つのタグビットを、各ワードに関連付けることができる。これらは、データが書き込まれたアドレスに応じてセットされる。これらのタグビットの使用法はまだ定義されていない。
前記スカラ読み出しFIFO1015からデータを読み取る時、各ワードがレジスタ16から読み取られた後、4つの関連するタグビットを、レジスタ17から読み取ることができる。
前記BREレジスタ制御ワードは、以下のように作成される。前記AGバス制御ワードAがビットパターン10xxxxxxxxxx01xx(InitSearchOrAddSerial,ClearSerial,InitWriteSerial,orInitReadに対応)を含む時、前記AGバスリテラルデータの上位16ビットが、BREレジスタ動作を制御するのに使用され、これらは、以下のフィールドに分割される。
Figure 0003851989
前記aSelフィールドは、どのBREレジスタが、aInc,aDec及びaLoadフィールドによって作用されるかを選択し、以下のように、レジスタコンテンツの命令ストリームへの多重化を制御する。
Figure 0003851989
前記bSelフィールドは、どのBREレジスタが、bInc,bDec及びbLoadフィールドによって作用されるかを選択し、以下のように、レジスタコンテンツの命令ストリームへの多重化を制御する。
Figure 0003851989
aLoad又はbLoadが真のとき、選択されたBREレジスタは、下記のBREパラメータがロードされる。
Figure 0003851989
ローディングは、レジスタのコンテンツがデータワードに多重化される前に行われ、これに対してインクレメンティングとデクレメンティングとは後で行われる。
前記srInvフィールドは、前記スカラレジスタの出力が、データ又は命令ワードに多重化される前に、逆転されることを可能にする。
前記BRE制御ワードは、下記のビットフィールドに分割される。
Figure 0003851989
前記ループ入口フラグはルーブの始まりを示し、ループ出口フラグはループの終わりを示す。これらは、共に、同じ命令中で起りうる。
前記ループカウンタロードソースは、以下の通りである。
Figure 0003851989
ループ出口条件は以下の通りである。
Figure 0003851989
前記ループカウンタは、ループの最初に於いて、選択された初期値をプリロードされ、そのループの1周毎にデクレメントされる。ループカウント値は、デクレメントされる前にテストされる。
BRE1005は、マッチ回答線のいずれかをテストする前に、ループの最後の命令が完了するのを待つ。これは、前記ループランデブフラグをテストする前に、ISMとループランデブを行う。
前記SRE制御ワードは下記のビットフィールドに分割される。
Figure 0003851989
前記反復モードは下記の通りである。
Figure 0003851989
m及びnの値は、下記のように、反復タイプによって選択される。
Figure 0003851989
尚、上記tr1又はtr2シフト制御が駆動される時、両方のAGバス制御ワードが影響される。
待ちソースは以下の通りである。
Figure 0003851989
もしも待ちが選択されると、その選択された待ち条件が満たされるまで、no−opsを命令ストリームに挿入する。これは、関連の命令が実行される前に行われる。
前記データ待ちソースを選択することによって、適切FIFOに対するデータの読み出し又は書き込みが行われる。データ読み出しの場合、これは、前記スカラ読み出しFIFO1015である。データ書き込みの場合、これは、下記のように、データソースによって選択される。
Figure 0003851989
三元書き込みデータのためのマスクビットは、適切なFIFO又は、リテラルデータのいずれかから取り出すことができる。これは、下記のように、データマスクによって選択される。
Figure 0003851989
前記LAC命名は以下の通りである。
Figure 0003851989
前記SRE及びAGバスステータスレジスタは、下記のビットから成る。
Figure 0003851989
本発明は、その必須特徴から逸脱することなく、その他の具体的態様で実施可能である。本発明について、本発明の精神及び範囲を示すものとして、上述した具体的記載ではなく、むしろ付随の請求項及びその他のここに開示された一般的記載が参照されるべきである。

Claims (50)

  1. データ・プロセッサ・コントローラであって、
    当該データ・プロセッサ・コントローラに接続されたデータ・プロセッサのためにデータ処理オペレーションを生成し、準備し、発行するためのデータ・プロセッサ・コントローラにおいて
    第1速度でデータ・プロセッサ命令を生成する命令生成手段と、
    前記第1速度で前記データ・プロセッサ命令を受取り、これらの命令を逓倍することによって前記データ・プロセッサ命令を準備し、その逓倍された命令を、前記第1速度よりも速い第2速度で前記データ・プロセッサに対して発行し、かつ、前記データ・プロセッサ命令の準備をそれらの発行から分離するように構成された命令加速手段と、を備え、
    ここで、前記命令加速手段は、前記命令生成手段からの前記データ・プロセッサ命令の受取と非同期に命令が反復された入れ子構成ブロックを発行し、同時に、前記逓倍された前記データ・プロセッサ命令として後に発行される他のタイプの前記データ・プロセッサ命令を準備するように構成され、
    前記命令加速手段は、前記命令加速手段を前記命令生成手段から非同期に動作可能とするために非干渉化するデカプラと、前記データ・プロセッサ命令の入れ子構成ブロックを格納するためのデータメモリとを有するデータ・プロセッサ・コントローラ
  2. 請求項1のデータ・プロセッサ・コントローラであって、前記命令加速手段は、前記命令生成手段で生成された前記データ・プロセッサ命令のバンド幅を増加するように構成されたバンド幅逓倍器であるデータ・プロセッサ・コントローラ
  3. 請求項1又は2のデータ・プロセッサ・コントローラであって、前記命令生成手段は、前記命令加速手段に対してブロック命令を書き込むように構成されているデータ・プロセッサ・コントローラ
  4. 請求項1〜3のいずれか一項のデータ・プロセッサ・コントローラであって、前記命令加速手段は、前記データ・プロセッサ命令の個々の命令を反復するように構成されているデータ・プロセッサ・コントローラ
  5. 請求項1〜4のいずれか一項のデータ・プロセッサ・コントローラであって、前記データ・プロセッサ命令は、前記命令加速手段の動作を制御するための命令を含むデータ・プロセッサ・コントローラ
  6. 請求項5のデータ・プロセッサ・コントローラであって、前記命令生成手段によって生成される前記データ・プロセッサ命令は、反復制御情報とパラメータとを含むデータ・プロセッサ・コントローラ
  7. 請求項1〜6のいずれか一項のデータ・プロセッサ・コントローラであって、前記命令加速手段の反復動作は、命令のブロックを、決定的回数又は非決定的回数反復するように構成されているデータ・プロセッサ・コントローラ
  8. 請求項1〜7のいずれか一項のデータ・プロセッサ・コントローラであって、前記命令加速手段の前記反復動作は、前記命令生成手段のステータスと、前記データ・プロセッサのステータスとに依存するように構成されているデータ・プロセッサ・コントローラ
  9. 請求項1〜8のいずれか一項のデータ・プロセッサ・コントローラであって、前記命令加速手段は、命令ブロックの各反復に異なるスカラ値を受取り、入力するように構成されているデータ・プロセッサ・コントローラ
  10. 請求項1〜9のいずれか一項のデータ・プロセッサ・コントローラであって、前記命令生成手段は、複合化フォーマットで前記データ・プロセッサ命令を生成するように構成され、前記命令加速手段は前記複合化フォーマットの前記データ・プロセッサ命令を非複合化フォーマットに分離するように構成されているデータ・プロセッサ・コントローラ
  11. 請求項1〜10のいずれか一項のデータ・プロセッサ・コントローラであって、前記命令生成手段は、前記データ・プロセッサ命令の圧縮ストリームを生成するように構成され、前記命令加速手段は前記命令ストリームを圧縮解凍するように構成されているデータ・プロセッサ・コントローラ
  12. 請求項11のデータ・プロセッサ・コントローラであって、前記命令加速手段は、圧縮解凍のためのアドレス生成タグを格納するように構成されているデータ・プロセッサ・コントローラ
  13. 請求項1〜12のいずれか一項のデータ・プロセッサ・コントローラであって、前記命令生成手段は、マイクロプロセッサ又はデジタル信号プロセッサであるデータ・プロセッサ・コントローラ
  14. 請求項1〜13のいずれか一項のデータ・プロセッサ・コントローラであって、前記命令生成手段、前記命令加速手段及び前記データ・プロセッサは、制御プロセッサによって委任される複数のタスクを取り扱うコプロセッサを構成するデータ・プロセッサ・コントローラ
  15. 請求項14のデータ・プロセッサ・コントローラであって、前記データ・プロセッサと前記制御プロセッサとは、一つのプロセッサに一体化されているデータ・プロセッサ・コントローラ。
  16. 請求項1〜15のいずれか一項のデータ・プロセッサ・コントローラであって、前記デカプラは、入力FIFOを含むデータ・プロセッサ・コントローラ
  17. 請求項1〜16のいずれか一項のデータ・プロセッサ・コントローラであって、前記命令加速手段は、命令をリニアに取り出すように構成された命令取り出しエンジンを含むデータ・プロセッサ・コントローラ
  18. データ・プロセッサ・コントローラであって、
    当該データ・プロセッサ・コントローラに接続されたデータ・プロセッサに対してデータ処理オペレーションを発行し、準備し、提供することによって、前記データ・プロセッサを制御するデータ・プロセッサ・コントローラにおいて
    第1速度でデータ・プロセッサ命令を発行する第1プロセッサと、
    前記第1プロセッサによって発行された前記データ・プロセッサ命令を受取り、これらデータ・プロセッサ命令を逓倍することによって前記データ・プロセッサに対する提供用に前記データ・プロセッサ命令を準備し、前記逓倍された前記データ・プロセッサ命令を、前記第1速度よりもい第2速度で前記データ・プロセッサに対して提供し、且つ、前記データ・プロセッサ命令の前記準備を前記逓倍された前記データ・プロセッサ命令の前記提供から分離する逓倍手段と、を備え、
    ここで、前記逓倍手段は、前記第1プロセッサからの前記データ・プロセッサ命令の受け取りと非同期に、命令が反復された入れ子構成ブロックを提供し、同時に、前記逓倍された前記データ・プロセッサ命令として後に発行される他のタイプの前記データ・プロセッサ命令を準備するように構成され、
    そして前記逓倍手段は、前記逓倍手段を前記第1プロセッサから非同期に動作可能とするために非干渉化するデカプラと、前記データ・プロセッサ命令の前記入れ子構成ブロックを格納するためのデータメモリとを有するデータ・プロセッサ・コントローラ。
  19. 請求項18のデータ・プロセッサ・コントローラであって、前記逓倍手段は、バンド幅逓倍器であり、該バンド幅逓倍器によって生成された前記データ・プロセッサ命令のバンド幅は、前記第1プロセッサによって発行された前記データ・プロセッサ命令のバンド幅から増大されるデータ・プロセッサ・コントローラ
  20. 請求項19のデータ・プロセッサ・コントローラであって、前記第1プロセッサは、前記データ・プロセッサ命令を圧縮するように構成され、前記バンド幅逓倍器は、圧縮された前記データ・プロセッサ命令を圧縮解凍するように構成されているデータ・プロセッサ・コントローラ
  21. 請求項19又は20のいずれかのデータ・プロセッサ・コントローラであって、前記第1プロセッサは、バンド幅逓倍器制御情報を前記データ・プロセッサ命令に追加するように構成され、前記バンド幅逓倍器は、前記バンド幅逓倍器制御情報に依って、前記データ・プロセッサ命令を逓倍するように構成されているデータ・プロセッサ・コントローラ
  22. 請求項19又は20のいずれかのデータ・プロセッサ・コントローラであって、前記バンド幅逓倍器は、前記データ・プロセッサと前記第1プロセッサからステータス/演算結果情報を受取るように構成されているデータ・プロセッサ・コントローラ
  23. 請求項22のデータ・プロセッサ・コントローラであって、前記バンド幅逓倍器は、前記データ・プロセッサと前記第1プロセッサから受取った前記ステータス情報に依って、前記データ・プロセッサ命令を逓倍するように構成されているデータ・プロセッサ・コントローラ
  24. 請求項19〜23のいずれか一項のデータ・プロセッサ・コントローラであって、前記第1プロセッサは、前記データ・プロセッサ命令を含むデータと命令とのストリームを生成するように構成され、前記逓倍手段は、前記データ・プロセッサ用の前記逓倍化された前記データ・プロセッサ命令を含む逓倍化されたデータ及び情報のストリームを生成するように構成されているデータ・プロセッサ・コントローラ
  25. 請求項18〜24のいずれか一項のデータ・プロセッサ・コントローラであって、前記第1プロセッサは、前記データ・プロセッサ命令を複合化フォーマットで生成するように構成され、前記逓倍手段は、これらの複合化された前記データ・プロセッサ命令を非複合化フォーマットに分離するように構成されているデータ・プロセッサ・コントローラ
  26. 請求項18〜25のいずれか一項のデータ・プロセッサ・コントローラであって、前記データ・プロセッサは、単一命令ストリーム多重データ(SIMD)データ・プロセッサであるデータ・プロセッサ・コントローラ
  27. 請求項18〜26のいずれか一項のデータ・プロセッサ・コントローラであって、前記第1プロセッサはマイクロプロセッサ又はデジタル信号プロセッサであるデータ・プロセッサ・コントローラ
  28. 請求項18〜27のいずれか一項のデータ・プロセッサ・コントローラであって、該データ・プロセッサ・コントローラと前記データ・プロセッサとは、一つのシリコン・デバイスに一体形成されているデータ・プロセッサ・コントローラ
  29. バンド幅逓倍器であって、該バンド幅逓倍器に接続されたデータ・プロセッサを制御するためのデータ・プロセッサ命令を逓倍するバンド幅逓倍器において、該バンド幅逓倍器は、
    第1データ幅を有する通信チャンネルを介して前記データ・プロセッサ命令を受取る入力手段と、
    前記入力手段に接続されて前記データ・プロセッサのための出力命令を準備し、出力する逓倍手段と、を有し、
    前記逓倍手段は、前記データ・プロセッサのための前記出力命令の前記準備を、前記データ・プロセッサに対する前記出力命令から分離して行うように構成されると共に、前記データ・プロセッサのための前記出力命令を生成するために、受け取られた前記データ・プロセッサ命令の入れ子構成ブロックを逓倍するものであり、
    前記データ・プロセッサのための前記出力命令は、前記1データ幅よりも大きな第2データ幅を有する、
    ここで、前記入力手段は、前記データ・プロセッサ命令の受取りから前記逓倍手段を非同期に動作可能とするために非干渉化するデカプラを含み、
    前記逓倍手段は、前記データ・プロセッサ命令の前記受取りと非同期に命令の入れ子構成ブロックを反復し、同時に、前記逓倍された命令として後に前記データ・プロセッサに出力される他のタイプのデータ・プロセッサ命令を準備するように構成され、そして、
    前記バンド幅逓倍器は、命令の前記入れ子構成ブロックを格納するためのデータメモリと、前記入れ子構成命令ブロックを前記データメモリ内に保持し、それらを前記データ・プロセッサに反復して送信するための反復制御ロジック手段とを有するバンド幅逓倍器。
  30. 請求項29のバンド幅逓倍器であって、前記データ・プロセッサ命令は、前記逓倍手段の動作を制御するための命令を含むバンド幅逓倍器
  31. 請求項29又は30のバンド幅逓倍器であって、前記逓倍手段は、前記入力手段によって受取られた前記データ・プロセッサ命令に含まれる個々の命令を反復するための命令反復手段を有するバンド幅逓倍器
  32. 請求項30のバンド幅逓倍器であって、前記逓倍手段は、前記入力手段によって受取られた前記データ・プロセッサ命令に含まれる個々の命令を反復するための命令反復手段を有し、前記入力手段によって受取られた前記データ・プロセッサ命令は、命令反復制御情報を含み、前記命令反復手段は、前記命令反復制御情報を使用して個々のデータ・プロセッサ命令を反復するように構成されているバンド幅逓倍器
  33. 請求項9〜32のいずれか一項のバンド幅逓倍器であって、前記バンド幅逓倍手段は、前記データ・プロセッサ命令のブロック又は入れ子構成ブロックを反復するためのブロック反復手段を有するバンド幅逓倍器
  34. 請求項30のバンド幅逓倍器であって、前記バンド幅逓倍手段は、前記データ・プロセッサ命令のブロック又は入れ子構成ブロックを反復するためのブロック反復手段を有し、前記入力手段によって受取られた前記データ・プロセッサ命令は、ブロック反復制御情報を含み、前記ブロック反復手段は、前記ブロック反復制御情報を使用して前記データ・プロセッサ命令のブロック又は入れ子構成ブロックを反復するように構成されているバンド幅逓倍器
  35. 請求項33又は34のバンド幅逓倍器であって、前記入力手段によって受取られる前記データ・プロセッサ命令は、アドレスフィールドを含み、前記ブロック反復手段は、前記ブロック命令の反復に依って、前記アドレスフィールドを変更するように構成されているバンド幅逓倍器
  36. 請求項29〜35のいずれか一項のバンド幅逓倍器であって、前記入力手段は、複合化フォーマットで前記データ・プロセッサ命令を受取るように構成され、前記逓倍手段は、これら複合化された前記データ・プロセッサ命令を非複合化フォーマットに分離するように構成されているバンド幅逓倍器
  37. 請求項9〜36のいずれか一項のバンド幅逓倍器であって、更に、前記入力手段によって受取られた圧縮命令を圧縮解凍するための命令取り出し手段を有するバンド幅逓倍器
  38. 請求項37のバンド幅逓倍器であって、前記入力手段は、それが受取る前記データ・プロセッサ命令にタグを追加するように構成され、前記命令取り出し手段は前記タグを使用して前記命令を圧縮解凍するように構成されているバンド幅逓倍器
  39. 請求項29〜38のいずれか一項のバンド幅逓倍器であって、前記デカプラは、FIFOを有するバンド幅逓倍器
  40. 請求項29〜39のいずれか一項のバンド幅逓倍器であって、更に、前記データ・プロセッサの演算結果又はステータスを読み出し、これを制御プロセッサに書き込む出力バッファを有するバンド幅逓倍器
  41. 請求項29〜40のいずれか一項のバンド幅逓倍器であって、前記入力手段は、前記データ・プロセッサ命令を有するデータと命令のストリームを受取るように構成され、前記逓倍手段は、前記データ・プロセッサのための前記逓倍化された前記データ・プロセッサ命令を含む逓倍されたデータ及び命令のストリームを生成するように構成されているバンド幅逓倍器
  42. データ・プロセッサを制御するためのデータ・プロセッサ命令を発行し、準備し、提供する方法であって、
    第1速度で前記データ・プロセッサ命令を発行する発行工程と、
    前記発行された前記データ・プロセッサ命令を読み出す読出工程と、
    前記データ・プロセッサ命令の入れ子構成ブロックをデータメモリに格納する格納工程と、
    前記データ・プロセッサ命令の前記入れ子構成ブロックを逓倍する逓倍工程を有して前記データ・プロセッサのためのデータ・プロセッサ命令を準備する準備工程と、
    前記逓倍化された前記データ・プロセッサ命令を、前記第1速度よりも速い第2速度で前記データ・プロセッサに書き込む書込工程と、
    前記準備工程を前記書込工程から分離する分離工程と、を有し、
    ここで、前記準備工程は、前記読出工程と非同期に前記データ・プロセッサ命令の入れ子構成ブロックを反復し、同時に、後の前記データ・プロセッサへの書き込みのために他のタイプのデータ処理命令を準備する工程を含み、
    前記読出工程は、前記逓倍工程を前記発行工程から非同期に動作可能とするために非干渉化する工程を含む方法。
  43. 請求項42の方法であって、前記逓倍工程は、前記第1速度で発行された前記データ・プロセッサ命令のバンド幅から、前記第2速度で生成された前記データ・プロセッサ命令のバンド幅に増加させる工程を含む方法。
  44. 請求項42又は43の方法であって、前記発行工程は、前記データ・プロセッサ命令を圧縮する工程を含む方法。
  45. 請求項42〜44のいずれかの方法であって、前記逓倍工程は、前記データ・プロセッサ命令を圧縮解凍する工程を含む方法。
  46. 請求項42〜45のいずれか一項の方法であって、前記発行工程は、複合化フォーマットで前記データ・プロセッサ命令を生成する工程を含み、前記読出工程は、この複合化された命令を非複合化フォーマットに分離する工程を含む方法。
  47. 請求項42〜46のいずれか一項の方法であって、前記発行工程は、前記バンド幅逓倍手段の動作を制御するための命令を含む命令を発行する工程を含む方法。
  48. 請求項9〜17のいずれか一項のデータ・プロセッサ・コントローラであって、前記命令加速手段は、命令ブロックの各反復に入力するための異なるスカラ値を格納するためのFIFOを含むデータ・プロセッサ・コントローラ。
  49. 請求項9〜17のいずれか一項のデータ・プロセッサ・コントローラであって、前記命令加速手段は、適切なスカラ値が受け取られるまで、前記命令の反復ブロックの発行を一時停止するように構成されているデータ・プロセッサ・コントローラ。
  50. 請求項1〜284849のいずれか一項のデータ・プロセッサ・コントローラ、又は、請求項29〜41のいずれか一項のバンド幅逓倍器を含む、或いは、請求項42〜47のいずれか一項の方法によって作動するように構成された、プロセッサ制御デバイス又は装置。
JP55012598A 1997-05-23 1998-05-21 命令発行速度を加速するプロセッサ・コントローラ Expired - Lifetime JP3851989B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB9710749A GB2325535A (en) 1997-05-23 1997-05-23 Data processor controller with accelerated instruction generation
GB9710749.4 1997-05-23
PCT/GB1998/001461 WO1998053408A1 (en) 1997-05-23 1998-05-21 Processor controller for accelerating instruction issuing rate

Publications (3)

Publication Number Publication Date
JP2001525966A JP2001525966A (ja) 2001-12-11
JP2001525966A5 JP2001525966A5 (ja) 2006-01-05
JP3851989B2 true JP3851989B2 (ja) 2006-11-29

Family

ID=10813005

Family Applications (1)

Application Number Title Priority Date Filing Date
JP55012598A Expired - Lifetime JP3851989B2 (ja) 1997-05-23 1998-05-21 命令発行速度を加速するプロセッサ・コントローラ

Country Status (7)

Country Link
US (1) US6625722B1 (ja)
EP (1) EP0983556B1 (ja)
JP (1) JP3851989B2 (ja)
AU (1) AU7538898A (ja)
DE (1) DE69804444T2 (ja)
GB (1) GB2325535A (ja)
WO (1) WO1998053408A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4913955B2 (ja) * 2000-05-29 2012-04-11 株式会社ガイア・システム・ソリューション データ処理装置
US8458754B2 (en) 2001-01-22 2013-06-04 Sony Computer Entertainment Inc. Method and system for providing instant start multimedia content
FR2825810A1 (fr) * 2001-06-06 2002-12-13 Koninkl Philips Electronics Nv Dispositif electronique a processeur pipeline utilisant un compactage de code et procede de gestion d'un tel processeur
DE10206830B4 (de) * 2002-02-18 2004-10-14 Systemonic Ag Verfahren und Anordnung zur Zusammenführung von Daten aus parallelen Datenpfaden
US8837528B2 (en) * 2005-02-25 2014-09-16 Sony Computer Entertainment America Llc Data distribution by proxy
JP2006338538A (ja) * 2005-06-03 2006-12-14 Nec Electronics Corp ストリームプロセッサ
JP5154119B2 (ja) * 2007-03-26 2013-02-27 テレフオンアクチーボラゲット エル エム エリクソン(パブル) プロセッサ
US9483405B2 (en) 2007-09-20 2016-11-01 Sony Interactive Entertainment Inc. Simplified run-time program translation for emulating complex processor pipelines
JP5511299B2 (ja) * 2009-10-16 2014-06-04 三菱電機株式会社 データ演算装置の制御回路及びデータ演算装置
US8433759B2 (en) 2010-05-24 2013-04-30 Sony Computer Entertainment America Llc Direction-conscious information sharing

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4807115A (en) * 1983-10-07 1989-02-21 Cornell Research Foundation, Inc. Instruction issuing mechanism for processors with multiple functional units
US5303356A (en) * 1990-05-04 1994-04-12 International Business Machines Corporation System for issuing instructions for parallel execution subsequent to branch into a group of member instructions with compoundability in dictation tag
GB2263565B (en) * 1992-01-23 1995-08-30 Intel Corp Microprocessor with apparatus for parallel execution of instructions
US5511212A (en) * 1993-06-10 1996-04-23 Rockoff; Todd E. Multi-clock SIMD computer and instruction-cache-enhancement thereof
US5682520A (en) * 1993-09-20 1997-10-28 California Institute Of Technology Array processor for morphological image processing
GB2284492B (en) * 1993-12-06 1998-05-13 Graeme Roy Smith Improvements to computer control units
US5524223A (en) * 1994-01-31 1996-06-04 Motorola, Inc. Instruction accelerator for processing loop instructions with address generator using multiple stored increment values
US5649135A (en) * 1995-01-17 1997-07-15 International Business Machines Corporation Parallel processing system and method using surrogate instructions
US5709209A (en) * 1996-03-29 1998-01-20 Siemens Medical Systems, Inc. Ultrasound signal processing system
US5819058A (en) * 1997-02-28 1998-10-06 Vm Labs, Inc. Instruction compression and decompression system and method for a processor

Also Published As

Publication number Publication date
GB2325535A (en) 1998-11-25
AU7538898A (en) 1998-12-11
DE69804444D1 (de) 2002-05-02
JP2001525966A (ja) 2001-12-11
WO1998053408A1 (en) 1998-11-26
US6625722B1 (en) 2003-09-23
EP0983556B1 (en) 2002-03-27
EP0983556A1 (en) 2000-03-08
GB9710749D0 (en) 1997-07-16
DE69804444T2 (de) 2002-11-07

Similar Documents

Publication Publication Date Title
US5175863A (en) Signal data processing system having independently, simultaneously operable alu and macu
US6367003B1 (en) Digital signal processor having enhanced utilization of multiply accumulate (MAC) stage and method
US6851041B2 (en) Methods and apparatus for dynamic very long instruction word sub-instruction selection for execution time parallelism in an indirect very long instruction word processor
US5333280A (en) Parallel pipelined instruction processing system for very long instruction word
US6401190B1 (en) Parallel computing units having special registers storing large bit widths
US5261113A (en) Apparatus and method for single operand register array for vector and scalar data processing operations
US20030061473A1 (en) Methods and apparatus to dynamically reconfigure the instruction pipeline of an indirect very long instruction word scalable processor
EP0312764A2 (en) A data processor having multiple execution units for processing plural classes of instructions in parallel
US4298936A (en) Array Processor
JPH03500461A (ja) データ駆動式計算用のデータ流れ装置
US5590349A (en) Real time programmable signal processor architecture
US20070250681A1 (en) Independent programmable operation sequence processor for vector processing
EP0544083A2 (en) Interleaved RISC-type parallel processor and processing methods
JP3851989B2 (ja) 命令発行速度を加速するプロセッサ・コントローラ
AU665927B2 (en) Programmable signal processor architecture
EP0496407A2 (en) Parallel pipelined instruction processing system for very long instruction word
EP1299811A2 (en) Synergetic computing system
US20020083306A1 (en) Digital signal processing apparatus
US7107478B2 (en) Data processing system having a Cartesian Controller
JP2654451B2 (ja) データ出力方法
RU2198422C2 (ru) Асинхронная синергическая вычислительная система
JP2861234B2 (ja) 命令処理装置
WO1987004829A1 (en) Improvements relating to control flow in computers
WO1988008568A1 (en) Parallel-processing system employing a horizontal architecture comprising multiple processing elements and interconnect circuit with delay memory elements to provide data paths between the processing elements

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050519

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050804

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060307

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060605

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060821

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20090915

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20100915

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110915

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120915

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20130915

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20130915

Year of fee payment: 7

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term