(57)【特許請求の範囲】
【請求項１】
第１設定ビットよりもビット長が短い第１符号情報を記憶しており、各符号情報に対応する各設定ビットを表す辞書情報を受信し、前記第１符号情報に対応する設定ビットを前記辞書情報から読み出すことにより前記第１設定ビットを求め、該第１設定ビットに従い設定を変更することにより複数の演算のいずれかを行って演算結果を得る第１の演算ユニットと、
第２設定ビットよりもビット長が短い第２符号情報を記憶しており、前記辞書情報を前記第１の演算ユニットから受信し、前記第２符号情報に対応する設定ビットを前記辞書情報から読み出すことにより前記第２設定ビットを求め、該第２設定ビットに従い設定を変更することにより前記演算結果に対して前記複数の演算のいずれかを行う第２の演算ユニットとを具備する半導体装置。
【請求項２】
複数の設定ＩＤに対応する前記辞書情報を複数記憶し、該複数の設定ＩＤのいずれかと、該設定ＩＤに対応する辞書情報とを前記第１の演算ユニットに送信するコントローラをさらに具備する請求項１記載の半導体装置。
【請求項３】
前記第１の演算ユニットは、複数の設定ＩＤに対応する複数の第１符号情報を記憶する第１記憶部を具備し、前記複数の設定ＩＤのいずれかを前記コントローラから受信し、対応する第１符号情報を前記第１記憶部から読み出して前記第１設定ビットを求め、
前記第２の演算ユニットは、前記複数の設定ＩＤに対応する複数の第２符号情報を記憶する第２記憶部を具備し、前記複数の設定ＩＤのいずれかを前記コントローラから受信し、対応する第２符号情報を前記第２記憶部から読み出して前記第２設定ビットを求める請求項２記載の半導体装置。
【請求項４】
前記辞書情報は、前記コントローラが送信する設定ＩＤの指定により前記第１の演算ユニットが行う複数の演算と、前記設定ＩＤの指定により前記第２の演算ユニットが行う複数の演算とに含まれる演算を定める全ての種類の設定ビットを含む請求項２記載の半導体装置。
【請求項５】
前記第１符号情報は、前記コントローラが送信する設定ＩＤの指定により前記第１の演算ユニットが行う複数の演算を定める設定ビットが前記辞書情報において格納されている位置を指定するポインタを前記複数の演算ごとに含み、
前記第１の演算ユニットは、前記コントローラから受信した辞書情報から前記ポインタに従って設定ビットを読み出すことにより前記第１設定ビットを求め、該第１設定ビットが定める演算を行うとともに、前記辞書情報を前記第２の演算ユニットに送信し、
前記第２符号情報は、前記コントローラが送信する設定ＩＤの指定により前記第２の演算ユニットが行う複数の演算を定める設定ビットが前記第１の演算ユニットから受信した辞書情報において格納されている位置を指定するポインタを前記複数の演算ごとに含み、
前記第２の演算ユニットは、前記第１の演算ユニットから受信した辞書情報から前記第２符号情報に含まれるポインタに従って設定ビットを読み出すことにより前記第２設定ビットを求め、該第２設定ビットが定める演算を行う請求項４記載の半導体装置。
【請求項６】
前記辞書情報は、前記コントローラが送信する設定ＩＤの指定により前記第１の演算ユニットが行う複数の演算と、前記設定ＩＤの指定により前記第２の演算ユニットが行う複数の演算とに含まれる演算を定める全ての種類の設定ビットのうちの一部を含む請求項２記載の半導体装置。
【請求項７】
第１符号情報を記憶しており、各符号情報に対応する各設定ビットを表す辞書情報を受信し、前記辞書情報または前記第１符号情報から第１設定ビットを求め、該第１設定ビットに従い設定を変更することにより複数の演算のいずれかを行って演算結果を得る第１の演算ユニットと、
第２符号情報を記憶しており、前記辞書情報を前記第１の演算ユニットから受信し、前記辞書情報または前記第２符号情報から第２設定ビットを求め、該第２設定ビットに従い設定を変更することにより前記演算結果に対して前記複数の演算のいずれかを行う第２の演算ユニットと、
複数の設定ＩＤに対応する前記辞書情報を複数記憶し、該複数の設定ＩＤのいずれかと、該設定ＩＤに対応する辞書情報とを前記第１の演算ユニットに送信するコントローラと、を具備し、
前記第１符号情報は、前記コントローラが送信する設定ＩＤの指定により前記第１の演算ユニットが行う複数の演算を定める設定ビットのうち、前記辞書情報に含まれない設定ビットを含み、かつ前記複数の演算を定める設定ビットが前記辞書情報および該第１符号情報において格納されている位置を指定するポインタを前記複数の演算ごとに含み、
前記第１の演算ユニットは、前記第１符号情報に含まれる設定ビットおよび前記コントローラから受信した辞書情報に含まれる設定ビットから、該第１符号情報に含まれるポインタに従って設定ビットを読み出すことにより前記第１設定ビットを求め、該第１設定ビットが定める演算を行うとともに前記辞書情報を前記第２の演算ユニットに送信し、
前記第２符号情報は、前記コントローラが送信する設定ＩＤの指定により前記第２の演算ユニットが行う複数の演算を定める設定ビットのうち前記第１の演算ユニットから受信した辞書情報に含まれない設定ビットを含み、かつ前記複数の演算を定める設定ビットが前記辞書情報および前記第２符号情報において格納されている位置を指定するポインタを前記複数の演算ごとに含み、
前記第２の演算ユニットは、前記第２符号情報に含まれる設定ビットおよび前記第１の演算ユニットから受信した辞書情報に含まれる設定ビットから、該第２符号情報に含まれるポインタに従って設定ビットを読み出すことにより前記第２設定ビットを求め、該第２設定ビットが定める演算を行う半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動的リコンフィギュラブル回路技術を用いた半導体装置に関する。
【背景技術】
【０００２】
近年、携帯機器など低コスト・低消費電力が求められる機器においても、機能の複雑化、多様化が進み、このような機器にも高い性能が必要とされてきている。高性能と低消費電力を両立させるためには、専用ハードウェアの製造・開発は避けられない。しかしながら、機能の複雑化・多様化に伴い専用ハードウェアの製造・開発費は年々増大している。この製造・開発費を削減するものとして、動的リコンフィギュラブル回路技術を用いた半導体装置が注目されている。
【０００３】
動的リコンフィギュラブル回路技術を用いた半導体装置は、ＦＰＧＡのようなリコンフィギュラブル回路と、そのリコンフィギャラブル回路に実行させたい回路（以下、単に実行回路と称す）を構築するのに必要な設定情報を複数蓄えておくための記憶装置を備えており、ソフトウェアなどによりあらかじめ決められた規則に従って、動作時に必要な回路情報を読み出して実行回路を構築できる装置である。動作時に実行回路を変えられる点が、ＦＰＧＡを用いた従来の半導体装置とは異なる。
【０００４】
この半導体装置を用いると、ＦＰＧＡ同様に専用ハードウェアの開発費が低減されるだけでなく、実行回路を動的に構築することにより小さな半導体装置上に多様な機能が実現できるため、専用ハードウェアの製造費も低減されると期待されている。
【０００５】
動的リコンフィギュラブル回路技術を用いた半導体装置の例としては、ＮＥＣエレクトロニクスのＤＲＰ（Ｄｙｎａｍｉｃａｌｌｙ  Ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  Ｐｒｏｃｅｓｓｏｒ，「非特許文献１」参照）や、カーネギーメロン大学のＰｉｐｅＲｅｎｃｈ（「非特許文献２」参照）が挙げられる。
【０００６】
ＮＥＣエレクトロニクスのＤＲＰは、演算を行う基本要素であるＰＥ（Ｐｒｏｃｅｓｓｉｎｇ  Ｅｌｅｍｅｎｔ）が２次元アレイ状に並べられ、その中央に状態遷移コントローラが配置されるという構造を持つ。ＰＥは実行回路を構築可能な演算装置で、ＰＥ内部にある命令メモリに演算の種類やＰＥ間の接続関係といった設定情報が複数格納されている。各ＰＥは状態遷移コントローラから与えられる命令ポインタに従って命令メモリから設定情報を読み出して、動的に実行回路を構築する。
【０００７】
カーネギーメロン大学のＰｉｐｅＲｅｎｃｈでは、演算を行う基本要素である複数のＰＥと、それらを接続するバスから成るｓｔｒｉｐｅが、パイプライン型に接続された構成を取っている。ＰＥは実行回路を構築可能な演算装置で、グローバルバスによりＰｉｐｅＲｅｎｃｈの外部にある制御装置と接続されている。ＰＥの演算の種類やバス接続関係といった設定情報は、ＰｉｐｅＲｅｎｃｈの外部にある制御装置からグローバルバスを介してＰＥに転送され、その情報に従ってＰＥは動的に実行回路を構築する。
【非特許文献１】「リコンフィギュラブルシステム」、オーム社、ページ１８９−２０８
【非特許文献２】“ＰｉｐｅＲｅｎｃｈ：ａ  ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  ａｒｃｈｉｔｅｃｔｕｒｅ  ａｎｄ  ｃｏｍｐｉｌｅｒ”，ＩＥＥＥ  Ｃｏｍｐｕｔｅｒ  Ｖｏｌｕｍｅ  ３３，Ｉｓｓｕｅ  ４，Ａｐｒｉｌ  ２０００  Ｐａｇｅ（ｓ）：７０−７７
【発明の開示】
【発明が解決しようとする課題】
【０００８】
高性能でかつ面積が小さく、消費電力が低い動的リコンフィギュラブル回路を用いた半導体装置を実現するためには、半導体装置が処理を行っている間に、後続の処理に必要な設定情報をできるだけ高速に記憶装置に格納できるようにする必要がある。これにより、半導体装置が予め備える記憶装置のサイズが小さくても、半導体装置上に様々な実行回路を大きな遅延なく構築できるようになるため、高性能でかつ面積が小さく、消費電力が低い半導体装置が実現可能となる。
【０００９】
しかしながら、従来の動的リコンフィギュラブル回路を用いた半導体装置では、処理を行うために記憶装置に書いておく必要のある設定情報のサイズが十分に小さくないため、半導体装置が処理を行っている間に、後続の処理に必要な設定情報を十分に記憶装置に格納することは困難である。
【００１０】
ＰｉｐｅＲｅｎｃｈやＤＲＰでは、半導体装置の設定変更を演算種類の変更など粗粒度の設定変更に限定することで、設定情報のサイズを小さくしているが、まだ設定情報のサイズが十分に小さくなっているとはいえない。
【００１１】
動的リコンフィギュラブル回路を用いた半導体装置が備える記憶装置に書く設定情報のサイズを小さくする方法としては、半導体装置の記憶装置には元の設定情報を復元可能な圧縮符号方式により情報量を圧縮（以下、単に圧縮と呼ぶ）した設定情報を記憶しておき、実行回路の構築において適宜設定情報を復号して用いるという方法が考えられる。
【００１２】
しかしながら、ＰｉｐｅＲｅｎｃｈやＤＲＰでは、一つの制御装置が複数の動的リコンフィギュラブル回路に対して同時に実行回路の構築を指示するため、制御装置が制御する動的リコンフィギュラブル回路の数がある程度大きくなると、復号に要する時間が増大して半導体装置の処理性能が低下するという問題がある。
【００１３】
本発明は、上記に鑑みてなされたものであって、パイプライン型に接続された複数のリコンフィギュラブル回路のそれぞれにおいて、圧縮された設定情報から遅延を生じることなく設定情報を復号し、実行回路を構築して演算を行うことのできる半導体装置を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明の一観点に係る半導体記憶装置は、第１設定ビットよりもビット長が短い第１符号情報を記憶しており、各符号情報に対応する各設定ビットを表す辞書情報を受信し、前記第１符号情報に対応する設定ビットを前記辞書情報から読み出すことにより前記第１設定ビットを求め、該第１設定ビットに従い設定を変更することにより複数の演算のいずれかを行って演算結果を得る第１の演算ユニットと、第２設定ビットよりもビット長が短い第２符号情報を記憶しており、前記辞書情報を前記第１の演算ユニットから受信し、前記第２符号情報に対応する設定ビットを前記辞書情報から読み出すことにより前記第２設定ビットを求め、該第２設定ビットに従い設定を変更することにより前記演算結果に対して前記複数の演算のいずれかを行う第２の演算ユニットとを具備する。
【発明の効果】
【００１５】
本発明をパイプライン型に接続された複数のリコンフィギュラブル回路を備える半導体装置に適用すれば、リコンフィギュラブル回路のそれぞれにおいて、圧縮された設定情報から復号された設定情報により実行回路を構築して演算を行うという処理を遅延なく行えるようになる。その結果、リコンフィギュラブル回路の設定情報を圧縮された形で記憶装置に格納することが可能になることから、設定情報を記憶装置に書き込むのに要する時間が短縮されるという効果が期待できる。更に、設定情報を記憶装置に書き込むのに要する時間が短縮されることにより、動的リコンフィギュラブル回路による演算実行と新しい設定情報の記憶装置への書き込みを同時に実行することが容易になる。したがって、動的リコンフィギュラブル回路がパイプライン型に接続された半導体装置全体の情報処理速度が向上するという効果も期待できる。
【発明を実施するための最良の形態】
【００１６】
一実施の形態に係る半導体装置１を図１に示す。半導体装置１は、プロセッサなどの外部装置からの指示によりデータ処理を行うリコンフィギュラブルデバイスである。半導体装置１は、復元可能な圧縮符号化方式により情報量を圧縮した設定情報を記憶しており、動作時には、適宜設定情報を復号し、復号して得られた設定情報を用いて実行回路を構築する。
【００１７】
設定情報の圧縮と復号は、例えば、以下のように実現される。まず、設定情報を構成するビット列（「設定ビット」という）の各部に対して、その各部のビット長よりも、ビット長が小さい符号を割り当てる。次に、符号と設定情報の各部との対応関係を表す辞書を作成する。このようにすることで、設定情報の各部は、符号と辞書とにより表現される。設定情報を復号する際には、符号と辞書とを取得し、符号に対応する設定情報を辞書から求める。
【００１８】
半導体装置１は、４つの演算ユニット１０Ａ〜Ｄと、コントローラ１１と、入出力バッファ１２と、コードバッファ１３と、コード転送制御部１４とを有する。なお、ここでは、データ処理とは、個々の演算を行った一連の演算の総称である。また、演算ユニットの数は４つに限定されない。
【００１９】
データ処理を実現する４つの演算ユニット１０Ａ〜Ｄは、パイプライン型に接続される。演算ユニット１０Ａから演算ユニット１０Ｄを通じて、データと、圧縮された設定ビットの辞書情報と、設定ＩＤとが１サイクルずつ伝搬する。ここで、圧縮された設定ビットの辞書情報とは、符号と元のデータとの対応関係を示す情報のことである。設定ＩＤとは、複数の設定ビットから１つの設定ビットを選択するための識別子である。サイクルとは、記憶素子部の値が変化してから次に記憶素子部の値が変化するまでの、同期式回路における最小時間単位のことである。
【００２０】
また、符号情報とは、コントローラ１１が送信する設定ＩＤの指定により演算ユニット１０Ａ〜Ｄが行う複数の演算を定める設定ビットが上記辞書情報において格納されている位置を指定するポインタを前記複数の演算ごとに含む情報のことである。
【００２１】
コントローラ１１は、演算ユニット１０Ａおよび入出力バッファ１２に接続される。入出力バッファ１２には演算ユニット１０Ａおよび１０Ｄが接続される。コードバッファ１３は、コード転送制御部１４に接続されており、コード転送制御部１４はコントローラ１１および演算ユニット１０Ａ〜Ｄに接続される。
【００２２】
入出力バッファ１２は、データ処理の開始時に半導体装置１に対して与えられるデータや、半導体装置１によるデータ処理の中間結果または最終結果を一時的に保持する。入出力バッファ１２には、データ処理の開始前にプロセッサなどの外部装置により初期の入力データが書き込まれる。半導体装置１は、入出力バッファ１２に保持されたデータ処理の中間結果を再び入力データとして用い、データ処理を続けることもできる。入出力バッファ１２に保持された最終結果は、プロセッサなどの外部装置により入出力バッファ１２から読み出される。
【００２３】
コードバッファ１３には、コントローラ１１が発行する設定ＩＤと入出力バッファ１２のアドレスとをサイクルごとに規定するコントローラ１１のプログラムコード（以下、単に「プログラムコード」という）と、演算ユニット１０Ａ〜Ｄの設定ビット列を圧縮したビット列（以下、「圧縮された設定ビット」という）とが格納される。これらプログラムコードおよび圧縮された設定ビット列は、データ処理の開始前にプロセッサなどの外部装置によりコードバッファ１３に書き込まれる。
【００２４】
コード転送制御部１４は、データ処理の開始前に、プロセッサなどの外部装置からの指示にしたがってコードバッファ１３からプログラムコードおよび圧縮された設定ビットを読み出し、プログラムコードおよび圧縮された設定ビットの辞書情報をコントローラ１１に転送する。また、圧縮された設定ビットの符号情報の各部分は、それぞれ演算ユニット１０Ａ〜Ｄのいずれかに転送される。
【００２５】
演算ユニット１０Ａ〜Ｄの中にある記憶部には複数の設定ビットを記憶可能であり、それぞれが設定ＩＤと対応づけられている。設定ビットの圧縮は設定ＩＤごとに行われ、同じ設定ＩＤに対応する演算ユニット１０Ａ〜Ｄの設定ビットを圧縮することにより、設定ＩＤごとに辞書情報と符号情報が生成される。コード転送制御部１４により、これら複数の辞書情報と符号情報が、それぞれコントローラ１１と演算ユニット１０Ａ〜Ｄに転送される。
【００２６】
コントローラ１１は、コントローラ１１の中にある記憶部に記録されたプログラムコードに従って、サイクルごとに設定ＩＤおよびその設定ＩＤに対応する圧縮された設定ビットの辞書情報を演算ユニット１０Ａに送る機能と、その同じコードに従って、サイクルごとに入出力バッファ１２からのデータ読み出しと入出力バッファ１２へのデータ書き込みを制御する機能を持つ。また、データ処理の開始はプロセッサなどの外部装置によりコントローラ１１に通知され、データ処理が完了したらコントローラ１１はデータ処理の完了をプロセッサなどの外部装置に通知する。
【００２７】
なお、本実施の形態では、半導体装置１は、プロセッサなどの外部装置に接続されたものとして説明する。しかし、半導体装置１は、プロセッサに内蔵されていてもよい。このとき、コントローラ１１はプロセッサのプログラムコードに従って設定ＩＤや辞書情報を送出するとともに、プロセッサが備えるメモリやレジスタなどの読み書きを制御する機能を持つ。
【００２８】
演算ユニット１０Ａ〜Ｄのそれぞれは、圧縮された設定ビットを復号するためのデコーダ回路と、サイクルごとに設定を変更可能な演算器を持つユニットであって、コントローラ１１から送られる設定ＩＤに対応する圧縮された設定ビットの符号情報を、演算ユニット１０の中にある記憶部から読み出し、コントローラ１１から送られる辞書情報と読み出された符号情報とからデコーダ回路により設定ビットを復号し、その設定ビットにより演算器の設定を変更しながら、入力データに対して演算を行って結果を出力するという機能を持つ。また、演算ユニット１０Ａ〜Ｃのそれぞれは、接続されるパイプライン次段の演算ユニット１０Ｂ〜Ｄが設定ビットを復号するために用いられる辞書情報を、演算結果とともにパイプライン式に転送する。
【００２９】
パイプライン式転送とは、例えばあるサイクルに演算ユニット１０Ａが出力する演算結果と辞書情報が、次のサイクルには演算ユニット１０Ｂの入力になるというように、演算ユニット１０の出力が１サイクルずつパイプラインを構成する演算ユニット１０Ａ〜Ｄの間を転送されていくようなものを意味する。
【００３０】
以上が、本実施の形態に係る半導体装置１を構成する各ユニットの概要の説明である。
【００３１】
次に、本実施の形態に係る半導体装置１における処理の開始から終了までの流れの概要を説明する。半導体装置１の処理は、データ処理前の初期化処理とデータ処理との２つに大別できる。
【００３２】
まず、初期化処理について説明する。
【００３３】
プロセッサなどの外部装置により、半導体装置１への入力データが入出力バッファ１２に格納される。また、外部装置により、コントローラ１１の動作を規定するプログラムコードと、圧縮された演算ユニット１０Ａ〜Ｄの設定ビットが、コードバッファ１３に格納される。
【００３４】
次に、外部装置がコード転送制御部１４にコード転送の開始を通知する。コード転送制御部１４は通知を受けて、プログラムコードと圧縮された設定ビットをコードバッファ１３から読み出して、プログラムコードおよび複数の圧縮された設定ビットの辞書情報をコントローラ１１に転送し、また複数の圧縮された設定ビットの符号情報を演算ユニット１０Ａ〜Ｄに転送する。転送されたプログラムコードと圧縮された設定ビットの辞書情報はコントローラ１１の内部にある記憶部に格納される。また、圧縮された設定ビットの符号情報の各部分は、演算ユニット１０Ａ〜Ｄのいずれかの内部にある記憶部に格納される。
【００３５】
コード転送制御部１４は、コード転送が完了後にプロセッサなどの外部装置にコード転送の完了を通知する。プロセッサなどの外部装置は、コード転送完了の通知を受けて、コントローラ１１にデータ処理の開始を通知する。初期化処理において行われる処理は以上である。
【００３６】
次に、データ処理について説明する。
【００３７】
コントローラ１１は内部の記憶部に格納されたプログラムコードを毎サイクル解釈し、それに従ってサイクルごとに設定ＩＤと、その設定ＩＤに対応する圧縮された設定ビットの辞書情報とを演算ユニット１０Ａにパイプライン式に転送する。またコントローラ１１は、同じコードに従って、サイクルごとに入出力バッファ１２へデータ読み出しのための制御情報と、データ書き込みのための制御情報とを送る。
【００３８】
入出力バッファ１２は、コントローラ１１からのデータ読み出しの要求を受け取るたびに、同入出力バッファ１２が記憶しているデータを読み出し、演算ユニット１０Ａに対してパイプライン式に転送する。また、データ書き込みのための要求を受け取るたびに、その情報に従って演算ユニット１０Ｄから出力されたデータを同入出力バッファ１２内に書き込む。
【００３９】
演算ユニット１０は、設定ＩＤと、圧縮された設定ビットの辞書情報とを受け取るたびに、内部の記憶部に格納された、圧縮された設定ビットの符号情報の一つを設定ＩＤに従って読み出し、受け取った辞書情報と、読み出された符号情報とから設定ビットをデコーダにより復号し、これにより復号された設定ビットを内部の演算器に適用して演算器の設定を変更する。演算ユニット１０では、演算ユニット１０の入力データに対し、設定を変更された演算器により演算が行われる。
【００４０】
また、演算ユニット１０は、パイプラインの次段の演算ユニット１０が設定ビットを復号するのに必要な辞書情報を生成する。生成された辞書情報は、演算器の演算結果とともに次段の演算ユニット１０にパイプライン式に転送される。
【００４１】
コントローラ１１が全てのコードを解釈し終えた時点で、コントローラ１１はプロセッサなどの外部装置に処理の完了を通知し、データ処理は終了する。
【００４２】
プロセッサなどの外部装置は、処理の完了通知を受けてから規定サイクル以上たった後に、入出力バッファ１２に蓄えられた半導体装置１の演算結果を読み出す。この規定サイクルは、コントローラ１１が処理の完了を通知してから、コントローラ１１が最後に発行した設定ＩＤがパイプライン最終段の演算ユニット１０に到達するまでのサイクル数と、パイプライン最終段の演算ユニット１０の演算結果を入出力バッファ１２に書き込むのに要するサイクル数とを加えたサイクル数である。
【００４３】
以上が、本実施の形態に係る半導体装置１におけるデータ処理の開始から終了までの流れである。
【００４４】
次に、以上のような半導体装置１における処理を実現する、演算ユニット１０、コントローラ１１およびコード転送制御部１４のより具体的な実施形態を幾つか説明する。これら実施形態の説明においては、設定ＩＤの種類数は４であるとしているが、半導体装置１に求められる性能に応じて、設定ＩＤの種類数は変更してもよく、設定ＩＤの種類数に応じて演算ユニット１０、コントローラ１１およびコード転送制御部１４の構成は適宜変更され得る。
【００４５】
図２はコード転送制御部１４の実現例を示す図である。コード転送制御部１４は、ユニットタグ生成部１４０と、コードタグカウンタ１４１とコードアドレスカウンタ１４２とを有する。コード転送制御部１４は、プロセッサなどの外部装置から与えられるコード転送要求に従ってコードバッファ１３からコントローラ１１のプログラムコードと圧縮された演算ユニット１０Ａ〜Ｄの設定ビットを読み出し、読み出されたプログラムコードおよび設定ビットが書き込まれるコントローラ１１または演算ユニット１０Ａ〜Ｄの記憶部を一意に識別可能なタグとともに、コントローラ１１と演算ユニット１０Ａ〜Ｄにプログラムコードおよび設定ビットを転送する。コントローラ１１および演算ユニット１０Ａ〜Ｄは、それぞれ転送されるコードに付加されるタグがコントローラ１１および演算ユニット１０Ａ〜Ｄが所有する記憶部を指し示すものであるかどうかを判定し、そうである場合には記憶部にそのコードを書き込む。
【００４６】
図３はユニットタグ生成部１４０の状態遷移図である。初期状態はＳ０である。プロセッサなどの外部装置からコード転送要求を受け取ると、ユニットタグ生成部１４０の状態はＳ０からＳ１に遷移し、その際にコードタグカウンタ１４１にセット信号１が初期値信号０とともに与えられ、コードタグカウンタ１４１の出力は０になる。また、コードアドレスカウンタ１４２にはセット信号１と、初期値信号としてコード転送要求のアドレス部が与えられ、コードアドレスカウンタ１４２の出力はこのアドレスになる。
【００４７】
状態Ｓ１では、コードタグカウンタ１４１の出力がコード転送要求のプログラムコードサイズ部より小さい場合には、コードアドレスカウンタ１４２が示すコードバッファ１３のアドレスからコードを読み出し、そのコードにコントローラ１１のプログラムコード記憶部を示すユニットタグ“００００１”（２進表現）と、コードタグカウンタ１４１の値とからなるタグを付加して、コントローラ１１および演算ユニット１０Ａ〜Ｄに転送する。転送されたコードは、コントローラ１１のプログラムコード記憶部の、コードタグカウンタ１４１が示すアドレス位置に書き込まれる。そして、状態Ｓ１に遷移する。
【００４８】
また、コードタグカウンタ１４１およびコードアドレスカウンタ１４２にはインクリメント信号１が出力され、これらカウンタの値はサイクルの終わりにおいて１増やされる。
【００４９】
一方、状態Ｓ１において、コードタグカウンタ１４１の出力がコード転送要求のプログラムコードサイズ部と等しい場合には、ユニットタグ“０００００”にコードタグカウンタ１４１の値が付加されたものがコードタグとしてコードに付加されて、コントローラ１１および演算ユニット１０Ａ〜Ｄに転送される。転送されたコードは、コントローラ１１および演算ユニット１０Ａ〜Ｄのいずれの記憶部にも記録されない。また、コードタグカウンタ１４１の出力はサイクルの終わりに０にリセットされ、コードアドレスカウンタ１４２の値は変化しない。そして、状態Ｓ２に遷移する。
【００５０】
同様にして、状態Ｓ２〜Ｓ５では、コントローラ１１に書き込まれる圧縮された設定ビットの辞書情報が、設定ＩＤごとに順に転送される。ここでは、設定ＩＤの種類は４種類のため、４つの状態が用いられている。また、状態Ｓ６〜Ｓ９においても同様にして、演算ユニット１０Ａ〜Ｄに書き込まれる圧縮された設定ビットの符号情報がそれぞれ転送される。状態Ｓ２〜Ｓ５とは異なり、状態Ｓ６〜Ｓ９は演算ユニット１０Ａ〜Ｄに対応しており、それぞれの状態において各設定ＩＤに対応する符号情報が順に転送される。
【００５１】
状態Ｓ９において、コードタグカウンタ１４１の出力がコード転送要求の符号サイズと等しい場合には、プロセッサなどの外部装置にコード転送の完了を通知して、状態Ｓ０に戻る。
【００５２】
以上が、コード転送制御部１４の実現例とその動作に関する説明である。
【００５３】
図４はコントローラ１１の実現例を示す図である。コントローラ１１は制御部１１Ａと実行制御メモリ１１Ｂと辞書メモリ１１０〜１１３とを持つ。制御部１１Ａは実行制御メモリ１１Ｂに接続されている。実行制御メモリ１１Ｂにはコントローラ１１で実行されるプログラムコードが記録され、辞書メモリ１１０〜１１３には圧縮された演算ユニット１０Ａ〜Ｄの設定ビットの辞書情報が設定ＩＤごとに記録される。辞書メモリ１１０〜１１３の数は半導体装置１の設定ＩＤの種類数に等しい。
【００５４】
実行制御メモリ１１Ｂと辞書メモリ１１０〜１１３への書き込みは初期化処理において行われる。コード転送制御部１４から転送されるコードに付加されるコードタグの上位３ビットと、実行制御メモリ１１Ｂおよび辞書メモリ１１０〜１１３を示す識別子との比較結果が、それぞれ実行制御メモリ１１Ｂおよび辞書メモリ１１０〜１１３への書き込み許可信号となり、書き込み許可信号が１の場合には、コード転送制御部１４から転送されるコードタグの下位ビットが示すアドレスにコードが書き込まれる。
【００５５】
プロセッサなどの外部装置からデータ処理の開始が通知されると、制御部１１Ａは、実行制御メモリ１１Ｂに格納されているプログラムコードをアドレス０から順に解釈し、その内容に従って動作を行う。
【００５６】
図５は実行制御メモリ１１Ｂに格納されるプログラムコードの構造例を示したものである。この例では、プログラムコードは、入力アドレスと、入力アドレスが有効かどうかを示すＶａｌｉｄＩビットと、出力アドレスと、出力アドレスが有効かどうかを示すＶａｌｉｄＯビットと、設定ＩＤとを有する。このようなプログラムコードは、１サイクルで１ラインずつ実行される。
【００５７】
制御部１１Ａは、入出力バッファ１２にデータ読み出しのための制御情報を送出する際には、プログラムコードから入力アドレスとＶａｌｉｄＩビットを解釈し、それらを入出力バッファ１２に送出する。入出力バッファ１２は、ＶａｌｉｄＩビットが１の場合には入力アドレスが示す位置にあるデータを読み出して、演算ユニット１０Ａに送出する。
【００５８】
制御部１１Ａは、入出力バッファ１２にデータ書き込みのための制御情報を送出する際には、プログラムコードから出力アドレスとＶａｌｉｄＯビットを解釈し、それらを入出力バッファ１２に送出する。それらの制御情報は、演算ユニット１０の数に相当するサイクル数の後に入出力バッファ１２に到達する。入出力バッファ１２は、ＶａｌｉｄＯビットが１の場合には、演算ユニット１０Ｄが出力するデータを出力アドレスが示す位置に書き込む。
【００５９】
制御部１１Ａは、設定ＩＤを演算ユニット１０にパイプライン式に転送する際には、プログラムコードから設定ＩＤを解釈して演算ユニット１０Ａに送出する。また、設定ＩＤに従って辞書メモリ１１０〜１１３のいずれかから圧縮された設定ビットの辞書情報を読み出し、演算ユニット１０Ａに送出する。図２、図３に示すコード転送制御部１４の実現例においては、設定ＩＤ０〜３がそれぞれ辞書メモリ１１０〜１１３に対応する。
【００６０】
なお、コントローラ１１がデータ読み出しのための制御情報を入出力バッファ１２へ送出してから演算ユニット１０Ａに入力データが届くまでの時間と、コントローラ１１が設定ＩＤおよび圧縮された設定ビットの辞書情報を送出してから、それらが演算ユニット１０Ａに届くまでの時間は等しくなるよう制御される必要がある。
【００６１】
そのために、入出力バッファ１２からのデータ読み出しに数サイクルを要するのであれば、それに合わせて、図４のようにタイミング調整のためのラッチ１１Ｃを数サイクル分挿入し、設定ＩＤおよび辞書情報が演算ユニット１０Ａに届くまでの時間も数サイクル遅れるようにする。
【００６２】
このようにして制御部１１Ａは、実行制御メモリ１１Ｂにあるプログラムコードをアドレス０から順に解釈していき、全てのプログラムコードを解釈し終えたら、プロセッサなどの外部装置に処理の完了を通知して動作を停止する。
【００６３】
以上がコントローラ１１の実現例とその動作に関する説明である。
【００６４】
図６は演算ユニット１０の実現例を示す図である。演算ユニット１０は、演算器１００と設定ビットメモリ１０１とデコーダ１０２とデータパイプラインレジスタ１０３と制御パイプラインレジスタ１０４Ａ〜Ｂとを持つ。演算器１００のデータ入力信号は、演算ユニット１０Ａについては入出力バッファ１２に接続され、演算ユニット１０Ｂ〜Ｄについてはパイプライン前段の演算ユニット１０Ａ〜Ｃのデータパイプラインレジスタ１０３に接続される。また、演算器１００の設定入力信号はデコーダ１０２の出力に接続され、演算器１００のデータ出力信号はデータパイプラインレジスタ１０３に接続される。
【００６５】
設定ビットメモリ１０１の読み出しアドレス信号は、演算ユニット１０Ａについてはコントローラ１１の設定ＩＤ出力信号に接続され、演算ユニット１０Ｂ〜Ｄについてはパイプライン前段の演算ユニット１０Ａ〜Ｃの制御パイプラインレジスタ１０４Ａに接続される。また、設定ビットメモリ１０１の書き込み制御信号はコード転送制御部１４に接続される。また、設定ビットメモリ１０１のデータ出力信号はデコーダ１０２の符号入力信号に接続される。
【００６６】
設定ビットメモリ１０１の読み出しアドレス信号はまた、制御パイプラインレジスタ１０３Ｂの入力にも接続されている。また、デコーダ１０２の辞書入力信号は、演算ユニット１０Ａについてはコントローラ１１の辞書出力信号に接続され、演算ユニット１０Ｂ〜Ｄについてはパイプライン前段の演算ユニット１０Ａ〜Ｃの制御パイプラインレジスタ１０４Ｂに接続される。
【００６７】
設定ビットメモリ１０１への書き込みは初期化処理において行われる。コード転送制御部１４から転送されるコードに付加されるコードタグの上位３ビットと、設定ビットメモリ１０１を示す識別子との比較結果が、設定ビットメモリ１０１への書き込み許可信号となり、書き込み許可信号が１の場合には、コード転送制御部１４から転送されるコードタグの下位ビットが示すアドレスにコードが書き込まれる。
【００６８】
図７は演算器１００の一例を示す図である。演算器１００は８ビットのＡＬＵとシフタをそれぞれ４つずつ備えており、３２ビットの２入力に対して、８ビット単位で異なる演算を行うよう設定できる。この演算結果を、３２ビットの出力の一つとする。また、演算器１００はクロスバースイッチを備えシフタからの８ビット出力４つの配置順を変更した結果を３２ビット出力の一つとする。
【００６９】
設定ビット長は８ビット演算あたり、ＡＬＵの入力の一つを直値とするかどうかを決める入力モードが１ビット、直値が８ビット、ＡＬＵ設定が２ビット、シフト値が３ビット、クロスバースイッチ設定が２ビットの計１６ビットからなり、演算器１００全体では６４ビットの設定ビットとなる。
【００７０】
次に、演算ユニット１０が備えるデコーダ１０２の実現例について説明する。
【００７１】
デコーダ１０２の構成は、演算ユニット１０の設定ビットをどのように圧縮するかに依存する。ここでは、例として３通りの圧縮方法を示し、そのそれぞれについてデコーダ１０２の実現例を示す。なお、演算器１００の構成は図７に示したものとする。
【００７２】
図８は圧縮方法１を説明するための図である。圧縮方法１では、辞書情報のサイズを２５６ビットとし、符号情報のサイズを演算ユニット１０あたり１６ビットとする。辞書情報は、設定ＩＤにおいて演算ユニット１０Ａ〜Ｄで行われる全ての８ビット演算の設定を表す。演算器１００では、８ビット演算あたり１６ビットの設定ビットを必要とするので、この場合の辞書情報は最大で１６の８ビット演算を表すことができる。
【００７３】
一方、符号情報は、演算ユニット１０で行われる４つの８ビット演算の設定として、辞書情報が表す８ビット演算の設定のどれを用いるかを示す辞書位置ビットを表す。この場合の辞書情報は最大１６の８ビット演算を表すので、その中から一つの設定を特定するには演算ユニット１０で行われる８ビット演算あたり４ビットが必要で、演算ユニット１０あたりの符号情報は１６ビットとなる。
【００７４】
図９は圧縮方式１を実現するためのデコーダ１０２の実現例である。デコーダ１０２は、マルチプレクサ１０２０Ａ〜Ｄを有する。マルチプレクサ１０２０Ａ〜Ｄには、符号情報が表す４つの８ビット演算のための符号がセレクト信号としてそれぞれ入力され、そのセレクト信号に従ってコントローラから辞書情報として供給される１６の設定ビットから一つを選択することで、符号情報から設定ビットを復号する。また、デコーダ１０２は入力された辞書情報をそのまま次段の演算ユニット１０で用いられる辞書情報として出力する。
【００７５】
圧縮方式１では、演算ユニット１０Ａ〜Ｄの符号情報に必要なサイズの総和は、演算ユニット１０Ａ〜Ｄの設定によらず６４ビットであるので、演算ユニット１０Ａ〜Ｄで実行する８ビット演算の種類数が１２未満であれば、辞書情報と符号情報のサイズの合計は、圧縮前の設定ビットのサイズである２５６ビットより小さくなり、コントローラ１１および演算ユニット１０Ａ〜Ｄの記憶部に書き込む情報量を減らすことができる。
【００７６】
図１０は圧縮方式２を説明するための図である。圧縮方式２では、辞書情報のサイズを６４ビットとし、符号情報のサイズを演算ユニット１０あたり７６ビットとする。辞書情報は、４つの１６ビット演算の設定ビットを表す。符号情報の上位１２ビットは、８ビット演算ごとに、辞書情報が表す設定ビットと、符号情報の下位ビットが表す設定ビットのうち、どの設定ビットを用いるかを示す辞書位置ビットを、３ビットずつ表す。また、符号情報の下位６４ビットは、演算ユニット１０で行われる演算のうち、辞書情報には含まれない演算の設定ビットを上位から順に表す。
【００７７】
図１１は圧縮方式２を実現するためのデコーダ１０２の実現例である。デコーダ１０２はマルチプレクサ１０２１Ａ〜Ｈと、マルチプレクサ１０２２Ａ〜Ｄとを有する。マルチプレクサ１０２１Ａ〜Ｈには、符号情報に記録される辞書位置ビットの下位２ビットがそれぞれセレクト信号として入力され、そのセレクト信号に従ってコントローラから供給される辞書情報の設定ビットから１つと、符号情報の設定ビットから１つとを演算器１００ごとに選択する。さらに、符号情報に記録される辞書使用ビットの最上位ビットに従って、マルチプレクサ１０２２Ａ〜Ｄにより辞書情報の設定ビットと符号情報の設定ビットのいずれか一方をそれぞれ選択することで、符号情報から設定ビットを復号する。また、デコーダ１０２は入力された辞書情報をそのまま次段の演算ユニット１０で用いられる辞書情報として出力する。
【００７８】
圧縮方式２では、８ビット演算あたりの辞書位置ビットのサイズは、圧縮方式１より１ビット少ない３ビットなので、最も効率よく圧縮できた場合の辞書情報と符号情報のサイズの総和は、圧縮方式１より小さくなる。しかしながら、演算ユニット１０はそれぞれ辞書情報として４種類の８ビット演算のみしか受け取れないため、演算ユニット１０Ａ〜Ｄで行われる８ビット演算の種類数が５種類以上の場合、演算ユニット１０Ａ〜Ｄの間で８ビット演算が共有されるパターンによっては、２つ以上の演算ユニット１０の符号情報において同一の設定ビットが重複する場合が生じる。このような重複が２回以上生じる場合には、圧縮方式２の圧縮効率は圧縮方式１より低下する。
【００７９】
なお、辞書情報と符号情報に記録される８ビット演算の数が、重複も含めて１３未満であれば、圧縮後の辞書情報と符号情報のサイズの総和は圧縮前の設定ビットのサイズより小さくなる。
【００８０】
図１２は圧縮方式３を説明するための図である。圧縮方式３では、圧縮方式２と同様に辞書情報のサイズを６４ビット、符号情報のサイズを演算ユニット１０あたり７６ビットとする。辞書情報に４つの１６ビット演算の設定ビットが記録されるのも圧縮方式２と同様である。一方、符号情報の上位８ビットは、８ビット演算ごとに、辞書情報に記録される設定ビットのうち、どの設定ビットを用いるかを示す辞書位置ビットを、２ビットずつ表す。また、続く符号情報の４ビットは、辞書情報の設定ビットのうち次段の演算ユニットでは使われない８ビット演算を示す設定交換ビットを表し、符号情報の下位６４ビットは、次段の演算ユニットで使われる８ビット演算のうち、辞書情報に含まれない演算の設定ビットを表す。
【００８１】
図１３は圧縮方式３を実現するためのデコーダ１０２の実現例である。デコーダ１０２は、マルチプレクサ１０２３Ａ〜Ｄと、マルチプレクサ１０２４Ａ〜Ｃと、プライオリティエンコーダ１０２５Ａ〜Ｃと、マルチプレクサ１０２６Ａ〜Ｄとを有する。マルチプレクサ１０２３Ａ〜Ｄには、セレクト信号として辞書位置ビットがそれぞれ入力され、そのセレクト信号に従って辞書情報の４つの設定ビットから一つの設定ビットを選ぶことで、符号情報から設定ビットを復号する。
【００８２】
一方、プライオリティエンコーダ１０２５Ａ〜Ｃには設定交換ビットが入力され、設定交換ビット中に１が１〜３番目に出現する設定交換ビットのビット位置（最下位ビットが０、最上位ビットが３）がそれぞれ出力される。設定交換ビットの１の数が求める数に満たない場合には、プライオリティエンコーダ１０２５Ａ〜Ｃは０を出力する。そして、プライオリティエンコーダ１０２５Ａ〜Ｃの出力をマルチプレクサ１０２４Ａ〜Ｃのセレクト信号とすることで、マルチプレクサ１０２４Ａ〜Ｃからは辞書情報の１〜３番目の設定ビットと置き換えられる設定ビットが出力される。そして、設定交換ビットの各ビットをマルチプレクサ１０２６Ａ〜Ｄのセレクト信号とすることにより、辞書情報に含まれる８ビット演算の設定ビットのそれぞれと、マルチプレクサ１０２４Ａ〜Ｃから出力される設定ビットおよび符号情報の下位１６ビットに記憶される設定ビットのそれぞれとを選択する。マルチプレクサ１０２６Ｄでは、辞書情報の設定ビット３と符号情報の設定ビット３とを選択する。そしてデコーダ１０２は、マルチプレクサ１０２６Ａ〜Ｄの出力を次段の演算ユニット１０で用いられる辞書情報として出力する。
【００８３】
圧縮方式３では、辞書情報を演算ユニット１０Ａ〜Ｄのパイプラインを流れる過程で変更することができるため、圧縮方式２では同一の設定ビットを複数の演算ユニット１０の符号情報に重複して持つ必要がある場合に、圧縮方式３では重複が生じない場合がある。一方で、例えば演算ユニット１０Ａと演算ユニット１０Ｂ、演算ユニット１０Ｃと演算ユニット１０Ｄではそれぞれ全く異なる４種類の８ビット演算を行っているが、演算ユニット１０Ａと演算ユニット１０Ｃ、演算ユニット１０Ｂと演算ユニット１０Ｄでは全く等しい８ビット演算を行っている場合などでは、演算ユニット１０Ｂ〜Ｄの符号情報にそれぞれ４種類の設定ビットを格納する必要があるため、圧縮方式１や２よりも圧縮効率が悪くなる。
【００８４】
以上、圧縮方式の例として圧縮方式１〜３と、それに対応するデコーダ１０２の実現例を述べたが、上述の通り演算ユニット１０Ａ〜Ｄにおける８ビット演算の共有パターンによって圧縮効率が最もよい圧縮方式は異なるので、例えば辞書情報に圧縮方式１〜３のいずれを用いるかを示す２ビットの圧縮方式ＩＤを付加し、また演算ユニット１０は圧縮方式１〜３に対応する３つのデコーダ１０２を備えることで、圧縮方式ＩＤに従って設定ビットの復号に用いるデコーダ１０２を選択して設定ビットを復号するようにしてもよい。
【００８５】
以上が演算ユニット１０の実現例に関する説明である。次に、演算ユニット１０の動作を説明するために、半導体装置１がデータ処理を行う際の動作例を示す。
【００８６】
図１４は半導体装置１がデータ処理を行う際の動作を説明するタイミングチャートである。サイクル１の時点では、プログラムコードと圧縮された設定ビットの辞書情報はコントローラ１１の記憶部に、圧縮された設定ビットの符号情報演算ユニット１０Ａ〜Ｄに既にそれぞれ格納されている。
【００８７】
サイクル１において、コントローラ１１は設定ＩＤ“０”と辞書情報“Ｄ０”を送出する。また、コントローラ１１は入出力バッファ１２を介してデータ“ｄ０”を送出する。
【００８８】
サイクル２において、演算ユニット１０Ａは設定ＩＤ“０”を受け取り、設定ビットメモリ１０１のアドレス０から符号情報“Ｃ００”が読み出される。またデコーダ１０２は辞書情報“Ｄ０”と符号情報“Ｃ００”から設定ビット“ｃ００”を復号して、演算器１００に入力する。さらにデコーダ１０２は、前述の圧縮方式に示される規則に従って、演算ユニット１０Ｂに辞書情報“Ｄ００”を送出する。同サイクルにおいて、コントローラ１１は設定ＩＤ“３”と辞書情報“Ｄ３”を送出する。また、コントローラ１１は入出力バッファ１２を介してデータ“ｄ１”を送出する。
【００８９】
サイクル３において、演算ユニット１０Ａの演算器１００は設定ビット“ｃ００”の設定においてデータ“ｄ０”を入力として演算“ｅ００”を実行し、演算結果“ｄ００”をデータパイプラインレジスタ１０３に書き込む。一方、デコーダ１０２は、設定ビットメモリ１０１のアドレス３から読み出された符号情報“Ｃ０３”と辞書情報“Ｄ３”から設定ビット“ｃ１３”を復号して、演算器１００に入力するとともに、演算ユニット１０Ｂに辞書情報“Ｄ３０”を送出する。同サイクルにおいて、演算ユニット１０Ｂは設定ＩＤ“０”を受け取り、設定ビットメモリ１０１のアドレス０から符号情報“Ｃ１０”が読み出される。またデコーダ１０２は辞書情報“Ｄ００”と符号情報“Ｃ１０”から設定ビット“ｃ１０”を復号して、演算器１００に入力するとともに、演算ユニット１０Ｃに辞書情報“Ｄ０１”を送出する。また同サイクルにおいて、コントローラ１１は設定ＩＤ“１”と辞書情報“Ｄ１”を送出する。また、コントローラ１１は入出力バッファ１２を介してデータ“ｄ２”を送出する。
【００９０】
サイクル４において、演算ユニット１０Ａの演算器１００は設定ビット“ｃ０３”の設定においてデータ“ｄ１”を入力として演算“ｅ０３”を実行し、演算結果“ｄ１０”をデータパイプラインレジスタ１０３に書き込む。一方、デコーダ１０２は、設定ビットメモリ１０１のアドレス１から読み出された符号情報“Ｃ０１”と辞書情報“Ｄ１”から設定ビット“ｃ０１”を復号して、演算器１００に入力するとともに、演算ユニット１０Ｂに辞書情報“Ｄ１０”を送出する。同サイクルにおいて、演算ユニット１０Ｂの演算器１００は設定ビット“ｃ１０”の設定においてデータ“ｄ００”を入力として演算“ｅ１０”を実行し、演算結果“ｄ０１”をデータパイプラインレジスタ１０３に書き込む。一方、デコーダ１０２は、設定ビットメモリ１０１のアドレス３から読み出された符号情報“Ｃ１３”と辞書情報“Ｄ３０”から設定ビット“ｃ０３”を復号して、演算器１００に入力するとともに、演算ユニット１０Ｃに辞書情報“Ｄ３１”を送出する。同サイクルにおいて、演算ユニット１０Ｃは設定ＩＤ“０”を受け取り、設定ビットメモリ１０１のアドレス０から符号情報“Ｃ２０”が読み出される。またデコーダ１０２は辞書情報“Ｄ０１”と符号情報“Ｃ２０”から設定ビット“ｃ２０”を復号して、演算器１００に入力するとともに、演算ユニット１０Ｃに辞書情報“Ｄ０２”を送出する。同サイクルにおいて、コントローラ１１は設定ＩＤ“２”と辞書情報“Ｄ２”を送出する。また、コントローラ１１は入出力バッファ１２を介してデータ“ｄ３”を送出する。
【００９１】
以後のサイクルにおける、コントローラ１１および演算ユニット１０Ａ〜Ｄの動作は同様なので省略する。以上が、半導体装置１がデータ処理を行う際の動作例に関する説明である。
【００９２】
上述の説明の通り、半導体装置１においては、図１４に示すように、演算ユニット１０Ａ〜Ｄは、サイクルごとに、受け取った、圧縮された設定ビットの辞書情報を用いてそれぞれの演算ユニット１０の設定ビットのみを復号すればよいので、半導体装置１が備える演算ユニット１０の数が増大しても、１サイクルに要する時間は増大しない。
【００９３】
また、半導体装置１においては、コントローラ１１から辞書情報をパイプライン式に演算ユニット１０Ａ〜Ｄに転送して設定ビットを復元するため、図１４におけるサイクル３のように、圧縮された設定ビットの復号を複数の演算ユニット１０でサイクルごとに並列に行うことができる。さらに図１４におけるサイクル４のように、演算ユニット１０の演算器１００における復号された設定ビットを用いた演算も、複数の演算ユニット１０でサイクルごとに並列に行うことができる。
【００９４】
以上説明した本実施の形態によれば、パイプライン型に接続された複数の演算ユニット１０のそれぞれで、圧縮された設定情報から復号された設定ビットにより演算器１００の設定を変更して演算を行うという処理を遅延なく行えるようになる。
【００９５】
そして、このような半導体装置を用いることで、動的リコンフィギュラブル回路の設定情報を圧縮された形で記憶装置に格納することが可能になるため、設定情報を記憶装置に書き込むのに要する時間を短縮することができる。
【００９６】
更に、このような半導体装置を用いることで設定情報を記憶装置に書き込むのに要する時間が短縮されることにより、動的リコンフィギュラブル回路による演算実行と新しい設定情報の記憶装置への書き込みを同時に実行することが容易になるため、動的リコンフィギュラブル回路がパイプライン型に接続された半導体装置全体の情報処理速度を向上させることも可能になる。
【００９７】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００９８】
【図１】実施形態に係る半導体装置を示すブロック図
【図２】実施形態に係るコード転送制御部を示すブロック図
【図３】実施形態に係るユニットタグ生成部の動作を示す状態遷移図
【図４】実施形態に係るコントローラを示すブロック図
【図５】実行制御メモリに記憶されるプログラムコードの一例を示す図
【図６】実施形態に係る演算ユニットを示すブロック図
【図７】実施形態に係る演算器の構成を示すブロック図
【図８】圧縮方法１における辞書情報と符号情報との関係を示す図
【図９】実施形態に係るデコーダの圧縮方法１における構成を示すブロック図
【図１０】圧縮方法２における辞書情報と符号情報との関係を示す図
【図１１】実施形態に係るデコーダの圧縮方法２における構成を示すブロック図
【図１２】圧縮方法３における辞書情報と符号情報との関係を示す図
【図１３】実施形態に係るデコーダの圧縮方法３における構成を示すブロック図
【図１４】コントローラ、各演算ユニットのサイクルごとの動作を示すタイミングチャート
【符号の説明】
【００９９】
１…半導体装置；
１０Ａ〜１０Ｄ…演算ユニット；
１００…演算器；
１０１…設定ビットメモリ；
１０２…デコーダ；
１０２０Ａ〜１０２０Ｄ，１０２１Ａ〜１０２１Ｈ，１０２２Ａ〜１０２２Ｄ，１０２３Ａ〜１０２３Ｄ，１０２４Ａ〜１０２４Ｃ，１０２６Ａ〜１０２６Ｄ…マルチプレクサ；
１０２５Ａ〜１０２５Ｃ…プライオリティエンコーダ；
１０３…データパイプラインレジスタ；
１０４Ａ〜１０４Ｂ…制御パイプラインレジスタ；
１１…コントローラ；
１１Ａ…制御部；
１１Ｂ…実行制御メモリ；
１１Ｃ…ラッチ；
１１０，１１１，１１２，１１３…辞書メモリ；
１２…入出力バッファ；
１３…コードバッファ；
１４…コード転送制御部；
１４０…ユニットタグ生成部；
１４１…コードタグカウンタ；
１４２…コードアドレスカウンタ
【図１】
0005025521.tif 000002
【図２】
0005025521.tif 000003
【図３】
0005025521.tif 000004
【図４】
0005025521.tif 000005
【図５】
0005025521.tif 000006
【図６】
0005025521.tif 000007
【図７】
0005025521.tif 000008
【図８】
0005025521.tif 000009
【図９】
0005025521.tif 000010
【図１０】
0005025521.tif 000011
【図１１】
0005025521.tif 000012
【図１２】
0005025521.tif 000013
【図１３】
0005025521.tif 000014
【図１４】
0005025521.tif 000015