半導体装置
【課題】圧縮された設定情報から遅延を生じることなく設定情報を復号し、実行回路を構築して演算を行えるようにする。
【解決手段】 第1設定ビットよりもビット長が短い第1符号情報を記憶しており、各符号情報に対応する各設定ビットを表す辞書情報を受信し、前記第1符号情報に対応する設定ビットを前記辞書情報から読み出すことにより前記第1設定ビットを求め、該第1設定ビットに従い設定を変更することにより複数の演算のいずれかを行って演算結果を得る第1の演算ユニットと、第2設定ビットよりもビット長が短い第2符号情報を記憶しており、前記辞書情報を前記第1の演算ユニットから受信し、前記第2符号情報に対応する設定ビットを前記辞書情報から読み出すことにより前記第2設定ビットを求め、該第2設定ビットに従い設定を変更することにより前記演算結果に対して前記複数の演算のいずれかを行う第2の演算ユニットとを具備する。
【解決手段】 第1設定ビットよりもビット長が短い第1符号情報を記憶しており、各符号情報に対応する各設定ビットを表す辞書情報を受信し、前記第1符号情報に対応する設定ビットを前記辞書情報から読み出すことにより前記第1設定ビットを求め、該第1設定ビットに従い設定を変更することにより複数の演算のいずれかを行って演算結果を得る第1の演算ユニットと、第2設定ビットよりもビット長が短い第2符号情報を記憶しており、前記辞書情報を前記第1の演算ユニットから受信し、前記第2符号情報に対応する設定ビットを前記辞書情報から読み出すことにより前記第2設定ビットを求め、該第2設定ビットに従い設定を変更することにより前記演算結果に対して前記複数の演算のいずれかを行う第2の演算ユニットとを具備する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、動的リコンフィギュラブル回路技術を用いた半導体装置に関する。
【背景技術】
【0002】
近年、携帯機器など低コスト・低消費電力が求められる機器においても、機能の複雑化、多様化が進み、このような機器にも高い性能が必要とされてきている。高性能と低消費電力を両立させるためには、専用ハードウェアの製造・開発は避けられない。しかしながら、機能の複雑化・多様化に伴い専用ハードウェアの製造・開発費は年々増大している。この製造・開発費を削減するものとして、動的リコンフィギュラブル回路技術を用いた半導体装置が注目されている。
【0003】
動的リコンフィギュラブル回路技術を用いた半導体装置は、FPGAのようなリコンフィギュラブル回路と、そのリコンフィギャラブル回路に実行させたい回路(以下、単に実行回路と称す)を構築するのに必要な設定情報を複数蓄えておくための記憶装置を備えており、ソフトウェアなどによりあらかじめ決められた規則に従って、動作時に必要な回路情報を読み出して実行回路を構築できる装置である。動作時に実行回路を変えられる点が、FPGAを用いた従来の半導体装置とは異なる。
【0004】
この半導体装置を用いると、FPGA同様に専用ハードウェアの開発費が低減されるだけでなく、実行回路を動的に構築することにより小さな半導体装置上に多様な機能が実現できるため、専用ハードウェアの製造費も低減されると期待されている。
【0005】
動的リコンフィギュラブル回路技術を用いた半導体装置の例としては、NECエレクトロニクスのDRP(Dynamically Reconfigurable Processor,「非特許文献1」参照)や、カーネギーメロン大学のPipeRench(「非特許文献2」参照)が挙げられる。
【0006】
NECエレクトロニクスのDRPは、演算を行う基本要素であるPE(Processing Element)が2次元アレイ状に並べられ、その中央に状態遷移コントローラが配置されるという構造を持つ。PEは実行回路を構築可能な演算装置で、PE内部にある命令メモリに演算の種類やPE間の接続関係といった設定情報が複数格納されている。各PEは状態遷移コントローラから与えられる命令ポインタに従って命令メモリから設定情報を読み出して、動的に実行回路を構築する。
【0007】
カーネギーメロン大学のPipeRenchでは、演算を行う基本要素である複数のPEと、それらを接続するバスから成るstripeが、パイプライン型に接続された構成を取っている。PEは実行回路を構築可能な演算装置で、グローバルバスによりPipeRenchの外部にある制御装置と接続されている。PEの演算の種類やバス接続関係といった設定情報は、PipeRenchの外部にある制御装置からグローバルバスを介してPEに転送され、その情報に従ってPEは動的に実行回路を構築する。
【非特許文献1】「リコンフィギュラブルシステム」、オーム社、ページ189−208
【非特許文献2】“PipeRench:a reconfigurable architecture and compiler”,IEEE Computer Volume 33,Issue 4,April 2000 Page(s):70−77
【発明の開示】
【発明が解決しようとする課題】
【0008】
高性能でかつ面積が小さく、消費電力が低い動的リコンフィギュラブル回路を用いた半導体装置を実現するためには、半導体装置が処理を行っている間に、後続の処理に必要な設定情報をできるだけ高速に記憶装置に格納できるようにする必要がある。これにより、半導体装置が予め備える記憶装置のサイズが小さくても、半導体装置上に様々な実行回路を大きな遅延なく構築できるようになるため、高性能でかつ面積が小さく、消費電力が低い半導体装置が実現可能となる。
【0009】
しかしながら、従来の動的リコンフィギュラブル回路を用いた半導体装置では、処理を行うために記憶装置に書いておく必要のある設定情報のサイズが十分に小さくないため、半導体装置が処理を行っている間に、後続の処理に必要な設定情報を十分に記憶装置に格納することは困難である。
【0010】
PipeRenchやDRPでは、半導体装置の設定変更を演算種類の変更など粗粒度の設定変更に限定することで、設定情報のサイズを小さくしているが、まだ設定情報のサイズが十分に小さくなっているとはいえない。
【0011】
動的リコンフィギュラブル回路を用いた半導体装置が備える記憶装置に書く設定情報のサイズを小さくする方法としては、半導体装置の記憶装置には元の設定情報を復元可能な圧縮符号方式により情報量を圧縮(以下、単に圧縮と呼ぶ)した設定情報を記憶しておき、実行回路の構築において適宜設定情報を復号して用いるという方法が考えられる。
【0012】
しかしながら、PipeRenchやDRPでは、一つの制御装置が複数の動的リコンフィギュラブル回路に対して同時に実行回路の構築を指示するため、制御装置が制御する動的リコンフィギュラブル回路の数がある程度大きくなると、復号に要する時間が増大して半導体装置の処理性能が低下するという問題がある。
【0013】
本発明は、上記に鑑みてなされたものであって、パイプライン型に接続された複数のリコンフィギュラブル回路のそれぞれにおいて、圧縮された設定情報から遅延を生じることなく設定情報を復号し、実行回路を構築して演算を行うことのできる半導体装置を提供することを目的とする。
【課題を解決するための手段】
【0014】
本発明の一観点に係る半導体記憶装置は、第1設定ビットよりもビット長が短い第1符号情報を記憶しており、各符号情報に対応する各設定ビットを表す辞書情報を受信し、前記第1符号情報に対応する設定ビットを前記辞書情報から読み出すことにより前記第1設定ビットを求め、該第1設定ビットに従い設定を変更することにより複数の演算のいずれかを行って演算結果を得る第1の演算ユニットと、第2設定ビットよりもビット長が短い第2符号情報を記憶しており、前記辞書情報を前記第1の演算ユニットから受信し、前記第2符号情報に対応する設定ビットを前記辞書情報から読み出すことにより前記第2設定ビットを求め、該第2設定ビットに従い設定を変更することにより前記演算結果に対して前記複数の演算のいずれかを行う第2の演算ユニットとを具備する。
【発明の効果】
【0015】
本発明をパイプライン型に接続された複数のリコンフィギュラブル回路を備える半導体装置に適用すれば、リコンフィギュラブル回路のそれぞれにおいて、圧縮された設定情報から復号された設定情報により実行回路を構築して演算を行うという処理を遅延なく行えるようになる。その結果、リコンフィギュラブル回路の設定情報を圧縮された形で記憶装置に格納することが可能になることから、設定情報を記憶装置に書き込むのに要する時間が短縮されるという効果が期待できる。更に、設定情報を記憶装置に書き込むのに要する時間が短縮されることにより、動的リコンフィギュラブル回路による演算実行と新しい設定情報の記憶装置への書き込みを同時に実行することが容易になる。したがって、動的リコンフィギュラブル回路がパイプライン型に接続された半導体装置全体の情報処理速度が向上するという効果も期待できる。
【発明を実施するための最良の形態】
【0016】
一実施の形態に係る半導体装置1を図1に示す。半導体装置1は、プロセッサなどの外部装置からの指示によりデータ処理を行うリコンフィギュラブルデバイスである。半導体装置1は、復元可能な圧縮符号化方式により情報量を圧縮した設定情報を記憶しており、動作時には、適宜設定情報を復号し、復号して得られた設定情報を用いて実行回路を構築する。
【0017】
設定情報の圧縮と復号は、例えば、以下のように実現される。まず、設定情報を構成するビット列(「設定ビット」という)の各部に対して、その各部のビット長よりも、ビット長が小さい符号を割り当てる。次に、符号と設定情報の各部との対応関係を表す辞書を作成する。このようにすることで、設定情報の各部は、符号と辞書とにより表現される。設定情報を復号する際には、符号と辞書とを取得し、符号に対応する設定情報を辞書から求める。
【0018】
半導体装置1は、4つの演算ユニット10A〜Dと、コントローラ11と、入出力バッファ12と、コードバッファ13と、コード転送制御部14とを有する。なお、ここでは、データ処理とは、個々の演算を行った一連の演算の総称である。また、演算ユニットの数は4つに限定されない。
【0019】
データ処理を実現する4つの演算ユニット10A〜Dは、パイプライン型に接続される。演算ユニット10Aから演算ユニット10Dを通じて、データと、圧縮された設定ビットの辞書情報と、設定IDとが1サイクルずつ伝搬する。ここで、圧縮された設定ビットの辞書情報とは、符号と元のデータとの対応関係を示す情報のことである。設定IDとは、複数の設定ビットから1つの設定ビットを選択するための識別子である。サイクルとは、記憶素子部の値が変化してから次に記憶素子部の値が変化するまでの、同期式回路における最小時間単位のことである。
【0020】
また、符号情報とは、コントローラ11が送信する設定IDの指定により演算ユニット10A〜Dが行う複数の演算を定める設定ビットが上記辞書情報において格納されている位置を指定するポインタを前記複数の演算ごとに含む情報のことである。
【0021】
コントローラ11は、演算ユニット10Aおよび入出力バッファ12に接続される。入出力バッファ12には演算ユニット10Aおよび10Dが接続される。コードバッファ13は、コード転送制御部14に接続されており、コード転送制御部14はコントローラ11および演算ユニット10A〜Dに接続される。
【0022】
入出力バッファ12は、データ処理の開始時に半導体装置1に対して与えられるデータや、半導体装置1によるデータ処理の中間結果または最終結果を一時的に保持する。入出力バッファ12には、データ処理の開始前にプロセッサなどの外部装置により初期の入力データが書き込まれる。半導体装置1は、入出力バッファ12に保持されたデータ処理の中間結果を再び入力データとして用い、データ処理を続けることもできる。入出力バッファ12に保持された最終結果は、プロセッサなどの外部装置により入出力バッファ12から読み出される。
【0023】
コードバッファ13には、コントローラ11が発行する設定IDと入出力バッファ12のアドレスとをサイクルごとに規定するコントローラ11のプログラムコード(以下、単に「プログラムコード」という)と、演算ユニット10A〜Dの設定ビット列を圧縮したビット列(以下、「圧縮された設定ビット」という)とが格納される。これらプログラムコードおよび圧縮された設定ビット列は、データ処理の開始前にプロセッサなどの外部装置によりコードバッファ13に書き込まれる。
【0024】
コード転送制御部14は、データ処理の開始前に、プロセッサなどの外部装置からの指示にしたがってコードバッファ13からプログラムコードおよび圧縮された設定ビットを読み出し、プログラムコードおよび圧縮された設定ビットの辞書情報をコントローラ11に転送する。また、圧縮された設定ビットの符号情報の各部分は、それぞれ演算ユニット10A〜Dのいずれかに転送される。
【0025】
演算ユニット10A〜Dの中にある記憶部には複数の設定ビットを記憶可能であり、それぞれが設定IDと対応づけられている。設定ビットの圧縮は設定IDごとに行われ、同じ設定IDに対応する演算ユニット10A〜Dの設定ビットを圧縮することにより、設定IDごとに辞書情報と符号情報が生成される。コード転送制御部14により、これら複数の辞書情報と符号情報が、それぞれコントローラ11と演算ユニット10A〜Dに転送される。
【0026】
コントローラ11は、コントローラ11の中にある記憶部に記録されたプログラムコードに従って、サイクルごとに設定IDおよびその設定IDに対応する圧縮された設定ビットの辞書情報を演算ユニット10Aに送る機能と、その同じコードに従って、サイクルごとに入出力バッファ12からのデータ読み出しと入出力バッファ12へのデータ書き込みを制御する機能を持つ。また、データ処理の開始はプロセッサなどの外部装置によりコントローラ11に通知され、データ処理が完了したらコントローラ11はデータ処理の完了をプロセッサなどの外部装置に通知する。
【0027】
なお、本実施の形態では、半導体装置1は、プロセッサなどの外部装置に接続されたものとして説明する。しかし、半導体装置1は、プロセッサに内蔵されていてもよい。このとき、コントローラ11はプロセッサのプログラムコードに従って設定IDや辞書情報を送出するとともに、プロセッサが備えるメモリやレジスタなどの読み書きを制御する機能を持つ。
【0028】
演算ユニット10A〜Dのそれぞれは、圧縮された設定ビットを復号するためのデコーダ回路と、サイクルごとに設定を変更可能な演算器を持つユニットであって、コントローラ11から送られる設定IDに対応する圧縮された設定ビットの符号情報を、演算ユニット10の中にある記憶部から読み出し、コントローラ11から送られる辞書情報と読み出された符号情報とからデコーダ回路により設定ビットを復号し、その設定ビットにより演算器の設定を変更しながら、入力データに対して演算を行って結果を出力するという機能を持つ。また、演算ユニット10A〜Cのそれぞれは、接続されるパイプライン次段の演算ユニット10B〜Dが設定ビットを復号するために用いられる辞書情報を、演算結果とともにパイプライン式に転送する。
【0029】
パイプライン式転送とは、例えばあるサイクルに演算ユニット10Aが出力する演算結果と辞書情報が、次のサイクルには演算ユニット10Bの入力になるというように、演算ユニット10の出力が1サイクルずつパイプラインを構成する演算ユニット10A〜Dの間を転送されていくようなものを意味する。
【0030】
以上が、本実施の形態に係る半導体装置1を構成する各ユニットの概要の説明である。
【0031】
次に、本実施の形態に係る半導体装置1における処理の開始から終了までの流れの概要を説明する。半導体装置1の処理は、データ処理前の初期化処理とデータ処理との2つに大別できる。
【0032】
まず、初期化処理について説明する。
【0033】
プロセッサなどの外部装置により、半導体装置1への入力データが入出力バッファ12に格納される。また、外部装置により、コントローラ11の動作を規定するプログラムコードと、圧縮された演算ユニット10A〜Dの設定ビットが、コードバッファ13に格納される。
【0034】
次に、外部装置がコード転送制御部14にコード転送の開始を通知する。コード転送制御部14は通知を受けて、プログラムコードと圧縮された設定ビットをコードバッファ13から読み出して、プログラムコードおよび複数の圧縮された設定ビットの辞書情報をコントローラ11に転送し、また複数の圧縮された設定ビットの符号情報を演算ユニット10A〜Dに転送する。転送されたプログラムコードと圧縮された設定ビットの辞書情報はコントローラ11の内部にある記憶部に格納される。また、圧縮された設定ビットの符号情報の各部分は、演算ユニット10A〜Dのいずれかの内部にある記憶部に格納される。
【0035】
コード転送制御部14は、コード転送が完了後にプロセッサなどの外部装置にコード転送の完了を通知する。プロセッサなどの外部装置は、コード転送完了の通知を受けて、コントローラ11にデータ処理の開始を通知する。初期化処理において行われる処理は以上である。
【0036】
次に、データ処理について説明する。
【0037】
コントローラ11は内部の記憶部に格納されたプログラムコードを毎サイクル解釈し、それに従ってサイクルごとに設定IDと、その設定IDに対応する圧縮された設定ビットの辞書情報とを演算ユニット10Aにパイプライン式に転送する。またコントローラ11は、同じコードに従って、サイクルごとに入出力バッファ12へデータ読み出しのための制御情報と、データ書き込みのための制御情報とを送る。
【0038】
入出力バッファ12は、コントローラ11からのデータ読み出しの要求を受け取るたびに、同入出力バッファ12が記憶しているデータを読み出し、演算ユニット10Aに対してパイプライン式に転送する。また、データ書き込みのための要求を受け取るたびに、その情報に従って演算ユニット10Dから出力されたデータを同入出力バッファ12内に書き込む。
【0039】
演算ユニット10は、設定IDと、圧縮された設定ビットの辞書情報とを受け取るたびに、内部の記憶部に格納された、圧縮された設定ビットの符号情報の一つを設定IDに従って読み出し、受け取った辞書情報と、読み出された符号情報とから設定ビットをデコーダにより復号し、これにより復号された設定ビットを内部の演算器に適用して演算器の設定を変更する。演算ユニット10では、演算ユニット10の入力データに対し、設定を変更された演算器により演算が行われる。
【0040】
また、演算ユニット10は、パイプラインの次段の演算ユニット10が設定ビットを復号するのに必要な辞書情報を生成する。生成された辞書情報は、演算器の演算結果とともに次段の演算ユニット10にパイプライン式に転送される。
【0041】
コントローラ11が全てのコードを解釈し終えた時点で、コントローラ11はプロセッサなどの外部装置に処理の完了を通知し、データ処理は終了する。
【0042】
プロセッサなどの外部装置は、処理の完了通知を受けてから規定サイクル以上たった後に、入出力バッファ12に蓄えられた半導体装置1の演算結果を読み出す。この規定サイクルは、コントローラ11が処理の完了を通知してから、コントローラ11が最後に発行した設定IDがパイプライン最終段の演算ユニット10に到達するまでのサイクル数と、パイプライン最終段の演算ユニット10の演算結果を入出力バッファ12に書き込むのに要するサイクル数とを加えたサイクル数である。
【0043】
以上が、本実施の形態に係る半導体装置1におけるデータ処理の開始から終了までの流れである。
【0044】
次に、以上のような半導体装置1における処理を実現する、演算ユニット10、コントローラ11およびコード転送制御部14のより具体的な実施形態を幾つか説明する。これら実施形態の説明においては、設定IDの種類数は4であるとしているが、半導体装置1に求められる性能に応じて、設定IDの種類数は変更してもよく、設定IDの種類数に応じて演算ユニット10、コントローラ11およびコード転送制御部14の構成は適宜変更され得る。
【0045】
図2はコード転送制御部14の実現例を示す図である。コード転送制御部14は、ユニットタグ生成部140と、コードタグカウンタ141とコードアドレスカウンタ142とを有する。コード転送制御部14は、プロセッサなどの外部装置から与えられるコード転送要求に従ってコードバッファ13からコントローラ11のプログラムコードと圧縮された演算ユニット10A〜Dの設定ビットを読み出し、読み出されたプログラムコードおよび設定ビットが書き込まれるコントローラ11または演算ユニット10A〜Dの記憶部を一意に識別可能なタグとともに、コントローラ11と演算ユニット10A〜Dにプログラムコードおよび設定ビットを転送する。コントローラ11および演算ユニット10A〜Dは、それぞれ転送されるコードに付加されるタグがコントローラ11および演算ユニット10A〜Dが所有する記憶部を指し示すものであるかどうかを判定し、そうである場合には記憶部にそのコードを書き込む。
【0046】
図3はユニットタグ生成部140の状態遷移図である。初期状態はS0である。プロセッサなどの外部装置からコード転送要求を受け取ると、ユニットタグ生成部140の状態はS0からS1に遷移し、その際にコードタグカウンタ141にセット信号1が初期値信号0とともに与えられ、コードタグカウンタ141の出力は0になる。また、コードアドレスカウンタ142にはセット信号1と、初期値信号としてコード転送要求のアドレス部が与えられ、コードアドレスカウンタ142の出力はこのアドレスになる。
【0047】
状態S1では、コードタグカウンタ141の出力がコード転送要求のプログラムコードサイズ部より小さい場合には、コードアドレスカウンタ142が示すコードバッファ13のアドレスからコードを読み出し、そのコードにコントローラ11のプログラムコード記憶部を示すユニットタグ“00001”(2進表現)と、コードタグカウンタ141の値とからなるタグを付加して、コントローラ11および演算ユニット10A〜Dに転送する。転送されたコードは、コントローラ11のプログラムコード記憶部の、コードタグカウンタ141が示すアドレス位置に書き込まれる。そして、状態S1に遷移する。
【0048】
また、コードタグカウンタ141およびコードアドレスカウンタ142にはインクリメント信号1が出力され、これらカウンタの値はサイクルの終わりにおいて1増やされる。
【0049】
一方、状態S1において、コードタグカウンタ141の出力がコード転送要求のプログラムコードサイズ部と等しい場合には、ユニットタグ“00000”にコードタグカウンタ141の値が付加されたものがコードタグとしてコードに付加されて、コントローラ11および演算ユニット10A〜Dに転送される。転送されたコードは、コントローラ11および演算ユニット10A〜Dのいずれの記憶部にも記録されない。また、コードタグカウンタ141の出力はサイクルの終わりに0にリセットされ、コードアドレスカウンタ142の値は変化しない。そして、状態S2に遷移する。
【0050】
同様にして、状態S2〜S5では、コントローラ11に書き込まれる圧縮された設定ビットの辞書情報が、設定IDごとに順に転送される。ここでは、設定IDの種類は4種類のため、4つの状態が用いられている。また、状態S6〜S9においても同様にして、演算ユニット10A〜Dに書き込まれる圧縮された設定ビットの符号情報がそれぞれ転送される。状態S2〜S5とは異なり、状態S6〜S9は演算ユニット10A〜Dに対応しており、それぞれの状態において各設定IDに対応する符号情報が順に転送される。
【0051】
状態S9において、コードタグカウンタ141の出力がコード転送要求の符号サイズと等しい場合には、プロセッサなどの外部装置にコード転送の完了を通知して、状態S0に戻る。
【0052】
以上が、コード転送制御部14の実現例とその動作に関する説明である。
【0053】
図4はコントローラ11の実現例を示す図である。コントローラ11は制御部11Aと実行制御メモリ11Bと辞書メモリ110〜113とを持つ。制御部11Aは実行制御メモリ11Bに接続されている。実行制御メモリ11Bにはコントローラ11で実行されるプログラムコードが記録され、辞書メモリ110〜113には圧縮された演算ユニット10A〜Dの設定ビットの辞書情報が設定IDごとに記録される。辞書メモリ110〜113の数は半導体装置1の設定IDの種類数に等しい。
【0054】
実行制御メモリ11Bと辞書メモリ110〜113への書き込みは初期化処理において行われる。コード転送制御部14から転送されるコードに付加されるコードタグの上位3ビットと、実行制御メモリ11Bおよび辞書メモリ110〜113を示す識別子との比較結果が、それぞれ実行制御メモリ11Bおよび辞書メモリ110〜113への書き込み許可信号となり、書き込み許可信号が1の場合には、コード転送制御部14から転送されるコードタグの下位ビットが示すアドレスにコードが書き込まれる。
【0055】
プロセッサなどの外部装置からデータ処理の開始が通知されると、制御部11Aは、実行制御メモリ11Bに格納されているプログラムコードをアドレス0から順に解釈し、その内容に従って動作を行う。
【0056】
図5は実行制御メモリ11Bに格納されるプログラムコードの構造例を示したものである。この例では、プログラムコードは、入力アドレスと、入力アドレスが有効かどうかを示すValidIビットと、出力アドレスと、出力アドレスが有効かどうかを示すValidOビットと、設定IDとを有する。このようなプログラムコードは、1サイクルで1ラインずつ実行される。
【0057】
制御部11Aは、入出力バッファ12にデータ読み出しのための制御情報を送出する際には、プログラムコードから入力アドレスとValidIビットを解釈し、それらを入出力バッファ12に送出する。入出力バッファ12は、ValidIビットが1の場合には入力アドレスが示す位置にあるデータを読み出して、演算ユニット10Aに送出する。
【0058】
制御部11Aは、入出力バッファ12にデータ書き込みのための制御情報を送出する際には、プログラムコードから出力アドレスとValidOビットを解釈し、それらを入出力バッファ12に送出する。それらの制御情報は、演算ユニット10の数に相当するサイクル数の後に入出力バッファ12に到達する。入出力バッファ12は、ValidOビットが1の場合には、演算ユニット10Dが出力するデータを出力アドレスが示す位置に書き込む。
【0059】
制御部11Aは、設定IDを演算ユニット10にパイプライン式に転送する際には、プログラムコードから設定IDを解釈して演算ユニット10Aに送出する。また、設定IDに従って辞書メモリ110〜113のいずれかから圧縮された設定ビットの辞書情報を読み出し、演算ユニット10Aに送出する。図2、図3に示すコード転送制御部14の実現例においては、設定ID0〜3がそれぞれ辞書メモリ110〜113に対応する。
【0060】
なお、コントローラ11がデータ読み出しのための制御情報を入出力バッファ12へ送出してから演算ユニット10Aに入力データが届くまでの時間と、コントローラ11が設定IDおよび圧縮された設定ビットの辞書情報を送出してから、それらが演算ユニット10Aに届くまでの時間は等しくなるよう制御される必要がある。
【0061】
そのために、入出力バッファ12からのデータ読み出しに数サイクルを要するのであれば、それに合わせて、図4のようにタイミング調整のためのラッチ11Cを数サイクル分挿入し、設定IDおよび辞書情報が演算ユニット10Aに届くまでの時間も数サイクル遅れるようにする。
【0062】
このようにして制御部11Aは、実行制御メモリ11Bにあるプログラムコードをアドレス0から順に解釈していき、全てのプログラムコードを解釈し終えたら、プロセッサなどの外部装置に処理の完了を通知して動作を停止する。
【0063】
以上がコントローラ11の実現例とその動作に関する説明である。
【0064】
図6は演算ユニット10の実現例を示す図である。演算ユニット10は、演算器100と設定ビットメモリ101とデコーダ102とデータパイプラインレジスタ103と制御パイプラインレジスタ104A〜Bとを持つ。演算器100のデータ入力信号は、演算ユニット10Aについては入出力バッファ12に接続され、演算ユニット10B〜Dについてはパイプライン前段の演算ユニット10A〜Cのデータパイプラインレジスタ103に接続される。また、演算器100の設定入力信号はデコーダ102の出力に接続され、演算器100のデータ出力信号はデータパイプラインレジスタ103に接続される。
【0065】
設定ビットメモリ101の読み出しアドレス信号は、演算ユニット10Aについてはコントローラ11の設定ID出力信号に接続され、演算ユニット10B〜Dについてはパイプライン前段の演算ユニット10A〜Cの制御パイプラインレジスタ104Aに接続される。また、設定ビットメモリ101の書き込み制御信号はコード転送制御部14に接続される。また、設定ビットメモリ101のデータ出力信号はデコーダ102の符号入力信号に接続される。
【0066】
設定ビットメモリ101の読み出しアドレス信号はまた、制御パイプラインレジスタ103Bの入力にも接続されている。また、デコーダ102の辞書入力信号は、演算ユニット10Aについてはコントローラ11の辞書出力信号に接続され、演算ユニット10B〜Dについてはパイプライン前段の演算ユニット10A〜Cの制御パイプラインレジスタ104Bに接続される。
【0067】
設定ビットメモリ101への書き込みは初期化処理において行われる。コード転送制御部14から転送されるコードに付加されるコードタグの上位3ビットと、設定ビットメモリ101を示す識別子との比較結果が、設定ビットメモリ101への書き込み許可信号となり、書き込み許可信号が1の場合には、コード転送制御部14から転送されるコードタグの下位ビットが示すアドレスにコードが書き込まれる。
【0068】
図7は演算器100の一例を示す図である。演算器100は8ビットのALUとシフタをそれぞれ4つずつ備えており、32ビットの2入力に対して、8ビット単位で異なる演算を行うよう設定できる。この演算結果を、32ビットの出力の一つとする。また、演算器100はクロスバースイッチを備えシフタからの8ビット出力4つの配置順を変更した結果を32ビット出力の一つとする。
【0069】
設定ビット長は8ビット演算あたり、ALUの入力の一つを直値とするかどうかを決める入力モードが1ビット、直値が8ビット、ALU設定が2ビット、シフト値が3ビット、クロスバースイッチ設定が2ビットの計16ビットからなり、演算器100全体では64ビットの設定ビットとなる。
【0070】
次に、演算ユニット10が備えるデコーダ102の実現例について説明する。
【0071】
デコーダ102の構成は、演算ユニット10の設定ビットをどのように圧縮するかに依存する。ここでは、例として3通りの圧縮方法を示し、そのそれぞれについてデコーダ102の実現例を示す。なお、演算器100の構成は図7に示したものとする。
【0072】
図8は圧縮方法1を説明するための図である。圧縮方法1では、辞書情報のサイズを256ビットとし、符号情報のサイズを演算ユニット10あたり16ビットとする。辞書情報は、設定IDにおいて演算ユニット10A〜Dで行われる全ての8ビット演算の設定を表す。演算器100では、8ビット演算あたり16ビットの設定ビットを必要とするので、この場合の辞書情報は最大で16の8ビット演算を表すことができる。
【0073】
一方、符号情報は、演算ユニット10で行われる4つの8ビット演算の設定として、辞書情報が表す8ビット演算の設定のどれを用いるかを示す辞書位置ビットを表す。この場合の辞書情報は最大16の8ビット演算を表すので、その中から一つの設定を特定するには演算ユニット10で行われる8ビット演算あたり4ビットが必要で、演算ユニット10あたりの符号情報は16ビットとなる。
【0074】
図9は圧縮方式1を実現するためのデコーダ102の実現例である。デコーダ102は、マルチプレクサ1020A〜Dを有する。マルチプレクサ1020A〜Dには、符号情報が表す4つの8ビット演算のための符号がセレクト信号としてそれぞれ入力され、そのセレクト信号に従ってコントローラから辞書情報として供給される16の設定ビットから一つを選択することで、符号情報から設定ビットを復号する。また、デコーダ102は入力された辞書情報をそのまま次段の演算ユニット10で用いられる辞書情報として出力する。
【0075】
圧縮方式1では、演算ユニット10A〜Dの符号情報に必要なサイズの総和は、演算ユニット10A〜Dの設定によらず64ビットであるので、演算ユニット10A〜Dで実行する8ビット演算の種類数が12未満であれば、辞書情報と符号情報のサイズの合計は、圧縮前の設定ビットのサイズである256ビットより小さくなり、コントローラ11および演算ユニット10A〜Dの記憶部に書き込む情報量を減らすことができる。
【0076】
図10は圧縮方式2を説明するための図である。圧縮方式2では、辞書情報のサイズを64ビットとし、符号情報のサイズを演算ユニット10あたり76ビットとする。辞書情報は、4つの16ビット演算の設定ビットを表す。符号情報の上位12ビットは、8ビット演算ごとに、辞書情報が表す設定ビットと、符号情報の下位ビットが表す設定ビットのうち、どの設定ビットを用いるかを示す辞書位置ビットを、3ビットずつ表す。また、符号情報の下位64ビットは、演算ユニット10で行われる演算のうち、辞書情報には含まれない演算の設定ビットを上位から順に表す。
【0077】
図11は圧縮方式2を実現するためのデコーダ102の実現例である。デコーダ102はマルチプレクサ1021A〜Hと、マルチプレクサ1022A〜Dとを有する。マルチプレクサ1021A〜Hには、符号情報に記録される辞書位置ビットの下位2ビットがそれぞれセレクト信号として入力され、そのセレクト信号に従ってコントローラから供給される辞書情報の設定ビットから1つと、符号情報の設定ビットから1つとを演算器100ごとに選択する。さらに、符号情報に記録される辞書使用ビットの最上位ビットに従って、マルチプレクサ1022A〜Dにより辞書情報の設定ビットと符号情報の設定ビットのいずれか一方をそれぞれ選択することで、符号情報から設定ビットを復号する。また、デコーダ102は入力された辞書情報をそのまま次段の演算ユニット10で用いられる辞書情報として出力する。
【0078】
圧縮方式2では、8ビット演算あたりの辞書位置ビットのサイズは、圧縮方式1より1ビット少ない3ビットなので、最も効率よく圧縮できた場合の辞書情報と符号情報のサイズの総和は、圧縮方式1より小さくなる。しかしながら、演算ユニット10はそれぞれ辞書情報として4種類の8ビット演算のみしか受け取れないため、演算ユニット10A〜Dで行われる8ビット演算の種類数が5種類以上の場合、演算ユニット10A〜Dの間で8ビット演算が共有されるパターンによっては、2つ以上の演算ユニット10の符号情報において同一の設定ビットが重複する場合が生じる。このような重複が2回以上生じる場合には、圧縮方式2の圧縮効率は圧縮方式1より低下する。
【0079】
なお、辞書情報と符号情報に記録される8ビット演算の数が、重複も含めて13未満であれば、圧縮後の辞書情報と符号情報のサイズの総和は圧縮前の設定ビットのサイズより小さくなる。
【0080】
図12は圧縮方式3を説明するための図である。圧縮方式3では、圧縮方式2と同様に辞書情報のサイズを64ビット、符号情報のサイズを演算ユニット10あたり76ビットとする。辞書情報に4つの16ビット演算の設定ビットが記録されるのも圧縮方式2と同様である。一方、符号情報の上位8ビットは、8ビット演算ごとに、辞書情報に記録される設定ビットのうち、どの設定ビットを用いるかを示す辞書位置ビットを、2ビットずつ表す。また、続く符号情報の4ビットは、辞書情報の設定ビットのうち次段の演算ユニットでは使われない8ビット演算を示す設定交換ビットを表し、符号情報の下位64ビットは、次段の演算ユニットで使われる8ビット演算のうち、辞書情報に含まれない演算の設定ビットを表す。
【0081】
図13は圧縮方式3を実現するためのデコーダ102の実現例である。デコーダ102は、マルチプレクサ1023A〜Dと、マルチプレクサ1024A〜Cと、プライオリティエンコーダ1025A〜Cと、マルチプレクサ1026A〜Dとを有する。マルチプレクサ1023A〜Dには、セレクト信号として辞書位置ビットがそれぞれ入力され、そのセレクト信号に従って辞書情報の4つの設定ビットから一つの設定ビットを選ぶことで、符号情報から設定ビットを復号する。
【0082】
一方、プライオリティエンコーダ1025A〜Cには設定交換ビットが入力され、設定交換ビット中に1が1〜3番目に出現する設定交換ビットのビット位置(最下位ビットが0、最上位ビットが3)がそれぞれ出力される。設定交換ビットの1の数が求める数に満たない場合には、プライオリティエンコーダ1025A〜Cは0を出力する。そして、プライオリティエンコーダ1025A〜Cの出力をマルチプレクサ1024A〜Cのセレクト信号とすることで、マルチプレクサ1024A〜Cからは辞書情報の1〜3番目の設定ビットと置き換えられる設定ビットが出力される。そして、設定交換ビットの各ビットをマルチプレクサ1026A〜Dのセレクト信号とすることにより、辞書情報に含まれる8ビット演算の設定ビットのそれぞれと、マルチプレクサ1024A〜Cから出力される設定ビットおよび符号情報の下位16ビットに記憶される設定ビットのそれぞれとを選択する。マルチプレクサ1026Dでは、辞書情報の設定ビット3と符号情報の設定ビット3とを選択する。そしてデコーダ102は、マルチプレクサ1026A〜Dの出力を次段の演算ユニット10で用いられる辞書情報として出力する。
【0083】
圧縮方式3では、辞書情報を演算ユニット10A〜Dのパイプラインを流れる過程で変更することができるため、圧縮方式2では同一の設定ビットを複数の演算ユニット10の符号情報に重複して持つ必要がある場合に、圧縮方式3では重複が生じない場合がある。一方で、例えば演算ユニット10Aと演算ユニット10B、演算ユニット10Cと演算ユニット10Dではそれぞれ全く異なる4種類の8ビット演算を行っているが、演算ユニット10Aと演算ユニット10C、演算ユニット10Bと演算ユニット10Dでは全く等しい8ビット演算を行っている場合などでは、演算ユニット10B〜Dの符号情報にそれぞれ4種類の設定ビットを格納する必要があるため、圧縮方式1や2よりも圧縮効率が悪くなる。
【0084】
以上、圧縮方式の例として圧縮方式1〜3と、それに対応するデコーダ102の実現例を述べたが、上述の通り演算ユニット10A〜Dにおける8ビット演算の共有パターンによって圧縮効率が最もよい圧縮方式は異なるので、例えば辞書情報に圧縮方式1〜3のいずれを用いるかを示す2ビットの圧縮方式IDを付加し、また演算ユニット10は圧縮方式1〜3に対応する3つのデコーダ102を備えることで、圧縮方式IDに従って設定ビットの復号に用いるデコーダ102を選択して設定ビットを復号するようにしてもよい。
【0085】
以上が演算ユニット10の実現例に関する説明である。次に、演算ユニット10の動作を説明するために、半導体装置1がデータ処理を行う際の動作例を示す。
【0086】
図14は半導体装置1がデータ処理を行う際の動作を説明するタイミングチャートである。サイクル1の時点では、プログラムコードと圧縮された設定ビットの辞書情報はコントローラ11の記憶部に、圧縮された設定ビットの符号情報演算ユニット10A〜Dに既にそれぞれ格納されている。
【0087】
サイクル1において、コントローラ11は設定ID“0”と辞書情報“D0”を送出する。また、コントローラ11は入出力バッファ12を介してデータ“d0”を送出する。
【0088】
サイクル2において、演算ユニット10Aは設定ID“0”を受け取り、設定ビットメモリ101のアドレス0から符号情報“C00”が読み出される。またデコーダ102は辞書情報“D0”と符号情報“C00”から設定ビット“c00”を復号して、演算器100に入力する。さらにデコーダ102は、前述の圧縮方式に示される規則に従って、演算ユニット10Bに辞書情報“D00”を送出する。同サイクルにおいて、コントローラ11は設定ID“3”と辞書情報“D3”を送出する。また、コントローラ11は入出力バッファ12を介してデータ“d1”を送出する。
【0089】
サイクル3において、演算ユニット10Aの演算器100は設定ビット“c00”の設定においてデータ“d0”を入力として演算“e00”を実行し、演算結果“d00”をデータパイプラインレジスタ103に書き込む。一方、デコーダ102は、設定ビットメモリ101のアドレス3から読み出された符号情報“C03”と辞書情報“D3”から設定ビット“c13”を復号して、演算器100に入力するとともに、演算ユニット10Bに辞書情報“D30”を送出する。同サイクルにおいて、演算ユニット10Bは設定ID“0”を受け取り、設定ビットメモリ101のアドレス0から符号情報“C10”が読み出される。またデコーダ102は辞書情報“D00”と符号情報“C10”から設定ビット“c10”を復号して、演算器100に入力するとともに、演算ユニット10Cに辞書情報“D01”を送出する。また同サイクルにおいて、コントローラ11は設定ID“1”と辞書情報“D1”を送出する。また、コントローラ11は入出力バッファ12を介してデータ“d2”を送出する。
【0090】
サイクル4において、演算ユニット10Aの演算器100は設定ビット“c03”の設定においてデータ“d1”を入力として演算“e03”を実行し、演算結果“d10”をデータパイプラインレジスタ103に書き込む。一方、デコーダ102は、設定ビットメモリ101のアドレス1から読み出された符号情報“C01”と辞書情報“D1”から設定ビット“c01”を復号して、演算器100に入力するとともに、演算ユニット10Bに辞書情報“D10”を送出する。同サイクルにおいて、演算ユニット10Bの演算器100は設定ビット“c10”の設定においてデータ“d00”を入力として演算“e10”を実行し、演算結果“d01”をデータパイプラインレジスタ103に書き込む。一方、デコーダ102は、設定ビットメモリ101のアドレス3から読み出された符号情報“C13”と辞書情報“D30”から設定ビット“c03”を復号して、演算器100に入力するとともに、演算ユニット10Cに辞書情報“D31”を送出する。同サイクルにおいて、演算ユニット10Cは設定ID“0”を受け取り、設定ビットメモリ101のアドレス0から符号情報“C20”が読み出される。またデコーダ102は辞書情報“D01”と符号情報“C20”から設定ビット“c20”を復号して、演算器100に入力するとともに、演算ユニット10Cに辞書情報“D02”を送出する。同サイクルにおいて、コントローラ11は設定ID“2”と辞書情報“D2”を送出する。また、コントローラ11は入出力バッファ12を介してデータ“d3”を送出する。
【0091】
以後のサイクルにおける、コントローラ11および演算ユニット10A〜Dの動作は同様なので省略する。以上が、半導体装置1がデータ処理を行う際の動作例に関する説明である。
【0092】
上述の説明の通り、半導体装置1においては、図14に示すように、演算ユニット10A〜Dは、サイクルごとに、受け取った、圧縮された設定ビットの辞書情報を用いてそれぞれの演算ユニット10の設定ビットのみを復号すればよいので、半導体装置1が備える演算ユニット10の数が増大しても、1サイクルに要する時間は増大しない。
【0093】
また、半導体装置1においては、コントローラ11から辞書情報をパイプライン式に演算ユニット10A〜Dに転送して設定ビットを復元するため、図14におけるサイクル3のように、圧縮された設定ビットの復号を複数の演算ユニット10でサイクルごとに並列に行うことができる。さらに図14におけるサイクル4のように、演算ユニット10の演算器100における復号された設定ビットを用いた演算も、複数の演算ユニット10でサイクルごとに並列に行うことができる。
【0094】
以上説明した本実施の形態によれば、パイプライン型に接続された複数の演算ユニット10のそれぞれで、圧縮された設定情報から復号された設定ビットにより演算器100の設定を変更して演算を行うという処理を遅延なく行えるようになる。
【0095】
そして、このような半導体装置を用いることで、動的リコンフィギュラブル回路の設定情報を圧縮された形で記憶装置に格納することが可能になるため、設定情報を記憶装置に書き込むのに要する時間を短縮することができる。
【0096】
更に、このような半導体装置を用いることで設定情報を記憶装置に書き込むのに要する時間が短縮されることにより、動的リコンフィギュラブル回路による演算実行と新しい設定情報の記憶装置への書き込みを同時に実行することが容易になるため、動的リコンフィギュラブル回路がパイプライン型に接続された半導体装置全体の情報処理速度を向上させることも可能になる。
【0097】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【0098】
【図1】実施形態に係る半導体装置を示すブロック図
【図2】実施形態に係るコード転送制御部を示すブロック図
【図3】実施形態に係るユニットタグ生成部の動作を示す状態遷移図
【図4】実施形態に係るコントローラを示すブロック図
【図5】実行制御メモリに記憶されるプログラムコードの一例を示す図
【図6】実施形態に係る演算ユニットを示すブロック図
【図7】実施形態に係る演算器の構成を示すブロック図
【図8】圧縮方法1における辞書情報と符号情報との関係を示す図
【図9】実施形態に係るデコーダの圧縮方法1における構成を示すブロック図
【図10】圧縮方法2における辞書情報と符号情報との関係を示す図
【図11】実施形態に係るデコーダの圧縮方法2における構成を示すブロック図
【図12】圧縮方法3における辞書情報と符号情報との関係を示す図
【図13】実施形態に係るデコーダの圧縮方法3における構成を示すブロック図
【図14】コントローラ、各演算ユニットのサイクルごとの動作を示すタイミングチャート
【符号の説明】
【0099】
1…半導体装置;
10A〜10D…演算ユニット;
100…演算器;
101…設定ビットメモリ;
102…デコーダ;
1020A〜1020D,1021A〜1021H,1022A〜1022D,1023A〜1023D,1024A〜1024C,1026A〜1026D…マルチプレクサ;
1025A〜1025C…プライオリティエンコーダ;
103…データパイプラインレジスタ;
104A〜104B…制御パイプラインレジスタ;
11…コントローラ;
11A…制御部;
11B…実行制御メモリ;
11C…ラッチ;
110,111,112,113…辞書メモリ;
12…入出力バッファ;
13…コードバッファ;
14…コード転送制御部;
140…ユニットタグ生成部;
141…コードタグカウンタ;
142…コードアドレスカウンタ
【技術分野】
【0001】
本発明は、動的リコンフィギュラブル回路技術を用いた半導体装置に関する。
【背景技術】
【0002】
近年、携帯機器など低コスト・低消費電力が求められる機器においても、機能の複雑化、多様化が進み、このような機器にも高い性能が必要とされてきている。高性能と低消費電力を両立させるためには、専用ハードウェアの製造・開発は避けられない。しかしながら、機能の複雑化・多様化に伴い専用ハードウェアの製造・開発費は年々増大している。この製造・開発費を削減するものとして、動的リコンフィギュラブル回路技術を用いた半導体装置が注目されている。
【0003】
動的リコンフィギュラブル回路技術を用いた半導体装置は、FPGAのようなリコンフィギュラブル回路と、そのリコンフィギャラブル回路に実行させたい回路(以下、単に実行回路と称す)を構築するのに必要な設定情報を複数蓄えておくための記憶装置を備えており、ソフトウェアなどによりあらかじめ決められた規則に従って、動作時に必要な回路情報を読み出して実行回路を構築できる装置である。動作時に実行回路を変えられる点が、FPGAを用いた従来の半導体装置とは異なる。
【0004】
この半導体装置を用いると、FPGA同様に専用ハードウェアの開発費が低減されるだけでなく、実行回路を動的に構築することにより小さな半導体装置上に多様な機能が実現できるため、専用ハードウェアの製造費も低減されると期待されている。
【0005】
動的リコンフィギュラブル回路技術を用いた半導体装置の例としては、NECエレクトロニクスのDRP(Dynamically Reconfigurable Processor,「非特許文献1」参照)や、カーネギーメロン大学のPipeRench(「非特許文献2」参照)が挙げられる。
【0006】
NECエレクトロニクスのDRPは、演算を行う基本要素であるPE(Processing Element)が2次元アレイ状に並べられ、その中央に状態遷移コントローラが配置されるという構造を持つ。PEは実行回路を構築可能な演算装置で、PE内部にある命令メモリに演算の種類やPE間の接続関係といった設定情報が複数格納されている。各PEは状態遷移コントローラから与えられる命令ポインタに従って命令メモリから設定情報を読み出して、動的に実行回路を構築する。
【0007】
カーネギーメロン大学のPipeRenchでは、演算を行う基本要素である複数のPEと、それらを接続するバスから成るstripeが、パイプライン型に接続された構成を取っている。PEは実行回路を構築可能な演算装置で、グローバルバスによりPipeRenchの外部にある制御装置と接続されている。PEの演算の種類やバス接続関係といった設定情報は、PipeRenchの外部にある制御装置からグローバルバスを介してPEに転送され、その情報に従ってPEは動的に実行回路を構築する。
【非特許文献1】「リコンフィギュラブルシステム」、オーム社、ページ189−208
【非特許文献2】“PipeRench:a reconfigurable architecture and compiler”,IEEE Computer Volume 33,Issue 4,April 2000 Page(s):70−77
【発明の開示】
【発明が解決しようとする課題】
【0008】
高性能でかつ面積が小さく、消費電力が低い動的リコンフィギュラブル回路を用いた半導体装置を実現するためには、半導体装置が処理を行っている間に、後続の処理に必要な設定情報をできるだけ高速に記憶装置に格納できるようにする必要がある。これにより、半導体装置が予め備える記憶装置のサイズが小さくても、半導体装置上に様々な実行回路を大きな遅延なく構築できるようになるため、高性能でかつ面積が小さく、消費電力が低い半導体装置が実現可能となる。
【0009】
しかしながら、従来の動的リコンフィギュラブル回路を用いた半導体装置では、処理を行うために記憶装置に書いておく必要のある設定情報のサイズが十分に小さくないため、半導体装置が処理を行っている間に、後続の処理に必要な設定情報を十分に記憶装置に格納することは困難である。
【0010】
PipeRenchやDRPでは、半導体装置の設定変更を演算種類の変更など粗粒度の設定変更に限定することで、設定情報のサイズを小さくしているが、まだ設定情報のサイズが十分に小さくなっているとはいえない。
【0011】
動的リコンフィギュラブル回路を用いた半導体装置が備える記憶装置に書く設定情報のサイズを小さくする方法としては、半導体装置の記憶装置には元の設定情報を復元可能な圧縮符号方式により情報量を圧縮(以下、単に圧縮と呼ぶ)した設定情報を記憶しておき、実行回路の構築において適宜設定情報を復号して用いるという方法が考えられる。
【0012】
しかしながら、PipeRenchやDRPでは、一つの制御装置が複数の動的リコンフィギュラブル回路に対して同時に実行回路の構築を指示するため、制御装置が制御する動的リコンフィギュラブル回路の数がある程度大きくなると、復号に要する時間が増大して半導体装置の処理性能が低下するという問題がある。
【0013】
本発明は、上記に鑑みてなされたものであって、パイプライン型に接続された複数のリコンフィギュラブル回路のそれぞれにおいて、圧縮された設定情報から遅延を生じることなく設定情報を復号し、実行回路を構築して演算を行うことのできる半導体装置を提供することを目的とする。
【課題を解決するための手段】
【0014】
本発明の一観点に係る半導体記憶装置は、第1設定ビットよりもビット長が短い第1符号情報を記憶しており、各符号情報に対応する各設定ビットを表す辞書情報を受信し、前記第1符号情報に対応する設定ビットを前記辞書情報から読み出すことにより前記第1設定ビットを求め、該第1設定ビットに従い設定を変更することにより複数の演算のいずれかを行って演算結果を得る第1の演算ユニットと、第2設定ビットよりもビット長が短い第2符号情報を記憶しており、前記辞書情報を前記第1の演算ユニットから受信し、前記第2符号情報に対応する設定ビットを前記辞書情報から読み出すことにより前記第2設定ビットを求め、該第2設定ビットに従い設定を変更することにより前記演算結果に対して前記複数の演算のいずれかを行う第2の演算ユニットとを具備する。
【発明の効果】
【0015】
本発明をパイプライン型に接続された複数のリコンフィギュラブル回路を備える半導体装置に適用すれば、リコンフィギュラブル回路のそれぞれにおいて、圧縮された設定情報から復号された設定情報により実行回路を構築して演算を行うという処理を遅延なく行えるようになる。その結果、リコンフィギュラブル回路の設定情報を圧縮された形で記憶装置に格納することが可能になることから、設定情報を記憶装置に書き込むのに要する時間が短縮されるという効果が期待できる。更に、設定情報を記憶装置に書き込むのに要する時間が短縮されることにより、動的リコンフィギュラブル回路による演算実行と新しい設定情報の記憶装置への書き込みを同時に実行することが容易になる。したがって、動的リコンフィギュラブル回路がパイプライン型に接続された半導体装置全体の情報処理速度が向上するという効果も期待できる。
【発明を実施するための最良の形態】
【0016】
一実施の形態に係る半導体装置1を図1に示す。半導体装置1は、プロセッサなどの外部装置からの指示によりデータ処理を行うリコンフィギュラブルデバイスである。半導体装置1は、復元可能な圧縮符号化方式により情報量を圧縮した設定情報を記憶しており、動作時には、適宜設定情報を復号し、復号して得られた設定情報を用いて実行回路を構築する。
【0017】
設定情報の圧縮と復号は、例えば、以下のように実現される。まず、設定情報を構成するビット列(「設定ビット」という)の各部に対して、その各部のビット長よりも、ビット長が小さい符号を割り当てる。次に、符号と設定情報の各部との対応関係を表す辞書を作成する。このようにすることで、設定情報の各部は、符号と辞書とにより表現される。設定情報を復号する際には、符号と辞書とを取得し、符号に対応する設定情報を辞書から求める。
【0018】
半導体装置1は、4つの演算ユニット10A〜Dと、コントローラ11と、入出力バッファ12と、コードバッファ13と、コード転送制御部14とを有する。なお、ここでは、データ処理とは、個々の演算を行った一連の演算の総称である。また、演算ユニットの数は4つに限定されない。
【0019】
データ処理を実現する4つの演算ユニット10A〜Dは、パイプライン型に接続される。演算ユニット10Aから演算ユニット10Dを通じて、データと、圧縮された設定ビットの辞書情報と、設定IDとが1サイクルずつ伝搬する。ここで、圧縮された設定ビットの辞書情報とは、符号と元のデータとの対応関係を示す情報のことである。設定IDとは、複数の設定ビットから1つの設定ビットを選択するための識別子である。サイクルとは、記憶素子部の値が変化してから次に記憶素子部の値が変化するまでの、同期式回路における最小時間単位のことである。
【0020】
また、符号情報とは、コントローラ11が送信する設定IDの指定により演算ユニット10A〜Dが行う複数の演算を定める設定ビットが上記辞書情報において格納されている位置を指定するポインタを前記複数の演算ごとに含む情報のことである。
【0021】
コントローラ11は、演算ユニット10Aおよび入出力バッファ12に接続される。入出力バッファ12には演算ユニット10Aおよび10Dが接続される。コードバッファ13は、コード転送制御部14に接続されており、コード転送制御部14はコントローラ11および演算ユニット10A〜Dに接続される。
【0022】
入出力バッファ12は、データ処理の開始時に半導体装置1に対して与えられるデータや、半導体装置1によるデータ処理の中間結果または最終結果を一時的に保持する。入出力バッファ12には、データ処理の開始前にプロセッサなどの外部装置により初期の入力データが書き込まれる。半導体装置1は、入出力バッファ12に保持されたデータ処理の中間結果を再び入力データとして用い、データ処理を続けることもできる。入出力バッファ12に保持された最終結果は、プロセッサなどの外部装置により入出力バッファ12から読み出される。
【0023】
コードバッファ13には、コントローラ11が発行する設定IDと入出力バッファ12のアドレスとをサイクルごとに規定するコントローラ11のプログラムコード(以下、単に「プログラムコード」という)と、演算ユニット10A〜Dの設定ビット列を圧縮したビット列(以下、「圧縮された設定ビット」という)とが格納される。これらプログラムコードおよび圧縮された設定ビット列は、データ処理の開始前にプロセッサなどの外部装置によりコードバッファ13に書き込まれる。
【0024】
コード転送制御部14は、データ処理の開始前に、プロセッサなどの外部装置からの指示にしたがってコードバッファ13からプログラムコードおよび圧縮された設定ビットを読み出し、プログラムコードおよび圧縮された設定ビットの辞書情報をコントローラ11に転送する。また、圧縮された設定ビットの符号情報の各部分は、それぞれ演算ユニット10A〜Dのいずれかに転送される。
【0025】
演算ユニット10A〜Dの中にある記憶部には複数の設定ビットを記憶可能であり、それぞれが設定IDと対応づけられている。設定ビットの圧縮は設定IDごとに行われ、同じ設定IDに対応する演算ユニット10A〜Dの設定ビットを圧縮することにより、設定IDごとに辞書情報と符号情報が生成される。コード転送制御部14により、これら複数の辞書情報と符号情報が、それぞれコントローラ11と演算ユニット10A〜Dに転送される。
【0026】
コントローラ11は、コントローラ11の中にある記憶部に記録されたプログラムコードに従って、サイクルごとに設定IDおよびその設定IDに対応する圧縮された設定ビットの辞書情報を演算ユニット10Aに送る機能と、その同じコードに従って、サイクルごとに入出力バッファ12からのデータ読み出しと入出力バッファ12へのデータ書き込みを制御する機能を持つ。また、データ処理の開始はプロセッサなどの外部装置によりコントローラ11に通知され、データ処理が完了したらコントローラ11はデータ処理の完了をプロセッサなどの外部装置に通知する。
【0027】
なお、本実施の形態では、半導体装置1は、プロセッサなどの外部装置に接続されたものとして説明する。しかし、半導体装置1は、プロセッサに内蔵されていてもよい。このとき、コントローラ11はプロセッサのプログラムコードに従って設定IDや辞書情報を送出するとともに、プロセッサが備えるメモリやレジスタなどの読み書きを制御する機能を持つ。
【0028】
演算ユニット10A〜Dのそれぞれは、圧縮された設定ビットを復号するためのデコーダ回路と、サイクルごとに設定を変更可能な演算器を持つユニットであって、コントローラ11から送られる設定IDに対応する圧縮された設定ビットの符号情報を、演算ユニット10の中にある記憶部から読み出し、コントローラ11から送られる辞書情報と読み出された符号情報とからデコーダ回路により設定ビットを復号し、その設定ビットにより演算器の設定を変更しながら、入力データに対して演算を行って結果を出力するという機能を持つ。また、演算ユニット10A〜Cのそれぞれは、接続されるパイプライン次段の演算ユニット10B〜Dが設定ビットを復号するために用いられる辞書情報を、演算結果とともにパイプライン式に転送する。
【0029】
パイプライン式転送とは、例えばあるサイクルに演算ユニット10Aが出力する演算結果と辞書情報が、次のサイクルには演算ユニット10Bの入力になるというように、演算ユニット10の出力が1サイクルずつパイプラインを構成する演算ユニット10A〜Dの間を転送されていくようなものを意味する。
【0030】
以上が、本実施の形態に係る半導体装置1を構成する各ユニットの概要の説明である。
【0031】
次に、本実施の形態に係る半導体装置1における処理の開始から終了までの流れの概要を説明する。半導体装置1の処理は、データ処理前の初期化処理とデータ処理との2つに大別できる。
【0032】
まず、初期化処理について説明する。
【0033】
プロセッサなどの外部装置により、半導体装置1への入力データが入出力バッファ12に格納される。また、外部装置により、コントローラ11の動作を規定するプログラムコードと、圧縮された演算ユニット10A〜Dの設定ビットが、コードバッファ13に格納される。
【0034】
次に、外部装置がコード転送制御部14にコード転送の開始を通知する。コード転送制御部14は通知を受けて、プログラムコードと圧縮された設定ビットをコードバッファ13から読み出して、プログラムコードおよび複数の圧縮された設定ビットの辞書情報をコントローラ11に転送し、また複数の圧縮された設定ビットの符号情報を演算ユニット10A〜Dに転送する。転送されたプログラムコードと圧縮された設定ビットの辞書情報はコントローラ11の内部にある記憶部に格納される。また、圧縮された設定ビットの符号情報の各部分は、演算ユニット10A〜Dのいずれかの内部にある記憶部に格納される。
【0035】
コード転送制御部14は、コード転送が完了後にプロセッサなどの外部装置にコード転送の完了を通知する。プロセッサなどの外部装置は、コード転送完了の通知を受けて、コントローラ11にデータ処理の開始を通知する。初期化処理において行われる処理は以上である。
【0036】
次に、データ処理について説明する。
【0037】
コントローラ11は内部の記憶部に格納されたプログラムコードを毎サイクル解釈し、それに従ってサイクルごとに設定IDと、その設定IDに対応する圧縮された設定ビットの辞書情報とを演算ユニット10Aにパイプライン式に転送する。またコントローラ11は、同じコードに従って、サイクルごとに入出力バッファ12へデータ読み出しのための制御情報と、データ書き込みのための制御情報とを送る。
【0038】
入出力バッファ12は、コントローラ11からのデータ読み出しの要求を受け取るたびに、同入出力バッファ12が記憶しているデータを読み出し、演算ユニット10Aに対してパイプライン式に転送する。また、データ書き込みのための要求を受け取るたびに、その情報に従って演算ユニット10Dから出力されたデータを同入出力バッファ12内に書き込む。
【0039】
演算ユニット10は、設定IDと、圧縮された設定ビットの辞書情報とを受け取るたびに、内部の記憶部に格納された、圧縮された設定ビットの符号情報の一つを設定IDに従って読み出し、受け取った辞書情報と、読み出された符号情報とから設定ビットをデコーダにより復号し、これにより復号された設定ビットを内部の演算器に適用して演算器の設定を変更する。演算ユニット10では、演算ユニット10の入力データに対し、設定を変更された演算器により演算が行われる。
【0040】
また、演算ユニット10は、パイプラインの次段の演算ユニット10が設定ビットを復号するのに必要な辞書情報を生成する。生成された辞書情報は、演算器の演算結果とともに次段の演算ユニット10にパイプライン式に転送される。
【0041】
コントローラ11が全てのコードを解釈し終えた時点で、コントローラ11はプロセッサなどの外部装置に処理の完了を通知し、データ処理は終了する。
【0042】
プロセッサなどの外部装置は、処理の完了通知を受けてから規定サイクル以上たった後に、入出力バッファ12に蓄えられた半導体装置1の演算結果を読み出す。この規定サイクルは、コントローラ11が処理の完了を通知してから、コントローラ11が最後に発行した設定IDがパイプライン最終段の演算ユニット10に到達するまでのサイクル数と、パイプライン最終段の演算ユニット10の演算結果を入出力バッファ12に書き込むのに要するサイクル数とを加えたサイクル数である。
【0043】
以上が、本実施の形態に係る半導体装置1におけるデータ処理の開始から終了までの流れである。
【0044】
次に、以上のような半導体装置1における処理を実現する、演算ユニット10、コントローラ11およびコード転送制御部14のより具体的な実施形態を幾つか説明する。これら実施形態の説明においては、設定IDの種類数は4であるとしているが、半導体装置1に求められる性能に応じて、設定IDの種類数は変更してもよく、設定IDの種類数に応じて演算ユニット10、コントローラ11およびコード転送制御部14の構成は適宜変更され得る。
【0045】
図2はコード転送制御部14の実現例を示す図である。コード転送制御部14は、ユニットタグ生成部140と、コードタグカウンタ141とコードアドレスカウンタ142とを有する。コード転送制御部14は、プロセッサなどの外部装置から与えられるコード転送要求に従ってコードバッファ13からコントローラ11のプログラムコードと圧縮された演算ユニット10A〜Dの設定ビットを読み出し、読み出されたプログラムコードおよび設定ビットが書き込まれるコントローラ11または演算ユニット10A〜Dの記憶部を一意に識別可能なタグとともに、コントローラ11と演算ユニット10A〜Dにプログラムコードおよび設定ビットを転送する。コントローラ11および演算ユニット10A〜Dは、それぞれ転送されるコードに付加されるタグがコントローラ11および演算ユニット10A〜Dが所有する記憶部を指し示すものであるかどうかを判定し、そうである場合には記憶部にそのコードを書き込む。
【0046】
図3はユニットタグ生成部140の状態遷移図である。初期状態はS0である。プロセッサなどの外部装置からコード転送要求を受け取ると、ユニットタグ生成部140の状態はS0からS1に遷移し、その際にコードタグカウンタ141にセット信号1が初期値信号0とともに与えられ、コードタグカウンタ141の出力は0になる。また、コードアドレスカウンタ142にはセット信号1と、初期値信号としてコード転送要求のアドレス部が与えられ、コードアドレスカウンタ142の出力はこのアドレスになる。
【0047】
状態S1では、コードタグカウンタ141の出力がコード転送要求のプログラムコードサイズ部より小さい場合には、コードアドレスカウンタ142が示すコードバッファ13のアドレスからコードを読み出し、そのコードにコントローラ11のプログラムコード記憶部を示すユニットタグ“00001”(2進表現)と、コードタグカウンタ141の値とからなるタグを付加して、コントローラ11および演算ユニット10A〜Dに転送する。転送されたコードは、コントローラ11のプログラムコード記憶部の、コードタグカウンタ141が示すアドレス位置に書き込まれる。そして、状態S1に遷移する。
【0048】
また、コードタグカウンタ141およびコードアドレスカウンタ142にはインクリメント信号1が出力され、これらカウンタの値はサイクルの終わりにおいて1増やされる。
【0049】
一方、状態S1において、コードタグカウンタ141の出力がコード転送要求のプログラムコードサイズ部と等しい場合には、ユニットタグ“00000”にコードタグカウンタ141の値が付加されたものがコードタグとしてコードに付加されて、コントローラ11および演算ユニット10A〜Dに転送される。転送されたコードは、コントローラ11および演算ユニット10A〜Dのいずれの記憶部にも記録されない。また、コードタグカウンタ141の出力はサイクルの終わりに0にリセットされ、コードアドレスカウンタ142の値は変化しない。そして、状態S2に遷移する。
【0050】
同様にして、状態S2〜S5では、コントローラ11に書き込まれる圧縮された設定ビットの辞書情報が、設定IDごとに順に転送される。ここでは、設定IDの種類は4種類のため、4つの状態が用いられている。また、状態S6〜S9においても同様にして、演算ユニット10A〜Dに書き込まれる圧縮された設定ビットの符号情報がそれぞれ転送される。状態S2〜S5とは異なり、状態S6〜S9は演算ユニット10A〜Dに対応しており、それぞれの状態において各設定IDに対応する符号情報が順に転送される。
【0051】
状態S9において、コードタグカウンタ141の出力がコード転送要求の符号サイズと等しい場合には、プロセッサなどの外部装置にコード転送の完了を通知して、状態S0に戻る。
【0052】
以上が、コード転送制御部14の実現例とその動作に関する説明である。
【0053】
図4はコントローラ11の実現例を示す図である。コントローラ11は制御部11Aと実行制御メモリ11Bと辞書メモリ110〜113とを持つ。制御部11Aは実行制御メモリ11Bに接続されている。実行制御メモリ11Bにはコントローラ11で実行されるプログラムコードが記録され、辞書メモリ110〜113には圧縮された演算ユニット10A〜Dの設定ビットの辞書情報が設定IDごとに記録される。辞書メモリ110〜113の数は半導体装置1の設定IDの種類数に等しい。
【0054】
実行制御メモリ11Bと辞書メモリ110〜113への書き込みは初期化処理において行われる。コード転送制御部14から転送されるコードに付加されるコードタグの上位3ビットと、実行制御メモリ11Bおよび辞書メモリ110〜113を示す識別子との比較結果が、それぞれ実行制御メモリ11Bおよび辞書メモリ110〜113への書き込み許可信号となり、書き込み許可信号が1の場合には、コード転送制御部14から転送されるコードタグの下位ビットが示すアドレスにコードが書き込まれる。
【0055】
プロセッサなどの外部装置からデータ処理の開始が通知されると、制御部11Aは、実行制御メモリ11Bに格納されているプログラムコードをアドレス0から順に解釈し、その内容に従って動作を行う。
【0056】
図5は実行制御メモリ11Bに格納されるプログラムコードの構造例を示したものである。この例では、プログラムコードは、入力アドレスと、入力アドレスが有効かどうかを示すValidIビットと、出力アドレスと、出力アドレスが有効かどうかを示すValidOビットと、設定IDとを有する。このようなプログラムコードは、1サイクルで1ラインずつ実行される。
【0057】
制御部11Aは、入出力バッファ12にデータ読み出しのための制御情報を送出する際には、プログラムコードから入力アドレスとValidIビットを解釈し、それらを入出力バッファ12に送出する。入出力バッファ12は、ValidIビットが1の場合には入力アドレスが示す位置にあるデータを読み出して、演算ユニット10Aに送出する。
【0058】
制御部11Aは、入出力バッファ12にデータ書き込みのための制御情報を送出する際には、プログラムコードから出力アドレスとValidOビットを解釈し、それらを入出力バッファ12に送出する。それらの制御情報は、演算ユニット10の数に相当するサイクル数の後に入出力バッファ12に到達する。入出力バッファ12は、ValidOビットが1の場合には、演算ユニット10Dが出力するデータを出力アドレスが示す位置に書き込む。
【0059】
制御部11Aは、設定IDを演算ユニット10にパイプライン式に転送する際には、プログラムコードから設定IDを解釈して演算ユニット10Aに送出する。また、設定IDに従って辞書メモリ110〜113のいずれかから圧縮された設定ビットの辞書情報を読み出し、演算ユニット10Aに送出する。図2、図3に示すコード転送制御部14の実現例においては、設定ID0〜3がそれぞれ辞書メモリ110〜113に対応する。
【0060】
なお、コントローラ11がデータ読み出しのための制御情報を入出力バッファ12へ送出してから演算ユニット10Aに入力データが届くまでの時間と、コントローラ11が設定IDおよび圧縮された設定ビットの辞書情報を送出してから、それらが演算ユニット10Aに届くまでの時間は等しくなるよう制御される必要がある。
【0061】
そのために、入出力バッファ12からのデータ読み出しに数サイクルを要するのであれば、それに合わせて、図4のようにタイミング調整のためのラッチ11Cを数サイクル分挿入し、設定IDおよび辞書情報が演算ユニット10Aに届くまでの時間も数サイクル遅れるようにする。
【0062】
このようにして制御部11Aは、実行制御メモリ11Bにあるプログラムコードをアドレス0から順に解釈していき、全てのプログラムコードを解釈し終えたら、プロセッサなどの外部装置に処理の完了を通知して動作を停止する。
【0063】
以上がコントローラ11の実現例とその動作に関する説明である。
【0064】
図6は演算ユニット10の実現例を示す図である。演算ユニット10は、演算器100と設定ビットメモリ101とデコーダ102とデータパイプラインレジスタ103と制御パイプラインレジスタ104A〜Bとを持つ。演算器100のデータ入力信号は、演算ユニット10Aについては入出力バッファ12に接続され、演算ユニット10B〜Dについてはパイプライン前段の演算ユニット10A〜Cのデータパイプラインレジスタ103に接続される。また、演算器100の設定入力信号はデコーダ102の出力に接続され、演算器100のデータ出力信号はデータパイプラインレジスタ103に接続される。
【0065】
設定ビットメモリ101の読み出しアドレス信号は、演算ユニット10Aについてはコントローラ11の設定ID出力信号に接続され、演算ユニット10B〜Dについてはパイプライン前段の演算ユニット10A〜Cの制御パイプラインレジスタ104Aに接続される。また、設定ビットメモリ101の書き込み制御信号はコード転送制御部14に接続される。また、設定ビットメモリ101のデータ出力信号はデコーダ102の符号入力信号に接続される。
【0066】
設定ビットメモリ101の読み出しアドレス信号はまた、制御パイプラインレジスタ103Bの入力にも接続されている。また、デコーダ102の辞書入力信号は、演算ユニット10Aについてはコントローラ11の辞書出力信号に接続され、演算ユニット10B〜Dについてはパイプライン前段の演算ユニット10A〜Cの制御パイプラインレジスタ104Bに接続される。
【0067】
設定ビットメモリ101への書き込みは初期化処理において行われる。コード転送制御部14から転送されるコードに付加されるコードタグの上位3ビットと、設定ビットメモリ101を示す識別子との比較結果が、設定ビットメモリ101への書き込み許可信号となり、書き込み許可信号が1の場合には、コード転送制御部14から転送されるコードタグの下位ビットが示すアドレスにコードが書き込まれる。
【0068】
図7は演算器100の一例を示す図である。演算器100は8ビットのALUとシフタをそれぞれ4つずつ備えており、32ビットの2入力に対して、8ビット単位で異なる演算を行うよう設定できる。この演算結果を、32ビットの出力の一つとする。また、演算器100はクロスバースイッチを備えシフタからの8ビット出力4つの配置順を変更した結果を32ビット出力の一つとする。
【0069】
設定ビット長は8ビット演算あたり、ALUの入力の一つを直値とするかどうかを決める入力モードが1ビット、直値が8ビット、ALU設定が2ビット、シフト値が3ビット、クロスバースイッチ設定が2ビットの計16ビットからなり、演算器100全体では64ビットの設定ビットとなる。
【0070】
次に、演算ユニット10が備えるデコーダ102の実現例について説明する。
【0071】
デコーダ102の構成は、演算ユニット10の設定ビットをどのように圧縮するかに依存する。ここでは、例として3通りの圧縮方法を示し、そのそれぞれについてデコーダ102の実現例を示す。なお、演算器100の構成は図7に示したものとする。
【0072】
図8は圧縮方法1を説明するための図である。圧縮方法1では、辞書情報のサイズを256ビットとし、符号情報のサイズを演算ユニット10あたり16ビットとする。辞書情報は、設定IDにおいて演算ユニット10A〜Dで行われる全ての8ビット演算の設定を表す。演算器100では、8ビット演算あたり16ビットの設定ビットを必要とするので、この場合の辞書情報は最大で16の8ビット演算を表すことができる。
【0073】
一方、符号情報は、演算ユニット10で行われる4つの8ビット演算の設定として、辞書情報が表す8ビット演算の設定のどれを用いるかを示す辞書位置ビットを表す。この場合の辞書情報は最大16の8ビット演算を表すので、その中から一つの設定を特定するには演算ユニット10で行われる8ビット演算あたり4ビットが必要で、演算ユニット10あたりの符号情報は16ビットとなる。
【0074】
図9は圧縮方式1を実現するためのデコーダ102の実現例である。デコーダ102は、マルチプレクサ1020A〜Dを有する。マルチプレクサ1020A〜Dには、符号情報が表す4つの8ビット演算のための符号がセレクト信号としてそれぞれ入力され、そのセレクト信号に従ってコントローラから辞書情報として供給される16の設定ビットから一つを選択することで、符号情報から設定ビットを復号する。また、デコーダ102は入力された辞書情報をそのまま次段の演算ユニット10で用いられる辞書情報として出力する。
【0075】
圧縮方式1では、演算ユニット10A〜Dの符号情報に必要なサイズの総和は、演算ユニット10A〜Dの設定によらず64ビットであるので、演算ユニット10A〜Dで実行する8ビット演算の種類数が12未満であれば、辞書情報と符号情報のサイズの合計は、圧縮前の設定ビットのサイズである256ビットより小さくなり、コントローラ11および演算ユニット10A〜Dの記憶部に書き込む情報量を減らすことができる。
【0076】
図10は圧縮方式2を説明するための図である。圧縮方式2では、辞書情報のサイズを64ビットとし、符号情報のサイズを演算ユニット10あたり76ビットとする。辞書情報は、4つの16ビット演算の設定ビットを表す。符号情報の上位12ビットは、8ビット演算ごとに、辞書情報が表す設定ビットと、符号情報の下位ビットが表す設定ビットのうち、どの設定ビットを用いるかを示す辞書位置ビットを、3ビットずつ表す。また、符号情報の下位64ビットは、演算ユニット10で行われる演算のうち、辞書情報には含まれない演算の設定ビットを上位から順に表す。
【0077】
図11は圧縮方式2を実現するためのデコーダ102の実現例である。デコーダ102はマルチプレクサ1021A〜Hと、マルチプレクサ1022A〜Dとを有する。マルチプレクサ1021A〜Hには、符号情報に記録される辞書位置ビットの下位2ビットがそれぞれセレクト信号として入力され、そのセレクト信号に従ってコントローラから供給される辞書情報の設定ビットから1つと、符号情報の設定ビットから1つとを演算器100ごとに選択する。さらに、符号情報に記録される辞書使用ビットの最上位ビットに従って、マルチプレクサ1022A〜Dにより辞書情報の設定ビットと符号情報の設定ビットのいずれか一方をそれぞれ選択することで、符号情報から設定ビットを復号する。また、デコーダ102は入力された辞書情報をそのまま次段の演算ユニット10で用いられる辞書情報として出力する。
【0078】
圧縮方式2では、8ビット演算あたりの辞書位置ビットのサイズは、圧縮方式1より1ビット少ない3ビットなので、最も効率よく圧縮できた場合の辞書情報と符号情報のサイズの総和は、圧縮方式1より小さくなる。しかしながら、演算ユニット10はそれぞれ辞書情報として4種類の8ビット演算のみしか受け取れないため、演算ユニット10A〜Dで行われる8ビット演算の種類数が5種類以上の場合、演算ユニット10A〜Dの間で8ビット演算が共有されるパターンによっては、2つ以上の演算ユニット10の符号情報において同一の設定ビットが重複する場合が生じる。このような重複が2回以上生じる場合には、圧縮方式2の圧縮効率は圧縮方式1より低下する。
【0079】
なお、辞書情報と符号情報に記録される8ビット演算の数が、重複も含めて13未満であれば、圧縮後の辞書情報と符号情報のサイズの総和は圧縮前の設定ビットのサイズより小さくなる。
【0080】
図12は圧縮方式3を説明するための図である。圧縮方式3では、圧縮方式2と同様に辞書情報のサイズを64ビット、符号情報のサイズを演算ユニット10あたり76ビットとする。辞書情報に4つの16ビット演算の設定ビットが記録されるのも圧縮方式2と同様である。一方、符号情報の上位8ビットは、8ビット演算ごとに、辞書情報に記録される設定ビットのうち、どの設定ビットを用いるかを示す辞書位置ビットを、2ビットずつ表す。また、続く符号情報の4ビットは、辞書情報の設定ビットのうち次段の演算ユニットでは使われない8ビット演算を示す設定交換ビットを表し、符号情報の下位64ビットは、次段の演算ユニットで使われる8ビット演算のうち、辞書情報に含まれない演算の設定ビットを表す。
【0081】
図13は圧縮方式3を実現するためのデコーダ102の実現例である。デコーダ102は、マルチプレクサ1023A〜Dと、マルチプレクサ1024A〜Cと、プライオリティエンコーダ1025A〜Cと、マルチプレクサ1026A〜Dとを有する。マルチプレクサ1023A〜Dには、セレクト信号として辞書位置ビットがそれぞれ入力され、そのセレクト信号に従って辞書情報の4つの設定ビットから一つの設定ビットを選ぶことで、符号情報から設定ビットを復号する。
【0082】
一方、プライオリティエンコーダ1025A〜Cには設定交換ビットが入力され、設定交換ビット中に1が1〜3番目に出現する設定交換ビットのビット位置(最下位ビットが0、最上位ビットが3)がそれぞれ出力される。設定交換ビットの1の数が求める数に満たない場合には、プライオリティエンコーダ1025A〜Cは0を出力する。そして、プライオリティエンコーダ1025A〜Cの出力をマルチプレクサ1024A〜Cのセレクト信号とすることで、マルチプレクサ1024A〜Cからは辞書情報の1〜3番目の設定ビットと置き換えられる設定ビットが出力される。そして、設定交換ビットの各ビットをマルチプレクサ1026A〜Dのセレクト信号とすることにより、辞書情報に含まれる8ビット演算の設定ビットのそれぞれと、マルチプレクサ1024A〜Cから出力される設定ビットおよび符号情報の下位16ビットに記憶される設定ビットのそれぞれとを選択する。マルチプレクサ1026Dでは、辞書情報の設定ビット3と符号情報の設定ビット3とを選択する。そしてデコーダ102は、マルチプレクサ1026A〜Dの出力を次段の演算ユニット10で用いられる辞書情報として出力する。
【0083】
圧縮方式3では、辞書情報を演算ユニット10A〜Dのパイプラインを流れる過程で変更することができるため、圧縮方式2では同一の設定ビットを複数の演算ユニット10の符号情報に重複して持つ必要がある場合に、圧縮方式3では重複が生じない場合がある。一方で、例えば演算ユニット10Aと演算ユニット10B、演算ユニット10Cと演算ユニット10Dではそれぞれ全く異なる4種類の8ビット演算を行っているが、演算ユニット10Aと演算ユニット10C、演算ユニット10Bと演算ユニット10Dでは全く等しい8ビット演算を行っている場合などでは、演算ユニット10B〜Dの符号情報にそれぞれ4種類の設定ビットを格納する必要があるため、圧縮方式1や2よりも圧縮効率が悪くなる。
【0084】
以上、圧縮方式の例として圧縮方式1〜3と、それに対応するデコーダ102の実現例を述べたが、上述の通り演算ユニット10A〜Dにおける8ビット演算の共有パターンによって圧縮効率が最もよい圧縮方式は異なるので、例えば辞書情報に圧縮方式1〜3のいずれを用いるかを示す2ビットの圧縮方式IDを付加し、また演算ユニット10は圧縮方式1〜3に対応する3つのデコーダ102を備えることで、圧縮方式IDに従って設定ビットの復号に用いるデコーダ102を選択して設定ビットを復号するようにしてもよい。
【0085】
以上が演算ユニット10の実現例に関する説明である。次に、演算ユニット10の動作を説明するために、半導体装置1がデータ処理を行う際の動作例を示す。
【0086】
図14は半導体装置1がデータ処理を行う際の動作を説明するタイミングチャートである。サイクル1の時点では、プログラムコードと圧縮された設定ビットの辞書情報はコントローラ11の記憶部に、圧縮された設定ビットの符号情報演算ユニット10A〜Dに既にそれぞれ格納されている。
【0087】
サイクル1において、コントローラ11は設定ID“0”と辞書情報“D0”を送出する。また、コントローラ11は入出力バッファ12を介してデータ“d0”を送出する。
【0088】
サイクル2において、演算ユニット10Aは設定ID“0”を受け取り、設定ビットメモリ101のアドレス0から符号情報“C00”が読み出される。またデコーダ102は辞書情報“D0”と符号情報“C00”から設定ビット“c00”を復号して、演算器100に入力する。さらにデコーダ102は、前述の圧縮方式に示される規則に従って、演算ユニット10Bに辞書情報“D00”を送出する。同サイクルにおいて、コントローラ11は設定ID“3”と辞書情報“D3”を送出する。また、コントローラ11は入出力バッファ12を介してデータ“d1”を送出する。
【0089】
サイクル3において、演算ユニット10Aの演算器100は設定ビット“c00”の設定においてデータ“d0”を入力として演算“e00”を実行し、演算結果“d00”をデータパイプラインレジスタ103に書き込む。一方、デコーダ102は、設定ビットメモリ101のアドレス3から読み出された符号情報“C03”と辞書情報“D3”から設定ビット“c13”を復号して、演算器100に入力するとともに、演算ユニット10Bに辞書情報“D30”を送出する。同サイクルにおいて、演算ユニット10Bは設定ID“0”を受け取り、設定ビットメモリ101のアドレス0から符号情報“C10”が読み出される。またデコーダ102は辞書情報“D00”と符号情報“C10”から設定ビット“c10”を復号して、演算器100に入力するとともに、演算ユニット10Cに辞書情報“D01”を送出する。また同サイクルにおいて、コントローラ11は設定ID“1”と辞書情報“D1”を送出する。また、コントローラ11は入出力バッファ12を介してデータ“d2”を送出する。
【0090】
サイクル4において、演算ユニット10Aの演算器100は設定ビット“c03”の設定においてデータ“d1”を入力として演算“e03”を実行し、演算結果“d10”をデータパイプラインレジスタ103に書き込む。一方、デコーダ102は、設定ビットメモリ101のアドレス1から読み出された符号情報“C01”と辞書情報“D1”から設定ビット“c01”を復号して、演算器100に入力するとともに、演算ユニット10Bに辞書情報“D10”を送出する。同サイクルにおいて、演算ユニット10Bの演算器100は設定ビット“c10”の設定においてデータ“d00”を入力として演算“e10”を実行し、演算結果“d01”をデータパイプラインレジスタ103に書き込む。一方、デコーダ102は、設定ビットメモリ101のアドレス3から読み出された符号情報“C13”と辞書情報“D30”から設定ビット“c03”を復号して、演算器100に入力するとともに、演算ユニット10Cに辞書情報“D31”を送出する。同サイクルにおいて、演算ユニット10Cは設定ID“0”を受け取り、設定ビットメモリ101のアドレス0から符号情報“C20”が読み出される。またデコーダ102は辞書情報“D01”と符号情報“C20”から設定ビット“c20”を復号して、演算器100に入力するとともに、演算ユニット10Cに辞書情報“D02”を送出する。同サイクルにおいて、コントローラ11は設定ID“2”と辞書情報“D2”を送出する。また、コントローラ11は入出力バッファ12を介してデータ“d3”を送出する。
【0091】
以後のサイクルにおける、コントローラ11および演算ユニット10A〜Dの動作は同様なので省略する。以上が、半導体装置1がデータ処理を行う際の動作例に関する説明である。
【0092】
上述の説明の通り、半導体装置1においては、図14に示すように、演算ユニット10A〜Dは、サイクルごとに、受け取った、圧縮された設定ビットの辞書情報を用いてそれぞれの演算ユニット10の設定ビットのみを復号すればよいので、半導体装置1が備える演算ユニット10の数が増大しても、1サイクルに要する時間は増大しない。
【0093】
また、半導体装置1においては、コントローラ11から辞書情報をパイプライン式に演算ユニット10A〜Dに転送して設定ビットを復元するため、図14におけるサイクル3のように、圧縮された設定ビットの復号を複数の演算ユニット10でサイクルごとに並列に行うことができる。さらに図14におけるサイクル4のように、演算ユニット10の演算器100における復号された設定ビットを用いた演算も、複数の演算ユニット10でサイクルごとに並列に行うことができる。
【0094】
以上説明した本実施の形態によれば、パイプライン型に接続された複数の演算ユニット10のそれぞれで、圧縮された設定情報から復号された設定ビットにより演算器100の設定を変更して演算を行うという処理を遅延なく行えるようになる。
【0095】
そして、このような半導体装置を用いることで、動的リコンフィギュラブル回路の設定情報を圧縮された形で記憶装置に格納することが可能になるため、設定情報を記憶装置に書き込むのに要する時間を短縮することができる。
【0096】
更に、このような半導体装置を用いることで設定情報を記憶装置に書き込むのに要する時間が短縮されることにより、動的リコンフィギュラブル回路による演算実行と新しい設定情報の記憶装置への書き込みを同時に実行することが容易になるため、動的リコンフィギュラブル回路がパイプライン型に接続された半導体装置全体の情報処理速度を向上させることも可能になる。
【0097】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【0098】
【図1】実施形態に係る半導体装置を示すブロック図
【図2】実施形態に係るコード転送制御部を示すブロック図
【図3】実施形態に係るユニットタグ生成部の動作を示す状態遷移図
【図4】実施形態に係るコントローラを示すブロック図
【図5】実行制御メモリに記憶されるプログラムコードの一例を示す図
【図6】実施形態に係る演算ユニットを示すブロック図
【図7】実施形態に係る演算器の構成を示すブロック図
【図8】圧縮方法1における辞書情報と符号情報との関係を示す図
【図9】実施形態に係るデコーダの圧縮方法1における構成を示すブロック図
【図10】圧縮方法2における辞書情報と符号情報との関係を示す図
【図11】実施形態に係るデコーダの圧縮方法2における構成を示すブロック図
【図12】圧縮方法3における辞書情報と符号情報との関係を示す図
【図13】実施形態に係るデコーダの圧縮方法3における構成を示すブロック図
【図14】コントローラ、各演算ユニットのサイクルごとの動作を示すタイミングチャート
【符号の説明】
【0099】
1…半導体装置;
10A〜10D…演算ユニット;
100…演算器;
101…設定ビットメモリ;
102…デコーダ;
1020A〜1020D,1021A〜1021H,1022A〜1022D,1023A〜1023D,1024A〜1024C,1026A〜1026D…マルチプレクサ;
1025A〜1025C…プライオリティエンコーダ;
103…データパイプラインレジスタ;
104A〜104B…制御パイプラインレジスタ;
11…コントローラ;
11A…制御部;
11B…実行制御メモリ;
11C…ラッチ;
110,111,112,113…辞書メモリ;
12…入出力バッファ;
13…コードバッファ;
14…コード転送制御部;
140…ユニットタグ生成部;
141…コードタグカウンタ;
142…コードアドレスカウンタ
【特許請求の範囲】
【請求項1】
第1設定ビットよりもビット長が短い第1符号情報を記憶しており、各符号情報に対応する各設定ビットを表す辞書情報を受信し、前記第1符号情報に対応する設定ビットを前記辞書情報から読み出すことにより前記第1設定ビットを求め、該第1設定ビットに従い設定を変更することにより複数の演算のいずれかを行って演算結果を得る第1の演算ユニットと、
第2設定ビットよりもビット長が短い第2符号情報を記憶しており、前記辞書情報を前記第1の演算ユニットから受信し、前記第2符号情報に対応する設定ビットを前記辞書情報から読み出すことにより前記第2設定ビットを求め、該第2設定ビットに従い設定を変更することにより前記演算結果に対して前記複数の演算のいずれかを行う第2の演算ユニットとを具備する半導体装置。
【請求項2】
複数の設定IDに対応する前記辞書情報を複数記憶し、該複数の設定IDのいずれかと、該設定IDに対応する辞書情報とを前記第1の演算ユニットに送信するコントローラをさらに具備する請求項1記載の半導体装置。
【請求項3】
前記第1の演算ユニットは、複数の設定IDに対応する複数の第1符号情報を記憶する第1記憶部を具備し、前記複数の設定IDのいずれかを前記コントローラから受信し、対応する第1符号情報を前記第1記憶部から読み出して前記第1設定ビットを求め、
前記第2の演算ユニットは、前記複数の設定IDに対応する複数の第2符号情報を記憶する第2記憶部を具備し、前記複数の設定IDのいずれかを前記コントローラから受信し、対応する第2符号情報を前記第2記憶部から読み出して前記第2設定ビットを求める請求項2記載の半導体装置。
【請求項4】
前記辞書情報は、前記コントローラが送信する設定IDの指定により前記第1の演算ユニットが行う複数の演算と、前記設定IDの指定により前記第2の演算ユニットが行う複数の演算とに含まれる演算を定める全ての種類の設定ビットを含む請求項2記載の半導体装置。
【請求項5】
前記第1符号情報は、前記コントローラが送信する設定IDの指定により前記第1の演算ユニットが行う複数の演算を定める設定ビットが前記辞書情報において格納されている位置を指定するポインタを前記複数の演算ごとに含み、
前記第1の演算ユニットは、前記コントローラから受信した辞書情報から前記ポインタに従って設定ビットを読み出すことにより前記第1設定ビットを求め、該第1設定ビットが定める演算を行うとともに、前記辞書情報を前記第2の演算ユニットに送信し、
前記第2符号情報は、前記コントローラが送信する設定IDの指定により前記第2の演算ユニットが行う複数の演算を定める設定ビットが前記第1の演算ユニットから受信した辞書情報において格納されている位置を指定するポインタを前記複数の演算ごとに含み、
前記第2の演算ユニットは、前記第1の演算ユニットから受信した辞書情報から前記第2符号情報に含まれるポインタに従って設定ビットを読み出すことにより前記第2設定ビットを求め、該第2設定ビットが定める演算を行う請求項4記載の半導体装置。
【請求項6】
前記辞書情報は、前記コントローラが送信する設定IDの指定により前記第1の演算ユニットが行う複数の演算と、前記設定IDの指定により前記第2の演算ユニットが行う複数の演算とに含まれる演算を定める全ての種類の設定ビットのうちの一部を含む請求項2記載の半導体装置。
【請求項7】
前記第1符号情報は、前記コントローラが送信する設定IDの指定により前記第1の演算ユニットが行う複数の演算を定める設定ビットのうち、前記辞書情報に含まれない設定ビットを含み、かつ前記複数の演算を定める設定ビットが前記辞書情報および該第1符号情報において格納されている位置を指定するポインタを前記複数の演算ごとに含み、
前記第1の演算ユニットは、前記第1符号情報および前記コントローラから受信した辞書情報から、該第1符号情報に含まれるポインタに従って設定ビットを読み出すことにより前記第1設定ビットを求め、該第1設定ビットが定める演算を行うとともに前記辞書情報を前記第2の演算ユニットに送信し、
前記第2符号情報は、前記コントローラが送信する設定IDの指定により前記第2の演算ユニットが行う複数の演算を定める設定ビットのうち前記第1の演算ユニットから受信した辞書情報に含まれない設定ビットを含み、かつ前記複数の演算を定める設定ビットが前記辞書情報および前記第2符号情報において格納されている位置を指定するポインタを前記複数の演算ごとに含み、
前記第2の演算ユニットは、前記第2符号情報および前記第1の演算ユニットから受信した辞書情報から、該第2符号情報に含まれるポインタに従って設定ビットを読み出すことにより前記第2設定ビットを求め、該第2設定ビットが定める演算を行う請求項6記載の半導体装置。
【請求項8】
前記第1符号情報は、
前記コントローラが送信する設定IDの指定により前記第1の演算ユニットが行う複数の演算を定める設定ビットが前記辞書情報において格納されている位置を指定するポインタと、
前記コントローラが送信する設定IDの指定により前記第2の演算ユニットが行う複数の演算を定める設定ビットのうち前記辞書情報に含まれない設定ビットと、
前記第2の演算ユニットが行う複数の演算を定める設定ビットに含まれない設定ビットが前記辞書情報において格納されている位置を指定するビットベクタとを含み、
前記第1の演算ユニットは、
前記コントローラから受信した辞書情報から、前記第1符号情報に含まれるポインタに従って設定ビットを読み出すことにより前記第1設定ビットを求め、該第1設定ビットが定める演算を行い、
前記第2の演算ユニットが行う複数の演算を定める設定ビットに含まれない設定ビットを、前記第1符号情報が含む設定ビットに置き換えたものを辞書情報として前記第2の演算ユニットに送信し、
前記第2の記憶部上の符号情報は、
前記コントローラが送信する設定IDの指定により前記第2の演算ユニットが行う複数の演算を定める設定ビットが前記辞書情報において格納されている位置を指定するポインタを含み、
前記第2の演算ユニットは、前記第1の演算ユニットから受信した辞書情報から、前記第2の記憶部に含まれるポインタに従って設定ビットを読み出すことにより前記第2設定ビットを求め、該第2設定ビットが定める演算を行う請求項4記載の半導体装置。
【請求項1】
第1設定ビットよりもビット長が短い第1符号情報を記憶しており、各符号情報に対応する各設定ビットを表す辞書情報を受信し、前記第1符号情報に対応する設定ビットを前記辞書情報から読み出すことにより前記第1設定ビットを求め、該第1設定ビットに従い設定を変更することにより複数の演算のいずれかを行って演算結果を得る第1の演算ユニットと、
第2設定ビットよりもビット長が短い第2符号情報を記憶しており、前記辞書情報を前記第1の演算ユニットから受信し、前記第2符号情報に対応する設定ビットを前記辞書情報から読み出すことにより前記第2設定ビットを求め、該第2設定ビットに従い設定を変更することにより前記演算結果に対して前記複数の演算のいずれかを行う第2の演算ユニットとを具備する半導体装置。
【請求項2】
複数の設定IDに対応する前記辞書情報を複数記憶し、該複数の設定IDのいずれかと、該設定IDに対応する辞書情報とを前記第1の演算ユニットに送信するコントローラをさらに具備する請求項1記載の半導体装置。
【請求項3】
前記第1の演算ユニットは、複数の設定IDに対応する複数の第1符号情報を記憶する第1記憶部を具備し、前記複数の設定IDのいずれかを前記コントローラから受信し、対応する第1符号情報を前記第1記憶部から読み出して前記第1設定ビットを求め、
前記第2の演算ユニットは、前記複数の設定IDに対応する複数の第2符号情報を記憶する第2記憶部を具備し、前記複数の設定IDのいずれかを前記コントローラから受信し、対応する第2符号情報を前記第2記憶部から読み出して前記第2設定ビットを求める請求項2記載の半導体装置。
【請求項4】
前記辞書情報は、前記コントローラが送信する設定IDの指定により前記第1の演算ユニットが行う複数の演算と、前記設定IDの指定により前記第2の演算ユニットが行う複数の演算とに含まれる演算を定める全ての種類の設定ビットを含む請求項2記載の半導体装置。
【請求項5】
前記第1符号情報は、前記コントローラが送信する設定IDの指定により前記第1の演算ユニットが行う複数の演算を定める設定ビットが前記辞書情報において格納されている位置を指定するポインタを前記複数の演算ごとに含み、
前記第1の演算ユニットは、前記コントローラから受信した辞書情報から前記ポインタに従って設定ビットを読み出すことにより前記第1設定ビットを求め、該第1設定ビットが定める演算を行うとともに、前記辞書情報を前記第2の演算ユニットに送信し、
前記第2符号情報は、前記コントローラが送信する設定IDの指定により前記第2の演算ユニットが行う複数の演算を定める設定ビットが前記第1の演算ユニットから受信した辞書情報において格納されている位置を指定するポインタを前記複数の演算ごとに含み、
前記第2の演算ユニットは、前記第1の演算ユニットから受信した辞書情報から前記第2符号情報に含まれるポインタに従って設定ビットを読み出すことにより前記第2設定ビットを求め、該第2設定ビットが定める演算を行う請求項4記載の半導体装置。
【請求項6】
前記辞書情報は、前記コントローラが送信する設定IDの指定により前記第1の演算ユニットが行う複数の演算と、前記設定IDの指定により前記第2の演算ユニットが行う複数の演算とに含まれる演算を定める全ての種類の設定ビットのうちの一部を含む請求項2記載の半導体装置。
【請求項7】
前記第1符号情報は、前記コントローラが送信する設定IDの指定により前記第1の演算ユニットが行う複数の演算を定める設定ビットのうち、前記辞書情報に含まれない設定ビットを含み、かつ前記複数の演算を定める設定ビットが前記辞書情報および該第1符号情報において格納されている位置を指定するポインタを前記複数の演算ごとに含み、
前記第1の演算ユニットは、前記第1符号情報および前記コントローラから受信した辞書情報から、該第1符号情報に含まれるポインタに従って設定ビットを読み出すことにより前記第1設定ビットを求め、該第1設定ビットが定める演算を行うとともに前記辞書情報を前記第2の演算ユニットに送信し、
前記第2符号情報は、前記コントローラが送信する設定IDの指定により前記第2の演算ユニットが行う複数の演算を定める設定ビットのうち前記第1の演算ユニットから受信した辞書情報に含まれない設定ビットを含み、かつ前記複数の演算を定める設定ビットが前記辞書情報および前記第2符号情報において格納されている位置を指定するポインタを前記複数の演算ごとに含み、
前記第2の演算ユニットは、前記第2符号情報および前記第1の演算ユニットから受信した辞書情報から、該第2符号情報に含まれるポインタに従って設定ビットを読み出すことにより前記第2設定ビットを求め、該第2設定ビットが定める演算を行う請求項6記載の半導体装置。
【請求項8】
前記第1符号情報は、
前記コントローラが送信する設定IDの指定により前記第1の演算ユニットが行う複数の演算を定める設定ビットが前記辞書情報において格納されている位置を指定するポインタと、
前記コントローラが送信する設定IDの指定により前記第2の演算ユニットが行う複数の演算を定める設定ビットのうち前記辞書情報に含まれない設定ビットと、
前記第2の演算ユニットが行う複数の演算を定める設定ビットに含まれない設定ビットが前記辞書情報において格納されている位置を指定するビットベクタとを含み、
前記第1の演算ユニットは、
前記コントローラから受信した辞書情報から、前記第1符号情報に含まれるポインタに従って設定ビットを読み出すことにより前記第1設定ビットを求め、該第1設定ビットが定める演算を行い、
前記第2の演算ユニットが行う複数の演算を定める設定ビットに含まれない設定ビットを、前記第1符号情報が含む設定ビットに置き換えたものを辞書情報として前記第2の演算ユニットに送信し、
前記第2の記憶部上の符号情報は、
前記コントローラが送信する設定IDの指定により前記第2の演算ユニットが行う複数の演算を定める設定ビットが前記辞書情報において格納されている位置を指定するポインタを含み、
前記第2の演算ユニットは、前記第1の演算ユニットから受信した辞書情報から、前記第2の記憶部に含まれるポインタに従って設定ビットを読み出すことにより前記第2設定ビットを求め、該第2設定ビットが定める演算を行う請求項4記載の半導体装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2009−193466(P2009−193466A)
【公開日】平成21年8月27日(2009.8.27)
【国際特許分類】
【出願番号】特願2008−35169(P2008−35169)
【出願日】平成20年2月15日(2008.2.15)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成21年8月27日(2009.8.27)
【国際特許分類】
【出願日】平成20年2月15日(2008.2.15)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]