(57)【要約】【課題】並列演算処理装置において、レイアウト面積および消費電力を低減し、かつ高速動作を実現する。【解決手段】各々が行列状に配列される複数のメモリセルを有するメモリブロック（ＭＡ♯１，ＭＡ♯２）の間に演算処理ユニット（ＰＡ♯２，ＰＡ♯１，ＰＡ♯３）が配置される並列演算処理装置において、メモリブロックの各列を交互に両側の演算処理ユニットに結合する。１つのメモリブロックにおいて１つのワード線を選択することにより、２つの演算処理ユニットへデータを転送することができ、１演算処理ユニット当り選択されるワード線の本数が低減され、消費電力が低減される。また、演算処理ユニットのビット演算ユニット（ＰＥ）およびセンスアンプ／ライトドライバ（ＳＡ／ＷＤ）の配置ピッチ条件が緩和でき、また、それらの数も低減されかつメモリブロック間分離領域が不要となり、レイアウト面積が低減される。【選択図】図６
2007206849.tif 000002
【特許請求の範囲】
【請求項１】
行列状に配列される複数のメモリセルと、メモリセル各列に対応して配置される複数のビット線とを各々が有する複数のメモリブロック、
前記複数のメモリブロックの間に配置され、各々が与えられたデータに対して演算処理を実行する複数の演算器を有する複数の演算処理ユニット、および
前記メモリブロック各々においてビット線の両側に交互に配置され、隣接する演算処理ユニットの演算器との間でデータを転送する複数のデータ書込／読出回路を含むデータ転送回路を備える、並列演算処理装置。
【請求項２】
前記複数のメモリブロックは、各々が、一方方向に整列するメモリブロックを含む複数のメモリマットに分割され、
前記データ転送回路および前記演算処理ユニットの動作を制御するローカル制御回路は、前記メモリマットの間の領域に配置される、請求項１記載の並列演算処理装置。
【請求項３】
各前記メモリブロックは、メモリセル各行に対応して配置される複数のワード線をさらに有し、
前記データ転送回路のデータ書込／読出回路は、各対応のビット線と対応の演算器との間でデータを転送し、
前記複数のメモリブロックのうち両端に配置される終端部のメモリブロックは、各々、演算処理ユニットにより共有されるメモリブロックと比べて、そのワード線数が１／２倍に設定される、請求項１記載の並列演算処理装置。
【請求項４】
前記データ転送回路は、前記終端部のメモリブロックの各ビット線の一方側に配置されて、共通の演算処理ユニットに結合されるデータ書込／読出回路を含む、請求項３記載の並列演算処理装置。
【請求項５】
各前記メモリブロックは、メモリセル各行に対応して配置される複数のワード線を有し、
前記並列演算処理装置は、さらに、前記演算処理ユニットに対応して設けられ、対応のデータ転送回路および対応の演算処理ユニットの動作を制御する複数のローカル制御回路を備え、前記ローカル制御回路は、演算結果を格納するメモリブロックに対して設けられるデータ書込／読出回路に対しては、対応のメモリブロックにおいてワード線を選択状態に維持した状態で、対応の演算器との間でのデータの読出および書込を順次実行するように対応のメモリブロックおよびデータ書込／読出回路を制御する、請求項１記載の並列演算処理装置。
【請求項６】
前記演算処理ユニットの処理サイクルはクロック信号により決定され、
各前記ローカル制御回路は、前記クロック信号と非同期で前記データ書込／読出回路の動作を制御するようにデータ読出活性化信号およびデータ書込活性化信号を生成して対応のデータ書込／読出回路へ供給する、請求項５記載の並列演算処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、並列演算処理装置に関し、特に、半導体メモリと演算器とが集積化された並列演算処理装置の構成に関する。
【背景技術】
【０００２】
携帯機器分野および画像処理用途などにおいては、近年、その高性能化により、大量の音声または画像データを高速で処理することが要求されている。この大量のデータを処理する場合、一般に専用のＤＳＰ（デジタル・シグナル・プロセッサ）が用いられることが多い。しかしながら、この専用のＤＳＰを用いた場合、そのハードウェアが固定的に設定され、データビット幅および処理内容が限定される。そこで、種々の用途に柔軟に対応するように、ソフトウェアにより機能を変更することができるプログラマブルプロセッサを用いて、これらの処理を実行することが要求されてきている。特に、このようなデータ処理システムは、小型化の観点から、小面積かつ低消費電力で高速処理を実現することが重要となってきている。
【０００３】
音声データおよび画像データなどの処理においては、複数組のデータに対し、同じ演算処理を実行することが多い。したがって、このような処理用途において、ＳＩＭＤ型（シングル・イントラクション・ストリーム・マルチプル・データ・ストリーム：Single Instruction Stream Multiple Data Stream）プロセッサが用いられることが多い。このＳＩＭＤ型プロセッサにおいては、各々がレジスタファイルと演算器とで構成されるプロセッサエレメントを並列に設け、各プロセッサエレメントを同一命令で並列に動作させる。このプロセッサエレメントは、たとえば、特許文献１（特開２００３−１８６８５４号公報）に示されるように、２５６個が並列に設けられ、２５６組のデータについて並列演算処理を行なうことができる。
【特許文献１】特開２００３−１８６８５４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ＳＩＭＤ型プロセッサにおいては、各プロセッサエレメントにおいて多ビットデータをレジスタファイルに格納する。レジスタからの多ビットデータを対応の演算器で受けて演算処理を実行する。この演算結果は、対応のレジスタファイルのレジスタに格納される。したがって、演算データのビット幅は、演算器またはレジスタのビット幅で決定される。上述の特許文献１に示されるように、レジスタファイルにおいて演算に利用するレジスタの数を変更することにより、演算データのビット幅の変更に対応することが可能である。しかしながら、たとえば８ビットレジスタを用いて１６ビット演算データを格納する場合、上位ビットレジスタおよび下位ビットレジスタを設定し、順次レジスタを切換えて演算処理を行なう必要がある。したがって、たとえば、ブースアルゴリズムに従って乗算処理を行なう場合、部分積を求め、次いで部分析を加算して最終積を求める操作を実行する際に、演算データの桁位置を合わせるためにレジスタの切換が極めて煩雑となるという問題が生じる。
【０００５】
また、レジスタの切換の有無に応じて処理手順を変更する必要がある。従って、演算データのビット幅に応じて処理手順を変更する必要が生じ、ビット幅変更に対して柔軟に対応することができなくなる。
【０００６】
また、ＳＩＭＤ型プロセッサにおいては、多ビットデータの並列演算処理が行なわれており、演算器は、多ビット演算器であり、その占有面積が大きくなり、小型化に対する障害となる。
【０００７】
上述のようなＳＩＭＤ型プロセッサの問題を解消するために、本願発明者のグループは、先に、高速演算処理を実現する並列演算処理装置を提案している（たとえば特願２００４−１７１６５８号）。この並列演算処理装置においては、基本構成として、メモリセルアレイを複数のエントリに分割し、エントリに対応して、１ビット演算器を配置する。各エントリに、演算データを格納する。各演算器において、ビットシリアルに、演算処理を実行する。たとえば、演算器の両側のメモリセルアレイのエントリ各々からデータビットを読出して、対応の演算器へ転送し、演算器において演算を実行し、その実行結果を、所定のエントリに格納する。
【０００８】
演算処理は、複数ワードについてビットシリアルに行なわれる（ワードパラレル・ビットシリアル）。したがって、個々のデータの演算には時間を要するものの、エントリ数を多くして演算の並列度を高くすることにより、高速処理が実現される。たとえば、データビットの読出、書込および演算各々に１マシンサイクルが必要とされる動作環境においては、１ビット演算処理に３マシンサイクルが必要となる。したがって、８ビットデータの処理には３・８＝２４マシンサイクルが必要となる。しかしながら、エントリ数がたとえば１０２４であれば、２４マシンサイクルで１０２４組のデータ処理が完了する。演算データのビット幅は、３２ビットまたは６４ビットである。従って、エントリの数を増大させることにより、高速演算が実現される。
【０００９】
また、演算処理が、ビットシリアル態様で行なわれるため、演算データのビット幅の変更に対しては、エントリのアクセスするアドレス範囲を変更することにより対応することができる。レジスタ切換などの処理手順の変更は不要であり、演算データのビット幅の変更に対して容易に対応することができる。
【００１０】
また、演算器は１ビット演算器であり、そのレイアウト面積は小さくすることができる。また、メモリセルアレイのビット線をエントリとして利用する場合、エントリに対応して演算器を配置することができ、レイアウト面積が小さく演算の並列度の極めて高い並列演算処理装置を実現することができる。
【００１１】
より演算の並列度を上げるためには、より効率的に演算器およびメモリセルアレイの周辺回路を配置する必要がある。しかしながら、この演算器および周辺回路の配置領域は、メモリセルのピッチに従って決定される。メモリセルアレイにおけるレイアウトルールおよびメモリセルのピッチが予め設定されているため、より効率的にレイアウト面積を低減して演算器および周辺回路を配置するためには、さらなる工夫を必要とする。
【００１２】
また、メモリセルアレイは、リフレッシュが不要なたとえばＳＲＡＭ（スタティック・ランダム・アクセス・メモリ）で構成される。データがビットシリアルに演算処理されるため、高速処理のために、データの読出と演算結果の書込を同一サイクルで行うリードモディファイを行う場合、データの読出および書込を１マシンサイクルで行なうＳＲＡＭの方が、演算器よりも動作周波数が高くなる。この結果、このＳＲＡＭの動作周波数により並列演算処理装置全体の動作速度が律速され、より高速演算処理を実現するためには、また、ＳＲＡＭの動作方式に対してさらに工夫が必要となる。
【００１３】
また、動作周波数を高くした場合、消費電力が増大する。また、高速化のためには、素子のレイアウト面積を大きくして、電流駆動力を高くする必要があり、消費電力が増大する。さらに、演算の並列度を高くするためには、エントリの数を増大させる必要があり、この場合、並行して動作する回路の数が増大し、消費電力が増大する。したがって、演算の並列度および動作速度を消費電力を増大させることなく高くするためには、この点からもさらなる工夫が必要となる。
【００１４】
それゆえ、この発明の目的は、低消費電力で高速動作および超高並列演算を実現することのできる並列演算処理装置を提供することである。
【課題を解決するための手段】
【００１５】
この発明に係る並列演算処理装置は、行列状に配列される複数のメモリセルと、メモリセル各列に対応して配置される複数のビット線とを各々が有する複数のメモリブロックと、これらの複数のメモリブロックの間に配置され、各々が、それぞれ与えられたデータに対して演算処理を実行する複数の演算器を有する複数の演算処理ユニットと、メモリブロック各々においてビット線の両側に交互に配置され、隣接する演算処理ユニットの演算器との間でデータを転送する複数のデータ書込／読出回路を含むデータ転送回路とを備える。
【発明の効果】
【００１６】
各メモリブロックにおいてビット線の両側にデータ転送回路のデータ書込／読出回路が交互に配置される。これにより、データ転送回路および演算処理ユニットの演算器のピッチ条件が緩和され、効率的に余裕を持ってこれらの回路要素を配置することができる。また、１つのデータ転送回路において配置されるデータ書込／読出回路の数が低減され、入出力データ１ビットあたりの列（ビット線）の数が低減され、レイアウト面積が低減され、また、動作する回路の数も低減され消費電力が低減される。
【００１７】
また、メモリブロックの間には、演算処理ユニットが配置されるため、メモリブロック間の、ダミーセル等を配置する分離領域が不要となり、メモリセルアレイの面積を低減することができる。
【００１８】
さらに、メモリブロックにおいて、１本のワード線を選択することにより、メモリブロック両側の演算回路へ転送するデータを並行して選択することができる。したがって、各メモリブロックをバンクとして利用して並列演算を行なう場合、２つのバンクの演算データを１つのワード線の選択で読出／書込を行なうことができ、選択ワード線の本数を低減でき、応じてワード線選択に要する消費電力を低減することができる。
【発明を実施するための最良の形態】
【００１９】
［出発構成］
図１は、この発明に従う並列演算処理装置を利用するシステムの概念的構成を示す図である。この発明に従う並列演算処理装置は、図１に示す演算装置をチップ上に実現する。先ず、この発明に従う並列演算処理装置の動作および機能を明確にするために、図１を参照して、並列演算処理装置を利用する処理システムの概念的構成および演算操作について説明する。
【００２０】
図１において、演算処理システムは、並列演算を実行する半導体演算装置１と、この半導体演算装置１における処理の制御、システム全体の制御およびデータ処理を行なうホストＣＰＵ２と、システムの主記憶として利用されて必要な種々のデータを格納するメモリ３と、ホストＣＰＵ２を介することなくメモリ３に直接アクセスするＤＭＡ（ダイレクト・メモリ・アクセス）回路４とを含む。ＤＭＡ回路４の制御により、メモリ３と半導体演算装置１の間でデータ転送を行なうことができ、また半導体演算装置１へ直接アクセスすることができる。
【００２１】
ホストＣＰＵ２、メモリ３、ＤＭＡ回路４、および半導体演算装置１は、システムバス５を介して相互接続される。半導体演算装置１は、複数の並列に設けられる基本演算ブロックＦＢ１−ＦＢｎと、システムバス５との間でデータ／命令を転送する入出力回路１０と、半導体演算装置１内部での動作処理を制御する集中制御回路１５を含む。
【００２２】
基本演算ブロックＦＢ１−ＦＢｎは、内部データバス（グローバルデータバス）１２に結合され、また集中制御ユニット１５、入出力回路１０および基本演算ブロックＦＢ１−ＦＢｎは、内部バス１４に結合される。基本演算ブロックＦＢ（ＦＢ１−ＦＢｎを総称的に示す）の間には、ブロック間データバス１６が設けられる（図１において、基本演算ブロックＦＢ１およびＦＢ２の間に配置される隣接ブロック間データバス１６を代表的に示す）。
【００２３】
基本演算ブロックＦＢ１−ＦＢｎを並列に設け、この半導体演算装置１の内部で並列に同一または異なる演算処理を実行する。これらの基本演算ブロックＦＢ１−ＦＢｎは、同一構成を有するため、図１においては基本演算ブロックＦＢ１の構成を代表的に示す。
【００２４】
基本演算ブロックＦＢ１は、メモリセルが行列状に配列されるメモリマットおよび演算器を含む主演算回路２０と、マイクロコード化された実行プログラムを格納するマイクロプログラム格納メモリ２３と、基本演算ブロックＦＢ１の内部動作を制御するコントローラ２１と、アドレスポインタ等として用いられるレジスタ群２２と、主演算回路２０における不良の救済を行なうためのヒューズプログラムを実行するためのヒューズ回路２４を含む。
【００２５】
コントローラ２１は、ホストＣＰＵ２からシステムバス５および入出力回路１０を介して与えられる制御命令により制御が手渡され、対応の基本演算ブロックＦＢ１−ＦＢｎの動作を制御する。これらの基本演算ブロックＦＢ１−ＦＢｎにマイクロプログラム命令メモリ２３を設け、コントローラ２１がこのメモリ２３内に実行プログラムを格納することにより、基本演算ブロックＦＢ１−ＦＢｎそれぞれにおいて実行する処理内容を変更することができ、基本演算ブロックＦＢ１−ＦＢｎにおいてそれぞれ演算実行される処理内容を変更することができる。
【００２６】
隣接ブロック間データバス１６が、基本演算ブロックＦＢ１−ＦＢｎの間のデータ転送を行なうために設けられる。この隣接ブロック間データバス１６は、内部データバス（グローバルデータバス）を占有することなく基本演算ブロック間の高速データ転送を可能とする。したがって、たとえば、ある基本演算ブロックに内部データバス１２を介してデータを転送している間に、別の基本演算ブロック間でデータ転送を行なうことができる。
【００２７】
集中制御ユニット１５は、制御用ＣＰＵ２５と、この制御用ＣＰＵが実行する命令を格納する命令メモリ２６と、制御用ＣＰＵ２５のワーキングレジスタまたはポインタ格納用のレジスタを含むレジスタ群２７と、マイクロプログラムのライブラリを格納するマイクロプログラムライブラリ格納メモリ２８を含む。集中制御ユニット１５は、内部バス１４を介してホストＣＰＵ２から制御権を手渡され、内部バス１４を介して基本演算ブロックＦＢ１−ＦＢｎの処理動作を制御する。
【００２８】
このマイクロプログラムライブラリ格納メモリ２８に、各種シーケンス処理がコード化されたマイクロプログラムをライブラリとして格納することにより、集中制御ユニット１５から必要なマイクロプログラムを選択して、基本演算ブロックＦＢ１−ＦＢｎのマイクロプログラム格納メモリ２３に格納されるマイクロプログラムを変更することができ、処理内容の変更に柔軟に対応することができる。
【００２９】
ヒューズ回路２４は、この基本演算ブロックＦＢ１−ＦＢｎそれぞれにおいて、不良が発生した場合冗長置換を用いて不良救済を行ない、これにより、歩留まりを改善する。
【００３０】
図２は、図１に示す主演算回路２０の基本的な構成を概略的に示す図である。図２において、主演算回路２０は、メモリセルマット３０Ａおよび３０Ｂと、これらのメモリセルマット３０Ａおよび３０Ｂの間に配置される演算処理ユニット３２を備える。
【００３１】
メモリセルマット３０Ａおよび３０Ｂは、基本的にそれぞれｍ個のエントリＥＲＹに分割される。エントリＥＲＹは、ｎビットのビット幅を有する。このメモリセルマットの詳細構成については後に説明する。メモリセルマット３０Ａおよび３０Ｂにおいて、各エントリＥＲＹを構成するメモリセルＭＣは、スタティック・ランダム・アクセス・メモリセルで構成される。
【００３２】
この演算処理ユニット３２は、メモリセルマット３０Ａおよび３０ＢのエントリＥＲＹに対応して設けられる演算器（ＡＬＵ）３４を含む。図２においては、演算器（以下、単にＡＬＵと称す）３４は、１ビット演算処理を実行するように示される。しかしながら、このＡＬＵは、２ビット演算処理を実行してもよい。この演算処理ユニット３２においてＡＬＵ３４が、それぞれ対応のエントリのデータに対して指定された演算処理を行なう。このＡＬＵ３４は、加算、減算、論理積、排他的論理和などの演算を実行することができる。
【００３３】
二項演算をＡＬＵ３４が行なう場合、メモリセルマット３０Ａおよび３０Ｂに、各項の演算対象データを格納し、その演算処理結果を、メモリセルマット３０Ａおよび３０Ｂの一方に格納する。ＡＬＵ３４に対しエントリＥＲＹの演算対象データのビットが逐次読出され、ビットシリアルに演算が実行される。図２においては、メモリセルマット３０Ａおよび３０Ｂそれぞれに対し、メモリセルＭＣのデータを読出してＡＬＵ３４へ転送し（ロードし）、その演算結果がメモリセルに格納される（ストアされる）ように示す。
【００３４】
メモリセルマット３０Ａおよび３０Ｂは、各々演算対象の組のデータをともに格納することは要求されず、１つのメモリセルマットに格納するデータ量を低減することができる。応じて、ビット線（エントリＥＲＹがビット線延在方向に沿って形成される）の長さを短くすることができ、高速データ転送を実現する。
【００３５】
図３は、図１に示す隣接ブロック間データバス１６の具体的接続態様を、主演算回路の具体的配置とともに併せて示す図である。図３において、主演算回路２０Ａ−２０Ｄが図１に示す内部データバス１２に対応するグローバルデータバスＧＢＳに並列に結合される。これらの主演算回路２０Ａ−２０Ｄの各々は、メモリセルマット３０Ａおよび３０Ｂと、これらのメモリセルマット３０Ａおよび３０Ｂの間に配設されるＡＬＵ群（演算処理ユニット）を含む。図３においては、このＡＬＵ群は示していない。各主演算回路においてＡＬＵ群のＡＬＵ（３４）を相互接続するためのＡＬＵ間相互接続用スイッチ回路ＥＣＭが設けられる。このＡＬＵ間相互接続用スイッチ回路ＥＣＭにより、物理的に離れた位置のエントリのデータに対して演算処理を実行することができる。
【００３６】
メモリセルマット３０Ａおよび３０Ｂは、各々、複数のエントリＥＲＹに分割されており、ＡＬＵ間相互接続用スイッチ回路ＥＣＭ内において、エントリＥＲＹそれぞれに対して、ＡＬＵ間相互接続回路が設けられる。
【００３７】
図１に示す隣接ブロック間データバス１６は、隣接する主演算回路のＡＬＵ間接続回路（ＡＬＵ間相互接続用スイッチ回路ＥＣＭ内）を相互接続する隣接ブロックエントリ相互接続線４０を含む。隣接ブロックエントリ相互接続線４０は、隣接する基本演算ブロックの主演算回路２０（２０Ａ−２０Ｄ）の同一位置のエントリを相互接続する。
【００３８】
グローバルデータバスＧＢＳは、入出力回路１０を介して外部のシステムバス５に結合される。図３においては、外部システムバス５が一例として３２ビット幅の場合を示す。グローバルデータバスＧＢＳに関して同一側に配置される隣接主演算回路２０Ａおよび２０Ｂは、同一位置のエントリのＡＬＵが、隣接ブロックエントリ相互接続バスＮＢＡａを介して相互接続される。この隣接ブロックエントリ相互接続バスＮＢＡａは、隣接する主演算回路２０Ａおよび２０Ｂの同一位置のエントリＥＲＹに対して設けられＡＬＵおよびＡＬＵ間接続回路を相互接続する隣接ブロックエントリ接続線４０を含む。
【００３９】
また、グローバルデータバスＧＢＳの他方側において配置される隣接主演算回路２０Ｃおよび２０Ｄにおいても、隣接ブロックエントリ接続バスＮＢＡｂが配置される。この隣接ブロックエントリ相互接続バスＮＢＡｂは、主演算回路２０Ｃおよび２０Ｄの同一位置にエントリＥＲＹに対して設けられるＡＬＵおよびＡＬＵ間相互接続回路を接続する隣接ブロックエントリ相互接続線４０を含む。
【００４０】
隣接ブロック間相互接続バス（隣接ブロック間データバス１６）は、さらに、グローバルデータバスＢＧＳに対して対向する位置の主演算回路２０Ａおよび２０Ｃの対応するエントリＥＲＹに対して設けられるＡＬＵおよびＡＬＵ間相互接続回路を接続する隣接ブロックエントリ相互接続バスＮＢＢａを含む。この隣接ブロックエントリ相互接続バスＮＢＢａは、主演算回路２０Ａおよび２０Ｃの対応の位置のエントリに対して設けられるＡＬＵユニットおよびＡＬＵ間接続回路相互接続する配線４２ａを含む。
【００４１】
同様に、主演算回路２０Ｂおよび２０Ｄの対応の位置のエントリＥＲＹに対して配置されるＡＬＵおよびＡＬＵ間接続回路が、隣接ブロック相互接続バスＮＢＢｂより相互接続される。この隣接ブロックエントリ相互接続バスＮＢＢｂは、各ＡＬＵおよびＡＬＵ間接続回路に対して配設される配線４２ｂを含む。
【００４２】
この図３に示すように、基本演算ブロックＦＢｉ（主演算回路２０Ａ−２０Ｄ）が配設され、グローバルデータバスＧＢＳの一方側の両端の主演算回路およびグローバルデータバスの他方側の主演算回路のＡＬＵおよびＡＬＵ間接続回路を相互接続することにより、これらの主演算回路２０Ａ−２０Ｄをリング状に相互接続することができ、任意の主演算回路間でデータ転送を行なうことができる。また、アレイ状に主演算回路のメモリセルマットを配置することにより、効率的にメモリセルマットを配置することができる。
【００４３】
図３に示すように、隣接ブロック相互接続バスＮＢＢａおよびＮＢＢｂにおいて、対向して配置される主演算回路の同一位置のエントリＥＲＹに対して設けられるＡＬＵおよびＡＬＵ間相互接続回路が、配線４２ａおよび４２ｂにより相互接続されている。したがって、その相互接続配線４２ａおよび４２ｂは、それぞれのバスＮＢＢａおよびＮＢＢｂにおいて同じ長さとなり、信号伝搬遅延を同一とすることができ、信号のスキューを低減でき、高速転送を実現することができる。
【００４４】
また、隣接ブロックエントリ相互接続バスＮＢＢａおよびＮＢＢｂは、それぞれメモリセルマット３０Ａおよび３０Ｂ上に延在される第１の配線部分と、グローバルデータバスＢＧＳに関して対向する主演算かリロードのメモリセルマット上を第１の配線部分と直交する方向に延在する第２の配線部分とで構成される。これらの第１の配線部分および第２の配線部分をメモリセルマット上で相互接続することにより、グローバルデータバスに対して対向するメモリマット間の相互接続配線をコンパクトに配置することができ、配線面積増大によるアレイ面積の増大を抑制することができる。
【００４５】
なお、図３において、ＡＬＵ間相互接続用スイッチ回路ＥＣＭの内部構成は示していない。ＡＬＵ間相互接続用スイッチ回路ＥＣＭにおいては、ＡＬＵおよびＡＬＵ間接続回路がエントリに対応して配置されており、各ＡＬＵおよびＡＬＵ間接続回路が、対応の配線４０、４２ａまたは４２ｂにより接続される。
【００４６】
本発明は、これらの図１から図３に示す構成を基本構成として、半導体チップ上に主演算回路（基本演算ブロック）を効率的に集積化して、低消費電力で高速で動作する並列演算処理装置を実現する。
【００４７】
［実施の形態１］
図４は、この発明の実施の形態１に従う並列演算処理装置の全体の構成を概略的に示す図である。図４において、並列演算処理装置５０は、半導体チップ上に集積化され、２つのメモリマット５５Ａおよび５５Ｂを含む。この図４に示す並列演算処理装置５０は、１つの基本演算ブロックを構成してもよく、また図３に示すように、複数の主演算回路を含んでもよい。
【００４８】
また、この並列演算処理装置５０は、半導体チップ単体で構成されてもよく（領域５０がチップに対応）、また、他の装置と同一チップ上に集積化されてシステムＬＳＩを構成しても良い（領域５０が、いわゆるマクロに対応）。
【００４９】
メモリマット５５Ａは、メモリブロックＭＡ０−ＭＡｍを含み、メモリマット５５Ｂは、メモリブロックＭＢ０−ＭＢｍを含む。メモリマット５５Ａにおいて、メモリブロックの間に、演算処理ユニットＰＡ０−ＰＡｍ−１が配設される。これらの演算処理ユニットＰＡ０−ＰＡｍ−１は、両側に設けられるデータ転送回路を構成するセンスアンプ／ライトドライバＴ帯ＸＡ０−ＴＸＡｋ−１を介して隣接メモリブロックと結合される。メモリマット５５Ｂにおいても、同様、メモリブロックＭＢ０−ＭＢｍの間に、演算処理ユニットＰＢ０−ＰＢｍ−１が配設される。演算処理ユニットＰＢ０−ＰＡｍ−１と各メモリブロックとの間には、センスアンプ／ライトドライバＴＸＢ０−ＴＸＢｋ−１帯がそれぞれ配置される。センスアンプ／ライトドライバ帯ＴＸＡ０−ＴＸＡｋ−１およびＴＸＢ０−ＴＸＢｋ−１は、各々、センスアンプおよびライトドライバを含む。
【００５０】
これらのメモリマット５５Ａおよび５５Ｂの間の領域に、メモリブロックＭＡ０−ＭＡｍおよびＭＢ０−ＭＢｍに対応してＳＲＡＭ周辺回路ＳＨ０−ＳＨｍが配置される。また、メモリマット５５Ａおよび５５Ｂの演算処理ユニットＰＡ０−ＰＡｍ−１およびＰＢ０−ＰＢｍ−１の間の領域にローカル制御回路ＬＫ０−ＬＫｍ−１が配置される。
【００５１】
メモリブロックＭＡ０−ＭＡｍおよびＭＢ０−ＭＢｍは、各々ＳＲＡＭセルで構成され、メモリブロックにおけるメモリセルのデータの書込および読出を行なうためのロウデコーダ、ワード線ドライブ回路およびワード線選択タイミングの制御を行う制御回路などの周辺回路が、ＳＲＡＭ周辺回路内ＳＨ０−ＳＨｍに配置される。
【００５２】
ローカル周辺回路ＬＫ０−ＬＫｍ−１は、対応の演算処理ユニットにおける演算処理動作を制御するとともに、対応のセンスアンプ／ライトドライバ帯のセンスアンプおよびライトドライバの動作を制御する。
【００５３】
メモリマット５５Ａおよび５５Ｂの間に、ＳＲＡＭ周辺回路ＳＨ０−ＳＨｍおよびローカル制御回路ＬＫ０−ＬＫｍ−１を配置することにより、蝋アドレスを精製するアドレスポインタおよびロウアドレスデコード回路などの周辺回路を、メモリマット５５Ａおよび５５Ｂで共有することができる。これにより、ＳＲＡＭ周辺回路のレイアウト面積を低減することができる。
【００５４】
また、ローカル制御回路ＬＫ０−ＬＫｍ−１においても、マット特定信号を除いて、内部制御信号を生成する回路部分を、メモリマット間で共有することができる。また、これらの演算処理ユニットが、並列に同一の演算を実行する場合には、ローカル制御回路において演算制御を行う回路部分をメモリマット５５Ａおよび５５Ｂ間で共有することができ、応じて、レイアウト面積を低減することができる。
【００５５】
メモリブロックの内部構成については、後に詳細に説明するが、１つのメモリブロックＭＡｉおよびＭＢｉ（ｉ＝０−ｍ）は、各々、その両側の演算処理ユニットにより用いられる。すなわち、図３に示すように、演算処理回路（回路ＥＣＭで表わす回路部分）が、その両側のメモリセルマットで共有されるのではなく、図４に示す構成においては、演算処理ユニットがメモリブロックを共有する。したがって、図３に示すように、主演算回路の間のメモリセルマット間の領域において、演算処理ユニットが配置される構成となり、ダミーセルなどの回路領域等のＳＲＡＭブロックを分離する領域が不要となり、レイアウト面積を低減することができる。
【００５６】
また、メモリマット５５Ａおよび５５Ｂにおいては、各々のメモリブロックに対して共通にグローバルデータバスが配置され、このグローバルデータバスと装置外部とのインターフェースをとるために、グローバルバスインタフェース６０ａおよび６０ｂが、メモリマット５５Ａおよび５Ｂの端部にそれぞれ配置される。このグローバルバスインターフェース６０ａおよび６０ｂは、図１に示す入出力回路であっても良く、また、この入出力回路と並列演算装置との間のバスのインターフェースを取る回路であっても良い。
【００５７】
図５は、図４に示す並列演算処理装置５０の等価的構成および内部バス配置を示す図である。図５において、メモリマット５５Ａにバンク♯０−♯Ｍ＋１が配設され、また、メモリマット５５Ｂにおいてバンク♯Ｍ＋２−♯Ｎが配設される。
【００５８】
これらのバンク♯０−♯Ｍ＋２の各々は、演算処理ユニット（ビット演算ユニット群ＰＥｓ）と両側のメモリブロック（ＳＲＡＭ）とで構成される。したがって、演算処理は、バンク♯０−♯Ｎそれぞれにおいて個々に実行される。
【００５９】
バンク♯０−♯Ｍ＋１に対してグローバルデータバスＢＧＳａが配設され、また、バンク♯Ｍ＋２−♯Ｎに対しグローバルデータバスＢＧＳｂが配設される。これらのグローバルデータバスＢＧＳａおよびＢＧＳｂが、先の図１に示すグローバルデータバスＢＧＳに対応する。このグローバルデータバスＢＧＳは、上述のように、図４に示すグローバルバスインターフェイス６０ａおよび６０ｂを介して図１に示す入出力回路に結合されても良く、また、グローバルインターフェース６０ａおよび６０ｂを介してシステムバスに結合されても良い。また、グローバルデータバスＢＧＳが、図４に示すグローバルバスインターフェイス６０ａおよび６０ｂにおいて、よりビット幅調整が行なわれ、図１に示す内部バスに結合され、次いで図１に示す入出力回路に結合されてもよい。
【００６０】
この図５に示すように、並列演算処理装置５０においては、バンク♯０−♯Ｎにおいて個々に演算処理が実行される。バンク♯０−♯Ｎは、ＡＬＵ間相互接続配線ＮＢにより、リング状にその演算器（ＡＬＵ）に対応するビット演算ユニット群に結合される。ビット演算ユニットの用語は、以下の理由から用いる。後に説明するように、本実施の形態においては、２ビット並列演算処理が実行される。したがって、１ビット演算処理を実行する演算器（ＡＬＵ）に代えて、この構成上の違いを明確にするために、ビット演算ユニットＰＥの符号を用いる（この構成については後に説明する）。
【００６１】
この図５に示すように、バンク♯０−♯Ｎそれぞれにおいて、演算処理ユニット（ＰＥｓ）は、両側のメモリブロック（ＳＲＡＭ）の記憶データを用いて演算処理を実行する。バンクそれぞれにメモリブロックを個々に配置すると、図５に概念的に示すように、隣接バンクにおいて、メモリブロック（ＳＲＡＭ）を分離するための、ダミー回路を配置するＳＲＡＭ境界領域を設ける必要がある。隣接するメモリブロック（ＳＲＡＭ）を両側の演算処理ユニットで共有することにより、この空き領域を削減する。
【００６２】
この並列演算処理装置５０においては、ＳＩＭＤ制御信号によりバンク♯０−♯Ｎに共通の演算命令が与えられ、内部制御信号に従って、メモリセルのデータの転送、およびアドレスの更新などを行って、これらのバンク♯０−♯Ｎが並列に演算を実行する。バンク♯０−♯Ｎが、各々図１に示す基本演算ブロックに対応し、演算処理ユニットメモリおよび両側のメモリブロックとが、図１に示す主演算回路に対応する。
【００６３】
ＳＩＭＤ制御信号および内部制御信号は、それぞれ、図１に示す集中制御ユニット１５から各バンクを構成する基本演算ブロックへ与えられる。このＳＩＭＤ制御信号に従って、バンク♯０−♯Ｎが、並列に同一命令に従って同じ演算を実行する（バンクアドレスにより、演算を実行するバンクが指定されても良い）。したがって、この場合、図１に示す各基本演算ブロック内におけるコントローラ２１が、ローカル制御回路として機能し、対応のバンク（基本演算ブロック）の内部動作を制御する。ＳＩＭＤ制御信号に従って、演算処理ユニット内における演算器（ビット演算ユニット）の演算内容が設定されるため、マイクロプログラム格納メモリ２３は特に設ける必要はない。レジスタ群は、アドレスポインタの生成のために、各バンクにおいて設けられていても良い。
【００６４】
また、演算内容の設定および内部制御信号の生成が、各ローカル制御回路で個々別々に行なわれても良い（この場合には、各バンクで異なる演算を実行することができる）。
【００６５】
図６は、この図４に示す並列演算処理装置のメモリマットの構成をより具体的に示す図である。図６においては、バンク♯１、♯２および♯３に対応する部分の構成を代表的に示す。
【００６６】
図６において、メモリブロックＭＡ１♯１の偶数サブエントリＥＲＹｅがバンク♯１の演算データ格納領域として利用され、メモリブロックＭＡ♯１およびＭＡ♯２の奇数サブエントリＥＲＹｏが、バンク♯２の演算データ格納領域として利用される。メモリブロックＭＡ♯２の偶数サブエントリＥＲＹｅは、バンク♯３の演算データ格納領域として利用される。サブエントリＥＲＹｅおよびＥＲＹｏは、各々、対応のメモリブロックの１列のメモリセルで構成され、各サブエントリは、ビット線対を介して内部データを転送する。
【００６７】
２つのサブエントリにより、１つのエントリが構成され、１エントリに演算データが格納される。２つのサブエントリに対して演算データの偶数アドレスのビットおよび奇数アドレスのビットをそれぞれ格納する。１本のワード線選択により、演算データの奇数アドレスビットおよび偶数アドレスビットを並列に読出して、ビット演算ユニットＰＥが２ビット並列演算を実行する。
【００６８】
このバンク♯１においては、図示しないメモリブロックに対して設けられるデータ転送回路を構成するセンスアンプ／ライトドライバ帯ＴＸＡ♯１と、メモリブロックＭＡ♯１の偶数サブエントリＥＲＹｅに対して設けられるセンスアンプ／ライトドライバを含むセンスアンプ／ライトドライバ帯ＴＸＡ♯２と、これらのセンスアンプ／ライトドライブ帯ＴＸＡ♯１およびＴＸＡ♯２の間の演算処理ユニットＰＡ♯１を含む。この演算処理ユニットＰＡ♯１においては、２つのエントリに対して１つのビット演算ユニットＰＥが設けられる。したがって、ビット演算ユニットＰＥは、４サブエントリ（ビット線対）あたり１つ配置される。
【００６９】
バンク♯２も、同様、メモリブロックＭＡ♯１およびＭＡ♯２の奇数サブエントリＥＲＹｏとの間でデータを転送するセンスアンプ／ライトドライバ帯ＴＸＡ♯２およびＴＸＡ♯３と、これらのセンスアンプ／ライトドライブ帯ＴＸＡ♯２およびＴＸＡ♯３の間の演算処理ユニットＰＡ♯２を含む。
【００７０】
バンク♯３は、メモリブロックＭＡ♯２および図示しないメモリブロックの偶数サブエントリＥＲＹｅのデータを転送するセンスアンプ／ライトドライバ帯ＴＸＡ♯４およびＴＸＡ♯５と、これらのセンスアンプ／ライトドライバ帯ＴＸＡ♯４およびＴＸＡ♯５の間の演算処理ユニットＰＡ♯３を含む。これらのバンク♯２およびバンク♯３において、演算処理ユニットＰＡ♯２およびＰＡ♯３においても、それぞれ、２つのエントリ（４サブエントリ）に対して１つのビット演算ユニットＰＥが設けられる。
【００７１】
バンク♯１、♯２および♯３それぞれにおいて、データの書込／読出および演算処理を制御するローカル制御回路ＬＫ♯１、ＬＫ♯２およびＬＫ♯３が、それぞれ演算処理ユニットおよびセンスアンプ／ライトドライバ帯に対応して設けられる。これらのローカル制御回路ＬＫ♯１、ＬＫ♯２およびＬＫ♯３は、対応のバンク♯１−♯３の選択時に活性化されて、データの書込／読出および演算処理の内部タイミングを設定し、また、ＳＩＭＤ制御信号に従ってビット演算ユニットＰＥの演算内容を設定する。
【００７２】
ＳＲＡＭ周辺回路ＳＨ♯１およびＳＨ♯２に含まれる行デコーダは、それぞれメモリブロックを共有するバンクにより共有され、活性化時、与えられたワード線アドレスに従ってアドレス指定されたワード線を選択状態に駆動する。行デコーダが、隣接バンクで共有されており、各バンクは、従って、同一アドレスのデータビットに対して演算処理を実行する。
【００７３】
この図６に示すように、センスアンプＳＡおよびライトドライバＷＤの組は、２つのサブエントリ（２つのビット線対）に対応して配置される。したがって、４列のメモリセルに対して各列それぞれにセンスアンプおよびライトドライバを配置する構成に比べて、センスアンプＳＡおよびライトドライバＷＤのピッチ条件を緩和することができる。
【００７４】
図７は、センスアンプＳＡおよびライトドライバＷＤの配置をより具体的に示す図である。図７においては、４つのビット線対ＢＬＰ０−ＢＬＰ３を示す。ビット線対ＢＬＰ０−ＢＬＰ３とワード線ＷＬの交差部に対応してメモリセル（ＳＲＡＭセル）ＭＣが配置される。ビット線対ＢＬＰ０がその左側端部においてセンスアンプＳＡ０およびライトドライバＷＤ０に結合され、また、ビット線対ＢＬＰ２がその左側端部においてセンスアンプＳＡ２およびライトドライバＷＤ２に結合される。一方、ビット線対ＢＬＰ１が、その右側端部においてセンスアンプＳＡ１およびライトドライバＷＤ１に結合され、ビット線対ＢＬＰ３がその右側端部においてセンスアンプＳＡ３およびライトドライバＷＤ３に結合される。
【００７５】
センスアンプＳＡ０，ＳＡ２およびライトドライバＷＤ０，ＷＤ２が、左側に設けられたビット演算ユニットＰＥｌに結合され、また，センスアンプＳＡ１，ＳＡ３およびライトドライバＷＤ１，ＷＤ３が、右側に設けられたビット演算ユニットＰＥｒに結合される。
【００７６】
ビット線対ＢＬＰ０，ＢＬＰ２が、各々偶数サブエントリＥＲＹｅのデータ転送線を形成し、ビット線対ＢＬＰ１，ＢＬＰ３が、奇数サブエントリＥＲＹｏのデータ転送線を構成する。左側のビット演算ユニットＰＥｌは、偶数サブエントリＥＲＹｅのビット線対ＢＬＰ０およびＢＬＰ２に接続されるメモリセルのデータに対して演算処理を行ない、ビット演算ユニットＰＥｒが、奇数サブエントリＥＲＹｏを構成するビット線対ＢＬＰ１，ＢＬＰ３上のメモリセルのデータについて演算処理を実行する。
【００７７】
１エントリは、２つのビット線対ＢＬＰで構成される。ビット演算ユニットＰＥｌおよびＰＥｒは、各々、４つのビット線対ＢＬＰ０−ＢＬＰ３に対応して配置されるため、十分に余裕を持ってビット演算ユニットＰＥｌを配置することができる。センスアンプＳＡ（ＳＡ０−ＳＡ３）およびライトドライバＷＡ（ＷＤ０−ＷＤ３）は、これらのビット線対ＢＬＰ０−ＢＬＰ３の端部に、交互に配置される。したがって、ビット線対のピッチがＬの場合（ビット線ピッチがＬ／２の場合）、センスアンプＳＡおよびライトドライバＷＤのピッチは２・Ｌに緩和することができる。また、１つのセンスアンプ／ライトドライバ帯において配置されるセンスアンプおよびライトドライバの数は低減されるため、このセンスアンプ／ライトドライバ等の周辺回路の面積を低減することができる。
【００７８】
また、１本のワード線ＷＬの選択で２バンクに対するメモリセルのデータをアクセスすることができる。従って、図５に概念的に示す構成に較べて選択ワード線の数を低減することができる。すなわち、各バンクにおいてメモリブロックが２つ設けられる場合、データアクセス時には、バンクの数の２倍のワード線を選択する必要がある。しかしながら、図６および７に示す構成の場合、データアクセス時には、バンクの数＋１のワード線を選択するだけで各バンクのデータを書込／読出することができ、応じて。ワード線選択時の消費電力を低減することができる。
【００７９】
図８は、図６に示すビット演算ユニットＰＥの構成の一例を示す図である。図８において、ビット演算ユニットＰＥは、２つの並列に設けられるレジスタ（Ｘレジスタ；上位ビットレジスタＸＨおよび下位ビットレジスタＸＬ）６５ａおよび６５ｂと、レジスタ６５ａおよび６５ｂからの２ビットデータを受ける入力ＩＮ１と、別のメモリブロックから読出された２ビットデータを受ける入力ＩＮ２を有し、与えられたデータに演算処理を行なう演算回路６７を含む。この演算回路６７の出力ＯＵＴは、対応のメモリブロックのいずれかに転送される（図示しないビット演算器内の内部データ転送路を介して）。
【００８０】
この場合、１つのメモリブロックから、２つのサブエントリＥＲＹｅまたはＥＲＹｏから、２ビットデータ、たとえば、Ａ［０］，Ａ［１］が読出され、レジスタ６５ａ，６５ｂに格納される。これと並行して、別のメモリブロックから２ビットデータＢ［０］およびＢ［１］が読出され演算回路６７の入力ＩＮ２へ与えられる。ついで、レジスタ６５ａおよび６５ｂに格納された２ビットと演算回路６７の入力ＩＮ２に与えられた２ビットデータの演算処理が実行される。たとえば加算時においては、下位ビット側から順次加算が行なわれ、その加算結果が、いずれかのメモリブロックに書込まれる（ストアされる）。
【００８１】
この２ビット演算処理を実行することにより、たとえば本願発明者のグループが既に提案している（特願２００５‐１４３１０９号）並列演算処理装置に示されるように、２ビット乗算処理を２次のブースアルゴリズムに従って、高速で実行することができる。
【００８２】
ビット演算ユニットＰＥにおいては、またＸレジスタ６５ａおよび６５ｂの入力の接続経路を切換えることにより、１ビット演算操作を行なうことができる（この場合、演算回路６７において、１ビット演算処理を行なうようにその入力ＩＮ２の接続経路が切換えられる。また、出力ＯＵＴについても内部で１ビットデータの演算処理結果を出力するように経路が切換えられる）。
【００８３】
この２ビット演算操作時においても、単に、ワード線アドレスのポインタを切換えることにより、２ビットデータを順次読出すことができる（偶数アドレスおよび奇数アドレスのデータビットは、同じメモリブロック内の同一ワード線アドレスに格納されている）。したがって、２ビット並列演算処理の場合には、２つのサブエントリで１つのエントリＥＲＹが構成される。
【００８４】
１つのエントリのデータに対して、１ビットずつ逐次演算処理を実行する場合には、１つのＸレジスタ６５ａまたは６５ｂとメモリブロックのセンスアンプ／ライトドライバの接続を逐次切換える（またはＸレジスタ６６ａ，６６ｂの出力と演算回路の入力ＩＮ１の接続を順次切換える）。
【００８５】
メモリブロックのデータをグローバルデータバスを介して転送する場合、ビット演算ユニットあたり１ビットのデータを転送する。この１ビットのデータをグローバルデータバスを介して転送する部分の構成を図９に示す。
【００８６】
図９において、ビット演算ユニットＰＩに対して、センスアンプ／ライトドライバＳＷＬ０，ＳＷＬ１が一方側に配置され、他方側にセンスアンプ／ライトドライバＳＷＲ０およびＳＷＲ１が配置される。センスアンプ／ライトドライバＳＷＲ０およびＳＷＲ１は、それぞれ、ビット線対ＢＬＰＲ０およびＢＬＰＲ１に結合される。また、センスアンプ／ライトドライバＳＷＬ０，ＳＷＬ１は、それぞれ、ビット線対ＢＬＰＬ０，ＢＬＰＬ１に結合される。ビット線対ＢＬＰＬ０およびＢＬＰＬ１の間にビット線対ＢＬＰが設けられ、これらのビット線対ＢＬＰが、図示しないバンクのセンスアンプ／ライトドライバに結合される。同様、ビット線対ＢＬＰＲ０，ＢＬＰＲ１についても、ビット線対ＢＬＰが設けられて、図示しないバンクのセンスアンプ／ライトドライバに結合される。
【００８７】
センスアンプ／ライトドライバＳＷＬ０，ＳＷＬ１は、それぞれ、列選択信号ＣＳＬ０，ＣＳＬ１に応答して選択的に導通する列選択ゲートＹＧＬ０，ＹＧＬ１を介してグローバルデータ線ＧＢＬに結合される。また、センスアンプ／ライトドライバＳＷＲ０，ＳＷＲ１は、それぞれ、列選択信号ＣＳＲ０，ＣＳＲ１に応答して選択的に導通する列選択ゲートＹＧＲ０，ＹＧＲ１を介してグローバルデータ線ＧＢＬに結合される。グローバルデータ線ＧＢＬは、グローバルデータバスＧＢＳに含まれる１ビットデータ転送線である。
【００８８】
したがって、１つのセンスアンプ／ライトドライ帯を配置する領域においては、入出力データ１ビット当り４本のビット線対が設けられる。しかしながら、ライトドライバおよびセンスアンプは、入出力データ１ビット当り２つ設けられるだけである。したがって、このセンスアンプ／ライトドライバの交互配置により、メモリセルのピッチを変更することなく、入出力データ１ビット当りの列線（ビット線対）の数ＣＰＢ（コラムパービット）を低減することができる。
【００８９】
図１０は、図４に示す並列演算処理装置のメモリマットの端部に配置されるメモリブロックおよび対応の回路の概略レイアウトを示す図である。図１０において、メモリブロックＭ♯ＥＤが１つのメモリマットの端部に配置され、このメモリブロックＭ♯ＥＤに隣接して、センスアンプ／ライトドライバ帯ＴＸ♯ＥＤが設けられる。このセンスアンプ／ライトドライバ帯ＴＸ♯ＥＤに隣接して、ビット演算ユニットＰＥを含む演算処理ユニットＰ♯ＥＤが設けられる。この演算処理ユニットＰ♯ＥＤに隣接して、データ転送回路を構成するセンスアンプ／ライトドライバ帯ＴＸ♯ＮＨが設けられ、センスアンプ／ライトドライバ帯ＴＸ♯ＮＨに隣接して、メモリブロックＭ♯ＮＨが設けられる。
【００９０】
メモリブロックＭ♯ＮＨにおいては、ワード線がＮ本設けられ、また、偶数サブエントリＥＲＹｅおよび奇数サブエントリＥＲＹｏが交互に配置され、それぞれ異なるバンクにより使用される。
【００９１】
一方、メモリブロックＭ♯ＥＤにおいては、ワード線ＷＬが、メモリブロックＭ♯ＮＨのワード線数の１／２倍、すなわちＮ／２本設けられる。偶数サブエントリＥＲＹｅおよび奇数サブエントリＥＲＹｏはともに共通のバンクにより使用され、センスアンプ／ライトドライバ帯ＴＸ♯ＥＤに設けられるセンスアンプＳＡおよびライトドライバＷＤにそれぞれ結合される。
【００９２】
この終端部のメモリブロックＭ♯ＥＤに対応するセンスアンプ／ライトドライバ帯ＴＸ♯ＥＤにおいては、各サブエントリごとにセンスアンプＳＡおよびライトドライバＷＤが設けられる。一方、メモリブロックＭ♯ＮＨに対して設けられるセンスアンプ／ライトドライバ帯ＴＸ♯ＮＨにおいては、２つのサブエントリごとにセンスアンプＳＡおよびライトドライバＷＤが設けられる。演算処理ユニットＰ♯ＥＤにおいては、４つのサブエントリ（４列のメモリセル）に対して１つのビット演算ユニットＰＥが設けられる。
【００９３】
メモリマット端部に配置されるメモリブロックＭ♯ＥＤにおいては、一方側にのみ、演算処理ユニットＰ♯ＥＤが設けられる。したがって、この終端部のメモリブロックＭ♯ＥＤを、メモリブロックＭ♯ＮＨと同一構成とした場合、図１０に示す構成においては、奇数サブエントリＥＲＹｏに対応するビット線対が不使用状態となり、メモリセルの利用効率が低下する。そこで、終端部のメモリブロックに対しては、各ビット線対をすべて同一バンクのサブエントリまたはエントリとして利用し、それに合わせて、ワード線ＷＬの数を半減する。
【００９４】
図１１は、この図１０に示すメモリブロックＭ♯ＥＤおよびＭ♯ＮＨにおける４列（４ビット線対）に関連する部分の構成を概略的に示す図である。
【００９５】
メモリブロックＭ♯ＥＤにおいては、ビット線対ＢＬＰ０−ＢＬＰ３が設けられる。これらのビット線対ＢＬＰ０−ＢＬＰ３それぞれに対応して、センスアンプ／ライトドライバＳＷＥＤ０−ＳＷＥＤ３が設けられる。センスアンプ／ライトドライバＳＷＥＤ０およびＳＷＥＤ２は、活性化信号ＥＮｅの活性化時活性化され、センス動作またはライト動作を実行する。一方、センスアンプ／ライトドライバＳＷＥＤ１およびＳＷＥＤ３は、活性化信号ＥＮｏの活性化時活性化され、センス動作またはライト動作を実行する。
【００９６】
センスアンプ／ライトドライバＳＷＥＤ０およびＳＷＥＤ１がビット演算ユニットＰＥの共通の１ビット入力ＩＮ１ｅに結合され、センスアンプ／ライトドライバＳＷＥＤ２およびＳＷＥＤ３が、ビット演算ユニットの共通の１ビット入力ＩＮＩ１ｏに結合される。
【００９７】
一方、メモリブロックＭ♯ＮＨにおいては、ビット線対ＢＬＰ０−ＢＬＰ３のうち、ビット線対ＢＬＰ０およびＢＬＰ２に対しセンスアンプ／ライトドライバＳＷＮＨ０およびＳＷＮＨ１が設けられる。これらのセンスアンプ／ライトドライバＳＷＮＨ０およびＳＷＮＨ１は活性化信号ＥＮの活性化センス動作またはライト動作を行なう。センスアンプ／ライトドライバＳＷＮＨ０およびＳＷＮＨ１は、それぞれ、ビット演算ユニットＰＥの１ビット入力ＩＮ２ｅおよびＩＮ２ｏに結合される。
【００９８】
メモリブロックＭ♯ＥＤにおいて、ワード線ＷＬとビット線対ＢＬＰ０−ＢＬＰ３の交差部にメモリセルＭＣ（ＭＣｅ，ＭＣｏ）が設けられる。メモリブロックＭ♯ＥＤにおいては、ワード線ＷＬの数は、Ｎ／２本であり、ワード線アドレスビットＡｎ−Ａ０のうち、アドレスビットＡｎ−Ａ１を用いてワード線ＷＬの選択が行なわれる。残りのワード線アドレスビット（最上位または最下位）Ａ０は、活性化信号ＥＮｅおよびＥＮｏを選択するために用いられる。
【００９９】
一方、メモリブロックＭ♯ＮＨにおいては、ワード線ＷＬと各ビット線対の交差部にメモリセルＭＣ（ＭＣｅ，ＭＣｏ）が設けられる。ワード線ＷＬは、メモリブロックＭ♯ＮＨにおいては、ワード線アドレスビットＡｎ−Ａ０の全ビット用いて、アドレス指定が行なわれる。
【０１００】
この図１１に示す構成の場合、メモリブロックＭ♯ＥＤにおいてワード線ＷＬの選択時、そのワード線アドレスＡｎ−Ａ０が偶数アドレスの場合、たとえば、活性化信号ＥＮｅが活性化され、ビット線対ＢＬＰ０およびＢＬＰ２のメモリセルＭＣｅに対するデータの読出または書込が実行される。一方、ワード線ＷＬのアドレスＡｎ−Ａ０が奇数アドレスの場合には、活性化信号ＥＮｏが活性化され、ビット線対ＢＬＰ１およびＢＬＰ３のメモリセルＭＣｏに対するデータの読出または書込が実行される。
【０１０１】
メモリブロックＭ♯ＮＨにおいては、ワード線ＷＬの選択時、ビット線対ＢＬＰ０およびＢＬＰ２が偶数サブエントリＥＲＹｅであり、メモリセルＭＣｅに対するデータの書込／読出が行なわれる。ビット線対ＢＬＰ１，ＢＬＰ３は、奇数サブエントリＥＲＹｏであり、図示しない別のバンクにおいて利用される。
【０１０２】
メモリマットの終端部のメモリブロックＭ♯ＥＤにおいて一方側にのみ演算処理ユニット（ビット演算ユニット）が設けられる場合、そのワード線ＷＬの数を他のメモリブロックに比べて１／２倍とする。しかしながら、使用されるビット線対の数が、２倍とされているため、用いられるメモリセルの数は全メモリブロックにおいて同じとなる。すなわち、ビット線対ＢＬＰの数が、Ｍ本であれば、メモリブロックＭ♯ＥＤにおいては、メモリセルＭＣは、（Ｎ／２）・Ｍ個設けられ、一方、メモリブロックＭ♯ＮＨにおいては、Ｎ・（Ｍ／２）のメモリセルが利用される。したがって、図１０に示す演算処理ユニットＰ♯ＥＤにおいて演算処理を実行されるデータを格納するメモリセルの数は、メモリブロックＭ♯ＥＤおよびＭ♯ＮＨにおいて同じとなる。
【０１０３】
終端部のメモリブロックＭ♯ＥＤにおいてビット線対ＢＬＰ１おびＢＬＰ３も利用することにより、この端部のメモリブロックＭ♯ＥＤにおいて効率的にメモリセルを利用することができ、メモリマットのレイアウト面積を低減することができる。
【０１０４】
なお、この終端部部のメモリブロックＭ♯ＥＤに対して、各ビット線対ごとにセンスアンプ／ライトドライバＳＷＥＤ（ＳＷＥＤ０−ＳＷＥＤ３）を設ける必要があり、センスアンプ／ライトドライバのピッチ条件が他のメモリブロックに対するセンスアンプ／ライトドライバに比べて厳しくなる。しかしながら、この終端部のメモリブロックＭ♯ＥＤにおいては、ワード線ＷＬの数は半減されているため、ビット線延在方向において面積的な余裕がある。したがって、センスアンプ／ライトドライバを、２列に整列して配置することにより、または、その位置を列方向（ビット線延在方向）においてずらせて交互にジグザグ状に配置することにより、センスアンプ／ライトドライバのピッチ条件は、他のメモリブロックと同じとすることができ、このセンスアンプ／ライトドライバに対するピッチ条件に対する制約は解消することができる。
【０１０５】
また、メモリブロックＭ♯ＥＤにおいては、各ビット線に対して列選択ゲートが配置される。列グローバルデータバスとの間でのデータ転送時、メモリブロックＭ♯ＥＤにおいては、アドレスビットＡ０を用いて列選択を実行する。これにより、終端部のメモリブロックＭ♯ＥＤにおいてＣＰＢが、他のメモリブロックに較べて２倍となっても、正確に列選択を実行してデータの入出力を実行することができる。
【０１０６】
この構成は、次のような構成により実現することができる。すなわち、ＳＲＡＭ周辺回路において、終端部のメモリブロックの行デコーダに対して、ワード線アドレスビットＡ０を縮退状態とし、他のメモリブロックの行デコーダに対しては全ワード線アドレスビットＡｎ−Ａ０を有効状態とする。また、全メモリブロックの列デコーダに対してビット線アドレスビットとアドレスビットＡ０とを供給し、終端部のメモリブロックにおいては、列デコーダに対するアドレスビットＡ０を有効状態とする。他のメモリブロックにおいては、この列デコーダに供給されるアドレスビットＡ０を縮退状態に設定する。これにより、全メモリブロックにおいてＳＲＡＭ周辺回路の構成を同一として、終端部のメモリブロックにおいて、ワード線の数を半減してかつＣＰＢを２倍に設定することができる。
【０１０７】
以上のように、この発明の実施の形態１に従えば、メモリブロックと演算処理ユニットとを交互に配置し、１つのメモリブロックをその両側の演算処理ユニットで共有するように構成している。したがって、ＳＲＡＭアレイ境界領域が存在せず、メモリマットのレイアウト面積を低減することができる。
【０１０８】
また、各メモリブロックおよび演算処理ユニットおよびデータ転送を制御する回路を、２つのメモリマットの間の中央領域に配置することにより、内部制御タイミング信号を発生する回路部分などの周辺回路を、２つのメモリマットで共有することができ、周辺回路のレイアウト面積を、低減することができる。
【０１０９】
さらに、１つのメモリブロックが両側の演算処理ユニットで共有される構成を用いることにより、１つのメモリブロック選択時、両側の演算処理ユニットへデータを転送することができる。これらのメモリブロックの両側の演算処理ユニットが異なるバンクの構成要素の場合、１つのワード線選択で、２つのバンクとの間でデータ転送を行なうことができ、ワード線選択回数を低減でき、応じて消費電力を低減することができる。
【０１１０】
［実施の形態２］
図１２は、この発明の実施の形態２において用いられるビット演算ユニットＰＥの内部接続の構成の一例を概略的に示す図である。図１２において、ビット演算ユニットＰＥは、センスアンプ／ライトドライバ対ＳＷＬＰを、Ｘレジスタ６５および演算回路６７の２ビット入力ＩＮ２の一方に結合するマルチプレクサ７０と、他方のメモリブロックのセンスアンプ／ライトドライバ対ＳＷＲＰを演算回路６７の２ビット入力ＩＮ２およびＸレジスタ６５の一方に結合するマルチプレクサ７２と、演算回路６７の出力ＯＵＴを、センスアンプ／ライトドライバ対ＳＷＬＰおよびＳＷＲＰの一方に結合するマルチプレクサ７４を含む。
【０１１１】
Ｘレジスタ６５は、図８に示すＸレジスタ６５ａおよび６５ｂを含み、クロック信号ＣＬＫＡに従って、与えられた信号を取込み、演算回路６７の入力ＩＮ１へ取込んだ信号を伝達する。
【０１１２】
センスアンプ／ライトドライバ対ＳＷＬＰおよびＳＷＲＰは、各々、２つのセンスアンプおよび２つのライトドライバを含み、２ビットのデータを転送する。
【０１１３】
マルチプレクサ７０は、選択信号ＳＥＬが“０”のときに、センスアンプ／ライトドライバ対ＳＷＬＰを演算回路６７の入力ＩＮ２に結合し、選択信号ＳＥＬが“１”のときに、センスアンプ／ライトドライバ対ＳＷＬＰをＸレジスタ６５に結合する。
【０１１４】
マルチプレクサ７２は、選択信号ＳＥＬが“１”のときに、センスアンプ／ライトドライバ対ＳＷＲＰを演算回路６７の入力ＩＮ２に結合し、選択信号ＳＥＬが“０”のときに、センスアンプ／ライトドライバ対ＳＷＲＰをＸレジスタ６５に結合する。
【０１１５】
マルチプレクサ７４は、選択信号ＳＥＬが“１”のときに、演算回路６７の出力ＯＵＴをセンスアンプ／ライトドライバ対ＳＷＲＰに結合し、選択信号ＳＥＬが“０”のときに、演算回路６７の出力ＯＵＴをセンスアンプ／ライトドライバ対ＳＷＬＰに結合する。
【０１１６】
この選択信号ＳＥＬにより、データ書込を行なうメモリブロックを特定することができる。選択信号ＳＥＬは、対応のローカル制御回路から生成される。いずれのメモリブロックに対して演算結果データを書込むかは、一例として、プライオリティエンコーダなどを用いて決定され、優先順位の低いデータを格納するメモリブロックに対してデータの書込を実行する。例えば、フィルタ処理などにおいて、係数データと演算データとを格納する場合、係数データを格納するメモリブロックを優先順位の高いメモリブロックとして、演算データを格納するメモリブロックに対して演算結果データを格納する。
【０１１７】
この図１２に示すビット演算ユニットＰＥの構成の場合、入力ＩＮ１およびＩＮ２それぞれに、データを２つの両側のメモリブロックから読出して、演算処理を行なうことができる。Ｘレジスタ６５は、与えられたデータを取込み、次のクロックサイクルにおいてクロック信号ＣＬＫＡの立上がりでその信号を出力する。したがって、Ｘレジスタ６５を介して演算回路６７へデータを転送する場合、演算回路６７における演算処理の前のサイクルでＸレジスタ６７へデータを読出す（ロードする）必要がある。
【０１１８】
図１３は、この図１２に示すビット演算ユニットを用いる場合の通常の演算操作シーケンスの一例を示す図である。図１３においては、二項加算演算を行なう場合のシーケンスを示す。クロックサイクルは、ビット演算ユニットＰＥに対するクロック信号ＣＬＫＡにより決定される。
【０１１９】
クロックサイクルｋにおいて、右側のメモリブロックからデータビットｂ［ｉ，ｉ＋１］の２ビットデータが読出される（ロードされる）。このデータが、Ｘレジスタ６７に転送される。
【０１２０】
次のクロックサイクルｋ＋１において、左側のメモリブロックからデータビットａ［ｉ，ｉ＋１］が読出される。このサイクルにおいては、Ｘレジスタ６７の出力ビットも確定状態にあり、これらのデータビットに対して二項加算が行なわれる。
【０１２１】
次いで、クロックサイクルｋ＋２において、この演算結果ｃ［ｉ，ｉ＋１］が左側メモリブロックへ転送されて格納される（ストアされる）。このクロックサイクルｋ＋２において、右側のメモリブロックにおいて２ビットデータｂ［ｉ＋２，ｉ＋３］が読出され、Ｘレジスタ６７に転送される。
【０１２２】
クロックサイクルｋ＋３において、２ビットデータａ［ｉ＋２，ｉ＋３］を読出して二項加算を行ない、クロックサイクルｋ＋４において、その演算結果ｃ［ｉ＋２，ｉ＋３］を左のメモリブロックに転送して格納する（ストアする）。このクロックサイクルｋ＋４にいて、右側メモリブロックにおいて次のデータビットｂ［ｉ＋４，ｉ＋５］を読出してＸレジスタ６７に転送する。
【０１２３】
この図１３に示す演算シーケンスの場合、左側メモリブロックに対してデータの書込の
行なう場合、右側のメモリブロックに対して、データの読出を行なう操作が行なわれる。この場合、ローカル制御回路においては、これらのメモリブロックに対し、センスアンプおよびライトドライバを個々に制御する回路が必要となり、回路構成が複雑化し、また回路のレイアウト面積が増大する可能性がある。
【０１２４】
そこで、クロックサイクルｋ＋１およびｋ＋２において行われるデータの読出および書込を、１つのクロックサイクルＫとして実行する。これにより、左側メモリブロックおよび右側メモリブロックにおいて同じタイミングでデータの読出を行なうことができる。同様に、クロックサイクルｋ＋３およびｋ＋４を１つのクロックサイクルＫ＋１として書込および読出を行なう。
【０１２５】
この読出および書込を１クロックサイクルで行なうためには、図１２に示すように、いわゆるリードモディファイライトを行ない、同じワード線アドレスに対して演算データの読出および演算後のデータの書込を実行する。
【０１２６】
図１４は、ロード／ストア命令を用いてリードモディファイライトを行なう際の動作タイミングを示す信号波形図である。クロック信号ＣＬＫＡにより、ビット演算ユニットＰＥの動作サイクルが規定され、クロック信号ＣＬＫＳにより、メモリブロックの動作サイクルが規定される。
【０１２７】
図１４に示すように、メモリクロック信号ＣＬＫＳの立上がりに従って、ワード線ＷＬが選択状態へ駆動され、ビット線対ＢＬＰ上にメモリセルデータが読出される。次いで、クロック信号ＣＬＫＳの立下がりに同期してセンスアンプ活性化信号ＳＡＥを活性化し、ビット線対ＢＬＰ（センスノード）の電位を差動増幅する。このセンス動作により、ビット演算ユニットへのデータの読出が完了する。読出完了後、一旦、ワード線ＷＬを非選択状態へ駆動する。
【０１２８】
なお、図１４においては、ビット線対ＢＬＰの電位がセンス時にフルスイングしている。これは、センスアンプが、交差型センスアンプであり、ビット線電位を差動増幅してラッチするためである。センスアンプが、電荷閉込め方式のセンスアンプであり、センス時には、センスノードとビット線とが分離される場合には、ビット線の電位は、メモリセルからの読出電位に応じた電位レベルとなる。センスアンプの構成に応じてビット線の電位変化波形は異なるものの、ここでは、ビット線のセンス動作を強調するために、センス時にビット線電位がフルスイングするように示す。
【０１２９】
クロック信号ＣＬＫＳが、クロック信号ＣＬＫＡの立下がりに同期して、立上がると、再びワード線ＷＬを選択状態へ駆動し、ビット線対ＢＬＰに再びメモリセルデータを読出す。次いで、クロック信号ＣＬＫＳの立上がりに同期してライトドライバイネーブル信号ＷＥを活性化し、ビット線対ＢＬＰに、ライトドライバを介してビット演算ユニットの演算結果データを転送し、演算結果データの書込を実行する。
【０１３０】
書込が完了すると、ワード線ＷＬを非選択状態へ駆動することにより、リードモディファイライト動作が完了する。
【０１３１】
したがって、ロード／ストア命令のみを利用する場合には、ビット演算ユニットに対するクロック信号ＣＬＫＡの１サイクル期間内に、メモリクロック信号ＣＬＫＳは２回トグルさせる。これにより、ロード／ストア命令のみを用いて、擬似的にリードモディファイライトを実現することができる。
【０１３２】
しかしながら、この場合、メモリブロックの動作周波数が、ビット演算ユニットの動作周波数の２倍の周波数であり、消費電力が高くなる。また、メモリブロックの動作サイクルにより、ビット演算ユニットのサイクル長さが律速され、高速動作ができなくなる可能性がある。
【０１３３】
一方の演算データをＸレジスタに格納して、演算を次のサイクルで実行するのは以下の理由による。両側のメモリブロックから並行してデータを読出し、Ｘレジスタをバイパスして演算回路で演算を実行する。この場合、演算回路に到達するデータの確定タイミングが、データ間のスキューにより遅くなり、演算結果データが確定するのが遅くなる。一方の演算データをＸレジスタに格納すると、次のサイクルにおいては、一方の演算データは確定状態にある。演算データのスキューは、現演算サイクルで読出される他方の演算データのクロック信号に対するスキューのみであり、演算データの確定タイミングのバラツキを小さくすることができ、応じて、演算結果データの確定タイミングも早くなり、演算サイクルを短くすることができる。従って、演算時には、Ｘレジスタは、バイパスすることなく利用して、演算を実行する。
【０１３４】
そこで、このリードモディファイライトを高速かつ低消費電力で実現するために、新たに、ロード／ストア命令に加えて、リードモディファイライト命令を準備する。
【０１３５】
図１５は、リードモディファイライト命令実行時の動作を示す信号波形図である。図１５に示すように、演算用のクロック信号ＣＬＫＡとアクセス用のメモリクロック信号ＣＬＫＳは、同じ周波数で同相で変化する。したがって、リードモディファイライト動作時においても、ビット演算ユニットの１クロックサイクル期間と、メモリブロックの１クロックサイクル期間は同じサイクル期間である。
【０１３６】
メモリクロック信号ＣＬＫＳの立上がりに従って、ワード線ＷＬを選択状態へ駆動する。これにより、ビット線対ＢＬＰのビット線ＢＬおよび／ＢＬにメモリセルデータに応じた電位差が生じる。次いで、クロック信号ＣＬＫＳと非同期で、センスアンプ活性化信号ＳＡＥを活性化し、ビット線対ＢＬＰ上に読出されたメモリセルデータの読出（検知、増幅、転送）を行なう。
【０１３７】
次いで、このワード線ＷＬを選択状態に維持した状態で、ライトドライバイネーブル信号ＷＥを活性化し、ビット線対ＢＬＰ上に、ビット演算ユニットからのデータを転送して書込む。この書込完了後、ワード線ＷＬを非選択状態へ駆動する。このセンスアンプ活性化信号ＳＡＥおよびライトドライバ活性化信号ＷＥは、ともに、クロック信号ＣＬＫＳと非同期で活性／非活性化させる。これにより、メモリクロック信号ＣＬＫＳの１つのサイクル内において、ワード線ＷＬを選択状態に維持した状態で、読出動作（センスアンプの活性化）および書込動作（ライトドライバの活性化）を順次行なうことができる。
【０１３８】
このセンスアンプ活性化信号ＳＡＥの活性化に続いて、ライトドライバイネーブル信号ＷＥが活性化される。このライトドライバイネーブル信号ＷＥは図１５において破線で示すように、センスアンプ活性化信号ＳＡＥの非活性化に応答して活性状態とされてもよい。このタイミング関係は、センスアンプの回路構成に応じて適宜定められる。
【０１３９】
ライトドライバによるデータの書込完了後、ワード線を非選択状態に駆動する。ワード線の非選択状態への駆動タイミングは、通常のロードまたはストア命令実行時のワード線非選択タイミングと同様のタイミングに定められれば良い。
【０１４０】
この図１５に示す動作波形図の場合、メモリブロックの動作周波数を、ビット演算ユニットのクロック信号ＣＬＫＡと同じ周波数に設定することができ、メモリブロックの高速動作が容易となる（メモリブロックおよびビット演算ユニットの動作速度を同じとすることができる）。
【０１４１】
また、クロック信号ＣＬＫＡの１サイクル内においてワード線ＷＬが１回活性化および非活性化されるだけであり、図１４に示す構成に比べ、ワード線の選択回数およびビット線のプリチャージ回数を半減することができ、消費電力を低減することができる。
【０１４２】
図１６は、右側のメモリブロックに対してリードモディファイライトを行なう場合の経路を、センスアンプ／ライトドライバ回路ＳＷの構成とともに具体的に示す図である。
【０１４３】
右側のメモリブロックにおいて、ワード線ＷＬとビット線ＢＬ、／ＢＬの交差部に対応してメモリセルＭＣが配置される。このメモリセルＭＣは、ＳＲＡＭセルであり、６個のトランジスタ（Ｔ）で構成されるフルＣＭＯＳ構成を有する。
【０１４４】
図１６において、センスアンプ／ライトドライバ回路ＳＷは、プリチャージ指示信号ＺＰＲＣの活性化時、ビット線ＢＬおよび／ＢＬを電源電圧レベルにプリチャージするビット線プリチャージ／イコライズ回路ＥＱと、センスアンプ活性化信号ＳＡＥの活性化時、センスノードＳＮａおよびＳＮｂ上の信号電位を差動的に増幅しかつラッチする交差結合型センスアンプ回路ＳＡＫと、センスアンプ活性化信号ＳＡＥの活性化時、センスノードＳＮａおよびＳＮｂとビット線ＢＬおよび／ＢＬとを分離する電荷閉込ゲートＣＦＧと、センスノードＳＮａおよびＳＮｂ上の信号をラッチして、ビット演算ユニットＰＥへ転送するＮＡＮＤ型フリップフロップＦＦと、書込指示信号ＷＥＮとビット演算ユニットＰＥからの書込マスク指示信号ＷＭＱとに従って、ビット演算ユニットＰＥからの演算結果データを、ビット線ＢＬおよび／ＢＬへ書込むライトドライブ回路ＷＤＫを含む。
【０１４５】
ビット線プリチャージ／イコライズ回路ＥＱは、ＰチャネルＭＯＳトランジスタ（絶縁ゲート型電界効果トランジスタ）で構成され、プリチャージ指示信号ＺＰＲＣがＬレベルの活性状態のときに、これらのＭＯＳトランジスタが導通し、ビット線ＢＬおよび／ＢＬを電源電位にプリチャージしかつイコライズする。
【０１４６】
センスアンプ回路ＳＡＫは、交差結合されるＰチャネルＭＯＳトランジスタおよび交差結合されるＮチャネルＭＯＳトランジスタを含み、活性化時、高電位のセンスノードの電位を電源電圧レベルに、定電圧レベルのセンスノードを接地電圧レベルに駆動しかつラッチする。ＮＡＮＤ型フリップフロップＦＦにより、センスアンプ回路ＳＡＫにより検知増幅されたデータをビット演算ユニットＰＥに対して一方方向に転送する。
【０１４７】
ライトドライブ回路ＷＤＫは、ビット演算ユニットＰＥからの書込マスク信号ＷＭＱと書込イネーブル信号ＷＥとを受けるＡＮＤゲートＡＧと、ＡＮＤゲートＡＧの出力信号を反転するインバータＩＶ０と、ビット演算ユニットＰＥからの出力を受けるバッファ回路ＢＵＦと、ビット演算ユニットＰＥからの演算結果データを受けるインバータＩＶ１と、ＡＮＤゲートＡＧおよびインバータＩＶ０の出力信号に従って選択的に導通し、バッファ回路ＢＵＦおよびインバータＩＶ１の出力信号をそれぞれビット線ＢＬおよび／ＢＬへ転送するトランスミッションゲートＴＧ０およびＴＧ１を含む。
【０１４８】
ビット演算ユニットＰＥは、選択信号ＳＥＬに従って、フリップフロップＦＦの出力信号を、Ｘレジスタ６５および演算回路６７の入力の一方に転送するマルチプレクサ（ＭＵＸ；セレクタ）７０と、書込マスク設定指示信号ＭＳＫＭに従ってＸレジスタ６５および演算回路６７からのデータそれぞれを取込みラッチするＶレジスタ８０およびＮレジスタ８１を含む。
【０１４９】
通常の演算処理において、Ｎレジスタ８１には、定数などの数値データが格納される。レジスタ８０および８１の格納データがともに“１”（Ｈレベル）に設定されたときに、ＡＮＤゲートＡＧ（ライトドライブ回路ＷＤＫ内）がバッファ回路として動作する。それ以外、書込マスク指示信号ＷＭＱがＬレベルのときには、ライトドライブ回路ＷＤＫは非活性状態（出力ハイインピーダンス状態）に設定され、ビット演算ユニットＰＥからのデータのメモリブロックへの書込は禁止される。
【０１５０】
リードモディファイライト時においては、Ｘレジスタ６５に、図示しないメモリブロック（左側メモリブロック）からのデータビットが与えられ、右側のメモリブロックからのデータは、マルチプレクサ（ＭＵＸ）７０によりＸレジスタをバイパスして演算回路６７に転送される。
【０１５１】
リードモディファイライトモードは、たとえば、読出を指示するリードイネーブル信号および書込を指示するライトイネーブル信号をともに活性状態に設定することにより、指定される。
【０１５２】
スタンバイ状態において、プリチャージ指示信号ＺＰＲＣはＬレベルであり、ビット線プリチャージ／イコライズ回路ＥＱが活性化され、そのＰチャネルＭＯＳトランジスタにより、ビット線ＢＬおよび／ＢＬが、電源電圧レベルにプリチャージされかつイコライズされる。この状態において、センスアンプ活性化信号ＳＡＥは非活性状態にあり、センスアンプ回路ＳＡＫは非活性状態であり、また、電荷閉込ゲートＣＦＧは導通状態にあり、センスノードＳＮａおよびＳＮｂは、ビット線ＢＬおよび／ＢＬに結合される。フリップフロップＦＦは、その両入力がともに電源電圧レベルであり、前の状態を維持する。
【０１５３】
リードモディファイライトサイクルが始まると、まず、ビット線プリチャージ指示信号ＺＰＲＣがＨレベルに立上がり、ビット線プリチャージ／イコライズ回路ＥＱが非活性化され、ビット線ＢＬおよび／ＢＬが電源電圧レベルでフローティング状態となる。次いで、ワード線ＷＬが選択状態へ駆動され、メモリセルＭＣの記憶データがビット線ＢＬおよび／ＢＬに読出される（ビット線ＢＬおよび／ＢＬ間に電位差が生じる）。このビット線ＢＬおよび／ＢＬの電位差は、センスノードＳＮａおよびＳＮｂに伝達される。このセンスノードＳＮａおよびＳＮｂの電位差が十分に拡大されるタイミングで、センスアンプ活性化信号ＳＡＥが活性化される。応じて、電荷閉込ゲートＣＦＧが非導通状態となり、センスノードＳＮａおよびＳＮｂは、ビット線ＢＬおよび／ＢＬと分離される。センスアンプ回路ＳＡｋが、このセンスノードＳＮａおよびＳＮｂの電位差を差動増幅しかつラッチする。センスノードＳＮａおよびＳＮｂの電位が、読出されたデータに応じて電源電圧および接地電位レベルに設定されると、フリップフロップＦＦの出力信号も対応した状態となる。
【０１５４】
フリップフロップＦＦの出力信号が、マルチプレクサ７０を介して演算回路６７へ与えられ、演算回路６７において演算処理が実行される。次いで、ワード線ＷＬを選択状態に維持した状態で、ライトドライバイネーブル信号ＷＥＮが活性化される。書込マスク指示信号ＷＭＱがＨレベルの場合には、ＡＮＤゲートＡＧの出力信号が、応じて、Ｈレベルとなり、トランスミッションゲートＴＧ０およびＴＧ１が導通する。バッファ回路ＢＵＦおよびインバータＩＶ１からの相補データが、これらのトランスミッションゲートＴＧ０およびＴＧ１を介してビット線ＢＬおよび／ＢＬ上に伝達され、選択状態のワード線ＷＬに接続されるメモリセルＭＣへデータが書込まれる。これにより、リードモディファイライトが完了する。このリードモディファイライト動作完了後、ワード線ＷＬが非選択状態へ駆動され、センスアンプ活性化信号ＳＡＥが非活性化され、次いでビット線プリチャージ指示信号ＺＰＲＣがＬレベルへ駆動される。
【０１５５】
データの読出が行なわれる左側メモリブロックにおいては、データの書込が行なわれず、ライトドライバイネーブル信号ＷＥＮが非活性状態に維持される。データの読出が、センスアンプ活性化信号ＳＡＥの活性化に応じて右側のメモリブロックと同様に行なわれる。この左側のメモリブロックにおけるワード線ＷＬの非活性状態への駆動タイミングとしては、左側および右側のメモリブロックにおいて同じであってもよく、また、センスアンプ活性化信号ＳＡＥの非活性化に従ってワード線ＷＬが非選択状態へ駆動されてもよい。
【０１５６】
図１７は、ローカル制御回路ＬＫｉの構成の一例を概略的に示す図である。図１７において、ローカル制御回路ＬＫｉは、装置外部からの動作モード指示ＲＥ♯およびＷＥ♯をクロック信号ＣＬＫＳ（またはＣＬＫＡ）に従ってデコードし、指定された動作モードを示す内部動作モード指示信号ＲＭＷ、ＲＥおよびＷＥを生成するコマンドデコーダ１００と、コマンドデコーダ１００からの内部動作モード指示信号と書込対象メモリブロック特定信号ＷＴＭとに従って対応のメモリブロックに対するワード線活性化信号ＷＬＥＲおよびＷＬＥＬを生成するメインタイミング信号発生回路１０２とを含む。
【０１５７】
コマンドデコーダ１００からの内部動作モード指示信号ＲＭＷは、リードモディファイライトモードを指定する信号であり、内部動作モード指定信号ＲＥは、データの読出を行なう動作モードを示し、内部動作モード指示信号ＷＥは、データの書込を行なう書込モードを示す信号である。
【０１５８】
メインタイミング信号発生回路１０２は、リードモディファイライトモード指示信号ＲＭＷ、読出モード指示信号ＲＥまたは書込モード指示信号ＷＥの活性化時、ワード線活性化信号ＷＬＥＲおよびＷＬＥＬを所定期間活性状態に駆動する。これらのワード線活性化信号ＷＬＥＲおよびＷＬＥＬは、隣接メモリブロックの行デコーダへそれぞれ与えられる。隣接メモリブロックの行デコーダにおいては、ローカル制御回路における図示しないアドレスポインタレジスタからのアドレスポインタに従って行選択を行なう。１つのメモリブロックは異なるバンクにより共有されており、行デコーダは、その両側のローカル制御回路からのワード線活性化信号に従って行選択（ワード線選択）を行っても良く、また、一方のローカル制御回路からのワード線活性化信号に従って行選択動作が制御されても良い（この場合、１つのメモリマットにおいて全バンクが並列に動作する）。
【０１５９】
また、データ書込モード指示信号ＷＥが活性化され、書込対象メモリブロック特定信号ＷＴＭが活性化され、１つのメモリブロックに対するデータ書込のみが行なわれる動作が指定されたときには、ＳＲＡＭ周辺回路に含まれる行デコーダは、書込対象メモリブロックに対してのみ行選択を行なうように構成されてもよい。
【０１６０】
ローカル制御回路ＬＫｉは、さらに、ワード線活性化信号ＷＬＥＬおよびＷＬＥＲの活性化に従ってビット線プリチャージ指示信号ＺＰＲＣＬおよびＺＰＲＣＲをそれぞれ非活性状態へ駆動するプリチャージ活性化回路１０４ｌおよび１０４ｒと、読出モード指示信号ＲＥの活性化時、ワード線活性化信号ＷＬＥＬおよびＷＬＥＲの活性化に従って所定のタイミングでセンスアンプ活性化信号ＳＡＥＬおよびＳＡＥＲを活性化するセンスアンプ活性化回路１０６ｌおよび１０６ｒを含む。
【０１６１】
参照符号の末尾の符号ｒ、ｌ、Ｒ、Ｌは、右側および左側のメモリブロックに対する回路および信号を示す。
【０１６２】
読出モード指示信号ＲＥおよび書込モード指示信号ＷＥは、また、リードモディファイライトモード指示信号ＲＭＷの活性化時活性化される。
【０１６３】
ローカル制御回路ＬＫｉは、さらに、リードモディファイライトモード指示信号ＲＭＷに従って、ワード線活性化信号ＷＬＥＬとセンスアンプ活性化信号ＳＡＥＬの一方を選択するセレクタ１０８ｌと、リードモディファイライトモード指示信号ＲＭＷに従ってワード線活性化信号ＷＬＥＲおよびセンスアンプ活性化信号ＳＡＥＲの一方を選択するセレクタ１０８ｒと、セレクタ１０８ｌの出力信号と書込モード指示信号ＷＥと書込対象メモリブロック特定信号ＷＴＭとに従ってライトドライバ活性化信号ＷＥＮＬを活性化するライトドライバ活性化回路１１０ｌと、セレクタ１０８ｒの出力信号と書込モード指示信号ＷＥと書込対象メモリブロック特定データＷＴＭとに従ってライトドライバ活性化信号ＷＥＮＲを活性化するライトドライバ活性化回路１１０ｒを含む。
【０１６４】
セレクタ１０８ｒは、リードモディファイライトモード指示信号ＲＭＷの活性化時、センスアンプ活性化回路１０６ｌからのセンスアンプ活性化信号ＳＡＥＬを選択し、それ以外、ワード線活性化信号ＷＬＥＬを選択する。セレクタ１０８ｒは、リードモディファイライトモード指示信号ＲＭＷの活性化時センスアンプ活性化信号ＳＡＥＲを選択し、それ以外、ワード線活性化信号ＷＬＥＲを選択する。
【０１６５】
センスアンプ活性化回路１０６ｒおよび１０６ｌは、各々、通常のデータ読出モード時には、クロック信号の立下りに同期してセンスアンプ活性化信号ＳＡＥＲおよびＳＡＥＬを活性化し、リードモディファイ動作時には、ワード線活性化信号ＷＬＥＲおよびＷＬＥＬの活性化に従ってセンスアンプ活性化信号ＳＡＥＲおよびＳＡＥＬを活性化するように構成されても良い。また、これに代えて、センスアンプ活性化回路１０６ｒおよび１０６ｌは、通常のデータ読出モード時（ロード命令実行時）およびリードモディファイ動作時において同じタイミングでセンスアンプ活性化信号を活性化しても良い。
【０１６６】
ライトドライバ活性化回路１１０ｌおよび１１０ｒについては、リードモディファイライトモード時書込モード指示信号ＷＥが活性化されるため、書込対象メモリブロックに対するライトドライバ活性化回路が活性化され、ライトドライバ活性化信号ＷＥＮＬまたはＷＥＮＲが活性化される。
【０１６７】
なお、ライトドライバ活性化回路１０８ｒおよび１０８ｌにおいても、通常のデータ書込モード時（ストア命令実行時）には、クロック信号の立下りに同期してライトドライバ活性化信号ＷＥＮＲおよびＷＥＮＬを活性化するように構成されても良い。
【０１６８】
上述の構成においては、リードモディファイライトモード時には、ライトドライバ活性化回路１１０ｌまたは１１０ｒは、センスアンプ活性化信号ＳＡＥＬまたはＳＡＥＲの活性化に従って所定時間経過後にライトドライバイネーブル信号ＷＥＮＬまたはＷＥＮＲを活性化し、クロック信号と非同期でデータの読出および書込をリードモディファイ動作時実行する。これにより、メモリクロック信号ＣＬＫＳの１クロックサイクル内において、データの読出および書込を実行することができる（ただし、リードモディファイライトモードであり、同じアドレスに対してデータの読出および書込が実行される）。
【０１６９】
なお、図１７に示すローカル制御回路ＬＫｉの構成において、センスアンプ活性化回路１０６ｌ，１０６ｒおよびライトドライバ活性化回路１１０ｌ，１１０ｒは、このリードモディファイライトモード指示信号ＲＭＷの非活性化時、読出モード指示信号ＲＥおよび書込モード指示信号ＷＥとメモリクロック信号ＣＬＫＳとに従ってクロック信号ＣＬＫＳに同期して、これらのセンスアンプ活性化信号ＳＡＥＬ，ＳＡＥＲまたは書込ライトドライバイネーブル信号ＷＥＮＬ，ＷＥＮＲを活性化するように構成する場合、以下のように構成が用いられる。すなわち、センスアンプ活性化回路１０６ｒおよび１０６ｌにおいては、リードモディファイライト指示信号ＲＭＷの活性／非活性に従って、クロック信号ＣＬＫＳおよびワード線イネーブル信号ＷＬＥＬおよびＷＬＥＲを選択し、セレクタ１０８ｒおよび１０８ｌが、リードモディファイライト指示信号ＲＭＷに従ってセンスアンプ活性化信号ＳＡＥＲおよびＳＡＥＬとクロック信号ＣＬＫＳのいずれかを選択する。
【０１７０】
図１８は、このリードモディファイライト時の、書込時のメモリブロックの動作状態を模式的に示す図である。図１８において、メモリブロックＭＢ♯ａ−ＭＢ♯ｃの間に、演算処理ユニットＰ♯ａおよびＰ♯ｂが設けられる。演算処理ユニットＰ♯ａおよびＰ♯ｂが、それぞれのバンクにおいて用いられ、一方、メモリブロックＭＢ♯ａ−ＭＢ♯ｃは、各々２つのバンクにより共有される。
【０１７１】
したがって、演算処理ユニットＰ♯ａにおいては、リードモディファイライトを行なう場合、その書込対象メモリブロックは、メモリブロックＭＢ♯ｂと設定された場合、このメモリブロックＭＢ♯ｂは、演算処理ユニットＰ♯ｂに対する書込対象メモリブロックとしても用いられる。メモリブロックＭＢ♯ａは、演算処理ユニットＰ♯ａに対するデータ読出メモリブロックとして用いられ、メモリブロックＭＢ♯ｃは、演算処理ユニットＰ♯ｂに対してデータを読出す読出メモリブロックとして用いられる。
【０１７２】
したがって、演算処理ユニットＰ♯ａおびＰ♯ｂにおいて、書込対象メモリブロックは、一方の演算処理ユニットにおいては、上側（右側）のメモリブロック、他方の演算処理ユニットにおいては下側（左側）のメモリブロックとなり、書込対象のメモリブロックの位置関係が、順次交換される。単に、書込対象メモリブロック特定信号ＷＴＭに従って決定される書込対象メモリブロックの位置を、各演算処理ユニットまたはローカル制御回路ごとに順次切換えるようにその論理を構成する（書込対象メモリブロック特定信号を反転する）ことにより容易に実現される。
【０１７３】
以上のように、この発明の実施の形態２に従えば、メモリクロック信号と非同期でデータの読出および書込を行なうように構成してリードモディファイライトを実現している。これにより、ワード線を立上げた状態で、データの読出および書込を行なうことが可能となり、ワード線選択回数を低減することができ、ワード線選択およびビット線プリチャージによる消費電流を低減することができる。また、演算用のクロック信号を同じ動作周波数でリードモディファイライトを実現することができ、メモリブロックの動作周波数を高くすることができる。
【０１７４】
また、リードモディファイライトにおいては、単にビット演算ユニット毎のレジスタを利用しているだけであり、リードモディファイライトを実現するための余分の回路要素は不要であり、面積増大は抑制することができる。また、メモリブロックにおける動作周波数を半減することができ、高速動作化のための回路定数を低減することができ、トランジスタサイズを低減でき、周辺回路（ＳＲＡＭ周辺回路およびローカル制御回路）の面積を低減することができる。
【０１７５】
なお、実施の形態１および２を組合わせて用いることにより、これらの実施の形態１および２の効果を奏する低消費電力で高速で動作する小占有面積の並列演算処理装置を実現することができる。
【０１７６】
また、演算処理ユニットにおいて、ＳＲＡＭアレイの各列が１エントリを構成し、各エントリに対応して演算器が設けられ、各演算器が対応のエントリの１ビットデータを逐次処理する構成が用いられても良い。
【産業上の利用可能性】
【０１７７】
この発明は、メモリセルアレイと演算処理ユニットとが同一半導体チップ上に集積化されるＳＩＭＤ型演算装置に対して適用することができる。特に、大量のデータを処理する並列演算処理装置に適用することにより、高速かつ低消費電力で大量のデータを処理することのできる演算処理装置を実現することができる。
【図面の簡単な説明】
【０１７８】
【図１】この発明に従う並列演算処理装置の概念的構成を概略的に示す図である。
【図２】図１に示す主演算回路の内部構成を概略的に示す図である。
【図３】図１に示す並列演算処理装置の基本演算ブロックの内部配置の概念的構成を示す図である。
【図４】この発明の実施の形態１に従う並列演算処理装置の全体のレイアウトを概略的に示す図である。
【図５】図４に示す並列演算処理装置の機能的構成を示す図である。
【図６】図４に示すレイアウトのメモリブロックおよび演算処理ユニットの構成をより具体的に示す図である。
【図７】図６に示すメモリブロックと演算処理ユニットの内部構成を概略的に示す図である。
【図８】図６に示すビット演算ユニットの内部構成を概略的に示す図である。
【図９】図６に示すセンスアンプ／ライトドライバとグローバルデータバスとの接続の構成の一例を示す図である。
【図１０】図４に示すメモリマット両端のメモリブロックおよび関連の回路の構成を概略的に示す図である。
【図１１】図１０に示すビット演算ユニットとメモリブロックの構成を概略的に示す図である。
【図１２】この発明の実施の形態２に従うビット演算ユニットの構成の一例を概略的に示す図である。
【図１３】図１２に示すビット演算ユニットにおけるデータ演算のシーケンスの一例を示す図である。
【図１４】図１３に示すリードモディファイライト時の内部動作の信号波形の一例を示す図である。
【図１５】この発明の実施の形態２に従うリードモディファイライト時の動作を示す信号波形図である。
【図１６】この発明の実施の形態２におけるセンスアンプ／ライトドライバおよびビット演算ユニットの構成の具体例を示す図である。
【図１７】この発明の実施の形態２におけるローカル制御回路の構成を概略的に示す図である。
【図１８】この発明の実施の形態２における書込対象メモリブロックの配置を概略的に示す図である。
【符号の説明】
【０１７９】
５０  並列演算処理装置、５５Ａ，５５Ｂ  メモリマット、ＭＡ０−ＭＡｍ，ＭＢ０−ＭＢｍ  メモリブロック、ＴＸＡ０−ＴＸＡｋ−１，ＴＸＢ０−ＴＸＢｋ−１  センスアンプ／ライトドライバ、ＰＡ０−ＰＡｍ−１，ＰＢ０−ＰＢｍ−１  演算処理ユニット、ＳＨ０−ＳＨｍ  ＳＲＡＭ周辺回路、ＬＫ０−ＬＫｍ−１  ローカル制御回路、ＢＧＳ，ＢＧＳｂ，ＢＧＳａ  グローバルデータバス、ＰＥ  ビット演算ユニット、ＳＡ  センスアンプ、ＷＤ  ライトドライバ、ＳＷＥＤ０−ＳＷＥＤ３，ＳＷＮＨ０−ＳＷＮＨ１  センスアンプ／ライトドライバ、ＳＨ♯ＥＤ  周辺制御回路、ＬＫ♯ＥＤ  ローカル制御回路、Ｐ♯ＥＤ  演算処理ユニット、Ｍ♯ＥＤ，Ｍ♯ＮＨ  メモリブロック、ＴＸ♯ＥＤ，ＴＸ♯ＮＨ  センスアンプ／ライトドライバ回路、６５  Ｘレジスタ、６７  演算回路、７０，７２，７４  マルチプレクサ、ＳＷ  センスアンプ／ライトドライバ、ＥＱ  ビット線プリチャージ／イコライズ回路、ＳＡＫ  センスアンプ回路、ＣＦＧ  電荷閉込ゲート、ＦＦ  フリップフロップ、７０  マルチプレクサ、８０  Ｖレジスタ、８１  Ｎレジスタ、８２  ＡＮＤゲート、ＷＤＫ  書込ライトドライブ回路、１００  コマンドデコーダ、１０２  メインタイミング信号発生回路、１０４ｌ，１０４ｒ  プリチャージ活性化回路、１０６ｌ，１０６ｒ  センスアンプ活性化回路、１０８ｌ，１０８ｒ  セレクタ、１１０ｌ，１１０ｒ  ライトドライバ活性化回路、ＭＢ♯ａ−ＭＢ♯ｃ  メモリブロック、Ｐ♯ａ，Ｐ♯ｂ  演算処理ユニット。
【図１】
2007206849.tif 000003
【図２】
2007206849.tif 000004
【図３】
2007206849.tif 000005
【図４】
2007206849.tif 000006
【図５】
2007206849.tif 000007
【図６】
2007206849.tif 000008
【図７】
2007206849.tif 000009
【図８】
2007206849.tif 000010
【図９】
2007206849.tif 000011
【図１０】
2007206849.tif 000012
【図１１】
2007206849.tif 000013
【図１２】
2007206849.tif 000014
【図１３】
2007206849.tif 000015
【図１４】
2007206849.tif 000016
【図１５】
2007206849.tif 000017
【図１６】
2007206849.tif 000018
【図１７】
2007206849.tif 000019
【図１８】
2007206849.tif 000020