JP5688823B2 - ディスプレイパイプにおけるストリーミング式翻訳 - Google Patents

ディスプレイパイプにおけるストリーミング式翻訳 Download PDF

Info

Publication number
JP5688823B2
JP5688823B2 JP2013539882A JP2013539882A JP5688823B2 JP 5688823 B2 JP5688823 B2 JP 5688823B2 JP 2013539882 A JP2013539882 A JP 2013539882A JP 2013539882 A JP2013539882 A JP 2013539882A JP 5688823 B2 JP5688823 B2 JP 5688823B2
Authority
JP
Japan
Prior art keywords
translation
memory
translations
fetch
unit
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
JP2013539882A
Other languages
English (en)
Other versions
JP2013543195A (ja
Inventor
ジョセフ ピー ブラット
ジョセフ ピー ブラット
ピーター エフ ホーランド
ピーター エフ ホーランド
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.)
Apple Inc
Original Assignee
Apple Inc
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 Apple Inc filed Critical Apple Inc
Publication of JP2013543195A publication Critical patent/JP2013543195A/ja
Application granted granted Critical
Publication of JP5688823B2 publication Critical patent/JP5688823B2/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0215Addressing or allocation; Relocation with look ahead addressing means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/302In image processor or graphics adapter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/654Look-ahead translation

Description

