JP2002108837A - 計算機システムとその計算制御方法 - Google Patents

計算機システムとその計算制御方法

Info

Publication number
JP2002108837A
JP2002108837A JP2000299683A JP2000299683A JP2002108837A JP 2002108837 A JP2002108837 A JP 2002108837A JP 2000299683 A JP2000299683 A JP 2000299683A JP 2000299683 A JP2000299683 A JP 2000299683A JP 2002108837 A JP2002108837 A JP 2002108837A
Authority
JP
Japan
Prior art keywords
data
address
computer system
calculation
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2000299683A
Other languages
English (en)
Inventor
Takumi Washio
巧 鷲尾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2000299683A priority Critical patent/JP2002108837A/ja
Priority to US09/964,749 priority patent/US6957324B2/en
Publication of JP2002108837A publication Critical patent/JP2002108837A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)
  • Memory System (AREA)

Abstract

(57)【要約】 【課題】 データの更新処理や、カウンタの更新を伴う
データの分類処理等の各種の処理を、容易にベクトル化
して高速に処理することのできる計算機システムを提供
する。 【解決手段】 複数のメモリバンク40を備える計算機
システムにおいて、計算処理を制御するベクトルプロセ
ッサ11からの制御を受けて指定された演算をベクトル
プロセッサ11から独立に処理する付帯演算機30を各
メモリバンク40毎に備え、各付帯演算機30は、対応
するメモリバンク40内に記録されたベクトルプロセッ
サ11により指定されたアドレスのデータを読出し、読
み出したデータに対してベクトルプロセッサ11により
指定された演算を実行し、演算結果のデータを指定され
たアドレスに書き込むことにより、当該アドレスのデー
タの更新処理を行うことを特徴とする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、複数のメモリバン
クを備える計算機システムに関し、特に、ベトル計算機
や並列計算機等の高速に演算を処理する計算機システム
に関する。
【0002】
【従来の技術】従来より、コンピュータの処理を高速化
するために、べクトル演算処理や、並列演算処理等の技
術が用いられている。
【0003】スーパーコンピュータ等の大型計算機にお
いては、行列計算やFortranのDOループのよう
に、各データに対し同一の手順の演算を繰返し行う処理
が多くの時間を占めている。べクトル演算処理は、こう
した繰返し行う処理を高速化するために、各行列やデー
タをそれぞれにベクトルとしてまとめて1命令で行列の
演算を実行するものであり、行列の各要素毎に1つずつ
演算を行う必要がないために高速に処理が可能となる。
この高速の処理は、各要素に対する命令を、“命令の呼
出”、“命令の解読”、“アドレス計算”等々の部分に
分けパイプライン制御により同時に並列に実行すること
により行われる。
【0004】また、並列処理は、複数のプロセッサやコ
ンピュータを用いて、それぞれに処理を振り分けて並行
して実行することにより、処理を高速化するものであ
る。
【0005】また、このようにベクトルにまとめられた
り、個々のプロセッサに振り分けられた各データは、途
中で各データそれぞれ個別の処理を行う場合も多い。こ
れには、FortranのDOループ中にIF文等の条
件付演算を含む場合等がある。
【0006】例えば、ループ内等において、ある配列内
の要素を間接参照でメモリからロードして、所定の演算
を実行し、その演算結果を同要素が格納されていた元の
アドレスにストアするという操作が現れることがあり、
これは、有限要素法や分子動力学法の科学技術計算等の
多くの場合に現れる。
【0007】このような演算を含むループにおいては、
そのベクトル化(又、並列化)された範囲内においてデ
ータの書込先が重複しない等の保障が必要であり、その
保障のない強制的なベクトル化(又、並列化)には、不
正な演算結果が出力される危険がある。
【0008】また同様にベクトル化(又、並列化)が困
難な処理の例には、例えば、データ集合内の各データを
順次、定められたグループに分類する処理がある。この
分類処理のループにおいては、各グループ毎に設けたカ
ウンタ値を当該グループに各データが分類される度に更
新するのであり、これの強制的なベクトル化(又、並列
化)は、カウンタ値の更新の一貫性が破壊される危険が
ある。
【0009】従来では、このようなループのベクトル化
(又、並列化)においては、プログラム作成者が、デー
タの格納方法を工夫したり計算順序を変更することによ
り、ベクトル化(又、並列化)の各単位において更新デ
ータの格納先の重複や、カウンタ更新の重複等を回避す
る必要があった。
【0010】
【発明が解決しようとする課題】上述したように従来の
計算機システムでは、以下に述べるような問題点があっ
た。
【0011】従来の計算機システムにおいて必要とされ
ていた、更新データの格納先の重複やカウンタ更新の重
複等を回避した特別のプログラムを作成することは、プ
ログラマに大きな負担となっていた。
【0012】更に、このようにプログラムを大幅に変更
する必要性は、過去より蓄積されたプログラムを、ベク
トル計算機や共有メモリ並列計算機等に移植する際の大
きな障害となる。
【0013】更に、並列化やベクトル化のための準備作
業自身が並列化又はベクトル化できないので、アプリケ
ーションによっては高速化が望めないという問題もあ
る。
【0014】本発明の目的は、上記従来技術の欠点を解
決し、例えば前述のメモリ内のデータの更新処理や、カ
ウンタの更新を伴うデータの分類処理等の、従来ではベ
クトル化(又、並列化)が困難であった各種の処理を、
容易にベクトル化(又、並列化)して高速に処理するこ
とのできる計算機システムと、その計算制御方法を提供
することである。
【0015】
【課題を解決するための手段】上記目的を達成するた
め、本発明の計算機システムは、複数のメモリバンクを
備える計算機システムにおいて、計算処理を制御するプ
ロセッサ部からの制御を受けて、指定された演算を前記
プロセッサ部から独立に処理する付帯演算機を、各前記
メモリバンク毎に備え、各前記付帯演算機は、対応する
前記メモリバンク内に記録されたデータに対する演算
や、読出し、書込みを、前記プロセッサ部から送信され
る命令やデータに基づいて処理することを特徴とする。
【0016】請求項2の本発明の計算機システムは、前
記付帯演算機により、対応する前記メモリバンク内に記
録された、前記プロセッサ部により指定されたアドレス
のデータを読出し、前記読み出したデータに対して、前
記プロセッサ部により指定された演算を実行し、演算結
果のデータを、前記指定されたアドレスに書き込むこと
により、当該アドレスのデータの更新処理を行うことを
特徴とする。
【0017】請求項3の本発明の計算機システムは、前
記プロセッサ部により指定されたアドレスのデータを、
前記プロセッサ部により送信されたデータを用いて、前
記プロセッサ部により指定された四則演算を行い、前記
指定されたアドレスのデータを演算結果のデータに更新
する手段を備えることを特徴とする。
【0018】請求項4の本発明の計算機システムは、前
記プロセッサ部により指定されたアドレスのデータに対
して、予め設定された値を加算された値に更新する手
段、及び予め設定された値を減算された値に更新する手
段を備えることを特徴とする。
【0019】請求項5の本発明の計算機システムは、前
記プロセッサ部において、ベクトル演算による計算処理
を実行することを特徴とする。
【0020】請求項6の本発明の計算機システムは、前
記プロセッサ部において、複数のプロセッサを備えて、
処理対象の計算を各前記プロセッサに割当てて並列処理
することを特徴とする。
【0021】請求項7の本発明の計算制御方法は、複数
のメモリバンクを備える計算機システムの計算制御方法
において、計算処理を制御するプロセッサ部が、各前記
メモリバンク毎に備えられた、前記プロセッサ部から独
立した付帯演算機に対し、演算の実行を指示するステッ
プと、前記付帯演算機が、対応する前記メモリバンク内
に記録された、前記プロセッサ部により指定されたアド
レスのデータを読出すステップと、前記読み出したデー
タに対して、前記プロセッサ部により指定された演算を
実行するステップと、演算結果のデータを、前記指定さ
れたアドレスに書き込むステップを備えることにより、
当該アドレスのデータの更新処理を行うことを特徴とす
る。
【0022】請求項8の本発明の計算制御方法は、前記
指定されたアドレスのデータを、前記プロセッサ部から
送信されたデータを用いて、前記プロセッサ部により指
定された四則演算を行い、前記指定されたアドレスのデ
ータを演算結果のデータに更新するステップを備えるこ
とを特徴とする。
【0023】請求項9の本発明の計算制御方法は、前記
指定されたアドレスのデータに対して、予め設定された
値を加算された値に更新するステップ、及び予め設定さ
れた値を減算された値に更新するステップを備えること
を特徴とする。
【0024】請求項10の本発明の計算制御方法は、ベ
クトル演算による計算処理を実行することを特徴とす
る。
【0025】請求項11の本発明の計算制御方法は、処
理対象の計算を、複数のプロセッサに割当てて並列処理
することを特徴とする。
【0026】
【発明の実施の形態】以下、本発明の実施の形態につい
て図面を参照して詳細に説明する。
【0027】本発明の計算機システムは、複数のメモリ
バンクのそれぞれに独立に並列に動作する付帯演算機を
備えて、各メモリバンク毎に局所的な排他処理を行い、
付帯演算機によりメモリバンク内のデータを適切に更新
する。これにより、従来ではベクトル化(又、並列化)
が困難であった各種の処理に対しても、特別のプログラ
ムを必要とすることなく、正確で高速な演算処理を実現
させるのである。
【0028】また、このように本発明の計算機システム
は、ベクトル計算機や(メモリを共有する)並列計算機
等に適応することができる。
【0029】図1は、本発明の計算機システムをベクト
ル計算機システムに適応した実施の形態の一実施例の構
成を示すブロック図であり、図2は、本発明の計算機シ
ステムを並列計算機システムに適応した実施の形態の一
実施例の構成を示すブロック図である。いずれの形態に
おいても、複数の各メモリバンク40にそれぞれ付帯演
算機30を接続している。
【0030】また、図1のベクトル計算機システムの形
態においては、ベクトル演算処理を行うベクトルプロセ
ッサ11を備え、又、図2の並列計算機システムの形態
においては、それぞれが並行して演算処理を実行する複
数のプロセッサ12を備えている。また、本発明の計算
機システムの、これらプロセッサを備える部分をプロセ
ッサ部と呼ぶものとする。
【0031】また、これらプロセッサと各メモリバンク
40との間には、各メモリバンク40へのアクセスや、
各付帯演算機30への命令やデータの送受を制御するメ
モリ制御部20を備えている。
【0032】各付帯演算機30は、対応するメモリバン
ク40内に記録されたデータに対して、例えば、アクセ
ス権(排他制御)の設定や解放、データの読出しや書
込、データの演算等を行う。また、データの演算におい
ては、メモリバンク40から読み出したデータと、プロ
セッサの側から送られたデータとを用いて四則演算等の
各種定められた演算を実行する機能をも備える。そし
て、このメモリバンク40から読み出したデータのアド
レスに、その演算結果のデータを書き込むことにより、
メモリバンク40のデータを更新するのである。また、
付帯演算機30は、このようにメモリバンク40内のデ
ータを更新するのみに限らず、メモリバンク40内に新
規のデータを書き込む機能等を備えてもよい。
【0033】図3は、本発明の図1、図2の各実施の形
態における付帯演算機30とメモリバンク40との接続
と、付帯演算機30の一実施例の構成を示すブロック図
である。
【0034】図3を参照すると、本実施例の付帯演算機
30は、メモリ制御部20とメモリバンク40との間
に、その双方を結ぶメモリ制御線71、データ線72、
アドレス線73を介して接続している。メモリ制御線7
1ではメモリバンク40を制御する命令を通信し、デー
タ線72では記録されたデータや記録するデータを送受
し、アドレス線73ではメモリバンク40内のアクセス
先のデータのアドレスを通信する。
【0035】また、メモリ制御部20と付帯演算機30
の間には、メモリアクセスの排他制御を調停するアクセ
ス調停部60を設けており、メモリ制御部20とアクセ
ス調停部60をアクセス調停線74で、付帯演算機制御
部31とアクセス調停部60をアクセス調停線75で接
続している。また、メモリ制御部20から付帯演算機3
0に対して、実行する演算の内容や更新処理の内容を通
知するための付帯演算機制御線76を備えている。
【0036】次に、本発明の図1、図2の各実施の形態
の計算機システムの処理を説明する。
【0037】図4は、本発明の図1、図2の各実施の形
態の計算機システムの処理を説明するための図であり、
この例においては、所定の計算により算出される値“f
(a,b,c,…)”を、メモリバンク40に記録され
たデータ“Y”に加算して更新する処理を説明するもの
である。なお、“+=”の記号は、左辺に示される変数
の値に、右辺の値を加算する旨を示す演算子である。
【0038】この場合においては、図1のベクトルプロ
セッサ11及び図2のプロセッサ12は、図4の右辺に
示されるように更新に用いるデータ“f(a,b,c,
…)”を算出する処理を実行し、その算出結果を付帯演
算機30の側に渡す。そして、付帯演算機30が、更新
対象のデータ“Y”をロードし、このロードしたデータ
をプロセッサから渡された値と共に指定された演算(図
4の例では加算)を実行し、この更新された“Y”の値
をメモリバンク40に書き込むのである。
【0039】また、付帯演算機30は、プロセッサの側
から独立して演算やデータの読出し書き込みを実行する
演算機であり、プロセッサから受けた命令やデータはデ
ータ用シフトレジスタ33やアドレス用シフトレジスタ
34に順次記録され順番に実行する。このため、プロセ
ッサの側においては、ベクトル演算処理のループ中等に
おいてメモリバンク40のデータを更新する必要が発生
した場合には、その更新処理を付帯演算機30に対して
命令することにより、処理を中断することなく要求され
る演算を適切に実行することができる。
【0040】このため、ループ中にデータの更新処理が
発生する場合等においても、従来では必要とされた特別
のプログラムの作成等の処理が不要となり、利用者は高
速の演算処理を簡易に実行することができる。
【0041】次に、上述の本発明の計算機システムの処
理をフローチャートを参照してより詳細に説明する。図
5は、本発明の図1、図2の各実施の形態の計算機シス
テムの処理を説明するためのフローチャートである。
【0042】まず、図1のベクトルプロセッサ11及び
図2のプロセッサ12は、更新に用いるデータを算出す
る(ステップ501)。この更新に用いるデータとは、
図4の例においては右辺の“f(a,b,c,…)”で
あり、プロセッサはこれを算出するのである。
【0043】次に、プロセッサは、この算出結果である
更新に用いるデータと、更新対象のデータのアドレスの
指定と、更新における演算の内容を、メモリ制御部20
に対し通知する(ステップ502)。図4の例において
は、更新対象のデータのアドレスは、変数“Y”のアド
レスであり、更新における演算の内容は、当該変数
“Y”に対して更新に用いるデータを加算することであ
る。このようにプロセッサは、付帯演算機30に実行さ
せる加算処理等の四則演算やその他の演算処理を指定し
て、メモリ制御部20に通知するのである。
【0044】メモリ制御部20は、プロセッサからのこ
の通知を受けると、付帯演算機30に対してデータの更
新処理を要求する(ステップ503)。この要求先の付
帯演算機30は、更新対象のデータを記録するメモリバ
ンク40に対して設置されているものである。
【0045】ここで、メモリ制御部20は、付帯演算機
30に対して、更新に用いるデータをデータ線72か
ら、更新されるデータのアドレスをアドレス線73か
ら、実行する演算の内容の指定を付帯演算機制御線76
から送信することにより、更新処理を要求する。
【0046】付帯演算機制御部31は、メモリ制御部2
0から送信される信号を検知し、データ用シフトレジス
タ33に更新に用いるデータを記録し、アドレス用シフ
トレジスタ34に更新対象のデータのアドレスを記録す
る。そして、この格納が終了すると、メモリ制御部20
に対して格納動作の終了の旨を付帯演算機制御線76を
通して通知する。
【0047】付帯演算機30は、データ用シフトレジス
タ33及びアドレス用シフトレジスタ34に記録された
データやアドレスを、記録された順番に読み出して演算
を実行する。
【0048】ここで、メモリ制御部20から受けたデー
タを実行する順番が到来した場合には、付帯演算機30
は、そのメモリアクセスの処理を実行する。データ用シ
フトレジスタ33の出口にデータが現れた場合には、付
帯演算機制御部31は、データ用シフトレジスタ33及
びアドレス用シフトレジスタ34の出口のデータを取り
出して、それぞれをレジスタ(レジスタ37とレジスタ
35)に格納し、アクセス調停部60に対してメモリバ
ンク40のアクセス権をアクセス調停線75を通して要
求する(ステップ504)。
【0049】アクセス調停部60は、前記アクセス権の
要求を受けると、メモリバンク40の接続をメモリ制御
部20から付帯演算機30の側に切り替える。例えば、
図3の装置構成において、スイッチ81、82、83、
84をオフとし、スイッチ85、86をオンにするので
ある。そして、付帯演算機制御部31に対して、メモリ
バンク40へのアクセス許可をアクセス調停線75を通
して発行する。
【0050】付帯演算機制御部31は、メモリバンク4
0のデータへのアクセス権を得ると、更新対象のデータ
をレジスタ36に読み込む(ステップ505)。
【0051】そして、付帯演算機演算部32は、このレ
ジスタ36に記録された更新対象のデータと、レジスタ
37に記録された更新に用いるデータを用いて、指定さ
れた演算を実行し、その演算結果をレジスタ38に格納
する(ステップ506)。
【0052】そして、付帯演算機制御部31は、スイッ
チ32−1をオンにし、更新されたデータをメモリバン
クに書き込む(ステップ507)。
【0053】付帯演算機制御部31は、前記書き込み処
理が終了すると、アクセス調停部60に対して、メモリ
バンクのアクセス権の返還をアクセス調停線75を通し
て通知する(ステップ508)。アクセス調停部60
は、アクセス権の返還の通知を受けると、ステップ50
4において変更したスイッチの状態を元に戻す等によ
り、メモリバンク40の接続を付帯演算機30からメモ
リ制御部20の側に切り替えて元の状態に戻すのであ
る。
【0054】以上により、付帯演算機30を用いるデー
タの更新処理の一連の動作が終了する。
【0055】付帯演算機30にシフトレジスタ33、3
4を設けた理由は、同一メモリバンクへのデータ更新要
求が短い時間間隔で生じた場合でも、更新要求を貯めて
おき、メモリ制御部20が速やか次の処理に移れるよう
にするためである。
【0056】また、付帯演算機30によるデータ更新中
においては、例えば上記の例においては、スイッチ8
1、82、83、84がオフになっているために、メモ
リ制御部20は、メモリバンク40にアクセスすること
はできないが、付帯演算機30に対して、更新に用いる
データと更新されるデータのアドレスをそのシフトレジ
スタ33、34に書き込むことができる。
【0057】また、図5のフローチャートの例において
は、プロセッサの側から更新に用いるデータを送信する
ものであったが、他に例えば、記録されたデータの値を
“1”つづつ増加させるカウンタの処理の場合等におい
ては、そのカウンタ処理の旨と、更新対象のデータのア
ドレスを通知するのみで十分であり、更新に用いるデー
タの値を送る必要はない。本発明の計算機システムは、
図5のフローチャートと同様にしてこうした処理に対応
させることができる。
【0058】図6は、本発明の図1、図2の各実施の形
態の計算機システムによるカウンタの加算処理を説明す
るためのフローチャートである。付帯演算機30は、カ
ウンタを排他的に加算更新を実行する。
【0059】まず、図1のベクトルプロセッサ11又は
図2のプロセッサ12は、メモリ制御部20に対して、
加算更新の対象である整数データのアドレスと、当該整
数データに対して加算更新を実行する旨を通知する(ス
テップ601)。
【0060】メモリ制御部20は、これを受けると、ア
クセス調停部60に対して加算演算の許可をアクセス調
停線74を通して要求する(ステップ602)。アクセ
ス調停部は、もし付帯演算機30の側にアクセス権を与
えていない場合には、メモリ制御部20にアクセス権を
与えてその旨をアクセス調停線74を通して通知し、
又、オン・オフの変更の必要なスイッチを変更する。
【0061】メモリ制御部20は、アクセス権を得ると
付帯演算機制御部31に対して、加算更新の実行を付帯
演算機制御線76を通して要求する(ステップ60
3)。付帯演算機制御部31は、これを受けてスイッチ
34−1をオンにする。
【0062】次に、メモリ制御部20は、加算更新対象
のデータを読み出す(ステップ604)。これは、加算
更新対象のデータのアドレスをアドレス線73に出力し
て、その加算更新対象のデータをデータ線72から受け
取ることができる。また、付帯演算機制御部31におい
ても、ここで加算対象のデータ及びそのデータのアドレ
スのそれぞれを、前記読み込み動作中にデータ線77と
アドレス線73のそれぞれから読み取って、それぞれを
レジスタ(レジスタ36とレジスタ35)に格納するこ
とができる。
【0063】アクセス調停部60は、このメモリ制御部
20による動作が終了すると、アクセス権を自動的に付
帯演算機30の側に切り替える(ステップ605)。例
えば、スイッチ81、82、83、84をオフにするの
である。
【0064】付帯演算機制御部31は、付帯演算機演算
部32を用いて加算対象のデータの加算の演算を実行す
る(ステップ606)。これは、付帯演算機制御部31
が、加算対象のデータをレジスタ36から読み出して、
所定の加算演算を実行し、更新されたデータをレジスタ
38に格納するのである。
【0065】そして、付帯演算機制御部31は、ここで
更新されたデータを加算対象のデータの元のアドレスに
書き込み、そのデータを更新する(ステップ607)。
これは、付帯演算機制御部31が、スイッチ86と32
−1とをオンにし、レジスタ38に格納されている更新
されたデータを、レジスタ35に示される加算対象のデ
ータのメモリバンク40内の元のアドレスに書き込むの
である。
【0066】付帯演算機制御部31は、この書込処理が
終了すると、アクセス調停部60に対してアクセス権の
返還を通知する(ステップ608)。アクセス調停部6
0は、アクセス権の返還の通知を受けると、各スイッチ
を所定の状態に戻す等により、メモリバンク40の接続
を付帯演算機30からメモリ制御部20の側に切り替え
て元の状態に戻すのである。
【0067】以上により、付帯演算機30を用いるカウ
ンタの更新処理の一連の動作が終了する。
【0068】このように、データの加算更新中において
は、他のメモリアクセスを許さないようにすることによ
り、カウンタの値を正確に一貫性を保って更新すること
ができる。
【0069】次に、本発明の図1や図2の各実施の形態
を、具体的な処理の実施例を用いて説明する。
【0070】まず第1の実施例として、疎行列の演算を
考える。疎行列とは、行列成分に“0”以外の要素が少
ない行列である。このため、疎行列の演算においては、
値が“0”である殆どの要素に対して演算を実行する必
要がない等の場合が多く、その演算に際しては様々な高
速処理の技術が用いられている。
【0071】図7は、本実施例において演算する式を示
す図であり、ここでは疎行列Aに対して配列xを掛けて
得られる配列を、配列yに対して加算する処理を演算す
るのである。つまり、“y=y+Ax”(又“y+=A
x”)の式に示される演算を実行するのである。
【0072】図8は、こうした“y=y+Ax”の行列
演算を処理するアルゴリズムの一例を示すフローチャー
トである。
【0073】図8においては、疎行列Aの“0”以外の
要素(非ゼロ成分)の総数を“n”と示し、その非ゼロ
成分の各値を“配列a”の各要素が示すものとする。つ
まり、配列aの要素であるn個の値、a(i)(i=1
〜n)が、疎行列Aの非ゼロ成分の各値を示すのであ
る。
【0074】また、配列aが示す疎行列Aの要素の座標
を示す行番号と列番号とを、配列rowと配列colu
mnとのそれぞれにより示すものとする。つまり、各i
(=1〜n)におけるa(i)の値は、疎行列Aの(r
ow(i)、column(i))の座標の値である。
また、配列aが、疎行列Aの各非ゼロ成分を示す順番は
任意である。
【0075】図8においては、このように予め疎行列A
の非ゼロ成分を抽出して、演算処理をその非ゼロ成分に
対してのみ行うことにより、必要とする演算回数を大幅
に削減し高速化を図っているのである。この技術は、従
来よりベクトル計算機等の高速処理を行う計算機システ
ムにおいて実施されている。
【0076】図9と図10は、この図8に示されるアル
ゴリズムを用いた、図7の例の“y=y+Ax”の行列
演算を示す図である。
【0077】図7の例においては、行列Aの非ゼロ成分
は4個であり(よってn=4)、これをここでは、座標
(1、1)(1、2)(3、1)(5、5)の順番に配
列aに格納している。よってa(i)(i=1〜4)の
値は、順に“5”、“6”、“7”、“8”である。
【0078】そして、この各配列a、column、r
ow、x、yを用いて演算を行うことができ、プロセッ
サは、更新に用いるデータである各k=1〜4に対する
“a(k)*x(column(k))”の値を図9に
示されるように算出し、更新対象のデータのアドレスで
ある各k=1〜4に対する“y(row(k))”のデ
ータのアドレスを検出し、これらを加算更新を行う旨の
命令と共にメモリ制御部20に送る。そして、付加演算
機30が、メモリ制御部20からこれらのデータや命令
を受け付けて、配列yの更新を実行する。
【0079】よって、yの各要素がy(1)=19、y
(3)=17、y(5)=14として更新され、yは、
y=(19、8、17、10、14)に更新される。
【0080】ここで注意する点は、行列Aにおいては、
1つの行に非ゼロ成分が座標(1、1)と座標(1、
2)との2箇所に存在することである。“y(row
(k))”に対して“a(k)*x(column
(k))”の値を加算し更新する処理は、この座標
(1、1)と座標(1、2)とのそれぞれを順次実行す
る必要があるのであり、この双方の更新を同時に処理し
たのでは不正な結果が出力されることとなる。
【0081】例えば、更新前のy(1)の値は“7”で
あり、このy(1)の値はインデックスk=1とk=2
の時に更新される。ここで、図10においては、インデ
ックス順にまずk=1の更新を行い“12”を加えた後
に、続いてk=1の更新を行い“0”を加えるため、y
(1)は正しく“19”に更新されている。しかし、こ
こでのk=1とk=2の更新が同時に実行されると、同
じy(1)の値がそれぞれに“19”と“7”に更新さ
れることになり、不正な結果が出力される危険がある。
【0082】この図8に示される演算処理は、疎行列A
の1つの行に2以上の非ゼロ成分が存在する可能性があ
るために、もしベクトル計算機や共有メモリ並列計算機
により処理しようとしても、ステップ803において配
列yの同一の要素を更新する命令が、ベクトル化された
1つの単位内に発生したり、異なるプロセッサに並列化
されて更新が同時に要求されることにより、正確な更新
ができないという危険がある。このため、通常のベクト
ル計算機や共有メモリ並列計算機では、インデックスk
に関してベクトル化又並列化を行うことはできなかっ
た。しかし、図3に示した付帯演算機30を以下のよう
に用いることにより、インデックスkに関してベクトル
化及び並列化が可能になる。
【0083】図11は、本発明の図1のベクトル計算機
システムの形態における行列演算“y=y+Ax”の処
理を説明するためのフローチャートである。
【0084】図11においては、図8の説明において示
されたものと同様に、(疎)行列Aの非ゼロ成分(全n
個)を任意の順番により、配列a(i)(i=1〜n)
により示し、その各a(i)が示す行列Aの要素の座標
が、配列rowと配列columnを用いて(row
(i)、column(i))と示されるものとする。
【0085】また、図11においては、インデックスk
(=1〜n)を用いて、これをベクトルレジスタ長VL
毎に区切ってベクトル処理を実施するものである。この
ベクトルレジスタ長VLは、1回のベクトル化において
まとめられる要素の数を示すものであり、個々のベクト
ル計算機において設定された所定の値が使用される。ま
た、これによりまとめられる最後のセグメントは、VL
よりも短くなる可能性があるため“L=min(n−k
+1,VL)”によりセグメントの長さを設定すること
で、配列a等における未定義のデータ(番号nを超過す
る配列のデータ)を読み出す等の問題を解消している。
【0086】また、計算処理を実行するステップ903
においては、ベクトルレジスタ長VLにまとめられたベ
クトルレジスタとして、Vcol、Vrow、Va、V
axを定義して用いている。
【0087】図11を参照すると、本実施の形態のベク
トル計算機システムでは、行列演算“y=y+Ax”を
以下のように行っている。
【0088】まず始めに、インデックスkに初期値であ
る“1”を設定し(ステップ901)、このkの値が非
ゼロ成分の総数“n”を超えるまでステップ903の計
算処理を実行する(ステップ902)。
【0089】ステップ903の計算処理においては、ま
ず1〜nまでを、VLの倍数毎に区分けしてベクトル化
する範囲を設定している。つまり、(1〜VL)、(V
L+1〜2*VL)、(2*VL+1〜3*VL)、…
のように“n”を超えるまでを区分けしている。
【0090】ここでは、まず、i_vector_lo
ad命令により、アドレス用ベクトルレジスタVcol
に、整数配列columnのインデックスkから始まる
L個の連続にならんだデータをロードする。また、kの
値は、ステップ904の更新処理において示されるよう
にVLの整数倍を成している。同様に、アドレス用ベク
トルレジスタVrowに、整数配列rowのデータをロ
ードする。
【0091】また、r_vector_load命令に
より、ベクトルレジスタVaに、実数配列aから非ゼロ
成分の実数データをロードする。
【0092】次に、gather命令により、ベクトル
レジスタVxに、実数配列xのデータにおけるアドレス
用ベクトルレジスタVcolに順次示される位置のデー
タをロードする。
【0093】その後、vector_op命令におい
て、ベクトル演算パイプラインを用いVaとVxのデー
タの積を計算し、ベクトルレジスタVaxに格納する。
このベクトル演算は各ベクトルレジスタの要素毎に積を
算出するものであり、つまり、ここで“Vax=Va*
Vx”の演算は、“Vax(i)=Va(i)*Vx
(i)”(i=1〜L)をベクトル演算パイプラインに
より演算することを意味する。
【0094】最後にscatter&add命令によ
り、実数配列yにおけるアドレス用ベクトルレジスタV
rowに順次示される位置のデータに、付帯演算機30
によりVaxのデータを加算し、yをもとの場所に格納
してデータを更新する。
【0095】ここで、scatter&add命令は、
図3の付帯演算機30を用いてscatter処理によ
り分配されたデータの加算更新を行うことを指示するコ
マンドである。すなわち、ベクトルプロセッサは、ベク
トルレジスタVaxの各データを、配列y内の対応する
データを格納すべきメモリバンクに、アドレス用ベクト
ルレジスタVrowを参照してscatter処理によ
り分配し、付帯演算機30が分配されたデータを用いて
y内の対応するデータの加算更新を実行するのである。
【0096】そして、このステップ903のVL個の要
素を一まとめにしたベクトル演算が終了すると、インデ
ックスkにVLを加算して更新し(ステップ904)、
再びステップ902以下の処理に戻り計算を続行する。
【0097】そして、行列Aの全ての非ゼロ成分の演算
処理が終了すると、ベクトルプロセッサと付帯演算機3
0の間で同期を取り(ステップ905)、付帯演算機3
0に加えられるデータが残っていないかどうかの確認等
を行い更新動作を終了する。
【0098】以上のように、本実施の形態のベクトル計
算機システムを用いることにより、容易にインデックス
kに関してベクトル化を行うことができる。例えば、前
述の図7の式の計算においては、y(1)の値のk=
1、2における更新は、ベクトルプロセッサ11から順
次付帯演算機30に対して更新の命令が送信され、これ
が順次シフトレジスタに記録されて順番に実行されるた
め、正しく更新が実行されるのである。
【0099】図12は、本発明の図2の共有メモリ並列
計算機システムの形態における行列演算“y=y+A
x”の処理を説明するためのフローチャートである。図
12では、1からnまでのインデックスを2つに分割し
て、それぞれを2つのプロセッサ12により並列に処理
している。また、ここでフローチャート中の“[n/
2]”の記号は、n/2よりも小さい整数の内で最大の
値を示すものとする。
【0100】先のベクトル計算機システムにおいては、
同一のデータの更新処理がベクトル化された1つの単位
内に発生した場合に、不正な更新が行われることを防止
するものであった。ここでの、共有メモリ並列計算機シ
ステムの形態においては、同一のデータの更新処理が異
なるプロセッサに割当てられた場合に、それぞれのプロ
セッサにより個別に更新が実行され、不正な更新が行わ
れることを防止する。
【0101】ここで、ステップ1204とステップ12
08における計算処理においては、先に説明したベクト
ル計算機の場合と同様に、演算子“+=”に示される右
側の被演算データに左側の被演算データを加えて更新す
る処理を、図3の付帯演算機30を用いて処理するので
ある。
【0102】すなわち図2の各プロセッサ12は、a
(k)*x(column(k))の値を計算し、その
計算結果のデータをy(row(k))のアドレスの指
定と加算処理を実行する旨の命令と共に、メモリ制御部
20に送る。
【0103】メモリ制御部20は、このy(row
(k))のデータの格納された付帯演算機30に対し
て、これらのデータやアドレスと共に、加算処理を実行
する旨の命令を送る。付帯演算機30は、この命令を受
けてy(row(k))の加算更新を実行するのであ
る。
【0104】前記のベクトル計算機システム及び共有メ
モリ並列計算機システムでの実施例のように、メモリバ
ンクに接続された付帯演算機でデータの加算更新を行う
ことにより、最終的な加算結果の正当性が守られる。
【0105】この際、各メモリバンクでの加算更新は逐
次に実行されるが、それぞれメモリバンクが他とは独立
に動作するので全体として高速な演算が実現される。
【0106】続いて、第2の実施例として、カウンタの
更新処理を考える。第1の実施例と同様に、同一のカウ
ンタの更新がベクトル化された1つの単位内に発生した
場合や、並列処理における異なるプロセッサから同時に
発生した場合においても、カウンタを正確にかつ高速に
更新するのである。
【0107】この実施例におけるカウンタの更新処理
は、複数個の実数値のデータをその整数部分が等しいも
の毎にそれぞれを分類する分類処理において、各グルー
プに分類されたデータをカウントする(又そのデータの
位置を記録する)るものである。
【0108】図13は、本実施例における実数値データ
の整数部分に基づく分類処理の内容を説明するための図
である。分類対象のデータとして5つの実数値を備える
配列x=(1.2、2.0、1.4、4.5、2.5)
がある。このxの各要素のデータを整数部分に基づいて
分類し、分類結果を順次配列list(j、i)に記録
するのである。ここで、配列list(j、i)は、各
列(i)において分類された整数部分の値を示し、各行
(j)において分類されたデータの数を示し、この配列
の(j、i)成分は、整数部分の値が“i”である
“j”番目に分類されたデータのインデックスを示すも
のである。
【0109】図14は、こうした実数データの整数部分
に基づく分類を処理するアルゴリズムの一例を示すフロ
ーチャートである。
【0110】図14においては、分類する実数データの
総数を“n”と示し、その各実数データを配列xにより
x(i)(i=1〜n)と示す。また関数“int”は
実数データの整数部分を出力する。
【0111】また、配列countにより、各整数グル
ープに分類された実数データの総数を示す。例えば、
“count(2)”により、これまでに分類された整
数部分が“2”である実数データの総数が示されるので
ある。また、前述の様に2次元配列list(j、i)
は、分類されたデータの元の配列xにおけるインデック
スを示す。ここで、配列countや2次元配列lis
tのサイズは、予め適切なサイズを設定しておく。ま
た、配列countの各要素の値は、計算処理の実行前
に予め“0”に初期化しておく。また、“count
(i)++”は、配列の要素“count(i)”の値
を1つ増加させる命令を意味する。
【0112】図14のステップ1403における計算処
理では、各インデックスkにおいて、x(k)の整数部
分“i”を計算し、その整数部分“i”に該当するカウ
ンタ値“count(i)”の値を“1”増加させる。
そして、2元配列listにおける、当該整数部分
“i”の当該カウンタ値“count(i)”を示す要
素“list(count(i)、i)”に対して、現
在のインデックスの値“k”を代入する。この操作を全
てのk(=1〜n)に対し順次実行することにより、図
13の例に示されるように実数データが分類されるので
ある。
【0113】図15は、この図14に示されるアルゴリ
ズムを用いた、図13の例の実数データx=(1.2、
2.0、1.4、4.5、2.5)を分類する処理を説
明するための図である。
【0114】図15においては、配列xの次数データを
順次1つずつ図14のアルゴリズムに基づいて、各グル
ープ毎にカウントすることにより、インデックスの値
“k”の代入先である2元配列listの座標が求めら
れている。
【0115】しかし、図14に示される分類処理では、
整数部分が等しいデータを分類する処理が1つのベクト
ル化の単位内に発生したり、異なるプロセッサから同時
に発生する可能性があり、配列countや2元配列l
istが不正に更新される危険があるため、従来のベク
トル計算機や共有メモリ並列計算機ではインデックスk
に関してベクトル化及び並列化ができなかった。
【0116】しかし、図3に示した付帯演算機30を以
下のように用いることにより、インデックスkに関する
ベクトル化及び並列化が可能になる。
【0117】図16は、本発明の図1のベクトル計算機
システムの形態における実数データの整数部分に基づく
分類処理を説明するためのフローチャートである。
【0118】図16においては、図14の説明において
示されたものと同様に、分類対象の実数データ(全n
個)を、配列x(i)(i=1〜n)により示し、その
各要素x(i)の分類を、前述の様に配列countを
用いて、2元配列listに記録するのである。
【0119】また、図11においては、第1の実施例の
場合と同様にインデックスk(=1〜n)を用いて、こ
れをベクトルレジスタ長VL毎に区切ってベクトル処理
を実施するものである。また、これによりまとめられる
最後のセグメントは、VLよりも短くなる可能性がある
ため“L=min(n−k+1,VL)”により適切な
セグメントの長さを設定する。
【0120】また、計算処理を実行するステップ160
3においては、ベクトルレジスタ長VLにまとめられた
ベクトルレジスタとして、Vx、Vint、Vcn、V
adを定義して用いている。
【0121】この計算処理においては、2元配列lis
tの各要素list(j、i)を、1次元配列にlis
t(m*(i-1)+j)=list(j、i)の方式に
より変換して指定している。また、ここで“m”は、2
元配列配列list(j、i)の第1次元目の総個数で
ある(つまり、2元配列配列listは、各iにおいて
list(1、i)からlist(m、i)までの要素を備
える。)。
【0122】また、図16のフローチャートの処理にお
ける計算処理を実行するステップ1603以外は、図1
1に示される第1の実施例と同様である。
【0123】図16の実施例の計算処理においては、ま
ず、r_vector_load命令により、実数配列
x内のインデックスkからk+L−1までの各データ
を、ベクトルレジスタVxにロードする。
【0124】次に、vector_op命令では、ベク
トル演算パイプラインを用いてVx内の各実数データの
整数部を計算し、アドレス用ベクトルレジスタVint
に格納する。つまり、Vint(i)=int(Vx
(i))、(i=1〜L)の演算を行う。
【0125】次に、gather&inc命令により、
各整数部分Vint(i)の値のカウンタ値count
(Vint(i))の値を“1”増加させて、gath
er処理によりベクトルレジスタVcnにロードする。
ここで、式の右辺“count(Vint(i))”の
項の左側につけられた演算子“++”は、右辺の値を左
辺に代入する前に、その“count(Vint
(i))”の項の値を“1”増加させる命令を意味す
る。
【0126】ここで、gather&inc命令におい
ては、単にgather処理によるデータのロードを行
うだけでなく、ロードされる整数データの排他的な加算
更新を各メモリバンク40において付帯演算機30によ
り行うことを指示する。
【0127】次に、vector_op命令において
は、ベクトル演算パイプラインを用いて、各要素の整数
部分の値Vint(i)とカウンタ値Vcn(i)を基
に配列listの格納先インデックスを計算し、アドレ
ス用ベクトルレジスタVadに格納する。
【0128】最後に、scatter命令においては、
このVadの格納先インデックスの値を参照しながら、
list内の対応するアドレスに各インデックスの値
(k〜k+L−1)を分配する。
【0129】以上のように、本実施の形態のベクトル計
算機システムを用いることにより、容易にインデックス
kに関してベクトル化を行うことができる。例えば、前
述の図13、図15に示される分類処理の例において
は、k=1、3において共通の整数部分“1”が示さ
れ、k=2、5において共通の整数部分“2”が示され
ているため、従来のベクトル計算機システムではベクト
ル化することができなかった。しかし、本実施の形態の
ベクトル計算機システムでは、これらを全て1つのベク
トルにベクトル化した場合においても、ベクトルプロセ
ッサ11から順次付帯演算機30に対して更新の命令が
送信され、これが順次シフトレジスタに記録されて順番
に実行されるため、正しく更新が実行されるのである。
【0130】図17は、本発明の図2の共有メモリ並列
計算機システムの形態における実数データの整数部分に
基づく分類処理を説明するためのフローチャートであ
る。図17では、1からnまでのインデックスを2つに
分割して、それぞれを2つのプロセッサ12により並列
に処理している。
【0131】ここで、ステップ1704とステップ17
08における計算処理においては、先に説明したベクト
ル計算機の場合と同様に、カウンタcountの更新処
理と、実数データの分類先をlistに記録する処理と
を、図3の付帯演算機30を用いて処理するのである。
【0132】以上説明されたように、ベクトル計算機シ
ステム及び共有メモリ計算機システムによる各実施の形
態の本発明の計算機システムは、メモリバンク40に接
続された付帯演算機30において、データの更新処理や
カウンタの加算処理を行うことにより、正確かつ高速に
演算を処理することができる。この際、各メモリバンク
40におけるデータの更新は逐次に実行されるが、それ
ぞれのメモリバンクが他のメモリバンクと独立に動作す
るため、全体として高速な演算が行われる。
【0133】また、上述された本発明の計算機システム
の、ベクトル計算機システムによる形態と、共有メモリ
計算機システムによる形態とは、合わせて実施すること
ができる。つまり、図2に示される共有メモリ計算機シ
ステムの各プロセッサに、本発明のベクトル演算を実行
するベクトルプロセッサを用いることが可能である。
【0134】以上好ましい実施の形態及び実施例をあげ
て本発明を説明したが、本発明は必ずしも上記実施の形
態及び実施例に限定されるものではなく、その技術的思
想の範囲内において様々に変形して実施することができ
る。
【0135】
【発明の効果】以上説明したように本発明の計算機シス
テムによれば、以下のような効果が達成される。
【0136】第1に、本発明の計算機システムでは、複
数のメモリバンクのそれぞれに独立かつ並列に動作する
付帯演算機を備えて、各メモリバンク毎に局所的な排他
処理を行うことにより、ベクトル演算や並列処理におけ
る個々のデータの一貫性を保った更新処理を、正確に容
易に高速に処理することができる。
【0137】第2に、本発明の計算機システムにより、
メモリ内のデータの更新処理や、カウンタの更新を伴う
データの分類処理等の、従来ではベクトル化(又、並列
化)が困難であった各種の処理を、容易にベクトル化
(又、並列化)して高速に処理することができる。
【図面の簡単な説明】
【図1】 本発明の計算機システムをベクトル計算機シ
ステムに適応した実施の形態の一実施例の構成を示すブ
ロック図である。
【図2】 本発明の計算機システムを並列計算機システ
ムに適応した実施の形態の一実施例の構成を示すブロッ
ク図である。
【図3】 本発明の付帯演算機30とメモリバンク40
との接続と、付帯演算機30の一実施例の構成を示すブ
ロック図である。
【図4】 本発明の計算機システムの処理を説明するた
めの図であり、
【図5】 本発明の計算機システムの処理を説明するた
めのフローチャートである。
【図6】 本発明の計算機システムによるカウンタの加
算処理を説明するためのフローチャートである。
【図7】 行列演算の一例を示す図である。
【図8】 “y=y+Ax”の行列演算を処理するアル
ゴリズムの一例を示すフローチャートである。
【図9】 図8に示されるアルゴリズムを用いた、図7
の“y=y+Ax”の行列演算を示す図である。
【図10】 図8に示されるアルゴリズムを用いた、図
7の“y=y+Ax”の行列演算を示す図である。
【図11】 本発明の図1のベクトル計算機システムの
形態における行列演算“y=y+Ax”の処理を説明す
るためのフローチャートである。
【図12】 本発明の図2の共有メモリ並列計算機シス
テムの形態における行列演算“y=y+Ax”の処理を
説明するためのフローチャートである。
【図13】 実数値データの整数部分に基づく分類処理
を説明するための図である。
【図14】 実数データの整数部分に基づく分類を処理
するアルゴリズムの一例を示すフローチャートである。
【図15】 図14に示されるアルゴリズムを用いた、
図13の例の実数データを分類する処理を説明するため
の図である。
【図16】 本発明の図1のベクトル計算機システムの
形態における実数データの整数部分に基づく分類処理を
説明するためのフローチャートである。
【図17】 本発明の図2の共有メモリ並列計算機シス
テムの形態における実数データの整数部分に基づく分類
処理を説明するためのフローチャートである。
【符号の説明】
11 ベクトルプロセッサ 12 プロセッサ 20 メモリ制御部 30 付帯演算機 31 付帯演算機制御部 32 付帯演算機演算部 32−1 スイッチ 33 データ用シフトレジスタ 34 アドレス用シフトレジスタ 34−1 スイッチ 35、36、37、38 レジスタ 40 メモリバンク 60 アクセス調停部 71 メモリ制御線 72 データ線 73 アドレス線 74、75 アクセス調停線 76 付帯演算機制御線 77 データ線 81、82、83、84、85、86 スイッチ

