(57)【特許請求の範囲】
【請求項１】
ストリームトランザクションのためのメモリアクセス要求を受け取り、
前記ストリームトランザクションに含まれる、メモリ中の少なくとも1つのメモリページへのメモリアクセスを実施するように構成されたコントローラを備えるメモリコントローラであって、
前記コントローラが、前記ストリームトランザクションによってアクセスされている現在のメモリページが、保留トランザクションによって次にアクセスされるべきメモリページである場合、前記現在のメモリページを開いたままにするように構成され、
前記コントローラが、前記ストリームトランザクションによってアクセスされている前記現在のメモリページが、保留トランザクションによって次にアクセスされるべきメモリページでない場合、前記現在のメモリページを閉じるように構成される、メモリコントローラ。
【請求項２】
前記保留トランザクションのための保留メモリアクセス要求が期限を過ぎている場合、前記現在のメモリページを開いたままにする、請求項１に記載のメモリコントローラ。
【請求項３】
前記ストリームトランザクションのための前記保留メモリアクセス要求が、前記ストリームトランザクションのための前記メモリアクセス要求、および別のストリームトランザクションのための別のメモリアクセス要求からなる群から選択される、請求項２に記載のメモリコントローラ。
【請求項４】
半導体ダイに統合される、請求項１に記載のメモリコントローラ。
【請求項５】
請求項１に記載の前記メモリコントローラが統合されるセットトップボックス、娯楽機器、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビ、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、およびポータブルデジタルビデオプレーヤからなる群から選択されたデバイスを備える、システム。
【請求項６】
メモリにアクセスするための方法であって、
メモリコントローラにおいて、ストリームトランザクションのためのメモリアクセス要求を受け取るステップと、
前記ストリームトランザクションによって参照される、メモリ中の少なくとも1つのメモリページへのメモリアクセスを実施するステップと、
前記ストリームトランザクションによってアクセスされている現在のメモリページが、保留トランザクションによって次にアクセスされるべきメモリページである場合、前記現在のメモリページを開いたままにするステップと、
前記ストリームトランザクションによってアクセスされている前記現在のメモリページが、前記保留トランザクションによって次にアクセスされるべきメモリページでない場合、前記現在のメモリページを閉じるステップと、
を含む方法。
【請求項７】
ストリームトランザクションのための保留メモリアクセス要求が期限を過ぎている場合、前記現在のメモリページを開いたままにする、請求項６に記載の方法。
【請求項８】
メモリコントローラに、
ストリームトランザクションのためのメモリアクセス要求を受け取らせ、前記ストリームトランザクションに含まれる、メモリ中の少なくとも1つのメモリページへのメモリアクセスを実施させ、
前記ストリームトランザクションによってアクセスされている現在のメモリページが、保留トランザクションによって次にアクセスされるべきメモリページである場合、前記現在のメモリページを開いたままにさせ、
前記ストリームトランザクションによってアクセスされている前記現在のメモリページが、前記保留トランザクションによって次にアクセスされるべきメモリページの前記次のメモリページでない場合、前記現在のメモリページを閉じさせるためのコンピュータ実行可能命令を記録したコンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
本出願は、2010年10月8日に出願し、「ARBITRATING BUS COMMUNICATIONS BASED ON INFORMATION RELATED TO A STREAM TRANSACTION(S)」という名称の、参照によってその全体が本明細書に組み込まれている、同時係属米国特許出願代理人整理番号100742、顧客番号23696に関連する。
【０００２】
本開示の技術は概して、プロセッサベースのシステムにおけるメモリアクセスコントローラおよびメモリページ管理ポリシーに関する。
【背景技術】
【０００３】
中央処理装置(CPU)ベースのシステムを含むプロセッサベースのシステムに、システムメモリにダイナミックメモリを使うことが一般的である。ダイナミックメモリは一般に、「ダイナミックランダムアクセスメモリ」または「DRAM」とも呼ばれる。ダイナミックメモリは通常、いくつかのメモリバンクに編成され、各メモリバンクは複数のメモリページを含む。ダイナミックメモリへのアクセスは、2つの個別タスクを伴うが、両方とも処理時間を要し得る。第1に、アクセスされるべきメモリバンク中の所望のメモリロケーションに対応するメモリページ(すなわち、行)が開かれる。これは、「行選択」としても知られ、2次元の行および列メモリ配置を参照する。第2に、メモリページ内の所望のメモリロケーション(すなわち、列)がアクセスされる。これは、「列選択」としても知られる。アクセスされるメモリロケーションを含むメモリページは、同じメモリバンク中で別のメモリページが開かれ得る前に閉じられなければならない。このことは、メモリアクセス時間の増大につながる場合があり、メモリアクセスを伴うトランザクションにおける帯域幅削減と待ち時間(すなわち、処理時間)増大の両方においてCPU性能に影響し得る。
【０００４】
メモリアクセス時間および待ち時間を削減するために、メモリコントローラは、メモリアクセスの後にメモリページを開いたままに(リーブオープン)するためのグローバルメモリページ管理ポリシーを有して構成され得る。リーブオープンメモリページ管理ポリシーは、新規メモリページをターゲットにする保留メモリアクセス要求を担当すること、または例として、自動リフレッシュや自己リフレッシュなどのメモリ維持コマンドを実施することを求められた場合にメモリページを閉じるだけである。メモリコントローラを、アクセスの後にメモリページを開いたままにするように構成することは、いくつかのメモリアプリケーション、特に、一例として、マルチメディアアプリケーションまたはプロセッサなどによる非ランダムな順次メモリロケーションアクセスを伴うものにとって有利であり得る。これらのシナリオでは、順次メモリアクセスはしばしば、同じメモリページに対するものである。処理時間は、メモリバンク中の同じメモリページへの次のメモリアクセスに先立って、メモリバンクに対してメモリページを閉じないことによって節約される。ただし、メモリページを開いたままにするためのメモリページ管理ポリシーを提供することによる、トレードオフが存在する。メモリバンクへの順次メモリアクセスが、異なるメモリページに対するものである場合、処理時間ペナルティを被る。たとえば、メモリコントローラが、メモリバンク中の、現在開いているメモリページとは異なるメモリページにアクセスするための要求を受け取った場合、メモリコントローラは、新規メモリページが開かれ得る前に、現在開いているメモリページを閉じなければならない。新規メモリページがアクセスされ得る前に、現在開いているメモリページを閉じる際に被る追加処理時間は、待ち時間を増加させ得る。メモリページを開いたままにするメモリページ管理ポリシーを利用する別のトレードオフは、アクセスの後にメモリページを開いたまま保つのに費やされる追加電力である。
【発明の概要】
【課題を解決するための手段】
【０００５】
詳細な説明において開示する実施形態は、ストリームトランザクション情報に基づいてページ管理ポリシーを適用するためのメモリコントローラ、システム、方法、およびコンピュータ可読媒体を含む。この点について一実施形態では、メモリコントローラが提供される。メモリコントローラは、ストリームトランザクションのためのメモリアクセス要求を受け取るように構成されたコントローラを含む。ストリームトランザクションとは、データの効率的バルク転送を容易にするためのバーストアクセスタイプのスーパーセットである。メモリコントローラは、単一バーストおよび単一ビートアクセスタイプなどの非ストリームトランザクションのためのメモリアクセス要求を受け取るようにも構成される。メモリコントローラは、ストリームトランザクションによって指定された、メモリ中のメモリページへのメモリアクセスを実施するように構成される。コントローラは、ストリームトランザクションに関連した情報に基づいて、メモリにページ管理ポリシーを適用するようにさらに構成される。例として、ストリームトランザクション情報は、今後ならびに保留ストリームトランザクションが進行したときにアクセスされる、メモリ中のアドレス範囲についての情報を提供し得る。このように、ページ管理ポリシーは、ストリームトランザクションを使用する際の効率性のために設定され得る。異なるデバイスからのストリームトランザクションを含む複数のメモリアクセス要求をメモリコントローラが扱っているときに起こり得る待ち時間問題を考慮するページ管理ポリシーも提供され得る。
【０００６】
非限定的な一例として、ページ管理ポリシーは、ストリームトランザクションのための現在のメモリページが、保留ストリームトランザクションによってアクセスされるべき次のメモリページであるかどうかに基づき得る。次のメモリページである場合、適用されるページ管理ポリシーは、現在のメモリページを閉じ、開き直す処理時間を避けるために、現在のストリームトランザクションのためのメモリアクセスの後、現在のメモリページを開いたままにするものであり得る。次のメモリページではない場合、適用されるページ管理ポリシーは、現在のストリームトランザクションのためのメモリアクセスの後、現在のメモリページを閉じるものであり得る。別の非限定的例として、ページ管理ポリシーは、現在のストリームトランザクションのための次のメモリページが、ストリームトランザクションのためにアクセスされている現在のメモリページではない(すなわち、ページまたは行横断)かどうかに基づき得る。次のメモリページではない場合、適用されるページ管理ポリシーは、現在のストリームトランザクションのためのメモリアクセスの後、現在のメモリページを閉じるものであり得る。別の非限定的例では、ページ管理ポリシーは、メモリ中の同じメモリバンクに対するストリームトランザクションのための複数のメモリアクセス要求があるかどうかに基づき得る。複数の要求がある場合、ページ管理ポリシーは、限定はしないが、すべてのストリームトランザクションが期限付きであるかどうか、ただ1つのストリームトランザクションが期限付きであるかどうか、および/またはストリームトランザクションが期限を過ぎているかどうかを含むストリームトランザクション属性に依存して、現在のストリームトランザクションのためのメモリページを開いたままにし、または閉じるものであり得る。
【０００７】
別の実施形態では、メモリにアクセスするための方法が提供される。この方法は、メモリコントローラにおいて、ストリームトランザクションのためのメモリアクセス要求を受け取ることを含む。方法は、ストリームトランザクションに含まれる、メモリ中の少なくとも1つのメモリページへのメモリアクセスを実施することも含む。方法は、ストリームトランザクションに関連した情報に基づいて、少なくとも1つのメモリページ用のページ管理ポリシーを決定することも含む。方法は、ページ管理ポリシーを少なくとも1つのメモリページに適用することも含む。
【０００８】
別の実施形態では、メモリコントローラに、ストリームトランザクションのためのメモリアクセス要求を受け取らせるためのコンピュータ実行可能命令を記憶したコンピュータ可読媒体が提供される。コンピュータ可読媒体は、メモリコントローラに、ストリームトランザクションに含まれる、メモリ中の少なくとも1つのメモリページへのメモリアクセスを実施させるためのコンピュータ実行可能命令も記憶している。コンピュータ可読媒体は、メモリコントローラに、ストリームトランザクションに関連した情報に基づいて、少なくとも1つのメモリページにページ管理ポリシーを適用させるためのコンピュータ実行可能命令も記憶している。
【図面の簡単な説明】
【０００９】
【図１】複数のマスタデバイスをスレーブデバイスに接続するバス相互接続を含む例示的なシステムであって、スレーブデバイスの1つが、ストリームトランザクションをサポートし、ストリームトランザクションに関連した情報に基づいてページ管理ポリシーをメモリに適用するように構成されたメモリコントローラからなるメモリシステムであるシステムを示すブロック図である。
【図２】マスタデバイスによる、スレーブデバイスへのストリームトランザクションのためのメモリアクセス要求に応答した、スレーブデバイスからマスタデバイスへの例示的なストリームトランザクション応答を示すブロック図である。
【図３】メモリアクセス要求を処理し、ストリームトランザクションに関連した情報に基づいてメモリにページ管理ポリシーを適用するための、図1のメモリコントローラによって実施される例示的なプロセスを示すフローチャートである。
【図４Ａ】ストリームトランザクションに関連した情報に基づいてページ管理ポリシーを適用するメモリコントローラの例示的なプロセスを示すフローチャートである。
【図４Ｂ】ストリームトランザクションに関連した情報に基づいてページ管理ポリシーを適用するメモリコントローラの例示的なプロセスを示すフローチャートである。
【図５】バストランザクションを要求するマスタデバイスによって与えられる制御ブロックにあるマスタ識別ワード、メモリページ情報、およびストリーム識別子ブロックをサポートするように構成されたメモリコントローラに対する例示的なメモリアクセス要求キューを示す図である。
【図６】アクセスされている現在のメモリページが、保留ストリームトランザクションによってアクセスされるべき次のメモリページであるかどうかに基づいて、メモリにページ管理ポリシーを適用するメモリコントローラの例示的なプロセスを示すフローチャートである。
【図７】現在のストリームトランザクションのためにアクセスされるべき次のメモリページが、現在のストリームトランザクションによってアクセスされている現在のメモリページではないかどうかに基づいて、ページ管理ポリシーをメモリに適用するメモリコントローラの例示的なプロセスを示すフローチャートである。
【図８】メモリ中の同じメモリバンクを関与させる2つ以上のストリームトランザクションがアクティブであるかどうかに基づいて、ページ管理ポリシーをメモリに適用するメモリコントローラの例示的なプロセスを示すフローチャートである。
【図９】図1のバス相互接続およびメモリシステムを含み得る例示的なプロセッサベースのシステムを示すブロック図である。
【発明を実施するための形態】
【００１０】
ここで図面を参照して、本開示のいくつかの例示的な実施形態が説明される。「例示的な」という言葉は、「一例、実例または例として」を意味するために本明細書で使用される。「例示的」として本明細書で説明する任意の実施形態は、必ずしも他の実施形態よりも好ましいまたは有利であると解釈されるべきではない。
【００１１】
詳細な説明において開示する実施形態は、ストリームトランザクション情報に基づいてページ管理ポリシーを適用するためのメモリコントローラ、システム、方法、およびコンピュータ可読媒体を含む。この点について一実施形態では、メモリコントローラが提供される。メモリコントローラは、ストリームトランザクションのためのメモリアクセス要求を受け取るように構成されたコントローラを含む。ストリームトランザクションとは、データの効率的バルク転送を容易にするためのバーストアクセスタイプのスーパーセットである。メモリコントローラは、単一バーストおよび単一ビートアクセスタイプなどの非ストリームトランザクションのためのメモリアクセス要求を受け取るようにも構成される。メモリコントローラは、ストリームトランザクションによって指定された、メモリ中のメモリページへのメモリアクセスを実施するように構成される。コントローラは、ストリームトランザクションに関連した情報に基づいて、メモリにページ管理ポリシーを適用するようにさらに構成される。例として、ストリームトランザクション情報は、今後ならびに保留ストリームトランザクションが進行したときにアクセスされる、メモリ中のアドレス範囲についての情報を提供し得る。このように、ページ管理ポリシーは、ストリームトランザクションを使用する際の効率性のために設定され得る。異なるデバイスからのストリームトランザクションを含む複数のメモリアクセス要求をメモリコントローラが扱っているときに起こり得る待ち時間問題を考慮するページ管理ポリシーも提供され得る。
【００１２】
図1および図2は、ストリームトランザクションのためのメモリアクセス要求を含むメモリアクセス要求を実施するためのメモリコントローラを含む例示的なシステムを示す。この点について、図1は、ストリームトランザクション情報に基づいてメモリにページ管理ポリシーを適用するためのメモリコントローラを含む例示的なシステム10を示す。システム10は、バス相互接続16を介してスレーブデバイス14に相互接続された複数のマスタデバイス12を含む。バス相互接続16は、バス相互接続16に接続されたマスタデバイス12の1つまたは複数を、やはりバス相互接続16に各々が接続された、スレーブデバイス14のいずれかと通信させるように構成可能である。スレーブデバイス14はマスタデバイス12にとって共有リソースであるので、本実施形態におけるバス相互接続16内には、マスタデバイス12からスレーブデバイス14への複数の通信要求をアービトレーションするためのアービタ20が設けられる。一例として、バス相互接続16は、半導体ダイ22内に設けることができ、所望される場合、システムオンチップ(SOC)集積回路設計において設けることができる。
【００１３】
マスタデバイス12およびスレーブデバイス14は、所望されるどのタイプの電子デバイスまたはサブシステムでもよく、したがって、限定はしないが、図1に示すように、中央処理装置(CPU)12(1)と、デジタル信号プロセッサ(DSP)12(2)と、フィールドプログラム可能ゲートアレイ(FPGA)12(3)と、直接メモリアクセス(DMA)コントローラ12(4)と、ディスプレイ18に与えられる情報を制御するディスプレイプロセッサ12(5)とを含み得る。スレーブデバイス14の例が、図1に示すメモリシステム24である。メモリシステム24は、バス相互接続16に接続されて、マスタデバイス12のいずれもが、メモリシステム24内のメモリ26に読取りおよび書込みメモリアクセス要求を与え、読取りおよび書込み応答を受け取ることが可能になる。この点について、メモリシステム24は、バス相互接続16をメモリ26にインターフェースさせ、マスタデバイス12によってバス相互接続16を通してメモリシステム24に与えられたメモリアクセス要求に応答して、メモリ26との間でのデータの流れを制御するメモリコントローラ28を含む。
【００１４】
制御ブロック(CTRL_BLOCK)の形で与えられるメモリアクセス情報は、後でより詳しく論じるように、メモリ26へのメモリアクセストランザクションを要求するために、メモリコントローラ28に与えられる。メモリコントローラ28は、マスタデバイス12からのメモリアクセス要求をバッファリングするためのメモリアクセス要求キュー29を含む。メモリアクセス要求の受取りおよび実施、ならびにページ管理ポリシーの決定およびメモリ26への適用を含む、メモリコントローラ28による操作を制御するためのコントローラ31も、メモリコントローラ28内に設けられ得る。コントローラ31は、ソフトウェア命令を利用せずに、回路を含むことができる。メモリコントローラ28は、コントローラ31内の、または場合によってはメモリコントローラ28にとってアクセス可能なコンピュータ可読媒体33中で与えられるソフトウェア命令を実行するプロセッサも含み得る。コンピュータ可読媒体33は、例として、レジスタおよび/または他のメモリからなり得る。
【００１５】
各メモリユニット30(0)〜30(N)に1つが提供されるチップ選択CS(0)〜CS(N)を含むメモリコントローラ28にメモリ26をインターフェースするためのメモリバス32が設けられる。各メモリユニット30(0)〜30(N)は、別個のメモリチップでよい。チップ選択CS(0)〜CS(N)は、メモリコントローラ28によって、アクセスされるべき所望のメモリロケーションを含むメモリユニット30(0)〜30(N)を有効にするために選択的に有効にされる。メモリコントローラ28は、この例では、メモリユニット30(0)〜30(N)の1つが、データ衝突を避けるためにデータバス(DATA)上のデータを一度にアサートするようなときにメモリユニット30(0)〜30(N)の1つを有効にする。メモリバス32は、メモリ26への書込みまたは読取りのいずれかのための、メモリユニット30(0)〜30(N)内でアクセスされるメモリアドレスをメモリコントローラ28が制御できるようにするアドレス/制御バス(ADDR/CTRL)も含む。メモリバス32は、メモリアクセスのためにメモリコントローラ32とメモリユニット30(0)〜30(N)との間のタイミングを同期させるためのクロック信号(CLK)も含む。
【００１６】
図1の参照を続けると、各メモリユニット30(0)〜30(N)は、全体が要素34と呼ばれる複数のメモリバンクを含む。図1は、メモリユニット30(0)の1つのためのメモリバンク34を示す。メモリバンクとは、メモリの論理ユニットである。図1の図示する例において、メモリバンク34は、DATAバス上で一度に16ビットの情報を提供する。図示する例において、各メモリユニット30(0)〜30(N)は、4つのメモリバンクを含む。4つのメモリバンク(B0、B1、B2、およびB3)のみを図1に示してあるが、所望される任意の数のメモリバンクを各メモリユニット30(0)〜30(N)内に設けることができる。各メモリバンク(B0〜B3)は、「行」および「列」をもつ、グリッド状のパターンに編成される。各行は、メモリページ36として知られている。メモリ26内のメモリロケーションにアクセスするために、メモリコントローラ28は、チップ選択CS(0)〜CS(N)をアサートし、ADDR/CTRLバス上のアドレスで指示された特定のメモリページ36をアクティブ化するメモリページオープンコマンドを発行する。このコマンドは通常、数クロック周期かかる。所望のメモリページ36が開かれた後、列アドレス38が、所望のメモリロケーションにあるデータにアクセスするために「読取り」または「書込み」コマンドのいずれかとともに、メモリコントローラ28によって発行される。メモリバンク34中の別のメモリページ36へのアクセスが要求されると、メモリコントローラ28は、現在アクティブ化されているメモリページ36を非アクティブ化し、または閉じなければならず、これには通常、数クロック周期かかる。
【００１７】
メモリバンク34の所与の1つにおいて同じメモリページ36への順次または一連のメモリアクセスが行われる場合、アクセスの後にメモリページ36が開いたままにされる場合はクロック周期を節約することができる。このようにして、同じメモリページ36への後続メモリアクセスは、メモリページ36を開き直すことを必要としない。総クロック周期節約の量は、同じメモリページ36への順次または一連メモリアクセスの回数に依存する。ただし、メモリアクセスが、異なるメモリページ36に対してしばしば行われる場合、アクセスの後にメモリページ36を開き続け、または開いたままにすると、クロック周期ペナルティが生じ得る。クロック周期ペナルティの量は、異なるメモリページ36への後続メモリアクセスの回数に依存し得る。クロック周期ペナルティの量は、メモリコントローラ28がメモリアクセス要求に応答してどれだけ待たなければならないかを支配する、メモリ26の特定のタイミングパラメータにも依存し得る。
【００１８】
本実施形態では、メモリユニット30(0)〜30(N)はダイナミックメモリである。各メモリユニット30(0)〜30(N)は、DDR0およびDDRNと標示された、16ビットのダブルデータレート(DDR)ダイナミックランダムアクセスメモリ(DRAM)チップである。この点について、メモリユニット30(0)〜30(N)へのアクセスを制御するメモリコントローラ28は、DDRメモリコントローラであり得る。メモリユニット30(0)〜30(N)は、どのタイプのダイナミックメモリでもよい。例として、同期DRAM(SDRAM)、ダブルデータレート(DDR)SDRAM、DDR2 DRAM、DDR3 DRAM、モバイルDDR(MDDR)DRAM、低電力DDR(LPDDR)DRAMおよびLPDDR2 DRAMがある。メモリユニット30(0)〜30(N)は、ダイナミックメモリ以外の他のタイプのメモリでもよい。メモリコントローラ28は、メモリユニット30(0)〜30(N)に適合する、どのタイプのメモリコントローラでもよい。さらに、メモリコントローラ28またはメモリシステム24は、マザーボードまたは他のプリント回路基板(PCB)上に別個のデバイスとして設けることもでき、バス相互接続16を含む同じ半導体ダイ22に統合することもでき、こうすると待ち時間を削減することができる。さらに、マスタデバイス12も、バス相互接続16を含む同じ半導体ダイ22に統合することができる。
【００１９】
図1のマスタデバイス12は、バス相互接続16に接続されたメモリシステム24によって担当されるべき単一ビートまたはバーストトランザクションをバス相互接続16に提供することができる。図1のマスタデバイス12は、メモリシステム24によって担当されるべきストリームトランザクションをバス相互接続16に提供することもできる。ストリームトランザクションは、大量のデータを効率的に移動するのに使われ得る。メモリシステム24へのストリームトランザクションは、単一トランザクション要求の一部として転送されるべき、より多くの量のデータを与えるためのバーストのスーパーセットからなり得る。ストリームトランザクションの例が、図2に示される。図2のこの例では、256個のデータバーストがあり、各バーストは4データビートからなる。スレーブデバイス14は、マスタデバイス12によってスレーブデバイス14に対してあらかじめ要求されたストリームトランザクションに応答して、バス相互接続16上でのバーストデータトランザクションのスーパーセット42からなるデータストリーム40を与える。たとえば、この例におけるマスタデバイス12は、メモリ26から大量のデータを受け取り、DMAコントローラに結合された他のデバイスに転送するように構成されたDMAコントローラでよい。
【００２０】
ストリームトランザクションは、今後のメモリアクセスについての有限情報およびバス相互接続16上での関連データ転送トラフィックを与えるので、クロック周期効率という点で、ストリームトランザクションに関する情報を使って、メモリコントローラ28によって適用されるページ管理ポリシーを決定することが有利であり得る。たとえば、ストリームトランザクションのための現在アクセスされているメモリページが、別の保留ストリームトランザクションによってアクセスされるべき次のメモリページである場合、メモリアクセス後に現在のメモリページを開いたままにするためのページ管理ポリシーを適用することがより効率的であり得る。別の例として、ストリームトランザクションの処理中にページ(または行)横断が次に起こる場合、現在のメモリページにおける最終アクセス後に現在のメモリページを閉じるためのページ管理ポリシーを適用することがより効率的であり得る。同じメモリバンクへのアクセスとともに複数のストリームトランザクションがアクティブである場合、限定はしないが、すべてのストリームトランザクションが期限付きであるかどうか、ただ1つのストリームトランザクションが期限付きであるかどうか、および/またはストリームトランザクションが期限を過ぎているかどうかを含むストリームトランザクション属性に依存して、現在のストリームトランザクションのためのメモリページを開いたままにし、または閉じるためのページ管理ポリシーを適用することが効率的であり得る。
【００２１】
この点について、図3は、ストリームトランザクションを含み得るメモリアクセス要求を処理するための、図1のメモリコントローラ28によって実施される全体的な例示的プロセスを示すフローチャートである。ストリームトランザクションに対して、メモリコントローラ28は、ストリームトランザクションに関連した情報に基づいて、ページ管理ポリシーを決定し、メモリに適用するように構成される。図3を参照すると、メモリコントローラ28は、メモリアクセス要求キュー29から次の未完メモリアクセス要求を取り出す(ブロック50)。メモリコントローラ28は、取り出されたメモリアクセス要求がストリームトランザクション用であるかどうか判定する(ブロック52)。そうでない場合、メモリコントローラ28は、メモリ26へのメモリアクセスを実施し、ストリームトランザクション情報に基づかないデフォルトのページ管理ポリシーを適用することができる(ブロック54)。ただし、メモリアクセス要求がストリームトランザクション用である場合(ブロック52)、メモリコントローラ28は、ストリームトランザクションが新規であるか、それとも現在進行中であるか判定すればよい(ブロック56)。新規でまだ進行していない場合、メモリコントローラ28は、ストリームトランザクションをセットアップし、開始する(ブロック58)。その後、メモリコントローラ28は、メモリアクセス要求のアドレスを含む、メモリ26中のメモリページ36にアクセスすることによって、ストリームトランザクションにおける次のメモリアクセスを実施する(ブロック60)。メモリコントローラ28は次いで、ストリームトランザクションに関する情報に基づいて、アクセスされるメモリページ36にページ管理ポリシーを適用する(ブロック60)。
【００２２】
処理中のストリームトランザクションが完了した場合(ブロック62)、メモリコントローラ28は、メモリアクセス要求キュー29から次の未完メモリアクセス要求を取り出し(ブロック50)、プロセスは繰り返す。ストリームトランザクションが完了していない場合(ブロック62)、メモリコントローラ28は、メモリ26へのアクセスの制御が、メモリアクセス要求キュー29中の別のメモリアクセスに与えられるべきかどうか判定する(ブロック63)。たとえば、メモリコントローラ28は、現在のメモリアクセス要求が完了する前に、メモリアクセス要求キュー29中の次のメモリアクセス要求に切り替えるように構成され得る。完了前の、ストリームトランザクションのためのメモリアクセス要求からの切替えは、メモリコントローラ28によって他のメモリアクセス要求が奪われることがないように実施することができる。また、別の例として、メモリアクセス要求キュー29中の他のストリームトランザクションが、処理中の現在のストリームトランザクションよりも重要な期限および/または高い優先度をもつ場合、ストリームトランザクションを切り替えればよい。
【００２３】
制御が、現在のストリームトランザクションに関して譲渡されるべきである場合、メモリコントローラ28は、現在のストリームトランザクションについての進行情報を、後でストリームトランザクションが続けられ得るように、メモリ要求アクセスキュー29に記憶する(ブロック64)。メモリコントローラ28は次いで、メモリアクセス要求キュー29から次の未完メモリアクセス要求を取り出し(ブロック50)、プロセスは繰り返す。処理中の現在のストリームトランザクションについて制御が譲渡されるべきでない場合(ブロック63)、メモリコントローラ28は、メモリアクセス要求のアドレスを含む、メモリ26中のメモリページ36にアクセスすることによって、ストリームトランザクションにおける次のメモリアクセスを実施する(ブロック60)。メモリコントローラ28は次いで、ストリームトランザクションに関する情報に基づいて、アクセスされるメモリページ36にページ管理ポリシーを適用する(ブロック60)。
【００２４】
図4Aおよび図4Bは、ストリームトランザクションに関連した情報に基づいてページ管理ポリシーを適用するメモリコントローラの例示的なプロセスを示すフローチャートである。図4Aおよび図4Bに示すプロセスは、一例として、図1のメモリコントローラ28によって、図3のブロック60の一部として実施することができる。この点について、図4Aおよび図4Bを、図1のシステム10およびメモリコントローラ28に関して論じる。ただし、図4Aおよび図4Bのプロセスは、ページ管理ポリシーが与えられ適用される、所望のどのシステムでも利用することができる。
【００２５】
図4Aを参照すると、メモリコントローラ28は、現在のメモリアクセス要求のためにアクセスされるべきメモリバンク34およびメモリページ36を決定する(図4Aのブロック70)。上で論じたように、メモリコントローラ28によって処理されるメモリアクセス要求は、メモリアクセス要求キュー29に記憶することができる。メモリコントローラ28は次いで、たとえば図5の内部レジスタ66などの内部レジスタを照会して、アクセスされるべきメモリページ36がすでに開かれているかどうか判定する(図4Aのブロック72)。図5の例において、内部レジスタ66は、メモリ26内のメモリバンク34ごとに設けられる。内部レジスタ66は、所与のメモリバンク34に関して、最後にアクセスされたメモリページ(MEMORY_PAGE)36、およびページオープンレジスタ(PAGE_OPEN)69によって指示されたメモリページ36が現在開いているかどうかを記憶するためのメモリバンクレジスタ68を含む。アクセスされるべきメモリページ36がまだ開いてない場合(図4Aのブロック72)、メモリコントローラ28は、メモリアクセス要求に対応するメモリページ36を開く(図4Bのブロック74)。メモリコントローラ28はその後、メモリアクセス要求中のメモリロケーションにアクセスする(図4Bのブロック76)。図4Aのブロック72で、図5のページオープンレジスタ69によって判定されたように、アクセスされるべきメモリページ36がすでに開いている場合、メモリコントローラ28は、メモリアドレスを含むメモリページ36を開く必要なく、メモリアクセス要求において要求されたメモリロケーションに直接アクセスすることができる(図4Aのブロック78)。
【００２６】
メモリアクセス中のメモリロケーションが要求された後(図4Aのブロック78または図4Bのブロック76のいずれかの後)、メモリコントローラ28は次いで、メモリアクセス要求のために開いているメモリページ36に適用されるべきページ管理ポリシーを決定する。決定されたページ管理ポリシーに依存して、メモリコントローラ28は、メモリアクセスの後、現在のメモリページ36を開いたままにし、または現在のメモリページ36を閉じればよい。本実施形態におけるメモリコントローラ28は、ストリームトランザクションに関連した情報に基づいてページ管理ポリシーを決定することができる。この点について、メモリコントローラ28は、現在のメモリアクセス要求を含むアクティブストリームトランザクションがメモリアクセス要求キュー29にあるかどうか判定する(図4Aのブロック80)。ない場合、メモリコントローラ28は、ストリームトランザクションにかかわらず、デフォルトのページ管理ポリシーを決定し(図4Aのブロック82)、プロセスが終わる前に、現在のメモリアクセス要求におけるメモリページ36を閉じるか(図4Aのブロック84)、または現在のメモリアクセス要求におけるメモリページ36を開いたままにする(図4Aのブロック86)。
【００２７】
アクティブストリームトランザクションがある場合(図4Aのブロック80)、メモリコントローラ28は、ストリームトランザクション情報に基づいて、メモリアクセスの後、現在開いているメモリページ36のためのページ管理ポリシーを決定する(図4Aのブロック88)。図6〜図8に関して後でより詳しく論じるように、ストリームトランザクション情報に基づくページ管理ポリシーは、メモリコントローラによって様々な非限定的やり方で与えられ得る。ページ管理ポリシーが、現在のメモリアクセス要求におけるメモリページ36を閉じることを認める場合(図4Aのブロック88)、メモリコントローラ28は、プロセスが終わる(図4Aのブロック86)前に、現在開いているメモリページ36を閉じ、閉じることを認めない場合、現在開いているメモリページ36は、プロセスが終わる(図4Aのブロック86)前に、開いたままにされる。
【００２８】
メモリコントローラがストリームトランザクション要求をサポートするために、ストリームトランザクションに関する情報がメモリコントローラに与えられる。ストリームトランザクション情報は、本質的に、ストリームトランザクションをどのように実施するかをメモリコントローラに命令する情報を与える。たとえば、図1に関して、メモリコントローラ28は、ストリームトランザクションに関連した情報を、マスタデバイス12からバス相互接続16を介して受け取る。本明細書で論じるように、メモリコントローラ28はまた、このストリームトランザクション情報を使って、メモリアクセスの後、メモリに適用されるべきページ管理ポリシーを決定する。この点について、図5は、ストリームトランザクションをサポートするように構成された図1のメモリコントローラ28内のメモリアクセス要求キュー29として使うことができる例示的なメモリアクセス要求キュー29Aの図である。メモリアクセス要求キュー29Aは、内部レジスタまたはメモリコントローラ28の内部もしくは外部にあるとともにコントローラ28によってアクセス可能な他のメモリ内に設けられ得る。メモリアクセス要求キュー29Aは、0〜N個のメモリアクセス要求を保持するように構成されたテーブルからなる。
【００２９】
図5は、バストランザクションを要求するマスタデバイス12(0〜M)を識別するために、メモリアクセス要求キュー29A中で与えられる例示的なマスタ識別子92の図を含む。この例では、マスタ識別子92は、10ビットのワードである。上位2ビット(F1、F0)は、特定のメモリアクセス要求に関与した4つの個別ファブリックの識別を可能にするファブリック識別子100を含む。中央4ビット(M3、M2、M1、M0)は、マスタデバイス12を識別するマスタデバイス識別子102である。したがって、この例では、16個の一意のマスタデバイス12が可能である。2ビット(S1、S0)は、提供された、または適用可能であるマスタデバイス12に結合されたサブマスタデバイスを識別するサブマスタデバイス識別子104を含む。したがって、この例では、4個の一意のサブマスタデバイスが可能である。下位2ビット(A1、A0)は、マスタデバイス12および/またはサブマスタデバイスに、所望されるどの属性情報も提供させるのに使うことができる属性識別子106を含む。たとえば、ソフトウェアプロセスまたはスレッドの識別は、マスタデバイス12および/またはサブマスタデバイスに、メモリアクセス要求を担うソフトウェアプロセスまたはスレッドを識別させるために、属性識別子106中で与えることができる。所望される他のどの情報も、属性識別子106に含めることができる。
【００３０】
図5は、ストリームトランザクションを実施するためのストリームトランザクション情報をマスタデバイス12がメモリコントローラ28に与えるようにする図1のバス相互接続16によってサポートされるバスプロトコル用の例示的な制御ブロック(CTRL_BLOCK)90の図も与える。制御ブロック90は、アービタ20およびメモリコントローラ28が、マスタデバイス12からのトランザクション要求を実施できるようにする制御情報を含む。たとえば、制御ブロック90は、アービタ20へのメモリアクセス要求の要求元に関連付けられた識別子を含むマスタ識別子(M_ID)92を含む。アービタ20は、マスタ識別子92を使って、どのマスタデバイス12が、メモリコントローラ28を含むスレーブデバイス14から受信された応答を受け取るべきか決定する。メモリアクセス要求に関してアドレス指定されるべきアドレスは、アドレス(ADDRESS)フィールド94中で与えられる。メモリアクセス要求が読取りトランザクションであるか、それとも書込みトランザクションであるかは、読取り/書込み(R/W)フィールド96中で与えられる。ストリーム識別子ブロック(STREAM_ID_BLOCK)98が、この例ではメモリアクセス要求であるバストランザクションについてのストリームトランザクション情報を提供するために与えられる。
【００３１】
図5は、図5の制御ブロック90中でストリーム識別子ブロック98として使われ得るとともにメモリアクセス要求キュー29A中で与えられる例示的なストリーム識別子ブロックの図も含む。ストリーム識別子ブロック98は、図1のメモリコントローラ28を含むメモリコントローラが、ストリーム識別子ブロック98に関連するストリームトランザクションを実施できるようにする情報を提供するストリームトランザクションに関連した例示的な情報を含む。ストリーム識別子ブロック98は、図1のメモリコントローラ28を含むメモリコントローラによって、メモリアクセス後にメモリに適用されるべきページ管理ポリシーを決定するのに使われ得るストリームトランザクションに関連した例示的な情報も含む。マスタデバイス12は、相互接続バス16上でストリームトランザクションを要求するとき、ストリーム識別子ブロック98中で情報を提供する。
【００３２】
図5に示すように、ストリーム識別子ブロック98は、ストリームトランザクションを識別するストリーム識別子フィールド(STREAM_ID)108を含む。転送回数フィールド(NO_TRANSFERS)110は、ストリームトランザクションに関連付けられたバースト転送の回数を与える。ビート数フィールド(NO_BEATS)112は、バースト転送ごとに実施されるべきデータ転送のビートの数を与える。バイト数フィールド114(NO_BYTES)は、各ビート転送中に転送されるべきデータバイトの数を与える。バイト数フィールド114は、バス相互接続16およびスレーブデバイス14のアーキテクチャに依存して、設定可能であっても、固定値であってもよい。ストリームトランザクションに関連付けられた期限がある場合、期限情報は、期限フィールド(DEADLINE)116に記憶すればよい。たとえば、マスタデバイス12が、クロック周期、ビート、または他の相対もしくは絶対タイミングで表され得る一定のタイミング内に特定のストリームトランザクションが完了されることを要求する場合がある。優先度がストリームトランザクションに関連付けられるようにする優先度フィールド(PRIORITY)118も与えられる。優先度フィールド118は、設計に依存して、マスタデバイス12、アービタ20、またはスレーブデバイス14によって供給および/または変更されるように構成され得る。このストリーム情報のいずれも、メモリコントローラ28によって、ページ管理ポリシーを決定するのに使うことができる。
【００３３】
図1のメモリコントローラ28は、この例では図5の制御ブロック90を含むメモリアクセス要求をアービタ20から受け取り、メモリアクセス要求をメモリアクセス要求キュー29Aに記憶する。キュー番号フィールド(QUEUE_NO)120が、メモリアクセス要求キュー29Aに記憶されたメモリアクセス要求に索引付けするのに使われる。この例におけるメモリアクセス要求キュー29A中の各メモリアクセス要求エントリは、メモリアクセス要求を開始したマスタデバイス12を識別するためのマスタ識別子フィールド92を含む。メモリアクセス要求エントリは、受信された制御ブロック90中のアドレスフィールド94中のアドレスに基づいてメモリコントローラ28によって決定された、チップ選択フィールド(CS)122、メモリバンクフィールド(MEMORY_BANK)124、およびメモリページフィールド(MEMORY_PAGE)126も含む。メモリアクセス要求がストリームトランザクションである場合、メモリアクセス要求エントリごとに、ストリームトランザクション情報を記憶するためのストリーム識別子ブロック98も与えられる。ストリームトランザクションがメモリコントローラ28によって実施されるとき、メモリコントローラ28に、ストリームトランザクションに対するメモリアクセス要求の進行を記憶させるための残余転送数フィールド(NO_ACCESSES_REMAIN)128も与えられる。
【００３４】
異なる1つの基準または複数の基準が、図1のメモリコントローラ28を含むメモリコントローラによって、ストリームトランザクションに関連した情報に基づいてページ管理ポリシーを決定するのに使われ得る。本開示は、どの特定の複数の基準または1つの基準にも限定されない。図6は、アクセスされている現在のメモリページが、保留ストリームトランザクションによってアクセスされるべき次のメモリページであるかどうかに基づいて、ページ管理ポリシーを適用する1つの例示的基準およびプロセス88Aのフローチャートである。このプロセスは、図4Aのブロック88の一部として実施することができる。図6に示すように、メモリコントローラ28によるメモリアクセスの後、メモリコントローラ28は、アクセスされている現在のメモリページ36が、メモリ要求アクセスキュー29A中で保留中のストリームトランザクションによってアクセスされるべき次のメモリページであるかどうか判定する(ブロック130)。保留ストリームトランザクションは、処理中の現在のストリームトランザクションの後続部分でも、メモリ要求アクセスキュー29A中の別のストリームトランザクションでもよい。次のメモリページではない場合、メモリコントローラ28は、メモリアクセス後にデフォルトのページ管理ポリシーを適用すればよく(ブロック132)、このポリシーは、アクセスの後に現在のメモリページ36を閉じ、またはアクセスの後に現在のメモリページ36を開いたままにするかのいずれかである。
【００３５】
図6の参照を続けると、アクセスされている現在のメモリページ36が、メモリ要求アクセスキュー29A中で保留中のストリームトランザクションによってアクセスされるべき次のメモリページであるとメモリコントローラ28が判断した場合(ブロック130)、現在のメモリページ36を開いたままにすることが望ましい場合がある。このシナリオでは、少なくとも1つのストリームトランザクションが、開いている現在のメモリページ36へのメモリアクセスを要求することが分かっている。この事例において、メモリコントローラ28は、現在のメモリページ36を開いたままにすればよい(ブロック134)。あるいは、メモリコントローラ28は、メモリアクセス要求キュー29A(図5)中のストリーム識別子ブロック98中の期限フィールド116中で与えられるように、保留ストリームトランザクションがその期限を過ぎている場合にのみ、現在のメモリページ36を開いたままにすればよく(ブロック136)、過ぎていない場合は、メモリコントローラ28は、現在のメモリページ36を閉じればよいであろう。その後、現在のメモリアクセス要求は終わる(ブロック138)。
【００３６】
図7は、ページ管理ポリシーを適用するメモリコントローラの別の例示的な基準およびプロセス88Bのフローチャートである。この例では、メモリコントローラは、現在のストリームトランザクションによってアクセスされるべき次のメモリページが、現在のストリームトランザクションによってアクセス中の現在のメモリページではないかどうかに基づいてページ管理ポリシーを適用する。このことは、現在のメモリページ36において「ページ横断」または「行横断」が起こり、したがって次のメモリページアクセスに先立って、アクセスの後に現在のメモリページ36を閉じることが有利であり得ることを意味する。このプロセスは、図4Aのブロック88の一部として実施することができる。図7に示すように、メモリコントローラ28によるメモリアクセスの後、メモリコントローラ28は、処理中の現在のストリームトランザクションによってアクセスされるべき次のメモリページが、現在のメモリページ36ではないかどうか判定する(ブロック140)。現在のメモリページではない場合、デフォルトのページ管理ポリシーをメモリコントローラ28によって適用すればよく(ブロック142)、このポリシーは、アクセスの後に現在のメモリページ36を閉じるものであり得る。現在のメモリページである場合、このことは、ストリームトランザクションのための次のメモリアクセスに対して「行横断」が起こらないことを意味する。この事例において、メモリコントローラ28は、現在のメモリアクセス要求が終わる(ブロック146)前に、アクセス後に現在のメモリページ36を開いたままにすればよい(ブロック144)。
【００３７】
図8は、ページ管理ポリシーを適用するメモリコントローラの別の例示的な基準およびプロセス88Cのフローチャートである。この例では、メモリコントローラは、メモリ中の同じメモリバンクを伴う2つ以上のストリームトランザクションがアクティブであるかどうかに基づいてページ管理ポリシーを適用し、アクティブである場合、さらなる1つの基準または複数の基準に基づく。このプロセスは、図4Aのブロック88の一部として実施することができる。図8に示すように、メモリコントローラ28によるメモリアクセスの後、メモリコントローラ28は、同じメモリバンクへの2つ以上の保留ストリームトランザクションが存在するかどうか判定する(ブロック150)。存在しない場合、メモリコントローラ28は、デフォルトのページ管理ポリシーを適用すればよい(ブロック151)。
【００３８】
同じメモリバンクへの2つ以上の保留ストリームトランザクションが存在する場合(ブロック150)、メモリコントローラ28は、保留ストリームトランザクションのうちただ1つ、それとも複数が期限付きであるか判定すればよい(ブロック152)。期限付きストリームトランザクションとは、ストリームトランザクションを完了するのに、時間的な期限要件があるストリームトランザクションである。たとえば、ストリームトランザクションが、「X」個のビートの「N」回の部分転送からなる場合、ストリームトランザクションに関連付けられた期限は、部分転送の各々1つを完了するための時間であり得る。あるいは、ストリームトランザクションに関連付けられた期限は、すべての部分転送を完了するための時間であり得る。さらに、期限は、部分転送と完了した転送の両方に関連付けられ得る。一例として、ストリームトランザクションのための期限は、たとえば、ストリームトランザクションの転送に関与するすべてのエンティティが、共通時間値で期限が決定され得る共通クロックソースをもつ場合など、クロック周期で設けることができる。別の例として、ストリームトランザクションのための期限は、ストリームトランザクションの転送に関与するエンティティによって算出される絶対時間で設けることができる。
【００３９】
保留ストリームトランザクションの中でただ1つのストリームトランザクションが期限付きである場合、期限付きストリームトランザクションには、期限付きストリームトランザクションのためのメモリアクセス時間を削減するために、アクセスの後に期限付きストリームトランザクションのためにメモリページを開いたままにすることによって、優先度が与えられ得る。この点について、メモリコントローラ28が、期限付きストリームトランザクションを現在処理している場合(ブロック154)、メモリコントローラ28は、現在のメモリアクセス要求を終了する(ブロック158)前に、処理中のストリームトランザクション用に、現在のメモリページ36を開いたままにすればよい(ブロック156)。メモリコントローラ28が、期限付きストリームトランザクションを現在処理していない場合(ブロック154)、メモリコントローラ28は、所望される場合は、現在のメモリアクセス要求に対して、デフォルトのページ管理ポリシーを適用すればよい(ブロック160)。
【００４０】
ブロック152で、複数の保留ストリームトランザクションが期限付きである場合、メモリコントローラ28は、期限付き保留ストリームトランザクションのうち1つ、それとも複数がその期限を過ぎているか判定する(ブロック162)。ただ1つの保留ストリームトランザクションが期限付きである場合、およびメモリコントローラ28がこの期限付きストリームトランザクションを現在処理中である場合(ブロック164)、メモリコントローラ28は、現在のメモリページ36を開いたままにする(ブロック156)。メモリコントローラ28が、期限を過ぎているストリームトランザクションを現在処理中でない場合(ブロック164)、メモリコントローラ28は、デフォルトのページ管理ポリシーを適用すればよい(ブロック160)。
【００４１】
ただし、複数の保留ストリームトランザクションが期限付きである場合(ブロック162)、メモリコントローラ28は、処理中の現在のストリームトランザクションが、現在処理中でない他の保留ストリームトランザクションよりも高い優先度をもつかどうか判定する(ブロック166)。図5のストリーム識別子ブロック98中の優先度フィールド118は、この点について、現在のストリームトランザクションおよび他の保留ストリームトランザクションに関して照会され得る。処理中の現在のストリームトランザクションが、現在処理中でない他の保留ストリームトランザクションよりも高い優先度をもつ場合(ブロック166)、メモリコントローラ28は、現在のメモリページ36を開いたままにしてよく(ブロック156)、それ以外の場合、メモリコントローラ28は、デフォルトのページ管理ポリシーを適用すればよい(ブロック160)。
【００４２】
現在のストリームトランザクション向けに与えられた優先度フィールド118がない場合、または優先度フィールド118が与えられ、2つ以上の競合する期限付きストリームトランザクションが優先度フィールド118中で同じ優先度をもつ場合、優先度判定は、他のやり方で行ってよい。たとえば、優先度判定は、メモリコントローラ28によってページ管理ポリシー決定が行われなければならない所与の時点で各ストリームトランザクションがどれだけ遅れ、または進んでいるかを示す符号化値(たとえば、完了パーセンテージ、遅れているクロック周期、または遅れている時間)で決定することができる。すべての競合する期限付きストリームトランザクションが遅れている場合、符号化値は、各ストリームトランザクションがどれだけ遅れているかを示すことができ、この遅れは、ページ管理ポリシーにおいてどのメモリページが開いたままにされるか決定するのに使うことができる。
【００４３】
図6〜図8にあるものを含む、本明細書におけるページ管理ポリシー例は、単独で、または所望される組合せのうちいずれでも提供され得ることに留意されたい。また、本明細書で開示するページ管理ポリシーのいずれかまたはすべては、図1に示すように、コンピュータ可読媒体33中のソフトウェア命令を実行するコントローラ31を含んでも含まなくてもよい、回路によるメモリコントローラ28によって実施され得る。他のページ管理ポリシー基準が、メモリコントローラ28によって、ページ管理ポリシーを適用するのに使われ得る。
【００４４】
本明細書で開示する実施形態による、ページ管理ポリシーを適用するためのメモリコントローラ、システム、方法、およびコンピュータ可読媒体は、メモリへのアクセスを制御するためのどのプロセッサベースのデバイスでも提供すること、または統合することができる。例として、限定されないが、セットトップボックス、娯楽機器、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビ、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、およびポータブルデジタルビデオプレーヤが含まれる。
【００４５】
この点について、図9は、図1に示すシステム10の構成要素を利用することができるプロセッサベースのシステム170の例を示す。この例では、プロセッサベースのシステム170は、1つまたは複数のプロセッサ174を各々が含む1つまたは複数の中央処理装置(CPU)172を含む。CPU172は、マスタデバイスであり得る。CPU172は、一時記憶データへの高速アクセスのためにプロセッサ174に結合されたキャッシュメモリ176を有し得る。CPU172はシステムバス180に結合され、システムバス180は、プロセッサベースのシステム170に含まれる他のデバイスを相互に結合する。システムバス180は、図1のバス相互接続16のようなバス相互接続でよい。よく知られているように、CPU172は、アドレス情報、制御情報、およびデータ情報をシステムバス180を通じて交換することによって、これらの他のデバイスと通信する。たとえば、CPU172は、スレーブデバイスとしてのメモリコントローラ28への通信を介して、メモリアクセス要求を外部メモリに伝達することができる。図9には示さないが、複数のシステムバス180を設けてもよく、この場合、各システムバス180は異なるファブリックを構成する。
【００４６】
他のマスタおよびスレーブデバイスが、システムバス180に接続され得る。図9に示されるように、これらのデバイスは、例として、メモリシステム24、1つまたは複数の入力デバイス184、1つまたは複数の出力デバイス186、1つまたは複数のネットワークインターフェースデバイス188、ならびに1つまたは複数のディスプレイコントローラ190を含み得る。入力デバイス184は、入力キー、スイッチ、音声プロセッサなどを含むが、それに限定されない、どのタイプの入力デバイスも含み得る。出力デバイス186は、オーディオ、ビデオ、他の視覚インジケータなどを含むが、それに限定されない、どのタイプの出力デバイスも含み得る。ネットワークインターフェースデバイス188は、ネットワーク192との間でデータの交換をさせるように構成されたどのデバイスでもよい。ネットワーク192は、限定はされないが、有線ネットワークまたはワイヤレスネットワーク、非公開ネットワークまたは公開ネットワーク、ローカルエリアネットワーク(LAN)、ワイドローカルエリアネットワーク(WLAN)、およびインターネットを含む、任意の種類のネットワークであってよい。ネットワークインターフェースデバイス188は、所望の任意の種類の通信プロトコルをサポートするように構成され得る。メモリシステム24は、メモリ26に結合されたメモリコントローラ28を含んでもよい。メモリ26は、図1のメモリシステム10に設けられるような、1つまたは複数のメモリユニット30(0)〜30(N)を含み得る。アービタ20は、メモリユニット30(0)〜30(N)へのアクセスを制御するために図1のメモリシステム24に設けられるように、システムバス180とメモリユニット30(0)〜30(N)との間に設けることができる。
【００４７】
CPU172はまた、システムバス180を通じてディスプレイコントローラ190にアクセスして、1つまたは複数のディスプレイ194に送られる情報を制御するようにも構成され得る。ディスプレイコントローラ190は、1つまたは複数のビデオプロセッサ196を介して表示されるべき情報を、ディスプレイ194に送り、ビデオプロセッサ196は、表示されるべき情報を、ディスプレイ194に適切なフォーマットとなるように処理する。ディスプレイ194は、限定はされないが、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイなどを含む、任意の種類のディスプレイを含み得る。
【００４８】
CPU172およびディスプレイコントローラ190は、システムバス180を介してアービタ20へのメモリアクセス要求を行うためのマスタデバイスとして作用し得る。CPU172およびディスプレイコントローラ190内の異なるスレッドが、アービタ20への要求を行うことができる。CPU172およびディスプレイコントローラ190は、上で記載したように、アービタ20にマスタ識別子92を与えて、メモリシステム24へのメモリアクセスを要求すると決定することができる。
【００４９】
本明細書で開示される実施形態とともに説明される様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムは、電子的なハードウェアとして、メモリもしくは別のコンピュータ可読媒体に記憶されプロセッサもしくは他の処理デバイスにより実行される命令として、またはこれら両方の組合せとして実装され得ることが、当業者にはさらに理解されよう。本明細書に記載したメモリコントローラ、アービタ、マスタデバイス、およびサブマスタデバイスは、例として、どの回路、ハードウェア構成要素、集積回路(IC)、またはICチップ内でも利用することができる。メモリは、どのタイプおよびサイズのメモリでもよく、所望されるどのタイプの情報も記憶するように構成され得る。この互換性を明確に示すために、上記では、様々な例示的構成要素、ブロック、モジュール、回路、およびステップは全般的に、それらの機能に関して説明されている。そのような機能がどのように実装されるかは、具体的な用途、設計の選択、および/またはシステム全体に課される設計制約により決まる。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本発明の範囲からの逸脱を生じるものと解釈すべきではない。
【００５０】
本明細書で開示する実施形態に関して説明する様々な例示的な論理ブロック、モジュール、および回路は、プロセッサ、DSP、特定用途向け集積回路(ASIC)、FPGAもしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理回路、個別ハードウェア構成要素、または本明細書で説明する機能を実行するように設計されたそれらの任意の組合せで実装または実行することができる。たとえば、バス相互接続は、ソフトウェア命令を実行することができる、フィールドプログラム可能ゲートアレイ(FPGA)、非同期同期集積回路(ASIC)、コントローラ、マイクロコントローラもしくはマイクロプロセッサ、またはそれらのどの組合せによっても提供され得る。プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つまたは複数のマイクロプロセッサ、あるいは任意の他のそのような構成として実装され得る。
【００５１】
本明細書で開示される実施形態は、ハードウェアで具現化されてよく、ハードウェアに記憶される命令により具現化されてよく、たとえば、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、電気的にプログラム可能なROM(EPROM)、電気的に消去可能なプログラム可能ROM(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または、当技術分野で知られている任意の他の形態のコンピュータ可読媒体に、存在し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体はプロセッサと一体であり得る。プロセッサおよび記憶媒体はASIC中に存在し得る。ASICは遠隔局に存在し得る。代替的には、プロセッサおよび記憶媒体は、遠隔局、基地局、またはサーバの中に、個別の構成要素として存在し得る。
【００５２】
本明細書の例示的な実施形態のいずれかで説明された動作ステップは、例および議論を提供するために説明されたものであることにも、留意されたい。説明された動作は、例示された順序以外の多くの異なる順序で実行されてもよい。さらに、単一の動作ステップで説明される動作は、実際には、多くの異なるステップで実行され得る。加えて、例示的な実施形態において論じられた1つまたは複数の動作ステップは、組み合わされてもよい。流れ図において例示される動作ステップは、当業者に容易に明らかとなるような多くの異なる修正を受けてもよいことを、理解されたい。情報および信号は、多種多様な技術および技法のいずれかを使用して表され得ることも、当業者には理解されよう。たとえば、上記の説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁界または磁性粒子、光場または光学粒子、あるいはそれらの任意の組合せによって表され得る。
【００５３】
本開示の前述の説明は、いかなる当業者でも本開示を作成または使用することができるように提供される。本開示への様々な修正は当業者には容易に明らかであり、本明細書で定義した一般原理は、本開示の趣旨または範囲から逸脱することなく他の変形形態に適用できる。したがって、本開示は、本明細書で説明した例および設計に限定されることを意図するものではなく、本明細書で開示する原理および新規の特徴に一致する最も広い範囲を与えられるべきである。
【符号の説明】
【００５４】
10  システム
12  マスタデバイス
12(1)  中央処理装置(CPU)
12(2)  デジタル信号プロセッサ(DSP)
12(3)  フィールドプログラム可能ゲートアレイ(FPGA)
12(4)  直接メモリアクセス(DMA)コントローラ
12(5)  ディスプレイプロセッサ
14  スレーブデバイス
16  バス相互接続
18  ディスプレイ
20  アービタ
22  半導体ダイ
24  メモリシステム
26  メモリ
28  メモリコントローラ
29  メモリアクセス要求キュー
30  メモリユニット
31  コントローラ
32  メモリバス
33  コンピュータ可読媒体
34  要素、メモリバンク
36  メモリページ
38  列アドレス
40  データストリーム
66  内部レジスタ
68  メモリバンクレジスタ
69  ページオープンレジスタ(PAGE_OPEN)
170  システム
172  中央処理装置(CPU)
174  プロセッサ
176  キャッシュメモリ
180  システムバス
184  入力デバイス
186  出力デバイス
188  ネットワークインターフェースデバイス
190  ディスプレイコントローラ
194  ディスプレイ
196  ビデオプロセッサ
【図１】
0005893632.tif 000002
【図２】
0005893632.tif 000003
【図３】
0005893632.tif 000004
【図４Ａ】
0005893632.tif 000005
【図４Ｂ】
0005893632.tif 000006
【図５】
0005893632.tif 000007
【図６】
0005893632.tif 000008
【図７】
0005893632.tif 000009
【図８】
0005893632.tif 000010
【図９】
0005893632.tif 000011