本発明は、仮想メモリシステムの分野に関係している。
仮想メモリシステムは、様々な理由から、コンピューティングシステムに実装されている。仮想メモリは、例えば、小さい物理メモリを実装していながらに、より大きな仮想メモリ空間をソフトウェアプロセスに利用できるようにするために使用することができる。ディスクドライブの様な不揮発性メモリは、現在使用中でない仮想メモリ空間からのデータを格納することになる。仮想メモリは、同じシステム上で実行している異なったソフトウェアプロセスを隔離して、1つのプロセスが別のプロセスに帰属しているデータにアクセスできないようにするのに使用することができる。仮想メモリは、制御ソフトウェア(例えば、オペレーティングシステム、ハイパーバイザの様な仮想マシンモニタ(VMM)、又は他の特権を有するソフトウェア、など)が、物理メモリ内のデータを配置換えできるようにするのにも使用することができ、その間もプロセスには仮想メモリ空間内でアドレス指定されている連なったメモリであるように見えている。こうして、物理メモリ空間内のどこでも利用できるメモリへデータを配置換えさせることができる。物理メモリはプロセス間で共用されているので、データを物理メモリ内で配置換えすることができることにより、制御ソフトウェアに掛かる負担が軽減される。
典型的に、制御ソフトウェアは、仮想アドレスから、仮想アドレスについて割り当てられているメモリ場所の物理アドレスへの翻訳を用意する。翻訳情報は、メモリ内の1つ又はそれ以上のページ表に格納され、システム内の翻訳ハードウェアが、仮想アドレスを物理アドレスへ翻訳するために翻訳情報をキャッシュする。翻訳はページ単位で遂行される。即ち、仮想メモリシステム内のページバウンダリへ整列した1ブロック分の仮想アドレスは、全て、同じ翻訳によってメモリ内の物理ページへ翻訳される。ページサイズは様々であろう(例えば、4キロバイト、8キロバイト、又は場合によってはそれよりなおいっそう大きく、メガバイトにもなろう)。一部のシステムは、所与の時点で全てのページが選択されたサイズとなるようにプログラム可能に選択できるか又は異なったページサイズが同時にサポートされるようにページ単位で変えられるかのどちらかのやり方で、可変ページサイズをサポートしている。所与の仮想ページに対して物理ページアドレスを指定している翻訳情報のことを、当該仮想ページについての翻訳と呼んでいる。翻訳は、物理ページを識別する物理ページ番号を含んでおり、有効ビット、キャッシュ属性、など、の様な様々な属性ビットを含んでいることもある。仮想ページは仮想アドレス空間内のページ式に整列したページサイズのブロックであり、同様に物理ページは物理アドレス空間内のページ式に整列したページサイズのブロックである。
翻訳をキャッシュすることで、仮想アドレスを使用してメモリにアクセスするプロセスはスピードアップされる(キャッシュされた翻訳を通して物理アドレスへ翻訳)。とはいえ、キャッシュは有限であり、よってたまにはミスもあり、すると翻訳をメモリから翻訳ハードウェアへフェッチさせる必要が出てくる。様々な実装では、ハードウェアがミスのあった翻訳をメモリから読み出すか又はソフトウェアが翻訳をハードウェアへロードする。何れにしても、翻訳ミスが起こるとメモリアクセスの待ち時間が増える。
或る実施形態では、ディスプレイパイプは、ディスプレイパイプが表示のために読み出そうとしている画像に対応する1つ又はそれ以上の翻訳ユニットを含んでいる。それぞれの翻訳ユニットは、画像データのフェッチに先んじて翻訳をプリフェッチするように構成されており、ディスプレイパイプでの翻訳ミスが(少なくとも大抵の場合は)防止される。翻訳ユニットは、翻訳を先入れ先出し(FIFO)式に維持しており、ディスプレイパイプフェッチハードウェアは、所与の単数又は複数の翻訳がもはや要らなくなったら翻訳ユニットに通知する。翻訳ユニットは識別された翻訳を無効にし、直近にプリフェッチされた仮想ページに連なる仮想ページについての追加の翻訳をプリフェッチすることになる。
或る実施形態では、上述のプリフェッチ式翻訳ユニットを組み入れることで、より複雑な翻訳ユニットを、ディスプレイパイプが使用しているメモリに対し同じポートを共用している画像プロセッサへ専従させることが可能になる。ディスプレイパイプからの競合が、より複雑な翻訳ユニットから排除されるために、より複雑な翻訳ユニットでは画像プロセッサからのよりランダムなメモリアクセス要求がよりヒットし易くなり、画像プロセッサにとってもミス率が下がることになる。
次に続く詳細な説明では添付図面を参照しており、図面についてこれより簡単に説明する。
集積回路の1つの実施形態のブロック線図である。 図1に示されているディスプレイパイプの1つの実施形態のブロック線図である。 ソースバッファの1つの実施形態のブロック線図である。 ディスプレイパイプ内のメモリ管理ユニット(MMU)で有効になっている翻訳の一例のブロック線図である。 図2に示されているフェッチ/MMUユニットの1つの実施形態のブロック線図である。 図5に示されているフェッチコントロールユニットの1つの実施形態のオペレーションを説明するフローチャートである。 図5に示されているフェッチコントロールユニットの1つの実施形態の追加のオペレーションを説明するフローチャートである。 図5に示されている翻訳コントロールユニットの1つの実施形態のオペレーションを説明するフローチャートである。 メモリが格納している翻訳表及びソースバッファのタイルの1つの実施形態のブロック線図である。 システムの1つの実施形態のブロック線図である。
本発明には、様々な修正及び代わりの形態の余地があるが、本発明の特定の実施形態を例として図面に示し、ここで詳細に説明してゆく。とはいえ、図面及びそれに対する詳細な説明は本発明を開示されている特定の形態へ限定しようとするものではなく、それどころか、付随の特許請求の範囲によって定義されている本発明の精神及び範囲内に入る全ての修正、等価物、及び代替を対象として含もうとするものであることを理解されたい。ここに使用されている見出しは、編集目的であり、記述の範囲を限定するために使用されることを意図していない。本出願全体を通しての使用に際し、英語の「may」という語の対訳である「〜してもよい、〜かもしれない、〜できるであろう」は、必須の意味(即ち、せねばならないを意味する)というよりむしろ許容の意味(即ち、可能性があることを意味する)に使用されている。同様に、英語の「include」、「including」、及び「includes」という語の対訳である「〜を含む、〜を含める」は、〜に限定される、ではなく、〜を含んでいる、という意味である。
各種ユニット、回路、又は他の構成要素が、単数又は複数のタスクを遂行する「ように構成されている」と記述されていることがあるかもしれない。その様な文脈では、「〜するように構成されている」は、概して、オペレーション中に単数又は複数のタスクを遂行する「回路構成を有している」ことを意味する、構造の広義的な叙述である。そいうものとして、ユニット/回路/構成要素は、ユニット/回路/構成要素が現在オンになっていなくとも、タスクを遂行するように構成されているといえる。一般に、「〜するように構成されている」に対応する構造を形成している回路構成は、オペレーションを実施するハードウェア回路を含んでいよう。同様に、各種ユニット/回路/構成要素が、記述の便宜上、単数又は複数のタスクを遂行する、という様に記述されていることがあるかもしれない。その様な記述は、「〜するように構成されている」という語句を含んでいるものと解釈されねばならない。ユニット/回路/構成要素が1つ又はそれ以上のタスクを遂行するように構成されているという叙述は、当該ユニット/回路/構成要素について35U.S.C.第112条、第6項の解釈を行使しないつもりであることを明示しておく。
これより図1を参照すると、システム5の1つの実施形態のブロック線図が示されている。図1の実施形態では、システム5は、外部メモリ12A−12Bへ連結されている集積回路(IC)10を含んでいる。図示の実施形態では、集積回路10は、1つ又はそれ以上のプロセッサ16とレベル2(L2)キャッシュ18とを含む中央プロセッサユニット(CPU)ブロック14を含んでいる。他の実施形態は、L2キャッシュ18を含んでいないものもあれば、追加のキャッシュレベルを含んでいるものもあろう。加えて、2つより多くのプロセッサ16を含んでいる実施形態、及びプロセッサ16を1つしか含んでいない実施形態も考えられる。集積回路10は、更に、1つ又はそれ以上の非リアルタイム(NRT)周辺デバイス20のセット、及び1つ又はそれ以上のリアルタイム(RT)周辺デバイス22のセットを含んでいる。図示の実施形態では、RT周辺デバイスは、画像プロセッサ24と、1つ又はそれ以上のディスプレイパイプ26と、翻訳ユニット46と、ポートアービタ28と、を含んでいる。他の実施形態では、より多い又は少ない画像プロセッサ24、より多い又は少ないディスプレイパイプ26、及び/又は所望に応じ幾つもの追加のリアルタイム周辺デバイス、を含んでいてもよい。画像プロセッサ24は、システム5内の1つ又はそれ以上のカメラから画像データを受信するように連結されていてもよい。同様に、ディスプレイパイプ26は、システム内の1つ又はそれ以上のディスプレイを制御する1つ又はそれ以上のディスプレイコントローラ(図示せず)へ連結されていてもよい。画像プロセッサ24は翻訳ユニット46へ連結されていて、翻訳ユニット46は更にポートアービタ28へ連結されていてもよい。ポートアービタ28は、その上、ディスプレイパイプ26へ連結されていてもよい。図示の実施形態では、CPUブロック14は、1つ又はそれ以上の周辺デバイス32及び/又は1つ又はそれ以上の周辺デバイスインターフェースコントローラ34へ連結されていてもよいとされるブリッジ/ダイレクトメモリアクセス(DMA)コントローラ30へ連結されている。周辺デバイス32及び周辺デバイスインターフェースコントローラ34の数は、様々な実施形態では、ゼロから任意の所望数まで異なっていてもよい。図1に示されているシステム5は、更に、G0 38A及びG1 38Bの様な1つ又はそれ以上のグラフィックコントローラを備えるグラフィックユニット36を含んでいる。グラフィックユニット当たりのグラフィックコントローラの数及びグラフィックユニットの数は、他の実施形態では、異なっていてもよい。図1に示されている様に、システム5は、1つ又はそれ以上のメモリ物理的インターフェース回路(PHY)42A−42Bへ連結されているメモリコントローラ40を含んでいる。メモリPHY42A−42Bは、集積回路10のピン上でメモリ12A−12Bへ通信するように構成されている。メモリコントローラ40は、更に、ポート44A-44Eのセットを含んでいる。ポート44A−44Bは、グラフィックコントローラ38A−38Bへそれぞれ連結されている。CPUブロック14は、ポート44Cへ連結されている。NRT周辺デバイス20及びRT周辺デバイス22は、ポート44D-44Eへそれぞれ連結されている。メモリコントローラ40に含まれるポートの数は、メモリコントローラの数同様に、他の実施形態では異なっていてもよい。メモリPHY42A−42B及び対応するメモリ12A−12Bの数は、他の実施形態では、1つであってもよいし、又は2つより多くてもよい。
1つの実施形態では、それぞれのポート44A−44Eには特定のトラフィック型式が関連付けられていてもよい。例えば、1つの実施形態では、トラフィック型式は、RTトラフィック、NRTトラフィック、及びグラフィックトラフィックを含んでいてもよい。他の実施形態は、以上のトラフィック型式に加えて、代えて、又はそれらのサブセットに加えて、他のトラフィック型式を含んでいてもよい。それぞれのトラフィック型式は、(例えば、要件及び挙動の観点で)特性を異にし、メモリコントローラは、特性に基づいてより高い性能が提供されるように、それらトラフィック形式に異なった対処の仕方をしていてもよい。例えば、RTトラフィックは、それぞれのメモリオペレーションが特定の時間量内で果たされることを要件とする。オペレーションの待ち時間が特定の時間量を超過すれば、RT周辺デバイスにオペレーションエラーが起こる可能性がある。例えば、画像プロセッサ24内で画像データが失われるかもしれないし、又はディスプレイパイプ26の連結先のディスプレイ上に映し出される画像が視覚的に歪みを来すかもしれない。RTトラフィックは、例えば等時性を特徴としている。他方、グラフィックトラフィックは、比較的高い帯域であるが、待ち時間に敏感というわけではない。プロセッサ16からの様なNRTトラフィックは、性能上の理由から、待ち時間にやや敏感ではあるが、高待ち時間でも生き残る。即ち、NRTトラフィックは、概して、何れの待ち時間でも、NRTトラフィックを生成するデバイスにオペレーションエラーを引き起こすことなく果たされることであろう。同様に、待ち時間にあまり敏感ではないが帯域の高いグラフィックトラフィックは、概して、何れの待ち時間でも果たされることであろう。他のNRTトラフィックには音声トラフィックが含まれ、音声トラフィックは、比較的低帯域であり、概して妥当な待ち時間なら果たされることであろう。殆どの周辺デバイスのトラフィックもまたNRTである(例えば、磁気式、光学式、又はソリッドステートのストレージ、の様なストレージデバイスへのトラフィック)。異なったトラフィック型式と関連付けられているポート44A−44Eが提供されていることにより、メモリコントローラ40は、異なったトラフィック型式に並列して曝されることになる。
上述の様に、RT周辺デバイス22は、画像プロセッサ24とディスプレイパイプ26とを含んでいてもよい。ディスプレイパイプ26は、1つ又はそれ以上の画像フレームをフェッチし、それらフレームをブレンドしてディスプレイ画像を作成する回路構成を含んでいてもよい。ディスプレイパイプ26は、更に、1つ又はそれ以上の映像パイプラインを含んでいて、映像フレームが(比較的)静的な画像フレームとブレンドされて、映像フレームレートで表示されるフレームが作成されてもよい。ディスプレイパイプ26の結果は、ディスプレイ画面に表示させる画素のストリームということになろう。ディスプレイ画面に表示させるために画素値がディスプレイコントローラへ送信される。画像プロセッサ24は、カメラデータを受信し、データを画像へ加工してメモリに格納させていてもよい。
ディスプレイパイプ26と画像プロセッサ24はどちらも、仮想空間で動作しており、よって翻訳を使用して、メモリオペレーションがメモリを書き込み又は読み出しするための物理アドレスを生成するものである。画像プロセッサ24は、幾分ランダムなメモリアクセスパターンを有しており、よって翻訳については翻訳ユニット46に頼ることになろう。翻訳ユニット46は、それぞれの翻訳を、翻訳が他のキャッシュされている翻訳に対してどれほど頻繁に使用されているかに基づく或る期間に亘ってキャッシュするトランスレーションルックアサイドバッファ(TLB)を採用していてもよい。例えば、TLBは、セットアソシエイティブ構造又は完全アソシエイティブ構造を採用していてもよく、least recently used(最も長く使用されていないの意)(LRU)型アルゴリズムを使用して、セット内の(又は完全アソシエイティブ構成ならTLBに亘る)翻訳の間で翻訳使用の新近性を順位付けするようにしていてもよい。LRU型アルゴリズムには、例えば、真LRU、擬似LRU、most recently used(直近に使用されているの意)(MRU)、など、が含められる。加えて、TLBでの容量ミスの影響を低減するのに、相当大きなTLBが実装されていてもよい。
他方、ディスプレイパイプ26のアクセスパターンはかなり規則的である。例えば、それぞれのソース画像の画像データは、仮想アドレス空間内の連続したメモリ場所に格納されることになる。よって、ディスプレイパイプは、ソース画像データの処理を或る仮想ページから開始すると、次の仮想ページは当該仮想ページに連続しているという具合である。即ち、仮想ページ番号は番号順になっており、画像データがフェッチされるごとに1つずつページが繰り上がるか又は繰り下がる。同様に、翻訳は、メモリ内の所与のページ表内で互いに連続している(例えば、ページ表内の連続したエントリは、互いに番号が1つ大きい又は小さい仮想ページ番号を翻訳している)。幾つかの実施形態では2つ以上のページ表が使用されていることがあり、従ってページ表の最後のエントリは次のページ表の最初のエントリへ連続していないということもあろうが、殆どの翻訳はページ表内で連続したものとなっている。別の見方をすると、画像データを格納している仮想ページは、仮想アドレス空間内で互いに隣り合っているといえる。即ち、仮想アドレス空間内では隣接する仮想ページの間には介在するページが無いということである。
ディスプレイパイプ26は、ディスプレイパイプの画像データ読み出しに先んじて、翻訳をプリフェッチする翻訳ユニットを実装していてもよい。プリフェッチは、ソース画像の処理が始まろうとするときに開始され、翻訳ユニットは、翻訳ユニット内の翻訳メモリを満たすのに十分な連続した翻訳をプリフェッチすることになる。ディスプレイパイプ内のフェッチ回路構成は、仮想ページでのデータの処理が完了すると翻訳ユニットに通知し、翻訳ユニットは対応する翻訳を無効にし、追加の翻訳をプリフェッチすることになる。こうして、最初のプリフェッチングが完了したら、ディスプレイパイプ26が当該仮想ページからフェッチを始めながら、それぞれの仮想ページについての翻訳が次々と翻訳ユニット内で利用できるようになってゆく。加えて、翻訳ユニット46についてディスプレイパイプ26からの競合は、プリフェッチ式翻訳ユニットのおかげで排除される。ディスプレイパイプ内の翻訳ユニットは、連なる仮想ページのセットについて翻訳をフェッチするので、それらを「ストリーミング式翻訳ユニット」と呼んでもよい。
一般的に、ディスプレイパイプ26は、比較的静的なフレームをフェッチするように構成されている1つ又はそれ以上のユーザーインターフェースユニットを含んでいてもよい。即ち、静的フレームのソース画像は、映像シーケンスの部分ではない。静的フレームは、変化はしても、映像シーケンスに対応する映像フレームレートに従って変化するわけではない。ディスプレイパイプ26は、更に、映像フレームをフェッチするように構成された1つ又はそれ以上の映像パイプラインを含んでいてもよい。これらの様々なパイプライン(例えば、ユーザーインターフェースユニット及び映像パイプライン)を総じて「画像処理パイプライン」と呼んでもよい。
メモリコントローラ40へ戻り、概して、ポートは、1つ又はそれ以上のソースと通信するためのメモリコントローラ40側の通信ポイントということになろう。幾つかの場合には、ポートは或るソース専用とされていてもよい(例えば、ポート44A−44Bは、グラフィックコントローラ38A−38Bそれぞれの専用とされていてもよい)。他の場合には、ポートは複数のソースの間で共有されていてもよい(例えば、プロセッサ16はCPUポート44Cを共有し、NRT周辺デバイス20はNRTポート44Dを共有し、ディスプレイパイプ26や画像プロセッサ24の様なRT周辺デバイス22はRTポート44Eを共有していてもよい)。ポートは、1つ又はそれ以上のソースと通信するために単一のインターフェースへ連結されていてもよい。こうして、ソースがインターフェースを共有している場合、インターフェースのソース側にはソース同士の間で選択を行うためにアービタがあってもよい。例えば、L2キャッシュ18は、メモリコントローラ40に対しCPUポート44Cのためのアービタの役目を果たしていてもよい。ポートアービタ28は、RTポート44Eのためのアービタの役目を果たし、同様のポートアービタ(図示せず)がNRTポート44Dのためのアービタとなっていてもよい。ポート上の単一ソース又はポート上のソースの組合せは、エージェントと呼ぶこともできる。それぞれのポート44A−44Eは、各自のエージェントと通信するようにインターフェースへ連結されている。インターフェースは、何れの型式の通信媒体(例えば、バス、ポイント・ツー・ポイント相互接続、など)であってもよく、何れのプロトコルを実装していてもよい。幾つかの実施形態では、ポート44A−44Eはどれも同じインターフェース及びプロトコルを実装していてもよい。他の実施形態では、異なったポートは異なったインターフェース及び/又はプトロコルを実装していてもよい。更に他の実施形態では、メモリコントローラ40にはポートが1つしかなくてもよい。
或る実施形態では、それぞれのソースは、当該ソースによって送信されるそれぞれのメモリオペレーションにサービスの質(QoS)パラメータを割り当てていてもよい。QoSパラメータは、メモリオペレーションについて要求されるサービスレベルを識別するものである。高レベルのサービスを要求するQoSパラメータ値を有するメモリオペレーションには、低レベルのサービスを要求するメモリオペレーションに勝る優先順位が与えられることになる。それぞれのメモリオペレーションは、フローID(FID)を含んでいてもよい。FIDは、メモリオペレーションフローの部分であるメモリオペレーションを識別するものである。或るフローのメモリオペレーション同士は、概して、関連しているが、一方で異なったフローからのメモリオペレーションは、たとえ同じソース由来であっても、関連していない。FIDの一部分(例えばソースフィールド)はソースを識別していて、FIDの残部はフロー(例えばフローフィールド)を識別していてもよい。従って、FIDはトランザクションIDと同様であり、幾つかのソースは単純にトランザクションIDをFIDとして送信していてもよい。その様な場合、トランザクションIDのソースフィールドはFIDのソースフィールドということになり、トランザクションIDの(同じソース由来のトランザクション同士の間でトランザクションを識別している)シーケンス番号はFIDのフローフィールドということになろう。幾つかの実施形態では、異なったトラフィック型式は、QoSパラメータの異なった定義を有しているかもしれない。即ち、異なったトラフィック型式は、異なったQoSパラメータセットを有していてもよい。
メモリコントローラ40は、それぞれのポート44A-44Eで受信されたQoSパラメータを処理するように構成されていて、相対的なQoSパラメータ値を使用して、ポートで受信されたメモリオペレーションを、当該ポート由来の他のメモリオペレーション並びに他のポートで受信された他のメモリオペレーションに関して、スケジュールするようになっていてもよい。より厳密には、メモリコントローラ40は、異なったQoSパラメータセットから引き出されたQoSパラメータ(例えば、RTのQoSパラメータ及びNRTのQoSパラメータ)を比較するように構成されていてもよく、QoSパラメータに基づいてスケジュールの決定を下すように構成されていてもよい。
幾つかの実施形態では、メモリコントローラ40は、メモリオペレーションを保留するためにQoSレベルをアップグレードするように構成されていてもよい。様々なアップグレードメカニズムがサポートされることであろう。例えば、メモリコントローラ40は、或るフローのメモリオペレーションを、同じフロー由来のメモリオペレーションであってより高いQoSレベルを特定しているQoSパラメータを有する別のメモリオペレーションの受信に応えて保留するために、QoSレベルをアップグレードするように構成されていてもよい。このQoSアップグレードの形式は、帯域内アップグレードと呼ばれており、というのも、通常のメモリオペレーション送信方法を使用して送信されたQoSパラメータが、同じフロー内のメモリオペレーションについて暗黙のアップグレード要求としての役目も果たすからである。メモリコントローラ40は、新たに受信されたメモリオペレーションがより高いQoSレベルを特定しているということで、同じフロー由来ではなくて同じポート又は同じソース由来の保留中のメモリオペレーションをプッシュするように構成されていてもよい。別の例として、メモリコントローラ40は、1つ又はそれ以上のエージェントからの側帯インターフェースへ連結するように構成されていて、側帯インターフェースでのアップグレード要求の受信に応えてQoSレベルをアップグレードするようになっていてもよい。別の例では、メモリコントローラ40は、保留中のメモリオペレーションの相対的な古さを追跡するように構成されていてもよい。メモリコントローラ40は、或る特定の古さにある古いメモリオペレーションのQoSレベルをアップグレードするように構成されていてもよい。アップグレードが起こる古さは、古いメモリオペレーションの現在のQoSパラメータに依存していてもよい。
メモリコントローラ40は、ポートで受信されたそれぞれのメモリオペレーションによってアドレス指定されているメモリチャネルを求めるように構成されていて、またメモリオペレーションをメモリ12A−12Bへ対応するチャネルで送信するように構成されていてもよい。チャネルの数及びアドレス対チャネルのマッピングは、様々な実施形態で異なっていてもよく、メモリコントローラ内でプログラム可能であってもよい。メモリコントローラは、同じチャネルへマップされているメモリオペレーションのQoSパラメータを使用して、チャネルへ送り込まれるメモリオペレーションの順番を決めることになろう。
プロセッサ16は、何れの命令セットアーキテクチャを実装していてもよく、当該命令セットアーキテクチャに定義されている命令を実行するように構成されていてもよい。プロセッサ16は、スケーラ、スーパースケーラ、パイプライン式、スーパーパイプライン式、順不同、順繰り、推論的、非推論的、など、又はそれらの組合せ、を含む何れかのマイクロアーキテクチャを採用していてもよい。プロセッサ16は、回路構成を含んでいてもよく、随意的にはマイクロコーディング技法を実装していてもよい。プロセッサ16は、1つ又はそれ以上のレベル1キャッシュを含んでいてもよく、而してキャッシュ18はL2キャッシュである。他の実施形態は、プロセッサ16に複数のキャッシュレベルを含んでいることもあり、するとキャッシュ18は階層内で次に下のレベルとなる。キャッシュ18は、何れのサイズまた何れの構成(セット・アソシエイティブ型、ダイレクトマップ型、など)を採用していてもよい。
グラフィックコントローラ38A−38Bは、何れのグラフィック処理回路構成であってもよい。概して、グラフィックコントローラ38A−38Bは、表示させるべきオブジェクトをフレームバッファへレンダするように構成されていてもよい。グラフィックコントローラ38A−38Bは、グフィックオペレーションの一部又は全部及び/又は特定のグラフィックオペレーションのハードウェアアクセラレーションを遂行するグラフィックソフトウェアを実行することのできるグラフィックプロセッサを含んでいてもよい。ハードウェアアクセラレーションの量及びソフトウェア実装は、実施形態により様々であろう。
NRT周辺デバイス20は、何れの非リアルタイム周辺デバイスを含んでいてもよく、それらは、性能上及び/又は帯域上の理由から、メモリ12A−12Bへの独立したアクセスが提供されている。即ち、NRT周辺デバイス20によるアクセスは、CPUブロック14から独立しており、CPUブロックのメモリオペレーションと並行して進行する。周辺デバイス32及び/又は周辺デバイスインターフェースコントローラ34によって制御されている周辺デバイスインターフェースへ連結されている周辺デバイスの様な他の周辺デバイスもまた非リアルタイム周辺デバイスであるが、メモリへの独立したアクセスは要件とされない。NRT周辺デバイス20の様々な実施形態には、映像エンコーダ及びデコーダ、スケーラ/ローテータ回路構成、画像圧縮/圧縮解凍回路構成、など、が含まれよう。
ブリッジ/DMAコントローラ30は、(単数又は複数の)周辺デバイス32及び(単数又は複数の)周辺デバイスインターフェースコントローラ34をメモリ空間へブリッジする回路構成を備えていてもよい。図示の実施形態では、ブリッジ/DMAコントローラ30は、周辺デバイス/周辺デバイスインターフェースコントローラからのメモリオペレーションをCPUブロック14を通してメモリコントローラ40へブリッジすることができる。CPUブロック14は、更に、ブリッジされたメモリオペレーションとプロセッサ16/L2キャッシュ18からのメモリオペレーションの間のコヒーレンスを維持することもできる。L2キャッシュ18は、更に、ブリッジされたメモリオペレーションとプロセッサ16からのメモリオペレーションとの調停をして、CPUインターフェース上をCPUポート44Cへ送信させる。ブリッジ/DMAコントローラ30は、更に、周辺デバイス32及び周辺デバイスインターフェースコントローラ34に代わってDMAオペレーションを提供してデータブロックをメモリへ及びメモリから転送させてもよい。より厳密には、DMAコントローラは、メモリ12A−12Bへの又はメモリ12A−12Bからのメモリコンコントローラ40経由の転送を、周辺デバイス32及び周辺デバイスインターフェースコントローラ34に成り変わって遂行するように構成されていてもよい。DMAコントローラは、DMAオペレーションを遂行するように、プロセッサ16によってプログラム可能であってもよい。例えば、DMAコントローラは、記述子によりプログラム可能であってもよい。記述子は、メモリ12A−12Bに格納されているデータ構造であってDMA転送(例えば、ソースアドレス及び宛先アドレス、サイズ、など)を記述するデータ構造である。代わりに、DMAコントローラは、DMAコントローラ内のレジスタ(図示せず)によりプログラム可能であってもよい。
周辺デバイス32には、何れの所望の入力/出力デバイスも又は集積回路10上に含まれている他のハードウェアデバイスも含めることができる。例えば、周辺デバイス32は、イーサネット(登録商標)MACの様な1つ又はそれ以上のネットワークキングメディアアクセスコントローラ(MAC)又はワイヤレスファイデリティ(WiFi)コントローラの様なネットワーク化周辺デバイスを含んでいてもよい。周辺デバイス32には、様々な音声処理デバイスを含む音声ユニットが含まれていてもよい。周辺デバイス32には、1つ又はそれ以上のデジタル信号プロセッサが含まれていてもよい。周辺デバイス32は、タイマー、オンチップ秘密メモリ、暗号化エンジン、など、又はそれらの何らかの組合せ、の様な何れの他の所望の機能を含んでいてもよい。
周辺デバイスインターフェースコントローラ34は、任意の型式の周辺デバイスインターフェースのための何れのコントローラを含んでいてもよい。例えば、周辺デバイスインターフェースコントローラには、ユニバーサルシリアルバス(USB)コントローラ、周辺構成要素相互接続エクスプレス(PCIe)コントローラ、フラッシュメモリインターフェース、汎用入力/出力(I/O)ピン、など、を含めることができる。
メモリ12A−12Bは、ダイナミックランダムアクセスメモリ(DRAM)、シンクロナスDRAM(SDRAM)、ダブルデータレート(DDR、DDR2、DDR3、など)SDRAM(mDD3などの様なSDRAMのモバイルバージョン及び/又はLPDDR2などの様なSDRAMの低パワーバージョンを含む)、RAMBUS DRAM(RDRAM)、スタティックRAM(SRAM)、など、の様な何れの型式のメモリであってもよい。1つ又はそれ以上のメモリデバイスは、回路板へ連結されて、シングルインラインメモリモジュール(SIMM)、デュアルインラインメモリモジュール(DIMM)、など、の様なメモリモジュールを形成していてもよい。代わりに、デバイスは、チップ・オン・チップ構成、パッケージ・オン・パッケージ構成、又はマルチチップモジュール構成の集積回路が搭載されていてもよい
メモリPHY42A−42Bは、メモリ12A−12Bへの低レベルの物理的インターフェースに対処していてもよい。例えば、メモリPHY42A−42Bは、シンクロナスDRAMメモリ、など、への正しいクロッキングのための信号のタイミングに責任を負っていてもよい。1つの実施形態では、メモリPHY42A−42Bは、集積回路10内で供給されるクロックをロックするように構成されていてもよく、メモリ12によって使用されるクロックを生成するように構成されていてもよい。
他の実施形態は、図1に示されている構成要素及び/又は他の構成要素のサブセット又は上位セットを含め、構成要素の他の組合せを含んでいてもよいことを指摘しておく。所与の構成要素の1つのインスタンスが図1に示されているが、他の実施形態は、所与の構成要素の1つ又はそれ以上のインスタンスを含んでいてもよい。同様に、この詳細な説明全体を通して、所与の構成要素のインスタンスについては、たとえ1つのインスタンスしか示されていなくても1つ又はそれ以上のインスタンスが含まれていてもよく、及び/又は、たとえ複数のインスタンスが示されていてもインスタンスを1つしか含んでいない実施形態が使用されてもよい。
次に図2を参照すると、ディスプレイパイプ26の1つの実施形態のブロック線図が示されている。複数のディスプレイ(図示されていないディスプレイコントローラによって制御されるか又は対応するディスプレイパイプ26によって直接制御されている)へ連結するためにディスプレイパイプ26の複数のインスタンスが設けられていてもよい。図2に示されている様に、ディスプレイパイプ26は、1つ又はそれ以上のユーザーインターフェース(UI)ユニットを含んでいてもよく、この事例ではUI0 50A及びUI0 50Bの2つのインターフェースが示されている。更に、映像ユニット52の様な1つ又はそれ以上の映像ユニットがブレンドユニット54と共に含まれていてもよい。更にホストインターフェースユニット(ホストI/F)64が含まれていてもよい。それぞれのユーザーインターフェースユニット50A−50Bは、バッファ56とスケーラ58とフェッチ/翻訳ユニット(フェッチ/TU)60のインスタンスを含んでいてもよい。バッファ56は、ホストインターフェースユニット64からの画像データを受信し、データをスケーラ58へ提供する、ように連結されていてもよい。スケーラ58は、画素をブレンドのためのアルファ値と共にブレンドユニット54へ出力するように構成されていてもよい。フェッチ/TU60は、ホストインターフェースユニット64からの翻訳データを受信してメモリオペレーションをポートアービタ28(及び最終的にはメモリコントローラ40)への送信に向けてホストインターフェースユニット64へ提供するように連結されていてもよい。映像ユニット52は、映像パイプ62及び1つ又はそれ以上のフェッチ/TU60を含んでいてもよい。例えば、映像ユニット52は、映像シーケンス中のそれぞれの像平面についてフェッチ/TU60を含んでいてもよい。様々な像平面がビデオ画像を描くことであろう。例えば、像平面は色平面(例えば、赤、緑、青、又はY、Cr、Cb)であってもよい。映像ユニット52の(単数又は複数の)フェッチ/TU60は、メモリオペレーションをホストインターフェースユニット64へ提供し翻訳データをホストインターフェース64から受信するように連結されていてもよい。映像パイプ62は、ビデオ画像をホストインターフェースユニット64から受信するように連結されていてもよい。
フェッチ/TU60のそれぞれは、対応する画像処理パイプライン50A-50B又は52のためのソース画像データをフェッチするように構成されていてもよい。ソース画像は仮想的にアドレス指定されるものであり、フェッチ/TU60はメモリオペレーションにデータを読み出させるために仮想アドレスを物理アドレスへ翻訳する翻訳ユニットを含んでいてもよい。フェッチ/TU60は、更に、表示させるソース画像の初期化に応えて、及びソース画像の1つ又はそれ以上の仮想ページpf中のデータの処理の完了に応えて、メモリから翻訳をプリフェッチするメモリ読み出しオペレーションを生成するように構成されていてもよい。翻訳読み出しオペレーションと画像データフェッチ読み出しオペレーションはどちらも、フェッチ/TU60によって、ホストインターフェースユニット64へ送信され、するとホストインターフェースユニット64がそれらオペレーションをポートアービタ28へ送信する。読み出しオペレーションでデータが返されると、ホストインターフェースユニット64は受信側パイプライン50A-50B又は52のためにデータをタグ付けし、データが翻訳データであるか又は画像データであるかを指し示すようにしてもよい。次いで、受信側ユニットは、適宜、フェッチ/TU60又は画像処理パイプラインのデータを捕獲する。
概して、画像データは、表示させるソース画像を記述するものである。或る実施形態では、ユーザーインターフェース画像用の画像データは、画素データとブレンドのためのアルファ値を含んでいる。画素データは、それぞれの画素の色を記述するものである。画素データは、バッファ56に格納されてもよく、随意的にはスケーラ58によってスケーリングされてもよい。スケール係数は、ユーザーインターフェースユニット50A−50Bへプログラムされていてもよいし、画像データ中に提供されていてもよい。スケーリングされた画素は、出力画素としてブレンドユニット54へアルファ値と共に提供されることになろう。或る実施形態では、ユーザーインターフェースユニット50A−50Bは、ソース画像のプログラム可能なアクエィブ領域をサポートしていてもよい。アクティブ領域は、表示させるソース画像の一部の部分のみを定義していてもよい。或る実施形態では、ユーザーインターフェースユニット50A−50Bは、アクティブ領域内のデータのみをフェッチするように構成されていてもよい。アクティブ領域外では、アルファ値0のダミーデータが画素データとして渡されることになろう。
1つの実施形態では、映像パイプ62は、メモリからのフェッチされた映像フレームデータ/情報であってYCbCrフォーマットであってもよいとされる映像フレームデータ/情報を受信すると、データへランダムノイズを挿入(ディザー)し、随意的にはデータを垂直方向及び水平方向の一方又は両方の方向へスケーリングし、ユーザーインターフェースユニット50A−50Bからの他の画像データとのブレンドに向けてデータをRGB色空間へ変換することになる。
ブレンドユニット54は、ユーザーインターフェースユニット50A−50B及び映像ユニット52から画素のフレームを受信し、それらを一層ずつ重ね合わせてブレンドするように構成されていてもよい。その結果最終的に得られた画素が、出力FIFOの待ち行列に入れられ、ディスプレイコントローラによってフェッチされることになる。ブレンドユニット54の最下層は背景色であると定義してもよい。層1が層0とブレンドされる。次の層である層2がブレンド済みの層0及び層1とブレンドされ、以下その様にブレンドされてゆき、終には層全てがブレンドされる。
図3は、ディスプレイパイプ26のための仮想アドレス空間内のソースバッファ70を示しているブロック線図である。ソースバッファ70は、ソースベースアドレス72による仮想アドレス空間に配置されている。図示の実施形態では、ソースバッファ70は、画像タイル74のセットとして配列されている。他の実施形態では、ソースバッファ70は、走査線に配列されていてもよいし、走査線配列とタイル配列の間で選択するようプログラム可能であってもよい。タイル配列では、タイル内の画素が連続した仮想メモリ場所に格納された末に、次のタイルへ移る。次のタイルは水平方向に隣接している次のタイルであり、終にはソースバッファ70の幅の終わり(例えば図3ではタイルN−1)に至ると、次のタイルは次のタイル行の最初のタイル(例えば図3ではタイルN)ということになる。走査線配列では、ソースバッファ70の幅に亘る一行の画素が連続したメモリ場所へ格納された末に次の行に移る。タイル配列は、例えば画像が圧縮される場合又は圧縮された画像から圧縮解凍される場合に使用される。多くの圧縮アルゴリズムは、例えばタイル同士を比較して1つのタイルと次のタイルの間の差を格納することによって動作している。
図3に示されている様なタイル配列では、1つ又はそれ以上のタイルはそれぞれの仮想ページに格納されることになろう。タイルのサイズは、タイル幅(TW)とタイル高さ(TH)に関して測定される。或る実施形態では、タイル幅はバイトで測定され、タイル高さは画素行で測定される。1つの例では、タイル幅は256バイト、タイル高さは16行とされているが、他の例では、一方又は両方についてより大きなサイズ及びより小さいサイズが使用されてもよい。例として、それぞれのタイルが1つの4キロバイトページであり、するとそれぞれのタイルは、仮想ページサイズが4キロバイトなら、1つの翻訳に相当する。他の実施形態では、仮想ページは複数のタイルを含んでいることもあれば、1つのタイルが複数のページに亘って広がっていることもあろう。
ソースバッファ70内に、スケール領域76が定義されていることもある。スケール領域76は、表示させるソース画像としてもよい。ソースバッファ70は、システム内でサポートされている最大サイズの画像であってもよいが、画像は最大より小さい又は最大に等しい何れのサイズであってもよい。スケール領域は、ソース画像が、以上に論じられている様に画像処理パイプラインのスケーラによってスケーリングされることからその様に呼ばれている。ソースベースアドレス72が画像処理パイプラインへプログラムされ、同様にスケール領域76の場所及びサイズもプログラムされる。
図3に示されている様に、ソースバッファ70の幅に及んでいるタイルの数をNとし、ここにNは整数とする。例えば、或る実施形態では、ソースバッファ70は、4キロバイトの幅であるとして、タイル幅が256バイトなら、Nは16ということになる。他の実施形態では、他の幅が使用されていてもよい。
図4は、スケール領域76のフェッチングが開始されたときのソースバッファ70とスケール領域76を示している。フェッチ/TU60は、フェッチされるスケール領域76の第1の画素を含んでいるタイルから初めて、最初の2N分の翻訳をプリフェッチすることになる。図4の例では、開始タイルはタイル2N+1であり、従って最初の2N分のタイルの最終タイル(及び翻訳)はタイル4Nである。これらのタイルは、初めにプリフェッチされる翻訳を示すために図4に線点で描かれている。図4は、更に、処理のもっと後の時点、即ち1つ目のタイル行が完了した後の、ソースバッファ70とスケール領域76を示している(矢印80)。この時点で、フェッチ/TU60は、タイル2N+1から3N−1までの範囲内の画素のフェッチングを完了している。その結果、これらの翻訳はタイル3Nについての翻訳共々無効にされてしまっている。従って、タイル4N+1からタイル5Nまでの新たな翻訳がプリフェッチされたところである。
フェッチ/TU60は、フェッチ/TU60のフェッチとタイルとの間の不一致を許容するために、2N分の翻訳(ここにNはソースバッファ70の幅に亘るタイルの数である)をプリフェッチするように構成されているものである。例えば、或る実施形態では、フェッチ/TU60は、ソースバッファ70から一度に5ライン分をフェッチするように構成されていてもよい。その結果、何れの所与の時点でも、フェッチは同時にタイル2行を含んでいることであろう。現在の行の最後のタイルが完全にフェッチされてしまうと、当該行の翻訳は廃棄され、次の2行についての翻訳が翻訳のプリフェッチングを介して利用可能(又は概ね利用可能)になる。こうして、多くの場合、画像データフェッチは翻訳ミスを一切被らないことであろう。
図4の例では、各行の最初のタイルは使用されていないことを指摘しておく。即ち、画像処理パイプラインは、スケール領域76内のデータだけをフェッチするものとされる。従って、各行の最初のタイルについての翻訳は必要でない。一般的に、ソースバッファ70及びスケール領域76の定義に依っては、それぞれの行に、必要でない翻訳が1つ又はそれ以上あるかもしれない。幾つかの実施形態では、フェッチ/TU60は、使用されることのないタイルについての翻訳のフェッチングを回避するようになっていてもよい。他の実施形態では、フェッチ/TU60は、単純に、1つ1つの翻訳をフェッチしている(不使用翻訳をフェッチするための追加の帯域量が比較的小さいため)。
図5は、フェッチ/TU60の1つの実施形態のブロック線図である。図5の実施形態では、フェッチ/TU60は、翻訳ユニット90(翻訳コントロールユニット90A及び翻訳バッファメモリ90Bを含む)と、フェッチコントロールユニット92と、構成レジスタ94のセットと、を含んでいる。フェッチコントロールユニット92及び翻訳コントロールユニット90Aは、構成レジスタ94へ連結されていてもよい。フェッチコントロールユニット92は、更に、ホストインターフェースユニット64及び翻訳コントロールユニット90Aへ連結されていてもよい。翻訳コントロールユニット90Aは、翻訳バッファメモリ90Bへ連結され、翻訳コントロールユニット90A及び翻訳バッファメモリ90Bはホストインターフェースユニット64からデータを受信するように連結されていてもよい。
概して、フェッチコントロールユニット92は、画像データフェッチメモリオペレーションを求める要求及び翻訳データフェッチオペレーションを求める要求を(翻訳コントロールユニット90Aになり代わって)生成するように構成されている。他の実施形態では、フェッチコントロールユニット90Aは、翻訳データフェッチ要求を、ホストインターフェースユニット64への別個の接続を介して送信していてもよい。フェッチコントロールユニット92は、画像データをフェッチすると、仮想ページアドレス(図5のVA)を翻訳コントロールユニット90Aへ送信するように構成されていてもよい。翻訳コントロールユニット90Aは、対応するエントリを翻訳バッファメモリ90Bから読み出す(図5のRead A)ように構成されていてもよく、メモリは対応するエントリから物理アドレス及び有効ビットを返す(図5のRead PA、V)ようになっていてもよい。翻訳コントロールユニット90Aは、翻訳が有効であることをチェックし、翻訳が有効でない場合にはページフォールト(PF)を、或いは翻訳が有効である場合には物理アドレス(PA)を、フェッチコントロールユニット92へ返すようになっていてもよい。他の実施形態では、更に、許可制御の様な追加の翻訳属性がチェックされていてもよく、翻訳が有効でないか又は属性がアクセスを許可しない場合には、ページフォールトが合図されるようになっていてもよい。
加えて、フェッチコントロールユニット92が新たなソース画像のフェッチを開始しようとするとき、フェッチコントロールユニット92は、開始仮想アドレスを送信するように構成されていて、新たなソース画像のスタート(図5のStart)を合図するようになっていてもよい。新たなソース画像のスタートに応えて、翻訳コントロールユニット90Aは、翻訳バッファ90Bをクリアにし、開始仮想アドレスの翻訳から始まる翻訳についてプリフェッチを開始する、ように構成されていてもよい。フェッチコントロールユニット92は、更に、所与の仮想ページからのデータのフェッチングが完了したことを指し示すフリー指示(図5のFree)を送信するように構成されていてもよい。翻訳コントロールユニット90Aは、翻訳バッファメモリ90B内の対応する翻訳を無効にし、直近にフェッチされた仮想アドレスに連続する追加の翻訳をプリフェッチする、ように構成されていてもよい。翻訳コントロールユニット90Aは、翻訳がプリフェッチされた直近の仮想アドレスを格納して(MstRcntVAレジスタ96)、追加の翻訳プリフェッチを生成するように構成されていてもよい。1つの実施形態では、フリー指示は、最も古いものを先に一度に1つずつ翻訳を解放するようアサートされる信号であってもよい。別の実施形態では、フリー指示は、フリーにする最も古い翻訳の数のカウントであってもよい。更に他の実施形態では、解放させるページの仮想アドレスが供給されてもよい。
翻訳コントロールユニット90Aは、1つの実施形態では、翻訳バッファメモリ90Bを先入れ先出し(FIFO)バッファとして管理するように構成されていてもよい。従って、メモリ90Bに対する先頭及び末尾のポインタが(例えばレジスタ98内に)維持されていてもよい。翻訳コントロールユニット90Aは、メモリ90Bを満たすプリフェッチ(図5のPref)を生成するように構成されていてもよい。ホストインターフェースユニット64によってプリフェッチデータが返されたとき、翻訳コントロールユニット90Aは書き込みアドレス(図5のWrite A)を生成して翻訳バッファメモリ90Bを更新するように構成されていてもよい。
翻訳バッファメモリ90Bは、概して、エントリのセットへ配列されている何れの型式のメモリ(例えば、ランダムアクセスメモリ、レジスタ又はフロップのセット、など)を備えていてもよい。それぞれのエントリは、翻訳(例えば、図示の実施形態でのPA及び有効ビット、他の実施形態での実施可能な他の属性)を格納するものである。従って、翻訳バッファ90Bは、或る実施形態では、2N分のエントリを含んでいる。幾つかの実施形態では、エントリには翻訳の仮想ページ番号も保存され、フェッチコントロールユニット92からの仮想アドレスは、ヒットを検知するべくメモリ90Bと対照されてゆく(又は、ヒットすると期待されるエントリが読み出され、仮想アドレスがエントリからの仮想ページと比較されるようになっていてもよい)。
構成レジスタ94は、様々なプログラム可能な値をフェッチ/TUユニット60に格納することができる。レジスタ94には、例えば、ソースベースアドレス72(仮想アドレス)が格納されてもよい。レジスタ94には、同様に1つ又はそれ以上のページ表ベースアドレス(物理アドレス)が格納されてもよい。それぞれのページ表ベースアドレスは、メモリ内のページ表を位置指定している。例えば、図5の実施形態では、ページ表ベースゼロ(PTBase0)、PTBase1、及びPTBase2の、3つのページ表ベースアドレスがサポートされている。フェッチ/TU60によってサポートされるページ表の数は、ソースバッファ70の最大サポートサイズに基づくことであろう。それぞれのページ表は、例えばサイズを1ページとし、特定の数の翻訳を格納するものとしてもよい。そうすると、最大実施可能ソースバッファ70によってカバーされるページ数をページ表1つに格納される翻訳の数で割ったものが、フェッチ/TU60によってサポートされるページ表の数ということになる。他の実施形態は、ページ表ベースアドレスの最大数より少ないページ表をサポートしており、レジスタ94はソース画像が処理されると更新されるようになっていてもよい。
翻訳コントロールユニット90Aは、翻訳データが提供されようとしているという指示と併せてホストインターフェース64によって供給される翻訳データの有効ビット(Data V)を受信するように連結されていてもよい。翻訳コントロールユニット90Aは、翻訳が提供されようとしていることを検知し、応えて翻訳メモリ90Bを更新することになろう。
図6は、フェッチコントロールユニット92の1つの実施形態の或る特定のオペレーションを説明するフローチャートである。理解し易くするために、図6ではブロックは特定の順序で示されているが、他の順序が使用されてもよい。複数ブロックが、フェッチコントロールユニット92の組合せ論理で並列に遂行されていてもよい。諸ブロック、ブロックの組合せ、及び/又はフローチャート全体は、複数のクロックサイクルに亘ってパイプライン化されていてもよい。フェッチコントロールユニット92は、図6に示されているオペレーションを実施するように構成されていてもよい。
フェッチコントロールユニット92が、スケール領域76内の開始仮想アドレスをフェッチしようと準備している(例えば、ソース画像の最初の画素/タイル−判定ブロック100、「イエス」の行程)場合、フェッチコントロールユニット92は、翻訳コントロールユニット90Aへスタートを合図する(ブロック102)ように構成されていてもよい。フェッチコントロールユニット92は、翻訳に向けて開始仮想アドレスを翻訳コントロールユニット90Aへ送信する(ブロック104)ように構成されていてもよい。仮想アドレスが開始仮想アドレスでない(判定ブロック100、「ノー」の行程)場合には、スタートは合図されないが、なおも仮想アドレスは翻訳のために送信される(ブロック104)ことになる。
翻訳がページフォールトを生じさせた(仮想アドレスに応えた翻訳コントロールユニット90Aによってフェッチコントロールユニット92へ合図される−判定ブロック106、「イエス」の行程)場合、フェッチコントロールユニット92は、割り込みをプロセッサ16のうちの1つへ送る(ブロック108)ように構成されていて、データのフェッチングを停止させてもよい。フェッチコントロールユニット92は、翻訳が成功しなかった仮想アドレスを格納するレジスタを含んでいてもよい。代わりに、翻訳コントロールユニット90Aは、前記レジスタを含んでいてもよいし、或いはレジスタ96内の直近VAをフォールトを生じさせている仮想アドレスで上書きするように構成されていてもよい。
翻訳が、ページフォールトを生じさせていない(判定ブロック106、「ノー」の行程)場合、フェッチコントロールユニット92は、翻訳コントロールユニット90Aから物理アドレス(PA)を受信することであり、PAを使用してフェッチ要求を送信する(ブロック110)ように構成されていてもよい。幾つかの実施形態では、フェッチコントロールユニット92は、翻訳からのPAを保持するように構成されていて、物理ページ内でフェッチコントロールユニット92がページの終わりにたどりつくまでフェッチを生成することになる。他の実施形態では、フェッチコントロールユニット92は、物理ページ内のフェッチの度毎に再度翻訳を読み出すようになっていてもよい。
フェッチコントロールユニット92は、フェッチが物理ページの終わりにたどり着いたときにそれを検知する(判定ブロック112、「イエス」の行程)ように構成されていて、翻訳コントロールユニット90Aへフリーを合図し(ブロック114)、翻訳コントロールユニット90Aに対応する翻訳を無効にさせ新たな翻訳をプリフェッチさせるようにしてもよい。別の実施形態では、フェッチコントロールユニット92は、複数のフリーページを溜めこんだ末に複数ページについてフリーを合図するようになっていてもよい。更に別の実施形態では、翻訳コントロールユニット90Aは、別の翻訳プリフェッチ要求を出すのに先立って複数のフリーを溜めるようになっていてもよい。フェッチコントロールユニット92は、更に、翻訳及びフェッチ生成のために別のVAを発行する(ブロック104)ように構成されていてもよい。
スケール領域76のフェッチングが完了していない(判定ブロック116、「ノー」の行程)場合、フェッチコントロールユニット92は、PAからの追加のフェッチ(ブロック110)を生成するように構成されていてもよい。
図7は、フェッチコントロールユニット92の1つの実施形態の或る特定の追加のオペレーションを説明するフローチャートである。理解し易くするために、図7ではブロックは特定の順序で示されているが、他の順序が使用されてもよい。複数ブロックが、フェッチコントロールユニット92の組合せ論理で並列に遂行されていてもよい。諸ブロック、ブロックの組合せ、及び/又はフローチャート全体は、複数のクロックサイクルに亘ってパイプライン化されていてもよい。フェッチコントロールユニット92は、図7に示されているオペレーションを実施するように構成されていてもよい。翻訳プリフェッチ要求を受信したこと(判定ブロック120、「イエス」の行程)に応えて、フェッチコントロールユニット92は、1つ又はそれ以上のページ表エントリを読み出すページ表読み出し要求を送信する(ブロック122)ように構成されていてもよい。ページ表エントリは、翻訳コントロールユニット90Aによってプリフェッチされた直近の仮想アドレスに連続した次の仮想ページに対応するページ表エントリを含むものである。追加のページ表エントリも同様に読み出される。1つの実施形態では、連続した仮想アドレスは、ページ表の連続したページ表エントリをアドレス指定している。従って、一度に複数のページ表エントリをプリフェッチすると、近い将来に翻訳ユニット90によって必要とされるであろう複数の翻訳がプリフェッチされることになる。
次に図8を参照すると、翻訳コントロールユニット90Aの1つの実施形態の或る特定のオペレーションを説明するフローチャートが示されている。理解し易くするために、図8ではブロックは特定の順序で示されているが、他の順序が使用されてもよい。複数ブロックが、翻訳コントロールユニット90Aの組合せ論理で並列に遂行されていてもよい。諸ブロック、ブロックの組合せ、及び/又はフローチャート全体は、複数のクロックサイクルに亘ってパイプライン化されていてもよい。翻訳コントロールユニット90Aは、図8に示されているオペレーションを実施するように構成されていてもよい。
翻訳コントロールユニット90Aがフェッチコントロールユニット92からフリー指示を受信した(判定ブロック130、「イエス」の行程)場合、翻訳コントロールユニット90Aは、翻訳バッファ90B内の1つ又はそれ以上の翻訳を無効にする(ブロック132)ように構成されていてもよい。例えば、或る実施形態では、翻訳コントロールユニット90Aは、翻訳バッファ90BをFIFOとして管理するように構成されていてもよい。その様な実施形態では、バッファ内の最も古い翻訳はFIFOの末尾ポインタのところにあろう。翻訳コントロールユニット90Aは、翻訳がプリフェッチされた直近の仮想ページに隣接している(又は連続している)仮想ページについての翻訳プリフェッチ要求を生成する(ブロック134)ように構成されていてもよい。以上に論じられている様に、直近の仮想アドレスはレジスタ96内にあるとされている。どれ程多くのページがフリーになるかに依って、1つ又はそれ以上のプリフェッチが生成されることであろう。一般的に、翻訳コントロールユニット90Aは、翻訳バッファ90Bを満たすのに十分な翻訳をプリフェッチするように構成されていてもよい。翻訳コントロールユニット90Aは、更に、レジスタ96内の直近の仮想アドレスを更新する(ブロック136)ように構成されていてもよい。或る実施形態では、翻訳コントロールユニット90Aは、複数の翻訳プリフェッチが発せられる態勢が整うまで、翻訳プリフェッチ要求を出すのを遅らせるように構成されていてもよい。
フェッチコントロールユニット92からのスタート指示を仮想アドレスと共に受信したこと(判定ブロック138、「イエス」の行程)に応えて、翻訳コントロールユニット90Aは、翻訳バッファ90Bをクリアし、当該仮想アドレスから始まる2N分の翻訳(ここに、Nは1行中のタイルの数又は行中の画素の数)をプリフェッチする(ブロック140)、ように構成されていてもよい。翻訳コントロールユニット90Aは、更に、直近VAレジスタ96を、2N分の翻訳の最後の翻訳に対するVAで更新する(ブロック142)ように構成されていてもよい。
そうではなく、スタート指示が提供されていない翻訳要求(判定ブロック138、「ノー」の行程)に応えて、翻訳コントロールユニット90Aは、翻訳バッファからVAについて対応する翻訳を読み出す(ブロック144)ように構成されていてもよい。翻訳が有効である(判定ブロック146、「イエス」の行程)場合、翻訳コントロールユニット90Aは、対応する翻訳からのPAをフェッチコントロールユニット92へ供給する(ブロック148)ように構成されていてもよい。翻訳が有効でない(判定ブロック146、「ノー」の行程)場合、翻訳コントロールユニット90Aは、フェッチコントロールユニット92へページフォールトを合図する(ブロック150)ように構成されていてもよい。
幾つかの実施形態では、翻訳ユニット90によって使用されている翻訳は、有効ビットに加えて1つ又はそれ以上の保護/制御属性を含んでいてもよいことを指摘しておく。例えば、その様な属性には、読み出し許可及び書き込み許可が含められる。読み出し許可が提供されなければ、翻訳は読み出しを許可されないようになっていてもよい。許可は、特権レベルに基づいていてもよい。任意の属性セットが提供され、チェックされてもよい。チェックに合格したら、PAが供給されることであろう。チェックに不合格なら、ページフォールトが合図されることであろう。
次に図9を参照すると、メモリ12(図1の実施形態のメモリ12A-12Bに及んでいてもよい)の1つの実施形態のブロック線図が示されている。メモリ12は、様々なページ表160A−160Cを格納していて、それらページ表のそれぞれは各ページ表ベースアドレス(図9では、PTBase0、PTBase1、及びPTBase2)によって位置指定されていてもよい。それぞれのページ表160A−160Bは、翻訳エントリのセットを含んでいて、それら翻訳エントリのそれぞれは、この実施形態ではメモリ12内のタイルを位置指定している。こうして、物理アドレスPA0はタイル0 162Aを位置指定し、PA2はタイル1 162Bを位置指定している、という具合である。ソースバッファ70内のページ(例えばこの実施形態ではタイル)の連続したVAは、所与のページ表160A−160C内の連続した翻訳によって翻訳されることになる。ページ表160A−160Bの最後の翻訳がフェッチされたら、次の連続した翻訳は、次のページ表160B−160Cのそれぞれ最初の翻訳ということになる。
次に図10を参照すると、システム350の1つの実施形態のブロック線図が示されている。図示の実施形態では、システム350は、外部メモリ12(例えば図1のメモリ12A−12B)へ連結されている集積回路10の少なくとも1つのインスタンスを含んでいる。集積回路10は、1つ又はそれ以上の周辺デバイス354及び外部メモリ12へ連結されている。集積回路10への供給電圧並びにメモリ12及び/又は周辺デバイス354への1つ又はそれ以上の供給電圧を供給する電源356も提供されている。幾つかの実施形態では、集積回路10のインスタンスが2つ以上含まれていてもよい(また同様に2つ以上の外部メモリ12が含まれていてもよい)。
周辺デバイス354は、システム350の型式に依存して、何れの所望の回路構成を含んでいてもよい。例えば、1つの実施形態では、システム350は、モバイルデバイス(例えば、パーソナルデジタルアシスタント(PDA)、スマートフォン、など)であってもよく、周辺デバイス354には、wifi、ブルートゥース、セルラー、全地球測位システム、など、の様な、様々な型式のワイヤレス通信用のデバイスを含めることができる。周辺デバイス354には、RAMストレージ、ソリッドステートストレージ、又はディスクストレージ、を含め、追加のストレージも含まれる。周辺デバイス354には、タッチディスプレイスクリーンやマルチタッチディスプレイスクリーンを含むディスプレイスクリーン、キーボード又は他の入力デバイス、マイクロフォン、スピーカ、など、の様なユーザーインターフェースデバイスを含めることができる。他の実施形態では、システム350は、何れかの型式のコンピューティングシステム(例えば、デスクトップパーソナルコンピュータ、ラップトップ、ワークステーション、ネットトップ、など)であってもよい。
以上の開示がくまなく理解されたからには、当業者には数多くの変型及び修正が自明となることであろう。付随の特許請求の範囲は、その様な変型及び修正全てを網羅すると解釈されるべきものとする。
5 システム
10 集積回路(IC)
12A−12B メモリ
14 中央プロセッサユニット(CPU)ブロック
16 プロセッサ
18 レベル2(L2)キャッシュ
20 非リアルタイム(NRT)周辺デバイス
22 リアルタイム(RT)周辺デバイス
24 画像プロセッサ
26 ディスプレイパイプ
28 ポートアービタ
30 ブリッジ/ダイレクトメモリアクセス(DMA)コントローラ
32 周辺デバイス
34 周辺デバイスインターフェースコントローラ
36 グラフィックユニット
38A−38E グラフィックコントローラ
40 メモリコントローラ
42A−42B メモリ物理的インターフェース回路(PHY)
44A−44E ポート
46 翻訳ユニット
50A−50B ユーザーインターフェースユニット
52 映像ユニット
54 ブレンドユニット
56 バッファ
58 スケーラ
60 フェッチ/翻訳ユニット(フェッチ/TU)
62 映像パイプ
64 ホストインターフェースユニット
70 ソースバッファ
72 ソースベースアドレス
74 画像タイル
76 スケール領域
90 翻訳ユニット
90A 翻訳コントロールユニット
90B 翻訳バッファメモリ
92 フェッチコントロールユニット
94 構成レジスタ
96 直近仮想アドレスレジスタ
98 レジスタ
160A、160B、160C ページ表
162A、162B タイル
350 システム
354 周辺デバイス
356 電源
TW タイル幅
TH タイル高さ

