(57)【特許請求の範囲】
【請求項１】
プロセッサと、
前記プロセッサから、データを記憶する手段において受信されたプリフェッチコマンドに応答してメモリから検索されるデータを記憶する手段と、
を備え、
前記データを記憶する手段は、システムバスを介して前記プロセッサにアクセス可能であり、
前記データを記憶する手段は、前記データを記憶する手段が、前記データに関するリード要求を受信する前に次のプリフェッチコマンドを受信するとき、前記データを破棄するように構成され、
前記データを記憶する手段は、前記データを記憶する手段において受信された入力リード要求とは無関係に前記データを維持し、前記データに対応しないメモリページをアクセスするようにさらに構成される、システム。
【請求項２】
プロセッサと、
前記プロセッサから、データを記憶する手段において受信されたプリフェッチコマンドに応答してメモリから検索されたデータを記憶する手段と、
を具備し、
前記データを記憶する手段は、システムをバスを介して前記プロセッサにアクセス可能であり、
前記データを記憶する手段は、前記データを記憶する手段が前記データに関するリードコマンドを受信する前に次のプリフェッチコマンドを受信することに応答して前記データを破棄するように構成され、
前記データを記憶する手段は、バッファとメモリコントローラを含み、前記メモリコントローラは、タイプコードを含むサイドバンド信号を受信するように構成され、前記メモリコントローラは、前記タイプコードを用いて前記プリフェッチコマンドをリードコマンドと区別するように構成される、システム。
【請求項３】
前記メモリコントローラは前記システムバスの１つまたは複数のバイトレーンを識別する前記プロセッサから制御信号を受信することに応答して前記１つまたは複数のバイトレーンを介して前記プロセッサからデータを受信するように構成される、請求項２のシステム。
【請求項４】
バッファを含むメモリコントローラを備え、前記メモリコントローラは、プロセッサからデータに関するプリフェッチ要求を受信することに応答してメモリの１ページからバッファにデータを記憶するように構成され、前記メモリコントローラは、前記データに関するリード要求に応答して、前記バッファに記憶されたデータを前記プロセッサに送信するように構成され、前記メモリコントローラはさらに、前記メモリコントローラが前記バッファに記憶されたデータに関する前記リード要求を受信する前に次のプリフェッチ要求を受信するとき、前記バッファに記憶された前記データを破棄するように構成され、
前記メモリコントローラはさらに、前記バッファに記憶されたデータに関するリード要求を受信することなく第２のデータページに対する所定数のリード要求を受信することに応答して前記バッファに記憶されたデータを破棄するように構成される、システム。
【請求項５】
前記プロセッサと前記メモリコントローラとの間で命令とデータを通信するための時分割多重送信チャネルをさらに備え、前記時分割多重送信チャネルは複数のバイトレーンを備え、前記メモリコントローラは、オフッチプメモリに書かれるデータを送信するために使用される複数のバイトレーンの１つまたは複数を識別する制御信号を受信するように構成される、請求項４のシステム。
【請求項６】
前記メモリコントローラはさらに、サイドバンド信号を介して前記メモリコントローラにおいて受信されるタイプコードを用いて、前記プロセッサから受信された命令のタイプを識別するように構成され、前記タイプコードは前記命令がプリフェッチ命令またはリード命令であるか否かを示す、請求項５のシステム。
【請求項７】
前記メモリコントローラはシステムバスを介して前記プロセッサにアクセス可能であり、前記システムバスは、前記プロセッサから前記メモリコントローラへの第１のデータ及び命令を送信するための多重化された送信チャネルを具備し、さらに、前記メモリコントローラから前記プロセッサへ第２のデータ及び命令を送信するための受信チャネルを具備するように構成される、請求項４のシステム。
【請求項８】
前記プリフェッチ要求は第１のサイドバンド信号を介して送信され、前記リード要求は第２のサイドバンド信号を介して送信される、請求項４のシステム。
【請求項９】
前記プリフェッチ要求および前記リード要求はバスの送信チャネル上に時分割多重方法で送信される、請求項７の方法。
【請求項１０】
前記送信チャネルは複数のバイトレーンを備え、前記プリフェッチ要求および前記リード要求の少なくとも１つは、前記複数のバイトレーンのすべてより少ないバイトレーン上に送信され、前記第１の命令および前記第２の命令の少なくとも１つは、前記複数のバイトレーンのうちのどのバイトレーンを用いて情報を前記メモリコントローラに送信するかを示すための第１の制御を信号を含む、請求項９の方法。
【請求項１１】
前記第２の命令は、前記リードリクエストに応答して前記メモリアドレスから読まれるバイト数を前記メモリコントローラに示す第２の制御信号を含む、請求項９の方法。
【請求項１２】
メモリコントローラにデータを記憶することと、ここにおいて、前記データはプリフェッチコマンドに応答してメモリから検索される、
前記データに関するリードコマンドを受信する前に次のプリフェッチコマンドを受信することに応答して前記メモリコントローラからのデータを破棄することと、
前記メモリコントローラにおいてサイドバンド信号を受信することと、ここにおいて、前記サイドバンド信号はタイプコードを含み、前記タイプコードを用いて前記プリフェッチコマンドと前記リードコマンドを区別する、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この開示は一般にデジタルシステムに関し、特に処理システムにおいてバスを介してメモリプリフェッチコマンドを送信するための方法および装置に関する。
【背景技術】
【０００２】
集積回路はディスクリートデバイスで実現することが困難または不可能であった新しいアプリケーションを可能とすることにより電子産業に革命をもたらした。集積は数百万の電子部品から構成される複雑な回路を半導体材料の単一チップにパッケージ化することを可能にする。この結果、コンピューター、携帯電話、パーソナルデジタルアシスタンツ（ＰＤＡｓ）等のような強力な計算装置がハンドヘルド装置に縮小されるかもしれない。
【０００３】
集積回路は今日、汎用のおよび特定のアプリケーションプロセッサーのような高度な回路を実施するために広範囲に使用されている。典型的な集積されたプロセッサーは、システムメモリと共に中央処理ユニット（ＣＰＵ）を含んでいてもよい。高帯域幅システムを使用して２つの間の通信をサポートしてもよい。バスは、典型的には、集積回路上の部品間の共有チャネルまたは経路である。さらに、オンチップ(on-chip）メモリコントローラーの制御の下で低い待ち時間の外部メモリをアクセスするために使用されてもよい外部バスが存在してもよい。
【０００４】
外部メモリは一般的にページにフォーマットされる。ページは通常メモリの行に関連する。ほとんどのアプリケーションにおいて、メモリコントローラーは、一度に限られた数のページしか開くことができない。「開いたページ」は、メモリがメモリの行を指しており、データをリードするためにメモリコントローラーから列アクセスコマンドのみを要求することを意味する。メモリの開かれていないページをアクセスするために、メモリコントローラーは、メモリに行アクセスコマンドを提示して、列アクセスコマンドを提示する前にポインタを移動してデータを読まなければならない。その結果、メモリ内のページを閉じて新しいページを開くために待ち時間ペナルティがある。
【０００５】
多くのＣＰＵ実施は、典型的に外部メモリデバイスで遭遇する高い待ち時間を補償するためのプリフェッチ機構を含む。これらのＣＰＵｓは、命令ストリームを評価し、待ち時間を低減し、ＣＰＵ性能を改良するために将来必要となるかもしれないオフッチップメモリデバイスからページのための要求を行うように構成されていてもよい。しかしながら、これらのプリフェッチ要求は、命令ストリーム内の分岐並びにＣＰＵインタラプトによりしばしば正しくない可能性がある。さらに、バス上でプリフェッチ要求が受理されると、データは外部メモリから読まれ、たとえデータがもはや必要ないかもしれなくてもバスを介してＣＰＵに返送される。これは、推測的なデータがバスを介してＣＰＵに転送されるので、バス上の帯域幅の低下につながり、外部メモリデバイスからの次のデータへのＣＰＵアクセスを遅らせる結果となる。
【０００６】
ＣＰＵを外部メモリデバイスにインターフェースするためのプリフェッチコマンドの使用は、長年実行可能な解決策を提供してきた。しかしながら、ＣＰＵの演算速度は指数関数的に増加し続けるので、典型的に外部メモリデバイスに関連する待ち時間を低減することがますます望ましくなってきている。
【発明の概要】
【０００７】
この発明の１つの観点において、メモリからデータを検索する方法は、データが必要とされるであろうメモリのアドレスを予測することと、メモリの予測されたアドレスにおけるデータのためのプリフェッチコマンドをメモリコントローラーに送信することと、メモリの予測されたアドレスにおけるデータのためのリード要求をメモリコントローラーに送信することと、リード要求に応答してメモリの予測されたアドレスにおけるデータを受信することとを含む。
【０００８】
この発明の他の観点において、メモリからデータを検索する方法は、データが必要とされるであろうメモリの開かれていないページからアドレスを予測することと、メモリの予測されたアドレスにおけるデータのためのプリフェッチコマンドをメモリコントローラーに送信することと、予測されたアドレスにおけるデータをプリフェッチバッファに読み込むことと、プリフェッチバッファからのデータを破棄することとを含む。
【０００９】
この発明のさらに他の観点において、処理システムは、メモリと、メモリコントローラーと、およびデータが必要とされるであろうメモリのアドレスを予測し、メモリの予測されたアドレスにおけるデータのためのプリフェッチコマンドをメモリコントローラーに送信し、データが必要ならメモリの予測されたアドレスにおけるデータのためのリード要求をメモリコントローラーに送信するように構成されたプロセッサーとを含み、メモリコントローラーはリード要求に応答してメモリの予測されたアドレスにおけるデータをプロセッサーに配信するようにさらに構成される。
【００１０】
この発明のさらなる観点において、処理システムは、メモリと、メモリコントローラーと、データが必要とされるであろうメモリのアドレスを予測する手段と、メモリの予測されたアドレスにおけるデータのためのプリフェッチコマンドをメモリコントローラーに送信する手段と、データが必要ならメモリの予測されたアドレスにおけるデータのためのリード要求をメモリコントローラーに送信する手段と、データを受信するための受信手段とを含み、メモリコントローラーはさらにメモリの予測されたアドレスにおけるデータをリード要求に応答して受信手段に配信するように構成される。
【００１１】
この発明の他の実施形態は、以下の詳細な記載から当業者に容易に明白になるであろう。この発明の種々の実施形態は、実例として示され記載される。実現されるように、この発明は、すべてこの発明の精神と範囲を逸脱せずに、他の実施形態および異なる実施形態が可能であり、そのいくつかの詳細は種々の他の観点において変更可能である。従って、図面と詳細な記述は事実上実例として見なされ、制限するものとして見なされない。
【図面の簡単な説明】
【００１２】
【図１】図１は外部メモリを有した集積回路の一例を図解する概念ブロック図である。
【図２】図２はオッフチップメモリを有した集積回路の他の例を図解する概念ブロック図である。
【図３】図３はＳＤＲＡＭからのリード動作の待ち時間を低減するためにプリフェッチコマンドの使用を図解するタイミング図である。
【図４】図４はＮＡＮＤフラッシュメモリからのリード動作の待ち時間を低減するためにプリフェッチコマンドの使用を図解するタイミング図である。
【発明を実施するための形態】
【００１３】
添付図面において、この発明の観点は一例として図解され制限する目的ではない。
【００１４】
添付された図面に関連して以下に記載された詳細な説明は、この発明の種々の実施形態の記述として意図されており、この発明が実施されてもよい唯一の実施形態を表すことを意図していない。詳細な説明は、この発明を完全に理解することを提供する目的で特定の詳細を含む。しかしながら、この発明はこれらの特定の詳細なしに実施されてもよいことは当業者に明白であろう。場合によっては、この発明の概念をあいまいにすることを避けるためによく知られた構造および部品がブロック図のフォームで示される。
【００１５】
外部メモリを有した集積回路のいくつかの実施形態は、種々の発明概念を例証するために記載されるであろう。ここに記載される少なくとも１つの実施形態において、チップ上に集積されたＣＰＵは、そのような構成を用いた場合に典型的に遭遇する待ち時間を低減する傾向がある方法でメモリコントローラーを介して外部メモリとインターフェースしてもよい。当業者は、これらの発明概念がそのような構成に限定されるものではなく、バスマスタリングデバイス(bus mastering device)がメモリと通信する任意の処理システムに適用されてもよいことを容易に理解するであろう。一例として、ＣＰＵはオンチップ(on-chip）メモリと通信するためにこの開示全体にわたって記載された種々の発明概念を使用してもよい。あるいは、ディスクリートプロセッサー、または他のバスマスタリングデバイスを用いてディスクリートメモリと通信してもよい。
【００１６】
図１は外部メモリを有した集積回路１０２を図解する概念ブロック図である。外部メモリは、一例として、メモリ、レジスタ、ブリッジ、または情報を検索し記憶することができる任意の他のデバイスを含む、複数のページフォーマットを有する任意の記憶装置で実施されてもよい。図１に示される実施形態において、外部メモリは、同期ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）１０４およびＮＡＮＤフラッシュメモリ１０６を含んでいてもよい。ＣＰＵ１０８はＳＤＲＡＭメモリコントローラー１１０を介してＳＤＲＡＭ１０４をアクセスしてもよいし、ＮＡＮＤフラッシュコントローラー１１２を介してＮＡＮＤフラッシュメモリ１０６をアクセスしてもよい。ＣＰＵ１０８は一例として、マイクロプロセッサー、デジタルシグナルプロセッサー（ＤＳＰ）、プログラマブルロジックコンポーネント、ゲートとトランジスターロジックの組み合わせ、または任意の他の処理コンポーネントを含む任意の処理コンポーネントであってよい。
【００１７】
集積回路１０２は、ＣＰＵ１０８をＳＤＲＡＭコントローラー１１０およびＮＡＮＤフラッシュコントローラー１１２にインターフェースするためのシステムバス１１４を含んでいてもよい。また、システムバス１１４は、種々の発明概念をあいまいにするのを避けるために省略された種々の他の集積コンポーネント間に通信を提供するために使用されてもよい。システムバス１１４は、特定のアプリケーションおよび全体の設計制約に応じて種々の方法で構成されてもよい。一例として、システムバス１１４は、共有バス、またはポイントツーポイント交換結合として実施されてもよい。
【００１８】
処理システムの他の実施形態において、バスマスタリングデバイスを用いてプリフェッチコマンドを発生しメモリ内の開かれていないページをアクセスしてもよい。一例として、図１に示されるＣＰＵ１０８は、システムバス１１４を介してプリフェッチコマンドをＳＤＲＡＭメモリコントローラー１１０に送信してもよい。プリフェッチコマンドは、ＣＰＵ１０８によるデータの将来の要求を予想してＳＤＲＡＭ１０４内のメモリのページをアクセスするためにＳＤＲＡＭメモリコントローラー１１０により使用されてもよいアドレスを含んでいてもよい。ＳＤＲＡＭメモリコントローラー１１０は、ＳＤＲＡＭ１０４内のメモリのページを単に開いてもよいか、あるいはページからのデータの一部またはすべてをプリフェッチバッファに読み込んでもよい。最も簡単な構成において、ＳＤＲＡＭメモリコントローラー１１０は単にＳＤＲＡＭ１０４内のメモリのページを開き、ＣＰＵ１０８は、ページがすでに開いており、それゆえＳＤＲＡＭメモリコントローラー１１０から行アクセスコマンドを必要としないという事実により、より低い待ち時間という利益を得る。代わりの構成において、ＳＤＲＡＭメモリコントローラー１１０は、ＳＤＲＡＭメモリコントローラー１１０がページからデータをリードしそのデータをプリフェッチバッファに記憶するであろうプリフェッチバッファを実施するということも考えられる。ページから読まれたデータ量は、あらかじめ決めておいてもよい。あるいは、プリフェッチコマンドを用いてブロードキャストしてもよい。ＣＰＵ１０８がデータをリードする準備ができているとき、ＣＰＵ１０８は、ＳＤＲＡＭ１０４からリードするよりもはるかに低い待ち時間でプリフェッチバッファからデータを単に読む。ＣＰＵ１０８がデータを必要としないなら、ＣＰＵを介してＳＤＲＡＭ１１４に送信されることなく、ＳＤＲＡＭメモリコントローラー１１０により破棄されてもよい。ＳＤＲＡＭメモリコントローラー１１０は、ＣＰＵ１０８が任意の数のアルゴリズムを用いてデータを必要としないことを決定してもよい。一例として、ＳＤＲＡＭメモリコントローラー１１０は、所定時間内にまたは異なるページに対して所定数のリード要求内にＣＰＵ１０８からリード要求を受信しないなら、データを破棄してもよい。あるいは、ＳＤＲＡＭメモリコントローラー１１０は、プリフェッチバッファ内のリード要求を受信する前に次のプリフェッチコマンドを受信するなら、データを破棄してもよい。
【００１９】
同様の方法で、図１に示されるＣＰＵ１０８は、プリフェッチコマンドをシステムバス１１４を介してＮＡＮＤフラッシュコントローラー１１２に送信することによりＮＡＮＤフラッシュメモリ１０６をアクセスしてもよい。プリフェッチコマンドは、ＮＡＮＤフラッシュメモリ１０６内のメモリの開かれていないページをアクセスするためにＮＡＮＤフラッシュコントローラー１１２により使用されてもよいアドレスを含んでいてもよい。ＮＡＮＤフラッシュコントローラー１１２は、次のリード要求のためにより低い待ち時間の利益をＣＰＵ１０８に与えるためにＮＡＮＤフラッシュメモリ１０６内のメモリのページを単にバッファしてもよい。あるいは、ＮＡＮＤフラッシュコントローラー１１２は、ＣＰＵ１０８によるデータのための将来の要求を予想してＮＡＮＤフラッシュメモリページバッファからのデータをプリフェッチバッファに読み込むことができる。ＣＰＵ１０８がデータを必要としないなら、データはＮＡＮＤフラッシュコントローラー１１２により破棄されてもよい。ＮＡＮＤフラッシュコントローラー１１２は、ＳＤＲＡＭコントローラーに関連して上述したと同じ方法で、または任意の他の手段によりデータを必要としないことを決定する。
【００２０】
今まで記載した実施形態において、メモリコントローラーは、それがＳＤＲＡＭメモリコントローラー１１０であろうと、ＮＡＮＤフラッシュコントローラー１１２であろうと、または任意の他のメモリコントローラーであろうと、プリフェッチコマンドに応答してデータをバスマスタリングデバイスに送信しない。データは、プリフェッチコマンドに含まれていた同じアドレスに対してバスマスタリングデバイスによる次のリード要求に応答してシステムバスを介して送信されるに過ぎない。さらに、プリフェッチコマンドに応答してメモリコントローラーがデータをプリフェッチバッファに読み込む、またはメモリ内のページを開くという要件はない。ある実施形態において、プリフェッチコマンドは、あるアドレスが将来要求されるであろうおよびメモリコントローラーは、それがそうしなければならないがそうすることを要求されていない転送の待ち時間を最小にするためにすることができる何かがあるという通知をバスマスタリングデバイスから提供するに過ぎないかもしれない。
【００２１】
集積回路１０２の一実施形態において、システムバス１１４は、アドレスチャネル、ライトチャネルおよびリードチャネルで実施されてもよい。アドレスチャネルは、ＣＰＵ１０８により使用され適切なメモリコントローラーを介して外部メモリ内の特定のロケーションにアクセスしてもよい。サイドバンドシグナリングを使用して、プリフェッチコマンドをサポートし、ならびにとりわけＣＰＵ１０８がリード動作またはライト動作を要求しているかどうかを示す他の制御信号をサポートしてもよい。ライトチャネルは、適切なメモリコントローラーを介してデータを外部メモリに書き込むために使用されてもよく、リードチャネルは、適切なメモリコントローラーを介して外部メモリからデータをリードするために使用されてもよい。このバス構造は技術的によく知られている。
【００２２】
集積回路の他の実施形態において、バス構造は、アドレスチャネルを消去するために構成されてもよい。この概念は図２に図解される。アドレスチャネルは、書き込みチャネルを「送信チャネル」２０２として再定義することにより削除されてもよい。送信チャネル２０２は、時分割多重方法でＣＰＵ１０８と適切なメモリコントローラーとの間の送信情報のための包括的な媒体として使用されてもよい。この情報は、アドレス情報、制御信号、および外部メモリに書かれるデータを含んでいてもよい。制御信号の一例は、１つのリード動作またはライト動作で外部メモリから読まれるまたは外部メモリに書かれるバイトの数を示す信号である。制御信号の他の例は、外部メモリに書かれるデータを送信するために送信チャネルのどのバイトレーンが使用されるかを示す信号である。一例として、３２ビット送信チャネル２０２に送信される２バイトのデータは４バイトレーンのうちの２バイトレーンを必要とするであろう。この制御信号は、送信チャネル２０２上の２バイトレーンのどちらがデータを送信するために使用されるかを適切なメモリコントローラーに示すために使用されてもよい。
【００２３】
図２に関連して記載された種々の概念は、任意の数のプロトコルを用いて実施されてもよい。後に続く詳細な説明において、バスプロトコルの例は提示されるであろう。このバスプロトコルは、そのような発明概念が任意の適切なプロトコルを用いて使用されてもよいという理解と共に、処理システムの発明概念を説明するために提示されている。送信チャネルのための基本的なシグナリングプロトコルは以下の表１に示される。当業者は、ここに記載されるバス構造の実際の実施においてこのプロトコルを容易に変更したりおよび／または容易に追加したりすることができるであろう。
【表１】
0005231612.tif 000002
【００２４】
同じシグナリングプロトコルは、以下の表２に示すように受信チャネルに対して使用されてもよい。
【表２】
0005231612.tif 000003
【００２５】
このシグナリングプロトコル内で使用されるタイプフィールドの定義は表３に示される。
【表３】
0005231612.tif 000004
【００２６】
このシグナリングプロトコルにおける有効信号および転送ＡｃＫ信号の定義は表４に示される。
【表４】
0005231612.tif 000005
【００２７】
図３は、ＳＤＲＡＭからのリード動作の待ち時間を低減するためにどのようにプリフェッチコマンドを使用することができるかの例を図解するタイミング図である。この発明の概念をあいまいにすることを避けるために、図３に図解される例はリード動作のみに限られている。さらに、これらのリード動作のための制御信号は示されないであろう。制御信号は、単にバスの幅を増加させることによりおよび制御信号を有するバイトレーンを識別するためにシグナリングを供給することにより任意の与えられたリード動作のためのアドレス情報に並列に送信チャネルを介して送信されてもよいことが当業者により理解されるであろう。
【００２８】
この例において、ＳＤＲＡＭ内の開かれていないページからデータをアクセスするための待ち時間は７クロックサイクルであり、一度開いた同じページからデータをアクセスする待ち時間は、４クロックサイクルである。この例における最初の２つのリード動作はＳＤＲＡＭ内の同じページからのものであり、第３のリード動作はＳＤＲＡＭ内の異なるページからのものである。プリフェッチコマンドを利用することにより、第３のリード動作の待ち時間は、７クロックサイクルから４クロックサイクルに低減されてもよい。
【００２９】
システムクロック３０２は、ＣＰＵとＳＤＲＡＭとの間の通信を同期させるために使用されてもよい。システムクロック３０２は２１のクロックサイクルを用いて示され、各サイクルは説明の容易性のために連続的に番号がつけられている。
【００３０】
メモリの閉じられたページ内のアドレスからの最初のリード動作は、第１のクロックサイクル３０１期間中にＣＰＵにより開始されてもよい。これは、有効信号３０４をアサートし、タイプフィールドを適切に設定し、最初のリード動作のためのアドレスＡ０を送信チャネル３０８上のＳＤＲＡＭコントローラーに送信することにより達成されてもよい。ＣＰＵがアドレスＡ０においてＳＤＲＡＭからリード動作を要求していることを決定するために、タイプフィールド３０６がＳＤＲＡＭにより使用されてもよい。最初のクロックサイクル３０１の終わりにおいて、ＣＰＵは、ＳＤＲＡＭコントローラーにより転送Ａｃｋ信号３１０のアサーションを検出し、送信が受信され受理されたことを決定する。
【００３１】
最初のリード動作要求に応答して、ＳＤＲＡＭコントローラーは、ＳＤＲＡＭ内の適切なページを開いてもよく、アドレスＡ０からデータをリードし始める。ＳＤＲＡＭの待ち時間により、データが利用される前に７つのクロックサイクルが経験されるかもしれない。データが利用可能になると、ＳＤＲＡＭコントローラーは有効信号３１２をアサートしてもよく、受信チャネル３１６上のデータ送信をしらせるためにタイプフィールド３１４を設定してもよい。この例におけるデータ送信は、ＣＰＵにより要求されるデータ量および受信チャネル３１６の幅を供給するために４クロックサイクルを必要とする。従って、データは、８番目のクロックサイクル３１５、９番目のクロックサイクル３１７、１０番目のクロックサイクル３１９および１１番目のクロックサイクル３２１の期間に受信チャネル３１６を介してＳＤＲＡＭコントローラーからＣＰＵに送信されてもよい。これらのクロックサイクルの各々の終わりで、ＳＤＲＡＭコントローラーはＣＰＵにより転送Ａｃｋ信号３１８のアサーションを検出し、データ送信が受信され受理されたと決定する。
【００３２】
８番目のクロックサイクル３１５の期間に、第１のリード動作のためのアドレスＡ０を含むＳＤＲＡＭの同じページからＣＰＵにより第２のリード動作が要求されてもよい。これは、有効信号３０４をアサートし、タイプフィールド３０６を適切に設定し、第２のリード動作のためのアドレスＡ１を送信チャネル３０８上のＳＤＲＡＭコントローラーに送信することにより達成されてもよい。タイプフィールド３０６は、ＣＰＵがアドレスＡ１においてＳＤＲＡＭからリード動作を要求していることを決定するためにＳＤＲＡＭコントローラーにより使用されてもよい。８番目のクロックサイクル３１５の終わりにおいて、ＣＰＵは、ＳＤＲＡＭコントローラーにより転送Ａｃｋ信号３１０のアサーションを検出し、送信が受信され受理されたことを決定する。
【００３３】
ＳＤＲＡＭ内のページはすでに開かれているので、ＳＤＲＡＭの待ち時間は４サイクルに低減され、１２番目のクロックサイクル３２３の始まりで送信のために利用可能になる。データが利用可能になると、ＳＤＲＡＭコントローラーは有効信号３１２をアサートしてもよく、受信チャネル３１６へのデータ送信を知らせるためにタイプフィールド３１４を設定する。また、この例におけるデータ送信は、要求されるデータ量および受信チャネル３１６の幅のために４クロックサイクルを必要とし、それゆえ、１２番目のクロックサイクル３２３、１３番目のクロックサイクル３２５、１４番目のクロックサイクル３２７および１５番目のクロックサイクル３２９の期間に受信チャネル３１６を介して送信されてもよい。これらのクロックサイクルの各々の終わりにおいて、ＳＤＲＡＭコントローラーはＣＰＵによる転送Ａｃｋ信号３１８のアサーションを検出し、データ送信が受信され受理されたと決定する。
【００３４】
８番目のクロックサイクル３１５の期間に、ＣＰＵはまたＳＤＲＡＭ内の異なるページからアドレスＡ２からデータを必要とすることを予測し、その結果、９番目のクロックサイクル３１７において送信チャネル３０８を介してプリフェッチコマンドを送信してもよい。これは、有効信号３０４をアサートし、プリフェッチコマンドを示すようにタイプフィールド３０６を設定し、アドレスＡ２を送信チャネル３０８上のＳＤＲＡＭコントローラーに送信することにより達成されてもよい。プリフェッチコマンドに応答して、ＳＤＲＡＭコントローラーは、第１のリード動作のために受信チャネル３１６を介したＣＰＵへのデータの送信と並列にＳＤＲＡＭ内のメモリの新しいページを開くことを開始してもよい。９番目のクロックサイクル３１７の終わりで、ＣＰＵは、ＳＤＲＡＭコントローラーにより転送Ａｃｋ信号３１０のアサーションを検出し、プリフェッチコマンドが受信され受理されたことを決定する。
【００３５】
１４番目のクロックサイクル３２７の期間中に、ＣＰＵは、ＳＤＲＡＭ内のアドレスＡ２からデータを確かに必要とすると決定し、従って、このデータのためのリード要求を送信する。これは、有効信号３０４をアサートし、タイプフィールド３０６を適切に設定し、第３のリード動作のためのアドレスＡ２を送信チャネル３０８上のＳＤＲＡＭコントローラーに送信することにより達成されてもよい。ＣＰＵがアドレスＡ２においてＳＤＲＡＭからのリード動作を要求していることを決定するためにＳＤＲＡＭコントローラーによりタイプフィールド３０６が使用されてもよい。１４番目のクロックサイクル３２７の終わりにおいて、ＣＰＵは、ＳＤＲＡＭコントローラーによる転送Ａｃｋ信号３１０のアサーションを検出し、送信が受信され、受理されたことを決定する。
【００３６】
ＳＤＲＡＭコントローラーはアドレスＡ２を含むＳＤＲＡＭ内のメモリのページをすでに開いたので、ＳＤＲＡＭの待ち時間は４サイクルに低減されてもよく、データは１８番目のクロックサイクル３３５の始めで送信のために利用可能になる。データが利用可能になると、ＳＤＲＡＭコントローラーは、有効信号３１２をアサートしてもよく、受信チャネル３１６上のデータ送信を知らせるためにタイプフィールド３１４を設定してもよい。この例におけるデータ送信は、要求されるデータ量と受信チャネル３１６の幅のために４クロックサイクルを必要とする。それゆえ、データ送信は、１８番目のクロックサイクル３３５、１９番目のクロックサイクル３３７、２０番目のクロックサイクル３３９および２１番目のクロックサイクル３４１の期間に受信チャネル３１６を介して送信されてもよい。これらのクロックサイクルの各々の終わりで、ＳＤＲＡＭコントローラーは、ＣＰＵによる転送Ａｃｋ信号３１８のアサーションを検出し、データ送信が受信され、受理されたことを決定する。
【００３７】
図４は、ＮＡＮＤフラッシュメモリからのリード動作の待ち時間を低減するために、どのようにしてプリフェッチコマンドを使用することができるかの一例を図解するタイミング図である。ＳＤＲＡＭに関連してプリフェッチコマンドを記載するために使用される方法に類似した方法において、図４に示される例はリード動作のみに限定されており、これらのリード動作のための制御信号は示されない。単にバスの幅を増加させ、および制御信号を有するバイトレーンを識別するためにシグナリングを供給することにより任意の与えられたリード動作のためのアドレス情報と並列に送信チャネルを介して制御信号が送信されてもよいことは当業者により理解されるであろう。
【００３８】
この例において、ＣＰＵは、ｎサイクルの待ち時間を有するＮＡＮＤフラッシュメモリからデータをリードするであろう。この待ち時間は、ＮＡＮＤフラッシュメモリからフルページのデータ、典型的には５１２バイトを、ＮＡＮＤフラッシュコントローラー内に含まれる大きなリードバッファに読み込むのに必要な時間に等しい。ほとんどの場合、最初の待ち時間は数百のクロックサイクルの可能性がある。閉じたページからのデータのためにＣＰＵが単にＮＡＮＤフラッシュコントローラーにリード動作を要求したなら、ＣＰＵは、データの新しいページがＮＡＮＤフラッシュコントローラーにロードされるのを待つ間、引き止められてもよい。プリフェッチコマンドを発行することにより、ＮＡＮＤフラッシュコントローラーは、ＣＰＵが他の命令を継続して実行している間に、データをリードバッファに読み込むことができる。さらに、受信チャネルは、他のリード動作のためにＣＰＵへのデータ送信に対して受信チャネルが利用可能である。これは、受信チャネルの利用を著しく改善する傾向がある。
【００３９】
最初のクロックサイクル３０１の期間に、ＣＰＵは、ＮＡＮＤフラッシュメモリ内のアドレスＡ０からデータを必要とするであろうことを予測し、その結果、送信チャネル３０８を介してプリフェッチコマンドを送信してもよい。これは、有効信号３０４をアサートし、プリフェッチコマンドを示すためにタイプフィールド３０６を設定し、プリフェッチコマンドのためのアドレスＡ０を送信チャネル３０８上のＮＡＮＤフラッシュコントローラーに送信することにより達成されてもよい。プリフェッチコマンドに応答して、ＮＡＮＤフラッシュコントローラーは、ＮＡＮＤフラッシュメモリからのメモリの新しいページを、ＮＡＮＤフラッシュコントローラー内のリードバッファにロードし始めてもよい。最初のクロックサイクル３０１の終わりに、ＣＰＵは、ＮＡＮＤフラッシュコントローラーによる転送Ａｃｋ信号３１０のアサーションを検出し、プリフェッチコマンドが受信され受理されたことを決定する。
【００４０】
ほとんどの場合、ＮＡＮＤフラッシュメモリからの新しいページをＮＡＮＤフラッシュコントローラーにロードするプロセスは完了するのに多くのサイクルがかかる。この期間中に、ＣＰＵは、ＮＡＮＤフラッシュメモリがメモリの新しいページをＮＡＮＤフラッシュコントローラーにロードするのを待つ間に、外部キャッシュまたは外部メモリから命令をフェッチし実行し続けてもよい。クロックサイクルｎ  ４０１において、ｎは、ＮＡＮＤフラッシュコントローラー内のリードバッファにロードするのに必要な時間以上であり、ＣＰＵは、有効信号３０４をアサートし、タイプフィールド３０６を適切に設定し、アドレスＡ０を送信チャネル３０８上のＮＡＮＤフラッシュコントローラーに送信することによりアドレスＡ０からリード動作を要求してもよい。ｎクロックサイクル４０１の終わりにおいて、ＣＰＵは、ＮＡＮＤフラッシュコントローラーによる転送Ａｃｋ信号３１０のアサーションを検出し、送信が受信され、受理されたと決定する。
【００４１】
ＮＡＮＤフラッシュメモリ内のリードバッファには、ＮＡＮＤフラッシュコントローラーからのメモリのページがすでにロードされているので、待ち時間はＣＰＵが受信チャネルを介してＮＡＮＤフラッシュコントローラー内のバッファをリードするのに必要な時間に低減されてもよい。この例において、リード待ち時間は、４クロックサイクルに低減される。その結果、ＣＰＵがリード動作を要求した後、データは４クロックサイクル利用可能になってもよい。データ利用可能になると、ＮＡＮＤフラッシュコントローラーは、有効信号３１２をアサートし、受信チャネル３１６上のデータ送信を知らせるためにタイプフィールド３１４を設定してもよい。この例におけるデータ送信は、４クロックサイクルで受信チャネル３１６を介して送信される。これらのクロックサイクルの各々の終わりで、ＮＡＮＤフラッシュコントローラーは、ＣＰＵによる転送Ａｃｋ信号３１８のアサーションを検出し、データ送信が受信され、受理されたと決定する。
【００４２】
ここに開示されている実施形態に関連して説明された多様な例示的な論理ブロック、モジュール及び回路は、汎用プロセッサー、デジタルシグナルプロセッサー（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、または他のプログラマブルロジックデバイス、ディスクリートゲートまたはトランジスターロジック、ディスクリートハードウェアコンポーネント、あるいはここに説明される機能を実行するように設計されたその任意の組み合わせをもって実施または実行されてよい。汎用プロセッサーは、マイクロプロセッサーであってよいが、代替策ではプロセッサーは、任意の従来のプロセッサー、コントローラー、マイクロコントローラーまたは状態機械であってよい。また、プロセッサーは、計算コンポーネントの組み合わせ、例えば、ＤＳＰとマイクロプロセッサーの組み合わせ、複数のプロセッサー、ＤＳＰコアと連結する１つ以上のマイクロプロセッサー、または任意の他のそのような構成として、実施されてもよい。ここに開示された実施形態に関連して説明された方法またはアルゴリズムは、ハードウェア内、プロセッサーによって実行されるソフトウェアモジュール内、あるいは2つの組み合わせの中で直接的に具現化されてもよい。ソフトウェアモジュールはRAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、取り外し可能ディスク、CD-ROM、または技術的に既知である任意の他の形式の記憶媒体に常駐してよい。記憶媒体は、プロセッサーが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるようにプロセッサーに接続されてもよい。別の方法では、記憶媒体はプロセッサーに一体化されてもよい。
【００４３】
開示された実施形態の上述の記載は、当業者がこの発明を製作または使用することができるように提供される。これらの実施形態に対する種々の変更は、当業者に容易に明白であり、ここに定義される包括的原理は、この発明の精神または範囲を逸脱することなく他の実施形態に適用されてもよい。従って、この発明はここに示された実施形態に限定されることを意図したものではなく、クレームに一致する全部の範囲に一致すべきである。唯一つのエレメントへの参照は、そのように具体的に記載しない限り、「唯一」を意味することを意図したものではなく、「１つ以上」を意味することを意図している。当業者にとって周知のまたは後で知られることになるこの開示の全体にわたって記載された種々の実施形態のエレメントに均等なすべての構造および機能は参照することにより本明細書に明示的に組み込まれ、クレームにより含まれるように意図される。さらに、ここに開示されたすべてのものは、そのような開示がクレームに明示的に記載されているかどうかに関わらず、公に捧げられるようには意図されていない。構成要件が「means for」のフレーズを用いて明示的に記載されない限り、または方法クレームの場合には、「step for」のフレーズを用いて記載されないかぎり、クレームの構成要件は、３５Ｕ．Ｓ．Ｃ．§１１２条第６パラグラフの規定の下で解釈されるべきではない。
以下に他の実施形態を示す。
［１］メモリからデータを検索する方法において、
データが必要とされるであろうメモリのアドレスを予測することと、
前記メモリの予測されたアドレスにおけるデータのためのプリフェッチコマンドをメモリコントローラに送信することと、
前記メモリの予測されたアドレスにおけるデータのためのリード要求を前記メモリコントローラに送信することと、
前記リード要求に応答して前記メモリの予測されたアドレスにおけるデータを受信することと、
を備えた方法。
［２］前記メモリコントローラは、前記プリフェッチコマンドに応答して前記メモリ内のページを開き、前記ページは前記予測されたアドレスにおけるデータを含む、［１］の方法。
［３］前記メモリコントローラは、前記予測されたアドレスにおけるデータを含む前記ページから前記データの少なくとも一部をプリフェッチバッファに読み込み、前記予測されたアドレスにおける前記データは前記リード要求に応答して前記プリフェッチバッファから受信される、［２］方法。
［４］前記プリフェッチバッファに読み込まれたページからの前記データの少なくとも一部のサイズは所定のサイズである、［３］の方法。
［５］前記プリフェッチバッファに読み込まれたページからの前記データの少なくとも一部のサイズは前記プリフェッチコマンドと共に前記メモリコントローラに送信される、［３］の方法。
［６］前記メモリはＳＤＲＡＭを含む、［１］の方法。
［７］前記メモリはＮＡＮＤフラッシュメモリを含む、［１］の方法。
［８］前記予測されたアドレスを前記プリフェッチコマンドおよびリード要求と共に前記メモリコントローラに送信することをさらに備えた、［１］の方法。
［９］前記予測されたアドレスはバスの第１チャネル上の前記メモリコントローラに送信され、前記データは、前記バスの第チャネル上の前記リード要求に応答して受信される、［８］の方法。
［１０］前記プリフェッチコマンドと前記リード要求は、共通チャネル上の前記メモリコントローラに送信される、［９］の方法。
［１１］前記プリフェッチコマンドは第１のコードを備え、前記リード要求は前記第１のコードとは異なる第２のコードを備えた、［１０］の方法。
［１２］前記プリフェッチコマンドに関連する転送クォリファイア(qualifiers)とリード要求を前記バスの第１チャネル上の前記メモリコントローラに送信することをさらに備えた、［９］の方法。
［１３］前記メモリに書かれるデータを前記バスの第１チャネル上に送信することと、メモリにデータを書くためのアドレスを前記バスの第１チャネル上に送信することとをさらに備えた、［９］の方法。
［１４］メモリからデータを検索する方法において、
データが必要とされるであろうメモリの開かれていないページからアドレスを予測することと、
前記メモリの前記予測されたアドレスにおけるデータのためのプリフェッチコマンドをメモリコントローラに送信することと、
前記予測されたアドレスにおけるデータをプリフェッチバッファに読み込むことと、
プリフェッチバッファからのデータを破棄することと、
を備えた方法。
［１５］前記データは、前記メモリコントローラに送信されている前記メモリ内の前記予測されたアドレスにおけるデータのためのリード要求なしに前記メモリの１つ以上の異なるページからデータのための所定数のリード要求の前記メモリコントローラへの送信に応答して前記プリフェッチバッファから破棄される、［１４］の方法。
［１６］前記データは、前記メモリコントローラに送信されている前記メモリ内の前記予測されたアドレスにおけるデータのためのリード要求なしに所定時間の後前記プリフェッチバッファから破棄される、［１４］の方法。
［１７］前記データは、前記メモリ内の前記予測されたアドレスにおけるデータのためのリード要求が前記メモリコントローラに送信される前に前記メモリコントローラに送信される次のプリフェッチコマンドに応答して前記プリフェッチバッファにより破棄される、［１４］の方法。
［１８］メモリと、
メモリコントローラと、
データが必要とされるであろう前記メモリのアドレスを予測し、前記メモリの予測されたアドレスにおけるデータのためのプリフェッチコマンドを前記メモリコントローラに送信し、前記データが必要なら、前記メモリの予測されたアドレスにおけるデータのためのリード要求を前記メモリコントローラに送信するように構成されたプロセッサと
を備え、前記メモリコントローラは、リード要求に応答して前記メモリの予測されたアドレスにおけるデータを前記プロセッサに配信するようにさらに構成された処理システム。
［１９］前記メモリコントローラは前記プリフェッチコマンドに応答して前記メモリ内のページを開くようにさらに構成され、前記ページは前記予測されたアドレスにおけるデータを含む、［１８］の処理システム。
［２０］プリフェッチバッファをさらに備え、前記メモリコントローラは、前記予測されたアドレスにおけるデータを含む前記ページからデータの少なくとも一部を前記プリフェッチバッファに読み込み、前記リード要求に応答して前記プリフェッチバッファからの前記予測されたアドレスにおけるデータを前記プロセッサに配信するようにさらに構成された、［１９］の処理システム。
［２１］前記プリフェッチバッファに読み込まれたページからの前記データの少なくとも一部のサイズは所定のサイズである、［２０］の処理システム。
［２２］前記プロセッサは、前記プリフェッチバッファに読み込まれるページからの前記データの少なくとも一部のサイズを前記プリフェッチバッファに送信するようにさらに構成された、［２０］の処理システム。
［２３］前記プリフェッチバッファは前記メモリコントローラ内に位置する、［２０］の処理システム。
［２４］前記メモリコントローラは、前記メモリの予測されたアドレスにおけるデータのためのリード要求を受信することなしに前記プリフェッチコマンドの後で前記メモリの１つ以上の異なるページからデータのための所定数のリード要求を前記メモリコントローラが前記プロセッサから受信するなら前記プリフェッチバッファ内のデータを破棄するようにさらに構成される、［２０］の処理システム。
［２５］前記メモリはＳＤＲＡＭを含む、［１８］の処理システム。
［２６］前記メモリはＮＡＮＤフラッシュメモリを含む、［１８］の処理システム。
［２７］前記プロセッサは、前記予測されたアドレスを前記プリフェッチコマンドおよび前記リード要求と共に前記メモリコントローラに送信するようにさらに構成された、［１８］の処理システム。
［２８］前記プロセッサを前記メモリコントローラに接続するバスをさらに備え、前記バスは第１および第２のチャネルを有し、前記プロセッサは前記予測されたアドレスをバスの第１チャネル上の前記メモリコントローラに送信するようにさらに構成され、前記メモリコントローラは、前記バスの第２チャネル上の前記プロセッサにデータを送信するようにさらに構成される、［２７］の処理システム。
［２９］前記プロセッサと前記メモリコントローラとの間に共通チャネルをさらに備え、前記プロセッサは、前記プリフェッチコマンドと前記リード要求を前記共通チャネル上のメモリコントローラに送信するようにさらに構成される、請求項２８の処理システム。
［３０］前記プロセッサは前記プリフェッチコマンドを含む第１のコードと、前記リード要求を含む第２のコードを発生するようにさらに構成され、前記第１のコートは前記第２のコードと異なる、［２９］の処理システム。
［３１］前記プロセッサは前記プリフェッチコマンドに関連する転送クォリファイアとリード要求を前記バスの第１チャネル上の前記メモリコントローラに送信するようにさらに構成される、［２８］の処理システム。
［３２］前記プロセッサは前記メモリに書かれるデータを前記バスの第１チャネルに送信し、前記メモリにデータを書くためのアドレスを前記バスの第１チャネル上に送信するようにさらに構成された、［２８］の処理システム。
［３３］メモリと、
メモリコントローラと、
データが必要とされるであろう前記メモリのアドレスを予測する手段と、
前記メモリの前記予測されたアドレスにおけるデータのためのプリフェッチコマンドを前記メモリコントローラに送信する手段と、
前記データが必要なら前記メモリの予測されたアドレスにおけるデータのためのリード要求を前記メモリコントローラに送信する手段と、
データを受信するための受信手段と、
を備え、前記メモリコントローラは、前記リード要求に応答して前記メモリの予測されたアドレスにおけるデータを前記受信手段に配信するようにさらに構成された処理システム。
【図１】
0005231612.tif 000006
【図２】
0005231612.tif 000007
【図３】
0005231612.tif 000008
【図４】
0005231612.tif 000009