JPH11122116A - Device and method for compression - Google Patents

Device and method for compression

Info

Publication number
JPH11122116A
JPH11122116A JP16941798A JP16941798A JPH11122116A JP H11122116 A JPH11122116 A JP H11122116A JP 16941798 A JP16941798 A JP 16941798A JP 16941798 A JP16941798 A JP 16941798A JP H11122116 A JPH11122116 A JP H11122116A
Authority
JP
Japan
Prior art keywords
data
instruction
bit
output
length
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
JP16941798A
Other languages
Japanese (ja)
Inventor
Tomasz Thomas Prokop
トーマス プロコプ トマツ
Trevor Robert Elbourne
ロバート エルボーン トレバー
Mark Pulver
プルバー マーク
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.)
Canon Information Systems Research Australia Pty Ltd
Canon Inc
Original Assignee
Canon Information Systems Research Australia Pty Ltd
Canon 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
Priority claimed from AUPO6484A external-priority patent/AUPO648497A0/en
Priority claimed from AUPO6486A external-priority patent/AUPO648697A0/en
Application filed by Canon Information Systems Research Australia Pty Ltd, Canon Inc filed Critical Canon Information Systems Research Australia Pty Ltd
Publication of JPH11122116A publication Critical patent/JPH11122116A/en
Pending legal-status Critical Current

Links

Abstract

PROBLEM TO BE SOLVED: To shorten the time needed for operation and to improve the performance of DCT(discrete cosine transformation) or reverse DCT by equipping a DCT device with a transposed matrix storage means and an arithmetic circuit consisting of a combinational circuit for performing DCT operation without using any clocked storage means. SOLUTION: The substitute memory 1118 of the DCT transformation part transform column type data into row type data so as to implement 2nd pass of two-dimensional discrete cosine transformation. Data from an input circuit 1126 and the substitute memory 1118 are multiplexed by a multiplexer 1124 and sent to a mathematical circuit 1122. The result of the mathematical circuit 1122 is sent to an output circuit 1120 after the 2nd pass ends. A control circuit 1116 controls a stream of data in the DCT transforming device. The mathematical circuit 1122 is the combinational circuit which does not have a storage location where an intermediate result is stored.

Description

【発明の詳細な説明】DETAILED DESCRIPTION OF THE INVENTION

【0001】[0001]

【発明の属する技術分野】本発明は符号化されていない
0またはそれ以上の可変長ビットフィールドを挿入され
た可変長コードを復号化する復号化器に関し、コードの
いくつかは変化させない復号化器に関する。本発明はま
た、パイプラインまたは記憶手段を持たないデータパス
を用い、かつ高速で動作可能な離散コサイン変換(DC
T)装置に関する。
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a decoder for decoding a variable length code into which zero or more variable length bit fields which are not encoded are inserted, and a decoder which does not change some of the codes. About. The present invention also provides a discrete cosine transform (DC) that operates at high speed using a data path without a pipeline or storage means.
T) Related to the device.

【0002】[0002]

【従来の技術】一般に、大きな量のデータは電送、記
憶、読み出しおよびハフマン符号化のような可変長符号
化のいくつかのステージ手段での使用を含むさまざまな
理由により圧縮されまた伸長される。ハフマン符号化は
D.A.ハフマンによる論文、「最小冗長コードの構築
方法(”A Method for the Cons
truction of Minimun Redun
dancy Codes”Proc.IRE,40:1
098,1952)」により最初に開示された。多くの
場合、符号化ビット列中の可変長符号は不連続であり、
他の非符号化ビットフィールドが挿入されている。この
ビットフィールドは制御および/またはフォーマット情
報を表し、かつ/またはマーカーヘッダ、マーカーコー
ド、スタッフバイト、パディングビットおよび含まれる
付加ビット、たとえばJPEG符号化データなどを含
む、符号化データに対する追加事項を供給する。
BACKGROUND OF THE INVENTION In general, large amounts of data are compressed and decompressed for a variety of reasons, including transmission, storage, retrieval, and use in several stage means of variable length coding such as Huffman coding. Huffman coding is based on D. A. Huffman's dissertation, "A Method for Constructing Minimum Redundant Code (" A Method for the Cons
fraction of Minimun Redun
dancy Codes "Proc. IRE, 40: 1
098,1952) ". In many cases, variable-length codes in a coded bit stream are discontinuous,
Another uncoded bit field has been inserted. This bit field represents control and / or format information and / or supplies additional information to the encoded data, including marker headers, marker codes, stuff bytes, padding bits and included additional bits, such as JPEG encoded data. I do.

【0003】可変長符号化においては、統計的に頻度の
高い入力コードが頻度の低いデータよりも短い符号を割
り当てられるように、入力データの発生の確からしさに
基づいて異なる入力データに異なる長さの符号を割り当
てる。頻度の低い入力コードは長いコードを割り当てら
れる。コードの割り当ては統計的もしくは適応的のいず
れかによりなされる。統計的割り当ての場合、どのデー
タブロックが処理されるかに関わらず一定のデータには
同じ出力コードが与えられる。適応的割り当ての場合、
出力コードは特定の入力ブロックまたはデータブロック
のセットの統計的分析および予想されるブロック間(ま
たはブロックセット間)での変化に基づき割り当てられ
る。
In variable length coding, different lengths are assigned to different input data based on the likelihood of occurrence of the input data so that statistically frequent input codes are assigned shorter codes than less frequent data. Assign the sign of Infrequent input codes are assigned long codes. Code allocation is done either statistically or adaptively. In the case of statistical assignment, certain data is given the same output code regardless of which data block is processed. For adaptive assignment,
Output codes are assigned based on statistical analysis of a particular set of input blocks or data blocks and expected changes between blocks (or between sets of blocks).

【0004】高速な可変長復号化が必要となった場合、
重大な問題が起きる。問題は特にJPEG標準のよう
な、符号化データ列が符号化データを挿入(インタリー
ブ)された符号化されていない可変長のビットフィール
ドを含む場合におきる。そのような可変長符号化データ
の高速復号化における大きな困難は、JPEG標準のよ
うに特定の非符号化ビットフィールドの長さが引き続く
(符号化された)データの復号化が完全に終了した後で
ないと判別できない場合に発生する。次の符号化データ
の開始位置が、後ろのコードの復号化が完全に終わった
後でないとわからないため、一般的に直接パイプライン
処理を復号化器とともに用いることができない。
When high speed variable length decoding is required,
Serious problems arise. The problem arises especially when the encoded data stream includes an uncoded variable length bit field into which the encoded data has been inserted (interleaved), as in the JPEG standard. A major difficulty in the fast decoding of such variable-length encoded data is that the decoding of (encoded) data following the length of a particular uncoded bit field, such as the JPEG standard, is complete. Occurs when it cannot be determined otherwise. Since the start position of the next encoded data cannot be known until the decoding of the subsequent code is completely completed, direct pipeline processing cannot be generally used together with the decoder.

【0005】現存する解決法は、多くの用途に対して遅
すぎるが、一つの入力データの復号化に数ステップ(ク
ロックサイクル)を必要とするか、繰り返しユニット
(iterative units)を用いて一つより
多いシンボルを1ステージ(クロックサイクル)で擬似
的に同時復号化するかである。しかし、更なる復号化ブ
ロックの追加はしばしばそのような復号化器を経済的に
釣り合わなくし、さらに必要十分な速度を得られなくす
る。これは次の復号化器の処理開始が依然として次の入
力データの先頭を決定する、前に位置する復号化器の処
理結果に依存するため、複数の復号化器が完全な並列動
作をしないからである。その結果、1ステージ(クロッ
クサイクル)で複数のシンボルを復号化したとしても、
そのステージ(クロック期間)は相対的に長く、全体の
復号化器としては多くの用途において遅すぎることにな
る。
[0005] Existing solutions are too slow for many applications, but require several steps (clock cycles) to decode one input data, or one using iterative units. This is whether more than one symbol is pseudo-simultaneously decoded in one stage (clock cycle). However, the addition of additional decoding blocks often makes such decoders economically unbalanced and does not provide the necessary and sufficient speed. This is because multiple decoders do not operate completely in parallel because the start of the next decoder still depends on the processing result of the preceding decoder, which determines the beginning of the next input data. It is. As a result, even if a plurality of symbols are decoded in one stage (clock cycle),
The stage (clock period) is relatively long and would be too slow for many applications as a whole decoder.

【0006】よって、従来の復号化器の問題点を1つか
それ以上解決した、可変長非符号化ビットフィールドで
インターリーブされた可変長コードの復号化器に対する
要求は明らかに存在する。具体的には、図77に示され
た離散コサイン変換(DCT)装置は8×8画素のブロ
ックの完全二次元(2−D)変換を8×8画素ブロック
の行にまず1−DDCTを行うことで実現する。そし
て、別の1−DDCTを8×8画素ブロックの列に対し
て行う。このような装置は具体的には入力回路109
6、演算回路1104、制御回路1098、転置行列メ
モリ回路1090及び出力回路1092から構成され
る。
[0006] Thus, there is clearly a need for a decoder for variable length codes interleaved with variable length uncoded bit fields that overcomes one or more of the problems of conventional decoders. More specifically, the discrete cosine transform (DCT) device shown in FIG. 77 first performs 1-DDCT on a row of 8 × 8 pixel blocks by performing a complete two-dimensional (2-D) transformation of an 8 × 8 pixel block. It is realized by. Then, another 1-DDCT is performed on the columns of the 8 × 8 pixel block. Such a device is specifically the input circuit 109
6, an arithmetic circuit 1104, a control circuit 1098, a transposed matrix memory circuit 1090, and an output circuit 1092.

【0007】入力回路1096は8×8ブロックから8
ビットの画素を受け付ける。入力回路1096は中間多
重化器1100、1102によって演算回路1104に
接続される。演算回路1104は8×8ブロックの行ま
たは列全体のいずれかに算術操作を施す。制御回路10
98は他のすべての回路を制御し、DCTアルゴリズム
を実現する。演算回路の出力は転置行列メモリ109
0、レジスタ1095および出力回路1092にに接続
される。転置行列メモリは次の多重化器1102に出力
を供給する多重化器1100に接続されている。多重化
器1102はまたレジスタ1094から入力を受信す
る。転置行列メモリ1090は8×8ブロックのデータ
を行に受け付け、列にデータを生成する。出力回路10
92は8×8の画素データブロックになされるDCTの
係数を供給する。
[0007] The input circuit 1096 converts the 8 × 8 block into 8
Accept bit pixels. The input circuit 1096 is connected to the arithmetic circuit 1104 by the intermediate multiplexers 1100 and 1102. Arithmetic circuit 1104 performs arithmetic operations on either rows or entire columns of 8 × 8 blocks. Control circuit 10
98 controls all other circuits and implements the DCT algorithm. The output of the arithmetic circuit is the transposed matrix memory 109
0, connected to the register 1095 and the output circuit 1092. The transposed matrix memory is connected to a multiplexer 1100 that provides an output to the next multiplexer 1102. Multiplexer 1102 also receives input from register 1094. The transposed matrix memory 1090 receives 8 × 8 block data in rows and generates data in columns. Output circuit 10
Reference numeral 92 supplies coefficients of DCT performed on an 8 × 8 pixel data block.

【0008】典型的なDCT装置において、演算回路が
もっとも複雑であるため、基本的には演算回路1104
の速度が全体の速度を決定付ける。図77における演算
回路1104は、演算処理を図78を参照して以下に説
明されるいくつかのステージに分割して構成されてい
る。これらのステージ1114、1148、1152、
1156は加算器や乗算器などの共通利用されるものの
集まりによって一つの回路で実現することができる。し
かし、そのような回路1104は、共通に使われる一つ
の回路で複数のステージを構成しているため、最適化さ
れたものに比べて遅いという欠点がある。これは中間結
果の記憶に用いる記憶手段を含む。そのような回路のク
ロックサイクルとして割り当てられる時間は、回路の中
の最も遅いステージの時間と同じかそれ以上でなければ
ならず、全体としての時間は全部のステージの合計より
も長くなる可能性があるからである。
In a typical DCT device, since the arithmetic circuit is the most complicated, basically, the arithmetic circuit 1104
Speed determines the overall speed. The arithmetic circuit 1104 in FIG. 77 is configured by dividing the arithmetic processing into several stages described below with reference to FIG. These stages 1114, 1148, 1152,
1156 can be realized by one circuit by a group of commonly used components such as an adder and a multiplier. However, such a circuit 1104 has a drawback that it is slower than an optimized one because a plurality of stages are constituted by one commonly used circuit. This includes storage means used to store intermediate results. The time allocated for the clock cycle of such a circuit must be equal to or greater than the time of the slowest stage in the circuit, and the overall time can be longer than the sum of all stages. Because there is.

【0009】図78は図77に示した装置における、4
ステージのDCTの一部としての典型的な演算データパ
スを示している。図は現実の構成を反映しているわけで
はないが、機能は反映している。4つのステージ114
4、1148、1152、1156のそれぞれは一つ
の、再構成可能な回路で構成されている。1サイクル毎
に1−DDCTである各4つの演算ステージ1144、
1148、1152、1156が再構成される。この回
路において、4つのステージ1144、1148、11
52、1156のそれぞれは共通に使用されるもの(加
算器および乗算器)の集まりを使用しており、ハードウ
エアを最小化している。
FIG. 78 shows an example of the device 4 shown in FIG.
Fig. 3 shows a typical computational data path as part of a stage DCT. The figure does not reflect the actual configuration, but does reflect the function. Four stages 114
Each of 4, 1148, 1152, and 1156 is composed of one reconfigurable circuit. Each of four arithmetic stages 1144 that are 1-DDCT per cycle,
1148, 1152, 1156 are reconfigured. In this circuit, four stages 1144, 1148, 11
Each of 52 and 1156 uses a collection of commonly used ones (adders and multipliers) to minimize hardware.

【0010】しかしながらこの回路の欠点は、最適化さ
れたものに比べて遅いということである。4つのステー
ジ1144、1148、1152、1156のそれぞれ
は同一の加算器および乗算器の集まりで構成されてい
る。クロック周期は最も遅いステージで決まり、この例
ではブロック1144における20nsである。入力及
び出力多重化器1146および1154の遅延(各2n
s)およびフリップフロップ1150の遅延(3ns)
を加えると、合計時間は27nsである。よって、この
DCT要素は27nsで動作することが可能である。
However, a disadvantage of this circuit is that it is slower than the optimized one. Each of the four stages 1144, 1148, 1152, 1156 is composed of the same group of adders and multipliers. The clock period is determined by the slowest stage, which in this example is 20 ns in block 1144. The delay of the input and output multiplexers 1146 and 1154 (2n each)
s) and the delay of the flip-flop 1150 (3 ns)
Add, the total time is 27 ns. Thus, this DCT element can operate in 27 ns.

【0011】パイプライン化されたDCT要素もまたよ
く知られている。この構成の問題点は構成に多量のハー
ドウエアを必要とすることである。本発明では同じ性能
すなわち処理速度を提供はしないが、非常によい性能対
大きさの妥協点を提供する。さらに、現状のDCT要素
の大半よりもよい速度的な利点を提供する。よって、従
来の技術が有する1つまたはそれ以上の課題を解決でき
る、改良されたDCT/逆DCT方法及び装置に対する
要求は明確である。特に、DCT/逆DCT装置におい
て必要な結果を計算する中心的な演算回路に要する時間
を短縮でき、DCTまたは逆DCT全体の性能を向上す
る方法および装置の必要性は明確である。
[0011] Pipelined DCT elements are also well known. The problem with this configuration is that it requires a lot of hardware. The present invention does not provide the same performance or processing speed, but offers a very good performance versus size compromise. In addition, it offers better speed advantages than most of the current DCT components. Thus, there is a clear need for an improved DCT / inverse DCT method and apparatus that can solve one or more of the problems of the prior art. In particular, there is a clear need for a method and apparatus that can reduce the time required for a central operation circuit for calculating the required result in a DCT / inverse DCT apparatus and improve the performance of the entire DCT or inverse DCT.

【0012】[0012]

【課題を解決するための手段】本発明の第1は、可変長
の非符号化ビットフィールドでインターリーブされた複
数の可変長コードにより符号化されたデータと、符号化
されない固定長の非符号化フィールドを有する複数のデ
ータブロックの復号化装置であって、複数の固定長非符
号化フィールドを除去し、可変長非符号化ビットフィー
ルドと可変長の非符号化ビットフィールドでインターリ
ーブされた複数の可変長コードと、複数のデータブロッ
ク中の複数の固定長非符号化フィールドの位置を示す複
数の位置信号とを出力する前処理部と、固定長非符号化
フィールドの間に入力される可変長符号化データの復号
化データが、固定長非符号化フィールドに対応する位置
信号の間に復号化装置から出力されるように、位置信号
を復号化されるデータと同期させて復号化装置の出力へ
受け渡しするする受け渡し手段とを含む復号化装置であ
る。
SUMMARY OF THE INVENTION A first aspect of the present invention is to provide data encoded by a plurality of variable-length codes interleaved with variable-length uncoded bit fields and fixed-length uncoded non-coded bits. A decoding device for a plurality of data blocks having fields, wherein a plurality of variable-length uncoded bit fields and a plurality of variable-length uncoded bit fields are interleaved by removing a plurality of fixed-length uncoded bit fields. A preprocessor for outputting a long code and a plurality of position signals indicating positions of a plurality of fixed-length uncoded fields in a plurality of data blocks; and a variable-length code input between the fixed-length uncoded fields. The position signal is decoded such that the decoded data of the encoded data is output from the decoding device during the position signal corresponding to the fixed-length uncoded field. A decoding apparatus comprising a transfer means for to pass data and synchronized with the output of the decoding device.

【0013】また、好ましくは、第1のバレルシフタセ
ットと第1レジスタを有し、可変長の非符号化ビットフ
ィールドでインターリーブされた複数の可変長コードを
処理する第1処理部と、第2のバレルシフタセットと第
2レジスタを有し、複数のデータブロック中の複数の固
定長非符号化フィールドの位置を示す複数の位置信号を
処理する第2処理部とを更に有し、第1および第2処理
部が同一であり、第1、第2バレルシフタセットの出力
と第1、第2処理部が同じ制御信号を受信する復号化装
置である。
Preferably, a first processing unit which has a first barrel shifter set and a first register and processes a plurality of variable length codes interleaved with variable length uncoded bit fields, A second processing unit that has a barrel shifter set and a second register and that processes a plurality of position signals indicating positions of a plurality of fixed-length uncoded fields in the plurality of data blocks; The decoding unit has the same processing unit, and the output of the first and second barrel shifter sets and the first and second processing units receive the same control signal.

【0014】好ましい別の構成としては、固定長非符号
化フィールドの位置を示す位置信号を処理する第2処理
部の出力が、データレジスタに保管されたデータから復
号化時に除去される非符号化可変長フィールドのサイズ
決定に用いられる復号化装置である。さらに、別の好ま
しい構成としては、前処理部が、複数の固定長非符号化
フィールドを除去し、可変長非符号化ビットフィールド
と可変長の非符号化ビットフィールドでインターリーブ
された複数の可変長コードを、複数の固定長ビットフィ
ールドからなる複数の固定長コードとして、かつ一つの
固定長ビットフィールドが、前処理フィールドでパス又
は除去されたこと、前処理フィールドでパスされたこと
のいずれかを示すタグを有し、かつタグは固定長の非符
号化フィールドを示すマーカーの前又は後ろに存在する
ように出力する復号化装置である。
According to another preferred configuration, the output of the second processing unit for processing the position signal indicating the position of the fixed-length unencoded field is such that the output from the data stored in the data register is removed during decoding. This is a decoding device used for determining the size of a variable length field. Further, as another preferred configuration, the pre-processing unit removes a plurality of fixed-length uncoded fields, and interleaves a plurality of variable-length uncoded bit fields and a plurality of variable-length uncoded bit fields. The code is defined as a plurality of fixed-length codes consisting of a plurality of fixed-length bit fields, and one of the fixed-length bit fields is either passed or removed in the pre-processing field or passed in the pre-processing field. A decoding device that has a tag indicating the tag, and outputs the tag so that the tag exists before or after the marker indicating the fixed-length uncoded field.

【0015】データブロックがハフマン符号化されてい
ることがさらに好ましい。また、本発明の第2は、可変
長の非符号化ビットフィールドでインターリーブされた
複数の可変長コードにより符号化されたデータと、符号
化されない固定長の非符号化フィールドを有する複数の
データブロックの復号化方法であって、複数の固定長非
符号化フィールドを除去し、可変長非符号化ビットフィ
ールドと可変長の非符号化ビットフィールドでインター
リーブされた複数の可変長コードと、複数のデータブロ
ック中の複数の固定長非符号化フィールドの位置を示す
複数の位置信号とを出力する前処理ステップと、固定長
非符号化フィールドの間に入力される可変長符号化デー
タの復号化データが、固定長非符号化フィールドに対応
する位置信号の間に復号化装置から出力されるように、
位置信号を復号化されるデータと同期させて復号化装置
の出力へ受け渡しするする受け渡しステップとを含む復
号化方法である。
[0015] More preferably, the data block is Huffman coded. Also, a second aspect of the present invention is that a plurality of data blocks each having data encoded by a plurality of variable length codes interleaved with variable length uncoded bit fields and a plurality of data blocks having fixed length uncoded fields which are not coded. A plurality of fixed length uncoded fields, a plurality of variable length codes interleaved with a variable length uncoded bit field and a variable length uncoded bit field, and a plurality of data A preprocessing step of outputting a plurality of position signals indicating the positions of the plurality of fixed-length uncoded fields in the block; and decoding of variable-length coded data input between the fixed-length uncoded fields. As output from the decoding device during the position signal corresponding to the fixed length uncoded field,
And delivering the position signal to the output of the decoding device in synchronization with the data to be decoded.

【0016】好ましくは、第1のバレルシフタセットと
第1レジスタを有する第1処理部を用いて、可変長の非
符号化ビットフィールドでインターリーブされた複数の
可変長コードを処理するステップと、第2のバレルシフ
タセットと第2レジスタを有する第2処理部を用いて、
複数のデータブロック中の複数の固定長非符号化フィー
ルドの位置を示す複数の位置信号を処理するステップを
更に有し、第1および第2処理部が同一であり、第1、
第2バレルシフタセットの出力と第1、第2処理部が同
じ制御信号を受信する復号化方法である。
Preferably, using a first processing unit having a first barrel shifter set and a first register, processing a plurality of variable length codes interleaved with variable length uncoded bit fields; Using a barrel shifter set and a second processing unit having a second register,
Processing a plurality of position signals indicating positions of a plurality of fixed-length uncoded fields in the plurality of data blocks, wherein the first and second processing units are the same;
This is a decoding method in which the output of the second barrel shifter set and the first and second processing units receive the same control signal.

【0017】さらには、固定長非符号化フィールドの位
置を示す位置信号を処理する第2処理部の出力に応じ
て、データレジスタに保管されたデータから復号化時に
除去される非符号化可変長フィールドのサイズを決定す
るステップを更に有する復号化方法である。好ましく
は、前処理部ステップにおいて、複数の固定長非符号化
フィールドを除去し、可変長非符号化ビットフィールド
と可変長の非符号化ビットフィールドでインターリーブ
された複数の可変長コードを、複数の固定長ビットフィ
ールドからなる複数の固定長コードとして、かつ一つの
固定長ビットフィールドが、前処理フィールドでパス又
は除去されたこと、前処理フィールドでパスされたこと
のいずれかを示すタグを有し、かつタグは固定長の非符
号化フィールドを示すマーカーの前又は後ろに存在する
ように出力する復号化方法である。
Further, in accordance with the output of the second processing section which processes the position signal indicating the position of the fixed-length uncoded field, the uncoded variable-length data to be removed from the data stored in the data register at the time of decoding. A decoding method further comprising determining a size of a field. Preferably, in the preprocessing unit step, a plurality of fixed-length uncoded fields are removed, and a plurality of variable-length codes interleaved with a variable-length uncoded bit field and a variable-length uncoded bit field are replaced with a plurality of variable-length codes. As a plurality of fixed-length codes consisting of fixed-length bit fields, and having a tag indicating that one fixed-length bit field has been passed or removed in the preprocessing field, or passed in the preprocessing field. , And a tag is a decoding method in which a tag is output so as to exist before or after a marker indicating a fixed-length uncoded field.

【0018】また、データブロックがハフマン符号化さ
れていることが好ましい。以下の詳細な説明において
は、他の説明はもとより、特に図82〜91およびそれ
に関係する説明に注意されたい。本発明の第3は、離散
コサイン変換(DCT)装置であって、転置行列記憶手
段と、転置行列記憶手段と相互接続され、clocke
d storage手段を用いずにDCT演算を行うた
めの組合せ回路からなる演算回路を有するDCT装置で
ある。
Preferably, the data block is Huffman coded. In the following detailed description, attention should be paid especially to FIGS. 82 to 91 and the description related thereto, as well as other descriptions. A third aspect of the present invention is a discrete cosine transform (DCT) device, wherein the transposed matrix storage means is interconnected with the transposed matrix storage means, and
This is a DCT device having an arithmetic circuit composed of a combinational circuit for performing a DCT operation without using d storage means.

【0019】好ましくは、組合せ回路がDCT演算を行
うための所定数のステージを有し、ステージがシーケン
シャルに配置DCT装置である。また好ましくは、DC
T装置に入力されるデータと、転置行列記憶手段の出力
とを多重化する多重化手段を有するDCT装置である。
またDCT装置の動作を制御する制御手段を有するDC
T装置である。
Preferably, the combination circuit has a predetermined number of stages for performing a DCT operation, and the stages are sequentially arranged DCT devices. Also preferably, DC
This is a DCT device having multiplexing means for multiplexing data input to the T device and output of the transposed matrix storage means.
A DCT having control means for controlling the operation of the DCT device;
T device.

【0020】本発明の第4は、逆離散コサイン変換(D
CT)装置であって、転置行列記憶手段と、転置行列記
憶手段と相互接続され、clocked storag
e手段を用いずにDCT演算を行うための組合せ回路を
主構成要素とする演算回路を有する逆DCT装置であ
る。
The fourth aspect of the present invention is the inverse discrete cosine transform (D
CT) apparatus, comprising: a transposed matrix storage means; and a clocked storage interconnected with the transposed matrix storage means.
This is an inverse DCT apparatus having an arithmetic circuit mainly including a combinational circuit for performing a DCT operation without using the e-means.

【0021】本発明の第5は、データの離散コサイン変
換(DCT)方法であって、DCT演算をclocke
d strage手段無しで行う組合せ回路を主要構成
とする演算回路を用い、入力データをその第1の方向に
合わせてDCT演算するステップと、DCTされた入力
データを第1の方向に合わせて組合せ回路と相互接続さ
れた転置行列記憶手段に記憶するステップと、演算回路
を用い、転置行列記憶手段に記憶されたデータをその第
2の方向に合わせてDCT演算して変換データを得るス
テップとを有する方法である。
A fifth aspect of the present invention is a discrete cosine transform (DCT) method for data, in which a DCT operation is performed using a clock.
a step of performing a DCT operation on input data in a first direction using an operation circuit mainly including a combination circuit performed without d storage means; and a step of performing a DCT operation on the input data subjected to DCT in a first direction. Storing the data in the transposed matrix storage means using the arithmetic circuit and performing DCT operation on the data stored in the transposed matrix storage means in accordance with the second direction to obtain transformed data. Is the way.

【0022】好ましくは、DCTがシーケンシャルに配
置された所定数のステージで演算されるDCT方法であ
り、また入力されるデータと転置行列記憶手段の出力と
を多重化するステップを有してもよい。本発明の第6
は、逆離散コサイン変換(DCT)方法であって、逆D
CT演算をclocked strage手段無しで行
う組合せ回路を主要構成とする演算回路を用い、入力係
数をその第1の方向に合わせてDCT演算するステップ
と、DCTされた入力係数を第1の方向に合わせて組合
せ回路と相互接続された転置行列記憶手段に記憶するス
テップと、演算回路を用い、転置行列記憶手段に記憶さ
れた係数をその第2の方向に合わせて逆DCT演算して
逆変換データを得るステップとを有する方法である。
Preferably, the DCT method is a DCT method in which the DCT is calculated in a predetermined number of stages arranged sequentially, and the method may further include a step of multiplexing the input data and the output of the transposed matrix storage means. . Sixth Embodiment
Is the inverse discrete cosine transform (DCT) method, and the inverse D
A step of performing a DCT operation by adjusting an input coefficient in a first direction using an operation circuit mainly including a combination circuit that performs a CT operation without clocked storage means; and adjusting an input coefficient subjected to DCT in a first direction. Storing the coefficients in the transposed matrix storage means interconnected with the combinational circuit, and performing an inverse DCT operation on the coefficients stored in the transposed matrix storage means in accordance with the second direction using an arithmetic circuit to obtain inverse transformed data. And a step of obtaining.

【0023】以下の詳細な説明においては、他の説明は
もとより、特に図79、80および81およびそれに関
係する説明に注意されたい。
In the following detailed description, particular attention should be paid to FIGS. 79, 80 and 81 and the related description, as well as other descriptions.

【0024】[0024]

【発明の実施の形態】BEST MODE FOR CARRYING OUT THE INVENTION

「目次」 1.0 図面の簡単な説明 2.0 テーブルリスト 3.0 好適な及び他の実施例 3.1 複数のストリームアーキテクチャの概要 3.2 ホスト/コプロセッサのキューイング 3.3 コプロセッサのレジスタ説明 3.4 複数のストリームのフォーマット 3.5 現アクティブストリームの判定 3.6 現アクティブストリームのフェッチ命令 3.7 命令のデコード及び実行 3.8 命令コントローラのレジスタの更新 3.9 レジスタアクセスセマフォの意味論 3.10 命令コントローラ 3.11 ローカルレジスタファイルモジュールの説明 3.12 レジスタのリード・ライト処理 3.13 メモリエリアのリード/ライト処理 3.14 Cバス構造 3.15 コプロセッサのデータタイプとデータ操作 3.16 データ正規化処理 3.17 アクセラレータカードの画像処理 3.17.1 合成 3.17.2 色空間変換命令 a. 単一出力カラー空間(SOGCS)変換モード b. 複数出力からー空間モード 3.17.3 LPEG符号化/復号化 a. 符号化 b. 復号化 3.17.4 テーブル索引 3.17.5 データ符号化命令 3.17.6 高速DCT装置 3.17.7 ハフマン復号 3.17.8 イメージ変換命令 3.17.9 コンボルージョン命令 3.17.10 マトリクス乗算 3.17.11 階調(ハーフトーン) 3.17.12 階層イメージフォーマット伸長 3.17.13 メモリコピー命令 a. 汎用データ移動命令 b. ローカルDMA命令 3.17.14 フロー制御命令 3.18 アクセラレータカードのモジュール 3.18.1 ピクセルオーガナイザ 3.18.2 MUVバッファ 3.18.3 結果オーガナイザ 3.18.4 オペランドオーガナイザB,C 3.18.5 メインデータパスユニット 3.18.6 データキャッシュコントローラとキャッ
シュ a. ノーマルキャッシュモード b. 単一出力一般カラー空間変換モード c. 複数出力一般カラー空間変換モード d. JPEG符号化モード e. 低速JPEG復号モード f. マトリクス乗算モード g. ディスエーブルモード h. 無効化モード 3.18.7 入力インターフェーススイッチ 3.18.8 ローカルメモリコントローラ 3.18.9 その他のモード 3.18.10 外部インターフェースコントローラ 3.18.11 周辺インターフェースコントローラ テーブル索引 テーブル1: レジスタの説明 テーブル2: オペコードの説明 テーブル3: オペランドタイプ テーブル4: オペランド説明 テーブル5: モジュールセットアップ順序 テーブル6: Cバス信号の定義 テーブル7: Cバスのトランザクションタイプ テーブル8: データ操作レジスタフォーマット テーブル9: 希望データタイプ テーブル10: シンボル説明 テーブル11: 合成処理 テーブル12: SOGCSモード用アドレス合成 テーブル12A: 色空間変換用命令符号化 テーブル13: 色変換命令用のマイナーオペコード符
号化 テーブル14: データキャッシュに記憶されたハフマ
ン及び量子化テーブル テーブル15: フェッチアドレス テーブル16: ハフマン符号化用テーブル テーブル17: ハフマン及び量子化テーブル用バンク
アドレス テーブル18: 命令ワード−マイナーオペコードフィ
ールド テーブル19: 命令ワード−マイナーオペコードフィ
ールド テーブル20: 命令オペランド−結果ワード テーブル21: 命令ワード テーブル22: 命令オペランド−結果ワード テーブル23: 命令ワード テーブル24: 命令オペランド−結果ワード テーブル25: 命令ワード−マイナーオペコードフィ
ールド テーブル26: 命令ワード−マイナーオペコードフィ
ールド テーブル27: 分数テーブル [好適ならびに他の実施例の説明」好適な実施例では、
ハードウェアアクセラレータによる2つの独立命令スト
リームの利用によってハードウェアラスタリングを行う
ことで大きな利点が得られている。従って、第一の命令
ストリームが現ページの印刷準備をしている間に、次の
命令ストリームが次ページの印刷準備をすることができ
る。ハードウェア資源は、ハードウェアアクセラレータ
が出力装置以上の速度で動作可能である場合に特に効率
的に利用することができる。
Table of Contents 1.0 Brief Description of the Drawings 2.0 Table List 3.0 Preferred and Alternative Embodiments 3.1 Overview of Multiple Stream Architectures 3.2 Host / Coprocessor Queuing 3.3 Coprocessor 3.4 Format of multiple streams 3.5 Judgment of current active stream 3.6 Fetch instruction of current active stream 3.7 Decode and execute instruction 3.8 Update register of instruction controller 3.9 Register access Semaphore semantics 3.10 Instruction controller 3.11 Description of local register file module 3.12 Register read / write processing 3.13 Memory area read / write processing 3.14 C bus structure 3.15 Coprocessor data Type and data operation 3.16 Data normalization processing 3.17 image processing accelerator card 3.17.1 Synthesis 3.17.2 color space conversion instruction a. Single output color space (SOGCS) conversion mode b. From multiple outputs-spatial mode 3.17.3 LPEG encoding / decoding a. Encoding b. Decoding 3.17.4 Table index 3.17.5 Data encoding instruction 3.17.6 High-speed DCT device 3.17.7 Huffman decoding 3.17.8 Image conversion instruction 3.17.9 Convolution instruction 3 .17.10 Matrix multiplication 3.17.11 Gray scale (halftone) 3.17.12 Hierarchical image format decompression 3.17.13 Memory copy instruction a. General-purpose data move instruction b. Local DMA instruction 3.17.14 Flow control instruction 3.18 Accelerator card module 3.18.1 Pixel organizer 3.18.2 MUV buffer 3.18.3 Result organizer 3.18.4 Operand organizer B, C 3 .18.5 Main data path unit 3.18.6 Data cache controller and cache a. Normal cache mode b. Single output general color space conversion mode c. Multiple output general color space conversion mode d. JPEG encoding mode e. Low speed JPEG decoding mode f. Matrix multiplication mode g. Disable mode h. Invalidation mode 3.18.7 Input interface switch 3.18.8 Local memory controller 3.18.9 Other modes 3.18.10 External interface controller 3.18.11 Peripheral interface controller Table index Table 1: Register Description Table 2: Opcode Description Table 3: Operand Type Table 4: Operand Description Table 5: Module Setup Order Table 6: C Bus Signal Definitions Table 7: C Bus Transaction Types Table 8: Data Manipulation Register Format Table 9: Desired Data type Table 10: Explanation of symbols Table 11: Combination processing Table 12: Address combination for SOGCS mode Table 12A: Instruction encoding for color space conversion Table 13: Huffman and quantization table stored in data cache Table 15: Fetch address Table 16: Huffman coding table Table 17: Huffman and quantization table bank address Table 18: Instruction Word-Minor Opcode Field Table 19: Instruction Word-Minor Opcode Field Table 20: Instruction Operand-Result Word Table 21: Instruction Word Table 22: Instruction Operand-Result Word Table 23: Instruction Word Table 24: Instruction Operand- Result Word Table 25: Instruction Word-Minor Opcode Field Table 26: Instruction Word-Minor Opcode Field Table 27: Fractional Table Description of preferred and other embodiments "In a preferred embodiment,
Significant advantages have been obtained by performing hardware rastering through the use of two independent instruction streams by a hardware accelerator. Thus, while the first instruction stream is preparing to print the current page, the next instruction stream can prepare to print the next page. Hardware resources can be used particularly efficiently when the hardware accelerator can operate at a speed higher than the output device.

【0025】好適な実施例では、2命令ストリームを用
いる構成を示す。しかし、2以上の命令ストリームを用
いる構成も可能であり、ハードウェアトレードオフを鑑
みてもより多くのストリームを用いることによる利点が
得られる。2つのストリームを用いることで、ラスタ画
像コプロセッサのハードウェア資源は、出力装置に応じ
て現ページ、バンド、ストリップなどを印刷装置に転送
している間にも、続くページ、バンド、ストリップなど
の準備に常に関わることができる。 3.1 複数ストリームアーキテクチャの一般構成 図1は、好適な実施例を含むコンピュータハードウェア
構成201を模式的に示した図である。構成201に
は、ブリッジ204を介してホスト記憶メモリ203に
接続されたホストCPU202から成る標準ホストコン
ピュータシステムが含まれている。ホストコンピュータ
システムには、オペレーティングシステムプログラム、
アプリケーション、情報ディスプレイなどの一般のコン
ピュータシステム機能が備わっており、ホストコンピュ
ータシステムはPCIバスインタフェース207を介し
て標準PCIバス206に接続されている。なお、PC
I標準は良く知られた業界標準であり、市販のほとんど
のコンピュータシステム、特にマイクロソフトウインド
ウズ(商標)オペレーティングシステムを搭載している
システムには、PCIバス206が備わっている。PC
Iバス206を用いることにより、PCIバスインタフ
ェース210、他のデバイス211、ローカルメモリ2
12などを更に含む1つ或は複数のPCIカード(例え
ば209)を構成201に付加して利用することが容易
になる。
The preferred embodiment shows a configuration using two instruction streams. However, a configuration using two or more instruction streams is also possible, and the advantage of using more streams can be obtained in view of hardware trade-off. By using two streams, the hardware resources of the raster image coprocessor can be used to transfer the current page, band, strip, etc., to the printing device, depending on the output device, and to transfer subsequent pages, bands, strips, etc. Always be involved in preparation. 3.1 General Configuration of Multiple Stream Architecture FIG. 1 is a diagram schematically illustrating a computer hardware configuration 201 including a preferred embodiment. The configuration 201 includes a standard host computer system comprising a host CPU 202 connected to a host storage memory 203 via a bridge 204. The host computer system contains operating system programs,
General computer system functions such as applications and information displays are provided, and the host computer system is connected to the standard PCI bus 206 via the PCI bus interface 207. In addition, PC
The I standard is a well-known industry standard, and most computer systems on the market, especially those with the Microsoft Windows ™ operating system, have a PCI bus 206. PC
By using the I bus 206, the PCI bus interface 210, other devices 211, and the local memory 2
One or a plurality of PCI cards (for example, 209) further including the T.12 or the like can be easily used by being added to the configuration 201.

【0026】好適な実施例では、ページ記述言語で表現
されたグラフィックス処理を高速にするために、ラスタ
画像アクセラレータカード220を備える。ラスタ画像
アクセラレータカード(PCIバスインタフェース22
1を備える)は、他のPCIカード209などと同様に
ホストCPU202とは、緩やかに結合された共有メモ
リの形態で動作するように設計されている。なお、必要
であれば、画像アクセラレータカード220を更にホス
トコンピュータシステムに付加することもできる。ラス
タ画像アクセラレータカードは、ラスタ画像処理動作に
おける複雑かつ多量の動作処理を高速化するためのもの
であり、これらの動作としては、 (a)合成 (b)一般化色空間変換 (c)JPEG符号化/復号 (d)ハフマン、ランレングス、予測符号化/復号 (e)階層的画像(商標)復号 (f)一般化アフィン画像変換 (g)小カーネル畳込演算(コンボルージョン) (h)行列演算 (i)ハーフトーン処理 (j)一括算術/メモリコピー演算 ラスタ画像アクセラレータカード220は更にラスタ画
像コプロセッサ224に接続されたローカルメモリ22
3を備え、ラスタ画像コプロセッサ224はホストCP
U202からの命令に基づいてラスタ画像アクセラレー
タカード220を起動する。ここで、コプロセッサ22
4は特定用途向けLSI(ASIC)であることが望ま
しい。また、ラスタ画像コプロセッサ224は、必要な
少なくとも1つのプリンターデバイス226を周辺イン
タフェース225を介して制御する能力を有する。更
に、画像アクセラレータカード220は、スキャナなど
の入力/出力デバイスを制御することも可能である。あ
わせて、アクセラレータカード220にはラスタ画像コ
プロセッサ224に接続された一般外部インターフェー
ス227が備えられており、モニタリングやテストを行
うこともできる。。
In a preferred embodiment, a raster image accelerator card 220 is provided to speed up graphics processing expressed in a page description language. Raster image accelerator card (PCI bus interface 22
1) is designed to operate in the form of a shared memory loosely coupled to the host CPU 202 like other PCI cards 209 and the like. If necessary, the image accelerator card 220 can be further added to the host computer system. The raster image accelerator card is for accelerating complicated and large amount of operation processing in the raster image processing operation. These operations include (a) synthesis (b) generalized color space conversion (c) JPEG code (D) Huffman, run-length, predictive encoding / decoding (e) Hierarchical image (trademark) decoding (f) Generalized affine image transformation (g) Small kernel convolution operation (convolution) (h) Matrix Operation (i) Halftone processing (j) Batch arithmetic / memory copy operation The raster image accelerator card 220 further includes a local memory 22 connected to a raster image coprocessor 224.
3 and the raster image coprocessor 224
The raster image accelerator card 220 is activated based on a command from U202. Here, the coprocessor 22
4 is desirably an application specific LSI (ASIC). Also, the raster image coprocessor 224 has the ability to control at least one required printer device 226 via the peripheral interface 225. Further, the image accelerator card 220 can control input / output devices such as a scanner. In addition, the accelerator card 220 includes a general external interface 227 connected to the raster image coprocessor 224, and can perform monitoring and testing. .

【0027】実行モードでは、ホストCPU202がP
CIバス206を介して一連の命令やデータを送信し、
ラスタ画像コプロセッサ224で画像の生成処理を行
う。送信されたデータはローカルメモリ223のみなら
ずラスタ画像コプロセッサ224中のキャッシュ23
0、あるいはコプロセッサ224中のレジスタ229に
蓄えられる。
In the execution mode, the host CPU 202
A series of commands and data are transmitted via the CI bus 206,
The raster image coprocessor 224 performs an image generation process. The transmitted data is stored not only in the local memory 223 but also in the cache 23 in the raster image coprocessor 224.
0 or stored in a register 229 in the coprocessor 224.

【0028】図2は、ラスタ画像コプロセッサ224を
より詳細に示した図である。コプロセッサ224は、前
記の処理を高速化するためのものであり、命令制御部2
35の制御下にある複数の部位から構成される。コプロ
セッサが外界と通信するために、図1のローカルメモリ
223と通信するためのローカルメモリ制御部236を
具備している。周辺インタフェース制御部237は、プ
リンタデバイスとの通信に利用されるもので、セントロ
ニクスインタフェース標準フォーマットや他のビデオイ
ンタフェースフォーマットなどの標準フォーマットを利
用する。周辺インタフェース制御部237はローカルメ
モリ制御部236と内部接続されている。ローカルメモ
リ制御部236と外部インタフェース制御部238とは
入力インタフェーススイッチ252を介して接続されて
おり、入力インタフェーススイッチ252は命令制御部
235と接続されている。入力インタフェーススイッチ
252はまたピクセルオーガナイザ246とデータキャ
ッシュ制御部240に接続されている。入力インタフェ
ーススイッチ252は、外部インタフェース制御部23
7とローカルメモリ制御部236からのデータをスイッ
チして命令制御部235、あるいはデータキャッシュ制
御部240、ピクセルオーガナイザ246に転送するた
めのものである。
FIG. 2 shows the raster image coprocessor 224 in more detail. The coprocessor 224 is for accelerating the above-described processing, and includes an instruction control unit 2
It consists of a plurality of sites under the control of 35. The coprocessor includes a local memory controller 236 for communicating with the local memory 223 of FIG. 1 for communicating with the outside world. The peripheral interface control unit 237 is used for communication with the printer device, and uses a standard format such as a Centronics interface standard format or another video interface format. The peripheral interface controller 237 is internally connected to the local memory controller 236. The local memory control unit 236 and the external interface control unit 238 are connected via an input interface switch 252, and the input interface switch 252 is connected to the command control unit 235. Input interface switch 252 is also connected to pixel organizer 246 and data cache control 240. The input interface switch 252 is connected to the external interface control unit 23
7 and the data from the local memory control unit 236 are switched and transferred to the instruction control unit 235, the data cache control unit 240, and the pixel organizer 246.

【0029】外部インタフェース制御部238は、図1
中のPCIバス206と通信するためにラスタ画像コプ
ロセッサ224中に具備されており、命令制御部235
と接続されている。また、テスト診断を行ったり、クロ
ック信号やグローバル信号を入力するために、命令制御
部239に接続され、コプロセッサ224と協調して動
作する他モジュール239が備わっている。
The external interface control unit 238 operates as shown in FIG.
A command control unit 235 is provided in the raster image coprocessor 224 for communicating with the PCI bus 206 therein.
Is connected to Further, another module 239 connected to the instruction control unit 239 and operating in cooperation with the coprocessor 224 is provided for performing test diagnosis and inputting a clock signal and a global signal.

【0030】データキャッシュ230は、接続されてい
るデータキャッシュ制御部240の制御下で動作する。
データキャッシュ230は種々の用途において用いられ
るが、コプロセッサ224において引き続き使用される
確率の高い最近使用した値を蓄えるために主として用い
られる。上述の高速化処理は、主としてJPEG符号化
/復号器241やメインデータパス部242によって複
数のデータストリームの処理が行われる。部位241、
242は並列にピクセルオーガナイザ246と2つのオ
ペランドオーガナイザ247、248に接続されてい
る。部位241、242からの処理されたストリーム
は、結果オーガナイザ249に転送され、必要であれば
処理や再フォーマット処理が行われる。なお、中間結果
を記録しておきたいことも多いため、データキャッシュ
230に加えて、ピクセルオーガナイザ246と結果オ
ーガナイザ249との間にマルチユースト値(MUV)
バッファ250を備えている。結果オーガナイザ249
からの結果は、必要であれば外部インタフェース制御部
238、ローカルメモリ制御部236、周辺インタフェ
ース制御部237に出力される。
The data cache 230 operates under the control of the connected data cache control unit 240.
The data cache 230 is used in various applications, but is primarily used to store recently used values that are likely to be subsequently used in the coprocessor 224. In the above-described high-speed processing, processing of a plurality of data streams is mainly performed by the JPEG encoder / decoder 241 and the main data path unit 242. Part 241,
242 is connected in parallel to a pixel organizer 246 and two operand organizers 247,248. The processed streams from the parts 241 and 242 are transferred to the result organizer 249, where processing and reformatting are performed if necessary. Since it is often desired to record an intermediate result, in addition to the data cache 230, a multi-value (MUV) value is provided between the pixel organizer 246 and the result organizer 249.
A buffer 250 is provided. Result Organizer 249
Are output to the external interface control unit 238, the local memory control unit 236, and the peripheral interface control unit 237 if necessary.

【0031】図2中の点線で示されているように、さら
なる(第3の)データパス部243を、JPEG符号化
/復号器241とメインデータパス部242といった他
の二つのデータパスと「並列に」接続することも可能で
ある。また、四あるいはそれ以上のデータパスを構成す
ることも同様に可能である。なお、パスは「並列に」接
続されてはいるが、並列に動作するものではなく、一つ
のパスのみが一時に動作するものであることに注意され
たい。
As shown by the dotted line in FIG. 2, a further (third) data path section 243 is divided into two other data paths such as a JPEG encoder / decoder 241 and a main data path section 242 by " A "parallel" connection is also possible. It is equally possible to configure four or more data paths. Note that the paths are connected "in parallel," but do not operate in parallel, only one path operates at a time.

【0032】図2のASICの全体設計は以下のような
考えに基づいてなされた。まず第1に、印刷ページでは
小さな、或は一時的な画質劣化をも生じさせないことが
必須である。映像信号では、このような小さな画質劣化
が存在したとしても人間の目では感知されることはない
が、印刷物では印刷ページに永久的に小さな画質劣化が
残ってしまい、目立つようになることもあるからであ
る。更に、プリンタに至るまでに遅延が生じると、ペー
ジがプリンタ内を移動している間に白い未印刷の部位が
ページ上にできてしまうことがあるため、見苦しいもの
となる。そのため、高品質かつ高速に結果を提供するこ
とが必須となり、ソフトウエアを用いるアプローチより
もハードウェアの高速性に頼るアプローチの方が好まし
い。
The overall design of the ASIC shown in FIG. 2 is based on the following concept. First, it is essential that the print page does not cause small or temporary image quality deterioration. In a video signal, even if such a small image quality deterioration exists, it is not perceived by human eyes, but in a printed matter, a small image quality deterioration is permanently left on a printed page and may become conspicuous. Because. Further, if a delay occurs before reaching the printer, a white unprinted portion may be formed on the page while the page is moving inside the printer, which is unsightly. For this reason, it is essential to provide high-quality and high-speed results, and an approach relying on high-speed hardware is preferable to an approach using software.

【0033】第2に、印刷処理を実行するのに必要なさ
まざまな動作ステップ(アルゴリズム)すべてをリスト
アップし、各ステップごとに対応するハードウェアを並
べ上げると、全体のハードウェア量は膨大なものにな
り、非常に高価なものになってしまう。また、ハードウ
ェアの動作スピードは、処理に必要なデータをフェッチ
したり、あるいは処理で生成されたデータを転送するレ
ートによって本質的に制限される。すなわち、動作スピ
ードはインタフェースの帯域幅によって制約を受ける。
Second, all the various operation steps (algorithms) necessary for executing the printing process are listed, and the hardware corresponding to each step is arranged. And it is very expensive. Also, the operation speed of hardware is essentially limited by the rate at which data required for processing is fetched or data generated by processing is transferred. That is, the operation speed is restricted by the bandwidth of the interface.

【0034】これに対して、全体のASICのデザイン
は、ハードウェアの全体量を模式的に表したときに、必
要なハードウェアの種々の部位が(a)重複しており、
(b)同時に実行されることはない、という驚くべき事
実に基づいている。特に、この点はデータの処理をする
前にデータを転送する際のオーバヘッドにおいて顕著に
みられる。
On the other hand, in the overall ASIC design, when the total amount of hardware is schematically represented, (a) various parts of necessary hardware overlap,
(B) It is based on the surprising fact that they are not performed simultaneously. In particular, this point is conspicuous in the overhead when transferring data before processing the data.

【0035】このような観点から、いつくかのステップ
を経て、ハードウェアのすべての部位をできるだけアク
ティブにしながら、ハードウェア量を低減することにし
た。第1のステップにおいて、画像操作では多くの場合
同一の基本的種類の繰り返し演算が必要であることを認
識した。従って、データがストリーム状に入力される
と、特定の処理を行うように処理部を構成して長いデー
タストリームを処理し、その後次に必要な処理タイプに
合うように処理部を再構成する。データストリームがか
なり長いと、再構成に要する時間は全体の処理時間と比
較して無視できるほど短くなるため、スループットが向
上することになる。
From this point of view, after several steps, it was decided to reduce the amount of hardware while keeping all parts of the hardware as active as possible. In the first step, it was recognized that image manipulation often required the same basic type of repetitive operation. Therefore, when data is input in the form of a stream, the processing unit is configured to perform a specific process, processes a long data stream, and then reconfigures the processing unit to match the next required processing type. If the data stream is fairly long, the time required for reconstruction is negligibly short compared to the overall processing time, thus improving throughput.

【0036】また、複数のデータ処理パスを設けると、
他のパスを使用している間に一つのパスを再構成するこ
とで、再構成に要する時間の無駄を省くこともできる。
すなわち、メインデータパス部242がより汎用的な処
理を実行している間に、他のデータパスにおいて部位2
41のようなJPEG符号化/復号、あるいは追加部位
243がある場合にはエントロピー符号化やハフマン符
号化などのより特化した処理を行うことができる。
When a plurality of data processing paths are provided,
By reconfiguring one path while using another path, waste of time required for reconfiguration can be eliminated.
In other words, while the main data path unit 242 is executing more general-purpose processing, the other data path
If there is a JPEG encoding / decoding such as 41, or an additional portion 243, more specialized processing such as entropy encoding or Huffman encoding can be performed.

【0037】更に、処理を進めている間に、処理部位へ
のデータのフェッチや転送を行うこともできる。また、
種々の種別のデータを標準化、統一することにより、更
に高速化を図ることができるとともに、ハードウェア資
源も有効に利用することができる。従って、データのフ
ェッチや転送に関わる全体のオーバヘッドを低減するこ
とができる。
Further, while the processing is in progress, data can be fetched or transferred to the processing part. Also,
By standardizing and unifying various types of data, the speed can be further increased, and hardware resources can be used effectively. Therefore, the overall overhead related to data fetch and transfer can be reduced.

【0038】ここで重要なことは、コプロセッサ224
がホストCPU202(図1)の制御の下で実行される
ことである。この点で、命令制御部235が、コプロセ
ッサ224全体の制御を統括する。命令制御部235
は、CBus(Cバス)と呼ばれる制御バス231によ
ってコプロセッサ224を動作させる。CBus231
はそれぞれのモジュール中のセットレジスタ(図1の2
31)を含むモジュール236−250のそれぞれに接
続され、コプロセッサ224の全体の動作を可能とす
る。図2を見やすくするために、図2では制御バス23
1からそれぞれのモジュール236−250までの接続
は示していない。
What is important here is that the coprocessor 224
Is executed under the control of the host CPU 202 (FIG. 1). At this point, the instruction control unit 235 supervises control of the entire coprocessor 224. Command control unit 235
Operate the coprocessor 224 by a control bus 231 called CBus (C bus). CBus231
Is a set register (2 in FIG. 1) in each module.
31) is connected to each of the modules 236-250, and enables the entire operation of the coprocessor 224. In order to make FIG. 2 easier to see, FIG.
The connections from 1 to the respective modules 236-250 are not shown.

【0039】図3は、利用可能なモジュールレジスタの
模式的なレイアウト260を示した図である。レイアウ
ト260は、コプロセッサ224の全体制御のためのレ
ジスタ261と命令制御部235とが含まれる。コプロ
セッサモジュール236−260には、同様のレジスタ
262が含まれる。 3.2 ホスト/コプロセッサ・キューイング 上述のアーキテクチャによれば、ホストプロセッサ20
2と画像コプロセッサ204との間での協調が十分にと
られていることが必要であることがわかる。しかしなが
ら、これに対する解は一般的なものであり、上述のアー
キテクチャ特有のものではないため、以下ではより一般
的な計算ハードウェア環境を想定して説明する。
FIG. 3 is a diagram showing a schematic layout 260 of available module registers. The layout 260 includes a register 261 for overall control of the coprocessor 224 and an instruction control unit 235. Coprocessor modules 236-260 include a similar register 262. 3.2 Host / Coprocessor Queuing According to the architecture described above, the host processor 20
It can be seen that sufficient coordination between the image coprocessor 2 and the image coprocessor 204 is required. However, the solution to this is general and not specific to the above-described architecture, and will be described below assuming a more general computing hardware environment.

【0040】現代のコンピュータシステムは、動的メモ
リ割当を行うために何かしらのメモリ管理手法を必要と
する。1つあるいは複数のコプロセッサを有するシステ
ムでは、コプロセッサによる動的メモリ割当とメモリ使
用との間で同期をとるための手法が必要である。一般的
なコンピュータハードウェア構成では、CPUと特別の
コプロセッサとを備え、それぞれが一連のメモリ群を共
有している。このようなシステムでは、CPUのみがメ
モリを動的に割り当てることのできるシステム中唯一の
部位である。コプロセッサが使用するようにCPUがメ
モリを割り当てた時点で、コプロセッサは当該メモリが
不必要になりCPUによって解放されるまで、自由にメ
モリを利用することができる。すなわち、コプロセッサ
がメモリの使用を終えた後にメモリが解放されることを
保証するために、CPUとコプロセッサとの間には何か
しらの同期が必要となる。この同期に関しては、種々の
解決策が示されてはいるが、必ずしも性能の面で好まし
いとは言い難い。
Modern computer systems require some form of memory management to perform dynamic memory allocation. Systems having one or more coprocessors require a technique for synchronizing dynamic memory allocation and memory usage by the coprocessors. A general computer hardware configuration includes a CPU and a special coprocessor, each of which shares a series of memory groups. In such a system, only the CPU is the only part in the system to which the memory can be dynamically allocated. Once the CPU allocates the memory for use by the coprocessor, the coprocessor is free to use the memory until the memory is no longer needed and is released by the CPU. That is, some kind of synchronization is required between the CPU and the coprocessor to ensure that the memory is released after the coprocessor has finished using the memory. Although various solutions have been suggested for this synchronization, it is not always preferable in terms of performance.

【0041】静的に割り当てられたメモリを用いれば、
同期の問題を避けることができるが、メモリ資源の利用
を動的に適応させることが不可能となる。同様に、コプ
ロセッサが処理の実行を終えるまでCPUをブロックし
待たせておくことも可能であるが、並列性を失い、全体
のシステム性能を犠牲にすることになる。コプロセッサ
からの処理の終了を知らせるインタラプト信号の利用も
可能であるが、コプロセッサのスループットが非常に高
い場合には大きな処理のオーバヘッドとなってしまう。
Using a statically allocated memory,
Although synchronization problems can be avoided, it is not possible to dynamically adapt memory resource utilization. Similarly, it is possible to block the CPU and wait until the coprocessor completes execution of the processing, but it loses parallelism and sacrifices overall system performance. Although it is possible to use an interrupt signal for notifying the end of the processing from the coprocessor, if the throughput of the coprocessor is extremely high, a large processing overhead is required.

【0042】高性能要件の他に、このようなシステムで
は動的なメモリ欠乏に対してしなやかに対処しなければ
ならない。多くのコンピュータシステムでは種々のメモ
リサイズ構成が可能となっているが、多くのメモリを具
備するシステムでは有効資源を最大限に利用して性能を
最大にすることが重要である。同様に、最小のメモリサ
イズ構成のシステムでは、少ないメモリながらも十分な
動作を可能にすべきであり、少なくともメモリ欠乏の際
には性能がしなやかに劣化すべきである。
In addition to high performance requirements, such systems must flexibly address dynamic memory starvation. While many computer systems allow various memory size configurations, it is important to maximize available resources and maximize performance in systems with many memories. Similarly, a system with a minimum memory size configuration should be able to operate satisfactorily with a small amount of memory, and its performance should be degraded gently at least in the case of memory shortage.

【0043】これらの問題を解決するために、システム
性能を最大にするとともに、コプロセッサのメモリ使用
をシステム容量や実行する処理の複雑さに動的に適応化
する同期機構が必要である。図4に、(ホスト)CPU
とコプロセッサとの同期をとる好適な構成を示す。図中
の参照番号は、図1の説明において利用したものを用い
ている。
To solve these problems, there is a need for a synchronization mechanism that maximizes system performance and dynamically adapts coprocessor memory usage to system capacity and the complexity of the processing performed. FIG. 4 shows a (host) CPU.
A preferred configuration for synchronizing with the coprocessor is shown. The reference numbers in the figure are the same as those used in the description of FIG.

【0044】図4において、CPU202はシステム中
のすべてのメモリ管理を統括している。CPU202
が、自身、あるいはコプロセッサ224での利用のため
に、メモリ203を割り当てる。コプロセッサ224は
グラフィックス特有の命令セットを有しており、ホスト
プロセッサ202と共有しているメモリ203から命令
1022を実行することができる。これらの命令のそれ
ぞれは結果1024を共有メモリ203に書き込むこと
ができ、またメモリ203からオペランドを読み込むこ
ともできる。ここでコプロセッサ命令のオペランド10
23や結果1024を記憶するに要するメモリ203の
量は、処理の複雑さや種別に依存する。
Referring to FIG. 4, a CPU 202 controls all memory management in the system. CPU 202
Allocates the memory 203 for use by itself or by the coprocessor 224. The coprocessor 224 has a graphics-specific instruction set, and can execute the instruction 1022 from the memory 203 shared with the host processor 202. Each of these instructions can write the result 1024 to the shared memory 203, and can also read operands from the memory 203. Where operand 10 of the coprocessor instruction
The amount of the memory 203 required to store 23 and the result 1024 depends on the complexity and type of the processing.

【0045】CPU202は、コプロセッサ224によ
って実行される命令1022を生成する処理をも行う。
CPU202とコプロセッサ224との間の並列性を最
大にするために、CPU202によって生成された命令
は1022に示されるようにキューイングされてからコ
プロセッサ224において実行される。キュー1022
中の各命令は、コプロセッサ224のためにホストCP
U202によって割り当てられた共有メモリ203中の
オペランド1023や結果1024を参照することがで
きる。
CPU 202 also performs a process of generating instruction 1022 to be executed by coprocessor 224.
To maximize the parallelism between CPU 202 and coprocessor 224, the instructions generated by CPU 202 are queued as shown at 1022 and then executed on coprocessor 224. Queue 1022
Each instruction in the host CP
The operand 1023 and the result 1024 in the shared memory 203 allocated by the U 202 can be referred to.

【0046】図5に示すように、これらの処理を行うた
めに、命令生成部1030、メモリ管理部1031、キ
ュー管理部1032が接続されている。これらすべての
モジュールはホストCPU202上で単一プロセスとし
て実行される。コプロセッサ224における実行命令は
命令生成部1030において生成され、メモリ管理部1
031のサービスを利用して生成された命令のオペラン
ド1023や結果1024のための領域を割り当てる。
また、命令生成部1030は、キュー管理部1032の
サービスを利用して、コプロセッサ224で実行する命
令をキューイングする。
As shown in FIG. 5, an instruction generation unit 1030, a memory management unit 1031, and a queue management unit 1032 are connected to perform these processes. All of these modules execute on host CPU 202 as a single process. The execution instruction in the coprocessor 224 is generated in the instruction generation unit 1030, and the memory management unit 1
The area for the operand 1023 and the result 1024 of the instruction generated using the service 031 is allocated.
The instruction generation unit 1030 uses the service of the queue management unit 1032 to queue instructions to be executed by the coprocessor 224.

【0047】各命令がコプロセッサ224において実行
されると、CPU202はメモリ管理部1031によっ
て命令のオペランド用に割り当てられていたメモリを解
放することができる。ある命令の結果が次の命令のオペ
ランドとなることも可能であり、その後でCPUによっ
てメモリが解放される。コプロセッサ224が命令を終
えると同時にインタラプト信号を送出しメモリを解放す
るのではなく、コプロセッサ224が命令を終えた後の
ある時点でクリーンアップ機構を起動し、命令の処理に
要した資源をシステムが解放する。クリーンアップ機構
が起動される時点は、メモリ管理部1031とキュー管
理部1032との関係に依存しており、利用可能なシス
テムメモリ量や各コプロセッサ命令に必要なメモリ量に
応じて動的に適応させることができる。
When each instruction is executed by the coprocessor 224, the CPU 202 can release the memory allocated by the memory management unit 1031 for the operand of the instruction. The result of one instruction can be the operand of the next instruction, after which the memory is released by the CPU. Rather than sending an interrupt signal and releasing memory at the same time as the coprocessor 224 finishes the instruction, at some point after the coprocessor 224 finishes the instruction, the cleanup mechanism is activated to save the resources required for processing the instruction. System frees. The point at which the cleanup mechanism is activated depends on the relationship between the memory management unit 1031 and the queue management unit 1032, and is dynamically determined according to the amount of available system memory and the amount of memory required for each coprocessor instruction. Can be adapted.

【0048】図6は、コプロセッサ命令キュー1022
の構成を模式的に示した図である。命令群はホストCP
U202によりペンディング命令キュー1040に挿入
され、コプロセッサ224によって読み出され実行に移
される。コプロセッサ224における実行処理が終了す
ると、命令はクリーンアップキュー1041に転送さ
れ、コプロセッサ224が処理を終えた後で命令が必要
とした資源の解放を行う。
FIG. 6 shows the coprocessor instruction queue 1022.
FIG. 3 is a diagram schematically showing the configuration of FIG. Instruction group is host CP
It is inserted into pending instruction queue 1040 by U202 and read and executed by coprocessor 224. When the execution process in the coprocessor 224 is completed, the instruction is transferred to the cleanup queue 1041, and after the coprocessor 224 completes processing, the resources required by the instruction are released.

【0049】命令キュー1022自身は固定あるいは動
的可変サイズの巡回バッファとして構成される。命令キ
ュー1022は、CPU202による命令の生成とコプ
ロセッサ224における命令の実行とを分離している。
各命令のオペランドと結果メモリは、命令生成時に命令
生成部1030からの要求に応じてメモリ管理部103
1(図5)によって割り当てられる。新しく生成された
命令のためのメモリ割当が、以下で説明するメモリ管理
部1031とキュー管理部1032との協調動作を起動
させ、利用可能なメモリ量や命令の複雑さにシステムが
自動的に適応できるようにしている。
The instruction queue 1022 itself is configured as a fixed or dynamically variable size circular buffer. The instruction queue 1022 separates the generation of the instruction by the CPU 202 and the execution of the instruction in the coprocessor 224.
The operand and the result memory of each instruction are stored in the memory management unit 103 according to a request from the instruction generation unit 1030 when the instruction is generated.
1 (FIG. 5). The memory allocation for newly generated instructions triggers the cooperative operation of memory manager 1031 and queue manager 1032, described below, and the system automatically adapts to the amount of available memory and the complexity of the instructions. I can do it.

【0050】命令キュー管理部102は、コプロセッサ
224が命令生成部1030によって生成された命令を
実行し終えるまで、待機することができる。しかし、メ
モリ管理部1031によって割り当てられる命令キュー
1022とメモリ203が十分大きければ、コプロセッ
サ224を全く待つ必要がないか、あるいは少なくとも
すべての命令シーケンスが終了するまで待機する必要は
ない。大きなジョブではこれらの待機時間が、数分間に
も及ぶため、効果は大きい。しかし、ピーク時のメモリ
使用量は利用可能なメモリ量を容易に超えることもあ
る。この時点で、キュー管理部1032とメモリ管理部
1031との間で協調的な動作が開始される。
The instruction queue management unit 102 can wait until the coprocessor 224 finishes executing the instruction generated by the instruction generation unit 1030. However, if the instruction queue 1022 and the memory 203 allocated by the memory management unit 1031 are large enough, it is not necessary to wait for the coprocessor 224 at all, or at least not until all the instruction sequences are completed. In a large job, these waiting times extend for several minutes, so that the effect is large. However, peak memory usage can easily exceed available memory. At this point, a cooperative operation is started between the queue management unit 1032 and the memory management unit 1031.

【0051】命令キュー管理部1032にとって、終了
した命令を「クリーンアップ」し、動的に割り当てられ
たメモリを解放するようにとの指示がなされる時点は適
宜で構わない。メモリ管理部1031が利用可能なメモ
リが少なくなりつつある、あるいはなくなったことを検
出した場合には、キュー管理部1032にクリーンアッ
プ処理を指示し、コプロセッサ224によってもはや利
用されていないメモリを解放させる手段をとる。これに
より、メモリ管理部1031は、CPU202がコプロ
セッサ224を待つ、あるいはコプロセッサ224と同
期することなく、命令生成部1030からの新しく生成
された命令に要するメモリ要求を満足させることができ
る。
The instruction queue management unit 1032 may be appropriately instructed to “clean up” the completed instruction and release the dynamically allocated memory. When the memory management unit 1031 detects that the available memory is decreasing or runs out, it instructs the queue management unit 1032 to perform a cleanup process, and releases the memory that is no longer used by the coprocessor 224. Take measures to make it happen. Accordingly, the memory management unit 1031 can satisfy a memory request required for a newly generated instruction from the instruction generation unit 1030 without the CPU 202 waiting for the coprocessor 224 or synchronizing with the coprocessor 224.

【0052】メモリ管理部1031からキュー管理部1
032に終了命令をクリーンアップする要求を出して
も、命令生成部の新しい要求を満たすに足る十分メモリ
が解放されなかった場合には、メモリ管理部1031は
キュー管理部1032にペンディング命令キュー104
0中の処理中命令の一部、例えば半分が終了するまで待
機せよ、と要求する。これにより、コプロセッサ224
命令のいくつかが終了するまでCPU202処理はブロ
ックされることになる。コプロセッサ224命令のいく
つかが終了すると、これらの命令のオペランドが解放さ
れ、要求を満たすに十分なメモリが得られる。処理中の
命令の一部のみを待つことにより、少なくともいくつか
の命令はペンディング命令キュー1040に存在してお
り、コプロセッサ224は常に動作していることにな
る。多くの場合、CPU202が待機するペンディング
命令キュー1040中の一部をクリーンアップすること
により、メモリ管理部1031にとって十分なメモリが
解放され、命令生成部1030の要求を満たすことがで
きる。
From the memory management unit 1031 to the queue management unit 1
If the request to clean up the end instruction is issued in 032 and the memory sufficient to satisfy the new request of the instruction generation unit is not released, the memory management unit 1031 sends the pending instruction queue 104 to the queue management unit 1032.
Requests to wait until some, for example half, of the in-flight instructions in 0 are completed. Thereby, the coprocessor 224
CPU 202 processing will be blocked until some of the instructions are completed. Upon completion of some of the coprocessor 224 instructions, the operands of those instructions are freed, leaving enough memory to satisfy the request. By waiting for only a portion of the instructions being processed, at least some of the instructions are in the pending instruction queue 1040 and the coprocessor 224 is always running. In many cases, by cleaning up a part of the pending instruction queue 1040 in which the CPU 202 waits, sufficient memory is released for the memory management unit 1031 and the request of the instruction generation unit 1030 can be satisfied.

【0053】コプロセッサ224がペンディング命令の
例えば半分が実行終了するまで待機したとしても要求を
満たすだけのメモリが解放されなかったという特殊なケ
ースの場合には、メモリ管理部1031はすべてのペン
ディングコプロセッサ命令が終了するまで待機するとい
う最後の手段をとる。システムの現在のメモリ容量を超
えるような非常に大きなかつ複雑なジョブなどを除い
て、これにより命令生成部1030の要求を満たすに十
分な資源が解放される。
In a special case in which the memory sufficient to satisfy the request is not released even if the coprocessor 224 waits until, for example, half of the pending instructions have been executed, the memory management unit 1031 will execute all pending commands. One last resort is to wait for the processor instruction to finish. Except for very large and complex jobs that would exceed the current memory capacity of the system, this frees up enough resources to satisfy the requirements of the instruction generator 1030.

【0054】このようなメモリ管理部1031とキュー
管理部1032との協調動作により、システムに与えら
れたメモリ量203の中で効率的にスループットを最大
にすることが可能となる。より多くのメモリがあれば同
期の必要性は少なくなり、より大きなスループットを得
ることができる。逆に、より少ないメモリの場合には、
コプロセッサ224が乏しいメモリ203を使っての処
理が終わるまで待機することが多くなり、利用可能なメ
モリが少なくても動作はするものの性能は劣化する。
By the cooperative operation of the memory management unit 1031 and the queue management unit 1032, the throughput can be efficiently maximized in the memory amount 203 given to the system. With more memory, the need for synchronization is reduced and greater throughput can be obtained. Conversely, for less memory,
The coprocessor 224 often waits until the processing using the scarce memory 203 is completed, and even if the available memory is small, the coprocessor 224 operates but the performance deteriorates.

【0055】命令生成部1030からの要求を満たす際
にメモリ管理部1031が行う処理ステップを以下にま
とめる。各ステップは順々に実行され、ステップ後にメ
モリ管理部1031が要求を満たすに十分なメモリ20
3が得られるかどうか調べる。十分なメモリが得られる
場合には要求が満たされるため、ステップを終了する。
得られなかった場合には、次のステップに進み、要求を
満たすべくより過激な処理に進む。 1.利用可能なメモリ203で要求を満たすことを試み
る 2.すべての終了した命令をクリーンアップする 3.ペンディング命令の一部が終了するのを待つ 4.すべてのペンディング命令が終了するのを待つ なお、要求を満たすために、ペンディング命令のうちの
異なる部分(例えば、1/3や2/3)を待機すると
か、多量のメモリを使用することがわかっている特定の
命令を待機するなど、他のオプションを用いることもで
きる。
The processing steps performed by the memory management unit 1031 when satisfying the request from the instruction generation unit 1030 are summarized below. Each step is executed sequentially, and after the step, the memory management unit 1031 has sufficient memory 20 to satisfy the request.
Check if 3 is obtained. If sufficient memory is available, the request is satisfied and the step ends.
If not, it proceeds to the next step and proceeds to more radical processing to satisfy the request. 1. 1. Attempt to satisfy the request with available memory 203 2. Clean up all completed instructions. 3. Wait for part of the pending instruction to end. Wait for all pending instructions to finish Note that it turns out to wait for a different part of the pending instructions (eg, 1/3 or 2/3) or use a lot of memory to satisfy the request. Other options may be used, such as waiting for a particular instruction being performed.

【0056】図7において、メモリ管理部1031とキ
ュー管理部1032との間での協調動作に加えて、固定
長命令キューバッファ1050が溢れた場合にはキュー
管理部1032がコプロセッサ224と同期をとること
もできる。このような状況を図7に示しており、ペンデ
ィング命令キュー1040は長さ10個の命令のキュー
としている。付加される最新の命令が最も大きい数を有
しているため、領域が溢れると最新の命令は位置9に格
納される。次にコプロセッサ224に入力される命令は
位置0において待機している。
In FIG. 7, in addition to the cooperative operation between the memory management unit 1031 and the queue management unit 1032, when the fixed-length instruction queue buffer 1050 overflows, the queue management unit 1032 synchronizes with the coprocessor 224. Can also be taken. Such a situation is shown in FIG. 7, where the pending instruction queue 1040 is a queue of ten instructions long. When the area overflows, the newest instruction is stored at location 9 because the newest instruction to be added has the largest number. The next instruction to be input to coprocessor 224 is waiting at location 0.

【0057】領域が溢れた場合には、キュー管理部10
32はコプロセッサ224がペンディング命令の例えば
半分の処理を終えるまで待機する。この待機により、通
常はキュー管理部1032によって挿入される新しい命
令に必要な十分な領域が解放される。新しい命令をスケ
ジューリングする際のキュー管理部1032の動作は以
下の通りである。 1.命令キュー1040に十分な領域が残っているかテ
ストする 2.十分な領域が残っていない場合は、コプロセッサが
ある所定数の命令が終了するまで待機する 3.新しい命令をキューに挿入する ある命令が終了するのを待機せよと指示されたキュー管
理部1032の動作は以下の通りである。 1.命令が終了したとコプロセッサ224から指示され
るまで待機する 2.クリーンアップされていない終了した命令がある場
合には、次に終了した命令をキューから削除する 新しい命令を生成する際の命令生成部1030の動作は
以下の通りである。 1.命令オペランド1023に必要なメモリをメモリ管
理部1031に要求する 2.転送する命令を生成する 3.コプロセッサ命令をキュー管理部1032に転送し
実行する 以上の動作プロセスを擬似コードの形で示した例を以下
に示す。
When the area overflows, the queue management unit 10
32 waits until the coprocessor 224 completes processing, for example, half of the pending instruction. This waiting frees enough space for new instructions that would normally be inserted by the queue manager 1032. The operation of the queue management unit 1032 when scheduling a new instruction is as follows. 1. 1. Test if enough space remains in instruction queue 1040 If there is not enough space left, the coprocessor waits for a given number of instructions to complete. Inserting a New Instruction in Queue The operation of the queue management unit 1032 instructed to wait for an instruction to end is as follows. 1. 1. Wait until instructed by coprocessor 224 that the instruction has been completed. If there is a completed instruction that has not been cleaned up, the next completed instruction is deleted from the queue. The operation of the instruction generation unit 1030 when generating a new instruction is as follows. 1. 1. Request memory required for the instruction operand 1023 from the memory management unit 1031. 2. Generate instructions to transfer A coprocessor instruction is transferred to the queue management unit 1032 and executed. An example of the above operation process in the form of pseudo code is shown below.

【0058】 メモリ管理 ALLOCATE_MEMORY BEGIN IF 要求を満たすのに十分なメモリが得られないとすると THEN 終了した命令すべてをクリーンアップ(一掃)する ENDIF IF 要求を満たすのに十分なメモリが未だ得られないとすると THEN WAIT_FOR_INSTRUCTIONを呼び出 し、ペンディング命令の半分の終了を待つ ENDIF IF 要求を満たすのに十分なメモリが未だ得られないとすると THEN エラーを出力し戻る ENDIF 割り当てたメモリを戻す キュー管理 SCHEDULE_INSTRUCTION BEGIN IF 命令キューに十分な領域が得られないとすると THEN ある所定数の命令をコプロセッサが終了するまで待機する ENDIF 新しい命令をキューに付加する END WAIT_FOR_INSTRUCTION(i) BEGIN 命令iが終了したとコプロセッサから指示されるまで待機する WHILE 終了しているもののクリーンアップされていない命令が ある DO IF 次の終了した命令にクリーンアップ機能が備わっている THEN クリーンアップ機能を呼び出す ENDIF キューから終了した命令を削除する DONE END 命令生成部 GENERATE_INSTRUCTIONS BEGIN ALLOCATE_MEMORYを呼び出し、命令オペランドに必要な メモリをメモリ管理部において割り当てる 転送する命令を生成する SCHEDULE_INSTRUCTIONを呼び出し、コプロセッサ 命令をキュー管理部に転送し実行する END 3.3 コプロセッサのレジスタの説明 図1と3において説明したように、コプロセッサ224
は各命令ストリームを実行するために複数のレジスタを
備える。
If there is not enough memory available to satisfy the ALLOCATE_MEMORY BEGIN IF request, then THEN clean up all instructions that have completed THEN If there is not enough memory available to satisfy the ENDIF IF request Then, it calls THEN WAIT_FOR_INSTRUCTION and waits for the completion of half of the pending instruction. If there is not enough memory available to satisfy the ENDIF IF request, it outputs a THEN error and returns. ENDIF returns the allocated memory. Queue management SCHEDULE_INSTRUCTION BEGINIF If there is not enough space in the instruction queue, THEN waits for a certain number of instructions until the coprocessor finishes. ENDIF queues new instructions END WAIT_FOR_INSTRUCTION (i) BEGIN Wait until the coprocessor indicates that the instruction i has finished WHILE There are instructions that have been finished but not cleaned up DO IF The next finished instruction has a cleanup function Call the THEN clean-up function ENDIF Delete the finished instruction from the queue DONE END Instruction generation unit GENERATE_INSTRUCTIONS BEGIN ALLOCATE_MEMORY is called, and the memory required for the instruction operand is allocated in the memory management unit. The transfer instruction is generated. SCHEDULE_INSTRU Coprocessor END 3.3 Coprocessor transfers instructions to queue management unit for execution Description of the registers of the coprocessor 224 as described in FIGS.
Comprises a plurality of registers for executing each instruction stream.

【0059】図2中のモジュールに対して、表1はコプ
ロセッサ224において用いられるレジスタの名前、種
別、説明を示しており、付録Bはそれぞれのレジスタの
各フィールドを説明している。 レジスタの説明
For the modules in FIG. 2, Table 1 shows the names, types, and descriptions of registers used in the coprocessor 224, and Appendix B describes each field of each register. Register description

【0060】[0060]

【表1A】 [Table 1A]

【0061】[0061]

【表1B】 [Table 1B]

【0062】[0062]

【表1C】 [Table 1C]

【0063】[0063]

【表1D】 [Table 1D]

【0064】[0064]

【表1E】 [Table 1E]

【0065】[0065]

【表1F】 [Table 1F]

【0066】[0066]

【表1G】 [Table 1G]

【0067】これらのレジスタ中で着目すべきものは以
下のものである。 (a)命令ポインタレジスタ(ic_ipaとic_i
pb)。これらのレジスタペアは現在実行している命令
の仮想アドレスを格納する。仮想アドレスの昇順に命令
がフェッチされ実行される。制御が不連続な仮想アドレ
スに移る場合にはジャンプ命令が用いられる。各命令に
は、32ビットのシーケンス番号が付与され、シーケン
ス番号は一命令ごとに1ずつ増える。シーケンス番号は
コプロセッサ224とホストCPU202双方におい
て、命令の生成と実行の同期をとるために用いられる。 (b)終了レジスタ(ic_fnaとic_fnb)。
これらのレジスタペアは、終了した命令のシーケンス番
号を格納する。 (c)ToDoレジスタ(ic_tdaとic_td
b)。これらのレジスタペアは、キューイングされてい
る命令のシーケンス番号を格納する。 (d)インタラプトレジスタ(ic_intaとic_
intb)。これらのレジスタペアは、インタラプトを
かけるシーケンス番号を格納する。 (e)インタラプト状態レジスタ(ic_stat.a
_primedとic_stat.b_prime
d)。これらのレジスタペアは、インタラプト、終了レ
ジスタとが合致した時点でインタラプトを起動するフラ
グであるプライムビットを格納する。本ビットは、イン
タラプト状態(ic_stat)レジスタ中の他のイン
タラプトイネーブルビットや他の状態/構成情報と同様
に格納される。 (f)レジスタアクセスセマフォア(ic_semaと
ic_semb)。ホストCPU202は、コプロセッ
サ224への高速性、即ち、1回以上のレジスタへの書
き込みを必要とするレジスタアクセスに先立ちセマフォ
アを入手しておかなければならない。これに対して、高
速性を必要としないレジスタアクセスの場合は何時でも
実行することができる。ホストCPU202がセマフォ
アを入手することに付随する欠点は、現在実行中の命令
が終了するまでコプロセッサの実行が中断することであ
る。レジスタアクセスセマフォアは、コプロセッサ22
4の構成/状態レジスタの1ビットとして構成される。
これらのレジスタは命令制御美のレジスタ領域中に存在
する。前述の通り、コプロセッサの各サブモジュール
は、それぞれ構成/状態レジスタを備えており、通常の
命令実行においてレジスタが設定される。これらのすべ
てのレジスタは、レジスタマップ上に表されており、多
くは命令実行において暗黙的に修正される。ホストはレ
ジスタマップを介してこれらのレジスタの内容を知るこ
とができる。 3.4 複数ストリームフォーマット 前述の通り、資源を最大限に有効に利用するために、ま
た外部周辺装置に高速に出力するために、コプロセッサ
224は2つの独立な命令ストリームの1つを実行す
る。通常は、1つの命令ストリームは出力デバイスが適
時点で必要とする現在の出力ページに対応しており、2
つ目の命令ストリームが他の命令ストリームが休止中で
あるときにコプロセッサ224のモジュールを利用す
る。ここで、最も重要な点は、必要な出力データを適時
点で出力することであるとともに、続くページ、バンド
などの準備のために資源を最大限に利用することであ
る。従って、コプロセッサ224は、全く独立であるも
のの同じように実行される2つの命令ストリーム(以
下、AとBと呼ぶ)を実行するように設計される。命令
はホストCPU202上で動作しているソフトウエアに
よって生成され、ラスタ画像アクセラレータカード22
0に転送されコプロセッサ224によって実行されるこ
とが望ましい。通常動作では、命令ストリームの1つ
(ストリームA)は、他の命令ストリーム(ストリーム
B)よりも高い優先度で動作する。命令ストリームある
いはキューはホストRAM203(図1)中の一つある
いは複数のバッファに書き込まれる。バッファは開始時
点で割り当てられ、アプリケーションの実行中はホスト
203の物理メモリに固定される。各命令はホストRA
M203の仮想メモリ環境に格納されることが好まし
く、ラスタ画像コプロセッサ224が仮想アドレスから
物理アドレスへの変換を行い、次の命令の位置としてホ
ストRAM203中の対応する物理アドレスを決定す
る。これらの命令は順々にコプロセッサ224のローカ
ルメモリに格納される。
The following should be noted in these registers. (A) Instruction pointer registers (ic_ipa and ic_i
pb). These register pairs store the virtual address of the currently executing instruction. Instructions are fetched and executed in ascending virtual address order. When control transfers to a discontinuous virtual address, a jump instruction is used. Each instruction is assigned a 32-bit sequence number, and the sequence number increases by one for each instruction. The sequence number is used by both the coprocessor 224 and the host CPU 202 to synchronize the generation and execution of instructions. (B) End registers (ic_fna and ic_fnb).
These register pairs store the sequence numbers of completed instructions. (C) ToDo registers (ic_tda and ic_td
b). These register pairs store the sequence numbers of the queued instructions. (D) Interrupt registers (ic_inta and ic_
intb). These register pairs store a sequence number to be interrupted. (E) Interrupt status register (ic_stat.a)
_Primed and ic_stat. b_prime
d). These register pairs store a prime bit which is a flag for activating the interrupt when the interrupt and end registers match. This bit is stored in the same manner as other interrupt enable bits and other status / configuration information in the interrupt status (ic_stat) register. (F) Register access semaphores (ic_sema and ic_semb). The host CPU 202 must obtain a semaphore prior to high-speed access to the coprocessor 224, that is, register access that requires one or more register writes. On the other hand, a register access that does not require high speed can be executed at any time. A disadvantage associated with host CPU 202 obtaining the semaphore is that coprocessor execution is suspended until the currently executing instruction has completed. The register access semaphore is
4 as one bit of the configuration / status register.
These registers exist in the register area of the instruction control. As described above, each sub-module of the coprocessor has a configuration / status register, and the register is set during normal instruction execution. All these registers are represented on a register map, many of which are modified implicitly in instruction execution. The host can know the contents of these registers via the register map. 3.4 Multiple Stream Format As described above, for maximum resource utilization and high speed output to external peripherals, coprocessor 224 executes one of two independent instruction streams. . Normally, one instruction stream corresponds to the current output page needed by the output device at the right time, and 2
The first instruction stream utilizes the modules of coprocessor 224 when other instruction streams are idle. Here, the most important point is to output necessary output data at an appropriate time, and to make maximum use of resources for preparing subsequent pages and bands. Accordingly, coprocessor 224 is designed to execute two instruction streams (hereinafter referred to as A and B) that are completely independent but are executed in a similar manner. The instructions are generated by software running on the host CPU 202, and are executed by the raster image accelerator card 22.
0 and is preferably executed by coprocessor 224. In normal operation, one of the instruction streams (stream A) operates at a higher priority than the other instruction stream (stream B). The instruction stream or queue is written to one or more buffers in host RAM 203 (FIG. 1). The buffer is allocated at the start and is fixed in the physical memory of the host 203 during the execution of the application. Each instruction is the host RA
It is preferably stored in the virtual memory environment of M203, and the raster image coprocessor 224 performs the conversion from the virtual address to the physical address and determines the corresponding physical address in the host RAM 203 as the position of the next instruction. These instructions are stored sequentially in the local memory of the coprocessor 224.

【0068】図8は、ホストRAM203中に格納され
ている2つのストリームAとBのフォーマットを示す図
である。ストリームAとBそれぞれのフォーマットは本
質的に同一である。コプロセッサ224における簡単な
実行モデルは、以下のものから構成される。 *AストリームとBストリームの2つの命令仮想ストリ
ーム *通常はある時点で1つのみの命令が実行される *どちらかのストリームが優先権を有することもできる
し、「ラウンドロビン」的に優先権を交互にすることも
できる *どちらかのストリームを「ロック」して、ストリーム
優先権や他のストリームの命令実行可能度に関わらず、
確実に実行することもできる *どちらかのストリームが空であっても良い *どちらかのストリームが利用不能であっても良い *どちらかのストリームは、後続の命令が「オーバラッ
プ」していなければ、次の命令の実行と「オーバラッ
プ」しているような命令を含んでいても良い *各命令は32ビットの1つずつ増加するような「一意
な」シーケンス番号を有する *各命令はインタラプトや命令実行を停止させるコード
を有していても良い *外部インタフェースの遅延の影響を最小限にするため
に、命令をあらかじめフェッチしても良い 命令制御部235は、コプロセッサ224の全体の実行
制御を行うためや、必要な時にホストRAM203から
命令をフェッチするために、コプロセッサの命令実行モ
デルを実装している。一つの命令ごとに、命令制御部2
35は命令の復号を行い、CBus231を介してモジ
ュール中の種々のレジスタを構成し、該当モジュールに
命令を実行させる処理を行う。
FIG. 8 is a diagram showing the format of two streams A and B stored in the host RAM 203. The format of each of streams A and B is essentially the same. A simple execution model in the coprocessor 224 consists of: * Two instruction virtual streams, A stream and B stream * Normally only one instruction is executed at a time * Either stream can have priority or "round robin" priority * Can be "locked" on either stream, regardless of stream priority or the ability of other streams to execute instructions.
Can be executed reliably * Either stream may be empty * Either stream may not be available * Either stream must have subsequent instructions "overlapping" For example, instructions may include instructions that "overlap" the execution of the next instruction. * Each instruction has a "unique" sequence number that increments by 32 bits. * Each instruction The instruction control unit 235 may have a code for stopping an interrupt or the execution of an instruction. An instruction execution model of the coprocessor is implemented to control execution and fetch instructions from the host RAM 203 when necessary. Instruction control unit 2 for each instruction
35 decodes the instruction, configures various registers in the module via the CBus 231 and performs processing for causing the module to execute the instruction.

【0069】図9は、命令制御部235で実行する命令
実行サイクルを簡単な形で示した図である。命令実行サ
イクルは4つの主なステージ276−279から成る。
第1ステージ276では、命令ストリームにおいて命令
がペンディング状態であるかどうかを調べる。ペンディ
ング状態である場合には、命令をフェッチして277、
復号ならびに実行し278、レジスタを更新する27
9。 3.5 現在のアクティブストリームの決定 第1ステージでは、2つのステップを実行しなければな
らない。 1.命令がペンディングしているかどうかの決定 2.どの命令ストリームを次にフェッチするかの決定 どの命令がペンディングであるかを決定するためには次
の可能性を調べる。 1.命令制御部がイネーブルかどうか 2.内部エラーやインタラプトにより命令制御部が休止
しているかどうか 3.ペンディングしている外部エラー状態があるかどう
か 4.AあるいはBのストリームがロックしているかどう
か 5.どちらかのストリームシーケンス番号がイネーブル
かどうか 6.どちらかのストリームがペンディング命令を有して
いるかどうか 以下に示す擬似コードは、上記ルールに基づいて命令が
ペンディングしているかどうかを決定するアルゴリズム
を示したものである。このアルゴリズムは、既知の技術
を用いて、命令制御部235中に状態遷移機械を介して
ハードウェアとして実装することができる。
FIG. 9 is a diagram schematically showing an instruction execution cycle executed by the instruction control unit 235. The instruction execution cycle consists of four main stages 276-279.
The first stage 276 checks whether the instruction is pending in the instruction stream. If so, fetch the instruction and 277;
Decrypt and execute 278, update register 27
9. 3.5 Determining the current active stream In the first stage, two steps must be performed. 1. 1. Determine if the instruction is pending Determining Which Instruction Stream to Fetch Next To determine which instruction is pending, look at the following possibilities: 1. 1. Whether the instruction control unit is enabled 2. Whether the instruction control unit is paused due to an internal error or interrupt. 3. Whether any external error conditions are pending. 4. Whether the A or B stream is locked 5. Whether either stream sequence number is enabled Whether Either Stream Has Pending Instructions The following pseudo code illustrates an algorithm that determines whether an instruction is pending based on the above rules. This algorithm can be implemented as hardware in the instruction controller 235 via a state transition machine using known techniques.

【0070】 ifエラーモードでなく、稼働モードであり、バイパスモードでもなく、自己 診断モードである if Aストリームがロックされていて休止中でない if Aストリームが稼働モードであり、かつ「Aストリームのシーケン ス番号が休止中、あるいはAストリームに命令が存在する」 命令はペンディングしている else 命令はペンディングしていない end if else if Bストリームがロックされていて休止中でない if Bストリームが稼働モードであり、かつ「Bストリームのシーケ ンス番号が休止中、あるいはBストリームに命令が存在する」 命令はペンディングしている else 命令はペンディングしていない end if else /*ストリームがロックされていない*/ if Aストリームが稼働モードで休止中でない、かつ「Aストリー ムのシーケンス番号が休止中、あるいはAストリームに命令が存在する」 命令はペンディングしている else 命令はペンディングしていない end if end if else /*インタフェース制御部が稼動していない*/ 命令はペンディングされていない end if いかなる命令もペンディングしていない場合には、命令制御部235はペンデ ィング命令が見つかるまで「スピン」あるいはアイドル状態となる。If not in error mode, is in operation mode, is not in bypass mode, and is in self-diagnosis mode. IfA stream is locked and not paused. IfA stream is in operation mode, and “sequence of A stream The instruction number is paused or there is an instruction in stream A. The instruction is pending else The instruction is not pending end if else if B stream is locked and not paused if B stream is in active mode And "the sequence number of the B stream is paused, or there is an instruction in the B stream." The instruction is pending else The instruction is not pending end if else / * The stream is not locked * / if A Stream running mode Is not paused, and "the sequence number of the A stream is paused, or there is an instruction in the A stream" The instruction is pending else The instruction is not pending end if end if else / * Interface control unit Is not running * / instruction is not pending end if If no instruction is pending, instruction controller 235 goes into a "spin" or idle state until a pending instruction is found.

【0071】どのストリームがアクティブであるか、ど
のストリームを次に実行するかを決定するために、次の
状態が調べられる。 1.どちらかのストリームがロックされているか 2.AとBのストリームにどの優先権が付与されてお
り、最後に実行した命令ストリームはどちらであるか 3.どちらかのストリームが稼動しているか 4.どちらかのストリームがペンディング命令を有して
いるか 以下は、命令制御部によって実装される擬似コードを示
したものであり、どのように次にアクティブとなるスト
リームを決定するかを示している。
The next state is examined to determine which stream is active and which stream to execute next. 1. 1. Which stream is locked? 2. Which priority is given to the streams A and B, and which instruction stream was executed last? 3. Which stream is running? Which Stream Has Pending Instructions The following shows the pseudo code implemented by the instruction controller, and shows how to determine the next active stream.

【0072】 if Aストリームがロックされている 次のストリームはA else if Bストリームがロックされている 次のストリームはB else /*どちらのストリームもロックされていない*/ if Aストリームが稼動モード、かつ「Aストリームのシーケンス番号 が休止中、あるいはAストリームに命令が存在する」、かつ「Bストリームが稼 動モードで、「Bストリームのシーケンス番号が休止中、あるいはBストリーム に命令が存在」」しなければ、次のストリームはA else if Bストリームが稼動モード、かつ「Bストリームのシーケ ンス番号が休止中、あるいはBストリームにペンディング命令が存在する」、か つ「Aストリームが稼動モードで、「Aストリームのシーケンス番号が休止中、 あるいはAストリームに命令が存在」」しなければ、次のストリームはB else /*どちらのストリームも命令が存在しない*/ if pri=0 /*A高、B低*/ 次のストリームはA else if pri=1 /*A低、B高*/ 次のストリームはB else if pri=2or3 /*ラウンドロビン*/ if 最後のストリームがA 次のストリームはB else 次のストリームはA end if end if end if end if 条件は常に変化しているため、すべての条件を短時間で調べることが必要であ る。 3.6 現在のアクティブストリームのフェッチ命令 次のアクティブ命令ストリームを決定すると、命令制御
部235は対応する命令ポインタレジスタ(ic_ip
aとic_ipb)中のアドレスを用いて命令をフェッ
チする。しかしながら、有効な命令が既に命令制御部2
35中のプレフェッチバッファ内に存在する場合には、
命令制御部235は命令をフェッチしない。
If stream A is locked Next stream is A else if B stream is locked Next stream is Belse / * Neither stream is locked * / if A stream is in operation mode And "the sequence number of stream A is paused or there is an instruction in stream A", and "the stream B is in operation mode and the sequence number of stream B is paused or there is an instruction in stream B" Otherwise, the next stream is Aelise if the B stream is in operation mode, "the sequence number of B stream is paused, or there is a pending command in B stream", and "the A stream is in operation mode. "The sequence number of stream A is paused, If there is no instruction in the stream, then the next stream is Belse / * neither stream has instructions * / if pri = 0 / * A high, B low * / the next stream is A else if pri = 1 / * A low, B high * / The next stream is Belse if pri = 2or3 / * Round robin * / if The last stream is A next, the next stream is Belse, and the next stream is A end if end if end if Since the end if condition is constantly changing, it is necessary to check all conditions in a short time. 3.6 Fetch Instruction of Current Active Stream When the next active instruction stream is determined, the instruction control unit 235 causes the corresponding instruction pointer register (ic_ip
Fetch an instruction using the address in a and ic_ipb). However, the valid instruction is already
If it exists in the prefetch buffer in 35,
The instruction control unit 235 does not fetch an instruction.

【0073】以下の条件が満たされるときに、プレフェ
ッチバッファ中の命令が有効になる。 1.プレフェッチバッファが有効である 2.プレフェッチバッファ中の命令が現在のアクティブ
ストリームと同じストリームからのものである プレフェッチバッファの内容の有効性は、ic_sta
tレジスタ中のプレフェッチビットによって表され、当
該ビットは命令のプレフェッチが成功した際にセットさ
れる。なお、命令制御部235のいかなるレジスタへの
外部書き込みも、プレフェッチバッファの内容を無効に
させる。 3.7 復号、実行命令 命令がフェッチされ、受理されると、命令制御部235
は命令を復号し、命令を実行するためにコプロセッサ2
24のレジスタ229を構成する。
An instruction in the prefetch buffer becomes valid when the following conditions are satisfied. 1. 1. Prefetch buffer is valid The instructions in the prefetch buffer are from the same stream as the current active stream. The validity of the contents of the prefetch buffer is ic_sta
Represented by a prefetch bit in the t register, which is set when the instruction prefetch is successful. Note that external writing to any register of the instruction control unit 235 invalidates the contents of the prefetch buffer. 3.7 Decryption and Execution Instructions When an instruction is fetched and accepted, the instruction control unit 235
Coprocessor 2 decodes the instruction and executes the instruction.
24 registers 229 are configured.

【0074】ラスタ画像コプロセッサ224において用
いられる命令フォーマットは、命令の生成がホストCP
U202からの命令によって実行され、ホストに対して
直接的なオーバヘッドになるという点で、従来のプロセ
ッサ命令セットとは異なる。また、命令はホストRAM
203に格納され、図1のPCIバス206を介してコ
プロセッサ224に転送されるため、命令はできるだけ
小型化すべきである。好ましくは、コプロセッサ224
は単一の命令によって実行開始されることが望ましい。
また、将来の変更に最大限対処可能とするためには、命
令セットの柔軟性をできるだけ保持することが望まし
い。更に、コプロセッサ224において実行される命令
はオペランドデータの長いストリームにも適用でき、最
適な性能が得られるようにすることも好ましい。なお、
コプロセッサ224が用いる命令復号「哲学」として、
「一般的な命令」の復号を簡潔にかつ高速に行うととも
に、「一般的でない」処理に対してもコプロセッサ22
4の動作に対して細かい制御をホストシステムが行える
ようにデザインを取り入れている。
The command format used in the raster image coprocessor 224 is such that the command is generated by the host CP.
It differs from the conventional processor instruction set in that it is executed by an instruction from U202 and has direct overhead to the host. The instruction is the host RAM
The instructions should be as small as possible because they are stored in 203 and transferred to the coprocessor 224 via the PCI bus 206 of FIG. Preferably, coprocessor 224
Is desirably started by a single instruction.
It is also desirable to maintain the flexibility of the instruction set as much as possible in order to be able to cope with future changes. Further, the instructions executed in coprocessor 224 are also applicable to long streams of operand data, preferably for optimal performance. In addition,
As instruction decoding "philosophy" used by the coprocessor 224,
Decoding of “general instructions” is performed simply and at high speed, and coprocessor 22 is used for “uncommon” processing.
The design is adopted so that the host system can perform fine control for the operation of No. 4.

【0075】図10は、それぞれが32ビットの8ワー
ドから成る単一命令280フォーマットを示している。
各命令は、命令ワード(オプコード)281、オペラン
ドの種別を示すオペランドあるいは結果タイプデータワ
ード282を含む。3つのオペランドA,B,Cのアド
レス283−285も、結果アドレス286とともに含
まれる。更に、領域287も、ホストCPU202が用
いる命令に関する情報を格納するために含んでいる。
FIG. 10 shows a single instruction 280 format, each consisting of 8 words of 32 bits.
Each instruction includes an instruction word (opcode) 281 and an operand or result type data word 282 indicating the type of the operand. Addresses 283-285 for the three operands A, B, C are also included along with the result address 286. Further, an area 287 is also included for storing information related to an instruction used by the host CPU 202.

【0076】図11は、命令の命令オプコード281の
構造290を示した図である。命令オプコードは32ビ
ット長で、主オプコード291、補オプコード292、
インタラプト(I)ビット293、一部復号(Pd)ビ
ット294、レジスタ長(R)ビット295、ロック
(L)ビット296、長さ297を含む。命令ワード2
90のそれぞれのフィールドの説明を以下の表に示す。
FIG. 11 is a diagram showing the structure 290 of the instruction opcode 281 of the instruction. The instruction opcode is 32 bits long and includes a main opcode 291, a complementary opcode 292,
Includes interrupt (I) bit 293, partially decoded (Pd) bit 294, register length (R) bit 295, lock (L) bit 296, and length 297. Instruction word 2
A description of each of the 90 fields is provided in the table below.

【0077】オプコード説明Description of Opcode

【0078】[0078]

【表2A】 [Table 2A]

【0079】[0079]

【表2B】 [Table 2B]

【0080】Iビットフィールド293をセットするこ
とによって、命令が終了した時点で命令の実行がインタ
ラプトされ休止するように命令をコード化することがで
きる。なお、このインタラプトは「命令終了インタラプ
ト」と呼ばれる。一部復号ビット294は、一部復号ビ
ット294のビットがセットされ、ic_cfgレジス
タ中で稼動モードになると、以下に述べるように命令の
実行に先立ち種々のモジュールがマイクロコード化され
るというような一部復号機能を提供する。ロックビット
296は、開始にあたり1つ以上の命令を必要とする処
理の際に用いられる。この際には、命令に先立ち種々の
レジスタがセットされ、次の命令のために現在の命令ス
トリームを「ロック」される。Lビット296がセット
されると、命令が終了した時点で次の命令が同じストリ
ームからフェッチされる。長さフィールド297は各命
令の一般的な定義であり、必要となる「入力データ項
目」数あるいは「出力データ項目」数として定義され、
16ビット長である。64、000項目以上の入力デー
タ項目のストリームに対する処理の場合には、Rビット
295がセットされ、図2のピクセルオーガナイザ24
6中のpo_lenレジスタから入力長を得る。当該レ
ジスタはこのような命令の直前にセットされる。
By setting the I bit field 293, the instruction can be coded so that execution of the instruction is interrupted and paused when the instruction is completed. This interrupt is called an "instruction end interrupt". The partially decoded bit 294 is such that when the bits of the partially decoded bit 294 are set and the operating mode is set in the ic_cfg register, various modules are microcoded prior to execution of the instruction as described below. Provides a partial decoding function. The lock bit 296 is used for processing that requires one or more instructions to start. At this time, various registers are set prior to the instruction, and the current instruction stream is "locked" for the next instruction. When the L bit 296 is set, the next instruction is fetched from the same stream when the instruction is completed. Length field 297 is a general definition of each instruction, defined as the number of "input data items" or "output data items" required,
It is 16 bits long. In the case of processing for a stream of 64,000 or more input data items, the R bit 295 is set and the pixel organizer 24 of FIG.
6 is obtained from the po_len register. The register is set immediately before such an instruction.

【0081】図10において、ある命令に必要なオペラ
ンド283〜286の数は用いる命令タイプに応じて可
変である。以下の表は、各命令タイプごとにオペランド
数と長さの定義とを示したものである。 オペランドタイプ
In FIG. 10, the number of operands 283 to 286 required for an instruction is variable depending on the instruction type used. The following table shows the number of operands and the definition of the length for each instruction type. Operand type

【0082】[0082]

【表3】 [Table 3]

【0083】図12は、3オペランド命令に対する図1
0のデータワード、オペランド記述子282のデータワ
ードフォーマット300と、2オペランド命令に対する
データワードフォーマット301とを示している。以下
の表に、オペランド記述子のコード化の詳細を示す。 オペランド記述子
FIG. 12 is a diagram of FIG. 1 for a three-operand instruction.
0 shows a data word of 0, a data word format 300 of an operand descriptor 282, and a data word format 301 for a two-operand instruction. The following table details the encoding of the operand descriptor. Operand descriptor

【0084】[0084]

【表4】 [Table 4]

【0085】上述の表において、一定データアドレスモ
ードの場合には、コプロセッサ224が1つの内部デー
タ項目をフェッチあるいは計算して、この項目を当該オ
ペランドの命令長として用いる。タイルアドレスモード
の場合には、コプロセッサ224がいくつかのデータを
サイクルして「タイル効果」を得る。オペランド記述子
のLビットがゼロの場合には、データが短く、データ項
目がオペランドワード中に存在することを意味する。
In the above table, in the case of the fixed data address mode, the coprocessor 224 fetches or calculates one internal data item, and uses this item as the instruction length of the operand. In the case of the tile address mode, the coprocessor 224 cycles some data to obtain a “tile effect”. If the L bit of the operand descriptor is zero, the data is short, meaning that the data item is present in the operand word.

【0086】図10において、それぞれのオペランド/
結果ワード283−286は、オペランド自身の値ある
いはデータが格納されているオペランド/結果の開始位
置を示す32ビット仮想アドレスを含む。図2の命令制
御部235は、命令を二段階で復号する。最初に、命令
の主オプコードが有効であるかを調べ、主オプコード
(図11)が無効である場合にはエラーを生成する。次
に、CBus231を介して種々のレジスタを設定する
ことにより、命令制御部235が命令を実行し、命令に
指定されている動作を行う。なお、設定するレジスタが
ないような命令もある。
In FIG. 10, each operand /
Result words 283-286 include a 32-bit virtual address that indicates the value of the operand itself or the start position of the operand / result where the data is stored. The instruction control unit 235 in FIG. 2 decodes the instruction in two stages. First, it checks whether the main opcode of the instruction is valid, and generates an error if the main opcode (FIG. 11) is invalid. Next, by setting various registers via the CBus 231, the instruction control unit 235 executes the instruction and performs the operation specified by the instruction. Note that there are instructions for which there is no register to be set.

【0087】各モジュールのレジスタは動作に応じてい
くつかの種別に分けられる。まず、状態レジスタタイプ
があり、他のモジュールからは「読み込まれるのみ」
で、レジスタを含むモジュールによって「読み込み/書
き込み」されるものがある。次に、構成レジスタの一番
目のタイプ(以降、config1)は、モジュールか
ら外部的に「読み込み/書き込み」され、レジスタを含
むモジュールからは「読み込みのみ」される。これらの
レジスタは一般にアドレス値などの大きなタイプ構成情
報を格納する際に用いられる。構成レジスタの二番目の
タイプ(以降、config2)はすべてのモジュール
から読み込み、書き込みができるが、レジスタを含むモ
ジュールからは読み込みしかできない。このレジスタタ
イプは、レジスタのビットごとのアドレシングが必要な
ときに用いられる。
The registers of each module are classified into several types according to the operation. First, there is a status register type, which is "only read" from other modules
Some are "read / written" by a module including a register. Next, the first type of configuration register (hereinafter config1) is externally "read / write" from the module and "read only" from the module containing the register. These registers are generally used when storing large type configuration information such as address values. The second type of configuration register (hereinafter config2) can be read and written from all modules, but can only be read from modules containing registers. This register type is used when addressing for each bit of the register is required.

【0088】制御タイプのレジスタとしては種々のもの
が存在する。第一のタイプ(以降、control1レ
ジスタ)はすべてのモジュール(レジスタを含むモジュ
ールも含む)によって読み込み/書き込みが可能であ
る。Control1レジスタは、アドレス値などの大
きな制御情報を格納する際に用いられる。同様に、制御
レジスタの第二のタイプ(以降、control2)
は、ビットごとに設定される。
There are various types of control type registers. The first type (hereinafter, control1 register) can be read / written by all modules (including modules including registers). The Control1 register is used when storing large control information such as an address value. Similarly, a second type of control register (hereinafter, control2)
Is set for each bit.

【0089】最後のレジスタタイプ(インタラプトレジ
スタ)は、レジスタを含むモジュールによって1にセッ
トされ、セットされたビットに「1」を外部から書き込
みことによりゼロにリセットすることができるようなビ
ットをレジスタ内に含む。このようなタイプのレジスタ
はそれぞれのモジュールからのインタラプト/エラー信
号に対処するために用いられる。
The last register type (interrupt register) is set to 1 by the module including the register, and a bit in the register which can be reset to zero by externally writing “1” to the set bit is set. Included. This type of register is used to handle interrupt / error signals from each module.

【0090】コプロセッサ224の各モジュールは、命
令を実行中でビジー状態のときには、CBus231上
のc_activeラインをセットする。このため、命
令制御部235は、CBus231上の各モジュールか
らのc_activeラインの「OR」をとり、命令が
終了した時点を把握することができる。ローカルメモリ
制御モジュール236と周辺インタフェース制御モジュ
ール237とは、オーバラップ命令を実行することがで
き、オーバラップ命令を実行する際に起動するc_ba
ckgroundラインを備える。オーバラップ命令
は、ローカルメモリインタフェースと周辺インタフェー
スとの間でデータを転送する「ローカルDMA」命令で
ある。
Each module of the coprocessor 224 sets the c_active line on the CBus 231 when the module is busy executing an instruction. For this reason, the instruction control unit 235 can take the “OR” of the c_active line from each module on the CBus 231 and know the time when the instruction is completed. The local memory control module 236 and the peripheral interface control module 237 can execute an overlap instruction, and c_ba is activated when the overlap instruction is executed.
CKround line is provided. The overlap command is a “local DMA” command that transfers data between the local memory interface and the peripheral interface.

【0091】オーバラップローカルDMA命令の実行サ
イクルは、他の命令の実行サイクルとは異なる。オーバ
ラップ命令が実行に移されるにあたっては、命令制御部
235が既にオーバラップ命令が実行されているかどう
かを調べる。オーバラップ命令が既に存在すれば、ある
いはオーバラップ命令が不稼動モードになっていれば、
命令制御部235は命令が終了するのを待ってから、当
該命令の実行に移る。オーバラップ命令が存在せず、か
つ稼動モードになっていれば、命令制御部235はすぐ
にオーバラップ命令を復号し、周辺インタフェース制御
部237やローカルメモリ制御部236を構成し命令を
実行する。レジスタを構成し終えたら、従来の意味で命
令が終了するのを待たずに命令制御部235はレジスタ
(終了レジスタ、状態レジスタ、命令ポインタ等)を更
新する。この時点で、終了シーケンス番号はインタラプ
トシーケンス番号と同一であれば、「オーバラップ命令
終了」インタラプト信号を出力するのではなく単に当該
信号を用意する。「オーバラップ命令終了」インタラプ
ト信号は、オーバラップ命令が完全に終了した時点で出
力される。
The execution cycle of the overlap local DMA instruction is different from the execution cycles of other instructions. Before the execution of the overlap instruction, the instruction control unit 235 checks whether the overlap instruction has already been executed. If an overlap instruction already exists, or if the overlap instruction is in inactive mode,
The instruction control unit 235 waits for the end of the instruction, and then shifts to execution of the instruction. If there is no overlap instruction and the operation mode is set, the instruction control unit 235 immediately decodes the overlap instruction, configures the peripheral interface control unit 237 and the local memory control unit 236, and executes the instruction. After configuring the registers, the instruction control unit 235 updates the registers (end registers, status registers, instruction pointers, etc.) without waiting for the instruction to end in the conventional sense. At this time, if the end sequence number is the same as the interrupt sequence number, the signal is simply prepared instead of outputting the “end of overlap instruction” interrupt signal. The "overlap instruction end" interrupt signal is output when the overlap instruction is completely completed.

【0092】命令が復号されると、命令制御部は現在の
命令を実行しつつ、次の命令をプレフェッチする。ほと
んどの命令では、命令のフェッチ、復号よりも命令の実
行に要する時間の方がかなり長い。命令制御部235
は、以下の条件が揃った時点で命令をプレフェッチす
る。 1.現在実行中の命令がインタラプトや休止中でない 2.現在実行中の命令がジャンプ命令でない 3.次の命令ストリームがプリフェッチ可能である 4.他にペンディングしている命令が存在する 命令制御部235がプレフェッチ可能と判断すると、次
の命令に要求を出し、プレフェッチバッファに配置し、
バッファを有効にする。ここまで処理を進めると、命令
制御部235は現在実行中の命令が終了するまでは何も
することがなく、当該命令の終了をCBus231上の
c_activeとc_backgroundラインを
調べることのみを行う。 3.8 命令制御部のレジスタの更新 命令が終了すると、命令制御部235は新しい状態を反
映させるためにレジスタの更新を行う。この処理は外部
からのアクセスとの同期の問題を避けるために高速に行
わなければならない。この高速更新処理は以下の手順で
行われる。 1.適切なレジスタアクセスセマフォアの入手。セマフ
ォアが命令制御部235の外部のエージェントによって
占有されている場合には、セマフォアが解放されるまで
命令実行サイクルが待機し、解放されてから処理に移
る。 2.適切なレジスタの更新。命令が適切なジャンプ命令
でない場合には、命令ポインタ(ic_ipaとic_
ipb)を命令のサイズ分増加させる。ジャンプ命令の
ときは、ジャンプ先の値が命令ポインタにロードされ
る。従って、シーケンス番号が稼動モードであれば終了
レジスタ(ic_fnaとic_fnb)は増加するこ
とになる。
When an instruction is decoded, the instruction control unit prefetches the next instruction while executing the current instruction. For most instructions, the time it takes to execute the instruction is significantly longer than the time it takes to fetch and decode the instruction. Command control unit 235
Prefetches instructions when the following conditions are met: 1. 1. The currently executing instruction is not interrupted or paused. 2. The currently executing instruction is not a jump instruction. 3. The next instruction stream can be prefetched. If there is another pending instruction, the instruction control unit 235 determines that prefetching is possible, issues a request for the next instruction, and places it in the prefetch buffer.
Enable the buffer. When the processing is performed so far, the instruction control unit 235 does nothing until the currently executed instruction ends, and only checks the c_active and c_background lines on the CBus 231 for the end of the instruction. 3.8 Updating Register of Instruction Control Unit When the instruction ends, the instruction control unit 235 updates the register to reflect a new state. This process must be performed at high speed to avoid synchronization problems with external access. This high-speed update process is performed in the following procedure. 1. Obtain the appropriate register access semaphore. If the semaphore is occupied by an agent outside the instruction control unit 235, the instruction execution cycle waits until the semaphore is released, and the processing proceeds after the semaphore is released. 2. Update appropriate registers. If the instruction is not a proper jump instruction, the instruction pointers (ic_ipa and ic_ipa)
ipb) is increased by the size of the instruction. In the case of a jump instruction, the value of the jump destination is loaded into the instruction pointer. Therefore, if the sequence number is the operation mode, the end registers (ic_fna and ic_fnb) increase.

【0093】状態レジスタ(ic_stat)も新しい
状態を反映させるように適切に更新される。必要であれ
ば、休止ビットを設定することもある。インタラプトが
生じ、インタラプトに対する休止が稼動状態になった
り、エラーが生じた場合には、命令制御部235は休止
する。休止は、状態レジスタ中の命令ストリーム休止ビ
ット(a_pauseとb_pause)をセットする
ことによって起動される。命令実行を再開する際には、
これらのビットを0にリセットしなければならない。 3.1クロックサイクル時間、CBus231上にc_
end信号を送出し、コプロセッサ224中の他のモジ
ュールに命令が終了した旨を伝える。 4.必要であればインタラプトを送出する。インタラプ
トの送出は、以下の状況のときに送出される。 a.「シーケンス番号終了」インタラプトが生じたと
き。すなわち、終了レジスタ(ic_fnaとic_f
nb)シーケンス番号がインタラプトシーケンス番号と
一致したとき。このとき、インタラプトが準備され、シ
ーケンス番号が稼動モードになり、インタラプトが生じ
る。あるいは、 b.終了した命令が終了時点でインタラプトするように
符号化されている場合。この場合にはインタラプト機構
が起動される。 3.9 レジスタアクセスセマフォアのセマンティック
ス レジスタアクセスセマフォアは、複数の命令制御レジス
タに高速アクセスを提供する機構である。高速アクセス
を必要とするレジスタとして、以下のものが挙げられ
る。 1.命令ポインタレジスタ(ic_ipaとic_ip
b) 2.ToDoレジスタ(ic_tdaとic_tdb) 3.終了レジスタ(ic_fnaとic_fnb) 4.インタラプトレジスタ(ic_intaとic_i
ntb) 5.構成レジスタ中の休止ビット(ic_cfg) 外部エージェントはすべてのレジスタをいつでも安全に
読むことができる。また、外部エージェントはすべての
レジスタにいつでも書き込むことができるが、命令制御
部235がこれらのレジスタ中の値を更新してしまわな
いように、外部エージェントはまずレジスタアクセスセ
マフォアを入手しなければならない。命令制御部は、レ
ジスタアクセスセマフォアが外部で宣言されている間は
上述のレジスタ中の値を更新することはできない。ま
た、命令制御部235は、高速を維持するために1クロ
ックサイクルの間に上述のすべてのレジスタを更新す
る。
The status register (ic_stat) is also appropriately updated to reflect the new status. If necessary, a pause bit may be set. When an interrupt occurs and the pause for the interrupt is activated or an error occurs, the instruction control unit 235 pauses. Pause is activated by setting the instruction stream pause bits (a_pause and b_pause) in the status register. When resuming instruction execution,
These bits must be reset to zero. 3.1 clock cycle time, c_ on CBus 231
An end signal is sent to notify the other modules in the coprocessor 224 that the instruction has been completed. 4. Send an interrupt if necessary. An interrupt is sent in the following situations. a. When the "sequence number end" interrupt occurs. That is, the end registers (ic_fna and ic_f
nb) When the sequence number matches the interrupt sequence number. At this time, an interrupt is prepared, the sequence number is set to the operation mode, and an interrupt occurs. Or b. When the completed instruction is coded to interrupt at the end. In this case, the interrupt mechanism is activated. 3.9 Semantics of Register Access Semaphore The register access semaphore is a mechanism that provides high-speed access to a plurality of instruction control registers. The registers that require high-speed access include the following. 1. Instruction pointer registers (ic_ipa and ic_ip
b) 2. 2. ToDo registers (ic_tda and ic_tdb) 3. End registers (ic_fna and ic_fnb) Interrupt registers (ic_inta and ic_i
ntb) 5. Pause bit in configuration register (ic_cfg) The external agent can safely read all registers at any time. Also, the external agent can write to all registers at any time, but the external agent must first obtain a register access semaphore so that the instruction controller 235 does not update the values in these registers. . The instruction control unit cannot update the value in the above-mentioned register while the register access semaphore is declared externally. Further, the instruction control unit 235 updates all the registers during one clock cycle in order to maintain high speed.

【0094】前述のように、シーケンス機構が稼動モー
ドであれば、各命令には32ビットの「シーケンス番
号」が付与されている。命令シーケンス番号は順々に増
加していき、0xFFFFFFFFから0x00000
000にラッピングされる。外部からの書き込みがイン
タラプトレジスタ(ic_intaとic_intb)
になされると、命令制御部235はすぐに以下の比較と
更新を行う。 1.インタラプトシーケンス番号(インタラプトレジス
タ中の値)が同一ストリームの終了シーケンス番号(終
了レジスタ中の値)よりも「大きければ」(モジュロ演
算)、命令制御部は状態レジスタ中の「シーケンス番号
終了」準備ビット(ic_stat中のa_prime
dとb_primedビット)をセットすることで「シ
ーケンス番号終了」インタラプト機構を準備する。 2.インタラプトシーケンス番号が終了シーケンス番号
よりも「小さく」、当該ストリームにおいてオーバラッ
プ命令が実行中であり、インタラプトシーケンス番号が
最後のオーバラップ命令シーケンス番号(ic_loa
あるいはic_lobレジスタ中の値)と同一であれ
ば、命令制御部はic_statレジスタ中のa_ol
_primedあるいはb_ol_primedビット
をセットすることで「オーバラップ命令シーケンス番号
終了」インタラプト機構を準備する。 3.インタラプトシーケンス番号が終了シーケンス番号
よりも「小さく」、当該ストリームにおいてオーバラッ
プ命令が実行中であり、インタラプトシーケンス番号が
最後のオーバラップ命令シーケンス番号と同一でなけれ
ば、インタラプトシーケンス番号は終了命令を示すこと
になり、インタラプト機構は準備されない。 4.インタラプトシーケンス番号が終了シーケンス番号
よりも「小さく」、当該ストリームにおいてオーバラッ
プ命令が実行中でなければ、インタラプトシーケンス番
号は終了命令を示すことになり、インタラプト機構は準
備されない。
As described above, when the sequence mechanism is in the operation mode, a 32-bit "sequence number" is assigned to each instruction. The instruction sequence number increases sequentially, from 0xFFFFFFFF to 0x00000.
Wrapped to 000. Write from outside is interrupt register (ic_inta and ic_intb)
, The instruction control unit 235 immediately performs the following comparison and update. 1. If the interrupt sequence number (the value in the interrupt register) is larger than the end sequence number (the value in the end register) of the same stream (modulo operation), the instruction control unit sets the "sequence number end" preparation bit in the status register. (A_prime in ic_stat
By setting the d and b_primed bits), a "sequence number end" interrupt mechanism is prepared. 2. The interrupt sequence number is “smaller” than the end sequence number, an overlap instruction is being executed in the stream, and the interrupt sequence number is the last overlap instruction sequence number (ic_loa).
Or the value in the ic_lob register), the instruction control unit a
Set the _primed or b_ol_primed bit to set up the “End Overlap Instruction Sequence Number” interrupt mechanism. 3. If the interrupt sequence number is "smaller" than the end sequence number, an overlap instruction is being executed in the stream, and the interrupt sequence number is not the same as the last overlap instruction sequence number, the interrupt sequence number indicates the end instruction. That is, no interrupt mechanism is prepared. 4. If the interrupt sequence number is "smaller" than the end sequence number and no overlap instruction is being executed in the stream, the interrupt sequence number will indicate the end instruction, and no interrupt mechanism is prepared.

【0095】外部のエージェントは、状態レジスタ中の
インタラプト準備ビット(a_primed,a_ol
_primed,b_primed,b_ol_pri
medビット)をセットすることができ、インタラプト
機構を独立に起動、解除することができる。 3.10 命令制御部 図13は、命令制御部235をより詳細に示した図であ
る。命令制御部235は、命令実行サイクルを処理しコ
プロセッサ224の全体の実行制御を管理する実行制御
部305を含む。実行制御部305は、命令制御部23
5の全体の実行制御を管理し、命令シーケンスを決定
し、命令のフェッチやプレフェッチを行い、命令の復号
や命令制御レジスタの更新を行う。命令制御部は更に命
令復号器306を備える。命令復号器306は、プレフ
ェッチバッファ307から命令を受信し、前述の通り復
号する。命令復号器306は、他のコプロセッサモジュ
ール中のレジスタを構成して命令を実行する処理も行
う。プレフェッチバッファ制御部307は、プレフェッ
チバッファ制御部中のプレフェッチバッファからの読み
込みや書き込みを管理するとともに、命令復号器306
と入力インタフェーススイッチ252(図2)との間の
インタフェースをも管理する。また、プレフェッチバッ
ファ制御部307は二つの命令ポインタレジスタ(ic
_ipaとic_ipb)の更新をも管理する。命令制
御部235、種々のモジュール239(図2)、外部イ
ンタフェース制御部238(図2)からのCBus23
1(図2)へのアクセスは、三つのモジュールのアクセ
ス要求間での調停を行う「CBus」調停部308にお
いて行われる。要求はCBus231によって種々のモ
ジュールのレジスタ部に転送される。
The external agent sends an interrupt preparation bit (a_primed, a_ol) in the status register.
_Primed, b_primed, b_ol_pri
(med bit) can be set, and the interrupt mechanism can be independently activated and released. 3.10 Command Control Unit FIG. 13 is a diagram showing the command control unit 235 in more detail. The instruction control unit 235 includes an execution control unit 305 that processes an instruction execution cycle and manages overall execution control of the coprocessor 224. The execution control unit 305 includes the instruction control unit 23
5 to manage the overall execution control, determine an instruction sequence, fetch and prefetch instructions, decode instructions, and update the instruction control register. The instruction control unit further includes an instruction decoder 306. The instruction decoder 306 receives the instruction from the prefetch buffer 307 and decodes the instruction as described above. The instruction decoder 306 also performs a process of configuring a register in another coprocessor module to execute an instruction. The prefetch buffer control unit 307 manages reading and writing from the prefetch buffer in the prefetch buffer control unit, and controls the instruction decoder 306.
And the input interface switch 252 (FIG. 2). The prefetch buffer control unit 307 has two instruction pointer registers (ic
_Ipa and ic_ipb) are also managed. CBus 23 from the instruction control unit 235, various modules 239 (FIG. 2), and the external interface control unit 238 (FIG. 2).
1 (FIG. 2) is performed by a “CBus” arbitration unit 308 that arbitrates between access requests of three modules. The request is transferred by the CBus 231 to the registers of various modules.

【0096】図14は、図13の実行制御部305をよ
り詳細に示した図である。前述の通り、実行制御部は図
9の命令実行サイクル275の処理を管理し、特に以下
の処理を行う。 1.次の命令をどの命令ストリームから取り出すかを決
定し、 2.当該命令のフェッチを開始し、 3.プレフェッチバッファに格納されている命令の復号
を命令復号器に指示し、 4.次の命令のプレフェッチを決定して開始し、 5.命令の終了を決定し、 6.命令が終了したらレジスタを更新する。
FIG. 14 is a diagram showing the execution control unit 305 of FIG. 13 in more detail. As described above, the execution control unit manages the processing of the instruction execution cycle 275 of FIG. 9, and particularly performs the following processing. 1. 1. Determine from which instruction stream to fetch the next instruction; 2. Start fetching the instruction; 3. Instruct the instruction decoder to decode the instruction stored in the prefetch buffer; 4. Determine and start prefetching the next instruction; 5. determine the end of the instruction; When the instruction is completed, update the register.

【0097】実行制御部は、全体の命令実行サイクルを
管理する大きなコア状態器310(以下、中枢部と呼
ぶ)を備える。図15は、上述の命令実行サイクルを管
理する中枢部310状態遷移図を示した図である。図1
4において、実行制御部は命令プレフェッチ論理部31
1を備える。この部位は、実行すべき命令が存在するか
どうか、どの命令ストリームに命令が属するか、の決定
処理を行う。図15の遷移図において開始312ならび
にプレフェッチ313状態は、この情報を用いて命令を
入手する。図14のレジスタ管理部317は、双方の命
令ストリームのレジスタアクセスセマフォアをモニタ
し、各モジュール中の必要なすべてのレジスタを更新す
る処理を行う。また、終了レジスタ(ic_fnaとi
c_fnb)とインタラプトレジスタ(ic_inta
とic_intb)とを比較し、「シーケンス番号終
了」インタラプトを行うべきかどうかを決定する処理
も、レジスタ管理部317が行う。更に、レジスタ管理
部317はインタラプト準備処理も行う。オーバラップ
命令部318は、ic_statレジスタ中の適切な状
態ビットの管理を通して、オーバラップ命令の終了処理
の管理を行う。実行制御部は、更に中枢部310と図1
3の命令復号器306との間のインタフェースを行う復
号インタフェース部319を備える。
The execution control unit has a large core state machine 310 (hereinafter referred to as a central unit) that manages the entire instruction execution cycle. FIG. 15 is a diagram showing a state transition diagram of the central unit 310 for managing the above-mentioned instruction execution cycle. FIG.
In 4, the execution control unit includes the instruction prefetch logic unit 31.
1 is provided. This section performs processing for determining whether an instruction to be executed exists and to which instruction stream the instruction belongs. In the transition diagram of FIG. 15, the start 312 and prefetch 313 states use this information to obtain an instruction. The register management unit 317 of FIG. 14 monitors the register access semaphores of both instruction streams and performs a process of updating all necessary registers in each module. Also, the end registers (ic_fna and i
c_fnb) and an interrupt register (ic_inta)
And ic_intb), and the register management unit 317 also performs a process of determining whether or not to execute a “sequence number end” interrupt. Further, the register management unit 317 also performs an interrupt preparation process. The overlap instruction unit 318 manages the end processing of the overlap instruction through management of appropriate status bits in the ic_stat register. The execution control unit further includes the central unit 310 and FIG.
And a decoding interface unit 319 for interfacing with the third instruction decoder 306.

【0098】図16は、命令復号部306をより詳細に
示した図である。命令復号器はコプロセッサを構成して
プレフェッチバッファ内の命令を実行する処理を行う。
命令復号器306は、多くの小さな状態マシンの組み合
わせである大きな状態マシンから構成される命令復号シ
ーケンサ321を備える。命令シーケンサ321は,各
モジュール中のレジスタをセットするCBusディスパ
ッチャ312と通信する。また、命令復号シーケンサ3
21は、命令の有効性や命令のオーバラップ状況などの
関連情報を実行制御部に伝える。ここで、命令の有効性
チェックは命令オプコードが予約されているオプコード
であるかどうかをチェックするものである。
FIG. 16 is a diagram showing the instruction decoding unit 306 in more detail. The instruction decoder performs a process of configuring a coprocessor to execute an instruction in the prefetch buffer.
The instruction decoder 306 comprises an instruction decoding sequencer 321 consisting of a large state machine, which is a combination of many small state machines. The instruction sequencer 321 communicates with a CBus dispatcher 312 that sets registers in each module. Instruction decoding sequencer 3
21 informs the execution control unit of relevant information such as the validity of the instruction and the overlap state of the instruction. Here, the instruction validity check checks whether the instruction opcode is a reserved opcode.

【0099】図17は、図16の命令ディスパッチャシ
ーケンサ321をより詳細に示した図である。命令ディ
スパッチャシーケンサ321は、全体のシーケンス制御
状態マシン324と連続したモジュール毎構成シーケン
サ状態マシン(例えば325や326)を備える。モジ
ュール毎構成シーケンサ状態マシンは構成すべき各モジ
ュールに与えられる。全体として状態マシンはモジュー
ルのコプロセッサマイクロプログラミングを定義する。
状態マシン(例えば325)は、CBusディスパッチ
ャに全体のCBusを利用して種々のレジスタをセット
するように指示し、処理のための種々モジュールを構成
する。特定のレジスタに書き込みをするためには、命令
の実行が開始されなければならない。一般に命令の実行
にはシーケンサ321が処理のためにコプロセッサのレ
ジスタを構成する以上の時間が必要である。付録Aにお
いて、コプロセッサの命令シーケンサによって実行され
るマイクロプログラミング処理と命令シーケンサ321
によってセットアップされた形式を示す。
FIG. 17 is a diagram showing the instruction dispatcher sequencer 321 of FIG. 16 in more detail. The instruction dispatcher sequencer 321 comprises an overall sequence control state machine 324 and a contiguous per-module sequencer state machine (eg, 325 or 326). A per-module configuration sequencer state machine is provided for each module to be configured. The state machine as a whole defines the coprocessor microprogramming of the module.
The state machine (eg, 325) instructs the CBus dispatcher to use the entire CBus to set various registers, and configures various modules for processing. To write to a particular register, execution of the instruction must begin. Generally, the execution of an instruction requires more time than the sequencer 321 configures the coprocessor register for processing. In Appendix A, the microprogramming process performed by the instruction sequencer of the coprocessor and the instruction sequencer 321 are described.
Indicates the format set up by.

【0100】実際には、命令復号シーケンサ321は命
令ごとにコプロセッサ中のすべてのモジュールを構成す
るわけではない。以下の表では、命令クラスに対するモ
ジュール構成順序を、ピクセルオーガナイザ246(P
O)、データキャッシュ制御部240(DCC)、オペ
ランドオーガナイザB247(OOB)、オペランドオ
ーガナイザC248(OOC)、主データパス242
(MDP)、結果オーガナイザ249(RO)、JPE
Gエンコーダ241(JC)などの構成されるモジュー
ルとともに示している。なお、外部インタフェース制御
部238(EIC),ローカルメモリ制御部236(L
MC),命令制御部235自身(IC)、入力インタフ
ェーススイッチ252(IIS)、雑多モジュール(M
M)などのモジュールは、命令復号処理中には構成され
ることはない。
Actually, the instruction decoding sequencer 321 does not configure all the modules in the coprocessor for each instruction. In the following table, the module configuration order for the instruction class is indicated by the pixel organizer 246 (P
O), data cache control unit 240 (DCC), operand organizer B247 (OOB), operand organizer C248 (OOC), main data path 242
(MDP), Result Organizer 249 (RO), JPE
It is shown together with a module such as a G encoder 241 (JC). The external interface control unit 238 (EIC) and the local memory control unit 236 (L
MC), the instruction control unit 235 itself (IC), the input interface switch 252 (IIS), the miscellaneous module (M
Modules such as M) are not configured during the instruction decoding process.

【0101】モジュール立ち上げ順序Module startup order

【0102】[0102]

【表5】 [Table 5]

【0103】図17において、各モジュール構成シーケ
ンサ(例えば325)は必要なレジスタアクセス処理を
行って特定のモジュールを構成するように管理する。ま
た、全体のシーケンス制御状態マシン324は、前述の
順序でモジュール構成シーケンサの全体の動作を管理す
る。図18は、上の表に従って関連するモジュール構成
シーケンサを起動する全体シーケンス制御を状態遷移図
330で表した図である。各モジュール構成シーケンサ
は、モジュールの実行中に種々のレジスタをセットする
ために、CBusディスパッチャを制御して、レジスタ
内容を変更する処理を行う。
In FIG. 17, each module configuration sequencer (for example, 325) performs necessary register access processing and manages to configure a specific module. The overall sequence control state machine 324 manages the overall operation of the module sequencer in the order described above. FIG. 18 is a state transition diagram 330 illustrating the overall sequence control for activating the related module configuration sequencer according to the above table. Each module configuration sequencer controls the CBus dispatcher and performs a process of changing register contents in order to set various registers during execution of the module.

【0104】図19は、図13のプリフェッチバッファ
制御部307をより詳細に示した図である。プリフェッ
チバッファ制御部は単一のコプロセッサ命令(6×32
ビットワード)を格納するためのプリフェッチバッファ
335を備える。そして、プリフェッチバッファはIB
usシーケンサ336によって制御される一つの書き込
みポートと、命令復号器、実行制御部、命令制御部CB
usインタフェースにデータを送出する一つの読み込み
ポートを備える。IBusシーケンサ336は、プリフ
ェッチバッファ335の入力インタフェーススイッチへ
の接続においてバスプロトコルを監視する。また、命令
をフェッチするためにアドレスを生成するアドレス管理
部337をも備える。アドレス管理部337は、ic_
ipaあるいはic_ipbの一つを選択し入力インタ
フェーススイッチへのバスに接続する機能と、最後の命
令がどのストリームからフェッチされたかに基づいてi
c_ipaあるいはic_ipbの一つを増加させる機
能と、ic_ipaとic_ipbレジスタにジャンプ
先のアドレスを格納する機能とを有する。PBC制御部
339はプレフェッチバッファ制御部307の全体の制
御を行う。 3.11 モジュールローカルレジスタファイルの説明 図13に示したように、命令制御モジュール自身を含む
各モジュールは、図20に示してあるCBusインタフ
ェース制御部303とともに上述したレジスタ304の
内部セットを備え、CBus要求を受け付けるとともに
当該要求に応じて内部レジスタを更新する処理を行う。
モジュールの制御は、CBusインタフェース302を
介してモジュール中のレジスタ304に書き込むことに
よって行われる。CBus調整部308(図13)は、
命令制御部235、外部インタフェース制御部、雑多モ
ジュールのどのモジュールがCBusを制御し、CBu
sのマスターとして動作し、レジスタの書き込み/読み
出しを行うのかを決定する。
FIG. 19 is a diagram showing the prefetch buffer control unit 307 of FIG. 13 in more detail. The prefetch buffer controller controls a single coprocessor instruction (6 × 32
A pre-fetch buffer 335 for storing a bit word). And the prefetch buffer is IB
us sequencer 336, one write port, an instruction decoder, an execution control unit, and an instruction control unit CB.
One read port for sending data to the us interface. The IBus sequencer 336 monitors the bus protocol at the connection of the prefetch buffer 335 to the input interface switch. Further, an address management unit 337 for generating an address for fetching an instruction is provided. The address management unit 337
function of selecting one of ipa or ic_ipb and connecting to the bus to the input interface switch, and i based on which stream the last instruction was fetched from.
It has a function of increasing one of c_ipa or ic_ipb, and a function of storing a jump destination address in the ic_ipa and ic_ipb registers. The PBC control unit 339 controls the entire prefetch buffer control unit 307. 3.11 Description of Module Local Register File As shown in FIG. 13, each module including the instruction control module itself has an internal set of the register 304 described above together with the CBus interface control unit 303 shown in FIG. A request is received and a process of updating an internal register according to the request is performed.
Control of the module is performed by writing to a register 304 in the module via the CBus interface 302. The CBus adjustment unit 308 (FIG. 13)
Which of the instruction control unit 235, the external interface control unit, and the miscellaneous module controls the CBus,
It operates as the master of s, and determines whether to write / read the register.

【0105】図20は、各モジュールにおいて用いられ
るCBusインタフェース303の標準構成を示した図
である。標準CBusインタフェース303はCBus
302からの読み出し要求や書き込み要求を受信すると
ともに、モジュール内の種々のサブモジュールによって
341を介して更新されるレジスタファイル304を備
える。更に、メモリ領域の読み出しを含むサブモジュー
ルのメモリ領域の更新を行う制御ライン344が備わっ
ている。標準CBusインタフェース303はCBus
の目的地として振る舞い、レジスタ304や他のサブモ
ジュールのメモリオブジェクトの読み出し要求や書き込
み要求を受け付ける。
FIG. 20 is a diagram showing a standard configuration of the CBus interface 303 used in each module. The standard CBus interface 303 is CBus
It has a register file 304 that receives read requests and write requests from 302 and is updated via 341 by various sub-modules within the module. In addition, a control line 344 is provided for updating the memory area of the sub-module, including reading the memory area. The standard CBus interface 303 is CBus
And accepts a read request or a write request for the memory object of the register 304 or another submodule.

【0106】「c_reset」信号345は標準CB
usインタフェース103内のすべてのレジスタをデフ
ォルト状態にセットする。しかし、「c_reset」
は自身とCBusマスターとの間の信号のやり取りを制
御する状態マシンはリセットしない。そのため、「c_
reset」がCBus処理中に送出されたとしても、
当該処理は何かしらの形で終了することになる。「c_
int」347、「c_exp」348、「c_er
r」349信号は、以下の式に基づいてモジュールer
r_intとerr_int_enレジスタの内容より
生成される。
The "c_reset" signal 345 is a standard CB
Set all registers in the us interface 103 to the default state. However, "c_reset"
Does not reset the state machine that controls the exchange of signals between itself and the CBus master. Therefore, "c_
reset is sent during CBus processing,
The process will end in some way. "C_
int "347," c_exp "348," c_er "
r "349 signal is calculated using the following equation:
It is generated from the contents of the r_int and err_int_en registers.

【0107】[0107]

【数1】 (Equation 1)

【0108】[0108]

【数2】 (Equation 2)

【0109】[0109]

【数3】 (Equation 3)

【0110】信号「c_sdata_in」と「c_s
valid_in」345は、モジュール列の中での前
のモジュールからのデータ/有効信号であり、信号「c
_sdata_out」と「c_svalid_ou
t」350は、モジュール列の中での次のモジュールへ
のデータ/有効信号である。標準CBusインタフェー
ス303の機能としては以下のものが含まれる。 1.レジスタの読み出し/書き込み管理 2.メモリ領域の読み出し/書き込み管理 3.テストモードの読み出し/書き込み管理 4.サブモジュールの監視/更新管理 3.12 レジスタ読み出し/書き込み管理 標準CBusインタフェース303はCBus上に流れ
るレジスタ読み出し/書き込み要求やビットセット要求
を受け付ける。標準CBusインタフェースが管理する
CBus命令として以下の2種類ある。 1.タイプA タイプAは、他のモジュールが標準CBusインタフェ
ース303内のレジスタに1、2、3、4バイト読み出
し/書き込みする動作をする。書き込み動作では、命令
サイクルの直後のクロックサイクルでデータサイクルが
生じる。なお、レジスタ書き込み/読み出しのタイプフ
ィールドはそれぞれ「1000」と「1001」であ
る。標準CBusインタフェース303は命令を復号し
て、命令がモジュールのアドレスを指しているか、読み
出し/書き込み動作のどちらかであるか、を調べる。読
み出し動作では、標準CBusインタフェース303
は、CBus処理の「reg」フィールドを用いてどの
レジスタ出力に「c_sdata」バス350を接続す
るかを選択する。書き込み動作では、標準CBusイン
タフェース303は「reg」フィールドと「byt
e」フィールドを用いて選択されたレジスタにデータを
書き込む。読み出し動作が終了すると、標準CBusイ
ンタフェースはデータを戻すと同時に「c_svali
d」350を送出する。書き込み動作が終了すると、標
準CBusインタフェース303は「c_svali
d」350を送出して返答する。 2.タイプC タイプCは、1つのレジスタ中のバイトの1つに他のモ
ジュールが1ビットあるいは複数ビット書き込む動作を
する。命令とデータとは1つのワードにまとめられる。
The signals "c_sdata_in" and "c_s
"valid_in" 345 is a data / valid signal from the previous module in the module row, and the signal "c
_Sdata_out ”and“ c_svalid_ou ”
“t” 350 is a data / valid signal to the next module in the module train. The functions of the standard CBus interface 303 include the following. 1. 1. Register read / write management 2. Read / write management of memory area 3. Read / write management in test mode Submodule monitoring / update management 3.12 Register read / write management The standard CBus interface 303 receives register read / write requests and bit set requests flowing on the CBus. The following two types of CBus commands are managed by the standard CBus interface. 1. Type A Type A operates to read / write 1, 2, 3, 4 bytes from / to a register in the standard CBus interface 303 by another module. In a write operation, a data cycle occurs in a clock cycle immediately after an instruction cycle. The type fields for register write / read are “1000” and “1001”, respectively. The standard CBus interface 303 decodes the instruction and checks whether the instruction is pointing to a module address or a read / write operation. In the read operation, the standard CBus interface 303
Selects which register output to connect the "c_sdata" bus 350 to using the "reg" field of the CBus process. For a write operation, the standard CBus interface 303 uses a “reg” field and a “byte”
Write data to the register selected using the "e" field. When the read operation is completed, the standard CBus interface returns the data and simultaneously reads “c_svali”.
d "350 is transmitted. When the write operation is completed, the standard CBus interface 303 displays “c_svali”.
d "350 and respond. 2. Type C Type C is an operation in which another module writes one or more bits to one of the bytes in one register. Instructions and data are combined into one word.

【0111】標準CBusインタフェース303は命令
をチェックして、命令がモジュールのアドレスを指して
いるかを調べる。また、「reg」「byte」「en
able」フィールドを復号して、必要なイネーブル信
号を生成する。また、命令のデータフィールドを取り出
し、取り出したデータをワードの4バイトすべてに転送
する。これにより、必要なビットはすべてのイネーブル
バイト中のイネーブルビットに書き込まれることにな
る。この動作においては返答は必要ない。 3.13 メモリ領域読み出し/書き込み管理 標準CBusインタフェース303はCBus上のメモ
リ読み出し/書き込み要求を受け付ける。メモリ読み出
し/書き込み要求を受け付けると、標準CBusインタ
フェース303は要求がモジュールのアドレスを指して
いるかを調べる。そして、命令のアドレスフィールドを
復号することで、標準CBusインタフェースは適切な
アドレスと、メモリ読み出し/書き込みを行うサブモジ
ュールへのアドレスストローブ信号344とを生成す
る。書き込み動作では、標準CBusインタフェース
は、命令からのバイトイネーブル信号をサブモジュール
に転送する。
The standard CBus interface 303 checks the instruction to see if it points to a module address. "Reg", "byte", "en"
Decode the "able" field to generate the required enable signal. It also fetches the data field of the instruction and transfers the fetched data to all four bytes of the word. As a result, the necessary bits are written to the enable bits in all the enable bytes. No response is required in this operation. 3.13 Memory Area Read / Write Management The standard CBus interface 303 receives a memory read / write request on the CBus. Upon accepting a memory read / write request, the standard CBus interface 303 checks whether the request points to a module address. Then, by decoding the address field of the instruction, the standard CBus interface generates an appropriate address and an address strobe signal 344 to the sub-module that performs the memory read / write. For a write operation, the standard CBus interface transfers the byte enable signal from the instruction to the sub-module.

【0112】標準CBusインタフェース303の動作
は、CBus302上のCBus命令のタイプフィール
ドを復号し、次のサイクルにおいてデータがレジスタフ
ァイル304に取り込まれるか、あるいは他のサブモジ
ュール344に転送されるようにするために、レジスタ
ファイル304と出力セレクタ353に適切なイネーブ
ル信号を生成するような読み出し/書き込み制御部35
2によって制御される。CBus命令がレジスタ読み出
し動作であれば、読み出し/書き込み制御部352は出
力セレクタ353をイネーブルにし、「c_sdata
バス」345への正しいレジスタ出力を選択する。命令
がレジスタ書き込み動作であれば、読み出し/書き込み
制御部352はレジスタファイル304をイネーブルに
し、次にサイクルでデータを選択する。もしその命令が
メモリエリアのリード/ライトであれば、読み出し/書
き込み制御部352は適切な信号344を生成し、モジ
ュールが管理するメモリ領域を制御する。レジスタファ
イル304は、レジスタ選択復号部355、出力セレク
タ353、インタラプト356、エラー357、例外3
58生成部、アンマスクエラー生成部359、あるモジ
ュールのレジスタを構成するレジスタ部360の4つの
部位から構成される。レジスタ選択復号部355は、読
み出し/書き込み制御部352からの信号「ref_e
n」(レジスタファイルイネーブル)「write」
「reg」を復号し、あるレジスタをイネーブルにする
ためのレジスタイネーブル信号を生成する。出力セレク
タ353は、読み出し/書き込み制御部352からの信
号「reg」出力に応じて、レジスタ読み出し処理のた
めに正しいレジスタデータを選択しc_sdate_o
utラインに出力する。
The operation of the standard CBus interface 303 decodes the type field of the CBus instruction on the CBus 302 so that in the next cycle the data is taken into the register file 304 or transferred to another sub-module 344. For this purpose, the read / write control unit 35 generates an appropriate enable signal to the register file 304 and the output selector 353.
2 is controlled. If the CBus instruction is a register read operation, the read / write control unit 352 enables the output selector 353 and “c_sdata
Select the correct register output to "bus" 345. If the instruction is a register write operation, read / write controller 352 enables register file 304 and then selects data in a cycle. If the instruction is a read / write of a memory area, the read / write control unit 352 generates an appropriate signal 344 to control the memory area managed by the module. The register file 304 includes a register selection decoding unit 355, an output selector 353, an interrupt 356, an error 357, and an exception 3.
58, an unmask error generator 359, and a register 360 that constitutes a register of a certain module. The register selection decoding unit 355 outputs the signal “ref_e” from the read / write control unit 352.
n "(register file enable)" write "
Decode "reg" and generate a register enable signal to enable a certain register. The output selector 353 selects correct register data for register read processing according to the signal “reg” output from the read / write control unit 352, and selects c_sdate_o.
Output to ut line.

【0113】例外生成部356〜359は入力中にエラ
ーが検出されたら出力エラー信号(例えば、347〜3
49、362)を生成する。各出力エラーを計算する手
法は前述の通りである。レジスタ部360は、表5にお
いてレジスタセットの構成を説明したときに論じたよう
に、要求に応じて種々のタイプになり得る。 3.14 CBus構成 前述の通り、CBus(制御バス)は、各モジュールの
標準CBusインタフェース中のレジスタをセットする
ための情報を転送することによって、全体的に各モジュ
ールを制御する。標準CBusインタフェースの記述か
ら明らかなように、CBusは以下の二つの目的を有す
る。 1.各モジュールを駆動する制御バス 2.RAM,FIFO,各モジュール中の状態情報のた
めのアクセスバス CBusは命令−アドレス−データプロトコルを用い
て、モジュール中の構成レジスタをセットすることによ
り、モジュールを制御する。一般に、レジスタは各命令
ごとにセットされるが、修正はどの時点でも行うことが
できる。CBusは状態情報や他の情報を集め、データ
を要求することにより種々のモジュールからRAMやF
IFOデータにアクセスする。
When an error is detected during the input, the exception generators 356 to 359 output an output error signal (for example, 347 to 347).
49, 362). The method of calculating each output error is as described above. The register section 360 can be of various types as required, as discussed when describing the configuration of the register set in Table 5. 3.14 CBus Configuration As described above, the CBus (control bus) controls each module as a whole by transferring information for setting a register in the standard CBus interface of each module. As is apparent from the description of the standard CBus interface, CBus has the following two purposes. 1. 1. Control bus for driving each module RAM, FIFO, access bus for status information in each module The CBus controls the modules by setting configuration registers in the modules using an instruction-address-data protocol. Generally, registers are set for each instruction, but modifications can be made at any time. The CBus collects status and other information and requests data from various modules to RAM or F
Access IFO data.

【0114】CBusは以下の3つのどちらかにより処
理ごとに駆動される。 1.命令実行時の命令制御部235(図2) 2.ターゲット(スレーブ)モードバス動作実行時の外
部インタフェース制御部238(図2) 3.外部CBusインタフェースが構成された際には外
部デバイス いずれの場合でも、駆動モジュールはCBusの発モジ
ュールとなり、他のすべてのモジュールが可能な着モジ
ュールとなる。バスの調整処理は命令制御部が行う。
The CBus is driven for each process by one of the following three methods. 1. 1. Instruction control unit 235 (FIG. 2) during instruction execution 2. External interface control unit 238 (FIG. 2) when executing target (slave) mode bus operation When the external CBus interface is configured, in any case of the external device, the drive module becomes a CBus source module and all other modules become possible destination modules. The bus control process is performed by the instruction control unit.

【0115】以下の表は、好適な実施例において用いる
のに適しているCBus信号の一つの定義を示したもの
である。 CBus信号定義
The following table shows one definition of a CBus signal that is suitable for use in the preferred embodiment. CBus signal definition

【0116】[0116]

【表6】 [Table 6]

【0117】CBusのc_iad信号はアドレスデー
タを含み、二つの異なるサイクルにおいて制御部によっ
て駆動される。 1.c_iad上でCBus命令やアドレスが駆動され
る命令サイクル(c_valid高) 2.c_iad(書き込み動作)やc_sdata(読
み出し動作)上でデータが駆動されるデータサイクル
(c_valid低) 書き込み動作の場合は、命令に関するデータは命令サイ
クルの直後にc_iadバス上に置かれる。読み出し動
作の場合は、データサイクルが終了するまで読み出し動
作のターゲットモジュールがc_sdata信号を駆動
する。
The cBus c_iad signal contains address data and is driven by the controller in two different cycles. 1. 1. Instruction cycle in which a CBus instruction or address is driven on c_iad (c_valid high) Data cycle (c_valid low) in which data is driven on c_iad (write operation) or c_sdata (read operation) In the case of a write operation, data relating to an instruction is placed on the c_iad bus immediately after the instruction cycle. In the case of a read operation, the target module of the read operation drives the c_sdata signal until the data cycle ends.

【0118】図21において、バスは32ビットの命令
−アドレス−データフィールドを含む。このフィールド
は以下の3つのタイプ(370〜372)がある。 1.タイプA動作(370)は、コプロセッサ中のレジ
スタや各モジュールのデータ領域の読み出し/書き込み
を行うために用いられる。これらの動作は、ターゲット
モードPCIサイクルを実行している外部インタフェー
ス制御部238、命令のためにコプロセッサを構成して
いる命令制御部231、外部CBusインタフェースに
よって生成される。
In FIG. 21, the bus includes a 32-bit instruction-address-data field. This field has the following three types (370 to 372). 1. The type A operation (370) is used to read / write a register in the coprocessor and a data area of each module. These operations are generated by the external interface control unit 238 executing the target mode PCI cycle, the instruction control unit 231 configuring the coprocessor for instructions, and the external CBus interface.

【0119】これらの動作では、命令サイクルの直後の
クロックサイクルがデータサイクルとなる。 2.タイプB動作(371)は診断モードで用いられ、
ローカルメモリにアクセスしたり、一般インタフェース
上のサイクルを生成する。これらの動作は、ターゲット
モードPCIサイクルを実行している外部インタフェー
ス制御部や外部CBusインタフェースによって生成さ
れる。データサイクルは命令サイクルの後のどの時点で
も良く、データサイクルはc_svalid信号を用い
て着モジュールから返答される。 3.タイプC動作(372)はモジュールのレジスタ中
の各ビットをセットするために用いられる。これらの動
作は、命令のためにコプロセッサを構成している命令制
御部231や外部CBusインタフェースによって生成
される。タイプC動作ではデータサイクルはなく、デー
タは命令サイクル中に含まれる。
In these operations, the clock cycle immediately after the instruction cycle is the data cycle. 2. Type B operation (371) is used in diagnostic mode,
Access local memory or generate cycles on general interface. These operations are generated by an external interface control unit or an external CBus interface executing a target mode PCI cycle. The data cycle can be at any time after the instruction cycle, and the data cycle is returned from the destination module using the c_svalid signal. 3. Type C operation (372) is used to set each bit in the module's register. These operations are generated by the instruction control unit 231 and an external CBus interface that constitute a coprocessor for instructions. There is no data cycle in Type C operation, and data is included in the instruction cycle.

【0120】各命令のタイプフィールドは、以下の表に
従って関連するCBus処理を符号化したものである。 CBus処理タイプ
The type field of each instruction encodes the associated CBus operation according to the following table. CBus processing type

【0121】[0121]

【表7】 [Table 7]

【0122】バイトフィールドは、レジスタ中のビット
をセットするために用いられる。モジュールフィールド
はCBus上の命令のアドレス先モジュールを指定する
フィールドである。レジスタフィールドはモジュール中
のどのレジスタを更新するかを指定するフィールドであ
る。アドレスフィールドは、動作を行うメモリ部位を指
定するフィールドである、RAM,FIFOなどのアド
レスを指定するものである。イネーブルフィールドは、
ビット設定命令が用いられたときに選択されたバイト中
の選択されたビットをイネーブルにするフィールドであ
る。データフィールドは、更新されるべきバイトに書き
込まれるビットデータを含む。
The byte field is used to set a bit in a register. The module field is a field for designating the address destination module of the instruction on the CBus. The register field is a field for specifying which register in the module is to be updated. The address field specifies an address of a RAM, a FIFO, or the like, which is a field for specifying a memory portion where an operation is performed. The enable field is
A field that enables selected bits in a selected byte when a set bit instruction is used. The data field contains the bit data written to the byte to be updated.

【0123】前述の通り、CBusは各モジュールごと
に、モジュールが命令実行中のときに送出されるc_a
ctiveラインを含む。命令制御部はこの信号に基づ
いて命令の終了時を知ることができる。また、CBus
は各モジュールごとにバックグラウンドモード時に動作
するc_backgroundラインを、リセット、エ
ラー検出、インタラプトを行うためのリセット、エラ
ー、インタラプトラインとともに含む。 3.15 コプロセッサデータタイプとデータ操作 図2において、コプロセッサ部224の動作、特にJP
EG符号化器241や主データパスのコプロセッサ中の
主な計算処理動作を簡潔にするため、コプロセッサは外
部フォーマットと内部フォーマットとを差別化するデー
タモデルを用いる。外部データフォーマットは、ローカ
ルメモリインタフェースやPCIバスなどのコプロセッ
サの外部インタフェースに現われるデータフォーマット
である。逆に、内部データフォーマットは、コプロセッ
サ224の主機能モジュール間で現われるフォーマット
である。図22は、種々の入力/出力フォーマットを模
式的に示した図である。入力外部フォーマット381
は、ピクセルオーガナイザ246、オペランドオーガナ
イザB247,オペランドオーガナイザC248への入
力フォーマットである。これらのオーガナイザは、入力
外部フォーマットを、JPEG符号化器241や主デー
タパス部242へ入力される入力内部フォーマット38
2に再フォーマットする。また、これら2つの機能部は
出力データを出力内部フォーマットで出力し、結果オー
ガナイザ249が出力内部フォーマットを所望出力フォ
ーマット304に変換する。
As described above, the CBus is transmitted for each module when the module is executing an instruction.
active line. The command control unit can know the end time of the command based on this signal. Also, CBus
Includes a c_background line that operates in the background mode for each module, along with reset, error, and interrupt lines for performing reset, error detection, and interrupt. 3.15 Coprocessor Data Type and Data Manipulation In FIG. 2, the operation of the coprocessor unit 224, particularly JP
To simplify the main computational operations in the EG encoder 241 and the main datapath coprocessor, the coprocessor uses a data model that differentiates between the external and internal formats. The external data format is a data format that appears on an external interface of the coprocessor such as a local memory interface or a PCI bus. Conversely, the internal data format is the format that appears between the main function modules of coprocessor 224. FIG. 22 is a diagram schematically showing various input / output formats. Input external format 381
Is an input format to the pixel organizer 246, the operand organizer B247, and the operand organizer C248. These organizers convert the input external format into the input internal format 38 input to the JPEG encoder 241 and the main data path unit 242.
Reformat to 2. In addition, these two functional units output the output data in an output internal format, and the result organizer 249 converts the output internal format into a desired output format 304.

【0124】実施例では、外部データフォーマットは3
つのタイプに分けられる。第一のタイプは、データごと
に4つまでのチャネルを有し、各チャネルが1、2、
4、8、あるいは16ビットサンプルから成り立ってい
るような連続ストリームから成るデータの「パックスト
リーム」である。パックストリームは、ピクセル、ピク
セルに変換されるデータ、まとめられたビットなどを表
現する際に用いられる。また、コプロセッサはリトルエ
ンディアンバイトアドレッシングとバイト中ではビッグ
エンディアンビットアドレッシングを用いる。図23は
パックストリームフォーマットの第一の例を示してい
る。ここでは、各オブジェクト387は、各チャネルご
とに2ビットのチャネル0、チャネル1、チャネル2の
三つのチャネルから構成される。このフォーマットのデ
ータ配置が388である。図24の次の例390では、
各データオブジェクトが32ビットワードを有し、チャ
ネルごとに8ビット有する4チャネルオブジェクト39
5が示されている。図25の第三の例395では、ビッ
トアドレス397から始まるチャネルごとに8ビットを
有するチャネルオブジェクト396が示されている。も
ちろん、アプリケーションに応じて、データチャネルの
実際の幅や数は変化する。
In the embodiment, the external data format is 3
Divided into two types. The first type has up to four channels per data, where each channel is 1,2,
A "packed stream" of data consisting of a continuous stream, such as consisting of 4, 8, or 16 bit samples. The pack stream is used to represent a pixel, data to be converted into a pixel, a group of bits, and the like. The coprocessor also uses little endian byte addressing and big endian bit addressing in bytes. FIG. 23 shows a first example of the pack stream format. Here, each object 387 includes three channels of channel 0, channel 1, and channel 2 of 2 bits for each channel. The data arrangement of this format is 388. In the next example 390 of FIG.
4-channel object 39 with each data object having 32 bit words and 8 bits per channel
5 is shown. In the third example 395 of FIG. 25, a channel object 396 having 8 bits for each channel starting from the bit address 397 is shown. Of course, depending on the application, the actual width and number of data channels will vary.

【0125】外部データフォーマットの第二のタイプは
「アンパックバイトストリーム」であり、各ワード中の
1バイトのみが有効であるような32ビットワードのシ
ーケンスである。このフォーマットの例が図26の39
9として示されており、各ワード中の単一バイト400
のみが用いられる。さらなる外部データフォーマットは
「他」フォーマットとして分類されるオブジェクトで表
現される。一般に、これらのデータオブジェクトは色空
間変換表、ハフマン符号化表などの大きな表型のデータ
である。
The second type of external data format is an "unpacked byte stream", a sequence of 32-bit words in which only one byte of each word is valid. An example of this format is 39 in FIG.
9, a single byte 400 in each word
Only used. Additional external data formats are represented by objects that are classified as "other" formats. Generally, these data objects are large tabular data such as a color space conversion table and a Huffman coding table.

【0126】コプロセッサは4つの内部データタイプを
用いる。第一のタイプは「パックバイト」フォーマット
であり、最後の32ビットワードを除いて4アクティブ
バイトの32ビットワードから成るフォーマットであ
る。図27に、ワードが4バイトであるパックバイトフ
ォーマットの例402を示す。図28に示す次のデータ
タイプは「ピクセル」フォーマットであり、4アクティ
ブバイトチャネルの32ビットワード403から成るフ
ォーマットである。このピクセルフォーマットは4つの
チャネルデータとして解釈される。
The coprocessor uses four internal data types. The first type is a "packed byte" format, which is a format consisting of four active byte 32-bit words except for the last 32-bit word. FIG. 27 shows an example 402 of a packed byte format in which a word is 4 bytes. The next data type shown in FIG. 28 is the "pixel" format, which is a format consisting of 32-bit words 403 in a 4 active byte channel. This pixel format is interpreted as four channel data.

【0127】図29に示す次の内部データタイプは「ア
ンパックバイト」フォーマットであり、各ワードは一つ
のアクティブバイトチャネル405と三つの非アクティ
ブバイトチャネルから成るフォーマットである。この
際、アクティブバイトチャネルは最小バイトを占める。
他の内部データオブジェクトは「他」データフォーマッ
トとして区分される。外部フォーマットの入力データは
適切な内部フォーマットに変換される。図30は、種々
のオーガナイザによって実行される外部フォーマット4
10から入力フォーマット411への変換形態を示して
いる。図31は、結果オーガナイザ249によって実行
される内部フォーマット412から外部フォーマット4
13への変換形態を示している。
The next internal data type shown in FIG. 29 is in "unpacked byte" format, where each word is in a format consisting of one active byte channel 405 and three inactive byte channels. At this time, the active byte channel occupies the minimum byte.
Other internal data objects are classified as "other" data formats. External format input data is converted to the appropriate internal format. FIG. 30 shows an external format 4 executed by various organizers.
10 shows a form of conversion from 10 to an input format 411. FIG. 31 shows an internal format 412 to an external format 4 executed by the result organizer 249.
13 is shown.

【0128】以下、変換を実行する処理をより詳細に説
明する。まず入力データ外部フォーマットから内部フォ
ーマットへの変換であるが、図32は変換処理において
種々のオーガナイザによって用いられる手法を示してい
る。はじめは外部他フォーマット416であるが、これ
は種々のオーガナイザを経ずに単に通過する。次に、外
部アンパックバイトフォーマット417は、アンパック
正規化418を行って内部アンパックバイトと呼ばれる
フォーマット419を生成する。アンパック正規化41
8処理は、外部アンパックバイトストリームから非アク
ティブ3バイトを取り除く処理を行う。図33はアンパ
ック正規化処理を示したものであるが、4バイトチャネ
ルを有する入力のうち1つのバイトチャネルのみが出力
フォーマット419において有効な結果となっており、
単なるバイトを出力している様子を示している。
Hereinafter, the processing for executing the conversion will be described in more detail. First, the conversion of the input data from the external format to the internal format is shown in FIG. 32. FIG. 32 shows a method used by various organizers in the conversion process. Initially, the external other format 416, which simply passes without going through various organizers. Next, the external unpacked byte format 417 performs unpack normalization 418 to generate a format 419 called an internal unpacked byte. Unpack Normalization 41
The process 8 removes three inactive bytes from the external unpacked byte stream. FIG. 33 shows the unpack normalization process, but only one byte channel among the inputs having a 4-byte channel has a valid result in the output format 419,
This shows a state where a simple byte is output.

【0129】図32において、パック正規化421処理
は、外部パックストリーム422中の要素オブジェクト
をバイトストリーム423に変換する処理を行う。チャ
ネルの各要素のサイズがバイト以下であれば、サンプル
は8ビット値に補間される。例えば、4ビット単位をバ
イト単位に変換する場合には、4ビット値0xNはバイ
ト値0xNNに変換される。1バイト以上のオブジェク
トの場合には切り捨てが行われる。ストリーム422で
サポートされる入力オブジェクトサイズは、1、2、
4、8、16ビットサイズである。なお、これらは、本
発明が適用されるシステム中のデータオブジェクトやワ
ードの全幅に依存する。
In FIG. 32, a pack normalization 421 process is a process of converting an element object in the external pack stream 422 into a byte stream 423. If the size of each element of the channel is less than or equal to bytes, the samples are interpolated to 8-bit values. For example, when converting a 4-bit unit into a byte unit, a 4-bit value 0xN is converted into a byte value 0xNN. If the object is longer than 1 byte, truncation is performed. The input object sizes supported by stream 422 are 1, 2,
4, 8, and 16 bit sizes. Note that these depend on the total width of data objects and words in the system to which the present invention is applied.

【0130】図34は、チャネルごとに(図23のデー
タフォーマット386ごとのように)2ビット有する3
チャネルオブジェクト形式の入力データ422が入力さ
れたときのパック正規化421の様子を示している。出
力データはバイトチャネルフォーマット423になって
いる。この際、必要であれば各チャネルに「補間処理」
が施され、8ビットサンプルが生成される。
FIG. 34 shows three bits having two bits per channel (as per the data format 386 in FIG. 23).
The state of pack normalization 421 when input data 422 in the channel object format is input is shown. The output data is in the byte channel format 423. At this time, if necessary, "interpolation processing"
To generate an 8-bit sample.

【0131】図32において、ピクセルストリームはそ
の後、パック処理425、アンパック処理426、要素
選択処理427のいずれかに送られる。図35はパック
処理425の例を示したもので、単に非アクティブバイ
トチャネルが取り除かれ、ワードごとの4アクティブバ
イトにパックされたバイトストリームが生成される様子
を示している。即ち、単一の有効バイトストリーム43
0がワードごとの4アクティブバイトを有するフォーマ
ット431に圧縮される。アンパック処理426はほぼ
パック処理の反対の処理であり、アンパックバイトがワ
ードの最小バイトとなる。図36は、パックバイトスト
リーム433がアンパックされ結果434が得られる様
子を示している。
In FIG. 32, the pixel stream is then sent to one of a pack process 425, an unpack process 426, and an element selection process 427. FIG. 35 shows an example of the packing process 425, in which the inactive byte channel is simply removed and a byte stream packed into 4 active bytes per word is generated. That is, a single valid byte stream 43
Zeros are compressed into format 431 with four active bytes per word. The unpack operation 426 is almost the opposite operation of the pack operation, and the unpack byte is the minimum byte of the word. FIG. 36 shows how the packed byte stream 433 is unpacked and the result 434 is obtained.

【0132】図37は要素選択427処理を示したもの
であり、Nを単位ごとの入力チャネル数とすると、入力
ストリームからN要素を選択する処理である。アンパッ
ク処理は「プロトタイプピクセル」、例えば437を生
成するときに用いられる。なお、ピクセルチャネルは最
小バイトから埋められる。図38は、形式436の入力
データが要素選択部427によって変換され、プロトタ
イプピクセルフォーマット437が生成される様子を示
している。
FIG. 37 shows the element selection 427 processing, where N is the number of input channels per unit, and is the processing for selecting N elements from the input stream. The unpacking process is used when generating “prototype pixels”, for example, 437. Note that the pixel channel is filled from the minimum byte. FIG. 38 shows how the input data of the format 436 is converted by the element selection unit 427 and the prototype pixel format 437 is generated.

【0133】要素選択が行われると、要素入替処理44
0(図32)が行われる。図38は要素入替処理の様子
を示したもので、内部データレジスタ441に格納され
た一定値で選択要素を入れ替え、例のように出力要素2
42を生成する様子を示している。図32において、処
理段425、526、440の出力はレーンスワップ処
理444に送られる。図39に示されているように、レ
ーンスワップ処理はあるレーンを他のレーンにバイトご
とに多重化する処理であり、あるレーンを他のレーンに
複製する処理をも含む。図38の例では、チャネル3と
チャネル1とを入れ替え、チャネル3をチャネル2とチ
ャネル1に複製する様子が示されている。
When an element is selected, an element replacement process 44 is performed.
0 (FIG. 32). FIG. 38 shows a state of the element replacement processing. The selection elements are replaced with a fixed value stored in the internal data register 441, and the output element 2 is output as shown in the example.
42 is generated. In FIG. 32, the outputs of processing stages 425, 526, 440 are sent to lane swap processing 444. As shown in FIG. 39, the lane swap process is a process of multiplexing a certain lane with another lane on a byte basis, and also includes a process of duplicating a certain lane with another lane. In the example of FIG. 38, a state is shown in which channel 3 and channel 1 are exchanged, and channel 3 is copied to channel 2 and channel 1.

【0134】図32において、レーンスワップ処理44
4が終わると、データストリームが再読み出しされて複
製処理446に移る前に、マルチユースト値RAM25
0に格納されることもある。複製処理446は単にデー
タオブジェクトを複製する処理である。図40は、複製
処理446をピクセルデータに適用した様子であり、複
製ファクターは1である。
In FIG. 32, lane swap processing 44
4 is completed, the data stream is reread and before the copy process 446 is performed, the multicast value RAM 25 is read.
It may be stored in 0. The copy process 446 is a process of simply copying a data object. FIG. 40 shows a state where the duplication process 446 is applied to the pixel data, and the duplication factor is one.

【0135】図41は、複製処理をパックバイトデータ
に適用した様子である。図42は、出力内部フォーマッ
ト383から出力外部フォーマット384にデータを変
換する結果オーガナイザ249の処理を示したものであ
る。この処理では、図32に示した変換処理と同様の処
理424、425、426、440を含むが、処理45
0では更に要素非選択451、非正規化452、バイト
アドレシング453、書き込みマスキング454の処理
を含んでいる。図43に示した要素非選択処理451
は、図37の要素選択処理の逆処理であり、不必要なデ
ータが削除される。例えば、図43では、入力中の3つ
の有効チャネルのみが取り出され、データ項目456に
パックされる。
FIG. 41 shows a state where the duplication processing is applied to pack byte data. FIG. 42 shows the processing of the result organizer 249 for converting data from the output internal format 383 to the output external format 384. This processing includes the same processing 424, 425, 426, and 440 as the conversion processing shown in FIG.
In the case of 0, processing of element non-selection 451, denormalization 452, byte addressing 453, and write masking 454 is further included. Element non-selection processing 451 shown in FIG.
Is a reverse process of the element selection process of FIG. 37, and unnecessary data is deleted. For example, in FIG. 43, only the three valid channels being input are retrieved and packed into data item 456.

【0136】図44に示した非正規化処理は、図34で
示したパック正規化処理421のほぼ反対の動作をす
る。非正規化処理では、バイト単位で扱われていた各オ
ブジェクトあるいはデータ項目を非バイト値に変換する
処理が行われる。図42のバイトアドレシング処理45
3は、バイトアドレシングに必要なバイトごとの再構成
処理を行う。外部アンパックバイト出力ストリームで
は、ストリームアドレスの最小2ビットがアクティブス
トリームに対応する。バイトアドレシング処理453で
は、外部アンパックバイトが用いられているとき(図4
5)、1つのバイトチャネルから他のチャネルバイトに
出力ストリームが再マップされる。外部パックストリー
ムが用いられているときは(図46)、バイトアドレシ
ングモジュール453は出力ストリームの開始アドレス
を図示のように再マップする。
The denormalization processing shown in FIG. 44 operates almost in the opposite manner to the pack normalization processing 421 shown in FIG. In the denormalization process, a process of converting each object or data item handled in a byte unit into a non-byte value is performed. Byte addressing processing 45 in FIG.
No. 3 performs a reconstruction process for each byte necessary for byte addressing. In an external unpacked byte output stream, at least two bits of the stream address correspond to the active stream. In the byte addressing process 453, when an external unpacked byte is used (FIG. 4)
5) The output stream is remapped from one byte channel to another channel byte. When an external packed stream is used (FIG. 46), the byte addressing module 453 remaps the starting address of the output stream as shown.

【0137】図42の書き込みマスク処理454を図4
7に示す。書き込みされないパックストリームのあるチ
ャネル(例えば460)をマスクする処理である。適用
される入力/出力データタイプ変換は、以下のデータ操
作レジスタの内容に基づいて決められる。 *ピクセルオーガナイザデータ操作レジスタ(po_d
mr) *オペランドオーガナイザBとオペランドオーガナイザ
Cデータ操作レジスタ(oor_dmr,ooc_dm
r) *結果オーガナイザデータ操作レジスタ(ro_dm
r) 命令のための各データ操作レジスタの設定は、以下の2
つの方法によってなされる。 1.命令実行の直前にコプロセッサレジスタに書き込む
標準手法を用いて設定される 2.現在の命令に基づいてコプロセッサ自身で設定され
る 命令復号処理では、コプロセッサはデータの命令ワード
やデータワードの内容を調べ、種々のデータ操作レジス
タをどのように設定するかを決定する処理を他の処理と
ともに行う。なお、命令とオペランドのすべての組み合
わせが有効であるわけではない。いくつかの命令ではオ
ペランドフォーマットを規定しているものもある。不適
切なオペランドを含む命令の場合、「定義されていな
い」結果が生成されることになるが、エラーを生じるこ
となく終了してしまうこともある。対応するデータ記述
子の「S」ビットが0であれば、コプロセッサはデータ
操作レジスタをセットし、現命令を反映させる。
The write mask processing 454 of FIG.
FIG. This is a process of masking a certain channel (eg, 460) of a pack stream that is not written. The input / output data type conversion to be applied is determined based on the contents of the following data operation registers. * Pixel organizer data operation register (po_d
mr) * Operand organizer B and operand organizer C data operation registers (oor_dmr, ooc_dm
r) * Result organizer data operation register (ro_dm
r) The setting of each data operation register for an instruction is as follows.
Done in one of two ways. 1. 1. Set using standard techniques to write to coprocessor registers just before instruction execution In the instruction decoding process, which is set by the coprocessor itself based on the current instruction, the coprocessor examines the contents of the data instruction word and data word and determines how to set various data operation registers. Perform with other processing. Note that not all combinations of instructions and operands are valid. Some instructions specify an operand format. Instructions with incorrect operands will produce an "undefined" result, but may also exit without error. If the "S" bit of the corresponding data descriptor is 0, the coprocessor sets the data manipulation register to reflect the current instruction.

【0138】図48はデータ操作レジスタのフォーマッ
トを示した図である。以下の表は、図48に示されたレ
ジスタ中の種々のビットフォーマットを示している。 データ操作レジスタフォーマット
FIG. 48 shows the format of the data operation register. The following table shows the various bit formats in the registers shown in FIG. Data operation register format

【0139】[0139]

【表8A】 [Table 8A]

【0140】[0140]

【表8B】 [Table 8B]

【0141】各1つの命令において、複数の内部/外部
データタイプが用いられることがある。オペランド、結
果、命令タイプのすべて組み合わせは有効ではあるが、
これらの組み合わせの一部のみが意味のある結果を生成
する。各命令に対して期待されるオペランドと結果デー
タタイプの具体的な組み合わせを表9に示す。表9は、
外部/内部フォーマットにおいて期待されるデータタイ
プをまとめたものである。
A single instruction may use a plurality of internal / external data types. All combinations of operands, results, and instruction types are valid,
Only some of these combinations produce meaningful results. Table 9 shows specific combinations of operands and result data types expected for each instruction. Table 9 shows
It summarizes the expected data types in the external / internal format.

【0142】期待されるデータタイプExpected data type

【0143】[0143]

【表9】 [Table 9]

【0144】なお、表9において用いたシンボルは以下
の通りである。 シンボルの説明
Note that the symbols used in Table 9 are as follows. Explanation of the symbol

【0145】[0145]

【表10】 [Table 10]

【0146】3.16 データ正規化回路 図49は、3つの主機能ブロックを含むコンピュータグ
ラフィックスプロセッサを示している。3つの主機能ブ
ロックは、ピクセルオーガナイザ246とオペランドオ
ーガナイザB、C247、248中のデータ正規化部1
062、主データパス242あるいはJPEG部241
の中央グラフィックスエンジン、命令制御部235中の
プログラミングエージェント1064である。データ正
規化部1062と中央グラフィックスエンジンの動作
は、プログラミングエージェント1064への命令スト
リーム1064によって決定される。各命令ごとに、プ
ログラミングエージェント1064は復号処理を行い、
内部制御信号1067と1068をシステム中の他のブ
ロックに出力する。各入力データワード1069ごと
に、正規化部1062は現命令に基づいてデータのフォ
ーマットを行い、処理結果をさらなる処理が実行される
中央グラフィックスエンジン1063に送出する。
3.16 Data Normalization Circuit FIG. 49 shows a computer graphics processor including three main function blocks. The three main functional blocks are the data normalizer 1 in the pixel organizer 246 and the operand organizers B, C247, 248.
062, main data path 242 or JPEG section 241
And a programming agent 1064 in the instruction control unit 235. The operation of the data normalizer 1062 and the central graphics engine is determined by the instruction stream 1064 to the programming agent 1064. For each instruction, the programming agent 1064 performs a decryption process,
Outputs internal control signals 1067 and 1068 to other blocks in the system. For each input data word 1069, normalizer 1062 formats the data based on the current instruction and sends the processing result to central graphics engine 1063 where further processing is performed.

【0147】データ正規化部は、簡潔にはピクセルオー
ガナイザとオペランドオーガナイザB,Cを意味する。
これらのオーガナイザはデータ正規化回路を含み、入力
データを適切に正規化した後、JPEG符号化あるいは
主データパス中で中央グラフィックスエンジンに結果を
送出する。中央グラフィックスエンジン1063は、3
2ビットピクセルである標準フォーマットのデータに対
して動作する。従って、正規化部は入力データを32ビ
ットピクセルフォーマットに変換する処理を行う。正規
化部への入力データワード1069も32ビット幅を有
するが、パック要素あるいはアンパックバイトのいずれ
かのフォーマットであってもよい。パック要素入力スト
リームは、データオブジェクトが1,2,4,8,16
バイト幅であるようなデータワード中での連続するオブ
ジェクトから成る。一方、アンパックバイト入力ストリ
ームは、8ビットのバイトのみが有効であるような32
ビットのワードから成る。更に、正規化部で生成される
ピクセルデータ11は、チャネルが8ビット幅で定義さ
れるような1,2,3,4個の有効チャネルから成る。
The data normalizing unit simply means a pixel organizer and operand organizers B and C.
These organizers include a data normalization circuit which, after appropriately normalizing the input data, sends the result to the central graphics engine in a JPEG encoded or main data path. The central graphics engine 1063 has 3
Operates on standard format data that is a 2-bit pixel. Therefore, the normalizing unit performs a process of converting the input data into a 32-bit pixel format. The input data word 1069 to the normalizer also has a 32-bit width, but may be in either packed element or unpacked byte format. The packed element input stream has data objects of 1, 2, 4, 8, 16
Consists of contiguous objects in a data word that is byte wide. An unpacked byte input stream, on the other hand, has 32 bits, where only 8-bit bytes are valid.
Consists of a word of bits. Further, the pixel data 11 generated by the normalization unit includes 1, 2, 3, and 4 effective channels whose channels are defined by an 8-bit width.

【0148】図50は、データ正規化部1062の具体
的なハードウェア構成を示した図である。データ正規化
部1062は、FIFOバッファ(FIFO)107
3、32ビット入力レジスタ(REG1)、32ビット
出力レジスタ(REG2)、正規化マルチプレクサ10
75,制御部1076から成る。入力データワード10
69はFIFO1073に格納された後、(REG1)
1074にすべての入力ビットが所望出力フォーマット
に変換されるまでラッチされる。正規化マルチプレクサ
1075は、(REG1)1074中の値と(FIF
O)1073の現出力とからのビットを選択すること
で、REG2にラッチされるピクセルを生成するような
32組み合わせスイッチを備える。即ち、正規化マルチ
プレクサ1075はx[63..32]とx[31..
0]とで示される2つの32ビット入力ワード107
7、1078を入力とする。
FIG. 50 is a diagram showing a specific hardware configuration of the data normalization unit 1062. The data normalization unit 1062 includes a FIFO buffer (FIFO) 107
3, 32-bit input register (REG1), 32-bit output register (REG2), normalizing multiplexer 10
75, and a control unit 1076. Input data word 10
69 is stored in the FIFO 1073, and then (REG1)
At 1074, all input bits are latched until converted to the desired output format. The normalization multiplexer 1075 calculates the value in (REG1) 1074 and (FIF
O) There is a 32 combination switch that selects a bit from the current output of 1073 to generate a pixel that is latched into REG2. That is, the normalization multiplexer 1075 outputs x [63. . 32] and x [31. .
0] and two 32-bit input words 107
7, 1078 are input.

【0149】このような手法を用いることで、特に命令
処理においてFIFOが少なくとも2つの有効データワ
ードを有する場合に、装置の全体スループットを向上さ
せることができる。これは、データワードをメモリから
フェッチする手法によるものである。所望データワード
あるいはオブジェクトがFIFOバッファ中の隣接する
入力データワードに拡散あるいは「ラップ」されている
ことがあるが、入力レジスタ1074を用いることで、
FIFOバッファ中の隣接データワードからの要素を用
いて完全な入力データを再構成することができ、主デー
タ操作処理段に先立って必要となるさらなる記憶装置や
ビットストリップ処理を省くことができる。類似のタイ
プの複数データワードが正規化部に入力されるような場
合には、このような構成が大きな利点となる。
By using such a technique, the overall throughput of the device can be improved, especially when the FIFO has at least two valid data words in the instruction processing. This is due to the technique of fetching data words from memory. Although the desired data word or object may be spread or "wrapped" in adjacent input data words in the FIFO buffer, using the input register 1074,
The complete input data can be reconstructed using elements from adjacent data words in the FIFO buffer, eliminating the need for additional storage and bit strip processing required prior to the main data manipulation processing stage. Such a configuration is a great advantage when multiple data words of a similar type are input to the normalization unit.

【0150】制御部は、REG1 1074やREG2
1076を更新するイネーブル信号REG1_EN1
080やREG2_EN[3..0]1081を生成す
るとともに、FIFO 1073や正規化マルチプレク
サ1075を制御する信号をも生成する。図49のプロ
グラミングエージェント1064はデータ正規化部10
62に対して次のような構成信号を送出する。FIFO
_WR4信号、正規化ファクターn[2..0]、ビッ
トオフセットb[2..0]、チャネルカウントc
[1..0]、外部フォーマット(E)といった信号で
ある。入力データは,有効データが存在するクロックサ
イクルごとにFIFO_WR信号1085を送出するこ
とにより、FIFO1073に書き込まれる。領域が得
られないときには、FIFOはfifo_full状態
フラグ1086を送出する。32ビット入力データが与
えられると、外部フォーマット信号を用いて、入力がパ
ックストリームフォーマット(E=1)であるかアンパ
ックバイト(E=0)であるかが調べられる。E=1の
場合には、正規化ファクターはパックストリームの各要
素サイズとなる。即ち、n=0は1ビット幅の要素、n
=1は2ビット幅要素、n=2は4ビット幅要素、n=
3は8ビット幅要素、n>3は16ビット幅要素を示
す。また、チャネルカウントは、所望有効バイト数でピ
クセルを生成するためにクロックサイクルごとにフォー
マットする連続した入力オブジェクトの最大数である。
具体的には、c=1は最小バイトのみが有効であるピク
セル、c=2は最小2バイトが有効であるピクセル、c
=3は最小3バイトが有効であるピクセル、c=0はす
べての4バイトが有効であるピクセルである。
The control unit controls REG1 1074 and REG2
Enable signal REG1_EN1 for updating 1076
080 or REG2_EN [3. . 0] 1081 and a signal for controlling the FIFO 1073 and the normalizing multiplexer 1075. The programming agent 1064 in FIG.
The following configuration signal is sent to the control unit 62. FIFO
_WR4 signal, normalization factor n [2. . 0], bit offset b [2. . 0], channel count c
[1. . 0], an external format (E). The input data is written to the FIFO 1073 by sending out the FIFO_WR signal 1085 every clock cycle in which valid data exists. When no area is available, the FIFO sends out a fifo_full status flag 1086. Given 32 bit input data, it is checked using an external format signal whether the input is in packed stream format (E = 1) or unpacked byte (E = 0). When E = 1, the normalization factor is the size of each element of the pack stream. That is, n = 0 is a 1-bit element, n
= 1 is a 2-bit width element, n = 2 is a 4-bit width element, n =
3 indicates an 8-bit width element, and n> 3 indicates a 16-bit width element. Also, the channel count is the maximum number of consecutive input objects that will be formatted every clock cycle to produce a pixel with the desired number of significant bytes.
Specifically, c = 1 is a pixel for which only the minimum byte is valid, c = 2 is a pixel for which at least 2 bytes are valid, c
= 3 is a pixel for which at least 3 bytes are valid, and c = 0 is a pixel for which all 4 bytes are valid.

【0151】パックストリームが8ビット幅以下の要素
から成る場合には、ビットオフセットがREG1に格納
されている値であるx[31..0]中のデータ処理開
始位置を決定する。ビットオフセットがはじめの入力バ
イトの最大ビットからの偏移である場合には、出力デー
タバイトy[7..0]の生成方法は以下の式で与えら
れる。 n=0の場合、 y[i]=x[7−b] 0≦i≦7のとき n=1の場合、 y[i]=x[7−b] i=1,3,5,7のと
き y[i]=x[6−b] i=0,2,4,6のと
き n=2の場合、 y[3]=x[7−b] y[2]=x[6−b] y[1]=x[5−b] y[0]=x[4−b] y[7]=y[3] y[6]=y[2] y[5]=y[1] y[4]=y[0] n=3の場合、 y[i]=x[i] 0≦i≦7のとき n>3の場合、 y[7...0]=x[15...8] 出力データバイトy[15..8],y[23..1
6],y[31..24]を生成する式も同様である。
If the pack stream is composed of elements having a width of 8 bits or less, the bit offset is x [31. . 0] is determined. If the bit offset is a deviation from the largest bit of the first input byte, the output data byte y [7. . 0] is given by the following equation. When n = 0, y [i] = x [7-b] When 0 ≦ i ≦ 7 When n = 1, y [i] = x [7-b] i = 1, 3, 5, 7 When y [i] = x [6-b] When i = 0,2,4,6 When n = 2, y [3] = x [7-b] y [2] = x [6- b] y [1] = x [5-b] y [0] = x [4-b] y [7] = y [3] y [6] = y [2] y [5] = y [1 Y [4] = y [0] When n = 3, y [i] = x [i] When 0 ≦ i ≦ 7 When n> 3, y [7. . . 0] = x [15. . . 8] Output data byte y [15. . 8], y [23. . 1
6], y [31. . 24] is the same.

【0152】なお、以上の手法は、入力ストリームの要
素を入力し、必要な回数の複製処理を行い標準幅の出力
オブジェクトを生成することで、いかなる長さの出力ア
レイをも生成することができるように拡張できる。ま
た、入力要素の処理順は、リトルエンディアンでもビッ
グエンディアンでも良い。なお、上述の例では、常に処
理が入力バイトの最大ビットから始まるため、ビッグエ
ンディアン要素順を用いている。リトルエンディアン順
を用いる場合には、ビットオフセットを入力バイトの最
小ビットに対する値として再定義する必要がある。ま
た、入力要素幅が標準出力幅以上のときには、出力要素
は入力要素を切り捨てる、一般には適当な数の最小ビッ
トを削除することによって生成される。上式では、16
ビットデータオブジェクトの最大バイトを選択すること
により、16ビット入力要素を切り捨てて8ビット幅標
準出力を生成している。
In the above method, an output array of any length can be generated by inputting elements of an input stream and performing a necessary number of duplication processes to generate an output object having a standard width. Can be extended as follows. The processing order of the input elements may be little endian or big endian. In the above example, since the processing always starts from the maximum bit of the input byte, the big endian element order is used. If little endian order is used, the bit offset must be redefined as the value for the least significant bit of the input byte. Also, if the input element width is greater than or equal to the standard output width, the output element is generated by truncating the input element, typically removing an appropriate number of the least significant bits. In the above formula, 16
By selecting the largest byte of the bit data object, the 16-bit input element is truncated to produce an 8-bit wide standard output.

【0153】図50の制御部はn[2..0]とc
[1..0]の復号を行い、これらとb[2..0]と
を用いて正規化マルチプレクサのための選択信号やRE
G1やREG2のためのイネーブル信号を生成する。ま
た、FIFOは命令中において空になることもあるた
め、制御部はREG1中に入力データを選択する現在の
ビット位置in_bit[4..0]と、出力データの
書き込みを始める現在のバイト位置out_byte
[4..0]を記憶するカウンタを備える。制御部は、
処理が終了した時点で、in_bit[4..0]の値
とREG1の最終オブジェクトの位置とを比較すること
で入力ワードを検出し、FIFOが空でない1クロック
サイクルにおいてFIFO_RD信号を送出することで
FIFO読み出し動作を開始する。信号fifo_em
pty,fifo_fullはFIFO状態フラグであ
り、FIFOが有効なデータを有していないときにfi
fo_empty=1、FIFOがフルのときにfif
o_full=1となる。FIFO_RDが送出された
クロックサイクルにおいて、REG1_ENの送出さ
れ、新しいデータがREG1に取り込まれる。REG2
のイネーブル信号は、それぞれが出力レジスタの各バイ
トに対応ごとに4つある。制御部は、復号されたc
[1..0]、REG1内の処理待機中の有効要素数、
REG2において未使用チャネル数の3つの値中での最
小値をとることで、REG2_EN[3..0]を計算
する。E=0の場合には、REG1中には一つの有効要
素しか存在しない。REG2を占めるチャネル数が復号
されたc[3..0]と等しい場合に、完全な出力ワー
ドが得られる。
The control unit shown in FIG. . 0] and c
[1. . 0], and these and b [2. . 0] and the selection signal for the normalization multiplexer or RE
Generate enable signals for G1 and REG2. In addition, since the FIFO may be empty during the instruction, the control unit determines the current bit position in_bit [4. . 0] and the current byte position out_byte at which to start writing output data
[4. . 0] is stored. The control unit is
When the processing is completed, in_bit [4. . 0] and the position of the last object of REG1 to detect the input word, and start the FIFO read operation by sending the FIFO_RD signal in one clock cycle when the FIFO is not empty. Signal fifo_em
pty and fifo_full are FIFO status flags, which are used when the FIFO has no valid data.
fo_empty = 1, fif when FIFO is full
o_full = 1. In the clock cycle in which FIFO_RD is transmitted, REG1_EN is transmitted, and new data is taken into REG1. REG2
There are four enable signals corresponding to each byte of the output register. The control unit determines the decrypted c
[1. . 0], the number of active elements in REG1 waiting for processing,
By taking the minimum value among the three values of the number of unused channels in REG2, REG2_EN [3. . 0]. If E = 0, there is only one valid element in REG1. The number of channels occupying REG2 is decoded c [3. . 0], a complete output word is obtained.

【0154】本発明の好適な実施例では、制御部と正規
化マルチプレクサにおいて用いられるオフセットの一部
のみを用いるなど、ビットオフセットパラメータを制限
する機能を付加することにより、図50の装置が占める
回路領域を大幅に低減することができる。このオフセッ
ト制限機能は正規化ファクターに依存するものであり、
以下の式に応じて動作する。
In the preferred embodiment of the present invention, the function occupied by the apparatus of FIG. 50 is added by adding a function of limiting the bit offset parameter, such as using only a part of the offset used in the control unit and the normalizing multiplexer. The area can be significantly reduced. This offset limit function depends on the normalization factor,
It operates according to the following equation.

【0155】 b_trunc[2...0]=0 n≧3の場合 =b[2...0] n=0の場合 =b[2...1] n=1の場合 =b[2]&”00” n=2の場合 (「&」はビットごとの結合処理を示す) このような処理により、図50においてMUX0、MU
X1...MUX31で示されている各正規化マルチプ
レクサのサイズが、制限機能を用いないときの32−1
からビットオフセット制限を行ったときの最大サイズ2
0−1まで低減される。このサイズ縮小により回路速度
の向上も図ることができる。
B_trunc [2. . . 0] = 0 When n ≧ 3 = b [2. . . 0] When n = 0 = b [2. . . 1] In the case of n = 1 = b [2] & “00” In the case of n = 2 (“&” indicates a combining process for each bit) By such a process, MUX0 and MU in FIG.
X1. . . The size of each normalization multiplexer indicated by MUX31 is 32-1 when the limiting function is not used.
Maximum size when bit offset restriction is performed from 2
0-1. This size reduction can also improve the circuit speed.

【0156】以上のように、好適な実施例では、データ
をいくつかの正規化形式に変換する効率的な回路を備え
る。 3.17 アクセラレータカードの画像処理動作 図2と表2において、命令制御部235はコプロセッサ
224において実行される動作に帰着される命令を「実
行する」。実行される命令は、主データパス部242に
おいて有用な機能が実行されるような種々の命令を含
む。これらの有用な命令の1つが合成処理である。
As described above, the preferred embodiment comprises an efficient circuit for converting data into several normalized forms. 3.17 Image Processing Operation of Accelerator Card In FIG. 2 and Table 2, the instruction control unit 235 “executes” an instruction resulting in an operation executed in the coprocessor 224. The executed instructions include various instructions that cause useful functions to be performed in main data path unit 242. One of these useful instructions is the composition process.

【0157】3.17.1 合成 図51は、主データパス部242において実装される合
成モデルを示した図である。合成モデル462は、一般
に3つのデータ入力ソースと出力データ(シンク)46
3を含む。入力ソースの1つは、出力463とメモリ内
での同じ相手先からのピクセルデータ464である。ま
た、色や不透明度などのデータソースとして用いられる
命令オペランド465を含む。ここで、色や不透明度は
フラット、ブレンド、ピクセル、タイルのどれでも良
い。なお、フラットやブレンドに関しては、入力/出力
を介してフェッチするよりも内部で生成した方が高速で
あるため、ブレンド生成部467において生成される。
更に、入力データは、オペランドデータ465を減衰さ
せる減衰データ466をも含む。
3.17.1 Synthesis FIG. 51 is a diagram showing a synthesis model implemented in the main data path unit 242. The composite model 462 generally has three data input sources and output data (sink) 46.
3 inclusive. One input source is output 463 and pixel data 464 from the same destination in memory. It also includes an instruction operand 465 used as a data source such as color and opacity. Here, the color and opacity may be any of flat, blend, pixel, and tile. It should be noted that the flat and the blend are generated by the blend generation unit 467 because the speed of the internal generation is faster than that of the fetch via the input / output.
Further, the input data also includes attenuation data 466 that attenuates the operand data 465.

【0158】前述のように、通常ピクセルデータは各チ
ャネルが1バイト幅である4つのチャネルから成る。こ
こで、最高アドレスの1バイトが不透明チャネルであ
る。なお、合成処理の動作や有用性に関しては、解説論
文「Thomas Porter and Tom D
uff”Compositing Digital I
mages”in Computer Graphic
s,volume 18,number 3,July
1984」などの標準記事を参照されたい。
As mentioned above, pixel data usually consists of four channels, each channel being one byte wide. Here, one byte of the highest address is an opaque channel. The operation and usefulness of the synthesis process are described in the commentary “Thomas Porter and Tom D.
uff "Compositing Digital I
images "in Computer Graphic
s, volume 18, number 3, July
1984 ".

【0159】コプロセッサはプレ乗算データを用いるこ
ともできる。プレ乗算は、各色チャネルと不透明チャネ
ルとを前もって乗算する処理である。そのため、2つの
オプションのプレ乗算部468、469を備え、必要な
ときに、不透明チャネル470、471と色データとを
プレ乗算し、プレ乗算された出力472、473を得る
ことができる。合成部475は、現在の命令データに基
づいて2つの入力を合成する。以下の表11に、合成オ
ペレータを示す。
The coprocessor can also use premultiplied data. Pre-multiplication is the process of multiplying each color channel and the opaque channel in advance. Therefore, two optional pre-multipliers 468, 469 can be provided to pre-multiply the opaque channels 470, 471 and the color data, if necessary, to obtain pre-multiplied outputs 472, 473. The combining unit 475 combines the two inputs based on the current instruction data. Table 11 below shows the composition operators.

【0160】合成動作Synthetic operation

【0161】[0161]

【表11】 [Table 11]

【0162】ここで、(aco,ao)は、色acと不
透明度aoのプレ乗算ピクセルを表す。Rはオフセット
値であり、「wc」は以下で説明するラッピング/クラ
ンピングオペレータである。なお、上表の各オペレータ
の逆動作も合成部475が備えていることに注意された
い。クランプ/ラッピング部476は、制限値0〜25
5内にデータをクランプ、或はラップするための処理部
である。また、必要であれば、データをオプションの
「アンプレ乗算」477処理することもでき、もとのピ
クセル値に戻すこともできる。最後に、出力データ46
3が生成され、メモリに戻される。
Here, (aco, ao) represents a pre-multiplied pixel of the color ac and the opacity ao. R is an offset value, and “wc” is a wrapping / clamping operator described below. It should be noted that the synthesizing unit 475 includes the reverse operation of each operator in the above table. The clamp / lapping unit 476 has a limit value of 0 to 25.
5 is a processing unit for clamping or wrapping data. If desired, the data can also be subjected to optional "ample multiplication" 477 processing to restore the original pixel values. Finally, the output data 46
3 is generated and returned to memory.

【0163】図52は、合成処理を行う際に主データパ
ス部に送られる命令形式を示している。主オプコード中
のXフィールドが1であれば、前記の表に従って加算オ
ペレータが適用される。このフィールドが0であれば、
加算オペレータ以外の他の命令が適用される。Paフィ
ールドは、第一のデータストリーム464(図51)を
プレ乗算するかどうかを示すフィールドである。また、
Pbフィールドは第2のデータストリーム465をプレ
乗算するかどうかを示し、Prフィールドは部位477
を用いて結果を「アンプレ乗算」するかどうかを示す。
Cフィールドは範囲0−255内にラップあるいはクラ
ンプ、オーバフローあるいはアンダーフローするかどう
かを示し、「com−code」フィールドはどのオペ
レータを適用するかを示す。加算オペレータはオフセッ
トレジスタ(mdp_por)を用いることもできる。
このオフセットはラッピング/クランピング処理が行わ
れる前に加算動作の結果から引かれる。加算オペレータ
では、com−codeフィールドはオフセットレジス
タのチャネルごとにイネーブルするかどうかを示すフィ
ールドとなる。
FIG. 52 shows an instruction format sent to the main data path unit when performing the synthesizing process. If the X field in the main opcode is 1, the addition operator is applied according to the above table. If this field is 0,
Other instructions other than the addition operator apply. The Pa field is a field indicating whether to premultiply the first data stream 464 (FIG. 51). Also,
The Pb field indicates whether to pre-multiply the second data stream 465 and the Pr field is the part 477
Is used to indicate whether the result is to be "ample-multiplied."
The C field indicates whether to wrap or clamp, overflow or underflow within the range 0-255, and the "com-code" field indicates which operator to apply. The addition operator can also use the offset register (mdp_por).
This offset is subtracted from the result of the addition operation before the wrapping / clamping process is performed. In the addition operator, the com-code field is a field indicating whether to enable each channel of the offset register.

【0164】先に述べた図10の標準命令ワード符号化
280は、合成オペランドのために変更させられる。出
力データの相手先がもとのソースと同じであるため、オ
ペランドAは常に結果ワードと同一となる。そのため、
オペランドAはオペランドBとともにオペランドBをよ
り長く記述することができる。他の命令と同様に、命令
中のA記述子は入力フォーマットを記述し、R記述子が
出力フォーマットを規定する。
The previously described standard instruction word encoding 280 of FIG. 10 is modified for composite operands. Since the destination of the output data is the same as the original source, operand A is always the same as the result word. for that reason,
Operand A can describe operand B together with operand B longer. As with the other instructions, the A descriptor in the instruction describes the input format, and the R descriptor specifies the output format.

【0165】図53は、ブレンド命令の命令ワードフォ
ーマットを第一例470として示している。ブレンド処
理は、各チャネルごとの開始値471と終了値472と
で規定される。同様に、図54は、タイルアドレス47
6、開始オフセット477、長さ478によって規定さ
れるタイル命令フォーマットを示している。すべてのタ
イルアドレスやサイズはバイトごとに特定される。タイ
ル処理はモジュラー的に行われ、図55は図54のフィ
ールド476〜478を説明する図である。タイルアド
レス476はタイルメモリの開始アドレスを、タイル開
始オフセット477はタイル開始時に用いられる最初の
バイトを、タイル長478はラップする全体のタイル長
を指定する。
FIG. 53 shows the instruction word format of the blend instruction as a first example 470. The blending process is defined by a start value 471 and an end value 472 for each channel. Similarly, FIG.
6, a starting offset 477, and a tile instruction format defined by a length 478. All tile addresses and sizes are specified on a byte-by-byte basis. Tile processing is performed in a modular manner, and FIG. 55 is a view for explaining fields 476 to 478 in FIG. The tile address 476 specifies the start address of the tile memory, the tile start offset 477 specifies the first byte used at the start of the tile, and the tile length 478 specifies the total tile length to be wrapped.

【0166】図51において、色要素や不透明度は減衰
値466によって減衰させられることもある。減衰値は
以下の3つの手法により得られる。 1.命令のオペランドCワード中に減衰ファクタをいれ
ることによって、ソフトウエアがフラット減衰を指定す
ることができる。 2.1がオンで、0がオフであるビットマップ減衰は、
命令のオペランドCワード中でビットマップのアドレス
を特定するソフトウェアを用いて利用できる。 3.バイトマップ減衰を、命令のオペランドCワードの
バイトマップアドレスに設けてもよい。 4.定するソフトウエアを用いて、1のときにオン、2
のときにオフとするビットマップ減衰を行うことができ
る。
In FIG. 51, color elements and opacity may be attenuated by the attenuation value 466. The attenuation value is obtained by the following three methods. 1. By including an attenuation factor in the instruction's operand C word, software can specify flat attenuation. The bitmap attenuation with 2.1 on and 0 off is:
It can be used with software that specifies the address of a bitmap in the operand C word of the instruction. 3. Byte map attenuation may be provided at the byte map address of the operand C word of the instruction. 4. ON when the value is 1, using the software
Bitmap attenuation can be performed, which is turned off when.

【0167】減衰値は符号なしの0〜255の整数であ
るため、プレ乗算された色チャネルは、 Coa=Coa×A/255 を計算することで、減衰ファクターと乗算される。ここ
で、Aは減衰ファクター、Coはプレ乗算された色チャ
ネルである。
Since the attenuation value is an unsigned integer from 0 to 255, the pre-multiplied color channel is multiplied by the attenuation factor by calculating Coa = Coa × A / 255. Where A is the attenuation factor and Co is the pre-multiplied color channel.

【0168】3.17.2 色空間変換命令 図2と表2において、主データパス部242とデータキ
ャッシュ230は、主に色変換の処理を行う。色空間変
換は第一の色空間フォーマット(例えば、RGBカラー
ディスプレイに適したフォーマット)から第二の色空間
フォーマット(例えばCYMあるいはCYMK印刷に適
したフォーマット)への変換処理を行う。色空間変換処
理はすべての色空間をサポートするように設計されてお
り、1次元から多次元までのいかなる機能において用い
ることができる命令制御部235はCBus231を介
して、主データパス部242、データキャッシュ制御部
240、入力インタフェーススイッチ252、ピクセル
オーガナイザ246、MUVバッファ250、オペラン
ドオーガナイザB247、オペランドオーガナイザC2
48、結果オーガナイザ249を構成し、色変換モード
で動作するように制御する。このモードでは、ピクセル
の複数ラインから成る入力画像がピクセルストリームと
して主データパス部242に1ピクセルラインごとに送
出される。主データパス部242(図2)は入力インタ
フェーススイッチ252からピクセルオーガナイザ24
6を介してピクセルストリームを受け取り、1ピクセル
ごとに色空間変換処理を行う。また、インターバル表や
分数表がMUVバッファ250にあらかじめロードさ
れ、色変換表がデータキャッシュ230にロードされ
る。主データパス242はこれらの表にオペランドオー
ガナイザB,Cを介してアクセスし、例えばRGB色空
間からCYMあるいはCYMK色空間にピクセルを変換
し、変換されたピクセルを結果オーガナイザ249に送
る。主データパス部242、データキャッシュ230、
データ制御部240、他の前述のデバイスは、命令制御
部235の制御のもとで、単一出力一般色空間(SOG
CS)変換モードあるいは複数出力一般色空間(MOG
CS)変換モードのどちらかのモードで動作する。デー
タキャッシュ制御部240やデータキャッシュ230の
詳細に関しては、「データキャッシュ制御部とキャッシ
ュ」240、230(図2)の項目を参照されたい。
3.17.2 Color Space Conversion Instruction In FIG. 2 and Table 2, the main data path unit 242 and the data cache 230 mainly perform color conversion processing. The color space conversion performs a conversion process from a first color space format (for example, a format suitable for RGB color display) to a second color space format (for example, a format suitable for CYM or CYMK printing). The color space conversion process is designed to support all color spaces, and the instruction control unit 235 that can be used in any function from one-dimensional to multi-dimensional uses a main bus 242, a data Cache controller 240, input interface switch 252, pixel organizer 246, MUV buffer 250, operand organizer B247, operand organizer C2
48, configure the result organizer 249, and control it to operate in the color conversion mode. In this mode, an input image composed of a plurality of lines of pixels is sent to the main data path unit 242 as a pixel stream for each pixel line. The main data path unit 242 (FIG. 2) switches the input interface switch 252 to the pixel organizer 24.
6 and performs a color space conversion process for each pixel. Further, the interval table and the fraction table are loaded in the MUV buffer 250 in advance, and the color conversion table is loaded in the data cache 230. Main data path 242 accesses these tables via operand organizers B and C, for example, converts pixels from RGB color space to CYM or CYMK color space, and sends the converted pixels to result organizer 249. Main data path unit 242, data cache 230,
The data control unit 240 and the other aforementioned devices are controlled by the command control unit 235 to control a single output general color space (SOG).
CS) conversion mode or multiple output general color space (MOG
CS) operates in one of the conversion modes. For details of the data cache control unit 240 and the data cache 230, refer to the item of “Data cache control unit and cache” 240, 230 (FIG. 2).

【0169】正確な色空間変換処理は複雑な非線形処理
である。例えば、RGBピクセルからCYMK色空間の
単一主色要素(即ちシアン)への色空間変換処理は理論
的には線形であるが、実際には主にピクセルの色要素を
出力する出力デバイスにおいて非線形性が生じてしま
う。RGBピクセルからCYMK色空間の他の主色要素
(黄、マジェンタ、黒)への色空間変換処理においても
同様である。即ち、各色要素において生じてしまう非線
形性を補償するために、非線形色空間変換が一般に用い
られる。このような複雑な色変換処理の非線形性のため
に、複雑な伝達関数が組み込まれたり、ルックアップテ
ーブルが用いられる。例えば24ビットのRGBピクセ
ルの入力色空間が与えられると、これらのピクセルをC
YMK色空間の8ビット主色要素(シアン)にマッピン
グするルックアップテーブルは16メガバイト以上を必
要とする。同様に、24ビットRGBピクセルをCYM
K色空間の4つの8ビット主色要素にマッピングするル
ックアップテーブルは64メガバイト以上となり、膨大
な容量が必要なる。これに対して、主データパス242
(図2)は、データキャッシュ230に格納されたルッ
クアップテーブルを用い、入力色空間中の点に粗い出力
色値を対応させ、出力色値を補間することで中間出力を
得る。 a.単一出力一般色空間(SOGCS)変換モード 単一ならびに複数出力色変換モード(SOGCS)と
(MOGCS)双方とも、RGB色空間は8ビットの
赤、緑、青色要素を有する24ビットピクセルから成
る。RGB色空間の各RGB次元は15の区間に分割さ
れ、それぞれの区間の長さはプリンタのRGBからCY
MK色空間への非線形性の逆関数となるように設定され
る。即ち、伝達関数が強い非線形性を示す場合には区間
の長さを短くし、伝達関数が線形に近い場合には区間の
長さを長くする。このような伝達関数の非線形部位を知
るためには、各出力プリンタの色空間を正確に調べるこ
とが望ましい。しかし、ノウハウやプリンタタイプ(例
えばインクジェット)の測定された特徴に基づいて、伝
達関数を近似あるいはモデル化することも可能である。
入力ピクセルの各色チャネルごとに、色要素値の15の
区間中の位置が決められる。どの区間に入力色要素値が
存在するかを決定するためと、入力色要素値が存在する
区間内の位置を決定するためとの2つのテーブルが主デ
ータパス部242において用いられる。もちろん、異な
る伝達関数を有する出力プリンタに対しては異なるテー
ブルを用いても良い。
An accurate color space conversion process is a complicated nonlinear process. For example, the color space conversion process from RGB pixels to a single primary color component (ie, cyan) in the CYMK color space is linear in theory, but is actually non-linear in an output device that outputs mainly color components of pixels. Nature will arise. The same applies to color space conversion processing from RGB pixels to other main color elements (yellow, magenta, black) in the CYMK color space. That is, nonlinear color space conversion is generally used to compensate for the nonlinearity that occurs in each color element. Due to such complicated nonlinearity of the color conversion processing, a complicated transfer function is incorporated or a look-up table is used. For example, given an input color space of 24-bit RGB pixels, these pixels are
A lookup table that maps to an 8-bit primary color element (cyan) in the YMK color space requires 16 megabytes or more. Similarly, a 24-bit RGB pixel is converted to CYM
The look-up table that maps to the four 8-bit primary color elements of the K color space is 64 megabytes or more, requiring a huge capacity. On the other hand, the main data path 242
(FIG. 2) uses a lookup table stored in the data cache 230 to associate a coarse output color value with a point in the input color space and interpolate the output color value to obtain an intermediate output. a. Single Output General Color Space (SOGCS) Conversion Mode In both single and multiple output color conversion modes (SOGCS) and (MOGCS), the RGB color space consists of 24-bit pixels with 8 bits of red, green, and blue components. Each of the RGB dimensions of the RGB color space is divided into 15 sections, and the length of each section is calculated from the printer's RGB to CY.
It is set to be an inverse function of the nonlinearity to the MK color space. That is, if the transfer function shows strong nonlinearity, the length of the section is shortened, and if the transfer function is nearly linear, the length of the section is lengthened. In order to know such a nonlinear portion of the transfer function, it is desirable to accurately check the color space of each output printer. However, it is also possible to approximate or model the transfer function based on know-how and measured characteristics of the printer type (eg, inkjet).
For each color channel of the input pixel, the position of the color element value in 15 sections is determined. Two tables are used in the main data path unit 242 to determine in which section the input color element value exists and to determine the position in the section where the input color element value exists. Of course, different tables may be used for output printers having different transfer functions.

【0170】前述のようにRGBの各次元は15の区間
に分割される。即ち、RGB色空間は区間で区切られた
3次元ラティス構造となっており、区間の両端の入力ピ
クセルは入力色空間では粗い配置となっている。更に、
区間の両端に対応する出力色空間の出力色値のみがルッ
クアップテーブルに格納されている。従って、入力色ピ
クセルの出力色値は、入力ピクセルが存在する区間の両
端に対応する出力色値を決定し、区間内の位置に基づい
て出力色値を補間することで求められる。この手法によ
り、大容量のメモリを用いなければならない必要性を低
減できる。
As described above, each dimension of RGB is divided into 15 sections. That is, the RGB color space has a three-dimensional lattice structure divided into sections, and input pixels at both ends of the section are coarsely arranged in the input color space. Furthermore,
Only the output color values of the output color space corresponding to both ends of the section are stored in the lookup table. Therefore, the output color value of the input color pixel is determined by determining output color values corresponding to both ends of the section where the input pixel exists, and interpolating the output color value based on the position in the section. This approach can reduce the need to use large memories.

【0171】図56は、入力RGB色ピクセルに対し
て、対応する区間や区間内の位置を決定する例480を
示している。変換処理は、24ビット入力ピクセルの8
ビット入力色チャネルごとに区間テーブル482や区間
内位置テーブル483を用いて実行される。図56にお
いて、8ビット入力色要素481は10進数の4をバイ
ナリー形式で表示したものであるが、この8ビット入力
色要素481が区間テーブルや区間内位置テーブルへの
ルックアップとして用いられる。区間テーブル482
は、入力色要素値481が存在する0から14までの区
間の1つを4ビットで出力する。同様に、区間内テーブ
ル482は、入力色値要素481が存在する区間内での
位置を示す。区間内テーブルは、0から255までの範
囲の8ビット値を格納しており、この値は256の分数
として解釈される。従って、10進数4をバイナリーで
あらわした入力色値要素481の場合には、区間テーブ
ル482をルックアップすることで、出力値0が生成さ
れる。また、入力値4を区間内位置テーブル483でル
ックアップすることにより、分数160/256を表わ
す出力値160が生成される。区間テーブル482と区
間内位置テーブル483からわかるように、区間長は均
一ではない。前述のように、区間長は伝達関数の非線形
性によって決められる。
FIG. 56 shows an example 480 for determining a corresponding section or a position in the section for an input RGB color pixel. The conversion process is performed on 8 bits of a 24-bit input pixel.
This is executed using the section table 482 and the section position table 483 for each bit input color channel. In FIG. 56, an 8-bit input color element 481 displays a decimal number 4 in a binary format, and this 8-bit input color element 481 is used as a lookup in a section table or a section position table. Section table 482
Outputs one of the sections from 0 to 14 in which the input color element value 481 exists in 4 bits. Similarly, the section table 482 indicates the position in the section where the input color value element 481 exists. The intra-section table stores an 8-bit value ranging from 0 to 255, and this value is interpreted as a 256 fraction. Therefore, in the case of the input color value element 481 that represents the decimal number 4 in binary, the output value 0 is generated by looking up the section table 482. Further, by looking up the input value 4 in the section position table 483, an output value 160 representing the fraction 160/256 is generated. As can be seen from the section table 482 and the section position table 483, the section lengths are not uniform. As described above, the section length is determined by the nonlinearity of the transfer function.

【0172】上述の通り、各RGB色要素に対して区間
テーブルと区間内位置テーブルとを用いることで、3つ
の区間出力と3つの区間内位置出力が得られる。各色要
素に対する区間/区間内位置テーブルはMUVバッファ
(図2)にロードされ、必要な時点で主データパス24
2によってアクセスされる。色変換処理におけるMUV
バッファ250の構成を図57に示す。MUVバッファ
250(図57)は、それぞれが各色要素に対応する3
つの領域488、489、490に分けられる。各領域
(例えば488)は、更に4ビットの区間テーブルと8
ビットの区間内位置テーブルとに分けられる。12ビッ
ト出力492は主データパス部242によってMUVバ
ッファ250から各入力色チャネルごとに取り出され
る。10進数4の単一入力色要素の上述例では、12ビ
ット出力は000001010000となる。
As described above, by using the section table and the intra-section position table for each RGB color element, three section outputs and three intra-section position outputs can be obtained. The section / in-section position table for each color element is loaded into the MUV buffer (FIG. 2), and the main data path 24
2 accessed. MUV in color conversion processing
FIG. 57 shows the configuration of the buffer 250. The MUV buffer 250 (FIG. 57) has 3
Area 488, 489, 490. Each area (for example, 488) further includes a 4-bit section table and 8 sections.
It is divided into a bit position table within the section. The 12-bit output 492 is extracted from the MUV buffer 250 by the main data path unit 242 for each input color channel. In the above example of a single input color element of decimal four, the 12-bit output would be 000001010000.

【0173】図58は、補間処理の例を示した図であ
る。補間処理は、1つの3次元空間500(例えばRG
B色空間)から他の色空間(例えばCMYあるいはCM
YK)への補間が主な処理である。ピクセルP0からP
7はRGB入力色空間内で粗く存在しており、出力色空
間において対応する出力色値CV(P0)からCV(P
7)を有する。ピクセルP0からP7の間に位置する入
力ピクセルPiの出力色要素値は、以下のようにして決
定される。まず、入力ピクセルPiを取り囲む区間の両
端P0,P1,...,P7を決定する。次に、区間内
位置要素frac_r,frac_g,frac_bを
決定し、最後に、P0からP7の両端に対応する出力色
値CV(P0)からCV(P7)の間を区間内位置要素
を用いて補間する。
FIG. 58 is a diagram showing an example of the interpolation processing. The interpolation process is performed in one three-dimensional space 500 (for example, RG
B color space) to another color space (for example, CMY or CM
YK) is the main processing. Pixels P0 to P
7 exist roughly in the RGB input color space, and the corresponding output color values CV (P0) to CV (P
7). The output color element value of the input pixel Pi located between the pixels P0 and P7 is determined as follows. First, both ends P0, P1,... Of the section surrounding the input pixel Pi. . . , P7 are determined. Next, the intra-section position elements frac_r, frac_g, and frac_b are determined. Finally, the output color values CV (P0) to CV (P7) corresponding to both ends of P0 to P7 are interpolated using the intra-section position elements. I do.

【0174】補間処理は、まず赤(R)方向の1次元補
間を行い、temp11,temp12,temp1
3,temp14の値を以下の式から求める。 temp11=CV(P0)+frac_r(CV(P1)−CV(P0)) temp12=CV(P2)+frac_r(CV(P3)−CV(P2)) temp13=CV(P4)+frac_r(CV(P5)−CV(P4)) temp14=CV(P6)+frac_r(CV(P7)−CV(P6)) 次に、補間処理は、以下の式を用いてtemp21,t
emp22を求め、緑(G)方向の1次元補間の計算を
する。
In the interpolation processing, first, one-dimensional interpolation in the red (R) direction is performed, and temp11, temp12, temp1
3, The value of temp14 is determined from the following equation. temp11 = CV (P0) + frac_r (CV (P1) -CV (P0)) temp12 = CV (P2) + frac_r (CV (P3) -CV (P2)) temp13 = CV (P4) + frac_r (CV (P5) -CV) (P4)) temp14 = CV (P6) + frac_r (CV (P7) -CV (P6)) Next, the interpolation process is performed by using the following equations as temp21, t
emp22 is obtained, and one-dimensional interpolation in the green (G) direction is calculated.

【0175】 temp21=temp11+frac_g(temp12−temp11) temp22=temp13+frac_g(temp14−temp13) 最後に、以下の式に基づいて最終色出力値を求め、青
(B)方向の最終次元補間を行う。 final=temp21+frag_b(temp22−temp21) 入力と出力との範囲が一致しない場合もしばしば有り得
る。ここで、出力範囲が入力範囲よりも狭いと、両端で
範囲をクランプしなければならないことが多い。即ち、
範囲の端あたりの色を変換した際に望ましくないひずみ
が生じることが多い。図59は、この問題が生じる例を
説明しており、入力範囲値を出力範囲値に1次元マッピ
ングする様子が示されている。ここで、入力値に対する
出力値が点510と511とで定まっているものとす
る。最大の出力値が点512でクランプされるとする
と、点511はこの大きさの出力でなければならない。
従って、510と511の2つの点を補間する場合に
は、線515が補間線となり、入力点516には出力値
517が対応する。しかし、範囲の制約が存在しないと
きに出力値が点518になるような場合には、この手法
が必ずしも最適な色マッピングであるとは限らない。5
10と518との補間線は、入力点516に対して出力
値519を生成する。このような2つの出力値517と
519の差異は、特に範囲の端あたりの色を印刷する場
合などしばしば目につくひずみとなる、この問題を避け
るために、主データパス部は、拡張出力色空間で計算
し、以下の式に用いて適切な範囲にスケールやクランプ
することも可能である。
Temp21 = temp11 + frac_g (temp12−temp11) temp22 = temp13 + frac_g (temp14−temp13) Finally, the final color output value is obtained based on the following equation, and the final dimension interpolation in the blue (B) direction is performed. final = temp21 + flag_b (temp22-temp21) There is often a possibility that the range between the input and the output does not match. Here, if the output range is smaller than the input range, it is often necessary to clamp the range at both ends. That is,
Undesirable distortion often occurs when converting colors near the edges of a range. FIG. 59 illustrates an example in which this problem occurs, and shows how input range values are one-dimensionally mapped to output range values. Here, it is assumed that the output value with respect to the input value is determined by points 510 and 511. Assuming that the maximum output value is clamped at point 512, point 511 must be an output of this magnitude.
Therefore, when two points 510 and 511 are interpolated, the line 515 becomes an interpolation line, and the output value 517 corresponds to the input point 516. However, if the output value is point 518 when there is no range constraint, this technique is not always the optimal color mapping. 5
The interpolation line between 10 and 518 produces an output value 519 for the input point 516. Such a difference between the two output values 517 and 519 often results in noticeable distortion, especially when printing colors near the end of the range. To avoid this problem, the main data path section uses the extended output color It can also be calculated in space and scaled or clamped to an appropriate range using the following formula:

【0176】 図58において、補間処理は、RGBピクセルを単一出
力色要素(例えばシアン)に変換するSOCGS変換モ
ードでも、RGBピクセルをすべての出力色要素に同時
に変換するMOGCSモードのどちらでも実行される。
色変換が画像中の各ピクセルに対して行われる場合に
は、数100万ピクセルがそれぞれ独立に色変換される
ことになる。従って、高速に動作するためには、入力値
周辺の8つの値(P0−P7)を素早く見つけることが
望ましい。
[0176] In FIG. 58, the interpolation processing is executed in either the SOCGS conversion mode for converting RGB pixels to a single output color element (for example, cyan) or the MOGCS mode for simultaneously converting RGB pixels to all output color elements.
When color conversion is performed on each pixel in an image, several million pixels are color-converted independently. Therefore, in order to operate at high speed, it is desirable to quickly find eight values (P0-P7) around the input value.

【0177】図57において説明した通り、主データパ
ス部242は、各色入力チャネルごとに4ビット区間部
位と8ビット区間内位置部位とから成る12ビット出力
を取り出す。主データパス部242は赤、緑、青色チャ
ネルの4ビット区間部位を結合し、図60中の520の
ように単一の12ビットアドレス(IR,IG,IB)
を生成する。図60は、単一12ビットアドレス520
から単一出力色要素563が得られる様子を示したデー
タフロー図である。12ビットアドレス520は、まず
生成部1881(図141)のようなデータキャッシュ
制御部240のアドレス生成部に送られ、メモリバンク
(B0,B1,...,B7)に対する8個の9ビット
ライン/バイトアドレス521を生成する。データキャ
ッシュ(図2)は、8個の独立のメモリバンク522に
分割され、それぞれは8個のライン/バイトアドレスに
よって独立にアドレシングされる。アドレス生成部にお
ける12ビットアドレス520から8ライン/バイトア
ドレスへの変換は、以下の表に従って行われる。
As described with reference to FIG. 57, main data path section 242 extracts a 12-bit output consisting of a 4-bit section and a position in an 8-bit section for each color input channel. The main data path unit 242 connects the 4-bit sections of the red, green, and blue channels, and forms a single 12-bit address (IR, IG, IB) as indicated by 520 in FIG.
Generate FIG. 60 shows a single 12-bit address 520
FIG. 10 is a data flow diagram showing a state in which a single output color element 563 is obtained from. The 12-bit address 520 is first sent to the address generation unit of the data cache control unit 240, such as the generation unit 1881 (FIG. 141), and the eight 9-bit lines for the memory banks (B0, B1,. / Byte address 521 is generated. The data cache (FIG. 2) is divided into eight independent memory banks 522, each independently addressed by eight line / byte addresses. The conversion from the 12-bit address 520 to the 8-line / byte address in the address generation unit is performed according to the following table.

【0178】SOGCSモードにおけるアドレス合成Address synthesis in SOGCS mode

【0179】[0179]

【表12A】 [Table 12A]

【0180】ここで、BIT[8:6],BIT[5:
3],BIT[2:0]は、それぞれ9ビットバンクア
ドレスの6から8ビット、3から5ビット、0から2ビ
ットを示す。また、R[3:1],G[3:1],B
[3:1]は12ビットアドレス520の4ビット区間
IR,IG,IBの第1から第3ビットまでを示す。表
12のメモリバンク5に関して、12ビットから9ビッ
トへのマッピングを詳細に説明する。12ビットアドレ
ス520中の4ビット赤区間Irの1〜3ビットが9ビ
ットアドレスB5の6〜8ビットにマッピングされ、4
ビット緑区間Igの1〜3ビットが加算されて9ビット
アドレスB5の3〜5ビットにマッピングされ、4ビッ
ト青区間Ibの1〜3ビットが9ビットアドレスB5の
0〜2ビットにマッピングされる。
Here, BIT [8: 6], BIT [5:
3] and BIT [2: 0] indicate 6 to 8 bits, 3 to 5 bits, and 0 to 2 bits of a 9-bit bank address, respectively. Also, R [3: 1], G [3: 1], B
[3: 1] indicates the first to third bits of the 4-bit section IR, IG, IB of the 12-bit address 520. For the memory bank 5 in Table 12, the mapping from 12 bits to 9 bits will be described in detail. 1 to 3 bits of the 4-bit red section Ir in the 12-bit address 520 are mapped to 6 to 8 bits of the 9-bit address B5,
The 1 to 3 bits of the bit green section Ig are added and mapped to 3 to 5 bits of the 9-bit address B5, and the 1 to 3 bits of the 4-bit blue section Ib are mapped to 0 to 2 bits of the 9-bit address B5. .

【0181】8つのライン/バイトアドレス521は、
512×8ビットから成る対応するメモリバンク522
へのアドレスとして用いられ、対応する8ビット出力色
要素523が各メモリバンク522からラッチされる。
このアドレシング処理によれば、端点P0〜P7に対応
する出力色値CV(P0)〜CV(P7)がメモリバン
ク中での異なるアドレスとなることがある。例えば、1
2ビットアドレス0000 0000 0000は、す
べてのバンクで000 000 000という同一のバ
ンクアドレスが得られるが、12ビットアドレス000
0 00000001の場合には、バンク7、5、3、
1ではバンクアドレス000 000000となり、バ
ンク6、4、2、0ではバンクアドレス000 000
001となるように異なるバンクアドレスが得られ
る。このようにして、入力ピクセル値を取り囲む8つの
単一出力色値CV(P0)〜CV(P7)が同時に各メ
モリバンクから得られ、メモリバンクにおいて出力色値
が二重になることを防ぐことができる。
The eight line / byte addresses 521 are
Corresponding memory bank 522 consisting of 512 × 8 bits
And the corresponding 8-bit output color element 523 is latched from each memory bank 522.
According to this addressing process, the output color values CV (P0) to CV (P7) corresponding to the end points P0 to P7 may be different addresses in the memory bank. For example, 1
The 2-bit address 0000 0000 0000 gives the same bank address of 0000 000 000 in all banks, but the 12-bit address 000
In the case of 000000001, banks 7, 5, 3,
1, bank address 0000000000, and banks 6, 4, 2, 0, bank address 0000 000
A different bank address is obtained so as to be 001. In this way, eight single output color values CV (P0) to CV (P7) surrounding an input pixel value are simultaneously obtained from each memory bank, and the output color values in the memory banks are prevented from being duplicated. Can be.

【0182】図61は、単一色変換モードにおいて用い
られるデータキャッシュ230のメモリバンクの構成を
示している。各メモリバンクは128ラインエントリか
ら成り、各ラインエントリは32ビット長で4×8ビッ
トメモリ533〜536から構成される。メモリアドレ
ス521の上7ビットは、メモリアドレス中の対応する
データ列を決定し、メモリバンク出力としてラッチ54
2するために用いられる。下2ビットはバイトアドレス
で、マルチプレクサ543への入力となり、どの4×8
ビットエントリを出力として選択544するかを決定す
るために用いられる。クロックサイクルごとに8つの各
メモリバンクのためのデータが出力され、主データパス
部242に送られる。即ち、データキャッシュ制御部は
オペランドオーガナイザ248(図2)から12ビット
のバイトアドレスを受け取り、主データパス部242に
おける補間処理のための8ビット出力色値をオペランド
オーガナイザ247、248に出力する。
FIG. 61 shows a configuration of a memory bank of the data cache 230 used in the single color conversion mode. Each memory bank is composed of 128 line entries, and each line entry is composed of 4 × 8 bit memories 533 to 536 having a 32-bit length. The upper 7 bits of the memory address 521 determine the corresponding data string in the memory address, and are latched as a memory bank output.
2 The lower two bits are a byte address, which is input to the multiplexer 543, and which 4 × 8
It is used to determine whether to select 544 a bit entry as an output. Data for each of the eight memory banks is output every clock cycle and sent to main data path unit 242. That is, the data cache control unit receives the 12-bit byte address from the operand organizer 248 (FIG. 2), and outputs an 8-bit output color value for the interpolation processing in the main data path unit 242 to the operand organizers 247 and 248.

【0183】図60において、主データパス部242
(図2)は補間処理を3ステップで実行する。主データ
パス部における第1ステップにおいて、乗算/加算部
(例えば550)は対応するメモリバンク(例えば52
2)から出力される色値と赤区間位置要素551を入力
とし、前記の式の第1ステップに従って4つの出力値を
計算する。第1ステップの出力(例えば553、55
4)は第2ステップ556に送られ、frac_g入力
557を用いて第2ステップの前式に従って出力558
を計算する。最後に、第2ステップ出力558、559
とfrac_b入力562とを用いて、前式に基づいて
最終出力色563を計算する。
In FIG. 60, main data path section 242
(FIG. 2) executes the interpolation process in three steps. In a first step in the main data path section, the multiplication / addition section (e.g., 550) may use a corresponding memory bank (e.g., 52
The color value output from 2) and the red section position element 551 are input, and four output values are calculated according to the first step of the above equation. Output of the first step (for example, 553, 55
4) is sent to a second step 556, which uses the frac_g input 557 to output 558 according to the previous equation of the second step.
Is calculated. Finally, the second step outputs 558, 559
And the frac_b input 562 to calculate the final output color 563 based on the previous equation.

【0184】図60に示した処理は、全体で最大のスル
ープットを得るためにパイプライン化されている。更
に、図60の手法は単一出力色要素563が必要なとき
に用いられる。例えば、図60の手法は、まず出力画像
のシアン色要素を生成し、その後でパス間のキャッシュ
テーブルを再ロードして出力画像のマジェンタ、黄、黒
要素を生成するような場合に用いられる。これは、特
に、それぞれの出力色が独立パスとなるような4パス印
刷処理に適している。 b.複数出力一般色空間モード コプロセッサ224はMOGCSモードでの動作も行う
が、MOGCSモードはいくつかの点を除いてSOCG
Sモードとほぼ同様に動作する。MOGCSモードで
は、図2の主データパス部242、データキャッシュ制
御部240、データキャッシュが協調して、出力される
4つの主色要素を同時に出力する。このためにはデータ
キャッシュ230のサイズが4倍必要となるが、記憶領
域を節約するためにMOGCS動作モードでは、データ
キャッシュ制御部240は出力色空間のすべての出力色
値の1/4のみを格納する。出力色空間の残りの出力色
値は低速度の外部メモリに格納され、必要な時点で取り
出される。なお、本装置や手法は、キャッシュシステム
にある粗い色変換テーブルのミス率が非常に小さいとい
う驚くべき事実に基づいている。これは、多くのカラー
画像では、1つのピクセルと他のピクセルとの色値の分
散が小さいという知見に基づいたものである。また、粗
い出力色値は近隣のピクセルにおいても同じになる確率
が非常に高い。
The processing shown in FIG. 60 is pipelined in order to obtain the maximum throughput as a whole. 60 is used when a single output color element 563 is required. For example, the method of FIG. 60 is used in a case where the cyan component of the output image is generated first, and then the cache table between passes is reloaded to generate the magenta, yellow, and black components of the output image. This is particularly suitable for a four-pass printing process in which each output color is an independent pass. b. Multiple output general color space mode The coprocessor 224 also operates in the MOGCS mode, but the MOGCS mode is the same as the SOCG mode except for a few points.
The operation is almost the same as in the S mode. In the MOGCS mode, the main data path unit 242, the data cache control unit 240, and the data cache in FIG. 2 cooperate to simultaneously output the four main color elements to be output. For this purpose, the size of the data cache 230 is required to be four times, but in the MOGCS operation mode, the data cache control unit 240 uses only one-fourth of all output color values of the output color space to save storage space. Store. The remaining output color values of the output color space are stored in a low speed external memory and retrieved when needed. The present apparatus and method are based on the surprising fact that the coarse color conversion table in the cache system has a very low miss rate. This is based on the finding that in many color images, the variance of the color value between one pixel and another pixel is small. Also, the coarse output color values are very likely to be the same for neighboring pixels.

【0185】図62は、コプロセッサが複数チャネルキ
ャッシュ色変換を実行する手法を示している。各入力ピ
クセルは色要素に分解された後、対応する区間テーブル
値(図56)が前述のように決定され、Ir,Ig,I
b570といった3つの4ビット区間が得られる。結合
された12ビット数570は前述の表12に従って変換
され、8個の9ビットアドレスが得られる。アドレス
(例えば572)は図63において以下で説明するよう
に再マッピングされ、対応するメモリバンク573をル
ックアップして4つの色出力チャネル574が得られ
る。メモリバンク573は、全体で512×32ビット
エントリとなり得るが、そのうちの128×32ビット
エントリを格納する。メモリバンク573はデータキャ
ッシュ230の一部をなし、図63で説明するようにキ
ャッシュとして用いられる。
FIG. 62 shows a method in which the coprocessor executes a multi-channel cache color conversion. After each input pixel is decomposed into color components, the corresponding section table values (FIG. 56) are determined as described above, and Ir, Ig, I
Three 4-bit intervals such as b570 are obtained. The combined 12-bit number 570 is converted according to Table 12 above to obtain eight 9-bit addresses. The address (eg, 572) is remapped as described below in FIG. 63, and the corresponding memory bank 573 is looked up to obtain four color output channels 574. The memory bank 573 can store 512 × 32 bit entries, of which 128 × 32 bit entries are stored. The memory bank 573 forms a part of the data cache 230 and is used as a cache as described in FIG.

【0186】図63は、9ビットバンク入力578が5
79に再マッピングされる様子を示しており、ビット5
80〜582の順番を入れ替えることによりメモリパタ
ーンのエイリアスを取り除くことができる。これによ
り、隣接するピクセル値が同じキャッシュ要素のエイリ
アスされる確率を低減することができる。再構成された
メモリアドレス579は、それぞれが32ビットの12
8エントリから成る対応するメモリバンク(例えば58
5)へのアドレスとして用いられる。7ビットラインア
ドレスを用いてメモリ585にアクセスすることで、メ
モリバンクごとにラッチ586される出力が得られる。
各メモリバンク(例えば585)は、それぞれが2ビッ
トの128エントリから成る関連タグメモリを有する。
7ビットラインアドレスは、このタグメモリ587中の
対応するタグにアクセスするためにも用いられる。アド
レス579の最大2ビットをタグメモリ587中の対応
するタグと比較することで、出力色値がキャッシュ中に
格納されているかどうかが決定される。この9ビットア
ドレス中の最大2ビットは、赤と緑データ区間の最大ビ
ットに対応する(表12参照)。従って、MOGCSモ
ードでは、RGB入力色空間が赤と緑次元において効率
よく4象限に分割され、9ビットアドレスの最大2ビッ
トがRGB入力色区間中の象限を指定することになる。
即ち、2つのビットタグによって指定された4つの象限
に、出力色値が効率的に分割される。このため、あるラ
インの各タグ値に対応する色出力値は出力色空間で離れ
て位置することになり、メモリパターンのエイリアスを
削減することができる。
FIG. 63 shows that 9-bit bank input 578 has 5 inputs.
It shows that it is remapped to 79, bit 5
By changing the order of 80 to 582, the alias of the memory pattern can be removed. This can reduce the probability that adjacent pixel values will be aliased for the same cache element. The reconstructed memory addresses 579 are 32 bits each of 12 bits.
A corresponding memory bank of 8 entries (eg, 58
Used as address to 5). By accessing the memory 585 using the 7-bit line address, an output latched 586 for each memory bank is obtained.
Each memory bank (eg, 585) has an associated tag memory, each consisting of 128 entries of 2 bits.
The 7-bit line address is also used to access a corresponding tag in the tag memory 587. By comparing up to two bits of address 579 with the corresponding tag in tag memory 587, it is determined whether the output color value is stored in the cache. The maximum 2 bits in the 9-bit address correspond to the maximum bits in the red and green data sections (see Table 12). Therefore, in the MOGCS mode, the RGB input color space is efficiently divided into four quadrants in the red and green dimensions, and up to two bits of the 9-bit address specify a quadrant in the RGB input color section.
That is, the output color value is efficiently divided into four quadrants specified by two bit tags. For this reason, the color output values corresponding to the respective tag values of a certain line are located apart in the output color space, and the alias of the memory pattern can be reduced.

【0187】2つのビットタグが一致しない場合には、
データキャッシュ制御部はキャッシュミスを記録し、必
要なメモリ読み出しがキャッシュルックアップ処理とと
もにデータキャッシュ制御部によって起動される。な
お、キャッシュルックアップ処理は、2ビットタグエン
トリに対応するラインのすべての値が外部メモリから読
み出され、キャッシュに格納されるまで停止状態にあ
る。この処理においては、外部メモリに格納されている
色変換テーブルの関連ラインを読み出す処理が含まれ
る。図63の処理575は図62の各メモリバンク(例
えば573)ごとに実行されるため、キャッシュ内容に
よってはメモリバンクから結果(例えば586)が出力
されるまでに時間が必要となることもある。データ58
6の8つの32ビットセットは、この後主データパス部
(242)に転送され、上述の補間処理(図62)の3
ステップ590−592がすべての色チャネル同時にか
つパイプライン処理で実行され、プリンタデバイスに送
る4つの色書津力595が生成される。
If the two bit tags do not match,
The data cache controller records a cache miss and the required memory read is activated by the data cache controller along with the cache lookup process. Note that the cache lookup process is stopped until all values of the line corresponding to the 2-bit tag entry are read from the external memory and stored in the cache. This process includes a process of reading a related line of the color conversion table stored in the external memory. Since the process 575 in FIG. 63 is executed for each memory bank (for example, 573) in FIG. 62, depending on the cache contents, it may take time until a result (for example, 586) is output from the memory bank. Data 58
The eight 32-bit sets 6 are then transferred to the main data path section (242), where
Steps 590-592 are performed on all color channels simultaneously and in a pipelined process to generate four color books 595 to send to the printer device.

【0188】実験によれば、一般的な画像におけるキャ
ッシュのミス率が平均で0.01から0.03のピクセ
ルごとのキャッシュラインフェッチであるので、図62
と図63において示したキャッシュ機構が有効であるこ
とが示されている。このようなキャッシュ機構を用いる
ことで、多くの場合、データキャッシュ外部のメモリア
クセスに対する要求を大幅に低減することができる。
According to the experiment, since the cache miss rate in a general image is a cache line fetch for each pixel of 0.01 to 0.03 on average, FIG.
63 shows that the cache mechanism shown in FIG. 63 is effective. By using such a cache mechanism, in many cases, requests for memory access outside the data cache can be significantly reduced.

【0189】コプロセッサが行う2つの色空間変換モー
ド(図10)での命令符号化は以下の構造を有する。 色空間変換における命令符号化
The instruction encoding in the two color space conversion modes (FIG. 10) performed by the coprocessor has the following structure. Instruction encoding in color space conversion

【0190】[0190]

【表12B】 [Table 12B]

【0191】図64は、色空間変換命令における命令フ
ィールド符号化を示したものであり、色変換命令におけ
るマイナーオプコード符号化は以下のようになる。 色変換命令におけるマイナーオプコード符号化
FIG. 64 shows the instruction field encoding in the color space conversion instruction. The minor opcode encoding in the color conversion instruction is as follows. Minor opcode encoding in color conversion instructions

【0192】[0192]

【表13】 [Table 13]

【0193】図65は、MOGCSモードにおいて、R
GBピクセルストリームをCYMK色値に変換する手法
を示している。ステップS1において、24ビットRG
Bピクセルストリームがピクセルオーガナイザ246
(図2)に入力される。ステップS2では、図56と図
57で説明したように、ピクセルオーガナイザ246が
ルックアップテーブルを用いて各入力画素の4ビット区
間値と8ビット区間内位置とを決定する。入力ピクセル
の区間値と区間内位置は、入力ピクセルがどの区間に存
在するのか、また区間内のどの位置に存在するのかを表
すものである。ステップS3では、主データパス部24
2が入力ピクセルの赤、緑、青色要素の4ビット区間を
結合して、12ビットアドレスワードを生成し、この1
2ビットアドレスワードをデータキャッシュ制御部24
0(図2)に送る。ステップS4では、表12と図62
において説明したように、データキャッシュ制御部24
0がこの12ビットアドレスワードを8つの9ビットア
ドレスに変換する。これらの8つのアドレスは、8つの
出力値CV(P0)−CV(P7)のメモリバンク57
3(図62)中の位置を示す。ステップS5では、デー
タキャッシュ制御部240(図2)が8つの9ビットア
ドレスを、図63で説明したように再マッピングする。
このようにして、赤と緑の4ビット区間の最大ビット
が、9ビットアドレスの最大2ビットにマッピングされ
る。
FIG. 65 shows that in the MOGCS mode, R
4 shows a method of converting a GB pixel stream into CYMK color values. In step S1, a 24-bit RG
The B pixel stream is the pixel organizer 246
(FIG. 2). In step S2, as described with reference to FIGS. 56 and 57, the pixel organizer 246 determines a 4-bit section value and an 8-bit section position of each input pixel using a look-up table. The section value and the position in the section of the input pixel indicate in which section the input pixel exists and in which position in the section. In step S3, the main data path unit 24
2 combines the four bit intervals of the red, green and blue components of the input pixel to produce a 12 bit address word,
The 2-bit address word is transferred to the data cache control unit 24.
0 (FIG. 2). In step S4, Table 12 and FIG.
As described in, the data cache control unit 24
A 0 translates this 12-bit address word into eight 9-bit addresses. These eight addresses correspond to the memory banks 57 of the eight output values CV (P0) -CV (P7).
3 (FIG. 62). In step S5, the data cache control unit 240 (FIG. 2) remaps the eight 9-bit addresses as described with reference to FIG.
In this way, the maximum bit of the red and green 4-bit sections is mapped to a maximum of 2 bits of the 9-bit address.

【0194】ステップS6では、データキャッシュ制御
部240が9ビットアドレスの最大2ビットと、メモリ
587(図63)中の2ビットタグとを比較する。2ビ
ットタグが9ビットアドレスの最大2ビットと一致しな
ければ、出力色値CV(P0)−CV(P7)はキャッ
シュメモリ230に存在しない。従ってステップS7に
おいて、2ビットタグエントリに対応する出力色値が外
部メモリからデータキャッシュ230に読み込まれる。
2ビットタグが9ビットアドレスの最大2ビットと一致
する際には、データキャッシュ制御部240はステップ
S8において図62において説明した要領で8つの出力
色値CV(P0)−CV(P7)を取り出す。このよう
にして、入力ピクセルを取り囲む8つの出力色値CV
(P0)−CV(P7)が主データパス部242によっ
てデータキャッシュ230から取り込まれる。ステップ
S7では、ステップS2で決定された区間内位置を用い
て出力色値CV(P0)−CV(P7)が主データパス
部242において補間され、補間された出力色値が出力
される。
In step S6, the data cache control section 240 compares a maximum of 2 bits of the 9-bit address with a 2-bit tag in the memory 587 (FIG. 63). If the 2-bit tag does not match the maximum 2 bits of the 9-bit address, the output color value CV (P0) -CV (P7) does not exist in the cache memory 230. Therefore, in step S7, the output color value corresponding to the 2-bit tag entry is read from the external memory into the data cache 230.
When the 2-bit tag matches the maximum 2 bits of the 9-bit address, the data cache control unit 240 extracts eight output color values CV (P0) -CV (P7) in step S8 as described with reference to FIG. . Thus, the eight output color values CV surrounding the input pixel
(P0) -CV (P7) is fetched from the data cache 230 by the main data path unit 242. In step S7, the output color value CV (P0) -CV (P7) is interpolated in the main data path unit 242 using the position in the section determined in step S2, and the interpolated output color value is output.

【0195】ここで、RGB色空間や対応する出力色値
を4象限以上、例えば32ブロックに更に分割すること
により、データキャッシュ容量の格納領域を低減するこ
とができることは、専門家にとっては明らかである。3
2ブロックに分割する場合には、データキャッシュの格
納容量は出力色値の1/32ブロックのみで良い。ま
た、MOGCSモードで用いられるデータキャッシュ機
構を単一出力一般変換モードにおいて用いることもでき
ることも、専門家にとっては明らかである。この場合に
も、データキャッシュの格納領域を低減することができ
る。
Here, it is obvious to an expert that the storage area of the data cache capacity can be reduced by further dividing the RGB color space and the corresponding output color values into four or more quadrants, for example, into 32 blocks. is there. 3
When divided into two blocks, the storage capacity of the data cache may be only 1/32 block of the output color value. It is also clear to the expert that the data cache mechanism used in the MOGCS mode can be used in the single output general conversion mode. Also in this case, the storage area of the data cache can be reduced.

【0196】3.17.3 JPEG符号化/復号 特にメモリの節約やある場所から他の場所への画像転送
速度の観点において、画像を符号化して格納することに
よる利点は計り知れない。画像符号化としてはさまざま
な広く流布している標準が生まれている。非常に有名な
標準の1つがJPEG標準であるが、JPEG標準に関
する詳細な説明はVan Nostrand Rein
holdにより1993年に出版されたPenneba
kerとMitchellによる著名な本「JPEG:
Still Image Data Compress
ion Standard」を参照されたい。コプロセ
ッサ224はJPEG標準のサブセットを用いて画像を
格納する。JPEG標準の利点は、画質を維持したまま
大幅な圧縮率が得られる点である。もちろん、画像を圧
縮して格納するためには他の標準を用いても良い。JP
EG標準は専門家には良く知られた標準であり、ASI
CSに用いることができるようなJPEGを実装した種
々の製品がJPEGコア製品などを含む製造業者から市
販されている。
3.17.3 JPEG encoding / decoding The advantages of encoding and storing images are enormous, especially in terms of memory savings and image transfer speed from one place to another. A variety of widely distributed standards have emerged for image coding. One of the very famous standards is the JPEG standard, but a detailed description of the JPEG standard can be found in Van Nostrand Rein.
Penneba published in 1993 by Hold
A well-known book by ker and Mitchell, "JPEG:
Still Image Data Compress
See “ion Standard”. Coprocessor 224 stores the image using a subset of the JPEG standard. An advantage of the JPEG standard is that a large compression ratio can be obtained while maintaining image quality. Of course, other standards may be used to compress and store the image. JP
The EG standard is a standard well known to experts,
Various products implementing JPEG that can be used for CS are commercially available from manufacturers including JPEG core products and the like.

【0197】コプロセッサ224は、1、3、4色要素
から成る画像をJPEG符号化/復号する機能を備えて
いる。1色要素画像はメッシュでもメッシュでなくても
良い。即ち、1色要素を、メッシュデータあるいはメッ
シュされていないデータのどちらかでも取り出すことが
できる。メッシュデータの例としてピクセルデータごと
の3色要素(即ち、ピクセルデータごとのRGB)があ
り、メッシュされていないデータの例として、画像の各
色要素が別々に格納されており各色要素を独立に処理で
きるようなデータが挙げられる。3色要素画像の場合に
は、コプロセッサ224は3色チャネルが最小3バイト
に符号化されていると仮定して、ワードごとに1ピクセ
ルを用いる。
The coprocessor 224 has a function of JPEG encoding / decoding an image composed of 1, 3, and 4 color elements. The one-color element image may or may not be a mesh. That is, one color element can be extracted as either mesh data or unmeshed data. As an example of mesh data, there are three color elements for each pixel data (that is, RGB for each pixel data). As an example of non-meshed data, each color element of an image is stored separately and each color element is processed independently. Data that can be used. For a three-color component image, coprocessor 224 uses one pixel per word, assuming that the three-color channel is encoded to a minimum of three bytes.

【0198】JPEG標準は画像を最小符号化部位(M
CU)と呼ばれる小さな2次元部位に分割する。ここ
で、各最小符号化部位は独立に処理される。JPEG符
号化器(図2)は、ダウンサンプリングされた画像の横
16ピクセル、縦8ピクセルのMCUでも良いし、ダウ
ンサンプリングされていない画像の場合の横8ピクセ
ル、縦8ピクセルのMCUでも良い。
The JPEG standard defines an image as a minimum coding part (M
CU) is divided into small two-dimensional parts. Here, each minimum coding part is processed independently. The JPEG encoder (FIG. 2) may be an MCU of 16 pixels horizontally and 8 pixels vertically of a down-sampled image, or may be an MCU of 8 pixels horizontally and 8 pixels vertically for an image that has not been down-sampled.

【0199】図66は、3要素画像をダウンサンプリン
グする手法を示している。元のピクセルデータ600
は、各ピクセルは601がYUV色空間でのY,U,V
要素から成るピクセル形式でMUVバッファ250(図
2)に格納されている。このデータはまず4つのデータ
ブロック601〜604から成るMCU部位に変換され
る。データブロックは種々の色要素を含み、ブロック6
01,602は直接サンプルされたY要素であり、ブロ
ック603、604は図3の例においてサブサンプルさ
れたU,V要素である。ここで、コプロセッサ224は
2種類のサブサンプリング機能を備える。1つはフィル
タリングしない直接サンプリングであり、奇数のピクセ
ルデータを残し、偶数のピクセルデータを削除するもの
である。なお、隣接値の平均をとりU,V要素をフィル
タリングすることもできる。
FIG. 66 shows a method of down-sampling a three-element image. Original pixel data 600
Means that each pixel 601 is Y, U, V in YUV color space
It is stored in the MUV buffer 250 (FIG. 2) in pixel format consisting of elements. This data is first converted to an MCU part consisting of four data blocks 601 to 604. The data block contains various color components, and block 6
01 and 602 are directly sampled Y elements, and blocks 603 and 604 are U and V elements that are subsampled in the example of FIG. Here, the coprocessor 224 has two types of subsampling functions. One is direct sampling without filtering, in which odd pixel data is left and even pixel data is deleted. It is also possible to filter the U and V elements by averaging adjacent values.

【0200】もう一つのJPEGサブサンプリングは、
図67に示した4色チャネルサブサンプリングである。
このサブサンプリングでは、16×8ピクセル610の
ピクセルデータブロックが通常のY,U,V要素に加え
て不透明度要素(O)を含む4要素611を有してい
る。このピクセルデータ610も図66と同様にサブサ
ンプルされる。しかし、この場合には、不透明チャネル
を用いてデータブロック612、613が作成される。
Another JPEG subsampling is:
This is the four-color channel sub-sampling shown in FIG.
In this sub-sampling, a pixel data block of 16 × 8 pixels 610 has four elements 611 including an opacity element (O) in addition to normal Y, U, V elements. This pixel data 610 is also sub-sampled as in FIG. However, in this case, data blocks 612 and 613 are created using the opaque channel.

【0201】図68は、図2のJPEG符号化器241
をより詳細に説明した図である。JPEG符号化/復号
器241は、JPEG符号化と復号との双方を行う。符
号化処理は、バス620を介してピクセルオーガナイザ
246(図2)からブロックデータを受信する。ブロッ
クデータはMUVバッファ250に格納され、ブロック
ごとに処理がなされる。JPEG符号化処理はいくつか
の明確なステップに分割される。これらのステップは、 1.DCT部における離散コサイン変換の実行621 2.DCT出力の量子化622 3.量子化器622で実行されるジグザグスキャンによ
るDCT係数の配置 4.係数符号化器623で実行されるDC DCT係数
の予測符号化とAC DCT係数のランレンクス符号化 5.ハフマン符号化器624で実行される係数符号化器
の出力の可変長符号化。出力はマルチプレクサ625と
Rbus626を介して結果オーガナイザ629(図
2)に送られる。
FIG. 68 is a block diagram showing the JPEG encoder 241 shown in FIG.
FIG. The JPEG encoder / decoder 241 performs both JPEG encoding and decoding. The encoding process receives block data from the pixel organizer 246 (FIG. 2) via the bus 620. The block data is stored in the MUV buffer 250, and is processed for each block. The JPEG encoding process is divided into several distinct steps. These steps are: 1. Execution of discrete cosine transform in DCT section 621 2. DCT output quantization 622 3. Arrangement of DCT coefficients by zigzag scan executed by quantizer 622 4. Predictive coding of DC DCT coefficients and run-length coding of AC DCT coefficients performed by coefficient encoder 623 Variable length coding of the output of the coefficient coder performed by the Huffman coder 624. The output is sent through multiplexer 625 and Rbus 626 to result organizer 629 (FIG. 2).

【0202】JPEG復号処理は、JPEG符号化動作
を逆にしたものである。即ち、JPEG復号処理は、B
us620から圧縮されたJPEGブロックを入力する
処理を含む。圧縮データはBus630を介してハフマ
ン符号化器624に送られ、データがDC差分とACラ
ンレンクスとに復号される。次に、データは係数符号化
器623に送られ、ACとDC係数が復号され、通常の
スキャンに戻される。その後、量子化器622において
DC係数に対応する量子化値を乗算することでDC係数
の逆量子化が行われる。最後に、DCT部621におい
て逆離散コサイン変換が施されもとのデータが復元さ
れ、Bus631を介してマルチプレクサ625、Bu
s626を介して結果オーガナイザに送られる。JPE
G符号化器241は、JPEG符号化器の動作を開始さ
せるために命令制御部によってセットされたレジスタを
含むような標準Cbusインタフェース632を介して
の通常の方法で動作する。また、量子化器622とハフ
マン符号化器624はテーブルを必要とするが、これは
必要時にデータキャッシュ230からロードされる。テ
ーブルデータは、Obusインタフェース部634を介
してアクセスされる。ここでObusインタフェース部
634はオペランドオーガナイザB247に接続され、
データキャッシュ制御部240と作用しあう。
The JPEG decoding process is the reverse of the JPEG encoding operation. That is, the JPEG decoding process
The process includes inputting a compressed JPEG block from the us. The compressed data is sent to the Huffman encoder 624 via the Bus 630, and the data is decoded into a DC difference and an AC run length. Next, the data is sent to a coefficient encoder 623 where the AC and DC coefficients are decoded and returned to normal scanning. Thereafter, the quantizer 622 performs inverse quantization of the DC coefficient by multiplying the DC coefficient by a corresponding quantization value. Finally, the DCT section 621 performs inverse discrete cosine transform to restore the original data, and the multiplexer 625 and the Bu through the Bus 631.
It is sent to the result organizer via s626. JPE
The G encoder 241 operates in a normal manner via a standard Cbus interface 632 that includes a register set by the instruction controller to initiate operation of the JPEG encoder. Also, quantizer 622 and Huffman encoder 624 require tables, which are loaded from data cache 230 when needed. The table data is accessed via the Obus interface unit 634. Here, the Obus interface unit 634 is connected to the operand organizer B247,
It interacts with the data cache control unit 240.

【0203】DCT部621はピクセルデータに対して
離散コサイン変換と逆離散コサイン変換とを行う。DC
Tに関しては、さまざまな種類のDCT変換実現手法が
知られており、「Still Image Data
Compression Standard」(同上)
の中にも記されているものの、DCT621は以下の項
「高速DCT装置」で詳述する高速手法を用いている。
なお、DCT変換動作においては、The Trans
actions of the IEICE,vol.
E71,no.11,November 1988の1
095ページに掲載されたにAraiらによる論文「A
Fast DCT−SQ Scheme for I
mages」に基づくDCT変換手法を用いることもで
きる。
The DCT section 621 performs a discrete cosine transform and an inverse discrete cosine transform on the pixel data. DC
Regarding T, various types of DCT transform realization methods are known, and “Still Image Data” is known.
Compression Standard "(ibid.)
, The DCT 621 uses the high-speed technique described in detail in the following section, "High-speed DCT device."
Note that in the DCT conversion operation, The Trans
actions of the IEICE, vol.
E71, no. 11, November 1988-1
Arai et al.'S paper “A
Fast DCT-SQ Scheme for I
DCT transform method based on “images”.

【0204】量子化器622はDCT係数の量子化と逆
量子化を行い、データキャッシュに格納された対応する
テーブルから関連値をObusインタフェース部634
を介して取り出すことで動作する。量子化処理において
は、入力データストリームは、データキャッシュ中の量
子化テーブルから読み出された値でもって除算される。
この除算は固定小数点の乗算として実装される。また、
逆量子化処理では、データストリームは逆量子化テーブ
ル中の値と乗算される。
The quantizer 622 performs quantization and inverse quantization of the DCT coefficient, and obtains an associated value from the corresponding table stored in the data cache by the Obus interface unit 634.
It works by taking out via. In the quantization process, the input data stream is divided by a value read from a quantization table in a data cache.
This division is implemented as a fixed-point multiplication. Also,
In the inverse quantization process, the data stream is multiplied by the values in the inverse quantization table.

【0205】図69は、逆量子化622をより詳細に説
明した図である。量子化器622は、ローカルバスを介
してDCTモジュール621にデータを渡したり、DC
Tモジュール621からデータを受け取ったりするDC
Tインタフェース640を備える。量子化処理において
は、量子化器622はクロックサイクルごとに2つのD
CT係数を受信する。これらの値は量子化器の内部バッ
ファ641、642の1つに書き込まれる。バッファ6
41、642は入力データをバッファするための2つの
ポートを備えたバッファである。量子化処理において、
DCTサブモジュール621からの係数データはバッフ
ァ641、642の1つに格納される。バッファがフル
になると、データはバッファからジグザグスキャンで読
み出され、Obusインタフェース部634を介して受
信した量子化値でもって乗算器643で乗算される。こ
の出力は係数符号化インタフェース645を介して係数
符号化器623(図68)に転送される。これらの処理
を行っている間、次のブロックの係数が他のバッファに
書き込まれている。JPEG復号処理において、量子化
モジュールは、テーブルに格納された値でもって復号さ
れたDCT係数を乗算することで逆量子化処理を行う。
量子化と逆量子化とはそれぞれ排他的な動作をするた
め、乗算器643は量子化と逆量子化との双方において
用いられる。なお、逆量子化テーブルへのインデックス
として、8×8のブロック中の係数の位置を用いる。
FIG. 69 is a diagram for explaining the inverse quantization 622 in more detail. The quantizer 622 passes data to the DCT module 621 via the local bus,
DC for receiving data from T module 621
A T interface 640 is provided. In the quantization process, quantizer 622 uses two Ds per clock cycle.
Receive CT coefficients. These values are written to one of the internal buffers 641, 642 of the quantizer. Buffer 6
Reference numerals 41 and 642 denote buffers provided with two ports for buffering input data. In the quantization process,
The coefficient data from DCT sub-module 621 is stored in one of buffers 641 and 642. When the buffer becomes full, data is read from the buffer by zigzag scanning and multiplied by the multiplier 643 with the quantized value received via the Obus interface unit 634. This output is transferred to the coefficient encoder 623 (FIG. 68) via the coefficient encoding interface 645. While these processes are being performed, the coefficient of the next block is being written to another buffer. In the JPEG decoding process, the quantization module performs the inverse quantization process by multiplying the DCT coefficient decoded by the value stored in the table.
The multiplier 643 is used in both the quantization and the inverse quantization because the quantization and the inverse quantization operate exclusively. Note that the position of a coefficient in an 8 × 8 block is used as an index into the inverse quantization table.

【0206】量子化処理と同様に、2つのバッファ64
1、642が係数符号化器623(図68)からの入力
係数データをバッファするために用いられる。データは
量子化値と乗算され、逆ジグザグスキャン順にバッファ
に書き込まれる。バッファがフルになると、逆量子化さ
れた係数が通常の順番でバッファから2つ同時に読み出
され、DCTインタフェース640を介してDCTサブ
モジュール621(図68)に送られる。従って、係数
符号化器インタフェースモジュール645は、係数符号
化器とのインタフェースとなっており、ローカルバスを
介して符号化器にデータを送ったり符号化器からデータ
を読み出したりする。このモジュールは、符号化時には
ジグザグスキャン順でバッファからデータを読み出し、
復号時には逆ジグザグスキャン順でバッファにデータを
書き込む。DCTインタフェースモジュール640とC
Cインタフェースモジュール645ともバッファからの
読み出しや書き込みを行うことができる。そのため、ア
ドレス/制御マルチプレクサ647を用いて、各インタ
フェースがどちらのバッファと動作しているのかを、量
子化器のすべてのモジュールを制御するための状態マシ
ンから成る制御モジュール648の制御のもとで、決定
する。乗算器643は、16×8の2の補数の乗算器を
用いてDCT係数を量子化テーブル値と乗算しても良
い。
Similarly to the quantization processing, the two buffers 64
1, 642 are used to buffer the input coefficient data from coefficient encoder 623 (FIG. 68). The data is multiplied by the quantized value and written to the buffer in reverse zigzag scan order. When the buffer is full, two inversely quantized coefficients are simultaneously read from the buffer in the usual order and sent to the DCT sub-module 621 (FIG. 68) via the DCT interface 640. Therefore, the coefficient encoder interface module 645 serves as an interface with the coefficient encoder, and sends data to and reads data from the encoder via the local bus. This module reads data from the buffer in zigzag scan order during encoding,
At the time of decoding, data is written to the buffer in reverse zigzag scan order. DCT interface module 640 and C
The C interface module 645 can also read from and write to the buffer. Therefore, the address / control multiplexer 647 is used to determine which buffer each interface is operating with, under the control of a control module 648, which consists of a state machine for controlling all modules of the quantizer. ,decide. The multiplier 643 may multiply the DCT coefficient by a quantization table value using a 16 × 8 two's complement multiplier.

【0207】図68において、係数符号化器623は以
下の機能を実行する。 (a) JPEGモードにおけるDC係数の予測符号化
/復号 (b) JPEGモードにおけるAC係数のランレンク
ス符号化/復号 なお、係数符号化器623は、JPEGモード動作とは
別に、必要な時点でピクセルの予測符号化/復号やメモ
リコピー動作のために用いることができると好ましい。
係数符号化器623は、ピンクブックに規定されている
ように、DC/AC係数の予測/ランレンクス符号化/
復号を行う。また、JPEG標準に規定されているよう
なJPEG AC係数のランレンクス符号化/復号に加
えて、標準の予測符号化/復号機能も備えている。
Referring to FIG. 68, coefficient encoder 623 performs the following functions. (A) Predictive encoding / decoding of DC coefficient in JPEG mode (b) Run-Length encoding / decoding of AC coefficient in JPEG mode Note that the coefficient encoder 623 separates a pixel at a necessary time from the JPEG mode operation. Preferably, it can be used for predictive encoding / decoding and memory copy operations.
The coefficient encoder 623 performs prediction / run-lens encoding /
Perform decryption. Further, in addition to the run-length encoding / decoding of JPEG AC coefficients as defined in the JPEG standard, it also has a standard predictive encoding / decoding function.

【0208】ハフマン符号化器624は、JPEGデー
タ列のハフマン符号化/復号を行う。ハフマン符号化モ
ードでは、係数符号化器623からランレンクス符号化
されたデータが受信され、パックバイトのハフマンスト
リームが生成される。また、ハフマン復号モードでは、
ハフマンストリームがPbusインタフェース620か
らパックバイト形式で読み出され、ハフマン復号された
係数が係数符号化モジュール623に送られる。ハフマ
ン符号化器624は、データキャッシュに格納され、O
busインタフェース634を介してアクセスされるハ
フマンテーブルを利用する。或は、ハフマンテーブルを
ハードで構成して高速にすることもできる。
The Huffman encoder 624 performs Huffman encoding / decoding of the JPEG data sequence. In the Huffman coding mode, run-Lenx-encoded data is received from the coefficient encoder 623, and a Huffman stream of packed bytes is generated. Also, in Huffman decoding mode,
The Huffman stream is read from the Pbus interface 620 in a packed byte format, and the Huffman-decoded coefficients are sent to the coefficient encoding module 623. Huffman encoder 624 is stored in the data cache and
A Huffman table accessed via a bus interface 634 is used. Alternatively, the Huffman table can be configured by hardware to increase the speed.

【0209】ハフマン符号化においてデータキャッシュ
を用いるときには、データキャッシュの8つのバンク
は、以下に各テーブルごとに詳細に説明されているよう
にデータテーブルを格納する。 データキャッシュに格納されているハフマン、量子化テ
ーブル
When using data caches in Huffman coding, the eight banks of data caches store data tables as described in detail below for each table. Huffman, quantization table stored in data cache

【0210】[0210]

【表14】 [Table 14]

【0211】図70において、ハフマン符号化器624
は、符号化器660と復号器661との2つの独立のブ
ロックから主に構成される。双方のブロック660、6
61はマルチプレクサモジュール662を介して同じO
busインタフェースを共有する。各ブロックは、それ
ぞれ入力と出力を有し、JPEG符号化器で実行される
機能に応じて、一時点ではどちらか1つのブロックのみ
がアクティブとなる。 a.符号化 JPEGモードにおける符号化においては、ハフマンテ
ーブルを用いて、DC差分値やACランレンクス値に可
変長コード(コードごとに16ビットまで)を割り当て
られる。割り当てられたコードは、CCサブモジュール
からHCサブモジュールに送られる。また、ハフマンテ
ーブルは動作開始前にデータキャッシュから予めロード
されていなければならない。そして、可変長コードをC
Cサブモジュールから送られてきたDCやAC係数の他
のビットと結合し、パックバイト形式が生成される。パ
ック処理の結果、X’FFバイトが得られたとすると、
X’00バイトが挿入される。RSTmマーカが必要な
ときはマーカが挿入されるが、この際には、最後のハフ
マン符号の「1」ビットでのバイト詰込処理と、詰込ま
れたバイトがX’FFになったときのX’00バイト挿
入処理が行われる。RSTmマーカが必要かどうかは、
CCサブモジュールによって指示される。また、HCサ
ブモジュールは、Pbus−CCスレーブインタフェー
ス上の「最後の」信号での指示により、画像の最後にE
OIマーカを挿入する。EOIマーカの挿入処理におい
ては、RSTmマーカと同様のパック処理、詰込み処
理、挿入処理が必要となる。最後に、出力ストリームは
パックバイトとして結果オーガナイザ249に送られ、
外部メモリに書き込まれる。
In FIG. 70, Huffman encoder 624
Is mainly composed of two independent blocks, an encoder 660 and a decoder 661. Both blocks 660, 6
61 is the same O through a multiplexer module 662
Share the bus interface. Each block has an input and an output, and depending on the function performed by the JPEG encoder, only one of the blocks is active at a time. a. Encoding In encoding in the JPEG mode, a variable length code (up to 16 bits for each code) is assigned to a DC difference value or an AC run length value using a Huffman table. The assigned code is sent from the CC submodule to the HC submodule. Also, the Huffman table must be pre-loaded from the data cache before the operation starts. And the variable length code is C
Combined with other bits of the DC and AC coefficients sent from the C submodule, a packed byte format is generated. As a result of the pack processing, X'FF bytes are obtained.
X'00 bytes are inserted. When the RSTm marker is required, the marker is inserted. In this case, the byte is filled with the last Huffman code “1” bit, and when the filled byte becomes X′FF. X'00 byte insertion processing is performed. Whether the RSTm marker is required
Indicated by the CC submodule. Also, the HC sub-module is configured to output E at the end of the image according to the instruction of the “last” signal on the Pbus-CC slave interface.
Insert an OI marker. In the insertion processing of the EOI marker, the same packing processing, packing processing, and insertion processing as those of the RSTm marker are required. Finally, the output stream is sent to result organizer 249 as packed bytes,
Written to external memory.

【0212】非JPEGモードの場合には、CCサブモ
ジュール(Pbus−CCスレーブインタフェース)か
らアンパックデータとして符号化器にデータが送られ
る。各バイトは(JPEGモードと同様に)キャッシュ
にあらかじめロードされたテーブルを用いて独立に符号
化され、可変長シンボルがパックバイト形式にまとめら
れ、結果オーガナイザ249に送られる。なお、出力ス
トリームの最後のバイトは1での詰込処理が行われる。 b.復号 復号アルゴリズムは、高速(リアルタイム)のものと低
速のものとを備える。高速アルゴリズムはJPEGモー
ドのみで動作し、低速アルゴリズムはJPEGモードで
も非JPEGモードでも動作する。
In the case of the non-JPEG mode, data is sent from the CC submodule (Pbus-CC slave interface) to the encoder as unpacked data. Each byte is independently coded using a table pre-loaded into the cache (similar to JPEG mode), and the variable length symbols are packed into packed bytes and sent to the result organizer 249. Note that the last byte of the output stream is subjected to a 1-packing process. b. Decoding The decoding algorithm includes a high-speed (real-time) algorithm and a low-speed algorithm. The fast algorithm operates in JPEG mode only, and the slow algorithm operates in both JPEG and non-JPEG modes.

【0213】高速JPEGハフマン復号アルゴリズム
は、ハフマンシンボルをDC差分値あるいはACランレ
ンクス値のどちらかにマッピングする。これは特にJP
EGに適するように設計されており、符号化時において
例のハフマンテーブル(K3,K4,K5,K6)が用
いられることを想定している。なお、これらのテーブル
は、キャッシュメモリを参照することなく復号できるよ
うに、アルゴリズム中にハード的に埋め込まれている。
このような復号処理は、あるデータレートを保証しつつ
復号画像を印刷しなければならないような場合を想定し
たものである。バンド(RSTmマーカで区切られたブ
ロック)を復号するHCサブモジュールのデータレート
は、1クロックサイクルでほぼ1つのDC/AC係数で
ある。HCサブモジュールとCCサブモジュール間で
は、データストリームからX’00挿入バイトを削除す
るために、1クロックサイクル必要になることもある
が、これはデータに強く依存している。
The high-speed JPEG Huffman decoding algorithm maps Huffman symbols to either DC difference values or AC run-length values. This is especially JP
It is designed to be suitable for EG, and it is assumed that the example Huffman table (K3, K4, K5, K6) is used at the time of encoding. These tables are embedded in the algorithm in hardware so that they can be decoded without referring to the cache memory.
Such a decoding process assumes a case where a decoded image must be printed while guaranteeing a certain data rate. The data rate of the HC sub-module for decoding bands (blocks delimited by RSTm markers) is approximately one DC / AC coefficient per clock cycle. Between the HC submodule and the CC submodule, one clock cycle may be required to remove the X'00 insertion byte from the data stream, but this is strongly dependent on the data.

【0214】ハフマン復号器は高速モードで動作し、ク
ロックサイクルごとに1ハフマンシンボルを抽出する。
なお、高速ハフマン復号器については、以下の「可変長
符号の復号器」において記している。また、ハフマン復
号器661は、ヒープに基づく低速復号アルゴリズムを
備えており、図71に示す構造670となっている。
The Huffman decoder operates in the high-speed mode and extracts one Huffman symbol every clock cycle.
The high-speed Huffman decoder is described in “Decoder of variable-length code” below. The Huffman decoder 661 has a low-speed decoding algorithm based on a heap, and has a structure 670 shown in FIG.

【0215】JPEG符号化ストリームに対して、スト
リッパー671においてX’00挿入バイト、X’FF
詰込バイト、RSTmマーカが取り除かれ、結合された
他のビットとともにハフマンシンボルがシフター672
に送られる。なお、ハフマンのみの符号化ストリームで
はこの処理は行われない。ハフマンシンボル復号の最初
のステップは、ハフマンデータストリームの最初の8ビ
ットでアドレシングされたキャッシュに格納されたHU
FVALテーブルの256のエントリをルックアップす
る処理である。この値が対応するハフマンシンボルの真
の長さである場合には、当該値が出力フォーマッター6
76に転送され、復号値のシンボル長と付加ビット数と
がシフター672にフィードバックされ、関連する付加
ビットを出力フォーマッター676に転送し、復号部6
73に送るハフマンストリームの新しい開始部位を整列
する。ここで、付加ビット数は復号値の関数である。最
初のルックアップが復号値にならなかった場合、即ちハ
フマンシンボルが8ビット以上であった場合には、ヒー
プアドレスが計算され、一致するまで、あるいは「不適
切ハフマンシンボル」条件が満たされるまで、引き続き
ヒープ(キャッシュ内に位置)アクセスが実行される。
ルックアップが一致すると上記と同様の処理が行われ、
「不適切ハフマンシンボル」条件が満たされた場合には
インタラプト状態となる。
For a JPEG encoded stream, X'00 insertion byte, X'FF
The padding byte, the RSTm marker is removed and the Huffman symbol is shifted 672 along with the other bits combined.
Sent to Note that this processing is not performed on an encoded stream including only Huffman. The first step in Huffman symbol decoding is to store the cached HUs addressed by the first 8 bits of the Huffman data stream.
This is a process of looking up 256 entries of the FVAL table. If this value is the true length of the corresponding Huffman symbol, the value is output formatter 6
76, the symbol length of the decoded value and the number of additional bits are fed back to the shifter 672, and the associated additional bits are transferred to the output formatter 676, where
Align the new start site of the Huffman stream sent to 73. Here, the number of additional bits is a function of the decoded value. If the first lookup did not result in a decoded value, i.e., the Huffman symbol was 8 bits or more, the heap address was calculated until a match or until the "improper Huffman symbol" condition was met. Subsequently, heap (position in the cache) access is executed.
If the lookup matches, the same process is performed,
When the “unsuitable Huffman symbol” condition is satisfied, an interrupt state is set.

【0216】ヒープに基づく復号アルゴリズムは以下の
通りである。 画像の最後までループ シンボル長Nを8にセット 入力ストリームの最初の8ビットをINDEXに格納 HUFVAL(INDEX)をフェッチ If HUFVAL(INDEX)==00xx000111..(ILL) 「不適切ハフマンシンボル」信号の送出 exit elseif HUFVAL(INDEX)==1nnn eeee eee e−−(HIT) nnnビットをeeee eeeeに値として転送 シンボル長N=decimal(nnn)を転送 /*000がシンボル長8として*/ 入力ストリームの調整 break else/*HUFVAL(INDEX)==01iii iiii iii i−−(MISS) HEAPINDEX==ii iiii iiiiにセット(ヒープベース を0に仮定) N=9にセット If 入力ストリームの第9ビットが0である HEAPINDEXを1増加 fi VALUE=HEAP(HEAPINDEX)のフェッチ(第9ビットの 符号) Loop If VALUE==0001 0000 1111−−(NL) 「不適切ハフマンシンボル」信号の送出 exit elseif VALUE===1000 eeee eeee eeee eeeeを値として転送 シンボル長Nを転送 入力ストリームの調整 break else/*VALUE==01iii iiii iiii−−( MISS) N=N+1にセット(HEAPINDEX=ii iiii ii ii) If 入力ストリームの第Nビットが0 HEAPINDEXを1増加 fi VALUE=HEAP(HEAPINDEX)のフェッチ pool pool ストリッパ671は、入力JPEG671符号化ストリ
ームからX’00挿入バイト、X’FF詰込みバイト、
RSTmマーカを削除し、「きれいな」ハフマンシンボ
ルを連結された付加ビットとともにシフタ672に転送
する。ハフマンのみの符号化においては他の付加ビット
は存在しないため、このモードにおいては転送されたス
トリームはハフマンシンボルのみから成る。
The decoding algorithm based on the heap is as follows. Set loop symbol length N to 8 until end of image Store first 8 bits of input stream in INDEX Fetch HUFVAL (INDEX) If HUFVAL (INDEX) == 00xx000111. . (ILL) Transmission of “inappropriate Huffman symbol” signal exit elseif HUFVAL (INDEX) == 1nnn eeeee eee e- (HIT) Transfer nnn bits as value to eeeeeee Transfer symbol length N = decimal (nnn) / * 000 as symbol length 8 * / adjustment of input stream break else / * HUFVAL (INDEX) == 01iiiiiiiiiiiiiiii-(MISS) Set to HEAPINDEX == iiiiiiiiiiii (assume heap base is 0) N = 9 If the ninth bit of the input stream is 0, increment HEAPINDEX by one. Fi VALUE = Fetch of HEAP (HEAPINDEX) (the sign of the ninth bit) Loop If VALUE == 0001 0000 111 ---- (NL) Transmission of "inappropriate Huffman symbol" signal exit elseif VALUE === 1000 eeee eeee eeeeeeeeeeee transfer symbol length N as input value adjustment input stream break else / * VALUE == 01iiiiiiiiiiii- -(MISS) Set N = N + 1 (HEAPINDEX = ii iiiii iii ii) If Nth bit of input stream is 0, HEAPINDEX is incremented by 1 fi VALUE = HEAP (HEAPINDEX) fetch pool pool Stripper 671 encodes input JPEG 671 encoding To X'00 insertion byte, X'FF padding byte,
Remove the RSTm marker and transfer the “clean” Huffman symbol to shifter 672 with the concatenated additional bits. In Huffman-only encoding, no additional bits are present, so in this mode the transferred stream consists only of Huffman symbols.

【0217】シフタ672ブロックは16ビット出力レ
ジスタを備え、次のハフマンシンボルを復号部673に
(MSBからLSBの順番のビットストリームで)転送
する。シンボルは16ビット以下であることも多いが、
どれだけのビットを解析するかを決定するのは復号部6
73に任されている。シフタ672は復号部673から
フィードバック678、即ち現在のシンボル長と(JP
EGモードにおける)現シンボルに続く付加ビット長と
を受信し、シフタ672における次のシンボルの開始時
点を適切に整列させる。
The shifter 672 block has a 16-bit output register, and transfers the next Huffman symbol to the decoding unit 673 (in a bit stream from the MSB to the LSB). Symbols are often 16 bits or less,
It is the decoding unit 6 that determines how many bits to analyze.
73. Shifter 672 provides feedback 678 from decoding section 673, that is, the current symbol length and (JP
Receive the additional bit length following the current symbol (in the EG mode) and properly align the start of the next symbol in shifter 672.

【0218】復号部673はヒープに基づくアルゴリズ
ムのコアを実装しており、Obus674経由でデータ
キャッシュに接続されている。復号部673は、データ
キャッシュフェッチブロック、ルックアップ値比較部、
シンボル長カウンター、ヒープインデックス加算部、付
加ビット数の復号部(復号は復号値に基づいて行われ
る)を備える。ここで、フェッチアドレスは以下のよう
に解釈される。
The decoding unit 673 has a core of an algorithm based on a heap, and is connected to the data cache via the Obus 674. The decoding unit 673 includes a data cache fetch block, a lookup value comparison unit,
It includes a symbol length counter, a heap index addition unit, and a decoding unit for decoding the number of additional bits (decoding is performed based on the decoded value). Here, the fetch address is interpreted as follows.

【0219】フェッチアドレスFetch address

【0220】[0220]

【表15】 [Table 15]

【0221】出力フォーマッターブロック676は8ビ
ット値の復号や(スタンドアロンハフマンモード)、2
4ビット値と付加ビットとRSTmマーカ情報との32
ビットワードへの結合(JPEGモード)を行う。付加
ビットは、復号部673が現シンボルに対する付加ビッ
トの開始位置を決定した後に、シフタ672によって出
力フォーマッタ676に転送される。また、出力フォー
マッタ673は、最終値ワードを予測するために1ワー
ド遅延を用いた2ディープFIFOバッファを備えてい
る。復号処理においては、(高速、低速どちらでも)シ
フタ672が入力ビットストリームの最後部の詰込みビ
ットを復号しようと試みることが生じる。このような状
態はシフタによって通常検出され、「不適切シンボル」
インタラプトを送出する替わりに、「強制終了」信号を
送出する。アクティブな「強制終了」信号が送出される
と、出力フォーマッタ676は最近の1復号ワード(F
IFOにまだ存在している)を「最後」として送出し、
復号ストリームに属していない更に最近のワードを削除
する。
The output formatter block 676 decodes an 8-bit value (stand-alone Huffman mode),
32 of the 4-bit value, the additional bit, and the RSTm marker information
Combine to bit words (JPEG mode). The additional bits are transferred to the output formatter 676 by the shifter 672 after the decoding unit 673 determines the start position of the additional bits for the current symbol. The output formatter 673 also includes a two deep FIFO buffer using one word delay to predict the final word. In the decoding process, it may occur that the shifter 672 (either fast or slow) attempts to decode the last stuffing bit of the input bitstream. Such a condition is usually detected by the shifter and may result in an "inappropriate symbol"
Instead of sending an interrupt, it sends a "forced end" signal. When an active "kill" signal is issued, output formatter 676 causes the most recent one decoded word (F
(Which is still in the IFO) as "last"
Delete more recent words that do not belong to the decoded stream.

【0222】図70におけるハフマン符号化器660の
詳細を図72に示す。ハフマン符号化器660はルック
アップテーブルを介してバイトデータをハフマンシンボ
ルにマッピングし、符号化部681、シフタ682、出
力フォーマッタ683、キャッシュからアクセスされる
ルックアップテーブルを備える。入力値685はデータ
キャッシュに格納された符号化テーブルを用いて符号化
部681において符号化される。テーブルとしては、符
号化すべき値ごとに対応コードを含むテーブルとコード
長を含むテーブルとの2つのテーブルが必要となるが、
シンボルを符号化する際にはキャッシュ230へのアク
セスは一度で良い。なお、JPEG圧縮においては、A
C係数とDC係数ごとに別のテーブルが必要となる。ま
た、サブサンプリングが実行されている場合には、サブ
サンプル要素と非サブサンプル要素ごとに別のテーブル
が必要となる。非JPEG圧縮では、2つのテーブル
(符号とサイズ)のみが必要である。符号はシフタ68
2によって処理されて、出力ストリームをビットレベル
で構成する。また、シフタ682は、必要時のバイトパ
ディング処理であるRSTmとEOIマーカ挿入処理を
も行う。そして、データバイトは出力フォーマッタ68
3に転送され、X’00バイトでの挿入処理、X’FF
バイトやマーカ符号に先立つFFバイトでの詰込処理、
パッキングされたバイトのフォーマット処理を行う。な
お、非JPEGモードでは、パッキングされたバイトの
フォーマット処理のみが行われる。
FIG. 72 shows details of Huffman encoder 660 in FIG. The Huffman encoder 660 maps byte data to Huffman symbols through a look-up table, and includes an encoding unit 681, a shifter 682, an output formatter 683, and a lookup table accessed from a cache. The input value 685 is encoded by the encoding unit 681 using the encoding table stored in the data cache. As a table, two tables are required: a table including a corresponding code for each value to be encoded and a table including a code length.
Access to the cache 230 may be performed only once when encoding a symbol. In JPEG compression, A
A separate table is required for each of the C coefficient and the DC coefficient. When subsampling is performed, a separate table is required for each subsample element and each non-subsample element. Non-JPEG compression requires only two tables (code and size). The sign is shifter 68
2 to form an output stream at the bit level. The shifter 682 also performs RSTm and EOI marker insertion processing, which are byte padding processing when necessary. Then, the data byte is output formatter 68
3 and the insertion processing at X'00 byte, X'FF
Filling with FF byte preceding byte or marker code,
Formats the packed bytes. In the non-JPEG mode, only the format processing of the packed bytes is performed.

【0223】X’FFバイトの挿入処理はシフター68
2によって行われるため、出力フォーマッタ683は
X’FFバイトを前に挿入するために、シフタ682か
らのどのバイトがマーカであるのかを知る必要がある。
これは、バイトに対応しているタグレジスタをシフター
682内に備えることによって行われる。バイト境界に
存在する各マーカは、マーカ挿入処理においてシフター
682によってタグ付けされる。結合処理部683はマ
ーカに先立つX”FF”バイト以降には挿入処理を行わ
ない。タグは、主シフトレジスタと同期してシフトされ
る。
The X'FF byte insertion processing is performed by the shifter 68.
2, the output formatter 683 needs to know which byte from the shifter 682 is a marker in order to insert the X'FF byte before.
This is done by providing a shift register 682 with a tag register corresponding to the byte. Each marker located at a byte boundary is tagged by a shifter 682 in the marker insertion process. The combination processing unit 683 does not perform insertion processing after the X “FF” byte preceding the marker. Tags are shifted in synchronization with the main shift register.

【0224】ハフマン符号化器はJPEG圧縮において
4あるいは8つのテーブルを用い、2つのテーブルを直
接ハフマン符号化に用いる。用いるテーブルを以下に示
す。 ハフマン符号化器において用いられるテーブル
The Huffman encoder uses four or eight tables in JPEG compression and uses two tables directly for Huffman encoding. The table used is shown below. Table used in Huffman encoder

【0225】[0225]

【表16】 [Table 16]

【0226】3.17.4 テーブルインデックシング ハフマンテーブルは、コプロセッサデータキャッシュ2
30において局所的に格納されている。データキャッシ
ュ230は、各ラインが8ワードから成る128ライン
の直接マッピングキャッシュとして構成される。キャッ
シュライン中の各ワードは独立にアドレスすることがで
き、この特徴をハフマン復号器が利用して同時に複数の
テーブルにアクセスする。テーブルは小さい(≦256
項目)なので、Obusの32ビットアドレスフィール
ドで複数のテーブルへのインデックスを含めることがで
きる。
3.17.4 Table Indexing The Huffman table contains the coprocessor data cache 2
At 30 it is stored locally. Data cache 230 is configured as a 128 line direct mapping cache, with each line consisting of 8 words. Each word in the cache line can be addressed independently, and this feature is used by the Huffman decoder to access multiple tables simultaneously. The table is small (≦ 256
Item), an index to a plurality of tables can be included in the Obus 32-bit address field.

【0227】上述のように、JPEG低速復号モードで
は、様々なハフマンテーブルを格納するためにデータキ
ャッシュが用いられる。データキャッシュのフォーマッ
トを以下に示す。 ハフマン/量子化テーブルのバンクアドレス
As described above, in the JPEG low-speed decoding mode, a data cache is used to store various Huffman tables. The format of the data cache is shown below. Huffman / Quantization table bank address

【0228】[0228]

【表17】 [Table 17]

【0229】JPEG符号化器241(図2)において
JPEG命令が実行されるのに先立ち、画像次元レジス
タ(PO_IDR)あるいは(RO_IDR)に適切な
画像幅値がセットされなければならない。他の命令とと
もに、命令の長さは処理すべき入力データ項目数に関係
する。これはいかなるパディングデータをも含み、用い
られているサブサンプリングオプションや色チャネル数
にも関連する。
Before the JPEG instruction is executed in the JPEG encoder 241 (FIG. 2), an appropriate image width value must be set in the image dimension register (PO_IDR) or (RO_IDR). As with other instructions, the length of the instruction is related to the number of input data items to be processed. This includes any padding data and is related to the subsampling options and the number of color channels used.

【0230】コプロセッサ224により出されたすべて
の命令は、生成する出力データ量を制限するために2つ
の機能を用いる。これらの機能は、入力と出力データの
サイズが異なるときにもっとも有効であり、特にJPE
G符号化/復号のように出力データサイズが未知である
ときに有効である。これらの機能は、出力データを書き
出すか、命令が適切に実行されたように見せながら単に
データを削除するかを決定する。デフォルトではこの機
能はオフになっており、RO_CFGレジスタ中の適切
なビットをイネーブルにすることでオンとなる。しか
し、JPEG命令ではこのビットをセットする特別なオ
プションが用意されている。なお、JPEG圧縮を用い
る際には、コプロセッサ224は出力データの「削除」
や「制限」機能をサポートすることが望ましい。
Every instruction issued by coprocessor 224 uses two functions to limit the amount of output data generated. These functions are most effective when the size of input and output data is different.
This is effective when the output data size is unknown as in G encoding / decoding. These functions determine whether to write out the output data or simply delete the data while making it appear that the instruction was properly executed. By default, this feature is off and is turned on by enabling the appropriate bit in the RO_CFG register. However, the JPEG instruction has a special option to set this bit. When JPEG compression is used, the coprocessor 224 deletes the output data.
And support for "restriction" functions.

【0231】図73を用いて、削除、制限処理を説明す
る。入力画像690は、ある高さ691とある幅692
とを有する。ここで、画像の一部分のみに関心があり、
他の部位は印刷するのには関係がないというような状況
がしばしば存在する。しかしながら、JPEG符号化シ
ステムでは8×8ピクセルブロックを対象とする。その
ため、画像の幅が8の倍数とならない場合や、MCU6
95を構成する関心部位領域がきちんと境界と一致しな
い場合が生じる。そこで、出力削除レジスタRO_CU
Tは、出力データストリームのはじめの部位696にお
いて削除する出力バイト数を決定する。また、出力制限
レジスタRO_LMTは、生成する最大出力バイト数を
決定する。この最大出力バイト数は、削除レジスタの結
果に基づいてメモリに書込まれないバイトをも含む。こ
のような処理により、最終出力バイト698以降のデー
タは出力されないような最終出力バイトを求めることが
できる。
The deletion and restriction processing will be described with reference to FIG. The input image 690 has a certain height 691 and a certain width 692
And Here, we are only interested in a part of the image,
There are often situations where other parts have nothing to do with printing. However, the JPEG encoding system targets 8 × 8 pixel blocks. Therefore, when the width of the image is not a multiple of 8, or when the MCU 6
There is a case where the region of interest constituting 95 does not exactly match the boundary. Therefore, the output deletion register RO_CU
T determines the number of output bytes to delete at the beginning 696 of the output data stream. The output limit register RO_LMT determines the maximum number of output bytes to be generated. This maximum number of output bytes includes those bytes that are not written to memory based on the result of the delete register. By such processing, it is possible to obtain a final output byte such that data after the final output byte 698 is not output.

【0232】JPEG復号器における削除、制限機能が
特に有効であるケースとして2つの場合がある。第1の
ケースは、図74に示すように、復号画像の1ストリッ
プ701の一部位700を抽出あるいは解凍する場合で
ある。第2のケースは、図75に示すように、全体の画
像714において、複数の完全なストリップ(例えば、
711、712、713)の抽出あるいは解凍が必要と
なる場合である。
There are two cases where the deletion and restriction functions in the JPEG decoder are particularly effective. The first case is a case where one portion 700 of one strip 701 of the decoded image is extracted or decompressed as shown in FIG. In the second case, as shown in FIG. 75, in the entire image 714, multiple complete strips (eg,
711, 712, and 713).

【0233】JPEG命令の命令フォーマットやフィー
ルド符号化を図76に示す。マイナーオプコードフィー
ルドの説明を以下に記す。 命令ワード−マイナーオプコードフィールド
FIG. 76 shows the instruction format and the field encoding of the JPEG instruction. The description of the minor opcode field is described below. Instruction word-minor opcode field

【0234】[0234]

【表18】 [Table 18]

【0235】3.17.5 データ符号化命令 コプロセッサ224は図2のJPEG符号化器の一部を
他の用途で用いることができる機能を備えることが望ま
しい。例えば、ハフマン符号化はJPEGのみならず他
の圧縮手法においても用いられる。また、階層的画像復
号のためのみにハフマン符号化部を制御するデータ符号
化命令が備わっていることも望ましい。更に、ランレン
クス符号化器/復号器、予測符号化器も同様の命令でも
って独立に用いられることができる。
3.17.5 Data Coding Instruction The coprocessor 224 preferably has a function that allows a part of the JPEG encoder shown in FIG. 2 to be used for other purposes. For example, Huffman coding is used not only in JPEG but also in other compression methods. It is also desirable that a data encoding instruction for controlling the Huffman encoding unit be provided only for hierarchical image decoding. Further, the run-lens encoder / decoder and prediction encoder can be used independently with similar instructions.

【0236】3.17.6 高速DCT装置 従来の図77に示したような離散コサイン変換(DC
T)装置では、まず8×8ブロックの列方向に対して1
次元DCTを実行し、次いで8×8ピクセルブロックの
行方向に更に1次元DCTすることにより、8×8ピク
セルブロックの2次元変換を実行する。このような装置
では、入力回路1096、算術回路1104、制御回路
1098、置換メモリ回路1090、出力回路1092
を一般に備える。
3.17.6 High-Speed DCT Apparatus A conventional discrete cosine transform (DC) as shown in FIG.
T) In the apparatus, first, 1 ×
Perform a two-dimensional transform of the 8 × 8 pixel block by performing a one-dimensional DCT in the row direction of the 8 × 8 pixel block, then performing a one-dimensional DCT in the row direction of the 8 × 8 pixel block. In such a device, an input circuit 1096, an arithmetic circuit 1104, a control circuit 1098, a replacement memory circuit 1090, an output circuit 1092
Is generally provided.

【0237】入力回路1096は8×8ブロックから8
ビットピクセルを受信する。入力回路1096は、中間
マルチプレクサ1100、1102を介して算術回路1
104に接続されている。算術回路1104は、8×8
ブロックの完全な列あるいは行に対して算術処理を行
う。制御回路1098は、他の全ての回路を制御し、D
CTアルゴリズムを実行する。算術回路の出力は、置換
メモリ1090、レジスタ1095、出力回路1092
に送られる。置換メモリは更にマルチプレクサ1100
に接続され、マルチプレクサ1100は次のマルチプレ
クサ1102に出力を送出する。また、マルチプレクサ
1102はレジスタ1094からのデータをも受信す
る。置換回路1090は8×8ブロックデータを列形式
で入力し、行形式でデータを出力する。出力回路109
2はピクセルデータの8×8ブロックに対するDCT係
数を出力する。
The input circuit 1096 converts 8 × 8 blocks to 8
Receive a bit pixel. The input circuit 1096 is connected to the arithmetic circuit 1 via the intermediate multiplexers 1100 and 1102.
104. The arithmetic circuit 1104 is 8 × 8
Perform arithmetic on the complete column or row of a block. The control circuit 1098 controls all other circuits,
Execute the CT algorithm. The output of the arithmetic circuit is output from the replacement memory 1090, the register 1095, the output circuit 1092.
Sent to The replacement memory further includes a multiplexer 1100
And the multiplexer 1100 sends the output to the next multiplexer 1102. Multiplexer 1102 also receives data from register 1094. The replacement circuit 1090 inputs 8 × 8 block data in a column format and outputs data in a row format. Output circuit 109
2 outputs DCT coefficients for 8 × 8 blocks of pixel data.

【0238】通常のDCT装置では、算術回路1104
がもっとも複雑であるため、算術回路1104の速度が
全体の装置速度を決定する。図77の算術回路1104
は、一般に算術処理を図78を用いて説明するように複
数の処理段階に分割して処理を行う。従って、各処理段
階1144、1148、1152、1156を加算器や
乗算器などの通常の資源を用いて実行するような単一回
路が用いられる。このような算術回路1104では、単
一の共通回路が回路1104の種々の処理段階を実行す
るために用いられるため、最適速度に比べて速度が遅く
なるという欠点を有する。また、中間結果を蓄える格納
手段もこれに含まれる。回路のクロックサイクル時間は
少なくとも最も遅い回路段階以上でなければならないた
め、全体の処理に要する時間は各処理段階に要する時間
の和以上となり得る。
In a normal DCT device, the arithmetic circuit 1104
Is the most complex, the speed of the arithmetic circuit 1104 determines the overall device speed. Arithmetic circuit 1104 in FIG. 77
Generally performs arithmetic processing by dividing arithmetic processing into a plurality of processing steps as described with reference to FIG. Thus, a single circuit is used that performs each processing step 1144, 1148, 1152, 1156 using normal resources such as adders and multipliers. Such an arithmetic circuit 1104 has the disadvantage that the speed is slower than the optimal speed because a single common circuit is used to execute the various processing stages of the circuit 1104. This also includes storage means for storing intermediate results. Since the clock cycle time of the circuit must be at least as long as the slowest circuit stage, the time required for the entire process can be equal to or greater than the sum of the time required for each processing stage.

【0239】図78は、図77の装置における通常の算
術データパスを示したものであり、DCTを4処理段階
で行う処理の一部を示している。なお、本図は実際の実
装を示したものでなく、機能を示したものである。4処
理段階1144、1148、1152、1156のそれ
ぞれは、単一の再構成可能な回路として構築される。サ
イクルごとに、1次元DCTの4処理段階1144、1
148、1152、1156のそれぞれが再構成され
る。また、この回路においては、4処理段階1144、
1148、1152、1156のそれぞれが共通の資源
(加算器や乗算器など)のプールを用いることで、ハー
ドウェア規模を小さくしてえる。
FIG. 78 shows a normal arithmetic data path in the apparatus shown in FIG. 77, and shows a part of the processing for performing the DCT in four processing stages. Note that this drawing does not show actual implementation but shows functions. Each of the four processing stages 1144, 1148, 1152, 1156 is built as a single reconfigurable circuit. 4 cycles of 1D DCT 1144, 1
Each of 148, 1152, 1156 is reconfigured. Also, in this circuit, four processing steps 1144,
Each of 1148, 1152, and 1156 uses a pool of common resources (such as an adder and a multiplier), so that the hardware scale can be reduced.

【0240】しかしながら、この回路の欠点は速度が最
適になっていないことである。4処理段階1144、1
148、1152、1156はそれぞれが加算器や乗算
器の同一プールから構成されている。そのため、クロッ
クピリオドは最も遅い処理段階によって決定される(こ
の例ではブロック1144の20ns)。入力と出力マ
ルチプレクサ1146と1154の遅延(それぞれ2n
s)と、フリップフロップ1150の遅延(3ns)を
足すと、全体の遅延が27nsとなる。従って、このD
CT構成では最速27nsで動作する。
However, a disadvantage of this circuit is that the speed is not optimal. 4 processing steps 1144, 1
Each of 148, 1152 and 1156 is composed of the same pool of adders and multipliers. Thus, the clock period is determined by the slowest processing stage (in this example, 20 ns of block 1144). Delay of input and output multiplexers 1146 and 1154 (2n each
s) and the delay of the flip-flop 1150 (3 ns), the total delay is 27 ns. Therefore, this D
In the CT configuration, it operates at a maximum speed of 27 ns.

【0241】パイプライン形式のDCT構成もよく知ら
れている。この構成の欠点は、多量のハードウェアを必
要とする点である。スループットの観点では本発明の構
成ではパイプライン構成に及ばないものの、現在のほと
んどのDCT構成と比べてきわめて良好な性能/サイズ
特性や速度特性を示す。図79は、ピクセルデータが入
力回路1126に入力され、8ビットピクセルデータの
列を格納するようなJPEG符号化器(図2)において
用いられる好適な離散コサイン変換部の構成を示した図
である。置換メモリは、2次元離散コサイン変換の2回
目のパスを実施するために、列形式データを行形式デー
タに変換する。入力回路1126と置換メモリ1118
からのメモリは、マルチプレクサ1124においてマル
チプレキシングされ、出力データが算術回路1122に
送られる。算術回路1122の結果は、2回目のパスの
終了後出力回路1120に送られる。制御回路1116
は、離散コサイン変換装置中のデータの流れを制御す
る。
The DCT configuration of the pipeline type is well known. The disadvantage of this configuration is that it requires a lot of hardware. Although the configuration of the present invention does not reach the pipeline configuration from the viewpoint of throughput, it exhibits extremely good performance / size characteristics and speed characteristics as compared with most current DCT configurations. FIG. 79 is a diagram showing a configuration of a suitable discrete cosine transform unit used in a JPEG encoder (FIG. 2) in which pixel data is input to an input circuit 1126 and stores a column of 8-bit pixel data. . The permutation memory converts the columnar data to row-format data to perform the second pass of the two-dimensional discrete cosine transform. Input circuit 1126 and replacement memory 1118
Are multiplexed in a multiplexer 1124 and the output data is sent to an arithmetic circuit 1122. The result of the arithmetic circuit 1122 is sent to the output circuit 1120 after the end of the second pass. Control circuit 1116
Controls the data flow in the discrete cosine transform device.

【0242】離散コサイン変換処理の第1回目のパスで
は、変換すべき画像の列データあるいはピクセルデータ
に逆変換される変換画像係数が、入力回路1126に送
られる。このパスでは、マルチプレクサ1124は制御
回路1116によって設定され、入力回路1126から
算術回路1122にデータが送られる。図80は、算術
回路1122の構成をより詳細に示した図である。フォ
ワード離散コサイン変換の実行の場合には、フォワード
離散コサイン変換を実行するフォワード回路1138の
結果がマルチプレクサ1124において選択される。こ
こで、マルチプレクサ1124は制御回路1116によ
って設定される。逆離散コサイン変換の実行の場合に
は、制御回路1126の設定に基づいて、逆回路114
0からの出力がマルチプレクサ1142において選択さ
れる。1回目のパスでは、各列ベクトルが算術回路11
22(制御回路1166によって適切に設定される)に
よって処理された後、当該ベクトルが置換メモリ111
8に書込まれる。8×8ブロック中のすべての8列ベク
トルの処理が終わり、置換メモリ1118に書込まれる
と、離散コサイン変換の2回目のパスが開始される。
In the first pass of the discrete cosine transform processing, a transformed image coefficient to be inversely transformed into column data or pixel data of an image to be transformed is sent to the input circuit 1126. In this path, the multiplexer 1124 is set by the control circuit 1116, and data is sent from the input circuit 1126 to the arithmetic circuit 1122. FIG. 80 is a diagram showing the configuration of the arithmetic circuit 1122 in more detail. In the case of executing the forward discrete cosine transform, the result of the forward circuit 1138 that executes the forward discrete cosine transform is selected in the multiplexer 1124. Here, the multiplexer 1124 is set by the control circuit 1116. In the case of performing the inverse discrete cosine transform, the inverse circuit 114 is set based on the setting of the control circuit 1126.
The output from 0 is selected in multiplexer 1142. In the first pass, each column vector is stored in the arithmetic circuit 11
22 (set appropriately by the control circuit 1166), the vector is
Written in 8. When all eight column vectors in the 8 × 8 block have been processed and written to the permutation memory 1118, the second pass of the discrete cosine transform is started.

【0243】フォワードあるいは逆離散コサイン変換の
2回目のパスでは、行形式のベクトルが置換メモリ11
18から読み出され、マルチプレクサ1124を介して
算術回路1122に送られる。このパスでは、マルチプ
レクサ1124は入力回路1136からのデータを無視
し、置換メモリ1118からの行ベクトルデータを算術
回路1122に転送するように、制御回路によって設定
される。算術回路1122中のマルチプレクサ1142
は、逆回路1140からの結果データを算術回路112
2の出力に送る。算術回路1122からの結果が得られ
た時点で、制御回路1116からの指令に基づいて出力
回路1120は結果を取り込み、以降の時点で出力す
る。
In the second pass of the forward or inverse discrete cosine transform, the vector in row format is
18 and sent to the arithmetic circuit 1122 via the multiplexer 1124. In this pass, the multiplexer 1124 is set by the control circuit to ignore the data from the input circuit 1136 and to transfer the row vector data from the replacement memory 1118 to the arithmetic circuit 1122. Multiplexer 1142 in arithmetic circuit 1122
Converts the result data from the inverse circuit 1140 into the arithmetic circuit 112
Send to the output of 2. When the result from the arithmetic circuit 1122 is obtained, the output circuit 1120 takes in the result based on a command from the control circuit 1116 and outputs the result at a subsequent time.

【0244】算術回路1122は、中間結果を格納する
記憶部位を持たないという点で、組み合わせ回路となっ
ている。制御回路1116は、データが入力回路113
6からマルチプレクサ1124や算術回路1122を介
して出力されるまでに要する時間を把握しているため、
算術回路1122の出力からの結果ベクトルを出力回路
1120に取り込む時点を正確に指示することができ
る。算術回路1122において中間記憶を持たない利点
は、中間記憶要素との間でのデータのやり取りに必要な
時間を省くことができるとともに、算術回路1122を
データが通過するのに要する時間が内部処理段すべての
和となり、最大の時間を要する処理段のN倍(従来の離
散コサイン変換装置のように)にはならないことが挙げ
られる。なお、ここで、Nは算術回路中の処理段数であ
る。
Arithmetic circuit 1122 is a combinational circuit in that it does not have a storage section for storing intermediate results. The control circuit 1116 outputs data to the input circuit 113.
Since the time required from 6 to the output from the multiplexer 1124 and the arithmetic circuit 1122 is known,
The time at which the result vector from the output of the arithmetic circuit 1122 is taken into the output circuit 1120 can be accurately indicated. The advantage of having no intermediate storage in the arithmetic circuit 1122 is that the time required for exchanging data with the intermediate storage element can be saved, and the time required for data to pass through the arithmetic circuit 1122 is reduced by the internal processing stage. That is, the sum of all of them does not become N times the processing stage requiring the longest time (as in the conventional discrete cosine transform device). Here, N is the number of processing stages in the arithmetic circuit.

【0245】図81は、全体の遅延が単に4つの処理段
1158、1160、1162、1164の和、20n
s+10ns+12ns+15ns=57nsとなり、
図78の回路よりも高速となることを示している。この
ような回路によれば、全体のシステムクロックサイクル
を短くすることができる。図81の回路において、結果
を得るのに4クロックサイクルが必要であるとすると、
全体のDCTシステムにおいて最小実行時間は57/4
ns(14.25ns)となり、図78ではDCTクロ
ックサイクルが27nsとせざるを得ないことを鑑みる
と大幅な性能向上となることがわかる。
FIG. 81 shows that the total delay is simply the sum of four processing stages 1158, 1160, 1162, 1164, 20n
s + 10 ns + 12 ns + 15 ns = 57 ns,
It shows that the speed is higher than that of the circuit of FIG. According to such a circuit, the entire system clock cycle can be shortened. Assuming that four clock cycles are required to obtain the result in the circuit of FIG.
The minimum execution time for the entire DCT system is 57/4
ns (14.25 ns), and in FIG. 78, it can be seen that the performance is greatly improved in consideration of the fact that the DCT clock cycle must be 27 ns.

【0246】本DCT装置の実際の実行時においては、
Yukihiro Arai,Takeshi Agu
i,Masayuki NakajimaらによるTh
eTransactions of the IEIC
E,vol,E71,no.11,1988年11月の
ページ1095に掲載された論文「画像のための高速D
CT−SQ手法」で示されたDCTアルゴリズムを用い
ることもできる。このアルゴリズムをハードウェアで実
行することで、本DCT装置中の算術回路1122に容
易に配置することができる。同様に、他のDCTアルゴ
リズムを算術回路1122中にハードウェアとして配置
することも可能である。
At the time of actual execution of the present DCT apparatus,
Yukihiro Arai, Takeshi Agu
i, Th by Masayuki Nakajima et al.
eTransactions of the IEIC
E, vol, E71, no. 11, a paper "High-speed D for Images" published on page 1095 of November 1988.
The DCT algorithm described in “CT-SQ method” can also be used. By executing this algorithm by hardware, it can be easily arranged in the arithmetic circuit 1122 in the DCT device. Similarly, other DCT algorithms can be implemented as hardware in arithmetic circuit 1122.

【0247】3.17.7 ハフマン復号器 以下の実施例は、種々の長さのビットフィールドがイン
ターリーブされた可変長符号に対する手法と装置に関す
るものである。特に、本発明の実施例は、可変長符号化
データの効率の良い、高速な、単一処理段(クロックサ
イクル)の復号を提供するものである。ここで、可変長
符号化されていず整列されているようなデータとは、既
に別の前処理ブロックにおいて符号化データストリーム
から削除されているものとする。更に、削除されたバイ
ト整列データの位置情報は、復号されるデータと同時に
復号器の出力に送られる。また、前処理された入力デー
タ中に残っているバイト整列、非可変長符号化ビットフ
ィールドの高速な検出、並びに削除をも提供するもので
ある。
3.17.7 Huffman Decoder The following embodiment relates to a method and apparatus for a variable length code in which bit fields of various lengths are interleaved. In particular, embodiments of the present invention provide for efficient, fast, single processing stage (clock cycle) decoding of variable length encoded data. Here, it is assumed that data that is not variable-length coded but is aligned has already been deleted from the coded data stream in another preprocessing block. Further, the position information of the deleted byte-aligned data is sent to the output of the decoder at the same time as the data to be decoded. It also provides for alignment of bytes remaining in the preprocessed input data, fast detection of non-variable length coded bit fields, and elimination.

【0248】本発明の好適な実施例では、マーカ符号間
のクロックサイクルごとに1ハフマンシンボルといった
レートで、JPEG符号化データを復号することのでき
る高速ハフマン復号器を備えることが望ましい。これ
は、別の前処理ブロックにおいて、入力データからバイ
ト整列されハフマン符号化されていないマーカヘッダ、
マーカ符号、挿入バイトを分離し、除去する手法によっ
て実現できる。バイト整列されたデータが除去される
と、入力データはデータシフト組み合わせ回路ブロック
に送られ、データ復号レジスタの連続的な挿入処理を行
い、復号部位にデータが送られる。もとの入力データか
ら除去されたマーカの位置はマーカシフトブロックに送
られ、データシフトブロックにおいてシフトされた入力
データと同時にマーカ位置ビットのシフトが行われる。
In a preferred embodiment of the present invention, it is desirable to have a high-speed Huffman decoder capable of decoding JPEG encoded data at a rate of one Huffman symbol per clock cycle between marker codes. This includes, in another preprocessing block, a marker header that is byte-aligned from the input data and not Huffman coded,
This can be realized by a method of separating and removing the marker code and the insertion byte. When the byte-aligned data is removed, the input data is sent to the data shift combination circuit block to perform a continuous insertion process of the data decoding register, and the data is sent to the decoding part. The position of the marker removed from the original input data is sent to the marker shift block, and the marker position bits are shifted simultaneously with the input data shifted in the data shift block.

【0249】復号部は、データ復号レジスタから入力さ
れた符号化ビットフィールドを組合せ回路で復号する。
復号部の出力は、復号値(v)と入力符号の実際の長さ
(m)である。ここで、mはn以下である。また、可変
長ビットフィールドの長さ(a)も出力する。ここで、
aは0以上の値である。可変長ビットフィールドはハフ
マン符号化されていないため、すぐにハフマン符号化さ
れる。復号部の入力中の長さnのビットフィールドは実
際の符号以上の長さを有する。復号部では、実際のコー
ド長(m)を決定し、他のビット(a)の長さとともに
制御ブロックに転送する。制御ブロックはシフト値(a
+m)を決定し、データ/マーカシフトブロックを起動
して次の復号サイクルに備えて入力データをシフトす
る。
The decoding section decodes the coded bit field input from the data decoding register by the combination circuit.
The output of the decoder is the decoded value (v) and the actual length (m) of the input code. Here, m is n or less. It also outputs the length (a) of the variable length bit field. here,
a is a value of 0 or more. Since the variable length bit field is not Huffman coded, it is immediately Huffman coded. The bit field of length n in the input of the decoding unit has a length greater than the actual code. The decoding unit determines the actual code length (m) and transfers it to the control block together with the length of the other bits (a). The control block determines the shift value (a
+ M) and activates the data / marker shift block to shift the input data in preparation for the next decoding cycle.

【0250】本発明の装置では、復号値、入力符号の実
際の長さ、ハフマン符号化されていないビットフィール
ドの長さを所定の時間内に出力するものであれば、RO
M,RAM,PLAなどのいかなる組合せ回路の復号部
を用いることができる。本実施例では、復号部は、JP
EG標準で規定されているように予測符号化DC係数値
やACランレンクス値を出力する。また、JPEG標準
で規定されているように、復号値と同時に入力データか
ら除去されたハフマン符号化されていないビットフィー
ルドは、DCとAC係数の値を決定する付加ビットを示
す。データ復号レジスタ中のデータから除去されたハフ
マン符号化されていないビットフィールドの他の種別と
しては、JPEG標準に規定されているようにもとの入
力データストリーム中のバイト整列マーカに先立つパデ
ィングビットがある。これらのビットは、制御ブロック
がデータレジスタのパディング領域の内容をチェックす
ることによって検出される。パディング領域はデータレ
ジスタのk最大ビットから成り、マーカレジスタの最大
ビット中のマーカビットの存在によって示される。パデ
ィング領域中のすべてのビットが同一(JPEG標準で
は1)であれば、パディングビットとして判断され、復
号されることなくデータレジスタから除去される。そし
て、次の復号サイクルに向けて、データとマーカレジス
タの内容は更新される。
In the apparatus of the present invention, if the decoded value, the actual length of the input code, and the length of the bit field not subjected to Huffman coding are output within a predetermined time, RO
A decoding unit of any combinational circuit such as M, RAM, and PLA can be used. In the present embodiment, the decoding unit
It outputs predictive coded DC coefficient values and AC run length values as specified in the EG standard. Further, as specified in the JPEG standard, the non-Huffman-coded bit field removed from the input data at the same time as the decoded value indicates additional bits that determine the values of the DC and AC coefficients. Another type of non-Huffman coded bit field removed from the data in the data decoding register is a padding bit preceding the byte alignment marker in the original input data stream as specified in the JPEG standard. is there. These bits are detected by the control block checking the contents of the padding area of the data register. The padding area consists of the k most significant bits of the data register and is indicated by the presence of a marker bit in the largest bit of the marker register. If all bits in the padding area are the same (1 in the JPEG standard), they are determined as padding bits and are removed from the data register without being decoded. Then, the data and the contents of the marker register are updated for the next decoding cycle.

【0251】装置の実施例では、本発明の好適な実施例
の要求に応じて、出力データのフォーマット処理を行う
出力ブロックを備える。出力ブロックは、JPEGにお
ける付加ビットなどのように、対応する可変長符号化さ
れていないビットフィールドや、JPEGにおけるマー
カのように整列された入力バイトや符号化されていない
ビットフィールドの位置を示す信号とともに、復号値を
出力する。
The apparatus embodiment includes an output block for performing output data format processing as required by the preferred embodiment of the present invention. The output block is a signal indicating the position of a corresponding non-variable-length coded bit field such as an additional bit in JPEG, an input byte aligned as a marker in JPEG, or an uncoded bit field. And outputs the decoded value.

【0252】JPEG符号化器241(図2)によって
復号されたデータは、JPEGコンパチブルであり、
「付加ビット」と呼ばれる可変長符号化されていないビ
ットフィールド、「パディングフィールド」と呼ばれる
可変長符号化されていないニットフィールド、「マー
カ」「挿入バイト」「詰込バイト」と呼ばれる固定長
の、バイト整列された、符号化されていないビットフィ
ールドがインタリーブされた可変長ハフマン符号化コー
ドから構成される。図82に代表的な入力データを示
す。
Data decoded by the JPEG encoder 241 (FIG. 2) is JPEG compatible,
Variable length uncoded bit fields called "additional bits", variable length uncoded knit fields called "padding fields", fixed lengths called "markers", "insertion bytes", and "stuffing bytes" The byte-aligned, uncoded bit field consists of an interleaved variable length Huffman coded code. FIG. 82 shows typical input data.

【0253】JPEG符号化器241のハフマン復号器
中の全体構成やデータフローを図83と図84に示す。
図83は、JPEGデータのハフマン復号器の構成を詳
細に示している。ストリッパ1171はマーカ符号(符
号FFXXhex,XXは非零)を除去し、バイト(符
号FFhex)を挿入し、バイト(符号Ffhexに続
く符号00hex)を詰込む。これらはすべて入力デー
タのバイト整列された要素であり、32ビットワードと
してストリッパに送られる。処理すべき第1ワードの最
大ビットは、入力ビットストリームの先頭になる。スト
リッパ1171では、バイト整列されたビットフィール
ドが、ハフマン符号の復号処理が復号器のダウンストリ
ーム部位において実際に行われる前に、入力データから
除去される。
FIGS. 83 and 84 show the entire configuration and data flow in the Huffman decoder of the JPEG encoder 241. FIG.
FIG. 83 shows the configuration of the Huffman decoder for JPEG data in detail. The stripper 1171 removes the marker code (code FFXXhex, XX is non-zero), inserts a byte (code FFhex), and fills the byte (code 00hex following the code Ffhex). These are all byte-aligned elements of the input data and are sent to the stripper as 32-bit words. The largest bit of the first word to be processed is at the beginning of the input bit stream. In the stripper 1171, the byte-aligned bit field is removed from the input data before the Huffman code decoding process is actually performed in the downstream part of the decoder.

【0254】入力データはストリッパ1171にクロッ
クサイクルに1つごとの32ビットワードとして入力さ
れる。入力バイト1211を0から3への番号付けを図
85に示す。番号(i)のバイトが挿入バイト、詰込バ
イト、あるいはマーカであるため除去されたとすると、
番号(i−1)から0の残りのバイトがストリッパ11
71の出力で左にシフトされ、番号(i)を1減らす。
この際、バイト0は「無関係な」バイトとなる。ストリ
ッパ1171から出力されたバイトの有効性は、図85
に示されている別の出力タグ1212によって符号化さ
れる。ストリッパ1171によって除去されないバイト
はストリッパにおいて左詰めで出力される。出力中の各
バイトは、対応するバイトが有効(ストリッパ1171
を通過する)か、無効(ストリッパ1171で除去され
る)か、有効かつマーカの後部か、を示すタグが付加さ
れる。タグ1212は、データシフタを通してデータレ
ジスタ1182へのデータバイトのロードを制御すると
ともに、マーカシフタを通してマーカレジスタ1183
へのマーカ位置のロードを制御する。入力ワードから1
バイト以上削除された場合でも同様の手法が実行され
る。すなわち、すべての残りの有効バイトが左詰めさ
れ、対応する出力タグが出力バイトの有効性を示す。図
85には、種々の入力バイトの組み合わせに対する出力
バイトと出力タグの例1213が示されている。
The input data is input to stripper 1171 as one 32-bit word in each clock cycle. FIG. 85 shows the numbering of the input bytes 1211 from 0 to 3. If the byte with number (i) is removed because it is an insertion byte, a padding byte, or a marker,
The remaining bytes from the number (i-1) to 0 are the stripper 11
At the output of 71, it is shifted left and decrements the number (i) by one.
At this time, byte 0 becomes an “irrelevant” byte. The validity of the byte output from the stripper 1171 is shown in FIG.
Are encoded by another output tag 1212 shown in FIG. Bytes not removed by stripper 1171 are output left-justified in the stripper. For each byte being output, the corresponding byte is valid (stripper 1171).
), Invalid (removed by the stripper 1171), or valid and at the rear of the marker. Tag 1212 controls the loading of data bytes into data register 1182 through the data shifter and marker register 1183 through the marker shifter.
Control the loading of marker positions into 1 from input word
A similar technique is performed when more than one byte is deleted. That is, all remaining valid bytes are left justified, and the corresponding output tag indicates the validity of the output byte. FIG. 85 shows examples 1213 of output bytes and output tags for various combinations of input bytes.

【0255】図83において、プレシフタとポストシフ
タブロック1172、1173、1180、1181の
役割は、データレジスタ1182とマーカレジスタ11
83に十分な空き領域がある場合にデータレジスタとマ
ーカレジスタとに連続的にデータをロードすることであ
る。データシフタとマーカシフタブロックは、プレシフ
タブロックとポストシフタブロックとから成るが、それ
ぞれは同一であり同様に制御される。差異は、データシ
フタがストリッパ1171からのデータを処理するのに
対し、マーカシフタはタグのみを処理し、マーカ位置を
復号されたハフマン値と同時に復号器に出力する点にあ
る。ポストシフタ1180、1181の出力は、図83
に示されているように対応するレジスタ1182、11
83に直接転送される。
In FIG. 83, the roles of the pre-shifter and post-shifter blocks 1172, 1173, 1180 and 1181 are as follows.
That is, when there is a sufficient free area in the data register 83, data is continuously loaded into the data register and the marker register. The data shifter and the marker shifter block are composed of a pre-shifter block and a post-shifter block, which are identical and controlled similarly. The difference is that the data shifter processes the data from the stripper 1171 while the marker shifter processes only the tags and outputs the marker positions to the decoder at the same time as the decoded Huffman values. The outputs of the post shifters 1180 and 1181 are shown in FIG.
Corresponding registers 1182, 11 as shown in FIG.
83 directly.

【0256】図86にもデータプレシフタ1172が示
されているが、データプレシフタ1172は、ストリッ
パ1171からのデータに32個のゼロを最小ビット1
251に付加し、64ビットにデータを拡張する。次い
で、拡張データは64ビット幅のバレルシフタ1252
で右にデータレジスタ1182に現在存在するビット数
だけシフトされる。この際、ビット数は、データ118
2、マーカ1183レジスタ内にどれだけの有効ビット
が存在するかを常に把握している制御ロジック1185
から与えられる。そして、バレルレジスタ1252は、
64ビットを、64個の2×1基本マルチプレクサ12
54から成るマルチプレクサブロック1253に転送す
る。各基本2×1マルチプレクサ1254は、バレルシ
フタ1252からの1ビットとデータレジスタ1182
からの1ビットを入力とする。データレジスタ中のビッ
トが有効であるときにデータレジスタビットを出力す
る。一方、無効である場合には、バレルシフタ1252
のビットを出力する。すべての基本マルチプレクサ12
54への制御信号は、図86ならびに図87におけるレ
ジスタ1223のプレシフタ制御ビット0...5とし
て示されているように制御ブロックのシフト制御1信号
より復号される。基本マルチプレクサ1254の出力は
バレルシフタ1255に送られ、図86に示されるよう
に5ビット制御信号シフト制御2より与えられるビット
数分左にシフトされる。これらのビットは、データレジ
スタ1182において現データの復号によって使用され
るビット数を示したものであり、現復号ハフマンコード
長と続く付加ビット数、あるいはパディングビットが検
出されていれば削除されるパディングビット数、あるい
はデータレジスタ1182中の有効ビット数が削除され
るビット数以下であれば0を足したものとなる。このよ
うにして、バレルシフタ1255から出力されるデータ
には、単一復号サイクルの後にデータレジスタ1182
にロードされる新しいデータが含まれることになる。デ
ータレジスタ1182の内容は、最大ビットが復号され
るためにレジスタからシフトアウトされ、ストリッパ1
171から0、8、16、24、32ビットがデータレ
ジスタ1182に付加されるといった具合に変更され
る。データレジスタ1182に復号できるだけの十分な
ビットが存在しない場合には、ストリッパ1171から
のデータが存在すれば現サイクルにおいてロードされ
る。現サイクルにおいてストリッパ1171からのデー
タが存在しない場合には、データレジスタ1182から
の復号ビットは、十分なビット数であれば削除され、十
分なビット数でなければデータレジスタ1182の内容
は変更されない。
FIG. 86 also shows data pre-shifter 1172. Data pre-shifter 1172 adds 32 zeros to the minimum bit 1 in the data from stripper 1171.
251 to extend the data to 64 bits. Next, the extension data is a barrel shifter 1252 having a width of 64 bits.
To the right by the number of bits currently in the data register 1182. At this time, the number of bits is
2. Control logic 1185 that keeps track of how many valid bits are in the marker 1183 register
Given by And the barrel register 1252
64 bits are divided into 64 2 × 1 basic multiplexers 12
54 to the multiplexer block 1253. Each basic 2 × 1 multiplexer 1254 includes one bit from barrel shifter 1252 and data register 1182.
1 bit as input. The data register bit is output when the bit in the data register is valid. On the other hand, if invalid, the barrel shifter 1252
The bits of are output. All basic multiplexers 12
The control signal to register 54 is the pre-shifter control bit 0. . . 5 is decoded from the shift control 1 signal of the control block. The output of basic multiplexer 1254 is sent to barrel shifter 1255, and is shifted to the left by the number of bits given by 5-bit control signal shift control 2, as shown in FIG. These bits indicate the number of bits used for decoding the current data in the data register 1182, and include the current decoded Huffman code length followed by the number of additional bits, or padding to be deleted if padding bits are detected. If the number of bits or the number of valid bits in the data register 1182 is equal to or less than the number of bits to be deleted, 0 is added. Thus, the data output from barrel shifter 1255 contains data register 1182 after a single decode cycle.
Will contain the new data to be loaded. The contents of data register 1182 are shifted out of the register so that the most significant bit is decoded and stripper 1
From 171, 0, 8, 16, 24, and 32 bits are added to the data register 1182 and so on. If there are not enough bits in the data register 1182 to be decoded, the data from the stripper 1171, if present, is loaded in the current cycle. If there is no data from the stripper 1171 in the current cycle, the decoded bits from the data register 1182 are deleted if the number of bits is sufficient, and if not, the contents of the data register 1182 are not changed.

【0257】マーカプレシフタ1173、ポストシフタ
1181、マーカレジスタ1183は、データプレシフ
タ1172、データポストシフタ1180、データレジ
スタ1182とそれぞれ同一の部位である。部位117
3、1181、1183内のデータフローならびにこれ
らの部位間のデータフローも、部位1172、118
0、1182間でのデータフローと同一である。同様の
制御信号が制御部1185より双方の部位セットに送ら
れる。これらの部位の差異は、マーカプレシフタ117
3とデータプレシフタ1172の入力データ種別と、マ
ーカレジスタ1183とデータレジスタ1182の内容
がどのように用いられるか、という点である。図88に
示すように、ストリッパ1171からのタグ1261は
8ビットワードとして入力され、データレジスタ118
2に向かうデータバイトごとに2ビット割り当てられて
いる。図85に示した符号化手法によれば、有効かつマ
ーカ後部であるバイトを示す2ビットタグの最大ビット
は1である。ストリッパ1171から同時に送られる4
つのタグの最大ビット位置のみが、マーカプレシフタ1
173の入力1262として送出される。このようにし
て、マーカプレシフタへの入力には、はじめに符号化さ
れたデータビットでマーカの後部に位置する位置を示す
1がセットされたビットが存在することになる。同時
に、これらはデータレジスタ1182中でマーカが後に
続くはじめに符号化されたデータビットの位置をマーク
している。マーカレジスタ1183中のマーカ位置ビッ
トとデータレジスタ1182中のデータビットの同期的
な振る舞いによって、制御ブロック1185はパディン
グビットの検出や削除を行うことができるとともに、復
号データと同時にマーカ位置を復号器の出力に送出する
ことができる。上述の通り、2つのプレシフタ(データ
1172とマーカ1173)、ポストシフタ(データ1
180とマーカ1181)、レジスタ(データ1182
とマーカ1183)は同一の制御信号を与えられている
ため、完全な並列、同期動作が可能となる。
The marker pre-shifter 1173, post-shifter 1181 and marker register 1183 are the same as the data pre-shifter 1172, data post-shifter 1180 and data register 1182, respectively. Part 117
3, 1181 and 1183, as well as the data flow between these parts,
0, 1182. A similar control signal is sent from the control unit 1185 to both sets of parts. The difference between these sites is due to the marker pre-shifter 117.
3 and the input data type of the data pre-shifter 1172, and how the contents of the marker register 1183 and the data register 1182 are used. As shown in FIG. 88, the tag 1261 from the stripper 1171 is input as an 8-bit word, and the data register 118
Two bits are allocated for each data byte going to 2. According to the encoding method shown in FIG. 85, the maximum bit of the 2-bit tag indicating the byte that is valid and is the rear portion of the marker is 1. 4 sent simultaneously from stripper 1171
Only the maximum bit position of one tag is
173 is sent out as an input 1262. In this way, the input to the marker pre-shifter has a bit set to 1 indicating the position located at the rear of the marker in the data bit encoded first. At the same time, they mark the position of the first encoded data bit followed by a marker in data register 1182. The synchronous behavior of the marker position bits in the marker register 1183 and the data bits in the data register 1182 allows the control block 1185 to detect and remove padding bits and to simultaneously decode the marker position with the decoded data. Can be sent to output. As described above, two pre-shifters (data 1172 and marker 1173) and a post-shifter (data 1
180 and marker 1181), register (data 1182)
And the marker 1183) are supplied with the same control signal, so that complete parallel and synchronous operations are possible.

【0258】復号部1184(図89にも示されてい
る)は、データレジスタ1182の最大16ビットを入
力し、復号されたハフマン値、復号される現在の入力符
号長、入力符号に続く付加ビット長(復号値の関数とな
る)を抽出するための組み合わせ回路復号部1184に
送られる。付加ビット長は、対応する前のハフマンシン
ボルが復号された時点で明らかになり、次のハフマンシ
ンボルの開始位置となる。従って、クロックサイクルご
とに1つの値が復号される速度を維持する場合には、ハ
フマン値の復号を組み合わせ回路ブロックで行わなけれ
ばならない。復号部は、図89に示すように、16ビッ
トトークンをデータレジスタ1182から入力し、ハフ
マン値(8ビット)、対応するハフマン符号化されたシ
ンボル(4ビット)、付加ビット(4ビット)を生成す
るような組み合わせ回路ブロックとしてハードワイヤさ
れた4つのPLAスタイルの復号テーブルを備えること
が望ましい。
A decoding unit 1184 (also shown in FIG. 89) inputs a maximum of 16 bits of the data register 1182, and outputs a decoded Huffman value, a current input code length to be decoded, and additional bits following the input code. The length (which is a function of the decoded value) is sent to the combinational circuit decoding unit 1184 for extracting the length. The additional bit length becomes apparent when the corresponding previous Huffman symbol is decoded, and becomes the start position of the next Huffman symbol. Therefore, to maintain the rate at which one value is decoded every clock cycle, Huffman value decoding must be performed in a combinational circuit block. As shown in FIG. 89, the decoding unit receives the 16-bit token from the data register 1182 and generates a Huffman value (8 bits), a corresponding Huffman-coded symbol (4 bits), and additional bits (4 bits). It is desirable to have four PLA style decoding tables hardwired as a combinational circuit block that performs the following.

【0259】パディングビットの削除処理は、制御部1
185の一部であるパディングビットの復号部において
データレジスタ1182中でパディングビット列が検出
された際の実際の復号処理において行われる。図90に
パディングビットの復号部を示す。マーカレジスタ11
83、1242の8最大ビット中にマーカ位置ビットが
存在するかどうかが調べられる。マーカ位置ビットが存
在した場合には、マーカレジスタ1242中のマーカビ
ットに先立つビットに対応するデータレジスタ118
2、1241中のすべてのビットが現在のパディング領
域として判断される。現在のパディング領域の内容は、
パディングビット検出部1243によってすべて1であ
るかどうかがチェックされる。現パディング領域のすべ
てのビットが1である場合には、パディングビットであ
ると判断されデータレジスタから削除される。ここで、
削除処理は、データレジスタ1182、1241(同時
にマーカレジスタ1183、1242)の内容を対応す
るシフタ1172、1173、1180、1181を用
いて1クロックサイクルで左にシフトさせることで行わ
れる。この処理は、復号値が出力されないことを除いて
通常の復号モードと同一である。現パディング領域のす
べてのビットが1でない場合には、パディングビット削
除サイクルではなく通常の復号サイクルが実行される。
パディングビットの検出は上述のように各サイクルごと
に行われ、データレジスタ1182にパディングビット
が存在する場合には削除される。
The padding bit deletion processing is performed by the control unit 1
This is performed in actual decoding processing when a padding bit string is detected in the data register 1182 in the padding bit decoding unit which is a part of the 185. FIG. 90 shows a padding bit decoding unit. Marker register 11
It is checked whether a marker position bit exists in the eight maximum bits of 83 and 1242. If the marker position bit exists, the data register 118 corresponding to the bit preceding the marker bit in the marker register 1242
2, all bits in 1241 are determined as the current padding area. The contents of the current padding area are
The padding bit detection unit 1243 checks whether all bits are 1 or not. If all bits in the current padding area are 1, it is determined that the bit is a padding bit and is deleted from the data register. here,
The deletion processing is performed by shifting the contents of the data registers 1182 and 1241 (and simultaneously the marker registers 1183 and 1242) to the left in one clock cycle using the corresponding shifters 1172, 1173, 1180 and 1181. This process is the same as the normal decoding mode except that no decoded value is output. If all bits in the current padding area are not 1, a normal decoding cycle is executed instead of a padding bit deletion cycle.
The padding bit is detected for each cycle as described above, and if a padding bit exists in the data register 1182, it is deleted.

【0260】図87は、制御部1185を詳細に示した
ものである。制御部の中心部位はレジスタ1223であ
り、データレジスタ1182中の現有効ビット数を保持
している。マーカレジスタ1183中の有効ビット数は
常にデータレジスタ1182中の有効ビット数と等し
い。制御部は3つの機能を実行する。第一の機能は、レ
ジスタ1223に格納されるデータレジスタ1182中
の新しいビット数の計算である。第二の機能は、シフタ
1172、1173、1180、1181、1186、
1187、復号部1184、出力フォーマット部118
8への制御信号の生成である。第三の機能は、上述のよ
うにデータレジスタ1182中のパディングビットの検
出である。
FIG. 87 shows the control unit 1185 in detail. The central part of the control unit is a register 1223, which holds the current number of valid bits in the data register 1182. The number of valid bits in the marker register 1183 is always equal to the number of valid bits in the data register 1182. The control unit performs three functions. The first function is to calculate the new number of bits in data register 1182 stored in register 1223. The second function is shifters 1172, 1173, 1180, 1181, 1186,
1187, decoding section 1184, output format section 118
8 is the generation of a control signal. The third function is the detection of padding bits in data register 1182 as described above.

【0261】データレジスタ1182中の新しいビット
数(new_nob)は、データレジスタ1182(n
ob)中の現ビット数と現サイクルにおいてストリッパ
1171からロード可能なビット数(nos)との加算
し、現サイクルにおいてデータレジスタ1182から削
除されるビット数(nor)を減算したものとして計算
される。ここで、現サイクルは、復号サイクルあるいは
パディングビット削除サイクルである。従って、新しい
ビット数は以下のように計算される。
The new number of bits (new_nob) in the data register 1182 is
ob) is calculated by adding the number of bits (nos) that can be loaded from the stripper 1171 in the current cycle to the number of bits (nos) that can be loaded in the current cycle, and subtracting the number of bits (nor) deleted from the data register 1182 in the current cycle. . Here, the current cycle is a decoding cycle or a padding bit deletion cycle. Therefore, the new number of bits is calculated as follows:

【0262】new_nob=nob+nos−nor これらの処理は加算器1221と減算器1222とで実
行される。なお、現サイクルにおいてストリッパ117
1からデータが入力されない場合には(nos)が0と
なる。また、データレジスタ1182においてビットが
足りない、即ちデータレジスタ中のビットが制御部11
85からの現符号長と続く付加ビット長との和以下であ
ることにより、現サイクルにおいて復号処理が行われな
い場合にも(nos)は0となる。値(new_no
b)は64を越えることがあり、ブロック1224にお
いて越えているかどうかがチェックされる。このような
場合には、ストリッパ1171は停止状態となり、新し
いデータのロードがなされない。マルチプレクサ123
3は、ストリッパ1171からロードされたビット数を
ゼロにするために用いられる。ここで、ストリッパ11
71を停止させる信号は図示されていない。復号部12
31からの信号「パディングサイクル」はマルチプレク
サ1234を制御し、パディングビット数あるいは復号
ビット数(符号ビットと付加ビットとの長さ)を削除す
べきビット数(nor)として選択する。復号ビット数
がデータレジスタ中のビット数(nob)以上である
と、比較器1228において判断されると、マルチプレ
クサ1234に与えられるシフトすべき有効ビット数は
NANDゲート1230においてゼロに設定される。す
なわち、(nor)はゼロに設定され、データレジスタ
のビットの削除は行われない。マルチプレクサ1234
の出力は、ポストシフタ1182と1183の制御にも
用いられる。データレジスタ1182の幅はデッドロッ
ク状態を避けるように設定される。すなわち、ストリッ
パ1171からの最大ビット数を収容するだけの領域を
データレジスタに確保するように、あるいは復号/パデ
ィングビット削除サイクルの結果として十分な有効ビッ
ト数が削除されるように設定される。
New_nob = nob + nos-nor These processes are executed by the adder 1221 and the subtractor 1222. In the current cycle, the stripper 117 is used.
If no data is input from 1, (nos) becomes 0. Further, the number of bits in the data register 1182 is insufficient, that is, the bit in the data register is
Since it is equal to or less than the sum of the current code length from 85 and the subsequent additional bit length, (nos) becomes 0 even when the decoding process is not performed in the current cycle. Value (new_no
b) may exceed 64, and it is checked at block 1224 if it is. In such a case, the stripper 1171 is stopped, and no new data is loaded. Multiplexer 123
3 is used to reduce the number of bits loaded from the stripper 1171 to zero. Here, the stripper 11
The signal for stopping 71 is not shown. Decoding unit 12
The signal "padding cycle" from 31 controls the multiplexer 1234 to select the number of padding bits or the number of decoded bits (the length of the sign bit and the additional bit) as the number of bits (nor) to be deleted. If the comparator 1228 determines that the number of decoded bits is greater than or equal to the number of bits (nob) in the data register, the number of valid bits to be provided to the multiplexer 1234 is set to zero in the NAND gate 1230. That is, (nor) is set to zero, and the bit of the data register is not deleted. Multiplexer 1234
Are also used to control the post-shifters 1182 and 1183. The width of data register 1182 is set to avoid a deadlock condition. That is, it is set so that an area enough to accommodate the maximum number of bits from the stripper 1171 is secured in the data register, or a sufficient number of valid bits is deleted as a result of the decoding / padding bit deletion cycle.

【0263】復号サイクルにおいて削除されるビット数
の計算は加算器1226において実行される。オペラン
ドは組み合わせ回路復号部1184から入力される。1
6ビットの符号長は復号部において”0000”と符号
化されるため、”ou_reduce”ロジック122
5では”0000”が”10000”に符号化され、現
在の符号なしのオペランドが得られる。このオペランド
と減算器1227の出力とが、出力フォーマットシフタ
1186と1187への制御信号を与える。
The calculation of the number of bits to be deleted in the decoding cycle is performed in the adder 1226. The operand is input from combinational circuit decoding section 1184. 1
Since the 6-bit code length is encoded as “0000” in the decoding unit, the “ou_reduce” logic 122
In 5, the "0000" is encoded to "10000" to obtain the current unsigned operand. This operand and the output of subtractor 1227 provide control signals to output format shifters 1186 and 1187.

【0264】ブロック1229はEOI(画像終了)マ
ーカ位置の検出に用いられる。EOIマーカ自身はスト
リッパ1171において削除されるが、ストリッパ11
71で削除される以前にEOIマーカに先立つ位置に存
在していたデータの最終ビットとなるパディングビット
は存在する。比較器1229では、レジスタ1223に
格納されているデータレジスタ1182中のビット数が
8以下であるかどうかをチェックする。8以下であれ
ば、ストリッパ1171から新しいデータは入力されず
(データレジスタ1182が復号されるデータ部の残り
のビットを保持している)、残りのビットが削除された
EOIマーカの前のパディング領域サイズを示すことに
なる。さらなるパディング領域の処理やパディングビッ
トの削除などは、上述のRSTマーカの前のパディング
ビットの場合に用いた手順と同一である。
A block 1229 is used for detecting an EOI (end of image) marker position. The EOI marker itself is deleted by the stripper 1171, but the stripper 11
There is a padding bit which is the last bit of the data existing at a position preceding the EOI marker before being deleted at 71. The comparator 1229 checks whether the number of bits in the data register 1182 stored in the register 1223 is 8 or less. If it is 8 or less, no new data is input from the stripper 1171 (the data register 1182 holds the remaining bits of the data portion to be decoded), and the padding area before the EOI marker from which the remaining bits are deleted It will show the size. The processing of the padding area and the deletion of the padding bit are the same as the procedure used for the padding bit before the RST marker described above.

【0265】バレルシフタ1186、1187と出力フ
ォーマット部1188とはサポートする投割を有し、実
施例に応じたさまざまな実装を考えることができる。ま
た、まったく実装されないこともあり得る。これらへの
制御信号は上述のように制御部1185より与えられ
る。付加ビットプレシフタ1186はデータレジスタか
ら32ビットを入力し、現在復号されているハフマン符
号長だけ左にシフトする。このようにして、現在復号さ
れている符号に続くすべての付加ビットは、バレルシフ
タ1186の出力に合わせて左に位置することになり、
バレルシフタ1187への入力として送られる。付加ビ
ットポストシフタ1187は、データの出力フォーマッ
トとして用いられ図91にも示されている11ビットフ
ィールドにおいて、左整列から右整列に付加ビット位置
を調整する。付加ビットフィールドは出力ワードフォー
マット1196においてビット8からビット18に拡張
され、実際の付加ビット数に応じて最大ビットのいくつ
かは無効であることもある。このビット数はJPEG標
準で規定されているように1196のビット0から3に
符号化される。出力データフォーマットとして異なるフ
ォーマットを用いる場合には、フォーマットに応じてバ
レルシフタ1186、1187とその機能を変更するこ
とになる。
The barrel shifters 1186 and 1187 and the output format unit 1188 have a support division, and various implementations according to the embodiment can be considered. Also, it may not be implemented at all. These control signals are provided from the control unit 1185 as described above. The additional bit pre-shifter 1186 receives 32 bits from the data register and shifts to the left by the currently decoded Huffman code length. In this way, all additional bits following the currently decoded code will be to the left in accordance with the output of barrel shifter 1186,
Sent as input to barrel shifter 1187. The additional bit post shifter 1187 adjusts an additional bit position from left alignment to right alignment in an 11-bit field used as a data output format and also shown in FIG. The extra bits field is extended from bit 8 to bit 18 in the output word format 1196, and some of the maximum bits may be invalid depending on the actual number of extra bits. This number of bits is encoded into 1196 bits 0 to 3 as defined in the JPEG standard. When a different format is used as the output data format, the barrel shifters 1186 and 1187 and their functions are changed according to the format.

【0266】出力フォーマットブロック1188は復号
値をパックする処理を行い、JPEG標準では制御部1
185から与えられるDC/AC係数(1196,ビッ
ト0から7)とDC係数指示ビット(1196,ビット
19)、付加ビットポストシフタ1187から与えられ
る付加ビット(1196,ビット8から18)、マーカ
レジスタ1183から与えられるマーカ位置ビット(1
196、ビット23)とを図91に示すフォーマットに
従ってワードに構成する処理を行う。出力フォーマット
部1188は、復号部の出力インタフェースに関する機
能要件にも対処する。出力フォーマット部の実装は、異
なる機能要件の結果として出力インタフェースを変更す
ることになると、通常それに応じて変更される。上述の
ハフマン復号器は非常に効果的な復号処理を提供し、高
速復号処理を実現する。
The output format block 1188 performs a process of packing decoded values, and according to the JPEG standard, the control unit 1
DC / AC coefficient (1196, bits 0 to 7) and DC coefficient indication bit (1196, bit 19) given from 185, additional bit (1196, bits 8 to 18) given from additional bit post shifter 1187, marker register 1183 Marker position bit (1
196, bit 23) into words according to the format shown in FIG. The output format unit 1188 also addresses functional requirements for the output interface of the decoding unit. If the output interface changes as a result of different functional requirements, the implementation of the output format part will usually change accordingly. The Huffman decoder described above provides a very effective decoding process and realizes a high-speed decoding process.

【0267】3.17.8 画像変換命令 これらの命令はソース画像の一般アフィン変換を行うた
めのものである。変換画像の一部を生成する処理は大き
く2つのエリアに分けられる。一つはソース画像のどの
部位が現在の出力スキャンラインと関連するかを決定す
るステップ、もう一つは必要なサブサンプリング/補間
処理を行ってピクセルごとに出力画像を生成するステッ
プである。
3.17.8 Image Conversion Instructions These instructions are for performing general affine transformation of a source image. The process of generating a part of the converted image is roughly divided into two areas. One is to determine which part of the source image is associated with the current output scan line, and the other is to perform the necessary sub-sampling / interpolation processing to generate an output image for each pixel.

【0268】図92は、ソース画像の適切な領域が復号
されているものとして、目的ピクセル値を計算するため
に必要なステップ720のフローチャートを示してい
る。まず、サブサンプリングが行われていればサブサン
プルが721で考慮される。次に、他の補間処理722
と他のサブサンプリング処理といった2つの処理が通常
実装されている。通常、補間とサブサンプリングとは別
のステップであるが、補間とサブサンプリングとを一緒
に行う場合もある。補間処理においては、まず周囲の4
ピクセルを探し、プレ乗算723が必要であるかどうか
を、双線形補間724を行う前に決定する。双線形補間
処理724は一般に計算量が非常に多くなるため、これ
により画像変換処理動作が制約される。目的ピクセル値
を計算する最後のステップは、ソース画像から双線形補
間されたサブサンプルを加算する処理である。加算され
たピクセル値はさまざまな方法で積分727され、目的
画像ピクセル728が生成される。
FIG. 92 shows a flowchart of the step 720 required to calculate the destination pixel value, assuming that the appropriate region of the source image has been decoded. First, if subsampling has been performed, the subsample is considered at 721. Next, another interpolation processing 722 is performed.
And other processing such as subsampling processing are usually implemented. Usually, interpolation and subsampling are separate steps, but interpolation and subsampling may be performed together. In the interpolation processing, first, the surrounding 4
Find the pixel and determine if pre-multiply 723 is needed before bilinear interpolation 724 is performed. The bilinear interpolation process 724 generally requires a large amount of calculation, and this limits the image conversion processing operation. The final step in calculating the destination pixel value is to add the bilinearly interpolated subsamples from the source image. The summed pixel values are integrated 727 in various ways to produce a destination image pixel 728.

【0269】画像変換命令のための命令ワード符号を図
93に示すとともに、マイナーオプコードフィールドの
説明を以下の表に示す。 命令ワード:マイナーオプコードフィールド
The instruction word code for the image conversion instruction is shown in FIG. 93, and the description of the minor opcode field is shown in the following table. Instruction word: minor opcode field

【0270】[0270]

【表19】 [Table 19]

【0271】命令オペランドや結果フィールドの説明を
以下に示す。 命令オペランドと結果ワード
The description of the instruction operand and the result field is as follows. Instruction operands and result words

【0272】[0272]

【表20】 [Table 20]

【0273】オペランドAは、実際の変換を定義するた
めに必要なすべての情報を記述している「カーネル記述
子」として知られているデータストラクチャを指す。こ
のデータストラクチャは2つのフォーマットのうちの1
つとなる(A記述子のLビットで定義される)。図94
はカーネル記述子の長い符号フォーマットを示し、図9
5は短い符号フォーマットを示す。カーネル記述子は、
以下の情報を記述する。 1. ソース画像開始座標730(符号なしの固定長、
24.24解像度)。位置(0、0)が画像の左上。 2. 水平731と垂直732(サブサンプル)デルタ
(2の補数、固定長、24.24解像度) 3. 後述の固定長行列係数中のバイナリポイントの位
置を示す3ビットのbpフィールド733 4. (存在する場合には)積分行列係数735。これ
らは、bpフィールドによって暗黙的に指定されたバイ
ナリ点の位置である20のバイナリ点の「可変」ポイン
ト解像度(2の補数)である。 5. カーネル記述子中の残りのワード数を示すrlフ
ィールド736。この値は列数と行数とを掛けたものか
ら1を引いた値となる。
Operand A points to a data structure known as a "kernel descriptor" that describes all the information needed to define the actual conversion. This data structure is one of two formats
(Defined by the L bit of the A descriptor). FIG. 94
9 shows the long code format of the kernel descriptor.
5 indicates a short code format. The kernel descriptor is
Describe the following information. 1. Source image start coordinates 730 (unsigned fixed length,
24.24 resolution). Position (0,0) is the upper left of the image. 2. 2. Horizontal 731 and vertical 732 (subsample) delta (2's complement, fixed length, 24.24 resolution) 3. a 3-bit bp field 733 indicating the position of a binary point in the fixed-length matrix coefficients described below; Integral matrix coefficients 735 (if present). These are the "variable" point resolutions (2's complement) of the 20 binary points, which are the locations of the binary points implicitly specified by the bp field. 5. An rl field 736 indicating the number of words remaining in the kernel descriptor. This value is a value obtained by subtracting 1 from the value obtained by multiplying the number of columns by the number of rows.

【0274】記述子のカーネル係数は列ごとに並べられ
るが、ジグザグスキャンとなるように隣り合う列は逆方
向に並べられる。図96において、オペランドBはソー
ス画像のスキャンラインを指すインデックステーブルへ
のポインターから成る。インデックステーブルの構造は
図96に示されているように、オペランドB740がイ
ンデックステーブル741を指し、インデックステーブ
ルが必要なソース画像ピクセルのスキャンライン(例え
ば742)を指すという構造である。一般に、インデッ
クステーブルとソース画像ピクセルとはキャッシュ可能
であり、ローカルメモリに位置している。
Although the kernel coefficients of the descriptor are arranged for each column, adjacent columns are arranged in the opposite direction so as to form a zigzag scan. In FIG. 96, operand B comprises a pointer to an index table that points to the scan line of the source image. As shown in FIG. 96, the structure of the index table is such that the operand B 740 points to the index table 741, and the index table points to the scan line (eg, 742) of the required source image pixel. Generally, the index table and the source image pixels are cacheable and located in local memory.

【0275】オペランドCは水平/垂直サブサンプルレ
ートを保持している。水平/垂直サブサンプルレート
は、C記述子が存在する際に指定されるサブサンプル重
み行列の次元によって定義される。行列rとcの次元
は、図97に示すように画像変換命令のデータワードに
符号化されている。結果ピクセルP[N]のチャネルN
は以下の式に基づいて計算される。
Operand C holds the horizontal / vertical sub-sample rate. The horizontal / vertical sub-sample rate is defined by the dimensions of the sub-sample weight matrix specified when the C descriptor is present. The dimensions of the matrices r and c are encoded in the data word of the image conversion instruction as shown in FIG. Channel N of result pixel P [N]
Is calculated based on the following equation.

【0276】[0276]

【数4】 (Equation 4)

【0277】内部的には、積分値は各チャネルごとの3
6のバイナリ点として保持される。フィールド中のバイ
ナリ点の位置は、BPフィールドによって指定される。
BPフィールドは削除する積分結果の先のビット数を示
している。36ビットの積分値は符号付きの2の補数と
して表現され、指定されたようにクランプ処理あるいは
ラップ処理される。図98に、係数符号におけるBPフ
ィールドの解釈例を示す。
Internally, the integral value is 3 for each channel.
6 binary points. The position of the binary point in the field is specified by the BP field.
The BP field indicates the number of bits ahead of the integration result to be deleted. The 36-bit integral is represented as a signed two's complement and clamped or wrapped as specified. FIG. 98 shows an example of interpretation of the BP field in the coefficient code.

【0278】3.17.9 畳込み命令 レンダリング画像に適用される畳込み処理は、2次元畳
込みカーネルをソース画像に適用して結果画像を生成す
るものである。畳込み処理は通常、エッジ先鋭化やいろ
いろな画像フィルタにおいて用いられる。畳込み処理は
コプロセッサ224において実装され、画像変換処理で
はカーネルが各出力ピクセルごとにカーネル幅だけ移さ
れるのに対し、畳込み処理では各出力ピクセルごとに1
ソースピクセルが移動するといった点以外は、画像変換
処理と同様の処理である。
3.17.9 Convolution Instruction The convolution processing applied to the rendering image is to apply a two-dimensional convolution kernel to the source image to generate a result image. Convolution is typically used in edge sharpening and various image filters. The convolution process is implemented in the coprocessor 224. In the image conversion process, the kernel is shifted by the kernel width for each output pixel, whereas in the convolution process, one kernel is output for each output pixel.
The processing is the same as the image conversion processing except that the source pixel moves.

【0279】ソース画像が値S(x,y)を有し、nx
m畳込みカーネルが値C(x,y)を有すると、SとC
の畳込みH[n]のn番目のチャネルは、
The source image has the value S (x, y) and nx
If the m convolution kernel has the value C (x, y), then S and C
The n th channel of the convolution H [n] of

【0280】[0280]

【数5】 (Equation 5)

【0281】で与えられる。ここで、i∈[0,c],
j∈[0,r]である。オフセット値の意味、中間結果
の解像度、bpフィールドの意味は画像変換命令と同一
である。図99は、畳込みカーネル750がソース画像
751に適用し、結果画像752を生成する例を示した
図である。ソース画像アドレス生成や出力ピクセル計算
は、画像変換命令と同様に行われる。命令オペランドも
画像変換と同様の形式である。図100は、畳込み命令
の命令ワード符号を示したものであり、以下の表が種々
のフィールドの説明である。
Is given by Where i∈ [0, c],
j∈ [0, r]. The meaning of the offset value, the resolution of the intermediate result, and the meaning of the bp field are the same as those of the image conversion command. FIG. 99 is a diagram showing an example in which the convolution kernel 750 applies a source image 751 to generate a result image 752. The source image address generation and the output pixel calculation are performed in the same manner as the image conversion command. The instruction operand has the same format as the image conversion. FIG. 100 shows the instruction word codes for the convolutional instructions, and the following table describes the various fields.

【0282】命令ワードInstruction word

【0283】[0283]

【表21】 [Table 21]

【0284】3.17.10 行列乗算 行列乗算は、2つの色空間においてアフィン変換の関係
が存在するような色空間変換処理などに用いられる。行
列乗算は以下の式で定義される。
3.17.10 Matrix Multiplication Matrix multiplication is used for color space conversion processing in which there is an affine transformation relationship in two color spaces. Matrix multiplication is defined by the following equation.

【0285】[0285]

【数6】 (Equation 6)

【0286】行列乗算命令オペランドと結果ワードは以
下のフォーマットを有する。 命令オペランドと結果ワード
Matrix multiply instruction operands and result words have the following format: Instruction operands and result words

【0287】[0287]

【表22】 [Table 22]

【0288】図101に行列乗算命令のための命令ワー
ド符号を示すとともに、以下の表にマイナーオプコード
フィールドを示す 命令ワード
FIG. 101 shows the instruction word codes for the matrix multiply instruction and the following table shows the minor opcode fields.

【0289】[0289]

【表23】 [Table 23]

【0290】3.17.11 ハーフトーン化 コプロセッサ224はハーフトーン処理のための多値レ
ベルディザーを備える。2から255までの値は意味の
あるハーフトーンレベルとなる。ハーフトーンするデー
タは、スクリーンが対応してメッシュあるいはアンメッ
シュである限り、バイト(アンメッシュあるいはメッシ
ュデータからの1チャネル)あるいはピクセル(メッシ
ュ)のどちらでも良い。4つの出力チャネル(あるいは
同一チャネルから4バイト)まで、一緒にパックされた
ようなあるいはバイトごとに1符号にアンパックされた
ようなパックビット(2レベルハーフトーンの場合)あ
るいは符号(2出力レベル以上の場合)生成することが
できる。
3.17.11 Halftoning The coprocessor 224 includes multilevel dither for halftoning. Values from 2 to 255 are significant halftone levels. The data to be halftoned can be either bytes (one channel from unmesh or mesh data) or pixels (mesh) as long as the screen is correspondingly mesh or unmesh. Up to four output channels (or four bytes from the same channel), packed bits (in the case of two-level halftones) or codes (two or more output levels), packed together or unpacked to one code per byte ) Can be generated.

【0291】出力ハーフトーン値は以下の式を用いて計
算される。 (P×(l−1)+d)/255 ここで、pはピクセル値(0≦p≦255)、lはレベ
ル数(2≦l≦255)、dはディザ行列値(0≦d≦
254)である。オペランド符号は以下の通りである。 命令オペランドと結果ワード
The output halftone value is calculated using the following equation. (P × (l−1) + d) / 255 where p is a pixel value (0 ≦ p ≦ 255), l is the number of levels (2 ≦ l ≦ 255), and d is a dither matrix value (0 ≦ d ≦
254). Operand codes are as follows. Instruction operands and result words

【0292】[0292]

【表24】 [Table 24]

【0293】命令ワード符号では、マイナーオプコード
はハーフトーンレベル数を指定する。オペランドB符号
はハーフトーンスクリーンのためのものであり、タイル
合成と同様に符号化される。 3.17.12 階層的画像フォーマット復号 階層的画像フォーマット復号処理は複数のステップを含
む。これらのステップは、水平補間、垂直補間、ハフマ
ン復号、残部融合である。各ステップは別の命令でもっ
て実行される。ハフマン復号ステップでは、補間ステッ
プからの補間された値に付加される残りの値がハフマン
符号化される。従って、JPEG復号部がハフマン復号
において用いられる。
In the instruction word code, the minor opcode specifies the number of halftone levels. The operand B code is for a halftone screen and is coded in a manner similar to tile synthesis. 3.17.12 Hierarchical Image Format Decoding The hierarchical image format decoding process includes multiple steps. These steps are horizontal interpolation, vertical interpolation, Huffman decoding, and residual fusion. Each step is performed with a different instruction. In the Huffman decoding step, the remaining values added to the interpolated values from the interpolation step are Huffman coded. Therefore, a JPEG decoding unit is used in Huffman decoding.

【0294】図102に、水平補間処理を示す。出力ス
トリーム761は入力ストリーム672の2倍のデータ
となり、最後のデータ値763は複製されている76
4。図103は4倍の水平補間を行う例である。階層的
画像フォーマット復号の第2ステップでは、線形補間に
よりピクセル列を2倍あるいは4倍に垂直にアップサン
プルする。このステップでは、1ピクセル列がオペラン
ドA,他の列がオペランドBとなる。
FIG. 102 shows the horizontal interpolation processing. The output stream 761 is twice as much data as the input stream 672, and the last data value 763 is duplicated 76
4. FIG. 103 shows an example in which quadruple horizontal interpolation is performed. In the second step of the hierarchical image format decoding, the pixel sequence is vertically upsampled by a factor of 2 or 4 by linear interpolation. In this step, one pixel column becomes the operand A and the other columns become the operand B.

【0295】垂直補間の場合には2倍、4倍どちらの場
合でも、出力データストリームは入力ストリームと同数
のピクセルとなる。図104に、2つの入力データスト
リーム770、771を用いて2倍補間の出力ストリー
ム772と4倍補間の出力ストリーム773を生成する
垂直補間の例が示されている。ピクセル補間の場合に
は、補間処理は4つのチャネルピクセルの4チャネルご
とに別々に行われる。
In the case of vertical interpolation, in either case of double or quadruple, the output data stream has the same number of pixels as the input stream. FIG. 104 shows an example of vertical interpolation in which two input data streams 770 and 771 are used to generate a two-fold interpolation output stream 772 and a four-fold interpolation output stream 773. In the case of pixel interpolation, the interpolation process is performed separately for every four channels of the four channel pixels.

【0296】残部融合処理は、2つのデータストリーム
のバイトごとの加算を含む。第一ストリーム(オペラン
ドA)はベース値ストリームであり、第二ストリーム
(オペランドB)は残値ストリームである。図105
に、残部融合処理を用いた場合の2つの入力ストリーム
780、781と対応する出力ストリーム782を示
す。
The remainder fusion process involves byte-by-byte addition of the two data streams. The first stream (operand A) is a base value stream, and the second stream (operand B) is a residual value stream. Fig. 105
Shows two input streams 780 and 781 and an output stream 782 corresponding to the case where the residual fusion processing is used.

【0297】図106は、階層的画像フォーマット命令
の命令ワード符号を示したものであり、以下の表にマイ
ナーオプコードフィールドの詳細を示す。 命令ワード−マイナーオプコードフィールド
FIG. 106 shows the instruction word codes of the hierarchical image format instruction. The following table shows the details of the minor opcode field. Instruction word-minor opcode field

【0298】[0298]

【表25】 [Table 25]

【0299】3.17.13 命令コピー命令 これらの命令は2つのそれぞれ別のグループに分けられ
る。 a.汎用データ移動命令 これらの命令は、入力インタフェースモジュール、入力
インタフェーススイッチ252、ピクセルオーガナイザ
246、JPEG符号化部241、結果オーガナイザ2
49、出力インタフェースモジュールからなるコプロセ
ッサ224内の通常のデータフローパスを用いる。この
場合、JPEG符号化モジュールはデータを処理を行わ
ずに直接送る。
3.17.13 Instruction Copy Instructions These instructions are divided into two distinct groups. a. General-purpose data movement instructions These instructions include an input interface module, an input interface switch 252, a pixel organizer 246, a JPEG encoder 241, a result organizer 2
49, using the normal data flow path in the coprocessor 224 comprising the output interface module. In this case, the JPEG encoding module sends the data directly without any processing.

【0300】データ操作動作の他の命令としては以下の
ものが挙げられる。 ・サブバイト値(ビット、2ビット値、4ビット値)の
バイトへのパッキング、アンパッキング ・ワード内でのバイトのパッキングとアンパッキング ・整列 ・バイトレーンスワッピングと複製 ・メモリクリア ・値の複製 データ操作動作は、ピクセルオーガナイザ(入力)と結
果オーガナイザ(出力)の組み合わせで実行される。多
くの場合、これらの命令は他の命令と組み合わせて用い
られる。 b.ローカルDMA命令 データ操作は行われない。図2に示すように、ローカル
メモリ236と周辺インタフェース237間でデータ転
送(双方向)が行われる。これらの命令は実行が他の命
令とオーバラップする唯一の命令である。最大これらの
命令の1つが「オーバラップしていない」命令と同時に
実行することができる。
The other instructions for the data manipulation operation include the following. -Packing and unpacking of sub-byte values (bits, 2-bit values, 4-bit values) into bytes-Packing and unpacking of bytes in words-Alignment-Byte lane swapping and duplication-Memory clear-Duplicate values Data Manipulation operations are performed with a combination of a pixel organizer (input) and a result organizer (output). These instructions are often used in combination with other instructions. b. Local DMA instruction No data operation is performed. As shown in FIG. 2, data transfer (bidirectional) is performed between the local memory 236 and the peripheral interface 237. These instructions are the only instructions whose execution overlaps with other instructions. At most one of these instructions can execute concurrently with "non-overlapping" instructions.

【0301】メモリコピー動作では、オペランドAはコ
ピーするデータを示し、結果オペランドはメモリコピー
命令の目的アドレスを示す。汎用のメモリコピー命令で
は、オペランドBによって入力へのデータ操作動作が規
定され、オペランドCによって出力オペランドワードへ
の動作が規定される。 3.17.14 フロー制御命令 フロー制御命令は、図9に示したような命令実行モデル
のさまざまな部位を制御するための命令群である。フロ
ー制御命令としては、命令ストリームを実行しちえると
きに1つの仮想アドレスから他のアドレスへの移動を可
能にする条件付きジャンプあるいは条件なしジャンプを
含む。条件付きジャンプ命令は、コプロセッサやレジス
タでもって関連するフィールドをマスクし、所定の値と
比較することにより決定される。これにより命令の一般
性を保つことができる。更に、フロー制御命令は、オー
バラップ命令と非オーバラップ命令との間の同期をとる
ために、あるいはマイクロプログラミングの一部として
用いられる待機命令をも含む。
In the memory copy operation, operand A indicates the data to be copied, and the result operand indicates the target address of the memory copy instruction. In a general-purpose memory copy instruction, an operand B defines a data manipulation operation on an input, and an operand C defines an operation on an output operand word. 3.17.14 Flow Control Instruction The flow control instruction is an instruction group for controlling various parts of the instruction execution model as shown in FIG. Flow control instructions include conditional jumps or unconditional jumps that allow movement from one virtual address to another as the instruction stream is executed. A conditional jump instruction is determined by masking the relevant field with a coprocessor or register and comparing it with a predetermined value. This allows the generality of the instruction to be maintained. In addition, flow control instructions also include wait instructions used to synchronize between overlapping and non-overlapping instructions or as part of microprogramming.

【0302】図107に、フロー制御命令の符号を示
す。また、以下の表はマイナーオプコードの説明であ
る。 命令ワード−マイナーオプコードフィールド
FIG. 107 shows the codes of the flow control instructions. The following table describes the minor opcodes. Instruction word-minor opcode field

【0303】[0303]

【表26】 [Table 26]

【0304】ジャンプ命令においては、オペランドAワ
ードはジャンプ命令の目的アドレスを指定する。マイナ
ーオプコードのSビットが0にセットされれば、オペラ
ンドBはコプロセッサレジスタを指定し、条件のソース
として用いる。オペランドB記述子の値はレジスタのア
ドレスを指定し、オペランドBワードの値がレジスタ内
容を比較する値となる。オペランドCワードは結果に適
用されるビットごとのマスクを指定する。すなわち、ジ
ャンプ命令条件は以下のビットごとの式が満たされてい
れば真となる。
[0304] In the jump instruction, the operand A word specifies the destination address of the jump instruction. If the S bit of the minor opcode is set to 0, operand B specifies the coprocessor register and uses it as the source of the condition. The value of the operand B descriptor specifies the address of the register, and the value of the operand B word is the value for comparing the register contents. The operand C word specifies a bitwise mask applied to the result. That is, the jump instruction condition is true if the following bitwise expression is satisfied.

【0305】(((register_value x
or Operand B)andOperand
C)=0x00000000) 更に、マイクロプログラミングレベルで十分に制御する
ためのレジスタアクセスのためにも当該命令が用いられ
る。 3.18 アクセラレータカードのモジュール 図2において、種々のモジュールを更に説明する。
(((Register_value x
or Operand B) and Operand
C) = 0x0000000000) Further, the instruction is used for register access for sufficient control at the microprogramming level. 3.18 Accelerator Card Modules In FIG. 2, the various modules are further described.

【0306】3.18.1 ピクセルオーガナイザ ピクセルオーガナイザ246は入力インタフェーススイ
ッチ252からのデータストリームのアドレスを指定し
てバッファに格納する。入力データはピクセルオーガナ
イザの内部メモリに格納されるか、あるいはMUVバッ
ファ250に格納される。入力ストリームに対する必要
なのデータ処理を全部済ませた後、必要に応じて入力ス
トリームを主データパス242あるいはJPEG符号化
器241に渡す。ピクセルオーガナイザの動作モードは
通常のCBusインタフェースによって構成することが
できる。ピクセルオーガナイザ246はPO_CFG制
御レジスタの指定するような五つのモードのうちの一つ
のモードで動作する。これらのモードは次のとおりであ
る。 (a)アイドルモード:ピクセルオーガナイザ246が
動作しないモード。 (b)シーケンシャルモード:入力データは内部FIF
Oに格納されるようになり、ピクセルオーガナイザ24
6はデータの32ビットアドレスを生成して入力インタ
フェーススイッチ252にデータを要求するモード。 (c)色空間変換モード:ピクセルオーガナイザが色空
間変換のためにピクセルをバッファするモード。更に、
MUVバッファ250に格納されているインターバルお
よび分数値を要求する。 (d)JPEG圧縮モード:ピクセルオーガナイザ24
6が画像データをMCUの形式でMUVバッファに格納
するモード。 (e)畳込み演算および画像変換モード:ピクセルオー
ガナイザ246が行列係数をMUVバッファ250に格
納し、必要であれば主データパス242にもそれを伝え
るモード。
3.18.1 Pixel Organizer The pixel organizer 246 specifies the address of the data stream from the input interface switch 252 and stores it in a buffer. The input data is stored in the internal memory of the pixel organizer or in the MUV buffer 250. After completing all necessary data processing on the input stream, the input stream is passed to the main data path 242 or the JPEG encoder 241 as necessary. The operation mode of the pixel organizer can be configured by a normal CBus interface. Pixel organizer 246 operates in one of five modes as specified by the PO_CFG control register. These modes are as follows. (A) Idle mode: a mode in which the pixel organizer 246 does not operate. (B) Sequential mode: input data is internal FIFO
O and the pixel organizer 24
6 is a mode for generating a 32-bit address of data and requesting data from the input interface switch 252. (C) Color space conversion mode: a mode in which the pixel organizer buffers pixels for color space conversion. Furthermore,
Requests the interval and fraction values stored in the MUV buffer 250. (D) JPEG compression mode: pixel organizer 24
6 is a mode for storing image data in the MUV buffer in MCU format. (E) Convolution operation and image conversion mode: a mode in which the pixel organizer 246 stores the matrix coefficients in the MUV buffer 250 and transmits it to the main data path 242 if necessary.

【0307】ピクセルオーガナイザ246は主データパ
ス242とJPEG符号化器241の両方ともの動作の
ためにMUVバッファ250を使う。色空間変換におい
て、インターバルおよび分数テーブルはMUV RAM
250によって格納され、36ビットのデータ(4つの
カラーチャネル)×(4ビットのインターバル値と8ビ
ットの分数値)としてアクセスされる。画像変換および
畳込み演算のために、MUV RAM250は行列係数
および関連する構成データを格納する。係数行列は16
行×16列に制限され、各係数の幅は最大20ビットで
ある。MUVRAM250は1クロックサイクルあたり
1つの係数を必要とする。係数データに加えて、バイナ
リポイント、ソーススタート座標、サブサンプルデルタ
等の制御情報も主データパス242に伝えなければなら
ない。この制御情報は、行列係数より先にピクセルオー
ガナイザ246によってフェッチされる。
The pixel organizer 246 uses the MUV buffer 250 for operation of both the main data path 242 and the JPEG encoder 241. In color space conversion, the interval and fraction tables are stored in MUV RAM
250 and accessed as 36-bit data (4 color channels) x (4-bit interval value and 8-bit fractional value). For image transformation and convolution operations, MUV RAM 250 stores matrix coefficients and associated configuration data. The coefficient matrix is 16
It is limited to rows x 16 columns, and each coefficient is up to 20 bits wide. MUVRAM 250 requires one coefficient per clock cycle. In addition to coefficient data, control information such as binary points, source start coordinates, sub-sample deltas, etc., must also be communicated to main data path 242. This control information is fetched by the pixel organizer 246 before the matrix coefficients.

【0308】JPEG圧縮において、ピクセルオーガナ
イザ246は、MUVバッファ250を使ってMCUを
ダブルバッファする。JPEG圧縮の性能向上のために
は、ダブルバッファ技術を使うことが望ましい。MUV
RAM250の1半分は入力インタフェーススイッチ
252からのデータを使って書き込まれる。一方、もう
一方の半分は、JPEG符号化器241に送るべきデー
タを得るためにピクセルオーガナイザによって読み出さ
れる。ピクセルオーガナイザ246は、必要とされる所
におけるカラー成分の水平サブサンプリングを行うとと
もに、入力画像のサイズがMCUの整数倍でない場合に
はMCUをパディングする。
In JPEG compression, the pixel organizer 246 double buffers the MCU using the MUV buffer 250. In order to improve the performance of JPEG compression, it is desirable to use a double buffer technique. MUV
One half of RAM 250 is written using data from input interface switch 252. Meanwhile, the other half is read by the pixel organizer to get the data to send to the JPEG encoder 241. The pixel organizer 246 performs horizontal subsampling of color components where needed, and pads the MCU if the size of the input image is not an integral multiple of the MCU.

【0309】ピクセルオーガナイザ246は、図32に
おいて前述した、バイトレーンスワップと、正規化と、
バイト入り代えと、バイトパックおよびアンパックと、
複写動作とを含む入力データのフォーマットをも行う。
動作はピクセルオーガナイザレジスタを設定することに
より必要に応じて行われる。図108において、ピクセ
ルオーガナイザ246をより詳細に説明する。ピクセル
オーガナイザ246は、CBusインタフェース制御部
801に含まれている自身のレジスタセットの制御に従
い作動しており、CBusインタフェース制御部801
はグローバルCBusを経由して命令制御部235に接
続されている。ピクセルオーガナイザ246にはオペラ
ンドフェッチ部802が含まれており、ピクセルオーガ
ナイザ246が必要とするオペランドデータを入力イン
タフェーススイッチ252から要求する。、オペランド
データのスタートアドレスは、実行直前にセットされる
PO_SAIDレジスタによって指定される。PO_S
AIDレジスタは、PO_DMRレジスタのLビットに
よる指定に応じて、即座のデータを保持することもあ
る。現在アドレスポインタはPO_CDPレジスタに格
納され、入力インタフェーススイッチの要求があればそ
のバースト長さだけ増加される。データがMUV RA
M250にフェッチされるとき、データの現在オフセッ
トはPL_MUVレジスタによって指定されるMUV
RAM250のベースアドレスと連結される。
The pixel organizer 246 performs the byte lane swap, the normalization,
Byte replacement, byte pack and unpack,
It also formats input data, including copying operations.
Operation is performed as needed by setting the pixel organizer register. Referring to FIG. 108, the pixel organizer 246 will be described in more detail. The pixel organizer 246 operates according to the control of its own register set included in the CBus interface control unit 801, and
Are connected to the instruction control unit 235 via the global CBus. The pixel organizer 246 includes an operand fetch unit 802, and requests operand data required by the pixel organizer 246 from the input interface switch 252. , The start address of the operand data is specified by the PO_SAID register set immediately before execution. PO_S
The AID register may hold immediate data according to the designation by the L bit of the PO_DMR register. The current address pointer is stored in the PO_CDP register and is incremented by the burst length if required by the input interface switch. Data is MUV RA
When fetched into M250, the current offset of the data is the MUV specified by the PL_MUV register.
It is connected to the base address of the RAM 250.

【0310】オペランドフェッチ部802によってフェ
ッチされたシーケンシャル入力データをバッファするた
めに、FIFO803が用いられる。データ操作部80
4は、図32において説明したような様々な操作を実行
する。データ操作部の出力はMUVアドレス生成部80
5に伝えられる。MUVアドレス生成部805は構成レ
ジスタに従ってデータをMUV RAM250、主デー
タパス242、JPEG符号化器241のどちらかに伝
える。ピクセルオーガナイザ制御部806は、ピクセル
オーガナイザ246のサブモジュール全てのために必要
な制御信号を生成する状態機械である。必要な信号の中
では、種々のBusインタフェース上での通信を制御す
る信号も含まれる。ピクセルオーガナイザ制御部は、状
態レジスタの設定に従い他モジュール239が必要とす
る診断情報を出力する。
The FIFO 803 is used to buffer the sequential input data fetched by the operand fetch unit 802. Data operation unit 80
4 executes various operations as described in FIG. The output of the data operation unit is the MUV address generation unit 80
It is conveyed to 5. The MUV address generation unit 805 transmits data to one of the MUV RAM 250, the main data path 242, and the JPEG encoder 241 according to the configuration register. Pixel organizer control 806 is a state machine that generates the necessary control signals for all sub-modules of pixel organizer 246. The necessary signals include signals for controlling communication on various Bus interfaces. The pixel organizer control section outputs diagnostic information required by the other module 239 according to the setting of the status register.

【0311】図109において、図108のオペランド
フェッチ部802をより詳細に示す。オペランドフェッ
チ部802には、命令バスアドレス生成部(IAG)8
10が含まれており、オペランドデータをフェッチせよ
という要求を生成する状態機械を含む。この要求は要求
仲裁部811に送られが、要求仲裁部811はアドレス
生成部810の要求とMUVアドレス生成部805の要
求(図108)との間を仲裁しており、勝ちの要求を入
力(MAG)インタフェーススイッチ252に送るよう
にしている。要求仲裁部811は要求を扱うための状態
機械を含んでいる。これは、FIFOカウント部814
を用いてFIFOの状態をモニタし、次の要求をいつデ
スパッチすべきかを決定する。バイトイネーブル生成部
812はIAG810の情報を受け取り、入力インタフ
ェーススイッチ252がリターンする各オペランドにお
ける有効なバイトを指定するバイトイネーブルパタン8
16を生成する。バイトイネーブルパタンは関連するオ
ペランドデータとともにFIFOに格納される。MAG
要求とIAG要求が同時に到着したとき、要求仲裁部8
11はMAG要求をIAG要求より優先して処理する。
FIG. 109 shows the operand fetch unit 802 of FIG. 108 in more detail. The operand fetch unit 802 includes an instruction bus address generation unit (IAG) 8
10 and includes a state machine that generates a request to fetch operand data. This request is sent to the request arbitration unit 811. The request arbitration unit 811 arbitrates between the request of the address generation unit 810 and the request of the MUV address generation unit 805 (FIG. 108), and inputs a request for winning ( MAG) is sent to the interface switch 252. Request arbitration unit 811 includes a state machine for handling requests. This is the FIFO count unit 814
To monitor the status of the FIFO and determine when the next request should be dispatched. The byte enable generation unit 812 receives the information of the IAG 810, and the byte enable pattern 8 for specifying a valid byte in each operand returned by the input interface switch 252.
16 is generated. The byte enable pattern is stored in the FIFO along with the associated operand data. MAG
When the request and the IAG request arrive at the same time, the request arbitration unit 8
11 processes the MAG request in preference to the IAG request.

【0312】図108において、MUVアドレス生成部
805は異なるいくつかのモードで動作する。これらの
モードにおいて、第1はJPEG(圧縮)モードであ
る。このモードでは、JPEG圧縮のための入力データ
がデータ操作部804によって供給され、MUVバッフ
ァ250はダブルバッファとして使われる。MUV R
AM250アドレス生成部805は、データ操作部80
4によって処理された入力データを格納するに適するM
UVバッファのアドレスを生成する。MAG805は、
格納されたピクセルからカラー成分データを取り出すた
めの読み出しアドレスを生成するとともに、JPEG圧
縮用の8×8ブロークを形成するように動作する。MA
G805は、MCUが画像と一部重なっている場合も扱
う。図110は、MAG805が行うパディング動作の
一例を示す。
In FIG. 108, the MUV address generator 805 operates in several different modes. The first of these modes is the JPEG (compression) mode. In this mode, input data for JPEG compression is supplied by the data operation unit 804, and the MUV buffer 250 is used as a double buffer. MUV R
The AM 250 address generation unit 805 includes a data operation unit 80
M suitable for storing the input data processed by
Generate the address of the UV buffer. MAG805 is
A read address for extracting color component data from the stored pixels is generated, and an operation is performed to form an 8 × 8 break for JPEG compression. MA
G805 also handles the case where the MCU partially overlaps the image. FIG. 110 shows an example of a padding operation performed by the MAG 805.

【0313】普通のピクセルデータにおいて、MAG8
05は、4つの8ビットRAMのMUV RAM250
における同じアドレス内に、4つのカラー成分を格納す
る。同じカラーチャネルからデータを同時に取り出すた
めに、MCUデータは左にバレルシフトされてからMU
V RAM250に格納される。データの左にシフトさ
れるバイト数は、書き込みアドレスの下位2ビットによ
って決定される。例えば、図111は、サブサンプリン
グの要らない場合32ビットピクセルデータがMUV
RAM250内で配置されるデータ構造を示す。3チャ
ネル又は4チャネルインタリーブJPEGモードにおい
ては、入力データのサブサンプリングが選択されること
もあり得る。サブサンプリングを伴うマルチチャネルJ
PEG圧縮モードにおいて、MAG805(図108)
は、JPEG符号化器の最適性能のために32ビットデ
ータがMUV RAM250に格納される前にサブサン
プリングを行うようになっている。最初四つの入力ピク
セルの中で、MUV RAM250に格納される第1お
よび第4番目のチャネルだけが有用なデータを含んでい
る。第2および第3番目のチャネルのデータはサブサン
プリングされ、ピクセルオーガナイザ246のレジスタ
に格納される。次の4つの入力ピクセルにおいて、第2
および第3番目のチャネルはサブサンプリングされたデ
ータをもって埋められる。図112は、マルチチャネル
サブサンプリングモードにおけるMCUデータ構成の一
例を示す。MAGは単一チャネルアンパックデータ全て
をマルチチャネルピクセルデータと全く同様に扱う。M
UV RAMから読み出された単一チャネルパックデー
タの一例が図113に示されている。
In ordinary pixel data, MAG8
05 is an MUV RAM 250 with four 8-bit RAMs
The four color components are stored in the same address in. To retrieve data from the same color channel simultaneously, the MCU data is barrel-shifted to the left before the MU
It is stored in the VRAM 250. The number of bytes shifted to the left of the data is determined by the lower two bits of the write address. For example, FIG. 111 shows that when subsampling is not required, 32-bit pixel data is MUV
2 shows a data structure arranged in the RAM 250. In the 3-channel or 4-channel interleaved JPEG mode, subsampling of input data may be selected. Multi-channel J with sub-sampling
In the PEG compression mode, MAG805 (FIG. 108)
Performs subsampling before 32-bit data is stored in the MUV RAM 250 for optimal performance of the JPEG encoder. Of the first four input pixels, only the first and fourth channels stored in MUV RAM 250 contain useful data. The data of the second and third channels is sub-sampled and stored in a register of the pixel organizer 246. In the next four input pixels, the second
And the third channel is filled with sub-sampled data. FIG. 112 shows an example of an MCU data configuration in the multi-channel sub-sampling mode. The MAG treats all single-channel unpacked data exactly like multi-channel pixel data. M
An example of the single channel pack data read from the UV RAM is shown in FIG.

【0314】書き込みプロセスによって入力MCUがM
UV RAMに格納されている間、読み出しプロセスは
MUV RAMから8×8ブロックを読み出す。一般的
に、前記ブロックは各チャネルに対してデータを順次読
み出すことによって、四つの係数ずつMAG805によ
って生成される。ピクセルデータとアンパック入力デー
タにおいて、格納されるデータは図111に示すように
整理される。従って、サンプルされなかったピクセルデ
ータからなる8×8ブロックを合成するためには、読み
出しプロセスはMUV RAMからデータを斜行しなが
ら読み出す。図114は、このようなプロセスの一例を
示す。図114には、四つのチャネルデータにおける読
み出しシケンス示されており、MUV RAM250の
格納形式が同一チャネルから多数の値を同時に読み出す
ことを容易にしていることが分かる。
The input process sets the input MCU to M
While stored in UV RAM, the read process reads 8x8 blocks from MUV RAM. Generally, the blocks are generated by the MAG 805 for each of the four coefficients by sequentially reading data for each channel. In the pixel data and the unpacked input data, the stored data is organized as shown in FIG. Thus, to synthesize an 8 × 8 block of unsampled pixel data, the read process reads the data from the MUV RAM skewed. FIG. 114 illustrates an example of such a process. FIG. 114 shows a read sequence for four channel data, and it can be seen that the storage format of the MUV RAM 250 makes it easy to read multiple values simultaneously from the same channel.

【0315】色変換モードにおいて、MUV RAM2
50はインターバルおよび分数値を格納するキャッシュ
として用いられ、MAG805はそのキャッシュの制御
部として働くようになっている。MUV RAM250
は3つのカラーチャネル値をキャッシュする。ここで、
各カラーチャネルは256対の4ビットインターバルお
よび分数値を有する。DMUを通じた各ピクセル出力に
おいて、MUV RAM250から前記値を得るために
MAG805が使われる。この値が得られないときに、
MAG805は欠けているインターバルおよび分数値を
フェッチせよというメモリ読み出し要求を出す。帯域の
有効利用のために、要求あたりエントリ一つだけをフェ
ッチする手法のかわりに、多数のエントリをフェッチす
るような手法を取る。
In the color conversion mode, the MUV RAM 2
Numeral 50 is used as a cache for storing interval and fraction values, and MAG 805 functions as a control unit of the cache. MUV RAM250
Caches three color channel values. here,
Each color channel has 256 pairs of 4-bit intervals and fractional values. At each pixel output through the DMU, MAG 805 is used to obtain the values from MUV RAM 250. When this value is not available,
MAG 805 issues a memory read request to fetch the missing interval and fraction values. For effective use of bandwidth, instead of fetching only one entry per request, a method of fetching many entries is used.

【0316】画像変換および畳込み演算のために、MU
V RAM250はMDPの行列係数を記憶している。
MAGはMUV RAM250に格納されている全ての
行列係数をスキャンする。画像変換および畳込み命令の
始めにおたって、MAG805はオペランドフェッチ部
に要求を出し、オペランドフェッチ部がカーネル記述
“ヘッダ”(図94)とバスト要求の第1行列係数とを
フェッチするようにする。
For image transformation and convolution operations, the MU
The VRAM 250 stores the matrix coefficients of the MDP.
The MAG scans all matrix coefficients stored in the MUV RAM 250. At the beginning of the image transformation and convolution instructions, MAG 805 issues a request to the operand fetch, which causes the operand fetch to fetch the kernel description "header" (FIG. 94) and the first matrix coefficient of the bust request. .

【0317】図115において、図108のMUVアド
レス生成部(MAG)805をより詳細に示す。MAG
805はIBus要求を多重化するIBus要求モジュ
ール820を備えており、IBus要求は画像変換制御
部(ITX)821と色空間変換(CSC)制御部82
2によって生成される。この要求は、要求を実行するよ
うになっているオペランドフェッチ部に送られる。ピク
セルオーガナイザ246は画像変換、色空間変換のどち
らか1つのモードで動作するようになっているため、制
御部821,822の間では仲裁が要らないことにな
る。IBus要求モジュール820は、オペランドフェ
ッチ部への要求を生成するのに必要なバストアドレスと
バスト長さとを含む情報を、関連するピクセルオーガナ
イザから導出する。
FIG. 115 shows the MUV address generator (MAG) 805 of FIG. 108 in more detail. MAG
Reference numeral 805 includes an IBus request module 820 for multiplexing the IBus request.
2 generated. The request is sent to an operand fetch unit that is adapted to execute the request. Since the pixel organizer 246 operates in one of the image conversion mode and the color space conversion mode, no arbitration is required between the control units 821 and 822. The IBus request module 820 derives information including a bust address and a bust length necessary to generate a request to the operand fetch unit from the associated pixel organizer.

【0318】JPEG制御部824は、JPEG書き込
み制御部とJPEG読み出し制御部という2つの状態機
械を備えており、JPEGモードにおいて使われる。前
記二つの制御部は同時に作動するようになっており、内
部レジスタを用いることによってお互いに同期を取る。
JPEG圧縮動作において、DMUはMCUデータを出
力しMUV RAMに格納する。JPEG書き込み制御
部は水平パディングとピクセルサブサンプリングの制御
とを担当しており、JPEG読み出し制御部は垂直パデ
ィングを担当する。水平パディングはDMU出力を停止
することによって行われ、垂直パディングは既に読み出
した8×8ブロックを再び読み出すことによって行われ
る。
The JPEG controller 824 has two state machines, a JPEG write controller and a JPEG read controller, and is used in the JPEG mode. The two control units operate simultaneously and are synchronized with each other by using an internal register.
In the JPEG compression operation, the DMU outputs MCU data and stores it in the MUV RAM. The JPEG write control unit is responsible for horizontal padding and pixel subsampling control, and the JPEG read control unit is responsible for vertical padding. Horizontal padding is performed by stopping the DMU output, and vertical padding is performed by re-reading the already read 8 × 8 block.

【0319】JPEG書き込み制御部は、ソース画像に
おけるDCUおよびDMU出力ピクセルの現在位置をト
ラッキングしており、水平パディングのためにいつDM
Uを停止すべきかを決定するのにその情報を用いる。M
CUがMUV RAM250に書き込まれたときに、J
PEG書き込み制御部は内部レジスタをセットするかま
たはリセットすることによって、MCUが画像の右エッ
ジにあるかあるいは画像の最低エッジにあるかを表す。
JPEG読み出し制御部は、前記レジスタの内容に基づ
き、垂直パディングが必要であるかや画像の最後のMC
Uまで読んだのかを判断する。
The JPEG write control keeps track of the current position of the DCU and DMU output pixels in the source image and
The information is used to determine if U should be stopped. M
When the CU is written to the MUV RAM 250, J
The PEG write control sets or resets an internal register to indicate whether the MCU is at the right edge of the image or at the lowest edge of the image.
Based on the contents of the register, the JPEG read control unit determines whether vertical padding is necessary or the last MC of the image.
Judge whether you read up to U.

【0320】JPEG書き込み制御部はDMU出力デー
タをトラッキングし、DMU出力データをMUV RA
M250に格納する。前記制御部は、レジスタセットを
用いて入力ピクセルの現在位置を記憶する。この情報は
DMU出力を停止して水平パディングを行うときに使わ
れる。全てのMCUがMUV RAM250に書き込ま
れたときに、前記制御部はMCU情報をJPEG−RW
−IPCレジスタに書き込み、以後JPEG読み出し制
御部によって利用し得るようにする。
The JPEG write control unit tracks the DMU output data and converts the DMU output data to the MUV RA
Store it in M250. The control unit stores a current position of an input pixel using a register set. This information is used when stopping the DMU output and performing horizontal padding. When all the MCUs are written to the MUV RAM 250, the control unit stores the MCU information in the JPEG-RW
-Write to the IPC register so that it can be used by the JPEG read controller thereafter.

【0321】この制御部は、最後のMCUがMUV R
AM250に書き込まれた後、SLEEP状態に入り現
在の命令が終了するまでその状態に残る。JPEG読み
出し制御部は、MUV RAM250に格納されている
MCUから8×8ブロックを読み出す。マルチチャネル
ピクセルにおいては、制御部がMCUを数回に渡って読
み出すようになっており、MUV RAMに格納されて
いる各ピクセルから、各読み出しにおける異なるバイト
を抽出する。
The control unit determines that the last MCU has the MUV R
After being written to AM 250, it enters SLEEP state and remains there until the current instruction is completed. The JPEG read control unit reads an 8 × 8 block from the MCU stored in the MUV RAM 250. In a multi-channel pixel, the control unit reads the MCU several times and extracts a different byte in each read from each pixel stored in the MUV RAM.

【0322】この制御部はJPEG−RW−IPCによ
って提供される情報を用いて、垂直パディングを行うべ
きかを検出する。垂直パディングはMUV RAM25
0から読み出した直前の8バイトを再び読み出すことに
よって行われる。画像変換制御部821はIBusから
カーネルディスクリプタを読み出し、カーネルヘッダを
MDP242に伝える。そして、po.lenレジスタ
で指定された回数だけ行列係数をスキャンする。画像変
換および畳込み命令において、PO246による全ての
データ出力はIBusから直接フェッチされるようにな
っており、DMUには伝えられない。
This control unit detects whether to perform vertical padding using information provided by JPEG-RW-IPC. Vertical padding is MUV RAM25
This is performed by reading the 8 bytes immediately before reading from 0 again. The image conversion control unit 821 reads the kernel descriptor from the IBus, and transmits the kernel header to the MDP 242. And po. The matrix coefficients are scanned the number of times specified by the len register. In image conversion and convolution instructions, all data output by PO 246 is to be fetched directly from IBus and is not passed on to the DMU.

【0323】カーネルヘッダの直後フェッチされる第1
行列係数の最初8ビットは、フェッチすべき残りの行列
係数の数を表す。カーネルヘッダは修正されずに直接M
DPに伝えられるが、行列係数はMDPに伝えられる前
にサイン拡張される。ピクセルサブサンプラ825は、
それぞれが入力ワードの1バイトに対して動作する二つ
の同じチャネルサブサンプラを備える。関連する構成レ
ジスタが起動されていないときに、ピクセルサブサンプ
ラは自身の入力をそのまま自身の出力にコピーする。一
方、構成レジスタが起動されているときに、サブサンプ
ラは入力データに対して平均を取るか又は間引きを行う
かすることによって入力データをサブサンプルする。
First fetched immediately after kernel header
The first eight bits of the matrix coefficients represent the number of remaining matrix coefficients to fetch. Kernel header is not modified directly M
Passed to the DP, but the matrix coefficients are sign expanded before being passed to the MDP. The pixel subsampler 825 is
It comprises two identical channel subsamplers, each operating on one byte of the input word. When the associated configuration register has not been activated, the pixel subsampler copies its input directly to its output. On the other hand, when the configuration register is activated, the subsampler subsamples the input data by averaging or decimating the input data.

【0324】MUV多重化モジュール826は現在アク
ティブである制御部からMUV読み出しおよび書き込み
信号を選ぶ。内部多重化部は、MUV RAM250を
使う種々の制御部を経由して、読み出しアドレス出力を
選ぶ。MUV RAM書き込みアドレスはMUV多重化
モジュールの8ビットレジスタに格納されている。MU
V RAM250を用いる制御部は次のMUV RAM
アドレスを決定するための制御を行うとともに、書き込
みアドレスレジスタをロードする。
The MUV multiplex module 826 selects MUV read and write signals from the currently active control. The internal multiplexing unit selects the read address output via various control units using the MUV RAM 250. The MUV RAM write address is stored in an 8-bit register of the MUV multiplex module. MU
The control unit using the V RAM 250 is the next MUV RAM
Control for determining the address is performed, and the write address register is loaded.

【0325】MUV有効アクセスモジュール827は色
空間変換制御部によって用いられ、データ操作部による
現在ピクセル出力のインターバルおよび分数値がMUV
RAM250において利用できるかを決定する。一つ
以上のカラーチャネルが欠けているとき、MUV有効ア
クセスモジュール827は関連するアドレスをIBus
要求モジュール820に伝え、インターバルおよび分数
値をバーストモードでロードする。キャッシュミスがサ
ービスされると、MUV有効アクセスモジュール827
は今までフェッチされたインターバルおよび分数値のセ
ットを表す内部有効ビットをセットする。
The MUV effective access module 827 is used by the color space conversion control unit, and the interval and the fraction value of the current pixel output by the data operation unit are set to the MUV.
Determine if it is available in RAM 250. When one or more color channels are missing, the MUV enabled access module 827 may assign the associated address to the IBus
Communicate to request module 820 to load interval and fraction values in burst mode. When a cache miss is serviced, the MUV enabled access module 827
Sets an internal valid bit that represents the set of interval and fraction values fetched so far.

【0326】複写モジュール829は、内部ピクセルレ
ジスタが定める回数だけ、入力データを複写する。複写
モジュールが現在の入力ワードを複写している間、入力
ストリームは停止されるようになる。PBusインタフ
ェースモジュール830は、ピクセルオーガナイザ24
6を主データパス242およびJPEG符号化器241
にリタイムするか或いはその逆の処理をするのに使われ
る。最後に、MAG制御部831は種々のサブモジュー
ルをイニシエイトする信号とシャットダウンする信号と
を生成する。なお、MAG制御部831は、主データパ
ス242およびJPEG符号化器241からの入力PB
us信号に対する多重化をも行う。
The copy module 829 copies the input data the number of times determined by the internal pixel register. The input stream will be stopped while the duplication module is copying the current input word. The PBus interface module 830 includes the pixel organizer 24
6 to the main data path 242 and the JPEG encoder 241
Used to retime to or vice versa. Finally, the MAG controller 831 generates a signal for initiating various sub-modules and a signal for shutting down. Note that the MAG control unit 831 sends the input PB from the main data path 242 and the JPEG encoder 241.
Multiplexing is also performed on the us signal.

【0327】3.18.2 MUVバッファ 図2においては、これまでの説明から明らかなようにピ
クセルオーガナイザ246はMUVバッファ250と相
互関係にある。再コンフィギュレーション可能なMUV
バッファ250は単純ルックアップテーブルモード(モ
ード0)、多重ルックアップテーブルモード(モード
1)、JPEGモード(モード2)を含む様々な処理モ
ードをサポートしている。それぞれのモードで、バッフ
ァには異なるタイプのデータオブジェクトが格納され
る。例えば、バッファに格納されているデータワード、
様々な検索テーブルの値、単一チャネルデータ、複数チ
ャネルデータはデータオブジェクトである。一般的に、
データオブジェクトは異なるサイズを持つ。更に再コン
フィギュレーション可能なMUVバッファ250に格納
されたデータオブジェクトはバッファのオペレーティン
グモードに依存した様々な方法で実際にアクセスでき
る。
3.18.2 MUV Buffer In FIG. 2, the pixel organizer 246 is interrelated with the MUV buffer 250, as will be apparent from the above description. Reconfigurable MUV
Buffer 250 supports various processing modes, including simple look-up table mode (mode 0), multiple look-up table mode (mode 1), and JPEG mode (mode 2). In each mode, the buffer stores different types of data objects. For example, data words stored in a buffer,
Various lookup table values, single channel data, and multiple channel data are data objects. Typically,
Data objects have different sizes. Further, the data objects stored in the reconfigurable MUV buffer 250 can actually be accessed in various ways depending on the operating mode of the buffer.

【0328】異なるタイプのデータを書き戻したり及び
格納するのに必要な様々な方法を適切にするために、デ
ータオブジェクトはしばしば、格納される前に符号化さ
れる。データオブジェクトのコーディングに用いられる
方法はデータオブジェクトのサイズ、表現されているデ
ータオブジェクトのフォーマット、どのようにデータオ
ブジェクトがバッファから書き戻されるのか、バッファ
上に形成されたメモリモジュールの構成状態によって決
定される。
Data objects are often encoded before being stored, in order to accommodate the various methods required to write back and store different types of data. The method used to code the data object is determined by the size of the data object, the format of the data object being represented, how the data object is written back from the buffer, and the configuration of the memory modules formed on the buffer. You.

【0329】図116は再コンフィギュレーション可能
なMUVバッファ250を実装するために用いられるコ
ンポーネントのブロックダイアグラムである。再コンフ
ィギュレーション可能なMUVバッファ250はエンコ
ーダ1290、ストレージデバイス1293、デコーダ
1291、アドレス読み込み・ローテーション信号発生
器1292からなる。入力データストリーム1295に
データオブジェクトが入力された時には、データオブジ
ェクトはエンコーダ1290により内部データに符号化
され、内部データストリーム1296に配置される。符
号化されたデータオブジェクトはストレージデバイス1
293に格納される。
FIG. 116 is a block diagram of the components used to implement the reconfigurable MUV buffer 250. The reconfigurable MUV buffer 250 includes an encoder 1290, a storage device 1293, a decoder 1291, and an address read / rotation signal generator 1292. When a data object is input to the input data stream 1295, the data object is encoded into internal data by the encoder 1290 and placed in the internal data stream 1296. The encoded data object is stored in storage device 1
293.

【0330】格納されたデータオブジェクトを復号化す
る場合には、符号化されたデータは符号化データ出力ス
トリーム1297によりストレージデバイスから取り出
される。符号化データ出力ストリーム1297上の符号
化されたデータはデコーダ1291によって復号化され
る。復号化されたデータオブジェクトは出力データスト
リーム1298上に現れる。
When decoding the stored data object, the encoded data is retrieved from the storage device by the encoded data output stream 1297. The encoded data on the encoded data output stream 1297 is decoded by the decoder 1291. The decrypted data object appears on output data stream 1298.

【0331】ストレージデバイス1293への書き込み
アドレス1035はMAG805(図108)により与
えられる。書き込みアドレス1299,1300,13
01も同様にMAG805(図108)によって与えら
れ、アドレス読み込み・ローテーション信号発生器12
92によってストレージデバイス1293に分配され
る。アドレス読み込み・ローテーション信号発生器12
92はまた、入力・出力ローテーション信号1303,
1304をエンコーダ、デコーダそれぞれに対して生成
する。書き込み有効信号1306と1307は外部ソー
スから与えられる。コントローラ801(図108)に
よって与えられる処理モード信号1302はエンコーダ
1290、デコーダ1291、アドレス読み込み・ロー
テーション信号発生器1292、ストレージデバイス1
293に接続される。インクリメント信号1308はア
ドレス読み込み・ローテーション信号発生器内の内部カ
ウンタをインクリメントし、JPEGモード(モード
2)でも用いられることがある。
The write address 1035 to the storage device 1293 is given by the MAG 805 (FIG. 108). Write address 1299, 1300, 13
01 is also given by the MAG 805 (FIG. 108), and the address read / rotation signal generator 12
92 to the storage device 1293. Address reading / rotation signal generator 12
92 also includes an input / output rotation signal 1303,
1304 is generated for each of the encoder and the decoder. Write valid signals 1306 and 1307 are provided from an external source. The processing mode signal 1302 provided by the controller 801 (FIG. 108) includes an encoder 1290, a decoder 1291, an address read / rotation signal generator 1292, and a storage device 1.
293. The increment signal 1308 increments an internal counter in the address read / rotation signal generator, and may be used in the JPEG mode (mode 2).

【0332】再コンフィギュレーション可能なMUVバ
ッファ250が単純ルックアップテーブルモード(モー
ド0)である場合には、本質的にバッファ250はむし
ろ、単一モードのメモリモジュールの様に動作する。デ
ータオブジェクトは本質的にメモリモジュールにアクセ
スする方法と同様な方法でバッファに格納あるいはバッ
ファから取り出せる。
When the reconfigurable MUV buffer 250 is in the simple look-up table mode (mode 0), the buffer 250 essentially behaves like a single mode memory module. A data object can be stored in or retrieved from a buffer in a manner essentially similar to accessing a memory module.

【0333】再コンフィギュレーション可能なMUVバ
ッファ250が多重ルックアップテーブルモード(モー
ド1)で動作中の時、バッファ250はストレージデバ
イス1293に格納されている最大3つの検索テーブル
をもちいて複数のテーブルに分割される。検索テーブル
は同時かつ独立にアクセスすることができる。一例を挙
げると、インターバルおよびフラクションの値は多重ル
ックアップテーブルモードのストレージデバイス129
3に格納される、テーブルは入力データストリーム12
95の下位3バイトを利用してインデックスがつけられ
る。3バイトのそれぞれはストレージデバイス1293
に格納された独立の検索テーブルに発行される。
When the reconfigurable MUV buffer 250 is operating in the multiple look-up table mode (mode 1), the buffer 250 can be divided into a plurality of tables using up to three search tables stored in the storage device 1293. Divided. The lookup tables can be accessed simultaneously and independently. As an example, the values of the interval and fraction are stored in the storage device 129 in the multiple lookup table mode.
3 are stored in the input data stream 12
The lower 3 bytes of 95 are indexed. Each of the three bytes is a storage device 1293
Issued to an independent search table stored in.

【0334】画像がJPEG圧縮されているとき、画像
は符号化されたデータストリームに変換される。ピクセ
ルは原画像からMCUのフォーマットで取り出される。
MCUは画像の左から右に、上から下に読み出される。
それぞれのMCUは多数の8×8のブロックに再合成さ
れる。多数の8×8ブロックはMCUから抽出される。
MCUは原画像のカラーコンポーネント、複数チャネル
のJPEGモード、サブサンプリングの必要性等のいく
つかの要因に依存している。8×8のブロックはその後
フォワードDCT(FDCT)、量子化、エントロピー
符号化される。JPEG圧縮の場合には、符号化された
データはデータストリームからシーケンシャルに読み込
まれる。データストリームはエントロピー復号化、逆量
子化、逆DCT(IDCT)が行われる。IDCT処理
の出力は8×8のブロックである。多数の8×8ブロッ
クはMCUを再構成するように統合される。JPEG圧
縮を用いるとき、多数の8×8ブロックは前述の要因に
依存する。再コンフィギュレーション可能なMUVバッ
ファ250はMCUを多数の8×8ブロックに分解した
り、多数の8×8ブロックをMCUに再構成したりする
ときにも用いられる。
When an image is JPEG compressed, the image is converted to an encoded data stream. Pixels are extracted from the original image in MCU format.
MCUs are read from left to right and top to bottom of the image.
Each MCU is recombined into a number of 8x8 blocks. Many 8x8 blocks are extracted from the MCU.
The MCU depends on several factors, such as the color components of the original image, the multi-channel JPEG mode, and the need for subsampling. The 8 × 8 block is then forward DCT (FDCT), quantized and entropy coded. In the case of JPEG compression, encoded data is read sequentially from a data stream. The data stream is subjected to entropy decoding, inverse quantization, and inverse DCT (IDCT). The output of the IDCT process is an 8 × 8 block. Multiple 8x8 blocks are integrated to reconstruct the MCU. When using JPEG compression, a large number of 8x8 blocks depends on the factors mentioned above. The reconfigurable MUV buffer 250 is also used when decomposing an MCU into a number of 8 × 8 blocks or reconstructing a number of 8 × 8 blocks into an MCU.

【0335】再コンフィギュレーション可能なMUVバ
ッファ250がJPEGモードの処理を行っているとき
はバッファ250への入力データストリーム1295は
JPEG圧縮処理を行っているピクセルあるいはJPE
G圧縮処理を行っている単一のコンポーネントを含んで
いる。バッファ250の出力データストリームはJPE
G伸長処理の単一チャネルデータブロックあるいはJP
EG伸長処理のピクセルデータを含んでいる。このJP
EG圧縮の例では、入力ピクセルはY,U,V,Oの4
チャネルまで構成できる。指定の数のピクセルが完成し
たピクセルブロックとして処理処理されたときには、単
一のコンポーネントデータブロックの抽出が開始でき
る。それぞれの単一のコンポーネントデータブロックは
バッファに格納された同チャネルのピクセルからなるデ
ータにより構成される。従ってこの例では、4つまでの
単一のコンポーネントデータブロックをひとつのピクセ
ルデータブロックから抽出できる。この具体例では、再
コンフィギュレーション可能なMUVバッファ250が
JPEG圧縮用のJPEGモード(モード2)で処理を
行っているときには、多数の単位最小コード(MCU)
はそれぞれ64の単一あるいは複数チャネルのピクセル
をバッファに格納でき、多数の64バイト長の単一チャ
ネルのコンポーネントデータブロックをバッファに格納
されたそれぞれのMCUから抽出できる。例えば、バッ
ファ1289がJPEG伸長を行うためにJPEGモー
ド(モード2)である間は、出力データストリームは、
Y,U,V,Oの最大4つのコンポーネントを持つ出力
ピクセルから構成される。要求された数の完成した単一
のコンポーネントデータブロックをバッファに書き込ん
だときは、ピクセルデータの抽出ができる。異なる色の
コンポーネントに対応する4つの単一のコンポーネント
データブロックからのバイトは出力ピクセルとして取り
出される。
When the reconfigurable MUV buffer 250 is performing the JPEG mode processing, the input data stream 1295 to the buffer 250 has the JPEG compression processed pixels or JPE data.
Includes a single component performing G compression. The output data stream of the buffer 250 is JPE
Single channel data block or JP for G decompression processing
It contains the pixel data of the EG expansion process. This JP
In the example of EG compression, the input pixels are Y, U, V, O
Can be configured up to channels. When a specified number of pixels have been processed as a complete pixel block, the extraction of a single component data block can begin. Each single component data block is composed of data of the same channel pixels stored in the buffer. Thus, in this example, up to four single component data blocks can be extracted from one pixel data block. In this specific example, when the reconfigurable MUV buffer 250 is processing in the JPEG mode (mode 2) for JPEG compression, a large number of unit minimum codes (MCUs)
Can buffer 64 single or multiple channels of pixels each, and can extract multiple 64-byte long single channel component data blocks from each buffered MCU. For example, while buffer 1289 is in JPEG mode (mode 2) to perform JPEG decompression, the output data stream
It consists of output pixels with a maximum of four components Y, U, V, O. When the required number of completed single component data blocks have been written to the buffer, pixel data can be extracted. The bytes from the four single component data blocks corresponding to the different color components are retrieved as output pixels.

【0336】図117は図116のエンコーダ1290
の詳細図である。ピクセルブロックの伸長のでは、入力
データオブジェクトそれぞれはストレージデバイス12
93に格納される前にバイト方向のローテーションによ
り符号化される(図129)。ローテーションの大きさ
は入力ローテーション制御信号1303により決定され
る。この例ではピクセルデータが最大の4バイトであっ
たときは、32ビットの4入力1出力のマルチプレクサ
1320および1325が、4つのうちの1つの可能な
入力ピクセルのローテーションの選択に用いられる。例
えば、もしピクセルの4つのバイトが(3,2,1,
0)のようにラベルが付けられていたとすると、このピ
クセルのローテーションは(3,2,1,0)(0,
3,2,1)(1,0,3,2)(2,1,0,3)と
なる。4つの符号化されたバイトはストレージデバイス
の1290に出力される。
FIG. 117 shows the encoder 1290 shown in FIG.
FIG. For pixel block decompression, each of the input data objects is stored in the storage device 12.
Before being stored in 93, it is encoded by rotation in the byte direction (FIG. 129). The size of the rotation is determined by the input rotation control signal 1303. In this example, when the pixel data is a maximum of four bytes, 32-bit four-input one-output multiplexers 1320 and 1325 are used to select one of four possible input pixel rotations. For example, if four bytes of a pixel are (3,2,1,
0), the rotation of this pixel is (3,2,1,0) (0,
3, 2, 1) (1, 0, 3, 2) (2, 1, 0, 3). The four encoded bytes are output to the storage device 1290.

【0337】バッファがJPEGモード(モード2)以
外のモード、例えば、単一ルックアップテーブルモード
(モード0)、多重ルックアップテーブルモードである
時には、バイト方向のローテーションは必要ではなく、
また入力データオブジェクトに対して行えない。入力デ
ータオブジェクトは後者の場合に、ノーローテーション
の値をもつ入力ローテーション制御信号を無視すること
によって、ローテーションにより妨害を受ける。この値
1323はである。2入力1出力のマルチプレクサ13
21は制御信号1326を入力ローテーション制御信号
1303とノーオペレーション値1323の選択をする
ことによって生成する。現在の処理モード1302はマ
ルチプレクサ選択信号を生成するために、ピクセルブロ
ック分解モードの値と比較される。。信号1326によ
って制御される4入力1出力のマルチプレクサ1320
は入力データオブジェクトの4つのローテーションのう
ち1つを選択し、符号化された入力データストリーム1
326上に符号化された有力データオブジェクトを生成
する。
When the buffer is in a mode other than the JPEG mode (mode 2), for example, in a single lookup table mode (mode 0) or a multiple lookup table mode, rotation in the byte direction is not necessary.
Also, it cannot be performed on input data objects. The input data object is, in the latter case, disturbed by rotation by ignoring the input rotation control signal with no rotation value. This value 1323 is 2 input 1 output multiplexer 13
21 generates a control signal 1326 by selecting an input rotation control signal 1303 and a no-operation value 1323. The current processing mode 1302 is compared with the value of the pixel block decomposition mode to generate a multiplexer select signal. . 4-input, 1-output multiplexer 1320 controlled by signal 1326
Selects one of the four rotations of the input data object and encodes the encoded input data stream 1
Generate a potential data object encoded on 326.

【0338】図118は符号化された出力データストリ
ーム1297を復号化するデコーダ1291を実装する
組み合わせ回路の回路図である。デコーダ1321はエ
ンコーダと本質的に同様な方法で動作する。デコーダは
データバッファがJPEGモード(モード2)である場
合のみにデータを操作する。下部の符号化されたデータ
ストリーム1297内の符号化された出力データオブジ
ェクトの下位32ビットはデコーダに渡される。データ
はエンコーダ1290でローテーションするのとは逆の
感覚でバイト方向のローテーションを用いて復号化され
る。32ビットの4入力1出力のマルチプレクサは、可
能な4つの種類の符号化データのうちの1つを選択する
ために用いられる。例えば4バイトの入力ピクセルが
(3,2,1,0)の様にラベルが付けられているとす
ると、このピクセルのローテーションの種類は(3,
2,1,0)(2,1,0,3)(1,0,3,2)
(0,3,2,1)の4つが可能である。出力ローテー
ション制御信号1304はバッファがピクセルブロック
分解ノードの時と、他のオペレーションモードでノーオ
ペレーション値が無視されたときに使用される。ノーオ
ペレーション値1333は0である。2入力1出力のマ
ルチプレクサ1331は、出力ローテーション制御信号
1304とノーオペレーション値1333の選択を行う
ことで信号1334を生成する。現在の処理モード13
02はマルチプレクサ選択信号1332を生成するため
に、ピクセルブロック分解モードの値と比較される。信
号1334よって制御される4入力1出力のマルチプ
レクサ1330は符号化された出力データストリーム1
297上の符号化された出力データオブジェクトの4種
類のローテーションを選択し、出力データストリーム1
298上に出力データを生成する。
FIG. 118 is a circuit diagram of a combinational circuit implementing a decoder 1291 for decoding the encoded output data stream 1297. Decoder 1321 operates in essentially the same way as an encoder. The decoder operates on data only when the data buffer is in JPEG mode (mode 2). The lower 32 bits of the encoded output data object in the lower encoded data stream 1297 are passed to the decoder. The data is decoded using byte-wise rotation in the opposite sense as rotating by encoder 1290. A 32-bit 4-input, 1-output multiplexer is used to select one of four possible types of encoded data. For example, if a 4-byte input pixel is labeled as (3,2,1,0), the rotation type of this pixel is (3,2,1,0)
2,1,0) (2,1,0,3) (1,0,3,2)
Four (0, 3, 2, 1) are possible. The output rotation control signal 1304 is used when the buffer is a pixel block decomposition node and when no operation values are ignored in other operation modes. The no operation value 1333 is 0. The two-input one-output multiplexer 1331 generates the signal 1334 by selecting the output rotation control signal 1304 and the no-operation value 1333. Current processing mode 13
02 is compared with the value of the pixel block decomposition mode to generate a multiplexer select signal 1332. A 4-input, 1-output multiplexer 1330 controlled by signal 1334 provides an encoded output data stream 1
297. Select the four types of rotation of the encoded output data object on the output data stream 1
298 on the output data.

【0339】図116において、回路で用いられる内部
読み込みアドレス生成の方法は、再コンフィギュレーシ
ョン可能なMUVバッファ250の処理モード1302
によって選択される。単一ルックアップテーブルモード
(モード0)と多重ルックアップテーブルモード(モー
ド1)では読み込みアドレスは外部読み込みアドレス1
299,1300,1301の形でMAG805(図1
08)によって生成される。単純ルックアップテーブル
モード(モード0)ではストレージデバイス1293上
にメモリモジュール1380,1381,1382,1
383,1384,1385(図121)は一緒に処理
する。メモリモジュール1380から1385(図12
1)に与えられる書き込みアドレスと読み込みアドレス
は本質的に同じである。即ち、ストレージデバイス12
93は外部回路に1つの読み込みアドレスと1つの書き
込みアドレスの供給のみを必要とし、これらのアドレス
をメモリモジュール1380から空1385(図12
1)に分配するために内部ロジックを使用する。モード
0では、読み込みアドレスは外部アドレス1299(図
116)により与えられ、本質的に変化しないまま内部
アドレス1348(図121)に分配される。外部読み
込みアドレス1349,1350,1351(図12
1)はモード0では使用されない。書き込みアドレスは
外部書き込みアドレス1305(図116)により与え
られ、本質的に修正なしで各メモリモジュール1380
から1385(図121)の書き込みアドレスに接続さ
れる。
In FIG. 116, the method of generating the internal read address used in the circuit is based on the processing mode 1302 of the reconfigurable MUV buffer 250.
Selected by. In the single lookup table mode (mode 0) and the multiple lookup table mode (mode 1), the read address is the external read address 1.
MAG805 in the form of 299, 1300, 1301 (FIG. 1)
08). In the simple lookup table mode (mode 0), the memory modules 1380, 1381, 1382, 1 are stored on the storage device 1293.
383, 1384 and 1385 (FIG. 121) are processed together. The memory modules 1380 to 1385 (FIG. 12)
The write address and the read address given in 1) are essentially the same. That is, the storage device 12
93 requires only one read address and one write address to be supplied to the external circuit, and these addresses are stored in the memory module 1380 as empty 1385 (FIG. 12).
Use internal logic to distribute to 1). In mode 0, the read address is given by the external address 1299 (FIG. 116) and is distributed to the internal address 1348 (FIG. 121) essentially unchanged. External read addresses 1349, 1350, 1351 (FIG. 12)
1) is not used in mode 0. The write address is given by the external write address 1305 (FIG. 116), and each memory module 1380 is essentially unchanged.
To 1385 (FIG. 121).

【0340】ここでは、多重ルックアップテーブルモー
ド(モード1)における3ルックアップテーブルの構成
を示す。3つのテーブルが独立にアクセスされるとき、
符号化された入力データは1380から1385(図1
21)までのすべてのメモりもジュールに同時に書き込
まれ、従って3つのテーブルそれぞれに1つのインデッ
クスが必要となる。メモリモジュール1380から13
85(図212)への3つのインデックス、即ち読み込
みアドレスはストレージデバイス1293により与えら
れる。これらの読み込みアドレスは、内部ロジックを用
いて1380から1385の適切なメモリモジュールに
分配される。本質的に単一ルックアップテーブルモード
のときと同様な手法で、外部から与えられる書き込みア
ドレスは、本質的な変更なしに1308から1385の
それぞれのメモリモジュールのアドレスに接続される。
その結果、多重ルックアップテーブルモード(モード
1)では外部読み込みアドレス1299,1300,1
311は内部読み込みアドレス1348,1349,1
350にそれぞれ分配される。内部読み込みアドレス1
352はモード1では使用されない。JPEGモード
(モード2)で使用される内部アドレス生成方法は前述
の方法とは異なる。
Here, the configuration of a three lookup table in the multiple lookup table mode (mode 1) is shown. When three tables are accessed independently,
The encoded input data is 1380 to 1385 (FIG. 1).
All memories up to 21) are also written to the joule at the same time, thus requiring one index for each of the three tables. Memory modules 1380 to 13
The three indices to 85 (FIG. 212), the read address, are provided by the storage device 1293. These read addresses are distributed to the appropriate memory modules 1380 to 1385 using internal logic. In essentially the same manner as in single look-up table mode, an externally applied write address is connected to each memory module address from 1308 to 1385 without substantial change.
As a result, in the multiple lookup table mode (mode 1), the external read addresses 1299, 1300, 1
311 is an internal read address 1348, 1349, 1
350 respectively. Internal read address 1
352 is not used in mode 1. An internal address generation method used in the JPEG mode (mode 2) is different from the above-described method.

【0341】図119はJPEG圧縮を行うJPEGモ
ード(モード2)における、再コンフィギュレーション
可能なデータバッファ用の、読み込みアドレスおよびロ
ーテーション信号生成回路1292を実装する組み合わ
せ回路の回路図である。JPEGモード(モード2)で
は、信号生成器1292はコンポーネントカウンタ13
40とデータバイトカウンタ1341の出力を、ストレ
ージデバイス1293を含むメモリーモジュールの内部
読み込みアドレスを計算するために用いている。コンポ
ーネントブロックカウンタ1340はストレージデバイ
スに格納されている、ピクセルデータブロックから抽出
したコンポーネントブロック数を生成する。そのブロッ
ク数はデータバイトカウンタ1341の出力を4倍する
ことで与えられる。具体的には、ピクセルブロック分解
モードにおける内部読み込みアドレス1348、134
9、1350、1351は次のように計算される。コン
ポーネントブロックカウンタはオフセット値1343、
1344、1345、1347を計算するために使用さ
れ、また出力データバイトカウンタ1341はベース読
み込みアドレス1354を生成するために用いられる。
オフセット値1343はベース読み込みアドレス135
4に加算された1358で、加算値は内部読み込みアド
レス1348(あるいは1349,1350,135
1)である。メモリモジュールのオフセット値は、多重
メモリモジュールで実行される同時読み込みに対して一
般的に異なる値をとるが、コンポーネントブロックの抽
出においては本質的に同じである。ピクセルデータブロ
ック分解モードにおける4つの内部読み込みアドレスを
計算するのに用いられるベースアドレス1354も同様
である。インクリメント信号1308はコンポーネント
バイトカウンタのインクリメント信号として使用され
る。カウンタは読み込みが成功する度にインクリメント
される。コンポーネントブロックカウンタインクリメン
ト信号1356は、単一校正用をデータブロックが正常
にバッファから取り出された後、コンポーネントブロッ
クカウンタ1340をインクリメントするのに用いられ
る。
FIG. 119 is a circuit diagram of a combination circuit for mounting a read address and rotation signal generation circuit 1292 for a reconfigurable data buffer in the JPEG mode (mode 2) for performing JPEG compression. In the JPEG mode (mode 2), the signal generator 1292
40 and the output of the data byte counter 1341 are used to calculate the internal read address of the memory module including the storage device 1293. The component block counter 1340 generates the number of component blocks extracted from the pixel data blocks stored in the storage device. The number of blocks is given by multiplying the output of the data byte counter 1341 by four. Specifically, the internal read addresses 1348 and 134 in the pixel block decomposition mode
9, 1350 and 1351 are calculated as follows. The component block counter has an offset value of 1343,
Output data byte counter 1341 is used to generate base read address 1354, and is used to calculate 1344, 1345, 1347.
The offset value 1343 is the base read address 135
4 is added to the internal read address 1348 (or 1349, 1350, 135).
1). The offset values of the memory modules generally take different values for simultaneous reading performed by multiple memory modules, but are essentially the same in the extraction of component blocks. The same applies to the base address 1354 used to calculate the four internal read addresses in the pixel data block decomposition mode. The increment signal 1308 is used as an increment signal of the component byte counter. The counter is incremented for each successful read. The component block counter increment signal 1356 is used to increment the component block counter 1340 after a data block for single calibration has been successfully retrieved from the buffer.

【0342】出力ローテーション制御信号1304(図
116)はコンポーネントブロックカウンタの出力と出
力データバイトカウンタの出力から取り出され、本質的
に内部アドレスの生成と同じ方法である。コンポーネン
トブロックカウンタの出力はローテーションオフセット
1347を計算するのに用いられる。出力ローテーショ
ン制御信号1304はローテーションオフセット135
5とベース読み込みアドレス1354の和の最下位2ビ
ットにより与えられる。入力ローテーション制御信号
は、アドレス及びローテーション制御信号生成器の例の
様に、外部書き込みアドレス1305の最下位2ビット
により与えられる。
The output rotation control signal 1304 (FIG. 116) is derived from the output of the component block counter and the output of the output data byte counter, and is essentially the same as the generation of the internal address. The output of the component block counter is used to calculate a rotation offset 1347. The output rotation control signal 1304 is a rotation offset 135
5 and the base least significant bit of the sum of the base read address 1354. The input rotation control signal is provided by the least significant two bits of the external write address 1305 as in the example of the address and rotation control signal generator.

【0343】図120は、再コンフィギュレーション可
能なMUVバッファ250に格納された単一コンポーネ
ントデータからの多重チャネルピクセルデータの再構成
に用いられるもう1つのアドレス生成器1292であ
る。この場合、バッファはJPEG伸長のためのJPE
Gモード(モード2)となる。この場合、単一コンポー
ネントデータブロックはバッファに格納され、ピクセル
データブロックはバッファから取り出される。この例で
は、メモリモジュールへの書き込みアドレスは、本質的
変更なしで外部書き込みアドレス1305によって与え
られる。単一コンポーネントブロックは連続したメモリ
に格納される。この例の入力ローテーション制御信号1
303は単に書き込みアドレスの最下位2ビットによっ
てセットされる。ピクセルカウンタ1360は、バッフ
ァ内に格納されている単一コンポーネントブロックから
抽出されたピクセル数の記録を保持するために用いられ
る。ピクセルカウンタの出力は、読み込みアドレス13
48、1349、1350、1351及び出力ローテー
ション制御信号1304を生成するために用いられる。
一般に読み込みアドレスは、ストレージデバイス129
3を構成するそれぞれのモジュール毎に異なっている。
この例では、読み込みアドレスは単一コンポーネントブ
ロックインデックス1362、1363、1364、1
365あるいは1365とバイトインデックス1361
の2つの部分からなる。特定のブロックの単一コンポー
ネントブロックインデックスを計算するために、オフセ
ットが出力ピクセルカウンタのビット3と4に加えられ
る。一般にオフセット1366、1367、1368、
1369はそれぞれの読み込みアドレスで異なる。ピク
セルカウンタのビット2からビット0は読み込みアドレ
スのバイトインデックス1361に用いられる。読み込
みアドレスは図120に示されるように、単一コンポー
ネントブロックインデックス1362、1363、13
64、1365あるいは1365とバイトインデックス
1361の結合の結果である。この例では、出力ローテ
ーション制御信号1304は、本質的な変化なしにピク
セルカウンタの出力のビット4とビット3により生成さ
れる。インクリメント信号1308はピクセルカウンタ
1360をインクリメントするためのピクセルカウンタ
インクリメント信号として使用される。ピクセルカウン
タ1360はピクセルが正常にバッファから取り出され
たときにインクリメントされる。
FIG. 120 is another address generator 1292 used to reconstruct multi-channel pixel data from single component data stored in the reconfigurable MUV buffer 250. In this case, the buffer is JPE for JPEG decompression.
The mode becomes the G mode (mode 2). In this case, the single component data block is stored in the buffer, and the pixel data block is retrieved from the buffer. In this example, the write address to the memory module is given by the external write address 1305 without substantial change. Single component blocks are stored in contiguous memory. Input rotation control signal 1 of this example
303 is simply set by the least significant two bits of the write address. Pixel counter 1360 is used to keep track of the number of pixels extracted from a single component block stored in the buffer. The output of the pixel counter is read address 13
48, 1349, 1350, 1351 and an output rotation control signal 1304.
Generally, the read address is the storage device 129
3 is different for each module.
In this example, the read address is a single component block index 1362, 1363, 1364, 1
365 or 1365 and byte index 1361
It consists of two parts. An offset is added to bits 3 and 4 of the output pixel counter to calculate a single component block index for a particular block. Offsets 1366, 1367, 1368,
1369 is different for each read address. Bit 2 to bit 0 of the pixel counter are used for the byte index 1361 of the read address. The read address is, as shown in FIG. 120, a single component block index 1362, 1363, 13
64, 1365 or 1365 and the result of combining byte index 1361. In this example, the output rotation control signal 1304 is generated by bits 4 and 3 of the output of the pixel counter without substantial change. The increment signal 1308 is used as a pixel counter increment signal for incrementing the pixel counter 1360. Pixel counter 1360 is incremented when a pixel is successfully removed from the buffer.

【0344】図121はストレージデバイス1293の
構造である。ストレージデバイス1293は1383、
1384、1385の3つの4ビットワイドメモリモジ
ュールと1380,1381、1382の3つの8ビッ
トワイドメモリモジュールを持つことができる。メモリ
モジュールは単一ルックアップテーブルモード(モード
0)の36ビットのワード、多重ルックアップテーブル
モード(モード1)の12×3ビットのワード、JPE
Gモード(モード2)における32ビットのピクセルあ
るいは4×8ビットの単一コンポーネントデータを格納
するために結合できる。通常それぞれのメモリモジュー
ルは符号化された入力及び出力データストリーム(12
96と1297)の異なる部分に関連づけられる。たと
えば、メモリモジュール1380は符号化された入力デ
ータストリーム1296のビット0からビット7に接続
されデータ入力ポートと符号化された出力データストリ
ーム1297のビット0からビット7に接続されたデー
タ出力ポートをもつ。この例ですべてのメモリモジュー
ルの書き込みアドレスは一緒に接続され、同時に同じ値
を共有する。一方、図121に示されるメモリモジュー
ルの読み込みアドレス1386,1387,1388,
1390,1391は読み込みアドレス生成器1292
により与えられ、これらは一般に異なる値をとる。例で
は、共通の書き込み有効信号はすべての8ビットメモリ
モジュールに対して書き込み有効信号を出すために用い
られ、第二の共通の書き込み有効信号はすべての4ビッ
トメモリモジュールに対して書き込み有効信号を出すた
めに用いられる。
FIG. 121 shows the structure of the storage device 1293. Storage device 1293 is 1383,
It is possible to have three 4-bit wide memory modules 1384 and 1385 and three 8-bit wide memory modules 1380, 1381 and 1382. The memory module is a 36-bit word in single lookup table mode (mode 0), a 12 × 3 bit word in multiple lookup table mode (mode 1), JPE
Can be combined to store 32 bit pixels or 4x8 bit single component data in G mode (mode 2). Usually each memory module has an encoded input and output data stream (12
96 and 1297). For example, memory module 1380 has a data input port connected to bits 0 through 7 of encoded input data stream 1296 and a data output port connected to bits 0 through 7 of encoded output data stream 1297. . In this example, the write addresses of all memory modules are connected together and simultaneously share the same value. On the other hand, the read addresses 1386, 1387, 1388,
1390 and 1391 are read address generators 1292
Which generally take different values. In the example, a common write enable signal is used to issue a write enable signal to all 8-bit memory modules, and a second common write enable signal sends a write enable signal to all 4-bit memory modules. Used to get out.

【0345】図122はストレージデバイス1293内
のメモリモジュールにアクセスするための読み込みアド
レス1386,1387,1388,1389,139
0を生成するための組み合わせ回路の回路図である。符
号化されたそれぞれの入力データオブジェクトは部分部
分に分解され、それぞれの部分はストレージデバイスの
独立したメモリモジュール内に格納される。従って通
常、すべての処理モードにおけるすべてのメモリモジュ
ールの書き込みアドレスは本質的には同じであり、メモ
リモジュールの書き込みアドレスを計算するために実質
的にロジックは必要ない。一方、読み込みアドレスは通
常、処理毎に異なり、それぞれの処理モードにおけるメ
モリモジュールそれぞれに対しても異なる。再コンフィ
ギュレーション可能なMUVバッファ250の出力デー
タストリーム1298内のすべてのバイトはJPEG圧
縮のJPEGモード(モード2)のバッファに格納され
ているピクセルデータから抽出された単位コンポーネン
トデータ、あるいはJPEG伸長のJPEGモードのバ
ッファ内に格納されて単一コンポーネントデータから抽
出されたピクセルデータを含まなくてはならない。出力
データに対する要求はバッファへの4つの読み込みアド
レス1348、1349、1350、1351の生成に
よって満たされる。多重ルックアップテーブルモード
(モード1)においては、最大3つの検索テーブルがバ
ッファに格納され、従って最大3つまでの読み込みアド
レス1348、1349、1350が3つの検索テーブ
ルにインデックスをつけるために必要である。すべての
メモリモジュールの読み込みアドレスは単一ルックアッ
プテーブルモード(モード0)の場合と同じであり、読
み込みアドレス248のみがこのモードで用いられる。
図122に示されている制御回路の例はストレージデバ
イス1293を構成する6つのメモリモジュールそれぞ
れの読み込みアドレス1386−1391を計算するた
めに、バッファの処理モード信号と最大4つの読み込み
アドレスを用いる。読み込みアドレス生成器1292は
入力信号として外部アドレスバス1348,1349、
1350、1351からなる外部読み込み信号をもち
い、ストレージデバイス1293を構成するメモリモジ
ュールの内部読み込みアドレス1386,1387、1
389、1390を生成する。
FIG. 122 shows read addresses 1386, 1387, 1388, 1389, and 139 for accessing a memory module in the storage device 1293.
FIG. 3 is a circuit diagram of a combinational circuit for generating 0. Each encoded input data object is decomposed into sub-portions, and each sub-portion is stored in a separate memory module of the storage device. Thus, typically, the write addresses of all memory modules in all processing modes are essentially the same, and substantially no logic is required to calculate the write addresses of the memory modules. On the other hand, the read address usually differs for each processing, and also differs for each memory module in each processing mode. All bytes in the output data stream 1298 of the reconfigurable MUV buffer 250 are unit component data extracted from pixel data stored in the JPEG compressed JPEG mode (mode 2) buffer, or JPEG decompressed JPEG. Must contain pixel data stored in the mode buffer and extracted from the single component data. The request for output data is satisfied by generating four read addresses 1348, 1349, 1350, 1351 to the buffer. In the multiple look-up table mode (mode 1), up to three lookup tables are stored in the buffer, so up to three read addresses 1348, 1349, 1350 are needed to index the three lookup tables. . The read addresses of all memory modules are the same as in single look-up table mode (mode 0), and only read address 248 is used in this mode.
The control circuit example shown in FIG. 122 uses the processing mode signal of the buffer and up to four read addresses to calculate the read addresses 1386-1391 of each of the six memory modules constituting the storage device 1293. The read address generator 1292 has external address buses 1348 and 1349 as input signals,
Using the external read signals 1350 and 1351, the internal read addresses 1386, 1387, and 1 of the memory module constituting the storage device 1293 are used.
389, 1390 are generated.

【0346】図123はバッファ250が単一ルックア
ップテーブルモードにある時に、どのようにして20ビ
ットの行列係数がバッファ250に格納されるのかを示
した図である。この場合、データオブジェクトが再コン
フィギュレーション可能なMUVバッファに書き込まれ
るときにはキャッシュ上のデータオブジェクトに対して
エンコーディングは通常行われない。行列係数は8ビッ
トメモリモジュール1380,1381,1382に格
納される。行列係数のビット7からビット0はメモリモ
ジュール1380に格納され、ビット15からビット8
はメモリモジュール1381に格納され、ビット19か
らビット16はメモリモジュール1382の下位4ビッ
トに格納される。命令の残りのために必要であるような
バッファに格納されたデータオブジェクトは何回も取り
出される。単一ルックアップテーブルモードにおける、
すべてのメモリモジュールの読み込みと書き込みのアド
レスは本質的に同じである。
FIG. 123 is a diagram showing how 20-bit matrix coefficients are stored in the buffer 250 when the buffer 250 is in the single look-up table mode. In this case, no encoding is normally performed on the data object on the cache when the data object is written to the reconfigurable MUV buffer. The matrix coefficients are stored in 8-bit memory modules 1380, 1381, 1382. Bits 7 to 0 of the matrix coefficient are stored in the memory module 1380 and bits 15 to 8
Are stored in the memory module 1381, and bits 19 to 16 are stored in the lower 4 bits of the memory module 1382. Data objects stored in a buffer as needed for the rest of the instruction are retrieved many times. In single lookup table mode,
The read and write addresses of all memory modules are essentially the same.

【0347】図124は多重ルックアップテーブルモー
ド(モード1)において、どのようにしてバッファにテ
ーブルエントリが格納されるかを示した図である。この
場合、3つの検索テーブルはバッファに格納され、それ
ぞれの検索テーブルは4ビットのインターバル値と8ビ
ットの小数値をもつ。通常インターバール値は4ビット
のメモリモジュールに格納され、小数値は8ビットのメ
モリモジュールに格納される。この場合3つの検索テー
ブル1410,1411,1412はメモリバンク13
80と1383、1381と1384、1382と13
85に格納される。分離過去も未有効制御信号1306
と1307(図121)はストレージデバイスに格納さ
れている小数値に影響せずにストレージデバイス129
3にインターバル値を書き込むことができる。本質的に
同様な方法でインターバル値に影響を与えずに小数値を
書き込むことができる。
FIG. 124 is a diagram showing how a table entry is stored in the buffer in the multiple lookup table mode (mode 1). In this case, three search tables are stored in the buffer, and each search table has a 4-bit interval value and an 8-bit decimal value. Normally, the interval value is stored in a 4-bit memory module, and the decimal value is stored in an 8-bit memory module. In this case, the three search tables 1410, 1411 and 1412 are stored in the memory bank 13
80 and 1383, 1381 and 1384, 1382 and 13
85. The control signal 1306 which is not effective even in the separation past
And 1307 (FIG. 121) are stored in the storage device 129 without affecting the decimal value stored in the storage device.
3, an interval value can be written. A decimal value can be written in essentially the same way without affecting the interval value.

【0348】図125はピクセルデータブロックを単一
要素データブロックに分解するJPEGモード(モード
2)の状態の再コンフィギュレーション可能なMUVバ
ッファ250にどのようにしてピクセルデータが書き込
まれるのかを示した図である。ストレージデバイス12
93は、8ビットメモリモジュールと同様な方法で統合
して扱われるメモリモジュール、1381と1384を
含むメモリモジュール1380、1381、1382、
1383、1384からなる4つの8ビットメモリバン
クとして統括される。メモリモジュール1385はJP
EGモード(モード2)では使用されない。32ビット
の符号化されたピクセルは4つのバイトに分解され、そ
れぞれが異なる8ビットのメモリモジュールに格納され
る。
FIG. 125 shows how pixel data is written to the reconfigurable MUV buffer 250 in the JPEG mode (mode 2), which breaks up pixel data blocks into single element data blocks. It is. Storage device 12
93 is a memory module that is integrated and handled in the same manner as the 8-bit memory module, and memory modules 1380, 1381, 1382 including 1381 and 1384,
It is controlled as four 8-bit memory banks consisting of 1383 and 1384. Memory module 1385 is JP
It is not used in the EG mode (mode 2). The 32-bit encoded pixel is broken down into four bytes, each stored in a different 8-bit memory module.

【0349】図126は単一コンポーネントモードであ
るストレージデバイス1293にどのようにして単一コ
ンポーネントデータブロックが格納されるのかを示した
図である。ストレージデバイス1293は、8ビットメ
モリモジュールと同様な方法で統合して扱われるメモリ
モジュール、1381と1384を含むメモリモジュー
ル1380、1381、1382、1383、1384
からなる4つの8ビットメモリバンクとして統括され
る。メモリモジュール1385はJPEGモード(モー
ド2)では使用されない。32ビットの符号化されたピ
クセルは4つのバイトに分解され、それぞれが異なる8
ビットのメモリモジュールに格納される。この場合、単
一コンポーネントブロックは64バイトからなる。単い
るコンポーネントブロックが亜バッファに書き込まれる
ときは、それぞれに異なる量のバイトローテーションが
適用される。32ビットの符号化されたピクセルデータ
はバッファ内の異なる単一コンポーネントデータブロッ
クを読むことで取り出される。
FIG. 126 shows how a single component data block is stored in storage device 1293 in the single component mode. The storage device 1293 is a memory module integrated and handled in the same way as an 8-bit memory module, and memory modules 1380, 1381, 1382, 1383, 1384 including 1381 and 1384
As four 8-bit memory banks. The memory module 1385 is not used in the JPEG mode (mode 2). The 32-bit encoded pixel is broken down into 4 bytes, each with a different 8 bytes.
Bits are stored in the memory module. In this case, a single component block consists of 64 bytes. When a single component block is written to the sub-buffer, a different amount of byte rotation is applied to each. 32-bit encoded pixel data is retrieved by reading different single component data blocks in the buffer.

【0350】より詳細な再コンフィギュレーション可能
なデータバッファ250の統括方法は、ピクセルオーガ
ナイザの節を参照せよ。以上の具体例では、再コンフィ
ギュレーション可能はデータバッファが、異なる命令と
関係するデータの処理に用いられることを示した。3つ
の処理モードのある再コンフィギュレーション可能なデ
ータバッファが明らかにされた。異なるアドレスの生成
技術がバッファの処理モードのそれぞれにおいて必要と
なる。単一ルックアップテーブルモード(モード0)は
画像変換において、行列係数をバッファに格納するのに
用いられる。多重ルックアップテーブルモード(モード
1)では多チャネルの色空間変換(CSC)における多
数のインターバル及びフラクション検索テーブルをバッ
ファに格納するのに用いられる。JPEGモード(モー
ド2)はJPEG圧縮、JPEG伸長それぞれにおい
て、MCUデータを8×8の単一コンポーネントブロッ
クに分解、あるいは8×8の単一コンポーネントブロッ
クをMCUに再合成するのに用いられる。
For more details on how to manage the reconfigurable data buffer 250, see the section on the pixel organizer. In the above example, it was shown that the reconfigurable data buffer is used for processing data related to different instructions. A reconfigurable data buffer with three processing modes has been identified. Different address generation techniques are required in each of the buffer processing modes. The single look-up table mode (mode 0) is used to store matrix coefficients in a buffer in image conversion. The multiple look-up table mode (mode 1) is used to buffer multiple interval and fraction lookup tables in a multi-channel color space conversion (CSC). The JPEG mode (mode 2) is used for decomposing MCU data into 8 × 8 single component blocks or recomposing 8 × 8 single component blocks into MCUs in JPEG compression and JPEG expansion.

【0351】3.18.3 結果オーガナイザ MUVバッファ250は結果オーガナイザ249におい
ても用いられる。結果オーガナイザ249は、メインデ
ータパス242あるいはJPEGコーダ241のストリ
ームをバッファしてフォーマットする。結果オーガナイ
ザ249はまた、図42で説明した結果データの圧縮、
非圧縮、非正規化、バイトレーンスワップ、再編成にも
関係する。更に結果オーガナイザ249は外部インター
フェースコントローラ238、ローカルメモリコントロ
ーラ236、周辺インターフェースコントローラ237
の要求に対し、その結果を転送する。
3.18.3 Result Organizer The MUV buffer 250 is also used in the result organizer 249. The result organizer 249 buffers and formats the stream of the main data path 242 or the JPEG coder 241. The result organizer 249 also compresses the result data described in FIG.
Also related to decompression, denormalization, byte lane swap, and reorganization. Further, the result organizer 249 includes an external interface controller 238, a local memory controller 236, and a peripheral interface controller 237.
In response to the request, transfer the result.

【0352】JPEG伸長モードの時、結果オーガナイ
ザ249はMUV RAM250をJPEGコーダ24
9の画像データをダブルバッファするために用いる。ダ
ブルバッファはMUVRAM250の半分に書き込まれ
ているJPEGコーダ241のデータを用いてJPEG
伸長する場合に、同時に残りの半分に書きこまれた画像
データが指定の格納場所に出力されるとき、そのパフォ
ーマンスをあげることができる。
In the JPEG decompression mode, the result organizer 249 stores the MUV RAM 250 in the JPEG coder 24.
9 to double buffer the image data. The double buffer uses the data of the JPEG coder 241 written in half of the MUVRAM 250 to perform JPEG
In the case of decompression, when the image data written in the other half at the same time is output to the designated storage location, the performance can be improved.

【0353】1,3及び4チャネル画像データは、同一
チャネルからの8ビットのコンポーネントを含む8×8
ブロックの形のJPEG伸長を行っている間に、結果オ
ーガナイザ249に渡される。結果オーガナイザはこれ
らのブロックを指定の順番でMUVRAM250に格納
し、また複数チャネルのインターリーブ画像のために、
データをMUVRAM250から読みこみを行っている
時のチャネルのメッシュを格納する。例えば、YUVに
よる3チャネルのJPEG圧縮ではJPEGコーダ24
1は3つの8×8ブロックを、初めにY、次にU、最後
にVの順で出力する。メッシュ処理がはそれぞれブロッ
クか1つのコンポーネントを取り出すことによって行わ
れ、ピクセルを(YUVX)の形で構成する。ここでX
は未使用チャネルである。バイトスワッピングは出力チ
ャネルのスワップが必要となったときに行われる。結果
オーガナイザはまた、伸長された出力データのクロマデ
ータの再構成のための必要なサブサンプリング処理を行
う必要がある。このことは生成するためにそれぞれのプ
ログラムチャネルを繰り返すという意味を含んでいる。
The 1, 3 and 4 channel image data are 8 × 8 including 8-bit components from the same channel.
While performing JPEG decompression in block form, it is passed to the result organizer 249. The result organizer stores these blocks in the specified order in the MUVRAM 250, and for multi-channel interleaved images,
The mesh of the channel when data is read from the MUVRAM 250 is stored. For example, in a 3-channel JPEG compression by YUV, a JPEG coder 24
1 outputs three 8 × 8 blocks in the order of Y first, then U, and finally V. The meshing is performed by extracting each block or one component, and constructing the pixels in (YUVX) form. Where X
Is an unused channel. Byte swapping occurs when output channel swapping becomes necessary. The result organizer also needs to perform the necessary sub-sampling for reconstruction of the chroma data of the decompressed output data. This implies that each program channel is repeated to generate.

【0354】図127にもどると図2の結果オーガナイ
ザ249の詳細が示されている。結果オーガナイザ24
9は、その処理に設定されるレジスタのレジスタファイ
ルを含む通常の標準CBusインターフェース840周
辺に基礎をおいている。結果オーガナイザ249の処理
はピクセルオーガナイザ249と同様であるが、リバー
スデータ操作が行われる。データ操作ユニット842は
バイトレーンスワッピング、コンポーネント代入、コン
ポーネント解放、非正規化をMUVアドレス発生器80
5により生成されるデータに対して行う。実行された処
理は図42を参照して前述の通り説明され、内部レジス
タにセットされた様々なフィールドに従って処理が行わ
れる。FIFOキュー843は出力データをそれがRB
us制御ユニット844を用いて出力される前にバッフ
ァを行う。RBus制御ユニット844はアドレスデコ
ーダとアドレス生成器によって構成される。格納モジュ
ール用のアドレスは、必要な出力バイト数のデータに加
えて、内部レジスタに格納される。更に、内部RO_C
UTレジスタはいくつくらいの出力バイトが出力バスの
バイトストリーム上に送られる前に欠落したかを決定す
る。加えて、RO_LMTレジスタは出力制限が中止さ
れた後の次のデータを用いて最大いくつのデータ項目が
出力されるかを決定する。MAG805はJPEG伸長
時にMUVRAM250のアドレスを生成する。MUV
RAM250はJPEGコーダからの出力をダブルバッ
ファするために用いられる。MAG805は内部コンフ
ィギュレーションレジスタに依存するMUVRAM25
0におけるコンポーネントのメッシュを行い、ピクセル
の入った単一チャネル、3チャネル、4チャネルの出力
を行う。バイトレーンスワッピングがピクセルデータを
適切な場所に格納する前に必要となるので、MUVRA
M250から得られるデータはデータ操作ユニットを通
して渡される。結果オーガナイザ249がJPEGモー
ドになっていないときはMAG805は単にPBusレ
シーバ845のデータをデータ操作ユニット842にダ
イレクトに送る。
Returning to FIG. 127, details of the result organizer 249 of FIG. 2 are shown. Result Organizer 24
9 is based around a normal standard CBus interface 840 that contains a register file of registers that are set for the process. The processing of the result organizer 249 is similar to that of the pixel organizer 249, except that a reverse data operation is performed. The data operation unit 842 performs byte lane swapping, component assignment, component release, and denormalization on the MUV address generator 80.
5 for the data generated. The executed processing is described above with reference to FIG. 42, and processing is performed according to various fields set in the internal registers. The FIFO queue 843 stores the output data in the RB
Buffering is performed before output using the us control unit 844. The RBus control unit 844 includes an address decoder and an address generator. The address for the storage module is stored in an internal register in addition to the data of the required number of output bytes. Further, the internal RO_C
The UT register determines how many output bytes are missing before being sent onto the output bus byte stream. In addition, the RO_LMT register determines the maximum number of data items to be output using the next data after the output restriction has been suspended. The MAG 805 generates an address of the MUVRAM 250 at the time of JPEG decompression. MUV
RAM 250 is used to double-buffer the output from the JPEG coder. The MAG 805 is an MUVRAM 25 depending on an internal configuration register.
A mesh of the components at 0 is performed, and a single channel, three channels, and four channels of pixels are output. Since byte lane swapping is required before storing the pixel data in the proper location, the MUVRA
The data obtained from M250 is passed through a data manipulation unit. When the result organizer 249 is not in the JPEG mode, the MAG 805 simply sends the data of the PBus receiver 845 directly to the data operation unit 842.

【0355】3.18.4 オペランドオーガナイザB
及びC 図2に再び戻って、2つの独立なオペランドオーガナイ
ザ247と248はデータキャッシュコントロール24
0のデータバッファの機能と、JPEGコーダ241あ
るいはメインデータパス242にデータを転送する機能
を持つ。オペランドオーガナイザ247と248は様々
なモードで操作される。 (a) オペランドオーガナイザがCBus要求にたい
してのみ応答するアイドルモード (b) 現在の命令のデータがオペランドレジスタの内
部レジスタに格納されている時の直接モード (c) オペレータオーガナイザがシーケンシャルアド
レスおよびデータキャッシュコントローラ240のバッ
ファが満杯である時のデータを生成するシーケンシャル
モード。
3.18.4 Operand Organizer B
2 and C. Returning again to FIG. 2, two independent operand organizers 247 and 248
0 and a function to transfer data to the JPEG coder 241 or the main data path 242. Operand organizers 247 and 248 operate in various modes. (A) The idle mode in which the operand organizer responds only to a CBus request. (B) The direct mode when the data of the current instruction is stored in the internal register of the operand register. (C) The sequential address and data cache controller 240 Sequential mode to generate data when the buffer is full.

【0356】多数のメインデータパス242の処理モー
ドは、少なくともどちらかのオペランドオーガナイザに
シーケンシャルモードであることを要求する。オペラン
ドオーガナイザB247における、合成を含むこれらの
モードは、ほかのイメージを用いて合成されるバッファ
ピクセルで必要である。オペランドオーガナイザC24
8はそれぞれのデータチャネルの値の減衰を行う合成処
理に用いられる。ハーフトーンモードではオペランドオ
ーガナイザB247は8ビットの行列係数のバッファを
行い、階層的画像フォーマット分解モードではオペラン
ドオーガナイザB247は垂直補間と残部融合命令の両
方のデータのバッファを行う。 (d) 定常モードではオペランドオーガナイザBは単
一の内部データワードの組立とそのワードを内部レジス
タによって指定された回数繰返すことを行う。 (e) タイルモードではオペランドオーガナイザBは
ピクセルタイルを構成するデータのバッファを行う。 (f) ランダムモードでは、オペランドオーガナイザ
はデータキャッシュコントローラにMDP242あるい
はJPEGコーダ241のアドレスをダイレクトに転送
する。
The processing mode of the multiple main data paths 242 requires at least one of the operand organizers to be in the sequential mode. These modes, including compositing, in operand organizer B247 are required for buffered pixels that are composited with other images. Operand organizer C24
Reference numeral 8 is used in a combining process for attenuating the value of each data channel. In the halftone mode, the operand organizer B247 buffers 8-bit matrix coefficients, and in the hierarchical image format decomposition mode, the operand organizer B247 buffers both the vertical interpolation and the residual fusion instruction data. (D) In the steady mode, operand organizer B assembles a single internal data word and repeats that word the number of times specified by the internal register. (E) In the tile mode, the operand organizer B buffers data constituting a pixel tile. (F) In the random mode, the operand organizer directly transfers the address of the MDP 242 or the JPEG coder 241 to the data cache controller.

【0357】内部長さレジスタは、シーケンシャル、タ
イル、定常の各モードの処理の時に、オペランドオーガ
ナイザ247、248の個々で生成される項目の数を決
定する。オペランドオーガナイザ247、248それぞ
れは、はそれまでに処理されたデータ項目の数を保持
し、内部レジスタによって決定される値に達したら停止
する。オペランドオーガナイザそれぞれは、バイトレー
ンスワッピングを用いた入力データのフォーマット、コ
ンポーネントの代入、圧縮・非圧縮・正規化機能、にた
いしてより信頼がある。要求された処理は内部レジスタ
を用いてコンフィギュレーションされる。更に、オペラ
ンドオーガナイザ247と248それぞれはデータ項目
を制限するためにコンフィギュレーションされる。
The internal length register determines the number of items generated individually by the operand organizers 247 and 248 when processing in the sequential, tile, and steady mode. Each of the operand organizers 247, 248 holds the number of data items processed so far and stops when it reaches a value determined by an internal register. Each of the operand organizers is more reliable with respect to input data format using byte lane swapping, component substitution, compression / decompression / normalization functions. Requested processing is configured using internal registers. Further, each of the operand organizers 247 and 248 is configured to limit data items.

【0358】図128では、オペランドオーガナイザ
(247、248)のより詳細な構成が示されている。
オペランドオーガナイザ247、248は通常の標準C
Busインターフェースとオペランドオーガナイザ全体
の制御を司るレジスタ850を含む。更に、OBus制
御ユニット851はデータキャッシュコントローラに接
続され、シーケンシャル、タイル、定常の各モードのア
ドレス生成、オペランドオーガナイザ247,248の
OBusインターフェースの通信を可能にする制御信号
の生成、入力ストリームの過去のクロックサイクルから
保存される状態を必要とする、正規化、繰り返し等を行
うデータ操作ユニットの制御を行う。オペランドオーガ
ナイザ247、248がシーケンシャル、あるいはタイ
ルモードであるときには、OBusコントローラユニッ
ト851はデータの要求をデータキャッシュコントロー
ラに送る。このときアドレスは内部レジスタによって決
定されている。
FIG. 128 shows a more detailed configuration of the operand organizers (247, 248).
Operand organizers 247 and 248 are standard C
It includes a register 850 that controls the Bus interface and the entire operand organizer. Further, the OBus control unit 851 is connected to the data cache controller, generates addresses in the sequential, tile, and steady modes, generates control signals enabling communication of the OBus interface of the operand organizers 247 and 248, and stores past input streams. It controls the data manipulation unit that performs normalization, repetition, etc., which requires a state saved from the clock cycle. When the operand organizers 247 and 248 are in the sequential or tile mode, the OBus controller unit 851 sends a request for data to the data cache controller. At this time, the address is determined by the internal register.

【0359】それぞれのオペランドオーガナイザは更
に、様々なモードの処理において、データキャッシュコ
ントローラ240からのデータをバッファするために用
いられる36ビット幅のFIFOバッファ852を含ん
でいる。データ操作ユニット853は、ピクセルオーガ
ナイザ246のデータ操作ユニット804に対応する機
能と同じ機能を行う。
[0359] Each operand organizer further includes a 36-bit wide FIFO buffer 852 used to buffer data from the data cache controller 240 in various modes of processing. The data operation unit 853 performs the same function as the function corresponding to the data operation unit 804 of the pixel organizer 246.

【0360】メインデータパス/JPEGコーダインタ
ーフェース854は通常処理モードにおいてメインデー
タパスやJPEGコーダモジュール242、241でや
りとりされるデータ及びアドレスを分配する。MDP/
JCインターフェース854はデータ操作ユニット85
3からのデータをメインデータパス及びそのデータを繰
り返すように構成されたプロセスに送る。色変換モード
の場合には、ユニット851、854はデータキャッシ
ュコントローラ240と色変換テーブルの高速アクセス
を確立するためにバイパスされる。
The main data path / JPEG coder interface 854 distributes data and addresses exchanged between the main data path and the JPEG coder modules 242 and 241 in the normal processing mode. MDP /
The JC interface 854 is a data operation unit 85
3 from the main data path and to a process configured to repeat the data. In the case of the color conversion mode, the units 851 and 854 are bypassed to establish high-speed access of the color conversion table with the data cache controller 240.

【0361】3.18.5 主データパス部 以下の実施例の特徴は、複数の画像処理動作を高速で行
うことのできる低価格のコンピュータアーキテクチャを
提供する画像プロセッサに関するものである。更に、画
像プロセッサは、元々は規定されなかった画像処理動作
を行うように構成されることのできる、柔軟性のあるコ
ンピュータアーキテクチャを提供することを目的とす
る。また、画像プロセッサは、同じロジックをたくさん
持っていて、設計プロセスが簡単で安くなるような、コ
ンピュータアーキテクチャを提供することをも目的とす
る。
3.18.5 Main Data Path Unit The feature of the following embodiment relates to an image processor which provides a low-cost computer architecture capable of performing a plurality of image processing operations at high speed. Further, the image processor aims to provide a flexible computer architecture that can be configured to perform image processing operations not originally defined. It is also an object of the image processor to provide a computer architecture that has a lot of the same logic and makes the design process simple and cheap.

【0362】コンピュータアーキテクチャは制御レジス
タブロック、復号ブロック、データオブジェクトプロセ
ッサ、および、フロー制御ロジックを具備する。制御レ
ジスタブロックは画像処理動作に関する全ての情報を格
納する。復号ブロックは情報を構成信号に復号し、入力
データオブジェクトインターフェースを構成する。入力
データオブジェクトインターフェースはデータオブジェ
クトを外部から受け取り格納する。そして、これらのデ
ータオブジェクトをデータオブジェクトプロセッサに配
分する。ある画像処理動作においては、入力データオブ
ジェクトインターフェースがデータオブジェクトのアド
レスを生成することもあり、これらのデータオブジェク
トのソースが正しいデータオブジェクトを提供できるよ
うになる。データオブジェクトプロセッサは、受け取っ
たデータオブジェクトに対して算術演算を行う。フロー
制御ロジックは、データオブジェクト処理ロジックの中
のデータオブジェクトフローを制御する。
The computer architecture includes a control register block, a decoding block, a data object processor, and flow control logic. The control register block stores all information related to the image processing operation. The decoding block decodes the information into constituent signals and constitutes an input data object interface. The input data object interface receives and stores data objects from outside. Then, these data objects are distributed to the data object processor. In some image processing operations, the input data object interface may generate the addresses of the data objects so that the source of these data objects can provide the correct data object. The data object processor performs an arithmetic operation on the received data object. Flow control logic controls the data object flow in the data object processing logic.

【0363】特に、データオブジェクトプロセッサは、
いくつかの同一なデータオブジェクトサブプロセッサを
備えることができ、各サブプロセッサは、入力データオ
ブジェクトの一部を処理する。データオブジェクトサブ
プロセッサは、データオブジェクトの当該部分に対し算
術演算を行ういくつかの同一な多機能算術部、出力デー
タオブジェクトを処理する後処理ロジック、および、多
機能算術部と後処理部とを接続する多重化ロジックを有
する。多機能算術部は計算されたデータオブジェクトの
ための記憶装置を具備する。この記憶装置は、フロー制
御ロジックによってイネーブルされるか又はデスエーブ
ルされる。多機能算術部および多重化ロジックは、復号
ロジックによって生成された構成信号によって構成され
る。
In particular, the data object processor
There can be several identical data object sub-processors, each processing a portion of the input data object. The data object subprocessor connects several identical multi-function arithmetic units that perform arithmetic operations on the relevant part of the data object, post-processing logic that processes output data objects, and multi-function arithmetic and post-processing units. Multiplexing logic. The multi-function arithmetic unit has a storage device for calculated data objects. This storage is enabled or disabled by the flow control logic. The multi-function arithmetic unit and the multiplexing logic are configured by configuration signals generated by the decoding logic.

【0364】なお、復号ロジックからの構成信号は外部
プログラミングエージェントによって変化されることが
できる。このメカニズムを通じて、どのような多機能ブ
ロックおよび多重化ロジックであっても、外部プログラ
ミングエージェントによって個々に構成することがで
き、前もって規定されなかった画像処理動作を行うよう
に画像プロセッサを構成することを可能にする。本発明
の実施例が持つこれらの特徴およびその他の特徴を以下
で詳述する。
Note that configuration signals from the decoding logic can be changed by an external programming agent. Through this mechanism, any multi-function block and multiplexing logic can be individually configured by an external programming agent and configure the image processor to perform image processing operations not previously defined. to enable. These and other features of embodiments of the present invention are described in detail below.

【0365】図2において、前述したように、主データ
パス部242はJPEGデータ符号化以外の全てのデー
タ操作動作および命令を行う。これらの命令には、合
成、色空間変換、画像変換、畳込み演算、行列の乗算、
ハーフトーン処理、メモリ複写、および階層画像フォー
マットの解凍が含まれる。主データパス242はピクセ
ルオーガナイザ246およびオペランドオーガナイザ2
47、248から、ピクセルとオペランドデータとを受
け取り、結果出力を結果オーガナイザ249に送る。
In FIG. 2, as described above, the main data path section 242 performs all data manipulation operations and instructions other than JPEG data encoding. These instructions include composition, color space conversion, image conversion, convolution, matrix multiplication,
Includes halftoning, memory duplication, and decompression of the hierarchical image format. The main data path 242 includes the pixel organizer 246 and the operand organizer 2
47 and 248, receive the pixel and operand data and send the result output to the result organizer 249.

【0366】図129は、主データパス部242のブロ
ック図である。主データパス部242は汎用の画像プロ
セッサであって、入力インターフェース1460、画像
データプロセッサ1462、命令ワードレジスタ146
4、命令ワード復号器1468、制御信号レジスタ14
70、レジスタファイル1472、および、ROM14
75を備える。
FIG. 129 is a block diagram of the main data path unit 242. The main data path unit 242 is a general-purpose image processor, and includes an input interface 1460, an image data processor 1462, and an instruction word register 146.
4. Instruction word decoder 1468, control signal register 14
70, register file 1472, and ROM 14
75.

【0367】命令制御部235は、バス1454を通じ
て、命令ワードを命令ワードレジスタ1464へ移す。
それぞれの命令ワードは、実行すべき画像処理動作の種
類や画像処理動作の様々なオプションを選択するプラグ
などの情報を含んでいる。命令ワードは、バス1465
を経由して命令ワード復号器1468に運ばれる。それ
で、命令制御部235は、命令ワードを復号するように
命令ワード復号器1468に指示することができる。そ
の指示を受けると、命令復号器1468は命令ワードを
制御信号に復号する。それから、これらの制御信号はバ
ス1469を経由して制御信号レジスタ1470に運ば
れる。それから、制御信号レジスタの出力は、バス14
71を経由して入力インターフェース1460および画
像データプロセッサ1462に接続される。
The instruction control unit 235 transfers the instruction word to the instruction word register 1464 via the bus 1454.
Each command word contains information such as the type of image processing operation to be performed and plugs for selecting various options of the image processing operation. The instruction word is bus 1465
Through to the instruction word decoder 1468. Thus, the instruction control unit 235 can instruct the instruction word decoder 1468 to decode the instruction word. Upon receiving the instruction, instruction decoder 1468 decodes the instruction word into a control signal. These control signals are then carried via bus 1469 to control signal register 1470. Then, the output of the control signal register is
It is connected to an input interface 1460 and an image data processor 1462 via a line 71.

【0368】主データパス部242をより柔軟性のある
ものにするために、命令制御部235が制御信号レジス
タ1470に直接書き込むこともできる。これによっ
て、主データパス部242の構造を熟知している誰で
も、主データパス部242の細かい構成を行えるように
なり、主データパス部242は命令ワードで記述されて
いない画像処理動作をも実行できるようになる。
In order to make the main data path unit 242 more flexible, the instruction control unit 235 can write directly to the control signal register 1470. As a result, anyone who is familiar with the structure of the main data path unit 242 can perform a detailed configuration of the main data path unit 242, and the main data path unit 242 can perform image processing operations not described in the instruction word. You can do it.

【0369】所望の画像処理動作を実行するために必要
な全ての情報を命令ワードに収容できない場合、命令制
御部235は、その収容できない必要な全ての情報をレ
ジスタファイル1472のいくつかの選ばれたレジスタ
に書き込むことができる。この情報は、バス1473を
経由して、入力インターフェース1460および画像デ
ータプロセッサ1462に伝えられる。ある画像処理動
作において、入力インターフェース1460は主データ
パス部242の現在状態を反映するために、レジスタフ
ァイル1472の選ばれたレジスタの内容を更新するこ
ともあり得る。画像処理動作を実行するときに問題が生
じたとき、命令制御部235は前述の特徴を用いて、問
題を容易に発見できるようになる。
If not all the information necessary to execute a desired image processing operation can be stored in the instruction word, the instruction control unit 235 stores all the information that cannot be stored in some of the register files 1472. Can be written to the register. This information is transmitted to the input interface 1460 and the image data processor 1462 via the bus 1473. In some image processing operations, the input interface 1460 may update the contents of the selected register in the register file 1472 to reflect the current state of the main data path unit 242. When a problem occurs when performing an image processing operation, the instruction control unit 235 can easily find the problem using the above-described features.

【0370】命令ワードの復号が終了し、制御信号レジ
スタに所望する制御信号がロードされたとき、命令制御
部235は主データパス部242に所望画像処理動作の
実行を始めるように指示することができる。この指示を
受けると、入力インターフェース1460はバス145
1からのデータオブジェクトを受け取り始める。入力イ
ンターフェース1460は、実行される画像処理動作の
種類に応じて、オペランドバス1452又はオペランド
バス1453からのオペランドデータを受け取り始める
か、或は、オペランドデータのアドレスを生成してオペ
ランドバス1452又はオペランドバス1453からの
オペランドデータを受け取り始める。入力インターフェ
ース1460は、制御信号レジスタ1470の出力に応
じて、入力データを格納して配列し直す。アフィン画像
変換動作および畳込み演算のような計算を行うとき、入
力インターフェース1460はバス1452および14
53を経由してフェッチされるべき座標をも生成する。
When decoding of the instruction word is completed and the desired control signal is loaded into the control signal register, the instruction control unit 235 may instruct the main data path unit 242 to start execution of the desired image processing operation. it can. Upon receiving this instruction, input interface 1460 connects to bus 145.
Start receiving data objects from 1. The input interface 1460 starts receiving operand data from the operand bus 1452 or the operand bus 1453 depending on the type of image processing operation to be performed, or generates an address of the operand data to generate the operand bus 1452 or the operand bus. Begin receiving operand data from 1453. Input interface 1460 stores and rearranges input data according to the output of control signal register 1470. When performing calculations such as affine image transformation operations and convolution operations, input interface 1460 connects to buses 1452 and
It also generates the coordinates to be fetched via 53.

【0371】画像データプロセッサ1462は、入力イ
ンターフェース1460に配列し直してもらったデータ
オブジェクトに対して主算術演算を行う。画像プロセッ
サ1462は、所定の補間ファクタで行われる2つのデ
ータオブジェクトの間の補間、2つのデータオブジェク
トの乗算、及びその結果を255で割る割算、2つのデ
ータオブジェクトに対する通常の乗算及び足し算、デー
タオブジェクトの分数部に対する様々な精度での切り捨
て、データオブジェクトのオーバフローをある最大値
に、そしてデータオブジェクトのアンダフローをある最
低値にそれぞれ抑えるクランプ、データオブジェクトの
スケーリング及びクランピングというような処理を行う
ことができる。バス1471の制御信号は、前記の算術
演算中のどれがデータオブジェクトに対して行われる
か、及びその動作の順序などを制御する。
The image data processor 1462 performs a main arithmetic operation on the data objects re-arranged by the input interface 1460. Image processor 1462 performs interpolation between two data objects with a predetermined interpolation factor, multiplies the two data objects, and divides the result by 255, normal multiplication and addition for the two data objects, data Performs operations such as truncation of the fractional part of the object with various precisions, clamping to reduce the overflow of the data object to a certain maximum value, and the underflow of the data object to a certain minimum value, scaling and clamping of the data object. be able to. The control signal on the bus 1471 controls which of the arithmetic operations is performed on the data object, the order of the operations, and the like.

【0372】ROM1475は、8.8フォーマットで
切り捨てられた255/xの被除数を有するが、ここ
で、xは0から255までの数である。ROM1475
は、バス1476を経由して、入力インターフェース1
460および画像データプロセッサ1462に接続され
る。ROM1475は短い長さのブレンドを生成し、デ
ータオブジェクトに255を掛け、その結果を他のデー
タオブジェクトで割るというような動作に用いられる。
The ROM 1475 has a dividend of 255 / x truncated in 8.8 format, where x is a number from 0 to 255. ROM 1475
Is input interface 1 via bus 1476
460 and the image data processor 1462. ROM 1475 is used to generate short length blends, multiply data objects by 255, and divide the result by other data objects.

【0373】オペランドバス、例えば1452の数は2
に制限されるが、大多数の画像処理動作においては十分
である。図130は、入力インターフェース1460を
より詳細に示す。入力インターフェース1460は、デ
ータオブジェクトインターフェース部1480、オペラ
ンドインターフェース部1482および1484、アド
レス生成状態器1486、ブレンド生成状態器148
8、行列乗算状態器1490、補間状態器1494、デ
ータ同期部1500、算術部1496、他レジスタ14
98、並びに、データ分配ロジック1505を備える。
The number of operand buses, for example 1452, is 2
, But sufficient for most image processing operations. FIG. 130 shows the input interface 1460 in more detail. The input interface 1460 includes a data object interface section 1480, operand interface sections 1482 and 1484, an address generation state machine 1486, and a blend generation state machine 148.
8, matrix multiplication state machine 1490, interpolation state machine 1494, data synchronization section 1500, arithmetic section 1496, other registers 14
98 and data distribution logic 1505.

【0374】データオブジェクトインターフェース部1
480と、オペランドインターフェース部1482及び
1484とは、外部からデータオブジェクト及びオペラ
ンドを受け取る。インターフェース部1482,148
4は、2つとも制御バス1515からの制御信号によっ
て構成される。インターフェース部1482,1484
は、受け取ったばかりのデータオブジェクト/オペラン
ドを含むデータレジスタを内部に有しており、2つとも
前記データレジスタが有効であるときはVALID信号
を出力する。インターフェース部1482,1484の
データレジスタの出力はデータバス1505に接続され
る。インターフェース部1482、1484のVALI
D信号はフローバス1510に接続される。オペランド
をフェッチするように構成されたとき、オペランドイン
ターフェース部1482および1484は、算術部14
96からのアドレスと、行列乗算状態器1490と、デ
ータオブジェクトインターフェース部1480のデータ
レジスタの出力とを受け取り、その中で必要なアドレス
を制御バス1515からの制御信号に応じて選択する。
いくつかの場合、特に、外部からデータを受けて格納す
る必要がない場合、オペランドインターフェース部14
82および1484のデータレジスタは、データオブジ
ェクトインターフェース部1480または算術部149
6のデータレジスタの出力からデータを格納するように
構成されることが有り得る。
Data object interface unit 1
480 and operand interface units 1482 and 1484 receive data objects and operands from outside. Interface section 1482, 148
4 is constituted by a control signal from the control bus 1515. Interface units 1482, 1484
Has a data register containing the data object / operand just received, and both output a VALID signal when the data register is valid. Outputs of the data registers of the interface units 1482 and 1484 are connected to the data bus 1505. VALI of interface unit 1482, 1484
The D signal is connected to the flow bus 1510. When configured to fetch operands, the operand interface units 1482 and 1484 allow the arithmetic unit 14
It receives the address from N. 96, the matrix multiplication state unit 1490, and the output of the data register of the data object interface unit 1480, and selects a necessary address according to the control signal from the control bus 1515.
In some cases, particularly when there is no need to receive and store data from outside, the operand interface unit 14
82 and 1484 are stored in the data object interface unit 1480 or the arithmetic unit 149.
6 may be configured to store data from the output of the data register.

【0375】アドレス生成状態器1486は、アフィン
画像変換動作および畳込み演算動作において算術部14
96を制御し、ソース画像のアクセスされるべき次の座
標を計算する。アドレス生成状態器1486は、制御バ
ス1515のSTART信号が設定されることを待つ。
制御バス1515のSTART信号が設定されると、ア
ドレス生成状態器1486はデータオブジェクトインタ
ーフェース部1480に対してSTALL信号を解除し
て、データオブジェクトが到着することを待つ。なお、
アドレス生成状態器1486は、アドレス生成状態器1
486がフェッチすることを必要とするカーネルデスク
リプタのデータオブジェクトの数と同じとなるようにカ
ウンタを設定する。カウンタの出力は、復号され、オペ
ランドインターフェース部1482および1484のデ
ータレジスタと他レジスタ1498とのイネーブル信号
になる。データオブジェクトインターフェース部148
0からVALID信号が起動されると、アドレス生成状
態器1486はカウンタを減少させるようになり、デー
タオブジェクトの次の部分が異なるレジスタにラッチさ
れる。
The address generation state unit 1486 is used by the arithmetic unit 14 in the affine image conversion operation and the convolution operation.
Control 96 calculates the next coordinate of the source image to be accessed. The address generation state unit 1486 waits for the START signal on the control bus 1515 to be set.
When the START signal of the control bus 1515 is set, the address generation state unit 1486 releases the STALL signal to the data object interface unit 1480 and waits for the arrival of the data object. In addition,
Address generation state machine 1486 is an address generation state machine 1
The counter is set to be equal to the number of kernel descriptor data objects that need to be fetched. The output of the counter is decoded and becomes an enable signal for the data register of the operand interface units 1482 and 1484 and the other register 1498. Data object interface unit 148
When the VALID signal is asserted from zero, the address generation state machine 1486 will decrement the counter and the next portion of the data object will be latched into a different register.

【0376】カウンタが零に達すると、アドレス生成状
態器1486はオペランドインターフェース部1484
からインデックステーブル値とピクセルとをフェッチし
始めよとオペランドインターフェース部1482に指示
する。なお、アドレス生成状態器1486は、行の数と
列の数とをそれぞれ持つ2つのカウンタをロードする。
全てのクロックエッジにおいて、かつオペランドインタ
ーフェース部1482などからのSTALL信号によっ
て停止されないとき、カウンタは減少され残りの行と列
を出力する。そして、算術部1496は、フェッチされ
るべき次の座標を計算する。両方のカウンタが零に達す
ると、カウンタは行と列の数を再びロードし、算術部1
496は次の行列の左上端を探すように構成される。
When the counter reaches zero, address generation state machine 1486 causes operand interface 1484 to operate.
And instructs the operand interface unit 1482 to start fetching the index table value and the pixel from. The address generation state unit 1486 loads two counters each having the number of rows and the number of columns.
At every clock edge and when not stopped by a STALL signal, such as from the operand interface 1482, the counter is decremented to output the remaining rows and columns. Then, the arithmetic unit 1496 calculates the next coordinate to be fetched. When both counters reach zero, the counters reload the row and column numbers and the arithmetic unit 1
496 is configured to look for the upper left corner of the next matrix.

【0377】ピクセルの真の値を決定するために補間が
使われる場合、アドレス生成状態器1486は2つのク
ロックサイクルごとに、行および列の数を減少させる。
これは1ビットカウンタを使って実行され、その出力は
行および列カウンタのイネーブルとして用いられる。行
列が一度スキャンされた後、状態器は長さカウンタのカ
ウントを減少させる信号を送る。カウンタが1に達し
て、かつ最終インデックステーブルアドレスがオペラン
ドインターフェース部1482に送られたとき、状態器
は最終信号を出し、開始ビットをリセットする。
If interpolation is used to determine the true value of a pixel, address generation state 1486 reduces the number of rows and columns every two clock cycles.
This is performed using a one-bit counter, the output of which is used as an enable for the row and column counters. After the matrix has been scanned once, the state machine sends a signal that decrements the count of the length counter. When the counter has reached 1 and the last index table address has been sent to the operand interface 1482, the state machine issues a final signal and resets the start bit.

【0378】ブレンド生成状態器1488は、算術部1
496を制御して、ブレンド長さのための0から255
までの数列を生成する。この数列は、ブレンド開始値と
ブレンド終了値との間を補間する補間ファクタとして使
われる。ブレンド生成状態器1488はどちらかのモー
ド(ジャンプモード又はステップモード)で実行すべき
であるかを決める。ブレンド長さが256以下である場
合はジャンプモードが使われ、そうでない場合はステッ
プモードが使われる。
[0378] The blend generation state unit 1488 includes the arithmetic unit 1
Control 496 to 0 to 255 for blend length
Generate a sequence up to This sequence is used as an interpolation factor for interpolating between the blend start value and the blend end value. The blend creation state machine 1488 determines which mode (jump mode or step mode) should be executed. If the blend length is less than 256, the jump mode is used; otherwise, the step mode is used.

【0379】ブレンド生成状態器1488は、下記の計
算を行い、その結果をレジスタ(reg0,reg1,
reg2)にセットする。ブランドランプが予め決定さ
れた長さでステップモードにある場合、511−長さを
reg0(24ビット)に、512−2*長さをreg
1(24ビット)に、そして、終了−開始をreg2
(4×9ビット)に、それぞれラッチする。ランプがジ
ャンプモードにある場合は、0をreg0(24ビッ
ト)に、255/(長さ−1)をreg1(24ビッ
ト)に、そして、終了−開始をreg2(4×9ビッ
ト)に、それぞれラッチする。
The blend generation state unit 1488 performs the following calculation, and stores the result in the register (reg0, reg1,
reg2). If the brand ramp is in step mode with a predetermined length, 511-length is reg0 (24 bits) and 512-2 * length is reg
1 (24 bits) and end-start is reg2
(4 × 9 bits). If the ramp is in jump mode, 0 to reg0 (24 bits), 255 / (length-1) to reg1 (24 bits), and end-start to reg2 (4 × 9 bits), respectively Latch.

【0380】ステップモードにおいて、以下の処理が各
サイクルにおいて実行される。reg0>0であると
き、reg0にreg1を加え、その結果をreg0に
格納する。もう一つのインクリメンタがイネーブルされ
ることもできるが、その場合には出力が1だけ増加され
る。reg0≦0であるとき、reg0に510を加
え、その結果をreg0に格納する。インクリメンタは
増加されない。インクリメンタの出力はランプ値であ
る。
In the step mode, the following processing is executed in each cycle. When reg0> 0, reg1 is added to reg0, and the result is stored in reg0. Another incrementer could be enabled, in which case the output would be incremented by one. When reg0 ≦ 0, 510 is added to reg0, and the result is stored in reg0. The incrementer is not increased. The output of the incrementer is a ramp value.

【0381】ジャンプモードにおいて、以下の処理が各
サイクルにおいて実行される。reg0にreg1を加
える。加算の出力は24ビットであり、16.8の固定
少数点フォーマットで出力される。前記加算出力をre
g0に格納する。分数結果の第1ビットが1である場
合、整数部を増加させる。インクリメンタの整数部の下
位8ビットはランプ値である。このランプ値、即ちre
g2の出力と、ブレンド開始値とは画像データプロセッ
サ1462に送られ、ランプを生成する。
In the jump mode, the following processing is executed in each cycle. Add reg1 to reg0. The output of the addition is 24 bits and is output in a fixed point format of 16.8. The sum output is re
Store it in g0. If the first bit of the fraction result is 1, the integer part is increased. The lower 8 bits of the integer part of the incrementer are the ramp value. This ramp value, ie, re
The output of g2 and the blend start value are sent to the image data processor 1462 to generate a ramp.

【0382】行列乗算状態器1490は、変換行列を用
いて入力データオブジェクトに対する線形色空間変換を
行う。変換行列は4×5次元である。第1から第4列に
はデータオブジェクトの4チャネルを掛けるようになっ
ており、最後列は積の和に加えられるべき常係数を含ん
でいる。制御バス1515からのSTART信号が起動
されたとき、行列乗算状態器は以下のように動く。
A matrix multiplication state machine 1490 performs a linear color space conversion on an input data object using a conversion matrix. The transformation matrix has 4 × 5 dimensions. The first to fourth columns are multiplied by the four channels of the data object, and the last column contains the constants to be added to the sum of the products. When the START signal from control bus 1515 is activated, the matrix multiply state machine operates as follows.

【0383】1)バス1482及び1484から変換行
列の常係数をフェッチすべきライン番号を生成する。な
お、他レジスタ1498をイネーブルして常係数が格納
できるようにする。 2)1ビットフリップフロップを備えていて、ライン番
号を生成して、バス1482および1484から行列の
半分をフェッチするときにアドレスとして使う。なお、
データオブジェクトの半分から、前記行列の半分に掛け
られるべきものを選択する“MAT_SEL”信号をも
生成する。
1) A line number to be fetched from the buses 1482 and 1484 for constant coefficients of the conversion matrix is generated. The other register 1498 is enabled so that the constant coefficient can be stored. 2) A 1-bit flip-flop is provided to generate line numbers to use as addresses when fetching half of the matrix from buses 1482 and 1484. In addition,
It also generates a "MAT_SEL" signal that selects from half of the data object what to multiply by half of the matrix.

【0384】3)データオブジェクトインターフェース
部1480から入力されるデータオブジェクトがないと
き終了する。 補間状態器1494は、データオブジェクトの水平補間
を行う。水平補間において、主データパス部242はバ
ス1451からデータオブジェクトストリームを受け取
り、隣のデータオブジェクトの間を補間する。そして、
元ストリームの2倍、又は4倍の長さであるデータオブ
ジェクトのストリームを出力する。データオブジェクト
はバイト又はピクセルにパックされることがあり得るた
め、補間状態器1494は、スループットが最大になる
ようにそれぞれの場合に異なる操作を行う。補間状態器
1494は以下のように動作する。
3) When there is no data object input from the data object interface unit 1480, the processing ends. Interpolation state machine 1494 performs horizontal interpolation of data objects. In the horizontal interpolation, the main data path unit 242 receives a data object stream from the bus 1451 and interpolates between adjacent data objects. And
Output a stream of data objects that is twice or four times as long as the original stream. Since data objects can be packed into bytes or pixels, the interpolator 1494 performs different operations in each case to maximize throughput. Interpolation state machine 1494 operates as follows.

【0385】1)INT_SEL信号を生成することに
よって、データ配分ロジック1503が入力データオブ
ジェクトを再配列するようにし、正しいデータオブジェ
クト対に対して補間を行うようにする。 2)隣接するデータオブジェクト対の間を補間するため
の補間ファクタを生成する。
1) By generating the INT_SEL signal, the data distribution logic 1503 causes the input data objects to be reordered and to interpolate on the correct data object pair. 2) Generate an interpolation factor for interpolating between adjacent data object pairs.

【0386】3)データオブジェクトインターフェース
部1480がもうデータオブジェクトを受け入れないよ
うにするSTALL信号を生成する。これが必要とされ
る理由は、出力ストリームが入力ストリームより長いか
らである。STALL信号はフローバス1510に送ら
れる。 算術部1496は、算術計算を行うなめの回路を具備し
ており、制御バス1515の制御信号によって構成され
る。これは、アフィン画像変換および畳込み演算と合成
においてのブレンド生成という2つの命令のみによって
使われる。
3) Generate a STALL signal to prevent the data object interface 1480 from accepting data objects anymore. This is required because the output stream is longer than the input stream. The STALL signal is sent to the flow bus 1510. The arithmetic unit 1496 includes a circuit for performing arithmetic calculations, and is configured by a control signal of a control bus 1515. It is used only by two instructions: affine image transformation and blending in convolution and compositing.

【0387】アフィン画像変換および畳込み演算におい
て、算術部1496は以下のような演算を行う。 1)次のxおよびy座標を計算する。x座標を計算する
ために、算術部1496は加算器を用いて現在のx座標
に水平および垂直デルタのx成分を加えるか、減算器を
用いて現在のx座標から水平および垂直デルタのx成分
を引くようにする。y座標を計算するために、算術部1
498は加算器を用いて現在のy座標に水平又は垂直デ
ルタのy成分を加えるか、減算器を用いて現在のy座標
から水平又は垂直デルタのy成分を引くようにする。
In the affine image conversion and convolution operation, the arithmetic unit 1496 performs the following operation. 1) Calculate the next x and y coordinates. To calculate the x coordinate, the arithmetic unit 1496 adds the horizontal and vertical delta x components to the current x coordinate using an adder, or subtracts the horizontal and vertical delta x components from the current x coordinate using a subtractor. So that Arithmetic unit 1 to calculate y-coordinate
498 adds the horizontal or vertical delta y component to the current y coordinate using an adder, or subtracts the horizontal or vertical delta y component from the current y coordinate using a subtractor.

【0388】2)y座標をインデックステーブルオフセ
ットに加算しインデックステーブルアドレスを計算す
る。ピクセルの元の値を求めるために補間を使う場合、
前記の和はインデックスエントリを求めるために、更に
4だけ増加される。 3)x座標をインデックステーブルエントリに加算し、
ピクセルのアドレスを求める。
2) The y-coordinate is added to the index table offset to calculate an index table address. If you use interpolation to find the original value of a pixel,
The sum is further increased by 4 to find the index entry. 3) Add the x coordinate to the index table entry,
Find the address of the pixel.

【0389】4)長さカウントから1を引く。 ブレンド生成において、算術部1496は以下のように
作動する。 1)ステップモードにおいて、ある1つのランプ加算器
を用いてランプ生成アルゴリズムの内部変数を計算す
る。一方、その他の1つの加算器は、インターバル変数
が零より大きいときにランプ値を増加させるために用い
られる。
4) Subtract 1 from the length count. In blend generation, the arithmetic unit 1496 operates as follows. 1) In the step mode, an internal variable of the ramp generation algorithm is calculated using a certain ramp adder. On the other hand, another adder is used to increase the ramp value when the interval variable is greater than zero.

【0390】2)ジャンプモードにおいては、ジャンプ
値を現在のランプ値に加えるために1つの加算器のみが
必要とされる。 3)ジャンプモードでは、分数の切り捨てが行われる。 4)ランプ生成の始めにあたって、ブランドの終了から
ブランドの開始を引く。
2) In jump mode, only one adder is needed to add the jump value to the current ramp value. 3) In the jump mode, fractions are truncated. 4) At the beginning of ramp generation, subtract the brand start from the brand end.

【0391】5)長さカウントから1を引く。 他レジスタ1498は、データオブジェクトインターフ
ェース部1480、並びに、オペランドインターフェー
ス部1482及び1484において、データレジスタ以
外の余分の格納空間を提供する。他レジスタ1498
は、内部変数を格納するか、或はデータオブジェクトイ
ンターフェース部1480からの過去のデータオブジェ
クトをバッファするのにおいて使われるのが普通であ
る。レジスタ1498は、制御バス1515の制御信号
によって構成される。
5) Subtract 1 from the length count. The other register 1498 provides an extra storage space other than the data register in the data object interface unit 1480 and the operand interface units 1482 and 1484. Other register 1498
Is typically used to store internal variables or buffer past data objects from the data object interface 1480. The register 1498 is configured by a control signal of the control bus 1515.

【0392】データ同期部1500は、制御バス151
5の制御信号によって構成される。データ同期部150
0は、STALL信号をデータオブジェクトインターフ
ェース部1480、並びに、オペランドインターフェー
ス部1482および1484に提供することによって、
あるインターフェース部が、他のインターフェースは持
っていない一部データオブジェクトを受け取った場合、
他のインターフェースの全てかデータを受け取るまでそ
のインターフェース部を停止させる。
[0392] The data synchronization section 1500 includes a control bus 151.
5 control signals. Data synchronization unit 150
0 provides the STALL signal to the data object interface 1480 and the operand interface 1482 and 1484,
If one interface part receives some data objects that other interfaces do not have,
Stop the interface until all of the other interfaces have received data.

【0393】データ配分ロジック1505は、行列乗算
状態器1490からのMAT_SEL信号と、補間状態
器1494からのINT_SEL信号とを含む制御バス
1515の制御信号に応じて、データバス1510およ
びレジスタファイル1472からのデータオブジェクト
をバス1530を経由して再配列する。再配列されたデ
ータはバス1461へ出力される。
Data distribution logic 1505 responds to control signals on control bus 1515, including the MAT_SEL signal from matrix multiplication state machine 1490 and the INT_SEL signal from interpolation state machine 1494, from data bus 1510 and register file 1472. The data objects are rearranged via the bus 1530. The rearranged data is output to bus 1461.

【0394】図131は、図129の画像データプロセ
ッサ1462をより詳細に示す。画像データプロセッサ
1462は、パイプライン制御部1540と、多数のカ
ラーチャネルプロセッサ1545,1550,155
5、及び1560とを有する。全てのカラーチャネルプ
ロセッサは、入力インターフェース1460(図13
1)によって駆動されるバス1565から入力を受け取
る。全てのチャネルプロセッサとパイプライン制御部1
540は、バス1472を経由する、制御信号レジスタ
1470からの制御信号によって構成される。全てのカ
ラーチャネルプロセッサは、図129のレジスタファイ
ル1472及びROM1475からの入力をもバス15
80を経由して受け取ることがある。全てのカラーチャ
ネルプロセッサとパイプライン制御部との出力はグルー
プされてバス1570となり、画像データプロセッサ1
462の出力1455を形成する。
FIG. 131 shows the image data processor 1462 of FIG. 129 in more detail. The image data processor 1462 includes a pipeline control unit 1540 and a number of color channel processors 1545, 1550, and 155.
5 and 1560. All color channel processors have an input interface 1460 (FIG. 13).
Receive input from bus 1565 driven by 1). All channel processors and pipeline controller 1
540 is constituted by a control signal from a control signal register 1470 via a bus 1472. All color channel processors also receive input from register file 1472 and ROM 1475 of FIG.
It may be received via 80. The outputs of all the color channel processors and the pipeline control unit are grouped into a bus 1570, and the image data processor 1
462 to form an output 1455.

【0395】パイプライン制御部1540は、全てのカ
ラーチャネルプロセッサのレジスタをイネーブル又はデ
スエーブルすることによって、全てのカラーチャネルプ
ロセッサのデータオブジェクトのフローを制御する。パ
イプライン制御部1540の中には、レジスタパイプラ
インがある。パイプラインの形態及び長さは、バス14
71からの制御信号により構成されるようになってお
り、パイプライン制御部1540のパイプラインとカラ
ーチャネルプロセッサのパイプラインとは、その形態が
同じである。パイプライン制御部はバス1565からV
ALID信号を受け取る。パイプライン制御部1540
のパイプラインステージそれぞれにおいて、入力VAL
ID信号が起動され、パイプラインステージが停止され
ていない場合、パイプラインステージは全てのカラーチ
ャネルプロセッサに対してレジスタイネーブル信号を起
動させるとともに入力VALID信号をラッチする。そ
れから、ラッチの出力、即ち、VALID信号は、次の
パイプラインステージに移る。このようにして、パイプ
ラインにおけるデータオブジェクトの移動が、データ記
憶装置を用いずに、シミュレートかつ制御される。
The pipeline control unit 1540 controls the flow of data objects of all color channel processors by enabling or disabling registers of all color channel processors. The pipeline control unit 1540 includes a register pipeline. The shape and length of the pipeline are
The configuration is the same as that of the pipeline of the pipeline control unit 1540 and the pipeline of the color channel processor. The pipeline control unit operates from the bus 1565 to V
Receive the ALID signal. Pipeline control unit 1540
Input VAL at each pipeline stage
If the ID signal is activated and the pipeline stage is not stopped, the pipeline stage activates the register enable signal for all color channel processors and latches the input VALID signal. The output of the latch, the VALID signal, then moves to the next pipeline stage. In this way, the movement of data objects in the pipeline is simulated and controlled without using data storage.

【0396】カラーチャネルプロセッサ1545,15
50,1555、及び1560は、入力データオブジェ
クトに対する主な算術動作を行い、各プロセッサは出力
データオブジェクトの1つのチャネルを担当している。
好適な実施例においては、大多数のピクセルデータオブ
ジェクトが最大4つのチャネルを持っているため、カラ
ーチャネルプロセッサの数は4に制限される。
The color channel processors 1545 and 15
50, 1555, and 1560 perform the main arithmetic operations on the input data object, and each processor is responsible for one channel of the output data object.
In the preferred embodiment, the number of color channel processors is limited to four because most pixel data objects have a maximum of four channels.

【0397】カラーチャネルプロセッサの中には、ピク
セルの不透明(opacity)チャネルを処理する部
分がある。図131には示されていないが、制御バス1
471に接続されている追加の回路があり、カラーチャ
ネルプロセッサは不透明チャネルを正しく処理するよう
に制御バス1471からの制御信号を変換する。これ
は、ある画像処理動作においては、不透明チャネルに対
する動作がカラーチャネルに対する動作と少し異なるか
らである。
Some of the color channel processors handle opacity channels of pixels. Although not shown in FIG. 131, the control bus 1
There is additional circuitry connected to 471, and the color channel processor translates control signals from control bus 1471 to correctly handle opaque channels. This is because in some image processing operations, the operation on the opaque channel is slightly different from the operation on the color channel.

【0398】図132は、カラーチャネルプロセッサ1
545,1550,1555、1560を(図132に
おいては一般的に1600で示した)より詳細に示す。
各カラーチャネルプロセッサ1545,1550,15
55、1560は、処理ブロックA1610と、処理ブ
ロックB1615と、ビッグ加算器1620と、分数切
り捨て部1625と、クランプまたはラッパー1630
と、出力多重化部1635とを備えている。カラーチャ
ネルプロセッサ1600は、制御信号レジスタ1470
からの制御信号をバス1602を経由して、パイプライ
ン制御部1540からのイネーブル信号をバス1604
を経由して、レジスタファイル1472からの情報をバ
ス1605を経由して、その他カラーチャネルプロセッ
サからのデータオブジェクトをバス1603を経由し
て、入力インターフェース1460からのデータオブジ
ェクトをバス1601を経由して、それぞれ受け取る。
FIG. 132 shows the color channel processor 1
545, 1550, 1555, and 1560 are shown in more detail (generally shown as 1600 in FIG. 132).
Each color channel processor 1545, 1550, 15
55 and 1560 are a processing block A 1610, a processing block B 1615, a big adder 1620, a fraction truncation unit 1625, and a clamp or wrapper 1630.
And an output multiplexing unit 1635. The color channel processor 1600 includes a control signal register 1470
Control signal from the pipeline control unit 1540 via the bus 1602, and an enable signal from the pipeline control unit 1540 to the bus 1604.
, The information from the register file 1472 via the bus 1605, other data objects from the color channel processor via the bus 1603, the data objects from the input interface 1460 via the bus 1601, Receive each.

【0399】処理ブロックA1610は,バス1601
からのデータオブジェクトに対していくつかの算術動作
を行い、部分的に計算されたデータオブジェクトをバス
1611に出力する。処理ブロックA1610が画像処
理動作のために行うべき処理を以下に説明する。合成に
おいて、処理ブロックA1610はデータオブジェクト
バス1451からのデータオブジェクトに不透明度を掛
け、ブレンド開始値とブレンド終了値との間を図129
の入力インターフェース1460からの補間ファクタに
よって補間し、図129のオペランドバス1452から
のオペランドをプレ乗算するかまたはブレンドカラーに
不透明度を掛けるかする。そして、プレ乗算されたオペ
ランドまたはブレンドカラーデータに対する乗算を減衰
させる。
The processing block A 1610 includes a bus 1601
Performs some arithmetic operations on the data objects from, and outputs the partially calculated data objects to bus 1611. The processing that the processing block A1610 should perform for the image processing operation will be described below. In the synthesis, the processing block A 1610 multiplies the data object from the data object bus 1451 by opacity, and sets a value between the blend start value and the blend end value as shown in FIG.
129, pre-multiply the operands from the operand bus 1452 in FIG. 129 or multiply the blend color by opacity. Then, the multiplication on the premultiplied operand or the blend color data is attenuated.

【0400】一般色空間変換において、処理ブロックA
1610は、図129のバス1451からの2つの分数
値を用いて4つのカラーテーブル値の間を補間する。ア
フィン画像変換および畳込み演算において、処理ブロッ
クA1610はソースピクセルの色に不透明度をプレ乗
算し、現在x座標の分数部を用いて同じ行のピクセルの
間を補間する。
In general color space conversion, processing block A
1610 interpolates between the four color table values using the two fractional values from bus 1451 of FIG. In the affine image transformation and convolution operation, processing block A1610 pre-multiplies the color of the source pixel by opacity and interpolates between the same row of pixels using the current x-coordinate fraction.

【0401】線形色空間変換において、処理ブロックA
1610はソースピクセルのカラーに不透明度をプレ乗
算し、プレ乗算されたカラーデータに変換行列係数を掛
ける。水平補間と垂直補間において、処理ブロックA1
610は2つのデータオブジェクトの間を補間する。
In the linear color space conversion, processing block A
1610 pre-multiplies the color of the source pixel by the opacity and multiplies the pre-multiplied color data by a transformation matrix coefficient. In the horizontal interpolation and the vertical interpolation, the processing block A1
610 interpolates between two data objects.

【0402】レジデュアルマージンにおいて、処理ブロ
ックA1610は2つのデータオブジェクトを加算す
る。処理ブロックA1610は多数の多機能ブロック1
640と、処理ブロックAグルーロジック1645とを
備える。多機能ブロック1640は制御信号によって構
成されていて、以下の機能のどちらかの1つを実行する
ことができる。
At the residual margin, processing block A1610 adds two data objects. The processing block A1610 includes a number of multifunctional blocks 1
640 and a processing block A glue logic 1645. Multi-function block 1640 is configured by control signals and can perform one of the following functions.

【0403】2つのデータオブジェクトに対し加減算を
行う。1つのデータオブジェクトを伝える。2つのデー
タオブジェクトの間をある補間ファクタによって補間す
る。色に不透明度をプレ乗算する。2つのデータオブジ
ェクトを掛け、その積に第3のデータオブジェクトを掛
ける。
The addition and subtraction are performed on the two data objects. Conveys one data object. Interpolate between two data objects by some interpolation factor. Pre-multiply colors by opacity. Multiply two data objects and multiply the product by a third data object.

【0404】2つのデータオブジェクトに対し加減算を
行い、その結果に不透明度をプレ乗算する。多機能ブロ
ック1640のレジスタは、図131のパイプライン制
御部1540によって生成される、バス1604からの
イネーブル信号によってイネーブルされるかデスエーブ
ルされる。処理ブロックAグルーロジック1645はバ
ス1601からのデータオブジェクトおよびバス160
3からのデータオブジェクトと、いくつかの多機能ブロ
ック1640の出力とを受け取り、これらをその他の選
択された多機能ブロック1640の入力に送る。処理ブ
ロックAグルーロジック1645もバス1602からの
制御信号によって構成される。
Addition and subtraction are performed on two data objects, and the result is premultiplied by opacity. The registers of multifunction block 1640 are enabled or disabled by an enable signal from bus 1604 generated by pipeline control 1540 of FIG. Processing block A glue logic 1645 includes data objects from bus 1601 and bus 160
3 and the output of some multifunction blocks 1640 and sends them to the inputs of other selected multifunction blocks 1640. The processing block A glue logic 1645 is also configured by a control signal from the bus 1602.

【0405】処理ブロックB1615は,バス1601
からのデータオブジェクトとバス1611からの部分的
に計算されたデータオブジェクトとに対して算術動作を
行い、部分的に計算されたデータオブジェクトをバス1
616に出力する。処理ブロックB1615が画像処理
動作のために行う処理を以下に説明する。非正のオペレ
ータをもつ合成において、処理ブロックB1615はデ
ータオブジェクトバス1451からのプレ処理されたデ
ータオブジェクトと、オペランドバス1452からのオ
ペランドに対して、バス1603からの合成被乗数を掛
けるとともに、8.8フォーマットの255/不透明度
の値であるROMの出力を、クランプ/ラップされたデ
ータオブジェクトに掛ける。
The processing block B 1615 includes a bus 1601
Performs an arithmetic operation on the data object from the bus 1611 and the partially calculated data object from the bus 1611 and transfers the partially calculated data object to the bus 1
616. The processing performed by the processing block B1615 for the image processing operation will be described below. In composition with non-positive operators, processing block B 1615 multiplies the pre-processed data object from data object bus 1451 and the operand from operand bus 1452 by the composite multiplicand from bus 1603 and 8.8. Multiply the output of the ROM, which is the 255 / opacity value of the format, on the clamped / wrapped data object.

【0406】正のオペレータをもつ合成において、処理
ブロックB1615は、プレ処理された2つのデータオ
ブジェクトを加算する。更に、不透明チャネルにおいて
は、前記の和から255を引いて、その差をオフセット
に掛け、その積を255で割る。一般色空間変換におい
て、処理ブロックB1615は、バス1451からの2
つの分数値を用いて4つのカラーテーブル値の間を補間
し、残っている分数値を用いて処理ブロックA1610
からの部分的に補間されたカラー値と、以前の補間結果
との間を補間する。
In a composition with a positive operator, processing block B1615 adds the two pre-processed data objects. Further, in the opaque channel, subtract 255 from the sum, multiply the difference by the offset, and divide the product by 255. In the general color space conversion, the processing block B1615
Interpolate between the four color table values using the two fractional values and process block A1610 using the remaining fractional values.
Interpolate between the partially interpolated color values from and the previous interpolation result.

【0407】アフィン画像変換および畳込み演算におい
て、処理ブロックB1615は、現在y座標の分数部を
用いて、部分的に補間されたピクセルの間を補間し、補
間されたピクセルにサブサンプルウェート行列の係数を
掛ける。線形色空間変換において、処理ブロックB16
15はソースピクセルのカラーに不透明度をプレ乗算
し、プレ乗算されたカラーに変換行列係数を掛ける。
In the affine image transformation and convolution operation, processing block B1615 interpolates between the partially interpolated pixels using the fractional part of the current y-coordinate and replaces the interpolated pixels with the subsample weight matrix. Multiply the coefficient. In the linear color space conversion, the processing block B16
15 pre-multiplies the color of the source pixel by the opacity and multiplies the pre-multiplied color by a transformation matrix coefficient.

【0408】処理ブロックB1615は、多数の多機能
ブロックと、処理ブロックBグルーロジック1650と
を備える。多機能ブロックは、処理ブロックA1610
のものと同様であるが、処理ブロックBグルーロジック
1650においては、バス1601,1603,161
1,1631からのデータオブジェクトと、選択された
多機能ブロックの出力とを受け入れ、これらを選択され
た多機能ブロックの入力に送る。処理ブロックBグルー
ロジック1650もバス1602からの制御信号によっ
て構成される。
The processing block B 1615 includes a number of multi-function blocks and a processing block B glue logic 1650. The multi-function block is a processing block A1610
, But in processing block B glue logic 1650, buses 1601, 1603, 161
Accept the data objects from 1,1631 and the output of the selected multi-function block and send them to the input of the selected multi-function block. The processing block B glue logic 1650 is also configured by a control signal from the bus 1602.

【0409】ビッグ加算器1620は、処理ブロックA
1610と処理ブロックB1615からの部分的結果の
いくつかを結合する。これは、バス1601を経由して
入力インターフェース1640から、バス1611を経
由して処理ブロックA1610から、バス1616を経
由して処理ブロックB1615から、そして、バス16
05を経由してレジスタファイル1472から、それぞ
れの入力を受け取り、バス1621に結合された結果を
出力する。ビッグ加算器1620も、バス1602の制
御信号によって構成される。
The big adder 1620 has the processing block A
1610 and some of the partial results from processing block B 1615. This is from the input interface 1640 via the bus 1601, from the processing block A 1610 via the bus 1611, from the processing block B 1615 via the bus 1616, and from the
The respective input is received from the register file 1472 via the interface 05 and the result connected to the bus 1621 is output. The big adder 1620 is also configured by a control signal of the bus 1602.

【0410】ビッグ加算器1620は、様々な画像処理
動作に従って、異なる構成にすることができる。ビッグ
加算器1620の所定の画像処理動作における動作を以
下に説明する。非正のオペレータを持つ合成において、
ビッグ加算器1620は処理ブロックB1615からの
2つの部分積を合算する。
The big adder 1620 can have different configurations according to various image processing operations. The operation of the big adder 1620 in the predetermined image processing operation will be described below. In a composition with a non-positive operator,
Big adder 1620 sums the two partial products from processing block B 1615.

【0411】正のオペレータを持つ合成において、オフ
セットイネーブルが起動されているときに、ビッグ加算
器1620は不透明度チャネルからオフセットのある先
処理されたデータオブジェクトの和を引く。アフィン画
像変換/畳込み演算において、ビッグ加算器1620は
処理ブロックB1615からの積を累算する。
In a composition with a positive operator, when the offset enable is activated, the big adder 1620 subtracts the sum of the preprocessed data object with the offset from the opacity channel. In the affine image conversion / convolution operation, the big adder 1620 accumulates the product from the processing block B1615.

【0412】線形色空間変換において、第1サイクルで
ビッグ加算器は2つの行列係数/データオブジェクト積
と常係数とを合算する。第2サイクルで、直前サイクル
の和に他のもう2つの行列係数/データオブジェクト積
を加える。分数切り捨て(丸め)部1625は、バス1
621を経由してビッグ加算器1620からの入力を受
け取り、出力の分数部を切り捨てる。分数部を表すビッ
トの数は、レジスタファイル1472からバス1605
のBP信号によって表示される。BP信号を解釈する仕
方を以下の表に表す。切り捨てられた出力はバス162
6に提供される。
In the linear color space conversion, in the first cycle, the big adder adds two matrix coefficient / data object products and ordinary coefficients. In the second cycle, add the other two matrix coefficient / data object products to the sum of the previous cycle. The fraction truncation (rounding) unit 1625 is the bus 1
It receives the input from the big adder 1620 via 621 and truncates the output fraction. The number of bits representing the fractional part is obtained from the register file 1472 to the bus 1605.
Is displayed by the BP signal. The following table shows how to interpret the BP signal. The truncated output is the bus 162
6 is provided.

【0413】分数テーブル[0413] Fraction table

【0414】[0414]

【表27】 [Table 27]

【0415】分数切り捨て部1625は、分数の切り捨
ての以外に2つの作業を行う。 1)切り捨てられた結果が負であるかどうかを決定す
る。 2)切り捨てられた結果の絶対値が255より大きいか
どうかを決定する。 クランプ又はラッパー1630はバス1626を経由し
て分数切り捨て部1625から入力を受け取り、下記の
動作をその順序に従い行う。
[0415] The fraction cutoff unit 1625 performs two operations other than fraction cutoff. 1) Determine if the truncated result is negative. 2) Determine if the absolute value of the truncated result is greater than 255. The clamp or wrapper 1630 receives input from the fractional truncation unit 1625 via the bus 1626, and performs the following operations in that order.

【0416】切り捨てられた結果の絶対値を求めるべき
というオプションがイネーブルされているとき、その絶
対値を求める。データオブジェクトのアンダフローをあ
る最低値に、そして、データオブジェクトのオーバフロ
ーをある最大値に、それぞれクランプする。出力多重化
部1635は、バス1616の処理ブロックBの出力と
バス1631のクランプまたはラッパーの出力とのなか
で、最終の出力を選択する。なお、データオブジェクト
に対して、いくつかの最終処理をも行うが、以下は所定
の画像処理動作のために行われる動作を説明する。
If the option to determine the absolute value of the truncated result is enabled, determine the absolute value. The underflow of the data object is clamped to a certain minimum value, and the overflow of the data object is clamped to a certain maximum value. The output multiplexing unit 1635 selects the final output from the output of the processing block B on the bus 1616 and the output of the clamp or wrapper on the bus 1631. Although some final processing is also performed on the data object, an operation performed for a predetermined image processing operation will be described below.

【0417】非正のオペレータをもつ、プレ乗算なしの
合成において、多重化部1635は処理ブロックB16
15のいくつかの出力を結合し、プレ乗算なしのデータ
オブジェクトを形成する。非正のオペレータをもつ、プ
レ乗算ありの合成において、多重化部1635はクラン
プまたはラッパー1630の出力を通過させる。
In the synthesis without the pre-multiplication with the non-positive operator, the multiplexing unit 1635 sets the
The 15 outputs are combined to form a data object without pre-multiplication. In pre-multiplication compositing with non-positive operators, multiplexer 1635 passes the output of clamp or wrapper 1630.

【0418】正のオペレータをもつ合成において、多重
化部1635は処理ブロックB1630のいくつかの出
力を結合し、データオブジェクト結果を形成する。一般
色空間変換において、多重化部1635は出力データオ
ブジェクトに対して、翻訳・クランプ機能を適用する。
他の動作において、多重化部1635は、クランプ又は
ラッパー1630の出力を通過させる。
In a composition with a positive operator, multiplexer 1635 combines the several outputs of processing block B 1630 to form a data object result. In the general color space conversion, the multiplexing unit 1635 applies a translation / clamp function to an output data object.
In another operation, the multiplexer 1635 passes the output of the clamp or wrapper 1630.

【0419】図133は、例えば1640のような、1
つの多機能ブロックをより詳細に示す。多機能ブロック
1640は、モード検出部1710と、2つの加算オペ
ランド論理部1660及び1670と、3つの多重化論
理部1680,1685,及び1690と、2入力加算
部1675と、2つの加数を持つ2入力乗算部1695
と、レジスタ1705とを備える。
FIG. 133 shows one such as 1640.
One multifunctional block is shown in more detail. The multi-function block 1640 includes a mode detection unit 1710, two addition operand logic units 1660 and 1670, three multiplexing logic units 1680, 1865, and 1690, a two-input addition unit 1675, and two addends. 2 input multiplication unit 1695
And a register 1705.

【0420】モード検出部1710は、図129の制御
信号レジスタ1470からのMODE信号1711と、
図129の入力インターフェース1460からの2つの
SUB信号1712及びSWAP信号1713とを受け
取る。モード検出部1710は、これらの信号を復号し
て、加算オペランド論理部1660および1670と、
多重化論理部1680,1685,および1690に伝
えられる制御信号を生成する。そして、この制御信号
は、多機能ブロック1640を種々な動作のできるよう
に構成する。多機能ブロック1640は、8つのモード
を有する。
[0420] The mode detection unit 1710 includes a MODE signal 1711 from the control signal register 1470 shown in FIG.
It receives two SUB signals 1712 and a SWAP signal 1713 from the input interface 1460 of FIG. Mode detection section 1710 decodes these signals, and performs addition operand logic sections 1660 and 1670;
It generates control signals that are passed to multiplexing logic 1680, 1685, and 1690. The control signal configures the multi-function block 1640 to perform various operations. The multi-function block 1640 has eight modes.

【0421】1)加減算モード:SUB信号1712に
従い、入力1655を入力1665に加えるか、また
は、入力1665から引く。更に、SWAP信号693
に従い、入力をスワップすることもできる。 2)バイパスモード:入力1655を出力にバイパスす
る。 3)補間モード:入力1675を補間ファクタとして、
入力1655と1665の間を補間する。SWAP信号
1713に従い、入力1655および1665をスワッ
プすることができる。
1) Addition / subtraction mode: Input 1655 is added to input 1665 or subtracted from input 1665 in accordance with SUB signal 1712. Further, the SWAP signal 693
, The input can be swapped. 2) Bypass mode: Bypass input 1655 to output. 3) Interpolation mode: Using input 1675 as an interpolation factor,
Interpolate between inputs 1655 and 1665. The inputs 1655 and 1665 can be swapped according to the SWAP signal 1713.

【0422】4)プレ乗算モード:入力1655に入力
1675を掛け、その結果を255で割る。INCレジ
スタ1708の出力は、正しい結果を得るためにバス1
707における、このステージの結果を増加すべきかど
うかを、次のステージに教える。 5)乗算モード:入力1655に入力1675を掛け
る。
4) Pre-multiply mode: multiply input 1655 by input 1675 and divide the result by 255. The output of the INC register 1708 is connected to bus 1 for correct results.
At 707, the next stage is told if the results of this stage should be increased. 5) Multiplication mode: multiply input 1655 by input 1675.

【0423】6)加減算およびプレ乗算モード:入力1
665を入力1655に加えるか、または、入力165
5から引き、その結果に入力1675を掛け、そして、
この積を255で割る。INCレジスタ1708の出力
は、正しい結果を得るためにバス1707にあるこのス
テージの結果を増加すべきかどうかを、次のステージに
教える。
6) Addition / subtraction and pre-multiplication mode: input 1
665 to input 1655 or input 165
5 and multiply the result by the input 1675, and
Divide this product by 255. The output of the INC register 1708 tells the next stage if the result of this stage on bus 1707 should be incremented to get the correct result.

【0424】加算オペランド論理部1660及び167
0は、加算器によって減算もできるようにするために、
必要に応じて入力に対する1の補数を求める。加算器1
675は、バス1662と1672の加算オペランドロ
ジック1660及び1670の出力を合算し、その和を
バス1677に出力する。多重化ロジック1680,1
685、及び1690は、所望の機能を実行するために
適する被乗数と加数を選ぶ。これらは全てモード検出部
1710からのバス1714の制御信号によって構成さ
れる。
Addition operand logic units 1660 and 167
0 is used so that it can be subtracted by an adder.
If necessary, find the one's complement of the input. Adder 1
675 sums the outputs of add operand logic 1660 and 1670 on buses 1662 and 1672 and outputs the sum on bus 1677. Multiplexing logic 1680,1
685 and 1690 select the appropriate multiplicand and addend to perform the desired function. These are all configured by the control signal of the bus 1714 from the mode detection unit 1710.

【0425】2つの加数を持つ乗算部1695は、バス
1682からの入力をバス1677からの入力に掛け
る。そして、前記積にバス1687および1692から
の入力の和を加える。加算器1700は、乗算部169
5の出力の下位8ビットに乗算部1695の出力の上位
8ビットを加える。加算器1700の桁上げはINCレ
ジスタ1701にラッチされる。INCレジスタ170
1は、信号1702によってイネーブルされる。レジス
タ1705は乗算部1695からの積を記憶する。これ
も信号1702によってイネーブルされる。
The multiplication unit 1695 having two addends multiplies the input from the bus 1682 by the input from the bus 1677. The sum of the inputs from buses 1687 and 1692 is then added to the product. The adder 1700 includes a multiplication unit 169
The upper 8 bits of the output of the multiplication unit 1695 are added to the lower 8 bits of the output of 5. The carry of the adder 1700 is latched in the INC register 1701. INC register 170
1 is enabled by signal 1702. Register 1705 stores the product from multiplication section 1695. This is also enabled by signal 1702.

【0426】図134は、合成動作のブロック図を示
す。この合成動作は3つの入力データストリームを受け
取る。 1)累算ピクセルデータ:この累算部モデルにおいて、
結果が格納された位置と同一な位置から誘導される。 2)合成オペランド:カラーと不透明度からなる。カラ
ーと不透明度の両方はフラット、ブレンド、ピクセル、
またはタイルであることができる。
FIG. 134 is a block diagram of the synthesizing operation. This combining operation receives three input data streams. 1) Accumulated pixel data: In this accumulator model,
The result is derived from the same location where it was stored. 2) Composite operand: consists of color and opacity. Both color and opacity are flat, blended, pixel,
Or it could be a tile.

【0427】3)減衰:オペランドデータを減衰する。
減衰はフラットなビットマップまたはバイトマップであ
ることができる。 ピクセルデータは典型的に4つのチャネルからなる。そ
の3つのチャネルがピクセルのカラーを形成する。残り
のチャネルはピクセルの不透明度である。ピクセルデー
タはプレ乗算されても、或はされなくてもよい。ピクセ
ルデータがプレ乗算されるとき、各カラーチャネルに不
透明度を掛ける。ピクセルがプレ乗算されると合成動作
の式が簡単になるため、ピクセルデータがプレ乗算され
てから他のピクセルと合成されるのが普通である。
3) Attenuation: Attenuates operand data.
The attenuation can be a flat bitmap or a bytemap. Pixel data typically consists of four channels. The three channels form the color of the pixel. The remaining channel is the opacity of the pixel. Pixel data may or may not be pre-multiplied. When pixel data is pre-multiplied, each color channel is multiplied by opacity. Pre-multiplying pixels simplifies the formula for the compositing operation, so it is common for pixel data to be pre-multiplied before compositing with other pixels.

【0428】好適な実施例で実行される合成命令を表1
に示す。各命令はプレ乗算されたデータに働きかける。
(ac0,a0)はプレ乗算されたピクセルカラーac
と不透明度a0を、rは“オフセット”値、wc()は
ラップ/クランプ・オペレータを意味し、表1における
over、in、out、atopの各オペレータの逆
オペレータも実装されている。また、合成モデルは左側
に累算器を備える。
Table 1 shows the synthesis instructions executed in the preferred embodiment.
Shown in Each instruction operates on pre-multiplied data.
(Ac0, a0) is the pre-multiplied pixel color ac
And opacity a0, r is the "offset" value, wc () is the wrap / clamp operator, and the inverse operators of the over, in, out, and top operators in Table 1 are also implemented. The composite model has an accumulator on the left side.

【0429】図134における合成ブロック1760
は、3つのカラーサブブロックと不透明サブブロックを
具備する。各々のカラーサブブロックは、入力ピクセル
の1つのカラーチャンネルと不透明チャンネルに対して
動作して、出力ピクセルのカラーを得る。以上の動作を
擬似コードの形で以下に示す。 PIXEL Composite( IN colorA,colorB:PIXEL; IN opacityA,opacityB:PIXEL; IN comp_op:COMPOSITE_OPERATOR) ( PIXEL result; IF comp_opがrover,rin,rout,ratopである とTHEN colorAとcolorBをスワップする; opacityA,opacityBをスワップする; END IF; IF comp_opがover,rover,loado,又は、plu sであるとTHEN X=1; ELSE IF comp_opがin,rin,atop,又は、rat opであるとTHEN X=opacityB; ELSE IF comp_opがout,rout,又は、xorである とTHEN X=not(opacityB); ELSE IF comp_opがloadzero,loadc,又は、 loadcoであるとTHEN X=0; END IF; IF comp_opがover,rover,atop,ratop,又 は、xorであるとTHEN Y=not(opacitya); ELSE IF comp_opがplus,loadc,又は、load coであるとTHEN Y=not(opacitya); ELSE IF comp_opがplus,loadc,又は、load coであるとTHEN Y=1; ELSE IF comp_opがin,rin,out,rout,lo adzero,又は、loado THEN Y=0; END IF; result=coloA * X+colorB * Y; RETURN result; 命令’load’と’loado’が不透明チャンネル
に対して異なる意味を持っているため、以上のコードは
不透明サブブロックにおいて異なる。
Synthetic block 1760 in FIG. 134
Has three color sub-blocks and an opaque sub-block. Each color sub-block operates on one color channel and an opaque channel of the input pixel to obtain the color of the output pixel. The above operation is shown below in the form of pseudo code. PIXEL Composite (IN color A, color B: PIXEL; IN opacity A, opacity B: PIXEL; IN comp_op: COMPOSITE_OPERATOR) END IF; THEN X = 1 if IF comp_op is over, over, loado, or plus; THEN X = opacyB if ELSE IF comp_op is in, rin, atop, or rat op; ELSE IF comp_op is out, rout, or xor If there is, THEN X = not (opacityB); ELSE IF comp_op is loadzero, loadc, or loadco, THEN X = 0; END IF; IF comp_op is over, over, atop, ratop, or xor. THEN Y = not (opacity); ELSE IF comp_op is plus, loadc, or load co; and THEN Y = not (opacity); ELSE IF comp_op is plus, loadc, or load co; ELSE IF comp_op is in, rin, out, route, loadzero, or load THEN Y = 0; END IF; result = coloA * X + olorB * Y; RETURN result; for instruction 'load' and 'LOADO' has a different meaning to the opaque channel, or code differ in opaque sub-block.

【0430】図134におけるブロック1765は、ブ
ロック1760の出力をクランプまたはラップする。ブ
ロック1765がクランプするように構成されると、許
容される最小値より小さい全ての値を最小値に、許容さ
れる最大値より大きい全ての値を最大許容値に抑える。
ブロック1765がスワップするように構成されると、
以下の式を計算する。
Block 1765 in FIG. 134 clamps or wraps the output of block 1760. When block 1765 is configured to clamp, all values less than the minimum allowed are reduced to the minimum and all values greater than the maximum allowed are reduced to the maximum allowed.
When block 1765 is configured to swap,
Calculate the following formula.

【0431】((x−min)mod(max−mi
n))+min, ここで、minとmaxはカラーにおいて許容される最
小値と最大値を意味する。最小値と最大値としては、0
と255が望ましい。図134におけるブロック177
0は、ブロック1765からの結果をプレ乗算する。こ
れはプレ乗算されたカラー値に255/oを掛けること
によりピクセルをプレ乗算する。ここで、oは合成後の
不透明度を意味する。255/oの値は合成エンジン内
のROMから得られる。ROM内の値は8.8フォーマ
ットで記憶されており、分数以下の部分は丸められる。
乗算の結果は16.8フォーマットで格納される。逆プ
レ乗算されたピクセルを生成するために、この結果は8
ビットで丸められる。
((X-min) mod (max-mi)
n)) + min, where min and max mean the minimum and maximum values allowed for the color. The minimum and maximum values are 0
And 255 are desirable. Block 177 in FIG.
0 pre-multiplies the result from block 1765. This pre-multiplies the pixels by multiplying the pre-multiplied color value by 255 / o. Here, o means opacity after synthesis. The value of 255 / o is obtained from ROM in the synthesis engine. The values in the ROM are stored in 8.8 format, and fractions and fractions are rounded.
The result of the multiplication is stored in a 16.8 format. To generate the inverse pre-multiplied pixel, the result is 8
Rounded with bits.

【0432】ブランド生成部1721は特定の開始値と
終了値を持つ特定長さのブランドを生成する。これは以
下の2つのステージに渡って行なわれる。 1)ランプ生成 2)補間 ランプ生成において、合成エンジンは命令の長さに対し
て、0から255まで線形増加する数列を生成する。ラ
ンプ生成には、長さが255以下の“ジャンプ”モード
と長さが255より長い“ステップ”モードの2つがあ
る。モードは長さの上位24ビットによって決まる。ジ
ャンプモードにおいて、ランプ値の増加分はクロック周
期ごとに少なくとも1である。ステップモードおいて、
ランプ値の増加分はクロック周期ごとに最大1である。
[0432] The brand generation unit 1721 generates a brand of a specific length having a specific start value and a specific end value. This is performed over the following two stages. 1) Ramp generation 2) Interpolation In ramp generation, the synthesis engine generates a sequence that increases linearly from 0 to 255 over the length of the instruction. There are two types of ramp generation: a "jump" mode with a length less than 255 and a "step" mode with a length greater than 255. The mode is determined by the upper 24 bits of the length. In jump mode, the ramp value increment is at least one per clock cycle. In Step mode,
The increment of the ramp value is at most 1 for each clock cycle.

【0433】ジャンプモードにおいて、合成エンジンは
ステップ値255/(長さ−1)を求めるために8.8
フォーマットのROMを用いる。この値は16ビット累
算器に加えられる。累算器の出力は8ビットで切り捨て
られて数列を形成する。ステップモードおいて、合成エ
ンジンはBresenhamの線描アルゴリズムに似た
アルゴリズムを用いる。そのアルゴリズムを以下に示
す。
In the jump mode, the synthesis engine calculates 8.8 to obtain a step value of 255 / (length-1).
Format ROM is used. This value is applied to a 16-bit accumulator. The output of the accumulator is truncated at 8 bits to form a sequence. In step mode, the compositing engine uses an algorithm similar to Bresenham's drawing algorithm. The algorithm is shown below.

【0434】 Void line draw(length:INTERGER) { d=511−length; incrE=510; incrNE=512−2*length; ramp−0; for(i=0;i(length;i++) { if d(=0 then d+=incrE; else{ d+=incrNE; ramp++; } } } その後、ランプからブランドを生成するために次の式が使われる。Void line draw (length: INTERGER) d = 511-length; incrE = 510; incrNE = 512-2 * length; ramp-0; for (i = 0; i (length; i ++) (ifd = 0 then d + = incrE; else {d + = incrNE; ramp ++; {}} Then, the following formula is used to generate a brand from the lamp.

【0435】 Blend=((end−start)x ramp/255)+sta rt 255による割算に対して切り捨てが行われる。上記式
は、2つの加算器と、各チャンネルのランプによって
(end−startに対し)“プレ乗算”を行なうブ
ロックとを必要とする。主データパス部242が行なう
ことのできる他の画像処理は、一般色空間変換である。
一般化色空間変換(GCSC)は出力カラー値を求める
ためにピースワイズトライーリニア(3次線形)補間を
用いる。3次元の入力空間から1次元もしくは4次元出
力空間への変換が行なわれるのが望ましい。
Blend = ((end-start) × ramp / 255) + start 255 The truncation is performed for the division. The above equation requires two adders and a block to "pre-multiply" (for end-start) by the ramp of each channel. Another image processing that can be performed by the main data path unit 242 is a general color space conversion.
Generalized color space conversion (GCSC) uses piecewise trilinear interpolation to determine output color values. Preferably, a transformation from a three-dimensional input space to a one-dimensional or four-dimensional output space is performed.

【0436】いくつかの場合においては、色域のエッジ
におけるトライーリニア補間の正確さが問題になる。こ
の問題はエッジ付近に対して敏感なプリントデバイスに
おいて著しくなる。この問題を避けるためにGCSC
は、選択的に拡張出力色空間において計算されることが
でき、次の式を用いて適当な範囲内にスケール及びクラ
ンプされる。
In some cases, the accuracy of tri-linear interpolation at the edges of the color gamut is a problem. This problem is exacerbated in printing devices that are sensitive to near edges. GCSC to avoid this problem
Can be selectively calculated in the extended output color space and scaled and clamped within the appropriate range using the following equation:

【0437】 好適な実施例が実行できるその他の画像処理には、画像
変換および畳込み演算である。画像変換においてソース
画像はスケール、回転、スキューされる。畳込み演算に
おいて、ソース画像のピクセルは畳込み行列をもってサ
ンプリングされ、目的画像を生成する。目的画像におけ
るスキャンラインを生成するためには次の段階が必要で
ある。
[0437] Other image processing that the preferred embodiment can perform are image transformation and convolution operations. In image conversion, the source image is scaled, rotated, and skewed. In a convolution operation, pixels of a source image are sampled with a convolution matrix to generate a destination image. The following steps are required to generate a scan line in a target image.

【0438】1)図135に示すような目的画像のスキ
ャンラインを逆変換する。これによって目的画像のスキ
ャンラインを生成するに必要なソース画像のピクセルを
識別することができる。 2)ソース画像の必要部分を解凍する。 3)目的画像の水平、垂直サブサンプリング距離、開始
x,y座標をソース画像に逆変換する。
1) The scan line of the target image as shown in FIG. 135 is inversely converted. This makes it possible to identify the pixels of the source image required to generate the scan lines of the destination image. 2) Decompress the necessary part of the source image. 3) Invert the horizontal and vertical subsampling distances and the starting x, y coordinates of the target image into the source image.

【0439】4)上記情報を処理部に伝送し、必要なサ
ブサンプリングと補間を行ない、出力画像のピクセルを
求める。 サブサンプリング、補間、目的ピクセルの書き込みなど
は好適な実施例によって行なわれ、ソース画像における
関連する部分、使うべきサブサンプリング周波数などの
計算はホストアプリケーションによって行なわれる。
4) The above information is transmitted to the processing section, and necessary sub-sampling and interpolation are performed to obtain the pixels of the output image. Subsampling, interpolation, writing of destination pixels, etc. are performed by the preferred embodiment, and calculations of relevant parts in the source image, subsampling frequency to be used, etc. are performed by the host application.

【0440】図136は目的ピクセル値の計算において
必要な段階のブロック図である。図136は必要なソー
ス画像のピクセルが利用可能であるものと想定してい
る。目的ピクセルを計算する最後の段階は、ソース画像
から2次線形補間された全てのサブサンプルを合算する
ことである。主データパス部242における適当な設定
によって引き出される画像変換エンジンのブロック図を
図137に示す。画像変換エンジン1830はアドレス
生成部1831、プレ乗算部1832、補間部183
3、累算部1834、切捨て、クランプ、絶対値を求め
る論理部1835からなる。
FIG. 136 is a block diagram showing the steps necessary for calculating the target pixel value. FIG. 136 assumes that the required source image pixels are available. The final step in calculating the destination pixel is to sum all quadratic linearly interpolated subsamples from the source image. FIG. 137 is a block diagram of an image conversion engine derived by appropriate settings in the main data path unit 242. The image conversion engine 1830 includes an address generation unit 1831, a pre-multiplication unit 1832, and an interpolation unit 183.
3, an accumulating unit 1834, a truncating unit, a clamping unit, and a logical unit 1835 for calculating an absolute value.

【0441】アドレス生成部1831は、結果ピクセル
を構成するのに必要なソース画像のx,y軸を生成す
る。また、これは入力インデックステーブル1815と
画像1810のピクセルからインデックスオフセットを
求めるためのアドレスを生成する。アドレス生成部18
31がソース画像のx,y軸を生成する前にカーネルデ
ィスクリプタを読む。カーネルディスクリプタのフォー
マットには2つの種類があり、それを図138に示す。
カーネルディスクリプタは、 1)ソース画像の開始座標(符号なしの固定小数点、2
4.24精度)。位置(0、0)は画像の左上端であ
る。
The address generator 1831 generates the x and y axes of the source image required to form the result pixel. It also generates an address to determine an index offset from the input index table 1815 and the pixels of the image 1810. Address generator 18
31 reads the kernel descriptor before generating the x and y axes of the source image. There are two types of kernel descriptor formats, which are shown in FIG.
The kernel descriptors are: 1) the starting coordinates of the source image (unsigned fixed point, 2
4.24 precision). Position (0,0) is the upper left corner of the image.

【0442】2)水平、垂直のサブサンプルデルタ(2
の補数、24.24精度) 3)固定小数点行列係数における2進小数点の位置を示
す3ビットのbpフィールド。図150はbpフィール
ドの定義とその説明を示す。 4)累算行列係数。これは20個の2進位置(2の補
数)を持つ”可変”小数点精度のものであり、2進小数
点の位置はbpフィールドにより暗黙的に規定される。
2) Horizontal and vertical sub-sample deltas (2
3) A 3-bit bp field indicating the position of the binary point in the fixed-point matrix coefficients. FIG. 150 shows the definition and description of the bp field. 4) Accumulation matrix coefficients. It is of "variable" decimal precision with 20 binary positions (two's complement), the position of the binary point being implicitly defined by the bp field.

【0443】5)カーネルディスクリプタのワードの残
り個数を示すrlフィールド。この値は行の個数と(列
の個数−1)とを掛けたものと同じである。 短いカーネルディスクリプタにおいて、xの開始座標の
定数部を除いた他のパラメータは次のような値を持つ。 xの開始座標の分数 < −0, yの開始座標 < −0, 水平デルタ < −1.0, 垂直デルタ < −1.0. アドレス生成部1831が構成された後、現座標を計算
する。これにはサブサンプル行列の次元に応じて2つの
方法がある。サブサンプル行列の次元が1×1である場
合、アドレス生成部1831は十分な座標が得られるま
で水平デルタを現座標に加える。
5) An rl field indicating the remaining number of words in the kernel descriptor. This value is the same as the value obtained by multiplying the number of rows by (the number of columns−1). In the short kernel descriptor, other parameters except the constant part of the starting coordinate of x have the following values. Fraction of start coordinates of x <-0, start coordinates of y <-0, horizontal delta <-1.0, vertical delta <-1.0. After the address generation unit 1831 is configured, the current coordinates are calculated. There are two ways to do this, depending on the dimensions of the subsample matrix. If the dimension of the subsample matrix is 1 × 1, the address generator 1831 adds a horizontal delta to the current coordinates until sufficient coordinates are obtained.

【0444】サブサンプル行列の次元が1×1でない場
合、アドレス生成部1831は行列の1つの行が終るま
で水平デルタを現座標に加える。その後、アドレス生成
部1831は次の行の座標を求めるために垂直デルタを
現座標に加える。アドレス生成部1831は次の座標を
求めるため、1つ以上の列が終るまで現座標から水平デ
ルタを引く。その後、アドレス生成部1831は垂直デ
ルタを現座標に加え、そしてこの過程を繰り返す。図1
50の上端におけるダイアグラムは行列へのアクセス方
法を示す。この構造を用いて、行列はジグザグでスキャ
ンされ、この方法によって現在のx,y軸が計算される
ので、必要なレジスタ数は少なくてもよい。累算行列係
数はカーネルディスクリプタにおいて同様な順序で並べ
なければならない。
If the dimension of the subsample matrix is not 1 × 1, the address generator 1831 adds a horizontal delta to the current coordinates until one row of the matrix ends. Thereafter, the address generation unit 1831 adds a vertical delta to the current coordinates to obtain the coordinates of the next row. The address generator 1831 subtracts the horizontal delta from the current coordinates until one or more columns are completed to find the next coordinate. Thereafter, the address generator 1831 adds the vertical delta to the current coordinates and repeats this process. FIG.
The diagram at the top of 50 shows how to access the matrix. Using this structure, the matrix is scanned in a zigzag manner and the current x, y axes are calculated by this method, so that fewer registers are required. The accumulation matrix coefficients must be arranged in a similar order in the kernel descriptor.

【0445】現座標を生成した後、アドレス生成部18
31はインデックステーブルのアドレスを求めるため、
y軸をインデックステーブルベースアドレスに加える
(ソースピクセルが補間されている場合、アドレス生成
部1831は次のインデックステーブルも求める必要が
ある)。インデックステーブルベースアドレスは(y+
0)におけるインデックステーブルエントリを指す。イ
ンデックステーブルからインデックスオフセットを求め
た後、アドレス生成部1831はそれをx座標に加え
る。この和は、ソース画像から1ピクセルを求めるとき
に用いられる(ソースピクセルが補間されている場合は
2ピクセル)。ソースピクセルが補間されている場合、
アドレス生成部1831はx座標を次のインデックスオ
フセットに加え、2以上のピクセルを得る。
After generating the current coordinates, the address generation unit 18
31 is to find the address of the index table,
The y-axis is added to the index table base address (if the source pixel is interpolated, the address generator 1831 also needs to find the next index table). The index table base address is (y +
0). After obtaining the index offset from the index table, the address generator 1831 adds it to the x coordinate. This sum is used to determine one pixel from the source image (two pixels if the source pixel is interpolated). If the source pixels are interpolated,
The address generator 1831 adds the x coordinate to the next index offset to obtain two or more pixels.

【0446】画像変換の座標を求めるとき、畳込み演算
においても類似な手法を使う。畳込み演算との唯一の差
異は、畳込み演算は次の出力ピクセルにおける行列の開
始座標が前ピクセルにおける行列の開始座標から水平デ
ルタだけ離れていることである。画像変換において、次
のピクセルにおける行列の開始座標は、以前の出力ピク
セルにおける行列の右上端ピクセルの座標から水平デル
タだけ離れている。
When obtaining coordinates for image conversion, a similar technique is used in the convolution operation. The only difference from the convolution operation is that the start coordinate of the matrix at the next output pixel is separated from the start coordinate of the matrix at the previous pixel by a horizontal delta. In the image transformation, the starting coordinates of the matrix at the next pixel are separated by a horizontal delta from the coordinates of the upper right pixel of the matrix at the previous output pixel.

【0447】図139において、中段のダイアグラムは
上記の差を示す。プレ乗算部1832は必要であればピ
クセルのカラーチャネルと不透明チャネルを掛ける。補
間部1832は必要なピクセルの真の色を求めるためソ
ースピクセルを補間する。これはソース画像メモリから
2ピクセルを取り、現在のx座標の分数部分を用いて補
間し、その結果をレジスタに入力する。その後、ソース
画像メモリの次の列の2ピクセルを取り、同じくxの分
数を用いて補間する。その後、補間部1833は現在の
y座標の分数部を用いて、この補間値とその前の補間値
を補間する。
In FIG. 139, the middle diagram shows the above difference. The pre-multiplier 1832 multiplies the pixel's color and opacity channels if necessary. Interpolator 1832 interpolates the source pixels to determine the true color of the required pixel. It takes two pixels from the source image memory, interpolates using the fractional part of the current x coordinate, and inputs the result to a register. Thereafter, two pixels in the next column of the source image memory are taken and similarly interpolated using a fraction of x. Thereafter, the interpolation unit 1833 uses the fractional part of the current y coordinate to interpolate this interpolated value with the previous interpolated value.

【0448】累算部1834は2つの作業をする。 1)行列係数とピクセルを掛ける。 2)全ての行列に対する上の結果を累算した値を次のス
テージに出力する。累算部1834の初期値は、チャネ
ルに応じて、0もしくは特定の値に初期化される。
The accumulator 1834 performs two tasks. 1) Multiply the matrix coefficient by the pixel. 2) Output the value obtained by accumulating the above results for all matrices to the next stage. The initial value of the accumulating unit 1834 is initialized to 0 or a specific value according to the channel.

【0449】ブロック1835は累算部1834の出力
を切り捨て、必要であればアンダーフローやオーバーフ
ローした値を最大値または最小値に制限する。そして、
必要であれば出力の絶対値を求めることもある。累算部
の出力において2進小数点の位置はカーネルディスクリ
プタのbpフィールドによって指定される。bpフィー
ルドは、累算結果において捨てるべきビットの数を示
す。これは、図139における下端のダイアグラムに示
されている。この累算値は符号ありの2の補数として扱
われる。
Block 1835 truncates the output of accumulator 1834 and limits underflow or overflow values to maximum or minimum values, if necessary. And
If necessary, the absolute value of the output may be obtained. The position of the binary point in the output of the accumulator is specified by the bp field of the kernel descriptor. The bp field indicates the number of bits to be discarded in the accumulation result. This is shown in the lower diagram in FIG. This accumulated value is treated as a signed two's complement.

【0450】主データパス部242が行えるもう1つの
画像処理動作は行列乗算である。行列乗算は2つの空間
の間でアフィン関係がある場合の色空間変換に使われ
る。これが、(3次線形補間に基づく)一般色空間変換
との差異である。行列乗算の結果は次の式によって定義
される。
Another image processing operation that can be performed by the main data path unit 242 is matrix multiplication. Matrix multiplication is used for color space conversion when there is an affine relationship between two spaces. This is a difference from general color space conversion (based on cubic linear interpolation). The result of the matrix multiplication is defined by the following equation:

【0451】[0451]

【数7】 (Equation 7)

【0452】ここで、riは結果ピクセルであり、ai
はAオペランドピクセルである。行列のサイズは5列4
行でなければならない。図140は、主データパス部2
42において行列乗算を行なう乗算−加算器のブロック
図である。この中にはピクセルチャンネルに行列係数を
掛ける乗算部、その結果を合算する加算器、必要に応じ
て出力値をクランプしそして絶対値を求める論理部から
なる。
Where ri is the result pixel and ai
Is the A operand pixel. Matrix size is 5 columns 4
Must be a line. FIG. 140 shows the main data path unit 2
42 is a block diagram of a multiply-adder that performs matrix multiplication at 42. FIG. It comprises a multiplier for multiplying the pixel channel by a matrix coefficient, an adder for summing the results, and a logic for clamping an output value and obtaining an absolute value as necessary.

【0453】行列乗算が終了するためには2クロックサ
イクルが必要である。各サイクルごとに多重化部を設定
し、乗算部と加算部のデータが正しく選択されるように
する。第0サイクルにおいて、ピクセルの最下位2バイ
トが多重化部1851、1852によって選択される。
次にその係数を行列の左側における2つの列、即ち、キ
ャッシュにおける第0ラインにある行列係数に掛ける。
It takes two clock cycles to complete the matrix multiplication. A multiplexing unit is set for each cycle so that data of the multiplying unit and the adding unit are correctly selected. In the 0th cycle, the least significant two bytes of the pixel are selected by the multiplexers 1851 and 1852.
The coefficient is then multiplied by the matrix coefficient in the two columns on the left side of the matrix, ie, line 0 in the cache.

【0454】第1サイクルにおいて、ピクセルのより上
位2バイトがトップ多重化部によって選択される。次に
その係数を行列の右側における2つの列に掛ける。乗算
の結果は最終サイクルの結果に加えられる1854。加
算部における和は8ビットに切り捨てられる1855。
“オペランド論理部”1856は、加算部1854の入
力が4つになるように乗算部出力を再配列する。これは
乗算部の結果に対する加算を可能にするための再配列を
行い、24ビット係数と8ビットピクセル成分との正し
い積を出力するようにする。
In the first cycle, the upper two bytes of the pixel are selected by the top multiplexer. The coefficients are then multiplied by the two columns on the right side of the matrix. The result of the multiplication is added 1854 to the result of the last cycle. The sum in the adder is truncated to 8 bits 1855.
The “operand logic unit” 1856 rearranges the output of the multiplication unit so that the input of the addition unit 1854 becomes four. This performs a rearrangement to allow addition to the result of the multiplier and outputs the correct product of the 24-bit coefficients and the 8-bit pixel components.

【0455】“AC論理部”1855は加算部の出力の
最下位12ビットを切捨て、設定に従い切り捨てられた
結果の絶対値を求める。その後、設定に応じて、その結
果をクランプまたはラップする。“AC論理部”がクラ
ンプするように設定されたとき、0以下の全ての値は0
に、255以上の全ての値は255に抑えられる。“A
C論理部”がラップするように設定されたとき、定数部
分の下位8ビットが出力される。
[0455] The "AC logic unit" 1855 truncates the least significant 12 bits of the output of the adding unit, and obtains the absolute value of the truncated result according to the setting. The result is then clamped or wrapped, depending on the settings. When the “AC logic” is set to clamp, all values below 0 are 0
In addition, all values 255 and above are suppressed to 255. "A
When the "C logic part" is set to wrap, the lower 8 bits of the constant part are output.

【0456】主データパス部242は、上記以外の画像
処理を行なうように設定されることもできる。設計再利
用によってコストが低減されるとともに、様々な画像処
理動作を早く行なうことのできるコンピュータアーキテ
クチャについて以下述べるようにする。なお、このコン
ピュータアーキテクチャは柔軟性をもっているため、外
部プログラミングエージェントであってもそのアーキテ
クチャにさえ慣れていれば、元々予測しなかった画像処
理動作をも実行できるようにコンピュータを構成するこ
とができる。また、設計のコアーは主にいくつかの多機
能ブロックからなるため、設計の苦労を著しく減らすこ
とができる。
The main data path section 242 can be set to perform image processing other than the above. A computer architecture capable of reducing costs by design reuse and performing various image processing operations quickly will be described below. It should be noted that since the computer architecture is flexible, even if an external programming agent is used to the architecture, the computer can be configured to execute image processing operations that were not originally predicted. Also, since the core of the design mainly consists of several multifunctional blocks, the design effort can be significantly reduced.

【0457】3.18.6 データキャッシュ制御部と
キャッシュ データキャッシュ制御部240は、コプロセッサ224
における4キロバイトの読み出しデータキャッシュ23
0を備えている。データキャッシュ230はダイレクト
マップRAMキャッシュとして配列されており、外部メ
モリにおける同じ長さを持つラインのいずれも、キャッ
シューメモリ230(図2)における同じ長さの同じラ
インに直接マッピングされることができる。キャッシュ
メモリにおけるこのラインを普通キャッシュラインと呼
び、上記キャッシュメモリは、多数のこのようなキャッ
シュラインからなる。
3.18.6 Data Cache Control Unit and Cache The data cache control unit 240
4 KB read data cache 23
0 is provided. The data cache 230 is arranged as a direct mapped RAM cache, and any line of the same length in the external memory can be directly mapped to the same line of the same length in the cache memory 230 (FIG. 2). . This line in a cache memory is commonly called a cache line, and the cache memory is made up of many such cache lines.

【0458】データキャッシュ制御部240は2つのオ
ペランドオーガナイザ247、248からのデータ要求
をサービスする。まずデータがキャッシュ230に存在
するかを確認する。そうでなければデータが外部メモリ
からフェッチされる。データキャッシュ制御部240に
はプログラムのできるアドレス生成部があり、データキ
ャッシュ制御部240がいくつかの異なるアドレッシン
グモードで動作するのを可能にする。また、要求された
データのアドレスがデータキャッシュ制御部240によ
って作られるようになる特殊アドレシングモードもあ
る。このモードでは8ワード(256ビット)までのデ
ータをオペレーションオーガナイザ247、248に同
時に送ることができる。
The data cache control unit 240 services data requests from the two operand organizers 247 and 248. First, it is confirmed whether data exists in the cache 230. Otherwise, data is fetched from external memory. The data cache controller 240 has a programmable address generator, which enables the data cache controller 240 to operate in several different addressing modes. There is also a special addressing mode in which the address of the requested data is made by the data cache control unit 240. In this mode, data of up to eight words (256 bits) can be sent to the operation organizers 247 and 248 simultaneously.

【0459】キャッシュRAMは8つの独立してアドレ
ス可能なメモリバンクからなる(異なるラインアドレス
によってアドレスされた)。各々のバンクからのデータ
が256ビットに単位付けられる一部の特殊アドレシン
グモードに必要である。この配置は、お互いに異なるバ
ンクから来たものであれば、8つの32ビット要求まで
を同時にサービスすることができる。
The cache RAM consists of eight independently addressable memory banks (addressed by different line addresses). Required for some special addressing modes where the data from each bank is united into 256 bits. This arrangement can service up to eight 32-bit requests simultaneously if they come from different banks.

【0460】キャッシュは、詳細に後述する以下のモー
ドにおいて動作する。必要であれば、すべてのキャッシ
ュが自動的に入れ込まれるようにすることも可能であ
る。1.ノーマルモード 2.単一出力一般色空間変換モード 3.多出力一般色空間変換モード 4.JPEG符号化モード 5.低速JPEG復号モード 6.行列乗算モード 7.デスエーブルモード 8.無効化モード 図141は、図2におけるデータキャッシュ制御部24
0のアドレス、データ、制御フローとデータキャッシュ
230とを示す。
The cache operates in the following modes, which will be described in detail below. If necessary, all caches can be automatically populated. 1. Normal mode 2. 2. Single output general color space conversion mode 3. Multi-output general color space conversion mode JPEG encoding mode 5. Low-speed JPEG decoding mode 6. Matrix multiplication mode 7. Disable mode Invalidation mode FIG. 141 shows the data cache control unit 24 in FIG.
0 shows the address, data, control flow, and data cache 230.

【0461】データキャッシュ230は、前述したダイ
レクトマップキャッシュを具備する。データキャッシュ
制御部240は、各キャッシュラインにおけるタグエン
トリを有するタグメモリ1872を具備しており、タグ
エントリはキャッシュラインが現在マップされている外
部メモリアドレスの最上位部を有する。また、現在のキ
ャッシュラインが有効であるかどうかを示すライン有効
状態メモリ1873も備える。全てのキャッシュライン
の初期状態は無効である。
The data cache 230 has the direct map cache described above. The data cache controller 240 includes a tag memory 1872 having a tag entry for each cache line, with the tag entry having the most significant external memory address to which the cache line is currently mapped. It also has a line valid state memory 1873 indicating whether the current cache line is valid. The initial state of all cache lines is invalid.

【0462】データキャッシュ制御部240は、オペラ
ンドオーガナイザC247(図2)とオペランドオーガ
ナイザC248(図2)からのデータ要求をオペランド
バスインターフェースを通じて同時にサービスできる。
動作において、オペランドオーガナイザ247、248
(図2)のどちらかの一方もしくは両方はインデックス
1874を提供し、データ要求信号1876を出す。ア
ドレス生成部1881はインデックス1874に対して
1つもしくはそれ以上の完全な外部アドレス1877を
生成する。キャッシュ制御部1878は、生成されたア
ドレス1877のタグアドレスに対するタグメモリ18
72を検査するとともに、関連するキャッシュラインが
有効であるかどうかを調べるためにライン有効状態メモ
リ1873を検査することにより、要求されたデータが
キャッシュ230に存在するかどうかを判断する。要求
されたデータがキャッシュメモリ230に存在すると
き、要求データ1880と共に、アクノレッジメント
(応答)信号1879が関連するオペレーションオーガ
ナイザ247、248に送られる。要求されたデータが
キャッシュメモリ230に存在しないとき、入力バスイ
ンターフェース1871と入力インターフェーススイッ
チ252(図2)を通じて、要求されたデータ1870
が外部メモリからフェッチされる。データ1870は要
求信号1882を出力し、要求されたデータ1870が
生成されたアドレス1877を提供することによってフ
ェッチされる。アクノリッジ信号1883及び要求され
たデータ1870はそれぞれキャッシュ制御部1878
及びキャッシュメモリ230に送られる。それから、そ
のキャッシュメモリ230に関連するキャッシュライン
が新しいデータ1870によって更新される。新しいキ
ャッシュラインのタグアドレスもタグメモリ1872に
書き込まれ、新しいキャッシュラインにおけるライン有
効状態1873が起動される。アクノリッジ信号187
9はデータ1870とともに関連するオペランドオーガ
ナイザ247又は248(図2)に送られる。
The data cache control unit 240 can simultaneously service data requests from the operand organizer C247 (FIG. 2) and the operand organizer C248 (FIG. 2) through the operand bus interface.
In operation, the operand organizers 247, 248
Either or both of FIG. 2 provides an index 1874 and issues a data request signal 1876. The address generator 1881 generates one or more complete external addresses 1877 for the index 1874. The cache control unit 1878 stores the tag memory 18 with respect to the tag address of the generated address 1877.
Determine whether the requested data is in cache 230 by examining 72 and examining line valid state memory 1873 to see if the associated cache line is valid. When the requested data is present in the cache memory 230, an acknowledgment (response) signal 1879 is sent along with the requested data 1880 to the associated operation organizer 247,248. When the requested data does not exist in the cache memory 230, the requested data 1870 is input through the input bus interface 1871 and the input interface switch 252 (FIG. 2).
Is fetched from external memory. Data 1870 is fetched by outputting request signal 1882 and providing the address 1877 at which requested data 1870 was generated. The acknowledgment signal 1883 and the requested data 1870 are stored in the cache controller 1878, respectively.
And sent to the cache memory 230. The cache line associated with that cache memory 230 is then updated with the new data 1870. The tag address of the new cache line is also written to the tag memory 1872, and the line valid state 1873 for the new cache line is activated. Acknowledge signal 187
9 is sent along with data 1870 to the associated operand organizer 247 or 248 (FIG. 2).

【0463】図142において、データキャッシュ23
0のメモリ構成を示す。データキャッシュ230は、キ
ャッシュライン長が32である128個のキャッシュラ
インC0,...,C127をもつダイレクトマップキ
ャッシュとして整理される。キャッシュRAMは別々の
アドレス指定のできるメモリバンクB0,...,B7
を具備しており、各メモリバンクは32ビットのバンク
ライン128個のを持ち、各キャッシュラインCiは8
つのメモリバンクB0,...B7において相当する8
つのバンクラインB0i,...,B7iを有する。
In FIG. 142, the data cache 23
0 shows a memory configuration. The data cache 230 has 128 cache lines C0,. . . , C127 as a direct map cache. The cache RAM has separate addressable memory banks B0,. . . , B7
Each memory bank has 128 32-bit bank lines, and each cache line Ci has 8 banks.
The two memory banks B0,. . . 8 equivalent in B7
One bank line B0i,. . . , B7i.

【0464】生成された外部メモリアドレスの構成を図
143に示す。生成されたアドレスは20ビットタグア
ドレス、7ビットラインアドレス、3ビットバンクアド
レス、2ビットバイトアドレスからなる32ビットのワ
ードである。20ビットタグアドレスはタグアドレスと
タグメモリ1872に記憶されているタグと比較するの
に使われる。7ビットラインアドレスはキャッシュメモ
リ1870にある関連するキャッシュラインのアドレス
に使われる。3ビットバンクアドレスはキャッシュメモ
リ1870のメ関連するモリバンクのアドレスに使われ
る。2ビットバイトアドレスは32ビットバンクライン
の関連するバイトのアドレスに使われる。
FIG. 143 shows the configuration of the generated external memory address. The generated address is a 32-bit word consisting of a 20-bit tag address, a 7-bit line address, a 3-bit bank address, and a 2-bit byte address. The 20-bit tag address is used to compare the tag address with the tag stored in tag memory 1872. The 7-bit line address is used for the address of the associated cache line in cache memory 1870. The 3-bit bank address is used for the address of the memory bank associated with the memory of the cache memory 1870. The 2-bit byte address is used to address the associated byte of the 32-bit bank line.

【0465】図144は、データキャッシュ制御部24
0とデータキャッシュ230の構造のブロック図を示
す。ここで、128×256ビットRAMはキャッシュ
メモリ230を構成し、これは8つの128×32ビッ
トの分離住所付けが可能なメモリバンクからなる。この
RAMは書き込み可能ポート(write)、書き込み
アドレスポート(write_addr)、書き込みデ
ータポート(write_data)を持つ。また、読
み可能ポート(read)、8つの読みアドレスポート
(read_addr)、8つの読みデータ出力ポート
(read_data)を持つ。キャッシュメモリ23
0の全てのメモリバンクへの同時書き込みを可能にさせ
るためキャッシュ制御ブロック1878から書き込み可
能信号が生成される。必要によって、データキャッシュ
230は書き込みデータポート(write_dat
a)を通じて外部メモリからの1もしくはそれ以上のラ
インのデータに更新される。書き込みアドレスポート
(write_addr)にラインアドレスを提供し、
8:1多重化器MUXを利用することによって1ライン
のデータが書き込まれる。8:1多重化器MUXはデー
タキャッシュ制御部(addr_select)の制御
の下で生成された外部アドレスからラインアドレスを選
択する。キャッシュメモリ230の全てのメモリバンク
への同時読み込みを可能にさせるため、キャッシュ制御
ブロック1878から読み可能信号が生成される。この
方法で、キャッシュメモリ230のメモリバンクの8つ
の書きアドレスポート(read_addr)に提供さ
れる各々のラインアドレスに応じて、8つの読みデータ
ポート(read_data)から8つの異なるバンク
ラインのデータを同時に読み込むことができる。
FIG. 144 shows the data cache control unit 24.
0 shows a block diagram of the structure of the data cache 230. Here, the 128 × 256 bit RAM constitutes the cache memory 230, which comprises eight 128 × 32 bit separate addressable memory banks. This RAM has a writable port (write), a write address port (write_addr), and a write data port (write_data). It also has a readable port (read), eight read address ports (read_addr), and eight read data output ports (read_data). Cache memory 23
A write enable signal is generated from the cache control block 1878 to allow simultaneous writing to all memory banks of zeros. If necessary, the data cache 230 may store the write data port (write_dat).
Through a), the data is updated to one or more lines of data from the external memory. Providing a line address to a write address port (write_addr),
One line of data is written by using the 8: 1 multiplexer MUX. The 8: 1 multiplexer MUX selects a line address from the external address generated under the control of the data cache control unit (addr_select). A read enable signal is generated from cache control block 1878 to allow simultaneous reading of all memory banks of cache memory 230. In this manner, data of eight different bank lines are simultaneously read from eight read data ports (read_data) according to respective line addresses provided to eight write address ports (read_addr) of the memory banks of the cache memory 230. be able to.

【0466】各々のキャッシュメモリ230のバンクは
プログラム可能アドレス生成器1881を持っている。
これは違う8つの位置への、関連する8つのメモリバン
クからの同時アクセスを可能にする。各々のアドレス生
成器1881はアドレス生成器1881の作動モード設
定のためのdccモード入力、インデックスパケット入
力、ベースアドレス入力、アドレス出力を持つ。プログ
ラム可能アドレス生成器1881の作動モードは、 (a)dccモード入力への信号が各々のアドレス生成
器1881をランダムアクセスモードにし、外部メモリ
アドレスがインデックスパケット入力へ提供され、一つ
もしくはそれ以上のアドレス生成器1881のアドレス
出力に出力されるランダムアクセスモード; (b)dccモード入力への信号が各々のアドレス生成
器1881を適切なモードにするJPEGエンコーディ
ングと復号、色空間変換、行列乗算モード。このモード
では、各々のアドレス生成器1881にはインデックス
パケット入力へのインデックスが入力され、インデック
スアドレスを生成する。作動モードによって、アドレス
生成部は最大8つの異なる外部メモリアドレスを生成さ
せることができる。
Each cache memory 230 bank has a programmable address generator 1881.
This allows simultaneous access to eight different locations from the eight associated memory banks. Each address generator 1881 has a dcc mode input for setting an operation mode of the address generator 1881, an index packet input, a base address input, and an address output. The modes of operation of the programmable address generator 1881 include: (a) a signal to the dcc mode input places each address generator 1881 in a random access mode, an external memory address is provided to the index packet input, and one or more (B) JPEG encoding and decoding, color space conversion, matrix multiplication mode in which a signal to the dcc mode input puts each address generator 1881 into an appropriate mode. In this mode, the index to the index packet input is input to each address generator 1881 to generate an index address. Depending on the operation mode, the address generator can generate up to eight different external memory addresses.

【0467】8つのアドレス生成部1881は8つの異
なる論理回路からなっており、各々は入力としてベース
アドレス、出力として外部メモリアドレスを持つdcc
モードとインデックスからなる。ベースアドレスレジス
タ1885はインデックスパケットの組合せである現在
のベースアドレスを記憶し、dccモードレジスタ18
88はデータキャッシュ制御部240の現在の作動モー
ド(dccモード)を記憶する。
The eight address generators 1881 are composed of eight different logic circuits, each of which has a base address as an input and a dcc having an external memory address as an output.
It consists of a mode and an index. The base address register 1885 stores the current base address, which is a combination of index packets, and stores the current base address in the dcc mode register 18.
Reference numeral 88 stores the current operation mode (dcc mode) of the data cache control unit 240.

【0468】タグメモリ1872は1ブロック、128
×20ビットのマルチポートRAMで構成される。この
RAMは1つの書きポート(update−line−
addr)、1つの書き可能ポート(write)、8
つの読みポート(tag0_data,...,tag
7_data)を持っている。これは、8つのアドレス
生成器1881が現在記憶されている、1つもしくはそ
れ以上に生成されたメモリアドレスの、ラインのタグア
ドレスを決定することによりポート(read0lin
e−addr,...,read7line−add
r)において8つの同時のルックアップを可能にする。
これらラインの現在のタグアドレスはポート(tag0
−data,...,tag7−data)からタグ比
較部1886に出力される。ポート(update−l
ine−addr)のタグメモリ1872への書き込み
を可能にするため、必要によって、キャッシュ制御ブロ
ック1872によりタグ書き信号は生成される。
The tag memory 1872 has one block, 128
It is composed of a × 20-bit multiport RAM. This RAM has one write port (update-line-
addr), one writable port (write), 8
Read ports (tag0_data, ..., tag)
7_data). This is accomplished by determining the tag address of the line (read0lin) of the one or more generated memory addresses where the eight address generators 1881 are currently stored.
e-addr,. . . , Read7line-add
r) allows eight simultaneous lookups.
The current tag address of these lines is the port (tag0
-Data,. . . , Tag7-data) to the tag comparing unit 1886. Port (update-l
A tag write signal is generated by the cache control block 1872, if necessary, to allow writing of in-addr) to the tag memory 1872.

【0469】128ビットのラインvalidメモリ1
873は、キャッシュメモリ230の各キャッシュライ
ンのvalid状態を保っている。これは1つの書きポ
ート(update−line−addr)、1つの書
き可能ポート(update)、8つの読み込みポート
(read0line−addr,...,read7
line−addr)、8つの読み可能ポート(lin
evalid0,...,linevalid7)から
なる128×1ビットのメモリである。タグメモリと同
じように、これは8つのアドレス生成部1881に、1
つ若しくはそれ以上に生成されたメモリアドレスの個々
のラインアドレスに対して、現在のラインにセーブされ
ているラインvalid状態を決定させることにより、
ポート(read0line−addr,...,re
ad7line−addr)に対しての8つの同時ルッ
クアップを可能にする。このラインの現ラインvali
deビットはポート(linevalid0,...,
linevalid7)からタグ比較部1886に出力
される。必要によっては、ラインvalid状態メモリ
1873の書きポートに、ポート(update−li
ne−addr)からラインvalid状態メモリ18
73への書き込みを可能にするための書き信号がキャッ
シュ制御ブロック1878から生成する。
A 128-bit line valid memory 1
Reference numeral 873 holds a valid state of each cache line of the cache memory 230. This includes one write port (update-line-addr), one writable port (update), and eight read ports (read0-line-addr, ..., read7).
line-addr), 8 readable ports (lin
evalid0,. . . , Linevalid7) is a 128 × 1 bit memory. Like the tag memory, it has eight address generators 1881, 1
For each line address of one or more generated memory addresses, determine the line valid state saved in the current line,
Port (read0 line-addr, ..., re
ad7 line-addr) for eight simultaneous lookups. The current line val of this line
The de bit is the port (linevalid0, ...,
linevalid7) to the tag comparing unit 1886. If necessary, the port (update-li) may be added to the write port of the line valid state memory 1873.
ne-addr) to line-valid state memory 18
A write signal to enable writing to 73 is generated from cache control block 1878.

【0470】タグ比較部1886は8つのタグ比較器か
らなっており、現在生成された外部アドレスのラインア
ドレスによってアクセスされるラインのタグメモリ18
72に現在セーブされているタグアドレスを受け取るた
めのtag_data入力、現在生成された外部メモリ
アドレスのタグアドレス受け取るためのtag_add
r入力、比較されるタグアドレス部を設定するための現
動作モード信号(dcc_mode)を受け取るための
dcc_input、現在生成された外部アドレスのラ
インアドレスによってアクセスされるラインにあるライ
ンvalid状態メモリ1873に現在セーブされてい
るラインvalid状態を受け取るためのline_v
alid入力を持っている。比較部1886は8つのア
ドレス生成部1881それぞれに対して8つのhit出
力を持つ。生成された外部メモリアドレスのタグアドレ
スと、生成された外部メモリのラインアドレスによって
アクセスされる位置にあるタグメモリ1872の内容と
が一致する時、hit信号とそのラインへのラインva
lid状態ビット1873が出力される。この実施例で
は、外部メモリにセーブされているデータ構造は小さく
なり、タグアドレスの最上位ビットが全て同じである。
従って、タグアドレスの変化する最下位ビットだけを比
較すれば良い。これはタグ比較部1866がタグアドレ
スの変化する最下位ビットを比較するよう現作動モード
信号(dcc_mode)を設定することで可能にな
る。
The tag comparing unit 1886 is composed of eight tag comparators, and stores the tag memory 18 of the line accessed by the line address of the currently generated external address.
Tag_data input for receiving the currently saved tag address in 72, tag_add for receiving the tag address of the currently generated external memory address
r input, dcc_input for receiving the current operation mode signal (dcc_mode) for setting the tag address part to be compared, line valid state memory 1873 in the line accessed by the line address of the currently generated external address, and Line_v to receive the saved line valid state
It has a valid input. The comparison unit 1886 has eight hit outputs for each of the eight address generation units 1881. When the tag address of the generated external memory address matches the contents of the tag memory 1872 at the position accessed by the generated external memory line address, the hit signal and the line va to that line are output.
A lid status bit 1873 is output. In this embodiment, the data structure saved in the external memory becomes smaller, and the most significant bits of the tag address are all the same.
Therefore, only the least significant bit of the tag address change needs to be compared. This is made possible by the tag comparator 1866 setting the current operation mode signal (dcc_mode) to compare the least significant bit of the tag address.

【0471】キャッシュ制御部1878はキャッシュメ
モリ230にあるデータへのアクセスが可能なとき、オ
ペランドB247、オペランドC248からの要求(p
roc_req)と通知(proc_ack)を受け取
る。動作モードによっては、キャッシュメモリ230の
8つまでのバンクから異なるアドレスのデータが要求さ
れる。要求データがキャッシュメモリ230からアクセ
スできる時、タグ比較部1886からそのメモリのライ
ンにヒットを出す。出されたヒット信号(hit
0,...,hit7)に対して、キャッシュ制御部1
878はポート(cache_read)に読み込み可
能信号を生成し、ヒット信号が出されたキャッシュライ
ンへの読み込みを可能にする。ヒット信号(hit
0,...,hit7)ではなく要求(proc_re
q)1876が出された時には、生成された要求(ex
t_req)と供にデータのキャッシュラインの外部メ
モリアドレスが外部メモリに送られる。このキャッシュ
ラインは入力(ext_data)が可能な時、それを
通じてキャッシュメモリ230の8つのバンクに書き込
まれる。この場合、タグ情報もラインアドレスのタグメ
モリ1886に書き込まれ、そのラインのライン状態ビ
ット1873が出力される。
When access to data in the cache memory 230 is possible, the cache control unit 1878 requests from the operands B247 and C248 (p
proc_req) and a notification (proc_ack). Depending on the operation mode, data of different addresses is requested from up to eight banks of the cache memory 230. When the requested data can be accessed from the cache memory 230, the tag comparison unit 1886 issues a hit to a line of that memory. Hit signal (hit
0,. . . , Hit7), the cache control unit 1
878 generates a readable signal at the port (cache_read) and enables reading to the cache line from which the hit signal was issued. Hit signal (hit
0,. . . , Hit7) but not the request (proc_re
q) When 1876 is issued, the generated request (ex
The external memory address of the data cache line is sent to the external memory together with (t_req). This cache line is written to the eight banks of the cache memory 230 through it when input (ext_data) is available. In this case, the tag information is also written in the tag memory 1886 of the line address, and the line status bit 1873 of the line is output.

【0472】キャッシュメモリ230の8つのバンクか
らのデータは、データオーガナイザ1892にあるいく
つかの多重化器を通じて出力され、所定の方法で出力デ
ータパケット1894に位置付けられる。ある動作モー
ドでデータオーガナイザ1892は、現動作モード信号
(dcc_mode)と生成された外部メモリアドレス
のバイトアドレス(byte_addr)を用いる事に
よって、8つのメモリバンクから出力された8つの32
ビットワードから8ビットワードを選択、出力すること
ができる。他のモードでデータオーガナイザ1892
は、8つのメモリバンクから出力された8つの32ビッ
トワードを直接出力する。前述した通り、データオーガ
ナイザはこのデータを決められた方式に整列し出力す
る。
Data from the eight banks of the cache memory 230 is output through a number of multiplexers in the data organizer 1892 and is positioned in a predetermined manner in output data packets 1894. In one operation mode, the data organizer 1892 uses the current operation mode signal (dcc_mode) and the byte address (byte_addr) of the generated external memory address to generate eight 32 bits output from eight memory banks.
An 8-bit word can be selected and output from the bit word. Data Organizer 1892 in other modes
Directly outputs eight 32-bit words output from eight memory banks. As described above, the data organizer arranges and outputs this data in a predetermined format.

【0473】要求は次の段階で行われる。 1)プロセッシングユニットはキャッシュ制御部187
8にあるプロセッシングユニットインターフェースにア
ドレスを送りパケットデータを要求する。 2)8つのアドレス生成ユニット1881は動作モード
に従い、キャッシュメモリの各ブロックのアドレスを生
成する。
The request is made in the next stage. 1) The processing unit is a cache control unit 187
8 to the processing unit interface to request packet data. 2) The eight address generation units 1881 generate addresses of each block of the cache memory according to the operation mode.

【0474】3)生成されたアドレスのタグ位置は3ポ
ートのタグメモリ1886の4ブロックにセーブされて
いるタグアドレスと比較され、8つの生成されたアドレ
スに相当するライン部によって位置づけられる。 4)それらが一致し、そのラインのラインvalid状
態1873が出されたら、要求されたデータはキャッシ
ュメモリ230に存在するとみなされる。
3) The tag position of the generated address is compared with the tag addresses saved in four blocks of the three-port tag memory 1886, and positioned by the line portion corresponding to the eight generated addresses. 4) If they match and the line valid state 1873 for that line is issued, the requested data is considered to be in cache memory 230.

【0475】5)存在しないデータは外部バス1890
を介してフェッチされ、キャッシュメモリ230の8つ
のブロックはその外部メモリからのデータラインの内容
に更新される。新しいデータのタグアドレスはタグメモ
リ1886に書き込まれ、そのラインのラインvali
d状態1873が出される。 6)全ての要求データがキャッシュメモリ230に存在
すれば、それは決められたパケット形式でプロセッシン
グユニットに現れる。
5) Data that does not exist is transferred to external bus 1890
And the eight blocks of cache memory 230 are updated with the contents of the data lines from its external memory. The tag address of the new data is written to the tag memory 1886, and the line
The d state 1873 is issued. 6) If all the requested data is present in the cache memory 230, it appears in the processing unit in a fixed packet format.

【0476】前述した通り、コプロセッサ224の全て
の部分(図2)は標準CBusインターフェース303
(図20)を含めている。データキャッシュ制御部24
0とキャッシュ230の標準CBusインターフェース
レジスタの詳細は、付録BのB42からB46までに記
載されている。このレジスタの設定はデータ制御部24
0の作動を制御する。簡単のため、2つのレジスタ(b
ase_addressとbcc_mode)だけを図
153に示す。
As described above, all parts of the coprocessor 224 (FIG. 2) have the standard CBus interface 303.
(FIG. 20). Data cache control unit 24
Details of the 0 and standard CBus interface registers of the cache 230 are described in Appendix B B42 to B46. The setting of this register is performed by the data control unit 24.
0 operation is controlled. For simplicity, two registers (b
FIG. 153 shows only “ase_address” and “bcc_mode”.

【0477】データキャッシュ制御部240とデータキ
ャッシュ230が有効ならば、データキャッシュ制御部
は最初全てのキャッシュラインを無効にして標準モード
で動作する。ある命令の終わりには、データキャッシュ
制御部240とキャッシュ230はいつも標準動作モー
ドに切り替わる。”Invalidate”モードを除
いた全てのモードには”Auto−fill and
validate”と言うオプションがある。dcc_
cfg2レジスタに1ビットをセットすることにより、
全てのキャッシュをbase_addressレジスタ
にセーブされているアドレスから始めることができる。
この動作の間、オペランドオーガナイザB、C247,
248からのデータ要求は中止される。キャッシュはこ
の動作が終わった後に有効になる。 a.標準キャッシュモード このモードでは、2つのオペランドオーガナイザにより
要求データの外部メモリアドレスが提供される。アドレ
ス生成部1881が外部メモリアドレスを出力し、内部
タグメモリを用いてそれがメモリキャッシュ230に存
在するのかを確かめる。両方の要求データがキャッシュ
230に存在しない場合、入力インターフェーススイッ
チ252からデータが要求される。持続的かつ同時的要
求に構えてラウンド・ロビンスケジューリングが採用さ
れる。
When the data cache control unit 240 and the data cache 230 are valid, the data cache control unit invalidates all cache lines first and operates in the standard mode. At the end of an instruction, the data cache control 240 and the cache 230 always switch to the standard operation mode. All modes except the "Invalidate" mode have "Auto-fill and
validate ”. dcc_
By setting one bit in the cfg2 register,
All caches can start from the address saved in the base_address register.
During this operation, operand organizers B, C247,
The data request from 248 is aborted. The cache will be valid after this operation. a. Standard Cache Mode In this mode, the external memory address of the requested data is provided by two operand organizers. The address generator 1881 outputs the external memory address, and checks whether it exists in the memory cache 230 using the internal tag memory. If both requested data are not present in cache 230, data is requested from input interface switch 252. Round-robin scheduling is employed for persistent and simultaneous requests.

【0478】同時的な要求に対し、1つのデータアイテ
ムがキャッシュに存在すれば、それは要求したデータバ
スの後ろの32ビットに位置するようになる。他のデー
タは入力インターフェーススイッチを通じて外部に要求
される。 b.シングル出力一般色空間変換モード このモードでは、要求はオペランドオーガナイザ部Bか
ら12ビットバイトのアドレス形式で出される。図60
に示されている様に、要求データアイテムは8ビットカ
ラー出力値である。12ビットアドレスはアドレス生成
部1881のindex_packet入力に入力さ
れ、8つのアドレス生成部1881は図96に示される
形式の32ビット外部メモリアドレスを生成する。この
生成されたアドレスのバンク、ライン、バイトアドレス
は表12と図61によって決められる。外部メモリアド
レスは、8つの9ビットラインとバイトアドレスとして
解釈され、それはRAMの8つのバンクのバイトを指す
ために使われる。キャッシュは補間のため主データパス
242によりオペランドオーガナイザ部に、図60に示
された前述の原理で戻されたバンクの8バイト値を求め
るためにアクセスされる。全てのシングル出力一般カラ
ー値テーブルはキャッシュメモリ230に収まるため、
シングルカラー変換モードを適用する前にシングル出力
カラー値テーブルをキャッシュメモリ230にロードす
るのが望ましい。 c.マルチ出力一般色空間変換モード このモードでは、12ビットワードアドレスがオペラン
ドオーガナイザ部B247から受けられる。要求データ
アイテムは図62を参照して前述した32ビットカラー
出力値である。12ビットアドレスはアドレス生成部1
881のindex_packet入力に入力され、8
つのアドレス生成部1881は、図96に示される形式
の8つの異なる32ビット外部メモリアドレスを作る。
外部メモリアドレスのラインとタグアドレスは、表12
と図63によって決定される。外部メモリアドレスは、
図63を参照して前述したように、7ビットラインアド
レスと2ビットタグアドレスに分けられる9ビットアド
レスを有する8個の9ビットアドレスとして解釈され
る。タグアドレスが発見されなかった場合、入力インタ
ーフェーススイッチ252(図2)から適切なデータが
ロードされるまでキャッシュは停止する。データが利用
可能な場合、出力データはオペランドオーガナイザ部に
出力される。 d.JPEG符号化モード このモードでは、JPEG符号化モードに必要なテーブ
ルなどがキャッシュRAMのバンクにセーブされる。テ
ーブルの記憶についてはJPEG符号化モード(表1
4、16)のところに述べられている。 e.低速JPEG復号モード このモードでは、データは表17に従って生成される。 f.行列乗算モード このモードでは、キャッシュは256バイトラインのデ
ータにアクセスするために使われる。 g.Disabledモード このモードでは、全ての要求は入力インターフェースス
イッチ252にパスされる。 h.Invalidate(無効化)モード このモードでは、ラインvalid状態ビットをクリア
することにより、全てのキャッシュの内容が無効にされ
る。
For a simultaneous request, if one data item exists in the cache, it will be located in the last 32 bits of the requested data bus. Other data is requested externally through the input interface switch. b. Single Output General Color Space Conversion Mode In this mode, the request is issued from the operand organizer B in the form of a 12-bit byte address. Figure 60
The requested data item is an 8-bit color output value, as shown in FIG. The 12-bit address is input to the index_packet input of the address generator 1881, and the eight address generators 1881 generate a 32-bit external memory address in the format shown in FIG. The bank, line, and byte addresses of the generated address are determined by Table 12 and FIG. External memory addresses are interpreted as eight 9-bit lines and byte addresses, which are used to point to bytes in eight banks of RAM. The cache is accessed by the main data path 242 for interpolation to the operand organizer to determine the 8-byte value of the bank returned in the manner described above with reference to FIG. Since all single output general color value tables fit in the cache memory 230,
Preferably, a single output color value table is loaded into cache memory 230 before applying the single color conversion mode. c. Multi-output general color space conversion mode In this mode, a 12-bit word address is received from the operand organizer unit B247. The request data item is the 32-bit color output value described above with reference to FIG. The 12-bit address is stored in the address generator 1
881 is input to the index_packet input, and 8
One address generator 1881 produces eight different 32-bit external memory addresses of the form shown in FIG.
Table 12 shows the line and tag address of the external memory address.
And FIG. The external memory address is
As described above with reference to FIG. 63, it is interpreted as eight 9-bit addresses having a 9-bit address divided into a 7-bit line address and a 2-bit tag address. If no tag address is found, the cache stops until the appropriate data is loaded from input interface switch 252 (FIG. 2). If data is available, the output data is output to the operand organizer. d. JPEG encoding mode In this mode, tables and the like necessary for the JPEG encoding mode are saved in the bank of the cache RAM. The table is stored in the JPEG encoding mode (Table 1).
4, 16). e. Slow JPEG decoding mode In this mode, data is generated according to Table 17. f. Matrix multiply mode In this mode, the cache is used to access data on 256 byte lines. g. Disabled mode In this mode, all requests are passed to the input interface switch 252. h. Invalidate mode In this mode, the contents of all caches are invalidated by clearing the line valid status bit.

【0479】3.18.7 入力インターフェーススイ
ッチ 図2で、入力インターフェーススイッチはピクセルオー
ガナイザ部246、データキャッシュ制御部240、命
令制御部235からの要求データを調節する投割を果た
す。またこれは外部インターフェース制御部238とロ
ーカルメモリ制御部236に必要なアドレスとデータを
伝送する。
3.18.7 Input Interface Switch In FIG. 2, the input interface switch performs a function of adjusting request data from the pixel organizer unit 246, the data cache control unit 240, and the instruction control unit 235. It also transmits necessary addresses and data to the external interface controller 238 and the local memory controller 236.

【0480】入力インターフェーススイッチ252はベ
ースアドレス若しくはホストメモリマップにあるメモリ
オブジェクトのいずれかのレジスタにその設定を保存す
る。20個のアドレスビットが必要なため、これはペー
ジ境界に整列されるバーチュアルアドレスである。ピク
セルオーガナイザ部、データキャッシュ制御部、命令制
御部からの要求に対して、入力インターフェーススイッ
チ252は、まずデータの開始アドレスの上位6ビット
からコプロセッサのベースアドレスビットを減じる。こ
の結果が負であるか、この結果の上位6ビットが0では
ない場合はPCIバスが望ましい伝送先であることを意
味する。
The input interface switch 252 stores the setting in any register of the base address or the memory object in the host memory map. This is a virtual address aligned on a page boundary because 20 address bits are required. In response to a request from the pixel organizer unit, the data cache control unit, or the instruction control unit, the input interface switch 252 first subtracts the coprocessor base address bit from the upper six bits of the data start address. If the result is negative or the upper 6 bits of the result are not 0, then the PCI bus is the desired destination.

【0481】結果の上位6ビットが0である場合は、デ
ータマップがコプロセッサのメモリ位置を現すことを意
味する。その後、入力インターフェーススイッチはコプ
ロセッサの位置が正しいか否かを判別するため次の3ビ
ットを検査する。コプロセッサの正当な位置は、 1)コプロセッサのベースアドレスからオフセット0x
01000000から始まる一般インターフェースが占
める16メガバイト。
If the upper 6 bits of the result are 0, it means that the data map represents a memory location of the coprocessor. The input interface switch then examines the next three bits to determine if the coprocessor is in the correct position. The legal location of the coprocessor is: 1) offset 0x from the coprocessor base address
16 megabytes occupied by general interfaces starting from 01000000.

【0482】2)コプロセッサのメモリオブジェクトの
ベースアドレスからオフセット0x02000000か
ら始まるローカルメモリ制御部(LMC)が占める32
メガバイト。不当なコプロセッサの位置を指す要求は、
入力インターフェーススイッチによりエラーと見なされ
る。PCIバスはコプロセッサのメモリオブジェクトが
占める領域以外のアドレスのデータソースとなる。入力
インターフェーススイッチは要求データがPCIバスか
らのものなのか、それとも一般インターフェースからの
ものかをEICに知らせるためiソース信号を用いる。
2) Local memory controller (LMC) occupying 32 starting at offset 0x0200000 from the base address of the memory object of the coprocessor 32
Megabytes. Requests pointing to illegal coprocessor locations are:
Considered an error by the input interface switch. The PCI bus is a data source for addresses other than the area occupied by the memory objects of the coprocessor. The input interface switch uses the i source signal to inform the EIC whether the requested data is from the PCI bus or from the general interface.

【0483】アドレス復号処理の後、正当な要求は適切
なIBusインターフェースに伝送される。EICとL
MCはi−ack信号が出された時、入力インターフェ
ーススイッチにデータを伝送する。しかし入力インター
フェーススイッチは入力されるワード数をカウントしな
いので、現在のデータ伝送がいつ終わるのかを、ピクセ
ルオーガナイザ部により制御されるi−oe信号、命令
制御部、データキャッシュ制御部が監視すなければなら
ない。
After the address decoding process, the legitimate request is transmitted to the appropriate IBus interface. EIC and L
The MC transmits data to the input interface switch when the i-ack signal is output. However, since the input interface switch does not count the number of input words, the i-oe signal controlled by the pixel organizer unit, the command control unit, and the data cache control unit must monitor when the current data transmission ends. No.

【0484】入力インターフェーススイッチ252はピ
クセルオーガナイザ部、データキャッシュ制御部、命令
制御部の3つのモジュールを調節する。これらはデータ
を同時に要求することができるが、物理的な資源は2つ
しかないため、その要求は直に処理されない。入力イン
ターフェーススイッチに使われる調節技術は優先権をベ
ースにし、またプログラムも可能である。入力インター
フェーススイッチの設定レジスタにある制御ビットは、
命令制御部、データキャッシュ制御部、ピクセルオーガ
ナイザ部の相対的優先権を指定する。優先権が低いモジ
ュールからの要求は、その他の2つのモジュールからの
同じ資源へのアクセス要求がない場合に受け入れられ
る。少なくとも2つの要求発行元に同じ優先順位が与え
られると、要求が受付けられる発行元を決定するために
ラウンドロビン技術を用いる必要が生じる。
The input interface switch 252 controls three modules: a pixel organizer, a data cache controller, and an instruction controller. They can request data at the same time, but since there are only two physical resources, the request is not processed immediately. The adjustment technique used for the input interface switch is priority based and can be programmed. The control bits in the input interface switch setting register are:
The relative priority of the instruction control unit, the data cache control unit, and the pixel organizer unit is specified. A request from a lower priority module is accepted in the absence of a request from the other two modules to access the same resource. Given that at least two request sources are given the same priority, it becomes necessary to use round-robin techniques to determine the request source from which requests are accepted.

【0485】1つのソースに直ちにアクセスするのが不
可能であるため、入力インターフェーススイッチは要求
されたデータのアドレスとバースト長を記憶し、要求元
から提供されたデータをプリフェッチするかどうかをみ
る必要がある。あるソースに対する処理の中で、IBu
s処理がない場合には優先権を決める調整処理が必要に
なる。
Since it is impossible to immediately access one source, the input interface switch needs to store the address and burst length of the requested data and check whether to prefetch the data provided by the requestor. There is. In the process for a certain source, IBu
If there is no s process, an adjustment process for determining the priority is required.

【0486】図145に命令インターフェーススイッチ
252の詳細を示す。スイッチ252は標準CBusイ
ンターフェースとレジスタファイル860以外にアドレ
ス復号器863と調節部864の間に2つのIBusト
ランシーバ661を持つ。アドレス復号器863はピク
セルオーガナイザ部、データキャッシュ制御部、命令制
御部から受けた要求に対するアドレス復号をする。アド
レス復号器863は、アドレスが正当なのかを検査する
他、必要によってアドレスを再マッピングする。調節部
864はどの要求をIBusトランシーバ661からI
Busトランシーバ662に伝送するのかを決める。優
先権はプログラム可能である。
FIG. 145 shows the details of the command interface switch 252. The switch 252 has two IBus transceivers 661 between the address decoder 863 and the controller 864 in addition to the standard CBus interface and the register file 860. The address decoder 863 decodes an address in response to a request received from the pixel organizer, the data cache controller, and the instruction controller. The address decoder 863 checks whether the address is valid and remaps the address if necessary. The control unit 864 determines which request is transmitted from the IBus transceiver 661 to the I bus transceiver 661.
It decides whether to transmit to the Bus transceiver 662. Priority is programmable.

【0487】IBusトランシーバ861、862は、
マルチプレクシングとデマルチプレクシング機能と、他
のインターフェースから入力インターフェーススイッチ
への通信を可能にするためのトライステートのバッファ
ーリング機能を有している。 3.18.8 ローカルメモリ制御部 図2において、ローカルメモリ制御部236は、ローカ
ルメモリの制御及びローカルメモリとコプロセッサ内の
モジュールとの間におけるアクセス要求の処理の全てを
担当する。ローカルメモリ制御部236は、結果オーガ
ナイザ249からの書き込み要求と入力インターフェー
ススイッチ252からの読み出し要求に応答する。更
に、周辺インターフェース制御部237と通常の一般C
Bus入力からの読み出しと書き込み要求に対しても応
答する。ローカルメモリ制御部はプログラム可能なプラ
イオリティシステムを用いており、更にスループットを
最大化するためにFIFOバッファを採用している。
The IBus transceivers 861 and 862 are
It has a multiplexing and demultiplexing function, and a tri-state buffering function for enabling communication from another interface to the input interface switch. 3.18.8 Local Memory Control Unit In FIG. 2, the local memory control unit 236 is in charge of all of the control of the local memory and the processing of the access request between the local memory and the module in the coprocessor. The local memory controller 236 responds to a write request from the result organizer 249 and a read request from the input interface switch 252. Further, the peripheral interface control unit 237 and the ordinary general C
It also responds to read and write requests from the Bus input. The local memory controller uses a programmable priority system and employs a FIFO buffer to maximize throughput.

【0488】本発明においては、ファーストイン・ファ
ーストアウト(FIFO)バッファの他に、メモリアレ
イからポートをデカップルするためにマルチポートバー
ストダイナミックメモリ制御部が用いられている。図1
46は、本発明の第1の実施例に従い、4ポートバース
トダイナミックメモリ制御部のブロック図を示してい
る。この回路には、メモリアレイ1910へのアクセス
を必要とする2つの書き込みポート(A1944とB1
946)と2つの読み出しポート(C1948とD19
50)が含まれている。読み出しポート1948、19
50のデータパスは別個のFIFO1936、1938
経由でメモリアレイ1910から出てくるのに対し、2
つの書き込みポートからのデータパスは別個のFIFO
1920、1922を通り、多重化部1912経由でメ
モリアレイ1910に向かう。中央制御部1932は、
ダイナミックメモリ1910へのインターフェースに必
要な全てのコントロール信号を駆動すると共に全体のポ
ートアクセスを調整する。リフレッシュカウンタ193
4は、メモリアレイ1910のためにダイナミックメモ
リのリフレッシュサイクルの必要時期を決め、制御部1
932と共にこれらを調整する。
In the present invention, in addition to a first-in first-out (FIFO) buffer, a multiport burst dynamic memory controller is used to decouple ports from the memory array. FIG.
Reference numeral 46 denotes a block diagram of a 4-port burst dynamic memory control unit according to the first embodiment of the present invention. This circuit has two write ports (A1944 and B1) that require access to the memory array 1910.
946) and two read ports (C1948 and D19)
50) is included. Read ports 1948, 19
The 50 data paths are separate FIFOs 1936, 1938
Out of the memory array 1910 via
The data path from one write port is a separate FIFO
After passing through 1920 and 1922, the signal goes to the memory array 1910 via the multiplexing unit 1912. The central control unit 1932
It drives all control signals necessary for interfacing to the dynamic memory 1910 and coordinates overall port access. Refresh counter 193
4 determines the required time of the refresh cycle of the dynamic memory for the memory array 1910,
Adjust these together with 932.

【0489】好ましくは、メモリアレイ1910に対す
るデータの読み出しと書き込みは、書き込みポート19
44、1946からFIFO1920、1922へ、或
はFIFO1936、1938から読み出しポート19
48、1950への転送の2倍のレートで行われる。こ
の結果、書き込みと読み出しポート1944、194
6、1948、1950を通してデータを転送するのに
要する時間に対し、メモリアレイ1910からの転送、
又はメモリアレイ1910への転送に要する時間(いか
なるメモリシステムのボトルネックである)を可能な限
り短くするのである。
Preferably, reading and writing of data from and to memory array 1910 is performed by using write port 19.
44, 1946 to FIFO 1920, 1922 or FIFO 1936, 1938 to read port 19
48, 1950 at twice the rate. As a result, the write and read ports 1944, 194
6, 1948, 1950, the time required to transfer data through the memory array 1910,
Alternatively, the time required for transfer to the memory array 1910 (which is the bottleneck of any memory system) is made as short as possible.

【0490】データは、書き込みポート1944、19
46のいずれかを経由してメモリアレイ1910に書き
込まれる。書き込みポート1944、1946に接続さ
れた回路は、初期値ゼロのFIFO1920、1922
のみを認知する事になる。書き込みポート1944、1
946を通してのデータ転送は、FIFO1920、1
922が一杯になるか、又はバーストが終了するまでス
ムーズに進んでいく。データが最初にFIFO192
0、1922に書き込まれると、制御部1932はDR
AMへのアクセスのための他のポートとの仲裁を行う。
アクセスが得られると、データは最高レートでFIFO
1920、1922から読み出され、メモリアレイ19
10に書き込まれる。DRAM1910へのバースト書
き込みサイクルは、FIFO1920、1922にプリ
セットされた数のデータワードが貯えられた場合、又は
書き込みポートからのバーストが終了した場合のみに開
始される。いずれの場合においても、DRAM1910
へのバーストは許可された時点から進み、FIFO19
20、1922が空になるか、又はより高いプライオリ
ティポートからのサイクル要求があるまで続く。いずれ
のイベントにおいてもデータは、FIFOが充満する
か、又は現在のバーストが終了し、新たなバーストが開
始するまで、書き込みポートからFIFO1920、1
922へ邪魔されなく続けて書き込まれる。後者の場
合、新しいバーストは、以前のバーストがFIFO19
20、1922を空にしてDRAM1910に書き込ま
れるまでは進行されない。前者の場合には、最初のワー
ドがFIFO1920、1922から読み出されてDR
AM1910に書き込まれるや否やデータ転送が再開さ
れる。FIFO1920、1922からのデータ転送が
最高レートであるため、書き込みポート1944、19
46がストールするのは、制御部1832が他のポート
からのサイクル要求で割り込みされた時のみ可能であ
る。書き込みポート1944、1946からFIFO1
920、1922へのデータ転送に対するいかなる割り
込みも、できるだけ最小に維持するのが望ましい。
Data is written to write ports 1944, 19
The data is written to the memory array 1910 via any one of 46. The circuits connected to the write ports 1944, 1946 are provided with FIFOs 1920, 1922 having an initial value of zero.
Only you will recognize. Write port 1944, 1
Data transfer through 946 is performed in FIFO 1920, 1
Proceed smoothly until 922 is full or the burst is over. The data is first FIFO 192
0, 1922, the control unit 1932
Arbitrate with other ports for access to the AM.
When access is available, data is FIFO at maximum rate
1920, 1922, and the memory array 19
Written to 10. A burst write cycle to DRAM 1910 starts only when a preset number of data words have been stored in FIFOs 1920 and 1922 or when the burst from the write port has ended. In either case, the DRAM 1910
Burst from the permitted point, and FIFO 19
Continue until 20, 1922 is empty or there is a cycle request from a higher priority port. In either event, data is transferred from the write ports to the FIFO 1920, 1 until the FIFO is full or the current burst ends and a new burst begins.
The data is continuously written to 922 without any interruption. In the latter case, the new burst is the same as the previous burst
The process does not proceed until the data 20 and 1922 are emptied and written into the DRAM 1910. In the former case, the first word is read from FIFO 1920,
As soon as the data is written to the AM 1910, the data transfer is resumed. Since data transfer from the FIFOs 1920 and 1922 is at the highest rate, the write ports 1944 and 1944
The stall 46 is possible only when the control unit 1832 is interrupted by a cycle request from another port. FIFO1 from write ports 1944, 1946
It is desirable to keep any interruptions to data transfers to 920, 1922 as minimal as possible.

【0491】読み出しポート1948、1950は逆の
順で動作する。読み出しポート1948、1950が読
み出し要求を出すと、即刻、DRAMサイクルが要求さ
れる。この要求に対する許可が得られるとメモリアレイ
1910が読まれ、対応するFIFO1936、193
8にデータが書き込まれる。最初のデータワードがFI
FO1936、1938に書き込まれるやいなや、読み
出しポート1948、1950による読み出しが可能に
なる。このように最初のデータワードを得るには初期遅
延が存在するが、その後の連続するデータワードの獲得
にはおそらくそれ以上の遅延は出て来ないのである。D
RAMの読み出しは、より高いプライオリティのDRA
M要求があるか、読み出しFIFO1936、1938
が一杯になった場合、或は読み出しポート1948、1
950がそれ以上データを要求しなくなったら終了す
る。一旦このようにして読み出しが終了すると、FIF
O1936、1938へプリセットされているデータワ
ードの数に余裕ができるまで再開されない。一旦読み出
しポートがサイクルを終了すると、FIFO1936、
1938に残っているいかなるデータも廃棄される。
The read ports 1948 and 1950 operate in the reverse order. As soon as the read ports 1948, 1950 issue a read request, a DRAM cycle is requested. When permission for this request is obtained, the memory array 1910 is read and the corresponding FIFOs 1936, 193 are read.
8 is written. FI is the first data word
As soon as the data is written to the FOs 1936 and 1938, the data can be read by the read ports 1948 and 1950. Thus, while there is an initial delay in obtaining the first data word, there is probably no further delay in obtaining subsequent data words. D
RAM read is a higher priority DRA
M request, read FIFO 1936, 1938
Is full or the read ports 1948, 1
If 950 no longer requests data, it ends. Once reading is completed in this way, the FIFO
The processing is not restarted until the number of data words preset in O1936 and 1938 is sufficient. Once the read port completes the cycle, FIFO 1936,
Any data remaining in 1938 is discarded.

【0492】常にDRAMコントロールが最小値を上回
るようにするため、プリセットされている数のデータワ
ードが全て転送されるまで(或は、対応するFIFO1
920、1922が空になるか、読み出しFIFO19
36、1938が一杯になるまで)バーストが割り込み
されないようにDRAMアクセスへの再仲裁は制限され
る。全てのアクセスポート1944、1946、194
8、1950はそれぞれに対応するバースト開始アドレ
スを持っており、これらはバーストの開始時にカウンタ
1942にラッチされている。このカウンタはポートに
対する取り引きのためのカレントアドレスを保持してお
り、例え転送が割り込みされても、いっでも正しいメモ
リアドレスで再開する事が可能である。現在アクティヴ
なDRAMサイクルのアドレスのみが多重化部1940
により選択され、行アドレスカウンタ1916と列アド
レスカウンタ1918に送られる。アドレスの低次Nビ
ットは列カウンタ1918に入力され、一方の上位アド
レスビットは行カウンタ1916へ入力される。多重化
部1914は、DRAMの行アドレスタイムの間には行
カウンタ1916からメモリアレイ1910へ行アドレ
スを出力し、DRAMの列アドレスタイムの間には列カ
ウンタ1918から列アドレスを送る。行アドレスカウ
ンタ1916と列アドレスカウンタ1918は、いかな
るバーストの開始時においてもメモリアレイDRAM1
910へロードされる。これは、ポートサイクルの開始
時と、割り込みされたバーストの継続時の両方に当ては
まる事実である。列アドレスカウンタ1918は、それ
ぞれのメモリへの転送が起きた後にインクリメントさ
れ、行アドレスカウンタ1916は列アドレスカウンタ
1918がゼロに変わるとインクリメントされる。後者
の場合にはバーストが終了され、新たな行アドレスで再
開されなければならない。
In order to ensure that the DRAM control always exceeds the minimum value, a preset number of data words must be transferred (or the corresponding FIFO1
920 and 1922 are empty or read FIFO 19
Re-arbitration for DRAM accesses is limited so that bursts are not interrupted (until 36, 1938 is full). All access ports 1944, 1946, 194
8, 1950 have corresponding burst start addresses, which are latched in counter 1942 at the start of the burst. This counter holds the current address for dealing with the port, so that even if the transfer is interrupted, it is possible to restart at least the correct memory address. Only the address of the currently active DRAM cycle is multiplexed by 1940.
And sent to the row address counter 1916 and the column address counter 1918. The lower N bits of the address are input to column counter 1918, while one upper address bit is input to row counter 1916. The multiplexing unit 1914 outputs a row address from the row counter 1916 to the memory array 1910 during the row address time of the DRAM, and sends a column address from the column counter 1918 during the column address time of the DRAM. Row address counter 1916 and column address counter 1918 indicate that memory array DRAM1
910. This is true both at the beginning of the port cycle and at the continuation of the interrupted burst. The column address counter 1918 is incremented after each memory transfer occurs, and the row address counter 1916 is incremented when the column address counter 1918 changes to zero. In the latter case, the burst is terminated and must be restarted with a new row address.

【0493】本実施例では、メモリアレイ1910は4
×8ビットバイトラインを含んでおり、ワード当たり3
2ビットを構成すると仮定している。更に、それぞれの
書き込みポート1944、1946に対応する4バイト
の書き込みイネーブル信号のセット1950、1952
があり、個別的にデータがメモリアレイ1910内のそ
れぞれの32ビットデータワードのそれぞれの8ビット
部分に書き込まれるようにする。メモリアレイ1910
に書き込まれるそれぞれのワード内のいかなるバイトに
データの書き込みに対するマスクを任意にかける事が可
能であるため、対応するFIFO1926、1928に
それぞれのデータワードと共に書き込みイネーブル情報
を貯えておく必要がある。これらのFIFO1926、
1928は書き込みFIFO1920、1922のコン
トロールに用いられるのと同じ信号でコントロールされ
るが、FIFO1920、1922へのデータの書き込
みに必要とされる32ビットの代わりに4ビットのみが
用いられる。同様に、多重化部1930は多重化部19
12と同じようにコントロールされる。選択された書き
込みイネーブルは、制御部1932へ入力され、制御部
はこれらの情報を用い、多重化部1912によりメモリ
アレイ1910へ入力される書き込みデータと同期して
メモリアレイ1910内のアドレスされたワードへの書
き込みを選択的に可能又は不可能にする。
In this embodiment, the memory array 1910 has 4
X 8 bit byte lines, 3 words per word
It is assumed that two bits are configured. Furthermore, a set of 4-byte write enable signals 1950, 1952 corresponding to the respective write ports 1944, 1946.
To individually write data to each 8-bit portion of each 32-bit data word in memory array 1910. Memory array 1910
Since it is possible to arbitrarily mask data writing to any byte in each word to be written to the corresponding FIFO, it is necessary to store write enable information in the corresponding FIFOs 1926 and 1928 together with each data word. These FIFOs 1926,
1928 is controlled by the same signals used to control the write FIFOs 1920 and 1922, but only four bits are used instead of the 32 bits required to write data to the FIFOs 1920 and 1922. Similarly, the multiplexing unit 1930
Controlled in the same way as 12. The selected write enable is input to the control unit 1932, and the control unit uses the information to synchronize the write data input to the memory array 1910 by the multiplexing unit 1912 with the addressed word in the memory array 1910. To selectively enable or disable writing to the file.

【0494】図146の構成は制御部1932の制御下
で動作する。図147は、図146において制御部19
32の動作の詳細を示す状態図である。パワーアップの
後とリセットの完了時に、状態器は強制的にIDLE1
00状態になり、この状態ですべてのDRAMコントロ
ール信号がインアクティブ(high)になり、多重化
部1914は行アドレスをDRAMアレイ1910へ送
る。リフレッシュまたはサイクル要求が検出されると、
RASDEL11962状態へ遷移される。次のクロッ
クエッジでサイクル要求とリフレッシュがなくなった
ら、状態器はIDLE1900状態に戻る。そうでない
と、DRAM tRP(RASプリチャージタイミング
制限)周期が満たされた時にRASON1966状態へ
遷移され、この時、行アドレスストローブ信号RASは
ローレベルになる。tRCD(RASからCASへの遅
延タイミング制限)が満たされた後、COL1968状
態へ遷移され、DRAMアレイ1910へ入力するため
の列アドレスを選択するように多重化部1914がスイ
ッチされる。次のクロックエッジでCASON1970
状態に遷移され、DRAM列アドレスストローブ(CA
S)信号がアクティブローになる。一旦、tCAS(C
ASアクティヴタイミング制限)が満たされたら、CA
SOFF1972状態へ遷移され、この状態でDRAM
列アドレスストローブ(CAS)は再びインアクティヴ
ハイになる。ここで、更なるデータワードが転送される
ことになっていると共に、より高いプライオリティのサ
イクル要求や、リフレッシュが差し迫ってないか、或は
再仲裁するには速すぎる場合、それから一旦tCP(C
ASプリチャージタイミング制限)周期が満たされたら
CASON1970状態へ復帰し、DRAM列アドレス
ストローブ(CAS)は再びアクティヴローになる。も
し更なるデータワードの転送がない、或は再仲裁が発生
し、より高いプライオリティのサイクル要求や、リフレ
ッシュが差し迫っている場合、tRAS(RASアクテ
ィヴタイミング制限)とtCP(CASプリチャージタ
イミング制限)が両方満たされたら、その代わりにRA
SOFF1974状態へ遷移される。この状態で、DR
AM行アドレスストローブ(RAS)信号はインアクテ
ィヴハイになる。次のクロックエッジで状態器はIDL
E1860状態に復帰し、次のサイクル開始を準備す
る。
The structure shown in FIG. 146 operates under the control of the control unit 1932. FIG. 147 is a block diagram of the control unit 19 shown in FIG.
32 is a state diagram showing details of the operation of FIG. After power-up and upon completion of reset, the state machine forces IDLE1
00 state, all the DRAM control signals become inactive (high) in this state, and the multiplexer 1914 sends the row address to the DRAM array 1910. When a refresh or cycle request is detected,
Transition is made to the RASDEL 11962 state. When there are no more cycle requests and refreshes at the next clock edge, the state machine returns to the IDLE 1900 state. Otherwise, transition to the RASON 1966 state occurs when the DRAM tRP (RAS precharge timing limit) cycle is satisfied, at which time the row address strobe signal RAS goes low. After tRCD (delay timing restriction from RAS to CAS) is satisfied, the state transits to the COL1968 state, and the multiplexing unit 1914 is switched so as to select a column address to be input to the DRAM array 1910. CASON 1970 at next clock edge
To the DRAM column address strobe (CA
S) The signal goes active low. Once, tCAS (C
If AS Active Timing Limit is met, CA
The state transits to the SOFF1972 state.
The column address strobe (CAS) goes inactive high again. Here, if more data words are to be transferred and if a higher priority cycle request or refresh is not imminent or too fast to re-arbitrate, then tCP (C
When the (AS precharge timing limitation) cycle is satisfied, the state returns to the CASON 1970 state, and the DRAM column address strobe (CAS) becomes active low again. If there is no further data word transfer or re-arbitration occurs and a higher priority cycle request or refresh is imminent, tRAS (RAS active timing limit) and tCP (CAS precharge timing limit) If both are met, RA instead
Transition is made to the SOFF 1974 state. In this state, DR
The AM row address strobe (RAS) signal goes inactive high. State machine IDL at next clock edge
It returns to the E1860 state and prepares for the start of the next cycle.

【0495】RASDEL2 1964状態でリフレッ
シュ要求が検出されると、一旦tRP(RASプリチャ
ージタイミング制限)が満たされたら、RCASON
1980状態に遷移される。この状態でDRAM列アド
レスストローブがアクティヴローになり、RASリフレ
ッシュサイクルの前にDRAM CASを開始する。次
のクロックエッジで遷移はRRASON 1978へ行
われ、DRAM行アドレスストローブ(RAS)はアク
ティヴローになる。tCAS(CASアクティヴタイミ
ング制限)が満たされると遷移はRCASOFF 19
76へ行われ、DRAM列アドレスストローブ(CA
S)はインアクティヴハイになる。一旦tRAS(RA
Sアクティヴタイミング制限)が満たされると遷移はR
ASOFF1974へ行われ、DRAM行アドレススト
ローブ(RAS)はインアクティヴハイになり、有効的
にリフレッシュサイクルを終了させる。状態器は通常の
DRAMサイクルのために上記のような振る舞いを継続
し、IDLE 1960状態へ遷移する。
When a refresh request is detected in the RASDEL2 1964 state, once tRP (RAS precharge timing restriction) is satisfied, RCASON
Transition is made to the 1980 state. In this state, the DRAM column address strobe becomes active low, and DRAM CAS starts before the RAS refresh cycle. At the next clock edge, a transition is made to RRASON 1978 and the DRAM row address strobe (RAS) goes active low. When tCAS (CAS active timing limit) is satisfied, the transition is RCASOFF 19
76, and the DRAM column address strobe (CA
S) becomes inactive high. Once tRAS (RA
If the S active timing limit is satisfied, the transition is R
ASOFF 1974, the DRAM row address strobe (RAS) goes inactive high, effectively ending the refresh cycle. The state machine continues to behave as described above for a normal DRAM cycle and transitions to the IDLE 1960 state.

【0496】図146のリフレッシュカウンタ1934
は単純にカウンタであり、15マイクロ秒当たりに一回
の固定レート、或は特殊DRAM業者の要求により定ま
ったレートでリフレッシュ要求信号を発生させる。リフ
レッシュ要求が発行されると、この要求は図147の状
態器により認知されるまで発行状態を続ける。このアク
ノレッジメントは、状態器がRCASON1980状態
に入った時に行われ、状態器がリフレッシュ要求の撤去
を検出するまでその状態を続ける。
The refresh counter 1934 shown in FIG.
Is a simple counter which generates a refresh request signal at a fixed rate of once per 15 microseconds or at a rate determined by the requirements of a special DRAM vendor. When a refresh request is issued, the request remains in the issued state until acknowledged by the state machine of FIG. This acknowledgment occurs when the state machine enters the RCASON 1980 state and remains there until the state machine detects withdrawal of the refresh request.

【0497】図148には、疑似コードフォームで図1
46の仲裁器1924の動作が示されている。ここで
は、4つのサイクル要求発行者の中でどれにメモリアレ
イ1910へのアクセスを許可するかを決める方法と、
アクセスへの公平さを保つためにサイクル要求者のプラ
イオリティを修正するメカニズムを記述している。これ
らのコードに用いられたシンボルは図149に説明され
ている。
FIG. 148 shows the pseudo code form of FIG.
The operation of 46 arbitrators 1924 is shown. Here, a method for determining which of the four cycle request issuers is permitted to access the memory array 1910,
Describes a mechanism that modifies the priority of a cycle requestor to maintain fairness to access. The symbols used for these codes are described in FIG.

【0498】それぞれの要求発行者は、その要求のプラ
イオリティを表す4ビットを持っている。上位の2ビッ
トは一般の構成レジスタに設定されている構成値により
全般的なプライオリティにプリセットされている。プラ
イオリティの下位2ビットは仲裁者24により更新され
る2ビットカウンタに収められている。仲裁の勝者を決
める際に、仲裁者1924は単にそれぞれの要求者の4
ビットの値を比較し、最高値の要求者にアクセスを許可
する。要求者にサイクルが許可されると、下位2ビット
のプライオリティカウンタの値はゼロになり、同一の上
位2ビットのプライオリティ値と勝者より低い下位2ビ
ットのプライオリティ値を持つ他の要求者の下位2ビッ
トのプライオリティカウントは全て1ずつインクリメン
トされる。この結果、今メモリアレイ1910へのアク
セスを許可された要求者は同一の上位2ビットプライオ
リティ値を持つ要求者の間で最も低いプライオリティに
なる。上位2ビットのプライオリティ値が勝者とは違っ
た値を持つ要求者の下位2ビットのプライオリティ値は
影響されない。プライオリティの上位2ビットの値は要
求者の全般的なプライオリティを決め、下位2ビットの
値は同一の上位プライオリティの要求者の間で公平な仲
裁スキームを実現している。このスキームを用いること
により、ハードウェアで結線された固定プライオリティ
(それぞれの要求者の上位2ビットがユニーク)から部
分的な入れ替えと、部分ハードウェア結線(全てではな
いが、一部の上位2ビットプライオリティが他のと異な
る)、厳密に公平な入れ替え(全ての上位2ビットのプ
ライオリティ値が同一)までのいろいろな仲裁スキーム
が実現できる。
Each request issuer has 4 bits that indicate the priority of the request. The upper two bits are preset to a general priority by a configuration value set in a general configuration register. The lower two bits of the priority are stored in a two-bit counter updated by the arbitrator 24. In determining the winner of the arbitration, the arbitrator 1924 will simply determine the 4
Compare bit values and grant access to requestor with highest value. When the requester is granted the cycle, the value of the lower 2 bits priority counter becomes zero, and the lower 2 bits of the other requesters having the same upper 2 bits priority value and the lower 2 bits priority value lower than the winner. All bit priority counts are incremented by one. As a result, the requester who is now permitted to access the memory array 1910 has the lowest priority among requesters having the same upper two-bit priority value. The priority value of the lower 2 bits of the requestor whose priority value of the upper 2 bits is different from the winner is not affected. The value of the upper two bits of the priority determines the overall priority of the requester, and the value of the lower two bits implements a fair arbitration scheme between requesters of the same higher priority. By using this scheme, it is possible to partially switch from a fixed priority connected by hardware (the upper 2 bits of each requester is unique) and to perform partial hardware connection (some but not all upper 2 bits). Various arbitration schemes can be realized, up to a strict fair exchange (priority is different from the others) (priority values of all upper 2 bits are the same).

【0499】図149は、それぞれの要求者に対するプ
ライオリティビットの構造とそのビットの利用法を示し
ている。ここでは、図148に用いられているシンボル
の意味も定義されている。上記の実施例で各種のFIF
O1920、1922、1938、それから1936は
幅32ビット、深さ32ワードである。この深さは効率
と消費される回路エリアの間の良い線での妥協を与えて
いる。しかし、深さの値は、パフォーマンスの変化と共
に特定のアプリケーションのニーズに合わせて変えられ
る。
FIG. 149 shows the structure of a priority bit for each requester and how to use the bit. Here, the meaning of the symbols used in FIG. 148 is also defined. Various FIFOs in the above embodiment
O1920, 1922, 1938, and 1936 are 32 bits wide and 32 words deep. This depth offers a good line compromise between efficiency and circuit area consumed. However, the depth value can be changed to suit the needs of a particular application as performance changes.

【0500】また、ここに示されている4ポート構成は
単に一つの実施例である。メモリアレイと読み出しまた
は書き込みポートのいずれかとの間に単一のFIFOバ
ッファを用意するだけでも効果は得られる。しかし、多
数の読み出しと書き込みポートを用いると最高のスピー
ド向上が得られることになる。 3.18.9 他モジュール 他モジュール239は、コプロセッサ224の動作、リ
セット同期、内部診断信号を必要に応じて外部ピンにま
わすことによるエラーと割り込み信号のマルチプレクシ
ング、CBusの内部と外部フォームとの間のインタフ
ェーシングや内部と一般Bus信号の一般/外部Cbu
s出力ピンへのマルチプレクシングなどのためのクロッ
クの発生と選択を行う。勿論他モジュール239の動作
は、用いられるASICテクノロジによるクロッキング
への要求と具現詳細により異なる。
The four-port configuration shown here is merely one embodiment. Providing only a single FIFO buffer between the memory array and either the read or write port can be effective. However, using a large number of read and write ports will provide the highest speed improvement. 3.18.9 Other Modules The other modules 239 operate the coprocessor 224, reset synchronization, multiplex error and interrupt signals by routing internal diagnostics signals to external pins as needed, and internal and external forms of the CBus. Interfacing and general / external Cbu of internal and general Bus signals
A clock for multiplexing to the s output pin is generated and selected. Of course, the operation of the other module 239 depends on the clocking requirements and implementation details of the ASIC technology used.

【0501】3.18.10 外部インターフェース制
御部 次に記述される本発明の特徴は、仮想メモリを共有する
コプロセッサを有するホストコンピュータで仮想メモリ
を提供するための方法と装置に関連している。本発明の
実施例は、コプロセッサがホストプロセッサと連動し仮
想メモリモードで動作可能になるよう模索している。
3.18.10 External Interface Control The following described aspects of the invention relate to a method and apparatus for providing virtual memory on a host computer having a coprocessor that shares virtual memory. . Embodiments of the present invention seek to enable a coprocessor to operate in a virtual memory mode in conjunction with a host processor.

【0502】特に、コプロセッサはホストプロセッサの
仮想メモリモードで動作することが可能である。コプロ
セッサには、ホストプロセッサの仮想メモリテーブルを
参照することができる仮想メモリ対物理メモリマッピン
グデバイスが含まれており、コプロセッサにより生成さ
れた命令アドレスをホストプロセッサのメモリ内の対応
する物理アドレスにマッピングする。むしろ、仮想メモ
リ対物理メモリマッピングデバイスは、グラフィックイ
メージを生成するためにコンピュータグラフィックコプ
ロセッサの一部を形成する。コプロセッサには、イメー
ジに種々の複雑な動作を行える多数のモジュールが含ま
れる。マッピングデバイスはコプロセッサとホストプロ
セッサとの間の相互作用に関与するのである。
In particular, the coprocessor can operate in the virtual memory mode of the host processor. The coprocessor includes a virtual memory-to-physical memory mapping device that can reference the host processor's virtual memory table, and translates the instruction address generated by the coprocessor into a corresponding physical address in the host processor's memory. Map. Rather, the virtual memory-to-physical memory mapping device forms part of a computer graphics coprocessor for generating graphic images. The coprocessor includes a number of modules that can perform various complex operations on the image. The mapping device is responsible for the interaction between the coprocessor and the host processor.

【0503】外部インターフェース制御部(EIC)2
38は、コプロセッサのPCI Busと一般Busへ
のインターフェースを提供する。更に外部インターフェ
ース制御部は、コプロセッサの内部仮想アドレス空間と
ホストシステムの物理アドレス空間との間をつなぐメモ
リマネジメントも提供する。外部インターフェース制御
部238は、入力インターフェーススイッチ252から
の要求に応じてホストメモリからデータを読み出す時
や、結果オーガナイザ249からの要求に応じてホスト
メモリにデータを書き込む時にPCI Bus上のマス
タとして作動する。PCI Busへのアクセスは、
“PCI Local Bus Specificat
ion,draft2.1”PCI special
interest group,1994の標準に従っ
て具現する。
External interface control unit (EIC) 2
38 provides an interface to the coprocessor PCI Bus and General Bus. Further, the external interface control unit also provides a memory management for connecting between the internal virtual address space of the coprocessor and the physical address space of the host system. The external interface control unit 238 operates as a master on the PCI bus when reading data from the host memory in response to a request from the input interface switch 252 or writing data to the host memory in response to a request from the result organizer 249. . Access to PCI Bus
“PCI Local Bus Specificat
ion, draft2.1 ”PCI special
It is embodied according to the standard of interest group, 1994.

【0504】外部インターフェース制御部238は、入
力インターフェーススイッチ252と結果オーガナイザ
249からのPCI取り引きのための同時要求を仲裁す
る。仲裁は構成可能であるのが望ましい。受け取った要
求のタイプには、一度にホストコプロセッサの1行以下
のキャッシュライン読み出しや、ホストの1行と2行の
間のキャッシュラインの読み出しと、2行又はそれ以上
のキャッシュラインの読み出しが含まれる。長さ無制限
の書き込みも外部インターフェース制御部238により
具現される。更に外部インターフェース制御部238
は、随意にデータのプリフェッチングも行う。
The external interface controller 238 arbitrates simultaneous requests for PCI transactions from the input interface switch 252 and the result organizer 249. Preferably, the arbitration is configurable. The type of request received may include reading one or less cache lines at a time by the host coprocessor, reading cache lines between one and two lines by the host, and reading two or more cache lines at a time. included. Infinite length writing is also implemented by the external interface control unit 238. Further, the external interface control unit 238
Also optionally prefetches data.

【0505】外部インターフェース制御部238の構築
には、全てのコプロセッサの内部モジュールのために仮
想メモリからホストの物理メモリへのアドレスマッピン
グを提供するメモリマネジメントが含まれる。このマッ
ピングは、アクセスを要求するモジュールに対し完全に
透明である。外部インターフェース制御部238がホス
トメモリへのアクセス要求を受け取ると、メモリマネジ
メントユニットを初期化して、その要求されたアドレス
を変換する。メモリマネジメントユニットがアドレスの
変換に失敗すると、場合によっては一つまたはそれ以上
のPCI Busの取り引きがアドレスの変換を完了す
る結果になる。これは、メモリマネジメントユニット自
身がPCI Busへ取り引きを要求するもう一つのソ
ースになれることを意味する。入力インターフェースス
イッチ252や結果オーガナイザ249から要求された
バーストが仮想ページの境界を越えると、外部インター
フェース制御部238は自動的にメモリマネジメントユ
ニットを作動し、全ての仮想アドレスのマッピングを正
しくやり直す。
The construction of the external interface controller 238 includes memory management that provides address mapping from virtual memory to host physical memory for all coprocessor internal modules. This mapping is completely transparent to the module requesting access. When the external interface control unit 238 receives a request to access the host memory, it initializes the memory management unit and translates the requested address. If the memory management unit fails to translate the address, in some cases one or more PCI Bus transactions may result in completing the address translation. This means that the memory management unit itself can be another source to request a transaction from the PCI Bus. When a burst requested from input interface switch 252 or result organizer 249 crosses a virtual page boundary, external interface control 238 automatically activates the memory management unit and remaps all virtual addresses correctly.

【0506】メモリマネジメントユニット(MMU)
(図150の915)は、16個のルックアサイドバッ
ファ(TLB)が基本になっている。TLBは仮想対物
理アドレスマッピングのキャッシュとして作動する。T
LBでは次のような作業が可能である。 1)比較:仮想アドレスが与えられると、TLBは対応
する物理アドレスかTLBミス信号(アドレスにマッチ
する有効なエントリがない場合)のいずれかを返す。
[0506] Memory management unit (MMU)
(915 in FIG. 150) is based on 16 lookaside buffers (TLBs). The TLB acts as a cache for virtual to physical address mapping. T
The following operations are possible in the LB. 1) Comparison: Given a virtual address, the TLB returns either the corresponding physical address or a TLB miss signal (if no valid entry matches the address).

【0507】2)置換:TLBには、既存エントリや有
効でないエントリの代わりに新しい仮想対物理マッピン
グが書き込まれる。 3)無効化:仮想アドレスが与えられた時、TLBのエ
ントリにマッチするとマッチしたエントリを無効化す
る。 4)全無効化:すべてのTLBエントリを無効化する。
2) Replacement: A new virtual-to-physical mapping is written to the TLB in place of an existing entry or an invalid entry. 3) Invalidation: When a virtual address is given and a TLB entry is matched, the matching entry is invalidated. 4) Invalidate All: Invalidates all TLB entries.

【0508】5)読み出し:TLBエントリの仮想や物
理アドレスは、4ビットアドレスベースで読み出され
る。テストのみに用いられる。 6)書き込み:TLBエントリの仮想や物理アドレス
は、4ビットアドレスベースで書き込まれる。 TLB内のエントリは図151に示すようなフォーマッ
トになっている。それぞれの有効なエントリは、20ビ
ットの仮想アドレス670、20ビットの物理アドレス
671、それから対応する物理ページが書き込み可能か
否かを表すフラグで構成される。エントリの許容ページ
サイズは4Kバイトである。MMU内のレジスタは、比
較に用いられた10ビットまでのアドレスにマスクをか
けるのに用いることができる。これによってTLBのペ
ージは4Mバイトまでサポートされる。マスクレジスタ
は1つのみであるため、すべてのTLBエントリは同サ
イズのページを参照する。
5) Read: The virtual and physical addresses of the TLB entry are read on a 4-bit address basis. Used for testing only. 6) Write: The virtual and physical addresses of the TLB entry are written on a 4-bit address basis. The entry in the TLB has a format as shown in FIG. Each valid entry is composed of a 20-bit virtual address 670, a 20-bit physical address 671, and a flag indicating whether the corresponding physical page is writable. The allowable page size of the entry is 4K bytes. A register in the MMU can be used to mask up to 10 bits of the address used for the comparison. This supports up to 4 Mbytes of TLB pages. Since there is only one mask register, all TLB entries refer to pages of the same size.

【0509】TLBには、“Least−Recent
ly Used”(LRU)置換アルゴリズムが用いら
れている。新しいエントリは最も長い時間が経過したエ
ントリに上書きされる。なぜなら、それは最後に書き込
まれたか、或は比較作業で一致したものだからである。
これは無効なエントリがない場合のみに適用される。無
効なエントリがある場合には、有効なエントリに上書き
する前に無効なエントリに書き込まれる。
[0509] The TLB contains "Least-Recent".
A ly Used "(LRU) replacement algorithm is used. The new entry overwrites the oldest entry since it was last written or matched in a comparison operation.
This only applies if there are no invalid entries. If there is an invalid entry, it is written to the invalid entry before overwriting the valid entry.

【0510】図152はTLB比較操作の流れを示す。
受け取られた仮想アドレス880は881〜883の3
つの部分に分けられる。下位12ビット881は常にペ
ージ内のオフセットの部分であるため、対応する物理ア
ドレスビット885へダイレクトに送られる。次の10
ビット882は、マスクビットにより設定された通り、
ページサイズによってオフセットの部分か、ページ番号
の部分かのいずれかである。マスクレジスタ887内の
ゼロの値は、ビットがページオフセットの部分であるた
めTLB比較に用いてはいけないということを示してい
る。10アドレスビットは10マスクビットとロジカル
に“ANDED”(論理積)され、TLBルックアップ
のために下位10ビットの仮想ページ番号889を与え
る。仮想アドレスの上位10ビット883は、仮想ペー
ジ番号889の上位10ビットとしてダイレクトに用い
られる。
FIG. 152 shows the flow of the TLB comparison operation.
The received virtual address 880 is 3 of 881 to 883.
Divided into two parts. The lower 12 bits 881 are always sent directly to the corresponding physical address bits 885 because they are always part of the offset in the page. Next 10
Bit 882, as set by the mask bit,
Either the offset part or the page number part depending on the page size. A value of zero in the mask register 887 indicates that the bit is part of the page offset and should not be used for TLB comparison. The 10 address bits are logically "ANDED" with the 10 mask bits to provide the lower 10 bits of the virtual page number 889 for TLB lookup. The upper 10 bits 883 of the virtual address are used directly as the upper 10 bits of the virtual page number 889.

【0511】このように生成された20ビットの仮想ペ
ージ番号はTLBに送られる。これがエントリの1つと
一致すると、TLBは対応する物理ページ番号872と
一致した位置の番号を返す。物理アドレス873は、マ
スクレジスタ887を再び用いて物理ページ番号から生
成される。物理ページ番号872の上位10ビットは物
理アドレス873の上位10ビットとしてダイレクトに
用いられる。物理アドレス872の次の10ビットは、
物理ページ番号(対応するマスクビットが1の場合)か
仮想アドレス(マスクビットが0の場合)かのいずれか
から875に選択される。物理アドレスの下位12ビッ
ト885は仮想アドレスからダイレクトに与えられる。
[0511] The 20-bit virtual page number generated in this manner is sent to the TLB. If this matches one of the entries, the TLB returns the number of the location that matched the corresponding physical page number 872. The physical address 873 is generated from the physical page number using the mask register 887 again. The upper 10 bits of the physical page number 872 are directly used as the upper 10 bits of the physical address 873. The next 10 bits of the physical address 872 are
875 is selected from either the physical page number (when the corresponding mask bit is 1) or the virtual address (when the mask bit is 0). The lower 12 bits 885 of the physical address are directly provided from the virtual address.

【0512】最後に、マッチに従いLRUバッファ87
6が更新され、マッチされたアドレスの使用を表す。T
LBミスは、入力インターフェーススイッチ252や結
果オーガナイザ249がTLB872に存在しない仮想
アドレスへのアクセスを要求した時に発生する。この場
合、MMUは要求されたアクセスの処理を進める前に、
ホストメモリ203のページテーブルから要求された仮
想対物理変換をフェッチし、それをTLBに書き込まな
ければならない。
Finally, according to the match, the LRU buffer 87
6 is updated to indicate use of the matched address. T
The LB miss occurs when the input interface switch 252 or the result organizer 249 requests access to a virtual address that does not exist in the TLB 872. In this case, before the MMU proceeds with the requested access,
The requested virtual-to-physical translation must be fetched from the page table in host memory 203 and written to the TLB.

【0513】ページテーブルはホストメインメモリのハ
ッシュテーブルである。それぞれのページテーブルエン
トリは、図153に示すようなフォーマットの2つの3
2ビットワードで構成されている。2番目のワードは物
理アドレスのための上位20ビットを構成し、下位12
ビットは予約されている。対応する仮想アドレスの上位
20ビットは最初のワードに与えられている。下位12
ビットには有効(V)ビットと書き込み可能(W)また
は“リードオンリ”ビットが含まれており、残りの10
ビットは予約されている。
The page table is a hash table of the host main memory. Each page table entry has two 3D entries in the format shown in FIG.
It consists of two bit words. The second word comprises the upper 20 bits for the physical address and the lower 12
Bits are reserved. The upper 20 bits of the corresponding virtual address are given in the first word. Lower 12
The bits include a valid (V) bit and a writable (W) or "read only" bit, with the remaining 10 bits.
Bits are reserved.

【0514】ページテーブルエントリには、基本的にT
LBエントリと同じ情報が含まれている。ページテーブ
ルの余分のフラグは予約されている。ページテーブル自
身は、通常メインメモリ203内の複数のページにわた
って分散され、一般に仮想空間と隣接していて物理空間
とは接していない。MMUには、ソフトウェアにより設
定された16のページテーブルポインタのセットが含ま
れており、それぞれはページテーブルの部分を含んでい
る4Kバイトメモリ領域への20ビットポインタであ
る。これは、コプロセッサ224が64Kバイトサイズ
のページテーブルをサポートし、8Kページマッピング
を有することを意味している。4Kバイトページサイズ
のシステムにおいて、これは最大32Mバイトのマッピ
ングされた仮想アドレス空間を意味する。むしろページ
テーブルポインタは、TLBに用いられるページサイズ
とは関係なく、常に4Kバイトのメモリ領域を参照する
ことである。
The page table entry basically contains T
It contains the same information as the LB entry. Extra flags in the page table are reserved. The page table itself is usually distributed over a plurality of pages in the main memory 203, and is generally adjacent to the virtual space and not in contact with the physical space. The MMU contains a set of 16 page table pointers set by software, each being a 20-bit pointer to a 4K byte memory area containing the page table portion. This means that the coprocessor 224 supports a page table of 64K byte size and has 8K page mapping. In a 4K byte page size system, this means up to 32 Mbytes of mapped virtual address space. Rather, the page table pointer always refers to a 4K byte memory area, regardless of the page size used for the TLB.

【0515】TLBミス後のMMU操作は、次のように
図154の690に示している。 1.TLBに存在しない仮想ページ番号891上のハッ
シュファンクション892を実行し、ページテーブルへ
13ビットのインデックスを生成する。 2.ページテーブルインデックス894、896の上位
4ビット894を用い、ページテーブルポインタ895
を選択する。
An MMU operation after a TLB miss is shown in FIG. 154 at 690 as follows. 1. The hash function 892 on the virtual page number 891 that does not exist in the TLB is executed to generate a 13-bit index in the page table. 2. Using the upper 4 bits 894 of the page table indexes 894 and 896, the page table pointer 895 is used.
Select

【0516】3.20ビットのページテーブルポインタ
895とページテーブルインデックス896の下位9ビ
ットを連結し、最下位3ビットに000を設定すること
により(ページテーブルエントリはホストメモリ内の8
バイトを占めるため)、要求されたページテーブルエン
トリの物理アドレス890を生成する。 4.ページテーブルエントリの物理アドレス898から
始め、ホストメモリから8バイトを読み出す。
[0516] 3. The 20-bit page table pointer 895 and the lower 9 bits of the page table index 896 are concatenated, and the least significant 3 bits are set to 000.
Generates the physical address 890 of the requested page table entry (to occupy bytes). 4. Starting from the physical address 898 of the page table entry, 8 bytes are read from the host memory.

【0517】5.8バイトのページテーブルエントリ9
00がPCIバスへ返されたとき、VALIDビットが
1にセットされていれば仮想ページ番号はTLBミスを
起こした元の仮想ページ番号と比較される。両者がマッ
チしないと、上記のプロセスを用いて次のページテーブ
ルエントリがフェッチされる(物理アドレスは8バイト
ずつインクリメントされる)。この過程はマッチする仮
想ページ番号のページテーブルエントリが見つかるま
で、或は無効なページテーブルエントリに遭うまで続け
られる。無効なページテーブルエントリに遭った場合に
は、ページフォールトエラーが出され処理は中止する。
5.8-byte page table entry 9
When the 00 is returned to the PCI bus, if the VALID bit is set to 1, the virtual page number is compared to the original virtual page number that caused the TLB miss. If they do not match, the next page table entry is fetched using the above process (the physical address is incremented by 8 bytes). This process continues until a page table entry with a matching virtual page number is found or an invalid page table entry is encountered. If an invalid page table entry is encountered, a page fault error is issued and processing stops.

【0518】6.マッチする仮想ページ番号を有するペ
ージテーブルエントリが見つかると、置換操作によって
完全なエントリがTLBに書き込まれる。新しいエント
リはLRUバッファ876によってポイントされたTL
B位置に置かれる。それからTLBの比較作業が再び行
われ、順調に続いて、元の要求されたホストメモリアク
セスの処理が可能になる。新しいエントリがTLBに書
き込まれると、LRUバッファ876は更新される。
[0518] 6. When a page table entry with a matching virtual page number is found, the replace operation writes the complete entry to the TLB. The new entry is the TL pointed to by the LRU buffer 876
Placed in position B. Then, the TLB comparison operation is performed again, and the processing of the original requested host memory access can be performed smoothly. As new entries are written to the TLB, the LRU buffer 876 is updated.

【0519】EIC238に具現されているハッシュフ
ァンクション892は、20ビットの仮想ページ番号
(vpn)に対し、次の方程式を用いる。 index=((vpn>>S1)XOR(vpn>>
S2)XOR(vpn>>S3))&Ox1fff; ここで、S1、S2、S3は独立的にプログラム可能な
シフト量(正、又は負)で、それぞれ4つの値を取るこ
とができる。
The hash function 892 implemented in the EIC 238 uses the following equation for a 20-bit virtual page number (vpn). index = ((vpn >> S1) XOR (vpn >>
S2) XOR (vpn >> S3)) &Ox1ffff; Here, S1, S2, and S3 are independently programmable shift amounts (positive or negative) and can take four values.

【0520】ページテーブルの線形探索が4Kバイトの
境界を越えると、MMUは自動的に次のページテーブル
ポインタを選択し、正しい物理メモリ位置で探索を継続
する。この作業には、ページテーブルの最後から最初へ
のラッピングが含まれる。ぺージテーブルは、探索が常
に終了されるように常に少なくとも1つの無効(nul
l)エントリを含んでいる。
When the linear search of the page table crosses the 4K byte boundary, the MMU automatically selects the next page table pointer and continues the search at the correct physical memory location. This involves wrapping the page table from the end to the beginning. The page table always has at least one invalid (null) so that the search is always terminated.
l) Contains an entry.

【0521】ソフトウェアがホストメモリ内のページを
置換するたびに、新しい仮想ページのためのページテー
ブルエントリを追加し、置換されたページに対応するエ
ントリを削除しなければならない。また、古いページテ
ーブルエントリはコプロセッサ224のTLBにキャッ
シュされてはいけない。これは、MMU内のTLB無効
化サイクルを果たすことにより行われる。
Each time software replaces a page in host memory, a page table entry for the new virtual page must be added and the entry corresponding to the replaced page must be deleted. Also, old page table entries must not be cached in the TLB of coprocessor 224. This is done by performing a TLB invalidation cycle in the MMU.

【0522】無効化サイクルは無効化作業を引き起こす
ビットと共に無効化される仮想ページ番号をし、MMU
へのレジスタ書き込みを通じて果たされる。このレジス
タ書き込みは、ソフトウェアによって直接、或は命令デ
コーダにより割り込みされた命令を通じて果たされる。
無効化作業は、提供された仮想ページ番号のためにTL
B上で果たされる。TLBエントリにマッチすると、エ
ントリは無効にマークされ、無効化された位置が次の置
換作業で用いられるようにLRUテーブルが更新され
る。
The invalidation cycle gives the virtual page number to be invalidated with the bit causing the invalidation work, and the MMU
This is accomplished through a register write to. This register write is performed directly by software or through an instruction interrupted by the instruction decoder.
Invalidation work is performed by TL for the provided virtual page number.
Performed on B. When a TLB entry matches, the entry is marked invalid and the LRU table is updated so that the invalidated location is used for the next replacement operation.

【0523】未決定の無効化作業はいかなる未決定のT
LB比較より高いプライオリティを持っている。無効化
作業が完了すると、MMUは無効化ビットをクリアし、
次の無効化処理が可能であることを知らせる。MMUが
要求された仮想アドレスのための有効なページテーブル
エントリを見つけられない場合、これをページフォルト
という。MMUはエラー信号を出し、フォルトを起こし
た仮想アドレスをソフトウェアがアクセス可能なレジス
タに保管する。MMUはアイドル状態に入り、エラーが
解決されるまで待機する。割り込みがクリアされると、
MMUは次の要求された取り引きから再び作業を始め
る。
[0523] The pending revocation work is any pending T
Has a higher priority than LB comparison. When the invalidation operation is completed, the MMU clears the invalidation bit,
Notifies that the next invalidation process is possible. If the MMU cannot find a valid page table entry for the requested virtual address, it is called a page fault. The MMU issues an error signal and stores the faulted virtual address in a software accessible register. The MMU enters an idle state and waits until the error is resolved. When the interrupt is cleared,
The MMU starts again with the next requested transaction.

【0524】読み出し専用とマークされた(書き込み可
能とマークされてない)ページへの書き込み作業がなさ
れた時にもページフォルトが出される。外部インターフ
ェース制御部(EIC)238は、一般バスへアドレス
されている入力インターフェーススイッチ252と結果
オーガナイザ249からの取り引き要求に応じられる。
それぞれの要求モジュールは現在の要求が一般バス用か
あるいはPCIバス用かを表す。入力インターフェース
スイッチ252と結果オーガナイザ249とのコミュニ
ケーションに共通バスを用いるのとは異なり、一般バス
要求へのEIC操作はPCI要求への操作と完全に分か
れている。更にEIC238は、一般バス空間にダイレ
クトにアドレスするCbus取り引きタイプにも応じら
れる。
A page fault is also issued when a write operation is performed on a page marked as read-only (not marked as writable). The external interface controller (EIC) 238 responds to transaction requests from the input interface switch 252 and result organizer 249 addressed to the general bus.
Each request module indicates whether the current request is for a general bus or a PCI bus. Unlike using a common bus for communication between the input interface switch 252 and the result organizer 249, EIC operations for general bus requests are completely separate from operations for PCI requests. Further, the EIC 238 is also compatible with a Cbus transaction type that directly addresses the general bus space.

【0525】図150は、外部インターフェース制御部
238の構造を示している。IBus要求は多重化部9
10を通り、多重化部910は要求の目的地をもとにし
て(PCIまたは一般バス)適当な内部モジュールへ要
求を導く。一般バスへの要求は、RBusとCBusも
持っている一般バス制御部911へ送られる。RBus
上の一般バスとPCIバス要求は異なるコントロール信
号を用いるため、このバスには多重化部が必要とされな
い。
FIG. 150 shows the structure of the external interface control section 238. The IBus request is sent to the multiplexing unit 9
Through 10, multiplexor 910 routes the request to the appropriate internal module (PCI or general bus) based on the destination of the request. The request for the general bus is sent to the general bus control unit 911 which also has the RBus and the CBus. RBus
Since the above general bus and PCI bus requests use different control signals, a multiplexing unit is not required for this bus.

【0526】PCIバスへ導かれたIBus要求はIB
usドライバ(IBD)912によって扱われる。同様
に、PCIへのRBus要求はRBusレシーバ(RB
R)914によって処理される。IBD912とRBR
914は仮想アドレスを、物理アドレスを返すメモリマ
ネジメントユニット(MMU)915に送る。IBD、
RBR、それからMMUは、それぞれPCIトランザク
ションを要求できて、これらはPCIマスタモード制御
部(PMC)917によって生成され、コントロールさ
れる。IBDとMMUはPCI読み出しのみを要求し、
RBRはPCI書き込みのみを要求する。
The IBus request led to the PCI bus is IB
us driver (IBD) 912. Similarly, the RBus request to the PCI is sent to the RBus receiver (RB
R) 914. IBD912 and RBR
914 sends the virtual address to a memory management unit (MMU) 915 that returns a physical address. IBD,
The RBR and then the MMU can each request PCI transactions, which are generated and controlled by a PCI Master Mode Controller (PMC) 917. IBD and MMU require only PCI read,
RBR requires only PCI writes.

【0527】別個のPCIターゲットモード制御部(P
TC)918は、ターゲットとしてコプロセッサへアド
レスされた全てのPCIトランザクションを処理する。
これはCBusマスタモード信号を命令制御部へ送り、
すべての他モジュールへのアクセスを可能にする。PT
Cは、返されたCBusデータをPMC経由でPCIバ
スへ送るため、PCIデータバスピンのコントロールは
単一のソースから出される。
A separate PCI target mode control unit (P
TC) 918 processes all PCI transactions addressed to the coprocessor as targets.
This sends a CBus master mode signal to the command control,
Allow access to all other modules. PT
C sends the returned CBus data to the PCI bus via the PMC, so that control of the PCI data bus pins comes from a single source.

【0528】EICレジスタとモジュールメモリへアド
レスされたCBusトランザクションは標準CBusイ
ンターフェース7によって扱われる。全てのサブモジュ
ールはコントロールレジスタからビットをもらい、ステ
ータスレジスタにビットを返す。これらは標準CBus
インターフェース内部に位置している。PCIバストラ
ンザクションのためのパリティ生成とチェックは、PM
CとPTCのコントロール下で作動するパリティ生成と
チェック(PGC)モジュール921によって処理され
る。生成されたパリティは、パリティエラー信号と同様
にPCIバスへ送られる。パリティチェックの結果は、
エラーレポートのためにPTCのコンフィギュレーショ
ンレジスタにも送られる。
The CBus transactions addressed to the EIC registers and module memory are handled by the standard CBus interface 7. All submodules receive bits from the control register and return bits to the status register. These are standard CBus
Located inside the interface. Parity generation and checking for PCI bus transactions
Parity generation and check (PGC) module 921 which operates under the control of C and PTC. The generated parity is sent to the PCI bus similarly to the parity error signal. The result of the parity check is
It is also sent to the configuration register of the PTC for error reporting.

【0529】図155は、図150のIBusドライバ
912の構造を示している。受け入れたIBusアドレ
スとコントロール信号はサイクルの始点でラッチされる
930。オアゲート931はサイクルの始まりを検出
し、コントロールロジック932に開始信号を発生す
る。仮想ページ番号を形成するラッチ930の上位アド
レスビットはカウンタ935にロードされる。仮想ペー
ジ番号は、936にラッチされた物理ページ番号を返す
MMU915(図150)へ送られる。
FIG. 155 shows the structure of the IBus driver 912 of FIG. The accepted IBus address and control signals are latched 930 at the beginning of the cycle. OR gate 931 detects the beginning of a cycle and generates a start signal to control logic 932. The upper address bits of latch 930 forming the virtual page number are loaded into counter 935. The virtual page number is sent to MMU 915 (FIG. 150) which returns the physical page number latched in 936.

【0530】物理ページ番号と下位仮想アドレスビット
は、マスク937によって再結合され、PMC717
(図102)へのPCI要求のためのアドレス938を
形成する。また、サイクルのためのバーストカウントも
カウンタ939にロードされる。プリフェッチ動作は異
なるカウンタ941とアドレスラッチと比較回路943
を用いる。PMCから返されたデータは、データがプリ
フェッチの一部か否かを表すマーカと共にFIFO94
4にロードされる。データがFIFO944の前の部分
で使用可能になってくると、ラッチ945、946経由
で読み出し、ロジックによりクロックアウトされる。読
み出しロジック946はIBusアクノレッジメント信
号も生成する。
The physical page number and the lower virtual address bit are recombined by the mask 937, and the PMC 717
Form address 938 for a PCI request to (FIG. 102). The burst count for the cycle is also loaded into counter 939. The prefetch operation is different from that of the counter 941, the address latch, and the comparison circuit 943.
Is used. The data returned from the PMC includes a FIFO 94 with a marker indicating whether the data is part of a prefetch.
4 is loaded. As data becomes available in the portion prior to FIFO 944, it is read through latches 945, 946 and clocked out by logic. Read logic 946 also generates an IBus acknowledgment signal.

【0531】中央コントロールブロック932は、状態
器を含め、全てのアドレスとデータ要素の順次処理、そ
れからPMCへのインターフェースをコントロールす
る。仮想ページ番号カウンタ935は、IBusアドレ
スからのページ番号ビットで、IBusトランザクショ
ンの開始と共にロードされる。この20ビットカウンタ
の上位10ビットは常に受け入れるアドレスからくる。
下位10ビットに対しては、それぞれのビットは対応す
るマスクビット937が1にセットされていれば受け入
れるアドレスからロードされ、そうでないと、カウンタ
ビットが1にセットされる。20ビットの値はMMUイ
ンターフェースへ送られる。
A central control block 932 controls the sequential processing of all address and data elements, including the state machine, and the interface to the PMC. The virtual page number counter 935 is the page number bit from the IBus address and is loaded at the start of the IBus transaction. The upper 10 bits of this 20-bit counter always come from the accepted address.
For the lower 10 bits, each bit is loaded from the accepting address if the corresponding mask bit 937 is set to 1, otherwise the counter bit is set to 1. The 20-bit value is sent to the MMU interface.

【0532】通常の動作で、仮想ページ番号は初期アド
レス変換の後で用いられない。しかし、IBDがバース
トのページ境界越えを検出した場合には、仮想ページカ
ウンタがインクリメントされ、もう1つの変換が行われ
る。カウンタがロードされた時仮想ページ番号の一部で
ない下位ビットが1にセットされているため、20ビッ
トの値への単純インクリメントは実際のページ番号フィ
ールドのインクリメントをもたらす。インクリメントさ
れた後、次のインクリメントのためにカウンタをセット
アップするために、マスクビット937が再び用いられ
る。
In normal operation, virtual page numbers are not used after initial address translation. However, if the IBD detects that the burst crosses a page boundary, the virtual page counter is incremented and another conversion is performed. A simple increment to a 20-bit value results in an increment of the actual page number field because the low order bit that is not part of the virtual page number is set to one when the counter is loaded. After being incremented, mask bit 937 is used again to set up the counter for the next increment.

【0533】物理アドレスは、変換後、MMUが有効な
物理ページ番号を返すたびにラッチされる936。マス
クビットは、返された物理ページ番号と元の仮想アドレ
スビットとを正しく結合するために用いられる。物理ア
ドレスカウンタ938は物理アドレスラッチ936から
ロードされる。これはPMCからワードが返されるたび
にインクリメントされる。インクリメントされるたびに
カウンタはモニタされ、トランザクションがページ境界
を越えようとしているか否かを判断する。マスクビット
は、カウンタのどのビットが比較に用いられるかを判断
するのに使用される。カウンタがページ内に残っている
ワードの数が2つ以下であることを検出すると、コント
ロールロジック932に信号を出し、2つのデータ転送
後現在のPCI要求を終了し、必要に応じて新たなアド
レス変換を要求する。カウンタは新しいアドレス変換後
に再びロードされ、PCI要求が再開する。
After conversion, the physical address is latched 936 each time the MMU returns a valid physical page number. The mask bits are used to correctly combine the returned physical page number with the original virtual address bits. The physical address counter 938 is loaded from the physical address latch 936. It is incremented each time a word is returned from the PMC. Each time the counter is incremented, the counter is monitored to determine if the transaction is about to cross a page boundary. The mask bits are used to determine which bits of the counter are used for the comparison. When the counter detects that the number of words remaining in the page is less than two, it signals the control logic 932 to terminate the current PCI request after two data transfers and, if necessary, to add a new address. Request a conversion. The counter is reloaded after the new address translation and the PCI request resumes.

【0534】バーストカウンタ939は、トランザクシ
ョンの始点でIBusバースト値と共にロードされる6
ビットのダウンカウンタである。これはPMCからワー
ドが返されるたびにデクリメントされる。カウンタの値
が2つ以下になると、コントロールロジック932へ信
号を出し、これで2つのデータ転送後、PCIトランザ
クションを終了することができる(プリフェッチングが
可能でない限り)。
The burst counter 939 is loaded with the IBus burst value at the beginning of the transaction.
It is a bit down counter. It is decremented each time a word is returned from the PMC. When the value of the counter falls below two, a signal is sent to the control logic 932, which can terminate the PCI transaction after two data transfers (unless prefetching is possible).

【0535】プリフェッチアドレスレジスタ943は、
いかなるプリフェッチの最初のワードの物理アドレスと
共にロードされる。続くIBusトランザクションが開
始し、それからプリフェッチカウンタが少なくとも1つ
のワードが巧くプリフェッチされたことを示したら、ト
ランザクションの最初の物理アドレスがプリフェッチア
ドレスの値と比較される。両者がマッチすると、プリフ
ェッチデータはIBus引取りを満たすのに用いられ、
最後にプリフェッチされたワードの後のアドレスでPC
Iトランザクション要求が開始する。
[0535] The prefetch address register 943 is
Loaded with the physical address of the first word of any prefetch. The subsequent IBus transaction begins, and if the prefetch counter indicates that at least one word was successfully prefetched, the first physical address of the transaction is compared to the value of the prefetch address. If they match, the prefetch data is used to satisfy IBus pickup,
PC at address after last prefetched word
An I transaction request starts.

【0536】プリフェッチカウンタ941は4ビットの
カウンタで、プリフェッチ動作中にPMCによってワー
ドが返されるたびに最大入力FIFOの深さと同じカウ
ントまでインクリメントされる。続くIBusトランザ
クションがプリフェッチアドレスとマッチすると、プリ
フェッチカウントがアドレスカウンタに足され、それか
らバーストカウンタから引かれ、PCI要求が要求され
る位置で開始できるようになる。代わりに、IBusト
ランザクションがプリフェッチされたデータの一部だけ
を必要とすると、要求されたバーストの長さはプリフェ
ッチカウントから引かれ、それからラッチされたプリフ
ェッチアドレスに足され、残りのプリフェッチデータは
更なる要求を満たすために保留される。
The prefetch counter 941 is a 4-bit counter, and is incremented each time a word is returned by the PMC during a prefetch operation to the same count as the maximum input FIFO depth. When the subsequent IBus transaction matches the prefetch address, the prefetch count is added to the address counter and then subtracted from the burst counter, allowing the PCI request to start at the required location. Alternatively, if the IBus transaction requires only a portion of the prefetched data, the length of the requested burst is subtracted from the prefetch count, then added to the latched prefetch address, and the remaining prefetch data is further processed. Pending to fulfill request.

【0537】データFIFO944は、8ワード×33
ビットの非同期フォールスルーFIFOである。PMC
からのデータは、データがプリフェッチの一部であるか
否かを表すビットと共にFIFOに書きこまれる。FI
FOの先端からのデータは、使用可能になるや否やFI
FOから読み出されIBusへ送られる。データ読み出
し信号を生成するロジックはclkと同期して動作し、
IBusアクノレッジメント出力を発生する。トランザ
クションがプリフェッチされたデータを用いて満たされ
る場合に、コントロールロジックからの信号は、FIF
Oから読み出すプリフェッチされたデータの数の情報を
を読み出しロジックに与える。
[0537] The data FIFO 944 is 8 words x 33
Bit asynchronous fall-through FIFO. PMC
Is written to the FIFO with a bit indicating whether the data is part of a prefetch. FI
Data from the top of the FO will be available as soon as it becomes available.
It is read from the FO and sent to the IBus. The logic for generating the data read signal operates in synchronization with clk,
Generate an IBus acknowledgment output. If the transaction is filled with prefetched data, the signal from the control logic will be
Information about the number of prefetched data to be read from O is provided to the read logic.

【0538】図156は、図150のRBusレシーバ
914の構造を示している。コントロールは2つの状態
器950、951との間でスプリットされる。書き込み
状態器951はRBusへのインターフェースをコント
ロールする。入力アドレス752はRBusバーストの
始点でラッチされる。バーストのそれぞれのデータワー
ドは、バイトイネーブルと共にFIFO754に書き込
まれる。FIFO954が充満するようになると書き込
みロジック951によってr−レディが取り消され、オ
ーガナイザがそれ以上のワードを書き込まないようにす
る。
FIG. 156 shows the structure of the RBus receiver 914 shown in FIG. Control is split between the two state machines 950, 951. Write state machine 951 controls the interface to RBus. The input address 752 is latched at the start of the RBus burst. Each data word of the burst is written to FIFO 754 with a byte enable. When the FIFO 954 becomes full, the write logic 951 cancels the r-ready, preventing the organizer from writing any more words.

【0539】書き込みロジック951は、再同期開始信
号を介してメイン状態器950にRBusバーストの開
始を通知し、オーガナイザがそれ以上のワードを書き込
まないようにする。仮想ページ番号を形成する上位アド
レスビットはカウンタ957にロードされる。仮想ペー
ジ番号はMMUへ送られ、MMUからは物理ページ番号
958が返される。物理ページ番号と仮想アドレスの下
位ビットはマスクに従って再結合され、カウンタ960
にロードされ、PMCへのPCI要求のためのアドレス
を提供する。PCI要求のそれぞれのワードのためのデ
ータとバイトイネーブルは、すべてのPMCMインター
フェースコントロール信号も扱うメインコントロールロ
ジック950によってFIFO954からクロックアウ
トされる。メイン状態器は、ビジー信号を介してアクテ
ィヴであることを示し、それは書き込み状態器へ再同期
して返される。
[0539] The write logic 951 signals the start of the RBus burst to the main state machine 950 via the resynchronization start signal to prevent the organizer from writing any more words. The upper address bits forming the virtual page number are loaded into counter 957. The virtual page number is sent to the MMU, which returns a physical page number 958. The lower bits of the physical page number and the virtual address are recombined according to the mask, and the counter 960
And provides the address for the PCI request to the PMC. The data and byte enable for each word of the PCI request are clocked out of the FIFO 954 by the main control logic 950, which also handles all PMCM interface control signals. The main state machine indicates that it is active via a busy signal, which is resynchronized back to the write state machine.

【0540】書き込み状態器951は、r−ファイナル
を用いてRBusバーストの終了を検出する。するとF
IFO954へのデータのロードを中止し、メイン状態
器にRBusバーストが終了したことを通知する。メイ
ン状態器はデータFIFOが空になるまでPCI要求を
継続する。それからビジーを取り消し、書き込み状態器
が次のRBusバーストを開始するようにする。
[0540] The write state machine 951 detects the end of the RBus burst using the r-final. Then F
The loading of the data into the IFO 954 is stopped, and the main state machine is notified that the RBus burst has ended. The main state machine continues the PCI request until the data FIFO is empty. It then cancels the busy and causes the write state machine to start the next RBus burst.

【0541】図150に再び戻り、メモリマネジメント
ユニット915は、IBusドライバ(IBD)912
とRBusレシーバ(IBR)914のために仮想ペー
ジ番号から物理ページ番号への変換を担当する。図15
7に、メモリマネジメントユニットの詳細を示してい
る。16エントリの変換ルックアサイドバッファ(TL
B)970は、TLBアドレスロジック971から入力
データを受け取って出力を送り返す。状態器が含まれて
いるTLBコントロールロジック972は、RBRまた
はIBDからTLBアドレスロジックにバッファされて
いる要求を受け取る。要求を受け取ると、入力のソース
とTLBによって行われる作業を選択する。有効なTL
B作業は、比較、無効化、全無効化、書き込みと読み出
しである。TLB入力アドレスのソースとしては、IB
DとRBRインターフェース(比較作業用)、ページテ
ーブルエントリバッファ974(TLBミスサービス
用)またはTLBアドレスロジック内のレジスタなどが
ある。TLBは、TLBコントロールロジックにそれぞ
れの作業のステータスを返す。成功した比較作業からの
物理ページ番号はIBDとRBRへ送り返す。TLBは
最も最近アクセスされた(LRU)位置の記録を保有
し、これはTLBアドレスロジックにとっては書き込み
作業用の位置として用いるのに有用である。
Referring back to FIG. 150, the memory management unit 915 includes an IBus driver (IBD) 912.
And an RBus receiver (IBR) 914 for converting a virtual page number to a physical page number. FIG.
FIG. 7 shows details of the memory management unit. 16-Entry Translation Lookaside Buffer (TL
B) 970 receives input data from TLB address logic 971 and sends back output. TLB control logic 972, which includes a state machine, receives requests buffered in TLB address logic from RBR or IBD. Upon receiving the request, it selects the source of the input and the work to be performed by the TLB. Valid TL
The B operation is comparison, invalidation, all invalidation, writing and reading. The source of the TLB input address is IB
D and RBR interface (for comparison work), page table entry buffer 974 (for TLB miss service) or register in TLB address logic. The TLB returns the status of each task to the TLB control logic. The physical page number from the successful comparison operation is sent back to the IBD and RBR. The TLB keeps a record of the most recently accessed (LRU) location, which is useful for the TLB address logic to use as a location for write operations.

【0542】比較作業が失敗した場合、TLBコントロ
ールロジック972はページテーブルアクセスコントロ
ールロジック976にPCI要求を開始するよう信号を
出す。ページテーブルアドレスゼネレータ977は、内
部ページテーブルポインタレジスタを用い、仮想ページ
番号をもとにPCIアドレスを生成する。PCI要求か
ら返されたデータは、ページテーブルエントリバッファ
974へラッチされる。要求される仮想アドレスにマッ
チするページテーブルエントリが見つかると、物理ペー
ジ番号がTLBアドレスロジック977へ送られ、その
後ページテーブルアクセスコントロールロジック976
はページテーブルアクセスが完了したことを通知する。
それからTLBコントロールロジック972は、TLB
に新たなエントリを書き込み、比較作業を再び開始す
る。
If the comparison operation fails, the TLB control logic 972 signals the page table access control logic 976 to initiate a PCI request. The page table address generator 977 uses the internal page table pointer register to generate a PCI address based on the virtual page number. Data returned from the PCI request is latched into page table entry buffer 974. If a page table entry that matches the required virtual address is found, the physical page number is sent to TLB address logic 977 and then page table access control logic 976
Notifies that page table access has been completed.
Then the TLB control logic 972
And a comparison operation is started again.

【0543】SCIへのレジスタ信号とSCIからのレ
ジスタ信号は両方の方向に再同期される980。信号は
全てのサブモジュールへ行き来する。モジュールメモリ
インターフェース981は、標準CBusインターフェ
ースからTLBとページテーブルポインタメモリ要素へ
のアクセスをデコードする。TLBアクセスは読み出し
専用で、データを得るためにTLBコントロールロジッ
クを用いる。ページテーブルポインタは読み出し・書き
込み両方可能で、モジュールメモリインターフェースに
よってダイレクトにアクセスされる。これらのパスには
同期回路も含まれている。
The register signals to and from the SCI are resynchronized 980 in both directions. The signal goes to all sub-modules. Module memory interface 981 decodes access to TLB and page table pointer memory elements from the standard CBus interface. TLB access is read-only and uses TLB control logic to obtain data. The page table pointer is readable and writable, and is directly accessed by the module memory interface. These paths also include synchronization circuits.

【0544】3.18.11 周辺インターフェース制
御部図158には、図2の周辺インターフェース制御部
(PIC)の一例を詳細に示している。PIC237
は、外部周辺デバイスへ、又はデバイスからデータを転
送するいくつかのモードの1つで動作する。基本的なモ
ードは、 1)ビデオ出力モード:このモードで、データは外部ビ
デオクロックとクロック・データイネーブルのコントロ
ール下で、周辺へ転送される。PIC237は、出力デ
ータに対し必要とされるタイミングで出力クロックとク
ロックイネーブルサインを送る。
3.18.11 Peripheral Interface Controller FIG. 158 shows an example of the peripheral interface controller (PIC) in FIG. 2 in detail. PIC237
Operates in one of several modes for transferring data to or from external peripheral devices. The basic modes are: 1) Video output mode: In this mode, data is transferred to the periphery under the control of an external video clock and clock data enable. The PIC 237 sends an output clock and a clock enable sign at the required timing for the output data.

【0545】2)ビデオ入力モード:このモードで、デ
ータは外部ビデオクロックとクロック・データイネーブ
ルのコントロール下で、周辺へ転送される。 3)セントロニクスモード:このモードは、IEEE
1284標準に定義されている標準プロトコルに従い、
周辺へと周辺からデータを転送する。 PIC237は、必要に応じて、内部データソースや目
的地から外部インターフェースのプロトコルを分離す
る。内部データソースは、出力データの単一ストリーム
にデータを書き込み、選択されているモードによって外
部周辺機器へ転送される。同様に、外部周辺からの全て
のデータは単一入力データストリームに書き込まれ、可
能な内部データ目的地の1つに要求されたトランザクシ
ョンを満たすのに用いられる。
2) Video input mode: In this mode, data is transferred to the periphery under the control of an external video clock and clock data enable. 3) Centronics mode: This mode is based on IEEE
According to the standard protocol defined in the 1284 standard,
Transfer data to and from the periphery. The PIC 237 separates the protocol of the external interface from the internal data source and destination as needed. The internal data source writes the data to a single stream of output data and is transferred to external peripherals according to the mode selected. Similarly, all data from the external periphery is written to a single input data stream and used to fulfill the required transaction for one of the possible internal data destinations.

【0546】可能な出力データのソースとしては、LM
C236(ABusを用いる)、RO249(RBus
を用いる)、それから一般CBusの3つが挙げられ
る。PIC237は、これらのデータソースからのトラ
ンザクションに一度に1つのみに応答する。1つのソー
スからのトランザクションは次のソースが考慮される前
に完全に終了するのである。一般に、いつでも1つのみ
のデータソースしかアクティヴになってはならないので
ある。2つ以上のソースがアクティヴになった場合には
CBus、ABus、RBusのプライオリティで順に
処理される。
[0546] Possible output data sources include LM
C236 (using ABus), RO249 (RBus)
), And three of the general CBus. PIC 237 responds to transactions from these data sources only one at a time. Transactions from one source are completed before the next source is considered. Generally, only one data source should be active at any given time. When two or more sources become active, they are processed in order of CBus, ABus, and RBus priorities.

【0547】通常通り、モジュールはPICの内部レジ
スタが含まれている標準CBusインターフェース99
0のコントロール下で動作する。更に、CBusインタ
ーフェース992は、コプロセッサ224を介して周辺
デバイスをアクセスし、コントロールすることができ
る。ABusインターフェース991もローカルメモリ
制御部とのメモリ相互作用を処理することができる。結
果オーガナイザ249に加え、ABusインターフェー
ス991とCBusインターフェース992は両方とも
バイト−ワイドFIFOが含まれている出力データパス
993へデータを送る。出力データパスへのアクセス
は、どのソースが出力ストリームに対してプライオリテ
ィまたは所有権を持っているかを常にチェックする仲裁
者によってコントロールされる。出力データパスは、ど
っちがイネーブルになっているかによってビデを出力制
御部994とセントロニクス制御部997とインターフ
ェースする。それぞれのモジュール994、997は出
力データパスの内部FIFOから一度に1バイトを読み
出す。セントロニクス制御部997は、周辺デバイスを
コントロールするために標準セントロニクスデータイン
ターフェースを具現する。ビデオ出力制御部には、要求
されるビデオ出力プロトコルに従い、出力パッドをコン
トロールするロジックが含まれている。同様に、ビデオ
入力制御部998には、用いられているいかなるビデオ
入力標準もコントロールするロジックが含まれている。
ビデオ入力制御部998は入力データパスユニット99
9へ出力を出し、これは再びビデオ入力制御部998か
セントロニクス制御部997かのいずれかによって一度
に1バイトずつ非同期でFIFOに書き込まれるデータ
とバイトワイド入力FIFOを構成する。
As usual, the module is a standard CBus interface 99 containing the PIC internal registers.
Operate under 0 control. Further, the CBus interface 992 can access and control peripheral devices via the coprocessor 224. The ABus interface 991 can also handle memory interactions with the local memory controller. In addition to the result organizer 249, the ABus interface 991 and the CBus interface 992 both send data to an output data path 993 that contains a byte-wide FIFO. Access to the output data path is controlled by an arbitrator that constantly checks which source has priority or ownership over the output stream. The output data path interfaces the bidet with output control 994 and centronics control 997 depending on which is enabled. Each module 994, 997 reads one byte at a time from the internal FIFO of the output data path. The Centronics control unit 997 implements a standard Centronics data interface to control peripheral devices. The video output controller includes logic for controlling the output pads according to the required video output protocol. Similarly, the video input control 998 includes logic to control any video input standard being used.
The video input control unit 998 includes an input data path unit 99
9, which again constitutes a byte-wide input FIFO with data being asynchronously written to the FIFO one byte at a time by either the video input control 998 or the Centronics control 997.

【0548】データタイマ996には種々のカウンタが
含まれており、出力データパス993と入力データパス
999内のFIFOの現在状態をモニタするために用い
られている。以上のことから、コプロセッサを用いると
多重イメージまたは単一イメージの多重部分を同時に生
成するために二重ストリームの命令を実行するのが可能
に思われる。一次命令ストリームは現在ページの出力イ
メージを得るのに用いられ、一次命令ストリームがアイ
ドルになっている間に次のページのレンダリングを始め
るために二次命令ストリームを用いることができる。そ
の結果、標準モードの動作で、現在ページのイメージは
レンダリングされてからJPEGコーダ241を用いて
圧縮される。イメージをプリントする必要がある時に、
コプロセッサ241は二度JPEGコーダ241を用い
てJPEGエンコーデッドイメージを解凍する。出力デ
バイスにからそれ以上のJPEGデコーデッドイメージ
の部分が必要とされないアイドルタイムの間に、次のペ
ージまたはバンドの構成のために命令を実行するのが可
能である。一般にこのプロセスは、コプロセッサの動作
オーバーラップにより、イメージを生成するレートを上
げる。特に、コプロセッサ224を用いると、コプロセ
ッサに付いたプリンタによってプリントが行われ、結果
的にレンダリングスピードが上がるため、イメージプロ
セシング作業のスピードアップの面でベネフィットが得
られるのである。
The data timer 996 includes various counters, and is used to monitor the current state of the FIFO in the output data path 993 and the input data path 999. In view of the foregoing, it appears possible with a coprocessor to execute dual stream instructions to simultaneously generate multiple images or multiple portions of a single image. The primary instruction stream is used to obtain an output image of the current page, and the secondary instruction stream can be used to begin rendering the next page while the primary instruction stream is idle. As a result, in the standard mode of operation, the image of the current page is rendered and then compressed using the JPEG coder 241. When you need to print an image,
The coprocessor 241 uses the JPEG coder 241 twice to decompress the JPEG encoded image. During idle time when no more JPEG decoded image portions are needed from the output device, it is possible to execute instructions for the construction of the next page or band. Generally, this process increases the rate at which images are generated due to the overlap of the coprocessor operations. In particular, when the coprocessor 224 is used, printing is performed by a printer attached to the coprocessor, and as a result, the rendering speed is increased. Therefore, a benefit is obtained in terms of speeding up the image processing operation.

【0549】上記好適な実施例は本発明の1つの実施形
態であり、本発明の範囲を外れずに当業者にとって自明
な修正ができることが、以上から明らかであろう。
It will be apparent from the foregoing that the preferred embodiment described above is one embodiment of the present invention and that obvious modifications can be made to those skilled in the art without departing from the scope of the present invention.

【0550】付録A コプロセッサマイクロプログラミング この節では新しい命令の実行毎にコプロセッサ内で行わ
れる動作について詳述する。命令実行の間にコプロセッ
サにより行われるすべてのセルフコンフィグレーション
は内部のレジスタのリード/ライトにより実現されてお
り、従って、コプロセッサは外部のCバスインターフェ
ースあるいはホストによってPCIバスインターフェー
スを用いることで完全にマイクロプログラミング可能で
ある。但し、ホストを用いるマイクロプログラミングの
場合には一般的にホスト同期の問題から困難となること
が予想される。本章は読者がコプロセッサについて以下
の点で十分な知識を持っていることを前提している。 1.実行モデル 2.命令セットとコーディング 3.レジスタセット 4.内部構造 A.1 一般事項 A1.1 コプロセッサのセットアップに関する一般事
項 コントロール命令とローカルDMA命令以外のすべての
命令については、コプロセッサで内のデータの流れは基
本的にピクセルオーガナイザの制御下におかれる。ピク
セルオーガナイザは入力データストリームの先頭のフェ
ッチ、データのカウント、及び最後のデータがフェッチ
された時期の決定について責任を持っている。コプロセ
ッサ内のその他のモジュールは基本的に、送られてきた
データに単に応答するだけである。 A1.2 モジュールのコンフィグレーション順序 すべてのモジュールが命令毎にセットアップされるわけ
ではない。いくつかのモジュールは命令デコーディング
時に、全くコンフィグレーションされない。モジュール
のコンフィグレーション順序は常にPO,DCC,OO
B,OOC,MDP,JC,RO,PICの順である。 A1.3 その他のレジスタの設定 命令が、あるレジスタ値の設定を含んで符号化された場
合にはそのレジスタは次の順序に従うマイクロプログラ
ミングにより設定される。 1.設定されるべきレジスタを持つモジュールに、ほか
にレジスタセットが存在しなければ、そのレジスタはほ
かのいかなるレジスタ設定よりも先に設定される。 2.設定されるべきレジスタを持つモジュールに、ほか
にもレジスタセットがあるときはそのレジスタはほかの
レジスタの設定が終わった後に、そのモジュールの_c
fgレジスタの直前に設定される。 A1.4 整合性のない命令オペランドのコーディング 多くの命令は、オペランド及び結果のデータタイプが指
定されているので、ほかのデータタイプが指定された場
合には、無意味な結果を返す。各オペランドに対し、コ
プロセッサは次の手順で目的のオペランドのフォーマッ
トを決定する。 1.オペランドの内部フォーマットが1つのピクセル
(圧縮バイトあるいは非圧縮バイト)に特化されている
場合には、対応するオペランドオーガナイザはこれを反
映して設定される。データキャッシュコントローラはコ
ンフィグレーションされず、従ってノーマルモードで演
算が継続される。 2.オペランドの内部フォーマットが「その他の形式」
に特化されている場合には、コプロセッサは命令からオ
ペランドのフォーマットを生成する。オペランドBとオ
ペランドCについては前進的である。オペランドAにつ
いて「その他の形式」は元来指定されていなく、コプロ
セッサの振る舞いは定義されていない。対応するオペラ
ンドオーガナイザはバイパスモードになり、データキャ
ッシュコントローラは得られたフォーマットのオペラン
ドデータを管理するように設定される。マイクロプログ
ラミングは合理的に様々なモジュール間で相互独立であ
る。 A1.5 疑似命令の文法 ・命令の実行順序は左端の番号で決定される。 ・レジスタ名はHelvetica Bold体でかか
れている。 ・レジスタフィールドはregister.field
によって示される。 ・I,Dは現在復号化されている命令ワードとデータワ
ードをそれぞれ示す。 ・A,B及びCは現在復号化されているオペランドワー
ドA、オペランドワード B、オペランドワードCを示す。 ・A_deskriptor,B_deskripto
rおよびC_deskriptorは現在復号化されて
いる命令のデータワードのデスクリプタを示す。 ・Rは現在復号化されている命令の結果ワードを示す。 ・”X:Y”はXとYの連結を示す。 ・”@X”はコプロセッサのレジスタ番号Xを示す。 ・”Cbus(X)”はCバスオペレーションXの実行
を示す。 ・”Cbus(X)”はCバスオペレーションXによ
る受け取りデータを示す。 ・”X”は仮想メモリ番地Xを示す。 ・”??”は不明な値、あるいは未定の値を示す。 ・”set”はデータマニピュレーションレジスタの設
定を示す。 A.2 合成演算子 注: 1.主要オペコードは0xCと0xD 2.曖昧さは最上位アドレスのバイト(すなわち、最上
位バイト)であると考える。 3.アキュムレータあるいはオペランドはプレ乗算され
ていてもよい。 4.結果は非プレ乗算されていてもよい。 5.命令長は入力ピクセルの数により定義されている。 A.3 色空間変換 注: 1.入力空間は常に3次元である。デフォルトでは3つ
の最下位なピクセルのチャネルである。曖昧さは排除さ
れる。 2.カラーテーブルのフォーマットはひとつの出力チャ
ネルを含むものか、4つの出力チャネルを含むもののう
ちどちらかである。 A.4 JPEG命令 注: 1.オペコードは0x2である。 2.オペランドCはヤットするためのレジスタでもよ
い。 3.オプションは多数存在する。 ・サブサンプリングを行う/行わない。 ・フィルタリングを行う/行わない。 ・1,3あるいは4スキャン。 4.これらの命令は命令実行前に設定されたいくつかの
レジスタと関係している。 A.4.1 伸長 注:1.以下のレジスタは命令実行前に設定されている
必要がある。 ・ro_idr:出力画像次元数レジスタ ・ro_cut:出力カットレジスタ ・ro_lmt:出力制限レジスタ A.4.2 圧縮 注: 1.以下のレジスタは命令実行前に設定されている必要
がある。 ・po_idr:出力画像次元数レジスタ ・jc_rml:再スタートマーカのインターバル ・ro_cut:出力カットレジスタ ・ro_lmt:出力制限レジスタ A.5 データコーディング 注: 1.すべてのデータコーディング操作は圧縮、圧縮解除
いずれの場合も同じ様に扱われる。これらの操作設定は
JPEGの時とほとんど同じである。 2.可能なエンコーディング操作 ・ハフマン符号化 ・予測符号化 3.可能なデコーディング操作 ・高速ハフマン復号化 ・低速ハフマン復号化 ・packbits復号化(バージョンA) ・packbits復号化(バージョンB) ・予測復号化 4.オペランドCは設定するためのレジスタでも良い。 5.以下のレジスタは命令実行前に設定されている必要
がある。 ・ro_cut:出力カットレジスタ ・ro_lmt:出力制限レジスタ A.6 変換と畳み込み 1.オペコードは0x4(畳み込み)と0x5(変
換)。 2.コプロセッサは画像変換と画像畳み込みのそれぞれ
のために必要となるスーパーセットである操作を行う。
画像変換と画像畳込みの唯一の違いは、コプロセッサに
関する限り、画像変換ではカーネルステップサイズがカ
ーネルの大きさ(水平、垂直)なのに対して、畳込みで
はステップサイズが1ソースピクセルとなっていること
である。 3.オプション: ・隣接ピクセルへのスナッピングおよび補間 ・ピクセル(カーネル)の蓄積を行うか否か ・ソースピクセルのプレ乗算を行うか否か ・最終結果のクランプ、ラッピング、絶対値 4.注:変換と畳込みは元の位置には実行できない。つ
まり、ソースのポインタとデスティネーションのポイン
タが同じであるときは、その内容が破壊される。 A.7 行列乗算 注: 1.オペコードは0x3 2.オプション: ・ソースピクセルのプレ乗算を行うか否か ・最終結果のクランプ、ラッピング、絶対値化 ・オペランドCはレジスタに書き込んでも良い A.8 ハーフトーン処理 注: 1.オペコードは0x7 2.オプションはハーフトーンのレベル値のみ 3.ハーフトーンスクリーンが適切にメッシュあるいは
アンメッシュされているかぎり、ピクセルあるいはバイ
トに対して行うことができる。 A.9 メモリーコピー 注: 1.オペコードは0x92.この命令はメモリーコピー
の操作を完了するために、全く個別の機構を用いてい
る。 ・汎用データ転送命令はコプロセッサにおける通常のデ
ータフローを利用し、POおよびRO内のデータ操作ユ
ニットを用いる様々な関数を利用できる。 ・ペリフェラルDMA命令はPICとLMC間の直接的
なコネクションを利用する。このことはデータ操作がで
きないことを意味し、後続の命令と同時実行が可能であ
る。 A.9.1 汎用データ転送 A.9.2 ペリフェラルDMA転送 注: 1.同時実行でもそうでなくとも良い。このことは、I
Cによって扱われている。 2.オペランドCは設定するレジスタでも良い 3.PICはデータを扱うモジュールなので、この命令
はほかの”能動”命令と異なる。 A.10 フォトCD伸長 この命令群は3つの異なる操作すなわち、水平補間、垂
直補間、残部融合から構成される。垂直補間と残部融合
の設定方法は同じである。 これら全ての命令のオペコ
ードは0x9である。 A.10.1 水平補間 注: 1.ピクセルあるいはバイトに対して実行可能 2.この命令はオペランドが1つの命令であり、オペラ
ンドCは設定するレジスタでも良い。 A.10.2 垂直補間と残部融合 注: 1.垂直補間と残部融合の設定は同じである。 2.ピクセルとバイトの両方に対して実行可能。 3.この命令はオペランドが2つの命令であり、オペラ
ンドCはレジスタセットでも良い。 A.11 制御命令 注: 1.制御命令は2種類の操作、すなわちフロー制御命令
と内部アクセス命令からなる。 A.11.1 フロー制御 注: 1.オペコードは0xB 2.フロー制御命令は現在、各種ジャンプ命令と各種の
待機命令から成っている。 3.コプロセッサ内では明確な設置は行われず、またこ
の命令は、”能動”命令ではない。つまり、ほかの命令
のようにコプロセッサ内のサブモジュールが実際に何か
を行ったりはしない。 4.オペランドCは設定するレジスタでも良い。 A.11.2 内部アクセス(リード) 注: 1.オペコードは0xA 2.リード命令はデータをコプロセッサ外に転送する。 3.ROが実際にコプロセッサ内ですべてを行う唯一の
モジュールである。 A.11.3 内部アクセス(ライト) 注: 1.オペコードは0xA 2.ライト命令はデータをコプロセッサ内に転送する。 3.この命令は”能動”命令ではないので、IC以外の
モジュールは実際には何も行わない。 A.12 予約された命令 注: 1.オペコード0x0,0xFは予約されている。 2.予約された命令はマスク可能なエラーを出す。 3.これらの予約された命令はコプロセッサが今後改訂
されたときにほかの命令として使用されることになって
いる。 付録B:レジスタ 1.1 レジスタおよびテーブル 本節ではコプロセッサのレジスタについて解説する。こ
れらのレジスタは3通りの方法で変更可能である。 1.特定のコプロセッサの命令群ははレジスタの読み書
きをするためにある。これらの命令群を用いることでレ
ジスタは、イニシエータのPICバスサイクルの開始あ
るいは汎用インターフェースのトランザクションを用い
て、ローカルメモリインターフェースに関連するメモリ
への、あるいはメモリからの読み書きが行われる。 2.多くのレジスタは命令実行の副作用により内容が変
化する。命令実行のためにコプロセッサが自身の設定を
行うという主要な機構は、様々なレジスタを現在の状態
を反映するように設定することで実現されている。命令
実行終了後には各レジスタはコプロセッサの状態を反映
する。多くの典型的な処理はある命令により完全に特定
され、設定される。いくつかのレジスタでは命令実行の
直前に設定する必要がある。 「予約」レジスタビットの意味 あらゆるレジスタ或はその構成要素の「予約」の意味は
次の通りである。 ・予約された場所への書き込みは行えるが、そのデータ
は棄却される。 ・予約された場所からの読み込みは行えるが、そのデー
タは不定である 全ての特定されていないレジスタ及びレジスタフィール
ドは「予約」である。 1.1.1 レジスタの分類 コプロセッサ内のレジスタは本節に記述される振る舞い
に基づいて分類される。これらの記述は ・外部:モジュール外部(からのアクセス)。CBus
インターフェースを用いた外部アクセスである。すなわ
ち、命令コントローラあるいは外部CBusインターフ
ェースによるターゲットモードのPCIを用いる。注、
レジスタは、バイセットモードを介してPCIバスから
セットできない。 ・内部:モジュール内部(からのアクセス) 状態レジスタ 状態レジスタは外部からは読み込み専用で、内部からは
読み書き可能。 コンフィグ1レジスタ コンフィグ1レジスタは外部からは読み書き可能で、内
部からは読み込み専用である。コンフィグ1レジスタは
タイプCのCBus操作はサポートせず(すなわち、ビ
ットセットモードをサポートしない)、アドレス値のよ
うなバイト(またはそれより大きな)コンフィギュレー
ション情報を保持するレジスタとして用いられる。 コンフィグ2レジスタ コンフィグ2レジスタも外部から読み書き可能で、内部
からは読み込み専用である。コンフィグ2レジスタはタ
イプCのCBus操作(すなわちビットセットモード)
をサポートし、ビット単位で設定する必要のあるコンフ
ィギュレーション情報を保持するレジスタとして用いら
れる。 コントロール1レジスタ コントロール1レジスタは外部および内部から読み書き
可能。コントロール1レジスタはタイプCのCBus操
作をサポートせず(すなわちビットセットモードをサポ
ートしない)、アドレス値のようなバイト(またはそれ
より大きなコントロール情報を保持するレジスタとして
用いられる。 コントロール2レジスタ コントロール2レジスタは外部および内部から読み書き
可能。コントロール2レジスタはタイプCのCBus操
作(すなわちビットセットモード)をサポートし、ビッ
ト単位で設定する必要のあるコントロール情報を保持す
るレジスタとして用いられる。 割り込みレジスタ 割り込みレジスタ内のビットは内部からは1にセットで
き、外部からは1を書き込むことによって0にリセット
できる。モジュール割り込み/エラーレジスタもこのタ
イプである。モジュールの割り込み/エラーレジスタは
3つのフィールドから構成される。 [7:0]モジュールによって生成されたあらゆるエラ
ー状態(ステータス)を意味する [23:8]モジュールによって生成されたあらゆる例
外状態を意味する [31:24]モジュールによって生成されたあらゆる
割り込み状態を意味する1.1.2 レジスタマップ 表1.1はコプロセッサのレジスタである。番号はアド
レスではなくレジスタ番号である。 表1.1 コプロセッサレジスタ 1.1.3 レジスタ定義 汎用モジュールレジスタ 命令コントローラレジスタ I. ic_cfg ic_cfgレジスタは3つの部分に別れる。最下位バ
イトはグローバルコンフィギュレーション情報を含む。
最下位から3番目のバイトはストリームAのコンフィギ
ュレーション情報を含み、最上位バイトはストリームB
のコンフィギュレーション情報を含む。 このレジスタ
のリセット値は0x00000000である。 m. is_stat このレジスタは4つのセクションに分かれている。最下
位バイトはICの内部状態を保持する。最下位から2番
目のバイトは現在の命令の復号化された結果と現在及び
プリフェッチした命令ストリームを保持する。最上位か
ら2番目のバイトはAストリームに関してすべてのステ
ータス情報を保持する。最上位バイトはBストリームに
関する情報を保持する。このレジスタのリセット値は0
x00000000である。 n. ic_err int このレジスタはIC内部で割り込みやエラーが発生した
かどうかを示す、アクティブ・ハイのフラグを含む。そ
れぞれのビットは1を書き込むことでクリアされる。 o. ic_err_int_en このレジスタは様々なエラーや割り込みの許可のマスク
を含み、リセット値は0x00000000である。 p. ic_ipa このレジスタはストリームAの命令フェッチに用いられ
る仮想アドレスの最上位30ビットを保持する。2つの
最下位ビットは命令が整列されてるはずであるとして0
に仮定される。このレジスタのリセット値は0x000
00000である。 q. ic_tda このレジスタはストリームAの“to do”値を保持
する。これは適正な命令が存在するまでの32ビット
(ラッピング)のシーケンス番号である。このレジスタ
のリセット値は0x00000000である。 r. ic_fna このレジスタはストリームAの「終了」値を保持する。
これは32ビット(ラッピング)のシーケンス番号で最
後に完了した命令を示している。このレジスタのリセッ
ト値は0x00000000である。 s. ic_inta このレジスタはストリームAの「割り込み」番号を保持
する。これは機構が有効であり用意されている場合にど
こへ割り込みをかけるかの、32ビット(ラッピング)
のシーケンス番号である。このレジスタのリセット値は
0x00000000である。 t. ic_loa このレジスタはストリームAで実行される最後の重複命
令の32ビット(ラッピング)のシーケンス番号を保持
する。このレジスタのリセット値は0x0000000
0である。 u. ic_ipb このレジスタはストリームBの命令フェッチに用いられ
る仮想アドレスの最上位30ビットを保持する。2つの
最下位ビットは命令が整列されているはずであるとして
0に仮定される。このレジスタのリセット値は0x00
000000である。 v. ic_tdp このレジスタはストリームBの“to do”値を保持
する。これは適正な命令が存在するまでの32ビット
(ラッピング)番号である。このレジスタのリセット値
は0x00000000である。 w. ic_fnb このレジスタはストリームBの「終了」値を保持する。
これは32ビット(ラッピング)のシーケンス番号で最
後に完了した命令を示している。このレジスタのリセッ
ト値は0x00000000である。 x. ic_intb このレジスタはストリームBの「割り込み」番号を保持
する。これは機構が有効であり用意されている場合にど
こへ割り込みをかけるかの、32ビット(ラッピング)
のシーケンス番号である。このレジスタのリセット値は
0x00000000である。 y. ic_lob このレジスタはストリームBで実行される最後の重複命
令の32ビット(ラッピング)のシーケンス番号を保持
する。このレジスタのリセット値は0x0000000
0である。 z. ic_sema このレジスタはic_statレジスタの副作用を用い
たエイリアスであり、このレジスタの読み込はストリー
ムAのレジスタセマフォの要求の副作用である。 aa. ic_semb このレジスタはic_statレジスタの副作用を用い
たエイリアスであり、このレジスタの読み込みはストリ
ームBのレジスタセマフォの要求の副作用である。 入力インターフェースレジスタ ab. iis_cfg ac. iis_stat ad. iis_err_int ae. iis_err_int_en af. iis_ic_addr ag. iis_dcc_addr ah. iis_po_addr ai. iis_burst aj. iis_base_addr ak. iis_test 外部インターフェースコントローラレジスタ al. eic_cfg am. eic_stat an. eic_err_int eic_err_intレジスタのエラー及び割り込み
ビットはEICのみによって設定でき、ソフトウェアの
みによってリセットできる。通常のエラー及び割り込み
ビットはそのビットに1を書き込むことでリセットされ
る。PCIコンフィギュレーションレジスタビットのコ
ピーであるエラービットはPCIコンフィギュレーショ
ンレジスタに書き込むことでクリアされなければならな
い。すなわち、eic_err_intでのコピーは何
も影響しない。 ao. eic_err_int_en ap. eic_test aq. eic_pob ar. eic_high_addr as. eic_wtlb_v at. eic_wtlb_p au. eic_mmu_v 注:このレジスタの値は、MMUがページフォールトエ
ラーあるいはMMUからPCIバスのエラーにより無効
でないなら、いつでも変更可能である。 av. eic_mmu_p 注:このレジスタの値は、MMUがページフォールトエ
ラーあるいはMMUからPCIバスのエラーにより無効
でないなら、いつでも変更可能である。 aw. eic_ip_addr 注:このレジスタの値はIBDがIBusからPCIバ
スへのエラーによって無効でないならいつでも変更可能
である。 ax. eic_rp_addr 注:このレジスタの値はRBRがRBusからPCIバ
スへのエラーによって無効でないなら、いつでも変更可
能である。 ay. eic_ig_addr注:このレジスタの値
はGBCが汎用バスのエラーによって無効でないなら、
いつでも変更可能である。 az. eic_rg_addr 注:このレジスタの値はGBCが汎用バスのエラーによ
って無効でないなら、いつでも変更可能である。 PCIバスコンフィギュレーション空間のエイリアス 16ワードからなるPCIバスコンフィギュレーション
空間は0xc0から0xcfまでのアドレスで示される
レジスタにエイリアスされている。 ローカルメモリコントローラレジスタ ba. lmi_cfg このレジスタはLMCの処理モードとパラメータを決定
するのに用いられる多くのコンフィギュレーションビッ
トと制御ビットを含む。sdram_1ピンがハイの時
SDRAM処理を特別に参照するビットは全く影響を持
たない。 このレジスタはclkinの周波数が80M
Hzのとき3.2マイクロ秒のリフレッシュ間隔である
ようなリセット値0x20000100をもつ。すべて
の特別なモードや機能は電源投入時には無効であり、す
べてのアクセス権限は等しく0に設定される。リフレッ
シュはリセット時に有効であるが、ほかのモジュールは
無効(E=0)である。リフレッシュはEビットに影響
されない。 bb. lmi_stat ステータスレジスタはマシン内部の情報と同様にモジュ
ールのアクティブや未決定ビットからなる。ステートマ
シンはCBusインターフェースの2倍のクロックで駆
動されており、従って最新の80MHzクロック2サイ
クルそれぞれの状態情報を保持するのには2フィールド
必要である。 bc. lmi_err_int エラーと割り込みのステータスレジスタは割り込み、例
外、エラー状態の情報を保持する。レジスタは読み書き
でき、読み込みはステータス情報を返し、特定ビットへ
の1の書き込みはそのビットをリセットする。0の書き
込みはそのビットに対して全く影響を持たない。 このレジスタはリセット値0x00000000を持た
なくてはならず、これは割り込み及びエラーが発生して
いないことを示す。予約ビットは常に0であり決して状
態を変更できない。 bd. lmi_err_int_enレジスタ エラー、例外、割り込み有効レジスタはエラー、例外割
り込み信号の有効、無効の選択に用いられる。レジスタ
は読み書きできる。このレジスタはlmi_err_i
ntレジスタ内のエラー、例外、割り込みそれぞれに基
づいて、ビット単位で有効化するのに用いられる。この
レジスタのビットとlmi_err_intレジスタの
ビットとの間には1対1の対応がある。もしlmi_e
rr_int_enレジスタの特定のビットがハイにな
ったらlmi_err_intレジスタの対応するビッ
トが有効になり、それがハイであるならば、LMCモジ
ュールエラー、例外あるいは割り込み信号、c_er
r、c_exp、あるいはc_intが発生できる。も
しlmi_err_int_enレジスタの特定のビッ
トがクリアされたらたらlmi_err_intレジス
タの対応するビットが無効になり、c_err、c_e
xpあるいはc_intを発生させることはできない。
LMCには例外はないので、このレジスタのexp_m
askビットは全く影響せず、すべて予約である。この
レジスタのリセット値はすべてのエラー及び割り込み源
を無効にする0x00000000である。使用されな
いビットは常に0であり、ハイにセットすることはでき
ない。 be. lmi_dcfg このコンフィギュレーションレジスタはDRAMチップ
を使用する場合のサイズやコンフィギュレーションを決
定する設計パラメータを保持する。 このレジスタはす
べてのタイミング制限の値を最大値にするようなリセッ
ト値0x0007ff80を保持する。 bf. lmi_mode レジスタ このコンフィギュレーションレジスタは初期化処理の一
環としてSDRAMモードレジスタに書き込まれる情報
を保持する。このレジスタは常に読み書き可能で、初期
化ビットをセットすることによってSDRAMに書き込
んでも良い。このレジスタはリセット値0x0037を
もつ。この有用なデフォルト値は電源投入プリチャージ
後あるいはレベル1のリセット後直ちに要求される。こ
れは読み込み遅延を3クロックに設定し、バースト長を
シーケンシャルラップを用いたフルページに設定する。
あらゆるリセットの後、もしsdram_1ピンがロー
であれば、SDRAMモードレジスタを初期的にプログ
ラムするために、初期化ビットはセットされる。モード
レジスタの書き込み実行後、このビットは自動的にゼロ
にクリアされる。 周辺インターフェースレジスタ bg. pic_cfg レジスタ bh. pic_stat bi. pic_err_int pic_err_intレジスタのエラーおよび割り込
みビットはPICのみによりセットされ、ソフトウェア
のみによってリセットされる。それぞれのビットは1を
書き込むことでリセットされる bj. pic_err_int_en bk. pic_abus_cfg bl. pic_abus_addr bm. pic_cent_cfg pic_cent_cfgレジスタはセントロニクスモ
ードが有効の場合に、すべてのインターフェースの局面
を制御する読み込み/書き込み信号及び読み込み専用ス
テータス信号を含んでいる。 bn. pic_cent_dir bo. pic_reverse_cfg bp. pic_timer0 bq. pic_timer1 データキャッシュコントローラレジスタ br. dcc_cfg1 bs. dcc_cfg2 bt. dcc_stat bu. dcc_err_int bv. dcc_err_int_en bw. dcc_lv0 bx. dcc_lv1 by. dcc_lv2 bz. dcc_lv3 ca. dcc_addr cb. dcc_raddrb cc. dcc_raddrc cd. dcc_test オペランドオーガナイザレジスタ オペランドオーガナ
イザレジスタには同様の2つのオペランドオーガナイザ
が存在する:オペランドオーガナイザBとオペランドオ
ーガナイザCである。これらの2つのオペランドオーガ
ナイザ用のレジスタはここに記述されている。 ce. oon_cfg(oob_cfg=0x70,
ooc_cfg=0x80) cf. oon_stat(oob_cfg=0x7
1,ooc_cfg=0x81) cg. oon_err_int(oob_err_i
nt=0x72,err_int=0x82) ch. oon_err_int_en(oob_er
r_int_en=0x73,err_int_en=
0x83) ci. oon_dmr(oob_dmr=0x74,
ooc_dmr=0x84) cj. oon_subst(oob_subst=0
x75,ooc_subst=0x85) ck. oon_cdp(oob_cdp=0x76,
ooc_cdp=0x86) cl. oon_len(oob_len=0x77,
ooc_len=0x8 cm. oon_said(oob_said=0x7
8,ooc_said=0x88) cn. oon_tile(oob_tile=0x7
9,ooc_tile=0x89) ピクセルオーガナイザレジスタ co. po_cfg cp. po_stat cq. po_err_int cr. po_err_int_en cs. po_dmr ct. po_subst cu. po_cdp cv. po_len cw. po_said cx. po_idr cy. po_muv_valid cz. po_muv 主データパスレジスタ da. mdp_cfg すべてのビットは0にリセッ
トされる。 db. mdp_stat すべてのビットは0にリセットされる。 dc. mdp_err_int すべてのビットは0にリセットされる。 dd. mdp_err_int_en すべてのビットは0にリセットされる。 de. mdp_test すべてのビットは0にリセ
ットされる。 df mdp_op1 すべてのビットは0にリセット
される。 dg mdp_op2 すべてのビットは0にリセット
される。 dh mdp_por すべてのビットは0にリセット
される。 di mdp_bi すべてのビットは0にリセットさ
れる。mdp_biレジスタは種々のモードの様々なも
のに用いられる。 dj mdp_bm すべてのビットは0にリセットさ
れる。mdp_bmレジスタは異なるモードの異なるも
のに用いられる。 dk mdp_len すべてのビットは0にリセット
される JPEG符号化器レジスタ dl jc_cfg dm jc_stat dn jc_err_int do jc_err_int_en dp jc_rsi dq jc_decode dr jc_res ds jc_table_sel 結果オーガナイザレジスタ dt ro_cfg du ro_stat dv ro_err_int dw ro_err_int_en dx ro_dmr dy ro_subst dz ro_cdp ea ro_len eb ro_sa ec ro_idr ed ro_vbase ee ro_cut ef ro_lmt PCIコンフィギュレーション空間のエイリアス PC
Iコンフィギュレーション空間は256バイトの、PC
Iによって定義されたレジスタのブロックであり、ホス
トがPCIデバイスをコンフィギュレーションしたり、
その状態を読んだりすることを認めている。それはPC
Iコンフィギュレーションサイクルを用いてアクセスさ
れる。レジスタはまたコプロセッサの内部メモリの読み
込み専用エリアにミラーされており、従ってPCIの通
常のメモリサイクルを用いて読むことができる。EIC
に実装されているコンフィギュレーション空間のフォー
マットを表1.141.1に示す。 表1.141.1 コプロセッサPCI構成の空間的レ
イアウト 予約のレジスタと実装されたレジスタにおける予約のビ
ットは読み込みに対しては0を返し、また書き込みによ
って影響しない。0x40−0xffの範囲のコンフィ
ギュレーション空間のアドレスもまた予約である。ベン
ダー専用のコンフィギュレーションレジスタは定義され
ない。 eg ベンダーID このレジスタは読み込み専用である。CISRAのベン
ダーIDは0x11ACである。 eh デバイスID このレジスタは読み込み専用である。コプロセッサのデ
バイスIDは0x0001である。デバイスIDフィー
ルドは二つの8ビットのフィールドに分割されている:
最上位の8ビットはデバイスの特徴をを示す番号(0x
0はコプロセッサ)で、最下位の8ビットはそのデバイ
スのバージョン番号(0x1はコプロセッサのバージョ
ン)を示す。 ei コマンドレジスタ コマンドレジスタのフィールドの定義を表1.142に
示す。このレジスタのすべての予約されていないビット
は読みこみ/書き込みができる。リセット後にはこのレ
ジスタは0x0000にセットされる。 ej ステータスレジスタ ステータスレジスタのフィ
ールドの定義を表1.143に示す。このレジスタの読
み込みは通常通りである。このレジスタのいくつかのビ
ットは読み込み専用である。その他のビットはコプロセ
ッサのみにより1にセットされ、ホストのみによって0
にリセットされる(テストモードを除く)。ホストはそ
のビットに1を書き込むことでリセットする;0の書き
込みは意味をなさない。リセット後にはこのレジスタは
0x0280にセットされる。 ek リビジョンID これは読み込み専用のレジスタ
である。コプロセッサの初期リビジョンIDは0x01
である。 el クラスコード これは読み込み専用の
レジスタである。コプロセッサはPCISIGの定義さ
れたクラスコードに適さないのでこのレジスタは0xF
F0000にセットされる。 em キャッシュラインサイズ これは32ビットワード単位でシステムのキャッシュラ
インサイズを決定する読み書き可能なレジスタである。
これはコプロセッサがメモリ読み込みラインやメモリ多
重読み込みコマンドを使用するときに決定する。コプロ
セッサはこのレジスタの0から255までの値をサポー
トする。このレジスタにおける0はメモリ読み込みライ
ンおよびメモリ多重読み込みの形式を無効にする。この
レジスタはリセット時には0x00にセットされる。 en 遅延タイマ このレジスタはすべてのPCIの処理にCPUが使用す
る最大のクロック数を特定する読み書きできるレジスタ
である。コプロセッサはこのレジスタにおいて0から2
55の値をサポートする。このレジスタはリセット時に
は0x00にセットされる。 eo ヘッダタイプ この読み込み専用のレジスタは0x00にセットされ
る。このことはコプロセッサがタイプ0のレイアウトの
コンフィギュレーション空間を使用することを意味す
る。 ep ベースアドレス この読み書き可能なレジスタはコプロセッサの内部レジ
スタ、内部メモリ、ローカルメモリ、及び汎用インター
フェースをホストのメモリマップ内に配置するために用
いられる。コプロセッサの様々なリソースは64MB
(すべてが使用される訳ではない)を占有し、従ってこ
のレジスタの先頭6ビットだけが書き込み可能である。
残りのビットはすべて0にハード的に結線されている。
このレジスタの下位の4ビットは読み込み専用の制御ビ
ットであり、これらもまた0に結線されている。このこ
とはレジスタがメモリ空間を参照することを意味し、コ
プロセッサがホスト側の32ビット空間のどこにでもマ
ッピングされ、コプロセッサのリソースがターゲットで
あるときはプリフェッチできないことを意味する。 eq サブシステムベンダーID この読み込み専用レジスタはホストがシステムに実装さ
れたPCIボードのベンダーを識別できるようにする
(ボード上のPCIインターフェースに実装したコンポ
ーネントのベンダーに対して)。このレジスタの内容は
リセット時にEICコンフィギュレーションシリアルポ
ートを用いてロードされる。 er サブシステムID この読み込み専用レジスタはホストがシステムに実装さ
れたPCIボードを識別できるようにする。このレジス
タの内容はリセット時にEICコンフィギュレーション
シリアルポートを用いてロードされる。このメカニズム
はボードの機能あるいはコンフィギュレーションに必要
な情報の外部からの符号化およびホストからの読み込み
を可能にする。 es 割り込みライン この読み書きできるレジスタはシステムソフトウェアが
割り込みラインルーティング情報を記録できる様にする
ために使用され、割り込みサービスソフトウェアにより
アクセスできる。コプロセッサ内の処理には全く影響を
与えない。このレジスタはリセット時には0x00にセ
ットされる。 et 割り込みピン この読み込み専用レジスタはハード的に0x01に結線
されている。このことはコプロセッサがPCIのint
a_1割り込みピンを使用することを示す。 eu Min_Gnt この読み込み専用レジスタはコプロセッサが要求する1
/4マイクロ秒単位のバースト期間長をホストに示す。
このレジスタの最適な値はまだ決まっていない。 ev Max_Lat この読み込み専用レジスタは1/4マイクロ秒単位で
の、コプロセッサが要求するPCIバスのゲインコント
ロール最大遅延をホストに示す。このレジスタの最適な
値はまだ決まっていない。 1.1.4 内部メモリマップ 本節ではコプロセッサの内部メモリマップ内のプレモジ
ュールデータエリアに生ずるオブジェクトの詳細につい
て述べる。 1.1.5 メモリワードフィールド a eic_ptp
Appendix A Coprocessor Microprogramming In this section, each execution of a new instruction is performed in the coprocessor.
The operation performed will be described in detail. Coprocessor during instruction execution
All self-configuration performed by the
Is implemented by reading / writing internal registers.
Therefore, the coprocessor is connected to the external C bus interface.
Interface or PCI bus interface by host
Is fully microprogrammable
is there. However, in microprogramming using the host
In some cases it can be difficult due to host synchronization issues
Is expected. This chapter is based on the reader
It is assumed that you have sufficient knowledge in this regard. 1. Execution model 2. 2. Instruction set and coding Register set 4. Internal structure A. 1 General A1.1 General about coprocessor setup
Item All except the control instruction and local DMA instruction
For instructions, the data flow in the coprocessor is based
It is essentially under the control of a pixel organizer. Pic
The cell organizer starts the first data stream in the input data stream.
Switch, data count, and last data fetch
Responsible for determining when it was done. Coproce
Other modules in the server are basically sent
It simply responds to the data. A1.2 Module configuration order All modules are set up for each instruction
is not. Some modules have instruction decoding
Sometimes not configured at all. module
Configuration order is always PO, DCC, OO
B, OOC, MDP, JC, RO, and PIC. A1.3 Other register settings If an instruction is coded including the setting of certain register values,
If the register is a microprogram that follows the following order:
This is set by the user. 1. Modules with registers to be set, other
If the register set does not exist in the
Is set before any register setting. 2. Modules with registers to be set, other
If there is also a register set, that register is
After register setting, _c of the module
It is set immediately before the fg register. A1.4 Coding of inconsistent instruction operands Many instructions have operands and result data types that are not specified.
Is specified, if another data type is specified
Returns a meaningless result. For each operand,
The processor follows this procedure to format the desired operand.
To decide. 1. The internal format of the operand is one pixel
(Compressed or uncompressed bytes)
In that case, the corresponding operand organizer
Set to reflect. The data cache controller is
Not configured, and therefore perform in normal mode.
The calculation is continued. 2. The internal format of the operand is "other format"
If the coprocessor is specialized for
Generate Peland format. Operand B and E
Perland C is progressive. Operand A
And other formats are not originally specified,
Sessa's behavior is undefined. Corresponding Opera
The organizer goes into bypass mode and the data
Flash controller is the format of the opera
Is set to manage data. Microprog
Ramming is reasonably independent of the various modules.
You. A1.5 Syntax of pseudo-instructions • Instruction execution order is determined by the leftmost number.・ Register name is Helvetica Bold
Have been. -The register field is register. field
Indicated by • I and D are the instruction word and data word currently being decoded.
Mode is shown. A, B and C are the operand words currently decoded
A, operand word B, and operand word C.・ A_descriptor, B_deskripto
r and C_descriptor are currently decoded
Indicates the descriptor of the data word of the current instruction. R indicates the result word of the instruction currently being decoded. "X: Y" indicates a connection between X and Y. "$ X" indicates the register number X of the coprocessor. "Cbus (X)" indicates execution of C bus operation X
Is shown.・ " * Cbus (X) "is based on C bus operation X.
Indicates the data received.・ " * X "indicates a virtual memory address X. ・"? ? "" Indicates an unknown or undecided value. ・ "Set" indicates the setting of the data manipulation register.
Shows the setting. A. 2 Composition operator Notes: 1. The main opcodes are 0xC and 0xD The ambiguity is due to the byte at the highest address (ie,
Byte). 3. The accumulator or operand is premultiplied
May be. 4. The result may be non-premultiplied. 5. The instruction length is defined by the number of input pixels. A. 3 Color space conversion Notes: 1. The input space is always three-dimensional. 3 by default
Is the channel of the lowest order pixel. Ambiguity is eliminated
It is. 2. The format of the color table is one output channel.
Channel or four output channels
Either. A. 4 JPEG instruction Notes: 1. The operation code is 0x2. 2. Operand C may be a register for yatt
No. 3. There are many options.・ Subsampling is performed / not performed.・ Perform / do not perform filtering. -1, 3 or 4 scans. 4. These instructions have a number of settings
Related to registers. A. 4.1 Extension Notes: 1. The following registers are set before instruction execution
There is a need.・ Ro_idr: output image dimension number register ・ ro_cut: output cut register ・ ro_lmt: output restriction register A. 4.2 Compression Notes: 1. The following registers must be set before executing the instruction
There is. • po_idr: output image dimension register • jc_rml: restart marker interval • ro_cut: output cut register • ro_lmt: output restriction register A. 5 Data coding Notes: 1. All data coding operations are compressed and decompressed
Both cases are treated the same. These operation settings
It is almost the same as JPEG. 2. Possible encoding operations • Huffman coding • Predictive coding Possible decoding operations • Fast Huffman decoding • Slow Huffman decoding • packbits decoding (version A) • packbits decoding (version B) • predictive decoding Operand C may be a register for setting. 5. The following registers must be set before executing the instruction
There is.・ Ro_cut: output cut register ・ ro_lmt: output limit register A. 6 Transformation and convolution The operation code is 0x4 (convolution) and 0x5 (conversion).
Exchange). 2. Coprocessor for image conversion and image convolution
Perform operations that are supersets required for
The only difference between image transformation and image convolution is that the coprocessor
As far as image conversion is concerned, the kernel step size is
The size of the tunnel (horizontal, vertical)
Means that the step size is one source pixel
It is. 3. Options: • Snapping and interpolation to neighboring pixels • Whether to accumulate pixels (kernel) • Whether to perform pre-multiplication of source pixels • Clamp, wrap, absolute value of final result Note: Transformation and convolution cannot be performed on the original position. One
In short, the source pointer and the destination point
If they are the same, their contents are destroyed. A. 7 Matrix multiplication Notes: 1. The operation code is 0x3. Options: • Whether or not to premultiply the source pixel. • Clamp, wrap, or absoluteize the final result. • Operand C may be written to a register. A. 8 Halftone processing Notes: 1. The operation code is 0x7 2. Option is only halftone level value. The halftone screen is properly meshed or
Pixels or bids as long as they are unmeshed
Can be done against A. 9 Memory copy Notes: 1. The operation code is 0x92. This instruction is a memory copy
Use completely separate mechanisms to complete the
You.・ General-purpose data transfer instructions are
Utilizing data flow, data manipulation user in PO and RO
Various functions using knits are available. • Peripheral DMA instructions are direct between PIC and LMC
Use a simple connection. This means that data manipulation
And cannot be executed simultaneously with the subsequent instruction.
You. A. 9.1 General-purpose data transfer A. 9.2 Peripheral DMA transfer Notes: 1. Simultaneous execution is not required. This means that I
Handled by C. 2. Operand C may be a register to be set. Since PIC is a module that handles data, this instruction
Is different from other "active" instructions. A. 10 Photo CD decompression This group of instructions has three different operations: horizontal interpolation, vertical
It consists of direct interpolation and rest fusion. Vertical interpolation and rest fusion
The setting method is the same. Opeco for all these instructions
The mode is 0x9. A. 10.1 Horizontal interpolation Notes: 1. Executable on pixel or byte This instruction is an instruction with one operand.
Command C may be a register to be set. A. 10.2 Vertical interpolation and rest fusion Notes: 1. The settings for vertical interpolation and remnant fusion are the same. 2. Can be performed on both pixels and bytes. 3. This instruction has two operands.
Command C may be a register set. A. 11 Control instructions Notes: 1. Control commands are two types of operations, namely flow control commands.
And an internal access instruction. A. 11.1 Flow control Notes: The operation code is 0xB. Flow control instructions are currently available for various jump instructions and various
Consists of wait instructions. 3. There is no explicit installation within the coprocessor and
Is not an "active" instruction. That is, other instructions
What is the submodule in the coprocessor actually like
Do not go. 4. Operand C may be a register to be set. A. 11.2 Internal access (read) Notes: 1. The operation code is 0xA. The read instruction transfers data out of the coprocessor. 3. RO is the only one that actually does everything in the coprocessor
Module. A. 11.3 Internal access (write) Notes: 1. The operation code is 0xA. Write instructions transfer data into the coprocessor. 3. Since this instruction is not an “active” instruction,
The module doesn't actually do anything. A. 12 Reserved instructions Notes: Operation codes 0x0 and 0xF are reserved. 2. Reserved instructions give maskable errors. 3. These reserved instructions will be revised by the coprocessor in the future
Will be used as other instructions when
I have. Appendix B: Registers 1.1 Registers and Tables This section describes the coprocessor registers. This
These registers can be modified in three ways. 1. Specific coprocessor instructions are read / write registers
I have to do it. By using these instructions,
The register starts the PIC bus cycle of the initiator.
Or using a generic interface transaction
The memory associated with the local memory interface
Reading from or writing to memory. 2. Many registers change contents due to the side effects of instruction execution.
Become The coprocessor configures itself for instruction execution
The main mechanism of doing is to make various registers current state
This is realized by setting to reflect. order
After execution, each register reflects the state of the coprocessor
I do. Many typical operations are completely specified by certain instructions
Is set. Some registers have instruction execution
Must be set immediately before. The meaning of the “reserved” register bits The meaning of “reserved” for any register or its components is
It is as follows.・ Writing to the reserved place is possible, but the data
Is rejected.・ Reading from the reserved place can be performed, but the data
Data is undefined All unspecified registers and register fields
"Do" is "reserved". 1.1.1 Register classification Registers in the coprocessor behave as described in this section.
Classified based on These descriptions are: • External: External (access from module). CBus
External access using an interface. Sand
Command controller or external CBus interface
Use the target-mode PCI. note,
Registers are accessed from the PCI bus via Biset mode
Cannot set.・ Internal: Module internal (access from) Status register The status register is read-only from the outside,
Readable and writable. Config 1 register The Config 1 register is readable and writable from outside,
It is read-only from the department. Config 1 register
Type C CBus operations are not supported (ie,
Set mode is not supported).
Unequal byte (or larger) configuration
It is used as a register that holds application information. Config 2 register The Config 2 register is also readable and writable from outside,
Is read-only from. Config 2 register
IBus CBus operation (ie bit set mode)
Support that must be set on a bit-by-bit basis
Used as a register to hold configuration information
It is. Control 1 register Control 1 register is read / write from outside and inside
Possible. The control 1 register is a type C CBus operation.
Operation is not supported (that is, bit set mode is not supported).
Bytes (or
As a register to hold larger control information
Used. Control 2 register Control 2 register is read / write from outside and inside
Possible. The control 2 register is a type C CBus operation.
(I.e. bit set mode)
Holds control information that must be set in
Used as a register. Interrupt register The bits in the interrupt register are set to 1 internally.
Reset to 0 by writing 1 from outside
it can. The module interrupt / error register also
Ip. The module interrupt / error register is
It consists of three fields. [7: 0] Any errors generated by the module
-Meaning of status (23: 8) Any example generated by the module
Means out state [31:24] Any generated by the module
1.1.2 Register Map Meaning Interrupt Status Table 1.1 shows coprocessor registers. Number is ad
Register number, not address. Table 1.1 Coprocessor registers 1.1.3 Register definitions General-purpose module registers Instruction Controller Register I. ic_cfg The ic_cfg register is divided into three parts. Lowest order
The site contains global configuration information.
The third byte from the bottom is the config of stream A.
And the most significant byte is stream B
Configuration information. This register
Is 0x0000000000. m. is_stat This register is divided into four sections. Bottom
The order byte holds the internal state of the IC. 2nd from bottom
The first byte contains the decoded result of the current instruction and the current and
Holds the prefetched instruction stream. Top?
The second byte contains all the steps for stream A.
Status information. Most significant byte in stream B
Holds information about The reset value of this register is 0
x00000000. n. ic_err int This register indicates that an interrupt or error has occurred inside the IC.
Contains an active high flag that indicates whether So
Each bit is cleared by writing 1. o. ic_err_int_en This register is a mask for enabling various errors and interrupts.
And the reset value is 0x00000000. p. ic_ipa This register is used to fetch stream A instructions.
Holds the most significant 30 bits of the virtual address. Two
The least significant bit is 0 if the instruction should be aligned
Is assumed. The reset value of this register is 0x000
00000. q. ic_tda This register holds the "to do" value of stream A
I do. This is 32 bits until the correct instruction exists
(Wrapping) sequence number. This register
Is 0x0000000000. r. ic_fna This register holds the “end” value of stream A.
This is a 32-bit (wrapping) sequence number with the highest
Indicates an instruction that was completed later. Reset this register
The default value is 0x0000000000. s. ic_inta This register holds the "interrupt" number of stream A
I do. This can happen if the mechanism is valid and available.
32 bit (wrapping) to interrupt here
Is the sequence number. The reset value of this register is
0x00000000. t. ic_loa This register is the last duplicate instruction executed on stream A.
Holds the 32-bit (wrapping) sequence number of the instruction
I do. The reset value of this register is 0x00000000
0. u. ic_ipb This register is used to fetch stream B instructions.
Holds the most significant 30 bits of the virtual address. Two
The least significant bit is the instruction should be aligned
Assume 0. The reset value of this register is 0x00
000000. v. ic_tdp This register holds the "to do" value of stream B
I do. This is 32 bits until the correct instruction exists
(Wrapping) number. Reset value of this register
Is 0x00000000. w. ic_fnb This register holds the “end” value of stream B.
This is a 32-bit (wrapping) sequence number with the highest
Indicates an instruction that was completed later. Reset this register
The default value is 0x0000000000. x. ic_intb This register holds the "interrupt" number of stream B
I do. This can happen if the mechanism is valid and available.
32 bit (wrapping) to interrupt here
Is the sequence number. The reset value of this register is
0x00000000. y. ic_lob This register is the last duplicate instruction executed on stream B.
Holds the 32-bit (wrapping) sequence number of the instruction
I do. The reset value of this register is 0x00000000
0. z. ic_sema This register uses the side effects of the ic_stat register.
The reading of this register is streamed.
This is a side effect of requesting the register semaphore of the program A. aa. ic_semb This register uses the side effect of the ic_stat register.
Reading this register is
This is a side effect of the request for the register semaphore in the B-mode. Input interface register ab. iis_cfg ac. iis_stat ad. iis_err_int ae. iis_err_int_en af. iis_ic_addr ag. iis_dcc_addr ah. iis_po_addr ai. iis_burst aj. iis_base_addr ak. iis_test External interface controller register al. eic_cfg am. eic_stat an. eic_err_int error and interrupt of eic_err_int register
Bits can only be set by the EIC,
Can be reset only by Normal errors and interrupts
A bit is reset by writing a 1 to it.
You. PCI configuration register bits
Error bits that are
Must be cleared by writing to the
No. That is, what is the copy in eic_err_int
Has no effect. ao. eic_err_int_en ap. eic_test aq. eic_pob ar. eic_high_addr as. eic_wtlb_v at. eic_wtlb_p au. eic_mmu_v Note: The value of this register is
Error due to PCI bus error from error or MMU
If not, you can change it at any time. av. eic_mmu_p Note: The value of this register is
Error due to PCI bus error from error or MMU
If not, you can change it at any time. aw. eic_ip_addr Note: The value of this register is
Can be changed at any time if it is not invalid due to errors in the source
It is. ax. eic_rp_addr Note: The value of this register is
Can be changed at any time, unless invalid due to errors in the source
Noh. ay. eic_ig_addr Note: Value of this register
If the GBC is not invalid due to a general bus error,
Can be changed at any time. az. eic_rg_addr Note: The value of this register is
If it is not invalid, you can change it at any time. Alias of PCI bus configuration space PCI bus configuration consisting of 16 words
Space is indicated by addresses from 0xc0 to 0xcf
Aliased to register. Local memory controller register ba. lmi_cfg This register determines the LMC processing mode and parameters
Many configuration bits used to
And control bits. When sdram_1 pin is high
Bits that specifically refer to SDRAM processing have no effect.
Not. This register has a clkin frequency of 80M
Hz is 3.2 microseconds refresh interval
It has such a reset value 0x20,000100. all
The special modes and features of the
All access rights are set equal to zero. Refresh
Is active at reset, but other modules
Invalid (E = 0). Refresh affects E bit
Not done. bb. lmi_stat The status register is a module as well as information inside the machine.
The active and undecided bits of the rule. Statema
Shin runs at twice the clock rate of the CBus interface.
Operating and therefore the latest 80 MHz clock 2
Two fields to hold status information for each vehicle
is necessary. bc. lmi_err_int Error and interrupt status registers are interrupts, examples
In addition, information on error status is retained. Register is read / write
Yes, the read returns status information,
Writing a 1 resets that bit. Writing 0
The embedding has no effect on that bit. This register has the reset value 0x00000000
Must be done, this is due to interrupts and errors
Indicates that there is not. Reserved bits are always 0 and never
Cannot change state. bd. lmi_err_int_en register Error, exception, and interrupt enable registers are
It is used to select the valid or invalid of the embedded signal. register
Can read and write. This register is lmi_err_i
error, exception, and interrupt in the nt register.
Therefore, it is used to enable in bit units. this
Register bits and lmi_err_int register
There is a one-to-one correspondence between bits. If lmi_e
A particular bit in the rr_int_en register goes high.
Once the corresponding bit in the lmi_err_int register
Is enabled and if it is high, the LMC module
Module error, exception or interrupt signal, c_er
r, c_exp, or c_int can occur. Also
Specific bits of the lmi_err_int_en register.
Lmi_err_int regis
Corresponding bit of the data becomes invalid, c_err, c_e
xp or c_int cannot be generated.
Since there is no exception in LMC, the exp_m
The ask bits have no effect and are all reserved. this
Register reset values are used for all error and interrupt sources.
Is 0x0000000000 to invalidate. Not used
Bit is always 0 and cannot be set high.
Absent. be. lmi_dcfg This configuration register is a DRAM chip
Determine the size and configuration when using
Holds design parameters to be specified. This register is
Reset to maximize all timing limit values.
Hold the default value 0x0007ff80. bf. lmi_mode register This configuration register is part of the initialization process.
Information written to the SDRAM mode register as a ring
Hold. This register is always readable and writable,
Write to SDRAM by setting
It's fine. This register stores the reset value 0x0037
Have. This useful default value is power-up precharge
It is required immediately after the reset of level 1 or after. This
This sets the read delay to 3 clocks and the burst length
Set to a full page using sequential wrap.
After any reset, if sdram_1 pin goes low
, The SDRAM mode register is initially programmed.
To program, the initialization bit is set. mode
After a register write, this bit is automatically set to zero.
Is cleared. Peripheral interface register bg. pic_cfg register bh. pic_stat bi. pic_err_int pic_err_int register errors and interrupts
Bit is set by PIC only
Reset only by Each bit is 1
Reset by writing bj. pic_err_int_en bk. pic_abus_cfg bl. pic_abus_addr bm. pic_cent_cfg The pic_cent_cfg register is a Centronics module.
All aspects of the interface when the mode is enabled
Read / write signal and read-only switch
Contains the status signal. bn. pic_cent_dir bo. pic_reverse_cfg bp. pic_timer0 bq. pic_timer1 Data cache controller register br. dcc_cfg1 bs. dcc_cfg2 bt. dcc_stat bu. dcc_err_int bv. dcc_err_int_en bw. dcc_lv0 bx. dcc_lv1 by. dcc_lv2 bz. dcc_lv3 ca. dcc_addr cb. dcc_raddrb cc. dcc_raddrc cd. dcc_test Operand organizer register Operand organizer
The same two operand organizers
Exists: operand organizer B and operand
-Organizer C. These two operand augers
The registers for the riser are described here. ce. oon_cfg (oob_cfg = 0x70,
ooc_cfg = 0x80) cf. oon_stat (oob_cfg = 0x7
1, ooc_cfg = 0x81) cg. oon_err_int (oob_err_i
(nt = 0x72, err_int = 0x82) ch. oon_err_int_en (oob_er
r_int_en = 0x73, err_int_en =
0x83) ci. oon_dmr (oob_dmr = 0x74,
ooc_dmr = 0x84) cj. oon_subst (oob_subst = 0)
x75, ooc_subst = 0x85) ck. oon_cdp (oob_cdp = 0x76,
ooc_cdp = 0x86) cl. oon_len (oob_len = 0x77,
ooc_len = 0x8 cm. oon_said (oob_said = 0x7
8, ooc_said = 0x88) cn. oon_tile (oob_tile = 0x7
9, ooc_tile = 0x89) Pixel organizer register co. po_cfg cp. po_stat cq. po_err_int cr. po_err_int_en cs. po_dmr ct. po_subst cu. po_cdp cv. po_len cw. po_said cx. po_idr cy. po_muv_valid cz. po_muv Main data path register da. mdp_cfg All bits are reset to 0.
Is db. mdp_stat All bits are reset to zero. dc. mdp_err_int All bits are reset to zero. dd. mdp_err_int_en All bits are reset to zero. de. mdp_test All bits reset to 0
Is set. df mdp_op1 All bits reset to 0
Is done. dg mdp_op2 All bits reset to 0
Is done. dh mdp_por All bits reset to 0
Is done. di mdp_bi All bits are reset to 0.
It is. The mdp_bi register contains various registers for various modes.
Used for dj mdp_bm All bits reset to 0
It is. The mdp_bm register is different for different modes.
Used for dk mdp_len All bits reset to 0
Be done JPEG encoder register dl jc_cfg dm jc_stat dn jc_err_int do jc_err_int_en dp jc_rsi dq jc_decode dr jc_res ds jc_table_sel Result organizer register dtro_cfg duro_stat dv ro_err_int dw ro_err_int_en dx ro_dmr dy ro_subst dz ro_cdp ea ro_len eb ro_sa ecro_idr ed ro_vbase ee ro_cut ef ro_lmt Alias of PCI configuration space PC
I configuration space is 256 bytes, PC
I is a block of registers defined by
Configure PCI devices,
I am allowed to read the condition. It is PC
Accessed using the I configuration cycle
It is. The registers also read the internal memory of the coprocessor.
Is mirrored in the dedicated
It can be read using normal memory cycles. EIC
Configuration space format implemented in
The mat is shown in Table 1.141.1. Table 1.141.1 Spatial level of coprocessor PCI configuration
I-out Reserved registers and reserved registers in implemented registers
Returns 0 for reads and 0 for writes.
Has no effect. Configuration in the range 0x40-0xff
Regulation space addresses are also reserved. Ben
Configuration registers specific to the
Absent. eg vendor ID This register is read-only. Ben of CISRA
The header ID is 0x11AC. eh Device ID This register is read-only. Coprocessor data
The device ID is 0x0001. Device ID fee
The field is divided into two 8-bit fields:
The most significant 8 bits are numbers (0x) indicating the characteristics of the device.
0 is a coprocessor) and the least significant 8 bits are
Version number (0x1 is the version of the coprocessor)
). ei Command register Table 1.142 defines the fields of the command register.
Show. All unreserved bits in this register
Can read / write. After reset,
The register is set to 0x0000. ej Status register Status register file
The definition of the field is shown in Table 1.143. Reading this register
Imprinting is as usual. Some registers in this register
The set is read-only. Other bits are coprocessor
Set to 1 by the server only, 0 by the host only
Reset (except in test mode). The host
Reset by writing 1 to bit; write 0
The meaning does not make sense. After reset, this register
It is set to 0x0280. ek revision ID This is a read-only register
It is. The initial revision ID of the coprocessor is 0x01
It is. el class code This is a read-only
It is a register. Coprocessor is defined by PCISIG
This register is 0xF
Set to F0000. em Cache line size This is the system cache line size in 32-bit words.
This is a readable / writable register that determines the in-size.
This is because the coprocessor uses memory read lines and memory
Determined when using the double read command. Copro
Sessa supports values from 0 to 255 in this register.
To 0 in this register is the memory read line.
Disables the format of memory and memory multiplex reading. this
The register is set to 0x00 at reset. en Delay timer This register is used by the CPU for all PCI processing.
Readable and writable registers that specify the maximum number of clocks
It is. The coprocessor sets 0 to 2 in this register.
Supports 55 values. This register is reset
Is set to 0x00. eo header type This read-only register is set to 0x00
You. This means that the coprocessor has a type 0 layout
Means using configuration space
You. ep base address This readable and writable register is the internal register of the coprocessor.
Memory, internal memory, local memory, and general-purpose interface.
Used to place faces in the host memory map
Can be. 64 MB of coprocessor resources
(Not all are used) and therefore
Only the first 6 bits of the register can be written.
The remaining bits are all hardwired to zero.
The lower 4 bits of this register are read-only control
And these are also connected to zero. this child
Means that registers refer to memory space,
The processor can be mapped anywhere in the host's 32-bit space.
And coprocessor resources are targeted
Sometimes it means that prefetching is not possible. eq Subsystem vendor ID This read-only register is implemented by the host on the system.
To identify the PCI board vendor
(Component mounted on PCI interface on board
Component vendors). The contents of this register are
EIC configuration serial port at reset
Loaded using the er Subsystem ID This read-only register is implemented by the host in the system.
PCI boards that have been assigned. This Regis
Data is reset when reset
Loaded using serial port. This mechanism
Required for board function or configuration
External information and read from host
Enable. es Interrupt line These registers are readable and writable by the system software.
Enable recording of interrupt line routing information
Used by interrupt service software
Can access. Has no effect on the processing in the coprocessor
Do not give. This register is set to 0x00 at reset.
Is set. et interrupt pin This read-only register is hardwired to 0x01
Have been. This means that the coprocessor is
Indicates that the a_1 interrupt pin is to be used. eu Min_Gnt This read-only register is the one requested by the coprocessor.
The burst period length in units of / 4 microsecond is indicated to the host.
The optimal value for this register has not yet been determined. ev Max_Lat This read-only register is in 1/4 microsecond units
Of the PCI bus required by the coprocessor
Indicate the maximum roll delay to the host. Optimal for this register
The value has not been determined yet. 1.1.4 Internal memory map In this section, the pre-
Details of the objects that occur in the rule data area.
State. 1.1.5 Memory word field a eic_ptp

【図面の簡単な説明】[Brief description of the drawings]

【図1】 ホストコンピュータ環境内のラスタ画像コプ
ロセッサの動作を示す図
FIG. 1 illustrates the operation of a raster image coprocessor in a host computer environment.

【図2】 図1のラスタ画像コプロセッサをより詳細に
示した図
FIG. 2 shows the raster image coprocessor of FIG. 1 in more detail;

【図3】 ラスタ画像コプロセッサのメモリマップを示
す図
FIG. 3 is a diagram showing a memory map of a raster image coprocessor.

【図4】 CPU,命令キュー、命令オペランド、共有
メモリ中の結果、コプロセッサ間の関係を示す図
FIG. 4 is a diagram showing a relationship among a CPU, an instruction queue, instruction operands, a result in a shared memory, and a coprocessor;

【図5】 命令生成部、メモリ管理部、キュー管理部、
コプロセッサ間の関係を示す図
FIG. 5 shows an instruction generation unit, a memory management unit, a queue management unit,
Diagram showing relationships between coprocessors

【図6】 命令をペンディング命令キューから読み込
み、終了命令キューに配置するグラフィックスコプロセ
ッサの動作を示す図
FIG. 6 is a diagram illustrating an operation of a graphics coprocessor that reads an instruction from a pending instruction queue and arranges the instruction in an end instruction queue.

【図7】 命令キューの固定長巡回バッファ実装を示
し、バッファが溢れるまで待機しする必要性を説明する
FIG. 7 illustrates a fixed-length circular buffer implementation of an instruction queue and illustrates the need to wait until the buffer overflows.

【図8】 コプロセッサにおいて用いられる命令実行ス
トリームを示す図
FIG. 8 is a diagram showing an instruction execution stream used in a coprocessor.

【図9】 命令実行フローチャート、FIG. 9 is an instruction execution flowchart,

【図10】 コプロセッサにおいて用いられる標準命令
ワードフォーマットを示す図
FIG. 10 is a diagram showing a standard instruction word format used in a coprocessor.

【図11】 標準命令の命令ワードフィールドを示す図FIG. 11 is a diagram showing an instruction word field of a standard instruction.

【図12】 標準命令のデータワードフィールドを示す
FIG. 12 shows a data word field of a standard instruction.

【図13】 図2の命令制御部を模式的に示す図FIG. 13 is a diagram schematically showing the instruction control unit in FIG. 2;

【図14】 図13の実行制御部をより詳細に示した図FIG. 14 is a diagram showing the execution control unit of FIG. 13 in more detail;

【図15】 命令制御部の状態遷移図FIG. 15 is a state transition diagram of the instruction control unit.

【図16】 図13の命令復号部を示す図FIG. 16 is a diagram illustrating an instruction decoding unit in FIG. 13;

【図17】 図16の命令シーケンサをより詳細に示し
た図
17 is a diagram showing the instruction sequencer of FIG. 16 in more detail;

【図18】 図16のIDシーケンサの状態遷移図18 is a state transition diagram of the ID sequencer in FIG.

【図19】 図13のプレフェッチバッファ制御部をよ
り詳細に示した図
FIG. 19 is a diagram showing the prefetch buffer control unit in FIG. 13 in more detail;

【図20】 コプロセッサで用いられるレジスタ記憶と
モジュール間関連の標準形式を示す図
FIG. 20 is a diagram showing a standard format of register storage and inter-module relations used in a coprocessor.

【図21】 コプロセッサにおいて用いられる制御バス
処理のフォーマットを示す図
FIG. 21 is a diagram showing a format of control bus processing used in the coprocessor.

【図22】 コプロセッサの一部内のデータフローを示
す図
FIG. 22 is a diagram showing a data flow in a part of the coprocessor.

【図23】 コプロセッサにおいて用いられるさまざま
なデータ再フォーマット例を示す図
FIG. 23 shows examples of various data reformatting used in a coprocessor.

【図24】 コプロセッサにおいて用いられるさまざま
なデータ再フォーマット例を示す図
FIG. 24 illustrates various data reformatting examples used in the coprocessor.

【図25】 コプロセッサにおいて用いられるさまざま
なデータ再フォーマット例を示す図
FIG. 25 illustrates various data reformatting examples used in a coprocessor.

【図26】 コプロセッサにおいて用いられるさまざま
なデータ再フォーマット例を示す図
FIG. 26 illustrates various data reformatting examples used in the coprocessor.

【図27】 コプロセッサにおいて用いられるさまざま
なデータ再フォーマット例を示す図
FIG. 27 illustrates various data reformatting examples used in the coprocessor.

【図28】 コプロセッサにおいて用いられるさまざま
なデータ再フォーマット例を示す図
FIG. 28 illustrates various data reformatting examples used in the coprocessor.

【図29】 コプロセッサにおいて用いられるさまざま
なデータ再フォーマット例を示す図
FIG. 29 is a diagram showing various data reformatting examples used in the coprocessor.

【図30】 コプロセッサにおいて実行されるフォーマ
ット変換を示す図
FIG. 30 is a diagram showing a format conversion performed in the coprocessor.

【図31】 コプロセッサにおいて実行されるフォーマ
ット変換を示す図
FIG. 31 is a diagram illustrating format conversion performed in a coprocessor.

【図32】 コプロセッサにおいて実行される入力デー
タ変換処理を示す図
FIG. 32 is a diagram showing input data conversion processing executed in the coprocessor.

【図33】 コプロセッサにおいて実行されるさまざま
なデータ変換を示す図
FIG. 33 shows various data transformations performed in the coprocessor.

【図34】 コプロセッサにおいて実行されるさまざま
なデータ変換を示す図
FIG. 34 illustrates various data transformations performed in the coprocessor.

【図35】 コプロセッサにおいて実行されるさまざま
なデータ変換を示す図
FIG. 35 illustrates various data transformations performed in the coprocessor.

【図36】 コプロセッサにおいて実行されるさまざま
なデータ変換を示す図
FIG. 36 illustrates various data transformations performed in the coprocessor.

【図37】 コプロセッサにおいて実行されるさまざま
なデータ変換を示す図
FIG. 37 illustrates various data transformations performed in the coprocessor.

【図38】 コプロセッサにおいて実行されるさまざま
なデータ変換を示す図
FIG. 38 illustrates various data conversions performed in the coprocessor.

【図39】 コプロセッサにおいて実行されるさまざま
なデータ変換を示す図
FIG. 39 illustrates various data conversions performed in the coprocessor.

【図40】 コプロセッサにおいて実行されるさまざま
なデータ変換を示す図
FIG. 40 illustrates various data transformations performed in the coprocessor.

【図41】 コプロセッサにおいて実行されるさまざま
なデータ変換を示す図
FIG. 41 illustrates various data conversions performed in the coprocessor.

【図42】 コプロセッサにおいて実行されるさまざま
な内部から出力データ変換を示す図
FIG. 42 illustrates various internal to output data conversions performed in the coprocessor.

【図43】 コプロセッサにおいて実行されるさまざま
なデータ変換例を示す図
FIG. 43 is a diagram showing various data conversion examples executed in the coprocessor.

【図44】 コプロセッサにおいて実行されるさまざま
なデータ変換例を示す図
FIG. 44 is a diagram showing various data conversion examples executed in the coprocessor.

【図45】 コプロセッサにおいて実行されるさまざま
なデータ変換例を示す図
FIG. 45 is a diagram showing various data conversion examples executed in the coprocessor.

【図46】 コプロセッサにおいて実行されるさまざま
なデータ変換例を示す図
FIG. 46 is a diagram showing various data conversion examples executed in the coprocessor.

【図47】 コプロセッサにおいて実行されるさまざま
なデータ変換例を示す図
FIG. 47 is a diagram showing various data conversion examples executed in the coprocessor.

【図48】 どのデータ変換が用いられるべきかを決定
する内部レジスタで用いられるさまざまなフィールドを
示す図
FIG. 48 illustrates various fields used in internal registers to determine which data conversion is to be used.

【図49】 データ正規化を用いるグラフィックスサブ
システムのブロック図
FIG. 49 is a block diagram of a graphics subsystem using data normalization.

【図50】 データ正規化装置の回路図FIG. 50 is a circuit diagram of a data normalization device.

【図51】 合成処理において実行されるピクセル処理
を示す図
FIG. 51 is a diagram showing pixel processing performed in the synthesis processing.

【図52】 合成処理のための命令ワードフォーマット
を示す図
FIG. 52 is a diagram showing an instruction word format for a combining process;

【図53】 合成処理のためのデータワードフォーマッ
トを示す図
FIG. 53 is a view showing a data word format for a combining process;

【図54】 タイル処理のための命令ワードフォーマッ
トを示す図
FIG. 54 shows an instruction word format for tile processing.

【図55】 画像に対するタイル命令の動作を示す図FIG. 55 is a view showing the operation of a tile instruction for an image.

【図56】 色値を再マッピングするための色区間/区
間内位置テーブルの利用処理を示す図
FIG. 56 is a diagram showing use processing of a color section / in-section position table for remapping color values;

【図57】 コプロセッサのMUVバッファ内の区間/
区間内位置テーブルの格納形式を示す図
FIG. 57. Sections in MUV buffer of coprocessor /
Diagram showing the storage format of the section position table

【図58】 コプロセッサにおいて実行される補間を用
いた色変換処理を示す図
FIG. 58 is a diagram showing a color conversion process using interpolation executed in the coprocessor.

【図59】 コプロセッサにおいて実行されるエッジで
の色変換処理の改善処理を示す図
FIG. 59 is a diagram showing an improvement process of a color conversion process at an edge executed in the coprocessor.

【図60】 コプロセッサにおいて実行される1出力色
のための色空間変換処理を示す図
FIG. 60 is a diagram showing a color space conversion process for one output color executed in the coprocessor.

【図61】 単一色出力色空間変換を用いたときのコプ
ロセッサのキャッシュ内でのメモリ格納を示す図
FIG. 61 illustrates memory storage in a cache of a coprocessor when using single color output color space conversion.

【図62】 複数色空間変換で用いられる手法を示す図FIG. 62 is a diagram showing a technique used in multiple color space conversion.

【図63】 複数色空間変換処理において用いられるキ
ャッシュのためのアドレス再マッピング処理を示す図
FIG. 63 is a diagram showing an address remapping process for a cache used in a multiple color space conversion process;

【図64】 色空間変換命令における命令ワードフォー
マットを示す図
FIG. 64 is a diagram showing an instruction word format in a color space conversion instruction.

【図65】 複数色変換手法を示す図FIG. 65 is a diagram showing a multiple color conversion method.

【図66】 コプロセッサで実行されるJPEG変換処
理でのMCUの生成を説明する図
FIG. 66 is an exemplary view for explaining generation of an MCU in JPEG conversion processing executed by a coprocessor;

【図67】 コプロセッサで実行されるJPEG変換処
理でのMCUの生成を説明する図
FIG. 67 is a view for explaining generation of an MCU in JPEG conversion processing executed by the coprocessor.

【図68】 コプロセッサのJPEG符号化部の構造を
示す図
FIG. 68 is a view showing the structure of a JPEG encoding unit of the coprocessor.

【図69】 図68の量子化部をより詳細に示す図FIG. 69 is a diagram showing the quantization unit of FIG. 68 in more detail;

【図70】 図68のハフマン符号化部をより詳細に示
す図
FIG. 70 is a diagram showing the Huffman encoding unit of FIG. 68 in more detail;

【図71】 ハフマン符号化部と復号部とを示す図FIG. 71 is a diagram showing a Huffman encoding unit and a decoding unit;

【図72】 ハフマン符号化部と復号部とを示す図FIG. 72 is a diagram showing a Huffman encoding unit and a decoding unit;

【図73】 コプロセッサで用いられるJPEGデータ
の削除・制約処理を説明する図
FIG. 73 is a view for explaining JPEG data deletion / constraint processing used in the coprocessor.

【図74】 コプロセッサで用いられるJPEGデータ
の削除・制約処理を説明する図
FIG. 74 is a view for explaining deletion / constraint processing of JPEG data used in the coprocessor.

【図75】 コプロセッサで用いられるJPEGデータ
の削除・制約処理を説明する図
FIG. 75 is a view for explaining JPEG data deletion / constraint processing used in the coprocessor.

【図76】 JPEG命令の命令ワードフォーマットを
示す図
FIG. 76 shows an instruction word format of a JPEG instruction.

【図77】 一般の離散コサイン変換装置(従来例)の
ブロック図
FIG. 77 is a block diagram of a general discrete cosine transform device (conventional example);

【図78】 従来例のDCT装置の算術データパスを示
す図
FIG. 78 is a diagram showing an arithmetic data path of a DCT device of a conventional example.

【図79】 コプロセッサで用いられるDCT装置のブ
ロック図
FIG. 79 is a block diagram of a DCT device used in a coprocessor.

【図80】 図79の算術回路をより詳細に示すブロッ
ク図
FIG. 80 is a block diagram showing the arithmetic circuit of FIG. 79 in more detail;

【図81】 図79のDCT装置の算術データパスを示
す図
FIG. 81 is a view showing an arithmetic data path of the DCT device of FIG. 79;

【図82】 JPEGフォーマットのように符号化され
ていないビットフィールド(バイト整列されているもの
とされていないもの)がインタリーブされた代表的なハ
フマン符号化データを示す図
FIG. 82 is a diagram showing typical Huffman encoded data in which bit fields that are not encoded as in the JPEG format (ones that are not byte-aligned) are interleaved.

【図83】 図84のJPEGデータのハフマン復号部
の全体の構造をより詳細に示した図
FIG. 83 is a diagram showing the overall structure of the Huffman decoding unit for JPEG data in FIG. 84 in more detail;

【図84】 JPEGデータのハフマン復号部の全体の
構造を示す図
FIG. 84 is a view showing the overall structure of a Huffman decoding unit for JPEG data

【図85】 バイト整列された符号化されていないビッ
トフィールドを入力データから削除するストリッパブロ
ック中のデータ処理を示し、ストリッパから出力される
データに対応するタグ符号の例をも示す図
FIG. 85 shows data processing in a stripper block for removing a byte-aligned uncoded bit field from input data, and also shows an example of a tag code corresponding to data output from the stripper.

【図86】 データプレシフタの構成とデータフローを
示す図
FIG. 86 is a view showing the configuration and data flow of a data pre-shifter

【図87】 図81の復号部の制御ロジックを示す図FIG. 87 shows a control logic of the decoding unit in FIG. 81.

【図88】 マーカプレシフタの構成とデータフローを
示す図
FIG. 88 is a diagram showing the configuration and data flow of a marker pre-shifter.

【図89】 JPEG符号化においてハフマン符号値を
復号する組み合わせ回路のブロック図、
FIG. 89 is a block diagram of a combination circuit for decoding a Huffman code value in JPEG encoding;

【図90】 パディング領域の概念とパディングビット
の復号部のブロック図
FIG. 90 is a block diagram of the concept of a padding area and a padding bit decoding unit.

【図91】 復号部から出力され、コプロセッサにおい
て用いられるデータフォーマットの例を示す図
Fig. 91 is a diagram illustrating an example of a data format output from a decoding unit and used in a coprocessor.

【図92】 画像変換命令において用いられる手法を示
す図
FIG. 92 is a diagram showing a technique used in an image conversion instruction.

【図93】 画像変換命令における命令ワードフォーマ
ットを示す図
FIG. 93 shows an instruction word format in an image conversion instruction.

【図94】 コプロセッサで用いられる画像変換カーネ
ルのフォーマットを示す図
FIG. 94 is a diagram showing a format of an image conversion kernel used in the coprocessor.

【図95】 コプロセッサで用いられる画像変換カーネ
ルのフォーマットを示す図
FIG. 95 is a diagram showing a format of an image conversion kernel used in the coprocessor.

【図96】 コプロセッサで用いられる画像変換のため
のインデックステーブルの利用処理を示す図
FIG. 96 is a diagram showing processing for using an index table for image conversion used in the coprocessor.

【図97】 変換や畳込みで用いる命令のためのデータ
フィールドフォーマットを示す図、
FIG. 97 is a view showing a data field format for an instruction used in conversion or convolution;

【図98】 命令ワードのbpフィールドの説明図FIG. 98 is an explanatory diagram of a bp field of an instruction word.

【図99】 コプロセッサで用いられる畳込み処理を示
す図
FIG. 99 shows a convolution process used in the coprocessor.

【図100】 コプロセッサで用いられる畳込み命令の
命令ワードフォーマット図
FIG. 100 is an instruction word format diagram of a convolution instruction used in a coprocessor.

【図101】 コプロセッサで用いられる行列乗算の命
令ワードフォーマット図、
FIG. 101 is an instruction word format diagram of matrix multiplication used in the coprocessor,

【図102】 コプロセッサで用いられる階層的画像操
作処理を示す図
FIG. 102 is a view showing a hierarchical image manipulation process used in the coprocessor.

【図103】 コプロセッサで用いられる階層的画像操
作処理を示す図
FIG. 103 is a view showing a hierarchical image operation process used in the coprocessor.

【図104】 コプロセッサで用いられる階層的画像操
作処理を示す図
FIG. 104 is a view showing a hierarchical image manipulation process used in the coprocessor.

【図105】 コプロセッサで用いられる階層的画像操
作処理を示す図
FIG. 105 is a view showing a hierarchical image operation process used in the coprocessor.

【図106】 階層的画像命令での命令ワード符号を示
す図
FIG. 106 is a view showing an instruction word code in a hierarchical image instruction.

【図107】 コプロセッサで用いられるフロー制御命
令の命令ワード符号を示す図
FIG. 107 is a diagram showing an instruction word code of a flow control instruction used in the coprocessor.

【図108】 ピクセルオーガナイザをより詳細に示す
FIG. 108 shows the pixel organizer in more detail.

【図109】 ピクセルオーガナイザにおけるオペラン
ドフェッチ部をより詳細に示す図
FIG. 109 is a diagram showing the operand fetch unit in the pixel organizer in more detail;

【図110】 コプロセッサで用いられる種々の格納フ
ォーマットを示す図
FIG. 110 shows various storage formats used in the coprocessor.

【図111】 コプロセッサで用いられる種々の格納フ
ォーマットを示す図
FIG. 111 shows various storage formats used in the coprocessor.

【図112】 コプロセッサで用いられる種々の格納フ
ォーマットを示す図
FIG. 112 shows various storage formats used in the coprocessor.

【図113】 コプロセッサで用いられる種々の格納フ
ォーマットを示す図
FIG. 113 shows various storage formats used in the coprocessor.

【図114】 コプロセッサで用いられる種々の格納フ
ォーマットを示す図
FIG. 114 shows various storage formats used in the coprocessor.

【図115】 コプロセッサのピクセルオーガナイザに
おけるMUVアドレス生成部をより詳細に示す図
FIG. 115 is a diagram showing the MUV address generator in the pixel organizer of the coprocessor in more detail;

【図116】 コプロセッサで用いられる多重値(MU
V)バッファのブロック図
FIG. 116 shows a multiple value (MU) used in the coprocessor.
V) Block diagram of buffer

【図117】 図116の符号化器の構造を示す図117 shows the structure of the encoder in FIG. 116.

【図118】 図116の復号器の構造を示す図118 shows the structure of the decoder in FIG. 116.

【図119】 JPEGモード(ピクセル分解)におい
て読み出しアドレスを生成する図116のアドレス生成
部の構造を示す図
FIG. 119 is a view showing the structure of the address generation unit shown in FIG. 116 for generating a read address in the JPEG mode (pixel decomposition).

【図120】 JPEGモード(ピクセル復元)におい
て読み出しアドレスを生成する図116のアドレス生成
部の構造を示す図
FIG. 120 is a diagram showing the structure of the address generation unit in FIG. 116 that generates a read address in the JPEG mode (pixel restoration).

【図121】 図116の記憶装置を備えるメモリモジ
ュールの構成を示す図
FIG. 121 illustrates a configuration of a memory module including the storage device in FIG. 116.

【図122】 読み出しアドレスをメモリモジュールに
多重化する回路の構造を示す図
FIG. 122 is a diagram showing a structure of a circuit for multiplexing a read address in a memory module;

【図123】 単一ルックアップテーブルモードで動作
するバッファ内にルックアップテーブルエントリがどの
ように格納されるかを示す図
FIG. 123 illustrates how a lookup table entry is stored in a buffer operating in a single lookup table mode.

【図124】 多重ルックアップテーブルモードで動作
するバッファ内にルックアップテーブルエントリがどの
ように格納されるかを示す図
FIG. 124 illustrates how a lookup table entry is stored in a buffer operating in a multiple lookup table mode.

【図125】 JPEGモード(ピクセル分解)で動作
するバッファ内にピクセルがどのように格納されるかを
示す図
FIG. 125 shows how pixels are stored in a buffer operating in JPEG mode (pixel decomposition)

【図126】 JPEGモード(ピクセル復元)で動作
するバッファから単一カラーがどのように格納されるか
を示す図
FIG. 126 shows how a single color is stored from a buffer operating in JPEG mode (pixel recovery)

【図127】 コプロセッサの結果オーガナイザの構造
をより詳細に示す図
FIG. 127 shows the structure of the result organizer of the coprocessor in more detail.

【図128】 コプロセッサのオペランドオーガナイザ
の構造をより詳細に示す図
FIG. 128 shows the structure of the operand organizer of the coprocessor in more detail.

【図129】 コプロセッサにおいて用いられる主デー
タパス部のためのコンピュータアーキテクチャのブロッ
ク図
Fig. 129 is a block diagram of a computer architecture for a main data path unit used in the coprocessor.

【図130】 更なる処理のために入力データオブジェ
クトを受け取り、格納し、再配列するための入力インタ
ーフェースのブロック図
FIG. 130 is a block diagram of an input interface for receiving, storing, and rearranging input data objects for further processing.

【図131】 入力データオブジェクトに対して算術演
算を実行するための画像データプロセッサのブロック図
FIG. 131 is a block diagram of an image data processor for performing arithmetic operations on input data objects.

【図132】 入力データオブジェクトの1つのチャネ
ルに対して算術演算を実行するためのカラーチャネルプ
ロセッサのブロック図
FIG. 132 is a block diagram of a color channel processor for performing arithmetic operations on one channel of an input data object.

【図133】 カラーチャネルプロセッサにおける多機
能ブロックのブロック図
FIG. 133 is a block diagram of a multi-function block in the color channel processor.

【図134】 合成動作のためのブロック図FIG. 134 is a block diagram for a combining operation.

【図135】 スキャンラインの逆変換を示す図FIG. 135 is a view showing an inverse scan line conversion;

【図136】 指定されたピクセルにおける値を計算す
るために必要なステップのブロック図
FIG. 136 is a block diagram of the steps required to calculate a value at a specified pixel.

【図137】 画像変換エンジンのブロック図Fig. 137 is a block diagram of an image conversion engine.

【図138】 カーネルデスクリップションにおける2
つのフォーマットを示す図
FIG. 138. Kernel Descriptor 2
Diagram showing two formats

【図139】 bpフィールドの定義と解釈を示す図Fig. 139 is a diagram showing the definition and interpretation of a bp field.

【図140】 行列乗算を実行する乗算・加算部のブロ
ック図
FIG. 140 is a block diagram of a multiplication / addition unit that performs matrix multiplication

【図141】 コプロセッサでのキャッシュ及びキャッ
シュ制御部における制御、アドレス及びデータフローを
示す図
FIG. 141 is a diagram showing a control, an address, and a data flow in a cache and a cache control unit in a coprocessor.

【図142】 キャッシュのメモリ構成を示す図FIG. 142 is a diagram showing a memory configuration of a cache;

【図143】 コプロセッサにおけるキャッシュ制御部
のためのアドレスフォーマットを示す図
FIG. 143 is a diagram showing an address format for a cache control unit in the coprocessor.

【図144】 カラーチャネルプロセッサにおける多機
能ブロックのブロック図
FIG. 144 is a block diagram of a multi-function block in the color channel processor.

【図145】 図144のキャッシュ及びキャッシュコ
ントローラのコプロセッサ入力インターフェーススイッ
チを示す図
FIG. 145 illustrates a coprocessor input interface switch of the cache and cache controller of FIG. 144.

【図146】 主アドレス及びデータパスを示すコプロ
セッサの4ポートダイナミックローカルメモリ制御部を
示す図
FIG. 146 is a diagram showing a 4-port dynamic local memory control unit of the coprocessor showing a main address and a data path.

【図147】 図146の制御部における状態機構図FIG. 147 is a state mechanism diagram of the control unit in FIG. 146;

【図148】 図146の仲裁部における機能を詳細に
リストした擬似コードを示す図
FIG. 148 shows a pseudo code listing in detail the functions in the arbitration unit of FIG. 146

【図149】 図146において用いられる要求者プラ
イオリティビットの構造および用語を示す図
FIG. 149 is a diagram showing the structure and terminology of a requester priority bit used in FIG. 146.

【図150】 コプロセッサにおける外部インターフェ
ース制御部をより詳細に示す図
FIG. 150 is a diagram showing the external interface control unit in the coprocessor in more detail.

【図151】 コプロセッサで用いられる物理アドレス
へのマッピング処理又は物理アドレスからのマッピング
処理を示す図
FIG. 151 is a diagram showing a mapping process to a physical address or a mapping process from a physical address used in the coprocessor.

【図152】 コプロセッサで用いられる物理アドレス
へのマッピング処理又は物理アドレスからのマッピング
処理を示す図
FIG. 152 is a diagram showing a mapping process to a physical address or a mapping process from a physical address used in the coprocessor.

【図153】 コプロセッサで用いられる物理アドレス
へのマッピング処理又は物理アドレスからのマッピング
処理を示す図
FIG. 153 is a diagram showing a mapping process to a physical address or a mapping process from a physical address used in the coprocessor.

【図154】 コプロセッサで用いられる物理アドレス
へのマッピング処理又は物理アドレスからのマッピング
処理を示す図
FIG. 154 is a diagram illustrating mapping processing to a physical address or mapping processing from a physical address used in the coprocessor.

【図155】 図150におけるIBus受信部をより
詳細に示す図
155 is a diagram showing the IBus receiving unit in FIG. 150 in more detail;

【図156】 図2におけるRBus受信部をより詳細
に示す図
156 is a diagram showing the RBus receiving unit in FIG. 2 in more detail;

【図157】 図150におけるメモリ管理部をより詳
細に示す図
157 is a diagram showing the memory management unit in FIG. 150 in more detail;

【図158】 図2における周辺インターフェース制御
部をより詳細に示す図
FIG. 158 is a diagram showing the peripheral interface control unit in FIG. 2 in more detail;

───────────────────────────────────────────────────── フロントページの続き (71)出願人 000001007 キヤノン株式会社 東京都大田区下丸子3丁目30番2号 (72)発明者 トマツ トーマス プロコプ オーストラリア国 2150 ニューサウスウ ェールズ州 パラマッティ, カンベル ストリート 13ディ/15 (72)発明者 トレバー ロバート エルボーン オーストラリア国 2094 ニューサウスウ ェールズ州 フェアライト, ヒルトップ クレセント 5/54 (72)発明者 マーク プルバー オーストラリア国 2042 ニューサウスウ ェールズ州 エンモア, トラファルガー ストリート 15 ────────────────────────────────────────────────── ─── Continuing from the front page (71) Applicant 000001007 Canon Inc. 3-30-2 Shimomaruko, Ota-ku, Tokyo (72) Inventor Tomas Thomas Prokop Australia 2150 Paramatti, New South Wales 13 Campbell Street / 15 (72) Inventor Trevor Robert Elbourne Australia 2094 Fairlight, Hilltop Crescent, New South Wales 5/54 (72) Inventor Mark Pullbar Australia 2042 Enmore, New South Wales Trafalgar Street 15

Claims (25)

【特許請求の範囲】[Claims] 【請求項1】 可変長の非符号化ビットフィールドでイ
ンターリーブされた複数の可変長コードにより符号化さ
れ、複数の固定長の非符号化フィールドを有する複数の
データブロックの復号化装置であって、 複数の固定長非符号化フィールドを除去し、前記可変長
非符号化ビットフィールドと前記可変長の非符号化ビッ
トフィールドでインターリーブされた前記複数の可変長
コードと、複数のデータブロック中の前記複数の固定長
非符号化フィールドの位置を示す複数の位置信号とを出
力する前処理部と、 前記固定長非符号化フィールドの間に入力される可変長
符号化データの復号化データが、前記固定長非符号化フ
ィールドに対応する前記位置信号の間に復号化装置から
出力されるように、前記位置信号を復号化されるデータ
と同期させて外部装置へ送出する手段とを含むことを特
徴とする復号化装置。
An apparatus for decoding a plurality of data blocks encoded with a plurality of variable length codes interleaved with variable length uncoded bit fields and having a plurality of fixed length uncoded fields, Removing a plurality of fixed-length uncoded fields, the plurality of variable-length codes interleaved with the variable-length uncoded bit fields and the variable-length uncoded bit fields, and the plurality of data blocks in a plurality of data blocks; A preprocessing unit that outputs a plurality of position signals indicating the positions of the fixed-length uncoded fields, and the decoded data of the variable-length coded data that is input between the fixed-length uncoded fields, Synchronizing the position signal with the data to be decoded, so as to be output from the decoding device during the position signal corresponding to the long uncoded field Decoding apparatus characterized by comprising a means for delivering the part device.
【請求項2】 第1のバレルシフタセットと第1レジス
タを有し、前記可変長の非符号化ビットフィールドでイ
ンターリーブされた前記複数の可変長コードを処理する
第1処理部と、 第2のバレルシフタセットと第2レジスタを有し、複数
のデータブロック中の前記複数の固定長非符号化フィー
ルドの位置を示す複数の位置信号を処理する第2処理部
とを更に有し、前記第1および第2処理部が同一であ
り、前記第1、第2バレルシフタセットの出力と前記第
1、第2処理部が同じ制御信号を受信する請求項1記載
の復号化装置。
2. A first processing unit having a first barrel shifter set and a first register, the first processing unit processing the plurality of variable length codes interleaved with the variable length uncoded bit field, and a second barrel shifter. A second processing unit that has a set and a second register, and that processes a plurality of position signals indicating positions of the plurality of fixed-length uncoded fields in a plurality of data blocks; The decoding device according to claim 1, wherein two processing units are the same, and outputs of the first and second barrel shifter sets and the first and second processing units receive the same control signal.
【請求項3】 前記固定長非符号化フィールドの位置を
示す位置信号を処理する前記第2処理部の出力が、デー
タレジスタに保管されたデータから復号化時に除去され
る非符号化可変長フィールドのサイズ決定に用いられる
ことを特徴とする請求項2記載の復号化装置。
3. An uncoded variable-length field, wherein an output of the second processing unit for processing a position signal indicating a position of the fixed-length uncoded field is removed from data stored in a data register at the time of decoding. 3. The decoding device according to claim 2, wherein the decoding device is used for determining the size of the decoding data.
【請求項4】 前記前処理部が、複数の固定長非符号化
フィールドを除去し、前記可変長非符号化ビットフィー
ルドと前記可変長の非符号化ビットフィールドでインタ
ーリーブされた前記複数の可変長コードを、複数の固定
長ビットフィールドからなる複数の固定長コードとし
て、かつ一つの前記固定長ビットフィールドが、前記前
処理フィールドでパス又は除去されたこと、前記前処理
フィールドでパスされたことのいずれかを示すタグを有
し、かつ前記タグは固定長の非符号化フィールドを示す
マーカーの前又は後ろに存在するように出力することを
特徴とする請求項1の復号化装置。
4. The pre-processing unit removes a plurality of fixed-length uncoded fields, and interleaves the plurality of variable-length uncoded bit fields and the plurality of variable-length uncoded bit fields. The code is defined as a plurality of fixed-length codes consisting of a plurality of fixed-length bit fields, and one fixed-length bit field is passed or removed in the pre-processing field, and is passed in the pre-processing field. 2. The decoding apparatus according to claim 1, further comprising a tag indicating any one of the tags, and outputting the tag such that the tag exists before or after a marker indicating a fixed-length uncoded field.
【請求項5】 前記データブロックがハフマン符号化さ
れていることを特徴とする請求項1の復号化装置。
5. The decoding device according to claim 1, wherein said data block is Huffman-coded.
【請求項6】 可変長の非符号化ビットフィールドでイ
ンターリーブされた複数の可変長コードにより符号化さ
れ、複数の固定長の非符号化フィールドを有する複数の
データブロックの復号化方法であって、 複数の固定長非符号化フィールドを除去し、前記可変長
非符号化ビットフィールドと前記可変長の非符号化ビッ
トフィールドでインターリーブされた前記複数の可変長
コードと、複数のデータブロック中の前記複数の固定長
非符号化フィールドの位置を示す複数の位置信号とを出
力する前処理ステップと、 前記固定長非符号化フィールドの間に入力される可変長
符号化データの復号化データが、前記固定長非符号化フ
ィールドに対応する前記位置信号の間に復号化装置から
出力されるように、前記位置信号を復号化されるデータ
と同期させて外部装置へ送出するステップとを含むこと
を特徴とする復号化方法。
6. A method for decoding a plurality of data blocks encoded by a plurality of variable length codes interleaved with variable length uncoded bit fields and having a plurality of fixed length uncoded fields. Removing a plurality of fixed-length uncoded fields, the plurality of variable-length codes interleaved with the variable-length uncoded bit fields and the variable-length uncoded bit fields, and the plurality of data blocks in a plurality of data blocks; A pre-processing step of outputting a plurality of position signals indicating the position of the fixed-length uncoded field, and the decoded data of the variable-length coded data input between the fixed-length uncoded fields, The position signal is synchronized with the data to be decoded so that it is output from the decoding device during the position signal corresponding to the long uncoded field. Decoding method characterized by not including a step of sending to the external device.
【請求項7】 第1のバレルシフタセットと第1レジス
タを有する第1処理部を用いて、前記可変長の非符号化
ビットフィールドでインターリーブされた前記複数の可
変長コードを処理するステップと、 第2のバレルシフタセットと第2レジスタを有する第2
処理部を用いて、複数のデータブロック中の前記複数の
固定長非符号化フィールドの位置を示す複数の位置信号
を処理するステップを更に有し、 前記第1および第2処理部が同一であり、前記第1、第
2バレルシフタセットの出力と前記第1、第2処理部が
同じ制御信号を受信する請求項6記載の復号化方法。
7. Processing the plurality of variable length codes interleaved with the variable length uncoded bit field using a first processing unit having a first barrel shifter set and a first register; Second barrel shifter set having a second register and a second register
Processing a plurality of position signals indicating positions of the plurality of fixed-length uncoded fields in a plurality of data blocks using a processing unit, wherein the first and second processing units are the same. 7. The decoding method according to claim 6, wherein the outputs of the first and second barrel shifter sets and the first and second processing units receive the same control signal.
【請求項8】 前記固定長非符号化フィールドの位置を
示す位置信号を処理する前記第2処理部の出力に応じ
て、データレジスタに保管されたデータから復号化時に
除去される非符号化可変長フィールドのサイズを決定す
るステップを更に有することを特徴とする請求項7記載
の復号化方法。
8. An uncoded variable removed from data stored in a data register at the time of decoding in accordance with an output of the second processing unit which processes a position signal indicating a position of the fixed-length uncoded field. The method of claim 7, further comprising determining a size of the long field.
【請求項9】 前記前処理部ステップにおいて、複数の
固定長非符号化フィールドを除去し、前記可変長非符号
化ビットフィールドと前記可変長の非符号化ビットフィ
ールドでインターリーブされた前記複数の可変長コード
を、複数の固定長ビットフィールドからなる複数の固定
長コードとして、かつ一つの前記固定長ビットフィール
ドが、前記前処理フィールドでパス又は除去されたこ
と、前記前処理フィールドでパスされたことのいずれか
を示すタグを有し、かつ前記タグは固定長の非符号化フ
ィールドを示すマーカーの前又は後ろに存在するように
出力することを特徴とする請求項6記載の復号化方法。
9. The method according to claim 1, wherein in the preprocessing step, a plurality of fixed-length uncoded fields are removed, and the plurality of variable-length uncoded bit fields are interleaved with the variable-length uncoded bit fields. A long code as a plurality of fixed-length codes consisting of a plurality of fixed-length bit fields, and that one fixed-length bit field has been passed or removed in the pre-processing field and has been passed in the pre-processing field. 7. The decoding method according to claim 6, further comprising a tag indicating any one of the following: and outputting the tag such that the tag exists before or after a marker indicating a fixed-length uncoded field.
【請求項10】 前記データブロックがハフマン符号化
されていることを特徴とする請求項6記載の復号化方
法。
10. The decoding method according to claim 6, wherein said data block is Huffman-coded.
【請求項11】 離散コサイン変換(DCT)装置であ
って、転置行列記憶手段と、該転置行列記憶手段と相互
接続され、clocked storage手段を用い
ずにDCT演算を行うための組合せ回路からなる演算回
路を有するDCT装置。
11. A discrete cosine transform (DCT) device, comprising a transposed matrix storage means and a combination circuit interconnected with the transposed matrix storage means for performing a DCT operation without using a clocked storage means. A DCT device having a circuit.
【請求項12】 前記組合せ回路がDCT演算を行うた
めの所定数のステージを有し、該ステージがシーケンシ
ャルに配置されている請求項11のDCT装置。
12. The DCT apparatus according to claim 11, wherein the combination circuit has a predetermined number of stages for performing a DCT operation, and the stages are sequentially arranged.
【請求項13】 前記DCT装置に入力されるデータ
と、前記転置行列記憶手段の出力とを多重化する多重化
手段を有する請求項11記載のDCT装置。
13. The DCT apparatus according to claim 11, further comprising multiplexing means for multiplexing data input to said DCT apparatus and an output of said transposed matrix storage means.
【請求項14】 前記DCT装置の動作を制御する制御
手段を有する請求項11記載のDCT装置。
14. The DCT device according to claim 11, further comprising control means for controlling an operation of the DCT device.
【請求項15】 逆離散コサイン変換(DCT)装置で
あって、 転置行列記憶手段と、 該転置行列記憶手段と相互接続され、clocked
storage手段を用いずにDCT演算を行うための
組合せ回路を主構成要素とする演算回路を有する逆DC
T装置。
15. An inverse discrete cosine transform (DCT) device, comprising: transposed matrix storage means; interconnected with said transposed matrix storage means;
Inverse DC having an arithmetic circuit whose main component is a combinational circuit for performing a DCT operation without using storage means
T device.
【請求項16】 前記組合せ回路が逆DCT演算を行う
ための所定数のステージを有し、該ステージがシーケン
シャルに配置されている請求項15の逆DCT装置。
16. The inverse DCT apparatus according to claim 15, wherein the combination circuit has a predetermined number of stages for performing an inverse DCT operation, and the stages are sequentially arranged.
【請求項17】 前記逆DCT装置に入力されるデータ
と、前記転置行列記憶手段の出力とを多重化する多重化
手段を有する請求項15記載の逆DCT装置。
17. The inverse DCT apparatus according to claim 15, further comprising multiplexing means for multiplexing data input to said inverse DCT apparatus and an output of said transposed matrix storage means.
【請求項18】 前記逆DCT装置の動作を制御する制
御手段を有する請求項15記載の逆DCT装置。
18. The inverse DCT device according to claim 15, further comprising control means for controlling an operation of the inverse DCT device.
【請求項19】 データの離散コサイン変換(DCT)
方法であって、 DCT演算をclocked strage手段無しで
行う組合せ回路を主要構成とする演算回路を用い、入力
データをその第1の方向に合わせてDCT演算するステ
ップと、 DCTされた入力データを前記第1の方向に合わせて前
記組合せ回路と相互接続された転置行列記憶手段に記憶
するステップと、 前記演算回路を用い、前記転置行列記憶手段に記憶され
たデータをその第2の方向に合わせてDCT演算して変
換データを得るステップとを有する方法。
19. A discrete cosine transform (DCT) of the data.
A method for performing a DCT operation on input data in accordance with a first direction by using an operation circuit mainly including a combination circuit that performs a DCT operation without clocked storage means; Storing the data stored in the transposed matrix storage means in the second direction using the arithmetic circuit; and storing the data stored in the transposed matrix storage means in the second direction in accordance with the first direction. DCT operation to obtain transformed data.
【請求項20】 前記DCTがシーケンシャルに配置さ
れた所定数のステージで演算される請求項19記載のD
CT方法。
20. The D according to claim 19, wherein the DCT is calculated in a predetermined number of stages arranged sequentially.
CT method.
【請求項21】 入力されるデータと前記転置行列記憶
手段の出力とを多重化するステップを有する請求項19
記載のDCT方法。
21. The method according to claim 19, further comprising the step of multiplexing input data and an output of said transposed matrix storage means.
The described DCT method.
【請求項22】 逆離散コサイン変換(DCT)方法
であって、 逆DCT演算をclocked strage手段無し
で行う組合せ回路を主要構成とする演算回路を用い、入
力係数をその第1の方向に合わせてDCT演算するステ
ップと、 DCTされた入力係数を前記第1の方向に合わせて前記
組合せ回路と相互接続された転置行列記憶手段に記憶す
るステップと、 前記演算回路を用い、前記転置行列記憶手段に記憶され
た係数をその第2の方向に合わせて逆DCT演算して逆
変換データを得るステップとを有する方法。
22. An inverse discrete cosine transform (DCT) method using an arithmetic circuit mainly composed of a combinational circuit for performing an inverse DCT operation without clocked storage means, and adjusting an input coefficient in the first direction. Performing a DCT operation; storing the input coefficient subjected to the DCT in the transposed matrix storage means interconnected with the combinational circuit in accordance with the first direction; Performing an inverse DCT operation on the stored coefficients according to the second direction to obtain inverse transformed data.
【請求項23】 前記逆DCTがシーケンシャルに配置
された所定数のステージで演算される請求項22記載の
逆DCT方法。
23. The inverse DCT method according to claim 22, wherein the inverse DCT is calculated in a predetermined number of stages arranged sequentially.
【請求項24】 入力されるデータと前記転置行列記憶
手段の出力とを多重化するステップを有する請求項22
記載の逆DCT方法。
24. The method according to claim 22, further comprising the step of multiplexing input data and an output of said transposed matrix storage means.
The described inverse DCT method.
【請求項25】 請求項6〜10および請求項19〜2
4のいずれかに記載の方法をコンピューターが実行可能
なプログラムコードとして記憶する記憶媒体。
25. Claims 6 to 10 and 19 to 2
A storage medium that stores the method according to any one of claims 4 as program code executable by a computer.
JP16941798A 1997-04-30 1998-04-30 Device and method for compression Pending JPH11122116A (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
AUPO6484A AUPO648497A0 (en) 1997-04-30 1997-04-30 A fast dct apparatus
AU6486 1997-04-30
AUPO6486A AUPO648697A0 (en) 1997-04-30 1997-04-30 Decoder of variable length codes
AU6484 1997-04-30

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2005161916A Division JP4101253B2 (en) 1997-04-30 2005-04-27 Compression device and method

Publications (1)

Publication Number Publication Date
JPH11122116A true JPH11122116A (en) 1999-04-30

Family

ID=25645409

Family Applications (2)

Application Number Title Priority Date Filing Date
JP16941798A Pending JPH11122116A (en) 1997-04-30 1998-04-30 Device and method for compression
JP2005161916A Expired - Fee Related JP4101253B2 (en) 1997-04-30 2005-04-27 Compression device and method

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2005161916A Expired - Fee Related JP4101253B2 (en) 1997-04-30 2005-04-27 Compression device and method

Country Status (1)

Country Link
JP (2) JPH11122116A (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6370541B1 (en) 1999-09-21 2002-04-09 International Business Machines Corporation Design and implementation of a client/server framework for federated multi-search and update across heterogeneous datastores
US6466933B1 (en) 1999-09-21 2002-10-15 International Business Machines Corporation Delayed delivery of query results or other data from a federated server to a federated client until such information is needed
US6792416B2 (en) 1999-09-21 2004-09-14 International Business Machines Corporation Managing results of federated searches across heterogeneous datastores with a federated result set cursor object
US7197491B1 (en) 1999-09-21 2007-03-27 International Business Machines Corporation Architecture and implementation of a dynamic RMI server configuration hierarchy to support federated search and update across heterogeneous datastores
US7512588B2 (en) 1999-09-21 2009-03-31 International Business Machines Corporation Architecture to enable search gateways as part of federated search
USRE48845E1 (en) 2002-04-01 2021-12-07 Broadcom Corporation Video decoding system supporting multiple standards

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9418450B2 (en) 2006-08-31 2016-08-16 Ati Technologies Ulc Texture compression techniques
KR102501653B1 (en) * 2015-11-30 2023-02-21 에스케이하이닉스 주식회사 Data transfer device
JP6821183B2 (en) * 2017-02-23 2021-01-27 株式会社シキノハイテック Image decoder

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6370541B1 (en) 1999-09-21 2002-04-09 International Business Machines Corporation Design and implementation of a client/server framework for federated multi-search and update across heterogeneous datastores
US6466933B1 (en) 1999-09-21 2002-10-15 International Business Machines Corporation Delayed delivery of query results or other data from a federated server to a federated client until such information is needed
US6792416B2 (en) 1999-09-21 2004-09-14 International Business Machines Corporation Managing results of federated searches across heterogeneous datastores with a federated result set cursor object
US7197491B1 (en) 1999-09-21 2007-03-27 International Business Machines Corporation Architecture and implementation of a dynamic RMI server configuration hierarchy to support federated search and update across heterogeneous datastores
US7512588B2 (en) 1999-09-21 2009-03-31 International Business Machines Corporation Architecture to enable search gateways as part of federated search
USRE48845E1 (en) 2002-04-01 2021-12-07 Broadcom Corporation Video decoding system supporting multiple standards

Also Published As

Publication number Publication date
JP4101253B2 (en) 2008-06-18
JP2005348410A (en) 2005-12-15

Similar Documents

Publication Publication Date Title
US6349379B2 (en) System for executing instructions having flag for indicating direct or indirect specification of a length of operand data
US6259456B1 (en) Data normalization techniques
US6336180B1 (en) Method, apparatus and system for managing virtual memory with virtual-physical mapping
US6414687B1 (en) Register setting-micro programming system
US6707463B1 (en) Data normalization technique
US6118724A (en) Memory controller architecture
US6289138B1 (en) General image processor
US6237079B1 (en) Coprocessor interface having pending instructions queue and clean-up queue and dynamically allocating memory
JP4101253B2 (en) Compression device and method
US7230633B2 (en) Method and apparatus for image blending
US5860086A (en) Video processor with serialization FIFO
JP3729540B2 (en) Image processing device
KR100291532B1 (en) An information processing system comprising a reconfigurable processing stage
JP4227218B2 (en) Dynamic memory management device and control method thereof
US6822654B1 (en) Memory controller chipset
JP4298006B2 (en) Image processor and image processing method thereof
AU739533B2 (en) Graphics processor architecture
JPH11167627A (en) Image processor and its method
AU728882B2 (en) Compression
AU760297B2 (en) Memory controller architecture
AU727990B2 (en) Graphics processing system
AU766467B2 (en) Graphics processing system
AU717336B2 (en) Graphics processor architecture

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050426

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050426

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7426

Effective date: 20050426

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20050426

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20071019

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20071026

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080307