Claims (16)

  1. 複数のエントリを備えるメモリであって、それぞれのエントリが画像データのソースバッファに対応する異なった仮想ページについての翻訳を格納するように構成されている、メモリと、
    前記メモリへ連結されている制御回路であって、メモリを翻訳の先入れ先出しバッファ(FIFO)として維持するように構成されていて、前記ソースバッファに対応する1つ又はそれ以上の仮想ページからのデータフェッチングが完了したことの指示を受信するように連結されていて、前記指示に応えて対応する1つ又はそれ以上の最も古い翻訳を前記メモリから廃棄して前記ソースバッファに対応する他の仮想ページについての追加の翻訳をプリフェッチするように構成されている、制御回路において、前記他の仮想ページは、2番目の仮想ページに隣接している1番目の仮想ページを含んでおり、前記2番目の仮想ページについての翻訳は、前記メモリ内に格納されている前記翻訳のうちの直近にフェッチされた翻訳である、制御回路と、を備える翻訳ユニットであって
    前記制御回路は、前記ソースバッファからの画像データの処理が始まろうとしていることを指し示すスタート指示を受信するように連結されており、前記翻訳ユニットは、前記スタート指示に応えて前記翻訳のメモリをクリアにするように構成されている、翻訳ユニット。
  2. 前記制御回路は、前記ソースバッファから或る数の連続した仮想ページについての翻訳をプリフェッチするように構成されており、前記数は、前記メモリ内の前記複数のエントリの数に等しい、請求項1に記載の翻訳ユニット。
  3. 前記数は、前記ソースバッファの一行中の仮想ページの数の二倍である、請求項2に記載の翻訳ユニット。
  4. 複数の画像処理パイプラインであって、そのそれぞれが、当該画像処理パイプラインのための画像データをフェッチするように構成されているフェッチ/メモリ管理ユニットを含んでおり、前記フェッチ/メモリ管理ユニットは、請求項1に記載の翻訳ユニットを備えている、複数の画像処理パイプラインと、
    前記複数の画像処理パイプラインへ連結されているホストインターフェースであって、前記複数の翻訳についてのプリフェッチオペレーション及びメモリへの前記画像データについてのフェッチオペレーションを送信するように構成されている、ホストインターフェースと、を備えているディスプレイパイプ。
  5. 前記複数の画像処理パイプラインは、静止画像をフェッチするように構成されている少なくとも1つのユーザーインターフェースユニットを含んでいる、請求項4に記載のディスプレイパイプ。
  6. 前記複数の画像処理パイプラインは、映像シーケンスのフレームをフェッチするように構成されている少なくとも1つの映像パイプラインを含んでいる、請求項5に記載のディスプレイパイプ。
  7. 前記少なくとも1つの映像パイプラインは、複数のフェッチ/メモリ管理ユニットであって、そのそれぞれが異なった像平面に対応している、複数のフェッチ/メモリ管理ユニットを含んでいる、請求項6に記載のディスプレイパイプ。
  8. メモリコントローラへインターフェースするように構成されているポートインターフェースユニットと、
    画像プロセッサと、
    前記画像プロセッサへ連結されていて当該画像プロセッサについて最近使用された翻訳をキャッシュするように構成されている翻訳ユニットであって、前記画像プロセッサからのメモリオペレーションを受信して前記メモリオペレーションでの仮想アドレスを翻訳するように連結されていて、前記メモリオペレーションを前記翻訳されたアドレスと共に前記ポートインターフェースユニットへ送信するように構成されている、翻訳ユニットと、 請求項4に記載のディスプレイパイプと、を備えている装置。
  9. 前記翻訳ユニットは、当該翻訳ユニット内のミスに応えて、前記ミスに対する翻訳をフェッチして当該翻訳をキャッシュするように構成されている、請求項8に記載の装置。
  10. 前記追加の翻訳は、前記翻訳ユニット内の直近にプリフェッチされた翻訳に連続している、請求項8に記載の装置。
  11. 前記翻訳ユニットによってプリフェッチされる前記複数の仮想ページは、処理されようとしているソース画像内の少なくとも2行分の仮想ページを含んでいる、請求項8に記載の装置。
  12. 前記画像データは、画像データのタイルとして配列されており、前記複数の仮想ページのそれぞれの仮想ページはタイル1つを格納している、請求項8に記載の装置。
  13. 複数の翻訳を、表示のための画像データを処理するように構成されているディスプレイパイプ内のメモリへプリフェッチする段階であって、前記複数の翻訳は前記画像データを含んでいるソースバッファに対応する仮想ページについての翻訳であり、前記メモリは翻訳の先入れ先出しバッファ(FIFO)を維持している、翻訳をディスプレイパイプ内のメモリへプリフェッチする段階と、
    前記複数の翻訳の1つ又はそれ以上であって当該複数の翻訳の中で最も古い翻訳に対応する1つ又はそれ以上の仮想ページに関し、データフェッチングが完了しているという指示を受信する段階と、
    前記指示に応えて、前記複数の翻訳のうちの最も古い1つ又はそれ以上の翻訳を破棄する段階と、
    前記指示に応えて、1つ又はそれ以上の追加の翻訳をプリフェッチする段階であって、前記追加の翻訳の1番目の翻訳は、メモリ内ページ表中の前記複数の翻訳のうちの直近にフェッチされた翻訳に隣接している、追加の翻訳をプリフェッチする段階と、
    前記ディスプレイパイプが前記ソースバッファの処理を始めようとしていることを指し示すスタート指示を受信する段階と、
    前記スタート指示に応えて、前記ディスプレイパイプ内の翻訳ユニットから翻訳をクリアし、前記複数の翻訳をプリフェッチする段階と、を備えている方法。
  14. 前記1つ又はそれ以上の追加の翻訳は、少なくとも2つの翻訳であり、前記少なくとも2つの翻訳は前記メモリ内ページ表の中で連続している、請求項13に記載の方法。
  15. 前記複数の翻訳は、前記メモリ内ページ表の中で連続している、請求項14に記載の方法。
  16. 前記複数の翻訳の数は、少なくとも、前記ソースバッファ内の2行分の仮想ページをプリフェッチするのに十分である、請求項13に記載の方法。
