JP4866646B2 - メモリーに送るコマンドの選択方法、メモリーコントローラー、コンピュータシステム - Google Patents

メモリーに送るコマンドの選択方法、メモリーコントローラー、コンピュータシステム Download PDF

Info

Publication number
JP4866646B2
JP4866646B2 JP2006117455A JP2006117455A JP4866646B2 JP 4866646 B2 JP4866646 B2 JP 4866646B2 JP 2006117455 A JP2006117455 A JP 2006117455A JP 2006117455 A JP2006117455 A JP 2006117455A JP 4866646 B2 JP4866646 B2 JP 4866646B2
Authority
JP
Japan
Prior art keywords
queue
commands
memory
conflict
write
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006117455A
Other languages
English (en)
Other versions
JP2006309757A (ja
Inventor
ハーマン、リー、ブラックモン
フィリップ、ロジャーズ、ヒリアーIii
ジョセフ、アレン、キルシュト
ブライアン、ティ、バンダープール
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2006309757A publication Critical patent/JP2006309757A/ja
Application granted granted Critical
Publication of JP4866646B2 publication Critical patent/JP4866646B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)
  • Multi Processors (AREA)

Description

本発明は、一般的にコンピュータシステムに関係し、より具体的にはメモリーにコマンドを送るメモリーコントローラーに広く関係する。
コンピュータ時代の幕開けとして1948年のEDVACコンピュータシステムの開発がよく挙げられる。それ以来コンピュータシステムは極めて高度な機器に進化し、様々な環境で見られるようになった。コンピュータシステムは一般的にハードウェア(例、半導体、回路基板など)とソフトウェア(例、コンピュータプログラム)の組合せを含む。半導体プロセスとコンピュータアーキテクチャの進歩によりコンピュータのハードウェアの性能が向上するとともに、より高度になったコンピュータのソフトウェアは向上したハードウェアの性能を活かすように進化した結果、現在のコンピュータシステムはほんの数年前よりもはるかにパワフルなものになっている。
コンピュータシステムのコンポーネントの中で、コンピュータシステムの性能に甚大な影響を与えるものがメモリーサブシステムである。コンピュータシステムは一般に、プロセッサバスを介してメモリーサブシステムに連結されるひとつ又は複数のプロセッサを含む。メモリーサブシステムは一般に、メモリーデータバスと対応の制御信号を介してひとつ又は複数のシンクロナス・ダイナミック・ランダムアクセスメモリー(SDRAM)に連結されるメモリーコントローラーを有する。メモリーコントローラーの役割は、プロセッサからのメモリーの読み書き(ロードと記憶)コマンド又は要求の受付、読み書きコマンドの実行のためのSDRAMとのインターフェース、SDRAMからプロセッサへの読み出し操作に関連するデータの返送である。メモリーコントローラーはメモリーバンクのタイミング管理、メモリーデータバス利用の最大化、可能な場合に書き込みより読み出しを優先するなどメモリーアクセスの最適化といったタスクも行う。
メモリーアクセスの最適化は、コンピュータシステムの性能を高める上での根本的な問題となっている。メモリーコントローラーで苦労しているメモリーアクセスの問題のひとつが、読み出しコマンド対書き込みコマンドの選択である。命令を実行し続けるためにプロセッサは読み出しデータを待たなければならなかったり、又はプロセッサは読み出しデータを先取りすることによってメモリーの待ち時間を隠そうとするために、一般的に、システムの性能にとって制限要素となるのは読み出しコマンドである。プロセッサがメモリーコントローラーに書き込みデータを送るとすぐにプロセッサは書き込みコマンドが完了したと考えるため、書き込みコマンドは一般には読み出しコマンドほど重大な問題ではない。しかし、メモリーコントローラーは、書き込みコマンドとデータを入れておくバッファ(又はキュー)の数が決まっている。バッファがほぼいっぱいになると、メモリーコントローラーは新たなコマンドを受け取れないという信号をプロセッサに送る必要があり、メモリーコントローラーで書き込みキューがオーバーフローするおそれがあるため、バスを機能停止する。この機能停止のためにプロセッサの全コマンドに余分な遅延が生じることがある。このように、書き込みコマンドが読み出しコマンドの実行の問題となることがある。
このため、性能を高められるように、書き込みコマンドをメモリーに送る適切なタイミングを選ぶためのより優れた方法が必要である。
実施例において、メモリーに送るコマンドを選択する方法、機器、メモリーコントローラー、システム、および信号担持媒体が提供される。実施例において、次にあげる条件の一部もしくは全部が真なら、コンフリクトキューと衝突しない書き込みキューにある最も古いコマンドをメモリーに送って、コンフリクトキューに追加する。条件とは、読み出しキューにあるコマンド全部がコンフリクトキューと衝突する、プロセッサから入ってきた読み出しコマンドのいずれも書き込みキューと衝突しない、書き込みキューのコマンド数が第1閾値より大きい、コンフリクトキューにある全コマンドは第2閾値よりも短い時間存在してる、である。実施例において、コマンドがあるキューのコマンドと同じメモリーのキャッシュラインにアクセスしない場合、そのコマンドはキューと衝突しない。このように、実施例では、読み出しコマンドの性能に対する影響を軽減するときに、書き込みコマンドをメモリーに送る。
複数の図で同じ番号は同じ部分を示す図面を参照して、図1は、本発明の実施例に従い、ネットワーク130を介してサーバーコンピュータシステム132に接続されるコンピュータシステム100を表すブロック図を示す。「コンピュータシステム」と「サーバー」という表現は単に便宜上使用しており、ある実施例では、あるコンピュータにとってはクライアントとして機能するコンピュータが別のコンピュータにとってはサーバーとして機能したり、またその逆のこともあり、何らかの適切な電子機器を使用することもある。ある実施例では、コンピュータシステム100のハードウェアコンポーネントは、IBM社のeServer(R)、iSeries(R)又はpSeries(R)コンピュータシステムで実施できる。しかし、本発明の実施例のメカニズムや機器がどのような適切なコンピューティングシステムにも等しく適用されることは、当業者には理解されよう。
コンピュータシステム100の主要コンポーネントには、ひとつ又は複数のプロセッサ101、メインメモリー102、メモリーコントローラー106、端末インターフェース111、ストレージインターフェース112、I/O(入出力)デバイスインターフェース113、通信/ネットワークインターフェース114が含まれ、そのすべてをコンポーネント間の通信のためにメモリーバス103、I/Oバス104、I/Oバスインターフェースユニット105を介して接続する。
コンピュータシステム100はひとつ又は複数のプログラム可能な中央処理装置(CPU)101A、101B、101C、101Dを備え、ここでは総称的にプロセッサ101という。プロセッサ101は汎用プロセッサ、特定用途用プロセッサまたはステートマシンでよく、バス103を介してメモリーコントローラー106と接続して、メモリー102にアクセスするためのロードおよび記憶(読み書き)コマンドなどのコマンドを出す。ある実施例では、コンピュータシステム100は比較的大型のシステムに特徴的なマルチプロセッサを含む。しかし、別の実施例では、コンピュータシステム100は代わりに単一CPUシステムでもよい。各プロセッサ101はメインメモリー102に記憶された命令を実行し、ひとつ又は複数のレベルのオンボードキャッシュを備えることが可能である。
メインメモリー102は、データやプログラムを記憶するためのランダムアクセス半導体メモリーである。別の実施例では、メインメモリー102はコンピュータシステム100の仮想メモリー全体を表し、コンピュータシステム100に結合されるあるいはネットワーク130を介して接続される他のコンピュータシステムの仮想メモリーを含むことも可能である。メインメモリー102は概念的には単一モノリシック体であるが、他の実施例ではメインメモリー102はキャッシュと他のストレージの階層などより複雑な構成である。例えば、メモリーを多層レベルのキャッシュで構成して、このキャッシュをさらに機能別に分割し、あるキャッシュが命令を保持する一方で別のキャッシュが命令以外のデータを保持するようにして、ひとつ又は複数のプロセッサで使うことができる。メモリーはさらにいわゆる非均一メモリーアクセス(NUMA)コンピュータアーキテクチャで知られるように、様々なCPUまたはCPUセットに分散させて、対応付けることができる。様々な実施例において、メモリー102はどのレベルのキャッシュ又はメインメモリーであってもよい。ある実施例でメモリー102はDRAM(動的ランダムアクセスメモリー)として実装されるが、他の実施例では適切なメモリー技術ならどれでも使用できる。
メモリーコントローラー106とメモリー102とのインターフェースは、一般に、リードアドレスストローブ(RAS)やカラムアドレスストローブ(CAS)など、メモリーコントローラー106によってデータラインおよびデータストローブをもつ双方向データバスを介してメモリーに向かうコマンド信号から構成される。メモリーコントローラー106が駆動する各コマンド信号は一般に多数の待ち時間サイクルを伴う。さらに、コマンドが例えばメモリのエクステントのあるバンクで実行されると、通常そのバンクが別の操作を行えるようになるまでに、バンクは回復するための追加サイクルを要する。例えば、読み出し又はロードを実施するには、メモリーコントローラー106はバンクを開放して、読み出しコマンドを出し、CAS待ち時間のために必要なサイクルを待ち、メモリーからひと固まりのデータを受け取る。データがメモリーコントローラーにバースト転送されたら、バンクはロードに関連する内部バスの行をプリチャージするのに数サイクル要する。
ある実施例では、メモリーコントローラー106はプロセッサ(プロセッサ101と同様)と、そのプロセッサで実行できる命令もしくはそのプロセッサで実行できる命令が解釈できるステートメントを含み、図3、図4、および図5を参照して以下詳細に説明する機能を行う。別の実施例では、メモリーコントローラー106はマイクロコード又はファームウェアで実装できる。別の実施例では、メモリーコントローラー106は論理ゲートまたは他の適切なハードウェア技術によりハードウェアで実装できる。メモリーコントローラー106は図2を参照して以下詳細に説明する。
メモリーバス103は、プロセッサ101、メモリーコントローラー106、およびI/Oバスインターフェースユニット105の間でデータを転送するためのデータ通信経路を提供する。I/Oバスインターフェースユニット105はさらに、様々なI/Oユニットとデータをやり取りするためにシステムI/Oバス104に接続される。I/Oバスインターフェースユニット105は、I/Oプロセッサ(IOP)またはI/Oアダプタ(IOA)としても知られる複数のI/Oインターフェースユニット111、112、113、および114とシステムI/Oバス104を通して通信する。システムI/Oバス104は、例えば業界標準のPCIバスや、他の適切なバス技術でもよい。
I/Oインターフェースユニットは多様なストレージおよびI/Oデバイスとの通信をサポートする。例えば、端末インターフェースユニット111は、ひとつ又は複数のユーザー端末121、122、123、および124の接続をサポートする。ストレージインターフェースユニット112は、ひとつ又は複数の直接アクセスストレージデバイス(DASD)125、126、および127(これを、例えばホストからは単一の大容量ストレージに見えるように構成されたディスクドライブのアレイなど他のデバイスに代えることもできるであろうが、一般には回転磁気ディスクドライブのストレージデバイスである)の接続機構をサポートする。メインメモリー102の内容は、直接アクセスストレージデバイス125、126、および127に記憶し、そこから取り出すことができる。
I/Oその他のデバイスのインターフェース113は、様々な他の入出力デバイスまたは他の種類のデバイスへのインターフェースを提供する。そのようなデバイスとしてプリンター128とファックス機129の2台を図1の例示的な実施例では示しているが、他の実施例ではその他のデバイスが数多く存在でき、また別の種類でもよい。ネットワークインターフェース114は、コンピュータシステム100から他のデジタルデバイスおよびコンピュータシステムへのひとつ又は複数の通信経路を提供する。そのような経路は、例えばひとつ又は複数のネットワーク130を含むことができる。
図1ではメモリーバス103は、プロセッサ101、メモリーコントローラー106、およびI/Oバスインターフェース105の間の直接通信経路を提供する比較的簡単な単一バス構造として示されているが、メモリーバス103は実際には複数の異なるバスまたは通信経路から構成でき、また階層構成、スター構成、もしくは網状構成の二点間リンク、多重階層バス、パラレル経路、冗長経路、または他の種類の構成など様々な形態のいずれで構成してもよい。さらに、I/Oバスインターフェース105とI/Oバス104はそれぞれ単体として示されているが、コンピュータシステム100は実際には複数のI/Oバスインターフェース105およびI/Oバス104を含むことができる。システムI/Oバス104を様々なI/Oデバイスに至る様々な通信経路から分離している複数のI/Oインターフェースユニットが示されているが、他の実施例ではI/Oデバイスの一部または全部が直接ひとつ又は複数のシステムI/Oバスに接続される。
図1に図示されるコンピュータシステム100は、マルチユーザー「メインフレーム」コンピュータシステムに特徴的といえるような複数の接続端末121、122、123、124を有する。本発明はある特定のサイズのシステムに限定されるものではないが、一般に、このような場合、接続デバイスの実際の数は図1に示すものよりも多い。コンピュータシステム100は代わりに一般にシングルユーザー用ディスプレイおよびキーボード入力しか備えないシングルユーザーシステムでもよく、あるいは直接ユーザーインターフェースをほとんどもしくは全くもたず、他のコンピュータシステム(クライアント)からの要求を受け取るサーバー又は類似のデバイスでもよいだろう。他の実施例では、コンピュータシステム100はパーソナル・コンピュータ、ポータブル・コンピュータ、ラップトップ又はノートブック型コンピュータ、PDA(個人用携帯情報端末)、タブレットコンピュータ、ポケットコンピュータ、電話、ページャ、オートモバイル、遠隔会議システム、アプライアンス、又は他の適切な種類の電子機器として実装できる。
ネットワーク130は適当なネットワーク又はネットワークの組合せならどれでもでよく、コンピュータシステム100とサーバー132の間でのデータまたはコードの通信に適した適切なプロトコルをサポートする。様々な実施例において、ネットワーク130はコンピュータシステム100に直接もしくは間接的に接続されるストレージデバイス又はストレージデバイスの組合せを表すことがある。ある実施例では、ネットワーク130はインフィニバンドをサポートする。別の実施例では、ネットワーク130は無線通信をサポートする。別の実施例では、ネットワーク130は電話線やケーブルなどの有線通信をサポートする。別の実施例では、ネットワーク130はイーサーネットIEEE802.3xの仕様をサポートする。別の実施例では、ネットワーク130はインターネットであり、IP(インターネットプロトコル)をサポートする。
別の実施例では、ネットワーク130はローカルエリアネットワーク(LAN)又は広域ネットワーク(WAN)である。別の実施例では、ネットワーク130はホットスポットサービスプロバイダーネットワークである。別の実施例では、ネットワーク130はイントラネットである。別の実施例では、ネットワーク130はGPRS(汎用パケット無線サービス)ネットワークである。別の実施例では、ネットワーク130はFRS(ファミリー無線サービス)ネットワークである。別の実施例では、ネットワーク130は適切なセルラーデータネットワーク又はセルベースの無線ネットワーク技術である。別の実施例では、ネットワーク130はIEEE 802.11Bワイヤレスネットワークである。さらに別の実施例では、ネットワーク130は適当なネットワーク又はネットワークの組合せならどれでもよい。1つのネットワーク130を図示しているが、別の実施例では任意の数(ゼロを含む)のネットワーク(同種または異種)が存在できる。
図1はコンピュータシステム100、ネットワーク130、およびサーバー132の代表的な主要コンポーネントを上位概念で描くことを意図している。個々のコンポーネントは図1に表すものより複雑であることもあり、図1に示すもの以外のコンポーネントまたは図1に示すものに追加したコンポーネントが存在することもある。また、コンポーネントの数、種類、構成は変わることがある。複雑さを加えたり、変化を加えたいくつかの例を本明細書に開示する。これらは単なる例示であり、そのような変型例に限られるものではない。
図1に図示する様々なソフトウェアコンポーネントと本発明の様々な実施例は、様々なコンピュータソフトウェアアプリケーション、ルーチン、コンポーネント、プログラム、オブジェクト、モジュール、データ構造など(これ以降「コンピュータプログラム」又は単に「プログラム」と呼ぶ)の使用を含め、多数の方法で実施できる。コンピュータプログラムは一般に、コンピュータシステム100の様々なメモリーおよびストレージデバイスに様々な時に存在し、コンピュータシステム100のひとつ又は複数のプロセッサ101で読み出して実行すると、本発明の実施例の様々な側面を構成するステップまたはエレメントを実行するのに必要なステップをコンピュータシステム100に行わせるひとつ又は複数の命令を含む。
さらに、本発明の実施例は十分に機能するコンピュータシステムに関連して説明しており、またこれ以降説明するが、本発明の様々な実施例は多様な形態のプログラム製品として配布でき、本発明は実際に配布を行うのに使用される特定の種類の信号担持媒体とは関係なく同様に適用される。本実施例の機能を定義するプログラムは、多様な信号伝達媒体を介してコンピュータシステム100に引き渡すことができ、これは以下のものを含むが、それだけに限定されない。
(1)例えばCD−ROM、DVD−R、又はDVD+Rなどコンピュータシステムに接続するもしくは内蔵される読取専用メモリーデバイスなど、書き換えできない記憶媒体に永久に記憶される情報、
(2)例えばハードディスクドライブ(例、DASD 125、126、又は127)、CD−RW、DVD−RW、DVD+RW、DVD−RAM、又はフレキシブルディスクなど書き換え可能な記憶媒体に記憶される書き直し可能な情報、又は
(3)例えばネットワーク130などコンピュータまたは電話網を経由するなど、無線通信を含めた通信媒体により伝送される情報
このような信号担持媒体は、本発明の機能を指図する機械読取可能な命令を載せるとき、本発明の実施例を表す。
本発明の実施例は、顧客企業、非営利組織、政府機関、内部組織構造などとのサービス提携の一部としても引渡すことができる。これら実施例の側面は、本明細書に記載の方法の一部もしくは全部を行うコンピュータシステムを構成すること、ならびに本明細書に記載の方法の一部もしくは全部を実装するソフトウェアシステムおよびウエブサービスを展開することを含むことがある。これら実施例の側面は、顧客企業の分析、分析に応じた推奨事項の作成、推奨事項の一部を実施するソフトウェアの作成、既存のプロセスおよびインフラストラクチャーへのソフトウェアの統合、本明細書に記載の方法およびシステムの使用の計量、ユーザーへの費用の計上、ならびに本方法およびシステムの使用に対するユーザーへの代金請求も含むことがある。
さらに、これ以降説明する様々なプログラムは、本発明のある特定の実施例で実装するアプリケーションに基づいて識別できる。しかし、以下の特定のプログラムラベルは単なる便宜上のために使っており、そのため本発明の実施例はそのようなラベルで識別または黙示される特定のアプリケーションでのみの使用に限定されるものではない。
図1に図示する例示的な環境は、本発明を制限することを意図していない。事実、本発明の範囲を逸脱することなく、他の代替ハードウェア環境もしくはソフトウェア環境またはその両方で使用できる。
図2は、発明のある実施例に従った例示的なメモリーコントローラー106のブロック図である。メモリーコントローラー106は読み出しキュー205と、書き込みキュー210と、コンフリクトキュー215と、少量書き込み要求レジスタ220と、少量書き込みサイクルレジスタ225と、少量書き込みサイクル要求レジスタ230とを備える。少量書き込み要求レジスタ220、少量書き込みサイクルレジスタ225、または少量書き込みサイクル要求レジスタ230の値はメモリーコントローラー106の設計者が設定でき、またはメモリーコントローラー106はコンピュータ100のユーザーもしくはシステム管理者から、コンピュータ100の適切なハードウェアもしくはソフトウェアから、またはネットワーク130を介して値を受け取れる。
読み出しキュー205は、プロセッサ101から受け取って、メモリーコントローラー106がまだメモリー102に送っていない読み出しコマンドを記憶する。書き込みキュー210は、プロセッサ101から受け取って、メモリーコントローラー106がまだメモリー102に送っていない書き込みコマンドを記憶する。コンフリクトキュー215は、メモリーコントローラー106が以前にメモリー102に送ったが、コマンドが送られてからの時間がまだ閾値に達していない読み書き両方のコマンドを記憶する。コンフリクトキュー215はさらに、図3、図4、および図5を参照して以下詳しく説明する機能を行うプロセッサで実行できる論理又は命令を含む。
少量書き込み要求レジスタ220はプロセッササイクル数、クロックサイクル数、又は閾値時間を記憶し、コンフリクトキュー215がそれと書き込みキュー210にあるコマンドの数とを比較する。書き込みキュー210にあるコマンドの数が少量書き込み要求レジスタ220の値を超えると、図4を参照して以下詳しく説明するように、コンフリクトキュー215は少量書き込み要求モードになる。
少量書き込みサイクルレジスタ225はプロセッササイクル数、クロックサイクル数、又は閾値時間を記憶し、コンフリクトキュー215がそれとコンフリクトキュー215にコマンドが存在していたプロセッササイクル数、クロックサイクル数、又は時間とを比較する。少量書き込みサイクルレジスタ225の値が、コンフリクトキュー215にコマンドが存在していたサイクル数又は時間を超えると、図4を参照して以下詳しく説明するように、コンフリクトキュー215はコンフリクトキュー215と衝突していない書き込みキュー210にある最も古い書き込みコマンドをメモリー102に送る。コマンドがキューと衝突するのは、そのコマンドとキューにあるコマンドのうち少なくとも1つがメモリー102の同じキャッシュラインにアクセスする場合である。コマンドがメモリー102のキューにあるすべてのコマンドと同じキャッシュラインにアクセスしない場合、コマンドはキューと衝突しない。
少量書き込みサイクル要求レジスタ230はプロセッササイクル数、クロックサイクル数、又は閾値時間を記憶し、コンフリクトキュー215がそれとコンフリクトキュー215にコマンドが存在していたプロセッササイクル数、クロックサイクル数、又は時間とを比較する。少量書き込みサイクル要求レジスタ230の値が、コンフリクトキュー215にコマンドが存在していたサイクル数又は時間を超えると、図5を参照して以下詳しく説明するように、コンフリクトキュー215はコンフリクトキュー215と衝突していない書き込みキュー210にある最も古い書き込みコマンドをメモリー102に送る。
様々な別の実施例では、少量書き込み要求レジスタ220、少量書き込みサイクルレジスタ225または少量書き込みサイクル要求レジスタ230は、メモリーコントローラー106内の記憶場所として実装できる。
図3は、本発明の実施例に従うメモリーコントローラー106の例示的なプロセスのフローチャートを示す。図3に図示する例示的な論理は、メモリーコントローラー106のプロセッササイクルごと、又はクロックサイクルごとに行われる。制御はブロック300から始まる。制御はさらにコンフリクトキュー215が、書き込みキュー210にある書き込みコマンドの数が書き込みキューの閾値を超えるかどうかを判定するブロック305に続く。ブロック305での判定が真なら、書き込みキュー210にある書き込みコマンドの数が書き込みキューの閾値を超えているため、コンフリクトキュー215が最も古い書き込みコマンドを書き込みキュー210からメモリー102に送って、その書き込みコマンドをコンフリクトキュー215に追加するブロック310に制御が続く。制御はさらにブロック398に続き、そこで図3の論理はリターンする。
ブロック305での判定が偽なら、書き込みキュー210にある書き込みコマンドの数は書き込みキューの閾値を超えていないので、制御はブロック305から、コンフリクトキュー215がプロセッサ101から入ってくる読み出しコマンドが書き込みキュー210のコマンドのいずれとも衝突していないかどうかを判定するブロック315に続く。入ってくる読み出しコマンドが書き込みキュー210のコマンドと衝突するのは、両コマンドがメモリー102の同じキャッシュラインにアクセスしようとする場合である。
ブロック315での判定が真なら、入ってくる読み出しコマンドは書き込みキュー210と衝突するので、コンフリクトキュー215が入ってくる読み出しコマンドと衝突する書き込みコマンドを書き込みキュー210からメモリー102に送って、書き込みコマンドをコンフリクトキュー215に追加するブロック320に制御が続く。制御はさらにブロック398に続き、そこで図3の論理はリターンする。
ブロック315での判定が偽なら、入ってくる読み出しコマンドが書き込みキュー210の書き込みコマンドと衝突しないので、制御はブロック315から、コンフリクトキュー215が読み出しキュー205にあるいずれの読み出しコマンドもコンフリクトキュー215にあるコマンドと衝突せずに存在するかどうかを判定するブロック325に続く。
ブロック325での判定が真なら、読み出しコマンドはコンフリクトキュー215と衝突せずに読み出しキュー205に存在するので、コンフリクトキュー215が書き込みキュー210にあるすべての書き込みコマンドと衝突しない読み出しキュー205にある最も古い読み出しコマンドをメモリー102に送って、この読み出しコマンドをコンフリクトキュー215に追加するブロック330に制御が続く。制御はさらにブロック399に続いて、そこで図3の論理はリターンする。
ブロック325での判定が偽なら、読み出しキュー205にあるすべての読み出しコマンドはコンフリクトキュー215にある少なくとも1つのコマンドと衝突するので、以下詳しく説明するように、図4の論理を実行するブロック335に制御が続く。制御はさらにブロック399に続き、そこで図3の論理はリターンする。
図4は、本発明の実施例に従ったメモリーコントローラー106の別の例示的なプロセスのフローチャートを示す。制御はブロック400から始まる。制御は、コンフリクトキュー215が書き込みキュー210にあるコマンドの数が少量書き込み要求レジスタ220の値よりも大きいかどうかを判定するブロック405に続く。ブロック405での判定が真なら、書き込みキュー210にあるコマンドの数が少量書き込み要求レジスタ220の値よりも大きいので、以下詳しく説明するように、図5の論理を実行するブロック410に制御が続く。制御はさらにブロック499に続き、そこで図4の論理はリターンする。
ブロック405での判定が偽なら、書き込みキュー210にあるコマンド数は少量書き込み要求レジスタ220の値より大きくないので、制御はブロック405から、コンフリクトキュー215が、コンフリクトキュー215にあるすべてのコマンドについて、コマンドのすべてがコンフリクトキュー215に存在していたプロセッササイクル数、クロックサイクル数、又は時間のタイマー値よりも少量書き込みサイクルレジスタ225が大きいかどうかを判定するブロック415に続く。ある実施例では、コンフリクトキュー215に記憶されるすべてのコマンドが、コマンドがコンフリクトキュー215に存在している時間又はサイクル数を追跡する個別の付属タイマーを有する。
ブロック415での判定が真なら、少量書き込みサイクルレジスタ225の値はすべてのコマンドがコンフリクトキュー215に存在していたサイクル数又は時間より大きいので、コンフリクトキュー215がコンフリクトキュー215と衝突しないで書き込みキュー210にある最も古い書き込みコマンド(最も長時間存在している書き込みコマンド)をメモリー102に送って、その書き込みコマンドをコンフリクトキュー215に追加するブロック420に制御が続く。制御はさらにブロック499に続き、そこで図4の論理はリターンする。
ブロック415での判定が偽なら、少量書き込みサイクルレジスタ225の値はコマンドのすべてがコンフリクトキュー215に存在していたサイクル数又は時間より大きくないので、制御はブロック415からブロック499に続き、そこで図4の論理はリターンする。
図5は、本発明の実施例に従ったメモリーコントローラー106の別の例示的なプロセスのフローチャートを示す。制御はブロック500から始まる。制御はブロック505に続き、コンフリクトキュー215が、コンフリクトキュー215にあるすべてのコマンドについて、少量書き込みサイクル要求レジスタ230の値がコマンドがコンフリクトキュー215に存在していたプロセッササイクル数、クロックサイクル数、又は時間のタイマー値を超えるかどうかを判定する。
ブロック505での判定が真なら、少量書き込みサイクル要求レジスタ230の値はすべてのコマンドがコンフリクトキュー215に存在していたサイクル数を超えるので、制御はブロック510に続き、そこでコンフリクトキュー215がコンフリクトキュー215と衝突しない書き込みキュー210にある最も古い書き込みコマンドをメモリー102に送ってその書き込みコマンドをコンフリクトキュー215に追加する。制御はさらにブロック599に続き、そこで図5の論理はリターンする。
ブロック505での判定が偽なら、少量書き込みサイクル要求レジスタ230の値はすべてのコマンドがコンフリクトキュー215に存在していたサイクル数を超えないので、制御はブロック599に続き、そこで図5の論理はリターンする。
このように、実施例では、書き込みキュー210がほぼいっぱいなら書き込みコマンドは書き込みキュー210からメモリー102に送られるだけなので、読み出しコマンドの実行に対する書き込みコマンドの影響は減る。措置を講じなければ、バス103の機能停止が起こる可能性があるだろう。
前述の本発明の例示的な実施例の詳細な説明において、添付図面を参照したが(図面において同じ番号は同じ要素を表す)、これは本明細書の一部をなし、例示によって本発明を実施できる具体的に例示的な実施例を示す。これら実施例は、当業者が本発明を実施できるのに十分な詳細さで説明したが、本発明の範囲を逸脱することなく他の実施例を利用して、論理的、機械的、電気的、およびその他の変更も行える。本明細書で「実施例」という言葉を別の場で使うときは必ずしも同じ実施例を述べているわけではないが、同じ場合もある。そのため前述の詳細な説明は、制限的な意味合いで捉えるべきではなく、本発明の範囲は付属の請求項によってのみ定義される。
前述の説明では、本発明の実施例を十分に理解できるように多数の特定の詳細を述べた。しかし、本発明はこれら特定の詳細によらず実施できる。他の場合、本発明を曖昧にしないように、周知の回路、構造、および技術は示していない。
発明のある実施例を実施するための例示的なシステムを示す高次のブロック図。 発明のある実施例に従った例示的なメモリーコントローラーを示すブロック図。 発明のある実施例に従ったメモリーコントローラーの例示的なプロセスを示すフローチャート。 発明のある実施例に従ったメモリーコントローラーの別の例示的なプロセスを示すフローチャート。 発明のある実施例に従ったメモリーコントローラーの別の例示的なプロセスを示すフローチャート。

