(57)【特許請求の範囲】
【請求項１】
ビデオデータをエンコーディングまたはデコーディングするためのシステムにおいて、
ビデオデータに対して線形変換を遂行するベクトル処理器、
前記ベクトル処理器の出力を圧縮したり、前記のベクトル処理器に入力するためにビデオデータを復元するビットストリーム処理器、及び、
前記のベクトル処理器と前記ビットストリーム処理器の動作を同期化させる制御回路を含んでおり；該制御回路は、前記ビットストリーム処理器を複数のビデオデータストリームを切り替えながら処理するように制御し、これにより、前記のシステムが２個のビデオデータストリームを実時間的にエンコーディングまたはデコーディングできるように、前記のビットストリーム処理器が２個のビデオデータストリームをほぼ同時に処理することができることを特徴とするビデオデータのエンコーディングまたはデコーディングシステム。
【請求項２】
前記の各ビデオデータストリームは、動画像を表すことを特徴とする請求項１記載のビデオデータのエンコーディングまたはデコーディングシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータによるデータ処理に関し、特にコンピュータによるビデオデータ処理に関する。
【０００２】
【従来の技術】
通常、コンピュータはシステムデータを圧縮したり復元するために使用されて来た。システムデータには、停止及び／または動画像のイメージを含むビデオデータが含まれる。また、システムデータには、オーディオデータ、例えば動画像のサウンドトラックが含まれる。ビデオデータの高速処理が可能な方法及び回路を提供することが好ましい。
【０００３】
【発明が解決しようとする課題】
従って、本発明の目的は、ビデオデータの高速処理ができる方法及び回路を提供することにある。
【０００４】
【課題を解決するための手段】
いくつかの実施例において、本発明によるコンピュータシステムは、同時に動作可能な３個の処理器、すなわちスカラー処理器、ベクトル処理器及びビットストリーム処理器を含む。ビデオデータをエンコーディングまたはデコーディングすることにおいて、ベクトル処理器は、単一命令多重データ(Single Instruction Multiple Data：SIMD）処理器により効率的に行われる動作を遂行する。このような動作としては、１）離散余弦変換(Discrete Cosine Transform：DCT）のような線形データ変換、２）モーション補償などがある。ビットストリーム処理器は、ワードまたは半ワード(half-words)より特定のビット上における動作を含む動作を遂行する。このような動作としては、例えば、ＭＰＥＧ−１、ＭＰＥＧ−２、Ｈ．２６１、Ｈ．２６３に使われるハフマン(huffman)及びＲＬＣエンコーディングとデコーディングなどがある。スカラー処理器は、ハイレベルビデオ処理（例えば、ピクチャーレベル処理）を遂行し、ベクトル及びビットストリーム処理器の動作を同期化させ、外部装置のインターフェースを制御する。
いつくかの実施例において、コンピュータシステムは、多数のデータストリームを同時に処理することができる。その結果、コンピュータシステムの使用者は、２個以上の会合や画像会議も可能である。ビットストリーム処理器では、多様なビットストリームが実時間的に同時にエンコーディングまたはデコーディングされるように文脈(contexts)を切換することができるので、多重データストリームの同時処理が可能になる。
【０００５】
いくつかの実施例において、スカラー及びベクトル処理器は、各処理器が単一算術命令またはブール(boolean)命令を遂行するようにプログラムされ得る点から見るとプログラム可能である。ビットストリーム処理器は単一算術命令またはブール(boolean)命令を遂行するようにプログラムされ得ない点から見ると、プログラム不能である。むしろ、ビットストリーム処理器は、１セットのビデオデータに対し、全体的なビデオデータ処理動作を遂行するようにプログラムされ得る。ビットストリーム処理器が、単一算術命令またはブール命令を遂行するためにプログラムされないようにすることで、ビットストリーム処理器が高速で動作することができる。スカラー及びベクトル処理器がプログラム可能にすることにより、ビデオデータエンコーディング及びデコーディングの標準から変更されたシステムを採択することが容易である。
【０００６】
【発明の実施の形態】
図１は、マルチメディア処理器１１０を含むメディアカード１００を示している。この実施の形態において、マルチメディア処理器１１０は、その仕様がカリフォルニアサンホセに常住する三星半導体株式会社で製作されるタイプＭＳＰ−１ＥＸ（商標名）処理器である。処理器ＭＳＰ−１ＥＸは下記の付録Ａに記述されている。
処理器１１０は、ローカルバス１０５を通してホストコンピュータシステム（図示せず）と通信する。いくつかの実施例において、バス１０５は、３２ビット、３３ＭＨｚ ＰＣＩバスである。処理器１１０から出力されるデジタルビデオデータは、Ｄ／Ａ（デジタル／アナログ）変換器１１２に結合される。ビデオ部分だけでなく、デジタルビデオデータは、オーディオ部分、例えば映画のサウンドトラックを含むことができる。変換器１１２の出力は、アナログデータを処理するＴＶセット（図示せず）または他のシステムに結合され得る。いくつかの実施例において、処理器１１０はＡ／Ｄ（アナログ／デジタル）変換器（図４から図６参照）から出力されるデジタルビデオデータを受信するための入力ポートを含む。
【０００７】
処理器１１０は、コーデック（ＣＯＤＥＣ）１１４に連結される。ＣＯＤＥＣ１１４は、デープレコーダ（図示されていない）または他の装置からアナログオーディオデータを受信する。ＣＯＤＥＣ１１４は、電話線（図示されていない）からアナログ電話データを受信する。ＣＯＤＥＣ１１４は、アナログデータをデジタル化してから、これを処理器１１０へ伝送する。ＣＯＤＥＣ１１４は、処理器１１０からデジタルデータを受信し、このデータをアナログ形態に変換し、必要によってこのアナログデータを伝送する。
処理器１１０はバス１２２によりメモリ１２０に連結される。図１において、メモリ１２０はＳＤＲＡＭ(synchronous DRAM）であり、バス１２２は６４ビット、８０ＭＨｚバスである。他の実施例では、他のメモリ、バス幅、及びバス速度が使用される。非同期メモリ及びバスがいくつかの実施例に使用される。
カード１００のいくつかの実施例は、Ｌｅ．Ｎｇｕｙｅｎを出願人とし、本出願と同日付で出願された“Multiprocessor Operation in a Multimedia Signal Processor”という発明の名称を有する、米合衆国特許出願明細書（弁理士参照番号：Ｍ−４３６４ＵＳ）に記載されており、その全体的な内容は、本発明で参照として引用される。
【０００８】
図２は、処理器１１０の一実施例によるブロック図である。処理器１１０は、スカラー処理器２１０、ベクトル処理器(VP)２２０及びビットストリーム処理器(BP)２４５を含む。いくつかの実施例において、処理器２１０は４０ＭＨｚで動作し、公知の標準ＡＲＭ７命令語セットを支援する３２ビットＲＩＳＣ処理器である。ベクトル処理器２２０は８０ＭＨｚで動作し、２８８ビットベクトルレジスタを備えた単一命令多重データ（ＳＩＭＤ）処理器である。ＶＰ２２０の一実施例は、Ｓｏｎｇらを出願人とし、本出願と同日付で出願された“Efficient Context Saving and Restoring in a Multitasking Computing System Environment”という発明の名称を有する、米合衆国特許出願明細書（弁理士参照番号：Ｍ−４３６５ＵＳ）に記載されており、その全体的な内容は、本発明で参照として引用される。処理器２１０、２２０は、単一算術命令またはブール命令または、これらの命令のシーケンスを遂行するようにプログラムできる。
【０００９】
いくつかの実施例において、ビデオデータ処理を高速で行うためにビットストリーム処理器２４５は、単一算術命令またはブール命令を遂行するためにプログラムされないように設計される。特に、ＢＰ２４５はＡＤＤ、ＯＲ、“ＡＤＤ ＡＮＤ ＡＣＣＵＭＵＬＡＴＥ”等のような単一命令を遂行するようにプログラムされ得ない。かえって、ＢＰ２４５は付録Ａの１０章に記述されているビデオデータ処理動作を遂行するようにプログラムされる。これと同時に、スカラー処理器２１０とベクトル処理器２２０は、単一算術またはブール命令を遂行するようにプログラムされ得る。従って、処理器１１０は、ビデオ標準から変形を図ることができる。
【００１０】
図２の図示のとおり、スカラー処理器２１０とベクトル処理器２２０は、キャッシュサブシステム２３０に連結される。キャッシュサブシステム２３０は、バス（IOBUS；240)とバス(FBUS;250)に連結される。いくつかの実施例において、ＩＯＢＵＳ２４０は３２ビット、４０ＭＨｚバスであり、ＦＢＵＳ２５０は６４ビット、８０ＭＨｚである。
ＩＯＢＵＳ２４０は、ビットストリーム処理器２４５、インタラプトコントローラー２４８、全二重通信(full-duplex)ＵＡＲＴユニット２４３と、４個のタイマー２４２に連結される。ＦＢＵＳ２５０は、メモリバス１２２(図１参照）に連結されたメモリコントローラー２５８に連結される。ＦＢＵＳ２５０は、ＰＣＩバス１０５に連結されたＰＣＩバスインターフェース回路２５５に連結される。また、ＦＢＵＳ２５０は、ビデオＤ／Ａ１１２（図１参照）、ＣＯＤＥＣ１１４と場合によってビデオＡ／Ｄ変換器（図４から図６の図示と同様である）をインターフェイスする回路を含む、装置インターフェース回路２５２（“Customer ASIC”とも呼ばれる）に連結される。また、処理器１１０はメモリデータ移動器２９０を含む。
【００１１】
処理器１１０は、多数個のデータストリームが同時に処理可能である。例えば、処理器１１０の使用者が２個以上の会合と画像会議をする場合、処理器１１０は使用者が多数個の会合が視聴できるように、ビデオ及びオーディオ処理を遂行する。多重ビデオデータストリームを処理するために、処理器１１０は文脈切換を支援する。これはＢＰ２４５が多重データストリームの間を切換することを意味する。画像会議において、各データストリームは、遠く離れている別個の会合から送られることもできる。その代案として、使用者が映像会議に参加し、同時に画像会議または映画上映を視聴することができるように、付加的なデータストリームが映画チャンネルから送られることができる。文脈切換は、実施例の１０．１２節に記述されている。文脈が切り換えられると、スカラー処理器２１０は現在の文脈を貯蔵し、他の文脈を処理するためにＢＰ２４５を初期化させる。
【００１２】
ＢＰ２４５は、下記のようなビデオデータフォーマットすなわち、
１．ＩＳＯ／ＩＥＣ標準１１１７２（１９９２年）に記述されているＭＰＥＧ−１；
２．文書ＩＳＯ／ＩＥＣ ＪＴＣ １／ＳＣ ２９ Ｎ ０９８１ Ｒｅｖ（１９９５年３月３１日）に記述されるいるＭＰＥＧ−２；
３．“ＩＴＵ−Ｔ勧告Ｈ．２６１”（１９９３年３月）に記述されているＨ．２６１；及び
４．“ドラフトＩＴＵ−Ｔ勧告Ｈ．２６３”（１９９６年５月２日）に記述されているＨ．２６３
を処理することができる。
【００１３】
ビデオデータは、スカラー処理器２１０、ベクトル処理器２２０及びビットストリーム処理器２４５に分けられて処理されることによって、高速処理が実現される。さらに詳しくには、ベクトル処理器２２０は、線形変換（ＤＣＴまたは逆ＤＣＴ）とモーション補償を遂行する。このような動作は、ベクトル処理器に適する。なぜなら、これらの動作は、時々にデータのいろんな部分に対して遂行される同一の命令を必要とするからである。ビットストリーム処理器２４５は、ハフマンデコーディング及びエンコーディングとジグザグビットストリーム処理を遂行する。スカラー処理器２１０は、ビデオ及びオーディオ逆多重化と同期化及びＩ／Ｏインターフェーシング作業を遂行する。
エンコーディング及びデコーディング動作の例は、実施例１の１０．６．１及び１０．６．２節に現れている。エンコーディング動作において、圧縮されないデジタルデータが、バス１０５を通してフレームメモリ１２０またはホストシステム（図示せず）から到着する。いくつかの実施例において、装置インターフェース回路２５２は、ビデオＡ／Ｄ変換器を含み、圧縮されていないデータが変換器から到着する。ベクトル処理器２２０は、量子化、ＤＣＴ及びモーション補償を遂行する。ビットストリーム処理器２４５は、ＶＰ２２０の出力を受信し、ＧＯＢ(Group of Blocks)及びスライスを生成する。特に、ＢＰ２４５はハフマン及びＲＬＣエンコーディングとジグザグビットストリーム処理を遂行する。スカラー処理器２１０は、ＢＰ２４５の出力を受信し、ピクチャー階層符号化(picture layer coding)、ＧＯＰ(group of pictures)符号化及び、シーケンス階層符号化を遂行する。その後、スカラー処理器２１０は、オーディオ及びビデオデータを多重化し、符号化されたデータをバス（１０５または１２２）を通して、貯蔵装置またはネットワークに伝送する。ネットワークへの伝送は、いくつかの実施例のネットワークに連結された装置インターフェース回路２５２への伝送を含む。
【００１４】
デコーディングにおいて、処理は逆に遂行される。スカラー処理器２１０は、システムデータをビデオ及びオーディオ成分に逆多重化し、ビデオデータのシーケンス階層、ＧＯＰ及びピクチャー階層デコーディングを遂行する。その結果、生成されたＧＯＢまたはスライスは、ビットストリーム処理器２４５に供給される。処理器２４５はジグザグ処理とハフマン及びＲＬＣデコーディングを遂行する。ＶＰ２２０は、ＢＰ２４５の出力を受信し逆量子化、ＩＤＣＴ及びモーション補償を遂行する。ＶＰ２２０は、必要なら（例えば、ピクチャーイメージのエッジを平坦化させる場合）、任意の前処理を遂行し、復元されたデジタルピクチャーを装置インターフェース回路２５２または貯蔵装置に供給する。スカラー処理器２１０、ベクトル処理器２２０とビットストリーム処理器２４５は、多くのブロックのデータに対して並列に動作することができる。
スカラー処理器２１０がピクチャー層及び上位層を処理することにより、処理器内部の通信を減少させる。これは、ピクチャー層及び上位層が、制御及びＩ／Ｏ機能のためにスカラー処理器２１０では使用されるが、ベクトル処理器２２０及びビットストリーム処理器２４５では使用されない情報を含んでいるからである。このような情報の例としては、フレームを装置インターフェース回路２５２に伝送するために、スカラー処理器２１０で使用されるフレームレートが挙げられる。
【００１５】
図３は、ビットストリーム処理器２４５の一実施例によるブロック図である。図３に示された信号は、実施例１の１０．５節に記述されている。この信号は、ビットストリーム処理器２４５とＩＯＢＵＳ２４０（図２参照）との間のインターフェースを提供する。ＢＰ２４５において、これらの信号は、ＳＲＡＭ３２０を含むＩＯＢＵＳインターフェースユニット３１０により処理される。また、ＢＰ２４５は、ＶＬＣ ＦＩＦＯユニット３３０、ＶＬＣ  ＬＵＴ ＲＯＭ３４０、制御ステートマシン３５０と、レジスタファイルとＳＲＡＭを含むＢＰコアユニット３６０を含む。図３のブロックは、実施例１の１０．４節に記述されている。  ＲＯＭ３４０は、４個の標準、すなわちＭＰＥＧ−１、ＭＰＥＧ−２、Ｈ．２６１及びＨ．２６３に対しハフマンエンコーディング及びデコーディング時に使用されるルックアップテーブルを含む。テーブルに貯蔵される情報量が膨大であるにも拘わらず、ＲＯＭ３４０は７６８＊１２ビットの小さいサイズを有する。小さいサイズはテーブルを共有し、実施例１の４節に記述されているような他の技術により実現される。
【００１６】
本発明を特定の好ましい実施例に関連し図示し説明したが、本発明はそれに限定されず、特許請求の範囲により備えられる精神や分野から離脱しない限度内で、本発明が多様に改造及び変化され得ることが、当業界で通常の知識を有する者なら容易に分かる。特に、本発明は任意の回路、クロックレートまたはこれらの実施例のタイミングにより限定されるものでない。
【００１７】
【実施例１】
ＭＳＰ−１ＥＸシステム仕様
第 １ 章  技術的な概要
本章は、ハードウェア及びソフトウェア設計者が見せあげるマルチメディア信号処理器（“ＭＳＰ−ｘ”）の技術的な概要を説明する。
１．１ 機能
マルチメディア信号処理器（ＭＳＰ−ｘ）は、パーソナルコンピュータ及び注文者製品応用のための広範囲な集積機能を提供するために、一群の単一チップＶＬＳＩ装置を形成する。
ＭＳＰ群は、最適の費用／性能ために、計算に対する単一命令多重データ（ＳＩＭＤ）モデルを適用する強力なベクトル処理器の構造に基づいたものである。その特性は下記のとおりである。
＊完全なプログラム可能性
＊ＡＲＭ命令語セット構造に基づく。
＊集積された４０ＭＨｚ ＡＲＭ７ ＲＩＳＣ ＣＰＵコア
＊高性能デジタル信号処理のための８０ＭＨｚベクトル処理器
＊９ビット整数ＡＬＵ動作のための２．５６Ｇｏｐｓ
＊１６ビット整数掛け算−累積動作のための２．５６Ｇｏｐｓ
＊３２ビットＩＥＥＥ浮動小数点加算のための６４０Ｍｆｏｌｐｓ
＊３２ビットＩＥＥＥ浮動小数点掛け算＆加算のための１２８０Ｍｆｌｏｐ
＊選択的な注文型化またはグラフィックス機能のための未使用の１０Ｋｇａｔｅｓ
＊０．６５μｍ ３．３ｖ／５ｖ ＣＭＯＳ技術に基づく。
＊１２８ピン−１２８ピンパッケージ
ＭＳＰは初期に４個の主要機能を支援する。
＊ビデオ
＊オーディオ／サウンド
＊遠距離通信
＊２Ｄ／３Ｄグラフィックス（選択）
１．１．１ ビデオ
＊全機能がファームウェアでプログラム可能である。
＊実時間ＭＰＥＧ−１デコーディング及びエンコーディング
＊実時間ＭＰＥＧ−２デコーディング
＊ほぼ実時間的なＭＰＥＧ−２エンコーディング
＊実時間Ｈ．３２４デコーディング及びエンコーディング
＊任意のスクリーンサイズまたは解像度に対するイメージスケーリング
＊ＲＧＢとＹＵＶ間の色空間変換
＊ピクチャー輪郭強調及び雑音減少のためのイメージフィルタリング
＊４／３フールダウン変換
１．１．２ オーディオ／サウンド
＊全機能がファームウェアでプログラム可能である。
＊実時間ＭＰＥＧ−１オーディオデコーディング及びエンコーディング
＊実時間ＭＰＥＧ−２オーディオデコーディング及びエンコーディング
＊実時間Ｈ．３２０及びＨ．３２４オーディオデコーディング及びエンコーディング
＊実時間Ｇ．７２８及びＧ．７２３音声コーディング
＊実時間サウンドブラスターエミュレーション
＊ウェーブテーブル合成
＊ＦＭ合成
１．１．３ 遠距離通信
１．１．３．１ モデム
＊標準非同期ＣＯＭポートインターフェース（ＮＳ １６５５０Ａ ＵＡＲＴ互換可能）
＊２８．８Ｋから２．４ＫｂｐｓまでのＶ．３４
＊４８００、９６００無符号化及び９６００ｂｐｓトレリス符号化に対するデータレートを有するＣＣＩＴＴ−Ｖ．３２ｂｉｓ
＊Ｈａｙｅｓ ＡＴ命令語セットの互換性
＊呼出進行モニタ
＊Ｖ．２５ｂｉｓオートダイアル
＊ＤＴＭＦ及びパルスダイアリング
＊非同期エラー復旧プロトコル
＊Ｖ．４２エラー訂正
１．１．３．２ ファクシミリ
＊９６００ｂｐｓまたは７２００ｂｐｓのＶ．２９
＊４８００ｂｐｓまたは２４００ｂｐｓのＶ．２７
＊呼出進行モニタ
＊ＤＴＭＦ及びパルスダイアリング
＊Ｇ３トランスファーら
＊Ｔ．４／Ｔ．３０動作
１．１．３．３ 電話応答
＊電話機セットまたはマイクロフォンを通して挨拶の言葉録音
＊受信された電話に対し自動応答し、予め録音されたメッセージに応信
＊電話をかけた相手からのメッセージ録音
＊電話をかけた相手が残したメッセージ再生
１．１．４． ２Ｄ／３Ｄグラフィックス （選択）
＊ＢＩＴＢＬＴ
＊２Ｄライン＆多角形ドローイング及びシェージング
＊３Ｄポイント、ライン及び三角形に対する幾何学及び採光計算
＊テクスチャーマッピングで３Ｄカラー計算
＊ブレンディング
【００１８】
１．２ ハードウェアの構造
１．２．１ 概要
ＭＳＰ−１マルチメディアコプロセッサ群は、集積度レベル、費用及び性能を含む多様な要求事項を満足させるように設計する。ＭＳＰ−１処理器を含むブロック図は図４の図示のとおりである。
ＭＳＰ−１群は、下記のようなピン−アウトオプションを行う。
＊ＭＳＰ−１は、外部ＳＤＲＡＭを使用せず、エントリ−レベルとして使用され      るように設計される。
＊ＭＳＰ−１ＥＸは、外部ＳＤＲＡＭとインターフェーシングのための３２ビットメモリを含む。
＊ＭＳＰ−１Ｆは、外部ＳＤＲＡＭとインターフェーシングのための６４ビットメモリを含む。
＊ＭＳＰ−１Ｇは、集積されたＳＶＧＡコントローラー、高速化した３Ｄグラフィックス加速が加えられたＲＡＭＤＡＣを含む。
図５は、ＭＳＰ−１Ｅ処理器を含むシステムのブロック図である。
１．２．２ 外部コーデック
図６は、外部コーデックと共にＭＳＰ−１処理器を含むシステムのブロック図である。
【００１９】
１．２．２．１ ＭＳＰ−１ＥＸの材料目録
次は、ＭＳＰ−１ＥＸに対して提示された材料目録である。
＊ＭＳＰ−１ＥＸ
＊５１２Ｋ×３２ビット同期ＤＲＡＭ
＊ＮＴＳＣ／ＰＡＬエンコーダー（三星のＫＳ０１１９）
＊オーディオ＆遠距離通信ＣＯＤＥＣ（アナログデバイス社のＡＤ１８４３）
＊その他（キャパシタ、抵抗、増幅器、コネクタ等）
＊プリントされた回路基板
【００２０】
１．３ マイクロ構造
１．３．１ 概要
基本的にＭＳＰマイクロ構造は、非常に強力なＤＳＰコアと、注文者社により規定されたメモリ＆Ｉ／Ｏサブシステムとから構成される（図２参照）。ＤＳＰコアは、下記のことを含む。
＊４０ＭＨｚで動作し、一般的な処理のために使用される３２ビットＡＲＭ７ ＲＩＳＣ ＣＰＵ
＊８０ＭＨｚで動作し、信号処理のために使用されるベクトル処理器
＊８０ＭＨｚで動作し、２ＫＢ命令キャッシュ、５ＫＢデータキャッシュ及び１６ＫＢ ＲＯＭキャッシュを有する共有されたキャッシュサブシステ ム。データキャッシュは、ハードウェアまたはソフトウェアにより制御さ れ得る。
＊８０ＭＨｚで動作し、内部の多くのＦＢＵＳ周辺機器とインターフェースする高速６４ビットバス（ＦＢＵＳ）
＊４０ＭＨｚで動作し、内部の多くのＩＯＢＵＳ周辺機器とインターフェースする低速３２ビットバス（ＩＯＢＵＳ）
内部のＦＢＵＳ周辺機器は下記のものを含む。
＊３２ビット３３ＭＨｚ ＰＣＩバスインターフェース
＊６４ビットＳＤＲＡＭメモリコントローラー
＊８チャンネルＤＭＡコントローラー
＊注文者ＡＳＩＣロジックブロック。注文者ＡＳＩＣロジックブロックは、多様なアナログコーデックに対するインターフェースと、注文者の規定したＩ／Ｏ装置を含む合計１０Ｋｇａｔｅｓを提供する。インターフェースロジックは、三星のＫＳ０１１９ＮＴＳＣエンコーダー及び、アナログデバイス社のＡＤ１８４３コーデックを支援する。
【００２１】
＊ホスト(Pentlure)メモリからＭＳＰローカルＳＤＲＡＭメモリまでのデータをＤＭＡすることに使用されるメモリデータ移動器
＊ビデオビットストリームを処理するビットストリーム処理器
＊１６４５０ＵＡＲＴシリアルライン
＊８２５４−互換可能なタイマー
＊８２５９−互換可能なインタラプトコントローラー
また、ＭＳＰはソフトウェアで制御される初期化及び、インタラプトのために使用される特殊なレジスタ（ＭＳＰ制御レジスタ）を含む。
【００２２】
１．４ ＭＳＰ−１ＥＸピン説明
１．４．１ 合計：２５６ピン
１．４．２ ＰＣＩバスインターフェース（５３ピン）
ＣＬＫ            クロック入力ピン
ＲＳＴＬ          入力ピンリセット、アクチブロー
ＡＤ[31:0]        アドレス及びデータバスピン
Ｃ＿ＢＥ０Ｌ      コントロール＆バイト０イネーブルピン、アクチブロー
Ｃ＿ＢＥ１Ｌ      コントロール＆バイト１イネーブルピン、アクチブロー
Ｃ＿ＢＥ２Ｌ      コントロール＆バイト２イネーブルピン、アクチブロー
Ｃ＿ＢＥ３Ｌ      コントロール＆バイト３イネーブルピン、アクチブロー
ＰＡＲ            パリティピン
ＦＲＡＭＥＬ      サイクルフレームピン、アクチブロー
ＩＲＤＹＬ        開始者準備ピン、アクチブロー
ＴＲＤＹＬ        ターゲット準備ピン、アクチブロー
ＳＴＯＰＬ        停止トランザクションピン、アクチブロー
ＬＯＣＫＬ        ロックトランザクションピン、アクチブロー
ＩＤＳＥＬ        初期化装置選択入力ピン
ＤＥＶＳＥＬ      装置選択ピン、アクチブロー
ＲＥＱＬ          バス要請ピン、アクチブロー
ＧＮＴＬ          バス承認ピン、アクチブロー
ＰＥＲＲＬ        パリティエラーピン、アクチブロー
ＳＥＲＲＬ        システムエラーピン、アクチブロー
ＩＮＴＡＬ        インタラプトピン、アクチブロー
１．４．３ その他（６ピン）
ＴＣＫ            ＪＴＡＧテストクロック入力ピン
ＴＤＩ            ＪＴＡＧテストデータ入力ピン
ＴＤＯ            ＪＴＡＧテストデータ出力ピン
ＴＭＳ            ＪＴＡＧテストモード選択入力ピン
ＴＲＳＴＬ        ＪＴＡＧテストリセット入力ピン
ＣＬＫ            クロック入力。これは４０ＭＨｚクロック入力ピンである。
１．４．４ ＫＳ０１１９ ＮＴＳＣ／ＰＡＬエンコーダーインターフェース （２４ピン）
ＳＦＲＳ          ３ワイヤーホストインターフェースのためにＫＳ０１１９に出力されるフレーム同期
ＳＣＬＫ          ＫＳ０１１９に出力されるシリアルクロック
ＳＤＡＴ          シリアルデータＩ／Ｏ
ＢＧＨＳ          ＭＳＰに入力される水平同期信号
ＢＧＶＳ          ＭＳＰに入力される垂直同期信号
ＭＳＳＥＬ        マスタ選択
ＰＤ[15:0]        ＫＳ０１１９に出力されるピクセルデータ
ＢＧＣＬＫ        ＫＳ０１１９に出力されるピクセルクロック
ＰＲＯＭＣＳＬ    ＢＩＯＳ ＰＲＯＭチップ選択
【００２３】
１．４．５ ＡＤ１８４３オーディオ＆遠距離通信コーデックインターフェース（６ピン）
Ａ４３ＳＣＬＫ    シリアルクロック入／出力。ＳＣＬＫはバスマスタ（ＢＭ）ピンがＨＩに駆動される場合、クロックをシリアルバスに対する出力として供給し、ＢＭインがＬＯに駆動される場合、クロックを入力として受け入れる両方向信号である。
Ａ４３ＳＤＦＳ    シリアルデータフレーム同期入／出力。ＳＤＦＳはバスマスタ（ＢＭ）ピンがＨＩに駆動される場合、フレーム同期信号をシリアルバスに対する出力として供給し、ＢＭピンがＬＯに駆動される場合、フレーム同期信号を入力として受け入れる両方向信号である。
Ａ４３ＳＤＩ      ＭＳＰから出力されるＡＤ１８４３に対するシリアルデータ入力。全制御及び再生トランスファーは、１６ビット長さのＭＳＢである。
Ａ４３ＳＤＯ      ＡＤ１８４３から出力されＭＳＰに入力されるシリアルデータ出力。全ステータス＆制御レジスタ読出及び再生トランスファーは、１６ビット長さのＭＳＢである。
【００２４】
１．４．６ メモリバスインターフェース（８７ピン）
ＲＡＳ１Ｌ        出力ピン（アクチブロー）。これはＭＡ[11:0]からのローアドレスを、選択されたＳＤＲＡＭバンクの内部ローアドレスバッファにラッチするローアドレスストローブである。
ＣＡＳ １Ｌ       出力ピン（アクチブロー）。これはＭＡ[11:0]からのコラムアドレスを、選択されたＳＤＲＡＭバンクの内部コラムアドレスバッファにラッチするコラムアドレスストローブである。
ＭＷＥＬ          出力ピン（アクチブロー）。これはＳＤＲＡＭに対する記入イネーブルである。
ＭＡＩ[11:0]      出力ピン。ＳＤＲＡＭに対し多重化されたロー及びコラムアドレス信号。
ＭＤ[63:0]        入／出力ＳＤＲＡＭデータピン
ＭＡ２３          出力ピン。メモリアドレスビット＜２３＞
ＭＡ２４          出力ピン。メモリアドレスビット＜２４＞
ＤＱＭ            出力ピン。クロック以降、ＳＤＲＡＭデータをハイインピーダンスにし、出力をマスクさせる。（このピンは、同期ＤＲＡＭインターフェースためにのみ使用される。）
ＭＣＫＥ          出力ピン。次のクロックサイクルから動作を中止させるために、ＳＤＲＡＭシステムクロックをマスクさせる。
ＭＣＳ０Ｌ        出力ピン（アクチブロー）。下位３２ビットに対するＳＤＲＡＭチップ選択
ＭＣＳ１Ｌ        出力ピン（アクチブロー）。上位３２ビットに対するＳＤＲＡＭチップ選択
ＭＲ．ＤＹＨ      出力ピン。ＳＤＲＡＭ準備信号
ＭＥＭＣＬＫ      出力ピン。これはＳＤＲＡＭに対するクロック出力ピンである。
１．４．７ 電源
ＶＤＤ            ３．３ボルト電源ピン
ＶＣＣ            ５ボルト電源ピン
ＶＳＳ            接地ピン
ＭＳＰ−１ＥＸピン指定
【００２５】
【表１】
0004290775.tif 000002
【表２】
0004290775.tif 000003
【表３】
0004290775.tif 000004
【表４】
0004290775.tif 000005
【表５】
0004290775.tif 000006
【表６】
0004290775.tif 000007
【表７】
0004290775.tif 000008
【表８】
0004290775.tif 000009
【００２６】
１．５ ファームウェア構造
１．５．１ 概要
ＭＳＰは、ベクトル化されたＤＳＰファームウェアライブラリー（ベクトル処理器により実行される）の非常に最適化された結合及びシステム管理機能（ＡＲＭ７により実行される）を通して強力で且つ開放的な応用環境を多く提供する。
ＭＳＰは信号処理開発とホスト応用開発とを分離することによって、スケール可能な性能、費用効果的なマルチメディア＆通信、便利な使用及び容易な取扱い等を提供する。また、応用開発と維持費用を減少させる。
１．５．２ ファームウェア構造
ＭＳＰファームウェアシステム構造は、図７の図示のとおりである。陰影領域はＭＳＰシステム要素を表し、残りの余白は内在するＰＣ応用及び動作システムを表す。
１．５．２．１ ＭＯＳＡ（マルチメディア動作システムの構造）
ＭＳＰの実時間動作システムカーネルは“ＭＯＳＡ”といい、これはマイクロソフトの実時間カーネルＭＭＯＳＡのサブセットである。
ＭＯＳＡは実時間的で、丈夫であり、マルチタスキングが可能であり、先買権のある動作システムであって、ＭＳＰ上で具現されたマルチメディア応用のために活用される。これは下記のような主要機能を遂行する。
＊ホストウインド９５とウインドズＮＴとのインターフェーシング
＊ホストから選択された応用ファームウェアのダウンローディング
＊ＡＲＭ７及びベクトル処理器で遂行するためＭＳＰタスクのスケジュー  リング
＊メモリ＆Ｉ／Ｏ装置を含むすべてのＭＳＰシステム資源の管理
＊ＭＳＰタスク間の通信の同期化
＊ＭＳＰ関連のインタラプト、例外及びステータス条件のリポーティング
ＭＯＳＡはＡＲＭ７上で排他的に動作する。
より詳細なものは、ＭＭＯＳＡ実時間カーネル仕様を参照する。
１．５．２．２ マルチメディアライブラリモジュール
マルチメディアライブラリーモジュールは、データ圧縮、ＭＰＥＧビデオ＆オーディオ、音声コーディング及び合成、サウンドブラスター互換可能なオーディオ等のような機能を遂行するボード範囲のモジュールを提供する。各モジュールは、ＭＳＰ環境で最適化され、マルチタスキング環境で遂行するように設計される。
【００２７】
１．５．３ テレコムライブラリー
１．５．３．１ 概要
適切なＤＳＰファームウェアと共に、ＭＳＰはインタセプトされる音声応用を支援し、かかってくる電話呼出に応答し、ハードディスク上にメッセージを貯蔵するように使用され得る。また、システムスピーカーは、半二重(half-duplex)スピーカーフォンをサービスするためにマイクロフォンを使用することができる。かかってくる電話及びかける電話の進行が感知され、システムで使用される。また、電話進行トーンは、プログラム制御の下で、選択された電話機の送受話器、システムスピーカー、ステレオヘッドフォンまたは、オーディオ出力チャンネルを通して聞ける。
【００２８】
１．６ プログラミングモデル
１．６．１ 概要
ハードウェアの観点から見る時、ＭＳＰは２個のＣＰＵと、多数の集積された周辺装置を含む単一チップの解決案である。ソフトウェアの観点から見る時ＭＳＰはＰＣＩバス上に存在する高性能デジタル信号処理（ＤＳＰ）装置である。
ホストＣＰＵによるＭＳＰの制御は、下記のいずれか１つによって実現され得る。
＊ＰＣＩバスを通してＭＳＰ制御＆ステータスレジスタの読み取り／書込または
＊ホストシステムメモリに存在する共有データ構造
＊ＭＳＰローカルメモリに存在する共有データ構造
ＭＳＰプログラムの遂行は常にＡＲＭ７ ＣＰＵから始まり、これは順次的にベクトル処理器にある第１従属的な実行ストリームを初期化させ得る。ＡＲＭ７ＣＰＵとベクトル処理器との間の制御同期化は、ＡＲＭ７の任意のコプロセッサ命令(STARTVP、INTVP、TESTVP）と、ベクトル処理器における特殊な命令(VJOIN、VINT)によって遂行される。ＡＲＭ７ ＣＰＵとベクトル処理器との間のデータ伝送はＡＲＭ７で実行されるデータ移動命令によって遂行され得る。
ＡＲＭ７ ＣＰＵは一般的に、大部分のインタラプト＆例外処理だけでなく、ホストインターフェース、資源管理、Ｉ／Ｏ装置処理を担当する。ベクトル処理器はすべてのデジタル信号処理及び、コプロセッサインタラプト（ＡＲＭ７でベクトル処理器により発生される）とハードウェアスタックオーバーフロー（ベクトル処理器で）のような任意の特殊なインタラプトを担当する。
また、ＭＳＰは多様なＩ／Ｏ装置に対してインターフェーシングするために集積された周辺機器を多く含む。すべての周辺装置のアドレスはメモリマッピングされ、よって標準メモリロード＆貯蔵命令（ＡＲＭ７ ＣＰＵまたはベクトル処理器の中のいずれか１つにより）でアクセスされ得る。
【００２９】
１．６．２ 電源印加、リセット＆初期化
電源が印加された後、ＭＳＰは機能を正確に確認するために、自動にセルフ−テストシーケンスに入る。セルフ−テストシーケンスは下記のことを含む。
＊すべての内部ＭＳＰレジスタの初期化
＊ＭＳＰのすべての要素を確認するために、半導体チップのセルフ−テスト診断遂行
そして、セルフ−テストシーケンスは、＜ｔｄｓ＞秒近くまで持続されると予想される。セルフ−テストシーケンスの最後で、ＭＳＰは下記のものを含むＭＳＰファームウェアを遂行する準備をする。
＊ＭＳＰの初期化ソフトウェアのローディング及び実行
＊ＭＳＰの実時間動作システム過０カーネルＭＭＯＳＡのローディング及び実行
ＭＳＰは下記の３種類のリセットを支援する。
＊ＰＣＩバスによるハードウェア制御システムリセット
＊ＭＳＰ制御レジスタにあるＰＣＩシステムリセットビットによるソフトウェア制御システムリセット
＊ＭＳＰ制御レジスタにあるベクトル再開始、ビットによるソフトウェア制御再開始(restart)
【００３０】
１．６．３ ＰＣＩ配列レジスタ
ＰＣＩバスに対するＩ／Ｏ装置であって、ＭＳＰはＰＣＩ Ｒｅｖ２．１に定義され、表９に示されているような一セットの構成レジスタを含む。
【００３１】
ＰＣＩ配列レジスタ
【表９】
0004290775.tif 000010
【００３２】
１．６．３．１ 装置＆ベンダー識別子レジスタ
より詳細なものはＰＣＩバス仕様Ｒｅｖ２．１参照。
１．６．３．２ ステータス＆コマンドレジスタ
より詳細なものはＰＣＩバス仕様Ｒｅｖ２．１参照。
１．６．３．３ クラスコード＆校正識別子レジスタ
より詳細なものはＰＣＩバス仕様Ｒｅｖ２．１参照。
ＭＳＰ−１ＥＸに関してクラスコードは０３に定義され、サブクラスは０である。
１．６．３．４ その他のレジスタ
より詳細なものはＰＣＩバス仕様Ｒｅｖ２．１参照。
１．６．３．５ ＭＳＰベースアドレスレジスタ（ＭＳＰ ＢＡＳＥ）
このレジスタはＭＳＰ装置のためのベースアドレスを貯蔵する。このアドレスはホストシステムソフトウェア(Windows 95/NT）により記入され、ＭＳＰハードウェアで使用されメモリをアドレッシングする。
１．６．３．６ ＶＦＢベースアドレスレジスタ
このレジスタはＶＧＡ仮想フレームバッファのためのベースアドレスを貯蔵する。このアドレスはホストシステムソフトウェア(Windows 95/NT)により記入され、ＭＳＰハードウェアで使用されＶＧＡフレームバッファをエミュレーションする。
【００３３】
１．６．３．７ 拡張ＲＯＭベースアドレス
より詳細なものはＰＣＩバス仕様Ｒｅｖ２．１参照。
１．６．３．８ インタラプトラインレジスタ
より詳細なものはＰＣＩバス仕様Ｒｅｖ２．１参照。
１．６．４ ＡＲＭ７ ＣＰＵ
ＡＲＭ７ ＲＩＳＣ ＣＰＵはＭＳＰのマスタ処理器であって、３２ビットデータ経路を含んでおり、標準ＡＲＭ７命令セット構造からなる。またＡＲＭ７はベクトル処理器とインターフェースするために、特殊なコプロセッサ命令を含む。
１．６．５ ベクトル処理器
ベクトル処理器は、ＭＳＰのＤＳＰエンジンであり、２８８ビットデータ経路を含んでおり、ＡＲＭ７に対しコプロセッサとして動作する。このような機能はベクトル処理器構造文書に記述されている。
ベクトル処理器２２０は８０ＭＨｚで動作し、６ステージのパイプラインすなわち、フェッチ(fetch)、デコード(decode)、流出人(issuer)、レジスタアクセス(register access)、実行(execute)及び記入(write)を含む。これはＤＳＰ関連処理のために最適化される。
【００３４】
１．６．６ 仮想メモリ管理
ＭＳＰ−１ＥＸは仮想メモリ管理を支援しない。
１．６．７ インタラプト＆実行処理
ＭＳＰでインタラプト＆実行処理は大抵ＡＲＭ７により行われる。
内部のすべての入／出力装置インタラプトは、内部の８２５４インタラプトコントローラーに入って、これら間の優先順位を決め、最も高い優先順位のインタラプトを次の処理のためにＡＲＭ７に送る。
１．６．８ 物理的なメモリアドレスマップ
ＡＲＭ７及びベクトル処理器プログラムは、図８に示したような物理的なメモリによってメモリマッピングされたすべてのＭＳＰ入／出力装置を示す。
ＡＲＭ７（またはベクトル処理器）により示されるＭＳＰアドレスマップは、０から始まって４ＧＢまで拡張される。
２ＧＢから４ＧＢまでの領域のアドレスは、次の関係式に従って、０から２ＧＢまでのホスト（Ｐｅｎｔｉｕｍ）ＰＣＩアドレスにマッピングされる。
ホストＰＣＩアドレス：＝ＡＲＭ７アドレス−８０００ ００００(in hex)このようなマッピングによりＡＲＭ７（またはベクトル処理器）は、０から２ＧＢまでのホストＰＣＩメモリアドレスをアクセスするために、２ＧＢから４ＧＢまでのアドレスを使用することができる。ＡＲＭ７は２ＧＢ以上のホストＰＣＩメモリアドレスに対しては、アクセスできない。
また、ホスト（Ｐｅｎｔｉｕｍ）プログラムは、図９に示したような多少制限された物理的なメモリに従ってメモリマッピングされたすべての入／出力装置を示す。
ホスト（Ｐｅｎｔｉｕｍ）から見る時、
＊ＭＳＰ＿ＢＡＳＥはＭＳＰアドレスマップの始まりである。
＊ＭＳＰ＿ＢＡＳＥ＋７ＤＦＦＦＦＦはＭＳＰアドレスマップの最後である。
＊ＭＳＰアドレスマップは、１２８ＭＢの範囲のみで定義される。
【００３５】
ＭＳＰ Ｉ／Ｏ装置アドレスマップ
【表１０】
0004290775.tif 000011
【００３６】
１．６．９ ＭＳＰホスト制御レジスタ
ＭＳＰ−１ＥＸは、ホスト（Ｐｅｎｔｉｕｍ プロセッサ）による初期化及び、インタラプトのために使用される特殊なレジスタを含む。
【００３７】
【表１１】
ＭＳＰ制御レジスタ定義
0004290775.tif 000012
【００３８】
ｂｉｔ＜０＞        ＰＣＩシステムリセット。このビットはＭＳＰ関連のすべての内部／外部入出力装置を含む全体ＭＳＰシステムハードウェアを完全にリセットさせるために、ホスト（ＰＥＮＴＩＵＭ）で使用される。ＰＣＩシステムをリセットさせた後、ＭＳＰはＡＲＭ７、ベクトル処理器及びＩ／Ｏ措置に対するチップ上のすべてのセルフ−テスト診断実行を含む、標準リセットシーケンスを処理する。このようなリセットは、ハードウェアシステムリセットと同一な影響を及ぼす。
ｂｉｔ＜１＞        ＡＲＭ７＆ベクトル処理器の再開始。このビットはＡＲＭ７とベクトル処理器を再開始させるために、ホスト（ＰＥＮＴＩＵＭ）で使用される。この再開始はＭＳＰが正常的なリセットシーケンスを全然処理せず、チップ上のセルフ−テスト診断を全く実行しないとの意味で、完全なＰＣＩシステムリセットと区別される。このビットが設定されると、ＡＲＭ７はアドレス０から実行を開始し、ベクトル処理器はアイドルモード(idle mode)に入る。この時、どのような内部または 外部Ｉ／Ｏ装置も影響を受けない。
ｂｉｔ＜２＞        ホト（ＰＥＮＴＩＵＭ）からのＭＳＰインタラプト  要請。このビットはまＳＰを直接インタラプトするためにホスト（ＰＥＮＴＩＵＭ）で使用され、ＡＲＭ７をインタラプトするために使用される内部８２５９  プログラム可能なインタラプトコントローラー（ＰＩＣ）の入力の中のいずれか１つに連結される。このビットは、ホスト（ＰＥＮＴＩＵＭ）により設定され、ＡＲＭ７によりクリアーされる。
ｂｉｔ＜３＞        ＰＣＩホストインタラプト認知。このビットはＭＳＰが発生したＰＣＩホストインタラプト要請を認知するために、ホスト（ＰＥＮＴＩＵＭ）で使用される。このビットはホスト（ＰＥＮＴＩＵＭ）により設定され、ＡＲＭ７によりクリアーされる。
ｂｉｔ＜３１：４＞  予約
【００３９】
１．６．１０ ＭＳＰ ＡＲＭ７制御レジスタ
ＭＳＰ−１ＥＸは、ＡＲＭ７プロセッサによりホストをインタラプトすることに使用される特殊なレジスタを有する。
【００４０】
ＭＳＰ ＡＲＭ７制御レジスタ定義
0004290775.tif 000013
【００４１】
ｂｉｔ＜０＞        ＭＳＰからのＰＣＩホストインタラプト。このビットは、ＰＣＩバス上のＰＣＩ ＩＮＴＡ＃ピンのアクチ ブ確認を通しホストをインタラプトするためにＭＳＰ で使用される。このビットはＡＲＭ７により設定され、ＰＣＩバスを通しホスト（ＰＥＮＴＩＵＭ）によりクリアーされる。
ｂｉｔ＜３１：１＞  予約
１．６．１１ ＭＳＰ内部μＲＯＭ
内部ＲＯＭは全体１６ＫＢｙｔｅからなり、次のことを含む。
＊μＲＯＭ初期化ソフトウェア
＊セルフ−テスト診断ソフトウェア
＊多様なシステム管理ソフトウェア
＊多様なライブラリーサブルーチン
＊命令及びデータ常数のためのキャッシュ
アドレスマップは、次の表に示したとおりである。
【００４２】
内部μＲＯＭアドレスマップ
【表１２】
0004290775.tif 000014
【００４３】
【表１３】
0004290775.tif 000015
【００４４】
１．６．１２ ＭＳＰ内部ＳＲＡＭ
内部のＳＲＡＭはＭＳＰのベクトル＆制御＆ステータスレジスタ（ＶＣＳＲ）により決まれる選択事項によって、キャッシュまたはローカルメモリの機能を遂行する。
ローカルメモリモードにおいて、アドレス空間は位置＜ＭＣＰ＿ＢＡＳＥ＞：０４０ ００００から始まって、内部ＳＲＡＭ部にマッピングされる。
１．６．１３ ＭＳＰ内部の周辺装置
また、ＭＳＰは２個の内部バス、すなわち６４ビット、８０ＭＨｚで動作するＦｂｕｓと、３２ビット、４０ＭＨｚで動作するＩＯｂｕｓ上に存在する多い周辺装置を有する。
Ｆｂｕｓ上の装置は次のことを含む。
＊外部の同期ＤＲＡＭのためのメモリコントローラー
＊仮想フレームバッファインターフェース
＊外部ＰＣＩバスのためのＰＣＩバスコントローラー
＊カストマーＡＳＩＣインターフェース
＊８チャンネルＤＭＡコントローラー
＊メモリデータ移動器（ホストメモリとＳＤＲＡＭ間のデータ伝達のため）
＊ＫＳ０１２２ＣＯＤＥＣシリアルライン
＊ＫＳ０１１９ＣＯＤＥＣシリアルライン
＊ＡＤ１８４３ＣＯＤＥＣシリアルライン
一方、ＩＯｂｕｓ上の装置は下記のことを含む。
＊８２５４−互換可能なプログラマブルインターバルタイマー
＊８２５９−互換可能なプログラマブルインタラプトコントローラー（８レベル）
＊１６４５０−互換可能なＵＡＲＴシリアルライン
＊ＭＰＥＧビットストリームデコーディング＆エンコーディングのためのビットストリーム処理器
このような周辺装置等のレジスタアドレスマップは、表に示したとおりである。
【００４５】
【表１４】
0004290775.tif 000016
【表１５】
0004290775.tif 000017
【表１６】
0004290775.tif 000018
【表１７】
0004290775.tif 000019
【００４６】
内部周辺装置レジスタアドレスマップ
１．６．１４ ＩＯＢＵＳ周辺装置
１．６．１４．１ ８２５４−互換可能なプログラマブルインターバルタイマ
ＭＳＰは、下記のような機能を有するソフトウェアとして使用するために、標準８２５４−互換可能なプログラマブルインターバルタイマーを含む。
＊３個の独立的な１６ビットカウンタを有する。
＊６個のプログラマブルカウンタモードを支援する。
すべてのカウンターは、制御ワードレジスタに記入するものと初期カウントによりプログラムされる。
＊制御ワードレジスタ
このレジスタは、タイマーに対する多様な制御情報を有する。このレジスタのビット定義は、表に示したとおりである。
【００４７】
【表１８】
制御ワードレジスタ
0004290775.tif 000020
【００４８】
＊ステータスレジスタ
このレジスタは、タイマーに対するステータス情報を有する。
＊カウンター０、１、２
この３個のレジスタは、主にタイマーによりカウンティングする素子である。各カウンタは１６ビット幅を有し、プリセットが可能で、ＢＣＤモードの各２進数でカウントダウンする。このレジスタの入力、ゲート及び出力は、制御ワードレジスタに貯蔵されたＭＯＤＥＳの選択により構成される。この３個のカウンタは完全に独立的である。
【００４９】
１．６．１４．２ ８２５９−互換可能なプログラマブルインタラプトコント ローラー（ＰＩＣ）
ＭＳＰプログラマブルインタラプトコントローラーは、すべてのｘ８６−基盤パーソナルコンピュータにおいて非常に一般的な標準８２５９であり、その機能は次のことを含む。
＊８個レベルの優先順位を支援する。
＊プログラマブルインタラプトモード
＊個別的な要請マスク能力
ＭＳＰ−１ＥＸにおいて、８個レベルのインタラプト入力は、多様なＩ／Ｏ装置に対し下記のとおり割当てられる。
＊レベル０（最も高い）は８２５４タイマーに割当てられる。
＊レベル１は、仮想フレームバッファ（ＶＦＢ）に割当てられる。
＊レベル２は、ＤＭＡコントローラーを含むカストマＡＳＩＣロジックブロックに割当てられる。
＊レベル３は、ビットストリーム処理器に割当てられる。
＊レベル４は、ＰＣＩバスインターフェースに割当てられる。
＊レベル５は＜ｔｂｄ＞に割当てられる。
＊レベル６は＜ｔｂｄ＞に割当てられる。
＊レベル７は、１６５５０ ＵＡＲＴに割当てられる。
インタラプトコントローラーの出力は、ＡＲＡＭ７ ＲＩＳＣ ＣＰＵのインタラプト要請ライン（ｎＦＩＱ）に結合される。
＊レジスタ説明
ここには、下記のようなＰＩＣの動作を初期化することに使用される３個の８ビットレジスタがある。
＊初期化コマンドワード１（ＩＣＷ１）
＊初期化コマンドワード２（ＩＣＷ２）：ＭＳＰ−１ＥＸには使用しない。
＊初期化コマンドワード３（ＩＣＷ３）：ＭＳＰ−１ＥＸには使用しない。
＊初期化コマンドワード４（ＩＣＷ４）
また、下記のようなＰＩＣ動作を制御することに使用される３個の８ビットレジスタがある。
＊動作制御ワード１（ＯＣＷ１）
＊動作制御ワード２（ＯＣＷ２）
＊動作制御ワード３（ＯＣＷ３）
これらのすべてのレジスタは、アドレス部分（ｂｉｔ＜０＞）とデータの部分の両方に特殊にエンコーディングされる。より詳細なことは、標準８２５９仕様を参照する。
【００５０】
８２５９レジスタ説明
【表１９】
0004290775.tif 000021
【００５１】
１．６．１４．３ １６４５０−互換可能なＵＡＲＴシリアルライン
ＭＳＰは、外部シリアルＩ／Ｏ装置とのインターフェースとして使用される１６４５０−互換可能なＵＡＲＴシリアルラインを含む。より詳細なことは、標準１６４５０仕様を参照する。
１．６．１４．４ ビットストリーム処理器
ビットストリーム処理器は、ビデオビットストリームデータを処理する特殊化されたロジックブロックであり、この機能は下記のことを含む。
＊可変長さハフマンデコーディング及びエンコーディング
＊ジグザグ貯蔵フォーマットのビデオデータのアンパッキング及びパッキ  ング
＊多様なビット−レベル処理
ビットストリーム処理器は、同時的な処理ユニットとして動作し、ベクトル処理器またはＡＲＭ７によりソフトウェアで制御される。より詳細なことは、ビットストリーム処理器部分を参照する。
１．６．１５ ＦＢＵＳ周辺装置
ＦＢＵＳ周辺装置は下記のとおりである。
＊カストマＡＳＩＣロジックインターフェース
＊８個チャンネルＤＭＡコントローラー
＊三星のＫＳ０１１９に対するビデオエンコーダーシリアルラインインターフェース
＊アナログデバイス社のＡＤ１８４３に対するオーディオ＆テレコムシリ  アルラインインターフェース
１．６．１５．１ ＡＳＩＣインターフェースロジックインターフェース
この節は、外部のすべてのＣＯＤＥＣと、カストマが規定したＡＳＩＣロジックブロックに対するインターフェースロジックを含む。このブロックのすべてはハードウェアで具現され、プログラム−可視(program-visible)レジスタは備えない。より詳細なことはＡＳＩＣインターフェース部分を参照する。
１．６．１５．２ ＤＭＡコントローラー
ＭＳＰ−１ＥＸは、下記のような機能を有するチップ上のＤＭＡコントローラーを備える。
＊８個の独立的なＤＭＡチャンネル
＊個別的なＤＭＡチャンネルに対するイネーブル／ディスエーブル制御
＊メモリトランスファーまたは逆トランスファーに対するＩＯ装置
＊アドレス増加及び減少
より詳細なことをは、ＡＳＩＣインターフェース部分を参照する。
【００５２】
１．６．１５．３ メモリデータ移動器
また、ＭＳＰ−１ＥＸは、特殊なメモリデータ移動器を備える。このメモリデータ移動器は、ホスト（ＰＥＮＴＩＵＭ）メモリと、ＭＳＰローカルＳＤＲＡＭメモリ間でデータを移動させるために使用される。メモリデータ移動器は、基本的に下記のようなレジスタを含む特殊なＤＭＡコントローラーである。
＊ＭＳＰ現在アドレスレジスタ：この３２ビットレジスタは、メモリデータトランスファーの初期にＳＤＲＡＭメモリアドレスを定義する。このレジスタはＡＲＭ７により記入または読出でき、初期値はＡＲＭ７によりロードされなければならない。アドレスはデータトランスファーサイズに基づいて増加される。
＊ホスト現在アドレスレジスタ：この３２ビットレジスタは、メモリデータトランスファーの初期にホストメモリアドレスを定義する。このレジスタはＡＲＭ７により記入または読出でき、初期値はＡＲＭ７によりロードされなければならない。アドレスはデータトランスファーサイズに基づいて増加される。
＊ＭＳＰ停止アドレスレジスタ：この３２ビットレジスタは、メモリデータトランスファーの最後にＳＤＲＡＭメモリアドレスを定義する。このレジスタはＡＲＭ７により記入または読出でき、ＭＳＰ現在アドレスレジスタと比較し使用される。もし、これらがマッチングすると、メモリデータ移動器はＭＳＰのＥｎｄ−Ｏｆ−Ｐｒｏｃｅｓｓ信号を発生する。
＊ホスト停止アドレスレジスタ：この３２ビットレジスタは、メモリデータトランスファーの最後に、ホストメモリアドレスを定義する。このレジスタはＡＲＭ７により記入または読出でき、ホスト現在アドレスレジスタと比較し使用される。もし、これらがマッチングすると、メモリデータ移動器はホストのＥｎｄ−Ｏｆ−Ｐｒｏｃｅｓｓ信号を発生する。
＊ステータスレジスタ：このレジスタは、メモリデータ移動器と関連したステータス情報を含む。ビットエンコーディングは下記のとおりである。
＜０＞：ＭＳＰ ＥＯＰ。このビットは、メモリデータ移動器がＭＳＰの停止アドレスに到達したか否かを決定する。もし、ＡＲＭ７がソース現在アドレスレジスタを初期化すると、ＡＲＭ７は００８０ ００００(hex)にリセットされる。このビットはＡＲＭ７により読出のみが遂行され、記入は遂行されてはいけない。
＜１＞：ＨＯＳＴ ＥＯＰ。このビットは、メモリデータ移動器がホストの停止アドレスに到達したか否かを決定する。もし、ＡＲＭ７がホスト現在アドレスレジスタを初期化すると、ＡＲＭ７は８０００ ０００(hex)にリセットされる。このビットはＡＲＭ７により読出のみが遂行され、記入は遂行されてはいけない。
＊制御レジスタ：このレジスタは、メモリデータ移動器と関連した情報を含む。このビットエンコーディングは下記のとおりである。
＜０＞：方向。このビットはデータトランスファーの方向を決定する。このビットが“０”（ディフォールト）の場合、データトランスファーの方向はホスト（ＰＥＮＴＩＵＭ）メモリからＭＳＰ ＳＤＲＡＭメモリであり、このビット“１”の場合、データトランスファーの方向は、ＳＤＲＡＭからホストメモリである。このビットはＡＲＭ７により記入されなければならない。
＜１＞：インタラプトイネーブル。このビットはメモリデータ移動器が、データトランスファーの最後にＡＲＭ７をインタラプトするか否かを決定する。このビットはＡＲＭ７により記入されなければならない。
＜２＞：ＤＭＡイネーブル。このビットはメモリデータ移動器が動作するようにイネーブルさせる。このビットはＡＲＭ７により記入されなければならない。
＜３＞：データトランスファーサイズ。このビットが“０”（省略時）の場合、各メモリのデータトランスファーサイズは３２バイトであり、“１”の場合は６４バイトである。このビットはＡＲＭ７により記入されなければならない。
【００５３】
１．６．１５．４ ＫＳ０１１９ビデオエンコーダーシリアルラインインターフェース
ＫＳ０１１９ビデオエンコーダーシリアルラインインターフェースは、下記のことを含む。
＊コーデックからの読出データを含むダブル−バッファ受信データバッファレジスタ
＊コーデックへの記入データを含むダブル−バッファ伝送データバッファレジスタ
＊シリアルラインに対する多様な制御＆ステータス情報を含む制御＆ステータスレジスタ
【００５４】
【表２０】
ＫＳ０１１９ビデオエンコーダーシリアルラインインターフェースレジスタ
0004290775.tif 000022
【００５５】
制御＆ステータスレジスタのビットエンコーディングは下記のとおりである。
ｂｉｔ＜０＞：受信データのフール状態である。このビットはシリアルラインが、ＫＳ０１１９ＣＯＤＥＣから８ビットのデータを受信した場合に設定される。もしインタラプトイネーブル（ｂｉｔ＜７＞）が設定されると、インタラプト要請もＡＲＭ７に発生される。
ｂｉｔ＜１＞：伝送データバッファが空いている状態である。このビットはシリアルラインがＫＳ０１１９にデータを送るように準備されている場合に設定される。もしインタラプトイネーブル（ｂｉｔ＜７＞）が設定されると、インタラプト要請もＡＲＭ７に発生される。
ｂｉｔ＜７＞：インタラプトイネーブル。このビットはＡＲＭ７にインタラプト要請をイネーブルさせるために使用される。
１．６．１５．５ ＡＤ１８４３オーディオ＆テレコムシリアルラインインターフェース
ＡＤ１８４３シリアルラインインターフェースは下記のことを含む。
＊コーデックから読出されたデータを含む一セットのダブル−バッファリングされたレジスタ
＊コーデックに記入しようとするデータを含む一セットのダブル−バッファリングされたレジスタ
＊シリアルラインに対する多様な制御＆ステータス情報を含む制御＆ステータスレジスタ
より詳細なことは、ＡＤ１８４３コーデックインターフェース部分を参照する。
１．６．１６ 命令性能
表２１は、毎サイクルが１２．５ｎｓであるベクトル処理器サイクルカウントにおける命令性能を示す。外部メモリバス幅は６４ビットで、４０ＭＨｚのページモードクロックを有すると仮定する。すべての命令性能は、３２バイトベクトルモードに与えられる。規則は下記のとおりである。
＊ラス（ｒａｓ）：外部メモリが第１アクセスをすることに要求されるサイクル数。一般に７５ｎｓまたは６個のサイクルを必要とする。
＊待ち時間（ｌａｔｅｎｃｙ）：第１命令を実行するためのサンプル数。
＊レート（ｒａｔｅ）：類似した連続的な命令実行の間に存在するサイクル数。
待ち時間がレートと同一な場合、１つの数字のみが使用される。
【００５６】
命令実行性能
【表２１】
0004290775.tif 000023
【表２２】
0004290775.tif 000024
【表２３】
0004290775.tif 000025
【００５７】
第 ２ 章 ＤＳＰコア
本章は、ハードウェア及びソフトウェアデザイナーが示しているＤＳＰコアの仕様に関して記述している。
２．１ 概要
ＤＳＰコアは、ＭＳＰにおいて基礎的な要素であり、すべての演算に対して単独に責任を担う。このＤＳＰコアは次のように構成される。
＊４０ＭＨｚで動作し、実時間ＯＳ、インタラプト及び例外処理、入出力装置管理等のような、汎用データ処理用として使用する３２ビットＡＲＭ７ ＲＩＳＣ ＣＰＵ。
＊８０ＭＨｚで動作し、離散余弦変換、ＦＩＲフィルタリング、くりこみ、ビデオのモーション推定等のようなデジタル信号処理用として使用されるベクトル処理器。このベクトル処理器はＡＲＭ７により初期化され、ＡＲＭ７と同時的に動作可能で、特殊な制御命令によりＡＲＭ７と同期される。
＊８０ＭＨｚで動作し、ＡＲＭ７のための１ＫＢの命令キャッシュと１ＫＢのデータキャッシュ、ベクトル処理器のための１ＫＢの命令キャッシュと４ＫＢのデータキャッシュ、ＡＲＭ７及びベクトル処理器のための共有の１６ＫＢの集積された命令＆データキャッシュＲＯＭから構成されるキャッシュサブシステム。ベクトル処理器用のデータキャッシュは、ハードウェアまたはソフトウェアによって制御され得る。キャッシュサブシステムは、３２ビットデータバスを通してＡＲＭ７とインターフェースし、１２８ビットデータバスを通してベクトル処理器とインターフェースする。
＊ビットストリーム処理器、インタラプトコントローラー、タイマー及びＵＡＲＴのような多様な内部周辺機器等とインターフェースする３２ビット、４０ＭＨｚの入力＆出力バス（ＩＯＢＵＳ）。
＊ＰＣＩバスコントローラー、メモリコントローラー、ＤＭＡコントローラー及びカストマＡＳＩＣロジックブロックとインターフェースする６４ビット、８０ＭＨｚの高速入／出力バス（ＦＢＵＳ）。
ＤＳＰコアのブロック図は、図１０の図示のとおりである。
【００５８】
２．２ ＡＲＭ７ ＲＩＳＣ ＣＰＵ
２．２．１ 概要
ＡＲＭ７ ＲＩＳＣ ＣＰＵは、汎用の３２ビットＲＩＳＣプロセッサコアである。このＡＲＭ７ ＲＩＳＣ ＣＰＵは、標準コプロセッサインターフェースを通しベクトル処理器とインターフェースし、実時間ＯＳ、ＩＯ装置インタラプト処理及びホストＣＰＵとの通信のように、大部の非演算的な集中機能を処理することに使用される。
ＡＲＭ７ ＣＰＵは下記のような特性を有する。
＊電力敏感性応用に理想的な極めて静的な動作。
＊低電力消費：０．６ｍＡ／ＭＨｚ ＠３Ｖ製作。
＊高性能：２５ＭＩＰｓ＠４０ＭＨｚ（４０ＭＩＰｓピーク）＠３Ｖ。
＊大小サイズのＥｎｄｉａｎ動作モード
＊実時間応用のための高速インタラプト応答（４０ＭＨｚで２２クロックサイクル）
＊簡単かつ強力な命令セット。
＊約６ｍｍ2の非常にコンパクトなレイアウト。
２．２．２ レジスタ
ＡＲＭ７は３１個の汎用レジスタと６個のステータスレジスタ、すなわち合計３７個のレジスタを有する。プログラマーには、常に１６個の汎用レジスタと１つ或いは２つのステータスレジスタが提供される。ユーザー、スーパーバイザー、ＩＲＱ、ＦＩＱ、Ａｂｏｒｔ及びＵｎｄｅｆｉｎｅｄのようなすべてのプロセッサモードで、Ｒ０とＲ１５は直接にアクセス可能である。
Ｒ１５を除いたすべてのレジスタは汎用に使用され、データまたはアドレス値を維持させることに使用される。Ｒ１５はプログラムカウンター（ＰＣ）を維持する。ステータスはレジスタのＣＰＳＲ−現在プログラムステータスレジスタは、ＡＬＵフラグと現在モードビットを有している。
Ｒ１４はサブルーチンリンクレジスタとして使用され、ブランチ及びリンク命令が遂行された時、１セットのＲ１５データを受信する。他の場合は、Ｒ１４は汎用レジスタとしても使用され得る。
【００５９】
汎用レジスタ及びプログラムカウンター
【表２４】
0004290775.tif 000026
【００６０】
【表２５】
プログラムステータスレジスタ
0004290775.tif 000027
【００６１】
２．２．３ 例外
例外は、命令処理途中で発生する非正常的な条件をいい、これは制御流れの変更を招来する。ＡＲＭ７例外動作の７タイプに関し、上位優先順位から下位優先順位に列挙すると下記のとおりである。
＊リセット(reset)（最上位優先順位）
＊取消し(abort)（データ）
＊ＦＩＱ
＊ＩＲＱ
＊取消し(abort)（プリフェッチ）
＊定義されていない命令トラップ、ソフトウェアインタラプト（最下位優先順位）
【００６２】
【表２６】
例外ベクトルテーブル
0004290775.tif 000028
【００６３】
２．２．４ 命令セット
すべてのＡＲＭ７命令は条件的に実行されるが、これはＡＲＭ７命令がＣＰＳＲレジスタにあるＮ、Ｚ、Ｃ、Ｖフラグ値によって実行されるかもしくは実行されないことを意味する。
ＡＲＭ７命令は、下記のような多様なカテゴリーに分けられる。
＊ブランチ及びリンクされたブランチ（Ｂ、ＢＬ）
＊データプロセッシング（ＡＮＤ、ＥＯＲ、ＳＵＢ、ＲＳＢ、ＡＤＤ、ＡＤＣ、ＳＢＣ、ＲＳＣ、ＴＳＴ、ＴＥＱ、ＣＭＰ、ＣＭＮ、ＯＲＲ、ＭＯＶ、ＢＩＣ、ＭＶＮ）
＊ＰＳＲトランスファー（ＭＲＳ、ＭＳＲ）
＊掛け算及び掛け算−累算（ＭＵＬ、ＭＬＡ）
＊シングルデータトランスファー（ＬＤＲ、ＳＴＲ）
＊ブロックデータトランスファー（ＬＤＭ、ＳＴＭ）
＊シングルデータスワップ（ＳＷＰ）
＊ソフトウェアインタラプト（ＳＷＩ）
＊コプロセッサデータ動作（ＣＤＰ）（これは一グループの命令である。）
＊コプロセッサデータトランスファー（ＬＤＣ、ＳＴＣ）
＊コプロセッサレジスタトランスファー（ＭＲＣ、ＭＣＲ）
２．３ ベクトル処理器
２．３．１ 概要
ベクトル処理器は、最大性能のために、単位命令多重データ（ＳＩＭＤ）構造を利用する強力なデジタル信号処理器であって、非常に優れた性能を実現させるために、多重データ要素上で並列に動作するパイプラインされたＲＩＳＣエンジンから構成される。多重データ要素は、５７６ビットベクトルでパッキングされ、これは下記のようなレートで計算され得る。
＊１２．５ｎｓ−サイクル毎に３２個の８／９ビット固定小数点算術演算  または
＊１２．５ｎｓ−サイクル毎に１６個の１６ビット固定小数点算術演算ま  たは
＊１２．５ｎｓ−サイクル毎に８個の３２ビット固定小数点または浮動小  数点算術演算
２．３．２ 実行パイプライン
ベクトル処理器は、命令を実行させるために図１１の図示のとおり、６段階のパイプラインを利用する。大部の３２ビットスカラー演算が、サイクル当り１つの命令比率でパイプラインされる一方、大部の５７６ビットベクトル演算は、２個のサイクル毎に１つの命令比率でパイプラインされる。すべてのロード＆貯蔵(Loads＆Stores)は算術演算と重なり、別途でロード＆貯蔵ハードウェアにより独立的に実行される。
設計の複雑度と性能を調和させるために、ベクトル処理器は資源及びデータ従属性をチェックするためのハードウェアインターロックを順序とは関係なく使用し、命令等を発生するか実行することができる。この特徴は、ロード及び貯蔵によって、データキャッシュが紛失される期間の性能を、特に大幅改善する。
【００６４】
２．３．３ ハードウェアマイクロ構造
ベクトル処理器は、図１２の説明のとおり、４個の主機能ブロックから構成される。
＊命令語取出ユニット（ＩＦＵ）
＊命令語デコーダー＆発行器
＊命令語実行データ経路
＊ロード＆貯蔵ユニット（ＬＳＵ）
命令語取出ユニットは、命令語の先取り（ｐｒｅｆｅｔｃｈ）及び、ブランチとジャンプのような命令語のサブルーチンに対する流れを制御するプロセッシングを担当する。ＩＦＵは現在実行ストリームに対してプリフェッチされた命令語からなる１６個のエントリキューと、ブランチターゲットストリーム対してプリフェッチされた命令語からなる８個のエントリーキューを有する。ＩＦＵはサイクルごとに命令語キャッシュから８個の命令語が受信できる。
命令語デコーダー＆発行器は、すべての命令語に対するデコーディング及びスケージュリングを担当する。たとえ発行器は、実行資源とオペランドデータ有効性によって、非順次的な大部の命令語のスケジュールが可能であるが、デコーダーはサイクル当り１つの命令語を処理することができ、常にＩＦＵから順次的に到着する命令語を処理することができる。
ベクトル処理器は１２．５ｎｓ／ｃｙｃｌｅで動作する多数個の２８８ビットデータ経路（図１３参照）を通してその性能の大部分を実現し、この場合次のことを含む。
＊サイクル当り２個の読出及び２個の記入を支援することができる４個ポートを有するレジスタファイル
＊８回の３２ビット掛け算（整数また浮動小数点フォーマット）、１６回の１６ビット掛け算及び３２回の８ビット掛け算の中のいずれか１つの演算時ごとに、１２．５ｎｓを生成する８個の３２×３２並列掛け算器
＊８回の３６ビットＡＬＵ演算（整数または浮動小数点フォーマット）、１６回の１６ビットＡＬＵ演算または３２回の８ビットＡＬＵ演算の中のいずれか１つの演算時ごとに、１２．５ｎｓを生成する８個の３６ビットＡＬＵ
ロード＆貯蔵ユニットは、それぞれ図１４の説明のように、２８８ビット幅を有する別個の読出＆記入データバスを通して、データキャッシュとインターフェースするために設計されたものである。
【００６５】
２．３．４ インタラプト＆例外
ベクトル処理器は、次の２つの特殊条件のみを認識する。
＊ＡＲＭ７プログラムによって実行されるＣＰＩＮＴ（コプロセッサインタラプト）命令語
＊ベクトル処理器プログラムによって実行される、サブルーチン命令語へのネストされたジャンプ(nested jump)＆掛け算の結果のハードウェアスタ ックオーバーフロー ベクトル処理器がこれらの２個の特殊条件を処理する、より詳細な方法に対 しては、ベクトル処理器構造文書を参照すること。
ＭＣＰから発生されるその他のインタラプト及び例外条件は、ＡＲＭ７のみによって処理される。
【００６６】
２．４ キャッシュサブシステム
２．４．１ 概要
キャッシュ制御ユニット（ＣＣＵ）はＡＲＭ７コア、ベクトル実行ユニット（ＬＳＵ、ＩＦＵ）、メモリ（ＭＣＵ、ＰＣＩ、ＤＭＡ、ＣＯＤＥＣ）及びＩＯデバイス（ＢＰ、ＵＡＲＴ、タイマー、インタラプトコントローラー）とインターフェースする。ＣＣＵは高速（８０ＭＨｚ）のＦＢＵＳと、低速（２０ＭＨｚ）のＩＯＢＵＳとインターフェースする。ＣＣＵは事実上、すべての内部ＣＰＵコアユニットと周辺ＩＯデバイスと間の中央データ伝送ユニットである。ＭＳＰチップにおいてＣＣＵの詳細な説明に関しては、ＭＳＰ−１Ｅシステムスぺックのブロック図（ｐｐ．１−１０）を参照すること。
非常に高性能のキャッシュサブシステムを支援するために、ＣＣＵの設計はすべての読出及び記入動作を支援するプロトコルに基づいたトランザクション(transaction)を使用する。メモリをアクセスする必要がある任意のユニットは、ＣＣＵ制御ユニットでリクエスト(request)を発生させ得る。制御ユニットにあるアービタ(arbiter)は、固定された優先順位に基づいてリクエストを承認し、リクエスター(requestor)で‘transaction_id’を回信する。リクエスターはこの‘transaction_id’を貯蔵し、データが実際に到着した場合に、回信されたデータが認識できるようにする。ＣＣＵ制御が１つのユニット（キャッシュミス（cache miss)が発生した場合、多いサイクルを必要とする場合もある）からのリクエストを処理する間、他のユニットから新しいリクエストが、他の‘transaction_id’と共に次のサイクルで承認される場合もある。リクエストをペンディング(pending)させるこのような方法では、他のユニットからの連続的なリクエストを遮断させることが発生されないので、高性能の実験が可能になる。現在、ＣＣＵは１つのサイクルで１つの読出リクエストと、１つの記入リクエストを同時にアクセプトし承認することができる。
【００６７】
メモリに対するインターフェースユニット（ＦＢＵＳ）は、４個エントリーのアドレスキューと、１個エントリーのライト−バック(write-back)ラッチからなる。最善の状態で、ＦＢＵＳはＡＲＭ命令語キャッシュからの１つのペンディングリフィール（読出）リクエスト、ＶＥＣ命令語キャッシュからの１つのペンディングリフィール（読出）リクエスト、ＶＥＣデータキャッシュからの１つの記入リクエストと、ダーティ（dirty)キャッシュラインにより、ＶＥＣデータキャッシュからの１つのライト−バックリクエストを支援することができる。
また、キャッシュメモリ自体は、高性能のために最適化される。ＭＳＰキャッシュシステムは、チップ上(on-chip)のキャッシュＳＲＡＭとキャッシュＲＯＭとを有する。キャッシュＳＲＡＭは、ＡＲＭ ＣＰＵとベクトルコアまたは命令語とデータ間のスラッシング(thrashing)を防止するため、４個の相互に異なるバンクからなる。キャッシュＲＯＭは、ＡＲＭ７とベクトルコアのために高速及び高密度のデータ貯蔵領域を提供する。例え、タグ(tag)がキャッシュＲＯＭに対して変更されることはないが、有効ビットの使用が不可能になり、データが外部メモリから返還される。要すれば、チップ上のキャッシュメモリは、次のようなブロックを含む。
＊１ＫＢの直接マッピングされた命令語キャッシュと、１ＫＢの直接マッピングされつつＡＲＭ７に対する３２ビットデータバスインターフェースを有するライト−バックデータキャッシュ
＊１ＫＢの直接マッピングされ、ベクトル命令語フェッチユニットに対する２５６ビットバスインターフェースを有する命令語キャッシュ
＊４ＫＢの直接マッピングされ、ベクトル実行ユニットに対する２５６ビットバスインターフェースを有するライト−バックデータキャッシュ。データキャッシュはデュアルポートからなり、８０ＭＨｚのサイクルごとに２５６ビットの読出データを提供し、２５６ビットの記入データを支援することができる。
＊４ＫＢ ＶＥＣデータキャッシュは、ソフトウェアの制御下で、スクラッチ−パッド(scratch-pad)演算により形成できる。
＊ＡＲＭ７及びベクトル処理器で使用するために共有または集積された命令語＆データＲＯＭキャッシュ。ＡＲＭ７に対するインターフェースは、その命令語キャッシュと同一な３２ビットバスを通して、ベクトル処理器に対するインターフェースは、その命令語キャッシュと同一な２５６ビットを通してなる。
＊５個のポート：
−ＡＲＭ７のための読出／記入ポート
−ベクトル処理器の命令語取出ユニットのための読出ポート
−ベクトル処理器のロード／貯蔵ユニットのための読出／記入ポート
−ベクトル処理器のＩＯＢＵＳのための読出／記入ポート
−ＦＢＵＳのための読出／記入ポート
＊ＡＲＭ７ ＣＰＵ命令語キャッシュのための３２×２５６ビットＳＲＡＭ（〜１ＫＢ）
＊ＡＲＭ７ ＣＰＵデータキャッシュのための３２×２５６ビットＳＲＡＭ（〜１ＫＢ）
＊ベクトル処理器データキャッシュのための１２８×５６ビットＳＲＡＭ
（〜４ＫＢ）
＊ベクトル処理器命令語キャッシュのための３２×２５６ビットＳＲＡＭ
（〜１ＫＢ）
＊データ＆命令語キャッシュのための５１２×２５６ビットＳＲＡＭ
（〜１６ＫＢ）
ベクトルデータキャッシュの制御は、ハードウェア制御またはソフトウェア制御によって遂行される。
【００６８】
２．４．２ キャッシュサブシステム構造
図１５は、ＭＳＰキャッシュシステムのブロック図であり、次のブロックＩＤＣ（Instruction Data Cache)、キャッシュＲＯＭ、ＣＣＵ＿ＤＡＴＡ＿ＤＰ、ＣＣＵ＿ＡＤＲ＿ＤＰ、ＣＣＵ＿ＣＴＬ及びＣＣＵ＿ＳＭとから構成される。それぞれのサブブロックは、さらに詳細なことは後述する。
２．４．２．２ ＩＤＣ
命令語及びデータキャッシュ（ＩＤＣ；図１６参照）は、チップ上のＳＲＡＭメモリであり、命令語及びデータキャッシュアクセスを提供するために使用される。このキャッシュは、１つのアレーに対し４個のバンク：ＡＲＭ＿ＩＣ（１ＫＢ）、ＡＲＭ＿ＤＣ（１ＫＢ）、ＶＥＣ＿ＩＣ（１ＫＢ）及びＶＥＣ＿ＤＣ（４ＫＢ）から構成される。任意のサイクルで、このキャッシュは１つの読出リクエストと１つの記入リクエストをアクセプトする。タグＲＡＭは、２個の読出ポートを有する。読出ポートアドレスと記入ポートアドレスとは、ヒットまたはミス条件に対し、内部キャッシュタグと比較される。データＲＡＭは、読出ポートアドレスによりアクセスされる１つの読出ポートのみを有する。また、タグＲＡＭとデータＲＡＭとは、相互に異なるセットの記入アドレスを使用し記入される。従って、キャッシュアレーををアクセスするためには、４セットのキャッシュバンク選択信号と、３セットのラインインデックスを必要とする。
ＩＤＣは下記のような特性を有する。
＊ライト−バック規則に直接マッピングされる。
＊キャッシュラインサイズは６４Ｂであるが、データ幅は３２Ｂであり、これはＭＳＰチップのベクトルデータ幅のサイズに該当する。
＊各ラインは２個の有効ビットを有するが、１つはハイベクトルのためのものであり、他の１つはローベクトルのためのものである。また、データキャッシュはそれぞれのデータに対して１個づつすなわち、２個のダーティビットを有する。
＊ＡＲＭ＿ＩＣ、ＡＲＭ＿ＤＣ及びＶＥＣ＿ＩＣのためのタグサイズは２  ２ビット（アドレスビット１０〜ビット３１）であり、ＶＥＣ＿ＤＣのためのタグサイズは２０ビット（アドレスビット１２〜ビット３１）である。
＊ＡＲＭ＿ＩＣ、ＡＲＭ＿ＤＣ及びＶＥＣ＿ＩＣのためのラインインデックスビットは５ビット（アドレスビット５〜ビット９）であり、ＶＥＣ＿ＤＣのためのラインインデックスビットは、７ビット（アドレスビット５〜ビット１１）である。
＊ＶＥＣ＿ＤＣ（４ＫＢ）は、ソフトウェアの制御下でスクラッチ−パッドに再形成され得る。
＊Ｖ＿ＣＬＥＡＲ信号は、キャッシュライン有効ビットのすべてを、一回に全体的にリセットさせることに使用する。後でＶ＿ＣＬＥＡＲは個別的なバンクのみを選択的にリセットさせ得る。
【００６９】
２．４．２．３ データ経路パイプライン
図１７参照。
２．４．２．４ アドレス経路パイプライン
アドレス処理パイプラインに対するデータ経路は、図１８の図示のとおりである。
ＣＣＵ  ＡＤＤＲＥＳＳ ＤＰ
２．４．３ インターフェース
２．４．３．１ データタイプ
ＣＣＵはテーブル１５に説明されている多数個のリクエスティングユニットからの相異なるデータタイプを処理する。
【００７０】
相異なるデータタイプを処理する場合のＣＣＵ動作
【表２７】
0004290775.tif 000029
【００７１】
２．４．３．２  ＡＲＭインターフェース
ＡＲＭ７ ＣＰＵコアが、ＭＳＰチップの周波数の１／２（４０ＭＨｚ）で動作する反面、ＣＣＵはＭＳＰチップの周波数（８０ＭＨｚ）で動作する。この２個クロック間の同期化は設計時に重要である。一般的に、クロック発生器ユニットは、ＣＬＫ１の上昇エッジでＭＣＬＫを切換する。また、ＡＲＭ７に連結された全体的なリセット信号は、ＣＬＫ１とＭＣＬＫがローの場合に解除(de-assert)される。このような方法によって、２個のユニットは適切に同期化される。ＡＲＭ７は命令語とデータ用として１つの入力バス（ＡＲＭ＿ＤＡＴＡ＜３１：０＞のみを有するが、ＭＳＰチップは専用の命令語キャッシュ（ＡＲＭ＿ＩＣ、１ＫＢ）とデータキャッシュ（ＡＲＭ＿ＤＣ、１ＫＢ）とを備える。ＣＣＵは、ＡＲＭ＿ＮＯＰＣを使用し、この二種類のリクエストを区別することができる。
性能を更に向上させるために、ＣＣＵはメインキャッシュとＡＲＭ７コアとの間に位置するマイクロ命令語キャッシュ（ＵＩ＿ＣＡＣＨＥ、３２Ｂ）とマイクロデータキャッシュ（ＵＤ＿ＣＡＣＨＥ、３２Ｂ）を付加する。このキャッシュは、それぞれ連続的なコードとデータとからなっている８ワードを有する。これらのマイクロキャッシュは、その自体のタグ（２７ビット）、タグ比較器と有効ビットを有する。有効ビットはシステムリセット期間の間すべてがクリアされる。
ＡＲＭ７マイクロキャッシュは、実際のキャッシュよりはかえってプリフェッチバッファの役割を遂行する。ＡＲＭ７読出の期間の間、アドレス（ＡＲＭ＿Ａ、３１：０＞）は常にタグに比較される。ヒットはＡＲＭ＿ＤＡＴＡ＜３１：０＞を通して命令語またはデータをリードバック(read back)する。その後１つのマイクロキャッシュはアドレス、データタイプ及び他の制御情報と共にリクエストをＣＣＵに送る。ＣＣＵのアービタロジックは、すべてのユニットからのリクエストが読出リクエストを作ることを承認する。現在、承認を得ることにおいて、ＡＲＭ７は他のブロックに対して最上位の優先順位を有する。その理由は、ＡＲＭ７のマイクロキャッシュがミスを持たない限り、ＡＲＭ７がリクエストを作る場合が殆どないからである。しかし、ＣＣＵは多数個のサイクルリクエストまたはアドレスキュー充足条件を提供するために、内部のホールドサイクルを有することができる。この期間の間、外部のリクエストは全然承認されない。
ＡＲＭ７からの記入は、アドレスがＵＤ＿ＴＡＧをヒットする場合、常にＵＤ＿ＣＡＣＨＥを無効化させる。ライト−スルー(write-through)またはライト−バック(write-back)キャッシュとしてＵＤ＿ＣＡＣＨＥを設計することにおいて、何等の試みも行っていない。ＵＤ＿ＣＡＣＨＥ記入ヒット時に無効化させることにより、ＡＲＭ＿ＤＣとＵＤ＿ＣＡＣＨＥ間のデータを一致させることができる。
ＣＣＵはＡＲＭ＿ＩＣまたはＡＲＭ＿ＤＣに読出または記入リクエストを送る間にａｒｍ＿ｎｗａｉｔを制御する。一般的に、ＣＣＵは記入期間の間には、ａｒｍ＿ｎｗａｉｔをホールドさせない。一応、記入リクエストがｃｃｕ＿ｗｒｉｔｅ＿ｈｏｌｄ２を見ないで承認されると、ＡＲＭ７はただ次のサイクルからＡＲＭ＿ＤＡＴＡ＜３１：０＞にあるデータを持ってくる。ＣＣＵはデータを貯蔵するために、内部の記入バッファを有する。ＡＲＭ７は命令語を実行し続けることができる。しかし、ＣＣＵはたとえデータがメインキャッシュにあるとしても、常に１つのサイクルに対してａｒｍ＿ｎｗａｉｔをホールドさせる。もし、読出リクエストがメインキャッシュをミスした場合、データが外部のメインメモリから返還されるまで、更に多いサイクルがホールドされる。図１９に図示したＡＲＭ＿ＣＣＵインターフェース状態のマシンは、ＣＣＵがａｒｍ＿ｎｗａｉｔを制御する条件を説明する。
【００７２】
図１９において：
ＳＴＡＲＴ：リクエストがなく、または読出データが返還されるか、ホールドせず記入リクエストが発生された場合の状態マシンのためのスタート状態。
ＨＯＬＤ：ＣＣＵは読出または記入のためのＡＲＭ７リクエストを承認し、ホールド信号で承認を取り消す。
ＴＡＧ：ＣＣＵは読出アドレスでタグをチェッキングする。
ＭＩＳＳ：読出アドレスは１つのミスを有し、ｃｃｕはリフィールリクエストを外部のｄｒａｍに送る。
ＤＡＴＡ：読出データが返還され、ＣＣＵは返還されたデータをマイクロデータキャッシュへ送る。
２．４．３．３ ＦＢＵＳインターフェース
ＣＣＵ＿ＦＢＵＳインターフェース状態マシン（Ｆ＿ＳＭ）は、図２０の図示のとおりである。図２０において：
ＩＤＬＥ： アイドル状態
ＲＥＱ： 読出または記入リクエストをＦＢＵＳアービタに送る。
ＧＲＴ１： 承認サイズが８Ｂより大きい。
ＧＲＴ２： 承認サイズが１６Ｂより大きい。
ＧＲＴ３： 承認サイズが２４Ｂより大きい。
ＧＲＴ４： 最後のサイクルに対する駆動データ
データ受信状態マシン（Ｄ＿ＳＭ）は、図２１の図示の通りである。図２１において、
ＩＤＬＥ：アイドル状態
ＯＮＥ： Ｆｄａｔａ＜６３：０＞から第１の８Ｂデータを受信する。
ＴＷＯ： Ｆｄａｔａ＜６３：０＞から第２の８Ｂデータを受信する。
ＴＨＲＥＥ： Ｆｄａｔａ＜６３：０＞から第３の８Ｂデータを受信する。
ＦＯＵＲ： Ｆｄａｔａ＜６３：０＞から第４の８Ｂデータを受信する。
ＲＥＦＩＬＬ： データをリクエストに返還する前、ＩＤＣをリフィールする。
ＲＤＹ： データをリクエスターに返還する準備をする。
【００７３】
２．４．４ 読出及び記入動作
読出及び記入状態マシンは、図２２の図示のとおりである。
２．４．４．１ 読出動作
ＭＳＰでＩＤＣ(Instruction and Data Cache)は３段のパイプラインサイクル：リクエストサイクル、タグサイクル及びデータサイクルで動作する。キャッシュヒット状況で、ＩＤＣは毎サイクルで命令語またはデータの返還が可能である。
キャッシュコントローラーユニット（ＣＣＵ）は、キャッシュＳＲＡＭアクセスのためにＡＲＭ７、ベクトル処理器ユニット、ＦＢＵＳとＩＯＢＵＳ間の仲裁を担当する。ＣＣＵはこの４個のマスタからのバスリクエストを監視し、特定のＩＤ番号を有する勝者にバスを承認する。ＣＣＵはまたキャッシュをアクセスしタグを比較するために、キャッシュアドレスバスと読出／記入制御信号を発生する。
キャッシュヒットがある場合、仲裁から勝ったバスマスタは、読出／記入動作のためにキャッシュをアクセスすることができる。キャッシュミスがある場合、ＣＣＵはメインメモリから返還される紛失データを待たずリクエストを発生させてから、バスマスタを助けてやる。それで、キャッシュミスを有するバスマスタは、ＩＤ番号を維持すべきである。以降、リクエストされたデータがキャッシュにあると、ＣＣＵはＧＲＡＮＴ信号を同一なＩＤ番号を有するデータを紛失したバスマスタに送る。このバスマスタはデータをアクセプトするかまたは無視する。
キャッシュミスが発生した場合、メインメモリからデータを受けるために、ラインフェッチが遂行される。ラインサイズは６４バイトに定義され、従ってＣＣＵはメインメモリからキャッシュにデータを供給するために、８回の連続的なメモリアクセス（毎回６４ビット）を実行する。
＊リクエストサイクル：
ＣＣＵはＣＬＫ１で多数個のユニット（ＡＲＭ、ＩＦＵ、ＬＳＵ、ＩＯ）から読出リクエストをアクセプトする。リクエスターは、ＣＬＫ１の初期に、リクエスト信号(1su_req)と読出／記入信号(1su_rw)を表示する。ＣＬＫ１の終わりでＣＣＵはｃｃｕ＿ｇｒａｎｔ＿ｉｄ［９：０］を駆動することによって、この読出リクエスト中の１つを承認する。ｃｃｕ＿ｇｒａｎｔ＿ｉｄ［９：６］がリクエスターのｕｎｉｔ＿ｉｄと整合されると、リクエストが承認される。リクエスターはｃｃｕ＿ｇｒａｎｔ＿ｉｄ［５：０］が、リクエストと関連したｔｒａｎｓａｃｔｉｏｎ＿ｉｄであるので、ｃｃｕ＿ｇｒａｎｔ＿ｉｄ［５：０］をラッチしなければならない。
リクエストが承認されると、リクエスターはアドレス（1su_adr[31:0])とＣＬＫ２でキャッシュオフ動作(1sh_ccu_off)及びデータタイプ(1su_vec_type[1:0]、1su_data_type[2:0]）のような他の制御情報をＣＣＵに送る。
ＣＬＫ２の終わりでccu_rd_hold_2が表示されなければ、リクエストは完全にＣＣＵに送られ、リクエストされたデータはしばらく後で返還される。しかし、ccu_rd_hold_2が表示されると、ＣＬＫ１で承認されたリクエストは取り消しつつ、リクエスターは続いてアドレスと制御情報を送る。以前のすべてのgrant_id情報がまだ有効であるので、次のサイクルでは同一な読出リクエストを更に発生させる必要がない。ccu_rd_hold_2はＣＬＫ２でＣＣＵによって解除されるまで、ＣＬＫ１で一定に維持される。
ccu_rd_hold_2はタイミング臨界信号であって、リクエスターでＣＣＵが現在サイクルで他のことを処理することに忙しくて、承認されたリクエストはまだ処理されていないことを知らせることに使用される。
＊タグサイクル
リクエストが承認され、後でリクエストサイクルで取り消されなかった場合、リクエストはキャッシュアクセスのタグ比較段階に入る。ＣＣＵはタグ読出のためのラインを選択するために、アドレス(1su_adr[11:5])とバンク選択信号（リクエスター）を使用する。タグヒット信号(ccu_1su_hit_2)は、ＣＬＫ２の終端で知られる。データはヒット状況のために次のサイクルで復帰される。読出ポートタグが出力され、ＣＬＫによりラッチされる。
また、アドレスキューステータスは、このサイクルで評価される。タグミスと‘almost_full_address_queue’は、‘ccu_rd_hold_2'信号を表示する。ＣＣＵ状態マシンは、或る新しい読出リクエストも処理しないが、中止されたタグ比較を更に試みる。
それぞれのキャッシュライン（６４Ｂ）は２つのベクトルを含むので、タグヒットを得るためにアクセスされたベクトルの有効ビットが有効でなければならない。２倍のベクトル（６４Ｂ）データの読出のためには、タグヒットを得るために、２つの有効ビットが有効でなければならない。cc_off動作は常にタグミスを誘発させ、リクエストはアドレスキューに掲示される。
＊データサイクル
これはＣＣＵがデータをリクエスターに復帰するサイクルである。データはＣＬＫ１で駆動される下位１６Ｂと、ＣＬＫ２で駆動される上位１６Ｂと共に、ccu_dout[127:0]上に乗せられる。６４Ｂデータリクエストの場合、伝送を終結させるために、１つの付加的なサイクルが使用される。
ＣＣＵはデータが次のＣＬＫ１で復帰されることをリクエスターに知らせるために、常にccu_data_id[9:0]をＣＬＫ２の初期の１／２サイクルで駆動する。リクエスターは適切な戻りデータのために、常にccu_data_id[9:0]を比較する。また、戻りデータの指示子としてタグヒットが使用される。
もし、タグサイクルでタグミスがあり、アドレスキューが充満でなければ、ＣＣＵはＣＬＫ１で紛失されたアドレス、ｉｄ情報及び他の制御情報を、４個エントリーアドレスキューに掲示しつつ、キャッシュラインフェッチを始める。現在、それぞれのアドレスキューは、大略６９ビットの情報を含む。ＣＬＫ２でメモリアドレスラッチがロードされ、ＦＢＵＳリクエストが次のＣＬＫ１で発生される。
【００７４】
２．４．４．２ 記入動作
ＩＤＣで記入動作は、３段のパイプラインサイクル：リクエストサイクル、タグサイクル及びデータ記入サイクルで動作する。記入アドレスヒット状況で、ＩＤＣは毎サイクルでキャッシュデータアレーにデータを記入することができる。
＊リクエストサイクル：
ＣＣＵはＣＬＫ１で多数個のユニット（ＡＲＭ、ＬＳＵ、ＩＯ）から記入リクエストをアクセプトする。リクエスタはＣＬＫ１の初期にリクエスト信号(1su_req)、読出／記入信号(1su_rw)とベクトルタイプ(1su_vec_type[1:0])を表示する。ＣＬＫ１の終わりでＣＣＵは、この記入リクエストの中のいずれか１つを承認する。相互に異なるユニットに対する記入承認は、承認信号(ccu_1su_wr_grant)を直接リクエトユニットに表示することにより実現される。返還されるデータが全然ないので、リクエストユニットがＣＣＵからtransaction_idを受信する必要はない。ＣＬＫ２で、リクエスタはアドレス(1su_adr[31:0])、cc_off信号(1su_ccu_off)及びデータタイプ(1su_data_type[2:0])を供給しなければならない。読出の場合も同様に、たとえ、リクエストは承認されたが、現在サイクルで処理されなかったことをリクエスタに知らせるために、ＣＣＵはＣＬＫ２の終端の近くでccu_wr_hold_2を表示する。リクエスタはccu_wr_hold_2が解除されるまでアドレス、cc_off信号とデータタイプ情報を駆動し続ける。以降、次のサイクルでリクエスタは記入データをccu_dout[127:0]に供給する。
＊タグサイクル
リクエストが承認され、後でリクエストサイクルで取り消されなかった場合、リクエストはキャッシュアクセスのタグ比較段階に入る。このサイクルは記入ポートアドレスタグを比較する。ＣＣＵはキャッシュ用ラインを選択するために、アドレス(1su_adr[11:5])とバンク選択信号（リクエスター）を使用する。タグヒット信号(ccu_1su_hit_2)は、ＣＬＫ２の終わりへ知られる。cc_off記入は、常にタグミスを誘発させ、記入データは外部の記入のためにＦＢＵＳ上に乗せられる。
リクエスタはＣＬＫ１の下位１６ＢとＣＬＫ２の上位１６Ｂにより、ccu_din[143:0]にデータを駆動し始める。６４Ｂデータ転送の場合、データを駆動するためにリクエスタは、１つの付加的なサイクルを取る。ＣＣＵはこのデータをホールドするために、内部の記入データラッチを有する。この記入がキャッシュをヒットさせるか（実際にデータをキャッシュに記入するために、１つまたは２つのサイクルが使用される）、キャッシュをミスさせる場合（データを記入するために、最も少ないサイクルが使用される）、リクエスタは記入が完了されたことと見なす。
＊データ記入サイクル
このサイクルは、キャッシュヒット状況のために、ＣＣＵが実際のデータをキャッシュに記入するサイクルである。タグサイクルでタグミスがある場合、ＣＣＩはこれをデータタイプによって相異するように処理する。
データタイプが３２Ｂで、ラインがクリーン(clean)の場合（２つのベクトルもクリーン）、ＣＣＵはただ現在のラインを、新しいタグと新しいデータをオーバーライトする。また、アクセス中のベクトルを有効及びダーティなものと表示する反面、同一なラインの他のベクトルは無効なものに置いておく。
データタイプが３２Ｂより少ない場合、このサイクルは部分的にデータ記入が行われる。この部分データは、一時的なレジスタに貯蔵される。ＣＣＵは紛失された半ライン（３２Ｂ)をメモリからフェッチしてからロードし、キャッシュに戻す。その後、部分データは適切なバイトイネーブル信号と共にキャッシュラインに記入される。
ダーティキャッシュラインを有するすべての記入ミスに対して、ＣＣＵはまずダーティラインをコピーする。ダーティデータがまだ使用されていないので、ＣＣＵは承認ロジックにホールドを表示し、新しい読出または記入リクエストが承認されないようにする。その後、ダーディキャッシュラインデータをフェッチするために、ダーティラインを使用し内部の読出が始まる。結局、ライトバックアドレス及びデータはメモリに供給される。
【００７５】
２．４．５ プログラミングモデル
キャッシュサブシステムのすべては、ロード＆貯蔵命令語を使用したハードウェアで制御されるので、ソフトウェア−可視(software-visible)レジスタを必要としない。
２．４．６ ＩＤＣ及びＲＯＭアドレスフォーマットは図２３の図示のとおりである。
【００７６】
第 ３ 章  ＩＯＢＵＳ説明
本章は、ハードウェアデザイナーが示すＩＯＢＵＳの仕様に関して記述したものである。
３．１ 概要
ＩＯＢＵＳは、システムで使用される低速の標準的な周辺装置のために設計されたものである。このバスは、ＭＳＰキャッシュ制御ユニット（ＣＣＵ）、ビットストリーム処理器（ＢＳＰ）とタイマー／インタラプトコントローラーと、ＵＡＲＴのようなすべての他のＩＯ周辺装置等間のメインインターフェースの役割を果たす。バスのフォーマットは、インテル社のＩＯバスと非常に類似している。バスアービタ制御ロジックは、リクエストに対しバスを常に監視し、ラウンド−ロビン(round-robin)システムを用い、適切なリクエスト−承認を発生させる。潜在的なバスマスタは、常にバス−リクエストを表示し、バスを占有する前にバス−承認が表示されることを待つ。バスマスタは、常にプロトコルによる期間の間、アドレスと制御ラインとを駆動する。
【００７７】
ＩＯＢＵＳは全体的に４０ＭＨｚで動作する同期バスである。ＭＳＰ ＩＯＢＵＳ上でのすべての承認は、リクエストがアクチブにサンプリングされてから第１番目のサイクルで発生する。このバスは４個のサイクル（４個のバースト）に対し、１６バイト伝送まで処理可能である。これはバスマスタによりリクエストされた伝送サイズをバスアービタに知らせる２個のサイズビットを使用することによって実現される。
ＩＯＢＵＳは３２ビットアドレスとデータマルチプレクサーを有する。アドレスは常にデータの以前に現れる。ＩＯＢ＿ＡＬＥ（アドレスラッチイネーブル）信号はアドレスをラッチするために、受信装置により使用される。たとえ、８ビットデバイスがバスに連結されても、すべてのバスアクセシングは３２ビット伝送を仮定する。正常的な規則によると、８ビットデバイスは、バスの下位８ビット［７：０］を使用し、１６ビットデバイスはバスの下位１６ビット［１５：０］を使用する。もし１６ビットデバイスが８ビットデバイスとの通信を願うと、８ビットデバイスがデータを探してラッチできるように、バスの下位８ビットに正確なデータを載置すべきである。同一期間に多数個のリクエストがある場合、承認されないリクエスタは、ＩＯＢＵＳアービタが承認するまで、常にそのリクエストをホールドさせなければならない。このようなシステムにおいて許容されたリクエストに対し多い“バス−アクセシングサイクル”すなわち、４＊３２ビット伝送（最大１６バイト）がある。ブロック伝送は、常にそれぞれ多数個の３２ビット伝送に分けられる。
すべてのバス承認は、ＩＯＢＵＳアービタにより発生される。しかし、常にアドレス（有効時）を監視し、目的地に適切なチップ選択（次のクロックサイクルに対して）を発生させる並列デコーディングロジックがある。チップ選択は、常にただ１つサイクルに対して有効であり、以降アドレスがすべての読出及び記入リクエストのために表示される。それぞれのＩＯＢＵＳノードは入力として専用のチップ選択を有する。ピン説明及びタイミング図を参照すること。
２ビットサイズ情報は、バスアービタから承認されてからマスタによって発生され、以降２個のバスサイクルに対して有効である。ＣＳがバス伝送サイクルを決定するために表示されると、選択されたスレーブはサイズ情報を獲得しなければならない。また、読出または記入時、ＩＯＢＵＳアービタは新しいリクエストを探し始める前、バスサイクルが終了されることを判断するための伝送サイズのトラックを維持する。バースト−バス伝送時（読出または記入時）データ間には差異が全然ない。
データ読出伝送において、データが有効な時点をリクエスタに知らせ、このデータラッチを始めるためにＲＥＡＤＹ信号が使用される。このＲＥＡＤＹ信号は、バスマスタとスレーブにより発生される。
このプロトコルを満足させるためには、すべてのＩＯＢＵＳノードは、リクエストを処理する前、ＩＯＢＵＳインターフェースを設計する必要がある。このインターフェースは次のスぺックを満足させなければならない。
【００７８】
0004290775.tif 000030
【００７９】
３．２ ピン説明
以下、バスマスタ側から見たシステムＩＯＢＵＳのためのアドレス、データ及び制御信号の定義を説明する。ＩＯＢＵＳ構造定義を示している図２４を参照すること。上述のごとく、ＩＯＢＵＳは多重化されたアドレス／データバスである。
“ｘｘｘ”はリクエスタ名称（ｃｃｕ、ｂｓｐ、ｕｒｔ、ｔｍｒ、ｉｎｔ）を示す３個の文字コードである。
＊システムＩＯＢＵＳ信号定義
【００８０】
【表２８】
0004290775.tif 000031
【００８１】
３．３ ロジック定義
ＩＯＢＵＳ仲裁制御ユニットは、図２５の図示のとおりである。
３．４ ＩＯＢＵＳタイミング
ＩＯＢＵＳ読出タイミング（伝送サイズ＝１ ワード（４バイト））は、図２６の図示のとおりであり、ＩＯＢＵＳ記入タイミング（伝送サイズ＝１ ワード（４バイト））は、図２７の図示のとおりであり、ＩＯＢＵＳ読出タイミング（伝送サイズ＝４ ワード（１６バイト））は、図２８の図示のとおりであり、ＩＯＢＵＳ記入タイミング（伝送サイズ＝４ ワード（１６バイト））は、図２９の図示のとおりである。
【００８２】
第 ４ 章  ＦＢＵＳ説明
本章は、ハードウェアデザイナー側面で、ＦＢＵＳのスぺックを記述したことである。
４．１ 概要
メモリコントローラー、ＰＣＩ、カストマ注文型半導体及びキャッシュサブシステムは、非多重化されたアドレス及びデータバスラインを通し、システムバス“ＦＢＵＳ”とイオンターフェースする。１つの中央ＦＢＵＳ仲裁制御ロジックはリクエストを監視し、優先順位体系を使用して承認を発生する。バスマスタ（アドレス及びデータソース）は、常にバスリクエストを表示し、承認を待つ。正常状態において、承認はバスをペンディングするリクエストがさらに他のマスタ／スレーブにより使用されない同一なサイクルで発生する（すべての承認は結合的に発生される）。一応マスタがバス承認を受信すると、アドレス／データ／制御ラインは、次のサイクルに送られる。“データ準備”信号は、常に次のサイクルラッチを始めたことを受信器に知らせるために、実質的なデータを処理する。
バス帯域幅を最大に使用するために、４個の連続的なリクエストはパイプライン 折り返し(back to back)方式で受信／伝送され、４個のリクエストを提供するために“リクエストＦＩＦＯ”を必要とする。メモリコントローラーは、４個のディープ(deep)リクエストＦＩＦＯと、２個のディープデータＦＩＦＯを有する。このようなプロトコル特性によって、“ＡＦ＿ＦＵＬＬ”と“ＤＦ＿ＦＵＬＬ”信号を必要とする。これらはそれぞれアドレスＦＩＦＯフールとデータＦＩＦＯフールを示す。ＦＢＵＳは承認カウント及びリクエストサイズバスを使用し、８、１６及び３２バイトのデータ伝送を支援する。
【００８３】
それぞれのＦＢＵＳユニットは、バスをリクエストするための制御ロジックを有する。このロジックは応用（メモリ／ＰＣＩ／キャッシュ等）によって、ユニット毎に異なる。しかし、実際のバス仲裁ユニットは各ユニットに対し同一であり、すべてのサブモジュールで重複される。このユニットは、外部バスマスタ／スレーブと内部ユニットロジック間の媒体として作用する。例えば、メモリコントローラーの場合、一応ＣＡＳが活性化されると、メモリコントローラーは、ＦＢＵＳを使用する必要があることを表わす内部信号を通して、内部リクエストをＦＢＵＳ仲裁ロジックに表示する。このリクエストに応信し、ＦＢＵＳコントローラーは、メモリコントローラーに対して外部のシステムにリクエストを表示し、承認を待つ。一応承認が受信されると、アドレス／データ制御は、応信の第１番目のエントリーとメモリコントローラーのデータＦＩＦＯから伝送される。
【００８４】
メモリコントローラーに対するシステムリクエストサイズは、１バイトから最大３２ビットサイズまでできる。３２バイト以上のリクエストサイズの場合、ソース／リクエスタはＦＢＵＳサイズビットを使用し、多数個のリクエストを初期化する。これはＳＤＲＡＭメモリバス（１または２個の(三星 SDRAM 1M*16）の限界に因ることである。ＳＤＲＡＭは残りのシステムにより要求される完全な３２バイトを実現するために、８個のラップ(wrap)の長さに対してプログラムされる。３２バイト以下のリクエストの場合、３２バイトのすべてがＳＤＲＡＭからフェッチされるが、所望の数のバイトのみが目的地に伝送される。
また、１０個のビットリクエスタＩＤバスは、“チップ選択”信号（アドレス／データと同一なサイクル）で有効化される。
すべてのＦＢＵＳノードは、３ビットの“目的地ＩＤ”をＦＢＵＳアービタに発生する。この３ビットはリクエストと共に有効化され、リクエストの目的地を表わす。目的地ＩＤビット［１：０］は、下記のように入力されるリクエスタＩＤからデコーディングされる。
【００８５】
リクエスタＩＤ［９：６］     ソース        目的地ＩＤ［１：０］
００００                      予約          Ｎ／Ａ
０００１                      ＡＲＭ７      Ｎ／Ａ
００１０                      ＦＵ          Ｎ／Ａ
００１１                      ＬＳＵ        Ｎ／Ａ
０１００                      ＣＣＵ        ００
０１０１                      ＡＳＩＣ      １１
０１１０                      ＭＥＭ        ０１
０１１１                      ＰＣＩ        １０
１ｘｘｘ                      予約
目的地ＩＤビット［２］は、読出／記入リクエストステータスを表わすことに使用される。これはＦＢＵＳがアドレスリクエスト（読出）と、アドレス／データリクエスト（記入）間を区別することを助けてやる。
正常状態で、承認カウントビット“ｇｒＣＮＴ［１：０］”は、リクエスターがバスを必要とするＦＢＵＳサイクル数を示す。折り返しリクエストに対し、リクエストはバスマスタにリクエストの長さを知らせる。ＦＢＵＳマスタコントローラーは２個の承認カウントビットによって承認を表示する。
ＦＢＵＳはポストされた読出を支援するスプリットトランザクションバスである。これはリクエスタがバスをリクエストし、一応承認されると、このＦＢＵＳはアドレスを駆動しトランザクションを終了する。しばらく後で、スレーブ／データソースは目的地ＩＤを使用し、かつ同一なリクエスト１１２をリクエスタに戻すことによってデータを戻す。このような特性は、バス帯域幅を大幅向上させ、他のマスタがＦＢＵＳのさらに迅速な使用を許容する。より詳細なことはタイミング図を参照すること。
４．２ ピン説明
以下、システムＦＢＵＳのアドレス、データ及び制御信号を説明する。上述のごとく、ＦＢＵＳは非多重化されたアドレス／データバスである。
“ｘｘｘ”はリクエスタ名称（ｍｅｍ、ｐｃｉ、ａｓｃ、ｃｃｕ）を表わす３個の文字コードである。
【００８６】
システムＦＢＵＳ信号定義
【表２９】
0004290775.tif 000032
【表３０】
0004290775.tif 000033
【００８７】
図３０は、メモリ読出リクエストＦＢＵＳフローを示したものであり、図３１はメモリ記入リクエストＦＢＵＳフローを示しているし、図３２はマスタ／スレーブ“非メモリ”リクエストＦＢＵＳフローを示したものであり、図３３は中央のＦＢＵＳ仲裁制御ユニットを示したものである。
図３４〜図３６はＦＢＵＳタイミング図であり、図３４はメモリリクエストＦＢＵＳタイミングを示す（８バイトデータ伝送を示しており、１６／３２／６４／１２８バイトの複数個のデータサイクルが使用される）。図３５はメモリ読出リクエストＦＢＵＳタイミングを示し（伝送サイズ＝８バイト）、図３６はメモリ折り返し記入リクエスト（伝送サイズ＝３２バイト）を示したものである。
【００８８】
第 ５ 章 ＰＣＩバス
本章は、ＰＣＩコアと、内部ＦＢＵＳとインターフェースするＰＣＩグルー(glue)ロジックスぺックを説明したものである。
５．１ 概要
ＭＳＰ＿１Ｅ ＰＣＩコントローラーは、ＰＣＩバススぺック改正版２．１を満足させるために設計されたものである。より詳細なことはこの標準スぺックを参照すること。
ＰＣＩユニットは、２個のメインセクション：ＰＣＩコアとＦＢＵＳ‘グルー’ロジックを含む。ＰＣＩコアは、主に３３ＭＨｚのＰＣＩバス速度で動作する外部のＰＣＩデバイスとインターフェースする。ＦＢＵＳ‘グルー’ロジックは、８０ＭＨｚで動作する三星ＦＢＵＳとインターフェースする。この‘グルー’ロジックは、ＰＣＩコアとＦＢＵＳ間をインターフェースする。速度同期化は、サブブロックの２個のエンドでＦＩＦＯを利用して実現できる。
三星のＰＣＩコアは、また仮想的なフレームバッファロジックと、ＦＢＵＳを通してＡＲＭ７とインターフェースすることに必要なすべてのＶＦＢレジスタを含む。
このＰＣＩユニットに対し唯一な特徴は、ホストＣＰＵ ＭＳＰチップと、ＭＳＰチップからホストＣＰＵへのインタラプト処理である。これに対してより詳細に説明する。
【００８９】
５．１．１ 三星ＰＣＩコアブロック図は図３７の図示のとおりである。
５．２ ＰＣＩ ＦＢＵＳインターフェースロジック（図３８参照）
ＰＣＩコアのサブブロックは、ＭＳＰ内部ＦＢＵＳとＳＡＮＤマイクロのＰＣＩコアとインターフェースする。アドレスとデータは、２個のエンドでＦＩＦＯに貯蔵される。このサブブロックはまた、ＰＣＩ信号とＦＢＵＳクロックを同期化させる役割をする。
ＰＣＩコアロジックは、ＦＢＵＳマスタ及びスレーブデバイスであることもある。大部のアクセスは、６４ビットＦＢＵＳを通してローカルＳＤＲＡＭメモリに向かう。ＦＢＵＳプロトコルの説明のためには、ＦＢＵＳ章を参照すること。
ＰＣＩ ＦＢＵＳ制御ロジックは、また仮想フレームバッファレジスタと制御とを含む。このレジスタはＦＢＵＳを通してＡＲＭ７によりプログラムされる。ブロック図を参照すること。
５．３ ＰＣＩ ＶＦＢロジック
図３９はＶＦＢブロック図であり、図４０はＶＦＢレジスタである。
５．４ ＰＣＩコアロジック
ＭＳＰ ＰＣＩコアは、ＰＣＩ２．１スぺックを完全に満足する。追加事項はインタラプトとソフトウェアＭＳＰリセットの為に付加されたレジスタ数である。    ＡＲＭ７にあるソフトウェア、ＭＳＰ制御レジスタのＭＳＰ（ｂｉｔ＜３＞）からＰＣＩホストインタラプトリクエストをセットすることによって、ホストＣＰＵをインタラプトすることができる。これはＰＣＩバス（ＩＮＴＡ＃）にあるインタラプトピンをセットすることによって、ＰＣＩコアロジックがホストＣＰＵをインタラプトするようにする。以降、ホストＣＰＵは、ＭＳＰ制御レジスタのＰＣＩホストインタラプト認知（ｂｉｔ＜４＞）を通してインタラプトを認知する。これはインタラプトラインがイ非活性状態となるようにする。
ＭＳＰ ＰＣＩコアはまた基本的に、ＡＲＭ７に対するインタラプトであるホストＣＰＵからのインタラプトを受け取ることができる。ＰＣＩスぺックが任意のインタラプト入力ピンを支援しないので、ＭＳＰ制御レジスタにある、ホストからのＭＳＰインタラプトリクエスト（ｂｉｔ＜２＞）がこの機能を提供することに使用される。ホストＣＰＵは、ＡＲＭ７に対するインタラプトを表わすためにこのビットを設定することができる。次に、一応ホストインタラプトを認知すると、ＡＲＭ７はこのレジスタをクリアーさせる。図４１のブロック図を参照すること。図４１に対して、ＰＣＩ空間でないＭＳＰ領域にマッピングされた３個のレジスタが必要である。
実質的なＰＣＩコアに対する細部的な情報のためには、ＰＣＩ２．１スぺックを参照すること。
【００９０】
第 ６ 章 メモリコントローラー
６．１  本章は、ハードウェアとソフトウェアデザイナー側面で、メモリコントローラーの仕様を説明したものである。
６．２ 概要
ＭＳＰメモリコントローラーはいく特徴を有し、費用と性能に対するトレードオフのためのプログラム可能性レベルを有する。メモリコントローラーは８０ＭＨｚで動作するメインシステムバス“ＦＢＵＳ”とＤＲＡＭチップとインターフェースする。８０ＭＨｚクロック周波数を実現するために、初期の設計段階で同期ＤＲＡＭが使用される。
結局、メモリサブシステムは、標準高速ページＤＲＡＭ、拡張されたデータ出力（ＥＤＯ）ＤＲＡＭと同期ＤＲＡＭとを支援する。メモリバンクサイズは、インターリーブ可能な２個の外部バンクに制限される。
初期の同期ＤＲＡＭメモリコントローラーは、ＤＲＡＭを動作させることに必要な最小限の特徴を有する。次は基本的な第１パスメモリコントローラーの特徴を示している。
＊三星の同期ＤＲＡＭ支援
＊２個のＳＤＲＡＭチップを使用した１つのメモリバンク（１Ｍ×１６）
＊Ｃａｓ−Ｂｅｆｏｒｅ−Ｒａｓ（ＣＢＲ）リフレッシュ支援
＊読出ー修正ー記入（Ｒｅａｄ−Ｍｏｄｉｆｙ−Ｗｒｉｔｅ）動作を初期化する部分的な記入支援
＊内部のバンクインターリーブ支援（ＭＡ［１１］を通したピンポン）
＊８０ＭＨｚメモリとプロセッサバス（１：１）周波数マッチ
＊プログラマブルリフレッシュ率
＊システムバスを効率的に使用するためのアドレスとデータキューイング
＊マニュアル“２個バンクプリチャージ”支援
ＭＳＰメモリコントローラーは、２個のメインサブ構成要素：データコントローラーとアドレスコントローラーとを有する。データコントローラーは、ＤＲＡＭから読み出されたデータを貯蔵し、プロセッサバスからデータを記入するための読出及び記入データキューを有する。データコントローラーはまた、バイト記入のためのＲＭＷロジックを含む。データコントローラーに対するすべての制御は、アドレスコントローラーから発生する。
アドレスコントローラーは、リクエストキュー、応信ＩＤキュー、メモリアクセスデコーディングロジック、ページ比較器ロジック、ＲＡＳ／ＣＡＳ状態マシン、リフレッシュ状態マシンと、データコントローラーにより使用される必要なすべての制御信号を有する。
ＳＤＲＡＭメモリクロックは、システムクロックと同一である。ＳＤＲＡＭは前記１セットの各制御信号を受信する。
【００９１】
６．２．１ メモリコントローラーブロック図は図４２の図示のとおりである。
６．２．２ メモリコントローラーフローは、図４３の図示のとおりである。
６．３ アドレスコントローラー（ＡＣ）
メモリコントローラーでアドレスコントローラーセクションは、データコントローラーを管理することだけでなく、すべてのＤＲＡＭ制御を発生させる役割をする。ＭＳＰメモリコントローラーのこのセクションは、またＦＢＵＳインターフェースのアドレスと制御経路を担当する。次のブロック図は、アドレスコントローラーユニットの多数個のサブ−セクションを示す。
６．３．１ アドレスコントローラーブロック図は図４４の図示のとおりである。
６．３．２ メモリコントローラーリクエストＦＩＦＯ
ＭＳＰメモリコントローラーは、実質的なメモリコントローラー状態マシンへのディスパッチ(dispatch)のための、ＦＢＵＳアドレスと制御情報とを貯蔵する４個のディープリクエストＦＩＦＯを有する。リクエストＦＩＦＯのそれぞれのエントリーは、特定エントリーが有効であることを表わす“有効”ビットを有する。メモリコントローラー状態マシンは、常にＥＮＴＲＹ＿０のＦＩＦＯにある最下位エントリーを支援する。一応リクエストが提供され、列アドレスストローブ（ＣＡＳ）が活性化されると、メモリコントローラーはこのエントリーをクリアーさせるために、クリアー信号を表示する。ＦＩＦＯ ＦＵＬＬ／ＥＭＰＴＹステータスによって、バレルシフトが有効な内容をエントリー０にシフトさせるために初期化される。
ＭＳＰメモリコントローラーリクエストＦＩＦＯフォーマットは、図４５の図示のとおりである。
【００９２】
６．３．３ メモリコントローラーアドレスデコード／マップ
アドレスデコーディングロジックは、主に１１ビットのＳＤＲＡＭ行アドレスＭＡ［１０：０］と８ビットの列アドレスＭＡ［７：０］とを発生させる役割をする。このアドレスラインは、ＳＤＲＡＭアドレス入力［１１：０］へ直接駆動される。メモリアドレスビット［１１］は、性能のために内部ＳＤＲＡＭバンクと、改善されたメモリバス使用の間をトグルすることに使用される。
このメモリアドレスは、次のことを表わすレジスタを通して与えられるプログラマブルマルチプレクサーを使用して発生される。
−現在システムキャッシュラインサイズ
−内部バンクの数
−内部バンクインターリービング
システムキャッシュラインオフセットは、３２バイトキャッシュラインに対して５ビットである。図４６は、１６ＭＢ ＤＲＡＭのためのＦＢＵＳシステムアドレスから発生される提案されたメモリアドレスフォーマットを示している。この多重化されたメモリアドレスは、メモリコントローラー状態マシンによって指示されるＲＡＳとＣＡＳストローブとを有する、１つのサイクルに対して有効である。
ＭＣＵは読出−修正−記入動作を指示せず、８バイト記入を遂行することができる。しかし、ＦＢＵＳアドレスのｂｉｔ［２］は常にアドレスのみをスタートするために、ゼロである。このビットは下記のようにスターティングアドレスを表わす３個ビットの中の１つである、ＳＤＲＡＭアドレスのｂｉｔ［０］にマッピングされる。
Ｆａｄｄｒ［４：２］         記入シーケンス（ＷＲＡＰ＝８）
０００                     ０−１−２−３−４−５−６−７
０１０                     ２−３−４−５−６−７−０−１
１００                     ４−５−６−７−０−１−２−３
１１０                     ６−７−０−１−２−３−４−５
これらは全部偶数のスターティングアドレスであり、ＭＣＵによって支援されるシーケンスである。
すべての読出動作は３２バイトを仮定し、スタートアドレスは
（０００）＝ｒｎａ［２：０］＝Ｆａｄｄｒ［４：２］である。
【００９３】
６．３．４ メモリコントローラー状態マシン
ＭＳＰメモリコントローラーは、１つのマスタコントローラー状態マシンを有する。この状態マシンは、ＳＤＲＡＭ制御信号のためのすべてのタイミング（ＲＡＳ／ＣＡＳ／ＷＥ／ＣＳ／ＤＱＭ）を発生させる役割を担う。状態マシンは、常にエントリー０にある有効エントリーのために、リクエストＦＩＦＯをモニタする。一応、有効ビットが検出されると、状態マシンはＳＤＲＡＭシーケンス開始をキックオフする。また、ＲＡＳプリチャージが必要であるか否かを判断するために、ページ比較器からＰａｇｅ＿ｈｉｔ信号をモニタする。
ＲＡＳプロチャージは、現在のアクチブ／開放バンク上で遂行される。マニュアルプリチャージシーケンスは、ゼロの状態を活性化させるために、ＣＳ、ＲＡＳ、ＷＥとＭＡ［１１］を表示することを含む。内部バンク選択ビットＭＡ［１１］は、プリチャージするためのバンクを選択することに使用される。読出の場合：プリチャージコマンドは、データ衝突を避けるために、データがＳＤＲＡＭから受信されてから表示される。記入の場合、プリチャージは最後のビットのデータがメモリに記入されてから発行される。一応プリチャージコマンドが完了されると、特定バンクは次のメモリ動作のためにアイドル(idle)状態となる。ＳＤＲＡＭスぺックによると、プリチャージコマンドは、ｔＲＡＳ(min)（ここでは６０ｎｓ）が満足されてから何時でも発生できる。しかし、現在４のラップ(wrap)の長さによって、メモリコントローラー状態マシンは、データがメモリに読出／記入されてからプリチャージコマンドを発生させる。
次は、ＭＳＰメモリコントローラーと共に使用されるＳＤＲＡＭパラメータを示す。
【００９４】
【表３１】
ＳＤＲＡＭパラメータ
0004290775.tif 000034
【００９５】
＊ｔＲＡＳは、同期ＤＲＡＭの６０ｎｓ列アクセスタイムを実現させるために、５サイクルで使用され得る。メモリコントローラータイミング図を参照すること。
６．３．４．１ 状態マシンダイアグラム
図４７はＳＤＲＡＭメモリコントローラーＲＡＳ／ＣＡＳ状態マシンダイアグラムを示す。
６．４ メモリコントローラーリフレッシュ
同期ＤＲＡＭは、それぞれの貯蔵セルにあるデータを維持するために毎３２ｍｓ（１５．６ｕｓ）毎にリフレッシュされる必要がある。同期ＤＲＡＭはまた、２個モードのリフレッシュ：自動リフレッシュとセルフリフレッシュとを支援する。
【００９６】
６．４．１ ＳＤＲＡＭ自動リフレッシュ
標準の自動リフレッシュを使用し、２個の内部バンクが内部カウンタにより交番的にリフレッシュされる。行(row)の数が４０９６であるので、自動リフレッシュはＤＲＡＭ全体をリフレッシュするために、２０４８自動リフレッシュサイクルを必要とする。
自動リフレッシュコマンドは、ＣＫＥとＷＥがハイで、ＣＳ、ＲＡＳ＆ＣＡＳがローであることを表示することにより発生される。このコマンドは、２個のバンクがアイドル状態にある場合のみに表示される。
自動リフレッシュを終了することに必要な時間は、
ｔＲＣ(min)／サイクル時間＝100ｎｓ(spec)/12.5ns＝８サイクル(80MHz)
６．４．２ ＳＤＲＡＭセルフリフレッシュ
セルフリフレッシュは、三星のＳＤＲＡＭに使用されるさらに別のモードである。これは一般的にデータ維持及び低電力動作のために好ましいリフレッシュモードである。ここでＳＤＲＡＭは、内部クロックとＣＫＥを除いたすべての入力バッファをディスエーブルさせる。
ＣＳ、ＲＡＳ、ＣＡＳとＣＫＥがローでＷＥがハイの場合、セルフリフレッシュモードに入る。セルフリフレッシュモードは、ＳＤＲＡＭクロックのシュッティングとＣＫＥ信号を用いた再試みを要求するので、ＭＳＰメモリコントローラーは、このリフレッシュモードを使用しない。
６．４．３ マニュアルリフレッシュ
このリフレッシュモードは、状態マシン／カウンタ設計を要求する。カウンタは１５．６ｕｓ毎にタイムアウトされ、メモリコントローラーロジックでリフレッシュストローブを表示する。次に、メモリコントローラーは、現在のリフレッシュを終了し、すぐＳＤＲＡＭリフレッシュサイクルを初期化させる。このサイクルは、アイドル状態における制限を持たず、全く自動リフレッシュサイクルと類似している。
【００９７】
６．５ データコントローラー（ＤＣ）
メモリコントローラーでデータコントローラーセクションは、主にプロセッサからデータを記入するか、またはＳＤＲＡＭからデータを読み出すためのデータキューとして提供される。このコントローラーはまた、すべての部分的な記入時（バイト記入）のための記入併合ロジックを有する。部分的な記入はまず、ＤＲＡＭ読出をキックオフした後データを併合し、最後に完全に修正されたワードをメモリに更に記入する。従って、部分的な記入シーケンス次の任意のリクエストは性能ヒットを取らなければならない。
６．５．１ データコントローラーブロック図は図４８の図示のとおりである。
【００９８】
６．６ ピン説明
このコントローラーは、次のパッケージピンを提供する。
＊ＲＡＳ＿Ｉ：出力ピン（アクチブロー）。これはＭＡ［１１：０］からの行アドレスを、選択されたＤＲＡＭバンクの内部行アドレスバッファにラッチするための行アドレスストローブである。
＊ＣＡＳ＿Ｉ：出力ピン（アクチブロー）。これはＭＡ［１１：０］からの列アドレスを、選択されたＤＲＡＭバンクの内部列アドレスバッファにラッチするための、列アドレスストローブである。
＊ＷＥ＿Ｉ：出力ピン（記入時アクチブロー）。ＤＲＡＭの記入イネーブル入力ピンを駆動するためのものである。
＊ＭＡ［１１：０］：出力ピン。ＤＲＡＭに対する多重化された行及び列アドレス信号。
＊ＤＱＭ：出力ピン。クロック及び出力をマスクした後、ＳＤＲＡＭデータ出力をハイインピーダンスにする。（このピンは同期ＤＲＡＭインターフェースに対してのみ使用する。）
＊ＣＳ＿Ｉ：出力ピン（アクチブロー）。選択されたＳＤＲＡＭ動作のためにディスエーブルまたはイネーブルされる。（このピンは同期ＤＲＡＭインターフェースに対してのみ使用する。）
＊ＣＬＫ：出力ピン。これは同期ＤＲＡＭに対するクロック出力ピンであって、ＳＤＲＡＭのみで使用され、ＭＳＰのシステムクロックと同じ位相を有する。
【００９９】
６．７ メモリコントローラータイミング図は、図４９から図５１の図示のとおりである。図４９に関連した事項は下記のとおりである。
−三星のＳＤＲＡＭに仮定
−８０ＭＨｚで動作するメモリとシステム。
−１個または２個の外部ＳＤＲＡＭ（１Ｍ×１６）。
−メモリからラインをフェッチするための４／８プログラマブルラップの長さ。
−ｔＲＣＤ＝３。
−ｔＣＡＳ＝３。
−内部遅延＝２クロック。
−メモリ待ち時間＝８サイクル（８×１２．５＝１００ｎｓ）．
−メモリからのシステムデータは、仲裁（読出データ）のために２個サイクルほど遅延する。
【０１００】
６．８ プログラマブルモデル
プログラマー側面で、メモリコントローラーに関連した制御レジスタは、下記のとおりである。
６．８．１ ＳＤＲＡＭリセットレジスタ（Ｒ／Ｗ）
このレジスタは、それぞれのシステムリセット後でリセットされる。これはＳＤＲＡＭパワーオンシーケンスを始めるｒｅｓｅｔ＿ｓｄｒａｍ信号を伝達する１ビットレジスタである。システムリセット時にこのレジスタは１に設定される。ＳＤＲＡＭを動作させるために、ソフトウェアによりこのレジスタをクリアーさせなければならない。
ｂｉｔ０はシステムリセットで設定され、ＳＤＲＡＭを動作させるためにクリアーされる。
プログラミングアドレス：
Ｆａｄｄｒ［３１：２０］＝１２’ｈ０１０
Ｆａｄｄｒ［３：０］＝４’ｂ１０１１
６．８．２ ＳＤＲＡＭバーストタイプレジスタ（Ｒ／Ｗ）
このレジスタは、ＳＤＲＡＭバーストタイプをプログラムする。これは順次的なバーストタイプに対しゼロにプログラムされる１ビットレジスタである。
プログラミングアドレス：
Ｆａｄｄｒ［３１：２０］＝１２’ｈ０１０
Ｆａｄｄｒ［３：０］＝４’ｂ１０１０
ｂｉｔ０はシステムリセットとともにリセットされ、ＳＤＲＡＭを動作させるためにクリアーされる。
６．８．３ ＳＤＲＡＭリフレッシュレジスタ（Ｒ／Ｗ）
このレジスタは、ＳＤＲＡＭリフレッシュ値をプログラムする。これはＦＢＵＳを通してプログラムされる１２ビットレジスタである。
プログラミングアドレス：
Ｆａｄｄｒ［３１：２０］＝１２’ｈ０１０
Ｆａｄｄｒ［３：０］＝４’ｂ１００１
ｂｉｔ１１−０はシステムリセットとともにリセットされ、４Ｅ０のリフレッシュ値にプログラムされる。
６．８．４ ＳＤＲＡＭ ＲＡＳプリチャージ（ｔＲＰ）レジスタ（Ｒ／Ｗ）このレジスタはＳＤＲＡＭ ＲＡＳプリチャージ値をプログラムする。これはＦＢＵＳを通してプログラムされる３ビットレジスタである。
プログラミングアドレス：
Ｆａｄｄｒ［３１：２０］＝１２’ｈ０１０
Ｆａｄｄｒ［３：０］＝４’ｂ１０００
ｂｉｔ２−０はシステムリセットとともにリセットされ、１または２または３にプログラムされる。
６．８．５ ＳＤＲＡＭ ＣＡＳ待ち時間（ｔＣＡＣ）レジスタ（Ｒ／Ｗ）
このレジスタはＳＤＲＡＭ ＣＡＳ待ち時間をプログラムする。これはＦＢＵＳを通してプログラムされる３ビットレジスタである。
プログラミングアドレス：
Ｆａｄｄｒ［３１：２０］＝１２’ｈ０１０
Ｆａｄｄｒ［３：０］＝４’ｂ００１１
ｂｉｔ２−０は、システムリセットとともにリセットされ、１または２または３にプログラムされる。
６．８．６ ＳＤＲＡＭ ＲＡＳ ＣＡＳ待ち時間（ｔＲＣＤ）レジスタ（Ｒ／Ｗ）
このレジスタはＳＤＲＡＭ ＲＣＤ待ち時間をプログラムする。これはＦＢＵＳを通してプログラムされる３ビットレジスタである。
プログラミングアドレス：
Ｆａｄｄｒ［３１：２０］＝１２’ｈ０１０
Ｆａｄｄｒ［３：０］＝４’ｂ００１０
ｂｉｔ２−０は、システムリセットとともにリセットされ、１または２または３にプログラムされる。
６．８．７ ＳＤＲＡＭ ＷＲＡＰ ＬＥＮＧＴＨレジスタ（Ｒ／Ｗ）
このレジスタはデータに対するＳＤＲＡＭのラップ長さをプログラムする。これはＦＢＵＳを通してプログラムされる３ビットレジスタである。
プログラミングアドレス：
Ｆａｄｄｒ［３１：２０］＝１２’ｈ０１０
Ｆａｄｄｒ［３：０］＝４’ｂ０００１
ｂｉｔ２−０は、システムリセットとともにリセットされ、１、２、４、または８の中にいずれかにプログラムされる。
６．８．８ ＳＤＲＡＭ ＮＯＰ ＴＩＭＥレジスタ（Ｒ／Ｗ）
このレジスタはパワーオンシーケンスのためのＳＤＲＡＭのＮＯＰ時間をプログラムする。これはＦＢＵＳを通してプログラムされる１６ビットレジスタである。
プログラミングアドレス：
Ｆａｄｄｒ［３１：２０］＝１２’ｈ０１０
Ｆａｄｄｒ［３：０］＝４’ｂ００００
ｂｉｔ１５−０はシステムリセットとともにリセットされ、クロック周波数によって２００ｕｓにプログラムされる。
【０１０１】
第 ７ 章 ＡＳＩＣインターフェース
本章ではＡＳＩＣインターフェースユニットの仕様を説明した。
７．１ 概要
ＡＳＩＣインターフェースユニット（図５２参照）は、１つのプログラマブル３２ビットＤＭＡ、多数個のＦＩＦＯと制御ブロックを有する。ＡＳＩＣインターフェースブロックは、８０ＭＨｚで動作するメインシステムバス（ＦＢＵＳ）と、ＭＳＰ、ＡＤ１８４３（オーディオ、電話）、ＫＳ０１２２（ビデオキャプチャ）、ＫＳ０１１９とＶＧＡをインターフェースするＣＯＤＥＣインターフェースブロックをインターフェースする。現在の仮定は、任意の同期化問題を避けるために、すべてのＣＯＤＥＣインターフェースとＤＭＡコントローラーを完全なＦＢＵＳ速度で動作させることである。
カストマＡＳＩＣブロックは、３個の主要セクション：ＦＢＵＳマスタ／スレーブインターフェース、ＭＳＰ８−チャンネルＤＭＡコントローラーと実際のＣＯＤＥＣとを有する。データはＦＢＵＳからＣＯＤＥＣに伝達されるか、またはＣＯＤＥＣからＦＢＵＳに伝達される。しかし、アドレスはただＤＭＡコントローラーのみから発生される。そうすると、このアドレスはＦＢＵＳインターフェースロジックでマッピングされたＦＢＵＳである可能性もある。他のＦＢＵＳノードからのすべての記入は、ただＣＯＤＥＣセクションにあるレジスタのみをプログラムする。他のすべてのトラヒックでは、サイズ及びＩＤ情報を有する応信を読み出さなければならない。ＦＢＵＳ仕様を参照すること。
次は、ＡＳＩＣインターフェースユニットに対する特徴である。
＊３２ビット基本ＤＭＡ機能を支援（各コーデックに対し、８個のチャンネル−−１個のチャンネル）。
＊２個の４ディープ×６４ビットデータＦＩＦＯ。
＊１個の１ディープ×５２ビットリクエストＦＩＦＯ。
＊１個の２ディープ×５２ビット応信ＦＩＦＯ。
＊ＦＢＵＳとＣＯＤＥＣインターフェースブロックのためのマスタ／スレーブを支援。
＊動作周波数：８０ＭＨｚまで。
＊メモリに対するＩＯ、ＩＯに対するメモリ間のアクセス支援。
＊ＫＳ０１１９用に使用されるチャンネル０のための最上位優先順位支援。
＊ＫＳ０１１９に対して高性能を実現するために特殊アドレスバス支援。
このカストマインターフェースロジックは、３個の相互に異なるＣＯＤＥＣを支援する。
＊オーディオ及び電話ＣＯＤＥＣ（ＡＤ１８４３）。このＣＯＤＥＣはＤＭＡコントローラーと通信する両方向６４ビットデータバスを有する。（チャンネル４→ＤＡＣ１、チャンネル５→ＤＡＣ２、チャンネル６→ＡＤＣ左側、チャンネル７→ＡＤＣ右側）
＊ビデオキャプチャＣＯＤＥＣ（ＫＳ０１２２）。このＣＯＤＥＣは両方向６４ビットデータバスを有し、ＤＭＡ（チャンネル２）に対してＭ→ＩＯ、ＩＯ→Ｍリクエストを初期化することができる。
＊ビデオ バックエンド(backend)ＣＯＤＥＣ（ＫＳ０１１９）。このＣＯＤＥＣはメモリコントローラーからデータを直接に受信する（チャンネル０）。
【０１０２】
ＡＳＩＣインターフェースブロック
７．２ 直接メモリアクセス（ＤＭＡ）コントローラー
ＤＭＡコントローラーは、アドレス発生及び解釈のために使用されるレジスタを有する。このＤＭＡコントローラーは、８個の独立的なチャンネルを有する。各チャンネルは、現在のアドレスレジスタと停止アドレスレジスタとを有する。開始及び停止アドレスレジスタは、構成ブロックを通して先にプログラムされる。現在のアドレスレジスタは、８個のＣＯＤＥＣの中のいずれか１つからＤＭＡリクエストが発生する時ごとにロードされる。一応、ＦＢＵＳがアクセスを承認すると、このＤＭＡアドレスは、現在アドレスが停止アドレスレジスタとマッチされるまで、サイクルごとに増加する。その時点で、ＤＭＡコントローラーが信号“ＥＯＰ(End Of Process)”を発生する。この信号はプロセスでインタラプトを誘発する。８個のすべてのＤＭＡチャンネルは、マルチプレクサーとアドレス比較ブロックを制御する共通の仲裁ユニットを有する。
このＤＭＡコントローラーは、ＩＯメモリ、メモリとＩＯ、メモリとメモリ間のアクセスを支援する。ＣＯＤＥＣがＤＭＡと通信しようとする時ごとに、ＣＯＤＥＣはＤＭＡ＿ＲＥＱ信号を表示し、ＤＭＡからＤＭＡ認知信号の“ＤＡＣＫ”を待つ。一応、認知されるとＣＯＤＥＣはＭ−ＩＯ信号とデータとを駆動する。ＤＭＡコントローラーは承認されたＤＡＣＫによって、適切なチャンネルを選択する。ブロック図を参照すること。
【０１０３】
７．３ ＤＭＡレジスタ説明
７．３．１ 現在アドレスレジスタ
各チャンネルは、すべてのアドレスが８バイトに配列されることを要求する、２９ビット現在アドレスレジスタ（ｂｉｔｓ＜３１：３＞）を有する。事実上、このレジスタは２９ビットカウンタである。このレジスタはＡＲＭ７によって読み出され、初期値はＦＢＵＳを通してＡＲＭ７からロードされる。このアドレスはデータ伝送サイズに基づいて増加される。現在アドレスレジスタにあるアドレスは、マルチプレクサーを通してＦＢＵＳ上のアドレスをロードするために、アドレス発生ブロックに伝送される。現在アドレスレジスタは、アイドル状態ではアドレス値をホールドさせる。
７．３．２ 停止アドレスレジスタ
各チャンネルは、すべてのアドレスは８バイトに配列されることを要求する、２９ビット停止アドレスレジスタ（ｂｉｔｓ＜３１：３＞）を有する。このレジスタには、ＦＢＵＳを通してＡＲＭ７により記入される。この値は、比較ブロックで現在アドレスと比較されることに使用される。もし現在アドレスが停止アドレスと一致すると、ＤＭＡコントローラーは、各チャンネルに対して“ＥＯＰ”信号を発生させる。
７．３．３ ステータスレジスタ
このレジスタは、各チャンネルが停止アドレスに到達しか否かを表わす情報を貯蔵する。Ｂｉｔｓ＜７：０＞は、どのチャンネルが停止アドレスに到達したかを規定し、ＡＲＭ７がＣＣＵを通して現在アドレスレジスタを初期化した時にリセットされる。
このレジスタはＡＲＭ７により読み出され、ＡＲＭ７はこのレジスタを記入することができない。
７．３．４ 制御レジスタ
このレジスタは、ＤＭＡコントローラーの動作に対する情報を貯蔵する。Ｂｉｔｓ＜７：０＞は、どのＤＭＡチャンネルが動作のためにイネーブルされたかを規定する。このビットは当該チャンネルが停止アドレスに到達する時ごとにリセットされ、ＡＲＭ７は動作を再開始するためにこのビットを設定する。任意のチャンネルイネーブルビットが“０”の場合、ＤＭＡは例えＣＯＤＥＣがＤＭＡにＤＭＡ＿ＲＥＱを送るとしても、当該ＣＯＤＥＣにＤＭＡ＿ＡＣＫを送らない。Ｂｉｔｓ＜１９：１６＞は、ＤＭＡチャンネルの中のいずれか１対が、ダブル−バッファとして動作するために共に連結されているかを規定する。例えば、チャンネル０とチャンネル１がダブル−バッファとして連結されている場合、チャンネル０の現在アドレスが停止アドレスに到達した場合、ＤＭＡコントローラーは自動的にチャンネル１を切り換え、チャンネル１の現在アドレスが停止アドレスに到達した場合、ＤＭＡコントローラーは自動的にチャンネル０を切り換える。Ｂｉｔ＜２８：２１＞は、各チャンネルの読出／記入モードに関連した情報を貯蔵する。もしこのビットの中の任意のビットがＡＲＭ７によって“１”に設定されると、該当チャンネルは読出動作のために使用され、残りのチャンネルは記入動作のために使用される。Ｂｉｔ＜３１＞は、ＤＭＡがＥＯＰ信号をインタラプトコントローラーに送ったか否かを規定する。もしこのビットが“０”であれば、ＤＭＡは任意のチャンネルが停止アドレスに到達しても、ＥＯＰを送らない。
【０１０４】
７．３．５ マスクレジスタ
制御レジスタにある各ビットは、マスクレジスタにあるマスクビットと連結されている。マスクビットが“０”であれば、制御レジスタにある該当ビットがアップデートされることを防止する。初期には、このレジスタ＜３１：０＞は、ＦＦＦＦＦＦＦＦ(hex)に設定される。
７．３．６ プログラミング
開始及び停止アドレスは、ＦＢＵＳを通してＡＲＭ７によりプログラムされる。
ＦＢＵＳマッピング値は下記のとおりである。
ＣＣＵ→００４０＿００００−００７Ｆ＿ＦＦＦＦ、
ＭＣＵ→００８０＿００００−０４７Ｆ＿ＦＦＦＦ、
ＰＣＩ→０８００＿００００−ＦＦＦＦ＿ＦＦＦＦ。
アドレスプログラミングにおいて、Ａｄｄｒｅｓｓ［２６：０］は表に基づいて設定される。
【０１０５】
ＤＭＡレジスタアドレスマップ
【表３２】
0004290775.tif 000035
【０１０６】
【表３３】
ステータスレジスタのエンコーディグ
0004290775.tif 000036
【０１０７】
制御レジスタのエンコーディング
【表３４】
0004290775.tif 000037
【０１０８】
７．４ ＣＯＤＥＣ初期化
カストマＡＳＩＣユニットは、各ＣＯＤＥＣの初期化を支援する。実質的には、ＡＲＭ７がカストマＡＳＩＣユニットを通してＣＯＤＥＣ初期化を担当する。    カストマＡＳＩＣユニットは、各ＣＯＤＥＣに対するリクエスト信号を発生させるためのアドレスデコーダーを有している。カストマＡＳＩＣユニットは、任意のＣＯＤＥＣと通信しようとする時ごとに、ＣＯＤＥＣにリクエスト信号を送り、ＣＯＤＥＣからの認知信号を待つ。認知信号を受信してから、カストマＡＳＩＣユニットは、データとアドレスとをＣＯＤＥＣに送る。
ＡＲＭ７がＣＣＵを通して、任意のＣＯＤＥＣにある構成データを読もうとする場合、カストマＡＳＩＣユニットは、アドレスをＣＯＤＥＣに送る。カストマＡＳＩＣユニットは、ＣＯＤＥＣからのデータを受信すると、トランザクション ＩＸをＣＣＵに返還する。この時点で、構成データがＣＣＵを通してＡＲＭ７に伝送される。
【０１０９】
【表３５】
ＣＯＤＥＣ構成レジスタＦＢＵＳアドレスマップ
0004290775.tif 000038
【０１１０】
図５３は、カストマＡＳＩＣ回路網を示したものである。
４．Ｉ／Ｏピン定義
【０１１１】
カストマＡＳＩＣユニットに対するＩ／Ｏピン定義
【表３６】
0004290775.tif 000039
【０１１２】
第 ８ 章 ＡＤ１８４３ ＣＯＤＥＣインターフェース
８．１
本章はＡＤ１８４３ ＣＯＤＥＣインターフェースに関する説明である。
８．２ 概要
ＡＤ１８４３ ＣＯＤＥＣインターフェースブロックは、ＡＤ１８４３シリアルバーストＭＳＰ ＤＭＡモジュール間のインターフェースのためのものである。ＡＤ１８４３はシリアルポートを通してデータ及び制御／ステータス情報を送信及び受信する。ＡＤ１８４３は、シリアルインターフェースを担当する４個のピン：ＳＤＩ、ＳＤＯ、ＳＣＬＫ、ＳＤＦＳを有する。ＳＤＩピンは、ＡＤ１８４３に対するシリアルデータ入力のためのものであり、ＳＤＯピンはＡＤ１８４３からのシリアルデータ出力のためのものである。ＳＣＬＫピンはシリアルインターフェースクロックのためのものである。
ＡＤ１８４３内部と外部の通信において、データビットはＳＣＬＫの上昇エッジ以降に伝送され、ＳＣＬＫの下降エッジでサンプリングされることを要求する。ＳＤＦＳピンはシリアルインターフェースフレーム同期のためのものである。ＡＤ１８４３ ＣＯＤＥＣインターフェースは、マスタモードに基づいたものであって、これはＳＣＬＫとＳＤＦＳ信号がＡＤ１８４３によって発生されることを意味する。省略時(default)ＳＣＬＫ周波数は、１２．２８８ＭＨｚであり、１つのフレームサイクルは４８ＫＨｚである。
ＣＯＤＥＣインターフェースの基本構造は、ＤＭＡに基づいたものである。ＡＤ１８４３インターフェースは、４個の相互に異なるＤＭＡチャンネル：ＤＡＣ１も対するチャンネル４、ＤＡＣ２に対するチャンネル５、ＡＤＣ左側に対するチャンネル６、ＡＤＣ右側に対するチャンネル７を指定する。ＤＭＡからまたはＤＭＡへのチャンネル伝送サイズは、 １回当たり６４ビットである。従って、ＤＭＡチャンネル４とチャンネル５は、２個の相互に異なる３２ビットデータ（左側のための１６ビットと右側のための１６ビット）を伝送する。一方、ＤＭＡチャンネル６とチャンネル７は、１回に４個の相互に異なる１６ビットデータをＣＯＤＥＣインターフェースからＳＤＲＡＭに送る。
ＤＡＣ１とＤＡＣ２インターフェースは、各チャンネルのフラグビットが設定された時、データが有効であることを認識する。ＤＡＣ１とＤＡＣ２インターフェースは、フラグビットをチェッキングしてからＤＭＡを要請する。フラグビットがリセットされると、ＤＡＣ１とＤＡＣ２インターフェースは、ＤＭＡリクエストを発生させない。フラグビットの実際の動作は、ＤＭＡクロックによって制御される。ＤＭＡブロックはフラグビットがリセットされると、ＤＭＡ認知信号を発生させない。ＡＤＣ左側及び右側のＦＩＦＯが満ちていなければ、ＤＭＡリクエストは発生されない。ソフトウェアはＡＤＣフラグレジスタをチェックし、データバスを通して残っているデータを読み出さなければならない。データバスを通してこれらのデータを読出してから、ＦＩＦＯは空くようになり、ＦＩＦＯが満ちるとＤＭＡリクエストを発生させる。
ＡＤ１８４３制御レジスタは、制御ワード入力の制御レジスタアドレスと共に読出／記入リクエストを伝送することによって、読出及び記入される。読出が要請されると、アドレシングされた制御レジスタの内容は、次のフレームの間に伝送され、記入が要請されると、記入されるデータはＡＤ１８４３スロット１に伝送されなければならない。ＭＳＰの性能を向上させるために、プログラマーはＣＯＤＥＣの制御レジスタを読出または記入する前に、制御フラグレジスタをチェックしなければならない。制御フラグレジスタのフラグビットが設定されると、ＣＯＤＥＣレジスタの読出及び記入動作が可能である。
【０１１３】
８．３ ＤＭＡチャンネル指定
ＤＭＡチャンネル４ＤＡＣ１左側、右側
ＤＭＡチャンネル５ＤＡＣ２左側、右側
ＤＭＡチャンネル６ＡＤＣ左側
ＤＭＡチャンネル７ＡＤＣ右側
８．４ ＤＭＡに対するデータフォーマット
データサイズは６４ビットであり、下記のように構成される。
【０１１４】
0004290775.tif 000040
【０１１５】
８．５ 基本アドレス
０４Ｃ０＿４０００ ＤＡＣ１ ＢＡＳＥ
０４Ｃ０＿５０００ ＤＡＣ２ ＢＡＳＥ
０４Ｃ０＿６０００ ＡＤＣＬ ＢＡＳＥ（左側チャンネル）
０４Ｃ０＿７０００ ＡＤＣＲ ＢＡＳＥ（右側チャンネル）
８．６ レジスタマップ
【０１１６】
【表３７】
0004290775.tif 000041
【０１１７】
８．７ レジスタ定義
８．７．１ 制御レジスタ記入データ入力
0004290775.tif 000042
最上位ビット（ＭＳＢ）は、伝送された最初のデータ入力ビットである。
８．７．２ 制御ワード入力
0004290775.tif 000043
ｒ／ｗ      読出／記入リクエスト。制御レジスタからの読出または制御レジスタへの記入がフレームごとに発生される。“１”に設定したことは、制御レジスタ読出を示す反面、このビットを“０”にリセットさせることは、制御レジスタ記入を示す。
ｉａ４：０  読出または記入のための制御アドレスレジスタ
８．７．３ 制御レジスタデータ出力
0004290775.tif 000044
以前フレームでアドッレシングされた制御レジスタの内容
８．７．４ ＡＤＣフラグレジスタ
0004290775.tif 000045
ｒ４ｖ−ｒ１ｖ   有効ＡＤＣ右側データがバッファにある。バッファにあるどのデータが有効であるかを指示する。
１４ｖ−１１ｖ   有効ＡＤＣ左側データがバッファにある。バッファにあるどのデータが有効であるかを指示する。
８．７．５ ＡＤＣ左側の第１番目のデータ
0004290775.tif 000046
バッファにあるＡＤＣ左側の第１番目のデータ
８．７．６ ＡＤＣ左側の第２番目のデータ
0004290775.tif 000047
バッファにあるＡＤＣ左側の第２番目のデータ
８．７．７ ＡＤＣ左側の第３番目のデータ
0004290775.tif 000048
バッファにあるＡＤＣ左側の第３番目のデータ
８．７．８ ＡＤＣ左側の第４番目のデータ
0004290775.tif 000049
バッファにあるＡＤＣ左側の第４番目のデータ
８．７．９ 制御フラグレジスタ
0004290775.tif 000050
ｗｆ１   制御レジスタ記入フラグ。設定されるとＣＯＤＥＣは制御レジスタデータを受信する準備をする。
ｒｆ１   制御レジスタ読出フラグ。設定されるとＣＯＤＥＣは制御レジスタデータを伝送する準備をする。
【０１１８】
第 ９ 章 ビデオコーデック
９．１ 概要
ビデオコーデックロジックは、評価(evaluation)ボード上のＫＳ０１１９とＫＳ０１２２チップに対しインターフェースし、ＭＳＰチップにあるＤＭＡモジュールに対してインターフェースする。ＫＳ０１１９ＣＯＤＥＣはまたスクリーンリフレッシュ動作を提供する。この動作のために、ＭＣＵモジュールに対する直接的なデータ経路は、図５４のように具現される。
９．２ 上位モジュール定義
上位のモジュールは、図５５でのような３個のサブモジュールを有する。
−ＫＳ０１１９スクリーンリフレッシュモジュール
−ＫＳ０１２２ビデオデータキャプチャモジュール
−ＫＳ０１１９及びＫＳ０１２２チップ構成レジスタをアクセスする、３−ワイヤーシリアルホストインターフェースとモジュール。
９．３ ＤＭＡチャンネル指定
ＤＭＡ ＣＨ０               ＫＳ０１１９ＣＯＤＥＣ
ＤＭＡ ＣＨ１               予約
ＤＭＡ ＣＨ２               ＫＳ０１２２ＣＯＤＥＣ
ＤＭＡ ＣＨ３               予約
ＤＭＡ ＣＨ４               ＡＤ１８４３オーディオＣＯＤＥＣ
ＤＭＡ ＣＨ５               ＡＤ１８４３オーディオＣＯＤＥＣ
ＤＭＡ ＣＨ６               ＡＤ１８４３オーディオＣＯＤＥＣ
ＤＭＡ ＣＨ７               ＡＤ１８４３オーディオＣＯＤＥＣ
ＤＭＡ ＣＨ８               予約
ＤＭＡ ＣＨ９               予約
９．４． ３−ワイヤーホストインターフェースモジュール
このモジュールは、チップ内部のすべてのレジスタが、シリアルインターフェースを通してアクセスされるＫＳ０１１９とＫＳ０１２２チップに対してインターフェースする。３ワイヤーシリアルインターフェースモジュールは、これらのチップに通信プロトコルの機能を支援し、ＫＳ０１１９とＫＳ０１２２インターフェースロジックのためのレジスタを含む。図３を参照すること。
９．５ ＥＰＲＯＭインターフェース
ＫＳ０１１９ ＩＯピンは、システムがリセットされた後、直ちにプログラムデータをロードすることに使用され、ＭＳＰ−１ＥＸブート初期化の一部の、外部ＥＰＲＯＭに対するインターフェースとして使用される。より詳細なことはピン指定を参照すること。
ＥＰＲＯＭはＣ０ ０００ＨからＤＦ ＦＦＦＨまでのアドレスでマッピングされたメモリである。
９．６ ＫＳ０１１９レジスタ説明
ＫＳ０１１９は０４Ｂ０ ００００と同一な基本アドレスＣＯＤＥＣ＿ＲＥＱ０を有し、これは０４ＢＦ ＦＦＦＦまで拡張される。
９．６．１ ＫＳ０１１９レジスタアドレスマップ
ＫＳ０１１９レジスタアドレスマップ
【０１１９】
【表３８】
0004290775.tif 000051
【０１２０】
９．６．２ フレームサイズレジスタ
このレジスタは、図５７の図示のとおり、ＣＯＤＥＣチップに伝送されるフレームサイズを制御し、最小フレームの長さは、３バイトである。
９．６．３ チップＩＤレジスタ
このレジスタはＣＯＤＥＣチップＩＤ値を貯蔵するが、ＫＳ０１１９記入に対しては０３Ｈ、ＫＳ０１１９読出のためには８３Ｈを貯蔵する。
９．６．４ 制御／データレジスタ
このレジスタは、次に伝送されるバイトが、レジスタインデックスまたはデータバイトであるという事実を、ＣＯＤＥＣチップＫＳ０１１９に伝える。ＫＳ０１１９に対し、０８Ｈは次のバイトがインデックスであることを、０９Ｈは次のバイトがデータであることを表わす。
９．６．５ インデックス／データ０レジスタ
このレジスタは、その以前のバイトに伝送された値によって、ＣＯＤＥＣチップ構成レジスタに対するインデックス値または、データ０バイトを貯蔵する。プログラミング参照部の通信プロトコルを参照すること。
９．６．６ データ１レジスタ
このレジスタは、ＣＯＤＥＣレジスタＩｎｄｅｘ＋１に記入されるデータを貯蔵する。
９．６．７ データ２レジスタ
このレジスタは、ＣＯＤＥＣレジスタＩｎｄｅｘ＋２に記入されるデータを貯蔵する。
９．６．８ データ３レジスタ
このレジスタは、ＣＯＤＥＣレジスタＩｎｄｅｘ＋３に記入されるデータを貯蔵する。
９．６．９ ＫＳ０１１９ロジック制御レジスタ
ＫＳ０１１９制御レジスタに対するビット指定は、図５８の図示のとおりである。
９．６．１０ ＨＳ及びＶＳ極性
このレジスタは、水平同期と垂直同期信号の極性を定義する。０値はアクチブローに定義される一方、１値はアクチブハイに定義される。ビット指定は下記のとおりである。
Ｂｉｔ＜０＞：ＶＳ極性
Ｂｉｔ＜１＞：ＨＳ極性
９．６．１１ ＨＳオフセット
アクチブ信号は、このオフセット値以降に発生され、このオフセット値は００Ｈに定義される。
９．６．１２ ＶＳオフセット
アクチブ信号は、このオフセット値以降に発生され、このオフセット値は００Ｈに定義される。
９．６．１３ ステータスレジスタは図５９の図示のとおりである。
９．６．１４ 読出データシリアルインターフェースレジスタ
このレジスタは、読出フラグがビジー(busy)状態から準備(ready)状態への遷移を表してから、シリアルポートからの有効データを貯蔵する。
９．６．１５ 読出ＰＲＯＭデータレジスタ
このレジスタはＰＲＯＭフラグが準備状態の場合、有効データを貯蔵する。
９．６．１６ プログラミングレ参照
９．６．１６．１ 構成及び初期化
ビデオディスプレーハードウェアは、２種類のモードすなわち、ＶＧＡオーバーレーモードとＶＧＡエミュレーションモードに動作するように製作される。このモード動作は、ロジック制御レジスタにあるビットを設定することにより制御される。
ＭＳＳＥＬ：ＶＧＡオーバーレーモードの場合０、
ＶＧＡエミュレーションモードの場合１。
ＶＧＡオーバーレーモードでは、ＰＣシステム上にＶＧＡカードの存在が要求される。
−モニタケーブルは、ＭＳＰカードに連結される。
−支援されるＶＧＡ解像度は８００×６００までである。
ディスプレーバッファは、ＶＧＡセッティングと同じサイズであることが要求される。
【０１２１】
ソフトウェアによりＶＧＡフレームバッファで、カラーキー四角領域が満たされるビデオウインドーを設定するために、ビデオデータはＭＳＰ ＳＤＲＡＭでＶＧＡフレームバッファにある四角領域と同一サイズと位置の四角領域に記入されなければならない。図６０を参照すること。
ＫＳ０１１９チップはカラーキーを認識し、ＶＧＡ入力ポートをビデオ入力ポートに切り換える。ソフトウェアによりＤＭＡチャンネル０スタートアドレスを、ＳＤＲＡＭビデオ出力バッファ上位の左側に設定し、ＤＭＡレコードの長さは、ＶＧＡカードに設定された解像度とビデオデータで使用された画素当りのビット（４：２：２＝画素当り１６ビット）によって設定される。
９．６．１６．２ ＫＳ０１１９に対するシリアルプロトコル３−ワイヤーイ ンターフェース
ＫＳ０１１９チップにある構成レジスタを設定する場合、プロトコルは下記のとおりである。
−周辺チップに伝送されるためには、最少に２個のフレームが必要である。
−第１番目のフレームは、構成レジスタのインデックスを設定するためのものである。
−第２番目のフレームは、データ（レジスタの内容）の読出または記入のためのものである。
ソフトウェアによりフレームサイズレジスタを適切な長さで設定し、シリアルアクセスビットを１に設定する。そうすると、フレームサイズレジスタを変更する前、フレームに必要なすべてのバイトをソフトウェアによりロードし、ＣＯＤＥＣインターフェースロジックは、フレームシリアル化が開始される前、すべてのバイトがロードされる時まで待つ。
第１番目に伝送されるフレームは、インデックスを設定するためのもので、フレームサイズは３である。図６１を参照すること。
【０１２２】
第２番目のフレームは、レジスタを設定するためのもので、フレームサイズは３である。
各データバイトの以降、チップはインデックスを１ずつ自動に増加させ、これは複数バイトのデータを４個データバイトまで支援するＣＯＤＥＣインターフェースロジックに伝送することによって、連続的なレジスタを設定することを可能にする。
読出または記入動作が遂行された場合、ソフトウェアにより読出動作時に、有効データのためのステータスレジスタの読出及び記入フラグをチェックするか、次のフレームを伝送する前、記入フラグ＝準備(ready)であるかをチェックする。
次の例は、ＫＳ０１１９データシートを設定する段階を示している。
２個のレジスタが連続的なインデックスを有するので、この二バイトは単一フレームにロードされ得る。まず、インデックスは下記のとおり設定されなければならない。
−８３Ｈ値（フレームサイズ＝３、シリアルアクセスビット設定）を有するロードフレームサイズレジスタ（Address=04B0_0000H)
−０３値を有するロードＩＤレジスタ（Address=04B0_0001H)
−ロードデータ／制御バイト：ＫＳ０１１９に、次のバイトがインデックスであることを知らせる０８Ｈ値（Address=04B0_0002H)
−６Ｈ値を有するロードインデックスレジスタ（Address=04B0_0003H)
シリアルインターフェースは、フレームサイズレジスタにある内容の一致可否を検出しフレーム伝送を開始し、ステータスレジスタにある記入フラグは、ビジー(busy)状態に設定される。次のフレームを伝送する前、ソフトウェアによりステータスレジスタにあるフラグをチェックする。フラグが準備状態であれば、ソフトウェアにより次のフレームのための値をロードすることができる。
９．７ ＫＳ０１２２レジスタ説明
ＫＳ０１２２は０４Ｃ０ ２０００に該当する基本アドレスを有し、これは０４２０ ２ＦＦＦまで拡張される。
９．７．１ ＫＳ０１２２レジスタアドレスマップ
【０１２３】
【表３９】
0004290775.tif 000052
【０１２４】
９．７．２ フレームサイズレジスタ
このレジスタは、図６２に定義されたように、ＣＯＤＥＣチップに伝送されるフレームサイズを制御し、最小フレームの長さは３バイトである。
９．７．３ チップＩＤレジスタ
このレジスタはＣＯＤＥＣチップＩＤ値を貯蔵するが、ＫＳ０１２２記入に対しては０４Ｈ、ＫＳ０１２２読出のためには８４Ｈを貯蔵する。
９．７．４ 制御／データレジスタ
このレジスタは、次に伝送されるバイトが、レジスタインデックスまたはデータバイトであるとの事実をＣＯＤＥＣチップＫＳ０１２２に伝える。ＫＳ０１２２に対し、００Ｈは次のバイトがインデックスであることを、０１Ｈは次のバイトがデータであることを表わす。
９．７．５ インデックス／データ０レジスタ
このレジスタは、その以前のバイトに伝送された値によって、ＣＯＤＥＣチップ構成レジスタに対するインデックス値或いはデータ０バイトを貯蔵する。プログラミング参照部の通信プロトコルを参照すること。
９．７．６ データ１レジスタ
このレジスタは、ＣＯＤＥＣレジスタＩｎｄｅｘ＋１に記入されるデータを貯蔵する。
９．７．７ データ２レジスタ
このレジスタは、ＣＯＤＥＣレジスタＩｎｄｅｘ＋２に記入されるデータを貯蔵する。
９．７．８ データ３レジスタ
このレジスタは、ＣＯＤＥＣレジスタＩｎｄｅｘ＋３に記入されるデータを貯蔵する。
【０１２５】
９．７．９ ＫＳ０１２２ロジック制御レジスタ
ＫＳ０１２２制御レジスタに対するビット指定は、下記のとおりである。
ｂｉｔｓ＜１：０＞
００            ４：２：２フォーマット
０１            ４：１：１フォーマット
１０            ＣＣＩＲ６５６フォーマット
９．７．１０ ステータスレジスタ
ビット＜０＞：フィールドステータース
０：偶数フィールド
１：奇数フィールド
ビット＜１＞：ＶＳステータス
０：１から０までのＶＳ
１：０から１までのＶＳ
９．７．１１ 読出データシリアルインターフェースレジスタ
このレジスタは、読出フラグがビジー(busy)状態から準備(ready)状態への遷移を表してから、シリアルポートからの有効データを貯蔵する。
９．７．１２ ＫＳ０１２２に対するシリアルプロトコル３−ワイヤーインターフェース
ＫＳ０１２２チップにある構成レジスタを設定する場合、プロトコルは下記のとおりである。
−周辺チップに伝送されるためには、最少２個のフレームが必要である。
−第１番目のフレームは、構成レジスタのインデックスを設定するためのものである。
−第２番目のフレームは、データ（レジスタの内容）の読出または記入のためのものである。
【０１２６】
ソフトウェアによりフレームサイズレジスタを適切な長さに設定し、シリアルアクセスビットを１に設定する。そうすると、フレームサイズレジスタを変更する前、フレームに必要なすべてのバイトをソフトウェアによりロードし、ＣＯＤＥＣインターフェースロジックは、フレームシリアル化が開始される前、すべてのバイトがロードされる時まで待つ。
第１番目に伝送されるフレームはインデックスを設定するためのもので、フレームサイズは３である。図６３を参照すること。
第２番目のフレームはレジスタを設定するためのもので、フレームサイズは３である。
各データバイトの後、チップはインデックスを１ずつ自動に増加させ、これは複数バイトのデータを４個データバイトまで支援するＣＯＤＥＣインターフェースロジックに伝送することによって、連続的なレジスタを設定することが可能にする。
読出または記入動作が遂行された場合、ソフトウェアにより読出動作時に、有効データのためのステータスレジスタの読出及び記入フラグをチェックするか、次のフレームを伝送する前、記入フラグ＝準備(ready)であるかをチェックする。
次の例は、ＫＳ０１２２データシートを設定する段階を示している。
クロマキーバイト０とバイト１に対する値を設定するために、このレジスタのためのインデックスは、バイト０に対し６ＡＨ、バイト１に対し６ＢＨである。ＫＳ０１２２データシートを参照すること。
２個のレジスタが連続的なインデックスを有するので、この二バイトは単一フレームにロードされ得る。まず、インデックスは下記のとおり設定されなければならない。
【０１２７】
−８３Ｈ値（フレームサイズ＝３、シリアルアクセスビット設定）を有するロードフレームサイズレジスタ（Address=04B0_0000H)
−０３値を有するロードＩＤレジスタ（Address=04B0_0001H)
−ロードデータ／制御バイト：ＫＳ０１２２に、次のバイトがインデックスであることを知らせる０８Ｈ値（Address=04B0_0002H)
−６Ｈ値を有するロードインデックスレジスタ（Address=04B0_0003H)
シリアルインターフェースは、フレームサイズレジスタにある内容の一致可否を検出してフレーム伝送を開始し、ステータスレジスタにある記入フラグはビジー(busy)状態に設定される。次のフレームを伝送する前、ソフトウェアによりステータスレジスタにあるフラグをチェックする。フラグが準備状態であれば、ソフトウェアにより次のフレームのための値をロードすることができる。
【０１２８】
第 １０ 章 ビットストリーム処理器
１０．１
本章は、ビデオデータ圧縮及び伸長応用のための主要ＭＳＰ処理エンジン中の１つのビットストリーム処理器（ＢＰ）を設計するための、機能的な要求条件を説明する。
１０．２ 略語
Ａ／Ｖ      オーディオ及びビデオ
ＢＰ        ビットストリーム処理器（ＭＳＰブロック）
ＣＣＵ      キャッシュ制御ユニット（ＭＳＰブロック）
ＣＩＦ      ２９．９７Ｈｚで３５２×２８８の輝度サンプル解像度を有する、共通中間フォーマット
ＤＣＴ      離散余弦変換
ＤＭＡ      直接メモリアクセス
ＤＳＭ      デジタル貯蔵メディア
ＦＢＵＳ    速いバス（ＭＳＰ内部データバス）
ＧＯＢ      ブロックグループ
ＧＳＴＮ    一般スイッチテレフォンネットワーク（既に公知されたＰＳＴＮ）
ＨＤＤ      ハードディスクドライバー
Ｉ／Ｆ      インターフェース
ＩＯＢＵＳ  入出力バス（ＭＳＰ内部周辺バス）
ＩＴＵ−Ｔ−６０１  ２９．９７Ｈｚで７２０×４８０と、２５Ｈｚで７２０×５７６のそれぞれのサンプル解像度を有する、カラーテレビジョン信号のデジタルコーディング用のテーブル基準（以前はＣＣＩＲ６０１とも呼ばれる）。しかし、ディスプレー解像度は、７２０×４８０または７０４×４８０である場合もある。
ＬＳＢ      最少ビット
ＬＵＴ      ルックアップテーブル
ＭＰＥＧ    モーション映像専門家(expert)グループ
ＭＳＢ      最大有意ビット
ＭＳＰ      三星マルチメディア信号処理器
ＱＣＩＦ    ２９．９７Ｈｚで１７６×１４４の輝度を有するＱｕａｒｔｅｒ＿ＣＩＦ
ＲＬＣ      ＲＵＮ＿長さ及びレベルコード
ＳＤＲＡＭ  同期ダイナミックランダムアクセスメモリ
ＳＩＦ      ＮＴＳＣ用２９．９７Ｈｚで３５２×２４０及び、ＰＡＬ用の２５Ｈｚで３５２×２８８の輝度解像度を有する、ＭＰＥＧー１ビデオテーブル基準用の情報入力及びフォーマット
ＴＳＤ      定義される
ＶＬＣ      可変長さコード
ＶＰ        ベクトルプロセッサ（ＭＳＰブロック）
１０．３ 主要特徴
ＭＰＥＧ−１、ＭＰＥＧ−２、Ｈ．２６１及びＨ．２６３のエンコーディング及びデコーティング応用とスライス（またはＧＯＢ）層をなして解釈する構文を支援する。
＊実時間でＲＬＣ処理を遂行
＊ＭＰＥＧ−１、ＭＰＥＧ−２、Ｈ．２６１及びＨ．２６３ビデオ標準にあるすべてのハフマンテーブルを用いて実時間でハフマンコード処理を遂行。
＊２個の順方向／逆方向ジグザグスキャン変換方式を支援。
＊７３１．４Ｍｂｉｔｓ／ｓｅｃ(32-bit＠40MHz）の最大伝送レートでインターフェースするＩＯＢＵＳ
＊最大動作クロック周波数は４０ＭＨｚ
＊ハフマンコーデックルック−アップテーブルのための９．２Ｋｂｉｔ ＲＯＭを含む。
＊３２０ｂｙｔｅ内部ＳＤＲＡＭを含む。
＊先占(pre-emptive)及び協力文脈スイッチングモードを支援
＊制御経路のための目的ゲート計算は、６Ｋｇａｔｅｓ＋ＲＡＭ及びＲＯＭ
【０１２９】
１０．４ 概要
ビットストリーム処理器（ＢＰ）は、４個のＭＳＰ内部周辺装置の中の１つである。これは、ビデオ圧縮及び復元状態の数ビットストリームを支援するために、ハードウェア組織ブロックである。
このような装置は特に、ＭＳＰ内部のＶＰ及びＡＲＭ７がこのようなビットの操作に効率的なアーキテクチャーを有していないので、ビット＿レベル処理のために設計された。
このようなＢＰは、７３１．４Ｍｂｉｔｓ／ｓｅｃの最大伝送速度を有するＩＯＢＵＳと呼ばれる３２ビットバスを通してデータを送受信する。
そしてＢＰは、独立的な処理装置として動作し、ＡＲＭ７またはＶＰのソフトウェアにより制御される。
その上、特にＢＰはスライスまたはＧＯＢ及び、その以下に含まれているすべての情報をエンコーディング及びデコーディングし、そしてＣＣＵから／にデータを送受信する。前記のＢＰはまた、順方向及び逆方向ジグザグ変換を遂行し、差動ＤＣ係数をエンコーディング及びデコーディングする。
さらに、このようなＢＰはデコーディングで差動モーションベクトルを使用してモーションベクトルを復元し、２個の特殊なモードすなわち、ＭＰＥＧ−２エンコーディングでデュアル＿プライムモードと、Ｈ．２６３エンコーディング及びデコーディングで予測モードを除いて、エンコーディングではその反対の動作を遂行する。
もし、ＢＰが単純なモードで動作すると仮定すると、ＢＰは一応スライスまたはＧＯＢを処理しつつ始め、ＢＰはスライスまたはＧＯＢ処理が完了されてからインタラプトされる。このような動作は、全二重モードがスライスまたはＧＯＢをインタリーブによりエンコーディング及びデコーディングすることにより遂行される。
もし、ＡＲＭ７がＢＰを他の作業に瞬間的にスイッチングさせることを願うと、ＢＰは現在のスライスまたはＧＯＢが完了される前、ＢＰ過程を完了する先占文脈切換モードを支持するようになる。
【０１３０】
図３はＢＰのブロックダイアグラムを示したものである。
図３の図示のとおり、ＢＰは５個のブロックＩＯＢＵＳインターフェース装置、ＶＬＣ ＦＩＦＯ装置、ＶＬＣ ＬＵＴ ＲＯＭ、制御状態マシン及びＢＰコア装置とを含む。入出力データは、１６×３２ビットラムを含む、ＩＯＢＵＳインターフェース装置により動作される。これはすべてのデータ移動及びインタラプト要求を支援する。ＶＬＣ ＦＩＦＯ装置は、データ復号化動作のために、次のデータワードを準備し、そしてデータ符号化動作のために、出力データパッキングを遂行する。
ＶＬＣルックアップテーブルロムは、すべてのハフマンコードの処理のために、すべての必要な情報を貯蔵する７６８×１２ｂｉｔのサイズを有する。制御状態マシンを設計する時、すべてのエンコーディング及びデコーディングを制御する。ＢＰコア装置は加算器、比較器、バレルシフター、レジスタファイル及び、１２８×１６ビットのＲＡＭを含む小さいプロセッサである。ビット操作は、前記のコアに有用である。
【０１３１】
１０．５ 信号定義
ＢＰ外部インターフェースに要求される信号は、表４５に示している。文字“１”の最後にある信号は、アクチブ＿ローを示す。
テーブル１の“方向”コラムで“Ｂ”、“Ｉ”“Ｏ”は両方向信号であって、入力信号及び出力信号とをそれぞれ意味する。
【０１３２】
ＢＰ信号定義
【表４０】
0004290775.tif 000053
【０１３３】
１０．６ エンコーディング／出コーティング用のデータ流れ図
ここで例えば、代表的なビデオエンコーディング及びデコーディング
応用のデータ流れを含む。ここでは、オーディオデータの流れについては
詳細に記述しない。
１０．６．１ エンコーディングの場合
段階Ｅ１：ロー（ＲＡＷＡ／Ｖデータ入力）
普通の入力ビデオ及びオーディオ信号がサンプリングされ、外部コーデックによりデジタル化され、そして使用者ＡＳＩＣに供給される。しかし、マルチメディアＰＣ環境で、あるＶＧＡ制御ボードはまたフレーム捕獲子(grabber)とサウンドキャップチャを含む。従って、ロー(RAW)Ａ／Ｖデータは、使用者ＡＳＩＣまたはＰＣＩバスインターフェースの中のいずれか１つから伝達される。カストマＡＳＩＣまたはＰＣＩバスは、３２ＢＹＴＥＳの小さいバッファを含む。このバッファにあるデータはＤＡＭ操作を利用したＦＢＵＳを通して、外部ＳＤＲＡＭに伝達される。このようなデータ移動は、電源がリセットされてからＡＲＭ７により初期化される。
段階Ｅ２： ＶＰによるプリフィルタリング
まず、ＶＰはＶＰデータ開始（一般的にスクラッチパッド領域）のＳＤＲＡＭに貯蔵されたイメージデータをフェッチする。そして、ＶＰはこのような画素を一時的にフィルタリングしてから空間をスケーリングする。プリフィルタリングしてから、映像の解像度は正常的にＩＴＵ＿Ｔ＿６０１サイズからＣＩＦまたはＱＣＩＦサイズに変換される。このＶＰは、外部ＳＤＲＡＭに対するプリフィルターされた結果を記録する。
【０１３４】
段階Ｅ３： ＶＰによるデータ圧縮
ＶＰは、これに対応する標準に提示された法則によって圧縮が遂行されるように、さらにＶＰデータキャッシュの中にＳＤＲＡＭのプリフィルターされたデータをフェッチする。正常的にＶＰは、順方向ＤＣＴ／順方向適応量子化、モーション予測、マクロブロックタイプ決定などを遂行する。
このような過程を遂行してから、ＶＰは更にＶＰデータキャッシュへ適当なヘッド情報を有する結果を記録しなければならない。実際的に、このＶＰデータキャッシュ領域は、ＢＰ入力バッファとして利用される。バッファの状態を検査するために、フラグ信号が利用される。
段階Ｅ４： ＡＲＭ７によるＢＰ初期化
実際的にＢＰが動作される前、ＡＲＭ７はＢＰの初期レジスタを初期化しなければならない。
このような初期化は、パワーオンリセット信号が印加されてから、１２８サイクルの間には遂行されない。特にＡＲＭ７は、入出力バッファアドレス及びＢＰ命令レジスタを初期化させなければならないし、スライスまたはＧＯＢ内で符号化されたマクロブロック数を指定しなければならない。
このようなレジスタを初期化してから、ＡＲＭ７はＢＰ過程を遂行するようにＢＰイネーブルフラグをセットしなければならない。
段階Ｅ５：ＢＰによりビットストリーム過程
もし、入力２個のバッファの中のいずれか１個がフール(full)の場合、ＢＰはＩＯＥ ＪＳを通してデータを読み込み始める。すなわちＢＰは、バッファがフールの場合のみデータが読み込める。そして、ＢＰはジグザグフォーマットで８×８ブロックデータを変換させる。そして、その結果は直接にＲＬＣ及びハフマン符号化される。
このようなハフマン符号化された結果は、ＡＲＭ７データキャッシュまたはＳＤＲＡＭ中の中のいずれか１つに伝送され得る。ＢＰは、前記のバッファがオーバーフローされないように空いている場合のみ、出力バッファに書き込むべきである。この過程の最後の例を挙げれば、処理されたマクロブロック数がＡＲＭ７により指定されたマクロブロック数と同一な場合、ＢＰは最後のデータのバイト及び位置でＡＲＭ７とインタラプトするようになり、現在スライスまたはＧＯＢ過程を終了する。
【０１３５】
段階Ｅ６： ＡＲＭ７によりビットストリーム形成とＡ／Ｖマルチプレキシング
ＡＲＭ７はハフマン符号化されたデータ及び構文パラメータを結合し、最後のビットストリームを作り、その過程を反復する。
そしてＡＲＭ７はまた、スライスまたはＧＯＢマルチプレクスオーディオ及びビデオビットストリームの上部層と操作することができる。この結果は、ＡＲＭ７によりＳＤＲＡＭに書かれる。
段階Ｅ７： ＶＰによるネットワークインターフェース（ビデオ会議用選択）    ビデオ電話またはビデオ画像会議の応用のために、前記の段階６まではＶＰがＨ．３２４ＧＳＴＮビデオ電話用のＶ．３４モデムまたは、Ｈ．３２０ＩＳＤＮビデオ会議端末用の１４００系列のインターフェースのようなネットワークインターフェースがその機能を遂行してきた。
段階Ｅ８： 最後のビットストリーム出力
ＳＤＲＡＭに貯蔵された最後のビットストリームは、カストマＡＳＩＣまたはＰＣＩの中のいずれか一つに伝送される。正常的に使用者ＡＳＩＣブロックはネットワークインターフェースに使用され、そしてＰＣＩバスインターフェースは、記録装置（例えば、ＨＤＤ）データ貯蔵のために利用される。
このデータが移動する時には、ＡＲＭ７により初期化されたＤＭＡデータ伝送を利用する。
【０１３６】
１０．６．２ デコーディングの場合
段階Ｄ１： ビットストリームフェッチ
マルチメディア環境で圧縮されたビットストリームは、ＣＤ−ＲＯＭドライバー、ＨＤＤ及びネットワークインターフェースの中のいずれか一つから供給される。
従って、このビットストリームは、カストマＡＳＩＣまたはＰＣＩバスの中のいずれか１つとなる。カストマＡＳＩＣまたはＰＣＩバスの３２ｂｙｔｅに貯蔵されたデータは、ＤＭＡを利用したＳＤＲＡＭに伝送される。
段階Ｄ２：ＶＰによるネットワークインターフェース（ビデオ会議用選択）ビデオ会議において、データはまず、ＶＰによりＶ．３４または１４００系列のネットワークインターフェースルーチンが遂行される。ＶＰはＳＤＲＡＭに対する結果を書き込む。
段階Ｄ３： ＡＲＭ７によりＡ／Ｖディマルチプレキシング及びヘッダ分析ＡＲＭ７はＳＤＲＡＭ内のデータをＡＲＭ７データキャッシュに移動させ、Ａ／Ｖビットストリームディマルチプレキシングを遂行する。ビデオビットストリームのためにＡＲＭ７はまた、すべてのスタートコードを検索し、そしてスライスＧＯＢが検出するまでヘッダを分析する。ＡＲＭ７は復号化されたビットストリーム構文パラメータを、ＡＲＭ７によりＳＤＲＭの特別領域に貯蔵させる。ディマルチプレキシングされたオーディオ及びビデオビットストリームは、ＳＤＲＡＭにあるレートバッファにそれぞれ伝送される。各動作のために、レートバッファのサイズを異にしてもよい。例えば、ビデオ速度バッファサイズのために、ＭＰＥＧ−１は３７０Ｋｂｉｔｓに、ＭＰＥＧ−２は１．８３５Ｍｂｉｔｓに勧告する。
【０１３７】
段階Ｄ４： ＡＲＭ７によるＢＰ初期化
この段階の遂行は、ただ符号化されたマクロブロック数に対してレジスタの初期化を要求しないことを除いては、以前のサブセクションの段階Ｅ４と同様である。すなわち、初期化はパワーオンリセット信号が印加されてから、１２８サイクルの間に遂行されてはいけない。
段階Ｄ５： ＢＰによるビットストリーム過程
特別なスライスまたはＧＯＢのためにＢＰを初期化させてから、復元されたデータは２個のバッファに伝送する。
ＢＰはフールフラグの状態を検査するＩＯＢＵＳを通してデータを読み込む。ＢＰはもし、入力データがヘッドワードを含んでいると、構文パラメータを分析する。
もし、ＢＰが続く次のビットをハフマンコードで認識すると、各ハフマンコード用の最上４サイクル以内にハフマンデコーディングを遂行する。もし、ハフマンデコードがＤＣＴ ＡＣ係数であれば、ハフマンデコードされた結果が、６４画素成分を表わすデコードされたＲＬＣとなる。
再現画素はこれとは反対に、ジグザグに変換され、そして最後にＶＰが順方向量子化を遂行するように、２個の出力バッファに伝送される。ＢＰはスライスまたはＧＯＢでない初期コードを検出してから、このような過程を遂行し続ける。もし、これが検出されなければ、ＢＰは最後に使用されたデータに対して、バイト及びビットの位置情報を有するＡＲＭ７とインタラプトさせる。そうすると、ＡＲＭ７は次のスライスまたはＧＯＢスタートコードを検索し、このような過程を繰り返す。
【０１３８】
段階Ｄ６： ＶＰのデータ復元
段階Ｄ５の結果を使用し、ＶＰは逆量子化、逆ＤＣＴ及びモーションベクトルを利用した映像再現を遂行する。符号化過程を完了してから、ＶＰはＳＤＲＡＭの中にその結果を貯蔵する。
段階Ｄ７： ＶＰの以降の過程
ビデオ及びオーディオデータが、デジタル／アナログ変換器に伝送される前、画素はＶＰが好ましい出力解像度及びイメージを得るように、前記の過程を遂行する。
このような結果はまた、ＳＤＲＡＭに貯蔵される。
段階Ｄ８： ロー(RAW)Ａ／Ｖデータ出力
最後に、ＳＤＲＡＭ内部の再現オーディオ及びビデオデータは、ＤＭＡを利用して出力される。さらに、このようなデータ移動はＡＲＭ７により初期化される。現在のビデオオーバーレー技術は、ＰＣＩバスがビデオソースにデータを伝送できるようにし、最後にデータはカストマＡＳＩＣまたはＰＣＩバスの中のいずれか１つに伝送される。
【０１３９】
１０．７ プログラミングモデル
１０．７．１ ＢＰベース装置アドレス
ＢＰは次の３２ビット基本装置アドレスを有している。
<MSP_BASE><BP_BASE><Address_Offset>
ここで、<MSP_BASE>はＭＳＰベースＰＣＩ装置アドレスにより規定された５ビットであり、<BP_BASE>は7'b 1111100に等しい７ビットであり、<Address_Offset>はＢＰ内部レジスタに割当てられた２０ビットである。
従って、全体ＭＳＰ Ｉ／Ｏ装置アドレスマップで、ＢＰに割当てられたアドレス範囲は、27'h 7C0_0000から27'h 7CF_FFFFまでである。
１０．７．２ 内部レジスタ説明
内部レジスタセットは、表に示しており、表のすべてのレジスタは、ＡＲＭ７またはＶＰにより書かれるか読まれることができる。
【０１４０】
ＢＰ内部レジスタ
【表４１】
0004290775.tif 000054
【０１４１】
＊ＢＰ−ＭＯＤＥ［３１：０］（読出専用、省略時の値なし）−このレジスタはビデオ標準タイプと多様な画像レベル情報を定義し、詳細なことはサブセクション１０．８．１で示している。
＊ＢＰ＿ＣＯＮＴＲＯＬ［３１：０］（読み取り書き込み、省略時の値は“32 'h 0000_0000”）−このレジスタは、ＢＰ動作のために多様な制御パラメータを含む。ＡＲＭ７またはＶＰは、このレジスタにある各フラグをセットし、あるフラグはＢＰによりセットされる。ビット仕様はサブセクション１０．８．２で示している。
＊ＩＢＵＦ０＿ＳＴＡＲＴ［３１：０］（読み取り書き込み、省略時の値なし）−このレジスタは、ＢＰ入力両方向バッファの入力バッファ０となるように、初期アドレスをＡＲＭ７により定義し初期化する。ＩＢＵＦ０＿ＳＴＡＲＴ用の初期化値は常にＩＢＵＦ０＿ＥＮＤより小さく、ＩＢＵＦ０＿ＳＴＡＲＴ［３：０］は4'b0000と同一である。
＊ＩＢＵＦ０＿ＥＮＤ［３１：０］（読出専用、省略時の値なし）−このレジスタはＢＰ入力両方向バッファの入力バッファ０で最後のアドレスを定義しており、この内容はセクション１０．１１に記述されている。
＊ＩＢＵＦ１＿ＳＴＡＲＴ［３１：０］（読み取り書き込み、省略時の値なし）−このレジスタはＢＰ入力ダブルバッファの入力バッファが１となるように、ＡＲＭ７のスタートアドレスを初期化させる。ＩＢＵＦ１＿ＳＴＡＲＴの初期化値は常にＩＢＵＦ１＿ＥＮＤより小さく、ＩＢＵＦ１＿ＳＴＡＲＴ［３：０］は4'b0000と同一になる。この内容はセクション１０．１１に記述されている。＊ＩＢＵＦ１＿ＥＮＤ［３１：０］（読出専用、省略時の値なし）−このレジスタはＢＰ入力ダブルバッファの入力バッファ１が１となるように、最後のアドレスを定義する。この内容はセクション１０．１１に記述されている。
＊ＯＢＵＦ０＿ＳＴＡＲＴ［３１：０］（読み取り書き込み、省略時の値なし）−このレジスタはＢＰ出力ダブルバッファの出力バッファが０となるように、ＡＲＭ７のスタートアドレスを初期化させる。ＯＢＵＦ０＿ＳＴＡＲＴの初期化値は、ＯＢＵＦ０＿ＥＮＤより常に小さく、ＯＢＵＦ０＿ＳＴＡＲＴ［３：０］は4'b0000と同一である。この内容はセクション１０．１１に記述されている。
＊ＯＢＵＦ０＿ＥＮＤ［３１：０］（読出専用、省略時の値なし）−このレジスタはＢＰ出力ダブルバッファの出力バッファが０となるように、最後のアドレスを定義する。この内容なセクション１０．１１に記述されている。
＊ＯＢＵＦ１＿ＳＴＡＲＴ［３１：０］（読み取り書き込み、省略時の値なし）−このレジスタはＡＲＭ７によりＢＰ出力ダブルバッファの出力バッファが１となるように、ＡＲＭ７のスタートアドレスを初期化する。ＯＢＵＦ１＿ＳＴＡＲＴの初期化値は、ＯＢＵＦ１＿ＥＮＤより常に小さく、ＯＢＵＦ１＿ＳＴＡＲＴ［３：０］は4'b0000と同一である。この内容はセクション１０．１１に記述されている。
＊ＯＢＵＦ１＿ＥＮＤ［３１：０］（読出専用、省略時の値なし）−このレジスタはＢＰ出力ダブルバッファの出力バッファが１となるように、最後のアドレスを定義する。この内容はセクション１０．１１に記述されている。
＊ＳＡＶＥ＿ＡＤＲ［３１：０］（読出専用、省略時の値なし）−このレジスタは先占文脈切換モードが要求される場合、ＢＰ内部文脈を貯蔵するように、ＳＤＲＡＭの初期アドレスに定義する。関連資料はサブセクション１０．１２．１を参照する。
【０１４２】
＊ＶＡＬＩＤ＿ＢＹＴＥ＿ＡＤＲ［３１：０］（読み取り書き込み、省略時の値なし）−このレジスタはデコーディングで入力ダブルバッファまたは、エンコーディングで出力ダブルバッファの最後の有効データバイト位置を表わす。このレジスタの目的は、ＡＲＭ７及びＢＰの間でハンドシェーキングするためのものである。一般に、有効バイトデータの有効ビット位置のために追加的な情報が要求されるが、これはＢＰ＿ＣＯＮＴＲＯＬ［３１：０］レジスタ内に含まれている。詳細な内容はセクション１０．１３にある。
＊ＢＰ＿ＳＴＡＴＵＳ［３１：０］（読み取り書き込み、省略時の値は“32 'h 0000_0000”）−このレジスタは、ＢＰの多様な内部状態を表わす。最下２バイト（例えば、ＢＰ＿ＳＴＡＴＵＳ［１５：０］）のすべてのビット位置は、ＡＲＭ７＿ＩＲＱを“１”にセットすることができるインタラプト条件である。このレジスタは２つの方法で接近することができる。ＡＲＭ７またはＶＰアドレス27'h7C0_0050を使用する全３２−ビットレジスタを読取または書込可能である。しかし、一般的にＡＲＭ７及びＶＰは、ビット単位でＢＰ＿ＳＴＡＴＵＳレジスタの内容を書込（またはリセット）することが好ましい。ＢＰはまた、ＢＰ＿ＳＴＡＴＵＳの各ビット当り27'h7C0_0030から27'h7C0_004Fまでの範囲のアドレスを割当てることによって、この特徴的な内容を支援する。このようなビット内容は、サブセクション１０．８．３に記述されている。
＊ＢＰ＿ＩＮＴ＿ＭＡＳＫ［１５：０］（読出専用、省略時の値は“16hFFFF”）−このレジスタの各ビットは、前記のＢＰ＿ＳＴＡＴＵＳ［１５：０］によるインタラプト条件に対応し、ＢＰ＿ＳＴＡＴＵＳ［１５：０］の内部でコーディングされる前の条件を有する論理的な値(and-ed)である。もし１つのマスクビットが“０”にセットされると、対応インタラプト条件は、無条件的に“０”（例えば、ディスエーブルされる）にセットする。このようなインタラプトに対する詳細な内容は、セクション１０．９に記述されている。
＊Ｖ＿ＭＢ＿ＳＩＺＥ［７：０］（読出専用、省略時の値なし）−このレジスタは符号化または復号化される画像の垂直サイズを表わす。ここで、この値はマクロブロック数を意味する。例えば、もし垂直サイズが２８８画素であれば、Ｖ＿ＭＢ＿ＳＩＺＥ［７：０］＝２８８／１６＝１８となる。ＡＲＭ７はＢＰエンコーディング及びデコーディング動作をスタートする前に常に設定しなければならない。
【０１４３】
＊Ｈ＿ＭＢ＿ＳＩＺＥ［７：０］（読出専用、省略時の値なし）−このレジスタは符号化または復号化される画像の水平サイズを表わす。ここで、この値はマクロブロック数を意味する。例えば、もし垂直サイズが３５２画素であれば、Ｈ＿ＭＢ＿ＳＩＺＥ［７：０］＝３５２／１６＝２２となる。ＡＲＭ７はＢＰエンコーディング及びデコーディング動作をスタートする前に常に設定しなければならない。
＊ＡＲＭ７＿ＩＲＱ［０］（読出専用、省略時の値は“０”）−このレジスタは、ＡＲＭ７にインタラプトを要求するための１ビットフラグであり、ＡＲＭ７＿ＩＲＱ出力ポートに直接連結されている。もしＢＰ＿ＳＴＡＴＵＳ［１５：０］の任意ビットが“１”にセットされると、このフラグはセットされる。そしてＡＲＭ７はこのフラグをリセットさせる。
１０．８ ＢＰ Ｉ／Ｏデータワードフォーマット
このセクションでは、ＢＰ入出力用命令語データ及びマクロブロックデータワードフォーマットを含む。
１０．８．１ ＢＰ＿ＭＯＤＥレジスタフォーマット
27'h7C0_0000アドレスの３２ビットＢＰ＿ＭＯＤＥレジスタは、テーブル２５に与えられた下記のフォーマットを有している。すなわち、ＢＰ＿ＭＯＤＥ［３１］＝ＰＡＲＡＭ＿ＳＥＴ２［７］とＢＰ＿ＭＯＤＥ［０］＝ＳＦ［０］とを表わす。
【０１４４】
【表４２】
ＢＰ＿ＭＯＤＥレジスタフォーマット
0004290775.tif 000055
【０１４５】
＊ｓｔａｎｄａｒｄ＿ｆｏｒｍａｔ［ＳＦ］−使用されるビデオ標準は、テーブル２６に定義されている。前記のＳＦは、常にＢＰがすべてのビデオエンコーディング及びデコーディング応用にイネーブルされる前に、ＡＲＭ７により定義されなければならない。
【０１４６】
【表４３】
ＳＦ定義
0004290775.tif 000056
【０１４７】
＊ｐｉｃｔｕｒｅ＿ｔｙｐｅ（ＰＴ）−映像コーディングタイプは、テーブル２７に定義されている。
ＰＴ用値００は、ＭＰＥＧ−１、ＭＰＥＧ−２及びＨ．２６３応用のための特殊な場合である。特にＤ＿映像は、たとえＭＰＥＧ−２に使用されなくても、ＭＰＥＧ−２用の映像タイプに割当てられる。その理由は、ＭＰＥＧ−１ビットストリームがＭＰＥＧ−２ビットストリームのサブセットからである。
【０１４８】
【表４４】
ＰＴの定義
0004290775.tif 000057
【０１４９】
＊ｐｉｃｔｕｒｅ＿ｓｔｒｕｃｔｕｒｅ（ＰＳ）−映像構造情報は、表４３に定義されている。更に、ＰＳ用値００は非論理的であるのでエラーを招来する。
【０１５０】
【表４５】
ＰＳの定義
0004290775.tif 000058
【０１５１】
＊ｐａｒａｍｅｔｅｒ＿ｓｅｔ０、１及び２（PARAM_SET0、PARAM_SET1、PARAM_SET2)−このような３バイトは、ＭＰＥＧ−１、ＭＰＥＧ−２及びＨ．２６３に使用される多様なパラメータで定義される。各パラメータセット用定義は、表に記述されている。
【０１５２】
【表４６】
PARAM_SET0の定義
0004290775.tif 000059
【０１５３】
＊ｉｎｔｒａ＿ｄｃ＿ｐｒｅｃｉｓｉｏｎ（ＩＤＰ）-ＭＰＥＧ−２に定義された２ビットイントラーｄｃ 精度パラメータは、ＭＰＥＧ−１応用で００にセットされなければならない。
＊ｔｏｐ＿ｆｉｅｌｄ＿ｆｉｒｓｔ（ＴＦＦ）−モーションベクトルエンコーディング及びデコーディングに使用されるＭＰＥＧ−２用フラグである。
＊ｆｒａｍｅ＿ｐｒｅｄ＿ｆｒａｍｅ＿ｄｃｔ（ＦＰＦＤ）−ＭＰＥＧ−２用フラグは、フレーム＿ＤＣＴ及びフレーム予測が使用されることを表わす。
＊ｃａｎｃｅａｌｍｅｎｔ＿ｍｏｔｉｏｎ＿ｖｅｃｔｏｒｓ（ＣＭＶ）またはａｄｖａｎｃｅｄ＿ｐｒｅｄｉｃｔｉｏｎ＿ｍｏｄｅ（ＡＰ）−ＭＰＥＧ−２で、このフラグはモーションベクトルが映像間のマクロブロックで使用されることを表わす。Ｈ．２６３で、このフラグはもし、改良予測モードがＯＮであれば、１にセットされる。そうでない場合は０にセットされる。
次の標準のためにこのフラグは０にセットされなければならない。
＊ｉｎｔｒａ＿ｖｌｃ＿ｆｏｒｍａｔ（ＩＶＦ）−ＭＰＥＧ−２用フラグは、映像間のマクロブロックのためのＶＬＣテーブル形態を決定する。
＊ａｌｔｅｒｎａｔｅ−ｓｃａｎ（ＡＳ）−ＭＰＥＧ−２用フラグは、符号化及び復号化される係数の順序を決定する。
＊ｖｅｒｔｉｃａｌ＿ｓｉｚｅ＿ｆｌａｇ（ＶＳＦ）またはｃｏｎｔｉｎｕｏｕｓ＿ｐｒｅｓｅｎｃｅ＿ｍｕｌｔｉｐｏｉｎｔ（ＣＰＭ）−ＭＰＥＧ−１及びＭＰＥＧ−２で、このフラグの映像の垂直サイズが、２８００ラインを超過する場合は１にセットされ、そうでなければ０にセットされなければならない。Ｈ．２６３で、このフラグは、連続的に現在のマルチポイントモードが使用されると１にセットされ、そうでなければ０にセットされる。
【０１５４】
【表４７】
ＰＡＲＡＭ＿ＳＥＴ１及びＰＡＲＡＭ＿ＳＥＴ２の定義
0004290775.tif 000060
【０１５５】
１０．８．２ ＢＰ＿ＣＯＮＴＲＯＬレジスタフォーマット
ＢＰ＿ＣＯＮＴＲＯＬ［３１：０］レジスタ（アドレス27'h7C0_0004)のためのビット仕様は、表４７で示している。
【０１５６】
ＢＰ＿ＣＯＮＴＲＯＬレジスタフォーマット
【表４８】
0004290775.tif 000061
【０１５７】
＊ＢＰ＿ｅｎａｂｌｅ（ＢＰ＿ＥＮ）−このフラグがＡＲＭ７またはＶＰにより１にセットされる場合、ＢＰはプロセッシングを遂行する。従って、すべての他のレジスタ構造は、このフラグがセットされる前に完了される。もしＢＰがプロセッシングを終えると、このフラグはＢＰによりクリアーされる。
＊ｓｏｆｔｗａｒｅ＿ｒｅｓｅｔ（ＳＯＦＴ＿ＲＥＳＥＴ）−フラグがＡＲＭ７またはＶＰによりセットされる時、ＢＰは現在の処理を中断し、省略時の状態ですべての初期レジスタにリターンし、アイドル状態となる。ＡＲＡＭ７はＢＰ＿ＥＮフラグをセッティングし、ＢＰ過程をさらに始め得る。ＢＰハードウェアリセット信号はアクチブローである。
＊ｐａｕｓｅ（ＰＡＵＳＥ）−フラグがＡＲＭ７またはＶＰにより１にセットされる時、ＢＰは現在の処理動作を中止する。使用者はＢＰ＿ＥＮフラグを設定することによって、中止動作が実行される。
＊ｄｅｔｅｃｔ＿ｓｔａｒｔ＿ｃｏｄｅ（ＤＥＴＥＣＴ＿ＳＴＡＲＴ＿ＣＯＤＥ）−フラグがＡＲＭ７またはＶＰにより１にセットされる時、ＢＰはＩＢＵＦ０にあるデータの中から次のスタートコードを探す。従って、使用者がＩＢＵＦ０＿ＳＴＡＲＴ及びＩＢＵＦ０＿ＥＮＤのための好ましいアドレスをセットしなければならない。このような命令語は、もしＢＰがアイドル状態であれば、適切に動作する。従って、ＡＲＭ７はもしＢＰがアイドルでない場合、この命令を外部に送る前、ソフトウェアリセット命令を優先的にＢＰに送るべきである。
＊ｓｔｅｐ（ＳＴＥＰ）−このフラグがＡＲＭ７またはＶＰにより１にセットされると、ＢＰは現在動作過程の一状態を遂行する。これはデバッギングすることに非常に必要な特徴である。ＡＲＭ７はこの段階動作がイネーブルするように中止命令を優先的に送るべきである。
＊ｃｏｎｔｅｘｔ＿ｓｗｉｔｃｈｉｎｇ＿ｍｏｄｅ（ＣＴＸ＿ＭＯＤＥ）−フラグが“１”にＣＴＸ＿ＳＷＩＴＣＨをセッティングし、ＡＲＭ７またはＶＰにより“１”にセットされる時、ＢＰは先占スイッチングモードを遂行する。もし、これはＣＴＸ＿ＳＷＩＴＣＨが“１”にセッティングされることによって“０”にセットされると、ＢＰは協力文脈スイッチングモードを遂行する。“１”にＣＴＸ＿ＳＷＩＴＣＨをセッティングせず、ＣＴＸ＿ＭＯＤＥをセッティングすることはＢＰ処理に影響を及ぼさない。文脈切換の詳細な内容はセクション１０．１２を参照する。
＊ｃｏｎｔｅｘｔ＿ｒｅｌｏａｄ＿ｒｅｑｕｅｓｔ（ＣＴＸ＿ＲＥＬＯＡＤ）−フラグがＡＲＭ７またはＶＰにより“１”にセットする時、ＢＰは既にＳＤＲＡＭに貯蔵された文脈を更にロードする。そうすると、ＢＰはアドレスＳＡＶＥ＿ＡＤＲ［３１：０］から貯蔵された文脈を読み込む。文脈切換に対する詳細な内容はセクション１０．１２を参照。
＊ｅｒｒｏｒ＿ｈａｎｄｌｅ＿ｍｏｄｅ（ＥＲＲ＿ＨＡＮＤＬＥ＿ＭＯＤＥ）−このフラグは、伝送された圧縮ビットストリームでエラーが発生した時、ＢＰのエラー復旧過程を遂行することに利用される。
入力ビットストリームが無効データである場合、ＢＰはＡＲＭ７をインタラプトさせ、このフラグの内容をチェックする。このフラグが“１”にセットされる時、ＢＰは自動的に次のスタートコードを探す。もし、スタートコードがスライスまたはＧＯＢであれば、ＢＰはこの過程を更に遂行する。このフラグは“０”にセットされる時、ＢＰは次のスタートコードを探せず、アイドル状態で動作する。ＢＰとＡＲＭ７と間のハンドシェーキングはセクション１０．１３に記述されている。
＊ｎｕｍｂｅｒ＿ｏｆ＿ｍａｃｒｏｂｌｏｃｋｓ＿ｔｏ＿ｂｅ＿ｅｎｃｏｄｅｄ（ＮＯ＿ＭＢＳ［１５：０］）−このレジスタは、スライスまたはＧＯＢで符号化されたマクロブロックの数を表わす１６ビットを含む。このような６５５３５までのビット分解能を使用し、マクロブロックはスラスまたはＧＯＢでエンコーディングされる。ここにおいて、“０”値はマクロブロック数として許容されない。
１０．８．３ ＢＰ＿ＳＴＡＴＵＳレジスタフォーマット
ＢＰ＿ＳＴＡＴＵＳ［３１：０］（アドレス27'h 7C0_0050)は表５４に示されている。
【０１５８】
ＢＰ＿ＳＴＡＴＵＳレジスタフォーマット
【表４９】
0004290775.tif 000062
【０１５９】
＊ｉｎｐｕｔ＿ｂｕｆｆｅｒ＿０＿ｄｏｎｅ（ＩＢＵＦ０＿ＤＯＮＥ）−このフラグは入力バッファ０にあるデータが、前記のＢＰにより全部使用される。このフラグはＢＰによりセットされ、ＡＲＭ７またはＶＰによりクリアーされる。このようなフラグはインタラプト状態を表わす。
＊ｉｎｐｕｔ＿ｂｕｆｆｅｒ＿１＿ｄｏｎｅ（ＩＢＵＦ１＿ＤＯＮＥ）−このフラグは入力バッファ１にあるデータが、前記のＢＰにより全部使用されたことを表わす。このフラグはＢＰによりセットされ、ＡＲＭ７またはＶＰによりクリアーされる。このようなフラグはインタラプト状態を表わす。
＊ｏｕｔｐｕｔ＿ｂｕｆｆｅｒ＿０＿ｆｕｌｌ（ＯＢＵＦ０＿ＦＵＬＬ）−このフラグはＢＰにより出力バッファ０が満たされることを表わす。前記のフラグはＢＰによりセットされ、そしてＡＲＭ７またはＶＰによりクリアーされる。このようなフラグはインタラプト状態を表わす。
＊ｏｕｔｐｕｔ＿ｂｕｆｆｅｒ＿１＿ｆｕｌｌ（ＯＢＵＦ１＿ＦＵＬＬ）−このフラグは、ＢＰにより出力バッファ１が満たされることを表わす。前記のフラグはＢＰによりセットされ、そしてＡＲＭ７またはＶＰによりクリアーされる。このようなフラグはインタラプト状態を表わす。
＊ＢＰ＿ｐｒｏｃｅｓｓｉｎｇ＿ｄｏｎｅ（ＢＰ＿ＤＯＮＥ）−このフラグは、前記のＢＰがスライスまたはＧＯＢをエンコーディングするかまたはデコーディングする時、スライスまたはＧＯＢでないスタートモードを検出したことを表わす。このフラグはＢＰによりセットされ、そしてＡＲＭ７またはＶＰによりクリアーされる。このようなフラグはインタラプト状態を表わす。
＊ｃｏｎｔｅｘｔ＿ｓｗｉｔｃｈｉｎｇ＿ｄｏｎｅ（ＣＴＸ＿ＳＷ＿ＤＯＮＥ）−このフラグは、ＢＰが文脈スイッチングモードから他の作業に転換されるように準備されていることを表わす。このフラグはＢＰによりセットされ、そしてＡＲＭ７またはＶＰによりクリアーされる。このようなフラグはインタラプト状態を表わす。
＊ｃｏｎｔｅｘｔ＿ｒｅｌｏａｄ＿ｄｏｎｅ（ＣＴＸ＿ＲＥＬＯＡＤ＿ＤＯＮＥ）−このフラグは、ＢＰがアドレスＳＡＶＥ＿ＡＤＲ［３１：０］から貯蔵された文脈のために再ロード動作が完了されたことを表わす。このフラグはＢＰによりセットされ、そしてＡＲＭ７またはＶＰによりクリアーされる。このようなフラグはインタラプト状態を表わす。
【０１６０】
＊ＢＰ＿ｅｒｒｏｒ＿ｆｌｇ（ＢＰ＿ＥＲＲ）−このフラグは、エラーがデータを処理する間にＢＰで発生されることを表わす。このフラグはＢＰ＿ＥＲＲ＿ＣＯＤＥ［７：０］（ＢＰ＿ＳＴＡＴＵＳ［３１：２４］がゼロでない場合にセットされる。詳細な内容はサブセット１０．９．２に記述されている。
＊ｉｎｐｕｔ＿ｂｕｆｆｅｒ＿０＿ｆｕｌｌ（ＩＢＵＦ０＿ＦＵＬＬ）−このフラグは、入力バッファ０にあるデータが、ＡＲＭ７またはＶＰにより満たされることを表わす。このフラグはＡＲＭ７またはＶＰによりセットされ、ＢＰによりクリアーされる。
＊ｉｎｐｕｔ＿ｂｕｆｆｅｒ＿１＿ｆｕｌｌ（ＩＢＵＦ１＿ＦＵＬＬ）−このフラグは、入力バッファ１にあるデータが、ＡＲＭ７またはＶＰにより満たされることを表わす。このフラグはＡＲＭ７またはＶＰによりセットされ、ＢＰによりクリアーされる。
＊ｏｕｔｐｕｔ＿ｂｕｆｆｅｒ＿０＿ｄｏｎｅ（ＯＢＵＦ０＿ＤＯＮＥ）−このフラグは、入力バッファ０にあるデータが、ＡＲＭ７またはＶＰにより全部使用されたことを表わす。このフラグはＡＲＭ７またはＶＰによりセットされ、ＢＰによりクリアーされる。
＊ｏｕｔｐｕｔ＿ｂｕｆｆｅｒ＿１＿ｄｏｎｅ（ＯＢＵＦ１＿ＤＯＮＥ）−このフラグは、入力バッファ１にあるデータが、ＡＲＭ７またはＶＰにより全部使用されたことを表わす。このフラグはＡＲＭ７またはＶＰによりセットされ、ＢＰによりクリアーされる。
＊ｖａｌｉｄ＿ｂｉｔ＿ｐｏｓｉｔｉｏｎ（ＶＡＬＩＤ＿ＢＩＴ＿ＰＯＳ［２：０］）−次の過程のために、ＶＡＬＩＤ＿ＢＹＴＥ＿ＡＤＲ［３１：０］に貯蔵されている３ビット情報は、データバイトの中の有効なビット位置を表わす。ビデオエンコーディングで、ＢＰは値を設定すべきであり、ＡＲＭ７はこのビット位置から次の過程を遂行しなければならない。ビデオデコーディングで、ＡＲＭ７は値を設定すべきであり、ＢＰはこのようなビット位置からプロセッシングを遂行しなければならない。
＊ＢＰ＿ｅｒｒｏｒ＿ｃｏｄｅ（ＢＰ＿ＥＲＲ＿ＣＯＤＥ［７：０］）−８ビット情報は、ＢＰからどのようなエラーが発生したかを表わす。ゼロ値は、何等のエラーも発生しなかったことを表わす。詳細な内容はサブセクション１０．９．２で記述している。
【０１６１】
１０．８．４ デコーディングするための入力データフォーマットとエンコーディングするための出力データフォーマット
このような場合、データは実質的に圧縮されたビットストリームからなっている。このようなデータは初期コード、ヘッダーパラメータ及び、これに対応される標準によって圧縮されたデータを含まなければならない。このようなビットストリームはバイト単位別にパケットされるが、しかし、或る動作ではバイトを割当てる必要がない。このようなビットストリームは多様なスライスまたはＧＯＢのためのデータを含む。
１０．８．５ エンコーディングするための入力データフォーマットとデコーディングのための出力データフォーマット
このような場合、データは実質的にマクロブロックヘッダ情報、モーションデータ及び画素係数データからなっている。このような種類のデータ用フォーマットは、次のように定義される。
１０．８．５．１ マクロブロックヘッダワード
マクロブロックヘッダは常に６バイトからなっており、テーブル３３に与えられた下記のデータフォーマットを有している。
【０１６２】
マクロブロックヘッドワードフォーマット
【表５０】
0004290775.tif 000063
【０１６３】
ここにおいて、前記のテーブルに示したパラメータは下記に定義される。
＊ｖｅｒｔｉｃａｌ＿ｍａｃｒｏｂｌｏｃｋ＿ａｄｄｒｅｓｓ（ＶＭＡ）またはｇｒｏｕｐ＿ｎｕｍｂｅｒ（ＧＲＮＯ）−このようなバイトは、１から２５５までの値を有する垂直マクロブロックの位置を表わす。第１垂直位置は、０でなく１に記載されている。例外的な場合、Ｈ．２６１エンコーディング時、このようなフィールドはブロックグループの位置を表わすｇｒｏｕｐ＿ｎｕｍｂｅｒ情報を表わす。
＊ｈｏｒｉｚｏｎｔａｌ＿ｍａｃｒｏｂｌｏｃｋ＿ａｄｄｒｅｓｓ（ＨＭＡ）またはｍａｃｒｏｂｌｏｃｋ＿ｐｏｓｉｔｉｏｎ（ＭＢＰＳ）−このようなフィールドは、１から２５５までの値を有する水平マクロブロックの位置を表わす。第１水平位置は、０でない１に記載されている。例外的な場合、Ｈ．２６１エンコーディング時、このようなフィールドはＧＯＢの中でマクロブロックの３３可能性のある位置の中のいずれか１つを表わす。
＊ｍａｃｒｏｂｌｏｃｋ＿ｉｎｔｒａ（Ｉ）−もし、現在のマクロブロックが映像間符号化されると１にセットされ、そうでない場合は０にセットされる。＊ｍａｃｒｏｂｌｏｃｋ＿ｐａｔｔｅｒｎ（Ｐ）−もし、現在のマクロブロックが符号化されたブロックを含むと１にセットされ、そうでない場合は０にセットされる。
＊ｍａｃｒｏｂｌｏｃｋ＿ｑｕａｎｔ（Ｑ）−もし、現在のマクロブロックが新しい量子尺度パラメータを有していると１にセットされ、そうでない場合は０にセットされる。
＊ｍａｃｒｏｂｌｏｃｋ＿ｍｏｔｉｏｎ＿ｆｏｒｗａｒｄ（ＭＦ）−もし、現在のマクロブロックが順方向予測であれば１にセットされ、そうでない場合は０にセットされる。
＊ｍａｃｒｏｂｌｏｃｋ＿ｍｏｔｉｏｎ＿ｂａｃｋｗａｒｄ（ＭＢ）−もし、現在のマクロブロックが逆方向予測またはＨ．２６３でＢ−ｂｌｏｃｋｓを含むと１にセットされ、そうでない場合は０にセットされる。
＊ｄｃｔ＿ｔｙｐｅ（ＤＴ）、ｌｏｏｐ＿ｆｉｌｔｅｒ（ＬＦ）またはａｄｖａｎｃｅｄ＿ｐｒｅｄｉｃｔｉｏｎ（Ｍ４）−バイト２のビット［５］は、それぞれの動作で異なる意味を有する。ＭＰＥＧ−１ではこれは使用されない。ＭＰＥＧ−２ではｄｃｔ＿ｔｙｐｅを意味する。もし、マクロブロックがフィールドＤＣＴコーディングされた場合は、このフラグは１にセットされる。もし、フレームＤＣＴコーディングされた場合は、０にセットされなければならない。Ｈ．２６１でこのフラグはもし、ループフィルターが現在のマクロブロックで使用された場合はセットされる。そうでなければ０にセットされる。Ｈ．２６３で、もし現在のマクロブロックが改良予測モードを使用した場合は１にセットされ、そうでない場合は０にセットされる。
＊ｍｏｔｉｏｎ＿ｔｙｐｅ（ＭＴ）−２ビットフィールドは、表５６及び表５７で意味する、ＭＰＥＧ−２で使用されたｆｒａｍｅ＿ｍｏｔｉｏｎ＿ｔｙｐｅまたはｆｉｅｌｄ＿ｍｏｔｉｏｎ＿ｔｙｐｅを表わす。
【０１６４】
【表５１】
ｆｒａｍｅ＿ｍｏｔｉｏｎ＿ｔｙｐｅの意味
0004290775.tif 000064
【０１６５】
【表５２】
ｆｉｅｌｄ＿ｍｏｔｉｏｎ＿ｔｙｐｅの意味
0004290775.tif 000065
【０１６６】
＊ｑｕａｎｔｉｚｅｒ＿ｓｃａｌｅ（Ｑ＿ＳＣＡＬＥ）−ＤＣＴ係数レベルの再現レベルをスケーリングするために、範囲１から３１まで表示されない整数である。すべてのマクロブロックヘッダは、たとえその値がその以前のマクロブロック（すなわち、ｍａｃｒｏｂｌｏｃｋｓ＿ｑｕａｎｔはゼロである。）値と同一であるとしても、このようなパラメータに適当な値を含まなければならない。エンコーディングで、使用者はこのようなフィールドに適当な値をライトさせる責任がある。デコーディング時、ＢＰはこのフィールドにハフマンデコードされたｑｕａｎｔｉｚｅｒ  ｓｃａｌｅ値を書き込まなければならない。もし、現在のマクロブロックがこのフィールドにハフマンコードを含まなければ、ＢＰはその以前のマクロブロックのスケール値を書かなければならない。
＊ｃｏｄｅｄ＿ｂｌｏｃｋ＿ｐａｔｔｅｒｎ＿０（ＣＢＰ＿０）−６ビットコードは、現在のマクロブロックで符号化されたブロックを表わす。
ここにおいて、
ＣＢＰ＿０［５］＝＝＞輝度（Ｙ）０ブロック
ＣＢＰ＿０［４］＝＝＞輝度（Ｙ）１ブロック
ＣＢＰ＿０［３］＝＝＞輝度（Ｙ）２ブロック
ＣＢＰ＿０［２］＝＝＞輝度（Ｙ）３ブロック
ＣＢＰ＿０［１］＝＝＞色相ブルー（Ｃｂ）ブロック
ＣＢＰ＿０［０］＝＝＞色相レッド（Ｃｒ）ブロック
＊ｃｏｄｅｄ＿ｂｌｏｃｋ＿ｐａｔｔｅｒｎ＿１（ＣＢＰ＿１）−Ｈ．２６３でＰＢフレームのＢ−ｂｌｏｃｋｓのための追加的なｃｏｄｅｄ＿ｂｌｏｃｋｓ＿ｐａｔｔｅｒｎである。ここで、
ＣＢＰ＿１［５］＝＝＞輝度（Ｙ）０ブロック
ＣＢＰ＿１［４］＝＝＞輝度（Ｙ）１ブロック
ＣＢＰ＿１［３］＝＝＞輝度（Ｙ）２ブロック
ＣＢＰ＿１［２］＝＝＞輝度（Ｙ）３ブロック
ＣＢＰ＿１［１］＝＝＞色相ブルー（Ｃｂ）ブロック
ＣＢＰ＿１［０］＝＝＞色相レッド（Ｃｒ）ブロック
＊ｌｏｇｉｃａｌ＿ｃｈａｎｎｅｌ＿ｉｎｄｉｃａｔｏｒ（ＬＣＩ）−ＧＯＢ論理的なチャンネルのための２ビット情報は、ただＨ．２６３で連続的なマルチポイントのみで使用される。
＊ｆｒａｍｅ＿ｉｄ（ＦＩＤ）−Ｈ．２６３用のＧＯＢフレームＩＤの２ビット情報
＊ｍａｃｒｏｂｌｏｃｋ＿ａｄｄｒｅｓｓ＿ｉｎｄｉｃａｔｏｒ（ＭＢＡ＿ＩＮＣ）−現在のマクロブロックアドレスが増加する値を表わすために２バイト情報を表わす。この情報は、常に追加的な情報としてＢＰにより提供され、使用者は入力フォーマットに設定する必要がない。そして、入力マクロブロックヘッダーワードで規定したいずれの値は、ＢＰにより無視される。
＊ｐｒｅｖｉｏｕｓ＿ｄｃ＿ｌｕｍｉｎａｎｃｅ（ＰＲＥ＿ＤＣ＿Ｙ）−以前のマクロブロックで輝度ブロックのｄｃ値のための２バイト情報である。もし、マクロブロックがスキップされると、リセット値が伝送される。この情報は、常に追加的な情報としてＢＰにより提供され、使用者は入力フォーマットに設定する必要がない。そして、入力マクロブロックヘッダワードで規定したいずれの値は、ＢＰにより無視される。
＊ｐｒｅｖｉｏｕｓ＿ｄｃ＿ｃｈｒｏｍｉｎａｎｃｅ＿ｂｌｕｅ（ＰＲＥ＿ＤＣ＿Ｃｂ）−以前のマクロブロックでブルー色彩ブロックのｄｃ値のための２バイト情報である。もし、マクロブロックがスキップされると、リセット値が伝送される。この情報は、常に追加的な情報としてＢＰにより提供され、使用者は入力フォーマットを設定する必要がない。そして、入力マクロブロックヘッダワードで規定したいずれの値は、ＢＰにより無視される。
＊ｐｒｅｖｉｏｕｓ＿ｄｃ＿ｃｈｒｏｍｉｎａｎｃｅ＿ｒｅｄ（ＰＲＥ＿ＤＣ＿Ｃｒ）−以前のマクロブロックでレッド色彩ブロックのｄｃ値のための２バイト情報である。もし、マクロブロックがスキップされると、リセット値が伝送される。この情報は、常に追加的な情報としてＢＰにより提供され、使用者は入力フォーマットに設定する必要がない。そして、入力マクロブロックヘッダワードで規定したいずれの値は、ＢＰにより無視される。
【０１６７】
１０．８．５．２ モーションデータワード
各マクロブロックヘッダはもし、マクロブロックがモーションベクトルを含むと、追加的なヘッダワードを持たなければならず、まずＭＰＥＧ−１及びＭＰＥＧ−２の場合を考える。このような標準は、下記の過程の中のいずれか１つが発生する時、モーションベクトルのための表５９に図示された、追加的なヘッダワードフォーマットを持つようになる。
条件１）ＭＦ＝１または（Ｉ＝１及びＣＭＶ＝１）の時、
条件２）ＭＢ＝１の時、
【０１６８】
ＭＰＥＧ−１及びＭＰＥＧ−２のための一般的なモーションベクトルデータフォーマット
【表５３】
0004290775.tif 000066
【０１６９】
表５３で、すべての要素値は、半画素精密度となる。前記のＦＳ０、ＦＳ１、ＦＳ２及びＦＳ３は、各モーションベクトルでフィールド選択を確認するための１ビットフラグである。もし、いずれのフィールドも選択されなければ、前記のフラグは０にセットされなければならない。その理由は、ＭＰＥＧ−１はフィールド選択情報を使用しないので、このようなフラグは０にセットされる。
１つの例外的な場合は、デュアルプライムモーションベクトルのＭＰＥＧ−２エンコーディグで発生する。このような場合、順方向モーションベクトルは、１６バイト（実質的に８バイトが使用される）から構成され、フォーマットはテーブル３７のようになる。正常的に、ＢＰはビデオエンコーディング応用で、モーションベクトル値を差動値に変換する。しかし、テーブル３７のモーションベクトル成分は、ハフマンエンコーダーですぐその入力となる差動値である。デュアルプライムモーションベクトルは、ＭＰＥＧ−２デコーディング応用の場合、ＢＰにより動作される。
【０１７０】
【表５４】
ＭＰＥＧ−２エンコーディング用デュアルプライムモードでモーションベクトルデータフォーマット
0004290775.tif 000067
【０１７１】
前記のＨ．２６１及びＨ．２６３は、多少異なるモーションベクトルデータフォーマットを有する。大部の場合に、一バイトで或るモーションベクトル成分値を充分に表わすことができる。ＭＦ及びＭ４フラグの内容によって、対応されるモーション補償マクロブロックは、少なくとも２個であり、そして、多い場合１０個のモーションベクトル成分を有する。前記のモーションベクトルデータのデータフォーマットは、表６０に示されている。
【０１７２】
Ｈ．２６１及びＨ．２６３のためのモーションベクトルデータフォーマット
【表５５】
0004290775.tif 000068
【０１７３】
１０．８．５．３ ピクセル係数データワード
４個のビデオ圧縮標準は、量子化レベルのために、相異なる最大ピクセルビットの長さを有する。このような比較は下記の表に示されている。
【０１７４】
【表５６】
入出力ピクセルビット分解能
0004290775.tif 000069
【０１７５】
従って、ＭＰＥＧ及びビデオ画像会議標準用のピクセルデータフォーマットは、表５６のとおりその差異がある。
【０１７６】
ピクセル係数データフォーマット
【表５７】
0004290775.tif 000070
【０１７７】
１０．９ インタラプト条件
ＢＰはもし、このセクションで記述されたインタラプト条件に適合すると、ＡＲＭ７＿ＩＲＱフラグを確認しＡＲＭ７をインタラプトする。前記のＢＰは、２個のインタラプト条件のセットすなわち、省略時及びエラー条件を有している。このような条件は、ＢＰ＿ＳＴＡＴＵＳ［１５：０］に貯蔵されている。もし、いずれか１つのビットがＢＰによりセットされると、ＡＲＭ７＿ＩＲＱ信号を活性化させる。このような条件は、ＢＰ＿ＩＮＴ＿ＭＡＳＫ［１５：０］レジスタの対応するビットをセッティングさせることによって、そのすべてをマスクすることができる。
【０１７８】
１０．９．１  省略時インタラプト条件
＊Ｄｅｆａｕｌｔ  ｃｏｎｄｉｔｉｏｎ  ０（ＢＰ＿ＳＴＡＴＵＳ［０］）−入力バッファ０の処理を終了した時、前記のＢＰがＩＢＵＦ０＿ＤＯＮＥフラグもセッティングさせるＡＲＭ７＿ＩＲＱを確認しなければならない。
＊Ｄｅｆａｕｌｔ  ｃｏｎｄｉｔｉｏｎ  １（ＢＰ＿ＳＴＡＴＵＳ［１］）−入力バッファ１の処理を終了した時、前記のＢＰがＩＢＵＦ１＿ＤＯＮＥフラグもセッティングさせるＡＲＭ７＿ＩＲＱを確認しなければならない。
＊Ｄｅｆａｕｌｔ  ｃｏｎｄｉｔｉｏｎ  ２（ＢＰ＿ＳＴＡＴＵＳ［２］）−入力バッファ０の処理を終了した時、前記のＢＰがＯＢＵＦ０＿ＤＯＮＥフラグもセッティングさせるＡＲＭ７＿ＩＲＱを確認しなければならない。
＊Ｄｅｆａｕｌｔ  ｃｏｎｄｉｔｉｏｎ  ３（ＢＰ＿ＳＴＡＴＵＳ［３］）−入力バッファ１の処理を終了した時、前記のＢＰがＯＢＵＦ１＿ＤＯＮＥフラグをセッティングさせるＡＲＭ７＿ＩＲＱを確認しなければならない。
＊Ｄｅｆａｕｌｔ  ｃｏｎｄｉｔｉｏｎ  ４（ＢＰ＿ＳＴＡＴＵＳ［４］）−ビデオエンコーディングの場合、ＡＲＭ７により設計されたスライスまたはＧＯＢを終える時、またはビデオデコーディングの場合、スライスまたはＧＯＢでなく初期コードに到着した時、また前記のＢＰはＢＰ＿ＤＯＮＥフラグをセッティングするＡＲＭ７＿ＩＲＱを確認しなければならない。
＊Ｄｅｆａｕｌｔ  ｃｏｎｄｉｔｉｏｎ  ５（ＢＰ＿ＳＴＡＴＵＳ［５］）−先占文脈スイッチングモードで文脈貯蔵動作を終了した時、または協力文脈スイッチングモードで、現在のスライスまたはＧＯＢを終了した時、前記のＢＰはＣＴＸ＿ＳＷ＿ＤＯＮＥフラグをセッティングするＡＲＭ７＿ＩＲＱを確認しなければならない。
＊Ｄｅｆａｕｌｔ  ｃｏｎｄｉｔｉｏｎ  ６（ＢＰ＿ＳＴＡＴＵＳ［６］）−文脈再ロードが終わった時、前記のＢＰは、ＣＴＸ＿ＲＥＬＯＡＤ＿ＤＯＮＥフラグをセッティングするＡＲＭ７＿ＩＲＱを確認しなければならない。
＊Ｄｅｆａｕｌｔ  ｃｏｎｄｉｔｉｏｎ  ７（ＢＰ＿ＳＴＡＴＵＳ［７］）−現在、ＢＰ＿ＳＴＡＴＵＳ［７］が維持される。従って、このようなビットは“０”にセットされるべきである。正常的に、このような省略時インタラプト条件は、ＢＰ＿ＩＮＴ＿ＭＡＳＫ［７：０］を使用しマスクされるように勧告はしない。しかし、或る動作では、使用者がＤｅｆａｕｌｔ  ｃｏｎｄｉｔｉｏｎ１をマスクすることを願う場合もある。
【０１７９】
１０．９．２ エラーインタラプト条件
もしエラーがＢＰで発生すると、前記のＢＰはＡＲＭ７インタラプトが要求されるように、ＢＰ＿ＥＲＲフラグをセットする。同時に、前記のＢＰは、前記のＢＰ＿ＳＴＡＴＵＳレジスタのＢＰ＿ＥＲＲ＿ＣＯＤＥフィールドでゼロでない値の中から適当なデータをセットする。このような８ビットＢＰ＿ＥＲＲ＿ＣＯＤＥは下記のような意味を有している。
＊ＢＰ＿ＣＯＤＥ＝8'b0000_0000：何等のエラーも発生しない
＊ＢＰ＿ＥＲＲ＿ＣＯＤＥ＝8'b0000_0001：ＢＰ＿ＭＯＤＥレジスタに不適当にセッティングされる
＊ＢＰ＿ＥＲＲ＿ＣＯＤＥ＝8'b0000_0010：不適当に水平マクロブロック位置がセットされる
＊ＢＰ＿ＥＲＲ＿ＣＯＤＥ＝8'b0000_0011：不適当に垂直マクロブロック位置がセットされる
＊ＢＰ＿ＥＲＲ＿ＣＯＤＥ＝8'b0000_0100：マクロブロックアドレス増加に対する不適当したＶＬＣ
＊ＢＰ＿ＥＲＲ＿ＣＯＤＥ＝8'b0000_0101:マクロブロックタイプに対する不適当したＶＬＣ
＊ＢＰ＿ＥＲＲ＿ＣＯＤＥ＝8'b0000_0110:マクロブロックモーションコードに対する不適当したＶＬＣ
＊ＢＰ＿ＥＲＲ＿ＣＯＤＥ＝8'b0000_0111：不適当した取消しモーションベクトルマーカービット
＊ＢＰ＿ＥＲＲ＿ＣＯＤＥ＝8'b0000_1000:符号化されたブロックパターンに対する不適当したＶＬＣ
＊ＢＰ＿ＥＲＲ＿ＣＯＤＥ＝8'b0000_1001：ブロックＤＣＴ  ｄｃサイズに対する不適当したＶＬＣ
＊ＢＰ＿ＥＲＲ＿ＣＯＤＥ＝8'b0000_1010：不適当したＤＣＴ  ｄｃ値
＊ＢＰ＿ＥＲＲ＿ＣＯＤＥ＝8'b0000_1011：ブロックＤＣＴ  ａｃ係数に対する不適当したＶＬＣ
＊ＢＰ＿ＥＲＲ＿ＣＯＤＥ＝8'b0000_1100：１つのマクロブロックでブロックの＃が６４を超過する
＊ＢＰ＿ＥＲＲ＿ＣＯＤＥ＝8'b0000_1101：不適当したｆ＿ＣＯＤＥ値（例えば、値が０）
＊ＢＰ＿ＥＲＲ＿ＣＯＤＥ＝8'b0000_1110：ブロックＤＣＴ  ａｃ係数に対する不適当したＶＬＣ
＊ＢＰ＿ＥＲＲ＿ＣＯＤＥ＝8'b0000_1111：不適当したＩＢＵＦ及びＯＢＵＦアドレス設定
＊ＢＰ＿ＥＲＲ＿ＣＯＤＥ＝8'b0001_0000：ＢＰ入出力バッファ用スタートアドレスの最下位４ビットはゼロでない
他のＢＰ＿ＥＲＲ＿ＣＯＤＥ値は貯蔵される。
【０１８０】
１０．１０ 詳細な機能性要求
１０．１０．１ ＩＯＢＵＳインターフェース
ＢＰとＣＣＵとの間のすべてのデータ移動は、ＩＯＢＵＳを通して遂行される。前記のＩＯＢＵＳは、多重化されたアドレス及びデータを含む３２ビット＠４０ＭＨｚ同期バスである。少なくとも７サイクルは、前記のＩＯＢＵＳを通して１６バイトデータを伝達するように要求されるので、前記ＩＯＢＵＳの最大伝達速度は、９１．４Mbytes/sec(７３１．４Mbits/sec)である。
前記のＢＰは、すべてのＩＯＢＵＳ読出及び書込伝送のためにマスタまたはスレーブとなり得る。前記のＢＰがマスタとして動作する時、ＩＯＢＵＳアービタにリクエスタ信号を送らなければならない。もし、前記のＩＯＢＵＳがなければ、前記のアービタは前記のＢＰに与え、そしてデバイスセレクト信号を送る。前記のＩＯＢＵＳを通したデータの競争は、下記の３個のカテゴリーの中のいずれか１つである。すなわち、２または４このピクセル要素を含んでいる３２ビットピクセルデータと、３２ビット圧縮ビットストリームワードと、エンコーディング及びデコーディング動作のための構文／制御パラメータの中の１つである。ＩＯＢＵＳインターフェースに関するタイミング図のような情報に追加し、使用者は前記のＭＳＰ ＩＯＢＵＳ仕様を検討するよう勧告される。
１０．１０．２ ブロック層プロセッシング
１０．１０．２．１ ジグザグスキャン規定
前記のＢＰは、ＭＰＥＧビデオ標準で提示された２個のジグザグスキャン変換マトリクスを支援する。ＶＰ及びＢＰの間で伝送されるこのような８×８ブロックデータは、すべて６４個の成分を含んでいる。
１０．１０．２．２ ＲＬＣコード
ＲＬＣデコーディングのために、前記のＢＰはＤＣＴ ａｃ係数のハフマンデコード結果によって、ゼロ及びレベルデータを発生する。もし、データが１つの８×８ブロックに生成される前、６４個のピクセルｅｎｄ＿ｏｆ＿ｂｌｏｃｋ信号が検出されると、前記のＲＬＣデコーダーは、残りのゼロデータを作るようになる。ＲＬＣエンコーディングのために、前記のＢＰは隣接したゼロデータをカウントし、次のＮＯＮ−ゼロデータと結合することによって、ラン−長さ及びレベルコードを発生させる。もし、残こっているデータのすべてがゼロに等しい場合、残っているデータのためにＲＬＣを発生するよりは、ｅｎｄ＿ｏｆ＿ｂｌｏｃｋを発生させるとよい。ＲＬＣコードのための動作サイクルは、このように発生されたゼロの数ほど進行される。
【０１８１】
１０．１０．２．３ ハフマンコード
前記のＢＰハフマンコードは、ＭＰＥＧ−１、ＭＰＥＧ−２、Ｈ．２６１及びＨ．２６３ビデオテーブル基準で勧告されたすべてのハフマンテーブルを支援する。全てのロムワードが１２ビットの場合、すべてのテーブルはルックアップテーブルで実行され得る。しかし、単純であるかまたは非常に複雑なものを有する或るハフマンテーブルは、ハードワイヤード(hardwired)ロジックを使用して具現され得る。前記のルックアップテーブルロムを使用して具現する前記のデコーダーテーブルは、表に要約されている。
【０１８２】
【表５８】
ハフマンデコーダールックアップテーブルのために要求されるロムサイズ
0004290775.tif 000071
【０１８３】
前記のエンコーダーテーブルは、前記のデコーダーテーブルより更に大きいロムサイズを要求する内容が、表に要約されている。
【０１８４】
【表５９】
ハフマンエンコーダールックアップテーブルのために要求されるロムサイズ
0004290775.tif 000072
【０１８５】
表から、ハフマンエンコーダ及びデコーダのために全体的に要求されるロムのサイズは、７６８×１２ビットである。前記のテーブルは、スタッフコード、ｅｓｃａｐｅ＿ｃｏｄｅ、ＤＣＴ係数のサインビット及び、ステートマシンにより操作されるｅｎｄ＿ｏｆ＿ｂｌｏｃｋコードを含んでいない。    前記それぞれのハフマンコードのための動作サイクルは、表に記述されている。
【０１８６】
【表６０】
ハフマンコード用処理サイクル
0004290775.tif 000073
【０１８７】
最後に、ＪＰＥＧデコードテーブルは、前記のような接近過程を用いると、具現され得ないことを表わす。しかし、ｄｃ＿ｃｏｅｆｆ＿ｎｅｘｔ＿０テーブルでは、ＪＰＥＧエンコーディング応用が使用され得る。
１０．１０．２．４ 差動ｄｃ値
イントラーブロックの場合、前記のＢＰはまた、８×８ブロックデータの第１番目要素の差動ｄｃ係数を計算し、そして既に伝送された差動ｄｃ係数でｄｃ値を再現する。
１０．１０．２．５ 非コード化されたブロック
前記のＢＰは、コード化されないブロックを支援しない。前記のＶＰ及びＡＲＭ７は、非符号化されたブロックを遂行する。前記のＶＰ及びＡＲＭ７がこのようなブロックを処理するように、前記のＢＰはマクロブロックヘッダのワードに表れているｃｏｄｅｄ＿ｂｌｏｃｋ＿ｐａｔｔｅｒｎで、非コード化されたブロックを表わす。
１０．１０．２．６ ブロック伝送順序
エンコーディング及びデコーティングのために伝送された１つのマクロブロックで、ブロックの順序は下記のとおりである：輝度（Ｙ）ブロック０、１、２及び３、色相ブルー(Cb)及び色相レッド(Cr)ブロックである。
１０．１０．３ マクロブロック層処理
１０．１０．３．１ 差動モーションベクトル
前記のＢＰは、前記のモーション推定結果から差動モーションベクトルを計算し、次の場合を除いては伝送された差動モーションベクトルを有してモーションベクトルを再現する。
＊第１場合は、ＭＰＥＧ−２ビデオエンコーディングの場合のデュアルプライムモードである。この場合で、前記のＢＰに伝送されたモーションベクトルは、ベクトル‘［０］［０］［１：０］’であり、ベクトル‘［ｒ］［０］［１：０］
ではない（ＭＰＥＧ−２ビデオ標準の７．６．３．６節参照）。
＊第２の場合は、Ｈ．２６３の改良予測モードである。この場合、４個のモーションベクトル及び、このような値が差動値として前記のＢＰから／に伝送されなければならない。
１０．１０．３．２ スキップされたマクロブロック
前記のＢＰは、スキップされたマクロブロックを支援しない。前記のＶＰ及びＡＲＭ７は、このようにスキップされたマクロブロックを処理する。前記のようにスキップされたマクロブロックを処理するための前記のＶＰ及びＡＲＭ７で、前記のＢＰは、前記マクロブロックのヘッダワードに水平及び垂直マクロブロックアドレスを書き込む。
１０．１０．３．３ マクロブロックスタッフコード
ＭＰＥＧ−１で、一サイクルでマクロブロックスタッフコードがもし生ずると、前記のＢＰはこれを捨てなければならない。しかし、ＭＥＰＧ−１エンコーディングで、ＢＰは使用者がマクロブロック層ヘッダ内のマクロブロックスタッフコードを含まないようにする。一般的に、このようなスターピングコードは、出力ビデオレートバッファを制御することに使用される。従って、マクロブロックスタッフコードを挿入する代わりに、スタートコードの間にゼロスタッフビットを挿入するように勧告する。
ＭＰＥＧ−１及びＭＰＥＧ−２の応用のために、ビットストリーム出力はスライス層までバイト−アラインメントされなければならない。たとえビットストリーム出力が画像層までバイト−アラインメントされてもＨ．２６３応用のためには、ＧＯＢ層までバイト−アラインメントさせる。しかし、Ｈ．２６１エンコーダーの出力はバイト−アラインメントされない。従って、ＡＲＭ７でルーチンを形成するビットストリームは、このような差異を考えてプログラムされる。ＩＯＢＵＳを通した最後のデータ伝送のためのデータ量が、エンコーディングの場合１６ビット以下の場合、ＢＰはスライスのエンドにゼロを満たす動作(zero-fill)を自動的に遂行する。
【０１８８】
１０．１０．４．２ エキストラスライス情報
デコーディングにおいて、ＢＰはＭＰＥＧ−１またはＭＰＥＧ−２ビットストリームのスライスヘッダに含まれる、任意のエキストラスライス情報を捨てる。エンコーディングにおいて、ＢＰは使用者により要請された任意のエキストラスライス情報を挿入させない。もし、使用者がまだＭＰＥＧ−１またはＭＰＥＧ−２ビットストリームにこの情報を含ませようとする場合は、ＢＰにより予めエンコーディングされたビットストリームにこの情報を挿入すればよい。
１０．１０．４．３ イントラースライス
ＭＰＥＧ−２スライス層ビットストリームにおいて、intra_sliceというパラメータは、現在スライスがイントラーマクロブロックのみで構成されたことを表わすことに使用される。この情報は、デコーディング過程では使用されず、高速前進または高速後進機能を遂行する場合、ＤＳＭ応用を助けるためのものである。従って、ＢＰはデコーディング応用の場合この情報を捨て、エンコーディング応用の場合、スライス層ヘッダにあるｉｎｔｒａ＿ｓｌｉｃｅに０を挿入する。
１０．１０．４．４ スライスまたはＧＯＢスタートコード
ＭＰＥＧ−１、ＭＰＥＧ−２、Ｈ．２６１において、すべてのピクチャーは少なくとも１つのスライスまたはＧＯＢスタートコードを有する。しかし、Ｈ．２６３ピクチャーは、ＧＯＢスタートコードとヘッダ情報を有しない。特に、任意のＨ．２６３ピクチャーで第１番目のＧＯＢは、スタートコードとヘッダ情報を有しない。従って、入力されるビットストリームがＨ．２６３のためのものである場合、ＢＰ状態マシンは、マクロブロック層を直ちに処理しなければならない。それだけでなく、ビットストリームがデコーディングされる間、ＧＯＢスタートコードが発見されると、ＢＰはスタートコードをデコーディングし、ＡＲＭ７をインタラプトせず処理過程を続いて遂行する。
【０１８９】
１０．１１ 入力／出力ダブルバッファインターフェース
１０．１１．１ 一般的な説明
入力及び出力バッファは、ダブルバッファにより具現される。従って図６４と図６５の図示のとおり、ＩＢＵＦ０、ＩＢＵＦ１、ＯＢＵＦ０、ＯＢＵＦ１の４個のメモリバッファを使用するようになる。
図６４よ図６５でのように、それぞれのバッファはスタート及び終了アドレスと充満及び完了フラグを有する。各バッファサイズを決定するために、使用者は各バッファに対するスタート及び終了アドレスに適切な値を記入しなければならない。
一応、バッファ用ソースプロセッサは、バッファに対する記入を完了すると、充満フラグを設定し、他のバンクに対する記入を開始する。バンク用シンクプロセッサはアクセスされるバンクが全部満たされていることが分かると、データを読み出す。バンクが空いていると、シンクは完了フラグを設定し、他のバンクの充満フラグをチェックする。
４個のスタートアドレスは、小節１０．７．２の説明のとおり、ＢＰによりアップデートされる。スタートアドレスのためのそれぞれのレジスタは、ＢＰが入力または出力バッファをアクセスする都度に、ＢＰによりアクセスされる最後のバイトアドレスを貯蔵する。従って、ＡＲＭ７はＩＢＵＦ０＿ＤＯＮＥ、ＩＢＵＦ１＿ＤＯＮＥ、ＯＢＵＦ０＿ＦＵＬＬ、ＯＢＵＦ１＿ＦＵＬＬのフラグの中のいずれか１つが設定されると、該当スタートアドレスを設定する。
また、スタートアドレスの最後の４ビットは常にＡＲＭ７によりゼロに設定される。その理由はＦＢＵＳ、ＣＣＵとＩＯＢＵＳとの間の内部データ割り当て構造のためである。また、各バッファサイズの全体バイト数が１６の倍数となるように、それぞれの最後アドレスを設定しなければならない。それだけでなく、最小バッファサイズは、ＭＰＥＧ−１とＭＰＥＧ−２に対して６４バイト、Ｈ．２６１とＨ．２６３に対して１２８バイトであることが勧告される。これはＡＲＭ７に対するＢＰの頻繁なインタラプトによる、性能の劣化を防止するためのことである。
【０１９０】
１０．１１．２ 非正常的なバッファステータスの処理
２個の出力バッファが満たされると、ＢＰは処理を中止させ、入力ダブルバッファステータスに関係なく、アイドル状態に落ちる。ＯＢＵＦ０＿ＤＯＮＥまたはＯＢＵＦ１＿ＤＯＮＥフラグが設定されると、ＢＰは自動的にこのアイドル状態から抜け出る。
２個の入力バッファが空くと、ＢＰは処理を中止する必要がなく、内部に残っているデータの処理が完了されるまで処理し続ける。しかし、２個の入力バッファが空くと、ＢＰはすぐＡＲＭ７をインタラプトする。残っているデータ処理の終了以降、入力バッファがまだ空いていると、ＢＰはアイドル状態に落ちる。ＩＢＵＦ０＿ＦＵＬＬまたはＩＢＵＦ１＿ＦＵＬＬフラグが設定されると、更にＢＰは自動的にこの状態から抜け出る。
この小節で記述するアイドル状態は、この仕様書で記述した他のアイドル状態とは異なる。その理由は、他のアイドル状態から抜け出るためには、通常ＡＲＭ７の制御コマンドを必要とするからである。
【０１９１】
１０．１１．３ Ｉ／Ｏバッファの物理的な具現：例
大抵、ＢＰ入力及び出力バッファの位置とサイズを決定することは、使用者の分である。使用者はＶＰデータキャッシュ、ＡＲＭ７データキャッシュまたはＳＤＲＡＭのスクラッチパッド領域でバッファを具現する。ＢＰ入力及び出力ダブルバッファの具現が多少制限的であっても、前記のバッファを具現するための効率的な方法がある。
ここにおいて、ビデオデコーディング応用において、レートバッファの具現に対する特殊な例を挙げる。この場合、使用者はＢＰ入力バッファを循環バッファで具現しようとする。ここで、ＳＤＲＡＭを使用し、完全なレートバッファは図６６の図示のとおり、４個のブロックに分割されるものと仮定する。
初期に、使用者はＲａｔｅ＿Ｂｕｆｆｅｒ＿Ｂｌｏｃｋ＿０とＲａｔｅ＿Ｂｕｆｆｅｒ＿Ｂｌｏｃｋ＿１とをそれぞれＩＢＵＦ０とＩＢＵＦ１に設定することができる。これは下記のように設定することによって可能になる。
ＩＢＵＦ０＿ＳＴＡＲＴ＝Ｒａｔｅ＿Ｂｕｆｆｅｒ＿Ａｄｄｒｅｓｓ＿０；
ＩＢＵＦ０＿ＥＮＤ＝Ｒａｔｅ＿Ｂｕｆｆｅｒ＿Ａｄｄｒｅｓｓ＿１；
ＩＢＵＦ１＿ＳＴＡＲＴ＝Ｒａｔｅ＿Ｂｕｆｆｅｒ＿Ａｄｄｒｅｓｓ＿２；
ＩＢＵＦ１＿ＥＮＤ＝Ｒａｔｅ＿Ｂｕｆｆｅｒ＿Ａｄｄｒｅｓｓ＿３。
ＩＢＵＦ０にあるデータ（すなわち、Ｒａｔｅ＿Ｂｕｆｆｅｒ＿Ｂｌｏｃｋ＿０にあるデータ）のすべてがＢＰにより使用されると、ＢＰはＡＲＭ７をインタラプトする。そうすると、ＡＲＭ７は下記のように設定することによって、Ｒａｔｅ＿Ｂｕｆｆｅｒ＿Ｂｌｏｃｋ＿２をＩＢＵＦ０に設定する。
ＩＢＵＦ０＿ＳＴＡＲＴ＝Ｒａｔｅ＿Ｂｕｆｆｅｒ＿Ａｄｄｒｅｓｓ＿４；
ＩＢＵＦ０＿ＥＮＤ  ＝  Ｒａｔｅ＿Ｂｕｆｆｅｒ＿Ａｄｄｒｅｓｓ＿５。
ＩＢＵＦ１にあるデータのすべてがＢＰにより使用されると、ＢＰはＡＲＭ７をインタラプトする。そうすると、ＡＲＭ７は下記のように設定することによって、Ｒａｔｅ＿Ｂｕｆｆｅｒ＿Ｂｌｏｃｋ＿３をＩＢＵＦ１に設定する。
ＩＢＵＦ１＿ＳＴＡＲＴ＝Ｒａｔｅ＿Ｂｕｆｆｅｒ＿Ａｄｄｒｅｓｓ＿６；
ＩＢＵＦ１＿ＥＮＤ＝Ｒａｔｅ＿Ｂｕｆｆｅｒ＿Ａｄｄｒｅｓｓ＿７。
Ｒａｔｅ＿Ｂｕｆｆｅｒ＿Ｂｌｏｃｋ＿２にあるデータのすべてがＢＰにより使用されると、ＡＲＭ７は第１番目の段階でのようにアドレスを設定することをによって、Ｒａｔｅ＿Ｂｕｆｆｅｒ＿Ｂｌｏｃｋ＿０をＩＢＵＦ０に更に設定する。
従って、循環バッファは単にこのような完全な過程を繰り返すことによって具現され得る。この例は、ＢＰダブルバッファの使用が、使用者の意図によって非常に柔軟であることを表している。
【０１９２】
１０．１２ 文脈スイッチング
１つ以上の応用がＭＳＰを駆動させる場合、ＡＲＭ７動作システムは、ＢＰが現在作業を終結させ、他の作業に切り換えられるように命令する。この過程は、通常に“文脈スイッチング”という。ＢＰは下記の２種類の文脈スイッチングモードを支援する。
１０．１２．１ 先占(preemptive)文脈スイッチング
先占文脈スイッチングは、ＢＰが現在８×８画素ブロック処理を遂行してから正常的な処理が終了したことを意味する。ＡＲＭ７はＢＰ＿ＣＯＮＴＲＯＬ［６：５］レジスタにあるＣＴＸ＿ＳＷＩＴＣＨとＣＴＸ＿ＭＯＤＥフラグを“１１”に設定することによって、先占文脈スイッチングモードを命令する。現在ブロック処理が完了されると、ＢＰは後の処理のために、内部文脈を外部ＳＤＲＡＭに送る。
ＢＰは文脈貯蔵を完了すると、ＢＰ＿ＳＴＡＴＵＳ［５］に位置したＣＴＸ＿ＳＷ＿ＤＯＮＥフラグを設定することによって、ＡＲＭ７をインタラプトする。そうすると、ＡＲＭ７はＢＰの入出力バッファのすべての内容を貯蔵し、他の作業のためにＢＰを初期化させる。
このモードは、ＢＰがＡＲＭ７の文脈スイッチングリクエストをできるだけ速く応答するようにする。最悪の場合、ＢＰは現在ブロック処理を完了するために、約１５０サイクル（＝3.75μsec)を必要とする。しかし、正常的な場合、ブロック処理を完了するために数十のサイクルを必要とすると見なすことが好ましい。
【０１９３】
１０．１２．２ 協調型(cooperative)文脈スイッチング
協調型文脈スイッチングによると、ＢＰで文脈貯蔵過程を除去することができる。これはすべてのスライスまたはＧＯＢ層処理時に、ＢＰ内部の状態のすべてを初期化させなければならないという事実に起因したものである。このモードで、ＢＰは現在スライスまたはＧＯＢを続いて正常的に処理してから処理を完結させる。
ＡＲＭ７はＢＰ＿ＣＯＮＴＲＯＬ［６：５］レジスタにあるＣＴＸ＿ＳＷＩＴＣＨとＣＴＸ＿ＭＯＤＥフラグを“１０”に設定することによって、協調型文脈スイッチングモードを命令する。現在スライスまたはＧＯＢ処理が完了されると、ＢＰはＢＰ＿ＳＴＡＴＵＳ［５］に位置したＣＴＸ＿ＳＷ＿ＤＯＮＥフラグを設定することによってＡＲＭ７をインタラプトする。そうすると、ＡＲＭ７はＢＰの入出力バッファのすべての内容を貯蔵し、他の作業のためにＢＰを初期化させる。
【０１９４】
１０．１２．３ 文脈再ロード
その以前の作業を切換するために、ＢＰはアドレスＳＡＶＥ＿ＡＤＲ［３１：０］からＳＤＲＡＭに貯蔵される文脈を再ロードする。この文脈再ロードを要請するために、ＢＰがアイドル状態にある必要がある。このリクエストのための可能な状況は、ＢＰ＿ＤＯＮＥが設定された場合、ＣＴＸ＿ＤＯＮＥまたはＡＲＭ７がソフトウェアでＢＰをリセットさせた場合である。それで、ＡＲＭ７がＢＰ＿ＣＯＮＴＲＯＬ［７］にあるＣＴＸ＿ＲＥＬＯＡＤフラグを設定すると、ＢＰはアイドル状態から抜け出て、貯蔵された文脈を読み出し始める。
ＢＰは文脈再ロード動作を完了してから、ＣＴＸ＿ＲＥＬＯＡＤ＿ＤＯＮＥフラグを設定してＡＲＭ７をインタラプトする。そうすると、ＡＲＭ７はＢＰの内部レジスタを初期化させ、以前の作業処理のためにＢＰをイネーブルさせる。
１０．１３ 作業ハンドシェーキング
この節は、ＢＰが処理を終えた場合、作業ハンドシェークのための細部的な過程を取扱う。ここにおいて、“最後のデータのためのポインターのアップデート”とは、ＢＰがＶＡＬＩＤ＿ＢＹＴＥ＿ＡＤＲ［３１：０］とＶＡＬＩＤ＿ＢＩＴ＿ＰＯＳ［２：０］にそれぞれ適切な値を記入したことを意味する。
【０１９５】
１０．１３．１ エンコーディングの場合
正常状態で、エンコーディングのための入力データは、ＶＰから供給される。入力ダブルバッファの中の１つがＶＰにより満たされると、ＢＰはＩＯＢＵＳを通してデータの読出を開始する。処理が終了される時点（すなわち、処理されたマクロブロック数が、ＡＲＭ７により指定されたマクロブロック数と同一な場合）で、ＢＰはＢＰ＿ＤＯＮＥフラグを設定してＡＲＭ７をインタラプトし、アイドル状態に落ちる。
有効データのためのポインターは、スライスまたはＧＯＢに対する“圧縮されたビットストリームの最後”を表わす。また、ＶＡＬＩＤ＿ＢＹＴＥ＿ＡＤＲ［３１：０］は、出力ダブルバッファの中のいずれか１つの位置を表わす。
ＡＲＭ７はこの圧縮されたビットストリームと、上位層ヘッダを結合させて最終のビットストリームを形成し、処理過程を繰り返す。出力ダブルバッファにあるデータを完全に焼尽させる前、ＡＲＭ７がＢＰを再開始しようとする場合は、少なくとも１つの出力ダブルバッファを焼尽させ、ＢＰが再開始された時、ポインタはＢＰによりアップデートされるので、最後のデータのためのポインタはそのまま置いておくことによって可能である。
【０１９６】
１０．１３．２  デコーディングの場合
まず、ＡＲＭ７はスライスまたはＧＯＢスタートコード（存在時）を探索する。スタートコードが発見されると、ＡＲＭ７はＢＰを初期化しイネーブルさせる。ＢＰでハフマンデコーディング、ＲＬＣデコーディング及び逆ジグザグスキャン変換を遂行してから、データはＶＰ処理のために出力バッファに伝送される。ＢＰはこの処理ルーチンを非スライスまたは非ＧＯＢスタートコードが検出されるまで続く。これらが検出されると、ＢＰは“非スライスまたは非ＧＯＢスタートコードのエンド”に使用される最後のデータのためにポインタを設定し、ＡＲＭ７をインタラプトする。次に、ＡＲＭ７はスタートコードをデコーディングして、次回のスライスまたはＧＯＢコードが発見されるまで、ヘッダ解釈(parsing)を遂行する。
１０．１３．３ 圧縮されたビットストリームで発見されたエラー
実際のデータが、電話線及び公衆スイッチ網を通して伝送される画像電話応用において、いくつかの無効データが入力されるビットストリームに含まれる可能性が非常に高い。この場合、ＢＰはＡＲＭ７をインタラプトし、ＥＲＲ＿ＨＡＮＤＬＥ＿ＭＯＤＥフラグをチェックしなければならない。もしＢＰが特定の応用のためにイネーブルされる前、使用者がエラー処理モードを決定する場合は、安全である。
ERR_HANDLE_MODEフラグが“１”に設定されると、ＢＰは自動的に次のスタートコードを探し出す。スタートコードがスライスまたはＧＯＢのためのものである場合、ＢＰは正常的な処理を続く。このモードが非常に効率的であるが、その理由はＢＰがＡＲＭ７より更に迅速にスタートコードを探し出すことができ、ＢＰが次のスタートコードを探す間、ＡＲＭ７が他の処理ルーチンを遂行し得るからである。しかし、スライスまたはＧＯＢ層とは異なるスタートコードが発見されると、ＢＰはＢＰ＿ＤＯＮＥフラグを設定してＡＲＭ７を更にインタラプトし、アイドル状態に落ちる。このような場合、最後のデータのために使用されたポインタは、次回のスタートコードのエンドを指示しなければならない。
ＥＲＲ＿ＨＡＮＤＥＬ＿ＭＯＤＥフラグが“０”に設定されると、ＢＰは次回のスタートコードを探せず、アイドル状態に落ちる。このような場合、最後のデータのために使用されるポインタは、エラーは発見された位置を指示しなければならない。このモードは使用者がＡＲＭ７命令語を利用して、汚染されたビットストリームをデバッギングする場合に有用である。
【０１９７】
【実施例２】
付 録 Ｂ
ＭＰＣビットストリーム処理器
ビットストリーム処理器（ＢＰ）は、ビデオデータエンコーディング及びデコーディング応用に重要なＭＳＰ処理コアの中の１つである。ＢＰはＭＰＥＧスライス層エンコーディング及びデコーディング、そしてＨ．２６１／Ｈ．２６３グループブロック（ＧＯＢ）層エンコーディング及びデコーディングを処理する。デコーディング応用において、ＢＰは各マクロブロックに含まれた全体情報を、ベクトル処理器及びＡＲＭ７コアに提供する。
ビットストリーム処理器ハードウェアは、４個の機能ブロックに分けられる。
＊Ｉ／Ｏ制御及びデコーディングユニットを含むＩＯＢＵＳポートインターフェース
＊ＢＰ制御ステートマシン
＊ＢＰレジスタマルチプレクサー、レジスタ、算術論理ユニット(ALU)及びマルチプレクサー、ＦＩＦＯ制御ユニットを含むコーデックコア
＊ＶＬＣ ＦＩＦＯユニット
＊コーデックアドレス発生器と共にルックアップを含むＶＬＣコーデック
ＶＬＣ ＬＵＴ ＲＯＭ（３４０、図３参照）についての説明は下記のとおりである。
１．０ 方法論
ルックアップユニットは、ハフマンエンコーディング及びデコーディングの核心である。このユニットは、ＭＰＥＧ−１、ＭＰＥＧ−２、Ｈ．２６１及びＨ．２６３仕様に含まれたＶＬＣテーブルを支援し、三星ＭＳＰにより支援される。このテーブルの大部分は、１２ビット幅を有するＲＯＭで具現される。しかし、ルックアップ処理があまり単純で、ＲＯＭテーブルのサイズに当たらない場合、特殊なエンコーディング及びデコーディングが適用される。このようなレイヤーの４つの仕様のすべては、多い可変長さコードを１７ビットまで含む。エンコーディング値またデコーディング以外に、コードサイズ及び有効コード指示者が、エンコーディング及びデコーディングのために提供され、正確に処理されるようにする。ＶＬＣテーブルをエンコーディングまたはデコーディングするために従来の方法を使用する場合、ＲＯＭテーブル及びアドレス発生器が更に大きくなる。
【０１９８】
１．１ 具現方法は下記のとおりである：
＊もしアドレス発生器の設計が難しくなければ、ＲＯＭテーブルをできるだけ多く共有する。
＊エンコーディングまたはデコーディングに基づいて、ＶＬＣテーブルを再配列する。
＊ハフマンコードに基づいて‘０’カウントと‘１’カウントをまずデコーディングする。
＊符号または偶数／奇数のような１ビットフラグを使用しテーブルサイズを減らす。
＊可能であれば、１つのＲＯＭ位置を‘上位’と‘下位’に分離する。
＊ＲＯＭテーブルアドレスを発生させるために、ＶＬＣの最下位ビット(LSB)を使用しアドレス発生器を簡素化する。
この方法は非常に効率的である。最終のＲＯＭテーブルサイズは、７６８＊１２ビットで、問題を伴うにはずっと小さい。ルックアップは、ＲＯＭテーブルアドレス発生器と、ＲＯＭテーブルルックアップ処理により遂行される。アドレス発生器はテーブル種類、モード及びＶＬＣ値のような入力信号をデコーディングし、ＲＯＭテーブルのアドレスを発生させる。以降、ＲＯＭテーブル値及び他の情報からエンコーディングまたはデコーディングデータが得られる。デコーディングテーブルは２つのフォーマットを有するが、一つはＶＬＣコード当りのＲＯＭ位置を有するＤＣＴ係数に適用され、もう一つはそれぞれのＲＯＭ位置が上位６ビットと下位６ビットに分割されている他のテーブルに適用される。従って、各位置は２つのＶＬＣコードを有する。エンコーディングテーブルは、２つのフォーマットを有するが、一つはＨ．２６３のＴＣＯＥＦに関するもので、もう一つは他のテーブルに対するものである。各ＲＯＭ位置はエンコーディング応用のために一つのハフマンコードを含む。ＲＯＭテーブルのサイズは７６８×１２ビットである。テーブルは下記のように示すことができる。
【０１９９】
ＶＬＣデコーディングＲＯＭテーブルマップ
【表６１】
0004290775.tif 000074
【０２００】
ＶＬＣエンコーディングＲＯＭテーブルマップ
【表６２】
0004290775.tif 000075
【０２０１】
１．２ デコーディング
デコーディングに対するすべてのテーブルは、‘０’または‘１’カウントに基づいて再配列される。ＶＬＣコードのＭＳＢが‘０’の場合は‘０’カウントが印加され、‘０’でない場合は‘１’カウントが使用される。例えば、コード'00001xxx’の場合４個の‘０’を有し、コード'1110xxx’の場合３個の‘１’カウントを有する。デコーティング過程はまず‘０’／‘１’カウントをデコーディングし、ＶＬＣコードの‘０’／‘１’カウントをＲＯＭテーブルアドレス発生器へ出力する。以降、アドレス発生器は残りのコードをデコーディングしてアドレスを発生させる。アドレスは２個部分けられるが、一つはオフセットで、もう一つはいわゆるマスクされたアドレスであって、ＶＬＣテーブルから得られる。アドレスは２個部分に対する論理和（ＯＲ）から得られる。アドレス発生器により提供される他の情報は、下記の通り示すことができる。
＊ＶＬＣ  ｃｏｄｅ  ｓｉｚｅ
＊Ｓｐｅｃｉａｌ  Ｆｌａｇ：２ビットフラグは、Ｈ．２６１で‘ＥＳＣＡＰＥ’、‘ＥＮＤ  ＯＦ  ＢＬＯＣＫ’、‘ＳＴＵＦＦＩＮＧ’、または‘ＳＴＡＲＴ  ＣＯＤＥ’に対するデコーディングステートマシンを表わす。
＊Ｈｉｇｈ  ｄａｔａ  ｅｘｔｒａｃｔ  ｅｎａｂｌｅ：有効データは上位６ビットである。
＊Ｓｉｇｎ／ｅｖｅｎ  ｅｎａｂｌｅ：このフラグは、デコーディングがＶＬＣのＬＳＢを、テーブルに基づいた符号または偶数ビットで抽出するべきであることを指示する。
＊Ｖａｌｉｄ  ＶＬＣ
＊Ｍａｓｋ  ｓｈｉｆｔ  ｂｉｔｓ  及びｍａｓｋ：この両信号は、マスクされたアドレスを発生させるために印加される。
ＲＯＭテーブルに対して、ＭＰＥＧ−２のテーブル１４、１５とＨ．２６３のテーブル１２を除外しては、それぞれの位置に上位と下位ビットフォーマットから形成されたデータが貯蔵される。
【０２０２】
１．２．１  テーブル１２／ＭＰＥＧ−２
このテーブルはテーブル２−Ｂ．５ｃ／ＭＰＥＧ−１及びテーブル５／Ｈ．２６１と同一である。
ＲＯＭテーブルフォーマット：ビット１０〜６：ラン；ビット５〜０：レベル
１．２．２ テーブル１５／ＭＰＥＧ−２
テーブル１４／ＭＰＥＧ−２と同一なラン、レベル及びＶＬＣコードを有するので、このテーブルの大部分は、テーブル１４／ＭＰＥＧ−２と共有する。
ＲＯＭテーブルフォーマット：ビット１０〜６：ラン；ビット５〜０：レベル
１．２．３  テーブル１２／Ｈ．２６３
このテーブルは、ＭＰＥＧ−２のテーブル１４、１５と比較する時、１個以上の出力値‘ＬＡＳＴ’を有する。
ＲＯＭテーブルフォーマット：ビット１１：ＬＡＳＴ；ビット１０〜４：ラン；ビット３〜０；レベル
１．２．４  モーションコード／マクロブロック増加分
この節は、テーブル１／ＭＰＥＧ−２、テーブル１０／ＭＰＥＧ−２、テーブル２−Ｂ．１／ＭＰＥＧ−１、テーブル２−Ｂ．４／ＭＰＥＧ−１、テーブル１／Ｈ．２６１及びテーブル３／Ｈ．２６１及びテーブル１０／ｈ．２６３を取扱う。
【０２０３】
モーションコードに対して、ＶＬＣ＝１の場合を除いてはＬＳＢが符号ビットである。マクロブロック増加分に対して、ＬＳＢはＶＬＣ＝１の場合を除いては、偶数値フラグである。従って、テーブルの半分のみをデコーディングする。タイル(tile)符号／偶数ビットを無視する場合、テーブル１０／Ｈ．２６３の上位部分を除いては、２種類のテーブルは、同一なＶＬＣ値とデコーディング値を有する。デコーティングされた値は、６ビットまで発生し、これは２個のテーブル値を１つの位置に置くことができることを意味する。例え、テーブル１０／Ｈ．２６３の下位部分のデコーディング値が他のものと異なっても、タイル２進値は固定小数点のために同一である。すなわち、このすべてのテーブルを取扱うために、固定小数点として１６ 半分の位置を使用する。ＲＯＭアドレスを発生させるために、１つの簡単なＦＳＭを使用する。応用において、モーションコードがデコーディングされる場合、ＲＯＭテーブルは絶対値を提供する。一方、アドレス発生器が符号ビットをイネーブルさせると、デコーダーはＬＳＢを抽出するが、‘１の場合’は負（−）、‘０’は正（＋）を意味する。このアルゴリズムは下記のように示すことができる。
ｉｆ（ｓｉｇｎ＿ｅｎａｂｌｅ＝＝１）
ｉｎｃｒｅｍｅｎｔ＿ｖａｌｕｅ＝ｓｉｇｎ＊ＲＯＭ＿ｔａｂｌｅ＿ｖａｌｕｅ；
ｅｌｓｅ
ｉｎｃｒｅｍｅｎｔ＿ｖａｌｕｅ＝ＲＯＭ＿ｔａｂｌｅ＿ｖａｌｕｅ；
もし、マクロブロックアドレス増加テーブルがデコーディングされると、その結果はＲＯＭテーブル値と偶数フラグから得られる。例えば、ＲＯＭテーブルは‘５’の値を提供する。偶数フラグが‘ハイ’であれば‘１０’の結果が得られ、偶数フラグが‘ロー’であれば‘１１’の値が得られる。このアルゴリズムは下記のように示すことができる。
ｉｆ（ｅｖｅｎ＿ｅｎａｂｌｅ＝＝１）
ｉｎｃｒｅｍｅｎｔ＿ｖａｌｕｅ＝（ＲＯＭ−ｔａｂｌｅ＿ｖａｌｕｅ＜＜１）
｜ （〜ｅｖｅｎ＿ｂｉｔ）；
ｅｌｓｅ
ｉｎｃｒｅｍｅｎｔ＿ｖａｌｕｅ＝ＲＯＭ＿ｔａｂｌｅ＿ｖａｌｕｅ；    ＲＯＭテーブルフォーマット：ビット１１〜６：上位データ；ビット５〜０：下位データ
１．２．５  マクロブロックパターン
この節はテーブル９／ＭＰＥＧ−２、テーブル２−Ｂ．３／ＭＰＥＧ−１、テーブル４／Ｈ．２６１（ＣＢＰ）を取扱う。
デコーティングされた値は６ビットまで発生するが、これは１個の位置に２個のデータを置くことができることを意味する。すなわち、このテーブルのすべてを取扱うためには、３２個の位置が使用される。
ＲＯＭテーブルフォーマット：ビット１１〜６：上位データ；ビット５〜０：下位データ
【０２０４】
１．２．６  マクロブロックタイプ
この節は、テーブル２、３、４／ＭＰＥＧ−２、テーブル２−Ｂ．２／ＭＰＥＧ−１、テーブル２／Ｈ．２６１（ＭＴＹＰＥ）及びテーブル３、４／Ｈ．２６３（ＭＣＢＰＣ）を取扱う。
デコーティングされた値は５ビットまで発生する。ここでも上位／下位データ概念を使用する。ＲＯＭアドレスを発生させるために、１個の簡単なＦＳＭが使用される。
ＲＯＭテーブルフォーマット：ビット１１〜６：上位データ；ビット５〜０：下位データ
たとえ、いくつかのビットが各仕様によって相異なる意味を有するが、マクロブロックタイプのフォーマットは、ＭＰＥＧに基づいて各仕様に対して普遍的に定義されている。Ｈ．２６３は情報要求に基づいて２段階のデコーディングを必要とするが、これは下記のとおりである。
＊３ビットマクロブロックタイプを有するデコーディングＭＣＢＰＣ
＊マクロブロックタイプ、ＢＰフラグ及びピクチャータイプに基づいたマクロブロックタイプルックアップ
ＶＬＣテーブルでマクロブロックタイプのフォーマットは下記のとおりである。
【０２０５】
【表６３】
ＭＰＥＧのマクロブロックタイプフォーマット
0004290775.tif 000076
【０２０６】
【表６４】
Ｈ．２６３のＭＣＢＰＣフォーマット
0004290775.tif 000077
【０２０７】
【表６５】
Ｈ．２６１のマクロブロックタイプフォーマット
0004290775.tif 000078
表から、３ビットマクロブロックタイプだけでなく、２ビットクロマパターンを得る。ここにおいて、マクロブロックタイプは、０〜４までの範囲を有する３ビット値である。上述のごとく、細部的なマクロブロックタイプの種類は、第２段階でデコーディングされる。デコーディングルックアップテーブルは下記のとおりである。
【０２０８】
【表６６】
Ｈ．２６３のマクロブロックタイプデコーディングルックアップテーブル
0004290775.tif 000079
【０２０９】
１．２．７ ＤＣＴ ＤＣ サイズ
この節は、テーブル１２、１３／ＭＰＥＧ−２、テーブル２−Ｂ．５／ＭＰＥＧ−１を取扱う。ＶＬＣ構造によって‘１’カウントはここで‘０’カウントの代わりに使用される
ＲＯＭテーブルフォーマット：ビット１０〜６：上位データ：クロマ；ビット５〜０：下位データ：輝度。ビット１１とビット５は予約されている。
１．２．８  ＣＢＰＹ
この節は、テーブル９／Ｈ．２６３を取扱う。このテーブルは二セットのデータを含むが、一つはインターピクチャーに関するもので、もう一つはイントラーピクチャーに関する。一セットの値は、他セットの値を反転させたものであって、ＲＯＭに一セットのデータが貯蔵できるようにする。ここにおいて、インタラーデータがＲＯＭに位置する。１つの４ビット値がＣＢＰＹ値を表わすことに使用される。
ＲＯＭテーブルフォーマット：ビット９〜６：上位データ；ビット３〜０：下位データ。ビット１１〜１０とビット５〜４とは予約されている。
１．２．９  デュアルプライム（ｄｕａｌ  ｐｒｉｍｅ）及びモード
この節はテーブル１１／ＭＰＥＧ−２及びテーブル７／Ｈ．２６３を取扱う。
この２個のテーブルは、非常に簡単で小さくて、直接デコーディングされ得る。
１．３  エンコーディング
デコーディング節と同様に、エンコーディング過程は‘０’／‘１’カウント概念を使用する。ＲＯＭテーブルは、‘０’／‘１’カウント、‘０’または‘１’カウントに対して最初１に後続くコードのサイズ及び、最初／最後‘１’に後続くＶＬＣコードに対する情報を含む。このフォーマットによると、ＲＯＭテーブルのサイズは、テーブル１２／Ｈ．２６３において特殊エンコーディングで解決される４つを除いては、１２ビットに制限され得る。フォーマットは下記のとおりである。
【０２１０】
【表６７】
一般的なエンコーディングフォーマット
0004290775.tif 000080
【０２１１】
【表６８】
テーブル／Ｈ．２６３エンコーディングフォーマット
0004290775.tif 000081
【０２１２】
前記のテーブルで、ＶＬＣコードサイズは最初／最後‘１’を後続くＶＬＣコードのサイズである。ＶＬＣコードは、最初／最後‘１’を後続くＶＬＣコードである。‘０’カウントの場合、最初の‘１’を後続くＶＬＣコードが抽出され、そうでない場合ＶＬＣコードは最後の‘１’を後続くビットから抽出されなければならない。エンコーディングで‘１’カウントの適用は、デコーディングでのそれとは異なる。‘１’カウントは‘１’カウントフラグがアドレス発生器によりイネーブルされる場合のみに適用される。従って、ＶＬＣのＭＳＢが１であるが‘１’カウントフラグがローの場合、ＲＯＭテーブルの‘０’／‘１’カウント部分は０となり、これは‘０’カウントが適用されることを意味する。
次の例は、エンコーディングに対するすべての可能な場合を取扱う。
例１：ＶＬＣ＝0000011001、one_count_enable＝０
一般的な場合に対する結果：0101 100 01001
テーブル１２／Ｈ．２６３に対する結果：101 100 001001
例２：ＶＬＣ＝11001、one_count_enable＝０
一般的な場合に対する結果：0000 100 0101
テーブル１２／Ｈ．２６３に対する結果：000 100 001001
例３：ＶＬＣ＝11001、one_count_enable＝１
一般的な場合に対する結果：0010 011 00001
テーブル１２／Ｈ．２６３に対する結果
一般的なアドレスは、オフセットと入力値の加算によって発生される。
【０２１３】
１．３．１ テーブル１４／ＭＰＥＧ−２
このテーブルはテーブル２−Ｂ．５ｃ／ＭＰＥＧ−１及びテーブル５／Ｈ．２６１と同一である。このエンコーディングは‘ＲＵＮ’、‘ＦＩＲＳＴ ＤＣ’、‘ＥＳＣＡＰＥ’、‘ＥＮＤ  ＯＦ  ＢＬＯＣＫ’入力を処理する。
エンコーディング結果：アドレスを発生するためにレベルまたはランと共に加算されるように印加されるオフセットアドレス
１．３．２  テーブル１５／ＭＰＥＧ−２
二テーブルが同一なラン、レベル及びＶＬＣコードを有するので、このテーブルの大部分はテーブル１４／ＭＰＥＧ−２を共有する。いくつかの特殊な場合において、‘１’カウントが適用される。このエンコーディングは‘ＲＵＮ’、‘ＬＥＶＥＬ’、‘ＦＩＲＳＴ  ＤＣ’、‘ＥＳＣＡＰＥ’、‘ＥＮＤ  ＯＦ  ＢＬＯＣＫ’入力を処理する。
エンコーディング結果：オフセットアドレス及び‘１’カウント指示者
１．３．３  テーブル１２／Ｈ．２６３
上述のごとく、このテーブルは非常に特殊である。これを取扱うために他のフォーマットを使用する。不幸にも、ＶＬＣコードを示すことに１２ビットが使用できない幾つかの例外がある。その例外はテーブル９に示したとおりである。この例外はＲＯＭテーブルを使用せず、特殊にエンコーディングされ得る。
【０２１４】
【表６９】
１２／Ｈ．２６３でエンコーディングの例外
0004290775.tif 000082
【０２１５】
エンコードは‘ＲＵＮ’及び‘ＥＳＣＡＰＥ’入力を処理する。
エンコード結果：アドレスを発生するために、レベルまたはランと共に加算されるように印加されるオフセットアドレス
１．３．４  モーションコード／マクロブロック増加分
この節は、テーブル１／ＭＰＥＧ−２、テーブル１０／ＭＰＥＧ−２、テーブル２−Ｂ．１／ＭＰＥＧ−１、テーブル２−Ｂ．４／ＭＰＥＧ−１、テーブル１／Ｈ．２６１、テーブル３／Ｈ．２６１及びテーブル１０／Ｈ．２６３を取扱う。
デコーディング部分で説明したとおり、このすべてのテーブルに対して、１つのＲＯＭテーブルと１つのＦＳＭととを共有することができる。ＲＯＭテーブルから得られるＶＬＣコードは、完全なＶＬＣコードを作るために符号／偶数ビットと結合しなければならない。従って、このエンコーディングＦＳＭで処理する入力値は、そのＬＳＢがフラクションビット(fraction bit)であるモーションコードに対する絶対値と、１ビットの右側にシフトされたマクロブロックアドレス増加分である。
【０２１６】
エンコーディングは‘ＳＴＵＦＦＩＮＧ’及び‘ＥＳＣＡＰＥ’を処理する。
１．３．５  マクロブロックパターン
この節はテーブル９／ＭＰＥＧ−２、テーブル２−Ｂ．３／ＭＰＥＧ−１を取扱う。
アドレスはオフセットとパターン値を加算した値である。
１．３．６  マクロブロックタイプ
この節は、テーブル２、３、４／ＭＰＥＧ−２、テーブル２−Ｂ．２／ＭＰＥＧ−１を取扱う。
１．３．７  テーブル３、４／Ｈ．２６３（ＭＣＢＰＣ）
ピクチャータイプ、マクロブロックタイプ及びスタッフィング(stuffing)フラグに対する情報が、ＲＯＭテーブルアドレスオフセットを発生させるために提供される。アドレスはオフセットアドレスとＣＢＰＣの和である。
１．３．８  テーブル２／Ｈ．２６１（ＭＴＹＰＥ）
アドレス発生器が非常に複雑で、具現に対して考慮する価値がない。
１．３．９  ＣＢＰＹ
デコーディング部分に述べたように、イントラーピクチャーデータのみをエンコーディングする。ピクチャータイプがインターピクチャーである場合、データはまず反転されなけらばならない。
アドレスはオフセットとＣＢＰＹ値を加算した値である。
１．３．１０  ＤＣＴ  ＤＣサイズ
この節は、テーブル１２、１３／ＭＰＥＧ−２、テーブル２−Ｂ．５／ＭＰＥＧ−１を取扱う。
輝度及びクロマに対する数個のＶＬＣコードが同一であるので、これに対して数個のＲＯＭテーブルを共有する。オフセットアドレスを発生させるために、クロマフラグ及び数個のビット値が使用される。オフセットと実際値を加算することによってＲＯＭアドレスを得ることができる。
【０２１７】
１．３．１１  デュアルプライム(dual prime)及びモード
この節は、テーブル１１／ＭＰＥＧ−２及びテーブル７／Ｈ．２６３を取扱う。
この２個のテーブルは非常に簡単で小さくて、直接エンコーディングされ得る。
２．０  ハードウェア説明
ＶＬＣエンコーディング／デコーディングに対するハードウェアは、‘ＶＬＣ’ブロックに含まれる。このブロックは３個のサブブロックを含む。このブロックはＲＯＭテーブルアドレスまたはデコーディング／エンコーディングデータを発生させるために適用される。‘ＶＬＣ−ＤＥＣ’はＶＬＣをデコーディングし、ＲＯＭテーブルアドレスを発生させるために使用される。‘ＶＬＣ＿ＥＮＣ’はＶＬＣをエンコーディングするためのブロックであり、ＲＯＭテーブルアドレスまたはＨ．２６３のＴＣＯＥＦテーブルのための特殊エンコーディングを発生させる。‘ＬＯＯＫＵＰ’はＲＯＭテーブル値または特殊エンコーディング値に基づいてＶＬＣデータを出力する。
２．１  ＶＬＣデコーディングアドレス発生器
ＶＬＣ＿ＤＥＣの核心は、デコーディングＦＳＭである。このＦＳＭは入力情報をデコーディングしアドレス発生を制御する。ＦＳＭの入力及び定義は下記のとおりである。
＊ＺＥＲＯ＿ＯＮＥ  Ｃｏｕｎｔ（１５ビット）：０／１カウント値を提供する。
＊ＺＥＲＯ＿ＯＮＥ  Ｃｏｕｎｔ（４ビット）：０／１カウント値を提供する。２個の相互に異なるビットカウント信号を使用する目的は、入力データ共有により、ゲート注文者(gate customer)を減少させるためである。大部の場合、１５ビットが使用される。
＊ＯＮＥ  Ｃｏｕｎｔ  ｅｎａｂｌｅ（１ビット）：‘１’カウント指示者
＊テーブルタイプ（６ビット）：テーブルタイプ
【０２１８】
【表７０】
ＶＬＣ＿ＤＥＣ＿ＦＳＭテーブルタイプフォーマット
＊モード（９ビット）：動作モード
0004290775.tif 000083
【０２１９】
VLC_DEC FSMモードフォーマット
ビット8  ビット7  ビット6  ビット5  ビット4  ビット3  ビット2     ビット1    ビット0
H.263    仕様        ピクチャータイプ    クロマ 第１ DC   テーブル15  MB INC
仕様及びピクチャータイプに対する定義は、ピン定義で説明する。
ハードウェアを簡素化し、ＲＯＭアクセス時間を確保するために、特殊なアルゴリズムがこのデコードＲＯＭテーブルアドレスを発生させるために使用される。この過程は下記のとおりである。
【０２２０】
段階１：オフセットアドレス(OFFSET)を発生させる。
段階２：４ビットシフト量(MASK_SHFT)を発生させ、この量と共に右側シフト１６ビットＦＩＦＯ＿ＤＡＴＡを発生させる。以降、４個の最下位ビット(FOL_DATA)を抽出する。
段階３：段階２から得られる４個ビットを反転させる。
段階４：段階３から得られるデータをマスク(MASK)するために、４ビットマスク信号を発生させる。
段階５：段階４の結果をオフセットアドレスと論理和させる。その結果はＲＯＭテーブルアドレスである。
この段階を結合させると下記のとおりである。
Address＝OFFSET ｜  (BITREVERSE(Bit(3〜0）of(FIFO_DATA>>MASK_SHFT))＆                         MASK)
ＦＳＭの出力は下記のとおりである。
＊ＭＡＳＫ（４ビット）：マスタデータ
＊ＯＦＦＳＥＴ（９ビット）：ＲＯＭテーブルオフセットアドレス
＊ＭＡＳＫ＿ＳＨＦＴ（４ビット）：シフト量
＊ＳＩＺＥ（５ビット）：ＶＬＣサイズ
＊ＳＰＥＣＩＡＬ＿ＦＬＡＧ（３ビット）：デコーディングのための余分の情報
【０２２１】
【表７１】
ＶＬＣ＿ＤＥＣの特殊フラグの定義
0004290775.tif 000084
【０２２２】
＊ＶＡＬＩＤ＿ＶＬＣ（１ビット）：有効ＶＬＣコードフラグ
＊ＨＩＧＨ＿ＤＡＴＡ＿ＩＮＤＩＣＡＴＯＲ（１ビット）：ＲＯＭデータの中の上位６ビットを抽出する。
入力ピン：
＊ＦＯＬ＿ＤＡＴＡ（４ビット）：シフトされたＦＩＦＯ＿ＤＡＴＡ（上述した段階２参照）
＊ＣＮＴ（４ビット）：０／１カウント
＊ＯＮＥ＿ＣＮＴ＿ＥＮ（１ビット）：‘１’カウント指示者
＊ＭＯＤＥ（１４ビット）：テーブルタイプ及び他の情報
定義は下記のとおりである。
【０２２３】
【表７２】
ＶＬＣ＿  ＤＥＣでＭＯＤＥフォーマット
0004290775.tif 000085
【０２２４】
仕様：００＝ＭＰＥＧ−１；０１＝ＭＰＥＧ−２；１０＝Ｈ．２６１；１１＝Ｈ．２６３；
ピクチャータイプ：００＝予約；０１＝イントラー；１０＝予測；１１＝両方向；
＊ＦＩＦＯ＿ＤＡＴＡ（１６ビット）：データはＶＬＣを含む。
出力ピン：
＊ＲＯＭ＿ＡＤＲ（１０ビット）：ＲＯＭテーブルアドレス
＊ＭＡＳＫ＿ＳＨＦＴ（４ビット）：ＦＩＦＯ＿ＤＡＴＡに対するシフト量（上述した段階２参照）
＊ＳＩＺＥ（５ビット）：ＶＬＣサイズ
＊ＳＰＥＣＩＡＬ−０（３ビット）：特殊フラグ（ＦＳＭ出力参照）
＊ＶＡＬＩＤ＿ＶＬＣ（１ビット）：有効ＶＬＣフラグ
＊ＨＩＧＨ＿ＤＡＴＡ（１ビット）：偶数フラグの符号として、ＶＬＣのＬ
ＳＢの抽出指示者
＊ＦＵＬＬ＿ＤＡＴＡ（１ビット）：ＤＣＴ係数デコーディング時に、ハイの完全な１２ビットデータ構造
＊ＴＡＢＬＥ（６ビット）：ＦＳＭ入力に定義される。
＊Ｔ＿ＭＯＤＥ（９ビット）：ＦＳＭ入力にＭＯＤＥに定義される。
２．２  ＶＬＣ＿ＥＮＣ
ＶＬＣエンコーディングコア部分でのように、ＶＬＣ＿ＥＮＣは可変長さコードをエンコーディングする。この部分の出力は、ＲＯＭテーブルアドレスまたはＶＬＣの特殊エンコーディングである。１．０節の説明のとおり、エンコーディングデータ構造は、Ｈ．２６３でＴＣＯＥＦのいくつかの特殊な場合を除いては、１２ビットデータフォーマットに従う。たとえ、１０ビット加算器がＲＯＭテーブルアドレスを発生させるために使用されるが、ハードウェア観点から見ると、ＶＬＣ＿ＤＥＣ部分より更に簡単である。
ＶＬＣ＿ＤＥＣと同様に、この部分の核心はＶＬＣ＿ＥＮＣというＦＳＭである。他のＦＳＭ、ＥＮＣ＿ＳＰは、特殊エンコーディングのために使用される。
ＦＳＭ  ＶＬＣ＿ＥＮＣの入力信号は、この部分の入力ピンと同一である。
＊ＬＡＳＴ（１ビット）：Ｈ．２６３のＴＣＯＥＦに対するＬＡＳＴ値
＊ＲＵＮ／ＶＡＬＵＥ（６ビット）：ＤＣＴ係数テーブルがエンコーディングの途中であれば、この入力はＲＵＮを意味し、そうでない場合一般的な値、すなわちパターンを意味する。
＊ＬＥＶＥＬ（６ビット）：ＤＣＴ係数レベル
＊ＳＰＥＣＩＡＬ＿ＦＬＡＧ（２ビット）：ＶＬＣ＿ＤＥＣ部分で定義された特殊フラグ
＊ＴＡＢＬＥ（６ビット）：ＶＬＣ＿ＤＥＣと同一
＊ＭＯＤＥ（９ビット）：ＶＬＣ＿ＤＥＣと同一
ＲＯＭアドレス発生は非常に簡単である。ＦＳＭはアドレスを発生させるために値（ラン）またはレベルまたは０に加えられるオフセットアドレスを提供する。このＶＬＣが同一サイズと‘０’カウントを有するので、特殊エンコーディングのためには、出力はコードで復元される２個の最下位ビットである。
【０２２５】
出力ピンは下記のとおりである。
＊ＯＮＥ＿ＣＮＴ＿ＦＬＧ（１ビット）：ＶＬＣ構造が‘１’カウントを使用することを知らせる。
＊ＳＩＧＮ＿ＥＮ＿ＢＩＴ：ＶＬＣ構造が符号／偶数ビットをＶＬＣ  ＬＳＢに置くことを知らせる。
＊ＳＰＥＣＩＡＬ＿ＥＮＣＯＤＥ（１ビット）：特殊エンコーディングフラグ
＊ＶＬＣ（２ビット）特殊エンコーディングされたＶＬＣコードＬＳＢ
＊ＡＤＲ＿Ａ（１６ビット）：オフセットアドレス。上位６ビットは０である。
＊ＡＤＲ＿Ｂ（１６ビット）：アドレスのまた他の部分。上位１０ビットは常に０である。
２．３  ルックアップ
この節は、ＶＬＣデータのエンコーディング／デコーディングを提供する。このブロックは下記のような状況を処理する。
＊規則的な１２ビットエンコーディング／デコーディングＲＯＭテーブル値出力
＊ビット上位／下位デコーディングデータ出力
＊特殊エンコーディングデータの復元
要求した通り、出力データ０で満たされる。
入力ピン：
＊Ｄ＿ＡＤＲ（１０ビット）：ＲＯＭアドレスをデコーディングする。
＊Ｅ＿ＡＤＲ（１０ビット）：ＲＯＭアドレスをエンコーディングする。
＊ＥＮＣＯＤＥ（１ビット）：１：エンコーディング；０：デコーディング
＊ＨＩＧＨ（１ビット）：上位６ビットフラグを抽出する。
＊ＥＮＡＢＬＥ（１ビット）：完全な１２ビットデータフラグ
＊ＶＬＣ（２ビット）：特殊エンコーディングコード
＊ＳＰＥＣＩＡＬ＿ＥＮＣＯＤＥ（１ビット）：特殊エンコーディングコード
出力ピン：
ＬＯＯＫＵＰ（１６ビット）：ＶＬＣコード
【０２２６】
【発明の効果】
以上述べたように、本発明はビットストリーム処理器では、多様なビットストリームが実時間的に同時にエンコーディングまたはデコーディングされるように文脈を貯蔵することができるので、多重データストリームを同時に処理することができる。また、ビットストリーム処理器が単一算術命令またはブール命令を遂行するためにプログラムされないようにすることにより、ビットストリーム処理器が高速で動作できる。
【図面の簡単な説明】
【図１】  本発明によるメディアカードのブロック図である。
【図２】  本発明によるマルチメディア処理器のブロック図である。
【図３】  図２に示された処理器の一部のビットストリーム処理器のブロック図である。
【図４】  本発明によるコンピュータシステムのブロック図である。
【図５】  本発明によるコンピュータシステムのブロック図である。
【図６】  本発明によるコンピュータシステムのブロック図である。
【図７】  図２に示された処理器のファームウェア構造を示す図である。
【図８】  図１のシステムのためのアドレスマップを示す図である。
【図９】  図１のシステムのためのアドレスマップを示す図である。
【図１０】  図２に示された処理器のＤＳＰコアを示すブロック図である。
【図１１】  図２に示された処理器の一部のベクトル処理器に適用されたパイプラインを示す図である。
【図１２】  図１１のベクトル処理器の機能的なブロック図である。
【図１３】  図１１のベクトル処理器において実行データ経路を示す図である。
【図１４】  図１１のベクトル処理器においてロード及び貯蔵データ経路を示す図である。
【図１５】  図２の処理器のキャッシュシステムのブロック図である。
【図１６】  図１５のキャッシュシステムにおいて命令データキャッシュを示す図である。
【図１７】  図２の処理器においてキャッシュ制御ユニットのデータ経路パイプラインを示す図である。
【図１８】  図２に図示したシステムにおいてキャッシュ制御ユニットのアドレス処理パイプラインのためのデータ経路を示す図である。
【図１９】  図２の処理器においてステートマシンを示す図である。
【図２０】  図２の処理器においてステートマシンを示す図である。
【図２１】  図２の処理器においてステートマシンを示す図である。
【図２２】  図２の処理器においてステートマシンを示す図である。
【図２３】  図１５のキャッシュシステムで使用されたアドレスフォーマットを示す図である。
【図２４】  図２の処理器においてバスを示す図である。
【図２５】  図２の処理器において仲裁制御ユニットを示す図である。
【図２６】  図２の処理器に対するタイミング図である。
【図２７】  図２の処理器に対するタイミング図である。
【図２８】  図２の処理器に対するタイミング図である。
【図２９】  図２の処理器に対するタイミング図である。
【図３０】  図２の処理器においてメモリリクエスト信号を示す図である。
【図３１】  図２の処理器においてメモリリクエスト信号を示す図である。
【図３２】  図２の処理器においてメモリリクエスト信号を示す図である。
【図３３】  図２の処理器においてバス仲裁制御ユニットを示す図である。
【図３４】  図２の処理器に対するタイミング図である。
【図３５】  図２の処理器に対するタイミング図である。
【図３６】  図２の処理器に対するタイミング図である。
【図３７】  図２の処理器においてバスインターフェース回路を示す図である。
【図３８】  図２の処理器においてバスインターフェース回路を示す図である。
【図３９】  図１のシステムに対する仮想フレームバッファ（ＶＦＢ）を示す図である。
【図４０】  図１のシステムに対する仮想フレームバッファ（ＶＦＢ）を示す図である。
【図４１】  図１のシステムに対するバスインターフェースを示す図である。
【図４２】  図２のシステムに対するメモリコントローラーを示す図である。
【図４３】  図２のシステムに対するメモリコントローラーを示す図である。
【図４４】  図２のシステムに対するアドレスコントローラーを示す図である。
【図４５】  図１のシステムで使用するフォーマットを示す図である
【図４６】  図１のシステムで使用するフォーマットを示す図である
【図４７】  図１のシステムにおいてステートマシンを示す図である
【図４８】  図１のシステムに対するデータコントローラーのブロック図である。
【図４９】  図１のシステムに対するタイミング図である。
【図５０】  図１のシステムに対するタイミング図である。
【図５１】  図１のシステムに対するタイミング図である。
【図５２】  図２の処理器において装置インターフェース回路を示す図である。
【図５３】  図２の処理器において装置インターフェース回路を示す図である。
【図５４】  図１のシステムの各部に対するブロック図である。
【図５５】  図１のシステムの各部に対するブロック図である。
【図５６】  図１のシステムの各部に対するブロック図である。
【図５７】  図１のシステムにおいてレジスタを示す図である。
【図５８】  図１のシステムにおいてレジスタを示す図である。
【図５９】  図１のシステムにおいてレジスタを示す図である。
【図６０】  図１のシステムにおいてフレームバッファ及びビデオウインドを示す図である。
【図６１】  図１のシステムに対するタイミング図である。
【図６２】  図１のシステムにおいてレジスタを示す図である。
【図６３】  図１のシステムに対するタイミング図である。
【図６４】  図１のシステムで使用するバッファを示す図である。
【図６５】  図１のシステムで使用するバッファを示す図である。
【図６６】  図１のシステムで使用するバッファを示す図である。
【符号の説明】
１００： メディアカード
１０５、１２２： バス
１１０： マルチメディア処理器
１１２： Ｄ／Ａ変換器
１１４： ＣＯＤＥＣ
１２０： メモリバス
２１０： スカラー処理器
２２０： ベクトル処理器
２３０： キャッシュサブシステム
２４０： ＩＯＢＵＳ
２４２： タイマー
２４３： ＵＡＲＴユニット
２４５： ビットストリーム処理器
２５０： ＦＢＵＳ
２５２、２５５： インターフェース回路
２５８： コントローラー
２９０： データ移動器
３１０： インターフェースユニット
３２０： ＳＲＡＭ
３３０： ＶＬＣ ＦＩＦＯユニット
３４０： ＶＬＣ ＬＵＴ ＲＯＭ
３５０： 制御ステートマシン
３６０： ＢＰコアユニット
【図１】
0004290775.tif 000086
【図２】
0004290775.tif 000087
【図３】
0004290775.tif 000088
【図４】
0004290775.tif 000089
【図５】
0004290775.tif 000090
【図６】
0004290775.tif 000091
【図７】
0004290775.tif 000092
【図８】
0004290775.tif 000093
【図９】
0004290775.tif 000094
【図１０】
0004290775.tif 000095
【図１１】
0004290775.tif 000096
【図１２】
0004290775.tif 000097
【図１３】
0004290775.tif 000098
【図１４】
0004290775.tif 000099
【図１５】
0004290775.tif 000100
【図１６】
0004290775.tif 000101
【図１７】
0004290775.tif 000102
【図１８】
0004290775.tif 000103
【図１９】
0004290775.tif 000104
【図２０】
0004290775.tif 000105
【図２１】
0004290775.tif 000106
【図２２】
0004290775.tif 000107
【図２３】
0004290775.tif 000108
【図２４】
0004290775.tif 000109
【図２５】
0004290775.tif 000110
【図２６】
0004290775.tif 000111
【図２７】
0004290775.tif 000112
【図２８】
0004290775.tif 000113
【図２９】
0004290775.tif 000114
【図３０】
0004290775.tif 000115
【図３１】
0004290775.tif 000116
【図３２】
0004290775.tif 000117
【図３３】
0004290775.tif 000118
【図３４】
0004290775.tif 000119
【図３５】
0004290775.tif 000120
【図３６】
0004290775.tif 000121
【図３７】
0004290775.tif 000122
【図３８】
0004290775.tif 000123
【図３９】
0004290775.tif 000124
【図４０】
0004290775.tif 000125
【図４１】
0004290775.tif 000126
【図４２】
0004290775.tif 000127
【図４３】
0004290775.tif 000128
【図４４】
0004290775.tif 000129
【図４５】
0004290775.tif 000130
【図４６】
0004290775.tif 000131
【図４７】
0004290775.tif 000132
【図４８】
0004290775.tif 000133
【図４９】
0004290775.tif 000134
【図５０】
0004290775.tif 000135
【図５１】
0004290775.tif 000136
【図５２】
0004290775.tif 000137
【図５３】
0004290775.tif 000138
【図５４】
0004290775.tif 000139
【図５５】
0004290775.tif 000140
【図５６】
0004290775.tif 000141
【図５７】
0004290775.tif 000142
【図５８】
0004290775.tif 000143
【図５９】
0004290775.tif 000144
【図６０】
0004290775.tif 000145
【図６１】
0004290775.tif 000146
【図６２】
0004290775.tif 000147
【図６３】
0004290775.tif 000148
【図６４】
0004290775.tif 000149
【図６５】
0004290775.tif 000150
【図６６】
0004290775.tif 000151