(57)【要約】【課題】  大量のデータを高速で効率的に演算処理する処理装置を実現する。【解決手段】  主演算回路（２０）に対する演算処理命令を、マイクロ命令メモリ（２１）にマイクロプログラムの形態で格納し、このマイクロプログラムに従ってコントローラ２２の制御の下に主演算回路の動作制御を実行する。主演算回路（２０）においてはメモリセルマット（３０）が、それぞれが複数ビットのデータを格納するエントリに分割され、各エントリに対応して演算器（ＡＬＵ）が配置される。エントリとＡＬＵとの間で、ビットシリアル態様で各エントリ並列に演算処理を実行する。マイクロプログラム制御方式に従って効率的に大量のデータを処理することができる。【選択図】        図６
2006099232.tif 000002
【特許請求の範囲】
【請求項１】
行列状に配列される複数のメモリセルを有しかつ各々が複数のメモリセルを有する複数のエントリに分割されるメモリアレイと、前記メモリアレイの各エントリに対応して配置される複数の演算回路とを含む主演算回路、
マイクロ命令を格納するマイクロ命令メモリ、および
前記マイクロ命令メモリからのマイクロ命令に従って、前記メモリアレイおよび前記複数の演算回路に対する動作制御を行なう制御回路を備える、半導体信号処理装置。
【請求項２】
前記マイクロ命令は、前記メモリアレイと前記複数の演算回路との間のデータの転送を指示するロード／ストア命令と、前記複数の演算回路で実行する演算内容を指示する演算命令とを含む、請求項１記載の半導体信号処理装置。
【請求項３】
前記マイクロ命令メモリの一連の演算命令の開始アドレスと終了アドレスとを格納するレジスタ回路をさらに備え、
前記マイクロ命令は、前記開始アドレスと前記終了アドレスとの間の命令を繰返し実行するループ命令を含む、請求項１記載の半導体信号処理装置。
【請求項４】
前記メモリアレイは、複数のマットに分割され、かつ各前記メモリセルは書込ポートと読出ポートとを有するマルチポートメモリセルであり、
前記制御回路は、各前記メモリマットに対して並行して書込および読出の制御を行なう、請求項１記載の半導体信号処理装置。
【請求項５】
前記主演算回路は複数個並列に設けられ、
前記制御回路が各主演算回路に対応して配置され、
前記半導体信号処理装置は、さらに、
各主演算回路に対応して配置され、外部メモリと対応の主演算回路との間でデータ転送を行なうための転送制御回路をさらに備え、
前記転送制御回路は、１つの主演算回路においての演算実行時に別の主演算回路において外部メモリとのデータ転送を行なうように演算と前記外部メモリとの間のデータ転送をパイプライン態様で実行するように対応の主演算回路の動作を制御する、請求項１記載の半導体信号処理装置。
【請求項６】
各前記エントリは、前記メモリアレイの列方向に整列する複数ビット幅のメモリセルで構成され、
前記主演算回路は、さらに、
前記複数ビット幅より小さいビット幅の内部データバスと、
第１のアドレス信号に従って前記複数のエントリの同一位置のビットを同時に選択するエントリ選択回路と、
第２のアドレス信号に従って、前記複数のエントリの同時に選択されたビットのうち、前記内部バスのバス幅と同数のビットを同時に選択して前記内部データバスに接続するビット選択回路をさらに備える、請求項１記載の半導体信号処理装置。
【請求項７】
前記主演算回路外部とデータの授受を行なうシステムバスと、
前記システムバスからのデータと前記制御回路からのデータの一方を選択して前記メモリアレイに転送する切換回路をさらに備える、請求項１記載の半導体信号処理装置。
【請求項８】
各前記エントリは、前記メモリアレイの列方向に整列する複数ビット幅のメモリセルで構成され、
前記半導体信号処理装置は、さらに、
前記主演算回路外部とデータの転送を行なうシステムバスと、
前記システムバスと前記主演算回路との間に配置され、与えられた多ビットデータの並び替えを行なう転置回路をさらに備え、前記転置回路は前記エントリの同一エントリに同一データのビットが格納されるように、前記システムバスからの多ビットデータの転置を行なう、請求項１記載の半導体信号処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、半導体信号処理装置に関し、特に、高速に大量のデータの演算処理を行なう半導体メモリを用いた信号処理用集積回路装置の構成に関する。
【背景技術】
【０００２】
近年、携帯端末機器の普及に伴い、音声および画像のような大量のデータを高速に処理するデジタル信号処理の重要性が高くなってきている。このようなデジタル信号処理には、一般に、専用の半導体装置としてＤＳＰ（デジタル・シグナル・プロセサ）が用いられる。音声および画像データに対するデジタル信号処理においては、フィルタ処理などのデータ処理が行なわれ、このような処理においては積和演算を繰返す演算処理が多い。したがって、一般に、ＤＳＰの構成においては、乗算回路、加算回路および累算用のレジスタが設けられる。このような専用のＤＳＰを用いると、積和演算を１マシンサイクルで実行することが可能となり、高速演算処理が可能となる。
【０００３】
このような積和演算を行なう際に、レジスタファイルを利用する構成が、特許文献１（特開平６−３２４８６２号公報）に示されている。この特許文献１においては、レジスタファイルに格納された２項のオペランドデータを読出して演算器で加算した後、書込データレジスタを介してレジスタファイルに加算結果を書込む。この特許文献１に示される構成においては、レジスタファイルに対して書込アドレスおよび読出アドレスを同時に与えてデータの書込およびデータの読出を並行に行なうことにより、データの書込サイクルおよびデータの読出サイクルを別々に設けて演算処理する構成に比べて処理時間を短縮することを図る。
【０００４】
また、大量のデータを高速で処理することを意図する構成が、特許文献２（特開平５−１９７５５０号公報）に示されている。この特許文献２に示される構成においては、複数の演算装置を並列に配置し、それぞれの演算装置にメモリを内蔵する。各演算装置において個々にメモリアドレスを生成することにより、並列演算を高速で行なうことを図る。
【０００５】
また、画像データのＤＣＴ変換（離散コサイン変換）などの処理を高速に行なうことを目的とする信号処理装置が、特許文献３（特開平１０−７４１４１号公報）に示されている。この特許文献３に示される構成においては、画像データがビットパラレルかつワードシリアルなシーケンスで、すなわちワード（画素データ）単位で入力されるため、直列／並列変換回路を用いてワードパラレルかつビットシリアルなデータ列に変換してメモリアレイに書込む。メモリアレイに対応して配置される演算器（ＡＬＵ）へデータを転送して並列処理を実行する。メモリアレイは、画像データブロックに応じてブロックに分割されており、各ブロックにおいて対応の画像ブロックを構成する画像データがメモリアレイの行ごとにワード単位で格納される。
【０００６】
この特許文献３に示される構成においては、メモリアレイ対応の演算器との間でワード（１つの画素に対応するデータ）単位でデータを転送する。各ブロック個々に対応の演算器において同一処理を転送されたワードに対して実行することにより、ＤＣＴ変換などのフィルタ処理を高速で実行することを図る。演算処理結果は、再びメモリアレイに書込み、再度、並列／直列変換を行なってビットシリアルかつワードパラレルデータをビットパラレルかつワードシリアルなデータに変換して１ラインごとのデータを順次出力する。通常の処理においては、データのビット位置の変換は行なわれず、演算器において通常の演算処理を複数のデータに対して並列に実行する。
【０００７】
また、複数の異なる演算処理を並行して実行すること目的とするデータ処理装置が特許文献４（特開２００３−１１４７９７号公報）に示されている。この特許文献４に示される構成においては、各々その機能が限定された複数の論理モジュールをマルチポート構成のデータメモリに接続する。これらの論理モジュールとマルチポートデータメモリとの接続においては、論理モジュールが接続されるマルチポートメモリのポートおよびメモリが制限されており、したがって、各論理モジュールがマルチポートメモリへアクセスしてデータの読出および書込を行なうことのできるアドレス領域が、制限される。各論理モジュールで演算を行なった結果は、アクセスが許可されたメモリに書込み、これらのマルチポートメモリを介して順次データを論理モジュールを介して転送することにより、パイプライン的にデータ処理を行なうことを図る。
【特許文献１】特開平６−３２４８６２号公報
【特許文献２】特開平５−１９７５５０号公報
【特許文献３】特開平１０−７４１４１号公報
【特許文献４】特開２００３−１１４７９７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
処理対象のデータ量が非常に多い場合には、専用のＤＳＰを用いても、性能を飛躍的に向上させることは困難である。たとえば、演算対象のデータが１万組ある場合、１つ１つのデータに対する演算を１マシンサイクルで実行することができたとしても、最低でも１万サイクルが演算に必要となる。したがって、特許文献１に示されるような、レジスタファイルを用いて積和演算を行なうような構成の場合、１つ１つの処理は高速であるものの、データ処理が直列に行なわれるため、データ量が多くなるとそれに比例して処理時間が長くなり、高速処理を実現することができない。また、このような専用のＤＳＰを利用する場合、処理性能は動作周波数に大きく依存することになるため、高速処理を優先した場合、消費電力が増大することになる。
【０００９】
また、この特許文献１に示されるようなレジスタファイルおよび演算器を利用する場合、ある用途に特化して設計されることが多く、演算ビット幅および演算回路の構成等が固定される。したがって、他の用途に転用する場合には、そのビット幅および演算回路の構成を設計し直す必要があり、複数の演算処理用途に柔軟に対応することができなくなるという問題が生じる。
【００１０】
また、特許文献２に示される構成においては、演算装置個々にメモリが内蔵されており、各演算装置において異なるメモリアドレス領域をアクセスして処理を行なう。しかしながら、データメモリと演算装置とは別々の領域に配置されており、論理モジュール内において演算装置とメモリとの間でアドレスを転送してデータアクセスを行なう必要があり、データ転送に時間を要し、このためマシンサイクルを短縮することができなくなり、高速処理を行なうことができなくなるという問題が生じる。
【００１１】
また、特許文献３に示される構成においては、画像データのＤＣＴ変換などの処理を高速化することを図っており、画面１ラインの画素データを１行のメモリセルに格納して行方向に整列する画像ブロックに対して並列に処理を実行している。したがって、画像の高精細化のために１ラインの画素数が増大した場合、メモリアレイが膨大なものとなる。たとえば、１画素のデータが８ビットで１ラインの画素数が５１２個の場合でも、メモリアレイの１行においてはメモリセルの数が８・５１２＝４Ｋビットとなり、１行のメモリセルが接続される行選択線（ワード線）の負荷が大きくなり、高速でメモリセルを選択してデータを演算部とメモリセルとの間で転送することができなくなり、応じて高速処理を実現することができなくなるという問題が生じる。
【００１２】
また、特許文献３においては、メモリセルアレイを演算回路群両側に配置する構成は示されているものの、具体的なメモセルアレイの構造は示されておらず、また演算回路において演算器をアレイ状に配置することは示されているものの、どのように演算器群を配置するかの詳細については何ら示されていない。
【００１３】
また、特許文献４に示される構成においては、複数のマルチポートデータメモリと、これらのマルチポートデータメモリに対してアクセス領域が制限される複数の低機能の演算器（ＡＬＵ）とが設けられている。しかしながら、この演算器（ＡＬＵ）とメモリとは別の領域に配置されており、配線容量などにより高速でデータを転送することができず、パイプライン処理を実行しても、このパイプラインのマシンサイクルを短縮することができなくなるという問題が生じる。
【００１４】
また、これらの特許文献１から４においては、演算処理対象のデータの語構成が異なる場合、どのように対応するかについては何ら検討していない。
【００１５】
それゆえ、この発明の目的は、高速で大量のデータを処理することのできる半導体信号処理装置を提供することである。
【００１６】
この発明の他の目的は、データの語構成および演算内容にかかわらず高速で演算処理を実行することのできる半導体信号処理装置を提供することである。
【００１７】
この発明のさらに他の目的は、柔軟に処理内容を変更することのできる演算機能内蔵半導体信号処理装置を提供することである。
【課題を解決するための手段】
【００１８】
この発明に係る半導体信号処理装置は、行列状に配列される複数のメモリセルを有しかつ各々が複数のメモリセルを有する複数のエントリに分割されるメモリアレイと、このメモリアレイの各エントリに対応して配置される複数の演算回路とを含む主演算回路と、マイクロ命令を格納するマイクロ命令メモリと、このマイクロ命令メモリからのマイクロ命令に従って、メモリアレイおよび複数の演算回路に対する動作制御を行なう制御回路を備える。
【発明の効果】
【００１９】
メモリアレイを複数のエントリに分割し、各エントリに対して演算回路を配置する。このメモリアレイおよび演算回路の間のデータ転送およびデータの書込／読出および演算処理は、マイクロ命令メモリからのマイクロ命令に従って動作制御を行なっており、通常のワイヤードロジックと同程度の速度で処理を実行することができる。また、マイクロプログラム命令により、その演算処理内容を適用用途に応じて変更することができ、異なる演算内容に対して柔軟に対応することができる。
【００２０】
また、複数のエントリに対して並列に演算処理を実行するため、大量のデータの高速演算処理を実現することができる。
【００２１】
また、各エントリに同一のデータワードを格納し、ビットシリアル態様で対応の演算回路で演算処理を行なう構成とすることにより、データの語構成（ビット幅）の変更に対しても大幅なハードウェアの変更を行なうことなく対応して、演算処理を行なうことができる。
【発明を実施するための最良の形態】
【００２２】
［実施の形態１］
図１は、この発明に従う半導体信号処理装置が用いられる処理システムの全体構成を概略的に示す図である。図１において、信号処理システム１は、各種処理を実行する演算機能を実現するシステムＬＳＩ２と、システムＬＳＩ２と外部システムバス３を介して接続される外部メモリとを含む。この外部メモリは、大容量メモリ４と、高速メモリ５と、立上げ時の命令などの固定情報を格納する読出専用メモリ（リード・オンリー・メモリ：ＲＯＭ）６を含む。大容量メモリ４は、たとえばクロック同期型ダイナミック・ランダム・アクセス・メモリ（ＳＤＲＡＭ）で構成され、高速メモリ５は、たとえばスタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）で構成される。
【００２３】
システムＬＳＩ２は、内部システムバス７に並列に結合される基本演算ブロックＦＢ１−ＦＢｈと、内部システムバス７に結合され、これらの基本演算ブロックＦＢ１−ＦＢｈの処理動作を制御するホストＣＰＵ８と、このシステム１の外部からの入力信号ＩＮを内部処理用データに変換する入力ポート９と、内部システムバス７から与えられた出力データを受けて、システム外部への出力信号ＯＵＴを生成する出力ポート１０を含む。これらの入力ポート９および出力ポート１０は、たとえばライブラリ化されたＩＰ（インテレクチャル  プロパティ：Ｉｎｔｅｌｌｅｃｔｕａｌ  Ｐｒｏｐｅｒｔｙ）ブロックで構成され、データ／信号の入出力に必要な機能を実現する。
【００２４】
システムＬＳＩ２は、さらに、基本演算ブロックＦＰ１−ＦＢｈからの割込信号を受付け、ホストＣＰＵ８に対して割込を通知する割込コントローラ１１と、ホストＣＰＵ８の各処理に必要な制御動作を行なうＣＰＵ周辺１２と、基本演算ブロックＦＢ１−ＦＢｈからの転送要求に従って外部メモリに対するデータ転送を行なうＤＭＡ（ダイレクト・メモリ・アクセス）コントローラ１３と、ＣＰＵ８またはＤＭＡコントローラ１３からの指示に従って外部システムバス３に接続されるメモリ４−６に対するアクセス制御を行なう外部バスコントローラ１４と、ホストＣＰＵ８のデータ処理を補助する専用ロジック１５を含む。
【００２５】
ＣＰＵ周辺１２は、タイマおよびシリアルＩＯ（入出力）等のホストＣＰＵ８におけるプログラムおよびデバッグの用途に必要な機能を備える。専用ロジック１５は、たとえばＩＰブロックで構成され、既存の機能ブロックを用いて必要な処理機能を実現する。これらの機能ブロック９−１５は、内部システムバス７に接続される。また、ＤＭＡコントローラ１３には、基本演算ブロックＦＢ１−ＦＢｈからのＤＭＡ要求信号が与えられる。
【００２６】
基本演算ブロックＦＢ１−ＦＢｈは、同一構成を有するため、図１においては、基本演算ブロックＦＢ１の構成を代表的に示す。
【００２７】
基本演算ブロックＦＢ１は、実際のデータの演算処理を行なう主演算回路２０と、この主演算回路２０における演算処理を指定するマイクロ命令を格納するマイクロ命令メモリ２１と、マイクロ命令メモリ２１からのマイクロ命令に従って主演算回路２０の演算処理を制御するコントローラ２２と、コントローラ２２の中間処理データまたは作業用データを格納するワークデータメモリ２３と、この基本演算ブロックＦＢ１内部と内部システムバス７との間でのデータ／信号の転送を行なうシステムバスインターフェイス（Ｉ／Ｆ）２４を含む。
【００２８】
主演算回路２０は、複数のメモリセルが行列状に配列されかつ複数のエントリに分割されるメモリセルマット３０と、メモリセルマット３０の各エントリに対応して配置されて指定された演算処理を行なう演算器（ＡＬＵ）３１と、演算器３１間のデータ転送経路を設定するＡＬＵ間相互接続用スイッチ回路３２を含む。
【００２９】
基本的にメモリセルマット３０の各行が１エントリを構成し、１エントリに多ビットデータの各ビットが格納される。演算器（以下、適宜、ＡＬＵと称す）３１は、したがって、対応のエントリからのデータをビットシリアルに受けて演算処理を行ない、処理結果をメモリセルマット３０の指定されたエントリ（たとえば対応のエントリ）に格納する。
【００３０】
ＡＬＵ間相互接続用スイッチ回路３２により、ＡＬＵ３１の接続経路が切換えられ、異なったビット線（異なるエントリ）のデータの演算も可能となる。各エントリに異なるデータを格納し、ＡＬＵ３１により並列演算処理を行なうことにより、高速にデータ処理を行なうことができる。
【００３１】
コントローラ２２は、マイクロ命令メモリ２１に格納されるマイクロ命令に従ってマイクロプログラム方式に従った動作を行なう。マイクロプログラム動作に必要なワークデータが、ワークデータメモリ２３に格納される。
【００３２】
システムバスＩ／Ｆ２４により、ホストＣＰＵ８またはＤＭＡコントローラ１３が、メモリセルマット３０、コントローラ２２内の制御レジスタ、マイクロ命令メモリ２１およびワークデータメモリ２３へアクセスすることが可能になる。
【００３３】
基本演算ブロックＦＢ１−ＦＢｈには、異なるアドレス領域（ＣＰＵアドレス領域）が割付けられる。同様、基本演算ブロックＦＢ１−ＦＢｈ内のメモリセルマット３０、コントローラ２２内の制御レジスタ、マイクロ命令メモリ２１およびワークデータメモリ２３についても、それぞれ異なるアドレス（ＣＰＵアドレス）が割付けられる。したがって、この基本演算ブロックＦＢ１−ＦＢｈそれぞれにおいて、異なる内容のマイクロ命令を格納することにより、異なる演算処理を並行して実行することができる。また、基本演算ブロックＦＢ１−ＦＢｈにおいて、異なるアドレス領域のデータについて同一の演算処理が行なわれるように、マイクロ命令メモリ２１に同一の演算内容のマイクロ命令が格納されてもよい。
【００３４】
各割付けられたアドレスに従って、ホストＣＰＵ８およびＤＭＡコントローラ１３が、アクセス対象の基本演算ブロックＦＢ（ＦＢ１−ＦＢｈ）を識別し、アクセス対象の基本演算ブロックに対するアクセスを実行する。
【００３５】
図２は、図１に示す基本演算ブロックＦＢ１−ＦＢｈそれぞれに含まれる主演算回路２０の要部の構成を概略的に示す図である。図２において、メモリセルマット３０においては、メモリセルＭＣが行列状に配列される。メモリセルＭＣが、ｍ個のエントリＥＲＹに分割される。エントリＥＲＹは、ｎビットのビット幅を有する。基本的に、１つのエントリＥＲＹは、１列に整列するメモリセルＭＣで構成される。したがって、この場合、エントリＥＲＹの数は、メモリセルマット３０の行すなわちビット線の数で決定される。
【００３６】
演算処理ユニット群３５においては、エントリＥＲＹそれぞれに対してＡＬＵ３１が設けられる。このＡＬＵ３１は、加算、論理積、一致検出（ＥＸＯＲ）、および反転（ＮＯＴ）などの演算を実行することができる。
【００３７】
エントリＥＲＹと対応のＡＬＵ３１との間でデータのロード（メモリセルマット３０から演算処理ユニット群３５へのデータの転送）およびストア（演算処理ユニット群３５からメモリセルマット３０へのデータの転送格納）を行なって演算処理を実行する。エントリＥＲＹには、多ビットデータの各ビットが格納され、ＡＬＵ３１は、ビットシリアルな態様（多ビットデータワードをビット単位で処理する態様）で演算処理を実行する。演算処理ユニット群３５においては、データワードについてビットシリアル態様でかつ複数のエントリＥＲＹが並行して処理されるエントリパラレルな態様でデータの演算処理が実行される。
【００３８】
エントリＥＲＹのビット幅を変更することにより、データワードの語構成が異なる場合にも演算サイクル数（アドレスポインタの範囲）を変更するだけで、データ処理を実行することができる。また、エントリ数ｍを多くすることにより、大量のデータを一括して演算処理することができる。
【００３９】
図３は、図２に示すメモリセルＭＣの構成の一例を示す図である。図３において、メモリセルＭＣは、電源ノードとストレージノードＳＮ１の間に接続されかつそのゲートがストレージノードＳＮ２に接続されるＰチャネルＭＯＳトランジスタ（絶縁ゲート型電界効果トランジスタ）ＰＱ１と、電源ノードとストレジノードＳＮ２の間に接続されかつそのゲートがストレージノードＳＮ１に接続されるＰチャネルＭＯＳトランジスタＰＱ２と、ストレージノードＳＮ１と接地ノードの間に接続されかつそのゲートがストレージノードＳＮ２に接続されるＮチャネルＭＯＳトランジスタＮＱ１と、ストレージノードＳＮ２と接地ノードの間に接続されかつそのゲートがストレージノードＳＮ１に接続されるＮチャネルＭＯＳトランジスタＮＱ２と、ワード線ＷＬ上の電位に応答してストレージノードＳＮ１およびＳＮ２を、それぞれ、ビット線ＢＬおよび／ＢＬに接続するＮチャネルＭＯＳトランジスタＮＱ３およびＮＱ４とを含む。
【００４０】
この図３に示すメモリセルＭＣは、フルＣＭＯＳ（相補ＭＯＳ）構成のＳＲＡＭセルであり、高速でデータの書込／読出を行なうことができる。このＳＲＡＭセルを利用することにより、メモリセルマット３０において、記憶データのリフレッシュを行なう必要がなく、動作制御が容易となり、演算処理を高速で実行することができる。
【００４１】
主演算回路２０において演算を行なう場合には、まず、各エントリＥＲＹに演算対象のデータの格納を行なう。次いで、格納されたデータのある桁のビットを、すべてのエントリＥＲＹについて並列に読出して対応のＡＬＵ３１へ転送（ロード）する。２項演算の場合には、各エントリＥＲＹにおいて別のデータワードのビットに対しても同様の転送動作を行なった後、各ＡＬＵ３１において２入力演算を行なう。この演算処理結果は、ＡＬＵ３１から対応のエントリＥＲＹ内の所定領域に再書込（ストア）される。
【００４２】
図４は、図２に示す主演算回路２０における演算操作を模式的に示す図である。図４においては、２ビット幅のデータワードａおよびｂの加算を行なって、データワードｃを生成する。エントリＥＲＹには、演算対象の組をなすデータワードａおよびｂがともに格納される。
【００４３】
図４においては、第１行目のエントリＥＲＹに対するＡＬＵ３１においては、１０Ｂ＋０１Ｂの加算が行なわれ、２行目のエントリＥＲＹに対するＡＬＵ３１においては、００Ｂ＋１１Ｂの演算が行なわれる。ここで、末尾の“Ｂ”は、２進数を示す。３行目のエントリＥＲＹに対するＡＬＵ３１においては、１１Ｂ＋１０Ｂの演算が行なわれる。同様に、各エントリＥＲＹに格納されたデータワードａおよびｂの加算が実行される。
【００４４】
演算は、下位側ビットから順にビットシリアル態様で行なわれる。まず、エントリＥＲＹにおいてデータワードａの下位ビットａ［０］を対応のＡＬＵ３１へ転送する。次いで、データワードｂの下位ビットｂ［０］を対応のＡＬＵ３１へ転送する。ＡＬＵ３１において、これらの与えられた２ビットデータを用いて加算演算を行なう。この加算演算結果ａ［０］＋ｂ［０］は、データワードｃの下位ビットｃ［０］の位置に書込まれる（ストアされる）。すなわち、１行目のエントリＥＲＹにおいては、“１”がビットｃ［０］の位置に書込まれる。
【００４５】
この加算処理を、次いで上位ビットａ［１］およびｂ［１］に対しても行ない、その演算結果ａ［１］＋ｂ［１］が、ビットｃ［１］の位置に書込まれる。
【００４６】
加算演算においては、桁上がりが生じる可能性があり、この桁上がり（キャリー）の値がビットｃ［２］の位置に書込まれる。これにより、データワードａおよびｂの加算が、すべてのエントリＥＲＹにおいて完了し、その結果がデータｃとして各エントリＥＲＹにおいて格納される。エントリとしてたとえば１０２４エントリを準備した場合、１０２４組のデータの加算を並列に実行することができる。
【００４７】
図５は、この加算演算処理時の内部タイミングを模式的に示す図である。以下、図５を参照して、加算演算の内部タイミングについて説明する。この加算演算処理においては、ＡＬＵ３１に含まれる２ビット加算器（ＡＤＤ）が利用される。
【００４８】
図５において、“Ｒｅａｄ”は、メモリセルマット３０から演算対象のデータビットを読出して対応のＡＬＵ３１に転送する動作（ロード）または動作命令を示し、“Ｗｒｉｔｅ”は、ＡＬＵ３１の演算結果データを対応のエントリＥＲＹの対応のビット位置に書込む動作（ストア）または動作命令を示す。
【００４９】
マシンサイクルｋにおいて、データビットａ［ｉ］がメモリセルマット３０から読出され、次のマシンサイクル（ｋ＋２）で、次の演算対象のデータビットｂ［ｉ］が読出され（Ｒｅａｄ）、ＡＬＵ３１の加算器（ＡＤＤ）にそれぞれ与えられる。
【００５０】
マシンサイクル（ｋ＋２）において、ＡＬＵ３１の加算器（ＡＤＤ）において与えられたデータビットａ［ｉ］およびｂ［ｉ］の加算処理が行なわれ、マシンサイクル（ｋ＋３）において、加算結果ｃ［ｉ］が対応のエントリの対応のビット位置に書込まれる。
【００５１】
次のマシンサイクル（ｋ＋４）および（ｋ＋５）において、次の演算対象のデータビットａ［ｉ＋１］およびｂ［ｉ＋１］が読出され、ＡＬＵ３１の加算器（ＡＤＤ）へ転送され、マシンサイクル（ｋ＋６）においてＡＬＵ３１により加算処理が行なわれ、マシンサイクル（ｋ＋７）において加算結果がビット位置ｃ［ｉ＋１］へ格納される。
【００５２】
メモリセルマット３０とＡＬＵ３１の間のデータビットの転送に、それぞれ１マシンサイクルが必要とされ、ＡＬＵ３１において１マシンサイクルの演算サイクルが必要とされる。したがって、１ビットデータの加算および加算結果の格納を行なうために、４マシンサイクルが必要となる。メモリセルマット３０を複数のエントリＥＲＹに分割し、各エントリに演算対象データの組をそれぞれ格納し、対応のＡＬＵ３１においてビットシリアル態様で演算処理を行なう方式の特徴は、１つ１つのデータ演算には、比較的多くのマシンサイクルが必要とされるものの、処理すべきデータ量が非常に多い場合には、演算の並列度を高くすることにより高速データ処理を実現することができるということである。
【００５３】
たとえば、演算対象のデータワードのビット幅がＮの場合、各エントリの演算には、４・Ｎマシンサイクルが必要となる。演算対象のデータワードのビット幅は、８ビットから６４ビット程度である。エントリ数ｍを、たとえば１０２４と大きくすることにより、並列演算処理時に、たとえば８ビットデータの場合、３２マシンサイクルで１０２４個の演算結果を得ることができ、１０２４組のデータをシーケンシャルに処理する場合に比べて大幅に処理時間を短縮することができる
また、ビットシリアル態様で演算処理を行なっており、処理されるデータのビット幅は固定されないため、種々のデータ構成を有する種々のアプリケーションに容易に適応することができる。
【００５４】
図６は、基本演算ブロックＦＢｉにおけるコントローラ２２の構成を示す図である。この基本演算ブロックＦＢｉにおいて、主演算回路２０においては、先の図１に示す構成と同様、メモリセルマット３０、演算処理ユニット群３５およびＡＬＵ間相互接続用スイッチ回路３２が設けられる。この図６においては、メモリセルマット３０と演算処理ユニット群３５の間に設けられる書込／読出回路３８を併せて示す。この書込／読出回路３８は、エントリＥＲＹそれぞれに対応して設けられるセンスアンプおよびライトドライバＳＡＷを含む。このメモリセルマット３０において、列方向に延在してエントリＥＲＹに共通にワード線が配設され、各エントリそれぞれにおいてビット線が対をなして配置される。図６においては、メモリセルマット３０の列（ワード線）および行（ビット線）を選択するための回路は示していない。
【００５５】
コントローラ２２は、マイクロ命令メモリ２１からフェッチしたデータをデコードし、各種制御信号を生成する命令デコーダ４０と、マイクロ命令メモリ２１へのアドレスを生成するプログラムカウンタ４１と、このプログラムカウンタ４１のカウント値を更新するＰＣ（プログラムカウント）計算ユニット４２と、複数の汎用レジスタＲｘを含む汎用レジスタ群４３と、汎用レジスタ群４３の汎用レジスタの内容に対して条件判断などの演算を実行する演算回路（ＡＬＵ）４４と、この基本演算ブロックＦＢｉの各種制御情報を格納する制御レジスタ群４５を含む。制御レジスタ群４５は、演算器（ＡＬＵ）４４の実行結果を格納する制御レジスタ（ステータスレジスタ）４５ｓと、割込コントローラ４４およびＤＭＡコントローラ１３と通信を行なう出力ポートレジスタ４５ｏおよび入力ポートレジスタ４５ｉを含む。
【００５６】
コントローラ２２は、さらに、メモリセルマット３０に対するアドレスを計算するアドレス計算ユニット４６と、このアドレス計算ユニット４６により計算されたアドレスを格納して主演算回路２０へ与えるアドレスレジスタ群４７を含む。このアドレスレジスタ群４７は、エントリ内の各データに対するアドレスを生成するアドレスレジスタＡｘを含む。
【００５７】
マイクロ命令メモリ２１には、必要とされるシーケンス処理がコード化されたマイクロプログラムが格納される。命令デコーダ４０が、このマイクロ命令メモリ２１からフェッチしたマイクロ命令をデコードし、コントローラ２２内の各モジュールに対する制御信号生成し、また主演算回路２０に対する制御信号を生成する。いわゆるファームウェアにっより、高速で必要とされる処理を実行することができる。図６において、命令デコーダ４０から、書込／読出回路３８に含まれるセンスアンプ／ライトドライバＳＡＷに対する読出／書込制御信号（ＲＷ制御）と、演算処理ユニット群３５に含まれるＡＬＵ３１に対する実行すべき演算内容を指示するＡＬＵ制御信号と、ＡＬＵ間相互接続用スイッチ回路３２における接続を制御するスイッチ制御信号を代表的に示す。
【００５８】
このコントローラ２２には、また汎用レジスタ群４３とワークデータメモリ２３の間でデータのロード／ストアを行なうためのメモリインターフェイス（Ｉ／Ｆ）４８が設けられる。
【００５９】
図１に示すホストＣＰＵ（８）は、制御レジスタ群４５に含まれるステータスレジスタ４５ｓの格納データにより、コントローラ２２の実行状態を監視し、この基本演算ブロックＦＢｉの動作状況を確認する。コントローラ２２は、システムバスインターフェイス２４を介して、ホストＣＰＵ（８）から制御権を手渡されて、この基本演算ブロックＦＢｉ内の処理動作を制御する。
【００６０】
図７は、図４に示す加算演算処理に対応するマイクロ命令で記述されるマイクロプログラムの一例を示す図である。図７において、マイクロプログラムの行番号の次に、実行されるマイクロ命令を示す。プログラム命令列における“／／”は、次の命令列に対する処理内容を規定する見出しである。各命令行に対応して、右側の“／／”の次に、対応の命令の処理内容を示すコメントが付される。マイクロ命令として実行されるのは、図７において、行番号の次に示される命令である。
【００６１】
“ＬＤ  Ａｘ，♯ｉｍｍ”命令は、アドレスレジスタ群４７に含まれるアドレスレジスタＡｘに定数値♯ｉｍｍを設定する命令である。
【００６２】
“ＬＤ  Ｒｘ，♯ｉｍｍ”命令は、汎用レジスタ群４３に含まれる汎用レジスタＲｘに定数値♯ｉｍｍを設定する命令である。
【００６３】
“ＬＤ  Ｏｕｔｐｏｒｔ，♯ｉｍｍ”命令は、制御レジスタ群４５に含まれる出力ポートレジスタ４５ｏに定数値♯ｉｍｍを設定する命令である。
【００６４】
“Ｓｅｔ  Ｉｄｌｅ”は、制御レジスタ群４５のステータスレジスタ（制御レジスタ）４５ｓに空き状態を示すアイドルビットを設定する命令である。
【００６５】
“Ｉｎｃ  Ａｘ”命令は、アドレスレジスタＡｘに対する１加算命令である。
【００６６】
“ＢＮＥ  Ｒｘ，Ｌａｂｅｌ”命令は、汎用レジスタＲｘのレジスタ値が０以外の場合、“Ｌａｂｅｌ”が示す命令に分岐することを示す分岐命令である。
【００６７】
“Ａｄｄ  Ｒｘ，♯ｉｍｍ”命令は、汎用レジスタＲｘの格納値に定数値♯ｉｍｍを加する命令である。この加算は、符号付きで実施され、定数値♯ｉｍｍとして負の数を指定することができる。
【００６８】
“ＭｅｍＬｄ  Ａｘ”命令は、主演算回路２０に対する制御命令であり、アドレスレジスタＡｘに格納されたアドレスが示すメモリセルマット３０のアドレスから演算処理ユニット群３５にデータをロードする命令である。このロードされたデータは、ＡＬＵ３１内に含まれるフリップフロップ（またはレジスタ）により保持される。
【００６９】
“ＭｅｍＬｄＡｄｄ  Ａｘ”命令は、アドレスレジスタＡｘの格納値で示されるメモリセルマット３０のアドレスからＡＬＵ３１にデータをロードし、このＡＬＵ３１内に保持された値とロードされたデータとの加算を行なう命令である。加算結果、すなわち和（Ｓｕｍ）とキャリー（Ｃａｒｒｙ）情報は、ＡＬＵ３１内のフリップフロップ（レジスタ）に保持される。
【００７０】
“ＭｅｍＳｔＳｕｍ  Ａｘ”命令は、ＡＬＵ３１内の和（Ｓｕｍ）情報を保持したフリップフロップ（レジスタ回路）の内容を、メモリセルマット３０内のアドレスレジスタＡｘが示すアドレス位置に書込む命令である。
【００７１】
“ＭｅｍＳｔＣａｒｒｙ  Ａｘ”命令は、ＡＬＵ３１内のキャリー（Ｃａｒｒｙ）情報を保持したフリップフロップ（レジスタ回路）の内容を、メモリセルマット３０内のアドレスレジスタＡｘの格納値が示すアドレス位置に書込む命令である。
【００７２】
各命令の実行には、１命令サイクルが必要である。ただし、命令行において“｜｜”を挟んで１行に併記される命令は、同一命令サイクルにおいて並列に実行される命令であることを示す。以下、図７に示すプログラムの処理内容を説明する。
【００７３】
行番号０においては、単に初期設定のコメントが付されているだけであり、処理は実行されない。行番号１において、出力ポートレジスタ４５ｏに、加算演算処理を実行する開始ビット♯Ｓｔａｒｔがロードされる。これにより、出力ポートレジスタ４５ｏの初期化が実行される。
【００７４】
行番号２から行番号４において、アドレスレジスタ群４７のアドレスレジスタＡ０、Ａ１、およびＡ２に、それぞれ、データａおよびｂおよび加算結果ｃのアドレス位置を示すポインタ♯Ａｐｏｓ、♯Ｂｐｏｓ、および♯Ｃｐｏｓがそれぞれ設定される。
【００７５】
行番号５において、汎用レジスタ群４３の汎用レジスタＲ０に、定数値２が格納され、ループ処理を行なう際のループ回数が設定される。このループ処理は、ビットシリアルで処理を行なうため、各加算演算が繰返されることを示す。
【００７６】
行番号８において、メモリセルマットにおいてアドレスレジスタＡ０の位置のビットが選択されて、ＡＬＵ３１にロードされる。このロード動作と同一サイクルにおいて、アドレスレジスタＡ０のポインタが１増分される。
【００７７】
行番号９において、メモリセルマットにおいてアドレスレジスタＡ１のポインタが示すビットｂ［ｉ］が選択されてＡＬＵ３１にロードされ、ビットａ［ｉ］およびｂ［ｉ］の加算が実行される。このサイクルにおいて、また、アドレスレジスタＡ１のポインタ値が１増分される。
【００７８】
行番号１０において、加算結果Ｓｕｍが、メモリセルマットのアドレスポインタＡ２が示すビット位置ｃ［ｉ］へ格納される。このときまた、アドレスレジスタＡ２のポインタ値が１増分される。
【００７９】
行番号１１において、汎用レジスタＲ０の格納値に（−１）が加算され、すなわち、汎用レジスタＲ０の格納値が１減分され、加算処理が１回行われたことが示される。
【００８０】
行番号１２において、汎用レジスタＲ０の格納値が０と異なる場合には、再び行番号７のループラベルＡｄｄＬｏｏｐへ戻る。汎用レジスタＲ０の格納値が０の場合には、２ビットの加算処理が完了しているため、次の行番号１３の命令へ進む。行番号１３は、単に以降の処理内容を示すコメント文であり、処理は実行されない。
【００８１】
行番号１４において、ＡＬＵ３１のキャリーを格納するフリップフロップ（レジスタ）の保持するビットが、メモリセルマットのアドレスレジスタＡ２のポインタ値ｃ［２］が示す位置へ格納される。
【００８２】
行番号１５において、再び、以下の処理内容を示すコメント文が付され、待機状態へ遷移する命令が行なわれることが示される。
【００８３】
行番号１６において、処理が完了したため、出力ポートレジスタ４５ｏに、処理が完了したことを示す整数値Ｆｉｎｉｓｈを設定し、また行番号１７において、ステータスレジスタ４５ｓにアイドルビットを設定する。この行番号１６および１７の処理により、基本演算ブロックＦＢｉは、外部のホストＣＰＵ８等に対して、加算演算処理が終了したことを通知する。
【００８４】
図８は、図７に示す行番号８から１０におけるアドレス値の更新を示すタイミング図である。まず、アドレス計算ユニット４６に対し、初期設定命令シーケンスにより、初期アドレスＰＯＳ０が設定される。加算処理ループ実行時において、このアドレス計算ユニット４６に格納されたアドレスポインタＰＯＳ０がアドレスレジスタＡｘに設定されて格納され、データの転送が実行される（ロード／ストア）。このとき、またアドレス計算ユニット４６において、アドレスポインタが更新され次のアドレスＰＯＳ１を指定する。次のサイクルにおいて、アドレス計算ユニット４６が更新されたポインタＰＯＳ１が、アドレスレジスタＡｘに転送される。以降、必要な演算処理が完了するまでこの加算処理ループＡｄｄＬｏｏｐのループに従って、アドレス計算ユニット４６およびアドレスレジスタＡｘの格納ポインタが、データ転送と並行して更新される。
【００８５】
アドレスレジスタ群４を設け、各演算対象データに対するアドレスポインタＡｐｏｓ、Ｂｐｏｓ、およびＣｐｏｓをそれぞれ発生しかつ対応のアドレスレジスタに格納することにより、アドレス更新サイクルとデータの転送サイクルを同一サイクルに設定することができ、命令実行に必要なサイクル数を低減することができる。
【００８６】
図９は、ＡＬＵ３１の構成の一例を示す図である。図９において、ＡＬＵ３１は、指定された演算処理を行なう算術演算論理回路５０と、対応のエントリから読出されたデータを一時的に格納するＡフリップフロップ（レジスタ回路）５２と、対応のエントリから読出されたデータまたは算術演算論理回路５０の演算処理結果データまたはライトドライバへ転送するデータを一時的に格納するＸフリップフロップ（レジスタ回路）５４と、加減算処理時のキャリーまたはボローを格納するＣフリップフロップ（レジスタ回路）５６と、算術演算論理回路５０の演算処理の禁止を指定するマスクデータを格納するＭフリップフロップ（レジスタ回路）５８を含む。
【００８７】
図６に示すセンスアンプおよびライトドライバＳＡＷは、ビット線対ＢＬＰに対応して設けられるライトドライバ６０およびセンスアンプ６２を含む。ライトドライバ６０は、Ｘフリップフロップ５４に格納されたデータをバッファ処理して対応のエントリのメモリセルへ対応のビット線対ＢＬＰを介して書込む。センスアンプ６２は、対応のエントリのメモリセルから読出されたデータを増幅してＡフリップフロップ５２またはＸフリップフロップ５４へその増幅データを内部データ転送線６３を介して転送する。Ｘフリップフロップ５４は、内部データ転送線６４を介して算術演算論理回路５０およびライトドライバ６０に結合される。
【００８８】
ＡＬＵ間接続用スイッチ回路３２は、ＡＬＵ３１に対して設けられるＡＬＵ間接続回路６５を含む。このＡＬＵ間接続回路６５は、たとえばスイッチマトリックスで構成される。
【００８９】
算術演算論理回路５０は、加算（ＡＤＤ）、論理積（ＡＮＤ）、論理和（ＯＲ）、排他的論理和（ＥＸＯＲ：一致検出）、反転（ＮＯＴ）等の演算を実行することができ、その演算内容が、マイクロ命令に基づいてコントローラ２２からの制御信号（図６のＡＬＵ制御）により設定される。Ｍフリップフロップ５８に格納されるマスクデータは、“０”のときに、ＡＬＵ３１の演算処理動作を停止させ、“１”のときに、このＡＬＵ３１の演算処理動作をイネーブルする。この演算マスク機能を利用することにより、仮に全エントリが利用されない場合においても有効エントリに対してのみ演算を実行することができ、正確な処理を行なうことができるとともに、不必要な演算の実行を停止させることにより、消費電流を低減することができる。
【００９０】
この算術演算論理回路５０において、先の２項加算を行なう場合、全加算器を用いて加算を行ない、最終的にＣフリップフロップ５６に格納されたキャリーを図７に示す行番号１４のマイクロ命令に従ってメモリセルマットを対応のビット位置ｃ［２］へ書込む。加算結果ＳｕｍがＸフリップフロップ５４に格納される。
【００９１】
以上のように、この発明の実施の形態１に従えば、基本演算ブロックそれぞれにおいてマイクロ命令メモリを設け、このマイクロ命令メモリに格納されたマイクロ命令に従ってデータの転送（ロード／ストア）および演算処理を実行しており、マイクロ命令の変更のみで演算内容を自由に切り換えることができる。
【００９２】
また、アドレスレジスタおよびアドレス計算ユニットを設けることにより、データ転送動作と並行してアドレス更新を行なうことができ、演算に必要な命令サイクル数を低減することができ、高速処理を実現することができる。
【００９３】
［実施の形態２］
図１０は、この発明の実施の形態２に従う基本演算ブロックＦＢｉの構成を概略的に示す図である。この図１０に示す基本演算ブロックＦＢｉにおいては、コントローラ２２の以下の構成が、先の図６に示す実施の形態１に従うコントローラ２２の構成と異なる。すなわち、コントローラ２２において、ループ命令実行時ループの開始アドレスを格納する開始アドレスレジスタ７０と、ループの終了アドレスを格納する終了アドレスレジスタ７２が設けられる。これらの開始アドレスレジスタ７０および終了アドレスレジスタ７２の格納値は、ＰＣ値計算ユニット４２へ与えられる。この図１０に示すコントローラ２２の他の構成は、図６に示すコントローラ２２の構成と同じであり、対応する部分には同一参照番号を付し、その詳細説明は省略する。
【００９４】
本実施の形態２においては、先の図７に示すマイクロプログラムの行番号１１および１２に示されるループカウンタの減算処理および分岐処理を、１つの命令で行なうループ命令ＬＯＯＰを追加する。
【００９５】
命令“ＬＯＯＰ  Ｒｘ，Ｌａｂｅｌ”は、次の命令からラベルＬａｂｅｌで示される命令の間を、汎用レジスタＲｘの格納値で示された回数繰返す命令である。このループ命令ＬＯＯＰが実行されると、ループ命令の開始アドレスおよび終了アドレスが開始アドレスレジスタ７０および終了アドレスレジスタ７２にそれぞれ格納される。
【００９６】
ＰＣ値計算ユニット４２においては、プログラムカウンタ４１のカウント値と終了アドレスレジスタ７２に格納されるアドレス値とを比較する。このプログラムカウンタ４１のカウント値が終了アドレスと一致すると、ループカウンタとして指定された汎用レジスタＲｘの格納値を１減分する。減算結果が０でない場合には、次のプログラムカウント値として開始アドレスレジスタ７０に格納された開始アドレスを設定する。この汎用レジスタＲｘの格納値が０の場合には、通常の処理と同様、プログラムカウンタ４１のカウント値を１増分して次のアドレスの命令を実行する。
【００９７】
図１１は、この発明の実施の形態２に従うループ命令ＬＯＯＰを用いるマイクロプログラムの一例を示す図である。この図１１に示すマイクロプログラムは、図７に示すマイクロプログラムと同じ処理を実行する。
【００９８】
図１１に示すように、行番号５の命令により、汎用レジスタＲ０に定数２が格納され、ループ回数が指定される。行番号７においてループ命令“ＬＯＯＰ  Ｒ０，ＡｄｄＬｏｏｐＬａｓｔ”が実行される。この場合、ラベル“ＡｄｄＬｏｏｐＬａｓｔ：”で示される命令、すなわち第１１行の命令ＭｅｍＳｔＳｕｍ迄の命令列を、汎用レジスタＲ０に格納された値（２）が示す回数繰返すことが指定される。この行番号７から行番号１０の命令列が、図７に示すマイクロプログラムの命令列と異なる。
【００９９】
図１２は、ループ命令ＬＯＯＰの処理内容を示す図である。以下、図１２を参照して、このループ命令の操作内容について説明する。以下の説明においては、図１１に示すプログラムの行番号を参照する。
【０１００】
行番号０から５の命令群においては、先の図７に示す処理と同様の処理が行なわれ、出力ポートレジスタ４５ｏの初期設定およびアドレスレジスタＡ０−Ａ２および汎用レジスタＲ０の初期設定が行なわれる。汎用レジスタＲｘ（Ｒ０）に、ループ回数２が設定される（ステップＳ１）。
【０１０１】
次いで、行番号７において、ループ命令が実行されると（ステップＳ２）、このループの開始アドレス（行番号８の命令ＭｅｍＬｄのアドレス）およびループの終了アドレス（行番号１１の命令ＭｅｍＳｔＳｕｍのアドレス）が開始アドレスレジスタ７０および終了アドレスレジスタ７２にそれぞれ格納される（ステップＳ３）。このループ命令に到達するまでは、判定ブロックＳ２においてループ命令が実行されるのを待つ。
【０１０２】
ループ開始および終了アドレスが格納された後、プログラムカウンタのポインタＰＣが増分されて（ステップＳ４）、次の行番号８の命令が実行される（ステップＳ６）。これにより、アドレスレジスタＡ０に格納されたアドレスに対応するメモリセルデータがＡＬＵにロードされ、またアドレスレジスタＡ０のポインタが１増分される。
【０１０３】
このステップＳ６の命令実行と並行して分岐判定がステップＳ５以降において実行される。いま、ＰＣ値計算ユニット４２のカウンタ値は、終了アドレスに等しくないため（ステップＳ５）、プログラムカウンタ４１のカウント値ＰＣが１増分され（ステップＳ４）、次の行番号９の命令ＭｅｍＬｄＡｄｄが実行される（ステップＳ６）。この行番号９の命令アドレス（プログラムカウンタ４１のカウント値）は、ループ終了アドレスに等しくないため、プログラムカウンタ４１のカウント値が１増分されて、次の行番号１０のラベルが指定する行番号１１の命令が実行される（ステップＳ４およびＳ６）。
【０１０４】
この行番号１１の命令のアドレス（プログラムカウンタ４１のカウント値）が、終了アドレスレジスタ７２に格納される終了アドレスと等しいため、ステップＳ５における判断結果に従って、汎用レジスタＲ０に格納されたレジスタ値は１減分される（ステップＳ７）。
【０１０５】
次いで、このレジスタ格納値Ｒｘが０に等しいか否かの判断が行なわれる（ステップＳ８）、まだ１回目であるため、ＰＣ値計算ユニット４２は、プログラムカウンタ４１のカウント値ＰＣを開始アドレスレジスタ７０に格納された開始アドレスに設定し（ステップＳ９）、再びステップＳ６へ戻る。以降、ステップＳ４からステップＳ７の動作が繰返される。
【０１０６】
ステップＳ８において、行番号１１の命令完了後、汎用レジスタＲｘ（Ｒ０）のレジスタ値が０となると、ループ処理が完了したと判定され、ＰＣ値計算ユニット４２はプログラムカウンタ１１のカウント値を１増分する（ステップＳ１０）。これにより、ループ処理が終了し、次の行番号１３の命令が行なわれ、キャリーがビット位置ｃ［２］へ書込まれる。
【０１０７】
したがって、このループ命令ＬＯＯＰにおいてループ命令自体は、１回だけ実行され、すなわち１回だけループ状の分岐が行なわれ、第８行から第１１行までの３命令がループ処理として実行される。
【０１０８】
なお、この終了アドレスの格納としては、行番号１０のラベルＡｄｄＬｏｏｐＬａｓｔに到達したときに、次の命令のアドレスが、終了アドレスレジスタ７２に格納されてもよい。ラベル到達時に終了アドレスを格納しても、この行番号１０のラベルにより比較ステップＳ５が実行され、その実行結果に従って行番号１１または行番号７への分岐が判定されるため、正確な分岐処理を行なうことができる。
【０１０９】
このループ命令ＬＯＯＰを追加することにより、図７に示すマイクロプログラムにおける行番号１１および１２のように、ループ分岐判定のために主演算回路が動作待機状態となるサイクルをなくすことができ（行番号９の命令実行と並行して、ループ分岐判定処理が行なわれる）、最小サイクル数でループ処理を行なうことができる。（図１２に示すフロー図においては、ステップＳ５からステップＳ８が、命令実行ステップＳ６と並行して実行される。）
以上のように、この発明の実施の形態２に従えば、ループ演算命令を準備しているため、主演算回路が非動作状態となる期間を低減することができ、高速処理が実現される。
【０１１０】
［実施の形態３］
図１３は、この発明の実施の形態３に従う基本演算ブロックＦＢｉの構成を概略的に示す図である。図１３において、主演算回路２０において、２つのメモリセルマット３０Ａおよび３０Ｂが設けられる。これらのメモリセルマット３０Ａおよび３０Ｂそれぞれに対して、読出／書込回路３８Ａおよび３８Ｂが設けられる。メモリセルマット３０Ａおよび３０Ｂは、同一構成を有し、それぞれ複数のエントリＥＲＹに分割される。読出／書込回路３８Ａおよび３８Ｂにおいて、エントリＥＲＹそれぞれに対応して、センスアンプおよびライトドライバＳＡＷが設けられる。
【０１１１】
これらのメモリセルマット３０Ａおよび３０Ｂは、互いに分離されたビット線対を介して演算処理ユニット３５に含まれる対応のＡＬＵ３１に結合される。したがってこれらのメモリセルマット３０Ａおよび３０Ｂは、個々にアクセスが可能である。主演算回路２０においては、また、先の実施の形態１および２と同様、演算処理ユニット３５のＡＬＵ３１間の接続経路を切換えるためのＡＬＵ間相互接続用スイッチ回路３２が設けられる。
【０１１２】
メモリセルマット３０Ａおよび３０Ｂの動作を制御するために、アドレス計算ユニット４６Ａおよび４６Ｂとアドレスレジスタ群４７Ａおよび４７Ｂが設けられる。アドレス計算ユニット４６Ａおよびアドレスレジスタ群４７Ａにより、メモリセルマット３０Ａに対するアドレスが生成され、アドレス計算ユニット４６Ｂおよびアドレスレジスタ群４７Ｂにより、メモリセルマット３０Ｂに対するアドレスが生成される。メモリセルマット３０Ａおよび３０Ｂに含まれるメモリセルは、後に説明するように、デュアルポートＳＲＡＭメモリセルであり、書込ポートと読出ポートとを有し、これらのアドレスレジスタ群４７Ａおよび４７Ｂは、各々、書込アドレスおよび読出アドレスを別々に生成する。
【０１１３】
命令デコーダ４０は、演算処理ユニット３５における演算処理内容を規定するＡＬＵ制御信号を生成し、またＡＬＵ間相互接続スイッチ回路３２の接続経路を設定するスイッチ制御信号を生成する。この命令デコーダ４０は、読出／書込回路３８Ａおよび３８Ｂに対し、書込制御信号（ライト制御）を生成する。メモリセルは、ＳＲＡＭセルであり、読出／書込回路においてセンスアンプは、アクセス時センスアンプおよびライトドライバＳＡＷに含まれるセンスアンプが常時活性化され、ライトドライバの活性／非活性のみが、命令デコーダ４０からのライト制御信号に従って行なわれる。
【０１１４】
この図１３に示すコントローラ２２の他の構成は、先の実施の形態２における図１０に示すコントローラ２２の構成と同じであり、対応する部分には同一参照番号を付し、その詳細説明は省略する。
【０１１５】
図１４は、図１３に示すメモリセルマット３０Ａおよび３０Ｂに含まれるメモリセルＭＣの構成の一例を示す図である。図１４において、メモリセルＭＣは、書込ポートと読出ポートとが別々に設けられたデュアルポートメモリセル構造を有する。このメモリセルＭＣに対しては、読出ワード線ＲＷＬおよび書込ワード線ＷＷＬが設けられ、また読出ビット線ＲＢＬおよび／ＲＢＬと書込ビット線ＷＢＬおよび／ＷＢＬとが設けられる。読出ポートは、読出ワード線ＲＷＬの信号電位に応答してストレージノードＳＮ１およびＳＮ２をそれぞれ読出ビット線ＲＢＬおよび／ＲＢＬに接続するＮチャネルＭＯＳトランジスタＮＱ５およびＮＱ６を含む。書込ポートは、書込ワード線ＷＷＬ上の信号電位に応答してストレージノードＳＮ１およびＳＮ２をそれぞれ書込ビット線ＷＢＬおよび／ＷＢＬに接続するＮチャネルＭＯＳトランジスタＮＱ７およびＮＱ８を含む。
【０１１６】
メモリセルＭＣのデータ記憶部は、先の実施の形態１において示したものと同様、負荷ＰチャネルＭＯＳトランジスタＰＱ１およびＰＱ２と、ドライブ用ＮチャネルＭＯＳトランジスタＮＱ１およびＮＱ２を含む。
【０１１７】
この図１４に示すデュアルポートメモリセル構造を利用することにより、ビットシリアル態様でデータの演算処理を行なう場合、書込および読出用すなわちストアおよびロードを同時に行なうことができる。演算結果が書込まれる領域は、演算対象のデータが格納される領域とは別に設けられており、選択メモリセルにおいて書込データおよび読出データの衝突の問題は生じず、通常のマルチポートメモリにおけるアドレスアービトレーションの問題は生じない。
【０１１８】
図１５は、図１３に示すメモリセルマット３０Ａおよび３０ＢのセンスアンプおよびライトドライバＳＡＷおよびＡＬＵ３１の構成を概略的に示す図である。図１５において、読出／書込回路３８Ａにおいては、センスアンプおよびライトドライバＳＡＷは、書込ビット線対ＷＢＬＰＡに結合されるライトドライバ６０Ａと、読出ビット線対ＲＢＬＰＡに結合されるセンスアンプ６２Ａを含む。読出／書込回路３８ＢにおいてセンスアンプおよびライトドライバＳＡＷは、書込ビット線対ＷＢＬＰＢに結合されるライトドライバ６０Ｂと、読出ビット線対ＲＢＬＰＢに結合されるセンスアンプ６２Ｂを含む。
【０１１９】
この図１５に示すように、メモリセルマット３０Ａおよび３０Ｂは、演算処理ユニット３５（ＡＬＵ３１）を中心として、対称的に配置される。メモリセルマット３０Ａおよび３０Ｂにおけるビット線対の配線レイアウトを容易とする。
【０１２０】
ＡＬＵ３１は、先の図９に示すＡＬＵ３１の構成と異なり、センスアンプ６２Ａの出力データを格納するＡフリップフロップ５２Ａと、センスアンプ６２Ｂの出力データを格納するＡフリップフロップ５２Ｂを含む。Ｘフリップフロップ５４は、ライトドライバ６０Ａおよび６０Ｂに共通に結合される。算術演算論理回路５０に対しては、Ａフリップフロップ５２Ａおよびおよび５２Ｂの格納データが演算対象データとして与えられ、演算結果がＸフリップフロップ５４に格納される。
【０１２１】
このＡＬＵ３１においては、また、キャリーまたはボローを格納するＣフリップフロップ５６およびこのＡＬＵ３１の活性／非活性を示すマスクデータを格納するＭフリップフロップ５８が設けられる。
【０１２２】
この図１５に示すＡＬＵ３１を利用する場合、センスアンプ６２Ａおよび６２Ｂからのデータのラッチと並行して、Ｘフリップフロップ５４から、ライトドライバ６０Ａまたは６０Ｂを介して演算結果データを書込むことができる。
【０１２３】
図１６は、この主演算回路２０に含まれるメモリセルマット３０Ａおよび３０Ｂの具体的配置を概略的に示す図である。図１６に示す主演算回路２０においては、演算処理ユニット３５の両側に、メモリセルマット３０Ａおよび３０Ｂが配置される。これらのメモリセルマット３０Ａおよび３０Ｂが、同一構成を有し、それぞれにおいてデータビット幅がｎビットのエントリＥＲＹがｍ個配置される。
【０１２４】
ＡＬＵ３１は、メモリセルマット３０Ａおよび３０Ｂの対応のエントリのデータについて指定された演算処理を行なう。２項演算を、ＡＬＵ３１がそれぞれ行なう場合、メモリセルマット３０Ａおよび３０Ｂに各項の演算対象データを格納し、その演算処理結果を、メモリセルマット３０Ａおよび３０Ｂの一方に格納する。
【０１２５】
メモリセルＭＣが、デュアルポートメモリセルであり、このＡＬＵ３１に対する演算対象データの転送（ロード）と、演算結果データの転送（ストア）を並行して行なうことができる。
【０１２６】
図１７は、この発明の実施の形態３に従う２項加算演算実行のためのマイクロ命令プログラムの一例を示す図である。以下、図１７を参照して、この発明の実施の形態３に従う基本演算ブロックの処理について説明する。
【０１２７】
この図１７に示すマイクロ命令プログラムにおいては、行番号０から５において、先の実施の形態２と同様の処理が実行される。すなわち、行番号２から行番号４の命令“ＬＤ  Ａｘ，♯ｉｍｍ”により、アドレスポインタＡ０−Ａ２に、それぞれアクセスすべきデータの先頭アドレス（データの最下位ビットのアドレス）が設定される。一例として、アドレスレジスタＡ０には、メモリセルマット３０Ａに対するアドレスが設定され、アドレスレジスタＡ１には、メモリセルマット３０Ｂに対するアドレスが設定される。演算後のデータｃに対するアドレスを格納するアドレスレジスタＡ２に、メモリセルマット３０Ａまたは３０Ｂの一方の先頭アドレスを設定する。
【０１２８】
行番号５の命令“ＬＤ  Ｒ０，♯２”により、制御レジスタＲ０に、ループ回数（２回）が設定される。
【０１２９】
次いで、行番号７において、ループ命令が実行され、このループ命令の開始アドレス（行番号８の命令のアドレス）に対応するアドレスおよび行番号９の命令に対するアドレスがそれぞれ開始アドレスおよび終了アドレスとして格納される。この場合、マイクロ命令メモリの同一アドレスに、これらの行番号８および９のラベルおよび命令が格納される場合には、開始アドレスおよび終了アドレスは同一アドレスとなる。
【０１３０】
この行番号９の命令群においては、加算、加算結果の格納およびアドレスの増分が並行して実行される。すなわち、この行番号９の命令に従って、アドレスレジスタＡ０の格納するアドレスのメモリセルが読出されて対応のＡＬＵに転送され、また、これと並行して、アドレスレジスタＡ１に格納されるアドレスのメモリセルのデータが、対応のメモリセルマットから読出されて対応のＡＬＵに転送される。この転送動作時においては、メモリセルのリードワード線ＲＷＬが選択状態へ駆動され、読出ビット線ＲＢＬおよび／ＲＢＬを介して対応のＡＬＵのＡフリップフロップ５２Ａおよび５２Ｂにデータが転送される。
【０１３１】
この転送動作と加算が行なわれた後、その加算結果が同一サイクル内で、アドレスレジスタＡ２が示すアドレス位置に格納される。この書込時においては、書込ワード線ＷＷＬが選択状態へ駆動され、書込ビット線ＷＢＬおよび／ＷＢＬを介してデータの転送が行なわれる。このロード、加算およびストアが、１マシンサイクル内において前半サイクルでロードおよび加算が行なわれ後半サイクルで、この加算結果（Ｓｕｍ）の転送が行なわれればよい。また、これに代えて、加算結果の格納は、演算対象データのロードの次のサイクルにおいて行われても良い。この場合、次の演算対象データのロードとストアが並行して行われる。
【０１３２】
このロード、加算およびストア動作実行それぞれと並行して、アドレスレジスタＡ０、Ａ１およびＡ２のポインタ値が１増分される。
【０１３３】
ループ命令ＬＯＯＰを実行しており、先の図１２に示すフローと同様の処理が行なわれ、行番号９の命令は、ループ命令の終了アドレスであり、レジスタＲ０の格納値が１減分されて、そのレジスタ格納値が０と等しいかの判定が行なわれる。１回目の演算処理時においては、制御レジスタＲ０の格納値は１であり、再び、行番号８に戻って、ラベルＡｄｄＬｏｏｐＬａｓｔで始まる命令が実行される。
【０１３４】
２回目のロード、加算およびストア演算が完了すると、再び、汎用レジスタＲ０の格納値が減分されて、レジスタ値が０でないかの判定が行なわれる。この汎用レジスタＲ０の格納値はこのときには０となり、ループ命令の実行シーケンスが完了し、プログラムカウンタのカウント値が１増分され、行番号１１の命令が実行され、キャリーが、アドレスレジスタＡ２が指定するメモリセル位置へ格納される。
【０１３５】
以降、行番号１２から１４において、先の実施の形態１および２と同様の処理が行なわれ、制御レジスタへの制御ビットの格納により、加算演算終了の通知が外部のホストＣＰＵ等へ行なわれる。
【０１３６】
アドレスレジスタ群４７Ａおよび４７Ｂをそれぞれメモリセルマット３０Ａおよび３０Ｂに対して別々に設けることにより、この行番号２から行番号４に示されるロード命令を、１サイクルで並行して実行することができる（図１７に示すプログラムシーケンスにおいては、これらが順次格納されるように示す）。したがって、このアドレスポインタの設定に要する動作サイクル数を低減することができ、処理サイクル数を低減することができる。これらのアドレスレジスタＡ０−Ａ２にポインタを設定する場合、マイクロ命令として、行先アドレスにアドレスレジスタＡ０、Ａ１およびＡ２をそれぞれ指定し、それぞれに格納されるポインタ値を、制御フィールドに格納し、演算すべき実行命令“ＬＤ”をソースオペランドフィールドに格納することにより、容易に実現される。
【０１３７】
このデュアルポートメモリセルを利用することにより、ループ命令においては、１サイクルで、ロード、加算、およびストアを実行することができ、先の実施の形態２におけるループ命令を利用する処理に比べて、演算処理サイクル数が低減され、処理性能として、３倍の性能のループ処理を実現することができる。
【０１３８】
なお、このデュアルポートメモリセルが利用される場合、メモリセルマット３０Ａまたは３０Ｂのみが利用される場合には、読出アドレス用のレジスタと書込アドレス用のレジスタとそれぞれのアドレス計算ユニットを設けることにより、１つのメモリセルマットに対し、ロードとストアを並行して実行することができる。
【０１３９】
以上のように、この発明の実施の形態３に従えば、メモリセルマットを複数のマットに分割し、各分割マットもデュアルポートメモリセルを配置しており、また各メモリセルマットに対してアドレス計算ユニットおよびアドレスレジスタ群を設けており、ロード、演算およびストア操作を同一サイクルで実行することができ、高速処理を実現することができる。
【０１４０】
なお、データのロード、演算およびストアを同一サイクルで実行する場合、例えば、ＡＬＵ内のフリップフロップをすべてスルー状態に設定して与えられたデータをすべてその出力部を介して転送する構成を利用する。演算処理をスタティックに実行することにより、転送データ（ロードデータ）に対してスタティックに演算処理を行なって演算処理後のデータをライトドライバを介して対象のメモリセルへ転送して書込むことができる。
【０１４１】
［実施の形態４］
図１８は、この発明の実施の形態４において一例として実行される演算処理の内容を概略的に示す図である。この発明の実施の形態４においては、画像データＰに対して、フィルタ処理を実行する。すなわち、図１８に示すように、注目画素Ｐ（ｉ，ｊ）に対し上下左右の隣接画素Ｐ（ｉ−１，ｊ）、Ｐ（ｉ＋１，ｊ）、Ｐ（ｉ，ｊ−１）、およびＰ（ｉ，ｊ＋１）を用いて、この図１８に示すフィルタマトリクスを適用して、フィルタ後の画素Ｂ（ｉ，ｊ）を生成する。すなわち、次式で示されるフィルタ処理を行なって、エッジ強調画像を求める。
【０１４２】
Ｂ（ｉ，ｊ）
＝５・Ｐ（ｉ，ｊ）−Ｐ（ｉ−１，ｊ）−Ｐ（ｉ＋１，ｊ）
−Ｐ（ｉ，ｊ−１）−Ｐ（ｉ，ｊ＋１）
０≦ｉ＜Ｎ−１、
０≦ｊ＜Ｍ−１
ここで、ＮおよびおよびＭは、１フレームの画像データの画素行および画素列の数を示す。したがって、このエッジ強調フィルタ処理においては、注目画素Ｐ（ｉ，ｊ）に対する処理として、注目画素データに加えて隣接４画素のデータが必要となる。
【０１４３】
図１９は、この発明の実施の形態４における信号処理システムの画像データのフィルタ処理に関連する部分の構成を概略的に示す図である。図１９において、システムＬＳＩ２においては、２つの基本演算ブロックＦＢＡおよびＦＢＢが用いられる。これらの基本演算ブロックＦＢＡおよびＦＢＢは、ＤＭＡコントローラ１３に対し、ＤＭＡ転送要求ＤＭＡＲＱを出力する。このＤＭＡコントローラ１３は、ＤＭＡ転送要求発生時、外部バスコントローラ１４を介して外部システムバス３に結合される大容量メモリ（ＳＤＲＡＭ）４のデータを読出し、内部システムバス７を介して基本演算ブロックＦＢＡまたはＦＢＢに必要なデータを転送する。
【０１４４】
このＳＤＲＡＭ４において、処理対象の画像データが格納される。一例として、１フレームの画像データのサイズとして、ＶＧＡサイズ（ビデオ・グラフィックス・アレイ）を考える。このＶＧＡでは、６４０・４８０画素により１フレームが構成される（Ｍ＝６４０、Ｎ＝４８０）。演算ブロックＦＢＡおよびＦＢＢは、それぞれ、３行（ライン）の画素（６４０ｘ３＝１９２０画素）のデータを処理することができると仮定する。この画像データを、ＳＤＲＡＭ４に格納し、基本演算ブロックＦＢＡおよびＦＢＢを、パイプライン態様で動作させ、高いスループットでフィルタ演算処理を実行する。
【０１４５】
このフィルタ演算処理の基本演算ブロックとＳＤＲＡＭ４とのデータ転送のためのマイクロ命令列は、ホストＣＰＵ８により実行される。フィルタ処理用のマイクロプログラムは、各基本演算ブロックＦＢＡおよびＦＢＢのマイクロ命令メモリに格納され、対応のコントローラ（２１）の制御の下にエッジ強調フィルタ演算処理が実行される。
【０１４６】
図２０は、この発明の実施の形態４に従う信号処理システムのホストＣＰＵの処理シーケンスを示すフロー図である。以下、図２０を参照して、この図１９に示す信号処理システムの動作について説明する。
【０１４７】
ステップＳＴ１：
基本演算ブロックＦＢＡに対して３行の画素に対するフィルタ演算のためのマイクロプログラムが、対応のマイクロ命令メモリ（２１）に設定される。このマイクロプログラムの設定後、フレームの第０行から第２行の画素データを、ＳＤＲＡＭ４から外部バスコントローラ１４および内部システムバス７を介して基本演算ブロックＦＢＡのメモリセルマットに転送する。この転送動作が完了すると、基本演算ブロックＦＢＡの演算を起動し、その演算ブロックＦＢＡにおいて、そのマイクロ命令メモリに格納されたマイクロプログラムに従ってフィルタ演算処理が開始される。この転送およびデータのメモリセルマットの格納の完了は、たとえば制御レジスタ群４５に含まれるステータスレジスタに格納されるビット値をモニタすることにより参照される。たとえば、図６に示す入力ポートレジスタ４５ｉにデータ転送時ビットがセットされ、この基本演算ブロックＦＢＡにおける演算の待ち合せが指定されてもよい。
【０１４８】
ステップＳＴ２：
基本演算ブロックＦＢＡにおいて、マイクロ命令メモリに格納されたマイクロプログラムに従ってフィルタ演算処理が実行される。基本演算ブロックＦＢＡにおいて第１行の画素に対するフィルタ演算処理が実行されている間に並行して、ホストＣＰＵ８は、基本演算ブロックＦＢＢに対し、同様、３行の画素に対するフィルタ演算のためのマイクロプログラムをマイクロ命令メモリへ格納し、また第２３９行から第２４１行の画素データをこの基本演算ブロックＦＢＢへＳＤＲＡＭ４から転送し、対応のメモリセルマットに格納する。
【０１４９】
基本演算ブロックＦＢＡにおいては第１の行の画素に対するフィルタ演算処理が完了すると、ＤＭＡコントローラ１３に対しＤＭＡ転送要求ＤＭＡＲＱを発行する。ＤＭＡ転送要求ＤＭＡＲＱは、例えば、制御レジスタ群に含まれる出力ポートレジスタにビットを立てることにより発行される。
【０１５０】
ステップＳＴ３：
ＤＭＡコントローラ１３は、このこの基本演算ブロックＦＢＡからのＤＭＡ転送要求を受けると、基本演算ブロックＦＢＡからの演算結果データをＳＤＲＡＭ４に転送し、この転送完了後、第３行の画素データを基本演算ブロックＦＢＡに転送する。基本演算ブロックＦＢＡにおいては、この第０行の画素データ格納領域に、新たに転送された第３行の画素データを順次格納する。これにより、処理の完了した第０行の画素データが、新たな第３行の画素データで置換される。
【０１５１】
また、基本演算ブロックＦＢＡとＳＤＲＡＭ４との間のＤＭＡモードでのデータ転送と並行して、基本演算ブロックＦＢＢにおいて第２４０行の画素データに対するフィルタ演算が実施される。このフィルタ演算処理完了後、基本演算ブロックＦＢＢは、その出力ポートレジスタを介してＤＭＡ転送要求ＤＭＡＲＱを発行する。
【０１５２】
ステップＳＴ４：
基本演算ブロックＦＢＡは、第３行の画素データの転送完了後、第２行の画素に対してフィルタ演算を実行する。一方、基本演算ブロックＦＢＢにおいては、ＤＭＡ転送要求発行に従って、ＤＭＡモードで、第２４０行の画素についてのフィルタ演算結果をＳＤＲＡＭ４に転送し、その転送完了後、ＳＤＲＡＭ４から次の第２４２行の画素データを受ける。この第２４２行の画素データは、先に格納された第２３９行の画素データと置換される。
【０１５３】
ステップＳＴ５：
基本演算ブロックＦＢＡにおいて第２行の画素データに対するフィルタ演算処理完了後、ＤＭＡ転送要求を発行し、ＤＭＡコントローラの制御の下に、ＤＭＡモードで、基本演算ブロックＦＢＡからＳＤＲＡＭ４に対して、第２行の画素のフィルタ演算結果データが転送される。この転送完了後、ＳＤＲＡＭ４は、第４行の画素データを基本演算ブロックＦＢＡに転送する。この新たに転送される第４行の画素データは、基本演算ブロックＦＢＡのメモリセルマットの第１行の画素データ格納領域に格納される。
【０１５４】
一方、基本演算ブロックＦＢＢにおいては、転送された画素データを用いて第２４１行の画素に対するフィルタ演算処理を実行する。このフィルタ演算処理完了後、ＤＭＡ転送要求ＤＭＡＲＱを発行する。
【０１５５】
以降、同様の処理がステップＳＴ６以降繰返し交互に実行される。
【０１５６】
すなわち、ステップＳＴ５からステップＳＴ４８１において、ステップＳＴ３およびＳＴ４の処理が、対象画素ラインを１ずつ増分しつつ２３９回繰返される。ステップＳＴ４８１の処理完了時において、１画面の画素に対するフィルタ演算処理が完了する。
【０１５７】
上述のように、ＤＭＡ転送および演算処理を、基本演算ブロックＦＢＡおよびＦＢＢにおいて交互に実行することにより、システム全体として、効率的に演算処理を実行することができる。
【０１５８】
図２１は、この発明の実施の形態４に従う信号処理システムの信号処理シーケンスを模式的に示す図である。図２１において、基本演算ブロックＦＢＡおよびＦＢＢにおいて、３ラインの画素についてのエッジ強調フィルタを行なうマイクロ命令がマイクロ命令メモリ２１に格納される。コントローラ２２は、このマイクロ命令メモリ２１に格納されるマイクロプログラムに従って演算処理を実行する。
【０１５９】
ＳＤＲＡＭ４においては、まずホストＣＰＵの制御の下に、３ラインの画素データが、基本演算ブロックＦＢＡおよびＦＢＢのメモリセルマット３０へそれぞれ格納する。次いで、演算処理ユニット３５およびＡＬＵ間接続用スイッチ回路（ＡＬＵスイッチ）２０を用いて基本演算ブロックＦＢＡおよびＦＢＢが、各々、対応のコントローラ２２の制御の下に演算処理を実行する。
【０１６０】
基本演算ブロックＦＢＡおよびＦＢＢは、それぞれ３ラインのエッジ強調フィルタ処理が１行の画素について終了すると、ＤＭＡ転送モードＤＭＡ３およびＤＭＡ４に従って、その１ラインのフィルタ演算処理後の画素データをＳＤＲＡＭ４へ転送する。一方、このときまた、ＳＤＲＡＭ４からは、次の処理前の画素データの１ラインが、ＤＭＡ転送モードＤＭＡ１およびＤＭＡ２に従って基本演算ブロックＦＢＡおよびＦＢＢにそれぞれ転送されて、不用ラインの画素データとの置換が行なわれる。したがって、メモリセルマット３０において３ライン（行）の画素データを格納して、フィルタ演算処理が実行される。
【０１６１】
図２２は、このＤＭＡ転送時のメモリセルマットのアドレスポインタの変化を示す図である。メモリセルマット３０は、一例として４つの領域ＭＡ−ＭＤに分割される。分割領域ＭＤは、作業領域であり、中間値を格納する領域として利用される。分割領域ＭＡ−ＭＣに、それぞれ異なる行の画素データが格納される。図２２（ａ）に示すように、初期状態時においては、分割領域ＭＡ、ＭＢおよびＭＣの初期アドレスポインタがそれぞれＲＰ０、ＲＰ１およびＲＰ２に設定される。この分割領域ＭＡ、ＭＢおよびＭＣには、それぞれ第０行、第１行および第２行の画素データが格納される。アドレスポインタＲＰ１が、フィルタ演算処理対象の画素データの領域を指定し、アドレスポインタＲＰ０が、フィルタ処理対象の画素の上の行の画素の領域を示し、ポインタＲＰ２が、フィルタ演算処理対象の画素ラインの下のラインの画素領域を示す。したがって、この図２２（ａ）においては、ポインタＲＰ１が指定する分割領域ＭＢに格納される画素データに対してフィルタ演算処理が実行される。
【０１６２】
ＤＭＡ転送モード時においては、書込ポインタＷＰが分割領域ＭＡを指定し、転送ポインタＴＰが、分割領域ＭＢを指定する。分割領域ＭＢに、フィルタ演算処理後のデータが格納されており、この転送ポインタＴＰに従って、分割領域ＭＢのフィルタ演算後の画素データが転送される。一方、書込ポインタＷＰが指定する領域ＭＡに対し次の第３行の画素データが格納される。したがって、この転送完了時において、図２２（ｂ）に示すように、処理対象画素を指定するポインタＲＰ１が、分割領域ＭＣを示し、上側ライン画素指定ポインタＲＰ０が分割領域ＭＢを示し、下側ライン画素領域指定ポインタＲＰ２が分割領域ＭＡを示す。これにより、分割領域ＭＣに格納された第２行の画素データについてフィルタ演算処理が実行される。
【０１６３】
この第２行の画素データのフィルタ演算処理実行完了後、転送ポインタＴＰは、分割領域ＭＣを示しており、書込ポインタＷＰは、分割領域ＭＢを示す。したがって、この場合には、分割領域ＭＣに格納された第２行の画素データ（フィルタ演算処理後）が転送され、分割領域ＭＢに次の行の第４行の画素データが格納される。この格納後、図２２（ｃ）に示すように各ポインタがシフトされ、処理対象領域ポインタＲＰ１が、分割領域ＭＡを示し、上側ライン画素領域指定ポインタＲＰ０が分割領域ＭＣを示し、下側ライン画素領域指定ポインタＲＰ２は分割領域ＭＢを示す。転送ポインタＴＰがまた分割領域ＭＡを示し、書込ポインタＭＢが、分割領域ＭＢを示す。したがって、この状態では、ポインタＲＰ１が示す分割領域ＭＡの第３行の画素に対してフィルタ演算実行され、フィルタ演算処理完了後のデータが、分割領域ＭＡに格納される。演算処理完了後、転送ポインタＴＰに従って分割領域ＭＡの第３行のフィルタ演算後の画素のデータが転送されてＳＤＲＡＭに格納され、一方、書込ポインタＷＰが示す分割領域ＭＢに、次の行の第４ラインの画素データが格納される。
【０１６４】
この転送完了後、再びポインタＲＰ０−ＲＰ２およびＴＰおよびＷＰがシフトし、処理対象領域指定ポインタＲＰ１が分割領域ＭＢを示し、上側ライン画素領域指定ポインタＲＢＰ０が、分割領域ＭＡを示し、下側ライン画素領域指定ポインタＲＰ２が分割領域ＭＣを示す。転送ポインタＴＰが、分割領域ＭＢを示し、書込ポインタＷＰが、分割領域ＭＣを示す。したがって、この図２２（ｄ）に示すポインタの位置は、図２２（ａ）に示すポインタの位置と同じである。したがって、これらのポインタＲＰ０−ＲＰ２、ＴＰおよびＷＰを順次各処理ごとに分割領域のサイズ分シフトすることにより、容易にデータの書込、転送および処理結果の格納を行なうことができる。
【０１６５】
このアドレスポインタの設定は、例えば、汎用レジスタを用い、この各レジスタ内容を順次マイクロプログラム命令の１つの３ラインのエッジ強調フィルタ処理完了時に、それぞれシフトする命令により実現される。
【０１６６】
なお、この図２２（ａ）−（ｄ）に示すポインタのシフト構成において、転送ポインタＴＰは、固定された分割領域ＭＤを常時指定し、この分割領域が、常にフィルタ演算処理後の画素データの格納領域として利用されてもよい。転送ポインタＴＰの制御が簡略化される。
【０１６７】
次に、エッジ強調フィルタ演算処理の手順としては、種々の処理フローを考えることができる。例えば次の処理フローを考えることができる。処理対象の画素データＰ（ｉ，ｊ）を５倍する演算処理は、画素データＰ（ｉ，ｊ）の全ビットを２ビット上位ビット方向にシフトして、図２２に示す分割領域ＭＤに格納することにより、４・Ｐ（ｉ，ｊ）が算出される。次いで、ポインタＲＰ１が指定する領域に格納された画素データＰ（ｉ，ｊ）と４・Ｐ（ｉ，ｊ）の加算処理を行ない、加算結果を画素データＰ（ｉ，ｊ）の格納領域に格納する。これにより、５・Ｐ（ｉ，ｊ）の乗算処理が実現される。
【０１６８】
次いで、同一列の画素Ｐ（ｉ−１，ｊ）およびＰ（ｉ＋１，ｊ）の加算を行ない、分割領域ＭＤにデータＰ（ｉ−１，ｊ）＋Ｐ（ｉ＋１，ｊ）を格納する。次いでこの５・Ｐ（ｉ，ｊ）から、分割領域ＭＤに格納されたデータを減算する。減算処理の場合には、２の補数演算を行なうため、まず分割領域ＭＤに格納されたデータをビット値をすべて反転し、次いで１を加算する。−｛Ｐ（ｉ−１，ｊ）＋Ｐ（ｉ＋１，ｊ）｝＝Ａ（ｉ，ｊ）が生成される。次いで、これらを加算することにより、５・Ｐ（ｉ，ｊ）−Ａ（ｉ，ｊ）が生成される。
【０１６９】
次いで、隣接列の画素データを減算する場合、まずＡＬＵ間接続用スイッチ回路２０により、隣接列のデータを転送するようにＡＬＵの経路を切換える。これにより、右側または左側の画素の減算が行なわれ、次いで再びＡＬＵスイッチ回路２０の接続経路を切換えて、別の隣接列の画素との減算を行なう。これらの一連の処理により、前述のフィルタ演算処理を行なってフィルタ演算処理後の画素データを求めることができる。これらの一連の処理により、ビットシリアル態様で複雑なフィルタ演算処理を実行することができる。
【０１７０】
この接続経路の切換および各演算シーケンスは、すべてマイクロ命令メモリに格納されるマイクロプログラムにより規定される。
【０１７１】
以上のように、この発明の実施の形態４に従えば、複数の基本ブロックと外部の大容量メモリとの間で、ＤＭＡモードでデータ転送を行ない、データ転送と演算処理とをパイプライン態様で実行しており、大容量のデータを高速で演算処理することができる。
【０１７２】
［実施の形態５］
図２３は、この発明の実施の形態５に従う主演算回路２０の具体的構成の一例を示す図である。主演算回路２０において、メモリセルマット３０に配列されるメモリセルＭＣは、シングルポートＳＲＡＭセルである。メモリセル行それぞれに対応してワード線ＷＬが配置され、メモリセル列それぞれに対応してビット線対ＢＬＰが配置される。メモリセルＭＣは、これらのビット線対ＢＬＰとワード線ＷＬの交差部に対応して配置される。ワード線ＷＬには、対応の行のメモリセルＭＣが接続され、ビット線対ＢＬＰには、対応の列のメモリセルＭＣが接続される。
【０１７３】
エントリＥＲＹは、ビット線対ＢＬＰそれぞれに対応して設けられ、図２３に示すメモリセルマット３０においては、ビット線対ＢＬＰ０からＢＬＰ（ｍ−１）それぞれに対応してエントリＥＲＹ０−ＥＲＹ（ｍ−１）が配置される。ビット線対ＢＬＰが対応のエントリＥＲＹと対応のＡＬＵ３１との間のデータ転送線として利用される。
【０１７４】
メモリセルマット３０のワード線ＷＬに対して、コントローラ２２からのアドレス信号またはシステムバスＩ／Ｆ２４からのアドレス信号（および制御信号）に従って、演算対象のデータビットが接続されるワード線ＷＬを選択状態へ駆動するロウデコーダ７４が設けられる。ワード線ＷＬには、エントリＥＲＹ０−ＥＲＹ（ｍ−１）の同一位置のメモリセルが接続されており、ロウデコーダ７４により、エントリＥＲＹ０−ＥＲＹ（ｍ−１）において同一位置のデータビットを選択する。
【０１７５】
演算処理ユニット３５においては、ＡＬＵ３１がビット線対ＢＬＰ０−ＢＬＰ（ｍ−１）に対応して配置される。
【０１７６】
演算処理ユニット群３５とメモリセルマット３０との間に、データのロード／ストアを行なうための読出／書込回路３８が設けられる。この読出／書込回路３８は、ビット線対ＢＬＰ０からＢＬＰ（ｍ−１）各々に対して設けられるセンスアンプおよびライトドライバをそれぞれ含むセンスアンプ群７０とライトドライバ群７２を含む。
【０１７７】
読出／書込回路３８に対して、システムバスＩ／Ｆ２４を介して外部とのデータの受渡しを行なう入出力回路７６が設けられる。この入出力回路７６により、メモリセルマット３０と内部データバスとの間でのデータ転送が行なわれる。メモリセル回路７６のデータの入出力ビット幅は、システムバスＩ／Ｆ２４のデータビット幅に応じて設定される。
【０１７８】
入出力回路７６におけるデータビット幅と１つのワード線ＷＬに接続されるエントリのビット幅（ｍ）との調整を行なうためにカラムデコーダ７８が設けられる。このカラムデコーダ７８からの列選択線ＣＬにより、システムバスＩ／Ｆ２４のバス幅に応じたビット線対（センスアンプまたはライトドライバ）が選択される。カラムデコーダ７８には、システムバスＩ／Ｆ２４から与えられるアドレス信号のうちの下位ビットが与えられる。この下位ビットの数は、システムバスＩ／Ｆ２４のバス幅に応じて適当に定められる。
【０１７９】
列選択線ＣＬにより選択されたエントリが入出力回路７６に接続され、システムバスＩ／Ｆ２４との間でデータの受渡しが行なわれる。これにより、システムバスＩ／Ｆ２４を介してメモリセルマット３０に対するデータのアクセスを行なうことができる。
【０１８０】
図２４は、この発明の実施の形態５に従う主演算回路のＣＰＵアドレス割当の一例を示す図である。この図２４に示す構成においては、一例として、メモリセルマット３０は、６４個のエントリＥＲＹ０−ＥＲＹ６３に分割される。ロウデコーダ７４へ与えられる上位アドレスのビット数は、このメモリセルマット３０に含まれるワード線の数（エントリのビット幅）に応じて決定される。
【０１８１】
読出／書込回路３８の領域において、入出力回路７６に結合される内部データ線ＩＯ０−ＩＯ３が配置される。入出力回路７６は、４ビットデータを転送する。この場合、カラムデコーダ７８に対しては、４ビットの下位アドレスが与えられる。エントリＥＲＹ０−ＥＲＹ３に対しては、列アドレス“０”が割当てられ、エントリＥＲＹ４−ＥＲＹ７に対し列アドレス“１”が割当てられる。以降、同様にしてエントリＥＲＹ６０（図示せず）からエントリＥＲＹ６３に対して列アドレス“ｆ”（１６進）が割当てられる。
【０１８２】
したがって、カラムデコーダ７８は、１／１６選択を行なっており、列選択線ＣＬ０の選択時には、エントリＥＲＹ０−ＥＲＹ３が選択され、列選択線ＣＬ１の選択時には、エントリＥＲＹ４−ＥＲＹ７が選択される。同様、列選択線ＣＬ１５の選択時においては、エントリＥＲＹ６０からＥＲＹ６３が選択される。
【０１８３】
上位アドレス（たとえば“０ｘｘ”）に従って、ロウデコーダ７４によりワード線が選択される。
【０１８４】
カラムデコーダ７８を用いて、入出力回路７６の入出力するデータ転送ビット数をシステムバスＩ／Ｆ２４のビット幅と同じとすることにより、外部のホストＣＰＵまたはＤＭＡコントローラが、このメモリセルマット３０内のデータにアクセスすることができる。
【０１８５】
この場合、外部からのアクセス可能なデータは、複数のエントリにまたがる同一ビット位置のデータである。ビットシリアル態様で演算処理を実行する場合、したがって、１つのデータの各ビットが同一エントリに格納されるようにデータ列の並び替えが行なわれる。
【０１８６】
以上のように、この発明の実施の形態５に従えば、入出力回路のビット幅を、システムバスＩ／Ｆのビット幅と同一となるようにカラムデコーダ７８の選択列数を設定しており、外部のホストＣＰＵまたはＤＭＡコントローラにより、メモリセルマット３０内のデータをアクセスすることができる。
【０１８７】
［実施の形態６］
図２５は、この発明の実施の形態６に従うシステムＬＳＩの構成を概略的に示す図である。この図２５においては、基本演算ブロックＦＢ１の構成のみを具体的に示すが、基本演算ブロックＦＢ１−ＦＢｈ各々において、コントローラ２２からのワークデータをメモリセルマット３０へ転送するための切換回路（ＭＵＸ）８０が設けられる。この切換回路（ＭＵＸ）８０は、システムバスＩ／Ｆ２４とコントローラ２２の一方を、主演算回路２０に含まれるメモリセルマット３０に結合する。具体的には、この切換回路８０が、図２３に示す主演算回路内の入出力回路７６に結合される。
【０１８８】
図２５に示すシステムＬＳＩの他の構成は、図１に示すシステムＬＳＩの構成と同じであり、対応する部分には同一参照番号を付し、その詳細説明は省略する。
【０１８９】
この図２５に示す構成においては、メモリセルマット３０が、演算対象データ格納領域として利用され、また、コントローラ２２のワークデータ格納領域として利用される。したがって、図１等に示すワークデータメモリ（２３）が不要となり、チップ面積を低減することができる。
【０１９０】
図２６は、この発明の実施の形態６におけるメモリセルマット３０におけるデータ格納領域の構成を概略的に示す図である。図２６において、メモリセルマット３０は、演算データを格納する演算データエリア３０ｐと、コントローラ２２からのワークデータを格納するワークエリア３０ｗとを含む。演算データエリア３０ｐにおいては、エントリＥＲＹ（ＥＲＹａ，ＥＲＹｂ）において、演算対象データＤＴｏの各ビットが格納される。一方、ワークエリア３０ｗにおいては、複数のエントリ（ＥＲＹａ…ＥＲＹｂ）にわたって、同一列に、ワークデータＤＴｗの各ビットが格納される。したがって、演算データエリア３０ｐにおいては、外部データワードのビット位置の並び替えが行なわれたデータが格納され、一方、ワークエリア３０ｗには、コントローラからのワークデータが並び替え処理を受けずに、各ワードが１アドレス位置に格納される。
【０１９１】
メモリセルマット３０においては、メモリセルマット３０のエントリに対し均一にワークエリア３０ｗが割当てられて、ワークデータの格納が行なわれる。したがって、各エントリに対して、演算データ格納部分とワークデータ格納部分とは均等に割当てられ、特定のエントリの領域すべてがワークデータ格納に用いられることがないため、エントリを用いた並列演算処理能力は損なわれない。
【０１９２】
また、このワークエリア３０ｗにおいては、何らデータの並べ替えを行なう必要がなく、コントローラ２２は、通常のワークデータを格納するワークメモリアクセスと同様の操作で、ワークデータＤＴｗをアクセスすることができる。
【０１９３】
以上のように、この発明の実施の形態６に従えば、メモリセルマットに対し、コントローラが切換回路を介してアクセス可能となるように構成しており、メモリセルマットを演算データおよびワークデータ格納領域として利用することができ、ワークデータメモリが不要となり、チップ面積を低減することができる。
【０１９４】
［実施の形態７］
図２７は、この発明の実施の形態７に従うシステムＬＳＩの構成を概略的に示す図である。図２７に示すシステムＬＳＩ２においては、基本演算ブロックＦＢ１−ＦＢｈそれぞれにおいて、システムバスＩ／Ｆ２４と主演算回路２０の間に、与えられたデータの行および列の並べ替えを行なう転置回路８５と、システムバスＩ／Ｆ２４および転置回路８５の一方と主演算回路２０との間の接続を設定する切換回路（ＭＵＸ）８７が設けられる。この図２７においても、基本演算ブロックＦＢ１−ＦＢｈは同一構成を有するため、基本演算ブロックＦＢ１の構成を代表的に示す。この図２７に示す半導体信号処理装置１の他の構成は、図１に示す半導体信号処理装置の構成と同じであり、対応する部分には同一参照番号を付し、その詳細説明は省略する。
【０１９５】
転置回路８５は、システムバスＩ／Ｆ２４からビットパラレルかつワードシリアルな態様で転送されるデータを、ワードパラレルかつビットシリアルな態様で転送して、メモリセルマット３０の各エントリに、異なるデータワードの同一位置のビットを並列に書込む。また、転置回路８５は、この主演算回路２０のメモリセルマット３０からワードパラレルかつビットシリアルに転送されるデータ列を転置して、ビットパラレルかつワードシリアルな態様で転送する。これにより、システムバスＩ／Ｆ２４とメモリセルマット３０におけるデータ転送の整合性をとる。
【０１９６】
なお、図２７に示す構成においては、切換回路８７が、コントローラ２２からのワークデータを選択して主演算回路２０に転送するように構成されても良い。この場合、ワークデータメモリ２３は不要となる。また、演算対象データを転置する必要のない場合には、切換回路８７は、システムバスＩ／Ｆ２４を選択して主演算回路２０に接続する。
【０１９７】
図２８は、図２７に示す転置回路８５の構成を概略的に示す図である。図２８において、転置回路８５は、Ｌ行Ｌ列に配列される記憶素子を有する転置メモリ９０と、転置メモリ９０とシステムバスＩ／Ｆ２４の間のインターフェイスをとるシステムバス転置メモリＩ／Ｆ（インターフェイス）９１と、転置メモリ９０と内部メモリバスを介して入出力回路７６に結合されて、メモリセルマット（３０）とのデータ転送のインターフェイスをとるメモリセルマット転置メモリＩ／Ｆ９２と、この転置回路８５の内部動作に必要な情報を記憶する制御レジスタ群９４と、データ転送時のアドレス情報を格納する内部レジスタ群９３と、この内部レジスタ群９３に含まれる情報に基づいてメモリセルマットに対するアクセス対象のアドレスを計算して主演算回路へ与えるメモリセルマットアドレス計算ユニット９５を含む。
【０１９８】
Ｌビットデータ単位で、メモリセルマットと転置回路８５の間でデータ転送が行なわれ、またＬビット単位で転置回路８５とシステムバスＩ／Ｆ２４との間でデータ転送が行なわれる。メモリ内部バス（図２４に示すＩＯ線）および内部システムバス７のビット幅は、Ｌビットである。
【０１９９】
内部レジスタ群９３は、内部システムバス７へのアクセス回数のカウント情報を格納するシステムバスアクセス回数カウンタ９３ａと、メモリセルマットへのアクセス回数のカウント情報を格納するメモリセルマットアクセス回数カウンタ９３ｂを含む。
【０２００】
制御レジスタ群９４は、エントリ位置情報を格納するエントリ位置レジスタ９４ａと、ビット位置情報を格納するビット位置レジスタ９４ｂと、この転置回路８５の活性／非活性を決定する制御ビットを格納するイネーブルレジスタ９４ｃと、この転置回路８５のデータの書込／読出の方向を設定する情報を格納するリード／ライト方向レジスタ９４ｄを含む。エントリ位置レジスタ９４ａおよびビット位置レジスタ９４ｂにより、メモリセルマットにおけるエントリ位置およびビット位置情報が指定される。この指定された領域のメモリセルマット内の内容を転置メモ９０が保持しており、転置回路８５は、データの並べ替えを行なう機能を有するリード／ライトバッファ回路として機能する。
【０２０１】
内部レジスタ群９３におけるカウンタレジスタ９３ａおよび９３ｂのカウント値により、転置メモリ９０におけるデータの格納状況が示される。
【０２０２】
システムバス転置メモリＩ／Ｆ９１は、転置回路８５と内部システムバス７との間のデータ転送を制御する機能を有し、転置回路８５からメモリセルマット（メモリ内部バス）へのデータ転送時には、内部システムバス７と転置メモリ９０との間のデータ転送を要求するバスリクエストのウエイト制御を行なう。
【０２０３】
メモリセルマットアドレス計算ユニット９５は、メモリセルマットへのデータ転送時、エントリ位置レジスタ９４ａおよびビット位置レジスタ９４ｂに格納された情報に基づいて、データ転送対象のメモリセルマットのアドレスの計算を行ない、主演算回路に転送する（図２４に示すロウデコーダ７０およびカラムデコーダ４に転送する）。
【０２０４】
転置メモリ９０は、システムバス転置メモリＩ／Ｆ９１とは、Ｙ方向に整列するビットで構成されるデータＤＴＥ単位でデータの転送を行なう（Ｘ方向に順次データＤＴＥが格納される）。データワードは、同一のエントリに格納されるため、システムバスＩ／Ｆ９１は、エントリ単位のデータを転送する。一方、転置メモリ９０は、メモリセルマット転置メモリＩ／Ｆ９２とのデータ転送時には、Ｘ方向に整列するデータビットを用いてデータの転送を行なう。すなわち、転置メモリ９０においては、Ｙ方向に整列するデータＤＴＥが、外部アドレス単位のデータであり、メモリセルマットにおいては、同一のエントリに格納されるエントリ単位のデータであり、ワードシリアルビットパラレル単位で転送されるデータが格納される。一方、Ｘ方向のデータＤＴＡは、メモリセルマットの複数のエントリにわたるデータであり、メモリセルマットにおいて同一アドレスに格納されるデータであり、ワードパラレルかつビットシリアルに転送され、各エントリの同一位置のビットで構成されるメモリセルマットのアドレス単位のデータである。
【０２０５】
この転置メモリ９０において、システムバスとのデータ転送を行なうポートとメモリ内部バスとのデータ転送を行なうポートを別々に設けることにより、Ｘ方向データおよびＹ方向データを並び替えて、データ転送を行なうことができる。次に、内部システムバス７から入出力回路７６を介してメモリセルマットへデータを書込む際の、転置回路８５の動作を一例として、図２９の動作フローを参照して説明する。
【０２０６】
フェーズ１：
まず、主演算回路のメモリセルマットの書込対象の先頭のビット位置（ワード線アドレス）およびエントリ位置（ビット線アドレス）をそれぞれ、ビット位置レジスタ９４ｂおよびエントリ位置レジスタ９３ａに設定する。次いで、リード／ライト方向レジスタ９０ｄに、書込を示すビットを設定する。
【０２０７】
この後、イネーブルレジスタ９４ｃに、イネーブルビットを設定し、この転置回路８５をイネーブルする。このイネーブルレジスタ９４ｃのイネーブルビットのアサートにより、内部レジスタ群９３に含まれるカウンタレジスタ９３ａおよび９３ｂのカウント値が０に初期化される（ステップＳＰ１）。
【０２０８】
フェーズ２：
システムバスＩ／Ｆ２４からシステムバス転置メモリＩ／Ｆ９１経由で、転置メモリ９０に対し、転送データが書込まれる。この転置メモリ９０への書込データは、Ｙ方向に整列する多ビットデータＤＴＥとして、転置メモリ９０のＸ方向についての先頭行から順に格納される。この転置メモリ９０に対するデータ書込ごとに、システムバスアクセス回数カウンタレジスタ９３ａのカウント値がインクリメントされる（ステップＳＰ２）。
【０２０９】
フェーズ３：
転置メモリ９０の記憶内容がフル状態となるまで、すなわち、システムバスアクセス回数カウンタレジスタ９３ａのカウント値がメモリ内部バスのバス幅Ｌに到達するまで、システムバス転置メモリＩ／Ｆ９１を介してのデータ書込が行なわれる（ステップＳＰ３）。
【０２１０】
フェーズ４：
転置メモリ９０にＬ回のデータ書込が、内部システムバス７からシステムバスＩ／Ｆ２４およびシステムバス転置メモリＩ／Ｆ９１を介して行なわれると、転置メモリ９０からメモリセルマットへのデータ転送を行なうため、システムバス転置メモリＩ／Ｆ９１は、内部システムバス７に対するウエイト制御信号をアサートし、システムバスＩ／Ｆ２４に対し、後続のデータ書込を待機させる状態に設定する（ステップＳＰ４）。この転置メモリ９０の記憶状況がフル状態となるか否かは、システムバスアクセス回数カウンタレジスタ９３ａのカウント値をモニタすることにより行なわれる。
【０２１１】
この動作と並行して、メモリセルマット転置メモリＩ／Ｆ９２が活性化され、転置メモリ９０のＸ方向に整列するデータＤＴＡを読出し、入出力回路７６に対するデータの転送を行なう（ステップＳＰ５）。
【０２１２】
メモリセルマットアドレス計算ユニット９５は、エントリ位置レジスタ９４ａおよびビット位置レジスタ９４ｂにおよびメモリセルマットアクセス回数カウンタレジスタ９３ｂの格納値に基づいて転送対象のメモリセルマットのアドレスを計算し、このデータ送出に合せて出力する。また、このメモリセルマットへのデータ送出に合せて、メモリセルマット転置メモリＩ／Ｆ９２が、メモリセルマットアクセス回数カウンタ９３ｂのカウント値を増分する。
【０２１３】
フェーズ５：
転置メモリ９０の格納内容が空となるまで、メモリセルマットアクセス回数カウンタレジスタ９３ｂの格納値がＬとなるまで、転置メモリ９０からメモリセルマット転置メモリＩ／Ｆ９２を介してのＬビット単位のデータ転送が継続される（ステップＳＰ５、ＳＰ６）。
【０２１４】
フェーズ６：
図２９に示すフロー図の判定ステップＳＰ６において、転置メモリ９０の記憶内容が空であると判定されると、すべての転送データが転送されたかの判定が行なわれる（ステップＳＰ７）。転送データが残っている場合には、再び、アクセス回数レジスタカウンタ９３ａおよび９３ｂのカウント値を初期化して、ついで、図２９に示すステップＳＰ２に戻る。このとき、また、エントリ位置レジスタ９４ａの格納値はＬ加算される。エントリ位置レジスタ９４ａの格納値がメモリセルマットのエントリ数を超えた場合には、エントリ位置レジスタ９４ａの値が０に設定され、メモリセルマットにおいて次のワード線を選択するため、ビット位置レジスタ９４ｂの格納値を１増分する（ステップＳＰ８）。システムバス転置メモリＩ／Ｆ９１が、内部システムバスＩ／Ｆ７へのウエイトを解除し、内部システムバス７から転置メモリ９０へのデータの書込を再開する。
【０２１５】
次に、前述のフェーズ２からフェーズ６（すなわち図２９に示すステップＳＰ２からＳＰ８の動作）が繰返し実行される。
【０２１６】
図２９に示すステップＳＰ７において、すべてのデータ転送が完了したと判定されると（システムバスＩ／Ｆ２４からの転送要求がデアサートされることにより判定される）、データ転送が終了する。これらの一連の処理により、外部からのワードシリアルに転送されるデータをビットシリアルかつワードパラレルなデータに変換して、メモリセルマットに転送することができる。
【０２１７】
図３０は、図２７に示すＳＤＲＡＭ４からメモリセルマット３０へのデータ転送を模式的に示す図である。図３０においては、内部システムバス７のビット幅が４ビットの場合のデータ転送が一例として示される。
【０２１８】
図３０において、４ビットデータＡ（ビットＡ３−Ａ０）ないしＩ（ビットＩ３−Ｉ０）がＳＤＲＡＭ４に格納される。このＳＤＲＡＭ４から内部システムバス７を介して４ビットデータＤＴＥ（データＩ；ビットＩ３−Ｉ０）が転置メモリ９０へ転送されて格納される。このＳＤＲＡＭ４からのデータＤＴＥは、同一エントリに格納されるエントリ単位のデータであり、転置メモリ９０においては、Ｙ方向にデータビットが格納される。
【０２１９】
転置メモリ９０からメモリセルマット３０へのデータ転送時においては、この転置メモリ９０のＸ方向に整列するデータＤＴＡの各ビットが並行して読出される。データビットＥ１、Ｆ１、Ｇ１、Ｈ１からなるアドレス単位のデータＤＴＡが、メモリセルマット３０のエントリ位置情報および書込ビット位置情報が示す位置に格納される。ビット位置レジスタに格納されるビット位置情報はメモリセルマット３０のワード線アドレスとして用いられ、エントリ位置情報は、このメモリセルマット３０のビット線アドレスとして用いられる。これらのビット位置情報およびエントリ位置情報が、先の制御レジスタ群９４内のエントリ位置レジスタ９４ａおよびビット位置レジスタ９４ｂに格納される。実際のデータの書込位置を示す書込ビット位置情報は、メモリセルマットアクセス回数カウンタ９３ｂのカウント値とエントリ位置レジスタ９４ａの情報とビット位置情報９４ｂに格納されるビット位置情報とに基づいてメモリセルマットアドレス計算ユニット９５により生成される。
【０２２０】
この転置メモリ９０を用いて、Ｙ方向に同時にデータビットを格納し、次いでＸ方向に整列するデータビットを読出すことにより、ＳＤＲＡＭ４からワードシリアルかつビットパラレルで読出されるエントリ単位のデータＤＴＥを、ワードパラレルかつビットシリアルのアドレス単位のデータＤＴＡに変換してメモリセルマット３０へ格納することができる。
【０２２１】
メモリセルマット３０からデータを読出して内部システムバス７へ転送する場合には、このデータの転送方向が逆となるものの、転置メモリ９０の動作メモリセルマットへのデータ書込時と同じである。データ読出時のメモリセルマット３０におけるアクセス対象情報が、制御レジスタ９４の各レジスタに格納され、リード／ライト方向レジスタ９４ｄに、データ読出を示すビットを設定する。メモリセルマット３０から、メモリセルマット３０のアドレス単位のデータを読出して転置メモリ９０に、Ｙ方向の先頭位置から順次格納する。次いで、転置メモリ９０からデータをＸ方向の先頭位置から順次読出すことにより、メモリセルマット３０からワードパラレルかつビットシリアル態様で読出されたデータを、ワードシリアルかつビットパラレルのデータに変換して転送することができる。
【０２２２】
図３１は、転置メモリ９０に含まれるメモリセルの構成の一例を示す図である。この転置メモリ９０に含まれるメモリセルは、デュアルポートＳＲＡＭセルで構成される。図３１において、転置メモリセルは、交差結合される負荷ＰチャネルＭＯＳトランジスタＰＱ１およびＰＱ２と、交差結合されるデータ記憶用のドライブＮチャネルＭＯＳトランジスタＮＱ１およびＮＱ２を含む。この転置メモリセルは、通常のＳＲＡＭセルと同様にインバータラッチ（フリップフロップ素子）をデータ記憶素子として備え、このフリップフロップ素子により、ストレージノードＳＮ１およびＳＮ２に相補データを記憶する。
【０２２３】
転置メモリセルは、さらに、ワード線ＷＬＡ上の信号電位に応答してストレージノードＳＮ１およびＳＮ２をそれぞれビット線ＢＬＡおよび／ＢＬＡに結合するＮチャネルＭＯＳトランジスタＮＱＡ１およびＮＱ２と、ワード線ＷＬＢ上の信号電位に応答してストレージノードＳＮ１およびＳＮ２をビット線ＢＬＢおよび／ＢＬＢに結合するＮチャネルＭＯＳトランジスタＮＱＢ１およびＮＱＢ２を含む。ワード線ＷＬＡおよびＷＬＢが直交して配列され、ビット線ＢＬＡおよび／ＢＬＡがビット線ＢＬＢおよびＢＬＢと直交して配列される。
【０２２４】
このワード線ＷＬＡおよびビット線ＢＬＡおよび／ＢＬＡで構成される第１のポート（トランジスタＮＱＡ１，ＮＱＡ２）とワード線ＷＬＢおよびビット線ＢＬＢおよび／ＢＬＢで構成される第２のポート（トランジスタＮＱＢ１、ＮＱＢ２）をそれぞれ別々の転置メモリＩ／Ｆに結合する。すなわち、たとえば、第１のポート（ワード線ＷＬＡ，ビット線ＢＬＡ，／ＢＬＡ）を内部システムバスとのインターフェイス用のポートとして利用し、第２のポート（ワード線ＷＬＢおよびビット線ＢＬＢ，／ＢＬＢ）を、メモリデータバスへのアクセス用のポートとして利用する。これにより、転置メモリにおいて行および列の変換を行なってデータアクセスを行なうことができる。
【０２２５】
以上のように、この発明の実施の形態７に従えば、システムバスとメモリデータバスとの間に、転送データの行および列の交換を行なう転置回路を用いており、内部システムバスとメモリセルマット間のデータ転送時に、多ビット幅のデータの転置を行なうことができ、このメモリセルマットに対するデータ転送時に必要とされるメモリセルマットへのアクセス回数を低減することができ、データ転送に要する時間を短縮することができ、高速処理が実現される。
【産業上の利用可能性】
【０２２６】
この発明に従う半導体信号処理装置は、一般の画像または音声データ処理のみならず、大量のデータ処理を行なう半導体信号処理装置に対して適用することができ、デジタル信号処理分野においてこの発明に従う半導体信号処理装置を広く適用することができる。
【図面の簡単な説明】
【０２２７】
【図１】この発明の実施の形態１に従う信号処理システムの構成を概略的に示す図である。
【図２】図１に示す主演算回路の要部の構成を示す図である。
【図３】図１に示すメモリマットに含まれるメモリセルの構成の一例を示す図である。
【図４】図１に示す主演算回路の処理動作を示す図である。
【図５】図４に示す処理動作の処理シーケンスを示す図である。
【図６】この発明の実施の形態１に従う基本演算ブロックの構成を概略的に示す図である。
【図７】この発明の実施の形態１におけるマイクロプログラムの一例を示す図である。
【図８】図７に示すアドレス更新の動作を示すタイミング図である。
【図９】図６に示すＡＬＵの構成の一例を示す図である。
【図１０】この発明の実施の形態２に従う基本演算ブロックの構成を概略的に示す図である。
【図１１】この発明の実施の形態２において用いられるマイクロプログラムの一例を示す図である。
【図１２】図１１に示すマイクロプログラムの処理動作を示すフロー図である。
【図１３】この発明の実施の形態３に従う基本演算ブロックの構成を概略的に示す図である。
【図１４】図１３に示すメモリセルマットに含まれるメモリセルの構成の一例を示す図である。
【図１５】図１３に示すＡＬＵの構成の一例を概略的に示す図である。
【図１６】図１３に示す主演算回路のデータ転送動作を模式的に示す図である。
【図１７】この発明の実施の形態３における半導体信号処理装置のマイクロプログラムの一例を示す図である。
【図１８】この発明の実施の形態４における画像データ処理の一例を示す図である。
【図１９】この発明の実施の形態４に従う半導体信号処理装置の要部の構成を概略的に示す図である。
【図２０】この発明の実施の形態４に従う半導体信号処理装置のデータ処理シーケンスを示すフロー図である。
【図２１】図２０に示す処理シーケンスにおけるデータの流れを模式的に示す図である。
【図２２】この発明の実施の形態４におけるメモリセルマットにおける格納データおよび転送データの領域を模式的に示す図である。
【図２３】この発明の実施の形態５に従う演算回路の構成を概略的に示す図である。
【図２４】図２３に示す主演算回路の具体的構成を示す図である。
【図２５】この発明の実施の形態６に従う半導体信号処理装置の構成を概略的に示す図である。
【図２６】図２５に示すメモリセルマットのデータ格納領域の割付けを概略的に示す図である。
【図２７】この発明の実施の形態７に従う半導体信号処理装置の構成を概略的に示す図である。
【図２８】図２７に示す転置回路の構成を概略的に示す図である。
【図２９】図２８に示す転置回路のデータ転送動作を示すフロー図である。
【図３０】この発明の実施の形態７における転置回路のデータ転送時のデータの流れを模式的に示す図である。
【図３１】図２８に示す転置メモリに含まれるメモリセルの構成の一例を示す図である。
【符号の説明】
【０２２８】
１  半導体信号処理システム、２  システムＬＳＩ、３  外部システムバス、４  ＳＤＲＡＭ、７  内部システムバス、８  ホストＣＰＵ、１１  割込コントローラ、１３  ＤＭＡコントローラ、１４  外部バスコントローラ、ＦＢ１−ＦＢｈ  基本演算ブロック、２０  主演算回路、２１  マイクロ命令メモリ、２２  コントローラ、２３  ワークデータメモリ、２４  システムバスＩ／Ｆ、３０  メモリセルマット、３１  ＡＬＵ、３２  ＡＬＵ間相互接続用スイッチ回路、３０Ａ，３０Ｂ  メモリセルマット、３５  演算処理ユニット、３８，３８Ａ，３８Ｂ  読出／書込回路、４０  命令デコーダ、４１  プログラムカウンタ、４２  ＰＣ値計算ユニット、４３  汎用レジスタ群、４５  制御レジスタ群、４６，４６Ａ，４６Ｂ  アドレス計算ユニット、４７，４７Ａ，４７Ｂ  アドレスレジスタ群、７０  開始アドレスレジスタ、７２  終了アドレスレジスタ、ＳＡＷ  センスアンプおよびライトドライバ、７４  ロウデコーダ、７６  入出力回路、７８  カラムデコーダ、８０  切換回路（ＭＵＸ）、８５  転置回路、９０  転置メモリ、９１  システムバス転置メモリＩ／Ｆ、９２  メモリセルマット転置メモリＩ／Ｆ、９３  内部レジスタ群、９４  制御レジスタ群、９５  メモリセルマットアドレス計算ユニット。
【図１】
2006099232.tif 000003
【図２】
2006099232.tif 000004
【図３】
2006099232.tif 000005
【図４】
2006099232.tif 000006
【図５】
2006099232.tif 000007
【図６】
2006099232.tif 000008
【図７】
2006099232.tif 000009
【図８】
2006099232.tif 000010
【図９】
2006099232.tif 000011
【図１０】
2006099232.tif 000012
【図１１】
2006099232.tif 000013
【図１２】
2006099232.tif 000014
【図１３】
2006099232.tif 000015
【図１４】
2006099232.tif 000016
【図１５】
2006099232.tif 000017
【図１６】
2006099232.tif 000018
【図１７】
2006099232.tif 000019
【図１８】
2006099232.tif 000020
【図１９】
2006099232.tif 000021
【図２０】
2006099232.tif 000022
【図２１】
2006099232.tif 000023
【図２２】
2006099232.tif 000024
【図２３】
2006099232.tif 000025
【図２４】
2006099232.tif 000026
【図２５】
2006099232.tif 000027
【図２６】
2006099232.tif 000028
【図２７】
2006099232.tif 000029
【図２８】
2006099232.tif 000030
【図２９】
2006099232.tif 000031
【図３０】
2006099232.tif 000032
【図３１】
2006099232.tif 000033