半導体信号処理装置
【課題】大量のデータを高速で効率的に演算処理する処理装置を実現する。
【解決手段】主演算回路(20)に対する演算処理命令を、マイクロ命令メモリ(21)にマイクロプログラムの形態で格納し、このマイクロプログラムに従ってコントローラ22の制御の下に主演算回路の動作制御を実行する。主演算回路(20)においてはメモリセルマット(30)が、それぞれが複数ビットのデータを格納するエントリに分割され、各エントリに対応して演算器(ALU)が配置される。エントリとALUとの間で、ビットシリアル態様で各エントリ並列に演算処理を実行する。マイクロプログラム制御方式に従って効率的に大量のデータを処理することができる。
【解決手段】主演算回路(20)に対する演算処理命令を、マイクロ命令メモリ(21)にマイクロプログラムの形態で格納し、このマイクロプログラムに従ってコントローラ22の制御の下に主演算回路の動作制御を実行する。主演算回路(20)においてはメモリセルマット(30)が、それぞれが複数ビットのデータを格納するエントリに分割され、各エントリに対応して演算器(ALU)が配置される。エントリとALUとの間で、ビットシリアル態様で各エントリ並列に演算処理を実行する。マイクロプログラム制御方式に従って効率的に大量のデータを処理することができる。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、半導体信号処理装置に関し、特に、高速に大量のデータの演算処理を行なう半導体メモリを用いた信号処理用集積回路装置の構成に関する。
【背景技術】
【0002】
近年、携帯端末機器の普及に伴い、音声および画像のような大量のデータを高速に処理するデジタル信号処理の重要性が高くなってきている。このようなデジタル信号処理には、一般に、専用の半導体装置としてDSP(デジタル・シグナル・プロセサ)が用いられる。音声および画像データに対するデジタル信号処理においては、フィルタ処理などのデータ処理が行なわれ、このような処理においては積和演算を繰返す演算処理が多い。したがって、一般に、DSPの構成においては、乗算回路、加算回路および累算用のレジスタが設けられる。このような専用のDSPを用いると、積和演算を1マシンサイクルで実行することが可能となり、高速演算処理が可能となる。
【0003】
このような積和演算を行なう際に、レジスタファイルを利用する構成が、特許文献1(特開平6−324862号公報)に示されている。この特許文献1においては、レジスタファイルに格納された2項のオペランドデータを読出して演算器で加算した後、書込データレジスタを介してレジスタファイルに加算結果を書込む。この特許文献1に示される構成においては、レジスタファイルに対して書込アドレスおよび読出アドレスを同時に与えてデータの書込およびデータの読出を並行に行なうことにより、データの書込サイクルおよびデータの読出サイクルを別々に設けて演算処理する構成に比べて処理時間を短縮することを図る。
【0004】
また、大量のデータを高速で処理することを意図する構成が、特許文献2(特開平5−197550号公報)に示されている。この特許文献2に示される構成においては、複数の演算装置を並列に配置し、それぞれの演算装置にメモリを内蔵する。各演算装置において個々にメモリアドレスを生成することにより、並列演算を高速で行なうことを図る。
【0005】
また、画像データのDCT変換(離散コサイン変換)などの処理を高速に行なうことを目的とする信号処理装置が、特許文献3(特開平10−74141号公報)に示されている。この特許文献3に示される構成においては、画像データがビットパラレルかつワードシリアルなシーケンスで、すなわちワード(画素データ)単位で入力されるため、直列/並列変換回路を用いてワードパラレルかつビットシリアルなデータ列に変換してメモリアレイに書込む。メモリアレイに対応して配置される演算器(ALU)へデータを転送して並列処理を実行する。メモリアレイは、画像データブロックに応じてブロックに分割されており、各ブロックにおいて対応の画像ブロックを構成する画像データがメモリアレイの行ごとにワード単位で格納される。
【0006】
この特許文献3に示される構成においては、メモリアレイ対応の演算器との間でワード(1つの画素に対応するデータ)単位でデータを転送する。各ブロック個々に対応の演算器において同一処理を転送されたワードに対して実行することにより、DCT変換などのフィルタ処理を高速で実行することを図る。演算処理結果は、再びメモリアレイに書込み、再度、並列/直列変換を行なってビットシリアルかつワードパラレルデータをビットパラレルかつワードシリアルなデータに変換して1ラインごとのデータを順次出力する。通常の処理においては、データのビット位置の変換は行なわれず、演算器において通常の演算処理を複数のデータに対して並列に実行する。
【0007】
また、複数の異なる演算処理を並行して実行すること目的とするデータ処理装置が特許文献4(特開2003−114797号公報)に示されている。この特許文献4に示される構成においては、各々その機能が限定された複数の論理モジュールをマルチポート構成のデータメモリに接続する。これらの論理モジュールとマルチポートデータメモリとの接続においては、論理モジュールが接続されるマルチポートメモリのポートおよびメモリが制限されており、したがって、各論理モジュールがマルチポートメモリへアクセスしてデータの読出および書込を行なうことのできるアドレス領域が、制限される。各論理モジュールで演算を行なった結果は、アクセスが許可されたメモリに書込み、これらのマルチポートメモリを介して順次データを論理モジュールを介して転送することにより、パイプライン的にデータ処理を行なうことを図る。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開平6−324862号公報
【特許文献2】特開平5−197550号公報
【特許文献3】特開平10−74141号公報
【特許文献4】特開2003−114797号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
処理対象のデータ量が非常に多い場合には、専用のDSPを用いても、性能を飛躍的に向上させることは困難である。たとえば、演算対象のデータが1万組ある場合、1つ1つのデータに対する演算を1マシンサイクルで実行することができたとしても、最低でも1万サイクルが演算に必要となる。したがって、特許文献1に示されるような、レジスタファイルを用いて積和演算を行なうような構成の場合、1つ1つの処理は高速であるものの、データ処理が直列に行なわれるため、データ量が多くなるとそれに比例して処理時間が長くなり、高速処理を実現することができない。また、このような専用のDSPを利用する場合、処理性能は動作周波数に大きく依存することになるため、高速処理を優先した場合、消費電力が増大することになる。
【0010】
また、この特許文献1に示されるようなレジスタファイルおよび演算器を利用する場合、ある用途に特化して設計されることが多く、演算ビット幅および演算回路の構成等が固定される。したがって、他の用途に転用する場合には、そのビット幅および演算回路の構成を設計し直す必要があり、複数の演算処理用途に柔軟に対応することができなくなるという問題が生じる。
【0011】
また、特許文献2に示される構成においては、演算装置個々にメモリが内蔵されており、各演算装置において異なるメモリアドレス領域をアクセスして処理を行なう。しかしながら、データメモリと演算装置とは別々の領域に配置されており、論理モジュール内において演算装置とメモリとの間でアドレスを転送してデータアクセスを行なう必要があり、データ転送に時間を要し、このためマシンサイクルを短縮することができなくなり、高速処理を行なうことができなくなるという問題が生じる。
【0012】
また、特許文献3に示される構成においては、画像データのDCT変換などの処理を高速化することを図っており、画面1ラインの画素データを1行のメモリセルに格納して行方向に整列する画像ブロックに対して並列に処理を実行している。したがって、画像の高精細化のために1ラインの画素数が増大した場合、メモリアレイが膨大なものとなる。たとえば、1画素のデータが8ビットで1ラインの画素数が512個の場合でも、メモリアレイの1行においてはメモリセルの数が8・512=4Kビットとなり、1行のメモリセルが接続される行選択線(ワード線)の負荷が大きくなり、高速でメモリセルを選択してデータを演算部とメモリセルとの間で転送することができなくなり、応じて高速処理を実現することができなくなるという問題が生じる。
【0013】
また、特許文献3においては、メモリセルアレイを演算回路群両側に配置する構成は示されているものの、具体的なメモセルアレイの構造は示されておらず、また演算回路において演算器をアレイ状に配置することは示されているものの、どのように演算器群を配置するかの詳細については何ら示されていない。
【0014】
また、特許文献4に示される構成においては、複数のマルチポートデータメモリと、これらのマルチポートデータメモリに対してアクセス領域が制限される複数の低機能の演算器(ALU)とが設けられている。しかしながら、この演算器(ALU)とメモリとは別の領域に配置されており、配線容量などにより高速でデータを転送することができず、パイプライン処理を実行しても、このパイプラインのマシンサイクルを短縮することができなくなるという問題が生じる。
【0015】
また、これらの特許文献1から4においては、演算処理対象のデータの語構成が異なる場合、どのように対応するかについては何ら検討していない。
【0016】
それゆえ、この発明の目的は、高速で大量のデータを処理することのできる半導体信号処理装置を提供することである。
【0017】
この発明の他の目的は、データの語構成および演算内容にかかわらず高速で演算処理を実行することのできる半導体信号処理装置を提供することである。
【0018】
この発明のさらに他の目的は、柔軟に処理内容を変更することのできる演算機能内蔵半導体信号処理装置を提供することである。
【課題を解決するための手段】
【0019】
この発明に係る半導体信号処理装置は、行列状に配列される複数のメモリセルを有しかつ各々が複数のメモリセルを有する複数のエントリに分割されるメモリアレイと、このメモリアレイの各エントリに対応して配置される複数の演算回路とを含む主演算回路と、マイクロ命令を格納するマイクロ命令メモリと、このマイクロ命令メモリからのマイクロ命令に従って、メモリアレイおよび複数の演算回路に対する動作制御を行なう制御回路を備える。
【発明の効果】
【0020】
メモリアレイを複数のエントリに分割し、各エントリに対して演算回路を配置する。このメモリアレイおよび演算回路の間のデータ転送およびデータの書込/読出および演算処理は、マイクロ命令メモリからのマイクロ命令に従って動作制御を行なっており、通常のワイヤードロジックと同程度の速度で処理を実行することができる。また、マイクロプログラム命令により、その演算処理内容を適用用途に応じて変更することができ、異なる演算内容に対して柔軟に対応することができる。
【0021】
また、複数のエントリに対して並列に演算処理を実行するため、大量のデータの高速演算処理を実現することができる。
【0022】
また、各エントリに同一のデータワードを格納し、ビットシリアル態様で対応の演算回路で演算処理を行なう構成とすることにより、データの語構成(ビット幅)の変更に対しても大幅なハードウェアの変更を行なうことなく対応して、演算処理を行なうことができる。
【図面の簡単な説明】
【0023】
【図1】この発明の実施の形態1に従う信号処理システムの構成を概略的に示す図である。
【図2】図1に示す主演算回路の要部の構成を示す図である。
【図3】図1に示すメモリマットに含まれるメモリセルの構成の一例を示す図である。
【図4】図1に示す主演算回路の処理動作を示す図である。
【図5】図4に示す処理動作の処理シーケンスを示す図である。
【図6】この発明の実施の形態1に従う基本演算ブロックの構成を概略的に示す図である。
【図7】この発明の実施の形態1におけるマイクロプログラムの一例を示す図である。
【図8】図7に示すアドレス更新の動作を示すタイミング図である。
【図9】図6に示すALUの構成の一例を示す図である。
【図10】この発明の実施の形態2に従う基本演算ブロックの構成を概略的に示す図である。
【図11】この発明の実施の形態2において用いられるマイクロプログラムの一例を示す図である。
【図12】図11に示すマイクロプログラムの処理動作を示すフロー図である。
【図13】この発明の実施の形態3に従う基本演算ブロックの構成を概略的に示す図である。
【図14】図13に示すメモリセルマットに含まれるメモリセルの構成の一例を示す図である。
【図15】図13に示すALUの構成の一例を概略的に示す図である。
【図16】図13に示す主演算回路のデータ転送動作を模式的に示す図である。
【図17】この発明の実施の形態3における半導体信号処理装置のマイクロプログラムの一例を示す図である。
【図18】この発明の実施の形態4における画像データ処理の一例を示す図である。
【図19】この発明の実施の形態4に従う半導体信号処理装置の要部の構成を概略的に示す図である。
【図20】この発明の実施の形態4に従う半導体信号処理装置のデータ処理シーケンスを示すフロー図である。
【図21】図20に示す処理シーケンスにおけるデータの流れを模式的に示す図である。
【図22】この発明の実施の形態4におけるメモリセルマットにおける格納データおよび転送データの領域を模式的に示す図である。
【図23】この発明の実施の形態5に従う演算回路の構成を概略的に示す図である。
【図24】図23に示す主演算回路の具体的構成を示す図である。
【図25】この発明の実施の形態6に従う半導体信号処理装置の構成を概略的に示す図である。
【図26】図25に示すメモリセルマットのデータ格納領域の割付けを概略的に示す図である。
【図27】この発明の実施の形態7に従う半導体信号処理装置の構成を概略的に示す図である。
【図28】図27に示す転置回路の構成を概略的に示す図である。
【図29】図28に示す転置回路のデータ転送動作を示すフロー図である。
【図30】この発明の実施の形態7における転置回路のデータ転送時のデータの流れを模式的に示す図である。
【図31】図28に示す転置メモリに含まれるメモリセルの構成の一例を示す図である。
【発明を実施するための形態】
【0024】
[実施の形態1]
図1は、この発明に従う半導体信号処理装置が用いられる処理システムの全体構成を概略的に示す図である。図1において、信号処理システム1は、各種処理を実行する演算機能を実現するシステムLSI2と、システムLSI2と外部システムバス3を介して接続される外部メモリとを含む。この外部メモリは、大容量メモリ4と、高速メモリ5と、立上げ時の命令などの固定情報を格納する読出専用メモリ(リード・オンリー・メモリ:ROM)6を含む。大容量メモリ4は、たとえばクロック同期型ダイナミック・ランダム・アクセス・メモリ(SDRAM)で構成され、高速メモリ5は、たとえばスタティック・ランダム・アクセス・メモリ(SRAM)で構成される。
【0025】
システムLSI2は、内部システムバス7に並列に結合される基本演算ブロックFB1−FBhと、内部システムバス7に結合され、これらの基本演算ブロックFB1−FBhの処理動作を制御するホストCPU8と、このシステム1の外部からの入力信号INを内部処理用データに変換する入力ポート9と、内部システムバス7から与えられた出力データを受けて、システム外部への出力信号OUTを生成する出力ポート10を含む。これらの入力ポート9および出力ポート10は、たとえばライブラリ化されたIP(インテレクチャル プロパティ:Intellectual Property)ブロックで構成され、データ/信号の入出力に必要な機能を実現する。
【0026】
システムLSI2は、さらに、基本演算ブロックFP1−FBhからの割込信号を受付け、ホストCPU8に対して割込を通知する割込コントローラ11と、ホストCPU8の各処理に必要な制御動作を行なうCPU周辺12と、基本演算ブロックFB1−FBhからの転送要求に従って外部メモリに対するデータ転送を行なうDMA(ダイレクト・メモリ・アクセス)コントローラ13と、CPU8またはDMAコントローラ13からの指示に従って外部システムバス3に接続されるメモリ4−6に対するアクセス制御を行なう外部バスコントローラ14と、ホストCPU8のデータ処理を補助する専用ロジック15を含む。
【0027】
CPU周辺12は、タイマおよびシリアルIO(入出力)等のホストCPU8におけるプログラムおよびデバッグの用途に必要な機能を備える。専用ロジック15は、たとえばIPブロックで構成され、既存の機能ブロックを用いて必要な処理機能を実現する。これらの機能ブロック9−15は、内部システムバス7に接続される。また、DMAコントローラ13には、基本演算ブロックFB1−FBhからのDMA要求信号が与えられる。
【0028】
基本演算ブロックFB1−FBhは、同一構成を有するため、図1においては、基本演算ブロックFB1の構成を代表的に示す。
【0029】
基本演算ブロックFB1は、実際のデータの演算処理を行なう主演算回路20と、この主演算回路20における演算処理を指定するマイクロ命令を格納するマイクロ命令メモリ21と、マイクロ命令メモリ21からのマイクロ命令に従って主演算回路20の演算処理を制御するコントローラ22と、コントローラ22の中間処理データまたは作業用データを格納するワークデータメモリ23と、この基本演算ブロックFB1内部と内部システムバス7との間でのデータ/信号の転送を行なうシステムバスインターフェイス(I/F)24を含む。
【0030】
主演算回路20は、複数のメモリセルが行列状に配列されかつ複数のエントリに分割されるメモリセルマット30と、メモリセルマット30の各エントリに対応して配置されて指定された演算処理を行なう演算器(ALU)31と、演算器31間のデータ転送経路を設定するALU間相互接続用スイッチ回路32を含む。
【0031】
基本的にメモリセルマット30の各行が1エントリを構成し、1エントリに多ビットデータの各ビットが格納される。演算器(以下、適宜、ALUと称す)31は、したがって、対応のエントリからのデータをビットシリアルに受けて演算処理を行ない、処理結果をメモリセルマット30の指定されたエントリ(たとえば対応のエントリ)に格納する。
【0032】
ALU間相互接続用スイッチ回路32により、ALU31の接続経路が切換えられ、異なったビット線(異なるエントリ)のデータの演算も可能となる。各エントリに異なるデータを格納し、ALU31により並列演算処理を行なうことにより、高速にデータ処理を行なうことができる。
【0033】
コントローラ22は、マイクロ命令メモリ21に格納されるマイクロ命令に従ってマイクロプログラム方式に従った動作を行なう。マイクロプログラム動作に必要なワークデータが、ワークデータメモリ23に格納される。
【0034】
システムバスI/F24により、ホストCPU8またはDMAコントローラ13が、メモリセルマット30、コントローラ22内の制御レジスタ、マイクロ命令メモリ21およびワークデータメモリ23へアクセスすることが可能になる。
【0035】
基本演算ブロックFB1−FBhには、異なるアドレス領域(CPUアドレス領域)が割付けられる。同様、基本演算ブロックFB1−FBh内のメモリセルマット30、コントローラ22内の制御レジスタ、マイクロ命令メモリ21およびワークデータメモリ23についても、それぞれ異なるアドレス(CPUアドレス)が割付けられる。したがって、この基本演算ブロックFB1−FBhそれぞれにおいて、異なる内容のマイクロ命令を格納することにより、異なる演算処理を並行して実行することができる。また、基本演算ブロックFB1−FBhにおいて、異なるアドレス領域のデータについて同一の演算処理が行なわれるように、マイクロ命令メモリ21に同一の演算内容のマイクロ命令が格納されてもよい。
【0036】
各割付けられたアドレスに従って、ホストCPU8およびDMAコントローラ13が、アクセス対象の基本演算ブロックFB(FB1−FBh)を識別し、アクセス対象の基本演算ブロックに対するアクセスを実行する。
【0037】
図2は、図1に示す基本演算ブロックFB1−FBhそれぞれに含まれる主演算回路20の要部の構成を概略的に示す図である。図2において、メモリセルマット30においては、メモリセルMCが行列状に配列される。メモリセルMCが、m個のエントリERYに分割される。エントリERYは、nビットのビット幅を有する。基本的に、1つのエントリERYは、1列に整列するメモリセルMCで構成される。したがって、この場合、エントリERYの数は、メモリセルマット30の行すなわちビット線の数で決定される。
【0038】
演算処理ユニット群35においては、エントリERYそれぞれに対してALU31が設けられる。このALU31は、加算、論理積、一致検出(EXOR)、および反転(NOT)などの演算を実行することができる。
【0039】
エントリERYと対応のALU31との間でデータのロード(メモリセルマット30から演算処理ユニット群35へのデータの転送)およびストア(演算処理ユニット群35からメモリセルマット30へのデータの転送格納)を行なって演算処理を実行する。エントリERYには、多ビットデータの各ビットが格納され、ALU31は、ビットシリアルな態様(多ビットデータワードをビット単位で処理する態様)で演算処理を実行する。演算処理ユニット群35においては、データワードについてビットシリアル態様でかつ複数のエントリERYが並行して処理されるエントリパラレルな態様でデータの演算処理が実行される。
【0040】
エントリERYのビット幅を変更することにより、データワードの語構成が異なる場合にも演算サイクル数(アドレスポインタの範囲)を変更するだけで、データ処理を実行することができる。また、エントリ数mを多くすることにより、大量のデータを一括して演算処理することができる。
【0041】
図3は、図2に示すメモリセルMCの構成の一例を示す図である。図3において、メモリセルMCは、電源ノードとストレージノードSN1の間に接続されかつそのゲートがストレージノードSN2に接続されるPチャネルMOSトランジスタ(絶縁ゲート型電界効果トランジスタ)PQ1と、電源ノードとストレジノードSN2の間に接続されかつそのゲートがストレージノードSN1に接続されるPチャネルMOSトランジスタPQ2と、ストレージノードSN1と接地ノードの間に接続されかつそのゲートがストレージノードSN2に接続されるNチャネルMOSトランジスタNQ1と、ストレージノードSN2と接地ノードの間に接続されかつそのゲートがストレージノードSN1に接続されるNチャネルMOSトランジスタNQ2と、ワード線WL上の電位に応答してストレージノードSN1およびSN2を、それぞれ、ビット線BLおよび/BLに接続するNチャネルMOSトランジスタNQ3およびNQ4とを含む。
【0042】
この図3に示すメモリセルMCは、フルCMOS(相補MOS)構成のSRAMセルであり、高速でデータの書込/読出を行なうことができる。このSRAMセルを利用することにより、メモリセルマット30において、記憶データのリフレッシュを行なう必要がなく、動作制御が容易となり、演算処理を高速で実行することができる。
【0043】
主演算回路20において演算を行なう場合には、まず、各エントリERYに演算対象のデータの格納を行なう。次いで、格納されたデータのある桁のビットを、すべてのエントリERYについて並列に読出して対応のALU31へ転送(ロード)する。2項演算の場合には、各エントリERYにおいて別のデータワードのビットに対しても同様の転送動作を行なった後、各ALU31において2入力演算を行なう。この演算処理結果は、ALU31から対応のエントリERY内の所定領域に再書込(ストア)される。
【0044】
図4は、図2に示す主演算回路20における演算操作を模式的に示す図である。図4においては、2ビット幅のデータワードaおよびbの加算を行なって、データワードcを生成する。エントリERYには、演算対象の組をなすデータワードaおよびbがともに格納される。
【0045】
図4においては、第1行目のエントリERYに対するALU31においては、10B+01Bの加算が行なわれ、2行目のエントリERYに対するALU31においては、00B+11Bの演算が行なわれる。ここで、末尾の“B”は、2進数を示す。3行目のエントリERYに対するALU31においては、11B+10Bの演算が行なわれる。同様に、各エントリERYに格納されたデータワードaおよびbの加算が実行される。
【0046】
演算は、下位側ビットから順にビットシリアル態様で行なわれる。まず、エントリERYにおいてデータワードaの下位ビットa[0]を対応のALU31へ転送する。次いで、データワードbの下位ビットb[0]を対応のALU31へ転送する。ALU31において、これらの与えられた2ビットデータを用いて加算演算を行なう。この加算演算結果a[0]+b[0]は、データワードcの下位ビットc[0]の位置に書込まれる(ストアされる)。すなわち、1行目のエントリERYにおいては、“1”がビットc[0]の位置に書込まれる。
【0047】
この加算処理を、次いで上位ビットa[1]およびb[1]に対しても行ない、その演算結果a[1]+b[1]が、ビットc[1]の位置に書込まれる。
【0048】
加算演算においては、桁上がりが生じる可能性があり、この桁上がり(キャリー)の値がビットc[2]の位置に書込まれる。これにより、データワードaおよびbの加算が、すべてのエントリERYにおいて完了し、その結果がデータcとして各エントリERYにおいて格納される。エントリとしてたとえば1024エントリを準備した場合、1024組のデータの加算を並列に実行することができる。
【0049】
図5は、この加算演算処理時の内部タイミングを模式的に示す図である。以下、図5を参照して、加算演算の内部タイミングについて説明する。この加算演算処理においては、ALU31に含まれる2ビット加算器(ADD)が利用される。
【0050】
図5において、“Read”は、メモリセルマット30から演算対象のデータビットを読出して対応のALU31に転送する動作(ロード)または動作命令を示し、“Write”は、ALU31の演算結果データを対応のエントリERYの対応のビット位置に書込む動作(ストア)または動作命令を示す。
【0051】
マシンサイクルkにおいて、データビットa[i]がメモリセルマット30から読出され、次のマシンサイクル(k+2)で、次の演算対象のデータビットb[i]が読出され(Read)、ALU31の加算器(ADD)にそれぞれ与えられる。
【0052】
マシンサイクル(k+2)において、ALU31の加算器(ADD)において与えられたデータビットa[i]およびb[i]の加算処理が行なわれ、マシンサイクル(k+3)において、加算結果c[i]が対応のエントリの対応のビット位置に書込まれる。
【0053】
次のマシンサイクル(k+4)および(k+5)において、次の演算対象のデータビットa[i+1]およびb[i+1]が読出され、ALU31の加算器(ADD)へ転送され、マシンサイクル(k+6)においてALU31により加算処理が行なわれ、マシンサイクル(k+7)において加算結果がビット位置c[i+1]へ格納される。
【0054】
メモリセルマット30とALU31の間のデータビットの転送に、それぞれ1マシンサイクルが必要とされ、ALU31において1マシンサイクルの演算サイクルが必要とされる。したがって、1ビットデータの加算および加算結果の格納を行なうために、4マシンサイクルが必要となる。メモリセルマット30を複数のエントリERYに分割し、各エントリに演算対象データの組をそれぞれ格納し、対応のALU31においてビットシリアル態様で演算処理を行なう方式の特徴は、1つ1つのデータ演算には、比較的多くのマシンサイクルが必要とされるものの、処理すべきデータ量が非常に多い場合には、演算の並列度を高くすることにより高速データ処理を実現することができるということである。
【0055】
たとえば、演算対象のデータワードのビット幅がNの場合、各エントリの演算には、4・Nマシンサイクルが必要となる。演算対象のデータワードのビット幅は、8ビットから64ビット程度である。エントリ数mを、たとえば1024と大きくすることにより、並列演算処理時に、たとえば8ビットデータの場合、32マシンサイクルで1024個の演算結果を得ることができ、1024組のデータをシーケンシャルに処理する場合に比べて大幅に処理時間を短縮することができる。
【0056】
また、ビットシリアル態様で演算処理を行なっており、処理されるデータのビット幅は固定されないため、種々のデータ構成を有する種々のアプリケーションに容易に適応することができる。
【0057】
図6は、基本演算ブロックFBiにおけるコントローラ22の構成を示す図である。この基本演算ブロックFBiにおいて、主演算回路20においては、先の図1に示す構成と同様、メモリセルマット30、演算処理ユニット群35およびALU間相互接続用スイッチ回路32が設けられる。この図6においては、メモリセルマット30と演算処理ユニット群35の間に設けられる書込/読出回路38を併せて示す。この書込/読出回路38は、エントリERYそれぞれに対応して設けられるセンスアンプおよびライトドライバSAWを含む。このメモリセルマット30において、列方向に延在してエントリERYに共通にワード線が配設され、各エントリそれぞれにおいてビット線が対をなして配置される。図6においては、メモリセルマット30の列(ワード線)および行(ビット線)を選択するための回路は示していない。
【0058】
コントローラ22は、マイクロ命令メモリ21からフェッチしたデータをデコードし、各種制御信号を生成する命令デコーダ40と、マイクロ命令メモリ21へのアドレスを生成するプログラムカウンタ41と、このプログラムカウンタ41のカウント値を更新するPC(プログラムカウント)計算ユニット42と、複数の汎用レジスタRxを含む汎用レジスタ群43と、汎用レジスタ群43の汎用レジスタの内容に対して条件判断などの演算を実行する演算回路(ALU)44と、この基本演算ブロックFBiの各種制御情報を格納する制御レジスタ群45を含む。制御レジスタ群45は、演算器(ALU)44の実行結果を格納する制御レジスタ(ステータスレジスタ)45sと、割込コントローラ44およびDMAコントローラ13と通信を行なう出力ポートレジスタ45oおよび入力ポートレジスタ45iを含む。
【0059】
コントローラ22は、さらに、メモリセルマット30に対するアドレスを計算するアドレス計算ユニット46と、このアドレス計算ユニット46により計算されたアドレスを格納して主演算回路20へ与えるアドレスレジスタ群47を含む。このアドレスレジスタ群47は、エントリ内の各データに対するアドレスを生成するアドレスレジスタAxを含む。
【0060】
マイクロ命令メモリ21には、必要とされるシーケンス処理がコード化されたマイクロプログラムが格納される。命令デコーダ40が、このマイクロ命令メモリ21からフェッチしたマイクロ命令をデコードし、コントローラ22内の各モジュールに対する制御信号生成し、また主演算回路20に対する制御信号を生成する。いわゆるファームウェアにっより、高速で必要とされる処理を実行することができる。図6において、命令デコーダ40から、書込/読出回路38に含まれるセンスアンプ/ライトドライバSAWに対する読出/書込制御信号(RW制御)と、演算処理ユニット群35に含まれるALU31に対する実行すべき演算内容を指示するALU制御信号と、ALU間相互接続用スイッチ回路32における接続を制御するスイッチ制御信号を代表的に示す。
【0061】
このコントローラ22には、また汎用レジスタ群43とワークデータメモリ23の間でデータのロード/ストアを行なうためのメモリインターフェイス(I/F)48が設けられる。
【0062】
図1に示すホストCPU(8)は、制御レジスタ群45に含まれるステータスレジスタ45sの格納データにより、コントローラ22の実行状態を監視し、この基本演算ブロックFBiの動作状況を確認する。コントローラ22は、システムバスインターフェイス24を介して、ホストCPU(8)から制御権を手渡されて、この基本演算ブロックFBi内の処理動作を制御する。
【0063】
図7は、図4に示す加算演算処理に対応するマイクロ命令で記述されるマイクロプログラムの一例を示す図である。図7において、マイクロプログラムの行番号の次に、実行されるマイクロ命令を示す。プログラム命令列における“//”は、次の命令列に対する処理内容を規定する見出しである。各命令行に対応して、右側の“//”の次に、対応の命令の処理内容を示すコメントが付される。マイクロ命令として実行されるのは、図7において、行番号の次に示される命令である。
【0064】
“LD Ax,♯imm”命令は、アドレスレジスタ群47に含まれるアドレスレジスタAxに定数値♯immを設定する命令である。
【0065】
“LD Rx,♯imm”命令は、汎用レジスタ群43に含まれる汎用レジスタRxに定数値♯immを設定する命令である。
【0066】
“LD Outport,♯imm”命令は、制御レジスタ群45に含まれる出力ポートレジスタ45oに定数値♯immを設定する命令である。
【0067】
“Set Idle”は、制御レジスタ群45のステータスレジスタ(制御レジスタ)45sに空き状態を示すアイドルビットを設定する命令である。
【0068】
“Inc Ax”命令は、アドレスレジスタAxに対する1加算命令である。
“BNE Rx,Label”命令は、汎用レジスタRxのレジスタ値が0以外の場合、“Label”が示す命令に分岐することを示す分岐命令である。
【0069】
“Add Rx,♯imm”命令は、汎用レジスタRxの格納値に定数値♯immを加する命令である。この加算は、符号付きで実施され、定数値♯immとして負の数を指定することができる。
【0070】
“MemLd Ax”命令は、主演算回路20に対する制御命令であり、アドレスレジスタAxに格納されたアドレスが示すメモリセルマット30のアドレスから演算処理ユニット群35にデータをロードする命令である。このロードされたデータは、ALU31内に含まれるフリップフロップ(またはレジスタ)により保持される。
【0071】
“MemLdAdd Ax”命令は、アドレスレジスタAxの格納値で示されるメモリセルマット30のアドレスからALU31にデータをロードし、このALU31内に保持された値とロードされたデータとの加算を行なう命令である。加算結果、すなわち和(Sum)とキャリー(Carry)情報は、ALU31内のフリップフロップ(レジスタ)に保持される。
【0072】
“MemStSum Ax”命令は、ALU31内の和(Sum)情報を保持したフリップフロップ(レジスタ回路)の内容を、メモリセルマット30内のアドレスレジスタAxが示すアドレス位置に書込む命令である。
【0073】
“MemStCarry Ax”命令は、ALU31内のキャリー(Carry)情報を保持したフリップフロップ(レジスタ回路)の内容を、メモリセルマット30内のアドレスレジスタAxの格納値が示すアドレス位置に書込む命令である。
【0074】
各命令の実行には、1命令サイクルが必要である。ただし、命令行において“||”を挟んで1行に併記される命令は、同一命令サイクルにおいて並列に実行される命令であることを示す。以下、図7に示すプログラムの処理内容を説明する。
【0075】
行番号0においては、単に初期設定のコメントが付されているだけであり、処理は実行されない。行番号1において、出力ポートレジスタ45oに、加算演算処理を実行する開始ビット♯Startがロードされる。これにより、出力ポートレジスタ45oの初期化が実行される。
【0076】
行番号2から行番号4において、アドレスレジスタ群47のアドレスレジスタA0、A1、およびA2に、それぞれ、データaおよびbおよび加算結果cのアドレス位置を示すポインタ♯Apos、♯Bpos、および♯Cposがそれぞれ設定される。
【0077】
行番号5において、汎用レジスタ群43の汎用レジスタR0に、定数値2が格納され、ループ処理を行なう際のループ回数が設定される。このループ処理は、ビットシリアルで処理を行なうため、各加算演算が繰返されることを示す。
【0078】
行番号8において、メモリセルマットにおいてアドレスレジスタA0の位置のビットが選択されて、ALU31にロードされる。このロード動作と同一サイクルにおいて、アドレスレジスタA0のポインタが1増分される。
【0079】
行番号9において、メモリセルマットにおいてアドレスレジスタA1のポインタが示すビットb[i]が選択されてALU31にロードされ、ビットa[i]およびb[i]の加算が実行される。このサイクルにおいて、また、アドレスレジスタA1のポインタ値が1増分される。
【0080】
行番号10において、加算結果Sumが、メモリセルマットのアドレスポインタA2が示すビット位置c[i]へ格納される。このときまた、アドレスレジスタA2のポインタ値が1増分される。
【0081】
行番号11において、汎用レジスタR0の格納値に(−1)が加算され、すなわち、汎用レジスタR0の格納値が1減分され、加算処理が1回行われたことが示される。
【0082】
行番号12において、汎用レジスタR0の格納値が0と異なる場合には、再び行番号7のループラベルAddLoopへ戻る。汎用レジスタR0の格納値が0の場合には、2ビットの加算処理が完了しているため、次の行番号13の命令へ進む。行番号13は、単に以降の処理内容を示すコメント文であり、処理は実行されない。
【0083】
行番号14において、ALU31のキャリーを格納するフリップフロップ(レジスタ)の保持するビットが、メモリセルマットのアドレスレジスタA2のポインタ値c[2]が示す位置へ格納される。
【0084】
行番号15において、再び、以下の処理内容を示すコメント文が付され、待機状態へ遷移する命令が行なわれることが示される。
【0085】
行番号16において、処理が完了したため、出力ポートレジスタ45oに、処理が完了したことを示す整数値Finishを設定し、また行番号17において、ステータスレジスタ45sにアイドルビットを設定する。この行番号16および17の処理により、基本演算ブロックFBiは、外部のホストCPU8等に対して、加算演算処理が終了したことを通知する。
【0086】
図8は、図7に示す行番号8から10におけるアドレス値の更新を示すタイミング図である。まず、アドレス計算ユニット46に対し、初期設定命令シーケンスにより、初期アドレスPOS0が設定される。加算処理ループ実行時において、このアドレス計算ユニット46に格納されたアドレスポインタPOS0がアドレスレジスタAxに設定されて格納され、データの転送が実行される(ロード/ストア)。このとき、またアドレス計算ユニット46において、アドレスポインタが更新され次のアドレスPOS1を指定する。次のサイクルにおいて、アドレス計算ユニット46が更新されたポインタPOS1が、アドレスレジスタAxに転送される。以降、必要な演算処理が完了するまでこの加算処理ループAddLoopのループに従って、アドレス計算ユニット46およびアドレスレジスタAxの格納ポインタが、データ転送と並行して更新される。
【0087】
アドレスレジスタ群4を設け、各演算対象データに対するアドレスポインタApos、Bpos、およびCposをそれぞれ発生しかつ対応のアドレスレジスタに格納することにより、アドレス更新サイクルとデータの転送サイクルを同一サイクルに設定することができ、命令実行に必要なサイクル数を低減することができる。
【0088】
図9は、ALU31の構成の一例を示す図である。図9において、ALU31は、指定された演算処理を行なう算術演算論理回路50と、対応のエントリから読出されたデータを一時的に格納するAフリップフロップ(レジスタ回路)52と、対応のエントリから読出されたデータまたは算術演算論理回路50の演算処理結果データまたはライトドライバへ転送するデータを一時的に格納するXフリップフロップ(レジスタ回路)54と、加減算処理時のキャリーまたはボローを格納するCフリップフロップ(レジスタ回路)56と、算術演算論理回路50の演算処理の禁止を指定するマスクデータを格納するMフリップフロップ(レジスタ回路)58を含む。
【0089】
図6に示すセンスアンプおよびライトドライバSAWは、ビット線対BLPに対応して設けられるライトドライバ60およびセンスアンプ62を含む。ライトドライバ60は、Xフリップフロップ54に格納されたデータをバッファ処理して対応のエントリのメモリセルへ対応のビット線対BLPを介して書込む。センスアンプ62は、対応のエントリのメモリセルから読出されたデータを増幅してAフリップフロップ52またはXフリップフロップ54へその増幅データを内部データ転送線63を介して転送する。Xフリップフロップ54は、内部データ転送線64を介して算術演算論理回路50およびライトドライバ60に結合される。
【0090】
ALU間接続用スイッチ回路32は、ALU31に対して設けられるALU間接続回路65を含む。このALU間接続回路65は、たとえばスイッチマトリックスで構成される。
【0091】
算術演算論理回路50は、加算(ADD)、論理積(AND)、論理和(OR)、排他的論理和(EXOR:一致検出)、反転(NOT)等の演算を実行することができ、その演算内容が、マイクロ命令に基づいてコントローラ22からの制御信号(図6のALU制御)により設定される。Mフリップフロップ58に格納されるマスクデータは、“0”のときに、ALU31の演算処理動作を停止させ、“1”のときに、このALU31の演算処理動作をイネーブルする。この演算マスク機能を利用することにより、仮に全エントリが利用されない場合においても有効エントリに対してのみ演算を実行することができ、正確な処理を行なうことができるとともに、不必要な演算の実行を停止させることにより、消費電流を低減することができる。
【0092】
この算術演算論理回路50において、先の2項加算を行なう場合、全加算器を用いて加算を行ない、最終的にCフリップフロップ56に格納されたキャリーを図7に示す行番号14のマイクロ命令に従ってメモリセルマットを対応のビット位置c[2]へ書込む。加算結果SumがXフリップフロップ54に格納される。
【0093】
以上のように、この発明の実施の形態1に従えば、基本演算ブロックそれぞれにおいてマイクロ命令メモリを設け、このマイクロ命令メモリに格納されたマイクロ命令に従ってデータの転送(ロード/ストア)および演算処理を実行しており、マイクロ命令の変更のみで演算内容を自由に切り換えることができる。
【0094】
また、アドレスレジスタおよびアドレス計算ユニットを設けることにより、データ転送動作と並行してアドレス更新を行なうことができ、演算に必要な命令サイクル数を低減することができ、高速処理を実現することができる。
【0095】
[実施の形態2]
図10は、この発明の実施の形態2に従う基本演算ブロックFBiの構成を概略的に示す図である。この図10に示す基本演算ブロックFBiにおいては、コントローラ22の以下の構成が、先の図6に示す実施の形態1に従うコントローラ22の構成と異なる。すなわち、コントローラ22において、ループ命令実行時ループの開始アドレスを格納する開始アドレスレジスタ70と、ループの終了アドレスを格納する終了アドレスレジスタ72が設けられる。これらの開始アドレスレジスタ70および終了アドレスレジスタ72の格納値は、PC値計算ユニット42へ与えられる。この図10に示すコントローラ22の他の構成は、図6に示すコントローラ22の構成と同じであり、対応する部分には同一参照番号を付し、その詳細説明は省略する。
【0096】
本実施の形態2においては、先の図7に示すマイクロプログラムの行番号11および12に示されるループカウンタの減算処理および分岐処理を、1つの命令で行なうループ命令LOOPを追加する。
【0097】
命令“LOOP Rx,Label”は、次の命令からラベルLabelで示される命令の間を、汎用レジスタRxの格納値で示された回数繰返す命令である。このループ命令LOOPが実行されると、ループ命令の開始アドレスおよび終了アドレスが開始アドレスレジスタ70および終了アドレスレジスタ72にそれぞれ格納される。
【0098】
PC値計算ユニット42においては、プログラムカウンタ41のカウント値と終了アドレスレジスタ72に格納されるアドレス値とを比較する。このプログラムカウンタ41のカウント値が終了アドレスと一致すると、ループカウンタとして指定された汎用レジスタRxの格納値を1減分する。減算結果が0でない場合には、次のプログラムカウント値として開始アドレスレジスタ70に格納された開始アドレスを設定する。この汎用レジスタRxの格納値が0の場合には、通常の処理と同様、プログラムカウンタ41のカウント値を1増分して次のアドレスの命令を実行する。
【0099】
図11は、この発明の実施の形態2に従うループ命令LOOPを用いるマイクロプログラムの一例を示す図である。この図11に示すマイクロプログラムは、図7に示すマイクロプログラムと同じ処理を実行する。
【0100】
図11に示すように、行番号5の命令により、汎用レジスタR0に定数2が格納され、ループ回数が指定される。行番号7においてループ命令“LOOP R0,AddLoopLast”が実行される。この場合、ラベル“AddLoopLast:”で示される命令、すなわち第11行の命令MemStSum迄の命令列を、汎用レジスタR0に格納された値(2)が示す回数繰返すことが指定される。この行番号7から行番号10の命令列が、図7に示すマイクロプログラムの命令列と異なる。
【0101】
図12は、ループ命令LOOPの処理内容を示す図である。以下、図12を参照して、このループ命令の操作内容について説明する。以下の説明においては、図11に示すプログラムの行番号を参照する。
【0102】
行番号0から5の命令群においては、先の図7に示す処理と同様の処理が行なわれ、出力ポートレジスタ45oの初期設定およびアドレスレジスタA0−A2および汎用レジスタR0の初期設定が行なわれる。汎用レジスタRx(R0)に、ループ回数2が設定される(ステップS1)。
【0103】
次いで、行番号7において、ループ命令が実行されると(ステップS2)、このループの開始アドレス(行番号8の命令MemLdのアドレス)およびループの終了アドレス(行番号11の命令MemStSumのアドレス)が開始アドレスレジスタ70および終了アドレスレジスタ72にそれぞれ格納される(ステップS3)。このループ命令に到達するまでは、判定ブロックS2においてループ命令が実行されるのを待つ。
【0104】
ループ開始および終了アドレスが格納された後、プログラムカウンタのポインタPCが増分されて(ステップS4)、次の行番号8の命令が実行される(ステップS6)。これにより、アドレスレジスタA0に格納されたアドレスに対応するメモリセルデータがALUにロードされ、またアドレスレジスタA0のポインタが1増分される。
【0105】
このステップS6の命令実行と並行して分岐判定がステップS5以降において実行される。いま、PC値計算ユニット42のカウンタ値は、終了アドレスに等しくないため(ステップS5)、プログラムカウンタ41のカウント値PCが1増分され(ステップS4)、次の行番号9の命令MemLdAddが実行される(ステップS6)。この行番号9の命令アドレス(プログラムカウンタ41のカウント値)は、ループ終了アドレスに等しくないため、プログラムカウンタ41のカウント値が1増分されて、次の行番号10のラベルが指定する行番号11の命令が実行される(ステップS4およびS6)。
【0106】
この行番号11の命令のアドレス(プログラムカウンタ41のカウント値)が、終了アドレスレジスタ72に格納される終了アドレスと等しいため、ステップS5における判断結果に従って、汎用レジスタR0に格納されたレジスタ値は1減分される(ステップS7)。
【0107】
次いで、このレジスタ格納値Rxが0に等しいか否かの判断が行なわれる(ステップS8)、まだ1回目であるため、PC値計算ユニット42は、プログラムカウンタ41のカウント値PCを開始アドレスレジスタ70に格納された開始アドレスに設定し(ステップS9)、再びステップS6へ戻る。以降、ステップS4からステップS7の動作が繰返される。
【0108】
ステップS8において、行番号11の命令完了後、汎用レジスタRx(R0)のレジスタ値が0となると、ループ処理が完了したと判定され、PC値計算ユニット42はプログラムカウンタ11のカウント値を1増分する(ステップS10)。これにより、ループ処理が終了し、次の行番号13の命令が行なわれ、キャリーがビット位置c[2]へ書込まれる。
【0109】
したがって、このループ命令LOOPにおいてループ命令自体は、1回だけ実行され、すなわち1回だけループ状の分岐が行なわれ、第8行から第11行までの3命令がループ処理として実行される。
【0110】
なお、この終了アドレスの格納としては、行番号10のラベルAddLoopLastに到達したときに、次の命令のアドレスが、終了アドレスレジスタ72に格納されてもよい。ラベル到達時に終了アドレスを格納しても、この行番号10のラベルにより比較ステップS5が実行され、その実行結果に従って行番号11または行番号7への分岐が判定されるため、正確な分岐処理を行なうことができる。
【0111】
このループ命令LOOPを追加することにより、図7に示すマイクロプログラムにおける行番号11および12のように、ループ分岐判定のために主演算回路が動作待機状態となるサイクルをなくすことができ(行番号9の命令実行と並行して、ループ分岐判定処理が行なわれる)、最小サイクル数でループ処理を行なうことができる(図12に示すフロー図においては、ステップS5からステップS8が、命令実行ステップS6と並行して実行される)。
【0112】
以上のように、この発明の実施の形態2に従えば、ループ演算命令を準備しているため、主演算回路が非動作状態となる期間を低減することができ、高速処理が実現される。
【0113】
[実施の形態3]
図13は、この発明の実施の形態3に従う基本演算ブロックFBiの構成を概略的に示す図である。図13において、主演算回路20において、2つのメモリセルマット30Aおよび30Bが設けられる。これらのメモリセルマット30Aおよび30Bそれぞれに対して、読出/書込回路38Aおよび38Bが設けられる。メモリセルマット30Aおよび30Bは、同一構成を有し、それぞれ複数のエントリERYに分割される。読出/書込回路38Aおよび38Bにおいて、エントリERYそれぞれに対応して、センスアンプおよびライトドライバSAWが設けられる。
【0114】
これらのメモリセルマット30Aおよび30Bは、互いに分離されたビット線対を介して演算処理ユニット35に含まれる対応のALU31に結合される。したがってこれらのメモリセルマット30Aおよび30Bは、個々にアクセスが可能である。主演算回路20においては、また、先の実施の形態1および2と同様、演算処理ユニット35のALU31間の接続経路を切換えるためのALU間相互接続用スイッチ回路32が設けられる。
【0115】
メモリセルマット30Aおよび30Bの動作を制御するために、アドレス計算ユニット46Aおよび46Bとアドレスレジスタ群47Aおよび47Bが設けられる。アドレス計算ユニット46Aおよびアドレスレジスタ群47Aにより、メモリセルマット30Aに対するアドレスが生成され、アドレス計算ユニット46Bおよびアドレスレジスタ群47Bにより、メモリセルマット30Bに対するアドレスが生成される。メモリセルマット30Aおよび30Bに含まれるメモリセルは、後に説明するように、デュアルポートSRAMメモリセルであり、書込ポートと読出ポートとを有し、これらのアドレスレジスタ群47Aおよび47Bは、各々、書込アドレスおよび読出アドレスを別々に生成する。
【0116】
命令デコーダ40は、演算処理ユニット35における演算処理内容を規定するALU制御信号を生成し、またALU間相互接続スイッチ回路32の接続経路を設定するスイッチ制御信号を生成する。この命令デコーダ40は、読出/書込回路38Aおよび38Bに対し、書込制御信号(ライト制御)を生成する。メモリセルは、SRAMセルであり、読出/書込回路においてセンスアンプは、アクセス時センスアンプおよびライトドライバSAWに含まれるセンスアンプが常時活性化され、ライトドライバの活性/非活性のみが、命令デコーダ40からのライト制御信号に従って行なわれる。
【0117】
この図13に示すコントローラ22の他の構成は、先の実施の形態2における図10に示すコントローラ22の構成と同じであり、対応する部分には同一参照番号を付し、その詳細説明は省略する。
【0118】
図14は、図13に示すメモリセルマット30Aおよび30Bに含まれるメモリセルMCの構成の一例を示す図である。図14において、メモリセルMCは、書込ポートと読出ポートとが別々に設けられたデュアルポートメモリセル構造を有する。このメモリセルMCに対しては、読出ワード線RWLおよび書込ワード線WWLが設けられ、また読出ビット線RBLおよび/RBLと書込ビット線WBLおよび/WBLとが設けられる。読出ポートは、読出ワード線RWLの信号電位に応答してストレージノードSN1およびSN2をそれぞれ読出ビット線RBLおよび/RBLに接続するNチャネルMOSトランジスタNQ5およびNQ6を含む。書込ポートは、書込ワード線WWL上の信号電位に応答してストレージノードSN1およびSN2をそれぞれ書込ビット線WBLおよび/WBLに接続するNチャネルMOSトランジスタNQ7およびNQ8を含む。
【0119】
メモリセルMCのデータ記憶部は、先の実施の形態1において示したものと同様、負荷PチャネルMOSトランジスタPQ1およびPQ2と、ドライブ用NチャネルMOSトランジスタNQ1およびNQ2を含む。
【0120】
この図14に示すデュアルポートメモリセル構造を利用することにより、ビットシリアル態様でデータの演算処理を行なう場合、書込および読出用すなわちストアおよびロードを同時に行なうことができる。演算結果が書込まれる領域は、演算対象のデータが格納される領域とは別に設けられており、選択メモリセルにおいて書込データおよび読出データの衝突の問題は生じず、通常のマルチポートメモリにおけるアドレスアービトレーションの問題は生じない。
【0121】
図15は、図13に示すメモリセルマット30Aおよび30BのセンスアンプおよびライトドライバSAWおよびALU31の構成を概略的に示す図である。図15において、読出/書込回路38Aにおいては、センスアンプおよびライトドライバSAWは、書込ビット線対WBLPAに結合されるライトドライバ60Aと、読出ビット線対RBLPAに結合されるセンスアンプ62Aを含む。読出/書込回路38BにおいてセンスアンプおよびライトドライバSAWは、書込ビット線対WBLPBに結合されるライトドライバ60Bと、読出ビット線対RBLPBに結合されるセンスアンプ62Bを含む。
【0122】
この図15に示すように、メモリセルマット30Aおよび30Bは、演算処理ユニット35(ALU31)を中心として、対称的に配置される。メモリセルマット30Aおよび30Bにおけるビット線対の配線レイアウトを容易とする。
【0123】
ALU31は、先の図9に示すALU31の構成と異なり、センスアンプ62Aの出力データを格納するAフリップフロップ52Aと、センスアンプ62Bの出力データを格納するAフリップフロップ52Bを含む。Xフリップフロップ54は、ライトドライバ60Aおよび60Bに共通に結合される。算術演算論理回路50に対しては、Aフリップフロップ52Aおよびおよび52Bの格納データが演算対象データとして与えられ、演算結果がXフリップフロップ54に格納される。
【0124】
このALU31においては、また、キャリーまたはボローを格納するCフリップフロップ56およびこのALU31の活性/非活性を示すマスクデータを格納するMフリップフロップ58が設けられる。
【0125】
この図15に示すALU31を利用する場合、センスアンプ62Aおよび62Bからのデータのラッチと並行して、Xフリップフロップ54から、ライトドライバ60Aまたは60Bを介して演算結果データを書込むことができる。
【0126】
図16は、この主演算回路20に含まれるメモリセルマット30Aおよび30Bの具体的配置を概略的に示す図である。図16に示す主演算回路20においては、演算処理ユニット35の両側に、メモリセルマット30Aおよび30Bが配置される。これらのメモリセルマット30Aおよび30Bが、同一構成を有し、それぞれにおいてデータビット幅がnビットのエントリERYがm個配置される。
【0127】
ALU31は、メモリセルマット30Aおよび30Bの対応のエントリのデータについて指定された演算処理を行なう。2項演算を、ALU31がそれぞれ行なう場合、メモリセルマット30Aおよび30Bに各項の演算対象データを格納し、その演算処理結果を、メモリセルマット30Aおよび30Bの一方に格納する。
【0128】
メモリセルMCが、デュアルポートメモリセルであり、このALU31に対する演算対象データの転送(ロード)と、演算結果データの転送(ストア)を並行して行なうことができる。
【0129】
図17は、この発明の実施の形態3に従う2項加算演算実行のためのマイクロ命令プログラムの一例を示す図である。以下、図17を参照して、この発明の実施の形態3に従う基本演算ブロックの処理について説明する。
【0130】
この図17に示すマイクロ命令プログラムにおいては、行番号0から5において、先の実施の形態2と同様の処理が実行される。すなわち、行番号2から行番号4の命令“LD Ax,♯imm”により、アドレスポインタA0−A2に、それぞれアクセスすべきデータの先頭アドレス(データの最下位ビットのアドレス)が設定される。一例として、アドレスレジスタA0には、メモリセルマット30Aに対するアドレスが設定され、アドレスレジスタA1には、メモリセルマット30Bに対するアドレスが設定される。演算後のデータcに対するアドレスを格納するアドレスレジスタA2に、メモリセルマット30Aまたは30Bの一方の先頭アドレスを設定する。
【0131】
行番号5の命令“LD R0,♯2”により、制御レジスタR0に、ループ回数(2回)が設定される。
【0132】
次いで、行番号7において、ループ命令が実行され、このループ命令の開始アドレス(行番号8の命令のアドレス)に対応するアドレスおよび行番号9の命令に対するアドレスがそれぞれ開始アドレスおよび終了アドレスとして格納される。この場合、マイクロ命令メモリの同一アドレスに、これらの行番号8および9のラベルおよび命令が格納される場合には、開始アドレスおよび終了アドレスは同一アドレスとなる。
【0133】
この行番号9の命令群においては、加算、加算結果の格納およびアドレスの増分が並行して実行される。すなわち、この行番号9の命令に従って、アドレスレジスタA0の格納するアドレスのメモリセルが読出されて対応のALUに転送され、また、これと並行して、アドレスレジスタA1に格納されるアドレスのメモリセルのデータが、対応のメモリセルマットから読出されて対応のALUに転送される。この転送動作時においては、メモリセルのリードワード線RWLが選択状態へ駆動され、読出ビット線RBLおよび/RBLを介して対応のALUのAフリップフロップ52Aおよび52Bにデータが転送される。
【0134】
この転送動作と加算が行なわれた後、その加算結果が同一サイクル内で、アドレスレジスタA2が示すアドレス位置に格納される。この書込時においては、書込ワード線WWLが選択状態へ駆動され、書込ビット線WBLおよび/WBLを介してデータの転送が行なわれる。このロード、加算およびストアが、1マシンサイクル内において前半サイクルでロードおよび加算が行なわれ後半サイクルで、この加算結果(Sum)の転送が行なわれればよい。また、これに代えて、加算結果の格納は、演算対象データのロードの次のサイクルにおいて行われても良い。この場合、次の演算対象データのロードとストアが並行して行われる。
【0135】
このロード、加算およびストア動作実行それぞれと並行して、アドレスレジスタA0、A1およびA2のポインタ値が1増分される。
【0136】
ループ命令LOOPを実行しており、先の図12に示すフローと同様の処理が行なわれ、行番号9の命令は、ループ命令の終了アドレスであり、レジスタR0の格納値が1減分されて、そのレジスタ格納値が0と等しいかの判定が行なわれる。1回目の演算処理時においては、制御レジスタR0の格納値は1であり、再び、行番号8に戻って、ラベルAddLoopLastで始まる命令が実行される。
【0137】
2回目のロード、加算およびストア演算が完了すると、再び、汎用レジスタR0の格納値が減分されて、レジスタ値が0でないかの判定が行なわれる。この汎用レジスタR0の格納値はこのときには0となり、ループ命令の実行シーケンスが完了し、プログラムカウンタのカウント値が1増分され、行番号11の命令が実行され、キャリーが、アドレスレジスタA2が指定するメモリセル位置へ格納される。
【0138】
以降、行番号12から14において、先の実施の形態1および2と同様の処理が行なわれ、制御レジスタへの制御ビットの格納により、加算演算終了の通知が外部のホストCPU等へ行なわれる。
【0139】
アドレスレジスタ群47Aおよび47Bをそれぞれメモリセルマット30Aおよび30Bに対して別々に設けることにより、この行番号2から行番号4に示されるロード命令を、1サイクルで並行して実行することができる(図17に示すプログラムシーケンスにおいては、これらが順次格納されるように示す)。したがって、このアドレスポインタの設定に要する動作サイクル数を低減することができ、処理サイクル数を低減することができる。これらのアドレスレジスタA0−A2にポインタを設定する場合、マイクロ命令として、行先アドレスにアドレスレジスタA0、A1およびA2をそれぞれ指定し、それぞれに格納されるポインタ値を、制御フィールドに格納し、演算すべき実行命令“LD”をソースオペランドフィールドに格納することにより、容易に実現される。
【0140】
このデュアルポートメモリセルを利用することにより、ループ命令においては、1サイクルで、ロード、加算、およびストアを実行することができ、先の実施の形態2におけるループ命令を利用する処理に比べて、演算処理サイクル数が低減され、処理性能として、3倍の性能のループ処理を実現することができる。
【0141】
なお、このデュアルポートメモリセルが利用される場合、メモリセルマット30Aまたは30Bのみが利用される場合には、読出アドレス用のレジスタと書込アドレス用のレジスタとそれぞれのアドレス計算ユニットを設けることにより、1つのメモリセルマットに対し、ロードとストアを並行して実行することができる。
【0142】
以上のように、この発明の実施の形態3に従えば、メモリセルマットを複数のマットに分割し、各分割マットもデュアルポートメモリセルを配置しており、また各メモリセルマットに対してアドレス計算ユニットおよびアドレスレジスタ群を設けており、ロード、演算およびストア操作を同一サイクルで実行することができ、高速処理を実現することができる。
【0143】
なお、データのロード、演算およびストアを同一サイクルで実行する場合、例えば、ALU内のフリップフロップをすべてスルー状態に設定して与えられたデータをすべてその出力部を介して転送する構成を利用する。演算処理をスタティックに実行することにより、転送データ(ロードデータ)に対してスタティックに演算処理を行なって演算処理後のデータをライトドライバを介して対象のメモリセルへ転送して書込むことができる。
【0144】
[実施の形態4]
図18は、この発明の実施の形態4において一例として実行される演算処理の内容を概略的に示す図である。この発明の実施の形態4においては、画像データPに対して、フィルタ処理を実行する。すなわち、図18に示すように、注目画素P(i,j)に対し上下左右の隣接画素P(i−1,j)、P(i+1,j)、P(i,j−1)、およびP(i,j+1)を用いて、この図18に示すフィルタマトリクスを適用して、フィルタ後の画素B(i,j)を生成する。すなわち、次式で示されるフィルタ処理を行なって、エッジ強調画像を求める。
【0145】
B(i,j)
=5・P(i,j)−P(i−1,j)−P(i+1,j)
−P(i,j−1)−P(i,j+1)
0≦i<N−1、
0≦j<M−1
ここで、NおよびおよびMは、1フレームの画像データの画素行および画素列の数を示す。したがって、このエッジ強調フィルタ処理においては、注目画素P(i,j)に対する処理として、注目画素データに加えて隣接4画素のデータが必要となる。
【0146】
図19は、この発明の実施の形態4における信号処理システムの画像データのフィルタ処理に関連する部分の構成を概略的に示す図である。図19において、システムLSI2においては、2つの基本演算ブロックFBAおよびFBBが用いられる。これらの基本演算ブロックFBAおよびFBBは、DMAコントローラ13に対し、DMA転送要求DMARQを出力する。このDMAコントローラ13は、DMA転送要求発生時、外部バスコントローラ14を介して外部システムバス3に結合される大容量メモリ(SDRAM)4のデータを読出し、内部システムバス7を介して基本演算ブロックFBAまたはFBBに必要なデータを転送する。
【0147】
このSDRAM4において、処理対象の画像データが格納される。一例として、1フレームの画像データのサイズとして、VGAサイズ(ビデオ・グラフィックス・アレイ)を考える。このVGAでは、640・480画素により1フレームが構成される(M=640、N=480)。演算ブロックFBAおよびFBBは、それぞれ、3行(ライン)の画素(640x3=1920画素)のデータを処理することができると仮定する。この画像データを、SDRAM4に格納し、基本演算ブロックFBAおよびFBBを、パイプライン態様で動作させ、高いスループットでフィルタ演算処理を実行する。
【0148】
このフィルタ演算処理の基本演算ブロックとSDRAM4とのデータ転送のためのマイクロ命令列は、ホストCPU8により実行される。フィルタ処理用のマイクロプログラムは、各基本演算ブロックFBAおよびFBBのマイクロ命令メモリに格納され、対応のコントローラ(21)の制御の下にエッジ強調フィルタ演算処理が実行される。
【0149】
図20は、この発明の実施の形態4に従う信号処理システムのホストCPUの処理シーケンスを示すフロー図である。以下、図20を参照して、この図19に示す信号処理システムの動作について説明する。
【0150】
ステップST1:
基本演算ブロックFBAに対して3行の画素に対するフィルタ演算のためのマイクロプログラムが、対応のマイクロ命令メモリ(21)に設定される。このマイクロプログラムの設定後、フレームの第0行から第2行の画素データを、SDRAM4から外部バスコントローラ14および内部システムバス7を介して基本演算ブロックFBAのメモリセルマットに転送する。この転送動作が完了すると、基本演算ブロックFBAの演算を起動し、その演算ブロックFBAにおいて、そのマイクロ命令メモリに格納されたマイクロプログラムに従ってフィルタ演算処理が開始される。この転送およびデータのメモリセルマットの格納の完了は、たとえば制御レジスタ群45に含まれるステータスレジスタに格納されるビット値をモニタすることにより参照される。たとえば、図6に示す入力ポートレジスタ45iにデータ転送時ビットがセットされ、この基本演算ブロックFBAにおける演算の待ち合せが指定されてもよい。
【0151】
ステップST2:
基本演算ブロックFBAにおいて、マイクロ命令メモリに格納されたマイクロプログラムに従ってフィルタ演算処理が実行される。基本演算ブロックFBAにおいて第1行の画素に対するフィルタ演算処理が実行されている間に並行して、ホストCPU8は、基本演算ブロックFBBに対し、同様、3行の画素に対するフィルタ演算のためのマイクロプログラムをマイクロ命令メモリへ格納し、また第239行から第241行の画素データをこの基本演算ブロックFBBへSDRAM4から転送し、対応のメモリセルマットに格納する。
【0152】
基本演算ブロックFBAにおいては第1の行の画素に対するフィルタ演算処理が完了すると、DMAコントローラ13に対しDMA転送要求DMARQを発行する。DMA転送要求DMARQは、例えば、制御レジスタ群に含まれる出力ポートレジスタにビットを立てることにより発行される。
【0153】
ステップST3:
DMAコントローラ13は、このこの基本演算ブロックFBAからのDMA転送要求を受けると、基本演算ブロックFBAからの演算結果データをSDRAM4に転送し、この転送完了後、第3行の画素データを基本演算ブロックFBAに転送する。基本演算ブロックFBAにおいては、この第0行の画素データ格納領域に、新たに転送された第3行の画素データを順次格納する。これにより、処理の完了した第0行の画素データが、新たな第3行の画素データで置換される。
【0154】
また、基本演算ブロックFBAとSDRAM4との間のDMAモードでのデータ転送と並行して、基本演算ブロックFBBにおいて第240行の画素データに対するフィルタ演算が実施される。このフィルタ演算処理完了後、基本演算ブロックFBBは、その出力ポートレジスタを介してDMA転送要求DMARQを発行する。
【0155】
ステップST4:
基本演算ブロックFBAは、第3行の画素データの転送完了後、第2行の画素に対してフィルタ演算を実行する。一方、基本演算ブロックFBBにおいては、DMA転送要求発行に従って、DMAモードで、第240行の画素についてのフィルタ演算結果をSDRAM4に転送し、その転送完了後、SDRAM4から次の第242行の画素データを受ける。この第242行の画素データは、先に格納された第239行の画素データと置換される。
【0156】
ステップST5:
基本演算ブロックFBAにおいて第2行の画素データに対するフィルタ演算処理完了後、DMA転送要求を発行し、DMAコントローラの制御の下に、DMAモードで、基本演算ブロックFBAからSDRAM4に対して、第2行の画素のフィルタ演算結果データが転送される。この転送完了後、SDRAM4は、第4行の画素データを基本演算ブロックFBAに転送する。この新たに転送される第4行の画素データは、基本演算ブロックFBAのメモリセルマットの第1行の画素データ格納領域に格納される。
【0157】
一方、基本演算ブロックFBBにおいては、転送された画素データを用いて第241行の画素に対するフィルタ演算処理を実行する。このフィルタ演算処理完了後、DMA転送要求DMARQを発行する。
【0158】
以降、同様の処理がステップST6以降繰返し交互に実行される。
すなわち、ステップST5からステップST481において、ステップST3およびST4の処理が、対象画素ラインを1ずつ増分しつつ239回繰返される。ステップST481の処理完了時において、1画面の画素に対するフィルタ演算処理が完了する。
【0159】
上述のように、DMA転送および演算処理を、基本演算ブロックFBAおよびFBBにおいて交互に実行することにより、システム全体として、効率的に演算処理を実行することができる。
【0160】
図21は、この発明の実施の形態4に従う信号処理システムの信号処理シーケンスを模式的に示す図である。図21において、基本演算ブロックFBAおよびFBBにおいて、3ラインの画素についてのエッジ強調フィルタを行なうマイクロ命令がマイクロ命令メモリ21に格納される。コントローラ22は、このマイクロ命令メモリ21に格納されるマイクロプログラムに従って演算処理を実行する。
【0161】
SDRAM4においては、まずホストCPUの制御の下に、3ラインの画素データが、基本演算ブロックFBAおよびFBBのメモリセルマット30へそれぞれ格納する。次いで、演算処理ユニット35およびALU間接続用スイッチ回路(ALUスイッチ)20を用いて基本演算ブロックFBAおよびFBBが、各々、対応のコントローラ22の制御の下に演算処理を実行する。
【0162】
基本演算ブロックFBAおよびFBBは、それぞれ3ラインのエッジ強調フィルタ処理が1行の画素について終了すると、DMA転送モードDMA3およびDMA4に従って、その1ラインのフィルタ演算処理後の画素データをSDRAM4へ転送する。一方、このときまた、SDRAM4からは、次の処理前の画素データの1ラインが、DMA転送モードDMA1およびDMA2に従って基本演算ブロックFBAおよびFBBにそれぞれ転送されて、不用ラインの画素データとの置換が行なわれる。したがって、メモリセルマット30において3ライン(行)の画素データを格納して、フィルタ演算処理が実行される。
【0163】
図22は、このDMA転送時のメモリセルマットのアドレスポインタの変化を示す図である。メモリセルマット30は、一例として4つの領域MA−MDに分割される。分割領域MDは、作業領域であり、中間値を格納する領域として利用される。分割領域MA−MCに、それぞれ異なる行の画素データが格納される。図22(a)に示すように、初期状態時においては、分割領域MA、MBおよびMCの初期アドレスポインタがそれぞれRP0、RP1およびRP2に設定される。この分割領域MA、MBおよびMCには、それぞれ第0行、第1行および第2行の画素データが格納される。アドレスポインタRP1が、フィルタ演算処理対象の画素データの領域を指定し、アドレスポインタRP0が、フィルタ処理対象の画素の上の行の画素の領域を示し、ポインタRP2が、フィルタ演算処理対象の画素ラインの下のラインの画素領域を示す。したがって、この図22(a)においては、ポインタRP1が指定する分割領域MBに格納される画素データに対してフィルタ演算処理が実行される。
【0164】
DMA転送モード時においては、書込ポインタWPが分割領域MAを指定し、転送ポインタTPが、分割領域MBを指定する。分割領域MBに、フィルタ演算処理後のデータが格納されており、この転送ポインタTPに従って、分割領域MBのフィルタ演算後の画素データが転送される。一方、書込ポインタWPが指定する領域MAに対し次の第3行の画素データが格納される。したがって、この転送完了時において、図22(b)に示すように、処理対象画素を指定するポインタRP1が、分割領域MCを示し、上側ライン画素指定ポインタRP0が分割領域MBを示し、下側ライン画素領域指定ポインタRP2が分割領域MAを示す。これにより、分割領域MCに格納された第2行の画素データについてフィルタ演算処理が実行される。
【0165】
この第2行の画素データのフィルタ演算処理実行完了後、転送ポインタTPは、分割領域MCを示しており、書込ポインタWPは、分割領域MBを示す。したがって、この場合には、分割領域MCに格納された第2行の画素データ(フィルタ演算処理後)が転送され、分割領域MBに次の行の第4行の画素データが格納される。この格納後、図22(c)に示すように各ポインタがシフトされ、処理対象領域ポインタRP1が、分割領域MAを示し、上側ライン画素領域指定ポインタRP0が分割領域MCを示し、下側ライン画素領域指定ポインタRP2は分割領域MBを示す。転送ポインタTPがまた分割領域MAを示し、書込ポインタMBが、分割領域MBを示す。したがって、この状態では、ポインタRP1が示す分割領域MAの第3行の画素に対してフィルタ演算実行され、フィルタ演算処理完了後のデータが、分割領域MAに格納される。演算処理完了後、転送ポインタTPに従って分割領域MAの第3行のフィルタ演算後の画素のデータが転送されてSDRAMに格納され、一方、書込ポインタWPが示す分割領域MBに、次の行の第4ラインの画素データが格納される。
【0166】
この転送完了後、再びポインタRP0−RP2およびTPおよびWPがシフトし、処理対象領域指定ポインタRP1が分割領域MBを示し、上側ライン画素領域指定ポインタRBP0が、分割領域MAを示し、下側ライン画素領域指定ポインタRP2が分割領域MCを示す。転送ポインタTPが、分割領域MBを示し、書込ポインタWPが、分割領域MCを示す。したがって、この図22(d)に示すポインタの位置は、図22(a)に示すポインタの位置と同じである。したがって、これらのポインタRP0−RP2、TPおよびWPを順次各処理ごとに分割領域のサイズ分シフトすることにより、容易にデータの書込、転送および処理結果の格納を行なうことができる。
【0167】
このアドレスポインタの設定は、例えば、汎用レジスタを用い、この各レジスタ内容を順次マイクロプログラム命令の1つの3ラインのエッジ強調フィルタ処理完了時に、それぞれシフトする命令により実現される。
【0168】
なお、この図22(a)−(d)に示すポインタのシフト構成において、転送ポインタTPは、固定された分割領域MDを常時指定し、この分割領域が、常にフィルタ演算処理後の画素データの格納領域として利用されてもよい。転送ポインタTPの制御が簡略化される。
【0169】
次に、エッジ強調フィルタ演算処理の手順としては、種々の処理フローを考えることができる。例えば次の処理フローを考えることができる。処理対象の画素データP(i,j)を5倍する演算処理は、画素データP(i,j)の全ビットを2ビット上位ビット方向にシフトして、図22に示す分割領域MDに格納することにより、4・P(i,j)が算出される。次いで、ポインタRP1が指定する領域に格納された画素データP(i,j)と4・P(i,j)の加算処理を行ない、加算結果を画素データP(i,j)の格納領域に格納する。これにより、5・P(i,j)の乗算処理が実現される。
【0170】
次いで、同一列の画素P(i−1,j)およびP(i+1,j)の加算を行ない、分割領域MDにデータP(i−1,j)+P(i+1,j)を格納する。次いでこの5・P(i,j)から、分割領域MDに格納されたデータを減算する。減算処理の場合には、2の補数演算を行なうため、まず分割領域MDに格納されたデータをビット値をすべて反転し、次いで1を加算する。−{P(i−1,j)+P(i+1,j)}=A(i,j)が生成される。次いで、これらを加算することにより、5・P(i,j)−A(i,j)が生成される。
【0171】
次いで、隣接列の画素データを減算する場合、まずALU間接続用スイッチ回路20により、隣接列のデータを転送するようにALUの経路を切換える。これにより、右側または左側の画素の減算が行なわれ、次いで再びALUスイッチ回路20の接続経路を切換えて、別の隣接列の画素との減算を行なう。これらの一連の処理により、前述のフィルタ演算処理を行なってフィルタ演算処理後の画素データを求めることができる。これらの一連の処理により、ビットシリアル態様で複雑なフィルタ演算処理を実行することができる。
【0172】
この接続経路の切換および各演算シーケンスは、すべてマイクロ命令メモリに格納されるマイクロプログラムにより規定される。
【0173】
以上のように、この発明の実施の形態4に従えば、複数の基本ブロックと外部の大容量メモリとの間で、DMAモードでデータ転送を行ない、データ転送と演算処理とをパイプライン態様で実行しており、大容量のデータを高速で演算処理することができる。
【0174】
[実施の形態5]
図23は、この発明の実施の形態5に従う主演算回路20の具体的構成の一例を示す図である。主演算回路20において、メモリセルマット30に配列されるメモリセルMCは、シングルポートSRAMセルである。メモリセル行それぞれに対応してワード線WLが配置され、メモリセル列それぞれに対応してビット線対BLPが配置される。メモリセルMCは、これらのビット線対BLPとワード線WLの交差部に対応して配置される。ワード線WLには、対応の行のメモリセルMCが接続され、ビット線対BLPには、対応の列のメモリセルMCが接続される。
【0175】
エントリERYは、ビット線対BLPそれぞれに対応して設けられ、図23に示すメモリセルマット30においては、ビット線対BLP0からBLP(m−1)それぞれに対応してエントリERY0−ERY(m−1)が配置される。ビット線対BLPが対応のエントリERYと対応のALU31との間のデータ転送線として利用される。
【0176】
メモリセルマット30のワード線WLに対して、コントローラ22からのアドレス信号またはシステムバスI/F24からのアドレス信号(および制御信号)に従って、演算対象のデータビットが接続されるワード線WLを選択状態へ駆動するロウデコーダ74が設けられる。ワード線WLには、エントリERY0−ERY(m−1)の同一位置のメモリセルが接続されており、ロウデコーダ74により、エントリERY0−ERY(m−1)において同一位置のデータビットを選択する。
【0177】
演算処理ユニット35においては、ALU31がビット線対BLP0−BLP(m−1)に対応して配置される。
【0178】
演算処理ユニット群35とメモリセルマット30との間に、データのロード/ストアを行なうための読出/書込回路38が設けられる。この読出/書込回路38は、ビット線対BLP0からBLP(m−1)各々に対して設けられるセンスアンプおよびライトドライバをそれぞれ含むセンスアンプ群70とライトドライバ群72を含む。
【0179】
読出/書込回路38に対して、システムバスI/F24を介して外部とのデータの受渡しを行なう入出力回路76が設けられる。この入出力回路76により、メモリセルマット30と内部データバスとの間でのデータ転送が行なわれる。メモリセル回路76のデータの入出力ビット幅は、システムバスI/F24のデータビット幅に応じて設定される。
【0180】
入出力回路76におけるデータビット幅と1つのワード線WLに接続されるエントリのビット幅(m)との調整を行なうためにカラムデコーダ78が設けられる。このカラムデコーダ78からの列選択線CLにより、システムバスI/F24のバス幅に応じたビット線対(センスアンプまたはライトドライバ)が選択される。カラムデコーダ78には、システムバスI/F24から与えられるアドレス信号のうちの下位ビットが与えられる。この下位ビットの数は、システムバスI/F24のバス幅に応じて適当に定められる。
【0181】
列選択線CLにより選択されたエントリが入出力回路76に接続され、システムバスI/F24との間でデータの受渡しが行なわれる。これにより、システムバスI/F24を介してメモリセルマット30に対するデータのアクセスを行なうことができる。
【0182】
図24は、この発明の実施の形態5に従う主演算回路のCPUアドレス割当の一例を示す図である。この図24に示す構成においては、一例として、メモリセルマット30は、64個のエントリERY0−ERY63に分割される。ロウデコーダ74へ与えられる上位アドレスのビット数は、このメモリセルマット30に含まれるワード線の数(エントリのビット幅)に応じて決定される。
【0183】
読出/書込回路38の領域において、入出力回路76に結合される内部データ線IO0−IO3が配置される。入出力回路76は、4ビットデータを転送する。この場合、カラムデコーダ78に対しては、4ビットの下位アドレスが与えられる。エントリERY0−ERY3に対しては、列アドレス“0”が割当てられ、エントリERY4−ERY7に対し列アドレス“1”が割当てられる。以降、同様にしてエントリERY60(図示せず)からエントリERY63に対して列アドレス“f”(16進)が割当てられる。
【0184】
したがって、カラムデコーダ78は、1/16選択を行なっており、列選択線CL0の選択時には、エントリERY0−ERY3が選択され、列選択線CL1の選択時には、エントリERY4−ERY7が選択される。同様、列選択線CL15の選択時においては、エントリERY60からERY63が選択される。
【0185】
上位アドレス(たとえば“0xx”)に従って、ロウデコーダ74によりワード線が選択される。
【0186】
カラムデコーダ78を用いて、入出力回路76の入出力するデータ転送ビット数をシステムバスI/F24のビット幅と同じとすることにより、外部のホストCPUまたはDMAコントローラが、このメモリセルマット30内のデータにアクセスすることができる。
【0187】
この場合、外部からのアクセス可能なデータは、複数のエントリにまたがる同一ビット位置のデータである。ビットシリアル態様で演算処理を実行する場合、したがって、1つのデータの各ビットが同一エントリに格納されるようにデータ列の並び替えが行なわれる。
【0188】
以上のように、この発明の実施の形態5に従えば、入出力回路のビット幅を、システムバスI/Fのビット幅と同一となるようにカラムデコーダ78の選択列数を設定しており、外部のホストCPUまたはDMAコントローラにより、メモリセルマット30内のデータをアクセスすることができる。
【0189】
[実施の形態6]
図25は、この発明の実施の形態6に従うシステムLSIの構成を概略的に示す図である。この図25においては、基本演算ブロックFB1の構成のみを具体的に示すが、基本演算ブロックFB1−FBh各々において、コントローラ22からのワークデータをメモリセルマット30へ転送するための切換回路(MUX)80が設けられる。この切換回路(MUX)80は、システムバスI/F24とコントローラ22の一方を、主演算回路20に含まれるメモリセルマット30に結合する。具体的には、この切換回路80が、図23に示す主演算回路内の入出力回路76に結合される。
【0190】
図25に示すシステムLSIの他の構成は、図1に示すシステムLSIの構成と同じであり、対応する部分には同一参照番号を付し、その詳細説明は省略する。
【0191】
この図25に示す構成においては、メモリセルマット30が、演算対象データ格納領域として利用され、また、コントローラ22のワークデータ格納領域として利用される。したがって、図1等に示すワークデータメモリ(23)が不要となり、チップ面積を低減することができる。
【0192】
図26は、この発明の実施の形態6におけるメモリセルマット30におけるデータ格納領域の構成を概略的に示す図である。図26において、メモリセルマット30は、演算データを格納する演算データエリア30pと、コントローラ22からのワークデータを格納するワークエリア30wとを含む。演算データエリア30pにおいては、エントリERY(ERYa,ERYb)において、演算対象データDToの各ビットが格納される。一方、ワークエリア30wにおいては、複数のエントリ(ERYa…ERYb)にわたって、同一列に、ワークデータDTwの各ビットが格納される。したがって、演算データエリア30pにおいては、外部データワードのビット位置の並び替えが行なわれたデータが格納され、一方、ワークエリア30wには、コントローラからのワークデータが並び替え処理を受けずに、各ワードが1アドレス位置に格納される。
【0193】
メモリセルマット30においては、メモリセルマット30のエントリに対し均一にワークエリア30wが割当てられて、ワークデータの格納が行なわれる。したがって、各エントリに対して、演算データ格納部分とワークデータ格納部分とは均等に割当てられ、特定のエントリの領域すべてがワークデータ格納に用いられることがないため、エントリを用いた並列演算処理能力は損なわれない。
【0194】
また、このワークエリア30wにおいては、何らデータの並べ替えを行なう必要がなく、コントローラ22は、通常のワークデータを格納するワークメモリアクセスと同様の操作で、ワークデータDTwをアクセスすることができる。
【0195】
以上のように、この発明の実施の形態6に従えば、メモリセルマットに対し、コントローラが切換回路を介してアクセス可能となるように構成しており、メモリセルマットを演算データおよびワークデータ格納領域として利用することができ、ワークデータメモリが不要となり、チップ面積を低減することができる。
【0196】
[実施の形態7]
図27は、この発明の実施の形態7に従うシステムLSIの構成を概略的に示す図である。図27に示すシステムLSI2においては、基本演算ブロックFB1−FBhそれぞれにおいて、システムバスI/F24と主演算回路20の間に、与えられたデータの行および列の並べ替えを行なう転置回路85と、システムバスI/F24および転置回路85の一方と主演算回路20との間の接続を設定する切換回路(MUX)87が設けられる。この図27においても、基本演算ブロックFB1−FBhは同一構成を有するため、基本演算ブロックFB1の構成を代表的に示す。この図27に示す半導体信号処理装置1の他の構成は、図1に示す半導体信号処理装置の構成と同じであり、対応する部分には同一参照番号を付し、その詳細説明は省略する。
【0197】
転置回路85は、システムバスI/F24からビットパラレルかつワードシリアルな態様で転送されるデータを、ワードパラレルかつビットシリアルな態様で転送して、メモリセルマット30の各エントリに、異なるデータワードの同一位置のビットを並列に書込む。また、転置回路85は、この主演算回路20のメモリセルマット30からワードパラレルかつビットシリアルに転送されるデータ列を転置して、ビットパラレルかつワードシリアルな態様で転送する。これにより、システムバスI/F24とメモリセルマット30におけるデータ転送の整合性をとる。
【0198】
なお、図27に示す構成においては、切換回路87が、コントローラ22からのワークデータを選択して主演算回路20に転送するように構成されても良い。この場合、ワークデータメモリ23は不要となる。また、演算対象データを転置する必要のない場合には、切換回路87は、システムバスI/F24を選択して主演算回路20に接続する。
【0199】
図28は、図27に示す転置回路85の構成を概略的に示す図である。図28において、転置回路85は、L行L列に配列される記憶素子を有する転置メモリ90と、転置メモリ90とシステムバスI/F24の間のインターフェイスをとるシステムバス転置メモリI/F(インターフェイス)91と、転置メモリ90と内部メモリバスを介して入出力回路76に結合されて、メモリセルマット(30)とのデータ転送のインターフェイスをとるメモリセルマット転置メモリI/F92と、この転置回路85の内部動作に必要な情報を記憶する制御レジスタ群94と、データ転送時のアドレス情報を格納する内部レジスタ群93と、この内部レジスタ群93に含まれる情報に基づいてメモリセルマットに対するアクセス対象のアドレスを計算して主演算回路へ与えるメモリセルマットアドレス計算ユニット95を含む。
【0200】
Lビットデータ単位で、メモリセルマットと転置回路85の間でデータ転送が行なわれ、またLビット単位で転置回路85とシステムバスI/F24との間でデータ転送が行なわれる。メモリ内部バス(図24に示すIO線)および内部システムバス7のビット幅は、Lビットである。
【0201】
内部レジスタ群93は、内部システムバス7へのアクセス回数のカウント情報を格納するシステムバスアクセス回数カウンタ93aと、メモリセルマットへのアクセス回数のカウント情報を格納するメモリセルマットアクセス回数カウンタ93bを含む。
【0202】
制御レジスタ群94は、エントリ位置情報を格納するエントリ位置レジスタ94aと、ビット位置情報を格納するビット位置レジスタ94bと、この転置回路85の活性/非活性を決定する制御ビットを格納するイネーブルレジスタ94cと、この転置回路85のデータの書込/読出の方向を設定する情報を格納するリード/ライト方向レジスタ94dを含む。エントリ位置レジスタ94aおよびビット位置レジスタ94bにより、メモリセルマットにおけるエントリ位置およびビット位置情報が指定される。この指定された領域のメモリセルマット内の内容を転置メモ90が保持しており、転置回路85は、データの並べ替えを行なう機能を有するリード/ライトバッファ回路として機能する。
【0203】
内部レジスタ群93におけるカウンタレジスタ93aおよび93bのカウント値により、転置メモリ90におけるデータの格納状況が示される。
【0204】
システムバス転置メモリI/F91は、転置回路85と内部システムバス7との間のデータ転送を制御する機能を有し、転置回路85からメモリセルマット(メモリ内部バス)へのデータ転送時には、内部システムバス7と転置メモリ90との間のデータ転送を要求するバスリクエストのウエイト制御を行なう。
【0205】
メモリセルマットアドレス計算ユニット95は、メモリセルマットへのデータ転送時、エントリ位置レジスタ94aおよびビット位置レジスタ94bに格納された情報に基づいて、データ転送対象のメモリセルマットのアドレスの計算を行ない、主演算回路に転送する(図24に示すロウデコーダ70およびカラムデコーダ4に転送する)。
【0206】
転置メモリ90は、システムバス転置メモリI/F91とは、Y方向に整列するビットで構成されるデータDTE単位でデータの転送を行なう(X方向に順次データDTEが格納される)。データワードは、同一のエントリに格納されるため、システムバスI/F91は、エントリ単位のデータを転送する。一方、転置メモリ90は、メモリセルマット転置メモリI/F92とのデータ転送時には、X方向に整列するデータビットを用いてデータの転送を行なう。すなわち、転置メモリ90においては、Y方向に整列するデータDTEが、外部アドレス単位のデータであり、メモリセルマットにおいては、同一のエントリに格納されるエントリ単位のデータであり、ワードシリアルビットパラレル単位で転送されるデータが格納される。一方、X方向のデータDTAは、メモリセルマットの複数のエントリにわたるデータであり、メモリセルマットにおいて同一アドレスに格納されるデータであり、ワードパラレルかつビットシリアルに転送され、各エントリの同一位置のビットで構成されるメモリセルマットのアドレス単位のデータである。
【0207】
この転置メモリ90において、システムバスとのデータ転送を行なうポートとメモリ内部バスとのデータ転送を行なうポートを別々に設けることにより、X方向データおよびY方向データを並び替えて、データ転送を行なうことができる。次に、内部システムバス7から入出力回路76を介してメモリセルマットへデータを書込む際の、転置回路85の動作を一例として、図29の動作フローを参照して説明する。
【0208】
フェーズ1:
まず、主演算回路のメモリセルマットの書込対象の先頭のビット位置(ワード線アドレス)およびエントリ位置(ビット線アドレス)をそれぞれ、ビット位置レジスタ94bおよびエントリ位置レジスタ93aに設定する。次いで、リード/ライト方向レジスタ90dに、書込を示すビットを設定する。
【0209】
この後、イネーブルレジスタ94cに、イネーブルビットを設定し、この転置回路85をイネーブルする。このイネーブルレジスタ94cのイネーブルビットのアサートにより、内部レジスタ群93に含まれるカウンタレジスタ93aおよび93bのカウント値が0に初期化される(ステップSP1)。
【0210】
フェーズ2:
システムバスI/F24からシステムバス転置メモリI/F91経由で、転置メモリ90に対し、転送データが書込まれる。この転置メモリ90への書込データは、Y方向に整列する多ビットデータDTEとして、転置メモリ90のX方向についての先頭行から順に格納される。この転置メモリ90に対するデータ書込ごとに、システムバスアクセス回数カウンタレジスタ93aのカウント値がインクリメントされる(ステップSP2)。
【0211】
フェーズ3:
転置メモリ90の記憶内容がフル状態となるまで、すなわち、システムバスアクセス回数カウンタレジスタ93aのカウント値がメモリ内部バスのバス幅Lに到達するまで、システムバス転置メモリI/F91を介してのデータ書込が行なわれる(ステップSP3)。
【0212】
フェーズ4:
転置メモリ90にL回のデータ書込が、内部システムバス7からシステムバスI/F24およびシステムバス転置メモリI/F91を介して行なわれると、転置メモリ90からメモリセルマットへのデータ転送を行なうため、システムバス転置メモリI/F91は、内部システムバス7に対するウエイト制御信号をアサートし、システムバスI/F24に対し、後続のデータ書込を待機させる状態に設定する(ステップSP4)。この転置メモリ90の記憶状況がフル状態となるか否かは、システムバスアクセス回数カウンタレジスタ93aのカウント値をモニタすることにより行なわれる。
【0213】
この動作と並行して、メモリセルマット転置メモリI/F92が活性化され、転置メモリ90のX方向に整列するデータDTAを読出し、入出力回路76に対するデータの転送を行なう(ステップSP5)。
【0214】
メモリセルマットアドレス計算ユニット95は、エントリ位置レジスタ94aおよびビット位置レジスタ94bにおよびメモリセルマットアクセス回数カウンタレジスタ93bの格納値に基づいて転送対象のメモリセルマットのアドレスを計算し、このデータ送出に合せて出力する。また、このメモリセルマットへのデータ送出に合せて、メモリセルマット転置メモリI/F92が、メモリセルマットアクセス回数カウンタ93bのカウント値を増分する。
【0215】
フェーズ5:
転置メモリ90の格納内容が空となるまで、メモリセルマットアクセス回数カウンタレジスタ93bの格納値がLとなるまで、転置メモリ90からメモリセルマット転置メモリI/F92を介してのLビット単位のデータ転送が継続される(ステップSP5、SP6)。
【0216】
フェーズ6:
図29に示すフロー図の判定ステップSP6において、転置メモリ90の記憶内容が空であると判定されると、すべての転送データが転送されたかの判定が行なわれる(ステップSP7)。転送データが残っている場合には、再び、アクセス回数レジスタカウンタ93aおよび93bのカウント値を初期化して、ついで、図29に示すステップSP2に戻る。このとき、また、エントリ位置レジスタ94aの格納値はL加算される。エントリ位置レジスタ94aの格納値がメモリセルマットのエントリ数を超えた場合には、エントリ位置レジスタ94aの値が0に設定され、メモリセルマットにおいて次のワード線を選択するため、ビット位置レジスタ94bの格納値を1増分する(ステップSP8)。システムバス転置メモリI/F91が、内部システムバスI/F7へのウエイトを解除し、内部システムバス7から転置メモリ90へのデータの書込を再開する。
【0217】
次に、前述のフェーズ2からフェーズ6(すなわち図29に示すステップSP2からSP8の動作)が繰返し実行される。
【0218】
図29に示すステップSP7において、すべてのデータ転送が完了したと判定されると(システムバスI/F24からの転送要求がデアサートされることにより判定される)、データ転送が終了する。これらの一連の処理により、外部からのワードシリアルに転送されるデータをビットシリアルかつワードパラレルなデータに変換して、メモリセルマットに転送することができる。
【0219】
図30は、図27に示すSDRAM4からメモリセルマット30へのデータ転送を模式的に示す図である。図30においては、内部システムバス7のビット幅が4ビットの場合のデータ転送が一例として示される。
【0220】
図30において、4ビットデータA(ビットA3−A0)ないしI(ビットI3−I0)がSDRAM4に格納される。このSDRAM4から内部システムバス7を介して4ビットデータDTE(データI;ビットI3−I0)が転置メモリ90へ転送されて格納される。このSDRAM4からのデータDTEは、同一エントリに格納されるエントリ単位のデータであり、転置メモリ90においては、Y方向にデータビットが格納される。
【0221】
転置メモリ90からメモリセルマット30へのデータ転送時においては、この転置メモリ90のX方向に整列するデータDTAの各ビットが並行して読出される。データビットE1、F1、G1、H1からなるアドレス単位のデータDTAが、メモリセルマット30のエントリ位置情報および書込ビット位置情報が示す位置に格納される。ビット位置レジスタに格納されるビット位置情報はメモリセルマット30のワード線アドレスとして用いられ、エントリ位置情報は、このメモリセルマット30のビット線アドレスとして用いられる。これらのビット位置情報およびエントリ位置情報が、先の制御レジスタ群94内のエントリ位置レジスタ94aおよびビット位置レジスタ94bに格納される。実際のデータの書込位置を示す書込ビット位置情報は、メモリセルマットアクセス回数カウンタ93bのカウント値とエントリ位置レジスタ94aの情報とビット位置情報94bに格納されるビット位置情報とに基づいてメモリセルマットアドレス計算ユニット95により生成される。
【0222】
この転置メモリ90を用いて、Y方向に同時にデータビットを格納し、次いでX方向に整列するデータビットを読出すことにより、SDRAM4からワードシリアルかつビットパラレルで読出されるエントリ単位のデータDTEを、ワードパラレルかつビットシリアルのアドレス単位のデータDTAに変換してメモリセルマット30へ格納することができる。
【0223】
メモリセルマット30からデータを読出して内部システムバス7へ転送する場合には、このデータの転送方向が逆となるものの、転置メモリ90の動作メモリセルマットへのデータ書込時と同じである。データ読出時のメモリセルマット30におけるアクセス対象情報が、制御レジスタ94の各レジスタに格納され、リード/ライト方向レジスタ94dに、データ読出を示すビットを設定する。メモリセルマット30から、メモリセルマット30のアドレス単位のデータを読出して転置メモリ90に、Y方向の先頭位置から順次格納する。次いで、転置メモリ90からデータをX方向の先頭位置から順次読出すことにより、メモリセルマット30からワードパラレルかつビットシリアル態様で読出されたデータを、ワードシリアルかつビットパラレルのデータに変換して転送することができる。
【0224】
図31は、転置メモリ90に含まれるメモリセルの構成の一例を示す図である。この転置メモリ90に含まれるメモリセルは、デュアルポートSRAMセルで構成される。図31において、転置メモリセルは、交差結合される負荷PチャネルMOSトランジスタPQ1およびPQ2と、交差結合されるデータ記憶用のドライブNチャネルMOSトランジスタNQ1およびNQ2を含む。この転置メモリセルは、通常のSRAMセルと同様にインバータラッチ(フリップフロップ素子)をデータ記憶素子として備え、このフリップフロップ素子により、ストレージノードSN1およびSN2に相補データを記憶する。
【0225】
転置メモリセルは、さらに、ワード線WLA上の信号電位に応答してストレージノードSN1およびSN2をそれぞれビット線BLAおよび/BLAに結合するNチャネルMOSトランジスタNQA1およびNQ2と、ワード線WLB上の信号電位に応答してストレージノードSN1およびSN2をビット線BLBおよび/BLBに結合するNチャネルMOSトランジスタNQB1およびNQB2を含む。ワード線WLAおよびWLBが直交して配列され、ビット線BLAおよび/BLAがビット線BLBおよびBLBと直交して配列される。
【0226】
このワード線WLAおよびビット線BLAおよび/BLAで構成される第1のポート(トランジスタNQA1,NQA2)とワード線WLBおよびビット線BLBおよび/BLBで構成される第2のポート(トランジスタNQB1、NQB2)をそれぞれ別々の転置メモリI/Fに結合する。すなわち、たとえば、第1のポート(ワード線WLA,ビット線BLA,/BLA)を内部システムバスとのインターフェイス用のポートとして利用し、第2のポート(ワード線WLBおよびビット線BLB,/BLB)を、メモリデータバスへのアクセス用のポートとして利用する。これにより、転置メモリにおいて行および列の変換を行なってデータアクセスを行なうことができる。
【0227】
以上のように、この発明の実施の形態7に従えば、システムバスとメモリデータバスとの間に、転送データの行および列の交換を行なう転置回路を用いており、内部システムバスとメモリセルマット間のデータ転送時に、多ビット幅のデータの転置を行なうことができ、このメモリセルマットに対するデータ転送時に必要とされるメモリセルマットへのアクセス回数を低減することができ、データ転送に要する時間を短縮することができ、高速処理が実現される。
【産業上の利用可能性】
【0228】
この発明に従う半導体信号処理装置は、一般の画像または音声データ処理のみならず、大量のデータ処理を行なう半導体信号処理装置に対して適用することができ、デジタル信号処理分野においてこの発明に従う半導体信号処理装置を広く適用することができる。
【符号の説明】
【0229】
1 半導体信号処理システム、2 システムLSI、3 外部システムバス、4 SDRAM、7 内部システムバス、8 ホストCPU、11 割込コントローラ、13 DMAコントローラ、14 外部バスコントローラ、FB1−FBh 基本演算ブロック、20 主演算回路、21 マイクロ命令メモリ、22 コントローラ、23 ワークデータメモリ、24 システムバスI/F、30 メモリセルマット、31 ALU、32 ALU間相互接続用スイッチ回路、30A,30B メモリセルマット、35 演算処理ユニット、38,38A,38B 読出/書込回路、40 命令デコーダ、41 プログラムカウンタ、42 PC値計算ユニット、43 汎用レジスタ群、45 制御レジスタ群、46,46A,46B アドレス計算ユニット、47,47A,47B アドレスレジスタ群、70 開始アドレスレジスタ、72 終了アドレスレジスタ、SAW センスアンプおよびライトドライバ、74 ロウデコーダ、76 入出力回路、78 カラムデコーダ、80 切換回路(MUX)、85 転置回路、90 転置メモリ、91 システムバス転置メモリI/F、92 メモリセルマット転置メモリI/F、93 内部レジスタ群、94 制御レジスタ群、95 メモリセルマットアドレス計算ユニット。
【技術分野】
【0001】
この発明は、半導体信号処理装置に関し、特に、高速に大量のデータの演算処理を行なう半導体メモリを用いた信号処理用集積回路装置の構成に関する。
【背景技術】
【0002】
近年、携帯端末機器の普及に伴い、音声および画像のような大量のデータを高速に処理するデジタル信号処理の重要性が高くなってきている。このようなデジタル信号処理には、一般に、専用の半導体装置としてDSP(デジタル・シグナル・プロセサ)が用いられる。音声および画像データに対するデジタル信号処理においては、フィルタ処理などのデータ処理が行なわれ、このような処理においては積和演算を繰返す演算処理が多い。したがって、一般に、DSPの構成においては、乗算回路、加算回路および累算用のレジスタが設けられる。このような専用のDSPを用いると、積和演算を1マシンサイクルで実行することが可能となり、高速演算処理が可能となる。
【0003】
このような積和演算を行なう際に、レジスタファイルを利用する構成が、特許文献1(特開平6−324862号公報)に示されている。この特許文献1においては、レジスタファイルに格納された2項のオペランドデータを読出して演算器で加算した後、書込データレジスタを介してレジスタファイルに加算結果を書込む。この特許文献1に示される構成においては、レジスタファイルに対して書込アドレスおよび読出アドレスを同時に与えてデータの書込およびデータの読出を並行に行なうことにより、データの書込サイクルおよびデータの読出サイクルを別々に設けて演算処理する構成に比べて処理時間を短縮することを図る。
【0004】
また、大量のデータを高速で処理することを意図する構成が、特許文献2(特開平5−197550号公報)に示されている。この特許文献2に示される構成においては、複数の演算装置を並列に配置し、それぞれの演算装置にメモリを内蔵する。各演算装置において個々にメモリアドレスを生成することにより、並列演算を高速で行なうことを図る。
【0005】
また、画像データのDCT変換(離散コサイン変換)などの処理を高速に行なうことを目的とする信号処理装置が、特許文献3(特開平10−74141号公報)に示されている。この特許文献3に示される構成においては、画像データがビットパラレルかつワードシリアルなシーケンスで、すなわちワード(画素データ)単位で入力されるため、直列/並列変換回路を用いてワードパラレルかつビットシリアルなデータ列に変換してメモリアレイに書込む。メモリアレイに対応して配置される演算器(ALU)へデータを転送して並列処理を実行する。メモリアレイは、画像データブロックに応じてブロックに分割されており、各ブロックにおいて対応の画像ブロックを構成する画像データがメモリアレイの行ごとにワード単位で格納される。
【0006】
この特許文献3に示される構成においては、メモリアレイ対応の演算器との間でワード(1つの画素に対応するデータ)単位でデータを転送する。各ブロック個々に対応の演算器において同一処理を転送されたワードに対して実行することにより、DCT変換などのフィルタ処理を高速で実行することを図る。演算処理結果は、再びメモリアレイに書込み、再度、並列/直列変換を行なってビットシリアルかつワードパラレルデータをビットパラレルかつワードシリアルなデータに変換して1ラインごとのデータを順次出力する。通常の処理においては、データのビット位置の変換は行なわれず、演算器において通常の演算処理を複数のデータに対して並列に実行する。
【0007】
また、複数の異なる演算処理を並行して実行すること目的とするデータ処理装置が特許文献4(特開2003−114797号公報)に示されている。この特許文献4に示される構成においては、各々その機能が限定された複数の論理モジュールをマルチポート構成のデータメモリに接続する。これらの論理モジュールとマルチポートデータメモリとの接続においては、論理モジュールが接続されるマルチポートメモリのポートおよびメモリが制限されており、したがって、各論理モジュールがマルチポートメモリへアクセスしてデータの読出および書込を行なうことのできるアドレス領域が、制限される。各論理モジュールで演算を行なった結果は、アクセスが許可されたメモリに書込み、これらのマルチポートメモリを介して順次データを論理モジュールを介して転送することにより、パイプライン的にデータ処理を行なうことを図る。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開平6−324862号公報
【特許文献2】特開平5−197550号公報
【特許文献3】特開平10−74141号公報
【特許文献4】特開2003−114797号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
処理対象のデータ量が非常に多い場合には、専用のDSPを用いても、性能を飛躍的に向上させることは困難である。たとえば、演算対象のデータが1万組ある場合、1つ1つのデータに対する演算を1マシンサイクルで実行することができたとしても、最低でも1万サイクルが演算に必要となる。したがって、特許文献1に示されるような、レジスタファイルを用いて積和演算を行なうような構成の場合、1つ1つの処理は高速であるものの、データ処理が直列に行なわれるため、データ量が多くなるとそれに比例して処理時間が長くなり、高速処理を実現することができない。また、このような専用のDSPを利用する場合、処理性能は動作周波数に大きく依存することになるため、高速処理を優先した場合、消費電力が増大することになる。
【0010】
また、この特許文献1に示されるようなレジスタファイルおよび演算器を利用する場合、ある用途に特化して設計されることが多く、演算ビット幅および演算回路の構成等が固定される。したがって、他の用途に転用する場合には、そのビット幅および演算回路の構成を設計し直す必要があり、複数の演算処理用途に柔軟に対応することができなくなるという問題が生じる。
【0011】
また、特許文献2に示される構成においては、演算装置個々にメモリが内蔵されており、各演算装置において異なるメモリアドレス領域をアクセスして処理を行なう。しかしながら、データメモリと演算装置とは別々の領域に配置されており、論理モジュール内において演算装置とメモリとの間でアドレスを転送してデータアクセスを行なう必要があり、データ転送に時間を要し、このためマシンサイクルを短縮することができなくなり、高速処理を行なうことができなくなるという問題が生じる。
【0012】
また、特許文献3に示される構成においては、画像データのDCT変換などの処理を高速化することを図っており、画面1ラインの画素データを1行のメモリセルに格納して行方向に整列する画像ブロックに対して並列に処理を実行している。したがって、画像の高精細化のために1ラインの画素数が増大した場合、メモリアレイが膨大なものとなる。たとえば、1画素のデータが8ビットで1ラインの画素数が512個の場合でも、メモリアレイの1行においてはメモリセルの数が8・512=4Kビットとなり、1行のメモリセルが接続される行選択線(ワード線)の負荷が大きくなり、高速でメモリセルを選択してデータを演算部とメモリセルとの間で転送することができなくなり、応じて高速処理を実現することができなくなるという問題が生じる。
【0013】
また、特許文献3においては、メモリセルアレイを演算回路群両側に配置する構成は示されているものの、具体的なメモセルアレイの構造は示されておらず、また演算回路において演算器をアレイ状に配置することは示されているものの、どのように演算器群を配置するかの詳細については何ら示されていない。
【0014】
また、特許文献4に示される構成においては、複数のマルチポートデータメモリと、これらのマルチポートデータメモリに対してアクセス領域が制限される複数の低機能の演算器(ALU)とが設けられている。しかしながら、この演算器(ALU)とメモリとは別の領域に配置されており、配線容量などにより高速でデータを転送することができず、パイプライン処理を実行しても、このパイプラインのマシンサイクルを短縮することができなくなるという問題が生じる。
【0015】
また、これらの特許文献1から4においては、演算処理対象のデータの語構成が異なる場合、どのように対応するかについては何ら検討していない。
【0016】
それゆえ、この発明の目的は、高速で大量のデータを処理することのできる半導体信号処理装置を提供することである。
【0017】
この発明の他の目的は、データの語構成および演算内容にかかわらず高速で演算処理を実行することのできる半導体信号処理装置を提供することである。
【0018】
この発明のさらに他の目的は、柔軟に処理内容を変更することのできる演算機能内蔵半導体信号処理装置を提供することである。
【課題を解決するための手段】
【0019】
この発明に係る半導体信号処理装置は、行列状に配列される複数のメモリセルを有しかつ各々が複数のメモリセルを有する複数のエントリに分割されるメモリアレイと、このメモリアレイの各エントリに対応して配置される複数の演算回路とを含む主演算回路と、マイクロ命令を格納するマイクロ命令メモリと、このマイクロ命令メモリからのマイクロ命令に従って、メモリアレイおよび複数の演算回路に対する動作制御を行なう制御回路を備える。
【発明の効果】
【0020】
メモリアレイを複数のエントリに分割し、各エントリに対して演算回路を配置する。このメモリアレイおよび演算回路の間のデータ転送およびデータの書込/読出および演算処理は、マイクロ命令メモリからのマイクロ命令に従って動作制御を行なっており、通常のワイヤードロジックと同程度の速度で処理を実行することができる。また、マイクロプログラム命令により、その演算処理内容を適用用途に応じて変更することができ、異なる演算内容に対して柔軟に対応することができる。
【0021】
また、複数のエントリに対して並列に演算処理を実行するため、大量のデータの高速演算処理を実現することができる。
【0022】
また、各エントリに同一のデータワードを格納し、ビットシリアル態様で対応の演算回路で演算処理を行なう構成とすることにより、データの語構成(ビット幅)の変更に対しても大幅なハードウェアの変更を行なうことなく対応して、演算処理を行なうことができる。
【図面の簡単な説明】
【0023】
【図1】この発明の実施の形態1に従う信号処理システムの構成を概略的に示す図である。
【図2】図1に示す主演算回路の要部の構成を示す図である。
【図3】図1に示すメモリマットに含まれるメモリセルの構成の一例を示す図である。
【図4】図1に示す主演算回路の処理動作を示す図である。
【図5】図4に示す処理動作の処理シーケンスを示す図である。
【図6】この発明の実施の形態1に従う基本演算ブロックの構成を概略的に示す図である。
【図7】この発明の実施の形態1におけるマイクロプログラムの一例を示す図である。
【図8】図7に示すアドレス更新の動作を示すタイミング図である。
【図9】図6に示すALUの構成の一例を示す図である。
【図10】この発明の実施の形態2に従う基本演算ブロックの構成を概略的に示す図である。
【図11】この発明の実施の形態2において用いられるマイクロプログラムの一例を示す図である。
【図12】図11に示すマイクロプログラムの処理動作を示すフロー図である。
【図13】この発明の実施の形態3に従う基本演算ブロックの構成を概略的に示す図である。
【図14】図13に示すメモリセルマットに含まれるメモリセルの構成の一例を示す図である。
【図15】図13に示すALUの構成の一例を概略的に示す図である。
【図16】図13に示す主演算回路のデータ転送動作を模式的に示す図である。
【図17】この発明の実施の形態3における半導体信号処理装置のマイクロプログラムの一例を示す図である。
【図18】この発明の実施の形態4における画像データ処理の一例を示す図である。
【図19】この発明の実施の形態4に従う半導体信号処理装置の要部の構成を概略的に示す図である。
【図20】この発明の実施の形態4に従う半導体信号処理装置のデータ処理シーケンスを示すフロー図である。
【図21】図20に示す処理シーケンスにおけるデータの流れを模式的に示す図である。
【図22】この発明の実施の形態4におけるメモリセルマットにおける格納データおよび転送データの領域を模式的に示す図である。
【図23】この発明の実施の形態5に従う演算回路の構成を概略的に示す図である。
【図24】図23に示す主演算回路の具体的構成を示す図である。
【図25】この発明の実施の形態6に従う半導体信号処理装置の構成を概略的に示す図である。
【図26】図25に示すメモリセルマットのデータ格納領域の割付けを概略的に示す図である。
【図27】この発明の実施の形態7に従う半導体信号処理装置の構成を概略的に示す図である。
【図28】図27に示す転置回路の構成を概略的に示す図である。
【図29】図28に示す転置回路のデータ転送動作を示すフロー図である。
【図30】この発明の実施の形態7における転置回路のデータ転送時のデータの流れを模式的に示す図である。
【図31】図28に示す転置メモリに含まれるメモリセルの構成の一例を示す図である。
【発明を実施するための形態】
【0024】
[実施の形態1]
図1は、この発明に従う半導体信号処理装置が用いられる処理システムの全体構成を概略的に示す図である。図1において、信号処理システム1は、各種処理を実行する演算機能を実現するシステムLSI2と、システムLSI2と外部システムバス3を介して接続される外部メモリとを含む。この外部メモリは、大容量メモリ4と、高速メモリ5と、立上げ時の命令などの固定情報を格納する読出専用メモリ(リード・オンリー・メモリ:ROM)6を含む。大容量メモリ4は、たとえばクロック同期型ダイナミック・ランダム・アクセス・メモリ(SDRAM)で構成され、高速メモリ5は、たとえばスタティック・ランダム・アクセス・メモリ(SRAM)で構成される。
【0025】
システムLSI2は、内部システムバス7に並列に結合される基本演算ブロックFB1−FBhと、内部システムバス7に結合され、これらの基本演算ブロックFB1−FBhの処理動作を制御するホストCPU8と、このシステム1の外部からの入力信号INを内部処理用データに変換する入力ポート9と、内部システムバス7から与えられた出力データを受けて、システム外部への出力信号OUTを生成する出力ポート10を含む。これらの入力ポート9および出力ポート10は、たとえばライブラリ化されたIP(インテレクチャル プロパティ:Intellectual Property)ブロックで構成され、データ/信号の入出力に必要な機能を実現する。
【0026】
システムLSI2は、さらに、基本演算ブロックFP1−FBhからの割込信号を受付け、ホストCPU8に対して割込を通知する割込コントローラ11と、ホストCPU8の各処理に必要な制御動作を行なうCPU周辺12と、基本演算ブロックFB1−FBhからの転送要求に従って外部メモリに対するデータ転送を行なうDMA(ダイレクト・メモリ・アクセス)コントローラ13と、CPU8またはDMAコントローラ13からの指示に従って外部システムバス3に接続されるメモリ4−6に対するアクセス制御を行なう外部バスコントローラ14と、ホストCPU8のデータ処理を補助する専用ロジック15を含む。
【0027】
CPU周辺12は、タイマおよびシリアルIO(入出力)等のホストCPU8におけるプログラムおよびデバッグの用途に必要な機能を備える。専用ロジック15は、たとえばIPブロックで構成され、既存の機能ブロックを用いて必要な処理機能を実現する。これらの機能ブロック9−15は、内部システムバス7に接続される。また、DMAコントローラ13には、基本演算ブロックFB1−FBhからのDMA要求信号が与えられる。
【0028】
基本演算ブロックFB1−FBhは、同一構成を有するため、図1においては、基本演算ブロックFB1の構成を代表的に示す。
【0029】
基本演算ブロックFB1は、実際のデータの演算処理を行なう主演算回路20と、この主演算回路20における演算処理を指定するマイクロ命令を格納するマイクロ命令メモリ21と、マイクロ命令メモリ21からのマイクロ命令に従って主演算回路20の演算処理を制御するコントローラ22と、コントローラ22の中間処理データまたは作業用データを格納するワークデータメモリ23と、この基本演算ブロックFB1内部と内部システムバス7との間でのデータ/信号の転送を行なうシステムバスインターフェイス(I/F)24を含む。
【0030】
主演算回路20は、複数のメモリセルが行列状に配列されかつ複数のエントリに分割されるメモリセルマット30と、メモリセルマット30の各エントリに対応して配置されて指定された演算処理を行なう演算器(ALU)31と、演算器31間のデータ転送経路を設定するALU間相互接続用スイッチ回路32を含む。
【0031】
基本的にメモリセルマット30の各行が1エントリを構成し、1エントリに多ビットデータの各ビットが格納される。演算器(以下、適宜、ALUと称す)31は、したがって、対応のエントリからのデータをビットシリアルに受けて演算処理を行ない、処理結果をメモリセルマット30の指定されたエントリ(たとえば対応のエントリ)に格納する。
【0032】
ALU間相互接続用スイッチ回路32により、ALU31の接続経路が切換えられ、異なったビット線(異なるエントリ)のデータの演算も可能となる。各エントリに異なるデータを格納し、ALU31により並列演算処理を行なうことにより、高速にデータ処理を行なうことができる。
【0033】
コントローラ22は、マイクロ命令メモリ21に格納されるマイクロ命令に従ってマイクロプログラム方式に従った動作を行なう。マイクロプログラム動作に必要なワークデータが、ワークデータメモリ23に格納される。
【0034】
システムバスI/F24により、ホストCPU8またはDMAコントローラ13が、メモリセルマット30、コントローラ22内の制御レジスタ、マイクロ命令メモリ21およびワークデータメモリ23へアクセスすることが可能になる。
【0035】
基本演算ブロックFB1−FBhには、異なるアドレス領域(CPUアドレス領域)が割付けられる。同様、基本演算ブロックFB1−FBh内のメモリセルマット30、コントローラ22内の制御レジスタ、マイクロ命令メモリ21およびワークデータメモリ23についても、それぞれ異なるアドレス(CPUアドレス)が割付けられる。したがって、この基本演算ブロックFB1−FBhそれぞれにおいて、異なる内容のマイクロ命令を格納することにより、異なる演算処理を並行して実行することができる。また、基本演算ブロックFB1−FBhにおいて、異なるアドレス領域のデータについて同一の演算処理が行なわれるように、マイクロ命令メモリ21に同一の演算内容のマイクロ命令が格納されてもよい。
【0036】
各割付けられたアドレスに従って、ホストCPU8およびDMAコントローラ13が、アクセス対象の基本演算ブロックFB(FB1−FBh)を識別し、アクセス対象の基本演算ブロックに対するアクセスを実行する。
【0037】
図2は、図1に示す基本演算ブロックFB1−FBhそれぞれに含まれる主演算回路20の要部の構成を概略的に示す図である。図2において、メモリセルマット30においては、メモリセルMCが行列状に配列される。メモリセルMCが、m個のエントリERYに分割される。エントリERYは、nビットのビット幅を有する。基本的に、1つのエントリERYは、1列に整列するメモリセルMCで構成される。したがって、この場合、エントリERYの数は、メモリセルマット30の行すなわちビット線の数で決定される。
【0038】
演算処理ユニット群35においては、エントリERYそれぞれに対してALU31が設けられる。このALU31は、加算、論理積、一致検出(EXOR)、および反転(NOT)などの演算を実行することができる。
【0039】
エントリERYと対応のALU31との間でデータのロード(メモリセルマット30から演算処理ユニット群35へのデータの転送)およびストア(演算処理ユニット群35からメモリセルマット30へのデータの転送格納)を行なって演算処理を実行する。エントリERYには、多ビットデータの各ビットが格納され、ALU31は、ビットシリアルな態様(多ビットデータワードをビット単位で処理する態様)で演算処理を実行する。演算処理ユニット群35においては、データワードについてビットシリアル態様でかつ複数のエントリERYが並行して処理されるエントリパラレルな態様でデータの演算処理が実行される。
【0040】
エントリERYのビット幅を変更することにより、データワードの語構成が異なる場合にも演算サイクル数(アドレスポインタの範囲)を変更するだけで、データ処理を実行することができる。また、エントリ数mを多くすることにより、大量のデータを一括して演算処理することができる。
【0041】
図3は、図2に示すメモリセルMCの構成の一例を示す図である。図3において、メモリセルMCは、電源ノードとストレージノードSN1の間に接続されかつそのゲートがストレージノードSN2に接続されるPチャネルMOSトランジスタ(絶縁ゲート型電界効果トランジスタ)PQ1と、電源ノードとストレジノードSN2の間に接続されかつそのゲートがストレージノードSN1に接続されるPチャネルMOSトランジスタPQ2と、ストレージノードSN1と接地ノードの間に接続されかつそのゲートがストレージノードSN2に接続されるNチャネルMOSトランジスタNQ1と、ストレージノードSN2と接地ノードの間に接続されかつそのゲートがストレージノードSN1に接続されるNチャネルMOSトランジスタNQ2と、ワード線WL上の電位に応答してストレージノードSN1およびSN2を、それぞれ、ビット線BLおよび/BLに接続するNチャネルMOSトランジスタNQ3およびNQ4とを含む。
【0042】
この図3に示すメモリセルMCは、フルCMOS(相補MOS)構成のSRAMセルであり、高速でデータの書込/読出を行なうことができる。このSRAMセルを利用することにより、メモリセルマット30において、記憶データのリフレッシュを行なう必要がなく、動作制御が容易となり、演算処理を高速で実行することができる。
【0043】
主演算回路20において演算を行なう場合には、まず、各エントリERYに演算対象のデータの格納を行なう。次いで、格納されたデータのある桁のビットを、すべてのエントリERYについて並列に読出して対応のALU31へ転送(ロード)する。2項演算の場合には、各エントリERYにおいて別のデータワードのビットに対しても同様の転送動作を行なった後、各ALU31において2入力演算を行なう。この演算処理結果は、ALU31から対応のエントリERY内の所定領域に再書込(ストア)される。
【0044】
図4は、図2に示す主演算回路20における演算操作を模式的に示す図である。図4においては、2ビット幅のデータワードaおよびbの加算を行なって、データワードcを生成する。エントリERYには、演算対象の組をなすデータワードaおよびbがともに格納される。
【0045】
図4においては、第1行目のエントリERYに対するALU31においては、10B+01Bの加算が行なわれ、2行目のエントリERYに対するALU31においては、00B+11Bの演算が行なわれる。ここで、末尾の“B”は、2進数を示す。3行目のエントリERYに対するALU31においては、11B+10Bの演算が行なわれる。同様に、各エントリERYに格納されたデータワードaおよびbの加算が実行される。
【0046】
演算は、下位側ビットから順にビットシリアル態様で行なわれる。まず、エントリERYにおいてデータワードaの下位ビットa[0]を対応のALU31へ転送する。次いで、データワードbの下位ビットb[0]を対応のALU31へ転送する。ALU31において、これらの与えられた2ビットデータを用いて加算演算を行なう。この加算演算結果a[0]+b[0]は、データワードcの下位ビットc[0]の位置に書込まれる(ストアされる)。すなわち、1行目のエントリERYにおいては、“1”がビットc[0]の位置に書込まれる。
【0047】
この加算処理を、次いで上位ビットa[1]およびb[1]に対しても行ない、その演算結果a[1]+b[1]が、ビットc[1]の位置に書込まれる。
【0048】
加算演算においては、桁上がりが生じる可能性があり、この桁上がり(キャリー)の値がビットc[2]の位置に書込まれる。これにより、データワードaおよびbの加算が、すべてのエントリERYにおいて完了し、その結果がデータcとして各エントリERYにおいて格納される。エントリとしてたとえば1024エントリを準備した場合、1024組のデータの加算を並列に実行することができる。
【0049】
図5は、この加算演算処理時の内部タイミングを模式的に示す図である。以下、図5を参照して、加算演算の内部タイミングについて説明する。この加算演算処理においては、ALU31に含まれる2ビット加算器(ADD)が利用される。
【0050】
図5において、“Read”は、メモリセルマット30から演算対象のデータビットを読出して対応のALU31に転送する動作(ロード)または動作命令を示し、“Write”は、ALU31の演算結果データを対応のエントリERYの対応のビット位置に書込む動作(ストア)または動作命令を示す。
【0051】
マシンサイクルkにおいて、データビットa[i]がメモリセルマット30から読出され、次のマシンサイクル(k+2)で、次の演算対象のデータビットb[i]が読出され(Read)、ALU31の加算器(ADD)にそれぞれ与えられる。
【0052】
マシンサイクル(k+2)において、ALU31の加算器(ADD)において与えられたデータビットa[i]およびb[i]の加算処理が行なわれ、マシンサイクル(k+3)において、加算結果c[i]が対応のエントリの対応のビット位置に書込まれる。
【0053】
次のマシンサイクル(k+4)および(k+5)において、次の演算対象のデータビットa[i+1]およびb[i+1]が読出され、ALU31の加算器(ADD)へ転送され、マシンサイクル(k+6)においてALU31により加算処理が行なわれ、マシンサイクル(k+7)において加算結果がビット位置c[i+1]へ格納される。
【0054】
メモリセルマット30とALU31の間のデータビットの転送に、それぞれ1マシンサイクルが必要とされ、ALU31において1マシンサイクルの演算サイクルが必要とされる。したがって、1ビットデータの加算および加算結果の格納を行なうために、4マシンサイクルが必要となる。メモリセルマット30を複数のエントリERYに分割し、各エントリに演算対象データの組をそれぞれ格納し、対応のALU31においてビットシリアル態様で演算処理を行なう方式の特徴は、1つ1つのデータ演算には、比較的多くのマシンサイクルが必要とされるものの、処理すべきデータ量が非常に多い場合には、演算の並列度を高くすることにより高速データ処理を実現することができるということである。
【0055】
たとえば、演算対象のデータワードのビット幅がNの場合、各エントリの演算には、4・Nマシンサイクルが必要となる。演算対象のデータワードのビット幅は、8ビットから64ビット程度である。エントリ数mを、たとえば1024と大きくすることにより、並列演算処理時に、たとえば8ビットデータの場合、32マシンサイクルで1024個の演算結果を得ることができ、1024組のデータをシーケンシャルに処理する場合に比べて大幅に処理時間を短縮することができる。
【0056】
また、ビットシリアル態様で演算処理を行なっており、処理されるデータのビット幅は固定されないため、種々のデータ構成を有する種々のアプリケーションに容易に適応することができる。
【0057】
図6は、基本演算ブロックFBiにおけるコントローラ22の構成を示す図である。この基本演算ブロックFBiにおいて、主演算回路20においては、先の図1に示す構成と同様、メモリセルマット30、演算処理ユニット群35およびALU間相互接続用スイッチ回路32が設けられる。この図6においては、メモリセルマット30と演算処理ユニット群35の間に設けられる書込/読出回路38を併せて示す。この書込/読出回路38は、エントリERYそれぞれに対応して設けられるセンスアンプおよびライトドライバSAWを含む。このメモリセルマット30において、列方向に延在してエントリERYに共通にワード線が配設され、各エントリそれぞれにおいてビット線が対をなして配置される。図6においては、メモリセルマット30の列(ワード線)および行(ビット線)を選択するための回路は示していない。
【0058】
コントローラ22は、マイクロ命令メモリ21からフェッチしたデータをデコードし、各種制御信号を生成する命令デコーダ40と、マイクロ命令メモリ21へのアドレスを生成するプログラムカウンタ41と、このプログラムカウンタ41のカウント値を更新するPC(プログラムカウント)計算ユニット42と、複数の汎用レジスタRxを含む汎用レジスタ群43と、汎用レジスタ群43の汎用レジスタの内容に対して条件判断などの演算を実行する演算回路(ALU)44と、この基本演算ブロックFBiの各種制御情報を格納する制御レジスタ群45を含む。制御レジスタ群45は、演算器(ALU)44の実行結果を格納する制御レジスタ(ステータスレジスタ)45sと、割込コントローラ44およびDMAコントローラ13と通信を行なう出力ポートレジスタ45oおよび入力ポートレジスタ45iを含む。
【0059】
コントローラ22は、さらに、メモリセルマット30に対するアドレスを計算するアドレス計算ユニット46と、このアドレス計算ユニット46により計算されたアドレスを格納して主演算回路20へ与えるアドレスレジスタ群47を含む。このアドレスレジスタ群47は、エントリ内の各データに対するアドレスを生成するアドレスレジスタAxを含む。
【0060】
マイクロ命令メモリ21には、必要とされるシーケンス処理がコード化されたマイクロプログラムが格納される。命令デコーダ40が、このマイクロ命令メモリ21からフェッチしたマイクロ命令をデコードし、コントローラ22内の各モジュールに対する制御信号生成し、また主演算回路20に対する制御信号を生成する。いわゆるファームウェアにっより、高速で必要とされる処理を実行することができる。図6において、命令デコーダ40から、書込/読出回路38に含まれるセンスアンプ/ライトドライバSAWに対する読出/書込制御信号(RW制御)と、演算処理ユニット群35に含まれるALU31に対する実行すべき演算内容を指示するALU制御信号と、ALU間相互接続用スイッチ回路32における接続を制御するスイッチ制御信号を代表的に示す。
【0061】
このコントローラ22には、また汎用レジスタ群43とワークデータメモリ23の間でデータのロード/ストアを行なうためのメモリインターフェイス(I/F)48が設けられる。
【0062】
図1に示すホストCPU(8)は、制御レジスタ群45に含まれるステータスレジスタ45sの格納データにより、コントローラ22の実行状態を監視し、この基本演算ブロックFBiの動作状況を確認する。コントローラ22は、システムバスインターフェイス24を介して、ホストCPU(8)から制御権を手渡されて、この基本演算ブロックFBi内の処理動作を制御する。
【0063】
図7は、図4に示す加算演算処理に対応するマイクロ命令で記述されるマイクロプログラムの一例を示す図である。図7において、マイクロプログラムの行番号の次に、実行されるマイクロ命令を示す。プログラム命令列における“//”は、次の命令列に対する処理内容を規定する見出しである。各命令行に対応して、右側の“//”の次に、対応の命令の処理内容を示すコメントが付される。マイクロ命令として実行されるのは、図7において、行番号の次に示される命令である。
【0064】
“LD Ax,♯imm”命令は、アドレスレジスタ群47に含まれるアドレスレジスタAxに定数値♯immを設定する命令である。
【0065】
“LD Rx,♯imm”命令は、汎用レジスタ群43に含まれる汎用レジスタRxに定数値♯immを設定する命令である。
【0066】
“LD Outport,♯imm”命令は、制御レジスタ群45に含まれる出力ポートレジスタ45oに定数値♯immを設定する命令である。
【0067】
“Set Idle”は、制御レジスタ群45のステータスレジスタ(制御レジスタ)45sに空き状態を示すアイドルビットを設定する命令である。
【0068】
“Inc Ax”命令は、アドレスレジスタAxに対する1加算命令である。
“BNE Rx,Label”命令は、汎用レジスタRxのレジスタ値が0以外の場合、“Label”が示す命令に分岐することを示す分岐命令である。
【0069】
“Add Rx,♯imm”命令は、汎用レジスタRxの格納値に定数値♯immを加する命令である。この加算は、符号付きで実施され、定数値♯immとして負の数を指定することができる。
【0070】
“MemLd Ax”命令は、主演算回路20に対する制御命令であり、アドレスレジスタAxに格納されたアドレスが示すメモリセルマット30のアドレスから演算処理ユニット群35にデータをロードする命令である。このロードされたデータは、ALU31内に含まれるフリップフロップ(またはレジスタ)により保持される。
【0071】
“MemLdAdd Ax”命令は、アドレスレジスタAxの格納値で示されるメモリセルマット30のアドレスからALU31にデータをロードし、このALU31内に保持された値とロードされたデータとの加算を行なう命令である。加算結果、すなわち和(Sum)とキャリー(Carry)情報は、ALU31内のフリップフロップ(レジスタ)に保持される。
【0072】
“MemStSum Ax”命令は、ALU31内の和(Sum)情報を保持したフリップフロップ(レジスタ回路)の内容を、メモリセルマット30内のアドレスレジスタAxが示すアドレス位置に書込む命令である。
【0073】
“MemStCarry Ax”命令は、ALU31内のキャリー(Carry)情報を保持したフリップフロップ(レジスタ回路)の内容を、メモリセルマット30内のアドレスレジスタAxの格納値が示すアドレス位置に書込む命令である。
【0074】
各命令の実行には、1命令サイクルが必要である。ただし、命令行において“||”を挟んで1行に併記される命令は、同一命令サイクルにおいて並列に実行される命令であることを示す。以下、図7に示すプログラムの処理内容を説明する。
【0075】
行番号0においては、単に初期設定のコメントが付されているだけであり、処理は実行されない。行番号1において、出力ポートレジスタ45oに、加算演算処理を実行する開始ビット♯Startがロードされる。これにより、出力ポートレジスタ45oの初期化が実行される。
【0076】
行番号2から行番号4において、アドレスレジスタ群47のアドレスレジスタA0、A1、およびA2に、それぞれ、データaおよびbおよび加算結果cのアドレス位置を示すポインタ♯Apos、♯Bpos、および♯Cposがそれぞれ設定される。
【0077】
行番号5において、汎用レジスタ群43の汎用レジスタR0に、定数値2が格納され、ループ処理を行なう際のループ回数が設定される。このループ処理は、ビットシリアルで処理を行なうため、各加算演算が繰返されることを示す。
【0078】
行番号8において、メモリセルマットにおいてアドレスレジスタA0の位置のビットが選択されて、ALU31にロードされる。このロード動作と同一サイクルにおいて、アドレスレジスタA0のポインタが1増分される。
【0079】
行番号9において、メモリセルマットにおいてアドレスレジスタA1のポインタが示すビットb[i]が選択されてALU31にロードされ、ビットa[i]およびb[i]の加算が実行される。このサイクルにおいて、また、アドレスレジスタA1のポインタ値が1増分される。
【0080】
行番号10において、加算結果Sumが、メモリセルマットのアドレスポインタA2が示すビット位置c[i]へ格納される。このときまた、アドレスレジスタA2のポインタ値が1増分される。
【0081】
行番号11において、汎用レジスタR0の格納値に(−1)が加算され、すなわち、汎用レジスタR0の格納値が1減分され、加算処理が1回行われたことが示される。
【0082】
行番号12において、汎用レジスタR0の格納値が0と異なる場合には、再び行番号7のループラベルAddLoopへ戻る。汎用レジスタR0の格納値が0の場合には、2ビットの加算処理が完了しているため、次の行番号13の命令へ進む。行番号13は、単に以降の処理内容を示すコメント文であり、処理は実行されない。
【0083】
行番号14において、ALU31のキャリーを格納するフリップフロップ(レジスタ)の保持するビットが、メモリセルマットのアドレスレジスタA2のポインタ値c[2]が示す位置へ格納される。
【0084】
行番号15において、再び、以下の処理内容を示すコメント文が付され、待機状態へ遷移する命令が行なわれることが示される。
【0085】
行番号16において、処理が完了したため、出力ポートレジスタ45oに、処理が完了したことを示す整数値Finishを設定し、また行番号17において、ステータスレジスタ45sにアイドルビットを設定する。この行番号16および17の処理により、基本演算ブロックFBiは、外部のホストCPU8等に対して、加算演算処理が終了したことを通知する。
【0086】
図8は、図7に示す行番号8から10におけるアドレス値の更新を示すタイミング図である。まず、アドレス計算ユニット46に対し、初期設定命令シーケンスにより、初期アドレスPOS0が設定される。加算処理ループ実行時において、このアドレス計算ユニット46に格納されたアドレスポインタPOS0がアドレスレジスタAxに設定されて格納され、データの転送が実行される(ロード/ストア)。このとき、またアドレス計算ユニット46において、アドレスポインタが更新され次のアドレスPOS1を指定する。次のサイクルにおいて、アドレス計算ユニット46が更新されたポインタPOS1が、アドレスレジスタAxに転送される。以降、必要な演算処理が完了するまでこの加算処理ループAddLoopのループに従って、アドレス計算ユニット46およびアドレスレジスタAxの格納ポインタが、データ転送と並行して更新される。
【0087】
アドレスレジスタ群4を設け、各演算対象データに対するアドレスポインタApos、Bpos、およびCposをそれぞれ発生しかつ対応のアドレスレジスタに格納することにより、アドレス更新サイクルとデータの転送サイクルを同一サイクルに設定することができ、命令実行に必要なサイクル数を低減することができる。
【0088】
図9は、ALU31の構成の一例を示す図である。図9において、ALU31は、指定された演算処理を行なう算術演算論理回路50と、対応のエントリから読出されたデータを一時的に格納するAフリップフロップ(レジスタ回路)52と、対応のエントリから読出されたデータまたは算術演算論理回路50の演算処理結果データまたはライトドライバへ転送するデータを一時的に格納するXフリップフロップ(レジスタ回路)54と、加減算処理時のキャリーまたはボローを格納するCフリップフロップ(レジスタ回路)56と、算術演算論理回路50の演算処理の禁止を指定するマスクデータを格納するMフリップフロップ(レジスタ回路)58を含む。
【0089】
図6に示すセンスアンプおよびライトドライバSAWは、ビット線対BLPに対応して設けられるライトドライバ60およびセンスアンプ62を含む。ライトドライバ60は、Xフリップフロップ54に格納されたデータをバッファ処理して対応のエントリのメモリセルへ対応のビット線対BLPを介して書込む。センスアンプ62は、対応のエントリのメモリセルから読出されたデータを増幅してAフリップフロップ52またはXフリップフロップ54へその増幅データを内部データ転送線63を介して転送する。Xフリップフロップ54は、内部データ転送線64を介して算術演算論理回路50およびライトドライバ60に結合される。
【0090】
ALU間接続用スイッチ回路32は、ALU31に対して設けられるALU間接続回路65を含む。このALU間接続回路65は、たとえばスイッチマトリックスで構成される。
【0091】
算術演算論理回路50は、加算(ADD)、論理積(AND)、論理和(OR)、排他的論理和(EXOR:一致検出)、反転(NOT)等の演算を実行することができ、その演算内容が、マイクロ命令に基づいてコントローラ22からの制御信号(図6のALU制御)により設定される。Mフリップフロップ58に格納されるマスクデータは、“0”のときに、ALU31の演算処理動作を停止させ、“1”のときに、このALU31の演算処理動作をイネーブルする。この演算マスク機能を利用することにより、仮に全エントリが利用されない場合においても有効エントリに対してのみ演算を実行することができ、正確な処理を行なうことができるとともに、不必要な演算の実行を停止させることにより、消費電流を低減することができる。
【0092】
この算術演算論理回路50において、先の2項加算を行なう場合、全加算器を用いて加算を行ない、最終的にCフリップフロップ56に格納されたキャリーを図7に示す行番号14のマイクロ命令に従ってメモリセルマットを対応のビット位置c[2]へ書込む。加算結果SumがXフリップフロップ54に格納される。
【0093】
以上のように、この発明の実施の形態1に従えば、基本演算ブロックそれぞれにおいてマイクロ命令メモリを設け、このマイクロ命令メモリに格納されたマイクロ命令に従ってデータの転送(ロード/ストア)および演算処理を実行しており、マイクロ命令の変更のみで演算内容を自由に切り換えることができる。
【0094】
また、アドレスレジスタおよびアドレス計算ユニットを設けることにより、データ転送動作と並行してアドレス更新を行なうことができ、演算に必要な命令サイクル数を低減することができ、高速処理を実現することができる。
【0095】
[実施の形態2]
図10は、この発明の実施の形態2に従う基本演算ブロックFBiの構成を概略的に示す図である。この図10に示す基本演算ブロックFBiにおいては、コントローラ22の以下の構成が、先の図6に示す実施の形態1に従うコントローラ22の構成と異なる。すなわち、コントローラ22において、ループ命令実行時ループの開始アドレスを格納する開始アドレスレジスタ70と、ループの終了アドレスを格納する終了アドレスレジスタ72が設けられる。これらの開始アドレスレジスタ70および終了アドレスレジスタ72の格納値は、PC値計算ユニット42へ与えられる。この図10に示すコントローラ22の他の構成は、図6に示すコントローラ22の構成と同じであり、対応する部分には同一参照番号を付し、その詳細説明は省略する。
【0096】
本実施の形態2においては、先の図7に示すマイクロプログラムの行番号11および12に示されるループカウンタの減算処理および分岐処理を、1つの命令で行なうループ命令LOOPを追加する。
【0097】
命令“LOOP Rx,Label”は、次の命令からラベルLabelで示される命令の間を、汎用レジスタRxの格納値で示された回数繰返す命令である。このループ命令LOOPが実行されると、ループ命令の開始アドレスおよび終了アドレスが開始アドレスレジスタ70および終了アドレスレジスタ72にそれぞれ格納される。
【0098】
PC値計算ユニット42においては、プログラムカウンタ41のカウント値と終了アドレスレジスタ72に格納されるアドレス値とを比較する。このプログラムカウンタ41のカウント値が終了アドレスと一致すると、ループカウンタとして指定された汎用レジスタRxの格納値を1減分する。減算結果が0でない場合には、次のプログラムカウント値として開始アドレスレジスタ70に格納された開始アドレスを設定する。この汎用レジスタRxの格納値が0の場合には、通常の処理と同様、プログラムカウンタ41のカウント値を1増分して次のアドレスの命令を実行する。
【0099】
図11は、この発明の実施の形態2に従うループ命令LOOPを用いるマイクロプログラムの一例を示す図である。この図11に示すマイクロプログラムは、図7に示すマイクロプログラムと同じ処理を実行する。
【0100】
図11に示すように、行番号5の命令により、汎用レジスタR0に定数2が格納され、ループ回数が指定される。行番号7においてループ命令“LOOP R0,AddLoopLast”が実行される。この場合、ラベル“AddLoopLast:”で示される命令、すなわち第11行の命令MemStSum迄の命令列を、汎用レジスタR0に格納された値(2)が示す回数繰返すことが指定される。この行番号7から行番号10の命令列が、図7に示すマイクロプログラムの命令列と異なる。
【0101】
図12は、ループ命令LOOPの処理内容を示す図である。以下、図12を参照して、このループ命令の操作内容について説明する。以下の説明においては、図11に示すプログラムの行番号を参照する。
【0102】
行番号0から5の命令群においては、先の図7に示す処理と同様の処理が行なわれ、出力ポートレジスタ45oの初期設定およびアドレスレジスタA0−A2および汎用レジスタR0の初期設定が行なわれる。汎用レジスタRx(R0)に、ループ回数2が設定される(ステップS1)。
【0103】
次いで、行番号7において、ループ命令が実行されると(ステップS2)、このループの開始アドレス(行番号8の命令MemLdのアドレス)およびループの終了アドレス(行番号11の命令MemStSumのアドレス)が開始アドレスレジスタ70および終了アドレスレジスタ72にそれぞれ格納される(ステップS3)。このループ命令に到達するまでは、判定ブロックS2においてループ命令が実行されるのを待つ。
【0104】
ループ開始および終了アドレスが格納された後、プログラムカウンタのポインタPCが増分されて(ステップS4)、次の行番号8の命令が実行される(ステップS6)。これにより、アドレスレジスタA0に格納されたアドレスに対応するメモリセルデータがALUにロードされ、またアドレスレジスタA0のポインタが1増分される。
【0105】
このステップS6の命令実行と並行して分岐判定がステップS5以降において実行される。いま、PC値計算ユニット42のカウンタ値は、終了アドレスに等しくないため(ステップS5)、プログラムカウンタ41のカウント値PCが1増分され(ステップS4)、次の行番号9の命令MemLdAddが実行される(ステップS6)。この行番号9の命令アドレス(プログラムカウンタ41のカウント値)は、ループ終了アドレスに等しくないため、プログラムカウンタ41のカウント値が1増分されて、次の行番号10のラベルが指定する行番号11の命令が実行される(ステップS4およびS6)。
【0106】
この行番号11の命令のアドレス(プログラムカウンタ41のカウント値)が、終了アドレスレジスタ72に格納される終了アドレスと等しいため、ステップS5における判断結果に従って、汎用レジスタR0に格納されたレジスタ値は1減分される(ステップS7)。
【0107】
次いで、このレジスタ格納値Rxが0に等しいか否かの判断が行なわれる(ステップS8)、まだ1回目であるため、PC値計算ユニット42は、プログラムカウンタ41のカウント値PCを開始アドレスレジスタ70に格納された開始アドレスに設定し(ステップS9)、再びステップS6へ戻る。以降、ステップS4からステップS7の動作が繰返される。
【0108】
ステップS8において、行番号11の命令完了後、汎用レジスタRx(R0)のレジスタ値が0となると、ループ処理が完了したと判定され、PC値計算ユニット42はプログラムカウンタ11のカウント値を1増分する(ステップS10)。これにより、ループ処理が終了し、次の行番号13の命令が行なわれ、キャリーがビット位置c[2]へ書込まれる。
【0109】
したがって、このループ命令LOOPにおいてループ命令自体は、1回だけ実行され、すなわち1回だけループ状の分岐が行なわれ、第8行から第11行までの3命令がループ処理として実行される。
【0110】
なお、この終了アドレスの格納としては、行番号10のラベルAddLoopLastに到達したときに、次の命令のアドレスが、終了アドレスレジスタ72に格納されてもよい。ラベル到達時に終了アドレスを格納しても、この行番号10のラベルにより比較ステップS5が実行され、その実行結果に従って行番号11または行番号7への分岐が判定されるため、正確な分岐処理を行なうことができる。
【0111】
このループ命令LOOPを追加することにより、図7に示すマイクロプログラムにおける行番号11および12のように、ループ分岐判定のために主演算回路が動作待機状態となるサイクルをなくすことができ(行番号9の命令実行と並行して、ループ分岐判定処理が行なわれる)、最小サイクル数でループ処理を行なうことができる(図12に示すフロー図においては、ステップS5からステップS8が、命令実行ステップS6と並行して実行される)。
【0112】
以上のように、この発明の実施の形態2に従えば、ループ演算命令を準備しているため、主演算回路が非動作状態となる期間を低減することができ、高速処理が実現される。
【0113】
[実施の形態3]
図13は、この発明の実施の形態3に従う基本演算ブロックFBiの構成を概略的に示す図である。図13において、主演算回路20において、2つのメモリセルマット30Aおよび30Bが設けられる。これらのメモリセルマット30Aおよび30Bそれぞれに対して、読出/書込回路38Aおよび38Bが設けられる。メモリセルマット30Aおよび30Bは、同一構成を有し、それぞれ複数のエントリERYに分割される。読出/書込回路38Aおよび38Bにおいて、エントリERYそれぞれに対応して、センスアンプおよびライトドライバSAWが設けられる。
【0114】
これらのメモリセルマット30Aおよび30Bは、互いに分離されたビット線対を介して演算処理ユニット35に含まれる対応のALU31に結合される。したがってこれらのメモリセルマット30Aおよび30Bは、個々にアクセスが可能である。主演算回路20においては、また、先の実施の形態1および2と同様、演算処理ユニット35のALU31間の接続経路を切換えるためのALU間相互接続用スイッチ回路32が設けられる。
【0115】
メモリセルマット30Aおよび30Bの動作を制御するために、アドレス計算ユニット46Aおよび46Bとアドレスレジスタ群47Aおよび47Bが設けられる。アドレス計算ユニット46Aおよびアドレスレジスタ群47Aにより、メモリセルマット30Aに対するアドレスが生成され、アドレス計算ユニット46Bおよびアドレスレジスタ群47Bにより、メモリセルマット30Bに対するアドレスが生成される。メモリセルマット30Aおよび30Bに含まれるメモリセルは、後に説明するように、デュアルポートSRAMメモリセルであり、書込ポートと読出ポートとを有し、これらのアドレスレジスタ群47Aおよび47Bは、各々、書込アドレスおよび読出アドレスを別々に生成する。
【0116】
命令デコーダ40は、演算処理ユニット35における演算処理内容を規定するALU制御信号を生成し、またALU間相互接続スイッチ回路32の接続経路を設定するスイッチ制御信号を生成する。この命令デコーダ40は、読出/書込回路38Aおよび38Bに対し、書込制御信号(ライト制御)を生成する。メモリセルは、SRAMセルであり、読出/書込回路においてセンスアンプは、アクセス時センスアンプおよびライトドライバSAWに含まれるセンスアンプが常時活性化され、ライトドライバの活性/非活性のみが、命令デコーダ40からのライト制御信号に従って行なわれる。
【0117】
この図13に示すコントローラ22の他の構成は、先の実施の形態2における図10に示すコントローラ22の構成と同じであり、対応する部分には同一参照番号を付し、その詳細説明は省略する。
【0118】
図14は、図13に示すメモリセルマット30Aおよび30Bに含まれるメモリセルMCの構成の一例を示す図である。図14において、メモリセルMCは、書込ポートと読出ポートとが別々に設けられたデュアルポートメモリセル構造を有する。このメモリセルMCに対しては、読出ワード線RWLおよび書込ワード線WWLが設けられ、また読出ビット線RBLおよび/RBLと書込ビット線WBLおよび/WBLとが設けられる。読出ポートは、読出ワード線RWLの信号電位に応答してストレージノードSN1およびSN2をそれぞれ読出ビット線RBLおよび/RBLに接続するNチャネルMOSトランジスタNQ5およびNQ6を含む。書込ポートは、書込ワード線WWL上の信号電位に応答してストレージノードSN1およびSN2をそれぞれ書込ビット線WBLおよび/WBLに接続するNチャネルMOSトランジスタNQ7およびNQ8を含む。
【0119】
メモリセルMCのデータ記憶部は、先の実施の形態1において示したものと同様、負荷PチャネルMOSトランジスタPQ1およびPQ2と、ドライブ用NチャネルMOSトランジスタNQ1およびNQ2を含む。
【0120】
この図14に示すデュアルポートメモリセル構造を利用することにより、ビットシリアル態様でデータの演算処理を行なう場合、書込および読出用すなわちストアおよびロードを同時に行なうことができる。演算結果が書込まれる領域は、演算対象のデータが格納される領域とは別に設けられており、選択メモリセルにおいて書込データおよび読出データの衝突の問題は生じず、通常のマルチポートメモリにおけるアドレスアービトレーションの問題は生じない。
【0121】
図15は、図13に示すメモリセルマット30Aおよび30BのセンスアンプおよびライトドライバSAWおよびALU31の構成を概略的に示す図である。図15において、読出/書込回路38Aにおいては、センスアンプおよびライトドライバSAWは、書込ビット線対WBLPAに結合されるライトドライバ60Aと、読出ビット線対RBLPAに結合されるセンスアンプ62Aを含む。読出/書込回路38BにおいてセンスアンプおよびライトドライバSAWは、書込ビット線対WBLPBに結合されるライトドライバ60Bと、読出ビット線対RBLPBに結合されるセンスアンプ62Bを含む。
【0122】
この図15に示すように、メモリセルマット30Aおよび30Bは、演算処理ユニット35(ALU31)を中心として、対称的に配置される。メモリセルマット30Aおよび30Bにおけるビット線対の配線レイアウトを容易とする。
【0123】
ALU31は、先の図9に示すALU31の構成と異なり、センスアンプ62Aの出力データを格納するAフリップフロップ52Aと、センスアンプ62Bの出力データを格納するAフリップフロップ52Bを含む。Xフリップフロップ54は、ライトドライバ60Aおよび60Bに共通に結合される。算術演算論理回路50に対しては、Aフリップフロップ52Aおよびおよび52Bの格納データが演算対象データとして与えられ、演算結果がXフリップフロップ54に格納される。
【0124】
このALU31においては、また、キャリーまたはボローを格納するCフリップフロップ56およびこのALU31の活性/非活性を示すマスクデータを格納するMフリップフロップ58が設けられる。
【0125】
この図15に示すALU31を利用する場合、センスアンプ62Aおよび62Bからのデータのラッチと並行して、Xフリップフロップ54から、ライトドライバ60Aまたは60Bを介して演算結果データを書込むことができる。
【0126】
図16は、この主演算回路20に含まれるメモリセルマット30Aおよび30Bの具体的配置を概略的に示す図である。図16に示す主演算回路20においては、演算処理ユニット35の両側に、メモリセルマット30Aおよび30Bが配置される。これらのメモリセルマット30Aおよび30Bが、同一構成を有し、それぞれにおいてデータビット幅がnビットのエントリERYがm個配置される。
【0127】
ALU31は、メモリセルマット30Aおよび30Bの対応のエントリのデータについて指定された演算処理を行なう。2項演算を、ALU31がそれぞれ行なう場合、メモリセルマット30Aおよび30Bに各項の演算対象データを格納し、その演算処理結果を、メモリセルマット30Aおよび30Bの一方に格納する。
【0128】
メモリセルMCが、デュアルポートメモリセルであり、このALU31に対する演算対象データの転送(ロード)と、演算結果データの転送(ストア)を並行して行なうことができる。
【0129】
図17は、この発明の実施の形態3に従う2項加算演算実行のためのマイクロ命令プログラムの一例を示す図である。以下、図17を参照して、この発明の実施の形態3に従う基本演算ブロックの処理について説明する。
【0130】
この図17に示すマイクロ命令プログラムにおいては、行番号0から5において、先の実施の形態2と同様の処理が実行される。すなわち、行番号2から行番号4の命令“LD Ax,♯imm”により、アドレスポインタA0−A2に、それぞれアクセスすべきデータの先頭アドレス(データの最下位ビットのアドレス)が設定される。一例として、アドレスレジスタA0には、メモリセルマット30Aに対するアドレスが設定され、アドレスレジスタA1には、メモリセルマット30Bに対するアドレスが設定される。演算後のデータcに対するアドレスを格納するアドレスレジスタA2に、メモリセルマット30Aまたは30Bの一方の先頭アドレスを設定する。
【0131】
行番号5の命令“LD R0,♯2”により、制御レジスタR0に、ループ回数(2回)が設定される。
【0132】
次いで、行番号7において、ループ命令が実行され、このループ命令の開始アドレス(行番号8の命令のアドレス)に対応するアドレスおよび行番号9の命令に対するアドレスがそれぞれ開始アドレスおよび終了アドレスとして格納される。この場合、マイクロ命令メモリの同一アドレスに、これらの行番号8および9のラベルおよび命令が格納される場合には、開始アドレスおよび終了アドレスは同一アドレスとなる。
【0133】
この行番号9の命令群においては、加算、加算結果の格納およびアドレスの増分が並行して実行される。すなわち、この行番号9の命令に従って、アドレスレジスタA0の格納するアドレスのメモリセルが読出されて対応のALUに転送され、また、これと並行して、アドレスレジスタA1に格納されるアドレスのメモリセルのデータが、対応のメモリセルマットから読出されて対応のALUに転送される。この転送動作時においては、メモリセルのリードワード線RWLが選択状態へ駆動され、読出ビット線RBLおよび/RBLを介して対応のALUのAフリップフロップ52Aおよび52Bにデータが転送される。
【0134】
この転送動作と加算が行なわれた後、その加算結果が同一サイクル内で、アドレスレジスタA2が示すアドレス位置に格納される。この書込時においては、書込ワード線WWLが選択状態へ駆動され、書込ビット線WBLおよび/WBLを介してデータの転送が行なわれる。このロード、加算およびストアが、1マシンサイクル内において前半サイクルでロードおよび加算が行なわれ後半サイクルで、この加算結果(Sum)の転送が行なわれればよい。また、これに代えて、加算結果の格納は、演算対象データのロードの次のサイクルにおいて行われても良い。この場合、次の演算対象データのロードとストアが並行して行われる。
【0135】
このロード、加算およびストア動作実行それぞれと並行して、アドレスレジスタA0、A1およびA2のポインタ値が1増分される。
【0136】
ループ命令LOOPを実行しており、先の図12に示すフローと同様の処理が行なわれ、行番号9の命令は、ループ命令の終了アドレスであり、レジスタR0の格納値が1減分されて、そのレジスタ格納値が0と等しいかの判定が行なわれる。1回目の演算処理時においては、制御レジスタR0の格納値は1であり、再び、行番号8に戻って、ラベルAddLoopLastで始まる命令が実行される。
【0137】
2回目のロード、加算およびストア演算が完了すると、再び、汎用レジスタR0の格納値が減分されて、レジスタ値が0でないかの判定が行なわれる。この汎用レジスタR0の格納値はこのときには0となり、ループ命令の実行シーケンスが完了し、プログラムカウンタのカウント値が1増分され、行番号11の命令が実行され、キャリーが、アドレスレジスタA2が指定するメモリセル位置へ格納される。
【0138】
以降、行番号12から14において、先の実施の形態1および2と同様の処理が行なわれ、制御レジスタへの制御ビットの格納により、加算演算終了の通知が外部のホストCPU等へ行なわれる。
【0139】
アドレスレジスタ群47Aおよび47Bをそれぞれメモリセルマット30Aおよび30Bに対して別々に設けることにより、この行番号2から行番号4に示されるロード命令を、1サイクルで並行して実行することができる(図17に示すプログラムシーケンスにおいては、これらが順次格納されるように示す)。したがって、このアドレスポインタの設定に要する動作サイクル数を低減することができ、処理サイクル数を低減することができる。これらのアドレスレジスタA0−A2にポインタを設定する場合、マイクロ命令として、行先アドレスにアドレスレジスタA0、A1およびA2をそれぞれ指定し、それぞれに格納されるポインタ値を、制御フィールドに格納し、演算すべき実行命令“LD”をソースオペランドフィールドに格納することにより、容易に実現される。
【0140】
このデュアルポートメモリセルを利用することにより、ループ命令においては、1サイクルで、ロード、加算、およびストアを実行することができ、先の実施の形態2におけるループ命令を利用する処理に比べて、演算処理サイクル数が低減され、処理性能として、3倍の性能のループ処理を実現することができる。
【0141】
なお、このデュアルポートメモリセルが利用される場合、メモリセルマット30Aまたは30Bのみが利用される場合には、読出アドレス用のレジスタと書込アドレス用のレジスタとそれぞれのアドレス計算ユニットを設けることにより、1つのメモリセルマットに対し、ロードとストアを並行して実行することができる。
【0142】
以上のように、この発明の実施の形態3に従えば、メモリセルマットを複数のマットに分割し、各分割マットもデュアルポートメモリセルを配置しており、また各メモリセルマットに対してアドレス計算ユニットおよびアドレスレジスタ群を設けており、ロード、演算およびストア操作を同一サイクルで実行することができ、高速処理を実現することができる。
【0143】
なお、データのロード、演算およびストアを同一サイクルで実行する場合、例えば、ALU内のフリップフロップをすべてスルー状態に設定して与えられたデータをすべてその出力部を介して転送する構成を利用する。演算処理をスタティックに実行することにより、転送データ(ロードデータ)に対してスタティックに演算処理を行なって演算処理後のデータをライトドライバを介して対象のメモリセルへ転送して書込むことができる。
【0144】
[実施の形態4]
図18は、この発明の実施の形態4において一例として実行される演算処理の内容を概略的に示す図である。この発明の実施の形態4においては、画像データPに対して、フィルタ処理を実行する。すなわち、図18に示すように、注目画素P(i,j)に対し上下左右の隣接画素P(i−1,j)、P(i+1,j)、P(i,j−1)、およびP(i,j+1)を用いて、この図18に示すフィルタマトリクスを適用して、フィルタ後の画素B(i,j)を生成する。すなわち、次式で示されるフィルタ処理を行なって、エッジ強調画像を求める。
【0145】
B(i,j)
=5・P(i,j)−P(i−1,j)−P(i+1,j)
−P(i,j−1)−P(i,j+1)
0≦i<N−1、
0≦j<M−1
ここで、NおよびおよびMは、1フレームの画像データの画素行および画素列の数を示す。したがって、このエッジ強調フィルタ処理においては、注目画素P(i,j)に対する処理として、注目画素データに加えて隣接4画素のデータが必要となる。
【0146】
図19は、この発明の実施の形態4における信号処理システムの画像データのフィルタ処理に関連する部分の構成を概略的に示す図である。図19において、システムLSI2においては、2つの基本演算ブロックFBAおよびFBBが用いられる。これらの基本演算ブロックFBAおよびFBBは、DMAコントローラ13に対し、DMA転送要求DMARQを出力する。このDMAコントローラ13は、DMA転送要求発生時、外部バスコントローラ14を介して外部システムバス3に結合される大容量メモリ(SDRAM)4のデータを読出し、内部システムバス7を介して基本演算ブロックFBAまたはFBBに必要なデータを転送する。
【0147】
このSDRAM4において、処理対象の画像データが格納される。一例として、1フレームの画像データのサイズとして、VGAサイズ(ビデオ・グラフィックス・アレイ)を考える。このVGAでは、640・480画素により1フレームが構成される(M=640、N=480)。演算ブロックFBAおよびFBBは、それぞれ、3行(ライン)の画素(640x3=1920画素)のデータを処理することができると仮定する。この画像データを、SDRAM4に格納し、基本演算ブロックFBAおよびFBBを、パイプライン態様で動作させ、高いスループットでフィルタ演算処理を実行する。
【0148】
このフィルタ演算処理の基本演算ブロックとSDRAM4とのデータ転送のためのマイクロ命令列は、ホストCPU8により実行される。フィルタ処理用のマイクロプログラムは、各基本演算ブロックFBAおよびFBBのマイクロ命令メモリに格納され、対応のコントローラ(21)の制御の下にエッジ強調フィルタ演算処理が実行される。
【0149】
図20は、この発明の実施の形態4に従う信号処理システムのホストCPUの処理シーケンスを示すフロー図である。以下、図20を参照して、この図19に示す信号処理システムの動作について説明する。
【0150】
ステップST1:
基本演算ブロックFBAに対して3行の画素に対するフィルタ演算のためのマイクロプログラムが、対応のマイクロ命令メモリ(21)に設定される。このマイクロプログラムの設定後、フレームの第0行から第2行の画素データを、SDRAM4から外部バスコントローラ14および内部システムバス7を介して基本演算ブロックFBAのメモリセルマットに転送する。この転送動作が完了すると、基本演算ブロックFBAの演算を起動し、その演算ブロックFBAにおいて、そのマイクロ命令メモリに格納されたマイクロプログラムに従ってフィルタ演算処理が開始される。この転送およびデータのメモリセルマットの格納の完了は、たとえば制御レジスタ群45に含まれるステータスレジスタに格納されるビット値をモニタすることにより参照される。たとえば、図6に示す入力ポートレジスタ45iにデータ転送時ビットがセットされ、この基本演算ブロックFBAにおける演算の待ち合せが指定されてもよい。
【0151】
ステップST2:
基本演算ブロックFBAにおいて、マイクロ命令メモリに格納されたマイクロプログラムに従ってフィルタ演算処理が実行される。基本演算ブロックFBAにおいて第1行の画素に対するフィルタ演算処理が実行されている間に並行して、ホストCPU8は、基本演算ブロックFBBに対し、同様、3行の画素に対するフィルタ演算のためのマイクロプログラムをマイクロ命令メモリへ格納し、また第239行から第241行の画素データをこの基本演算ブロックFBBへSDRAM4から転送し、対応のメモリセルマットに格納する。
【0152】
基本演算ブロックFBAにおいては第1の行の画素に対するフィルタ演算処理が完了すると、DMAコントローラ13に対しDMA転送要求DMARQを発行する。DMA転送要求DMARQは、例えば、制御レジスタ群に含まれる出力ポートレジスタにビットを立てることにより発行される。
【0153】
ステップST3:
DMAコントローラ13は、このこの基本演算ブロックFBAからのDMA転送要求を受けると、基本演算ブロックFBAからの演算結果データをSDRAM4に転送し、この転送完了後、第3行の画素データを基本演算ブロックFBAに転送する。基本演算ブロックFBAにおいては、この第0行の画素データ格納領域に、新たに転送された第3行の画素データを順次格納する。これにより、処理の完了した第0行の画素データが、新たな第3行の画素データで置換される。
【0154】
また、基本演算ブロックFBAとSDRAM4との間のDMAモードでのデータ転送と並行して、基本演算ブロックFBBにおいて第240行の画素データに対するフィルタ演算が実施される。このフィルタ演算処理完了後、基本演算ブロックFBBは、その出力ポートレジスタを介してDMA転送要求DMARQを発行する。
【0155】
ステップST4:
基本演算ブロックFBAは、第3行の画素データの転送完了後、第2行の画素に対してフィルタ演算を実行する。一方、基本演算ブロックFBBにおいては、DMA転送要求発行に従って、DMAモードで、第240行の画素についてのフィルタ演算結果をSDRAM4に転送し、その転送完了後、SDRAM4から次の第242行の画素データを受ける。この第242行の画素データは、先に格納された第239行の画素データと置換される。
【0156】
ステップST5:
基本演算ブロックFBAにおいて第2行の画素データに対するフィルタ演算処理完了後、DMA転送要求を発行し、DMAコントローラの制御の下に、DMAモードで、基本演算ブロックFBAからSDRAM4に対して、第2行の画素のフィルタ演算結果データが転送される。この転送完了後、SDRAM4は、第4行の画素データを基本演算ブロックFBAに転送する。この新たに転送される第4行の画素データは、基本演算ブロックFBAのメモリセルマットの第1行の画素データ格納領域に格納される。
【0157】
一方、基本演算ブロックFBBにおいては、転送された画素データを用いて第241行の画素に対するフィルタ演算処理を実行する。このフィルタ演算処理完了後、DMA転送要求DMARQを発行する。
【0158】
以降、同様の処理がステップST6以降繰返し交互に実行される。
すなわち、ステップST5からステップST481において、ステップST3およびST4の処理が、対象画素ラインを1ずつ増分しつつ239回繰返される。ステップST481の処理完了時において、1画面の画素に対するフィルタ演算処理が完了する。
【0159】
上述のように、DMA転送および演算処理を、基本演算ブロックFBAおよびFBBにおいて交互に実行することにより、システム全体として、効率的に演算処理を実行することができる。
【0160】
図21は、この発明の実施の形態4に従う信号処理システムの信号処理シーケンスを模式的に示す図である。図21において、基本演算ブロックFBAおよびFBBにおいて、3ラインの画素についてのエッジ強調フィルタを行なうマイクロ命令がマイクロ命令メモリ21に格納される。コントローラ22は、このマイクロ命令メモリ21に格納されるマイクロプログラムに従って演算処理を実行する。
【0161】
SDRAM4においては、まずホストCPUの制御の下に、3ラインの画素データが、基本演算ブロックFBAおよびFBBのメモリセルマット30へそれぞれ格納する。次いで、演算処理ユニット35およびALU間接続用スイッチ回路(ALUスイッチ)20を用いて基本演算ブロックFBAおよびFBBが、各々、対応のコントローラ22の制御の下に演算処理を実行する。
【0162】
基本演算ブロックFBAおよびFBBは、それぞれ3ラインのエッジ強調フィルタ処理が1行の画素について終了すると、DMA転送モードDMA3およびDMA4に従って、その1ラインのフィルタ演算処理後の画素データをSDRAM4へ転送する。一方、このときまた、SDRAM4からは、次の処理前の画素データの1ラインが、DMA転送モードDMA1およびDMA2に従って基本演算ブロックFBAおよびFBBにそれぞれ転送されて、不用ラインの画素データとの置換が行なわれる。したがって、メモリセルマット30において3ライン(行)の画素データを格納して、フィルタ演算処理が実行される。
【0163】
図22は、このDMA転送時のメモリセルマットのアドレスポインタの変化を示す図である。メモリセルマット30は、一例として4つの領域MA−MDに分割される。分割領域MDは、作業領域であり、中間値を格納する領域として利用される。分割領域MA−MCに、それぞれ異なる行の画素データが格納される。図22(a)に示すように、初期状態時においては、分割領域MA、MBおよびMCの初期アドレスポインタがそれぞれRP0、RP1およびRP2に設定される。この分割領域MA、MBおよびMCには、それぞれ第0行、第1行および第2行の画素データが格納される。アドレスポインタRP1が、フィルタ演算処理対象の画素データの領域を指定し、アドレスポインタRP0が、フィルタ処理対象の画素の上の行の画素の領域を示し、ポインタRP2が、フィルタ演算処理対象の画素ラインの下のラインの画素領域を示す。したがって、この図22(a)においては、ポインタRP1が指定する分割領域MBに格納される画素データに対してフィルタ演算処理が実行される。
【0164】
DMA転送モード時においては、書込ポインタWPが分割領域MAを指定し、転送ポインタTPが、分割領域MBを指定する。分割領域MBに、フィルタ演算処理後のデータが格納されており、この転送ポインタTPに従って、分割領域MBのフィルタ演算後の画素データが転送される。一方、書込ポインタWPが指定する領域MAに対し次の第3行の画素データが格納される。したがって、この転送完了時において、図22(b)に示すように、処理対象画素を指定するポインタRP1が、分割領域MCを示し、上側ライン画素指定ポインタRP0が分割領域MBを示し、下側ライン画素領域指定ポインタRP2が分割領域MAを示す。これにより、分割領域MCに格納された第2行の画素データについてフィルタ演算処理が実行される。
【0165】
この第2行の画素データのフィルタ演算処理実行完了後、転送ポインタTPは、分割領域MCを示しており、書込ポインタWPは、分割領域MBを示す。したがって、この場合には、分割領域MCに格納された第2行の画素データ(フィルタ演算処理後)が転送され、分割領域MBに次の行の第4行の画素データが格納される。この格納後、図22(c)に示すように各ポインタがシフトされ、処理対象領域ポインタRP1が、分割領域MAを示し、上側ライン画素領域指定ポインタRP0が分割領域MCを示し、下側ライン画素領域指定ポインタRP2は分割領域MBを示す。転送ポインタTPがまた分割領域MAを示し、書込ポインタMBが、分割領域MBを示す。したがって、この状態では、ポインタRP1が示す分割領域MAの第3行の画素に対してフィルタ演算実行され、フィルタ演算処理完了後のデータが、分割領域MAに格納される。演算処理完了後、転送ポインタTPに従って分割領域MAの第3行のフィルタ演算後の画素のデータが転送されてSDRAMに格納され、一方、書込ポインタWPが示す分割領域MBに、次の行の第4ラインの画素データが格納される。
【0166】
この転送完了後、再びポインタRP0−RP2およびTPおよびWPがシフトし、処理対象領域指定ポインタRP1が分割領域MBを示し、上側ライン画素領域指定ポインタRBP0が、分割領域MAを示し、下側ライン画素領域指定ポインタRP2が分割領域MCを示す。転送ポインタTPが、分割領域MBを示し、書込ポインタWPが、分割領域MCを示す。したがって、この図22(d)に示すポインタの位置は、図22(a)に示すポインタの位置と同じである。したがって、これらのポインタRP0−RP2、TPおよびWPを順次各処理ごとに分割領域のサイズ分シフトすることにより、容易にデータの書込、転送および処理結果の格納を行なうことができる。
【0167】
このアドレスポインタの設定は、例えば、汎用レジスタを用い、この各レジスタ内容を順次マイクロプログラム命令の1つの3ラインのエッジ強調フィルタ処理完了時に、それぞれシフトする命令により実現される。
【0168】
なお、この図22(a)−(d)に示すポインタのシフト構成において、転送ポインタTPは、固定された分割領域MDを常時指定し、この分割領域が、常にフィルタ演算処理後の画素データの格納領域として利用されてもよい。転送ポインタTPの制御が簡略化される。
【0169】
次に、エッジ強調フィルタ演算処理の手順としては、種々の処理フローを考えることができる。例えば次の処理フローを考えることができる。処理対象の画素データP(i,j)を5倍する演算処理は、画素データP(i,j)の全ビットを2ビット上位ビット方向にシフトして、図22に示す分割領域MDに格納することにより、4・P(i,j)が算出される。次いで、ポインタRP1が指定する領域に格納された画素データP(i,j)と4・P(i,j)の加算処理を行ない、加算結果を画素データP(i,j)の格納領域に格納する。これにより、5・P(i,j)の乗算処理が実現される。
【0170】
次いで、同一列の画素P(i−1,j)およびP(i+1,j)の加算を行ない、分割領域MDにデータP(i−1,j)+P(i+1,j)を格納する。次いでこの5・P(i,j)から、分割領域MDに格納されたデータを減算する。減算処理の場合には、2の補数演算を行なうため、まず分割領域MDに格納されたデータをビット値をすべて反転し、次いで1を加算する。−{P(i−1,j)+P(i+1,j)}=A(i,j)が生成される。次いで、これらを加算することにより、5・P(i,j)−A(i,j)が生成される。
【0171】
次いで、隣接列の画素データを減算する場合、まずALU間接続用スイッチ回路20により、隣接列のデータを転送するようにALUの経路を切換える。これにより、右側または左側の画素の減算が行なわれ、次いで再びALUスイッチ回路20の接続経路を切換えて、別の隣接列の画素との減算を行なう。これらの一連の処理により、前述のフィルタ演算処理を行なってフィルタ演算処理後の画素データを求めることができる。これらの一連の処理により、ビットシリアル態様で複雑なフィルタ演算処理を実行することができる。
【0172】
この接続経路の切換および各演算シーケンスは、すべてマイクロ命令メモリに格納されるマイクロプログラムにより規定される。
【0173】
以上のように、この発明の実施の形態4に従えば、複数の基本ブロックと外部の大容量メモリとの間で、DMAモードでデータ転送を行ない、データ転送と演算処理とをパイプライン態様で実行しており、大容量のデータを高速で演算処理することができる。
【0174】
[実施の形態5]
図23は、この発明の実施の形態5に従う主演算回路20の具体的構成の一例を示す図である。主演算回路20において、メモリセルマット30に配列されるメモリセルMCは、シングルポートSRAMセルである。メモリセル行それぞれに対応してワード線WLが配置され、メモリセル列それぞれに対応してビット線対BLPが配置される。メモリセルMCは、これらのビット線対BLPとワード線WLの交差部に対応して配置される。ワード線WLには、対応の行のメモリセルMCが接続され、ビット線対BLPには、対応の列のメモリセルMCが接続される。
【0175】
エントリERYは、ビット線対BLPそれぞれに対応して設けられ、図23に示すメモリセルマット30においては、ビット線対BLP0からBLP(m−1)それぞれに対応してエントリERY0−ERY(m−1)が配置される。ビット線対BLPが対応のエントリERYと対応のALU31との間のデータ転送線として利用される。
【0176】
メモリセルマット30のワード線WLに対して、コントローラ22からのアドレス信号またはシステムバスI/F24からのアドレス信号(および制御信号)に従って、演算対象のデータビットが接続されるワード線WLを選択状態へ駆動するロウデコーダ74が設けられる。ワード線WLには、エントリERY0−ERY(m−1)の同一位置のメモリセルが接続されており、ロウデコーダ74により、エントリERY0−ERY(m−1)において同一位置のデータビットを選択する。
【0177】
演算処理ユニット35においては、ALU31がビット線対BLP0−BLP(m−1)に対応して配置される。
【0178】
演算処理ユニット群35とメモリセルマット30との間に、データのロード/ストアを行なうための読出/書込回路38が設けられる。この読出/書込回路38は、ビット線対BLP0からBLP(m−1)各々に対して設けられるセンスアンプおよびライトドライバをそれぞれ含むセンスアンプ群70とライトドライバ群72を含む。
【0179】
読出/書込回路38に対して、システムバスI/F24を介して外部とのデータの受渡しを行なう入出力回路76が設けられる。この入出力回路76により、メモリセルマット30と内部データバスとの間でのデータ転送が行なわれる。メモリセル回路76のデータの入出力ビット幅は、システムバスI/F24のデータビット幅に応じて設定される。
【0180】
入出力回路76におけるデータビット幅と1つのワード線WLに接続されるエントリのビット幅(m)との調整を行なうためにカラムデコーダ78が設けられる。このカラムデコーダ78からの列選択線CLにより、システムバスI/F24のバス幅に応じたビット線対(センスアンプまたはライトドライバ)が選択される。カラムデコーダ78には、システムバスI/F24から与えられるアドレス信号のうちの下位ビットが与えられる。この下位ビットの数は、システムバスI/F24のバス幅に応じて適当に定められる。
【0181】
列選択線CLにより選択されたエントリが入出力回路76に接続され、システムバスI/F24との間でデータの受渡しが行なわれる。これにより、システムバスI/F24を介してメモリセルマット30に対するデータのアクセスを行なうことができる。
【0182】
図24は、この発明の実施の形態5に従う主演算回路のCPUアドレス割当の一例を示す図である。この図24に示す構成においては、一例として、メモリセルマット30は、64個のエントリERY0−ERY63に分割される。ロウデコーダ74へ与えられる上位アドレスのビット数は、このメモリセルマット30に含まれるワード線の数(エントリのビット幅)に応じて決定される。
【0183】
読出/書込回路38の領域において、入出力回路76に結合される内部データ線IO0−IO3が配置される。入出力回路76は、4ビットデータを転送する。この場合、カラムデコーダ78に対しては、4ビットの下位アドレスが与えられる。エントリERY0−ERY3に対しては、列アドレス“0”が割当てられ、エントリERY4−ERY7に対し列アドレス“1”が割当てられる。以降、同様にしてエントリERY60(図示せず)からエントリERY63に対して列アドレス“f”(16進)が割当てられる。
【0184】
したがって、カラムデコーダ78は、1/16選択を行なっており、列選択線CL0の選択時には、エントリERY0−ERY3が選択され、列選択線CL1の選択時には、エントリERY4−ERY7が選択される。同様、列選択線CL15の選択時においては、エントリERY60からERY63が選択される。
【0185】
上位アドレス(たとえば“0xx”)に従って、ロウデコーダ74によりワード線が選択される。
【0186】
カラムデコーダ78を用いて、入出力回路76の入出力するデータ転送ビット数をシステムバスI/F24のビット幅と同じとすることにより、外部のホストCPUまたはDMAコントローラが、このメモリセルマット30内のデータにアクセスすることができる。
【0187】
この場合、外部からのアクセス可能なデータは、複数のエントリにまたがる同一ビット位置のデータである。ビットシリアル態様で演算処理を実行する場合、したがって、1つのデータの各ビットが同一エントリに格納されるようにデータ列の並び替えが行なわれる。
【0188】
以上のように、この発明の実施の形態5に従えば、入出力回路のビット幅を、システムバスI/Fのビット幅と同一となるようにカラムデコーダ78の選択列数を設定しており、外部のホストCPUまたはDMAコントローラにより、メモリセルマット30内のデータをアクセスすることができる。
【0189】
[実施の形態6]
図25は、この発明の実施の形態6に従うシステムLSIの構成を概略的に示す図である。この図25においては、基本演算ブロックFB1の構成のみを具体的に示すが、基本演算ブロックFB1−FBh各々において、コントローラ22からのワークデータをメモリセルマット30へ転送するための切換回路(MUX)80が設けられる。この切換回路(MUX)80は、システムバスI/F24とコントローラ22の一方を、主演算回路20に含まれるメモリセルマット30に結合する。具体的には、この切換回路80が、図23に示す主演算回路内の入出力回路76に結合される。
【0190】
図25に示すシステムLSIの他の構成は、図1に示すシステムLSIの構成と同じであり、対応する部分には同一参照番号を付し、その詳細説明は省略する。
【0191】
この図25に示す構成においては、メモリセルマット30が、演算対象データ格納領域として利用され、また、コントローラ22のワークデータ格納領域として利用される。したがって、図1等に示すワークデータメモリ(23)が不要となり、チップ面積を低減することができる。
【0192】
図26は、この発明の実施の形態6におけるメモリセルマット30におけるデータ格納領域の構成を概略的に示す図である。図26において、メモリセルマット30は、演算データを格納する演算データエリア30pと、コントローラ22からのワークデータを格納するワークエリア30wとを含む。演算データエリア30pにおいては、エントリERY(ERYa,ERYb)において、演算対象データDToの各ビットが格納される。一方、ワークエリア30wにおいては、複数のエントリ(ERYa…ERYb)にわたって、同一列に、ワークデータDTwの各ビットが格納される。したがって、演算データエリア30pにおいては、外部データワードのビット位置の並び替えが行なわれたデータが格納され、一方、ワークエリア30wには、コントローラからのワークデータが並び替え処理を受けずに、各ワードが1アドレス位置に格納される。
【0193】
メモリセルマット30においては、メモリセルマット30のエントリに対し均一にワークエリア30wが割当てられて、ワークデータの格納が行なわれる。したがって、各エントリに対して、演算データ格納部分とワークデータ格納部分とは均等に割当てられ、特定のエントリの領域すべてがワークデータ格納に用いられることがないため、エントリを用いた並列演算処理能力は損なわれない。
【0194】
また、このワークエリア30wにおいては、何らデータの並べ替えを行なう必要がなく、コントローラ22は、通常のワークデータを格納するワークメモリアクセスと同様の操作で、ワークデータDTwをアクセスすることができる。
【0195】
以上のように、この発明の実施の形態6に従えば、メモリセルマットに対し、コントローラが切換回路を介してアクセス可能となるように構成しており、メモリセルマットを演算データおよびワークデータ格納領域として利用することができ、ワークデータメモリが不要となり、チップ面積を低減することができる。
【0196】
[実施の形態7]
図27は、この発明の実施の形態7に従うシステムLSIの構成を概略的に示す図である。図27に示すシステムLSI2においては、基本演算ブロックFB1−FBhそれぞれにおいて、システムバスI/F24と主演算回路20の間に、与えられたデータの行および列の並べ替えを行なう転置回路85と、システムバスI/F24および転置回路85の一方と主演算回路20との間の接続を設定する切換回路(MUX)87が設けられる。この図27においても、基本演算ブロックFB1−FBhは同一構成を有するため、基本演算ブロックFB1の構成を代表的に示す。この図27に示す半導体信号処理装置1の他の構成は、図1に示す半導体信号処理装置の構成と同じであり、対応する部分には同一参照番号を付し、その詳細説明は省略する。
【0197】
転置回路85は、システムバスI/F24からビットパラレルかつワードシリアルな態様で転送されるデータを、ワードパラレルかつビットシリアルな態様で転送して、メモリセルマット30の各エントリに、異なるデータワードの同一位置のビットを並列に書込む。また、転置回路85は、この主演算回路20のメモリセルマット30からワードパラレルかつビットシリアルに転送されるデータ列を転置して、ビットパラレルかつワードシリアルな態様で転送する。これにより、システムバスI/F24とメモリセルマット30におけるデータ転送の整合性をとる。
【0198】
なお、図27に示す構成においては、切換回路87が、コントローラ22からのワークデータを選択して主演算回路20に転送するように構成されても良い。この場合、ワークデータメモリ23は不要となる。また、演算対象データを転置する必要のない場合には、切換回路87は、システムバスI/F24を選択して主演算回路20に接続する。
【0199】
図28は、図27に示す転置回路85の構成を概略的に示す図である。図28において、転置回路85は、L行L列に配列される記憶素子を有する転置メモリ90と、転置メモリ90とシステムバスI/F24の間のインターフェイスをとるシステムバス転置メモリI/F(インターフェイス)91と、転置メモリ90と内部メモリバスを介して入出力回路76に結合されて、メモリセルマット(30)とのデータ転送のインターフェイスをとるメモリセルマット転置メモリI/F92と、この転置回路85の内部動作に必要な情報を記憶する制御レジスタ群94と、データ転送時のアドレス情報を格納する内部レジスタ群93と、この内部レジスタ群93に含まれる情報に基づいてメモリセルマットに対するアクセス対象のアドレスを計算して主演算回路へ与えるメモリセルマットアドレス計算ユニット95を含む。
【0200】
Lビットデータ単位で、メモリセルマットと転置回路85の間でデータ転送が行なわれ、またLビット単位で転置回路85とシステムバスI/F24との間でデータ転送が行なわれる。メモリ内部バス(図24に示すIO線)および内部システムバス7のビット幅は、Lビットである。
【0201】
内部レジスタ群93は、内部システムバス7へのアクセス回数のカウント情報を格納するシステムバスアクセス回数カウンタ93aと、メモリセルマットへのアクセス回数のカウント情報を格納するメモリセルマットアクセス回数カウンタ93bを含む。
【0202】
制御レジスタ群94は、エントリ位置情報を格納するエントリ位置レジスタ94aと、ビット位置情報を格納するビット位置レジスタ94bと、この転置回路85の活性/非活性を決定する制御ビットを格納するイネーブルレジスタ94cと、この転置回路85のデータの書込/読出の方向を設定する情報を格納するリード/ライト方向レジスタ94dを含む。エントリ位置レジスタ94aおよびビット位置レジスタ94bにより、メモリセルマットにおけるエントリ位置およびビット位置情報が指定される。この指定された領域のメモリセルマット内の内容を転置メモ90が保持しており、転置回路85は、データの並べ替えを行なう機能を有するリード/ライトバッファ回路として機能する。
【0203】
内部レジスタ群93におけるカウンタレジスタ93aおよび93bのカウント値により、転置メモリ90におけるデータの格納状況が示される。
【0204】
システムバス転置メモリI/F91は、転置回路85と内部システムバス7との間のデータ転送を制御する機能を有し、転置回路85からメモリセルマット(メモリ内部バス)へのデータ転送時には、内部システムバス7と転置メモリ90との間のデータ転送を要求するバスリクエストのウエイト制御を行なう。
【0205】
メモリセルマットアドレス計算ユニット95は、メモリセルマットへのデータ転送時、エントリ位置レジスタ94aおよびビット位置レジスタ94bに格納された情報に基づいて、データ転送対象のメモリセルマットのアドレスの計算を行ない、主演算回路に転送する(図24に示すロウデコーダ70およびカラムデコーダ4に転送する)。
【0206】
転置メモリ90は、システムバス転置メモリI/F91とは、Y方向に整列するビットで構成されるデータDTE単位でデータの転送を行なう(X方向に順次データDTEが格納される)。データワードは、同一のエントリに格納されるため、システムバスI/F91は、エントリ単位のデータを転送する。一方、転置メモリ90は、メモリセルマット転置メモリI/F92とのデータ転送時には、X方向に整列するデータビットを用いてデータの転送を行なう。すなわち、転置メモリ90においては、Y方向に整列するデータDTEが、外部アドレス単位のデータであり、メモリセルマットにおいては、同一のエントリに格納されるエントリ単位のデータであり、ワードシリアルビットパラレル単位で転送されるデータが格納される。一方、X方向のデータDTAは、メモリセルマットの複数のエントリにわたるデータであり、メモリセルマットにおいて同一アドレスに格納されるデータであり、ワードパラレルかつビットシリアルに転送され、各エントリの同一位置のビットで構成されるメモリセルマットのアドレス単位のデータである。
【0207】
この転置メモリ90において、システムバスとのデータ転送を行なうポートとメモリ内部バスとのデータ転送を行なうポートを別々に設けることにより、X方向データおよびY方向データを並び替えて、データ転送を行なうことができる。次に、内部システムバス7から入出力回路76を介してメモリセルマットへデータを書込む際の、転置回路85の動作を一例として、図29の動作フローを参照して説明する。
【0208】
フェーズ1:
まず、主演算回路のメモリセルマットの書込対象の先頭のビット位置(ワード線アドレス)およびエントリ位置(ビット線アドレス)をそれぞれ、ビット位置レジスタ94bおよびエントリ位置レジスタ93aに設定する。次いで、リード/ライト方向レジスタ90dに、書込を示すビットを設定する。
【0209】
この後、イネーブルレジスタ94cに、イネーブルビットを設定し、この転置回路85をイネーブルする。このイネーブルレジスタ94cのイネーブルビットのアサートにより、内部レジスタ群93に含まれるカウンタレジスタ93aおよび93bのカウント値が0に初期化される(ステップSP1)。
【0210】
フェーズ2:
システムバスI/F24からシステムバス転置メモリI/F91経由で、転置メモリ90に対し、転送データが書込まれる。この転置メモリ90への書込データは、Y方向に整列する多ビットデータDTEとして、転置メモリ90のX方向についての先頭行から順に格納される。この転置メモリ90に対するデータ書込ごとに、システムバスアクセス回数カウンタレジスタ93aのカウント値がインクリメントされる(ステップSP2)。
【0211】
フェーズ3:
転置メモリ90の記憶内容がフル状態となるまで、すなわち、システムバスアクセス回数カウンタレジスタ93aのカウント値がメモリ内部バスのバス幅Lに到達するまで、システムバス転置メモリI/F91を介してのデータ書込が行なわれる(ステップSP3)。
【0212】
フェーズ4:
転置メモリ90にL回のデータ書込が、内部システムバス7からシステムバスI/F24およびシステムバス転置メモリI/F91を介して行なわれると、転置メモリ90からメモリセルマットへのデータ転送を行なうため、システムバス転置メモリI/F91は、内部システムバス7に対するウエイト制御信号をアサートし、システムバスI/F24に対し、後続のデータ書込を待機させる状態に設定する(ステップSP4)。この転置メモリ90の記憶状況がフル状態となるか否かは、システムバスアクセス回数カウンタレジスタ93aのカウント値をモニタすることにより行なわれる。
【0213】
この動作と並行して、メモリセルマット転置メモリI/F92が活性化され、転置メモリ90のX方向に整列するデータDTAを読出し、入出力回路76に対するデータの転送を行なう(ステップSP5)。
【0214】
メモリセルマットアドレス計算ユニット95は、エントリ位置レジスタ94aおよびビット位置レジスタ94bにおよびメモリセルマットアクセス回数カウンタレジスタ93bの格納値に基づいて転送対象のメモリセルマットのアドレスを計算し、このデータ送出に合せて出力する。また、このメモリセルマットへのデータ送出に合せて、メモリセルマット転置メモリI/F92が、メモリセルマットアクセス回数カウンタ93bのカウント値を増分する。
【0215】
フェーズ5:
転置メモリ90の格納内容が空となるまで、メモリセルマットアクセス回数カウンタレジスタ93bの格納値がLとなるまで、転置メモリ90からメモリセルマット転置メモリI/F92を介してのLビット単位のデータ転送が継続される(ステップSP5、SP6)。
【0216】
フェーズ6:
図29に示すフロー図の判定ステップSP6において、転置メモリ90の記憶内容が空であると判定されると、すべての転送データが転送されたかの判定が行なわれる(ステップSP7)。転送データが残っている場合には、再び、アクセス回数レジスタカウンタ93aおよび93bのカウント値を初期化して、ついで、図29に示すステップSP2に戻る。このとき、また、エントリ位置レジスタ94aの格納値はL加算される。エントリ位置レジスタ94aの格納値がメモリセルマットのエントリ数を超えた場合には、エントリ位置レジスタ94aの値が0に設定され、メモリセルマットにおいて次のワード線を選択するため、ビット位置レジスタ94bの格納値を1増分する(ステップSP8)。システムバス転置メモリI/F91が、内部システムバスI/F7へのウエイトを解除し、内部システムバス7から転置メモリ90へのデータの書込を再開する。
【0217】
次に、前述のフェーズ2からフェーズ6(すなわち図29に示すステップSP2からSP8の動作)が繰返し実行される。
【0218】
図29に示すステップSP7において、すべてのデータ転送が完了したと判定されると(システムバスI/F24からの転送要求がデアサートされることにより判定される)、データ転送が終了する。これらの一連の処理により、外部からのワードシリアルに転送されるデータをビットシリアルかつワードパラレルなデータに変換して、メモリセルマットに転送することができる。
【0219】
図30は、図27に示すSDRAM4からメモリセルマット30へのデータ転送を模式的に示す図である。図30においては、内部システムバス7のビット幅が4ビットの場合のデータ転送が一例として示される。
【0220】
図30において、4ビットデータA(ビットA3−A0)ないしI(ビットI3−I0)がSDRAM4に格納される。このSDRAM4から内部システムバス7を介して4ビットデータDTE(データI;ビットI3−I0)が転置メモリ90へ転送されて格納される。このSDRAM4からのデータDTEは、同一エントリに格納されるエントリ単位のデータであり、転置メモリ90においては、Y方向にデータビットが格納される。
【0221】
転置メモリ90からメモリセルマット30へのデータ転送時においては、この転置メモリ90のX方向に整列するデータDTAの各ビットが並行して読出される。データビットE1、F1、G1、H1からなるアドレス単位のデータDTAが、メモリセルマット30のエントリ位置情報および書込ビット位置情報が示す位置に格納される。ビット位置レジスタに格納されるビット位置情報はメモリセルマット30のワード線アドレスとして用いられ、エントリ位置情報は、このメモリセルマット30のビット線アドレスとして用いられる。これらのビット位置情報およびエントリ位置情報が、先の制御レジスタ群94内のエントリ位置レジスタ94aおよびビット位置レジスタ94bに格納される。実際のデータの書込位置を示す書込ビット位置情報は、メモリセルマットアクセス回数カウンタ93bのカウント値とエントリ位置レジスタ94aの情報とビット位置情報94bに格納されるビット位置情報とに基づいてメモリセルマットアドレス計算ユニット95により生成される。
【0222】
この転置メモリ90を用いて、Y方向に同時にデータビットを格納し、次いでX方向に整列するデータビットを読出すことにより、SDRAM4からワードシリアルかつビットパラレルで読出されるエントリ単位のデータDTEを、ワードパラレルかつビットシリアルのアドレス単位のデータDTAに変換してメモリセルマット30へ格納することができる。
【0223】
メモリセルマット30からデータを読出して内部システムバス7へ転送する場合には、このデータの転送方向が逆となるものの、転置メモリ90の動作メモリセルマットへのデータ書込時と同じである。データ読出時のメモリセルマット30におけるアクセス対象情報が、制御レジスタ94の各レジスタに格納され、リード/ライト方向レジスタ94dに、データ読出を示すビットを設定する。メモリセルマット30から、メモリセルマット30のアドレス単位のデータを読出して転置メモリ90に、Y方向の先頭位置から順次格納する。次いで、転置メモリ90からデータをX方向の先頭位置から順次読出すことにより、メモリセルマット30からワードパラレルかつビットシリアル態様で読出されたデータを、ワードシリアルかつビットパラレルのデータに変換して転送することができる。
【0224】
図31は、転置メモリ90に含まれるメモリセルの構成の一例を示す図である。この転置メモリ90に含まれるメモリセルは、デュアルポートSRAMセルで構成される。図31において、転置メモリセルは、交差結合される負荷PチャネルMOSトランジスタPQ1およびPQ2と、交差結合されるデータ記憶用のドライブNチャネルMOSトランジスタNQ1およびNQ2を含む。この転置メモリセルは、通常のSRAMセルと同様にインバータラッチ(フリップフロップ素子)をデータ記憶素子として備え、このフリップフロップ素子により、ストレージノードSN1およびSN2に相補データを記憶する。
【0225】
転置メモリセルは、さらに、ワード線WLA上の信号電位に応答してストレージノードSN1およびSN2をそれぞれビット線BLAおよび/BLAに結合するNチャネルMOSトランジスタNQA1およびNQ2と、ワード線WLB上の信号電位に応答してストレージノードSN1およびSN2をビット線BLBおよび/BLBに結合するNチャネルMOSトランジスタNQB1およびNQB2を含む。ワード線WLAおよびWLBが直交して配列され、ビット線BLAおよび/BLAがビット線BLBおよびBLBと直交して配列される。
【0226】
このワード線WLAおよびビット線BLAおよび/BLAで構成される第1のポート(トランジスタNQA1,NQA2)とワード線WLBおよびビット線BLBおよび/BLBで構成される第2のポート(トランジスタNQB1、NQB2)をそれぞれ別々の転置メモリI/Fに結合する。すなわち、たとえば、第1のポート(ワード線WLA,ビット線BLA,/BLA)を内部システムバスとのインターフェイス用のポートとして利用し、第2のポート(ワード線WLBおよびビット線BLB,/BLB)を、メモリデータバスへのアクセス用のポートとして利用する。これにより、転置メモリにおいて行および列の変換を行なってデータアクセスを行なうことができる。
【0227】
以上のように、この発明の実施の形態7に従えば、システムバスとメモリデータバスとの間に、転送データの行および列の交換を行なう転置回路を用いており、内部システムバスとメモリセルマット間のデータ転送時に、多ビット幅のデータの転置を行なうことができ、このメモリセルマットに対するデータ転送時に必要とされるメモリセルマットへのアクセス回数を低減することができ、データ転送に要する時間を短縮することができ、高速処理が実現される。
【産業上の利用可能性】
【0228】
この発明に従う半導体信号処理装置は、一般の画像または音声データ処理のみならず、大量のデータ処理を行なう半導体信号処理装置に対して適用することができ、デジタル信号処理分野においてこの発明に従う半導体信号処理装置を広く適用することができる。
【符号の説明】
【0229】
1 半導体信号処理システム、2 システムLSI、3 外部システムバス、4 SDRAM、7 内部システムバス、8 ホストCPU、11 割込コントローラ、13 DMAコントローラ、14 外部バスコントローラ、FB1−FBh 基本演算ブロック、20 主演算回路、21 マイクロ命令メモリ、22 コントローラ、23 ワークデータメモリ、24 システムバスI/F、30 メモリセルマット、31 ALU、32 ALU間相互接続用スイッチ回路、30A,30B メモリセルマット、35 演算処理ユニット、38,38A,38B 読出/書込回路、40 命令デコーダ、41 プログラムカウンタ、42 PC値計算ユニット、43 汎用レジスタ群、45 制御レジスタ群、46,46A,46B アドレス計算ユニット、47,47A,47B アドレスレジスタ群、70 開始アドレスレジスタ、72 終了アドレスレジスタ、SAW センスアンプおよびライトドライバ、74 ロウデコーダ、76 入出力回路、78 カラムデコーダ、80 切換回路(MUX)、85 転置回路、90 転置メモリ、91 システムバス転置メモリI/F、92 メモリセルマット転置メモリI/F、93 内部レジスタ群、94 制御レジスタ群、95 メモリセルマットアドレス計算ユニット。
【特許請求の範囲】
【請求項1】
複数のワード線および複数のビット線により行列状に配列される複数のメモリセルを有しかつ各々のビット線方向に複数のメモリセルを有する複数のエントリに分割されるメモリアレイと、前記メモリアレイの各エントリに対応して1個ずつ配置される複数の演算回路とを含む主演算回路、
マイクロ命令を格納するマイクロ命令メモリ、および
前記マイクロ命令メモリからのマイクロ命令に従って、前記メモリアレイおよび前記複数の演算回路に対する動作制御を行なう制御回路を備える演算処理部と、
前記演算処理部へ演算指示を発行する処理装置とを有し、
前記処理装置は前記演算処理部への演算指示の発行に先行して、前記マイクロ命令を前記マイクロ命令メモリへ格納する制御を行ない、
前記複数の演算回路の夫々は、前記マイクロ命令メモリに格納されたマイクロ命令に応じて、対応するエントリの所定のメモリセルに格納されたデータを用いて演算処理を行なうと共に、当該演算処理を実行するか否かを示す情報を格納するレジスタを有する、半導体信号処理装置。
【請求項2】
前記マイクロ命令は、前記メモリアレイと前記複数の演算回路との間のデータの転送を指示するロード/ストア命令と、前記複数の演算回路で実行する演算内容を指示する演算命令とを含む、請求項1記載の半導体信号処理装置。
【請求項3】
前記マイクロ命令メモリの一連の演算命令の開始アドレスと終了アドレスとを格納するレジスタ回路をさらに備え、
前記マイクロ命令は、前記開始アドレスと前記終了アドレスとの間の命令を繰返し実行するループ命令を含む、請求項1記載の半導体信号処理装置。
【請求項4】
前記メモリアレイは、複数のマットに分割され、かつ各前記メモリセルは書込ポートと読出ポートとを有するマルチポートメモリセルであり、
前記制御回路は、各前記メモリマットに対して並行して書込および読出の制御を行なう、請求項1記載の半導体信号処理装置。
【請求項5】
前記主演算回路は複数個並列に設けられ、
前記制御回路が各主演算回路に対応して配置され、
前記半導体信号処理装置は、さらに、
各主演算回路に対応して配置され、外部メモリと対応の主演算回路との間でデータ転送を行なうための転送制御回路をさらに備え、
前記転送制御回路は、1つの主演算回路においての演算実行時に別の主演算回路において外部メモリとのデータ転送を行なうように演算と前記外部メモリとの間のデータ転送をパイプライン態様で実行するように対応の主演算回路の動作を制御する、請求項1記載の半導体信号処理装置。
【請求項6】
前記主演算回路は、さらに、
前記複数ビット幅より小さいビット幅の内部データバスと、
第1のアドレス信号に従って前記複数のエントリの同一位置のビットを同時に選択するエントリ選択回路と、
第2のアドレス信号に従って、前記複数のエントリの同時に選択されたビットのうち、前記内部バスのバス幅と同数のビットを同時に選択して前記内部データバスに接続するビット選択回路をさらに備える、請求項1記載の半導体信号処理装置。
【請求項7】
前記主演算回路外部とデータの授受を行なうシステムバスと、
前記システムバスからのデータと前記制御回路からのデータの一方を選択して前記メモリアレイに転送する切換回路をさらに備える、請求項1記載の半導体信号処理装置。
【請求項8】
前記半導体信号処理装置は、さらに、
前記主演算回路外部とデータの転送を行なうシステムバスと、
前記システムバスと前記主演算回路との間に配置され、与えられた多ビットデータの並び替えを行なう転置回路をさらに備え、前記転置回路は前記エントリの同一エントリに同一データのビットが格納されるように、前記システムバスからの多ビットデータの転置を行なう、請求項1記載の半導体信号処理装置。
【請求項1】
複数のワード線および複数のビット線により行列状に配列される複数のメモリセルを有しかつ各々のビット線方向に複数のメモリセルを有する複数のエントリに分割されるメモリアレイと、前記メモリアレイの各エントリに対応して1個ずつ配置される複数の演算回路とを含む主演算回路、
マイクロ命令を格納するマイクロ命令メモリ、および
前記マイクロ命令メモリからのマイクロ命令に従って、前記メモリアレイおよび前記複数の演算回路に対する動作制御を行なう制御回路を備える演算処理部と、
前記演算処理部へ演算指示を発行する処理装置とを有し、
前記処理装置は前記演算処理部への演算指示の発行に先行して、前記マイクロ命令を前記マイクロ命令メモリへ格納する制御を行ない、
前記複数の演算回路の夫々は、前記マイクロ命令メモリに格納されたマイクロ命令に応じて、対応するエントリの所定のメモリセルに格納されたデータを用いて演算処理を行なうと共に、当該演算処理を実行するか否かを示す情報を格納するレジスタを有する、半導体信号処理装置。
【請求項2】
前記マイクロ命令は、前記メモリアレイと前記複数の演算回路との間のデータの転送を指示するロード/ストア命令と、前記複数の演算回路で実行する演算内容を指示する演算命令とを含む、請求項1記載の半導体信号処理装置。
【請求項3】
前記マイクロ命令メモリの一連の演算命令の開始アドレスと終了アドレスとを格納するレジスタ回路をさらに備え、
前記マイクロ命令は、前記開始アドレスと前記終了アドレスとの間の命令を繰返し実行するループ命令を含む、請求項1記載の半導体信号処理装置。
【請求項4】
前記メモリアレイは、複数のマットに分割され、かつ各前記メモリセルは書込ポートと読出ポートとを有するマルチポートメモリセルであり、
前記制御回路は、各前記メモリマットに対して並行して書込および読出の制御を行なう、請求項1記載の半導体信号処理装置。
【請求項5】
前記主演算回路は複数個並列に設けられ、
前記制御回路が各主演算回路に対応して配置され、
前記半導体信号処理装置は、さらに、
各主演算回路に対応して配置され、外部メモリと対応の主演算回路との間でデータ転送を行なうための転送制御回路をさらに備え、
前記転送制御回路は、1つの主演算回路においての演算実行時に別の主演算回路において外部メモリとのデータ転送を行なうように演算と前記外部メモリとの間のデータ転送をパイプライン態様で実行するように対応の主演算回路の動作を制御する、請求項1記載の半導体信号処理装置。
【請求項6】
前記主演算回路は、さらに、
前記複数ビット幅より小さいビット幅の内部データバスと、
第1のアドレス信号に従って前記複数のエントリの同一位置のビットを同時に選択するエントリ選択回路と、
第2のアドレス信号に従って、前記複数のエントリの同時に選択されたビットのうち、前記内部バスのバス幅と同数のビットを同時に選択して前記内部データバスに接続するビット選択回路をさらに備える、請求項1記載の半導体信号処理装置。
【請求項7】
前記主演算回路外部とデータの授受を行なうシステムバスと、
前記システムバスからのデータと前記制御回路からのデータの一方を選択して前記メモリアレイに転送する切換回路をさらに備える、請求項1記載の半導体信号処理装置。
【請求項8】
前記半導体信号処理装置は、さらに、
前記主演算回路外部とデータの転送を行なうシステムバスと、
前記システムバスと前記主演算回路との間に配置され、与えられた多ビットデータの並び替えを行なう転置回路をさらに備え、前記転置回路は前記エントリの同一エントリに同一データのビットが格納されるように、前記システムバスからの多ビットデータの転置を行なう、請求項1記載の半導体信号処理装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【公開番号】特開2011−192305(P2011−192305A)
【公開日】平成23年9月29日(2011.9.29)
【国際特許分類】
【出願番号】特願2011−123214(P2011−123214)
【出願日】平成23年6月1日(2011.6.1)
【分割の表示】特願2004−282014(P2004−282014)の分割
【原出願日】平成16年9月28日(2004.9.28)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】
【公開日】平成23年9月29日(2011.9.29)
【国際特許分類】
【出願日】平成23年6月1日(2011.6.1)
【分割の表示】特願2004−282014(P2004−282014)の分割
【原出願日】平成16年9月28日(2004.9.28)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】
[ Back to top ]