Claims (11)

    【特許請求の範囲】
  1. 【請求項1】 複数のメモリバンクを備える計算機シス
    テムにおいて、 計算処理を制御するプロセッサ部からの制御を受けて、
    指定された演算を前記プロセッサ部から独立に処理する
    付帯演算機を、各前記メモリバンク毎に備え、 各前記付帯演算機は、 対応する前記メモリバンク内に記録されたデータに対す
    る演算や、読出し、書込みを、前記プロセッサ部から送
    信される命令やデータに基づいて処理することを特徴と
    する計算機システム。
  2. 【請求項2】 前記付帯演算機は、 対応する前記メモリバンク内に記録された、前記プロセ
    ッサ部により指定されたアドレスのデータを読出し、 前記読み出したデータに対して、前記プロセッサ部によ
    り指定された演算を実行し、 演算結果のデータを、前記指定されたアドレスに書き込
    むことにより、当該アドレスのデータの更新処理を行う
    ことを特徴とする請求項1に記載の計算機システム。
  3. 【請求項3】 前記プロセッサ部により指定されたアド
    レスのデータを、前記プロセッサ部により送信されたデ
    ータを用いて、前記プロセッサ部により指定された四則
    演算を行い、前記指定されたアドレスのデータを演算結
    果のデータに更新する手段を備えることを特徴とする請
    求項1又は請求項2に記載の計算機システム。
  4. 【請求項4】 前記プロセッサ部により指定されたアド
    レスのデータに対して、予め設定された値を加算された
    値に更新する手段、及び予め設定された値を減算された
    値に更新する手段を備えることを特徴とする請求項1か
    ら請求項3のいずれか一つに記載の計算機システム。
  5. 【請求項5】 前記プロセッサ部は、 ベクトル演算による計算処理を実行することを特徴とす
    る請求項1から請求項4のいずれか一つに記載の計算機
    システム。
  6. 【請求項6】 前記プロセッサ部は、 複数のプロセッサを備えて、処理対象の計算を各前記プ
    ロセッサに割当てて並列処理することを特徴とする請求
    項1から請求項5のいずれか一つに記載の計算機システ
    ム。
  7. 【請求項7】 複数のメモリバンクを備える計算機シス
    テムの計算制御方法において、 計算処理を制御するプロセッサ部が、各前記メモリバン
    ク毎に備えられた、前記プロセッサ部から独立した付帯
    演算機に対し、演算の実行を指示するステップと、 前記付帯演算機が、 対応する前記メモリバンク内に記録された、前記プロセ
    ッサ部により指定されたアドレスのデータを読出すステ
    ップと、 前記読み出したデータに対して、前記プロセッサ部によ
    り指定された演算を実行するステップと、 演算結果のデータを、前記指定されたアドレスに書き込
    むステップを備えることにより、当該アドレスのデータ
    の更新処理を行うことを特徴とする計算制御方法。
  8. 【請求項8】 前記指定されたアドレスのデータを、前
    記プロセッサ部から送信されたデータを用いて、前記プ
    ロセッサ部により指定された四則演算を行い、前記指定
    されたアドレスのデータを演算結果のデータに更新する
    ステップを備えることを特徴とする請求項7に記載の計
    算制御方法。
  9. 【請求項9】 前記指定されたアドレスのデータに対し
    て、予め設定された値を加算された値に更新するステッ
    プ、及び予め設定された値を減算された値に更新するス
    テップを備えることを特徴とする請求項7又は請求項8
    に記載の計算制御方法。
  10. 【請求項10】 ベクトル演算による計算処理を実行す
    ることを特徴とする請求項7から請求項9のいずれか一
    つに記載の計算制御方法。
  11. 【請求項11】 処理対象の計算を、複数のプロセッサ
    に割当てて並列処理することを特徴とする請求項7から
    請求項10のいずれか一つに記載の計算制御方法。
