JP3654608B2 - 同期式dramからなるメモリに適したアドレス割り付けとアドレスロック機能を有するプロセッサシステム - Google Patents
同期式dramからなるメモリに適したアドレス割り付けとアドレスロック機能を有するプロセッサシステム Download PDFInfo
- Publication number
- JP3654608B2 JP3654608B2 JP12893896A JP12893896A JP3654608B2 JP 3654608 B2 JP3654608 B2 JP 3654608B2 JP 12893896 A JP12893896 A JP 12893896A JP 12893896 A JP12893896 A JP 12893896A JP 3654608 B2 JP3654608 B2 JP 3654608B2
- Authority
- JP
- Japan
- Prior art keywords
- request
- memory
- bank
- memory access
- circuit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Description
【発明の属する技術分野】
本発明は、同期式ダイナミックメモリ(以下、単に同期式DRAMあるいは同期式メモリと呼ぶ)あるいはそれに類似のメモリで構成された複数のメモリバンクを有するプロセッサシステムに関する。
【0002】
【従来の技術】
従来、高速、かつ高スループットが要求される主記憶装置には、アクセスタイムの短いSRAM(スタティック型RAM)が用いられることがほとんどであった。SRAMはチップ内のどのアドレスをアクセスするのにも同じ時間(十数ナノ秒程度)で済むが、これが、例えばDRAM(ダイナミック型RAM)になると、百数十ナノ秒にもなる。このようにSRAMは他のメモリチップに比べはるかにアクセスタイムが短い。
【0003】
しかし、SRAMは他のメモリチップ(DRAM)などに比べ、集積度が低く、またチップ価格も高いため、大容量の主記憶を構成すると、価格が数十倍以上高くなることがある。特に、ベクトル処理型のスーパーコンピュータの主記憶には高性能で大容量であることが要求されるため、上記の問題が顕著になる。
【0004】
しかし、近年、いろいろの高速のメモリが提案されている。たとえば、同期式DRAMとよばれる高スループットメモリチップが市販されるようになってきた。たとえば、「トランジスタ技術」、1993年10月号、第324頁から331頁(以下、第1の参考文献と呼ぶ)参照。同期式DRAMの特徴は、メモリ内の記憶位置がローアドレスとカラムアドレスでもってアクセスされ、通常は、各記憶位置をアクセスするのに、ローアドレスRAを印加した後、カラムアドレスCAを印加する(図13(a)参照)。しかし、同じローアドレスを有し、異なるカラムアドレスを有する複数の記憶位置をアクセスするには、一度そのローアドレスを印加した後、それらのカラムアドレスを順次クロックに同期して印加すればよい。従って、これらの記憶位置は通常のアクセス方法より高速にアクセスできる(図13(b)参照)。以下、この動作を、ローアドレス固定モードあるいはローアドレス固定、カラム連続アクセスモードと呼ぶことにする。
【0005】
ここで、図13において、同期式DRAMのクロックサイクルを15ナノ秒とし、ローアドレスRAを入力してからカラムアドレスCAを入力できるようになるまでの時間を2クロック、カラムアドレスCAを入力してから初めのデータ出力(リードの場合)までの時間(これをCASレイテンシと呼ぶ)を2クロック、また、ローアドレスRAを入力しなおす場合に必要なプリチャージの時間を2クロック、ローアドレス固定モード時のアクセスピッチを1データ/クロックと仮定している。RAS(図13において、RASは負論理の動作信号であるのでオーバラインを付して記載しているが、本明細書中ではオーバライン無しに単にRASと表記するものとする)はローアドレスアサート信号を、CAS(図13において、CASは負論理の動作信号であるのでオーバラインを付して記載しているが、本明細書中ではオーバライン無しに単にCASと表記するものとする)はカラムアドレスアサート信号を示し、RAS、CASのトリガによってこのメモリに順次供給される二つのアドレスをそれぞれローアドレスRA、カラムアドレスCAとしてチップ内に取り込む。
【0006】
同期式DRAMに類似のメモリとして、キャッシュ付DRAMがある。これはDRAMとキャッシュを同一の集積回路に構成したものである。キャッシュ付DRAMをベクトル型のスーパコンピュータへ応用するための研究の結果が、たとえば、W. -C. Hsu and J. E. Smith, "Performance of Cached DRAM Organizations in Vector Supercomputers," Proc. of the 20th Annual International Symposium on Computer Architecture, pp327-336, IEEE(以下、第2の参考文献と呼ぶ)に示されている。この参考文献では、二つのタイプのキャッシュ付DRAMが採り上げられている。この文献によれば、このような二つのタイプのメモリにおいても、上記のローアドレス固定、カラムアドレス連続アクセスモードと同じ動作を行うことが出来ることが分かる。この文献では、複数のメモリバンクと複数のベクトル処理する計算機とからなる計算機システムに使用するために、具体的には二種類の新たなアドレス割り付けが比較評価されている。
【0007】
図15は、それらのアドレス割り付けの一つであるブロックインタリーブによるアドレス割り付けの例を示す。「0」から始まるアドレスを、メモリバンク番号(BK#)「0」〜「3」に順にインタリーブ方式で割り付け、アドレス「16」〜「31」は、メモリバンク番号(BK#)「4」〜「7」に割り付け、以後アドレス「16」毎に、次の4つのメモリバンクにインタリーブ方式で割り付ける方式である。このようなアドレス割り付けを行うことにより、アドレス連続のアクセスで一度に4個のデータをリード/ライトが可能なブロックが4つ用意されることになる。これにより、最大4つのメモリアクセス手段に対して、メモリアクセスの機会を与えることができる。図14は、最も一般的なインタリーブ方式を用いたアドレス割り付けの例を比較のために示す。
【0008】
従来のベクトル型スーパーコンピュータの主記憶装置には、高いスループットが要求されるため、複数のメモリバンクから主記憶を構成し、インタリーブ方式を用いてメモリバンクにアドレスを割り付けることが多い。インタリーブ方式は一般に、連続するアドレスを異なるメモリバンクに割り付けることにより、連続でアクセスする場合のメモリスループットを高めるために用いられる。従来、インタリーブ方式は様々なバリエーションが提案され、または、製品に採用されている。そのようなインタリーブ方式に一例は特開平5−165716号あるいはこれに対応する米国特許5,392,443(以下、第3の参考文献と呼ぶ)に開示されている。
【0009】
【発明が解決しようとする課題】
上記第2の参考文献では、複数のメモリバンクが複数の計算機のいずれもからインタコネクトネットワークによりアクセス可能になっている計算機システムをモデルにして、二つのアドレス割り付けが評価されている。
【0010】
しかし、多くの市販されているベクトル型のスーパコンピュータでは、上記第3の参考文献にも記載されているように、主記憶装置を構成する複数のメモリバンクは、複数の物理バンクグループに区分され、プロセッサは主記憶装置に記憶制御装置により結合され、記憶制御装置には、それぞれ一つの物理バンクグループに対応して設けられた複数のプライオリティ制御回路があり、各プライオリティ制御回路には、上記プロセッサ内の互いに独立に動作する複数のリクエスト回路から、そのプライオリティ制御回路に接続された物理バンクグループ内のいずれかのメモリバンクをアクセスする複数のリクエストが並列に供給され、各プライオリティ制御回路は、それらのリクエストの中から一つのリクエストを選ぶ。
【0011】
本発明者の検討によれば、このようなスーパコンピュータでの主記憶装置を構成する複数のメモリバンクと複数のリクエスト回路の関係が上記参考文献2に記載のものと異なるために、上記第2の参考文献に記載されたブロックインタリーブは、そのままでは上記従来のベクトル型のスーパコンピュータで採用されている複数の物理バンクグループにグループ化された複数のメモリバンクを有する主記憶装置には適用できない。
【0012】
さらに、本発明者の検討によれば、上記同期式DRAMあるいは上記キャッシュ付きDRAMのように、ローアドレス固定モードを有するメモリを計算機の主記憶に使用する場合、複数の独立のリクエスト回路からのアクセスが同じメモリバンクの異なるローアドレスを有する記憶位置を順次アクセスすることがしばしば生じる。このために、各メモリバンクでは、アクセスされるローアドレスが頻繁に変化することになり、ローアドレス固定モードという利点を使用できる機会が減る。
【0013】
従って、本発明の目的は、ローアドレス固定モードで動作可能なメモリで構成され、複数のバンクグループに区分された複数のメモリバンクをローアドレス固定モードでアクセスするのに適したアドレス割り付けを有するプロセッサシステムを提供することである。
【0014】
本発明のもう一つの目的は、ローアドレス固定モードで動作可能なメモリで構成された複数のメモリバンクに対する、複数のリクエスト回路からのアクセスによって生じるローアドレスの変更の回数を減少できるプロセッサシステムを提供することである。
【0015】
【課題を解決するための手段】
上記目的を達成するために、本発明によるプロセッサシステムは、
各々がN個(Nは2以上の整数)のメモリバンクからなるM個(Mは2以上の整数)の物理バンクグループに分けられた、複数のメモリバンクからなる記憶装置と、
該記憶装置に対するメモリアクセスリクエストをそれぞれ出力する複数のリクエスト回路と、
該記憶装置と該複数のリクエスト回路とに接続され、それぞれ該複数の物理バンクグループの一つに対応して設けられ、該複数のリクエスト回路から並列に出力される複数のメモリアクセス要求を調停して、該複数のメモリアクセス要求の一つを対応する物理バンクグループに転送するための複数のプライオリティ制御部とを有し、
各メモリバンクは、ローアドレスとカラムアドレスとでもってアクセスされる複数の記憶位置を有するメモリにより構成され、該メモリは、同じローアドレスを有し異なるカラムアドレスを有する一群の記憶位置を、該ローアドレスを一度印加し、該一群の記憶位置のカラムアドレスを連続して印加することにより連続してアクセス可能に構成され、
該複数のメモリバンクは、同一の物理バンクグループ内メモリバンク番号を持つM個のメモリバンクが同一の論理バンクグループに所属するように、それぞれM個のメモリバンクからなるN個の論理バンクグループに区分され、
それぞれM×L(Lは2以上の整数)個のアドレスからなる複数のアドレスブロックが、順次異なる論理グループに割り付けられ、各アドレスブロックに属するM×L個のアドレスは、そのアドレスブロックが割り付けられた論理グループに属するM個のメモリバンクの順次異なるものにインタリーブ方式に従って割り付けられ、その結果として、該論理グループに属するM個のメモリバンクの各々にはL個のアドレスが割り付けられ、
各メモリバンクに割り付けられた複数のアドレスの内、同一のアドレスブロックに属するL個のアドレスは、同一のローアドレスを有し、異なるカラムアドレスを有する複数の記憶位置に割り付けられている。
【0016】
本発明のより望ましい態様では、上記整数Lは、各メモリバンク内の、同一のローアドレスを有し、異なるカラムアドレスを有する一群の記憶位置の総数より小さく、
各メモリバンク内の、同一のローアドレスを有し、異なるカラムアドレスを有する一群の記憶位置は、第1のアドレスブロックに属するアドレスが割り付けられている複数の記憶位置と、少なくとも一つの他のアドレスブロックに属するアドレスが割り付けられている複数の記憶位置とを含む。
【0017】
なお、上述した本願発明の特徴、すなわち、各メモリバンク内の、同一のローアドレスを有し、異なるカラムアドレスを有する一群の記憶位置は、第1のアドレスブロックに属するアドレスが割り付けられている複数の記憶位置と、少なくとも一つの他のアドレスブロックに属するアドレスが割り付けられている複数の記憶位置とを含むという特徴は、上記のメモリバンクが物理バンクグループに区分されていないプロセッサシステムにも適用可能である。
【0018】
さらに本願発明によるプロセッサシステムの他の望ましい態様では、
該プライオリティ制御回路は、
該複数のリクエスト回路から並列に出力された複数のメモリアクセスリクエストの内、アクセスを許可すべき少なくとも一つのメモリアクセスリクエストを選択する回路と、
それぞれ該複数のメモリバンクの一つに対応して設けられた複数のローアドレス記憶装置であって、各ローアドレス記憶装置は、対応するメモリバンクをアクセスすることを該選択回路により最近に許された先行するメモリアクセスリクエストがアクセスしたその対応するメモリバンク内の記憶位置のローアドレスを記憶するものと、
該複数のリクエスト回路により並列に出力された上記複数のメモリアクセスリクエストの各々がアクセスするメモリバンク内の記憶位置に割り付けられたローアドレスと、上記複数のローアドレス記憶装置の内、そのメモリバンクに対応する一つのローアドレス記憶装置に記憶されたローアドレスとの間の一致を検出する検出回路と、
該複数のメモリアクセスリクエストの各々に対する該検出回路による検出結果に依存して、該選択回路による選択を制御する回路とを有する。
【0019】
より望ましくは、上記制御回路は、該検出回路により一致が検出されなかった一つのメモリアクセスリクエストよりも、該検出回路により一致が検出された他メモリアクセスリクエストを優先して選択するように、上記選択回路を制御する回路を有する。
【0020】
さらに望ましくは、
各リクエスト回路は、
一連のメモリアクセス要求を順次出力する回路と、
該複数のメモリバンクの一つ内の一つのローアドレスをロックすることを要求するロック要求を出力し、その一つのメモリバンクがロックされた後にその一つのメモリバンクのそのローアドレスをアンロックすることを要求するアンロック要求を出力するロック/アンロック要求回路とを有し、
該プライオリティ制御回路は、
該複数のリクエスト回路の一つに含まれた上記ロック/アンロック要求回路から出力されたロック要求に応答して、そのロック要求が指定するメモリバンクのそのロック要求が指定するローアドレスが、そのリクエスト回路によりロックされたことを示す情報を記憶し、そのロック/アンロック要求回路からその後に出力されたアンロック要求に応答してそのメモリバンク内のそのローアドレスがアンロックされたことを示す情報を記憶するロック情報記憶装置と、
該複数のリクエスト回路により並列に出力された上記複数のメモリアクセスリクエストの各々が、そのメモリアクセスリクエストがアクセスするメモリバンクが、そのメモリアクセスリクエストを出力したリクエスト回路以外の他のリクエスト回路によりロックされているローアドレスを有するメモリバンクと一致するという第1の条件を満たすか否か、および、そのメモリアクセスリクエストがその第1の条件を満たす場合に、そのメモリアクセスリクエストが指定するローアドレスが、当該他のリクエスト回路によりロックされているローアドレスと一致するという第2の条件を満たすか否かを、上記ロック情報記憶装置に記憶された情報により検出する回路と、
該複数のメモリアクセスリクエストの各々に対する該検出回路による検出結果に依存して、該選択回路による選択を制御する回路とを有する。
【0021】
より具体的には、上記制御回路は、いずれか一つのリクエスト回路より出力され、該第1の条件を満たし、該第2の条件を満たさないと該検出回路により検出された一つのメモリアクセスリクエストよりも、他のリクエスト回路より出力され、該第1、第2の条件の少なくとも一方を満たさないと該検出回路により検出された他のメモリアクセスリクエストを優先して選択するように、上記選択回路を制御する回路を有する。
【0022】
【発明の実施の形態】
(1)装置の概要
図1は、本発明によるベクトルプロセッサの主要構成を示したものである。
【0023】
このベクトルプロセッサは、演算部(ALU)1と、複数のベクトルレジスタ(図示せず)を含むベクトルレジスタ部(VRU)2と、メモリアクセスパイプライン(PL0,PL1)3,4と、記憶制御部(SCU)5と、主記憶装置(MS)6とを備えている。
【0024】
本実施形態例のベクトルプロセッサにおける主記憶アクセス命令としては、ロード命令とストア命令がある。ロード命令は、主記憶装置6からベクトルデータをいずれかのベクトルレジスタに格納する命令である。ストア命令は、いずれかのベクトルレジスタからベクトルデータを主記憶装置6に格納する命令である。
【0025】
ベクトルレジスタ部2は、2つのベクトルデータ制御モジュール(VDM0,VDM1)7,8からなる。これらは互いに異なるベクトル命令を並列に実行する。ベクトルデータ制御モジュール7あるいは8は、それぞれ2つのベクトルデータ制御部(VDC0,VDC1とVDC2,VDC3)9,10あるいは11,12とからなる。
【0026】
ベクトルデータ制御モジュール7,8は、それぞれ異なるメモリアクセスパイプライン3,4に接続されている。ベクトルデータ制御部9,10(あるいは11,12)は、各々、同一のメモリアクセス命令に応答して、その命令により指定されたアクセスすべきベクトルデータをいわゆる2要素並列動作でもってアクセスするためのアクセス要求を出力するものである。具体的には、ベクトルデータ制御部9は、そのベクトルデータの一群の偶数番目の要素をアクセスするために、その一群の偶数番目の要素の先頭データ(先頭のベクトル要素、ここでは第0番目の要素)のアドレスを示すベースアドレス、連続する偶数番目のベクトル要素のアドレスの間隔を示すストライド、およびアクセスすべき一群の偶数番目のベクトル要素の個数を表すベクトル長を含むアクセス要求を、メモリアクセスパイプライン3内のメモリリクエスタ17に出力する。同様に、ベクトルデータ制御部10は、そのベクトルデータの一群の奇数番目の要素をアクセスするために、メモリアクセス要求をメモリアクセスパイプライン3内のメモリリクエスタ18に出力する。ベクトルデータ制御部11,12は、上記命令とは異なるベクトル命令に応答して同様のアクセス要求をメモリアクセスパイプライン4内のメモリリクエスタ19、20に供給する。
【0027】
ベクトルレジスタ部2は、図示されていない複数のベクトルレジスタをさらに有し、メモリアクセス命令により主記憶装置6から読み出されたベクトルデータ、あるいは主記憶装置6に書き込むベクトルデータを主記憶装置6といづれかのベクトルレジスタとの間で、ベクトルデータ制御モジュール7(又は8)と、パス21,22(又は23,24)、メモリアクセスパイプライン3(又は4)内のリクエスタ17,18(又は19,20)、パス25,26(又は27,28)、主記憶制御装置5を介して転送する。各ベクトルレジスタも2要素並列動作をするように、2要素並列に読み出しあるいは書き込み可能である。これらのベクトルレジスタの読み出し、書き込みに関する回路部分も公知なので簡単化のため図示していない。
【0028】
メモリアクセスパイプライン3(又は4)内のリクエスタ(RQ0,RQ1(又はRQ2,RQ3)17,18(又は19,20)は、ベクトルデータ制御部9,10(又は11,12)からのメモリアクセス要求に応答して、それぞれの要求で指定された一群のベクトル要素の各々に対するメモリアクセス要求をそれぞれパス25,26(又は27,28)を介して主記憶制御装置5へ出力する。
【0029】
記憶制御部(SCU)5は、メモリリクエスタ17〜20により出力されたメモリアクセスリクエストの間の競合調停を行なった後、主記憶装置(MS)6にそれらのメモリアクセスリクエストを送る。
【0030】
主記憶装置(MS)6は、4つの物理バンクグループ(RBG0〜RBG3)33〜36からなる。各物理バンクグループ33〜36は、それぞれ4つのメモリバンク(BK0〜BK3,BK4〜BK7,BK8〜BK11,BK12〜BK15)52〜55,56〜59,60〜63,64〜67からなる。
【0031】
各物理バンクグループ33〜36は、それぞれ1マシーンサイクルに一つのリクエストを処理できる。したがって、主記憶装置6全体では4つのリクエストを1サイクル当たりに並列に処理できる。
【0032】
以上の装置構成とその動作はそれ自体は公知の装置と同じである。本実施形態例では、各メモリバンクが同期式DRAMもしくはキャッシュ付DRAMのような同期式DRAMと同様のメモリにより構成される。各メモリバンクは、後に説明するように、ベクトルデータ制御モジュール7または8からのベクトルデータに対するメモリアクセスリクエストにより連続してアクセスされうる一群のベクトル要素の内の複数の要素を、ローアドレスRAを繰り返し印加しないで、カラムアドレスだけ変化させるという同期式DRAM等に特徴的なローアドレス固定モードで各メモリバンクから読み出す機会が増大するように、各メモリバンクにアドレスが割り付けられている。
【0033】
さらに、記憶制御部5は、いずれかのベクトルデータ制御モジュール7(または8)からのメモリアクセスリクエストにより、一群のベクトル要素をアクセスしている間に、いずれかのメモリバンクに対して他のベクトルデータ制御モジュール8(または7)からのリクエストが送付されたとき、これらの二つのベクトルデータ制御モジュール7、8からのアクセスの競合を同期式DRAMのローアドレス固定モードを利用する機会を増大するように、これらのベクトルデータ制御モジュールからのアクセス要求を調停するように構成されている。
【0034】
例えば、いずれかのベクトルデータ制御モジュール、例えば、7が先にアクセスしたメモリバンクのあるローアドレスを今後もアクセスすることが分かっている場合、そのメモリバンクに対してはそのベクトルデータ制御モジュール7からのアクセス要求に、他のベクトルデータ制御モジュール8からのアクセス要求に対するよりも優先してアクセス権を与える。こうすることにより、そのメモリバンクに対しては、ローアドレスを変更する回数を減らすことが出来、全体としてメモリのスループットが向上する。但し、同じベクトルデータ制御モジュール7からの複数のアクセスに連続してアクセス権を与えると、他のベクトルデータ制御モジュール8からのアクセスが沈み込むので、同じベクトルデータ制御モジュールに連続してアクセス権を与える回数を一定数以下に制限する。
【0035】
(2)アドレス割り付け
図2において、RBG#は、図1の物理バンクグループ33〜36の物理バンクグループの番号を指し、BKa#は、各メモリバンク52〜67の、それが属する物理バンクグループ内の番号を指し、BK#は各メモリバンク52〜67の、全物理バンクグループ内の番号を指し、LBG#はこれから説明する、各メモリバンクが属する論理バンクグループの番号を示す。なお、以下では、各物理バンクグループを、その物理バンクグループの番号、例えば「0」を用いて物理バンクグループRBG0と呼ぶことがある。各論理バンクグループも、その論理バンクグループの番号、例えば0を用いてLBG0と呼ぶことがある。各メモリバンクについても同様である。
【0036】
論理バンクグループは、全物理バンクグループにまたがって定義されたメモリバンクのグループである。具体的には、第i番目(i=0、1、2または3)の論理グループLBGiは、各物理バンクグループの第i番目のメモリバンクにより構成される。各論理バンクグループに属するメモリバンクは、全て互いに異なる物理バンクグループに属している。各メモリバンクが属する論理バンクグループの番号LBG#は、そのメモリバンクの、物理バンクグループ内メモリバンク番号BKa#に等しい。従って、各メモリバンクは、物理バンクグループ番号RBG#と物理バンクグループ内メモリバンク番号BKa#との組合せあるいは物理バンクグループ番号RBG#と論理バンクグループ番号LBG#との組合せでもって特定できる。
【0037】
図2に示したアドレス割り付けは、ブロックインタリーブの一種であり、以下のようにして実現される。連続する64個のアドレスからそれぞれなる複数のアドレスブロックを順次異なる論理グループに割り付け、各アドレスブロック内の64個のアドレスを、そのアドレスブロックが割り付けられた論理グループに属する4つのメモリバンクにインタリーブして割り付ける。すなわち、最初のアドレスブロックを構成するアドレス0から63までの64個のアドレスを、論理バンクグループLBG0に属するメモリバンクBK0,BK4,BK8,BK12にインタリーブ方式で割り付ける。第2のアドレスブロックを構成するアドレス64から127までの64個のアドレスを論理バンクグループLBG1に属するメモリバンクBK1,BK5,BK9,BK13に同様に順次割り付ける。第3のアドレスブロックを構成するアドレス128から191までの64個のアドレスを論理バンクグループLBG2に属するメモリバンクBK2,BK6,BK10,BK14に同様に割り付ける。第4のアドレスブロックを構成するアドレス192から255までの64個のアドレスを論理バンクグループLBG3に属するメモリバンクBK3,BK7,BK11,BK15に順次割り付ける。そして、さらに次のアドレスブロックを構成するアドレス256から始まる64個のアドレスは、再び論理バンクグループLBG0に属するメモリバンクBK0,BK4,BK8,BK12に割り付ける。以下同様にして、これ以降のアドレスの割り付けを行なう。
【0038】
ここでは、各メモリバンクは一つの同期式DRAMにより構成され、メモリ内の各記憶位置は、ローアドレスRAとカラムアドレスCAによりアクセスされる。ローアドレスRAとカラムアドレスCAが採りうる範囲は、本実施形態例では特定の値に制限されるものではないが、ここでは、説明をより具体的にするために、カラムアドレスCAは、0から511までの512個の値を取ることができると仮定する。図2において、RA、CAは、各アドレスが割り付けられているメモリバンク内の記憶位置に割り付けられているローアドレスとカラムアドレスを指す。例えば、アドレス0から3には、論理バンクグループLBG0内の4つのメモリバンクの、ローアドレス0、カラムアドレス0が割り付けられる。同様に、アドレス4から7には、論理バンクグループLBG0の4つのメモリバンクの、ローアドレス0、カラムアドレス1が割り付けられる。図から分かるように、アドレス0から255には、論理バンクグループLBG0からLBG3内の16個のメモリバンクの、ローアドレス0、カラムアドレス0からローアドレス0、カラムアドレス15が割り付けられる。以下同様にして、アドレス256から2047には、論理バンクグループLBG0からLBG3内の16個のメモリバンクの、ローアドレス0、カラムアドレス16からローアドレス0、カラムアドレス511が割り付けられる。さらに後続のアドレス2048以降のアドレスには、これらのメモリバンクのローアドレス1以降が割り付けられる。
【0039】
より一般的には、物理バンクグループの数をN、物理バンクグループ内のメモリバンク数をMとすると、それぞれM×L(Lは2以上の整数)個のアドレスからなる複数のアドレスブロックが、順次異なる論理グループに割り付けられ、各アドレスブロックに属するM×L個のアドレスは、そのアドレスブロックが割り付けられた論理グループに属するM個のメモリバンクの順次異なるものにインタリーブ方式に従って割り付けられる。
【0040】
すなわち、第i(i=1、2、、、またはM)の論理グループに属するN個のメモリバンクには、第((i−1)+N(j−1))×M×L+1)番目のアドレスから第((i+N(j−1))×M×L)番目のアドレス(j=1、、、)までのアドレスからなる複数のアドレスブロックの各々が、順次インタリーブ方式に従って順次異なるメモリバンクに割り付けられる。その結果として、各論理グループに属するM個のメモリバンクの各々にはL個のアドレスが割り付けられる。図2に示した例では、N、M、Lはそれぞれ4、4、16に等しい。各メモリバンクに割り付けられた複数のアドレスの内、同一のアドレスブロックに属するL個のアドレスは、同一のローアドレスを有し、異なるカラムアドレスを有する複数の記憶位置に割り付けられる。
【0041】
複数の物理バンクグループに区分された複数のメモリバンクを有し、各物理バンクグループごとにプライオリティ回路によりアクセス権の調停が行われるように構成された計算機システムにおいては、以上に示したブロックインタリーブによるアドレス割り付けを用いることにより、同期式DRAMのローアドレス固定モードを利用できる機会を増大させるすることができる。
【0042】
例えば、いずれかのベクトルデータ制御モジュール7(または8)が、一連の連続アドレス、例えば、アドレス0から始まる連続アドレスをアクセスする場合、メモリバンクBK0,BK4,BK8,BK12のみにメモリアクセスリクエストが発行される。ベクトルデータ制御モジュール7(または8)は、要素並列で動作し、一サイクルに二つのアドレスをアクセスするので、初めのサイクルにはメモリバンクBK0,BK4にアドレス0,1へのリクエストが発行され、次のサイクルにはメモリバンクBK8,BK12にアドレス2,3へのリクエストが発行され、さらに次のサイクルには再びメモリバンクBK0,BK4にアドレス4,5へのリクエストが発行される。このとき、初めの4つのリクエストが発行されたメモリバンクにはローアドレス0をまずセットする必要があるが、これらのメモリバンクに次の4つのリクエストが発行されたときには前回セットしたローアドレスを利用することができるため、ローアドレス0を新たにセットする必要がなくカラムアドレスのみをセットすればよい。したがって、ローアドレスを変更せずにカラムアドレスのみ変更して順次アクセスするという、ローアドレス固定モードを使用できる。
【0043】
さらに、本実施形態例では、同じアドレスブロックに属し、同じメモリバンクの同じローアドレスに割り付けられるアドレスの総数L(今の例では16に等しい)は、同じメモリバンクの同じローアドレスを有する記憶位置の総数(今の例では512)より小さくなるように選ばれる。より望ましくは、総数Lは、同じメモリバンクの同じローアドレスを有する記憶位置の総数(今の例では512)の整数分の一、具体的には32分の一に選ばれている。この結果、各メモリバンクの同一のローアドレスは複数のアドレスブロックに属するアドレスに割り付けられている。
【0044】
後に説明するように本実施形態例は、次のように動作するように構成されている。ベクトルデータモジュール7あるいは8からのアクセス要求により生成される一連のメモリリクエストの内の複数のリクエストが同一のメモリバンクをアクセスする場合、そのメモリバンクを最初にアクセスするメモリリクエストが実行されるときから、そのメモリバンクを最後にアクセスするメモリリクエストが実行されるまでの間、その一連のメモリアクセスのために、そのメモリバンクがロックされるようになっている。そのメモリバンクがロックされている間、そのメモリバンクを他のベクトルデータモジュールのためのメモリリクエストはアクセスの優先度を下げられる。これにより、そのメモリバンクの、ロックされたローアドレスに属する複数のアドレスがアクセスされる間、そのメモリバンクに対しては、ローアドレス固定モードでの動作を行う機会を増大するようにしている。
【0045】
しかし、この結果、そのようにロックされたメモリバンクは同一のリクエスタにより占有され続けるのに近い状態が生じる。従って、異なるリクエスタからのメモリアクセスリクエストをなるべく均等に処理する上で望ましくない。
【0046】
同一のメモリバンクに属し、かつ、同一のアドレスブロックに属するアドレスは、一般に一つのリクエスタから連続してアクセスされる可能性が高い。従って、同一のローアドレスが割り当てられた複数のアドレスが複数のアドレスブロックに属していると、そのローアドレスがロックされる期間は、そのローアドレスのアドレスが一つのアドレスブロックに属している場合よりは短くなる。本実施形態例では、ローアドレス固定モードをできるだけ頻度高く使用することを狙いながら、特定のリクエスタによる過度の占有を避けるために、一つのローアドレスには、複数のアドレスブロックに属するアドレスが割り付けられるように、アドレスブロックの大きさを選ぶことが望ましい。
【0047】
(3)リクエスタ
図3を参照するに、リクエスト生成部300では、ベクトルデータ制御部9からパス21を介して与えられるアクセスすべきベクトルデータの内の、一群の偶数番目のベクトル要素を指定するベースアドレス、ストライド、およびベクトル長から、主記憶装置6における一群の偶数番目のベクトル要素のアドレスを順次計算し、そのアドレスを含むリクエストを毎サイクル一つの割合で順次生成し、線303を介してリクエストレジスタ316に格納する。リクエスト生成部300が生成するリクエストには、リクエストレジスタ316内に示されたように、有効なリクエストであることを示すリクエストフラグREQ、そのリクエストがストアのためのリクエストか否かを示すSTフラグ、このリクエストを発行したリクエスタが属するメモリアクセスパイプラインの番号PL#、メモリアドレス、このリクエストがストアリクエストの場合にこのリクエストに含まれるストアデータとが含まれる。これらの情報の中で、メモリアクセスパイプラインの番号PL#とアドレス以外は、対応するベクトルデータ制御部9より与えられ、メモリアクセスパイプラインの番号PL#とアドレスはリクエスタ17が付加する。メモリアクセスパイプラインの番号PL#は、メモリアクセスパイプライン3、4に対してそれぞれ0、1を取る。さらに、リクエスト生成部300は生成したリクエストがアクセスしようとするベクトル要素が、対応するベクトルデータ制御モジュール7により要求されたベクトルデータの何番目の要素であるかを示す要素番号ELM#を線304、305に出力する。この要素番号ELM#は、リクエスタ17により連続してアクセスする一群の偶数番目のベクトル要素(あるいは一群の奇数番目のベクトル要素)に対してリクエスタ17により出力される一群のリクエストの内、現在処理中のリクエストが何番目のリクエストであるかを示す番号で、0から始まる。リクエスト生成部300のこのようなリクエスト生成のための内部構造はは公知であり、ここでは簡単化のためそれに関する説明は省略する。
【0048】
リクエスタ17は、リクエストレジスタ316内に示されるようにローアドレスロックビットRLおよびローアドレスアンロックビットRULを以下のようにして生成するところに特徴がある。リクエスト計数回路301では、パス21を介して与えられるベースアドレスとストライドとベクトル長とパス305を介してリクエスト生成部300から与えられる要素番号とに応答して、現在処理中のリクエストがアクセスする論理バンクグループを、現在処理中のリクエストとそれに引き続き連続してアクセスする、そのリクエスタにより発行される予定の後続のリクエストとの総数(以下、これを同一論理バンクグループ連続アクセスリクセスト数とも呼ぶ)NR0を計算する。例えば、ベースアドレスが「0」で、ストライドが「2」、ベクトル長が「32」、現在処理中のリクエストの要素番号が「0」、すなわち最初のリクエストの場合、図2より、このリクエストがアクセスする論理バンクグループ(LBG0)には、アドレス「0」,「2」,「4」,…,「62」への32個のリクエストが連続してアクセスするため、NR0は「32」となる。
【0049】
メモリバンク計数回路302では、パス21を介してベースアドレスとストライドとベクトル長と、パス305を介してリクエスト生成部300から与えられる現在処理中の要素番号ELM#に応答して、現在処理中のリクエストがアクセスする論理バンクグループ内に属するメモリバンクのうち、このリクエストおよびこのリクエストに続いてこのリクエスタから発行される後続のリクセストによりアクセスされるメモリバンクの総数(以下、この数を論理グループ内被アクセスメモリバンク数とも呼ぶ)NBKを計算する。例えば、ベースアドレスが「0」、ストライドが「2」、ベクトル長が「32」、現在処理中のリクエストの番号(要素番号)が「0」の場合、図2より、このリクエストがアクセスする論理バンクグループ(LBG0)において、全てのリクエストはメモリバンクBK0またはBK2をアクセスするため、NBKは「2」となる。
【0050】
図16を参照するに、RL/RULビット生成部308では、上記の個数(NR0,NBK)をパス306,307を介して受け取り、それぞれリクエスト数レジスタ310と、メモリバンク数レジスタ311に保持する。また、リクエスト生成部300から現在処理中である要素番号(ELM#)をパス304を介して受け取り、要素番号レジスタ309に保持する。
【0051】
この回路では、各論理バンクグループに連続してアクセスするリクエストのうち、その論理バンクグループ内の同一のメモリバンクに対して、最後にアクセスするリクエストに対するRAロックビットRLを「0」にし、RAアンロックビットRULを「1」にして、それ以外のリクエストに対しては全てRAロックビット(RL)を「1」に、RAアンロックビットRULを「0」にするように、各リクエストに対してRAロックビットRL、RAアンロックビットを生成する。
【0052】
本実施形態例では、一つのリクエスタから出力される一連のアドレスの内の複数のアドレスにより同一メモリバンクがアクセスされる場合、それらの複数のアドレスは、同一のローアドレスに属すると仮定している。従って、このRL/RULビット生成部308は、同一のローアドレスをアクセスする複数のメモリアクセスリクエストの最後のもの以外に対してRAロックビットを1にし、その最後のメモリアクセスリクエストに対してRAアンロックビットRULを1にするようになっている。もし、同一のリクエスタから出力される一連のメモリアクセスリクエストが同一のメモリバンク内の複数のローアドレスに属する複数のアドレスをアクセスするときには、それらの一連のアドレスの内のいずれか一つのローアドレスに属する複数のアドレスに関して上に説明した処理を実施するように図16を変更すればよい。
【0053】
具体的には、比較器401は、要素番号ELM#が「0」、すなわち、リクエスト生成部300で生成されたリクエストが最初のリクエストであるか否か判定する。最初のリクエストである場合は、セレクタ405によりリクエスト数レジスタ310のNR0を選択させる。リクエストが最初のリクエストでない場合には、変数レジスタ400を選択させる。
【0054】
さらに、比較器402は、このセレクタ405の出力が要素番号ELM#以下であるか否か判定する。さらに、加算器407によりセレクタ405の出力とリクエスト数レジスタ310の内容であるNR0を加算する。セレクタ405の出力が要素番号ELM#以下である場合は、セレクタ406により加算器407の出力を選択させ、その出力を変数レジスタ400に変数NRの新たな値として格納する。セレクタ405の出力が要素番号ELM#より大きいときには、セレクタ406によりセレクタ405の出力を選択させる。
【0055】
上記の処理により、変数レジスタNRには常に、現在処理中のリクエストがアクセスしている論理バンクグループに連続してアクセスするリクエストの内の最大の要素番号より「1」大きい数が保持される。
【0056】
さらに、減算器408により、セレクタ406の出力からメモリバンク数レジスタ311の内容NBKを引く。比較器404において要素番号ELM#が、この減算器の出力以上かを判定する。比較器403において、この要素番号ELM#が変数NRより小さいか否かを判定する。二つの比較器403、404の出力を受けるANDゲート409の出力をRAアンロックビットRULとしてRAアンロックレジスタ313を介して線315に出力する。さらにこのANDゲートの出力を受けるインバータ410の出力をRAロックビットRLとしてRAロックビットレジスタ312を介して線314に出力する。この結果、二つの比較器403、404での判定がともに成立した場合には、RAロックビットRLは「0」に、RAアンロックビットRULは「1」になる。これ以外の場合には、RAロックビットRLは「1」に、RAアンロックビットRULは「0」になる。
【0057】
リクエスト生成部300で生成されたリクエストと、RL/RULビット生成部308で生成されたRL,RULを、それぞれパス303と314,315を介してリクエストレジスタ316でマージしてメモリアクセスリクエストとする。こうして、先に述べたように、各リクエストに対してRAロックビットRL、RAアンロックビットRULが生成される。リクエスタ18〜20も同様である。
【0058】
(4)記憶制御部(SCU)
図4に示すように、記憶制御部5は、4つのリクエスタ17〜20に対応する4つの互いに同じ構造のリクエストバッファ部37〜40と、4つの物理バンクグループ33〜36に対応する4つの互いに同じ構造のプライオリティ制御部(PR0〜PR3)44〜47とからなる。図4では、ロード命令に応答して主記憶装置6から読み出したベクトルデータをベクトルレジスタユニット2(図1)に転送するための経路は簡単化のため省略している。
【0059】
(4A)リクエストバッファ部
リクエストバッファ部37において、アドレスデコード部41は、図5に示すように、リクエストレジスタ68にリクエスタ17から線25を介して供給されたリクエストを保持する。そのリクエスト内のアドレスを、図2に示した同期式DRAMに特化したアドレス割り付けによりアクセス出来るようにアドレス変換し、物理バンクグループ物理バンク番号RBG#、BG内メモリバンク番号BKa#、およびメモリバンク内アドレスからなる変換後のアドレスを含むリクエストを生成する。メモリバンク内アドレスは、ローアドレスRAとカラムアドレスCAとよりなる。得られた新たなリクエストをリクエストレジスタ69に保持する。
【0060】
変換前のアドレスは5つのフィールドに分かれて変換される。本実施形態例では、図2に示したアドレス割り付けから分かるように、変換前のアドレスの第5のフィールド(最下位フィールド)ADR5により物理バンクグループ物理バンク番号RBG#が決まる。本実施形態例では、物理バンクグループ物理バンク数は、4であるので、最下位フィールドADR5は2ビットからなる。アドレスの第3のフィールドADR3により物理バンクグループ物理バンク内のバンク番号BKa#が決まる。物理バンクグループ物理バンク内のバンクの総数は4であるから、本実施形態例では、第3のアドレスフィールドADR3も2ビットからなる。図2で示したとおり、物理バンクグループ物理バンク内のバンク番号は、64を周期として変化するので、第4、第5のアドレスフィールドの総ビット数は、6ビットである。従って、第4アドレスフィールドADR4は4ビットからなる。変換前のアドレスの第2、第4フィールドにより、カラムアドレスCAが決まる。本実施形態例では、図2に関して説明したとおり、同じローアドレスRAに対しては、カラムアドレスは512個あると仮定しているので、カラムアドレスCAは9ビットである。従って、第2アドレスフィールドADR2は5ビットからなる。変換前の第1アドレスフィールドADR1はそのままローアドレスRAとして使用される。この結果、本実施形態例では、変換前のアドレスが0〜2047までがいずれかの物理バンクグループ物理バンクのいずれかのメモリバンクにおけるローアドレスRA=0の記憶位置に対応する。これらのアドレスに対してカラムアドレスCAは、0から511まで変化する。アドレスが2047を超えると、ローアドレスが1増え、さらに2048個越えるごとにローアドレスが1ずつ増大する。
【0061】
図4に戻り、リクエストバッファ部37は、リクエスタ17から発行されたリクエストを一時保持し、リクエスト送出制御部43の制御によりそのリクエスト内の物理バンクグループ物理バンク番号RBG#が指し示す、プライオリティ制御部44〜47の一つにそのリクエストをパス48〜51の一つを介して送出する。リクエストバッファ42およびリクエスト送出制御部43の内部構成については前述の第3の参考文献に詳しく開示されている。ここでは簡単化のためにその詳細の説明は省略する。そこに記載の技術を参照によりここに組み込む。
【0062】
(4B)プライオリティ制御部
プライオリティ制御部44〜47の各々には、リクエストバッファ部37〜40から最大4つのリクエストが同時に供給される。すなわち、二つのメモリアクセスパイプライン3、4にある4つのリクエスタ17〜20により出力された4つのリクエストが4つのリクエストバッファ部37〜40を経由して、各プライオリティ制御部に同時に送出されることが生じる。各プライオリティ制御部は、複数のリクエストを同時に受け取ったときには、それらの間のメモリアクセス競合を調停してそれらのリクエストを順次選択し、そのプライオリティ制御部に対応する物理バンクバンクグループ33〜36の一つにそれらのリクエストを順次送る。
【0063】
本実施形態例では、同期式DRAMの特徴であるローアドレス固定モードが使用される回数を増大するように、メモリアクセスパイプライン3および4に関連する二つのリクエストを調停するところに特徴がある。より具体的には、このために、ローアドレスをロックする回路を有し、あるメモリアクセスパイプラインによりロックされたローアドレスを有するメモリバンクの他のローアドレスを他のアクセスパイプラインからのリクエストがアクセスしようとするときには、当該リクエストより他のリクエストを優先するようになっている。
【0064】
図6を参照するに、各プライオリティ制御部、例えば44は、RA管理部78と、バンクビジー管理部79と、リクエストレジスタ88〜91,98と、プライオリティ回路96とからなる。リクエストレジスタ88〜91はそれぞれリクエストバッファ部37〜40に対応して設けられたリクエストレジスタで、それぞれリクエストバッファ部37〜40の一つから送出された後続のリクエストに対してRA管理部78により生成されるRA一致ビットRMとRA変更禁止ビットRIと、さらにバンクビジー管理部79によりその後続のリクエストに対して生成されるバンクビジービットBBとを組み合わせて保持する。これらのリクエストレジスタ88〜91の一つに保持されたリクエストが、プライオリティ回路96によりすぐに選択されなかったときには、パス48〜51の一つから、その選択されなかったリクエストがそのレジスタに繰り返して供給され、そのリクエストレジスタは、そのリクエストを毎サイクル繰り返し保持する。この間、RA管理部78は、パス48〜51の一つを介して繰り返し供給されるそのリクエストに対して、プライオリティ回路96により新たに選択されたリクエストに依存して、RA一致ビットRMとRA変更禁止ビットRIの新たな値を毎サイクル決定する。同様に、バンクビジー管理部79もそれらのリクエストに対してバンクビジービットBBを毎サイクル新たに生成する。
【0065】
RA管理部78は、このプライオリティ制御部に対応する物理バンクバンクグループ内の4つのメモリバンクの各々に対応して、そのメモリバンクを最近にアクセスしたリクエストを記憶し、パス48〜51のいずれか、例えば48を介してリクエストバッファ部37から新たに後続のリクエストが送られるごとに、その後続のリクエストが指定する物理バンクグループ内メモリバンク番号BKa#を有するメモリバンクに対応して記憶してある、先行するリクエストのローアドレスRAと、その後続のリクエストのローアドレスRAとを比較する。もし、これらのローアドレスが一致した場合には、リクエストレジスタ88〜91の内、その後続のリクエストを送出したリクエストバッファ部37に対応する一つのリクエストレジスタ88に、パス80を介して値「1」を有するRA一致ビットRMを送出する。
【0066】
さらにRA管理部78では、上記比較の結果、二つのローアドレスが一致する場合、この先行するリクエストにより上記メモリバンクがロックされている場合には、次のようにしてこの後続のリクエストに対してリクエストレジスタ88に供給すべきRA変更禁止ビットRIの値を1にする。すなわち、RA管理部78は、いずれかのメモリアクセスパイプライン、例えば4、の中のいずれかのリクエスタ、たとえば、19から発行された、一群の偶数番目のベクトル要素に対するアクセスを要求する一群のリクエストの内、いくつかのすでに実行された先行するリクエストが、すでにある一つのメモリバンクをアクセスしており、その一群のリクエストの内のこれから実行される予定の後続のリクエストもそのメモリバンクをアクセスし、かつ、そのメモリバンクをアクセスするこれらの先行するリクエストおよび後続のリクエストが指定するローアドレスRAが互いに一致する場合、そのメモリバンクに関してそのローアドレスをロックするようになっている。もし、あるメモリバンクのあるローアドレスが、あるメモリアクセスパイプライン、今の例では、4のためにロックされた場合、他のメモリアクセスパイプライン、今の例では3からのメモリリクエストに基づいて、例えば、リクエストバッファ37により発行されたこれから実行されるべき後続のリクエストが、このメモリバンクの中の異なるローアドレスを有する記憶位置をアクセスする場合、この後続のリクエストに対してRAを変更することを禁止するために、この後続のリクエストに対して与えるRA変更禁止ビットRIを「1」にする。RA管理部78の詳細は後に示す。
【0067】
バンクビジー管理部79では、対応する物理バンクバンクグループの各メモリバンク毎にそのバンクがビジー状態にあるときには引き続きそのビジー状態にあると予想される時間を表すバンクビジータイムBTを記憶するようになっている。パス48〜51のいずれか、例えば、48から前述のように後続のリクエストが供給された場合、この後続のリクエストが指定する物理バンクグループ物理バンク内メモリバンク番号BKa#を有するメモリバンクに対応して記憶してあるバンクビジータイムBTを参照し、もしそのメモリバンクがビジーであれば、パス84〜87の一つ、今の例では、84を介してリクエストレジスタ88〜91の一つ、今の例では88に値1のバンクビジービットBBを供給する。バンクビジー管理部79の詳細は後に説明する。
【0068】
プライオリティ回路96は、リクエストレジスタ88〜91内の4つのリクエストの一つを毎サイクル選ぶ。このとき、対応する物理バンクバンクグループ内の4つのメモリバンクが、できるだけローアドレスを変えないで連続してアクセスされるように、これらのリクエストのRA一致ビットRM、RA変更禁止ビットRIおよびバンクビジービットBBを用いて、リクエストを選択する。プライオリティ回路96の詳細は後に述べる。
【0069】
プライオリティ回路96により選択されたリクエストは、リクエストレジスタ98にセットされる。そのリクエストの内、カラムアドレスCA、ローアドレスRA、リクエスト選択成功信号SSおよびバンクグループ内メモリバンク番号BKa#は、それぞれ、パス99〜102およびそれらを束ねたパス29を介して主記憶装置6に送られる。なお、後に説明するように、このリクエストのいろいろの信号が、RA管理部78およびバンクビジー管理部79にも送られる。
【0070】
(4C)プライオリティ回路
図11を参照するに、プライオリティ回路96では、リクエストレジスタ231〜234は、パス92〜95を介してリクエストレジスタ88〜91からそれぞれリクエストを受け取る。すなわち、リクエストレジスタ231又は232はメモリアクセスパイプライン3内のリクエスタ17又は18から発行された一群のリクエストを順次保持する。同様に、リクエストレジスタ233又は234はメモリアクセスパイプライン4内のリクエスタ19又は20から発行された一群のリクエストを順次保持する。リクエストレジスタ231内にリクエストを構成するいろいろの情報を図に示す。
【0071】
セレクタ239は、リクエストレジスタ231,232の両方に有効なリクエストがある場合は、プライオリティレジスタ243が与えるセレクト信号244にしたがってどちらか一方を選択し、どちらか一方にしか有効なリクエストがない場合には、プライオリティレジスタ243が示すセレクト信号244に依存しないで、その有効なリクエストを選択する。セレクタ240も同様にリクエストレジスタ233、234から一つのリクエストをプライオリティレジスタ246の値にしたがって選択する。
【0072】
セレクタ239は、選択したリクエストがリクエストレジスタ231と232のいずれに保持されているリクエストであるかを示す値が0または1のレジスタ識別番号をパス245を介してプライオリティレジスタ243に供給する。プライオリティレジスタ243は、このレジスタ識別番号を反転した値をセレクタ239にセレクト信号としてパス244を介して供給する。これによりセレクタ239は基本的にはレジスタ231と232を交互に選択する。他のリクエストレジスタ233、234、セレクタ240、プライオリティレジスタ246も全く同様に動作する。
【0073】
セレクタ239,240で選択されたリクエストは、それぞれパス241,242を介してリクエストレジスタ249,250に転送される。リクエストレジスタ231および232はメモリアクセスパイプライン3からのリクエストを保持し、リクエストレジスタ233、234はメモリアクセスパイプライン4からのリクエストを保持するので、リクエストレジスタ249にはメモリアクセスパイプライン3からのリクエストのうち選択されたものが保持され、リクエストレジスタ250にはメモリアクセスパイプライン4からのリクエストのうち選択されたものが保持されることになる。
【0074】
リクエストレジスタ249,250に保持されたリクエストは、それぞれ、パス251,252を介してReq変換回路290,291に送出される。Req変換回路290は、そこに送出されたリクエストが有効なリクエストではあるが、そのリクエストが要求するメモリバンクがビジーの時(BB=1)のときに、そのリクエストのリクエストフラグReqを0にする回路で、これによりこのリクエストを無効にする。このリクエストが要求するバンクがビジーのために実行できないので、本プライオリティ回路96での選択の対象からはずす。Req変換回路291についても同じである。
【0075】
スイッチ253は、リクエストレジスタ249,250に保持された二つのリクエストの一方を選択する回路であり、PL間プライオリティ管理部299はこのスイッチを制御するセレクト信号286を与える回路で、本実施形態例の特徴的な回路の一つである。この回路によるスイッチ253でのリクエスト選択を制御するときの動作条件は以下の通りである。
【0076】
(1)有効なリクエストの中では、ローアドレス固定モードでの動作の回数を増大するようなリクエストを、そうでないリクエストより優先する。
【0077】
この条件(1)は、具体的には次の条件にする。
【0078】
(1A)各メモリバンクに対して最近にアクセスされたローアドレスと異なるローアドレスをアクセスするリクエストより、その最近にアクセスされたローアドレスと同じローアドレスをアクセスするリクエストを優先する。
【0079】
この条件(1A)は、さらにより具体的には、次の条件にする。
【0080】
(1AA)一方のメモリアクセスパイプラインからのメモリアクセスリクエストによりロックされたローアドレスを有するメモリバンクに対して、他方のメモリアクセスパイプラインからのリクエストがそのロックされたローアドレスと異なるローアドレスをアクセスするときには、そのリクエストより、上記一方のメモリアクセスパイプラインからのリクエストを優先する。
【0081】
この条件(1AA)は、さらにより具体的には、次の条件にする。
【0082】
(1AAA)一方のメモリアクセスパイプラインからのメモリアクセスリクエストによりロックされたローアドレスを有するメモリバンクに対して、他方のメモリアクセスパイプラインからのリクエストがそのロックされたローアドレスと異なるローアドレスをアクセスするときには、上記一方のメモリアクセスパイプラインからの所定数n(nは複数)個の有効なリクエストが選択された後に、上記他方のメモリアクセスパイプラインからの上記リクエストを選択する。
【0083】
(2)二つのメモリアクセスパイプラインからのメモリアクセスリクエストがともに、有効で、上記の条件(1)(あるいはそれのより具体的な条件(1A)から(1AAA))に該当しない時には、それらのメモリアクセスパイプラインからのメモリアクセスリクエストをほぼ同じ優先度で選択する。
【0084】
(3)一方のメモリアクセスパイプラインからのメモリアクセスリクエストが有効で、他方のメモリアクセスパイプラインからのメモリアクセスリクエストが無効の場合、その有効なリクエストが上記の条件(1)(あるいはそれのより具体的な条件(1A)から(1AAA))に該当しない時には、その有効なリクエストを選択する。
【0085】
(4)無効なリクエストは選択しない。但し、他に選択可能な有効なリクエストがない場合には、無効なリクエストを選択するようにしてもよい。
【0086】
以下、スイッチ253とPL間プライオリティ管理部299の動作を詳細に説明する。スイッチ253は、PL間プライオリティ管理部299からのセレクト信号に依存して、リクエストレジスタ249,250のどちらか一方から有効なリクエストを選択し、選択されたリクエストをパス97に送出し、有効なリクエストの選択が成功したことを示すリクエスト選択成功信号SSと選択されたリクエストのメモリアクセスパイプライン番号PL#とをパス254を介してPL間プライオリティ管理部299に送出する。さらに、スイッチ253は、リクエストレジスタ249、250をそれぞれ選択したときに、それぞれパス500、501を介してそのことをセレクタ239、240に通知する。スイッチ253において選択されたリクエストはリクエストレジスタ249,250から削除され、選択されなかったリクエストはそのままリクエストレジスタ249,250に保持される。
【0087】
PL間プライオリティ管理部299には、リクエストレジスタ249、250からリクエストがそれぞれ線258、259を介して送られる。但し、それらのリクエスト内のリクエストフラグReqは送られない。それに代えて、Req変換回路290、291から線292、293を介して送られる。図12に示すように、PL間プライオリティ管理部299では、デコーダ257は、パス254を介してスイッチ253(図11)から与えられる、選択されたリクエスト内のメモリアクセスパイプライン番号PL#をデコードし、この番号が0のときには、パス261,262にそれぞれ1、0を出力し、この番号が1のときには、パス261,262にそれぞれ0、1を出力する。
【0088】
NOTゲート287には、パス258を介してリクエストレジスタ249から、メモリアクセスパイプライン3からのリクストのRA一致ビットRMが与えられる。同様にNOTゲート288には、パス259を介してリクエストレジスタ250から、メモリアクセスパイプライン4からのリクストのRA一致ビットRMが与えられる。ANDゲート600には、NOTゲート287の出力と線258、611を介して与えられるRL更新禁止信号RIが与えられる。同様に、ANDゲート601には、NOTゲート288の出力と線259を介して与えられるメモリアクセスパイプライン4からのリクエストのRL更新禁止信号RIが与えられる。ANDゲート263には、メモリアクセスパイプライン3に対するReq更新回路290により線292を介して与えられるリクエストフラグReq、スイッチ253から線254、255を介して与えられるリクエスト選択成功信号SS、ANDゲート600の出力260、デコーダ257の出力262が入力される。同様に、ANDゲート270には、メモリアクセスパイプライン4に対するReq更新回路291により線293を介して与えられるリエストフラグReq、スイッチ253から線254、255を介して与えられるリクエスト選択成功信号SS、ANDゲート601の出力289、デコーダ257の出力261が入力される。ANDゲート602には、リクエスト選択成功信号SSとデコーダ257の出力261が入力される。同様に、ANDゲート603には、リクエスト選択成功信号SSとデコーダ257の出力262が入力される。
【0089】
カウンタ265は、リクエスト選択成功信号SSが1になり、かつ、デコーダ257の出力261が1になったときにリセットされ、ANDゲート263の出力264が1になった回数をカウントする。同様に、カウンタ272は、リクエスト選択成功信号SSが1になり、かつ、デコーダ257の出力262が1になったときにリセットされ、ANDゲート270の出力271が1になった回数をカウントする。
【0090】
NOTゲート287の出力は、図11のリクエストレジスタ249に保持されたリクエストのRA一致ビットRMが「0」である場合、すなわち先行するリクエストのRAとレジスタ249内の後続のリクエストのRAとが一致しなかった場合に、ANDゲート600に「1」を入力する。ANDゲート600の出力は、ANDゲート263に入力される。同様に、NOTゲート288は、図11のリクエストレジスタ250に保持されたリクエストのRA一致ビットRMが「0」である場合、すなわち先行するリクエストのRAとレジスタ250内の後続のリクエストのRAとが一致しなかった場合に、ANDゲート601に「1」を入力する。ANDゲート601の出力は、ANDゲート270に入力される。デコーダ257は、図11のスイッチ253で選択された先行するリクエストのメモリアクセスパイプライン番号PL#をデコードして、結果をパス261,262を介してANDゲート602,270,263,603に入力する。そして、ANDゲート263の出力をカウンタ265のセット(set)に、ANDゲート602の出力をカウンタ265のリセット(reset)に入力する。また、ANDゲート270の出力をカウンタ272のセット(set)に、ANDゲート603の出力をカウンタ272のリセット(reset)に入力する。
【0091】
例えば、パス293上のReqが「1」、パス292上のReqが「1」、パス255上のSSが「1」のときに、パス258上のRMが「1」、パス259上のRMが「0」、パス259上のRIが「1」、パス258上のRIが「0」、デコーダ257に入力するPL#が「0」であると仮定する。
【0092】
PL#が「0」であることは、スイッチ253において選択された先行するリクエストがメモリアクセスパイプライン3から発行されたものであることを示す。この場合には、デコーダ257の出力261が1となる。パス259上のRIが「1」であることは、リクエストレジスタ250内にある、メモリアクセスライン4からのリクエストが要求するメモリバンクのいずれかのローアドレスがロックされていることを示す。さらに、パス259上のRMが「0」であることは、メモリアクセスパイプライン4からのこの、リクエストのローアドレスと、ロックされているローアドレスとが一致しなかったことを示す。
【0093】
このようにあるメモリバンクがロックされているローアドレスを有するということは、本実施形態例でのロックの定義から明らかなように、(1)アクセスパイプライン3からの一連のメモリアクセスリクエストの中に、複数のメモリアクセスリクエストがあること、(2)さらに、それらの複数のメモリアクセスリクエストの内の先頭のものはすでに実行されたこと、(3)しかし、それらのメモリアクセスリクエストの内の最後のものはまだ実行されていないことを示す。すなわち、このメモリバンクは、本実施形態例では、ローアドレス固定モードで動作している。従って、リクエストレジスタ250にある、アクセスパイプライン4からのリクエストに、このメモリバンクへのアクセスを許すと、このリクエストのために、このメモリバンクをそれまでアクセスしたローアドレスと異なるローアドレスでもってアクセスすることになる。
【0094】
言い換えると、このメモリバンクは、ローアドレス固定モードでの動作を終了した上で、別のローアドレスを新たにアクセスしなければならない。本実施形態例では、このように、ローアドレス固定モードでの動作の回数を減少するリクエストは選択しない。このリクエストより、他のリクエスト、今の例では、メモリバンクをロックをしているメモリアクセスリクエスト、今の例で3、からのアクセスを優先する。本実施形態例では、メモリアクセスパイプライン3からの、所定数nのリクエストが選択された後に、このメモリアクセスリクエスト4からの上記リクエストを選択するようになっている。このための選択動作は後に説明する。ANDゲート601の出力は、メモリアクセスパイプライン4からのリクエストが上に述べた特殊な条件を満たす、実行されないリクエストであるときに1となる。ANDゲート600も同様である。
【0095】
上記の値nは、プロセッサシステムの全体の性能が大きくなるように適宜性能を測定して選ぶことが望ましい。値が大きいほど、ローアドレス固定モードで動作する機会が増大し、プロセッサシステムの性能が増大するが、一方のメモリアクセスパイプラインからのリクエストが選択されない期間が増大し、その性能が相対的に低下する可能性がある。但し、一つのローアドレスに属する異なるカラムアドレスの総数(図2の例では16)よりは小さくすることが望ましい。
【0096】
カウンタ272は、このような状態でメモリアクセスリクエスト3からのリクエストが引き続き選択される回数を数えるためのものである。同様に、カウンタ265はメモリアクセスパイプライン4からのリクエストが選択される回数をカウントするためのものである。今の仮定の場合には、ANDゲート601の出力289が「1」となる。結局、ANDゲート270の出力271が「1」となる。これによりカウンタ272のセット入力が「1」となり、カウンタ272の値が1だけカウントアップされる。一方、ANDゲート602の出力も1となるので、カウンタ265はリセットされる。このように、本実施形態例では、カウンタ265,272のいずれか一方がカウントアップされるとき、他方は必ずリセットされるため、常にどちらか一方の値は「0」となる。
【0097】
比較器268は、カウンタ265の値と数値「n」を比較し、一致あるいは不一致が検出されたときにそれぞれ値1、0を取る比較結果をエンコーダ277およびNORゲート279に送出する。比較器275も同様にカウンタ272と値「n」との比較を行う。この結果、NORゲート279の出力は、カウンタ265、272の少なくとも一方の値がnに達したときに1になる。
【0098】
エンコーダ277は、比較器268、275の出力をコード化した信号を、セレクタ285に送出する。例えば、比較器268,275の出力がそれぞれ「1」、「0」であるとき、エンコーダ277の出力は「0」となる。比較器268,275の出力がそれぞれ「0」,「1」であるとき、エンコーダ277の出力は「1」となる。NORゲート279の出力は、セレクタ285にセレクト信号として送出される。セレクタ285は、NORゲート279の出力が1のときに、すなわち、比較器268、275のいずれかの出力が1になったとき、すなわち、カウンタ265、272のいずれかのカウント値がnになったときに、エンコーダ277の出力を選択する。こうして、カウンタ265あるいは275の値がnに達したときに、それまで選択されない状態にあったリクエストを選択する信号がセレクタ285により生成される。
【0099】
セレクタ285は、カウンタ265、272のいずれもがカウント値がnになっていないときには、パス284を選ぶ。このパスには以下のようにしてメモリアクセスパイプラインの番号が生成される。
【0100】
NOTゲート281には、スイッチ253(図11)からパス256、612を介してメモリアクセスパイプライン番号PL#が供給され、その出力は、プライオリティレジスタ283の入力「D」に送出される。このプライオリティレジスタ283のイネーブル入力「E」には、スイッチ253(図11)からパス254、255を介してリクエスト選択成功信号SSが入力され、このプライオリティレジスタ283のデータ入力「D」には、NOTゲート281の出力が入力される。すなわち、プライオリティレジスタ283は、リクエスト選択成功信号SSが「1」である場合にのみ、メモリアクセスパイプライン番号PL#を反転した値を保持する。
【0101】
ANDゲート605には、パス293を介して供給されるリクエストフラグReqとNOTゲート607により反転されたANDゲート601の出力とが入力される。結局、ANDゲート605の出力は、メモリアクセスパイプライン4からのリクエストが有効なリクエストであり、かつ、このリクエストに対して、実行禁止のための前述の条件(RI=1、RM=0)が成立しないときに1となる。セレクタ609は、ANDゲート605の出力がそれぞれ「0」の場合に、すなわち、アクセスパイプライン4からのリクエストが無効か(ここで、無効なリクエストにはReq反転回路290又は291により無効にされたリクエストを含む。以下でも同様である。)、あるいは、有効、かつ、このリクエストが上記実行禁止条件を満たす時に、アクセスパイプライン番号「0」を選択する。セレクタ609は、ANDゲート605の出力がそれぞれ「1」の場合に、すなわち、アクセスパイプライン4からのリクエストが有効、かつ、上記実行禁止条件を満たさない時に、アクセスパイプライン番号「1」を選択する。
【0102】
ANDゲート604、NOTゲート606は、それぞれANDゲート605、NOTゲート607と同様である。従って、ANDゲート604の出力は、アクセスパイプライン3からのリクエストが無効か、あるいは有効、かつ、上記実行禁止条件を満たす時に0となる。ANDゲート604の出力は、アクセスパイプライン3からのリクエストが有効で、上記実行禁止条件を満たさない時に1になる。排他的論理和ゲート608には、ANDゲート604と605の出力が入力される。セレクタ610は、排他的論理和ゲート608の出力が0のときに、プライオリティレジスタ283の出力を選択し、排他的論理和ゲート608の出力が1のときに、セレクタ609の出力を選択する。
【0103】
セレクタ285は、NORゲート279の出力が「0」の場合、すなわちカウンタ265,272のいずれもが「n」になっていない場合に、セレクタ610の出力284を選択する。ANDゲート604、605の出力がともに1になるのは、二つのリクエストがともに有効で、かつ、二つのリクエストに対して、上記実行禁止条件がともに成立しない場合である。このときには、排他的論理和ゲート608の出力は0となり、セレクタ610は、プライオリティレジスタ283の出力を選択する。プライオリティレジスタ283では、直前に選択されたメモリアクセスパイプラインではない方のメモリアクセスパイプラインの番号を保持している。従って、PL間プライオリティ管理部は、スイッチ253(図11)によりリクエストが選択される毎に、選択されていないメモリアクセスパイプラインからのリクエストを選択するように、メモリアクセスパイプライン間のプライオリティを交互に1サイクルごとに切り替える。これにより、二つのメモリアクセスパイプラインによるメモリアクセスの機会の均等化を図る。
【0104】
ANDゲート604、605の一方の出力が0で、他方の出力1になるのは、一方のリクエストが無効、もしくは有効かつ上記実行禁止条件を満たし、他方のリクエストが、有効、かつ、上記実行禁止条件を満たさない場合である。この場合には、上記他方のリクエストを選択すればよい。例えば、ANDゲート605が1でANDゲート606が0の場合には、メモリアクセスパイプライン3からのリクエストが無効、もしくは有効かつ上記実行禁止条件を満たし、メモリアクセスパイプライン4からのリクエストが、有効、かつ、上記実行禁止条件を満たさない場合である。この場合には、ANDゲート605の出力1により、セレクタ609は、メモリアクセスパイプライン番号として1を選択する。この場合には、排他的論理和ゲート608の出力は1となり、セレクタ610は、このセレクタ609の出力1を選択する。こうして、メモリアクセスパイプライン番号1が選ばれ、メモリアクセスパイプライン4からのリクエストが選択される。ANDゲート604の出力が1、ANDゲート605の出力が0の場合には、セレクタ610は、同様にして、メモリアクセスパイプライン番号0を選択する。
【0105】
ANDゲート604、605の出力がともに0になるのは、一方のリクエストが無効、もしくは有効かつ上記実行禁止条件を満たし、他方のリクエストが無効な場合である。本実施形態例では、二つのリクエストが有効、かつ、上記実行禁止条件を満たす場合にもANDゲート604、605の出力がともに0になるが、本実施形態例ではこのように二つのリクエストに対して同時に上記実行禁止条件を満たすことは生じないようになっているので、こういう場合は起きない。従って、ANDゲート604、605の出力がともに0になった場合には、いずれのリクエストも選択する必要がない。この場合には、排他的論理和ゲート608の出力は1となるので、判定回路620は、この出力が1で、ANDゲート604、605の出力がともに0であるかを判定し、そうであるときには、線298を介してスイッチ253(図11)に選択不要信号を送出する。
【0106】
図11に戻り、スイッチ253は、パス286から与えられる選択信号が指定するメモリアクセスパイプラインの番号に従って、リクエストレジスタ249、250のいずれかのリクエストを選択してパス97を介してリクエストレジスタ98(図6)に送出する。このとき、選択されたリクエストがメモリバンクをアクセスする間このメモリバンクが占有される時間を示すあらかじめ定めたバンクビジータイムBTを、この選択されたリクエストに付加する回路(図示せず)を内蔵している。
【0107】
なお、各物理バンクグループ33、34、35または36は、プライオリティ回路96から新たなリクエストが送られる度に、そのリクエスト内のRAロックビット、RAアンロックビットを見て、そのリクエストが要求するメモリバンクの動作モードを制御する回路(図示せず)を有する。すなわち、そのRAロックビットが1である時には、その回路は、そのメモリバンクがすでにローアドレス固定モードでは動作していない状態にあるときには、そのメモリをローアドレス固定モードで動作させ、そのリクエストをそのメモリバンクに対して実行する。もし、そのメモリバンクがすでにローアドレス固定モードでは動作している状態にあるときには、そのメモリバンクを引き続きローアドレス固定モードで動作させてそのリクエストをそのメモリバンクに対して実行する。また、そのリクエストのRAアンロックビットが1であるときに、そのメモリバンクをローアドレス固定モードのままでそのリクエストをそのメモリバンクに対して実行し、その後、そのメモリをローアドレス固定モードでない状態にする。
【0108】
(4D)RA管理部
図7を参照するにRA管理部78は、ローアドレス一致信号RMを生成するためのRA一致制御部113と、ローアドレス更新禁止信号RIを生成するためのRAロック制御部114とからなる。
【0109】
図8を参照するに、RA一致制御部113では、RAレジスタ128は、対応する4つのメモリバンクに対して最近にアクセスされたローアドレスを保持するための、4つのフィールドRA0〜RA3を有する。プライオリティ制御部44(図6)のプライオリティ回路96により新たにリクエストが選択され、そのリクエストがリクエストレジスタ98にセットされると、リクエストレジスタ98から、この選択されたリクエストに含まれているローアドレスRA、リクエスト選択成功信号SS、物理バンクグループ内バンク番号BKa#とがそれぞれパス100、101、102を介してスイッチ123に供給される。スイッチ123は、RAレジスタ128内の、物理バンクグループ内バンク番号BKa#を有する一つのメモリバンクに対応するフィールドに、送信されたローアドレスRAを書き込む。
【0110】
セレクタ133〜136および比較器149〜152は、それぞれ4つのメモリバンクに対応して設けられている。例えば、セレクタ133は、パス48を介して供給された後続のリクエストが指定するバンクグループ内メモリバンク番号BKa#に応答して、RAレジスタ128内の、この番号BKa#を有するメモリバンクを最後にアクセスしたローアドレスを選択して、比較器149に供給する。比較器149は、パス48を介して供給される後続のリクエストが指定するローアドレスとセレクタ133から出力されるローアドレスとを比較し、両者が一致すれば、その後続のリクエストに対してローアドレス一致信号RMをパス80を介してリクエストレジスタ88(図6)に供給する。他のセレクタ134〜136、比較器150〜152についても同じである。
【0111】
図9を参照するに、RAロック制御部114には、RAロックレジスタ178、196がそれぞれメモリアクセスパイプライン3,4に対応して設けられている。RAロックレジスタ178は、それぞれ4つのメモリバンクに対応する、それぞれ1ビットからなる4つのRAロックビットRL00〜03を有する。RAロックビットRL00〜03の第1の添字はメモリアクセスパイプラインの番号0を示し、第2の添字は対応するメモリバンクの物理バンクグループ物理バンク内メモリバンク番号を示す。各RAロックビット、例えば、RL00は、対応するメモリアクセスパイプライン0からのリクエストがメモリバンクBKa#0のローアドレスをロックしているか否かを示す値1または0を採る。RAロックレジスタ196についても同様である。
【0112】
プライオリティ制御部44(図6)のプライオリティ回路96により新たにリクエストが選択され、そのリクエストがリクエストレジスタ98(図6)にセットされると、リクエストレジスタ98からこの選択されたリクエストに含まれているそのリクエストのローアドレスロックビットRLがパス103を介して、RAロックレジスタ178の各フィールドに対応して設けられ、それぞれのセット入力に接続されたANDゲート162、164、166、168およびRAロックレジスタ198の各フィールドに対応して設けられ同様のANDゲート180、182、184、186に供給される。さらに、そのリクエストのローアドレスアンロックビットRULもパス103を介して、RAロックレジスタ178の各フィールドに対応して設けられ、それぞれのリセット入力に接続されたANDゲート163、165、167、169およびRAロックレジスタ198の各フィールドに対応して設けられ同様のANDゲート181、183、185、187に供給される。
【0113】
さらに、その選択されたリクエストのメモリアクセスパイプライン番号PL#がパス103を介してデコーダ154に供給される。デコーダ154は、この番号PL#が0のときには、パス159を介して、メモリアクセスパイプライン3に対応するRAロックレジスタ178に接続されたANDゲート162〜169に値1を供給する。同様に、番号PL#が1のときには、パス160を介して、メモリアクセスパイプライン4に対応するRAロックレジスタ196に接続されたANDゲート180〜187に値1を供給する。
【0114】
さらに、その選択されたリクエストの物理バンクグループ内バンク番号BKa#がパス102を介してデコーダ153に供給される。デコーダ153は、この番号BKa#が0、1、2、3のときには、それぞれパス155、156、157、158を介して、RAロックレジスタ178内のRAロックビットRL00、RL01、RL02、RL03に接続された一対のANDゲート162と163、164と165、166と167、168と169、およびRAロックレジスタ198内のRAロックビットRL10、RL11、RL12、RL13に接続された一対のANDゲート180と181、182と183、184と185、186と187に値1を供給する。
【0115】
こうして、RAロックレジスタ178内の各RAロックビット、例えば、RL00は、メモリアクセスパイプライン3からのリクエストがプライオリティ回路96において選択され、そのリクエストが物理バンクグループ内メモリバンク番号BKa#が「0」であるメモリバンクにアクセスするリクエストであって、そのリクエストのRAロックビットRLが「1」である場合にセットされる。また、このRAロックビットRL00は、メモリアクセスパイプライン3からのリクエストがプライオリティ回路96において選択され、そのリクエストが物理バンクグループ内メモリバンク番号BKa#が「0」であるメモリバンクにアクセスするリクエストであって、そのリクエストのRAアンロックビットRULが「1」である場合にリセットされる。
【0116】
RAロックレジスタ178内の他のRAロックレジスタRL01〜RL03およびRAロックレジスタ198内のRAロックビットについても同様である。セレクタ207または208は、メモリアクセスパイプライン3により発行され、パス48または49を介して供給される後続のリクエストがアクセスするメモリバンクが、他のメモリアクセスパイプライン4により発行され、すでに選択された先行するリクエストによりロック済みか否かを検出するためのものである。具体的には、メモリアクセスパイプライン4に対応して設けられたRAロックレジスタ196から、パス48または49により与えられた物理バンクグループ内メモリバンク番号BKa#に対応するロックビットを読み出し、それをRA変更禁止ビットRIとして、線80または81を介してリクエストレジスタ88、89(図6)に出力する。セレクタ205または206は、メモリアクセスパイプライン4により発行され、パス50または51を介して供給される後続のリクエストがアクセスするメモリバンクが、メモリアクセスパイプライン3により発行され、すでに選択された先行するリクエストによりロック済みか否かを検出するためのもので、セレクタ207、208と同様に動作する。
【0117】
(4E)バンクビジー管理部
図10を参照するに、バンクビジー管理部79では、バンクビジーカウンタ214は、対応する4つのメモリバンクに対してバンクビジータイムを保持するための、4つのフィールドBC0〜BC3を有する。プライオリティ制御部44(図6)のプライオリティ回路96により新たにリクエストが選択され、そのリクエストがリクエストレジスタ98にセットされると、リクエストレジスタ98から、この選択されたリクエストに含まれているローアドレスRA、リクエスト選択成功信号SS、物理バンクグループ内バンク番号BKa#とがそれぞれパス100、101、102を介してスイッチ209に供給される。スイッチ209は、バンクビジーカウンタ214内の、物理バンクグループ内バンク番号BKa#を有する一つのメモリバンクに対応するフィールドに、送信されたバンクビジータイムBTを書き込む。
【0118】
パス101のリクエスト選択成功信号SSは、スイッチ209に入力される。パス102のBG内メモリバンク番号(BKa#)は、スイッチ209の出力先選択信号として使用される。すなわち、パス102のBG内メモリバンク番号(BKa#)が「0」であれば、スイッチ209はリクエスト選択成功信号SSをバンクビジーカウンタ214のBC0の「E」で示したイネーブル入力に転送し、以下BG内メモリバンク番号(BKa#)が「1」、「2」、「3」の場合はそれぞれBC1,BC2,BC3のイネーブル入力(E)にリクエスト選択成功信号SSを転送する。また、パス104のバンクビジータイム(BT)は、バンクビジーカウンタ214のBC0〜BC3の「D」で示した全てのデータ入力に接続されている。
【0119】
これにより、リクエスト選択成功信号SSが「1」の場合にのみ、BG内メモリバンク番号(BKa#)で示されるバンクビジーカウンタ214内のBC0〜BC3に、パス104のバンクビジータイム(BT)を格納する。さらに、バンクビジーカウンタ214では各メモリバンクのバンクビジーカウンタBC0〜BC3を毎サイクルに1づつ減算する。もしBC0〜BC3の値が「0」である場合には減算は行わない。この処理により、各メモリバンクにおけるバンクビジータイムを記憶することができる。
【0120】
バンクビジーカウンタ214に記憶されたバンクビジータイムは、パス215〜218を介して、ORゲート(OR0〜OR3)219〜222に送られる。ORゲート(OR0〜OR3)219〜222では、バンクビジーカウンタ214内のそれぞれBC0〜BC3の全ビットをOR演算(論理和)し、そのOR結果をパス223〜226を介してセレクタ227〜230に送る。ORゲート(OR0〜OR3)219〜222においてBC0〜BC3の全ビットをORすることによって、BC0〜BC3の値が「0」である場合にのみパス223〜226に「0」を出力し、もしBC0〜BC3の値が「0」でない場合にはパス223〜226に「1」を出力する。これにより、パス223〜226を介してバンクビジー信号をセレクタ227〜230に送る。
【0121】
セレクタ227〜230では、それぞれパス48〜51を介して後続のリクエストのBG内メモリバンク番号(BKa#)のみを受け取り、セレクト信号とし、これらBG内メモリバンク番号(BKa#)に対応したバンクビジー信号を選択する。例えば、セレクタ227のセレクト信号であるパス48の示すBG内メモリバンク番号(BKa#)が「0」であれば、セレクタ227は、パス223を介して得られるバンクビジーカウンタ214のBC0をORゲート219でOR演算して得られるバンクビジー信号を選択する。以下同様に、セレクタ227は、パス48を介して得られるBG内メモリバンク番号(BKa#)が「1」,「2」,「3」の場合、それぞれBC1,BC2,BC3をOR演算して得られたバンクビジー信号224,225,226を選択する。
【0122】
セレクタ228〜230についても同様であり、パス49〜51を介して得られるBG内メモリバンク番号(BKa#)が「0」〜「3」のとき、それに対応してBC0〜BC3をOR演算して得られたバンクビジー信号223〜226を選択する。選択したバンクビジー信号BBはパス84〜87を介して、リクエストレジスタ88〜91に送る。
【0123】
本実施形態例によれば、連続して発行されるリクエストのRAを変更せずに済ませられる場合は、RAを変更せずにCAのみ変更してアクセスすることができるので、同期式DRAMのローアドレス固定モードを有効に利用することができる。また、RA変更禁止ビットRIを用いた制御を行っているので、RAを過度に変更することがない。
【0124】
なお、本発明は、同期式DRAMに限らず、これと同様に、ローアドレスを一度印加し、複数のカラムアドレスでもって連続してアクセスすることができる他のメモリ、例えば、キャッシュ付きDRAMにも適用できる。
【0125】
【発明の効果】
本発明によれば、同期式DRAM用いて構成した主記憶装置において、同期式DRAMの特徴であるローアドレス固定モードを有効に利用することができ、高いスループットを持つ主記憶装置が得られる。
【図面の簡単な説明】
【図1】本発明によるベクトルプロセッサの要部構成図。
【図2】図1のベクトルプロセッサの主記憶へのアドレス割り付けを示す図。
【図3】図1のベクトルプロセッサに用いるリクエスタのブロック図。
【図4】図1のベクトルプロセッサに用いる記憶制御部のブロック図。
【図5】図4の記憶制御部に用いるアドレスデコード部のブロック図。
【図6】図4の記憶制御部に用いるプライオリティ制御部のブロック図。
【図7】図6のプライオリティ制御部に用いるRA管理部のブロック図。
【図8】図7のRA管理部に用いるRA一致制御部の回路図。
【図9】図7のRA管理部に用いるRAロック制御部の回路図。
【図10】図6のプライオリティ制御部に用いるバンクビジー管理部の回路図。
【図11】図6のプライオリティ制御部に用いるプライオリティ回路の回路図。
【図12】図11のプライオリティ回路に用いるPL間プライオリティ管理部の回路図。
【図13】従来の同期式DRAMの、ローアドレス固定モードを使用した場合と使用しない場合のタイミングチャート図。
【図14】従来のインタリーブ方式により割り付けられるアドレスを示す図。
【図15】従来のブロックインタリーブ方式により割り付けられるアドレスを示す図。
【図16】図3のRL/RULビット生成部の概略回路図。
【符号の説明】
1…演算部(ALU)、2…ベクトルレジスタ部(VRU)、3,4…メモリアクセスパイプライン(PL0,PL1)、5…記憶制御部(SCU)、6…主記憶装置(MS)、7,8…ベクトルデータ制御モジュール(VDM0,VDM1)、9,10と11,12…ベクトルデータ制御部(VDC0,VDC1とVDC2,VDC3)。
Claims (11)
- 各々がN個(Nは2以上の整数)のメモリバンクからなるM個(Mは2以上の整数)の物理バンクグループに分けられた、複数のメモリバンクからなる記憶装置と、
該記憶装置に対するメモリアクセスリクエストをそれぞれ出力する複数のリクエスト回路と、
該記憶装置と該複数のリクエスト回路とに接続され、それぞれ該複数の物理バンクグループの一つに対応して設けられ、該複数のリクエスト回路から並列に出力される複数のメモリアクセス要求を調停して、該複数のメモリアクセス要求の一つを対応する物理バンクグループに転送するための複数のプライオリティ制御部とを有し、
各メモリバンクは、ローアドレスとカラムアドレスとでもってアクセスされる複数の記憶位置を有するメモリにより構成され、該メモリは、同じローアドレスを有し異なるカラムアドレスを有する一群の記憶位置を、該ローアドレスを一度印加し、該一群の記憶位置のカラムアドレスを連続して印加することにより連続してアクセス可能に構成され、
該複数のメモリバンクは、同一の物理バンクグループ内メモリバンク番号を持つM個のメモリバンクが同一の論理バンクグループに所属するように、それぞれM個のメモリバンクからなるN個の論理バンクグループに区分され、
それぞれM×L(Lは2以上の整数)個のアドレスからなる複数のアドレスブロックが、順次異なる論理グループに割り付けられ、各アドレスブロックに属するM×L個のアドレスは、そのアドレスブロックが割り付けられた論理グループに属するM個のメモリバンクの順次異なるものにインタリーブ方式に従って割り付けられ、その結果として、該論理グループに属するM個のメモリバンクの各々にはL個のアドレスが割り付けられ、
各メモリバンクに割り付けられた複数のアドレスの内、同一のアドレスブロックに属するL個のアドレスは、同一のローアドレスを有し、異なるカラムアドレスを有する複数の記憶位置に割り付けられているプロセッサシステム。 - 上記整数Lは、各メモリバンク内の、同一のローアドレスを有し、異なるカラムアドレスを有する一群の記憶位置の総数より小さく、
各メモリバンク内の、同一のローアドレスを有し、異なるカラムアドレスを有する上記一群の記憶位置は、第1のアドレスブロックに属するアドレスが割り付けられている複数の記憶位置と、少なくとも一つの他のアドレスブロックに属するアドレスが割り付けられている複数の記憶位置とを含む請求項1記載のプロセッサシステム。 - 上記整数Lは、各メモリバンク内の、同一のローアドレスを有し、異なるカラムアドレスを有する一群の記憶位置の総数の整数分の1に等しい請求項2記載のプロセッサシステム。
- 複数(N×M)個(N、Mは2以上の整数)のメモリバンクからなる記憶装置と、
それぞれ該記憶装置に対するメモリアクセスリクエストを出力する複数のリクエスト回路と、
各メモリバンクは、ローアドレスとカラムアドレスとでもってアクセスされる複数の記憶位置を有するメモリにより構成され、該メモリは、同じローアドレスを有し異なるカラムアドレスを有する一群の記憶位置を、該ローアドレスを一度印加し、それらの記憶位置のカラムアドレスを連続して印加することにより連続してアクセス可能に構成され、
該複数のメモリバンクは、それぞれM個のメモリバンクからなるN個の論理バンクグループに区分され、
それぞれM×L(Lは2以上の整数)個のアドレスからなる複数のアドレスブロックが、順次異なるN個の論理グループに割り付けられ、各アドレスブロックに属するM×L個のアドレスが、そのアドレスブロックが割り付けられた一つの論理グループに属するM個のメモリバンクの順次異なるものにインタリーブ方式に従って順次割り付けられ、結果としてその論理グループ内の各メモリバンクにはL個のアドレスが割り付けられ、
上記整数Lは、各メモリバンク内の、同一のローアドレスを有し、異なるカラムアドレスを有する一群の記憶位置の数より小さく、
各メモリバンク内の、同一のローアドレスを有し、異なるカラムアドレスを有する一群の記憶位置は、第1のアドレスブロックに属するアドレスが割り付けられている複数の記憶位置と、少なくとも一つの他のアドレスブロックに属するアドレスが割り付けられている複数の記憶位置とを含むプロセッサシステム。 - 上記整数Lは、各メモリバンク内の、同一のローアドレスを有し、異なるカラムアドレスを有する一群の記憶位置の総数の整数分の1に等しい請求項4記載のプロセッサシステム。
- 複数のメモリバンクからなる記憶装置と、
それぞれ該記憶装置に対する一群のメモリアクセスリクエストを出力する複数のリクエスト回路と、
該記憶装置と該複数のリクエスト回路とに接続され、該複数のリクエスト回路から並列に出力される複数のメモリアクセス要求を調停した後に、該複数のメモリバンクに転送するプライオリティ制御回路とを有し、
各メモリバンクは、ローアドレスとカラムアドレスとでもってアクセスされる複数の記憶位置を有するメモリにより構成され、該メモリは、同じローアドレスを有し異なるカラムアドレスを有する一群の記憶位置を、該ローアドレスを一度印加し、それらの記憶位置のカラムアドレスを連続して印加することにより連続してアクセス可能に構成され、
各リクエスト回路は、
一連のメモリアクセス要求を順次出力する回路と、
該複数のメモリバンクの一つ内の一つのローアドレスをロックすることを要求するロック要求を出力し、その一つのメモリバンクがロックされた後にその一つのメモリバンクのそのローアドレスをアンロックすることを要求するアンロック要求を出力するロック/アンロック要求回路とを有し、
該プライオリティ制御回路は、
該複数のリクエスト回路から並列に出力された複数のメモリアクセスリクエストの内、アクセスを許可すべき少なくとも一つのメモリアクセスリクエストを選択する回路と、
該複数のリクエスト回路の一つに含まれた上記ロック/アンロック要求回路から出力されたロック要求に応答して、そのロック要求が指定するメモリバンクのそのロック要求が指定するローアドレスが、そのリクエスト回路によりロックされたことを示す情報を記憶し、そのロック/アンロック要求回路からその後に出力されたアンロック要求に応答してそのメモリバンク内のそのローアドレスがアンロックされたことを示す情報を記憶するロック情報記憶装置と、
該複数のリクエスト回路により並列に出力された上記複数のメモリアクセスリクエストの各々が、そのメモリアクセスリクエストがアクセスするメモリバンクが、そのメモリアクセスリクエストを出力したリクエスト回路以外の他のリクエスト回路によりロックされているローアドレスを有するメモリバンクと一致するという第1の条件を満たすか否か、および、いずれかのメモリアクセスリクエストがその第1の条件を満たす場合に、そのメモリアクセスリクエストが指定するローアドレスが、当該他のリクエスト回路によりロックされているローアドレスと一致するという第2の条件を満たすか否かを、上記ロック情報記憶装置に記憶された情報により検出する回路と、
該複数のメモリアクセスリクエストに対する該検出回路による検出結果に依存して、該選択回路による選択を制御する回路とを有するプロセッサシステム。 - 上記制御回路は、いずれか一つのリクエスト回路より出力され、該第1の条件を満たし、該第2の条件を満たさないと該検出回路により検出された一つのメモリアクセスリクエストよりも、前記一つのメモリアクセスリクエストがアクセスしようとするメモリバンクをロックしているメモリアクセスリクエスト回路から出力されたメモリアクセスリクエストを優先して選択するように、上記選択回路を制御する回路を有する請求項6記載のプロセッサシステム。
- 上記制御回路は、いずれか一つのリクエスト回路より出力され、該第1の条件を満たし、該第2の条件を満たさないと該検出回路により検出された一つのメモリアクセスリクエストよりも、前記一つのメモリアクセスリクエストがアクセスしようとするメモリバンクをロックしているメモリアクセスリクエスト回路から出力されたもう一つのメモリアクセスリクエストを優先して選択するという動作を、その、ロックしているメモリアクセスリクエスト回路から出力された所定数のメモリアクセスリクエストが選択されるまで繰り返し、その後に、該一つのメモリアクセスリクエストを選択するように上記選択回路を制御する回路を有する請求項7記載のプロセッサシステム。
- 各リクエスト回路内の上記ロック/アンロック要求回路は、そのリクエスト回路が出力する一つの先行するメモリアクセスリクエストに付加してロック要求を出力し、そのリクエスト回路が出力する他の後続のメモリアクセスリクエストに付加してアンロック要求を出力する回路を有し、そのロック要求は、その先行するメモリアクセスリクエストが指定するメモリバンク内のその先行するメモリアクセスリクエストが指定するローアドレスのロックを要求し、そのアンロック要求は、その後続のメモリアクセスリクエストが指定するメモリバンク内のその後続のメモリアクセスリクエストが指定するローアドレスのアンロックを要求する請求項6記載のプロセッサシステム。
- 各リクエスト回路内の上記一連のメモリアクセス要求を順次出力する回路は、一連のアドレスをアクセスすることを要求する命令が指定するアクセス情報に応答して、一連のアドレスを有する一連の記憶位置をアクセスするための一連のメモリアクセスリクエストを順次出力する回路を有し、
各リクエスト回路内の上記ロック/アンロック要求回路は、上記一連のメモリアクセスリクエストの内、同一のメモリバンクをアクセスする複数のメモリアクセスリクエストの内の少なくとも最初のメモリアクセスリクエストに付加してロック要求を出力し、同一のメモリバンクをアクセスする該複数のメモリアクセスリクエストの内の最後のメモリアクセスリクエストに付加してアンロック要求を出力するように、上記命令が指定する上記情報に基づいて、上記一連のメモリアクセスリクエストの各々にロック要求とアンロック要求を付加するか否かを決定する回路を有する請求項8記載のプロセッサシステム。 - 上記一連のアドレスは、一定のアドレス間隔で隔たったアドレスである請求項10記載のプロセッサシステム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP12893896A JP3654608B2 (ja) | 1995-04-27 | 1996-04-25 | 同期式dramからなるメモリに適したアドレス割り付けとアドレスロック機能を有するプロセッサシステム |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP12712995 | 1995-04-27 | ||
JP7-127129 | 1995-04-27 | ||
JP12893896A JP3654608B2 (ja) | 1995-04-27 | 1996-04-25 | 同期式dramからなるメモリに適したアドレス割り付けとアドレスロック機能を有するプロセッサシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0916469A JPH0916469A (ja) | 1997-01-17 |
JP3654608B2 true JP3654608B2 (ja) | 2005-06-02 |
Family
ID=26463146
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP12893896A Expired - Fee Related JP3654608B2 (ja) | 1995-04-27 | 1996-04-25 | 同期式dramからなるメモリに適したアドレス割り付けとアドレスロック機能を有するプロセッサシステム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3654608B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6320812B1 (en) * | 2000-09-20 | 2001-11-20 | Agilent Technologies, Inc. | Error catch RAM for memory tester has SDRAM memory sets configurable for size and speed |
JP6237945B1 (ja) * | 2017-02-20 | 2017-11-29 | 日本電気株式会社 | メモリ制御装置 |
-
1996
- 1996-04-25 JP JP12893896A patent/JP3654608B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH0916469A (ja) | 1997-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5809539A (en) | Processor system having address allocation and address lock capability adapted for a memory comprised of synchronous DRAMs | |
US7360035B2 (en) | Atomic read/write support in a multi-module memory configuration | |
US6490655B1 (en) | Data processing apparatus and method for cache line replacement responsive to the operational state of memory | |
US5586294A (en) | Method for increased performance from a memory stream buffer by eliminating read-modify-write streams from history buffer | |
US6393512B1 (en) | Circuit and method for detecting bank conflicts in accessing adjacent banks | |
US5752260A (en) | High-speed, multiple-port, interleaved cache with arbitration of multiple access addresses | |
KR100679362B1 (ko) | 메모리 요청 재정렬에 의해 버스 이용도를 향상시키는메모리 제어기 | |
JP3323212B2 (ja) | データプレフェッチの方法およびその装置 | |
US5535361A (en) | Cache block replacement scheme based on directory control bit set/reset and hit/miss basis in a multiheading multiprocessor environment | |
CA2020275C (en) | Apparatus and method for reading, writing, and refreshing memory with direct virtual or physical access | |
WO1998040891A1 (en) | Dram with integral sram and systems and methods using the same | |
JP2002530731A (ja) | 異常メモリアクセスまたは異なる時間のメモリアクセス実行の際のデータバス上のデータ衝突を検出するための方法および装置 | |
JP2002530743A (ja) | ページタグレジスタを使用して、メモリデバイス内の物理ページの状態を追跡すること | |
CN101493796A (zh) | 存储器内、页面内目录高速缓存一致性配置 | |
US20020108019A1 (en) | Cache system with DMA capabilities and method for operating same | |
EP0901080B1 (en) | Arbitration system | |
JP2561261B2 (ja) | バッファ記憶アクセス方法 | |
US5452418A (en) | Method of using stream buffer to perform operation under normal operation mode and selectively switching to test mode to check data integrity during system operation | |
JP3654608B2 (ja) | 同期式dramからなるメモリに適したアドレス割り付けとアドレスロック機能を有するプロセッサシステム | |
JP4250989B2 (ja) | メモリアクセス制御装置 | |
JP3260456B2 (ja) | コンピュータシステムおよびそれに適した集積回路並びに要求選択回路 | |
US7003637B2 (en) | Disk array device with utilization of a dual-bus architecture dependent on data length of cache access requests | |
JP2004500608A (ja) | ユニバーサルリソースアクセスコントローラ | |
KR100334298B1 (ko) | 기억 소자 | |
US20090228659A1 (en) | Processor and computing system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040709 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20041213 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050214 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050228 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050228 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090311 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090311 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100311 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110311 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |