[実施の形態1]
図1は、この発明の実施の形態1に従う並列演算処理装置を利用する処理システムの構成を概略的に示す図である。図1において、処理システムは、並列演算を実行する並列演算処理装置を含む主演算処理ブロック1と、主演算処理ブロック1における処理の制御、システム全体の制御およびデータ処理を行なうホストCPU2と、このシステムの主記憶として利用されて必要な種種のデータを格納するメモリ3と、メモリ3に対し直接ホストCPU2を介することなくアクセスするDMA(ダイレクト・メモリ・アクセス)回路4とを含む。DMA回路4の制御により、メモリ3と主演算処理ブロック1との間でデータ転送を行なうことができ、また、主演算処理ブロック1に対し直接アクセスすることができる。
ホストCPU2、メモリ3、DMA回路4および主演算処理ブロック1は、システムバス5を介して相互接続される。主演算処理ブロック1は、複数の並列に設けられる基本演算ブロックFB1−FBnと、システムバス5とデータ/命令を転送する入出力回路(インタフェース回路)10と、この主演算処理ブロック1内部での動作処理を制御する集中制御ユニット15とを含む。
基本演算処理ブロックFB1−FBnは、その構成は、後に詳細に説明するが、各々、並列演算を実行することができ、以下、並列演算処理装置とも称す。
基本演算ブロックFB1−FBnおよび入出力回路10は、内部データバス12に並列に結合される。また、集中制御ユニット15、入出力回路10および基本演算ブロックFB1−FBnは、内部バス14に並列に結合される。基本演算ブロックFBi(i=1−n)の間には、ブロック間データバスが設けられる。図1においては、基本演算ブロックFB1およびFB2の間に配置される隣接ブロック間データバス16を代表的に示す。
基本演算ブロックFB1−FBnを並列に設け、主演算処理ブロック1内部で並列に同一または異なる演算処理を実行する。これらの基本演算ブロック(並列演算処理装置)FB1−FBnは、同一構成を有するため、図1においては、基本演算ブロックFB1の構成を代表的に示す。
基本演算ブロックFB1は、演算を実行する主演算回路20と、マイクロコード化された実行プログラムを格納するマイクロプログラム格納メモリ23と、基本演算ブロックFB1の内部動作を制御するコントローラ21と、アドレスポインタとして用いられるレジスタ群22とを含む。
主演算回路20においては、ダイナミック型メモリセル(DRAMセル)が行列状に配列される。所定数のDRAMセル列に対応して、演算器が配置され、対応のDRAMセル列と演算器との間でデータを転送して演算処理を実行する。データを記憶するメモリセルとしてDRAMセルを利用することにより、SRAMセルを利用する構成に比べてメモリセルアレイの占有面積を低減する。
コントローラ21は、ホストCPU2からシステムバス5および入出力回路10を介して与えられる制御命令により制御が手渡され、対応の基本演算ブロックFB1−FBnの動作を制御する。コントローラ21は、マイクロプログラム格納メモリ23に格納されるマイクロプログラムを実行し、また、メモリ23の格納動作を制御する。基本演算ブロックFB1−FBnそれぞれにマイクロプログラム格納メモリ23を設けることにより、基本演算ブロックFB1−FBnそれぞれにおいて演算実行される処理内容を各基本演算ブロックごとに変更することができる。また、このコントローラ21は、後に詳細に説明するようにリフレッシュ制御回路を含んでおり、DRAMセルが利用される場合においても、リフレッシュを実行することによりメモリセルデータの信頼性は確保することができる。
隣接ブロック間データバス16を介して基本演算ブロックFB1−FBnの間のデータ転送が可能である。この隣接ブロック間データバス16を用いることにより、内部データバス12を占有することなく基本演算ブロック間の高速データ転送が実現される。また、ある基本演算ブロックに内部データバス12を介してデータ転送が行なわれている間に、別の基本演算ブロックの間でデータ転送を行なうことができる。
集中制御ユニット15は、制御用CPU25と、この制御用CPU25が実行する命令を格納する命令メモリ26と、制御用CPU25のワーキングレジスタまたはポインタ格納用のレジスタを含むレジスタ群27と、マイクロプログラムのライブラリを格納するマイクロプログラムライブラリ格納メモリ28とを含む。
集中制御ユニット15は、内部バス14を介してホストCPU2から制御権が手渡され、内部バス14を介して基本演算ブロックFB1−FBnの処理動作を制御する。マイクロプログラムライブラリ格納メモリ23に、各種シーケンス処理がコード化されたマイクロプログラムをライブラリとして格納する。基本演算ブロックFB1−FBnのマイクロプログラム格納メモリ23に、このマイクロプログラムライブラリ格納メモリ28から必要なマイクロプログラムを選択して格納することにより、基本演算ブロックFB1−FBnの処理内容の変更を行なう。
図2は、図1に示す主演算回路20の構成を概略的に示す図である。図2において、主演算回路20は、DRAMセルアレイ30と、演算処理を行なう演算回路32と、DRAMセルアレイ30と演算回路32の間で双方向でデータを転送するIO分離型双方向転送回路34とを含む。DRAMセルアレイ30においては、DARMセルが行列状に配列される。演算回路32は、それぞれがDRAMセルアレイ30の所定数の列に対応して配置され、対応のDRAMセル列との間でデータ転送を行なう複数の演算エレメントPE1−PEmを含む。これらの演算エレメントPE1−PEmは、演算態様がコントローラ21により設定され、設定された演算処理を並行して実行する。
IO分離型双方向転送回路34は、その構成は後に詳細に説明するが、DRAMセルアレイ30から演算回路32へのデータ転送経路と演算回路32からDRAMセルアレイ34へのデータ転送経路とが別々に設けられる。IO分離型双方向転送回路34において別々に設けられるデータ転送経路を利用してデータ転送を行うことにより、DRAMセルアレイ30から演算回路32へのデータ転送と演算回路32からDRAMセルアレイ30へのデータ転送を並行して行なうことができ、処理サイクルを短縮することができる。
また、演算エレメントPE1−PEmに演算処理を並行して実行させることにより、SIMD方式に従って演算処理を行なうことができ、大量のデータを高速で処理することができる。
図3は、図2に示す主演算回路のより具体的な構成を示す図である。図3においては、演算エレメントPE1およびPEmに対するDRAMセルアレイ30およびIO分離型双方向転送回路34の構成を代表的に示す。
DRAMセルアレイ30は、演算エレメントPE1−PEm各々に対応して複数のビット線群に分割される。演算エレメントPE1に対してビット線対BLP11−BLP1kが設けられ、演算エレメントPEmに対応して、ビット線対BLPm1−BLPmkが設けられる。ビット線対BLP11−BLP1k、…BLPm1−BLPmkの各々は、相補ビット線(BLP,/BL)を含む。kは、1以上の整数である。
ビット線対BLP11−BLP1k、…、BLPm1−BLPmkに対し共通にワード線WLが交差するように設けられる。ビット線対BLP11−BLP1k、…BLPm1−BLPmkとワード線WLの交差部に対応してDRAMセルMCが配置される。このDRAMセルMCは、1トランジスタ/1キャパシタ型セルである。
ビット線対BLP11−BLK1k、…BLPm1−BLPmk各々に対応してセンスアンプ(SA)SA11−SA1k、…SAm1−SAmkが設けられる。これらのセンスアンプSA(SA11−SA1k、…SAm1−SAmk)は、各々対応のビット線対BLP(BLP11−BLP1k、…BLPm1−BLPmk)のビット線の電位を差動的に増幅する。
IO分離型双方向転送回路34においては、センスアンプSA11−SA1kそれぞれに対応してリード/ライトYゲートRWYG11−RWYG1kが設けられ、センスアンプSAm1−SAmkそれぞれに対応して、リード/ライトYゲートRWYGm1−RWYGmkが設けられる。これらのリード/ライトYゲートRWYG11−RWYG1k、…、RYGm1RYGmkは、各々、データ読出を行なうためのリードアンプ/Yゲートと、データ書込を行なうためのライトアンプYゲートとを含む。これらのリードアンプYゲートおよびライトアンプYゲートは、別々に設けられる。
リード/ライトYゲートRWYG11−RWYG1kに対して共通に、ローカル読出データ線LRDL1およびローカル書込データ線LWDL1が設けられ、リード/ライトYゲートRWYGm1−RWYGmkに対て共通に、ローカル読出データ線LRDLmおよびローカル書込データ線LWDLmが設けられる。
ローカル読出データ線LRDL1、…、LRDLmは、対応のリード/ライトYゲートRWYGに含まれるリードアンプYゲートに結合され、DRAMセルアレイ30から読出されたデータを転送する。ローカル書込データ線LWDL1、…、LWDLmは、対応のリード/ライトYゲートに含まれるライトアンプYゲートに結合され、対応の演算エレメントPE1、…、PEmからの処理結果データまたは入力(書込)データを転送する。
ローカル読出データ線LRDL1−LRDLm各々に対応してリードアンプラッチRAPL1−RAPLmが設けられ、ローカル書込データ線LWDL1−LWDLm各々に対応してライトドライバWDR1−WDRmが設けられる。リードアンプラッチRAPL1−RAPLmは、対応のローカル読出データ線LRDL1−LRDLm上のデータをさらに増幅してラッチし、対応の演算エレメントPE1−PEmに増幅後のデータを伝達する。ライトドライバWDR1−WDRmは、それぞれ、対応の演算エレメントPE1−PEmから転送されるデータに従って対応のローカル書込データ線LWDL1−LWDLmを駆動する。
図3に示すIO分離型双方向転送回路34において、リード/ライトYゲートRWYG(RWYG11−RWYG1k、…、RWYGm1−RWYGmk)に対して、それぞれ図示しないYゲート選択信号が与えられて、選択列に対して設けられたビット線対BLPと対応のリードアンプラッチRAPLおよび対応のライトドライバWDRの間でデータ転送が行なわれる。データのDRAMセルアレイ30と演算回路32の間のデータ転送経路をいわゆるIO分離構造として、メモリセルの読出データおよび書込データを別々の経路を介して転送することにより、読出データおよび書込データの転送をオーバラップして行うことができ、データ転送を高速化することができる。
並列演算処理装置においては、通常、前述の特許文献3に示すようにビットシリアルに演算処理が実行される。従って、この場合には、ローカル読出および書込データ線LRDLiおよびLWDLi(i=1からk)のビット幅は、1ビットである。しかしながら、演算エレメントPE1−PEmの演算データのビット幅に応じて、ローカル読出データ線LRDL1−LRDLmおよびローカル書込データ線LWDL1−LWDLmのビット幅が決定され、また、リードアンプラッチRAPLおよびライトドライバWDRのビット幅も設定されてもよい。例えば、演算データがkビット幅であり、対応のビット線対群に含まれるビット線対の数と同じ場合には、リード/ライトYゲートが、並行して導通して、対応のビット線対と演算エレメントの間でkビットデータが転送される。この場合、Yゲート選択信号は、単に列選択のタイミングを与えるだけである。
図4は、図3に示す構成の1つのビット線対BLPと1つの演算エレメントPEに関連する部分の構成をより具体的に示す図である。図4において、DRAMセルアレイ30において、ビット線対BLPは、ビット線BLおよび/BLを含み、ビット線対BLPと交差するようにワード線WLが配置される。ワード線WLとビット線対BLPの交差部に対応してメモリセルMCが配置される。図4において、メモリセルMCは、ワード線WLとビット線/BLとの交差部に対応して配置され、情報を電荷の形態で記憶するキャパシタCMと、ワード線WLの信号電位に従ってキャパシタCMをビット線/BLに結合するアクセストランジスタTMを含む。ビット線BLとワード線WLとの交差部には、メモリセルは配置されない。メモリセルのデータ読出時においては、ビット線/BLにメモリセルデータが読出され、ビット線BLは、メモリセルデータ読出時の参照電位を供給する参照線として用いられる。メモリセルMCが、ワード線WLとビット線BLおよび/BLとの交差部に対応して配置され、2つのメモリセルで1ビットのデータを記憶する2セル/1ビットの構成が利用されてもよい。
DRAMセル(ダイナミック型メモリセル)MCは、図4に示すように、1トランジスタ/1キャパシタ型セルであり、SRAMセルのように、6個のMOSトランジスタで構成されるセルに比べて、占有面積を低減でき、より高密度に、メモリセルMCを配置することができる。これにより、小占有面積で、大量のデータを、DRAMセルアレイ30において格納することができる。
ビット線BLおよび/BLに対応して、ビット線周辺回路として、ビット線イコライズ回路BEQおよびセンスアンプSAが設けられる。ビット線イコライズ回路BEQは、ビット線イコライズ指示信号BLEQに従ってビット線BLおよび/BLをビット線プリチャージ電圧Vblレベルにプリチャージしかつイコライズする。このビット線プリチャージ電圧Vblは、一例として、DRAMセルアレイに供給されるメモリ電源電圧(VDD)の1/2倍の電圧レベルである。
センスアンプSAは、センスアンプ活性化信号SAEの活性化に応答して活性化され、ビット線BLおよび/BLの電位を差動的に増幅しかつラッチする。このセンスアンプSAは、通常、交差結合されるMOSトランジスタで構成されるインバータラッチの構成を有する。
リード/ライトYゲートRWYGは、読出アンプゲート(リードアンプYゲート)RYGと書込ドライブゲート(ライトアンプYゲート)WYGとを含む。ビット線対に対応して、ローカル読出データ線LRDLは、エントリ読出データ線RDおよび/RDで構成され、ローカル書込データ線LWDLは、エントリ書込データ線WDおよび/WDで構成される。
読出アンプゲートRYGは、エントリ読出データ線/RDと接地ノードの間に直列に接続されるNチャネルMOSトランジスタTR2およびTR1と、エントリ読出データ線RDと接地ノードの間に直列に接続されるMOSトランジスタTR4およびTR3を含む。MOSトランジスタTR1およびTR3は、それぞれのゲートが、ビット線BLおよび/BLに結合される。MOSトランジスタTR2およびTR4は、読出列選択信号CSLRに従って選択的にオン状態となる。
センスアンプSAにより、ビット線BLおよび/BLが、電源電圧および接地電圧レベルに駆動されて維持されるため、読出アンプゲートRYGにおいては、MOSトランジスタTR1およびTR3の一方がオン状態、他方がオフ状態となる。したがって、読出列選択信号CSLRが選択状態となり、MOSトランジスタTR2およびTR4がオン状態となると、エントリ読出データ線RDおよび/RDの一方が接地電圧レベルに放電され、他方は、ビット線プリチャージ電圧レベルに維持される。たとえば、ビット線BLおよび/BLが、それぞれ、HレベルおよびLレベルのときには、MOSトランジスタTR1およびTR3が、それぞれ、オン状態およびオフ状態となる。したがって、読出列選択信号CSLRが選択状態となり、MOSトランジスタTR2およびTR4がオン状態となると、エントリ読出データ線/RDが接地電圧レベルへ放電され、その電圧レベルが低下する。
書込ドライブゲートWYGは、エントリ書込データ線WDおよび/WDとビット線BLおよび/BLの間にそれぞれ接続されるMOSトランジスタTR5およびTR6を含む。これらのMOSトランジスタTR5およびTR6のゲートへは、書込列選択信号CSLWが共通に与えられる。したがって、ビット線BLおよび/BLは、エントリ書込データ線WDおよび/WD上に伝達された相補データに従って、書込データに応じた電圧レベルに駆動される。
リードアンプラッチRAPLは、エントリ読出データ線RDおよび/RDを所定電圧レベルにプリチャージしかつイコライズするデータ線プリチャージ/イコライズ回路DEQと、エントリ読出データ線RDおよび/RDの電位を増幅しラッチする差動アンプラッチDAPと、エントリ読出データ線RDおよび/RD上の電位に従って転送データQを生成してラッチするフリップフロップFFLを含む。
データ線プリチャージ/イコライズ回路DEQは、データ線プリチャージ指示信号DPRに従ってエントリ読出データ線RDおよび/RDを電源電圧レベルにプリチャージしかつイコライズする。差動アンプラッチDAPは、交差結合されるPチャネルMOSトランジスタで構成され、エントリ読出データ線RDおよび/RDのうちの高電位のエントリ読出データ線の電位を電源電圧レベルに維持する。
フリップフロップFFLは、交差結合されるNANDゲートで構成され、差動アンプラッチDAPにより増幅されラッチされた電位に従って、そのラッチ状態が決定される。
ライトドライバWDRは、演算エレメントPEから生成されるデータDと書込マスク信号/WDMに従ってエントリ書込データ線WDを駆動するAND型ドライブ回路AG1と、演算エレメントPEからの書込データ/Dと書込マスク信号/WDMとに従ってエントリ書込データ線/WDを駆動するAND型ドライブ回路AG2とを含む。書込マスク信号/WDMは、活性化時、演算エレメントPEからの転送データDおよび/Dの転送をマスクし、対応のメモリセルへのデータの書込をマスクする。
演算エレメントPEは、リードアンプラッチRAPLからの転送データQを格納するレジスタ40と、レジスタ40の格納データとリードアンプラッチRAPLからの転送データQとに従って所定の演算処理を行なう演算器(ALU)42と、演算器42の出力データを格納して相補データDおよび/Dを生成するレジスタ44を含む。このレジスタ44は、書込データをクロック信号に同期して転送するために設けられており、特に設ける必要はなく、演算器(ALU)42の出力が直接ライトドライバに与えられる構成であっても良い(これは、以下の実施の形態についても同様である)。
演算器(ALU)42は、否定(NOT)演算、論理和(OR)演算、論理積(AND)演算、ブール加算(排他的論理和:EXOR)演算を、図1に示すコントローラ21からの演算命令に従って選択的に実行することができる。この演算器42は、図4においては、レジスタ40およびリードアンプラッチRAPLのデータに従って2項演算を行なうように示す。しかしながら、直値または即値を格納する定数レジスタが演算エレメントまたは演算回路内に設けられ、演算器42は、3項演算を行なうように構成されてもよい。また、この演算器(ALU)42は、プログラマブルロジックデバイスで構成され、その内部構造がコントローラ21からの命令/制御信号に従って設定されても良い。
図5は、図1から4に示す主演算回路の1つの単位演算ブロック(1演算エントリ)における演算操作のデータの流れの一例を示す図である。図5においては、演算は、ビットシリアルかつデータパラレルな態様で実行される。ビットシリアルは、データについてビット単位で演算が実行される態様を示す。データパラレルは、各演算エントリにおいてデータの演算が演算エレメントにおいて並行して実行される態様を示す。以下、図5を参照して、この発明の実施の形態1に従う並列演算処理装置の演算操作について簡単に説明する。
今、1演算エントリとして、1つの演算エレメントPEに対して4つのビット線対BLA−BLDが設けられる構成を一例として示す。このビット線対BLA−BLDはそれぞれ、Yゲート選択信号Y0−Y3により選択される(対応のリード/ライトYゲートが導通状態となる)。ビット線対BLAには、データビットan−a0が格納され、ビット線対BLBに、データビットbn−b0が格納される。これらのビット線対BLAおよびBLBのデータビットが、演算エレメントPEに転送される(ロードされる)。ビット線対BLCに、演算エレメントPEの演算結果が格納される(ストアされる)。
ビット線対BLA−BLDのワード線アドレスは、ワード線ポインタPn−P0により指定される。このワード線ポインタは、図1に示すレジスタ群22のポインタレジスタから生成される。同様に、Yゲート選択信号も、レジスタ群22に含まれるYアドレスポインタに基づいて生成される。
演算エレメントPEにおいて、レジスタ40は、クロック信号CLKがHレベルのときにスルー状態となり、クロック信号CLKがLレベルのときにラッチ状態となる。演算器(ALU)42は、このクロック信号CLKがLレベルのときに演算処理を行なってその演算結果を出力する。レジスタ44は、クロック信号CLKがLレベルのときにスルー状態となり、Hレベルとなるとラッチ状態となる。クロック信号CLKにより、演算処理サイクルが規定される。
図6は、図5に示す演算エレメントPEへの2項演算時の演算操作を示すタイミング図である。以下、図6を参照して、図4および図5に示す並列演算処理装置の動作について説明する。
サイクル♯kにおいて、クロック信号CLKがHレベルに立上がると、演算操作サイクルが開始される。このクロック信号CLKの立上がりに応答して、データ線プリチャージ指示信号DPRが非活性状態となり、また、ビット線イコライズ指示信号BLEQが非活性状態となる。これにより、図4に示すビット線BLおよび/BLのプリチャージ/イコライズが停止し、また、エントリ読出データ線RDおよび/RDのプリチャージ/イコライズが停止する。
次いで、ワード線WLが、ワード線ポインタに従って選択状態へ駆動され、ビット線対BLA−BLDにおいて対応のメモリセルの記憶データが読出される。
ワード線の選択後、所定のタイミングでセンスアンプ活性化信号SAEが活性化されると、図4に示すセンスアンプSAが活性化され、ビット線BLA−BLDの電位が差動的に増幅されてラッチされる。図6においては、ビット線対BLCのビット線BLおよび/BLの電位変化を代表的に示す。
このセンスアンプ活性化信号SAEによりセンスアンプSAが活性化され、増幅およびラッチ動作が完了すると、次いで、読出Yゲート選択信号RY0が選択状態へ駆動される。応じて、ビット線BLAのデータビットaiが読出アンプゲートRYG(図4参照)により読出され、エントリ読出データ線RDおよび/RDに伝達される。この読出データビットaiに従ってリードアンプラッチRAPLの出力データビットQが、データビットaiに応じた電圧レベルに変化する。
演算エレメントPEにおいて、クロック信号CLKがHレベルであり、レジスタ40はスルー状態にあり、その保持データビットが、ビットaiに変化する。
クロック信号CLKがLレベルに立下がると、演算エレメントPEのレジスタ40がラッチ状態となる。このクロック信号CLKの立下がりに従って、また、読出Yゲート選択信号RY1が選択状態へ駆動される。これにより、ビット線対BLB上のデータが読出アンプゲートRYGを介して読出されてリードアンプラッチRAPLに伝達される。リードアンプラッチRAPLにおいては、内部の差動アンプDAPおよびフリップフロップFFLにより、その保持データがデータビットbiに応じて変化する。このリードアンプラッチPLの出力データビットQが、データビットbiに従って変化しても、このときにはクロック信号CLKはLレベルであり、レジスタ40はラッチ状態にあり、その保持データビットは変化しない。
一方、クロック信号CLKがLレベルに立下がると、演算器(ALU)42が演算操作を実行し、データビットaiおよびbiにより、指定された演算処理を行ない、結果ビットF(ai,bi)を生成する。レジスタ44は、この状態においてはスルー状態であり、その出力データビットDおよび/Dが演算結果ビットF(ai,bi)に従って変化する。このとき、またレジスタ44の出力データに従ってライトドライバWDRにより、エントリ書込データ線WDおよび/WD上の電圧が変化する。この状態において書込Yゲート選択信号WY2が選択状態へ駆動され、書込ドライブゲートWYGを介してビット線対BLC上のワード線ポインタが指定するワード線上のメモリセルに演算結果ビットF(ai,bi)が書込まれる(ストアされる)。
結果ビットF(ai,bi)の書込が完了すると、ワード線WLが非選択状態へ駆動され、また、データ線プリチャージ指示信号DPRおよびビット線イコライズ指示信号BLEQが活性状態となり、ビット線対BLA−BLDおよびエントリ読出データ線RDおよび/RDが、所定の電圧レベルにプリチャージされる。エントリ読出データ線RDおよび/RDは、電源電圧レベルのHレベルにプリチャージされるため、フリップフロップFFLのラッチ状態は変化しない。また、ビット線対BLA−BLDにおいては、それぞれビット線イコライズ回路BEQにより中間電圧レベルのプリチャージ電圧Vblレベルにプリチャージされる。
クロック信号CLKが再び立上がると、演算サイクル♯(k+1)が開始される。この演算サイクル♯(k+1)の開始に従って、データ線プリチャージ指示信号DPRおよびビット線イコライズ指示信号BLEQが再び非活性状態となる。リードアンプラッチRAPLにおいて、フリップフロップFFLのラッチ状態は変化せず、先のサイクルのデータビットbiを維持する。
一方、演算エレメントPEにおいてはレジスタ40がクロック信号CLKの立上がりに従ってスルー状態となり、保持データが、データビットbiに変化する。しかしながら、レジスタ44は、この間ラッチ状態にあり、レジスタ44の出力は、変化しない。この場合、たとえ演算器(ALU)42がスタティックに演算操作を行っても、レジスタ44がラッチ状態であれば、レジスタ44の出力ビットは変化しない。従って、演算器(ALU)42は、スタティックに動作を行うように構成されても良く、また、クロック信号CLKのHレベル期間は演算操作が停止されるように構成されても良い。
次いで、ワード線アドレスポインタに従って次のワード線が選択され、次いで、再びセンスアンプ活性化信号SAEが活性化される。この後、次のデータビットai+1およびbi+1が、それぞれ読出Yゲート選択信号RY0およびRY1に従って読出されて、それぞれレジスタ40およびフリップフロップFFLによりラッチされる。演算器(ALU)42が演算操作を実行し、演算結果ビットF(ai+1,bi+1)を生成する。クロック信号CLKがLレベルとなるとレジスタ44がスルー状態となり、演算結果ビットが格納されまたその出力も演算結果ビットF(ai+1,bi+1)に変化する。
この後、レジスタ44の出力ビットF(ai+1,bi+1)が、書込Yゲート選択信号WY2に従って再び、ビット線対BLCの対応のメモリセルに書込まれる。以下、データビットが、最上位ビットanおよびbnに到達するまで、この演算操作が繰返し実行される。
ビット線対BLA−BLDにおいて、ビット線対BLA−BLCを利用し、演算対象データおよび演算結果データを各ビット線対のメモリセルに格納する。従って、データのビット長が変化される場合においても、ワード線アドレスポインタP0−Pnの変化範囲を調整することにより対応することができる。この場合、1つの演算エレメントPEに対して4つのビット線対が配置される。1行に、たとえば1024列(ビット線対)が配置される場合、256個の処理演算エレメントPEにおいて並列に演算操作を実行することができる。
ワード線WLを選択状態に維持した状態で、いわゆる「ページモード」に従ってビット線対を順次選択することにより、各データビット毎にワード線およびビット線を順次選択する構成に比べて、ワード線選択の時間を削減することができ、高速な演算処理を実行することができる。たとえば64ビットデータが演算処理される場合においても、64サイクルが必要とされるだけである。したがって、たとえば前述のように256個の演算エレメントPEが並列に動作する場合、1つのデータについての演算操作に要する時間は、64/256サイクルとなり、データを逐次演算処理する場合に比べて、大幅に演算処理に要する時間を短縮することができる。
図7は、この発明の実施の形態1に従う並列演算処理装置(基本演算ブロック)の制御部の構成を概略的に示す図である。図7において、コントローラ21は、図1に示すマイクロプログラム格納メモリ23から読出された命令をデコードする命令デコーダ50と、この命令デコーダ50のデコード信号に従って各動作モードに応じた制御信号を生成するタイミングジェネレータ52とを含む。
タイミングジェネレータ52は、内部クロック信号CLKをタイミング基本信号として用いて、各種動作制御信号を生成する。図7においては、センスアンプ活性化信号SAE、データ線プリチャージ指示信号DPRおよびビット線イコライズ指示信号BLEQを、タイミングジェネレータ52が発生するタイミング制御信号の代表例として示す。
図1に示すレジスタ群22は、ワード線アドレスを指定するポインタPxを生成するXポインタレジスタ54と、列(Yゲート)の指定を行なうYアドレスポインタPiを格納するYポインタレジスタ56とを含む。これらのポインタレジスタ54および56のポインタは、タイミングジェネレータ52からの制御信号に従って各動作サイクルごとに更新される。
DRAMセルアレイ30に対しては、ワード線選択駆動回路60が設けられる。このワード線選択駆動回路60は、Xポインタレジスタ54からのポインタPxをデコードし、対応のワード線を選択状態へ駆動する。また、IO分離型双方向転送回路34に対しては、列デコード回路62が設けられる。この列デコード回路62は、Yポインタレジスタ56からのYアドレスポインタPiをデコードし、読出列選択線および書込列選択線上のY選択信号CSLRおよびCSLWを、順次選択状態へ駆動する。
演算回路32は、命令デコーダ50からの演算命令に従ってその演算内容が設定される。この演算回路32に対してまた、シフトレジスタ回路66が設けられる。このシフトレジスタ回路66は、メモリ入出力回路64との間でデータを転送する。メモリ入出力回路64は、図1に示す内部バス12を介して内部データIDQを転送する。シフトレジスタ回路66は、演算回路32の各演算エレメントに含まれるレジスタ(44)との間でデータを転送し、これにより、DRAMセルアレイ30とメモリ入出力回路64との間でのデータ転送を実現する。
図8は、図7に示すシフトレジスタ回路66の構成の一例を示す図である。図8においては、シフトレジスタ回路66のうちの1つの演算エレメントPEに対して設けられる構成を代表的に示す。シフトレジスタ回路66は、演算エレメントPEのレジスタ44に対応して設けられる2段のシフトレジスタ70および72を含む。これらのシフトレジスタ70および72は、Nビット幅を有し、図7に示すメモリ入出力回路64からのNビットデータA、Bを、転送クロック信号TXKに従って順次転送する。この転送クロック信号TXKは、データ転送動作時、クロック信号CLKに基づいて図7に示すタイミングジェネレータ52から生成される。
シフトレジスタ70および72に対して切換回路(SW)74が設けられる。切換回路74は、切換制御信号MXに従ってシフトレジスタ70および72の一方を選択し、1ビットずつレジスタ44に転送する。演算エレメントPEに含まれるレジスタ44から、1ビット単位で、データビットa0−anが順次転送される。
メモリ入出力回路64においてNビット幅のデータが順次転送され、転送クロック信号TXKに従ってシフトレジスタ回路66が、順次Nビットデータを転送する。ここで、N=n+1である。このシフトレジスタ回路66においてすべての演算データが格納された後、再び、1ビットずつ、演算エレメントPEのレジスタ44を介してDRAMセルアレイ30の各ビット線対のメモリセルにデータが転送される。
逆に、DRAMセルアレイ30において格納されたデータを、メモリ入出力回路64を介して転送する場合には、データビットの流れが逆となり、演算エレメントPEのレジスタ44から切換回路74を介してシフトレジスタ70および72へ、順次データが1ビット単位で転送される。すべての転送データがこのシフトレジスタ回路66のシフトレジスタ(70,72)に格納された後、再び、転送クロック信号TXKに従ってメモリ入出力回路64を介して順次Nビットデータが転送される。
なお、このシフトレジスタ回路66において1つの演算エレメントPEに対応して設けられるシフトレジスタの数は、特に2に限定されない。1つの演算エレメントにおいて演算対象データが格納されるビット線対の数に応じて、このシフトレジスタの数が適宜定められればよい。
このデータ転送を行なう転送クロック信号TXKおよび切換制御信号MXは、図7に示すコントローラ21により生成され、また転送動作も、コントローラ21のタイミングジェネレータ52により制御される。
[変更例]
図9は、この発明の実施の形態1の変更例の要部の構成を概略的に示す図である。図9に示す構成においては、演算エレメントPEにおいて、レジスタ42に代えて、2段のレジスタ42Aおよび42Bが設けられる。これらのレジスタ42Aおよび42Bの格納データが並列に演算器(ALU)42へ与えられる。また、これらのレジスタ42Aおよび42Bへは、DRAMセルアレイ30からの読出データが共通に与えられる。
DRAMセルアレイ30においては、先の図5に示す構成と同様、演算エレメントPEに対応して、ビット線対BLA−BLDが設けられ、ビット線対BLAおよびBLBに演算対象のデータa0−anおよびb0−bnが格納される。ビット線対BLCに演算結果データF(a、b)が格納される。
この図9に示す並列演算処理装置のDRAMセルアレイ30の構成およびDRAMセルアレイと演算エレメントPEの間のデータ転送を行う部分の構成は、図4に示す構成と同じである。ただし、レジスタ40Aは、クロック信号CLKがHレベルのときにスルー状態となり、クロック信号CLKがLレベルとなるとラッチ状態となる。レジスタ40Bは、このレジスタ40Aの出力データをクロック信号CLKの半サイクル遅延して転送する。
図10は、図9に示す並列演算処理装置の演算操作を示すタイミング図である。以下、図10を参照して、図9に示す並列演算処理装置の演算操作について説明する。この図9に示す演算装置においても、演算はビットシリアル態様で実行される。
サイクル♯kにおいて、クロック信号CLKの立ち上がりに同期して演算サイクルが開始される。データ線プリチャージ指示信号DPRおよびビット線イコライズ指示信号BLEQが非活性化され、次いで、ワード線アドレスポインタに従ってワード線WLが選択され、メモリセルの記憶データが対応のビット線対に読出される。次いで、センスアンプ活性化信号SAEが活性化され、各ビット線対のメモリセルデータが、対応のセンスアンプにより検知され、増幅されてラッチされる。
クロック信号CLKがHレベルの期間において読出Yゲート選択信号RY0が選択状態に駆動され、ビット線対BLAのデータビットaiが、演算エレメントPEのレジスタ40Aに転送される。レジスタ40Aは、クロック信号CLKがHレベルの時に、スルー状態となって、転送されたデータビットaiを取り込みかつ出力する。レジスタ40Bは半サイクルの遅延時間を有するため、このときには、レジスタ40Bの保持データは、先の演算サイクルにおいて転送されたデータである。
次いで、クロック信号CLKがLレベルとなると、ワード線WLを選択状態に維持した状態で、読出Yゲート選択信号RY1が、選択状態に駆動される。応じて、ビット線対BLBのデータビットbiが、演算エレメントPEに転送される。この状態においては、レジスタ40Aは、ラッチ状態にあり、先に取り込んだデータビットaiをラッチした状態にある。レジスタ40Bは、このレジスタ40Aの出力データビットを取り込んだ状態であるが、まだ、その取り込んだデータは出力しない。従って、このクロック信号CLKがLレベルの期間においては、レジスタ40Aおよび40Bの保持データは変化しない。データビットbiは、IO分離型双方向転送回路に含まれるフリップフロップ(FFL)によりラッチされる。
次のサイクル♯(k+1)において、クロック信号CLKがHレベルに立上がると、レジスタ40Aがスルー状態となり、双方向転送回路のリードアンプラッチのフリップフロップにラッチされたデータビットbiが、レジスタ40Aに取り込まれて出力される。レジスタ40Bは、このクロック信号CLKの立ち上がりに従って、先に取り込んだデータビットaiを出力する。演算器(ALU)が、クロック信号CLKの立ち上がりに従って動作し、これらのレジスタ40Aおよび40Bの出力データに従って、設定された演算を実行する。この演算器(ALU)42の演算結果ビットF(ai,bi)は、レジスタ44に取り込まれてクロック信号CLKの立下りに従って出力される。
このサイクル♯(k+1)のクロック信号CLKがLレベルの期間において、レジスタ44の出力データに従ってIO分離型双方向転送回路に含まれるライトドライバの出力データが安定化すると、書込Yゲート選択信号WY2が選択状態に駆動される。応じて、ビット線対BLCのワード線WLに接続されるメモリセルに演算結果データビットF(ai、bi)が格納される。
演算結果データビットの格納が完了すると、ワード線WLが非選択状態に駆動され、また、センスアンプ活性化信号SAEが非活性化され、またビット遷移コライズ指示信号BLEQおよびデータ線プリチャージ指示信号DPRが活性化され、DRAMセルアレイ30がプリチャージ状態に復帰する。以降、全データビットについての演算処理が完了するまで同様の演算処理が実行される。
この図9に示す構成においては、データビットについての演算に2クロックサイクルが必要である。しかしながら、ワード線WLがデータの読出および書込が行われる間選択状態に維持されており、各データビットの読出および選択に対してワード線の選択およびDRAMセルアレイのプリチャージを行う構成に比べて演算サイクル数を低減することができ、高速演算を実現することができる。
この変更例の並列演算処理装置の動作制御は、図7に示すコントローラ21により実行される。書込がデータ読出の次のサイクルに実行されるようにタイミングジェネレータ52が、制御信号の活性化タイミングを調整する(図5に示す構成に比べて、書込Yゲート選択信号の発生タイミングを1クロックサイクル遅延する)。
以上のように、この発明の実施の形態1に従えば、並列に設けられる演算エレメントに対するデータ記憶部としてDRAMセルで構成されるアレイを用いており、演算データ格納のためのメモリアレイの占有面積を低減することができる。
また、DRAMセルアレイからの読出データの転送には、ページモードを利用しており、高速でDRAMセルアレイから演算エレメントに対してデータを転送することができ、サイクル時間を短縮することができる。
[実施の形態2]
図11は、この発明の実施の形態2に従う並列演算処理装置の要部の構成を概略的に示す図である。図11において、DRAMセルアレイ30においては、演算エレメントPEに対し複数のビット線対BLA−BLNが設けられる。これらのビット線対BLA−BLNにおいては、ワード線WLの延在方向に沿ってデータA(ビットa0−an)、B(ビットb0−bn)がそれぞれ格納される。したがって、ビット線対BLPの延在方向に沿っては、異なるデータのビットが順次配置される。nは、0以上の整数である。
演算エレメントPEとDRAMセルアレイの対応のビット線対BLA−BLNの間では、リードモディファイライトモードに従ってデータの転送が実行される。演算エレメントPEにおいては、レジスタ40Nおよび44Nと演算器(ALU)42Nが設けられる。演算器(ALU)42Nは、Nビット(=n+1)ビットの幅を有し、DRAMセルアレイ30の1つのデータ(例えばA)の全ビット(たとえばa0−an)を並列に受けて演算処理を実行する。レジスタ40Nおよび44NもNビットの幅を有する。リードモディファイライトモードを利用する場合には、レジスタ40Nは利用されず、演算器(ALU)42NのNビットの演算結果が、レジスタ44Nに格納される。このレジスタ44Nの格納データが、双方向転送回路(図7に示す)を介して転送される。
図12は、図11に示す並列演算処理装置の演算操作を示すタイミング図である。以下、図12を参照して、図11に示す並列演算処理装置の演算操作について説明する。なお、図12においては、先の図4に示す構成と同様の制御信号が利用される。
サイクル♯kにおいて、演算処理が実行される前に、データ線プリチャージ指示信号BPRおよびビット線イコライズ/プリチャージ指示信号BLEQが非活性状態となる。この後、ワード線WLが選択状態へ駆動され、次いで、センスアンプ活性化信号SAEが活性化される。ワード線WLが選択されると、データAのビットa0−anがすべて対応のビット線対BLA−BLNに読出され、センスアンプ活性化信号SAEの活性化に従って、読出されたメモリセルのデータが、センスアンプ(SA)により増幅されてラッチされる。
次いで、読出Yゲート選択信号RY0−RYnをすべて選択状態へ駆動する。応じて、図4に示す読出アンプゲートRWYGがすべて導通状態となり、データAのビットa0−anが読出アンプゲートおよび双方向転送回路を介して対応の演算エレメントPEに転送される。このとき、双方向転送回路においては、図4に示すNビット幅のリードアンプラッチRAPLにより、読出データがラッチされる。
このNビットの転送データに従って演算器(ALU)42Nが演算操作F()を行ない、演算結果データF(A)を生成し、レジスタ44Nに格納する。このレジスタ44Nの格納データが確定すると、所定のタイミングで書込Yゲート選択信号WY0−WYnを選択状態へ駆動する。これにより、レジスタ44Nに格納されたNビット(n+1ビット)のデータF(A)が、図4に示すNビット幅のライトドライバを介して転送され、データAが格納されている領域に再び演算結果データF(A)が格納される。
演算結果データF(A)のメモリセルへの書込完了後、DRAMセルアレイ30が、一旦プリチャージ状態へ復帰し、ワード線WLが非選択状態とされ、ビット線イコライズ信号BLEQおよびデータ線プリチャージ指示信号DPRが活性化される。また、センスアンプ活性化信号SEが、非活性化される。
サイクル♯(k+1)において再び、次の演算データの読出、演算処理、および書込がリードモディファイライトモードで実行される。このサイクル♯(k+1)においても、サイクル♯kと同様に演算操作が行なわれるが、この場合、ワード線アドレスポインタが更新され、データBが選択される。これにより、データBの各ビットb0−bnが並列に読出され、演算エレメントPEに転送され、演算器(ALU)42Nにより、所定の演算処理Fが実行され、演算結果データF(B)が生成される。
再び、レジスタ44Nにこの演算結果データF(B)が格納された後、書込列選択信号WY0−WYnをすべて選択状態へ駆動し、このレジスタ44Nに格納されるビットをすべてデータBの格納位置に転送して書込む。
この図11に示す構成においては、データA、およびデータBがそれぞれ1クロックサイクル内で演算処理されて元の位置に格納される。たとえば画像データにおける塗潰し演算または背景画像の変換などの操作が行なわれる場合、図11に示すようなリードモディファイライトモードを用いてワード線WLを選択状態に維持した状態で、データの転送、演算および書込を行なうことにより、所定の演算操作を高速で実行することができる。
図13は、この発明の実施の形態2に従う並列演算処理装置の制御部の構成を示す図である。図13において、演算回路32に対してNビット幅の演算エントリ選択回路75が設けられる。また、レジスタ群22においては、Xポインタレジスタ54が用いられる。列デコード回路62は、タイミングジェネレータ52からの制御信号に従って、読出列選択線上の読出Yゲート選択信号CSLR(CSLR0−CSLRN)および書込列選択線上の書込Yゲート選択信号CSLW(CSLW0−CSLWN)を、それぞれ、読出時および書込時並行して選択状態へ駆動する。
この図13に示す並列演算処理装置の構成は、転送データのビット幅が異なることを除いて、図7に示す並列演算処理装置の構成と同じであり、対応する部分には同一参照番号を付し、その詳細説明は省略する。
演算エントリ選択回路75は、演算回路32に含まれる演算器それぞれに対応して設けられる選択回路を含み、メモリ入出力回路64から転送されるNビット幅のデータを順次演算エレメントのレジスタに格納する。
図14は、この図13に示す演算エントリ選択回路71の構成の一例を示す図である。メモリ入出力回路64からのデータは、Nビット幅の内部データ転送バス80を介して順次転送される。演算エントリ回路75は、演算エレメントPEそれぞれに対応して設けられる選択回路82を含む。この選択回路82はNビット幅であり、図13に示すタイミングジェネレータ52からの選択信号SELに従って対応の演算エントリPEに含まれるレジスタ44Nを内部データ転送バス80に結合する。
したがって、内部データ転送バス80へは、データA、データB、…とNビット幅のデータが順次転送され、選択回路82により、Nビット幅の転送データの全ビットが対応の演算エレメントのレジスタ44Nに並列に格納される。従って、演算エントリ毎に順次選択回路82が導通状態となって、内部データの演算エレメントのレジスタへの転送および格納が実行される。
このレジスタ44Nに格納されたNビット幅のデータA、B…は、図13に示すIO分離型双方向転送回路34に含まれるライトドライバに対応するNビット幅のライトドライバを介して、DRAMセルアレイの対応のメモリセルに格納される。
選択回路82へ与えられる選択信号SELは、コントローラ21に含まれるタイミングジェネレータ52から、たとえばシフトレジスタなどを用いて、演算エントリ(ビット線対群、IO分離型双方向データ転送回路および演算エレメントの組)ごとに、クロック信号CLKまたは転送クロック信号に従って選択状態へ駆動される。
Nビットデータの演算処理のときに、リードモディファイライトを利用することにより1クロックサイクルで、演算処理を実行することができる。
以上のように、この発明の実施の形態2に従えば、演算回路に対応して、DRAMセルアレイを設け、DRAMセルアレイと演算回路の間で、リードモディファイライトモードでNビットデータの転送、演算を行なっている。したがって、メモリセルアレイの占有面積を増大させることなく、高速で演算処理を実行することができる。
[実施の形態3]
図15は、この発明の実施の形態3に従う並列演算処理装置の要部の構成を概略的に示す図である。この図15に示す並列演算処理装置においては、DRAMセルアレイ30において、ビット線対BLP11−BLP1kが、1つの演算エレメントPE1に対応して設けられ、また、ビット線対BLP21−BLP2kが、演算エレメントPE2に対応して設けられる。ビット線対BLP11−BLP1k、BLP21−BLP2kには、それぞれセンスアンプ(SA)SA11−SA1k、SA21−SA2kが設けられる。すなわち、1演算エントリにおいて、k個のビット線対が配置される。
IO分離型双方向転送回路34においては、先の実施の形態1において図3を参照して説明したように、演算エレメントPE1に対応してリード/ライトYゲートRWYG11−RWYG1kが設けられ、演算エレメントPE2に対応して、リード/ライトYゲートRWYG21−RWYG2kが設けられる。リード/ライトYゲートRWYG11−RWYG1kは、kビット幅のローカル読出データバスRLDB1およびローカル書込データバスLWDB1に並列に結合され、また、リード/ライトYゲートRWYG21−RWYG2kは、並列に、kビット幅のローカル読出データバスRLDB2およびローカル書込データバスLWDB2に結合される。このローカル読出データバスRLDB1およびLRDB2は、それぞれ、リードアンプラッチRAPL1およびRAPL2に結合され、ローカル書込データバスLWDB1およびLWDB2は、それぞれkビット幅のライトドライバWDR1およびWDR2に結合される。
したがって、このIO分離型双方向転送回路34においては、kビットデータが各演算エレメントPE1およびPE2各々に対応して転送される。従って、DRAMセルアレイ30におけるデータビットの格納態様は、図11に示す演算エントリのデータ格納態様と同様である。
実施の形態3においては、実施の形態2と異なり、演算エレメントPE1およびPE2においては、演算エレメントPE1の演算結果を演算エレメントPE2へ選択的に転送する経路が設けられる。
図16は、図15に示す演算エレメントPEの具体的構成の一例を概略的に示す図である。図16において、演算エレメントPE(PE1,PE2)においては、演算器(ALU)として、kビット加算回路90が設けられる。このkビット加算回路90に対してレジスタ40Kおよび44Kが設けられ、また、Cレジスタ92が設けられる。レジスタ40Kは、対応のリードアンプラッチRAPLからのkビットデータを格納し、kビット加算回路90は、レジスタ40Kに格納されるデータとリードランプラッチから転送されるkビットデータとCレジスタ92に格納されるデータビットとを加算する。このkビット加算回路90は、全加算回路であり、和(サム)SおよびキャリーCを生成する。
Cレジスタ92は、1ビットのキャリーCを格納し、レジスタ44Kには、kビット加算回路90の加算結果の和(サム)Sが格納される。キャリーCは、次段の演算エレメントにまた転送される。切換回路94により、前段の演算エレメントからのキャリーCpと対応のkビット加算回路90の出力するキャリーCの一方を選択してCレジスタ92に格納する。
演算エレメントPE1、PE2…各々においては、kビットデータの全加算を実行し、そのキャリーCが、演算データのデータビット幅に応じて選択的に転送される。たとえばkが4であり、演算データが8ビットの場合、演算エレメントPE1において下位4ビットの全加算が行なわれ、演算エレメントPE2において、上位4ビットのデータと下位の演算エレメントPE1からのキャリーCとの加算を実行する。
Cレジスタ92に格納されるキャリーCは、加算結果後に、DRAMセルアレイの対応の加算結果格納領域に格納される。従って、図15に示す構成においては、演算エレメントPEのビット幅がkビットと固定されていても、演算データとしては、kビット、2kビットと演算データのビット幅の拡張を行うことができる。
切換回路94のデータビット転送経路は、演算データのビット幅に応じて、制御信号によりその伝達経路が設定されてもよく、また、ヒューズプログラム回路またはマスク配線などにより、その伝達経路が固定的に設定されてもよい。
図17は、演算エレメントPE1、PE2…を含む演算回路32とメモリ入出力回路(図13参照)の間のデータ転送経路を概略的に示す図である。この図17において、メモリ入出力回路64からの内部データ転送バス95は、複数の単位データバスUBS1、UBS2…UBSjに分割される。内部データ転送バス95のビット幅は、従って、kビット単位で調整可能である。
各演算エレメントPEに対応して、選択回路96が設けられる。この選択回路96は、kビット幅を有し、接続部SX1、SX2、…SXjによりその単位データバスUBS1−UBSjとの接続が設定される。この接続部SX1−SXjは、マスク配線でその接続経路が設定されてもよく、また、スイッチング素子を、ヒューズプログラム回路からの固定情報に従って選択的に導通/非導通所帯に設定して接続経路が設定されてもよい。
これにより、演算エレメントPEは、最大k・jビット幅のデータのうちの、どのデータ群を処理するかに応じて、その接続経路が切換えられる。これにより、演算回路32において、kビット単位で、kビットデータから最大k・jビットデータの演算を行なうことができる。
演算回路34の演算エレメントPEにおいてALUとして、通常のビット反転などを行なう回路が設けられている場合には、特にCレジスタ92は利用されない。各データビット線においてそれぞれkビット単位で、反転などの演算処理が実行されて、その演算結果が対応のメモリセルに格納されればよい。したがって、この実施の形態3において、演算回路における演算処理のデータビット幅が可変とされるだけであり、その演算内容に応じて、リードモディファィドライトモードが用いられてもよく、また、実施の形態1に示すように、各データビットごとに演算操作が実行されてもよい。
以上のように、この発明の実施の形態3の構成においては、演算回路において演算処理するデータビット幅を変更可能に設定しており、処理用途に応じて異なる演算データのビット幅に対して同一の設計で対応することができる。たとえば、4ビットデータ、8ビットデータ、16ビットデータおよび32ビットデータに対して、それぞれ図16に示す切換回路94のデータ転送経路および図17に示す接続部SX1−SXjの接続を切換えることにより、各データを、演算処理することができる。
データ演算の制御回路としては、図13に示す制御部の構成を利用することができる。図17に示す選択回路96に与えられる選択信号MXの発生タイミングを、データビット幅に応じて調整すればよい。すなわち、4ビットデータの場合には各演算エレメントごとに選択回路96を切換え、8ビットデータの場合には、2つの演算エレメントごとに、選択回路を並列に導通状態とする。
図18は、選択回路96に対する選択信号MXXを発生する部分の構成の一例を示す図である。図18において、選択信号発生部は、カウンタ100と、選択信号MXX0−MXXmをカウンタ100のカウント値に従って生成するデコード回路102とを含む。これらのカウンタ100およびデコード回路102は、図1に示すコントローラ21に含まれ、カウンタ100およびデコード回路102の動作タイミングは、例えば図13に示すタイミングジェネレータから生成される。
カウンタ100は、動作時、クロック信号CLKをカウントする。デコード回路102へは、データビット幅指示信号BWDTHが与えられ、カウンタ100のカウント値をデコードする際に、このデータビット幅指示信号BWDTHに従って、選択的にカウント値が縮退されて(あるカウントビットの偶数値および奇数値がともに選択状態とされ)、選択信号MXX0−MXXmを生成する。これにより、kビット単位のときには、各演算エレメントごとに、選択信号MXX0−MXXmが、カウンタ100からのカウント値に従って順次選択状態へ駆動される。一方、たとえば2・kビット幅の場合には、デコード回路102からは、2つの選択信号MXX0およびMXX1などのように、隣接する選択信号MXXiおよびMXX(i+1)が並行して選択状態へ駆動される。
コントローラ21内における選択信号を発生するデコード回路102のデコード時のカウントビットの縮退動作を、データビット幅指示信号BWDTHに従った設定することにより、演算処理データビット幅に応じて演算エレメントPEに対応のkビットのデータを格納することができる。これにより、演算データのビット幅に応じて実効的に1つの演算エレメントの処理ビット幅を変更することが可能となる。
なお、この選択信号MXX(MXX0−MXXm)は、接続部SX1−SXjと同様、マスク配線により、演算対象データビット幅に応じて伝達する経路が切換えられてもよい。この場合には、1つの選択信号が供給される選択回路の数が、演算対象データのビット幅に応じて設定される。デコード回路102における縮退動作は不要となり、カウンタ100のカウント値に従って選択信号が順次選択状態に駆動される。
以上のように、この発明の実施の形態3に従えば、演算回路の処理データビット幅を変更可能に調整しており、データビット幅の異なる処理用途に対して柔軟に同一構成の演算エントリを用いて対応することができる。
[実施の形態4]
図19は、この発明の実施の形態4に従う並列演算処理装置の要部の構成を概略的に示す図である。この図19に示す構成において、DRAMセルアレイ30の両側に、IO分離型双方向転送回路34Lおよび34Rが配置される。IO分離型双方向転送回路34Lおよび34Rに対応してそれぞれ、演算回路32Lおよび32Rが設けられる。
DRAMセルアレイ30においては、奇数ビット線対BLPO1−BLPOnと偶数ビット線対BLPE1−BLPEnが交互に配置される。ビット線対BLPO1−BLPOnおよびBLPE1−BLPEnと交差するようにワード線WLが配置され、各ビット線対とワード線との交差部に対応してダイナミック型メモリセルMCが配置される。
奇数ビット線対BLPO1−BLPOnに対応して、DRAMセルアレイ30の一方側にセンスアンプSAR1−SARnが配置され、偶数ビット線対BLPE1−BLPEnに対応して、DRAMセルアレイ30の対向する他方側に、センスアンプSAL1−SALnが配置される。センスアンプSAR1−SARnおよびセンスアンプSAL1−SALnを、各ビット線ごとに交互にDRAMセルアレイ30の両側に配置することにより、センスアンプのピッチ条件を緩和する。
IO分離型双方向転送回路34Lにおいては、センスアンプSAL1−SALn各々に対応してリード/ライトYゲートRWYGL1−RWYGLnが設けられる。これらのリード/ライトYゲートRWYGL1−RWYGLnは、それぞれローカル書込データバスLWDBLiおよびローカル読出データバスLRDBLiに結合される。リード/ライトYゲートRWYGL1−RWYGLnは、それぞれ図4に示す構成と同様、互いに別々に設けられるリードアンプゲートおよびライトアンプゲートを含み、導通時、対応のセンスアンプSALとローカル書込データバスLWDBLiまたはLRDBLiとの間でデータを転送する。
ローカル読出データバスLRDBLiに対してリードアンプラッチRAPLLiが設けられ、ローカル書込データバスLWDBLiに対してライトドライバWDRLiが設けられる。これらのリードアンプラッチRAPLLiおよびライトドライバWDRLiは、各々、演算エレメントPELiとの間で一方方向にデータの転送を行なう。リードアンプラッチRAPLLiおよびライトドライバWDRLiの構成は、先の図4に示す構成と同様である。
IO分離型双方向転送回路34Rにおいては、センスアンプSAR1−SARn各々に対応してリード/ライトYゲートRWYGR1−RWYGRnが設けられる。これらのリード/ライトYゲートRWYGR1−RWYGRnが、それぞれ、リードアンプゲートおよびライトアンプゲートを含み、ローカル読出データバスLRDBRiおよびローカル書込データバスLWDBRiに結合される。
ローカル読出データバスLRDBRiは、リードアンプラッチRAPLRiに結合され、ローカル書込データバスLWDBRiがライトドライバWDRRiに結合される。リードアンプラッチRAPLRiおよびライトドライバWDRRiは、対応の演算エレメントPERiと双方向でデータの転送を行なう。
このIO分離型双方向転送回路34Lおよび34Rが転送するデータのビット幅は、演算エレメントPELiおよびPERiの演算処理データのビット幅に応じて適宜定められる(実施の形態3参照)。
この図19に示すように、DRAMセルアレイ30の両側に、IO分離型双方向転送回路34Lおよび34Rを配置し、DRAMセルアレイ30のビット線対を交互に、IO分離型双方向転送回路34Lおよび34Rに結合する。これにより、IO分離型双方向転送回路34Lおよび34Rのワード線延在方向におけるピッチ条件が緩和され、1演算エントリの処理データビット幅が大きくなっても、余裕を持って各構成要素を配置することができる。
また、演算エレメントPELiおよびPERiは、n個のビット線対ではなく、2・n個のビット線対に対応して配置することができ、演算エレメントPELiおよびPERiのビット条件も緩和され、複雑な演算操作を行なう演算エレメントでも余裕を持って配置することができる。
図20は、この発明の実施の形態4に従う並列演算処理装置(基本演算ブロック)の構成を概略的に示す図である。図20において、DRAMセルアレイ30の両側に、IO分離型双方向転送回路34Lおよび34Rが設けられる。このIO分離型双方向転送回路34Lおよび34Rは、それぞれ、DRAMセルアレイ30の偶数ビット線対BLPEおよび奇数ビット線対BLPOと双方向にデータを転送する。このDRAMセルアレイ30に対しては、ワード線選択回路60が設けられる。
このIO分離型双方向転送回路34Lおよび34Rそれぞれに対応してかつ近接して演算回路32Lおよび32Rが設けられる。これらの演算回路32Lおよび32Rは、図19に示す演算エレメントPELiおよびPERiを、1以上の所定数のビット線対ごとに含む。
この演算回路32Lおよび32Rに近接して、シフトレジスタ回路66Lおよび66Rが設けられる。これらのシフトレジスタ回路66Lおよび66Rは、図8に示す構成と同様の構成を有し、演算回路32Lおよび32Rに対し、それぞれ、演算対象データを各演算エレメント内のレジスタに格納し、また演算処理後のデータを演算回路32Lおよび32Rから受け取る。
これらのシフトレジスタ回路66Lおよび66Rに対応してメモリ入出力回路64Lおよび64Rが設けられる。これらのメモリ入出力回路64Lおよび64Rは共通に、内部データバス12に結合され、内部データIDQを転送する。
演算操作およびデータ転送の制御を行なうために先に実施の形態1と同様、コントローラ21およびレジスタ群22が設けられる。レジスタ群21は、DRAMセルアレイ30のワード線を指定するXポインタPxを格納するXポインタレジスタ54と、DRAMセルアレイ30の列(ビット線対)を指定するYアドレスポインタPyを格納するYポインタレジスタ56を含む。
コントローラ21は、図示しない命令メモリからの命令をデコードする命令デコーダ50と、命令デコーダ50の命令に従って、クロック信号CLKをタイミング基本信号として各種動作制御信号を生成するタイミングジェネレータ52を含む。
タイミングジェネレータ52は、先の実施の形態1から3と同様、シフトレジスタ回路66L,66R、演算回路32L,32RおよびIO分離型双方向転送回路34Lおよび34Rのデータ転送動作を制御し、またDRAMセルアレイ30におけるメモリセルの選択、および列デコード回路62R,62Lの列選択動作を制御する。
この図20に示す構成において、演算処理を実行する場合には、演算回路32Lおよび32Rにおいて並列して演算処理を実行する。
シフトレジスタ回路66Lおよび66Rを用いて、演算回路32L,34Rを介してメモリ入出力回路64L,64RとDRAMセルアレイ30との間でのデータの書込/読出を実行する。
この図20に示す構成においては、実施の形態1と同様、1ビット単位で演算操作が実行されても良く、また、実施の形態2および3に示すようにNビットデータの演算が実行されてもよい。また、演算データのビット幅に応じて1演算単位(演算データに対応して配置される演算エントリ)のビット線対の数を調整して、実効的に演算エレメントの高さが調整されてもよい(kビットデータの処理およびj・kビットデータの処理を演算エントリにおいて行うことにより、演算エントリの高さ(処理データビット幅)を実効的に調整する)。
また、メモリ入出力回路64Lおよび64Rは、別々に設けられず、1つのメモリ入出力回路64が設けられ、内部データバス12とDRAMセルアレイ30との間でデータ転送が行なわれてもよい。
また、この図20に示す構成の場合、演算回路32Lおよび32Rの一方を用いてDRAMセルアレイ30のデータに演算処理を実行し、他方の演算回路のレジスタ(44)に、対応のシフトレジスタ回路(66L,66R)を介して演算対象データの書込または読出が実行されてもよい。この場合のデータ転送の制御は、コントローラ21からの制御により、シフトレジスタ回路66Lまたは66Rを選択的に活性化することにより実現することができる。
したがって、このDRAMセルアレイ30のビット線対群交互に、演算エレメントを配置する構成の場合、各演算エレメントおよびIO分離型双方向転送回路34L,34Rのピッチ条件を緩和することができる効果が得られるとともに、以下の効果も併せて得ることができる。すなわち、DRAMセルアレイ30の格納データの演算操作を行なっている間に、メモリ入出力回路64Lまたは64Rを介して、演算回路32Lまたは32Rのレジスタ44に格納されたデータの外部への転送またはレジスタ44へのデータの格納を行なうことができる。
[実施の形態5]
図21は、この発明の実施の形態5に従う並列演算処理装置の要部の構成を概略的に示す図である。図21においては、1つの基本演算ブロック(並列演算処理装置)の構成を代表的に示す。
図21において、DRAMセルアレイ30は、DRAMセルが行列状に配列されるDRAMセルアレイマット30Sと、ビット線周辺回路30Pとで構成される。ビット線周辺回路30Pは、各ビット線対に対応して設けられるセンスアンプSAおよびビット線イコライズ回路BEQを含む。DRAMセルアレイマット30Sに対応して、ワード線選択駆動回路60が設けられる。
DRAMセルアレイ30と演算回路32の間に、IO分離型双方向転送回路34が配置され、このIO分離型双方向転送回路34に対応して列選択回路104が設けられる。この列選択回路104は、IO分離型双方向転送回路34の転送データビット幅に応じて、その構成が異なる(実施の形態1から3参照)。
また、演算回路32とメモリ入出力回路64の間のデータ転送を行なうために、データ選択転送回路106が設けられる。このデータ選択転送回路106は、演算回路32の演算データビット幅に応じて実施の形態1から3のいずれかに示す構成が利用される。
メモリ入出力回路64は、先の実施の形態1から3と同様、内部データバス12に結合され、Nビット幅の内部データIDQを転送する。
レジスタ群22においては、Xポインタレジスタ54およびYポインタレジスタ56に加えて、さらに、リフレッシュポインタレジスタ114とセレクタ116とが設けられる。リフレッシュポインタレジスタ114は、DRAMセルアレイマット30Sにおけるリフレッシュ行を指定するリフレッシュワード線アドレスを格納する。セレクタ116は、切換指示信号RFSWに従ったXポインタレジスタ54およびリフレッシュポインタレジスタ114の一方のポインタを選択してワード線アドレスポインタPxを生成する。
なお、図21に示す構成においては、Yポインタレジスタ56が設けられて、YアドレスポインタPiを生成して列選択回路104へ与えている。しかしながら、IO分離型双方向転送回路34の転送データビット幅に応じて、Yポインタレジスタ56は設けられなくてもよい(実施の形態2および3参照)。
コントローラ21は、命令デコーダ50と、タイミングジェネレータ120と、リフレッシュ間隔を規定するリフレッシュタイマ122と、DRAMセルアレイマット30Sにおけるメモリのデータアクセスとリフレッシュとの調整を行なう調停回路124を含む。
命令デコーダ50は、先の実施の形態1から4と同様、命令メモリからの命令をデコードし、デコード結果をタイミングジェネレータ124に伝達する。
リフレッシュタイマ122は、内部クロック信号CLKをカウントし、所定の時間(リフレッシュ間隔)tREFごとに、リフレッシュ要求RFQをアサートする。タイミングジェネレータ120は、たとえばシーケンスコントローラで構成され、命令デコーダ50の命令に従って所定のシーケンスで内部動作タイミングを規定する制御信号を生成するとともに、レジスタ群22に含まれるポインタレジスタのポインタを更新する。図21においては、タイミングジェネレータ120が生成する内部動作制御信号として、ビット線イコライズ指示信号BLEQ、センスアンプ活性化信号SAE、データ線プリチャージ指示信号DPR、およびアレイ活性化信号RACTを代表的に示す。アレイ活性化信号RACTは、DRAMセルアレイマット30Sが選択状態にある期間を規定する。
調停回路124は、タイミングジェネレータ120からのアレイ活性化信号RACTとリフレッシュタイマ122からのリフレッシュ要求RFQとに従って、DRAMセルアレイ30における演算データ処理とリフレッシュ動作が衝突しないように調停を行って、リフレッシュ指示REFをタイミングジェネレータ120に与える。タイミングジェネレータ120は、また、調停回路124からリフレッシュ指示REFが与えられると、DRAMセルアレイ30においてリフレッシュワード線アドレスポインタに従ってリフレッシュ動作を実行させる制御を行う。
図22は、図21に示す基本演算ブロック(並列演算処理装置)におけるリフレッシュ動作を示すフロー図である。以下、図22を参照して、図21に示す並列演算処理装置のリフレッシュ動作について、主としてコントローラ21のリフレッシュ動作制御に焦点をあてて説明する。
調停回路124は、リフレッシュタイマ122から、リフレッシュ要求RFQが発行されたかを常時モニタする(ステップSP1)。調停回路124は、リフレッシュタイマ122からリフレッシュ要求RFQが与えられると、次いで、タイミングジェネレータ120からのアレイ活性化信号RACTがアサートされているかを判定する(ステップSP2)。アレイ活性化信号RACTがリフレッシュ要求が与えられているときにアサートされている場合には、DRAMセルアレイ30において、演算処理のためにメモリセルが選択されている。従って、この状態においては、アレイ活性化信号RACTがネゲートされるまで、リフレッシュ実行は待ち合わせられる。
アレイ活性化信号RACTがネゲート状態の時には、リフレッシュ割込ルーチンが開始され、調停回路124は、リフレッシュ指示REFをタイミングジェネレータ120に対して発行する。このとき、また、調停回路124は、リフレッシュタイマ122に対してリセット信号RSTを発行し、リフレッシュタイマ122のカウント値(計測時間)を初期値にリセットする(ステップSP3)。なお、この場合、調停回路124は、リフレッシュタイマ122からリフレッシュ要求RFQが与えられると、リフレッシュタイマ122のカウント値(計測時間)を初期値にリセットするように構成されてもよい。
タイミングジェネレータ120は、また、調停回路124からリフレッシュ指示REFが与えられると、外部に対してビジー信号BUSYを発行し、内部でリフレッシュ動作が実行されることを報知する。このビジー信号BUSYは、図1に示すDMA回路4に対して発行され、次いで、ホストCPU2に対し、基本演算ブロック(並列演算処理装置)がリフレッシュのためにビジー状態であることを報知する。このビジー信号BUSYは、図1に示す集中制御ユニット15に発行され、集中制御ユニット15が、外部のホストCPUと主並列演算処理ユニットとの間のデータ転送を調整しても良い。
リフレッシュ指示REFの発行に応答して、タイミングジェネレータ120は、リフレッシュ切換信号RFSWを生成する。この切換信号RFSWに従って、セレクタ116は、リフレッシュポインタレジスタ114に格納されるリフレッシュアドレスポインタを選択して、リフレッシュアドレスを指定するワード線アドレスポインタPxを生成する。
次いで、ワード線選択駆動回路60が、タイミングジェネレータ120からのアレイ活性化信号RACTなどの行選択に関連する制御信号に従って、リフレッシュアドレスポインタPxに従ってリフレッシュ行を選択し、ビット線周辺回路30Pに含まれるセンスアンプSAを活性化し、リフレッシュ対象のメモリセルのリフレッシュを実行する。このリフレッシュ動作時のワード線選択駆動回路60およびビット線周辺回路30Pの動作は、通常のデータアクセス時の動作と同じである。また、リフレッシュ動作時には、IO分離型双方向転送回路34においては、リード/ライトYゲートはすべて非導通状態に維持され、ビット線周辺回路30Pと演算回路32とは分離される(ステップSP4)。
タイミングジェネレータ120は、リフレッシュが完了したかを判定する(ステップSP5)。このリフレッシュ完了の判定においては、各リフレッシュ要求ごとに、1つのワード線がDRAMセルアレイマット30Sにおいて選択されてもよく、また、バースト的に、DRAMセルアレイマット30Sにおいて複数のワード線が順次選択されてメモリセルのリフレッシュが実行されてもよい。リフレッシュ態様に応じて、所定数のワード線がアレイ活性化信号RACTに従って選択されてリフレッシュ動作が実行されたかが判定される。アレイ活性化信号RACTは、1本のワード線の選択期間を規定する。
リフレッシュが完了すると、リフレッシュ割込ルーチンが完了し、タイミングジェネレータ120が、レジスタ群22のセレクタ116に対する切換制御信号RFSWをXポインタレジスタ54を選択する状態に設定し、またリフレッシュポインタレジスタ114のリフレッシュポインタを更新する(SP6)。
この後、再びリフレッシュにより中断された演算処理が存在する場合には、この中断された演算操作を再開して、再びステップSP1に戻り、リフレッシュ要求の発行を待つ(ステップSP7,SP8)。
なお、上述の説明において、アレイ活性化信号RACTが、ワード線がDRAMセルアレイマット30Sにおいて選択状態にある期間を規定する信号として説明している。しかしながら、このアレイ活性化信号RACTが、1つの演算サイクルを規定する信号として用いられ、1つの演算サイクルが完了したときに、リフレッシュを行なうように構成されてもよい。ここで、「1演算サイクル」は、1つのデータについて、演算回路32において1つの演算操作が実行されるサイクルを示し、たとえばデータDAおよびDBの加算のときには、データDAおよびDBの演算エレメントへのロード、演算器での演算、および演算結果のストアを含む操作がすべて実行されるサイクルを示す。
DRAMセルアレイ30においてメモリセルが選択されていない状態のときに、リフレッシュを実行する。したがって、データ選択転送回路106を介した演算回路32とメモリ入出力回路64との間でのデータ転送と並行して、DRAMセルアレイ30に対するリフレッシュを実行することができる(IO分離型双方向転送回路34は、リフレッシュ時には、ビット線周辺回路30Pと演算回路32とを分離している)。
なお、調停回路124の構成としては、アレイ活性化信号RACTのアサート時、リフレッシュ要求RFQの伝達を禁止し、アレイ活性化信号RACTがネゲート状態のときに、リフレッシュ要求REQを伝達してリフレッシュ指示REFを生成する構成が利用されればよく、種々の構成を利用することができる。
また、リフレッシュアドレスポインタ114は、ポインタが、リフレッシュ開始時ではなくリフレッシュ完了ごとに更新されるように構成されても良い。
以上のように、演算データの格納のために、DRAMセルアレイを利用していても、リフレッシュを並列演算処理装置(基本演算ブロック)内部で自動的に実行しており、外部の集中制御ユニットまたはホストコントローラは、メモリ制御が簡略化され、制御の負荷が軽減される。
[変更例]
図23は、この発明の実施の形態5の変更例の基本演算ブロックの構成を概略的に示す図である。図23に示す並列演算処理装置の構成は、図21に示す並列演算処理装置の構成と、以下の点で、その構成が異なる。すなわち、コントローラ21において、命令デコーダ130に外部からリフレッシュ指示がコマンドREFCとして与えられる。命令デコーダ130からのリフレッシュ命令REFiに従ってタイミングジェネレータ132が、リフレッシュ動作の実行を制御する。タイミングジェネレータ132は、リフレッシュ命令REFiが与えられても、ワード線がDRAMセルアレイマット130Sにおいて選択状態の場合には(アレイ活性化信号RACTが活性状態の時には)、その選択状態のワード線が非選択状態になるるまでリフレッシュ実行を待ち合わせる。
この図23に示す並列演算処理装置の他の構成は、図21に示す並列演算処理装置の構成と同じであり、対応する部分には同一参照番号を付しその詳細説明は省略する。
図23に示す並列演算処理装置の構成の場合、リフレッシュ指示コマンドREFCが発行される場合、リフレッシュの調停は、外部のホストCPUまたは制御CPUにより実行され、基本演算ブロック(並列演算処理装置)では、リフレッシュ間隔をモニタする必要がなく、制御の負荷が軽減される。ただし、外部のメモリコントローラ(ホストCPUまたは集中制御ユニット)は、リフレッシュコマンドの発行と演算命令実行コマンドの発行との間の調停を行うまたは演算サイクル単位での調停を実行する(1演算命令が1クロックサイクルで完了する場合)。
図24は、図23に示す並列演算処理装置のコントローラ21のリフレッシュ動作制御を示すフロー図である。以下、図23に示す並列演算処理装置のリフレッシュ動作を、図24に示すフロー図を参照して説明する。
外部のホストCPUまたは制御用CPU(図1参照)である外部コントローラは、リフレッシュタイマ(図示せず)からタイムアップ指示が発行されたかをモニタする(ステップSP11)。リフレッシュタイマからのタイムアップが検出されると、次いで、外部コントローラは、発行する実行命令があるかの判定を行なう(ステップSP12)。発行する実行命令が存在する場合には、その実行命令の発行を待合せる。並列演算処理装置内においては、演算サイクルはクロック信号により規定されている。実施の形態2または3などのように、Nビットデータが演算器において処理される場合には、演算命令は、1または2クロックサイクルで完了する。このとき、1演算サイクルに渡ってワード線は選択状態に維持されている。従って、外部のコントローラは、単に、リフレッシュタイマからのタイムアップ指示に従って、クロック信号に同期してリフレッシュコマンドを発行して、並列演算処理装置内部においてアレイ活性化信号の非活性化時にリフレッシュを実行することにより、演算操作とリフレッシュとの競合は回避することができる。
また、発行する実行命令が存在しない場合には、並列演算処理装置が待機状態にあるか、または先に発行された演算命令を実行中である。従って、発行命令の有無とタイムアップ信号とに従ってリフレッシュコマンドの発行を調整しても、並列演算処理装置内におけるリフレッシュ動作については、何ら問題は生じない。
また、命令実行中であるかの判定を以下のように行うように構成されても良い。外部コントローラが発行した命令の完了に要するクロックサイクル数を、予め図示しないレジスタに格納し、その命令発行からリフレッシュタイマのタイムアップまでのクロックサイクルの差を見ることにより行う。
発行実行命令が存在しない場合には、外部コントローラは、リフレッシュコマンドREFCを発行する(ステップSP13)。このリフレッシュコマンドREFCは、位置例として、外部コントローラがホストCPUの場合には、DMAC回路を介して、入出力インターフェイスを介することなく、基本演算ブロック(並列演算処理装置)のコントローラ(21)へ与えられる。また、ホストCPUが、直接コマンドを入出力インターフェース回路を介して転送しても良い。このリフレッシュコマンドは、例えばブロードキャストモードで複数の基本演算ブロックに対して共通に与えられる。
基本演算ブロック(並列演算処理装置)内のコントローラ21においては、命令デコーダ130が、リフレッシュコマンドREFCをデコードしてリフレッシュ指示REFiを生成してタイミングジェネレータ132へ与える。タイミングジェネレータ132においては、その内部に設けられたDRAM制御部が、ワード線が非選択状態のときに、リフレッシュアドレスポインタ114のポインタをセレクタ116により選択させる。次いで、アレイ活性化信号RACTをアサートし、各種制御信号BLEQおよびSAEを発行する。これにより、ワード線選択駆動回路60においてリフレッシュアドレスポインタレジスタ114のポインタが指定するワード線が選択されて、メモリセルのリフレッシュが実行される。タイミングジェネレータ132に含まれる双方向転送制御部、演算制御部およびデータ入出力制御部は、このリフレッシュ動作には関与しない(ステップSP14)。
次いで、タイミングジェネレータ132は、リフレッシュが完了すると(ステップSP15)、セレクタ116に、Xポインタレジスタ54のワード線アドレスポインタを選択させる。このとき、リフレッシュポインタレジスタ114のポインタが更新されても良い。このリフレッシュ動作シーケンスは、先の図21および22を参照して示したリフレッシュ動作と同様である。
次いで、タイミングジェネレータ132は、基本演算処理装置内において中断された操作があるかの判定を行なう(ステップSP17)。この中断操作は、発行された命令において、演算サイクルが完了していても、全データについての演算処理が完了していない状態の操作、演算器における演算処理時にDRAMセルアレイマット30Sにおいてワード線が非選択状態とされる場合、演算器の演算結果がまだ演算エレメント内に保持され、DRAMセルアレイマットにストアされていない状態等を示す。これは、例えば、コントローラ内の演算制御部のステータスレジスタをモニタすることにより判定される。
並列演算処理装置内において中断された操作が存在する場合には、その中断操作を再開し、必要な処理を実行する(ステップSP18)。このステップSP14−SP18のリフレッシュ制御が、基本演算ブロック(並列演算処理装置)内のコントローラ21の制御により外部からのリフレッシュコマンドREFCに従って実行される。
次いで、外部のコントローラ(ホストCPUまたは制御CPU)は、リフレッシュコマンドの発行後、リフレッシュに要するクロックサイクル期間経過後、次の命令が存在する場合、次の命令を発行する(ステップSP19)。以降、ステップSP11からの操作が、再び、開始される。
したがって、外部コントローラ(ホストCPUまたは制御用CPU)において、リフレッシュの命令発行の調停を行なうことにより、基本演算ブロック(並列演算処理装置)内のコントローラ21は、リフレッシュ期間のモニタなどの制御を行なう必要がなく、制御の負荷が低減される。
なお、並列演算回路に対するデータの入出力は演算エレメントのレジスタおよびメモリ入出力回路を介して実行される。従って、データ転送命令の発行時には、リフレッシュコマンドがこのデータ転送命令と並行して発行されてもよい。並列演算処理装置内においては、DRAMセルアレイから演算回路へのデータ転送後にリフレッシュが実行される方またはメモリ入出力回路から演算回路へのデータのロードと並行してリフレッシュが実行される。
以上のように、この発明の実施の形態5に従えば、並列演算処理装置内において、リフレッシュを実行するように構成している。したがってメモリセルとして、DRAMセルを用いても、安定にデータを保持して、正確な演算処理を実行することができる。また、リフレッシュと通常動作との調停を行なっており、演算操作に悪影響を及ぼすことなく、リフレッシュを実行することができる。
なお、リフレッシュの調停については、ソフトウェアを用いて実行されてもよく、またハードウェアを用いて実現されてもよい。
1 半導体集積回路装置、FB1−FBn 基本演算ブロック(並列演算処理装置)、20 主演算回路、21 コントローラ、22 レジスタ群、23 マイクロプログラム格納メモリ、2 ホストCPU、15 集中制御ユニット、25 制御用CPU、30 DRAMセルアレイ、30S DRAMセルアレイマット、30P ビット線周辺回路、32 演算回路、34 IO分離型双方向転送回路、PE1−PEm 演算エレメント、RWYG11−RWYGmk リード/ライトYゲート、RAPL1−RAPLm リードアンプラッチ、WDR1−WDRm ライトドライバ、SA11−SA1k,SAm1−SAmk センスアンプ(SA)、40,40A,40B,40K,40N レジスタ、42N 演算器(ALU)、44,44N,44K レジスタ、50 命令デコーダ、52 タイミングジェネレータ、54 Xポインタレジスタ、56 Yポインタレジスタ、66 シフトレジスタ回路、92 Cレジスタ、94 切換回路、90 kビット加算回路、UBS1−UBSj 単位データ転送バス、95 データ転送バス、32L,32R 演算回路、34L,34R IO分離型双方向転送回路、PELi,PERi 演算エレメント、120 タイミングジェネレータ、122 リフレッシュタイマ、124 調停回路、114 アドレスポインタレジスタ、116 セレクタ、130 命令デコーダ、132 タイミングジェネレータ。