JP2013539882A 2010-11-19 2011-11-04 ディスプレイパイプにおけるストリーミング式翻訳 Expired - Fee Related JP5688823B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/950,293 2010-11-19
US12/950,293 US8405668B2 (en) 2010-11-19 2010-11-19 Streaming translation in display pipe
PCT/US2011/059384 WO2012067848A1 (en) 2010-11-19 2011-11-04 Streaming translation in display pipe

Publications (2)

Publication Number Publication Date
JP2013543195A JP2013543195A (ja) 2013-11-28
JP5688823B2 true JP5688823B2 (ja) 2015-03-25

Family

ID=45092204

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013539882A Expired - Fee Related JP5688823B2 (ja) 2010-11-19 2011-11-04 ディスプレイパイプにおけるストリーミング式翻訳

Country Status (7)

Country Link
US (2) US8405668B2 (ja)
EP (1) EP2466474A1 (ja)
JP (1) JP5688823B2 (ja)
KR (1) KR101379524B1 (ja)
CN (1) CN103221995B (ja)
TW (1) TWI466060B (ja)
WO (1) WO2012067848A1 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8797359B2 (en) * 2011-11-29 2014-08-05 Apple Inc. Inline image rotation
US9495308B2 (en) 2012-05-22 2016-11-15 Xockets, Inc. Offloading of computation for rack level servers and corresponding methods and systems
US20130318280A1 (en) 2012-05-22 2013-11-28 Xockets IP, LLC Offloading of computation for rack level servers and corresponding methods and systems
WO2014031495A2 (en) * 2012-08-18 2014-02-27 Arteris SAS System translation look-aside buffer with request-based allocation and prefetching
US9250954B2 (en) * 2013-01-17 2016-02-02 Xockets, Inc. Offload processor modules for connection to system memory, and corresponding methods and systems
US8963938B2 (en) * 2013-01-18 2015-02-24 Apple Inc. Modified quality of service (QoS) thresholds
US9019291B2 (en) 2013-02-25 2015-04-28 Apple Inc. Multiple quality of service (QoS) thresholds or clock gating thresholds based on memory stress level
EP2972896B1 (en) * 2013-03-15 2018-05-02 Intel Corporation Mechanism for facilitating dynamic and efficient management of translation buffer prefetching in software programs at computing systems
EP3014456A4 (en) * 2013-06-24 2017-01-18 Intel Corporation Page management approach to fully utilize hardware caches for tiled rendering
US9747658B2 (en) * 2013-09-06 2017-08-29 Apple Inc. Arbitration method for multi-request display pipeline
US9645934B2 (en) 2013-09-13 2017-05-09 Samsung Electronics Co., Ltd. System-on-chip and address translation method thereof using a translation lookaside buffer and a prefetch buffer
EP2874066B1 (en) * 2013-11-15 2020-07-15 STMicroelectronics International N.V. Method in a memory management unit and a memory management unit, for managing address translations in two stages
US9472169B2 (en) 2014-04-22 2016-10-18 Apple Inc. Coordinate based QoS escalation
JP5734492B1 (ja) * 2014-05-08 2015-06-17 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置
US9990690B2 (en) * 2015-09-21 2018-06-05 Qualcomm Incorporated Efficient display processing with pre-fetching
KR102491622B1 (ko) * 2015-11-17 2023-01-25 삼성전자주식회사 가상 어드레스 생성기의 동작 방법과 이를 포함하는 시스템의 동작 방법
GB2545398B (en) * 2015-12-08 2020-02-19 Advanced Risc Mach Ltd Advance loading of memory page access data in data processing systems
US10402332B2 (en) 2016-05-24 2019-09-03 Xilinx, Inc. Memory pre-fetch for virtual memory
US10417140B2 (en) * 2017-02-24 2019-09-17 Advanced Micro Devices, Inc. Streaming translation lookaside buffer
CN110941565B (zh) * 2018-09-25 2022-04-15 北京算能科技有限公司 用于芯片存储访问的内存管理方法和装置
CN111797052B (zh) * 2020-07-01 2023-11-21 上海兆芯集成电路股份有限公司 系统单芯片以及系统存储器加速存取方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5319760A (en) 1991-06-28 1994-06-07 Digital Equipment Corporation Translation buffer for virtual machines with address space match
US6611272B1 (en) 1998-07-02 2003-08-26 Microsoft Corporation Method and apparatus for rasterizing in a hierarchical tile order
AU5688199A (en) * 1998-08-20 2000-03-14 Raycer, Inc. System, apparatus and method for spatially sorting image data in a three-dimensional graphics pipeline
US6628294B1 (en) * 1999-12-31 2003-09-30 Intel Corporation Prefetching of virtual-to-physical address translation for display data
US6680738B1 (en) * 2002-02-22 2004-01-20 Neomagic Corp. Single-block virtual frame buffer translated to multiple physical blocks for multi-block display refresh generator
US6812929B2 (en) 2002-03-11 2004-11-02 Sun Microsystems, Inc. System and method for prefetching data from a frame buffer
US6806883B2 (en) 2002-03-11 2004-10-19 Sun Microsystems, Inc. System and method for handling display device requests for display data from a frame buffer
CN100517459C (zh) * 2004-04-16 2009-07-22 罗姆股份有限公司 图像处理装置
US20060004984A1 (en) 2004-06-30 2006-01-05 Morris Tonia G Virtual memory management system
US20060179236A1 (en) 2005-01-13 2006-08-10 Hazim Shafi System and method to improve hardware pre-fetching using translation hints
US7545382B1 (en) * 2006-03-29 2009-06-09 Nvidia Corporation Apparatus, system, and method for using page table entries in a graphics system to provide storage format information for address translation
US8024547B2 (en) 2007-05-01 2011-09-20 Vivante Corporation Virtual memory translation with pre-fetch prediction
US20080276067A1 (en) 2007-05-01 2008-11-06 Via Technologies, Inc. Method and Apparatus for Page Table Pre-Fetching in Zero Frame Display Channel
US8185692B2 (en) * 2009-02-09 2012-05-22 Oracle America, Inc. Unified cache structure that facilitates accessing translation table entries

