JPH10303308A - Integrated circuit having cores and shells and hierarchical firmware therefor - Google Patents
Integrated circuit having cores and shells and hierarchical firmware thereforInfo
- Publication number
- JPH10303308A JPH10303308A JP9334963A JP33496397A JPH10303308A JP H10303308 A JPH10303308 A JP H10303308A JP 9334963 A JP9334963 A JP 9334963A JP 33496397 A JP33496397 A JP 33496397A JP H10303308 A JPH10303308 A JP H10303308A
- Authority
- JP
- Japan
- Prior art keywords
- shell
- core
- integrated circuit
- firmware
- routine
- 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
Links
Landscapes
- Image Processing (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
Description
【0001】[0001]
【発明の属する技術分野】本発明は、集積回路の分野に
関し、より特には、設計済みのコア(core)を用いた集積
回路の設計に関する。The present invention relates to the field of integrated circuits, and more particularly, to the design of integrated circuits using pre-designed cores.
【0002】[0002]
【発明が解決しようとする課題】集積回路はしばしばコ
ンピュータシステムに含まれて、これらのシステムのハ
ードウェアの機能性を広げる。特定の集積回路の含有よ
り前では、特定の集積回路により具体化される機能は、
典型的には、コンピュータシステムの中心処理装置(C
PU)によって実行されるソフトウェアにおいて全部行
われる。(i) 機能性がコンピュータシステムによってし
ばしば行われ;かつ(ii)ハードウェアにおいて機能性を
履行することによってより効率的に機能性が行われ得る
ならば、典型的には機能性はハードウェアにおいて履行
される。[0003] Integrated circuits are often included in computer systems to extend the hardware functionality of these systems. Prior to the inclusion of a particular integrated circuit, the function embodied by the particular integrated circuit
Typically, a central processing unit (C) of a computer system
PU)). (i) the functionality is often performed by a computer system; and (ii) the functionality is typically performed in hardware if the functionality can be performed more efficiently by implementing the functionality in hardware. Will be fulfilled.
【0003】たいてい、集積回路によって取り扱われる
べき機能はハードウェアへの完全な変換を必要としない
で、所望の性能を得ることができる。そのかわりに、そ
の機能内で、ある基本演算(basic operation) を加速す
るハードウェアが使用され得る。新たに加えられたハー
ドウェアを用いてその機能を実行するために、ソフトウ
ェアが書き込まれる。このソフトウェアは新たに加えら
れたハードウェアと共にあってのみ有用であるので、そ
のソフトウェアは典型的には、集積回路と共に実装され
る(例えば、読み出し専用メモリ、すなわちROMに実
装される)、よってそのソフトウェアは常に、その集積
回路と一緒の使用のために利用できる。特定のハードウ
ェアと一緒の使用のために常に利用できるところのソフ
トウェアは、ファームウェア(firmware)と称される。そ
のファームウェアと新たに加えられたハードウェアとが
一緒になって、所望された機能を実行する。[0003] In most cases, the functions to be handled by the integrated circuit can achieve the desired performance without requiring a complete translation into hardware. Alternatively, hardware that accelerates certain basic operations within the function may be used. Software is written to perform the function using the newly added hardware. Because the software is useful only with newly added hardware, the software is typically implemented with integrated circuits (eg, implemented in read-only memory or ROM), and therefore Software is always available for use with the integrated circuit. Software that is always available for use with specific hardware is referred to as firmware. The firmware and the newly added hardware work together to perform the desired function.
【0004】過去において、集積回路はしばしば、そこ
に使用され得るトランジスタの数によって限定された。
したがって、特定の集積回路に含有される機能性の量は
幾分限定された。それで、いかなる過去の研究をも参考
にすることなく、それぞれの新しい集積回路を独自に設
計することが比較的効率的であった。[0004] In the past, integrated circuits have often been limited by the number of transistors that can be used therein.
Accordingly, the amount of functionality contained in a particular integrated circuit has been somewhat limited. Thus, it was relatively efficient to design each new integrated circuit independently, without reference to any previous work.
【0005】より近年には、与えられた集積回路に含ま
れ得るトランジスタの数が劇的に増加した。集積回路は
それによって、使用可能なトランジスタの数が増えるに
つれ、より大量の機能性を集積して、より複雑になっ
た。集積回路は複雑性が増しているので、新しい集積回
路を開発し、そして完全に試験するのに必要な時間の量
もまた増加している。同時に、半導体工業における変化
速度のために、製品を市場に出す時間は、より短いこと
が要求される。[0005] More recently, the number of transistors that can be included in a given integrated circuit has increased dramatically. Integrated circuits have thereby become more complex, integrating larger amounts of functionality as the number of available transistors has increased. As integrated circuits have increased in complexity, so has the amount of time required to develop and fully test new integrated circuits. At the same time, the speed of change in the semiconductor industry requires shorter time to market products.
【0006】[0006]
【課題を解決するための手段】先に概説した問題は、階
層集積回路および対応する階層ファームウェア構造によ
って、大部分解決される。階層集積回路は、設計済み(p
redesigned) でかつ検証済み(preverified) のコアを使
用して、集積回路の種々の副機能(subfunction) を実行
する。コアが設計済みでかつ検証済みであるので、有利
なことには、所望の集積回路を設計しかつ検証するのに
必要な時間が減少され得る。集積回路の望まれる機能を
完成するのに使用され得るカスタム論理(custom logic)
が設計され、そしてそのカスタム論理は、コアによって
使用されるインタフェースに従って、コアにインタフェ
ースし得る。その上、集積回路の他の部分にコアをイン
タフェースさせるシェルが開発され得る。シェルは、コ
アによって使用される低いレベルのインタフェースより
高いレベルのインタフェースを提供し得る。さらにシェ
ルは、コアの入力および出力値のためのバファリング(b
uffering) を提供し得る。SUMMARY OF THE INVENTION The problems outlined above are largely solved by a hierarchical integrated circuit and a corresponding hierarchical firmware structure. Hierarchical integrated circuits are designed (p
Perform various subfunctions of the integrated circuit using redesigned and preverified cores. Since the core is designed and verified, the time required to design and verify the desired integrated circuit may be advantageously reduced. Custom logic that can be used to complete the desired function of an integrated circuit
Is designed, and the custom logic can interface to the core according to the interface used by the core. Moreover, shells can be developed that interface the core to other parts of the integrated circuit. The shell may provide a higher level interface than the lower level interface used by the core. In addition, the shell provides buffering (b
uffering).
【0007】階層集積回路に対応する階層ファームウェ
ア構造は、集積回路における階層の各レベルに対応する
ファームウェアルーチン(firmware routine)を提供す
る。このようにして、コアが、後に設計された集積回路
に再使用されるなら、対応するコアファームウェアルー
チンもまた同様に、再使用のためにすぐに使用可能であ
る。同様に、シェルおよびそこに含有されたコアが、後
に設計された集積回路に再使用されるなら、対応するシ
ェルおよびコアファームウェアルーチンもまた同様に、
再使用のためにすぐに使用可能である。有利なことに、
ハードウェアインプリメンテーション(implementation)
からハードウェアインプリメンテーションへの、ファー
ムウェアの可搬性(portability) が増加され得る。[0007] The hierarchical firmware structure corresponding to the hierarchical integrated circuit provides a firmware routine corresponding to each level of the hierarchy in the integrated circuit. In this way, if the core is reused in a later designed integrated circuit, the corresponding core firmware routine is also immediately available for reuse. Similarly, if the shell and the core contained therein are reused in a subsequently designed integrated circuit, the corresponding shell and core firmware routines will also:
Ready to use for re-use. Advantageously,
Hardware implementation
The portability of the firmware from to the hardware implementation can be increased.
【0008】概していえば、本発明は、第1および第2
のコアおよび第1および第2のシェルを有する集積回路
を企図する。第1のコアは、第1のファームウェアルー
チンの制御下で、第1のコアに対する第1の入力値に基
づいて演算して第1の定義済みの結果(predefined resu
lt) を生じるように構成される。同様に、第2のコア
は、第2のファームウェアルーチンの制御下で、第2の
コアに対する第2の入力値に基づいて演算して第2の定
義済みの結果を生じるように構成される。第1のコアは
第1のシェルに結合され、ここで第1のシェルはまた、
バス(bus) に結合される。第1のシェルは、第3のファ
ームウェアルーチンの制御下で、バスに対するインタフ
ェースを提供するように構成される。その上、第3のフ
ァームウェアルーチンは、第1の入力値がバスを経て与
えられると、第1のファームウェアルーチンを呼び出す
ように構成され、それによって第1の定義済みの結果を
生じる。第2のコアは同様にして第2のシェルに結合さ
れ、そして第2のシェルはさらにバスに結合される。第
2のシェルは、第4のファームウェアルーチンの制御下
で、バスに対するインタフェースを提供するように構成
される。さらに、第4のファームウェアルーチンは、第
2の入力値がバスを経て与えられると、第2のファーム
ウェアルーチンを呼び出すように構成され、それによっ
て第2の定義済みの結果を生じる。[0008] Generally speaking, the present invention comprises a first and a second.
An integrated circuit having a first core and first and second shells is contemplated. The first core operates under control of a first firmware routine based on a first input value to the first core to calculate a first predefined result.
lt). Similarly, the second core is configured to operate under a second firmware routine based on a second input value to the second core to produce a second defined result. The first core is coupled to a first shell, where the first shell also
Coupled to a bus. The first shell is configured to provide an interface to the bus under control of a third firmware routine. In addition, the third firmware routine is configured to invoke the first firmware routine when a first input value is provided over the bus, thereby producing a first defined result. The second core is similarly coupled to a second shell, and the second shell is further coupled to a bus. The second shell is configured to provide an interface to the bus under control of a fourth firmware routine. Further, the fourth firmware routine is configured to invoke the second firmware routine when a second input value is provided over the bus, thereby producing a second defined result.
【0009】本発明はさらに、集積回路を操作するため
の方法を企図する。集積回路内の第1のシェルは、第1
のファームウェアルーチンを用いて制御される。第1の
シェル内の第1のコアは、第2のファームウェアルーチ
ンを用いて制御される。The present invention further contemplates a method for operating an integrated circuit. A first shell in the integrated circuit comprises a first shell.
Is controlled by using a firmware routine. The first core in the first shell is controlled using a second firmware routine.
【0010】本発明はなおさらに、互いに結合した複数
のシェルおよび複数のコアを有する集積回路を企図す
る。複数のコアのそれぞれは、複数のシェルのうちの1
つに含まれる。集積回路と共に使用されるファームウェ
ア構造は、複数のシェルファームウェアルーチンおよび
複数のコアファームウェアルーチンにモジュール化され
る。複数のシェルファームウェアルーチンのそれぞれ
は、複数のシェルのうちの異なる1つに対応する。同様
に、複数のコアファームウェアルーチンのそれぞれは、
複数のコアのうちの異なる1つに対応する。[0010] The present invention still further contemplates an integrated circuit having a plurality of shells and a plurality of cores coupled to each other. Each of the plurality of cores is one of the plurality of shells.
Included in one. The firmware structure used with the integrated circuit is modularized into shell firmware routines and core firmware routines. Each of the plurality of shell firmware routines corresponds to a different one of the plurality of shells. Similarly, each of the multiple core firmware routines
It corresponds to a different one of the plurality of cores.
【0011】本発明の他の目的および利点は、以下の詳
細な説明を読み、かつ添付の図を参照すると、明らかに
なるであろう。[0011] Other objects and advantages of the present invention will become apparent upon reading the following detailed description and upon reference to the accompanying drawings.
【0012】本発明は、種々の変形および代替形が可能
であるが、その特定の実施態様は、図において例として
示されており、ここで詳細に述べられるであろう。しか
しながら、図およびそれに対する詳細な説明は本発明
を、開示された特定の形態に限定することを意図するも
のではなく、反対に、特許請求の範囲に記載された本発
明の精神および範囲内にある、すべての変形、等価物お
よび代替物を包含することを意図することを理解すべき
である。While the invention is susceptible to various modifications and alternative forms, specific embodiments thereof have been shown by way of example in the figures and will herein be described in detail. However, the figures and detailed description thereto are not intended to limit the invention to the particular form disclosed, but, on the contrary, fall within the spirit and scope of the invention as claimed. It is to be understood that all variations, equivalents and alternatives are intended to be included.
【0013】[0013]
【発明の実施の形態】ここで、図1をみると、階層集積
回路10のブロックダイヤグラム(block diagram) が示さ
れている。図1に示されているように、階層集積回路
は、複数のシェル12A-12B を含有する。各シェルは1ま
たはそれ以上のコアを含有し、例えばシェル12A にはコ
ア14A を、シェル12B にはコア14B および14C を含有す
る。シェル12A はシェル12B に結合される。その上、シ
ェル12A および12B の両方が、集積回路10に対して外側
のブロックと連絡するように構成される。任意の数のシ
ェル12が集積回路10の種々の実施態様に含有され得、任
意の数のコア14がシェル12に組み込まれ得ることが注意
される。さらに、与えられたシェルは、集積回路10に対
して外側のブロックと直接連絡するように構成される、
または構成されないことができる。Referring now to FIG. 1, a block diagram of a hierarchical integrated circuit 10 is shown. As shown in FIG. 1, the hierarchical integrated circuit contains a plurality of shells 12A-12B. Each shell contains one or more cores, for example, shell 12A contains core 14A and shell 12B contains cores 14B and 14C. Shell 12A is coupled to shell 12B. Moreover, both shells 12A and 12B are configured to communicate with blocks outside of integrated circuit 10. It is noted that any number of shells 12 may be included in various embodiments of integrated circuit 10 and any number of cores 14 may be incorporated into shell 12. Further, a given shell is configured to communicate directly with the outer blocks to the integrated circuit 10,
Or may not be configured.
【0014】概して、コアは、集積回路10の所望の機能
の副機能を実行するところの論理の定義済みでかつ検証
済みのブロックを含む。コアを、他のコアまたはカスタ
ム論理と一緒に使用して、集積回路10が設計されるその
ための機能を実行することができる。コアが定義済みで
かつ検証済みであるので、集積回路10の設計者は、コア
によって実現される副機能を実現することの詳細に関係
する必要がない。その代わり、設計者は、集積回路設計
にコアを含み、かつコアが利用できないさらなる副機能
を設計する。集積回路が市場に供せられる時間は、コア
内の機能性を設計し、かつコアが所望のように機能する
ことを検証するために以前は必要とされていた量の時間
だけ減少され得る。In general, the core includes defined and verified blocks of logic that perform sub-functions of the desired function of integrated circuit 10. The core can be used with other cores or custom logic to perform the functions for which the integrated circuit 10 is designed. Since the core is defined and verified, the designer of the integrated circuit 10 need not be concerned with the details of implementing the sub-functions implemented by the core. Instead, the designer includes the core in the integrated circuit design and designs additional sub-functions where the core is not available. The time that an integrated circuit is brought to market can be reduced by the amount of time previously required to design the functionality within the core and verify that the core functions as desired.
【0015】コアは、多くのやり方で備えられ得る。コ
アは、合成可能なレジスタ‐トランスファレベル(regis
ter-transfer level) (RTL)記述(description) と
して備えることができ、これは集積回路10におけるシェ
ル論理および他の論理ブロックのRTL記述と一緒に合
成され得る。コアがこのように備えられるなら、集積回
路の設計者は、集積回路のタイミングアスペクト(timin
g aspect) を最適化するために、他の論理ブロックと関
連する回路設計と一緒にコアに関連する回路設計を配置
する(コアを「配置する(lay out) 」)ための融通性を
持つ。あるいは、コアは、最終の集積回路設計に含有さ
れ得るところの配置済みの回路(pre-laid out circuit)
として備えられ得る。集積回路の設計者はこの場合あま
り融通性を持たないが、コアに対応する回路設計を配置
する作業は、以前に完成されている(すなわち、コアが
組み込まれているところの集積回路の開始設計に先立っ
て完成される)。集積回路の設計者は、設計に含まれる
さらなる回路設計に時間を集中させることができる。[0015] The core may be provided in a number of ways. The core is a synthesizable register-transfer level (regis
It can be provided as a ter-transfer level (RTL) description, which can be synthesized together with RTL descriptions of shell logic and other logic blocks in the integrated circuit 10. If the core is provided this way, the designer of the integrated circuit will need to
It has the flexibility to place the core related circuit design along with other logic blocks and related circuit designs ("lay out" the core) to optimize the g aspect). Alternatively, the core is a pre-laid out circuit that can be included in the final integrated circuit design
Can be provided as Although the designer of the integrated circuit is less flexible in this case, the task of placing the circuit design corresponding to the core has been completed previously (ie, the starting design of the integrated circuit where the core is incorporated). Will be completed prior to Integrated circuit designers can focus their time on the additional circuit designs involved in the design.
【0016】集積回路10に含まれるために選ばれる各コ
ア14は一般に、そのコア14がそれに基づき演算する入力
値を提供し、かつそのコア14によって生成される出力値
を提供するのに有用な低いレベルのインタフェースを有
する。種々のコア14を共に(ならびに、設計に含まれ得
るところの任意のカスタム論理ブロック(示されていな
い)に)、結合するために、「シェル」は各コア(また
は、もし、共に直接結合するように設計されたいくつか
のコアが設計のために選ばれるなら、コアの群)につい
て設計される。ここで使用されるように、シェルは、設
計済みのコアと集積回路10の残余との間をインタフェー
スするために使用される回路設計を含む。シェルはさら
に、そこに含まれるコアのための入力および出力データ
を貯蔵するためのバッファ(buffer)を含むことができ
る。そのうえ、シェルは、集積回路10に含まれるカスタ
ムバスにインタフェースするためのインタフェース回路
設計を含むことができる。カスタムバスは、集積回路10
の構成要素間の連絡のために最適化され、典型的には、
コアに対するインタフェースと同じではない。さらなる
回路設計が、集積回路10の外側のデバイス(device)と連
絡するために含まれることができる。Each core 14 selected to be included in the integrated circuit 10 generally provides an input value on which the core 14 operates and is useful for providing an output value generated by the core 14. Has a low level interface. To combine the various cores 14 together (as well as into any custom logic blocks (not shown) that may be included in the design), a "shell" couples each core (or if directly together) If several cores designed like are chosen for the design, they are designed for a group of cores). As used herein, a shell includes a circuit design used to interface between a designed core and the rest of the integrated circuit 10. The shell may further include a buffer for storing input and output data for the cores contained therein. In addition, the shell may include an interface circuit design for interfacing to a custom bus included in integrated circuit 10. Custom bus integrated circuit 10
Optimized for communication between components, typically
Not the same as the interface to the core. Additional circuit designs can be included to communicate with devices external to integrated circuit 10.
【0017】集積回路10が、構造において階層的である
ので、伴うファームウェアは、同様の階層構造を有する
ように設計される。ソフトウェアのために、コードを独
立したルーチンに「モジュール化すること(modularizin
g)」によって、階層性がつくられている。階層性のより
抽象的なレベルに対応するルーチンは、より高いレベル
のルーチンが、ハードウェアにおいて階層性のより低い
レベルの演算が望まれることを決めると、階層性がより
低いルーチンを「呼び出す(call)」(すなわち、転送制
御する(transfer control))ことができる。ここで使用
されるように、「ルーチン」は、所望される機能を実行
するために配列された1組の命令である。命令は、特定
のシーケンス(sequence)で配列され、プログラマーによ
って他のシーケンス(ルーチン)から意識的に分けられ
る。典型的には、ルーチンは、演算するための、ゼロま
たはそれ以上の入力引数(argument)の形式的に特定され
た組、およびゼロまたはそれ以上の出力復帰値(return
value)の特定された組を有する。このようにして、設計
の各レベルと相互作用するファームウェアは、変化およ
び/または可搬性について、容易に識別可能である。コ
ア、またはシェルおよびそこに含まれるいくつかのコア
が、別の集積回路設計のために使用されるべきものなら
ば、対応するファームウェアは識別され、かつ再使用さ
れることができる。Since the integrated circuit 10 is hierarchical in structure, the accompanying firmware is designed to have a similar hierarchical structure. `` Modularizing code into independent routines for software (modularizin
g) ”creates a hierarchy. Routines corresponding to the more abstract levels of hierarchy may "call" the lower hierarchy routines if the higher level routine decides that a lower hierarchy operation is desired in hardware. call) "(ie, transfer control). As used herein, a "routine" is a set of instructions arranged to perform a desired function. Instructions are arranged in a particular sequence and are consciously separated from other sequences (routines) by the programmer. Typically, a routine has a formally specified set of zero or more input arguments to operate on, and zero or more output return values (return).
value). In this way, firmware that interacts with each level of the design is easily identifiable for change and / or portability. If the core, or shell and some of the cores contained therein, are to be used for another integrated circuit design, the corresponding firmware can be identified and reused.
【0018】対照的に、典型的な集積回路または集積回
路の群のために書かれたファームウェアは一般に、機能
性部分と、ハードウェアと相互作用するところの部分と
が混合されている、1つのルーチンである。対応するハ
ードウェアの部分を新しい設計にすることは、新しいフ
ァームウェアがスクラッチ(scratch) から実質的に書か
れることを必要とする。したがって、本発明のモジュー
ル方式(modular) ファームウェア構造は、より容易な可
搬性および変形を考慮に入れる。コアは別の集積回路設
計において再使用することができ、対応するコアファー
ムウェアルーチンもまた再使用され得る。同様に、シェ
ルおよび対応するコアは、対応するシェルファームウェ
アルーチンおよびコアファームウェアルーチンと一緒
に、別の集積回路設計において再使用され得る。[0018] In contrast, firmware written for a typical integrated circuit or group of integrated circuits generally has one part where the functional parts and the parts that interact with the hardware are mixed. It is a routine. Redesigning the corresponding hardware parts requires that the new firmware be written essentially from scratch. Thus, the modular firmware structure of the present invention allows for easier portability and variations. The core can be reused in another integrated circuit design, and the corresponding core firmware routine can also be reused. Similarly, a shell and a corresponding core, along with a corresponding shell firmware routine and a core firmware routine, can be reused in another integrated circuit design.
【0019】図2をみると、集積回路10に対応するファ
ームウェア階層20のダイヤグラムが示されている。階層
20における最も高いレベルは、アプリケーションプログ
ラミングインタフェース(application programming int
erface) (API)層22である。API層22は、アプリ
ケーションプログラマー(application programmer)(す
なわち、集積回路10を含むコンピュータシステムにおい
て使用するためのプログラムを書いているプログラマ
ー)に使用可能な高レベルのルーチンの組を規定する。
APIルーチンは、特定のコンピュータシステムに含ま
れる固有のハードウェアにかかわらず、アプリケーショ
ンプログラマーが使用するための標準インタフェースを
提供する。ルーチンおよびその後ろにあるハードウェア
のインプリメンテーションは変化することができ、アプ
リケーションプログラムは、もし新しいインプリメンテ
ーションのために再コンパイルされる(recompiled)な
ら、なお正確に動作するであろう。一般に、API層の
ルーチンは、ルーチンに対して与えられた引数の誤りを
チェックした後、適当なより低いレベルのルーチンを呼
び出す。Referring to FIG. 2, a diagram of the firmware hierarchy 20 corresponding to the integrated circuit 10 is shown. hierarchy
The highest level at 20 is application programming int
erface) (API) layer 22. The API layer 22 defines a set of high-level routines that can be used by an application programmer (ie, a programmer writing a program for use in a computer system including the integrated circuit 10).
API routines provide a standard interface for use by application programmers, regardless of the specific hardware included in a particular computer system. The implementation of the routine and the underlying hardware can vary, and the application program will still work correctly if recompiled for a new implementation. In general, the API layer routines check for errors in the arguments provided to the routine and then call the appropriate lower level routine.
【0020】システムファームウェアレベル24が、階層
において次にあり、一般に集積回路10の機能性に全体と
して対応する。他のタスク(task)の中で、システムファ
ームウェアレベル24は、シェルファームウェアルーチン
とコアファームウェアルーチンとの間のタスクスケジュ
ール操作(task scheduling) ならびに、任意のルーチン
が誤りを検知したときに誤り処理(error handling)を提
供し得る。シェルファームウェア層26は、集積回路10に
おける各シェル12に対応するシェルファームウェアルー
チンを含む。同様に、コアファームウェア層28は、集積
回路10における各コア14に対応するコアファームウェア
ルーチンを含む。シェルファームウェアルーチンは、対
応するシェルに含まれるコアのためのコアファームウェ
アルーチンを呼び出すことができる。The system firmware level 24 is next in the hierarchy and generally corresponds to the functionality of the integrated circuit 10 as a whole. Among other tasks, system firmware level 24 includes task scheduling between the shell firmware routine and the core firmware routine, as well as error handling when any routine detects an error. handling) can be provided. Shell firmware layer 26 includes shell firmware routines corresponding to each shell 12 in integrated circuit 10. Similarly, core firmware layer 28 includes a core firmware routine corresponding to each core 14 in integrated circuit 10. The shell firmware routine can call a core firmware routine for a core included in the corresponding shell.
【0021】ここで図3をみると、集積回路30の1つの
実施態様のブロックダイヤグラムが示されている。図3
に示された実施態様は、MPEGデコーディング(decod
ing)を実行するように構成されている。しかしながら、
他の実施態様が、任意の所望の機能を実行するように構
成され得る。Turning now to FIG. 3, a block diagram of one embodiment of the integrated circuit 30 is shown. FIG.
Is an MPEG decoding (decod
ing). However,
Other embodiments may be configured to perform any desired functions.
【0022】集積回路30の理解を促進するために、集積
回路30の特徴点について詳細に議論する前に、MPEG
標準についての簡潔な議論を提供する。MPEG(動画
専門群(Moving Pictures Experts Group) )圧縮標準
は、フレーム間およびフレーム内の圧縮技術を使用する
全動作ビデオイメージ(full motion video image) の圧
縮および脱圧縮(decompression) のための1組の方法で
ある。フレーム内圧縮法は、静止イメージもしくは単一
フレーム内のデータを、フレーム内の空間冗長(spatial
redundancy)を用いて圧縮するために使用される。フレ
ーム間圧縮法は、複数のフレームすなわち動作ビデオ(m
otion video)を、フレーム間の時間冗長(temporal redu
ndancy) を用いて圧縮するために使用される。MPEG
圧縮は、他の中でも、動作補償および離散的コサイン変
換(discrete cosine transform) (DCT)法の両方を
用い、200 :1より上の圧縮比を生じ得る。Before further discussion of the features of integrated circuit 30 in order to facilitate an understanding of integrated circuit 30, MPEG
Provide a brief discussion of the standard. The MPEG (Moving Pictures Experts Group) compression standard is a set of techniques for compression and decompression of full motion video images using inter-frame and intra-frame compression techniques. This is the method. Intra-frame compression is a method of converting a still image or data in a single frame into spatial redundancy (spatial redundancy) in a frame.
(redundancy). The interframe compression method uses multiple frames or motion video (m
otion video) with temporal redundancy between frames (temporal redu
ndancy). MPEG
Compression uses both motion compensation and the discrete cosine transform (DCT) method, among others, and can result in compression ratios above 200: 1.
【0023】2つの優勢なMPEG標準は、MPEG−
1およびMPEG−2と称される。MPEG−1標準は
一般に、ブロックベースの(block-based) 動作補償予測
(motion compensation prediction)(MCP)を用い
て、フィールド間データ縮小(data reduction)に関係す
る。MCPは一般に、時間の差分パルス符号変調方式(d
ifferential pulse code modulation)(DPCM)を用
いる。MPEG−2標準はMPEG−1標準と同様であ
るが、高品位テレビジョン(HDTV)のような飛び越
しデジタルビデオ(interlaced digital video)を包含す
る、アプリケーションのより広い範囲をカバーするため
に拡張(extension) を含む。The two dominant MPEG standards are MPEG-
1 and MPEG-2. The MPEG-1 standard generally covers block-based motion compensation prediction.
It relates to inter-field data reduction using (motion compensation prediction) (MCP). The MCP generally uses a time differential pulse code modulation (d
Ifferential pulse code modulation (DPCM) is used. The MPEG-2 standard is similar to the MPEG-1 standard, but extends to cover a wider range of applications, including interlaced digital video such as high definition television (HDTV). ) including.
【0024】フレーム間圧縮法例えばMPEGは、次の
ような事実に基づいている。すなわち、ほとんどのビデ
オシーケンスにおいては、背景は比較的安定していて、
活動が前景で起こる。背景は動くことができるが、ビデ
オシーケンスにおける連続したフレームの大部分は冗長
である。MPEG圧縮は、この固有の冗長を用いて、シ
ーケンスにおいてフレームをエンコード(encode)または
圧縮する。The inter-frame compression method such as MPEG is based on the following facts. That is, in most video sequences, the background is relatively stable,
The activity takes place in the foreground. The background can move, but most of the consecutive frames in the video sequence are redundant. MPEG compression uses this inherent redundancy to encode or compress frames in a sequence.
【0025】MPEGストリーム(stream)は、3つのタ
イプの画像を包含する。これらは、内フレーム(I)(i
ntra (I) frame) 、予測フレーム(P)(Predicted (P)
frame) および二方向内挿フレーム(B)(Bi-directio
nal Interpolated (B) frame) と称される。Iもしくは
内フレームは、ビデオの全フレームのためのビデオデー
タを含み、典型的には10〜15フレーム毎に置かれる。内
フレームは、ランダムアクセスのためのファイルへのエ
ントリーポイント(entry point) を提供し、一般に穏や
かに圧縮されるだけである。予測フレームは、過ぎたフ
レーム、すなわち先の内フレームまたは予測フレームに
関してエンコードされる。かくして、Pフレームは、先
のIまたはPフレームに関連する変化を含むだけであ
る。一般に、予測フレームは、かなり高い量の圧縮を受
け取り、未来の予測フレームのための参照として使用さ
れる。かくして、IおよびPの両方が引き続くフレーム
のための参照として使用される。二方向画像(bi-direct
ional picture)は最大量の圧縮を含み、エンコードされ
るために過去および未来の両方の参照を必要とする。二
方向フレームは他のフレームのための参照として使われ
ることはない。An MPEG stream contains three types of images. These are the inner frames (I) (i
ntra (I) frame), Predicted (P)
frame) and bidirectional interpolation frame (B) (Bi-directio
nal Interpolated (B) frame). The I or inner frame contains video data for all frames of the video and is typically placed every 10-15 frames. Inner frames provide an entry point into the file for random access and are generally only gently compressed. The predicted frame is encoded with respect to the past frame, ie, the previous inner or predicted frame. Thus, a P frame only contains the changes associated with the previous I or P frame. In general, predicted frames receive a fairly high amount of compression and are used as references for future predicted frames. Thus, both I and P are used as references for subsequent frames. Bi-direct image
ional pictures) contain the greatest amount of compression and require both past and future references to be encoded. Bidirectional frames are not used as references for other frames.
【0026】一般に、参照フレームに続くフレーム、す
なわち参照IまたはPフレームに続くPおよびBフレー
ムについては、これらのフレームの少しの部分しか、そ
れぞれの参照フレームの対応部分と異ならない。このよ
うに、これらのフレームについては、差異のみが捕らえ
られ、圧縮され、かつ貯蔵される。これらのフレームの
間の差異は典型的には、一般に、以下で議論するよう
に、動作ベクトル評価論理(motion vector estimation
logic)を用いて生み出される。In general, for the frames following the reference frame, ie the P and B frames following the reference I or P frame, only a small part of these frames differs from the corresponding part of the respective reference frame. Thus, for these frames, only the differences are captured, compressed and stored. The difference between these frames is typically the result of motion vector estimation logic, as discussed below.
logic).
【0027】MPEGエンコーダがビデオファイルまた
はビットストリームを受けとるとき、MPEGエンコー
ダは一般に、まずIフレームを作る。MPEGエンコー
ダは、フレーム内無損失圧縮技術(intraframe lossless
compression technique) を用いてIフレームを圧縮す
ることができる。Iフレームが作られた後、MPEGエ
ンコーダはそれぞれのフレームをマクロブロックと呼ば
れる16×16ピクセル(pixel) 平方の格子に分ける。それ
ぞれのフレームは、動作の評価/補償を実行するために
マクロブロックに分けられる。このように、それぞれの
標的画像またはフレーム、すなわちエンコードされるフ
レームについて、エンコーダは、標的画像のマクロブロ
ックと、探索フレーム(search frame)と称される隣の画
像におけるブロックとの間の正確なまたは正確に近い一
致(マッチング)を探す。標的Pフレームについては、
エンコーダは先のIまたはPフレームにおいて探索す
る。標的Bフレームについては、エンコーダは先のまた
は引き続くIまたはPフレームにおいて探索する。一致
がみつかると、エンコーダはベクトル移動コードまたは
動作ベクトルを伝達する。ベクトル移動コードまたは動
作ベクトルは、探索フレームとそれぞれの標的画像との
間の差異についての情報を含むだけである。参照画像ま
たはIフレームにおけるブロックに関連する変化がない
標的画像におけるブロックは無視される。このように、
これらのフレームについて実際に貯蔵されるデータの量
は、著しく減少される。When an MPEG encoder receives a video file or bitstream, it generally first creates an I-frame. MPEG encoders use intraframe lossless compression technology.
The I frame can be compressed using a compression technique. After the I frames are created, the MPEG encoder divides each frame into a 16 × 16 pixel square grid called a macroblock. Each frame is divided into macroblocks to perform motion estimation / compensation. Thus, for each target image or frame, i.e., the frame to be encoded, the encoder determines the exact or exact position between the macroblock of the target image and a block in the next image called a search frame. Find an exact match. For the target P frame,
The encoder searches in the previous I or P frame. For a target B frame, the encoder searches in a previous or subsequent I or P frame. If a match is found, the encoder transmits a vector movement code or motion vector. The vector movement code or motion vector only contains information about the differences between the search frame and the respective target image. Blocks in the target image that do not have changes associated with the blocks in the reference image or I-frame are ignored. in this way,
The amount of data actually stored for these frames is significantly reduced.
【0028】動作ベクトルが生み出された後、エンコー
ダは次に、空間冗長を用いて変化をエンコードする。か
くして、マクロブロックの位置で変化をみつけた後、M
PEGアルゴリズムはさらに計算し、対応するマクロブ
ロック間の差異をエンコードする。差異のエンコード
は、離散的コサイン変換(DCT)と称する数学のプロ
セスを経て成し遂げられる。このプロセスは、色および
明るさにおける変化を探して、マクロブロックを4つの
サブブロックに分ける。ヒトの知覚は、色の変化より明
るさの変化により敏感である。かくして、MPEGアル
ゴリズムは、明るさよりむしろ色空間を減らすことに、
より多くの努力を当てる。After the motion vectors have been generated, the encoder then encodes the changes using spatial redundancy. Thus, after finding a change at the position of the macroblock, M
The PEG algorithm further calculates and encodes the differences between corresponding macroblocks. The encoding of the difference is accomplished through a mathematical process called the Discrete Cosine Transform (DCT). This process divides the macroblock into four sub-blocks, looking for changes in color and brightness. Human perception is more sensitive to changes in brightness than changes in color. Thus, the MPEG algorithm reduces color space rather than brightness,
Focus more effort.
【0029】したがって、MPEG圧縮は、ビデオシー
ケンスにおける2つのタイプの冗長に基づき、これら
は、個々のフレームにおける冗長であるところの空間
的、および連続するフレームの間の冗長であるところの
時間的である。空間圧縮は、画像フレームの周波数特性
を考慮することによって達成される。各フレームは、重
なりのないブロックに分けられ、各ブロックは離散的コ
サイン変換(DCT)を経て変換される。変換されたブ
ロックが「DCTドメイン(domain)」に変換された後、
変換されたブロックにおける各エントリーは、1組の量
子化テーブル(quantization table)に関して量子化され
る。各エントリーのための量子化段階は、周波数に対す
るヒトの視覚系(human visual system) (HVS)の感
度を考慮して、変わり得る。HVSは、低周波数に対し
てより敏感であるので、高周波数のエントリーのほとん
どは、ゼロに量子化される。エントリーが量子化される
この段階において、情報が失われ、再構成されたイメー
ジに誤りが導入される。量子化された値を伝達するため
に、ランレングス(run length)のエンコード化が使用さ
れる。さらに圧縮を促進するために、より低い周波数の
エントリーをまず走査するジグザグ配列でブロックが走
査され、そしてゼロでない量子化された値は、ゼロのラ
ンレングスと一緒にエントロピーエンコードされる。Thus, MPEG compression is based on two types of redundancy in a video sequence, these being spatial in which redundancy is in individual frames and temporal in which is redundancy between consecutive frames. is there. Spatial compression is achieved by considering the frequency characteristics of the image frames. Each frame is divided into non-overlapping blocks, and each block is transformed via a discrete cosine transform (DCT). After the transformed block is transformed into a "DCT domain",
Each entry in the transformed block is quantized with respect to a set of quantization tables. The quantization step for each entry can vary, taking into account the sensitivity of the human visual system (HVS) to frequency. Since HVS is more sensitive to low frequencies, most of the high frequency entries are quantized to zero. At this stage where the entries are quantized, information is lost and errors are introduced into the reconstructed image. Run length encoding is used to convey the quantized value. To further facilitate compression, the blocks are scanned in a zig-zag arrangement that scans the lower frequency entries first, and the non-zero quantized values are entropy encoded with a zero run length.
【0030】上で議論したように、時間圧縮は、対象物
のほとんどが連続する画像フレームの間で同じままであ
り、引き続くフレームにおける対象物またはブロックの
間の差異は、動作(対象物の動作、カメラの動きまたは
両方による)の結果として、フレームにおけるそれらの
位置であるという事実を用いる。この相対的なエンコー
ド化への鍵は動作評価(motion estimation) である。一
般に、動作評価は、ほとんどのビデオ圧縮アルゴリズム
における本質的な処理の必要条件である。上記したよう
に、動作評価はビデオシーケンスのフレームの間での時
間冗長を識別する仕事である。As discussed above, temporal compression means that most of the objects remain the same between successive image frames, and the difference between objects or blocks in subsequent frames is the motion (object motion). , Camera movement or both) as a result of their position in the frame. The key to this relative encoding is motion estimation. In general, motion evaluation is an essential processing requirement in most video compression algorithms. As mentioned above, motion estimation is the task of identifying temporal redundancy between frames of a video sequence.
【0031】MPEGデコーダ(decoder) が、エンコー
ドされたストリームを受け取ると、MPEGデコーダは
上記の操作を逆にする。このように、MPEGデコーダ
はジグザグ配列を除くための逆走査、データを脱量子化
(de-quantize) するための逆量子化およびデータを周波
数ドメインからピクセルドメインに戻して変換するため
の逆DCTを行う。MPEGデコーダはまた、伝達され
た動作ベクトルを用いて動作補償を行って、時間的に圧
縮されたフレームを再創造または再構成する。他のフレ
ーム(例えばIまたはPフレーム)のための参照として
使用されるフレームが受け取られると、これらのフレー
ムはデコードされ、メモリに貯蔵される。時間的に圧縮
されたまたはエンコードされたフレーム(例えばPまた
はBフレーム)が受け取られると、先のデコードしたI
またはP参照フレームを用いて、動作補償がフレームに
行われる。時間的に圧縮されたまたはエンコードされた
フレーム(標的フレームと称する)は、メモリに貯蔵さ
れた先のデコードされたIまたはPフレームにおけるブ
ロックを参照するところの動作ベクトルを含む。MPE
Gデコーダは、各動作ベクトルを試験し、参照フレーム
においてそれぞれの参照ブロックを決定し、かつ時間的
に圧縮されたフレームを再構成するために、メモリから
の動作ベクトルによって示された参照ブロックを呼び出
す。When the MPEG decoder receives the encoded stream, the MPEG decoder reverses the above operation. In this way, the MPEG decoder reverse scans to remove the zigzag arrangement and dequantizes the data
(de-quantize) and inverse DCT for transforming data from the frequency domain back to the pixel domain. The MPEG decoder also performs motion compensation using the transmitted motion vectors to recreate or reconstruct temporally compressed frames. As frames are received that are used as references for other frames (eg, I or P frames), these frames are decoded and stored in memory. When a temporally compressed or encoded frame (eg, a P or B frame) is received, the previous decoded I
Alternatively, motion compensation is performed on the frame using the P reference frame. The temporally compressed or encoded frame (referred to as the target frame) includes a motion vector that references a block in a previous decoded I or P frame stored in memory. MPE
The G decoder tests each motion vector, determines the respective reference block in the reference frame, and calls the reference block indicated by the motion vector from memory to reconstruct the temporally compressed frame. .
【0032】図3をみると、この実施態様における集積
回路30は外部のメモリ32に結合する。示されているよう
に、外部のメモリ32は、同期式ダイナミックランダムア
クセスメモリ(Synchronous Dynamic Random Access Mem
ory)(SDRAM)であるが、ただし、他のメモリが使
用できることに注意する。集積回路30はまた、オーディ
オデジタルアナログ変換器(オーディオ DAC)34お
よびNTSC(National Television Standards Committ
ee) /PA1エンコーダ36に結合することができる。オ
ーディオ DAC34は、アナログ信号を聞こえる音に変
換するところのスピーカー(示されていない)へ伝達す
るために、Aシェル54によりデコードされたデジタル化
されたオーディオ値をアナログ信号に変換する。同様
に、NTSC/PA1エンコーダ36は、Vシェル52によ
りデコードされた画像を、ビデオ画面(示されていな
い)により表示できる信号に変換する。Referring to FIG. 3, the integrated circuit 30 in this embodiment is coupled to an external memory 32. As shown, the external memory 32 is a synchronous dynamic random access memory (Synchronous Dynamic Random Access Memory).
ory) (SDRAM), but note that other memories can be used. The integrated circuit 30 also includes an audio digital-to-analog converter (audio DAC) 34 and an NTSC (National Television Standards Committ).
ee) / PA1 encoder 36. The audio DAC 34 converts the digitized audio values decoded by the A-shell 54 into analog signals for transmission to a speaker (not shown) which converts the analog signals to audible sound. Similarly, NTSC / PA1 encoder 36 converts the image decoded by V-shell 52 into a signal that can be displayed on a video screen (not shown).
【0033】示されているように、集積回路30は、外部
のCPUに結合するためのCPUバスコントローラ38を
含む。任意のCPUが使用でき、例えばプロセッサのM
IPSファミリーまたはインテル ペンティアム(Intel
Pentium) である。1つの特定の実施態様において、C
PUはMPEG機能と一緒に集積回路30に統合され得
る。CPUバスコントローラ38は、CPUバス40に結合
する。タイマ42および、ストリームアンドホストインタ
フェースサブシステム(stream and host interface su
bsystem )44は、CPUバス40に結合される。ストリー
ムアンドホストインタフェースサブシステム44は、外部
デバイス(示されていない)からMPEGストリームを
受け取るために適合される。さらに、ストリームアンド
ホストインタフェースサブシステム44は、PTSテーブ
ル46、コントロールユニット(CTLユニット)48およ
びストリームバッファ50を含む。ストリームアンドホス
トインタフェースサブシステム44の構成要素の操作は、
以下でより詳細に述べる。ビデオシェルブロック(video
shell block) (Vシェル)52がまたCPUバス40に結
合される。以下の図4に示されるように、Vシェルブロ
ック52は、ビデオ処理コア(Vコア)およびマクロブロ
ック処理コア(MBコア)、ならびに再構成バッファ論
理および参照バッファ論理を含む。オーディオシェルブ
ロック(Aシェル)54がまたCPUバス40に結合され
る。以下の図5に示されるように、オーディオシェルブ
ロック54は、CPUバスインタフェース、メモリバスイ
ンタフェースおよび入力/出力インタフェースの他に、
オーディオ処理コア(Aコア)を含む。As shown, integrated circuit 30 includes a CPU bus controller 38 for coupling to an external CPU. Any CPU can be used, for example, the processor M
IPS family or Intel Pentium
Pentium). In one particular embodiment, C
The PU can be integrated into the integrated circuit 30 with MPEG functions. CPU bus controller 38 couples to CPU bus 40. Timer 42 and the stream and host interface subsystem
bsystem) 44 is coupled to CPU bus 40. Stream and host interface subsystem 44 is adapted to receive an MPEG stream from an external device (not shown). Further, the stream and host interface subsystem 44 includes a PTS table 46, a control unit (CTL unit) 48, and a stream buffer 50. The operation of the components of the stream and host interface subsystem 44
This is described in more detail below. Video shell block (video
A shell block 52 is also coupled to the CPU bus 40. As shown in FIG. 4 below, V-shell block 52 includes a video processing core (V core) and a macroblock processing core (MB core), as well as reconstruction buffer logic and reference buffer logic. An audio shell block (A shell) 54 is also coupled to the CPU bus 40. As shown in FIG. 5 below, the audio shell block 54 includes a CPU bus interface, a memory bus interface, and an input / output interface.
Includes audio processing core (A core).
【0034】Vシェルブロック52は、メモリバス56を通
ってメモリコントローラサブシステム58に結合する。メ
モリコントローラサブシステム58はまた、CPUバスコ
ントローラ38に結合する。メモリコントローラサブシス
テム58は、外部メモリ32にインタフェースするところの
メモリコントローラ論理を含む。Aシェルブロック54は
また、示されているように、メモリバス56に結合する。
ディスプレイコントローラ60は、メモリバス56に結合さ
れ、NTSC/PAlエンコーダ36に出力を与える。A
シェルブロック54は、オーディオ出力コントローラ62に
出力を与え、次にはオーディオ出力コントローラ62がオ
ーディオDAC34に出力を与える。一般に、ディスプレ
イコントローラ60は、NTSC/PAlエンコーダ36に
インタフェースするために使用される回路設計を含む。
同様に、オーディオ出力コントローラ62は、オーディオ
DAC34にインタフェースするために使用される回路設
計を含む。V-shell block 52 couples to memory controller subsystem 58 through memory bus 56. The memory controller subsystem 58 also couples to the CPU bus controller 38. Memory controller subsystem 58 includes memory controller logic that interfaces to external memory 32. A shell block 54 also couples to memory bus 56 as shown.
Display controller 60 is coupled to memory bus 56 and provides output to NTSC / PAl encoder 36. A
The shell block 54 provides an output to the audio output controller 62, which in turn provides an output to the audio DAC 34. Generally, display controller 60 includes the circuit design used to interface to NTSC / PAl encoder 36.
Similarly, audio output controller 62 includes the circuit design used to interface to audio DAC 34.
【0035】上記したように、ストリームアンドホスト
インタフェースサブシステム44は、PTSテーブル46、
コントロールユニット48およびストリームバッファ50を
含む。ストリームバッファ50は、ストリームが処理され
ることができるまで、出力結合されたオーディオ/ビデ
オストリーム(またはPEストリーム)を時間的に貯蔵
するために備えられる。ストリームは、1組のパケット
を含み、各パケットは、見出しおよび対応するデータを
有する。見出しは、パケットをビデオまたはオーディオ
として定義し、データの圧縮を与えるために使用される
圧縮標準に従いそれと共に与えられるビデオまたはオー
ディオデータに関してのさらなる情報を与える。コント
ロールユニット48は、対応するファームウェアの制御下
で、ストリームバッファにおける空間の割当および割当
解除を制御する。As described above, the stream and host interface subsystem 44 includes a PTS table 46,
It includes a control unit 48 and a stream buffer 50. A stream buffer 50 is provided to temporally store the outbound audio / video stream (or PE stream) until the stream can be processed. The stream includes a set of packets, each packet having a header and corresponding data. The header defines the packet as video or audio and gives further information about the video or audio data provided with it according to the compression standard used to provide compression of the data. The control unit 48 controls the allocation and deallocation of space in the stream buffer under the control of the corresponding firmware.
【0036】なかでも特に興味があるのは、各パケット
の見出しの提示時間スタンプ(presentation time stam
p) (PTS)フィールドである。PTSは、パケット
に含まれるデータが表示される(ビデオ)または奏され
る(オーディオ)べき時間を示す。タイムスタンプは、
特定の基本時間(通常、パケットが属する画像または音
のシーケンスの始め)から測定される。入力ストリーム
において検出された各パケットについて、コントロール
ユニット48がPTSテーブル46におけるエントリーを作
る。PTS、タイプ(オーディオまたはビデオ)および
単語の中の見出しの始まりのオフセットが、PTSテー
ブル46に貯蔵される。PTSテーブルは、どのパケット
がAシェル54およびVシェル52によって次にデコードさ
れるべきであるかを決定するために使用される。Of particular interest is the presentation time stamp of the header of each packet.
p) The (PTS) field. The PTS indicates the time at which the data contained in the packet is to be displayed (video) or played (audio). The time stamp is
It is measured from a specific base time (usually at the beginning of the sequence of images or sounds to which the packet belongs). For each packet detected in the input stream, control unit 48 makes an entry in PTS table 46. The PTS, type (audio or video) and the offset of the beginning of the heading within the word are stored in the PTS table 46. The PTS table is used to determine which packets should be decoded next by A-shell 54 and V-shell 52.
【0037】メモリ32は、とりわけ、チャネルバッファ
(channel buffer)において、結合されたオーディオ/ビ
デオストリームのパケットを貯蔵するために使用され
る。複数の独立オーディオおよびビデオデータストリー
ム(multiple independent audio and video data strea
m)は、同時に進行することができる(例えば、コンピュ
ータ画面上での複数のウィンドウは、異なる全動作ビデ
オシーケンスを同時に表示していることができる)。各
独立オーディオまたはビデオデータストリームは、異な
るチャネルであり、異なるチャネルバッファに割当てら
れる。幾つかのチャネルバッファが図3に示される(例
えばメモリ32中のチャネルバッファ64A 、64B および64
C )。コントロールユニット48は、CPU(ストリーム
アンドホストインタフェースサブシステム44に対応する
ファームウェアを実行する)にそのように指示されたと
きに、適当なチャネルバッファ64へのパケットのDMA
転送を行うように構成される。続いて、Vシェル52また
はAシェル54は、パケットを、表示または再生のために
使用可能なフォーマットへとデコードする。The memory 32 includes, among other things, a channel buffer
The channel buffer is used to store packets of the combined audio / video stream. Multiple independent audio and video data strea
m) can proceed simultaneously (e.g., multiple windows on a computer screen can simultaneously display different whole motion video sequences). Each independent audio or video data stream is a different channel and is assigned to a different channel buffer. Several channel buffers are shown in FIG. 3 (eg, channel buffers 64A, 64B and 64 in memory 32).
C). The control unit 48 DMAs the packet to the appropriate channel buffer 64 when so instructed by the CPU (running the firmware corresponding to the stream and host interface subsystem 44).
It is configured to perform a transfer. Subsequently, V-shell 52 or A-shell 54 decodes the packet into a format usable for display or playback.
【0038】チャネルバッファ64を貯蔵することの他に
さらに、メモリ32は、実行のために集積回路30に対応す
るところのファームウェアを貯蔵することができる。こ
のファームウェアは、集積回路30に対応するコンピュー
タシステム中のディスクドライブに永久的に貯蔵され得
るか、またはROM(示されていない)中に貯蔵され得
る。集積回路30を含有するコンピュータシステムの能力
を上げると、このファームウェアはメモリ32にダウンロ
ードされ得る。In addition to storing the channel buffer 64, the memory 32 can store firmware corresponding to the integrated circuit 30 for execution. This firmware may be stored permanently in a disk drive in the computer system corresponding to integrated circuit 30, or may be stored in ROM (not shown). As the capabilities of the computer system containing integrated circuit 30 increase, this firmware can be downloaded to memory 32.
【0039】ここで図4をみると、ビデオシェル(Vシ
ェル)論理52を説明するブロックダイヤグラムが示され
ている。示されているように、Vシェル論理52はCPU
バス40(図3)に結合するためのCPUバスインタフェ
ースユニット80を含む。CPUバスインタフェースユニ
ット80は、マクロブロック処理コア(MBコア)82に結
合し、またビデオ処理コア(Vコア)84に結合する。Turning now to FIG. 4, a block diagram illustrating the video shell (V-shell) logic 52 is shown. As shown, the Vshell logic 52 has a CPU
It includes a CPU bus interface unit 80 for coupling to the bus 40 (FIG. 3). The CPU bus interface unit 80 is coupled to a macroblock processing core (MB core) 82 and to a video processing core (V core) 84.
【0040】Vシェルブロック52はまた、メモリバス56
(図3)に結合するためのメモリインタフェースユニッ
ト86を含む。メモリインタフェースユニット86は、メモ
リバスを通ってメモリコントローラサブシステム58に結
合し、これは、次には外部メモリ32に結合する。先取り
バッファ(pre-fetch buffer)88はメモリインタフェース
ユニット86に結合し、先取りバッファ88は次に、マクロ
ブロック処理コア82にデータを提供するために結合す
る。先取りバッファ88は、MBコア82に与えられる前に
外部メモリ32から取り出されるデータを貯蔵するために
使用される。The V shell block 52 also includes a memory bus 56
3 includes a memory interface unit 86 for coupling to FIG. The memory interface unit 86 couples through a memory bus to the memory controller subsystem 58, which in turn couples to the external memory 32. A pre-fetch buffer 88 couples to the memory interface unit 86, which in turn couples to provide data to the macroblock processing core. The prefetch buffer 88 is used to store data retrieved from the external memory 32 before being provided to the MB core 82.
【0041】MBコア82は、示されているように、補正
動作ベクトルブロック(concealmentmotion vector bloc
k) 90に結合する。MBコア82はまた、示されているよ
うに、参照バッファ論理92に結合し、参照バッファ論理
92にマクロブロックデータを与える。MBコア82は、フ
レーム内でマクロブロックのMPEGデコーディングを
行う。As shown, the MB core 82 includes a correction motion vector block (concealment motion vector block).
k) Bind to 90. MB core 82 also couples to reference buffer logic 92, as shown,
The macro block data is given to 92. The MB core 82 performs MPEG decoding of a macroblock in a frame.
【0042】参照バッファ論理92はまた、メモリインタ
フェースユニット86から参照フレームデータを受け取る
ために結合する。参照バッファ論理92は、動作補償また
はフレーム再構成において使用される1またはそれ以上
の参照マクロブロックを貯蔵するのに使用される。Reference buffer logic 92 also couples to receive reference frame data from memory interface unit 86. Reference buffer logic 92 is used to store one or more reference macroblocks used in motion compensation or frame reconstruction.
【0043】Vコアブロック84は、MPEGビデオデコ
ーディングを実行するための処理パイプライン(process
ing pipeline) を含む。Vコアブロック84は、逆の量子
化論理および、逆の離散的コサイン変換を実行するため
の1またはそれ以上の逆のDCTブロックを含む。Vコ
アブロック84はまた、動作補償を実行するための動作補
償論理を含む。The V core block 84 is a processing pipeline (process) for performing MPEG video decoding.
ing pipeline). V-core block 84 includes one or more inverse DCT blocks to perform inverse quantization logic and inverse discrete cosine transform. V-core block 84 also includes motion compensation logic for performing motion compensation.
【0044】参照バッファ論理92はまたVコアブロック
84に結合され、参照フレームマクロブロックデータをV
コアブロック84に与える。Vコアブロック84は、示され
ているように、再構成バッファ論理94に結合される。動
作補償論理を実行する際に、Vコアブロック84は、参照
バッファ論理92に貯蔵された参照ブロックにアクセス
し、これらのブロックを使用して、時間的に圧縮したフ
レームを再構成し、このフレームは次いで、再構成バッ
ファ論理94に貯蔵される。再構成バッファ論理94はま
た、再構成されたブロックまたはフレーム アウトをメ
モリバス56に与えるためのメモリインタフェースユニッ
ト86に結合し、それによって、再構成されたフレームが
ビデオ画面上での表示のためのディスプレイコントロー
ラ60に与えられ得る。Reference buffer logic 92 also includes a V core block.
84 and the reference frame macroblock data
Give to core block 84. V-core block 84 is coupled to reconstruction buffer logic 94, as shown. In performing the motion compensation logic, the V-core block 84 accesses the reference blocks stored in the reference buffer logic 92 and uses these blocks to reconstruct a temporally compressed frame, Is then stored in the reconstruction buffer logic 94. Reconstruction buffer logic 94 also couples to a memory interface unit 86 for providing reconstructed blocks or frame outs to memory bus 56, whereby the reconstructed frames are displayed for display on a video screen. It may be provided to the display controller 60.
【0045】次に、図5をみると、Aシェルブロック54
の1つの実施態様のブロックダイヤグラムが示されてい
る。Vシェルブロック52を用いてのように、Aシェルブ
ロック54は、CPUバス40を用いてインタフェースする
ためのCPUバスインタフェースユニット100 を含む。
CPUバスインタフェースユニット100 は入力RAM10
2 、オーディオコア(Aコア)104 およびオーディオデ
ータバッファ106 に結合する。Aコア104 はさらに、入
力RAM102 および出力RAM108 に結合される。出力
RAM108 はオーディオ出力コントローラ62に出力を与
え、メモリインタフェースユニット110 に結合される。
メモリインタフェースユニット110 はメモリバス56にイ
ンタフェースするために使用され、オーディオデータバ
ッファ106 に結合される。Next, referring to FIG.
A block diagram of one embodiment of is shown. As with the V shell block 52, the A shell block 54 includes a CPU bus interface unit 100 for interfacing with the CPU bus 40.
CPU bus interface unit 100 has input RAM 10
2. Coupling to the audio core (A core) 104 and the audio data buffer 106. A core 104 is further coupled to an input RAM 102 and an output RAM 108. Output RAM 108 provides output to audio output controller 62 and is coupled to memory interface unit 110.
Memory interface unit 110 is used to interface with memory bus 56 and is coupled to audio data buffer 106.
【0046】概して、圧縮されたオーディオデータは入
力RAM102 へ貯蔵され、Aコア104 によりデコードさ
れ、そして結果が出力RAM108 へと貯蔵される。Aコ
ア104 および付随するコアファームウェアはドルビーA
C3オーディオデコーディングおよびMPEGオーディ
オデコーディングの両方をサポートする。オーディオ出
力コントローラ62はスピーカー上に結果を演奏するため
に、出力RAM108 からデータを読み取る。その上、出
力RAM108 の内容は、メモリインタフェースユニット
110 を経てメモリ12へ貯蔵されることができる。Generally, the compressed audio data is stored in input RAM 102, decoded by A-core 104, and the result is stored in output RAM 108. A core 104 and accompanying core firmware are Dolby A
It supports both C3 audio decoding and MPEG audio decoding. Audio output controller 62 reads data from output RAM 108 to play the results on the speakers. In addition, the contents of the output RAM 108 are stored in the memory interface unit.
It can be stored in memory 12 via 110.
【0047】オーディオデータバッファ106 は、図4に
示した先取りバッファ88と同様に、入力RAM102 にデ
ータを置くに先立って、そのデータを貯蔵するために備
えられる。入力RAM102 に最近貯蔵されたデータがデ
コードされ、対応するデコードされた出力が出力RAM
108 に貯蔵されるとき、データは、オーディオデータバ
ッファ106 から入力RAM102 へと転送される。言い換
えると、オーディオデータバッファ106 は、入力RAM
102 のオーバーランおよびアンダーランの防止を助け
る。The audio data buffer 106, like the prefetch buffer 88 shown in FIG. 4, is provided for storing data before placing the data in the input RAM 102. The data recently stored in the input RAM 102 is decoded, and the corresponding decoded output is output RAM.
When stored in 108, data is transferred from audio data buffer 106 to input RAM 102. In other words, the audio data buffer 106 is
Helps prevent 102 overruns and underruns.
【0048】次に図6をみると、結合されたオーディオ
/ビデオストリームのための、例示的な見出し構造120
を描くダイヤグラムが示されている。見出しは、パケッ
トの開始を識別する、24バイトの開始コードプレフィ
クス122 で始まり、見出し120 に対応するデータが属す
る特定のストリームを識別するところのストリームID
124 が続く。パケット中の多数バイト(見出しおよびデ
ータ)がエンコードされるところのパケット長フィール
ド(packet length field)126が含まれる。最終的に、任
意見出しフィールド(optional header field)128が含ま
れ、これは分解された形で示されている。任意見出しフ
ィールド128 は、1組の追加的な任意フィールド130
(分解された形で示されている)を含み、任意フィール
ド130 はなお別の組の任意フィールド132 (また、分解
された形で示されている)を含む。第1のフラグフィー
ルド134 は任意フィールド130 のどれが含まれるかを示
し、第2のフラグフィールド136 は任意フィールド132
のどれが含まれるかを示す。任意フィールド130 内に、
PTSフィールド138 がある。PTSフィールド138
は、見出し120 に続くデータのための提示時間スタンプ
を含む。ストリームアンドホストインタフェースサブシ
ステム44は、オーディオおよびビデオストリームを同期
化させるための提示時間スタンプを使用する。Turning now to FIG. 6, an exemplary heading structure 120 for the combined audio / video stream.
Is shown. The heading begins with a 24-byte start code prefix 122 that identifies the start of the packet, and a stream ID that identifies the particular stream to which the data corresponding to heading 120 belongs.
Followed by 124. Included is a packet length field 126 where a number of bytes (headings and data) in the packet are encoded. Finally, an optional header field 128 is included, which is shown in an exploded form. Optional heading field 128 is a set of additional optional fields 130
(Shown in exploded form) and optional field 130 includes yet another set of optional fields 132 (also shown in exploded form). A first flag field 134 indicates which of the optional fields 130 are included, and a second flag field 136 indicates an optional field 132.
Indicates which of In optional field 130,
There is a PTS field 138. PTS field 138
Contains the presentation time stamp for the data following the heading 120. Stream and host interface subsystem 44 uses presentation time stamps to synchronize audio and video streams.
【0049】図6に示された残りのフィールドは、当分
野で良く知られているように、MPEG圧縮標準または
ドルビーAC3圧縮標準のいずれかにより定義される値
である。次に続く見出し120 はパケットのためのデータ
である。データがビデオパケットであるなら、MPEG
ビデオ見出しはデータ内に含まれる。同様に、データが
オーディオパケットであるなら、データはMPEGオー
ディオ見出しまたはドルビーAC3オーディオ見出しを
含む。The remaining fields shown in FIG. 6 are values defined by either the MPEG compression standard or the Dolby AC3 compression standard, as is well known in the art. The next heading 120 is the data for the packet. MPEG if the data is a video packet
Video headings are included in the data. Similarly, if the data is an audio packet, the data includes an MPEG audio header or a Dolby AC3 audio header.
【0050】ここで図7〜13をみると、集積回路30の1
つの実施態様に従う、シェルファームウェアルーチン、
コアファームウェアルーチンおよび対応するハードウェ
アのための例示的なフローを与えるフローチャートが示
されている。図7〜10はシェルファームウェアルーチン
であり、図11〜13はコアファームウェアルーチンであ
る。この実施態様について、集積回路に対応するシステ
ムファームウェアルーチンが、実時間動作システム(rea
l time operating system)によって与えられ得る。例示
的な実時間動作システムは、インテル社(Intel Corpora
tion) から入手可能なIASPOX動作システムであ
る。集積回路30に対応するAPI層は、ストリームを開
放し、ストリームを進め(play)、ストリームを休止し、
ストリームの状態を得、多数のフレームを先へ進めある
いは後に戻し、ストリームを止め、かつストリームを再
開するためのルーチンを含む。各ルーチンはストリーム
識別子引数(argument)を取る。開いたルーチン(open ro
utine)はまた、オーディオタイプ(AC3またはMPE
G)を示すタイプ指示子(type designator) を取る。状
態ルーチン(status routine)は、ポインタを状態構造(s
tatus structure)にもっていく。ステップルーチンは多
くのフレームを進めさせる。Referring now to FIGS. 7-13, one of the integrated circuits 30
A shell firmware routine, according to one embodiment,
A flowchart is provided that provides an exemplary flow for a core firmware routine and corresponding hardware. 7 to 10 show a shell firmware routine, and FIGS. 11 to 13 show a core firmware routine. For this embodiment, the system firmware routine corresponding to the integrated circuit is a real-time operating system (rea).
l time operating system). An exemplary real-time operating system is Intel Corpora
IASPOX operating system available from). The API layer corresponding to the integrated circuit 30 releases the stream, plays the stream, pauses the stream,
Includes routines for getting the state of the stream, moving forward or backward a number of frames, stopping the stream, and resuming the stream. Each routine takes a stream identifier argument. Open ro
utine) also has the audio type (AC3 or MPE)
Take a type designator indicating G). The status routine stores the pointer in the status structure (s
tatus structure). The step routine will advance many frames.
【0051】図7は、ストリームアンドホストインタフ
ェースサブシステム44の演算のフローチャートである。
ハードウェアにより実行されるそれらのステップを下に
示す。FIG. 7 is a flowchart of the operation of the stream and host interface subsystem 44.
The steps performed by the hardware are shown below.
【0052】最初に、ストリームアンドホストインタフ
ェースサブシステム44を、見出し120 の開始コードを検
出するようにプログラムする(ステップ150 )。プログ
ラムされると、コントロールユニット48は、ストリーム
バッファ50により受け取られるストリームを、結合され
たオーディオ/ビデオストリーム見出し120 の開始コー
ドについて、検査し始める(ステップ152 )。結合され
たオーディオ/ビデオストリームはまた、PEストリー
ム(PES)と称する。開始コードが検出されると、ス
トリームアンドホストインタフェースサブシステム44
は、パケットが検出されたことを示すために、状態レジ
スタを更新する。コアファームウェアは、開始コードが
検出されたことの指示が観察されるまで、状態レジスタ
をポーリングする(ステップ154 および156 )。Initially, the stream and host interface subsystem 44 is programmed to detect the start code of heading 120 (step 150). Once programmed, the control unit 48 begins checking the stream received by the stream buffer 50 for the start code of the combined audio / video stream header 120 (step 152). The combined audio / video stream is also called a PE stream (PES). When a start code is detected, the stream and host interface subsystem 44
Updates the status register to indicate that a packet has been detected. The core firmware polls the status register until an indication that a start code has been detected is observed (steps 154 and 156).
【0053】開始コードを検出すると、その開始コード
は、PTSテーブル46に記された開始コードと比べられ
る(ステップ158 および160 )。開始コードがPTSテ
ーブルに見つからないと、次に、開始コードについてP
TSの位置をつきとめるために、見出し120 が構文解析
される(ステップ162 )。次に、開始コードおよびPT
Sは開始コードテーブルに貯蔵される(ステップ164
)。ステップ166 および168 は、開始コードがPTS
テーブル46に見つかったかどうかに関係なく実行され
る。ステップ166 では、ファームウェアによって選択さ
れたチャネルバッファへの、受け取られたストリームの
DMAを実行して、受け取られたストリームを貯蔵する
ように、ファームウェアがストリームアンドホストイン
タフェース44をプログラムする。ステップ168 では、D
MA操作が実行される。本発明の実施態様においては、
ステップ152 〜168 はハードウェアステップであり、他
のステップは対応するシェルファームウェアルーチンに
おいてコード化される。Upon detecting the start code, the start code is compared with the start code described in the PTS table 46 (steps 158 and 160). If the start code is not found in the PTS table,
Heading 120 is parsed to locate the TS (step 162). Next, start code and PT
S is stored in the start code table (step 164)
). Steps 166 and 168 are when the start code is PTS
Executed regardless of whether it is found in table 46. In step 166, the firmware programs the stream and host interface 44 to perform a DMA of the received stream to a channel buffer selected by the firmware to store the received stream. In step 168, D
An MA operation is performed. In an embodiment of the present invention,
Steps 152-168 are hardware steps, the other steps are coded in corresponding shell firmware routines.
【0054】ここで図8をみると、Vシェル52の演算の
フローチャートが示されている。ハードウェアにより実
行されるそれらのステップを以下に示す。Referring now to FIG. 8, there is shown a flowchart of the operation of the V shell 52. The steps performed by the hardware are described below.
【0055】PTSテーブルにおけるエントリーに従っ
て、ビデオチャネルバッファの1つにおけるパケット
が、デコーディングのために選択される。例えば、最も
早い(すなわち数的には最も小さい)PTSを有するビ
デオパケットが選択されることができる。MBコア82
は、デコードされるべきメモリ32中のパケットのメモリ
アドレスを用いてプログラムされる(ステップ180 )。
次に、MBコア82は、メモリ32から先取りバッファ88へ
の、パケットのDMA転移を開始する(ステップ182
)。十分なデータが先取りバッファ中へ読み込まれる
と、パケットの処理が始まる(ステップ184 および186
)。1つの実施態様によれば、十分なデータは、75
%満たされている先取りバッファとして定義される。し
かし、十分なデータの定義は、DMAコントローラのサ
ービス時間を含む種々の要素によって、著しく変わり得
ることが注意される。一般に、先取りバッファ88は、V
コア84についてのデータのオーバーランおよびアンダー
ランを防ぐために与えられる。先取りバッファ88の大き
さおよび十分と考えられるレベルは、分析およびシミュ
レーションを通して決定され得る。According to an entry in the PTS table, a packet in one of the video channel buffers is selected for decoding. For example, the video packet with the earliest (ie, numerically smallest) PTS can be selected. MB core 82
Is programmed using the memory address of the packet in memory 32 to be decoded (step 180).
Next, the MB core 82 starts the DMA transfer of the packet from the memory 32 to the prefetch buffer 88 (step 182).
). Once enough data has been read into the prefetch buffer, processing of the packet begins (steps 184 and 186).
). According to one embodiment, the sufficient data is 75
Defined as a prefetch buffer that is% full. It is noted, however, that the definition of sufficient data may vary significantly depending on various factors, including the service time of the DMA controller. Generally, the prefetch buffer 88 has a V
Provided to prevent overruns and underruns of data for core 84. The size of prefetch buffer 88 and the level deemed sufficient may be determined through analysis and simulation.
【0056】先取りバッファにおいて十分なデータが受
け取られると、Vコア84に対応するコアファームウェア
ルーチンに対して呼び出しがなされる(ステップ188
)。コアファームウェアルーチンは、(MPEG圧縮
標準によって定義されたように)パケットのビデオ見出
し部分をデコードする。ビデオ見出しをデコードする
と、量子化マトリックスが見出しに含まれるなら、次に
量子化マトリックスがVコア84中に貯蔵される(ステッ
プ190 )。特定の画像(ビデオ見出しから抽出された)
を圧縮解除(decompress)するために使用される追加的な
情報は、Vコア84中にコード化される(ステップ192
)。PまたはBフレームがデコードされるべきなら、
参照バッファ論理92が、PまたはBフレームにおいて参
照される画像を検出するためにプログラムされる(ステ
ップ194 )。それによってこれらのフレームは、デコー
ドすると、参照バッファ中に貯蔵される。When enough data has been received in the prefetch buffer, a call is made to the core firmware routine corresponding to Vcore 84 (step 188).
). The core firmware routine decodes the video header portion of the packet (as defined by the MPEG compression standard). Upon decoding the video header, if the quantization matrix is included in the header, then the quantization matrix is stored in V-core 84 (step 190). Specific images (extracted from video headings)
The additional information used to decompress is encoded into the V-core 84 (step 192).
). If a P or B frame is to be decoded,
Reference buffer logic 92 is programmed to detect the image referenced in the P or B frame (step 194). Thereby, when decoded, these frames are stored in a reference buffer.
【0057】再構成バッファは、MBコア82およびVコ
ア84の演算によって与えられる再構成画像を受け取るよ
うにプログラムされる(ステップ196 )。次に、MBコ
ア82は、先取りバッファ88におけるマクロブロックのデ
コーディングを開始するようにプログラムされ、デコー
ドされたパケットにより示される画像のためのマクロブ
ロックは、MBコア82およびVコア84によって処理され
る(ステップ198 および200 )。MBコア82は、スライ
ス処理または1度にマクロブロックの列を処理するため
に構成され得る。MBコア82は、マクロブロックのスラ
イスまたは列のいずれかをデコードし、逆のDCTを経
てピクセルを再構成するところのVコア84に情報を与
え、かつ量子化マトリックスを、MBコア82により与え
られた値に適用する。スライスまたは列の処理が完了し
たら、次に、次のマクロブロックの列またはスライスが
MBコア82に与えられ(ステップ202 )、または画像が
完成したら、デコードされるべきパケットにおける次の
画像のためにステップ180 に戻ることが行われる。本発
明の実施態様において、ステップ182 および200 はハー
ドウェアにおいて実行され、残りのステップは、対応す
るシェルファームウェアルーチンにおいて実行される。The reconstruction buffer is programmed to receive the reconstructed image provided by the operation of MB core 82 and V core 84 (step 196). Next, MB core 82 is programmed to start decoding the macroblock in prefetch buffer 88, and the macroblock for the image indicated by the decoded packet is processed by MB core 82 and V core 84. (Steps 198 and 200). MB core 82 may be configured for slicing or processing a sequence of macroblocks at a time. MB core 82 decodes either slices or columns of the macroblock, provides information to V core 84 where the pixels are reconstructed via inverse DCT, and a quantization matrix provided by MB core 82. Applied to the value. Once the processing of the slice or column is complete, the next column or slice of the macroblock is then provided to the MB core 82 (step 202), or once the image is complete, for the next image in the packet to be decoded. Returning to step 180 is performed. In an embodiment of the present invention, steps 182 and 200 are performed in hardware, and the remaining steps are performed in corresponding shell firmware routines.
【0058】ここで図9をみると、ディスプレイコント
ローラ60の演算のフローチャートが示されている。ハー
ドウェアにより実行されるそれらのステップを以下に示
す。制御レジスタは、フレームがメモリに貯蔵されると
ころのフォーマット、ビデオディスプレイの列当たりお
よびカラム当たりのマクロブロックの数、および4:
2:0〜4:2:2のクロマ(chroma)(彩度)/ルマ(l
uma)提示の変換スキームをディスプレイコントローラに
示すためにディスプレイコントローラ60に含まれる。制
御レジスタはステップ210 でプログラムされる。2組の
レジスタが、ディスプレイのためのマクロブロックを貯
蔵するために使用可能である。このようにして、ディス
プレイコントローラ60は1組のレジスタの内容を表示す
ることができ、一方、他の組のレジスタは引き続くマク
ロブロックを用いてプログラムされる。ディスプレイコ
ントローラ60が1組のレジスタに貯蔵されたマクロブロ
ックを表示することを完了したら、その組は引き続くデ
ータを用いて更新のために解放されていることを示され
る。対応するファームウェアはディスプレイのためのレ
ジスタの組を用いて交替する。したがって、対応するフ
ァームウェアは、プログラムされるべきレジスタの組の
状態をチェックする(それぞれ、第1の組についてはス
テップ212 および214 および第2の組についてはステッ
プ220 および222 )。プログラムされるべきレジスタの
組が使用可能であると、レジスタは、ディスプレイされ
るべきマクロブロックデータを用いてプログラムされる
(それぞれステップ216 および224 )。次に、マクロブ
ロックデータを表示する(それぞれステップ218 および
226 )。本発明の実施態様においては、ステップ218 お
よび226 はハードウェアにおいて実行され、残りのステ
ップは対応するシェルファームウェアルーチンにおいて
実行される。Referring now to FIG. 9, there is shown a flowchart of the operation of the display controller 60. The steps performed by the hardware are described below. The control registers include the format in which the frames are stored in memory, the number of macroblocks per column and per column of the video display, and
2: 0 to 4: 2: 2 chroma (chroma) / luma (l
uma) Included in display controller 60 to indicate the proposed conversion scheme to the display controller. The control register is programmed in step 210. Two sets of registers are available for storing macroblocks for display. In this way, the display controller 60 can display the contents of one set of registers, while the other set of registers are programmed using subsequent macroblocks. When the display controller 60 has completed displaying the macroblocks stored in a set of registers, the set is indicated to be free for updating with subsequent data. The corresponding firmware switches using a set of registers for the display. Accordingly, the corresponding firmware checks the status of the set of registers to be programmed (steps 212 and 214 for the first set and steps 220 and 222 for the second set, respectively). If the set of registers to be programmed is available, the registers are programmed with the macroblock data to be displayed (steps 216 and 224, respectively). Next, the macroblock data is displayed (steps 218 and
226). In an embodiment of the present invention, steps 218 and 226 are performed in hardware, and the remaining steps are performed in corresponding shell firmware routines.
【0059】ここで図10をみると、Aシェル54の演算の
フローチャートが示されている。ハードウェアにより実
行されるそれらのステップを以下に示す。Referring now to FIG. 10, there is shown a flowchart of the operation of the A shell 54. The steps performed by the hardware are described below.
【0060】デコードされるべき次のオーディオパケッ
トは、PTSテーブル46におけるエントリーに従って、
メモリ32のオーディオチャネルバッファから選ばれる。
ドルビーAC3標準またはMPEG標準に従い、(オー
ディオパケットをコード化するのにどちらの標準が用い
られても)Aコア104 に対応するコアファームウェアを
経て、パケットが読み出され、デコードされる(ステッ
プ230 )。デコードされたデータは入力RAM102 に貯
蔵される(ステップ232 )。デコードされたデータの位
置およびタイプを定義する制御レジスタがプログラムさ
れ(ステップ234 )、デコードが始まるべきことを示す
制御レジスタが同様にプログラムされる。The next audio packet to be decoded, according to the entry in the PTS table 46,
It is selected from the audio channel buffer in the memory 32.
The packets are read and decoded according to the Dolby AC3 standard or the MPEG standard, via the core firmware corresponding to the A core 104 (whichever standard is used to encode the audio packets) (step 230). . The decoded data is stored in the input RAM 102 (step 232). A control register defining the location and type of the decoded data is programmed (step 234), and a control register indicating that decoding should begin is similarly programmed.
【0061】多くのタイプのオーディオストリームは、
他におけるよりも、オーディオスペクトルのある周波数
範囲(またはサブバンド)において高い濃度の音を持
つ。したがって、逆DCTまたはパルスコード化された
モジュール化(PCM)変換を実行するための係数は、
最も正確に元の音を再生するために、異なるサブバンド
について異なり得る。したがって、サブバンドは別々に
合成(または再構成)される(ステップ236 )。最後
に、再構成された音が再生される(ステップ238 )。再
構成された音がスピーカでの再生を完了すると、次のオ
ーディオパケットが処理され得る(ステップ240 および
242 )。本発明の実施態様においては、ステップ236 お
よび238 はAシェル54により実行され、残りのステップ
は対応するシェルファームウェアルーチンにおいて実行
される。Many types of audio streams are:
It has a higher density of sound in some frequency ranges (or sub-bands) of the audio spectrum than in others. Therefore, the coefficients for performing an inverse DCT or pulse coded modularization (PCM) transform are:
It may differ for different subbands to reproduce the original sound most accurately. Accordingly, the subbands are combined (or reconstructed) separately (step 236). Finally, the reconstructed sound is played (step 238). Once the reconstructed sound has finished playing on the speaker, the next audio packet may be processed (steps 240 and
242). In an embodiment of the present invention, steps 236 and 238 are performed by A shell 54, and the remaining steps are performed in corresponding shell firmware routines.
【0062】ここで図11をみると、Vコア84のためのコ
アファームウェアルーチンのフローチャートが示されて
いる。Vコア84のためのコアファームウェアは、MPE
Gビデオストリームのためのビデオ見出しパーサを含
む。MPEGビデオ見出しは、続く画像のシーケンスを
定義するシーケンス見出しを含み得る。シーケンスは、
画像の複数の群を含むことができ、そのそれぞれが一群
の画像(GOP)見出しを持つ。最後に、各画像は対応
する画像見出しを持つ。Turning now to FIG. 11, a flowchart of a core firmware routine for the V-core 84 is shown. The core firmware for Vcore 84 is MPE
Includes a video header parser for the G video stream. The MPEG video heading may include a sequence heading that defines a sequence of subsequent images. The sequence is
Multiple groups of images can be included, each with a group of image (GOP) headings. Finally, each image has a corresponding image header.
【0063】ステップ250 において、シーケンス見出し
がデコードされる。MPEG2シーケンス見出しは、シ
ーケンス拡張およびユーザ定義された拡張を含むことが
できる。これらのフィールドは検出され、かつ同様にデ
コードされる(ステップ252および254 )。次に、ビデ
オコアファームウェアルーチンは、GOP見出しが検出
されるかどうかを決定する(ステップ256 )。GOP見
出しが検出されると、GOP見出しおよびユーザデータ
拡張(MPEG2)がデコードされる(ステップ258 お
よび260 )。画像見出しがデコードされ(ステップ262
)、ならびに画像コード化拡張およびユーザ拡張がデ
コードされる(MPEG2、ステップ264および266
)。最後に、画像データ自体が場所を突きとめられ、
そしてMBコア82/Vコア84に対して与えられる(ステ
ップ268 )。シーケンスが終わると、次にビデオコアフ
ァームウェアルーチンが完成であり、そしてステップ25
0 に戻って次のシーケンスをデコードする。シーケンス
が終わらないと、ビデオコアファームウェアルーチン
が、さらなるデコーディングのためにステップ256 に戻
る(ステップ270 )。In step 250, the sequence header is decoded. MPEG2 sequence headers can include sequence extensions and user-defined extensions. These fields are detected and similarly decoded (steps 252 and 254). Next, the video core firmware routine determines whether a GOP header is detected (step 256). If a GOP header is detected, the GOP header and user data extension (MPEG2) are decoded (steps 258 and 260). The image header is decoded (step 262).
), And the image coding and user extensions are decoded (MPEG2, steps 264 and 266)
). Finally, the image data itself is located
Then, it is given to the MB core 82 / V core 84 (step 268). At the end of the sequence, the video core firmware routine is now complete, and step 25
Return to 0 to decode next sequence. If the sequence is not over, the video core firmware routine returns to step 256 for further decoding (step 270).
【0064】図12および13は、Aコア104 と共に使用さ
れるところのコアファームウェアルーチンを描く。上記
したように、Aコア104 は、サブバンド合成およびオー
ディオ再生機能を与える。コアファームウェアルーチン
は、ドルビーAC3デコーディング(図12)およびMP
EGデコーディング(図13)を与える。当業者が認識す
るように、ステップ280 〜296 は、デコーディングAC
3オーディオにおけるステップである。入力パラメータ
298 〜312 は、デコードされるオーディオパケットの見
出しからデコードされる。同様に、図13のステップ330
〜340 は、MPEG圧縮標準(例えば適応パルス符号変
調(adaptive pulse code modulation))に従って、オー
ディオをデコーディングする段階を含む。FIGS. 12 and 13 depict a core firmware routine that is used with the A-core 104. As described above, A-core 104 provides sub-band synthesis and audio playback functions. The core firmware routine uses Dolby AC3 decoding (FIG. 12) and MP
Give EG decoding (FIG. 13). As those skilled in the art will recognize, steps 280-296 are performed by decoding AC
Steps in 3 audios. Input parameters
298 to 312 are decoded from the header of the audio packet to be decoded. Similarly, step 330 in FIG.
340 includes decoding audio according to the MPEG compression standard (e.g., adaptive pulse code modulation).
【0065】上記の開示に従い、有利に設計済みのコア
およびシェルを用いてその開発プロセスを促進するとこ
ろの階層集積回路が示される。ハードウェアの各レベル
についてのファームウェアルーチンを有利に識別すると
ころの対応する階層ファームウェア構造が示される。ハ
ードウェアの各部分に対応するファームウェアを識別す
ることによって、ファームウェア再使用が容易にされ
る。In accordance with the above disclosure, there is shown a hierarchical integrated circuit that advantageously utilizes a predesigned core and shell to expedite its development process. A corresponding hierarchical firmware structure is shown that advantageously identifies firmware routines for each level of hardware. By identifying the firmware corresponding to each piece of hardware, firmware reuse is facilitated.
【0066】上記の開示が完全に正しく認識されたら、
多くの変形および変更が当業者に明白になるであろう。
特許請求の範囲が、そのような変形および変更のすべて
を包含すると解釈されることが意図される。Once the above disclosure has been completely and correctly recognized,
Many variations and modifications will be apparent to those skilled in the art.
It is intended that the appended claims be construed to include all such variations and modifications.
【図1】図1は、階層集積回路のブロックダイヤグラム
である。FIG. 1 is a block diagram of a hierarchical integrated circuit.
【図2】図2は、図1に描かれた集積回路と共に使用さ
れる、階層的ファームウェア構造を描くダイヤグラムで
ある。FIG. 2 is a diagram depicting a hierarchical firmware structure used with the integrated circuit depicted in FIG. 1;
【図3】図3は、集積回路の1つの実施態様のブロック
ダイヤグラムである。FIG. 3 is a block diagram of one embodiment of an integrated circuit.
【図4】図4は、図3に示されたVシェルブロックの1
つの実施態様のブロックダイヤグラムである。FIG. 4 is a view showing one of the V-shell blocks shown in FIG. 3;
4 is a block diagram of one embodiment.
【図5】図5は、図3に示されたAシェルブロックの1
つの実施態様のブロックダイヤグラムである。FIG. 5 is a view showing one of A shell blocks shown in FIG. 3;
4 is a block diagram of one embodiment.
【図6】図6は、結合されたオーディオ/ビデオストリ
ームのための見出し構造を描くダイヤグラムである。FIG. 6 is a diagram depicting a heading structure for a combined audio / video stream.
【図7】図7は、図3に示されたストリームアンドホス
トインタフェースサブシステムに対応するファームウェ
アの演算を描くフローチャートである。FIG. 7 is a flowchart depicting firmware operations corresponding to the stream and host interface subsystem shown in FIG. 3;
【図8】図8は、図3に示されたVシェルブロックに対
応するファームウェアの演算を描くフローチャートであ
る。FIG. 8 is a flowchart illustrating an operation of firmware corresponding to the V-shell block shown in FIG. 3;
【図9】図9は、図3に示されたディスプレイコントロ
ーラに対応するファームウェアの演算を描くフローチャ
ートである。FIG. 9 is a flowchart illustrating an operation of firmware corresponding to the display controller shown in FIG. 3;
【図10】図10は、図3に示されたAシェルブロック
に対応するファームウェアの演算を描くフローチャート
である。FIG. 10 is a flowchart illustrating an operation of firmware corresponding to the A-shell block shown in FIG. 3;
【図11】図11は、図4に示されたVコアブロックに
対応するファームウェアの演算を描くフローチャートで
ある。FIG. 11 is a flowchart illustrating an operation of firmware corresponding to the V-core block illustrated in FIG. 4;
【図12】図12は、ドルビーAC3オーディオ圧縮が
使用されるときに、図5に示されたAコアブロックに対
応するファームウェアの演算を描くフローチャートであ
る。FIG. 12 is a flowchart depicting firmware operations corresponding to the A core block shown in FIG. 5 when Dolby AC3 audio compression is used.
【図13】図13は、MPEGオーディオ圧縮が使用さ
れるときに、図5に示されたAコアブロックに対応する
ファームウェアの演算を描くフローチャートである。FIG. 13 is a flowchart depicting firmware computations corresponding to the A core block shown in FIG. 5 when MPEG audio compression is used.
───────────────────────────────────────────────────── フロントページの続き (72)発明者 スリニバサ アール. マラディ アメリカ合衆国,カリフォルニア州 95135,サン ジョゼ,シルバーランド ドライブ 3101 ──────────────────────────────────────────────────続 き Continuation of front page (72) Inventor Srinivasa R. Maladie United States, California 95135, San Jose, Silverland Drive 3101
Claims (20)
で、第1のコアに対する第1の入力値に基づいて演算し
て第1の定義済みの結果を生じるように構成された第1
のコア;第2のファームウェアルーチンの制御下で、第
2のコアに対する第2の入力値に基づいて演算して第2
の定義済みの結果を生じるように構成された第2のコ
ア;前記第1のコアが結合されている第1のシェルであ
って、ここで前記第1のシェルはバスに結合され、かつ
前記第1のシェルは第3のファームウェアルーチンの制
御下で、前記バスへのインタフェースを提供するように
構成され、かつ前記第3のファームウェアルーチンは、
前記第1の入力値が前記バスを経て与えられると前記第
1のファームウェアルーチンを呼び出すように構成さ
れ、それによって前記第1の定義済みの結果が生じると
ころの第1のシェル;および前記第2のコアが結合され
ている第2のシェルであって、ここで前記第2のシェル
は前記バスに結合され、かつ前記第2のシェルは第4の
ファームウェアルーチンの制御下で、前記バスへのイン
タフェースを提供するように構成され、かつ前記第4の
ファームウェアルーチンは、前記第2の入力値が前記バ
スを経て与えられると前記第2のファームウェアルーチ
ンを呼び出すように構成され、それによって前記第2の
定義済みの結果が生じるところの第2のシェルを含む集
積回路。A first firmware configured to operate under a first firmware routine based on a first input value to a first core to produce a first defined result.
A second core, based on a second input value to the second core, under the control of a second firmware routine.
A second core configured to produce the defined result of the first core, wherein the first shell is coupled to the first core, wherein the first shell is coupled to a bus; The first shell is configured to provide an interface to the bus under control of a third firmware routine, and wherein the third firmware routine comprises:
A first shell configured to invoke the first firmware routine when the first input value is provided over the bus, thereby producing the first predefined result; and the second shell. A second shell, wherein the second shell is coupled to the bus, and the second shell is connected to the bus under control of a fourth firmware routine. The fourth firmware routine is configured to provide an interface, and wherein the fourth firmware routine is configured to invoke the second firmware routine when the second input value is provided over the bus, whereby the second firmware routine is configured. An integrated circuit including a second shell, wherein the defined result of the second shell occurs.
を含み、前記第1の組のバッファが、前記第1のコアに
よるそこでの演算に先立って、前記第1の入力値を貯蔵
するために使用され、かつ前記第1の組のバッファがさ
らに前記第1の定義済みの結果を貯蔵するために使用さ
れる請求項1記載の集積回路。2. The first shell includes a first set of buffers, wherein the first set of buffers stores the first input value prior to an operation thereon by the first core. 2. The integrated circuit of claim 1, wherein the first set of buffers is further used to store the first defined result.
を含み、前記第2の組のバッファが、前記第2のコアに
よるそこでの演算に先立って、前記第2の入力値を貯蔵
するために使用され、かつ前記第2の組のバッファがさ
らに前記第2の定義済みの結果を貯蔵するために使用さ
れる請求項1記載の集積回路。3. The second shell includes a second set of buffers, wherein the second set of buffers stores the second input value prior to an operation thereon by the second core. 2. The integrated circuit of claim 1, wherein the second set of buffers is further used to store the second defined result.
請求項1記載の集積回路。4. The integrated circuit according to claim 1, wherein said integrated circuit includes an MPEG decoder.
み、かつ前記第1の入力値がMPEGビデオストリーム
を含む請求項4記載の集積回路。5. The integrated circuit of claim 4, wherein said first shell comprises a video shell, and wherein said first input value comprises an MPEG video stream.
のために前記MPEGビデオストリームを変換するよう
に構成されたビデオコアを含む請求項5記載の集積回
路。6. The integrated circuit according to claim 5, wherein said first core includes a video core configured to convert said MPEG video stream for display on a video screen.
の前記MPEGビデオストリームから生成した画像を表
示するように構成されたディスプレイコントローラに結
合され、かつ前記第1のシェルが、前記ディスプレイコ
ントローラに前記画像を転送するように構成される請求
項6記載の集積回路。7. The first shell is coupled to a display controller configured to display an image generated from the MPEG video stream on the video screen, and the first shell is connected to the display controller. 7. The integrated circuit according to claim 6, wherein the integrated circuit is configured to transfer the image.
Gビデオストリーム内にマクロブロックをデコードする
ように構成された第3のコアを含む請求項6記載の集積
回路。8. The MPE further comprising the first shell.
7. The integrated circuit of claim 6, including a third core configured to decode macroblocks in the G video stream.
含み、かつ前記第2の入力値がMPEGオーディオスト
リームを含む請求項4記載の集積回路。9. The integrated circuit according to claim 4, wherein said second shell comprises an audio shell and said second input value comprises an MPEG audio stream.
が、ドルビーAC3圧縮標準を用いて圧縮される請求項
9記載の集積回路。10. The integrated circuit of claim 9, wherein said MPEG audio stream is compressed using a Dolby AC3 compression standard.
が、適応パルス符号変調圧縮標準を用いて圧縮される請
求項9記載の集積回路。11. The integrated circuit of claim 9, wherein said MPEG audio stream is compressed using an adaptive pulse code modulation compression standard.
生のために前記MPEGオーディオストリームを変換す
るように構成されたオーディオコアを含む請求項9記載
の集積回路。12. The integrated circuit according to claim 9, wherein said second core comprises an audio core configured to convert said MPEG audio stream for playback on a speaker.
ーディオストリームから生成した音を前記スピーカに伝
達するように構成されたオーディオ出力コントローラに
結合され、かつ前記第2のシェルが、前記オーディオ出
力コントローラに前記音を転送するように構成される請
求項12記載の集積回路。13. The audio output controller, wherein the second shell is coupled to an audio output controller configured to transmit sound generated from the MPEG audio stream to the speaker, and wherein the second shell includes the audio output controller. 13. The integrated circuit according to claim 12, wherein said integrated circuit is configured to transfer said sound.
て集積回路内の第1のシェルを制御すること;および第
2のファームウェアルーチンを用いて前記第1のシェル
内の第1のコアを制御することを含む集積回路の操作方
法。14. Controlling a first shell in the integrated circuit using a first firmware routine; and controlling a first core in the first shell using a second firmware routine. An operation method of an integrated circuit including:
シェルの制御により開始される請求項14記載の方法。15. The method of claim 14, wherein controlling the first core is initiated by controlling the first shell.
前記第2のファームウェアルーチンを呼び出す請求項1
5記載の方法。16. The method of claim 1, wherein the first firmware routine calls the second firmware routine.
5. The method according to 5.
て、前記第1のファームウェアルーチンおよび前記第2
のファームウェアルーチンをスケジュールすることを含
む請求項16記載の方法。17. The method according to claim 17, wherein the first firmware routine and the second firmware routine are executed using a third firmware routine.
17. The method of claim 16, comprising scheduling a firmware routine of.
ンを用いて前記集積回路内で第2のシェルを制御するこ
と、および第5のファームウェアルーチンを用いて前記
第2のシェル内で第2のコアを制御することを含む請求
項14記載の方法。18. A method for controlling a second shell in the integrated circuit using a fourth firmware routine, and controlling a second core in the second shell using a fifth firmware routine. 15. The method of claim 14, comprising controlling.
複数のコアであって該複数のコアのそれぞれが前記複数
のシェルの1つに含まれるところの複数のコアを含む集
積回路であって、ここで前記集積回路と共に使用される
ファームウェア構造が、複数のシェルファームウェアル
ーチンおよび複数のコアファームウェアルーチンへモジ
ュール化され、前記複数のシェルファームウェアルーチ
ンのそれぞれが前記複数のシェルの異なる1つに対応
し、かつ前記複数のコアファームウェアルーチンのそれ
ぞれが前記複数のコアの異なる1つに対応するところの
集積回路。19. An integrated circuit comprising a plurality of shells coupled to each other; and a plurality of cores, each of the plurality of cores being included in one of the plurality of shells. The firmware structure used with the integrated circuit is modularized into a plurality of shell firmware routines and a plurality of core firmware routines, each of the plurality of shell firmware routines corresponding to a different one of the plurality of shells, and An integrated circuit wherein each of said plurality of core firmware routines corresponds to a different one of said plurality of cores.
記複数のコアファームウェアルーチンおよび前記複数の
シェルファームウェアルーチンをスケジュールするのに
使用されるシステムファームウェアルーチンを含む請求
項19記載の集積回路。20. The integrated circuit of claim 19, wherein said firmware structure further comprises a system firmware routine used to schedule said plurality of core firmware routines and said plurality of shell firmware routines.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US75221096A | 1996-11-19 | 1996-11-19 | |
US752,210 | 1996-11-19 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH10303308A true JPH10303308A (en) | 1998-11-13 |
Family
ID=25025353
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP9334963A Pending JPH10303308A (en) | 1996-11-19 | 1997-11-19 | Integrated circuit having cores and shells and hierarchical firmware therefor |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH10303308A (en) |
-
1997
- 1997-11-19 JP JP9334963A patent/JPH10303308A/en active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2837819B2 (en) | Digital signal decoder system | |
KR100418437B1 (en) | A moving picture decoding processor for multimedia signal processing | |
US6542541B1 (en) | Method and apparatus for decoding MPEG video signals using multiple data transfer units | |
US8437404B2 (en) | Implementation of a DV video decoder with a VLIW processor and a variable length decoding unit | |
US6574273B1 (en) | Method and apparatus for decoding MPEG video signals with continuous data transfer | |
CA2096585A1 (en) | Decoder for compressed video signals | |
KR19980018215A (en) | Video data processing method and device | |
JP5053254B2 (en) | Multi-standard variable decoder with hardware accelerator | |
US8121189B2 (en) | Video decoding using created reference pictures | |
US6720893B2 (en) | Programmable output control of compressed data from encoder | |
KR100440715B1 (en) | A method and apparatus for video decoding | |
US6850568B1 (en) | Method and apparatus for decoding mpeg video signals | |
KR101065546B1 (en) | A hardware multi-standard video decoder device | |
EP1689187A1 (en) | Method and system for video compression and decompression (CODEC) in a microprocessor | |
US20060176960A1 (en) | Method and system for decoding variable length code (VLC) in a microprocessor | |
JP2002112268A (en) | Compressed image data decoding apparatus | |
US8948263B2 (en) | Read/write separation in video request manager | |
US7720294B2 (en) | Unified decoder architecture | |
JPH10303308A (en) | Integrated circuit having cores and shells and hierarchical firmware therefor | |
US6298091B1 (en) | Method to play audio and video clips through MPEG decoders | |
US20040252762A1 (en) | System, method, and apparatus for reducing memory and bandwidth requirements in decoder system | |
Konstantinides et al. | Design of an MPEG-2 codec | |
US7423652B2 (en) | Apparatus and method for digital video decoding | |
US20050259735A1 (en) | System and method for video error masking using standard prediction | |
US20080056377A1 (en) | Neighboring Context Management |