Claims (20)

  1. 書き込みキューにあるコマンドの数が第1閾値より大きいかどうかを判別する工程と、
    判別が真なら、コンフリクトキューにあるすべてのコマンドが第2閾値のサイクル数よりも短い間コンフリクトキューに存在していたかどうかを決定する工程と、
    決定が真なら、コンフリクトキューにあるコマンドのいずれとも衝突しない書き込みキューにある最も古いコマンドを選択する工程と、
    を含む方法。
  2. さらに、
    コンフリクトキューにあるコマンドのいずれとも衝突しない最も古いコマンドを書き込みキューからメモリーに送る工程を含む、請求項1に記載の方法。
  3. さらに、
    コンフリクトキューにあるコマンドのいずれとも衝突しない最も古いコマンドをコンフリクトキューに追加する工程を含む、請求項2に記載の方法。
  4. 選択する工程がさらに、
    書き込みキューにある最も古いコマンドがコンフリクトキューにあるコマンドのいずれかと同じメモリーのキャッシュラインにアクセスするかどうかを判別する工程を含む、請求項1に記載の方法。
  5. コンフリクトキューが以前にメモリーに送られたコマンドを含む、請求項1に記載の方法。
  6. 判別する工程がさらに、
    読み出しキューにあるすべてのコマンドがコンフリクトキューと衝突するかどうかを判別する工程を含む、請求項1に記載の方法。
  7. 判別する工程がさらに、
    プロセッサから入ってくる読み出しコマンドが書き込みキューと衝突するかどうかを判別する工程を含む、請求項1に記載の方法。
  8. 書き込みキューと、
    書き込みキューにあるコマンドの数が第1閾値より大きく、かつコンフリクトキューにあるすべてのコマンドが第2閾値のサイクル数よりも短い間コンフリクトキューに存在していた場合、コンフリクトキューにあるコマンドのいずれとも衝突しない書き込みキューにある最も古いコマンドをメモリーに送るコンフリクトキューと、
    を具備するメモリーコントローラー。
  9. コンフリクトキューが最も古いコマンドをメモリーに送る場合、最も古いコマンドをコンフリクトキューに追加する、請求項8のメモリーコントローラー。
  10. コンフリクトキューがさらに、コンフリクトキューにあるコマンドのいずれとも衝突しない書き込みキューにある最も古いコマンドが、コンフリクトキューにあるコマンドのいずれとも同じメモリー内のキャッシュラインにアクセスしないことを判定する、請求項8のメモリーコントローラー。
  11. コンフリクトキューが以前にメモリーに送られたコマンドを含む、請求項8のメモリーコントローラー。
  12. コンフリクトキューがさらに、読み出しキューにあるすべてのコマンドがコンフリクトキューと衝突するかどうかに基づいて、コンフリクトキューにあるコマンドのいずれとも衝突しない書き込みキューにある最も古いコマンドをメモリーに送る、請求項8のメモリーコントローラー。
  13. コンフリクトキューが、プロセッサから入ってくる読み出しコマンドが書き込みキューと衝突しないかどうかに基づいて、コンフリクトキューにあるコマンドのいずれとも衝突しない書き込みキューにある最も古いコマンドをメモリーに送る、請求項8のメモリーコントローラー。
  14. プロセッサと、
    メモリーと、
    プロセッサからコマンドを受信するメモリーコントローラーとを具備し、メモリーコントローラーが、
    書き込みキューと、
    書き込みキューにあるコマンドの数が第1閾値より大きく、かつコンフリクトキューにあるすべてのコマンドが第2閾値のサイクル数よりも短い間コンフリクトキューに存在していた場合、コンフリクトキューにあるコマンドのいずれにも衝突しない書き込みキューにある最も古いコマンドをメモリーに送るコンフリクトキューとを具備する、コンピュータシステム。
  15. コンフリクトキューが最も古いコマンドをメモリーに送る場合、最も古いコマンドをコンフリクトキューに追加する、請求項14のコンピュータシステム。
  16. コンフリクトキューがさらに、コンフリクトキューにあるコマンドのいずれとも衝突しない書き込みキューにある最も古いコマンドがコンフリクトキューにあるコマンドのいずれとも同じメモリーのキャッシュラインにアクセスしないことを判定する、請求項14のコンピュータシステム。
  17. コンフリクトキューが、メモリーコントローラーが以前にメモリーに送ったコマンドを含む、請求項14のコンピュータシステム。
  18. コンフリクトキューがさらに、読み出しキューがコンフリクトキューと衝突するかどうかに基づいて、コンフリクトキューにあるコマンドのいずれとも衝突しない書き込みキューにある最も古いコマンドをメモリーに送る、請求項14のコンピュータシステム。
  19. コンフリクトキューが、プロセッサから入ってくる読み出しコマンドが書き込みキューと衝突しないかどうかに基づいて、コンフリクトキューにあるコマンドのいずれとも衝突しない書き込みキューにある最も古いコマンドをメモリーに送る、請求項14のコンピュータシステム。
  20. メモリーコントローラーがさらに第1レジスタと第2レジスタを具備し、メモリーコントローラーがさらに第1閾値を第1レジスタに記憶し、第2閾値を第2レジスタに記憶する、請求項14のコンピュータシステム。
