JP2004522227A - 推定アドレスを発生するインクリメンタを備えたメモリ制御システム - Google Patents
推定アドレスを発生するインクリメンタを備えたメモリ制御システム Download PDFInfo
- Publication number
- JP2004522227A JP2004522227A JP2002578150A JP2002578150A JP2004522227A JP 2004522227 A JP2004522227 A JP 2004522227A JP 2002578150 A JP2002578150 A JP 2002578150A JP 2002578150 A JP2002578150 A JP 2002578150A JP 2004522227 A JP2004522227 A JP 2004522227A
- Authority
- JP
- Japan
- Prior art keywords
- address
- memory
- page
- incrementer
- processor
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0215—Addressing or allocation; Relocation with look ahead addressing means
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
メモリ制御器は、プロセッサによってアサートされるべき次のアドレスを予測するインクリメンタを含む。このインクリメンタ(実質的には、カウンタであるが)は、ラップ境界においてラップするように、並びに、メモリがページモードにある場合に予測されたアドレスがページ境界を通過するときを示すように構成されている。このインクリメンタは、後続のアドレスが異なるページにある場合、または、アドレスループの場合、さらに、後続のアドレスが連続していない場合であっても正確な予測をもたらす。従って、正確なアドレス予測の数は増加し、全体の性能を向上させる。本発明は、1またはそれ以上のページの境界を通過する指示ループを有する信号処理装置に特に適用可能である。
Description
【背景技術】
【0001】
本発明は、コンピュータに関し、特に、コンピュータに用いられるメモリコントローラに関する。本発明の主な目的は、メモリコントローラによって、より有効な予測アドレッシング(speculative addressing)を提供することである。
【0002】
現代の発展の多くは、コンピュータの普及の増大に付随する。典型的なコンピュータは、データや命令を格納するためのメモリ、並びに、指示を実行し、適宜、データを処理する1またはそれ以上のプロセッサ(例えば、“中央演算処理装置”または“CPU”)を有する。コンピュータによって実行される命令は、比較的簡単なものであり、複雑なタスクは、多数の命令を有するプログラムを実行することによって実現され得る。コンピュータの優劣は、命令を実行する速度に依るところが大きい。
【0003】
コンピュータ技術における進歩は、コンピュータの能力の劇的な向上をもたらした。その進歩が劇的であったのと同様に、より高い演算能力への飽き足らない要求がある。速度向上の弊害の1つは、プロセッサとメモリとの間においてデータや命令を転送するためにかかる時間である。原理的には、プロセッサはメモリと直接に通信するが、プロセッサおよびメモリの両方の設計サイクルが早いために、市場で売り出されたときには、プロセッサおよびメモリを適切にインタフェースさせることが困難になってしまう。
【0004】
例えば、いくつかのメモリは、ページドモード(paged mode)のために設けられており、そのページドモードにおいては、次のアドレスを決定するために、低位のアドレスビットのみを調べる(examine)必要があると推測することができる。比較的少ないアドレスラインを調査すれば足りるので、そのメモリは、より迅速にアドレスへ応答することができる。ページ変更が要求される場合、ページ境界決定信号はメモリへ送信され、この場合において、メモリは総てのアドレスビットを見ることで応答する。一般に、プロセッサは、ページモードの存在のようには、メモリの仕様を認識(aware)していない。よって、プロセッサとメモリとの適切なインタフェースに問題が生じる。
【0005】
メモリコントローラは、適切なメモリ動作モードが用いられ得るように、プロセッサとメモリタイプとの間をインタフェースするために、比較的短時間で設計され得る。メモリコントローラが存在すると、メモリへ直接に転送される代わりに、プロセッサによってアサートされたアドレスはメモリへ転送され、あるいは、変換されてからメモリへ転送されるので、メモリコントローラの存在によりメモリへのアクセスに対して潜在的に待ち時間が付加される。一方、メモリコントローラは、次のアドレスを前もって予測してメモリへアクセスすることによって、アクセススピードを上昇させることができる。典型的には、メモリのアドレスは連続的にアクセスされ、よって、その予測は、単に、連続した次のアドレスを選択することを含む。いくつかのプロセッサは、次のアドレスが連続しているものか否かを示すので、その予測の妥当性は、次のアドレスが受信される前であっても既に知られている。
【0006】
予測のアプローチは、予測が正確である範囲で性能を改善させる。典型的には、予測は、アドレスが連続していて、ページの境界を通過しない場合には正確である。本発明の目的は、正確な予測の領域(class)を拡大することによって、さらに性能を改善させることである。
【発明の要旨】
【0007】
本発明は、メモリ側におけるページ境界を通過する場合、および、プロセッサ側においてバースト転送でのラップ境界(wrap boundaries)を通過する場合にアドレスをラッピング(wrapping)するというアドレス予測に関する2つの重要なケースに対処する。本発明は、プログラマブルラップ境界においてラップする予測アドレスを与え、および/または、予測ページ境界検出信号を与えるメモリコントローラを提供する。本発明の一実施形態は、プログラマブルカウンタの形態でインクリメンタを備えたメモリコントローラであり、本発明の他の実施形態は、そのようなメモリコントローラを有するコンピュータシステムである。本発明による方法は、予測ラップまたは予測ページ境界検出、あるいは、その両方を含み得る。
【0008】
バースト転送のラップ境界のケースにおいて、本発明は、正確なアドレス予測によって達成される性能の向上を妨げることなくラッピングをもたらす。予測ページ境界が用いられる場合には、一連の正確な予測は、ページ境界の通過をほとんどまたは全く妨げることなく、続行することができる。予測ラップおよびページ境界予測は、ループがページ境界に亘って延びる場合において一緒に用いられ得る。本発明のこれらの、および他の特徴および利点は、添付図面に関する以下の記述から明らかである。
【好適な実施形態の詳細な説明】
【0009】
本発明によれば、図1に示すように、コンピュータシステムAP1は、プロセッサ(CPU)11、システムバス13、メモリ15およびメモリコントローラ20を備えている。メモリコントローラ20は、システム−バスインタフェース21、ページ値レジスタ(page-value resister)BP、インクリメンタ23、マルチプレクサ25およびメモリインタフェース27を有する。インタフェース21および27は、単一の集積回路上にプロセッサ11およびバス13と共に位置付けられているので、個々に構成された素子というよりも、機能的な素子である。構成として、インクリメンタ23は、Nビットカウンタ素子CT0〜CTNおよびORゲートG1を有するプログラマブルカウンタである。
【0010】
プロセッサ11は、システムバス13を介して、次の信号、即ち、データDATA1、アドレスAD、転送サイズ表示TSおよびラップ境界値BWをメモリコントローラ20へ転送する。図1において、転送サイズが1バイトである場合には、TS=001である。転送サイズが2バイトである場合(32ビットシステムにおける半ワードまたは16ビットにおける1ワード)には、TS=010である。転送サイズが4バイトである場合(32ビットシステムにおける1ワードまたは16ビットにおける2ワード)には、TS=100である。監視モードにおいて、プロセッサ11は、レジスタBPへページ境界値(page boundary value)を与えることができる。
【0011】
データは、レジスタBP内に格納されるデータを含み、それは、プロセッサ11のアドレス空間内に位置付けられている。関連するアドレスADは、動作が読出しであるかまたは書込みであるか、並びに、アドレスが連続しているか否かの指標となる。読出し動作の事象においては、データは、メモリ15から、メモリコントローラ20を通して、システムバス13を介し、プロセッサ11へ転送される。
【0012】
図1に詳細に示されているように、ビットカウンタ素子CT1は、1ビット加算器AD1、NANDゲートG2および2つのANDゲートG3およびG4を含む。素子CT1は、ラップレジスタBPおよびWPおよび各ページから最低位のビット、転送サイズ信号TSの最下位から2番目のビットおよびアドレス信号ADの最下位から2番目のビットを受け取る。アドレス信号ADおよび転送サイズ信号TSは、加算器AD1のそれぞれの加数入力(addend inputs)へ与えられる。ビットカウンタ素子CT0からのキャリー入力(carry-in)も受けている。結局、加算器AD1の出力AQ1は、与えられたワード幅に対して後続のアドレスの最下位から2番目のビットである。残りのビットカウンタ素子CT0およびCT2〜CTNは、後続のアドレスのうち残りのビットを提供する。したがって、インクリメンタ23の機能は、プロセッサ11によって現時点でアサートされているアドレスへ次のアドレスを提供することである。
【0013】
明白な簡略化以外に、ビットカウンタ素子CT0〜DTNは、類似する。例えば、ビットカウンタ素子CT3が図2に示されている。このビットカウンタ素子CT3は、1ビット加算器の代わりに、XORゲートG5およびANDゲートG6を含む1ビットインクリメンタを有する。残りのロジックゲート、NANDゲートG7、並びに、ANDゲートG8およびG9は、ビットカウンタ素子CT1における対応部分に該当する。XORゲートG5は、予測アドレスビットAQ3を発生させるために、入力としてキャリー入力CI3およびアドレスビットAD3を有し、ANDゲートG6は、ゲートG7、G8およびG9に関して、ページ境界検出ビットDT3およびキャリー出力(carry out)CQ3を発生させるために、同一の入力を有する。
【0014】
ビットカウンタ素子CT4は、ビットカウンタ素子DT3に本質的に類似する。ビットカウンタ素子CT5〜CTNもまた、1ビットインクリメンタを採用しているが、付属ロジック回路は、1またはそれ以上の定入力(constant inputs)によって縮小することができる。ビットカウンタ素子CT5〜CTNへのページ境界入力は、メモリコントロール20が32バイトよりも大きなページサイズを提供しないので、ハイに維持される。ビットカウンタ素子CT5へのワード境界入力はワード境界信号BWによって制御され、一方で、それに対応するビットカウンタ素子への入力が最大64バイトのラッピングバースト転送に適応させるためにハイに維持される。ビットカウンタ素子CT0は、キャリー入力信号なしに、1ビット加算器となり得る。
【0015】
図3には、システムAP1の記述において実施される本発明による方法M1のフロー図が示されている。ステップS1において、ページ境界値がレジスタBPへ入る。代表的には、これは、監視モード(supervisor mode)で生じ、ページ境界値は、ユーザがプログラムを実行している間には変更されない。システムAP1において、レジスタBPは、従来の書込み可能なレジスタでよい。しかしながら、ページ境界値を変更する必要のない用途においては、レジスタBPは、読出し専用メモリ(ROM)内でコード化され、または、配線接続され(hard-wired)てもよい。
【0016】
ステップS2において、ラップ境界は、ユーザがプログラムを実行している間にアサートされる。そのラップ境界は、インクリメンタ23がゼロにリセットするときの値であり、従って、モデュロ計数として役に立つ。このモデュロ計数は、異なるサイズのループを最適に管理することができるように、プログラム実行の間に変更され得る。
【0017】
ステップS3において、プロセッサ11は、アドレス幅値に従ってアドレスおよび連続/不連続の指標SQをアサートすることによって、読出しまたは書込みを開始する。ステップS4において、メモリコントローラ20は、操作が連続的か否かを決定するために、連続/不連続の指標を用いる。連続アドレスが示されている場合には、マルチプレクサ25はAQを選択し、不連続転送が示されている場合には、マルチプレクサ25はアドレスAD’を選択する。代替的な実施形態としては、メモリコントローラは、それがプロセッサによってアサートされたアドレスと等しくないことを比較器が示している場合以外は、カウンタの出力を選択する。
【0018】
そのアドレスが連続的でない場合、方法M1は、ステップS4へ進む。アサートされたアドレスによって示しされた位置に格納されたデータは、データ転送のために選択される。読出し操作が要求された場合には、データは、ステップS5において、データは、メモリ15から、バスDATA3を介してメモリインタフェース27へ、データバスDATA2を介してシステムバスインタフェース21へ、システムバス13へ、プロセッサ11へ転送される。書込み操作が要求されていた場合には、データは、プロセッサ11から、システムバス13を介してシステムバスインタフェース21へ、バスDATA2を介してメモリインタフェース27を通過してメモリ15へ転送される。ステップS4において、アドレスが連続であると決定された場合には、ステップS5において転送されたデータは、メモリ15からアドレス位置AQから既にアクセスされたデータである。
【0019】
ステップS5またはS6のいずれかの後、インクリメンタ23は、ステップS7において予測アドレスを発生する。これは、転送サイズ信号TSによって示されたアドレス幅を現時点においてまたは最近アサートされたアドレスAD’に付加することによって達成される。この加算は、モデュロBWであるので、アドレスはプログラムされたラップ境界においてラップする。また、もし、ページ境界に遭遇している場合には、決定指標は、ラインDTQに沿って発生される。ステップS8において、メモリ15内の予測アドレスにおけるデータがアクセスされ、メモリインタフェース27にバッファされる。次の繰り返しのステップS3において、もし、その予測が確認された場合にはこのデータは転送され、次の繰り返しのステップS3において、もし、確認されなかった場合にはこのデータは上書きされる。
【0020】
この方法は、ステップS3へ戻ることによってその方法を繰り替えし、それにより、プロセッサは、次に“アサートされる”アドレスをアサートする。しかしながら、図3において破線で示されているように、次の繰り返しは、ステップS2における新しいラップ境界を設定することを含む場合がある。一般に、ページ境界は、プログラムの実行の間に変更されることはない。
【0021】
予測アドレスがシステムAP1において発生される速度は、インクリメンタ23のキャリー伝播設計(carry-propagation design)によって制限される。ビットカウンタ素子CT0がそのキャリー出力を決定するまでは、ビットカウンタ素子CT1は、そのキャリーおよびアドレス出力を決定することができない。同様に、ビットカウンタ素子CT2〜CTNは、それらの結果を決定するために、低位(low-order)ビットカウンタ素子からのキャリーを必要とする。従って、キャリーは、予測アドレスを発生させるために、Nステージに亘って伝播しなければならない。
【0022】
図4に示すように、キャリーの伝播による待ち時間を低減させるために、キャリー選択カウンタ40がインクリメンタ23の代わりに用いられ得る。概念的には、カウンタ40は、その位置0〜7を低位と高位のグループに分ける。4つの最下位ビットカウンタ素子は、低位ビットカウンタグループ41を構成し、それにより、4ビット出力AQ[3:0]を供給する。2つの高位グループ42および43があり、そのそれぞれは、4つの最上位ビット位置(4−7)に対してビットカウンタ素子を含む。グループ42および43は、ビットカウンタグループ42が0に配線接続されたキャリー入力を有し、一方で、グループ43が1に配線接続されたキャリー入力を有するという点においてのみ異なる。
【0023】
結局、グループ42および43は、低位グループ41のキャリー出力Cqに対してとり得る2つの結果に対し、高位の結果を予め計算する。低位のキャリー出力が決定されると、それは2つの高位の結果のうちの1つを選択するために用いられられる。もし、CQ3が0である場合には、マルチプレクサ44は、高位グループ42の結果を選択し、もし、CQ3が1である場合には、マルチプレクサ44は高位クループ43の結果を選択する。選択された検出信号DT[4−7]は、ページ境界検出信号DT[0−8]の全体を決定するために、低位グループ41からの検出信号DT[0−3]とOR演算される。この場合、予測アドレスを発生するために要する待ち時間は、インクリメンタ23に比較してほぼ半分に低減するが、余分な高位ビットカウンタ素子およびマルチプレクサ44のために、追加の集積回路領域の費用がかさむ。
【0024】
本発明は、代表的には、コンピュータおよび集積回路に適用され、特に、信号処理装置に適用される。本発明は、異なるホストシステム、異なるメモリコントローラ設計および異なるカウンタ設計の使用に適用され得る。記載された実施形態のこれらの、並びに、他の変形および変更は、本発明によってもたらされ、その範囲は、特許請求の範囲によって規定される。
【図面の簡単な説明】
【0025】
【図1】本発明に従ったメモリコントローラを有するコンピュータシステムのロジック回路図。
【図2】図1のメモリコントローラにおける1ビットカウンタ素子のロジック回路図。
【図3】図1のコンピュータシステムに用いられる本発明に係る方法のフロー図。
【図4】性能を向上させるためにキャリー選択技術を組み込んだ代替的なメモリコントローラの一部分の回路図。
【0001】
本発明は、コンピュータに関し、特に、コンピュータに用いられるメモリコントローラに関する。本発明の主な目的は、メモリコントローラによって、より有効な予測アドレッシング(speculative addressing)を提供することである。
【0002】
現代の発展の多くは、コンピュータの普及の増大に付随する。典型的なコンピュータは、データや命令を格納するためのメモリ、並びに、指示を実行し、適宜、データを処理する1またはそれ以上のプロセッサ(例えば、“中央演算処理装置”または“CPU”)を有する。コンピュータによって実行される命令は、比較的簡単なものであり、複雑なタスクは、多数の命令を有するプログラムを実行することによって実現され得る。コンピュータの優劣は、命令を実行する速度に依るところが大きい。
【0003】
コンピュータ技術における進歩は、コンピュータの能力の劇的な向上をもたらした。その進歩が劇的であったのと同様に、より高い演算能力への飽き足らない要求がある。速度向上の弊害の1つは、プロセッサとメモリとの間においてデータや命令を転送するためにかかる時間である。原理的には、プロセッサはメモリと直接に通信するが、プロセッサおよびメモリの両方の設計サイクルが早いために、市場で売り出されたときには、プロセッサおよびメモリを適切にインタフェースさせることが困難になってしまう。
【0004】
例えば、いくつかのメモリは、ページドモード(paged mode)のために設けられており、そのページドモードにおいては、次のアドレスを決定するために、低位のアドレスビットのみを調べる(examine)必要があると推測することができる。比較的少ないアドレスラインを調査すれば足りるので、そのメモリは、より迅速にアドレスへ応答することができる。ページ変更が要求される場合、ページ境界決定信号はメモリへ送信され、この場合において、メモリは総てのアドレスビットを見ることで応答する。一般に、プロセッサは、ページモードの存在のようには、メモリの仕様を認識(aware)していない。よって、プロセッサとメモリとの適切なインタフェースに問題が生じる。
【0005】
メモリコントローラは、適切なメモリ動作モードが用いられ得るように、プロセッサとメモリタイプとの間をインタフェースするために、比較的短時間で設計され得る。メモリコントローラが存在すると、メモリへ直接に転送される代わりに、プロセッサによってアサートされたアドレスはメモリへ転送され、あるいは、変換されてからメモリへ転送されるので、メモリコントローラの存在によりメモリへのアクセスに対して潜在的に待ち時間が付加される。一方、メモリコントローラは、次のアドレスを前もって予測してメモリへアクセスすることによって、アクセススピードを上昇させることができる。典型的には、メモリのアドレスは連続的にアクセスされ、よって、その予測は、単に、連続した次のアドレスを選択することを含む。いくつかのプロセッサは、次のアドレスが連続しているものか否かを示すので、その予測の妥当性は、次のアドレスが受信される前であっても既に知られている。
【0006】
予測のアプローチは、予測が正確である範囲で性能を改善させる。典型的には、予測は、アドレスが連続していて、ページの境界を通過しない場合には正確である。本発明の目的は、正確な予測の領域(class)を拡大することによって、さらに性能を改善させることである。
【発明の要旨】
【0007】
本発明は、メモリ側におけるページ境界を通過する場合、および、プロセッサ側においてバースト転送でのラップ境界(wrap boundaries)を通過する場合にアドレスをラッピング(wrapping)するというアドレス予測に関する2つの重要なケースに対処する。本発明は、プログラマブルラップ境界においてラップする予測アドレスを与え、および/または、予測ページ境界検出信号を与えるメモリコントローラを提供する。本発明の一実施形態は、プログラマブルカウンタの形態でインクリメンタを備えたメモリコントローラであり、本発明の他の実施形態は、そのようなメモリコントローラを有するコンピュータシステムである。本発明による方法は、予測ラップまたは予測ページ境界検出、あるいは、その両方を含み得る。
【0008】
バースト転送のラップ境界のケースにおいて、本発明は、正確なアドレス予測によって達成される性能の向上を妨げることなくラッピングをもたらす。予測ページ境界が用いられる場合には、一連の正確な予測は、ページ境界の通過をほとんどまたは全く妨げることなく、続行することができる。予測ラップおよびページ境界予測は、ループがページ境界に亘って延びる場合において一緒に用いられ得る。本発明のこれらの、および他の特徴および利点は、添付図面に関する以下の記述から明らかである。
【好適な実施形態の詳細な説明】
【0009】
本発明によれば、図1に示すように、コンピュータシステムAP1は、プロセッサ(CPU)11、システムバス13、メモリ15およびメモリコントローラ20を備えている。メモリコントローラ20は、システム−バスインタフェース21、ページ値レジスタ(page-value resister)BP、インクリメンタ23、マルチプレクサ25およびメモリインタフェース27を有する。インタフェース21および27は、単一の集積回路上にプロセッサ11およびバス13と共に位置付けられているので、個々に構成された素子というよりも、機能的な素子である。構成として、インクリメンタ23は、Nビットカウンタ素子CT0〜CTNおよびORゲートG1を有するプログラマブルカウンタである。
【0010】
プロセッサ11は、システムバス13を介して、次の信号、即ち、データDATA1、アドレスAD、転送サイズ表示TSおよびラップ境界値BWをメモリコントローラ20へ転送する。図1において、転送サイズが1バイトである場合には、TS=001である。転送サイズが2バイトである場合(32ビットシステムにおける半ワードまたは16ビットにおける1ワード)には、TS=010である。転送サイズが4バイトである場合(32ビットシステムにおける1ワードまたは16ビットにおける2ワード)には、TS=100である。監視モードにおいて、プロセッサ11は、レジスタBPへページ境界値(page boundary value)を与えることができる。
【0011】
データは、レジスタBP内に格納されるデータを含み、それは、プロセッサ11のアドレス空間内に位置付けられている。関連するアドレスADは、動作が読出しであるかまたは書込みであるか、並びに、アドレスが連続しているか否かの指標となる。読出し動作の事象においては、データは、メモリ15から、メモリコントローラ20を通して、システムバス13を介し、プロセッサ11へ転送される。
【0012】
図1に詳細に示されているように、ビットカウンタ素子CT1は、1ビット加算器AD1、NANDゲートG2および2つのANDゲートG3およびG4を含む。素子CT1は、ラップレジスタBPおよびWPおよび各ページから最低位のビット、転送サイズ信号TSの最下位から2番目のビットおよびアドレス信号ADの最下位から2番目のビットを受け取る。アドレス信号ADおよび転送サイズ信号TSは、加算器AD1のそれぞれの加数入力(addend inputs)へ与えられる。ビットカウンタ素子CT0からのキャリー入力(carry-in)も受けている。結局、加算器AD1の出力AQ1は、与えられたワード幅に対して後続のアドレスの最下位から2番目のビットである。残りのビットカウンタ素子CT0およびCT2〜CTNは、後続のアドレスのうち残りのビットを提供する。したがって、インクリメンタ23の機能は、プロセッサ11によって現時点でアサートされているアドレスへ次のアドレスを提供することである。
【0013】
明白な簡略化以外に、ビットカウンタ素子CT0〜DTNは、類似する。例えば、ビットカウンタ素子CT3が図2に示されている。このビットカウンタ素子CT3は、1ビット加算器の代わりに、XORゲートG5およびANDゲートG6を含む1ビットインクリメンタを有する。残りのロジックゲート、NANDゲートG7、並びに、ANDゲートG8およびG9は、ビットカウンタ素子CT1における対応部分に該当する。XORゲートG5は、予測アドレスビットAQ3を発生させるために、入力としてキャリー入力CI3およびアドレスビットAD3を有し、ANDゲートG6は、ゲートG7、G8およびG9に関して、ページ境界検出ビットDT3およびキャリー出力(carry out)CQ3を発生させるために、同一の入力を有する。
【0014】
ビットカウンタ素子CT4は、ビットカウンタ素子DT3に本質的に類似する。ビットカウンタ素子CT5〜CTNもまた、1ビットインクリメンタを採用しているが、付属ロジック回路は、1またはそれ以上の定入力(constant inputs)によって縮小することができる。ビットカウンタ素子CT5〜CTNへのページ境界入力は、メモリコントロール20が32バイトよりも大きなページサイズを提供しないので、ハイに維持される。ビットカウンタ素子CT5へのワード境界入力はワード境界信号BWによって制御され、一方で、それに対応するビットカウンタ素子への入力が最大64バイトのラッピングバースト転送に適応させるためにハイに維持される。ビットカウンタ素子CT0は、キャリー入力信号なしに、1ビット加算器となり得る。
【0015】
図3には、システムAP1の記述において実施される本発明による方法M1のフロー図が示されている。ステップS1において、ページ境界値がレジスタBPへ入る。代表的には、これは、監視モード(supervisor mode)で生じ、ページ境界値は、ユーザがプログラムを実行している間には変更されない。システムAP1において、レジスタBPは、従来の書込み可能なレジスタでよい。しかしながら、ページ境界値を変更する必要のない用途においては、レジスタBPは、読出し専用メモリ(ROM)内でコード化され、または、配線接続され(hard-wired)てもよい。
【0016】
ステップS2において、ラップ境界は、ユーザがプログラムを実行している間にアサートされる。そのラップ境界は、インクリメンタ23がゼロにリセットするときの値であり、従って、モデュロ計数として役に立つ。このモデュロ計数は、異なるサイズのループを最適に管理することができるように、プログラム実行の間に変更され得る。
【0017】
ステップS3において、プロセッサ11は、アドレス幅値に従ってアドレスおよび連続/不連続の指標SQをアサートすることによって、読出しまたは書込みを開始する。ステップS4において、メモリコントローラ20は、操作が連続的か否かを決定するために、連続/不連続の指標を用いる。連続アドレスが示されている場合には、マルチプレクサ25はAQを選択し、不連続転送が示されている場合には、マルチプレクサ25はアドレスAD’を選択する。代替的な実施形態としては、メモリコントローラは、それがプロセッサによってアサートされたアドレスと等しくないことを比較器が示している場合以外は、カウンタの出力を選択する。
【0018】
そのアドレスが連続的でない場合、方法M1は、ステップS4へ進む。アサートされたアドレスによって示しされた位置に格納されたデータは、データ転送のために選択される。読出し操作が要求された場合には、データは、ステップS5において、データは、メモリ15から、バスDATA3を介してメモリインタフェース27へ、データバスDATA2を介してシステムバスインタフェース21へ、システムバス13へ、プロセッサ11へ転送される。書込み操作が要求されていた場合には、データは、プロセッサ11から、システムバス13を介してシステムバスインタフェース21へ、バスDATA2を介してメモリインタフェース27を通過してメモリ15へ転送される。ステップS4において、アドレスが連続であると決定された場合には、ステップS5において転送されたデータは、メモリ15からアドレス位置AQから既にアクセスされたデータである。
【0019】
ステップS5またはS6のいずれかの後、インクリメンタ23は、ステップS7において予測アドレスを発生する。これは、転送サイズ信号TSによって示されたアドレス幅を現時点においてまたは最近アサートされたアドレスAD’に付加することによって達成される。この加算は、モデュロBWであるので、アドレスはプログラムされたラップ境界においてラップする。また、もし、ページ境界に遭遇している場合には、決定指標は、ラインDTQに沿って発生される。ステップS8において、メモリ15内の予測アドレスにおけるデータがアクセスされ、メモリインタフェース27にバッファされる。次の繰り返しのステップS3において、もし、その予測が確認された場合にはこのデータは転送され、次の繰り返しのステップS3において、もし、確認されなかった場合にはこのデータは上書きされる。
【0020】
この方法は、ステップS3へ戻ることによってその方法を繰り替えし、それにより、プロセッサは、次に“アサートされる”アドレスをアサートする。しかしながら、図3において破線で示されているように、次の繰り返しは、ステップS2における新しいラップ境界を設定することを含む場合がある。一般に、ページ境界は、プログラムの実行の間に変更されることはない。
【0021】
予測アドレスがシステムAP1において発生される速度は、インクリメンタ23のキャリー伝播設計(carry-propagation design)によって制限される。ビットカウンタ素子CT0がそのキャリー出力を決定するまでは、ビットカウンタ素子CT1は、そのキャリーおよびアドレス出力を決定することができない。同様に、ビットカウンタ素子CT2〜CTNは、それらの結果を決定するために、低位(low-order)ビットカウンタ素子からのキャリーを必要とする。従って、キャリーは、予測アドレスを発生させるために、Nステージに亘って伝播しなければならない。
【0022】
図4に示すように、キャリーの伝播による待ち時間を低減させるために、キャリー選択カウンタ40がインクリメンタ23の代わりに用いられ得る。概念的には、カウンタ40は、その位置0〜7を低位と高位のグループに分ける。4つの最下位ビットカウンタ素子は、低位ビットカウンタグループ41を構成し、それにより、4ビット出力AQ[3:0]を供給する。2つの高位グループ42および43があり、そのそれぞれは、4つの最上位ビット位置(4−7)に対してビットカウンタ素子を含む。グループ42および43は、ビットカウンタグループ42が0に配線接続されたキャリー入力を有し、一方で、グループ43が1に配線接続されたキャリー入力を有するという点においてのみ異なる。
【0023】
結局、グループ42および43は、低位グループ41のキャリー出力Cqに対してとり得る2つの結果に対し、高位の結果を予め計算する。低位のキャリー出力が決定されると、それは2つの高位の結果のうちの1つを選択するために用いられられる。もし、CQ3が0である場合には、マルチプレクサ44は、高位グループ42の結果を選択し、もし、CQ3が1である場合には、マルチプレクサ44は高位クループ43の結果を選択する。選択された検出信号DT[4−7]は、ページ境界検出信号DT[0−8]の全体を決定するために、低位グループ41からの検出信号DT[0−3]とOR演算される。この場合、予測アドレスを発生するために要する待ち時間は、インクリメンタ23に比較してほぼ半分に低減するが、余分な高位ビットカウンタ素子およびマルチプレクサ44のために、追加の集積回路領域の費用がかさむ。
【0024】
本発明は、代表的には、コンピュータおよび集積回路に適用され、特に、信号処理装置に適用される。本発明は、異なるホストシステム、異なるメモリコントローラ設計および異なるカウンタ設計の使用に適用され得る。記載された実施形態のこれらの、並びに、他の変形および変更は、本発明によってもたらされ、その範囲は、特許請求の範囲によって規定される。
【図面の簡単な説明】
【0025】
【図1】本発明に従ったメモリコントローラを有するコンピュータシステムのロジック回路図。
【図2】図1のメモリコントローラにおける1ビットカウンタ素子のロジック回路図。
【図3】図1のコンピュータシステムに用いられる本発明に係る方法のフロー図。
【図4】性能を向上させるためにキャリー選択技術を組み込んだ代替的なメモリコントローラの一部分の回路図。
Claims (10)
- ラップ境界値およびアサートされた各アドレスのラップ境界動作として推定アドレスを発生し、前記ラップ境界値のモデュロ数関数であるモデュロ数でインクリメント機能を実行し、プロセッサから前記アサートされたアドレスおよび前記ラップ境界値を受け取るためにバスインタフェースに結合されており、前記推定アドレスを供給するためにメモリインタフェースに結合されているインクリメンタを備えたシステム。
- 前記インクリメンタは、前記推定アドレスのうち全部ではないが、その複数に対して、ページ境界検出信号を発生することを特徴とする請求項1に記載のメモリコントローラ。
- 前記インクリメンタがページ境界信号を発生するために用いられる推定アドレスは、前記システムバスを介して前記プロセッサからページ境界値の関数として決定されることを特徴とする請求項2に記載のメモリコントローラ。
- 前記ページ境界値はメモリのページサイズに対応しており、前記インクリメンタは、前記メモリへ前記ページ境界検出信号および前記推定アドレスを提供することを特徴とする請求項3に記載のメモリコントローラ。
- 請求項1に記載されたインクリメンタと、前記プロセッサと、前記システムバスおよび前記メモリを備えたコンピュータシステム。
- メモリコントローラの操作方法であって、
プロセッサからラップ境界値を受け取るステップと、
前記プロセッサからアサートされたアドレスを受け取るステップと、
少なくとも部分的に前記ラップ境界値の関数であるモデュロ数に従って前記アサートされたアドレスをインクリメントすることによって推定アドレスを発生するステップと、
前記推定アドレスをメモリへ転送するステップとを具備する方法。 - 前記推定アドレスの全部ではないが、その複数に対してページ境界指標を生成するステップをさらに具備することを特徴とする請求項6に記載の方法。
- 前記プロセッサからページ境界値を受け取るステップをさらに備え、
前記ページ境界指標は、前記ページ境界指標の関数として決定される推定アドレスに対して生成されることを特徴とする請求項7に記載の方法。 - 前記ページ境界値は、前記メモリのページサイズに対応することを特徴とする請求項8に記載の方法。
- メモリコントローラの操作方法であって、
プロセッサからページ境界値を受け取るステップと、
前記プロセッサからアサートされたアドレスを受け取るステップと、
前記アサートされたアドレスをインクリメントすることによって推定アドレスを発生するステップと、
前記ページ境界値によって示されたとおりにページ境界に対応する推定アドレスが発生するときには、ページ境界検出信号を送信するステップとを具備する方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/823,160 US6701422B2 (en) | 2001-03-29 | 2001-03-29 | Memory control system with incrementer for generating speculative addresses |
PCT/IB2002/000800 WO2002079994A2 (en) | 2001-03-29 | 2002-03-15 | Memory control system with incrementer for generating spectulative addresses |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004522227A true JP2004522227A (ja) | 2004-07-22 |
Family
ID=25237966
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002578150A Withdrawn JP2004522227A (ja) | 2001-03-29 | 2002-03-15 | 推定アドレスを発生するインクリメンタを備えたメモリ制御システム |
Country Status (5)
Country | Link |
---|---|
US (1) | US6701422B2 (ja) |
EP (1) | EP1374062A2 (ja) |
JP (1) | JP2004522227A (ja) |
KR (1) | KR20030007735A (ja) |
WO (1) | WO2002079994A2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7061821B2 (en) * | 1998-10-20 | 2006-06-13 | International Business Machines Corporation | Address wrap function for addressable memory devices |
US7797467B2 (en) * | 2005-11-01 | 2010-09-14 | Lsi Corporation | Systems for implementing SDRAM controllers, and buses adapted to include advanced high performance bus features |
US8554821B2 (en) | 2010-08-09 | 2013-10-08 | International Business Machines Corporation | Expanded scope incrementor |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4722047A (en) * | 1985-08-29 | 1988-01-26 | Ncr Corporation | Prefetch circuit and associated method for operation with a virtual command emulator |
EP0501621A3 (en) | 1991-02-26 | 1994-07-06 | Hewlett Packard Co | Address prediction and verification for burst cycle data reads |
JP2771374B2 (ja) * | 1991-12-27 | 1998-07-02 | 茨城日本電気株式会社 | プロセッサのページ越処理方式 |
US5659700A (en) * | 1995-02-14 | 1997-08-19 | Winbond Electronis Corporation | Apparatus and method for generating a modulo address |
EP0811921B1 (en) | 1996-06-06 | 2003-02-05 | Motorola, Inc. | Method for accessing memory |
US6216208B1 (en) * | 1997-12-29 | 2001-04-10 | Intel Corporation | Prefetch queue responsive to read request sequences |
-
2001
- 2001-03-29 US US09/823,160 patent/US6701422B2/en not_active Expired - Fee Related
-
2002
- 2002-03-15 KR KR1020027016136A patent/KR20030007735A/ko not_active Application Discontinuation
- 2002-03-15 WO PCT/IB2002/000800 patent/WO2002079994A2/en not_active Application Discontinuation
- 2002-03-15 JP JP2002578150A patent/JP2004522227A/ja not_active Withdrawn
- 2002-03-15 EP EP02707039A patent/EP1374062A2/en not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
KR20030007735A (ko) | 2003-01-23 |
WO2002079994A2 (en) | 2002-10-10 |
WO2002079994A3 (en) | 2003-01-09 |
EP1374062A2 (en) | 2004-01-02 |
US6701422B2 (en) | 2004-03-02 |
US20020144075A1 (en) | 2002-10-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5172942B2 (ja) | プロセッサによる電力消費を低減する方法、プロセッサ、及び、情報処理システム | |
JP3072705B2 (ja) | スーパースカラ・プロセッサの電力消費を減少させる回路及び方法 | |
US7899993B2 (en) | Microprocessor having a power-saving instruction cache way predictor and instruction replacement scheme | |
US5822758A (en) | Method and system for high performance dynamic and user programmable cache arbitration | |
US20090182986A1 (en) | Processing Unit Incorporating Issue Rate-Based Predictive Thermal Management | |
KR101456860B1 (ko) | 메모리 디바이스의 전력 소비를 감소시키기 위한 방법 및 시스템 | |
US20060174228A1 (en) | Adaptive pre-fetch policy | |
JPH1055307A (ja) | コンピュータ・システム | |
IE990754A1 (en) | An apparatus for software initiated prefetch and method therefor | |
US9747215B2 (en) | Stride reference prefetcher | |
US7376791B2 (en) | Memory access systems and methods for configuring ways as cache or directly addressable memory | |
US20070112998A1 (en) | Virtualized load buffers | |
US20080201528A1 (en) | Memory access systems for configuring ways as cache or directly addressable memory | |
US11176045B2 (en) | Secondary prefetch circuit that reports coverage to a primary prefetch circuit to limit prefetching by primary prefetch circuit | |
US11256622B2 (en) | Dynamic adaptive drain for write combining buffer | |
JP2004522227A (ja) | 推定アドレスを発生するインクリメンタを備えたメモリ制御システム | |
US6877069B2 (en) | History-based carry predictor for data cache address generation | |
JPH11316695A (ja) | ス―パ―スカラ―マイクロプロセッサ―の停止点インタ―ラプト発生装置 | |
JP3045959B2 (ja) | スーパースカラ・プロセッサ装置内の非アーキテクト命令を選択的にサポートする方法及び装置 | |
US6425047B1 (en) | Process containing address decoders suited to improvements in clock speed | |
JP2003337790A (ja) | バス制御回路およびプロセッサ | |
JP2009048322A (ja) | インタフェースモジュール及び半導体集積回路 | |
JP2004303081A (ja) | 命令先読み回路及びマイクロコントローラ | |
JPH05250264A (ja) | キャッシュメモリ | |
JPH0535467A (ja) | マイクロプロセツサ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050314 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20070611 |