Also Published As

Publication number Publication date
US20130179638A1 (en) 2013-07-11
JP2013543195A (ja) 2013-11-28
KR20120054549A (ko) 2012-05-30
TW201229957A (en) 2012-07-16
US20120131306A1 (en) 2012-05-24
US8994741B2 (en) 2015-03-31
CN103221995A (zh) 2013-07-24
CN103221995B (zh) 2016-03-02
WO2012067848A1 (en) 2012-05-24
KR101379524B1 (ko) 2014-03-28
EP2466474A1 (en) 2012-06-20
US8405668B2 (en) 2013-03-26
TWI466060B (zh) 2014-12-21

Similar Documents

Publication Publication Date Title
JP5688823B2 (ja) ディスプレイパイプにおけるストリーミング式翻訳
US11074190B2 (en) Slot/sub-slot prefetch architecture for multiple memory requestors
US9218286B2 (en) System cache with partial write valid states
US9201796B2 (en) System cache with speculative read engine
US9645934B2 (en) System-on-chip and address translation method thereof using a translation lookaside buffer and a prefetch buffer
US9135177B2 (en) Scheme to escalate requests with address conflicts
US10593305B2 (en) Prefetching page access data for input surfaces requiring processing
US20140089600A1 (en) System cache with data pending state
US11023410B2 (en) Instructions for performing multi-line memory accesses
US8880847B2 (en) Multistream prefetch buffer
US8886886B2 (en) System cache with sticky removal engine
US20240126457A1 (en) Dynamic Allocation of Cache Memory as RAM
US10580110B2 (en) Hardware structure to track page reuse
US11868269B2 (en) Tracking memory block access frequency in processor-based devices
US9652560B1 (en) Non-blocking memory management unit
US20080282054A1 (en) Semiconductor device having memory access mechanism with address-translating function
US6801988B2 (en) Data buffer for block unit data transfer to SDRAM
US11023162B2 (en) Cache memory with transient storage for cache lines
US11704245B2 (en) Dynamic allocation of cache memory as RAM
KR20240067880A (ko) 프로세서 기반 디바이스에서의 메모리 블록 액세스 빈도 추적

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140623

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140911

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141008

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141224

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: 20150121

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150123

R150 Certificate of patent or registration of utility model

Ref document number: 5688823

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees