(57)【特許請求の範囲】
【請求項１】
複数のプロセッサと、前記複数のプロセッサを接続する接続手段と、前記複数のプロセッサに共有される主記憶装置と、前記複数のプロセッサからの前記主記憶装置に対するアクセスを制御する記憶制御部とを備え、前記複数のプロセッサの各プロセッサは前記主記憶装置に格納されているデータの一部の写しを保持するキャッシュメモリを有する計算機システムにおいて、
前記記憶制御部は、前記複数のプロセッサのうちの任意のプロセッサから前記接続手段を介して指示される所望のデータが格納されている前記主記憶装置の第１の領域のアドレス情報と、前記所望のデータを転送すべき前記主記憶装置の第２の領域のアドレス情報と、前記所望のデータのデータ長の情報とを保持する転送制御手段と、前記転送制御手段の制御により、前記第１の領域に格納されている前記所望のデータを読み出して前記第２の領域に格納する転送手段とを有し、
前記各プロセッサは、前記主記憶装置の前記第１の領域から前記第２の領域へのデータ転送を指示する命令に従って、前記第１の領域のアドレス情報と前記第２の領域アドレス情報と前記データ長の情報とを保持し、該保持した各情報を前記接続手段を介して前記記憶制御部および他のプロセッサに対して指示する転送指示手段と、前記接続手段を介して他のプロセッサから指示される前記第１の領域のアドレス情報と前記第２の領域のアドレス情報と前記データ長の情報とを保持し、前記各情報に従って、前記主記憶装置の各領域に格納されているデータの写しが前記キャッシュメモリに保持されているか否かを調査するキャッシュ調査手段とを有し、
前記記憶制御部が、前記任意のプロセッサからの指示に応じて、各プロセッサと独立に前記主記憶装置の前記第１の領域から前記第２の領域へのデータ転送を実行することを特徴とする計算機システム。
【請求項２】
前記キャッシュ調査手段は、前記キャッシュメモリに前記主記憶装置の前記各領域に格納されているデータの写しが保持されている場合には、該データを無効とすることを特徴とする請求の範囲の第１項記載の計算機システム。
【請求項３】
前記キャッシュ調査手段は、前記キャッシュの調査が終了したかを判定し、終了したと判定した場合に前記記憶制御部にキャッシュ調査の終了報告を行う調査報告部を有することを特徴とする請求の範囲の第１項記載の計算機システム。
【請求項４】
前記転送制御手段は、前記各プロセッサから前記終了報告を受けた場合に、前記転送手段によるデータ転送を開始させることを特徴とする請求の範囲の第３項記載の計算機システム。
【請求項５】
複数のプロセッサと、前記複数のプロセッサを接続する接続手段と、インターリーブされた少なくとも２以上の記憶バンクから構成され、前記複数のプロセッサに共有される主記憶装置と、前記複数のプロセッサからの前記主記憶装置に対するアクセスを制御する記憶制御部とを有する計算機システムにおいて、前記記憶制御部は、各記憶バンク毎に、前記複数のプロセッサのうちの任意のプロセッサから前記接続手段を介して指示される、所望のデータが格納されている前記主記憶装置の第１の領域のアドレス情報と、前記所望のデータを転送すべき前記主記憶装置の第２の領域のアドレス情報と、前記所望のデータのデータ長の情報とを保持する転送制御手段と、前記転送制御手段の制御により、前記第１の領域に格納されている前記所望のデータを読み出して前記第２の領域に格納する転送手段とを有する少なくとも２以上のサブ記憶制御部を有し、各サブ記憶制御部が、前記任意のプロセッサからの指示に応じて各プロセッサと独立に、前記各記憶バンク毎に、前記第１の領域から前記第２の領域へのデータ転送を実行することを特徴とする計算機システム。
【請求項６】
前記各プロセッサは、前記データ転送を指示する命令に従って、前記第１の領域のアドレス情報と前記第２の領域のアドレス情報と前記データ長の情報とを保持し、該保持した各情報を前記接続手段を介して前記各サブ記憶制御部に指示する転送指示手段を有することを特徴とする請求の範囲の第５項記載の計算機システム。
【請求項７】
前記各サブ記憶制御部の前記転送制御手段は、前記各記憶バンク毎に前記データ転送が終了したかを判定し、終了したと判定した場合に終了報告を行う第１の転送報告部を有し、前記記憶制御部は、前記各サブ記憶制御部の各転送報告部から終了報告を受け取り、全ての前記転送報告部から終了報告を受けた場合に前記任意のプロセッサに終了報告を行う第２の転送報告部を有することを特徴とする請求の範囲の第６項記載の計算機システム。
【請求項８】
前記転送指示手段は前記データ転送の終了情報を保持する終了保持部を備え、前記第２の転送報告部は前記任意のプロセッサの前記終了保持部に終了情報をセットすることを特徴とする請求の範囲の第７項記載の計算機システム。
【発明の詳細な説明】
技術分野
本発明は、主記憶上のデータのコピー処理をプロセッサの動作とは独立に実行可能な計算機システムに関する。
背景技術
近年、異なるハードウエア間でソフトウエア・インタフェースを統一したシステム、所謂オープン・システムでは、その多くがＲＩＳＣプロセッサを１台乃至複数台バスで接続してシステムを構成している。
このようなオープンシステムにおいて、従来、広く採用されているある種のオペレーティング・システム（ＯＳ）では、ユーザインタフェースを単純にするために、例えば５１２Ｂｙｔｅ（以下Ｂ）あるいは４０９６Ｂ単位のページをひとつのファイルとして扱う。そのために、ＯＳが用意しているＩＯバッファ領域とユーザ領域との間のデータ転送が増大している。更に、ディスク、メモリ容量の飛躍的増加のため、ミドルアプリケーションの規模が大きくなり、例えば、データベース処理では、数ＫＢから数ＭＢという大量のデータの主記憶上でのデータ転送が必要になってきた。以下では、この主記憶上での大量の連続データ転送を主記憶上でのデータコピーと呼ぶことにする。
このような主記憶上でのデータコピーを行なう場合は、そのデータの再利用効率が低く、キャッシュの効果はほとんど得られない。
第１図に、このようなオープン・システムの基本的な構成を示す。
第１図において、プロセッサ１〜２、各プロセッサ内のキャッシュ３〜４、プロセッサバス５、記憶制御部６、主記憶バンク・バス７〜１０、主記憶バンク１１〜１４により計算機システムが構成されている。
プロセッサ１〜２をＲＩＳＣアーキテクチャのプロセッサとした場合には、レジスタ間演算が基本であり、主記憶へのデータ・アクセスは全てレジスタと主記憶間のデータ転送として実行される。
プロセッサバス５には、プロセッサ１〜２が接続されている。プロセッサ１、２は各々キャッシュ３、４を備えている。これにより、主記憶へのアクセス回数を減らし、プロセッサバス５の稼動率を低く抑えている。このキャッシュは、プロセッサに内蔵、プロセッサに外付け、あるいは両方を階層的に接続することで実現される。更に、スヌープ機構と呼ばれるプロセッサ間のデータの高速順序保証機構により、複数プロセッサの効率向上をはかっている。
主記憶、特に複数のプロセッサを備えるシステムにおける主記憶に関しては、一般に、主記憶からのデータ供給能力（主記憶バンク・バス７〜１０の合計のバンド幅）は、プロセッサからのデータ要求能力（プロセッサバス５のバンド幅）の１〜２倍の能力を持つように設計するのが通常である。そのために、主記憶を複数のバンクに分け、アドレスをインタリーブすることにより、このデータ供給能力を確保している。
第１図のようなシステムにおいて、主記憶上でのデータコピーは、次のような手順で実現される。
（１）まず、プロセッサ１によるロード命令により、主記憶バンク１１〜１４からプロセッサバス５およびキャッシュ３を介して、データをプロセッサ１上のレジスタ（図示せず）に取り込む。
（２）次に、そのプロセッサによるストア命令により、レジスタ上のデータを主記憶バンク１１〜１４のうちの指定されたアドレスに格納する。
（３）以上を必要なデータ量に対して繰返し行なう。
従って、データはほとんど加工されることなくプロセッサバス５を往復することになる。なお、一般にこのような主記憶内でのデータ転送の特徴は、
（１）連続データであること、
（２）４ＫＢから数ＭＢの大量のデータであること、
（３）データ転送中においてはデータが加工されないこと
等である。
（４）更に、データベースのような大規模データを扱うアプリケーションでは、４ＫＢのページ単位にアラインされたデータ群を異なる４ＫＢのページ単位にアラインされた領域にコピーすることが重要である。
上記した従来技術では、主記憶上でのデータコピーはプロセッサによるロード命令およびストア命令を繰返し実行することにより実現されている。そのために、
（１）プロセッサにとって、この主記憶上でのデータコピーは、かなりの演算時間を占める。
また、システムとして見た場合には性能のボトルネックがプロセッサバスとなる。そのために、
（２）主記憶上でのデータコピーが、基本的に連続であり、主記憶バンク・バスをすべて動作させることができる可能性があるにもかかわらず、主記憶バンク・バスに遊びが生じてしまう。
（３）また、プロセッサバスに複数のプロセッサが接続している場合、１台のプロセッサの主記憶上でのデータコピーのために、プロセッサバスの稼働率が高くなり、他のプロセッサの主記憶アクセスを遅らせる要因となる。
従って、本発明の目的は、プロセッサの動作とは非同期・独立に主記憶上のデータコピーを効率よく実行可能な計算機システムを提供することにある。そして、プロセッサバスに複数のプロセッサが接続している場合でも、他のプロセッサの主記憶アクセスを遅らせることなく、任意のプロセッサにおいて主記憶上のデータコピーを実行可能とする。
発明の開示
上記目的を達成するために、本発明では、少なくとも１台のプロセッサと、主記憶装置と、プロセッサからの主記憶装置に対するアクセスを制御する記憶制御部とを有する計算機システムにおいて、記憶制御部は、プロセッサから指示される所望のデータが格納されている主記憶装置の第１の領域のアドレス情報と、所望のデータを転送すべき主記憶装置の第２の領域のアドレス情報と、所望のデータのデータ長の情報とを保持する転送制御手段と、転送制御手段の制御により、第１の領域に格納されているデータを読み出して第２の領域に格納する転送手段とを有し、記憶制御部が、プロセッサからの指示に応じて、プロセッサとは独立に第１の領域から第２の領域へのデータ転送を実行する。そして、転送制御手段は、データ転送が終了したかを判定し、終了したと判定した場合にプロセッサに終了報告を行う。
本発明によれば、主記憶上のデータコピーをプロセッサの処理と非同期・独立に実行することができるので、プロセッサの負荷を減らすことができる。また、プロセッサバスに複数のプロセッサが接続されているような場合には、データコピーにプロセッサバスを用いなくて済むため、プロセッサバスの負荷を大幅に低減することができる。
【図面の簡単な説明】
第１図は、計算機システムの基本的な構成を示す図である。
第２図は、本発明の第１の実施例におけるプロセッサの構成を示す図である。
第３図は、スヌープ処理のためのキャッシュアドレス生成部の構成を示す図である。
第４図は、本発明の第１の実施例における記憶制御部の構成を示す図である。
第５図は、第１の実施例における制御部の構成を示す図である。
第６図は、本発明の第２の実施例における記憶制御部の構成を示す図である。
第７図は、第２の実施例における制御部の構成を示す図である。
発明を実施するための最良の形態
以下、本発明の好適な一実施例を図面を用いて説明する。
本実施例では、計算機システムは第１図に示した構成をとるものとする。尚、説明を簡単にするために、プロセッサは複数台あり、各プロセッサはストアインタイプ（ライトバックタイプ）のキャッシュを備え、それぞれスヌープ機構を有しているものとする。ここで、スヌープ処理を実現するためのキャッシュ内のデータの状態として、「変更」（データの内容が変更されている。主記憶とは一致していない）、「占有」（キャッシュ上にデータがあるが変更されていない）、「無効」（当該アドレスの情報はキャッシュ上にない）の３状態があるものとする。
アドレス空間は４ＫＢをページの単位とする。データの単位は８バイトとする。主記憶はインタリーブされた構成でバンク数は４とする。また、各主記憶バンクのデータ幅は８バイトとする。もちろん、このスヌープ機構、主記憶のインタリーブ構成、バンク構成等については様々な変形があり得るが、いずれの構成についても本発明を適用することができる。
本発明の第１の実施例を第２図から第５図を用いて詳細に説明する。
説明の手順として、第２図および第３図を用いてプロセッサおよびプロセッサバスにおける第１の実施例を説明し、それに対応して、第４図および第５図を用いて記憶制御部における第１の実施例を説明する。
第２図は、第１図のプロセッサの構成を示す。各プロセッサ１〜２は同様の構成とされる。
第２図中、プロセッサ１は、命令キュー２０、命令デコーダ２１、アドレス変換部２２、レジスタ群２３、演算器群２４、本実施例の新規機構であるスヌープ処理のためのアドレス生成部２５、同じく本実施例の新規機構であるコピー制御レジスタ群ＭＣＲ２６から構成される。
第２図を用いて動作の説明を行なう。
通常のプロセッサでは、まず、キャッシュ３上の指定された領域から命令を取り出し、線Ｌ１０を介して命令キュー２０に取り込む。命令キュー２０からは、順次、命令が命令デコーダ２１に送られて解読される。もし、必要な命令がキャッシュ３に無いときは、線Ｌ１６、プロセッサバス５を介して主記憶から命令を取得する処理が実行される。
通常、ロード系命令では、格納先のレジスタと読み出し元の主記憶上のアドレスが指定される。キャッシュ３に所望のデータがあるときは、線Ｌ１４を介してデータがレジスタ群２３中の指定されたレジスタに格納される。もし、キャッシュ３に所望のデータが無いときは、線Ｌ１６及びプロセッサバス５を介して、プロセッサの外部にデータを探しにいく。このとき、主記憶にデータ読み出し要求を出すとともに、スヌープ機構により、他のプロセッサのキャッシュをチェックする。
この処理を、第２図のプロセッサを他のプロセッサとして説明する。
プロセッサバス５を介して、所望のデータの格納先のアドレスが送られてくると、線Ｌ１７を介してキャッシュ３を調査する。もし、キャッシュ３に、当該アドレスのデータが保持されている場合は、このデータを線Ｌ１６、プロセッサバス５を介して、主記憶バンク１１〜１４に書き戻す。このとき、キャッシュ３の当該データの状態を「無効」とする。（このデータを直接データを所望するプロセッサに送り込むことも考えられるが、本実施例では、論理的に主記憶に戻す方式とする。）
一方、ロード系命令を実行したプロセッサでは、このデータを主記憶からプロセッサバス５、線Ｌ１６、線Ｌ１４を介してキャッシュ３及びレジスタ群２３中の指定したレジスタに取り込む。このとき、キャッシュ３の当該データの状態を「占有」とする。
ストア系命令についても、同様に、読み出し元のレジスタと格納先の主記憶上のアドレスが指定され、このレジスタ上のデータが線Ｌ１４を介してキャッシュ３に格納される。このとき、キャッシュ３の当該データの状態を「変更」とする。これと同時にスヌープ処理により他のプロセッサのキャッシュをチェックする。
この処理を第２図のプロセッサを他のプロセッサとして説明する。
プロセッサバス５を介して上記主記憶上のアドレスが送られてくると、線Ｌ１７を介して、キャッシュ３を調査する。もし、キャッシュ３に当該アドレスのデータが保持されている場合は、このキャッシュの当該データの状態を「無効」とする。
演算命令の場合は、レジスタ群２３中の１つまたは複数のレジスタが指定され、演算器群２４中の演算器を用いて演算が行なわれる。このときの演算結果データは、レジスタ群２３中の指定したレジスタに格納される。
次に、主記憶上のデータコピーについて説明する。主記憶上のデータコピーは以下のように実行される。この処理においてコピー制御レジスタＭＣＲ２６が使用される
本実施例では、コピー制御レジスタＭＣＲ２６は複数個指定することが可能である。また、１個のコピー制御レジスタＭＣＲ２６は、次の４つのパートから成る。
第１パートは、主記憶上の転送元の先頭アドレスを保持する（第２図の２６−１）。
第２パートは、主記憶上の転送先の先頭アドレスを保持する（第２図の２６−２）。
第３パートは、転送データ長を保持する（第２図の２６−３）。ここで、転送データ長は、ページサイズである４ＫＢ以下の長さを持つ。
第４パートは、終了結果を保持する（第２図の２６−４）。
主記憶上のデータコピーは、次の４段階の手順を実行する。
（１）命令で指定された主記憶上の転送元の先頭アドレス（論理アドレス）を、アドレス変換部２２で物理アドレスに変換し、コピー制御レジスタＭＣＲ２６の第１パート（２６−１）にセットする。
（２）命令で指定された主記憶上の転送先の先頭アドレス（論理アドレス）を、アドレス変換部２２で物理アドレスに変換し、コピー制御レジスタＭＣＲ２６の第２パート（２６−２）にセットする。
（３）転送データ長をコピー制御レジスタＭＣＲ２６の第３パート（２６−３）にセットする。
（４）（１）〜（３）の情報を線Ｌ２０〜線Ｌ２２、プロセッサバス５を介して、記憶制御部６に送り出し、記憶制御部６に起動をかける。
ＭＣＲ２６−１とＭＣＲ２６−２の内容は物理アドレスのため、それぞれページ境界をまたがることはできない。従って、指定できる転送データ長は、転送元アドレスと転送先アドレスがともにページ境界に設定されている場合は、最大４ＫＢに設定できるが、少なくとも一方がページ境界に一致していないときは、２つの物理アドレスのうち、それぞれの次の４ＫＢ境界との距離の小さい方が設定し得る最大の転送データ長となる。（後述する第２の実施例では、転送元アドレスと転送先アドレスがともに、ページ境界に設定されている場合に制限する。）
コピー制御レジスタＭＣＲ２６は複数セット用意されているため、（１）〜（３）までの処理を繰り返して実行することにより、大量のデータコピーを効率良く実行することができる。
一方、主記憶上のデータコピーの終了報告は、次の２つの方法がある。
（１）記憶制御部６からプロセッサバス５及び線Ｌ２３を介して、コピー制御レジスタＭＣＲ２６の第４パート（２６−４）に終了フラグをセットする。プロセッサはこのＭＣＲ２６の第４パート（２６−４）に終了フラグがセットされているか否かをポーリングする。
（２）記憶制御部６から外部割込みを発生させる。プロセッサは、この割込み処理を受け付けることにより、終了報告を受け付けることができる。
主記憶上のデータコピーにおいても、スヌープ処理を用いて他のプロセッサ上のキャッシュをチェックする。このときの上記ロード系処理やストア系処理との違いは、データコピーでは、転送データ長が任意に設定されることである。従って、先頭アドレスと転送データ長の情報から決まる複数のアドレスについて、キャッシュをチェックをする必要がある。
この処理を第２図のプロセッサをデータコピーを実行する以外の他のプロセッサとして説明する。このとき、プロセッサバス５を介して転送元の先頭アドレス、転送先の先頭アドレスおよび転送データ長の情報が送られ、線Ｌ２４〜線Ｌ２６を介してスヌープ処理のためのアドレス生成部２５内のレジスタ２７−１〜２７−３に保持される。そして、アドレス生成部２５においてキャッシュ３の調査すべきアドレス情報を生成し、必要に応じてキャッシュ３から線Ｌ１６を介して主記憶バンク１１〜１４へのデータの書き戻し、キャッシュ３の当該アドレスの無効化処理を行なう。全ての処理が終了すると、線Ｌ１８、線Ｌ１９及びプロセッサバス５を介して、記憶制御部６に対してスヌープ処理の終了報告を行う。
第３図は、スヌープ処理のためのアドレス生成部２５の構成を示す。
第３図において、アドレス生成部２５は、主記憶上でのデータコピーを行なうための転送元の先頭アドレス、転送先の先頭アドレス及び転送データ長の情報を保持するレジスタ群２７、セレクタ３０〜３３、レジスタ３４〜３６、＋８（バイト）加算器３７〜３８、−８（バイト）加算器３９、ＡＮＤ回路４０、０チェック回路４１から構成される。
プロセッサバス５からの転送元の先頭アドレス、転送先の先頭アドレス及び転送データ長の情報が、線Ｌ２４〜線Ｌ２６を介してレジスタ２７−１〜２７−３に保持される。このとき、セレクタ３１〜３３をレジスタ２７−１〜２７−３の情報を入力として選択するようにセットし、２７−１〜２７−３の情報をそれぞれレジスタ３４、３５及び３６に取り込む。レジスタ３４、３５の情報は、線Ｌ３０及び線Ｌ３１、セレクタ３０及び線Ｌ２７を介して、キャッシュに送られる。セレクタ３０は順次切り替り、レジスタ３４、３５の情報を出力するる。
線Ｌ２７に、レジスタ３４に保持される転送元の先頭アドレスが送られるときは、ロード系処理と同様に扱われる。従って、線Ｌ２７を介してキャッシュ３を調査し、もし、キャッシュ３に当該アドレスのデータが保持されている場合は、このデータを線Ｌ１６、プロセッサバス５を介して、主記憶バンク１１〜１４に書き戻し、当該データの状態を「無効」とする。
一方、線Ｌ２７に、レジスタ３５に保持される転送先の先頭アドレスが送られるときは、ストア系処理と同様に扱われる。従って、線Ｌ２７を介して、キャッシュ３を調査し、もし、キャッシュ３に当該アドレスのデータが保持されている場合は、このキャッシュ３の当該データの状態を「無効」とする。
レジスタ３４およびレジスタ３５の内容は、キャッシュのチェックが終わるたびに、データの単位である８バイトずつ更新され、レジスタ３６の値が０になるまで続けられる。本実施例では、８バイト毎のチェックとしたが、いくつかのアドレスをまとめて送り、キャッシュのチェックをすることもできる。（ここでは、簡単のためにキャッシュブロックは考慮しない。もちろん、考慮することも可能である。）
レジスタ３６の値を０チェック回路４０で判定し、その値が０となり、且つ、キャッシュのチェックが終了したことが線Ｌ１８を介してキャッシュ３から報告されると、線Ｌ１９、プロセッサバス５を介して、記憶制御部６に対してスヌープ処理の終了報告を行う。
ここで、注意すべきことは、主記憶上でコピー対象とする領域は、他のプロセッサにはさわらせないようにソフトウエアとして配慮する必要があることである。このときのスヌープ処理は、あくまで順序制御動作の保証のためである。従って、高速化のために、この順序保証をすべてソフトウエアで保証し、ハードウエアでのスヌープ処理を行なわないことも考えられる。１つの案として、アーキテクチャ上で可能であれば、コピー処理の対象領域をキャッシュレス（キャッシィングしない）領域として指定し、スヌープ処理による順序保証を不要とすることも考えられる。
次に、第４図を用いて記憶制御部６について説明する。
第４図において、記憶制御部６は、制御部５０、主記憶上でのコピー処理を行なうための転送元の先頭アドレス、転送先の先頭アドレスおよび転送データ長の情報を保持するレジスタ５１、セレクタ５２〜５５、バッファ５６〜６０から構成され、プロセッサバス５と主記憶バンク・バス７〜１０に接続されている。
まず、通常のロード系処理について説明する。
制御部５０により生成された読み出し指示とそのアドレスが線Ｌ４３〜線Ｌ４６を介して主記憶バンク・バス７〜１０に送られる。読み出し指示に応じて主記憶バンクから読み出されたデータは、主記憶バンク・バス７〜１０から線Ｌ４９〜線Ｌ５２を介してバッファ６０に格納される。更に、プロセッサバス５の状態に応じて線Ｌ５３を介してロード系命令を実行したプロセッサに送り出される。
また、ストア系処理については、プロセッサバス５及び線Ｌ４７を介してプロセッサから送られてきたデータが、制御部５０の制御によりセレクタ５２〜５５で選択され、主記憶バンク・バス７〜１０に接続しているバッファ５６〜５９に格納される。更に、制御部５０よりストア位置のアドレスが線Ｌ４３〜線Ｌ４６を介して指示され、バッファ５６〜５９からストアデータが所定の主記憶バンク・バス７〜１０に送り出される。
次に、主記憶上のデータコピーについて説明する。
制御部５０は、まず、主記憶上のデータコピーのための必要な情報である転送元の先頭アドレス、転送先の先頭アドレス及び転送データ長をプロセッサバス５及び線Ｌ４０を介してレジスタ５１に取り込む。次に、他のプロセッサからのスヌープ処理の終了報告を線Ｌ４１を介して受け取る。この報告によりデータコピーを開始することができる。
以下、データコピーの手順について説明する。
（１）制御部５０により生成した主記憶バンク上の読み出し元アドレスが線Ｌ４３〜線Ｌ４６及び主記憶バンク・バス７〜１０を介して主記憶バンクに送られる。主記憶バンクから主記憶バンク・バス７〜１０を介して制御部５０で指定した数のデータが線Ｌ４９〜線Ｌ５２に読み出される。
（２）制御部５０は、読み出し元の主記憶バンクと書き込み先の主記憶バンクとの対応関係を計算し、その結果により線Ｌ４８を介してセレクタ５２〜５５を切り替え、線Ｌ４９〜線Ｌ５２上のデータをバッファ５６〜５９に取り込む。
（３）制御部５０により生成した主記憶バンク上の書き込み先アドレスが線Ｌ４３〜線Ｌ４６及び主記憶バンク・バス７〜１０を介して主記憶バンクに送られ、各バッファ５６〜５９から主記憶バンク・バス７〜１０を介して制御部５０で指定した数のデータが主記憶バンクに書き込まれる。
（４）（１）から（３）の処理をレジスタ５１−３に保持された転送データ長に示されたデータ量だけ繰返し行なう。
（５）線Ｌ４２及びプロセッサバス５を介してプロセッサに終了報告を行う。即ち、コピー制御レジスタＭＣＲ２６−４にデータコピーの終了フラグを書き込む。
第５図は、制御部５０の構成を示す図である。
第５図において、制御部５０は、主記憶上でのコピー処理を行なうための転送元の先頭アドレス、転送先の先頭アドレス及び転送データ長の情報を保持するレジスタ５１、０チェック回路６９、セレクタ７０〜７２、レジスタ７３〜７５、＋２５６（バイト）加算器７６〜７７、−２５６（バイト）加算器７８、セレクタ７９及び８３〜８４、＋３２（バイト）加算器８０〜８２、レジスタ８６〜８９から構成される。また、９０はセレクタ５２〜５５制御することによって実現する転送元の主記憶バンクと転送先の主記憶バンクのマッピング情報をあらわす。
プロセッサバス５及び線Ｌ４０を介して送られてきた主記憶上でのデータコピーを行なうための転送元の先頭アドレス、転送先の先頭アドレス及び転送データ長の情報はレジスタ５１に一時保持される。次に、プロセッサバス５及び線Ｌ４１を介して他のプロセッサから送られてきたスヌープ処理の終了報告を起動信号として、レジスタ５１に保持された情報がレジスタ７３〜７５に移されて、読み出し及び書き込みのための主記憶アドレスが生成される。
ここでは、２５６バイトを単位として主記憶からのデータ読み出し／書き込みを繰り返して行なう。２５６バイトのデータは主記憶バンク毎に８個の８バイト・データに相当する。８個の８バイト・データというのは、いま仮に、主記憶をＳＤＲＡＭあるいはＤＲＡＭのＥＤＯモードで実現し、そのバーストモードを利用することを考えたときのバーストの単位である。この値は、ＳＤＲＡＭあるいはＤＲＡＭのＥＤＯモードの特性により異なることもある。また、もちろん、バッファ５６〜５９を十分確保できるのであれば、もっと大きな単位で分割することもできる。
ここでは、以下の３つの手順を、レジスタ７５の値が０になるまで繰返し行なう。
（１）レジスタ７３で生成した各主記憶バンクからの読み出しアドレスを線Ｌ６０を介して上位ビット０−２６を線Ｌ６２へ、ビット２７、２８を線Ｌ６３に送る。線Ｌ６３上のビット２７、２８をセレクト信号とし、セレクタ８３〜８５を選択し、線Ｌ６２のアドレスを必要に応じて３２Ｂ加算してレジスタ８６〜８９に送り、さらに、各主記憶バンク・バス７〜１０に転送する。
（２）同時に、レジスタ７３で生成した各主記憶バンクからの読み出しアドレスのビット２７、２８を線Ｌ６０を介して転送元の主記憶バンクと転送先の主記憶バンクのマッピング情報９０に送る。更に、レジスタ７４で生成した各主記憶バンクへの書き込みアドレスのビット２７、２８を線Ｌ６１を介して、同様にマッピング情報９０に送る。ここでは、転送元の主記憶バンクと転送先の主記憶バンクのそれぞれの先頭アドレスのずれを計算し、線Ｌ６４に送る信号をセレクト信号としてセレクタ５２〜５５を制御する。
（３）レジスタ７４で生成した各主記憶バンクへの書き込みアドレスを線Ｌ６１を介して上位ビット０−２６を線Ｌ６２へ、ビット２７、２８を線Ｌ６３に送る。線Ｌ６３上のビット２７、２８をセレクト信号とし、セレクタ８３〜８５を選択し、線Ｌ６２のアドレスを必要に応じて３２Ｂ加算してレジスタ８６〜８９に送り、さらに、各主記憶バンク・バス７〜１０に転送する。
そして、レジスタ７５の値が０になったことを０チェック回路６９で判定すると、データ転送処理が終了したことを線Ｌ４２、プロセッサバス５を介してプロセッサに報告する。
次に、本発明の第２の実施例について第６図、第７図を用いて詳細に説明する。
第２の実施例では、主記憶上のページでアラインされた転送元領域のデータを、同じくページでアラインされた転送先領域にデータ転送する。データベースのような大規模データを扱うアプリケーションでは、このようなデータコピー処理が重要である。
この場合、第１の実施例では、第４図に示す記憶制御部においてバッファ５２〜５５、バッファ６０と主記憶バンク・バス７〜１０を相互に接続する必要があり多数のデータ線を必要とする。従って、第１の実施例の場合には、記憶制御部はひとつのＬＳＩで実装することが望まれる。
一方、第２の実施例では、比較的小規模のＬＳＩを複数個用いて実現することができる。
第２の実施例では、第１の実施例に対して、第１図に示す記憶制御部６の構成が異なる。
第２の実施例における記憶制御部６の構成について第６図及び第７図を用いて説明する。
第６図において、記憶制御部６は、制御部９５、主記憶上でのデータコピー処理を行なうための転送元の先頭アドレス、転送先の先頭アドレスおよび転送データ長の情報を保持するレジスタ９６、セレクタ９７、バッファ９８からなる主記憶バンク・バス７に接続したサブ記憶制御部９１と、内部構成がサブ記憶制御部９１と同一であり、それぞれ主記憶バンク・バス８〜１０に接続したサブ記憶制御部９２〜９４及びＡＮＤ回路９９等からなる。
第６図を用いて、記憶制御部６の動作を説明する。
通常のロード系処理およびストア系処理については、上記第１の実施例と同じ動作を行なう。
次に、主記憶上のデータコピーについて説明する。
サブ記憶制御部９１〜９４は、各々同様の動作を行なうので、ここではサブ記憶制御部９１について説明する。
まず、主記憶上のデータコピーのための必要な情報である転送元の先頭アドレス、転送先の先頭アドレスおよび転送データ長をプロセッサバス５及び線Ｌ４０を介してレジスタ９６に取り込む。次に、他のプロセッサからのスヌープ処理の終了報告を線Ｌ４１を介して受け取る。この報告によりデータコピーを開始する。
以下、データコピーの手順について説明する。
（１）制御部９５により生成した主記憶バンク上の読み出し元アドレスが線Ｌ７１及び主記憶バンク・バス７を介して主記憶バンクに送られる。主記憶バンクから主記憶バンク・バス７を介して制御部９５で指定した数のデータが線Ｌ７３に読み出され、セレクタ９７を介してバッファ９８に取り込まれる。
（２）制御部９５により生成した主記憶バンク上の書き込み先アドレスが線Ｌ７１及び主記憶バンク・バス７を介して主記憶バンクに送られ、バッファ９８から主記憶バンク・バス７を介して制御部９５で指定した数のデータが主記憶に書き込まれる。
（３）（１）、（２）の処理をレジスタ９６−３に保持された転送データ長に示されたデータ量だけ繰返し行なう。
（４）サブ記憶制御部９１から終了信号が線Ｌ７４を介してＡＮＤ回路９９に送られる。他のサブ記憶制御部９２〜９４からも終了信号がＡＮＤ回路９９に送られる。全ての終了信号が集まると、記憶制御部６は、線Ｌ４２およびプロセッサバス５を介してプロセッサに終了報告をする。つまり、コピー制御レジスタＭＣＲ２６−４に終了フラグを書き込む。
第７図は、制御部９５の構成を示す図である。
第７図において、制御部９５は、セレクタ７９、主記憶上でのデータコピーを行なうための転送元の先頭アドレス、転送先の先頭アドレス及び転送データ長の情報を保持するレジスタ９６、セレクタ１００〜１０２、レジスタ１０３〜１０５、＋２５６（バイト）加算器１０６〜１０７、−２５６（バイト）加算器１０８、０チェック回路１０９から構成される。
プロセッサバス５及び線Ｌ４０を介して送られてきた主記憶上でのデータコピー処理を行なうための転送元の先頭アドレス、転送先の先頭アドレス及び転送データ長の情報はレジスタ９６に一時保持される。
次に、プロセッサバス５及び線Ｌ４１を介して他のプロセッサから送られてきたスヌープ処理の終了報告を起動信号として、レジスタ５１の情報がレジスタ１０３〜１０５に移されて、読み出し及び書き込みのための主記憶アドレスが生成される。
ここでは、２５６バイトを単位として、主記憶からの読み出し／書き込みを繰り返して行なう。２５６バイトのデータは主記憶バンク毎に８個の８バイト・データに相当する。８個の８バイト・データというのは、いま仮に、主記憶をＳＤＲＡＭあるいはＤＲＡＭのＥＤＯモードで実現し、そのバーストモードを利用することを考えたときのバーストの単位である。この値は、ＳＤＲＡＭあるいはＤＲＡＭのＥＤＯモードの特性により異なることもある。また、もちろん、バッファ９８を十分確保できるのであれば、もっと大きな単位で分割することもできる。
ここでは、以下の２つの手順を、レジスタ１０５の値が０になるまで繰返し行なう。
（１）主記憶バンクからデータを読み出すために、レジスタ１０３で生成した主記憶バンクからの読み出しアドレスをセレクタ７９、線Ｌ７１を介して主記憶バンク・バス７に転送する。
（２）次に、主記憶へのデータの書き込みのために、レジスタ１０４で生成した主記憶バンクへの書き込みアドレスをセレクタ７９、線Ｌ７１を介して主記憶バンク・バス７に転送する。
そして、レジスタ１０５の値が０になったことを０チェック回路１０９で判定すると、データ転送処理が終了したことを線Ｌ７４を介してＡＮＤ回路９９に報告する。
以上、本発明について実施例に基づき具体的に説明したが、本発明は上記実施例に限定されるものではなく、その要旨を逸脱しない範囲内で種々変更可能であることは言うまでもない。
本発明によれば、以下のような効果を得ることができる。
（１）主記憶上のデータコピーをプロセッサの処理と非同期・独立に実行することができるので、プロセッサの負荷を減らすことができる。
（２）主記憶が複数のバンクから構成されている場合、データコピーのボトルネックをプロセッサバスの能力から、主記憶バンクバスの合計の能力まで引き上げることができる。
（３）プロセッサバスに複数のプロセッサが接続されている場合、データコピーにプロセッサバスを用いなくて済むため、プロセッサバスの負荷を大幅に低減することができる。
（４）更に、第２の実施例では、それぞれの主記憶バンクから送り出されたデータが、入力元の主記憶バンク・バスに接続しているサブ記憶制御部のみに保持されるため、ピン数制限による記憶制御部のＬＳＩ分割を容易に行うことができる。
また、各サブ記憶制御部を各主記憶バンク・バスに近づけて実装することが容易にできるため、レイテンシの短縮、クロック周波数の短縮をはかることができる。
産業上の利用可能性
本発明は、１台乃至複数台のプロセッサをバスで接続し、各プロセッサで主記憶を共有する構成を備えた計算機システムに用いるのに適している。
【図１】
0003735377.tif 000002
【図２】
0003735377.tif 000003
【図３】
0003735377.tif 000004
【図４】
0003735377.tif 000005
【図５】
0003735377.tif 000006
【図６】
0003735377.tif 000007
【図７】
0003735377.tif 000008