(57)【要約】  多数のメモリ装置を有するメモリシステムが、物理メモリの異なる領域に対して異なるレイテンシ時間を可能にすることと、頻繁にアクセスされるメモリアドレスを物理メモリの最短レイテンシ時間領域に位置づけるのに役立つアドレスマップを提供することと、頻繁にアクセスされるメモリアドレスを物理メモリの最短レイテンシ時間領域に割り当てることとによって、平均アクセスレイテンシ時間を短縮する。
2008500668.tif 000002
【特許請求の範囲】
【請求項１】
メモリシステムにおけるメモリ装置へのアクセスを制御する方法であって、
前記メモリシステムにおけるメモリ装置を、第１のレイテンシ時間グループおよび第２のレイテンシ時間グループを含むレイテンシ時間グループに割り当てるステップであって、前記第１のレイテンシ時間グループが、前記第２のレイテンシ時間グループより短いレイテンシ時間を有するステップと、
メモリアドレス空間の少なくとも第１および第２の部分を識別するステップと、
前記アドレス空間の前記第１の部分を、前記第１のレイテンシ時間グループに割り当てられた少なくとも１つのメモリ装置にマップするステップと、
前記アドレス空間の前記第２の部分を、前記第２のレイテンシ時間グループに割り当てられた少なくとも１つのメモリ装置にマップするステップと、
を含む方法。
【請求項２】
前記マッピングが、前記アドレス空間の前記第１の部分に、前記アドレス空間の前記第２の部分より短いレイテンシ時間を提供し、それにより、結果としてシステム性能の改善をもたらす、請求項１に記載の方法。
【請求項３】
前記識別が、前記メモリアドレス空間の様々な部分へのアクセスの頻度に基づいており、前記アドレス空間の前記第１の部分が、前記アドレス空間の前記第２の部分より頻繁にアクセスされる、請求項１に記載の方法。
【請求項４】
メモリ装置識別子を含むメモリアクセス要求を受信するステップと、
前記識別子に基づいて、前記メモリ装置のレイテンシ時間グループを決定するステップと、
前記メモリ装置の前記レイテンシ時間グループに基づいて、タイミング制御信号を生成するステップと、
をさらに含む、請求項１に記載の方法。
【請求項５】
前記メモリ装置の前記レイテンシ時間グループを決定するステップが、
前記レイテンシ時間グループを、前のメモリ要求に関連するレイテンシ時間グループと比較するステップと、
前記比較に基づいて、タイミング制御信号を生成するステップと、
をさらに含む、請求項４に記載の方法。
【請求項６】
前記第１および第２のレイテンシ時間グループの前記レイテンシ時間が、前記第１および第２のレイテンシ時間グループに割り当てられたメモリ装置ならびにメモリコントローラを相互接続するチャネルにおける信号の電気的なフライト時間に少なくとも部分的に起因する、請求項１に記載の方法。
【請求項７】
多重メモリアクセスレイテンシ時間をサポートするメモリシステムにおいて用いるように構成されたメモリ装置であって、
メモリアレイと、
前記メモリアレイに結合され、かつ遅延値を受信するためにメモリシステムに結合されるように構成されたコマンドインターフェースであって、前記遅延値が、複数のレイテンシ時間グループにおけるそれぞれのレイテンシ時間グループに関連するコマンドインターフェースと、
前記コマンドインターフェースおよび出力データパスに結合された遅延装置であって、前記メモリアレイから検索されかつ前記出力データパスで伝送されるデータを、前記遅延値によって決定された遅延期間、遅延させるように構成された遅延装置と、
を含むメモリ装置。
【請求項８】
各レイテンシ時間グループが、異なる遅延値に関連している、請求項７に記載のメモリ装置。
【請求項９】
少なくとも１つのレイテンシ時間グループに関連する少なくとも１つの遅延値が、このレイテンシ時間グループに割り当てられたメモリ装置およびメモリコントローラを相互接続するチャネルにおける信号の電気的なフライト時間に少なくとも部分的に起因する、請求項８に記載のメモリ装置。
【請求項１０】
前記それぞれのレイテンシ時間グループに関連する前記遅延値が、前記グループにおける最大アクセスレイテンシ時間に基づく、請求項７に記載のメモリ装置。
【請求項１１】
前記メモリ装置がメモリモジュールに含まれ、前記メモリモジュールが、前記それぞれのレイテンシ時間グループに割り当てられる、請求項７に記載のメモリ装置。
【請求項１２】
前記メモリモジュールが、バッファを介して前記メモリコントローラに結合される、請求項１１に記載のメモリ装置。
【請求項１３】
前記遅延装置がシフトレジスタを含む、請求項７に記載のメモリ装置。
【請求項１４】
多重メモリアクセスレイテンシ時間をサポートするメモリシステムにおけるメモリ装置へのアクセスを制御する方法であって、
メモリアクセス要求を復号してメモリ装置識別子を提供するステップと、
前記メモリ装置識別子に関連するレイテンシ時間グループを識別するステップであって、前記レイテンシ時間グループが、前記メモリシステムにおける複数のレイテンシ時間グループの１つであるステップと、
前記識別されたレイテンシ時間グループを、前のメモリアクセス要求に関連するレイテンシ時間グループと比較するステップと、
前記比較の結果に応じてタイミング制御信号を生成するステップと、
を含む方法。
【請求項１５】
タイミング制御信号を生成するステップが、
前記識別されたレイテンシ時間グループおよび前記前のメモリアクセス要求に関連する前記レイテンシ時間グループに対応する最小時間差が、前記メモリアクセス要求と前記前のメモリアクセス要求との間の時間差より大きいかどうかを決定するステップと、
前記決定が正である場合には、バス衝突を回避するのに十分な時間、前記メモリアクセス要求のためのメモリアクセスコマンドの発行を遅延させるステップと、
をさらに含む、請求項１４に記載の方法。
【請求項１６】
メモリアクセスコマンドの発行を遅延させるステップが、
前記メモリアクセスコマンドを発行する前に、少なくとも１つのノーオペレーションコマンドを発行するステップをさらに含む、請求項１５に記載の方法。
【請求項１７】
前記タイミング制御信号が、前記メモリアクセス要求に関連するメモリアクセスコマンドの伝送を遅延させるために用いられる、請求項１４に記載の方法。
【請求項１８】
多重アクセスレイテンシ時間をサポートするコンピュータシステムで用いるためのコンピュータプログラムプロダクトであって、前記コンピュータプログラムプロダクトが、コンピュータ可読記憶媒体およびそこに埋め込まれたコンピュータプログラム機構を含み、前記コンピュータプログラム機構が、
メモリアクセス要求を復号してメモリ装置識別子を提供するステップと、
前記メモリ装置識別子に関連するレイテンシ時間グループを識別するステップであって、前記識別されたレイテンシ時間グループが、前記コンピュータシステムのメモリシステムにおける複数のレイテンシ時間グループの１つであるステップと、
前記識別されたレイテンシ時間グループを、前のメモリアクセス要求に関連するレイテンシ時間グループと比較するステップと、
前記比較の結果に応じてタイミング制御信号を生成するステップと、
を含むコンピュータプログラムプロダクト。
【請求項１９】
前記レイテンシ時間グループが、前記メモリ装置識別子を用いてルックアップ表にアクセスすることによって識別される、請求項１８に記載のコンピュータプログラムプロダクト。
【請求項２０】
各レイテンシ時間グループが、異なるメモリアクセスレイテンシ時間に関連する、請求項１８に記載のコンピュータプログラムプロダクト。
【請求項２１】
少なくとも１つのレイテンシ時間グループに関連する少なくとも１つのメモリアクセスレイテンシ時間が、このレイテンシ時間グループに割り当てられたメモリ装置およびメモリコントローラを相互接続するチャネルにおける信号の電気的なフライト時間に少なくとも部分的に起因する、請求項２０に記載のコンピュータプログラムプロダクト。
【請求項２２】
前記識別されたレイテンシ時間グループに関連する前記メモリアクセスレイテンシ時間が、前記識別されたレイテンシ時間グループにおける最大アクセスレイテンシ時間に基づく、請求項２０に記載のコンピュータプログラムプロダクト。
【請求項２３】
多重メモリアクセスレイテンシ時間をサポートするメモリシステムにおけるメモリ装置へのアクセスを制御するためのシステムであって、
プロセッサに結合されるように構成され、かつ命令を含むコンピュータプログラムプロダクトを含むメモリであって、前記命令が、前記プロセッサによって実行されたときに、
メモリアクセス要求を復号してメモリ装置識別子を提供するステップと、
前記メモリ装置識別子に関連するレイテンシ時間グループを識別するステップであって、前記識別されたレイテンシ時間グループが、前記システムのメモリシステムにおける複数のレイテンシ時間グループの１つであるステップと、
前記識別されたレイテンシ時間グループを、前のメモリアクセス要求に関連するレイテンシ時間グループと比較するステップと、
前記比較の結果に応じてタイミング制御信号を生成するステップと、
の動作を前記プロセッサに実行させるメモリを含むシステム。
【請求項２４】
前記レイテンシ時間グループが、前記メモリ装置識別子を用いてルックアップ表にアクセスすることによって識別される、請求項２３に記載のシステム。
【請求項２５】
前記レイテンシ時間グループが、多くのレイテンシ時間グループから選択され、各レイテンシ時間グループが、異なるメモリアクセスレイテンシ時間に関連している、請求項２３に記載のシステム。
【請求項２６】
少なくとも１つのレイテンシ時間グループに関連する少なくとも１つのメモリアクセスレイテンシ時間が、このレイテンシ時間グループに割り当てられたメモリ装置およびメモリコントローラを相互接続するチャネルにおける信号の電気的なフライト時間に少なくとも部分的に起因する、請求項２５に記載のシステム。
【請求項２７】
前記識別されたレイテンシ時間グループに関連する前記メモリアクセスレイテンシ時間が、前記識別されたレイテンシ時間グループにおける最大アクセスレイテンシ時間に基づく、請求項２５に記載のシステム。
【請求項２８】
多重メモリアクセスレイテンシ時間をサポートするメモリシステムにおけるメモリ装置へのアクセスを制御するためのシステムであって、
メモリアクセス要求を復号してメモリ装置識別子を提供するための手段と、
前記メモリ装置識別子に関連するレイテンシ時間グループを識別するための手段であって、前記識別されたレイテンシ時間グループが、前記システムのメモリシステムにおける複数のレイテンシ時間グループの１つである手段と、
前記識別されたレイテンシ時間グループを、前のメモリアクセス要求に関連するレイテンシ時間グループと比較するための手段と、
前記比較の結果に応じてタイミング制御信号を生成するための手段と、
を含むシステム。
【請求項２９】
各レイテンシ時間グループが、異なるメモリアクセスレイテンシ時間に関連している、請求項２８に記載のシステム。
【請求項３０】
少なくとも１つのレイテンシ時間グループに関連する少なくとも１つのメモリアクセスレイテンシ時間が、このレイテンシ時間グループに割り当てられたメモリ装置およびメモリコントローラを相互接続するチャネルにおける信号の電気的なフライト時間に少なくとも部分的に起因する、請求項２９に記載のシステム。
【請求項３１】
メモリコントローラと、
前記メモリコントローラに結合された第１のメモリモジュールであって、前記第１のメモリモジュールが、第１のバッファおよび前記第１のバッファに結合された第１のメモリ装置を含み、前記第１のバッファが、第１の割り当てられたアクセスレイテンシ時間を有する第１のメモリモジュールと、
前記メモリコントローラに結合された第２のメモリモジュールであって、前記第２のメモリモジュールが、第２のバッファおよび前記第２のバッファに結合された第２のメモリ装置を含み、前記第２のバッファが、第２の割り当てられたアクセスレイテンシ時間を有する第２のメモリモジュールと、
を含むシステム。
【請求項３２】
前記第１のメモリモジュールが、前記第２のメモリモジュールと直列に配置されている、請求項３１に記載のシステム。
【請求項３３】
前記第１の割り当てられたアクセスレイテンシ時間が、読み出し要求が前記コントローラから前記第１のバッファに送出される時間から、読み出し完了データが前記第１のバッファから前記コントローラへ送られ、前記コントローラによってサンプリングされる時間までを含む、請求項３１に記載のシステム。
【請求項３４】
前記第２の割り当てられたアクセスレイテンシ時間が、読み出し要求が前記コントローラから前記第２のバッファに送出される時間から、読み出し完了データが前記第２のバッファから前記コントローラへ送られ、前記コントローラによってサンプリングされる時間までを含む、請求項３１に記載のシステム。
【請求項３５】
第１の関連するレイテンシ時間を有する第１のメモリ装置と、
第２の関連するレイテンシ時間を有する第２のメモリ装置と、
前記第１および第２のメモリ装置に結合されたバッファであって、前記メモリ装置とメモリコントローラとの間に置かれるバッファと、
を含むメモリモジュール。
【請求項３６】
メモリコントローラと、
第１のメモリモジュールであって、
前記メモリコントローラに結合されたバッファと、
前記バッファに結合された第１のメモリ装置と、
前記バッファに結合された第２のメモリ装置と、
を含む第１のメモリモジュールと、
を含むシステムであって、
前記第１のメモリ装置が、第１の関連するレイテンシ時間を有し、前記第２のメモリ装置が、第２の関連するレイテンシ時間を有するシステム。
【請求項３７】
第１および第２のメモリモジュールに配置されたメモリ装置にアクセスする方法であって、
第１のアクセスレイテンシ時間を前記第１のメモリモジュールに割り当てるステップであって、前記第１のメモリモジュールが、第１のバッファおよび前記第１のバッファに結合された第１のメモリ装置を含むステップと、
第２のアクセスレイテンシ時間を前記第２のメモリモジュールに割り当てるステップであって、前記第２のメモリモジュールが、第２のバッファおよび前記第２のバッファに結合された第２のメモリ装置を含むステップと、
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
技術分野
開示される実施形態は、一般的にはコンピュータメモリシステムおよび方法に関し、特に多重メモリアクセスレイテンシ時間をサポートするメモリシステムにおける性能の改善に関する。
【背景技術】
【０００２】
背景
コンピュータシステムが発展し続けるにつれて、メモリシステムが、全体的なシステム性能の制限要因になっている。メモリ帯域幅の重要性が増加し続ける一方で、メモリレイテンシ時間が、システム性能においてやはり重要な役割を果たしている。たとえば、より高い信号速度では、メモリ装置の多数のランク間の伝搬遅延は、一クロックサイクルを超えて、潜在的に、メモリ装置の異なるランク間の様々なアクセスレイテンシ時間に帰着する可能性がある。ダイレクト・ランバス・ダイナミックランダムアクセスメモリ（ＲＤＲＡＭ）を用いるメモリシステムは、かかるシステムの一例である。ダブルデータレート（ＤＤＲ）およびＤＤＲ−ＩＩなどの他のメモリタイプは、ＤＲＡＭの異なるランク（たとえば異なるメモリモジュール）が、異なるアクセスレイテンシ時間を有することを潜在的に可能にする信号トポロジおよび相互接続トポロジを用いる。
【０００３】
ダイレクトＲＤＲＡＭを用いるシステムは、他よりも早く応答できる装置のランクに遅延を加えることによって、ＤＲＡＭの全てのランクにわたって１つの均一なレイテンシ時間を実行するチャネルレベライゼーション（ｃｈａｎｎｅｌ  ｌｅｖｅｌｉｚａｔｉｏｎ）（以下では「グローバルレベライゼーション」とも呼ぶ）を利用した。これにより、結果として有効帯域幅の増加がもたらされる。なぜなら、ＤＲＡＭの異なるランク間に存在するデータバブルが除去されるからである。また、これによって、メモリコントローラの設計が単純化される。チャネルレベライゼーションは、いくつかの重要な利点を提供する一方でまた、別の状況ではより少ないレイテンシ時間で応答可能な装置のランクのＤＲＡＭレイテンシ時間を増加させる悪影響がある。その結果、アプリケーションによっては、グローバルレベライゼーションによる性能の低下があり得る。
【発明の開示】
【課題を解決するための手段】
【０００４】
実施形態の説明
概要
以下でより詳細に説明するように、メモリシステムにおけるメモリ装置へのアクセスを制御する方法において、メモリシステムのメモリ装置は、第１のレイテンシ時間グループおよび第２のレイテンシ時間グループを含むレイテンシ時間グループに割り当てられる。第１のレイテンシ時間グループは、第２のレイテンシ時間グループより短いレイテンシ時間を有する。さらに、メモリアドレス空間の第１および第２の部分は識別され、アドレス空間の第１の部分は、第１のレイテンシ時間グループに割り当てられた少なくとも１つのメモリ装置にマップされ、一方で、アドレス空間の第２の部分は、第２のレイテンシ時間グループに割り当てられた少なくとも１つのメモリ装置にマップされる。アドレス空間の第１の部分に、アドレス空間の第２の部分より短いアクセスレイテンシ時間を提供することにより、結果として、メモリシステムの性能の改善をもたらすことができる。いくつかの実施形態において、３以上のレイテンシ時間グループ、およびメモリアドレス空間の３以上の部分が用いられる。
【０００５】
いくつかの実施形態において、メモリ装置には、コマンドインターフェースに結合されたメモリアレイが含まれるが、このコマンドインターフェースは、遅延値の受信のためにメモリシステムに結合されるように構成されている。メモリ装置にはまた、コマンドインターフェースおよび出力データパスに結合された遅延装置が含まれる。遅延装置は、メモリアレイから検索されかつ出力データパスで伝送されるデータを、遅延値によって決定される遅延期間、遅延させるように構成されている。他の実施形態において、レイテンシ時間制御信号を用いて、メモリアクセスレイテンシ時間を制御してもよい。
【０００６】
いくつかの実施形態において、多重メモリアクセスレイテンシ時間をサポートするメモリシステムにおけるメモリ装置へのアクセスを制御する方法には、メモリアクセス要求を復号してメモリ装置識別子を提供するステップと、メモリ装置識別子に関連するレイテンシ時間グループを識別するステップであって、このレイテンシ時間グループが、メモリシステムにおける複数のレイテンシ時間グループの１つであるステップと、識別されたレイテンシ時間グループを、前のメモリアクセス要求に関連するレイテンシ時間グループと比較するステップと、比較の結果に応じてタイミング制御信号を生成するステップと、が含まれる。いくつかの実施形態において、メモリコントローラは、メモリシステムにおけるメモリ装置へのアクセスを制御するこの方法を実行するように構成されているが、この方法の実行は、前および現在のメモリアクセス要求の時間を比較し、かつ次に、比較の結果を、前および現在のメモリアクセス要求のためのレイテンシ時間グループ情報と組み合わせて用いて、バス衝突を回避するために現在のメモリアクセスコマンドの発行を遅延させるべきかどうかを決定することによる。
【０００７】
いくつかの実施形態において、システムには、メモリコントローラと、メモリコントローラに結合された第１のメモリモジュールと、メモリコントローラに結合された第２のメモリモジュールと、が含まれる。第１のメモリモジュールには、第１のバッファおよび第１のバッファに結合された第１のメモリ装置が含まれる。第１のバッファは、第１の割り当てられたアクセスレイテンシ時間を有する。第２のメモリモジュールには、第２のバッファおよび第２のバッファに結合された第２のメモリ装置が含まれる。第２のバッファは、第２の割り当てられたアクセスレイテンシ時間を有する。
【０００８】
第１のメモリモジュールは、第２のメモリモジュールと直列に配置してもよい。第１の割り当てられたアクセスレイテンシ時間には、読み出し要求がコントローラから第１のバッファに送出される時間から、読み出し完了データが第１のバッファからコントローラへ送られ、コントローラによってサンプリングされる時間までを含んでもよい。第２の割り当てられたアクセスレイテンシ時間には、読み出し要求がコントローラから第２のバッファに送出される時間から、読み出し完了データが第２のバッファからコントローラへ送られ、コントローラによってサンプリングされる時間までを含んでもよい。
【０００９】
いくつかの実施形態において、第１および第２のメモリモジュールに配置されたメモリ装置が、アクセスされ得る。第１のメモリモジュールへの第１のアクセスレイテンシ時間を、割り当ててもよい。第１のメモリモジュールには、第１のバッファおよび第１のバッファに結合された第１のメモリ装置が含まれる。第２のメモリモジュールへの第２のアクセスレイテンシ時間が、割り当てられる。第２のメモリモジュールには、第２のバッファおよび第２のバッファに結合された第２のメモリ装置が含まれる。
【００１０】
グループレベライゼーションの利点は、実行負荷のほとんどが、ソフトウェア（たとえばＢＩＯＳ）にあるということである。たとえば、この技術は、マザーボードメーカ、システムインテグレータ、エンドユーザ等がイネーブルできるＢＩＯＳオプションとして、既製のメモリコントローラ（たとえばＳｉＳ  Ｒ６５８）で実行することができる。実行負荷のほとんどがソフトウェアにあるので、エンドユーザは、多数の装置ＩＤ／ランクマッピングから選択するか、または自身のカスタムマッピングを生成することができる。
【発明を実施するための最良の形態】
【００１１】
グローバルレベライゼーション
図１は、グローバルレベライゼーションを用いるメモリシステム１００のブロック図である。メモリシステム１００には、多数のパラレル伝送線路（以下では「チャネル」とも呼ぶ）を介して直列に接続された１つまたは複数のメモリ装置１０４−１、．．．、１０４−Ｎに結合されたメモリコントローラ１０２が含まれる。いくつかの実施形態において、パラレル伝送線路には、データバス、要求バス、基準電圧（ＶＲｅｆ）線路、マスタへのクロック（ｃｌｏｃｋ  ｔｏ  ｍａｓｔｅｒ）（ＣＴＭ）線路、マスタからのクロック（ｃｌｏｃｋ  ｆｒｏｍ  ｍａｓｔｅｒ）（ＣＦＭ）線路およびシリアル（ＳＯｕｔ）バスが含まれる。他の実施形態において、バスまたは伝送線路の追加または他の構成を用いてもよい。メモリ装置１０４（たとえばＤＲＡＭ、ＲＤＲＡＭ）は、別個のメモリチップまたはメモリモジュール１１２（たとえばＳＩＭＭ、ＤＩＭＭ、ＲＩＭＭ、Ｃ−ＲＩＭＭ）の一部とすることができる。図１Ａは、ＲＤＲＡＭと共に典型的に用いられるメモリシステムアーキテクチャを示すが、開示される技術が、多重アクセスレイテンシ時間を伴う任意のメモリシステムアーキテクチャ（たとえばＤＤＲ、ＤＤＲ−ＩＩ等）に適用可能であることに留意されたい。
【００１２】
いくつかの実施形態において、メモリコントローラ１０２には、メモリ装置１０４と通信するための高速メモリインターフェース１０６が含まれる。メモリ装置１０４のそれぞれには、コマンドインターフェース１０８が含まれ、このインターフェース１０８にはプログラマブル遅延装置１１０が含まれるが、この遅延装置１１０は、アクセスレイテンシ時間を調節するために必要な遅延を提供するように構成することができる。メモリ装置１０４は、メモリコントローラ１０２から異なる電気的距離に存在し、結果として、メモリ装置１０４とメモリコントローラ１０２との間で、信号の異なるフライト時間をもたらしてもよい。メモリ装置１０４はまた、異なるＣＡＳレイテンシレイテンシ時間をサポートし、メモリコントローラ１０２によるアクセスレイテンシレイテンシ時間の差を導いてもよい。いくつかの実施形態において、各メモリ装置１０４のそれぞれのプログラマブル遅延装置１１０は、それぞれの指定された期間の間、出力データを格納するように構成され、アクセスされたメモリ装置に依存しない時間に、データが、メモリアクセス動作に応じてメモリコントローラ１０２に到達するようにする。したがって、メモリシステム１００における各メモリ装置１０４は、メモリシステム１００における最大レイテンシ時間のメモリ装置１０４（すなわちメモリ装置１０４−Ｎ）と同じレイテンシ時間ＬＧで応答する。
【００１３】
いくつかの実施形態において、遅延装置１１０は、周知のプログラマブル遅延装置および設計技術を用いて実現される。しかしながら、クロック速度が増加するにつれて、メモリ装置１０４および／またはメモリコントローラ１０２の設計に著しい影響（たとえばサイズの増加）を与えることも、システムを限られた数のメモリ装置１０４に制限することもなく、グローバルレベライゼーションに必要とされる遅延を提供できる遅延装置１１０を設計することは、ますます困難になる。いくつかの実施形態において、遅延装置１００は、指定されたクロックサイクル数だけ出力データ信号を遅延させるために、シフトレジスタおよび出力マルチプレクサを用いて実現される。指定されたクロックサイクル数は、遅延装置が埋め込まれているメモリ装置のレジスタに格納される。いくつかの実施形態において、レジスタは、初期化中に、メモリコントローラ１０２によって実行されるレジスタ書き込み動作を介してロードされ得る。他の実施形態において、レジスタは、メモリコントローラ１０２によってメモリ装置へ送られるコマンドに符号化される可変遅延をロードされ得る。クロックサイクル数は、初期化中に、メモリコントローラ１０２から最も遠いメモリ装置のメモリアクセスレイテンシ時間を計算することによって、決定することができる。
【００１４】
グローバルレベライゼーションを用いるメモリシステムを含む従来のメモリシステムでは、メモリアドレスは、従来のやり方でメモリ装置１０４に割り当てられる。図１Ｂに示すように、従来のメモリ割り当て方式は、オペレーティングシステム（ＯＳ）手順を低アドレス（より多くのメモリが必要とされるにつれて上に行く）に割り当て、アプリケーションプログラムを高アドレス（より多くのメモリが必要とされるにつれて下に行く）に割り当ててもよい。さらに、メモリアドレスは、（マップ１１４に示すように）、線形的なやり方でメモリ装置１０４にマップされ、最低アドレスが、チャネルの一端部におけるメモリ装置（たとえば、メモリコントローラ１０２に最も近いメモリ装置）にマップされ、最高アドレスが、チャネルのもう一方の端部におけるメモリ装置にマップされる。図１Ｂに示す例では、メモリ空間の一部分がオペレーティングシステムおよびアプリケーションによって用いられているだけであり、それは、多くのコンピュータシステムの通常動作中には、典型的である。上記のアドレスマッピング方式は、ＯＳ手順が、メモリコントローラ１０２に最も近いメモリ装置１０４に格納され、最も頻繁に用いられるアプリケーションプログラムが、メモリコントローラ１０２から最も遠く離れたメモリ装置１０４に格納されるという結果になる。このメモリ割り当て手法は、アクセスレイテンシ時間ＬＧがアクセスされるメモリ装置に依存しないので、グローバルレベライゼーションを備えたメモリシステムを用いるコンピュータでは問題ではない。しかしながら、このメモリ割り当て手法は、異なるメモリ装置が異なるアクセスレイテンシ時間を有するシステムでは、次善的に作動することになり得る。
【００１５】
グループレベライゼーション
図２Ａは、領域ベースのグループレベライゼーションを用いるメモリシステム２００のブロック図である。メモリシステム２００は、メモリアドレスがメモリ装置１０４にマップされる方法を除いて、メモリシステム１００と同様である。さらに、システム２００では、プログラマブル遅延装置１１０は、各レイテンシ時間グループにおけるメモリ装置が共通のアクセスレイテンシ時間を有するように、構成されているが、しかし、各レイテンシ時間グループは、別個のアクセスレイテンシ時間を有し、メモリコントローラ２０２に最も近いレイテンシ時間グループにおける装置が、メモリコントローラ２０２から最も遠いレイテンシ時間グループにおける装置より短いアクセスレイテンシ時間を有する。
【００１６】
メモリシステム２００において、メモリコントローラ１０２に最も近いメモリ装置１０４（たとえば、装置１０４−０、１０４−１および１０４−２）は、頻繁にアクセスされるメモリ位置（たとえば、アプリケーションプログラムおよびオペレーティングシステムによって用いられるアドレス位置）にマップされるか又は割り当てられ、メモリコントローラから最も遠いメモリ装置１０４（たとえば１０４−５から１０４−Ｎ）は、アクセス頻度のより少ないメモリアドレスにマップされるか又は割り当てられる。最初に最短レイテンシ時間グループから優先的にメモリを割り当てることによって、オペレーティングシステムが、このマッピングを利用し、性能を改善できることに留意されたい。また、メモリが満杯である場合には、オペレーティングシステムは、メモリのどのエリアが最も頻繁にアクセスされるかを監視し、次に、より短いレイテンシ時間グループとより長いレイテンシ時間グループとの間であちこちにデータを移動させて、性能を改善することができる。また、メモリシステムの動作を監視し、メモリ帯域幅ニーズおよびアプリケーションのメモリ占有量などの要素の関数として最適な平均システムレイテンシ時間を決定することによって、各レイテンシ時間グループにおける装置の数を動的に変更してシステム性能を最適化し、次に、装置の再割り当てが予測されるシステム性能を改善するであろう場合には、レイテンシ時間グループ間で装置を再割り当てすることが可能である。
【００１７】
図２Ｂは、グループレベライゼーションと共に用いるためのメモリマップ２１４を示す。装置１および２（１０４−１および１０４−２）は、アプリケーションプログラム用のアドレスにマップされ、一方で、装置５からＮ（１０４−５から１０４−Ｎ）は、アクセス頻度のより少ないメモリアドレスにマップされる。ＯＳ手順が、アプリケーションプログラムよりさらに一層頻繁にアクセスされるので、チャネルの第１の装置（装置０）にやはりマップされることに留意されたい。より一般的には、ＯＳ手順および最も頻繁に用いられるアプリケーションプログラム用のアドレスは、最短レイテンシ時間グループＧ１におけるメモリ装置にマップされる。レイテンシ時間グループは、次に論じる。
【００１８】
メモリ装置１０４をメモリアドレス空間における部分に割り当てることに加えて、各メモリ装置１０４は、異なるレイテンシ時間をそれぞれ有するレイテンシ時間グループＧ１．．．ＧＮのセットのうちの１つに割り当てられる。たとえば、図２Ａでは、チャネルは、以下ではレイテンシ時間グループＧ１（近いグループ）およびＧ２（遠いグループ）と呼ばれる、メモリ装置１０４の２つのレイテンシ時間グループに分割される。レイテンシ時間グループＧ１に割り当てられたメモリ装置１０４は、グループにおける最大レイテンシ時間装置のレイテンシ時間Ｌ１（クロックサイクルで測定される）に均一化され、一方で、レイテンシ時間グループＧ２に割り当てられたメモリ装置１０４は、グループＧ２における最大レイテンシ時間装置のレイテンシ時間Ｌ２に均一化される。いくつかの実施形態において、レイテンシ時間Ｌ２は、グループＧ１のＬ１レイテンシ時間よりＮクロックサイクル長い、すなわちＬ２＝Ｌ１＋Ｎであるが、ここで、Ｎは、限定するわけではないが、コントローラクロックサイクルに対するメモリバスクロックサイクルの比率、クロックサイクルでのデータパケット長さ、およびレイテンシ時間差を始めとする様々な基準に基づいて選択され、一方で、遅延装置は、グループＧ２における最大レイテンシ時間装置とグループＧ１における最大レイテンシ時間装置との間で、ゼロ遅延に設定される。いくつかの実施形態において、Ｎは４に等しいが、それは、ＲＤＲＡＭ装置を用いる少なくともいくつかのメモリシステムのメモリバスクロックサイクルにおけるデータパケット長さである。
【００１９】
レイテンシ時間Ｌ１およびＮは、限定するわけではないが、システム構成、メモリ装置のランク数、装置密度、マザーボードレイアウト、フロントサイドバス（ＦＳＢ）速度、メモリバス速度、メモリコントローラクロック速度、フロントサイドバスのタイミングに合致するために必要なレイテンシ時間、およびメモリ装置１０４の転送速度を始めとする多くの要素に基づいて決定することができる。特定のレイテンシ時間グループに割り当てられるメモリ装置１０４の数は、アプリケーションに基づき、必要に応じて設定することができる。かくして、次の式、
Ｌ１<ＬＧ<Ｌ２  （１）
が満たされる場合には、グループレベライゼーションを用いることにより、レイテンシ時間ＬＧを有するグローバルレベライゼーションと比較して、潜在的な性能の改善が得られる。
【００２０】
上記の実施形態が２つのレイテンシ時間グループを有するのに対して、他の実施形態では、３以上のレイテンシ時間グループが用いられる。
【００２１】
図３は、グループレベライゼーションで用いるメモリ装置１０４のブロック図である。メモリ装置１０４には、一般に、メモリアレイ３０２に結合されたコマンドインターフェース１０８が含まれる。コマンドインターフェース１０８には、メモリコントローラ２０２から受信された信号を処理するための、およびメモリアレイ３０２にメモリアクセスコマンド（たとえば、読み出し、書き込み）を供給するためのメモリアクセス制御部３０４が含まれる。メモリ装置１０４には、入力および出力データパス３０８および３１０が含まれる。出力データパス３１０は、プログラマブル遅延装置１１０に結合され、遅延装置１１０は、メモリアレイ３０２から検索したデータを、レジスタ３０６に格納された遅延値に従って遅延させる。遅延値（クロックサイクルで測定できる）は、図４に関連して説明するように、メモリコントローラ２０２が送るレイテンシ時間制御信号によって決定される。
【００２２】
図４は、グループレベライゼーションで用いるメモリコントローラ２０２の一実施形態のブロック図である。いくつかの実施形態において、メモリコントローラ２０２には、フロントサイドバスインターフェース４０２（たとえば、データプロセッサまたはＣＰＵとの通信を取り扱うための）、グラフィックインターフェース４０４（たとえばＡＧＰインターフェース）、Ｉ／Ｏインターフェース４０８、調停ユニット４０６、コントローラロジック４１０、メモリ４１２、および高速メモリインターフェース１０６が含まれる。いくつかの実施形態では、これらの構成要素の１つまたは複数が、コントローラには含まれない（たとえば、フロントサイドバスインターフェースは、コントローラ２０２がＣＰＵと一体化されているインプリメンテーションでは省略してもよい）。コントローラロジック４１０は、メモリ４１２に結合されるが、メモリ４１２には、グループ表４１４、最後のグループ４１６、初期化コード４１８、およびグループレベライゼーションコード４２０が含まれる。図４が、メモリコントローラの一特定実施形態を表わすことに留意されたい。開示されるグループレベライゼーション技術は、多くのタイプのメモリコントローラ（たとえば、インテル（Ｉｎｔｅｌ）プロセッサ、ＡＭＤプロセッサ、ＧＰＵ、ネットワークプロセッサ等と共に用いられるメモリコントローラ）を用いて利用することができる。いくつかの実施形態において、初期化コード４１８およびグループレベライゼーションコード４２０は、ＢＩＯＳ  ＥＰＲＯＭに格納されるが、このＢＩＯＳ  ＥＰＲＯＭは、バスまたは他の相互接続構造を介してメモリコントローラ２０２に結合される別個のチップとすることができる。
【００２３】
メモリコントローラ２０２の初期化中に、初期化コード４１８は、コントローラロジック４１０によって実行される。初期化コードは、メモリ装置をレイテンシ時間グループに割り当てる役割、したがって、グループ表４１４のエントリ部に記入する役割を担う。グループ表４１４のフォーマットおよび内容は、以下でより詳細に論じる。いくつかの実施形態において、グループ表４１４は、静的表ではなく、システムが起動されるたびに動的に作成され、システムにおける変更（たとえば、メモリが追加されたかまたは除去されたかも知れない）を明らかにする。他の実施形態において、グループ表４１４は、メモリアクセス頻度が変化するとともに、変更することができる。
【００２４】
また、初期化中に、グループレベライゼーションコード４２０は、各レイテンシ時間グループにおける全てのメモリ装置が確かに同じレイテンシ時間を有するように、実行される。システムが最初に起動されたとき、特定のレイテンシ時間グループにおける第１の装置へのアクセスレイテンシ時間は、グループにおける最後の装置へのアクセスレイテンシ時間より短くてもよい。グループレベライゼーションコード４２０は、同じグループにおける全てのメモリ装置にわたってレイテンシ時間を均一化する役割を担う。そうするために、グループレベライゼーションコード４２０は、グループにおけるメモリ装置のそれぞれにどれだけの遅延（必要ならば）を加えるかを決定して、メモリ装置が、グループにおける最大レイテンシ時間メモリ装置のレイテンシ時間と一致するようにする。最短レイテンシ時間を有する、各グループのメモリ装置は、グループレベライゼーションコードの制御下で、たとえば、レジスタ３０６（図３）にしかるべき値を格納することによって、自身の遅延装置１１０（図３）を構成してもよい。その後、このプロセスは、各レイテンシ時間グループに対して繰り返される。いくつかの実施形態において、グループレベライゼーションコードは、初期化コード４１８の一部として実行される。
【００２５】
動作中に、メモリ要求は、インターフェース４０２、４０４および４０８を介して受信され、キュー４２２に格納される。キュー４２２に格納されたメモリ要求は、従来の調停技術（たとえば、ラウンドロビン、優先権等）を用い、調停ユニット４０６によってメモリアクセス競合に対して検査される。調停ユニット４０６は、キュー４２２に格納された要求からメモリ要求を選択し、選択されたメモリ要求をコントローラロジック４１０へ転送する。その後、選択されたメモリ要求のＮ−ビットアドレス（たとえば２８ビット、３２ビットまたは６４ビットアドレス）が、特定のメモリ装置１０４の特定のバンク、行および列にアクセスするために復号される。サンプルアドレスマッピング（すなわちＮアドレスビットのマップ）を、以下の表Ｉに示す。
【００２６】
【表１】
2008500668.tif 000003
【００２７】
アドレスの装置ＩＤフィールドには、メモリシステム２００における特定のメモリ装置を示す値が含まれ、バンクフィールドには、装置ＩＤによって識別されたメモリ装置内のサブアレイを示す値が含まれ、行および列フィールドには、装置ＩＤおよびバンク値に関連するメモリバンクにおける特定の位置を識別する値が含まれる。しかしながら、次に説明するように、装置ＩＤの値は、メモリシステムにおける関連メモリ装置の物理的位置は特定しない。
【００２８】
コントローラロジック４１０は、（たとえばビットマスキング技術を用いて）メモリアドレスから装置ＩＤを抽出し、それをグループ表４１４への索引として用いる。グループ表は、それぞれのメモリ装置が割り当てられているレイテンシ時間グループを示す、各メモリ装置それぞれのためのエントリ部を有する。いくつかの実施形態において、グループ表４１４は、（図２に関した）以下の表ＩＩに示すフォーマットを有する。
【００２９】
【表２】
2008500668.tif 000004
【００３０】
グループ表４１４は、図６に関連して説明するプロセスを用いて、メモリアドレス（それらの装置ＩＤによって表わされる）と、メモリ装置１０４を割り当てられているレイテンシ時間グループＧ１．．．ＧＮとの間のマッピングを提供する。表ＩＩはまた、物理メモリ装置、すなわちそれらの装置ＩＤおよびグループ値がグループ表に格納されている物理メモリ装置の位置を示すのに対して、いくつかの実施形態（たとえば、ここでは、メモリ装置が、それらの装置ＩＤを用いてアドレス指定される）では、物理メモリ位置は、グループ表４１４に格納されない。他の実施形態において、グループ表４１４は、各メモリ装置の物理位置を格納する。
【００３１】
メモリアクセス要求のための物理メモリ装置およびレイテンシ時間グループが、グループ表４１４から一旦決定されると、連続するメモリアクセス要求が異なるグループに向けられている場合には、データバス衝突を回避するために、それらの要求を遅延させることが必要であり得る。連続する要求のレイテンシ時間グループが異なる場合、および特に、現在のメモリ要求が、前のメモリアクセス要求（最後のグループのデータ構造４１６に格納されたデータによって識別される）のレイテンシ時間グループより短いレイテンシ時間グループのメモリ装置におけるデータを読み出す要求である場合には、コントローラロジック４１０は、直前および現在のメモリアクセスコマンドによって返されるデータ間の衝突を回避するのに十分な時間量だけ、現在のメモリアクセスコマンドの伝送を遅延させる。より一般的には、現在および前のメモリアクセス要求のグループレイテンシ時間を用いて、前のメモリアクセス要求の伝送と現在のメモリアクセス要求の伝送との間の最小時間遅延を決定することができる。現在および前のメモリアクセス要求間の時間が、決定された最小時間遅延より短い場合には、現在のメモリアクセストランザクションの伝送は、少なくとも最小時間遅延が、前のメモリアクセス要求の伝送から経過するまで、遅延されなければならない。メモリアクセスが、要求が連続ではなく、十分な時間量だけ分離されている場合には、データバス衝突がないはずなので、後のメモリアクセス要求を遅延させる必要はない。
【００３２】
連続するメモリアクセス要求間の遅延は、多くの方法で実行可能であり、これらの方法には、メモリアクセスコマンドを送る前の、コントローラロジック４１０による、または指定された時間量（たとえば、指定されたコントローラクロックサイクル数、または指定されたメモリバスサイクル数）だけメモリアクセスコマンドの伝送を遅延させるために、メモリインターフェース１０６にタイミング回路をプログラムすることによる、定義済みの数の「ノーオペレーション」コマンドの実行などがある。
【００３３】
上記の技術を用いることにより、メモリ装置１０４−０、１０４−１および１０４−２にマップされたメモリアドレスへのメモリ要求は、グローバルレベライゼーションによって提供されるレイテンシ時間ＬＧより短いグループレイテンシ時間Ｌ１を有する。同様に、メモリ装置１０４−５から１０４−Ｎにマップされたメモリアドレスへのメモリ要求は、グローバルレベライゼーションによって提供されるレイテンシ時間ＬＧ以上のグループレイテンシ時間Ｌ２を有する。
【００３４】
図５は、グループレベライゼーションを用い、かつ容量の増加および／またはよりよいシグナルインテグリティのためのバッファを含むメモリシステム５００のブロック図である。メモリシステム５００には、一般に、直列接続バッファ５０４に結合されたメモリコントローラ５０２が含まれる。各バッファは、１つまたは複数のメモリ装置に結合され、これらのメモリ装置は、共同でメモリモジュールを形成する。いくつかの実施形態において、グループレベライゼーションは、各個別のメモリモジュールを、それ自身のレイテンシ時間グループに指定することによって実現することができる。他の実施形態において、バッファに最も近い、モジュール内のメモリ装置は、あるレイテンシ時間グループにあってもよく、一方で、バッファからさらに遠い、同じモジュールのメモリ装置は、別のレイテンシ時間グループにあってもよい。この構成では、異なるモジュールにおけるメモリ装置のサブセットが、同じレイテンシ時間グループにあることができる。あるいは、多数のメモリモジュールを、同じレイテンシ時間グループに割り当てることができる。
【００３５】
図６は、グループレベライゼーションを用いるメモリシステム２００で使用するメモリ装置にメモリアドレスを割り当てるプロセスの流れ図である。いくつかの実施形態において、メモリ装置にメモリアドレスを割り当てるプロセスは、メモリシステム２００の初期化中に生じる。このプロセスは、メモリ装置１０４をレイテンシ時間グループＧ１．．．ＧＮに割り当てること（ステップ６００）によって始まる。任意の数のレイテンシ時間グループＧ１．．．ＧＮが存在でき、各グループは、異なるレイテンシ時間を有する。次に、メモリシステム２００のメモリアドレス空間における最も頻繁にアクセスされる部分が、識別される（ステップ６０２）。これは、監視装置（たとえばメモリアクセス監視回路）、監視ソフトウェア、またはメモリアクセス要求を監視しかつメモリアドレス空間の様々な部分に対するメモリアクセス頻度を決定する、メモリコントローラにおける監視ロジックを用いて、システム開発中または実行中に行なわれる実験を介して達成できる。最終ステップには、メモリアドレス空間の識別された部分を、割り当てられたレイテンシ時間グループにおけるメモリ装置１０４へマップするステップ６０４が含まれる。これによって、最も頻繁にアクセスされるアドレス（または、より正確には、最も頻繁にアクセスされるアドレス領域）が、メモリコントローラ２０２に最も近いメモリ装置にマップされ、平均アクセスレイテンシ時間が短縮されるという結果になる。アクセス頻度は経時的に変化する可能性があることに留意されたい。したがって、従来のグローバルレベライゼーション技術より優れたグループレベライゼーション技術の利点は、メモリアクセス頻度の監視に基づいて、メモリアドレスマッピングを動的に変更する能力である。換言すれば、いくつかの実施形態において、ステップ６０２および６０４を適切な時に再実行して、最も頻繁にアクセスされるアドレス領域を、最小レイテンシ時間を有するレイテンシ時間グループへ、またはより一般的には、少なくとも１つの他のレイテンシ時間グループのレイテンシ時間より小さな関連レイテンシ時間を有するレイテンシ時間グループへ再マップするようにする。
【００３６】
図７は、グループレベライゼーションを用いるメモリシステム２００においてレイテンシ時間を制御するプロセスの流れ図である。いくつかの実施形態では、グループレベライゼーションを用いるメモリシステム２００においてレイテンシ時間を制御するプロセスは、メモリシステム２００の動作中に生じる。このプロセスは、メモリアクセス要求を復号してメモリ装置ＩＤを提供すること（ステップ７００）によって始まる。メモリシステム２００は、メモリ装置識別子に関連するレイテンシ時間グループを識別する（ステップ７０２）。いくつかの実施形態において、このステップは、表ＩＩに示す構造を有するグループ表４１４への索引としてメモリ装置ＩＤを用いることによって、達成される。一旦レイテンシ時間グループが識別される（ステップ７０２）と、それは、前のメモリアクセス要求に関連するレイテンシ時間グループおよび前のメモリアクセス要求の時間と比較される（ステップ７０４）。比較（ステップ７０４）に応じて、タイミング制御信号が生成される（ステップ７０６）。より具体的には、現在のメモリ要求が、現在の要求の直前のメモリ読み出し要求より短いレイテンシ時間グループのメモリ装置におけるデータを読み出す要求である場合には、タイミング制御信号は、コントローラロジックに、直前および現在のメモリアクセスコマンドによって返されるデータ間の衝突を回避するのに必要な時間量だけ、現在のメモリアクセスコマンドの伝送を遅延させる。
【００３７】
いくつかのシステムにとっては、データバス衝突を回避するために、多数の前のトランザクションとの比較が必要であり得る。メモリシステムの最大グループレイテンシ時間と最小グループレイテンシ時間との差が大きい（多数のメモリバスサイクル）場合には、ステップ７０４は、現在のメモリ要求のレイテンシ時間グループを、Ｋの前のメモリアクセスコマンドのそれぞれのレイテンシ時間グループと比較することが必要になり得るが、ここで、Ｋは、潜在的に現在のメモリアクセス要求と干渉する可能性がある前のメモリアクセス要求の最大数を表わす。さらに、現在のメモリ要求が遅延される量は、あるとすると、潜在的に衝突するメモリ要求が生じた時間と同様に、潜在的に衝突するメモリ要求間のレイテンシ時間における差の関数である。たとえば、メモリシステムの最大グループレイテンシ時間と最小グループレイテンシ時間との差が、８メモリバスサイクルである場合、および各読み出し要求が、メモリバスで４メモリバスサイクルを占める場合には、コントローラロジックは、データバス衝突が生じないことを保証するために、現在のレイテンシ時間グループを、多数の前のメモリアクセス要求と比較する必要があるであろう。現在のメモリアクセス要求が、前のメモリアクセスのいずれかと干渉すると分かった場合には、現在のメモリアクセス要求のためのメモリアクセスコマンドの伝送は、前および現在のメモリアクセス要求に応じて返されるデータの衝突を回避するのに必要な時間量（たとえば、ある数のコントローラクロックサイクルまたはある数のメモリバスサイクル）だけ、遅延される。
【００３８】
前述の記載は、説明のために、特定の実施形態に関連して記載した。しかしながら、上記の例証的な説明は、包括的であるようにも、本発明を開示された形態に正確に限定するようにも意図されていない。上記の教示に鑑みて、多くの変更および変形が可能である。これらの実施形態は、本発明の原理およびその実際的な適用例を最も良く説明し、それによって、他の当業者が、本発明、および意図された特定の用途に適した様々な変更を伴う様々な実施形態を最も良く利用できるようにするように選択され記載されたものである。
【図面の簡単な説明】
【００３９】
【図１Ａ】グローバルレベライゼーションを用いるメモリシステムのブロック図である。
【図１Ｂ】グローバルレベライゼーションを用いるメモリシステムのメモリマップである。
【図２Ａ】グループレベライゼーションを用いるメモリシステムのブロック図である。
【図２Ｂ】グループレベライゼーションを用いるメモリシステムのメモリマップである。
【図３】グループレベライゼーションで用いるメモリ装置のブロック図である。
【図４】グループレベライゼーションで用いるメモリコントローラのブロック図である。
【図５】グループレベライゼーションを用い、かつ容量増加用のバッファを含むメモリシステムのブロック図である。
【図６】グループレベライゼーションを用いるメモリシステムで用いられるメモリ装置に、メモリアドレスを割り当てるプロセスの流れ図である。
【図７】グループレベライゼーションを用いるメモリシステムにおいてレイテンシ時間を制御するプロセスの流れ図である。
【図１Ａ】
2008500668.tif 000005
【図１Ｂ】
2008500668.tif 000006
【図２Ａ】
2008500668.tif 000007
【図２Ｂ】
2008500668.tif 000008
【図３】
2008500668.tif 000009
【図４】
2008500668.tif 000010
【図５】
2008500668.tif 000011
【図６】
2008500668.tif 000012
【図７】
2008500668.tif 000013
【国際調査報告】
2008500668.tif 000014
2008500668.tif 000015