JP2000299683A 2000-09-29 2000-09-29 計算機システムとその計算制御方法 Withdrawn JP2002108837A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2000299683A JP2002108837A (ja) 2000-09-29 2000-09-29 計算機システムとその計算制御方法
US09/964,749 US6957324B2 (en) 2000-09-29 2001-09-28 Computer system and method of controlling computation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000299683A JP2002108837A (ja) 2000-09-29 2000-09-29 計算機システムとその計算制御方法

Publications (1)

Publication Number Publication Date
JP2002108837A true JP2002108837A (ja) 2002-04-12

Family

ID=18781457

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000299683A Withdrawn JP2002108837A (ja) 2000-09-29 2000-09-29 計算機システムとその計算制御方法

Country Status (2)

Country Link
US (1) US6957324B2 (ja)
JP (1) JP2002108837A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009009447A (ja) * 2007-06-29 2009-01-15 Nippon Telegr & Teleph Corp <Ntt> データ処理装置
JP2011233155A (ja) * 2011-06-16 2011-11-17 Nippon Telegr & Teleph Corp <Ntt> データ処理装置
JP2014504418A (ja) * 2010-12-22 2014-02-20 インテル・コーポレーション ベクトルコンフリクト命令

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7404065B2 (en) * 2005-12-21 2008-07-22 Intel Corporation Flow optimization and prediction for VSSE memory operations
KR102099914B1 (ko) 2013-10-29 2020-05-15 삼성전자주식회사 영상 처리 장치 및 영상 처리 방법
US9870339B2 (en) * 2015-06-26 2018-01-16 Intel Corporation Hardware processors and methods for tightly-coupled heterogeneous computing
US10346944B2 (en) 2017-04-09 2019-07-09 Intel Corporation Machine learning sparse computation mechanism
US20220283947A1 (en) * 2020-03-18 2022-09-08 Nec Corporation Information processing device and information processing method

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5197130A (en) * 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system
US5742842A (en) * 1992-01-28 1998-04-21 Fujitsu Limited Data processing apparatus for executing a vector operation under control of a master processor
DE69421103T2 (de) * 1993-01-22 2000-06-08 Matsushita Electric Ind Co Ltd Programmgesteuertes Prozessor
JPH08278916A (ja) * 1994-11-30 1996-10-22 Hitachi Ltd マルチチャネルメモリシステム、転送情報同期化方法及び信号転送回路
US6029242A (en) * 1995-08-16 2000-02-22 Sharp Electronics Corporation Data processing system using a shared register bank and a plurality of processors
US5680641A (en) * 1995-08-16 1997-10-21 Sharp Microelectronics Technology, Inc. Multiple register bank system for concurrent I/O operation in a CPU datapath
US6003129A (en) * 1996-08-19 1999-12-14 Samsung Electronics Company, Ltd. System and method for handling interrupt and exception events in an asymmetric multiprocessor architecture
US6314501B1 (en) * 1998-07-23 2001-11-06 Unisys Corporation Computer system and method for operating multiple operating systems in different partitions of the computer system and for allowing the different partitions to communicate with one another through shared memory
US6857061B1 (en) * 2000-04-07 2005-02-15 Nintendo Co., Ltd. Method and apparatus for obtaining a scalar value directly from a vector register

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009009447A (ja) * 2007-06-29 2009-01-15 Nippon Telegr & Teleph Corp <Ntt> データ処理装置
JP2014504418A (ja) * 2010-12-22 2014-02-20 インテル・コーポレーション ベクトルコンフリクト命令
JP2016028351A (ja) * 2010-12-22 2016-02-25 インテル・コーポレーション ベクトルコンフリクト命令
JP2011233155A (ja) * 2011-06-16 2011-11-17 Nippon Telegr & Teleph Corp <Ntt> データ処理装置

