(57)【要約】【課題】本発明は、大規模な計算を高速に処理可能な面計算機を得ることを目的とする。【解決手段】本発明に係る面計算機は、ＡＳＩＣ−ＤＲＡＭ１を利用し、演算ブロックと記憶ブロックとを巨大なバス幅のデータバスで接続し、計算対象として面領域データを取り扱う。面領域データは、面領域として特定され転送・演算される。面計算機の演算ブロックは、アドレスジェネレータ３と並列計算機４とを有して、面領域データを調整したのち、並列演算を行う。面領域データを特定するため、言語体系も異なっており、命令ワードのオペランドは２次元に広がる面領域を特定している。【選択図】  図１
2004171590.tif 000002
【特許請求の範囲】
【請求項１】
計算対象データの集合を面領域によって特定して、面領域データとして取り扱う手段と、
少なくとも２つ以上の前記面領域データを、命令に従って演算する演算手段とを備えた計算機。
【請求項２】
請求項１に記載の計算機に於いて、更に、
命令ワードのオペランドによって特定される計算すべき一対の面領域が不整合な場合、前記演算前に相互の面領域のサイズを関連づけ可能な状態にする手段を備える、計算機。
【請求項３】
請求項２に記載の計算機に於いて、
前記相互の面領域のサイズを関連づけ可能な状態にする手段は、第１の面領域に関連して、第２の面領域を拡大又は縮小処理を施す、計算機。
【請求項４】
請求項２に記載の計算機に於いて、
前記相互の面領域のサイズが関連づけ可能な状態にする手段は、３つ以上の前記面領域データを演算する場合は、第１の面領域に関連して、第２以降の面領域を拡大又は縮小処理する、計算機。
【請求項５】
請求項３又は４に記載の計算機に於いて、
前記第１の面領域は、ディスティネーションオペランドによって特定される面領域である、計算機。
【請求項６】
請求項３又は４に記載の計算機に於いて、
前記相互の面領域のサイズが関連づけ可能な状態にする手段は、前記第１の面領域に一致させるため、又は前記第１の面領域の所定のスケール比に一致させるため、第２以降の面領域をそれぞれ拡大又は縮小処理する、計算機。
【請求項７】
請求項３又は４に記載の計算機に於いて、
前記面領域の拡大又は縮小処理は、コピー処理又は内挿装補間処理を実行して、対応するアドレスにデータを生成する、計算機。
【請求項８】
請求項７に記載の計算機に於いて、
前記内挿補間処理は、バイリニア処理、トライリニア処理、マスク処理、ポイントサンプリング処理及びパターンマッチング処理のいずれかである、計算機。
【請求項９】
少なくとも、前処理装置、アドレス生成装置、並列処理装置及び記憶装置を備えた計算機に於いて、
前記前処理装置は、前記記憶装置に蓄積された計算対象データの集合を面領域によって特定して面領域データとして取り扱い、
前記アドレス生成装置は、命令のオペランドによって特定される計算すべき一対の面領域が不整合な場合、演算前に相互の面領域のサイズを関連づけ可能な状態にし、
前記並列処理装置は、相互に関連づけられた面領域によって特定された計算対象データの集合を命令に従って並列演算する、計算機。
【請求項１０】
請求項９に記載の計算機に於いて、
前記アドレス生成装置は、前記面領域の拡大又は縮小処理により、演算前に相互の面領域のサイズを関連づけ可能な状態にしている、計算機。
【請求項１１】
請求項１０に記載の計算機に於いて、
前記内挿補間処理は、バイリニア処理、トライリニア処理、マスク処理、ポイントサンプリング処理及びパターンマッチング処理のいずれかである、計算機。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、２次元に広がる領域に含まれる計算対象データを、当該領域単位で並列計算することにより、各種の物理計算、環境演算、挙動計算、エモーション(Emotion)演算等の複雑な演算を高速に処理し得る面計算機、並びにこの面計算機における演算処理方法に関する。
【背景技術】
【０００２】
近年における各種自然科学や工学の分野における進歩は著しいものがある。これら自然科学や工学の分野においては、大規模な物理計算を必要としている。例えば、宇宙開発，流体力学，量子力学等の分野においては、大量の行列計算を行う必要がある。このような大規模な計算を高速に処理する場合、コンピュータを高度に利用することが必要となる。
【０００３】
最近では、従来から知られたコンピュータ、とりわけパーソナル・コンピュータは、一世代前の汎用コンピュータ（所謂、大型コンピュータ）の性能をしのぐ程にその性能が向上している。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、このようなパーソナル・コンピュータを使用して上述したような大規模な計算を高速で処理することは困難であり、或いは非常に多大な時間を必要とする。このように大規模な計算に多大な時間を必要とする要因としては、コンピュータ内部におけるデータ転送速度、データ処理時間等の遅延が考えられる。
【０００５】
従って、上述したような大規模な物理計算を行う必要のある開発者、研究者等の間では、大規模な計算を高速に処理できる計算機の出現が望まれていた。
【課題を解決するための手段】
【０００６】
本発明の目的は、上述のような背景に基づいてなされたものであり、新規なアーキテクチャに基づく、大規模な計算を高速に処理できる計算機及びその演算方法を提供するものである。
【０００７】
本発明に係る計算機は、計算対象データの集合を面領域によって特定して、面領域データとして取り扱う手段と、少なくとも２つ以上の前記面領域データを、命令に従って演算する演算手段とを備えている。
【０００８】
更に本発明に係る計算機は、上述の計算機に於いて、更に、命令ワードのオペランドによって特定される計算すべき一対の面領域が不整合な場合、前記演算前に相互の面領域のサイズを関連づけ可能な状態にする手段を備えている。
【０００９】
更に本発明に係る計算機は、上述の計算機に於いて、前記相互の面領域のサイズを関連づけ可能な状態にする手段は、第１の面領域に関連して、第２の面領域を拡大又は縮小処理を施している。
【００１０】
更に本発明に係る計算機は、上述の計算機に於いて、前記相互の面領域のサイズが関連づけ可能な状態にする手段は、３つ以上の前記面領域データを演算する場合は、第１の面領域に関連して、第２以降の面領域を拡大又は縮小処理している。
【００１１】
更に本発明に係る計算機は、上述の計算機に於いて、前記第１の面領域は、ディスティネーションオペランドによって特定される面領域である。
【００１２】
更に本発明に係る計算機は、上述の計算機に於いて、前記相互の面領域のサイズが関連づけ可能な状態にする手段は、前記第１の面領域に一致させるため、又は前記第１の面領域の所定のスケール比に一致させるため、第２以降の面領域をそれぞれ拡大又は縮小処理する。
【００１３】
更に本発明に係る計算機は、上述の計算機に於いて、前記面領域の拡大又は縮小処理は、コピー処理又は内挿装補間処理を実行して、対応するアドレスにデータを生成する。
【００１４】
更に本発明に係る計算機は、上述の計算機に於いて、前記内挿補間処理は、バイリニア処理、トライリニア処理、マスク処理、ポイントサンプリング処理及びパターンマッチング処理のいずれかである。
【００１５】
更に本発明に係る計算機は、少なくとも、前処理装置、アドレス生成装置、並列処理装置及び記憶装置を備えた計算機であって、前記前処理装置は、前記記憶装置に蓄積された計算対象データの集合を面領域によって特定して面領域データとして取り扱い、前記アドレス生成装置は、命令のオペランドによって特定される計算すべき一対の面領域が不整合な場合、演算前に相互の面領域のサイズを関連づけ可能な状態にし、前記並列処理装置は、相互に関連づけられた面領域によって特定された計算対象データの集合を命令に従って並列演算する。
【００１６】
更に本発明に係る計算機は、上述の計算機に於いて、前記アドレス生成装置は、前記面領域の拡大又は縮小処理により、演算前に相互の面領域のサイズを関連づけ可能な状態にしている。
【００１７】
更に本発明に係る計算機は、上述の計算機に於いて、前記内挿補間処理は、バイリニア処理、トライリニア処理、マスク処理、ポイントサンプリング処理及びパターンマッチング処理のいずれかである。
【発明の効果】
【００１８】
本発明によれば、新規なアーキテクチャに基づく、大規模な計算を高速に処理できる計算機及びその演算方法を提供することが出来る。
【発明を実施するための最良の形態】
【００１９】
次に、本発明に係る面計算機及び面計算機の演算処理方法に関する実施の形態の一例について、添付の図面を参照しながら詳細に説明する。なお、図面中の同一の要素に対しては、同じ符号を用いて、重複した説明を省略する。
［面計算機の設計思想］
図１は、本実施例に係る面計算機の全体の構成を示す図である。この面計算機は、次のような設計思想に基づき、基本設計が行われた。
【００２０】
(1)ＡＳＩＣ−ＤＲＡＭ(Application Specified Integrated Circuit-Dynamic Random Access Memory)で使用される半導体製造技術を使用して、ワンチップ(one chip)上に演算ブロックと記憶ブロックとを形成する。
【００２１】
従来、一般に計算機（プロセッサ）では、記憶ブロックと演算ブロックとは別個に形成されていた。このため、演算処理中における演算ブロックから記憶ブロックに対するメモリアクセスがネックとなっていた。しかし、最近の半導体製造技術の向上により、演算ブロックと記憶ブロックとをワンチップ上に混載する形式の混載ＬＳＩ(Large Scale Integration)の製造が可能となった。両ブロックを混載することにより、両ブロック間は距離的に一層短くなり、メモリアクセスの問題を解決してデータ転送を一層高速化することが可能となる。
【００２２】
尚、ＡＳＩＣとは、元来、特定用途向けの半カスタム集積回路を意味していた。しかし、最近では、ＡＳＩＣ−ＤＲＡＭは、カスタム集積回路としてニーズの多い主としてＤＲＡＭ／ロジック混載半導体素子又はそのプロセスを指標するようになっている。
【００２３】
(2)演算ブロックと記憶ブロックとの間を、巨大なデータバス幅（バンド幅）を有する内部データバスによって接続する。
【００２４】
本発明者の経験から、物理計算を高速で処理する場合、演算ブロックの処理速度に比較して、記憶ブロックと演算ブロックとの間のデータの転送速度がボトルネックとなることが予想された。このデータ転送速度の問題を回避するため、この発明に係る面計算機を設計する際に、演算ブロックと記憶ブロックとの間のデータ転送に使用されるデータバスのデータバス幅を巨大なものとして設計することとした。
【００２５】
(3)演算ブロックは、或る程度大きい量のデータを一度に取り扱えるようにするため、データとして面領域データを処理出来る構成を採用する。
【００２６】
この「面領域データ」なる概念は、当該面領域内に存在する計算対象データの集合を意味するものである。従って、「面計算機」の概念は、これら計算対象データの集合である面領域データを、面又は面領域によって特定して、取り扱い（即ち、メモリから読み出し、また書き込む処理を行う。）且つ演算処理する計算機を表している。従って、面計算機においては、面領域データという或る程度大きい量のデータ群が処理されることより、データ自体が並列性の概念を有している。即ち、データが、同時処理が可能なデータ構造となっている。
【００２７】
面計算機を開発する際に上述のような設計思想を採用して、演算ブロックと記憶ブロックとの間のデータ転送に使用されるデータバス幅を十分な大きさにすることにより、演算ブロックの処理速度が相対的にボトルネックとなってくることが予想された。従って、演算ブロックの処理速度の問題を回避するため、取り扱うデータを面領域データとすることにより、一度に又は数回に分けて、大量のデータ群を転送し、データ群として演算処理することとした。上述のように、本発明に係る面計算機はデータバス幅を巨大化することにより、面領域データの転送が可能なものとなっている。
【００２８】
また、本実施例に係る面計算機は、この或る程度大きい量のデータを効率的に演算処理出来るようにするため、演算ブロックにおいて、複数個の単位計算機からなる並列処理装置（並列計算機）を導入している。
【００２９】
以下、上述の設計思想に基づいて設計・製造された本実施例に係る面計算機の具体的な構成を説明する。
［面計算機の構成と各構成要素の動作］
（面計算機の構成）
図１は、本実施例に係る面計算機の全体的な構成を示す図である。図１に示す面計算機は、大別して、演算ブロックＰと記憶ブロックＭとを備えている。上述したように、従来、演算ブロックＰと記憶ブロックＭとは、別個に形成されていた。しかし、この面計算機では、ＡＳＩＣ−ＤＲＡＭの特徴を生かし、ＤＲＡＭに特化した形で演算ブロックＰが形成されている。このように、この面計算機は、演算ブロックＰと記憶ブロックＭとがワンチップ上に形成されている。
【００３０】
面計算機は、この演算ブロックＰとして、ＩＦＵ(Instruction Fetch Unit 命令フェッチ装置)２と、ＰＰ(Pre Processor前処理装置)９と、ＡＧ(Address Generatorアドレス生成装置)３と、ＰＡ(Processor Array 並列処理装置)４とを有する。
【００３１】
また、面計算機は、この記憶ブロックＭとして、ＤＲＡＭ(Dynamic Random Access Memory)１を有している。
【００３２】
更に、面計算機は、ＩＦＤＴＣ(Instruction Fetch & Data Transfer Controller命令フェッチ及びデータ転送制御装置)５と、ＢＵＳ  Ｉ／Ｆ(BUＳ Interfaceバスインタフェース)６とを有している。
【００３３】
この面計算機は、これらの機能を、ワンチップＬＳＩとして形成している。
【００３４】
また、この面計算機は、外部にあるメインメモリ(Main Memory)７及びＣＰＵ(Central Processing Unit)８に対して、それぞれ接続されている。ここで、外部の処理装置をＣＰＵと表記しているが、この面計算機が必ずしもローカルな処理装置として使用されることを意味するものではない。この面計算機は、中央の処理装置として使用できることを承知されたい。
【００３５】
面計算機を構成する各要素について説明を続ける。
【００３６】
ＩＦＤＴＣ(命令フェッチ及びデータ転送制御装置)５は、ＣＰＵ８の制御の下、面計算機で実行する面計算命令(instruction)及び使用される面領域データを取り込む動作の制御装置である。ＩＦＤＴＣ５の作用により、この面計算機の演算ブロックＰは、ＣＰＵ８のコ・プロセッサとして機能して、ＣＰＵ８の負担を軽減している。
【００３７】
ＩＦＵ(命令フェッチユニット)２は、ＩＦＤＴＣ５の制御により、メインメモリ７から面計算機で実行する面計算命令(instruction)リストを取り込む。
【００３８】
ＰＰ(前処理装置)９は、面計算命令ワードのオペランドに対応する面領域を計算し、この面領域に対応する計算対象データを上記ＤＲＡＭ１から該ＤＲＡＭ１に付設の一次及び二次センスアンプ（バッファ）１０，１１へ転送する指示を出す。これら一次及び二次センスアンプ１０，１１は、キャッシュメモリとして機能している。同様に、ＰＰ９は、上記オペランドに従ってＡＧ３をセットアップする。更に、ＰＰ９は、メインメモリ７から呼び出され、ＩＦＵ２を介してフェッチされた汎用面計算命令のデコード処理等も行う。
【００３９】
ＡＧ(アドレス生成装置)３は、バッファ１０、１１内にフェッチされたデータをＰＡ４に供給するためのアドレスを生成するとともに、面領域内の位置依存情報を計算し、ＰＡ（並列処理装置）４に供給する。この位置依存情報の計算とは、例えば、計算対象となる面領域データを規定する面領域サイズが相互に不一致の場合、計算対象の相互の面領域データにおいて、一方の面領域データ内の或るデータに対応する他方の面領域データのアドレスにデータが存在しない場合等に、これら面領域データのアドレス計算を行うことを言う。位置依存情報の計算に使用される拡大・縮小処理、バイリニア，トライリニア等の内挿補間処理等については、後述する。
【００４０】
また、面計算機では、取り扱うデータが面領域データであることより、これを特定する命令ワードのオペランドの構造が、従来の計算機のオペランド構造とは、異なったものとなる。このオペランドの詳細についても後で説明する。
【００４１】
ＰＡ(並列処理装置)４は、面領域データの計算を実行する演算装置である。このＰＡ４は、演算の高速性を図るため、例えば、１６個の単位計算機（演算装置）４ａから成る並列演算装置として構成されている。しかし、ＰＡ４の単位計算機の個数１６は例示であって、これに限定されるものではない。更に、ＰＡ４は、所望により、一層の高速演算を図るため、スーパースカラ、スーパーパイプライン等の構成を採用することもできる。これらスーパースカラ、スーパーパイプラインについても後で説明する。
【００４２】
ＰＡ４は、ＡＧ（アドレス生成装置）３からのアドレスコードをもとに、ＤＲＡＭ１に付設の各センスアンプ（バッファ）1０，１１から供給される各オペランド内の対象面領域データをオペコードに従って演算処理する。
【００４３】
また、このＰＡ４は、記憶ブロックＭとのインタフェースのため、ＭＥＭＩＦ（メモリ・インターフェース）１２を持っている。ＰＡ４に付設するＭＥＭＩＦ１２は、メインメモリ７等の外部メモリとのデータ転送や、リードモデファイライトを行うディスティネーションオペランド領域処理等の書き込みを行う1次センスアンプ１０での操作を行う。
【００４４】
記憶ブロックＭは、典型的には、ＤＲＡＭ１によって構成されている。ＤＲＡＭ１は、面計算機の外部にあるメインメモリ７に対して、この面計算機の作業用の内部メモリ（ローカルメモリ）として位置づけられる。このＤＲＡＭ１のメモリ容量は、例えば３２Ｍｂｉｔとなっている。
【００４５】
ＤＲＡＭ１は、演算ブロックＰのＭＥＭＩＦ１２との間でデータ転送する際にキャッシュメモリとして機能する一次センスアンプ又はバッファ−Ｉ(Primary Sense Amp)１０と、ＰＡ４に対してデータ転送する
際にキャッシュメモリとして機能する二次センスアンプ又はバッファ−II(Secondary Sense Amp)１１とを持っている。
【００４６】
ＢＵＳ  Ｉ／Ｆ(バスインタフェース)６は、メインメモリ７に記録された汎用面計算命令リストをＩＦＵ２に送り、また面領域データをＭＥＭＩＦ１２に送る。
【００４７】
上述したように、面計算機を構成する演算ブロックＰと記憶ブロックＭとは、巨大なデータバス幅を持つデータバスによって接続されている。具体的には、ＰＡ４のＭＥＭＩＦ１２からＤＲＡＭ１の一次センスアンプ１０へは、書き込み用の１０２４ビットのバス幅をもつ内部データバス１３を介して接続されている。一方、ＤＲＡＭ１の一次センスアンプ１０からＰＡ４のＭＥＭＩＦ１２へは、読み込み用の１０２４ビットのバス幅をもつ内部データバス１４を介して接続されている。このデータバス１４は、主として、面領域データの転送に使用される。
【００４８】
更に、ＤＲＡＭ１の二次センスアンプ１１からＰＡ４へは、ＰＡ４を構成する例えば、１６個の単位計算機の各々に対して３２ビット、合計で５１２ビット（＝１６×３２ビット）のバス幅を持つデータバス１５で接続されている。このデータバス１５は、主として、面領域データを特定するオペランド情報等の読み込みに使用される。
【００４９】
結局、ＰＡ４とＤＲＡＭ１の間はこれら３本のデータバス１３，１４，１５で直接接続されており、これらのデータバスは、合計で２０４８ビットという巨大なデータバス幅を形成している。これによって、記憶ブロックＭと演算ブロックＰとの間のデータ転送が、ボトルネックにならないように設計されている。更に、この特徴を生かし、大量のデータから構成される面領域データの転送が現実のものとなる。なお、データバス幅２０４８ビットは例示であって、この数値に限定されるものではない。
【００５０】
面計算機の外部にあるＣＰＵ８は、この面計算機において、命令をＩＦＤＴＣ５に送り、またメインメモリ７に記録された汎用面計算命令リスト（プログラムに相当する。）や面領域データを、ＢＵＳ  Ｉ／Ｆ６を介して、ＩＦＵ２やＭＥＭＩＦ１２に送る制御を行っている。
【００５１】
同様に面計算機の外部にあるメインメモリ７には、この面計算機において実行される汎用面計算命令リストや面領域データが予め記録されている。
【００５２】
（面計算機の各構成要素の動作）
図２は、上述のように構成される面計算機の各構成要素の動作を説明するフローである。
【００５３】
図１を参照しながら説明すると、ＣＰＵ８は、ＩＦＤＴＣ（命令フェッチ及びデータ転送制御装置）５の動作を全体的に制御している。
【００５４】
ステップＳ１０で、このＩＦＤＴＣ５の制御の下、ＩＦＵ２(命令フェッチ装置)が、メインメモリ７からＢＵＳ  Ｉ／Ｆ６を介して送られてくる面計算命令（インストラクション）をフェッチし、即ち取り込み、ＰＰ（前処理装置）９に対して転送する。
【００５５】
ステップＳ２０で、面計算命令を受け取ったＰＰ９は、この面計算命令に係る命令ワードに記載されたオペランドに対応する面領域を前処理、即ち計算する。その後、ＰＰ９は、この計算によって特定された面領域データを、ＤＲＡＭ１から、ＤＲＡＭ１に付設の１次センスアンプ１０及び／又は２次センスアンプ１１に対して転送する指示を出す。即ち、対象面領域データを各バッファ１０，１１に、プリフェッチする。更に、ＰＰ９は、面計算命令のオペランドに記載された面領域情報に従って、後段のＡＧ（アドレス生成装置）３をセットアップする。
【００５６】
ステップＳ３０で、ＡＧ３は、１次センスアンプ及１０及び／又は２次センスアンプ１１内にフェッチされた面領域データに関して、ＰＡ４に供給するためのアドレス計算を行ってアドレスを生成する。更に、面領域データ内の位置依存情報を計算する。その後、ＡＧ３は、これらアドレスデータ及び位置依存情報を集計して、ＰＡ４に供給する。この位置依存情報は、例えば面領域データのアドレスであり、後述するように、面領域データ相互間でアドレスが対応するか否かを判断し得る情報を含んでいる。
【００５７】
ステップＳ４０で、ＰＡ(並列処理装置)４は、ＡＧ３からのアドレスデータをもとに、１次センスアンプ１０及び２次センスアンプ１１から供給される各オペランド内の、演算対象となる面領域データを、面計算命令のオペコード（命令コード）に従って演算処理する。また、面領域データを特定するオペランド情報の相違により、対応が付かない（即ち、アドレスが一致しない。）データに関しては、バッファから送られてくる近傍データを用いて、オペコードの指示に従って、バイリニア、トライリニア等の内挿補間処理等を利用して、アドレスが対応するデータを生成する。
【００５８】
ステップＳ５０で、ＭＥＭＩＦ(メモリ・インターフェース)１２は、ＢＵＳ  Ｉ／Ｆ６を介してメインメモリ７とのデータ転送を行う。同様に、ＭＥＭＩＦ１２は、ＤＲＡＭ１に対して書き込みを行う１次センスアンプ１０の操作を行い、例えば、リードモデファイライト（ＤＲＡＭの動作タイミングの１つで、同じサイクルでread後にwriteを行うこと。）を行うディスティネーションオペランド領域処理等を実行する。
［アドレス生成］
上述したステップＳ３０のアドレス生成について、更に詳しく説明する。ＰＡ４が該当面領域データを面計算命令のオペコードに従って処理する際に、各面領域データを特定するオペランド情報の相違により、面領域データ相互間で対応が付かない場合が発生する。
【００５９】
例えば、計算すべき一対のオペランドが特定するそれぞれの面領域が不整合な場合、即ち、面領域のサイズが異なる場合が考えられる。このような場合、例えば、ディスティネーションオペランドによって特定される面領域に関連して、ソースオペランドが特定する面領域を適宜に拡大或いは縮小等の処理を施して、相互の面領域のサイズが関連付け可能な状態にすることにより、相互の面領域データの計算が可能となる。この拡大・縮小処理は、典型的には、コピー処理又は内挿補間処理によって実行される。
【００６０】
このように、ディスティネーションオペランドによって特定される面領域に関連付けしてデータサイズを決定するとは、例えば、当該面領域に一致させてソースオペランドによって特定される面領域データのサイズを拡大・縮小したり、或いは面領域データのサイズを当該領域の所定のスケール比に一致させる演算を行って、計算結果の面領域データのサイズが、ディスティネーションオペランドによって特定される面領域のサイズに関連づけ出来るようにする処理をいう。
【００６１】
次に、面領域データ相互間で、面領域データを構成する一部の又は全部の計算対象データに関してアドレスが一致しない場合がある。このような場合には、当該オペランドが特定する面領域の一方または両方に関して、内挿補間処理を用いて、対応するアドレスに在るデータが生成される。
【００６２】
このような補間処理を施すことにより、オペランド情報の相違に起因する、対応する計算対象データを有しない面領域相互間においても、アドレスが一致した計算対象データを得ることができ、任意の面領域データ相互間で演算処理を実行することが可能になる。内挿補間処理としては、典型的には、面領域データに含まれる近傍のデータを用いて、バイリニア・フィルタやトライリニア・フィルタ等がある。
【００６３】
上述の拡大処理、縮小処理、内挿補間処理（バイリニア・フィルタ，トライリニア・フィルタ）について、更に詳しく説明する。
【００６４】
（面領域の拡大処理）
図３は、面領域データの拡大処理の手法を説明する図である。図３Ａに示した例は、拡大すべき面領域データａをコピーして、これを複数個用いることにより拡大処理を行っている。この例の場合、拡大前の面領域データａと同面積の面領域データａを所望数だけコピーすることにより、拡大処理を行っている。
【００６５】
また、図３Ｂに示した例は、内挿補間処理を用いた拡大処理である。即ち、拡大前の面領域データが小面領域データａ，ｂ，ｃ，ｄの４領域を図示のように配列されたものとする。拡大後の面領域データは、各小面領域データａ，ｂ，ｃ，ｄを図の上下左右の四隅に夫々配列し、隣接する各小面領域[a,b][a,c][b,d][c,d]間に、それぞれの面積が(a+b)/2，(a+c)/2，(b+d)/2，(c+d)/2となる面領域データを配列するとともに、各領域データａ，ｂ，ｃ，ｄで囲まれる中空部分に面積が(a+b+c+d)/4なる面領域データを配列する。これにより、各小面領域データａ，ｂ，ｃ，ｄから成る面領域データを拡大処理することができる。
【００６６】
（面領域の縮小処理）
図４は、縮小処理の手法を示している。縮小処理は、図３で説明した拡大処理を逆方向に実行する処理である。図４Ａに示した例は、図３Ａに示したコピーによる拡大処理の逆方向の処理により、縮小する例を示している。また、図４Ｂに示した例は、図３Ｂに示した内挿補間による拡大処理の逆の処理により縮小する例を示している。
【００６７】
（バイリニア処理）
図５Ａは、内挿補間処理の一例として、バイリニア補間によりデータを生成する例を説明する図である。演算対象の一方の面領域データＳＤには、中央の○で示すアドレスにデータが存在し、他方の面領域データＳＤには、○に対応するアドレスには図５Ａに示すようにデータが存在しないとする。この場合、データが存在しないアドレスの近傍にある４個のデータを用いて内挿補間処理して、○に対応するアドレスのデータを生成する。即ち、図で見て、斜め右上がり方向(例えば、ｘ方向)にリニア補間し、次いで上下方向(例えば、ｙ方向)にリニア補間する。このような補間法を、バイリニアと称している。
【００６８】
たとえ面領域データＳＤがディスクリートに存在したとしても、例えば、図に示すように正格子の交点のアドレスにのみデータが存在する面領域データＳＤであったとしても、バイリニア処理を用いることにより、この面領域を構成する密実な面領域データ群を得ることができる。
【００６９】
（トライリニア処理）
図５Ｂは、トライリニア補間によりデータを生成する例を説明する図である。演算対象の一方には面領域データＳＤが存在し、他方には面領域データ自体が存在しないとする。この場合、図５Ｂに示すように、アドレスが一致するデータが存在しない面アドレスの両側近傍にある２つの面領域データＳＤを用いて、補間処理により面領域データを生成する。即ち、図で見て左方の面領域データＳＤを用いてバイリニア法により対応するアドレスのデータを生成し、同様に右方の面領域データを用いてバイリニア法により対応するアドレスのデータを生成する。このように生成された２つのデータを用いて、データをリニア補間し、他方の面領域に含まれる○で示すアドレスのデータを補間する。このような補間法を、トライリニアと称している。
【００７０】
複数の面領域データＳＤがディスクリートに存在していても、例えばトライリニア法を用いることにより、相互に密実に規定された面を構成する面領域データＳＤを得ることができる。即ち、物理計算等において、任意の３次元領域を計算対象とすることができる。
【００７１】
（ポイントサンプリング）
ポイントサンプリングは、面領域データＳＤから、一定の規則性を持ってデータを選択する方法である。後述する行列演算などに使用される。
【００７２】
（マスク処理）
マスク処理は、面領域データＳＤから、一定の規則性を持って該当データを捨てる手法である。
【００７３】
（パターンマッチング）
更に、図６は、パターンマッチング処理を示している。パターンマッチングとは、パターン間の距離を求めるもので、前述したバイリニア、トライリニアを適用することにより、パターンマッチング処理を行う。この処理においては、面演算処理によりパターン間の差分(SPd=SPd-SPs)を求めており、その結果となる差分の絶対値(SPd=|SPd-SPs|)若しくは二乗(SPd=(SPd-SPs)*(SPd-SPs))を求める。次いで、ソース面の長さに対して１／２の長さのディスティネーション面へバイリニアを用いた縮小転送を行い、総和をとる。そして、バイリニアを用いた縮小転送を再帰的に実行することによりスカラ値を得るまで行い、最終スカラ値を得る。
【００７４】
以上、説明した面領域の拡大処理、面領域の縮小処理、バイリニア処理、トライリニア処理、ポイントサンプリング処理、マスク処理、パターンマッチング処理等は、面計算機で実行されるプログラムによって適宜選択される。
［面計算機の特徴並びにＳＩＳＤ方式及びＳＩＭＤ方式との比較］
次に、本発明に係る面計算機の特徴について、従来から知られているＳＩＳＤ方式(Single Instruction Single Data stream)並びにＳＩＭＤ方式(Single Instruction Multi Data stream)と比較しながら、説明する。
【００７５】
（各方式の命令ストリーム及びハードウェア機構）
図７は、ＳＩＳＤ，ＳＩＭＤ及び面計算機の各方式を模式的に表し、命令ストリーム及びハードウェア機構の観点から比較して説明する図である。
【００７６】
図７Ａに示すＳＩＳＤ方式計算機の場合、単一の命令にしたがって、単一の計算機（演算装置，単位計算機）４ａが、単一のデータ（以下、「点データ」という。）ＰＤを用いて、演算を逐次的に実行している。このため、大規模な計算を行うにあたっては非常に多大な時間を必要とし、適当な方式でない。
【００７７】
また、図７Ｂに示すＳＩＭＤ方式計算機の場合、単一の命令にしたがって、複数個の計算機（演算装置，単位計算機）４ａが演算を並列的に実行する。ここでは、各々の単位計算機は、点データＰＤを用いて演算を逐次的に実行している。ＳＩＭＤ方式は、このような単位計算機４ａが複数個で構成されていることより、全体としては命令実行シーケンスに並列性を有している。命令実行シーケンスの並列性を確保するため、単位計算機４ａの個数は、命令実行シーケンスの並列数に従属して決定される。
【００７８】
大規模な計算を行う場合、ＳＩＭＤ方式は、ＳＩＳＤ方式に比較すると、処理速度が大幅に向上する。しかし、ＳＩＭＤ方式でも、対処できない大量のデータを処理する必要のある物理計算等の要求があることは、前述したとおりである。
【００７９】
これに対して、図７Ｃは、本実施形態に係る面計算機を説明する模式図である。面計算機は、データを面として捉えている。即ち、データ群を面領域により特定して処理する計算機である。一群のデータを面領域データＳＤとして一括して（又は数回に分けて）データ転送し、且つ演算処理することにより、データ転送及び演算の繰り返し回数を大幅に減少させて、結果的に計算の高速性を確保するところに特徴を有している。
【００８０】
図７Ｃの左側に示すように、一群のデータを一括して取り扱うという概念より、このデータは線データ（或る線によって特定されるデータ群）ＬＤであってもよく、従って、面計算機は線計算機を含む概念である。
【００８１】
面計算機の特徴は、データ自体に並列性が存在することにある。単位計算機４ａの個数は、面領域データＳＤのデータ数，命令実行シーケンス等とは、無関係であり、即ち、独立したものである。面計算機の場合、複数の計算対象データを含む面領域ごとに演算処理を行うものであり、計算対象データに並列性がある。これら面領域データの計算方法やそれに要する単位計算機４ａの個数は、プログラムによって決定される問題であって、面領域データＳＤに依存して決定されるものではない。面計算機では、計算自体は逐次的に実行してもよい。
【００８２】
しかし、大量のデータを高速処理する場合に、多数の単位計算機（演算器）を設けることにより、計算の高速化が図れることは自明である。そのため、本実施形態では、ＰＡ４として１６個の単位計算機４ａを持っている。さらに、後述するように、ＰＡ４として、所望により、スーパーパイプライン方式や、スーパースカラ方式を採用して、一層高速演算処理をすることもできる。
【００８３】
面計算機を、他の二方式と比較すると、次のような相違点が挙げられる。
【００８４】
(1)面計算機は、データに並列性を有する点で、命令実行シーケンスに並列性を有するＳＩＭＤ方式とは異なっている。
【００８５】
(2)面計算機は、面領域データＳＤを取り扱う点で、点データＰＤを取り扱うＳＩＳＤ方式及びＳＩＭＤ方式とは異なっている。
【００８６】
(3)面計算機は面領域データＳＤを取り扱うために、点データＰＤを取り扱うＳＩＳＤ方式及びＳＩＭＤ方式とは言語体系が異なっている。即ち、その命令ワードを構成するオペランド形態が、面領域データＳＤを取り扱う面計算機と点データＰＤを取り扱うＳＩＳＤ方式やＳＩＭＤ方式とでは異なっている。
【００８７】
(4)面計算機では、上述したように内挿補間処理等を利用して密実な面領域全体のデータ、更に３次元内の任意の面領域データが利用可能である点で、ディスクリートな点データＰＤのみを取り扱うＳＩＭＤ方式とは異なっている。
【００８８】
(5)面計算機は、単位計算機４ａの個数が自由である点で、命令実行シーケンスの並列数に従属するＳＩＭＤ方式とは異なっている。
【００８９】
これら５つの相違点について詳しく説明する前に、まず、典型的な大量データを処理する行列計算を例に挙げて、面計算機の処理について、ＳＩＳＤ方式，ＳＩＭＤ方式と比較しながら説明する。
【００９０】
（行列計算におけるＳＩＳＤ，ＳＩＭＤ及び面計算機の相違）
図８，図９及び図１０は、ＳＩＳＤ方式、ＳＩＭＤ方式及び面計算機のそれぞれにより、大量の行列計算を行う状態を模式的に示したものである。ここで説明する行列計算は、例えば３次元的に表現された画像データに関して座標変換を行う場合等を想定したものである。ここで、画像を構成する或る頂点（ｘ，ｙ，ｚ，ｗ）を、図示の係数行列により（Ｘ，Ｙ，Ｚ，Ｗ）に座標変換する例を示している。
【００９１】
このような行列計算を、図７Ａで説明したＳＩＳＤ方式を用いて行う場合、図８の枠内に示す計算を逐次的に実行する。即ち、先ず、
a00*x+a01*y+a02*z+a03*w=X
なる計算を行う。この場合、例えば、上記式の左辺の第１項から順次行う。次いで、
a10*x+a11*y+a12*z+a13*w=Y
なる計算を同様にして順次行い、更に、
a20*x+a21*y+a22*z+a23*w=Z
なる計算を同様に順次行い、更に、
a30*x+a31*y+a32*z+a33*w=W
を同様に順次計算する。
【００９２】
以下、同様にして、このシーケンスをデータ量分だけ繰り返す。このため、上記計算を終えるまでには莫大な時間を要するものであった。この例において、上記行列の要素ａ00やａ32等のデータが上述した点データであり、このＳＩＳＤ方式の場合、ａ30＊ｘ等を逐一的に計算処理している。
【００９３】
次に、同様の行列計算を上記図７Ｂで説明したＳＩＭＤ方式を用いて行う場合、図９に示すように、各々の単位計算機４ａは、同図の枠内の４つの計算式の１つずつを、単一の命令でほぼ同時に行う。
【００９４】
即ち、第１の単位計算機４ａは、上記行列の各要素ａ00、ａ10、ａ20、ａ30等と、列ベクトルｘ、ｙ、ｚ、ｗとの間で、夫々乗算して積を求め、次にこれらの積の和を求める次の演算を行う。
【００９５】
a00*x+a01*y+a02*z+a03*w=X
第２の単位計算機４ａもほぼ同時に、
a10*x+a11*y+a12*z+a13*w=Y
の演算を行う。
第３の単位計算機４ａもほぼ同時に、
a20*x+a21*y+a22*z+a23*w=Z
の演算を行う。
第４の単位計算機４ａもほぼ同時に、
a30*x+a31*y+a32*z+a33*w=W
の演算を行う。
【００９６】
これらの演算はほぼ同時に実行されるため、ＳＩＭＤ方式は、ＳＩＳＤ方式と比較すれば、十分に高速化を図ることが出来る。
【００９７】
図１０は、本実施形態例に係る面計算機によって、同様の行列計算を行う場合を説明する図である。面演算処理では、図１０の上方に示す式の左辺の４次正方行列の各列を、それぞれ面領域データＳＤ１，ＳＤ２，ＳＤ３，ＳＤ４として取り扱うとともに、左辺の列ベクトルを面領域データＳＤｖとして取り扱う。そして、それぞれの面領域データをＰＡ４に呼び込み、面領域データＳＤ１，ＳＤ２，ＳＤ３，ＳＤ４と面領域データＳＤｖとの間で、必要な積と和の演算処理を行う。
【００９８】
上述した各面領域データにおいて、オペランドが特定する面領域のサイズがそろわない場合には、前述したような拡大・縮小処理等により面領域のサイズをそろえる。また、行列の各要素は、内挿補間処理を用いるのではなく、ポイントサンプリングやマスク処理を用いることにより、各要素の係数の値を保持しながら面計算を実行している。
【００９９】
各面領域データＳＤ１，ＳＤ２，ＳＤ３，ＳＤ４と面領域データＳＤｖとの間で、必要な演算処理を行うに際し、具体的には、図示のようにＳＤ１，ＳＤ２，ＳＤ３，ＳＤ４をそれぞれ４面ずつ、合計で１６面分用意するとともに、上記ＳＤｖを４面分用意する。そして、ＳＤ１とＳＤｖとにより、a00*x、  a10*x、  a20*x、a30*x  の各乗算を、ＳＤ２とＳＤｖとにより、a01*y、  a11*y、  a21*y、  a31*y  の各乗算を、ＳＤ３とＳＤｖとにより、a02*z、  a12*z、  a22*z、  a32*z  の各乗算を、ＳＤ４とＳＤｖとにより、a03*w，  a13*w，  a23*w，  a33*w  の各乗算を、一挙に計算する。更に、一挙に計算された
a00*x, a10*x, a20*x, a30*x
a01*y, a11*y, a21*y, a31*y
a02*z, a12*z, a22*z, a32*z
a03*w, a13*w, a23*w, a33*w
に基づいて、
a00*x+a01*y+a02*z+a03*w=X
a01*y+a11*y+a21*y+a31*y=Y
a02*z+a12*z+a22*z+a32*z=Z
a03*w+a13*w+a23*w+a33*w=W
の計算を行う。
【０１００】
本形態例に係る面計算機は、このように面領域データを一括して又は複数回に分けて転送・演算するために、行列計算等の大規模な計算をきわめて高速に処理できる。
［面計算機と他の二方式との相違点］
次に、面計算機を、他の二方式と比較したとき、５つの相違点を挙げたが、これらについて順に説明する。
【０１０１】
（第１の相違点）
第１に、面計算機は、データに並列性を有する点で、データには並列性はなく且つ命令実行シーケンスに並列性を有するＳＩＭＤ方式とは異なっている。
【０１０２】
しかし、面計算機は、ＳＩＭＤ方式の概念を排除するものではなく、面計算機において、ＳＩＭＤ方式を採用することも可能である。即ち、面計算機を複数個設けて、システム全体として、命令実行シーケンスに並列性を持たせることにより、面計算機にＳＩＭＤ方式を取り入れることもできる。
【０１０３】
（第２の相違点）
第２に、面計算機は、面領域データＳＤを取り扱う点で、点データＰＤを取り扱うＳＩＳＤ方式及びＳＩＭＤ方式とは異なっている。
【０１０４】
面計算機では、２次元のデータである面領域データＳＤ（線データＬＤを含む。）を領域単位で転送・演算処理するように構成している。
【０１０５】
例えば、図１１に模式的に示すように、ソースオペランドである面領域データＳＰＳと、同じくソースオペランドである面領域データＳＰｄとを加算する場合、面領域データＳＰｓとを面領域データＳＰｄとを夫々一括して転送して、演算処理している。従って、面計算機は、点データＰＤの逐次的な転送・演算を繰り返すＳＩＭＤ方式に比較して、結果的に高速に処理できるようになる。換言すれば、この面計算機は、オペランドが特定する領域内の計算対象データを面領域単位で転送・演算するものであるため、転送・演算の繰り返し回数が極端に減少し、高速演算が実現できる。
【０１０６】
（ＰＡの代替例）
高速演算処理においては、データ転送の高速化に加えて、演算処理の高速化が重要となる。演算処理の高速化のため、本発明に係る並列演算装置としては、図１に示す１６個の単位計算機４ａによる並列計算機の並列処理が採用されている。しかし、本発明に係る面計算機では、このような並列計算機以外にも、例えば図１２に示すような高速処理演算装置の構成を採用することが出来る。この図１２に示した並列演算装置は、スーパースカラ方式とスーパーパイプライン方式とを採用している。
【０１０７】
スーパースカラとは、複数の命令フェッチ／デコード機構や、ＡＬＵを独立したパイプラインとして並列動作させることによりパイプラインの空間的な多重度を向上させ高速化する手段である。また、スーパーパイプラインは、パイプラインを深くすることにより、時間的な多重度を向上させる手段である。
【０１０８】
この例の場合、図１２に示すように少なくとも３２個のＰＡ４を設けている。更に、１個のＰＡ４においては、少なくとも３２ステップのパイプラインを設けている。従って、この構成例の場合、１クロックにつき、少なくとも３２ステップ×３２個＝１０２４命令の並列処理を行える。
【０１０９】
（第３の相違点）
第３に、面計算機は面領域データＳＤを取り扱うために、点データＰＤを取り扱うＳＩＳＤ方式及びＳＩＭＤ方式とは言語体系が異なっている。即ち、その命令ワードを構成するオペランド形態が、面領域データＳＤを取り扱う面計算機と点データＰＤを取り扱うＳＩＳＤ方式やＳＩＭＤ方式とでは異なっている。
【０１１０】
（オペランド構造の相違）
この発明に係る面計算機は、面領域内の計算対象データを当該面領域を単位として特定し計算する点で、従来のＳＩＳＤ方式やＳＩＭＤ方式の計算機とは大きく相違する。従って、面計算機の場合、他の二方式とは言語体系が異なっている。
【０１１１】
図１３Ａに示すように、従来の二方式における命令ワード（典型的な命令１個）は、オペコード１３１と２つ以上のオペランド１３２から構成されており、ここで、オペランド１３２は、計算対象の各種データの格納先を指定又は特定するものである。図１３Ｂに示すように、上記オペランド１３２には、命令の実行によって演算処理されるデータの格納元を指定するソースオペランド１３３と、命令実行によって処理された結果データの格納先を指定するディスティネーションオペランド１３４とがある。
【０１１２】
従来の二方式の場合、これら各オペランドが指し示すデータはそれぞれ単一のデータ（数値又はベクトル値。即ち、点データ）であり、演算処理を行う場合には、逐次的にこの点データを呼び出して演算処理する過程を繰り返し行っていた。
【０１１３】
面計算機における命令ワードは、オペコードと２つ以上のオペランドとから構成され、オペランドとしてソースオペランドとディスティネーションオペランドを有する点では、従来の二方式と同じである。しかし、面計算機のオペランドは２次元、つまり、アドレッシング・モードが２次元の領域を示すものであり、面領域データを特定する点で、点データを特定している従来の２方式と異なっている。
【０１１４】
ここで、面計算機のオペランドにおける面領域の特定は、一般に、面領域を取り囲む、例えば４点の点データを指定することによって行われる。或いは、面領域の始点と終点の２点の点データを指定することによって行われる。
【０１１５】
しかし、面計算機における命令ワードのオペランドが特定するデータが見かけ上１次元である場合もある。例えば、ポインタ（点）と線分Ｌとにより、上記点を基点とし、データ全体の長さが線分Ｌとして、或る領域を特定することが可能である。このため、面計算機におけるオペランドは、ポインタと線分Ｌとによって表現することもできる。
【０１１６】
更に、前述したように、面計算機は、線計算機を含む概念である。この場合、線データを特定するオペランドは、例えば、２個のポインタによって構成される。
【０１１７】
このように、本発明においては、従来構造におけるオペランドとは形態が異なるため、当然に言語体系、即ち命令ワードが異なっている。
【０１１８】
尚、上記面領域データの領域を示すオペランドの例としては、次のような表示例があげられる。
【０１１９】
(1)短形型（ＳＰで表す）；  SP(X1,Y1,X2,Y2)
(2)トライアングル型（ＴＲで表す）；  TR(X1,Y1,X2,Y2,X3,Y3)
(3)トライアングルメッシュ型（ＴＲＭで表す）；  TRM(X1,Y1,X2,Y2・・・Xn,Yn)
(4)ライン型（ＬＮで表す）；  LN(X1,Y1,X2,Y2)
但し、Ｘ、Ｙは座標（アドレス）を示している。
【０１２０】
上記(1)の矩形型ＳＰは、矩形形状の面領域を対角上にある一対の頂点の座標で示したものである。
【０１２１】
上記(2)のトライアングル型ＴＲは三角形状の領域を各頂点の座標で示したものである。
【０１２２】
上記(3)のトライアングルメッシュ型ＴＲＭは、三角形領域内の特定の（一定の規則に基づいて選択される）点の集合を表している。
【０１２３】
上記(4)のライン型ＬＮは、線分を表す。
【０１２４】
面領域としては、上記矩形や三角形の他、任意の形状とすることができる。更には、上記矩形型の場合、一の頂点の座標と、この頂点を通る辺若しくは対角線の長さとによっても一の矩形領域を表すことができる。
【０１２５】
（領域を示すオペランドと並列演算との関係）
次に、線計算機におけるオペランドと並列演算との関係について説明する。図１４は、互いに領域（この場合は長さ）の異なる線領域の演算を行う場合を示している。この場合、線オペランド１で特定される領域１４１を縮小して線領域データ１４３にするとともに、オペランド２で特定される領域１４２を拡大して線領域データ１４４にすることにより、両者１４３，１４４の領域（長さ）を合わせ、ＰＡ（並列処理装置）４によって面（線）演算処理している。演算後、演算結果のデータが線オペランド３で特定される線領域１４５に記憶される。
【０１２６】
線のサイズ合わせは、面領域の場合と同様に、図中右半部に例示したコピー、線形補間、サンプリング、拡大処理等によって行われる。これら各種手法により、線のサイズを適宜変更することができる。
【０１２７】
（ＰＡの並列処理と多数のオペランド）
図１５は、ＰＡ４の並列処理と多数のオペランドを示す模式図である。多数のＰＡ４の内の１つに、オペランド３とオペランド４とでそれぞれ特定される、１次センスアンプ１０に格納されている各計算対象データＤ３  ，Ｄ４を読み出す。これとともに、オペランド１とオペランド２とでそれぞれ特定される、２次センスアンプ１１に格納されている各計算対象データＤ１，Ｄ２を読み出す。そして、所望の演算を施した後の結果データを、上記１次センスアンプ１０に夫々格納する。即ち、図示のD3=f1(D1,D2,D3,D4)なる計算を行った結果はオペランド３に、D4=f2(D1,D2,D3,D4)なる計算を行った場合は、オペランド４に、夫々書き込まれる。
【０１２８】
第４の相違点である面計算機は、上述したように内挿補間処理等を利用して密実な面領域全体のデータが利用可能である点で、ディスクリートな点データのみを取り扱うＳＩＭＤ方式とは異なっていることについては、面領域の拡大縮小処理、内挿補間処理の説明に伴って、すでに説明してある。
【０１２９】
同様に、第５の相違点である面計算機は、単位計算機４ａの個数が自由である点で、命令実行シーケンスの並列数に従属するＳＩＭＤ方式とは異なっていることについても、両方式の比較の箇所で説明してある。
［面計算機の典型的な命令の例］
（命令とデータの流れ）
次に、面計算機の命令実行（制御）について説明する。図１６は、本実施形態に係る面計算機を、ＣＰＵ８に対するコ・プロセッサとして機能させた構成例を示しており、前記図１に示す構成における命令及びデータの流れを示している。
【０１３０】
この面計算機は、内部のＢＵＳ  Ｉ／Ｆ６とデータバスを介して、ＣＰＵ８及びメインメモリ７に、それぞれ接続している。メインメモリ７には、汎用面計算命令リスト１６１と計算の対象となる面領域データ（ＳＤ）１６２とが記憶されている。
【０１３１】
ＣＰＵ８の制御の下、ＩＦＤＴＣ（命令フェッチ及びデータ転送制御装置)５は、メインメモリ７に記録された汎用面計算命令リスト１６１を、面計算機のＢＵＳ  Ｉ／Ｆ６を介して、ＩＦＵ(命令フェッチユニット)２に直接転送するように制御する。同様に、ＩＦＤＴＣ５は、メインメモリ７に記録された面領域データＳＤを、面計算機のＢＵＳ  Ｉ／Ｆ６を介して、内蔵ＤＲＡＭ１に直接転送するように制御する。このように、ＣＰＵ８を介さず、ＩＦＤＴＣ５が直接的に汎用面計算命令リスト１６１及び面領域データＳＤの面計算機への転送を制御することにより、結果的にＣＰＵ８の負担が軽減される。このような構成の場合、２オペランドや３オペランドの演算は勿論のこと、４オペランドの演算制御もできる。
【０１３２】
次に、上述した構造における代表的な命令である条件分岐と間接オペランドについて説明する。
【０１３３】
（条件分岐）
図１７は、この面計算機が有する機能のうちの条件分岐を表している。図示の例の場合、ＩＦＤＴＣ５の制御に基づき、上記ＩＦＵ２をレジスタ値で条件分岐するもので、ＤＲＡＭ１内の或る面領域データＳＤの一点ＰＴｓをＩＦＤＴＣ５内のレジスタ＃０に転送する命令Ｍｏｖｅを実施するが、条件分岐として上記レジスタ＃０が０であるならば、メインメモリ７のラベル１へ分岐させるように処理される。
【０１３４】
このように、この発明に係る面計算機は、演算結果に合わせて処理を切り換えることができる。即ち、本発明に係る面計算機は、ＩＦＤＴＣ５の命令フェッチをレジスタ値によって条件分岐する機能を有する。
【０１３５】
尚、図１７には、この際の処理をＰＡ４からＩＦＤＴＣ５に向かう矢印(1)で表している。前述したように，この条件分岐処理機能を持たせることで、プログラミングのし易さを図れる。また、この条件分岐処理は、従来の遂次処理における「ジャンプ」に代わる並列処理ということもできる。
【０１３６】
（間接オペランド）
次に、図１８は、この面計算機における間接オペランドについて示している。間接オペランドとは、ソースオペランドを読み出し、そのデータを次のアクセスの実行アドレスとするものである。本発明に係る面計算機における間接オペランドについては、面領域データＳＤを特定するオペランドの座標値を面領域データＳＤ上のデータで示す。そして、自身の計算によりオペランド領域を算出する。
【０１３７】
図１８に示す例においては、ソースオペランドＴＲＭＳが特定する間接オペランド＊ＴＲＭＳとディスティネーションオペランドＴＲＭｄとを加算し、その結果をＴＲＭｄとするものである。この間接オペランドに関しては、ＰＡ４、ＰＰ９が担当するが、これを図１８に矢印(2)で示す。この面計算機においては、一括処理データ量が多くなっても、オーバヘッドが少なくなるので、間接オペランド機構は有効なものとなる。
【０１３８】
尚、本形態例では、一つの座標値のデータは３２ｂｉｔを基準として、３２ｂｉｔ（固定小数点、浮動小数点）、１６ｂｉｔ×２（固定小数点）、１０ｂｉｔ×３（固定小数点）、８ｂｉｔ×４（固定小数点）のデータとして扱う事ができる。また、面領域データＳＤで面領域オペランドの座標値を示す場合、２次元座標値は１６ｂｉｔ×２（固定小数点）、トライリニア用の３次元座標値は１０ｂｉｔ×３（固定小数点）で表わす。３２ｂｉｔで座標を扱う場合は２次元ならば２オペランド、３次元ならば３オペランドを用いている。
［面計算機の具体的な演算例］
（命令セット）
再び図１１を参照すると、この面計算機が持つ命令セットのうち、加算命令（ＡＤＤ）を実施する場合の例を示している。この例の場合、ソースオペランドである面領域データＳＰsと、同じくソースオペランドである面領域データＳＰｄとを、これら面領域ごとに加算演算する。即ち、上記面領域データＳＰｓと上記面領域データＳＰｄとを、互いに整合する領域内の計算対象データ同士を一挙に加算する。このような処理により、きわめて高速な演算が可能になる。この面計算機における命令セットとしては、上記ＡＤＤの他、ＳＵＢ，ＭＡＤＤ，ＭＯＶＥ等従来知られた種々の命令セットを持たせることができる。
【０１３９】
（演算制御）
次に、２オペランド、３オペランド、４オペランドの、それぞれの場合における演算制御について、図１９に基づいて説明する。先ず、図１９Ａは２オペランドの演算制御を示している。この図１９（Ａ）では、ソース面領域データＳＰｓ、ディスティネーション面領域データＳＰｄを、ＡＤＤ（加算）若しくはＳＵＢ（減算）処理する、
ADD:SPd=SPd+SPs
SUB:SPd=SPd-SPs
なる演算処理を行うものである。そして、その結果を、ディスティネーション面で特定されるアドレスに格納する。尚、この図１９（Ａ）に示した例は、例えば、前述したＳＩＭＤによって行列計算を行う場合において、係数行列の第一行(a00,a01,a02,a03)と頂点座標(x,y,z,w)との積  a00*x,a01*y,a02*z,a03*w  を求め、更にこれらの和を求めることに相当している。
【０１４０】
更に、図１９Ｂ，Ｃでは３オペランドの演算制御を示している。これらの例の場合、オペランドＳＰｄ、オペランドＳＰｓ、オペランドＳＰｔがそれぞれ特定する各面領域内の計算対象データについて、ＭＡＤＤ（マルチプライ・アンドアダー），ＣＭＯＶ（コンディションムーブメント）の各処理を示している。
このうち、図１９（Ｂ）の例では、
MADD:SPd=SPd+SPs×SPt
なる演算処理を行っており、先ずＳＰｓ×ＳＰｔを演算し、この結果にＳＰｄを加える。そして、最終結果を上記ＳＰｄが特定するアドレスに格納する。
【０１４１】
また、図１９Ｃの例では、先ずＳＰｓとＳＰｔとの大小を比較し、条件（ＳＰｓ＞ＳＰｔ）を満たした場合に、ＳＰｓをＳＰｄに転送する。
【０１４２】
CMOV、GT:if(SPs>SPt)SPd=SPs
更に、図１９Ｄは、４オペランドの演算制御を示している。この例の場合、ＳＰｄ，ＳＰｓ，ＳＰｔ，ＳＰｃの各オペランドにつきＭＡＤＤ，ＣＭＯＶによる各処理を示している。ここでは、ＳＰｓとＳＰｔとを掛算し、その値にＳＰｄを加えてＳＰｃと比較し、条件を満たした場合には、ＳＰｄ＝ＳＰｃの場合を除いて前記掛算値とＳＰｄとを加えた値をＳＰｄとすることを示しており、次式となる。
【０１４３】
MADD.CMOV.GT: if(SPd+SPc×SPt>SPc)
SPt=SPd+SPs×SPt;else SPd=SPc
このように、面計算機にあっては、多オペランドであっても、面領域内の計算対象データを、この面領域ごとに一挙に転送・演算するため、効率が落ちることはない。上述のように、本発明の面計算機は、多オペランド構造を採用でき、多段パイプラインに適合するものである。
【０１４４】
更に、図２０ではいわゆるＣ言語におけるｉｆ文を実行する処理を行っている。即ち、前述したように、ＳＩＭＤ方式のように一の命令で同じ処理を施してしまうことは、プログラミングのしにくさに繋がるため、本発明においては、制御面オペランドを用意し、処理を制御するようにしている。この図２０では、条件転送命令Ｃ  ＭＯＶ、ＧＴにて３オペランドＳＰｄ、ＳＰs、ＳＰｔの条件転送の実行を示している。ここでＣ  ＭＯＶはコンディションムーブメント（条件転送）、ＧＴはグレーター（比較）を表す。即ち、制御面領域データＳＰｔとソース面領域データＳＰｓを比較し、条件ＳＰｓ＞ＳＰｔを満たした場合、ディスティネーションオペランドＳＰｄへデータを転送するものである。このように、この発明に係る面計算機は、上記制御面オペランドにより、演算結果に合わせて処理を切り換える。前述したように、この条件分岐処理は、従来の遂次処理における「ジャンプ」に代わる並列処理ということもできる。
【０１４５】
（条件分岐命令）
図２１は、本面計算機が持つ機能のうち、制御面データそのもので演算子を制御する例を示している。この条件分岐処理の例の場合、３オペランドＳＰｄ，ＳＰｓ，ＳＰｔの面実効命令ＥＸＤＴを示している。つまり、ソース面のデータＳＰｓにつき制御面データＳＰｔにより演算の指定を行う。そして、制御面データＳＰｔにて指定された２オペランド命令を実行する。このようにして、面計算機によって並列実行する場合の制御面データによる条件分岐処理を行うことができる。尚、この例は、制御面データＳＰｔを、ＩＦＤＴＣ５内レジスタが０であることを表す条件とし、その結果の格納先がメインメモリ７内のラベル１とすれば、図１７に示す例と同様である。
【０１４６】
尚、上述した発明の実施の形態の一例においては、この発明を自然科学の分野等の大規模な計算に使用する例について説明してきたが、この発明に係る面計算機は、各種シミュレーションや３次元動画像に係る描画等においても迅速な処理を行え、ユーザーの利便性や満足度を向上させることができる。
【０１４７】
本実施形態にかかる面計算機及び面計算機の演算方法によれば、上述のように構成され作用するため、各種物理計算、環境演算、挙動計算、エモーション演算等の複雑な演算処理を高速に行えるようになる。
［他の実施の態様］
本発明に係る面計算機は、少なくとも、格納される領域に関連して面領域データを調整するアドレスを生成するアドレスジェネレータと、前記アドレスジェネレータの後段に設けられ、複数個の単位計算機を有する並列計算機とを備えている。
【０１４８】
更に本発明に係る面計算機は、少なくとも、格納される領域に関連して領域データを調整するアドレスを生成するアドレスジェネレータと、前記アドレスジェネレータの後段に設けられ、複数個の単位計算機を有する並列計算機と、前記並列計算機に接続された記憶装置とを備えている。
【０１４９】
更に本発明に係る面計算機は、少なくとも、格納される領域に関連して領域データを調整するアドレスを生成するアドレスジェネレータと、前記アドレスジェネレータの後段に設けられ、複数個の単位計算機を有する並列計算機とを備え、命令ワードを構成するオペランドによって特定される領域が線分である。
【０１５０】
更に本発明に係る面計算機は、上述の面計算機であって、更に前記並列計算機に接続された記憶装置を備えている。
【０１５１】
更に本発明に係る面計算機は、少なくとも、格納される領域に関連して領域データを調整するアドレスを生成するアドレスジェネレータと、前記アドレスジェネレータの後段に設けられ、複数個の単位計算機を有する並列計算機とを備え、命令ワードを構成するオペランドによって特定される領域が２次元に広がりを持つ面領域である。
【０１５２】
更に本発明に係る面計算機は、上述の面計算機であって、更に前記並列計算機に接続された記憶装置を備えている。
【０１５３】
更に本発明に係る面計算機は、上述の面計算機であって、ワンチップＬＳＩとして形成されている。
【０１５４】
更に本発明に係る面計算機は、上述の面計算機であって、前記記憶装置は、巨大なバス幅のデータバスを介して、前記並列計算機に接続されている。
【０１５５】
更に本発明に係る面計算機は、ワンチップ上に演算ブロックと、記憶ブロックと、両ブロックを接続する比較的広いバス幅のデータバスとを備え、前記演算ブロックは、格納される領域に関連して面領域データを調整するアドレスを生成するアドレスジェネレータと、該アドレスジェネレータの後段に設けられた複数個の単位計算機をもつ並列計算機とを有し、前記記憶ブロックは、ＤＲＡＭを有している。
【０１５６】
更に本発明に係る面計算機は、上述の面計算機であって、前記演算ブロックは、更に、ＣＰＵの制御の下、メインメモリから面計算命令の取り込み及び面領域データの転送を制御する命令フェッチ及びデータ転送制御装置と、該面計算命令に対応して前記ＤＲＡＭへ面領域情報を送るプリプロセッサとを有している。
【０１５７】
更に本発明に係る面計算機は、上述の面計算機であって、前記面計算命令は、命令ワードに線領域を特定するオペランドを含み、線領域データを計算対象データとしている。
【０１５８】
更に本発明に係る面計算機は、上述の面計算機であって、前記面計算命令は、命令ワードに面領域を特定するオペランドを含み、面領域データを計算対象データとしている。
【０１５９】
更に本発明に係る面計算機は、上述の面計算機であって、前記アドレスジェネレータは、計算対象の面領域データに関して、面領域の拡大又は縮小により、面領域データを調整している。
【０１６０】
更に本発明に係る面計算機は、上述の面計算機であって、計算対象の面領域データ間に、アドレスが一致するデータが存在しないとき、コピー，バイリニア及びトライリニアのいずれかの処理を利用して、アドレスが一致するデータを生成している。
【０１６１】
更に本発明に係る面計算機は、上述の面計算機であって、前記並列計算機は、スーパーパイプライン方式として構成されている。
【０１６２】
更に本発明に係る面計算機は、上述の面計算機であって、前記並列計算機は、スーパースカラ方式として構成されている。
【０１６３】
更に本発明に係る面計算機は、上述の面計算機であって、前記面計算機は、その外部にＣＰＵ及びメインメモリを設け、該ＣＰＵに対してコ・プロセッサとして機能している。
【０１６４】
更に本発明に係る面計算機の演算方法は、アドレスジェネレータと複数個の単位計算機をもつ並列計算機とを有する演算ブロックと、記憶ブロックと、両ブロックを接続する比較的広いバス幅のデータバスとを有する面計算機の演算方法であって、前記アドレスジェネレータは、格納される領域に関連して面領域データを調整するアドレスを生成し、並列計算機は、前記面領域データを演算処理する。
【０１６５】
更に本発明に係る面計算機の演算方法は、上述の演算方法であって、前記アドレスジェネレータは、計算対象の面領域データに関して、面領域の拡大又は縮小により面領域データを調整するアドレスを生成している。
【０１６６】
更に本発明に係る面計算機の演算方法は、上述の演算方法であって、命令ワードを構成するオペランドによって、線データ若しくは面領域データが特定される。
【０１６７】
更に本発明に係る面計算機の演算方法は、上述の演算方法であって、前記線データは、前記オペランドが示す互いに異なる一対の点によって特定される。
【０１６８】
更に本発明に係る面計算機の演算方法は、上述の演算方法であって、前記面領域データは、前記オペランドが示す点と該点を基点とする線分とによって特定される。
【０１６９】
更に本発明に係る面計算機の演算方法は、上述の演算方法であって、前記面領域データは、前記オペランドが示す複数個の点によって特定される。
【図面の簡単な説明】
【０１７０】
【図１】図１は、本実施例に係る面計算機の構成を示すブロック図である。
【図２】図２は、図１に示す面計算機の作用を示すフローチャートである。
【図３】図３は、面領域の拡大処理を説明するための図である。
【図４】図４は、面領域の縮小処理を説明するための図である。
【図５】図５は、内挿補間を説明するための図である。
【図６】図６は、パターンマッチング処理を説明するための図である。
【図７】図７は、従来構造であるＳＩＳＤ方式及びＳＩＭＤ方式と本発明に係る面計算機との相違を説明するための模式図である。
【図８】図８は、ＳＩＳＤ方式により行列計算を行う場合の演算処理を説明するための図である。
【図９】図９は、ＳＩＭＤ方式により行列計算を行う場合の演算処理を説明するための図である。
【図１０】図１０は、本発明構造により行列計算を行う場合の演算処理を説明するための図である。
【図１１】図１１は、面計算機における演算処理を説明するための図である。
【図１２】図１２は、面計算機の構成の別例を示す要部ブロック図である。
【図１３】図１３は、命令ワードを説明するための模式図である。
【図１４】図１４は、本発明に係る面計算機におけるオペランド例と補間操作を説明するための図である。
【図１５】図１５は、プロセッサアレイの並列処理を説明する図である。
【図１６】図１６は、面計算機をコ・プロセッサとして用いた構成における命令とデータとの流れを説明する図である。
【図１７】図１７は、面計算機における条件分岐処理を説明するための図である。
【図１８】図１８は、面計算機における間接オペランドを説明するための図である。
【図１９】図１９は、２オペランド、３オペランド、４オペランドにおける演算処理を説明するための図である。
【図２０】図２０は、面計算機における演算例の一例を示す模式図である。
【図２１】図２１は、面計算機における演算例の別例を示す模式図である。
【図１】
2004171590.tif 000003
【図２】
2004171590.tif 000004
【図３】
2004171590.tif 000005
【図４】
2004171590.tif 000006
【図５】
2004171590.tif 000007
【図６】
2004171590.tif 000008
【図７】
2004171590.tif 000009
【図８】
2004171590.tif 000010
【図９】
2004171590.tif 000011
【図１０】
2004171590.tif 000012
【図１１】
2004171590.tif 000013
【図１２】
2004171590.tif 000014
【図１３】
2004171590.tif 000015
【図１４】
2004171590.tif 000016
【図１５】
2004171590.tif 000017
【図１６】
2004171590.tif 000018
【図１７】
2004171590.tif 000019
【図１８】
2004171590.tif 000020
【図１９】
2004171590.tif 000021
【図２０】
2004171590.tif 000022
【図２１】
2004171590.tif 000023