JPH11508066A - データ・フロー制御および複数の処理装置を有する画像圧縮コプロセッサ - Google Patents

データ・フロー制御および複数の処理装置を有する画像圧縮コプロセッサ

Info

Publication number
JPH11508066A
JPH11508066A JP6524505A JP52450594A JPH11508066A JP H11508066 A JPH11508066 A JP H11508066A JP 6524505 A JP6524505 A JP 6524505A JP 52450594 A JP52450594 A JP 52450594A JP H11508066 A JPH11508066 A JP H11508066A
Authority
JP
Japan
Prior art keywords
instruction
token
data
memory
bus
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.)
Granted
Application number
JP6524505A
Other languages
English (en)
Other versions
JP3806936B2 (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 JPH11508066A publication Critical patent/JPH11508066A/ja
Application granted granted Critical
Publication of JP3806936B2 publication Critical patent/JP3806936B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K15/00Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Advance Control (AREA)
  • Image Processing (AREA)

Abstract

(57)【要約】 本発明は、単一チップに集積された画像圧縮/圧縮解除を提供する。制御バスは異なった特定の目的の処理ユニット(414、420、422、424、428)のいくつかに内部、グローバル・バス(416)によって接続されている。各処理ユニットは圧縮及び圧縮解除の特定のステップのみを処理するように特別に設計されている。

Description

【発明の詳細な説明】 データ・フロー制御および複数の処理装置を有する画像圧縮コプロセッサ 本出願は、1993年4月27日に出願された米国特許出願第08/0549 50号の一部継続出願である。 付録Iには、本発明のコプロセッサが使用する命令の説明が記載されている。 発明の背景 本発明は、専用画像圧縮コプロセッサに関する。 データ圧縮は、送信し記憶する必要があるデータの量を減少させるために使用 される。多数のデータ圧縮タイプがあり、簡単なタイプとしてラン・レングス圧 縮がある。ラン・レングス圧縮では、たとえば1行で25個のディジタル1を送 信するのではなく、25個のディジタル1があることを示す符号と共に単一の1 が送信される。これは、データが失われない無損失圧縮方法である。一方、「有 損失」方法では、精度または分解能のビット数を減少させることなど異なる技法 によって、無損失圧縮方法よりもはるかにデータを圧縮する。 画像において、画素アレイは、各画素ごとに1つまたは複数のディジタル値を 備える。グレイ・スケール画像では、ディジタル画素値は、そのグレイネス・レ ベルを示す。たとえば、0が白であってよく、255が黒であってよい。カラー 画像では、それぞれ、RGBシステムの赤成分、青成分、および緑成分(あるい はYUVシステムの3つの成分)を示す、3つの異なる値を使用することができ る。データを圧縮する1つの方法は、256個の可能な変形例を表す8ビットの 代わりに最上位4ビットが使用されるように、単に画素の各成分ごとに分解能ビ ット数を減少させることである。しかし、この方法では、他の方法よりも画質が 低下する。大部分の画像圧縮方法では、画像の十分に小さな部分を削除した場合 、大部分の例で色は不変であり、あるいは、緩やかに変動することが分かってい る。したがって、多数の画像圧縮方式は、平均強度または平均色、あるいは主強 度または主色を識別し、次いで、この色からの変動を識別することに焦点を当て てい る。平均色または主色に高分解能を使用することによって、その色からの変動に より低い分解能を使用することができる。 画像データ圧縮に関していくつかの規格が作成された。JPEG(Joint Phot ography Experts Group)規格は静止画像用に使用されている。MPEG(Motio n Picture Experts Group)およびPx64は、フルモーション・ビデオ用に使 用されている。Px64は、CCITT(国際電信電話諮問委員会)ではH.2 61とも呼ばれている。 ある上述の圧縮プロセスがどのように働くかの一例を簡単に説明すると、本発 明を理解するうえで有用である。第1A図は、JPEG規格を示す図である。ソ ース画像は、一辺が8画素のブロック、またはブロック当たり合計64画素に分 割される。各画素は、グレイ・スケールでは0ないし255の単一のディジタル 値で表され、RGBカラー・イメージまたはYUVカラー・イメージでは3つの 異なる値で表される。64個の値に対して二次元離散余弦変換(DCT)が実行 される。DCTとは、各成分周期波形ごとに異なる係数または乗数を有するいく つかの異なる周期波形を加算することによって任意の波形を近似するために使用 される技法である。8×8画素ブロック中の点のプロッティングは、時間によっ て変化する通常の波形ではなく空間の変動または空間周波数の波形表現である。 変換の最終結果は、主色を表すDC値と、そのDC値からの変動を表すいくつか の係数である。この結果得られるDC係数およびAC係数はブロック12として 記憶され、左上の値が各ブロックごとのDC値である。画素が調べられる順序は 、行ごとではなくジグザグ・パターン14であってよい。このジグザグ・パター ンは、色の変動をより円滑にするはずである。 第1B図は、JPEG圧縮に関するデータ・フローである。入力画像データは まず、オフセット論理ブロック20でオフセットされる。このオフセットは、図 の例では128であり、範囲が通常0ないし255であるので、0の周りにデー タをセンタリングする効果を有する。これは、DC成分の値を減少させ、したが って、DC成分を表すのに必要なビット数を減少させる。次いで、データが順D CT(FDCT)論理ブロック22を通過して、離散余弦変換DCおよび複数の 処理装置係数および離散余弦変換AC係数が生成される。これらの係数は次いで 順量子化論理ブロック24で量子化テーブル26の制御の下で量子化される。こ の量子化は基本的に丸め関数であり、各係数を表すのに必要なビット数を制限す る。次いで、論理ブロック28で、AC係数が上述のラン・レングス符号化方式 に類似のラン・レングス符号化方式で符号化される。 差分符号化論理ブロック30でDC成分が符号化される。第1のDC値は絶対 値で表されるが、その後の論理ブロックでの残りのDC値は、その第1の値から の差分として符号化され、この場合も、DC値を表すのに必要なビット数が制限 される。最後に、ハフマン符号化器32を介してデータが処理される。ハフマン 符号化とは、JPEG規格で指定された方法のうちの1つであり、エントロピー 符号化の一形態である。ハフマン符号化では基本的に、ある種のデータ・パター ンの代わりにテーブル中のいくつかの符号のうちの1つを使用することによって ディジタル・データが圧縮される。 第1C図は、圧縮済みデータの復号に関する第1B図を逆にした図を示す。す べての論理ブロックは基本的に、第1B図に記載された論理ブロックを逆にした ものである。これらの論理ブロックは、ハフマン符号化器40、ラン・復号化4 2、差分復号化44、量子化テーブル48を有する逆量子化論理ブロック46、 逆DCT論理ブロック50、およびオフセット論理ブロック52である。 データ圧縮および圧縮解除は従来、1つの方法または2つの異なる方法で行わ れている。第1は、第1B図および第1C図に示したデータ・フローに必要な所 望のタスクを実行するように一般的なマイクロプロセッサをプログラムすること である。このプログラム可能性によって、ハードウェアの融通性が向上するが、 同時に、圧縮および圧縮解除が非常に低速になることは明らかである。第2は、 特定のフロー経路を実施するように専用ハードウェアを設計することである。こ の専用ハードウェアは、より高速になるが、融通性が制限されることは明らかで ある。LSIロジック社(LSI Logic)とSGSトンプソン社(SGS Thompson)は共に、画像圧縮/圧縮解除システムに使用できるビルデ ィング・ブロックを含むチップ・セットを販売している。このチップには、DC Tプロセッサ、符号化/復号化、DCT量子化プロセッサ、CCITT可変長復 号化などが含まれる。 他の手法では、いくつかの会社が、データ圧縮/圧縮解除向けに最適化された 専用コプロセッサを生産している。Cキューブ社(C−Cube)は、製品部品 番号CL550、すなわち、JPEG画像圧縮プロセッサを発表した。このプロ セッサは、JPEG規格向けに最適化されている。ゾラン社(Zoran)もそ のようなコプロセッサを発表した。 本発明は、データ・フロー技法にも関する。NECは、データ・フロー技法を 実施する画像コプロセッサを導入した。標準マイクロプロセッサでは、ジャンプ がない限り、順次実行によって、プログラム命令が一度に1つずつ実行され、プ ログラム・カウンタがインラインで次の命令を指し示す。 一方、データ・フロー・プロセッサには、標準プログラム・カウンタ概念はな い。その代わり、一連の命令が記憶され、各命令の実行タイミングは、そのデー タの準備がいつ完了するかによって決定される。データ・フロー・プログラムの 説明は、ジャックB.デニス(Jack B.Dennis)著"Data Flow Sup er Computers"Computer Magazine,1980年11月,48ページないし56ペ ージに記載されている。この論文は、マルチプロセッサ・アーキテクチャにデー タ・フロー技法を使用することを提案している。基本命令実行機構は、第10図 に記載されており、円形パイプラインを有する。命令待ち行列が、実行の準備が 完了した命令を保持し、取出し装置が、これらの命令をパケットの形で実際の演 算装置上に渡す。演算装置は、データ・トークンも受信する。この結果得られる パケットは、完成後、命令用の活動ストアに戻され、追加データのためにある命 令を繰り返す場合、前記活動ストアからその命令を再び選択することができる。 NEC画像コプロセッサは、そのような円形パイプラインを使用している。 発明の概要 本発明は、単一のチップ上で集積された画像圧縮/圧縮解除コプロセッサを提 供するものである。このコプロセッサは、内部グローバル・バスによっていくつ かの異なる処理装置に接続された制御装置を有する。各処理装置は、圧縮プロセ スおよび圧縮解除プロセス中のあるステップしか処理しない。 本発明は、圧縮プロセスおよび圧縮解除プロセスの実行速度を増加させるよう に専用ハードウェアと並行処理を共用できるようにするネットワーク状アーキテ クチャを単一のチップ上で実施する。本発明は、トークンを内部グローバル・バ スを介して様々な専用処理装置へ送信するデータ・フロー型制御装置で実施する ことが好ましい。 一実施形態では、このコプロセッサは、別々のホスト・インタフェースとビデ オ・メモリ・インタフェースとを有する。ホスト・インタフェースは、内部バス 上で使用されるトークンと、ホストに送信されるラン・レングス・データの間の 変換を行う。ビデオ・インタフェースは、トークンとビデオ・データ・フォーマ ットの間の変換を行う。内部グローバル・バスの使用は、制御装置中の調停回路 によって調停される。 一実施形態では、好ましくは、演算プロセッサと、量子化プロセッサと、DC Tプロセッサとを含む専用処理装置が使用される。データ・フロー制御技法を使 用することによって、トークンを送信し、個別の処理装置によって並列処理する ことができる。専用処理装置を使用することによって、高速に動作できない単一 の円形パイプラインを使用する従来技術、または専用でないためにやはり高速に 動作できないいくつかの同じ並列プロセッサを使用する従来技術が改良される。 本発明は、データ・フロー実施態様では、制御トークンとデータ・トークンと を含むユニークなトークンを使用する。データ・トークンは、単一のトークン中 に大きなデータ・ブロックを含むことができる。内部バスは、外部インタフェー ス・バスよりもずっと大きく、したがって、コプロセッサ・チップ上の装置間で 一度により多くの量のデータを送信することができる。 本発明の性質および利点をより完全に理解するために、添付の図面と共に以下 の詳細な説明を参照されたい。 図面の簡単な説明 第1A図は、JPEG規格に従ったデータ・ブロックの図である。 第1B図は、符号化に関するJPEGデータ・フローの図である。 第1C図は、復号化に関するJPEGデータ・フローの図である。 第2図は、本発明を使用する画像圧縮システムのブロック図である。 第3A図は、オペランドRAMの図である。 第3B図は、結果パケットの図である。 第3C図は、イネーブル済み命令パケットの図である。 第3D図は、トークン・アドレス・メモリの図である。 第3E図は、プロセッサ・パケット・フォーマットの図である。 第3F図は、プロセッサ・パケット・フォーマットの図である。 第3G図は、異なるデータ・ブロック構成の図である。 第4図は、本発明による画像圧縮コプロセッサのブロック図である。 第5図は、第4図のコプロセッサを使用するシステムの図である。 第6図は、第5図のメモリ接続のより詳細な図である。 第7図は、本発明の制御トークンおよびデータ・トークンを示す図である。 第8図は、第4図のデータ・フロー制御装置のブロック図である。 第9図は、本発明のデータ・フロー命令用の命令フィールドの図である。 第10図は、本発明の典型的なデータ・フロー・プログラムに関するデータ・ フロー・チャートである。 第11図は、第8図の更新装置のブロック図である。 第12図は、第8図のイネーブル済み命令待ち行列のブロック図である。 第13図は、第8図のグローバル・バス・インタフェース装置のブロック図で ある。 第14図は、第8図のトークン・メモリ装置のブロック図である。 第15図は、第4図のDCTプロセッサ装置の機能ブロック図である。 第16図は、第15図のDCTプロセッサ装置のグローバル・バス状態マシン に関する状態マシン遷移図である。 第17図は、第4図の量子化プロセッサ装置のブロック図である。 第18図は、第4図の演算プロセッサ装置のブロック図である。 第19図は、第4図のラン・レングス・プロセッサ装置のブロック図である。 第20図は、第4図のトークン・インタフェース装置の機能ブロック図である 。 第21図は、第4図のホスト・インタフェース装置のブロック図である。 第22図は、第4図のビデオ・インタフェース装置のブロック図である。 第23図は、第4図の補助インタフェース装置のブロック図である。 第24図は、本発明のセマフォの使用を示す図である。 第25図は、本発明のセマフォの使用を示す図である。 第26図は、本発明のセマフォの使用を示す図である。 特定の実施形態の説明典型的システム構成 第2図は、本発明(ICC)による画像圧縮/圧縮解除プロセッサ410と動 き推定コプロセッサ(MEC)212チップとを備える、JPEG規格、H.2 61規格、およびMPEG規格向けのビデオ圧縮システムの基本構成を示す。M ECは、1993年4月27日に出願され、”Motion Estimati on Coprocessor”と題し、引用によって本明細書に合体された関 連米国特許出願第08/055711号(「MEC出願」)に記載されている。 2つのチップは共に、コプロセッサであり、性能レベルがアプリケーションに依 存するホスト・プロセッサによってサポートされる必要がある。一般に、インテ ル(Intel)1960ファミリのメンバーなど市販のRISC制御装置で十 分である。ICCは、動き推定、ハフマン符号化および復号化、ならびにストリ ーム管理を除く典型的なシステム中のすべてのビデオ圧縮機能を実行する。上記 の後者の2つの機能はホスト・プロセッサによって処理され、動き推定はMEC によって処理される。動き補償フレーム符号化を必要としないアプリケーション はMECチップを必要としない。このことはたとえば、JPEGベースの符号化 および復号化と、MPEGベースの復号化に当てはまる。 3種類のバス、すなわち、ホスト・プロセッサ・バス(Hバス)214、補助 プロセッサ・バス(Xバス)216、ビデオ・メモリ・バス(Vバス)218を 第2図に示す。各バスは特定の目的を有する。Hバスは、プログラムおよびパラ メータをホストからICCチップおよびMECチップにダウンロードし、ラン・ レングス符号化データをホストとICCの間でリアリタイムで送信するために使 用される。Xバスは、以下で説明するように、ICCが、MECを含めて「外部 」プロセッサ・タイプとのインタフェースをとることができ、融通性に富む。最 後 に、Vバスは、オフ・ザ・シェルフDRAMまたはVRAM220、あるいはそ の両方とのグルーレス・インタフェースを形成し、リフレッシュ・サイクルは、 ICCでもMCCでも生成される。最大の性能を得るには、ICCおよびMEC のビデオ・バスを、第2図に示したように分割して別々のメモリに接続すること も、あるいは、これらのバスを共用することもできる。 これに対して、AT&T社のAVP1000チップ・セットは、符号化機能お よび復号化機能を別々のチップに配置する。このことは、符号化機能および復号 化機能が同じ計算資源を共用するICCとは異なる。また、AT&Tチップ・セ ットは、シリコン中心の動き推定機能を符号化チップ上の他の機能と組み合わせ ているが、ICC/MECチップ・セットは、別個のチップ(すなわち、MEC )を動き推定専用にしている。このため、話を簡単にすると、MPEG I−フ レームのみに基づく静止画像符号化/復号化アプリケーションでは、AT&T符 号化チップとAT&T復号化チップが共に必要である(デフォルトでは、不要な 動き推定機能も提供される)が、ICC/MECチップ・セットを使用する同じ アプリケーションで必要なのはICCだけである。ICC/MECチップ・セッ トとは異なり、AT&Tチップ・セットは、高品質静止画像圧縮の場合にMPE Gよりも好ましいJPEG規格に対処できないことにも留意されたい。 AT&Tチップ・セットは、ICC/MECではホスト・プロセッサ上にマッ プされる機能を与える、H.261ベースのアプリケーション向けに最適化され たシステム制御装置も含む。AT&Tシステムでは常に、システム制御装置プロ セッサだけでなくある種の専用汎用プロセッサも必要であるが、ICC/MEC システムでは、ユーザは、適当な実行レベルを有する単一のシステム制御装置プ ロセッサの時間の一部のみを使用して等価機能を実行することができる。 ICCは内部で、複数命令−複数データ(MIMD)アーキテクチャを使用し て真の「静的データ・フロー」計算モデルを実施する。これは、以前に発表され たマルチメディア・チップとは著しく異なる。たとえば、IIT社のビジョン・ プロセッサ(Vision Processor)チップは、すべて、単一の6 4ビット・マイクロ命令で制御される加算器、マルチプライヤなどの計算ブロッ クの集合から成るいわゆる超長命令ワード(VLIW)を実施する。AT&T社 のチップ・セットの各符号化チップおよび復号化チップは、すべて、同じ命令を 並列に実行する6つの同じ処理要素を有する信号プロセッサを中心とする単一命 令複数データ(SIMD)アーキテクチャを使用する。 データ・フロー計算は以前から、並列プロセッサ研究およびハードウェア実施 プロジェクトの主要な対象とされている。SIMDアーキテクチャおよびVLI Wアーキテクチャを使用するコンピュータを含めて、すべてのデータフロー・コ ンピュータは、他のコンピュータと異なり、「制御駆動」ではなく「データ駆動 」であるという共通の特性を有する。データフロー・コンピュータは、プログラ ム・カウンタを有さず、その代わり、ある命令に関するデータ・オペランドが利 用できるかどうかと、その命令の結果を置く場所のみに基づいてその命令を実行 または「ファイア」する。理論的には、多数の命令が一度にファイアすることが でき、その結果、複数の並列計算要素を組み込んだデータフロー・アーキテクチ ャが得られる。データフロー・コンピュータ・プログラムは基本的に、命令間の データの流れを表す「アーク」によって相互接続された命令「ノード」から成る データ・フローグラフを使用して表される。プログラム・メモリ中の命令の順序 付けは命令の実行に影響を与えない。このようなフローグラフ・アーク上を移動 するデータ・オブジェクトを「トークン」と呼ぶ。「静的」データフロー・コン ピュータ、たとえばICCでは、任意の一時点でアーク上で単一のトークンしか 許容されず、アーク上で複数のトークンを許容する「動的」データフロー・コン ピュータよりも簡単に実施することができる。 制御駆動アーキテクチャは、主要な例として現在のマイクロプロセッサがあり 、プロセッサのプログラムの一部である一連のデータ依存決定またはデータ独立 決定、あるいはその両方を下すことによって実行すべき命令のアドレスを選択す る。プログラムは、命令の相対的な物理配置が実行の順序で重要な役割を果たす 、知られている線形リストの形をとる。 ICCのデータフロー計算アーキテクチャは、第4図に示されており、単一の 96ビット二方向グローバル・バス416を介して相互接続された並列処理要素 または「機能ユニット」の集合から成る。このバスは、50Mhzクロック・サ イクルごとに8つの12ビット語を送信することができ、最大スループット40 0M語/秒をもたらす。トークンは、それぞれ、8つないし264個の12ビッ ト語のベクトルから成り、データフロー制御装置中の機能ユニットとバッファ・ メモリの間でバスを介して渡される。データフロー制御装置は、機能ユニットか らの結果トークンを、オンチップ128語プログラムRAMに記憶されている命 令のオペランド・フィールドに突き合わせ、次いで、一致した命令とそのオペラ ンドをグローバル・バスを介して適当な機能ユニットにディスパッチする。 性能を最大にするために、各機能ユニットは、特定の命令サブセットを実行す るように最適化され、機能ユニットは全体的に、10BPOSを超えるピーク性 能を達成する。たとえば、DCTプロセッサ・ユニット(DPU)424は、順 方向DCTおよび逆DCTのみを実行することができ、量子化プロセッサ・ユニ ット(QPU)422は、順方向量子化および逆量子化を実行するように最適化 される。いくつかの機能ユニットは、ICCと外部のインタフェースをとる責任 を負う。たとえば、ビデオ・インタフェース・ユニット(VIU)414は、イ メージ・データをオフチップDRAMから読み取り、オフチップDRAMに書き 込むために使用され、トークン・インタフェース・ユニット(TIU)428お よびラン・レングス・プロセッサ・ユニット(RPU)426は、ICCとホス ト・プロセッサの間でデータを送信するために使用される。機能ユニット上で実 行されるすべてのICC命令は、単一のデータ語ではなくデータ・ベクトルから 成るトークンを処理するという意味で「ハイ・レベル」である。この特徴のため に、ICCプログラムを極めて小規模にすることができる。ICCの主要な演算 命令コードの要約を表3に示す。 ICCは、補助インタフェース・ユニット(AIU)430と呼ばれる特殊な 機能ユニットを有し、このインタフェース・ユニットによって、ICCは、高速 同期補助バスを使用して、MECを含めて他の特殊な処理チップをサポートする ことができる。ICCは、融通性に富む通信プロトコルと、ICCのプログラム RAMのユーザ定義命令を使用して、補助バス上でプロセッサを制御する。性能 ICCの機能最適化並列処理装置によって、ICCは、JPEG規格、H.2 61規格、およびMPEG規格を使用するアプリケーション向けの優れた性能を 提供することができる。たとえば、通常、CCIR601フレーム・サイズ(4 80行×720画素/行)を扱うビデオ編集など高画像品質ベースのアプリケー ションでは、単一のICCは、JPEG規格を使用して毎秒30フレームでこの ような画像を符号化し復号化するのに十分な馬力を有する。実際は、ICCは、 最大4096行×4096画素/行の画像を処理することができる。 しかし、ICCの高性能は、ビデオ会議(H.261規格を使用する)やCD ROMベースのマルチメディア(MPEGを使用する)など、より小さなCI Fサイズ(288行×352画素/行)の画像を扱うアプリケーションにも非常 に有用である。このようなアプリケーションの場合、単一のICC/MECチッ プ・セットは、複数の画像チャネルを処理することができる。たとえば、マルチ ポイント・ビデオ会議では、単一のICC/MECチップ・セットを使用して、 単一の画像(すなわち、送信されるもの)を符号化し、受信した複数の可能性が ある画像を復号することができるビデオcodecを実施することができる。P Cまたはワークステーション上のウインドウ環境で動作するMPEG規格に基づ くマルチメディア・アプリケーションの場合、単一のICCは、2つのSIF画 像をリアルタイムで復号することによって複数のウィンドウをサポートすること ができる。また、CD ROMベースの画像シーケンスも作成するマルチメディ ア・アプリケーションの場合、単一のICC/MECチップ・セットは、Pフレ ーム当たり2Bフレーム符号化構造を使用する毎秒30フレームのCIF画像の MPEG符号化をサポートすることができる。拡張性およびスケーラビリティ ICCの補助バス・インタフェースは自動的に、性能および機能の拡張性とス ケーラビリティを共にICC/MECベースのシステムに組み込む。これは、こ のバスが、現在の所ICCの内部アーキテクチャの一部ではない他のプロセッサ および命令の定義をサポートし、融通性に富むからである。MECは、そのよう なプロセッサの一例である。最大4つの外部プロセッサが単一の補助バス上に共 存することができ、たとえば、ユーザは、複数のMECを使用することによって 動き推定性能を向上させることができる。 ICCは、補助バスを提供するだけでなく、ユーザのプログラムの実行時に、 ホスト・プロセッサをある意味でサブルーチンに類似するものと呼べるようにす る特殊な命令も実施する。このような命令により、システムのタイミング上可能 なら、ICCによって、ホスト・プロセッサがオンチップでは実施しない関数を 計算するためにホスト・プロセッサを使用することができる。また、この同じ命 令によって、ICCを、ホストから従来型のコプロセッサと同様に見えるように プログラムすることができる。すなわち、ホストは、それが供給する入力データ に対して個別の関数を実行して結果を返すようICCに命令することができる。プログラミングの容易さ ICCのフローグラフ・ベースのプログラミング環境によって、ユーザは容易 に、命令の並列処理を指定することができる。プログラマが行う必要があるのは 、命令間でデータがどのような流れるかを指定することだけである。ICCのデ ータフロー制御装置は、オペランドが利用できるかどうかに基づいて実行時に命 令の実行を自動的にスケジューリングすることによって残りのことを実行し、命 令とオペランドを適当な機能ユニットにディスパッチする。ICCはさらに、高 レベル命令を使用して、通常10個以上の基本命令を必要とするDCTや量子化 など標準演算命令を実行することによって、プログラム作成を簡略化する。 これに対して、VLIW(および、これよりも程度は低いが、SIMD)など のアーキテクチャでは、並列計算資源を効率的に使用する負担がプログラマにか かる。VLIWでは、プログラマは、単一の命令でいくつかの並行活動を同時に 管理する必要があり、また、時間が経過してもこれらの命令が同期したままにな るように命令を順序付けなければならない。命令レベルでのVLIWマシンの大 規模プログラミングは、短時間のうちに手に負えないほどの規模になることがあ り、一般に、精巧なマイクロコード・コンパイル・ツールを必要とする。SIM Dプログラミングは、ユーザが複数の処理装置にわたって共通に実行される単一 の制御駆動プログラムを作成するので、ユーザにとってはある程度容易である。 しかし、SIMDプログラミングは、実行すべき命令のシーケンスが主としてデ ータ独立のものである(すなわち、多数の枝分かれを使用しない)アプリケーシ ョンの場合しか効率的でない。このことは、DCTなど多数の圧縮機能に当ては まるが、しきい値処理済み量子化などある種の機能は、さらにプログラミンを複 雑にするある種のデータ依存動作を導入することがある。さらに、SIMDアー キテクチャでもVLIWアーキテクチャでも、プログラマは一般に、ハードウェ ア・パイプライニングを使用して機能を向上させることを強く意識していなけれ ばならない。これに対して、ICCの機能ユニットは内部でパイプライン化され るが、このことはプログラマから完全に隠される。 第4図は、本発明の一実施形態による画像圧縮/圧縮解除コプロセッサ410 のブロック図である。コプロセッサ410は、ホスト・インタフェース412お よび内部ホスト・バス413を介してホスト・コンピュータとのインタフェース をとる。ビデオ・メモリはビデオ・インタフェース414を介してアクセスされ る。このインタフェースによって内部グローバル・バス416との間でデータお よび命令がやり取りされる。コプロセッサは、内部グローバル・バス416によ って特定のプロセッサに接続された制御ユニット418の制御の下で動作する。 画像圧縮/圧縮解除である特定の機能を実行するためにいくつかの専用処理ユ ニットが用意されている。これらの処理ユニットとは、演算プロセッサ・ユニッ ト420、量子化プロセッサ・ユニット422、および離散余弦変換(DCT) プロセッサ・ユニット424である。これらのユニットは、同じハードウェアを 使用しカスタム・プログラミングを行ってもよく、またそれぞれ専用のハードウ ェアを使ってもよい。ホスト・インタフェースと内部グローバル・バスの間に他 の2つの専用ユニットが接続される。これらのユニットとは、ラン・レングス・ プロセッサ・ユニット426およびトークン・インタフェース・ユニット428 である。コプロセッサ410は、追加処理装置に接続すべき補助インタフェース ・ユニット430も含む。コプロセッサ410を試験する試験制御ユニット43 2も用意されている。 動作時には、コプロセッサ410は、ホスト・マイクロプロセッサのスレーブ として動作する。ホスト・マイクロプロセッサは、圧縮/圧縮解除用の適当なプ ログラムをホスト・インタフェース412およびラン・レングス・プロセッサ4 26を介して制御ユニット418にロードする。制御ユニットは次いで、プログ ラムの制御の下で、ビデオ・インタフェース414またはホスト・インタフェー スを介して提供されたデータを圧縮または圧縮解除するようコプロセッサを操作 する。圧縮アルゴリズムまたは圧縮解除アルゴリズム中の様々なステップは、内 部バスに接続された適当な処理ユニットによって実行される。このようなユニッ トは、並列にかつ非同期的に動作することができる。したがって、コプロセッサ は、チップ上のネットワークとみなすことができるように動作する。データは、 必要に応じて、それぞれ、データまたは命令をいつバスを介して送信すべきかを 決定する調停回路を含む、処理ユニットおよび制御ユニット間で内部バスを介し て送信される。プログラムが完了した後、ホストは、次のプログラムをロードす ることができる。 補助インタフェース・ユニット430は、他の専用処理ユニットを、オンチッ プの場合と同様にバスに結合できるようにすることによって、コプロセッサを拡 張できるようにする。 内部グローバル・バス416は96ライン幅で大型である。ビデオ・インタフ ェースおよびホスト・インタフェースは、これよりも行数がより少ない。したが って、内部の様々な専用処理ユニット間で迅速に大量のデータおよび命令を移動 することができる。 制御ユニット418は、標準マイクロプロセッサに含まれるタイプの標準マイ クロプログラム済み制御ユニットなど任意のタイプの制御ユニットでよい。その ようなシステムでは、命令を非同期的に並行に実行することの利点が得られる。 しかし、データ・フロー制御ユニットを使用することによって追加効率を得るこ とができる。 第5図は、第4図の画像圧縮コプロセッサ410を使用できるシステムの一実 施形態を示す。画像圧縮コプロセッサ410は、任意選択の組込み制御プロセッ サ514を介してCPUバス512に接続される。制御プロセッサ514を使用 して、ハフマン符号化などコプロセッサ410では実行されないある種の圧縮解 除機能および圧縮機能をCPU516からオフロードすることができる。あるい は、これをCPU自体で行うこともできる。ローカル・メモリ540は組込み制 御プロセッサ514に結合されたバス上にある。CPUにはROM518とDR AM520が連結されている。ディジタル・ビデオ制御ユニット522は、カメ ラ524およびディスプレイ526に接続される。データは、カメラ524から 受信して、CPUバス512またはビデオ・プリ/ポスト・プロセッサ528か らビデオ制御ブロック522を介してディスプレイ526に供給することができ る。プロセッサ528は、ビデオ・メモリ530に接続され、ビデオ・メモリ5 30は画像コプロセッサ410に接続される。 CPUバス512とディジタル・ビデオ制御ユニット522の間に接続された グラフィックス制御プロセッサ532およびグラフィックス・メモリ534を介 して個別のグラフィックス制御を用意することができる。 モーション・ビデオの場合、ビデオ予測記憶メモリ542と共に、動き推定コ プロセッサ538を追加することができる。 オーディオ機能は、オーディオ変換回路548に接続されたマイクロフォン5 44およびスピーカ546によって追加することができる。オーディオ圧縮コプ ロセッサ550は、組込み制御プロセッサ514とオーディオ変換ユニット54 8の間に接続することができる。 第6図は、画像圧縮コプロセッサ410とビデオ・メモリ530および組込み コプロセッサ514との接続をさらに詳しく示す。ローカル・メモリ540用の リフレッシュ信号およびアドレス信号を提供するメモリ・バス制御ユニット61 2も示されている。第6図は、第5図の図で指摘した直接制御プロセッサ514 を介する接続を有するのではなく、CPUバス512に接続するためのCPUイ ンタフェース614も示す。 第4図に戻ると分かるように、画像圧縮コプロセッサの内部グローバル・バス 上の通信は、パケットまたは「トークン」を使用することによって行われる。制 御トークンおよびデータ・トークンの2種類のトークンが使用される。これらの トークンを第7図に示す。制御トークンとデータ・トークンは共に、トークン記 述子と呼ばれる共通データ構造を有する。これは、12の8ビット・バイトから 成る96ビット・フィールドである。制御トークンとは、制御トークンであるこ とを示すように設定されたトークン・タイプを示す制御ビットを有するトークン 記述子である。トークン記述子は、52ビットの様々な制御ビットと、追加44 ビットのスカラ・データとから成る。 データ・トークンは、同じトークン記述子を含むが、ベクトル・データを含む 1つないし4つのデータ・ブロックも有する。データ・トークン中のトークン記 述子は、データ・トークンであることを示すように設定された制御ビットを有し 、他の2つの制御ビットは、接続されたベクトル・データ・ブロックの数を示す ように設定される。スカラ・データ・フィールドは空でよく、あるいは、データ ・ブロック・フィールド中のベクトル・データと共にスカラ・データを含むこと もできる。 トークン記述子および各ベクトル・データ・ブロックの96ビット幅は、内部 グローバル・バスの96行幅に対応する。トークン記述子の様々なフィールドを 以下の表1にさらに詳しく記載する。 制御トークンは、そのトークン記述子中のtype=0によって識別され、記 述子のみから成り、他のデータを含まない。制御トークンは、命令間でブール・ データまたは数値スカラ・データ、あるいはその両方を運ぶために使用される。 制御トークンの一般的な使用法は、ビデオ・メモリ読取り命令用のメモリ・アド レスを保持することと、プログラム・データフローをゲートするために使用され るブール・データを保持することが含まれる。 データ・トークンは、そのトークン記述子中のtype=1によって識別され 、記述子と1つまたは複数の64語データ・ブロックとから成る。データ・トー クンは主として、命令間でデータの数値ベクトルを運ぶために使用される。デー タ・トークンは、最大で4つのnblocks+1個のデータ・ブロックを含む 。各データ・ブロックは、表2に示したように8行×8列構成で構成された64 個の12ビット語を含む。 前述のように、トークン記述子のtypeフィールドは、制御トークンとデー タ・トークンを区別するものであり、nblocksフィールドは、データ・ト ークンを構成するデータ・ブロックの数を示すものである。 データ・トークンを構成するブロックはさらに、トークン記述子中のcomp sフィールドによって識別される構成要素としてグループ化される。最大3つの 構成要素(番号0、1、2)がトークン中に共存することができ、より小さい数 の構成要素に対応するブロックは、より大きな数の構成要素に対応するブロック よりも前に位置する。表1に示したように、3ビットcompsフィールドの各 ビットは、それに対応する番号の構成要素がトークン中に存在するかどうかを識 別する。構成要素が存在する場合、その構成要素を構成するデータ・ブロックの 数および形状構成は、制御装置418中の対応する番号のCONFIGレジスタ で示される。構成要素は、1つ、2つ、または4つのデータ・ブロックで構成す ることができる。CONFIGレジスタは、構成要素内のデータ・ブロックの構 成を示す数0ないし3を含む。これらの構成を第3G図に示す。構成要素の性質 に関して仮定はなされず、すなわち、構成要素は、(Y,U,V)データ、(R ,G,B)データで構成することができる。 表1中のerrflagフィールドは、命令の実行時に出会ったエラーの発生 を示すために様々な画像圧縮コプロセッサ410(ICC)命令によってセット される。各結果トークンの記述子中のerrflagビットの論理状態は、IC Cのデータフロー制御装置(DCU)418によって検査され、真であることが 判明した場合、その論理状態によって、DCUは次のプログラム実行を遮断する 。 mbtypeフィールドは、データ・トークンに関連するデータ・ブロックを 、必要に応じて圧縮または圧縮解除するために使用すべき方法または「モード」 を示すものである。mbtypeは、復号アプリケーションで使用されるとき、 プログラム・データフローを制御するために様々なICC命令によって検査する ことができる。符号化時には、mbtypeを使用して、どのモードを使用して データ・トークン中のデータを圧縮したかを示すことができる。 quantフィールドは、ICCのMPEGアルゴリズムおよびPx64量子 化アルゴリズムに固有のものである。MPEG順量子化および逆量子化の場合、 quantは、MPEG規格で定義されたquantizer_scaleの値 を含む。同様に、Px64順量子化および逆量子化の場合、quantは、この 規格のMQUANTパラメータの値を含む。quantは、JPEG量子化では 有効ではない。 vpos(「垂直位置」)フィールドおよびhpos(「水平位置」)フィー ルドはそれぞれ、ビデオ・メモリ読取りおよび書込みなどの動作に関するイメー ジ内のデータ・トークンの位置を識別する行アドレス・カウンタおよび列アドレ ス・カウンタとして使用されるものである。cntr1フィールドおよびcnt r2フィールドの汎用用途には、JPEG、Px64、MPEGなどの規格を実 施するアルゴリズムの必要に応じてブロック、マクロブロック、ブロック群、ス ライスなどをカウントすることが含まれる。cntr1フィールドは、セマフォ 命令を使用することによってプログラム・データフローを制御する特殊な役割も 果たす。vposフィールド、hposフィールド、cntr1フィールド、お よびcntr2フィールドの内容はすべて、トークン記述子修正命令を介して処 理される。 usrbitsフィールドの使用法は主として未定義であり、プログラマは、 このフィールドをいくつかの方法で使用することができる。たとえば、Px64 規格を実施するアプリケーションでは、usrbitsを使用して「FIL」や 「MC」などモード・ビットを保持することができる。 最後に、sfieldは、基本的に3種のスカラ・データを保持するために使 用され、sfield(23:0)は、ICCのMEANSQ命令、VAR命令 、およびSUBVAL命令によって生成される24ビットの2の補数結果を保持 する。1ビット・ブール値は、1flag、bytel、bit7に記憶し、プ ログラム・データ・フローの制御に関連するいくつかの命令によって読み取り、 あるいは書き込むことができる。第3のデータ・タイプの動きベクトルは、sf ieldの44ビットをすべて使用する。sfield(43:33)は、順方 向動きベクトルの水平成分を保持し、sfield(32:22)は垂直成分を 保 持する。逆方向動きベクトルの場合、sfield(21:11)が水平成分を 保持し、sfield(10:0)が垂直成分を保持する。順方向動きベクトル または逆方向動きベクトルの分解能は、それぞれ、DCU418中のFULLF MVフラグ・レジスタおよびFULLBMVフラグ・レジスタで示されるように 、全画素でも、半画素でもよい。 制御トークンおよびデータ・トークンは、オンチップ・メモリに記憶される。 トークン記憶域は、96ビット・ヘッダおよび16×96ビット・ブロック割振 り単位(BAU)の2種類の単位で割り振られる。各制御トークンは1つのヘッ ダを必要とし、各データ・トークンは1つのヘッダ・プラス(nblocks+ 1)//2BAU(「//」は、最近の整数への丸め、すなわち半値切上げを含 む整数除算を示す)を必要とする。 すべてのヘッダおよびBAUは、ICCメモリにオンチップで記憶される。I CCは、合計で128個のヘッダと64個のBAUを記憶する。すべてのヘッダ およびBAUの割振りおよび割振り解除は、命令によってトークンが作成または 使用されたときに、ICCのデータフロー制御装置(DCU)によって自動的に 処理される。 ICC410は、53個の内部命令を使用する。データ・フロー技法によれば 、これらの命令は、それらが必要とするオペランドが利用可能になった直後に実 行される。ある種の命令は、第4図中のある機能ユニット向けに指定される。命 令は、実行可能になると、その命令を処理する妥当なプロセッサ装置に経路指定 される。以下の表3には、各命令の簡単な説明が、その命令を処理する機能ユニ ットと共に記載されている。 各命令のより詳しい説明は、本明細書に添付した付録1に記載されている。プログラム ICCプログラムは、「ノード」が、そのデータ・オペランドを利用できるか どうかに基づいて実行されるデータ駆動命令フロー・グラフから成る。プログラ ム構造および実行に対するこのデータ駆動手法が、ICCの並列計算アーキテク チャと結合され、その結果、ICCは、アルゴリズムの融通性を損なわずにリア ルタイム画像圧縮に必要な極めて高いスループットをもたらすことができる。 プログラムは、ホスト・プロセッサ・インタフェースを介してICCの命令メ モリにダウンロードされる。ホストはダウンロード後、プログラムを、実行でき るようにイネーブルし、その後、オペランドが利用できるかどうかに基づいて命 令が自動的に実行される。命令は通常、他の命令、ビデオ・メモリ、またはホス ト・プロセッサから得られた画像データのパケットまたは「トークン」に作用し て、結果トークンを生成する。 ICC命令セットは、Px64(H.261とも呼ばれる)、MPEG、ベー スラインJPEGなどの業界標準のリアルタイム圧縮アルゴリズム・プログラミ ング要件を満たすように特定的に設計される。ICC命令は、下記の6つのクラ スに分割される。演算(Arithmetic)命令は、加算、減算、順方向D CT(離散余弦変換)および逆DCT、順量子化および逆量子化など演算を実行 する。論理(logical)命令は、ブール演算およびトークン・コピー演算 を実行する。記述子修正(Descriptor Modification) 命令は、トークンに関する記述情報を修正できるようにする。ビデオ・メモリ( Video Memory)命令は、ICCとビデオ・メモリの間での画像デー タのトークンを送信する。データフロー制御(Dataflow Contro l)命令は、データ依存条件またはフラグ依存条件に基づいて命令間でトークン を渡すことを制御する。ホスト・インタフェース(Host Interfac e)命令は、ICCとそのホスト・プロセッサ間でデータを都合よく転送できる ようにする。 ICCとそのホスト・マイクロプロセッサは、画像圧縮アルゴリズムの実行時 に協働する。ICCは、命令メモリにダウンロードされたプログラムの実行に全 責任を負い、プログラム実行中の様々な時点で、圧縮済み画像データを転送し、 あるいは、重大な制御情報を得るためにホストと通信するようにICCを強制す ることができる。ICCは、ホスト・ポール可能なフラグまたは割込みが利用可 能である場合、それを使用してホスト・アテンションを要求する。ホストの観点 からは、ICCは、画像圧縮アルゴリズムのすべての計算多用部分を実行する極 めて自律的なスレーブ・コプロセッサである。ホストは、ICC内の一般演算パ ラメータを設定し、ICCでは処理されないハフマン符号化および復号などの演 算を実行する。 ICCのビデオ・バスの使用は、直接プログラマによって制御される。命令に 応じて32ビット幅または16ビット幅になるように構成できるバスに、1つ、 または物理的に異なる複数のビデオ・メモリを接続することができる。複数のバ ス・マスタが同じビデオ・バス上に存在することができ、競合は、デージーチェ ーン調停方式によって解決される。ビデオ・インタフェースは、高速ページ・モ ードDRAMまたはVRAM、あるいはその両方と共に使用できるように最適化 されて通常の読取り/書込み転送をサポートし、VRAM間転送、SAM・DR AM間転送、DRAM・SAM間転送向けにも最適化される。このインタフェー スの11ビット・アドレス32ビット・データ・バスは、最大4096×409 6画素の画像にアクセスすることも、あるいは、5μsよりも短い時間で16× 16画素ブロックを書き込むこともできる。 ICCの補助バス・インタフェースは、最大4つの外部インタフェース装置に 接続することができる。補助プロセッサは、ICCがサポートしない追加機能を 提供するようにICCに接続することも、あるいは、すでにサポートされている 機能(動き推定など)を加速するようにICCに接続することもできる。補助プ ロセッサの一例は、動き推定コプロセッサ(MEC)である。データフロー制御装置(第8図) DCU418は、様々な機能ユニット間のトークン・トラフィックをスケジュ ーリングし、DCUのスカラ命令およびセマフォ命令を実行する責任を負う(表 3参照)。制御ユニットは、4つの主要なユニットから構成される。これらのユ ニットとは、更新ユニット812、イネーブル済み命令待ち行列814、グロー バル・バス・インタフェース・ユニット816、およびトークン・メモリ・ユニ ット810である。 更新ユニット812は、すべての命令の実行状態を連続的に監視する。ある命 令が実行を完了すると、更新ユニット812はその宛先命令を見つけて、データ および処理資源が利用可能であるときは、宛先命令を実行できるようにスケジュ ーリングする。更新ユニット812は、セマフォ命令実行の第1の部分を実行す る責任も負う。 イネーブル済み命令待ち行列814は、実行可能な命令を更新ユニット812 から受信し、グローバル・バス・インタフェース・ユニット816の処理準備が 完了するまでその命令を保持する。これによって、機能ユニットに命令を分配す ることから命令のスケジューリングが分離され、そのため、いくつかの実行可能 な命令が一度に存在することができる。 グローバル・バス・インタフェース・ユニット816はいくつかの機能を実行 する。グローバル・バス・インタフェース・ユニット816は、イネーブル済み 命令待ち行列814から新しい命令を受信した後、トークン・メモリ・ユニット 810から必要なトークンを取り出し、実行するために命令と共に妥当な機能ユ ニットへ送信し、あるいは、命令がスカラ命令またはセマフォ命令である場合、 その命令を実行してトークン・メモリ・ユニット810に結果を返す。機能ユニ ットが実行を終了すると、グローバル・バス・インタフェース・ユニット816 は、結果トークン(もしあれば)を受信し、トークン・メモリ・ユニット810 へ転送し、命令の処理が完了したことを更新ユニット812に通知する。 トークン・メモリ・ユニット810は、ブロック割振りユニット(BAU)メ モリ818、ヘッダ・メモリ820、トークン・アドレス・メモリ819、メモ リ割振り機構822の4つの主要な部分から成る。BAUメモリ818は、処理 を完了して、機能ユニットへ送信されるのを待っているデータ・トークンのデー タ・ブロックを含む。ヘッダ・メモリ820は、各データ・トークンまたは制御 トークンのトークン記述子を含む。トークン・アドレス・メモリ819は、BA Uメモリ818中のBAUをヘッダ・メモリ820中のトークン記述子に関連付 け、トークン記述子も、それを作成した命令に関連付ける。メモリ割振り機構8 22は、それぞれ新しいトークン記述子およびBAU用のヘッダ・メモリ820 およびBAUメモリ818中のメモリ空間を割り振り、データが機能ユニットに 送信されたときにメモリ空間を割り振り解除する。 ICC命令は、プログラム実行前にホスト・プロセッサによってロードされる オンチップ128語×40ビット命令RAM824に存在する。第9図に示した ように、各ICC命令は、単一の40ビット語を占有するが、4つの異なるフォ ーマットのうちの1つを有することができる。この4つのフォーマットは、各フ ォーマットが保持できる宛先命令アドレスの数、すなわち、3、2、1、または 0によって区別される。 命令は、アドレス0で始まる命令RAM内のメモリの連続ブロックを占有しな ければならない。すべてのCRTOKEN命令がアドレス0から位置決めされ、 他のタイプの命令の前に位置しなければならないことを除いて、一般に、命令は 命令RAM内で任意の方法で順序付けることができる。 命令は、ICC410自体(X=0)、またはICCの補助バス・インタフェ ースに接続された補助(すなわち、外部)プロセッサ(X=1)によって実行さ れる命令コードを有することができる。ICC上の補助インタフェース・ユニッ ト(AIU)430は、最大4つの補助プロセッサを同時に管理する責任を負う 。各6ビット外部命令コードの最下位2ビットは、適当な補助プロセッサを選択 するためにAIUによって復号される。 動作時には、ICCが圧縮機能または圧縮解除機能を実行できるように、ホス ト・インタフェースを介して外部ホスト・コンピュータからデータ・フロー制御 ユニットにプログラムがロードされる。プログラムは、第8図の命令メモリ82 4に記憶される。この命令は、付録1に記載した命令のうちの一連の命令であり 、それぞれ、第9図に記載したフォーマットのうちの1つのフォーマットを有す る。 復号化アルゴリズム・プログラムの一例を第10図に示す。第10図中の各ブ ロックは、実行すべき特定の命令を示し、データ・フロー・フォーマットで記載 されている。各命令は、オペランド・トークン内のすべてのデータに作用し、オ ペランド・トークンが必要とされない場合は、他の何らかのソースから得たデー タに作用する。たとえば、第10図中の第1の命令”RUNDEC”は、ホスト ・プロセッサによって配置されたRPUのレート・バッファ中のデータから結果 トークンを作成する。その結果トークンが利用可能になると、次の命令がそのト ークンに作用し、以下同様である。その間、RUNDEC命令は次の利用可能な RPUデータに作用することができる。 各結果トークンを構成するデータ・ブロックは、各命令を実行する処理ユニッ トから第8図のBAUメモリ818に転送され、表2に記載したベクトル・フォ ーマットで記憶される。各トークンに関連するトークン記述子は、ヘッダ・メモ リ820に記憶される。トークン記述子のフォーマットは表1に記載されている 。トークン・アドレス・メモリ819には、トークンを作成した命令のアドレス と、各データ・トークンごとに、トークンのデータ・ブロックを記憶しているB AUの数、およびBAUメモリ818中のBAUのアドレスも書き込まれる。 命令は命令RAM824に記憶される。各命令を実行するのに必要なトークン ・オペランド(もしあれば)のアドレスと、各命令の動作状況が、更新ユニット 812(第11図参照)、オペランドRAM821および命令ビジーRAM82 3に記憶される。オペランドRAM821中の「オペランド存在」ビットで示さ れ(かつ他の何らかの補助条件が満たされる)るように命令RAM824中の特 定の命令のオペランドの準備が完了すると、命令は、更新ユニット812によっ てオペランド・アドレスと共にイネーブル済み命令待ち行列814に転送される 。命令および関連情報は後で、イネーブル済み命令待ち行列814から読み取ら れ、グローバル・バス・インタフェース・ユニット816へ転送される。 グローバル・バス・インタフェース816は、命令を、グローバル・バス上で 送信されるように、第3E図に示したようにプロセッサ・パケットに入れる。命 令に関連するオペランド・データは、ヘッダ・メモリ820から得た記述子およ びBAUメモリ818から得たベクトル・データ自体を使用してトークン・メモ リ・ユニット810から検索され、トークンとしてアセンブルされる。次いで、 プロセッサ・パケットとオペランド・トークンは共に、グローバル・バス・イン タフェース・ユニット816によって、命令を実行する責任を負う処理ユニット へ送信される。 処理ユニットが、命令に応じてデータを処理した後、結果トークンがDCU4 18に返される。結果トークンのデータは、トークン・メモリ・ユニット810 に戻され、更新ユニット812は、結果トークンのヘッダ・メモリ・アドレスを トークン・メモリ・ユニット810から受信し、この結果をもたらした命令のア ドレスをグローバル・バス・インタフェース・ユニット816から受信する。更 新ユニットは、この結果をもたらした命令から宛先を読み取り、各宛先命令の妥 当なオペランド・アドレス・フィールドにトークン・ヘッダ・アドレスを置く。 更新された命令は、それに必要なすべてのオペランドが存在するときに実行に関 してイネーブルされる。 イネーブル済み命令は、そのイネーブル済み命令パケットがアセンブルされ、 イネーブル済み命令待ち行列814へ送信されときにファイアされたと言われる 。一般に命令がファイアされるのは、下記の条件が満たされた場合である(ある 種 の命令は条件3しか必要としない) 1.命令を発行すべきプロセッサがアイドル状態である。 2.イネーブル済み命令待ち行列814中の同じプロセッサに対する他の命令 はない。 3.命令ビジーRAM中で命令の「ビジー・ビット」がでセットされていない 。これは、命令が現在実行されておらず、命令の前の実行の結果がトークン・メ モリ・ユニット810に残っていないことを意味する。 ファイアされたすべての命令は、命令ビジー・ビットをセットされている。こ のビットは、命令によって作成された結果トークン(もしあれば)がすべての宛 先命令によって使用されるまでクリアされない。更新ユニット(第11図) 更新ユニット812は主として、ICCの様々な機能ユニット上での命令を開 始し、終了する責任を負う。更新ユニット812は、グローバル・バス・インタ フェース・ユニット816内のスカラ・プロセッサ・ユニットと共に、いわゆる セマフォ命令INITSEM、TSTSEM、INCSEM、およびTSTDE Cを実行する責任も負う。更新ユニット812は、 1.主制御装置ブロック1121 2 ホスト・バス・インタフェース・ブロック1125 3.命令イネーブル・ブロック1113 4.セマフォ命令ブロック1117 5.命令更新ブロック1123 6.命令RAM824 7.命令復号化ROM1111 8.オペランドRAM821 9.命令ビジーRAM823 の各主要ブロックから成る。 命令RAM1118は、幅40ビットであり、長さ128語であり、各語は、 第9図に示したようにフォーマットされた単一のICC命令を含む。このRAM は通常、システム初期設定時に外部ホスト・プロセッサによって内部ホスト・バ ス413を介してロードされる。 命令復号化ROM1111は、幅11ビットであり、長さ128語である。命 令イネーブル・ブロック1113は、命令の6ビット命令コード・フィールドと 1ビットXフィールドを連結したものを使用して命令復号化ROMにアドレスす る。ROMの各語では、単一ビットのみが、内部ICC機能ユニットまたは外部 プロセッサ・ユニットが命令を実行する必要があることを示す「1」にセットさ れる。Xビットが「1」にセットされた命令は、「外部」命令であり、オフチッ プ機能ユニット(すなわち、物理的にICCの一部ではない機能ユニット)によ って実行する必要がある。 オペランドRAM821は、幅21ビットで長さ128語であり、命令RAM 1118中の各命令ごとに1語を有する。各語は、第3A図に示したようにフォ ーマットされ、ICCがリセットされたとき必ずゼロにセットされる。各語のビ ット20ないし16に記憶されているデータは、セマフォ命令の実行時にセマフ ォ命令ブロック1117によって使用される。ビット15ないし0は、対応する 命令のすべての必要なオペランド・トークン(もしあれば)が現在、トークン・ メモリ・ユニット810に存在しているかどうかを判定し、そうである場合、ト ークン・メモリ・ユニット810のトークン・アドレス・メモリ819中の前記 オペランド・トークンのアドレスが何であるかを判定するために命令イネーブル ・ブロック1113によって使用される。 命令ビジーRAM823は、幅1ビットで長さ128語であり、命令RAM8 24中の各命令ごとに1語を有する。オペランドRAM821の場合と同様に、 このRAM中の各語は、ICCがリセットされると必ずゼロにセットされる。こ のRAM中の語が「1」にセットされた場合は、下記の条件のうちの1つが真で あることを示す。 1.対応する命令が実行できるようにスケジューリングされた(すなわち、そ の命令がイネーブル済み命令待ち行列814に存在する)。 2.対応する命令が現在、機能ユニット上で実行されている。 3.対応する命令が、そのすべての宛先によって使用されたわけではないトー クン・メモリ・ユニット810中に存在する結果トークンを有する。 主制御装置ブロック1121は、更新ユニット812内の活動の調和を図り、 命令イネーブル・ブロック1113または命令更新ブロック1123の実行を活 動化する。命令イネーブル・ブロック1113は最初、プログラムが動作を開始 するときに活動化される。 ホスト・バス・インタフェース・ブロック1125は、様々なDCUレジスタ を保持し、ICCの内部ホスト・バスとDCUレジスタを使用するDCUの他の 部分の両方とDCUレジスタとのインタフェースをとる。内部ホスト・バスは、 ICCを制御する外部ホスト・プロセッサが様々なICCレジスタおよびメモリ にアクセスできるようにするホスト・インタフェース・ユニット412に接続さ れる。このブロック中のレジスタは、4つのセマフォ・レジスタSEMREG( 0)ないしSEMREG(3)と、「最後のプログラム・アドレス・レジスタ」 LASTADDRと、構成要素構成レジスタCONFIG0、CONFIG1、 CONFIG2と、プロセッサ状況レジスタPSWと、エラー状況レジスタER RSTATとを含む。ホスト・バス・インタフェース・ブロック1125は、内 部ホスト・バスと命令RAM824とのインタフェースもとる。 更新ユニット812内の命令イネーブル・ブロック1113は、命令RAM8 24中の各命令を、適当な時間に実行されるように「イネーブルする」責任を負 う。一般的に言えば、命令は、下記の「イネーブル」条件をすべて満たしたとき に実行がイネーブルされる。 1.すべての必要なオペランド・トークン(もしあれば)がトークン・メモリ ・ユニット810中に存在する。 2.命令ビジーRAM823中の命令の対応する項目が0である。 3.命令が必要とする特殊イネーブリング条件が満たされている。 命令イネーブル・ブロック1113は、所与の命令の「オペランド数(NO) 」フィールドを調べて、その命令がオペランドを必要とするかどうかを判定し、 次いで、オペランド・メモリ821中の命令の「オペランド存在」ビットを調べ てそのオペランドがトークン・メモリ810中に存在するかどうかを判定するこ とによって、その命令に関する条件(1)を試験する。条件(3)で試験される 「特殊イネーブリング条件」は、命令の命令コードに依存する。そのような条件 を有する命令は、トークン・オペランドを有さず、あるいは、トークン・メモリ ・ユニット810中に存在するそのオペランド・トークンを有するだけでなく、 満たすべき何らかの論理条件を必要とする。前者の範疇の命令は、CRTOKE N、RUNDEC、およびSNEAKであり、セマフォ命令およびSNOOP命 令は後者の範疇に入る。外部命令は、どちらの範疇に入ることもできる。 命令イネーブル・ブロック1113によって「イネーブルされた」命令を使用 して、72ビット「イネーブル済み命令パケット」(第3C図)が形成され、次 いで、命令イネーブル・ブロック1113がこのパケットをイネーブル済み命令 待ち行列814に入れようとする。この試みは、下記のすべての「待ち行列」条 件が真である場合には成功する。 1.命令を実行するのに必要な機能ユニットがアイドル状態である。 2.イネーブル済み命令待ち行列814は現在、着信命令と同じ機能ユニット を必要とする他の命令からのイネーブル済み命令パケットを含まない。 3.イネーブル済み命令待ち行列814が満杯ではない。 表3にリストしたDCU命令は例外であり、イネーブル済み命令待ち行列81 4に入れられる前に上記の条件(3)を満たしておくだけでよい。 現在、命令イネーブル・ブロック1113によってイネーブルすべきかどうか を調べられている、命令のアドレスは通常、7ビット「イネーブル済み命令カウ ンタ」(en_counter)の内容によって与えられ、ある種の環境では、 この代わりに、命令更新ブロック1123によってこのアドレスが提供される。 en_counterは、ICCがリセットされたときにゼロにリセットされる 。en_counterは、その内容が「最後のプログラム・アドレス」レジス タLASTADDRに一致するまで、(命令イネーブル・ブロック1113が動 作していない間でも)連続的に「1」だけ増分される。一致した時点で、en_ counterはゼロにリセットされ、再び増分を開始する。 命令イネーブル・ブロック1113は、3段パイプラインを使用して、命令を イネーブルしそのイネーブル済み命令パケットをイネーブル済み命令待ち行列8 14に書き込む。第1パイプライン段で、命令イネーブル・ブロック1113は 、 前述の3つのイネーブリング条件を検査する。最初の2つの条件はあらゆる命令 の場合に検査される。しかし、この段では、「特殊イネーブリング条件」はCR TOKEN命令、RUNDEC命令、およびSNEAK命令の場合にのみ検査さ れる。いわゆる「イネーブル」ビットは、命令がそのすべての第1段イネーブリ ング条件に合格したときに第1パイプライン段の出力レジスタ中で「1」にセッ トされる。 CRTOKEN命令は、プログラム中のCRTOKEN命令の各インスタンス が一度しか実行されないという点でユニークである。CRTOKEN命令は、オ ペランド・トークンを有さず、その目的は、プログラムが開始されたとき、プロ グラムの残りの部分の実行を「ブートストラップ」するために単一のトークンを 作成することである。この動作を実施するために、命令イネーブル・ブロック1 113は、特殊な1ビット・レジスタを含み、命令イネーブル・ブロック111 3の第1パイプライン段は、このレジスタがゼロにセットされない限りCRTO KEN命令をイネーブルしない。このレジスタは、ICCがリセットされたとき に必ずゼロにセットされ、命令イネーブル・ブロック1113が初めてCRTO KEN命令ではない命令をイネーブルしようとしたときに「1」にセットされ、 ICCが再びリセットされるまで「1」にセットされたままである。プログラム は、最大3つのCRTOKEN命令を含むことができ、すべての命令は、命令R AM824中にアドレス0から連続的に位置しなければならない。 CRTOKENと同様に、RUNDEC命令およびSNEAK命令はオペラン ド・トークンを有さない。RUNDECは、ICCのラン・レングス・プロセッ サ・ユニット(RPU)によって実行される。命令イネーブル・ブロック111 3は、RUNDECをイネーブルするために、RPUの入力FIFOが空でない ときにRPUによってアサートされる状況信号を検査する。同様に、命令イネー ブル・ブロック1113は、SNEAKをイネーブルするために、TIUのトー クン・パッシング・バッファがホスト・プロセッサから得た新しいトークンを含 むときにトークン・インタフェース・ユニット(TIU)によってアサートされ る状況信号を検査する。 命令イネーブル・ブロック1113の第2パイプライン段では、SNOOP命 令、セマフォ命令、および外部命令に関する特殊イネーブリング条件が、第1の 2つの待機条件と同様に、検査される。いわゆる「ビジー」ビットは、ある命令 に関して検査されたすべての条件が真であるときに第2パイプライン段の出力レ ジスタ中で「1」にセットされ、第1パイプライン段から得た命令のイネーブル ・ビットも「1」にセットされる。 SNOOP命令はTIUによって実行される。第2パイプライン段は、SNO OP命令をイネーブルするために、TIUのトークン・パッシング・バッファが 空であり、新しいトークンを受信する準備が完了したときにTIUによってアサ ートされる状況信号を検査する。このトークンは、以前に第1パイプライン段で 存在が検証されたSNNOP命令のオペランドから提供される。 外部命令は、第24図に示したICCの補助プロセッサ・インタフェース・ユ ニット(AIU)を介してオフチップ機能ユニットに渡される。AIUは、それ ぞれ、最大4つの並行機能ユニットを含むことができる、最大4つの外部プロセ ッサ・チップと通信する責任を負う。外部命令を実行するのに必要な外部プロセ ッサ・チップは、外部命令の6ビット命令コード・フィールドの最下位2ビット (ビット1および0)によって指定され、プロセッサ内の機能ユニットは、命令 コードのビット3および2によって指定される。 AIUは、外部命令状況テーブル2415、すなわち、幅1ビット、長さ16 語のRAMを含む。このRAMは、ICCがリセットされ命令イネーブル・ブロ ック1113によって読み取られ、外部命令を実行するのに必要なオフチップ機 能ユニットがアイドル状態であるかどうかが判定されたときに必ずクリアされる 。このRAMは、第2パイプライン段中に、外部命令の命令コード・フィールド の最下位4ビットを使用してアドレスされる。この語がゼロである場合、対応す る外部プロセッサ・チップ内の対応する機能ユニットはアイドル状態である。オ フチップ機能ユニットとAIUが共にアイドル状態であり、第2の待機条件が満 たされている場合、第2のパイプラインのビジー・ビットが「1」にセットされ る。 セマフォ命令は、ICCの4つのセマフォ・レジスタのうちの1つの内容を試 験し、あるいは処理し、あるいはその両方を行い、次いで、命令のオペランド・ トークンをレジスタの出力にコピーする。TSTSEM命令およびTSTDEC 命令の場合、前記コピー動作は、何らかのセマフォ試験が満たされるまで遅延す る。第1パイプライン段でイネーブルされたセマフォ命令は、第2パイプライン 段で検出され、さらに条件を検査し部分的に実行できるようにセマフォ命令ブロ ック1117にセットされる。 INITSEM命令の場合、セマフォ命令ブロック1117は、2つの命令パ ラメータによって選択されたセマフォ・レジスタ・ビットを、第3の命令パラメ ータから与えられた値に設定するに過ぎない。INCSEMでは、この命令は、 他の2つの命令パラメータによって選択されたセマフォ・レジスタ・ビットに2 つの命令パラメータのうちの一方を加える。この加算用に選択されるパラメータ は、オペランドRAM821中の命令に対応する語の最上位ビット(ビット20 )の状態によって決定される。セマフォ命令ブロック1117は、INITSE MまたはINCSEMを処理した後、「セマフォ・ビジー」(sem_bz)信 号を「1」にセットして命令イネーブル・ブロック1113に戻す。 TSTDEC命令の場合、セマフォ命令ブロック1117は、2つの命令パラ メータとは別の2つの命令パラメータによって選択されたセマフォ・レジスタ・ ビットから、前者の2つの命令パラメータのうちの一方を減じる。減算用に選択 されるパラメータは、オペランドRAM821中の命令に対応する語の最上位ビ ット(ビット20)の状態によって決定される。この差は、ゼロ以上であり、選 択されたセマフォ・レジスタ・ビットの内容がこの差と置換され、sem_bz が「1」にセットされる。この差がゼロ未満である場合、選択されたセマフォ・ レジスタは変更されず、sem_bzはゼロにセットされる。 最後に、TSTSEM命令の場合、セマフォ命令ブロック1117は、2つの 命令パラメータを使用してセマフォ・レジスタ・ビットを選択し、第3のパラメ ータを使用してこのビットをマスクし、次いで、このビットが第3のパラメータ によってマスクされた後のオペランドRAM821中の命令に対応する語のビッ ト19ないし16の状態とこのビットを比較する。この比較の結果、一致した場 合、sem_bzは「1」にセットされ、そうでない場合、sem_bzはゼロ にセットされる。 セマフォ命令ブロック1117がセマフォ命令の処理を終了した後、命令イネ ーブル・ブロック1113の第2パイプライン段は、そのビジー・ビットをse m_bzと同じ値を有するようにセットする。セマフォ命令のトークン・コピー 動作は、命令がイネーブル済み命令待ち行列814に送られた後にグローバル・ バス・インタフェース816中のスカラ・プロセッサ・ユニット(SPU)によ って実行される。SPUは、セマフォ命令を待ち行列から読み取り、コピー命令 と同様に処理する。 命令イネーブル・ブロック1113の第3の最後のパイプライン段で、第2パ イプライン段から得たビジー・ビットの状態と同様に、第3の待機条件が検査さ れる。イネーブル済み命令待ち行列814が満杯でなく、パイプライン・ビジー ・ビットが「1」にセットされている場合、命令用のイネーブル済み命令パケッ トが作成され、イネーブル済み命令待ち行列814にセットされ、命令ビジーR AM中の命令に対応する語が「1」にセットされる。イネーブル命令待ち行列8 14が満杯であり、あるいは、パイプライン・ビジー・ビットがゼロにセットさ れている場合、前記事象はいずれも発生しない。 命令更新ブロック1123は、トークン・メモリ・ユニット810またはグロ ーバル・バス・インタフェース・ユニット816によってそれぞれ、「ビジー・ クリア」(cl_bz)信号または「結果パケット・ロード」(ld_res_ pac)信号が主制御装置ブロック1121にアサートされたときに必ず活動化 される。cl_bz信号は、トークン・メモリ・ユニット810のヘッダ使用メ モリ1411中のトークン使用率カウントがゼロに減分したときに必ずアサート され、関連するトークンがもはやどの命令からも必要とされないことを示す。ト ークン・メモリ・ユニット810は、cl_bzをアサートするだけでなく、ト ークンを作成した命令のアドレスも命令更新ブロック1123へ送り、トークン ・アドレス・メモリ819中のトークンの語の最上位7ビットからこのアドレス を読み取る。命令更新ブロック1123は次いで、命令ビジーRAM823中の そのアドレスにある語をゼロにセットし、それにより、命令イネーブル・ブロッ ク1113によって、将来のあるときに対応する命令を再びイネーブルできるよ うにする。 ld_res_pac信号は、実行を終了した命令からの「結果パケット」レ ディを有するときは必ず、グローバル・バス・インタフェース816内のバス・ アービタ1310によってアサートされ、主制御装置ブロック1121に命令イ ネーブル・ブロック1113を中断させ、命令更新ブロック1123を活動化さ せる。54ビット結果パケットは、第3B図に示したようにフォーマットされ、 通常、実行を終了した命令の各宛先命令に対応するオペランド・メモリ821中 の位置を修正するために命令更新ブロック1123によって使用される。結果パ ケットは、グローバル・バス416を介して送信され、命令更新ブロック112 3内の「更新レジスタ」に記憶される。 ld_res_pac信号には他の「非更新」信号(no_update)が 伴い、「非更新信号」は、アサートされると、終了した命令が結果トークンを有 さないことを示す。命令のNOフィールドがゼロであるために命令が結果トーク ンを生成しないことが保証される(この範疇の命令はRUNENC、SNOOP 、WRV16、およびWRV32である)ケース、または命令がときどき結果ト ークンを生成する(この範疇の命令はスカラ命令CGATE、DGATE1、D GATE2、FGATE、およびGATEである)ケースの2つのケースがあり 得る。どちらの場合も、命令更新ブロック1123は、終了した命令のアドレス を更新レジスタから抽出し、命令ビジー・メモリ823中のその位置にある語を ゼロにセットする。トークン・メモリ・ユニット810は、結果トークンを生成 しない命令に対してはcl_bz信号をアサートしないので、前記動作は、その ような命令を命令イネーブル・ブロック1113によって再びイネーブルできる ようにするために必要である。 ld_res_pacがアサートされ、no_updateがアサートされて いないとき、命令更新ブロック1123は、結果パケットの命令の「宛先数」フ ィールド(ND)を命令更新ブロックの「更新カウンタ」にロードし、更新状態 マシンを開始する。オペランド・メモリ821を修正するプロセスは、宛先当た り3クロック・サイクルを必要とし、各宛先は順番に処理される。第1クロック ・サイクル中に、更新レジスタ内の適当な宛先フィールドの7ビット「命令アド レス」部分によって選択される位置でオペランド・メモリ821が読み取られ、 取り出された21ビット・ワードが、3つのレジスタに記憶される。すなわち、 5ビット・セマフォ・フィールドは「セマフォ・レジスタ」に記憶され、各8ビ ット・オペランド・アドレス・フィールドは「オペランド・アドレス・レジスタ 」に記憶される。第2クロック・サイクル中に、適当な更新レジスタ宛先フィー ルドの1ビット「オペランド選択」部分によって選択されるオペランド・アドレ ス・レジスタの最上位ビットが、「オペランド存在」を示す「1」にセットされ 、この同じレジスタの最下位7ビットに更新レジスタの「結果アドレス」フィー ルドがロードされる。セマフォ・レジスタには、更新レジスタの最上位5ビット がロードされる。最後のクロック・サイクル中に、セマフォ・レジスタおよび2 つのオペランド・アドレス・レジスタのそれぞれの内容が、それが読み取られた ときと同じ位置でオペランド・メモリ821に書き直される。更新カウンタは、 宛先が処理されるたびに「1」だけ減分され、このカウンタがゼロになると、命 令更新ブロック1123が非活動化され、主制御装置ブロック1121が命令イ ネーブル・ブロック1113を再開する。 命令更新ブロック1123によって最後に処理される宛先命令(もしあれば) のアドレスは、命令イネーブル・ブロック1113が再開されるときにこのブロ ック1113に渡され、この命令は、命令イネーブル・ブロック1113が最初 にイネーブルしようとする命令となる。しかし、この命令のアドレスは、イネー ブル命令カウンタen_counterにはロードされない。その後、命令イネ ーブル・ブロック1113は、命令更新ブロック1123のために中断されるま で、en_counterを命令アドレス・ソースとして使用し続ける。イネーブル済み命令待ち行列(第12図) イネーブル済み命令待ち行列814(「待ち行列」)は、第12図にさらに詳 しく示されており、更新ユニット812とグローバル・バス・インタフェース・ ユニット816の間のメモリ・バッファとして働く。この待ち行列が必要なのは 、通常グローバル・バスユニット816が命令およびオペランド・トークンを機 能ユニットにディスパッチするのに要する時間中に、いくつかの命令を更新ユニ ット812によってイネーブルすることができるからである。更新ユニット81 2は厳密に待ち行列への書込みを行い、グローバル・バス・インタフェース・ユ ニ ット816は厳密に待ち行列からの読取りを行う。この待ち行列は、FIFOメ モリ1210、FIFO制御機構1212、および待ち行列状況ブロック121 6の3つの主要なブロックから成る。 FIFOメモリ1210は4つの72ビット・レジスタから成る。各レジスタ は、1つのイネーブル済み命令パケットを保持することができ、あるレジスタか らの読取りを行い、同時に別のレジスタへの書込みを行うことができる。FIF O制御機構1212は、FIFOメモリ1210へのアクセスを「先入れ先出し 」的に制御するのに必要な論理機構およびレジスタを含む。これには、”ld_ ptr”と呼ばれる2ビット書込みポインタ、”rd_ptr”と呼ばれる2ビ ット読取りポインタ、およびFIFOメモリ1210が空であるか、満杯である か、それとも、部分的に書き込まれているかを追跡する状態マシンが含まれる。 ld_ptrとrd_ptrは共にラップアラウンド的に増分し(すなわち、「 3」の後に「0」が続く)、ICCがリセットされたときにゼロにセットされる 。状態マシンは、FIFOメモリ1210が満杯であるときに「イネーブル済み 命令待ち行列満杯」(en_inst_full)信号を更新ユニット812に アサートし、このユニットがイネーブル済み命令パケットを要求しFIFOメモ リ1210が空でないときに「次の命令のロード」(ld_next_inst )信号をグローバル・バス・インタフェース・ユニット816にアサートする。 更新ユニット812は、書込みを要求する前に、en_inst_full信 号を検査する。この信号がアサートされていない場合、更新ユニット812は、 「イネーブル済み命令パケット・ロード」(ld_en_inst_pac)信 号を待ち行列にアサートする。待ち行列は、イネーブル済み命令パケットを、更 新ユニット812から、ld_ptrによって選択されたFIFOメモリ121 0のレジスタにロードすることによって応答し、次いで、ld_ptrが「1」 だけ増分される。次いで、FIFO制御機構1210は、FIFOメモリ121 0が現在満杯である場合にen_inst_fullをアサートする。 グローバル・バス・インタフェース・ユニット816は、「次の命令の読取り 」(rd_next_inst)信号をアサートすることによって、待ち行列か らイネーブル済み命令パケットを要求する。FIFOメモリ1210が空でない 場 合、待ち行列は、ld_next_inst信号をアサートし、rd_ptrに よって選択されたFIFOメモリ1210中のレジスタをグローバル・バス41 6上に出力することによって応答する。次いで、rd_ptrが増分され、FI FO制御機構1212内部の状態マシンが、FIFOメモリ1210が現在空で あるかどうかを検査する。 待ち行列状況ブロック1216は、どの機能ユニットが待ち行列中に命令を有 するかを連続的に監視し、この情報を11ビット「待ち行列状況」(unit_ q_stat)出力信号を介して更新ユニット812に報告する。待ち行列が、 unit_q_stat中の当該のビット位置に対応する機能ユニットによって 実行すべき命令を含むときは必ず、当該のビットが「1」にセットされる。ビッ ト位置と機能ユニットの対応は、更新ユニット812内の命令復号ROM111 1に関する対応と同じである。グローバル・バス・インタフェース・ユニット(第13図) グローバル・バス・インタフェース・ユニット816は、4つの主要なブロッ クの周りに構築される。これらのブロックとは、バス・アービタ1310、命令 コンポーザ1312、スカラ・プロセッサ・ユニット(SPU)1314、およ び主制御装置1322である。これらのブロックのうちの最初の2つはそれぞれ 、DCUとその他の機能ユニットの間でトークンを受信し、送信する責任を負う 。第3のブロックは、トークン記述子を処理するすべての命令を実行することが できる。第4のブロックは、イネーブル済み命令待ち行列814とのインタフェ ースをとり、他の3つのブロックのうちのどれを活動化すべきかを判定する。最 初の3つのブロックのうちで、一度に活動化できるのは1つだけである。命令コ ンポーザ1312およびスカラ・プロセッサ・ユニット1314が優先される。 というのは、これらのブロックはトークン・メモリを空にする傾向があるからで ある。これらのブロックのうちのどちらも機能しておらず、グローバル・バス調 停が要求されている場合、バス・アービタ1310が機能する。 非SPU命令が実行を完了し、その結果トークン(もしあれば)をDCU41 8に送り返すプロセスは、そのような各命令の機能ユニットがその「アービタ要 求」信号(arb_request)を主制御装置1322にアサートすること によって開始する。その後、主制御装置1322は、バス・アービタ1310に 通知し、バス・アービタ1310は、そのアービタ許可カウンタ(arb_gr ant_count)の増分を開始する。このカウンタの各状態は、機能ユニッ トに対応する。このカウンタの状態が、サービスを要求している機能ユニットに 一致するとき、カウンタは停止し、主制御装置1322が次に、他の機能ユニッ トに応答するようバス・アービタ1310に通知するまでその状態のままである 。この機構によって、各機能ユニットは同様にグローバル・バス416にアクセ スすることができる。バス・アービタ1310は次いで、一致する機能ユニット の「プロセッサ・パケット送信」信号(proc_pac_ld_out)をア サートし、次いで、この機能ユニットが「プロセッサ・パケット準備完了」信号 (proc_packet_ready)およびプロセッサ・パケット自体をグ ローバル・バス416上でアサートすることによって応答するのを待つことによ って、プロセッサ・パケットを送信することをこの機能ユニットに要求する。プ ロセッサ・パケットは、第3F図に示したようにフォーマットされる。 バス・アービタ1310は、プロセッサ・パケットを読み取り、機能ユニット が送信したいトークン・データの語の数を判定する。この機能ユニットが結果ト ークンを有する場合、バス・アービタ1310は、トークン・メモリ・ユニット 810にそのトークン用のメモリ空間を割り当てさせ、選択されたこの機能ユニ ットに「アービタ許可」信号(arb_grant)信号をアサートする。バス ・アービタ1310は次いで、この機能ユニットが「データ・レディ」信号(d ata_ready)をアサートしグローバル・バス416を介してトークン・ データを送信するのを待つ。グローバル・バス416を介して転送されるすべて の語は、トークン・メモリ・ユニット810へ、記憶するために送信される。転 送の終わりは、機能ユニットがdata_readyをアサート解除することに よって通知され、バス・アービタ1310はその後、arb_grantをアサ ート解除する。 バス・アービタ1310は、機能ユニットから送信されたプロセッサ・パケッ トで「結果パケット」も形成し、更新ユニット812へ送信する。結果パケット は、第3B図に示したようにフォーマットされ、実行を終了した命令のアドレス と、トークン・メモリ・ユニット810中のトークンの記憶域アドレスと、結果 トークンのトークン記述子のcntrlフィールドのビット3:0およびnbl ocksフィールドのビット1とから成る。後者の5ビットは、TSTSEMセ マフォ命令およびTSTDECセマフォ命令を実行する際に更新ユニット812 によって使用される。 制御ユニットからのトークンの転送は、命令コンポーザ1312によって行わ れる。主制御装置はまず、「次の命令の読取り」信号(rd_next_ins t)をアサートして命令待ち行列814をイネーブルする。 イネーブル済み命令待ち行列814は、新しい命令を出力する準備が完了する と、「次の命令のロード」(ld_next_inst)を主制御装置1322 にアサートし、その命令のイネーブル済み命令パケットが命令パケット・レジス タ1320にロードされる。次いで、主制御装置1322は、命令コンポーザ1 312およびSPU1314に「コンポーザ」をアサートし、これらのユニット が、命令パケット・レジスタ1320の「命令復号化ROM」フィールドを調べ て、命令を実行するのにどの機能ユニットが必要であるかを判定する。 命令がスカラ・プロセッサ・ユニット1314によって実行されるものでない 場合、命令コンポーザ1312が活動化される。命令コンポーザ1312の動作 状態は、read_cntと呼ばれる4ビット・カウンタの内容によって与えら れる。命令コンポーザ1312がアイドル状態であるときは常に、read_c ntカウンタはゼロである。read_cntがゼロでないときは必ず、命令コ ンポーザ1312は、「コンポーザ・ビジー」(composer_busy) 信号を主制御装置1322にアサートする。send_cntと呼ばれる他のカ ウンタは、命令コンポーザ1312がグローバル・バス416を介して機能ユニ ットに渡す語をカウントするために命令コンポーザ1312によって使用される 。read_cntとsend_cntは共に、命令コンポーザ1312が活動 化されるときゼロにセットされる。num_blocksと呼ばれる他のレジス タの内容とカウンタsend_cntを比較して、いつグローバル・バス転送が 終了するかが判定される。 命令コンポーザ1312は、活動化された後、命令パケット・レジスタ132 0中の「オペランド数」(NO)フィールドを調べることによって、命令が必要 とするトークン・オペランドの数を判定する。オペランドが必要とされない場合 、命令コンポーザ1312は単に、命令パケット・レジスタ1320の内容から 、第3E図に示したフォーマットのプロセッサ・パケットを作成し、「データ・ レディ」(data_ready)信号および「プロセッサ・パケット・ロード 」(proc_pac_ld)信号と共にグローバル・バス416上にアサート する。同時に、read_cntとsend_cntが共に値「1」に増分され る。次のクロック・エッジで、前記カウンタが共にゼロにセットされ、命令コン ポーザ1312が、composer_busyをアサート解除することによっ て、終了したことを主制御装置1322に通知する。 1つまたは2つのトークン・オペランドが必要である場合、命令コンポーザ1 312は、「データ・メモリ読取り」(read_dmem)信号をトークン・ メモリ・ユニット810にアサートし、命令パケット・レジスタ1320から第 1のオペランドのアドレスを抽出し、バスdmem_addrを介してトークン ・メモリ・ユニット810へ送信する。read_cntも、次の立上りクロッ ク・エッジで値「1」に増分する。次いで、トークン・メモリ・ユニット810 が、次の2クロック周期中に、指定されたアドレスにあるトークン・ヘッダを読 み取り、各立上りクロック・エッジでread_cntが増分する。read_ cntが「3」であるとき、トークン・ヘッダはレジスタに存在し、命令コンポ ーザ1312は、このトークン・ヘッダを使用して、トークンがデータ・トーク ンであるかどうかを判定し、そうである場合、トークンがトークン・メモリ・ユ ニット810に記憶したデータ・ブロックの数を判定する。ブロックの数は、n um_blocksレジスタに記憶される。次いで、read_cntカウンタ が値「4」に増分し、send_cntが値「1」に増分する。read_cn tが「4」であり、send_cntが「1」である間、命令コンポーザ131 2は、命令パケット・レジスタ1320の内容からプロセッサ・パケットを作成 し、適当な機能ユニットへの「データ・レディ」(data_ready)信号 および「プロセッサ・パケット・ロード」(proc_pac_ld)信号と共 にグローバル・バス416上にアサートする。同時に、read_cntとse nd_cntが共に値「1」に増分される。次のクロック・サイクルの立上りで 、read_cntが「5」に増分し、send_cntが「2」に増分し、そ のサイクルの間に、proc_pac_ldがアサート解除され、命令コンポー ザ1312が、トークンのトークン記述子をグローバル・バス416を介して適 当な機能ユニットへ送信するようトークン・メモリ・ユニット810に命令する 。トークンが制御トークンである場合、第1のトークン・オペランドに関する転 送はこの点で終了する。そうでない場合、トークン・メモリ・ユニット810は 、トークンのブロック割振りユニットからトークンのデータ・ブロックを読み取 り、グローバル・バス416を介して機能ユニットへ送信する。send_cn tカウンタは、語が転送されるたびに増分する。 命令が1つのオペランド・トークンしか必要としない場合、read_cnt カウンタは、send_cntが(num_blocks×8)+2に等しくな るまで値「5」のままである。このクロック・サイクル中に、最後の語が転送さ れ、read_cntがゼロにセットされる。次のクロック・サイクル中に、d ata_readyがアサート解除され、命令コンポーザ1312がアイドル状 態になる。 これに対して、命令が第2のオペランドも必要とする場合、send_cnt が(num_blocks×8)−1に等しいクロック・サイクル中に、rea d_cntが値「6」に増分する。次のクロック・サイクルの間、read_c ntは「6」であり、命令コンポーザ1312は、トークン・メモリ・ユニット 810に、第2のオペランド・トークンの読取りを前記トークンのヘッダから開 始するよう要求する。メモリ・パイプラインの遅延を補償し、第1のオペランド の最後のデータ記述子の直後に、グローバル・バス416上の第2のオペランド のトークン記述子が続くようにするために、この要求は、トークン・メモリ・ユ ニット810によって第1のオペランドの最後の語が出力される2クロック・サ イクル前に行われる。第1のオペランドの最後の2つの語の転送中に、read _cntカウンタはそれぞれ、値「7」および「8」を有する。read_cn tが「9」であるクロック・サイクル中に、トークン・メモリ810は、第2の オペランドのトークン記述子をグローバル・バス416上で出力する。第2のオ ペランドが制御トークンである場合、read_cntは前記クロック・サイク ルおよび次のサイクル中にゼロにセットされ、data_readyがアサート 解除され、命令コンポーザ1312がアイドル状態になる。そうでない場合、r ead_cntは、「10」に増分し、トークン・メモリ810がグローバル・ バス416を介する第2のオペランドの残りの部分の転送を終了するまでこの状 態のままとなる。最後の転送中に、read_cntがゼロにセットされ、命令 コンポーザ1312が次のクロック・サイクルからアイドル状態になる。スカラ・プロセッサ・ユニ スカラ・プロセッサ・ユニット1314(”SPU”)は、主制御装置132 2から「コンポーズ」信号を受け取り、スカラ命令またはセマフォ命令を復号す ることによって活動化される。これが行われると、SPUは、「スカラ・ビジー 」(scalar_busy)信号で主制御装置1322に応答する。 SPUは、命令を3つのフェーズで実行する。第1フェーズで、命令は復号さ れ、必要なトークン・オペランドがトークン・メモリ・ユニット810(”TM U”)から読み取られる。SPUによって実際に読み取られ作用されるのはトー クン記述子だけである。なぜなら、SPUはオペランド・トークン内のBAUの 内容を修正することができないからである。命令が1つまたは2つのオペランド ・トークンを有する場合、SPUは、トークンのアドレスを7ビットdmem_ addrバス上に置き、「記述子読取り」(read_descr)信号をアサ ートすることによって、各トークンを順番にTMUに要求する。 第2フェーズで、命令が実行され、結果トークン(もしあれば)がTMUへ送 信され、結果パケットが更新ユニット812へ送信される。SPUは、トークン 記述子の内容に作用する必要がある場合、実行中の命令が必要とする記述子フィ ールドを抽出し、両方の記述子フィールドと関数符号を25ビット幅ALUへ送 信する。ALUは次いで、その関数(加算、減算、ブール、または比較)を実行 し、必要に応じて、出力を使用して結果トークンのトークン記述子を形成する。 ある種のケース(たとえば、DGATE1命令)では、SPUは、ALUの出力 を使用して、結果トークンを作成するかどうかを決定する。SPUは次いで、「 スカラ・パケット・ロード」信号(ld_aux_pac)をアサートすること によってTMUに通知し、結果トークンのトークン記述子(もしあれば)、終了 した命令のアドレスおよび「宛先数」フィールド、および3ビット・スカラ制御 パケット(aux_control)をTMUへ送信する。 スカラ制御パケット中の3ビットを”write_descr”、”copy _operand”、および”discard_operand”と呼び、この うちの1つだけが「1」にセットされる。write_descrビットは、S PUが、TMUに、SPUの結果トークン記述子を使用して結果トークンを作成 させたい場合にセットされる。オペランド・トークンのBAUは結果トークンに は関連付けられない。copy_operandビットは、SPUが、TMUに 、SPUの第1の(または唯一の)オペランド・トークンに関連するBAUアド レス・フィールドを、結果トークンに関連する同じフィールドにコピーすること によって、結果データ・トークンを作成させたい場合にセットされる。このよう に、SPUは、オペランド・データ・トークンのBAUを実際には読み取らずに 「コピー」し、それによって、グローバル・バス416上の負荷を低減させる。 最後に、discard_operandビットは、SPUが、TMUに、結果 トークンを作成させたくない場合にセットされる。 最後の第3フェーズで、SPUは更新ユニット812に結果パケットを送り、 また結果トークンが生成されなかった場合にはno_update信号をアサー トする。データ・トークン・メモリ・ユニット(第14図) トークン・メモリ・ユニット810(”TMU”)は、命令を実行した結果得 られたトークン用のメモリ空間を割り振り、割振り解除し、かつ前記メモリ空間 に対して読取りおよび書込みを行う。第14図に図示したこのユニットの主要な ブロックは、メモリ制御機構1414、ヘッダ・メモリ820、BAUメモリ8 18、トークン・アドレス・メモリ819、ヘッダ・スタック1416、BAU スタック1418、ヘッダ使用メモリ1411、およびBAU使用メモリ822 である。 トークン・メモリ・ユニット810は、合計で128個の制御トークンおよび データ・トークンを収容することができる。ヘッダ・メモリ820は、幅96ビ ットで長さ128語であり、各語は、1つのトークンの96ビット・トークン記 述子を記憶することができる。データ・トークンのデータ・ブロック部分は、B AUメモリ818内のブロック割振りユニット(BAU)に記憶される。各BA Uは、最大2つの8語×96ビット・データ・ブロックを記憶することができ、 BAUメモリ818は、最大64個のBAUを記憶することができる。データ・ トークンにBAUが割り振られるとき、各トークンが必要とするデータ・ブロッ クの数に応じて、各トークンに1つまたは2つのBAU全体が割り振られる。所 定のBAUの未使用部分は、他のトークンには割り当てられない。 トークン・アドレス・メモリ819は、幅が23ビットであり、長さが128 語である。各語は、第3D図に示したようにフォーマットされ、1つの制御トー クンまたはデータ・トークンに対応する。所与のトークンの場合、トークン・ア ドレス・メモリ819中の前記トークンに対応する語は、前記トークンを作成し た命令のアドレスと、前記トークンのデータ・ブロックを記憶しているBAUの 数(トークンが制御トークンである場合は0であり、データ・トークンである場 合は1または2である)を記憶し、トークンがデータ・トークンである場合はB AUメモリ818中の前記トークンのBAUのアドレスも記憶する。第3D図中 の2つのBAUアドレス・フィールドのそれぞれは、長さ7ビットであり、最大 128個のBAUを収容する。これに対して、BAUメモリ818の現行の実施 態様では、64個のBAUしか記憶されない。 ヘッダ・スタック1416は、幅7ビット・長さ128語の後入れ先出し(L IFO)メモリであり、現在、新しいトークンに割り当てることができる、ヘッ ダ・メモリ820中のトークン記述子のアドレスを記憶する。現在、LIFOメ モリの「1番上」にある語のアドレスは、7ビット・ヘッダ・スタック・ポイン タ・レジスタ(header_stack_ptr)の内容によって与えられ、 header_stack_ptrが指す語の内容もヘッダ割振りアドレス・レ ジスタ(header_alloc_addr)に記憶される。ICC410が 最初にリセットされるとき、ヘッダ・スタック1416中の128語のそれぞれ に、そのアドレスに対応する値が書き込まれる。たとえば、アドレス67の語に は値「67」が書き込まれる。header_stack_ptrレジスタおよ びheader_alloc_addrレジスタも共に、ゼロに初期設定される 。 BAUスタック1418は、別の幅7ビット・長さ128語の後入れ先出し( LIFO)メモリであり、現在、新しいトークンに割り当てることができる、B AUメモリ818中のBAUのアドレスを記憶する。トークン・アドレス・メモ リ819中のBAUアドレス・フィールドと同様に、BAUスタック1418は 、最大128個のBAUを収容するサイズを有する。現在、LIFOメモリの「 1番上」にある語のアドレスは、7ビットBAUスタック・ポインタ・レジスタ (BAU_stack_ptr)の内容によって与えられ、BAU_stack _ptrが指す語の内容もBAU割振りアドレス・レジスタ(BAU_allo c_addr)に記憶される。ICC410が最初にリセットされるとき、BA Uスタック1418中の128語のそれぞれに、そのアドレスに対応する値が書 き込まれる。BAU_stack_ptrレジスタおよびBAU_alloc_ addrレジスタも共に、ゼロに初期設定される。 ヘッダ使用メモリ1411は、幅2ビットで長さ128語であり、制御トーク ンまたはデータ・トークン当たり1つの位置を有する。ヘッダ使用メモリ141 1は、トークンがいつICCプログラム中のトークンの各宛先命令によって「消 費」されたかを判定するためにトークン・メモリ・ユニット810によって使用 される。各位置は、依然としてトークンを使用する必要があるICCプログラム 中の宛先の数をカウントし、トークンを作成した命令から得た「宛先数」(ND )フィールドのコピーによって初期設定される。トークン・メモリ・ユニット8 10は、命令コンポーザ1312またはスカラ・プロセッサ・ユニット1314 へ、命令オペランドとして使用すべきトークンを送信するたびに、ヘッダ使用メ モリ1411中のトークンの「使用率カウント」を減分する。このカウントがゼ ロになると、トークンは、もはや命令から必要とされず、ヘッダ・メモリ820 から割り振り解除される。 BAU使用メモリ822は、幅4ビットで長さ128語であり、BAU当たり 1つの位置を有する。BAU使用メモリ822は、BAUスタック1418と同 様に、最大128個のBAUを収容する寸法を有する。これに対して、BAUメ モリ818の現行の実施態様では、64個のBAUしか記憶されない。このメモ リが存在するのは、複数のトークンを同じBAUに関連付けることができ、メモ リ中の各位置が、対応するBAUを依然として参照するトークンの数をカウント するからである。複数のトークンが同じBAUを参照する状況は、ICC命令が グローバル・バス・インタフェース・ユニット816内のスカラ・プロセッサ・ ユニット1314(”SPU”)によって処理されるときに発生する。各SPU 命令は常に、データ・トークン・オペランドに関連するデータ・ブロックを破棄 し、あるいは、前記データ・ブロックをSPU命令の結果トークンにコピーする 。しかし、データ・ブロックのコピーは、物理的にデータを移動するのではなく 、トークン・アドレス・メモリ819中の結果トークンのBAUアドレス・フィ ールドを適当なオペランド・トークンのBAUアドレス・フィールドと同じにな るようにセットすることによって行われる。スカラ命令が、1つまたは2つのB AUを参照する結果トークンを作成するたびに、BAU使用メモリ822中の対 応する「使用率カウント」が増分される。同様に、トークンが割振り解除される ときは常に、それに対応するBAU使用率カウントが減分される。BAUの使用 率カウントがゼロに減分されると、BAUはもはやトークンから必要とされず、 BAUメモリ818から割振り解除される。 グローバル・バス・インタフェース・ユニット816は、命令を実行すること から得た結果トークンを有するとき、トークン・メモリ・ユニット810に「デ ータ書込み」(wr_data)信号をアサートする。しかし、グローバル・バ ス・インタフェース・ユニット816は、トークンを送信する前に、トークン・ メモリ・ユニット810に、トークンに空間を割り振るよう命令する。トークン 割振りプロセスは、メモリ制御機構1414が、header_alloc_a ddrの現内容を7ビット幅メモリ・アドレス・レジスタ(dmem_addr _reg)にロードし、ヘッダ・スタック1416に「ヘッダ割振り」信号をア サートすることによって開始する。ヘッダ・スタック1416は、これに応答し て、header_stack_ptrを増分し、LIFOメモリのそのアドレ スの内容を読み取り、その内容をheader_alloc_addrに書き込 むことによって、ヘッダ・スタックのLIFOメモリから語を「ポップ」する。 header_stack_ptrがオーバフローした場合(すなわち、hea der_stack_ptrが「127」から「0」に「ロールオーバ」する) 、ヘッダ・スタック1416は満杯であり、DCU418の他の部分に対してエ ラー信号が生成される。 次に、結果トークンを作成した命令の「宛先数」(ND)フィールドのコピー が、dmem_addr_regの指すヘッダ使用メモリ1411の位置に書き 込まれ、その命令のアドレスが保持レジスタに書き込まれる。結果トークンが制 御トークンである場合、保持レジスタ・アドレスが「命令アドレス」フィールド に書き込まれ、dmem_addr_regの指す位置にあるトークン・アドレ ス・メモリ819中の「BAU数」フィールドにゼロが書き込まれる。 結果トークンがデータ・トークンてある場合、メモリ制御機構1414は、B AU_alloc_addrの現内容を7ビット幅BAUアドレス・レジスタ( BAU_addr_reg)にロードすることによってトークン用のBAUを割 り振り、BAUスタック1418に「BAU割振り」信号をアサートする。BA Uスタック1418は、これに応答して、BAU_stack_ptrを増分し 、LIFOメモリのそのアドレスの内容を読み取り、その内容をBAU_all oc_addrに書き込むことによって、BAUスタックのLIFOメモリから 語を「ポップ」する。BAU_addr_regの指すBAU使用メモリ822 の位置に値「1」が書き込まれる。グローバル・バス・インタフェース・ユニッ ト816中のバス・アービタ1310からの「ブロック数」(nblock)信 号が、他のBAUが必要であることを示す場合、BAU_addr_regの内 容が他のレジスタに保存され、第2のBAUのアドレスがBAUスタック141 8から同様に読み取られる。BAU使用メモリ822も更新される。BAU_s tack_ptrがオーバフローした場合(すなわち、BAU_stack_p trが値「64」に達する)、BAUスタック1418は満杯であり、DCU4 18の他の部分に対してエラー信号が生成される。 データ・トークンの割り振りの最後のステップは、保持レジスタに記憶された 命令アドレスを、新たに割り振られたBAUのアドレスおよびBAUの数と共に 、dmem_addr_regの指すトークン・アドレス・メモリ819の位置 に書き込むことである。 また、制御トークンでもデータ・トークンでも、dmem_addr_reg の内容は、バス・アービタ1310に返され、そのため、この結果は、バス・ア ービタ1310が更新ユニット812へ送信する結果パケットに含めることがで きる。 制御トークンまたはデータ・トークンが割り振られた後、グローバル・バス・ インタフェース・ユニット816は、グローバル・バス416を介して書込みを 行う。トークンのトークン記述子はヘッダ・メモリ820に書き込まれ、トーク ンのデータ・ブロック(もしあれば)は、BAUメモリ818の割り振られたア ドレスに書き込まれる。 また、グローバル・バス・インタフェース・ユニット816は、トークンを、 命令実行時に使用できるようにトークン・メモリ・ユニット810から読み取る 。非SPU命令の場合、グローバル・バス・インタフェース・ユニット816内 の命令コンポーザ1312は、メモリ制御機構1414に「メモリ・アドレス・ ロード」(ld_dmem_addr)信号をアサートし、読み取るべきトーク ンのアドレスを7ビット「メモリ・アドレス・バス」(dmem_addr)を 介してTMUのメモリ・アドレス・レジスタ(dmem_addr_reg)に ロードすることによって、トークン・メモリ・ユニット810にトークンを要求 する。メモリ制御機構1414は次いで、アドレスされたトークン記述子をヘッ ダ・メモリ820から読み取り、トークン使用率カウントをヘッダ使用メモリ1 411から読み取り、BAUの数、BAUアドレス、およびトークンを作成した 命令のアドレスをトークン・アドレス・メモリ819から読み取る。後者のデー タはすべてレジスタに記憶される。次いで、トークン使用率カウントを記憶して いるレジスタが1だけ減分され、結果がヘッダ使用メモリ1411に書き込まれ る。減分された使用率カウントがゼロである場合、メモリ制御機構1414は、 ヘッダ・スタック1416に「ヘッダ割振り解除」信号(header_de_ alloc)をアサートし、トークンのアドレスをヘッダ・スタックへ送信する こと によって、トークンを割振り解除する。ヘッダ・スタック1416は次いで、そ のLIFOメモリ上にアドレスを「プッシュ」する。同時に、メモリ制御機構1 414は、更新ユニット812に「割振り解除」信号(de_alloc_ou t)をアサートし、割振り解除済みトークンを作成した命令のアドレスも更新ユ ニットに送信する。前記アドレスは、対応する命令に「非ビジー状態」のマーク を付けるために更新ユニット812によって使用される。読み取り中のトークン がデータ・トークンである場合、メモリ制御機構1414は、トークン中のデー タ・ブロックの数と、第1のBAUのアドレスもBAUメモリ818へ送信する 。 次いで、トークン記述子は、グローバル・バス416上にドライブされる。ト ークンが制御トークンである場合、現トークンに関してはバス416上で他の転 送は行われない。必要な数の96ビット語がBAUメモリ818の第1のBAU のアドレスから順に読み取られ、各語がグローバル・バス416上にドライブさ れる。トークン中のデータ・ブロックの数が2つ以上である場合、BAUの16 語がすべて読み取られ、そうでない場合、8語のみが読み取られる。BAUを読 み取っている間、BAU使用メモリ822中のBAUの使用率カウントは1だけ 減分される。減分された使用率カウントがゼロである場合、メモリ制御機構14 14は、BAUのアドレスをBAUスタック1418へ送信することによってB AUを割振り解除し、BAUスタックはその後、そのLIFOメモリ上にアドレ スをプッシュする。 トークン中のデータ・ブロックの数が3つまたは4つである場合、トークンの 第2のBAUアドレスにあるBAUが読み取られ、各語がグローバル・バス41 6上にドライブされる。トークン中のデータ・ブロックの数が4つである場合、 BAUの16語がすべて読み取られ、そうでない場合、8語のみが読み取られる 。第1のBAUの場合と同様に、第2のBAUが読み取られている間、第2のB AUの使用率カウントは1だけ減分される。減分された使用率カウントがゼロで ある場合、メモリ制御機構1414は、BAUのアドレスをBAUスタック14 18へ送信することによってBAUを割振り解除し、BAUスタックはその後、 そのLIFOメモリ上にアドレスをプッシュする。 スカラ・プロセッサ・ユニット1314は、スカラ命令またはセマフォ命令を 実行する際にTMUの特別な相互作用を必要とする。SPUは、オペランドBA Uの内容を修正することができず、その内容を結果トークンにコピーし、あるい は破棄する。最初に、命令が1つまたは2つのオペランド・トークンを有する場 合、SPUは、オペランド・トークンのアドレスを7ビットdmem_addr バス上に置き、「記述子読取り」(read_descr)信号をアサートする ことによって各トークンを順にTMUに要求する。TMUは、各トークンのトー クン記述子をヘッダ・メモリ820から読み取り、グローバル・バス415を介 してSPUへ送信する。各トークンのBAUはもしあっても読み取られない。ヘ ッダ使用メモリ1411中の適当なトークン使用率カウントが減分され、前述の 方法を使用して必要に応じて記述子が割振り解除される。さらに、第2のオペラ ンド・トークンに関連するいずれかのBAUのBAU使用率カウントが減分され 、必要ならばそのBAUが割振り解除される。しかし、TMUは第1のオペラン ド・トークンのBAUアドレスおよび名前をトークン・アドレス・メモリ819 から読み取り、SPU命令が実行を終了したときに使用できるように「BAUア ドレス・レジスタ」に保存する。 SPU命令が終了すると、SPUは、「スカラ・パケット」信号(ld_au x_pac)をアサートし、結果トークンのトークン記述子(もしあれば)、終 了した命令のアドレスおよび「宛先数」フィールド、ならびに3ビット・スカラ 制御パケット(aux_control)をTMUへ送信することによってTM Uに通知する。パケット中の3ビットを”write_descr”、”cop y_operand”、および”discard_operand”と呼び、こ れらのうちの1つだけが「1」にセットされる。 TMUは、新しいトークン記述子用の記憶域を割り振り、記述子を適切に記憶 し、記述子のアドレスをSPUに返すことによって、write_descrが 「1」にセットされたことに応答する。また、SPU命令がデータ・トークン・ オペランドを有していた場合、TMUは、アドレスがBAUアドレス・レジスタ に記憶されているBAUのBAU使用率カウントを減分し、必要に応じて割振り 解除する。 write_descrと同様に、copy_operandビットは、TM Uに、新しいトークン記述子用の記憶域を割り振らせ、記述子をヘッダ・メモリ 820に記憶させ、記述子のアドレスをSPUに返させる。しかし、copy_ operandは次いで、TMUに、トークン・アドレス・メモリ819中の新 しいトークンの位置の「BAU数」フィールドおよびBAUアドレス・フィール ドにBAUアドレス・レジスタの内容をコピーさせる。SPU命令のオペランド ・トークンが以前に割振り解除されていない場合、これらのBAUアドレスにあ るBAU使用率カウントも1だけ増分される。 最後に、discard_operandが「1」にセットされた場合、TM Uは、新しいトークン記述子用の空間を割り振らず(何れも必要でないため)、 BAUアドレス・レジスタから得たアドレスにある使用率カウントが1だけ減分 される。次いで、必要に応じて、対応するBAUが割振り解除される。DCTプロセッサ・ユニット(第15図) DCTユニット424は、いくつかの8×8データ・ブロックから成るデータ ・トークンに対して順方向離散余弦変換および逆離散余弦変換を実行する。8× 8データ・ブロックの二次元DCTは、結果的に得られるデータ・ブロックの行 を変換し、その後列を変換することによって行われる。 着信データ・トークンおよび処理すべき命令は、グローバル・バス状態マシン 1510を介してDCU418から受信される。データ・トークンは、トークン ・バッファ1512に保存される。処理は、データ・トークンをDCTプロセッ サ1514を通過させることによって開始する。第1段処理(行変換)の結果は 、中間行バッファ1516に保存される。処理は、マルチプレクサ1518を使 用して行バッファの内容を再びプロセッサを通過させることによって完了する。 この結果は、DCU418へ送信できるように再びトークン・バッファに記憶さ れる。グローバル・バス制御状態マシン グローバル・バス制御状態マシンは、DCTユニット中の主シーケンサとして 働く。第16図は、グローバル・バス制御状態マシンの状態遷移図を示す。イン タフェース・プロトコルをサポートするには8つの状態が必要である。また、状 態マシンは、命令用のレジスタ記憶域とトークン・ヘッダ(すなわち、トークン 記述子)用のレジスタ記憶域を統合する。グローバル・バス416上の他の処理 ユニットで類似の状態マシンが使用される。 96ビット二方向グローバル・バスは、8つの12ビット・データ値を含む。 順方向DCT機能では、各12ビット・データは、適切に符号拡張された9ビッ ト画像画素を含む。 グローバル・バス制御状態マシンは、リセット後アイドル状態から開始する。 この状態で、グローバル・バス制御状態マシンは、DCU418からの入力シー ケンスに関してグローバル・バスを監視し、出力シーケンスに関して内部状況フ ラグOTKN_RDYおよびERRORを監視する。GB_DATA−RDY_ が活動状況になることにより、DCU418によって入力シーケンスが開始され たことが示されると、INSTレジスタに命令語が保存され、その後、状態マシ ンがヘッダ受信状態に遷移する。グローバル・データ・バスは、INSTレジス タにロードされる。ヘッダ受信状態によって、グローバル・データ・バスに含ま れるデータは、HDRレジスタにロードされる。データ・トークン中に含まれる データ・ブロックの数よりも1だけ少ない数がヘッダ情報から抽出され、この数 は、MAX_BLKCNTと呼ばれる。ヘッダ受信状態では、6ビット・グロー バル・バス転送サイクル・カウンタ(GB_CYC_CNT)がイネーブルされ て0からカウントし、トークンRAMアドレス経路中のパイプラインとして働く 。6ビット・グローバル・バス転送サイクル・カウンタは最大[8*(MAX_ BLKCNT+1)−1]をカウントする。次のクロック・サイクルで、状態マ シンは、ブロック受信状態に遷移する。各クロックごとに、グローバル・データ ・バスは、グローバル・データ・バス・パイプライン・レジスタR_GB_DA TAにロードされる。TKN_RAMアドレスを生成する際に使用すべきGB_ CYC_CNT(P1_GB_CYC_CNT)のパイプライン式バージョンも バッファ制御ブロックに提供される。R_GB_DATA中の値は、次のクロッ ク・サイクルでトークン・バッファに転送される。P1_GB_CYC_CNT と共に、遅延グローバル・バス書込み転送実行中信号(P1_GB_WXFR_ I P)も提供される。 カウンタGB_CYC_CNTが最大カウントに達すると、状態マシンがエラ ー検査状態に遷移し、ヘッダに含まれるトークン・タイプ・ビットが検査される 。データ・トークンではなく制御トークンが受信された場合、エラーが検出され る。そのような場合、ERROR状況フラグがセットされ、状態マシンが、アイ ドル状態に戻り、ERROR状況によって状態マシンが未処理データ・トークン をDCU418に返す。ヘッダ(トークン記述子)の”errflag”(ビッ ト88)は、DCU418に返されるときにセットされる。エラー条件は、制御 トークンの形で報告される。 エラー検査状態でエラーが検出されなかった場合、状況フラグITKN_RD Yが1サイクル間だけハイにパルスされて、入力データ・トークンが受信され処 理準備が完了したことを示す。状態マシンは、次のクロック・サイクルでアイド ル状態に戻る。 アイドル状態で、状態マシンはOTKN_RDYフラグおよびERRORフラ グを監視する。CTKN_RDYは、処理状態マシンよって1クロック・サイク ル間だけ活動化され、処理済みデータ・トークンがトークン・バッファに書き直 されたことを示し、同時に、ERRORフラグは、未処理の誤ったデータがDC U418に返される予定であることを示す。OTKN_RDYまたはERROR が検出されると、状態マシンはバス要求状態に遷移する。同時に、状態マシンは 、DCU418へのGB_REQ線を活動化してグローバル・バス・アクセスを 要求する。状態マシンは、DCU418がGB_PAC−LDを活動化するまで この状態のままである。DCTユニットは、命令送信状態に遷移することによっ て応答し、グローバル・データ・バス上に命令を置き、GB_PAC_RDYを 活動化する。状態マシンは、DCU418がGD_GRANT線を活動化するこ とによってユニットの要求を許可するまで命令送信状態のままである。状態マシ ンは次いで、ヘッダ送信状態に遷移する。GB_CYC_CNTカウンタが始動 され、トークン・バッファからデータが事前に取り出しされる。状態マシンによ ってGB_DATA_RDY線が活動化され、HEADERレジスタの内容がグ ローバル・バス416に経路指定される。トークン・バッファから取り出された デ ータは、R_GB_DATAパイプラインレジスタにロードされる。次のクロッ クで、状態マシンはブロック送信状態に遷移する。GB_CYC_CNTは、ヘ ッダに含まれる最大カウントをカウントする。R_GB_DATAは、グローバ ル・データ・バス上に置かれる。最大カウントに達すると、状態マシンがアイド ル状態に戻り、1クロック・サイクル後にバス要求が非活動化される。 状態マシンは、DCU418に対するBUSY信号を生成する。状態マシンが セットされるのは、DCUが開始するシーケンスが開始されたときであり、リセ ットされるのは、処理済みデータ・トークンがDCU418に返された後だけで ある。量子化処理ユニット(QPU)(第17図) 量子化処理ユニット422は、いくつかのデータ・ブロックから成るデータ・ トークンの順量子化および逆量子化を行う。このユニットは、量子化を行うだけ でなく、平均平方および分散も算出し、相対画像活動の尺度に基づいて量子値を 修正することができる。 このユニットによって処理すべき命令およびトークンは、グローバル・バス4 16を介してDCU418からグローバル・バス・インタフェース1710へ送 信される。このトークンはトークン・バッファ1712にセーブされる。命令は 、トークンを量子化プロセッサ・ブロック1714を通過させることによって実 行される。命令の処理が量子化プロセッサ内部で行われるので、量子化プロセッ サによる処理をトークン・バッファ1712に記憶し直すことができる。命令の 実行の完了時に、トークンがDCUに送り返される。 このユニットは、完全CCIR−601画像に対するビデオ・レートJPEG (符号化または復号)、CIF画像に対するビデオ・レートPx64(符号化と 復号の両方)、MPEG(符号化または復号、あるいはその両方)の各圧縮アル ゴリズムに関する順量子化および逆量子化をサポートすることができる。 量子化プロセッサは、順量子化または逆量子化、平均平方、分散、および量子 修正を行う資源である。処理状態マシン1716は、QPU中の命令実行用のシ ーケンサとして働く。処理状態マシンは、グローバル・バス制御状態マシンと協 働して入力トークンを処理する。 Q_RAM1718は、最大192個の8ビット量子化値用の記憶域を含む。 このRAMは、ICCによる処理が開始される前に外部ホスト・プロセッサによ って初期設定される。RAM中の記憶空間は、論理的に3つの64バイト・テー ブルに区画される。JPEG量子化の場合、RAMは通常、YUV画像の輝度成 分および色差成分用の量子化マトリックスを含む。MPEG量子化の場合、最初 の2つのテーブルしか使用されない。テーブル0は、内部符号化用の量子化マト リックスで初期設定される。テーブル1は、非内部符号化用の量子化マトリック スで初期設定される。Px64の場合、このRAMは使用されず、したがって、 初期設定する必要はない。Q_RAMの内容は、ホスト・プロセッサによってホ スト・インタフェースを介して読み取ることができる。 バッファ制御ブロック1720は、トークン・バッファおよび量子化マトリッ クスRAM(Q_RAM)にアドレスおよび制御信号を提供する。RAMアドレ スは主として、PHASE_CNT、PRE2_PEL_CNTなどカウンタ値 で形成される、RAMのパイプラインは処理状態マシンで形成される。バッファ 制御ブロックは、32×16ジグザグROMも含む。このROMは、入力データ ・ブロックおよび量子化テーブルをジグザグ走査するために使用される。演算プロセッサ・ユニット(APU)(第18図) 第18図は、第4図の演算プロセッサ・ユニット420のブロック図である。 グローバル・バス状態マシン1810は、内部グローバル・バス416と通信す る。一対のトークン・バッファ1812および1814は、処理すべきトークン を記憶する。プロセッサ状態マシン1816は、入力トークンの処理を管理する 。ユニット制御装置1818は、演算ユニットに必要な制御信号を生成する。フ ィルタ演算プロセッサ・ブロック1820は、3タップ・ループ・フィルタの伝 達関数と、加算、減算、平均、およびクリッピング演算を実行する。演算処理ユ ニット1820との間でデータをバッファするために一対のバッファ1822お よび1824が提供される。ラン・レングス・プロセッサ・ユニット(RPU)(第19図) 第19図は、第4図のRPU426の機能ブロック図である。RPUは、トー クンRAM制御論理機構2012によって制御されるトークンRAM2010を 含む。これらは、グローバル・バス416に接続される。codecプロセッサ 2014は、ホスト通信向けの内部データ・トークン・フォーマットと外部ラン ・レングス・フォーマットの間のデータ・フォーマット・チェンジャとして働く 。codecプロセッサは、量子化済み変換係数を一連のラン・レベルとして符 号化し、一連のラン・レベル対を復号して量子化済み変換係数を形成する。また 、codecプロセッサは符号化時に、トークン記述子からヘッダ語を作成し、 復号時に、符号化データ・シーケンスからヘッダ語を抽出する。codecプロ セッサは、トークンRAMと、ホスト2018に接続されたラン・データ・イン タフェース2016との間に接続される。インタフェース2016は、ブロック 2020によって制御され、ラン・レングスcodecは、状態マシン2022 によって制御される。RPUは、割込み論理機構2024とホスト・アドレス復 号化ブロック2026も含む。トークン・インタフェース・ユニット(TIU)(第20図) 第20図は、第4図のトークン・インタフェース・ユニット428のブロック 図である。トークン・インタフェースは、ICCとホスト・プロセッサの間で共 用されるRAMメモリ2110を有する。制御論理ブロック2112は、バッフ ァ・アクセス・モードおよび2アクセス・モード、グローバル・バス・アクセス ・モード、ならびにホスト・アクセス・モードを制御する。ホスト・インタフェース・ユニット(HIU)(第21図) 第21図は、第4図のホスト・インタフェース・ユニット412のブロック図 である。HIUは、ホスト・バスと様々な機能ユニット中のICCメモリ・マッ プ済みレジスタとの間のインタフェースの役割を果たす。ビデオ・インタフェース・ユニット(VIU)(第22図) 第22図は、VIUインタフェースのブロック図である。VIUは、バッファ 制御論理機構2312の制御を受けるトークンRAM2310に内部グローバル ・バス416を介して接続される。ホスト・インタフェース論理ブロック231 4によって、第4図のホスト・インタフェース412を介する直接制御が可能に なる。 グローバル・バス状態マシン2316は、グローバル・バス416へのアクセ スを制御する。バッファ2318は、外部ビデオ・メモリ・データ・バスに接続 される。ビデオ・メモリ調停ユニット2320は、リフレッシュ論理機構232 2、SAM−DRAM転送ブロック2324、およびページ・モード画像取出し ブロックからのビデオ・バス要求、ならびに外部バス要求を調停する。補間回路 2326は、状態マシン2328の制御の下で動作する。最後に、状態マシン2 330はビデオ・メモリ・バス・アクセスを制御する。補助インタフェース・ユニット(AIU)(第23図) 補助インタフェース・ユニット(AIU)430は、ICCと、物理的にIC Cの一部ではない最大4つの外部プロセッサとの間のインタフェースとして働く 。各外部プロセッサは、並行して動作できる最大4つの機能ユニットを含むこと ができる。AIUは、ICC内部の他の機能ユニットと同様に機能する。すなわ ち、AIUは、グローバル・バス416を介してプロセッサ・パケットおよびオ ペランド・トークンをDCU418から受信し、グローバル・バス416を介し てプロセッサ・パケットおよび結果トークンをDCU418に返す。命令は、そ のXビットが「1」にセットされた場合のみ、DCU418によって実行のため にAIUに送信される。しかし、AIUは、そのような命令を実行するのではな く、オフチップで適当な外部プロセッサへ送信する。AIU430のブロック図 を第23図に示す。 AIUは、「外部命令状態テーブル」(EIST)2450と呼ばれる16語 ×1ビット・メモリを含む。EISTは、各外部機能ユニットごとに単一の語を 有する。EIST中の外部機能ユニットの項目は、この単位が現在、命令を実行 中でビジー状態である場合は「1」にセットされ、この単位がアイドル状態であ る場合は「0」にセットされる。EIST中のすべての項目は、ICCがリセッ トされたとき「0」にセットされる。EISTは、DCU418内の更新ユニッ ト812によって読み取られ、AIUから書き込まれ、独立に書き込み読み取る ことができる。 外部命令(すなわち、Xビットが「1」である命令)は、その命令コード・フ ィールドの最下位4ビットを使用して外部機能ユニット上にマップされる。最下 位2ビットは、外部プロセッサを選択するものであり、それらのビットのすぐ上 の2ビットは、外部プロセッサ内の機能ユニットを選択するものである。この4 ビットは、EISTにアドレスするためにDCUとAIUの両方によっても使用 される。 グローバル・バス制御機構2410は、プロセッサ・パケットをDCU418 との間で送受信する責任を負う。グローバル・バス制御機構は、プロセッサ・パ ケット・レジスタ・制御ブロック2420との間でプロセッサ・パケットの読取 りおよび書込みを行う。また、グローバル・バス制御機構は、トークン・データ ・バッファ2440から結果トークンを読み取り、トークン・データ・バッファ 2440にオペランド・トークンを書き込む。 トークン・データ・バッファ2440は、33語×96ビット・メモリを含み 、単一の制御トークンまたは単一の4ブロック・データ・トークンを記憶するこ とができる。すなわち、外部命令が有することができるオペランド・トークンは 1つだけである。メモリ中のトークンは、外部機能ユニットへ送信されるのを待 つオペランド・トークンでも、これらの単位のうちの1つから返された結果トー クンでもよい。 補助インタフェース・バス制御機構2430は、プロセッサ・パケットおよび トークンを外部機能ユニットとの間で送受信する責任を負う。このような転送に 使用されるプロトコルは、MEC出願に記載されている。このような転送は、補 助インタフェース・バス・クロックXCLKとは非同期的に行われる。XCLK は、グローバル・バス416を介してデータを転送するために使用される内部プ ロセッサ・クロックPCLKには同期しない。グローバル・バス制御機構241 0と同様に、補助インタフェース・バス制御機構2430は、プロセッサ・パケ ット・レジスタ制御ブロック2420との間でプロセッサ・パケットの読取りお よび書込みを行う。また、補助インタフェース・バス制御機構は、トークン・デ ータ・バッファ2440からオペランド・トークンを読み取り、トークン・デー タ・バッファ2440に結果トークンを書き込み、かつEIST2450中のビ ットをセットしクリアする責任を負う。 グローバル・バス制御機構2410と補助インタフェース・バス制御機構24 30が共に、AIU内の同じ資源にアクセスするので、主制御装置2460は、 これらの機構の活動の調和を図る責任を負う。主制御装置2460は、AIUの 「アイドル」状態も判定し、その状況を信号として更新ユニット412へ送信す る。AIU430は、グローバル・バス制御機構2410と補助インタフェース ・バス制御機構2430のうちの一方がビジー状態でない場合はアイドル状態で ある。 DCU418は、プロセッサ・パケットおよびオペランド・トークン(もしあ れば)をAIU430へ送信する前に、AIUと、前記データを受信すべき外部 機能ユニットが共にアイドル状態であるかどうかを検査する。DCUは次いで、 グローバル・バス制御機構2410へデータを送信する。プロセッサ・パケット およびオペランド・トークン(もしあれば)がそれぞれ、プロセッサ・パケット ・レジスタ制御ブロック2420およびトークン・データ・バッファ2440に 記憶された後、主制御装置は、補助インタフェース・バス制御機構2430を活 動化して適当な外部機能ユニットへデータを送信する。補助インタフェース・バ ス制御機構2430は、この機能ユニットに対応するEIST2450中のビッ トも「1」にセットする。 AIU430に結果を送り返したい機能ユニットを有する各外部プロセッサ・ ユニットは、XRQST−入力ピンをICC上でアサートする。補助インタフェ ース・バス制御機構2430は、同時に発生したそのような要求間の調停を行う 。主制御装置2460が、AIUはビジー状態でないと判定した場合、補助イン タフェース・バス制御機構2430は、MEC出願に記載されたプロトコルを使 用して、補助インタフェース・バスを介して、選択されたプロセッサに通知する 。次いで、このプロセッサは、それ自体内の場合によっては複数の機能ユニット か ら、サービスを要求した機能ユニットを選択し、選択した機能ユニットのプロセ ッサ・パケットおよび結果トークン(もしあれば)でAIU430に応答する。 前記データは、MEC出願に記載されたプロトコルに類似のプロトコルを使用し て補助バスを介して転送される。補助インタフェース・バス制御機構2430は 、データを受信し、必要に応じてプロセッサ・パケット・レジスタ制御ブロック 2440およびトークン・データ・バッファ2440に記憶し、応答側機能ユニ ットに対応するIST2450中のビットを「0」にセットする。主制御装置2 460は次いで、プロセッサ・パケットおよび結果トークンをDCU418へ送 り返すようグローバル・バス制御機構2410に通知する。ICCセマフ 本発明は、セマフォのユニークな使用法を提供する。従来、セマフォは、複数 のソフトウェア・プロセス間で臨界的なハードウェア・コンピュータ資源および ソフトウェア・コンピュータ資源を共用できるようにする通知機構を実施するた めに使用されている。そのような資源は、それぞれ、一度に1つのプロセスから しかアクセスできないという点で「臨界的」である。セマフォ自体は、ソフトウ ェア・プロセスが通常、実際に共用資源を処理する臨界ソフトウェア領域に入る 前に「試験し設定」する臨界変数である。この「試験・設定」動作では、セマフ ォに関連する臨界領域へのアクセスを可能にする妥当な値を有するかどうかを調 べるためにセマフォの値が「試験され」、次いで、同じ分割不能な動作の一部と してセマフォがこの値に「設定」される。 たとえば、プロセスが、2進セマフォPによって保護されている臨界領域に入 るには、このセマフォの値が1でなければならないと仮定する。その領域に入り たいプロセスは次いで、Pを「試験」して1に「設定」する。すなわち、Pは、 値が「1」であるかどうか試験され、次いで、試験の結果にかかわらず「1」に 設定される。試験結果が正である場合、プロセスはこの領域に入らない。試験結 果が負である場合、プロセスはこの領域に入り、分割不能な「試験・設定」動作 の「設定」部分によって、他のプロセスがこの領域に入ることが防止される。こ の場合、首尾良くこの領域に入ったプロセスは、この臨界領域から出る際に特殊 な動作を介してPを「0」に設定し直し、それによって、その領域に入る機会を 他のプロセスに与える。 セマフォに対する動作は、セマフォがアクセスされるときに相互の排他性を保 証するハードウェア・レベルでの特殊な命令によってサポートしなければならな い。たとえば、上述の「試験・設定」動作を別々の「試験」動作および「設定」 動作として実行した場合、一方のプロセスが、セマフォを試験して、関連する臨 界領域に入ることができると結論し、その後、他方のプロセスが、第1のプロセ スがセマフォを設定しないうちに同じセマフォを試験して同じ結論に達し、次の 入力を妨げる可能性がある。 ICCは、特にプログラム可能な並列データフロー環境内で使用すべきセマフ ォ通知機構を実施することによって最新のデータフロー・コンピュータを改良す るものである。ICCセマフォは主として、 1.任意の時点で存在するデータ・トークンの数を制限すること 2.データフロー・プログラムのサイズを最小限に抑えること 3.プログラム・データフローを外部事象に同期させることの各目的に使用さ れる。 項目1が必要であるのは、データ・トークンを記憶するためのICCのオンチ ップ・メモリが限られているからである。ICCが、すべてのタイプの最大12 8個のトークンを同時に記憶できる(すなわち、命令当たり1つ)が、記憶でき るデータ・トークンの最大数を決定する64個のブロック割振りユニット(BA U)用の空間しか有さないことを想起されたい。データ・トークンには1つまた は2つのBAUが必要であり、フローグラフ中に同時に存在できるデータ・トー クンの数の上限は各データ・トークン生成命令ごとに1つである。すなわち、あ らゆる命令出力アーク上に1つのトークンが存在することができる。したがって 、理論的には、チップ上で利用できるBAUよりも多くのBAUを要求する、I CCプログラムを作成することがあり得る。すべてのアーキテクチャは最終的に メモリが制限されるので、ICC以外のデータ・アーキテクチャにも類似の状況 が存在する。 ICCでは、フローグラフが過度に多くのBAUを使用する可能性が高いとき に新しいデータ・トークンのフローグラフへの流れを一時的に停止するために使 用できるセマフォ命令を与えることによって、プログラマが、データ・トークン ・メモリ使用率を制限することができる。これをサポートするICC命令をTS TDEC(セマフォの試験および減分)およびINCSEM(セマフォの増分) と呼ぶ。 第24図は、TSTDECおよびINCSEMの使用法の一例を示す。この例 を支持する原則は、トークンがフローグラフのTSTDEC命令とINCSEM 命令の間に入るたびに、前記トークンが、フローグラフ内で有界数の新しいトー クンを「生成」することである。たとえば、新しい2BAUデータ・トークンが 第24図のTSTDEC命令を介してフローグラフに入るたびに、最大で2つの トークンが生成され、正味で4つのBAUが増加する。したがって、N個のトー クンがフローグラフに入った後、最大で2N個の新しいトークンまたは4N個の BAUがフローグラフ内で作成される。もちろん、すべてのトークンが、INC SEM命令を介してフローグラフを離れるまでに使い尽くされるので、作成され る新しいトークンの正味数が引き続き非有界的に増加することはない。 第24図中の例は、セマフォ・レジスタ0(SEMREG0)を使用して、フ ローグラフによってTSTDEC命令とINCSEM命令の間で使用されるBA Uの最大数を追跡する。INITSEM命令は、セマフォを8、すなわち、フロ ーグラフ中に存在できるBAUの最大数よりも2だけ少ない数に初期設定する( なぜ2だけ少ないかについては、後で説明する)。TSTDEC命令への入力に トークンがあると、TSTDEC命令は、値「4」(入力されたトークンが生成 するBAUの最大数)をセマフォの現行の値と比較することによって、フローグ ラフへの入力を「保護」する。「4」がセマフォの値以下である場合(すなわち 、フローグラフには新しいトークン用の「空間」がある)、TSTDECは、セ マフォを「4」だけ減少させ、トークンをフローグラフに入れる。そうでない場 合、TSTDECは、トークンを通過させず、前記試験条件が満たされるまでT STDECの入力にトークンを保持する。これに対して、フローグラフの1番下 では、INCSEMがセマフォを「4」だけ増加させ、使い尽くされたすべての 増分BAUに対処する。 INCSEM命令が、その入力トークンを使用する前にセマフォの値を減少さ せておくことに留意されたい。したがって、このトークンに対処するために、セ マフォは最初、BAUの最大数よりも2だけ少ない数に設定される。TSTDE C命令とINCSEM命令が、それらに、相互に排他的にセマフォに作用するよ う強制する、ICC内の同じハードウェアによって実行されることにも留意され たい。 セマフォの第2の使用法は、ICCのプログラム・メモリの長さが128語し かないため、ICCプログラムのサイズを制限することである。これは、TST SEMセマフォ命令およびINCSEMセマフォ命令を使用して、複数のソース から得たトークンを同じフローグラフ・セグメントとして時間多重化することに よって行われ、そのため、命令を重複する必要がなくなる。一例を第25図に示 す。時分割マルチプレクサは、出力がINCSEM命令の入力に接続された3つ のTSTSEM命令によって形成される。各TSTSEM命令は、その入力トー クン中のトークン記述子中のcntrlフィールドの値とSEMREG0を比較 する。入力トークンは、第25図ではT1、T2、T3として示されており、そ れぞれのTSTSEM命令の入力に任意の順序で現れることができる。cntr lフィールドがSEMREG0に一致する場合、TSTSEM命令は、入力トー クンをそれ自体の出力にコピーする。そうでない場合、TSTSEM命令は、一 致が達成されるまでそれ自体の入力にトークンを保持する。その根拠となる考え は、任意の時点に1つのTSTSEM命令しかその入力を通過しないように、c ntrlフィールドを使用してトークンに通し番号を付けることである。INC SEM命令は次いで、トークンを活動状況TSTSEM命令からそれ自体の出力 にコピーし、マルチプレクサが次のトークンを通過させることができるようにセ マフォを増分する。第25図に示したように、INCSEM命令は、トークンの cntrlフィールドの値で決定されるT3、T2、T1の順序でトークンを出 力する。 セマフォの第3の使用法は、ICCデータフロー・プログラムをICCの外部 の事象に同期させることである。これは、TSTSEM命令を使用して、外部ホ スト・プロセッサがセマフォを所定の値に設定するまでデータフローを一時的に 停止することによって行われる。たとえば、第26図に示したTSTSEM命令 は、入力トークン「T」のcntrlフィールド中の値「3」がSEMREG0 の値に一致するまで入力トークンを通過させない。ホスト・プロセッサは最終的 に、ICCホスト・インタフェース・バスを介してSEMREG0に「3」をロ ードする。 当業者にはおわかりのように、本発明は、その趣旨からも基本的特性からも逸 脱せずに他の特定の形で具体化することができる。したがって、本発明の好まし い実施形態の開示は、下記の請求の範囲に記載された本発明の範囲を例示するも のであり、制限するものではない。いくつかの代替実施形態を以下に記載する。 各専用処理ユニットは、汎用処理ユニットでもよい。汎用処理ユニットは、あ る種の命令のみを受け入れるように、プログラムに応じて専用ユニットとなるよ うにプログラムすることもできる。他の実施形態では、特別に構成されたある処 理ユニット向けに各命令を指定するのではなく、複数の処理ユニットをある種の 命令を処理するように構成することができ、その結果、命令は、それを実行する 複数のユニットを選択することができ、したがって、パイプライン動作が向上す る。 前述の実施形態では、各処理ユニットは単一バッファ型のものであり、その結 果、新しいトークンは、ユニットが前のトークンの処理を終了するまで待機しな ければならない。処理ユニットが前のデータおよび命令を実行している間に新し い命令、データ、およびトークンを受信できるように、二重バッファリング・シ ステムを使用することもできる。 第14図のトークン・メモリ・ユニットに関しては、ある代替実施形態では、 各命令ごとに指定されたトークン・アドレスを有するようにこのハードウェアを セットアップすることができ、この結果、たとえば、命令1は常にトークン・ア ドレス1に対応し、命令2はトークン・アドレス2に対応し、以下同様である。 これによって、各トークン・アドレスを異なる命令に動的に割り当てるヘッダ・ スタック・メモリをなくすることができる。そのような静的指定では、第3A図 のオペランドRAMフォーマット中のオペランドRAMフィールドをなくするこ ともできる。その代わり、このフィールドは、システムの初期設定時に静的に確 立される。これによって、更新ユニットがオペランド・ファイルに書込みを行う ことが不要になる。ただし、セマフォ・フィールドおよびオペランド存在ビット は依然として更新ユニットによって書き込む必要がある。第3B図に示した結果 パケット・フォーマットでも、結果トークン・アドレスをなくすることができる 。なぜなら、これは、すでにパケット中に存在する命令アドレスに対応するもの に過ぎないからである。 本発明の好ましい実施形態の他の変形例は当業者には明らかであろう。したが って、本発明の範囲は、下記の請求の範囲に記載したとおりである。
【手続補正書】 【提出日】1998年7月9日 【補正内容】 請求の範囲 1.単一の半導体チップ上で集積された画像圧縮コプロセッサにおいて、 記憶されたプログラムに応じて前記コプロセスを操作する制御ユニット手段と 、 前記制御ユニット手段に結合された内部バスと、 それぞれ、画像圧縮/圧縮解除プロセス中のステップ群のサブセットを実行す るために前記バスに結合された複数の専用処理手段と を備えることを特徴とする画像圧縮コプロセッサ。 2.単一の半導体チップ上に集積されたプロセッサにおいて、 制御ユニットと、 前記制御ユニットに結合され、記憶されたプログラムを有するメモリと、 前記制御ユニットに結合された内部グローバル・バスと、 各々が前記グローバル・バスに結合されており、前記プロセッサによって実行 されるプロセスにおけるステップのグループのサブセットを実行する複数の処理 回路と、 前記グローバル・バスに結合され、前記処理回路がアクセスできるデータ・ト ークン・メモリとを備えており、 前記の記憶されたプログラムがデータ・フロー・プログラムであり、前記制御 ユニットが命令とデータ・トークンを前記グローバル・バス上を非同期に前記複 数の処理回路へ転送し、 前記データ・トークンがデータ・ベクトルであることを特徴とするプロセッサ 。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,DE, DK,ES,FR,GB,GR,IE,IT,LU,M C,NL,PT,SE),OA(BF,BJ,CF,CG ,CI,CM,GA,GN,ML,MR,NE,SN, TD,TG),AT,AU,BB,BG,BR,BY, CA,CH,CN,CZ,DE,DK,ES,FI,G B,HU,JP,KP,KR,KZ,LK,LU,LV ,MG,MN,MW,NL,NO,NZ,PL,PT, RO,RU,SD,SE,SI,SK,TT,UA,U Z,VN (72)発明者 コペット,トーマス・ジイ アメリカ合衆国 80906 コロラド州・コ ロラド スプリングス・ローウィック ド ライブ・15 (72)発明者 テイラー,ブラッドフォード・ジイ アメリカ合衆国 80920 コロラド州・コ ロラド スプリングス・バーナムウッド ドライブ・3410 (72)発明者 ルイ クオ,ゲリー・シイ アメリカ合衆国 90919 コロラド州・コ ロラド スプリングス・オーク ヴァレー ドライブ・6905 (72)発明者 ルー,スティーブン・ディ アメリカ合衆国 80910 コロラド州・コ ロラド スプリングス・ラルフズ リッジ ロード・ナンバー202・1828