JP2006117455A 2005-04-28 2006-04-21 メモリーに送るコマンドの選択方法、メモリーコントローラー、コンピュータシステム Expired - Fee Related JP4866646B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/116,626 2005-04-28
US11/116,626 US8082396B2 (en) 2005-04-28 2005-04-28 Selecting a command to send to memory

Publications (2)

Publication Number Publication Date
JP2006309757A JP2006309757A (ja) 2006-11-09
JP4866646B2 true JP4866646B2 (ja) 2012-02-01

Family

ID=37195225

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006117455A Expired - Fee Related JP4866646B2 (ja) 2005-04-28 2006-04-21 メモリーに送るコマンドの選択方法、メモリーコントローラー、コンピュータシステム

Country Status (4)

Country Link
US (1) US8082396B2 (ja)
JP (1) JP4866646B2 (ja)
CN (1) CN100440124C (ja)
TW (1) TWI377472B (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4847036B2 (ja) * 2005-03-30 2011-12-28 キヤノン株式会社 バスアクセスを調停する制御装置およびデータ処理装置の制御方法
US7873953B1 (en) * 2006-01-20 2011-01-18 Altera Corporation High-level language code sequence optimization for implementing programmable chip designs
US20090196143A1 (en) * 2008-02-06 2009-08-06 Nils Haustein Method and System for Command-Ordering for a Disk-to-Disk-to-Holographic Data Storage System
US20090196144A1 (en) * 2008-02-06 2009-08-06 Nils Haustein Method and System for Command-Ordering and Command-Execution Within a Command Group for a Disk-to-Disk-to-Holographic Data Storage System
CN101459627B (zh) * 2008-04-07 2012-09-05 中兴通讯股份有限公司 消息管理方法
CN101694610B (zh) * 2009-10-16 2011-11-09 成都市华为赛门铁克科技有限公司 命令处理方法、装置和存储设备
US8866826B2 (en) * 2011-02-10 2014-10-21 Qualcomm Innovation Center, Inc. Method and apparatus for dispatching graphics operations to multiple processing resources
CN102929562B (zh) * 2012-10-09 2015-05-06 无锡江南计算技术研究所 基于识别标识的可扩展重排序方法
US9361103B2 (en) * 2012-11-02 2016-06-07 Advanced Micro Devices, Inc. Store replay policy
US9021228B2 (en) 2013-02-01 2015-04-28 International Business Machines Corporation Managing out-of-order memory command execution from multiple queues while maintaining data coherency
US10310923B1 (en) 2014-08-28 2019-06-04 Seagate Technology Llc Probabilistic aging command sorting
PL3246222T3 (pl) * 2015-01-13 2023-05-15 Mitsubishi Electric Corporation Urządzenie do klimatyzacji pojazdu
US10509569B2 (en) 2017-03-24 2019-12-17 Western Digital Technologies, Inc. System and method for adaptive command fetch aggregation
US10831403B2 (en) 2017-05-19 2020-11-10 Seagate Technology Llc Probabalistic command aging and selection
CN110347329A (zh) * 2018-04-02 2019-10-18 深信服科技股份有限公司 I/o数据读写并发冲突的处理方法、系统及相关装置
US11099778B2 (en) * 2018-08-08 2021-08-24 Micron Technology, Inc. Controller command scheduling in a memory system to increase command bus utilization
CN112840309B (zh) * 2018-10-15 2023-08-22 华为技术有限公司 命令调度方法、装置及存储介质
US11048437B2 (en) * 2019-02-28 2021-06-29 Micron Technology, Inc. Double threshold controlled scheduling of memory access commands

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5027270A (en) * 1988-10-11 1991-06-25 Mips Computer Systems, Inc. Processor controlled interface with instruction streaming
US5835945A (en) * 1990-08-06 1998-11-10 Ncr Corporation Memory system with write buffer, prefetch and internal caches
JP2695558B2 (ja) 1992-01-08 1997-12-24 富士通株式会社 主記憶制御装置のメモリアクセス制御方式
US5933860A (en) * 1995-02-10 1999-08-03 Digital Equipment Corporation Multiprobe instruction cache with instruction-based probe hint generation and training whereby the cache bank or way to be accessed next is predicted
US5638534A (en) * 1995-03-31 1997-06-10 Samsung Electronics Co., Ltd. Memory controller which executes read and write commands out of order
US5842038A (en) * 1996-10-10 1998-11-24 Unisys Corporation Optimized input/output memory access request system and method
US6453370B1 (en) * 1998-11-16 2002-09-17 Infineion Technologies Ag Using of bank tag registers to avoid a background operation collision in memory systems
US6216178B1 (en) 1998-11-16 2001-04-10 Infineon Technologies Ag Methods and apparatus for detecting the collision of data on a data bus in case of out-of-order memory accesses of different times of memory access execution
US6295586B1 (en) * 1998-12-04 2001-09-25 Advanced Micro Devices, Inc. Queue based memory controller
US6256713B1 (en) * 1999-04-29 2001-07-03 International Business Machines Corporation Bus optimization with read/write coherence including ordering responsive to collisions
US6427196B1 (en) * 1999-08-31 2002-07-30 Intel Corporation SRAM controller for parallel processor architecture including address and command queue and arbiter
US6615319B2 (en) * 2000-12-29 2003-09-02 Intel Corporation Distributed mechanism for resolving cache coherence conflicts in a multi-node computer architecture
US6877077B2 (en) * 2001-12-07 2005-04-05 Sun Microsystems, Inc. Memory controller and method using read and write queues and an ordering queue for dispatching read and write memory requests out of order to reduce memory latency
GB2391337B (en) * 2002-04-26 2005-06-15 Motorola Inc Instruction cache and method for reducing memory conflicts
US7093059B2 (en) * 2002-12-31 2006-08-15 Intel Corporation Read-write switching method for a memory controller
US7107415B2 (en) * 2003-06-20 2006-09-12 Micron Technology, Inc. Posted write buffers and methods of posting write requests in memory modules
US7237043B2 (en) * 2003-11-21 2007-06-26 Lsi Corporation System for improving PCI write performance

Also Published As

Publication number Publication date
JP2006309757A (ja) 2006-11-09
US8082396B2 (en) 2011-12-20
CN1855026A (zh) 2006-11-01
TW200643725A (en) 2006-12-16
US20060248275A1 (en) 2006-11-02
TWI377472B (en) 2012-11-21
CN100440124C (zh) 2008-12-03

Similar Documents

Publication Publication Date Title
JP4866646B2 (ja) メモリーに送るコマンドの選択方法、メモリーコントローラー、コンピュータシステム
US7536530B2 (en) Method and apparatus for determining a dynamic random access memory page management implementation
JP4677630B2 (ja) 内部キャッシュおよび/またはメモリアクセス予測を持つメモリハブ
US8862973B2 (en) Method and system for error management in a memory device
KR100860956B1 (ko) 메모리 시퀀싱 힌트들을 제공하기 위한 메모리 허브 및방법
US6026464A (en) Memory control system and method utilizing distributed memory controllers for multibank memory
JP6130594B2 (ja) 信頼性の高い動作に適したメモリコントローラを有するデータプロセッサ及び方法
US20160132237A1 (en) Data storage device, data processing system and method of operation
US20100077140A1 (en) Scalable schedulers for memory controllers
US10296356B2 (en) Implementation of reset functions in an SoC virtualized device
JP2010537310A (ja) 投機的なプリチャージの検出
CN116324744A (zh) 具有多个命令子队列和对应的仲裁器的存储器控制器
KR102478527B1 (ko) 이기종 메모리 시스템용 시그널링
US11561862B2 (en) Refresh management for DRAM
KR20200060248A (ko) 정적 랜덤 액세스 메모리를 액세스하는 방법, 장치, 기기 및 저장 매체
CN116250041A (zh) 用于dram的刷新管理列表
JP2023508117A (ja) 不揮発性メモリモジュールのエラー報告
US20040243768A1 (en) Method and apparatus to improve multi-CPU system performance for accesses to memory
US7409516B2 (en) Pending request scoreboard for out-of-order memory scheduler
EP4375840A1 (en) Memory controller, electronic system including the same and method of controlling memory access
US6510471B1 (en) Method for choosing device among plurality of devices based on coherncy status of device's data and if device supports higher-performance transactions
US20240112722A1 (en) Directed refresh management for dram
US20230178136A1 (en) Memory device detecting weakness of operation pattern and method of operating the same
KR20230082529A (ko) 리프레쉬 동작에서 파워 노이즈를 감소시킨 메모리 장치 및 그 동작방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090121

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111027

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111101

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111114

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141118

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees