(57)【特許請求の範囲】
【請求項１】
メモリコントローラとメモリアレイからなるメモリサブシステムにおいて、前記メモリコントローラと前記メモリアレイ間に前記メモリコントローラと前記メモリアレイを接続するメモリサブコントローラを複数設け、各メモリサブコントローラと前記メモリコントローラの間を第１のデータバスで接続し、前記各メモリサブコントローラと前記メモリアレイ間を２本以上の複数のバスから成る第２のデータバスで接続し、前記第１のデータバスおよび前記第２のデータバスはソース同期転送でデータ転送を行うようにし、さらに、前記各メモリサブコントローラと前記メモリコントローラのバスインターフェイス部にはデータレート変換手段およびデータ幅変換手段のいずれか一方もしくは両方を備え、
前記第１のデータバスのデータ幅がＴ、データレートがＳであり、かつ前記第２のデータバスの各バスのデータ幅がＭ、データレートがＬ、バスの本数がＮである場合に、
Ｔ×Ｓ≦Ｍ×Ｌ×Ｎ かつ L＜S
を満たすようにデータ幅ＴとデータレートＳの値を前記メモリコントローラと前記メモリサブコントローラに使用されるＬＳＩパッケージのピン数に対応して決定し、前記第１のデータバスと前記第２のデータバスのバンド幅が等しく、または前記第１のデータバスより前記第２のデータバスのバンド幅が大きくなるように構成したことを特徴とするメモリサブシステム。
【請求項２】
１つまたは２つ以上の複数のプロセッサとメモリコントローラとメモリアレイからなる計算機システムにおいて、前記メモリコントローラと前記メモリアレイ間に前記メモリコントローラと前記メモリアレイを接続するメモリサブコントローラを複数設け、各メモリサブコントローラと前記メモリコントローラの間を第１のデータバスで接続し、前記各メモリサブコントローラとメモリアレイ間を２本以上の複数のバスから成る第２のデータバスで接続し、前記第１のデータバス及び前記第２のデータバスはソース同期転送でデータ転送を行うようにし、さらに、前記各メモリサブコントローラと前記メモリコントローラのバスインターフェイス部にはデータレート変換手段およびデータ幅変換手段のいずれか一方もしくは両方を備え、
前記第１のデータバスのデータ幅がＴ、データレートがＳであり、かつ前記第２のデータバスのデータ幅がＭ、データレートがＬ、バスの本数がＮである場合に、
Ｔ×Ｓ≦Ｍ×Ｌ×Ｎ かつ L＜S
を満たすようにデータ幅ＴとデータレートＳの値を前記メモリコントローラと前記メモリサブコントローラに使用されるＬＳＩパッケージのピン数に対応して決定し、前記第１のデータバスと前記第２のデータバスのバンド幅が等しく、または前記第１のデータバスより前記第２のデータバスのバンド幅が大きくなるように構成したことを特徴とする計算機システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、パーソナルコンピュータ、ワークステーション、オフィスコンピュータ等の計算機システムにおけるメモリシステム、特に大容量メモリシステムに関する。
【０００２】
【従来の技術】
最近のプロセッサの急激な性能上昇に対し、メモリサブシステムにはプロセッサが要求する高いバンド幅を満たすためにより大きなデータ幅とより高速な動作が要求されている。それに加えて、メモリ容量を可能な限り大きくとりたいという要求もある。
【０００３】
図２は計算機システム構成の一例である。以下では図中の番号で201a,201bのように英小文字のサフィックスがついているものは複数あるもののうちの１つ要素を示し、サフィックスを含まないで記した場合はすべての要素を示しているものとする。また、要素の名称でデータバスＡ、Ｂ、Ｃに関してデータバスＣ０、Ｃ１のように直後に数字を記しているものは複数あるもののうちの１つの要素を示し、数字を含まないで記した場合はすべての要素を示しているものとする。
【０００４】
本計算機システムは、プロセッサ(201)とデータバスＡ(205)を介して接続しているメモリコントローラ(202)と、メモリコントローラとメモリアレイ(204)を接続する複数のデータバスＣ(207)から構成される。図ではプロセッサとメモリアレイのバス幅は同じＭ(バイト)であるが、データレートはプロセッサがＬ(bps)であるのに対し、メモリアレイはその半分のＬ／２(bps)でしか動作できないために、データバスＣをＣ０とＣ１の２本用意することでデータバスＡとデータバスＣでバンド幅を揃えている。
【０００５】
データレートがＬ(bps)で動作可能なメモリアレイが登場した場合の構成を図３に示す。図２との相違点は、データバスＣのデータレートが２倍のＬ(bps)になったこと、データバスＣに接続可能なメモリアレイの数が減ったことである。データバスＡとデータバスＣのデータ幅・データレートが等しくなるので、データバスＣの本数が１本だけでこの計算機システムのバンド幅は揃う。しかし、高速となったデータバスＣのインターフェースの電気的特性より負荷数に限界が生じ、データバスＣに接続可能なメモリアレイの数が減るのでデータバスが１本の場合はメモリ容量が図２の構成に比べて少なくなる。図２と図３のメモリコントローラが同一のＬＳＩパッケージであるとデータバスＣをもう１本追加する余裕があり、データバスＣを２本用意してメモリ容量を稼ぐことになる。このとき、メモリアレイ側はプロセッサ側の２倍のバンド幅を有しているが、プロセッサ側のバンド幅が変わっていないので、データバスＡがボトルネックとなりシステム全体の最大スループットには影響していない。ただし、メモリへのアクセスパターンによっては実効スループットおよび平均アクセス時間は向上する場合がある。
【０００６】
プロセッサ側の要求バンド幅が図３の２倍になった構成を図４に示す。図３との相違点はメモリコントローラにデータバスＡ１を接続したことである。この状態ではデータバスＡとデータバスＣにおいてデータ幅・データレート・バスの本数が等しいため、バンド幅はプロセッサ側とメモリ側とで釣り合う。ただし、接続できるメモリアレイの数がデータバスＣの本数で制限されているためプロセッサのスループットに対してメモリの大容量化が難しく、大容量のメモリを必要とするアプリケーションには不向きである。この構成図に対して、さらにメモリ容量を確保するために行われてきた手法は、次の三つに分類できる。
【０００７】
一つ目は、メモリコントローラに使用されるＬＳＩパッケージにピン数の多いものを使用して、メモリアレイ側に接続できるデータバスの本数を増やすことである。ただし、多ピン型のＬＳＩパッケージは主流のＬＳＩパッケージに比べコストが高いことや、多ピン型といってもその数には限界があることが問題点である。１９９８年現在、信号ピン数が４００ピンあたりが主流であり、信号ピン数と電源ピン数の比が約２：１とするとパッケージには６００ピンクラスが用いられている。１０００ピンクラスのパッケージも存在するがまだまだ高価である。
【０００８】
二つ目は、データバスＣに接続するメモリアレイの数を増やすことである。そのためには、データバスＣのインターフェイスに特開平７−２０２９４７（出願人：日立製作所）で開示されている高速多負荷接続可能なＳＳＴＬインターフェイスを用い、かつそのデータ転送方式に特願平８−１４５４３１（出願人：日立製作所、本願出願時点で未公開）に記載されているソース同期転送方式をもちいることである。その構成を図５に示す。図４との相違点は、メモリサブコントローラとメモリアレイの接続形態がリング状となり、１：２のマルチプレクサ(208)（以降ＭＵＸ）を介して接続されていることである。ＭＵＸの効果は、前述の特願平８−１４５４３１で示されているように、メモリアクセスの書き込みと読み出し動作によりその転送方向を変更し、メモリサブコントローラに必要とされるピン数を約半分に削減することである。ＳＳＴＬインターフェイスとはバスに接続している負荷のスタブにシリーズ抵抗を挿入しバスラインへの反射を抑えるインターフェイスであり、ソース同期転送方式とはデータ転送の供給元がデータ信号とともにソースクロック信号を送信し、受信側でソースクロック信号を用いて受信データ信号をラッチするデータ転送方式である。従来のシステムクロック信号でデータ転送を行う同期転送方式とは異なり、ソース同期転送方式では転送するデータ信号とソースクロック信号が平行して走っているためその伝播遅延時間がほぼ等しく、セットアップ・ホールド時間等のタイミング設計時にバスの配線長による伝播遅延時間をほとんど無視できるので、高速データ転送が容易となる。上記の２つを組み合わせることで多負荷接続バスにおける高速データ転送が可能となり、高速動作でありながらメモリ容量を増やすことができる。この場合においてもメモリ容量はメモリコントローラに接続できるデータバスＣの本数によって決定されるため、さらにメモリ容量を増やそうとするとメモリコントローラのＬＳＩパッケージのピン数を増やすしかない。
【０００９】
三つ目は、データバスＣの本数を増えたように見せかけることである。その構成を図６に示す。図４との相違点は、メモリコントローラとメモリアレイ間に１：ＮのＭＵＸ(209)を接続して、見かけ上のバスの本数を増やしていることである。そのため、メモリ容量はＭＵＸ使用前のＮ倍となる。しかし、メモリアレイに接続されているバスの本数とメモリの容量は増えているにもかかわらず、メモリコントローラに接続されているバスの本数は変わっていないためにデータバスＣのバンド幅は変わらない。そのうえ、途中に１：ＮのＭＵＸを挿入したことで、このＭＵＸの切り替えにかかる時間がオーバーヘッドとなり実効スループットが低下するという問題もある。また、メモリアレイが空間的に広がるため、メモリコントローラとメモリアレイ間での高速データ転送が難しくなり、メモリコントローラとＭＵＸ間もしくはＭＵＸとメモリアレイ間にデータバッファを設置する必要も生じる。
【００１０】
一方、データ転送にソース同期転送方式を用いることで高速データ転送を実現し、バンド幅を向上させることが可能となる。ソース同期転送方式ではデータ転送装置間のデータ信号とソースクロック信号の伝播遅延時間を等しくさえすれば、データ転送装置間の伝送路における伝播遅延時間すなわちデータ転送装置間の距離に左右されずに高速なデータ転送が可能である。データ転送も１サイクル転送に限らずマルチサイクル転送可能となる。ただし、Ｎサイクル転送を行う場合にはデータの伝播遅延時間Tdが
(Ｎ−１)×(１マシンサイクル時間) ＜ Td ＜ Ｎ×(１マシンサイクル時間)
にあることを保証する必要があり、データ転送装置間のデータの伝播遅延時間に合わせたインターフェイス回路をデータ転送装置内に作成し、Ｎサイクル転送を実現している。データ転送装置内のインターフェイス回路は外部の伝送路に合わせて作成した唯一のものであり、外部の伝送路の変更には従順に対応できない場合が多い。
【００１１】
【発明が解決しようとする課題】
従来の計算機システム構成では上記に示したように次の問題点がある。
【００１２】
(1) メモリコントローラのピン数を増やしてデータバスＣの本数を増大させようとするとメモリコントローラのコスト増を招く。
【００１３】
(2) データバスＣの本数を見かけ上増やしてメモリ容量を増やすことは可能であるが、バンド幅が向上しない。
【００１４】
(3) (2)において、見かけ上のデータバスＣをＭＵＸで接続した場合は、ＭＵＸの切り替え時間がオーバーヘッドとなり実効スループットが低下する。
【００１５】
(4) ソース同期転送方式においては、データの伝播遅延時間に合わせて転送サイクル数が決定し、そのサイクル数に合わせたインターフェイス回路をデータ転送装置内に作成する必要がある。
【００１６】
本発明の目的は、
(1) 高速データ転送可能なソース同期転送方式を複数のデータ転送装置に採用してバンド幅を向上させたメモリサブシステム
(2) メモリを大容量化し、かつコスト増を招くことなくバンド幅を向上させたメモリサブシステム
(3) データ転送にソース同期転送方式を採用し、データ転送の最小転送サイクルを保証するバッファを具備し、データの伝送路による最小伝播遅延時間に左右されずにマルチサイクルデータ転送を実現するデータ転送装置
を提供することにある。
【００１７】
【課題を解決するための手段】
上記目的を達成するために、
メモリコントローラとメモリアレイ間に１つまたは２つ以上の複数のメモリサブコントローラを設け、メモリコントローラとメモリサブコントローラの間を第１のデータバスで接続し、メモリサブコントローラとメモリアレイ間を１本もしくは２本以上の複数の第２のデータバスで接続し、第１のデータバスおよび第２のデータバスでソース同期転送方式で高速データ転送を行うようにして、バンド幅を向上させたメモリサブシステムを構築する。
【００１８】
また、第１のデータバスおよび第２のデータバスはソース同期転送方式でデータ転送を行うようにし、さらに、メモリサブコントローラとメモリコントローラのバスインターフェイス部にはデータレート変換手段およびデータ幅変換手段のいずれか一方もしくは両方を備えた。
【００１９】
１つのメモリサブコントローラに接続している第１のデータバスのデータレートを大きくして、第１のデータバスのバンド幅が該メモリサブコントローラに接続している第２のデータバスのバンド幅の総和に等しくなるように変更することにより、コスト増を招くことなく高スループットかつ大容量メモリサブシステムを構築する。
【００２０】
また、メモリコントローラに接続している第１のデータバスのデータ幅を小さくし、データレート大きくして、第１のデータバスのバンド幅を該メモリコントローラに接続している第３のデータバスのバンド幅と等しくなるように変更することにより、メモリコントローラのＬＳＩパッケージにかかるコストを削減し、かつプロセッサの要求バンド幅をもつ大容量メモリサブシステムを構築する。
【００２１】
また、ソース同期転送を行うメモリコントローラとメモリサブコントローラのデータ転送Ｉ／Ｆ部にバッファをＮ段具備することで、データ転送の最小転送サイクルを保証し、第１のデータバスおよび第２のデータバスにおいてＮサイクルデータ転送を実現するメモリサブシステムを構築する。
【００２２】
【発明の実施の形態】
本発明の一実施例を図１、図７〜１２を用いて説明する。図１において、複数のプロセッサ(101)とデータバスＡ(105)を介して接続しているメモリコントローラ(102)とメモリアレイ(104)との中間に存在するメモリサブコントローラ(103)、メモリサブコントローラとメモリコントローラを接続するデータバスＢ(106)、メモリサブコントローラとメモリアレイを接続する複数のデータバスＣ(107)から構成する。メモリコントローラにはメモリアレイ側に２本のデータバスをもち、それぞれ１つのメモリサブコントローラ(103a〜b)にデータバスＢ(106a〜b)を介して接続され、該メモリサブコントローラにはメモリアレイに対するバスを２本ずつもち、データバスＣを介してメモリアレイに接続される。ここで、メモリサブコントローラ103aからメモリアレイ104aおよびメモリアレイ104bまでの構成とメモリサブコントローラ103bからメモリアレイ104cおよびメモリアレイ104dまでの構成は全く同じである。そのため、本実施例では片方のメモリサブコントローラについて説明するが、もう一方のメモリサブコントローラについても同様のことが言える。
【００２３】
データバスＣ０およびＣ１は同じデータレートＬ(bps)であり、同じデータ幅Ｍ(バイト)であるので、データバスＣ０およびＣ１の各バスのバンド幅は（Ｌ×Ｍ）である。データバスＢ０のデータレートはデータバスＣの２倍の２Ｌ(bps)であるが、データ幅はデータバスＣ０およびＣ１と等しいＭ(バイト)であるので、データバスＢ０のバンド幅は（２×Ｌ×Ｍ）である。このようにデータバスＢのデータ幅はそのままでデータレートを２倍にすることで、データバスＢのバンド幅を２倍にする方法を説明する。
【００２４】
図７は図１のメモリサブコントローラ(103)のブロック図である。301〜315はメモリサブコントローラを構成する要素および信号線である。401〜406はメモリコントローラとのインターフェイス信号であり、この信号線を用いてメモリアレイに対する制御信号を送信する。501〜505はメモリコントローラとのインターフェイス信号であり、この信号線を用いてデータ信号を送受信する。601〜605はデータバスＣ０のインターフェイス信号であり、701〜705はデータバスＣ１のインターフェイス信号である。601〜605と701〜705は接続先のバスが異なるだけで信号線の種類・意味・タイミングは同一である。
【００２５】
図中のメモリサブコントローラは、エッジトリガタイプフリップフロップ(301)、入力バッファ(302)、出力バッファ(303)、２：１セレクタ(304)、２：１セレクタへのセレクト信号(305)から構成される。エッジトリガタイプフリップフロップのトリガクロック信号はシステムクロック信号(T0)、もしくはバスから受信したソース同期転送用のソースクロック信号である。図中のT14、T24、およびT34はシステムクロック信号(T0)からそれぞれ１／４相、２／４相、３／４相遅れた信号であり、ソース同期転送用のソースクロック信号に用いる。
【００２６】
メモリコントローラとのインターフェイスは、メモリコントローラからメモリサブコントローラへ送信されるアドレス信号(401)、制御コマンド信号(404)、アドレス信号に対するソースクロック信号(402と403)、制御コマンド信号に対するソースクロック信号(405と406)、双方向のデータ信号(503)、受信データに対するソースクロック信号(501と502)、送信データに対するソースクロック信号(504と505)から構成される。ソースクロックが２本ずつある理由は後で述べる。
【００２７】
メモリアレイとのインターフェイスは、データバスＣ０を介してメモリアレイへ送信するアドレス信号(602)、制御コマンド信号(603)、双方向のデータ信号(604)、アドレス信号と制御コマンド信号および送信データ信号に対するソースクロック信号(601)、受信データに対するソースクロック信号(605)から構成される。
【００２８】
図７の要素701〜705の構成は上述したように要素601〜605と同一である。
【００２９】
本実施例ではメモリアレイへのアクセスの手順はSDRAM(Synchronouce DRAM)に対するアクセス手順と同様としている。
【００３０】
(1)書き込み動作
・アドレス信号線に行アドレス信号、制御コマンド信号線に行アドレスストローブ(RAS:Row Address Strobe)信号を送信する。
【００３１】
・３サイクル後に、今度はアドレス信号線に列アドレス信号、制御コマンド信号線に列アドレスストローブ(CAS:Column Address Strobe)信号、データ信号線に書き込むデータ信号を送信する。
【００３２】
(2)読み出し動作
・アドレス信号線に行アドレス信号、制御コマンド信号線に行アドレスストローブ信号を送信する。
【００３３】
・３サイクル後に、今度はアドレス信号線に列アドレス信号、制御コマンド信号線に列アドレスストローブ信号を送信する。
【００３４】
・３サイクル後にデータがバスに出力される。
【００３５】
メモリアレイではバースト転送が可能であり、連続するアドレスに関する４回の書き込みまたは読み出し動作が１回の書き込みまたは読み出し動作で行うことが可能である。また、メモリコントローラ側のアドレス信号(401:B-ADR)とメモリアレイ側のアドレス信号(602:C0-ADRおよび702:C1-ADR)はタイミングが異なるだけでアクセス手順は同じである。アドレス信号だけでなく、ほかの制御コマンド信号やデータ信号についても同様である。
【００３６】
本実施例では、データバスのデータ幅を変更することなく、データレートを２倍にするために、データバスＢをシステムクロックの立ち上がりと立ち下がりで時分割して、システムクロックが"Ｈ"のとき、つまりクロックサイクルの前半部分でデータバスＣ０に関するデータ転送を行い、システムクロックが"Ｌ"のとき、つまりクロックサイクルの後半部分でデータバスＣ１に関するデータ転送を行う。そのためにソース同期転送用のソースクロックにはクロックサイクルの前半部分の信号をラッチするものと、クロックサイクルの後半部分の信号をラッチするものとの２本必要となる。アドレス信号に関するソースクロック信号(402と403)のうち、402がデータバスＣ０のデータ処理用のソースクロック信号であり、403がデータバスＣ１のデータ処理用である。同様に、405、501および504がデータバスＣ０のデータ処理用のソースクロック信号であり、406、502および505がデータバスＣ１のデータ処理用のソースクロック信号である。
【００３７】
図８に図７のブロック図のメモリコントローラからメモリアレイへのデータ転送の動作タイミングチャートを示す。メモリコントローラからメモリアレイへのデータ転送とはメモリアレイに対する書き込み動作である。アドレス信号と制御コマンド信号は同一タイミングで送信されるので、ここでは２つをまとめて書くことにする。図８はデータバスＣ０とＣ１に対して同じタイミングで書き込み動作を行っているタイミングチャートである。
【００３８】
メモリコントローラはCK0のタイミングでメモリサブコントローラに対し、クロックサイクルの前半でデータバスＣ０用の、クロックサイクルの後半でデータバスＣ１用の行アドレス信号(401:B-ADR)と行アドレスストローブ信号(404:B-CMD)を送信する。また、アドレス信号と制御コマンド信号と同期してデータバスＣ０用のソースクロック信号(402と405)、データバスＣ１用のソースクロック信号(403と406)を送信する。ソースクロック信号に用いる信号はそれぞれT14とT34を用いる。メモリサブコントローラでは、受信したソースクロック信号(402と405:メモリコントローラ内でT14のタイミング信号)の立ち上がりエッジを用いてアドレス信号(405)と制御コマンド信号(404)をそれぞれラッチする。ソースクロック信号(402と405)でラッチしたアドレス信号は306(C0-ADRbuff)であり、制御コマンド信号は308(C0-CMDbuff)である。これらはデータバスＣ０に対する信号である。CK0のサイクル開始から１／２クロックサイクル過ぎたところでメモリコントローラは、アドレス信号と制御コマンド信号をデータバスＣ１用の信号に切り替える。前述のソースクロック信号から１／２サイクル遅れたソースクロック信号(403と406:メモリコントローラ内でT34のタイミング)の立ち上がりエッジを用いてアドレス信号(401)と制御コマンド信号(404)をラッチする。ソースクロック信号(403と406)でラッチしたアドレス信号は307(C1-ADRbuff)であり、制御コマンド信号は309(C1-CMDbuff)である。これらはデータバスＣ１に対する信号である。メモリサブコントローラ内ではソースクロック信号でラッチした信号(306〜309)をシステムクロック(T0)でラッチし、転送するすべての信号の位相を合わせてから、データバスＣ０およびＣ１へ送信する。データバスＣ０およびＣ１へ送信するソースクロック信号は601と701であり、使用するクロックタイミングは両方ともT24である。メモリコントローラは前述の行アドレス信号の送信から３サイクル後のCK3のタイミングで、前述の行アドレス信号に対する列アドレス信号および列アドレスストローブ信号と同時に書き込むデータ信号(0aまたは1a)を送信する。このデータ送信と同期してメモリコントローラはデータバスＣ０用のソースクロック信号(501)とデータバスＣ１用のソースクロック信号(502)を送信する。列アドレス信号および列アドレスストローブ信号に関するタイミングは前述の行アドレス信号および行アドレスストローブ信号の場合と同じである。データ信号についても同様で、受信したデータ信号(503)を受信したソースクロック信号(501:メモリコントローラ内でT14のタイミング信号)とソースクロック信号(502:メモリコントローラ内でT34のタイミング信号)でラッチする。ソースクロック信号(501と502)でラッチしたデータ信号はそれぞれ310(C0-Dbuff)と311(C1-Dbuff)であり、それぞれデータバスＣ０用のデータ信号とデータバスＣ１用のデータ信号である。データ信号も前述のアドレス信号や制御コマンド信号と同様にシステムクロック(T0)でラッチして、転送するすべての信号の位相合わせを行う。データバスＣへの送信タイミングにはシステムクロック信号(T0)を用いたが、このタイミングはアドレス信号、制御コマンド信号、データ信号およびソースクロック信号のすべてが同じタイミングでデータバスＣに送信できればT0に限らず何を使用してもよい。ソースク��ック信号に用いる信号はメモリアレイのセットアップ・ホールド時間を満たすものであればT24に限らず何を使用してもよい。バースト転送が可能であるためにメモリコントローラはCK3のタイミングに引き続きCK4、CK5、CK6のタイミングでデータ信号(0b、0c、0dの３つ、および1b、1c、1dの３つ)を送信する。
【００３９】
以上のように、２倍のデータレートをもつデータバスＢのデータ信号に対し、ソースクロック信号を２本とエッジトリガタイプフリップフロップを２面用意することで、この２面のエッジトリガタイプフリップフロップがデータレート変換回路として機能し、データバスＣへ送信する際にはデータレートはデータバスＢの１／２倍となり、データバスＣのデータレートと等しくなる。
【００４０】
図７のブロック図のメモリアレイ側からメモリコントローラ側へのデータ転送の動作タイミングチャートを図９に示す。メモリアレイからメモリコントローラへのデータ転送とはメモリアレイに対する読み出し動作である。図９ではアドレス信号および制御コマンド信号はすでに送信されていて、メモリアレイからデータが出力されているタイミングから示す。メモリアレイはバースト転送が可能なため、４サイクル間データ信号を出力している(C0a、C0b、C0c、C0dの４つ、およびC1a、C1b、C1c、C1d)。図９は、データバスＣ０からのデータの転送に対し、データバスＣ１のデータ転送が１サイクル遅れたタイミングチャートである。一般に同期型のメモリデバイスには、読み出し動作時にアクセス時間と出力ホールド時間が存在する。アクセス時間とはトリガクロック信号の入力からデータ信号が出力するまでの時間であり、出力ホールド時間とはトリガクロック信号の入力から前サイクルに出力していたデータ信号を出力しないようにするまでの時間である。そのため出力データ信号のウィンドウの幅は、
（メモリアレイ出力データウィンドウ幅）＝（１サイクル）＋（出力ホールド時間）−（アクセス時間）
となる。本実施例のメモリアレイはアクセス時間が１／２サイクル、出力ホールド時間が１／２サイクルであるので出力データ信号のウィンドウの幅は１サイクル存在する。
【００４１】
メモリサブコントローラではデータバスＣ０のインターフェイス部においてCK0のサイクルで、メモリアレイから受信した、もしくはメモリサブコントローラがメモリアレイに送出してメモリアレイを通過してメモリサブコントローラ自身で受信したソースクロック信号(605)の立ち上がりエッジを用いてデータ信号(604)をラッチする。ラッチしたデータ信号は313(C0-Din)である。一方、データバスＣ１のインターフェイス部においてCK1のサイクルでメモリアレイからのデータ信号(704)を受信し、受信したソースクロック信号(705)の立ち上がりエッジを用いてラッチする。ラッチしたデータ信号は315(C1-Din)である。データバスＢではデータレートが２倍になっているので、データレート変換回路が必要であるが、それは２：１のセレクタ(304)を使用し、そのセレクト信号(305)にはシステムクロックを用いる。その２：１セレクタの２つの入力にデータバスＣ０とデータバスＣ１からのデータ信号をそれぞれ入力すれば良いのであるが、セレクト信号と２つの入力データの位相を合わせる必要があり、セレクト信号(すなわちシステムクロック信号T0)の立ち上がりエッジを用いて、データバスＣ０およびＣ１からの受信データ信号(313と314)をラッチする必要がある。システムクロック信号(T0)でラッチしたデータ信号はそれぞれ312(C0-Drt)と314(C1-Drt)である。セレクト信号が"Ｈ"のとき、すなわちクロックサイクルの前半部分ではデータバスＣ０からのデータ信号をデータバスＢへ送信し、セレクト信号が"Ｌ"のとき、すなわちクロックサイクルの後半部分ではデータバスＣ１からのデータ信号をデータバスＢへ送信する。データバスＢへ送信するデータ信号と同期してソースクロック信号(504と505)を送信する。
【００４２】
以上のように、データバスＣからデータバスＢの途中に２：１セレクタを挿入し、セレクト信号と位相を合わせた２つの入力データをセレクト信号により切り替えることで、データバスＢにおいてデータレートをデータバスＣの２倍にすることができる。
【００４３】
メモリサブコントローラにデータバスＢが１本、データバスＣが２本接続している場合、データバスＢのデータ幅はそのままでデータレートを２倍にすることで、データバスＢのバンド幅とデータバスＣのバンド幅の総和は等しくなる。
【００４４】
図１ではデータバスＢのデータ幅はそのままでデータレートを２倍にして、データバスＢのバンド幅とデータバスＣのバンド幅の総和を等しくする方法を示した。次に、データバスＢのデータ幅を１／２にしてデータレートを４倍にして、データバスＢのバンド幅とデータバスＣのバンド幅の総和を等しくする方法を示す。
【００４５】
図１０は図１のメモリサブコントローラ(103)のブロック図である。図７との相違点は、データバスＢ側でデータ信号のデータレートが２倍から４倍になったのでデータ転送に用いるソースクロック信号を２本から４本(506〜509)にしたこと、データバスＣ０およびＣ１からデータバスＢへデータ信号を転送する際にデータレートとデータ幅を変換するために２：１セレクタから４：１セレクタ(316)にしたことである。
【００４６】
図１０のように、メモリサブコントローラに接続しているデータバスＣの本数が２本の場合、メモリコントローラからのアドレス信号と制御コマンド信号はデータレートを４倍にしても同時に送信できるのはデータバスＣ０とＣ１の２本しかないのでデータレートは２倍のままで転送する。データ信号に関するソース同期転送用のソースクロック信号はT18、T38、T58およびT78の４本であり、それぞれシステムクロックT0より１／８相、３／８相、５／８相、７／８相遅れた信号である
図１１に図１０のブロック図のメモリコントローラからメモリアレイへのデータ転送の動作タイミングチャートを示す。図８と同様に、メモリコントローラはCK0のタイミングでデータバスＣ０とＣ１に対して同じタイミングで書き込み動作を行っている。データバスＢ上のデータ信号はデータバスＣ上のデータ信号に対し、データ幅が半分で４倍のデータレートであるため、１／４クロックサイクルピッチでデータ転送を行う。メモリコントローラはCK0のタイミングでメモリサブコントローラに対し、クロックサイクルの１／４部分でデータバスＣ０の上位バイトデータ信号、クロックサイクルの２／４部分でデータバスＣ０の下位バイトデータ信号、クロックサイクルの３／４部分でデータバスＣ１の上位バイトデータ信号、クロックサイクルの４／４部分でデータバスＣ１の下位バイトデータ信号を送信する。またデータ信号と同期してデータバスＣ０のデータ処理用のソースクロック信号(506と507)、データバスＣ１のデータ処理用のソースクロック信号(508と509)を送信する。アドレス信号および制御コマンド信号の転送方式は図８と同様である。
【００４７】
メモリサブコントローラでは、受信したソースクロック信号(506、507、508、509)の立ち上がりエッジを用いてデータ信号503をラッチする。ソースクロック信号506でラッチしたデータバスＣ０の上位バイトデータ信号は318(C0-DUbuff)であり、ソースクロック信号507でラッチしたデータバスＣ０の下位バイトデータ信号は319(C0-DLbuff)であり、ソースクロック信号508でラッチしたデータバスＣ１の上位バイトデータ信号は320(C1-DUbuff)であり、ソースクロック信号509でラッチしたデータバスＣ１の下位バイトデータ信号は321(C1-DLbuff)である。メモリサブコントローラ内では、データバスＢ上を転送するためにメモリコントローラが上位／下位バイトに分割したデータ信号を一つにまとめ、システムクロック(T0)でラッチし、転送するすべての信号の位相を合わせてから、データバスＣ０およびＣ１へ送信する。データバスＣ０およびＣ１の動作は図８と同様である。
【００４８】
以上のように、１／２のデータ幅と４倍のデータレートをもつデータバスＢのデータ信号に対し、ソースクロック信号を４本とエッジトリガタイプフリップフロップを４面用意することで、この４面のエッジトリガタイプフリップフロップがデータレート変換回路およびバス幅変換回路として機能し、データバスＣへ送信する際にはデータレートはデータバスＢの１／４倍、データ幅は２倍となり、データバスＣのデータレートとデータ幅に等しくなる。
【００４９】
図１０のブロック図のメモリアレイ側からメモリコントローラ側へのデータ転送の動作タイミングチャートを図１２に示す。メモリアレイ側の動作タイミングは上記方法と同じである。４倍のデータレートを実現するために４：１のセレクタ(316)を使用する。４：１のセレクタ(316)のセレクト信号(317)にはシステムクロックT0およびシステムクロックから１／４相遅れたT14を使用する。４：１セレクタの４つの入力には、システムクロック(T0)でラッチしてセレクト信号と位相を合わせたデータバスＣ０およびＣ１のデータ信号(313と315)を、上位バイトと下位バイトに分割して入力する。２本のセレクト信号(T0とT14)の値により４通りの状態が存在し、TOが"Ｈ"かつT14が"Ｌ"のとき、すなわちクロックサイクルの１／４部分でデータバスＣ０の上位バイトデータをデータバスＢへ送信し、T0が"Ｈ"かつT14が"Ｈ"のとき、つまりクロックサイクルの２／４部分でデータバスＣ０の下位バイトデータをデータバスＢへ送信し、T0が"Ｌ"かつT142が"Ｈ"のとき、すなわちクロックサイクルの３／４部分でデータバスＣ１の上位バイトデータをデータバスＢへ送信し、T0が"Ｌ"かつT14が"Ｌ"のとき、すなわちクロックサイクルの４／４部分でデータバスＣ１の下位バイトデータをデータバスＢへ送信する。データバスＢへ送信するデータ信号と同期してソースクロック信号(510〜513)を送信する。
【００５０】
以上のように、データバスＣからデータバスＢの途中に４：１セレクタを挿入し、セレクト信号と位相を合わせデータ幅を１／２にした４つの入力データをセレクト信号により切り替えることで、データバスＢにおいてデータレートをデータバスＣの４倍に、かつデータ幅をデータバスＣの１／２にすることができる。
【００５１】
以上の説明では、データバスＢのデータ幅を１／２にする際の分割方法に上位／下位バイトを使用したが、その他にも偶数／奇数バイトで分割する等方法は多数ある。また、その分割した分割単位の転送順番も任意である。
【００５２】
メモリサブコントローラにデータバスＢが１本、データバスＣが２本接続している場合、データバスＢのデータ幅を半分にしてデータレートを４倍にすることで、データバスＢのバンド幅とデータバスＣのバンド幅の総和は等しくなる。
【００５３】
本発明の他の実施例を図１３に示す。図１との相違点は、データバスＢのデータ幅を１／２、データレートを４倍にしていて、１つのメモリサブコントローラに接続しているデータバスＢのバンド幅を該メモリサブコントローラに接続しているデータバスＣのバンド幅の総和に等しくしている点である。構成要素・動作タイミングは本発明の「データ幅を１／２にしてデータレートを４倍にする方法」で述べている。データバスＢのデータ幅が半分になるために、メモリコントローラおよびメモリサブコントローラで必要なピン数が削減され、図１のＬＳＩパッケージよりも小さいＬＳＩパッケージが使用可能となり、コストを削減できる。
【００５４】
本発明の他の実施例を図１４に示す。図１との相違点は、データバスＢのデータ幅を１／２、データレートが４倍にしていて、１つのメモリサブコントローラに接続しているデータバスＢのバンド幅を該メモリサブコントローラに接続しているデータバスＣのバンド幅の総和に等しくしている点である。図１３との相違点は、メモリコントローラのピン数削減は行わずにメモリコントローラに接続するデータバスＣの本数を２倍にしていることである。構成要素・動作タイミングは本発明の「データ幅を１／２にしてデータレートを４倍にする方法」で述べている。データバスＢのデータ幅が半分になるために、メモリコントローラに接続できるデータバスＢの本数が倍増し、データバスＢでデータバスＣの総和のバンド幅を確保しながらメモリの容量を倍にすることが可能となる。
【００５５】
本発明の他の実施例を図１５に示す。図１との相違点はデータバスＢのデータ幅を１／２にして、データレートを２倍にしていることである。前述の実施例はいずれもメモリサブコントローラにおいてメモリアレイに接続したデータバスＣの本数分のバンド幅をデータバスＢで確保するものであった。しかし、データバスＢのデータ幅を半分にし、データレートを倍にして、データバスＡとデータバスＢのバンド幅の釣り合いを取ったシステム構成にすることも可能である。この場合、データバスＢのバンド幅は変化していないが、データバスＢのデータ幅が半分になるので、メモリコントローラおよびメモリサブコントローラで必要なピン数が削減可能である。つまりメモリコントローラおよびメモリサブコントローラのＬＳＩパッケージにかかるコストを削減できる。メモリサブコントローラのブロック図、タイミングチャート等はデータバスの幅が異なるだけで図７のブロック図、図８および図９のタイミングチャートと同一である。
【００５６】
本発明の他の実施例を図１６〜図２０を用いて説明する。図１６はメモリサブコントローラのブロック図である。302〜303、810〜812および820〜822はメモリサブコントローラ(103)を構成する要素および信号線である。800〜803はメモリコントローラとのインターフェイス信号であり、この信号線を用いてメモリアレイに対する制御信号を受信しデータ信号を送受信する。804〜807はデータバスＣのインターフェイス信号であり、この信号線を用いてメモリアレイに対する制御信号を送信しデータ信号を送受信する。
【００５７】
図１６のメモリサブコントローラは、入力バッファ(302)、出力バッファ(303)、N-depthバッファ(810)、リタイミング回路(811)、同期化信号発生回路(812)から構成される。
【００５８】
メモリコントローラとのインターフェイスは、メモリコントローラ−メモリサブコントローラ間で送受信するデータ信号(802)と受信データに対するソースクロック信号(801)、送信データに対するソースクロック信号(803)、メモリコントローラからの同期化信号(800)から構成される。メモリコントローラから送信されるアドレス信号および制御信号はデータ信号(802)の一部として考える。メモリアレイとのインターフェイスは、メモリサブコントローラ−メモリアレイ間で送受信するデータ信号(806)と送信データに対するソースクロック信号(805)、受信データに対するソースクロック信号(807)、メモリアレイへの同期化信号(804)から構成される。メモリアレイへ送信するアドレス信号および制御信号はデータ信号の一部として考える。
【００５９】
メモリコントローラとメモリサブコントローラ間が2cycleソース同期転送である場合の図１６に示した2-depthバッファ(N=2)のブロック図、リタイミング回路のブロック図、メモリコントローラからメモリアレイへのデータ転送の動作タイミングチャートをそれぞれ図１７、図１８、図１９に示す。図１６に示すようにソース同期転送のマスター側には同期信号発生回路を搭載する。図１６〜図２０ではメモリコントローラとメモリサブコントローラ間のデータ転送ではメモリコントローラをマスターとし、メモリサブコントローラとメモリアレイ間のデータ転送ではメモリサブコントローラをマスターとしている。
【００６０】
図１７の2-depthバッファは2個のエッジトリガタイプフリップフロップ(907)と1個のリセット条件付きエッジトリガタイプフリップフロップ(908)と数個のAND・NOTゲートから構成される。
【００６１】
図１８のリタイミング回路は1個のエッジトリガタイプフリップフロップ(907)と3個のリセット条件付きエッジトリガタイプフリップフロップ(908)と複数のディレイゲート(911)および、各ディレイゲート通過信号を選択するＭ：１のセレクタ(912)と数個のAND・NOTゲートから構成される。同期化信号(910)が必ず２cycle転送で行われるようにディレイゲート(911)とセレクト信号(909)を用いて調節できるようにする。
【００６２】
次に、図１９を用いてメモリコントローラからメモリサブコントローラへの2cycleソース同期転送時の2-depthバッファとリタイミング回路の動作を説明する。まず、送信側(メモリコントローラ)からCK0のサイクルで同期化信号がアサートされる。図１６ではこの信号は同期化信号発生回路(812)が出力しているが、メモリコントローラのリセット信号及びリセット信号をクロック信号でラッチしたものを使用してもよい。同期化信号はメモリコントローラ内部と外部に転送され、内部では同期化信号をもとにして同期化信号がアサートされた2cycle後にメモリサブコントローラへのソースクロック信号(801,902)を出力する。ソースクロック信号は送信するデータウィンドウの中央にクロックエッジがくるように、システムクロックT0の逆相であるT24を用いる。直接外部へ出力された同期化信号はメモリサブコントローラに入力する(800,910)。この時の転送サイクルが必ず2cycleになるように受信側(メモリサブコントローラ)で調節する。メモリサブコントローラでは入力した同期化信号のアサートがトリガとなりメモリコントローラへのソースクロック信号(803,916)が出力され、同時にリタイミング時のセレクト信号(913)が動作する。CK3のサイクルにはメモリコントローラが出力したソースクロック信号がメモリサブコントローラへ到着し、ソースクロック信号(902)がトリガとなり2-depthバッファのセレクト信号(903)および2-depthバッファへのトリガクロック信号(903,904)が動作する。受信データ(901)を2-depthバッファに交互に取り込むために、ソースクロック信号(902)をセレクト信号(903)でマスクする。
【００６３】
メモリコントローラがCK11のタイミングで4つの連続したデータ信号を送信した場合、メモリコントローラが出力したデータ信号は前述の同期化信号とほぼ同じタイミングでメモリサブコントローラに入力する(901)。ここでは伝播遅延時間が1cycle以上の場合を示し、1cycle以下の場合は後述する。メモリサブコントローラ内部ではすでに動作している2-depthバッファのセレクト信号がマスクとなり、ソースクロック信号をセレクト信号でマスクしたトリガクロック信号(903,904)を用いて、入力データ(901)を2-depthバッファへ交互に取り込む。2-depthバッファに取り込まれたデータ(905,906)は図１９のタイミングチャートに示すように、セレクト信号(913)が"H"のときデータ信号(906)が選択され、セレクト信号(913)が"L"のときデータ信号(905)が選択される。セレクト信号で選択されたデータ信号(914)は次のメモリアレイ側のソース同期転送の出力タイミングに同期させるためにシステムクロックT0でラッチする。ラッチしたデータ信号(915)はそのソースクロック信号とともにメモリアレイへ送出される。
【００６４】
以上はメモリコントローラからメモリアレイへのデータ転送であるが、その逆のメモリアレイからメモリコントローラへのデータ転送も同様である。また、図１７でソースクロック信号(902)と2-depthバッファセレクト信号(903)のANDをとっているが、907のフリップフロップをクロック条件付きエッジトリガフリップフロップを使用し、ソースクロック信号(902)をフリップフロップのクロック端子へ直接、2-depthバッファセレクト信号(903)をフリップフロップのクロック条件端子へ直接またはNOTゲートを介して接続し、実現することも可能である。
【００６５】
メモリコントローラとメモリサブコントローラ間の信号の伝播遅延時間が1cycle以内であるタイミングチャートを図20に示す。基本的な動作は図19の伝播遅延時間が1cycle以上の場合と差異はない。ただし、同期化信号は必ず2cycle転送になるようにディレイゲート(911)を用いて調節する。図19との違いは、CK2のタイミングでメモリコントローラが送信したソースクロック信号はそのクロックサイクル内でメモリサブコントローラに到達することである。また、CK11のタイミングでメモリコントローラが送信したデータ信号はソースクロック信号と同じタイミングでメモリサブコントローラに到達することである。2-depthバッファのトリガクロック信号(903,904)はソースクロック信号(902)をマスクしただけのものであるから、データ信号(901)とソースクロック信号(902)の相対的な時間関係は変化せずに図19同様に2-depthバッファへ交互に取り込まれる。2-depthバッファのトリガクロック信号(903,904)はソースクロック信号(902)に対し周期が２倍であるため、2-depthバッファのウィンドウ幅は2cycle分存在し、伝播遅延時間が1cycle以内である場合でも次のサイクルまでデータ信号を保持できる。2-depthバッファに取り込まれたデータ信号(905,906)は、図19の伝播遅延時間が1cycle以上である場合と同じタイミングのセレクト信号(913)を用いるので、データ転送サイクルは2cycleとかわりない。
【００６６】
上記実施例では2cycleのソース同期転送について説明したが、3cycle以上のソース同期転送についても同様に実現可能である。また、図１〜図１５で説明した実施例についても本実施例を採用し、マルチサイクルのソース同期転送を実現することも可能である。
【００６７】
上記実施例では、エッジトリガタイプフリップフロップのトリガクロック信号に、クロック信号の立ち上がりエッジを用いているが、立ち下がりエッジまたは立ち上がりと立ち下がりの両エッジを用いても構成可能である。
【００６８】
また、ソース同期転送用にT14、T24、T34、T18、T38、T58、T78というタイミングのクロック信号を使用しているが、このクロック信号タイミングに関しても送信するデータのウィンドウを捕らえられるものであれば他のタイミングを用いてもよい。
【００６９】
また、上記実施例ではメモリアクセス手順にSDRAMに対する手順と同様なものを示したが、これは同期式RAMに適用した例であり、メモリアレイをSDRAMおよびSDRAMを用いたメモリモジュールに限定するものではない。
【００７０】
また、上記実施例では、メモリサブコントローラに接続されているデータバスＣの本数は２本であるが、これは一つの例であり、メモリコントローラに接続されているデータバスＣの本数は１本または２本以上であってもよい。
【００７１】
上記すべての実施例において、プロセッサとメモリアレイに関して述べていて、Ｉ／Ｏバスに関しては触れていない。しかし、データバスに関してはメモリコントローラを挟んで、メモリアレイ側とそれ以外の２つに分類できるため、Ｉ／Ｏバスはプロセッサ側に含めて考える。
【００７２】
【発明の効果】
以上述べたように、複数のプロセッサとデータバスＡを介して接続しているメモリコントローラとメモリアレイからなる計算機システムにおいて、メモリコントローラとメモリアレイ間に１つまたは２つ以上の複数のメモリサブコントローラを設け、１つのメモリサブコントローラとメモリコントローラ間をデータバスＢで接続し、メモリサブコントローラとメモリアレイを１つまたは２つ以上の複数のデータバスＣで接続し、データバスＢおよびデータバスＣはソース同期転送を行うようにし、さらにメモリサブコントローラとメモリコントローラのデータバスインターフェイス部にはデータレート変換回路およびデータ幅変換回路のいずれか一方もしくは両方を備え、データバスＢのデータ幅を大きくさせないでデータレートを大きくして、データバスＢのバンド幅がデータバスＣのバンド幅の総和に等しくなるようにデータバスＢのデータ幅およびデータレートを決定することにより、最大スループットを低下させることなくメモリを大容量化し、かつコスト増を招くことなくバンド幅を向上させることが可能である。
【図面の簡単な説明】
【図１】本発明の実施例を説明する図
【図２】従来のメモリサブシステムを説明する図
【図３】従来のメモリサブシステムを説明する図
【図４】従来のメモリサブシステムを説明する図
【図５】従来のメモリサブシステムでメモリ容量を増やす方法を説明する図
【図６】従来のメモリサブシステムでメモリ容量を増やす方法を説明する図
【図７】本発明でデータ幅を変えず、データレートを２倍にした場合の図１のメモリサブコントローラのブロック図
【図８】図７のメモリサブコントローラのタイミングチャート
【図９】図７のメモリサブコントローラのタイミングチャート
【図１０】本発明でデータ幅を１／２、データレートを４倍にした場合の図１のメモリサブコントローラのブロック図
【図１１】図１０のメモリサブコントローラのタイミングチャート
【図１２】図１０のメモリサブコントローラのタイミングチャート
【図１３】本発明でデータ幅を１／２、データレートを４倍にして、メモリコントローラのピン数を削減した図
【図１４】本発明でデータ幅を１／２、データレートを４倍にして、メモリコントローラに接続するバスの本数を倍増した図
【図１５】本発明でデータ幅を１／２、データレートを２倍にして、メモリコントローラのピン数を削減した図
【図１６】最小伝播遅延時間を保証したマルチサイクルソース同期転送を実現するメモリサブコントローラのブロック図
【図１７】図１６で示したN-depthバッファのブロック図
【図１８】図１６で示したリタイミング回路のブロック図
【図１９】  2cycleソース同期転送を実現するメモリサブコントローラのタイミングチャート
【図２０】  2cycleソース同期転送を実現するメモリサブコントローラのタイミングチャート
【符号の説明】
101、201・・プロセッサ
102、202・・メモリコントローラ
103・・メモリサブコントローラ
104、204・・メモリアレイ
105、205・・データバスＡ
106、206・・データバスＢ
107、207・・データバスＣ
【図１】
0003644265.tif 000002
【図２】
0003644265.tif 000003
【図３】
0003644265.tif 000004
【図４】
0003644265.tif 000005
【図５】
0003644265.tif 000006
【図６】
0003644265.tif 000007
【図７】
0003644265.tif 000008
【図８】
0003644265.tif 000009
【図９】
0003644265.tif 000010
【図１０】
0003644265.tif 000011
【図１１】
0003644265.tif 000012
【図１２】
0003644265.tif 000013
【図１３】
0003644265.tif 000014
【図１４】
0003644265.tif 000015
【図１５】
0003644265.tif 000016
【図１６】
0003644265.tif 000017
【図１７】
0003644265.tif 000018
【図１８】
0003644265.tif 000019
【図１９】
0003644265.tif 000020
【図２０】
0003644265.tif 000021