Also Published As

Publication number Publication date
US20020040428A1 (en) 2002-04-04
US6957324B2 (en) 2005-10-18

Similar Documents

Publication Publication Date Title
JP3442225B2 (ja) 演算処理装置
JP2665111B2 (ja) ベクトル処理装置
KR102379894B1 (ko) 벡터 연산들 수행시의 어드레스 충돌 관리 장치 및 방법
US4771380A (en) Virtual vector registers for vector processing system
US20070299892A1 (en) Algebra operation method, apparatus, and storage medium thereof
JP2002297379A (ja) ハードウェアプリフェッチシステム
CN114004349A (zh) 一种能支持不同位宽运算数据的运算单元、方法及装置
KR20200031150A (ko) 데이터 처리장치의 데이터 항목들 내의 성분들의 계수
CN103988174A (zh) 无需额外寄存器执行寄存器重命名的数据处理设备和方法
JP2002108837A (ja) 計算機システムとその計算制御方法
JPH0465426B2 (ja)
CN111258950A (zh) 原子访存方法、存储介质、计算机设备、装置和系统
KR19990072270A (ko) 무순서동작시예외를트래킹하는장치를구비하는데이터처리시스템및그방법
CN105373496A (zh) 微型计算机
US3473159A (en) Data processing system including means for protecting predetermined areas of memory
JP3683281B2 (ja) メモリアクセスの高速化処理装置および方法
JP3146077B2 (ja) プロセッサ
US3201760A (en) Information handling apparatus
JP7377208B2 (ja) データ処理
JPS58178464A (ja) 並列演算処理装置
KR0136111B1 (ko) 데이터요소의 수정장치 및 그 방법
US20080263091A1 (en) Asynchronous Linked Data Structure Traversal
JPS6058487B2 (ja) デ−タ処理装置
US20020156992A1 (en) Information processing device and computer system
JP2906958B2 (ja) ユーザプログラムロード方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050822

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070130

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070402

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070622

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20070723

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20070723

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070820

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20070828

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20071026

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20080603

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20090508

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20100419