Claims (1)

  1. 【特許請求の範囲】 1.単一の半導体チップ上で集積された画像圧縮コプロセッサにおいて、 記憶されたプログラムに応じて前記コプロセスを操作する制御ユニット手段と 、 前記制御ユニット手段に結合された内部バスと、 それぞれ、画像圧縮/圧縮解除プロセス中のステップ群のサブセットを実行す るために前記バスに結合された複数の専用処理手段と を備えることを特徴とする画像圧縮コプロセッサ。 2.前記各専用処理手段が、異なる専用ハードウェアを有することを特徴とする 請求項1に記載の画像圧縮コプロセッサ。 3.前記記憶されたプログラムがデータ・フロー・プログラムであり、前記制御 ユニット手段が命令およびデータ・トークンを前記バスを介して前記複数の専用 処理手段へ転送することを特徴とする請求項1に記載の画像圧縮コプロセッサ。 4.前記各データ・トークンが、1つないし複数のデータ・ブロックまたはデー タ・ベクトルを含むことを特徴とする請求項3に記載の画像圧縮コプロセッサ。 5.前記各データ・トークンがさらに、前記トークンをデータ・トークンとして 識別し、接続されたデータ・ブロックの数を示すトークン記述子を含むことを特 徴とする請求項4に記載の画像圧縮コプロセッサ。 6.前記命令が、前記処理手段に対するデータ信号または制御信号とは別にパケ ットで前記複数の処理手段に転送されることを特徴とする請求項3に記載の画像 圧縮コプロセッサ。 7.前記複数の処理手段が、 1つの前記命令を保持するために前記バスに結合された命令レジスタ手段と、 前記少なくとも1つの前記データ・トークンを保持するために前記バスに結合 されたバッファ手段と、 前記ステップ・サブセットを実行するために前記バッファ手段および前記命令 レジスタ手段に結合された処理論理手段と、 前記命令レジスタおよびバッファと前記バスのインタフェーシングを制御する ために前記命令レジスタ手段および前記バッファ手段に結合された状態マシン手 段とを含むことを特徴とする請求項3に記載の画像圧縮コプロセッサ。 8.さらに、 マスタ・ホスト・プロセッサに結合されるホスト・インタフェース・ポートと 、 前記マスタ・ホスト・プロセッサと通信できるようにデータを前記トークン・ フォーマットとラン・レングス・フォーマットの間で変換するために前記バスと 前記ホスト・インタフェース・ポートの間に接続されたラン・レングス・プロセ ッサ手段とを備えることを特徴とする請求項3に記載の画像圧縮コプロセッサ。 9.さらに、 マスタ・ホスト・プロセッサに結合されるホスト・インタフェース・ポートと 、 前記ホスト・プロセッサがトークンを直接挿入し前記バス上のトークンを見る ことができるようにするために前記バスと前記ホスト・インタフェース・ポート の間に結合されたトークン・インタフェース手段とを備えることを特徴とする請 求項3に記載の画像圧縮コプロセッサ。 10.さらに、 前記バスを外部ビデオ・メモリに結合するビデオ・インタフェースと、 前記バスを外部ホスト・プロセッサに結合するプロセッサ・インタフェースと を備えることを特徴とする請求項1に記載の画像圧縮コプロセッサ。 11.前記制御ユニット手段が、前記制御ユニット手段と前記複数の処理手段の 間での前記バスの使用を調停するために前記バスに結合されたバス調停手段を備 えることを特徴とする請求項1に記載の画像圧縮コプロセッサ。 12.前記制御ユニット手段が、外部ホストからロードされた少なくとも第1お よび第2のプログラムを保持する命令メモリと、前記第2のプログラムが完了す る前に前記第1のプログラムからの命令を実行させる手段とを含むことを特徴と する請求項1に記載の画像圧縮コプロセッサ。 13.さらに、外部補助プロセッサを前記グローバル・バスに結合するために前 記グローバル・バスと補助インタフェースの間に結合された補助ユニット手段を 備えることを特徴とする請求項1に記載の画像圧縮コプロセッサ。 14.さらに、 前記制御ユニット手段に結合されたセマフォ・レジスタと、 データ・トークンへのアクセス時に前記セマフォ・レジスタ中のカウントを修 正し、前記セマフォ・レジスタ中のセマフォ値を試験し、前記セマフォ値が最大 値を超えている場合に新しいデータ・トークンがアクセスされるのを防止し、デ ータ・トークンが前記制御ユニットから離れた時点で前記カウントを修正する、 前記データ・フロー・プログラム中の複数のセマフォ命令とを備えることを特徴 とする請求項3に記載の画像圧縮コプロセッサ。 15.第1のセマフォ命令が、各命令がデータ・トークンを要求する前に前記カ ウントを試験して減分し、第2のセマフォ命令が、各データ・トークンが前記制 御ユニットから離れた後に前記カウントを増分することを特徴とする請求項14 に記載の画像圧縮コプロセッサ。 16.さらに、 前記制御ユニット手段に結合されたセマフォ・レジスタと、 数を含む制御フィールドを有する前記データ・フロー・プログラム中の複数の 命令と、 命令中の前記制御フィールド中の前記数を前記セマフォ・レジスタ中のカウン ト比較し、前記数が前記カウントに一致するときに、前記命令を、処理するため に前記制御ユニット手段を通過させる手段とを備えることを特徴とする請求項3 に記載の画像圧縮コプロセッサ。 17.前記制御フィールド中の前記数が、シーケンス中の1つの数であり、前記 コプロセッサがさらに、一度に1つの命令しか通過できないように前記セマフォ ・レジスタ中の前記カウントを修正する手段を備えることを特徴とする請求項1 6に記載の画像圧縮コプロセッサ。 18.前記制御ユニットが、 前記内部バスに結合された内部バス・インタフェースと、 前記専用処理手段に転送すべき命令を保持するために前記内部バス・インタフ ェースに結合されたイネーブル済み命令待ち行列手段と、 前記内部バス・インタフェースに結合されたデータ・トークン・メモリと、 前記イネーブル済み命令待ち行列手段に命令を提供するために前記イネーブル 済み命令待ち行列手段に結合された更新ユニット手段とを備えることを特徴とす る請求項3に記載のコプロセッサ。 19.前記更新ユニット手段が、 前記命令待ち行列手段中に命令があるかどうかを判定する第1の手段と、 前記命令に関するデータ・トークンが前記データ・トークン・メモリ中にある かどうかを判定する第2の手段と、 前記命令が必要とする1つの前記専用処理手段がビジー状態であるかどうかを 判定する第3の手段と、 前記第1、第2、第3の判定手段に応答して、前記イネーブル済み命令待ち行 列手段に前記命令を提供する手段とを備えることを特徴とする請求項18に記載 のコプロセッサ。 20.さらに、 前記イネーブル済み命令待ち行列手段が満杯であるかどうかを判定する第4の 手段を備えることを特徴とする請求項18に記載のコプロセッサ。 21.前記更新ユニット手段がさらに、 セマフォ・レジスタと、 前記データ・トークン・メモリ中のデータ・トークンへのアクセス時に前記セ マフォ・レジスタ中のカウントを修正し、前記セマフォ・レジスタ中のセマフォ 値を試験し、前記セマフォ値が最大値を超えている場合に新しいデータ・トーク ンがアクセスされるのを防止し、データ・トークンが前記制御ユニットから離れ た時点で前記カウントを修正するために前記セマフォ・レジスタに結合された手 段とを備えることを特徴とする請求項18に記載のコプロセッサ。 22.前記コプロセッサがさらに、第1のレジスタを含み、前記プログラムが、 前記プログラム中で一度しか実行できないCRTOKEN命令を含み、前記CR TOKEN命令が、前記第1のレジスタが第1の値を有する場合にのみ実行を許 可され、前記CRTOKEN命令によって、前記第1レジスタが実行後に前記第 1の値を有し、前記コプロセッサが、前記第1のレジスタを前記第1の値以外に 変更するリセット手段を含むことを特徴とする請求項3に記載のコプロセッサ。 23.さらに、 前記データ・トークン用のデータ・ブロックを記憶するブロック割振りメモリ と、 それぞれ、データ・トークンに対応する、前記メモリ・ブロックを指すポイン タを記憶するトークン・アドレス・メモリと、 前記ポインタを修正することによってデータ・ブロックをあるデータ・トーク ンから他のデータ・トークンにコピーするために前記トークン・アドレス・メモ リに結合された制御手段とを備えることを特徴とする請求項3に記載のコプロセ ッサ。 24.さらに、前記データ・トークン用の記述子を記憶するヘッダ・メモリを備 え、前記トークン・アドレス・メモリが、前記ヘッダ・メモリ中の記述子を指す ポインタと、各データ・トークンごとの前記ブロック割振りメモリ中のデータ・ ブロックを指すポインタを記憶することを特徴とする請求項23に記載のコプロ セッサ。 25.さらに、外部プロセッサ中に機能ユニットがビジー状態であるかどうかを 判定する第4の手段を備えることを特徴とする請求項19に記載のコプロセッサ 。 26.1つの前記専用処理手段が、外部処理ユニットとのインタフェースをとる 補助インタフェース・ユニットであり、前記第4の手段が、前記補助インタフェ ース・ユニット中に状況テーブルを備えることを特徴とする請求項25に記載の コプロセッサ。 27.前記状況テーブルが、各機能ユニットごとの位置を有する状況レジスタで あり、前記コプロセッサがさらに、 前記外部プロセッサ中の第1の機能ユニットを指定する命令が送信されたとき に前記状況レジスタ中の第1の状況ビットをセットする手段と、 前記外部プロセッサ中の前記第1の機能ユニットからの結果パケットが受信さ れたときに第1の状況ビットをクリアする手段とを備えることを特徴とする請求 項26に記載のコプロセッサ。 28.前記内部バス・インタフェースが、カウントを修正し前記更新手段中のセ マフォ値を試験した後にセマフォ命令のオペランドを結果トークンにコピーする スカラ・プロセッサ・ユニット手段を含むことを特徴とする請求項21に記載の コプロセッサ。
