JPH087083A - 算術及び論理混合組合せを形成する3入力算術論理装置 - Google Patents

算術及び論理混合組合せを形成する3入力算術論理装置

Info

Publication number
JPH087083A
JPH087083A JP6296706A JP29670694A JPH087083A JP H087083 A JPH087083 A JP H087083A JP 6296706 A JP6296706 A JP 6296706A JP 29670694 A JP29670694 A JP 29670694A JP H087083 A JPH087083 A JP H087083A
Authority
JP
Japan
Prior art keywords
bit
data
logic unit
arithmetic logic
input
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.)
Pending
Application number
JP6296706A
Other languages
English (en)
Inventor
Karl M Guttag
エム グッタグ カール
Simpson Richard
シンプソン リチャード
Brendan Walsh
ウォルシュ ブレンダン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Texas Instruments Inc
Original Assignee
Texas Instruments Inc
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 Texas Instruments Inc filed Critical Texas Instruments Inc
Publication of JPH087083A publication Critical patent/JPH087083A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • G06F7/575Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/382Reconfigurable for different fixed word lengths
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49994Sign extension

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Processing (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 【目的】 3つの多ビット入力信号の算術及びブール混
合組合せを形成する3入力算術論理装置を提供する。 【構成】 算術論理装置は先ずブール組合せを形成し、
次いで算術組合せを形成する。現命令は、形成される組
合せを制御する機能信号F0−F7を生成する命令デコ
ーダを駆動する。3入力算術論理装置はビット回路の集
合を使用することが好ましく、各ビット回路は桁上げ伝
播、生成及びキル信号を形成する。これらの信号を多レ
ベル論理樹木回路及び桁上げ入力と共に使用して、ビッ
ト結果及び次のビット回路への桁上げ出力を発生させる
ことができる。この構造は、現命令に基づいて3つの入
力信号の選択された算術、ブール、もしくは算術及びブ
ール混合機能の形成を可能にする。入力信号の1つに組
合せが感応しないように機能信号を選択し、残余の入力
信号の2つの入力機能を遂行させることができる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、デジタルデータ処理に
関し、具体的にはデジタルデータ処理、特にデジタル画
像/グラフィックスを処理するためのマイクロプロセッ
サ回路、アーキテクチャ及び方法に関する。
【0002】
【発明の背景】本発明は、コンピュータグラフィック
ス、特にビット写像( bit mapped )グラフィックスの分
野に関する。ビット写像グラフィックスにおいては、コ
ンピュータメモリは個々のピクチャ要素即ち画像の画素
毎のデータを、その画像内のその画素の位置に対応する
メモリ位置に記憶する。この画像は、表示される画像で
あっても、もしくは操作、記憶、表示、または再伝送す
るために収集された画像であってもよい。ビット写像コ
ンピュータグラフィックスの分野は、ダイナミックラン
ダムアクセスメモリ(DRAM)が低価格になって容量
が増大したこと、及びマイクロプロセッサの処理能力が
増大したことによって大きな便益を受けてきた。成分部
品の価格及び性能のこれらの有利な変化によって、より
大きく、そしてより複雑なコンピュータ画像システムを
経済的に実現できるようになった。ビット写像グラフィ
ックスの分野は、画像データ操作に使用される処理の型
の進展に伴って幾つかの段階を経てきた。初期のビット
写像グラフィックスを支援するコンピュータシステム
は、全てのビット写像動作に対してシステムプロセッサ
を使用していた。この型のシステムは幾つかの欠陥を有
している。第1に、コンピュータシステムプロセッサ
は、ビット写像グラフィックスを処理するように特定的
に設計されたものではなかった。汎用計算のためには極
めて合理的な設計選択であっても、ビット写像グラフィ
ックスシステムには不向きである。従って若干のルーチ
ングラフィックスタスクの動作は低速であった。更に、
ビット写像グラフィックスの画像操作に必要な処理がシ
ステムプロセッサの計算能力に負担をかけるために、他
の動作をも低速にしていた。
【0003】ビット写像グラフィックス処理の進展の次
の段階は、専用ハードウェアグラフィックス制御装置で
あった。これらの装置は、システムプロセッサの制御の
下に線、楕円及び円のような簡単な図を描くことができ
る。また多くのこれらの装置は、画素ブロック転送( Pi
xBlt )を行うこともできる。画素ブロック転送は、非表
示メモリからビット写像表示メモリへ転送することによ
って、特定の型の字体の英数文字のような標準画像要素
を、ある表示装置内に表示させるのに有用である。この
機能は同一の小さい画像をビット写像表示メモリの全体
へ転送することによって瓦張り(もしくはタイリング)
するのに使用するためにも有用である。最も屡々使用さ
れる若干のグラフィックス機能を遂行するための内蔵ア
ルゴリズムは、改善されたシステム性能を提供する。し
かしながら、有用なグラフィックスコンピュータシステ
ムは、このようなハードウェアグラフィックス制御装置
では殆ど実現されていない機能の他に、多くの機能を必
要とする。これらの付加的な機能はシステムプロセッサ
によってソフトウェアで実現しなければならない。典型
的には、これらのハードウェアグラフィックス制御装置
はシステムプロセッサにビット写像メモリへの制限され
たアクセスのみを許し、そのためハードウェアグラフィ
ックス制御装置の固定された機能の集合をシステムソフ
トウェアによって拡張できる程度が制限されることにな
る。
【0004】更にグラフィックスシステムプロセッサ
は、ビット写像グラフィックス処理の開発のさらなる段
階を経てきた。グラフィックスシステムプロセッサは、
マイクロプロセッサの全ての特性を有するプログラム可
能な装置であり、ビット写像グラフィックスのための特
別な機能をも含んでいる。 Texas Instruments Incorpo
rated 製の TMS34010 及び TMS34020 はこの分類の装置
を代表している。これらのグラフィックスシステムプロ
セッサは、マイクロプロセッサと同一の技法で、記憶さ
れたプログラムに応答し、算術論理装置、レジスタファ
イル内のデータ記憶、並びにプログラムの流れ及び外部
データメモリの両方を介してデータを操作する能力を含
んでいる。更にこれらの装置は、プログラム制御の下で
動作する特別目的グラフィックス操作ハードウェアを含
む。これらのグラフィックスシステムプロセッサの命令
集合内の付加的な命令は、この特別目的グラフィックス
ハードウェアを制御する。これらの命令及びこれらを支
援するハードウェアは、多くの文脈に有用なベースレベ
ルグラフィックス機能を遂行するように選択される。従
ってグラフィックスシステムプロセッサは、特定の問題
のために選択されたアルゴリズムを使用して、多くの異
なるグラフィックス応用についてプログラムすることが
できる。これは、ハードウェア制御装置からプログラム
されたマイクロプロセッサへ変えることによって得るこ
とができるものと同じ有用性に向上をもたらす。これら
のグラフィックスシステムプロセッサはマイクロプロセ
ッサと同一の手法でプログラムできる装置であるから、
これらはスタンドアロングラフィックスプロセッサ、シ
ステムプロセッサに従属するグラフィックスコプロセッ
サ( co-processor )、もしくは密に結合されたグラフィ
ックス制御装置として作動させることができる。
【0005】新しい応用に伴って、よりパワフルなグラ
フィックス機能に関する要望が発生した。幾つかの分野
においては、より費用有効なグラフィックス演算を経済
的に実現できることを要求している。これらの分野に
は、ビデオ会議、完全動画を伴うマルチメディア計算、
高品位テレビジョン、カラーファクシミリ、及びデジタ
ル写真技術が含まれる。これらの各分野は独特な問題を
有しているが、これらに共通するテーマは画像データ圧
縮及び圧縮解除である。画像、特に完全動画のために必
要な伝送帯域幅の量及び記憶容量の量は莫大である。最
終画像の品質を受け入れ可能ならしめる効率的なビデオ
圧縮及び圧縮解除を用いない限り、これらの応用は伝送
帯域幅及び記憶容量に関連する費用によって制限されよ
う。また画像認識のような画像処理機能、及び表示制御
のようなグラフィックス機能の両者を支援できる単一の
システムに関する要望も存在している。関連出願 本出願は、全てテキサス・インスツルメンツに譲渡され
た以下の合衆国特許出願に開示された発明の改良に関す
る。1994年 6月21日付合衆国特許出願一連番号 08/263,
501 号“プロセッサ及びメモリのクロスバリンクを有す
る多重プロセッサ及び動作方法”。この出願は、現在は
放棄された 1993 年10月12日付合衆国特許出願一連番号
08/135,754 号の継続であり、現在は放棄された 1992
年 8月21日付合衆国特許出願一連番号 07/933,865 号の
継続であり、現在は放棄された 1989 年11月17日付合衆
国特許出願一連番号 07/435,591 号の継続である( TI-1
4608 )。
【0006】1989年11月17日出願、1993年 5月18日付発
行合衆国特許 5,212,777号“SIMD/MIMD再構成
可能な多重プロセッサ及び動作方法”( TI-14655 )。19
92年 6月 5日付合衆国特許出願一連番号 07/895,565 号
“多重プロセッサのための再構成可能な通信及び動作方
法”。この出願は、現在は放棄された 1989年11月17日
付合衆国特許出願一連番号 07/437,856 号の継続である
( TI-14656 )。1994年 6月22日付合衆国特許出願一連番
号 08/264,582 号“クロスバの減少された領域及び動作
方法”。この出願は、現在は放棄された 1989 年11月17
日付合衆国特許出願一連番号 07/437,852 号の継続であ
る( TI-14657 )。1993年 3月15日付合衆国特許出願一連
番号 08/032,530 号“同期MIMD多重処理システム及
び動作方法”。この出願は、現在は放棄された 1989 年
11月17日付合衆国特許出願一連番号 07/437,853 号の継
続である( TI-14658 )。1989年11月17日出願、1993年 5
月23日付発行合衆国特許 5,197,140号“スライスドアド
レス方式多重プロセッサ及び動作方法”( TI-14659 )。
1989年11月17日出願、1994年 8月16日付発行合衆国特許
5,339,447号“画像データの2進列内の1の数を計数す
るために相互接続された半加算器のマトリクスを使用し
た1計数回路”( TI-14660 )。
【0007】1989年11月17日出願、1993年 8月24日付発
行合衆国特許 5,239,654号“SIMDモードで動作させ
た場合にデータメモリとしてMIMD命令メモリの再使
用を提供する二重モードSIMD/MIMDプロセッ
サ”( TI-14661 )。1992年 6月29日付合衆国特許出願一
連番号 07/911,562 号“イメージングコンピュータ及び
動作方法”。この出願は、現在は放棄された 1989 年11
月17日付合衆国特許出願一連番号 437,854号の継続であ
る( TI-14662 )。1989年11月17日出願、1993年 7月 6日
付発行合衆国特許 5,226,125号“集積された交差点論理
を有するスイッチマトリクス及び動作方法”( TI-14709
)。本出願はまた、同時出願され、同一の明細書を含む
以下の合衆国特許出願にも関連している。合衆国特許出
願一連番号 号( TI-15518 )“バレル回転子
及びマスク発生器を有する3入力算術論理装置”。合衆
国特許出願一連番号 号( TI-15519 )“複数
の独立区分と各区分からの結果を記憶するレジスタとを
有する算術論理装置”。合衆国特許出願一連番号
号( TI-15520 )“レジスタ対から条件付きでメモ
リへ記憶させる装置”。
【0008】合衆国特許出願一連番号 号(
TI-15525 )“反復除算装置、繰り返し当たり複数の商ビ
ットを形成するシステム及び方法”。合衆国特許出願一
連番号 号( TI-15527 )“単一のデータワー
ドの複数の等区分内のデータの合計を形成する方法、装
置及びシステム”。合衆国特許出願一連番号
号( TI-15528 )“サイズ検出に最上位ビットを使用す
るハフマン符号化方法、回路及びシステム”。合衆国特
許出願一連番号 号( TI-15529 )“負数の変
換のために条件付き減算を使用するハフマン復号方法、
回路及びシステム”。合衆国特許出願一連番号
号( TI-15530 )“複数の絶対差を合計する方法、装
置及びシステム”。合衆国特許出願一連番号
号( TI-15531 )“反復除算装置、排他的ORで最左の
1の検出及び最右の1の検出を使用するシステム及び方
法”。合衆国特許出願一連番号 号( TI-155
32 )“独立した2つのアドレスの選択的組合わせを使用
するアドレスジェネレータ”。合衆国特許出願一連番号
号( TI-15535 )“相関方法、装置及びシス
テム方法”。
【0009】合衆国特許出願一連番号 号(
TI-15537 )“複数の独立プロセッサ動作を制御する長命
令ワード”。合衆国特許出願一連番号 号(
TI-15539 )“直交データ変換用回転レジスタ”。合衆国
特許出願一連番号 TI-15539 “中間フィルタ方法、回路
及びシステム”。合衆国特許出願一連番号
号( TI-15544 )“条件付きレジスタ源選択を有する算術
論理装置”。合衆国特許出願一連番号 号(
TI-15651 )“反復によって除算する装置、システム及び
方法”。合衆国特許出願一連番号 号( TI-1
7919 )“冗長符号化乗算結果を使用する乗算丸め”。合
衆国特許出願一連番号 号( TI-18209 )“分
割乗算演算”。合衆国特許出願一連番号
( TI-18213 )“0に関する条件付き試験を含む混合条件
試験条件付き及び分岐演算”。
【0010】合衆国特許出願一連番号 号(
TI-18214 )“パックされたワード対の乗算演算”。合衆
国特許出願一連番号 号( TI-18570 )“桁送
り装置を有する3入力算術論理装置”。合衆国特許出願
一連番号 号( TI-18571 )“マスク発生器を
有する3入力算術論理装置”。合衆国特許出願一連番号
号( TI-18572 )“バレル回転子及びマスク
発生器を有する3入力算術論理装置”。合衆国特許出願
一連番号 号( TI-18573 )“桁送り装置及び
マスク発生器を有する3入力算術論理装置”。合衆国特
許出願一連番号 号( TI-18574 )“第1の入
力に加算された第2の入力と第3の入力との第1のブー
ル組合わせプラス第2の入力と第3の入力の第2のブー
ル組合わせの合計を形成する3入力算術論理装置”。合
衆国特許出願一連番号 号( TI-18575 )“第
1、第2及び第3の入力の第1のブール組合わせプラス
第1、第2及び第3の入力の第2のブール組合わせの合
計を形成する3入力算術論理装置”。
【0011】合衆国特許出願一連番号 号(
TI-18576 )“桁上げ伝播論理を使用する3入力算術論理
装置”。合衆国特許出願一連番号 号( TI-1
8577 )“書き込み優先順位を使用してIF、THEN、
ELSEを演算するデータ処理装置、システム及び方
法”。
【0012】
【発明の概要】3入力算術論理装置は、3つの多ビット
入力信号の算術及びブール(混合)組合せを形成する。
算術論理装置は、好ましくは式A&F1(B,C)+F
2(B,C)に従って先ずブール組合せを形成し、次い
で算術組合せを形成する。ブール組合せF1(B,C)
及びF2(B,C)は、2つの入力の考え得る全てのブ
ール組合せの集合から現命令によって独立的に選択され
る。現命令は、機能信号F0−F7を生成する命令デコ
ーダを駆動する。機能信号F0−F7は形成される組合
せを制御する。好ましくは、3入力算術論理装置はビッ
ト回路の集合を使用する。ブール関数発生器は、桁上げ
伝播、生成及びキル信号を形成する。ブール関数発生器
は、多重レベル論理樹木回路によって実現することがで
きる。これらの信号は桁上げ入力と混合され、ビット結
果及び次のビット回路への桁上げ入力が作られる。桁上
げ生成及び桁上げキルは、算術可能化信号が存在する時
に限って動作可能になることができる。この構造は、現
命令に基づいて3つの入力信号の選択された算術、ブー
ル、及び算術及びブール機能の形成を可能にする。考え
得る組合せは、A+F(B,C)、A−F(B,C)、
F(C,A+B,A−C)及びF1(A,B)±F2
(A,C)を含む。組合せが入力信号の1つに感応しな
くなるように機能信号を選択することができ、従って残
余の入力信号の2つの入力機能を遂行させることができ
る。命令自体が機能信号及び機能変更信号を含んでいて
も、もしくは機能信号及び機能変更信号を特別データレ
ジスタ内に記憶させておいてもよい。機能変更信号は、
使用に先立って機能信号を変更せしめる。これらは入力
信号の1つを効果的に変更させることができる。特定の
型の命令は、使用の際に特別レジスタ内に記憶されてい
る機能信号を反転させることができる。
【0013】3入力算術論理装置は、最下位ビットへ桁
上げ入力を供給する最下位ビットキャリーイン発生器を
含む。この桁上げ入力は、形成中の組合せによって決定
される。一般的には減算中に、もしF2(B,C)がB
もしくはCの反転を含むか、またはB及びCのブール組
合せの反転を含んでいれば、桁上げ入力は“1”であ
り、そうでない場合には桁上げ入力は“0”である。桁
上げ入力は、若干の命令に対して特別目的データレジス
タ内に指定することができる。形成される組合せを、入
力の1つの符号ビットに依存させることができる。符号
依存命令を実行している時に、好ましくは部分集合を反
転させることによって機能信号を変更することができ
る。本発明の好ましい実施例では、3入力算術論理装置
は、画像処理に使用される単一の集積回路内に形成され
ている多重プロセッサの一部として少なくとも1つのデ
ジタル画像/グラフィックスプロセッサ内に実現するこ
とができる。
【0014】
【実施例】以下に添付図面を参照して本発明の上述し
た、及び他の面を説明する。図1は、本発明による画像
及びグラフィックス処理のために実現された多重プロセ
ッサ集積回路を含む画像データ処理システムのブロック
線図である。このデータ処理シスッテムはホスト処理シ
ステム1を含む。ホスト処理システム1は、図1のデー
タ処理システムのホストシステムのためのデータ処理を
行う。ホスト処理システム1には、プロセッサ、少なく
とも1つのメモリ、長期記憶装置、読み出し専用メモ
リ、ランダムアクセスメモリ、及びホストシステムバス
に結合された少なくとも1つのホスト周辺装置2が含ま
れる。ホスト処理システムの配列及び動作は普通であ
る。その処理機能の故に、ホスト処理システム1は画像
データ処理システムの機能を制御する。多重プロセッサ
集積回路100は、図1の画像データ処理システムの画
像演算のためのデータ操作及び計算を含む殆どのデータ
処理を行う。多重プロセッサ集積回路100は、画像シ
ステムバスに双方向に結合され、この画像システムバス
によってホスト処理システム1と通信する。図1の配列
においては、多重プロセッサ集積回路100はホスト処
理システム1とは無関係に動作する。しかしながら、多
重プロセッサ集積回路100はホスト処理システム1に
応答する。
【0015】図1は2つの画像システムを示している。
撮像装置3は、画像入力装置として動作する文書スキャ
ナ、電荷結合装置スキャナもしくはビデオカメラを表し
ている。撮像装置3は、この画像を画像収集制御装置4
へ供給する。画像収集制御装置4は、画像をデジタル化
し、それをラスタ走査フレームに形成する。このフレー
ム収集プロセスは、多重プロセッサ集積回路100から
の信号によって制御される。このようにして形成された
画像フレームはビデオランダムアクセスメモリ5内に記
憶される。ビデオランダムアクセスメモリ5には画像シ
ステムバスを介してアクセスすることができ、それによ
って多重プロセッサ集積回路100によって処理される
画像のデータ転送が可能である。第2の画像システムは
ビデオ表示装置を駆動する。多重プロセッサ集積回路1
00は、表示される画像を画素写像を通して指定するた
めにビデオランダムアクセスメモリ6と通信する。多重
プロセッサ集積回路100は、画像システムバスを通し
てビデオランダムアクセスメモリ6内に記憶されている
画像データを制御する。この画像に対応するデータはビ
デオランダムアクセスメモリ6から呼び戻され、ビデオ
パレット7へ供給される。ビデオパレット7は、この呼
び戻されたデータを別のカラー空間に変換し、画素当た
りのビット数を拡張する等々を行うことができる。この
変換はルックアップテーブルを通して遂行可能である。
ビデオパレット7は、ビデオ表示装置8を駆動する適切
なビデオ信号をも生成する。もしこれらのビデオ信号が
アナログ信号であれば、ビデオパレット7は適当なデジ
タル・アナログ変換を含む。ビデオパレット7からのビ
デオレベル信号出力は、色、飽和、及び明るさ情報を含
むことができる。多重プロセッサ集積回路100は、ビ
デオパレット7内に記憶されているデータを制御し、そ
れによってデータ変換プロセス及び画像フレームのタイ
ミングを制御する。多重プロセッサ集積回路100は、
ビデオパレット7の制御を通して、ビデオ表示画像の線
の長さ及びフレーム当たりの線の数、同期、リトレー
ス、及び消去信号を制御することができる。重要なこと
には、多重プロセッサ集積回路100はビデオランダム
アクセスメモリ6内の何処に図形表示情報が記憶されて
いるかを決定し、制御する。その後にビデオランダムア
クセスメモリ6から読み出す際に、多重プロセッサ集積
回路100はビデオランダムアクセスメモリ6からの読
み出し順序、アクセスすべきアドレス、ビデオ表示装置
8上に所望の図形画像を発生させるために必要な制御情
報を決定する。
【0016】ビデオ表示装置8は、指定されたビデオ表
示を発生してユーザに見せる。広く使用されている2つ
の技術が存在している。第1の技術は、ビデオデータを
画素毎の色、色相、明るさ、及び飽和で指定する。第2
の技術の場合には、赤、青及び緑の色レベルを画素毎に
指定する。ビデオパレット7及びビデオ表示装置8は選
択された技術と互換可能であるように設計され、構成さ
れている。図1には、画像システムバスに結合されてい
る付加的なメモリ9も示されている。この付加的なメモ
リは、付加的なビデオランダムアクセスメモリ、ダイナ
ミックランダムアクセスメモリ、スタティックランダム
アクセスメモリ、もしくは読み出し専用メモリを含むこ
とができる。多重プロセッサ集積回路100は、メモリ
9内に記憶されているプログラムによって全体的に、も
しくは部分的に、の何れかで制御することができる。こ
のメモリ9は、種々の型の図形画像データを記憶するこ
ともできる。更に多重プロセッサ集積回路100は、ビ
デオランダムアクセスメモリ、ダイナミックランダムア
クセスメモリ、及びスタティックランダムアクセスメモ
リのためのメモリインタフェース回路を含むことが好ま
しい。以上によりシステムは、ビデオランダムアクセス
メモリ5もしくは6の何れをも備えることなく多重プロ
セッサ集積回路100を使用して構成できる。
【0017】図1はトランシーバ16を含んでいる。ト
ランシーバ16は、画像システムバスと通信チャネルと
の間の変換及び双方向通信を行う。トランシーバ16を
使用するシステムの一例はビデオ会議である。図1に示
す画像データ処理システムは撮像装置3及び画像収集制
御装置4を使用して、第1の場所に居る人々のビデオ画
像を形成する。多重プロセッサ集積回路100はビデオ
圧縮を行い、圧縮されたビデオ信号をトランシーバ16
及び通信チャネルを介して別の場所の同一画像データ処
理システムへ伝送する。トランシーバ16は同様に圧縮
されたビデオ信号を、通信チャネルを介して遠隔画像デ
ータ処理システムから受信する。多重プロセッサ集積回
路100は、この受信した信号を圧縮解除し、ビデオラ
ンダムアクセスメモリ6及びビデオパレット7を制御し
て対応する圧縮解除されたビデオ信号をビデオ表示装置
8上に表示させる。これが画像データ処理システムがト
ランシーバ16を使用する唯一の例ではないことを理解
されたい。また、双方向通信が同一の型の信号である必
要がないことも理解されたい。例えば、対話形ケーブル
テレビジョン信号においては、ケーブルシステムヘッド
イン( head in ) は圧縮されたビデオ信号を通信チャネ
ルを通して画像データ処理システムへ送信する。画像デ
ータ処理システムは、制御及びデータ信号をトランシー
バ16及び通信チャネルを通してケーブルシステムヘッ
ドインへ送り返すことができる。
【0018】図1は、ホスト処理システム1を含むシス
テムで実現された多重プロセッサ集積回路100を示し
ている。当業者ならば、本発明の以下の開示から、多重
プロセッサ集積回路100を有用なシステムの唯一のプ
ロセッサとして使用できることが理解されよう。このよ
うなシステムでは、多重プロセッサ集積回路100はシ
ステムの全ての機能を遂行するようにプログラムされ
る。本発明は、画像処理に使用されるプロセッサに特に
有用である。好ましい実施例によれば、本発明は多重プ
ロセッサ集積回路100で実現されている。この好まし
い実施例は、本発明を実現した複数の同一のプロセッサ
を含む。これらの各プロセッサをデジタル画像/グラフ
ィックスプロセッサと呼ぶ。この呼び方は、便利上その
ようにしたまでである。本発明を実現するプロセッサ
は、単一の集積回路上に別々に構成されたプロセッサで
あっても、または複数の集積回路であってもよい。もし
単一の集積回路上に実現されていれば、この単一の集積
回路は、デジタル画像/グラフィックスプロセッサが使
用する読み出し専用メモリ及びランダムアクセスメモリ
をオプションで含むこともできる。図2に、本発明の好
ましい実施例の多重プロセッサ集積回路100のアーキ
テクチャを示す。多重プロセッサ集積回路100は、各
々が複数の区分に分割されている2つのランダムアクセ
スメモリ10及び20、クロスバ50、マスタプロセッ
サ60、デジタル画像/グラフィックスプロセッサ7
1、72、73及び74、システムメモリへのアクセス
を調停する転送制御装置80、独立した第1及び第2の
画像メモリへのアクセスを制御することができるフレー
ム制御装置90を含む。多重プロセッサ集積回路100
は、マルチメディア計算におけるような画像処理及びグ
ラフィックス演算に有用な高度の並行演算を行う。
【0019】多重プロセッサ集積回路100は、2つの
ランダムアクセスメモリを含む。ランダムアクセスメモ
リ10は、主としてマスタプロセッサ60が専用する。
これは、2つの命令キャッシュメモリ11及び12と、
2つのデータキャッシュメモリ13及び14と、パラメ
タメモリ15とを含む。これらのメモリ区分は物理的に
同一であることができるが、接続及び使用は異なる。ラ
ンダムアクセスメモリ20にはマスタプロセッサ60及
び各デジタル画像/グラフィックスプロセッサ71、7
2、73及び74がアクセスできる。各デジタル画像/
グラフィックスプロセッサ71、72、73及び74は
5つの対応するメモリ区分を有する。これらは、命令キ
ャッシュメモリ、3つのデータメモリ、及び1つのパラ
メタメモリを含む。即ち、デジタル画像/グラフィック
スプロセッサ71は、対応する命令キャッシュメモリ2
1と、データメモリ22、23、24と、パラメタメモ
リ25とを有し、デジタル画像/グラフィックスプロセ
ッサ72は、対応する命令キャッシュメモリ26と、デ
ータメモリ27、28、29と、パラメタメモリ30と
を有し、デジタル画像/グラフィックスプロセッサ73
は、対応する命令キャッシュメモリ31と、データメモ
リ32、33、34と、パラメタメモリ35とを有し、
そしてデジタル画像/グラフィックスプロセッサ74
は、対応する命令キャッシュメモリ36と、データメモ
リ37、38、39と、パラメタメモリ40とを有して
いる。ランダムアクセスメモリ10の区分と同様に、こ
れらのメモリ区分は物理的に同一であることができる
が、接続及び使用は異なる。メモリ10及び20のこれ
らの各メモリ区分が2Kバイトを含み、多重プロセッサ
集積回路100内の合計メモリが 50 Kバイトを含むこ
とが好ましい。
【0020】多重プロセッサ集積回路100は、複数の
独立した並列データ転送を使用してプロセッサとメモリ
との間で高速度のデータ転送を行うように構成されてい
る。クロスバ50がこれらのデータ転送を可能にする。
各デジタル画像/グラフィックスプロセッサ71、7
2、73及び74は各サイクル中に同時に動作可能な3
つのメモリポートを有している。命令ポート(I)は、
対応する命令キャッシュから 64 ビットのデータワード
を取り込むことができる。ローカルデータポート(L)
は、そのデジタル画像/グラフィックスプロセッサに対
応するデータメモリもしくはパラメタメモリから 32 ビ
ットのデータワードを読み出し、またはこれらのメモリ
へ 32 ビットのデータワードを書き込むことができる。
大域データポート(G)は、何れかのデータメモリ、パ
ラメタメモリもしくはランダムアクセスメモリ20から
32 ビットのデータワードを読み出し、またはこれらの
メモリへ 32 ビットのデータワードを書き込むことがで
きる。マスタプロセッサ60は、2つのメモリポートを
含む。命令ポート(I)は、命令キャッシュ11及び1
2の何れかから 32 ビットのデータワードを取り込むこ
とができる。データポート(C)は、データキャッシュ
13もしくは14、ランダムアクセスメモリ10のパラ
メタメモリ15、もしくは何れかのデータメモリ、パラ
メタメモリ、もしくはランダムアクセスメモリ20から
32 ビットのデータワードを読み出し、またはこれらの
メモリへ 32 ビットのデータワードを書き込むことがで
きる。転送制御装置80は、データポート(C)を通し
てランダムアクセスメモリ10もしくは20の何れかの
区分にアクセスすることができる。従って、任意の1メ
モリサイクル中に 15 の並列メモリアクセスを要求する
ことができる。ランダムアクセスメモリ10及び20
は、このように多くの並列アクセスを支援するために25
のメモリに分割されているのである。
【0021】クロスバ50は、マスタプロセッサ60、
デジタル画像/グラフィックスプロセッサ71、72、
73及び74、及び転送制御装置80と、メモリ10及
び20との接続を制御する。クロスバ50は、行及び列
に配列された複数の交差点(crosspoint )51を含む。
交差点51の各列は単一のメモリ区分、及び対応するア
ドレス範囲に対応する。プロセッサは、そのプロセッサ
が出力するアドレスの最上位ビットを通してメモリ区分
の1つへのアクセスを要求する。プロセッサにより出力
されるこのアドレスはある行に沿って走る。そのアドレ
スを有するメモリ区分に対応する交差点51は、そのメ
モリ区分へのアクセスを許可もしくは拒絶の何れかによ
って応答する。もし現メモリサイクル中に他のプロセッ
サがそのメモリ区分へのアクセスを要求していなけれ
ば、交差点51はその行及び列を結合することによって
アクセスを許可する。これにより、そのアドレスがその
メモリ区分へ供給される。メモリ区分は、そのアドレス
におけるデータアクセスを許すことによって応答する。
このデータアクセスは、データ読み出し動作か、もしく
はデータ書き込み動作の何れかであることができる。も
し2以上のプロセッサが同時に同一のメモリ区分へのア
クセスを要求していれば、クロスバ50は要求している
1つのプロセッサに限ってアクセスを許可する。クロス
バ50の各列の交差点51は、優先階層に基づいて通信
し、アクセスを許可する。もし同一ランクを有する2つ
のアクセス要求が同時に発生すれば、クロスバ50はラ
ウンドロビン方式でアクセスを許可し、最後にアクセス
を許可されるプロセッサは最低の優先順位を有している
プロセッサである。許可された各アクセスは、要求にサ
ービスするのに必要な限り持続する。プロセッサはそれ
らのアドレスをメモリサイクル毎に変えることができる
ので、クロスバ50はプロセッサとメモリ区分との間の
相互接続をサイクル毎に変えることができる。
【0022】マスタプロセッサ60は、多重プロセッサ
集積回路100のための主制御機能を遂行することが好
ましい。マスタプロセッサ60は、ハードウェア浮動小
数点計算ユニットを含む 32 ビット限定命令セット計算
機(RISC)プロセッサであることが好ましい。RI
SCアーキテクチャによれば、メモリへの全てのアクセ
スは命令をロードし記憶することで遂行され、殆どの整
数及び論理演算は単一のサイクル中にレジスタ上で遂行
される。しかしながら、浮動小数点計算ユニットは一般
に、整数及び論理ユニットが使用するものと同一のレジ
スタファイルを使用する場合には演算を遂行するために
数サイクルを要する。レジスタスコアボードは、正しい
レジスタアクセス順序を維持することを保証する。RI
SCアーキテクチャは、画像処理における制御機能に適
している。浮動小数点計算ユニットは、画像回転機能の
迅速な計算を許容するが、これは画像処理にとって重要
である。マスタプロセッサ60は、命令キャッシュメモ
リ11もしくは命令キャッシュメモリ12から命令ワー
ドを取り込む。同様にマスタプロセッサ60は、データ
をデータキャッシュ13もしくはデータキャッシュ14
の何れかから取り込む。各メモリ区分は2Kバイトのメ
モリを含んでいるから、4Kバイトの命令キャッシュ
と、4Kバイトのデータキャッシュとが存在している。
前述したように、マスタプロセッサ60は、クロスバ5
0を通して他のメモリ区分にもアクセスすることができ
る。
【0023】4つのデジタル画像/グラフィックスプロ
セッサ71、72、73及び74は各々、高度の並列デ
ジタル信号プロセッサ(DSP)アーキテクチャを有し
ている。図3に、例としてデジタル画像/グラフィック
スプロセッサ71の全体を示すが、デジタル画像/グラ
フィックスプロセッサ72、73及び74も同一であ
る。デジタル画像/グラフィックスプロセッサ71は3
つの分離したユニット、即ちデータユニット110、ア
ドレスユニット120、及びプログラムの流れ制御ユニ
ット130を使用して、高度の並行演算を達成する。こ
れらの3つのユニットは命令パイプライン内の異なる命
令で同時に動作する。更に、各ユニットは内部並列処理
を含む。デジタル画像/グラフィックスプロセッサ7
1、72、73及び74は、複数命令複数データ(MI
MD)モードにおいて、独立した命令ストリームを実行
することができる。MIMDモードでは、各デジタル画
像/グラフィックスプロセッサはその対応する命令キャ
ッシュ(独立であっても、もしくは共用であってもよ
い)からの個々のプログラムを実行する。命令キャッシ
ュが共用の場合、クロスバ50は共用メモリと組合わさ
れたプロセッサの間の通信を可能にする。デジタル画像
/グラフィックスプロセッサ71、72、73及び74
は、同期MIMDモードで動作させることもできる。同
期MIMDモードでは、各デジタル画像/グラフィック
スプロセッサのプログラムの流れ制御ユニット130
は、全ての同期プロセッサの進行準備が整うまで次の命
令を取り込むことを禁止する。この同期MIMDモード
は、デジタル画像/グラフィックスプロセッサの分離し
たプログラムを、ロックされた段階で、密に結合された
動作で実行することを可能ならしめる。
【0024】デジタル画像/グラフィックスプロセッサ
71、72、73及び74は、単一命令多重データ(S
IMD)モードにおいて、同一の命令で異なるデータを
実行することができる。このモードでは、4つのデジタ
ル画像/グラフィックスプロセッサのための単一の命令
ストリームは、命令キャッシュメモリ21から到来す
る。デジタル画像/グラフィックスプロセッサ71は取
り込み及び分岐動作を制御し、クロスバ50は同一命令
を他のデジタル画像/グラフィックスプロセッサ72、
73及び74へ供給する。SIMDモードでは、デジタ
ル画像/グラフィックスプロセッサ71が全てのデジタ
ル画像/グラフィックスプロセッサ71、72、73及
び74のための命令取り込みを制御するから、これらの
デジタル画像/グラフィックスプロセッサは個々に同期
する。転送制御装置80は、多重プロセッサ集積回路1
00のための直接メモリアクセス(DMA)マシン及び
メモリインタフェースの組合わせである。転送制御装置
80は、5つのプログラム可能なプロセッサのデータ要
求及びキャッシュミス( cache miss )を知的に待ち行列
に入れ、優先順位をセットし、そしてサービスする。マ
スタプロセッサ60及びデジタル画像/グラフィックス
プロセッサ71、72、73及び74は全て、転送制御
装置80を通して多重プロセッサ集積回路100の外部
のメモリ及びシステムにアクセスする。データキャッシ
ュミスもしくは命令キャッシュミスは、転送制御装置8
0によって自動的に処理される。キャッシュサービスポ
ート(S)は、これらのキャッシュミスを転送制御装置
80へ伝送する。キャッシュサービスポート(S)は、
プロセッサから情報を読み出し、メモリからは読み出さ
ない。マスタプロセッサ60及びデジタル画像/グラフ
ィックスプロセッサ71、72、73及び74は、連携
リストパケット要求として転送制御装置80からのデー
タ転送を要求することができる。これらの連携リストパ
ケット要求によって、情報の多次元ブロックを源及び行
先メモリアドレス(多重プロセッサ集積回路100内で
あっても、もしくは多重プロセッサ集積回路100外で
あってもよい)間で転送することができる。転送制御装
置80は、データを保持するために周期的にリフレッシ
ュする必要があるダイナミックランダムアクセスメモリ
(DRAM)のためのリフレッシュ制御装置をも含んで
いることが好ましい。フレーム制御装置90は、多重プ
ロセッサ集積回路100と外部画像収集及び表示システ
ムとの間のインタフェースである。フレーム制御装置9
0は、収集及び表示装置の制御を行い、これらの装置と
メモリとの間のデータの移動を自動的に管理する。この
目的のためにフレーム制御装置90は、2つの独立した
画像システムの同時制御を行う。典型的にはこれらは、
画像収集のための第1の画像システムと、画像表示のた
めの第2の画像システムを含むが、フレーム制御装置9
0の応用はユーザによって制御される。通常これらの画
像システムは、フレームグラバ( grabber ) もしくはフ
レームバッファ記憶装置の何れかのために使用される独
立したフレームメモリを含んでいる。フレーム制御装置
90は、リフレッシュ及びシフトレジスタ制御装置を介
してビデオダイナミックランダムアクセスメモリ(VR
AM)を制御するように動作することが好ましい。
【0025】多重プロセッサ集積回路100は大規模画
像処理のために設計されている。マスタプロセッサ60
は埋込み型制御を行い、デジタル画像/グラフィックス
プロセッサ71、72、73及び74の活動を調和よく
組合わせ、それらが発生する結果を解釈する。デジタル
画像/グラフィックスプロセッサ71、72、73及び
74は、画素解析及び操作に良く適している。もし画素
が、データ内では高いが情報内では低いもとの見做され
れば、典型的な応用においてはデジタル画像/グラフィ
ックスプロセッサ71、72、73及び74はこれらの
画素を充分に調べて生データを情報に変える。この情報
は、デジタル画像/グラフィックスプロセッサ71、7
2、73及び74、もしくはマスタプロセッサ60の何
れかによって解析することができる。クロスバ50は、
プロセッサ間通信を調停する。クロスバ50は、多重プ
ロセッサ集積回路100を共用メモリシステムとして実
現させることができる。このアーキテクチャでは、メッ
セージの渡し( passing )が通信の主たる形状である必
要はない。しかしながら、メッセージは共用メモリを通
して渡すことができる。各デジタル画像/グラフィック
スプロセッサ、クロスバ50の対応する区分、及びメモ
リ20の対応する区分は同一の幅を有している。これ
は、同一のピンアウト( pin out ) を維持しながら、デ
ジタル画像/グラフィックスプロセッサ及び対応メモリ
をモジュールとして追加もしくは除去することを可能に
するので、アーキテクチャに柔軟性を与える。
【0026】好ましい実施例では、多重プロセッサ集積
回路100の全ての部品は単一の集積回路上に配置され
ている。好ましい実施例では、多重プロセッサ集積回路
100は、0.6 μmの特徴的なサイズを使用する相補金
属酸化物半導体(CMOS)で形成されている。多重プ
ロセッサ集積回路100は、256 ピンを有するピングリ
ッドアレイパッケージに構成することが好ましい。入力
及び出力は、トランジスタ・トランジスタ論理(TT
L)の論理電圧と互換できることが好ましい。多重プロ
セッサ集積回路100は約 300 万個のトランジスタを
含み、 50 MHzのクロック周波数を使用することが好
ましい。図3に、例としてデジタル画像/グラフィック
スプロセッサ71の全体を示すが、デジタル画像/グラ
フィックスプロセッサ72、73及び74も同一であ
る。デジタル画像/グラフィックスプロセッサ71は、
データユニット110、アドレスユニット120、及び
プログラムの流れ制御ユニット130を含む。データユ
ニット110は、論理もしくは算術データ演算を遂行す
る。データユニット110は、8つのデータレジスタD
7−D0と、状態レジスタ210と、複数フラグレジス
タ211を含む。アドレスユニット120は、ローカル
データポート及び大域データポートのためのロード/記
憶アドレスの生成を制御する。後述するように、アドレ
スユニット120は、2つの実質的に同一のアドレス指
定ユニットを含む。即ち1つはローカルアドレス指定用
であり、1つは大域アドレス指定用である。これらの各
アドレス指定ユニットは、相対アドレスモードにおいて
絶対アドレス指定を可能にする全て“0”の読み出し専
用レジスタと、スタックポインタと、5つのアドレスレ
ジスタと、3つの指標レジスタとを含む。これらのアド
レス指定ユニットは、両アドレスユニットから組合わせ
アドレスを形成する時に使用される大域ビット多重化制
御レジスタを共用する。プログラムの流れ制御ユニット
130は、プログラムカウンタPC 701と、アドレ
スパイプライン段に現在存在している命令のアドレスを
保持する命令ポインタ・アドレス段IRAと、実行パイ
プライン段内に現在存在している命令のアドレスを保持
する命令ポインタ・実行段IREと、サブルーチンから
の戻りのためのアドレスを保持する命令ポインタ・サブ
ルーチンからの戻りIPRSと、0オーバヘッドループ
を制御する一組のレジスタと、対応する命令キャッシュ
メモリ内の命令ワードの4つのブロックの最上位ビット
を保持する4つのキャッシュタグレジスタTAG3−T
AG0とを含む。
【0027】デジタル画像/グラフィックスプロセッサ
71は、図4に示すような3段パイプライン上で動作す
る。データユニット110、アドレスユニット120及
びプログラムの流れ制御ユニット130は、ある命令パ
イプラインにおいて異なる命令で同時に動作する。3つ
の段は、年代順に、取り込み、アドレス及び実行であ
る。即ち任意の時点には、デジタル画像/グラフィック
スプロセッサ71は、3つの命令の異なる機能で動作し
ていることになる。フレーズパイプライン段はクロック
サイクルを参照する代わりに使用され、パイプラインが
前進する時に特定の事象が発生し、失速状態中には発生
しないことを指示する。プログラムの流れ制御ユニット
130は、取り込みパイプライン段中に発生する全ての
動作を遂行する。プログラムの流れ制御ユニット130
は、プログラムカウンタと、ループ論理と、割り込み論
理と、パイプライン制御論理とを含む。取り込みパイプ
ライン段中に、次の命令ワードがメモリから取り込まれ
る。プログラムカウンタ内に含まれるアドレスは、キャ
ッシュタグレジスタと比較されて次の命令ワードが命令
キャッシュメモリ21内に記憶されているか否かが決定
される。プログラムの流れ制御ユニット130はプログ
ラムカウンタ内のアドレスを命令ポートアドレスバス1
31へ供給し、命令キャッシュメモリ21からこの次の
命令ワード(もし存在すれば)を取り込ませる。クロス
バ50は、このアドレスを対応する命令キャッシュ(こ
こでは命令キャッシュメモリ21)へ伝送し、命令キャ
ッシュは命令ワードを命令バス132上へ戻す。もし存
在しなければキャッシュミスが発生し、転送制御装置8
0は外部メモリをアクセスして次の命令ワードを入手す
る。プログラムカウンタが更新される。もし後続命令ワ
ードが次の順序のアドレスにあれば、プログラムの流れ
制御ユニット130はプログラムカウンタを事後増数
(もしくはポストインクリメント)させる。もし後続命
令ワードが次の順序のアドレスになければ、プログラム
の流れ制御ユニット130はループ論理もしくはソフト
ウェア分岐に従って次の命令ワードのアドレスをロード
する。もし同期MIMDモード中であれば、命令取り込
みは、全ての指定されたデジタル画像/グラフィックス
プロセッサが同期するまで(通信レジスタ内の同期ビッ
トによって指示される)待機する。
【0028】アドレスユニット120は、アドレスパイ
プライン段の全てのアドレス計算を遂行する。アドレス
ユニット120は、2つの独立したアドレスユニットを
含む。即ち1つは大域ポート用であり、1つはローカル
ポート用である。もし命令が1もしくは2メモリアクセ
スを要求すれば、アドレスユニット120はアドレスパ
イプライン段中に1もしくは複数のアドレスを生成す
る。この1もしくはこれらの複数のアドレスは、それぞ
れ大域ポートアドレスバス121及びローカルポートア
ドレスバス122を通してクロスバ50に供給され、検
出/優先順位決定の争奪がなされる。もし競合が存在し
なければ、アクセスされたメモリは要求されたアクセス
を許すように準備するが、メモリアクセスは後続する実
行パイプライン段において発生する。データユニット1
10は、実行パイプライン段中の全ての論理及び算術演
算を遂行する。全ての論理及び算術演算、及びメモリへ
の、もしくはメモリからの全てのデータの移動は実行パ
イプライン段中に発生する。大域データポート及びロー
カルデータポートは、アドレスパイプライン段中に開始
されたどのようなメモリアクセスも、実行パイプライン
段中に完了させる。大域データポート及びローカルデー
タポートは、メモリ記憶装置が必要とするデータ位置合
わせ、何等かのデータ抽出、及びメモリロードが必要と
する符号拡張の全てを遂行する。もし実行パイプライン
段の何等かの動作中にデータ行先としてプログラムカウ
ンタが指定されれば、何等かの分岐が行われる前に2つ
の命令の遅延が発生する。この分岐命令に続く次の2つ
の命令は既に取り込まれているので、パイプライン動作
にはこの遅延が必要である。RISCプロセッサにおけ
る実際の動作によれば、他の有用な命令を2つの遅延ス
ロット位置に配置することができる。
【0029】デジタル画像/グラフィックスプロセッサ
71は、3つの 32 ビットの内部データバスを含む。こ
れらは、ローカルポートデータバスLBUS 103
と、大域ポート源データバスGSRC 105、及び大
域ポート行先データバスGDST 107である。これ
ら3つのバスは、ローカルデータポート141及び大域
データポート145を有するデータポートユニット14
0にも接続されている。データポートユニット140
は、クロスバ50に結合されていてメモリアクセスを行
う。ローカルデータポート141は、メモリへデータを
記憶させるためのバッファ142を有している。マルチ
プレクサ/バッファ回路143は、クロスバ50を介し
てメモリからのローカルポートデータバス144から、
ローカルポートアドレスバス122から、もしくは大域
ポートデータバス148から、データをLBUS103
上へロードする。ローカルポートデータバスLBUS
103は、レジスタを源とする(記憶)、もしくはメモ
リを源とする(ロード)の何れかである 32 ビットのデ
ータを伝送する。アドレスユニット120内の演算結果
が、ローカルポートアドレスバス122、マルチプレク
サバッファ143を通してローカルポートデータバスL
BUS 103へ供給され、データユニット110の算
術演算を補足することができるので有利である。これに
関しては後述する。バッファ142及びマルチプレクサ
バッファ143はデータの位置合わせと抽出とを遂行す
る。ローカルポートデータバスLBUS 103はデー
タユニット110内のデータレジスタへ接続されてい
る。ローカルバス一時保持レジスタLTD104もロー
カルポートデータバスLBUS 103に接続されてい
る。
【0030】大域ポート源データバスGSRC 105
及び大域ポート行先データバスGDST 107は、大
域データ転送を調停する。これらの大域データ転送は、
メモリアクセス、レジスタからレジスタへの移動、もし
くはプロセッサ間の命令ワード転送の何れかであること
ができる。大域ポート源データバスGSRC 105は
大域ポートデータ転送の 32 ビット源情報を伝送する。
データ源は、デジタル画像/グラフィックスプロセッサ
71の何れかのレジスタ、もしくはデジタル画像/グラ
フィックスプロセッサ71、72、73もしくは74の
何れかに対応する何れかのデータメモリもしくはパラメ
タメモリであることができる。マルチプレクサバッファ
146は、ローカルポートデータバスLBUS 103
もしくは大域ポート源データバスGSRC 105から
線を選択し、データの位置合わせを遂行する。マルチプ
レクサバッファ146は、このデータを大域ポートデー
タバス148を書き込み、クロスバ50を介してメモリ
へ印加する。大域ポート源データバスGSRC 105
もデータをデータユニット110へ供給し、算術論理装
置への源の1つとして使用させる。この後者の接続によ
って、デジタル画像/グラフィックスプロセッサ71の
何れかのレジスタを算術論理装置演算のための源とする
ことが可能になる。
【0031】大域ポート行先データバスGDST 10
7は、大域バスデータ転送の 32 ビット行先データを伝
送する。大域ポート145内のバッファ147は、大域
ポート行先データバスGDST 107のデータの源と
なる。バッファ147は、必要とされる何等かのデータ
抽出及び符号拡張動作を遂行する。このバッファ115
は、もしデータ源がメモリであれば動作し、それにより
ロードが遂行される。算術論理装置結果は、大域ポート
行先データバスGDST 107のための代替データ源
として働く。これによりデジタル画像/グラフィックス
プロセッサ71のどのレジスタも算術論理装置演算の行
先になることができる。大域バス一時保持レジスタGT
D 108も大域ポート行先データバスGDST 10
7に接続されている。マルチプレクサバッファ143及
び146を含む回路は、大域ポート原始データバスGS
RC 105と大域ポート行先データバスGDST 1
07との間に接続され、レジスタからレジスタへの移動
を行う。これによりデジタル画像/グラフィックスプロ
セッサ71のどのレジスタからの読み出しも、大域ポー
ト行先データバスGDST 107を介してデジタル画
像/グラフィックスプロセッサ71のどのレジスタへも
書き込むことが可能になる。
【0032】有利なことに、大域ポート行先データバス
GDST 107を介してメモリからデジタル画像/グ
ラフィックスプロセッサ71のどのレジスタへもロード
を遂行することができ、同時にどのレジスタも大域ポー
ト原始データバスGSRC105を通してデータユニッ
ト110内の算術論理装置への源になることができるこ
とに注目されたい。同様に、有利なことに、デジタル画
像/グラフィックスプロセッサ71のどのレジスタ内の
データも大域ポート源データバスGSRC105を通し
てメモリ内へ記憶させることができ、一方算術論理装置
演算の結果は大域ポート行先データバスGDST 10
7を介してデジタル画像/グラフィックスプロセッサ7
1のどのレジスタへも記憶させることができる。これら
のデータ転送の有用性に関しては後述する。プログラム
の流れ制御ユニット130は、命令キャッシュメモリ2
1から取り込まれた命令ワードを命令バス132を通し
て受信する。この取り込まれた命令ワードは、命令レジ
スタ・アドレス段IRA及び命令レジスタ・実行段IR
Eで示す2つの 64 ビット命令レジスタ内に記憶され
る。各命令レジスタIRA及びIREの内容は復号さ
れ、分散される。デジタル画像/グラフィックスプロセ
ッサ71は、復号された、もしくは部分的に復号された
命令内容をデータユニット110及びアドレスユニット
120へ伝送する演算コードバス133を含む。後述す
るように、命令ワードは 32 ビット、 15 ビットもしく
は3ビットの即値フィールドを含むことができる。プロ
グラムの流れ制御ユニット130はこのような即値フィ
ールドを大域ポート源データバスGSRC 105へ経
路指定してその行先へ供給させる。
【0033】デジタル画像/グラフィックスプロセッサ
71は、3つのアドレスバス121、122及び131
を含む。アドレスユニット120は、大域ポートアドレ
スバス121及びローカルポートアドレスバス122上
にアドレスを生成する。後述するように、アドレスユニ
ット120は、大域ポートアドレスバス121及びロー
カルポートアドレスバス122上にそれぞれアドレスを
供給する分離した大域アドレスユニット及びローカルア
ドレスユニットを含む。ローカルアドレスユニット62
0は、そのデジタル画像/グラフィックスプロセッサに
対応するデータメモリ以外のメモリにアクセスすること
ができる。その場合、ローカルアドレスユニットアクセ
スは大域ポートアドレスバス121を介して行われる。
プログラムの流れ制御ユニット130は、プログラムカ
ウンタ及びキャッシュ制御論理からのアドレスビットの
組合わせから命令ポートアドレスバス131上に命令ア
ドレスを出力する。これらのアドレスバス121、12
2及び131は各々、アドレス、バイトストローブ、及
び読み出し/書き込み情報を伝送する。図5に、データ
ユニット110の詳細を示す。図5はデータユニット1
10の全ての接続を示しているのではないことを理解さ
れたい。特に、種々の制御線等は明瞭化の目的から省略
してある。従って、データユニット110の動作を完全
に理解するためには、図5と共に以下の説明を熟読され
たい。データユニット110は、並列に動作させること
が有利な複数の部分を含んでいる。データユニット11
0は、D7−D0と名付けた8つの 32 ビットデータレ
ジスタ200を含む。データレジスタD0は汎用レジス
タとして使用することができるが、付加的に、若干の命
令と共に使用する場合には特別な機能を有している。デ
ータレジスタ200は、データユニットバス201乃至
206と、ローカルポートデータバスLBUS 103
と、大域ポート源データバスGSRC 105と、大域
ポート行先データバスGDST 107とに接続されて
いる複数の読み出し及び書き込みポートを含んでいる。
データレジスタ200は、後に回転レジスタに関して説
明する手法で“脇道( sideways )”を読み出すこともで
きる。データユニット110は更に、状態レジスタ21
0及び複数フラグレジスタ211をも含む。複数フラグ
レジスタ211は、若干の命令内に使用する算術論理装
置の結果の状態を記憶する。データユニット110は、
その主要計算成分としてハードウェア乗算器220及び
3入力算術論理装置230を含む。最後に、データユニ
ット110は、乗算器第1入力バス201と、乗算器第
2入力バス202と、乗算器行先バス203と、算術論
理装置行先バス204と、算術論理装置第1入力バス2
05と、算術論理装置第2入力バス206と、バッファ
104、106、108及び236と、マルチプレクサ
Rmux 221、Imux 222、MSmux22
5、Bmux 227、Smux 231、Amux
232、Cmux233、及びMmux 234と、積
左桁送り回路224と、加算器226と、バレル回転子
235と、LMO/RMO/LMBC/RMBC回路2
37と、拡張回路238と、マスク発生器239と、入
力Aバス241と、入力Bバス242と、入力Cバス2
43と、回転バス244と、機能信号発生器245と、
ビット0キャリーイン発生器246と、命令復号論理2
50とを含む。これら全てに関しては後述する。
【0034】以下のデータユニット110の説明、並び
に各デジタル画像/グラフィックスプロセッサ71、7
2、73及び74の使用に関するさらなる説明には、説
明を容易にするために幾つかの記号を使用している。多
くのこれらの記号は説明する必要のない標準数学演算で
ある。若干は当分野においては公知の論理演算であるが
それらの記号はそれ程知られてはいないかも知れない。
最後に、若干の記号は本発明に独自の演算を意味する。
以下の表1は、これらの記号の若干と、それらに対応す
る演算をリストする。 表 1 記 号 演 算 〜 ビットに関しNOT & ビットに関しAND | ビットに関しOR ^ ビットに関し排他的OR @ 複数フラグレジスタ拡張 % マスク発生 %! 変更されたマスク発生 \\ 回転左 << 桁送り左 >>u 桁送り右0拡張 >>s 桁送り右符号拡張 >> 省略時右桁送り符号拡張 ‖ 並行演算 *(A±X) アドレスベースレジスタAにおけるメモリ内容 +指標レジスタXまたはオフセットX &*(A±X) アドレスベースレジスタAにおけるアドレスユニット 演算+指標レジスタXまたはオフセットX *(A±〔X〕) アドレスベースレジスタAにおけるメモリ内容 +基準化された指標レジスタXまたはオフセットX 上表1にリストした演算の含意は、直接的には明白ではない。これらに関して は後述する。
【0035】図6に、状態レジスタ210のためのフィ
ールドの定義を示す。状態レジスタ210は、大域ポー
ト源データバスGSRC 105を介して読み出し、大
域ポート行先データバスGDST 107を介して書き
込むことができる。更に、状態レジスタ210は、デー
タレジスタ200の指定された1つから書き込む、もし
くはロードすることができる。状態レジスタ210は、
データユニット110内の動作の制御に使用される。状
態レジスタ210は、4つの算術論理装置結果状態ビッ
ト“N”、“C”、“V”及び“Z”を記憶する。これ
らに関しては以下に個々に説明するが、それらのセッテ
ィング挙動をまとめると以下のようである。ここにリス
トした命令の型は以下に詳述することにする。 32 ビッ
ト即値フィールドを含む命令ワードの場合には、もし条
件コードフィールドが“無条件”であれば、4つの全て
の状態ビットは算術論理装置230の結果に従ってセッ
トされる。もし条件コードフィールドが“無条件”以外
の状態であれば、その条件が真であると否とに拘わらず
状態ビットはセットされない。 32 ビット即値フィール
ド演算を含ます、且つ条件付き演算フィールドを含まな
い命令ワードの場合には、全ての状態ビットは算術論理
装置230の結果に従ってセットされる。条件付き演算
を許す 32 ビット即値フィールドを含まない命令ワード
の場合には、条件フィールドが“無条件”であるかもし
くは“無条件”ではなく、且つその条件が真であれば、
命令ワードビット28−25はどの状態ビットを保護す
べきであるかを指示する。全ての保護されないビットは
算術論理装置230の結果に従ってセットされる。条件
付き演算を許す 32 ビット即値フィールドを含まない命
令ワードの場合には、もしその条件フィールドが“無条
件”ではなく、且つ条件が偽であれば、状態ビットはセ
ットされない。ブール演算と算術演算とにおいて、状態
セッティング挙動に差はない。後述するように、この挙
動は、分岐に通常必要とされる演算を遂行するために、
条件付き命令及び源選択を可能にする。
【0036】状態レジスタ210の算術論理装置結果ビ
ットは以下のようである。“N”ビット(ビット31)
は負の結果の表示を記憶する。“N”ビットは、もし算
術論理装置230の最後の演算の結果が負であったなら
ば“1”にセットされる。このビットは結果のビット3
1と共にロードされる。以下に説明する複数算術論理装
置演算では、“N”ビットは0と算術論理装置230の
複数の区分とを比較するANDにセットされる。LMO
/RMO/LMBC/RMBC回路237が遂行するビ
ット検出動作では、“N”ビットは0と算術論理装置2
30の複数の区分とを比較するANDにセットされる。
このビットをソフトウェアに書き込むと、通常の算術論
理装置結果書き込み論理は無効にされる。“C”ビット
(ビット30)は、桁上げ結果の表示を記憶する。もし
算術論理装置230の最後の演算の結果が算術論理装置
230のビット31からのキャリーアウトをもたらして
いれば、“C”ビットは“1”にセットされる。複数演
算及びビット検出中は、“C”ビットはキャリーアウト
と算術論理装置230の複数の区分とを比較するORに
セットされる。従って、もし区分の少なくとも1つがキ
ャリーアウトを有していれば、“C”ビットは“1”に
セットされる。このビットをソフトウェアに書き込む
と、通常の算術論理装置結果書き込み論理は無効にされ
る。
【0037】“V”ビット(ビット29)は、あふれ結
果の表示を記憶する。もし算術論理装置230の最後の
演算の結果があふれ状態を作り出せば“V”ビットは
“1”にセットされる。このビットは算術論理装置23
0のビット31のキャリーイン及びキャリーアウトの排
他的ORと共にロードされる。複数の算術論理装置が演
算中、“V”ビットは、算術論理装置230の複数の区
分のキャリーアウトのANDである。最も左の1及び最
も右の1ビット検出の場合、もし入力ワード中に“1”
が存在しなかったならば“V”ビットは“1”にセット
され、“1”が存在していたならば“V”ビットは
“0”にセットされる。このビットをソフトウェアに書
き込むと、通常の算術論理装置結果書き込み論理は無効
にされる。“Z”ビット(ビット28)は、“0”結果
の表示を記憶する。もし算術論理装置230の最後の演
算の結果が“0”結果を発生すれば、“Z”ビットは
“1”にセットされる。この“Z”ビットは、算術演算
及び論理演算の両方に関して制御される。複数算術及び
ビット検出演算では、0と算術論理装置230の複数の
区分とを比較するORにセットされる。このビットをソ
フトウェアに書き込むと、通常の算術論理装置結果書き
込み論理は無効にされる。
【0038】“R”ビット(ビット6)は、拡張回路2
38を使用する命令中に拡張回路238及び複数フラグ
レジスタ211の回転によって使用され、複数フラグレ
ジスタ211の部分を拡張する。もし“R”ビットが
“1”であれば、拡張回路238を介して複数フラグレ
ジスタ211の拡張に使用されるビットは最上位ビット
である。算術論理装置機能変更子が複数フラグレジスタ
回転を指定しないような複数フラグレジスタ211の拡
張を含む動作の場合には、複数フラグレジスタ211は
“MSIZE”フィールドに従って“左へ事後回転( po
st-rotate ) ”される。もし算術論理装置機能変更子が
複数フラグレジスタ回転を指定していれば、複数フラグ
レジスタ211は“ASIZE”フィールドに従って回
転される。もし“R”ビットが“0”であれば、拡張回
路238は複数フラグレジスタ211の最下位ビットを
使用する。“MSIZE”フィールドに従う回転は発生
しない。しかしながら、算術論理装置機能変更子は“A
SIZE”フィールドによって回転を指定することがで
きる。“MSIZE”フィールド(ビット5−3)は、
マスクデータを複数フラグレジスタ211から算術論理
装置230のCポートへ供給する若干の命令クラスに使
用されるデータサイズを表示する。“MSIZE”フィ
ールドは、マスク情報を作出するために、どれ程多くの
複数フラグレジスタ211のビットを使用するかを決定
する。命令が“ASIZE”フィールドに対応する回転
を指定しておらず、且つ“R”ビットが“1”であれ
ば、複数フラグレジスタ211は“MSIZE”フィー
ルドによってセットされた量だけ自動的に“左へ事後回
転”される。これらのビットのコーディングを以下の表
2に示す。 表 2 MSIZE データ | 複数フラグレジスタ フィールド サイズ |回転量 使用される ビット 使用される 5 4 3 ビット | ビット数 R=1 R=0 0 0 0 0 64 64 − − 0 0 1 1 32 32 31−0 31−0 0 1 0 2 16 16 31−16 15−0 0 1 1 4 8 8 31−24 7−0 1 0 0 8 4 4 31−28 3−0 1 0 1 16 2 2 31−31 1−0 1 1 0 32 1 1 31 0 1 1 1 64 0 0 − − 上述したように好ましい実施例は、8、 16 及び 32 ビ
ットのデータサイズに対応するそれぞれ“100”、
“101”及び“110”の“MSIZE”フィールド
を支援する。“001”の“MSIZE”フィールドは
データ出力に何等の変化ももたらさないことに注目され
たい。“001”、“010”及び“011”の“MS
IZE”フィールドが、考え得る有用な代替である。
“000”及び“111”の“MSIZE”フィールド
は無意味であるが、複数フラグレジスタ211を 64 ビ
ットに拡張するのに使用することができる。
【0039】“ASIZE”フィールド(ビット2−
0)は、算術論理装置230が遂行する乗算のためのデ
ータサイズを表示する。算術論理装置230は並列の 3
2 ビットを含むことが好ましい。若干の命令中に算術論
理装置230は複数の独立した区分に分割される。これ
を、複数算術論理装置演算と呼ぶ。この算術論理装置2
30の分割により、 32 ビットデータワードにパックさ
れる 32 ビットより少ない画素に対して並行演算が可能
になる。好ましい実施例では、算術論理装置230は、
単一の 32 ビット演算、2区分の 16 ビット演算、及び
4区分の8ビット演算を支援する。これらのオプション
をワード演算、ハーフワード演算、及びバイト演算と呼
ぶ。“ASIZE”フィールドは、算術論理装置230
の複数区分の数、算術論理装置演算中にセットされる複
数フラグレジスタ211のビット数(これは、数におい
て、算術論理装置230の区分の数に等しい)、及び複
数算術論理装置演算中の出力後に複数フラグレジスタが
“左へ事後回転”させるべきビット数を表示する。“A
SIZE”フィールドによって指定される回転量は、
“MSIZE”フィールド及び算術論理装置機能変更子
が回転を伴う乗算を指示した時の“R”ビットによって
指定される回転量を抑える。これらのビットのコーディ
ングを以下の表3に示す。本発明の現在では好ましい実
施例は、1つの 32 ビット区分、2つの 16 ビット区分
及び4つの8ビット区分の乗算を支援し、“ASIZ
E”フィールドは、4ビットずつの8区分、2ビットず
つの 16 区分及び1ビットずつの 32 区分の指定を支援
していることに注目されたい。算術論理装置230のこ
れらの各付加的な区分分割は実現可能である。また、
“ASIZE”フィールドのコーディングが更に、複数
フラグレジスタ211の 64 ビットへの考え得る拡張に
対する 64 ビットデータサイズの指定をも支援すること
にも注目されたい。 表 3 ASIZE データ | 複数フラグレジスタ フィールド サイズ |回転量 セットされる セットされる 2 1 0 ビット | ビット数 ビット 0 0 0 0 64 64 − 0 0 1 1 32 32 31−0 0 1 0 2 16 16 15−0 0 1 1 4 8 8 7−0 1 0 0 8 4 4 3−0 1 0 1 16 2 2 1−0 1 1 0 32 1 1 0 1 1 1 64 0 0 − 状態レジスタ210の“MSIZE”フィールド及び
“ASIZE”フィールドは異なる動作を制御する。複
数フラグレジスタ211を、算術論理装置230のCポ
ートに印加されるマスクを発生させるための源として使
用する場合には、使用されるビット数及び回転量を“M
SIZE”フィールドが制御する。このような場合、
“R”ビットは、最上位ビットが使用されるのか、もし
くは最下位ビットが使用されるのかを決定する。複数フ
ラグレジスタ211を算術論理装置230の区分に対応
する状態ビットのための行先として使用する場合には、
ロードされるビットの数及び識別(もしくはアイデンテ
ィティ)と、任意選択的な回転量を“ASIZE”フィ
ールドが制御する。もし“ASIZE”フィールドが回
転を指定しているような複数算術論理装置演算が、複数
フラグレジスタ211から導出されたマスクデータをC
ポートへ供給する命令を伴って指定されれば、“ASI
ZE”フィールドの回転量は“R”ビット及び“MSI
ZE”フィールドの組合わせの回転量を抑える。
【0040】複数フラグレジスタ211は、若干の命令
に関して算術論理装置230のCポートへマスク情報を
供給する 32 ビットのレジスタである。大域ポート行先
データバスGDST 107は、複数フラグレジスタ2
11へ書き込むことができる。大域ポート源データバス
GSRCは、複数フラグレジスタ211からデータを読
み出すことができる。更に、複数算術論理装置演算は複
数フラグレジスタ211へ書き込むことができる。この
場合複数フラグレジスタ211は、算術論理装置230
の独立した区分の桁上げもしくは0状態情報の何れかを
記録する。実行される命令は、桁上げもしくは0の何れ
を記憶するのかを制御する。状態レジスタ210の“M
SIZE”フィールドは、複数フラグレジスタ211か
ら使用される最下位ビットの数を制御する。この数は上
記表2に示されている。状態レジスタ210の“R”ビ
ットは、これらのビットが供給される前に左へ事前回転
させるか否かを制御する。“MSIZE”フィールドの
値は、もし“R”ビットが“1”であれば回転の量を決
定する。選択されたデータが拡張回路238へ供給さ
れ、拡張回路238は後述するように 32 ビットマスク
を生成する。
【0041】状態レジスタ210の“ASIZE”フィ
ールドは、複数算術論理装置演算中に複数フラグレジス
タ211内に記憶されるデータを制御する。前述したよ
うに好ましい実施例では算術論理装置230は、 32 ビ
ット、 16 ビット及び8ビットのデータをそれぞれ使用
する1つ、2つもしくは4つの分離した区分を使用する
ことができる。複数算術論理装置演算が実行されると
“ASIZE”フィールドは、算術論理装置の分離した
各結果の状態情報を記録するのに使用される複数フラグ
レジスタ211のビットの数を、限定されたデータサイ
ズを通して表示する。複数フラグレジスタ211のビッ
トセッティングを表4に要約する。 表 4 データ ALUキャリーアウト 0セッティングMFビットに サイズ セッティングMFビット 等しいALU結果ビット ビット 3 2 1 0 3 2 1 0 8 31 23 15 7 31 −24 23−16 15−8 7−0 16 − − 31 15 − − 31−16 15−0 32 − − − 31 − − − 31−0 表4が、8、 16 及び 32 ビットのデータサイズの場合
だけをカバーしていることに注意されたい。当分野に精
通していれば、 64 ビット、4ビット、2ビット及び1
ビットのデータサイズの場合をカバーするには、表4を
どのように拡張すればよいかは容易に理解されよう。ま
た以上の説明は、桁上げもしくは0の何れかの状態を複
数フラグレジスタ211内に記憶することに関していた
ことにも注意されたい。負及びあふれのような他の状態
ビットを記憶することも実現可能である。
【0042】複数フラグレジスタ211は、各算術論理
装置演算が実行された時に複数のビット位置だけ左へ回
転させることができる。複数算術論理装置演算を遂行す
る場合に、結果状態ビットセッティングはセットされる
ビットによる回転を抑える。複数算術論理装置演算を遂
行する場合、回転に代わるものは、結果状態によってセ
ットされない複数フラグレジスタ211の全てのビット
をクリアすることである。もしマスクデータがその命令
内に使用されていれば、このクリアリングはマスクデー
タの事後生成である。もし算術論理装置結果の記録と同
時に複数フラグレジスタ211をソフトウェアによって
書き込むのであれば、好ましい動作は、そのソフトウェ
ア書き込みによって全てのビットをロードすることであ
る。従ってソフトウェア書き込みは、複数フラグレジス
タ211の回転及びクリアリングを抑える。図7は、算
術論理装置230の複数区分への分割を示す。図7に示
すように、算術論理装置230の 32 ビットは8ビット
ずつの4つの区分に分離される。区分301は算術論理
装置ビット7−0を含み、区分302はビット15−8
を含み、区分303はビット23−16を含み、そして
区分304はビット31−24を含む。図7にはこれら
の区分の入力または出力は示してないが、これらは常識
であるので省略したものであることを理解されたい。各
区分301、302、303及び304内の桁上げ経路
は公知技術に従っている。
【0043】マルチプレクサ311、312及び313
は、区分301、302、303及び304間の桁上げ
経路を制御する。これらの各マルチプレクサは3つの入
力の1つを選択するように制御される。第1の入力は前
段マルチプレクサの出力からの桁上げ先回り経路である
か、もしくは初段のマルチプレクサ311の場合にはビ
ット0キャリーイン発生器246からである。これらの
桁上げ先回り経路及びそれらの使用に関しては公知であ
るので説明は省略する。第2の選択は、算術論理装置2
30の対応する区分の最後のビットからのキャリーアウ
トである。最後の選択は、ビット0キャリーイン発生器
246からのキャリーイン信号である。マルチプレクサ
314は、算術論理装置230の出力桁上げ経路を制御
する。マルチプレクサ314は、マルチプレクサ313
が選択したキャリーアウトからの桁上げ先回り経路、も
しくは区分304からのビット31のキャリーアウト信
号の何れかを選択する。マルチプレクサ311、31
2、313及び314は、選択されたデータサイズに基
づいて制御される。通常の場合には、算術論理装置23
0は 32 ビットデータワードで動作する。これは“11
0”に等しい状態レジスタ210の“ASIZE”フィ
ールドによって指示される。この場合マルチプレクサ3
11はビット7からのキャリーアウトを選択し、マルチ
プレクサ312はビット15からのキャリーアウトを選
択し、マルチプレクサ313はビット23からのキャリ
ーアウトを選択し、そしてマルチプレクサ314はビッ
ト31からのキャリーアウトを選択する。このように、
4つの区分301、302、303及び304は単一の
32 ビット算術論理装置として互いに接続されるのであ
る。もし状態レジスタ210が“101”の“ASIZ
E”フィールドを介してハーフワードを選択すれば、マ
ルチプレクサ311はビット7からのキャリーアウトを
選択し、マルチプレクサ312はビット0キャリーイン
発生器246からのキャリーインを選択し、マルチプレ
クサ313はビット23からのキャリーアウトを選択
し、そしてマルチプレクサ314はビット0キャリーイ
ン発生器246からのキャリーインを選択する。区分3
01及び302は 16 ビットユニットとして接続され、
区分303及び304は 16 ビットユニットとして接続
される。マルチプレクサ312は、ビット16に関して
(将にビット0のように)ビット0キャリーイン信号を
選択することに注目されたい。これはビット16が 16
ビットハーフワードの最初のビットだからである。もし
状態レジスタ210が“100”の“ASIZE”フィ
ールドを介してバイトを選択すれば、マルチプレクサ3
11、312及び313はビット0キャリーイン発生器
246からのキャリーインを選択する。区分301、3
02、303及び304は4つの独立した8ビットユニ
ットに分割される。ビット8、16及び24が各々8ビ
ットバイトにおける最初のビットであるから、各マルチ
プレクサにおけるビット0キャリーイン信号の選択は適
切である。
【0044】図7は0結果検出をも示している。各8ビ
ット0検出回路321、322、323及び324は、
各対応する8ビット区分からの結果が全て0、即ち“0
0000000”であれば“1”出力を生成する。AN
Dゲート331は8ビット0検出回路321と322と
に接続されているので、ビット15−0の 16 のビット
が全て0である場合に“1”を生成する。ANDゲート
332も同様に8ビット0検出回路323と324とに
接続されているので、ビット31−16の 16のビット
が全て0である場合に“1”を生成する。最後にAND
ゲート341はANDゲート331と332とに接続さ
れ、ビット31−0の 32 のビットが全て0である場合
に“1”を生成する。複数算術論理装置演算中に、複数
フラグレジスタ211は命令に依存して、キャリーアウ
トもしくは0比較の何れかを記憶することができる。こ
れらの記憶された結果は、その後の演算中にCポートへ
のマスクを制御する。表4は記憶された状態ビットの源
を示している。複数フラグレジスタ211が1もしくは
複数のキャリーアウト信号を記憶する場合、状態レジス
タ210の“ASIZE”フィールドは、記憶されるキ
ャリーアウトの識別及び数を決定する。もし“ASIZ
E”フィールドがワード演算を指定していれば、複数フ
ラグレジスタ211はビット31のキャリーアウト信号
に等しい単一のビットを記憶する。もし“ASIZE”
フィールドがハーフワード演算を指定していれば、複数
フラグレジスタ211はビット31及び15のキャリー
アウト信号にそれぞれ等しい2つのビットを記憶する。
もし“ASIZE”フィールドがバイト演算を指定して
いれば、複数フラグレジスタ211はビット31、2
3、15及び7のキャリーアウト信号にそれぞれ等しい
4つのビットを記憶する。同様に0結果記憶が選択され
ている場合には、“ASIZE”フィールドは、複数フ
ラグレジスタ211内に記憶される0結果の数及び識別
を制御する。もし“ASIZE”フィールドがワード演
算を指定していれば、複数フラグレジスタ211は、ビ
ット31−0が“0”であることを指示しているAND
ゲート341の出力に等しい単一のビットを記憶する。
もし“ASIZE”フィールドがハーフワード演算を指
定していれば、複数フラグレジスタ211はANDゲー
ト331及び332の出力にそれぞれ等しい2つのビッ
トを記憶する。もし“ASIZE”フィールドがバイト
演算を指定していれば、複数フラグレジスタ211は8
ビット0検出回路321、322、323及び324の
出力にそれぞれ等しい4つのビットを記憶する。
【0045】4ビットずつの8区分演算、2ビットずつ
の16区分演算、及び1ビットずつの32区分演算のよ
うな、算術論理装置230の他の複数演算を可能にする
ことも技術的に実現可能であり、本発明の範囲内にあ
る。状態レジスタ210の“MSIZE”フィールド及
び“ASIZE”フィールドが、これらの付加的な複数
演算の型を支援するためのコーディングを含むことを理
解されたい。当分野に精通していれば、付加的なマルチ
プレクサ及びANDゲートを使用して図7に示した回路
を容易に変更及び拡張できよう。算術論理装置230の
構成に複雑さを付加するので、好ましい実施例はこれら
の考え得るオプションを支援していない。この技術は 6
4 ビットのデータを使用するデータ処理装置へ拡張可能
であり、また同一の技術によってこのような拡張が可能
になることも理解されたい。図5にデータレジスタD7
−D0で示すデータレジスタ200は、ローカルポート
データバスLBUS 103、大域ポート源データバス
GSRC 105及び大域ポート行先データバスGDS
T 107に接続されている。データレジスタ200を
表すブロック内の矢印はデータアクセスの方向を表して
いる。左向き矢印はデータレジスタ200から呼び戻さ
れるデータを表す。右向き矢印はデータレジスタ200
内へ書き込まれるデータを表す。ローカルポートデータ
バスLBUS 103は、データ源として、もしくはデ
ータ行先としてデータレジスタ200に双方向に結合さ
れている。大域ポート行先データバスGDST 107
は、データをデータレジスタ200内へ書き込むための
データ源としてデータレジスタ200に接続されてい
る。大域ポート源データバスGSRC 105は、通常
のデータレジスタモード及び後述する回転レジスタ機能
の両方においてデータレジスタ200から呼び戻される
データのためのデータ行先としてデータレジスタ200
に接続されている。状態レジスタ210及び複数フラグ
レジスタ211は、大域ポート源データバスGSRC
105を介して読み出すことができ、大域ポート行先デ
ータバスGDST 107を介して書き込むことができ
る。データレジスタ200は、乗算器第1入力バス20
1、乗算器第2入力バス202、算術論理装置第1入力
バス205及び算術論理装置第2入力バス206へデー
タを供給する。データレジスタ200は、乗算器行先バ
ス203及び算術論理装置行先バス204からの入力デ
ータを受信するように接続されている。
【0046】レジスタD7−D0で示すデータレジスタ
200は、図8に示すように 256ビットの回転レジスタ
を形成するように接続されている。この回転レジスタ
は、全体を回転(ROT)レジスタROT 208で示
してある。これは8つの 32ビット回転レジスタROT
0、ROT0、・・・ROT7からなる 256 ビットの
レジスタを形成している。図8には、部分的に回転レジ
スタROT0、ROT0、・・・ROT7の定義を示し
てある。これらの回転レジスタは、データレジスタD7
−D0に対する脇道を限定する。回転レジスタ208
は、後述するように非算術論理装置命令DROTによっ
て回転させることができる。この回転中、データレジス
タD7の最下位ビットはデータレジスタD6の最上位ビ
ット内へ回転する、等々である。データレジスタD0の
最下位ビットはデータレジスタD7の最上位ビットに戻
されて接続されている。回転レジスタ208は、一時に
4つの8ビットバイトで読み出すことができる。これら
の4つの8ビットバイトはそれぞれ、以下の表5及び図
8に示すように、各データレジスタ200と同一のビッ
ト数を有するビットのオクテットである。 表 5 回転レジスタ 各D7−D0ビット ビット からのビットの オクテット 31−24 24 23−16 16 15−8 8 7−0 0 DROT命令が実行されると、256 ビットの回転レジス
タ208は右へ1ビット位置回転する。D7のような各
レジスタの各バイトA、B、C、Dの最下位ビット0は
図示のように写像され、回転レジスタの特定ビット数が
大域ポート源データバスGSRC 105上に出力され
る。回転レジスタ208は好ましい実施例では読み出し
専用であるが、他の実施例では書き込み可能であること
ができる。
【0047】回転レジスタ208は、画像回転、直交変
換及び鏡映変換に有用である。8つのDROT命令と並
列に回転レジスタ208からメモリへ 32 ビットの記憶
を遂行して、データの4つの8×8ビットパッチを時計
方向に 90 °回転させる。回転したデータは目標メモリ
位置に記憶される。レジスタローディング、メモリアド
レス記憶、及びデータサイズ変更の種々の組合わせによ
って、8×8ビットパッチの種々の時計方向及び反時計
方向の回転を遂行することができる。これにより全バイ
トを移動させるような大きい領域の回転を遂行すること
が可能になる。一つのモードにおけるレジスタD7−D
0へのレジスタファイルアクセスと、DROT演算にお
ける回転レジスタアクセスを提供するこの注目すべき直
交構造はレジスタファイル単独に対して殆ど複雑さを付
加しない。データレジスタD0は二重機能を有してい
る。データレジスタD0は、他のデータレジスタD7−
D1と同一の技法で通常のデータレジスタとして使用す
ることができる。データレジスタD0は、若干の命令を
実行する時に若干の特別機能を限定することもできる。
データレジスタD0の最上位ハーフワードの若干のビッ
トは、全ての型の拡張された算術論理装置演算の動作を
指定する。データレジスタD0の最下位ハーフワードの
若干のビットは、複数乗算演算中の乗算器オプションを
指定する。データレジスタD0の5つの最下位ビット
は、若干の命令の種類によって使用される省略時バレル
回転量を指定する。
【0048】図9は、データユニット110の動作を指
定する場合のデータレジスタD0の内容を示す。データ
レジスタD0の“FMOD”フィールド(ビット31−
28)によって、拡張された算術論理装置(EALU)
演算を要求する命令を実行する場合に算術論理装置23
0の基本演算を変更することができる。以下の表6にこ
れらの変更子オプションを示す。表6に示すように、若
干の命令フォーマット内の若干の命令ワードビットが同
一の手法で機能変更子として復号されることに注目され
たい。これらに関しては後述する。 表 6 機能変更子コード 遂行される変更 0000 通常演算 0001 cain 0010 もしマスク生成命令ならば %! もしマスク生成命令でなければ LMO 0011 もしマスク生成命令ならば (%!且つcain) もしマスク生成命令でなければ RMO 0100 Aポート=0 0101 Aポート=0且つcain 0110 もしマスク生成命令ならば (Aポート=0且つ%!) もしマスク生成命令でなければ LMBC 0111 もしマスク生成命令ならば、(Aポート=0且つ%!且つca in) もしマスク生成命令でなければ RMBC 1000 複数算術論理装置演算 1以上のキャリーアウト−−>複数フラグレジスタ 1001 複数算術論理装置演算 1以上の0結果−−>複数フラグレジスタ 1010 複数算術論理装置演算 1以上のキャリーアウト−−>複数フラグレジスタ 状態レジスタの“ASIZE”フィールドによって回転 1011 複数算術論理装置演算 1以上の0結果−−>複数フラグレジスタ 状態レジスタの“ASIZE”フィールドによって回転 1100 複数算術論理装置演算 1以上のキャリーアウト−−>複数フラグレジスタ 複数フラグレジスタをクリア 1101 複数算術論理装置演算 1以上の0結果−−>複数フラグレジスタ 複数フラグレジスタをクリア 1110 保留 1111 保留 |||| |||| 命令ワードビット データレジスタD0ビット ||| −−−−−−−−− 52 −−−−−−−− 28 || −−−−−−−−−− 54 −−−−−−−− 29 | −−−−−−−−−−− 56 −−−−−−−− 30 −−−−−−−−−−−− 58 −−−−−−−− 31 表6にリストした変更された演算に関して以下に説明す
る。もし“FMOD”が“0000”であれば、演算の
変更は行われない。変更“cain”は、算術論理装置
230のビット0へ状態レジスタ210の“C”ビット
をキャリーインさせる。これにより、桁上げの加算、借
りの減算、及び借りの否定演算が可能になる。変更“%
!”はマスク生成と共に作動する。“%!”変更が活動
であるとマスク発生器239は、回転量0に関して(全
てが“0”ではなく)全てが“1”を効果的に生成す
る。この機能は、マスク発生器239が生成するマスク
を変化させることによって、もしくはCポートに印加さ
れる全てが“0”のマスクが、あたかも全て“1”が供
給されたかのように動作するように算術論理装置230
の機能を変更することによって実現することができる。
この変更は若干の回転動作に有用である。変更“LM
O”、“RMO”、“LMBC”、及び“RMBC”
は、LMO/RMO/LMBC/RMBC回路237の
制御を表している。変更“LMO”は、第2算術入力の
最も左の“1”を見出す。変更“RMO”は、最も右の
“1”を見出す。変更“LMBC”は符号ビット(ビッ
ト31)とは異なる最も左のビットを見出す。変更“R
MBC”は最初のビット(ビット0)とは異なる最も右
のビットを見出す。これらの変更は、算術論理装置23
0のCポートがマスク発生器239からマスクを受信し
ない場合に限って関係があることに注目されたい。
【0049】変更“Aポート=0”は、算術論理装置2
30のAポートへの入力が実効的に0にされることを指
示する。これは0出力を供給するマルチプレクサAmu
x232を介して発生させるか、もしくは同じ効果を呈
するように算術論理装置230の動作を変更すればよ
い。“Aポート=0”変更は、ある否定、絶対値、及び
右桁送り動作に使用される。“複数算術論理装置演算”
変更は、算術論理装置230の1もしくはそれ以上の桁
上げ経路が閉じ、事実上並列に動作する1もしくはそれ
以上の独立した算術論理装置を形成することを指示す
る。状態レジスタ210の“ASIZE”フィールド
は、これらの複数算術論理装置区分の数を制御する。複
数フラグレジスタ211は、複数算術論理装置演算の区
分の数と同数の状態ビットを記憶する。“1以上のキャ
リーアウト−−>複数フラグ”変更では、1もしくは複
数のキャリーアウトビットが複数フラグレジスタ211
内に記憶される。“1以上の0結果−−>複数フラグ”
変更では、対応する算術論理装置区分の0結果の表示が
複数フラグレジスタ211内に記憶される。このプロセ
スは、複数フラグレジスタ211の説明と共に既に説明
済である。この記憶動作中、複数フラグレジスタ211
の内のビットを、“回転”変更に応答して回転させる
か、もしくは“クリア”変更に応答してクリアすること
ができる。これらのオプションに関しては複数フラグレ
ジスタ211の説明と共に説明済である。
【0050】データレジスタD0の“A”ビット(ビッ
ト27)は、拡張算術論理装置演算中に算術論理装置2
30が算術演算を遂行するのか、もしくはブール論理演
算を遂行するのかを制御する。このビットは算術可能化
ビットと呼ばれる。もし“A”ビットが“1”であれ
ば、算術演算が遂行される。もし“A”ビットが“0”
であれば、論理演算が遂行される。もし“A”ビットが
“0”であれば、ビット0キャリーイン発生器246か
ら算術論理装置230のビット0内へのキャリーイン
は、概ね“0”である。後述するように、若干の拡張算
術論理装置演算は、“A”ビットが“0”であって論理
演算であることを指示している時でさえも、“0”のキ
ャリーインを有することができる。データレジスタD0
の“EALU”フィールド(ビット19−26)は、拡
張算術論理装置演算を限定する。“EALU”フィール
ドの8ビットは、全ての型の拡張算術論理装置演算に使
用される算術論理装置機能制御ビットを指定する。これ
らのビットは、算術論理装置230への制御信号にな
る。これらは算術論理装置230へ直接渡されるか、も
しくは“FMOD”フィールドに従って変更される。若
干の命令では、“EALU”フィールドのビットが反転
され、“EALUF”もしくは拡張算術論理装置偽演算
にされる。この場合算術論理装置230へ供給される8
つの制御ビットは反転される。
【0051】データレジスタD0の“C”ビット(ビッ
ト18)は、拡張算術論理装置演算中に算術論理装置2
30のビット0へのキャリーインを表示する。拡張算術
論理装置演算中の算術論理装置230のビット0へのキ
ャリーイン値は、この“C”ビットによって与えられ
る。これによってキャリーイン値は、非EALU演算に
関する公式によるのではなく、直接指定することが可能
になる。データレジスタD0の“I”ビット(ビット1
7)は、反転キャリーインビットを表す。“I”ビット
は、“C”ビット及び“S”ビット(後述)と共に、算
術論理装置演算の機能コードが反転された時に算術論理
装置230のビット0内へのキャリーインを反転させる
か否かを決定する。これに関しては後述する。データレ
ジスタD0の“S”ビット(ビット16)は、拡張され
た符号の選択を表す。“S”ビットは、拡張算術論理装
置演算が実行される時(“A”ビット=1)に使用され
る。もし“S”ビットが“I”であれば、算術論理装置
制御信号F3−F0(ビット22−19から発生)は、
算術論理装置第1データ入力バス206の符号ビット
(ビット31)が“0”であれば反転させるべきであ
り、この符号ビットが“1”であれば反転させない。条
件付き反転算術論理装置制御信号F3−F0の効果に関
しては後述する。このような反転は、若干の算術演算に
おける回転入力を符号拡張するのに有用である。もし拡
張算術論理装置演算がブール演算であれば(“A”ビッ
ト=0)“S”ビットは無視され、算術論理装置制御信
号F3−F0は不変である。
【0052】表7に、データレジスタD0の“C”、
“I”及び“S”ビットの相互作用を示す。“I”ビッ
トもしくは第1入力符号欄に記入されている“X”は結
果を制御しない、即ち“ドントケア( don't care )”条
件である。 表 7 S I 第1入力符号 C反転? F3−F0反転 0 X X no no 1 0 0 no no 1 0 1 no yes 1 1 0 no no 1 1 1 yes yes もし“S”ビットが“I”に等しく、且つ算術論理装置
230のBポートに宛てられた第1入力の符号ビットが
“0”に等しければ、“C”ビットによってセットされ
る算術論理装置230のビット0へのキャリーインの値
はオプションで“I”ビットの値に従って反転させるこ
とができる。これは、入力の符号に基づいて、キャリー
インをオプションで反転させたり、させなかったりする
ことを可能にする。もし“S”ビットが“I”であれ
ば、算術論理装置制御信号F3−F0は入力の符号に基
づいてオプションで反転することにも注目されたい。算
術論理装置制御信号F3−F0のこの反転の選択は、
“FMOD”フィールドによって抑えられる。もし“F
MOD”フィールドが“キャリーイン=状態レジスタの
桁上げビット”であれば、“S”及び“I”ビットの値
には関係なく、キャリーインは状態レジスタ210の
“C”ビットに等しくされる。たとえ“A”ビットが
“0”であってブール演算を指示しているとしても、算
術論理装置230のビット0のためのキャリーインは拡
張算術論理装置演算のための“C”ビットを介して
“1”にセットできることにも注目されたい。
【0053】データレジスタD0の“N”ビット(ビッ
ト15)は、分割もしくは複数区分算術論理装置演算を
実行する時に使用される。この“N”ビットは非複数マ
スクビットと呼ばれる。“FMOD”フィールドを介し
て複数演算を指定する若干の拡張算術論理装置演算の場
合、命令はマスクをマスク発生器239を介して算術論
理装置230のCポートへ渡すことを指定する。この
“N”ビットは、そのマスクを算術論理装置230と同
数の区分に分割するか否かを決定する。これらの複数区
分の数が、状態レジスタ210の“ASIZE”フィー
ルドによってセットされることを思い出されたい。もし
“N”ビットが“0”であれば、マスクは複数のマスク
に分割される。もし“N”ビットが“1”であれば、マ
スク発生器239は単一の 32 ビットのマスクを生成す
る。“E”ビット(ビット14)は、明示複数キャリー
インを表す。このビットは実行時(もしくはランタイ
ム)に、算術論理装置230のCポートへの入力によっ
てキャリーインを指定可能にする。もし“A”ビット及
び“E”ビットが共に“1”であり、且つ“FMOD”
フィールドが“cain”機能を指定していなければ、
“S”、“I”及び“C”ビットの効果は無効にされ
る。複数演算中の各区分への桁上げ入力は、Cポートへ
の対応する区分入力の最下位ビットと機能信号F0との
排他的ORとして求められる。もし複数演算が選択され
ていなければ、算術論理装置230のCポートへの単一
のキャリーインは、Cポートへの入力の最下位ビット
(ビット0)と関数信号F0との排他的ORである。こ
れは、異なる区分において異なる機能を遂行するような
複数演算を遂行する場合に特に有用である。1つの拡張
算術論理装置演算は、(A^〜B)&C|(A^〜B)
&Cに対応する。Cポート入力のためのマスクを使用す
ると、全てが“0”の区分は“0”の適切なキャリーイ
ンとの加算をもたらし、また全てが“1”の区分は
“1”の適切なキャリーインとの減算をもたらす。
【0054】データレジスタD0の“DMS”フィール
ド(ビット12−8)は乗算器の後の桁送りを限定す
る。この桁送りは、結果を保管したりもしくは結果を丸
め論理へ渡す前に積左桁送り回路224内で行われる。
この左桁送り中にシフトアウトする最上位ビットは破棄
され、最下位ビット内に0がシフトインされる。“DM
S”フィールドは、何等かの乗算/拡張算術論理装置演
算中に有効である。好ましい実施例では、データレジス
タD0のビット9−8が、0、1、2もしくは3位置の
左桁送りを選択する。表8はこの復号を示す。 “DMS”フィールドは、0から 31 位置まで左桁送り
量を指定できる5ビットを含む。好ましい実施例では、
サイズが大きくなること及び複雑さが増すことの理由か
ら、積左桁送り回路224の桁送りは0から3までの位
置に制限されている。従って、データレジスタD0のビ
ット12−10は左桁送り量のセッティングに関しては
無視される。しかしながら、もし望むのであれば“DM
S”フィールドから0乃至 31 位置の全範囲の左桁送り
量を得るように実現することは可能である。
【0055】データレジスタD0の“M”ビット(ビッ
ト7)は複数乗算を指示する。乗算器220は2つの 1
6 ビット数を乗じて 32 ビットの結果を生成するか、も
しくは2対の8ビット数を同時に乗じて1対の 16 ビッ
トの結果を生成することができる。この“M”ビット
は、もし“M”=0ならば単一の 16 × 16 乗算を、も
しくは“M”=1ならば2つの8×8乗算を選択するこ
とができる。この演算は複数算術論理装置演算に類似し
ており、これに関しては後述する。データレジスタD0
の“R”ビット(ビット6)は、乗算器220からの結
果に対して丸め演算を行うか否かを指定する。もし
“R”ビットが“1”であれば、乗算器220の動作に
関連して後述する丸め動作が行われる。もし“R”ビッ
トが“0”であれば、丸めは行われず、乗算器220か
らの 32 ビット結果は行先レジスタ内に書き込まれる。
データレジスタD0内の所定のビットの使用は、このモ
ードをトリガするための好ましい実施例に過ぎないこと
を理解されたい。所定の命令ワードビットを介して丸め
モードを可能にすることも実現することができる。デー
タレジスタD0の“DBR”フィールド(ビット4−
0)は、若干の命令中に使用されるバレル回転子235
の省略時バレル回転量を指定する。“DBR”フィール
ドは、バレル回転子235が左へ回転させるビット位置
の数を指定する。これらの5ビットは左へ0乃至 31 位
置回転を指定することができる。“DBR”フィールド
の値は、マルチプレクサMmux 234を介してマス
ク発生器239へ供給することもできる。マスク発生器
239は算術論理装置230のCポートへ供給されるマ
スクを形成する。マスク発生器239の動作に関しては
後述する。
【0056】乗算器220はハードウェア単一サイクル
乗算器である。前述したように乗算器220は、1対の
16 ビット数を乗算して 32 ビット結果を得るか、もし
くは同一の 32 ビットデータワード内の2対の8ビット
数を乗算して2つの 16 ビット結果を得るように動作す
る。算術論理装置230は、データユニット110内で
算術及び論理演算を遂行する。有利なことに算術論理装
置230は、3つの入力の算術及び論理演算を遂行する
ための入力ポートを含んでいる。多くのバス及び補助ハ
ードウェアが3入力を供給する。入力Aバス241は、
算術論理装置230のA入力へデータを供給する。マル
チプレクサAmux 232は、命令に基づいて乗算器
第2入力バス202もしくは算術論理装置第1入力バス
205の何れかからのデータを入力Aバス241へ供給
する。乗算器第2入力バス202上のデータは、データ
レジスタ200の指定された1つからのデータ、もしく
はマルチプレクサImux 222及びバッファ223
を通った命令ワードの即値フィールドからのデータであ
ることができる。算術論理装置第1入力バス205上の
データは、データレジスタ200の指定された1つから
のデータ、もしくはバッファ106を通った大域ポート
原始データバスGSRC 105からのデータであるこ
とができる。従って、算術論理装置230のA入力へ供
給されるデータは、データレジスタ200の1つからの
データ、命令ワードの即値フィールドからのデータ、も
しくは大域ポート原始データバスGSRC 105及び
バッファ106を通ったデジタル画像/グラフィックス
プロセッサ71の別のレジスタからの長距離源であるこ
とができる。
【0057】入力Bバス242は、算術論理装置230
のB入力へデータを供給する。バレル回転子235が入
力Bバス242へデータを供給する。従ってバレル回転
子235は、算術論理装置230のB入力への入力を制
御する。バレル回転子235は、算術論理装置第2入力
バス206からデータを受信する。算術論理装置第2入
力バス206は、データレジスタ200の指定された1
つからのデータ、バッファ104を通った大域ポート源
データバスGSRC 105からのデータ、もしくはバ
ッファ236からの特別データワードを供給する。バッ
ファ236はもし可能化されれば、 32 ビットデータ定
数“00000000000000000000000
000000001”(HEX“1”とも呼ばれる)を
算術論理装置第2入力バス206へ供給する。以後、
“HEX”を前置したデータもしくはアドレスは16進
数で表されていることに注意されたい。大域ポート源デ
ータバスGSRC 105からのデータは、前述したよ
うに長距離源としてバレル回転子235へ供給すること
ができる。バッファ236が可能化されると、バレル回
転子235は2N (Nはバレル回転量)の形状のどのよ
うな定数も入力Bバス242上に生成することができ
る。この形状の定数は、 32 ビットデータワードの単一
のビットだけを制御する演算に有用である。算術論理装
置第2入力バス206及びバレル回転子235へ供給さ
れるデータは、命令に依存する。
【0058】バレル回転子235は、その受信したデー
タを0から 31 位置まで回転させることができる 32 ビ
ットの回転子である。これは左回転子であるが、32−
nビットだけ左回転させることによってnビットの右回
転を得ることもできる。回転バス244からの5ビット
入力は、バレル回転子235によって与えられる回転の
量を制御する。この回転は円形であり、ビットが失われ
ることがないことに注目されたい。バレル回転子235
の左へ回転して出て行くビットは右へ回り込まされる。
マルチプレクサSmux 231は回転バス244へ送
り込む。マルチプレクサSmux 231は、幾つかの
入力を有している。これらの入力は、乗算器第1入力バ
ス201の5つの最下位ビット、乗算器第2入力バス2
02の5つの最下位ビット、データレジスタD0の“D
BR”フィールドからの5ビット、及び5ビットの0定
数“00000”を含む。乗算器第2入力バス202は
マルチプレクサImux 222及びバッファ223を
通して即値データを受信することができるから、命令ワ
ードをバレル回転子235へ即値回転量を供給できるこ
とに注目されたい。マルチプレクサSmux 231
は、これらの入力の1つを命令に依存して選択し、バレ
ル回転子235の回転量を決定する。これらの各回転の
量は5ビットであり、従って0から 31 位置までの範囲
内で左回転をセットすることができる。
【0059】バレル回転子235は、マルチプレクサB
mux 227へもデータを供給する。これは、算術論
理装置230の演算と並行して、バレル回転子235か
らの回転したデータを乗算器行先バス203を通してデ
ータレジスタ200の1つに記憶させることを可能にす
る。バレル回転子235はマルチプレクサBmux22
7を通して、マルチプレクサRmux 221と乗算器
行先バス203を共用する。従って、もし乗算が行われ
ていれば、回転したデータを保管することはできない。
好ましい実施例では、この書き戻し( write back )方法
は拡張算術論理装置演算によって特に支援されており、
バレル回転子235の結果のための同一レジスタ行先を
算術論理装置230の結果として指定することによっ
て、不能化することができる。この場合、算術論理装置
行先バス204に現れる算術論理装置230の結果だけ
が保管される。以上の説明ではバレル回転子235を使
用するものとしたが、データを回り込ませない桁送り回
路を使用しても実質的な効用(もしくはユーティリテ
ィ)を達成することもできる。具体的に言えば、算術論
理装置230のBポートへのビットの全てが使用されな
いような桁送り及びマスク動作の場合には、回転バス2
44によって制御される桁送り回路が必要な機能性を与
える。この場合、回転バス244上の最上位ビットのよ
うな付加的なビットが、右桁送りを形成するのか、もし
くは左桁送りを形成するのかを指示することが好まし
い。桁送りの大きさを指定するために、回転バス244
上にはやはり5ビットが必要である。従って、多くの場
合に、バレル回転子235は桁送り回路によって置換で
きることを理解されたい。
【0060】入力Cバス243は、算術論理装置230
のCポートへデータを供給する。マルチプレクサCmu
x 233が入力Cバス243へデータを供給する。マ
ルチプレクサCmux 233は4つの源からデータを
受信する。これらは、LMO/RMO/LMBC/RM
BC回路237、拡張回路238、乗算器第2入力バス
202、及びマスク発生器239である。LMO/RM
O/LMBC/RMBC回路237は、命令もしくはデ
ータレジスタD0の“FMOD”フィールドに依存して
算術論理装置第2入力バス206上のデータの最も左の
“1”、最も右の“1”、最も左のにビット変化、もし
くは最も右のビット変化の何れかを決定する専用ハード
ウェア回路である。LMO/RMO/LMBC/RMB
C回路237は、検出された量に対応する値を有する 3
2 ビット数をマルチプレクサCmux 233に供給す
る。最も左ビット変化は、符号ビット32とは異なる最
も左のビットの位置として定義される。最も右のビット
変化は、0とは異なる最も右のビットの位置として定義
される。結果は、以下の表9にリストされている検出さ
れたビット位置に対応する2進数である。これらの値
は、効果的に、検出されたビット位置の大きいエンディ
アン( endian )ビット数であり、結果は 31 −(ビッ
ト)である。 この決定は、正規化するために、及び最も左の、もしく
は最も右の“1”または変化したビットを画像の端とし
て見出すための画像圧縮のために有用である。LMO/
RMO/LMBC/RMBC回路237は、潜在的スピ
ード経路であり、従って算術論理装置第2入力バス20
6に結合されている源は、データレジスタ200の1つ
に制限することが好ましい。最も左の“1”、及び最も
右の“1”動作の場合、状態レジスタ210のあふれを
指示する“V”ビットは、源内に“1”が存在しなけれ
ば“1”にセットされ、存在すれば“0”にセットされ
る。最も左のビット変化、及び最も右のビット変化動作
の場合、もし源内の全てのビッチが等しければ“V”ビ
ットは“1”にセットされ、もし変化が検出されれば
“0”にセットされる。これらの動作によってもし
“V”ビットが“1”にセットされれば、LMO/RM
O/LMBC/RMBC結果は実効的に 32 である。状
態レジスタ210の動作に関する詳細は説明済である。
【0061】拡張回路238は、複数フラグレジスタ2
11及び状態レジスタ210から入力を受信する。上述
した状態レジスタ210の“MSIZE”フィールドに
基づいて、拡張回路238は複数フラグレジスタ211
内に記憶されている若干の最下位ビットを複写して 32
ビットを満たす。拡張回路238は、最下位ビットを32
倍に拡張し、2つの最下位ビットを 16 倍に拡張し、
もしくは4つの最下位ビットを8倍に拡張することがで
きる。状態レジスタ210の“ASIZE”フィールド
は、独立したデータ演算のために 32 ビット算術論理装
置230が独立した区分に分割されるプロセスを制御す
る。これは、算術論理装置230の 32ビット幅よりも
小さい画素サイズに対する演算に有用である。このプロ
セス並びにその使用例に関しては後述する。マスク発生
器239は、マルチプレクサCmux 233を通して
入力Cバス243へ供給することができる 32 ビットの
マスクを生成する。生成されるマスクは、マルチプレク
サMmux 234からの5ビット入力に依存する。マ
ルチプレクサMmux 234は、乗算器第2入力バス
202の5つの最下位ビットか、もしくはデータレジス
タD0からの“DBR”フィールドの何れかを選択す
る。好ましい実施例では、値Nが入力されるとマスク発
生器239は、最下位ビットにN個の“1”と、最上位
ビットに 32 −N個の“0”を有するマスクを生成す
る。これは、右位置調整されたN個の“1”を有する出
力を形成する。これはマスク発生器239の4つの動作
の中の1つに過ぎない。第2の実施例においては、マス
ク発生器239は、右位置調整されたN個の“0”を有
する、即ち最下位ビットのN個が“0”であり、最上位
ビットのN− 32 個が“1”であるマスクを生成する。
左位置調整されたN個の“1”、もしくは左位置調整さ
れたN個の“0”を有するマスクを生成するマスク発生
器239を実現することが可能である。表10は、複数
演算を選択していない時の好ましい実施例によるマスク
発生器239の動作を示す。 表 10 マスク発生器 入 力 マスク−非複数演算時 00000 0000 0000 0000 0000 0000 0000 0000 0000 00001 0000 0000 0000 0000 0000 0000 0000 0001 00010 0000 0000 0000 0000 0000 0000 0000 0011 00011 0000 0000 0000 0000 0000 0000 0000 0111 00100 0000 0000 0000 0000 0000 0000 0000 1111 00101 0000 0000 0000 0000 0000 0000 0001 1111 00110 0000 0000 0000 0000 0000 0000 0011 1111 00111 0000 0000 0000 0000 0000 0000 0111 1111 01000 0000 0000 0000 0000 0000 0000 1111 1111 01001 0000 0000 0000 0000 0000 0001 1111 1111 01010 0000 0000 0000 0000 0000 0011 1111 1111 01011 0000 0000 0000 0000 0000 0111 1111 1111 01100 0000 0000 0000 0000 0000 1111 1111 1111 01101 0000 0000 0000 0000 0001 1111 1111 1111 01110 0000 0000 0000 0000 0011 1111 1111 1111 01111 0000 0000 0000 0000 0111 1111 1111 1111 10000 0000 0000 0000 0000 1111 1111 1111 1111 10001 0000 0000 0000 0001 1111 1111 1111 1111 10010 0000 0000 0000 0011 1111 1111 1111 1111 10011 0000 0000 0000 0111 1111 1111 1111 1111 10100 0000 0000 0000 1111 1111 1111 1111 1111 10101 0000 0000 0001 1111 1111 1111 1111 1111 10110 0000 0000 0011 1111 1111 1111 1111 1111 10111 0000 0000 0111 1111 1111 1111 1111 1111 11000 0000 0000 1111 1111 1111 1111 1111 1111 11001 0000 0001 1111 1111 1111 1111 1111 1111 11010 0000 0011 1111 1111 1111 1111 1111 1111 11011 0000 0111 1111 1111 1111 1111 1111 1111 11100 0000 1111 1111 1111 1111 1111 1111 1111 11101 0001 1111 1111 1111 1111 1111 1111 1111 11110 0011 1111 1111 1111 1111 1111 1111 1111 11111 0111 1111 1111 1111 1111 1111 1111 1111 値Nが“0”であれば 32 の“0”が生成される。しか
しながら、若干の状況では、値“0”が 32 の“1”を
生成することが好ましいこともある。この機能は、状態
レジスタ210の“FMOD”内に指定されている、も
しくは拡張算術論理装置演算を実行中の場合には命令の
ビット52、54、56及び58内に指定されている
“%!”によって選択される。この機能は、マスク発生
器239によって生成されるマスクを変化させることに
よって、もしくはCポートに供給される全て“0”のマ
スクがあたかも全て1が供給されたかのように動作する
ように算術論理装置230の機能を変更することによっ
て、実現することができる。他の実現可能なマスク機能
の類似変更も可能であることを理解されたい。例えば
“%!”変更によって、N=0に対して右位置調整され
たN個の“0”を有するマスクを生成するのではなく、
全て“0”のマスクを生成するようにマスク発生器23
9を変化させることができる。同様に“%!”変更によ
って、N=0に対して左位置調整されたN個の“1”を
生成するのではなく、全て“1”のマスクを生成するよ
うにマスク発生器239を変化させることも、もしくは
N=0に対して左位置調整されたN個の“0”を生成す
るのではなく、全て“0”を生成するように変化させる
こともできる。
【0062】複数演算を選択すると、マスク発生器23
9の動作が変更される。状態レジスタの“ASIZE”
フィールドが“110”である場合、これは 32 ビット
のデータサイズを選択し、マスク発生器239の動作は
表10に示す動作から変化しない。状態レジスタの“A
SIZE”フィールドが“101”である場合、これは
16 ビットのデータサイズを選択し、マスク発生器23
9は2つの独立した 16 ビットのマスクを形成する。こ
の場合、マスク発生器239への入力の最上位ビットは
無視されることに注目されたい。以下の表11には、こ
のビットをドントケアXとして示してある。 表 11 マスク発生器 入 力 マスク−ハーフワード演算時 X0000 0000 0000 0000 0000 0000 0000 0000 0000 X0001 0000 0000 0000 0001 0000 0000 0000 0001 X0010 0000 0000 0000 0011 0000 0000 0000 0011 X0011 0000 0000 0000 0111 0000 0000 0000 0111 X0100 0000 0000 0000 1111 0000 0000 0000 1111 X0101 0000 0000 0001 1111 0000 0000 0001 1111 X0110 0000 0000 0011 1111 0000 0000 0011 1111 X0111 0000 0000 0111 1111 0000 0000 0111 1111 X1000 0000 0000 1111 1111 0000 0000 1111 1111 X1001 0000 0001 1111 1111 0000 0001 1111 1111 X1010 0000 0011 1111 1111 0000 0011 1111 1111 X1011 0000 0111 1111 1111 0000 0111 1111 1111 X1100 0000 1111 1111 1111 0000 1111 1111 1111 X1101 0001 1111 1111 1111 0001 1111 1111 1111 X1110 0011 1111 1111 1111 0011 1111 1111 1111 X1111 0111 1111 1111 1111 0111 1111 1111 1111 バイトデータを選択した場合にも、マスク発生器239
の機能は“ASIZE”フィールドが“100”である
ことによって同様に変更される。マスク発生器239
は、その入力の3つの最下位ビットだけを使用して4つ
の独立したマスクを形成する。これを以下の表12に示
す。 表 12 マスク発生器 入 力 マスク−バイト演算時 XX000 0000 0000 0000 0000 0000 0000 0000 0000 XX001 0000 0001 0000 0001 0000 0001 0000 0001 XX010 0000 0011 0000 0011 0000 0011 0000 0011 XX011 0000 0111 0000 0111 0000 0111 0000 0111 XX100 0000 1111 0000 1111 0000 1111 0000 1111 XX101 0001 1111 0001 1111 0001 1111 0001 1111 XX110 0011 1111 0011 1111 0011 1111 0011 1111 XX111 0111 1111 0111 1111 0111 1111 0111 1111 前述したように、4ビットずつの8つの区分、2ビット
ずつの 16 区分、及び単一ビットずつの 32 区分の複数
演算を支援するように実現することができる。これらの
他のデータサイズには、表10、11、及び12に示す
ようなマスク発生器239の動作に類似の変更を施す必
要があることは明白である。
【0063】データユニット110は3入力算術論理装
置230を含む。算術論理装置230は3つの入力、即
ち、Aポートへの入力を供給する入力Aバス241と、
Bポートへの入力を供給する入力Bバス242と、Cポ
ートへの入力を供給する入力Cバス243とを含む。算
術論理装置230は、結果を算術論理装置行先バス20
4へ供給する。この結果は、データレジスタ200のデ
ータレジスタの1つに記憶させることができる。代替と
して、結果は、バッファ108及び大域ポート行先デー
タバスGDST 107を介してデジタル画像/グラフ
ィックスプロセッサ71内の別のレジスタ内に記憶させ
ることができる。この機能は、長距離動作と呼ばれる。
命令は結果の行先を指定する。機能信号発生器245か
ら算術論理装置230へ供給される機能信号は、特定の
サイクルの間に算術論理装置230が実行する3入力機
能を決定する。ビット0キャリーイン発生器246は、
算術論理装置230の第1ビットであるビット0へ供給
されるキャリーイン信号を形成する。前述したように、
複数算術論理装置演算中は、ビット0キャリーイン発生
器246はキャリーイン信号を複数の各区分の最下位ビ
ットへ供給する。図10は、算術論理装置230のビッ
ト回路400の例示構造のブロック線図である。算術論
理装置230は 32 ビットのデータワードで演算するこ
とが好ましく、従って並列の 32 ビット回路400を備
えている。算術論理装置230の各ビット回路400
は、3入力Ai 、Bi 及びCi の対応するビットと、前
段ビット回路400からの0キャリーイン信号c
in0 と、前段ビット回路400からの1キャリーイン信
号cin1 と、算術可能化信号Aenと、前段ビット回路4
00からの反転キル( kill )信号Ki-1 バーと、キャリ
ーイン信号cin0 及びcin1を選択するための桁上げセ
ンス信号と、8つの反転機能信号F7バー乃至F0バー
とを受信する。第1のビット(ビット0)のためのキャ
リーイン信号cin0 及びcin1 は同一であり、後述する
特別な回路によって生成される。入力信号Ai、Bi
びCi は算術論理装置230の各ビット毎に形成され、
異なることができることを理解されたい。算術可能化信
号Aen及び反転機能信号F7バー乃至F0バーは各 32
ビット回路400に対して同一である。算術論理装置2
30の各ビット回路400は、対応する1ビット結果S
i と、早期0信号Zi と、次段ビット回路のための0キ
ャリーイン信号cin0 を形成する0キャリーアウト信号
out0と、次段ビット回路のための1キャリーイン信号
in1 を形成する1キャリーアウト信号cout1と、次段
ビット回路のための反転キル信号Ki-1 バーを形成する
反転キル信号Ki とを生成する。 32 ビット算術論理装
置230の最後のビットの0キャリーアウト信号cout0
もしくは1キャリーアウト信号cout1の選択された一方
は、“C”ビットがその命令に対して変化から保護され
ていない限り、状態レジスタ210内に記憶される。更
に、複数演算中、その命令は分離した算術論理装置区分
からのキャリーアウト信号を複数フラグレジスタ211
内に記憶させるように指定することができる。この場
合、選択された0キャリーアウト信号cout0もしくは1
キャリーアウト信号cout1が複数フラグレジスタ211
内に記憶される。
【0064】ビット回路400は、結果発生キャリーイ
ン401と、キャリーアウト論理402と、ブール関数
発生器403とを含む。ブール関数発生器403は、反
転関数信号F7バー乃至F0バーに従って関連ビット入
力Ai 、Bi 及びCi のブール組合わせを形成する。ブ
ール関数発生器は、対応伝播信号Pi と、生成信号G i
と、キル信号Ki とを生成する。結果論理401は、伝
播信号Pi と、前段ビット回路400からのキャリーセ
ンス選択信号によって選択されたキャリーイン信号c
in0 もしくはキャリーイン信号cin1 の一方とを組合わ
せて、ビット結果Si と早期0信号Zi とを形成する。
キャリーアウト論理402は、伝播信号P i と、生成信
号Gi と、キル信号Ki と、2つのキャリーイン信号c
in0 及びc in1 と、算術可能化信号Aenとを受信する。
キャリーアウト論理402は、2つのキャリーアウト信
号cout0及びcout1を発生し、次段のビット回路400
へ供給する。図11及び12は一緒になって、算術論理
装置230のビット回路400の例を示す。図11は、
算術論理装置230の各ビット回路400の結果論理4
01及びキャリーアウト論理402の詳細を示す。図1
2は、算術論理装置230の各ビット回路400の対応
ブール関数発生キャリーイン403の詳細を示す。
【0065】各結果論理401は、対応結果信号Si
早期0信号Zi とを生成する。結果論理401はこれら
の信号を、前段ビット回路からの2つのキャリーイン信
号、反転伝播信号Pi バー及び反転キル信号Ki-1 バー
と、桁上げセンス選択信号とから形成する。キャリーア
ウト論理402は、2つのキャリーアウト信号と反転キ
ル信号Ki バーとを形成する。これらの信号は、そのビ
ット回路400のための2つのキャリーイン信号、反転
伝播信号Pi バー、反転生成信号Gi バー、及び反転キ
ル信号Ki バーから形成される。各伝播信号は、“1”
キャリーイン信号をそのビット回路400を通して次の
ビット回路400へ伝播させるのか、もしくは吸収する
のかを指示する。生成信号は、そのビット回路400へ
の入力が次のビット回路400への“1”キャリーアウ
ト信号を生成するか否かを指示する。キル信号は、その
ビット回路400への入力が次のビット回路400への
“0”キャリーイン信号を生成するか否かを指示する。
伝播信号Pi 、生成信号G i 及びキル信号Ki は相互に
排他的であることに注目されたい。これらの1つの信号
だけが入力の各組合わせに対して生成されるのである。
算術論理装置230の各ビット回路400は 32 ビット
を通る桁上げリップル時間を短縮する技術を使用してい
る。算術論理装置230は、桁上げ区分(好ましくは8
ビットずつの4区分)に分割される。これらの各区分の
最下位ビット回路400の0キャリーイン信号cin0
“0”にハードワイヤードされ、1キャリーイン信号c
in1 は“1”にハードワイヤードされている。各ビット
回路400は2つの結果信号及び2つのキャリーアウト
信号を形成して次段のビット回路へ送る。各区分を通る
桁上げリップルが完了すると、前段の桁上げ区分の最上
位ビットからの実際の桁上げ出力が桁上げセンス選択信
号を形成する。この桁上げセンス選択信号は、ある区分
のビットによって生成された実際の結果をマルチプレク
サによって選択可能ならしめる。第1の桁上げ区分は、
その桁上げセンス選択信号を後述するビット0キャリー
イン発生器246から受信する。この技術により、桁上
げ区分を通る桁上げリップルを同時に発生させることが
可能になる。これは、冗長桁上げ線及び桁上げセンス選
択のための付加的なハードウェアを代価として、結果を
生成するのに要する時間の長さを短縮する。
【0066】キャリーアウト論理402は、キャリーイ
ン信号からキャリーアウト信号への変換を制御する。キ
ャリーアウト論理402は、2つのキャリーイン信号c
in0及びcin1 に作用する同一回路を含む。反転伝播信
号Pi バー及びインバータ412によって反転された伝
播信号Pi は、パスゲート413及び423を制御す
る。もし伝播信号Pi が“1”であれば、1キャリーイ
ン線410はパスゲート413を介して1キャリーアウ
ト線411に接続され、0キャリーイン線420はパス
ゲート423を介して1キャリーアウト線421に接続
される。従ってキャリーイン信号はキャリーアウトへ伝
播する。もし伝播信号Pi が“0”であれば、1キャリ
ーイン線410は1キャリーアウト線411から絶縁さ
れ、0キャリーイン線420はキャリーアウト線421
から絶縁される。もし生成信号Giが“1”であれば
(即ち、もし反転生成信号Gi バーが“0”であれ
ば)、PチャネルMOSFET(金属酸化物半導体電界
効果トランジスタ)414が導通して電源電圧をキャリ
ーアウト線411に結合し、PチャネルMOSFET
424が導通して電源電圧をキャリーアウト線421に
結合する。もし生成信号Giが“0”であれば(即ち、
もし反転生成信号Gi バーが“1”であれば)、Pチャ
ネルMOSFET 414及び424は遮断され、キャ
リーアウト線411及び421には影響を与えない。も
しキル信号Ki が“1”であれば、NチャネルMOSF
ET 415が接地とキャリーアウト線411とを結合
し、NチャネルMOSFET 425が接地とキャリー
アウト線421とを結合する。もしキル信号Ki
“0”であれば、NチャネルMOSFET 415及び
425は遮断され、キャリーアウト線411及び421
には影響を与えない。インバータ422は、次のビット
回路へ供給される反転キル信号Ki バーを生成する。
【0067】排他的OR回路431及び433は、結果
論理401の2つの結果を形成する。排他的OR回路4
31及び433は各々、反転入力にインバータ427か
らの伝播信号Pi を、また非反転入力にインバータ42
8からの反転伝播信号Pi バーを受信する。排他的OR
回路431は、非反転入力にインバータ426からの反
転0キャリーイン信号cin0 バーを受信し、現キャリー
区分の最下位ビットへのキャリーインが“0”である場
合に結果を形成する。同様に、排他的OR回路433
は、非反転入力にインバータ416からの反転1キャリ
ーイン信号cin1バーを受信し、現キャリー区分の最下
位ビットへのキャリーインが“1”である場合に結果を
形成する。インバータ432及び434は、マルチプレ
クサ435へ入力を供給する。マルチプレクサ435
は、桁上げセンス選択信号に基づいてこれらの信号の1
つを選択する。この桁上げセンス選択信号は、前段桁上
げ区分の最上位ビットからの実際のキャリーアウト信号
に対応する。マルチプレクサ435の出力をインバータ
436によって反転した出力が所望のビット結果Si
ある。結果論理401は、そのビット回路のための早期
0信号Zi をも形成する。この早期0信号Zi は、その
ビット回路400の結果Si が“0”になることを早め
に指示する。排他的OR回路437は、反転入力にイン
バータ427からの伝播信号Pi を、また非反転入力に
インバータ428からの反転伝播信号Pi バーを受信す
る。排他的OR回路437は、非反転入力に前段ビット
回路400からの反転キル信号Ki-1 バーをも受信して
いる。排他的OR回路437は、前段ビットキル信号K
i-1 が“0”キャリーアウト信号を生成し、且つ伝播信
号Pi も“0”である場合に、早期0信号Zi を形成す
る。もしKi-1 が“0”であればキャリーイン信号c
in0 及びcin1 がどのようであろうとも、0キャリーア
ウト信号cout0及び1キャリーアウト信号cout1は共に
“0”であることに注目されたい。桁上げが桁上げ区分
を通ってリップルできる前に、この早期0信号Zi が使
用可能になることに注目されたい。従って、この早期0
信号Zi は、算術論理装置230からの0出力の決定を
早めることができる。
【0068】図12に示す算術論理装置230の各ビッ
ト回路400のブール関数発生器403は、ビット回路
400のための伝播信号Pi 、生成信号Gi 、及びキル
信号Ki を生成する。ブール関数発生器403は、4レ
ベルからなる。第1のレベルは、パスゲート451、4
52、453、454、455、456、457及び4
58を含む。パスゲート451、453、455及び4
57は、入力Ci 及びインバータ459からの反転入力
i バーによって第1の方向(センス)に制御される。
パスゲート452、454、456及び458は、入力
i 及び反転入力Ci バーによって反対の方向に制御さ
れる。入力Ci の状態に依存して、パスゲート451、
453、455及び457が導通するか、もしくはパス
ゲート452、454、456及び458が導通する。
第2のレベルは、パスゲート461、462、463及
び464を含む。パスゲート461及び463は、入力
i 及びインバータ465からの反転入力Biバーによ
って第1の方向に制御される。パスゲート462及び4
64は反対の方向に制御される。入力Bi の状態に依存
して、パスゲート461及び453が導通するか、もし
くはパスゲート462及び454が導通する。第3のレ
ベルは、パスゲート471、472及び473を含む。
パスゲート471は、入力Ai 及びインバータ474か
らの反転入力Ai バーによって第1の方向に制御され
る。パスゲート472及び473は反対の方向に制御さ
れる。入力Ai の状態に依存して、パスゲート471が
導通するか、もしくはパスゲート472及び473が導
通する。第1のレベルは、インバータ441、442、
443、444、445、446、447及び448を
含み、これらは対応する反転関数信号F7バー−F0バ
ーに結合されている。インバータ441、442、44
3、444、445、446、447及び448は、ブ
ール関数発生器403へ入力ドライブを供給し、算術論
理装置230が遂行する機能を決定する。
【0069】ブール関数発生器403は、対応する入力
信号Ai 、Bi 及び、Ci と、反転機能信号F7バー−
F0バーの状態によって選択される機能とに基づいて伝
播信号Pi を形成する。もしパスゲート451、45
2、453、454、455、456、457、45
8、461、462、463、464、471もしくは
472を通る何れかの経路がインバータ441、44
2、443、444、445、446、447もしくは
448の1つから“1”を結合すれば、インバータ47
6の入力の伝播信号Pi は“1”である。インバータ4
76は、反転伝播信号Pi バーを形成し、これは図11
に示す結果論理401へ印加される。各パスゲート45
1、452、453、454、455、456、45
7、458、461、462、463、464、47
1、472及び473は、並列に配列されたNチャネル
MOSFET及びPチャネルMOSFETからなる。N
チャネルMOSFETのゲートは制御信号を受信する。
この電界効果トランジスタは、そのゲート入力がスイッ
チングしきい値電圧より高くなると導通する。Pチャネ
ルMOSFETのゲートは、インバータ459、465
もしくは474の1つを通して制御信号の反転によって
駆動される。この電界効果トランジスタは、そのゲート
入力がスイッチングしきい値より低くなると導通する。
PチャネルMOSFETは、NチャネルMOSFETの
動作に対して逆に動作するから、対応するインバータ4
59、465もしくは474は、これら2つの電界効果
トランジスタが共に導通するか、もしくは共に非導通に
なるの何れかを保証する。Nチャネル及びPチャネル電
界効果トランジスタが並列にされているので、制御入力
の極性の如何を問わず、望む時に導通させることができ
る。
【0070】3状態AND回路480は、生成信号Gi
及びキル信号Ki を形成する。好ましい実施例において
は、生成信号Gi 、キル信号Ki 及び伝播信号Pi は相
互に排他的である。従って、伝播信号Pi は3状態AN
D回路480の出力を制御する。もし伝播信号Pi
“1”であれば、3状態AND回路480は動作不能に
され、生成信号Gi 及びキル信号Ki は共に“0”であ
る。従って生成信号Giもしくはキル信号Ki は何れも
桁上げ信号を変化させない。パスゲート473はブール
関数発生器403の部分からの出力を3状態AND回路
480の1つの入力へ結合する。パスゲート473のゲ
ート入力は、第1入力ビットAi に第1の方向で結合さ
れている。NチャネルMOSFET 475は、3状態
AND回路480のこの入力を条件付きで接地へ結合す
る。第1入力ビットの反転Ai バーがNチャネルMOS
FET 475のゲート入力に供給される。パスゲート
473及びNチャネルMOSFET 475はワイヤー
ドORの関係で結合されているが、それらのゲート入力
はそれらを交互に導通させるので、OR演算は行われな
い。NチャネルMOSFET 475は、Ai =“0”
である時に3状態AND回路480へ“0”入力を強制
的に印加させるように働く。算術可能化信号が3状態A
ND回路480への第2の入力として供給されている。
【0071】3状態AND回路480は以下のように動
作する。もし伝播信号Pi が“1”であれば、Pチャネ
ルMOSFET 481及びNチャネルMOSFET
482は共に導通し、パスゲート483は非導通にな
る。これは図11のPチャネルMOSFET 414及
び424、及びNチャネルMOSFET 415及び4
25を遮断させるのでこれらの電界効果トランジスタは
何れも導通しなくなる。従って3状態AND回路480
の出力は高インピーダンス状態になり、キャリーアウト
線411及び421上の信号を変化させることはない。
もし伝播信号Piが“0”であれば、PチャネルMOS
FET 481及びNチャネルMOSFET 482は
共に非導通になり、パスゲート483は導通する。そこ
で回路は2入力の論理ANDを形成する。もし算術可能
化、もしくはNチャネルMOSFET 475とパスゲ
ート473の接合点における信号の何れかが“0”であ
るか、もしくは共に“0”であれば、PチャネルMOS
FET 484もしくはPチャネルMOSFET 48
5の少なくとも一方は電源電圧V+(論理“1”)を反
転生成信号Gi バーとして、図11のキャリーアウト論
理402のPチャネルMOSFET 414及び424
のゲートに印加する。同時にパスゲート483が導通し
てこの“1”信号を、キル信号Ki としてキャリーアウ
ト論理402のNチャネルMOSFET 415及び4
25へ供給する。この動作によって0キャリーアウト線
421上の信号はプルダウンされ、0キャリーアウト信
号cout0は“0”にされ、1キャリーアウト線411は
1キャリーアウト信号cout1を“0”にする。もし入力
が共に“1”であれば、NチャネルMOSFET 48
6及びNチャネルMOSFET 487の一連の組合わ
せは、NチャネルMOSFET 415及び425のゲ
ートへ接地電位(論理“0”)を供給する。キャリーア
ウト論理402のNチャネルMOSFET 415及び
425は遮断され、非導通になる。同時にパスゲート4
83が、この“0”をPチャネルMOSFET 414
及び424のゲートへ供給する。従ってキャリーアウト
論理402のPチャネルMOSFET 414及び42
4は導通する。この動作により、0キャリーアウト線4
21上の信号がプルアップされて0キャリーアウト信号
out0は“1”になり、1キャリーアウト線411上の
1キャリーアウト信号cout1も“1”にされる。
【0072】図10に示すビット回路構成は、伝播項、
生成項、結果項及び2つのキャリーアウト項を形成す
る。ビット回路400は伝播項Pi を以下のように形成
する。 Pi =F0&( 〜Ai &〜Bi &〜Ci )|F1&(Ai &〜Bi &〜Ci ) |F2&( 〜Ai &Bi &〜Ci )|F3&( Ai & Bi &〜Ci ) |F4&( 〜Ai &〜Bi &Ci )|F5&( Ai &〜Bi & Ci ) |F6&( 〜Ai & Bi &Ci )|F7&( Ai & Bi & Ci ) ビット回路400は、生成項Gi を以下のように形成する。 Gi =Ai &〔(F0&〜F1&〜Bi &〜Ci ) |(F2&〜F3&Bi &Ci )|(F4&〜F5&Bi &Ci ) |(F6&〜F7&Bi &Ci )〕 ビット回路400は、キル項Ki を以下のように形成す
る。 Ki =〜Gi &〜Pi ビット回路400は、結果項Si を以下のように形成す
る。 Si =Pi ^(cin0 &CSS|cin1 &〜CSS) ここに、CSSは桁上げセンス選択信号である。ビット
回路400は、2つのキャリーアウト信号cout0及びc
out1を以下のように形成する。
【0073】cout0=(Pi &cin0 )|(Gi
en)|〜(Ki &Aen) cout1=(Pi &cin1 )|(Gi &Aen)|〜(Ki
&Aen) 特定のビットiに関して、伝播信号Pi 、生成信号Gi
及びキル信号Ki は相互に排他的であることに注目され
たい。これらの信号の2つが同時に発生することはな
い。各ビット回路400の構成により、算術論理装置2
30は、反転機能信号F7バー−F0バーに依存して、
256 の考え得る3入力ブール機能の何れか1つ、もしく
は 256 の考え得る3入力混合ブール及び演算機能を遂
行することができる。算術可能化信号及び反転機能信号
F7バー−F0バーを含む9つの入力によって、512 機
能を選択することができる。後述するように、有利なこ
とに、データユニット110のデータ経路は、スピード
演算に3入力算術論理装置230を多くの方法で使用す
ることを可能にする。表13は、単一の機能信号F7−
F0に応答するビット回路400の簡単なブール論理関
数をリストしたものである。これらはブール論理関数で
あるから、算術可能化信号が“0”であり、生成機能及
びキル機能は共に不能にされている。前述したように、
ブール拡張算術論理装置演算の場合には、ビット0キャ
リーイン発生器246からキャリーイン信号cin0 及び
in1 を指定することができ、従って桁上げリップルが
許される。 表 13 8ビットALU コードフィールド 機能信号 論理演算 58 F7 A& B& C 57 F6 〜A& B& C 56 F5 A&〜B& C 55 F4 〜A&〜B& C 54 F3 A& B&〜C 53 F2 〜A& B&〜C 52 F1 A&〜B&〜C 51 F0 〜A&〜B&〜C これらの演算は、図11及び12を検討することによっ
て確認することができる。例えば、F7=“1”であっ
て、F6−F0が全て“0”の場合、インバータ44
1、442、443、444、446、447及び44
8は各々“0”を出力する。インバータ445だけが
“1”出力を発生する。Ci =“1”であってパスゲー
ト455を導通させ、Bi =“1”であってパスゲート
463を導通させ、そしてAi =“1”であってパスゲ
ート472を導通させた場合に限って伝播信号は“1”
になる。他の全ての組合わせは伝播信号を“0”にす
る。これは論理演算であるから0キャリーイン信号c
in0 及び1キャリーイン信号cin1は共に“0”であ
る。排他的OR回路431及び433は共に伝播信号を
戻すからSi =“1”になる。表13の他のエントリも
同様にして確認できる。機能信号F7−F0を適切に選
択することによって、3つの入力A、B及びCの合計 2
56 のブール論理関数が可能にされる。3入力の状態表
は8位置を含むから、28 =256 の考え得る3入力のブ
ール論理関数が得られることが理解されよう。2入力機
能は機能信号F7−F0を対で選択することによって達
成される部分集合機能である。入力Aに対する関係を除
いたB及びCのブール関数を望んでいるものとしよう。
F7=F6、F5=F4、F3=F2及びF1=F0の
ように選択すると、入力Aには無関係になる。パスゲー
ト471及び472に接続されているブール関数発生器
403の枝路が同じように駆動されることに注目された
い。これにより、Ai =“1”であっても、もしくはA
i =“0”であっても、結果は同一になる。このように
選択すると、4つの制御可能な機能対を得ることがで
き、入力B及びCに対して合計 16 のブール論理関数を
指定することができる。2入力の状態表は4位置を含む
から、3入力に対して24 = 16 の考え得るブール論理
関数が得られるのである。同様に、F7=F5、F6=
F4、F3=F1及びF2=F0のように選択すること
によって入力Bには無関係になり、入力A及びCに対し
て 16 のブール論理関数を指定する4つの制御可能な機
能対が得られる。F7=F3、F6=F2、F5=F1
及びF4=F0のように選択すると、入力Cには無関係
な4つの制御可能な機能対を介して、入力A及びBの 1
6 のブール論理関数が得られる。
【0074】命令ワードは、算術論理装置230によっ
て遂行される機能、及びこの動作が算術かもしくはブー
ル論理かを決定する。表13に関して説明したように、
命令ワードは、ブール論理演算に対して機能信号で符号
化されたフィールドを含んでいる。命令ワードの“8ビ
ット算術論理装置”フィールド(ビット58−51)で
あるこのフィールドは、命令が算術論理装置230に対
してブール論理演算を指定している場合には、機能信号
で直接符号化されている。“8ビット算術論理装置”フ
ィールドは、命令が算術演算を指定している場合には異
なる符号化がなされる。考え得る演算機能を検討すれ
ば、これらの演算機能の部分集合が最も頻繁に使用され
る演算を指定していることが分かる。機能信号F7−F
0の集合を2位置 16 進数で表せば、これらの最も頻繁
に使用される演算は、通常はディジットA、9、6及び
5だけで形成される。機能信号のこれらの集合はF7=
〜F6、F5=〜F4、F3=〜F2及びF1=〜F0
である。ビット57、55、53及び51は、 15 の演
算を指定し、全てが0の“8ビット算術論理装置”フィ
ールドは、非算術論理装置演算の特別な場合に対して反
転される。非算術論理装置演算に関しては後述する。算
術演算を実行する場合には、機能信号F6=ビット5
7、機能信号F4=ビット55、機能信号F4=ビット
53及び機能信号F2=ビット51である。他の機能信
号は、F7=〜F6、F5=〜F4、F3=〜F2及び
F1=〜F0によってセットされる。これらの演算及び
それらの対応する機能信号を表14に示す。表14に
は、省略時コーディングに対する変更も示してある。 表 14 8ビットALU 導出された コードフィールド 機能信号 5555 FFFFFFFF 7531 76543210 16進 演算の記述 0000 10101010 AA 非算術論理装置演算に対して反転 0001 10101001 A9 A−B左桁送り“1”拡張 0010 10100110 A6 A+B左桁送り“0”拡張 0011 10100101 A5 A−C 0100 10011010 9A A−B右桁送り“1”拡張 もし符号=0ならば95へフリップ A−B右桁送り符号拡張 0101 10011001 99 A−B 0110 10010110 96 Cに依存してA+B/A−B もし〜&MFならば99 A−Bへ フリップ もし符号=1ならばA+|B| 0111 10010101 95 A−B右桁送り“0”拡張 1000 01101010 6A A+B右桁送り“0”拡張 1001 01101001 69 A−B/A+B もし〜&MFならば66 A+Bへ フリップ もし符号=1ならばA−|B| 1010 01100110 66 A+B 1011 01100101 65 A+B右桁送り“1”拡張 もし符号=0ならば6Aへフリップ A+B右桁送り符号拡張 1100 01011010 5A A+C 1101 01011001 59 A−B左桁送り“0”拡張 1110 01010110 56 A+B左桁送り“1”拡張 1111 01100000 60 (A&C)+(B&C)、 フィールドA+B 命令ワードビット57、55、53及び51のの幾つか
のコーディングが、表14に示すように変更された形状
で実行される。左もしくは右桁送りがリストされている
機能は、バレル回転子235及びマスク発生器238と
共に使用される。これらの演算に関しては後述する。こ
の説明の“符号”とは、算術論理装置第2入力バス20
6(バレル回転子235を駆動するバス)のビット31
のことである。これは、符号付けられた数の符号ビット
である。この符号ビットが“0”であることは正の数を
表し、この符号ビットが“1”であることは負の数(2
の補数)を表している。ビット57、55、53及び5
1の状態が“0100”であると、右桁送り“1”拡張
を伴うA−Bの通常機能がもたらされる。もし算術論理
装置第2入力バス206のビット31が“0”であれ
ば、動作は右桁送り符号拡張を伴うA−Bに変化する。
ビット57、55、53及び51の状態が“0110”
であると、Cのビットワイズ状態に依存して、A−Bも
しくはA+Bの通常演算になる。もし命令が複数フラグ
レジスタマスク演算(&MF)を指定していなければ、
演算はA−Bに変化する。もし算術論理装置第2入力バ
ス206のビット31が“1”であれば、演算はA+|
B|(AプラスBの絶対値)に変化する。ビット57、
55、53及び51の状態が“1011”であると、C
のビットワイズ状態に依存して、A+BもしくはA−B
の通常演算になる。もし命令が複数フラグレジスタマス
ク演算(&MF)を指定していなければ、演算はA+B
に変化する。もし算術論理装置第2入力バス206のビ
ット31が“1”であれば、演算はA−|B|(Aマイ
ナスBの絶対値)に変化する。ビット57、55、53
及び51の状態が“1001”であると、右桁送り
“1”拡張を伴うA+Bの通常演算がもたらされる。も
し算術論理装置第2入力バス206のビット31が
“0”であれば、演算は右桁送り符号拡張を伴うA+B
に変化する。
【0075】より有用な機能を提供するために2つのコ
ードが変更される。ビット57、55、53及び51の
状態が“0000”であると〜A(Aの否定)の通常機
能になり、これは後述する非算術論理装置演算を支援す
るために保留される。ビット57、55、53及び51
の状態が“1111”であるとAの通常機能になる。こ
れはA&C)+(B&C)もしくはCの状態によって制
御されるAとBとのフィールド加算に変更される。表1
4にリストした演算の基本集合は、演算命令内に指定す
ることができる。表6に示したように命令ワードビット
58、56、54及び52がこれらの基本演算の変更を
制御することに注意されたい。これらの変更に関しては
表6及び状態レジスタ210の記述において説明済であ
る。後述するように、若干の命令は拡張算術論理装置演
算を指定する。それでも拡張算術論理装置(EALU)
演算を介して 256 の各算術演算を指定することはでき
る。これらの命令の場合、データレジスタD0の“A”
(ビット27)は算術もしくはブール論理演算の何れか
を指定し、“EALU”フィールド(ビット26−1
9)は機能信号F7−F0を指定し、“FMOD”フィ
ールド(ビット31−28)は基本機能の変更を指定す
る。またデータレジスタD0の“C”、“I”、
“S”、“N”及び“E”フィールドによって、算術論
理装置230のビット0への、及びもし複数演算が動作
可能にされていれば各区分の最下位ビットへのキャリー
インを制御することができる。拡張算術論理装置演算に
は4つの形状が存在する。拡張算術論理装置真(EAL
UT)演算では、機能信号F7−F0はデータレジスタ
D0の“EALU”フィールドの対応するビットに等し
い。拡張算術論理装置偽(EALUF)演算では、デー
タレジスタD0の“EALU”フィールドの個々のビッ
トは機能信号F7−F0を反転したものである。若干の
アルゴリズム中に反転機能信号が有用な関連演算を遂行
するので、拡張算術論理装置偽演算は有用である。全て
の機能信号を反転することは、典型的には反転機能を指
定する。従ってデータレジスタ208を再ロードするこ
となく、別の命令を通してこの関連演算にアクセスする
ことができる。他の拡張算術論理装置演算では、機能信
号F7−F0はデータレジスタD0の“EALU”フィ
ールドの対応するビットに等しいが、算術論理装置23
0への異なるデータ経路が動作可能にされる。これらの
オプションに関しては後述する。
【0076】データユニット110の動作は、プログラ
ムの流れ制御ユニット130によって取り込まれた命令
ワードに応答する。命令復号論理250は、実行パイプ
ライン段内の命令に対応するデータを演算コードバス1
33から受信する。命令復号論理250は、受信した命
令ワードに従ってマルチプレクサFmux 221、I
mux 222、MSmux 225、Bmux 22
7、Amux 232、Cmux 233、Mmux
234及びSmux 231の動作のための制御信号を
生成する。命令復号論理250は、受信した命令ワード
に従ってバッファ104、106、108、223及び
236の動作をも制御する。これらの機能のための制御
線は、明瞭化の目的で図示してない。マルチプレクサ及
びバッファの特定の制御された機能に関しては命令ワー
ドフォーマットの説明、及び図18に関連して後述す
る。また命令復号論理250は、部分的に復号された信
号を機能信号発生器245及びビット0キャリーイン発
生器246へ供給し、算術論理装置230の制御をも行
う。この部分的復号のための特定ハードウェアは図示し
てないが、当分野に精通していれば図18を参照しての
命令ワードフォーマットの説明から、これらの機能は容
易に実現できよう。命令復号論理250は、図7に関し
て説明済のマルチプレクサ311、312、313及び
314の制御によって算術論理装置230のオプション
的な複数区分演算をも制御する。
【0077】図13は、機能信号選択回路245aの詳
細を示す。機能信号選択回路245aは、図5に示す機
能信号発生器245の一部を形成している。機能信号発
生を完全に理解するためには、図13は図14に示す機
能信号変更回路245bと共に考えるべきである。マル
チプレクサは、入力から出力へのビットの流れを表す矢
印を有する矩形で示されている。入力は小文字で示され
ている。矢印に直角にマルチプレクサの矩形に入る制御
線には対応する大文字を付してある。特定の大文字を付
した制御線が活動(もしくはアクティブ)であると対応
する小文字を有する入力が選択され、マルチプレクサの
出力に接続される。マルチプレクサOmux 500の
入力“a”は、入力を2つの部分に受信する。命令ワー
ドのビット57、55、53及び51は、それぞれ入力
“a”のビット線6、4、2及び0に接続されている。
インバータ501は関連命令ワードビットを反転し、そ
れらを入力“a”のビット線7、5、3及び1へ供給す
る。入力“a”は、もし制御線“A”が活動になれば選
択され、選択された時には8つの入力ビット線が、対応
する番号を付した8つの出力ビット線7−4及び3−0
に接続される。制御線“A”はANDゲート502によ
って送り込まれる。ANDゲート502は、命令クラス
7−0の何れかの中の命令の実行を指示する第1入力を
受信する。命令ワードビット63がこれを指示する。こ
れらの命令クラスに関しては後述する。ANDゲート5
02は、命令ワードのビット59を送り込まれる第2入
力を有している。後述するように、ビット59が“1”
であることは、算術演算を指示している。NANDゲー
ト503は、4つの命令ワードビット57、55、53
及び51の何れかが低であることを感知する。NAND
ゲート503は、ANDゲート502へ第3の入力を供
給する。従って、制御入力“A”は、命令クラス7−0
の何れかが選択され、命令ワードの演算ビット59が
“1”であり、且つ命令ワードビット57、55、53
及び51が全て“1”でない場合に活動になる。表14
から、ビット57、55、53及び51の状態が“11
11”の場合には、本来の機能信号ではなく、変更され
た機能信号HEX“60”になることを思い出された
い。
【0078】マルチプレクサOmux 500への入力
“b”は、定数HEX“60”である。マルチプレクサ
Omux 500は、もしANDゲート504が制御
“B”を活動にすれば、この入力を選択する。もし、命
令ワードビット63によって指示された命令がクラス7
−0内にあり、命令ワードビット59が“1”であって
算術演算を指示し、且つビット57、55、53及び5
1の状態が“1111”であれば、ANDゲート504
は制御“B”を活動にする。表14について前述したよ
うに、これらの条件の下では関数HEX“60”はその
命令によって指示された関数信号に置換される。マルチ
プレクサOmux 500への入力“c”は、8つの命
令ワードビット58−51の全てを受信する。マルチプ
レクサOmux 500は、ANDゲート505が制御
“C”を活動にすれば、この入力を選択する。ANDゲ
ート505は、インバータ506によって反転された命
令ワードビット59と、命令クラス7−0の何れかの指
示とを受信する。即ち、命令ワードビット58−51は
命令クラス7−0内の 256 のブール演算の何れかを遂
行するために選択されるのである。
【0079】制御入力“D”、“E”、“F”、“G”
及び“H”に関連する演算のための命令ワードは、“0
11”に等しいビット63−61を有している。もしこ
の条件が充たされれば、ビット60−57は演算の型を
限定する。マルチプレクサOmux 500への入力
“d”は、定数HEX“66”である。この入力は、並
行符号付き乗算及び加算(MPYS‖ADD)、もしく
は並行符号なし乗算及び加算(MPYU‖ADD)を実
行する命令のために選択される。これらの命令は、まと
めて簡略記号MPYx‖ADDによって表す。マルチプ
レクサOmux 500への入力“e”は、定数HEX
“99”である。この入力は、並行符号付き乗算及び減
算(MPYS‖SUB)、もしくは並行符号なし乗算及
び加算(MPYU‖SUB)を実行する命令のために選
択される。これらの命令は、まとめて簡略記号MPYx
‖SUBによって表す。マルチプレクサOmux 50
0への入力“f”は、定数HEX“A6”である。この
入力は、DIVI演算のために選択される。除算に使用
されるこのDIVI演算の動作に関しては後述する。マ
ルチプレクサOmux 500への入力“g”は、拡張
算術論理装置機能コードビット26−19に従って、デ
ータレジスタD0の“EALU”フィールド(ビット
(26−19)から供給される。もしORゲート507
がMPYx‖EALUT演算もしくは/及びEALU演
算の何れかを検出すれば、制御入力“G”はデータレジ
スタD0からこの“EALU”フィールドを選択する。
前述したように、EALUTの添え字TはEALUコー
ドが真であることを意味し、これに対して反転(偽)は
EALUFで表す。データレジスタD0の“EALU”
フィールドが、EALUもしくはEALU%の何れかを
指示すると、制御入力“G”へのEALU入力が活動に
なる。
【0080】インバータ508は、データレジスタD0
の“EALU”フィールドの個々のビットを反転してマ
ルチプレクサOmux 500の入力“h”へ供給す
る。マルチプレクサOmux 500の入力“h”は、
制御入力“H”におけるMPYx‖EALUF演算の検
出に応答して選択される。前述したように、EALUF
の添え字Fは,データレジスタD0の“EALU”フィ
ールドの個々のビットが機能信号F7−F0の指定のた
めに反転されていることを表している。図13に示され
ているマルチプレクサAEmux 510は、算術可能
化信号を生成する。この算術可能化信号は各ビット回路
400の3状態ANDゲート480へ供給される。マル
チプレクサAEmux 510への“a”入力はデータ
レジスタD0の“A”ビット(ビット27)である。O
Rゲート511は3つの入力,即ちMPYx‖EALU
T、EALU及びMPYx‖EALUFを受信する。も
し命令がこれら3つの演算の何れかを選択すれば、マル
チプレクサAEmux 510への制御入力“A”はデ
ータレジスタD0の“A”ビット(ビット27)を選択
する。マルチプレクサAEmux 510への“b”入
力は、命令ワードの“ari”ビット(ビット59)で
ある。後述するように、この“ari”ビットは若干の
型の命令のために算術演算を選択する。この入力は、も
し命令が命令クラス7−0の何れかであれば選択され
る。この場合“ari”ビットは、算術演算(“ar
i”=“1”)またはブール演算(“ari”=
“0”)が直接算術論理装置230に渡されることを表
す。マルチプレクサAEmux510への“b”入力は
定数“1”である。もし命令が拡張算術論理装置命令で
もなく、または命令クラス7−0内になければ、ゲート
512はこの入力を選択する。これらの命令は、DIV
I演算及びMPYx‖ADD及びMPYx‖SUB演算
を含む。命令がマルチプレクサAEmux 510の出
力によって指示される算術演算か、もしくはORゲート
511によって指示される“どれかのEALU”演算の
何れかであれば、ORゲート513は算術もしくはEA
LU信号を供給する。
【0081】図14は、機能信号変更回路245bを示
す。機能信号変更回路245bは、機能信号発生器24
5aからセットされた機能信号を、命令に依存して、デ
ータレジスタD0の“FMOD”フィールド、もしくは
命令ビット58、56、54及び52に従って変更す
る。マルチプレクサFmux 520は機能変更子コー
ドを選択する。マルチプレクサFmux 520への
“a”入力は全て“0”(HEX“0”)である。NO
Rゲート521は、マルチプレクサFmux 520の
制御線“A”に接続されている。NORゲート521の
第1入力は、図13に示したORゲート511から“ど
れかのEALU”信号を受信し、第2入力はANDゲー
ト522の出力に接続されている。ANDゲート522
の第1入力は命令ワードの“ari”ビット(ビット5
9)を受信し、第2入力は命令が命令クラス7−0内に
あることを指示する。従って、もし命令がどの拡張算術
論理装置演算でもなく、且つ命令ワードの“ari”ビ
ットが“0”であるかもしくは命令が命令クラス7−0
内になければ、NORゲート521はマルチプレクサF
mux 520へのHEX“0”入力を選択する活動出
力を生成する。
【0082】マルチプレクサFmux 520への
“b”入力は、命令ワードのビット58、56、54及
び52を受信する。制御入力“B”は、ANDゲート5
22の出力を受信する。従ってマルチプレクサFmux
520は、命令が命令クラス7−0の何れかであっ
て、且つ命令の“ari”ビットがセットされている場
合に命令ワードのビット58、56、54及び52を選
択する。マルチプレクサFmux 520への“c”入
力は、データレジスタD0の“FMOD”フィールド
(ビット31−28)である。制御入力“C”は、OR
ゲート511から“どれかのEALU”信号を受信す
る。もし命令が拡張算術論理装置演算を要求すれば、マ
ルチプレクサFmux 520はデータレジスタD0の
“FMOD”フィールドを選択する。マルチプレクサF
mux 520は、活動機能変更コードを選択する。活
動機能変更コードは、後述するように算術論理装置23
0へ供給される機能信号を変更する。機能変更コードは
復号されて表6に指定されている演算を制御する。前述
したように、これらの変更された演算は、算術論理装置
230の制御された分割と、複数フラグレジスタ211
の1もしくはそれ以上のビットを算術論理装置230か
らの1以上の0もしくは1以上のキャリーアウトによっ
てセットすることと、複数フラグレジスタ211を回転
もしくはクリアすることと、LMO/RMO/LMBC
/RMBC回路237をその4つのモードの1つで動作
させることと、マスク発生器239を動作させること
と、ビット0キャリーイン発生器246を動作させるこ
ととを含む。機能変更コードの特定状態に対して遂行さ
れる演算は表6に示されている。
【0083】機能変更回路245b内の3つの回路ブロ
ックは、図13に示すマルチプレクサOmux 500
からの機能信号F7−F0を変更する。Mmuxブロッ
ク530は、Cポートへの入力を効果的に全て“1”に
セットするように動作する。Aポートブロック540
は、Aポートへの入力を効果的に全て“0”にセットす
るように動作することができる。符号拡張ブロック55
0は、機能信号F3−F0をフリップできる符号拡張ユ
ニットである。Mmuxブロック530は、通常は変更
を行わずに機能信号F3−F0を通過させるマルチプレ
クサ531を含む。算術論理装置230のCポートへの
入力を効果的に全て“1”にセットするために、マルチ
プレクサ531は機能信号F7−F4を機能信号F3−
F0上に複写する。マルチプレクサ531はANDゲー
ト533によって制御される。ANDゲート533は、
3つの条件、即ち、1)機能変更子コードマルチプレク
サFmux 520が、“0X1X”一致検出器532
(X=ドントケア)によって検出された4つのコード
“0010”、“0011”、“0110”もしくは
“0111”の何れかであること、2)命令がマスク生
成動作を要求していること、そして3)マルチプレクサ
Mmux 234からの出力が“0”であることが全て
存在する場合に活動となり、Cポートへの入力を効果的
に全て“1”にセットする。前述したように、機能信号
F7−F4を機能信号F3−F0上に複写すると、即ち
F7=F3、F6=F2、F5=F1及びF4=F0に
すると、入力Cには無関係に入力A及びBの 16 のブー
ル論理関数を選択することができる。表6から、4つの
機能変更子コード“0X1X”が“%!”変更を含むこ
とに注目されたい。図14によれば“%!”変更は、マ
スク発生器239によって生成されるマスクを変えるの
ではなく、算術論理装置230へ送られる機能信号を変
えることによって達成される。
【0084】Aポートブロック540は、マルチプレク
サ541と、通常は機能信号F7−F0を変更すること
なく通過させる接続回路542とを含む。算術論理装置
230のAポートへの入力を効果的に全て“0”にセッ
トするために、マルチプレクサ541及び接続回路54
2は、機能信号F6、F4、F2及びF0を、それぞれ
機能信号F7、F5、F3及びF1上に複写する。マル
チプレクサ541及び接続回路542は、ORゲート5
44によって付勢されるとこの置換を行う。ORゲート
544の第1入力は“010X”一致検出器543に接
続され、第2入力はANDゲート546に接続されてい
る。ANDゲート546の第1入力は“011X”一致
検出器545に接続されている。両一致検出器543及
び545は、機能変更子コードがそれらの検出状態に一
致したか否かを決定する。ANDゲート546の第2入
力は、命令がマスク生成動作を要求しているか否かを指
示する信号を受信する。算術論理装置230のAポート
への入力は、機能信号F6、F4、F2及びF0を、そ
れぞれ機能信号F7、F5、F3及びF1と交換するこ
とによって効果的に0にされる。前述したように、この
置換により算術論理装置230の出力はA入力には無関
係になる。もし、1)機能変更子コードが“010X”
一致検出器543において一致を見出せば、もしくは
2)命令がマスク生成動作を要求し、且つ機能変更子コ
ードが“011X”一致検出器545において一致を見
出せば、この置換が行われる。
【0085】符号拡張ブロック550は、通常は機能信
号F3−F0を通過させる排他的ORゲート551を含
む。しかしながら、若干の条件の下では、これらの機能
信号F3−F0は算術論理装置符号拡張及び絶対値の目
的のために反転される。Aポートブロック540からの
機能信号F7−F4が常に、符号拡張ブロック550に
よって変更されることなく通過することに注意された
い。ANDゲート552は、排他的ORゲート551に
機能信号F3−F0を反転させるか否かを制御する。A
NDゲート552の第1入力は、図13のORゲート5
13から算術もしくは拡張算術論理装置信号を受信す
る。ANDゲート552の第2入力は、マルチプレクサ
553からのものである。マルチプレクサ553は、図
13のORゲート511からの“どれかのEALU”信
号が活動であるとANDゲート554からの第1信号を
選択し、“どれかのEALU”信号が非活動であると複
合AND/ORゲート556からの第2信号を選択す
る。ANDゲート554の出力は、算術論理装置第2入
力バス206上のデータが正であり(インバータ555
によって反転された符号ビット(ビット31)によって
指示される)、且つデータレジスタ0の“S”ビット
(ビット16)が“1”である時には、“1”に等し
い。複合AND/ORゲート556の出力は、もし、
1)算術論理装置第2入力バス206上のデータが正で
あり(インバータ555によって反転された符号ビット
(ビット31)によって指示される)、2)命令が命令
クラス7−0内にあり、そして3)(a)命令ビット5
7、55、53及び51が“0100”/“1011”
一致検出器557内の一致を見出すか、もしくは(b)
ANDゲート560が命令ワードビット57、55、5
3及び51が“1001”/“0110”一致検出器5
58内の一致を見出すの何れかであって、且つ命令が複
数フラグレジスタマスク動作(@MF)を要求していな
ければ(インバータ559によって指示される)、活動
になる。
【0086】符号拡張ブロック550は、表14に注記
した例外を実現する。命令が算術演算を指定しているこ
とを指示する非活動“どれかのEALU”信号は、マル
チプレクサ553への第2入力を選択する。複合AND
/ORゲート556は、命令が命令クラス7−0内にあ
ること、及び符号ビットが“0”であることを決定す
る。これらの条件の下では、もし命令ワードビット5
7、55、53及び51が“0100”に等しければ、
機能信号ビットF3−F0を反転させることによって、
機能信号はHEX“9A”からHEX“95”へフリッ
プする。同様にもし命令ワードビット57、55、53
及び51が“1011”に等しければ、機能信号ビット
F3−F0を反転させることによって、機能信号はHE
X“65”からHEX“6A”へフリップする。もし命
令ワードビット57、55、53及び51が“100
1”に等しく、且つ命令が複数フラグレジスタマスク演
算を要求していなければ(インバータ599によって指
示される)、機能信号はHEX“69”からHEX“6
6”へフリップする。機能信号のこの集合は、算術論理
装置230にA−|B|(即ちAマイナスBの絶対値)
を実行せしめる。もし命令ワードビット57、55、5
3及び51が“0110”に等しく、且つ命令が複数フ
ラグレジスタマスク演算を要求していなければ、機能信
号はHEX“96”からHEX“99”へフリップす
る。これはA+|B|(即ちAプラスBの絶対値)を実
行させる。機能信号のこれらのフリップは算術論理装置
第2入力206上のデータの符号ビット(ビット31)
に基づいていることに注目されたい。
【0087】図15に、ビット0キャリーイン発生器2
46を示す。前述したように、ビット0キャリーイン発
生器246は、算術論理装置230の第1ビットに供給
されるキャリーイン信号cinを発生する。更に、もし命
令が複数算術論理装置演算を要求していれば、ビット0
キャリーイン発生器246からのこのキャリーイン信号
inは、一般的に複数の各区分の第1ビットにも供給さ
れる。マルチプレクサZmux 570は、命令復号論
理250からの6つの制御入力に基づいてこのビット0
キャリーイン信号cinの考え得る6つの源の1つを選択
する。マルチプレクサZmux 570の入力“a”へ
は、複数フラグレジスタ211のビット31が供給され
る。もし命令がDIVI演算を要求すれば、マルチプレ
クサZmux 570はこの入力をビット0キャリーイ
ン信号cinとして選択する。マルチプレクサZmux
570への入力“b”、“c”及び“d”は、複合論理
関数から形成されている。マルチプレクサZmux 5
70の入力“b”は、機能信号F6、F2及びF0のブ
ール関数である信号を受信する。回路571によって形
成されるこのブール式は、(F0&〜F6)|(F0&
〜F2)|(〜F2&〜F6)である。マルチプレクサ
Zmux 570の入力“c”は、排他的ORゲート5
72から送り込まれる。排他的ORゲート572の第1
入力は排他的ORゲート573から送り込まれ、第2入
力はANDゲート574から送り込まれている。排他的
ORゲート573の第1入力は、データレジスタD0の
“C”ビット(ビット18)であり、このビットは算術
論理装置230の先行演算が、最後のビットであるビッ
ト31にキャリーアウト信号cout を発生したか否かを
指示する。排他的ORゲート573の第2入力は、命令
がMPYx‖EALUF演算を要求していることを指示
する信号を受信する。ANDゲート574の第1入力
は、正符号を検出するために算術論理装置第2入力バス
206上に存在する符号ビット(ビット31)を反転す
るインバータ575から供給される。ANDゲート57
4の第2入力は、データレジスタD0の“I”ビット
(ビット17)から送り込まれ、第3入力はデータレジ
スタD0の“S”ビット(ビット16)から送り込まれ
る。前述したように“I”ビットは、符号拡張が可能化
されたことを“S”ビットが指示するとキャリーインを
反転させる。この動作は、図14に示す機能変更回路2
46bのANDゲート554及び排他的ORゲート55
1の符号拡張動作を補足する。マルチプレクサZmux
570の入力“d”は、排他的ORゲート576から
到来する。排他的ORゲート576の第1入力には機能
信号F0が供給され、第2入力には入力Cバス243上
のデータのビット0が供給されている。
【0088】マルチプレクサZmux 570の入力
“b”は、ANDゲートが制御入力“B”を活動にセッ
トすると選択される。これは、ORゲート513からの
“算術もしくはEALU”が活動であり、命令が拡張算
術論理装置演算を要求せず(インバータ582によって
指示される)、そしてインバータ583、584及び5
85によって制御されるマルチプレクサZmux 57
0の他の入力が印加され得ない場合に発生する。マルチ
プレクサZmux 570の入力“c”は、ANDゲー
ト586が活動出力を制御入力“C”へ供給すると選択
される。ANDゲート586は、命令が“どれかのEA
LU”演算を要求していることを指示する信号に応答す
る。ANDゲート586への残余の入力は、もし何れか
の入力“d”、“e”もしくは“f”がインバータ58
4、585及び595を介して活動になれば、このAN
Dゲート586が活動にならないようにする。マルチプ
レクサZmux 570の入力“d”は、制御線“D”
がANDゲート587からであると選択される。AND
ゲート587は、命令が算術演算であるか、もしくは拡
張算術論理装置演算であり、ANDゲート589が活動
であり、且つ入力“e”が選択されていない(インバー
タ585によって指示される)場合に選択される。AN
Dゲート589は、命令が複数フラグレジスタマスク動
作(@MF)拡張を指定し、且つ命令ワードビット5
7、55、53及び51が“0110”/“1001”
一致回路588における一致を見出すと活動になる。こ
れらの命令ワードビットは、ポートCへの入力に依存し
てポートA及びBの加算もしくは減算を行わせる機能信
号HEX“69”及びHEX“96”に対応する。命令
クラスが複数フラグレジスタ拡張を含むから、機能信号
のフリッピングは含まれない。図7は、複数モードにお
けるこのキャリーイン信号を分割算術論理装置の複数区
分へ供給することを示している。
【0089】マルチプレクサZmux 570の入力
“e”は、状態レジスタ210の“C”(ビット30)
から到来する。前述したように、もし算術論理装置23
0の最後の演算の結果がビット31からキャリーアウト
を生じさせれば、状態レジスタ210のこの“C”ビッ
トは“1”にセットされる。ANDゲート594は制御
入力“E”を供給する。ANDゲート594は、命令が
算術演算もしくは拡張算術論理装置演算を指定し、且つ
1)機能変更子コードが“0X01”一致検出器591
における一致を見出すか、もしくは2)命令がマスク生
成演算を要求するか(ORゲート590)、または機能
変更子コードが“0X11”一致検出器591における
一致を見出す(ANDゲート593)論理が真である時
に活動になる。マルチプレクサZmux 570の入力
“f”には、定数“0”が供給されている。インバータ
595によって反転されたORゲート513からの“算
術またはEALU”信号が、命令はブール演算を指定し
ていると指示した時にマルチプレクサZmux 570
はこの入力を選択する。マルチプレクサZmux 57
0の出力は、通常は変化しないでYmux 580を通
過し、ビット0キャリーイン出力に現れる。データレジ
スタD0の“A”ビット(ビット27)及び“E”ビッ
ト(ビット14)が共に“1”でないような複数算術演
算では、Ymuxは複数の同一キャリーイン信号を発生
する。状態レジスタ210の“ASIZE”フィールド
を通してハーフワード演算が選択されている場合には、
Zmux 570の出力はYmuxにビット0キャリー
イン出力及びビット 16 キャリーイン出力の両方を発生
させる。同様にバイト演算が選択されると、Zmux
570の出力はYmuxにビット0キャリーイン出力、
ビット8キャリーイン出力、ビット 16 キャリーイン出
力及びビット 24 キャリーイン出力を発生させる。
【0090】データレジスタD0の“A”ビット(ビッ
ト27)及び“E”ビット(ビット14)が共に“1”
である場合にはYmux 580の動作は異なる。AN
Dゲート577がこの条件を形成し、Ymux 580
の動作を制御する。これは、複数算術中に算術論理装置
230の異なる区分へ供給されるキャリーイン信号が異
なっている唯一の場合である。もしANDゲート577
がこの条件を検出すれば、機能信号F0と算術論理装置
230の対応する区分のC入力の最下位ビットとの排他
的ORによってキャリーイン信号が形成される。もし
“ASIZE”フィールドがワード演算を選択していれ
ば、即ち算術論理装置230が単一の 32ビット区分を
形成していれば、Ymux 580が形成するビット0
キャリーイン出力は、機能信号F0と排他的ORゲート
596が形成した入力Cバスビット0との排他的ORで
ある。他のキャリーイン信号は形成されない。もし“A
SIZE”フィールドがハーフワード演算を選択して2
つの 16 ビット区分が形成されていれば、Ymux 5
80が形成するビット0キャリーイン出力は排他的OR
ゲート596の出力であり、ビット 16 へのキャリーイ
ンは機能信号F0と排他的ORゲート598が形成した
入力Cバスビット 16 との排他的ORである。最後にバ
イト複数算術の場合、Ymux 580が形成するビッ
ト0キャリーイン出力は排他的ORゲート596の出力
であり、ビット 16 キャリーインは排他的ORゲート5
98によって形成され、そしてビット 24 キャリーイン
は排他的ORゲート599によって形成される。
【0091】図13、14及び15は、表を実現する特
定のブロックを表しているだけではなく、簡潔化のため
に特定回路のブロック線図を省略しても、表及び図によ
って好ましい実施例を製造できるようにする論理回路を
緻密に限定する直接的なプロセスをも示してしる。図1
3及び14の回路は、図5のデータユニット110の一
部である命令復号論理250を通しての種々のマルチプ
レクサ及び特別回路のための制御をカバーしていないこ
とを理解されたい。しかしながら、当分野においてはこ
れらの回路の制御は常識である。従ってこれらに関して
は、簡潔化のためにこれ以上の説明はしない。算術論理
装置230は、各入力の前に異なるハードウェア機能を
有する3つの32 ビット入力を含む。これにより算術論
理装置230を使用して多くの異なる機能を遂行し、各
入力に送り込んでいるハードウェアからの結果を組合わ
せることができる。算術論理装置230は、3入力の、
ブールもしくはビット毎の論理組合わせ、算術組合わ
せ、またはブール及び算術の混合組合わせを遂行する。
ブール及び算術の混合機能は、それらの実行が類似して
いることから、以後算術機能と呼ぶ。算術論理装置23
0は、論理機能もしくは算術機能の何れかを選択する1
つの制御ビットを有している。論理機能は算術論理装置
230のビット回路400の、もしくはビット回路40
0間のキャリーアウトを生成しない。従って算術論理装
置230の各ビット回路400は、そのビット回路への
3入力を組合わせて、 32 の個々のビットワイズ結果を
独立的に形成する。算術機能中、各ビット回路400は
隣接する下位ビットからキャリーインを受信することが
でき、次に上位のビット位置へのキャリーアウトを生成
することができる。8ビット制御信号(機能制御信号F
7−F0)は算術論理装置230が遂行する機能を制御
する。これにより、256 のブール機能の1つ、及び 256
の算術機能の1つを選択することができる。機能信号
F7−F0と番号付けされた機能信号は、マイクロソフ
(R) ウィンドウズに使用されているものと同一であ
る。ビット0キャリーイン発生器246は、算術モード
にある時にキャリーイン信号を供給する。算術モードで
は、算術論理装置230を2つの独立した 16 ビット区
分か、もしくは4つの独立した8ビット区分の何れかに
分割し、並列の複数の小さいデータセグメントで処理す
ることができる。ビット0キャリーイン発生器246
は、算術論理装置230が1、2、もしくは4区分の何
れかで動作している時にそれぞれ1、2、もしくは4つ
の何れかのキャリーイン信号を供給する。好ましい実施
例では、データユニット110のためのアセンブラは、
代数入力構文に基づいて機能信号の適切な集合を選択す
る式評価装置を含む。
【0092】実行されている特定命令は、算術論理装置
230の機能を決定する。後述するように、命令ワード
の好ましい実施例は、ブール演算もしくは算術演算の何
れかを指示するフィールドを含む。別の命令ワードは、
算術論理装置230へ供給される機能信号を指定する。
ブール命令は8つの機能信号F7−F0を直接指定す
る。算術命令では、この命令ワードフィールドの第1部
分集合は、表14に従う考え得る算術論理装置演算の部
分集合を指定する。この命令ワードフィールドの第2部
分集合は、表6に従う命令機能の変更を指定する。ブー
ル及び算術命令の両者のための機能信号及び機能変更の
全ての考え得る変化は、拡張算術論理装置(EALU)
命令を使用して指定することができる。この場合、図9
に示したデータレジスタD0内の予め定められたフィー
ルドが算術論理装置230の演算を指定する。算術論理
装置230は3つの全ての入力を組合わせることができ
るが、多くの有用な機能は若干の入力を含まない。例え
ば、式A&BはC入力をドントケアとして処理し、式A
|CはB入力をドントケアとして処理する。各入力には
異なるデータ経路ハードウェアが先行しているから、何
れかの入力を使用もしくは無視する能力は、所望機能の
ために必要なデータ経路ハードウェアの選択を支援す
る。表15は、C入力をマスクもしくは組合わせ(マー
ジング)制御として処理する場合の3つの入力式の例を
示す。データユニット110は、算術論理装置230の
C入力のデータ経路内に拡張回路238及びマスク発生
器239を含むから、C入力をマスクとして使用するの
は当然である。 表 15 論理演算 典型的な使用 (A&C)|(B&〜C) Cに基づくAとBとのビット毎の多重化(併合) もしC内の対応ビットが1ならばA選択 (A&〜C)|(B&C) Cに基づくAとBとのビット毎の多重化(併合) もしC内の対応ビットが1ならばB選択 (A|B)&〜C AとBの論理OR、次いでCが1ならば全ての箇 所を0にする (A&B)&〜C AとBの論理AND、次いでCが1ならば全ての 箇所を0にする A|(B&C) Cが0ならば、Aと論理ORの前にB入力を0に する A|(B|〜C) Cが0ならば、Aと論理ORの前にB入力を0に する 3入力算術論理装置230は、算術論理装置230を通
る単一のパスでブール(論理)及び算術の混合機能を遂
行することができる。ブール及び算術の混合機能は、算
術機能の前にブール機能の遂行を支援する。桁送り及び
加算、桁送り及び減算、もしくは加算または減算の前
に、フィールドマスキングのような種々の複合機能を適
切な算術論理装置機能と他のデータ経路ハードウェアと
の組合わせによって遂行することができる。算術論理装
置230は 256 の異なる算術機能を支援するが、殆ど
のプログラミングはこれらの部分集合だけしか必要とし
ないことに注目されたい。また、キャリーイン及び符号
拡張のような他のオプションを制御する必要がある。広
く使用されることが予測される若干の例を以下の表16
にリストする。 表 16 機能 コード 演 算 省略時 一般的な使用HEX キャリーイン 66 A+B 0 A+B、C無視 99 A−B 1 A−B、C無視 5A A+C 0 A+C、B無視 A5 A−C 1 A−C、B無視 6A A+(B&C) 0 A+B右桁送り “0”拡張 C桁送りマスク 95 A−(B&C) 1 A−B右桁送り “0”拡張 C桁送りマスク 56 A+(B|C) 0 A+B左桁送り “0”拡張 C桁送りマスク A9 A−(B|C) 0 A−B左桁送り “1”拡張 C桁送りマスク A6 A+(B&〜C) 0 A+B左桁送り “0”拡張 C桁送りマスク 59 A−(B&〜C) 1 A−B左桁送り “0”拡張 C桁送りマスク 65 A+(B|〜C) 0 A+B右桁送り 符号拡張 C桁送りマスク 9A A−(B|〜C) 1 A−B右桁送り 符号拡張 C桁送りマスク 60 (A&C)+(B&C) 0 A+B、Cにより マスク 9F (A&C)−(B&C) 1 A−B、Cにより マスク 06 (A&〜C) 0 A+B、〜Cにより +(B&〜C) マスク F9 (A&〜C) 1 A−B、〜Cにより +(B&〜C) マスク 96 A+((−B&C)| CのLSB 〜Cに基づきA+B (B&〜C)) またはA−B 69 A+((B&C)| 〜CのLSB Cに基づきA+B (−B&〜C)) またはA−B CC B 0 B、AとC無視 33 −B 1 負のB、 AとC無視 F0 C 0 C、AとB無視 0F −C 1 負のC、 AとB無視 C0 (B&C) 0 B右桁送り “0”拡張 C桁送りマスク 3F −(B&C) 1 負のB右桁送り “0”拡張 C桁送りマスク FC (B|C) 0 B左桁送り “1”拡張 C桁送りマスク 03 −(B|C) 1 負のB左桁送り “1”拡張 C桁送りマスク 0C (B&〜C) 0 B左桁送り “0”拡張 C桁送りマスク F3 −(B&〜C) 1 負のB左桁送り “0”拡張 C桁送りマスク CF (B|〜C) 0 B右桁送り 符号拡張 C桁送りマスク 30 −(B|〜C) 1 負のB右桁送り 符号拡張 C桁送りマスク 3C (−B&C)| CのLSB 〜Cに基づき (B&〜C) −BまたはB C3 (B&C)| 〜CのLSB Cに基づき (B&〜C) Bまたは−B 省略時キャリーイン制御及び符号拡張オプションと組合
わされた算術機能の最も一般的な有用な集合は、演算の
基本集合内の命令集合内で直接使用できる。これらは表
14にリストしてある。この基本集合は、算術論理装置
の機能制御を符号ビットに基づいて変更し、省略時キャ
リーイン選択を使用する動作を含む。これらの若干の例
について以下に説明する。
【0093】256 の全ての算術機能は、より多くの明示
キャリーイン及び符号拡張制御と共に、拡張算術論理装
置(EALU)命令を通して利用可能である。拡張算術
論理装置命令では、機能制御信号、機能変更子及び明示
キャリーイン及び符号拡張制御はデータレジスタD0内
に指定される。この拡張算術論理装置命令中のデータレ
ジスタD0のコーディングは図9に関して説明済であ
る。符号付きの、もしくは符号のないものとして2進数
を使用することができる。符号のない2進数は、使用さ
れるビットの範囲内の負ではない整数である。Nビット
の符号のない2進数は、0から2N −1までの整数のど
れかであることができる。符号付きの2進数は、それら
の最上位ビット内の符号の指示を担持する。もしこの最
上位ビットが“0”であれば、その数は正もしくは0で
ある。もし最上位ビットが“1”であれば、その数は負
もしくは0である。Nビットの符号付きの2進数は、−
N-1 −1乃至2N-1 −1の整数のどれかであり得る。
数がどのようにして、及び何故キャリーアウトもしくは
あふれを発生させるのかを知ることは、算術論理装置2
30の演算を理解するのに重要である。2つの符号のな
い数の和は、もしその和がその数のために使用されるビ
ットの数で表すことができなければ、あふれを生ずる。
この状態は最上位ビットからキャリーアウトが生成する
ので認識される。算術論理装置230は8ビット、 16
ビット、もしくは 32 ビットの数で演算するように構成
できることを思い出されたい。これらのキャリーアウト
は、複数フラグレジスタ211内に記憶して精密さを維
持するために使用することができる。2つの符号のない
数の差は、その差が0より小さい時には下位桁あふれを
起こす。負の数は符号のない数の表記法では表すことが
できないことに注意されたい。以下の例は、符号のない
減算中に、どのようにしてキャリーアウウトが生成され
るかを示すものである。
【0094】最初の例として、7“00000111”
マイナス5“00000110”を考えよう。算術論理
装置230は減算を、2の補数の加算によって遂行す
る。符号のない2進数の2の補数は、数を反転して1を
加算する、即ち−X=〜X+1によって生成することが
できる。算術論理装置230は、ある数を、その数を論
理的に反転(もしくは1の補数)し、最下位ビット内に
1を挿入することによって否定する。最初に5をビット
ワイズに反転して1の補数“11111001”を発生
させる。算術論理装置230は7を加算し、第1のビッ
トのキャリーイン入力に“1”を挿入する。この手順は
以下の結果を発生する。 この手順が、最上位ビットから“1”のキャリーアウト
を発生していることに注目されたい。2の補数の減算で
は、この“1”のキャリーアウトは借りを指示してはい
ない。従って、この減算中に下位桁あふれは存在しな
い。
【0095】次の例は5−7である。“0000011
1”の8ビットの1の補数が“11111000”であ
ることに注目されたい。 この場合、“0”のキャリーアウトは借りを表し、従っ
て結果が0より小さく下位桁あふれが発生していること
を指示している。符号のない減算の最後の例は0−0で
ある。0の8ビットの1の補数は“11111111”
である。 “1”のキャリーアウトは下位桁あふれが存在しないこ
とを指示している。
【0096】符号付きの数の場合の状況はより複雑であ
る。符号付き加算のあふれは、もし両オペランドが正で
あり結果の符号ビットが1(即ち、負)であってその結
果が正から負へロールオーバしたことを表していれば発
生する。加算におけるあふれは、もし両オペランドが負
であり結果の符号ビットが0(即ち、正)であっても発
生する。つまり換言すれば、加算におけるあふれは、も
し両オペランドの符号ビットが同一であり、結果が異な
る符号ビットを有していれば発生するのである。同様に
減算においては、もしオペランドが同一の符号を有し、
結果が異なる符号ビットを有していればあふれが発生す
る。状態レジスタ210もしくは複数フラグレジスタ2
11内の桁上げビットをセットする時に、1以上のビッ
トは常に算術論理装置230によって生成された“自
然”キャリーアウトである。殆どの他のマイクロプロセ
ッサは、加算中にキャリーアウトビットに基づいて“桁
上げ状態”をセットするが、減算中には非キャリーアウ
ト(借り)に基づいてそれをセットする。これらの他の
マイクロプロセッサは、借りを伴う減算を遂行する場合
には非桁上げを再反転して算術論理装置への適切なキャ
リーインを入手しなければならない。この差は、同一の
分岐条件を入手するのに本発明を使用する条件付き分岐
方程式は、他のプロセッサとは若干異なる集合をもたら
す。算術論理装置230が生成するものと同じ桁上げ/
非借りのセンスをそのまま残しておくと、各デジタル画
像/グラフィックスプロセッサがそれらを使用する多く
の方法を簡易化する。
【0097】算術命令の基本集合では、省略時キャリー
インは加算の場合は“0”であり、減算の場合は“1”
である。アセンブラの命令集合及び好ましい実施例は、
32ビット算数演算における加算もしくは減算のための
キャリーインを自動的に正しくセットする。命令集合
は、状態レジスタキャリーアウトに基づいてキャリーイ
ンをも支援して複数の精密な「桁上げを伴う加算」もし
くは「借りを伴う減算」演算を支援する。詳細を後述す
るように、若干の機能では算術論理装置230は、Bポ
ートへの入力をAポートへの入力に加算するのか、もし
くは減算するのかを制御するCポートを支援する。これ
らの算術論理装置機能を複数算術と組合わせることによ
りCポートへの入力は、算術論理装置230の各区分が
加算するのか、もしくは減算するのかを制御することが
できる。演算の基本集合は、算術論理装置230の各区
分へのキャリーインを制御し、その区分が加算を遂行し
ていれば“0”のキャリーインを、またその区分が減算
を遂行していれば“1”のキャリーインを供給する。こ
れらの区分へキャリーインを供給するためのハードウェ
アに関しては図15に関して説明済である。
【0098】以下に、デジタル画像/グラフィックスプ
ロセッサ71の3入力算術論理装置230を使用して考
え得る算術機能の全範囲を詳細に説明する。殆どのアル
ゴリズムの場合、上述した命令の部分集合で充分以上で
ある。完全を期すために以下に詳細に説明するのであ
る。以下の説明に含まれるのは、どのようにして算術論
理装置230のための機能コードを導出するかに関する
情報である。機能コードF7−F0の概要を説明してお
くと、種々の演算のために算術論理装置230をどのよ
うに使用することができるか、及び拡張算術論理装置命
令をどのように使用するのが最良かを理解するのを援助
することになろう。Cポートへの入力がAとBとの間の
加算もしくは減算を制御している場合を除いて、省略時
キャリーインは機能コードの最下位ビットであるF0に
等しい。全ての機能コードビットを反転すると、演算の
符号が変化する。例えば、A+Bを指定する機能コード
HEX“66”、及びA−Bを指定するHEX“99”
はビットワイズの反転である。同様にHEX“65”
(A+(B|〜C))及びHEX“9A”(A−(B|
〜C))もビットワイズの反転である。拡張算術論理装
置命令は、拡張算術論理装置真(EALUT)と拡張算
術論理装置偽(EALUF)との対で機能する。拡張算
術論理装置偽命令はデータレジスタD0内に記憶されて
いる算術論理装置制御コードを反転させる。上述したよ
うに、この反転は一般的に加算と減算との間を選択す
る。A+(B&C)のための機能コードHEX“6A”
の4つの最下位ビットを反転すると、機能A+(B|〜
C))であるHEX“65”になる。同様に、A−(B
&C)のための機能コードHEX“95”の4つの最下
位ビットを反転すると、機能A−(B|〜C))である
HEX“9A”になる。B&C演算はCが“0”である
場合B内のビットを0にし、B|〜C演算はCが“0”
である場合B内のビットを“1”にする。これは、Cに
対する逆マスキング機能を達成する。以下に説明するよ
うに、符号ビットに基づいて機能コードの4つの最下位
ビットを選択的に反転させると、加算もしくは減算の前
に符号拡張が遂行される。
【0099】算術論理装置230を使用して利用可能な
256 の全ての算術機能は次のように表すことができ
る。 S=A&F1(B,C)+F2(B,C) 但し、Sは算術論理装置結果であり、F1(B,C)及
びF2(B,C)は以下の表17に示すB及びCの考え
得る 16 のブール機能の何れかであることができる。 表 17 F 1 F 2コード コード 副 機 能 一般的な使用 00 00 0 0項 AA FF 全て1=−1 項を全て1にセット 88 CC B B 22 33 −B−1 負のB A0 F0 C C 0A 0F −C−1 負のC 80 C0 B&C Cが0の場合B内のビットを0に強 制 2A 3F −(B&C)−1 Cが0の場合B内のビットを0に強 制して否定 A8 FC B|C Cが1の場合B内のビットを1に強 制 02 03 −(B|C)−1 Cが1の場合B内のビットを1に強 制して否定 08 0C B&〜C Cが1の場合B内のビットを0に強 制 A2 F3 −(B&〜C)−1 Cが1の場合B内のビットを0に強 制して否定 8A CF B|〜C Cが0の場合B内のビットを1に強 制 20 30 −(B|〜C)−1 Cが0の場合B内のビットを1に強 制して否定 28 3C (B&〜C)| C=0ならばBを選択 ((−B−1)&C) C=1ならば−Bを選択 82 C3 (B&〜C)| C=1ならばBを選択 ((−B−1)&〜C) C=0ならば−Bを選択 図16に、算術論理装置230のこの視点をブロック線
図で示す。算術ユニット491は方程式の加算を形成し
ている。算術ユニット491は、ビット0キャリーイン
発生キャリーインからビット0のための桁上げ入力を受
信する。ANDゲート492はA AND F1(B,
C)を形成する。論理ユニット493は、表17にリス
トしたように機能信号から副機能F1(B,C)を形成
する。論理ユニット494は、表17にリストしたよう
に機能信号から副機能F2(B,C)を形成する。算術
論理装置230のこの図は、ブール及び算術演算中に、
算術機能に先立ってブール機能が遂行されることを示し
ている。図10、11及び12に示す一組のビット回路
400は、図13に示す機能発生器、図14に示す機能
変更回路及び図15に示すビット0キャリーイン発生器
と共に、図16に示す算術論理装置230の好ましい実
施例を形成している。当業者ならば、図16に示す算術
論理装置230を実現する多くの他の実行可能な方法が
存在することを認識できよう。
【0100】図16に明確に示してあるように、副機能
F1(B,C)及びF2(B,C)は独立しており、算
術論理装置230の単一の演算に対して異なる副機能で
あることができる。副機能F2(B,C)は、Bの負及
びCの負の両者を含む。従ってBもしくはCは、その負
を加算することによってAから減算することができる。
副機能F1(B,C)及びF2(B,C)のためのコー
ドによって、図11及び12に示す算術論理装置230
のための機能コードF7−F0を導出することができ
る。算術論理装置230のための機能コードF7−F0
は、対応する副機能F1(B,C)及びF2(B,C)
のためのコードの排他的ORである。副機能のためのコ
ードはこの結果を与えるために選択されており、従って
これらの副機能は同一演算に対して同一コードを有して
いないことに注目されたい。表17の副機能は、最も一
般的に有用な表現方法を用いてリストしてある。各機能
を表す他の方法もしくは要因(ファクタ)が存在する。
例えば、ド・モルガンの法則を適用することによって機
能B|〜Cは、〜(〜B&C)になる。〜X=−X−1
であるから、〜(〜B&C)は−(〜B&C)−1に等
価であり、B|〜CはB|(−C−1)に等価である。
表17の負の形状は、各々終わりに“−1”項を有して
いることに注目されたい。前述したように、負数は2の
補数である。これらは、1の補数を形成するビットワイ
ズの論理反転プラス1に等価である。“1”のキャリー
インを最下位ビット内に挿入して、−1を打ち消し、2
の補数を形成することができる。負の副機能を伴う最も
有用な機能では、F2(B,C)副機能だけが負を発生
する。
【0101】表17内のブール副機能を、マスキング演
算を遂行するものとして考えると便利なことが多い。表
17に示してあるように、副機能B&Cは、C内の対応
するビットが“0”である場合にはB入力値を“0”に
強制するものとして解釈することができる。副機能B|
Cは、C入力が“0”である場合にはB入力値を全ての
ビットに関して“0”に強制するものとして解釈するこ
とができる。マスク発生キャリーイン234及び拡張回
路238は、マルチプレクサ233を通して算術論理装
置230のCポートへ送り込み、殆どの場合Cポートは
B及びCの両項を含む副機能におけるマスクとして使用
される。表17はCポートへの入力がマスクとして使用
されるものとして各副機能の表現を関係付けている。上
式は、A入力が算術式においては否定することができな
いことを示している。従って算術論理装置230は、B
もしくはCの何れかからAを減算することはできない。
一方、副機能F1(B,C)及びF2(B,C)はB及
びCの否定/反転を支援するから、BもしくはCの何れ
かをAから減算することはできる。表17の副機能は、
上式に置換した時に、算術論理装置230が遂行するこ
とができる 256 の考え得る全ての算術機能を発生す
る。場合によっては結果の表現を更に短縮すると、元の
そして理解し易いものと等価な式になることがある。こ
れらの式を短縮する場合、幾つかのチップが役に立ち得
る。基本命令集合は、加算の場合に“0”のキャリーイ
ンの、また表17に表されている副機能F2(B,C)
が負のB及びC項を有している場合には“1”のキャリ
ーインの省略時値をとる。このキャリーイン挿入は、こ
れらの副機能の式の右側の−1を実効的に打ち消すこと
によって、1の補数(論理的な反転)を2の補数に変え
る。全てが“1”のAの論理ANDはAに等しい。従っ
て副機能F1(B,C)は、全てを“1”にセットして
式の左側にAを得るようにすることができる。全てが
“1”は、符号付き2進数マイナス1(−1)の2の補
数に等しいことにも注目されたい。
【0102】以下の例は、考え得る算術論理装置機能の
何れか、及びそれらの対応する機能コードを導出するた
めには、どのように表7の式及び副機能を使用するかを
示している。算術機能A+Bは、A&(全て“1”)+
Bとして表すことができる。これは、F1(B,C)=
全て“1”で、且つF2(B,C)=Bであることを要
求する。全てが“1”のためのF1コードはHEX“A
A”であり、BのためのF2コードはHEX“CC”で
ある。HEX“AA”とHEX“CC”とをビットワイ
ズに排他的ORすると、HEX“66”が求められる。
表16は、HEX“66”がA+Bのための機能コード
であることを示している。算術機能A−Bは、A&(全
て“1”)+(−B−1)+1として表すことができ
る。これは、F1(B,C)=全て“1”(F1コード
がHEX“AA”)で、且つF2(B,C)=−B−1
(F2コードがHEX“33”)で“1”のキャリーイ
ンが挿入されることを暗示している。副機能F2の場
合、“1”のキャリーインは否定を含むことを思い出さ
れたい。HEX“AA”のF1コードと、HEX“3
3”のF2コードとを排他的ORするとHEX“66”
が求められる。表16は、HEX“66”は“1”のキ
ャリーインをとるA−Bの機能コードであることを示し
ている。
【0103】算術機能A+CもA+Bと同様に導出され
る。即ちA+C=A&(全て“1”)+Cである。これ
は、F1(B,C)=全て“1”で、且つF2(B,
C)=Cを選択することによって導出することができ
る。HEX“AA”のF1コードと、HEX“F0”の
F2コードとを排他的ORすると、A+Cのための機能
コードHEX“5A”が求められる。同様にA−CはA
&(全て“1”)+(−C−1)+1と同一である。H
EX“AA”のF1コードと、HEX“0F”のF2コ
ードとを排他的ORすると、A−Cのための機能コード
HEX“A5”が求められる。3入力算術論理装置23
0は、第3の入力に基づいて2つの入力の間でマスキン
グ及び条件付き機能の両方もしくは何れか一方を与える
ことによって大いなる便益を提供する。データユニット
110のデータ経路は、Cポートを、マスク発生器23
4を使用してマスクとして、もしくは拡張回路238を
使用して条件付き制御入力として最も有用にすることが
できる。算術論理装置230は、何等かのブール及び算
術混合機能を遂行する際に、常に算術機能の前にブール
機能を遂行する。従って桁上げはマスクされないビット
から、0にされた、もしくはブール機能によってセット
された1もしくはそれ以上のビット内へリップルアウト
することができる。以下の例はマスキング及び条件付き
演算に有用である。
【0104】機能A+(B&C)は、A&(全て
“1”)+(B&C)として表すことができる。F1
(B,C)=全て“1”(HEX“AA”のF1コー
ド)、及びF2(B,C)=B&C(HEX“C0”の
F2コード)を選択すると、A+(B&C)が得られ
る。HEX“AA”と、HEX“C0”とを排他的OR
すると、表16にリストされているHEX“6A”の算
術論理装置機能コードが与えられる。この機能は符号の
ない数からビットをはぎ取る(ストリップオフする)こ
とができる。以下に示すように、この機能は右桁送り及
び加算演算を遂行する際にバレル回転子235及びマス
ク発生器234と組合わせることができる。この場合C
はビットマスクとして動作し、Cが“0”であればBの
ビットを0にする。マスク発生器234は右位置調整さ
れた1を有するマスクを生成することができるから、マ
ルチプレクサCmux 233を通してマスク発生器2
34を選択すると、この機能によって、Aに加算する前
のBの最上位ビットの若干を0にすることができる。こ
の機能の別の用途は、BをAに条件付きで加算すること
である。マルチプレクサCmux 233を通して拡張
回路238を選択すると、複数フラグレジスタ211内
のビットに基づいてBをAに加算するか否かを制御する
ことが可能になる。複数算術中、複数フラグレジスタ2
11内のビットは算術論理装置230の対応する区分を
制御することができる。
【0105】機能A+(B|〜C)は、A&(全て
“1”)+(B|〜C)として表すことができる。F1
(B,C)=全て“1”(HEX“AA”のF1コー
ド)、及びF2(B,C)=B|〜C(HEX“CF”
のF2コード)を選択すると、この式が得られる。HE
X“AA”と、HEX“CF”とをビットワイズに排他
的ORすると、表16にリストされているHEX“6
5”の機能コードが求まる。機能A−(B&C)は、A
&(全て“1”)+(−(B&−C)−1)+1として
表すことができる。F1(B,C)=全て“1”(HE
X“AA”のF1コード)、及びF2(B,C)=−
(B&C)−1(HEX“3F”のF2コード)を選択
し、“1”の桁上げ挿入を行うとこの式が得られる。H
EX“AA”とHEX“3F”とをビットワイズに排他
的ORすると、表16にリストされているHEX“9
5”の機能コードが求まる。この機能は、Aから減算す
る前にC入力によってB入力内のビットをはぎ取る、も
しくはマスクすることができる。副機能F1(B,C)
=0であるような 16 の考え得る機能が存在する。これ
らの機能は、C入力によるB入力の否定、絶対値、ビッ
トマスキング、及び符号拡張の全てもしくは何れか一つ
を遂行するために他のハードウェアと共に広く使用され
る。副機能F1(B,C)=0である場合には、算術論
理装置機能は副機能F1(B,C)によって与えられ
る。
【0106】機能−(B&C)は、(A&“0”)+
(−(B&C))として表すことができる。この式は、
F1(B,C)=0(F1コードHEX“00”)に、
且つF2(B,C)=−(B&C)−1(F2コードH
EX“3F”)に選択し、“1”の桁上げ挿入を行うと
得られる。HEX“00”とHEX“3F”とを排他的
ORすると、表16にリストされているHEX“3F”
の機能コードが求まる。この機能はマスクCによってB
内のビットをマスクし、次いで量が否定される。この機
能は、右桁送りの一部及び演算の否定に使用することが
できる。幾つかの機能は、上式内の和の両項をマスキン
グするのを有用な手法で支援する。機能(A&C)+
(B&C)は、F1(B,C)=C(F1コードHEX
“A0”)に、且つF2(B,C)=B&C(F2コー
ドHEX“C0”)に選択することによって達成するこ
とができる。HEX“A0”とHEX“C0”とを排他
的ORすると、表16にリストされている機能コードH
EX“60”が求まる。この機能は、Cが“0”である
場合に加算を行う前にA及びB入力の対応するビットを
効果的に0にする。ブール機能が加算の前に適用される
こと、及び1もしくはそれ以上の桁上げを0にされたビ
ット内へリップルさせることができることに注目された
い。複数算術を使用する場合に、これらの桁上げは算術
論理装置230の分割された区分間の境界を横切ること
はない。この機能の共通使用は、1つのレジスタ内に保
持されている複数の小さい量を合計することである。B
ポートは、Aポートへ向かう数の回転したバージョンを
受信し、Cポートは、重なるビットのためのマスクを供
給する。単一の命令で、4つの8ビット数を2つの 16
ビット数に合計したり、もしくは2つの 16 ビット数を
1つの 32 ビット数に合計したりすることができる。
【0107】類似機能(A&C)−(B&C)は、F1
(B,C)=C(F1コードHEX“A0”)に、且つ
F2(B,C)=−(B&C)−1(F2コードHEX
“3F”)に選択し、“1”のキャリーイン挿入を行っ
て達成する。HEX“A0”とHEX“3F”とを排他
的ORすると、表16にリストされている機能コードH
EX“9F”が求まる。この機能は負の合計を発生し、
Cポート値はA及びB入力のマスクとして動作する。機
能(A&B)+Bは、F1(B,C)=C(F1コード
HEX“A0”)に、且つF2(B,C)=B(F2コ
ードHEX“CC”)に選択することによって達成す
る。HEX“A0”とHEX“CC”とを排他的ORす
ると、表16にリストされている機能コードHEX“6
C”が求まる。この機能は、Aが全て“1”であるか、
もしくは全て“0”であるかに基づいて、Bを条件付き
に2倍にする。図17は、算術論理装置230の代替実
施例のブロック線図である。図17の算術論理装置23
0は、以下の式を形成する。 S=F3(A,B,C)+F4(A,B,C) ここにSは算術論理装置結果であり、F3(A,B,
C)及びF4(A,B,C)はA、B及びCの 256 の
考え得るブール機能の何れかであることができる。加算
器495はこの式の加算を形成し、ビット0キャリーイ
ン発生キャリーイン246からの最下位ビット桁上げ入
力のための入力を含む。ブール機能発生器496は、入
力機能信号によって制御される機能F3(A,B,C)
を形成する。ブール機能発生器497も同様に、入力機
能信号によって制御される機能F4(A,B,C)を形
成する。ブール機能発生器496及び497は、3つの
入力の256 の考え得るブール組合わせの集合から、
A、B及びCのの選択されたブール組合わせを独立的に
形成することに注目されたい。この構成から、算術論理
装置230が算術組合わせを形成する前にブール組合わ
せを形成することは明白である。図12の回路は、この
結果を達成するように変更することができる。図12に
示す生成/キル機能は、伝播機能に使用されている論理
樹木の一部を使用している。これは、パスゲート45
1、452、453、454、461及び462からな
る。パスゲート451、452、453、454、46
1及び462を複製し、NOT Aゲート475を排除
したこの機能のための分離した論理樹木を設けると、図
17を実現する構造がもたらされる。この構造では、生
成項もしくはキル項の一方を伝播項と同時に発生させる
ことができることに注目されたい。この構造は、図16
に示す構造よりも大きい柔軟性を得ることができる。
【0108】3入力算術論理装置230、補助データ経
路ハードウェア、及び2進法の知識を使用して、多くの
有用な基礎機能を形成することができる。デジタル画像
/グラフィックスプロセッサの命令集合は、典型的なマ
イクロプロセッサよりも多くのハードウェアにプログラ
マがアクセスすることを可能にする。ハードウェアにプ
ログラマがアクセスすることを可能にすることは、殆ど
の他のプロセッサでは隠されているアーキテクチャの若
干の面を露呈させる。この命令集合は、ビルディングブ
ロックとして基礎機能を使用して特注動作の形成を支援
する。これは、他のプロセッサ内に普通に見出されるハ
ードウェア機能を越えた大きい機能性にプログラマがア
クセスすることを可能にする。デジタル画像/グラフィ
ックスプロセッサは、画像、グラフィックス、及び他の
処理に極めて有用とすることができるハードウェア機能
を有している。ハードウェア能力と柔軟性のこの組合わ
せによってプログラマは、殆どの他のアーキテクチャで
は多くの命令を必要とするものを1つの命令で遂行する
ことができる。以下に、若干のキーとなる基本機能と、
より複雑な演算を行うにはそれらの2つもしくはそれ以
上をどのように組合わせることができるかを説明する。
【0109】以上の節では、データユニット110の各
機能ブロックの個々の働きを説明した。この節では、よ
り複雑な演算を遂行するためにはこれらの機能をどのよ
うに使用することができるかを説明する。バレル回転子
235、マスク発生器239、及び3入力算術論理装置
230は共働して左桁送り、符号のない右桁送り、及び
符号付き右桁送りを、単独で、もしくは単一の算術論理
装置命令サイクル中の加算もしくは減算と組合わせて、
遂行することができる。アセンブラはデジタル画像/グ
ラフィックスプロセッサ71、72、73及び74のた
めのプログラムコードを発生する。このアセンブラは、
符号のない(論理的な)右桁送りのための記号“>>
u”、算術(符号付き)右桁送りのための“>>”もし
くは“>>s”、及び左桁送りのための“<<”を支援
することが好ましい。これらの桁送り表記法は回転、マ
スク生成、及び算術論理装置機能に関する適切な明示機
能を選択する事実上マクロ機能である。アセンブラは、
バレル回転(“\\”)、マスク生成(“%”及び“%
!”)、及び算術論理装置機能を明示的に指定するのを
支援することも好ましい。明示表記法は一般的に、桁送
り表記法によっては表現できない特注機能を指定する場
合に限って使用されている。
【0110】データユニット110は、単一の算術論理
装置サイクル中に左桁送り動作を遂行する。この左桁送
り動作は、バレル回転子235を通してビットの数を左
桁送りしてバレル回転させることを含む。上述したよう
に、このような回転中、回転して左から出たビットは右
に回り込み、従って左桁送りを遂行するための「はが
し」を必要としない。回転した出力は算術論理装置23
0のBポートへ送られる。マスク発生器239は桁送り
量を受信し、この桁送り量と同数の右位置調整された1
を有するマスクを形成する。同一の桁送り量がマルチプ
レクサSmux231を通して第2入力バス202から
バレル回転子235の回転制御入力へ、及びマルチプレ
クサMmux 234を通して第2入力バス202から
マスク発生器239へ供給されていることに注意された
い。マスク発生器239は算術論理装置230のCポー
トに供給する。算術論理装置230はマスクを用いて回
転出力とブール関数B&〜Cとを組合わせる。左桁送り
は、アセンブラにおいて以下のように表される。 左桁送り=入力<<桁送り量 この演算は明示表記法に等価である。
【0111】左桁送り=(入力\\桁送り量)&〜%桁
送り量 以下の例は、HEX“53FFFFA7”を4ビットだ
け左桁送りすることを示すものである。幾つかの段階で
示すが、データユニット110はこれを算術論理装置サ
イクルの単一のパスで遂行する。元の数は2進表記法
で、 0101 0011 1111 1111 1111 1111 1010 0111 である。バレル回転子235において4ビットだけ回転
させると、 0011 1111 1111 1111 1111 1010 0111 0101 になる。マスク発生器239は次のマスクを形成する。 0000 0000 0000 0000 0000 0000 0000 1111 算術論理装置230は論理組合わせB&〜Cを形成す
る。これは回転量内のビットをマスクし、それらを
“0”にさせ、他のビットはそのままにする。これによ
り左桁送りは次の結果を生ずる。 0011 1111 1111 1111 1111 1010 0111 0000 上例の左桁送りは、若干のビットが“あふれ”ているの
で、算術あふれをもたらす。左桁送り中、もしどれかの
ビットがシフトアウトすれば、符号のない数に関して算
術あふれが発生する。算術あふれは、もし得られた符号
ビットが元の符号ビットと異なれば、符号付きの数に関
しても発生し得る。本発明の算術論理装置230は、左
桁送りにおける算術あふれを自動的に検出することはな
い。左桁送りは、LMO/RMO/LMBC/RMBC
回路237が生成する元の数の最も左のビット変化を左
桁送り量から減算することによって検出することができ
る。もしこの差が0より小さいか、または0に等しけれ
ば、この差はあふれるビットの数である。
【0112】アセンブラはデータユニット110をも制
御し、左桁送り及び加算演算と、左桁送り及び減算演算
とを遂行させる。アセンブラは、A+(B<<n)機能
をバレル回転子235、マスク発生器239、及び算術
論理装置230の制御内へ翻訳して所望の演算を遂行さ
せる。左桁送り及び加算演算は、算術論理装置230の
演算を除いて上例の単純な桁送りと同じように動作す
る。単純な桁送りにおける論理関数B&〜Cを遂行する
代わりに、算術論理装置は算術及び論理混合関数A+
(B&〜C)を遂行する。左桁送り及び加算演算は、ア
センブラ表記法では次のように表される。 左桁送り 加算=入力1+入力2<<桁送り量 この演算は、左桁送り 加算=入力1+〔(入力2\\
桁送り量)&〜%桁送り量〕以下に、HEX“53FF
FFA7”を4ビットだけ左桁送りした後にHEX“0
00000AA”を加算する例を示す。これらの段階
は、単一の算術論理装置サイクルだけを必要とすること
に注目されたい。元の入力2は2進表記法で 0101 0011 1111 1111 1111 1111 1010 0111 である。バレル回転子235における4位置の回転によ
って、 0011 1111 1111 1111 1111 1010 0111 0101 が発生する。マスク発生器239は次のようなマスクを
形成する。
【0113】 0000 0000 0000 0000 0000 0000 0000 1111 算術論理装置230は、論理組合わせB&〜Cを形成
し、左桁送り結果 0011 1111 1111 1111 1111 1010 0111 0000 を発生させる。他のオペランド、入力1の2進表記は、 0000 0000 0000 0000 0000 0000 1010 1010 である。最後に、和は、 0011 1111 1111 1111 1111 1011 0001 1010 になる。算術論理装置230は、論理組合わせを形成
し、算術組合わせは単一サイクルであり、そして上記左
桁送り結果は中間結果として利用できないことに注目さ
れたい。また、たとえ左桁送りがあふれを発生させなく
とも、和はあふれ得ることにも注目されたい。和のあふ
れは、算術論理装置230の最上位ビットからのキャリ
ーアウトの生成によって検出される。この条件は検出さ
れ、状態レジスタ210の“V”ビット内に記憶され
る。左桁送り及び減算演算も、単一の算術論理装置サイ
クルにおいてバレル回転子235、マスク発生器23
9、及び算術論理装置230によって遂行される1組の
機能に分解される。左桁送り及び減算演算は、上述した
左桁送り及び加算演算とは算術論理装置230の機能だ
けが異なる。左桁送り及び減算演算中、算術論理装置2
30は、算術及び論理混合機能A+(B|〜C)+1を
遂行する。算術論理装置230は、最下位ビットの桁上
げ入力に“1”を挿入することによって“+1”を遂行
する。このキャリーインの挿入は、ビット0キャリーイ
ン発生キャリーイン246において行われる。本発明を
使用する殆どの減算演算は、最下位ビットへの“1”の
キャリーインを使用して行われる。アセンブラ表記法で
は、左桁送り及び減算演算を次のように表す。
【0114】左桁送り 減算=入力1−入力2<<桁送
り量 この演算は、 左桁送り 減算=入力1−〔(入力2\\桁送り量)&
〜%桁送り量〕+1 以下に、HEX“53FFFFA7”を4ビットだけ左
桁送りした後に、HEX“000000AA”を減算す
る例を示す。これらの段階は全て、単一の算術論理装置
サイクルだけを必要とすることに注目されたい。元の入
力2は、2進表記法では、 0101 0011 1111 1111 1111 1111 1010 0111 である。バレル回転子235によって4位置回転させる
と、 0011 1111 1111 1111 1111 1010 0111 0101 になる。マスク発生キャリーイン239は次のマスクを
形成する。 0000 0000 0000 0000 0000 0000 0000 1111 論理組合わせ〜B|Cの結果は、 1100 0000 0000 0000 0000 0101 1000 1111 になる。他のオペランド、入力1の2進表記は、 0000 0000 0000 0000 0000 0000 1010 1010 である。和A+(〜B|C)は、 1100 0000 0000 0000 0000 0110 0011 1001 になる。最後に、最下位ビットに“1”を加算すると次
のようになる。
【0115】 1100 0000 0000 0000 0000 0110 0011 1010 算術論理装置230は、論理組合わせと算術組合わせを
単一のサイクルにおいて形成すること、及び上記左桁送
り結果も部分和も中間結果として使用できないことに注
目されたい。好ましい実施例のアセンブラはデータユニ
ット110を制御し、単一の算術論理装置サイクル中に
左から0が桁送りされるような符号のない右桁送りを遂
行させることができる。バレル回転子235は左回転を
遂行するから、 32 −n(nは右へ回転させるビットの
数)の回転量を用いれば、正味で右回転を形成させるこ
とができる。バレル回転子235及びマスク発生器23
9が、第2入力上のデータの5つの最下位ビットだけを
使用することに注目されたい。従って、桁送り演算に関
しては量 32 と0とは等価である。アセンブラは、即値
右桁送り量を用いて桁送りのための 32 −n計算を自動
的に行う。好ましい実施例のアセンブラは、レジスタを
ベースとする桁送りの量 32 −nを形成することをプロ
グラマに要求する。右回転に対する受け入れが行われた
後は、算術論理装置230が異なる機能を遂行すること
を除いて符号のない右桁送り作業は左桁送りと同一であ
る。この演算は、バレル回転子235が量 32 −nだけ
回転させることを含む。この正味右回転の結果として、
ビットはワードの最下位部分から最上位部分へ巻き付け
られる。同一の量( 32 −n)はマスク発生器239を
制御し、マスク発生器239は 32 −nの右位置調整さ
れた1を生成する。マスク発生器239は“!”オプシ
ョンで制御されるので、0の桁送り量は全て“1”のマ
スクを発生する。この場合、ビットは「はがされる」こ
とはない。次いで算術論理装置230は、バレル回転子
235及びマスク発生器239の出力のブール組合わせ
を形成する。
【0116】符号のない右桁送り演算の例を以下に示
す。アセンブラ表記法による符号のない右桁送りは、 符号のない右桁送り=入力>>u( 32 −桁送り量) である。遂行される機能を明示的に示す等価演算は、 符号のない右桁送り=(入力\\( 32 −桁送り量))
&%!( 32 −桁送り量)) 上式においてマスク演算子“%!”は、もし桁送り量が
0であれば、全てが“1”のマスクを生成することを指
定していることに注目されたい。以下の例は、HEX
“53FFFFA7”を右へ4ビット位置だけ符号のな
い桁送りすることを示している。元の数の2進形状は、 0101 0011 1111 1111 1111 1111 1010 0111 この数を 32 −4= 28 位置だけ左回転させると、 0111 0101 0011 1111 1111 1111 1111 1010 になる。マスク発生器239は、入力 32 −4= 28 か
らマスク 0000 1111 1111 1111 1111 1111 1111 1111 を形成する。最後に、算術論理装置230がブール組合
わせB&Cを形成して次の結果が得られる。
【0117】 0000 0101 0011 1111 1111 1111 1111 1010 データユニット110は、符号のない右桁送り及び加
算、もしくは符号のない右桁送り及び減算演算の何れか
を遂行することができる。好ましい実施例では、アセン
ブラは表記A+B>>u(n)を、バレル回転子23
5、マスク発生器239、及び算術論理装置230を制
御して符号のない右桁送り及び加算演算を遂行させる命
令に翻訳する。符号のない右桁送り及び加算動作は、算
術論理装置230が機能A+(B&C)を遂行すること
を除いて、前記端純な符号のない右桁送りの例と同一で
ある。同様に、符号のない右桁送り及び減算演算も、算
術論理装置230が機能A−(〜B|C)+1を遂行す
ることを除いて、前記単純な符号のない右桁送りの例と
同一である。左桁送り及び減算におけると同様に、“+
1”演算はビット0キャリーイン発生器246を通して
最下位ビットへ“1”キャリーインを挿入することを含
む。好ましい実施例のアセンブラはデータユニット11
0を制御して単一の算術論理装置サイクル中に符号付き
右桁送りを遂行し、符号ビットを左から桁送りすること
ができる。アセンブラは、即値右桁送り量を用いて桁送
りのための 32 −n計算を自動的に行う。データユニッ
ト110は、バレル回転子235内へ入力される符号ビ
ットと呼ばれる最上位ビットの状態を検出するハードウ
ェアを含んでいる。この符号ビットは、機能コードの4
つの最下位ビットを制御することができる。このハード
ウェアを使用する場合には、もし符号ビットが“0”で
あれば機能コードの4つの最下位ビットは反転される。
符号付き右桁送り動作はこの符号検出ハードウェアを使
用し、算術論理装置230がバレル回転子235への入
力の符号に基づいて遂行する機能を制御する。この動作
は以下の基本機能を使用して説明することができる。バ
レル回転子235は、 32 マイナス所望の符号付き右桁
送りのビット数( 32 −n)だけ左回転させることによ
って、正味右回転を遂行する。この桁送り量( 32 −
n)はマスク発生器239へ供給され、マスク発生器2
39は、右位置調整された 32 −nの“1”を生成す
る。このマスクの“1”は右桁送りされる数の所望ビッ
トを選択する。このマスクの“0”はバレル回転子23
5への入力の最上位ビットに等しい符号ビットを生成す
る。次いで算術論理装置230はバレル回転子235か
らの回転した数と、マスク発生器237からのマスクと
を組合わせる。算術論理装置230が遂行するブール機
能は、バレル回転子235への入力における符号ビット
に依存する。もしこの符号ビットが“0”であれば、算
術論理装置230は機能信号を受信してB&Cを遂行す
る。不変回転数を選択すると、これはマスクが“0”で
あるどのビットをも強制的に“0”にする。従って結果
の最上位ビットが“0”になり、同一符号がバレル回転
子235への入力として指示される。もし符号ビットが
“1”であれば、算術論理装置230は機能信号を受信
してB|〜Cを遂行する。この機能は不変回転量を選択
し、マスクが“0”であるどのビットをも強制的に
“1”にする。機能コードの変化は、もし検出した符号
ビットが“0”であれば、4つの最下位ビットの反転を
含む。従って結果の最上位ビットは“1”であり、同一
の符号がバレル回転子235への入力として指示され
る。
【0118】符号のない右桁送りの2つの例を以下に示
す。符号付き右桁送りは、右桁送りのための省略時アセ
ンブラ表記である。符号付き右桁送りのための2つの許
されたアセンブラ表記法は次のようである。 符号付き右桁送り=入力>>s( 32 −桁送り量) 符号付き右桁送り=入力>>( 32 −桁送り量) この演算は符号検出ハードウェアを使用するから、アセ
ンブラの好ましい実施例の表記法にはこの演算を回転及
びマスキングによって指定する明示的な方法は存在しな
い。好ましい実施例では、バレル回転子235への入力
の符号は、機能信号F3−F0の反転を制御する。第1
の例として、負の数HEX“ECFFFFA7”の4位
置符号付き右桁送りを示す。元の数は2進表記で、 1110 1100 1111 1111 1111 1111 1010 0111 である。28(32−4)位置だけ左回転させると、 0111 1110 1100 1111 1111 1111 1111 1010 が得られる。マスク発生器237はこのマスクを形成す
る。 0000 1111 1111 1111 1111 1111 1111 1111 バレル回転子235への入力の最上位ビットは“1”で
あるから、算術論理装置230はB|〜Cのブール組合
わせを形成する。この結果は次のようになる。
【0119】 1111 1110 1100 1111 1111 1111 1111 1010 この例では、桁上げ結果の最上位ビットへ“1”が桁上
げされて元の数の符号ビットに一致されている。第2の
例は正の数HEX“5CFFFFA7”の4位置符号付
き右桁送りを示す。元の数は2進表記で、 0101 1100 1111 1111 1111 1111 1010 0111 である。28(32−4)位置だけ左回転させると、 0111 0101 1100 1111 1111 1111 1111 1010 が得られる。マスク発生器237はこのマスクを形成す
る。 0000 1111 1111 1111 1111 1111 1111 1111 バレル回転子235への入力の最上位ビットは“0”で
あるから、算術論理装置230は機能コードの4つの最
下位ビットの反転によってB&Cのブール組合わせを形
成する。この結果は次のようになる。 0000 0101 1100 1111 1111 1111 1111 1010 この右桁送りがなされると、“0”が最上位ビット内に
桁送りされ、元の数の符号ビットに一致されていること
に注目されたい。
【0120】データユニット110は、符号付き右桁送
り及び加算、もしくは符号付き右桁送り及び減算の何れ
かの演算を遂行することができる。好ましい実施例で
は、アセンブラは表記A+B>>(n)もしくはA+B
>>s(n)を、バレル回転子235、マスク発生器2
39、及び算術論理装置230を制御して符号付き右桁
送り及び加算を遂行させる命令に翻訳する。符号付き右
桁送り及び加算動作は、算術論理装置230が遂行する
機能を除き、前記符号付き右桁送り例と同一である。符
号付き右桁送り及び加算演算では、もしバレル回転子2
35への入力の符号ビットが“0”であれば、算術論理
装置230は機能A+(B&C)を遂行する。もしこの
符号ビットが“1”であれば、算術論理装置230は機
能A+(B|〜C)を遂行する。好ましい実施例では、
アセンブラは表記A−B>>s(n)もしくはA−B>
>(n)を、バレル回転子235、マスク発生器23
9、及び算術論理装置230を制御して符号付き右桁送
り及び減算を遂行させる命令に翻訳する。符号付き右桁
送り及び減算演算動作は、算術論理装置230が遂行す
る機能を除き、前記単純な符号付き右桁送り例と同一で
ある。符号ビットが“1”であれば、算術論理装置23
0は機能A−(B&C)+1を遂行する。符号ビットが
“0”である場合には、算術論理装置230は代替機能
A−(B|〜C)+1を遂行する。左桁送り及び減算の
場合のように、“+1”演算はビット0キャリーイン発
生器246を介して最下位ビット内へ“1”キャリーイ
ンを挿入することを含む。
【0121】バレル回転子235、マスク発生器23
9、及び算術論理装置230は、単一のサイクル中にフ
ィールド抽出を遂行することができる。フィールド抽出
は、あるワード内の任意のビット位置から開始してその
ワード内のビットのフィールドを取り、それらのビット
をフィールドの外側へはがし(ストリップオフし)、そ
してそのフィールドを右位置調整する。このようなフィ
ールド抽出は、そのフィールドを右位置調整するのに必
要なビットの数だけワードを左へ回転させ、回転の結果
をフィールドのサイズ内のビットの数だけマスクするこ
とによって遂行される。桁送りの場合とは異なり、ビッ
ト位置に基づく回転量、及びフィールドサイズに基づく
マスク入力は同一量である必要はない。好ましい実施例
のアセンブラは、フィールド抽出に以下の表記を使用す
る。 フィールド抽出=(値\\( 32 −開始ビット)&%!
フィールドサイズ “%!”演算子は、0の入力の場合を除き、フィールド
サイズと同数の右位置調整された“1”を有するマスク
をマスク発生器239に形成させる。この場合、生成さ
れたマスクのビットは全て“1”であるから、論理AN
D演算によってマスクされるビットは存在しない。この
回転及びマスキングは、もしフィールドサイズが開始ビ
ット位置よりも大きければ、回り込みビットを発生し得
る。これらのパラメタは、指定されたフィールドが元の
ワードの端より遠くへ伸びるような異常な場合を指定し
ている。データユニット110は、このような場合を調
べるためのハードウェアを備えてはいない。このような
結果を防ぐのはプログラマの責任である。以下の例は、
数HEX“5CFFFFA7”の左から8ビットのビッ
ト 24 から出発する4ビットフィールドのフィールド抽
出を示す。この数の2進形状は、 0101 1100 1111 1111 1111 1111 1010 0111 である。この数は32−24もしくは8ビット左回転さ
せて、フィールドを右位置調整しなければならない。バ
レル回転子235からの出力は、 1111 1111 1111 1111 1010 0111 0101 1100 である。マスク発生器239は4ビットのフィールドサ
イズから次のマスクを形成する。
【0122】 0000 0000 0000 0000 0000 0000 0000 1111 最後に、算術論理装置230はブール組合わせB&Cを
形成する。これにより抽出されたフィールドは次のよう
になる。 0000 0000 0000 0000 0000 0000 0000 1100 複数フラグレジスタ211は種々の画像及びグラフィッ
クス処理動作に有用である。これらの動作は2つのクラ
スに分類される。複数フラグ動作の第1のクラスは、算
術論理装置230の単一のパスを必要とする。複数フラ
グレジスタ211内にある数がロードされ、拡張回路2
38、マルチプレクサCmux 233及び算術論理装
置230のCポートを介して算術論理装置230の演算
を制御する。これらの単一パス動作の例は色拡張であ
る。第1パス中に、算術論理装置230の0結果の桁上
げに基づいて若干のビットが複数フラグレジスタ211
内にセットされる。第2パス中に、複数フラグレジスタ
211の内容が、拡張回路238、マルチプレクサCm
ux 233及び算術論理装置230のCポートを介し
て算術論理装置230の演算を制御する。これらの2パ
ス複数フラグ動作は、複数算数を使用する場合に特に有
用である。多くの一致及び比較、透過、最小、最大、及
び飽和演算がこの第2のクラスに入る。
【0123】基本グラフィックス動作は、1ビット/画
素形状記述を画素サイズ量に変換することである。メモ
リ空間を保存するために、ビット写像された本文字体の
形状を1ビット/画素の形状として記憶することが多
い。次いでこれらの形状は、表示メモリ内に写す時に所
望の色(1もしくは複数)に“拡張”される。一般的に
は、形状記述子内の“1”は“1色”を選択し、形状記
述子内の“0”は“0色”を選択する。広く使用されて
いる代替は、形状記述子内に場所取りもしくは透明な画
素として働く“0”を有している。以下の例は、このよ
うな形状記述子データの4ビットを8ビット画素に変換
するものである。この例では、複数算術演算のデータサ
イズは8ビットである。従って、算術論理装置230
は、4つの独立した8ビット区分で動作する。記述子デ
ータの4ビット“0110”が複数フラグレジスタ21
1内へロードされる。 XXXXXXXX XXXXXXXX XXXXXXXX XXXX0110 “X”で示されているビットは、色拡張演算には含まれ
ていないドントケアビットである。拡張回路238は、
複数フラグレジスタ211内のこれらの4ビットを以下
のように8ビットの“1”及び“0”のブロックに拡張
する。
【0124】00000000 11111111 11111111 00000000 1色は、 32 ビットデータワード内の4画素毎に繰り返
して算術論理装置230のAポートへ供給される。 11110000 11110000 11110000 11110000 0色は、これもまた4画素毎に繰り返して算術論理装置
230のBポートへ供給される。 10101010 10101010 10101010 10101010 算術論理装置230はブール組合わせ(A&C)|(B
&〜C)を形成して次の結果を得る。 10101010 11110000 11110000 10101010 色拡張は画素ブロック転送( PixBlt )アルゴリズムと
共に広く使用されている。完全画素ブロック転送を遂行
するためには、拡張すべきデータ内のビットを行先ワー
ドの画素整列と整列させるようにデータを回転させ、先
行データと併合させなければならない。バレル回転子2
35及び算術論理装置230は、ワードを複数フラグレ
ジスタ211内に整列させることができる。この例で
は、例を簡単にするために、形状記述子データが適切に
整列されているものとする。複数フラグレジスタ211
は、ビットをセットし、ビットを使用することによって
それ自身の回転能力を有していることにも注目された
い。従って、 32 ビットワードを複数フラグレジスタ2
11内にロードし、上記命令を8回繰り返して 32 の拡
張された画素を生成することができる。
【0125】上例のような単純な色拡張は、結果をむら
のない2つの色の一方にする。特に矩形の箱が重なり得
る飾り付き本文文字では、形状記述子内の“1”を1色
に拡張するが、“0”を場所取りもしくは透明画素とし
て役立たせることが望ましいことが多い。このような透
明色を移動させる場合、行先画素値は不変である。デー
タユニット110は、単純に元の行先の内容を含むレジ
スタを0値入力として使用することによって、透明色拡
張を遂行することができる。この例を以下に示す。算術
論理装置230は、前記色拡張例と同一の機能を遂行す
る。唯一の差は、元の行先が算術論理装置230への入
力の1つになることである。記述子データの4ビット
“0110”が複数フラグレジスタ211内へロードさ
れる。 XXXXXXXX XXXXXXXX XXXXXXXX XXXX0110 拡張回路238は、複数フラグレジスタ211内の4ビ
ットを、以下のようにして8ビットの“1”及び“0”
のブロックに拡張する。 00000000 11111111 11111111 00000000 1色が、 32 ビットデータワード内の4画素毎に繰り返
して算術論理装置230のAポートに供給される。
【0126】11110000 11110000 11110000 11110000 元の行先データは算術論理装置230のBポートに供給
される。元の行先データは4画素を含む。 11001100 10101010 11101110 11111111 算術論理装置230は、再びブール組合わせ(A&C)
|(B&〜C)を形成して次の結果を得る。 11001100 11110000 11110000 11111111 この結果は、複数フラグレジスタ211内の“1”に対
応する画素の1色と、複数フラグレジスタ211内の
“0”に対応する元の画素値とを含むことに注目された
い。データユニット110は、一連の8ビット量と固定
された比較値との正確な一致に基づいて、1ビット/画
素マスクを生成することができる。これを以下の例で示
す。比較値は 32 ビットワード内で4 回繰り返される。
算術論理装置230は、繰り返される比較値を、4つの
8ビット量を有するデータワードから減算する。この減
算中、算術論理装置は8ビットずつの4区分に分割され
る。図7に示す0検出器321、322、323及び3
24は、複数フラグレジスタ211内に記憶させるべき
データを供給する。この例は、回転複数フラグレジスタ
211によって累積することを示すために、ある行内に
2つの命令を含む。始めは、複数フラグレジスタ211
はドントケアデータを記憶している。
【0127】XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX 比較のための第1の量は 00000011 00001111 00000001 00000011 である。比較値は“00000011”である。これは
32 ビットデータワード内で4回繰り返される。 00000011 00000011 00000011 00000011 算術論理装置230は比較値を第1の量から減算する。
結果の差は、 00000000 00001100 11111110 00000000 になる。これは複数フラグレジスタ211内に記憶され
る以下の0比較“1001”を形成する。この例では、
複数フラグレジスタ211は0結果を記憶する前に事前
にクリアされている。従って複数フラグレジスタ211
は、 00000000 00000000 00000000 00001001 である。比較のための第2の量は、 00000111 11111100 00000011 00000000 である。同一比較値の第2の減算の結果は、 00000100 11111001 00000000 11111101 になる。これは、4位置の回転の後に複数フラグレジス
タ211内に記憶される新しい0比較“0010”を形
成する。
【0128】00000000 00000000 00000000 10010010 複数フラグレジスタ211が 32 ビットを記憶するま
で、同じようにして付加的な比較を行うことができる。
次いで複数フラグレジスタ211の内容を別のレジスタ
へ移動させるか、もしくはメモリへ書き込むことができ
る。しきい値検出は、画素値と固定されたしきい値とを
比較することを含む。しきい値検出は、画素値が固定し
きい値より大きいか、もしくは小さいかを表す画素毎に
1ビット値をセットする。特定の応用に依存して、「ケ
ース( case )に等しい」が「ケースより大きい」、もし
くは「ケースより小さい」の何れかとグループ化され
る。データユニット110は、単一の算術論理装置サイ
クル中にこの比較結果を形成するようにプログラムする
ことができる。算術論理装置230は被試験量と固定さ
れたしきい値との間の差を形成する。算術論理装置23
0の各区分からのキャリーアウトは複数フラグレジスタ
211内に保管される。もし被試験量Iがそれから差し
引かれる固定しきい値Tを有していれば、IがTより大
きいか、もしくは等しい場合に限ってキャリーアウトが
発生する。前述したように、算術論理装置230は2の
補数の加算によって減算を遂行し、これらの環境の下で
はこのキャリーアウトは「借り」を指示しているのでは
ない。以下に示すのは、4つの8ビット量の場合のこの
処理の例であって、しきい値は“00000111”で
あるとする。4つの被試験8ビット量が、 00001100 00000001 00000110 00000111 であるものとしよう。 32 ビットワード内に4回繰り返
されるしきい値Tは、 00000111 00000111 00000111 00000111 である。差は、 00000101 11111010 11111111 00000000 であり、これが次のようなキャリーアウト“1001”
を発生する。これにより複数フラグレジスタ211に、 XXXXXXXX XXXXXXXX XXXXXXXX XXXX1001 をもたらす。一致検出の場合と同様に、 32 ビットが形
成されるまで、この単一命令は複数フラグレジスタの回
転に伴って繰り返される。
【0129】符号のない2つの数を加算する場合のキャ
リーアウトは、その結果が、その結果のビットの数で表
すことができるより大きいことを表している。このキャ
リーアウトは、精密な結果の最上位ビットを表す。従っ
て、キャリーアウトの複数フラグレジスタ211内への
保管は、精密さを維持するために使用することができ
る。これらのキャリーアウトビットは、爾後の加算にお
ける精密さを維持するために保管することができる。特
に複数算術と共に使用する場合には、精密さをより少な
いビットに制限することによって、より少ない算術論理
装置サイクルで同一のプロセスを遂行することができ
る。第2の型の複数フラグ動作は、複数フラグレジスタ
211内へのビットのセッティングと、算術論理装置2
30の演算を制御するために複数フラグレジスタ211
内に記憶されたビットの使用との両者を使用する。複数
算術は、複数並行バイト、もしくはハーフワード演算を
遂行するために、それを複数フラグレジスタと組合わせ
て使用することができる。更に、複数フラグレジスタ2
11内へのビットのセッティング、及び複数フラグレジ
スタ211の算術論理装置230への拡張は、複数の異
なる手法で使用することが可能な逆空間変換である。
【0130】以下の例は、透過( transparency )機能を
遂行するために、8ビット複数算術命令と、それに続く
拡張を使用する命令との組合わせを示す。透過は、矩形
ではない形状の矩形画素ブロック転送( PixBlts ) を遂
行する時に広く使用されている。透明画素は、行先に影
響を与えない場所取り画素として使用されるので透明な
のであり、従って元の行先は透けて見える。透過を使用
すると、源内の透明コードに等しくない画素だけが行先
内に置換される。第1命令では、透明カラーコードが源
から減算され、複数フラグレジスタ211は等0に基づ
いてセットされる。もし所与の8ビット量が透明コード
に一致すれば、対応する“1”が複数フラグレジスタ2
11内にセットされる。第2命令は、拡張回路238を
使用して源もしくは行先の画素毎の選択を制御するため
に複数フラグレジスタ211を拡張する。算術論理装置
230は、この選択を行うために機能(A&C)|(B
&〜C)を遂行する。このブール機能をビット毎に遂行
している間に、複数フラグレジスタ211は8の画素サ
イズに拡張されており、従ってそれは画素の間を選択す
る。画素源は、 00000011 01110011 00000011 00000001 である。透明コードTCは“00000011”であ
る。 32 ビットワードを充填するために4回繰り返す
と、これは、 00000011 00000011 00000011 00000011 になる。差SRC−TCは、 00000000 01110000 00000000 11111110 である。これは0検出ビット“1010”を発生する。
従って複数フラグレジスタ211は、 XXXXXXXX XXXXXXXX XXXXXXXX XXXX1010 を記憶する。第2命令において、拡張回路238は複数
フラグレジスタ211を 11111111 00000000 11111111 00000000 に拡張する。元の行先DESTは、 11110001 00110011 01110111 11111111 である。元の源SRCは算術論理装置230への第3命
令を形成する。それにより算術論理装置230は、ブー
ル組合わせ(DEST&@MF)|(SRC&〜@M
F)である 11110001 00010011 01110111 00000001 を形成する。この結果は源が透明ではない場合の源の状
態を有し、そうでない場合には行先の状態を有している
ことに注目されたい。これが透過機能である。
【0131】データユニット110は、複数フラグレジ
スタ211及び2算術論理装置サイクルを使用して、最
大及び最小機能を遂行することができる。最大機能は、
符号のない2つの画素値の大きい方を結果として取る。
最小機能は、符号のない2つの画素値の小さい方を結果
として取る。これらの演算では、第1命令は複数減算を
遂行し、キャリーアウトに基づいて複数フラグレジスタ
211をセットする。従って、状態をセットするために
算術論理装置230はOP1−OP2を形成する。この
第1命令は複数フラグレジスタ211をセットするだけ
であり、得られた差は廃棄される。最大機能を遂行する
場合、第2命令、算術論理装置230は演算(OP1&
@MF)|(OP2&〜@MF)を遂行する。これは個
々の画素の最大を形成する。第1オペランドOP1が 00000001 11111110 00000011 00000100 であるものとし、第2オペランドOP2が 00000011 00000111 00000111 00000011 であるものとすれば、差OP1−OP2は、 11111110 11110111 11111100 00000000 である。これはキャリーアウト(非借り)“0101”
を発生し、複数フラグレジスタ211は、 XXXXXXXX XXXXXXXX XXXXXXXX XXXX0101 にセットされる。第2命令では、複数フラグレジスタ2
11内の4つの最下位ビットが拡張回路238によって
拡張され、次のようにされる。
【0132】00000000 11111111 00000000 11111111 算術論理装置230はブール機能(OP1&@MF)|
(OP2&〜@MF)を遂行する。これは次の結果を発
生する。 00000011 11111110 00000111 00000100 結果の各8ビット区分が、OP1及びOP2の対応する
区分の大きい方の状態を有していることに注目された
い。これが最大機能である。最小機能は、第2命令にお
いて算術論理装置230がブール機能(OP1&〜@M
F)|(OP2&@MF)を遂行することを除いて、上
記最大機能と同じように演算される。このブール機能
は、各8ビット区分の大きい方の量ではなく、小さい方
の量を選択する。データユニット110は、「飽和を伴
う加算( add-with-saturate ) 」機能を遂行することも
できる。飽和を伴う加算機能は、あふれが発生すること
以外は通常の加算と同じような演算である。あふれが発
生した場合には、飽和を伴う加算機能は結果を全て
“1”にクランプする。飽和を伴う加算機能は、最高数
のあふれから得られる小さい整数を低い数に戻し続ける
ために、グラフィックス及び画像処理において広く使用
されている。以下に、2つの命令で4つの8ビット画素
に対する複数算術を使用して飽和を伴う加算機能を形成
する例を示す。先ず複数フラグレジスタ211内に記憶
されているキャリーアウトとの加算が行われる。“1”
のキャリーアウトはあふれを表し、従ってその和は飽和
した値である全て“1”にセットされるべきである。拡
張回路238は和もしくは飽和した値の選択を制御する
ために複数フラグレジスタ211を拡張する。第1オペ
ランドOP1は、 00000001 11111001 00000011 00111111 である。第2オペランドOP2は、 11111111 00001011 00000111 01111111 である。算術論理装置230は和OP1+OP2=結果
を形成し、 00000000 00000100 00001010 10111110 をもたらす。これは“1100”のキャリーアウトに対
応する。これらは複数フラグレジスタ211内に記憶さ
れる。
【0133】XXXXXXXX XXXXXXXX XXXXXXXX XXXX1100 第2命令では、拡張回路238が複数フラグレジスタ2
11の4つの最下位ビットを拡張する。 11111111 11111111 00000000 00000000 算術論理装置230はブール機能「結果|@MF」を遂
行して、 11111111 11111111 00001010 10111110 を形成する。第2命令の結果は、和があふれない時には
その和に等しく、また和があふれた時には“11111
111”に等しいことに注目されたい。データユニット
110は、同じように「飽和を伴う減算」機能を遂行す
ることができる。飽和を伴う減算機能は下位桁あふれが
発生すること以外は通常の減算のような減算である。下
位桁あふれが発生する場合、飽和を伴う減算機能は結果
を全て“0”にクランプする。飽和を伴う減算機能もグ
ラフィックス及び画像処理において広く使用することが
できる。データユニット110は、上述した飽和を伴う
加算機能と同じようにして飽和を伴う減算機能を遂行す
る。先ず減算が遂行されてキャリーアウトが複数フラグ
レジスタ211内に記憶される。“0”のキャリーアウ
トは借りを、従って下位桁あふれを表す。この場合に
は、差は飽和した値である全て“0”にセットすべきで
ある。次いで拡張回路238は、差もしくは飽和した値
の選択を制御するために、複数フラグレジスタ211を
拡張する。この第2命令中に、算術論理装置230はブ
ール機能「結果&@MF」を遂行する。これによりもし
対応するキャリーアウトが“0”であれば、ブール組合
わせを強制的に“0”にし、それによって差を全て
“0”に飽和させる。一方もし対応するキャリーアウト
が“1”であればブール組合わせは「結果」と同一であ
る。
【0134】図18に、デジタル画像/グラフィックス
プロセッサ71、72、73及び74のための命令ワー
ドのフォーマットを示す。この命令ワードは 64 ビット
を有し、図18に示すようにこれらのビットは一般に2
つの並列区分に分割される。命令ワードの最上位 25 ビ
ット(ビット63−39)は、データユニット110が
遂行する動作の型を指定する。命令ワードの最下位 39
ビット(ビット38−0)は、データユニット110の
動作と並行して遂行されるデータ転送を指定する。デー
タユニット110の動作には5つのフォーマットA、
B、C、D及びEが存在する。データ転送フォーマット
には10の型1乃至10が存在する。命令ワードは、デ
ータ転送を指定する代替として 32 ビット即値を指定す
ることができる。 32 ビット即値を指定する場合には、
命令ワードは上述したように2つの区分に分割されるこ
とはなく、これは一般的な規則の例外である。多くの命
令がデータユニット110を使用しない動作を遂行す
る。これらの命令によって、命令に依存して並列データ
転送動作を許可したり、もしくは並列データ転送動作を
禁止したりすることができる。他の関連においては、デ
ータユニット110のために指定される動作はデータ転
送に関して指定される動作とは無関係である。
【0135】代替命令ワードを以下に要約する。データ
ユニット110の動作は、単一算術論理装置演算もしく
は単一複数演算であることができ、もしくは各々の一つ
を並列に遂行することができる。データユニット110
の全ての動作は、命令ワード内のあるフィールドに基づ
いて条件付きとすることができる。並列データ転送は、
メモリへの及びメモリからの両方もしくは何れか一方に
対してデータポートユニット140のローカルポート1
41及び大域ポート145上で遂行される。2つのデー
タ転送動作は、命令ワード内に独立的に指定される。 1
2 のアドレス指定モードは、レジスタもしくはオフセッ
ト指標の選択を伴ってメモリアクセス毎に支援される。
データユニット110内の内部レジスタからレジスタへ
の転送は、大域ポート145を通してのメモリアクセス
の代わりに、命令ワード内に指定することができる。デ
ータユニット110の動作が、源もしくは行先としてデ
ータユニット外のレジスタを使用する場合には、命令ワ
ードのある並列データ転送区分が付加的なレジスタ情報
を指定し、大域ポート源データバスGSRC 105及
び大域ポート行先データバスGDST 107がデータ
をデータユニット110へ、及びデータユニット110
から転送する。
【0136】通常ローカルバスデータ転送を指定する命
令ワードの一部は、代替使用を有している。この代替使
用によって、データユニット110の条件付き動作、及
び大域メモリアクセス両方もしくは何れか一方、もしく
はレジスタ間移動を可能にする。データユニット110
の動作中に、制限された条件付き源選択が支援される。
データユニット110の結果は条件付きで保管されるか
もしくは廃棄され、動作を分岐させずに条件付きで遂行
させることが有利である。状態レジスタ210の個々の
各ビットの更新も条件付きで選択することができる。メ
モリへの条件付き記憶は、2つのレジスタの一方を選択
することである。メモリからのロードはデータをロード
するか、廃棄するかの何れかである。条件付きレジスタ
間移動はデータを行先へ書き込むか、廃棄するかの何れ
かである。図18の命令ワードの型の説明、及び5つの
データユニット動作のフォーマットの種々のビット及び
フィールドの用語説明は次のようである。ビット及びフ
ィールドは、命令ワードを限定するだけではなく、指定
された論理関係に従って命令ワードを復号する回路をも
限定する。命令ワードの特定のビットもしくはフィール
ドもしくは論理組合わせに応答するこの回路は、提示さ
れた1もしくは複数の特定の動作を遂行する。従ってこ
の技術においては、ビット、フィールド、フォーマット
及び動作の指定が好ましい実施例の重要且つ有利な特色
を限定し、またこれらの命令ワードを復号もしくは実現
する対応論理回路を指定する。この回路はこの明細書か
ら当業者によって直ちにプログラム可能論理アレイ(P
LA)内に、もしくは現在知られているまたは今後考案
される他の回路形状内に実現される。論理演算組合わせ
の説明にの前に命令ワードフォーマットを説明する。
【0137】データユニットフォーマットAは、ビット
63=“1”及びビット44=“0”によって識別され
る。データユニットフォーマットAは、5ビット即値を
有する基本算術論理装置演算を指定する。“クラス”フ
ィールド(ビット62−60)は算術論理装置230に
対するデータユニット110内のデータ経路指定を指示
する。表18は、データユニットフォーマットA、B及
びCのための“クラス”フィールドの定義を示す。 表 18 クラス フィールド 6 6 6 マスク2 1 0 入力 A 入力 B 入力 C 発生器 回 転 0 0 0 src2 / im src 1 @MF − 0 0 0 1 dstc src 1 src2 / im − D0(4-0) 0 1 0 dstc src 1 mask src2 / im 0 0 1 1 dstc src 1 mask src2 / im src2 / im 1 0 0 src2 / im src 1 mask D0(4-0) D0(4-0) 1 0 1 src2 / im src 1 @MF − D0(4-0) 1 1 0 dstc src 1 src2 / im − 0 1 1 1 src 1 Hex “1” src2 / im − src2 / im 表18において、入力Aは入力Aバス241のためにA
mux 232によって選択された源である。源“sr
c2/im”は、データユニットフォーマットA内の
“即値”( immed ) フィールド(ビット43−39)の
5ビットの即値か、データユニットフォーマットB内の
“src2”フィールド(ビット41−39)によって
指示されたデータレジスタ200か、もしくはデータユ
ニットフォーマットC内の“32ビット即値”フィール
ド(ビット31−0)の何れかである。源“dstc”
は、算術論理装置230結果の行先に対するコンパニオ
ンデータレジスタ200である。このコンパニオンデー
タレジスタ200は、“0110”に等しい上側4ビッ
トを用いたレジスタ指定を有しており、それによってデ
ータレジスタ200の1つを指定し、また“dst”フ
ィールド(ビット50−48)によって指定された下側
3ビットを有している。コンパニオンレジスタは、行先
のレジスタバンクを指定するための“Adstbnk”
フィールド(ビット21−18)と、入力Bのレジスタ
バンクを指定するための“As1bank”(ビット9
−6)とを使用する転送フォーマット6及び10と共に
使用される。これは、行先がデータレジスタ200の1
つではないことから、長距離行先として知られる。従っ
て1つの源と行先は、同一のレジスタ番号を有する異な
るレジスタバンクを有することができる。表19は、
“Adstbnk”フィールド内に指定されているレジ
スタバンクに基づく種々の他のデジタル画像/グラフィ
ックスプロセッサレジスタに対するコンパニオンレジス
タを示す。どのような他の転送フォーマットを使用して
も、この源レジスタは“dst”フィールドによって指
定されたレジスタ番号を有するデータレジスタ200で
あることに注目されたい。 表 19 コンパニオンデータレジスタ Adstbnk | D0 D1 D2 D3 D4 D5 D6 D7 0 0 0 0 A0 A1 A2 A3 A4 -- A6 A7 0 0 0 1 A8 A9 A10 A11 A12 -- A14 A15 0 0 1 0 X0 X1 X2 -- -- -- -- -- 0 0 1 1 X8 X9 X10 -- -- -- -- -- 0 1 0 0 D0 D1 D2 D3 D4 D5 D6 D7 0 1 0 1 -- SR MF -- -- -- -- -- 0 1 1 1 CALL BR IPS IPRS INTEN INTFLG COMM LCTL 1 1 0 0 LCO LC1 LC2 -- LR0 LR1 LR2 -- 1 1 0 1 LRSE0 LRSE1 LRSE2 -- LRS0 LRS1 LRS2 -- 1 1 1 0 LS0 LS1 LS2 -- LE0 LE1 LE2 -- 1 1 1 1 -- -- -- -- TAG0 TAG1 TAG2 TAG3 表19において、“--”は保留されたレジスタを表す。
表19には、レジスタバンク“0110”、“100
0”、“1001”、“1010”もしくは“101
1”がリストされていないことに注意されたい。これら
のバンク内の全てのレジスタは保留されているか、もし
くはエミュレーション機能に割り当てられ、始めから長
距離行先には使用されていない。
【0138】表18の“入力B”は、入力Bバス242
へ供給するバレル回転子235のための源である。“s
rc1”で指示されている“入力B”源は、データユニ
ットフォーマットA及びB内の“src1”フィールド
(ビット47−45)によって、もしくはデータフォー
マットCにおいて、データユニット内の 64 の下側のア
ドレス可能なレジスタの中の何れであってもよい“sr
c1”フィールド(ビット47−45)のレジスタ番号
によって示されているデータレジスタ200である。
“入力B”のための“Hex1”源は、バッファ236
からの“1”に等しい 32 ビットの定数である。表18
において、“入力C”は入力Cバス243のためにCm
ux 233によって選択された源である。“入力C”
源“@MF”は、状態レジスタ210の“MSIZE”
フィールド(ビット5−3)に従って拡張回路238に
よって拡張された複数フラグレジスタ211からの1も
しくはそれ以上のビットである。状態レジスタ210の
“MSIZE”フィールドの行先に関する表2を参照さ
れたい。“src”/im”源に関しては、“入力A”
について説明済である。“マスク”源はマスク発生器2
39の出力である。表18の“マスク発生器”は、マス
ク発生器のためにMmux 234が選択した源であ
る。この源は上記“src”/im”であっても、もし
くはデータレジスタD0の“DBR”フィールド(ビッ
ト4−0)の省略時バレル回転量である“D0(4−
0)”であってもよい。表18の“回転”は、バレル回
転子235の回転量を制御するためにSmux 231
によって選択された源である。この源は、回転を生じさ
せない“0”であっても、またはデータレジスタD0の
“DBR”フィールド(ビット4−0)の省略時バレル
回転量である“D0(4−0)”であっても、もしくは
上記“src”/im”であってもよい。
【0139】“ari”ビット(ビット59)は、デー
タユニット110の算術論理装置230を、算術演算に
使用するのか、もしくはブール論理演算に使用するのか
を指示する。もし“ari”ビットが“1”であれば算
術演算が行われ、もし“0”であればブール論理演算が
行われる。データユニットフォーマットAは、算術論理
装置230の演算を命令ワードによって指定することが
できる。“8ビットALUコード”フィールド(ビット
58−51)は算術論理装置230が遂行する演算を指
示する。このフィールドはもし“ari”ビットが
“1”であれば算術演算を指示する。もし“1”であれ
ば、“8ビットALUコード”ビット57、55、53
及び51は、表6に従う“8ビットALUコード”ビッ
ト58、56、54及び52からなる“FMOD”によ
って変更された表14に従う算術演算を指示する。もし
“ari”ビットが“1”であればそれはブール演算で
あり、“8ビットALUコード”フィールドは表13に
従って機能信号F7−F0に翻訳する。これらの符号化
の詳細はデータユニット110の説明において説明済で
ある。データユニットフォーマットAは、算術論理装置
230のための2つの源及び1つの行先を指示する。
“dst”フィールド(ビット50−48)は、あるレ
ジスタを算術論理装置230のための行先として指示す
る。転送フォーマットに依存して長距離レジスタを指定
するために、この“dst”フィールドをレジスタ番号
によってデータレジスタ200の1つと称することもで
きるし、もしくはこの“dst”フィールドのレジスタ
番号をレジスタバンクと共に使用することもできる。
“src1”フィールド(ビット47−45)は、ある
レジスタを算術論理装置230のための第1の源として
指示する。これは、長距離レジスタを指定するために転
送フォーマットに依存して、データレジスタの1つであ
っても、もしくはレジスタバンクと共に使用してもよ
い。“即値”フィールド(ビット43−39)は、算術
論理装置230のために第2の源として使用される5ビ
ット即値を指示する。使用する場合、この5ビット即値
は 32 ビットに0拡張される。レジスタバンクの使用に
関しては、以下の転送フォーマットの説明と共に詳述す
る。
【0140】結果を行先レジスタ内に記憶するのは、
“条件”( cond )フィールド内に記されている条件が真
である場合に限って発生する。“条件”フィールド(ビ
ット35−32)は条件付き演算のための条件を指示す
る。この“条件”フィールドは一般に転送フォーマット
のために使用される命令ワードの部分に入っていること
に注目されたい。転送フォーマット7、8、9及び10
はこのフィールドを含む。従って算術論理装置230の
結果の条件付き記憶は、これらの転送フォーマットが使
用される場合に限って発生する。好ましい実施例におい
ては、“条件”フィールドは以下の表20に示すように
復号される。 表 20 条件フィー ルドビット 簡略記号 条件記述 比較される状態ビット 0000 u 無条件 −−− 0001 p 正 〜N&〜Z 0010 ls より低いか等しい 〜C|Z 0011 hi より高い C&〜Z 0100 lt より小さい (N&〜V)| (〜N&V) 0101 le より小さいか等しい (N&〜V)| (〜N&V)|Z 0111 gt より大きい (N&V)| (〜N&〜V&〜Z) 1000 hs,c より低い、桁上げ C 1001 lo,nc より高いか同じ、 〜C 桁上げなし 1010 eq,z 等しい、0 Z 1011 ne,nz 等しくない、非0 〜Z 1100 v あふれ V 1101 nv あふれなし 〜V 1110 n 負 N 1111 nn 非負 〜N これらの条件は状態レジスタ210を参照して検出され
る。前述したように、状態レジスタ210は、算術論理
装置230の出力の条件に関連する幾つかのビットを記
憶している。これらの条件は、負、桁上げ、あふれ、及
び0を含む。状態レジスタ210に関連する算術論理装
置230の条件付き演算の詳細は、データユニット11
0に関して説明済である。
【0141】データユニットフォーマットBは、ビット
63=“1”、ビット44=“0”によって認識され
る。データユニットフォーマットBは、算術論理装置2
30の第2の源のために指定されたレジスタを伴う基本
算術論理装置演算を指定する。“クラス”フィールド
は、表18で説明したように、データユニット110内
のデータ経路指定を指示する。“ari”ビットは、デ
ータユニット110の算術論理装置230を算術演算の
ために使用するのか、もしくはブール論理演算のために
使用するのかを指示する。“8ビットALUコード”フ
ィールドは、前述したような手法で算術論理装置230
が遂行する演算を指示する。“src2”フィールド
(ビット41−39)は、データレジスタ200の1つ
を算術論理装置230のための第2の源として指示す
る。データユニットフォーマットBでは、算術論理装置
230のための第2の源は“src2”フィールド内に
指示されているデータレジスタである。若干のデータ転
送フォーマットは、第1の源及び算術論理装置230の
行先のためのレジスタのバンクを指示することを許す。
他の面においては、データユニットフォーマットBは、
データユニットフォーマットAと同一である。
【0142】データユニットフォーマットCは、ビット
63=“1”、ビット44=“1”及びビット43=
“1”によって認識される。データユニットフォーマッ
トCは、 32 ビット即値フィールドを伴う基本算術論理
装置演算を指定する。“クラス”フィールドは、表18
で説明したように、データユニット110内のデータ経
路指定を指示する。“ari”ビットは、データユニッ
ト110の算術論理装置230を算術演算のために使用
するのか、もしくはブール論理演算のために使用するの
かを指示する。“8ビットALUコード”フィールド
は、前述したような手法で算術論理装置230が遂行す
る演算を指示する。第1の源は“src1”フィールド
によって指示されているデータレジスタである。第2の
源は“32ビット即値”フィールドの 32 ビット即値で
ある。このデータユニットフォーマットは、並行データ
転送のための余地を残さず、従ってそのための何者をも
許さない。“dstbank”フィールド(ビット42
−39)は、データユニット110内のレジスタのバン
クを指示する。“dstbank”フィールドは、デー
タユニット110内の 64 のレジスタの何れかを算術論
理装置230の行先として指示するために、“dst”
フィールド(ビット50−48)と共に使用される。
“s1bnk”フィールド(ビット38−36)は、デ
ータユニット110内のレジスタのバンクを指示する。
この指示は、データユニット110のレジスタの下側半
分に制限され、データユニット110の 64 の下側半分
のレジスタの何れかを算術論理装置230のための第1
の源として指示するために“src1”と共に使用され
る。演算は、以下に説明する手法で“条件”フィールド
(ビット35−32)に基づいて条件付きにすることが
できる。
【0143】データユニットフォーマットDは、ビット
63=“1”、ビット44=“0”、“クラス”フィー
ルドが“000”、ビット59=“1”(これは通常
は、ブール論理演算に対抗する算術を選択する)、及び
“8ビットALUコード”のビット57、55、53及
び61が全て“0”である。データユニットフォーマッ
トDは、非算術論理装置演算を指定する。“演算”フィ
ールド(ビット43−39)は非算術論理装置演算を指
示する。好ましい実施例では、この“演算”フィールド
は次の表21に示すように復号される。 表 21 演算フィールド 4 4 4 4 3 3 2 1 0 9 非ALU演算 0 0 0 0 0 演算なし 0 0 0 0 1 遊休 0 0 0 1 0 大域割り込み可能化 0 0 0 1 1 大域割り込み不能化 0 0 1 0 0 命令取り込みの同期をロック 0 0 1 0 1 命令取り込みの同期のロックを解除 0 0 1 1 0 保留 0 0 1 1 1 Dレジスタを1右へ回転 0 1 0 0 0 空白 0 1 0 0 1 命令実行中断 0 1 0 1 0 保留 0 1 0 1 1 保留 0 1 1 0 0 エミュレータ割り込みへgo to 0 1 1 0 1 エミュレータ割り込み発行1 0 1 1 1 0 エミュレータ割り込み発行2 0 1 1 1 1 保留 1 X X X X 保留 非算術論理装置命令空白、命令実行中断、エミュレータ
割り込みへgo to、エミュレータ割り込み発行1及
びエミュレータ割り込み発行2は並行データ転送を禁止
する。命令ワード内に指定された如何なる並行データ転
送も無視される。他の非算術論理装置命令は、並行デー
タ転送を許容する。
【0144】データユニットフォーマットEは、ビット
63−61が“011”であることによって認識され
る。データユニットフォーマットEは、並列算術論理装
置及び乗算演算を指定する。このフォーマットでは6オ
ペランドが指定されるから、これらの演算は“6オペラ
ンド演算”と呼ばれる。好ましい実施例では、“演算”
フィールド(ビット60−57)は、次の表22に示す
演算を指定する。記号“‖”は、リストされた演算がデ
ータユニット110内で並行して発生することを意味す
る。考え得る 16 の演算の中の 13 だけが定義されてい
ることに注目されたい。 表 22 演算フィールドビット 6 5 5 5 6オペランド演算 0 9 8 7 0 0 0 0 MPYS‖加算 0 0 0 1 MPYS‖減算 0 0 1 0 MPYS‖EALUT 0 0 1 1 MPYS‖EALUF 0 1 0 0 MPYU‖加算 0 1 0 1 MPYU‖減算 0 1 1 0 MPYU‖EALUT 0 1 1 1 MPYU‖EALUF 1 0 0 0 EALU‖回転 1 0 0 1 EALU%‖回転 1 0 1 0 DIVI 1 0 1 1 保留 1 1 0 0 保留 1 1 0 1 保留 1 1 1 0 保留 1 1 1 1 保留 これらの演算の簡略記号に関しては説明済であるが、復
習のために要約する。MPYS‖加算は並行符号付き乗
算及び加算を表し、MPYS‖減算は並行符号付き乗算
及び減算を表し、MPYS‖EALUTは並行符号付き
乗算及び拡張算術論理装置真演算を表し、MPYS‖E
ALUFは並行符号付き乗算及び拡張算術論理装置偽演
算を表し、MPYU‖加算は並行符号なし乗算及び加算
を表し、MPYU‖減算は並行符号なし乗算及び減算を
表し、MPYU‖EALUTは並行符号なし乗算及び拡
張算術論理装置真演算を表し、MPYU‖EALUFは
並行符号なし乗算及び拡張算術論理装置偽演算を表し、
EALU‖回転は別々に記憶されるバレル回転子235
の出力を伴う拡張算術論理装置演算を表し、EALU%
‖回転は別々に記憶されるバレル回転子235の出力を
伴いマスク発生器239が生成するマスクを使用する拡
張算術論理装置演算を表し、そしてDIVIは除算に使
用される分割繰り返し演算を表す。MPYx‖EALU
Tは命令における算術論理装置演算は、データレジスタ
D0の“EALU”フィールド(ビット19−26)に
よって選択され、“A”ビット(ビット27)は算術演
算もしくは“FMOD”フィールド(ビット31−2
8)によって変更された論理演算の何れかを選択する。
これらのフィールドのコーディングも説明済である。M
PYx‖EALUFは命令における算術論理装置演算
は、“EALU”フィールドビットのセンスが反転され
ることを除いて、同様に選択される。EALU及びEA
LU%命令に対する算術論理装置演算も同様に選択され
る。これらの演算はデータユニット110のデータレジ
スタD0の一部を使用して算術論理装置演算を指定す
る。データレジスタD0は、所望の拡張算術論理装置演
算コードで事前にロードされる。DIVI演算に関して
は後述する。どのようなデータ転送フォーマットも、デ
ータユニット110の演算と並行してに指定することが
できる。
【0145】6オペランドはデータユニットフォーマッ
トE内に指定される。4つの源及び2つの行先が存在す
る。“src3”フィールド(ビット56−54)はデ
ータレジスタ200の1つを第3の源として指示する。
これは、もし乗算演算が指定されていれば乗算器220
への第1入力であり、指定されていなければこれはバレ
ル回転子235のバレル回転量である。“dst2”フ
ィールド(ビット53−51)はデータレジスタ200
の1つを第2の源として指示する。もし命令が乗算演算
を指定していれば、“dst2”は乗算器220のため
の行先である。指定されていなければ“dst2”はバ
レル回転子235の出力の行先である。“dst1”フ
ィールド(ビット50−48)は、データレジスタ20
0の1つを算術論理装置230のための行先として指示
する。“src1”フィールド(ビット47−45)は
あるレジスタを算術論理装置230の第1入力として指
示する。もしこの命令が、“As1bank”フィール
ド(ビット9−6)を含む転送フォーマット6または1
0を含んでいれば、このレジスタ源はデータユニット1
10内のレジスタの何れかであることができ、“As1
bank”フィールドはレジスタバンクを指示し、“s
rc1”フィールドはレジスタ番号を指示する。この場
合、このデータはバレル回転子235によって回転させ
ることはできない。これは長距離算術論理装置演算と呼
ばれる。他の転送フォーマットの場合には、“src
1”フィールドはレジスタ番号によってデータレジスタ
200の1つを指定する。転送フォーマット7、8、9
及び10は、レジスタ源を、状態レジスタ210の
“N”ビットに基づいて1対のデータレジスタ200か
ら条件付きで選択可能にする。もし状態レジスタ210
の“N”ビット(ビット31)が“1”であれば、指示
されたデータレジスタが算術論理装置230のための第
1の源として選択される。もし“N”ビットが“0”で
あれば、少ないレジスタであるデータレジスタが選択さ
れる。もしこのオプションが使用されれば、“src
1”フィールドのレジスタ数は奇数でなければならな
い。“src4”フィールド(ビット44−42)はデ
ータレジスタ200の1つを乗算器220への第2入力
として指示する。“src2”フィールド(ビット41
−39)はデータレジスタ200の1つを乗算器220
への第2入力として指示する。
【0146】表23は、データユニットフォーマットA
に支援されている若干の演算のためのデータ経路接続を
示す。入力Cは、マルチプレクサCmux 233によ
って選択されて入力Cバス243へ供給される信号であ
る。“マスク発生器”は、マルチプレクサMmux 2
34によって選択されてマスク発生器239へ供給され
る信号である。“回転”は、Smux 231によって
選択されて、バレル回転子235の制御入力へ供給され
る信号である。“積左桁送り”は、乗算桁送りマルチプ
レクサMSmux 225によって選択されて、積左桁
送り回路224の制御入力へ供給される信号である。D
IVI演算の特別な場合に関しては後述する。 表 23 6オペランド演算 入力C マスク発生器 回 転 積左桁送り MPYS‖加算 − − 0 0 MPYS‖減算 − − 0 0 MPYS‖EALUT マスク D0(4-0) D0(4-0) D0(9-8) MPYS‖EALUF マスク D0(4-0) D0(4-0) D0(9-8) MPYU‖加算 − − 0 0 MPYU‖減算 − − 0 0 MPYU‖EALUT マスク D0(4-0) D0(4-0) D0(9-8) MPYU‖EALUF マスク D0(4-0) D0(4-0) D0(9-8) EALU src 4 − src 3 − EALU% マスク src 4 src 1 −
【0147】表23にリストした全ての6オペランド命
令の場合、バス201上の乗算器220への第1入力
は、“src3”フィールド(ビット56−54)によ
って指示されたレジスタであり、バス202上の乗算器
220への第2入力は、“src4”フィールド(ビッ
ト44−42)によって指示されたレジスタであり、バ
レル回転子235への入力は“src1”フィールド
(ビット41−39)によって指示されたレジスタであ
り、そして入力Aバス241への入力は“src2”フ
ィールド(ビット47−45)によって指示されたレジ
スタである。乗算器220はEALU及びEALU%命
令では使用されず、代わりにマルチプレクサBmux
227を通してバレル回転子235の結果が“dst
2”フィールド(ビット53−51)によって指示され
たレジスタ内に保管されることにも注目されたい。DI
VI演算は、算術論理装置230を使用し、乗算器22
0は使用しない。DIVI演算は、符号のない除算のた
めの内部ループに使用することができる。符号付き除算
は、商の符号を処理する付加的なセットアップ及びクリ
ーンアップ命令を用いて実現することができる。当分野
においては、4つの基本算術演算(加算、減算、乗算及
び除算)の中で、除算はコンピュータで実現するのが最
も困難であることは公知である。
【0148】DIVI命令は、所望の商の1桁/実行パ
イプライン段を計算するために、データユニット110
の適切に設定されたハードウェアを使用する。DIVI
データユニット命令は、条件付きデータ転送(従って、
条件付きデータユニット演算)を支援するデータ転送フ
ォーマットと共にだけ使用可能であることに注目された
い。これらのデータ転送フォーマット7、8、9及び1
0に関しては後述する。マルチプレクサAmux 23
2は、算術論理装置第1入力バス205上の“src
2”フィールドによって指示されたデータレジスタ20
0bからデータを選択し、入力Aバス241を通して算
術論理装置230へ供給する。マルチプレクサImux
222は定数HEX“1”を選択して乗算器第2入力
バス202へ供給し、マルチプレクサSmux 231
は乗算器第2入力バス202上のこの定数HEX“1”
を選択して回転バス244へ供給する。“src1”フ
ィールドによって指示されたデータレジスタ200の1
つからのデータは、バレル回転子235へ供給される。
このレジスタはデータレジスタD7、D5、D3もしく
はD1だけに限られ、状態レジスタ210の“N”ビッ
ト(ビット31)に基づいてマルチプレクサ215によ
って選択された条件付きレジスタ源である。もし状態レ
ジスタ210の“N”ビットが“0”であれば、“sr
c1”フィールドによって指示されたデータレジスタ2
00aが選択される。このレジスタ選択は、センスが反
対であることを除いて算術論理装置230を使用するた
の命令における条件付きレジスタ選択を行うために使用
されるのと同一のハードウェアを使用することが好まし
い。このレジスタ選択は、マルチプレクサを介して、も
しくはレジスタの指定中にレジスタフィールドの最下位
ビットに対して状態レジスタ210の“N”ビットの逆
数を減算することによって達成することができる。もし
状態レジスタ210の“N”ビットが“1”であれば、
“src1”フィールドによって指示されたレジスタよ
り1少ないデータレジスタ200cが選択される。
【0149】バレル回転子235は、このデータを1ビ
ットだけ左回転させ、結果を入力Bバス241を通して
算術論理装置230へ供給する。バレル回転子235の
出力もマルチプレクサBmux 227を通してデータ
レジスタ200aに保管される。但し、バレル回転子2
35の出力のビット0は複数フラグレジスタ211のビ
ット31(回転前)によって置換されている。この行先
レジスタは、“src1”フィールドによって指示され
たレジスタである。マルチプレクサMmux234は、
乗算器第2入力バス202上の定数HEX“1”を選択
してマスク発生器239へ供給する。マルチプレクサC
mux 239はマスク発生器239からの出力を選択
し、入力Cバス243を通して算術論理装置230へ供
給する。ビット0キャリーイン発生キャリーイン246
は複数フラグレジスタ211のビット31(回転前)を
算術論理装置230のキャリーイン入力へ供給する。D
IVI命令中、算術論理装置230はHEX“A6”の
機能コードF7−F0を受信する。これにより算術論理
装置230は、入力Aバス241上の入力と入力Bバス
242上の入力とを加算し、0拡張を用いて結果を左桁
送りする。この左桁送りは、HEX“1”入力に応答し
てマスク発生キャリーイン239がマスクを供給してい
るために、1ビットだけである。この機能を簡略記号で
表せばA+B<0<である。算術論理装置230の結果
は、“dst1”フィールドによって指示されたデータ
レジスタ200c内に記憶される。複数フラグレジスタ
211は1ビットだけ回転し、複数フラグレジスタ21
1の最下位ビット(ビット0)は算術論理装置230が
発生した結果に従ってセットされる。この同じビットは
状態レジスタ210の“N”ビット(ビット31)内に
記憶される。ORゲート247は、算術論理装置230
のcout から複数フラグレジスタ211及び状態レジス
タ210内に記憶されたこのビットを、バレル回転子2
35への入力のビット31とを論理和(OR)する。状
態レジスタ210の他のビット“C”、“V”及び
“Z”は通常のようにセットされることに注目された
い。もしデータレジスタ200a内のデータがXであ
り、データレジスタ200b内のデータがYであり、デ
ータレジスタ200c内のデータがZであれば、DIV
I命令はX=X<<1及びZ=X〔n〕Z+Yを形成す
る。“n”簡略記号は、“N”状態レジスタビットに基
づくレジスタ源選択を表す。
【0150】DIVI命令は、条件付き減算及び桁送り
除算アルゴリズムを繰り返して遂行するように動作す
る。この命令は、 32 ビットの被除数を 16 ビットの除
数で除して 16 ビットの商と、 16 ビットの剰余を発生
するか、もしくは 64 ビットの被除数を 32 ビットの除
数で除して 32 ビットの商と、 32 ビットの剰余を発生
するために使用することができる。 64 ビットの被除数
の場合、 32 の被除数の最上位ビットは始めにデータレ
ジスタ200a内に記憶され、 32 の最下位ビットは始
めに複数フラグレジスタ211内に記憶される。データ
レジスタ200bは、除数の逆数を記憶している。除算
演算の第1の繰り返しの場合、DIVI命令は無条件に
実行されるか、もしくは状態レジスタ210の“N”ビ
ットが“0”にセットされるかの何れかである。バレル
回転子235からの回転した数はデータレジスタ200
a内に記憶される。バレル回転子235及び複数フラグ
レジスタ211の回転は 64 ビットの被除数を効果的に
1位置桁送りする。複数フラグレジスタ211の最上位
ビットは、 64 ビットの被除数の次に最上位のビットで
あり、算術論理装置230のキャリーイン入力へ適切に
供給される。データ200a内に記憶された商を、被除
数/実行(ランニング)剰余と呼ぶ。試行減算の結果は
データレジスタ200c内に記憶される。
【0151】試行減算の結果に関して2つの場合が存在
する。もし始めの被除数の最上位ビットが“1”である
か、もしくはもし負の除数の加算が桁上げを生成すれ
ば、対応する商ビットは“1”である。これは複数フラ
グレジスタ211の第1ビット及び状態レジスタ210
の“N”ビット内に記憶される。次の試行減算の場合に
は、状態レジスタ210の“N”ビット内の“1”によ
って、マルチプレクサ215が次の繰り返しのB入力の
ためにデータレジスタ200cを選択する。このよう
に、次の試行減算は前の結果から行われる。もしORゲ
ート247が“0”であれば、対応する商ビットは
“0”である。このように、次の試行減算は1位置左へ
桁送りされデータレジスタ200a内に記憶された前の
被除数/実行剰余から行われる。この繰り返しは、DI
VIの 32 サイクルの間続けられ、各サイクル中に商の
1ビットが形成される。このようにして 32 ビットの商
が複数フラグレジスタ211内に完全に形成される。 3
2 ビットの剰余は、状態レジスタ210の“N”ビット
の状態に依存して、データレジスタ200aもしくはデ
ータレジスタ200cの何れか内に見出される。32 ビ
ットを 16 ビットによって除すプロセスも同様である。
負の除数は、データレジスタ200b内へ記憶される前
に 16 位置左桁送りされる。全被除数はデータレジスタ
200a内に記憶される。DIVI命令が 16 回だけ繰
り返されると、商は複数フラグレジスタ211の 16 の
最下位ビット内に形成され、剰余は状態レジスタ210
の“N”ビットの状態に依存して、データレジスタ20
0aもしくはデータレジスタ200cの何れかの 16 の
最上位ビット内に形成される。
【0152】この技術は、多くのマイクロプロセッサの
動作のオーバヘッドを短縮させるために、データユニッ
ト110内に既設のハードウェアを使用している。DI
VI命令は本質的に、符号のない除算の1ビットを形成
する。付加的なソフトウェアを使用して符号付きの除算
を支援することができる。4つの除算サブルーチンを、
符号のないハーフワード除算( 32 ビット/ 16 ビッ
ト)、符号のないワード除算( 64 ビット/ 32 ビッ
ト)、符号付きハーフワード除算( 32 ビット/ 16 ビ
ット)、及び符号付きワード除算( 64 ビット/ 32 ビ
ット)の場合のために書くことができる。4つの各サブ
ルーチンは、3つの相、即ち除算準備、単一命令ループ
における除算繰り返し、及び除算ラップアップ( wrap-u
p ) を含む。ループカーネル(核)内に0オーバヘッド
ルーピング及び単一 64 ビットDIVI命令を使用する
ことが好ましい。各除算サブルーチンの第1の部分は、
除算準備である。この第1の部分は除数が0か否かを調
べることを含む。もし除数が“0”であれば、除算サブ
ルーチンは打ち切られ、誤り状態が指示される。次に、
被除数及び除数に対して符号拡張が左符号拡張にセット
される。符号付き除算サブルーチンでは、商の符号が被
除数及び除数の符号ビットの論理和(OR)としてセッ
トされる。次いで符号付き除算では、もし被除数もしく
は除数が負であれば、それらは否定されて正の数にされ
る。被除数は選択された奇数データレジスタと複数フラ
グレジスタ211との間に分割される。ワード除算の場
合には、被除数の上位 32 ビットは選択されたデータレ
ジスタ内に記憶され、被除数の下位 32 ビットは複数フ
ラグレジスタ211内に記憶される。ハーフワード除算
の場合には、被除数の全ての 32 ビットは選択されたデ
ータレジスタ内に記憶される。ハーフワード除算の場合
には、複数フラグレジスタ211の使用されない下位ビ
ットには0が充填される。ハーフワード除算では、除数
はデータレジスタの上位 16 ビット内に記憶され、下位
ビットには0が充填される。算術論理装置230が加算
によって減算を遂行できるように除数は否定すべきであ
る。サブルーチンは被除数及び除数の最上位ビットの絶
対知とを比較して、商があふれるか否かを決定すること
ができる。
【0153】各除算サブルーチンの本質は、単一DIV
I命令を含むループである。これは0オーバヘッド1命
令ループを初期化するためにレジスタアドレスLSRE
2−LSRE0の1つを書くのに極めて有利である。ハ
ーフワードの商を求めるためには 16 回の繰り返しが、
またワードの商を求めるためには 32 回の繰り返しが必
要である。ループ論理720は0まで減数(デクレメン
ト)するから、ループカウンタは、所望の繰り返し回数
よりも1だけ少なくロードすべきである。また、ループ
論理の初期化に続いて遅延スロット内にDIVI命令を
2回まで繰り返して配置することも可能である。このル
ープ内の単一の命令は、以上に詳細に説明したDIVI
命令である。各除算サブルーチンは、除算ラップアップ
で完了する。除算ラップアップは以下の諸段階を含む。
商は複数フラグレジスタ211からデータレジスタへ移
動させられる。もし商の符号が負であれば、データレジ
スタ内の商に“1”が追加され“1”の補数表現から2
の補数表現へ変換される。もし剰余が必要であれば、そ
れは状態レジスタ210の“N”ビットに基づいて選択
される。図18のデータ転送フォーマット、及び命令ワ
ードの並行データ転送フォーマットの種々のビット及び
フィールドの説明もしくは用語を以下に説明する。デー
タユニットフォーマットのビット及びフィールドの用語
について前述したように、これらのビット及びフィール
ドは命令ワードを限定するだけではなく、その命令ワー
ドを実行可能にする回路をも限定する。
【0154】転送フォーマット1は、ビット38−37
が“00”でないこと、ビット30−28が“000”
でないこと、そしてビット16−15が“00”でない
ことによって認識される。転送フォーマット1は、二重
並行データ転送フォーマットと呼ばれる。転送フォーマ
ット1は、メモリ20の2つの独立したアクセス、即ち
デジタル画像/グラフィックスプロセッサに対応するメ
モリ区分に制限された大域アクセス及びローカルアクセ
スを可能にする。“Lmode”フィールド(ビット3
8−35)はローカル転送モードと呼ばれ、アドレスユ
ニット120のローカルアドレスユニットがどのように
動作するかを指定する。このフィールドは、表24のよ
うに復号されることが好ましい。 表 24 Lmode フィールド 3333 8765 式構文 動作の記述 00XX 動作なし 0100 *(An++=Xm) 変更を伴う指標レジスタの事後加算 0101 *(An−−=Xm) 変更を伴う指標レジスタの事後減算 0110 *(An++=Imm) 変更を伴うオフセットの事後加算 0111 *(An−−=Imm) 変更を伴うオフセットの事後減算 1000 *(An+Xm) 指標レジスタの事前加算 1001 *(An−Xm) 指標レジスタの事前減算 1010 *(An+Imm) オフセットの事前加算 1011 *(An−Imm) オフセットの事前減算 1100 *(An+=Xm) 変更を伴う指標レジスタの事前加算 1101 *(An−=Xm) 変更を伴う指標レジスタの事前減算 1110 *(An+=Imm) 変更を伴うオフセットの事前加算 1111 *(An−=Imm) 変更を伴うオフセットの事前減算 “d”フィールド(ビット34−32)はローカルバス
転送の源もしくは行先となるデータレジスタD0−D7
の1つを指示する。“e”ビット(ビット31)はもし
“1”ならば符号拡張を指示し、そうではなく“0”な
らばローカルデータ転送に関して0拡張を指示する。こ
れは、ローカル“siz”フィールド(ビット30−2
9)が全 32 ビットワードサイズより小さいことを指示
した場合に、メモリからレジスタへ転送するように動作
する。この“e”ビットは、もしデータサイズが 32 ビ
ットであれば無視される。“e”(ビット31)=
“1”と、“L”(ビット21)=“0”との組合わせ
(これ以外は無意味である)は、ローカルアドレスユニ
ット算術演算を指示する。ローカル“siz”フィール
ド(ビット30−29)は、表25に示すように符号化
することが好ましい。 表 25 サイズフィールド 3 2 0 9 データワードサイズ 0 0 バイト 8ビット 0 1 ハーフワード 16ビット 1 0 全ワード 32ビット 1 1 保留 “s”ビット(ビット28)は、ローカルアドレス指標
基準化に適用される基準化モードをセットする。もし
“s”ビットが“1”であれば、アドレス計算の指標
(指標レジスタもしくは命令指定されたオフセットから
呼び戻すことができる)が“siz”フィールドによっ
て指示されたサイズに基準化される。もし“s”ビット
が“0”であれば、基準化は行われない。前述したよう
に、この指標基準化は指標スケーラ614において行わ
れる。もし選択されたデータサイズが8ビット(バイ
ト)であれば、“s”ビットの状態には関わりなく基準
化は行われない。この場合に限って、“s”ビットは付
加的なオフセットビットとして使用することができる。
もし“Lmode”フィールドがオフセットを指示して
いれば、“s”ビットはオフセットの最上位ビットにな
り、“Lim/x”フィールドの3ビットオフセット指
標を4ビットに変換する。“La”フィールド(ビット
27−25)は、ローカルデータ転送に関してアドレス
ユニット120のローカルアドレスユニット620内の
アドレスレジスタを指示する。“L”ビット(ビット2
1)は、ローカルデータ転送が、メモリからレジスタへ
のロード転送であるか(L=“1”)、もしくはレジス
タからメモリへの記憶転送データである(L=“0”)
ことを指示する。“Lim/x”フィールド(ビット2
−0)は、“Lmode”フィールドのコーデイングに
依存して、指標レジスタのレジスタ番号、もしくは3ビ
ットオフセットの何れかを指定する。
【0155】大域データ転送動作は、ローカルデータ転
送のコーディングと同じように符号化される。“L”ビ
ット(ビット17)は、大域ロード/記憶選択である。
このビットは、大域データ転送がメモリからレジスタへ
の転送(即ちロード)であるか(“L”=“1”)、も
しくはレジスタからメモリへの転送(即ち記憶)である
か(“L”=“0”)を決定する。“Gmode”フィ
ールド(ビット16−13)は、ローカル転送モードが
“Lmode”フィールドによって限定されるのと同じ
ようにして、大域転送モードを限定する。このフィール
ドは表26に示すように復号されることが好ましい。 表 26 Gmode フィールド 1111 6543 式構文 動作の記述 00XX 動作なし 0100 *(An++=Xm) 変更を伴う指標レジスタの事後加算 0101 *(An−−=Xm) 変更を伴う指標レジスタの事後減算 0110 *(An++=Imm) 変更を伴うオフセットの事後加算 0111 *(An−−=Imm) 変更を伴うオフセットの事後減算 1000 *(An+Xm) 指標レジスタの事前加算 1001 *(An−Xm) 指標レジスタの事前減算 1010 *(An+Imm) オフセットの事前加算 1011 *(An−Imm) オフセットの事前減算 1100 *(An+=Xm) 変更を伴う指標レジスタの事前加算 1101 *(An−=Xm) 変更を伴う指標レジスタの事前減算 1110 *(An+=Imm) 変更を伴うオフセットの事前加算 1111 *(An−=Imm) 変更を伴うオフセットの事前減算 “reg”フィールド(ビット12−10)はレジスタ
を識別する。“reg”フィールドは、記憶の場合には
源レジスタの番号を指示し、ロードの場合には行作レジ
スタの番号を指示する。“0bank”フィールド(ビ
ット20−18)は3ビットを含み、下側 64 レジスタ
内のレジスタのバンクを識別する。これらのレジスタは
“0XXX”の形状のレジスタバンク番号を有してい
る。3ビット“0bank”フィールドは、3ビット
“reg”フィールドと組合って下側64 レジスタ内の
何れかのレジスタを、大域データ転送のためのデータ源
もしくは行先として指示する。“e”ビット(ビット
9)は、もし“1”であれば符号拡張を指示し、そうで
はなく“0”であれば大域データ転送に関して0拡張を
指示する。これは大域“siz”フィールド(ビット8
−7)が全 32 ビットワードサイズより小さいことを指
示した場合に、メモリからレジスタへ転送するように動
作する。この“e”ビットは、もしデータサイズが 32
ビットであれば無視される。“e”(ビット9)=
“1”と、“L”(ビット17)=“0”との組合わせ
は、大域アドレスユニット算術演算を指示する。大域
“siz”フィールド(ビット8−7)は、表27に示
すように符号化することが好ましい。 表 27 サイズフィールド 8 7 データワードサイズ 0 0 バイト 8ビット 0 1 ハーフワード 16ビット 1 0 全ワード 32ビット 1 1 保留 “s”ビット(ビット6)は、大域アドレス指標基準化
に適用される基準化モードをセットする。もし“s”ビ
ットが“1”であれば、アドレス計算の指標(指標レジ
スタもしくは命令指定されたオフセットから呼び戻すこ
とができる)が“siz”フィールドによって指示され
たサイズに基準化される。もし“s”ビットが“0”で
あれば、基準化は行われない。もし“siz”フィール
ドが8ビットのデータサイズを指示していれば、“s”
ビットの状態には関わりなく基準化は行われない。もし
“Gmode”フィールドがオフセットを指示していれ
ば、“s”ビットはオフセットの最上位ビットになり、
“Gim/x”フィールドの3ビットオフセット指標を
4ビットに変換する。“Ga”フィールド(ビット5−
3)は、大域データ転送に関してアドレスユニット12
0の大域アドレスユニット610内のアドレスレジスタ
を指示する。“Gim/x”フィールド(ビット24−
22)は、“Gmode”フィールドのコーデイングに
依存して、指標レジスタのレジスタ番号、もしくは3ビ
ットオフセットの何れかを指定する。“Ga”フィール
ド(ビット5−4)は、大域データ転送のメモリアドレ
スを計算する時に使用されるアドレスレジスタのレジス
タ番号を指定する。
【0156】データ転送フォーマット2は、ビット38
−37が“00”ではなく、ビットオ30−28が“0
00”ではなく、そしてビット16−15が“00”で
ないことによって認識される。データ転送フォーマット
2はXYパッチフォーマットと呼ばれる。データ転送フ
ォーマット2は、アドレスユニット120の大域及びロ
ーカルアドレスユニットの両者からXYパッチ式にメモ
リ20をアドレスし、アドレスを多重化することを可能
ならしめる。“o”ビット(ビット34)は、外側XY
パッチ検出を可能にする。“o”ビットが“1”にセッ
トされている場合には、もし指定されているアドレスが
XYパッチの外側にあれば、ビット“a”及び“n”に
よって指定されている演算が遂行される。そうではな
く、“o”ビットが“0”である場合には、もしアドレ
スがパッチの内側にあれば演算が遂行される。“a”ビ
ット(ビット33)は、XYパッチメモリアクセスモー
ドを指定する。“a”ビットが“1”にセットされてい
る場合には、アドレスがXYパッチの内側にあろうと外
側にあろうと、それには無関係にメモリアクセスが遂行
される。“a”ビットが“0”にセットされている場合
には、もしアドレスがパッチの外側にあれば(もし
“o”ビットが“1”であれば)、もしくはパッチの内
側にあれば(もし“o”ビットが“0”であれば)メモ
リアクセスは禁止される。“n”ビット(ビット32)
は、XYパッチ割り込みモードを指定する。“n”ビッ
トが“1”にセットされている場合には、もしアドレス
がパッチの外側にあれば(もし“o”ビットが“1”で
あれば)、もしくはパッチの内側にあれば(もし“o”
ビットが“0”であれば)XYパッチのための割り込み
フラグレジスタビットが“1”にセットされる。“n”
ビットが“0”にセットされている場合には、XYパッ
チ割り込み要求フラグはセットされない。
【0157】他のフィールドは前述のように定義されて
いる。“Lmode”フィールドは表28に示すように
ローカルアドレス計算モードを指定する。このローカル
アドレス計算は、“La”フィールドと、“Lim/
x”フィールドによって指示される、3ビット符号なし
オフセットもしくはローカル指標レジスタの何れかによ
って指示されるローカルアドレスレジスタを含む。“G
mode”フィールドは大域アドレス計算を指定する。
“Gim/x”フィールドによって指示される、大域符
号なし3ビットオフセットもしくは大域指標レジスタ
は、“Ga”フィールドによって指定されるアドレスレ
ジスタと組合わされて大域アドレスを形成する。4ビッ
ト“bank”フィールド(ビット21−18)は、デ
ータレジスタバンクを識別し、レジスタ番号を識別する
3ビット“reg”フィールドと組合わされて、何等か
のレジスタをXYパッチアクセスのためのデータ源もし
くは行先として指示する。“L”ビットはロード/記憶
選択である。このビットは、XYパッチアクセスがメモ
リからレジスタへの転送(“L”=“1”)即ちロード
であるのか、もしくはレジスタからメモリへの転送
(“L”=“0”)即ち記憶であるのかを決定する。
“e”ビットは、もし“1”であれば符号拡張を指示
し、もし“0”であれば0拡張を指示する。これは、
“siz”フィールドが全 32 ビットワードサイズより
小さいことを指示した場合にロード動作(メモリからレ
ジスタへのデータ転送)で作動する。この“e”ビット
は、もしデータサイズが 32 ビットであれば無視され
る。“e”=“1”で、“L”=“0”の組合わせは、
パッチされたアドレスユニット算術演算を指示する。
“s”ビットは、大域アドレス指標標準化に適用される
標準化モードをセットする。もし“s”ビットが“1”
であれば、メモリから呼び戻されたデータは“siz”
フィールドによって指示されたサイズに標準化される。
もし“s”ビットが“0”であれば、標準化は行われな
い。もし選択されたデータサイズが8ビット(バイト)
であれば“s”ビットの状態には関わりなく標準化は行
われない。この場合に限って、“s”ビットはオフセッ
トの最上位ビットとして使用され、3ビット“Gim/
x”オフセット指標を4ビットに変換する。
【0158】データ転送フォーマット3は、ビット38
−37が“00”ではなく、ビット24が“0”であ
り、そしてビット16−13が“0000”であること
によって認識される。データ転送フォーマット3は、移
動及びローカルデータ転送フォーマットと呼ばれる。デ
ータ転送フォーマット3は、大域ポート源データバスG
SRC 105及び大域ポート行先データバスGDST
107を使用するレジスタからレジスタへの移動と並
行して、ローカルデータポートを通してデータレジスタ
200の1つのロードもしくは記憶を可能にする。ロー
カルデータポート動作は、前述したようにしてフィール
ド“Lmode”、“d”、“e”、“siz”、
“s”、“La”、“L”及び“Lim/x”によって
限定される。レジスタからレジスタへの移動は、“sr
cbank”フィールド(ビット9−6)によって指示
されたバンクと、“src”フィールド(ビット12−
10)によって指示されたレジスタ番号とによって限定
されたレジスタから、“dstbank”フィールド
(ビット21−18)によって指示されたバンクと、
“dst”フィールド(ビット5−3)によって指示さ
れたレジスタ番号とによって限定されたレジスタまでで
ある。
【0159】データ転送フォーマット3は、デジタル画
像/グラフィックスプロセッサ相対アドレス指定を支援
する。“Lrm”フィールド(ビット23−22)は、
アドレス指定動作の型を指示する。これを以下の表28
に示す。 表 28 Lrmフィールド 8 7 アドレス指定モード 0 0 通常のアドレス指定 0 1 保留 1 0 データメモリ基底アドレス、DBA 1 1 パラメタメモリ基底アドレス、PBA DBAを指定すると、ローカルアドレスユニット620
はその対応するメモリの基底アドレスを生成する。同様
に、PBAを指定すると、ローカルアドレスユニット6
20はその対応するパラメタメモリの基底アドレスを生
成する。このようにして生成された基底アドレスは、表
24に示した“Lmode”フィールドにおいて指定さ
れた何れかのアドレス生成動作において、指標レジスタ
内に記憶されている指標、もしくはオフセットフィール
ドと組合わせることができる。
【0160】このデータ転送フォーマットは、コマンド
ワード生成をも支援する。もしレジスタからレジスタへ
の移動の行先が大域アドレスユニットA15の0値アド
レスレジスタであれば、命令ワード復号回路は指示され
たプロセッサへのコマンドワードの転送を開始する。こ
のコマンドワードは、特別なコマンドワード信号を伴っ
て大域データポートを通してクロスバ50へ伝送され
る。これによりプロセッサ間通信が可能になり、従って
例えば何れかのデジタル画像/グラフィックスプロセッ
サ71、72、73及び74は他のプロセッサへ割り込
みを発行することができる。このプロセスは説明済であ
る。データ転送フォーマット4は、ビット38−37が
“00”ではなく、ビット24が“0”であり、そして
ビット16−13が“0001”であることによって認
識される。データ転送フォーマット3は、フィールド移
動及びローカルデータ転送フォーマットと呼ばれる。デ
ータ転送フォーマット3は、大域ポート源データバスG
SRC 105及び大域ポート行先データバスGDST
107を使用するレジスタからレジスタへのフィール
ド移動と並行して、ローカルデータポートを通してデー
タレジスタ200の1つのロードもしくは記憶を可能に
する。ローカルデータポート動作は、前述したようにし
てフィールド“Lmode”、“d”、“e”(ビット
31)、“siz”(ビット30−29)、“s”、
“La”、“L”及び“Lim/x”によって限定され
る。
【0161】レジスタからレジスタへのフィールド移動
は、“src”フィールド(ビット12−10)によっ
て指示されたレジスタ番号によって限定されたレジスタ
から、“dstbank”フィールド(ビット21−1
8)によって指示されたバンクと、“dst”フィール
ド(ビット5−3)によって指示されたレジスタ番号と
によって限定されたレジスタまでである。“D”ビット
(ビット6)は、そのフィールド移動がフィールド繰り
返し移動であるのか(もし“D”=“1”ならば)、も
しくはフィールド抽出移動であるのか(もし“D”=
“0”ならば)を指示する。フィールド繰り返し移動で
は、もし“siz”フィールド(ビット8−7)がバイ
トサイズを指示していれば源レジスタの最下位8ビット
が行先レジスタ内で4回繰り返され、またもし“si
z”フィールド(ビット8−7)がハーフワードサイズ
を指示していれば源レジスタの最下位 16 ビットが行先
レジスタ内に二重に複写される。もし“siz”フィー
ルドがワードサイズを指示していれば、“D”ビットの
状態には無関係に、繰り返しではなく、源レジスタの 3
2 ビット全部が行先レジスタへ転送される。フィールド
抽出移動では、“itm”フィールド(ビット23−2
2)が源レジスタから抽出すべき小さいエンディアン項
目数を指示する。抽出される特定のビットは、“si
z”フィールドにも依存する。“siz”フィールド
(ビット8−7)のデータサイズがバイトであれば、
“itm”フィールドは所望のバイトを指示する0、
1、2もしくは3であり得る。“siz”フィールド
(ビット8−7)のデータサイズがハーフワードであれ
ば、“itm”フィールドは所望のハーフワードを指示
する0もしくは1であることができる。もし“siz”
フィールド(ビット8−7)がワードであれば、“it
m”フィールドは無視される。源レジスタから抽出され
たフィールドは、もし“e”(ビット9)が“1”であ
れば符号拡張され、もし“e”(ビット9)が“0”で
あれば0拡張される。フィールド複写移動中は“e”フ
ィールドは無視される。
【0162】データ転送フォーマット5は、ビット38
−37が“00”ではなく、ビット24が“1”であ
り、そしてビット16−15が“00”であることによ
って認識される。データ転送フォーマット5は、ローカ
ルの長いオフセットデータ転送と呼ばれる。データ転送
フォーマット5は、大域データ転送が不可能であるの
で、ローカルアドレスユニット内に構成されたアドレス
を使用して大域ポートメモリアクセスを可能にする。ロ
ーカルデータポート動作は、前述したようにしてフィー
ルド“Lmode”、“d”、“e”、“siz”、
“s”、“La”及び“L”によって限定される。レジ
スタ源もしくは行先は、“bank”フィールド(ビッ
ト21−18)内に指示されているレジスタのバンク内
の“reg”フィールド(ビット34−32)内に指示
されたレジスタ番号に対応する。“ローカルの長いオフ
セット/x”フィールド(ビット14−0)は、 15 ビ
ットのローカルアドレスオフセットを指定するか、もし
くは最下位3ビットが“Lmode”フィールドによっ
てセットされた指標レジスタを指定する。データ転送フ
ォーマット5は、どのようなデータユニットレジスタも
記憶のための源もしくはロードのための行先とすること
を可能にするので、プログラマが(“ローカルの長いオ
フセット”フィールドではなく)指標レジスタを使用す
るこのデータ転送フォーマットを使用することを欲する
かも知れない。“Lmode”フィールドは、このフィ
ールドがオフセット値を含むのか、もしくは指標レジス
タ番号を含むのかを指示する。もし選択されたデータサ
イズが8ビット(バイト)であれば、“s”ビットの状
態には無関係に、基準化は行われない。この場合に限っ
て、“s”ビットはオフセットの最上位ビットにされ、
15 ビットの“ローカルの長いオフセット”フィールド
を 16 ビットに変換する。“Lrm”フィールド(ビッ
ト23−22)は、表28にリストした通常のアドレス
動作、データメモリ基底アドレス動作、もしくはパラメ
タメモリ基底アドレス動作を指定する。
【0163】データ転送フォーマット6は、ビット38
−37が“00”であり、ビット16−15が“00”
ではなく、そしてビット2が“0”であることによって
認識される。データ転送フォーマット6は、大域の長い
オフセットデータ転送と呼ばれる。データ転送フォーマ
ット6は、アドレス計算が大域アドレスユニットにおい
て行われることを除き、データ転送フォーマット5と同
一である。フィールド“bank”、“L”、“Gmo
de”、“reg”、“e”、“siz”、“s”及び
“Ga”は定義済である。“大域の長いオフセット/
x”フィールド(ビット36−22)は、“Gmod
e”フィールドに依存して大域オフセットアドレス、も
しくは指標レジスタを指定する。これは上述した“ロー
カルの長いオフセット/x”フィールドに類似してい
る。“Grm”fi(ビット1−0)は、アドレス指定
動作の型を指示する。これを以下の表29に示す。 表 29 Grmフィールド 1 0 アドレス指定モード 0 0 通常のアドレス指定 0 1 保留 1 0 データメモリ基底アドレス、DBA 1 1 パラメタメモリ基底アドレス、PBA これは、アドレス計算が大域アドレスユニット610に
おいて行われることを除き、前述した“Lrm”フィー
ルドと同じように動作する。
【0164】データ転送フォーマット7は、ビット38
−37が“00”ではなく、ビット24が“0”であ
り、そしてビット16−14が“001”であることに
よって認識される。データ転送フォーマット7は、非デ
ータレジスタデータユニット動作及びローカルデータ転
送フォーマットと呼ばれる。データ転送フォーマット7
は、データユニット動作と並行してローカルポートメモ
リアクセスを可能にする。この場合、算術論理装置23
0のための第1の源及び算術論理装置230のための行
先は、デジタル画像/グラフィックスプロセッサ71上
のどのレジスタであってもよい。ローカルデータポート
動作は、前述したようにしてフィールド“Lmod
e”、“d”、“e”、“siz”、“s”、“L
a”、“L”及び“Lim/x”によって限定される。
“Adstbnk”フィールド(ビット21−18)
は、算術論理装置行先のためのレジスタのバンクを指定
する。このフィールドは、データユニットフォーマット
A、B及びC内の“dst”フィールド、及びデータユ
ニットフォーマットD内の“dst1”フィールドと組
合ってレジスタ源を指定する。“As1bank”フィ
ールドは、第1算術論理装置源のためのレジスタのバン
クを指定する。これは、データユニットフォーマット
A、B、C及びD内の“src1”フィールドと組合っ
てレジスタ源を指定する。これらのデータユニット動作
は、第1の源及び行先がデータユニット110のデータ
レジスタ200である必要がないことから、長距離算術
論理装置演算と呼ばれる。
【0165】データ転送フォーマット8は、ビット38
−37が“00”であり、ビット24が“0”であり、
そしてビット16−13が“0000”であることによ
って認識される。データ転送フォーマット8は、条件付
きデータユニット動作及び条件付き移動転送フォーマッ
トと呼ばれる。データ転送フォーマット8は、算術論理
装置230のための第1の源の条件付き選択と、算術論
理装置230の結果の条件付き記憶とを可能にする。条
件付き算術論理装置演算は、フィールド“con
d.”、“c”、“r”、“g”及び“N C V
Z”によって限定される。“cond.”フィールド
(ビット35−32)は、条件付きレジスタ源からの算
術論理装置演算と、算術論理装置結果の条件付き記憶と
を限定する。このフィールドは、表20に定義されてい
る。これらの条件は、状態レジスタ210の“N”、
“C”、“V”及び“Z”ビットに基づいて評価され
る。指定された条件は、条件付きレジスタ源、算術論理
装置230の結果の条件付き記憶、もしくはレジスタか
らレジスタへの条件付き移動を決定することができる。
“c”ビット(ビット31)は、条件付き源選択を決定
する。もし“c”ビットが“0”であれば、算術論理装
置230のための第1の源は、命令ワードのデータユニ
ットフォーマット部分の“src1”フィールド(ビッ
ト47−45)に基づいて無条件に選択される。もし
“c”ビットが“1”であれば、レジスタ源は、奇数及
び偶数レジスタ対の間で選択される。この場合“src
1”フィールドは、奇数番号付きのデータレジスタ20
0を指定しなければならないことに注目されたい。もし
条件が真であれば、指定されたレジスタが算術論理装置
230の第1の源として選択される。もし条件が偽であ
れば、指定されたデータレジスタより1つ少ない対応す
る偶数データレジスタが源として選択される。好ましい
実施例は、状態レジスタ210の“N”ビットに基づい
て条件付き源選択を支援する。もし状態レジスタ210
の“N”ビットが“1”であれば、指示されたデータレ
ジスタが算術論理装置230のための第1の源として選
択される。もし状態レジスタ210の“N”ビットが
“0”であれば、1つ少ないデータレジスタが選択され
る。この選択は、マルチプレクサによって、もしくはレ
ジスタ番号の最下位ビットの代わりに状態レジスタ21
0の“N”ビットを使用することによって行うことがで
きる。好ましい実施例は状態レジスタ210の“N”ビ
ットだけに基づいて条件付き源選択を支援しているが、
状態レジスタ210の“C”、“V”及び“Z”ビット
に基づいて条件付き源選択を実現することも可能であ
る。
【0166】データ転送フォーマット8は、算術論理装
置230の結果の条件付き記憶を支援する。“r”ビッ
ト(ビット30)は、結果の記憶が条件付きであるか否
かを指示する。もし“r”ビットが“1”であれば、結
果の記憶は“cond.”フィールドの条件に基づいて
条件付きである。もし“r”ビットが“0”であれば、
結果の記憶は無条件である。条件付き結果動作において
は、状態レジスタ210の状態ビットが無条件にセット
されることに注目されたい。従ってたとえ結果を記憶し
なくとも、これらのビットをセットすることができる。
データ転送フォーマット8は、レジスタからレジスタへ
の条件付き移動動作をも可能にする。条件は、条件付き
データユニット動作を指定する同一“cond.”フィ
ールドによって限定される。移動のレジスタデータ源
は、“srcbank”フィールド(ビット9−6)に
よって指示されるバンクと、“src”フィールド(ビ
ット12−10)によって指示されるレジスタ番号とに
よって限定される。レジスタデータ行先は、“dstb
ank”フィールド(ビット21−18)によって指示
されるバンクと、“dst”フィールド(ビット5−
3)によって指示されるレジスタ番号とによって限定さ
れる。“g”ビット(ビット29)は、データ移動が条
件付きであるか否かを指示する。もし“g”ビットが
“1”であれば、データ移動は“cond.”フィール
ドに指定された条件に基づいて条件付きである。もし
“g”ビットが“0”であれば、データ移動は無条件で
ある。大域アドレスユニットの0値アドレスレジスタA
15の行先が、前述したようにコマンドワード書き込み
動作を生成することに注目されたい。データ転送フォー
マット8は条件付きコマンドワード生成を可能にする。
“N C V Z”フィールド(ビット28−25)
は、命令の実行中にどの状態のビットを、変更されない
ように保護するのかを指示する。状態レジスタの条件
は、N負、C桁上げ、Vあふれ、及びZゼロ(0)であ
る。もしこれらのビットの1もしくはそれ以上が“1”
にセットされれば、状態レジスタ内の対応する1もしく
はそれ以上の条件ビットが、命令の実行中に変更されな
いように保護される。“1”にセットされなければ、状
態レジスタ210の状態ビットは算術論理装置230の
結果に従って通常通りセットされる。
【0167】データ転送フォーマット9は、ビット38
−37が“00”であり、ビット24が“0”であり、
そしてビット16−13が“0001”であることによ
って認識される。データ転送フォーマット9は、条件付
きデータユニット動作及び条件付きフィールド移動転送
フォーマットと呼ばれる。データ転送フォーマット9
は、データ転送フォーマット8と同様にして、算術論理
装置230のための第1の源の条件付き選択と、算術論
理装置230の結果の条件付き記憶とを可能にする。条
件付き算術論理装置演算は、データ転送フォーマット8
と同様に、フィールド“cond.”、“c”、“r”
及び“N C V Z”によって限定される。データ転
送フォーマット9は、レジスタからレジスタへの条件付
きフィールド移動をも支援する。この条件は、条件付き
データユニット動作を指定するのと同一の“con
d.”フィールドによって限定される。フィールド移動
の源は、データレジスタ200の1つでなければならな
い。“src”フィールド(ビット12−10)は、特
定データレジスタを指定する。レジスタからレジスタへ
の移動の行先は、“dstbank”フィールド(ビッ
ト21−18)のレジスタバンクと、“dst”フィー
ルド(ビット5−3)のレジスタ番号とによって限定さ
れたレジスタである。フィールド“g”(ビット2
9)、“itm”(ビット23−22)、“e”(ビッ
ト9)、“siz”(ビット8−7)及び“D”(ビッ
ト6)は、条件付きフィールド移動のパラメタを限定す
る。“g”ビットは、もし“g”=“0”ならばフィー
ルド移動が無条件であることを、また“g”=“1”な
らばフィールド移動が条件付きであることを決定する。
“D”ビットは、もし“D”=“1”ならばフィールド
移動がフィールド繰り返し移動であることを、または
“D”=“0”ならばフィールド抽出移動であることを
指示する。これらのオプションに関しては説明済であ
る。フィールド抽出移動では、“itm”フィールド
(ビット23−22)は、“siz”フィールドによっ
て指定されたデータサイズから抽出すべき小さいエンデ
ィアン項目数を指示する。源レジスタから抽出されたフ
ィールドは、もし“e”ビット(ビット9)が“1”な
らば符号拡張であり、“e”ビット(ビット9)が
“0”ならば0拡張である。フィールド繰り返し移動中
は、“e”ビットは無視される。
【0168】データ転送フォーマット10は、ビット3
8−37が“00”であり、ビット16−15が“0
0”ではなく、そしてビット2が“0”であることによ
って認識される。データ転送フォーマット10は、条件
付きデータユニット動作及び条件付き大域データ転送フ
ォーマットと呼ばれる。データ転送フォーマット10
は、算術論理装置230のための第1の源の条件付き選
択と、算術論理装置230の結果の条件付き記憶とを可
能にする。条件付き算術論理装置演算は、データ転送フ
ォーマット8で説明したようにフィールド“con
d.”、“c”、“r”及び“N C V Z”によっ
て限定される。データ転送フォーマット10は、大域ア
ドレスユニット610を通して条件付きメモリアクセス
をも支援する。条件付きメモリアクセスは、フィールド
“g”、“Gim/x”、“bank”、“L”、“G
mode”、“reg”、“e”、“siz”、
“s”、“Ga”及び“Grm”によって指定される。
“g”ビット(ビット29)は、上述したようにデータ
移動が条件付きか否かを指示する。“Gim/x”フィ
ールドは、“Gmode”フィールドの状態に依存し
て、指標レジスタ番号もしくはオフセットフィールドの
何れかを指定する。“bank”フィールドはレジスタ
バンクを指定し、“reg”フィールドはレジスタ源の
レジスタ番号もしくは大域メモリアクセスの行先を指定
する。“L”ビットは、“1”である時にはロード動作
(メモリからレジスタへの転送)を指示し、“0”であ
る時にはロード動作(レジスタからメモリへの転送)を
指示する。“Gmode”フィールドは、表26に示し
た大域データユニット610の動作を指示する。“e”
ビットは、ロード動作のための符号拡張もしくは0拡張
を指示する。“L”ビットが“0”であり、且つ“e”
ビットが“1”である場合には、アドレス算術演算が行
われることに注目されたい。“s”ビットは、前述した
ように使用をデータサイズに基準化するか否かを指示す
る。“Ga”フィールドは、アドレス計算に使用される
アドレスレジスタを指定する。“Grm”フィールド
は、表29で説明したようにアドレス指定動作の型を指
示する。
【0169】データ転送フォーマット11は、ビット3
8−37が“00”であり、ビット24が“0”であ
り、そして16−14が“001”であることによって
認識される。データ転送フォーマット11は、条件付き
非データレジスタデータユニットフォーマットと呼ばれ
る。データ転送フォーマット10は、メモリアクセスを
許さない。その代わりとしてデータ転送フォーマット1
0は、算術論理装置230の1つの源及び行先をデジタ
ル画像/グラフィックスプロセッサ71内の何れかのレ
ジスタとして用いる条件付きデータユニット動作を可能
にする。これらは、長距離算術論理装置演算と呼ばれ
る。“As1bank”フィールド(ビット9−6)
は、命令のデータユニットフォーマット内の“src
1”フィールド(ビット47−45)と組合って第1算
術論理装置源を限定するレジスタのバンクを指定する。
従ってこの源はデジタル画像/グラフィックスプロセッ
サ71内の何れかのレジスタであることができる。“A
dstbnk”フィールド(ビット21−18)は、デ
ータユニットフォーマットA、B、及びC内の“ds
t”フィールド(50−48)、及びデータユニットフ
ォーマットE内の“dst1”フィールド(50−4
8)と組合って算術論理装置行先を限定するレジスタの
バンクを指定する。条件付き算術論理装置演算は、デー
タ転送フォーマット8で説明したように、フィールド
“cond.”、“c”、“r”及び“N C VZ”
によって限定される。
【0170】“R”ビット(ビット0)は、リセットビ
ットである。“R”ビットは、リセットする時に限って
使用される。この“R”ビットは、スタックポインタレ
ジスタA14をデジタル画像/グラフィックスプロセッ
サ71のリセット時に初期化するのか否かを決定する。
ユーザはこの“R”ビットを命令集合を通して使用する
ことはできず、これ以上の説明は省略する。単一の命令
内でかなり多くの動作が可能であるので、単一の命令の
1より多い動作で、同一の行先データレジスタ200を
指定しまう可能性がある。このような場合固定された優
先順位が、共通に指定された行先レジスタにどの動作が
その結果を保管するのかを決定する。この固定された優
先順位を、最高優先順位から裁定優先順位の順番に表3
0に示す。 表 30 優先順位 動 作 最高 大域アドレスユニットデータ転送 中間 ローカルアドレスユニットデータ転送 最低 データユニット 乗算/ALU=>乗算 回転/ALU=>ALU 以上のように、大域アドレスユニットデータ転送が最高
の優先順位を有し、データユニット動作が最低の優先順
位を有している。単一の命令中に1より多いデータユニ
ット動作が生じ得るから、これらの動作にはさらなる優
先順位が存在する。もし乗算演算及び算術論理装置演算
が同一の行先レジスタを有していれば、乗算演算の結果
だけが記憶される。この場合、打切られた算術論理装置
演算によって状態ビットが変化することはない。大域も
しくはローカルアドレスユニットデータ転送との競合に
起因して、算術論理装置演算の結果の記憶が打切られれ
ば、状態ビットは通常のようにセットされる。もしバレ
ル回転の結果及び算術論理装置演算が同一の行先を有し
ていれば、算術論理装置演算の結果だけが記憶される。
この場合、完了した算術論理装置演算に対して状態ビッ
トが通常のようにセットされる。
【0171】マイクロプロセッサ集積回路101を、カ
ラーファクシミリ装置の一部として図19に示す。モデ
ム1301は、送信及び受信のために、電話回線に双方
向に結合されている。モデム1301は、画像システム
バスに結合されているバッファ1302とも通信する。
モデム1301は、電話回線を通してファクシミリ信号
を受信する。モデム1301は、これらの信号を復号
し、一時的にバッファ1302内に記憶させる。転送制
御装置80は、デジタル画像/グラフィックスプロセッ
サ71によって処理させるためにデータメモリ22、2
3及び24へデータを転送することによってバッファ1
302を処理する。デジタル画像/グラフィックスプロ
セッサ71は入力データの先を行くことはできないか
ら、転送制御装置80もバッファ1302からメモリ9
へデータを転送することができる。デジタル画像/グラ
フィックスプロセッサ71は入力ファクシミリの画像デ
ータを処理する。これは、画像圧縮解除、雑音低減、誤
り修正、カラーベース補正等を含むことができる。処理
が完了すると、転送制御装置80は画像データをデータ
メモリ2、23及び24からビデオランダムアクセスメ
モリ(VRAM)1303へ転送する。プリンタ制御装
置1304は、フレーム制御装置90の制御の下に画像
データを呼び戻し、それをカラープリンタ1305へ供
給する。カラープリンタ1305はハードコピーを形成
する。
【0172】図19の装置はカラーファクシミリを送信
することもできる。撮像装置3は源文書を走査する。撮
像装置3は、フレーム制御装置90の制御の下に動作す
る画像収集制御装置4へ生画像データを供給する。この
画像データはビデオランダムアクセスメモリ1303内
に記憶される。図1の実施例が別々のビデオランダムア
クセスメモリを使用しているのに対して、図19に示す
実施例が画像収集及び画像表示の両方のためにビデオラ
ンダムアクセスメモリ1303を共用していることに注
目されたい。転送制御装置80はこの画像データを、デ
ータメモリ22、23及び24へ転送する。次いでデジ
タル画像/グラフィックスプロセッサ71は、画像デー
タに対して画像圧縮、誤り修正冗長度、カラーベース補
正等の処理を行う。処理されたデータは、ファクシミリ
送信を支援する必要に応じて転送制御装置80によって
バッファ1302へ転送される。相対データ転送速度に
依存して転送制御装置80は、データをバッファ130
2へ転送する前にメモリ9内に一時的に記憶させること
ができる。バッファ1302内のこの画像データは、モ
デム1301によって変調され、電話回線を通して送信
される。同一システム内に撮像装置及びカラープリンタ
が存在することによって、このシステムがカラー複写装
置としても動作することに注目されたい。この場合、デ
ータ圧縮及び圧縮解除は必要としないであろう。しか
し、それでも尚、デジタル画像/グラフィックスプロセ
ッサ71は、雑音低減及びカラーベース補正にとって有
用である。またコピーが元とは異なるカラーリングとな
るように故意にカラーをシフトさせるようにデジタル画
像/グラフィックスプロセッサ71をプログラムするこ
とも可能である。偽カラーリングとして知られるこの技
術は、データのダイナミックレンジを使用可能なプリン
トカラーのダイナミックレンジに合わせるのに有用であ
る。
【0173】以上の記載に関連して、以下の各項を開示
する。 (1) 3入力算術論理装置において、第1の多ビット
入力信号を受信する第1の入力と、第2の多ビット入力
信号を受信する第2の入力と、第3の多ビット入力信号
を受信する第3の入力と、上記第1、第2及び第3の入
力に接続されている組合せユニットとを備え、上記組合
せユニットは、上記第1、第2及び第3の入力信号の算
術及びブール混合組合せである多ビット出力信号をその
出力に形成することを特徴とする3入力算術論理装置。 (2) 上記組合せユニットは上記第3の入力信号に応
答して上記第1及び第2の多ビット入力信号の組合せで
ある上記多ビット出力信号を形成し、上記組合せは上記
第3の入力信号によって選択される上記(1)に記載の
3入力算術論理装置。 (3) 上記組合せユニットは複数の区分に分割され、
各区分は上記第1及び第2の入力信号の関連部分集合の
上記組合せを上記出力の対応する部分集合に生成し、上
記第3の入力信号は関連区分内において上記組合せユニ
ットが形成する上記組合せを選択する上記(2)に記載
の3入力算術論理装置。 (4) 第4の多ビットデジタル信号を受信する第4の
入力と、上記第4の入力源と上記組合せユニットの上記
第3の入力とに接続されている拡張回路をも備え、上記
拡張回路は上記第4の多ビットデジタル信号の選択され
た数のビットを繰り返し、それによって上記第4の多ビ
ット信号の各ビットが上記組合せユニットの対応する区
分のための上記第3の多ビット入力信号として供給され
る上記(3)に記載の3入力算術論理装置。 (5) 命令の源と、上記命令の源から命令を受信し、
受信した各命令に対応して上記算術可能化信号及び機能
信号の集合を生成する命令復号論理とを備え、上記組合
せユニットは、上記命令復号論理に接続されていて上記
機能信号の集合を受信し、受信した上記命令に対応して
上記第1、第2及び第3の入力信号の選択された算術、
ブール、もしくは算術及びブール混合機能を遂行する上
記(1)に記載の3入力算術論理装置。 (6) 上記命令復号論理は受信した命令に応答して上
記機能信号の集合を供給し、それによって上記組合せユ
ニットは第1の入力信号と、第2及び第3の入力信号の
ブール関数との算術和からなる算術及びブール混合機能
を遂行する上記(5)に記載の3入力算術論理装置。 (7) 上記命令復号論理は受信した命令に応答して上
記機能信号の集合を供給し、それによって上記組合せユ
ニットは第1の入力信号から、第2及び第3の入力信号
のブール関数を算術減算することからなる算術及びブー
ル混合機能を遂行する上記(5)に記載の3入力算術論
理装置。 (8) 上記命令復号論理は受信した命令に応答して上
記機能信号の集合を供給し、それによって上記組合せユ
ニットは第3の入力信号と、第1及び第2の入力信号に
対して遂行された少なくとも2つの算術演算とのブール
機能からなる算術及びブール混合機能を遂行する上記
(5)に記載の3入力算術論理装置。 (9) 上記命令復号論理は受信した命令に応答して上
記機能信号の集合を供給し、それによって上記組合せユ
ニットは第1及び第2の入力信号に対して遂行されたブ
ール機能と、第1及び第3の入力信号に対して遂行され
たブール機能の算術演算からなる算術及びブール混合機
能を遂行する上記(5)に記載の3入力算術論理装置。 (10) 上記命令復号論理は受信した命令に応答して
上記機能信号の集合を供給し、それによって上記組合せ
ユニットは入力信号の1つに対して感応しなくなり、残
余の入力信号の2つの入力機能を遂行する上記(5)に
記載の3入力算術論理装置。 (11) 上記命令の源は、算術可能化ビットを含む少
なくとも1つの算術命令を供給し、上記命令復号論理は
受信した算術命令に応答し、上記算術可能化ビットに等
しい算術可能化信号を供給する上記(5)に記載の3入
力算術論理装置。 (12) 上記命令の源は、関連機能信号に対応する個
々のビットを有する機能信号フィールドを含む少なくと
も1つの機能信号命令を供給し、上記命令復号論理は受
信した機能信号命令に応答し、上記機能信号フィールド
の上記対応する個々のビットに等しい機能信号を供給す
る上記(5)に記載の3入力算術論理装置。 (13) 上記命令の源は、関連機能信号に対応する個
々のビットを有する機能信号フィールド及び変更ビット
の集合を有する変更フィールドを含む少なくとも1つの
機能信号変更命令を供給し、上記命令復号論理は受信し
た機能信号変更命令に応答し、上記変更ビットの集合に
対応して変更された上記機能信号フィールドの上記対応
する個々のビットに等しい機能信号を供給する上記
(5)に記載の3入力算術論理装置。 (14) 上記命令復号論理は受信した機能信号変更命
令に応答し、上記第1、第2及び第3の入力信号の少な
くとも1つを変更する上記(13)に記載の3入力算術
論理装置。 (15) 上記命令復号論理に接続され、関連機能信号
に対応する個々のビットを有する機能信号フィールドを
含む特別機能データレジスタをも備え、上記命令の源
は、少なくとも1つの拡張算術論理装置命令を供給し、
上記命令復号論理は受信した拡張算術論理装置命令に応
答し、上記特別機能レジスタの上記機能信号フィールド
の上記対応する個々のビットに等しい機能信号を供給す
る上記(5)に記載の3入力算術論理装置。 (16) 上記特別機能データレジスタは変更ビットの
集合を有する変更フィールドをも含み、上記命令復号論
理は受信した機能信号変更命令に応答し、上記変更ビッ
トの集合に対応して変更された上記機能信号フィールド
の上記対応する個々のビットに等しい機能信号を供給す
る上記(15)に記載の3入力算術論理装置。 (17) 上記命令復号論理は受信した機能信号変更命
令に応答し、上記第1、第2及び第3の入力信号の少な
くとも1つを変更する上記(15)に記載の3入力算術
論理装置。 (18) 上記命令の源は、少なくとも1つの拡張算術
論理装置偽命令を供給し、上記命令復号論理は受信した
拡張算術論理装置偽命令に応答し、上記特別機能レジス
タの上記機能信号フィールドの上記対応する個々のビッ
トの関連反転に等しい機能信号を供給する上記(15)
に記載の3入力算術論理装置。 (19) 上記命令復号論理と上記組合せユニットの桁
上げ入力とに接続されている最下位ビットキャリーイン
発生器をも備え、上記命令復号論理は上記受信した命令
に応答し、上記受信した命令に対応して上記最下位ビッ
トキャリーイン発生器を制御する上記(5)に記載の3
入力算術論理装置。 (20) 上記命令復号論理に接続されていてキャリー
インビットを含む特別機能データレジスタをも備え、上
記命令の源は、少なくとも1つの特別レジスタキャリー
イン命令を供給し、上記命令復号論理は特別機能レジス
タキャリーイン命令に応答し、上記最下位ビットキャリ
ーイン発生器を制御して上記キャリーインビットに等し
い上記組合せユニットへの上記桁上げ入力を生成させる
上記(19)に記載の3入力算術論理装置。 (21) 上記命令の源は、少なくとも1つの符号依存
命令を供給し、上記命令復号論理は受信した符号依存命
令に応答し、もし所定の入力信号の最上位ビットが第1
の状態にあれば第1の集合号の機能信を供給し、もし所
定の入力信号の所定のビットが第2の状態にあれば第2
の集合の機能信号を供給する上記(5)に記載の3入力
算術論理装置。 (22) 上記命令復号論理は、上記第1の集合の機能
信号の所定の部分集合を反転することによって上記第2
の集合の機能信号を供給する上記(21)に記載の3入
力算術論理装置。 (23) 上記組合せユニットは、先ず上記第1、第2
及び第3の入力信号の少なくとも2つの少なくとも1つ
のブール組合せを形成し、次いで上記少なくとも1つの
ブール組合せを含む算術組合せを形成することによって
上記多ビット出力信号を形成する上記(1)に記載の3
入力算術論理装置。 (24) Aを上記第1の多ビット入力信号、Bを上記
第2の多ビット入力信号、Cを上記第3の多ビット入力
信号、F1(B,C)を上記第2及び第3の多ビット入
力信号の選択された第1のブール組合せ、そしてF2
(B,C)を上記第2及び第3の多ビット入力信号の選
択された第2のブール組合せとして、上記組合せユニッ
トは A&F1(B,C)+F2(B,C) なる組合せを形成する上記(1)に記載の3入力算術論
理装置。 (25) 上記組合せユニットにおいて、上記第1のブ
ール組合せF1(B,C)及び上記第2のブール組合せ
F2(B,C)は、第2の多ビット入力信号B及び第3
の多ビット入力信号Cのブール組合せの考え得る全ての
集合から独立的に選択される上記(24)に記載の3入
力算術論理装置。 (26) 上記組合せユニットに接続されていて桁上げ
入力を上記組合せユニットの最下位ビットへ供給する最
下位ビットキャリーイン発生器をも備え、上記桁上げ入
力は上記第2のブール組合せF2(B,C)の第1の所
定の部分集合に対する第1の状態と、上記第2のブール
組合せF2(B,C)の第2の所定の部分集合に対する
上記第1の状態とは反対の第2の状態とを有している上
記(25)に記載の3入力算術論理装置。 (27) 上記第2のブール組合せF2(B,C)の第
2の所定の部分集合は、上記第2の多ビット入力信号B
のビットワイズの反転と、上記第3の多ビット入力信号
Cのビットワイズの反転と、上記第2の多ビット入力信
号B及び上記第3の多ビット入力信号Cの全てのブール
組合せの反転とを含む上記(26)に記載の3入力算術
論理装置。 (28) 上記最下位ビットキャリーイン発生器は、上
記第2のブール組合せF2(B,C)の上記第1の所定
の部分集合に対して“0”の桁上げ入力を、また上記第
2のブール組合せF2(B,C)の上記第2の所定の部
分集合に対して“1”の桁上げ入力を形成する上記(2
7)に記載の3入力算術論理装置。 (29) Aを上記第1の多ビット入力信号、Bを上記
第2の多ビット入力信号、Cを上記第3の多ビット入力
信号、F1(A,B,C)を上記第1、第2及び第3の
多ビット入力信号の選択された第1のブール組合せ、そ
してF2(A,B,C)を上記第1、第2及び第3の多
ビット入力信号の選択された第2のブール組合せとし
て、上記組合せユニットは F1(A,B,C)+F2(A,B,C) なる組合せを形成する上記(1)に記載の3入力算術論
理装置。 (30) 上記組合せユニットにおいて、上記第1のブ
ール組合せF1(A,B,C)及び上記第2のブール組
合せF2(A,B,C)は第1の多ビット入力信号A、
第2の多ビット入力信号B及び第3の多ビット入力信号
Cのブール組合せの考え得る全ての集合から独立的に選
択される上記(29)に記載の3入力算術論理装置。 (31) 上記組合せユニットに接続されていて桁上げ
入力を上記組合せユニットの最下位ビットへ供給する最
下位ビットキャリーイン発生器をも備えている上記(3
0)に記載の3入力算術論理装置。 (32) データ処理装置において、データ及びアドレ
スを転送するデータシステムバスと、上記データシステ
ムバスに接続されていてデータを記憶し、上記データシ
ステムバスを通してデータを転送するシステムメモリ
と、上記データシステムバスに接続されていて、3入力
算術論理装置を有するデータプロセッサ回路とを備え、
上記3入力算術論理装置は、第1の多ビット入力信号を
受信する第1の入力と、第2の多ビット入力信号を受信
する第2の入力と、第3の多ビット入力信号を受信する
第3の入力と、上記第1、第2及び第3の入力に接続さ
れている組合せユニットとを含み、上記組合せユニット
は、上記第1、第2及び第3の多ビット入力信号の算術
及びブール混合組合せである多ビット出力信号をその出
力に形成することを特徴とするデータ処理装置。 (33) 上記データプロセッサ回路において、上記組
合せユニットは上記第3の入力信号に応答して上記第1
及び第2の多ビット入力信号の組合せである上記多ビッ
ト出力信号を形成し、上記組合せは上記第3の入力信号
によって選択される上記(32)に記載のデータ処理装
置。 (34) 上記データプロセッサ回路において、上記組
合せユニットは複数の区分に分割され、各区分は上記第
1及び第2の入力信号の関連部分集合の上記組合せを上
記出力の対応する部分集合に生成し、上記第3の入力信
号は関連区分内において上記組合せユニットが形成する
上記組合せを選択する上記(33)に記載のデータ処理
装置。 (35) 上記データプロセッサ回路は、第4の多ビッ
トデジタル信号を受信する第4の入力と、上記第4の入
力源と上記組合せユニットの上記第3の入力とに接続さ
れている拡張回路をも含み、上記拡張回路は、上記第4
の多ビットデジタル信号の選択された数のビットを繰り
返し、それによって上記第4の多ビット信号の各ビット
が上記組合せユニットの対応する区分のための上記第3
の多ビット入力信号として供給される上記(34)に記
載のデータ処理装置。 (36) 上記データプロセッサ回路は、命令の源と、
上記命令の源から命令を受信し、受信した各命令に対応
して上記算術可能化信号及び機能信号の集合を生成する
命令復号論理をも含み、上記組合せユニットは、上記命
令復号論理に接続されていて上記機能信号の集合を受信
し、受信した上記命令に対応して上記第1、第2及び第
3の入力信号の選択された算術、ブール、もしくは算術
及びブール混合機能を遂行する上記(32)に記載のデ
ータ処理装置。 (37) 上記データプロセッサ回路において、上記命
令復号論理は受信した命令に応答し、上記機能信号の集
合を供給し、それによって上記組合せユニットは第1の
入力信号と、第2及び第3の入力信号のブール関数との
算術和からなる算術及びブール混合機能を遂行する上記
(36)に記載のデータ処理装置。 (38) 上記データプロセッサ回路において、上記命
令復号論理は受信した命令に応答して上記機能信号の集
合を供給し、それによって上記組合せユニットは第1の
入力信号からの、第2及び第3の入力信号のブール関数
の算術減算からなる算術及びブール混合機能を遂行する
上記(36)に記載のデータ処理装置。 (39) 上記データプロセッサ回路において、上記命
令復号論理は受信した命令に応答して上記機能信号の集
合を供給し、それによって上記組合せユニットは第3の
入力信号と、第1及び第2の入力信号に対して遂行され
た少なくとも2つの算術演算とのブール機能からなる算
術及びブール混合機能を遂行する上記(36)に記載の
データ処理装置。 (40) 上記データプロセッサ回路において、上記命
令復号論理は受信した命令に応答して上記機能信号の集
合を供給し、それによって上記組合せユニットは第1及
び第2の入力信号に対して遂行されたブール機能と、第
1及び第3の入力信号に対して遂行されたブール機能の
算術演算からなる算術及びブール混合機能を遂行する上
記(36)に記載のデータ処理装置。 (41) 上記データプロセッサ回路において、上記命
令復号論理は受信した命令に応答して上記機能信号の集
合を供給し、それによって上記組合せユニットは入力信
号の1つに対して感応しなくなり、それによって残余の
入力信号で2つの入力機能を遂行する上記(36)に記
載のデータ処理装置。 (42) 上記データプロセッサ回路において、上記命
令の源は、算術可能化ビットを含む少なくとも1つの算
術命令を供給し、上記命令復号論理は受信した算術命令
に応答して上記算術可能化ビットに等しい算術可能化信
号を供給する上記(36)に記載のデータ処理装置。 (43) 上記データプロセッサ回路において、上記命
令の源は、関連機能信号に対応する個々のビットを有す
る機能信号フィールドを含む少なくとも1つの機能信号
命令を供給し、上記命令復号論理は受信した機能信号命
令に応答して上記機能信号フィールドの上記対応する個
々のビットに等しい機能信号を供給する上記(36)に
記載のデータ処理装置。 (44) 上記データプロセッサ回路において、上記命
令の源は、関連機能信号に対応する個々のビットを有す
る機能信号フィールド及び変更ビットの集合を有する変
更フィールドを含む少なくとも1つの機能信号変更命令
を供給し、上記命令復号論理は受信した機能信号変更命
令に応答して上記変更ビットの集合に対応して変更され
た上記機能信号フィールドの上記対応する個々のビット
に等しい機能信号を供給する上記(36)に記載のデー
タ処理装置。 (45) 上記データプロセッサ回路において、上記命
令復号論理は受信した機能信号変更命令に応答して上記
第1、第2及び第3の入力信号の少なくとも1つを変更
する上記(44)に記載のデータ処理装置。 (46) 上記データプロセッサ回路は、上記命令復号
論理に接続されていて関連機能信号に対応する個々のビ
ットを有する機能信号フィールドを含む特別機能データ
レジスタをも備え、上記命令の源は、少なくとも1つの
拡張算術論理装置命令を供給し、上記命令復号論理は受
信した拡張算術論理装置命令に応答し、上記特別機能レ
ジスタの上記機能信号フィールドの上記対応する個々の
ビットに等しい機能信号を供給する上記(36)に記載
のデータ処理装置。 (47) 上記データプロセッサ回路において、上記特
別機能データレジスタは変更ビットの集合を有する変更
フィールドをも含み、上記命令復号論理は受信した機能
信号変更命令に応答し、上記変更ビットの集合に対応し
て変更された上記機能信号フィールドの上記対応する個
々のビットに等しい機能信号を供給する上記(46)に
記載のデータ処理装置。 (48) 上記データプロセッサ回路において、上記命
令復号論理は受信した機能信号変更命令に応答し、上記
第1、第2及び第3の入力信号の少なくとも1つを変更
する上記(46)に記載のデータ処理装置。 (49) 上記データプロセッサ回路において、上記命
令の源は、少なくとも1つの拡張算術論理装置偽命令を
供給し、上記命令復号論理は受信した拡張算術論理装置
偽命令に応答し、上記特別機能レジスタの上記機能信号
フィールドの上記対応する個々のビットの関連反転に等
しい機能信号を供給する上記(46)に記載のデータ処
理装置。 (50) 上記データプロセッサ回路は、上記命令復号
論理と上記組合せユニットの桁上げ入力とに接続されて
いる最下位ビットキャリーイン発生器をも備え、上記命
令復号論理は上記受信した命令に応答し、上記受信した
命令に対応して上記最下位ビットキャリーイン発生器を
制御する上記(36)に記載のデータ処理装置。 (51) 上記データプロセッサ回路は、上記命令復号
論理に接続されていてキャリーインビットを含む特別機
能データレジスタをも備え、上記命令の源は、少なくと
も1つの特別レジスタキャリーイン命令を供給し、上記
命令復号論理は特別機能レジスタキャリーイン命令に応
答し、上記最下位ビットキャリーイン発生器を制御して
上記キャリーインビットに等しい上記組合せユニットへ
の上記桁上げ入力を生成させる上記(50)に記載のデ
ータ処理装置。 (52) 上記データプロセッサ回路において、上記命
令の源は、少なくとも1つの符号依存命令を供給し、上
記命令復号論理は受信した符号依存命令に応答し、もし
所定の入力信号の最上位ビットが第1の状態にあれば第
1の集合の機能信号を供給し、もし所定の入力信号の所
定のビットが第2の状態にあれば第2の集合の機能信号
を供給する上記(36)に記載のデータ処理装置。 (53) 上記データプロセッサ回路において、上記命
令復号論理は、上記第1の集合の機能信号の所定の部分
集合を反転することによって上記第2の集合の機能信号
を供給する上記(52)に記載のデータ処理装置。 (54) 上記データプロセッサ回路において、上記組
合せユニットは、先ず上記第1、第2及び第3の入力信
号の少なくとも2つの少なくとも1つのブール組合せを
形成し、次いで上記少なくとも1つのブール組合せを含
む算術組合せを形成することによって上記多ビット出力
信号を形成する上記(32)に記載のデータ処理装置。 (55) 上記データプロセッサ回路において、Aを上
記第1の多ビット入力信号、Bを上記第2の多ビット入
力信号、Cを上記第3の多ビット入力信号、F1(B,
C)を上記第2及び第3の多ビット入力信号の選択され
た第1のブール組合せ、そしてF2(B,C)を上記第
2及び第3の多ビット入力信号の選択された第2のブー
ル組合せとして、上記組合せユニットは A&F1(B,C)+F2(B,C) なる組合せを形成する上記(32)に記載のデータ処理
装置。 (56) 上記データプロセッサ回路の上記組合せユニ
ットにおいて、上記第1のブール組合せF1(B,C)
及び上記第2のブール組合せF2(B,C)は第2の多
ビット入力信号B及び第3の多ビット入力信号Cのブー
ル組合せの考え得る全ての集合から独立的に選択される
上記(55)に記載のデータ処理装置。 (57) 上記データプロセッサ回路において、上記組
合せユニットに接続されていて桁上げ入力を上記組合せ
ユニットの最下位ビットへ供給する最下位ビットキャリ
ーイン発生器をも備え、上記桁上げ入力は上記第2のブ
ール組合せF2(B,C)の第1の所定の部分集合に対
する第1の状態と、上記第2のブール組合せF2(B,
C)の第2の所定の部分集合に対する上記第1の状態と
は反対の第2の状態とを有している上記(56)に記載
のデータ処理装置。 (58) 上記データプロセッサ回路において、上記第
2のブール組合せF2(B,C)の第2の所定の部分集
合は、上記第2の多ビット入力信号Bのビットワイズの
反転と、上記第3の多ビット入力信号Cのビットワイズ
の反転と、上記第2の多ビット入力信号B及び上記第3
の多ビット入力信号Cの全てのブール組合せの反転とを
含む上記(57)に記載のデータ処理装置。 (59) 上記データプロセッサ回路において、上記最
下位ビットキャリーイン発生器は、上記第2のブール組
合せF2(B,C)の上記第1の所定の部分集合に対し
て“0”の桁上げ入力を、また上記第2のブール組合せ
F2(B,C)の上記第2の所定の部分集合に対して
“1”の桁上げ入力を形成する上記(58)に記載のデ
ータ処理装置。 (60) 上記データプロセッサ回路において、Aを上
記第1の多ビット入力信号、Bを上記第2の多ビット入
力信号、Cを上記第3の多ビット入力信号、F1(A,
B,C)を上記第1、第2及び第3の多ビット入力信号
の選択された第1のブール組合せ、そしてF2(A,
B,C)を上記第1、第2及び第3の多ビット入力信号
の選択された第2のブール組合せとして、上記組合せユ
ニットは F1(A,B,C)+F2(A,B,C) なる組合せを形成する上記(32)に記載のデータ処理
装置。 (61) 上記データプロセッサ回路の上記組合せユニ
ットにおいて、上記第1のブール組合せF1(A,B,
C)及び上記第2のブール組合せF2(A,B,C)は
第1の多ビット入力信号A、第2の多ビット入力信号B
及び第3の多ビット入力信号Cのブール組合せの考え得
る全ての集合から独立的に選択される上記(60)に記
載のデータ処理装置。 (62) 上記データプロセッサ回路は、上記組合せユ
ニットに接続されていて桁上げ入力を上記組合せユニッ
トの最下位ビットへ供給する最下位ビットキャリーイン
発生器をも備えている上記(60)に記載のデータ処理
装置。 (63) 上記データプロセッサ回路は、上記データプ
ロセッサ回路に接続されている複数のデータメモリと、
命令を上記データプロセッサ回路へ供給する命令メモリ
と、上記データシステムバスに接続されている転送制御
装置をも含み、上記各データメモリ及び上記命令メモリ
は、上記システムメモリと上記複数のデータメモリとの
間、及び上記システムメモリと上記命令メモリとの間の
データ転送を制御する上記(32)に記載のデータ処理
装置。 (64) 上記データプロセッサ回路は、上記データ処
理回路と同一の少なくとも1つの付加的なデータプロセ
ッサ回路と、各付加的なデータプロセッサ回路に接続さ
れている複数の付加的なデータメモリと、命令を各付加
的なデータプロセッサ回路に供給する付加的な命令メモ
リをも含み、上記転送制御装置は、上記各付加的なデー
タメモリと上記各付加的な命令メモリとにも接続され、
上記システムメモリと上記各付加的なデータメモリとの
間、及び上記システムメモリと上記各付加的な命令メモ
リとの間のデータの転送を制御する上記(63)に記載
のデータ処理装置。 (65) 上記データプロセッサ回路、上記データメモ
リ、上記命令メモリ、上記各付加的なデータプロセッサ
回路、各付加的な命令メモリ、及び上記転送制御装置を
含む上記データ処理回路は単一の集積回路上に形成され
ている上記(64)に記載のデータ処理装置。 (66) 上記データプロセッサ回路は、マスタデータ
プロセッサと、上記マスタデータプロセッサに接続され
ている複数のマスタデータメモリと、命令を上記マスタ
データプロセッサへ供給する少なくとも1つのマスタ命
令メモリをも含み、上記転送制御装置は、上記各マスタ
データメモリと上記各マスタ命令メモリとにも接続さ
れ、上記システムメモリと上記各マスタデータメモリと
の間、及び上記システムメモリと上記マスタ命令メモリ
との間のデータの転送を制御する上記(63)に記載の
データ処理装置。 (67) 上記データプロセッサ回路、上記データメモ
リ、上記マスタデータプロセッサ、上記各マスタデータ
メモリ、各マスタ命令メモリ、及び上記転送制御装置を
含む上記データプロセッサ回路は単一の集積回路上に形
成されている上記(66)に記載のデータ処理装置。 (68) 上記システムメモリは、画像データを複数の
画素で記憶する画像メモリからなり、上記データ処理装
置は、上記画像メモリに接続されていて上記画像メモリ
内に記憶されている複数の画素からなる画像の視覚的に
知覚可能な出力を生成する画像表示装置をも備えている
上記(32)に記載のデータ処理装置。 (69) 上記画像メモリと上記画像表示装置との間の
接続を形成するパレットをも備え、上記パレットは上記
画像メモリから呼び戻された画素を、上記画像表示装置
を駆動するビデオ信号に変換し、上記データプロセッサ
回路は、上記パレットに接続されていて上記パレットの
画素からビデオ信号への変換を制御するフレーム制御装
置をも含む上記(68)に記載のデータ処理装置。 (70) 上記システムメモリは、画像データを複数の
画素で記憶する画像メモリからなり、上記データ処理装
置は、上記画像メモリに接続されていて上記画像メモリ
内に記憶されている複数の画素からなる画像の印刷され
た出力を生成するプリンタをも備えている上記(32)
に記載のデータ処理装置。 (71) 上記プリンタは、カラープリンタからなる上
記(70)に記載のデータ処理装置。 (72) 上記画像メモリと上記プリンタとの間の接続
を形成するプリンタ制御装置をも備え、上記プリンタ制
御装置は上記画像メモリから呼び戻された画素を、上記
プリンタを駆動するプリント信号に変換し、上記データ
プロセッサ回路は、上記プリンタ制御装置に接続されて
いて上記プリンタ制御装置の画素からプリント信号への
変換を制御するフレーム制御装置をも含む上記(70)
に記載のデータ処理装置。 (73) 上記システムメモリは、画像データを複数の
画素で記憶する画像メモリからなり、上記データ処理装
置は、上記画像メモリに接続されている画像信号入力を
生成する撮像装置をも備えている上記(32)に記載の
データ処理装置。 (74) 上記撮像装置と上記画像メモリとの間の接続
を形成する画像収集制御装置をも備え、上記画像収集制
御装置は上記画像信号を画素に変換して上記画像メモリ
内に記憶させるために供給し、上記データプロセッサ回
路は、上記画像収集制御装置に接続されていて上記画像
収集制御装置の上記画像信号から上記画素への変換を制
御するフレーム制御装置をも含む上記(73)に記載の
データ処理装置。 (75) 上記データシステムバスと、通信回線とに接
続されているモデムをも備えている上記(32)に記載
のデータ処理装置。 (76) 上記データシステムバスに接続されているホ
スト処理装置をも備えている上記(32)に記載のデー
タ処理装置。 (77) 上記ホスト処理装置に接続され、データ及び
アドレスを転送するホストシステムバスと、上記ホスト
システムバスに接続されている少なくとも1つのホスト
周辺装置をも備えている上記(76)に記載のデータ処
理装置。 (78) 3入力算術論理装置(230)は3つの多ビ
ット入力信号の算術及びブール混合組合せを形成する。
算術論理装置(230)は先ずブール組合せを形成し、
次いで算術組合せを形成する。現命令は、形成される組
合せを制御する機能信号F0−F7を生成する命令デコ
ーダ(250、245)を駆動する。3入力算術論理装
置(230)はビット回路(400)の集合を使用する
ことが好ましく、各ビット回路は桁上げ伝播、生成及び
キル信号を形成する。これらの信号を多レベル論理樹木
回路及び桁上げ入力と共に使用して、ビット結果及び次
のビット回路への桁上げ出力を発生させることができ
る。この構造は、現命令に基づいて3つの入力信号の選
択された算術、ブール、もしくは算術及びブール混合機
能の形成を可能にする。入力信号の1つに対して組合せ
を感応させないように機能信号を選択することができ、
従って残余の入力信号の2つの入力機能を遂行させるこ
とができる。命令自体が機能信号及び機能変更ビットを
含むことも、もしくは機能信号及び機能変更信号を特別
データレジスタ内に記憶させることもできる。機能変更
信号は使用に先立って機能信号を変更せしめる。3入力
算術論理装置(230)は、最下位ビットへ桁上げ入力
を供給する最下位ビットキャリーイン発生器(246)
を含む。この桁上げ入力は形成される組合せによって決
定され、一般的には減算中に限って“1”である。桁上
げ入力は、若干の命令のための特別目的データレジスタ
(D0)内に指定することができる。形成される組合せ
は、入力の1つの符号ビットに依存して任意選択的に変
更される。
【図面の簡単な説明】
【図1】本発明が使用される画像処理システムのシステ
ムアーキテクチャを示す図である。
【図2】本発明の好ましい実施例を形成している単一集
積回路多重プロセッサのアーキテクチャを示す図であ
る。
【図3】図2に示すデジタル画像/グラフィックスプロ
セッサの1つを示すブロック線図である。
【図4】図2に示すデジタル画像/グラフィックスプロ
セッサの動作のパイプライン段を示す概要図である。
【図5】図3に示すデジタル画像/グラフィックスプロ
セッサのデータユニットのブロック線図である。
【図6】図5に示すデータユニットの状態レジスタのフ
ィールドを定義する図である。
【図7】図5に示すデータユニットの算術論理装置を分
割する様を示すブロック線図である。
【図8】回転レジスタとして示した図5に示すデータユ
ニットのデータレジスタのアドレス指定方法を示すブロ
ック線図である。
【図9】図5に示すデータユニットの第1のデータレジ
スタのフィールドを定義する図である。
【図10】図5に示すデータユニットの算術論理装置の
1ビット回路の構造を示すブロック線図である。
【図11】図10に示す1ビット回路の結果論理及びキ
ャリーアウト論理の構造を示すブロック線図である。
【図12】図10に示す1ビット回路のブール関数発生
器の構造を示すブロック線図である。
【図13】図5に示すデータユニットの機能信号発生器
の機能信号セレクタを示すブロック線図である。
【図14】図5に示すデータユニットの機能信号発生器
の機能信号変更回路部分を示すブロック線図である。
【図15】図5に示すデータユニットのビット0キャリ
ーイン発生器を示すブロック線図である。
【図16】図10及び11に示す算術論理装置の概念を
示すブロック線図である。
【図17】算術論理装置の代替実施例の概念を示すブロ
ック線図である。
【図18】図3に示すデジタル画像/グラフィックスプ
ロセッサの動作を制御する命令ワードの詳細図である。
【図19】カラーファクシミリシステム内に単一のデジ
タル画像/グラフィックスプロセッサを有する本発明の
マイクロプロセッサ集積回路の概要図である。
【符号の説明】
1 ホスト処理システム 2 ホスト周辺装置 3 撮像装置 4 画像収集制御装置 5、6 ビデオRAM 7 ビデオパレット 8 ビデオ表示装置 9 メモリ 10、20 RAM 16 トランシーバ 50 クロスバ 51 交差点 60 マスタプロセッサ 71、72、73、74 デジタル画像/グラフィック
スプロセッサ 80 転送制御装置 90 フレーム制御装置 100 多重プロセッサ集積回路 110 データユニット 120 アドレスユニット 130 プログラムの流れ制御ユニット 140 データポートユニット 141 ローカルデータポート 145 大域データポート 200 データレジスタ 208 回転レジスタ 210 状態レジスタ 211 複数フラグレジスタ 220 乗算器 224 積左桁送り回路 226 加算器 230 3入力算術論理装置 235 バレル回転子 237 LMO/RMO/LMBC/RMBC回路 238 拡張回路 239 マスク発生器 245 機能信号発生器 246 ビット0キャリーイン発生器 250 命令復号論理 301、302、303、304 算術論理装置の区分 311、312、313、314 マルチプレクサ 321、322、323、324 0検出回路 400 ビット回路 401 結果論理 402 キャリーアウト論理 403 ブール関数発生器 1301 モデム 1302 バッファ 1303 ビデオRAM 1304 プリンタ制御装置 1305 カラープリンタ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 リチャード シンプソン イギリス エムケイ43 7ジェイユーベッ ドフォード カールトン カウンティ ザ マーシュ 21 (72)発明者 ブレンダン ウォルシュ イギリス エムケイ41 ビーエイチティ ベッドフォード チリンガム グリーン 14

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 3入力算術論理装置において、 第1の多ビット入力信号を受信する第1の入力と、 第2の多ビット入力信号を受信する第2の入力と、 第3の多ビット入力信号を受信する第3の入力と、 上記第1、第2及び第3の入力に接続されている組合せ
    ユニットとを備え、 上記組合せユニットは、上記第1、第2及び第3の入力
    信号の算術及びブール混合組合せである多ビット出力信
    号をその出力に形成することを特徴とする3入力算術論
    理装置。
JP6296706A 1993-11-30 1994-11-30 算術及び論理混合組合せを形成する3入力算術論理装置 Pending JPH087083A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/159285 1993-11-30
US08/159,285 US5596763A (en) 1993-11-30 1993-11-30 Three input arithmetic logic unit forming mixed arithmetic and boolean combinations

Publications (1)

Publication Number Publication Date
JPH087083A true JPH087083A (ja) 1996-01-12

Family

ID=22571899

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6296706A Pending JPH087083A (ja) 1993-11-30 1994-11-30 算術及び論理混合組合せを形成する3入力算術論理装置

Country Status (4)

Country Link
US (1) US5596763A (ja)
EP (1) EP0655676A3 (ja)
JP (1) JPH087083A (ja)
KR (1) KR100348950B1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6598153B1 (en) 1999-12-10 2003-07-22 International Business Machines Corporation Processor and method that accelerate evaluation of pairs of condition-setting and branch instructions
JP2014194753A (ja) * 2013-03-15 2014-10-09 Intel Corp 複数のテストソースを用いた論理和テストおよび論理積テスト機能を実現する融合可能な命令と論理
JP2016103280A (ja) * 2013-03-15 2016-06-02 インテル・コーポレーション 複数の試験ソースに対するor試験及びand試験機能を提供するために命令をフュージングする方法及び装置

Families Citing this family (97)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2317971B (en) * 1996-10-02 2000-12-06 Advanced Risc Mach Ltd Digital adder circuit
US6952823B2 (en) * 1998-09-01 2005-10-04 Pkware, Inc. Software patch generator using compression techniques
US6318156B1 (en) * 1999-10-28 2001-11-20 Micro Motion, Inc. Multiphase flow measurement system
US20060143253A1 (en) * 2000-03-09 2006-06-29 Pkware, Inc. System and method for manipulating and managing computer archive files
US20060155788A1 (en) * 2000-03-09 2006-07-13 Pkware, Inc. System and method for manipulating and managing computer archive files
US20060173847A1 (en) * 2000-03-09 2006-08-03 Pkware, Inc. System and method for manipulating and managing computer archive files
US6879988B2 (en) * 2000-03-09 2005-04-12 Pkware System and method for manipulating and managing computer archive files
US8959582B2 (en) 2000-03-09 2015-02-17 Pkware, Inc. System and method for manipulating and managing computer archive files
US8230482B2 (en) 2000-03-09 2012-07-24 Pkware, Inc. System and method for manipulating and managing computer archive files
US20060143237A1 (en) * 2000-03-09 2006-06-29 Pkware, Inc. System and method for manipulating and managing computer archive files
US20060143249A1 (en) * 2000-03-09 2006-06-29 Pkware, Inc. System and method for manipulating and managing computer archive files
US20060143199A1 (en) * 2000-03-09 2006-06-29 Pkware, Inc. System and method for manipulating and managing computer archive files
US20060143180A1 (en) * 2000-03-09 2006-06-29 Pkware, Inc. System and method for manipulating and managing computer archive files
US7844579B2 (en) * 2000-03-09 2010-11-30 Pkware, Inc. System and method for manipulating and managing computer archive files
US20050015608A1 (en) * 2003-07-16 2005-01-20 Pkware, Inc. Method for strongly encrypting .ZIP files
US7119576B1 (en) 2000-09-18 2006-10-10 Altera Corporation Devices and methods with programmable logic and digital signal processing regions
US7346644B1 (en) 2000-09-18 2008-03-18 Altera Corporation Devices and methods with programmable logic and digital signal processing regions
US8620980B1 (en) 2005-09-27 2013-12-31 Altera Corporation Programmable device with specialized multiplier blocks
US8041759B1 (en) 2006-02-09 2011-10-18 Altera Corporation Specialized processing block for programmable logic device
US8266198B2 (en) * 2006-02-09 2012-09-11 Altera Corporation Specialized processing block for programmable logic device
US8266199B2 (en) * 2006-02-09 2012-09-11 Altera Corporation Specialized processing block for programmable logic device
US8301681B1 (en) 2006-02-09 2012-10-30 Altera Corporation Specialized processing block for programmable logic device
US7836117B1 (en) 2006-04-07 2010-11-16 Altera Corporation Specialized processing block for programmable logic device
US7822799B1 (en) 2006-06-26 2010-10-26 Altera Corporation Adder-rounder circuitry for specialized processing block in programmable logic device
US8386550B1 (en) 2006-09-20 2013-02-26 Altera Corporation Method for configuring a finite impulse response filter in a programmable logic device
US8386553B1 (en) 2006-12-05 2013-02-26 Altera Corporation Large multiplier for programmable logic device
US7930336B2 (en) * 2006-12-05 2011-04-19 Altera Corporation Large multiplier for programmable logic device
US7814137B1 (en) 2007-01-09 2010-10-12 Altera Corporation Combined interpolation and decimation filter for programmable logic device
US8650231B1 (en) 2007-01-22 2014-02-11 Altera Corporation Configuring floating point operations in a programmable device
US7865541B1 (en) 2007-01-22 2011-01-04 Altera Corporation Configuring floating point operations in a programmable logic device
US8645450B1 (en) 2007-03-02 2014-02-04 Altera Corporation Multiplier-accumulator circuitry and methods
US7949699B1 (en) 2007-08-30 2011-05-24 Altera Corporation Implementation of decimation filter in integrated circuit device using ram-based data storage
US8959137B1 (en) 2008-02-20 2015-02-17 Altera Corporation Implementing large multipliers in a programmable integrated circuit device
US8244789B1 (en) 2008-03-14 2012-08-14 Altera Corporation Normalization of floating point operations in a programmable integrated circuit device
US8626815B1 (en) 2008-07-14 2014-01-07 Altera Corporation Configuring a programmable integrated circuit device to perform matrix multiplication
US8755515B1 (en) 2008-09-29 2014-06-17 Wai Wu Parallel signal processing system and method
US8255448B1 (en) 2008-10-02 2012-08-28 Altera Corporation Implementing division in a programmable integrated circuit device
US8307023B1 (en) 2008-10-10 2012-11-06 Altera Corporation DSP block for implementing large multiplier on a programmable integrated circuit device
US8468192B1 (en) 2009-03-03 2013-06-18 Altera Corporation Implementing multipliers in a programmable integrated circuit device
US8549055B2 (en) 2009-03-03 2013-10-01 Altera Corporation Modular digital signal processing circuitry with optionally usable, dedicated connections between modules of the circuitry
US8886696B1 (en) 2009-03-03 2014-11-11 Altera Corporation Digital signal processing circuitry with redundancy and ability to support larger multipliers
US8706790B1 (en) 2009-03-03 2014-04-22 Altera Corporation Implementing mixed-precision floating-point operations in a programmable integrated circuit device
US8645449B1 (en) 2009-03-03 2014-02-04 Altera Corporation Combined floating point adder and subtractor
US8805916B2 (en) * 2009-03-03 2014-08-12 Altera Corporation Digital signal processing circuitry with redundancy and bidirectional data paths
US20100241638A1 (en) * 2009-03-18 2010-09-23 O'sullivan Patrick Joseph Sorting contacts
US8650236B1 (en) 2009-08-04 2014-02-11 Altera Corporation High-rate interpolation or decimation filter in integrated circuit device
US8396914B1 (en) 2009-09-11 2013-03-12 Altera Corporation Matrix decomposition in an integrated circuit device
US8412756B1 (en) 2009-09-11 2013-04-02 Altera Corporation Multi-operand floating point operations in a programmable integrated circuit device
WO2011044398A2 (en) 2009-10-07 2011-04-14 Qsigma, Inc. Computer for amdahl-compliant algorithms like matrix inversion
US8605015B2 (en) * 2009-12-23 2013-12-10 Syndiant, Inc. Spatial light modulator with masking-comparators
US7948267B1 (en) 2010-02-09 2011-05-24 Altera Corporation Efficient rounding circuits and methods in configurable integrated circuit devices
US8539016B1 (en) 2010-02-09 2013-09-17 Altera Corporation QR decomposition in an integrated circuit device
US8601044B2 (en) * 2010-03-02 2013-12-03 Altera Corporation Discrete Fourier Transform in an integrated circuit device
US8458243B1 (en) 2010-03-03 2013-06-04 Altera Corporation Digital signal processing circuit blocks with support for systolic finite-impulse-response digital filtering
US8484265B1 (en) 2010-03-04 2013-07-09 Altera Corporation Angular range reduction in an integrated circuit device
US8510354B1 (en) 2010-03-12 2013-08-13 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
US8539014B2 (en) * 2010-03-25 2013-09-17 Altera Corporation Solving linear matrices in an integrated circuit device
US8862650B2 (en) 2010-06-25 2014-10-14 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
US8589463B2 (en) 2010-06-25 2013-11-19 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
US8577951B1 (en) 2010-08-19 2013-11-05 Altera Corporation Matrix operations in an integrated circuit device
US8645451B2 (en) 2011-03-10 2014-02-04 Altera Corporation Double-clocked specialized processing block in an integrated circuit device
US9600278B1 (en) 2011-05-09 2017-03-21 Altera Corporation Programmable device using fixed and configurable logic to implement recursive trees
US8812576B1 (en) 2011-09-12 2014-08-19 Altera Corporation QR decomposition in an integrated circuit device
US8949298B1 (en) 2011-09-16 2015-02-03 Altera Corporation Computing floating-point polynomials in an integrated circuit device
US9053045B1 (en) 2011-09-16 2015-06-09 Altera Corporation Computing floating-point polynomials in an integrated circuit device
US8762443B1 (en) 2011-11-15 2014-06-24 Altera Corporation Matrix operations in an integrated circuit device
US8543634B1 (en) 2012-03-30 2013-09-24 Altera Corporation Specialized processing block for programmable integrated circuit device
US9098332B1 (en) 2012-06-01 2015-08-04 Altera Corporation Specialized processing block with fixed- and floating-point structures
US8996600B1 (en) 2012-08-03 2015-03-31 Altera Corporation Specialized processing block for implementing floating-point multiplier with subnormal operation support
US10318308B2 (en) * 2012-10-31 2019-06-11 Mobileye Vision Technologies Ltd. Arithmetic logic unit
US9207909B1 (en) 2012-11-26 2015-12-08 Altera Corporation Polynomial calculations optimized for programmable integrated circuit device structures
RU2517720C1 (ru) * 2013-01-09 2014-05-27 Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "Ульяновский государственный технический университет" Логический преобразователь
RU2518669C1 (ru) * 2013-02-01 2014-06-10 Общество с ограниченной ответственностью "ИВЛА-ОПТ" Логический преобразователь
US9189200B1 (en) 2013-03-14 2015-11-17 Altera Corporation Multiple-precision processing block in a programmable integrated circuit device
US9348795B1 (en) 2013-07-03 2016-05-24 Altera Corporation Programmable device using fixed and configurable logic to implement floating-point rounding
RU2542920C2 (ru) * 2013-07-19 2015-02-27 Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "Ульяновский государственный технический университет" Логический модуль
RU2542895C1 (ru) * 2013-11-06 2015-02-27 Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "Ульяновский государственный технический университет" Логический преобразователь
US9454345B1 (en) * 2013-12-02 2016-09-27 Google Inc. Apparatus for faster division
US9379687B1 (en) 2014-01-14 2016-06-28 Altera Corporation Pipelined systolic finite impulse response filter
RU2549151C1 (ru) * 2014-03-28 2015-04-20 Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "Ульяновский государственный технический университет" Логический преобразователь
RU2549158C1 (ru) * 2014-03-28 2015-04-20 Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "Ульяновский государственный технический университет" Логический преобразователь
US9933841B2 (en) * 2014-04-17 2018-04-03 Arm Limited Reuse of results of back-to-back micro-operations
US9684488B2 (en) 2015-03-26 2017-06-20 Altera Corporation Combined adder and pre-adder for high-radix multiplier circuit
RU2602331C1 (ru) * 2015-09-25 2016-11-20 Олег Александрович Козелков Логический преобразователь
RU2621376C1 (ru) * 2015-12-08 2017-06-02 Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "Ульяновский государственный технический университет" Логический модуль
RU2641454C2 (ru) * 2016-03-09 2018-01-17 федеральное государственное бюджетное образовательное учреждение высшего образования "Ульяновский государственный технический университет" Логический преобразователь
US10942706B2 (en) 2017-05-05 2021-03-09 Intel Corporation Implementation of floating-point trigonometric functions in an integrated circuit device
US10481870B2 (en) 2017-05-12 2019-11-19 Google Llc Circuit to perform dual input value absolute value and sum operation
RU2676888C1 (ru) * 2017-11-22 2019-01-11 федеральное государственное бюджетное образовательное учреждение высшего образования "Ульяновский государственный технический университет" Логический модуль
RU2700550C1 (ru) * 2018-08-30 2019-09-17 федеральное государственное бюджетное образовательное учреждение высшего образования "Ульяновский государственный технический университет" Логический модуль
RU2704735C1 (ru) * 2019-03-11 2019-10-30 федеральное государственное бюджетное образовательное учреждение высшего образования "Ульяновский государственный технический университет" Пороговый модуль
RU2757821C1 (ru) * 2020-09-24 2021-10-21 федеральное государственное бюджетное образовательное учреждение высшего образования "Ульяновский государственный технический университет" Пороговый модуль
CN112114776B (zh) * 2020-09-30 2023-12-15 本源量子计算科技(合肥)股份有限公司 一种量子乘法运算方法、装置、电子装置及存储介质
RU2758800C1 (ru) * 2020-10-28 2021-11-02 федеральное государственное бюджетное образовательное учреждение высшего образования "Ульяновский государственный технический университет" Пороговый модуль
RU2758186C1 (ru) * 2020-10-28 2021-10-26 федеральное государственное бюджетное образовательное учреждение высшего образования "Ульяновский государственный технический университет" Логический преобразователь
RU2758185C1 (ru) * 2020-10-28 2021-10-26 федеральное государственное бюджетное образовательное учреждение высшего образования "Ульяновский государственный технический университет" Логический преобразователь
RU2768627C1 (ru) * 2021-04-02 2022-03-24 федеральное государственное бюджетное образовательное учреждение высшего образования "Ульяновский государственный технический университет" Логический преобразователь

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3983539A (en) * 1969-05-19 1976-09-28 Burroughs Corporation Polymorphic programmable units employing plural levels of sub-instruction sets
US4503511A (en) * 1971-08-31 1985-03-05 Texas Instruments Incorporated Computing system with multifunctional arithmetic logic unit in single integrated circuit
US4037094A (en) * 1971-08-31 1977-07-19 Texas Instruments Incorporated Multi-functional arithmetic and logical unit
US3789206A (en) * 1972-04-04 1974-01-29 Bell Telephone Labor Inc Threshold logic overflow detector for a three-input adder
FR2253415A5 (ja) * 1973-12-04 1975-06-27 Cii
US3937940A (en) * 1974-11-26 1976-02-10 Texas Instruments Incorporated Direct compare in an electronic digital calculator
NL7601785A (nl) * 1976-02-23 1977-08-25 Philips Nv Meer-cijferig rekenorgaan.
BE844199A (nl) * 1976-07-16 1976-11-16 Inrichting voor het vermenigvuldigen van binaire getallen
US4125901A (en) * 1976-10-27 1978-11-14 Texas Instruments Incorporated Electronic calculator or microprocessor having a multi-input arithmetic unit
US4467444A (en) * 1980-08-01 1984-08-21 Advanced Micro Devices, Inc. Processor unit for microcomputer systems
US4373191A (en) * 1980-11-10 1983-02-08 Motorola Inc. Absolute magnitude difference function generator for an LPC system
US4432053A (en) * 1981-06-29 1984-02-14 Burroughs Corporation Address generating apparatus and method
US4562537A (en) * 1984-04-13 1985-12-31 Texas Instruments Incorporated High speed processor
US4779210A (en) * 1984-05-02 1988-10-18 Hitachi Engineering, Co. Ltd. Graphic processing apparatus
US4761733A (en) * 1985-03-11 1988-08-02 Celerity Computing Direct-execution microprogrammable microprocessor system
US4689807A (en) * 1985-11-06 1987-08-25 Texas Instruments Incorporated Linked cell discharge detector having improved response time
US5095301A (en) * 1985-11-06 1992-03-10 Texas Instruments Incorporated Graphics processing apparatus having color expand operation for drawing color graphics from monochrome data
US4752893A (en) * 1985-11-06 1988-06-21 Texas Instruments Incorporated Graphics data processing apparatus having image operations with transparent color having a selectable number of bits
US5294918A (en) * 1985-11-06 1994-03-15 Texas Instruments Incorporated Graphics processing apparatus having color expand operation for drawing color graphics from monochrome data
JPS62257526A (ja) * 1986-04-30 1987-11-10 Mitsubishi Electric Corp 算術論理演算装置
US5051940A (en) * 1990-04-04 1991-09-24 International Business Machines Corporation Data dependency collapsing hardware apparatus
JPS638971A (ja) * 1986-06-30 1988-01-14 Nec Corp 多項式ベクトル演算実行制御装置
US4766565A (en) * 1986-11-14 1988-08-23 International Business Machines Corporation Arithmetic logic circuit having a carry generator
US4914617A (en) * 1987-06-26 1990-04-03 International Business Machines Corporation High performance parallel binary byte adder
US5081698A (en) * 1989-02-14 1992-01-14 Intel Corporation Method and apparatus for graphics display data manipulation
US5197140A (en) * 1989-11-17 1993-03-23 Texas Instruments Incorporated Sliced addressing multi-processor and method of operation
US5239654A (en) * 1989-11-17 1993-08-24 Texas Instruments Incorporated Dual mode SIMD/MIMD processor providing reuse of MIMD instruction memories as data memories when operating in SIMD mode
US5212777A (en) * 1989-11-17 1993-05-18 Texas Instruments Incorporated Multi-processor reconfigurable in single instruction multiple data (SIMD) and multiple instruction multiple data (MIMD) modes and method of operation
US5226125A (en) * 1989-11-17 1993-07-06 Keith Balmer Switch matrix having integrated crosspoint logic and method of operation
JPH0454679A (ja) * 1990-06-25 1992-02-21 Nec Corp 演算装置
JPH04352230A (ja) * 1991-05-30 1992-12-07 Hitachi Ltd 演算器およびマイクロプロセッサ
US5493524A (en) * 1993-11-30 1996-02-20 Texas Instruments Incorporated Three input arithmetic logic unit employing carry propagate logic
US5465224A (en) * 1993-11-30 1995-11-07 Texas Instruments Incorporated Three input arithmetic logic unit forming the sum of a first Boolean combination of first, second and third inputs plus a second Boolean combination of first, second and third inputs
US5485411A (en) * 1993-11-30 1996-01-16 Texas Instruments Incorporated Three input arithmetic logic unit forming the sum of a first input anded with a first boolean combination of a second input and a third input plus a second boolean combination of the second and third inputs

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6598153B1 (en) 1999-12-10 2003-07-22 International Business Machines Corporation Processor and method that accelerate evaluation of pairs of condition-setting and branch instructions
JP2014194753A (ja) * 2013-03-15 2014-10-09 Intel Corp 複数のテストソースを用いた論理和テストおよび論理積テスト機能を実現する融合可能な命令と論理
JP2016042382A (ja) * 2013-03-15 2016-03-31 インテル・コーポレーション 複数のテストソースを用いた論理和テストおよび論理積テスト機能を実現する融合可能な命令と論理
JP2016103280A (ja) * 2013-03-15 2016-06-02 インテル・コーポレーション 複数の試験ソースに対するor試験及びand試験機能を提供するために命令をフュージングする方法及び装置
US9483266B2 (en) 2013-03-15 2016-11-01 Intel Corporation Fusible instructions and logic to provide OR-test and AND-test functionality using multiple test sources
US9886277B2 (en) 2013-03-15 2018-02-06 Intel Corporation Methods and apparatus for fusing instructions to provide OR-test and AND-test functionality on multiple test sources
US10296347B2 (en) 2013-03-15 2019-05-21 Intel Corporation Fusible instructions and logic to provide or-test and and-test functionality using multiple test sources

Also Published As

Publication number Publication date
KR950015137A (ko) 1995-06-16
KR100348950B1 (ko) 2003-01-08
EP0655676A3 (en) 1996-10-23
US5596763A (en) 1997-01-21
EP0655676A2 (en) 1995-05-31

Similar Documents

Publication Publication Date Title
JPH087083A (ja) 算術及び論理混合組合せを形成する3入力算術論理装置
JPH087084A (ja) 第1、第2及び第3の入力の第1のブール組合せプラス第1、第2及び第3の入力の第2のブール組合せの和を形成する3入力算術論理装置
EP0657803B1 (en) Three input arithmetic logic unit
KR100348951B1 (ko) 조건부레지스터쌍으로부터의메모리저장
JPH07287567A (ja) 複数の独立区分と各区分からの結果を記憶するレジスタとを有する算術論理装置
US5644522A (en) Method, apparatus and system for multiply rounding using redundant coded multiply result
US5805913A (en) Arithmetic logic unit with conditional register source selection
US6116768A (en) Three input arithmetic logic unit with barrel rotator
US5446651A (en) Split multiply operation
US5634065A (en) Three input arithmetic logic unit with controllable shifter and mask generator
US5590350A (en) Three input arithmetic logic unit with mask generator
EP0657802B1 (en) Rotation register for orthogonal data transformation
US6016538A (en) Method, apparatus and system forming the sum of data in plural equal sections of a single data word
US20030105793A1 (en) Long instruction word controlling plural independent processor operations
US6026484A (en) Data processing apparatus, system and method for if, then, else operation using write priority
US5442581A (en) Iterative division apparatus, system and method forming plural quotient bits per iteration
US5512896A (en) Huffman encoding method, circuit and system employing most significant bit change for size detection
US6173305B1 (en) Division by iteration employing subtraction and conditional source selection of a prior difference or a left shifted remainder
KR100315408B1 (ko) 이동기를구비한3입력산술논리유닛
US5689695A (en) Conditional processor operation based upon result of two consecutive prior processor operations
EP0660223B1 (en) Three input arithmetic logic unit with barrel rotator
JPH08161460A (ja) 第1の入力に加算された第2の入力と第3の入力との第1のブール組合せプラス第2の入力と第3の入力の第2のブール組合せの和を形成する3入力算術論理装置
JPH087082A (ja) バレル回転子及びマスク発生器を有する3入力算術論理装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050815

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050822

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060206