図面 (/)

技術 並列計算機

出願人 株式会社日立製作所
発明者 助川直伸明石英也垂井俊明藤井啓明
出願日 1995年7月7日 (24年10ヶ月経過) 出願番号 1995-171785
公開日 1997年1月21日 (23年3ヶ月経過) 公開番号 1997-022401
状態 特許登録済
技術分野 メモリシステム 階層構造のメモリシステム
主要キーワード 命令生成器 CPU間 カウントアップ要求 グローバル領域 追出し 計算機性能 専用タグ 同期操作
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(1997年1月21日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (17)

目的

アドレスをCPU外部で拡張した分散型共有メモリ型の並列計算機の性能を向上させる。

構成

ユニット番号レジスタ40によりCPU10のアドレスを拡張した分散型共有メモリ方式の並列計算機で、ユニット番号レジスタ40を更新した際に、拡張アドレスに対応するリモートデータ専用のバッファ60のタグを用いてキャッシュメモリ110からリモートデータを追い出す。

効果

キャッシュメモリ110にリモートデータを登録することが可能になる。

概要

背景

計算機性能の向上のため、多数台のプロセッサ並列動作させる並列計算機が有望視されている。並列計算機ではプロセッサ間通信手段が必要となる。通信手段としては、ネットワークを通してメッセージ交換するメッセージパッシング方式と、各プロセッサよりアクセスできる共有メモリ領域を用意する共有メモリ方式とがある。メッセージパッシング方式におけるメッセージの交換は、一般にオペレーティングシステム起動することで実現する。オペレーティングシステムの起動は、特に短いメッセージの通信において、非常に重いオーバヘッドとなる。これに対し、共有メモリを用いる方法では、オペレーティングシステムを起動することなく通信が実現する。このため、共有メモリ方式は、通信におけるプロセッサの負担を軽減できる。

規模並列計算機の共有メモリ方式として、共有メモリを分割・分散させて用意する、分散共有メモリ方式が有効である。共有メモリを分散させることで、複数のプロセッサによる共有メモリの同時アクセスが可能になり、高度な並列性を持つ処理が実現する。分散共有メモリ方式は、プロセッサと一部の共有メモリとを持つ構成要素(以下、ユニットとする)を、ネットワークで結合する構成が知られている。分散共有メモリシステムとしては、特開平5−89056号公報などが開示されている。

分散共有メモリ型並列計算機構築の課題として、アドレス空間の拡張がある。分散共有メモリ型並列計算機システムに用いるCPUとしては、コストパフォーマンスに優れる汎用のCPUを用いるケースが多い。しかし、汎用のCPUは、主な利用先としてワークステーション程度のマシンを想定しているため、通常は分散共有メモリ型並列計算機に必要なアドレス空間を持ちあわせていない。例えば、64ビットアーキテクチャRISC型CPUでも、ピン数などの制約により、実アドレス空間は現在のところ32〜40ビット程度の広さしかない。ところが、各ユニットに512MBのメモリを搭載し、16K台のユニットをネットワークで結合する分散共有メモリ型並列計算機を構築する場合、各ユニットのメモリを全てアドレス空間にマッピングするには、43ビットのアドレス空間が必要になる。このような広大なアドレス空間を汎用のCPUでサポートするには、CPU外部でアドレスを拡張する機構が必要になる。

別な分散共有メモリ型並列計算機構築の課題として、ネットワーク遅延隠蔽がある。分散共有メモリ型並列計算機では、CPUが他ユニット内のデータをアクセスする回数は極めて多い。よって、システムの性能が、ネットワークを介するデータ転送能力によって大きく左右される。ところが、近年のプロセッサの処理速度の向上に比べて、ネットワーク速度の向上は大きくない。このため、ネットワーク遅延時間を隠蔽する技術が高性能な分散共有メモリ型並列計算機を構築する際の鍵となる。

ネットワーク遅延時間を隠蔽する技術として、キャッシュメモリを各ユニットに用意する方式が有効である。キャッシュメモリは、共有メモリの一部の内容を登録する、小容量高速バッファである。キャッシュメモリを用意する分散型共有メモリとしては、特開平5ー128071号公報、「The Stanford Dash Multiprocessor,IEEE Computer,March 1992 pp.63〜78」などを参考にされたい。

キャッシュメモリを持つ分散共有メモリ型並列計算機では、複数ユニットキャッシュメモリ間の一致制御が必要になる。例えば、「The Stanford Dash Multiprocessor,IEEE Computer,March 1992 pp.63〜78」では、ディレクトリと呼ばれる記憶機構を用意し、各データがどのユニットのキャッシュメモリに登録されているかを常に管理し、その情報を基にキャッシュメモリ間の一致制御を行っている。

しかし、ディレクトリによるキャッシュメモリ一致制御は、ディレクトリの総物量がユニット数の増加に従って増大することや、制御が複雑になる。そこで、ディレクトリを使わずに、ソフトウェアにより一致制御を行う分散共有メモリ型並列計算機が検討されている。

概要

アドレスをCPU外部で拡張した分散型共有メモリ型の並列計算機の性能を向上させる。

ユニット番号レジスタ40によりCPU10のアドレスを拡張した分散型共有メモリ方式の並列計算機で、ユニット番号レジスタ40を更新した際に、拡張アドレスに対応するリモートデータ専用のバッファ60のタグを用いてキャッシュメモリ110からリモートデータを追い出す。

キャッシュメモリ110にリモートデータを登録することが可能になる。

目的

効果

実績

技術文献被引用数
0件
牽制数
3件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

CPUと、ローカルデータリモートデータ双方を登録する汎用キャッシュメモリと,リモートデータのみを登録するリモート専用キャッシュメモリを各ユニットに有する分散共有メモリ型の並列計算機であって、前記リモート専用キャッシュメモリのタグ情報を用いて、前記汎用キャッシュメモリからリモートデータを追い出すことを特徴とする並列計算機。

請求項2

前記CPUによるI/O領域のアクセス契機に、前記汎用キャッシュメモリからリモートデータを一括して追い出すことを特徴とする請求項1記載の並列計算機。

請求項3

前記リモート専用キャッシュメモリのラインサイズを、前記汎用キャッシュメモリのラインサイズより大きく構成し、前記リモート専用キャッシュメモリのタグに、前記リモート専用キャッシュメモリ中のデータが前記汎用キャッシュメモリに登録されたことを示すビットを、前記汎用キャッシュメモリのラインサイズのデータ群毎に設けたことを特徴とする請求項1記載の並列計算機。

請求項4

前記リモート専用キャッシュメモリ中のデータが前記汎用キャッシュメモリに登録されたことを示すビットを用いて、前記汎用キャッシュメモリに登録されたリモートデータのみ前記汎用キャッシュメモリから追い出すことを特徴とする請求項3記載の並列計算機。

請求項5

CPUと、ローカルデータ/リモートデータ双方を登録する汎用キャッシュメモリと,前記汎用キャッシュメモリに登録されている可能性のあるリモートデータのアドレスを記憶するリモート専用タグを各ユニットに有する分散共有メモリ型の並列計算機であって、前記リモート専用タグの情報を用いて、前記汎用キャッシュメモリからリモートデータを追い出すことを特徴とする並列計算機。

請求項6

前記CPUによるI/O領域のアクセスを契機に、前記汎用キャッシュメモリからリモートデータを一括して追い出すことを特徴とする請求項5記載の並列計算機。

請求項7

前記リモート専用タグの管理データ単位を、前記汎用キャッシュメモリのラインサイズより大きく構成し、前記リモート専用タグに、前記汎用キャッシュメモリに登録されたことを示すビットを、前記汎用キャッシュメモリのラインサイズのデータ群毎に設けたことを特徴とする請求項5記載の並列計算機。

請求項8

前記汎用キャッシュメモリに登録されたことを示すビットを用いて、前記汎用キャッシュメモリに登録されたリモートデータのみ前記汎用キャッシュメモリから追い出すことを特徴とする請求項7記載の並列計算機。

請求項9

CPUと、ローカルデータ/リモートデータ双方を登録する汎用キャッシュメモリと,リモートデータのみを登録するリモート専用キャッシュメモリを各ユニットに有し、前記CPU外部に用意したレジスタにより前記CPUのアドレス空間を拡張した分散共有メモリ型の並列計算機であって、前記リモート専用キャッシュメモリのタグ情報を用いて、前記汎用キャッシュメモリからリモートデータを追い出すことを特徴とする並列計算機。

請求項10

前記レジスタの更新を契機に、前記汎用キャッシュメモリからリモートデータを一括して追い出すことを特徴とする請求項9記載の並列計算機。

請求項11

前記CPUによるI/O領域のアクセスを契機に、前記汎用キャッシュメモリからリモートデータを一括して追い出すことを特徴とする請求項9記載の並列計算機。

請求項12

前記リモート専用キャッシュメモリのラインサイズを、前記汎用キャッシュメモリのラインサイズより大きく構成し、前記リモート専用キャッシュメモリのタグに、前記リモート専用キャッシュメモリ中のデータが前記汎用キャッシュメモリに登録されたことを示すビットを、前記汎用キャッシュメモリのラインサイズのデータ群毎に設けた請求項9記載の並列計算機。

請求項13

前記リモート専用キャッシュメモリ中のデータが前記汎用キャッシュメモリに登録されたことを示すビットを用いて、前記汎用キャッシュメモリに登録されたリモートデータのみ前記汎用キャッシュメモリから追い出すことを特徴とする請求項12記載の並列計算機。

請求項14

CPUと、ローカルデータ/リモートデータ双方を登録する汎用キャッシュメモリと,前記汎用キャッシュメモリに登録されている可能性のあるリモートデータのアドレスを記憶するリモート専用タグを各ユニットに有し、前記CPU外部に用意したレジスタにより前記CPUのアドレス空間を拡張した分散共有メモリ型の並列計算機であって、前記リモート専用タグの情報を用いて、前記汎用キャッシュメモリからリモートデータを追い出すことを特徴とする並列計算機。

請求項15

前記レジスタの更新を契機に、前記汎用キャッシュメモリからリモートデータを一括して追い出すことを特徴とする請求項14記載の並列計算機。

請求項16

前記CPUによるI/O領域のアクセスを契機に、前記汎用キャッシュメモリからリモートデータを一括して追い出すことを特徴とする請求項14記載の並列計算機。

請求項17

前記リモート専用タグの管理データ単位を、前記汎用キャッシュメモリのラインサイズより大きく構成し、前記リモート専用タグに、前記汎用キャッシュメモリに登録されたことを示すビットを、前記汎用キャッシュメモリのラインサイズのデータ群毎に設けたことを特徴とする請求項14記載の並列計算機。

請求項18

前記汎用キャッシュメモリに登録されたことを示すビットを用いて、前記汎用キャッシュメモリに登録されたリモートデータのみ前記汎用キャッシュメモリから追い出すことを特徴とする請求項17記載の並列計算機。

技術分野

0001

本発明は、物理的に分散された共有メモリを有する並列計算機に関する。

背景技術

0002

計算機性能の向上のため、多数台のプロセッサ並列動作させる並列計算機が有望視されている。並列計算機ではプロセッサ間通信手段が必要となる。通信手段としては、ネットワークを通してメッセージ交換するメッセージパッシング方式と、各プロセッサよりアクセスできる共有メモリ領域を用意する共有メモリ方式とがある。メッセージパッシング方式におけるメッセージの交換は、一般にオペレーティングシステム起動することで実現する。オペレーティングシステムの起動は、特に短いメッセージの通信において、非常に重いオーバヘッドとなる。これに対し、共有メモリを用いる方法では、オペレーティングシステムを起動することなく通信が実現する。このため、共有メモリ方式は、通信におけるプロセッサの負担を軽減できる。

0003

規模並列計算機の共有メモリ方式として、共有メモリを分割・分散させて用意する、分散共有メモリ方式が有効である。共有メモリを分散させることで、複数のプロセッサによる共有メモリの同時アクセスが可能になり、高度な並列性を持つ処理が実現する。分散共有メモリ方式は、プロセッサと一部の共有メモリとを持つ構成要素(以下、ユニットとする)を、ネットワークで結合する構成が知られている。分散共有メモリシステムとしては、特開平5−89056号公報などが開示されている。

0004

分散共有メモリ型並列計算機構築の課題として、アドレス空間の拡張がある。分散共有メモリ型並列計算機システムに用いるCPUとしては、コストパフォーマンスに優れる汎用のCPUを用いるケースが多い。しかし、汎用のCPUは、主な利用先としてワークステーション程度のマシンを想定しているため、通常は分散共有メモリ型並列計算機に必要なアドレス空間を持ちあわせていない。例えば、64ビットアーキテクチャRISC型CPUでも、ピン数などの制約により、実アドレス空間は現在のところ32〜40ビット程度の広さしかない。ところが、各ユニットに512MBのメモリを搭載し、16K台のユニットをネットワークで結合する分散共有メモリ型並列計算機を構築する場合、各ユニットのメモリを全てアドレス空間にマッピングするには、43ビットのアドレス空間が必要になる。このような広大なアドレス空間を汎用のCPUでサポートするには、CPU外部でアドレスを拡張する機構が必要になる。

0005

別な分散共有メモリ型並列計算機構築の課題として、ネットワーク遅延隠蔽がある。分散共有メモリ型並列計算機では、CPUが他ユニット内のデータをアクセスする回数は極めて多い。よって、システムの性能が、ネットワークを介するデータ転送能力によって大きく左右される。ところが、近年のプロセッサの処理速度の向上に比べて、ネットワーク速度の向上は大きくない。このため、ネットワーク遅延時間を隠蔽する技術が高性能な分散共有メモリ型並列計算機を構築する際の鍵となる。

0006

ネットワーク遅延時間を隠蔽する技術として、キャッシュメモリを各ユニットに用意する方式が有効である。キャッシュメモリは、共有メモリの一部の内容を登録する、小容量高速バッファである。キャッシュメモリを用意する分散型共有メモリとしては、特開平5ー128071号公報、「The Stanford Dash Multiprocessor,IEEE Computer,March 1992 pp.63〜78」などを参考にされたい。

0007

キャッシュメモリを持つ分散共有メモリ型並列計算機では、複数ユニットキャッシュメモリ間の一致制御が必要になる。例えば、「The Stanford Dash Multiprocessor,IEEE Computer,March 1992 pp.63〜78」では、ディレクトリと呼ばれる記憶機構を用意し、各データがどのユニットのキャッシュメモリに登録されているかを常に管理し、その情報を基にキャッシュメモリ間の一致制御を行っている。

0008

しかし、ディレクトリによるキャッシュメモリ一致制御は、ディレクトリの総物量がユニット数の増加に従って増大することや、制御が複雑になる。そこで、ディレクトリを使わずに、ソフトウェアにより一致制御を行う分散共有メモリ型並列計算機が検討されている。

発明が解決しようとする課題

0009

前記の通りCPU外部でアドレスを拡張した場合、CPU内蔵のキャッシュメモリ、またはCPUに制御回路を内蔵(メモリ本体はCPU外付け)するキャッシュメモリは、拡張したアドレスに対応してキャッシュメモリに登録したデータを管理することができないため、拡張アドレスによりアクセスするリモートデータを登録できない。

0010

また、アドレス拡張を行わず、リモートデータをキャッシュメモリに登録した場合、ソフトウェアにより一致制御を実現しようとすると、キャッシュメモリに登録されているリモートデータを一括してキャッシュメモリから追い出す処理(無効化処理)が頻繁に発生する。ところが、汎用のCPUではリモートデータのみを一括してキャッシュメモリから追い出す機構を持たない。このため、キャッシュメモリの全タグを検索し、各登録データがリモートデータであるかローカルデータであるかを判断して、リモートデータであれば追い出すという処理を行わなければならない。この処理は極めて長い時間を要すため、ソフトウェアにより一致制御を行う分散共有メモリ型並列計算機では、性能が出ない。

0011

本発明の目的は、アドレス空間をCPU外部で拡張している分散共有メモリ型並列計算機において、CPU内部で管理するキャッシュメモリにリモートデータが登録できるようにして、性能向上を図ることである。

0012

また、本発明の他の目的は、アドレス拡張の有無に関わらず、CPU内部で管理されるキャッシュメモリからリモートデータ全てを高速に追い出し、コヒーレンス制御の速度を向上させることである。

課題を解決するための手段

0013

リモートデータのみを登録し、拡張アドレスを用いて登録したリモートデータを管理するキャッシュメモリ(以下、リモートデータバッファとする)を用意し、アドレスの拡張分を変更した際に、リモートデータバッファのタグ情報を用いて、CPU内部で管理するキャッシュメモリからリモートデータを追い出す。

0014

アドレス空間をCPU外部で拡張している分散共有メモリ型並列計算機でも、CPU内部で管理するキャッシュメモリにリモートデータが登録できるようになる。

0015

また、CPU内蔵、またはCPUに制御回路を内蔵するキャッシュメモリから、リモートデータを一括して高速に追い出すことができるようになる。

0016

他の本発明の目的(課題)、構成及び効果は、以下の実施例の記載から自ずと明らかになろう。

0017

(1:第1の実施例)図1〜7に本発明の第1の実施例を示す。本実施例は、アドレス空間をCPU外部で拡張する場合に、CPU外部に用意したリモートデータ専用キャッシュメモリであるリモートデータバッファを利用して、CPU内蔵、またはCPUに制御回路を内蔵するキャッシュメモリにリモートデータの登録を可能にし、かつリモートデータ高速一括無効化を実現した例である。

0018

(1.1:第1の実施例の課題)本実施例の動作の説明の前に、本実施例における解決すべき課題2点を以下に説明する。なお、本実施例では、各ユニットのローカルメモリを64MB、ネットワークで結合する台数を64台、CPUがサポートする実アドレス空間を28bit(=256MB)とする。また、説明中に使用するACKとはアクノリッジ信号、WACKとはワードアクノリッジ信号、LACKとはラインアクノリッジ信号である。

0019

第1の課題は、アドレス空間の不足に起因するキャッシュメモリの問題である。

0020

上記の構成の分散共有メモリ型並列計算機で、全ユニットのローカルメモリを各CPUのアドレス空間上に全て見せるには、64MB×64台=4GB(=32bit)のアドレス空間が必要になる。これに対してCPUは256MBの空間しかサポートしないため、なんらかのアドレス拡張を行い、4GBのメモリを256MBの空間にマッピングする必要がある。

0021

図8は、本実施例におけるマッピング方法によるアドレス空間を示している。このアドレス空間は、各ユニット毎に用意される。

0022

各ユニットのプロセッサは、自ユニット内のローカルメモリを、先頭アドレス0x0000000で大きさ64MBのローカル領域u100よりアクセスできる。さらに、各ユニット毎にユニット番号レジスタを持ち、先頭アドレス0x8000000で大きさ64MBのグローバル領域u110からは、ユニット番号レジスタにより指定する他ユニットのメモリがアクセスできる。例えば、ユニット番号レジスタの値が0である場合には、グローバル領域u110からユニット0のローカルメモリがアクセスでき、ユニット番号レジスタの値を63に変更すれば、今度はグローバル領域u110からユニット63のローカルメモリがアクセスできる。

0023

このようにユニット番号レジスタによりアドレス空間を拡張した場合、CPU内蔵のキャッシュメモリ、またはCPUに制御回路を内蔵するキャッシュメモリにリモートデータを登録すると大きな問題が発生する。例えば、ユニット1のCPUが自ユニット内のユニット番号レジスタに0をセットしてアドレス0x8000000でロードすることにより、第1のユニット0のリモートデータをキャッシュメモリに登録した後に、ユニット番号レジスタに63をセットしてアドレス0x8000000でロードすることにより、ユニット63のリモートデータをキャッシュメモリに登録しようとしても、以前に登録したユニット0のデータが自動的にリプレースされない。このため、ユニット63のデータへのロードに対して、ユニット0から登録したリモートデータが誤って読めてしまうことになる。よって、アドレスを拡張したグローバル領域u110については、CPU内蔵のキャッシュメモリ、またはCPUに制御回路を内蔵するキャッシュメモリを使用することができない。

0024

CPU内蔵のキャッシュメモリ、またはCPUに制御回路を内蔵するキャッシュメモリを使わずに、拡張したグローバル領域u110に対応するキャッシュメモリを新たに外部に用意することは問題解決の1方法である。しかし、CPU外部で管理するキャッシュメモリに、CPU内蔵のキャッシュメモリ、またはCPUに制御回路を内蔵するキャッシュメモリと同等の高速性を持たせることは困難である。よって、アドレスを拡張した場合にも、CPU内蔵のキャッシュメモリ、またはCPUに制御回路を内蔵するキャッシュメモリにリモートデータを登録できる方式が望ましい。

0025

第2の課題は、ソフトウェアによるコヒーレンス制御の問題である。

0026

もし、第1の課題を解決して、CPU内蔵のキャッシュメモリ、またはCPUに制御回路を内蔵するキャッシュメモリにリモートデータが登録できた場合、複数のCPUのキャッシュメモリ間の一致制御(以下、コヒーレンス制御)が必要になる。

0027

ディレクトリによる制御の代わりに、ソフトウェアでコヒーレンス制御を行う場合、「同期ポイントで、キャッシュメモリからリモートデータを全て追い出す」という処理で十分であることが分かっている。この点について、以下に説明する。

0028

(1)コヒーレンスは、CPU間の同期ポイントでのみとれば十分である。これは、コヒーレンスが必要となる場合、つまりユニット0のCPUが書き込んだ値をユニット63のCPUが読み出す場合には、必ず同期操作が必要になることに基づく。もしユニット0のCPUとユニット63のCPUとの間に何らかの同期操作がないと、読み出しと書き込みの順序関係保証できないため、コヒーレンスをとることは無意味となる。

0029

(2)各ユニットのCPUが同期ポイントで、キャッシュメモリからリモートデータを全て追い出した場合、各データが登録されている可能性のあるキャッシュメモリは、ホームユニット(そのデータをローカルメモリ上に持つユニット)のCPUのキャッシュメモリだけとなる。よって、複数キャッシュメモリ間のデータの不一致原理的に発生し得なくなる。

0030

同期ポイントでキャッシュメモリからリモートデータのみを全て追い出すための機構は、汎用のCPUではサポートされていない。このため、リモートデータを追い出す処理は、(キャッシュメモリのタグチェック/リモートデータ判定/追い出し処理)の繰返しとなり、極めて長い処理時間が必要になる。汎用のCPUを使った場合にも、高速にリモートデータのみを追い出せる機構の実現が望ましい。

0031

以上の第1及び第2の課題を解決するものとして、本実施例を説明する。まず、本実施例におけるアドレス空間、および本実施例の構成要素について説明する。さらに、図1〜7を用いて本実施例の動作を説明する。なお、図1のユニット0とユニット1000とは同じ機能を持ち、ネットワーク10000には、ユニット0、ユニット1000と同じ機能をもつユニットが多数結合しているものとする。

0032

(1.2:第1の実施例におけるアドレス空間)本実施例におけるアドレス空間について説明する。アドレス空間は、ユニット番号レジスタ40により拡張する。拡張したアドレス空間の見え方図8に示す。このアドレス空間は、各ユニット毎に独立して持つ。なお、各ユニットのローカルメモリは、各ユニット毎の実アドレス0x0000000〜0x3FFFFFFに実装する。

0033

CPU10からのアクセスのアドレスが0x0000000〜0x3FFFFFF(ローカル領域u100)であった場合には、このアクセスはユニット0内のローカルメモリ80に対するアクセスとなり、ローカルメモリ80の実アドレス0x0000000〜0x3FFFFFFに対するアクセスとなる。

0034

CPU10からのアクセスのアドレスが0x8000000〜0xBFFFFFF(グローバル領域u110)であった場合には、このアクセスはユニット番号レジスタ40により指定されるユニットのローカルメモリへのアクセスとみなされる。例えば、ユニット番号レジスタ40の内容が、ユニット1000を示す値であれば、CPU10はグローバル領域u110からユニット1000のローカルメモリ1080がアクセスできる。ここでグローバル領域u110でのアドレスとアクセス先ユニット内での実アドレスとの関係は、(アクセス先ユニット内での実アドレス=グローバル領域u110でのアドレスー0x8000000)となる。つまり、もしCPU10が0x8000000にアクセスした場合は、ユニット番号レジスタ40により指定されるユニットのローカルメモリの実アドレス0x0000000に対するアクセスとなる。

0035

なお、本実施例ではアドレス空間中のグローバル領域u110を1面としたが、必ずしも1面である必要はなく、各ユニットのアドレス空間にそれぞれグローバル領域u110を複数用意することも可能である。

0036

(1.3:第1の実施例におけるCPU10)次に、図1に記載した本実施例の構成要素について説明する。

0037

CPU10は演算部100を持ち、ストアスルーのキャッシュメモリ110を内蔵する。キャッシュメモリ110は実アドレス空間28bitで管理されているものとする。また、キャッシュメモリ110のデータ管理単位であるラインサイズは64Byteとする。

0038

演算部100が線a100でアドレス指定およびロード要求を行った場合、キャッシュメモリ110は要求アドレスのデータが登録されているかどうかをチェックし、登録されている場合には登録データを線d10を通して演算部100に返答する。登録されていなかった場合には、まずキャッシュメモリ110に新しいデータを登録するスペースが残っているかどうか判定する。判定の結果、スペースが残っていれば、アドレス/制御バス120に線a20を通して、必要なデータを含む64Byteのデータのロード要求を出し、データが戻るのを待つ。スペースが残っていなければ、キャッシュメモリ110中のデータを64Byte分無効化してから、アドレス/制御バス120に線a20を通して、必要なデータを含む64Byteのデータのロード要求を出し、データが戻るのを待つ。64Byteのデータがデータバス130より線d20を通して戻ってきた際には、キャッシュメモリ110はそのデータを登録するとともに、d10を通して演算部100に必要なデータを転送し、ロード動作を終了する。

0039

演算部100が線a100でアドレス指定およびストア要求を行った場合、キャッシュメモリ110は要求アドレスのデータが登録されているかどうかをチェックする。登録されていない場合には、アドレス/制御バス120に線a20を通して、演算部100により指定されたデータへのストア要求を外部に伝えるとともに、線d10に出されている1ワード分ストアデータを、線d20を通してデータバス130に出し、ストア完了を示すWACKが戻るのを待つ。データバス130より線d20を通してWACKが戻ってくると、ストア動作を終了する。また、キャッシュメモリ110に要求アドレスのデータが登録されている場合には、キャッシュ上のデータを線d10に出されているストアデータに従い更新した後に、アドレス/制御バス120に線a20を通して、演算部100により指定されたデータへのストア要求を外部に伝えるとともに、線d10に出されているストアデータを、線d20を通してデータバス130に出し、ストア完了を示すWACKが戻るのを待つ。データバス130より線d20を通してWACKが戻ってくると、ストア動作を終了する。

0040

アドレス/制御バス120側より線a20を通じて、キャッシュメモリ110に対して、パージ要求トランザクション+アドレスを通達すると、キャッシュメモリ110は指定されたアドレスより登録しているデータが存在した場合には、そのデータを無効化し、データバス130に線d20を通して無効化終了を示すLACKを通達する。外部で指定したアドレスのデータを、キャッシュメモリから無効化する機能は、マルチプロセッサスヌープキャッシュメモリを持つCPUが一般的にもつ機能である。

0041

(1.4:第1の実施例におけるローカルグローバル判定回路20)ローカルグローバル判定回路20は、CPU10からの要求が同じユニット0内のローカルメモリ80に対する要求なのか、他のユニットのローカルメモリ(例えばローカルメモリ1080)に対する要求なのかを判定する回路である。

0042

ローカルグローバル判定回路20は、アドレス/制御バス120にCPU10からのロード/ストア要求が出ている場合には、その要求がローカル領域u100に対するものであるか、グローバル領域u110に対するものであるかを判別し、判別の結果、ローカル領域u100に対するものであれば、線a60よりメモリ制御回路30に要求を出す。また、グローバル領域u110に対するものであれば、線a70よりリモートデータバッファ60に対して要求を出す。

0043

ローカルグローバル判定回路20の内部構成を図2に示す。アドレス/制御バス120より線a30を通して入力されるアドレス/制御情報は、アドレスラッチ200に登録される。アドレスラッチ200に登録された情報の内、コマンドを表すフィールドは線c200を通してトランザクション解釈部210に送られる。トランザクション解釈部210は、アドレスラッチ200に登録したアドレス/制御情報が、ロード/ストア要求トランザクションであれば線220を1にし、他のトランザクションであれば線220を0にする。

0044

また、アドレスラッチ200に記録した情報の内、アドレス最上位ビット220は、0であればローカル領域アクセス、1であればグローバル領域アクセスになる(図8:アドレス空間参照)。アドレス最上位ビットの出力c210とトランザクション解釈部の出力c220とを入力とするand回路240の出力線c240により、アドレスドライバ260は、アドレスラッチ200が登録しているトランザクションがグローバル領域u110へのロードあるいはストアであればアクティブとなり、線a70にトランザクションを出力する。また、アドレス最上位ビットの出力c210を反転させたものとトランザクション解釈部の出力c220とを入力とするand回路230の出力線c230により、アドレスドライバ250は、アドレスラッチ200が登録しているトランザクションがローカル領域u100へのロードあるいはストアであればアクティブとなり、線a60にトランザクションを出力する。

0045

(1.5:第1の実施例におけるメモリ制御回路30)メモリ制御回路30は、CPU10よりa60、d30を通じて来るアクセス要求と、ネットワークアダプタ回路70よりa120、d80を通じて来る他ユニットのCPUからのアクセス要求とを調停し、それぞれをローカルメモリ80に出すとともに、ローカルメモリ80の返答をd30,d80を通してCPU10またはネットワークアダプタ回路70に戻す回路である。

0046

メモリ制御回路30の内部構成を図3に示す。ローカルグローバル判定回路20からのアクセス要求は線a60を通してアドレスラッチ300に、ネットワークアダプタ回路70からのアクセス要求は線a120を通してアドレスラッチ310に登録される。登録後、アドレスラッチ300、310は、線c300、c310を通じてプライオリティ管理部320にローカルメモリ80のアクセス権を要求する。プライオリティ管理部320は、アドレスラッチ300からの要求を受けると線c320を0に、アドレスラッチ310からの要求を受けると線c320を1にする。アドレスラッチ300、310の双方から要求があった場合には、時間の早い方を選択する。完全に同時に要求が発生した場合には、アドレスラッチ300からの要求を受け付ける。

0047

セレクタ330は、線c320が0の場合には線a300を通して得られるアドレスラッチ300に登録されたアクセス要求を、線c320が1の場合には線a310を通して得られるアドレスラッチ310に登録されたアクセス要求を、線a310を通して、ローカルメモリ80に出す。

0048

また、要求アクセスがストアの場合のために、セレクタ340も、線c320が0の場合にはデータバス130から線d30を通して得られるデータ情報を、線c320が1の場合にはネットワークアダプタ回路70から線d80を通して得られるデータ情報を、線d80を通して、ローカルメモリ80に出す。ローカルメモリ80からのロードデータもしくはWACKは、線d60を通して、セレクタ340に入る。セレクタ340は、線c320が0の場合には線d300を通して返答検出器350に、線c320が1の場合には線d310を通して返答検出器360にロードデータもしくはWACKを出力する。返答検出器350、360は、ロードデータもしくはACKの返答を確認すると、ロードデータもしくはACKを線d30またはd80を通して、データバス130もしくはネットワークアダプタ回路70にロードデータもしくはWACKを出力するとともに、線c340、c350、or回路370、線c330を通して、プライオリティ管理部320に返答受信を通知する。通知を受けたプライオリティ管理部320は、データバス130もしくはネットワークアダプタ回路70に与えていたアクセス権を解放し、次のアクセス要求に対応する。

0049

(1.6:第1の実施例におけるユニット番号レジスタ40)ユニット番号レジスタ40は、CPU10がグローバル領域u110よりアクセスするローカルメモリの所在するユニットの番号をCPU10からのI/O領域ストアにより記憶する。つまり、CPU10がグローバル領域u110をアクセスした場合は、ユニット番号レジスタ40が例えばユニット0を記憶していれば、ユニット0のローカルメモリ80がアクセスでき、ユニット番号レジスタ40が例えばユニット1000を記憶していれば、ユニット1000のローカルメモリ80がアクセスできる。

0050

ユニット番号レジスタ40は、線a90を通じてリモートデータバッファ60に記憶しているユニット番号を伝える。また、記憶しているユニット番号が変更された場合には、変更を線c10を通して追出制御回路50に伝える。

0051

ユニット番号レジスタ40の内部構成を、図4に示す。アドレス/制御バス120に、ユニット番号レジスタ40に対する書き込み要求が出ると、その要求は線a40を通してアドレスデコーダ410に伝えられる。アドレスデコーダ410は、ユニット番号レジスタ40への書き込みと判断すると、線c400を1にする。

0052

データバス130に出た書き込みデータは、線d40、線d400を通して比較器420に入力される。以前にユニット番号レジスタ40に書き込まれた値はユニット番号ラッチ400に記憶されている。このユニット番号ラッチ400に記憶されている値もまた、線a400を通して比較器420に入力される。比較器420は、2つの入力を比較し、一致していれば線c410を1に、不一致であれば0にする。

0053

よって、ユニット番号レジスタ40に対し、ユニット番号ラッチ400に既に登録されている値と同じ値を書き込んだ場合、線c400と線c410との双方が1となり、両者を入力とするand回路450の出力c430も1となり、WACK生成器430により書き込みに対するWACKが生成され、線d40を通してデータバス130にWACKが出力される。

0054

また、ユニット番号レジスタ40に対し、ユニット番号ラッチ400に既に登録されている値と異なる値を書き込んだ場合、線c400は1、線c410は0となり、線c410を反転した値と線c400を入力とするand回路440の出力c420が1となる。データバス130から線d40を通して得られる新しいユニット番号データは、線c420が1になったことをトリガとして、ユニット番号ラッチ400に取り込まれる。同時に、ユニット番号レジスタ40に対し、既に登録されている値と異なる値を書き込まれたことは、線c10を通して追出制御回路50にも伝えられる。(後述するが、ユニット番号レジスタ40に対し、既に登録されている値と異なる値を書き込まれた場合、書き込みに対するWACKは、リモートデータをキャッシュメモリ110から追い出す処理を行った後、追出制御回路50より出力される。)
(1.7:第1の実施例における追出制御回路50)追出制御回路50は、ユニット番号レジスタ40、リモートデータバッファ60、ネットワークアダプタ回路70、およびアドレス/制御バス120からの要求に応じて、キャッシュメモリ110に対してデータ無効化のトランザクションを発行する回路である。

0055

追出制御回路50は、ユニット番号レジスタ40より線c10を通して、ユニット番号の変更が伝えられた場合、もしくはアドレス/制御バス120より線a50を通して追出制御回路50に対するI/Oライトを検出した場合、線c20を通してリモートデータバッファ60に登録データの無効化とともにタグ情報の返答を要求する。さらに線a100より受け取ったタグ情報に従い線a50、アドレス/制御バス120、線20を通してキャッシュメモリ110に登録されたリモートデータの無効化を要求する。CPU10より線d20、データバス130、データ線d90を通して無効化の終了を示すLACKが返答されると、そのLACKからACKを生成し、線c20を通じてリモートデータバッファ60に返答する。リモートデータバッファより線a100を通じて、登録データ無を示すWACKが伝えられると、線d90,データバス130、線d20を通してCPU10までWACKを返す(このWACKは、CPU10のユニット番号レジスタ40へのI/Oライト、もしくは追出制御回路50へのI/Oライトに対するWACKとなる)。

0056

また、リモートデータバッファ60より線a100を通して、リモートデータの無効化を要求されると、線a50、アドレス/制御バス120、線20を通してキャッシュメモリ110に登録されたリモートデータの無効化を要求する。CPU10より線d20、データバス130、データ線d90を通して無効化の終了を示すLACKが返答されると、そのLACKからACKを生成し、線c20を通じてリモートデータバッファ60に返答する。

0057

さらに、ネットワークアダプタ回路70より線a140を通して、リモートデータの無効化を要求されると、線a50、アドレス/制御バス120、線20を通してキャッシュメモリ110に登録されたリモートデータの無効化を要求する。CPU10より線d20、データバス130、データ線d90を通して無効化の終了を示すLACKが返答されると、そのLACKからACKを生成し、線c30を通じてネットワークアダプタ回路70に返答する。

0058

追出制御回路50の内部構成を図5に示す。ユニット番号レジスタ40より線c10を通してユニット番号の変更が伝えられた場合、および線a50を通してアドレスデコーダ500に入力されるアドレス/制御バス120の情報が追出制御回路50に対するI/Oライトであるとアドレスデコーダ500により検出された場合、その情報は混成器510、線c510を通して全無効化命令生成器520に伝えられる。全無効化命令生成器520は、全リモートデータのリモートデータバッファ60から無効化およびタグ情報の返答を要求する命令を、線c520、混合器530、線c20を通してリモートデータバッファ60に出す。

0059

リモートデータバッファ60より、キャッシュメモリ110より無効化すべきリモートデータのアドレス情報が線a100を通して返答されてきた場合、もしくは、ネットワークアダプタ回路70より線a140を通して無効化すべきリモートデータのアドレス情報が送られてきた場合、その要求はプライオリティ管理部540に入力される。プライオリティ管理部540は無効化処理権を両者のどちらかに与えるとともに(先行した要求に権利を与える。同時であればリモートデータバッファ60からの要求に権利を与える。)、権利を与えた要求を線a500に対して要求解釈部550に伝える。要求解釈部550はキャッシュメモリ110からデータの追出要求であることを認識し、線a510を通して追出命令生成器560に追出要求アドレス情報を伝える。情報を受けた追出命令生成器560は、追出要求トランザクションを生成し、線a50を通してアドレス/制御バス120にトランザクションを出力する。このトランザクションに対してCPU10より追出処理の終了を意味するLACKがデータバス130に出されると、このLACKが線d90を通してLACK認識器570に伝わる。LACK認識器570は、線c90を通してACK生成器580にACKの生成を要求する。もし、プライオリティ管理部540が、リモートデータバッファ60からの要求に権利を与えていた場合、ACK生成器580により生成されたACKは、線c550、切替器590(線c530により切替を制御)、線c560、ACK検出器600、線c580、混合器530、線c20を通して、リモートデータバッファ60に返される(リモートデータバッファ60はACKを受けると、次の無効化すべきリモートデータのアドレス情報、または無効化すべきリモートデータがないことを示すWACKを、線a100を通して送り返してくる)。もし、プライオリティ管理部540が、ネットワークアダプタ回路70からの要求に権利を与えていた場合、ACK生成器580により生成されたACKは、線c550、切替器590、線c570、ACK検出器610、線c30を通して、ネットワークアダプタ回路70に返される。ACK検出器600、610は、ACKを検出すると、線c590、c600、or回路630、線c610を通して、プライオリティ管理部540に無効化処理権の解放を要求する。

0060

リモートデータバッファ60より、無効化すべきリモートデータがないことを示すWACKが線a100を通して送られてきた場合には、そのWACKはプライオリティ管理部540をスルーし、要求解釈部550に送られる。要求解釈部550はWACKを受け、線c620を通してWACK生成器620に対してWACK生成要求を出す。要求を受けたWACK生成器620はWACKを線d90を通して、データバス130に出力する。

0061

(1.8:第1の実施例におけるリモートデータバッファ60)リモートデータバッファ60は、CPU10がリモートデータをロードした際にデータを登録するリモートデータ専用のキャッシュメモリである。後述するが、リモートデータバッファ60と、キャッシュメモリ110の間には、包含関係を常に成立させるよう、リモートデータバッファ60と追出制御回路50とにより制御を行う。すなわち、キャッシュメモリ110に存在するリモートデータは、必ずリモートデータバッファ60にも記録されているように制御する。なお、本実施例ではリモートデータバッファ60のデータ管理単位であるラインを、便宜上ブロックと記述する。ブロックのサイズは256Byteとする。

0062

まず、リモートデータバッファ60のタグの構成を図9に示す。タグは、Vビットu200、C0ビットu240、C1ビットu230、C2ビットu220、C3ビットu210、ユニット番号u250、アドレス情報u260から構成する。Vビットu200は、そのタグに対応するリモートデータバッファの1ブロック(256Byte)に有効なデータが入っているかどうかを示すビットであり、C0ビットu240、C1ビットu230、C2ビットu220、C3ビットu210はリモートデータバッファ1ブロック256Byteを各64Byte(CPU10のキャッシュメモリ110のラインサイズに対応)のサイズに割った場合、それぞれの64Byteの単位がCPU10のキャッシュメモリ110に登録されたかどうかを示す。C0ビットu240は最下位の64Byteがキャッシュメモリ110に登録されたかどうかを示し、C1ビットu230は次の64Byte,C2ビットu220は3番目の64Byte,C3ビットu210は最上位の64Byteがキャッシュメモリ110に登録されたかどうかを示す。ユニット番号u250とアドレス情報u260は、そのタグに対応するリモートデータバッファ1ブロック256Byteのデータがどのユニットのどのアドレスから登録したものかを記録するフィールドである。ただしアドレス情報u260は、アクセス先ユニットのローカルメモリにおける実アドレスの内、下位8bit(リモートデータバッファ1ブロックが256Byteであるため)を切り捨てた値を記憶する。

0063

図10を用いて、具体的にタグに情報が登録される様子を説明する。初期状態では、全てのタグ情報を0クリアしておく。もしCPU10がユニット番号レジスタ40にユニット番号101100=0x2C(u330)をセットして、グローバル領域u110内のアドレス1001001111010111011101000000=0x93D7740でロードした(CPU10からのロード要求はキャッシュメモリ110のラインサイズ64Byteであることから、下位6bitは0である)場合には、まずユニット番号u330がタグ内のユニット番号u310に記録され、また、アクセスアドレス0x93D7740より0x8000000を引いた値、0x13D7740をまず生成し(具体的な処理は、上位の2bit(u360)を削除する)、さらに下位8bitを削除した値u340をタグのアドレス情報u320に記録する。また、リモートデータバッファ1ブロック256Byteのデータの内、どの64ByteのデータがCPU10によりアクセスされたのかを示す下位7ビット目と8ビット目の情報u350より、下から2番目の64Byteがアクセスされたことを認識し、C1ビットu300を1にする。さらに、CPU10がユニット番号101100=0x2C(u430)で、グローバル領域u110内のアドレス1001001111010111011110000000=0x93D7780でロードした場合には、タグに登録されているユニット番号u410、アドレス情報u420と、アクセス時のユニット番号u430、アドレスの内対応するフィールドu440と比較し、一致したことを確認することで、CPU10が要求しているリモートデータがこのタグに対応するリモートデータバッファ1ブロック中に登録されていることを認識する。更にアクセスアドレスの下位7ビット目と8ビット目の情報u450より、下から3番目の64Byteがアクセスされたことを認識し、C2ビットu400を1にする。

0064

登録したリモートデータバッファ1ブロック分のデータをリプレースしなければならない場合には、リモートデータバッファ60とキャッシュメモリ110の間に包含関係を常に成立ために、タグ情報よりキャッシュメモリ110に登録されたデータのアドレスを生成し、キャッシュメモリ110に対して登録したリモートデータの無効化を要求する。図10の例では、タグのアドレス情報u580にグローバル領域u110を生成するための上位2bit(u500〜u510)を付加し、さらにC0ビット〜C3ビットの内、1であるC1ビットu570、C2ビットu560からアドレスu520、u550を生成して付加することで、キャッシュメモリ110に対して登録したリモートデータの無効化を要求するアドレスを生成する。この処理が終了した後は、タグのVビット、C0ビット〜C3ビットは0とし、次のタグ情報が記録できる状態にする。

0065

次にリモートデータバッファ60の動作を説明する。リモートデータバッファ60にローカルグローバル判定回路20から線a70を通してリモートロード要求が来た場合に、ユニット番号レジスタ40の示すアクセス先ユニット番号によりアドレスを拡張した上でタグを引き、要求データがバッファに登録されているかどうか検索する。登録されていれば、線d50、データバス130、線d20を通して、CPU10にデータを64Byte単位(キャッシュメモリ110のラインサイズに対応)で返答する。登録されていなければ、線a110を通して、ネットワークアダプタ回路70にリモートロード要求を出す。リモートロードを出す際に、返答データを登録するリモートデータバッファのブロックのタグのC0ビット〜C3ビットで1のものがあれば、キャッシュメモリ110より相当するデータの無効化を線a100を通じて追出制御回路50に要求し、線c20を通してACKが返答されるのを待ってから、ネットワークアダプタ回路70にリモートロード要求を出す。リモートロード要求に対して、ネットワークアダプタ回路70よりデータ256Byteが線d70を通して返ってくると、リモートデータバッファは返ってきたデータを登録するとともに、ローカルグローバル判定回路20より要求のあった64Byteのデータを、線d50、データバス130、線d20を通して、CPU10に返答する。

0066

リモートデータバッファ60にローカルグローバル判定回路20から線a70を通してリモートストア要求が来た場合に、ユニット番号レジスタ40の示すアクセス先ユニット番号によりアドレスを拡張した上でタグを引き、要求データがバッファに登録されているかどうか検索する。登録されていればそのデータを更新した上で、線a110を通して、ネットワークアダプタ回路70にリモートストア要求を出す。登録されていなければそのまま、線a110を通して、ネットワークアダプタ回路70にリモートストア要求を出す。また、CPU10より線d20、データバス130、線d50を通じて伝わるリモートストアの1ワードデータを線d70を通してネットワークアダプタ回路70に伝達する。ネットワークアダプタ回路70よりACKが線d70を通して返ってくると、リモートデータバッファは、線d50、データバス130、線d20を通して、CPU10にACKを返答する。

0067

また、追出制御回路50より、登録データの無効化およびタグ情報の返答の要求が線c20を通じて通達された場合には、リモートデータバッファ60はキャッシュメモリ110にも登録したデータをタグを検索して選定し(タグのC0ビット〜C3ビットが1であるものを検索する)、64Byte単位で線a100を通してキャッシュメモリ110からの追い出しを要求する。線c20を通して追出制御回路50よりACKが返ってきた後、他にキャッシュメモリ110に登録されているリモートデータが存在する場合(タグのC0ビット〜C3ビットが1であるものが存在する場合)には、次の追い出しをa100を通して要求し、存在しない場合には、線a100を通じて追出制御回路50のWACKを返す。

0068

リモートデータバッファ60の内部構成を図6に示す。ローカルグローバル判定回路20より線a70を通してリモートロード要求があった場合、要求のアドレス情報はアドレスラッチ650に記憶されるとともに、線a650を通してトランザクション解釈部660に送られる。トランザクション解釈部660は、リモートロードであると認識すると、線a670を通してアドレス情報を比較器780〜800に出す。比較器780〜800は、タグ810〜830に記憶されているアドレス情報と比較し、一致した場合には線c770〜c790を1にする。もし一致するものがあった場合、or回路700、線c760を通してトランザクション解釈部660に1が伝えるとともに、線c770〜c790を通して一致ブロックがどれであるかの情報をブロック選択部710に伝える。トランザクション解釈部660は、一致データの存在を認識すると、線c740を通してブロック選択部710に一致ブロックをアクティブにするための要求を出すとともに、線c750を通してタグ制御部690にタグ810〜830の更新の要求を、線c720を通してメモリ制御部750にメモリ840〜860の読み出しの要求を出す。ブロック選択部710が線c810〜c830を利用して一致ブロックを活性化することで、メモリバス770、線d690を通してメモリ制御部750に一致ブロックのメモリ840〜860の内、ロード要求を受けているキャッシュメモリ110のラインサイズ64Byte分の情報がでるとともに、タグ制御部690により、タグバス760、線d680を通して一致ブロックのタグ810〜830が更新される。トランザクション解釈部660がデータラッチ730に対して線c710を利用し要求することで、メモリ制御部750に入ったデータは、線d660、d50を通してデータバス130に出力される。

0069

ローカルグローバル判定回路20からのリモートロード要求に対し、比較器780〜800でもし一致するものがなければ、or回路700、線c760を通してトランザクション解釈部660に0が伝えられる。この場合、トランザクション解釈部660は線c740を通してブロック選択部710にリプレースするブロックの選択を要求する。ブロック選択部710は線c700よりカウンタ720に対してカウントアップ要求を出すとともに、カウンタ720より線d650を通して現在のカウント値を得る。このカウンタ720から得たデータをリプレースのための選択ブロック番号とする(カウンタ720の幅は、リモートデータバッファ110内のブロック数により決定する)。ブロック番号を得たブロック選択部が線c810〜c830を利用して選択ブロックを活性化するとともに、線c750によりトランザクション解釈部からリプレース要求を受けたタグ制御部690が、活性化されたブロックのタグ810〜830内の情報を受け、タグ情報を、線a660を通して追出要求部680に出力するとともに、活性化されたブロックのタグ810〜830の情報をリセットする(図10(e)のようにする)。タグ情報を受けた追出要求部680は、図10(d)のように、キャッシュメモリ110より追い出すラインのアドレスを生成し、そのアドレス情報を持って線a100を通して追出制御回路50にラインの追い出し要求を出す。追出制御回路50より線c20を通して、追出終了を示すACKが返答されると、分離器670は、ACKを線c670を通して追出要求部680に出力する。ACKを受けた追出要求部680は、まだ追い出し要求をすべきラインが残っている場合には、そのラインのアドレス情報を線a100を通して追出制御回路50に出す。追い出し要求をすべきラインが残っていない場合には、追出要求部680は、リプレースの終了をトランザクション解釈部660に線c690を通して出力する。出力を受けたトランザクション解釈部660は、線c650を使い、アドレスラッチ650に記憶されたリモートロード要求を線a110を通してネットワークアダプタ回路70に出力する。ネットワークアダプタ回路70より線d70を通してデータ(256Byte)が返ってくると、線c720を通してトランザクション解釈部660から制御されるメモリ制御部750は、返答データを線d690を通してメモリバス770に出す。このデータは、メモリ840〜860の内、線c810〜c830により活性化されているメモリに記録される。同時に、ロード要求を受けているキャッシュメモリ110のラインサイズ64Byte分のデータは、メモリ制御部750、データラッチ730、線d50を通してデータバス130に出力される。また、タグ制御部690により、タグバス760、線d680を通して一致ブロックのタグ810〜830が更新される(64Byteデータのキャッシングが記録される)。

0070

ローカルグローバル判定回路20より線a70を通してリモートストア要求があった場合、要求のアドレス情報はアドレスラッチ650に記憶されるとともに、線a650を通してトランザクション解釈部660に送られる。トランザクション解釈部660は、リモートストアであると認識すると、線a670を通してアドレス情報を比較器780〜800に出す。比較器780〜800は、タグ810〜830に記憶されているアドレス情報と比較し、一致した場合には線c770〜c790を1にする。もし一致するものがあった場合、or回路700、線c760を通してトランザクション解釈部660に1が伝えるとともに、線c770〜c790を通して一致ブロックがどれであるかの情報をブロック選択部710に伝える。トランザクション解釈部660は、一致データの存在を認識すると、線c740を通してブロック選択部710に一致ブロックをアクティブにするための要求を出すとともに、線c720を通してメモリ制御部750にメモリ840〜860の更新の要求を出す。同時にトランザクション解釈部660は、線c710を通してデータラッチ730を制御することで、データバス130から線d50を通して得られるストアデータがデータラッチ730に記録されるとともに、メモリ制御部750に通知されるようにする。メモリ制御部750は、ブロック選択部710が線c810〜c830を利用して一致ブロックを活性化することで、メモリバス770、線d690を通してメモリ制御部750に一致ブロックのメモリのデータを更新する。また、トランザクション解釈部660が、アドレスラッチ650に対して線c650を、データラッチ730に対して線c710を利用し要求することで、アドレスラッチ650に入ったストア要求は線a110を通して、データラッチ730に入ったデータは線d70を通して、それぞれネットワークアダプタ回路70に出される。ストアに対するWACKがネットワークアダプタ回路70より線d70を通してメモリ制御部750に返答されると、そのWACKは、線d660、データラッチ730、線d50を通して、データバス130に出される。

0071

ローカルグローバル判定回路20からのリモートストア要求に対し、比較器780〜800でもし一致するものがなければ、or回路700、線c760を通してトランザクション解釈部660に0が伝えられる。トランザクション解釈部660は、一致データが存在しないことを認識すると、アドレスラッチ650に対して線c650を、データラッチ730に対して線c710を利用し要求することで、アドレスラッチ650に入ったストア要求は線a110を通して、データラッチ730に入ったデータは線d70を通して、それぞれネットワークアダプタ回路70に出される。ストアに対するWACKがネットワークアダプタ回路70より線d70を通してメモリ制御部750に返答されると、そのWACKは、線d660、データラッチ730、線d50を通して、データバス130に出される。

0072

追出制御回路50より、線c20を通して全無効化命令がリモートデータに対して出されると、分離器670、線c660を通して、トランザクション解釈部660に全無効化命令が伝わる。トランザクション解釈部660は、全無効化命令を受けて、線c740を通してブロック選択部710にブロック選択要求を出す。ブロック選択要求を受けたブロック選択部710は、線c700を通してカウンタ720にカウントアップを要求するとともに、カウンタの値720を線d650から得て、その値を選択ブロックの番号とする。選択されたブロックに対応する線c810〜線c830を1にして、タグ810〜830のうち1つをアクティブにする。アクティブになったタグの情報は、タグバス760、線d680を通して、タグ制御部690(線c750を通して、トランザクション解釈部660に制御されている)に伝わるとともに、タグ制御部690によりリセットされる(図10(e)のようになる)。タグ制御部690は、タグ情報を線a660を通して追出要求部680に伝える。タグ情報を受けた追出要求部680は、図10(d)のように、キャッシュメモリ110より追い出すラインのアドレスを生成し、そのアドレス情報を持って線a100を通して追出制御回路50にラインの追い出し要求を出す。追出制御回路50より線c20を通して、追出終了を示すACKが返答されると、分離器670は、ACKを線c670を通して追出要求部680に出力する。ACKを受けた追出要求部680は、まだ追い出し要求をすべきラインが残っている場合には、そのラインのアドレス情報を線a100を通して追出制御回路50に出す。追い出し要求をすべきラインが残っていない場合には、追出要求部680は、無効化の終了をトランザクション解釈部660に線c690を通して出力する。出力を受けたトランザクション解釈部660は、再び線c740を通してブロック選択部710にブロック選択要求を出す。ブロック選択要求を受けたブロック選択部710は、線c700を通してカウンタ720にカウントアップを要求するとともに、カウンタの値720を線d650から得て、その値を選択ブロックの番号とする(これにより、前回処理したのとは別のブロックについて無効化処理を行うことになる)。以下は、前記と同じ手順で順々に各ブロックについて無効化処理を進める。追出要求部680は、全てのブロックについて無効化処理が終わったと判断すると、線a100を通してWACKを追出制御回路50に出力する。

0073

(1.9:第1の実施例におけるネットワークアダプタ回路70)ネットワークアダプタ回路70は、ネットワーク10000とユニット0との接続回路である。

0074

ネットワークアダプタ回路70は、リモートデータバッファ60から線a110、線d70を通して来るリモートデータロード要求(256Byte)またはリモートデータストア要求(1ワード)に対して、リモートアクセス要求パケットを生成し、線p10を通してネットワーク10000に出す。

0075

また、ネットワークアダプタ回路70は、ネットワーク10000より線p20を通してリモートアクセス返答パケットを受け取ると、パケットを解釈し、線d70を通してリモートデータバッファ60に返答データ(256Byte)またはストアに対するWACKを伝える。

0076

さらに、ネットワークアダプタ回路70は、ネットワーク10000より線p20を通して、リモートアクセス要求パケットを受け取ると、これを解釈し、リモートロード要求の場合には、256Byteデータのロード要求を線a120、線d80を通してメモリ制御回路30に出す。また、リモートストア要求の場合には、キャッシュメモリ110からのストアワードの無効化を線a140を通して追出制御回路50に対して行い、追出制御回路50から無効化終了を示すACKが返答されてから、1ワードのストア要求を線a120、線d80を通してメモリ制御回路30に出す。アクセス要求に対する返答がメモリ制御回路30より線d80を通して戻ってくると、リモートアクセス返答パケットを生成し、線p10を通してネットワーク10000に出す。

0077

ネットワークアダプタ回路70の内部構成を図7に示す。リモートデータバッファ60からのリモートロードまたはストア要求を線a110を通して受けると(ストアの場合には線d70のストアデータも受ける)、その要求をアクセス要求ラッチ900に記録する。アクセス要求ラッチ900は、パケット生成部950の使用権プライオリティ制御部920まで線c900を通して要求する。使用権が取れたことが線c910を通して通知されると、アクセス要求ラッチ900は、リモートアクセス要求を線a900、セレクタ910(線c960によりプライオリティ制御部920に制御される)、線a910を通して、パケット生成部950まで、リモートアクセス要求パケットの生成を要求する。パケット生成部950で生成されたリモートアクセス要求パケットは、線p10を通して、ネットワーク10000まで送信される。パケット生成部950は、パケットを出力すると、線c940を通してプライオリティ制御部920に処理終了を伝え、パケット生成部950の使用権の解放する。

0078

ネットワーク10000より、線p20を通してパケット解釈部960がリモートアクセス返答パケットを受信すると、パケット解釈部は、パケット情報からリモートロードデータ(256Byte)またはWACKを切出し、線d70を通して、リモートデータバッファ60に返答する。

0079

ネットワーク10000より、線p20を通してパケット解釈部960がリモートアクセス要求パケットを受信すると、パケット解釈部960はリモートアクセス要求パケットからアクセス要求情報を切出した後、線a920を通してアクセス要求情報を出し、リモートアクセスラッチ970にアクセス要求情報を記録する。リモートアクセスラッチ970はアクセス要求を記録すると、パケット生成部950の使用権をプライオリティ制御部920まで線c920を通して要求する。使用権が取れたことが線c930を通して通知されると、リモートアクセスラッチ970に記録したアクセス要求がロードの場合には線a930を通してメモリアクセス部930にリモートロード要求(256Byte)を出す。リモートロード要求を受けたメモリアクセス部930は、線a120を通してローカルメモリ80に256Byteロード要求を出す。ローカルメモリ80からデータ256Byteが線d90を通してメモリアクセス部930に戻ってくると、そのデータは線d900、セレクタ910、線a910を通して、パケット生成部950まで伝えられる。パケット生成部950はデータ256Byteをもとにリモートアクセス返答パケットを生成し、線p10を通して、ネットワーク10000まで送信する。パケット生成部950は、パケットを出力すると、線c940を通してプライオリティ制御部920に処理終了を伝え、パケット生成部950の使用権の解放する。リモートアクセスラッチ970に記録したアクセス要求がストアの場合には線a940を通してリモートストアラッチ940にストア要求を出すとともに、追出要求部990にキャッシュメモリ110からストアデータの追出しを要求する。要求を受けた追出要求部990は、線a140を通して追出制御回路50に追い出し要求を出す。追出制御回路50より線c30を通して追い出し処理の終了を意味するACKが返答されると、ACK認識部980はACKを認識し、リモートストアラッチ940に線950を通じてストア要求のメモリアクセス部930への出力を要求する。要求を受けたリモートストアラッチ940は、線a950を通し、メモリアクセス部930にリモートストア要求(1ワード)を出す。リモートロード要求を受けたメモリアクセス部930は、線a120を通してローカルメモリ80に1ワードストア要求を出す。ローカルメモリ80からWACKが線d90を通してメモリアクセス部930に戻ってくると、そのWACKは線d900、セレクタ910、線a910を通して、パケット生成部950まで伝えられる。パケット生成部950はWACKからリモートアクセス返答パケットを生成し、線p10を通して、ネットワーク10000まで送信する。パケット生成部950は、パケットを出力すると、線c940を通してプライオリティ制御部920に処理終了を伝え、パケット生成部950の使用権の解放する。

0080

(1.10:第1の実施例におけるローカルメモリ80)ローカルメモリ80は、各ユニットに分割分散された共有メモリであり、同じユニット0内のCPU10からもアクセスできるばかりか、他のユニットのCPU(例えばユニット1000のCPU1010)からもアクセスできる。

0081

ローカルメモリ80は、アドレス/制御線a130よりアドレスが指定され、かつロード要求が指定されると、対応するアドレスのデータを線d60を通して返答する。また、アドレス/制御線a130よりアドレスが指定され、かつストア要求が指定されると、線d60のデータを対応するアドレスに記録し、ストアが終了した後に線d60を通してストア終了のWACKを返答する。

0082

(1.11:第1の実施例の動作)図1中、CPU10がローカル領域u100よりユニット0のローカルメモリ80のデータをロードまたはストアする場合、グローバル領域u110よりユニット1000のローカルメモリ1080のデータをロードまたはストアする場合、ユニット番号レジスタ40の値を更新した場合、および追出制御回路50にリモートデータ全無効化を指示した場合の動作について説明する。

0083

(1.11.1:CPU10がユニット0のローカルメモリ80のデータをロードした場合)第1に、CPU10の演算部100が要求したデータがキャッシュメモリ110に存在した場合について説明する。

0084

線a10よりローカル領域u100内のデータに対するロード要求がキャッシュメモリ110に出されると、キャッシュメモリ110は要求されたアドレスのデータを登録しているかどうか検索する。検索の結果、キャッシュメモリ110内にデータが存在した場合には、線d10を通してキャッシュメモリ110より演算部100にデータが返答される。 第2に、CPU10の演算部100が要求したデータがキャッシュメモリ110に存在しない場合について説明する。

0085

線a10よりローカル領域u100内のデータに対するロード要求がキャッシュメモリ110に出されると、キャッシュメモリ110は要求されたアドレスのデータを登録しているかどうか検索する。検索の結果、キャッシュメモリ110内にデータが存在しない場合には、まずキャッシュメモリ110に新しいデータを登録するスペースが残っているかどうか判定する。判定の結果、スペースが残っていれば、線a30より演算部100が要求しているデータを含む64Byte分のデータのロード要求をアドレス/制御バス120に出す。スペースが残っていなければ、キャッシュメモリ110中のデータを64Byte分無効化してから、線a30より演算部100が要求しているデータを含む64Byte分のデータのロード要求をアドレス/制御バス120に出す。このロード要求は、アドレス/制御バス120より線a30を通じてローカルグローバル判定回路20に伝わる。ローカルグローバル判定回路20は、CPU10がローカルメモリ80に対してロードを発行していることを判定し、線a60を通じてメモリ制御回路30にロード要求を出す。メモリ制御回路30は、ロード要求を受け、ローカルメモリ80に対して線a130を通じてロード要求を出す。ローカルメモリ80は、ロード要求に対して対応するデータ64Byteを線d60よりメモリ制御回路30に戻す。戻されたデータは、線d30,データバス130、線d20を通してキャッシュメモリ110に戻る。戻ったデータは64Byte単位でキャッシュメモリ110に登録されるとともに、演算部100が要求した1ワード分のデータは、線d10を通して演算部100に返答される。

0086

(1.11.2:CPU10がユニット0のローカルメモリ80のデータをストアした場合)第1に、CPU10の演算部100が要求したデータがキャッシュメモリ110に存在した場合について説明する。

0087

線a10よりローカル領域u100内のデータに対するストア要求がキャッシュメモリ110に出されると、キャッシュメモリ110は要求されたアドレスのデータを登録しているかどうか検索する。検索の結果、キャッシュメモリ110内にデータが存在した場合には、線d10より伝わるストアデータに基づいてそのデータを更新するとともに、線a30より演算部100が要求しているストア要求をアドレス/制御バス120に、線d20よりストアデータ1ワード分をデータバス130に出す。このストア要求は、アドレス/制御バス120より線a30を通じてローカルグローバル判定回路20に伝わる。ローカルグローバル判定回路20は、CPU10がローカルメモリ80に対してストアを発行していることを判定し、線a60を通じてメモリ制御回路30にストア要求を出す。メモリ制御回路30は、ストア要求と線d30を通してデータバス130より得られるストアデータ1ワード分を受け、ローカルメモリ80に対して線a130を通じてストア要求を出す。ローカルメモリ80は、ストア要求に対応してデータを更新した後に、WACKを線d60を通してメモリ制御回路30に戻す。戻されたWACKは、線d30,データバス130、線d20を通してキャッシュメモリ110に戻る。戻ったWACKは、線d10を通して演算部100に返答される。

0088

第2に、CPU10の演算部100が要求したデータがキャッシュメモリ110に存在しない場合について説明する。

0089

線a10よりローカル領域u100内のデータに対するストア要求がキャッシュメモリ110に出されると、キャッシュメモリ110は要求されたアドレスのデータを登録しているかどうか検索する。検索の結果、キャッシュメモリ110内にデータが存在しない場合には、線a30より演算部100が要求しているストア要求をアドレス/制御バス120に、線d20よりストアデータ1ワード分をデータバス130に出す。このストア要求は、アドレス/制御バス120より線a30を通じてローカルグローバル判定回路20に伝わる。ローカルグローバル判定回路20は、CPU10がローカルメモリ80に対してストアを発行していることを判定し、線a60を通じてメモリ制御回路30にストア要求を出す。メモリ制御回路30は、ストア要求と線d30を通してデータバス130より得られるストアデータ1ワード分を受け、ローカルメモリ80に対して線a130を通じてストア要求を出す。ローカルメモリ80は、ストア要求に対応してデータを更新した後に、WACKを線d60を通してメモリ制御回路30に戻す。戻されたWACKは、線d30,データバス130、線d20を通してキャッシュメモリ110に戻る。戻ったWACKは、線d10を通して演算部100に返答される。

0090

(1.11.3:CPU10がユニット1000のローカルメモリ1080のデータをロードした場合)第1に、CPU10の演算部100が要求したデータがキャッシュメモリ110に存在した場合について説明する。

0091

線a10よりローカル領域u100内のデータに対するロード要求がキャッシュメモリ110に出されると、キャッシュメモリ110は要求されたアドレスのデータを登録しているかどうか検索する。検索の結果、キャッシュメモリ110内にデータが存在した場合には、線d10を通してキャッシュメモリ110より演算部100にデータが返答される。 第2に、CPU10の演算部100が要求したデータがキャッシュメモリ110に存在せず、リモートデータバッファ60に存在した場合について説明する。

0092

線a10よりローカル領域u100内のデータに対するロード要求がキャッシュメモリ110に出されると、キャッシュメモリ110は要求されたアドレスのデータを登録しているかどうか検索する。検索の結果、キャッシュメモリ110内にデータが存在しない場合には、まずキャッシュメモリ110に新しいデータを登録するスペースが残っているかどうか判定する。判定の結果、スペースが残っていれば、線a30より演算部100が要求しているデータを含む64Byte分のデータのロード要求をアドレス/制御バス120に出す。スペースが残っていなければ、キャッシュメモリ110中のデータを64Byte分無効化してから、線a30より演算部100が要求しているデータを含む64Byte分のデータのロード要求をアドレス/制御バス120に出す。このロード要求は、アドレス/制御バス120より線a30を通じてローカルグローバル判定回路20に伝わる。ローカルグローバル判定回路20は、CPU10がグローバル領域u110に対してロードを発行していることを判定し、線a70を通じてリモートデータバッファ60にロード要求を出す。リモートデータバッファ60は、ロード要求を受け、線a90を通して得られるユニット番号レジスタ40の値とともに、バッファリングデータを検索する。検索した結果、要求リモートデータをバッファリングしてることがわかれば、CPU10が要求しているデータ64Byteは線d50、データバス130、線d20を通してキャッシュメモリ110に返答されるとともに、リモートデータバッファのタグに要求データのキャッシュメモリ110への登録が記録される。戻ったデータは64Byte単位でキャッシュメモリ110に登録されるとともに、演算部100が要求した1ワード分のデータは、線d10を通して演算部100に返答される。

0093

第3に、CPU10の演算部100が要求したデータがキャッシュメモリ110に存在せず、リモートデータバッファ60に存在しない場合について説明する。

0094

線a10よりローカル領域u100内のデータに対するロード要求がキャッシュメモリ110に出されると、キャッシュメモリ110は要求されたアドレスのデータを登録しているかどうか検索する。検索の結果、キャッシュメモリ110内にデータが存在しない場合には、まずキャッシュメモリ110に新しいデータを登録するスペースが残っているかどうか判定する。判定の結果、スペースが残っていれば、線a30より演算部100が要求しているデータを含む64Byte分のデータのロード要求をアドレス/制御バス120に出す。スペースが残っていなければ、キャッシュメモリ110中のデータを64Byte分無効化してから、線a30より演算部100が要求しているデータを含む64Byte分のデータのロード要求をアドレス/制御バス120に出す。このロード要求は、アドレス/制御バス120より線a30を通じてローカルグローバル判定回路20に伝わる。ローカルグローバル判定回路20は、CPU10がグローバル領域u110に対してロードを発行していることを判定し、線a70を通じてリモートデータバッファ60にロード要求を出す。リモートデータバッファ60は、ロード要求を受け、線a90を通して得られるユニット番号レジスタ40の値とともに、バッファリングデータを検索する。検索した結果、要求リモートデータをバッファリングしていないことがわかれば、リモートデータバッファ60の1ブロックを無効化する。この際に無効化するブロックのデータの内、キャッシュメモリ110にも登録されているデータをタグのC0ビットu240〜C3ビットu210より検索し、検索した結果、無効化しなければならないデータの無効化を線a100を通して追出制御回路50に要求する。追出制御回路50は要求に従い、線a50、アドレス/制御バス120、線a20を通してキャッシュメモリ110にデータの無効化要求を出す。キャッシュメモリ110は無効化に対応すると、線d20,データバス130、線d90を通して、追出制御回路50にLACKを出力する。追出制御回路はLACKを受けると、線c20を通してリモートデータバッファ60にACKを返答する。リモートデータバッファ60は、無効化したいデータが存在する間、データの無効化を線a100を通して追出制御回路50に要求し、線c20からのACKを待つ動作を繰り返す。以上の処理により、リモートデータバッファ60の1ブロックの無効化が完了すると、リモートデータバッファ60は線a110を通してネットワークアダプタ回路70にリモートロード要求を出す。この際に付加するロード要求アドレスは、上位にアクセス先ユニット1000のユニット番号、下位にアクセス先ユニット1000におけるローカルメモリ1080の実アドレスである。ネットワークアダプタ回路は、要求に従いリモートロード要求パケットを作成し、線p10を通してネットワークにパケットを出力する。ネットワークはパケットに付加されたアクセス先ユニット1000のユニット番号に従い、パケットをユニット1000のネットワークアダプタ回路1070に、線p1020を通して伝える。パケットを受けたネットワークアダプタ回路1070は、パケットを解釈し、ユニット10からのリモートロード要求であることを認識すると、線a1120を通して、メモリ制御回路1030にロード要求を出す。メモリ制御回路1030はロード要求に従い、ローカルメモリ1080に対して線a130を通してロード要求を発行する。ローカルメモリ1080は、ロード要求に対してメモリ制御回路1030にデータ256Byte分を返答する。返答されたデータは、線d1080を通してネットワークアダプタ回路1070に戻る。ネットワークアダプタ回路1070は戻ったデータからリモートロード返答パケットを作成し、線p1010、ネットワーク10000、線p20を通して、ネットワークアダプタ回路70にデータを戻す。戻ったデータは、線d70を通してリモートデータバッファ60に256Byte分登録する。また、CPU10が要求しているデータ64Byteは線d50、データバス130、線d20を通してキャッシュメモリ110に返答されるとともに、リモートデータバッファのタグに要求データのキャッシュメモリ110への登録が記録される。戻ったデータは64Byte単位でキャッシュメモリ110に登録されるとともに、演算部100が要求した1ワード分のデータは、線d10を通して演算部100に返答される。

0095

(1.11.4:CPU10がユニット1000のローカルメモリ1080のデータをストアした場合)第1に、CPU10の演算部100が要求したデータがキャッシュメモリ110に存在した場合について説明する。

0096

線a10よりローカル領域u100内のデータに対するストア要求がキャッシュメモリ110に出されると、キャッシュメモリ110は要求されたアドレスのデータを登録しているかどうか検索する。検索の結果、キャッシュメモリ110内にデータが存在する場合には、線d10より得られるストアデータに従い登録データを更新するとともに、線a30より演算部100が要求しているストア要求をアドレス/制御バス120に、線d20よりストアデータ1ワード分をデータバス130に出す。このストア要求は、アドレス/制御バス120より線a30を通じてローカルグローバル判定回路20に伝わる。ローカルグローバル判定回路20は、CPU10がグローバル領域u110に対してストアを発行していることを判定し、線a70を通じてリモートデータバッファ60にストア要求を出す。リモートデータバッファ60は、ストア要求と線d50を通してデータバス130より得られるストアデータ1ワード分を受け、線a90を通して得られるユニット番号レジスタ40の値とともに、バッファリングデータを検索する。検索した結果、要求リモートデータをバッファリングしていることが分かれば、リモートデータバッファ60はバッファリングデータを更新した後にネットワークアダプタ回路70に線a110を通してリモートストア要求を、線d90を通してリモートストアデータ1ワード分を出す。この際に付加するストア要求アドレスは、上位にアクセス先ユニット1000のユニット番号、下位にアクセス先ユニット1000におけるローカルメモリ1080の実アドレスである。ネットワークアダプタ回路は、要求に従いリモートストア要求パケットを作成し、線p10を通してネットワークにパケットを出力する。ネットワークはパケットに付加されたアクセス先ユニット1000のユニット番号に従い、パケットをユニット1000のネットワークアダプタ回路1070に、線p1020を通して伝える。パケットを受けたネットワークアダプタ回路1070は、パケットを解釈し、ユニット10からのリモートストア要求であることを認識すると、まず線a1140を通して追出制御回路1050にストアデータを含むラインのキャッシュメモリ1110からの追い出しを要求する。要求を受けた追出制御回路1050は線a1050、アドレス/制御バス1120、線a1020を通して、ストアされるデータのキャッシュメモリ1110からの無効化を要求する。要求を受けたキャッシュメモリ1110は、無効化要求されたデータが登録されているかどうか検索し、存在した場合には無効化処理後、存在しない場合には検索直後に線d1020、データバス1130、線d1090を通して追出制御回路1050にLACKを返答する。追出制御回路1050はLACKを受けると、線c1030を通してネットワークアダプタ回路1070にACKを返答する。ネットワークアダプタ回路はACKを受けると、線a1120、線d1080を通して、メモリ制御回路1030にストア要求を出す。メモリ制御回路1030はストア要求に従い、ローカルメモリ1080に対して線a130、線d1060を通してストア要求を発行する。ローカルメモリ1080は、ストア要求に対してWACKを返答する。返答されたWACKは、線d1080を通してネットワークアダプタ回路1070に戻る。ネットワークアダプタ回路1070は戻ったWACKからリモートロード返答パケットを作成し、線p1010、ネットワーク10000、線p20を通して、ネットワークアダプタ回路70にWACKを戻す。戻ったWACKは、線d70、リモートデータバッファ60、線d50、データバス130、線d20を通してキャッシュメモリ110に返答されるとともに、線d10を通して演算部100に返答される。

0097

第2に、CPU10の演算部100が要求したデータがキャッシュメモリ110に存在せず、リモートデータバッファ60に存在した場合について説明する。

0098

線a10よりローカル領域u100内のデータに対するストア要求がキャッシュメモリ110に出されると、キャッシュメモリ110は要求されたアドレスのデータを登録しているかどうか検索する。検索の結果、キャッシュメモリ110内にデータが存在しない場合には、線a30より演算部100が要求しているストア要求をアドレス/制御バス120に、線d20よりストアデータ1ワード分をデータバス130に出す。このストア要求は、アドレス/制御バス120より線a30を通じてローカルグローバル判定回路20に伝わる。ローカルグローバル判定回路20は、CPU10がグローバル領域u110に対してストアを発行していることを判定し、線a70を通じてリモートデータバッファ60にストア要求を出す。リモートデータバッファ60は、ストア要求と線d50を通してデータバス130より得られるストアデータ1ワード分を受け、線a90を通して得られるユニット番号レジスタ40の値とともに、バッファリングデータを検索する。検索した結果、要求リモートデータをバッファリングしていることが分かれば、リモートデータバッファ60はバッファリングデータを更新した後にネットワークアダプタ回路70に線a110を通してリモートストア要求を、線d90を通してリモートストアデータ1ワード分を出す。この際に付加するストア要求アドレスは、上位にアクセス先ユニット1000のユニット番号、下位にアクセス先ユニット1000におけるローカルメモリ1080の実アドレスである。ネットワークアダプタ回路は、要求に従いリモートストア要求パケットを作成し、線p10を通してネットワークにパケットを出力する。ネットワークはパケットに付加されたアクセス先ユニット1000のユニット番号に従い、パケットをユニット1000のネットワークアダプタ回路1070に、線p1020を通して伝える。パケットを受けたネットワークアダプタ回路1070は、パケットを解釈し、ユニット10からのリモートストア要求であることを認識すると、まず線a1140を通して追出制御回路1050にストアデータを含むラインのキャッシュメモリ1110からの追い出しを要求する。要求を受けた追出制御回路1050は線a1050、アドレス/制御バス1120、線a1020を通して、ストアされるデータのキャッシュメモリ1110からの無効化を要求する。要求を受けたキャッシュメモリ1110は、無効化要求されたデータが登録されているかどうか検索し、存在した場合には無効化処理後、存在しない場合には検索直後に線d1020、データバス1130、線d1090を通して追出制御回路1050にLACKを返答する。追出制御回路1050はLACKを受けると、線c1030を通してネットワークアダプタ回路1070にACKを返答する。ネットワークアダプタ回路はACKを受けると、線a1120、線d1080を通して、メモリ制御回路1030にストア要求を出す。メモリ制御回路1030はストア要求に従い、ローカルメモリ1080に対して線a130、線d1060を通してストア要求を発行する。ローカルメモリ1080は、ストア要求に対してWACKを返答する。返答されたWACKは、線d1080を通してネットワークアダプタ回路1070に戻る。ネットワークアダプタ回路1070は戻ったWACKからリモートロード返答パケットを作成し、線p1010、ネットワーク10000、線p20を通して、ネットワークアダプタ回路70にWACKを戻す。戻ったWACKは、線d70、リモートデータバッファ60、線d50、データバス130、線d20を通してキャッシュメモリ110に返答されるとともに、線d10を通して演算部100に返答される。

0099

第3に、CPU10の演算部100が要求したデータがキャッシュメモリ110に存在せず、リモートデータバッファ60に存在しない場合について説明する。

0100

線a10よりローカル領域u100内のデータに対するストア要求がキャッシュメモリ110に出されると、キャッシュメモリ110は要求されたアドレスのデータを登録しているかどうか検索する。検索の結果、キャッシュメモリ110内にデータが存在しない場合には、線a30より演算部100が要求しているストア要求をアドレス/制御バス120に、線d20よりストアデータ1ワード分をデータバス130に出す。このストア要求は、アドレス/制御バス120より線a30を通じてローカルグローバル判定回路20に伝わる。ローカルグローバル判定回路20は、CPU10がグローバル領域u110に対してストアを発行していることを判定し、線a70を通じてリモートデータバッファ60にストア要求を出す。リモートデータバッファ60は、ストア要求と線d50を通してデータバス130より得られるストアデータ1ワード分を受け、線a90を通して得られるユニット番号レジスタ40の値とともに、バッファリングデータを検索する。検索した結果、要求リモートデータをバッファリングしていないことがわかれば、リモートデータバッファ60はネットワークアダプタ回路70に線a110を通してリモートストア要求を、線d90を通してリモートストアデータ1ワード分を出す。この際に付加するストア要求アドレスは、上位にアクセス先ユニット1000のユニット番号、下位にアクセス先ユニット1000におけるローカルメモリ1080の実アドレスである。ネットワークアダプタ回路は、要求に従いリモートストア要求パケットを作成し、線p10を通してネットワークにパケットを出力する。ネットワークはパケットに付加されたアクセス先ユニット1000のユニット番号に従い、パケットをユニット1000のネットワークアダプタ回路1070に、線p1020を通して伝える。パケットを受けたネットワークアダプタ回路1070は、パケットを解釈し、ユニット10からのリモートストア要求であることを認識すると、まず線a1140を通して追出制御回路1050にストアデータを含むラインのキャッシュメモリ1110からの追い出しを要求する。要求を受けた追出制御回路1050は線a1050、アドレス/制御バス1120、線a1020を通して、ストアされるデータのキャッシュメモリ1110からの無効化を要求する。要求を受けたキャッシュメモリ1110は、無効化要求されたデータが登録されているかどうか検索し、存在した場合には無効化処理後、存在しない場合には検索直後に線d1020、データバス1130、線d1090を通して追出制御回路1050にLACKを返答する。追出制御回路1050はLACKを受けると、線c1030を通してネットワークアダプタ回路1070にACKを返答する。ネットワークアダプタ回路はACKを受けると、線a1120、線d1080を通して、メモリ制御回路1030にストア要求を出す。メモリ制御回路1030はストア要求に従い、ローカルメモリ1080に対して線a130、線d1060を通してストア要求を発行する。ローカルメモリ1080は、ストア要求に対してWACKを返答する。返答されたWACKは、線d1080を通してネットワークアダプタ回路1070に戻る。ネットワークアダプタ回路1070は戻ったWACKからリモートロード返答パケットを作成し、線p1010、ネットワーク10000、線p20を通して、ネットワークアダプタ回路70にWACKを戻す。戻ったWACKは、線d70、リモートデータバッファ60、線d50、データバス130、線d20を通してキャッシュメモリ110に返答されるとともに、線d10を通して演算部100に返答される。

0101

(1.11.5:CPU10がユニット番号レジスタ40にストアした場合)I/O領域に用意したユニット番号レジスタ40に対するストア要求が線a10、データ1ワードが線d10より出されると、キャッシュメモリ110をパスして、線a30よりストア要求をアドレス/制御バス120に、線d20よりストアデータ1ワード分をデータバス130に出る。このストア要求は、アドレス/制御バス120より線a40を通じてユニット番号レジスタ40に伝わる。ユニット番号レジスタ40は、CPU10がユニット番号レジスタ40に対してストアを発行していることを判定し、線d40よりストアデータを受け取る。受け取ったデータが以前に登録されていたデータと同じかどうか判定し、同じである場合には、ストア要求に対して線d40、データバス130、線d20、線d10を通してWACKを返答する。同じでない場合には、ユニット番号レジスタは登録データを更新するとともに、線c10より追出制御回路50に対してリモートデータ一括無効化要求を出す。リモートデータ一括無効化要求を受けた追出制御回路50は、リモートデータバッファ60に対して無効化すべきリモートデータのアドレス要求を線c20を通して出す。リモートデータバッファ60は、タグのC0〜C3ビットが1であるブロックを検索し、キャッシュメモリ110にリモートデータバッファ60から登録されたデータのアドレスを、タグのC0〜C3ビットの情報を基に、線a100を通して追出制御回路50に出す(この際に無効化要求を出したアドレスに対応するC0〜C3ビットは0クリアする)。アドレスをうけた追出制御回路50は、線a50、アドレス/制御バス120、線a20を通してキャッシュメモリ110に登録データの無効化を要求する。要求を受けたキャッシュメモリ110は、要求データがキャッシュメモリに登録されているかどうか検索し、登録されている場合には無効化処理後、登録されていなければ検索直後に、線d20、データバス130、線d90を通して、追出制御回路50にLACKを出す。LACKを受けた追出制御回路50は、線c20を通してリモートデータバッファ60にACKを出力する。ACKを受けたリモートデータバッファは、まだC0〜C3ビットが1であるものが存在するかどうかを検索し、存在する限りキャッシュメモリ110にリモートデータバッファ60から登録されたデータのアドレスを、タグのC0〜C3ビットの情報を基に、線a100を通して追出制御回路50に出し、追出制御回路50によるキャッシュメモリ110からのリモートデータの無効化処理を続ける。C0〜C3ビットが1であるデータが存在しなくなると、リモートデータバッファ60は、線a100を通して追出制御回路50にWACKを出力する。WACKを受けた追出制御回路は、線d90,データバス130、線d20、線d10を通してWACKを返答する。

0102

(1.11.6:CPU10が追出制御回路50にリモートデータ一括無効化要求のストアした場合)I/O領域に用意した追出制御回路50に対するリモートデータ一括無効化要求のストアが線a10、データ1ワードが線d10より出されると、キャッシュメモリ110をパスして、線a30よりストア要求をアドレス/制御バス120に、線d20よりストアデータ1ワード分をデータバス130に出る。このストア要求は、アドレス/制御バス120より線a40を通じて追出制御回路50に伝わる。リモートデータ一括無効化要求を受けた追出制御回路50は、リモートデータバッファ60に対して無効化すべきリモートデータのアドレス要求を線c20を通して出す。リモートデータバッファ60は、タグのC0〜C3ビットが1であるブロックを検索し、キャッシュメモリ110にリモートデータバッファ60から登録されたデータのアドレスを、タグのC0〜C3ビットの情報を基に、線a100を通して追出制御回路50に出す(この際に無効化要求を出したアドレスに対応するC0〜C3ビットは0クリアする)。アドレスをうけた追出制御回路50は、線a50、アドレス/制御バス120、線a20を通してキャッシュメモリ110に登録データの無効化を要求する。要求を受けたキャッシュメモリ110は、要求データがキャッシュメモリに登録されているかどうか検索し、登録されている場合には無効化処理後、登録されていなければ検索直後に、線d20、データバス130、線d90を通して、追出制御回路50にLACKを出す。LACKを受けた追出制御回路50は、線c20を通してリモートデータバッファ60にACKを出力する。ACKを受けたリモートデータバッファは、まだC0〜C3ビットが1であるものが存在するかどうかを検索し、存在する限りキャッシュメモリ110にリモートデータバッファ60から登録されたデータのアドレスを、タグのC0〜C3ビットの情報を基に、線a100を通して追出制御回路50に出し、追出制御回路50によるキャッシュメモリ110からのリモートデータの無効化処理を続ける。C0〜C3ビットが1であるデータが存在しなくなると、リモートデータバッファ60は、線a100を通して追出制御回路50にWACKを出力する。WACKを受けた追出制御回路は、線d90,データバス130、線d20、線d10を通してWACKを返答する。

0103

(2:第2の実施例)図1〜5、7、11に本発明の他の実施例を示す。ただし、図1のリモートデータバッファ60の位置に、図11に示すリモートデータタグ65を置く。本実施例は、第1の実施例において、外部に用意したリモートデータ専用キャッシュメモリであるリモートデータバッファ60の代わりに、キャッシュメモリ110に登録されているリモートデータのタグ情報のみ記録しデータ本体は記録しない、データするリモートデータタグ65を使う例である。本実施例では、CPU10外部にリモートデータ自体を記憶する機構を用意する必要がないので、第1の実施例に比べて物量を削減できる。基本的にその効果、動作は第1の実施例と同じになるので、異なる点のみ以下に説明する。

0104

(2.1:第2の本実施例におけるリモートデータタグ65)リモートデータタグ65は、キャッシュメモリ110に登録されているリモートデータのタグ情報のみ記録し、データ本体は記録しないリモートデータ専用タグである。なお、本実施例ではリモートデータタグ60のデータ管理単位であるブロックサイズは256Byteとする。リモートデータタグ65の内容は、第1の実施例のリモートデータバッファ60のタグ情報と同じである。

0105

リモートデータバッファ65の動作を説明する。リモートデータタグ65にローカルグローバル判定回路20から線a70を通してリモートロード要求が来た場合に、ユニット番号レジスタ40の示すアクセス先ユニット番号によりアドレスを拡張した上でタグを引き、要求データがタグに記録されているかどうか検索する。記録されていなければ、返答データを記録するリモートデータタグ(256Byte分)にC0ビット〜C3ビットで1のものがあれば、キャッシュメモリ110より相当するデータの無効化を線a100を通じて追出制御回路50に要求し、線c20を通してACKが返答されるのを待ってから、ネットワークアダプタ回路70にリモートロード要求を出す。記録されていれば、すぐに線a110を通してネットワークアダプタ回路70にリモートロード要求を出す。リモートロード要求に対して、ネットワークアダプタ回路70よりデータ64Byteが線d70を通して返ってくると、リモートデータタグ65は返ってきたデータのタグを登録するとともに、ローカルグローバル判定回路20より要求のあった64Byteのデータを、線d50、データバス130、線d20を通して、CPU10に返答する。

0106

リモートデータタグ65にローカルグローバル判定回路20から線a70を通してリモートストア要求が来た場合に、線a110を通して、ネットワークアダプタ回路70にリモートストア要求を出す。また、CPU10より線d20、データバス130、線d50を通じて伝わるリモートストアの1ワードデータを線d70を通してネットワークアダプタ回路70に伝達する。ネットワークアダプタ回路70よりACKが線d70を通して返ってくると、リモートデータタグ65は、線d50、データバス130、線d20を通して、CPU10にACKを返答する。

0107

また、追出制御回路50より、登録データの無効化およびタグ情報の返答の要求が線c20を通じて通達された場合には、リモートデータタグ650はキャッシュメモリ110に登録したリモートデータをタグを検索して選定し(タグのC0ビット〜C3ビットが1であるものを検索する)、64Byte単位で線a100を通してキャッシュメモリ110からの追い出しを要求する。線c20を通して追出制御回路50よりACKが返ってきた後、他にキャッシュメモリ110に登録されているリモートデータが存在する場合(タグのC0ビット〜C3ビットが1であるものが存在する場合)には、次の追い出しをa100を通して要求し、存在しない場合には、線a100を通じて追出制御回路50のWACKを返す。

0108

リモートデータタグ65の内部構成を図11に示す。内部構成の動作は、第1の実施例リモートデータバッファ60と同様である(但し、メモリ制御部750、メモリバス770、メモリ840〜860が無くなる)。

0109

(2.2:ネットワークアダプタ回路70)基本的に動作、内部構成は第1の実施例と同じであるが、扱うデータの単位が、キャッシュメモリ110のラインサイズと同じ64Byteとなる。

0110

ネットワークアダプタ回路70は、リモートデータバッファ60から線a110、線d70を通して来るリモートデータアクセス要求(64Byte)に対してリモートアクセス要求パケットを生成し、線p10を通してネットワーク10000に出す。

0111

また、ネットワークアダプタ回路70は、ネットワーク10000より線p20を通してリモートアクセス返答パケットを受け取ると、パケットを解釈し、線d70を通してリモートデータバッファ60に返答データ(64Byte)を伝える。

0112

ネットワークアダプタ回路70は、ネットワーク10000より線p20を通して、リモートアクセス要求パケットを受け取ると、要求に従って64Byteデータのアクセス要求を線a120、線d80を通してメモリ制御回路30に出す。アクセス要求に対する返答がメモリ制御回路30より線d80を通して戻ってくると、リモートアクセス返答パケットを生成し、線p10を通してネットワーク10000に出す。

0113

(2.3:第2の実施例の動作)
(2.3.1:CPU10がユニット1000のローカルメモリ1080のデータをロードした場合)第1に、CPU10の演算部100が要求したデータがキャッシュメモリ110に存在する場合について説明する。この場合には、第1の実施例と同じである。

0114

第2に、CPU10の演算部100が要求したデータがキャッシュメモリ110に存在しない場合について説明する。

0115

線a10よりローカル領域u100内のデータに対するロード要求がキャッシュメモリ110に出されると、キャッシュメモリ110は要求されたアドレスのデータを登録しているかどうか検索する。検索の結果、キャッシュメモリ110内にデータが存在しない場合には、まずキャッシュメモリ110に新しいデータを登録するスペースが残っているかどうか判定する。判定の結果、スペースが残っていれば、線a30より演算部100が要求しているデータを含む64Byte分のデータのロード要求をアドレス/制御バス120に出す。スペースが残っていなければ、キャッシュメモリ110中のデータを64Byte分無効化してから、線a30より演算部100が要求しているデータを含む64Byte分のデータのロード要求をアドレス/制御バス120に出す。このロード要求は、アドレス/制御バス120より線a30を通じてローカルグローバル判定回路20に伝わる。ローカルグローバル判定回路20は、CPU10がグローバル領域u110に対してロードを発行していることを判定し、線a70を通じてリモートデータタグ65にロード要求を出す。リモートデータタグ65は、ロード要求を受け、線a90を通して得られるユニット番号レジスタ40の値とともに、タグを検索する。要求リモートデータをタグに記録していないことがわかれば、リモートデータタグ65の1ブロックを無効化する。この際に無効化するブロックのデータの内、キャッシュメモリ110にも登録されているデータをタグのC0ビットu240〜C3ビットu210より検索し、検索した結果、無効化しなければならないデータの無効化を線a100を通して追出制御回路50に要求する。追出制御回路50は要求に従い、線a50、アドレス/制御バス120、線a20を通してキャッシュメモリ110にデータの無効化要求を出す。キャッシュメモリ110は無効化に対応すると、線d20,データバス130、線d90を通して、追出制御回路50にLACKを出力する。追出制御回路はLACKを受けると、線c20を通してリモートデータタグ65にACKを返答する。リモートデータタグ65は、無効化したいデータが存在する間、データの無効化を線a100を通して追出制御回路50に要求し、線c20からのACKを待つ動作を繰り返す。以上の処理により、リモートデータタグ65の1ブロックの無効化が完了すると、リモートデータタグ65は線a110を通してネットワークアダプタ回路70にリモートロード要求を出す。この際に付加するロード要求アドレスは、上位にアクセス先ユニット1000のユニット番号、下位にアクセス先ユニット1000におけるローカルメモリ1080の実アドレスである。ネットワークアダプタ回路は、要求に従いリモートロード要求パケットを作成し、線p10を通してネットワークにパケットを出力する。ネットワークはパケットに付加されたアクセス先ユニット1000のユニット番号に従い、パケットをユニット1000のネットワークアダプタ回路1070に、線p1020を通して伝える。パケットを受けたネットワークアダプタ回路1070は、パケットを解釈し、ユニット10からのリモートロード要求であることを認識すると、線a1120を通して、メモリ制御回路1030にロード要求を出す。メモリ制御回路1030はロード要求に従い、ローカルメモリ1080に対して線a130を通してロード要求を発行する。ローカルメモリ1080は、ロード要求に対してメモリ制御回路1030にデータ64Byte分を返答する。返答されたデータは、線d1080を通してネットワークアダプタ回路1070に戻る。ネットワークアダプタ回路1070は戻ったデータからリモートロード返答パケットを作成し、線p1010、ネットワーク10000、線p20を通して、ネットワークアダプタ回路70にデータを戻す。戻ったデータ64Byteは線d50、データバス130、線d20を通してキャッシュメモリ110に返答されるとともに、リモートデータタグ65に要求データのキャッシュメモリ110への登録が記録される。戻ったデータは64Byte単位でキャッシュメモリ110に登録されるとともに、演算部100が要求した1ワード分のデータは、線d10を通して演算部100に返答される。

0116

(2.3.2:CPU10がユニット1000のローカルメモリ1080のデータをストアした場合)第1に、CPU10の演算部100が要求したデータがキャッシュメモリ110に存在した場合について説明する。

0117

線a10よりローカル領域u100内のデータに対するストア要求がキャッシュメモリ110に出されると、キャッシュメモリ110は要求されたアドレスのデータを登録しているかどうか検索する。検索の結果、キャッシュメモリ110内にデータが存在した場合には、そのデータを線d10から得られるストアデータにより更新した後に、線a30より演算部100が要求しているストア要求をアドレス/制御バス120に、線d20よりストアデータ1ワード分をデータバス130に出す。このストア要求は、アドレス/制御バス120より線a30を通じてローカルグローバル判定回路20に伝わる。ローカルグローバル判定回路20は、CPU10がグローバル領域u110に対してストアを発行していることを判定し、線a70を通じてリモートデータタグ65にストア要求を出す。リモートデータタグ65は、ストア要求と線d50を通してデータバス130より得られるストアデータ1ワード分を受け、線a90を通して得られるユニット番号レジスタ40の値とともに、ネットワークアダプタ回路70に線a110を通してリモートストア要求を、線d90を通してリモートストアデータ1ワード分を出す。この際に付加するストア要求アドレスは、上位にアクセス先ユニット1000のユニット番号、下位にアクセス先ユニット1000におけるローカルメモリ1080の実アドレスである。ネットワークアダプタ回路は、要求に従いリモートストア要求パケットを作成し、線p10を通してネットワークにパケットを出力する。ネットワークはパケットに付加されたアクセス先ユニット1000のユニット番号に従い、パケットをユニット1000のネットワークアダプタ回路1070に、線p1020を通して伝える。パケットを受けたネットワークアダプタ回路1070は、パケットを解釈し、ユニット10からのリモートストア要求であることを認識すると、まず線a1140を通して追出制御回路1050にストアデータを含むラインのキャッシュメモリ1110からの追い出しを要求する。要求を受けた追出制御回路1050は線a1050、アドレス/制御バス1120、線a1020を通して、ストアされるデータのキャッシュメモリ1110からの無効化を要求する。要求を受けたキャッシュメモリ1110は、無効化要求されたデータが登録されているかどうか検索し、存在した場合には無効化処理後、存在しない場合には検索直後に線d1020、データバス1130、線d1090を通して追出制御回路1050にLACKを返答する。追出制御回路1050はLACKを受けると、線c1030を通してネットワークアダプタ回路1070にACKを返答する。ネットワークアダプタ回路はACKを受けると、線a1120、線d1080を通して、メモリ制御回路1030にストア要求を出す。メモリ制御回路1030はストア要求に従い、ローカルメモリ1080に対して線a130、線d1060を通してストア要求を発行する。ローカルメモリ1080は、ストア要求に対してWACKを返答する。返答されたWACKは、線d1080を通してネットワークアダプタ回路1070に戻る。ネットワークアダプタ回路1070は戻ったWACKからリモートロード返答パケットを作成し、線p1010、ネットワーク10000、線p20を通して、ネットワークアダプタ回路70にWACKを戻す。戻ったWACKは、線d70、リモートデータタグ65、線d50、データバス130、線d20を通してキャッシュメモリ110に返答されるとともに、線d10を通して演算部100に返答される。

0118

第2に、CPU10の演算部100が要求したデータがキャッシュメモリ110に存在しない場合について説明する。

0119

線a10よりローカル領域u100内のデータに対するストア要求がキャッシュメモリ110に出されると、キャッシュメモリ110は要求されたアドレスのデータを登録しているかどうか検索する。検索の結果、キャッシュメモリ110内にデータが存在しない場合には、線a30より演算部100が要求しているストア要求をアドレス/制御バス120に、線d20よりストアデータ1ワード分をデータバス130に出す。このストア要求は、アドレス/制御バス120より線a30を通じてローカルグローバル判定回路20に伝わる。ローカルグローバル判定回路20は、CPU10がグローバル領域u110に対してストアを発行していることを判定し、線a70を通じてリモートデータタグ65にストア要求を出す。リモートデータタグ65は、ストア要求と線d50を通してデータバス130より得られるストアデータ1ワード分を受け、線a90を通して得られるユニット番号レジスタ40の値とともに、ネットワークアダプタ回路70に線a110を通してリモートストア要求を、線d90を通してリモートストアデータ1ワード分を出す。この際に付加するストア要求アドレスは、上位にアクセス先ユニット1000のユニット番号、下位にアクセス先ユニット1000におけるローカルメモリ1080の実アドレスである。ネットワークアダプタ回路は、要求に従いリモートストア要求パケットを作成し、線p10を通してネットワークにパケットを出力する。ネットワークはパケットに付加されたアクセス先ユニット1000のユニット番号に従い、パケットをユニット1000のネットワークアダプタ回路1070に、線p1020を通して伝える。パケットを受けたネットワークアダプタ回路1070は、パケットを解釈し、ユニット10からのリモートストア要求であることを認識すると、まず線a1140を通して追出制御回路1050にストアデータを含むラインのキャッシュメモリ1110からの追い出しを要求する。要求を受けた追出制御回路1050は線a1050、アドレス/制御バス1120、線a1020を通して、ストアされるデータのキャッシュメモリ1110からの無効化を要求する。要求を受けたキャッシュメモリ1110は、無効化要求されたデータが登録されているかどうか検索し、存在した場合には無効化処理後、存在しない場合には検索直後に線d1020、データバス1130、線d1090を通して追出制御回路1050にLACKを返答する。追出制御回路1050はLACKを受けると、線c1030を通してネットワークアダプタ回路1070にACKを返答する。ネットワークアダプタ回路はACKを受けると、線a1120、線d1080を通して、メモリ制御回路1030にストア要求を出す。メモリ制御回路1030はストア要求に従い、ローカルメモリ1080に対して線a130、線d1060を通してストア要求を発行する。ローカルメモリ1080は、ストア要求に対してWACKを返答する。返答されたWACKは、線d1080を通してネットワークアダプタ回路1070に戻る。ネットワークアダプタ回路1070は戻ったWACKからリモートロード返答パケットを作成し、線p1010、ネットワーク10000、線p20を通して、ネットワークアダプタ回路70にWACKを戻す。戻ったWACKは、線d70、リモートデータタグ65、線d50、データバス130、線d20を通してキャッシュメモリ110に返答されるとともに、線d10を通して演算部100に返答される。

0120

(2.3.3:CPU10がユニット番号レジスタ40にストアした場合)I/O領域に用意したユニット番号レジスタ40に対するストア要求が線a10、データ1ワードが線d10より出されると、キャッシュメモリ110をパスして、線a30よりストア要求をアドレス/制御バス120に、線d20よりストアデータ1ワード分をデータバス130に出る。このストア要求は、アドレス/制御バス120より線a40を通じてユニット番号レジスタ40に伝わる。ユニット番号レジスタ40は、CPU10がユニット番号レジスタ40に対してストアを発行していることを判定し、線d40よりストアデータを受け取る。受け取ったデータが以前に登録されていたデータと同じかどうか判定し、同じである場合には、ストア要求に対して線d40、データバス130、線d20、線d10を通してWACKを返答する。同じでない場合には、ユニット番号レジスタは登録データを更新するとともに、線c10より追出制御回路50に対してリモートデータ一括無効化要求を出す。リモートデータ一括無効化要求を受けた追出制御回路50は、リモートデータタグ65に対して無効化すべきリモートデータのアドレス要求を線c20を通して出す。リモートデータタグ65は、タグのC0〜C3ビットが1であるブロックを検索し、キャッシュメモリ110にリモートデータタグ65から登録されたデータのアドレスを、タグのC0〜C3ビットの情報を基に、線a100を通して追出制御回路50に出す(この際に無効化要求を出したアドレスに対応するC0〜C3ビットは0クリアする)。アドレスをうけた追出制御回路50は、線a50、アドレス/制御バス120、線a20を通してキャッシュメモリ110に登録データの無効化を要求する。要求を受けたキャッシュメモリ110は、要求データがキャッシュメモリに登録されているかどうか検索し、登録されている場合には無効化処理後、登録されていなければ検索直後に、線d20、データバス130、線d90を通して、追出制御回路50にLACKを出す。LACKを受けた追出制御回路50は、線c20を通してリモートデータタグ65にACKを出力する。ACKを受けたリモートデータタグ65は、まだC0〜C3ビットが1であるものが存在するかどうかを検索し、存在する限りキャッシュメモリ110にリモートデータタグ65から記録されたデータのアドレスを、タグのC0〜C3ビットの情報を基に、線a100を通して追出制御回路50に出し、追出制御回路50によるキャッシュメモリ110からのリモートデータの無効化処理を続ける。C0〜C3ビットが1であるデータが存在しなくなると、リモートデータタグ65は、線a100を通して追出制御回路50にWACKを出力する。WACKを受けた追出制御回路は、線d90,データバス130、線d20、線d10を通してWACKを返答する。

0121

(2.3.4:CPU10が追出制御回路50にリモートデータ一括無効化要求のストアした場合)I/O領域に用意した追出制御回路50に対するリモートデータ一括無効化要求のストアが線a10、データ1ワードが線d10より出されると、キャッシュメモリ110をパスして、線a30よりストア要求をアドレス/制御バス120に、線d20よりストアデータ1ワード分をデータバス130に出る。このストア要求は、アドレス/制御バス120より線a40を通じて追出制御回路50に伝わる。リモートデータ一括無効化要求を受けた追出制御回路50は、リモートデータタグ65に対して無効化すべきリモートデータのアドレス要求を線c20を通して出す。リモートデータタグ65は、タグのC0〜C3ビットが1であるブロックを検索し、キャッシュメモリ110にリモートデータタグ65から登録されたデータのアドレスを、タグのC0〜C3ビットの情報を基に、線a100を通して追出制御回路50に出す(この際に無効化要求を出したアドレスに対応するC0〜C3ビットは0クリアする)。アドレスをうけた追出制御回路50は、線a50、アドレス/制御バス120、線a20を通してキャッシュメモリ110に登録データの無効化を要求する。要求を受けたキャッシュメモリ110は、要求データがキャッシュメモリに登録されているかどうか検索し、登録されている場合には無効化処理後、登録されていなければ検索直後に、線d20、データバス130、線d90を通して、追出制御回路50にLACKを出す。LACKを受けた追出制御回路50は、線c20を通してリモートデータタグ65にACKを出力する。ACKを受けたリモートデータタグ65は、まだC0〜C3ビットが1であるものが存在するかどうかを検索し、存在する限りキャッシュメモリ110にリモートデータタグ65から記録されたデータのアドレスを、タグのC0〜C3ビットの情報を基に、線a100を通して追出制御回路50に出し、追出制御回路50によるキャッシュメモリ110からのリモートデータの無効化処理を続ける。C0〜C3ビットが1であるデータが存在しなくなると、リモートデータタグ65は、線a100を通して追出制御回路50にWACKを出力する。WACKを受けた追出制御回路は、線d90,データバス130、線d20、線d10を通してWACKを返答する。

0122

(3:第3の実施例)図3、5〜7、12、13に本発明の他の実施例として第3の実施例を示す。本実施例は、第1の実施例で示したユニット番号レジスタ40によるアドレス拡張がない例である。本実施例が解決する課題は、第1の実施例で述べた2つの課題の内、第2の課題である「ソフトウェアによるコヒーレンス制御の問題」として述べたもののみである。本実施例は、アドレス空間が十分に広いCPU10を使って分散共有メモリシステムを構築する際にも、第1の実施例で述べた2つの課題の内、第2の課題である「ソフトウェアによるコヒーレンス制御の問題」が依然として解決されないことに対応している。本実施例も基本的にその動作は第1の実施例と同じになるので、異なる点のみ以下に説明する。なお、本実施例でも、第2の実施例と同様にリモートデータバッファ60の代わりに、キャッシュメモリ110に登録されているリモートデータのタグ情報のみ記録しデータ本体は記録しない、データするリモートデータタグ65(図11)を使うことも可能である。

0123

(3.1:第3の実施例におけるアドレス空間)本実施例におけるアドレス空間について説明する。アドレス空間には、全ユニットのローカルメモリがフラット見えているとする。拡張したアドレス空間の見え方を図13に示す。この実アドレス空間は、全ユニット共通である。

0124

(3.2:第3の実施例におけるローカルグローバル判定回路25)図12に記載した本実施例の構成要素について、第1の実施例と異なる点のみ説明する。 ローカルグローバル判定回路25は、アドレス空間が第1の実施例と異なるので、ローカル/グローバルの判定方法が異なる。

0125

ローカルグローバル判定回路25の内部構成を図13に示す。アドレス/制御バス120より線a30を通して入力されるアドレス/制御情報は、アドレスラッチ200に登録される。アドレスラッチ200に登録された情報の内、コマンドを表すフィールドは線c200を通してトランザクション解釈部210に送られる。トランザクション解釈部210は、アドレスラッチ200に登録したアドレス/制御情報が、ロード/ストア要求トランザクションであれば線220を1にし、他のトランザクションであれば線220を0にする。

0126

また、アドレスラッチ200に記録した情報の内、アドレス上位225(本実施例では上位6ビット)は線a215を通して比較器285に入力される。比較器285には、自ユニット番号記憶器275に記憶された自ユニット番号(ユニット0なら0x00、ユニット63なら0x3F)も入力されており、両者が一致する場合には、アクセス要求はローカル領域アクセスとして線c215は0に、両者が一致しない場合には、アクセス要求はグローバル領域アクセスとして線c215は1になる(図14:アドレス空間参照)。線c215とトランザクション解釈部の出力c220とを入力とするand回路240の出力線c240により、アドレスドライバ260は、アドレスラッチ200が登録しているトランザクションがグローバル領域u110へのロードあるいはストアであればアクティブとなり、線a70にトランザクションを出力する。また、線c215を反転させたものとトランザクション解釈部の出力c220とを入力とするand回路230の出力線c230により、アドレスドライバ250は、アドレスラッチ200が登録しているトランザクションがローカル領域u100へのロードあるいはストアであればアクティブとなり、線a60にトランザクションを出力する。

0127

(3.3:第3の実施例における追出制御回路50)基本的に第1の実施例と同じ動作をするが、ユニット番号レジスタ40がないため、線c10を通して、ユニット番号の変更が伝えられた場合の処理は発生しなくなる。

0128

(3.4:第3の実施例におけるリモートデータバッファ60)リモートデータバッファ60の動作も、ユニット番号レジスタ40によるアドレス拡張がない以外は基本的に第1の実施例と同じである。但しユニット番号レジスタ40によるアドレス拡張がないため、タグの作りが変更される。

0129

本実施例のリモートデータバッファ60のタグの構成を図15に示す。タグは、Vビットu200、C0ビットu240、C1ビットu230、C2ビットu220、C3ビットu210、アドレス情報u265から構成する。Vビットu200は、そのタグに対応するリモートデータバッファの1ブロック(256Byte)に有効なデータが入っているかどうかを示すビットであり、C0ビットu240、C1ビットu230、C2ビットu220、C3ビットu210はリモートデータバッファ1ブロック256Byteを各64Byte(CPU10のキャッシュメモリ110のラインサイズに対応)のサイズに割った場合、それぞれの64Byteの単位がCPU10のキャッシュメモリ110に登録されたかどうかを示す。C0ビットu240は最下位の64Byteがキャッシュメモリ110に登録されたかどうかを示し、C1ビットu230は次の64Byte,C2ビットu220は3番目の64Byte,C3ビットu210は最上位の64Byteがキャッシュメモリ110に登録されたかどうかを示す。アドレス情報u265は、そのタグに対応するリモートデータバッファ1ブロック256Byteのデータがどのユニットのどのアドレスから登録したものかを記録するフィールドである。本実施例では、アドレスの上位6ビットがユニットの番号を示している。アドレス情報u260は、アクセス先ユニットのローカルメモリにおける実アドレスの内、下位8bit(リモートデータバッファ1ブロックが256Byteであるため)を切り捨てた値を記憶する。

0130

図16を用いて、具体的にタグに情報が登録される様子を説明する。初期状態では、全てのタグ情報を0クリアしておく。もしCPU10がユニット番号101100=0x2C内でのオフセット01001111010111011101000000=0x13D7740をロードしたい場合(CPU10からのロード要求はキャッシュメモリ110のラインサイズ64Byteであることから、下位6bitは0である)、アドレス10110001001111010111011101000000=0xB13D7740に対してロードをかける。これに対して、アクセスアドレス0xB13D7740より下位8bitを削除した値u345をタグのアドレス情報u325に記録する。また、リモートデータバッファ1ブロック256Byteのデータの内、どの64ByteのデータがCPU10によりアクセスされたのかを示す下位7ビット目と8ビット目の情報u355より、下から2番目の64Byteがアクセスされたことを認識し、C1ビットu300を1にする。さらに、CPU10がアドレス10110001001111010111011101000000=0xB13D7780でロードした場合には、アドレス情報u425と、アドレスの内対応するフィールドu445と比較し、一致したことを確認することで、CPU10が要求しているリモートデータがこのタグに対応するリモートデータバッファ1ブロック中に登録されていることを認識する。更にアクセスアドレスの下位7ビット目と8ビット目の情報u455より、下から3番目の64Byteがアクセスされたことを認識し、C2ビットu405を1にする。

0131

登録したリモートデータバッファ1ブロック分のデータをリプレースしなければならない場合には、リモートデータバッファ60とキャッシュメモリ110の間に包含関係を常に成立ために、タグ情報よりキャッシュメモリ110に登録されたデータのアドレスを生成し、キャッシュメモリ110に対して登録したリモートデータの無効化を要求する。図16の例では、タグのアドレス情報u585にC0ビット〜C3ビットの内、1であるC1ビットu570、C2ビットu565からアドレスu525、u555を生成して付加することで、キャッシュメモリ110に対して登録したリモートデータの無効化を要求するアドレスを生成する。この処理が終了した後は、タグのVビット、C0ビット〜C3ビットは0とし、次のタグ情報が記録できる状態にする。

0132

(3.4:第3の実施例の動作)ユニット番号レジスタ40によるアドレス拡張がない点以外は、基本的に動作は第1の実施例と同じである。但し、(1.11.5:CPU10がユニット番号レジスタ40にストアした場合)の処理は、ユニット番号レジスタ40がないので発生しない。

発明の効果

0133

本発明によれば、アドレス空間をCPU外部で拡張している分散共有メモリ型並列計算機において、CPU内部で管理するキャッシュメモリにリモートデータが登録できるようになり、性能が向上する。

0134

また、アドレス拡張の有無に関わらず、CPU内部で管理されるキャッシュメモリからリモートデータ全てを高速に追い出すことができるようになり、コヒーレンス制御の速度が向上する。

図面の簡単な説明

0135

図1本発明の第1の実施例及び第2の実施例に係る並列計算機全体を示す図である。
図2第1の実施例及び第2の実施例のローカルグローバル判定回路20を示す図である。
図3メモリ制御回路30を示す図である。
図4ユニット番号レジスタ40を示す図である。
図5追出制御回路50を示す図である。
図6第1の実施例及び第3の実施例のリモートデータバッファ110を示す図である。
図7ネットワークアダプタ回路70を示す図である。
図8第1の実施例及び第2の実施例の各ユニット毎のアドレス空間を示す図である。
図9第1の実施例及び第2の実施例のリモートデータバッファ110のタグ810−830またはリモートデータタグ115のタグ815−835の内容例を示す図である。
図10第1の実施例及び第2の実施例のリモートデータバッファ110のタグ810−830またはリモートデータタグ115のタグ815−835の内容変化例を示す図である。
図11第2の実施例のリモートデータタグ115を示す図である。
図12第3の実施例の並列計算機全体を示す図である。
図13第3の実施例のローカルグローバル判定回路25を示す図である。
図14第3の実施例の各ユニット毎のアドレス空間を示す図である。
図15第3の実施例のリモートデータバッファ110のタグ810−830またはリモートデータタグ115のタグ815−835の内容例を示す図である。
図16第3の実施例のリモートデータバッファ110のタグ810−830またはリモートデータタグ115のタグ815−835の内容変化例を示す図である。

--

0136

a10−a1140…アドレス情報および制御情報伝達線、c10−c1030…制御情報伝達線、d10−d1090…データ情報伝達線、p10、p20、p1010、p1020…パケット情報伝達線、230、240、440、450…and回路、370、630、700…or回路、u300、u305、u570、u575…c1ビット、u400、u405、u560、u565…c2ビット、u310、u410…ユニット番号、u320、u325、u420、u425、u580、u585…アドレス情報。

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