JP52450594A 1993-04-27 1994-04-26 データ・フロー制御および複数の処理装置を有する画像圧縮コプロセッサ Expired - Fee Related JP3806936B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US5495093A 1993-04-27 1993-04-27
US08/054,950 1993-04-27
US08/078,793 1993-06-17
US08/078,793 US5699460A (en) 1993-04-27 1993-06-17 Image compression coprocessor with data flow control and multiple processing units
PCT/US1994/004617 WO1994025935A1 (en) 1993-04-27 1994-04-26 Image compression coprocessor with data flow control and multiple processing units

Publications (2)

Publication Number Publication Date
JPH11508066A true JPH11508066A (ja) 1999-07-13
JP3806936B2 JP3806936B2 (ja) 2006-08-09

Family

ID=26733674

Family Applications (1)

Application Number Title Priority Date Filing Date
JP52450594A Expired - Fee Related JP3806936B2 (ja) 1993-04-27 1994-04-26 データ・フロー制御および複数の処理装置を有する画像圧縮コプロセッサ

Country Status (7)

Country Link
US (1) US5699460A (ja)
EP (1) EP0710385B1 (ja)
JP (1) JP3806936B2 (ja)
KR (1) KR960705283A (ja)
AU (1) AU6775394A (ja)
DE (1) DE69431058T2 (ja)
WO (1) WO1994025935A1 (ja)

