(57)【要約】【課題】  リードモディファイライト動作を高速に行なうことが可能な演算システムを提供すること。【解決手段】  ＡＬＵ１は、データを複数部分に分けて順番に演算を行なう。メモリ２は、複数部分のデータのそれぞれに対応し、バンク０のＳＲＡＭ２１と、バンク１のＳＲＡＭ２２とを含む。バンク０のＳＲＡＭ２１がＡＬＵ１による演算結果の書込みを行なっているときに、バンク１のＳＲＡＭ２２がデータの読出しを行なう。したがって、リードモディファイライト動作を高速に行なうことが可能となる。【選択図】        図３
2006293538.tif 000002
【特許請求の範囲】
【請求項１】
データを複数部分に分けて順番に演算を行なう演算システムであって、
前記複数部分のデータの演算を行なう演算手段と、
データの読出しと前記演算手段による演算結果の書込みとを同時に行なう、前記複数部分のデータのそれぞれに対応する記憶手段とを含み、
前記記憶手段は、第１のデータの読出しと前記演算手段による第１の演算結果の書込みとを行なう第１のバンクメモリと、
前記第１のバンクメモリが第１の演算結果の書込みを行なっているときに第２のデータの読出しを行ない、前記演算手段による第２の演算結果の書込みを行なう第２のバンクメモリと、
前記第１のバンクメモリから読出された第１のデータと、前記第２のバンクメモリから読出された第２のデータとを前記演算手段に選択的に出力する選択手段とを含む、演算システム。
【請求項２】
前記第１のバンクメモリおよび前記第２のバンクメモリは、シングルポートスタティックランダムアクセスメモリによって構成される、請求項１記載の演算システム。
【請求項３】
前記第１のバンクメモリおよび前記第２のバンクメモリは、デュアルポートスタティックランダムアクセスメモリによって構成される、請求項１記載の演算システム。
【請求項４】
前記記憶手段はさらに、前記第１のバンクメモリまたは前記第２のバンクメモリに書込む演算結果を保持する保持手段と、
前記第１のバンクメモリまたは前記第２のバンクメモリへの演算結果の書込み時におけるアドレスと、その次のデータ読出し時のアドレスとが一致するか否かを判定する判定手段とを含み、
前記選択手段は、前記判定手段によってアドレスが一致すると判定された場合、前記保持手段に保持されるデータを前記演算手段に出力する、請求項１〜３のいずれかに記載の演算システム。
【請求項５】
前記記憶手段はさらに、前記第１のバンクメモリまたは前記第２のバンクメモリに書込む演算結果を保持する保持手段を含み、
前記選択手段は、外部からアドレスが不変であることを示す信号がアサートされた場合、前記保持手段に保持されるデータを前記演算手段に出力する、請求項１〜３のいずれかに記載の演算システム。
【請求項６】
前記演算手段は、前記複数部分のデータのそれぞれの演算を行なう演算回路と、
前記第１のバンクメモリまたは前記第２のバンクメモリに書込む演算結果を保持する保持手段と、
前記第１のバンクメモリまたは前記第２のバンクメモリへの演算結果の書込み時におけるアドレスと、その次のデータ読出し時のアドレスとが一致するか否かを判定する判定手段と、
前記判定手段による判定結果に応じて、前記記憶手段からの読出しデータと前記保持手段に保持されるデータとを前記演算回路に選択的に出力する選択手段とを含む、請求項１〜３のいずれかに記載の演算システム。
【請求項７】
前記演算手段は、前記複数部分のデータのそれぞれの演算を行なう演算回路と、
前記第１のバンクメモリまたは前記第２のバンクメモリに書込む演算結果を保持する保持手段と、
外部から入力されるアドレスが不変であることを示す信号に応じて、前記記憶手段からの読出しデータと前記保持手段に保持されるデータとを前記演算回路に選択的に出力する選択手段とを含む、請求項１〜３のいずれかに記載の演算システム。
【請求項８】
前記第１のバンクメモリおよび前記第２のバンクメモリは、前記演算手段による演算結果の書込み時におけるアドレスとして、直前のデータ読出し時のアドレスを使用する、請求項１〜７のいずれかに記載の演算システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ビットシリアル演算を行なう技術に関し、特に、リードモディファイライト動作を高速に行なう演算システムに関する。
【背景技術】
【０００２】
近年、携帯端末機器などの普及に伴い、音声や画像といった大量のデータを高速に処理するデジタル信号処理の重要性が高まってきている。一般に、デジタル信号処理には専用の半導体であるＤＳＰ（Digital Signal Processor）が用いられることが多い。しかしながら、処理対象のデータが非常に多い場合には、専用ＤＳＰを用いても性能を飛躍的に向上させることは難しい。
【０００３】
たとえば、演算対象のデータが１万組ある場合には、１つ１つのデータに対する演算を１マシンサイクルで実行できたとしても、全てのデータを演算するためには最低でも１万サイクルを要することになる。すなわち、１つ１つのデータ処理は高速に行なえるが、それが直列であるためデータ量が多くなるとそれに比例して処理時間も大きくなる。
【０００４】
処理対象のデータが多い場合には、並列演算によって性能を向上させることが可能である。すなわち、演算器を複数個用意し、それらを同時に動作させることによって複数のデータ処理を同時に行なうことができる。このとき、複数のデータに対して同じ演算を行なうのであれば、ＳＩＭＤ（Single Instruction stream Multiple Data stream）方式を採用することにより、高い並列性を保ったまま演算器の面積を削減することが可能である。すなわち、データ処理器を複数用意するが、命令を解釈して処理を制御する制御部を共通とすることにより、面積を小さくしつつも高い性能を発揮させている。
【０００５】
処理するデータが多い場合、算術演算の基本である加算をビットシリアルで行なった方が面積あたりの性能が上がる。たとえば、１ビット加算器３２個（以下、Ａとする。）と３２ビット加算器１個（以下、Ｂとする。）とを考える。これらＡおよびＢは、３２個の加算を行なうサイクル数は３２で同じである。しかし、１サイクル内で直列的に演算される長さは異なる。たとえば、Ｂを１ビット加算器の３２直列で実現した場合、ＡとＢとの面積は等しくなるが、演算時間はＢの方が３２倍長くなる。一方、Ｂをキャリールックアヘッドなどの高速演算器で実現した場合、Ｂの方が演算時間は短くなるが、面積はＡよりも大きくなる。したがって、Ａの方がＢよりも面積あたりの性能は高い。
【０００６】
また、乗算器の場合には、２次のブースのアルゴリズムを用いて２ビット処理を行なうと、１ビット処理に比べて部分積の加算の数を半分に減らすことができる。
【０００７】
このように、非常に多くの加算、乗算を行なう場合には、１ビットまたは２ビットのシリアル演算に基づくＳＩＭＤ方式により、面積あたりの性能を上げることが可能となる。また、この方式は、処理するデータのデータ幅が固定されないため、様々な用途に用いることができる。
【０００８】
これに関連する技術として、特開平１１−１８４７６１号公報、特開平１０−２１４２２１号公報および特開平９−５０３９８号公報に開示された発明がある。
【０００９】
特開平１１−１８４７６１号公報に開示されたリードモディファイライト制御システムにおいては、リードモディファイライトリクエストにより、それぞれバンク０メモリ〜バンク３メモリからデータを読出してマージし、書込むまでの間対象バンク以外のバンクをビジーにせずに、他のバンクに対するリクエストを処理できるようにしたものである。
【００１０】
特開平１０−２１４２２１号公報に開示されたメモリシステムにおいては、メモリ手段に少なくとも２つのメモリブロックを備え、メモリアクセス手段により、一方のメモリブロックで読出しを行なうときに他方のメモリブロックでは書込みを行ない、かつ各メモリブロックで書込みと読出しとを交互に行なうものである。なお、メモリアクセス手段は、外部データが入力される周期内に、少なくとも２つのデータをメモリ手段から演算手段に読出す。
【００１１】
特開平９−５０３９８号公報に開示された記憶装置は、書込みポートを複数個有する記憶装置であって、アドレスごとに、最後に書込みが行なわれたメモリ回路の情報を制御回路に記憶しておく。そして、読出し時には、読出しアドレス信号が示すアドレスに対応して制御回路が記憶している情報を選択信号として出力し、最後に書込まれたデータを選択して出力するものである。
【特許文献１】特開平１１−１８４７６１号公報
【特許文献２】特開平１０−２１４２２１号公報
【特許文献３】特開平０９−０５０３９８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
加算をビットシリアルで行なう場合、後述するようにメモリへのリードモディファイライト動作を頻繁に行なう必要がある。以下に、このリードモディファイライト動作を実現するための従来の方法について説明する。
【００１３】
第１の方法として、リードモディファイライト動作を行なうＳＲＡＭ（Static Random Access Memory）を新規に開発することが挙げられる。このようなＳＲＡＭを開発することによって、回路面積を小さくすることができるが、プロセスポータビリティが低くなるという問題がある。また、このようなＳＲＡＭは、各プロセスで標準的に開発されないため、プロセスが変わるたびに新規設計が必要となり、設計に時間がかかるといった問題もある。
【００１４】
第２の方法として、各プロセスで標準的に開発される同期ＳＲＡＭを用いることが挙げられる。この同期ＳＲＡＭに２倍速クロックを入力し、演算が１サイクル分実行される間に、リード動作とライト動作とを２サイクルにわたって実行する。各プロセスで標準的に開発される同期ＳＲＡＭを用いるため、新規にＳＲＡＭを開発する必要がなく、開発期間を短縮することが可能となる。しかしながら、演算の速度がＳＲＡＭのアクセス速度の１／２となってしまい、処理性能が低下するといった問題がある。
【００１５】
第３の方法として、デュアルポートＳＲＡＭを用いてリード動作とライト動作とを行なわせる方法を挙げることができる。開発対象のプロセスでデュアルポートＳＲＡＭが用意されていれば、開発期間を短縮することができる。このようなデュアルポートＳＲＡＭはＦＰＧＡ（Field Programmable Gate Array）でも標準搭載されている場合がある。しかしながら、回路面積が大きくなるといった問題がある。また、開発対象プロセスでデュアルポートＳＲＡＭが用意されていなければ新規開発が必要となり、設計に時間がかかるといった問題もある。
【００１６】
第４の方法として、ＦＦ（Flip Flop）回路によってリードモディファイライト動作を実現する方法が挙げられる。ＦＦ回路を用いることによって、論理合成や自動配置配線が行なえるため、開発期間を短縮することができ、性能も高く、高速動作が可能となる。ビットシリアル演算では性能、主に速度を優先して、ＦＦ回路で実現することが多い。アクセスするデータ幅が比較的小さい場合には、ＦＦ回路によって構成するのが有効であるが、データ幅が大きくなるにしたがって回路も大きくなるといった問題がある。
【００１７】
これらの問題は、上述した特許文献１〜３を用いてリードモディファイライト動作を実現したとしても解決することができない。
【００１８】
本発明は、上記問題点を解決するためになされたものであり、その目的は、リードモディファイライト動作を高速に行なうことが可能な演算システムを提供することである。
【課題を解決するための手段】
【００１９】
本発明のある局面に従えば、データを複数部分に分けて順番に演算を行なう演算システムであって、複数部分のデータの演算を行なう演算手段と、データの読出しと演算手段による演算結果の書込みとを同時に行なう、複数部分のデータのそれぞれに対応する記憶手段とを含み、記憶手段は、第１のデータの読出しと演算手段による第１の演算結果の書込みとを行なう第１のバンクメモリと、第１のバンクメモリが第１の演算結果の書込みを行なっているときに第２のデータの読出しを行ない、演算手段による第２の演算結果の書込みを行なう第２のバンクメモリと、第１のバンクメモリから読出された第１のデータと、第２のバンクメモリから読出された第２のデータとを演算手段に選択的に出力する選択手段とを含む。
【００２０】
好ましくは、第１のバンクメモリおよび第２のバンクメモリは、シングルポートスタティックランダムアクセスメモリによって構成される。
【００２１】
好ましくは、第１のバンクメモリおよび第２のバンクメモリは、デュアルポートスタティックランダムアクセスメモリによって構成される。
【００２２】
好ましくは、記憶手段はさらに、第１のバンクメモリまたは第２のバンクメモリに書込む演算結果を保持する保持手段と、第１のバンクメモリまたは第２のバンクメモリへの演算結果の書込み時におけるアドレスと、その次のデータ読出し時のアドレスとが一致するか否かを判定する判定手段とを含み、選択手段は、判定手段によってアドレスが一致すると判定された場合、保持手段に保持されるデータを演算手段に出力する。
【００２３】
好ましくは、記憶手段はさらに、第１のバンクメモリまたは第２のバンクメモリに書込む演算結果を保持する保持手段を含み、選択手段は、外部からアドレスが不変であることを示す信号がアサートされた場合、保持手段に保持されるデータを演算手段に出力する。
【００２４】
好ましくは、演算手段は、複数部分のデータのそれぞれの演算を行なう演算回路と、第１のバンクメモリまたは第２のバンクメモリに書込む演算結果を保持する保持手段と、第１のバンクメモリまたは第２のバンクメモリへの演算結果の書込み時におけるアドレスと、その次のデータ読出し時のアドレスとが一致するか否かを判定する判定手段と、判定手段による判定結果に応じて、記憶手段からの読出しデータと保持手段に保持されるデータとを演算回路に選択的に出力する選択手段とを含む。
【００２５】
好ましくは、演算手段は、複数部分のデータのそれぞれの演算を行なう演算回路と、第１のバンクメモリまたは第２のバンクメモリに書込む演算結果を保持する保持手段と、外部から入力されるアドレスが不変であることを示す信号に応じて、記憶手段からの読出しデータと保持手段に保持されるデータとを演算回路に選択的に出力する選択手段とを含む。
【００２６】
好ましくは、第１のバンクメモリおよび第２のバンクメモリは、演算手段による演算結果の書込み時におけるアドレスとして、直前のデータ読出し時のアドレスを使用する。
【発明の効果】
【００２７】
本発明のある局面によれば、第２のバンクメモリが、第１のバンクメモリが第１の演算結果の書込みを行なっているときに第２のデータの読出しを行なうので、リードモディファイライト動作を高速に行なうことが可能となる。
【００２８】
また、第１のバンクメモリおよび第２のバンクメモリが、シングルポートスタティックランダムアクセスメモリによって構成されるので、プロセスポータビリティを高くすることができ、開発時間を短縮することが可能となる。
【００２９】
また、第１のバンクメモリおよび第２のバンクメモリが、デュアルポートスタティックランダムアクセスメモリによって構成されるので、２チャンネルのリードモディファイライト動作を実現することが可能となる。
【００３０】
また、判定手段によってアドレスが一致すると判定された場合、選択手段が保持手段に保持されるデータを演算手段に出力するので、連続するアドレスに０、±１の制約がある演算回路に適用できる。
【００３１】
好ましくは、外部からアドレスが不変であることを示す信号がアサートされた場合、選択手段が保持手段に保持されるデータを演算手段に出力するので、連続するアドレスに０、±１の制約がある演算回路に適用できる。
【００３２】
また、選択手段が、判定手段による判定結果に応じて、記憶手段からの読出しデータと保持手段に保持されるデータとを演算回路に選択的に出力するので、連続するアドレスに０、±１の制約がある演算回路に適用できる。
【００３３】
また、選択手段が、外部から入力されるアドレスが不変であることを示す信号に応じて、記憶手段からの読出しデータと保持手段に保持されるデータとを演算回路に選択的に出力するので、連続するアドレスに０、±１の制約がある演算回路に適用できる。
【００３４】
また、第１のバンクメモリおよび第２のバンクメモリが、演算手段による演算結果の書込み時におけるアドレスとして、直前のデータ読出し時のアドレスを使用するので、アドレスバスを削減することが可能となる。
【発明を実施するための最良の形態】
【００３５】
図１は、ビットシリアル演算を説明するための図である。ビットシリアル演算は、下位側ビットから順に行なわれる。まず、メモリマットに格納されているデータａの下位ビットａ［０］がＡＬＵ（Arithmetic Logic Unit）に転送される。次に、データｂの下位ビットｂ［０］が同様にＡＬＵに転送される。ＡＬＵは、この２つの入力データを用いて加算演算を行なう。演算結果はｂ［１］に書込まれる。この処理がａ［１］およびｂ［１］に対しても行われる。加算演算においては桁上がりが生じる可能性があるため、この桁上がり値がｂ［２］に書込まれる。これによって、データａとデータｂとの加算が全てのエントリに対して完了し、演算結果がｂとして得られる。
【００３６】
図２は、ビットシリアル演算の動作を説明するためのタイミングチャートである。ある実行サイクルｋでメモリセルマットＡから演算対象データａ［ｉ］を読出し、次のサイクルｋ＋１で他方の演算対象データｂ［ｉ］を読出すと共にＡＬＵによって２つのデータの加算演算を行ない、演算結果をｂ［ｉ］に書戻す。このとき、桁上がりが発生すれば、上位の加算器（ＡＤＤ）にキャリー（Ｃａｒｒｙ）が出力される。
【００３７】
ｂ［ｉ］の操作に対して、読出しと書込みとが同じサイクルで行なわれる「リードモディファイライト動作」が可能となれば、ある１ビットの加算が２サイクルで可能となり、ｎビットの加算はキャリーの書込みを含めてｎ＋２サイクルで実行可能となる。このように、ビットシリアル演算を高速に行なうためには、メモリへのリードモディファイライト動作を頻繁に行なう必要がある。
【００３８】
（第１の実施の形態）
図３は、本発明の第１の実施の形態における演算システムの概略構成を示すブロック図である。この演算システムは、演算単位が１ビットのビットシリアル演算を行なうシステムを示しており、図２のメモリセルマットＢに相当している。演算システムは、ＡＬＵ１と、メモリ２とを含む。また、メモリ２は、バンク０のＳＲＡＭ２１と、バンク１のＳＲＡＭ２２と、セレクタ２３とを含む。
【００３９】
アドレスの下位１ビットが“０”のときに、バンク０のＳＲＡＭ２１はリード動作を行ない、バンク１のＳＲＡＭ２２はライト動作を行なう。また、アドレスの下位１ビットが“１”のときに、バンク０のＳＲＡＭ２１はライト動作を行ない、バンク１のＳＲＡＭ２２はリード動作を行なう。
【００４０】
セレクタ２３は、アドレスの下位１ビットが“０”のときに、バンク０のＳＲＡＭ２１からの読出しデータを選択してＡＬＵ１に出力し、アドレスの下位１ビットが“１”のときに、バンク１のＳＲＡＭ２２からの読出しデータを選択してＡＬＵ１に出力する。
【００４１】
この演算システムは、ビットシリアル演算などのように、連続するアドレスに±１の制約がある演算回路に適用される。
【００４２】
図４は、本発明の第１の実施の形態における演算システムの動作を説明するためのタイミングチャートである。サイクルＴ０において、バンク０のＳＲＡＭ２１からの読出し動作（リード［０］）が行なわれ、セレクタ２３はこのバンク０のＳＲＡＭ２１からの読出しデータを選択してＡＬＵ１に出力する。
【００４３】
サイクルＴ１において、ＡＬＵ１はサイクルＴ０の読出しデータと、図示しないメモリ（図２に示すメモリセルマットＡに対応するメモリ）から読出された他方の演算対象データとの演算（演算［０］）を行なうと共に、その演算結果をバンク０のＳＲＡＭ２１に書込む（ライト［０］）。このサイクルＴ１においては、バンク１のＳＲＡＭ２２からの読出し動作（リード［１］）が行なわれ、セレクタ２３はこのバンク１のＳＲＡＭ２２からの読出しデータを選択してＡＬＵ１に出力する。
【００４４】
サイクルＴ２において、ＡＬＵ１はサイクルＴ１の読出しデータと、他方の演算対象データとの演算（演算［１］）を行なうと共に、その演算結果をバンク１のＳＲＡＭ２２に書込む（ライト［１］）。このサイクルＴ２においては、バンク０のＳＲＡＭ２２からの読出し動作（リード［２］）が行なわれ、セレクタ２３はこのバンク０のＳＲＡＭ２１からの読出しデータを選択してＡＬＵ１に出力する。
【００４５】
以降、同様の処理が行なわれ、一方のバンクからの読出し動作を行なっているときに、他方のバンクへの演算結果の書込み動作が行なわれる。なお、本実施の形態においては、読出し時のアドレスと書込み時のアドレスとを別々に生成してＳＲＡＭに与えているが、読出し時のアドレスを次のサイクルの書込み時のアドレスに用いるようにしてもよい。このようにすることで、アドレスバスを削減することが可能となる。
【００４６】
また、本実施の形態においてはシングルポートＳＲＡＭを用いる場合について説明したが、それぞれのシングルポートＳＲＡＭをデュアルポートＳＲＡＭに置換えることも可能である。このようにすることで、２チャンネルのリードモディファイライト動作を実現することが可能となる。
【００４７】
以上説明したように、本実施の形態における演算システムによれば、アドレスの下位１ビットに応じて、一方のバンクからの読出し動作を行なうと共に、他方のバンクへの演算結果の書込み動作を行なうようにしたので、連続するアドレスに±１の制約がある演算回路に適用できる。また、同一バンクに対して連続アクセスが起こらないため、インタリーブアクセスが行なえ、高スループットの演算が可能となった。
【００４８】
また、各プロセスで標準的に開発・準備されるシングルポートＳＲＡＭを用いるので、プロセスポータビリティを高くすることができ、開発時間を短縮することができると共に、回路の面積を小さくすることが可能となった。また、演算器の処理速度をＳＲＡＭの最大動作周波数まで上げることが可能となった。
【００４９】
（第２の実施の形態）
図５は、本発明の第２の実施の形態における演算システムの概略構成を示すブロック図である。この演算システムは、演算単位が１ビットの演算を行なうシステムを示しており、ＡＬＵ１と、メモリ２とを含む。また、メモリ２は、バンク０のＳＲＡＭ２１と、バンク１のＳＲＡＭ２２と、セレクタ２３と、ＦＦ２４および２５と、コンパレータ２６とを含む。
【００５０】
ＦＦ２４は、ＡＬＵ１がＳＲＡＭ２１または２２にデータを書込むときに、そのデータを保持する。ＦＦ２５は、書込み動作時のアドレスを保持する。コンパレータ２６は、ＦＦ２５に保持されるアドレスと、次のサイクルのリード動作時のアドレスとを比較し、一致する場合には一致検出信号をセレクタ２３に出力する。
【００５１】
セレクタ２３は、コンパレータ２６から一致検出信号が出力されている場合には、ＦＦ２４からのデータを選択してＡＬＵ１に出力する。
【００５２】
また、セレクタ２３は、コンパレータ２６から一致検出信号が出力されていない場合には、アドレスの下位１ビットが“０”のときに、バンク０のＳＲＡＭ２１からの読出しデータを選択してＡＬＵ１に出力し、アドレスの下位１ビットが“１”のときに、バンク１のＳＲＡＭ２２からの読出しデータを選択してＡＬＵ１に出力する。
【００５３】
この演算システムは、連続するアドレスに０、±１の制約がある演算回路に適用される。書込み動作の次の読出し動作時のアドレスが、書込み動作時のアドレスと同じ場合には、ＳＲＡＭからデータを読出したのでは古いデータを読出すことになるので、最新のデータで更新されているＦＦ２４からのデータを用いている。
【００５４】
以上説明したように、本実施の形態における演算システムによれば、連続するアドレスが同じ場合には、ＦＦ２４に保持されるデータをＡＬＵ１に出力するようにしたので、実施の形態１において説明した効果に加えて、連続するアドレスに０、±１の制約がある演算回路に適用することが可能となった。
【００５５】
（第３の実施の形態）
図６は、本発明の第３の実施の形態における演算システムの概略構成を示すブロック図である。この演算システムは、演算単位が１ビットの演算を行なうシステムを示しており、ＡＬＵ１と、メモリ２とを含む。メモリ２は、図示しない制御回路からのアドレス遷移状態線が接続される。また、メモリ２は、バンク０のＳＲＡＭ２１と、バンク１のＳＲＡＭ２２と、セレクタ２３と、ＦＦ２４とを含む。
【００５６】
ＦＦ２４は、ＡＬＵ１がＳＲＡＭ２１または２２にデータを書込むときに、そのデータを保持する。
【００５７】
アドレス遷移状態線は、アドレスのインクリメントを示す「アドレス＋１変化」信号と、アドレスのデクリメントを示す「アドレス−１変化」信号と、アドレスが変化しないことを示す「アドレス不変」信号とを含む。
【００５８】
セレクタ２３は、「アドレス＋１変化」信号がアサートされている場合、または「アドレス−１変化」信号がアサートされている場合には、第１の実施の形態において説明した動作と同様の動作を行なう。
【００５９】
また、セレクタ２３は、「アドレス不変」信号がアサートされている場合には、ＦＦ２４からのデータを選択してＡＬＵ１に出力する。
【００６０】
この演算システムは、連続するアドレスに０、±１の制約がある演算回路に適用される。書込み動作の次の読出し動作時のアドレスが、書込み動作時のアドレスと同じ場合には、ＳＲＡＭからデータを読出したのでは古いデータを読出すことになるので、最新のデータで更新されているＦＦ２４からのデータを用いている。
【００６１】
以上説明したように、本実施の形態における演算システムによれば、図示しない制御回路からの「アドレス不変」信号がアサートされている場合には、ＦＦ２４に保持されるデータをＡＬＵ１に出力するようにしたので、実施の形態１において説明した効果に加えて、連続するアドレスに０、±１の制約がある演算回路に適用することが可能となった。
【００６２】
（第４の実施の形態）
図７は、本発明の第４の実施の形態における演算システムの概略構成を示すブロック図である。この演算システムは、演算単位が１ビットの演算を行なうシステムを示しており、ＡＬＵ１と、メモリ２とを含む。また、ＡＬＵ１は、セレクタ１１と、ＦＦ１２および１３と、コンパレータ１４とを含む。なお、メモリ２は、図３に示す第１の実施の形態におけるメモリと同様である。
【００６３】
ＦＦ１２は、ＡＬＵ１がＳＲＡＭ２１または２２にデータを書込むときに、そのデータを保持する。ＦＦ１３は、書込み動作時のアドレスを保持する。コンパレータ１４は、ＦＦ１３に保持されるアドレスと、次のサイクルのリード動作時のアドレスとを比較し、一致する場合には一致検出信号をセレクタ１１に出力する。なお、演算回路が図２に示すような加算器（ＡＤＤ）の場合には、セレクタ１１の出力およびＦＦ１２の入力は加算器（ＡＤＤ）に接続される。
【００６４】
セレクタ１１は、コンパレータ１４から一致検出信号が出力されている場合には、ＦＦ１２からのデータを選択して出力する。また、セレクタ１１は、コンパレータ１４から一致検出信号が出力されていない場合には、メモリ２からのデータを選択して出力する。
【００６５】
この演算システムは、連続するアドレスに０、±１の制約がある演算回路に適用される。書込み動作の次の読出し動作時のアドレスが、書込み動作時のアドレスと同じ場合には、ＳＲＡＭからデータを読出したのでは古いデータを読出すことになるので、最新のデータで更新されているＦＦ１２からのデータを用いている。
【００６６】
以上説明したように、本実施の形態における演算システムによれば、連続するアドレスが同じ場合には、ＦＦ１２に保持されるデータを内部の演算回路に出力するようにしたので、実施の形態１において説明した効果に加えて、連続するアドレスに０、±１の制約がある演算回路に適用することが可能となった。
【００６７】
（第５の実施の形態）
図８は、本発明の第５の実施の形態における演算システムの概略構成を示すブロック図である。この演算システムは、演算単位が１ビットの演算を行なうシステムを示しており、ＡＬＵ１と、メモリ２とを含む。ＡＬＵ１は、図示しない制御回路からのアドレス遷移状態線が接続される。また、ＡＬＵ１は、セレクタ１１と、ＦＦ１２とを含む。なお、メモリ２は、図３に示す第１の実施の形態におけるメモリと同様である。
【００６８】
ＦＦ１２は、ＡＬＵ１がＳＲＡＭ２１または２２にデータを書込むときに、そのデータを保持する。
【００６９】
アドレス遷移状態線は、アドレスのインクリメントを示す「アドレス＋１変化」信号と、アドレスのデクリメントを示す「アドレス−１変化」信号と、アドレスが変化しないことを示す「アドレス不変」信号とを含む。
【００７０】
セレクタ１１は、「アドレス＋１変化」信号がアサートされている場合、または「アドレス−１変化」信号がアサートされている場合には、メモリ２からのデータを選択して出力する。
【００７１】
また、セレクタ１１は、「アドレス不変」信号がアサートされている場合には、ＦＦ１２からのデータを選択して出力する。なお、演算回路が図２に示すような加算器（ＡＤＤ）の場合には、セレクタ１１の出力およびＦＦ１２の入力は加算器（ＡＤＤ）に接続される。
【００７２】
この演算システムは、連続するアドレスに０、±１の制約がある演算回路に適用される。書込み動作の次の読出し動作時のアドレスが、書込み動作時のアドレスと同じ場合には、ＳＲＡＭからデータを読出したのでは古いデータを読出すことになるので、最新のデータで更新されているＦＦ１２からのデータを用いている。
【００７３】
以上説明したように、本実施の形態における演算システムによれば、図示しない制御回路からの「アドレス不変」信号がアサートされている場合には、ＦＦ１２に保持されるデータを内部の演算回路に出力するようにしたので、実施の形態１において説明した効果に加えて、連続するアドレスに０、±１の制約がある演算回路に適用することが可能となった。
【００７４】
（第６の実施の形態）
図９は、本発明の第６の実施の形態における演算システムの概略構成を示すブロック図である。この演算システムは、演算単位が２ビットの演算も行なえるシステムを示しており、図２のメモリセルマットＢに相当している。演算システムは、ＡＬＵ１と、メモリ２とを含む。また、メモリ２は、バンク０のＳＲＡＭ２１と、バンク１のＳＲＡＭ２２と、バンク２のＳＲＡＭ２７と、バンク３のＳＲＡＭ２８と、セレクタ２３とを含む。
【００７５】
アドレスの下位２ビットが“００”のときに、バンク０のＳＲＡＭ２１はリード動作を行ない、バンク３のＳＲＡＭ２８はライト動作を行なう。また、アドレスの下位２ビットが“０１”のときに、バンク０のＳＲＡＭ２１はライト動作を行ない、バンク１のＳＲＡＭ２２はリード動作を行なう。また、アドレスの下位２ビットが“１０”のときに、バンク１のＳＲＡＭ２２はライト動作を行ない、バンク２のＳＲＡＭ２７はリード動作を行なう。また、アドレスの下位２ビットが“１１”のときに、バンク２のＳＲＡＭ２７はライト動作を行ない、バンク３のＳＲＡＭ２８はリード動作を行なう。
【００７６】
セレクタ２３は、アドレスの下位２ビットが“００”のときに、バンク０のＳＲＡＭ２１からの読出しデータを選択してＡＬＵ１に出力し、アドレスの下位２ビットが“０１”のときに、バンク１のＳＲＡＭ２２からの読出しデータを選択してＡＬＵ１に出力し、アドレスの下位２ビットが“１０”のときに、バンク２のＳＲＡＭ２７からの読出しデータを選択してＡＬＵ１に出力し、アドレスの下位２ビットが“１１”のときに、バンク３のＳＲＡＭ２８からの読出しデータを選択してＡＬＵ１に出力する。
【００７７】
この演算システムは、連続するアドレスに±１、±２の制約がある演算回路に適用される。
【００７８】
図１０は、本発明の第６の実施の形態における演算システムの動作を説明するためのタイミングチャートである。サイクルＴ０において、バンク０のＳＲＡＭ２１からの読出し動作（リード［０］）が行なわれ、セレクタ２３はこのバンク０のＳＲＡＭ２１からの読出しデータを選択してＡＬＵ１に出力する。
【００７９】
サイクルＴ１において、ＡＬＵ１はサイクルＴ０の読出しデータと、図示しないメモリ（図２に示すメモリセルマットＡに対応するメモリ）から読出された他方の演算対象データとの演算（演算［０］）を行なうと共に、その演算結果をバンク０のＳＲＡＭ２１に書込む（ライト［０］）。このサイクルＴ１においては、バンク１のＳＲＡＭ２２からの読出し動作（リード［１］）が行なわれ、セレクタ２３はこのバンク１のＳＲＡＭ２２からの読出しデータを選択してＡＬＵ１に出力する。
【００８０】
サイクルＴ２において、ＡＬＵ１はサイクルＴ１の読出しデータと、他方の演算対象データとの演算（演算［１］）を行なうと共に、その演算結果をバンク１のＳＲＡＭ２２に書込む（ライト［１］）。このサイクルＴ２においては、バンク２のＳＲＡＭ２７からの読出し動作（リード［２］）が行なわれ、セレクタ２３はこのバンク２のＳＲＡＭ２７からの読出しデータを選択してＡＬＵ１に出力する。
【００８１】
サイクルＴ３において、ＡＬＵ１はサイクルＴ２の読出しデータと、他方の演算対象データとの演算（演算［２］）を行なうと共に、その演算結果をバンク２のＳＲＡＭ２７に書込む（ライト［２］）。このサイクルＴ３においては、バンク３のＳＲＡＭ２８からの読出し動作（リード［３］）が行なわれ、セレクタ２３はこのバンク３のＳＲＡＭ２８からの読出しデータを選択してＡＬＵ１に出力する。
【００８２】
以降、同様の処理が行なわれ、１つのバンクからの読出し動作を行なっているときに、他のバンクへの演算結果の書込み動作が行なわれる。
【００８３】
以上説明したように、本実施の形態における演算システムによれば、アドレスの下位２ビットに応じて、１つのバンクからの読出し動作を行なうと共に、他のバンクへの演算結果の書込み動作を行なうようにしたので、連続するアドレスに±１、±２の制約がある演算回路に適用できる。また、同一バンクに対して連続アクセスが起こらないため、インタリーブアクセスが行なえ、高スループットの演算が可能となった。
【００８４】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【００８５】
【図１】ビットシリアル演算を説明するための図である。
【図２】ビットシリアル演算の動作を説明するためのタイミングチャートである。
【図３】本発明の第１の実施の形態における演算システムの概略構成を示すブロック図である。
【図４】本発明の第１の実施の形態における演算システムの動作を説明するためのタイミングチャートである。
【図５】本発明の第２の実施の形態における演算システムの概略構成を示すブロック図である。
【図６】本発明の第３の実施の形態における演算システムの概略構成を示すブロック図である。
【図７】本発明の第４の実施の形態における演算システムの概略構成を示すブロック図である。
【図８】本発明の第５の実施の形態における演算システムの概略構成を示すブロック図である。
【図９】本発明の第６の実施の形態における演算システムの概略構成を示すブロック図である。
【図１０】本発明の第６の実施の形態における演算システムの動作を説明するためのタイミングチャートである。
【符号の説明】
【００８６】
１  ＡＬＵ、２  メモリ、１１，２３  セレクタ、１２，１３，２４，２５  ＦＦ、１４，２６  コンパレータ、２１，２２，２７，２８  ＳＲＡＭ。
【図１】
2006293538.tif 000003
【図２】
2006293538.tif 000004
【図３】
2006293538.tif 000005
【図４】
2006293538.tif 000006
【図５】
2006293538.tif 000007
【図６】
2006293538.tif 000008
【図７】
2006293538.tif 000009
【図８】
2006293538.tif 000010
【図９】
2006293538.tif 000011
【図１０】
2006293538.tif 000012