JP2002529811A - メモリ・リード要求を実行するための方法 - Google Patents
メモリ・リード要求を実行するための方法Info
- Publication number
- JP2002529811A JP2002529811A JP2000580088A JP2000580088A JP2002529811A JP 2002529811 A JP2002529811 A JP 2002529811A JP 2000580088 A JP2000580088 A JP 2000580088A JP 2000580088 A JP2000580088 A JP 2000580088A JP 2002529811 A JP2002529811 A JP 2002529811A
- Authority
- JP
- Japan
- Prior art keywords
- read
- data
- request
- write
- cycle
- 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
- 238000000034 method Methods 0.000 title claims description 23
- 230000001419 dependent effect Effects 0.000 claims abstract description 17
- 238000013500 data storage Methods 0.000 claims abstract description 6
- 230000000977 initiatory effect Effects 0.000 claims description 7
- 238000012937 correction Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 102100037709 Desmocollin-3 Human genes 0.000 description 1
- 101000968042 Homo sapiens Desmocollin-2 Proteins 0.000 description 1
- 101000880960 Homo sapiens Desmocollin-3 Proteins 0.000 description 1
- 102100031083 Uteroglobin Human genes 0.000 description 1
- 108090000203 Uteroglobin Proteins 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Advance Control (AREA)
Abstract
(57)【要約】
コンピュータ・システムにおいて、データを読み取るメモリ・サイクルの数を減少させる。記憶場所からのデータのリード要求が、データ格納コントローラで受信される。リード要求が記憶場所の内容を変更する係属中のライト要求に依存しているかどうかの判定がなされる。そうであれば、記憶場所のデータを読み取るリード・サイクルを開始し、読み取ったデータを係属中のライト要求に従って変更し、変更したデータを記憶場所に書込むライト・サイクルを開始する、メモリ・サイクルを実行する。そして、ライト・サイクルを開始する前に、変更したデータをメモリ・コントローラに返すことによって、別のリード・サイクルを開始せずに、依存しているリード要求がサービスされる。
Description
【0001】 [技術分野] 本発明は概してコンピュータシステムの分野に関し、より詳細にはシステム・
メモリからのデータの読み取りのために生成されるメモリ・サイクルを減少させ
ることに関する。
メモリからのデータの読み取りのために生成されるメモリ・サイクルを減少させ
ることに関する。
【0002】 [背景] 典型的なコンピュータ・アーキテクチャのもとでは、メモリ・コントローラは
リード及びライトサイクルの間のシステム・メモリへのアクセスを制御する。シ
ステム・メモリにアクセスしているとき、メモリ・コントローラは中央処理ユニ
ット(CPU)によって生成された、特定のメモリ・アドレスからのデータの読
み取りまたは特定のメモリ・アドレスへの書込みを要求するリード及びライト要
求を処理する。CPU要求を受信すると、メモリ・コントローラは、アドレスに
よる記憶場所にアクセスするために、システム・バスを介して対応するリードあ
るいはライト・サイクルを開始する。各メモリ・サイクルの間に転送されるデー
タの量は、システムのデータ・バスの幅及び記憶場所の長さに依存し、記憶場所
の長さは、例えば、8ビット、16ビット、又は32ビット等のデータのビット
数によって定義される。
リード及びライトサイクルの間のシステム・メモリへのアクセスを制御する。シ
ステム・メモリにアクセスしているとき、メモリ・コントローラは中央処理ユニ
ット(CPU)によって生成された、特定のメモリ・アドレスからのデータの読
み取りまたは特定のメモリ・アドレスへの書込みを要求するリード及びライト要
求を処理する。CPU要求を受信すると、メモリ・コントローラは、アドレスに
よる記憶場所にアクセスするために、システム・バスを介して対応するリードあ
るいはライト・サイクルを開始する。各メモリ・サイクルの間に転送されるデー
タの量は、システムのデータ・バスの幅及び記憶場所の長さに依存し、記憶場所
の長さは、例えば、8ビット、16ビット、又は32ビット等のデータのビット
数によって定義される。
【0003】 コンピュータ・システムの性能は、システム・メモリとCPUの間のデータの
スループットに大きく依存しているので、このスループットを増大させるために
様々な技術が考えられてきた。これらの技術には、パイプライン化及びCPU命
令のプリフェッチ化が含まれている。CPU命令をプリフェッチするためには、
直前の命令の実行の前に新たに到着した命令がフェッチされ、これにより実行効
率が増大する。パイプライン化の下では、CPU命令はより小さなサブタスクに
細分化され、各サブタスクは対応するレジスタによって実行される。加算命令を
実行するためには、例えば、加算命令がシステム・メモリからフェッチされ、命
令デコーダでデコードされ、ALUで処理される必要がある。多数の加算命令を
パイプライン処理で実行するためには、対応する複数のレジスタがフェッチ機能
、デコード機能、ALU機能を別個に実行し、これにより多数の加算機能を実質
的に同時に実行する。
スループットに大きく依存しているので、このスループットを増大させるために
様々な技術が考えられてきた。これらの技術には、パイプライン化及びCPU命
令のプリフェッチ化が含まれている。CPU命令をプリフェッチするためには、
直前の命令の実行の前に新たに到着した命令がフェッチされ、これにより実行効
率が増大する。パイプライン化の下では、CPU命令はより小さなサブタスクに
細分化され、各サブタスクは対応するレジスタによって実行される。加算命令を
実行するためには、例えば、加算命令がシステム・メモリからフェッチされ、命
令デコーダでデコードされ、ALUで処理される必要がある。多数の加算命令を
パイプライン処理で実行するためには、対応する複数のレジスタがフェッチ機能
、デコード機能、ALU機能を別個に実行し、これにより多数の加算機能を実質
的に同時に実行する。
【0004】 パイプライン処理及びプリフェッチ実行技術を用いるコンピュータ・システム
では、リード要求がまだ係属中(ペンディング)で実行されてないライト要求に
依存することとなる状況が生じる。この依存性は、リード要求がライト要求より
も優先するシステムでは混乱をもたらすものではない。しかしながら、あるコン
ピュータ・システム、例えば、システム性能がシステム・メモリからどれだけ速
くデータを読み出せるかで測られる、電話通信のアプリケーションで使用される
システムでは、リード要求がライト要求よりも優先する。
では、リード要求がまだ係属中(ペンディング)で実行されてないライト要求に
依存することとなる状況が生じる。この依存性は、リード要求がライト要求より
も優先するシステムでは混乱をもたらすものではない。しかしながら、あるコン
ピュータ・システム、例えば、システム性能がシステム・メモリからどれだけ速
くデータを読み出せるかで測られる、電話通信のアプリケーションで使用される
システムでは、リード要求がライト要求よりも優先する。
【0005】 一般に、データはその全長(例えば、8、16、あるいは32ビット)で、シ
ステム・メモリから読み出され、書込まれる。これはたとえリード要求あるいは
ライト要求が全長未満の部分データに対するもの、例えば、ライト要求が4バイ
トの記憶場所の1バイトを変更するとき、であっても正しい。なぜならリード及
びライトのサイクルはその記憶場所の長さ全体に対して実行され、一般のシステ
ムはこのような要求を処理するのにリード−変更−ライト(RMW)サイクルを
用いる。RMWサイクルの下では、メモリ・コントローラは記憶場所全体を読み
取り、ライト要求によって指定されたデータ部分を部分的に変更し、変更したデ
ータを指定された位置に再度書き込む。
ステム・メモリから読み出され、書込まれる。これはたとえリード要求あるいは
ライト要求が全長未満の部分データに対するもの、例えば、ライト要求が4バイ
トの記憶場所の1バイトを変更するとき、であっても正しい。なぜならリード及
びライトのサイクルはその記憶場所の長さ全体に対して実行され、一般のシステ
ムはこのような要求を処理するのにリード−変更−ライト(RMW)サイクルを
用いる。RMWサイクルの下では、メモリ・コントローラは記憶場所全体を読み
取り、ライト要求によって指定されたデータ部分を部分的に変更し、変更したデ
ータを指定された位置に再度書き込む。
【0006】 リードが優先するシステムでは、リード要求はそのリード要求から独立した経
路でキューされる、実行されてないライト要求に依存することがある。この依存
性を解決するためには、メモリ・コントローラはそのリード要求をサービスする
前に、そのライト要求が実行されるのを待つ必要がある。しかしながら、ある場
合には、その依存性の解決策はRMWサイクルを必要とするであろう。例えば、
32ビット(すなわち、4バイト)の記憶場所の全長の読み取りを要求するリー
ド要求は、同じ記憶場所の、例えば、1バイトを部分的に変更する係属中のRM
Wサイクルに依存するであろう。依存性の解決策がRMWサイクルの実行を必要
とするとき、リード要求をサービスするための従来の技術では、2つのリード・
サイクルを実行する必要がある。すなわち、1つはライト変更の前のデータの読
み取り用であり、もう1つはライト変更の後のそのデータの読みとり用である。
路でキューされる、実行されてないライト要求に依存することがある。この依存
性を解決するためには、メモリ・コントローラはそのリード要求をサービスする
前に、そのライト要求が実行されるのを待つ必要がある。しかしながら、ある場
合には、その依存性の解決策はRMWサイクルを必要とするであろう。例えば、
32ビット(すなわち、4バイト)の記憶場所の全長の読み取りを要求するリー
ド要求は、同じ記憶場所の、例えば、1バイトを部分的に変更する係属中のRM
Wサイクルに依存するであろう。依存性の解決策がRMWサイクルの実行を必要
とするとき、リード要求をサービスするための従来の技術では、2つのリード・
サイクルを実行する必要がある。すなわち、1つはライト変更の前のデータの読
み取り用であり、もう1つはライト変更の後のそのデータの読みとり用である。
【0007】 しかしながら、依存性を解決するコンピュータ・システムにおいては、システ
ムのデータ・スループットを増大するように、リード・サイクルの数を減少する
ことが望ましい。
ムのデータ・スループットを増大するように、リード・サイクルの数を減少する
ことが望ましい。
【0008】 [発明の要旨] 簡潔には、本発明によるコンピュータのシステム・メモリからデータを読み取
る方法では、記憶場所からのデータのリード要求をデータ格納コントローラで受
け取る。リード要求が、その記憶場所の内容を変更する係属中のライト要求に依
存しているかどうかの判定がなされる。もしそうであれば、その記憶場所からデ
ータを読み取るリード・サイクルを開始し、係属中のライト要求に従って読み取
ったデータを変更し、変更されたデータをその記憶場所に書込むライト・サイク
ルを開始する、メモリ・サイクルが実行される。ライト・サイクルを開始する前
にメモリ・コントローラに変更されたデータを返すことにより、別のリード・サ
イクルを開始せずに依存するリード要求がサービスされる。
る方法では、記憶場所からのデータのリード要求をデータ格納コントローラで受
け取る。リード要求が、その記憶場所の内容を変更する係属中のライト要求に依
存しているかどうかの判定がなされる。もしそうであれば、その記憶場所からデ
ータを読み取るリード・サイクルを開始し、係属中のライト要求に従って読み取
ったデータを変更し、変更されたデータをその記憶場所に書込むライト・サイク
ルを開始する、メモリ・サイクルが実行される。ライト・サイクルを開始する前
にメモリ・コントローラに変更されたデータを返すことにより、別のリード・サ
イクルを開始せずに依存するリード要求がサービスされる。
【0009】 本発明のより詳細な特徴のいくつかによれば、リード要求は係属中のライト要
求よりも優先し、メモリ・サイクルは引き続いて受信したリード要求の前に、そ
の記憶場所を部分的に変更する係属中のライト要求と共に強制的に実行されるサ
イクルである。好適には、本発明の方法は、記憶場所のデータを部分的に変更す
るこれらの係属中のライト要求を、リード−変更−ライト・サイクルを開始する
ことによってリード要求の依存性を生じさせずにサービスする。
求よりも優先し、メモリ・サイクルは引き続いて受信したリード要求の前に、そ
の記憶場所を部分的に変更する係属中のライト要求と共に強制的に実行されるサ
イクルである。好適には、本発明の方法は、記憶場所のデータを部分的に変更す
るこれらの係属中のライト要求を、リード−変更−ライト・サイクルを開始する
ことによってリード要求の依存性を生じさせずにサービスする。
【0010】 [好適な実施形態の詳細な説明] 図1を参照すると、本発明を組み込むのに好適なコンピュータ・システム10
のブロック図が示されている。代表的な実施形態では、コンピュータ・システム
10は、公衆交換電話網(PSTN)のためのスイッチング制御を提供する電話
通信用のコンピュータ・システムである。要求される電話通信サービスを提供す
るために、コンピュータ・システム10は、リード要求がライト要求よりも優先
する、リード優先システムとして設計されている。システム10は、リード要求
及びライト要求を含む、メモリ・アクセス要求を発生するプログラムを実行する
ことにより、介在する複数のデータ格納ユニット(DSU)に格納されたデータ
を交換する、命令処理ユニット(IPU)の制御の下で動作する。リード要求は
指定された記憶場所からデータ変数あるいは副変数を要求し、ライト要求は同じ
記憶場所のデータ変数あるいは副変数を変更する。
のブロック図が示されている。代表的な実施形態では、コンピュータ・システム
10は、公衆交換電話網(PSTN)のためのスイッチング制御を提供する電話
通信用のコンピュータ・システムである。要求される電話通信サービスを提供す
るために、コンピュータ・システム10は、リード要求がライト要求よりも優先
する、リード優先システムとして設計されている。システム10は、リード要求
及びライト要求を含む、メモリ・アクセス要求を発生するプログラムを実行する
ことにより、介在する複数のデータ格納ユニット(DSU)に格納されたデータ
を交換する、命令処理ユニット(IPU)の制御の下で動作する。リード要求は
指定された記憶場所からデータ変数あるいは副変数を要求し、ライト要求は同じ
記憶場所のデータ変数あるいは副変数を変更する。
【0011】 本発明の代表的実施形態では、各記憶場所は32ビットのアドレスでアドレス
可能な32ビット(すなわち、4バイト)のデータを格納する。好適には、DS
U16の介在配置により、別のDSUへのアクセスを続けている間に、1つのD
SUへのアクセスを開始することが可能となる。IPU14内の命令キュー・コ
ントローラ(IQC)は、要求の順序化及び要求をデータ格納コントローラ(D
SC)20への提供を受け持つ。DSC20は、メモリ・バス22を介したメモ
リ・サイクルの生成を受け持つ。上述のように、システム10はIPU命令を実
行するのにパイプライン処理及びプリフェッチ技術を用いる。
可能な32ビット(すなわち、4バイト)のデータを格納する。好適には、DS
U16の介在配置により、別のDSUへのアクセスを続けている間に、1つのD
SUへのアクセスを開始することが可能となる。IPU14内の命令キュー・コ
ントローラ(IQC)は、要求の順序化及び要求をデータ格納コントローラ(D
SC)20への提供を受け持つ。DSC20は、メモリ・バス22を介したメモ
リ・サイクルの生成を受け持つ。上述のように、システム10はIPU命令を実
行するのにパイプライン処理及びプリフェッチ技術を用いる。
【0012】 図2を参照すると、本発明のDSC20のブロック図が示されている。リード
要求のキューイングのために、DSC20は、指定されたDSUの記憶場所から
データ変数を読み取るIQCで生成されたリード要求を格納する、多重素子型リ
ード・アクセス・キュー(RAQ)26を含んでいる。IQC18はRAQ26
もフラッシュすることができ、その素子の全てあるいは一部をクリーニングする
。好適には、IQC18は、RAQ26と同じ長さの内部バッファを有し、RA
Qが満杯となるのを防止する。代表的実施形態では、RAQ26は、各素子が以
下の表1で定義される46ビットである8素子のキューである。
要求のキューイングのために、DSC20は、指定されたDSUの記憶場所から
データ変数を読み取るIQCで生成されたリード要求を格納する、多重素子型リ
ード・アクセス・キュー(RAQ)26を含んでいる。IQC18はRAQ26
もフラッシュすることができ、その素子の全てあるいは一部をクリーニングする
。好適には、IQC18は、RAQ26と同じ長さの内部バッファを有し、RA
Qが満杯となるのを防止する。代表的実施形態では、RAQ26は、各素子が以
下の表1で定義される46ビットである8素子のキューである。
【0013】
【表1】
【0014】 PVは、RAQ素子が有効かそうでないかを示す位置有効フラグである。例え
ば、リード要求がフラッシュされたとき、PVはリセットされる。タグは、各リ
ード要求に対してIQC18によって割り当てられたアクセス・シーケンス番号
である。アドレスは、データ変数あるいは副変数が読み取られるべき記憶場所を
指定する。上述のように、コンピュータ・システム10では、リード要求は最も
高い優先権を有し、係属中のライト要求に依存するものとならない限り、通常は
RAQ26を妨害されずに「通過」する。RAQ26から到着したリード要求そ
れぞれに対して、要求されたデータが係属中のライト要求に依存しているかどう
かの判定がなされる。リード要求が係属中のライト要求に依存するものとなると
き、強制的サイクルの実行により係属中のライト要求に優先権が与えられる。M
タグは、各ライト要求に割り当てられたマッチ・タグであり、リード要求が係属
中のライト要求に依存するものとなったら対応するRAQ素子に返される。この
状況の下で、Mタグ及びMタグ有効(MV)フラグによって示された、係属中の
ライト要求に関連するデータをDSU16に書込む強制的ライト・サイクルが開
始される。
ば、リード要求がフラッシュされたとき、PVはリセットされる。タグは、各リ
ード要求に対してIQC18によって割り当てられたアクセス・シーケンス番号
である。アドレスは、データ変数あるいは副変数が読み取られるべき記憶場所を
指定する。上述のように、コンピュータ・システム10では、リード要求は最も
高い優先権を有し、係属中のライト要求に依存するものとならない限り、通常は
RAQ26を妨害されずに「通過」する。RAQ26から到着したリード要求そ
れぞれに対して、要求されたデータが係属中のライト要求に依存しているかどう
かの判定がなされる。リード要求が係属中のライト要求に依存するものとなると
き、強制的サイクルの実行により係属中のライト要求に優先権が与えられる。M
タグは、各ライト要求に割り当てられたマッチ・タグであり、リード要求が係属
中のライト要求に依存するものとなったら対応するRAQ素子に返される。この
状況の下で、Mタグ及びMタグ有効(MV)フラグによって示された、係属中の
ライト要求に関連するデータをDSU16に書込む強制的ライト・サイクルが開
始される。
【0015】 後で詳細に説明するように、リード要求が記憶場所を部分的に変更するライト
要求に依存するとき、DSU16に書込まれるデータに加え、変更されたデータ
が、リード−変更−リード−ライト(RMRW)サイクルを生成することによっ
てDSC20に返される。RMRWサイクルが生成されると、DSC20に返さ
れたデータは、本発明の代表的実施形態では16の位置を有するキャッシュ・メ
モリ24に格納される。強制的ライト・サイクルが開始されると、係属中のライ
ト要求の変更されたデータを返すべき位置を格納することによって、キャッシュ
・メモリ24内の位置が確保される。
要求に依存するとき、DSU16に書込まれるデータに加え、変更されたデータ
が、リード−変更−リード−ライト(RMRW)サイクルを生成することによっ
てDSC20に返される。RMRWサイクルが生成されると、DSC20に返さ
れたデータは、本発明の代表的実施形態では16の位置を有するキャッシュ・メ
モリ24に格納される。強制的ライト・サイクルが開始されると、係属中のライ
ト要求の変更されたデータを返すべき位置を格納することによって、キャッシュ
・メモリ24内の位置が確保される。
【0016】 ライト要求のキューイングのために、DSC20は、8素子のペンディング・
アドレス・ライト・アクセス・キュー(PAWAQ)32を含んでいる。しかし
、厳密な順番では、ライト・アドレスがPAWAQ32に到着したのと同時ある
いはその後に、変更されるべきデータ変数がDSC20に到着する。ライト・デ
ータ変数プロセッサ34は、到着したデータ変数に関連したアドレスがPAWA
Q32から取り出されライト・アクセス・キュー(WAQ)38に設置された時
点で到着したデータ変数を処理する。好適には、PAWAQ32は、ライト要求
を供給してキューのオーバーフローを防止するIQCバッファ(不図示)と同じ
サイズである。IQC18がPAWAQ32内の係属中のライト要求を、それに
関連したデータ変数が到着する前にフラッシュすることもあることに留意された
い。ここに示した実施形態では、PAWAQ32の各素子は以下の表2に従って
定義される56ビットである。
アドレス・ライト・アクセス・キュー(PAWAQ)32を含んでいる。しかし
、厳密な順番では、ライト・アドレスがPAWAQ32に到着したのと同時ある
いはその後に、変更されるべきデータ変数がDSC20に到着する。ライト・デ
ータ変数プロセッサ34は、到着したデータ変数に関連したアドレスがPAWA
Q32から取り出されライト・アクセス・キュー(WAQ)38に設置された時
点で到着したデータ変数を処理する。好適には、PAWAQ32は、ライト要求
を供給してキューのオーバーフローを防止するIQCバッファ(不図示)と同じ
サイズである。IQC18がPAWAQ32内の係属中のライト要求を、それに
関連したデータ変数が到着する前にフラッシュすることもあることに留意された
い。ここに示した実施形態では、PAWAQ32の各素子は以下の表2に従って
定義される56ビットである。
【0017】
【表2】
【0018】 タグ・フラグは、IQC18から受信されライト・アクセス・シーケンス番号
を定義している。アドレスは、対応するライト要求のシーケンス番号に対するI
QC18から受信した記憶場所へのライト・アドレスである。Pタグ及びPTは
、アクセス・シーケンスにおいて同じタグが2つの位置にある状況を解決するの
に使用される、DSC20の内部パニック・タグである。代表的実施形態では、
IQC18から受信されたデータ変数は、以下のビット長、すなわち、1ビット
・データ、2ビット・データ、4ビット・データ、8ビット・データ、16ビッ
ト・データ、32ビット・データ、64ビット・データ、及び128ビット・デ
ータのフォーマットの1つである。ビット長フォーマット及びデータ開始位置は
、VCフラグを介してICQ18によって指定される。代表的実施形態では、I
QC18は、64ビット及び128ビットのデータを2つあるいは4つの32ビ
ット・データにそれぞれ細分化し、DSC20は各32ビット・データをトラン
スペアレントに扱う。ダブル・ライトフラグは、命令が同じデータを異なった2
つの記憶場所に書込む状況を示している。
を定義している。アドレスは、対応するライト要求のシーケンス番号に対するI
QC18から受信した記憶場所へのライト・アドレスである。Pタグ及びPTは
、アクセス・シーケンスにおいて同じタグが2つの位置にある状況を解決するの
に使用される、DSC20の内部パニック・タグである。代表的実施形態では、
IQC18から受信されたデータ変数は、以下のビット長、すなわち、1ビット
・データ、2ビット・データ、4ビット・データ、8ビット・データ、16ビッ
ト・データ、32ビット・データ、64ビット・データ、及び128ビット・デ
ータのフォーマットの1つである。ビット長フォーマット及びデータ開始位置は
、VCフラグを介してICQ18によって指定される。代表的実施形態では、I
QC18は、64ビット及び128ビットのデータを2つあるいは4つの32ビ
ット・データにそれぞれ細分化し、DSC20は各32ビット・データをトラン
スペアレントに扱う。ダブル・ライトフラグは、命令が同じデータを異なった2
つの記憶場所に書込む状況を示している。
【0019】 WAQ38は、到着したデータ変数及びそれらに関連したアドレスをキューす
る。代表的実施形態では、ライト要求は、メモリ・バス22がアイドルであると
き、WAQキュー38が満杯であるとき、あるいはリード要求が係属中のライト
要求に依存していると判定されたときにのみ、DSU16に書込まれる。リード
要求の係属中のライト要求への依存性は、PAWAQ32及びWAQ38でキュ
ーされたライト・アドレスとRAQ26に到着したリード要求に関連したアドレ
スとを比較して判定される。RAQ26において依存しているリードによって設
定されたペンディング・リード・フラグは、リード要求が係属中のライト要求に
依存するようになったときに、ライト・サイクルを強制するのに使用される。
る。代表的実施形態では、ライト要求は、メモリ・バス22がアイドルであると
き、WAQキュー38が満杯であるとき、あるいはリード要求が係属中のライト
要求に依存していると判定されたときにのみ、DSU16に書込まれる。リード
要求の係属中のライト要求への依存性は、PAWAQ32及びWAQ38でキュ
ーされたライト・アドレスとRAQ26に到着したリード要求に関連したアドレ
スとを比較して判定される。RAQ26において依存しているリードによって設
定されたペンディング・リード・フラグは、リード要求が係属中のライト要求に
依存するようになったときに、ライト・サイクルを強制するのに使用される。
【0020】 本発明によれば、リード要求が記憶場所を部分的に変更する係属中のライト要
求に依存するようになったとき、DSC20はリード要求の依存性を解決するた
めにRMRWサイクルを生成する。RMRWサイクルの下では、リード・サイク
ルが実行され、書込み変更の後で、変更されたデータがDSC20に返されると
共に、並行して、すなわち、実質的に同時に、DSU16に再度書き込まれる。
より詳細には、DSC20に返されるデータは、リード要求の依存性が判定され
たときに確保されたキャッシュ位置に格納される。このように、RMRWサイク
ルは、変更されたデータが後続するメモリへの再度の書込みと同時に返されるの
で、ただ1つのリード・サイクルの実行を必要とする。このように、メモリ・バ
スを介したリード・サイクルの数が1つに減少される。しかしながら、DSC2
0は、リード要求に対して依存性を生じさせないライト要求をサービスするため
に、RMWサイクルを生成する。例えば、メモリ・バス22がアイドルであるか
あるいはWAQキュー38が満杯であれば、記憶場所を部分的に変更するライト
要求をサービスするときに、DSC20はRMWサイクルを生成する。
求に依存するようになったとき、DSC20はリード要求の依存性を解決するた
めにRMRWサイクルを生成する。RMRWサイクルの下では、リード・サイク
ルが実行され、書込み変更の後で、変更されたデータがDSC20に返されると
共に、並行して、すなわち、実質的に同時に、DSU16に再度書き込まれる。
より詳細には、DSC20に返されるデータは、リード要求の依存性が判定され
たときに確保されたキャッシュ位置に格納される。このように、RMRWサイク
ルは、変更されたデータが後続するメモリへの再度の書込みと同時に返されるの
で、ただ1つのリード・サイクルの実行を必要とする。このように、メモリ・バ
スを介したリード・サイクルの数が1つに減少される。しかしながら、DSC2
0は、リード要求に対して依存性を生じさせないライト要求をサービスするため
に、RMWサイクルを生成する。例えば、メモリ・バス22がアイドルであるか
あるいはWAQキュー38が満杯であれば、記憶場所を部分的に変更するライト
要求をサービスするときに、DSC20はRMWサイクルを生成する。
【0021】 図3を参照すると、本発明によるメモリにアクセスする方法のフローチャート
が示されている。フローチャートによれば、この方法は、ブロック301のIP
U14によって開始されたリード要求を受信することを含んでいる。そして、ブ
ロック302で、リード要求が記憶位置を変更するライト要求に依存しているか
どうかの判定がなされる。もし依存していなければ、ブロック303でRAQ2
6における優先度に基づいてリード・サイクルが実行される。そうでなければ、
ブロック304で、記憶場所のデータを読み取るリード・サイクルを開始し、読
み取ったデータを係属中のライト要求に基づいて変更し、変更したデータを記憶
場所へ書込むライト・サイクルを開始する、RMRWサイクルを開始することに
より、リード要求をサービスする前に係属中のライト要求が実行される。ブロッ
ク305で、ライト・サイクルを開始する前に変更したデータをDSC20に返
すことにより、別のリード・サイクルを開始せずに、依存しているリード要求が
サービスされる。先に説明したように、リード要求に依存性を生じさせず、記憶
場所を部分的に変更する係属中のライト要求は、リード−変更−ライト・サイク
ルを開始することによりサービスされる。
が示されている。フローチャートによれば、この方法は、ブロック301のIP
U14によって開始されたリード要求を受信することを含んでいる。そして、ブ
ロック302で、リード要求が記憶位置を変更するライト要求に依存しているか
どうかの判定がなされる。もし依存していなければ、ブロック303でRAQ2
6における優先度に基づいてリード・サイクルが実行される。そうでなければ、
ブロック304で、記憶場所のデータを読み取るリード・サイクルを開始し、読
み取ったデータを係属中のライト要求に基づいて変更し、変更したデータを記憶
場所へ書込むライト・サイクルを開始する、RMRWサイクルを開始することに
より、リード要求をサービスする前に係属中のライト要求が実行される。ブロッ
ク305で、ライト・サイクルを開始する前に変更したデータをDSC20に返
すことにより、別のリード・サイクルを開始せずに、依存しているリード要求が
サービスされる。先に説明したように、リード要求に依存性を生じさせず、記憶
場所を部分的に変更する係属中のライト要求は、リード−変更−ライト・サイク
ルを開始することによりサービスされる。
【0022】 以上の説明により本発明が、記憶場所を部分的に変更するライトに依存するよ
うになったリード要求を処理するのに必要なリード・サイクルの数を減少するの
が理解されたであろう。
うになったリード要求を処理するのに必要なリード・サイクルの数を減少するの
が理解されたであろう。
【図1】 本発明を組み込むのに好適なコンピュータ・システムのブロック図である。
【図2】 図1のコンピュータ・システムに込み込まれるデータ格納コントローラのブロ
ック図である。
ック図である。
【図3】 本発明によるコンピュータのシステム・メモリからデータを読み取るために行
われるステップのフローチャートである。
われるステップのフローチャートである。
【手続補正書】特許協力条約第34条補正の翻訳文提出書
【提出日】平成12年10月12日(2000.10.12)
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正内容】
【特許請求の範囲】
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0005
【補正方法】変更
【補正内容】
【0005】 一般に、データはその全長(例えば、8、16、あるいは32ビット)で、シ
ステム・メモリから読み出され、書込まれる。これはたとえリード要求あるいは
ライト要求が全長未満の部分データに対するもの、例えば、ライト要求が4バイ
トの記憶場所の1バイトを変更するとき、であっても正しい。なぜならリード及
びライトのサイクルはその記憶場所の長さ全体に対して実行され、一般のシステ
ムはこのような要求を処理するのにリード−変更−ライト(RMW)サイクルを
用いる。RMWサイクルは、例えば、EP 0−651−323号に記載された
ように、マージ回路を設けることによって実施することができる。RMWサイク
ルの下では、メモリ・コントローラは記憶場所全体を読み取り、ライト要求によ
って指定されたデータ部分を部分的に変更し、変更したデータを指定された位置
に再度書き込む。
ステム・メモリから読み出され、書込まれる。これはたとえリード要求あるいは
ライト要求が全長未満の部分データに対するもの、例えば、ライト要求が4バイ
トの記憶場所の1バイトを変更するとき、であっても正しい。なぜならリード及
びライトのサイクルはその記憶場所の長さ全体に対して実行され、一般のシステ
ムはこのような要求を処理するのにリード−変更−ライト(RMW)サイクルを
用いる。RMWサイクルは、例えば、EP 0−651−323号に記載された
ように、マージ回路を設けることによって実施することができる。RMWサイク
ルの下では、メモリ・コントローラは記憶場所全体を読み取り、ライト要求によ
って指定されたデータ部分を部分的に変更し、変更したデータを指定された位置
に再度書き込む。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),OA(BF,BJ ,CF,CG,CI,CM,GA,GN,GW,ML, MR,NE,SN,TD,TG),AP(GH,GM,K E,LS,MW,SD,SL,SZ,TZ,UG,ZW ),EA(AM,AZ,BY,KG,KZ,MD,RU, TJ,TM),AE,AL,AM,AT,AU,AZ, BA,BB,BG,BR,BY,CA,CH,CN,C R,CU,CZ,DE,DK,DM,EE,ES,FI ,GB,GD,GE,GH,GM,HR,HU,ID, IL,IN,IS,JP,KE,KG,KP,KR,K Z,LC,LK,LR,LS,LT,LU,LV,MA ,MD,MG,MK,MN,MW,MX,NO,NZ, PL,PT,RO,RU,SD,SE,SG,SI,S K,SL,TJ,TM,TR,TT,TZ,UA,UG ,UZ,VN,YU,ZA,ZW Fターム(参考) 5B013 AA01 AA02 CC01 CC08 CC10 5B060 CB08
Claims (6)
- 【請求項1】 システム・メモリからデータを読み取る方法であって、 データ格納コントローラから記憶場所からのデータのリード要求を受信するス
テップと、 リード要求が、前記記憶場所の内容を変更したデータを書込むライト要求に依
存しているかどうかを判定するステップと、 もしそうであれば、前記記憶場所のデータを読み取るリード・サイクルを開始
し、読み取ったデータを係属中のライト要求に基づいて変更し、変更したデータ
を前記記憶場所に書込むライト・サイクルを開始する、メモリ・サイクルを実行
するステップと、 別のリード・サイクルを開始せずに依存しているリード要求をサービスするス
テップと、を備えることを特徴とする方法。 - 【請求項2】 前記リード要求をサービスするステップが、前記ライト・サ
イクルを開始する前に、変更されたデータをメモリ・コントローラに返すステッ
プを含むことを特徴とする請求項1に記載の方法。 - 【請求項3】 前記メモリ・サイクルが、引き続いて受信したリード要求の
前に実行される強制的サイクルであることを特徴とする請求項1に記載の方法。 - 【請求項4】 前記係属中のライト要求が、前記記憶場所のデータを部分的
に変更することを特徴とする請求項1に記載の方法。 - 【請求項5】 依存していない限り、前記リード要求が係属中のライト要求
よりも優先度が高いことを特徴とする請求項1に記載の方法。 - 【請求項6】 リード要求に依存性を生じさせずに記憶場所のデータを部分
的に変更する係属中のライト要求を、リード−変更−ライトサイクルを開始する
ことによってサービスするステップを更に備えることを特徴とする請求項1に記
載の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/182,773 US6223259B1 (en) | 1998-10-30 | 1998-10-30 | Reducing read cycle of memory read request for data to be partially modified by a pending write request |
US09/182,773 | 1998-10-30 | ||
PCT/SE1999/001953 WO2000026773A1 (en) | 1998-10-30 | 1999-10-29 | Method for executing memory read requests |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2002529811A true JP2002529811A (ja) | 2002-09-10 |
Family
ID=22669961
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000580088A Pending JP2002529811A (ja) | 1998-10-30 | 1999-10-29 | メモリ・リード要求を実行するための方法 |
Country Status (8)
Country | Link |
---|---|
US (1) | US6223259B1 (ja) |
EP (1) | EP1125195B1 (ja) |
JP (1) | JP2002529811A (ja) |
KR (1) | KR100595779B1 (ja) |
AU (1) | AU1432100A (ja) |
CA (1) | CA2348664A1 (ja) |
DE (1) | DE69924748T2 (ja) |
WO (1) | WO2000026773A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009289170A (ja) * | 2008-05-30 | 2009-12-10 | Nec Electronics Corp | データ処理装置、メモリコントローラ及びそのアクセス制御方法 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030217223A1 (en) * | 2002-05-14 | 2003-11-20 | Infineon Technologies North America Corp. | Combined command set |
US20030214847A1 (en) * | 2002-05-14 | 2003-11-20 | Infineon Technologies North America Corp. | Wordline pulldown circuit |
US7117316B2 (en) * | 2002-08-05 | 2006-10-03 | Micron Technology, Inc. | Memory hub and access method having internal row caching |
US6941428B2 (en) | 2002-09-25 | 2005-09-06 | International Business Machines Corporation | Memory controller optimization |
US7330992B2 (en) | 2003-12-29 | 2008-02-12 | Micron Technology, Inc. | System and method for read synchronization of memory modules |
US7188219B2 (en) * | 2004-01-30 | 2007-03-06 | Micron Technology, Inc. | Buffer control system and method for a memory system having outstanding read and write request buffers |
US7519788B2 (en) * | 2004-06-04 | 2009-04-14 | Micron Technology, Inc. | System and method for an asynchronous data buffer having buffer write and read pointers |
US20060129764A1 (en) * | 2004-12-09 | 2006-06-15 | International Business Machines Corporation | Methods and apparatus for storing a command |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4467414A (en) | 1980-08-22 | 1984-08-21 | Nippon Electric Co., Ltd. | Cashe memory arrangement comprising a cashe buffer in combination with a pair of cache memories |
EP0425550B1 (en) * | 1988-06-30 | 1995-01-04 | Wang Laboratories, Inc. | Memory control unit |
US5459842A (en) * | 1992-06-26 | 1995-10-17 | International Business Machines Corporation | System for combining data from multiple CPU write requests via buffers and using read-modify-write operation to write the combined data to the memory |
US5878245A (en) | 1993-10-29 | 1999-03-02 | Advanced Micro Devices, Inc. | High performance load/store functional unit and data cache |
US5465336A (en) | 1994-06-30 | 1995-11-07 | International Business Machines Corporation | Fetch and store buffer that enables out-of-order execution of memory instructions in a data processing system |
US5835747A (en) | 1996-01-26 | 1998-11-10 | Advanced Micro Devices, Inc. | Hierarchical scan logic for out-of-order load/store execution control |
US5870625A (en) * | 1995-12-11 | 1999-02-09 | Industrial Technology Research Institute | Non-blocking memory write/read mechanism by combining two pending commands write and read in buffer and executing the combined command in advance of other pending command |
-
1998
- 1998-10-30 US US09/182,773 patent/US6223259B1/en not_active Expired - Lifetime
-
1999
- 1999-10-29 DE DE69924748T patent/DE69924748T2/de not_active Expired - Lifetime
- 1999-10-29 JP JP2000580088A patent/JP2002529811A/ja active Pending
- 1999-10-29 CA CA002348664A patent/CA2348664A1/en not_active Abandoned
- 1999-10-29 AU AU14321/00A patent/AU1432100A/en not_active Abandoned
- 1999-10-29 WO PCT/SE1999/001953 patent/WO2000026773A1/en active IP Right Grant
- 1999-10-29 KR KR1020017005398A patent/KR100595779B1/ko active IP Right Grant
- 1999-10-29 EP EP99971536A patent/EP1125195B1/en not_active Expired - Lifetime
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009289170A (ja) * | 2008-05-30 | 2009-12-10 | Nec Electronics Corp | データ処理装置、メモリコントローラ及びそのアクセス制御方法 |
Also Published As
Publication number | Publication date |
---|---|
DE69924748T2 (de) | 2006-02-09 |
AU1432100A (en) | 2000-05-22 |
EP1125195B1 (en) | 2005-04-13 |
EP1125195A1 (en) | 2001-08-22 |
KR100595779B1 (ko) | 2006-07-03 |
CA2348664A1 (en) | 2000-05-11 |
DE69924748D1 (de) | 2005-05-19 |
US6223259B1 (en) | 2001-04-24 |
KR20010080923A (ko) | 2001-08-25 |
WO2000026773A1 (en) | 2000-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11226820B2 (en) | Data transfer bus communication using single request to perform command and return data to destination indicated in context to allow thread context switch | |
CA1325285C (en) | Method and apparatus for ordering and queueing multiple memory requests | |
US7606998B2 (en) | Store instruction ordering for multi-core processor | |
US7941585B2 (en) | Local scratchpad and data caching system | |
JP3518770B2 (ja) | 命令をその少なくとも1つの実行装置へ迅速にディスパッチする方法および装置 | |
US10846092B2 (en) | Execution of micro-operations | |
EP1125192B1 (en) | A method for writing data into data storage units | |
JP2002530734A (ja) | ジョブ並列プロセッサ | |
JP2022545565A (ja) | プロセッサにおけるコンテキスト・スイッチ上でのコンテキスト固有の分岐予測器状態のスワップおよび復元 | |
JP2002529811A (ja) | メモリ・リード要求を実行するための方法 | |
US7555609B2 (en) | Systems and method for improved data retrieval from memory on behalf of bus masters | |
JP2003223359A (ja) | 演算処理装置 | |
US20030131205A1 (en) | Atomic transfer of a block of data | |
US11269642B2 (en) | Dynamic hammock branch training for branch hammock detection in an instruction stream executing in a processor | |
US9201655B2 (en) | Method, computer program product, and hardware product for eliminating or reducing operand line crossing penalty | |
US11915002B2 (en) | Providing extended branch target buffer (BTB) entries for storing trunk branch metadata and leaf branch metadata | |
US11036512B2 (en) | Systems and methods for processing instructions having wide immediate operands | |
JP2731740B2 (ja) | 通信レジスタ付並列計算機 | |
CN112148473A (zh) | 核-核“监听”指令变体 | |
WO2000026741A2 (en) | A method for delivering data to an instruction processing unit | |
IE901527A1 (en) | Method and apparatus for ordering and queuing multiple¹memory requests |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20061023 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20091116 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20091120 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20100305 |