(57)【要約】画像圧縮・伸張などの可変長ビット列データ処理において、高速に処理することのできる半導体装置である。圧縮データ格納メモリ（１０）とプロセッサ（２０）の間に、可変長ビット列データ操作のためのバッファ（３０）および制御回路（４０）を設け、プロセッサ（２０）に可変長ビット列データの表示・取得・書き込み命令を設ける。可変長ビット列データ操作のためのバッファ（３０）は、圧縮データ格納メモリ（１０）のビット幅の２倍のビット容量を有することが好ましい。
2005024636.tif 000002
【特許請求の範囲】
【請求項１】
圧縮データを格納するメモリと、
前記メモリから可変長ビット列データを取得し、または前記メモリへ可変長ビット列データを書き込むプロセッサと、
前記メモリと前記プロセッサとの間に設けられた、前記可変長ビット列データ操作のためのバッファと、
前記プロセッサからの命令により前記バッファを制御する制御回路と、
を有することを特徴とする半導体装置。
【請求項２】
請求項１記載の半導体装置において、
前記プロセッサは、前記可変長ビット列データの表示、取得または書き込みの命令を有することを特徴とする半導体装置。
【請求項３】
請求項１記載の半導体装置において、
前記バッファは、前記メモリのビット幅の２倍のビット容量を有することを特徴とする半導体装置。
【請求項４】
請求項２記載の半導体装置において、
前記バッファは、前記メモリのビット幅の２倍のビット容量を有することを特徴とする半導体装置。
【請求項５】
請求項１記載の半導体装置において、
前記プロセッサと前記バッファとの間には、さらに、前記可変長ビット列データに対してマスク処理を行うマスク回路が設けられていることを特徴とする半導体装置。
【請求項６】
請求項２記載の半導体装置において、
前記プロセッサと前記バッファとの間には、さらに、前記可変長ビット列データに対してマスク処理を行うマスク回路が設けられていることを特徴とする半導体装置。
【請求項７】
請求項３記載の半導体装置において、
前記プロセッサと前記バッファとの間には、さらに、前記可変長ビット列データに対してマスク処理を行うマスク回路が設けられていることを特徴とする半導体装置。
【請求項８】
請求項４記載の半導体装置において、
前記プロセッサと前記バッファとの間には、さらに、前記可変長ビット列データに対してマスク処理を行うマスク回路が設けられていることを特徴とする半導体装置。
【請求項９】
請求項１〜８のいずれか１項に記載の半導体装置において、
前記メモリに格納される圧縮データは、画像圧縮データであり、前記可変長ビット列データは、ハフマン符号化データであることを特徴とする半導体装置。
【発明の詳細な説明】
【技術分野】  本発明は、半導体装置に関し、特に、画像圧縮・伸張に適用して有効な技術に関するものである。
【背景技術】  本発明者が検討した技術として、例えば、ＭＰＥＧ（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）画像圧縮・伸張においては、次の技術が考えられる。
ＩＳＯ／ＩＥＣ１４４９６−２（ＭＰＥＧ４）、ＩＳＯ／ＩＥＣ１３８１８−２（ＭＰＥＧ２）、ＩＳＯ／ＩＥＣ１１１７２−２（ＭＰＥＧ１）などの動画圧縮規格では、デジタル化された画像をブロック分割してブロックごとに動きベクトル検出、離散コサイン変換（ＤＣＴ；Ｄｉｓｃｒｅｔｅ  Ｃｏｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ）、量子化、ＡＣ／ＤＣ予測を実施し、ハフマン符号化して画像データを圧縮する。
また、圧縮データの伸張処理は、前記の圧縮と逆の手順、すなわち、ハフマン復号化、ＡＣ／ＤＣ予測、逆量子化、逆ＤＣＴおよび動きベクトル情報から補償画を生成することにより実現する。
【発明の開示】
ところで、前記のような画像圧縮・伸張の技術について、本発明者が検討した結果、以下のようなことが明らかとなった。
ＭＰＥＧ圧縮ストリームデータの場合、ハフマン符号化された可変長ビット列データを扱わなければならない。画像伸張時には、画像圧縮データが格納されたメモリから可変長ビット列データを表示・取得し、画像圧縮時には、可変長ビット列データを前記メモリに書き込む処理が必要である。これらの処理をソフトウェアで行う場合、メモリの読み出し・書き込み時の固定長ビットデータにおいてビットポインタを管理し、バイト境界までのオフセット値を更新しながらメモリアクセス、可変長ビット列データの表示・取得・書き込みを行う必要がある。また、プロセッサのデータバス上の未取得・未書き込みの上位ビットについてマスク処理が必要となる。
上記の処理を汎用プロセッサで行うと、可変長ビット列データ１ワードの取得・書き込みを行うのに約１０〜２０サイクル必要となり、ワードごとにこれらの処理を行うため、システムのパフォーマンスが低下する。
そこで、本発明の目的は、画像圧縮・伸張などの可変長ビット列データ処理において、高速に処理することのできる半導体装置を提供するものである。
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
すなわち、本発明による半導体装置は、圧縮データ格納メモリとプロセッサの間に、可変長ビット列データ操作のためのバッファおよび制御回路を設け、プロセッサに可変長ビット列データの表示・取得・書き込み命令を設けたものである。
可変長ビット列データ操作のためのバッファは、圧縮データ格納メモリのビット幅の２倍のビット容量を有することが好ましい。
また、プロセッサは、可変長ビット列データの表示・取得・書き込み命令として、可変長ビット列データを操作するための以下の命令を有する。
（１）可変長ビット列データ取得命令（画像伸張用命令）
（ａ）指定ビット数表示命令（ビットポインタの更新なし）
（ｂ）指定ビット数取得命令（ビットポインタの更新あり）
（ｃ）バイト境界までのビット数取得命令
（ｄ）指定ビット数ビットポインタ更新命令
（ｅ）バイト境界からの指定ビット数表示命令
（２）可変長ビット列データ書き込み命令（画像圧縮用命令）
（ａ）指定ビット数書き込み命令
（ｂ）バイト境界まで「０」または「１」書き込み命令
（ｃ）バイト境界までのビット数取得命令
以上の命令を実行することにより、可変長ビット列データの操作を１サイクルで行うことが可能となる。
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば、以下のとおりである。
（１）画像圧縮・伸張で必要な可変長ビット列データの処理を１サイクルで実現できるため、システム性能の向上が図れる。
（２）小規模・低周波数動作のプロセッサ構成で、ＭＰＥＧに代表される動画圧縮・伸張などの画像処理が実時間で処理可能となるため、例えばデジタルビデオカメラなどの低消費電力駆動の携帯型家電に実装可能な半導体装置で、従来に比べて画素密度の大きい画像処理機能を実現することが可能となる。
【図面の簡単な説明】  図１は本発明の一実施の形態の半導体装置の構成を示すブロック図である。
図２は本発明の一実施の形態の半導体装置において、可変長ビット列データの取得動作を示す説明図である。
図３は本発明の一実施の形態の半導体装置において、可変長ビット列データの書き込み動作を示す説明図である。
【発明を実施するための最良の形態】  以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部材には同一の符号を付し、その繰り返しの説明は省略する。
まず、図１により、本発明の一実施の形態の半導体装置の構成の一例を説明する。図１は本発明の一実施の形態の半導体装置の構成を示すブロック図である。なお、以下においては、これに限定されるものではないが、３２ビットバス構成の場合を例に説明する。
本実施の形態の半導体装置は、例えばＭＰＥＧ画像圧縮・伸張システムとされ、圧縮データ格納メモリ１０と、プロセッサ２０と、可変長ビット列データ操作用のバッファ３０と、制御回路４０と、マスク回路５０などから構成されている。また、プロセッサ２０は、演算器２１と、レジスタファイル２２と、制御ユニット２３などから構成されている。
圧縮データ格納メモリ１０は、画像圧縮データストリームバス６０に接続され、３２ビットのバスを介してバッファ３０と接続されている。バッファ３０は、３２ビットのバスを介してマスク回路５０と接続され、信号線を介して制御回路４０と接続されている。制御回路４０は、専用命令バス７０を介してプロセッサ２０内の制御ユニット２３と接続されている。マスク回路５０は、３２ビットの可変長データバス８０を介してプロセッサ２０内のレジスタファイル２２と接続されている。
圧縮データ格納メモリ１０は、ｎビット幅（ｎは自然数）のメモリであり、ＭＰＥＧ画像圧縮データなどを格納する。
プロセッサ２０は、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）などの処理装置であり、ＭＰＥＧ画像圧縮・伸張のハフマン符号化・復号化などの処理を実行する。
プロセッサ２０内の演算器２１は、加算器、ＡＬＵなどの演算器である。また、レジスタファイル２２は、例えば、３２ビット幅のレジスタ８本からなり、演算器２１が演算処理に使用する。制御ユニット２３は、マイクロプログラム、プログラムデコーダ、プログラム制御回路などからなり、各種の命令を実行する。また、専用命令バス７０を介して制御回路４０に対して可変長ビット列データ操作のための命令を発信する。
バッファ３０は、可変長ビット列データ操作用のバッファであり、例えば、圧縮データ格納メモリ１０のビット幅ｎの２倍のビット容量のレジスタ１段で構成される。
制御回路４０は、プロセッサ２０内の制御ユニット２３からの命令により、圧縮データ格納メモリ１０の書き込み・読み出し、バッファ３０内の可変長ビット列データの操作、マスク回路５０内のマスク処理などの制御を行う回路である。
マスク回路５０は、可変長ビット列データのマスク処理を行う回路であり、例えば、可変長ビット列データに対して指定ビット以外の部分に「０」データを埋め込む処理などを行う。
また、プロセッサ２０は、可変長ビット列データの表示・取得・書き込み命令として、可変長ビット列データを操作するための以下の命令を有する。
（１）可変長ビット列データ取得命令（画像伸張用命令）
（ａ）指定ビット数表示命令（ビットポインタの更新なし）
（ｂ）指定ビット数取得命令（ビットポインタの更新あり）
（ｃ）バイト境界までのビット数取得命令
（ｄ）指定ビット数ビットポインタ更新命令
（ｅ）バイト境界からの指定ビット数表示命令
（２）可変長ビット列データ書き込み命令（画像圧縮用命令）
（ａ）指定ビット数書き込み命令
（ｂ）バイト境界まで「０」または「１」書き込み命令
（ｃ）バイト境界までのビット数取得命令
次に、図２により、本実施の形態の半導体装置における可変長ビット列データ取得時の動作を説明する。図２は、３２ビットバス構成（圧縮データ格納メモリ１０のビット幅ｎが３２ビット）の場合の可変長ビット列データの取得動作を示す説明図である。
まず、圧縮データ格納メモリ１０内にデータが存在する場合、制御回路４０は、圧縮データ格納メモリ１０から３２ビットのデータを読み出し、バッファ３０の上位ビット（ビット６３〜ビット３２）に書き込む。次に、圧縮データ格納メモリ１０から次の３２ビットのデータを読み出し、バッファ３０の下位ビット（ビット３１〜ビット０）に書き込む。
プロセッサ２０内の制御ユニット２３からの可変長ビット列データ取得命令に従い、制御回路４０は、可変長データバス８０を介してバッファ３０内のデータをプロセッサ２０内のレジスタファイル２２へ出力する。この際、マスク回路５０により可変長ビット列データに対して順次マスク処理を行い３２ビットのデータとしてレジスタファイル２２へ出力する。
バッファ３０内のデータ残量が３２ビット以下になったら、制御回路４０は、バッファ３０の下位ビット（ビット３１〜ビット０）のデータを上位ビット（ビット６３〜ビット３２）に３２ビットシフトし、圧縮データ格納メモリ１０から次の３２ビットのデータを読み出し、バッファ３０の下位ビット（ビット３１〜ビット０）に書き込む。
例えば、プロセッサ２０からの可変長ビット列データ取得命令が８ビット取得命令の場合、図２に示すように、バッファ３０内の８ビットのデータＡをプロセッサ２０内のレジスタファイル２２へ出力する。この際、上位２４ビットに「０」データを埋め込むなどのマスク処理を行い３２ビットデータとしてレジスタファイル２２へ出力する。
続いて、次の命令も８ビット取得命令の場合、同様にして、バッファ３０内の８ビットのデータＢをプロセッサ２０内のレジスタファイル２２へ出力する。この際、マスク処理を行い３２ビットデータとしてレジスタファイル２２へ出力する。
続いて、次の命令が３２ビット取得命令の場合、バッファ３０内の３２ビットのデータＣをプロセッサ２０内のレジスタファイル２２へ出力する。この際、バッファ３０内のデータ残量が３２ビット以下になったので、データＤを３２ビットシフトし、圧縮データ格納メモリ１０から次の３２ビットのデータ（データＥ）を読み出し、バッファ３０の下位ビット（ビット３１〜ビット０）に書き込む。
以上の動作を繰り返すことにより、１サイクルでの可変長ビット列データの取得が可能となる。
次に、図３により、本実施の形態の半導体装置における可変長ビット列データ書き込み時の動作を説明する。図３は、３２ビットバス構成（圧縮データ格納メモリ１０のビット幅ｎが３２ビット）の場合の可変長ビット列データの書き込み動作を示す説明図である。
まず、プロセッサ２０からの可変長ビット列データ書き込み命令に従い、制御回路４０は、レジスタファイル２２からの可変長ビット列データを順次、バッファ３０の上位ビットに書き込む。
バッファ３０内に３２ビットのデータが格納されたら、制御回路４０は、バッファ３０内の上位３２ビット（ビット６３〜ビット３２）のデータを圧縮データ格納メモリ１０に書き込む。そして、バッファ３０内の下位３２ビット（ビット３１〜ビット０）のデータを上位ビット側へ３２ビットシフトする。
例えば、プロセッサ２０からの可変長ビット列データ書き込み命令が８ビット書き込み命令の場合、図３に示すように、プロセッサ２０内のレジスタファイル２２からの３２ビットデータ中の下位８ビットを、バッファ３０の最上位ビットから順次データＡとして書き込む。
続いて、次の命令も８ビット書き込み命令の場合、レジスタファイル２２からの３２ビットデータ中の下位８ビットをバッファ３０内のデータＡの次のビットからデータＢとして書き込む。
続いて、次の命令が３２ビット書き込み命令の場合、レジスタファイル２２からの３２ビットデータをバッファ３０内のデータＢの次のビットからデータＣとして書き込む。
次に、バッファ３０内に３２ビットのデータが格納されたので、バッファ３０の上位３２ビット（ビット６３〜ビット３２）のデータ（データＡ、データＢ、データＣの上位１６ビット）を圧縮データ格納メモリ１０に書き込む。そして、データＣの下位１６ビットデータを上位ビット側へ３２ビットシフトする。
以上の動作を繰り返すことにより、１サイクルでの可変長ビット列データの書き込みが可能となる。
したがって、前記実施の形態の半導体装置によれば、ＭＰＥＧ動画圧縮・伸張で必要な可変長ビット列データ処理を１サイクルで実現できるため、システム性能の向上が図れる。
また、小規模・低周波数動作のプロセッサ構成で、ＭＰＥＧに代表される動画圧縮・伸張などの画像処理が実時間で処理可能になるため、従来に比べて画素密度の大きい画像処理機能を、デジタルビデオカメラなどの低消費電力で駆動する携帯型家電に実装可能な半導体装置により実現することが可能となる。
以上、本発明者によってなされた発明をその実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
例えば、前記実施の形態においては、ＭＰＥＧの動画圧縮・伸張について説明したが、これに限定されるものではなく、ＪＰＥＧ（Ｊｏｉｎｔ  Ｐｈｏｔｏｇｒａｐｈｉｃ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）など他の画像圧縮・伸張についても適用可能である。
以上の説明では、主として本発明者によってなされた発明をその属する技術分野である画像処理に適用した場合について説明したが、これに限定されるものではなく、例えば、その他の画像処理、音声処理を始めとするハフマン符号化・復号化などの可変長ビット列データを処理する電子機器全般に適用することも可能である。
【産業上の利用可能性】  以上のように、本発明にかかる半導体装置は、例えば、デジタルビデオカメラ、ビデオデッキ、情報端末などの動画圧縮・伸張を行う電子機器に用いるのに適している。また、その他の画像処理、音声処理を始めとする可変長ビット列データを処理する電子機器全般に応用可能である。
【図１】
2005024636.tif 000003
【図２】
2005024636.tif 000004
【図３】
2005024636.tif 000005
【国際調査報告】
2005024636.tif 000006
2005024636.tif 000007
2005024636.tif 000008
2005024636.tif 000009