Families Citing this family (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9405914D0 (en) * 1994-03-24 1994-05-11 Discovision Ass Video decompression
GB2288957B (en) * 1994-03-24 1998-09-23 Discovision Ass Start code detector
US5842033A (en) * 1992-06-30 1998-11-24 Discovision Associates Padding apparatus for passing an arbitrary number of bits through a buffer in a pipeline system
GB2288521B (en) * 1994-03-24 1998-10-14 Discovision Ass Reconfigurable process stage
US5984512A (en) * 1994-07-29 1999-11-16 Discovision Associates Method for storing video information
US7037426B2 (en) * 2000-05-04 2006-05-02 Zenon Environmental Inc. Immersed membrane apparatus
JP3729540B2 (ja) * 1995-09-08 2005-12-21 株式会社ルネサステクノロジ 画像処理装置
US6901153B1 (en) * 1996-03-14 2005-05-31 Ati Technologies Inc. Hybrid software/hardware video decoder for personal computer
GB9607591D0 (en) * 1996-04-12 1996-06-12 Snell & Wilcox Ltd Playback and monitoring of compressed bitstreams
US5845296A (en) * 1996-07-10 1998-12-01 Oracle Corporation Method and apparatus for implementing segmented arrays in a database
US6192073B1 (en) 1996-08-19 2001-02-20 Samsung Electronics Co., Ltd. Methods and apparatus for processing video data
US6002441A (en) * 1996-10-28 1999-12-14 National Semiconductor Corporation Audio/video subprocessor method and structure
JP4294743B2 (ja) * 1996-12-13 2009-07-15 富士通株式会社 動きベクトル探索装置および動画像符号化装置
AUPO648397A0 (en) * 1997-04-30 1997-05-22 Canon Information Systems Research Australia Pty Ltd Improvements in multiprocessor architecture operation
US6414687B1 (en) * 1997-04-30 2002-07-02 Canon Kabushiki Kaisha Register setting-micro programming system
US6370273B1 (en) * 1998-04-10 2002-04-09 Flashpoint Technology, Inc. Method and system for tiled image data decompression
US6163839A (en) 1998-09-30 2000-12-19 Intel Corporation Non-stalling circular counterflow pipeline processor with reorder buffer
US6145073A (en) * 1998-10-16 2000-11-07 Quintessence Architectures, Inc. Data flow integrated circuit architecture
US6397324B1 (en) * 1999-06-18 2002-05-28 Bops, Inc. Accessing tables in memory banks using load and store address generators sharing store read port of compute register file separated from address register file
US6574273B1 (en) * 2000-01-12 2003-06-03 Sony Corporation Method and apparatus for decoding MPEG video signals with continuous data transfer
US7000034B2 (en) * 2000-03-02 2006-02-14 Agere Systems Inc. Function interface system and method of processing issued functions between co-processors
US6977743B2 (en) * 2001-04-24 2005-12-20 Hewlett-Packard Development Company, L.P. Device-initiated image processing transaction system and method
JP5372307B2 (ja) * 2001-06-25 2013-12-18 株式会社ガイア・システム・ソリューション データ処理装置およびその制御方法
JP4865960B2 (ja) * 2001-06-25 2012-02-01 株式会社ガイア・システム・ソリューション データ処理装置およびその制御方法
US8284844B2 (en) 2002-04-01 2012-10-09 Broadcom Corporation Video decoding system supporting multiple standards
JP2003296724A (ja) * 2002-04-05 2003-10-17 Hitachi Ltd 画像処理システム及びその方式
US6931061B2 (en) * 2002-11-13 2005-08-16 Sony Corporation Method of real time MPEG-4 texture decoding for a multiprocessor environment
JP2004198858A (ja) * 2002-12-20 2004-07-15 Casio Comput Co Ltd 投影装置
JP2004221633A (ja) * 2003-01-09 2004-08-05 Ricoh Co Ltd 画像処理装置、画像処理用プログラム及び記憶媒体
US20040202326A1 (en) * 2003-04-10 2004-10-14 Guanrong Chen System and methods for real-time encryption of digital images based on 2D and 3D multi-parametric chaotic maps
US7079147B2 (en) * 2003-05-14 2006-07-18 Lsi Logic Corporation System and method for cooperative operation of a processor and coprocessor
US7051146B2 (en) * 2003-06-25 2006-05-23 Lsi Logic Corporation Data processing systems including high performance buses and interfaces, and associated communication methods
JP4406241B2 (ja) * 2003-09-04 2010-01-27 オリンパス株式会社 画像処理装置
EP1536647A1 (en) * 2003-11-26 2005-06-01 STMicroelectronics Limited A video decoding device
JP2005176001A (ja) * 2003-12-12 2005-06-30 Renesas Technology Corp 半導体装置及び画像処理装置
JP2005184233A (ja) * 2003-12-17 2005-07-07 Sony Corp データ処理装置およびその方法と符号化装置
US20050196049A1 (en) * 2004-02-02 2005-09-08 Clark Adam L. System and method for encoding live audio/video information
US20050207657A1 (en) * 2004-02-02 2005-09-22 Clark Adam L System and method for encoding and decoding video
US20050169544A1 (en) * 2004-02-02 2005-08-04 Clark Adam L. System and method for encoding and decoding video
US7505045B2 (en) * 2004-02-02 2009-03-17 Adams Platform Pty Ltd. System and method for decoding live audio/video information
US20050169365A1 (en) * 2004-02-02 2005-08-04 Clark Adam L. Data encoding using multi-dimensional redundancies
US20050180641A1 (en) * 2004-02-02 2005-08-18 Clark Adam L. System and method for transmitting live audio/video information
US7010033B2 (en) * 2004-02-02 2006-03-07 Adams Platform Pty Ltd. System and method for compressing and encoding video
US6975767B1 (en) * 2004-02-02 2005-12-13 Adams Platform Pty Ltd. System and method for encoding and decoding video
US7483576B2 (en) * 2004-02-02 2009-01-27 Adams Platform Pty Ltd. System and method for decoding video
KR100621137B1 (ko) * 2004-02-27 2006-09-13 세이코 엡슨 가부시키가이샤 동화상 부호화 장치 및 동화상 처리장치
US7564976B2 (en) * 2004-03-02 2009-07-21 International Business Machines Corporation System and method for performing security operations on network data
US8468337B2 (en) * 2004-03-02 2013-06-18 International Business Machines Corporation Secure data transfer over a network
US7543088B2 (en) * 2004-03-11 2009-06-02 Sonics, Inc. Various methods and apparatuses for width and burst conversion
US7475168B2 (en) * 2004-03-11 2009-01-06 Sonics, Inc. Various methods and apparatus for width and burst conversion
WO2005101365A1 (ja) * 2004-04-16 2005-10-27 Rohm Co., Ltd 画像処理装置
US20050256722A1 (en) * 2004-05-14 2005-11-17 Clark Adam L System and method for lossless audio encoding and decoding
US7277975B2 (en) * 2004-11-02 2007-10-02 Sonics, Inc. Methods and apparatuses for decoupling a request from one or more solicited responses
US8032676B2 (en) * 2004-11-02 2011-10-04 Sonics, Inc. Methods and apparatuses to manage bandwidth mismatches between a sending device and a receiving device
US7155554B2 (en) * 2004-11-02 2006-12-26 Sonics, Inc. Methods and apparatuses for generating a single request for block transactions over a communication fabric
US7502514B2 (en) * 2004-11-15 2009-03-10 Smith Micro Software, Inc. System and method for lossless compression of already compressed files
US8279886B2 (en) 2004-12-30 2012-10-02 Intel Corporation Dataport and methods thereof
US8065354B1 (en) * 2005-03-04 2011-11-22 Nvidia Corporation Compression of 16 bit data using predictor values
US7797564B2 (en) * 2005-05-24 2010-09-14 International Business Machines Corporation Method, apparatus, and computer program product for dynamically modifying operating parameters of the system based on the current usage of a processor core's specialized processing units
US8407432B2 (en) * 2005-06-30 2013-03-26 Intel Corporation Cache coherency sequencing implementation and adaptive LLC access priority control for CMP
US8462164B2 (en) * 2005-11-10 2013-06-11 Intel Corporation Apparatus and method for an interface architecture for flexible and extensible media processing
JP4156631B2 (ja) * 2006-04-26 2008-09-24 シャープ株式会社 画像処理方法および画像処理装置
US8250618B2 (en) * 2006-09-18 2012-08-21 Elemental Technologies, Inc. Real-time network adaptive digital video encoding/decoding
US20080137726A1 (en) * 2006-12-12 2008-06-12 General Instrument Corporation Method and Apparatus for Real-Time Video Encoding
US8184715B1 (en) * 2007-08-09 2012-05-22 Elemental Technologies, Inc. Method for efficiently executing video encoding operations on stream processor architectures
US8121197B2 (en) 2007-11-13 2012-02-21 Elemental Technologies, Inc. Video encoding and decoding using parallel processors
US8385971B2 (en) 2008-08-19 2013-02-26 Digimarc Corporation Methods and systems for content processing
JP5528001B2 (ja) * 2009-04-08 2014-06-25 キヤノン株式会社 情報処理装置、情報処理方法
TWI455587B (zh) * 2009-04-10 2014-10-01 Asustek Comp Inc 具有多格式影像編解碼功能的資料處理電路及處理方法
KR20120011791A (ko) * 2010-07-21 2012-02-08 한국전자통신연구원 통신 시스템에서 데이터 수신 장치 및 방법
JP5600517B2 (ja) 2010-08-18 2014-10-01 キヤノン株式会社 情報処理装置、情報処理方法、およびプログラム
KR101782373B1 (ko) 2010-11-10 2017-09-29 삼성전자 주식회사 X-y 스택 메모리를 이용한 컴퓨팅 장치 및 방법
US9223890B2 (en) 2011-03-15 2015-12-29 Hewlett-Packard Development Company, L.P. System and method of processing content using a uniform resource identifier
JP5842357B2 (ja) * 2011-03-25 2016-01-13 富士ゼロックス株式会社 画像処理装置及び画像処理プログラム
US9092167B2 (en) 2011-04-04 2015-07-28 Hewlett-Packard Development Company, L.P. Systems and methods for managing a print job
US9507594B2 (en) * 2013-07-02 2016-11-29 Intel Corporation Method and system of compiling program code into predicated instructions for execution on a processor without a program counter
EP3792767B1 (en) * 2019-09-13 2023-07-12 Accemic Technologies GmbH Event processing

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4145733A (en) * 1974-03-29 1979-03-20 Massachusetts Institute Of Technology Data processing apparatus for highly parallel execution of stored programs
JPS59111471A (ja) * 1982-12-17 1984-06-27 Ricoh Co Ltd 画像処理方法
US4985888A (en) * 1987-04-24 1991-01-15 Madge Networks Limited Token ring system hierarchy
US4855813A (en) * 1987-12-11 1989-08-08 Russell David P Television image processing system having capture, merge and display capability
US4916914A (en) * 1988-05-27 1990-04-17 Cpi Engineering Services, Inc. Rotary displacement compression heat transfer systems incorporating highly fluorinated refrigerant-synthetic oil lubricant compositions
DE69012820T2 (de) * 1989-07-26 1995-05-11 Massachusetts Inst Technology Nicht-besetzt-wartezustandsmittelsteuerung.
US5475770A (en) * 1990-09-24 1995-12-12 Cgk Computer Gesellschaft Konstanz Mbh Parallel recognition of document images with a time-elapsed processing abortion to improve overall throughput
US5185819A (en) * 1991-04-29 1993-02-09 General Electric Company Video signal compression apparatus for independently compressing odd and even fields
US5212742A (en) * 1991-05-24 1993-05-18 Apple Computer, Inc. Method and apparatus for encoding/decoding image data
JP2741973B2 (ja) * 1991-06-24 1998-04-22 大日本スクリーン製造株式会社 画像処理システム
US5388223A (en) * 1991-09-05 1995-02-07 International Business Machines Corporation 1-bit token ring arbitration architecture
US5251213A (en) * 1992-05-12 1993-10-05 Microcom Systems, Inc. Multiport source routing token ring bridge apparatus
US5262968A (en) * 1992-06-25 1993-11-16 The United States Of America As Represented By The Secretary Of The Air Force High performance architecture for image processing
US5267968A (en) * 1992-07-09 1993-12-07 Russo Ronald D Retention bolster for percutaneous catheters

Also Published As

Publication number Publication date
EP0710385B1 (en) 2002-07-24
EP0710385A4 (en) 1999-04-07
DE69431058D1 (de) 2002-08-29
EP0710385A1 (en) 1996-05-08
AU6775394A (en) 1994-11-21
KR960705283A (ko) 1996-10-09
DE69431058T2 (de) 2003-02-06
JP3806936B2 (ja) 2006-08-09
US5699460A (en) 1997-12-16
WO1994025935A1 (en) 1994-11-10

Similar Documents

Publication Publication Date Title
JP3806936B2 (ja) データ・フロー制御および複数の処理装置を有する画像圧縮コプロセッサ
WO1994025935A9 (en) Image compression coprocessor with data flow control and multiple processing units
US7230633B2 (en) Method and apparatus for image blending
US5909224A (en) Apparatus and method for managing a frame buffer for MPEG video decoding in a PC environment
US5448310A (en) Motion estimation coprocessor
US6393545B1 (en) Method apparatus and system for managing virtual memory with virtual-physical mapping
US8516026B2 (en) SIMD supporting filtering in a video decoding system
US7034897B2 (en) Method of operating a video decoding system
US6246396B1 (en) Cached color conversion method and apparatus
US8229002B2 (en) Video decoding system supporting multiple standards
US6311258B1 (en) Data buffer apparatus and method for storing graphical data using data encoders and decoders
US6289138B1 (en) General image processor
US7681013B1 (en) Method for variable length decoding using multiple configurable look-up tables
US7015921B1 (en) Method and apparatus for memory access
KR19980018215A (ko) 비디오 데이터 처리방법 및 장치
US7467287B1 (en) Method and apparatus for vector table look-up
JP4101253B2 (ja) 圧縮装置及びその方法
US7055018B1 (en) Apparatus for parallel vector table look-up
KR100304511B1 (ko) 비디오복원및디코딩시스템
JP4227218B2 (ja) 動的メモリ管理装置及びその制御方法
US7114058B1 (en) Method and apparatus for forming and dispatching instruction groups based on priority comparisons
JPH0863587A (ja) 透過性検出データ転送制御装置を有するデータプロセッサおよびその操作方法
EP1351513A2 (en) Method of operating a video decoding system
Lee et al. MPEG-2 decoder implementation on MAP1000A media processor using the C language
AU766467B2 (en) Graphics processing system

Legal Events

Date Code Title Description
A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20031126

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20040301

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040226

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040622

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041021

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20041111

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050809

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20051109

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20051109

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20060120

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060209

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060508

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20100526

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100526

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110526

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110526

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120526

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120526

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20130526

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees