(57)【要約】【課題】パイプライン処理は、多数の演算器が同時に演算を遂行することから、スループットが高いという長所を有する反面、多数の演算器が必要で演算回路が大規模になり、その適用範囲が制約されるという問題があった。【解決手段】この問題は、一連の演算処理を複数の演算論理ブロックに分割し、それぞれの演算処理を順次実行することで解決される。この処理を効率的に行うため、演算処理を規定するRAMおよび、演算処理に関わるデータを記録するRAMの読み書きをコンピュータシステムがもつ標準メモリパス経由で行うデバイス構造とした。また、PLD内部にバスを制御する機能を含めること、演算処理を規定するRAMを複数個設けて演算処理とRAMへの書き込みを同時に行うことなどをあわせて行い、演算処理に必要な時間を短縮している。【選択図】図１
2015091045.tif 000002
【特許請求の範囲】
【請求項１】
プログラマブルロジックデバイス（以下PLDと記す）であって、標準メモリバスを介して読み書き可能なランダムアクセスメモリ（以下RAMと記す）を含むこと、該RAMは少なくとも二つの領域を含んでおり、その第一の領域の記憶内容が該PLDの機能動作を規定すること、第二の領域には該PLDで行われる演算処理の入出力データが格納されることを特徴とするPLD。
【請求項２】
請求項１記載のPLDであって、前記RAMの第一の領域は複数の部分領域からなり、これら部分領域の一つを選択する手段を有すること、および当該選択された部分領域の記録内容が前記PLDの機能を規定することを特徴とするPLD。
【請求項３】
請求項1もしくは請求項2記載のPLDであって、前記RAMとPLD外部のデバイスの間のデータ転送を制御する標準メモリバス制御手段を有することを特徴とするPLD。
【請求項４】
請求項1ないし請求項3記載のPLDを含むコンピュータであって、前記RAMは該コンピュータ主記憶のアドレス空間に割り当てられていることを特徴とするコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高速演算装置に好適なプログラマブルロジックデバイス（以下、PLDと記す）、およびこれを用いたコンピュータに関する。より詳しくは、大規模数値演算を複数の工程に分割してパイプライン処理する装置に好適なPLDに関わる。
【背景技術】
【０００２】
PLDは、論理演算機能を有する集積回路の一種であるが、内部に設けられた記憶手段（RAM）の内容によりその機能を任意に設定可能という特徴をもつ。近年では半導体技術の進展により大規模なPLDも製造されるようになった。これら大規模なPLDは、一般にFPGA（Field Programable Gate Array）と呼ばれる形式を採用している。FPGAの具体的な技術は、特許文献1、特許文献２などに述べられている。以下では、FPGAも含めた意味でPLDという呼称を用いる。
【０００３】
今日数値演算に一般に用いられるデジタルコンピュータは、中央演算制御装置（以下CPUと記す）が順次演算命令を読み込みこれを実行することで演算が遂行される。パイプライン演算処理装置は、CPUとは異なり、レジスタを介して接続された多数の演算器で構成され、これらが同時に演算処理を行うことから、非特許文献１に紹介されているように高いスループットが得られるという特徴がある。パイプライン演算処理装置は、PLDを用いて比較的容易に構成することができる。たとえば非特許文献2には、PLDを用いてパイプライン演算を行う演算論理を構成する手法が述べられている。
【０００４】
パイプライン処理には、一連の演算に使用される全ての演算器を個別に備えることから、演算回路が大規模になるという欠点がある。今日利用されているデジタルコンピュータは複雑な問題も処理可能だが、パイプライン処理はハードウエアの制約により、一定数以上の演算が含まれる複雑な問題には適用できない。この問題は、一連の演算処理を複数の演算工程に分割し、これらの工程を順次実行することで解決される。PLDの動作はRAMの内容によって規定されるので、演算の各工程を実現する演算論理を規定するようにこのRAMを順次書き換えることで、複数の演算工程を順次処理することが可能である。各工程で演算論理に入出力されるデータはPLD内部に設けたデータ用のRAMに格納し、演算処理工程の切り替えに際しては前段での演算結果を後段の入力データとして用いることで、演算工程間でのデータの受け渡しも効率的に行うことができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許US 4,870,302(1984)
【特許文献２】米国特許US 4,642,487(1987)
【非特許文献】
【０００６】
【非特許文献１】杉本大一郎著「手作りスーパーコンピュータへの挑戦」講談社ブルーバックスB956(1993)
【非特許文献２】ISPJ Symposium Series Vol.2010 No.7 p3-8(2010)
【非特許文献３】ALTERA Application Note 328 2006年5月 ver. 3.1(http://www.altera.co.jp/literature/an/an328_j.pdf)
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、現在使用されているPLDは、あらかじめ定められた処理のみを行うことを念頭に構成されており、動作を規定するRAMへのデータ転送は電源投入時等のリセット動作の際にただ一回だけ行うことを想定している。最近では、ダイナミックコンフィギュレーションと呼ばれる動作中の機能切り替え技術も提案されているが、一部の論理を書き換えることによる機能の調整を目的としており、工程切り替えに伴う論理書き換えが頻繁に発生する複雑な演算をパイプライン処理する目的には適さない。
【課題を解決するための手段】
【０００８】
本発明はかかる事情に鑑みてなされたものであって、PLDの機能動作を規定するRAMおよびPLDで行われる演算処理の入出力データを格納するRAMの双方を標準メモリバスに接続することを旨とする。このPLDを使用するコンピュータは、これらのRAM領域を主記憶装置のアドレス空間に割り当て、主記憶装置を構成する一般的なメモリーデバイスと同様にPLDを取り扱う。
【０００９】
パイプライン処理は、同じ演算処理を繰り返し行う目的には適するが、周辺機器とのデータのやり取りなどの単発的な処理には適しておらず、通常はこれらを受け持つCPU処理と組み合わせて使用される。CPUの動作を規定する実行プログラムは主記憶装置の所定の領域（コード領域）に置かれ、プログラムに使用するデータや演算結果は主記憶装置の別の領域（データ領域）に置かれる。本発明になるPLDであれば、その動作を規定するRAMや入出力データを格納するためのRAMもCPUからは主記憶装置の一部とみなされ、前者はCPU処理のためのコード領域と同様に扱われ、後者は同じくデータ領域と同様に扱われる。
【００１０】
PLD内部のRAMとメモリバスに接続されたその他のデバイス間でデータを高速に転送するためには、PLDの内部にバスを制御する手段を設けることが好ましい。この手段は通常はCPUがもつバスの制御権を一時的に獲得して自らをバスマスタとして動作し、PLD内部のRAM領域と主記憶の他の領域との間のデータ転送を高速で行う。
【００１１】
PLDの動作を規定するRAMに関しては、PLDがある工程の演算処理を行っている間に次の工程でのPLD動作を規定するデータを読み込ませておくことが好ましく、このためにRAMには複数の要素領域を設ける。それぞれの要素領域はPLDの動作を規定するに十分な容量を持ち、いずれの要素領域がPLDの動作を規定するかは制御信号によって瞬時に切り替えられるようにする。この構成により、いずれか一つの要素領域に格納されたデータがPLDの動作を規定してパイプライン演算処理を行っている間に、他の要素領域のデータを書き換えることが可能となり、パイプライン処理を複数の工程に分割して処理する際の工程切り替えに要する時間が短縮される。
【発明の効果】
【００１２】
本発明のPLDは、動作を規定するRAMおよび演算結果などを格納するRAMに対するデータを高速かつ簡単に転送することが可能であり、特にPLDを用いて大規模なパイプライン演算処理を分割実行するためのデバイスに好適である。また、このようなデバイスを用いて構成されたコンピュータは、行列演算などの繰り返し計算が多い演算処理を高速に実行することが可能であり、特に科学技術計算の分野で高い効果を有する。
【図面の簡単な説明】
【００１３】
【図１】は本発明の第一の実施例を示すブロック図である。
【図２】は本発明の第二の実施例を説明するブロック図である。
【発明を実施するための形態】
【００１４】
PLDには、その動作を規定するデータを格納するRAMと、演算に使用されるデータを格納するためのRAMが備わっている。本発明はこれら双方RAMを標準メモリバスに接続したことを特徴とする。標準メモリバスとはコンピュータの主記憶とCPUを接続するバスであり、半導体メモリの互換性を保証するために標準規格が定められており、現時点ではJEDEC半導体技術協会が規定するDDR2規格が代表的である。DDR2インターフェースをPLD内部に実装する方法に関しては、たとえば非特許文献3に開示されている。
【００１５】
本発明のもう一つの要素は複雑な演算処理を複数の工程に分割してパイプライン処理する際に効果的な高速化を実現するものである。その一つは、PLD内部にメモリバスを制御する機能を設けることであり、こうすることでCPUを介さずに、PLD内部のRAMと標準データバスに接続されたデバイス間でのデータ転送がダイレクトに行われ、データ転送時間を短縮することができる。第二には、PLDの動作を規定するRAM領域を複数設けることにより、パイプライン演算処理とデータ転送を並行して行うことを可能とし、演算処理を複数の工程に分割して実行する際の演算所要時間を短縮する。
【実施例】
【００１６】
以下、図1にしたがって本発明になるPLDの構成とその利用形態について説明する。一般的にPLDは、任意の論理回路を形成可能な論理エレメントの集合体(1)およびこの動作を規定するRAM(2)から構成され、一般のPLDにあっても多くの場合はデータを格納するRAM(3)がこれに付随する。ここで、論理エレメント(1)とRAM(2)は、ハードウエアとしては一体に形成されているが、図1においては説明を容易にするためこれらを分離して表示している。
【００１７】
図1においては、PLDの機能を規定するRAM(2a)、(2b)および演算データを格納するRAM(3a)、(3b)は標準メモリバスインターフェース(6)を介して標準メモリバス(7)に接続され、通常はCPUの制御下でその内容を読み書き可能に構成される。図1ではRAM(2a)がPLDの機能を規定した状態を示しているが、RAMのいずれの要素領域がPLDの機能を規定するかは、制御装置(4)からの信号に従う。演算データを格納するRAMは、図1では演算論理にデータを与える(3a)および演算結果を格納する(3b)の二つのみを示しているが、実際には多数（たとえば8ないし16）のRAMが配設されており、制御装置(4)が、これらのいずれを入出力に用いるかを指定する。これらのRAMは標準メモリバス(7)からインターフェース(6)を介して直接読み書きされるほか、標準バス制御手段(5)により読み書き可能に構成され、これを用いることで大量のデータが高速で読み書きされる。標準バス制御手段(5)も制御装置(4)によって制御される。制御装置(4)は、標準メモリバス(7)および標準メモリバスインターフェース(6)を介して内部レジスタに値を書き込むことにより、外部からその動作が制御される。
【００１８】
RAM(2a)に所定の値を書き込み論理エレメントの機能が設定された後、CPUはメモリバスを介して制御装置(4)に演算の実行を指示する。制御装置(4)はRAM(3b)のアドレスを初期化した後、論理エレメントの集合体(1)にクロック信号を送出する。論理エレメントの集合体(1)はRAM(3b)から送られる値に対して所定の演算処理を行う。図中に破線で表示した中抜き矢印は、この演算処理に伴うデータの流れを概念的に示している。また、クロック信号を送出するごとにRAM(3b)のアドレスはインクリメントされる。
【００１９】
PLDの論理演算を遂行する各論理エレメントはレジスタを介して接続されており、入力された値に対応する演算結果が出力されるまでの間には、信号が経由するレジスタの段数と同じ数のクロック周期に相当する遅延が生じる。制御装置(4)は、この遅延時間経過後より演算結果のRAM(3a)への書き込みを行い、以後クロックごとに書き込みアドレスを順次増加させて書き込みを繰り返し行う。所定の数（処理すべきデータの数と遅延時間の和）のクロックパルスが送出された後にはRAM(3a)には全ての結果が格納されている。この時点で制御装置(4)はPLDの機能を規定するRAMを(2b)に切り替えて論理エレメントの集合体(1)を次の処理を行う演算論理に設定し、データの送出をRAM(3a)に切り替え、演算結果の格納をRAM(3b)に切り替える。また、演算動作を行っている間に、RAM(2a)にその次に処理すべき演算論理に論理エレメントの集合体を規定するためのデータを書き込む。この動作を繰り返すことにより、複雑な演算も効率的にパイプライン処理することが可能となる。
【００２０】
図2は本発明になるPLDの第二の構成例を示すもので、演算を行う論理エレメントの集合体(1)およびその機能を規定するRAM(2a)および(2b)を、各々8つのブロックに分けた例を示している。ここで、論理エレメントの集合体の第一のブロック(1a)には演算の開始直後の処理を遂行する演算論理回路を組み込み、以下、演算の進行に従ってブロック(1b)、 (1c)……(1h)に組み込まれた論理が演算処理を遂行するようにする。それぞれのブロック部分の機能を規定するデータはRAM(2a)の異なるブロックに格納され（図には前半部分の対応関係のみを示している）、ブロック単位でRAM(2a)およびRAM(2b)の切り替えを可能とするよう、制御手段(4)は各ブロックに独立したRAM切り替え信号を与える。パイプライン処理はクロック信号が印加されるごとにレジスタ一段ずつ信号が進むため、このような構成であれば、早い段階で論理エレメントのブロック(1a)部分の処理が完了し、この部分の演算処理論理は次のステップの演算処理を行うものに切り替えることが可能となる。次のステップで使用される入力データは演算結果を記録しているRAM(3a)の先頭部分に格納されている。この時点でRAM(3a)は後半の演算結果の書き込みを行っているが、RAM(3a)を書き込みと読み出しを同時に行うことができるデュアルポート構成としておけば、演算結果の書き込みと同時に次のステップの演算に使用するデータを読み出すことも可能である。この例に示した構成の利点は、それぞれの演算行程が完全に完了する前に次の演算工程を開始できる点であり、特に各演算のレジスタ段数が多い場合に処理時間が短縮される点である。
【産業上の利用可能性】
【００２１】
以上詳細に説明したように、本発明になるPLDを用いたパイプライン演算処理方式を用いれば、高速なパイプライン処理を複雑な演算処理にも応用することが可能となり、繰り返し演算が多い行列演算などの演算業務を高速に遂行することができる。このような演算業務は今日、構造解析や流体解析の分野で幅広く行われており、しかもこれらの演算処理時間の短縮は強く求められている。本発明になるPLDおよびこれを用いたコンピュータは、このような分野で広く利用することが可能であり、学術研究、設計開発などの分野に資するところ大である。
【符号の説明】
【００２２】
(1)は演算を行う論理エレメントの集合体である。
(1a)、(1b)、(1c)、(1d)、(1e)、(1f)、(1g)、(1h)は(1)を構成するブロックである。
(2a)および(2b)は演算論理を規定するRAMである。
(3a)および(3b)は演算に使用するデータおよび演算結果を格納するためのRAMである。
(4)は制御手段である。
(5)はメモリバスの制御権を一時的に獲得してデータ転送を制御する行うバス制御手段である。
(6)はメモリバスインターフェースである。
(7)はメモリバスである。
【図１】
2015091045.tif 000003
【図２】
2015091045.tif 000004