JPH09269935A - メモリ制御装置、及びメモリ制御方法 - Google Patents
メモリ制御装置、及びメモリ制御方法Info
- Publication number
- JPH09269935A JPH09269935A JP8250762A JP25076296A JPH09269935A JP H09269935 A JPH09269935 A JP H09269935A JP 8250762 A JP8250762 A JP 8250762A JP 25076296 A JP25076296 A JP 25076296A JP H09269935 A JPH09269935 A JP H09269935A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- synchronization
- memory
- management table
- entry
- 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.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 317
- 238000000034 method Methods 0.000 title claims abstract description 56
- 230000001360 synchronised effect Effects 0.000 claims abstract description 14
- 230000006870 function Effects 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 16
- 238000007726 management method Methods 0.000 description 13
- 239000000872 buffer Substances 0.000 description 4
- 230000001427 coherent effect Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- COCAUCFPFHUGAA-MGNBDDOMSA-N n-[3-[(1s,7s)-5-amino-4-thia-6-azabicyclo[5.1.0]oct-5-en-7-yl]-4-fluorophenyl]-5-chloropyridine-2-carboxamide Chemical compound C=1C=C(F)C([C@@]23N=C(SCC[C@@H]2C3)N)=CC=1NC(=O)C1=CC=C(Cl)C=N1 COCAUCFPFHUGAA-MGNBDDOMSA-N 0.000 description 1
Landscapes
- Multi Processors (AREA)
Abstract
(57)【要約】
【課題】本発明は、マルチプロセッサ方式のコンピュー
タシステムにおいて、メモリのアクセス命令を同期化す
る際のオーバーヘッドを低減することの可能なメモリ制
御装置、及びメモリ制御方法を提供することを課題とす
る。 【解決手段】マルチプロセッサ方式のコンピュータシス
テムに設けられたメモリコントローラ10は、メモリの
アクセスオペレーションの進行(アクセス命令の動作状
況)を管理するためのスコアボード11を有し、実行優
先順位の高い同期化を実行するときのオーバーヘッドを
低減する。スコアボード11は、受付けたアクセス命令
のオペレーションコードとアドレス以外に、同期化の受
付けに応じてセットされる同期化フラグを保持する。メ
モリコントローラ10は、プロセッサ1からの同期化指
示を受付けた時点で同期化フラグをセットし、同期化オ
ペレーションの実行完了後に同期化フラグをリセットす
る。
タシステムにおいて、メモリのアクセス命令を同期化す
る際のオーバーヘッドを低減することの可能なメモリ制
御装置、及びメモリ制御方法を提供することを課題とす
る。 【解決手段】マルチプロセッサ方式のコンピュータシス
テムに設けられたメモリコントローラ10は、メモリの
アクセスオペレーションの進行(アクセス命令の動作状
況)を管理するためのスコアボード11を有し、実行優
先順位の高い同期化を実行するときのオーバーヘッドを
低減する。スコアボード11は、受付けたアクセス命令
のオペレーションコードとアドレス以外に、同期化の受
付けに応じてセットされる同期化フラグを保持する。メ
モリコントローラ10は、プロセッサ1からの同期化指
示を受付けた時点で同期化フラグをセットし、同期化オ
ペレーションの実行完了後に同期化フラグをリセットす
る。
Description
【0001】
【発明の属する技術分野】本発明は、マルチプロセッサ
方式のコンピュータシステムに適用されるメモリ制御装
置、及びその方法に関し、特に、メモリバンク方式で格
納されるデータを同期化するメモリ制御装置、及びメモ
リ制御方法に関する。
方式のコンピュータシステムに適用されるメモリ制御装
置、及びその方法に関し、特に、メモリバンク方式で格
納されるデータを同期化するメモリ制御装置、及びメモ
リ制御方法に関する。
【0002】
【従来の技術】従来、マルチプロセッサ方式のコンピュ
ータシステムには、メモリバンク方式の共用メインメモ
リを管理・制御するメモリ制御装置として、非プログラ
ム順序(out of order)で、またはwea
kly orderでアクセス命令(データとアドレス
を含む)を実行するメモリコントローラが設けられてい
る。
ータシステムには、メモリバンク方式の共用メインメモ
リを管理・制御するメモリ制御装置として、非プログラ
ム順序(out of order)で、またはwea
kly orderでアクセス命令(データとアドレス
を含む)を実行するメモリコントローラが設けられてい
る。
【0003】このメモリコントローラは、独立した記憶
領域に相当する各バンクメモリを独立して制御する機能
を有すると共に、weakly orderの同期化を
一時的にstrong orderで同期化する機能を
備えている。この同期化オペレーションに対応する方式
として、大別して以下の方式がある。
領域に相当する各バンクメモリを独立して制御する機能
を有すると共に、weakly orderの同期化を
一時的にstrong orderで同期化する機能を
備えている。この同期化オペレーションに対応する方式
として、大別して以下の方式がある。
【0004】先ず、第1の方式は、プロセッサから発行
されたアクセス命令の中で、アドレスオペレーション用
に、FIFO(First In First Ou
t)機能のバッファメモリを使用し、アドレスオペレー
ションを受付けた順番にアクセス命令を実行する方式で
ある。ここでは、アドレスバスとデータバスとが分離さ
れたシステムが想定されており、アドレスオペレーショ
ンとはアドレスバスのオペレーションである。
されたアクセス命令の中で、アドレスオペレーション用
に、FIFO(First In First Ou
t)機能のバッファメモリを使用し、アドレスオペレー
ションを受付けた順番にアクセス命令を実行する方式で
ある。ここでは、アドレスバスとデータバスとが分離さ
れたシステムが想定されており、アドレスオペレーショ
ンとはアドレスバスのオペレーションである。
【0005】第2の方式は、メモリの独立制御範囲の単
位(バンクメモリ単位)に、スコアボードと称するオペ
レーションの進行(アクセス命令の動作状況)を管理す
る管理テーブルを設ける方式である。この方式では、同
期化オペレーションが実行されると、それ以前のオペレ
ーションの処理が終了するまで、アドレスオペレーショ
ンの受付を拒否する。即ち、後続のオペレーションをリ
トライすることによって同期化処理を保証する。
位(バンクメモリ単位)に、スコアボードと称するオペ
レーションの進行(アクセス命令の動作状況)を管理す
る管理テーブルを設ける方式である。この方式では、同
期化オペレーションが実行されると、それ以前のオペレ
ーションの処理が終了するまで、アドレスオペレーショ
ンの受付を拒否する。即ち、後続のオペレーションをリ
トライすることによって同期化処理を保証する。
【0006】この第2の方式は、前記の第1の方式と比
較して、ライトオペレーション(メモリのライトアクセ
ス動作)の後に実行されるリードオペレーション(リー
ドアクセス動作)のレイテンシを小さくし、かつメモリ
の使用効率を高くできるため、実使用状態でのシステム
のスループットを向上できる。
較して、ライトオペレーション(メモリのライトアクセ
ス動作)の後に実行されるリードオペレーション(リー
ドアクセス動作)のレイテンシを小さくし、かつメモリ
の使用効率を高くできるため、実使用状態でのシステム
のスループットを向上できる。
【0007】
【発明が解決しようとする課題】しかし、前述の従来の
方式では、以下のような問題点がある。第1の方式は、
アドレスオペレーションをFIFO機能のバッファメモ
リを使用することにより、同期化オペレーションの実行
を保証することができる。しかしながら、システム上に
おいて、データオペレーション(データバスのオペレー
ション)がアドレスオペレーションの順番で実行される
とは限らない。このため、データオペレーションの未完
了により、アドレスオペレーション用FIFOバッファ
が全て使用されている状況が発生し、結果としてアドレ
スオペレーションの受付を拒否する(リトライする)状
況が発生しやすい。また、先行するライトオペレーショ
ン用のデータ転送が終了しない場合に、後続の全てのリ
ードオペレーションが実行できず、リードオペレーショ
ンのレイテンシが大きくなるという欠点がある。
方式では、以下のような問題点がある。第1の方式は、
アドレスオペレーションをFIFO機能のバッファメモ
リを使用することにより、同期化オペレーションの実行
を保証することができる。しかしながら、システム上に
おいて、データオペレーション(データバスのオペレー
ション)がアドレスオペレーションの順番で実行される
とは限らない。このため、データオペレーションの未完
了により、アドレスオペレーション用FIFOバッファ
が全て使用されている状況が発生し、結果としてアドレ
スオペレーションの受付を拒否する(リトライする)状
況が発生しやすい。また、先行するライトオペレーショ
ン用のデータ転送が終了しない場合に、後続の全てのリ
ードオペレーションが実行できず、リードオペレーショ
ンのレイテンシが大きくなるという欠点がある。
【0008】一方、第2の方式は、管理テーブルにより
オペレーションの動作状況を管理できるため、結果的に
非プログラム順序(out of order)で、ま
たはweak orderでメモリのアクセス動作が可
能となる。しかし、一度同期化されると、以前のオペレ
ーションが終了するまで、後続オペレーション(または
同期化条件に該当するもの)を実行することができない
ため、同期化処理でのシステムのオーバーヘッドが大き
くなる問題があった。
オペレーションの動作状況を管理できるため、結果的に
非プログラム順序(out of order)で、ま
たはweak orderでメモリのアクセス動作が可
能となる。しかし、一度同期化されると、以前のオペレ
ーションが終了するまで、後続オペレーション(または
同期化条件に該当するもの)を実行することができない
ため、同期化処理でのシステムのオーバーヘッドが大き
くなる問題があった。
【0009】そこで、本発明は上記事情を考慮して成さ
れたもので、上記不具合を解消し、マルチプロセッサ方
式のコンピュータシステムにおいて、メモリのアクセス
命令を同期化する際のオーバーヘッドを低減することの
可能なメモリ制御装置、及びメモリ制御方法を提供する
ことを目的とする。
れたもので、上記不具合を解消し、マルチプロセッサ方
式のコンピュータシステムにおいて、メモリのアクセス
命令を同期化する際のオーバーヘッドを低減することの
可能なメモリ制御装置、及びメモリ制御方法を提供する
ことを目的とする。
【0010】
【課題を解決するための手段】本発明は、上記目的を達
成するため、この発明は、特にマルチプロセッサ方式の
コンピュータシステムに適用するメモリコントローラで
あって、メモリのアクセスオペレーションの進行(アク
セス命令の動作状況)を管理するための管理テーブルを
有する方式であり、これにより、実行優先順位の高い同
期化オペレーションを実行するときのオーバーヘッドを
低減する。
成するため、この発明は、特にマルチプロセッサ方式の
コンピュータシステムに適用するメモリコントローラで
あって、メモリのアクセスオペレーションの進行(アク
セス命令の動作状況)を管理するための管理テーブルを
有する方式であり、これにより、実行優先順位の高い同
期化オペレーションを実行するときのオーバーヘッドを
低減する。
【0011】管理テーブルは、受付けたアクセス命令の
オペレーションコードとアドレス以外に、同期化オペレ
ーションの受付けに応じてセットする同期化フラグを保
持する。メモリコントローラは、プロセッサからのアク
セスオペレーションを受付けると管理テーブルにオペレ
ーションコードとアドレスの設定と共に同期化フラグを
リセットする。そして、同期化オペレーションを受付け
た時点で同期化フラグをセットし、同期化オペレーショ
ンの実行完了後に同期化フラグをリセットする。このよ
うな方式により、同期化オペレーションの実行時に、後
続のオペレーションを見掛け上受付けることが可能とな
り、オペレーションの要求元に対してリトライすること
を防ぐことができるため、システムのオーバーヘッドを
低減することができる。
オペレーションコードとアドレス以外に、同期化オペレ
ーションの受付けに応じてセットする同期化フラグを保
持する。メモリコントローラは、プロセッサからのアク
セスオペレーションを受付けると管理テーブルにオペレ
ーションコードとアドレスの設定と共に同期化フラグを
リセットする。そして、同期化オペレーションを受付け
た時点で同期化フラグをセットし、同期化オペレーショ
ンの実行完了後に同期化フラグをリセットする。このよ
うな方式により、同期化オペレーションの実行時に、後
続のオペレーションを見掛け上受付けることが可能とな
り、オペレーションの要求元に対してリトライすること
を防ぐことができるため、システムのオーバーヘッドを
低減することができる。
【0012】また、本発明は、メモリバンク方式のよう
に独立制御可能な複数の記憶領域を有するメモリを制御
するメモリコントローラに適用する。管理テーブルは、
各記憶領域(各バンクメモリ)毎に用意されており、そ
れぞれのオペレーションの進行状況を示し、各オペレー
ションの実行可能条件を保持する。さらに、管理テーブ
ルは、同期化オペレーションの実行以前に実行されたオ
ペレーションと、以後に実行されたオペレーションとを
識別するための同期化フラグのエントリを有する。この
管理テーブルにより、同期化オペレーションの実行以前
のオペレーションの完了を管理し、同期化オペレーショ
ンの実行が完了する以前でも後続オペレーションの受付
を可能として、リトライすることを防ぐことができる。
尚、同期化オペレーションの実行完了以前には、後続の
同期化オペレーションの要求に対しては受付けを拒否
し、リトライすることになる。
に独立制御可能な複数の記憶領域を有するメモリを制御
するメモリコントローラに適用する。管理テーブルは、
各記憶領域(各バンクメモリ)毎に用意されており、そ
れぞれのオペレーションの進行状況を示し、各オペレー
ションの実行可能条件を保持する。さらに、管理テーブ
ルは、同期化オペレーションの実行以前に実行されたオ
ペレーションと、以後に実行されたオペレーションとを
識別するための同期化フラグのエントリを有する。この
管理テーブルにより、同期化オペレーションの実行以前
のオペレーションの完了を管理し、同期化オペレーショ
ンの実行が完了する以前でも後続オペレーションの受付
を可能として、リトライすることを防ぐことができる。
尚、同期化オペレーションの実行完了以前には、後続の
同期化オペレーションの要求に対しては受付けを拒否
し、リトライすることになる。
【0013】
【発明の実施の形態】以下、図面を参照して本発明の一
実施の形態を説明する。
実施の形態を説明する。
【0014】(第1実施形態)図1は本発明の一実施の
形態に係わるコンピュータシステムのシステム構成を示
すブロック図であり、図2は同実施の形態に係わるスコ
アボードの構成を説明するための概念図であり、図3は
同実施形態に関係するメモリコントローラの構成を示す
ブロック図であり、図4は同実施形態の動作を説明する
ためのフローチャートである。
形態に係わるコンピュータシステムのシステム構成を示
すブロック図であり、図2は同実施の形態に係わるスコ
アボードの構成を説明するための概念図であり、図3は
同実施形態に関係するメモリコントローラの構成を示す
ブロック図であり、図4は同実施形態の動作を説明する
ためのフローチャートである。
【0015】システム構成は以下の通りである。すなわ
ち、本システムは、図1に示すように、複数のプロセッ
サ1を有するマルチプロセッサ方式のコンピュータシス
テムであり、共用のメインメモリとして複数のバンクメ
モリBM0〜BM3からなるメモリバンク構成のメモリ
を備えている。
ち、本システムは、図1に示すように、複数のプロセッ
サ1を有するマルチプロセッサ方式のコンピュータシス
テムであり、共用のメインメモリとして複数のバンクメ
モリBM0〜BM3からなるメモリバンク構成のメモリ
を備えている。
【0016】各プロセッサ1は、プロセッサバス2に接
続されたバスインターフェースユニット3を介して、メ
モリコントローラ10に対してアクセス命令を発行す
る。プロセッサバス2は、データバス2Aとアドレスバ
ス2Bに分離された構成である。プロセッサバス2に
は、ハードディスク装置(HDD)5やLANインター
フェース6と接続するI/Oコントローラ4が接続され
ている。
続されたバスインターフェースユニット3を介して、メ
モリコントローラ10に対してアクセス命令を発行す
る。プロセッサバス2は、データバス2Aとアドレスバ
ス2Bに分離された構成である。プロセッサバス2に
は、ハードディスク装置(HDD)5やLANインター
フェース6と接続するI/Oコントローラ4が接続され
ている。
【0017】バスインターフェースユニット3は、プロ
セッサ1からメモリアクセス命令を受取ると、メモリコ
ントローラ10に転送する。メモリコントローラ10
は、バンクメモリBM0〜BM3毎に、アクセス命令に
対応するアクセス動作(アクセスオペレーション)を管
理するためのスコアボード(管理テーブル)11および
同期化完了テーブル12を有し、バンクメモリBM0〜
BM3のそれぞれを独立の制御範囲の記憶領域として制
御する4ウェイ(way)インターリーブ機能を備えて
いる。
セッサ1からメモリアクセス命令を受取ると、メモリコ
ントローラ10に転送する。メモリコントローラ10
は、バンクメモリBM0〜BM3毎に、アクセス命令に
対応するアクセス動作(アクセスオペレーション)を管
理するためのスコアボード(管理テーブル)11および
同期化完了テーブル12を有し、バンクメモリBM0〜
BM3のそれぞれを独立の制御範囲の記憶領域として制
御する4ウェイ(way)インターリーブ機能を備えて
いる。
【0018】次に、スコアボードの構成を以下に説明す
る。すなわち、メモリコントローラ10は、図2に示す
ように、管理テーブルであるスコアボード11と同期化
完了テーブル12とを備えている。スコアボード11
は、独立の制御範囲単位である記憶領域をバンクメモリ
と想定した場合に、複数のバンクメモリBM0〜BM3
毎に設けられている。なお、バンクメモリBM0〜BM
3のそれぞれに対応して記憶領域0〜記憶領域3と表記
する場合がある。
る。すなわち、メモリコントローラ10は、図2に示す
ように、管理テーブルであるスコアボード11と同期化
完了テーブル12とを備えている。スコアボード11
は、独立の制御範囲単位である記憶領域をバンクメモリ
と想定した場合に、複数のバンクメモリBM0〜BM3
毎に設けられている。なお、バンクメモリBM0〜BM
3のそれぞれに対応して記憶領域0〜記憶領域3と表記
する場合がある。
【0019】スコアボード11はオペレーションの進行
状況(アクセス命令の動作状況)を示し、かつ各オペレ
ーションの実行可能条件を示すテーブルである。スコア
ボード11は、後述するように、同期化オペレーション
の実行以前に実行されたオペレーションと、その実行以
後に実行されたオペレーションとを識別するための同期
化フラグ(SYNCフラグ)のエントリを有する。ま
た、同期化完了テーブル12は、各記憶領域0〜3で同
期化オペレーションが完了したか否かを示すテーブル
(SYNC完了)である。
状況(アクセス命令の動作状況)を示し、かつ各オペレ
ーションの実行可能条件を示すテーブルである。スコア
ボード11は、後述するように、同期化オペレーション
の実行以前に実行されたオペレーションと、その実行以
後に実行されたオペレーションとを識別するための同期
化フラグ(SYNCフラグ)のエントリを有する。ま
た、同期化完了テーブル12は、各記憶領域0〜3で同
期化オペレーションが完了したか否かを示すテーブル
(SYNC完了)である。
【0020】この実施形態のスコアボード11は、メモ
リは4つの独立した記憶領域0〜3に対応するスコアボ
ード100,110,120,130からなり、それぞ
れエントリ番号(No)102、オペレーションコード
103、アドレス104、オペレーションの完了を示す
完了フラグ105、オペレーションの発行が可能である
ことを示すフラグ106、エントリが有効であることを
示す有効フラグ107、および同期化フラグ(SYNC
フラグ)101を有する。
リは4つの独立した記憶領域0〜3に対応するスコアボ
ード100,110,120,130からなり、それぞ
れエントリ番号(No)102、オペレーションコード
103、アドレス104、オペレーションの完了を示す
完了フラグ105、オペレーションの発行が可能である
ことを示すフラグ106、エントリが有効であることを
示す有効フラグ107、および同期化フラグ(SYNC
フラグ)101を有する。
【0021】エントリ番号102は、スコアボード内の
エントリの識別に使用される。オペレーションコード1
03は、プロセッサ1から要求されるオペレーションの
種類(例えばReadはリード動作、Writeはライ
ト動作を意味する)を保持するためのエントリである。
アドレス104はアクセス対象のメモリアドレスを保持
するエントリである。完了フラグ105はオペレーショ
ンの発行が完了したことを示す。有効フラグ107は、
対応するエントリが有効な場合にフラグV(Vali
d)がセットされて、無効ならばフラグI(Inval
id)がセットされる。換言すれば、フラグVのエント
リは将来発行されるものであり、フラグIのエントリは
発行されない空のエントリであることを意味する。
エントリの識別に使用される。オペレーションコード1
03は、プロセッサ1から要求されるオペレーションの
種類(例えばReadはリード動作、Writeはライ
ト動作を意味する)を保持するためのエントリである。
アドレス104はアクセス対象のメモリアドレスを保持
するエントリである。完了フラグ105はオペレーショ
ンの発行が完了したことを示す。有効フラグ107は、
対応するエントリが有効な場合にフラグV(Vali
d)がセットされて、無効ならばフラグI(Inval
id)がセットされる。換言すれば、フラグVのエント
リは将来発行されるものであり、フラグIのエントリは
発行されない空のエントリであることを意味する。
【0022】また、各スコアボード毎に設けられたバン
ク実行ユニット(記憶領域0では108)は、該当する
スコアボードから選択されたエントリのアドレス、オペ
レーションからバンクメモリを構成するDRAM(ダイ
ナミックRAM)アドレスやRAS,CAS等のメモリ
制御信号を生成すると、共に、後述するエントリの発行
等の処理を行う。又、各スコアボード100,110,
120,130のバンク実行ユニット108,118,
128,138は、同期化完了テーブルに接続されてい
る。
ク実行ユニット(記憶領域0では108)は、該当する
スコアボードから選択されたエントリのアドレス、オペ
レーションからバンクメモリを構成するDRAM(ダイ
ナミックRAM)アドレスやRAS,CAS等のメモリ
制御信号を生成すると、共に、後述するエントリの発行
等の処理を行う。又、各スコアボード100,110,
120,130のバンク実行ユニット108,118,
128,138は、同期化完了テーブルに接続されてい
る。
【0023】同期化フラグ(SYNCフラグ)は、通常
では“0”がセット(リセット)されている。また、同
期化完了テーブル12は独立した記憶領域0〜3毎に、
同期化完了フラグ(SYNC完了)が設けられて、通常
では完了を意味する“0”がセットされている。
では“0”がセット(リセット)されている。また、同
期化完了テーブル12は独立した記憶領域0〜3毎に、
同期化完了フラグ(SYNC完了)が設けられて、通常
では完了を意味する“0”がセットされている。
【0024】メモリコントローラ10は、プロセッサ1
からの同期化オペレーションを受取ると、スコアボード
100,110,120,130に登録されている全て
の有効なエントリの同期化フラグを“1”にセットし、
無効なエントリに対しては同期化フラグ“0”を維持す
る。この時点で、有効なエントリのある記憶領域に対す
る同期化完了テーブル12の同期化完了フラグを“1”
にセットし、有効なエントリのない(即ち、実行待ちの
オペレーションが存在しない)記憶領域に対する同期化
完了フラグについては“0”に維持する。
からの同期化オペレーションを受取ると、スコアボード
100,110,120,130に登録されている全て
の有効なエントリの同期化フラグを“1”にセットし、
無効なエントリに対しては同期化フラグ“0”を維持す
る。この時点で、有効なエントリのある記憶領域に対す
る同期化完了テーブル12の同期化完了フラグを“1”
にセットし、有効なエントリのない(即ち、実行待ちの
オペレーションが存在しない)記憶領域に対する同期化
完了フラグについては“0”に維持する。
【0025】さらに、同期化以外の後続のオペレーショ
ンを受付けると、スコアボードの同期化フラグには
“0”にセットして登録し、同期化オペレーション以前
のオペレーションとは区別する。同期化完了テーブル1
2の同期化完了フラグは、対応する記憶領域に同期化フ
ラグとして“1”がセットされたオペレーションがなく
なった時点で“0”にセットされる。スコアボードは、
各記憶領域に対する同期化完了テーブル12の同期化完
了フラグの少なくとも一つが“1”である間は、同期化
フラグが“1”のオペレーションのみに実行許可を出
し、同期化処理を保証する。
ンを受付けると、スコアボードの同期化フラグには
“0”にセットして登録し、同期化オペレーション以前
のオペレーションとは区別する。同期化完了テーブル1
2の同期化完了フラグは、対応する記憶領域に同期化フ
ラグとして“1”がセットされたオペレーションがなく
なった時点で“0”にセットされる。スコアボードは、
各記憶領域に対する同期化完了テーブル12の同期化完
了フラグの少なくとも一つが“1”である間は、同期化
フラグが“1”のオペレーションのみに実行許可を出
し、同期化処理を保証する。
【0026】以下、図3およびと図4を参照して、第1
実施形態の動作の概略を説明する。
実施形態の動作の概略を説明する。
【0027】前述したように、この実施形態のメモリコ
ントローラ10は、4記憶領域0〜3に相当するバンク
メモリBM0〜BM3に対して4Wayインターリーブ
機能により制御している。メモリコントローラ10は、
図3に示すように、バンクメモリBM0〜BM3毎に実
行ユニット108,118,128,138および実行
ユニットを制御するスコアボード100,110,12
0,130を独立して備えている。ここで、図3では、
スコアボード100,110,120,130におい
て、有効フラグは「Val」、「発行可能フラグ」は
「En」、同期化フラグは「Sync」と表記する。
ントローラ10は、4記憶領域0〜3に相当するバンク
メモリBM0〜BM3に対して4Wayインターリーブ
機能により制御している。メモリコントローラ10は、
図3に示すように、バンクメモリBM0〜BM3毎に実
行ユニット108,118,128,138および実行
ユニットを制御するスコアボード100,110,12
0,130を独立して備えている。ここで、図3では、
スコアボード100,110,120,130におい
て、有効フラグは「Val」、「発行可能フラグ」は
「En」、同期化フラグは「Sync」と表記する。
【0028】図4に示すように、バスインタフェースユ
ニット3は、プロセッサバス2からメモリアクセス命令
を受取ると、メモリコントローラ10に転送する(ステ
ップS1)。メモリコントローラ10は、記憶領域0〜
3に対するメモリアクセスオペレーションを受付ける
と、該当するスコアボードのエントリに登録する(ステ
ップS2)。
ニット3は、プロセッサバス2からメモリアクセス命令
を受取ると、メモリコントローラ10に転送する(ステ
ップS1)。メモリコントローラ10は、記憶領域0〜
3に対するメモリアクセスオペレーションを受付ける
と、該当するスコアボードのエントリに登録する(ステ
ップS2)。
【0029】ここで、この第1実施形態では図3に示す
ように、メモリアドレスを4バイト単位のバンクメモリ
BM0〜BM3に分割している。即ち、バンクメモリB
M0〜BM3に対して、それぞれアドレスのLSB側4
bitが(0,4,8,c)から始まる4バイト単位の
記憶領域を割り当てる。便宜的に、各スコアボードに登
録できるエントリ数を4とする。
ように、メモリアドレスを4バイト単位のバンクメモリ
BM0〜BM3に分割している。即ち、バンクメモリB
M0〜BM3に対して、それぞれアドレスのLSB側4
bitが(0,4,8,c)から始まる4バイト単位の
記憶領域を割り当てる。便宜的に、各スコアボードに登
録できるエントリ数を4とする。
【0030】コントローラ10は、アクセスオペレーシ
ョンをエントリに登録する時点で、各スコアボードの同
期化フラグを“0”にセットする(ステップS3)。こ
のとき、同期化オペレーションを受付けると、その時点
で有効なエントリの同期化フラグを“1”にセットする
(ステップS4,S5)。即ち、同期化フラグが“1”
であるエントリは、同期化オペレーションの発行以前に
登録されたエントリであり、同期化フラグが“0”のエ
ントリより先行して実行されることを示す。
ョンをエントリに登録する時点で、各スコアボードの同
期化フラグを“0”にセットする(ステップS3)。こ
のとき、同期化オペレーションを受付けると、その時点
で有効なエントリの同期化フラグを“1”にセットする
(ステップS4,S5)。即ち、同期化フラグが“1”
であるエントリは、同期化オペレーションの発行以前に
登録されたエントリであり、同期化フラグが“0”のエ
ントリより先行して実行されることを示す。
【0031】図3は、バンクBM0のスコアボード10
0には2つ、バンクBM1のスコアボード110には1
つ、バンクBM2およびバンクBM3の各スコアボード
120,130には有効なエントリ(有効フラグVal
が“V”のエントリ)がない状態で同期化オペレーショ
ンを受付けた場合の例を示している。即ち、スコアボー
ド100,110において、有効フラグValが“V”
であるエントリの同期化フラグ(Sync)が“0”か
ら“1”に変化し、かつ有効フラグValが“I”であ
るエントリの同期化フラグ(Sync)は“0”を維持
する(変化しない)。
0には2つ、バンクBM1のスコアボード110には1
つ、バンクBM2およびバンクBM3の各スコアボード
120,130には有効なエントリ(有効フラグVal
が“V”のエントリ)がない状態で同期化オペレーショ
ンを受付けた場合の例を示している。即ち、スコアボー
ド100,110において、有効フラグValが“V”
であるエントリの同期化フラグ(Sync)が“0”か
ら“1”に変化し、かつ有効フラグValが“I”であ
るエントリの同期化フラグ(Sync)は“0”を維持
する(変化しない)。
【0032】これと同時に、同期化完了テーブル12の
各記憶領域0〜3に対応する同期化完了フラグ(SYN
C完了)の中で、有効なエントリがある記憶領域0(バ
ンクBM0)および記憶領域1(バンクBM1)に対応
する値が“0”から“1”に変化し、有効なエントリが
ない記憶領域2(バンクBM2)および記憶領域3(バ
ンクBM3)に対応する値は“0”のまま変化しない。
各記憶領域0〜3に対応する同期化完了フラグ(SYN
C完了)の中で、有効なエントリがある記憶領域0(バ
ンクBM0)および記憶領域1(バンクBM1)に対応
する値が“0”から“1”に変化し、有効なエントリが
ない記憶領域2(バンクBM2)および記憶領域3(バ
ンクBM3)に対応する値は“0”のまま変化しない。
【0033】さらに、スコアボード100,110にお
いて、バンクBM0のエントリ番号1とバンクBM1の
エントリ番号0が、発行可能フラグEnがイネーブル
(Yes)、即ち実行可能であるため、各実行ユニット
E0,E1はビジーが解除されると、それぞれのアドレ
スに対するオペレーション(リードアクセス)を実行す
る(ステップS6,S7)。
いて、バンクBM0のエントリ番号1とバンクBM1の
エントリ番号0が、発行可能フラグEnがイネーブル
(Yes)、即ち実行可能であるため、各実行ユニット
E0,E1はビジーが解除されると、それぞれのアドレ
スに対するオペレーション(リードアクセス)を実行す
る(ステップS6,S7)。
【0034】コントローラ10は、実行ユニットE0,
E1のアクセスオペレーションが完了すると、発行可能
フラグEnと同期化フラグを“No”または“0”にリ
セットする(ステップS8,S9)。このとき、バンク
BM1に対応するスコアボード110には同期化フラグ
が“1”にセットされたエントリは無くなるため、同期
化完了テーブル12の該当する同期化完了フラグも
“0”にリセットされる。
E1のアクセスオペレーションが完了すると、発行可能
フラグEnと同期化フラグを“No”または“0”にリ
セットする(ステップS8,S9)。このとき、バンク
BM1に対応するスコアボード110には同期化フラグ
が“1”にセットされたエントリは無くなるため、同期
化完了テーブル12の該当する同期化完了フラグも
“0”にリセットされる。
【0035】また、後続のメモリアクセスオペレーショ
ンの要求があると、アクセス命令に対応する記憶領域の
スコアボードには、同期化フラグが“0”の状態で登録
される。即ち、新たな後続のオペレーションは、同期化
オペレーションの以前に同期化フラグが“1”にセット
された同期化オペレーションとは区別される。また、図
3に示す状態において、2回目の同期化オペレーション
の要求があると、同期化完了テーブル12には同期化完
了フラグが“0”でないエントリ(記憶領域0,1)が
あるので、2回目の同期化オペレーションの受付けは拒
否されてリトライされる。なお、同期化フラグが全て
“0”であれば、同期化オペレーションは完了している
ことがわかるので、同期化完了テーブル12を省略して
もよい。
ンの要求があると、アクセス命令に対応する記憶領域の
スコアボードには、同期化フラグが“0”の状態で登録
される。即ち、新たな後続のオペレーションは、同期化
オペレーションの以前に同期化フラグが“1”にセット
された同期化オペレーションとは区別される。また、図
3に示す状態において、2回目の同期化オペレーション
の要求があると、同期化完了テーブル12には同期化完
了フラグが“0”でないエントリ(記憶領域0,1)が
あるので、2回目の同期化オペレーションの受付けは拒
否されてリトライされる。なお、同期化フラグが全て
“0”であれば、同期化オペレーションは完了している
ことがわかるので、同期化完了テーブル12を省略して
もよい。
【0036】次に、前述した第1実施形態の動作をより
詳細に説明する。
詳細に説明する。
【0037】先ず、第1実施形態において、メモリアク
セス命令がCPU1により発行された場合の処理を図5
を参照して説明する。
セス命令がCPU1により発行された場合の処理を図5
を参照して説明する。
【0038】CPU1により発行されたメモリアクセス
命令は、バス2を介してバスインターフェースユニット
3に送られる。バスインターフェースユニット3は、受
け取ったメモリアクセス命令をメモリコントローラ10
に転送する(ステップS11)。
命令は、バス2を介してバスインターフェースユニット
3に送られる。バスインターフェースユニット3は、受
け取ったメモリアクセス命令をメモリコントローラ10
に転送する(ステップS11)。
【0039】メモリコントローラ10は、受け取ったメ
モリアクセス命令が同期化命令以外のメモリアクセス命
令である場合、受け取ったメモリアクセス命令のアドレ
スに基づいて、スコアボード100,110,120,
130から対応するスコアボードを選択する。更に、メ
モリコントローラ10は、選択したスコアボードの全エ
ントリから、有効フラグが1にセットされているエント
リ(空きエントリ)を選択する。この後、メモリコント
ローラ10は、前記転送されたメモリアクセス命令を、
先に選択されたエントリに登録する(ステップS1
2)。
モリアクセス命令が同期化命令以外のメモリアクセス命
令である場合、受け取ったメモリアクセス命令のアドレ
スに基づいて、スコアボード100,110,120,
130から対応するスコアボードを選択する。更に、メ
モリコントローラ10は、選択したスコアボードの全エ
ントリから、有効フラグが1にセットされているエント
リ(空きエントリ)を選択する。この後、メモリコント
ローラ10は、前記転送されたメモリアクセス命令を、
先に選択されたエントリに登録する(ステップS1
2)。
【0040】登録の際、メモリコントローラ10は、メ
モリアクセス命令のオペレーションコード、及びアドレ
スを登録すると共に、登録対象のエントリの発行可能フ
ラグを“YES”にセットし、有効フラグを“V”にセ
ットし、同期化フラグを“0”にリセットする。
モリアクセス命令のオペレーションコード、及びアドレ
スを登録すると共に、登録対象のエントリの発行可能フ
ラグを“YES”にセットし、有効フラグを“V”にセ
ットし、同期化フラグを“0”にリセットする。
【0041】尚、メモリコントローラ10は、バスイン
ターフェースユニット3から同期化命令を受け取った場
合、選択されたスコアボードに登録されている有効フラ
グが“V”にセットされているエントリ全ての同期化フ
ラグを“1”にセットする。
ターフェースユニット3から同期化命令を受け取った場
合、選択されたスコアボードに登録されている有効フラ
グが“V”にセットされているエントリ全ての同期化フ
ラグを“1”にセットする。
【0042】一方、メモリコントローラ10において
は、バンク実行ユニット108,118,128,13
8の制御に従って、スコアボードからエントリが選択さ
れ、エントリの命令が発行される。
は、バンク実行ユニット108,118,128,13
8の制御に従って、スコアボードからエントリが選択さ
れ、エントリの命令が発行される。
【0043】ステップS12において登録されたエント
リ(メモリアクセス命令)が選択され、エントリの命令
が発行された場合(ステップS13,YES)、選択さ
れたエントリの発行可能フラグが“NO”にセットされ
る(ステップS14)。発行されたメモリアクセス命令
は、バスインターフェースユニット3、メモリコントロ
ーラ10、及びバンク実行ユニットにより、実行され
る。
リ(メモリアクセス命令)が選択され、エントリの命令
が発行された場合(ステップS13,YES)、選択さ
れたエントリの発行可能フラグが“NO”にセットされ
る(ステップS14)。発行されたメモリアクセス命令
は、バスインターフェースユニット3、メモリコントロ
ーラ10、及びバンク実行ユニットにより、実行され
る。
【0044】メモリアクセス命令の処理が完了すると、
メモリコントローラ10は、スコアボード内の、実行さ
れたメモリアクセス命令のエントリに記憶されている有
効フラグを“1”にセット、同期化フラグを“0”にリ
セットする(ステップS15)。このような処理によ
り、実行されたメモリアクセス命令が登録されたエント
リが開放される。
メモリコントローラ10は、スコアボード内の、実行さ
れたメモリアクセス命令のエントリに記憶されている有
効フラグを“1”にセット、同期化フラグを“0”にリ
セットする(ステップS15)。このような処理によ
り、実行されたメモリアクセス命令が登録されたエント
リが開放される。
【0045】以上説明した処理により、CPU1から送
られたメモリアクセス命令が実行される。
られたメモリアクセス命令が実行される。
【0046】次に、スコアボード100,110,12
0,130にそれぞれ対応して設けられたバンク実行ユ
ニット108,118,128,138の命令発行処理
を図6を参照して説明する。
0,130にそれぞれ対応して設けられたバンク実行ユ
ニット108,118,128,138の命令発行処理
を図6を参照して説明する。
【0047】バンク実行ユニットは、スコアボード内
の、これから発行しようとするメモリアクセス命令が登
録されたエントリに対し、先ず、対象エントリの有効フ
ラグが“I”であるか否か判定する(ステップS2
1)。対象エントリの有効フラグが“I”である場合、
バンク実行ユニットは、対象エントリが無効であるた
め、対象エントリのメモリアクセス命令が発行不可能で
あると判断する(ステップS22)。
の、これから発行しようとするメモリアクセス命令が登
録されたエントリに対し、先ず、対象エントリの有効フ
ラグが“I”であるか否か判定する(ステップS2
1)。対象エントリの有効フラグが“I”である場合、
バンク実行ユニットは、対象エントリが無効であるた
め、対象エントリのメモリアクセス命令が発行不可能で
あると判断する(ステップS22)。
【0048】バンク実行ユニットは、対象エントリの有
効フラグが“V”である場合(ステップS21,N
O)、対象エントリの発行フラグが“NO”であるか否
か判定する(ステップS23)。対象エントリの発行フ
ラグが“NO”である場合、バンク実行ユニットは、対
象エントリは、既に発行済みであると判断し、対象エン
トリのメモリアクセス命令の発行を行わない(ステップ
S24)。
効フラグが“V”である場合(ステップS21,N
O)、対象エントリの発行フラグが“NO”であるか否
か判定する(ステップS23)。対象エントリの発行フ
ラグが“NO”である場合、バンク実行ユニットは、対
象エントリは、既に発行済みであると判断し、対象エン
トリのメモリアクセス命令の発行を行わない(ステップ
S24)。
【0049】バンク実行ユニットは、対象エントリの発
行フラグが“YES”である場合(ステップS23,N
O)、同期化完了テーブル12の“SYNC完了”の項が全
ての領域で“0”であるか否かを判定する(ステップS
25)。“SYNC完了”の項が全ての領域で“0”である
ことは、CPU1から同期化命令が送られていないこと
を示すので、バンク実行ユニットは、対象エントリのメ
モリアクセス命令が発行可能であると判断する(ステッ
プS26)。同期化完了テーブル12の“SYNC完
了”の項について、いずれかの領域で“1”がセットさ
れている場合(ステップS25,NO)、バンク実行ユ
ニットは、対象エントリの同期化フラグが“0”である
か否か判断する(ステップS27)。
行フラグが“YES”である場合(ステップS23,N
O)、同期化完了テーブル12の“SYNC完了”の項が全
ての領域で“0”であるか否かを判定する(ステップS
25)。“SYNC完了”の項が全ての領域で“0”である
ことは、CPU1から同期化命令が送られていないこと
を示すので、バンク実行ユニットは、対象エントリのメ
モリアクセス命令が発行可能であると判断する(ステッ
プS26)。同期化完了テーブル12の“SYNC完
了”の項について、いずれかの領域で“1”がセットさ
れている場合(ステップS25,NO)、バンク実行ユ
ニットは、対象エントリの同期化フラグが“0”である
か否か判断する(ステップS27)。
【0050】対象エントリの同期化フラグが“0”であ
る場合、バンク実行ユニットは、対象エントリの命令
が、メモリコントローラ10が同期化命令を受け取った
以降にスコアボードに登録されたメモリアクセス命令で
あるので、このメモリアクセス命令の発行は行わない
(ステップS28)。
る場合、バンク実行ユニットは、対象エントリの命令
が、メモリコントローラ10が同期化命令を受け取った
以降にスコアボードに登録されたメモリアクセス命令で
あるので、このメモリアクセス命令の発行は行わない
(ステップS28)。
【0051】バンク実行ユニットは、同期化フラグが
“1”である場合(ステップS27,NO)、対象エン
トリに登録されたメモリアクセス命令は、同期化命令が
送られた以前に登録されたメモリアクセス命令であるの
で、バンク実行ユニットは、対象エントリのメモリアク
セス命令が発行可能であると判断する(ステップS2
9)。
“1”である場合(ステップS27,NO)、対象エン
トリに登録されたメモリアクセス命令は、同期化命令が
送られた以前に登録されたメモリアクセス命令であるの
で、バンク実行ユニットは、対象エントリのメモリアク
セス命令が発行可能であると判断する(ステップS2
9)。
【0052】次に、この第1実施形態において、CPU
1から以下の命令、 (1)Write 12380 (2)Read 246824 (3)Read 67830 (4)SYNC (5)Read abcd70 が番号順に送られた場合のメモリコントローラ10の処
理を説明する。以降、図7Aから16Cには、領域1に
対応して設けられたスコアボード110と、領域0に対
応して設けられたスコアボード100と、同期化完了テ
ーブル12とに登録されるデータが示されている。
1から以下の命令、 (1)Write 12380 (2)Read 246824 (3)Read 67830 (4)SYNC (5)Read abcd70 が番号順に送られた場合のメモリコントローラ10の処
理を説明する。以降、図7Aから16Cには、領域1に
対応して設けられたスコアボード110と、領域0に対
応して設けられたスコアボード100と、同期化完了テ
ーブル12とに登録されるデータが示されている。
【0053】図7A乃至図7Cは、スコアボード10
0,110と、同期化完了テーブル12の初期状態を示
している。
0,110と、同期化完了テーブル12の初期状態を示
している。
【0054】尚、図7A乃至図16Cでは、各エントリ
の命令の発行可/不可を示す項に、前記図6に示される
バンク実行ユニットの処理が施された場合の判断結果が
識別できるような情報を示している。(a)は前記図6
のステップS22に示される判断結果に相当し、(b)
はステップS24に示される判断結果、(x)はステッ
プS26に示される判断結果、(c)はステップS28
に示される判断結果、そして(y)はステップS29に
示される判断結果に相当する。これは、動作説明の理解
を容易にするためであり、実際には、単に命令発行の可
/不可を示す情報が登録されいるだけで良い。
の命令の発行可/不可を示す項に、前記図6に示される
バンク実行ユニットの処理が施された場合の判断結果が
識別できるような情報を示している。(a)は前記図6
のステップS22に示される判断結果に相当し、(b)
はステップS24に示される判断結果、(x)はステッ
プS26に示される判断結果、(c)はステップS28
に示される判断結果、そして(y)はステップS29に
示される判断結果に相当する。これは、動作説明の理解
を容易にするためであり、実際には、単に命令発行の可
/不可を示す情報が登録されいるだけで良い。
【0055】従って、スコアボード100,110の全
てのエントリは未使用(空き)となっている。スコアボ
ード100,110の全てのエントリの発行可/不可の
項には、発行不可を示すデータが登録されているが、こ
れは、バンク実行ユニット108,118が図6の処理
を実行した場合に、エントリが無効であることを示す
(a)に相当する。従って、発行可能なエントリは存在
しない。
てのエントリは未使用(空き)となっている。スコアボ
ード100,110の全てのエントリの発行可/不可の
項には、発行不可を示すデータが登録されているが、こ
れは、バンク実行ユニット108,118が図6の処理
を実行した場合に、エントリが無効であることを示す
(a)に相当する。従って、発行可能なエントリは存在
しない。
【0056】次に、バスインターフェースユニット3か
ら、命令(1)“Write 12380”が転送され
た場合のスコアボード100,110と、同期化完了テ
ーブル12を図8A乃至8Cに示す。ここでは、メモリ
コントローラ10は、命令“Write 12380”
のアドレスに対応する領域0のスコアボード100から
空きエントリNo.0を選択し、ここに命令を登録して
いる。スコアボード110には、発行可能なエントリは
存在しないが、スコアボード100のエントリNo. 0は
発行可能である。
ら、命令(1)“Write 12380”が転送され
た場合のスコアボード100,110と、同期化完了テ
ーブル12を図8A乃至8Cに示す。ここでは、メモリ
コントローラ10は、命令“Write 12380”
のアドレスに対応する領域0のスコアボード100から
空きエントリNo.0を選択し、ここに命令を登録して
いる。スコアボード110には、発行可能なエントリは
存在しないが、スコアボード100のエントリNo. 0は
発行可能である。
【0057】この後、メモリコントローラ10が命令
(2)“Read 246824”を入力した場合のス
コアボード100,110と、同期化完了テーブル12
とを図9A乃至9Cに示す。メモリコントローラ10
は、命令“Read 246824”のアドレスに対応
する領域1のスコアボード110から空きエントリN
o.0を選択し、ここに命令を登録している。スコアボ
ード100,110は、共に、エントリNo.0が発行
可能である。
(2)“Read 246824”を入力した場合のス
コアボード100,110と、同期化完了テーブル12
とを図9A乃至9Cに示す。メモリコントローラ10
は、命令“Read 246824”のアドレスに対応
する領域1のスコアボード110から空きエントリN
o.0を選択し、ここに命令を登録している。スコアボ
ード100,110は、共に、エントリNo.0が発行
可能である。
【0058】この後、メモリコントローラ10が命令
(3)“Read 67830”を入力した場合のスコ
アボード100,110と、同期化完了テーブル12と
を図10A乃至10Cに示す。メモリコントローラ10
は、命令“Read 67830”のアドレスに対応す
る領域0のスコアボード100から空きエントリNo.
1を選択し、ここに命令を登録する。スコアボード10
0ではエントリNo.0,No.1が、スコアボード1
10ではエントリNo.0が発行可能である。
(3)“Read 67830”を入力した場合のスコ
アボード100,110と、同期化完了テーブル12と
を図10A乃至10Cに示す。メモリコントローラ10
は、命令“Read 67830”のアドレスに対応す
る領域0のスコアボード100から空きエントリNo.
1を選択し、ここに命令を登録する。スコアボード10
0ではエントリNo.0,No.1が、スコアボード1
10ではエントリNo.0が発行可能である。
【0059】この後、メモリコントローラ10が領域0
に対応するバンク実行ユニット108が、スコアボード
100の発行可能なエントリからNo.0を選択し、発
行した場合のスコアボード100,110と、同期化完
了テーブル12とを図11A乃至11Cに示す。スコア
ボード100のエントリNo.0の発行可/不可の項に
は、発行不可を示す情報が登録されるが、これは、既に
発行済みであることを示す(b)に相当する。スコアボ
ード100,110は、共に、エントリNo.0が発行
可能である。
に対応するバンク実行ユニット108が、スコアボード
100の発行可能なエントリからNo.0を選択し、発
行した場合のスコアボード100,110と、同期化完
了テーブル12とを図11A乃至11Cに示す。スコア
ボード100のエントリNo.0の発行可/不可の項に
は、発行不可を示す情報が登録されるが、これは、既に
発行済みであることを示す(b)に相当する。スコアボ
ード100,110は、共に、エントリNo.0が発行
可能である。
【0060】この後、メモリコントローラ10がバスイ
ンターフェースユニット3より同期化命令(4)“SY
NC”を入力した場合のスコアボード100,110
と、同期化完了テーブル12とを図12A乃至12Cに
示す。スコアボード100のエントリNo.0,No.
1と、スコアボード110のエントリNo.0のSYN
Cの項には1がセットされる。又、スコアボード100
のエントリNo.0とスコアボード110のエントリN
o.0の発行可/不可の項には発行可能を示す情報が登
録されているが、これは、同期化命令が入力される以前
に登録された命令であることを示す(y)に相当する。
同期化テーブル12の領域0,1に対応する項にも1が
セットされる。
ンターフェースユニット3より同期化命令(4)“SY
NC”を入力した場合のスコアボード100,110
と、同期化完了テーブル12とを図12A乃至12Cに
示す。スコアボード100のエントリNo.0,No.
1と、スコアボード110のエントリNo.0のSYN
Cの項には1がセットされる。又、スコアボード100
のエントリNo.0とスコアボード110のエントリN
o.0の発行可/不可の項には発行可能を示す情報が登
録されているが、これは、同期化命令が入力される以前
に登録された命令であることを示す(y)に相当する。
同期化テーブル12の領域0,1に対応する項にも1が
セットされる。
【0061】この後、メモリコントローラ10が命令
(5)“Read abcd70”を入力した場合のス
コアボード100,110と、同期化完了テーブル12
とを図13A乃至13Cに示す。メモリコントローラ1
0は、命令“Read abcd70”のアドレスに対
応する領域0のスコアボード100から空きエントリN
o.2を選択し、ここに命令を登録する。但し、スコア
ボード100における発行可能なエントリはNo.1の
みである。
(5)“Read abcd70”を入力した場合のス
コアボード100,110と、同期化完了テーブル12
とを図13A乃至13Cに示す。メモリコントローラ1
0は、命令“Read abcd70”のアドレスに対
応する領域0のスコアボード100から空きエントリN
o.2を選択し、ここに命令を登録する。但し、スコア
ボード100における発行可能なエントリはNo.1の
みである。
【0062】この後、バンク実行ユニット108がスコ
アボード100の発行可能なエントリNo.1選択し、
バンク実行ユニット118がスコアボード110の発行
可能なエントリNo.0を選択して、それぞれのエント
リの命令が発行された場合のスコアボード100,11
0と、同期化完了テーブル12とを図14A乃至14C
に示す。発行された各エントリの“En”の項が“YE
S”から“NO”に変更される。
アボード100の発行可能なエントリNo.1選択し、
バンク実行ユニット118がスコアボード110の発行
可能なエントリNo.0を選択して、それぞれのエント
リの命令が発行された場合のスコアボード100,11
0と、同期化完了テーブル12とを図14A乃至14C
に示す。発行された各エントリの“En”の項が“YE
S”から“NO”に変更される。
【0063】この後、スコアボード100のエントリN
o.1の命令が完了した場合のスコアボード100,1
10と、同期化完了テーブル12とを図15A乃至15
Cに示す。スコアボード100では、エントリNo.
0,No.1の“Val”の項が“V”から“I”に変
更され、“SYNC”の項が“0”にリセットされる。
又、同期化完了テーブル12の領域0に対応する項が
“0”にリセットされる。
o.1の命令が完了した場合のスコアボード100,1
10と、同期化完了テーブル12とを図15A乃至15
Cに示す。スコアボード100では、エントリNo.
0,No.1の“Val”の項が“V”から“I”に変
更され、“SYNC”の項が“0”にリセットされる。
又、同期化完了テーブル12の領域0に対応する項が
“0”にリセットされる。
【0064】この後、スコアボード110のエントリN
o.0の命令が完了した場合のスコアボード100,1
10と、同期化テーブル12とを図16A乃至16Cに
示す。スコアボード110では、エントリ0の“Va
l”の項が“V”から“I”に変更され、“SYNC”
の項が“0”にリセットされる。又、同期化完了テーブ
ル12の領域1に対応する項が“0”にリセットされ
る。
o.0の命令が完了した場合のスコアボード100,1
10と、同期化テーブル12とを図16A乃至16Cに
示す。スコアボード110では、エントリ0の“Va
l”の項が“V”から“I”に変更され、“SYNC”
の項が“0”にリセットされる。又、同期化完了テーブ
ル12の領域1に対応する項が“0”にリセットされ
る。
【0065】以上の処理により、メモリコントローラ1
0においては、同期化命令(4)“SYNC”を受け付
ける以前に登録されたスコアボード100のエントリN
o.1(命令(3))やスコアボード110のエントリ
No.0(命令(2))が選択発行される前に、スコア
ボード100に登録されたエントリNo.2(命令
(5))を実行するという同期化命令を無視した処理を
防止することができる。
0においては、同期化命令(4)“SYNC”を受け付
ける以前に登録されたスコアボード100のエントリN
o.1(命令(3))やスコアボード110のエントリ
No.0(命令(2))が選択発行される前に、スコア
ボード100に登録されたエントリNo.2(命令
(5))を実行するという同期化命令を無視した処理を
防止することができる。
【0066】(第2実施形態)第2実施形態は、図17
に示すように、同期化完了テーブル12において、同期
化条件を示すエントリ160を付加した構成である。エ
ントリ160には、同一要求元(プロセッサ)からの要
求または同一アドレスに対して等の同期化条件を示す項
目である(ここでは条件として同一アドレスとする)。
なお、これ以外のシステム構成やメモリコントローラ1
0の構成については、前述の第1実施形態の場合と同様
である。
に示すように、同期化完了テーブル12において、同期
化条件を示すエントリ160を付加した構成である。エ
ントリ160には、同一要求元(プロセッサ)からの要
求または同一アドレスに対して等の同期化条件を示す項
目である(ここでは条件として同一アドレスとする)。
なお、これ以外のシステム構成やメモリコントローラ1
0の構成については、前述の第1実施形態の場合と同様
である。
【0067】このような構成により、同期化条件に該当
しない後続命令(後続オペレーション)は、同期化オペ
レーションの影響を受けることなく実行できる機能を実
現する。同期化条件に合致するオペレーションについて
は、前述の第1実施形態の場合と同様に、同期化オペレ
ーション以後に実行されたオペレーションが、同期化オ
ペレーション以前に実行されたオペレーションより先行
して実行することを禁止する。同期化条件に合致しない
オペレーションは、通常の動作(out oforde
rまたはweak orderでの動作)を実行する。
尚、同期化完了以前に後続の同期化オペレーションが要
求された場合には、後続の同期化オペレーションは受付
けを拒否されて、リトライされる。
しない後続命令(後続オペレーション)は、同期化オペ
レーションの影響を受けることなく実行できる機能を実
現する。同期化条件に合致するオペレーションについて
は、前述の第1実施形態の場合と同様に、同期化オペレ
ーション以後に実行されたオペレーションが、同期化オ
ペレーション以前に実行されたオペレーションより先行
して実行することを禁止する。同期化条件に合致しない
オペレーションは、通常の動作(out oforde
rまたはweak orderでの動作)を実行する。
尚、同期化完了以前に後続の同期化オペレーションが要
求された場合には、後続の同期化オペレーションは受付
けを拒否されて、リトライされる。
【0068】以下、図17を参照して具体的に説明す
る。
る。
【0069】第2実施形態の特徴は、図17に示すよう
に、同期化完了テーブル12に同期化条件のエントリ1
60を追加した構成にある。このエントリ160には同
期化条件セットされる。同期化条件の例としては、「全
てのライトオペレーションが終了するまで」や「全ての
リードおよびライトオペレーションが終了するまで」等
がある。
に、同期化完了テーブル12に同期化条件のエントリ1
60を追加した構成にある。このエントリ160には同
期化条件セットされる。同期化条件の例としては、「全
てのライトオペレーションが終了するまで」や「全ての
リードおよびライトオペレーションが終了するまで」等
がある。
【0070】この実施形態は、同一アドレスに対するリ
ードおよびライトについて順序が保証されないオペレー
ション(非コヒーレントオペレーション)と、順序を保
証するオペレーション(コヒーレントオペレーション)
の両方が定義されているシステムにおいて、「同一アド
レスに対する全てのリードおよびライトオペレーション
が完了するまで、後続のリードおよびライトオペレーシ
ョンを禁止」という同期化条件の同期化オペレーション
を想定する。
ードおよびライトについて順序が保証されないオペレー
ション(非コヒーレントオペレーション)と、順序を保
証するオペレーション(コヒーレントオペレーション)
の両方が定義されているシステムにおいて、「同一アド
レスに対する全てのリードおよびライトオペレーション
が完了するまで、後続のリードおよびライトオペレーシ
ョンを禁止」という同期化条件の同期化オペレーション
を想定する。
【0071】メモリコントローラ10は、同期化オペレ
ーションが発行されるまでは、非コヒーレントオペレー
ション(メモリアクセス)は他のオペレーションとは全
く独立に非プログラム順序(out of order
処理)で実行する。一方、同期化オペレーションが発行
されると、前述の第1実施形態と同様に、スコアボード
に登録されている全ての有効なエントリの同期化フラグ
(SYNCフラグ)に“1”をセットする。同様に、有
効なエントリのあるスコアボードに対応する同期化完了
テーブル12の同期化完了フラグ(SYNC完了)にも
“1”をセットする。
ーションが発行されるまでは、非コヒーレントオペレー
ション(メモリアクセス)は他のオペレーションとは全
く独立に非プログラム順序(out of order
処理)で実行する。一方、同期化オペレーションが発行
されると、前述の第1実施形態と同様に、スコアボード
に登録されている全ての有効なエントリの同期化フラグ
(SYNCフラグ)に“1”をセットする。同様に、有
効なエントリのあるスコアボードに対応する同期化完了
テーブル12の同期化完了フラグ(SYNC完了)にも
“1”をセットする。
【0072】図17の状態では、記憶領域0のスコアボ
ード100および記憶領域1のスコアボード110には
有効なエントリがあるため、同期化完了テーブル12の
同期化完了フラグは“1”にセットされる。また、記憶
領域2のスコアボード120および記憶領域3のスコア
ボード130には有効なエントリがないので、該当する
同期化完了フラグは“0”に維持されている。
ード100および記憶領域1のスコアボード110には
有効なエントリがあるため、同期化完了テーブル12の
同期化完了フラグは“1”にセットされる。また、記憶
領域2のスコアボード120および記憶領域3のスコア
ボード130には有効なエントリがないので、該当する
同期化完了フラグは“0”に維持されている。
【0073】さらに、記憶領域0,1の有効なエントリ
の同期化フラグは“1”にセットされており、有効でな
いエントリの同期化フラグは“0”が維持されている。
また、同時に同期化完了テーブル12の同期化条件のエ
ントリ160には、前記の同期化条件である「同一アド
レスに対する全てのリードおよびライトオペレーション
が完了するまで後続のリードおよびライトオペレーショ
ンを禁止」という条件が登録される。
の同期化フラグは“1”にセットされており、有効でな
いエントリの同期化フラグは“0”が維持されている。
また、同時に同期化完了テーブル12の同期化条件のエ
ントリ160には、前記の同期化条件である「同一アド
レスに対する全てのリードおよびライトオペレーション
が完了するまで後続のリードおよびライトオペレーショ
ンを禁止」という条件が登録される。
【0074】この同期化条件において、後続のリードオ
ペレーションは同期化フラグが“1”であるエントリに
同一アドレスのものがあれば発行されず、同一アドレス
のものがなければ発行できる。また、この場合、アドレ
スに対応するスコアボードの同期化オペレーションが完
了して、同期化フラグが“1”のエントリがなくなれ
ば、このスコアボードに登録されているエントリ、およ
び登録されるエントリは発行条件が揃い次第、他のスコ
アボードでの同期化オペレーションの完了の如何にかか
わらず発行できる。すなわち、この領域に関しては同期
化オペレーションが無いのと同じ条件でメモリアクセス
を実行できる。
ペレーションは同期化フラグが“1”であるエントリに
同一アドレスのものがあれば発行されず、同一アドレス
のものがなければ発行できる。また、この場合、アドレ
スに対応するスコアボードの同期化オペレーションが完
了して、同期化フラグが“1”のエントリがなくなれ
ば、このスコアボードに登録されているエントリ、およ
び登録されるエントリは発行条件が揃い次第、他のスコ
アボードでの同期化オペレーションの完了の如何にかか
わらず発行できる。すなわち、この領域に関しては同期
化オペレーションが無いのと同じ条件でメモリアクセス
を実行できる。
【0075】なお、前述の第1実施形態と同様に、同期
化完了テーブル12の同期化完了フラグの中で、少なく
とも1つが“1”(同期化処理中)であれば、2回目の
同期化オペレーションは受付けを拒否されて、リトライ
される。また、同期化フラグが全て“0”であれば、同
期化オペレーションは完了していることがわかるので、
同期化完了テーブル12を省略してもよい。
化完了テーブル12の同期化完了フラグの中で、少なく
とも1つが“1”(同期化処理中)であれば、2回目の
同期化オペレーションは受付けを拒否されて、リトライ
される。また、同期化フラグが全て“0”であれば、同
期化オペレーションは完了していることがわかるので、
同期化完了テーブル12を省略してもよい。
【0076】次に、前述した第2実施形態の動作をより
詳細に説明する。
詳細に説明する。
【0077】第2実施形態において、メモリアクセス命
令がCPU1により発行された場合の処理は、前述した
第1実施形態の図5に示される処理と同様であるので詳
細な説明は省略する。
令がCPU1により発行された場合の処理は、前述した
第1実施形態の図5に示される処理と同様であるので詳
細な説明は省略する。
【0078】次に、スコアボード100,110,12
0,130にそれぞれ対応して設けられたバンク実行ユ
ニット108,118,128,138の命令発行処理
を図18を参照して説明する。
0,130にそれぞれ対応して設けられたバンク実行ユ
ニット108,118,128,138の命令発行処理
を図18を参照して説明する。
【0079】バンク実行ユニットは、スコアボード内
の、これから発行しようとするメモリアクセス命令が登
録されたエントリに対し、先ず、対象エントリの有効フ
ラグが“I”であるか否か判定する(ステップS3
1)。対象エントリの有効フラグが“I”である場合、
バンク実行ユニットは、対象エントリが無効であるた
め、対象エントリのメモリアクセス命令が発行不可能で
あると判断する(ステップS32)。
の、これから発行しようとするメモリアクセス命令が登
録されたエントリに対し、先ず、対象エントリの有効フ
ラグが“I”であるか否か判定する(ステップS3
1)。対象エントリの有効フラグが“I”である場合、
バンク実行ユニットは、対象エントリが無効であるた
め、対象エントリのメモリアクセス命令が発行不可能で
あると判断する(ステップS32)。
【0080】バンク実行ユニットは、対象エントリの有
効フラグが“V”である場合(ステップS31,N
O)、対象エントリの発行フラグが“NO”であるか否
か判定する(ステップS33)。対象エントリの発行フ
ラグが“NO”である場合、バンク実行ユニットは、対
象エントリは、既に発行済みであると判断し、対象エン
トリのメモリアクセス命令の発行を行わない(ステップ
S34)。
効フラグが“V”である場合(ステップS31,N
O)、対象エントリの発行フラグが“NO”であるか否
か判定する(ステップS33)。対象エントリの発行フ
ラグが“NO”である場合、バンク実行ユニットは、対
象エントリは、既に発行済みであると判断し、対象エン
トリのメモリアクセス命令の発行を行わない(ステップ
S34)。
【0081】バンク実行ユニットは、対象エントリの発
行フラグが“YES”である場合(ステップS33,N
O)、同期化完了テーブル12の“SYNC完了”の項
が全ての領域で“0”であるか否かを判定する(ステッ
プS35)。“SYNC完了”の項が全ての領域で
“0”であることは、CPU1から同期化命令が送られ
ていないことを示すので、バンク実行ユニットは、対象
エントリのメモリアクセス命令が発行可能であると判断
する(ステップS36)。
行フラグが“YES”である場合(ステップS33,N
O)、同期化完了テーブル12の“SYNC完了”の項
が全ての領域で“0”であるか否かを判定する(ステッ
プS35)。“SYNC完了”の項が全ての領域で
“0”であることは、CPU1から同期化命令が送られ
ていないことを示すので、バンク実行ユニットは、対象
エントリのメモリアクセス命令が発行可能であると判断
する(ステップS36)。
【0082】同期化完了テーブル12の“SYNC完了”の
項について、いずれかの領域で“1”がセットされてい
る場合(ステップS25,NO)、バンク実行ユニット
は、同期化条件に一致しているか否かを判定する(ステ
ップS37)。同期化完了テーブル12の同期化条件に
一致していない場合、バンク実行ユニットは、同期化命
令処理が必要ないと判定し、対象エントリのメモリアク
セス命令が実行可能であると判断する(ステップS3
8)。
項について、いずれかの領域で“1”がセットされてい
る場合(ステップS25,NO)、バンク実行ユニット
は、同期化条件に一致しているか否かを判定する(ステ
ップS37)。同期化完了テーブル12の同期化条件に
一致していない場合、バンク実行ユニットは、同期化命
令処理が必要ないと判定し、対象エントリのメモリアク
セス命令が実行可能であると判断する(ステップS3
8)。
【0083】同期化条件に一致する場合(ステップS3
7,YES)、バンク実行ユニットは、対象エントリの
同期化フラグが“0”であるか否か判断する(ステップ
S39)。対象エントリの同期化フラグが“0”である
場合、バンク実行ユニットは、対象エントリの命令が、
メモリコントローラ10が同期化命令を受け取った以降
にスコアボードに登録されたメモリアクセス命令である
ので、このメモリアクセス命令の発行は行わない(ステ
ップS40)。
7,YES)、バンク実行ユニットは、対象エントリの
同期化フラグが“0”であるか否か判断する(ステップ
S39)。対象エントリの同期化フラグが“0”である
場合、バンク実行ユニットは、対象エントリの命令が、
メモリコントローラ10が同期化命令を受け取った以降
にスコアボードに登録されたメモリアクセス命令である
ので、このメモリアクセス命令の発行は行わない(ステ
ップS40)。
【0084】バンク実行ユニットは、同期化フラグが
“1”である場合(ステップS39,NO)、対象エン
トリに登録されたメモリアクセス命令は、同期化命令が
送られた以前に登録されたメモリアクセス命令であるの
で、バンク実行ユニットは、対象エントリのメモリアク
セス命令が発行可能であると判断する(ステップS4
1)。
“1”である場合(ステップS39,NO)、対象エン
トリに登録されたメモリアクセス命令は、同期化命令が
送られた以前に登録されたメモリアクセス命令であるの
で、バンク実行ユニットは、対象エントリのメモリアク
セス命令が発行可能であると判断する(ステップS4
1)。
【0085】次に、この第2実施形態において、CPU
1から以下の命令、 (1)Read 12380 (2)SYNC (3)Write 67380 (4)Write 12380 が番号順に送られた場合のメモリコントローラ10の処
理を説明する。以降、図19A乃至23Bには、領域0
に対応して設けられたスコアボード100と、同期化完
了テーブル12とに登録されるデータが示されている。
1から以下の命令、 (1)Read 12380 (2)SYNC (3)Write 67380 (4)Write 12380 が番号順に送られた場合のメモリコントローラ10の処
理を説明する。以降、図19A乃至23Bには、領域0
に対応して設けられたスコアボード100と、同期化完
了テーブル12とに登録されるデータが示されている。
【0086】但し、同期化条件として「同一アドレスに
対する全てのリード及びライトオペレーションが完了す
るまで、後続のリード及びライトオペレーションを禁止
する」が定められているとする。これは、同期命令処理
中に、後続(同期化フラグが“0”)のオペレーション
に対して、SYNC命令以前(同期化フラグが“1”)で同
一アドレスの命令存在する場合には発行不可能、存在し
ない場合には発行可能であることを意味する。
対する全てのリード及びライトオペレーションが完了す
るまで、後続のリード及びライトオペレーションを禁止
する」が定められているとする。これは、同期命令処理
中に、後続(同期化フラグが“0”)のオペレーション
に対して、SYNC命令以前(同期化フラグが“1”)で同
一アドレスの命令存在する場合には発行不可能、存在し
ない場合には発行可能であることを意味する。
【0087】尚、図19A乃至23Bでは、各エントリ
の命令の発行可/不可を示す項に、前記図18に示され
るバンク実行ユニットの処理が施された場合の判断結果
が識別できるような情報を示している。(a)は、前記
図18のステップS32に示される判断結果に相当し、
(b)はステップS34に示される判断結果、(x)は
ステップS36に示される判断結果、(z)はステップ
S38に示される判断結果、(c)はステップS40に
示される判断結果、そして(y)はステップS41に示
される判断結果に相当する。これは、動作説明の理解を
容易にするためであり、実際には、単に命令発行の可/
不可を示す情報が登録されいるだけで良い。
の命令の発行可/不可を示す項に、前記図18に示され
るバンク実行ユニットの処理が施された場合の判断結果
が識別できるような情報を示している。(a)は、前記
図18のステップS32に示される判断結果に相当し、
(b)はステップS34に示される判断結果、(x)は
ステップS36に示される判断結果、(z)はステップ
S38に示される判断結果、(c)はステップS40に
示される判断結果、そして(y)はステップS41に示
される判断結果に相当する。これは、動作説明の理解を
容易にするためであり、実際には、単に命令発行の可/
不可を示す情報が登録されいるだけで良い。
【0088】図19A乃至19Bは、スコアボード10
0と、同期化完了テーブル12の初期状態を示してい
る。従って、スコアボード100の全てのエントリは未
使用(空き)となっている。スコアボード100の全て
のエントリの発行可/不可の項には、発行不可を示すデ
ータが登録されているが、これは、バンク実行ユニット
108が図18の処理を実行した場合に、エントリが無
効であることを示す(a)に相当する。従って、発行可
能なエントリは存在しない。
0と、同期化完了テーブル12の初期状態を示してい
る。従って、スコアボード100の全てのエントリは未
使用(空き)となっている。スコアボード100の全て
のエントリの発行可/不可の項には、発行不可を示すデ
ータが登録されているが、これは、バンク実行ユニット
108が図18の処理を実行した場合に、エントリが無
効であることを示す(a)に相当する。従って、発行可
能なエントリは存在しない。
【0089】次に、バスインターフェースユニット3か
ら、命令(1)“Read 12380”が転送された
場合のスコアボード100と、同期化完了テーブル12
を図20A乃至20Bに示す。ここでは、メモリコント
ローラ10は、命令“Read 12380”のアドレ
スに対応する領域0のスコアボード100から空きエン
トリNo.0を選択し、ここに命令を登録している。ス
コアボード100のエントリNo.0は発行可能であ
る。
ら、命令(1)“Read 12380”が転送された
場合のスコアボード100と、同期化完了テーブル12
を図20A乃至20Bに示す。ここでは、メモリコント
ローラ10は、命令“Read 12380”のアドレ
スに対応する領域0のスコアボード100から空きエン
トリNo.0を選択し、ここに命令を登録している。ス
コアボード100のエントリNo.0は発行可能であ
る。
【0090】この後、メモリコントローラ10が同期化
命令(2)“SYNC”を入力した場合のスコアボード
100と、同期化完了テーブル12とを図21A乃至2
1Bに示す。メモリコントローラ10は、スコアボード
100の有効エントリ(“Val”が“V”)の同期化
フラグを“1”にセットする。同期化完了テーブル12
の領域0に対応する項も、“1”がセットされる。ここ
で、バンク実行ユニット108が発行可能なエントリ
は、No.0である。
命令(2)“SYNC”を入力した場合のスコアボード
100と、同期化完了テーブル12とを図21A乃至2
1Bに示す。メモリコントローラ10は、スコアボード
100の有効エントリ(“Val”が“V”)の同期化
フラグを“1”にセットする。同期化完了テーブル12
の領域0に対応する項も、“1”がセットされる。ここ
で、バンク実行ユニット108が発行可能なエントリ
は、No.0である。
【0091】この後、メモリコントローラ10が命令
(3)“Write 67380”を入力した場合のス
コアボード100と、同期化完了テーブル12とを図2
2A乃至22Bに示す。メモリコントローラ10は、命
令“Write 67380”のアドレスに対応する領
域0のスコアボード100から空きエントリNo.1を
選択し、ここに命令を登録する。スコアボード100で
はエントリNo.0,No.1が発行可能である。
(3)“Write 67380”を入力した場合のス
コアボード100と、同期化完了テーブル12とを図2
2A乃至22Bに示す。メモリコントローラ10は、命
令“Write 67380”のアドレスに対応する領
域0のスコアボード100から空きエントリNo.1を
選択し、ここに命令を登録する。スコアボード100で
はエントリNo.0,No.1が発行可能である。
【0092】この後、メモリコントローラ10が命令
(4)“Write 12380”を入力した場合のス
コアボード100と、同期化完了テーブル12とを図2
3A乃至23Bに示す。メモリコントローラ10は、命
令“Write 12380”のアドレスに対応する領
域0のスコアボード100から空きエントリNo.2を
選択し、ここに命令を登録する。但し、スコアボード1
00における発行可能なエントリはNo.0とNo.1
のみである。これは、登録された命令(4)のライト命
令が、既に登録されている命令(1)と同じアドレスで
あるため、先に定められた同期化条件に一致し、命令
(4)の発行が不可能となっている。
(4)“Write 12380”を入力した場合のス
コアボード100と、同期化完了テーブル12とを図2
3A乃至23Bに示す。メモリコントローラ10は、命
令“Write 12380”のアドレスに対応する領
域0のスコアボード100から空きエントリNo.2を
選択し、ここに命令を登録する。但し、スコアボード1
00における発行可能なエントリはNo.0とNo.1
のみである。これは、登録された命令(4)のライト命
令が、既に登録されている命令(1)と同じアドレスで
あるため、先に定められた同期化条件に一致し、命令
(4)の発行が不可能となっている。
【0093】(第3実施形態)第3実施形態は、図24
に示すように、複数レベルの同期化フラグ(SYNCフ
ラグ)を設けたスコアボードと、複数レベルの同期化完
了フラグ(SYNC完了)を設けた同期化完了テーブル
を有するメモリコントローラ10であり、複数の同期化
命令を同時に処理する機能を実現したシステムである。
なお、同期化レベルの全てが使用されている状態で、後
続の同期化オペレーションの要求がある場合には後続の
同期化オペレーションはリトライされる。
に示すように、複数レベルの同期化フラグ(SYNCフ
ラグ)を設けたスコアボードと、複数レベルの同期化完
了フラグ(SYNC完了)を設けた同期化完了テーブル
を有するメモリコントローラ10であり、複数の同期化
命令を同時に処理する機能を実現したシステムである。
なお、同期化レベルの全てが使用されている状態で、後
続の同期化オペレーションの要求がある場合には後続の
同期化オペレーションはリトライされる。
【0094】第3実施形態では、同期化処理は同期化オ
ペレーションの実行順に従って実行する。即ち、同期化
オペレーションをA,B,Cと3回受付けた場合、同期
化オペレーションAの以前に受付けたオペレーション、
AからBの間に受け付けたオペレーション、BからCの
間に受け付けたオペレーション、C以降のオペレーショ
ンの順に実行する。この機能を実現するため、同期化完
了テーブル12に先行同期化オペレーションを示すフラ
グを設ける。例えば、同期化完了テーブル12のBに次
する先行同期化オペレーションはA,Cに対してはBと
マークされる。Aに対しては“Null”を入れ、先行
同期化オペレーションがないことを示す。Aが完了する
とBの先行同期化オペレーションは“Null”に書き
換える。同様に、先行同期化オペレーションが完了する
とそのエントリの先行同期化オペレーションを“Nul
l”にすることで上記機能を実現する。
ペレーションの実行順に従って実行する。即ち、同期化
オペレーションをA,B,Cと3回受付けた場合、同期
化オペレーションAの以前に受付けたオペレーション、
AからBの間に受け付けたオペレーション、BからCの
間に受け付けたオペレーション、C以降のオペレーショ
ンの順に実行する。この機能を実現するため、同期化完
了テーブル12に先行同期化オペレーションを示すフラ
グを設ける。例えば、同期化完了テーブル12のBに次
する先行同期化オペレーションはA,Cに対してはBと
マークされる。Aに対しては“Null”を入れ、先行
同期化オペレーションがないことを示す。Aが完了する
とBの先行同期化オペレーションは“Null”に書き
換える。同様に、先行同期化オペレーションが完了する
とそのエントリの先行同期化オペレーションを“Nul
l”にすることで上記機能を実現する。
【0095】以下、図24を参照して具体的に説明す
る。
る。
【0096】この実施形態は同期化フラグ102を各エ
ントリに対して4レベル0〜3とした場合を想定する。
また、同期化完了テーブル12の各エントリ(記憶領域
0〜3に相当)の同期化完了フラグも4レベルとしてい
る。いずれのレベルを実行中かは同期化(Sync)リ
ードポインタ161により指示されて、次の同期化レベ
ルは同期化ライトポインタ162により指示される。
ントリに対して4レベル0〜3とした場合を想定する。
また、同期化完了テーブル12の各エントリ(記憶領域
0〜3に相当)の同期化完了フラグも4レベルとしてい
る。いずれのレベルを実行中かは同期化(Sync)リ
ードポインタ161により指示されて、次の同期化レベ
ルは同期化ライトポインタ162により指示される。
【0097】同期化オペレーションは受付け順に処理さ
れるので、これらのポインタ161,162の制御は一
般のFIFOバッファと同様である。各スコアボードは
同期化リードポインタ161により指示される同期化オ
ペレーションに対応する同期化フラグが“1”であるオ
ペレーションだけを発行する。全てのバンクで、同期化
リードポインタ161により指示されるレベルのエント
リが無くなると、ポインタは1つ進む。
れるので、これらのポインタ161,162の制御は一
般のFIFOバッファと同様である。各スコアボードは
同期化リードポインタ161により指示される同期化オ
ペレーションに対応する同期化フラグが“1”であるオ
ペレーションだけを発行する。全てのバンクで、同期化
リードポインタ161により指示されるレベルのエント
リが無くなると、ポインタは1つ進む。
【0098】同期化完了テーブル12の同期化完了フラ
グの全てが“0”になれば、同期化オペレーションは全
て完了しており、全てのスコアボード100,110,
120,130の全ての同期化フラグは“0”になる。
このため、通常の同期化が無い場合のルールでオペレー
ションを発行すればよい。同期化オペレーションを受け
取る時点で、同期化レベルの少なくとも1つが未使用で
あれば、その同期化オペレーションはリトライされるこ
となく受け付けられて、正常な同期化処理が実行され
る。同期化レベルが全て使用されている状態では、後続
の同期化オペレーションはリトライされる。
グの全てが“0”になれば、同期化オペレーションは全
て完了しており、全てのスコアボード100,110,
120,130の全ての同期化フラグは“0”になる。
このため、通常の同期化が無い場合のルールでオペレー
ションを発行すればよい。同期化オペレーションを受け
取る時点で、同期化レベルの少なくとも1つが未使用で
あれば、その同期化オペレーションはリトライされるこ
となく受け付けられて、正常な同期化処理が実行され
る。同期化レベルが全て使用されている状態では、後続
の同期化オペレーションはリトライされる。
【0099】図24の状態は、同期化レベル3が使用
中、同期化レベル0,1,2が未使用であり、記憶領域
0,1,2のスコアボード100,110,120に有
効なエントリがあり、記憶領域3のスコアボード130
には有効なエントリが無い状態で同期化オペレーション
を受付けた場合である。各同期化フラグのレベル1,2
は全て“0”がセットされて、使用されていない。レベ
ル3は記憶領域0のNo.0のエントリの同期化フラグ
だけ“1”であり、他の記憶領域の同期化フラグは全て
“0”である。これは、レベル3の同期化オペレーショ
ンが発行される以前のオペレーションの中で、未使用で
あるのは記憶領域0のエントリNo.0だけであること
を示している。
中、同期化レベル0,1,2が未使用であり、記憶領域
0,1,2のスコアボード100,110,120に有
効なエントリがあり、記憶領域3のスコアボード130
には有効なエントリが無い状態で同期化オペレーション
を受付けた場合である。各同期化フラグのレベル1,2
は全て“0”がセットされて、使用されていない。レベ
ル3は記憶領域0のNo.0のエントリの同期化フラグ
だけ“1”であり、他の記憶領域の同期化フラグは全て
“0”である。これは、レベル3の同期化オペレーショ
ンが発行される以前のオペレーションの中で、未使用で
あるのは記憶領域0のエントリNo.0だけであること
を示している。
【0100】同期化完了テーブル12の同期化リードポ
インタ161は、現時点でレベル3が処理中であること
を示している。新たな同期化オペレーションは、同期化
完了テーブル12の同期化ライトポインタ162が指示
するレベル0に登録される。同期化ライトポインタ16
2は1つ進んでレベル1を指示する。
インタ161は、現時点でレベル3が処理中であること
を示している。新たな同期化オペレーションは、同期化
完了テーブル12の同期化ライトポインタ162が指示
するレベル0に登録される。同期化ライトポインタ16
2は1つ進んでレベル1を指示する。
【0101】また、各スコアボードの有効なエントリの
同期化フラグのレベル0には“1”がセットされる。図
24では記憶領域0,1,2にある有効なエントリが
“1”にセットされている。同時に、記憶領域0,1,
2に対応する同期化完了テーブルのレベル0に“1”が
セットされ、レベル0の同期化が終了していないことを
示す。この後、図24では同期化レベル3が処理中であ
るので、記憶領域0のエントリNo.0のオペレーショ
ンが発行可能になるまで、オペレーションは発行されな
い。記憶領域0のエントリNo.0が発行されると、レ
ベル3の同期化が完了するので同期化完了テーブル12
の記憶領域0のレベル3が“0”にリセットされる。同
期化リードポインタ161は1つ進んでレベル0を指示
するため、レベル0の同期化フラグが“1”にセットさ
れているオペレーションが順次発行され、レベル0の同
期化処理が実行される。各レベルの同期化フラグが全て
“0”であれば、そのレベルの同期化オペレーションは
完了していることがわかるので、同期化完了テーブル1
2を省略してもよい。
同期化フラグのレベル0には“1”がセットされる。図
24では記憶領域0,1,2にある有効なエントリが
“1”にセットされている。同時に、記憶領域0,1,
2に対応する同期化完了テーブルのレベル0に“1”が
セットされ、レベル0の同期化が終了していないことを
示す。この後、図24では同期化レベル3が処理中であ
るので、記憶領域0のエントリNo.0のオペレーショ
ンが発行可能になるまで、オペレーションは発行されな
い。記憶領域0のエントリNo.0が発行されると、レ
ベル3の同期化が完了するので同期化完了テーブル12
の記憶領域0のレベル3が“0”にリセットされる。同
期化リードポインタ161は1つ進んでレベル0を指示
するため、レベル0の同期化フラグが“1”にセットさ
れているオペレーションが順次発行され、レベル0の同
期化処理が実行される。各レベルの同期化フラグが全て
“0”であれば、そのレベルの同期化オペレーションは
完了していることがわかるので、同期化完了テーブル1
2を省略してもよい。
【0102】次に、前述した第3実施形態の動作をより
詳細に説明する。
詳細に説明する。
【0103】先ず、第3実施形態において、メモリアク
セス命令がCPU1により発行された場合の処理を図2
5を参照して説明する。
セス命令がCPU1により発行された場合の処理を図2
5を参照して説明する。
【0104】CPU1により発行されたメモリアクセス
命令は、バス2を介してバスインターフェースユニット
3に送られる。バスインターフェースユニット3は、受
け取ったメモリアクセス命令をメモリコントローラ10
に転送する(ステップS51)。
命令は、バス2を介してバスインターフェースユニット
3に送られる。バスインターフェースユニット3は、受
け取ったメモリアクセス命令をメモリコントローラ10
に転送する(ステップS51)。
【0105】メモリコントローラ10は、受け取ったメ
モリアクセス命令が同期化命令以外のメモリアクセス命
令である場合、受け取ったメモリアクセス命令のアドレ
スに基づいて、スコアボード100,110,120,
130から対応するスコアボードを選択する。更に、メ
モリコントローラ10は、選択したスコアボードの全エ
ントリから、有効フラグが1にセットされているエント
リ(空きエントリ)を選択する。この後、メモリコント
ローラ10は、前記転送されたメモリアクセス命令を、
先に選択されたエントリに登録する(ステップS5
2)。
モリアクセス命令が同期化命令以外のメモリアクセス命
令である場合、受け取ったメモリアクセス命令のアドレ
スに基づいて、スコアボード100,110,120,
130から対応するスコアボードを選択する。更に、メ
モリコントローラ10は、選択したスコアボードの全エ
ントリから、有効フラグが1にセットされているエント
リ(空きエントリ)を選択する。この後、メモリコント
ローラ10は、前記転送されたメモリアクセス命令を、
先に選択されたエントリに登録する(ステップS5
2)。
【0106】登録の際、メモリコントローラ10は、メ
モリアクセス命令のオペレーションコード、及びアドレ
スを登録すると共に、登録対象のエントリの発行可能フ
ラグを“YES”にセットし、有効フラグを“V”にセ
ットし、同期化フラグ0,1,2,3を“0”にリセッ
トする。
モリアクセス命令のオペレーションコード、及びアドレ
スを登録すると共に、登録対象のエントリの発行可能フ
ラグを“YES”にセットし、有効フラグを“V”にセ
ットし、同期化フラグ0,1,2,3を“0”にリセッ
トする。
【0107】尚、メモリコントローラ10は、バスイン
ターフェースユニット3から同期化命令を受け取った場
合、選択されたスコアボードに登録されている有効フラ
グが“V”にセットされているエントリ全ての、SYN
Cライトポインタに対応する同期化フラグn(n=0/
1/2/3)を“1”にセットする。
ターフェースユニット3から同期化命令を受け取った場
合、選択されたスコアボードに登録されている有効フラ
グが“V”にセットされているエントリ全ての、SYN
Cライトポインタに対応する同期化フラグn(n=0/
1/2/3)を“1”にセットする。
【0108】一方、メモリコントローラ10において
は、バンク実行ユニット108,118,128,13
8の制御に従って、スコアボードからエントリが選択さ
れ、エントリの命令が発行される。
は、バンク実行ユニット108,118,128,13
8の制御に従って、スコアボードからエントリが選択さ
れ、エントリの命令が発行される。
【0109】ステップS52において登録されたエント
リ(メモリアクセス命令)が選択され、エントリの命令
が発行された場合(ステップS53,YES)、選択さ
れたエントリの発行可能フラグが“NO”にセットされ
る(ステップS54)。発行されたメモリアクセス命令
は、バスインターフェースユニット3、メモリコントロ
ーラ10、及びバンク実行ユニットにより、実行され
る。
リ(メモリアクセス命令)が選択され、エントリの命令
が発行された場合(ステップS53,YES)、選択さ
れたエントリの発行可能フラグが“NO”にセットされ
る(ステップS54)。発行されたメモリアクセス命令
は、バスインターフェースユニット3、メモリコントロ
ーラ10、及びバンク実行ユニットにより、実行され
る。
【0110】メモリアクセス命令の処理が完了すると、
メモリコントローラ10は、スコアボード内の、実行さ
れたメモリアクセス命令のエントリに記憶されている有
効フラグを“1”にセット、同期化フラグ0,1,2,
3を“0”にリセットする(ステップS55)。このよ
うな処理により、実行されたメモリアクセス命令が登録
されたエントリが開放される。
メモリコントローラ10は、スコアボード内の、実行さ
れたメモリアクセス命令のエントリに記憶されている有
効フラグを“1”にセット、同期化フラグ0,1,2,
3を“0”にリセットする(ステップS55)。このよ
うな処理により、実行されたメモリアクセス命令が登録
されたエントリが開放される。
【0111】以上説明した処理により、CPU1から送
られたメモリアクセス命令が実行される。
られたメモリアクセス命令が実行される。
【0112】次に、スコアボード100,110,12
0,130にそれぞれ対応して設けられたバンク実行ユ
ニット108,118,128,138の命令発行処理
を図26を参照して説明する。
0,130にそれぞれ対応して設けられたバンク実行ユ
ニット108,118,128,138の命令発行処理
を図26を参照して説明する。
【0113】バンク実行ユニットは、スコアボード内
の、これから発行しようとするメモリアクセス命令が登
録されたエントリに対し、先ず、対象エントリの有効フ
ラグが“I”であるか否か判定する(ステップS6
1)。対象エントリの有効フラグが“I”である場合、
バンク実行ユニットは、対象エントリが無効であるた
め、対象エントリのメモリアクセス命令が発行不可能で
あると判断する(ステップS62)。
の、これから発行しようとするメモリアクセス命令が登
録されたエントリに対し、先ず、対象エントリの有効フ
ラグが“I”であるか否か判定する(ステップS6
1)。対象エントリの有効フラグが“I”である場合、
バンク実行ユニットは、対象エントリが無効であるた
め、対象エントリのメモリアクセス命令が発行不可能で
あると判断する(ステップS62)。
【0114】バンク実行ユニットは、対象エントリの有
効フラグが“V”である場合(ステップS61,N
O)、対象エントリの発行フラグが“NO”であるか否
か判定する(ステップS63)。対象エントリの発行フ
ラグが“NO”である場合、バンク実行ユニットは、対
象エントリは、既に発行済みであると判断し、対象エン
トリのメモリアクセス命令の発行を行わない(ステップ
S64)。
効フラグが“V”である場合(ステップS61,N
O)、対象エントリの発行フラグが“NO”であるか否
か判定する(ステップS63)。対象エントリの発行フ
ラグが“NO”である場合、バンク実行ユニットは、対
象エントリは、既に発行済みであると判断し、対象エン
トリのメモリアクセス命令の発行を行わない(ステップ
S64)。
【0115】バンク実行ユニットは、対象エントリの発
行フラグが“YES”である場合(ステップS63,N
O)、同期化完了テーブル12のSYNCリードポイン
タの示すSYNC完了の項が全ての領域で“0”である
か否かを判定する(ステップS65)。“SYNC完
了”の項が全ての領域で“0”であることは、CPU1
から同期化命令が送られていないことを示すので、バン
ク実行ユニットは、対象エントリのメモリアクセス命令
が発行可能であると判断する(ステップS66)。
行フラグが“YES”である場合(ステップS63,N
O)、同期化完了テーブル12のSYNCリードポイン
タの示すSYNC完了の項が全ての領域で“0”である
か否かを判定する(ステップS65)。“SYNC完
了”の項が全ての領域で“0”であることは、CPU1
から同期化命令が送られていないことを示すので、バン
ク実行ユニットは、対象エントリのメモリアクセス命令
が発行可能であると判断する(ステップS66)。
【0116】同期化完了テーブル12の“SYNC完
了”の項について、いずれかの領域で“1”がセットさ
れている場合(ステップS65,NO)、バンク実行ユ
ニットは、対象エントリの同期化フラグ0〜3におい
て、SYNCリードポインタが示す同期化フラグが
“0”であるか否か判断する(ステップS67)。SY
NCリードポインタが示す同期化フラグが“0”である
場合、バンク実行ユニットは、対象エントリの命令が、
メモリコントローラ10が同期化命令を受け取った以降
にスコアボードに登録されたメモリアクセス命令である
ので、このメモリアクセス命令の発行は行わない(ステ
ップS68)。
了”の項について、いずれかの領域で“1”がセットさ
れている場合(ステップS65,NO)、バンク実行ユ
ニットは、対象エントリの同期化フラグ0〜3におい
て、SYNCリードポインタが示す同期化フラグが
“0”であるか否か判断する(ステップS67)。SY
NCリードポインタが示す同期化フラグが“0”である
場合、バンク実行ユニットは、対象エントリの命令が、
メモリコントローラ10が同期化命令を受け取った以降
にスコアボードに登録されたメモリアクセス命令である
ので、このメモリアクセス命令の発行は行わない(ステ
ップS68)。
【0117】バンク実行ユニットは、SYNCリードポ
インタが示す同期化フラグが“1”である場合(ステッ
プS68,NO)、対象エントリに登録されたメモリア
クセス命令は、同期化命令が送られた以前に登録された
メモリアクセス命令であるので、バンク実行ユニット
は、対象エントリのメモリアクセス命令が発行可能であ
ると判断する(ステップS69)。
インタが示す同期化フラグが“1”である場合(ステッ
プS68,NO)、対象エントリに登録されたメモリア
クセス命令は、同期化命令が送られた以前に登録された
メモリアクセス命令であるので、バンク実行ユニット
は、対象エントリのメモリアクセス命令が発行可能であ
ると判断する(ステップS69)。
【0118】次に、この第3実施形態において、CPU
1から以下の命令、 (1)Read 12380 (2)SYNC (3)Write 67380 (4)SYNC (5)Write abcd80 が番号順に送られた場合のメモリコントローラ10の処
理を説明する。以降、図27A乃至33Bには、領域0
に対応して設けられたスコアボード100と、同期化完
了テーブル12とに登録されるデータが示されている。
1から以下の命令、 (1)Read 12380 (2)SYNC (3)Write 67380 (4)SYNC (5)Write abcd80 が番号順に送られた場合のメモリコントローラ10の処
理を説明する。以降、図27A乃至33Bには、領域0
に対応して設けられたスコアボード100と、同期化完
了テーブル12とに登録されるデータが示されている。
【0119】尚、図27A乃至33Bでは、各エントリ
の命令の発行可/不可を示す項に、前記図26に示され
るバンク実行ユニットの処理が施された場合の判断結果
が識別できるような情報を示している。
の命令の発行可/不可を示す項に、前記図26に示され
るバンク実行ユニットの処理が施された場合の判断結果
が識別できるような情報を示している。
【0120】(a)は、前記図26のステップS62に
示される判断結果に相当し、(b)はステップS64に
示される判断結果、(x)はステップS66に示される
判断結果、(c)はステップS68に示される判断結
果、そして(y)はステップS69に示される判断結果
に相当する。これは、動作説明の理解を容易にするため
であり、実際には、単に命令発行の可/不可を示す情報
が登録されいるだけで良い。
示される判断結果に相当し、(b)はステップS64に
示される判断結果、(x)はステップS66に示される
判断結果、(c)はステップS68に示される判断結
果、そして(y)はステップS69に示される判断結果
に相当する。これは、動作説明の理解を容易にするため
であり、実際には、単に命令発行の可/不可を示す情報
が登録されいるだけで良い。
【0121】図27Aと27Bは、スコアボード100
と、同期化完了テーブル12の初期状態を示している。
従って、スコアボード100の全てのエントリは未使用
(空き)となっている。
と、同期化完了テーブル12の初期状態を示している。
従って、スコアボード100の全てのエントリは未使用
(空き)となっている。
【0122】スコアボード100の全てのエントリの発
行可/不可の項には、発行不可を示すデータが登録され
ているが、これは、バンク実行ユニット108が図18
の処理を実行した場合に、エントリが無効であることを
示す(a)に相当する。従って、発行可能なエントリは
存在しない。
行可/不可の項には、発行不可を示すデータが登録され
ているが、これは、バンク実行ユニット108が図18
の処理を実行した場合に、エントリが無効であることを
示す(a)に相当する。従って、発行可能なエントリは
存在しない。
【0123】次に、バスインターフェースユニット3か
ら、命令(1)“Read 12380”が転送された
場合のスコアボード100と、同期化完了テーブル12
を図28Aと28Bに示す。ここでは、メモリコントロ
ーラ10は、命令“Read12380”のアドレスに
対応する領域0のスコアボード100から空きエントリ
No.0を選択し、ここに命令を登録している。スコア
ボード100のエントリNo.0は発行可能である。
ら、命令(1)“Read 12380”が転送された
場合のスコアボード100と、同期化完了テーブル12
を図28Aと28Bに示す。ここでは、メモリコントロ
ーラ10は、命令“Read12380”のアドレスに
対応する領域0のスコアボード100から空きエントリ
No.0を選択し、ここに命令を登録している。スコア
ボード100のエントリNo.0は発行可能である。
【0124】この後、メモリコントローラ10が同期化
命令(2)“SYNC”を入力した場合のスコアボード
100と、同期化完了テーブル12とを図29Aと29
Bに示す。
命令(2)“SYNC”を入力した場合のスコアボード
100と、同期化完了テーブル12とを図29Aと29
Bに示す。
【0125】メモリコントローラ10は、スコアボード
100の有効エントリ(“Val”が“V”)の同期化
フラグ0を“1”にセットする。同期化完了テーブル1
2のSYNCライトポインタには“1”がセットされ、
領域0に対応した、SYNC完了フラグ0に“1”がセ
ットされる。ここで、バンク実行ユニット108が発行
可能なエントリは、No.0である。
100の有効エントリ(“Val”が“V”)の同期化
フラグ0を“1”にセットする。同期化完了テーブル1
2のSYNCライトポインタには“1”がセットされ、
領域0に対応した、SYNC完了フラグ0に“1”がセ
ットされる。ここで、バンク実行ユニット108が発行
可能なエントリは、No.0である。
【0126】この後、メモリコントローラ10が命令
(3)“Write 67380”を入力した場合のス
コアボード100と、同期化完了テーブル12とを図3
0A乃至30Bに示す。メモリコントローラ10は、命
令“Write 67380”のアドレスに対応する領
域0のスコアボード100から空きエントリNo.1を
選択し、ここに命令を登録する。スコアボード100で
はエントリNo.0,No.1が発行可能である。
(3)“Write 67380”を入力した場合のス
コアボード100と、同期化完了テーブル12とを図3
0A乃至30Bに示す。メモリコントローラ10は、命
令“Write 67380”のアドレスに対応する領
域0のスコアボード100から空きエントリNo.1を
選択し、ここに命令を登録する。スコアボード100で
はエントリNo.0,No.1が発行可能である。
【0127】この後、メモリコントローラ10が2番目
の同期化命令(4)“SYNC”を入力した場合のスコ
アボード100と、同期化完了テーブル12とを図31
A乃至31Bに示す。
の同期化命令(4)“SYNC”を入力した場合のスコ
アボード100と、同期化完了テーブル12とを図31
A乃至31Bに示す。
【0128】メモリコントローラ10は、スコアボード
100の有効エントリ(“Val”が“V”)の同期化
フラグ0〜3の内、同期化完了テーブル12のSYNC
ライトポインタに対応する同期化フラグ1を“1”にセ
ットする。この後、同期化完了テーブル12のSYNC
ライトポインタは“2”がセットされ、領域0に対応し
た、SYNC完了フラグ1に“1”がセットされる。こ
こで、バンク実行ユニット108が発行可能なエントリ
は、No.0である。
100の有効エントリ(“Val”が“V”)の同期化
フラグ0〜3の内、同期化完了テーブル12のSYNC
ライトポインタに対応する同期化フラグ1を“1”にセ
ットする。この後、同期化完了テーブル12のSYNC
ライトポインタは“2”がセットされ、領域0に対応し
た、SYNC完了フラグ1に“1”がセットされる。こ
こで、バンク実行ユニット108が発行可能なエントリ
は、No.0である。
【0129】この後、メモリコントローラ10が命令
(5)“Write abcd80”を入力した場合の
スコアボード100と、同期化完了テーブル12とを図
32Aと32Bに示す。メモリコントローラ10は、命
令“Write abcd80”のアドレスに対応する
領域0のスコアボード100から空きエントリNo.2
を選択し、ここに命令を登録する。但し、スコアボード
100における発行可能なエントリはNo.0のみであ
る。これは、登録された命令を(1),(3),(5)
の順で発行するためである。
(5)“Write abcd80”を入力した場合の
スコアボード100と、同期化完了テーブル12とを図
32Aと32Bに示す。メモリコントローラ10は、命
令“Write abcd80”のアドレスに対応する
領域0のスコアボード100から空きエントリNo.2
を選択し、ここに命令を登録する。但し、スコアボード
100における発行可能なエントリはNo.0のみであ
る。これは、登録された命令を(1),(3),(5)
の順で発行するためである。
【0130】この後、バンク実行ユニット108が、エ
ントリNo.0の命令を発行した場合のスコアボード1
00と、同期化完了テーブル12とを図33Aと33B
に示す。スコアボード100の“Val”の項は“I”
にセットされ、“En”の項は“NO”にセットされ、
SYNCフラグ0,1は共に“0”にリセットされる。
これにより、エントリNo.0は開放される。
ントリNo.0の命令を発行した場合のスコアボード1
00と、同期化完了テーブル12とを図33Aと33B
に示す。スコアボード100の“Val”の項は“I”
にセットされ、“En”の項は“NO”にセットされ、
SYNCフラグ0,1は共に“0”にリセットされる。
これにより、エントリNo.0は開放される。
【0131】又、同期化完了テーブル12では、SYNCリ
ードポインタが“1”にセットされ、領域0に対応する
SYNC完了フラグ0が“0”にリセットされる。
ードポインタが“1”にセットされ、領域0に対応する
SYNC完了フラグ0が“0”にリセットされる。
【0132】このような処理により、複数の同期化命令
が送られた場合であっても正しい命令発行順で処理する
ことが可能となる。
が送られた場合であっても正しい命令発行順で処理する
ことが可能となる。
【0133】(第4実施形態)本実施形態は、図34に
示すように、複数レベルの同期化フラグ(SYNCフラ
グ)を設けたスコアボードと、複数レベルの同期化完了
フラグ(SYNC完了)を設けた同期化完了テーブルと
を有するメモリコントローラ10において、各レベルに
対して独立した同期化条件を設定できる同期化完了テー
ブルを備えたものである。本実施形態は、同期化の処理
同士の完了を非プログラム順序(outof orde
r)処理で実行し、同期化処理のオーバーヘッドを小さ
くする機能を実現する。なお、同期化レベルの全てが使
用されている状態で、後続の同期化オペレーションの要
求がある場合には後続の同期化オペレーションはリトラ
イされる。
示すように、複数レベルの同期化フラグ(SYNCフラ
グ)を設けたスコアボードと、複数レベルの同期化完了
フラグ(SYNC完了)を設けた同期化完了テーブルと
を有するメモリコントローラ10において、各レベルに
対して独立した同期化条件を設定できる同期化完了テー
ブルを備えたものである。本実施形態は、同期化の処理
同士の完了を非プログラム順序(outof orde
r)処理で実行し、同期化処理のオーバーヘッドを小さ
くする機能を実現する。なお、同期化レベルの全てが使
用されている状態で、後続の同期化オペレーションの要
求がある場合には後続の同期化オペレーションはリトラ
イされる。
【0134】換言すれば、本実施形態は、前述の第3実
施形態に複数レベルの同期化条件を付加した内容であ
る。このような構成により、異なる同期化条件の場合に
は、前述の第2実施形態と同様の動作を実行し、先行同
期化オペレーションは“Null”にする。同一の同期
化条件の場合(例えば、同一プロセッサからの同期化、
同一アドレスに対する同期化等)には、先行同期化オペ
レーションをセットし、前述の第3実施形態と同様の動
作を実行する。従って、異なる同期化条件の場合には、
独立に非プログラム順序(out of order
化)処理で同期化するため、同期化処理のオーバーヘッ
ドを小さくできる。
施形態に複数レベルの同期化条件を付加した内容であ
る。このような構成により、異なる同期化条件の場合に
は、前述の第2実施形態と同様の動作を実行し、先行同
期化オペレーションは“Null”にする。同一の同期
化条件の場合(例えば、同一プロセッサからの同期化、
同一アドレスに対する同期化等)には、先行同期化オペ
レーションをセットし、前述の第3実施形態と同様の動
作を実行する。従って、異なる同期化条件の場合には、
独立に非プログラム順序(out of order
化)処理で同期化するため、同期化処理のオーバーヘッ
ドを小さくできる。
【0135】以下、図34を参照して具体的に説明す
る。
る。
【0136】第4実施形態は、図34に示すように、各
同期化レベル0〜3に対して、同期化条件(ここでは、
同一アドレスSA)を示す同期化条件テーブル163を
設けた同期化完了テーブル12を備えている。これによ
り、互いに独立した同期化オペレーションは独立して実
行できる。
同期化レベル0〜3に対して、同期化条件(ここでは、
同一アドレスSA)を示す同期化条件テーブル163を
設けた同期化完了テーブル12を備えている。これによ
り、互いに独立した同期化オペレーションは独立して実
行できる。
【0137】本実施形態では、同期化条件が同一アドレ
スへのリード/ライトであれば他の記憶領域には無関係
である。例えば記憶領域0のあるアドレス(アドレス1
00等)へのリード/アドレスに対して、同期化オペレ
ーションが発行されたと想定すると、記憶領域1,2,
3は同期化オペレーションがない時と同じ条件で動作で
きる。また、このとき記憶領域2のアドレス(アドレス
1008等)への同期化オペレーションが発行される
と、先に発行された記憶領域0への同期化オペレーショ
ンとは独立して処理することができる。
スへのリード/ライトであれば他の記憶領域には無関係
である。例えば記憶領域0のあるアドレス(アドレス1
00等)へのリード/アドレスに対して、同期化オペレ
ーションが発行されたと想定すると、記憶領域1,2,
3は同期化オペレーションがない時と同じ条件で動作で
きる。また、このとき記憶領域2のアドレス(アドレス
1008等)への同期化オペレーションが発行される
と、先に発行された記憶領域0への同期化オペレーショ
ンとは独立して処理することができる。
【0138】同期化条件を個々のレベルに適用する以外
の動作については、前述の第3実施形態と同様である。
図34の状態では、同期化条件として「同一アドレス」
を使用することを示すSAが同期化条件0,3にセット
されている。記憶領域3は同期化条件に合致しないの
で、このあと入ってきたオペレーションは他の記憶領域
の同期化完了を待つことなく実行できる。仮に、同期化
条件3が「全てのアドレスに対して」であれば、記憶領
域3のエントリは同期化条件3が完了した時点で発行で
きるようになる。なお、それぞれのレベルの同期化フラ
グが全て“0”であれば、そのレベルの同期化は完了し
ているので同期化完了テーブルは省略してもよい。
の動作については、前述の第3実施形態と同様である。
図34の状態では、同期化条件として「同一アドレス」
を使用することを示すSAが同期化条件0,3にセット
されている。記憶領域3は同期化条件に合致しないの
で、このあと入ってきたオペレーションは他の記憶領域
の同期化完了を待つことなく実行できる。仮に、同期化
条件3が「全てのアドレスに対して」であれば、記憶領
域3のエントリは同期化条件3が完了した時点で発行で
きるようになる。なお、それぞれのレベルの同期化フラ
グが全て“0”であれば、そのレベルの同期化は完了し
ているので同期化完了テーブルは省略してもよい。
【0139】以上のように、この実施形態をメモリバン
ク構成のメモリコントローラに適用すれば、バンク毎に
同期化条件が異なる場合には、バンク単位で独立して同
期化処理を行なうことができるため有効である。
ク構成のメモリコントローラに適用すれば、バンク毎に
同期化条件が異なる場合には、バンク単位で独立して同
期化処理を行なうことができるため有効である。
【0140】次に、前述した第4実施形態の動作をより
詳細に説明する。
詳細に説明する。
【0141】先ず、第4実施形態において、メモリアク
セス命令がCPU1により発行された場合の処理は、前
述した第3実施形態で参照した図25と同様であるので
詳細な説明は省略する。
セス命令がCPU1により発行された場合の処理は、前
述した第3実施形態で参照した図25と同様であるので
詳細な説明は省略する。
【0142】次に、スコアボード100,110,12
0,130にそれぞれ対応して設けられたバンク実行ユ
ニット108,118,128,138の命令発行処理
を図35を参照して説明する。
0,130にそれぞれ対応して設けられたバンク実行ユ
ニット108,118,128,138の命令発行処理
を図35を参照して説明する。
【0143】バンク実行ユニットは、スコアボード内
の、これから発行しようとするメモリアクセス命令が登
録されたエントリに対し、先ず、対象エントリの有効フ
ラグが“I”であるか否か判定する(ステップS7
1)。対象エントリの有効フラグが“I”である場合、
バンク実行ユニットは、対象エントリが無効であるた
め、対象エントリのメモリアクセス命令が発行不可能で
あると判断する(ステップS72)。
の、これから発行しようとするメモリアクセス命令が登
録されたエントリに対し、先ず、対象エントリの有効フ
ラグが“I”であるか否か判定する(ステップS7
1)。対象エントリの有効フラグが“I”である場合、
バンク実行ユニットは、対象エントリが無効であるた
め、対象エントリのメモリアクセス命令が発行不可能で
あると判断する(ステップS72)。
【0144】バンク実行ユニットは、対象エントリの有
効フラグが“V”である場合(ステップS71,N
O)、対象エントリの発行フラグが“NO”であるか否
か判定する(ステップS73)。対象エントリの発行フ
ラグが“NO”である場合、バンク実行ユニットは、対
象エントリは、既に発行済みであると判断し、対象エン
トリのメモリアクセス命令の発行を行わない(ステップ
S74)。
効フラグが“V”である場合(ステップS71,N
O)、対象エントリの発行フラグが“NO”であるか否
か判定する(ステップS73)。対象エントリの発行フ
ラグが“NO”である場合、バンク実行ユニットは、対
象エントリは、既に発行済みであると判断し、対象エン
トリのメモリアクセス命令の発行を行わない(ステップ
S74)。
【0145】バンク実行ユニットは、対象エントリの発
行フラグが“YES”である場合(ステップS73,N
O)、同期化完了テーブル12のSYNCリードポイン
タの示すSYNC完了の項が全ての領域で“0”である
か否かを判定する(ステップS75)。“SYNC完
了”の項が全ての領域で“0”であることは、CPU1
から同期化命令が送られていないことを示すので、バン
ク実行ユニットは、対象エントリのメモリアクセス命令
が発行可能であると判断する(ステップS76)。
行フラグが“YES”である場合(ステップS73,N
O)、同期化完了テーブル12のSYNCリードポイン
タの示すSYNC完了の項が全ての領域で“0”である
か否かを判定する(ステップS75)。“SYNC完
了”の項が全ての領域で“0”であることは、CPU1
から同期化命令が送られていないことを示すので、バン
ク実行ユニットは、対象エントリのメモリアクセス命令
が発行可能であると判断する(ステップS76)。
【0146】同期化完了テーブル12の“SYNC完
了”の項について、いずれかの領域で“1”がセットさ
れている場合(ステップS75,NO)、バンク実行ユ
ニットは、対象エントリが、SYNCリードポインタの
示す同期化条件に一致するか否か判定する(ステップS
77)。SYNCリードポインタの示す同期化条件に一
致しない場合、対象エントリは、同期化対象命令ではな
いので、対象エントリのメモリアクセス命令が発行可能
であると判断する(ステップS78)。
了”の項について、いずれかの領域で“1”がセットさ
れている場合(ステップS75,NO)、バンク実行ユ
ニットは、対象エントリが、SYNCリードポインタの
示す同期化条件に一致するか否か判定する(ステップS
77)。SYNCリードポインタの示す同期化条件に一
致しない場合、対象エントリは、同期化対象命令ではな
いので、対象エントリのメモリアクセス命令が発行可能
であると判断する(ステップS78)。
【0147】SYNCリードポインタの示す同期化条件
に一致する場合(ステップS77,NO)、バンク実行
ユニットは、対象エントリの同期化フラグ0〜3におい
て、SYNCリードポインタが示す同期化フラグが
“0”であるか否か判定する(ステップS79)。SY
NCリードポインタが示す同期化フラグが“0”である
場合、バンク実行ユニットは、対象エントリの命令が、
メモリコントローラ10が同期化命令を受け取った以降
にスコアボードに登録されたメモリアクセス命令である
ので、このメモリアクセス命令の発行は行わない(ステ
ップS80)。
に一致する場合(ステップS77,NO)、バンク実行
ユニットは、対象エントリの同期化フラグ0〜3におい
て、SYNCリードポインタが示す同期化フラグが
“0”であるか否か判定する(ステップS79)。SY
NCリードポインタが示す同期化フラグが“0”である
場合、バンク実行ユニットは、対象エントリの命令が、
メモリコントローラ10が同期化命令を受け取った以降
にスコアボードに登録されたメモリアクセス命令である
ので、このメモリアクセス命令の発行は行わない(ステ
ップS80)。
【0148】バンク実行ユニットは、SYNCリードポイン
タが示す同期化フラグが“1”である場合(ステップS
79,NO)、対象エントリに登録されたメモリアクセ
ス命令は、同期化命令が送られた以前に登録されたメモ
リアクセス命令であるので、バンク実行ユニットは、対
象エントリのメモリアクセス命令が発行可能であると判
断する(ステップS81)。
タが示す同期化フラグが“1”である場合(ステップS
79,NO)、対象エントリに登録されたメモリアクセ
ス命令は、同期化命令が送られた以前に登録されたメモ
リアクセス命令であるので、バンク実行ユニットは、対
象エントリのメモリアクセス命令が発行可能であると判
断する(ステップS81)。
【0149】次に、この第4実施形態において、CPU
1から以下の命令、 (1)Read 12380 (2)SYNC (3)Write 67380 (4)Write 12380 (5)SYNC (6)Write abcd80 が番号順に送られた場合のメモリコントローラ10の処
理を説明する。以降、図36A乃至42Bには、領域0
に対応して設けられたスコアボード100と、同期化完
了テーブル12とに登録されるデータが示されている。
1から以下の命令、 (1)Read 12380 (2)SYNC (3)Write 67380 (4)Write 12380 (5)SYNC (6)Write abcd80 が番号順に送られた場合のメモリコントローラ10の処
理を説明する。以降、図36A乃至42Bには、領域0
に対応して設けられたスコアボード100と、同期化完
了テーブル12とに登録されるデータが示されている。
【0150】同期化条件は、前述した第2実施形態の同
期化条件と同様とする。
期化条件と同様とする。
【0151】尚、図36A乃至42Bでは、各エントリ
の命令の発行可/不可を示す項に、前記図35に示され
るバンク実行ユニットの処理が施された場合の判断結果
が識別できるような情報を示している。
の命令の発行可/不可を示す項に、前記図35に示され
るバンク実行ユニットの処理が施された場合の判断結果
が識別できるような情報を示している。
【0152】(a)は、前記図26のステップS72に
示される判断結果に相当し、(b)はステップS74に
示される判断結果、(x)はステップS76に示される
判断結果、(z)はステップS78に示される判断結
果、(c)はステップS80に示される判断結果、そし
て(y)はステップS81に示される判断結果に相当す
る。これは、動作説明の理解を容易にするためであり、
実際には、単に命令発行の可/不可を示す情報が登録さ
れいるだけで良い。
示される判断結果に相当し、(b)はステップS74に
示される判断結果、(x)はステップS76に示される
判断結果、(z)はステップS78に示される判断結
果、(c)はステップS80に示される判断結果、そし
て(y)はステップS81に示される判断結果に相当す
る。これは、動作説明の理解を容易にするためであり、
実際には、単に命令発行の可/不可を示す情報が登録さ
れいるだけで良い。
【0153】図36Aと36Bは、スコアボード100
と、同期化完了テーブル12の初期状態を示している。
従って、スコアボード100の全てのエントリは未使用
(空き)となっている。スコアボード100の全てのエ
ントリの発行可/不可の項には、発行不可を示すデータ
が登録されているが、これは、バンク実行ユニット10
8が図35の処理を実行した場合に、エントリが無効で
あることを示す(a)に相当する。従って、発行可能な
エントリは存在しない。
と、同期化完了テーブル12の初期状態を示している。
従って、スコアボード100の全てのエントリは未使用
(空き)となっている。スコアボード100の全てのエ
ントリの発行可/不可の項には、発行不可を示すデータ
が登録されているが、これは、バンク実行ユニット10
8が図35の処理を実行した場合に、エントリが無効で
あることを示す(a)に相当する。従って、発行可能な
エントリは存在しない。
【0154】次に、バスインターフェイスユニット3か
ら、命令(1)“Read 12380”が転送された
場合のスコアボード100と、同期化完了テーブル12
を図37Aと37Bに示す。ここでは、メモリコントロ
ーラ10は、命令“Read12380”のアドレスに
対応する領域0のスコアボード100から空きエントリ
No.0を選択し、ここに命令を登録している。スコア
ボード100のエントリNo.0は発行可能である。
ら、命令(1)“Read 12380”が転送された
場合のスコアボード100と、同期化完了テーブル12
を図37Aと37Bに示す。ここでは、メモリコントロ
ーラ10は、命令“Read12380”のアドレスに
対応する領域0のスコアボード100から空きエントリ
No.0を選択し、ここに命令を登録している。スコア
ボード100のエントリNo.0は発行可能である。
【0155】この後、メモリコントローラ10が同期化
命令(2)“SYNC”を入力した場合のスコアボード
100と、同期化完了テーブル12とを図38Aと38
Bに示す。メモリコントローラ10は、スコアボード1
00の有効エントリ(“Val”が“V”)の同期化フ
ラグ0を“1”にセットする。同期化完了テーブル12
のSYNCライトポインタには“1”がセットされ、領
域0に対応した、SYNC完了フラグ0に“1”がセッ
トされる。ここで、バンク実行ユニット108が発行可
能なエントリは、No.0である。
命令(2)“SYNC”を入力した場合のスコアボード
100と、同期化完了テーブル12とを図38Aと38
Bに示す。メモリコントローラ10は、スコアボード1
00の有効エントリ(“Val”が“V”)の同期化フ
ラグ0を“1”にセットする。同期化完了テーブル12
のSYNCライトポインタには“1”がセットされ、領
域0に対応した、SYNC完了フラグ0に“1”がセッ
トされる。ここで、バンク実行ユニット108が発行可
能なエントリは、No.0である。
【0156】この後、メモリコントローラ10が命令
(3)“Write 67380”を入力した場合のス
コアボード100と、同期化完了テーブル12とを図3
9Aと39Bに示す。メモリコントローラ10は、命令
“Write 67380”のアドレスに対応する領域
0のスコアボード100から空きエントリNo.1を選
択し、ここに命令を登録する。スコアボード100では
エントリNo.0,No.1が発行可能である。
(3)“Write 67380”を入力した場合のス
コアボード100と、同期化完了テーブル12とを図3
9Aと39Bに示す。メモリコントローラ10は、命令
“Write 67380”のアドレスに対応する領域
0のスコアボード100から空きエントリNo.1を選
択し、ここに命令を登録する。スコアボード100では
エントリNo.0,No.1が発行可能である。
【0157】この後、メモリコントローラ10が命令
(4)“Write 12380”を入力した場合のス
コアボード100と、同期化完了テーブル12とを図4
0Aと40Bに示す。メモリコントローラ10は、命令
“Write 12380”のアドレスに対応する領域
0のスコアボード100から空きエントリNo.2を選
択し、ここに命令を登録する。但し、スコアボード10
0ではエントリNo.0,No.1のみが発行可能であ
る。
(4)“Write 12380”を入力した場合のス
コアボード100と、同期化完了テーブル12とを図4
0Aと40Bに示す。メモリコントローラ10は、命令
“Write 12380”のアドレスに対応する領域
0のスコアボード100から空きエントリNo.2を選
択し、ここに命令を登録する。但し、スコアボード10
0ではエントリNo.0,No.1のみが発行可能であ
る。
【0158】この後、メモリコントローラ10が2番目
の同期化命令(5)“SYNC”を入力した場合のスコ
アボード100と、同期化完了テーブル12とを図41
Aと41Bに示す。メモリコントローラ10は、スコア
ボード100の有効エントリ(“Val”が“V”)の
同期化フラグ0〜3の内、同期化完了テーブル12のS
YNCライトポインタに対応する同期化フラグ1を
“1”にセットする。この後、同期化完了テーブル12
のSYNCライトポインタは“2”がセットされ、領域
0に対応した、SYNC完了フラグ1に“1”がセット
される。ここで、バンク実行ユニット108が発行可能
なエントリは、No.0,No.1のみである。
の同期化命令(5)“SYNC”を入力した場合のスコ
アボード100と、同期化完了テーブル12とを図41
Aと41Bに示す。メモリコントローラ10は、スコア
ボード100の有効エントリ(“Val”が“V”)の
同期化フラグ0〜3の内、同期化完了テーブル12のS
YNCライトポインタに対応する同期化フラグ1を
“1”にセットする。この後、同期化完了テーブル12
のSYNCライトポインタは“2”がセットされ、領域
0に対応した、SYNC完了フラグ1に“1”がセット
される。ここで、バンク実行ユニット108が発行可能
なエントリは、No.0,No.1のみである。
【0159】この後、メモリコントローラ10が命令
(6)“Write abcd80”を入力するた場合
のスコアボード100と、同期化完了テーブル12とを
図42Aと42Bに示す。メモリコントローラ10は、
命令“Write abcd80”のアドレスに対応す
る領域0のスコアボード100から空きエントリNo.
3を選択し、ここに命令を登録する。ここで、同期化完
了テーブル12のSYNCライトポインタは“2”にセ
ットされ、領域0に対応するSYNC完了フラグ1は
“1”がセットされる。但し、スコアボード100にお
ける発行可能なエントリはNo.0,1のみである。
(6)“Write abcd80”を入力するた場合
のスコアボード100と、同期化完了テーブル12とを
図42Aと42Bに示す。メモリコントローラ10は、
命令“Write abcd80”のアドレスに対応す
る領域0のスコアボード100から空きエントリNo.
3を選択し、ここに命令を登録する。ここで、同期化完
了テーブル12のSYNCライトポインタは“2”にセ
ットされ、領域0に対応するSYNC完了フラグ1は
“1”がセットされる。但し、スコアボード100にお
ける発行可能なエントリはNo.0,1のみである。
【0160】以上の処理により、メモリコントローラ1
0は、複数の同期化命令を受け付けることができると共
に、予め定められた同期化条件に従って、メモリアクセ
ス命令を発行することができる。
0は、複数の同期化命令を受け付けることができると共
に、予め定められた同期化条件に従って、メモリアクセ
ス命令を発行することができる。
【0161】(第5実施形態)第5実施形態は、図43
に示すように、前述の第1実施形態に対して、同期化完
了テーブルを省略し、かつ同期化フラグをスコアボード
11から削除した構成のメモリコントローラ10であ
る。
に示すように、前述の第1実施形態に対して、同期化完
了テーブルを省略し、かつ同期化フラグをスコアボード
11から削除した構成のメモリコントローラ10であ
る。
【0162】即ち、第5実施形態は、同期化条件(同期
化の如何にかかわらず)を全てのオペレーションに適用
し、同期化オペレーションがある条件をもつオペレーシ
ョンに対して作用する場合(同一要求に対する、あるい
は同一アドレスに対する等の場合)、常に(同期化の実
行とは無関係)、同期化条件を満たすオペレーションの
みを実行する方式である。これにより、同期化フラグお
よび同期化完了フラグを省略でき、同期化命令以後のオ
ペレーションのリトライを防ぎ、システムの処理能力を
向上することができる。この実施形態は、out of
orderよりもweak orderで常に条件判
定をしている場合に特に有効である。即ち、通常のシス
テムでは、同一アドレスに対するアクセス動作の順番が
保証されていれば十分であるため、この実施形態の方式
が有効である。この場合、同一アドレスに対するアクセ
スの順番を入れ替えない(アドレスの一部を比較しても
よい)ことが前提であり、具体的にはwriteとwr
ite、readとwriteの順番を入れ替えない手
段が必要である(後述の順序フラグ)。
化の如何にかかわらず)を全てのオペレーションに適用
し、同期化オペレーションがある条件をもつオペレーシ
ョンに対して作用する場合(同一要求に対する、あるい
は同一アドレスに対する等の場合)、常に(同期化の実
行とは無関係)、同期化条件を満たすオペレーションの
みを実行する方式である。これにより、同期化フラグお
よび同期化完了フラグを省略でき、同期化命令以後のオ
ペレーションのリトライを防ぎ、システムの処理能力を
向上することができる。この実施形態は、out of
orderよりもweak orderで常に条件判
定をしている場合に特に有効である。即ち、通常のシス
テムでは、同一アドレスに対するアクセス動作の順番が
保証されていれば十分であるため、この実施形態の方式
が有効である。この場合、同一アドレスに対するアクセ
スの順番を入れ替えない(アドレスの一部を比較しても
よい)ことが前提であり、具体的にはwriteとwr
ite、readとwriteの順番を入れ替えない手
段が必要である(後述の順序フラグ)。
【0163】以下、図43を参照して具体的に説明す
る。
る。
【0164】図43に示すように、この実施形態は、同
期化条件を全てのオペレーションに適用し、同期化フラ
グ及び同期化完了テーブルを省略し、スコアボード10
0,110,120,130に、先行オペレーションを
示す順序フラグ103のエントリを付加している。
期化条件を全てのオペレーションに適用し、同期化フラ
グ及び同期化完了テーブルを省略し、スコアボード10
0,110,120,130に、先行オペレーションを
示す順序フラグ103のエントリを付加している。
【0165】このエントリは、例えば先行オペレーショ
ンに同一アドレスがある場合に、該当する先行オペレー
ションのエントリ番号をセットする。該当の先行オペレ
ーションが発行または無効化されると、順序フラグを無
効化(−)してオペレーションを発行可能とする。
ンに同一アドレスがある場合に、該当する先行オペレー
ションのエントリ番号をセットする。該当の先行オペレ
ーションが発行または無効化されると、順序フラグを無
効化(−)してオペレーションを発行可能とする。
【0166】例えば、同期化オペレーションが「同一の
アドレスに対するリード/ライト」に対するものだけで
あれば、オペレーションをエントリに登録するときに、
既に同一アドレスに対するアクセスが登録されていたな
らば、そのエントリ番号を順序フラグとしてセットす
る。同一アドレスへのアクセスが複数登録されている場
合には、最後に登録されたアクセスのエントリ番号を、
順序フラグとしてセットする。
アドレスに対するリード/ライト」に対するものだけで
あれば、オペレーションをエントリに登録するときに、
既に同一アドレスに対するアクセスが登録されていたな
らば、そのエントリ番号を順序フラグとしてセットす
る。同一アドレスへのアクセスが複数登録されている場
合には、最後に登録されたアクセスのエントリ番号を、
順序フラグとしてセットする。
【0167】先行オペレーション、即ち順序フラグが有
効である間は、該当するエントリのオペレーションは発
行できない。先行オペレーションが処理されると、後続
エントリの順序フラグはクリアされて、後続エントリは
発行可能となる。ここで、あるエントリが登録後に何ら
かの理由でキャンセルされた場合には、そのエントリは
NOPとして残しておくことにすれば、キャンセルによ
って記憶装置がロックされるのを防ぐことができる。
効である間は、該当するエントリのオペレーションは発
行できない。先行オペレーションが処理されると、後続
エントリの順序フラグはクリアされて、後続エントリは
発行可能となる。ここで、あるエントリが登録後に何ら
かの理由でキャンセルされた場合には、そのエントリは
NOPとして残しておくことにすれば、キャンセルによ
って記憶装置がロックされるのを防ぐことができる。
【0168】図43は、同一アドレスに対する同期化処
理を常に実行している場合を想定している。例えば記憶
領域0では有効なエントリのうち、4つが同一アドレス
へのアクセスになっている。この実施形態では、同一ア
ドレスに対しては常に同期化を実行している場合を想定
し、同一アドレスへの先行オペレーションが順序フラグ
により指示されている。
理を常に実行している場合を想定している。例えば記憶
領域0では有効なエントリのうち、4つが同一アドレス
へのアクセスになっている。この実施形態では、同一ア
ドレスに対しては常に同期化を実行している場合を想定
し、同一アドレスへの先行オペレーションが順序フラグ
により指示されている。
【0169】図43の状態では、No.1,No.0,
No.7,No.5の各エントリが順に同一アドレスへ
アクセスしている。エントリNo.0はバスオペレーシ
ョンとして完了しているが、エントリNo.1が先行オ
ペレーションとして順序フラグとして登録されているの
で、エントリNo.1の処理が終了するまで発行できな
い。同様に、エントリNo.7はエントリNo.0が終
了するまで、エントリNo.5はエントリNo.7が終
了するまで発行できない。これにより、エントリNo.
1,No.0.No.7,No.5の順番で実行される
ことが保証されることになる。
No.7,No.5の各エントリが順に同一アドレスへ
アクセスしている。エントリNo.0はバスオペレーシ
ョンとして完了しているが、エントリNo.1が先行オ
ペレーションとして順序フラグとして登録されているの
で、エントリNo.1の処理が終了するまで発行できな
い。同様に、エントリNo.7はエントリNo.0が終
了するまで、エントリNo.5はエントリNo.7が終
了するまで発行できない。これにより、エントリNo.
1,No.0.No.7,No.5の順番で実行される
ことが保証されることになる。
【0170】ここで、エントリNo.7はバスオペレー
ションが完了していないので、キャンセルされる可能性
がある。エントリNo.7がキャンセルされた場合に
は、エントリの有効フラグを“I”に変えるのではな
く、オペレーションをWriteからNopに変更する
ことにすれば、キャンセルによりエントリNo.5がい
つまでも発行できなくなることはない。
ションが完了していないので、キャンセルされる可能性
がある。エントリNo.7がキャンセルされた場合に
は、エントリの有効フラグを“I”に変えるのではな
く、オペレーションをWriteからNopに変更する
ことにすれば、キャンセルによりエントリNo.5がい
つまでも発行できなくなることはない。
【0171】次に、前述した第5実施形態の動作をより
詳細に説明する。
詳細に説明する。
【0172】先ず、第5実施形態において、メモリアク
セス命令がCPU1により発行された場合の処理を図4
4を参照して説明する。
セス命令がCPU1により発行された場合の処理を図4
4を参照して説明する。
【0173】CPU1により発行されたメモリアクセス
命令は、バス2を介してバスインターフェイスユニット
3に送られる。バスインターフェイスユニット3は、受
け取ったメモリアクセス命令をメモリコントローラ10
に転送する(ステップS91)。
命令は、バス2を介してバスインターフェイスユニット
3に送られる。バスインターフェイスユニット3は、受
け取ったメモリアクセス命令をメモリコントローラ10
に転送する(ステップS91)。
【0174】メモリコントローラ10は、受け取ったメ
モリアクセス命令が同期化命令以外のメモリアクセス命
令である場合、受け取ったメモリアクセス命令のアドレ
スに基づいて、スコアボード100,110,120,
130から対応するスコアボードを選択する。更に、メ
モリコントローラ10は、選択したスコアボードの全エ
ントリから、有効フラグが1にセットされているエント
リ(空きエントリ)を選択する。この後、メモリコント
ローラ10は、前記転送されたメモリアクセス命令を、
先に選択されたエントリに登録する(ステップS9
2)。
モリアクセス命令が同期化命令以外のメモリアクセス命
令である場合、受け取ったメモリアクセス命令のアドレ
スに基づいて、スコアボード100,110,120,
130から対応するスコアボードを選択する。更に、メ
モリコントローラ10は、選択したスコアボードの全エ
ントリから、有効フラグが1にセットされているエント
リ(空きエントリ)を選択する。この後、メモリコント
ローラ10は、前記転送されたメモリアクセス命令を、
先に選択されたエントリに登録する(ステップS9
2)。
【0175】登録の際、メモリコントローラ10は、メ
モリアクセス命令のオペレーションコード、及びアドレ
スを登録すると共に、登録対象のエントリの発行可能フ
ラグを“YES”にセットし、有効フラグを“V”にセ
ットしする。
モリアクセス命令のオペレーションコード、及びアドレ
スを登録すると共に、登録対象のエントリの発行可能フ
ラグを“YES”にセットし、有効フラグを“V”にセ
ットしする。
【0176】メモリコントローラ10は、同期化条件に
従って、対象エントリのメモリアクセス命令に関連す
る、即ち、同期化対象となるオペレーションがスコアボ
ードに存在するか判定する(ステップS93)。同期化
対象となるオペレーションが存在する場合、メモリコン
トローラ10は、最後に登録された同期化対象となる
(先行)オペレーションのエントリ番号を順序フラグに
登録する(ステップS94)。同期化対象となるオペレ
ーションが存在しない場合、メモリコントローラ10
は、対象エントリの順序フラグを無効化する(ステップ
S95)。
従って、対象エントリのメモリアクセス命令に関連す
る、即ち、同期化対象となるオペレーションがスコアボ
ードに存在するか判定する(ステップS93)。同期化
対象となるオペレーションが存在する場合、メモリコン
トローラ10は、最後に登録された同期化対象となる
(先行)オペレーションのエントリ番号を順序フラグに
登録する(ステップS94)。同期化対象となるオペレ
ーションが存在しない場合、メモリコントローラ10
は、対象エントリの順序フラグを無効化する(ステップ
S95)。
【0177】メモリコントローラ10は、エントリの順
序フラグに登録されているエントリ番号の示す(先行)
オペレーションが完了すると、この順序フラグを無効化
する(ステップS96)。
序フラグに登録されているエントリ番号の示す(先行)
オペレーションが完了すると、この順序フラグを無効化
する(ステップS96)。
【0178】一方、メモリコントローラ10において
は、バンク実行ユニット108,118,128,13
8の制御に従って、スコアボードからエントリが選択さ
れ、エントリの命令が発行される(ステップS97)。
は、バンク実行ユニット108,118,128,13
8の制御に従って、スコアボードからエントリが選択さ
れ、エントリの命令が発行される(ステップS97)。
【0179】登録されたエントリ(メモリアクセス命
令)が選択され、エントリの命令が発行された場合(ス
テップS97,YES)、選択されたエントリの発行可
能フラグが“NO”にセットされる(ステップS9
8)。発行されたメモリアクセス命令は、バスインター
フェイスユニット3、メモリコントローラ10、及びバ
ンク実行ユニットにより、実行される。
令)が選択され、エントリの命令が発行された場合(ス
テップS97,YES)、選択されたエントリの発行可
能フラグが“NO”にセットされる(ステップS9
8)。発行されたメモリアクセス命令は、バスインター
フェイスユニット3、メモリコントローラ10、及びバ
ンク実行ユニットにより、実行される。
【0180】メモリアクセス命令の処理が完了すると、
メモリコントローラ10は、スコアボード内の、実行さ
れたメモリアクセス命令のエントリに記憶されている有
効フラグを“1”にセットし、実行されたメモリ命令が
登録されたエントリを開放する(ステップS99)。メ
モリコントローラ10は、処理の完了したエントリを示
す、エントリの順序フラグがあれば、この順序フラグを
無効化する。
メモリコントローラ10は、スコアボード内の、実行さ
れたメモリアクセス命令のエントリに記憶されている有
効フラグを“1”にセットし、実行されたメモリ命令が
登録されたエントリを開放する(ステップS99)。メ
モリコントローラ10は、処理の完了したエントリを示
す、エントリの順序フラグがあれば、この順序フラグを
無効化する。
【0181】以上説明した処理により、CPU1から送
られたメモリアクセス命令が実行される。
られたメモリアクセス命令が実行される。
【0182】次に、スコアボード100,110,12
0,130にそれぞれ対応して設けられたバンク実行ユ
ニット108,118,128,138の命令発行処理
を図45を参照して説明する。
0,130にそれぞれ対応して設けられたバンク実行ユ
ニット108,118,128,138の命令発行処理
を図45を参照して説明する。
【0183】バンク実行ユニットは、スコアボード内
の、これから発行しようとするメモリアクセス命令が登
録されたエントリに対し、先ず、対象エントリの有効フ
ラグが“I”であるか否か判定する(ステップS10
1)。対象エントリの有効フラグが“I”である場合、
バンク実行ユニットは、対象エントリが無効であるた
め、対象エントリのメモリアクセス命令が発行不可能で
あると判断する(ステップS102)。
の、これから発行しようとするメモリアクセス命令が登
録されたエントリに対し、先ず、対象エントリの有効フ
ラグが“I”であるか否か判定する(ステップS10
1)。対象エントリの有効フラグが“I”である場合、
バンク実行ユニットは、対象エントリが無効であるた
め、対象エントリのメモリアクセス命令が発行不可能で
あると判断する(ステップS102)。
【0184】バンク実行ユニットは、対象エントリの有
効フラグが“V”である場合(ステップS101,N
O)、対象エントリの発行フラグが“NO”であるか否
か判定する(ステップS103)。対象エントリの発行
フラグが“NO”である場合、バンク実行ユニットは、
対象エントリは、既に発行済みであると判断し、対象エ
ントリのメモリアクセス命令の発行を行わない(ステッ
プS104)。
効フラグが“V”である場合(ステップS101,N
O)、対象エントリの発行フラグが“NO”であるか否
か判定する(ステップS103)。対象エントリの発行
フラグが“NO”である場合、バンク実行ユニットは、
対象エントリは、既に発行済みであると判断し、対象エ
ントリのメモリアクセス命令の発行を行わない(ステッ
プS104)。
【0185】バンク実行ユニットは、対象エントリの発
行フラグが“YES”である場合(ステップS103,
NO)、順序フラグが無効であるか否か判定する(ステ
ップS105)。順序フラグが無効である場合は、同期
処理の必要がない、または、対象エントリの先行処理が
完了していることを示すので、バンク実行ユニットは、
対象エントリのメモリアクセス命令が発行可能であると
判断する(ステップS106)。
行フラグが“YES”である場合(ステップS103,
NO)、順序フラグが無効であるか否か判定する(ステ
ップS105)。順序フラグが無効である場合は、同期
処理の必要がない、または、対象エントリの先行処理が
完了していることを示すので、バンク実行ユニットは、
対象エントリのメモリアクセス命令が発行可能であると
判断する(ステップS106)。
【0186】順序フラグが無効でない場合(ステップS
105,NO)は、同期処理中であるか、対象エントリ
の先行処理待ちであることを示すので、バンク実行ユニ
ットは、対象エントリのメモリアクセス命令が発行不可
能であると判断する(ステップS107)。
105,NO)は、同期処理中であるか、対象エントリ
の先行処理待ちであることを示すので、バンク実行ユニ
ットは、対象エントリのメモリアクセス命令が発行不可
能であると判断する(ステップS107)。
【0187】次に、この第5実施形態において、CPU
1から以下の命令、 (1)Read 12380 (2)Write 67380 (3)Write 12380 (4)Read 12380 (5)Write abcd70 が番号順に送られた場合のメモリコントローラ10の処
理を説明する。以降、図46乃至53には、領域0に対
応して設けられたスコアボード100と、同期化完了テ
ーブル12とに登録されるデータが示されている。
1から以下の命令、 (1)Read 12380 (2)Write 67380 (3)Write 12380 (4)Read 12380 (5)Write abcd70 が番号順に送られた場合のメモリコントローラ10の処
理を説明する。以降、図46乃至53には、領域0に対
応して設けられたスコアボード100と、同期化完了テ
ーブル12とに登録されるデータが示されている。
【0188】同期化条件は、「同一のアドレスに対する
リード/ライト命令は、先行の処理が完了してから発行
が可能」とする。これは、同期化命令に関係なく、常
に、先行する同一アドレスへのメモリアクセス命令が存
在する場合には発行不可能とし、存在しなければ発行可
能とする条件である。
リード/ライト命令は、先行の処理が完了してから発行
が可能」とする。これは、同期化命令に関係なく、常
に、先行する同一アドレスへのメモリアクセス命令が存
在する場合には発行不可能とし、存在しなければ発行可
能とする条件である。
【0189】尚、図46乃至53では、各エントリの命
令の発行可/不可を示す項に、前記図45に示されるバ
ンク実行ユニットの処理が施された場合の判断結果が識
別できるような情報を示している。
令の発行可/不可を示す項に、前記図45に示されるバ
ンク実行ユニットの処理が施された場合の判断結果が識
別できるような情報を示している。
【0190】(a)は、前記図45のステップS102
に示される判断結果に、(b)はステップS104に示
される判断結果に、(w)はステップS106の判断結
果に、(d)はステップS107の判断結果に相当す
る。これは、動作説明の理解を容易にするためであり、
実際には、単に命令発行の可/不可を示す情報が登録さ
れいるだけで良い。
に示される判断結果に、(b)はステップS104に示
される判断結果に、(w)はステップS106の判断結
果に、(d)はステップS107の判断結果に相当す
る。これは、動作説明の理解を容易にするためであり、
実際には、単に命令発行の可/不可を示す情報が登録さ
れいるだけで良い。
【0191】図46は、スコアボード100の初期状態
を示している。従って、スコアボード100の全てのエ
ントリは未使用(空き)となっている。スコアボード1
00の全てのエントリの発行可/不可の項には、発行不
可を示すデータが登録されているが、これは、バンク実
行ユニット108が図45の処理を実行した場合に、エ
ントリが無効であることを示す(a)に相当する。従っ
て、発行可能なエントリは存在しない。
を示している。従って、スコアボード100の全てのエ
ントリは未使用(空き)となっている。スコアボード1
00の全てのエントリの発行可/不可の項には、発行不
可を示すデータが登録されているが、これは、バンク実
行ユニット108が図45の処理を実行した場合に、エ
ントリが無効であることを示す(a)に相当する。従っ
て、発行可能なエントリは存在しない。
【0192】次に、バスインターフェイスユニット3か
ら、命令(1)“Read 12380”が転送された
場合のスコアボード100を図47に示す。ここでは、
メモリコントローラ10は、命令“Read 1238
0”のアドレスに対応する領域0のスコアボード100
から空きエントリNo.0を選択し、ここに命令を登録
している。スコアボード100のエントリNo.0は発
行可能である。
ら、命令(1)“Read 12380”が転送された
場合のスコアボード100を図47に示す。ここでは、
メモリコントローラ10は、命令“Read 1238
0”のアドレスに対応する領域0のスコアボード100
から空きエントリNo.0を選択し、ここに命令を登録
している。スコアボード100のエントリNo.0は発
行可能である。
【0193】この後、メモリコントローラ10が命令
(2)“Write 67380”を入力した場合のス
コアボード100を図48に示す。メモリコントローラ
10は、命令“Write 67380”のアドレスに
対応する領域0のスコアボード100から空きエントリ
No.1を選択し、ここに命令を登録する。スコアボー
ド100ではエントリNo.0,No.1が発行可能で
ある。
(2)“Write 67380”を入力した場合のス
コアボード100を図48に示す。メモリコントローラ
10は、命令“Write 67380”のアドレスに
対応する領域0のスコアボード100から空きエントリ
No.1を選択し、ここに命令を登録する。スコアボー
ド100ではエントリNo.0,No.1が発行可能で
ある。
【0194】この後、メモリコントローラ10が命令
(3)“Write 12380”を入力した場合のス
コアボード100を図49に示す。メモリコントローラ
10は、命令“Write 12380”のアドレスに
対応する領域0のスコアボード100から空きエントリ
No.2を選択し、ここに命令を登録する。ここで、ア
ドレス12380は、エントリNo.0のメモリアクセ
ス命令のアドレスと同じであるので、エントリNo.2
の順序フラグにはエントリNo.0を示すフラグ(デー
タ)がセットされる。スコアボード100では、同期化
条件に従って、エントリNo.0,No.1のみが発行
可能である。
(3)“Write 12380”を入力した場合のス
コアボード100を図49に示す。メモリコントローラ
10は、命令“Write 12380”のアドレスに
対応する領域0のスコアボード100から空きエントリ
No.2を選択し、ここに命令を登録する。ここで、ア
ドレス12380は、エントリNo.0のメモリアクセ
ス命令のアドレスと同じであるので、エントリNo.2
の順序フラグにはエントリNo.0を示すフラグ(デー
タ)がセットされる。スコアボード100では、同期化
条件に従って、エントリNo.0,No.1のみが発行
可能である。
【0195】この後、メモリコントローラ10が命令
(4)“Read 12380”を入力する場合のスコ
アボード100を図50に示す。メモリコントローラ1
0は、命令“Read 12380”のアドレスに対応
する領域0のスコアボード100から空きエントリN
o.3を選択し、ここに命令を登録する。ここで、アド
レス12380は、エントリNo.0とNo.2のメモ
リアクセス命令のアドレスと同じであるので、エントリ
No.3の順序フラグには最も新しく登録されたエント
リNo.2を示すフラグ(データ)がセットされる。但
し、同期化条件に従って、スコアボード100における
発行可能なエントリはNo.0,1のみである。
(4)“Read 12380”を入力する場合のスコ
アボード100を図50に示す。メモリコントローラ1
0は、命令“Read 12380”のアドレスに対応
する領域0のスコアボード100から空きエントリN
o.3を選択し、ここに命令を登録する。ここで、アド
レス12380は、エントリNo.0とNo.2のメモ
リアクセス命令のアドレスと同じであるので、エントリ
No.3の順序フラグには最も新しく登録されたエント
リNo.2を示すフラグ(データ)がセットされる。但
し、同期化条件に従って、スコアボード100における
発行可能なエントリはNo.0,1のみである。
【0196】この後、バンク実行ユニット108がスコ
アボード100のエントリNo.0を選択し、このエン
トリの命令(1)“Read 12380”が発行され
た時のスコアボード100を図51に示す。メモリコン
トローラ10は、スコアボード100のエントリNo.
0の“En”の項を“NO”にセットし、エントリN
o.0を開放する。スコアボード100で発行可能なエ
ントリはNo.1のみである。
アボード100のエントリNo.0を選択し、このエン
トリの命令(1)“Read 12380”が発行され
た時のスコアボード100を図51に示す。メモリコン
トローラ10は、スコアボード100のエントリNo.
0の“En”の項を“NO”にセットし、エントリN
o.0を開放する。スコアボード100で発行可能なエ
ントリはNo.1のみである。
【0197】この後、発行された命令(1)“Read
12380”の処理が完了した場合のスコアボード1
00を図52に示す。メモリコントローラ10は、スコ
アボード100のエントリNo.2の順序フラグを無効
化する。従って、スコアボード100において発行可能
なエントリは、No.1,2である。
12380”の処理が完了した場合のスコアボード1
00を図52に示す。メモリコントローラ10は、スコ
アボード100のエントリNo.2の順序フラグを無効
化する。従って、スコアボード100において発行可能
なエントリは、No.1,2である。
【0198】この後、メモリコントローラ10が命令
(5)“Read abcd70”を入力した場合のス
コアボード100を図53に示す。メモリコントローラ
10は、命令“Read abcd70”のアドレスに
対応する領域0のスコアボード100から空きエントリ
No.0を選択し、ここに命令を登録する。スコアボー
ド100における発行可能なエントリはNo.0,1,
2である。
(5)“Read abcd70”を入力した場合のス
コアボード100を図53に示す。メモリコントローラ
10は、命令“Read abcd70”のアドレスに
対応する領域0のスコアボード100から空きエントリ
No.0を選択し、ここに命令を登録する。スコアボー
ド100における発行可能なエントリはNo.0,1,
2である。
【0199】以上の処理により、メモリコントローラ1
0は、所定の同期化条件に従ってメモリアクセス命令を
選択し、発行することができる。
0は、所定の同期化条件に従ってメモリアクセス命令を
選択し、発行することができる。
【0200】(第6実施形態)第6実施形態は、図54
に示すように、メモリの制御範囲である全記憶領域の管
理を単一のスコアボード200により管理し、かつ同期
化完了テーブルを省略した方式である。換言すれば、本
実施形態は、前述の第1実施形態がいわば各記憶領域に
対する分散管理方式であるのに対して、各記憶領域のオ
ペレーションの動作状況を一括管理する方式である。な
お、基本的動作は、前述の第1実施形態の方式と同様で
ある。
に示すように、メモリの制御範囲である全記憶領域の管
理を単一のスコアボード200により管理し、かつ同期
化完了テーブルを省略した方式である。換言すれば、本
実施形態は、前述の第1実施形態がいわば各記憶領域に
対する分散管理方式であるのに対して、各記憶領域のオ
ペレーションの動作状況を一括管理する方式である。な
お、基本的動作は、前述の第1実施形態の方式と同様で
ある。
【0201】この実施形態のメモリコントローラ10
は、図54に示すように、単一のスコアボード200に
より、バンクメモリBM0〜BM3の各記憶領域のオペ
レーション動作状況を管理し、ここでは4つの記憶領域
0〜3に対する制御信号を生成する。同期化オペレーシ
ョンが発行されると、前述の第1実施形態と同様に、同
期化フラグ201として、同期化以前のオペレーション
であることを示すフラグ“1”をセットして、同期化以
後のオペレーションと区別する。
は、図54に示すように、単一のスコアボード200に
より、バンクメモリBM0〜BM3の各記憶領域のオペ
レーション動作状況を管理し、ここでは4つの記憶領域
0〜3に対する制御信号を生成する。同期化オペレーシ
ョンが発行されると、前述の第1実施形態と同様に、同
期化フラグ201として、同期化以前のオペレーション
であることを示すフラグ“1”をセットして、同期化以
後のオペレーションと区別する。
【0202】また、同期化処理が完了するまでは、同期
化完了テーブル240に同期化完了フラグ“1”をセッ
トして、後続の同期化オペレーションの受付けを拒否し
てリトライする。なお、スコアボードが1つの場合に
は、同期化フラグ201が全てのエントリについて
“0”であれば同期化は終了していることがわかるの
で、同期化完了テーブル240は省略してもよい。
化完了テーブル240に同期化完了フラグ“1”をセッ
トして、後続の同期化オペレーションの受付けを拒否し
てリトライする。なお、スコアボードが1つの場合に
は、同期化フラグ201が全てのエントリについて
“0”であれば同期化は終了していることがわかるの
で、同期化完了テーブル240は省略してもよい。
【0203】(第7実施形態)第7実施形態は、図55
に示すように、前述の第6実施形態と同様に単一のスコ
アボード200により各記憶領域のオペレーションの動
作状況を一括管理する方式であり、かつ各エントリの全
体に対する同期化完了フラグ241と同期化条件242
をセットする同期化完了テーブル240を備えた方式で
ある。
に示すように、前述の第6実施形態と同様に単一のスコ
アボード200により各記憶領域のオペレーションの動
作状況を一括管理する方式であり、かつ各エントリの全
体に対する同期化完了フラグ241と同期化条件242
をセットする同期化完了テーブル240を備えた方式で
ある。
【0204】即ち、この実施形態は、同期化条件242
(ここでは、同一アドレスSA)に合致するオペレーシ
ョンに対してのみ同期化処理(strong orde
r化処理)を実行し、合致しないオペレーションについ
ては通常の非プログラム順序処理(out of or
der化またはweak order化処理)を実行す
る。
(ここでは、同一アドレスSA)に合致するオペレーシ
ョンに対してのみ同期化処理(strong orde
r化処理)を実行し、合致しないオペレーションについ
ては通常の非プログラム順序処理(out of or
der化またはweak order化処理)を実行す
る。
【0205】第7実施形態は、図55に示すように、前
述の第6実施形態と比較して、同期化完了テーブル24
0に、同期化条件242を追加した構成である。なお、
一括管理方式が異なるだけで、基本的動作は、前述の第
2実施形態の方式と同様である。
述の第6実施形態と比較して、同期化完了テーブル24
0に、同期化条件242を追加した構成である。なお、
一括管理方式が異なるだけで、基本的動作は、前述の第
2実施形態の方式と同様である。
【0206】第7実施形態において、同期化完了テーブ
ル24を省略する場合には、同期化オペレーションもス
コアボード200に登録し、後続のオペレーションが入
るたびに同期化条件に合致するか否かを判定する必要が
ある。この後続のオペレーションの登録時に、同期化フ
ラグ201をスコアボード200にセットする。この場
合、同期化フラグを「同期化前」、「同期化後」、「無
関係」の3状態を定義する方式にすると、制御が容易と
なる。また、同期化の完了については、スコアボードに
「同期化前」のエントリがなくなったことで判定でき
る。
ル24を省略する場合には、同期化オペレーションもス
コアボード200に登録し、後続のオペレーションが入
るたびに同期化条件に合致するか否かを判定する必要が
ある。この後続のオペレーションの登録時に、同期化フ
ラグ201をスコアボード200にセットする。この場
合、同期化フラグを「同期化前」、「同期化後」、「無
関係」の3状態を定義する方式にすると、制御が容易と
なる。また、同期化の完了については、スコアボードに
「同期化前」のエントリがなくなったことで判定でき
る。
【0207】(第8実施形態)第8実施形態は、図56
に示すように、前述の第6実施形態と同様に単一のスコ
アボード200により各記憶領域のオペレーションの動
作状況を一括管理する方式であり、かつ前述の第3実施
形態と同様に、複数レベルの同期化フラグ202のエン
トリを登録する方式である。なお、この実施形態におい
ても、スコアボード200が1つの場合には、同期化完
了テーブル240は省略してもよい。
に示すように、前述の第6実施形態と同様に単一のスコ
アボード200により各記憶領域のオペレーションの動
作状況を一括管理する方式であり、かつ前述の第3実施
形態と同様に、複数レベルの同期化フラグ202のエン
トリを登録する方式である。なお、この実施形態におい
ても、スコアボード200が1つの場合には、同期化完
了テーブル240は省略してもよい。
【0208】この実施形態は、図56に示すように、複
数の同期化レベルに対応して、スコアボード200に複
数レベルの同期化フラグ202をセットするエントリを
設けた方式である。詳細な動作は前述の第3実施形態と
同様である。即ち、この実施形態は同期化フラグ202
を各エントリに対して4レベル0〜3とした場合を想定
する。また、同期化完了テーブル240の同期化完了フ
ラグも、4レベルの同期化レベルとしている。いずれの
レベルを実行中かは同期化(Sync)リードポインタ
261により指示されて、次の同期化レベルは同期化ラ
イトポインタ262により指示される。
数の同期化レベルに対応して、スコアボード200に複
数レベルの同期化フラグ202をセットするエントリを
設けた方式である。詳細な動作は前述の第3実施形態と
同様である。即ち、この実施形態は同期化フラグ202
を各エントリに対して4レベル0〜3とした場合を想定
する。また、同期化完了テーブル240の同期化完了フ
ラグも、4レベルの同期化レベルとしている。いずれの
レベルを実行中かは同期化(Sync)リードポインタ
261により指示されて、次の同期化レベルは同期化ラ
イトポインタ262により指示される。
【0209】なお、同期化完了テーブル240を省略す
る場合には、同期化オペレーションもスコアボードに登
録し、後続のオペレーションが入るたびに同期化条件に
合致するか否かを判定し、後続オペレーション登録時に
同期化フラグ202をセットする。この場合、同期化フ
ラグを「同期化前」、「同期化後」、「無関係」の3状
態を定義する方式にすると、制御が容易となる。また、
同期化の各レベルの完了については、スコアボードに
「同期化前」のエントリがなくなったことで判定でき
る。
る場合には、同期化オペレーションもスコアボードに登
録し、後続のオペレーションが入るたびに同期化条件に
合致するか否かを判定し、後続オペレーション登録時に
同期化フラグ202をセットする。この場合、同期化フ
ラグを「同期化前」、「同期化後」、「無関係」の3状
態を定義する方式にすると、制御が容易となる。また、
同期化の各レベルの完了については、スコアボードに
「同期化前」のエントリがなくなったことで判定でき
る。
【0210】(第9実施形態)第9実施形態は、図57
に示すように、前述の第6実施形態と同様に単一のスコ
アボード200により各記憶領域のオペレーションの動
作状況を一括管理する方式であり、かつ前述の第4実施
形態と同様に、各同期化レベル0〜3に対して、同期化
条件(ここでは、同一アドレスSA)を示すエントリ2
63を設けた同期化完了テーブル240を備えた方式で
ある。
に示すように、前述の第6実施形態と同様に単一のスコ
アボード200により各記憶領域のオペレーションの動
作状況を一括管理する方式であり、かつ前述の第4実施
形態と同様に、各同期化レベル0〜3に対して、同期化
条件(ここでは、同一アドレスSA)を示すエントリ2
63を設けた同期化完了テーブル240を備えた方式で
ある。
【0211】即ち、この実施形態は、図57に示すよう
に、複数の同期化レベルに対応して、同期化完了テーブ
ル240に複数の同期化条件を示すエントリ263を設
けた方式である。詳細な動作は前述の第4実施形態と同
様である。
に、複数の同期化レベルに対応して、同期化完了テーブ
ル240に複数の同期化条件を示すエントリ263を設
けた方式である。詳細な動作は前述の第4実施形態と同
様である。
【0212】なお、同期化完了テーブル240を省略す
る場合には、同期化オペレーションもスコアボードに登
録し、後続のオペレーションが入るたびに同期化条件に
合致するか否かを判定し、後続オペレーション登録時に
同期化フラグ202をセットする。この場合、同期化フ
ラグを「同期化前」、「同期化後」、「無関係」の3状
態を定義する方式にすると、制御が容易となる。また、
同期化の各レベルの完了については、スコアボードに
「同期化前」のエントリがなくなったことで判定でき
る。
る場合には、同期化オペレーションもスコアボードに登
録し、後続のオペレーションが入るたびに同期化条件に
合致するか否かを判定し、後続オペレーション登録時に
同期化フラグ202をセットする。この場合、同期化フ
ラグを「同期化前」、「同期化後」、「無関係」の3状
態を定義する方式にすると、制御が容易となる。また、
同期化の各レベルの完了については、スコアボードに
「同期化前」のエントリがなくなったことで判定でき
る。
【0213】(第10実施形態)第10実施形態は、図
58に示すように、前述の第6実施形態と同様に単一の
スコアボード200により各記憶領域のオペレーション
の動作状況を一括管理する方式であり、かつ前述の第5
実施形態と同様に、同期化条件(同期化の如何にかかわ
らず)を全てのオペレーションに適用する方式である。
従って、この実施例においても、同期化オペレーション
がある条件をもつオペレーションに対して作用する場合
(同一要求に対する、あるいは同一アドレスに対する等
の場合)、常に(同期化の実行とは無関係)、同期化条
件を満たすオペレーションのみを実行する方式である。
これにより、同期化フラグおよび同期化完了フラグを省
略でき、同期化命令以後のオペレーションのリトライを
防ぎ、システムの処理能力を向上することができる。
58に示すように、前述の第6実施形態と同様に単一の
スコアボード200により各記憶領域のオペレーション
の動作状況を一括管理する方式であり、かつ前述の第5
実施形態と同様に、同期化条件(同期化の如何にかかわ
らず)を全てのオペレーションに適用する方式である。
従って、この実施例においても、同期化オペレーション
がある条件をもつオペレーションに対して作用する場合
(同一要求に対する、あるいは同一アドレスに対する等
の場合)、常に(同期化の実行とは無関係)、同期化条
件を満たすオペレーションのみを実行する方式である。
これにより、同期化フラグおよび同期化完了フラグを省
略でき、同期化命令以後のオペレーションのリトライを
防ぎ、システムの処理能力を向上することができる。
【0214】即ち、第10実施形態は、図58に示すよ
うに、同期化条件を全てのオペレーションに適用し、同
期化フラグ及び同期化完了テーブルを省略し、スコアボ
ード200に、先行オペレーションを示す順序フラグ2
03のエントリを付加している。このエントリは、例え
ば先行オペレーションに同一アドレスがある場合に、該
当する先行オペレーションのエントリ番号をセットす
る。該当の先行オペレーションが発行または無効化され
ると、順序フラグを無効化(−)してオペレーションを
発行可能とする。なお、詳細な動作は前述の第5実施形
態と同様である。
うに、同期化条件を全てのオペレーションに適用し、同
期化フラグ及び同期化完了テーブルを省略し、スコアボ
ード200に、先行オペレーションを示す順序フラグ2
03のエントリを付加している。このエントリは、例え
ば先行オペレーションに同一アドレスがある場合に、該
当する先行オペレーションのエントリ番号をセットす
る。該当の先行オペレーションが発行または無効化され
ると、順序フラグを無効化(−)してオペレーションを
発行可能とする。なお、詳細な動作は前述の第5実施形
態と同様である。
【0215】
【発明の効果】以上詳述したようにこの発明によれば、
マルチプロセッサ方式のコンピュータシステムに適用さ
れるメモリコントローラにおいて、管理テーブルを使用
することにより、メモリアクセスのオペレーションの動
作状況を管理できると共に、同期化オペレーションが実
行が実行されたときに、後続オペレーション(または同
期化条件に該当するもの)を見掛け上受付けることが可
能となる。従って、後続オペレーションの要求元に対し
てリトライの発生を防止することが可能となり、結果的
に同期化処理でのシステムのオーバーヘッドの低減を図
ることができる。
マルチプロセッサ方式のコンピュータシステムに適用さ
れるメモリコントローラにおいて、管理テーブルを使用
することにより、メモリアクセスのオペレーションの動
作状況を管理できると共に、同期化オペレーションが実
行が実行されたときに、後続オペレーション(または同
期化条件に該当するもの)を見掛け上受付けることが可
能となる。従って、後続オペレーションの要求元に対し
てリトライの発生を防止することが可能となり、結果的
に同期化処理でのシステムのオーバーヘッドの低減を図
ることができる。
【図1】本発明の一実施の形態に係わるコンピュータシ
ステムのシステム構成を示すブロック図。
ステムのシステム構成を示すブロック図。
【図2】同実施の形態に係わるスコアボードの構成を説
明するための概念図。
明するための概念図。
【図3】同実施の形態に係わるメモリコントローラの構
成を示すブロック図。
成を示すブロック図。
【図4】同実施の形態の動作を説明するためのフローチ
ャート。
ャート。
【図5】同実施の形態に係わり、メモリアクセス命令を
受け取った場合のメモリコントローラの動作を示すフロ
ーチャート。
受け取った場合のメモリコントローラの動作を示すフロ
ーチャート。
【図6】同実施の形態に係わり、バンク実行ユニットの
命令発行のための判断処理を示すフローチャート。
命令発行のための判断処理を示すフローチャート。
【図7】同実施の形態に係わる2つのスコアボードと同
期化完了テーブルの一例を示す図。
期化完了テーブルの一例を示す図。
【図8】同実施の形態に係わる2つのスコアボードと同
期化完了テーブルの一例を示す図。
期化完了テーブルの一例を示す図。
【図9】同実施の形態に係わる2つのスコアボードと同
期化完了テーブルの一例を示す図。
期化完了テーブルの一例を示す図。
【図10】同実施の形態に係わる2つのスコアボードと
同期化完了テーブルの一例を示す図。
同期化完了テーブルの一例を示す図。
【図11】同実施の形態に係わる2つのスコアボードと
同期化完了テーブルの一例を示す図。
同期化完了テーブルの一例を示す図。
【図12】同実施の形態に係わる2つのスコアボードと
同期化完了テーブルの一例を示す図。
同期化完了テーブルの一例を示す図。
【図13】同実施の形態に係わる2つのスコアボードと
同期化完了テーブルの一例を示す図。
同期化完了テーブルの一例を示す図。
【図14】同実施の形態に係わる2つのスコアボードと
同期化完了テーブルの一例を示す図。
同期化完了テーブルの一例を示す図。
【図15】同実施の形態に係わる2つのスコアボードと
同期化完了テーブルの一例を示す図。
同期化完了テーブルの一例を示す図。
【図16】同実施の形態に係わる2つのスコアボードと
同期化完了テーブルの一例を示す図。
同期化完了テーブルの一例を示す図。
【図17】本発明の第2実施の形態に係わるスコアボー
ドの構成を説明するための概念図。
ドの構成を説明するための概念図。
【図18】同実施の形態に係わり、バンク実行ユニット
の命令発行のための判断処理を示すフローチャート。
の命令発行のための判断処理を示すフローチャート。
【図19】同実施の形態に係わるスコアボードと同期化
完了テーブルの一例を示す図。
完了テーブルの一例を示す図。
【図20】同実施の形態に係わるスコアボードと同期化
完了テーブルの一例を示す図。
完了テーブルの一例を示す図。
【図21】同実施の形態に係わるスコアボードと同期化
完了テーブルの一例を示す図。
完了テーブルの一例を示す図。
【図22】同実施の形態に係わるのスコアボードと同期
化完了テーブルの一例を示す図。
化完了テーブルの一例を示す図。
【図23】同実施の形態に係わるのスコアボードと同期
化完了テーブルの一例を示す図。
化完了テーブルの一例を示す図。
【図24】本発明の第3実施の形態に係わるスコアボー
ドの構成を説明するための概念図。
ドの構成を説明するための概念図。
【図25】同実施の形態に係わり、メモリアクセス命令
を受け取った場合のメモリコントローラの動作を示すフ
ローチャート。
を受け取った場合のメモリコントローラの動作を示すフ
ローチャート。
【図26】同実施の形態に係わり、バンク実行ユニット
の命令発行のための判断処理を示すフローチャート。
の命令発行のための判断処理を示すフローチャート。
【図27】同実施の形態に係わるスコアボードと同期化
完了テーブルの一例を示す図。
完了テーブルの一例を示す図。
【図28】同実施の形態に係わるスコアボードと同期化
完了テーブルの一例を示す図。
完了テーブルの一例を示す図。
【図29】同実施の形態に係わるスコアボードと同期化
完了テーブルの一例を示す図。
完了テーブルの一例を示す図。
【図30】同実施の形態に係わるスコアボードと同期化
完了テーブルの一例を示す図。
完了テーブルの一例を示す図。
【図31】同実施の形態に係わるスコアボードと同期化
完了テーブルの一例を示す図。
完了テーブルの一例を示す図。
【図32】同実施の形態に係わるスコアボードと同期化
完了テーブルの一例を示す図。
完了テーブルの一例を示す図。
【図33】同実施の形態に係わるスコアボードと同期化
完了テーブルの一例を示す図。
完了テーブルの一例を示す図。
【図34】本発明の第4実施の形態に係わるスコアボー
ドの構成を説明するための概念図。
ドの構成を説明するための概念図。
【図35】同実施の形態に係わり、バンク実行ユニット
の命令発行のための判断処理を示すフローチャート。
の命令発行のための判断処理を示すフローチャート。
【図36】同実施の形態に係わるスコアボードと同期化
完了テーブルの一例を示す図。
完了テーブルの一例を示す図。
【図37】同実施の形態に係わるスコアボードと同期化
完了テーブルの一例を示す図。
完了テーブルの一例を示す図。
【図38】同実施の形態に係わるスコアボードと同期化
完了テーブルの一例を示す図。
完了テーブルの一例を示す図。
【図39】同実施の形態に係わるスコアボードと同期化
完了テーブルの一例を示す図。
完了テーブルの一例を示す図。
【図40】同実施の形態に係わるスコアボードと同期化
完了テーブルの一例を示す図。
完了テーブルの一例を示す図。
【図41】同実施の形態に係わるスコアボードと同期化
完了テーブルの一例を示す図。
完了テーブルの一例を示す図。
【図42】同実施の形態に係わるスコアボードと同期化
完了テーブルの一例を示す図。
完了テーブルの一例を示す図。
【図43】本発明の第5実施の形態に係わるスコアボー
ドの構成を説明するための概念図。
ドの構成を説明するための概念図。
【図44】同実施の形態に係わり、メモリアクセス命令
を受け取った場合のメモリコントローラの動作を示すフ
ローチャート。
を受け取った場合のメモリコントローラの動作を示すフ
ローチャート。
【図45】同実施の形態に係わり、バンク実行ユニット
の命令発行のための判断処理を示すフローチャート。
の命令発行のための判断処理を示すフローチャート。
【図46】同実施の形態に係わるスコアボードと同期化
完了テーブルの一例を示す図。
完了テーブルの一例を示す図。
【図47】同実施の形態に係わるスコアボードと同期化
完了テーブルの一例を示す図。
完了テーブルの一例を示す図。
【図48】同実施の形態に係わるスコアボードと同期化
完了テーブルの一例を示す図。
完了テーブルの一例を示す図。
【図49】同実施の形態に係わるスコアボードと同期化
完了テーブルの一例を示す図。
完了テーブルの一例を示す図。
【図50】同実施の形態に係わるスコアボードと同期化
完了テーブルの一例を示す図。
完了テーブルの一例を示す図。
【図51】同実施の形態に係わるスコアボードと同期化
完了テーブルの一例を示す図。
完了テーブルの一例を示す図。
【図52】同実施の形態に係わるスコアボードと同期化
完了テーブルの一例を示す図。
完了テーブルの一例を示す図。
【図53】同実施の形態に係わるスコアボードと同期化
完了テーブルの一例を示す図。
完了テーブルの一例を示す図。
【図54】本発明の第6実施の形態に係わるスコアボー
ドの構成を説明するための概念図。
ドの構成を説明するための概念図。
【図55】本発明の第7実施の形態に係わるスコアボー
ドの構成を説明するための概念図。
ドの構成を説明するための概念図。
【図56】本発明の第8実施の形態に係わるスコアボー
ドの構成を説明するための概念図。
ドの構成を説明するための概念図。
【図57】本発明の第9実施の形態に係わるスコアボー
ドの構成を説明するための概念図。
ドの構成を説明するための概念図。
【図58】本発明の第10実施の形態に係わるスコアボ
ードの構成を説明するための概念図。
ードの構成を説明するための概念図。
1…CPU、2…バス、3…バスインターフェースユニ
ット、4…I/Oコントローラ、5…HDD、10…メ
モリコントローラ、11…スコアボード、12…同期化
完了テーブル。
ット、4…I/Oコントローラ、5…HDD、10…メ
モリコントローラ、11…スコアボード、12…同期化
完了テーブル。
Claims (20)
- 【請求項1】 複数のメモリバンクで構成されるメモリ
を有するコンピュータシステムに適用されるメモリコン
トローラであって、 前記複数のメモリバンク毎に複数のエントリを有し、命
令と同期化データを記憶する命令管理テーブルと、 命令を受取り、受け取った命令が前記メモリへのアクセ
ス命令である場合、このアクセス命令を前記命令管理テ
ーブルに登録して、前記同期化データをリセットし、前
記受け取った命令が同期化命令である場合、前記管理テ
ーブルに登録された各命令に対して前記同期化データを
セットする管理手段と、 前記同期化データのセットされた命令を優先的に発行す
るし、前記複数のメモリバンク毎に独立して機能する発
行手段とを具備することを特徴とするメモリ制御装置。 - 【請求項2】 前記命令管理テーブルは命令の発行情報
を記憶し、 前記管理手段はアクセス命令の受取りに応じ、前記管理
テーブルに登録された命令に前記同期化データがセット
されている場合には、前記受け取った命令に対応する発
行情報を発行不可能として、前記管理テーブルに登録さ
れた命令に前記同期化データがセットされていない場合
には、前記発行情報を発行可能とし、 前記発行手段は前記発行情報に従って命令を発行し、命
令発行後、発行された命令に対応する発行情報を発行不
可能とするようにしたことを特徴とする請求項1記載の
メモリ制御装置。 - 【請求項3】 前記発行手段は、命令完了後、前記管理
テーブルの発行された命令に対応するエントリを開放す
ることを特徴とする請求項1記載のメモリ制御装置。 - 【請求項4】 前記発行手段は、前記同期化データのセ
ットされた命令を、所定の同期化条件に従って発行する
ことを特徴とする請求項1記載のメモリ制御装置。 - 【請求項5】 前記管理手段は複数の同期化命令の受取
りに応じ、前記複数の同期化命令が識別されるように前
記同期化データをセットし、 前記発行手段は前記同期化データがセットされた命令の
内、受取り順の同期命令に従って命令を発行し、受け取
った同期化命令の完了に応じ、前記同期化データを更新
することを特徴とする請求項1記載のメモリ制御装置。 - 【請求項6】 複数のメモリバンクで構成されるメモリ
を有するコンピュータシステムに適用されるメモリコン
トローラであって、 前記複数のメモリバンク毎に複数のエントリを有し、命
令と同期化データを記憶する命令管理テーブルと、 同期化命令の処理状態を示す状態データを記憶する同期
化管理テーブルと、 命令を受取り、受け取った命令が前記メモリへのアクセ
ス命令である場合、このアクセス命令を前記命令管理テ
ーブルに登録して、前記同期化データをリセットし、前
記受け取った命令が同期化命令である場合、前記管理テ
ーブルに登録された各命令に対して前記同期化データを
セットし、前記同期化管理テーブルに同期化命令処理中
を示す状態データをセットする管理手段と、 前記同期化データのセットされた命令を優先的に発行す
るし、前記複数のメモリバンク毎に独立して機能する発
行手段と、 前記発行手段により発行された命令の完了後、同期化命
令処理が完了した場合、前記同期化管理テーブルに記憶
された状態データをリセットする手段とを具備すること
を特徴とするメモリ制御装置。 - 【請求項7】 前記命令管理テーブルは命令の発行情報
を記憶し、 前記管理手段はアクセス命令の受取りに応じ、前記管理
テーブルに登録された命令に前記同期化データがセット
されている場合には、前記受け取った命令に対応する発
行情報を発行不可能として、前記管理テーブルに登録さ
れた命令に前記同期化データがセットされていない場合
には、前記発行情報を発行可能とし、 前記発行手段は前記発行情報に従って命令を発行し、命
令発行後、発行された命令に対応する発行情報を発行不
可能とすることを特徴とする請求項6記載のメモリ制御
装置。 - 【請求項8】 前記発行手段は、命令完了後、前記管理
テーブルの発行された命令に対応するエントリを開放す
ることを特徴とする請求項6記載のメモリ制御装置。 - 【請求項9】 前記発行手段は前記同期化データのセッ
トされた命令を、所定の同期化条件に従って発行するこ
とを特徴とする請求項6記載のメモリ制御装置。 - 【請求項10】 前記管理手段は複数の同期化命令の受
取りに応じ、前記複数の同期化命令が識別されるように
前記同期化データをセットし、 前記同期化管理テーブルに前記複数の同期化命令毎に状
態データをセットし、 前記発行手段は、前記同期化データがセットされた命令
の内、受取り順の同期命令に従って命令を発行し、受け
取った同期化命令の完了に応じ、前記同期化データ及び
前記状態データを更新することを特徴とする請求項1記
載のメモリ制御装置。 - 【請求項11】 命令を送出するマルチプロセッサと、
複数のメモリバンクで構成されるメモリと、前記複数の
メモリバンク毎に複数のエントリを有し、命令と同期化
データを記憶する命令管理テーブルとを有するコンピュ
ータシステムにおけるメモリ制御方法であって、 前記マルチプロセッサから送出された命令を受取り、 前記受け取った命令が前記メモリへのアクセス命令であ
る場合、このアクセス命令を前記命令管理テーブルに登
録して、前記同期化データをリセットし、 前記受け取った命令が同期化命令である場合、前記管理
テーブルに登録された各命令に対して前記同期化データ
をセットし、 前記複数のメモリバンク毎に独立して、前記同期化デー
タのセットされた命令を優先的に発行するようにしたこ
とを特徴とするメモリ制御方法。 - 【請求項12】 前記命令管理テーブルは、命令の発行
情報を記憶し、 前記命令登録ステップは、アクセス命令の受取りに応
じ、前記管理テーブルに登録された命令に前記同期化デ
ータがセットされている場合には、前記受け取った命令
に対応する発行情報を発行不可能として、前記管理テー
ブルに登録された命令に前記同期化データがセットされ
ていない場合には、前記発行情報を発行可能とし、 前記発行ステップは、前記発行情報に従って命令を発行
し、命令発行後、発行された命令に対応する発行情報を
発行不可能とするサブステップを含むようにしたことを
特徴とする請求項11記載のメモリ制御方法。 - 【請求項13】 前記発行ステップは、命令完了後、前
記管理テーブルの発行された命令に対応するエントリを
開放するサブステップを含むようにしたことを特徴とす
る請求項11記載のメモリ制御方法。 - 【請求項14】 前記発行ステップは、前記同期化デー
タのセットされた命令を、所定の同期化条件に従って発
行するサブステップを含むようにしたことを特徴とする
請求項11記載のメモリ制御方法。 - 【請求項15】 前記同期化データセットステップは、
複数の同期化命令の受取りに応じ、前記複数の同期化命
令が識別されるように前記同期化データをセットするサ
ブステップを含み、 前記発行ステップは、前記同期化データがセットされた
命令の内、受取り順の同期命令に従って命令を発行する
サブステップと、受け取った同期化命令の完了に応じ、
前記同期化データを更新するサブステップを含むように
したことを特徴とする請求項11記載のメモリ制御方
法。 - 【請求項16】 命令を送出するマルチプロセッサと、
複数のメモリバンクで構成されるメモリと、前記複数の
メモリバンク毎に複数のエントリを有し、命令と同期化
データを記憶する命令管理テーブルと、同期化命令の処
理状態を示す状態データを記憶する同期化管理テーブル
とを有するコンピュータシステムにおけるメモリ制御方
法であって、 前記マルチプロセッサにより送出された命令を受取り、 前記受け取った命令が前記メモリへのアクセス命令であ
る場合、このアクセス命令を前記命令管理テーブルに登
録して、前記同期化データをリセットし、 前記受け取った命令が同期化命令である場合、前記管理
テーブルに登録された各命令に対して前記同期化データ
をセットして、前記同期化管理テーブルに同期化命令処
理中を示す状態データをセットし、 前記複数のメモリバンク毎に独立して、前記同期化デー
タのセットされた命令を優先的に発行し、 前記発行された命令の完了に応じて同期化命令処理が完
了した場合、前記同期化管理テーブルに記憶された状態
データをリセットするようにしたことを特徴とするメモ
リ制御方法。 - 【請求項17】 前記命令管理テーブルは命令の発行情
報を記憶し、 前記登録ステップは、アクセス命令の受取りに応じ、前
記管理テーブルに登録された命令に前記同期化データが
セットされている場合には、前記受け取った命令に対応
する発行情報を発行不可能として、前記管理テーブルに
登録された命令に前記同期化データがセットされていな
い場合には、前記発行情報を発行可能とするサブステッ
プを含み、 前記発行ステップは、前記発行情報に従って命令を発行
し、命令発行後、発行された命令に対応する発行情報を
発行不可能とするサブステップを含むようにしたことを
特徴とする請求項16記載のメモリ制御方法。 - 【請求項18】 前記発行ステップは、命令完了後、前
記管理テーブルの発行された命令に対応するエントリを
開放するサブステップを含むようにしたことを特徴とす
る請求項16記載のメモリ制御方法。 - 【請求項19】 前記発行ステップは、前記同期化デー
タのセットされた命令を、所定の同期化条件に従って発
行するサブステップを含むようにしたことを特徴とする
請求項16記載のメモリ制御方法。 - 【請求項20】 前記登録ステップは、複数の同期化命
令の受取りに応じ、前記複数の同期化命令が識別される
ように前記同期化データをセットし、前記同期化管理テ
ーブルに前記複数の同期化命令毎に状態データをセット
するサブステップを含み、 前記発行ステップは、前記同期化データがセットされた
命令の内、受取り順の同期命令に従って命令を発行する
サブステップと、受け取った同期化命令の完了に応じ、
前記同期化データ及び前記状態データを更新するサブス
テップとを含むようにしたことを特徴とする請求項16
記載のメモリ制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP8250762A JPH09269935A (ja) | 1996-01-31 | 1996-09-24 | メモリ制御装置、及びメモリ制御方法 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP1572696 | 1996-01-31 | ||
JP8-15726 | 1996-01-31 | ||
JP8250762A JPH09269935A (ja) | 1996-01-31 | 1996-09-24 | メモリ制御装置、及びメモリ制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH09269935A true JPH09269935A (ja) | 1997-10-14 |
Family
ID=26351927
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP8250762A Pending JPH09269935A (ja) | 1996-01-31 | 1996-09-24 | メモリ制御装置、及びメモリ制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH09269935A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006098135A1 (ja) * | 2005-03-14 | 2006-09-21 | Matsushita Electric Industrial Co., Ltd. | バスコントローラ |
JP2008525887A (ja) * | 2004-12-23 | 2008-07-17 | インテル・コーポレーション | スレッドプロセッサにおける多重クライアントへのバッファの動的割り当て |
JP2008535064A (ja) * | 2005-03-23 | 2008-08-28 | クゥアルコム・インコーポレイテッド | 弱順序処理システムにおいて強順序リクエストを強制する場合のメモリバリアの最小化 |
JP2009529748A (ja) * | 2006-03-10 | 2009-08-20 | クゥアルコム・インコーポレイテッド | メモリ・バリア・バス・コマンドの効率的な実行 |
KR20140117934A (ko) * | 2013-03-27 | 2014-10-08 | 삼성전자주식회사 | 스토리지 시스템 및 스토리지 시스템의 동기화 방법 |
-
1996
- 1996-09-24 JP JP8250762A patent/JPH09269935A/ja active Pending
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008525887A (ja) * | 2004-12-23 | 2008-07-17 | インテル・コーポレーション | スレッドプロセッサにおける多重クライアントへのバッファの動的割り当て |
JP4787844B2 (ja) * | 2004-12-23 | 2011-10-05 | インテル・コーポレーション | スレッドプロセッサにおける多重クライアントへのバッファの動的割り当て |
US8225012B2 (en) | 2004-12-23 | 2012-07-17 | Intel Corporation | Dynamic allocation of a buffer across multiple clients in a threaded processor |
US8601177B2 (en) | 2004-12-23 | 2013-12-03 | Intel Corporation | Dynamic allocation of a buffer across multiple clients in a threaded processor |
WO2006098135A1 (ja) * | 2005-03-14 | 2006-09-21 | Matsushita Electric Industrial Co., Ltd. | バスコントローラ |
JP2008535064A (ja) * | 2005-03-23 | 2008-08-28 | クゥアルコム・インコーポレイテッド | 弱順序処理システムにおいて強順序リクエストを強制する場合のメモリバリアの最小化 |
JP2009529748A (ja) * | 2006-03-10 | 2009-08-20 | クゥアルコム・インコーポレイテッド | メモリ・バリア・バス・コマンドの効率的な実行 |
US7921249B2 (en) | 2006-03-10 | 2011-04-05 | Qualcomm Incorporated | Weakly ordered processing systems and methods |
KR20140117934A (ko) * | 2013-03-27 | 2014-10-08 | 삼성전자주식회사 | 스토리지 시스템 및 스토리지 시스템의 동기화 방법 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0788054B1 (en) | Memory controller and memory control system | |
JP2566701B2 (ja) | 共有キャッシュ内のデータ・ユニットに対する所有権の変更制御装置 | |
EP3433746B1 (en) | Contended lock request elision scheme | |
US5442755A (en) | Multi-processor system with lock address register in each processor for storing lock address sent to bus by another processor | |
US6625698B2 (en) | Method and apparatus for controlling memory storage locks based on cache line ownership | |
EP1399823B1 (en) | Using an l2 directory to facilitate speculative loads in a multiprocessor system | |
US7640315B1 (en) | Implementing locks in a distributed processing system | |
JPS6118226B2 (ja) | ||
JPS63113648A (ja) | キャッシュ記憶待ち行列 | |
JP4874165B2 (ja) | マルチプロセッサシステム及びマルチプロセッサシステムにおけるアクセス権設定方法 | |
JP2001222468A (ja) | マイクロプロセッサのロード/ストア命令制御回路、およびロード/ストア命令制御方法 | |
JPH0532775B2 (ja) | ||
JPH09269935A (ja) | メモリ制御装置、及びメモリ制御方法 | |
JPH07319627A (ja) | 外部記憶装置 | |
JP3505728B2 (ja) | 記憶制御装置 | |
US20070050527A1 (en) | Synchronization method for a multi-processor system and the apparatus thereof | |
JPH04155465A (ja) | ファイル共用方法 | |
US4547848A (en) | Access control processing system in computer system | |
EP0495167A2 (en) | Multiple asynchronous request handling | |
JP3157513B2 (ja) | 拡張記憶装置 | |
JP3008817B2 (ja) | バッファ制御方法とバッファ制御装置 | |
JP2017123051A (ja) | 情報処理装置、情報処理装置の制御方法及び演算処理装置 | |
JPH0391055A (ja) | ハードウエアロックのセット方法、ハードウエアロック制御装置、ハードウエアロックの検出方法と装置 | |
JPS6055459A (ja) | プロツクデ−タ転送記憶制御方法 | |
JP2710475B2 (ja) | メモリ制御回路 |