(57)【特許請求の範囲】
【請求項１】
コンテンツを視覚的に提示するディスプレイと、
メモリロケーションを有するメモリデバイスと、
アトミックデータバッファを有する演算ロジックユニット（ＡＬＵ）と、
前記メモリデバイスと前記ＡＬＵとに結合されたメモリアクセスコントローラと
を備え、
前記メモリアクセスコントローラは、
前記コンテンツに対してアトミックオペレーションを実行するよう要求するリクエストであり、前記メモリロケーションを特定する前記リクエストを受信するリクエストモジュールと、
１または複数のペンディング中のアトミックオペレーションと前記メモリロケーションとの関連に応答して、前記１または複数のペンディング中のアトミックオペレーションのための前記ＡＬＵの実行パイプラインに前記メモリロケーションを特定する前記リクエストにより実行するよう要求されるアトミックオペレーションを追加するアトミックコントローラと、
を有し、
前記実行パイプラインに追加された前記アトミックオペレーションに対して、前記アトミックオペレーションを実行するよう要求する前記リクエストにより特定される前記メモリロケーションへのアクセスの少なくとも一部を省略して、前記アトミックデータバッファを用いる、システム。
【請求項２】
前記アトミックコントローラは、前記リクエストにより特定されるメモリロケーションに対応するリンクリストに、前記リクエストが実行するよう要求する前記アトミックオペレーションを追加することにより、前記実行パイプラインに前記アトミックオペレーションを追加するリンクリストモジュールを含み、
前記リンクリストは、前記メモリロケーションに対応して設けられている、請求項１に記載のシステム。
【請求項３】
前記メモリアクセスコントローラはさらに、ペンディング中のアトミックオペレーションが前記メモリロケーションに関連していない場合に前記メモリロケーションからの読み取りを開始し、前記メモリロケーションからデータを受信するメモリインタフェースを有し、
前記アトミックコントローラは、前記メモリロケーションのための実行パイプラインを作成するパイプラインモジュールを含み、
前記メモリアクセスコントローラはさらに、前記データを前記ＡＬＵに送信し、前記アトミックオペレーションに関連する修正を実行するよう前記ＡＬＵに命令するデータモジュールを有し、
前記パイプラインモジュールは、前記修正の結果を前記ＡＬＵの前記アトミックデータバッファに格納するよう前記ＡＬＵに命令する、請求項１に記載のシステム。
【請求項４】
前記メモリアクセスコントローラはさらに、
前記ＡＬＵから前記アトミックオペレーションの結果を受信する結果モジュールと、
前記アトミックオペレーションを実行するよう要求する前記リクエストの発信者へ前記結果を送信する処理応答モジュールと、
を有し、
前記アトミックコントローラは、前記実行パイプラインの次のアトミックオペレーションを特定し、前記次のアトミックオペレーションに関連する後の修正を実行するよう前記ＡＬＵに命令し、前記ＡＬＵにパイプライン処理コマンドを送信するパイプラインモジュールを含み、
前記メモリアクセスコントローラはさらに、前記実行パイプラインの最後のアトミックオペレーションの結果が前記ＡＬＵから受信されるまで、前記メモリロケーションへの書き込みを保留するメモリインタフェースを有する、請求項１から３のいずれか一項に記載のシステム。
【請求項５】
前記パイプライン処理コマンドは、前記後の修正を実行すべく、前記アトミックデータバッファに格納されているデータを用いるよう前記ＡＬＵに命令する、請求項４に記載のシステム。
【請求項６】
前記メモリアクセスコントローラはさらに、前記メモリロケーションに対するスヌープを検出するスヌープモニタを有し、
前記アトミックコントローラは、前記スヌープに応答して前記実行パイプラインの形成を中断し、
前記メモリアクセスコントローラはさらに、前記実行パイプラインに関連する全てのリクエストが完了した場合に前記スヌープの発信者に応答を送信するスヌープ応答モジュールを有し、
前記アトミックコントローラは、前記応答が前記スヌープの前記発信者へ送信された後に、前記実行パイプラインの形成を再開する、請求項１に記載のシステム。
【請求項７】
アトミックオペレーションを実行するよう要求するリクエストを受信する段階と、
１または複数のペンディング中のアトミックオペレーションと前記リクエストで特定されるメモリロケーションとの関連に応答して、前記１または複数のペンディング中のアトミックオペレーションのための演算ロジックユニット（ＡＬＵ）の実行パイプラインに前記メモリロケーションを特定する前記リクエストにより実行するよう要求されるアトミックオペレーションを追加する段階と
を備え、
前記実行パイプラインに追加された前記アトミックオペレーションに対して、前記アトミックオペレーションを実行するよう要求する前記リクエストにより特定される前記メモリロケーションへのアクセスの少なくとも一部を省略する、メモリアクセスコントローラを動作させる方法。
【請求項８】
前記実行パイプラインに前記アトミックオペレーションを追加する段階は、前記リクエストにより特定されるメモリロケーションに対応するリンクリストに、前記リクエストが実行するよう要求する前記アトミックオペレーションを追加する段階を有し、
前記リンクリストは、前記メモリロケーションに対応して設けられている、請求項７に記載の方法。
【請求項９】
ペンディング中のアトミックオペレーションが前記メモリロケーションに関連していない場合に前記メモリロケーションからの読み取りを開始する段階と、
前記メモリロケーションからデータを受信する段階と、
前記メモリロケーションのための実行パイプラインを作成する段階と、
前記データを前記ＡＬＵに送信する段階と、
前記アトミックオペレーションに関連する修正を実行するよう前記ＡＬＵに命令する段階と、
前記修正の結果を前記ＡＬＵのアトミックデータバッファに格納するよう前記ＡＬＵに命令する段階と
をさらに備える、請求項７に記載の方法。
【請求項１０】
前記ＡＬＵから前記アトミックオペレーションの結果を受信する段階と、
前記アトミックオペレーションを実行するよう要求する前記リクエストの発信者へ前記結果を送信する段階と、
前記実行パイプラインの次のアトミックオペレーションを特定する段階と、
前記次のアトミックオペレーションに関連する後の修正を実行するよう前記ＡＬＵに命令する段階と、
前記ＡＬＵにパイプライン処理コマンドを送信する段階と、
前記実行パイプラインの最後のアトミックオペレーションの結果が前記ＡＬＵから受信されるまで、前記メモリロケーションへの書き込みを保留する段階と
をさらに備える、請求項９に記載の方法。
【請求項１１】
前記パイプライン処理コマンドは、前記後の修正を実行すべく、前記アトミックデータバッファに格納されているデータを用いるよう前記ＡＬＵに命令する、請求項１０に記載の方法。
【請求項１２】
前記メモリロケーションに対するスヌープを検出する段階と、
前記スヌープに応答して前記実行パイプラインの形成を中断する段階と、
前記実行パイプラインに関連する全てのリクエストが完了した場合に前記スヌープの発信者に応答を送信する段階と、
前記応答が前記スヌープの前記発信者へ送信された後に、前記実行パイプラインの形成を再開する段階と
をさらに備える、請求項７に記載の方法。
【請求項１３】
アトミックオペレーションを実行するよう要求するリクエストを受信する手順と、
１または複数のペンディング中のアトミックオペレーションと前記リクエストで特定されるメモリロケーションとの関連に応答して、前記１または複数のペンディング中のアトミックオペレーションのための演算ロジックユニット（ＡＬＵ）の実行パイプラインに前記メモリロケーションを特定する前記リクエストにより実行するよう要求されるアトミックオペレーションを追加する手順と
をメモリアクセスコントローラに実行させ、
前記実行パイプラインに追加された前記アトミックオペレーションに対して、前記アトミックオペレーションを実行するよう要求する前記リクエストにより特定される前記メモリロケーションへのアクセスの少なくとも一部を省略する、プログラム。
【請求項１４】
前記実行パイプラインに前記アトミックオペレーションを追加する手順は、前記リクエストにより特定されるメモリロケーションに対応するリンクリストに、前記リクエストが実行するよう要求する前記アトミックオペレーションを追加する手順を有し、
前記リンクリストは、前記メモリロケーションに対応して設けられている、請求項１３に記載のプログラム。
【請求項１５】
ペンディング中のアトミックオペレーションが前記メモリロケーションに関連していない場合に前記メモリロケーションからの読み取りを開始する手順と、
前記メモリロケーションからデータを受信する手順と、
前記メモリロケーションのための実行パイプラインを作成する手順と、
前記データを前記ＡＬＵに送信する手順と、
前記アトミックオペレーションに関連する修正を実行するよう前記ＡＬＵに命令する手順と、
前記修正の結果を前記ＡＬＵのアトミックデータバッファに格納するよう前記ＡＬＵに命令する手順と
を前記メモリアクセスコントローラに実行させる、請求項１３に記載のプログラム。
【請求項１６】
前記ＡＬＵから前記アトミックオペレーションの結果を受信する手順と、
前記アトミックオペレーションを実行するよう要求する前記リクエストの発信者へ前記結果を送信する手順と、
前記実行パイプラインの次のアトミックオペレーションを特定する手順と、
前記次のアトミックオペレーションに関連する後の修正を実行するよう前記ＡＬＵに命令する手順と、
前記ＡＬＵにパイプライン処理コマンドを送信する手順と、
前記実行パイプラインの最後のアトミックオペレーションの結果が前記ＡＬＵから受信されるまで、前記メモリロケーションへの書き込みを保留する手順と
を前記メモリアクセスコントローラに実行させる、請求項１５に記載のプログラム。
【請求項１７】
前記パイプライン処理コマンドは、前記後の修正を実行すべく、前記アトミックデータバッファに格納されているデータを用いるよう前記ＡＬＵに命令する、請求項１６に記載のプログラム。
【請求項１８】
前記メモリロケーションに対するスヌープを検出する手順と、
前記スヌープに応答して前記実行パイプラインの形成を中断する手順と、
前記実行パイプラインに関連する全てのリクエストが完了した場合に前記スヌープの発信者に応答を送信する手順と、
前記応答が前記スヌープの前記発信者へ送信された後に、前記実行パイプラインの形成を再開する手順と
を前記メモリアクセスコントローラに実行させる、請求項１３に記載のプログラム。
【請求項１９】
アトミックオペレーションを実行するよう要求するリクエストを受信するリクエストモジュールと、
１または複数のペンディング中のアトミックオペレーションと前記リクエストで特定されるメモリロケーションとの関連に応答して、前記１または複数のペンディング中のアトミックオペレーションのための演算ロジックユニット（ＡＬＵ）の実行パイプラインに前記メモリロケーションを特定する前記リクエストにより実行するよう要求されるアトミックオペレーションを追加するアトミックコントローラと、
を備え、
前記実行パイプラインに追加された前記アトミックオペレーションに対して、前記アトミックオペレーションを実行するよう要求する前記リクエストにより特定される前記メモリロケーションへのアクセスの少なくとも一部を省略する、メモリアクセスコントローラ。
【請求項２０】
前記アトミックコントローラは、前記リクエストにより特定されるメモリロケーションに対応するリンクリストに、前記リクエストが実行するよう要求する前記アトミックオペレーションを追加することにより、前記実行パイプラインに前記アトミックオペレーションを追加するリンクリストモジュールを有し、
前記リンクリストは、前記メモリロケーションに対応して設けられている、請求項１９に記載のメモリアクセスコントローラ。
【請求項２１】
前記メモリアクセスコントローラはさらに、ペンディング中のアトミックオペレーションが前記メモリロケーションに関連していない場合に前記メモリロケーションからの読み取りを開始し、前記メモリロケーションからデータを受信するメモリインタフェースを備え、
前記アトミックコントローラは、前記メモリロケーションのための実行パイプラインを作成するパイプラインモジュールを有し、
前記メモリアクセスコントローラはさらに、前記データを前記ＡＬＵに送信し、前記アトミックオペレーションに関連する修正を実行するよう前記ＡＬＵに命令するデータモジュールを備え、
前記パイプラインモジュールは、前記修正の結果を前記ＡＬＵのアトミックデータバッファに格納するよう前記ＡＬＵに命令する、請求項１９に記載のメモリアクセスコントローラ。
【請求項２２】
前記メモリアクセスコントローラはさらに、
前記ＡＬＵから前記アトミックオペレーションの結果を受信する結果モジュールと、
前記アトミックオペレーションを実行するよう要求する前記リクエストの発信者へ前記結果を送信する処理応答モジュールと、
を備え、
前記アトミックコントローラは、前記実行パイプラインの次のアトミックオペレーションを特定し、前記次のアトミックオペレーションに関連する後の修正を実行するよう前記ＡＬＵに命令し、前記ＡＬＵにパイプライン処理コマンドを送信するパイプラインモジュールを有し、
前記メモリアクセスコントローラはさらに、前記実行パイプラインの最後のアトミックオペレーションの結果が前記ＡＬＵから受信されるまで、前記メモリロケーションへの書き込みを保留するメモリインタフェースを備える、請求項２１に記載のメモリアクセスコントローラ。
【請求項２３】
前記パイプライン処理コマンドは、前記後の修正を実行すべく、前記アトミックデータバッファに格納されているデータを用いるよう前記ＡＬＵに命令する、請求項２２に記載のメモリアクセスコントローラ。
【請求項２４】
前記メモリアクセスコントローラはさらに、前記メモリロケーションに対するスヌープを検出するスヌープモニタを備え、
前記アトミックコントローラは、前記スヌープに応答して前記実行パイプラインの形成を中断し、
前記メモリアクセスコントローラはさらに、前記実行パイプラインに関連する全てのリクエストが完了した場合に前記スヌープの発信者に応答を送信するスヌープ応答モジュールを備え、
前記アトミックコントローラは、前記応答が前記スヌープの前記発信者へ送信された後に、前記実行パイプラインの形成を再開する、請求項１９に記載のメモリアクセスコントローラ。
【請求項２５】
請求項７から９のいずれか一項に記載の方法を実施するための手段を備えるメモリアクセスコントローラ。
【発明の詳細な説明】
【背景技術】
【０００１】
アトミックオペレーションは、その間において何ら他のアクセスがメモリロケーションへ許可されることなく、当該メモリロケーションからデータを読み取り、当該データを修正し、修正されたデータをメモリロケーションに書き戻すことを伴い得る。連続したアトミックオペレーションが要求された場合、後のアトミックオペレーションは、その前のアトミックオペレーションが完了するのを順序通り待機する。特定の状況において、アトミックオペレーションに従ってデータを修正するのに演算ロジックユニット（ＡＬＵ）が用いられる。ここでＡＬＵは、処理の対象となっているデータを収容するメモリ（例えば、大容量記憶装置）とは別個である。これにより、各アトミックオペレーションのために、データがメモリからフェッチされ、ＡＬＵにより修正され、データ修正が完了するとメモリへ戻され得る。これらのフェッチおよび戻しは、完了するのに比較的長い時間（例えば、数十のクロックサイクル）を要し得る。実際、いくつかのアトミックオペレーションが連続して並んでいる場合、２つのアトミックオペレーションの間毎に、クロック期間の数の２倍が、メモリとＡＬＵとの間でデータを往復して運ぶのに費やされ得る。結果として、比較的長いループのアトミックアクセスが生じ得、そしてこのことは、性能および／または電池寿命を低下させ得る。
【図面の簡単な説明】
【０００２】
以下の明細書および添付の請求項を読むことにより、並びに以下の図面を参照することにより、実施形態の様々な利点が当業者には明らかとなろう。
【図１】実施形態に係るメモリアーキテクチャの例のブロック図である。
【図２】実施形態に係るアトミックオペレーションをパイプライン処理する方法の例のフローチャートである。
【図３】実施形態に係るリンクリストのセットの例の図示である。
【図４】実施形態に係る、メモリから受信したデータを処理する方法の例のフローチャートである。
【図５】実施形態に係る、ＡＬＵから受信した結果を処理する方法の例のフローチャートである。
【図６】実施形態に係る、スヌープを処理する方法の例のフローチャートである。
【図７】実施形態に係る、ロジックアーキテクチャの例のブロック図である。
【図８Ａ】実施形態に係るシステムの例のブロック図である。
【図８Ｂ】実施形態に係る、ナビゲーションコントローラを有するシステムの例のブロック図である。
【図８Ｃ】実施形態に係る、小さなフォームファクタを有するシステムの例のブロック図である。
【発明を実施するための形態】
【０００３】
図１は、コンピューティングシステムおよび／またはプラットフォームの様々なクライアント（例えば、グラフィック実行ユニット、ホストプロセッサ、ドライバ、オペレーティングシステム／ＯＳコンポーネント、その他）などからの複数のアトミックオペレーションリクエスト１４をメモリアクセスコントローラ１２が受信するメモリアーキテクチャ１０を示す。アトミックオペレーション（例えば、「アトミック」）は、メモリ１６内に存在するデータに対する、例えば、Ａｄｄ、Ｓｕｂｔｒａｃｔ、Ｉｎｃｒｅｍｅｎｔ、Ｄｅｃｒｅｍｅｎｔ、Ｍａｘ、Ｍｉｎ、ＡＮＤ、ＯＲ、ＸＯＲ、Ｃｏｍｐａｒｅ、およびその他などロジックおよび／または演算の修正処理を含み得る。ここで各リクエスト１４は、修正されることになるデータに対応するメモリ１６内の１または複数の位置（例えばアドレス）を特定し得る。一例において、修正処理は、メモリ１６とは別個であるがメモリアクセスコントローラ１２に関連する演算ロジックユニット（ＡＬＵ）１８により実行される。さらに、アトミックオペレーションは、ディスプレイ（図示せず）上で視覚的に提示されることになるコンテンツに関連し得る。メモリ１６は、例えば、キャッシュ（例えば、グラフィックキャッシュ、ラストレベルキャッシュ／ＬＬＣ、その他）、大容量記憶装置（例えば、ハードディスクドライブ／ＨＤＤ、読み取り専用メモリ／ＲＯＭ、光メモリ、フラッシュメモリ、ソリッドステートドライブ／ＳＳＤ、その他）、または他の何らかのアドレス指定可能なメモリデバイスを含むかもしれない。
【０００４】
示される例において、メモリアクセスコントローラ１２は、アトミックオペレーションのための実行パイプラインを形成するアトミックコントローラ２０を含み得る。ここで、実行パイプラインの少なくとも一部は、メモリ１６を迂回する。またＡＬＵ１８は、実行パイプラインのためにデータを格納するのに用いられるアトミックデータバッファ２２を含み得る。アトミックデータバッファ２２の深さは、遭遇されるパラレルなアトミックストリームの数に基づき設定され得る。より詳細に説明されるように、メモリアクセスコントローラ１２は、アトミックオペレーションを実行するよう要求する特定のリクエスト１４を受信するよう構成され得、当該リクエスト１４で特定されるメモリロケーションと、１または複数のペンディング中のアトミックオペレーションとが関連している場合に、当該１または複数のペンディング中のアトミックオペレーションのためのＡＬＵ１８の実行パイプラインに当該アトミックオペレーションを追加するよう構成され得る。加えて、実行パイプラインの少なくとも一部は、アトミックデータバッファ２２を用い、メモリロケーションを迂回し得る。
【０００５】
次に図２を参照すると、アトミックオペレーションをパイプライン処理する方法２４が示されている。方法２４は、メモリのマシンまたはコンピュータ可読記憶媒体に格納されたロジック命令セットとして実行可能ソフトウェアにおいて実装され得る。メモリの例としては、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、プログラム可能ＲＯＭ（ＰＲＯＭ），ファームウェア、フラッシュメモリ、その他などが挙げられる。方法２４は、例えば、プログラム可能ロジックアレイ（ＰＬＡ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、コンプレックスプログラマブルロジックデバイス（ＣＰＬＤ）など構成可能なロジックで、例えば、特定用途向け集積回路（ＡＳＩＣ）、相補型金属酸化物半導体（ＣＭＯＳ）またはトランジスタ−トランジスタロジック（ＴＴＬ）技術などの回路技術を用いる機能固定型ロジックハードウェアで、またはこれらの何らかの組み合わせで実装され得る。一例において、方法２４は、例えば、メモリアクセスコントローラ１２（図１）などメモリアクセスコントローラの機能に組み込まれる。
【０００６】
示される処理ブロック２６は、アトミックオペレーションを実行するよう要求するリクエストを受信する段階を提供する。ここでブロック２８において、受信するリクエストで特定されるメモリロケーション（例えばアドレス）がアトミックオペレーションにおいて以前に遭遇されたか否かの決定がなされ得る。これにより、メモリロケーションが以前に遭遇されている場合、現在要求されているアトミックオペレーションが依存するペンディング中のアトミックオペレーション（例えば、連続したアトミック）があり得る。他方、メモリロケーションが以前に遭遇されていない場合（例えば、メモリロケーションが「新しい」場合）、そのような依存性がないものと推測される。したがって、ブロック２８において、受信するリクエストにおけるメモリロケーションが新しい（例えば、ペンディング中のアトミックオペレーションがメモリロケーションと関連していない）と決定された場合、ブロック３０において、当該メモリロケーションからの読み取りが開始され得、ブロック３２において、対象のメモリロケーションのための実行パイプラインが作成され得る。ブロック２８において、受信するリクエストにおけるメモリロケーションが新しくない（例えば、１または複数のペンディング中のアトミックオペレーションがメモリロケーションと関連している）と決定された場合、ブロック３４において、アトミックオペレーションは、当該メモリロケーションのための既存の実行パイプラインに追加され得る。
【０００７】
なお、ブロック３４の経路は、メモリロケーションからの読み取りを迂回する。データ読み取りを迂回することにより、依存しているアトミックオペレーションのためのメモリアクセスループが事実上短縮され得、これにより、性能および／または電池寿命が実質的に向上させられ得る。より詳細に説明するように、メモリロケーションからの読み取りを迂回するのに、アトミックデータバッファが用いられ得る。
【０００８】
図３は、アトミックオペレーションのための実行パイプラインを管理するのに用いられ得るリンクリスト３６のセット（３６ａ、３６ｂ）を示す。示される例において、第１リンクリスト３６ａは、特定のメモリロケーション（「メモリロケーションＡ」に関して、各リクエスト、修正処理、およびペアレントアトミックオペレーションをトラッキングし、第２リンクリスト３６は、別のメモリロケーション（「メモリロケーションＢ」）に関して、各リクエスト、修正処理、およびペアレントアトミックオペレーションをトラッキングする、などである。これにより、実行パイプラインにアトミックオペレーションを追加することは、アトミックオペレーションに関連する修正を用いてリンクリスト３６のうち１つをポピュレートすることを伴い得る。ここで、リンクリスト３６はメモリロケーション専用であり得る。示される例において、メモリロケーション「Ａ」のための実行パイプラインは、リクエストＡ１〜Ａ３がメモリロケーションＡからの読み取りをトリガしない程度にメモリロケーションＡを迂回し得、メモリロケーション「Ｂ」のための実行パイプラインは、リクエストＢ１〜Ｂ３がメモリロケーションＢからの読み取りをトリガしない程度にメモリロケーションＢを迂回し得る、などである。さらに、リンクリスト３６は、例えば既に説明したメモリ１６（図１）などのメモリ内の各位置に関してパラレルなまま維持され得る。
【０００９】
図４は、メモリロケーションから受信したデータを処理する方法３８を示す。方法３８は、メモリのマシンまたはコンピュータ可読記憶媒体に格納されたロジック命令セットとして実行可能ソフトウェアにおいて実装され得る。メモリの例としては、ＲＡＭ、ＲＯＭ、ＰＲＯＭ、ファームウェア、フラッシュメモリ、その他などが挙げられる。方法３８は、例えば、ＰＬＡ、ＦＰＧＡ、ＣＰＬＤなど構成可能なロジックで、例えば、ＡＳＩＣ、ＣＭＯＳ、ＴＴＬ技術などの回路技術を用いる機能固定型ロジックハードウェアで、またはこれらの何らかの組み合わせで実装され得る。一例において、方法３８は、例えば、メモリアクセスコントローラ１２（図１）などメモリアクセスコントローラの機能に組み込まれる。
【００１０】
示される処理ブロック４０は、メモリからデータを受信する段階を提供し得る。ここでデータは、アトミックオペレーションを実行するよう要求するリクエストと関連し得る。したがってブロック４０は、例えばブロック３０（図２）など、読み取り開始ブロックの結果として生じ得る。データの読み取りおよび受信の開始の間の期間は、メモリ構造および／またはデータ取得プロトコルに応じて比較的長いものであり得る。ブロック４２において、受信したデータがパイプライン処理されるアトミックオペレーションに対応するか否かの決定がなされ得る。したがってブロック４２における決定は、データの取得元であるメモリロケーションと、例えばリンクリスト３６（図３）など１または複数のリンクリストとを比較することを伴い得る。そのような場合、対象のメモリロケーションに関するリンクリストの存在がすることにより、データが、パイプライン処理されるアトミックオペレーションに対応するとの決定に繋がり得る。
【００１１】
受信したデータがパイプライン処理されるアトミックオペレーションに対応する場合、示されるブロック４４において、ＡＬＵへデータが送信され、ＡＬＵは、対象のアトミックオペレーションに関連する修正を実行するよう命令される。加えて、ブロック４６において、修正の結果をＡＬＵのバッファに格納し、実行パイプラインにおける次のアトミックオペレーションに関連する後の修正を実行すべく当該結果を用いるようＡＬＵに命令する、１または複数のパイプライン処理コマンドが用いられ得る。これにより、引き続き図３および４を参照すると、メモリから受信したデータが、メモリロケーション「Ａ」に関するアトミックオペレーションを実行するよう要求する「Ａ０」リクエストに対応する場合、ブロック４４において、ＡＬＵは、受信したデータに対する、関連するインクリメントの修正を実行するよう命令されるかもしれない。さらにブロック４６において、ＡＬＵは、インクリメントの修正の結果を例えばアトミックデータバッファ２２（図２）などのバッファに格納し、適切な実行パイプラインにおける次のアトミックオペレーション「Ａ１」のインクリメントの修正を実行すべく当該結果を用いるよう命令されるかもしれない。他方、ブロック４２において、受信したデータがパイプライン処理されるアトミックオペレーションに対応しないと決定された（例えば、アトミックデータの依存性がない）場合、示されたブロック４８において、データがＡＬＵへ送信され、ＡＬＵは、アトミックデータバッファを用いることなく、関連する修正を実行するよう命令される。代替的に方法３２において、ブロック４２における決定が省略され、ＡＬＵは、全てのアトミックオペレーションに関してアトミックデータバッファを用いるよう命令され得る。
【００１２】
図５は、ＡＬＵから受信した結果を処理する方法５０を示す。方法５０は、メモリのマシンまたはコンピュータ可読記憶媒体に格納されたロジック命令セットとして実行可能ソフトウェアにおいて実装され得る。メモリの例としては、ＲＡＭ、ＲＯＭ、ＰＲＯＭ，ファームウェア、フラッシュメモリ、その他などが挙げられる。方法５０は、例えば、ＰＬＡ、ＦＰＧＡ、ＣＰＬＤなど構成可能なロジックで、例えば、ＡＳＩＣ、ＣＭＯＳ、ＴＴＬ技術などの回路技術を用いる機能固定型ロジックハードウェアで、またはこれらの何らかの組み合わせで実装され得る。一例において、方法５０は、例えばメモリアクセスコントローラ１２（図１）などメモリアクセスコントローラの機能に組み込まれる。
【００１３】
示される処理ブロック５２は、ＡＬＵからアトミックオペレーションの結果を受信する段階を提供する。したがってブロック５２は、例えば、既に説明したブロック４４（図４）などの修正リクエストブロックの結果として生じ得る。結果は、ブロック５４において、対応するアトミックオペレーションの発信者（例えばクライアント）へ送信され得る。ここで、示されるブロック５６において、対応するアトミックオペレーションが実行パイプラインの一部であるか否かの決定がなされる。したがってブロック５６における決定は、アトミックオペレーションの結果を、例えばリンクリスト３６（図３）など１または複数のリンクリストと比較することを伴い得る。
【００１４】
結果が、アトミックオペレーションのための実行パイプラインに関連していると決定された場合、ブロック５８は、パイプライン内の次のアトミックオペレーションを特定し、当該次のアトミックオペレーションに関連する後の修正を実行するようＡＬＵに命令し、当該次のアトミックオペレーションのためのパイプライン処理コマンドをＡＬＵへ送信する段階を提供し得る。パイプライン処理コマンドは、後の修正を実行すべく、アトミックデータバッファに格納されているデータ（例えば、最後のアトミックオペレーションの結果）を用いるようＡＬＵに命令し得る。これにより、図３〜５を引き続き参照すると、受信した結果がメモリロケーション「Ｂ」に関するアトミックオペレーションを実行するよう要求する「Ｂ２」リクエストに対応する場合、ブロック５８において、アトミックデータバッファから「Ｂ１」リクエスト（例えばペアレントリクエスト）の結果を取得し、Ｂ２修正を実行すべく（例えば、メモリからのデータではなく）当該結果を用いるようＡＬＵに命令し得る。
【００１５】
他方、ブロック５６において、対応するアトミックオペレーションが実行パイプラインの一部ではないと決定された場合、実行パイプラインにおける最後のアトミックオペレーションに遭遇したか、または、現在のアトミックオペレーションがそれ以前への依存性を有さないかのいずれかである。そのような場合、示されるブロック６０において、結果が、関連するメモリロケーションに書き込まれる。最後のアトミックオペレーションの結果がＡＬＵから受信されるまで書き込みを保留することにより、さらに電力消費量を低減させ得、電池寿命を延長させ得る。
【００１６】
図６は、メモリロケーションに対するスヌープを処理する方法５１を示す。方法５１は、メモリのマシンまたはコンピュータ可読記憶媒体に格納されたロジック命令セットとして実行可能ソフトウェアにおいて実装され得る。メモリの例としては、ＲＡＭ、ＲＯＭ、ＰＲＯＭ，ファームウェア、フラッシュメモリ、その他などが挙げられる。方法５１は、例えば、ＰＬＡ、ＦＰＧＡ、ＣＰＬＤなど構成可能なロジックで、例えば、ＡＳＩＣ、ＣＭＯＳ、ＴＴＬ技術などの回路技術を用いる機能固定型ロジックハードウェアで、またはこれらの何らかの組み合わせで実装され得る。一例において、方法５１は、例えば、メモリアクセスコントローラ１２（図１）などメモリアクセスコントローラの機能に組み込まれる。
【００１７】
示される処理ブロック５３において、アトミックオペレーションに関連するメモリロケーションに対するスヌープが検出される。別のメモリコントローラおよび／またはデバイスから受信され得るスヌープは、２またはそれより多くのメモリ構造および／またはデバイス間のコヒーレンシを維持しようとする試みと関連し得る。示されるブロック５５において、スヌープに応答して、メモリロケーションに関連する実行パイプラインの形成が中止される。ここでブロック５５は、アトミックデータバッファから適切なデータをフラッシュする段階も提供し得る。ブロック５７において、実行パイプラインに関連する全てのリクエストが完了しているか（例えば、実行パイプラインが空であるか）否かの決定がなされ得る。結果が肯定的である場合、ブロック５９において、スヌープの発信者へ応答が送信され得、示されるブロック６１おいて、対象のメモリロケーションのための実行パイプラインの形成が再開される。
【００１８】
図７は、アトミックオペレーションをパイプライン処理し得るロジックアーキテクチャ６２（６２ａ〜６２ｈ）を示す。したがって一般的にアーキテクチャ６２は、例えばメモリアクセスコントローラ１２（図１）および／または方法２４、３８、５０、５１、（それぞれ、図２、４、５、６）などのメモリアクセスコントローラとして実装され得る。示される例において、リクエストモジュール６２ａがアトミックオペレーションを実行するよう要求するリクエストを受信し、１または複数のペンディング中のアトミックオペレーションが、リクエスト内に特定されるメモリロケーションに関連する場合、アトミックコントローラ６２ｂが当該１または複数のペンディング中のアトミックオペレーションのためのＡＬＵの実行パイプラインに任意のアトミックオペレーションを追加する。既に述べたように、実行パイプラインの少なくとも一部は、リクエスト内に特定されるメモリロケーションを迂回し得る。
【００１９】
特にアトミックコントローラ６２ｂは、アトミックオペレーションを実行パイプラインに追加すべく、アトミックオペレーションに関連する修正を用いてリンクリストをポピュレートするリンクリストモジュール６４を含み得る。既に述べたように、リンクリストは、メモリロケーション専用であり得る。示されるアーキテクチャ６２は、何らペンディング中のアトミックオペレーションがメモリロケーションと関連していない場合にメモリロケーションからの読み取りを開始し、メモリロケーションからデータを受信するメモリインタフェース６２ｃも含む。この点において、アトミックコントローラ６２ｂも、メモリロケーションのための実行パイプラインを作成するパイプラインモジュール６６を含み得る。加えて、データモジュール６２ｄは、データをＡＬＵに送信し、アトミックオペレーションに関連する修正を実行するようＡＬＵに命令し得る。修正は、例えば、Ａｄｄ、Ｓｕｂｔｒａｃｔ、Ｉｎｃｒｅｍｅｎｔ、Ｄｅｃｒｅｍｅｎｔ、Ｍａｘ、Ｍｉｎ、ＡＮＤ、ＯＲ、ＸＯＲおよび／またはＣｏｍｐａｒｅ処理を含み得る。またパイプラインモジュール６６は、修正の結果をＡＬＵのアトミックデータバッファに格納するようＡＬＵに命令し得る。
【００２０】
示されるアーキテクチャ６２は、ＡＬＵからアトミックオペレーションの結果を受信するよう構成された結果モジュール６２ｅと、アトミックオペレーションを実行するよう要求するリクエストの発信者へ当該結果を送信するよう構成された処理応答モジュール６２ｆも含む。またパイプラインモジュール６６は、実行パイプラインの次のアトミックオペレーションを特定し、当該次のアトミックオペレーションに関連する後の修正を実行するようＡＬＵに命令し、パイプライン処理コマンドをＡＬＵへ送信し得る。パイプライン処理コマンドは、後の修正を実行すべく、アトミックデータバッファに格納されているデータを用いるようＡＬＵに命令し得る。加えて、メモリインタフェース６２ｃは、実行パイプラインの最後のアトミックオペレーションの結果がＡＬＵから受信されるまで、メモリロケーションへの書き込みを保留し得る。
【００２１】
アーキテクチャ６２は、メモリロケーションに対するスヌープを検出するスヌープモニタ６２ｇも含み得る。ここで、アトミックコントローラ６２ｂは、当該スヌープに応答して、メモリロケーションに関連する実行パイプラインの形成を中断し得る。加えて、スヌープ応答モジュール６２ｈは、実行パイプラインに関連する全てのリクエストが完了している場合、スヌープの発信者へ応答を送信し、スヌープに対してサービスした後にアトミックデータバッファから適切なデータをフラッシュし得る。これにより、アトミックコントローラ６２ｂは、応答がスヌープの発信者へ送信された後に、実行パイプラインの形成を再開し得る。
【００２２】
ここで図８Ａを参照すると、コンピューティングシステム７０が示されている。ここでシステム７０は、ラップトップ、モバイルインターネットデバイス（ＭＩＤ）、携帯情報端末（ＰＤＡ）、メディアプレーヤ、撮像デバイス、その他などのモバイルプラットフォーム、スマートフォン、スマートタブレット、スマートＴＶ（テレビ）、およびその他などの何らかのスマートデバイス、またはこれらの何らかの組み合わせの一部であり得る。システム７０は、パーソナルコンピュータ（ＰＣ）、サーバ、ワークステーション、その他などの固定されたプラットフォームの一部でもあり得る。示されるシステム７０は、中央処理装置（ＣＰＵ。例えばホストプロセッサ）７２を含む。ＣＰＵ７２は、内蔵型メモリコントローラ（ｉＭＣ）７４を有し、ｉＭＣ７４は、例えばダブルデータレート（ＤＤＲ）シンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ。例えば、ＤＤＲ３  ＳＤＲＡＭ  ＪＥＤＥＣ  Ｓｔａｎｄａｒｄ  ＪＥＳＤ７９−３Ｃ，Ａｐｒｉｌ  ２００８）モジュールを含み得るシステムメモリ７６へのアクセスを提供する。システムメモリ７６のモジュールは、例えば、シングルインラインメモリモジュール（ＳＩＭＭ）、デュアルインラインメモリモジュール（ＤＩＭＭ）、スモールアウトラインＤＩＭＭ（ＳＯＤＩＭＭ）、およびその他に組み込まれ得る。
【００２３】
ＣＰＵ７２は、１または複数のドライバ７８および／またはプロセッサコア（図示せず）も有し得る。ここで各コアは、命令フェッチユニット、命令デコーダ、レベル１（Ｌ１）キャッシュ実行ユニット、およびその他と共に完全に機能し得る。代替的にＣＰＵ７２は、システム７０のコンポーネントのそれぞれを相互接続するフロントサイドバスまたはポイントツーポイントファブリックを介して、ノースブリッジとしても知られるｉＭＣ７４の外部チップである変形例と通信し得る。ＣＰＵ７２は、オペレーティングシステム（ＯＳ）８０も実行し得る。
【００２４】
示されるＣＰＵ７２は，バスを介して、サウスブリッジとしても知られる入出力（ＩＯ）モジュール８２と通信し得る。ｉＭＣ７４／ＣＰＵ７２、およびＩＯモジュール８２は、場合によってはチップセットと呼ばれる。またＣＰＵ７２は、ＩＯモジュール８２および様々な他のコントローラ８４を通じ、ネットワークポートを介してネットワーク（図示せず）と操作可能に接続され得る。これにより、他のコントローラ８４は有線通信および無線通信などの多種多様な目的のためにオフプラットフォーム通信機能を提供し得る。それら目的には、携帯電話（例えば、Ｗｉｄｅｂａｎｄ  Ｃｏｄｅ  Ｄｉｖｉｓｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ａｃｃｅｓｓ、Ｗ−ＣＤＭＡ（Ｕｎｉｖｅｒｓａｌ  Ｍｏｂｉｌｅ  Ｔｅｌｅｃｏｍｍｕｎｉｃａｔｉｏｎｓ  Ｓｙｓｔｅｍ／ＵＭＴＳ）、ＣＤＭＡ２０００（ＩＳ−８５６／ＩＳ−２０００）、その他）、Ｗｉ−Ｆｉ（登録商標）（Ｗｉｒｅｌｅｓｓ  Ｆｉｄｅｌｉｔｙ。例えば、Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ／ＩＥＥＥ  ８０２．１１，２００７  Ｅｄｉｔｉｏｎ）、Ｂｌｕｅｔｏｏｔｈ（登録商標）（例えば、ＩＥＥＥ  ８０２．１５．１−２００５、Ｗｉｒｅｌｅｓｓ  Ｐｅｒｓｏｎａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋｓ）、ＷｉＭａｘ（例えば、ＩＥＥＥ  ８０２．１６−２００４）、Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ（ＧＰＳ）、スペクトル拡散（例えば、９００ＭＨｚ）、並びに、他の無線周波数（ＲＦ）電話技術における目的が含まれるがこれらに限定されない。
【００２５】
またＩＯモジュール８２は、動画、画像、および他のコンテンツの視覚的な出力／表現を提供すべくディスプレイ８６と通信し得る。また、ユーザがシステム７０とインタラクトし、システム７０からの情報を知覚出来るようにするために、他のコントローラ８４は、キーパッド、マウス、その他などのユーザインタフェースデバイス（図示せず）に関するサポートを提供すべくＩＯモジュール８２と通信し得る。
【００２６】
ＩＯモジュール８２は、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ。例えば、ＵＳＢ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ２．０，ＵＳＢ  Ｉｍｐｌｅｍｅｎｔｅｒｓ  Ｆｏｒｕｍ）、Ｓｅｒｉａｌ  ＡＴＡ（ＳＡＴＡ。例えば、ＳＡＴＡ  Ｒｅｖ．  ３．０  Ｓｐｅｃｉｆｉｃａｔｉｏｎ，Ｍａｙ  ２７，２００９，ＳＡＴＡ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｏｒｇａｎｉｚａｔｉｏｎ／ＳＡＴＡ−ＩＯ）、Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ  Ａｕｄｉｏ、および他のコントローラなど内部コントローラ（図示せず）も有し得る。示されるＩＯモジュール８８は、ハードドライブ８８、読み取り専用メモリ（ＲＯＭ）、光ディスク、フラッシュメモリ（図示せず）、その他を含み得る記憶装置とも結合され得る。
【００２７】
示されるシステム７０は、専用グラフィックメモリ９２に結合された専用グラフィクプロセッシングユニット（ＧＰＵ）９０も含む。専用グラフィックメモリ９２は、例えば、ＧＤＤＲ（グラフィックＤＤＲ）、またはＤＤＲ  ＳＤＲＡＭモジュール、若しくは、グラフィックレンダリングをサポートするのに適した何らかの他のメモリ技術を含み得る。ＧＰＵ９０およびグラフィックメモリ９２は、グラフィック／ビデオカードにインストールされ得る。ここでＧＰＵ９０は、ＰＣＩ  Ｅｘｐｒｅｓｓ  Ｇｒａｐｈｉｃｓ（ＰＥＧ。例えば、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔｓ  Ｉｎｔｅｒｃｏｎｎｅｃｔ／ＰＣＩ  Ｅｘｐｒｅｓｓ  ｘ１６  Ｇｒａｐｈｉｃｓ  １５０Ｗ−ＡＴＸ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  １．０、ＰＣＩ  Ｓｐｅｃｉａｌ  Ｉｎｔｅｒｅｓｔ  Ｇｒｏｕｐ）バス、またはＡｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ（例えば、ＡＧＰ  Ｖ３．０  Ｉｎｔｅｒｆａｃｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ，Ｓｅｐｔｅｍｂｅｒ  ２００２）バスなどのグラフィックバス９４を介して、ＣＰＵ７２と通信し得る。グラフィックカードは、システムマザーボードまたはメインＣＰＵ７２ダイに統合され得、若しくは、マザーボードの別個のカードとして構成され得る、などである。またＧＰＵ９０は、１または複数のドライバ９６を実行し得、１または複数の実行ユニット９８、ＡＬＵ１００、メモリアクセスコントローラ１０２、および、命令および他のデータを格納する内部キャッシュ１０４を含み得る。
【００２８】
既に説明したように、メモリアクセスコントローラ１０２は一般的に、専用グラフィックメモリ９２内の視覚的コンテンツおよび／またはデータに対してアトミックオペレーションを実行するよう要求するリクエストを受信し、１または複数のペンディング中のアトミックオペレーションが、当該リクエスト内に特定されるメモリロケーションと関連している場合に、当該１または複数のペンディング中のアトミックオペレーションのためのＡＬＵ１００の実行パイプラインに、任意のアトミックオペレーションを追加するよう構成され得る。さらに、実行パイプラインの少なくとも一部は、専用グラフィックメモリ９２を迂回し、ＡＬＵ１００のアトミックデータバッファを用い得る。そのようなアプローチにより、システム７０の性能、電力消費、および／または電池寿命が実質的に改善され得る。また、示されるハードドライブ８８、システムメモリ７６、および／またはキャッシュ１０４は、１または複数のアトミックオペレーションにより修正されるデータを格納するのに用いられ得る。ここで、メモリアクセスコントローラ１０２の機能は、それらメモリ構造に対応するアクセスコントローラに組み込まれ得る。
【００２９】
図８Ｂは、システム７００の実施形態を示す。実施形態において、システム７００はメディアシステムであり得るが、システム７００はこの文脈に限定されない。例えばシステム７００は、パーソナルコンピュータ（ＰＣ）、ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、携帯情報端末（ＰＤＡ）、携帯電話、携帯電話／ＰＤＡの組み合わせ、テレビ、スマートデバイス（例えば、スマートフォン、スマートタブレット、またはスマートテレビ）、モバイルインターネットデバイス（ＭＩＤ）、メッセージングデバイス、データ通信デバイス、並びにその他に組み込まれ得る。これによりシステム７００は、本明細書に説明されるように画像をレンダリングするために用いられ得る。
【００３０】
実施形態において、システム７００はディスプレイ７２０に結合されたプラットフォーム７０２を備える。プラットフォーム７０２は、コンテンツサービスデバイス７３０またはコンテンツ配信デバイス７４０、若しくは他の同様のコンテンツソースなどのコンテンツデバイスから動画ビットストリームコンテンツを受信し得る。例えばプラットフォーム７０２および／またはディスプレイ７２０とインタラクトするために、１または複数のナビゲーション機能を備えるナビゲーションコントローラ７５０が用いられ得る。これらのコンポーネントのそれぞれは、以下により詳細に説明される。
【００３１】
実施形態において、プラットフォーム７０２は、チップセット７０５、プロセッサ７１０、メモリ７１２、記憶装置７１４、グラフィックサブシステム７１５、アプリケーション７１６、および／または無線機７１８の何らかの組み合わせを備え得る。チップセット７０５は、プロセッサ７１０、メモリ７１２、記憶装置７１４、グラフィックサブシステム７１５、アプリケーション７１６、および／または無線機７１８の間の相互通信を提供し得る。例えば、チップセット７０５は、記憶装置７１４との相互通信を提供可能な記憶アダプタ（図示せず）を含み得る。
【００３２】
プロセッサ７１０は、Ｃｏｍｐｌｅｘ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ（ＣＩＳＣ）またはＲｅｄｕｃｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ（ＲＩＳＣ）プロセッサ、ｘ８６命令セットと互換性のあるプロセッサ、マルチコア、若しくは何らかの他のマイクロプロセッサまたは中央処理装置（ＣＰＵ）として実装され得る。実施形態において、プロセッサ７１０は、デュアルコアプロセッサ、デュアルコアモバイルプロセッサ、およびその他を備え得る。
【００３３】
メモリ７１２は、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、またはスタティックＲＡＭ（ＳＲＡＭ）などであるがこれらに限定されない揮発性メモリデバイスとして実装され得る。
【００３４】
記憶装置７１４は、磁気ディスクドライブ、光ディスクドライブ、テープドライブ、内部記憶デバイス、取り付けられた記憶デバイス、フラッシュメモリ、バッテリーバックアップ式のＳＤＲＡＭ（シンクロナスＤＲＡＭ）、および／またはネットワークアクセス可能な記憶デバイスなどであるがこれらに限定されない不揮発性記憶デバイスとして実装され得る。実施形態において、記憶装置７１４は、例えば複数のハードドライブが含まれる場合に、貴重なデジタルメディアの保護を高めるために記憶性能を向上させる技術を備え得る。
【００３５】
グラフィックサブシステム７１５は、表示のために静止画または動画などの画像の処理を実行し得る。グラフィックサブシステム７１５は、例えば、グラフィクプロセッシングユニット（ＧＰＵ）またはビジュアルプロセッシングユニット（ＶＰＵ）であり得る。したがってグラフィックサブシステム７１５は、既に説明したＧＰＵ９０（図８Ａ）を含み得る。加えて、プロセッサ７１０は、メモリ７１２、記憶装置７１４、または他の適したソースから得られた命令を介して、既に説明したＣＰＵ７２（図８Ａ）などとして動作するよう構成され得る。グラフィックサブシステム７１５およびディスプレイ７２０を通信可能に結合するために、アナログまたはデジタルインタフェースが用いられ得る。例えば、インタフェースは、Ｈｉｇｈ−Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ、ＤｉｓｐｌａｙＰｏｒｔ、無線ＨＤＭＩ（登録商標）、および／または無線ＨＤ準拠技術のうちいずれかであり得る。グラフィックサブシステム７１５は、プロセッサ７１０またはチップセット７０５に統合され得る。グラフィックサブシステム７１５は、チップセット７０５と通信可能に結合されたスタンドアロン型カードであり得る。
【００３６】
本明細書に説明されるグラフィックおよび／または動画処理技術は、様々なハードウェアアーキテクチャで実装され得る。例えば、グラフィックおよび／または動画機能は、チップセット内で統合され得る。代替的に、別個のグラフィックおよび／または動画プロセッサが用いられ得る。さらに他の実施形態として、グラフィックおよび／または動画機能は、マルチコアプロセッサを含む汎用プロセッサにより実装され得る。さらなる実施形態において、機能は、家庭用電子機器で実装され得る。
【００３７】
無線機７１８は、様々な適した無線通信技術を用いて信号を送受信可能な１または複数の無線機を含み得る。そのような技術は、１または複数の無線ネットワークを介した通信を伴い得る。例示的な無線ネットワークとしては（これらに限定されるわけではないが）、無線ローカルエリアネットワーク（ＷＬＡＮ）、無線パーソナルエリアネットワーク（ＷＰＡＮ）、無線メトロポリタンエリアネットワーク（ＷＭＡＮ）、セルラーネットワーク、および衛星ネットワーク）が含まれる。そのようなネットワークを介した通信において、無線機７１８は、いずれかのバージョンの１または複数の適用可能な規格に準拠して動作し得る。
【００３８】
実施形態において、ディスプレイ７２０は、何らかのテレビ型のモニタまたはディスプレイを備え得る。ディスプレイ７２０は例えば、コンピュータディスプレイ画面、タッチスクリーンディスプレイ、ビデオモニタ、テレビ型デバイス、および／またはテレビを備え得る。ディスプレイ７２０は、デジタルおよび／またはアナログであり得る。実施形態において、ディスプレイ７２０はホログラフィックディスプレイであり得る。また、ディスプレイ７２０は、視覚投影を受け付ける透明な面であり得る。そのような投影は、様々な形態の情報、画像、および／またはオブジェクトを伝達し得る。例えば、そのような投影は、モバイル拡張現実（ＭＡＲ）アプリケーションのための視覚的なオーバーレイであり得る１または複数のソフトウェアアプリケーション７１６の制御下で、プラットフォーム７０２は、ユーザインタフェース７２２をディスプレイ７２０に表示し得る。
【００３９】
実施形態において、コンテンツサービスデバイス７３０は、国毎の、国際的な、および／または独立した何らかのサービスによりホストされ得、これにより、例えば、インターネットを介してプラットフォーム７０２にアクセス可能であり得る。コンテンツサービスデバイス７３０は、プラットフォーム７０２および／またはディスプレイ７２０に結合され得る。プラットフォーム７０２および／またはコンテンツサービスデバイス７３０は、ネットワーク７６０へ／からメディア情報を通信（例えば、送信および／または受信）すべく、ネットワーク７６０に結合され得る。コンテンツ配信デバイス７４０も、プラットフォーム７０２および／またはディスプレイ７２０へ結合され得る。
【００４０】
実施形態において、コンテンツサービスデバイス７３０は、ケーブルテレビボックス、パーソナルコンピュータ、ネットワーク、電話、インターネット利用可能デバイスまたはデジタル情報および／またはコンテンツを伝達可能な電気製品、並びに、コンテンツプロバイダと、プラットフォーム７０２およびディスプレイ７２０との間でネットワーク７６０を介して、または直接的に、一方向または双方向にコンテンツを通信可能な何らかの他の同様のデバイスを備え得る。コンテンツは、システム７００内のコンポーネントのうちいずれか１つおよびコンテンツプロバイダへ／からネットワーク７６０を介して、一方向および／または双方向に通信され得ることが理解されよう。コンテンツの例には、例えば動画、音楽、音楽またはゲームに関する情報、およびその他を含む何らかのメディア情報が含まれ得る。
【００４１】
コンテンツサービスデバイス７３０は、メディア情報、デジタル情報、および／または他のコンテンツを含むケーブルテレビプログラムなどのコンテンツを受信し得る。コンテンツプロバイダの例には、何らかのケーブルまたは衛星テレビ、若しくは無線またはインターネットコンテンツプロバイダが含まれ得る。提供される例は、実施形態を限定することを意図していない。
【００４２】
実施形態において、プラットフォーム７０２は、１または複数のナビゲーション機能を有するナビゲーションコントローラ７５０から制御信号を受信し得る。コントローラ７５０のナビゲーション機能は、例えば、ユーザインタフェース７２２とインタラクトするために用いられ得る。実施形態において、ナビゲーションコントローラ７５０は、ユーザが空間（例えば、連続的であり多次元の）データをコンピュータに入力することを可能とするコンピュータハードウェア構成要素（詳細には、ヒューマンインタフェースデバイス）であり得るポインティングデバイスであり得る。グラフィカルユーザインタフェース（ＧＵＩ）などの多くのシステム、並びにテレビおよびモニタは、身体的なジェスチャを用いてユーザがコンピュータまたはテレビを制御すること、およびこれらにデータを提供することを可能とする。
【００４３】
コントローラ７５０のナビゲーション機能の動きは、ディスプレイ上に表示されるポインタ、カーソル、フォーカスリング、または他の視覚的なインジケータの動きにより、ディスプレイ（例えばディスプレイ７２０）上で反映される。例えば、ソフトウェアアプリケーション７１６の制御下で、ナビゲーションコントローラ７５０上に位置付けられるナビゲーション機能は、例えば、ユーザインタフェース７２２上に表示される仮想的なナビゲーション機能へとマッピングされ得る。実施形態において、コントローラ７５０は別個のコンポーネントではなく、プラットフォーム７０２および／またはディスプレイ７２０に統合され得る。しかし実施形態は本明細書に示される、または説明される要素または文脈に限定されない。
【００４４】
実施形態において、ドライバ（図示せず）は、例えば、テレビのように、有効にされた場合に、ユーザが最初のブートアップの後にボタンに触れると瞬時にプラットフォーム７０２の電源を入れたり、切ったりすることを可能とする技術を備え得る。プログラムロジックは、プラットフォーム７０２の電源が「切られた」場合に、プラットフォームがコンテンツを、メディアアダプタ、若しくは他のコンテンツサービスデバイス７３０またはコンテンツ配信デバイス７４０へストリーミングすることを可能とし得る。加えて、チップセット７０５は、例えば、５．１サラウンドサウンドオーディオおよび／または高解像度の７．１サラウンドサウンドオーディオのためのハードウェアおよび／またはソフトウェアサポートを備え得る。ドライバは、統合されたグラフィックプラットフォームのためのグラフィックドライバを含み得る。実施形態において、グラフィックドライバはペリフェラルコンポーネントインターコネクト（ＰＣＩ）Ｅｘｐｒｅｓｓグラフィックカードを備え得る。
【００４５】
様々な実施形態において、システム７００に示されるコンポーネントのうちいずれか１つまたは複数は統合され得る。例えば、プラットフォーム７０２とコンテンツサービスデバイス７３０とが統合され得、プラットフォーム７０２とコンテンツ配信デバイス７４０とが統合され得、プラットフォーム７０２と、コンテンツサービスデバイス７３０とコンテンツ配信デバイス７４０とが例えば統合され得る。様々な実施形態において、プラットフォーム７０２とディスプレイ７２０とは統合されたユニットであり得る。例えば、ディスプレイ７２０とコンテンツサービスデバイス７３０とが統合され得、またはディスプレイ７２０とコンテンツ配信デバイス７４０とが統合され得る。これらの例は実施形態を限定することを意図されていない。
【００４６】
様々な実施形態において、システム７００は、無線システム、有線システム、または両方の組み合わせとして実装され得る。無線システムとして実装される場合、システム７００は、１または複数のアンテナ、送信機、受信機、送受信機、増幅器、フィルタ、制御ロジック、およびその他など無線共有媒体上での通信に適したコンポーネントおよびインタフェースを含み得る。無線共有媒体の例には、ＲＦスペクトルおよびその他など無線スペクトルの一部が含まれ得る。有線システムとして実装される場合、システム７００は、入出力（Ｉ／Ｏ）アダプタ、Ｉ／Ｏアダプタを対応する有線通信媒体と接続する物理コネクタ、ネットワークインタフェースカード（ＮＩＣ）、ディスクコントローラ、ビデオコントローラ、オーディオコントローラ、およびその他など有線通信媒体上での通信に適したコンポーネントおよびインタフェースを含み得る。有線通信媒体の例には、電線、ケーブル、金属鉛、プリント基板（ＰＣＢ）、バックプレーン、スイッチファブリック、半導体材料、ツイストペア線、同軸ケーブル、光学繊維、およびその他が含まれ得る。
【００４７】
プラットフォーム７０２は、情報を通信するための１または複数のロジックまたは物理チャネルを確立し得る。情報は、メディア情報および制御情報を含み得る。メディア情報とは、ユーザ向けのコンテンツを表す何らかのデータを指し得る。コンテンツの例には、例えば、音声会話、ビデオ会議、ストリーミング動画、電子メール（「ｅメール」）メッセージ、ボイスメールメッセージ、英数字記号、グラフィック、画像、動画、テキスト、およびその他からのデータを含み得る。音声会話からのデータは例えば、会話情報、静寂の期間、背景雑音、快適雑音、トーン、およびその他であり得る。制御情報とは、自動化されたシステム向けの指示、命令、または制御語を表す何らかのデータを指し得る。例えば、制御情報は、システムを通じてメディア情報をルーティングする、または、予め定められたやり方でメディア情報を処理するようノードに命令するために用いられ得る。しかし実施形態は、図８Ｂに示される、または説明される要素または文脈に限定されない。
【００４８】
上記にて説明したように、システム７００は、異なる物理的なスタイルまたはフォームファクタで実施され得る。図８Ｃは、システム７００が実施され得る小さなフォームファクタのデバイス８００の実施形態を示す。実施形態において、例えば、デバイス８００は、無線機能を有するモバイルコンピューティングデバイスとして実装され得る。モバイルコンピューティングデバイスとは、例えば、処理システムと、１または複数のバッテリーなどモバイル電力ソースまたはサプライとを有する何らかのデバイスを指し得る。
【００４９】
上記にて説明したように、モバイルコンピューティングデバイスの例には、パーソナルコンピュータ（ＰＣ），ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、携帯情報端末（ＰＤＡ）、携帯電話、携帯電話／ＰＤＡの組み合わせ、テレビ、スマートデバイス（例えば、スマートフォン、スマートタブレット、またはスマートテレビ）、モバイルインターネットデバイス（ＭＩＤ）、メッセージングデバイス、データ通信デバイス、並びにその他を含み得る。
【００５０】
またモバイルコンピューティングデバイスの例には、リスト（ｗｒｉｓｔ）コンピュータ、フィンガーコンピュータ、リングコンピュータ、アイグラスコンピュータ、ベルトクリップコンピュータ、アームバンドコンピュータ、シュー（ｓｈｏｅ）コンピュータ、衣服コンピュータ、および他のウェアラブルコンピュータなど人により着用されるよう構成されコンピュータが含まれ得る。実施形態において、例えば、モバイルコンピューティングデバイスは、コンピュータアプリケーション、並びに音声通信および／またはデータ通信を実行可能なスマートフォンとして実装され得る。いくつかの実施形態は、例としてスマートフォンとして実装されるモバイルコンピューティングデバイスを用いて説明されるかもしれないが、他の無線モバイルコンピューティングデバイスを用いて他の実施形態が実装され得ることが理解されよう。実施形態はこの文脈に限定されない。
【００５１】
図８Ｃに示されるように、デバイス８００は、筐体８０２、ディスプレイ８０４、入出力（Ｉ／Ｏ）デバイス８０６、およびアンテナ８０８を備え得る。デバイス８００は、ナビゲーション機能８１２も備え得る。ディスプレイ８０４は、モバイルコンピューティングデバイスにとって適切な情報を表示するための何らかの適したディスプレイユニットを備え得る。Ｉ／Ｏデバイス８０６は、モバイルコンピューティングデバイスへ情報を入力するための適した何らかのＩ／Ｏデバイスを備え得る。Ｉ／Ｏデバイス８０６の例には、英数字キーボード、数字キーパッド、タッチパッド、入力キー、ボタン、スイッチ、ロッカースイッチ、マイク、スピーカ、音声認識デバイスおよびソフトウェア、並びにその他が含まれ得る。また情報は、マイクを用いてデバイス８００へ入力され得る。そのような情報は、音声認識デバイスによりデジタル化され得る。実施形態はこの文脈に限定されない。
【００５２】
追記および実施例
【００５３】
実施例１は、コンテンツを視覚的に提示するディスプレイと、メモリロケーションを有するメモリデバイスと、アトミックデータバッファを有する演算ロジックユニット（ＡＬＵ）と、上記メモリデバイスと上記ＡＬＵとに結合されたメモリコントローラとを備えるシステムを含み得る。  上記メモリアクセスコントローラは、上記コンテンツに対してアトミックオペレーションを実行するよう要求するリクエストであり、上記メモリロケーションを特定する上記リクエストを受信するリクエストモジュールと、１または複数のペンディング中のアトミックオペレーションと上記メモリロケーションとの関連に応答して、上記１または複数のペンディング中のアトミックオペレーションのために上記ＡＬＵの実行パイプラインに上記アトミックオペレーションを追加するアトミックコントローラと、を有し、上記実行パイプラインの少なくとも一部は、上記メモリロケーションを迂回し、上記アトミックデータバッファを用いる。
【００５４】
実施例２は、上記アトミックコントローラが、上記実行パイプラインに上記アトミックオペレーションを追加すべく、上記アトミックオペレーションに関連する修正を用いてリンクリストをポピュレートするリンクリストモジュールを含み、上記リンクリストが、上記メモリロケーション専用である、実施例１に記載のシステムを含み得る。
【００５５】
実施例３は、上記メモリアクセスコントローラがさらに、ペンディング中のアトミックオペレーションが上記メモリロケーションに関連していない場合に上記メモリロケーションからの読み取りを開始し、上記メモリロケーションからデータを受信するメモリインタフェースを有し、上記アトミックモジュールは、上記メモリロケーションのための実行パイプラインを作成するパイプラインモジュールを含み、上記メモリアクセスコントローラがさらに、上記データを上記ＡＬＵに送信し、上記アトミックオペレーションに関連する修正を実行するよう上記ＡＬＵに命令するデータモジュールを有し、上記パイプラインモジュールは、上記修正の結果を上記ＡＬＵの上記アトミックデータバッファに格納するよう上記ＡＬＵに命令する、実施例１に記載のシステムを含み得る。
【００５６】
実施例４は、上記メモリアクセスコントローラがさらに、上記ＡＬＵから上記アトミックオペレーションの結果を受信する結果モジュールと、上記アトミックオペレーションを実行するよう要求する上記リクエストの発信者へ上記結果を送信する処理応答モジュールと、を有し、上記アトミックコントローラは、上記実行パイプラインの次のアトミックオペレーションを特定し、上記次のアトミックオペレーションに関連する後の修正を実行するよう上記ＡＬＵに命令し、上記ＡＬＵにパイプライン処理コマンドを送信するパイプラインモジュールを含み、上記メモリアクセスコントローラがさらに、上記実行パイプラインの最後のアトミックオペレーションの結果が上記ＡＬＵから受信されるまで、上記メモリロケーションへの書き込みを保留するメモリインタフェースを有する、実施例１から３のいずれか一例に記載のシステムを含み得る。
【００５７】
実施例５は、上記パイプライン処理コマンドが、上記後の修正を実行すべく、上記アトミックデータバッファに格納されているデータを用いるよう上記ＡＬＵに命令する、実施例４に記載のシステムを含み得る。
【００５８】
実施例６は、上記メモリアクセスコントローラがさらに、上記メモリロケーションに対するスヌープを検出するスヌープモニタを有し、上記アトミックコントローラは、上記スヌープに応答して上記実行パイプラインの形成を中断し、上記メモリアクセスコントローラがさらに、上記実行パイプラインに関連する全てのリクエストが完了した場合に上記スヌープの発信者に応答を送信するスヌープ応答モジュールを有し、上記アトミックコントローラは、上記応答が上記スヌープの上記発信者へ送信された後に、上記実行パイプラインの形成を再開する、実施例１に記載のシステムを含み得る。
【００５９】
実施例７は、アトミックオペレーションを実行するよう要求するリクエストを受信する段階と、１または複数のペンディング中のアトミックオペレーションと上記リクエストで特定されるメモリロケーションとの関連に応答して、上記１または複数のペンディング中のアトミックオペレーションのためにＡＬＵの実行パイプラインに上記アトミックオペレーションを追加する段階とを備え、上記実行パイプラインの少なくとも一部は、上記メモリロケーションを迂回する、メモリアクセスコントローラを動作させる方法を含み得る。
【００６０】
実施例８は、上記実行パイプラインに上記アトミックオペレーションを追加する段階が、上記アトミックオペレーションに関連する修正を用いてリンクリストをポピュレートする段階を有し、上記リンクリストは、上記メモリロケーション専用である、実施例７に記載の方法を含み得る。
【００６１】
実施例９は、ペンディング中のアトミックオペレーションが上記メモリロケーションに関連していない場合に上記メモリロケーションからの読み取りを開始する段階と、上記メモリロケーションからデータを受信する段階と、上記メモリロケーションのための実行パイプラインを作成する段階と、上記データを上記ＡＬＵに送信する段階と、上記アトミックオペレーションに関連する修正を実行するよう上記ＡＬＵに命令する段階と、上記修正の結果を上記ＡＬＵのアトミックデータバッファに格納するよう上記ＡＬＵに命令する段階とをさらに備える、実施例７に記載の方法を含み得る。
【００６２】
実施例１０は、上記ＡＬＵから上記アトミックオペレーションの結果を受信する段階と、上記アトミックオペレーションを実行するよう要求する上記リクエストの発信者へ上記結果を送信する段階と、上記実行パイプラインの次のアトミックオペレーションを特定する段階と、上記次のアトミックオペレーションに関連する後の修正を実行するよう上記ＡＬＵに命令する段階と、上記ＡＬＵにパイプライン処理コマンドを送信する段階と、上記実行パイプラインの最後のアトミックオペレーションの結果が上記ＡＬＵから受信されるまで、上記メモリロケーションへの書き込みを保留する段階とをさらに備える、実施例７から９のいずれか一例に記載の方法を含み得る。
【００６３】
実施例１１は、上記パイプライン処理コマンドが、上記後の修正を実行すべく、上記アトミックデータバッファに格納されているデータを用いるよう上記ＡＬＵに命令する、実施例１０に記載の方法を含み得る。
【００６４】
実施例１２は、上記メモリロケーションに対するスヌープを検出する段階と、上記スヌープに応答して上記実行パイプラインの形成を中断する段階と、上記実行パイプラインに関連する全てのリクエストが完了した場合に上記スヌープの発信者に応答を送信する段階と、上記応答が上記スヌープの上記発信者へ送信された後に、上記実行パイプラインの形成を再開する段階とをさらに備える、実施例７に記載の方法を含み得る。
【００６５】
実施例１３は、複数の命令からなるセットを備える少なくとも１つのコンピュータ可読記憶媒体であり、上記複数の命令はメモリアクセスコントローラにより実行された場合に、上記メモリアクセスコントローラに、アトミックオペレーションを実行するよう要求するリクエストを受信させ、１または複数のペンディング中のアトミックオペレーションと上記リクエストで特定されるメモリロケーションとの関連に応答して、上記１または複数のペンディング中のアトミックオペレーションのためにＡＬＵの実行パイプラインに上記アトミックオペレーションを追加させ、上記実行パイプラインの少なくとも一部は、上記メモリロケーションを迂回する、少なくとも１つのコンピュータ可読記憶媒体を含み得る。
【００６６】
実施例１４は、上記複数の命令が実行された場合に上記メモリアクセスコントローラに、上記アトミックオペレーションを上記実行パイプラインに追加すべく、上記アトミックオペレーションに関連する修正を用いてリンクリストをポピュレートさせ、上記リンクリストは、上記メモリロケーション専用である、実施例１３に記載の少なくとも１つのコンピュータ可読記憶媒体を含み得る。
【００６７】
実施例１５は、上記複数の命令が実行された場合に上記メモリアクセスコントローラに、ペンディング中のアトミックオペレーションが上記メモリロケーションに関連していない場合に上記メモリロケーションからの読み取りを開始させ、上記メモリロケーションからデータを受信させ、上記メモリロケーションのための実行パイプラインを作成させ、上記データを上記ＡＬＵに送信させ、上記アトミックオペレーションに関連する修正を実行するよう上記ＡＬＵに命令させ、上記修正の結果を上記ＡＬＵのアトミックデータバッファに格納するよう上記ＡＬＵに命令させる、実施例１３に記載の少なくとも１つのコンピュータ可読記憶媒体を含み得る。
【００６８】
実施例１６は、上記複数の命令が実行された場合に上記メモリアクセスコントローラに、上記ＡＬＵから上記アトミックオペレーションの結果を受信させ、上記アトミックオペレーションを実行するよう要求する上記リクエストの発信者へ上記結果を送信させ、上記実行パイプラインの次のアトミックオペレーションを特定させ、上記次のアトミックオペレーションに関連する後の修正を実行するよう上記ＡＬＵに命令させ、上記ＡＬＵにパイプライン処理コマンドを送信させ、上記実行パイプラインの最後のアトミックオペレーションの結果が上記ＡＬＵから受信されるまで、上記メモリロケーションへの書き込みを保留させる、実施例１３から１５のいずれか一例に記載の少なくとも１つのコンピュータ可読記憶媒体を含み得る。
【００６９】
実施例１７は、上記パイプライン処理コマンドが、上記後の修正を実行すべく、上記アトミックデータバッファに格納されているデータを用いるよう上記ＡＬＵに命令する、実施例１６に記載の少なくとも１つのコンピュータ可読記憶媒体を含み得る。
【００７０】
実施例１８は、上記複数の命令が実行された場合に上記メモリアクセスコントローラに、上記メモリロケーションに対するスヌープを検出させ、上記スヌープに応答して上記実行パイプラインの形成を中断させ、上記実行パイプラインに関連する全てのリクエストが完了した場合に上記スヌープの発信者に応答を送信させ、上記応答が上記スヌープの上記発信者へ送信された後に、上記実行パイプラインの形成を再開させる、実施例１３に記載の少なくとも１つのコンピュータ可読記憶媒体を含み得る。
【００７１】
実施例１９は、アトミックオペレーションを実行するよう要求するリクエストを受信するリクエストモジュールと、１または複数のペンディング中のアトミックオペレーションと上記リクエストで特定されるメモリロケーションとの関連に応答して、上記１または複数のペンディング中のアトミックオペレーションのためにＡＬＵの実行パイプラインに上記アトミックオペレーションを追加するアトミックコントローラと、を備え、上記実行パイプラインの少なくとも一部は、上記メモリロケーションを迂回する、メモリアクセスコントローラを含み得る。
【００７２】
実施例２０は、上記アトミックコントローラが、上記実行パイプラインに上記アトミックオペレーションを追加すべく、上記アトミックオペレーションに関連する修正を用いてリンクリストをポピュレートするリンクリストモジュールを有し、上記リンクリストは、上記メモリロケーション専用である、実施例１９に記載のメモリアクセスコントローラを含み得る。
【００７３】
実施例２１は、上記メモリアクセスコントローラがさらに、ペンディング中のアトミックオペレーションが上記メモリロケーションに関連していない場合に上記メモリロケーションからの読み取りを開始し、上記メモリロケーションからデータを受信するメモリインタフェースを備え、上記アトミックモジュールは、上記メモリロケーションのための実行パイプラインを作成するパイプラインモジュールを有し、上記メモリアクセスコントローラがさらに、上記データを上記ＡＬＵに送信し、上記アトミックオペレーションに関連する修正を実行するよう上記ＡＬＵに命令するデータモジュールを備え、上記パイプラインモジュールは、上記修正の結果を上記ＡＬＵのアトミックデータバッファに格納するよう上記ＡＬＵに命令する、実施例１９に記載のメモリアクセスコントローラを含み得る。
【００７４】
実施例２２は、上記メモリアクセスコントローラがさらに、上記ＡＬＵから上記アトミックオペレーションの結果を受信する結果モジュールと、上記アトミックオペレーションを実行するよう要求する上記リクエストの発信者へ上記結果を送信する処理応答モジュールと、を備え、上記アトミックコントローラは、上記実行パイプラインの次のアトミックオペレーションを特定し、上記次のアトミックオペレーションに関連する後の修正を実行するよう上記ＡＬＵに命令し、上記ＡＬＵにパイプライン処理コマンドを送信するパイプラインモジュールを有し、上記メモリアクセスコントローラがさらに、上記実行パイプラインの最後のアトミックオペレーションの結果が上記ＡＬＵから受信されるまで、上記メモリロケーションへの書き込みを保留するメモリインタフェースを備える、実施例１９から２１のいずれか一例に記載のメモリアクセスコントローラを含み得る。
【００７５】
実施例２３は、上記パイプライン処理コマンドが、上記後の修正を実行すべく、上記アトミックデータバッファに格納されているデータを用いるよう上記ＡＬＵに命令する、実施例２２に記載のメモリアクセスコントローラを含み得る。
【００７６】
実施例２４は、上記メモリアクセスコントローラがさらに、上記メモリロケーションに対するスヌープを検出するスヌープモニタを備え、上記アトミックコントローラは、上記スヌープに応答して上記実行パイプラインの形成を中断し、上記メモリアクセスコントローラがさらに、上記実行パイプラインに関連する全てのリクエストが完了した場合に上記スヌープの発信者に応答を送信するスヌープ応答モジュールを備え、上記アトミックコントローラは、上記応答が上記スヌープの上記発信者へ送信された後に、上記実行パイプラインの形成を再開する、実施例１９に記載のメモリアクセスコントローラを含み得る。
【００７７】
実施例２５は、実施例７から１２のいずれか一例に記載の方法を実施するための手段を備えるメモリアクセスコントローラを含み得る。
【００７８】
様々な実施形態は、ハードウェア要素、ソフトウェア要素、またはこれら両方の組み合わせを用いて実装され得る。ハードウェア要素の例には、プロセッサ、マイクロプロセッサ、回路、回路要素（例えば、トランジスタ、抵抗、コンデンサ、誘電子、およびその他）、集積回路、特定用途向け集積回路（ＡＳＩＣ）、プログラム可能ロジックデバイス（ＰＬＤ）、デジタル信号プロセッサ（ＤＳＰ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ロジックゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセット、およびその他が含まれ得る。ソフトウェアの例には、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、マシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、関数、方法、プロシージャ、ソフトウェアインタフェース、アプリケーションプログラムインタフェース（ＡＰＩ）、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル、またはこれらの何らかの組み合わせが含まれ得る。実施形態をハードウェア要素を用いて実装する、および／またはソフトウェア要素を用いて実装することについての決定は、所望される演算レート、電力レベル、耐熱性、処理サイクルバジェット、入力データレート、出力データレート、メモリリソース、データバススピード、および他の設計または性能制約など任意の数の要因に従って変わり得る。
【００７９】
少なくとも１つの実施形態の１または複数の態様は、マシンに読み取られた場合に、当該マシンに本明細書に説明される技術を実行するためのロジックを組み立てる、プロセッサ内の様々なロジックを表す、マシン可読媒体に格納された代表的な命令により実装され得る。「ＩＰ」コアとして知られるそのような表現は、有形のマシン可読媒体に格納され、実際にロジックまたはプロセッサを作成する組み立てマシンにロードする様々な顧客または製造施設へ供給され得る。
【００８０】
実施形態は、全てのタイプの半導体集積回路（「ＩＣ」）チップでの使用に適用可能である。これらＩＣチップの例には、これらに限定されるわけではないが、プロセッサ、コントローラ、チップセットコンポーネント、プログラム可能ロジックアレイ（ＰＬＡ）、メモリチップ、ネットワークチップ、およびその他が含まれる。加えて、いくつかの図面において、信号線は線で表されている。あるものはより多くの成分信号パスを示すべく異なっており、あるものは多数の成分信号パスを示すべく数の符号を有しており、および／または、あるものは主な情報のフロー方向を示すべく、１または複数の端部において矢印を有している。しかしこのことは、限定的に解釈されるべきではない。むしろそのような追加された詳細は、回路の容易な理解を促すべく、１または複数の例示的な実施形態に関連して用いられ得る。追加的な情報を有していようといなかろうと、何らかの示された信号線は、実際には複数の方向に移動し得る１または複数の信号を備え得、例えば、差動対を用いて実装されるデジタルまたはアナログ線、光ファイバー線、および／またはシングルエンド線など何らかの適したタイプの信号方式を用いて実装され得る。
【００８１】
例示的なサイズ／モデル／値／範囲が提示されているかもしれないが、実施形態はそれらに限定されない。製造技術（例えばフォトリソグラフィ）が時の経過と共に成熟するにつれ、より小さいサイズのデバイスが製造され得ることが予期される。加えて、ＩＣチップおよび他のコンポーネントへの周知の電力／接地接続が図面内に示されていることもあり、示されていないこともある。これは図示および説明を単純にするためであり、実施形態の特定の態様を曖昧にしないようにするためである。さらに、実施形態を曖昧にすることを避けるために、および、そのようなブロック図の構成の実装に関する詳細が、実施形態が実装されるプラットフォームに大いに依存している、つまり、そのような詳細が十分に当業者の理解の範囲内であるという事実に鑑みて、ブロック図の形態で構成が示されているかもしれない。例示的な実施形態を説明するために特定の詳細（例えば回路）が明記されている場合、実施形態がこれら特定の詳細を用いなくとも、またはそれらの変形例を用いて実施され得ることが当業者には明らかであろう。したがって説明は、限定するものではなく例示するものとして見なされるべきである。
【００８２】
いくつかの実施形態は、例えば、マシン、若しくはマシンにより実行された場合に実施形態に係る方法および／または処理を当該マシンに実行させる命令または命令セットを格納し得る有形のコンピュータ可読媒体または物品を用いて実装され得る。そのようなマシンには、例えば、何らかの適した処理プラットフォーム、コンピューティングプラットフォーム、コンピューティングデバイス、プロセッシングデバイス、コンピューティングシステム、プロセッシングシステム、コンピュータ、プロセッサ、またはその他が含まれ得、ハードウェアおよび／またはソフトウェアの何らかの適した組み合わせを用いて実装され得る。マシン可読媒体または物品には、例えば、何らかの適したタイプのメモリユニット、メモリデバイス、メモリ物品、メモリ媒体、記憶デバイス、記憶物品、記憶媒体、および／または記憶ユニットが含まれ得、それらの例には、例えば、メモリ、取り外し可能または取り外し不可能な媒体、消去可能または消去不可能な媒体、書き込み可能または再書き込み可能な媒体、デジタルまたはアナログ媒体、ハードディスク、フロッピー（登録商標）ディスク、コンパクトディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、コンパクトディスクレコーダブル（ＣＤ−Ｒ）、コンパクトディスクリライタブル（ＣＤ−ＲＷ）、光ディスク、磁気媒体、光磁気記録媒体、取り外し可能メモリカードまたはディスク、様々なタイプのデジタル多用途ディスク（ＤＶＤ）、テープ、カセット、またはその他が含まれ得る。命令は、何らかの適した高級言語、低級言語、オブジェクト指向言語、視覚言語、コンパイラ型および／またはインタープリタ型プログラミング言語を用いて実装される、ソースコード、コンパイラ型コード、インタープリタ型コード、実行可能コード、静的コード、動的コード、暗号化コード、およびその他など何らかの適したタイプのコードを含み得る。
【００８３】
特に異なるように述べない限り、「処理」、「演算」、「計算」、「決定」、またはその他などの用語は、コンピューティングシステムのレジスタおよび／またはメモリ内で物理量（例えば、電子的）として表されるデータを操作する、および／またはコンピューティングシステムのメモリ、レジスタ、または他のそのような情報記憶、送信またはディスプレイデバイス内で同様に物理量として表される他のデータに変換する、コンピュータまたはコンピューティングシステム、若しくは同様の電子コンピューティングデバイスの動作および／または処理を指し得ることが理解されよう。実施形態はこの文脈に限定されない。
【００８４】
「結合された」という用語は本明細書において、対象のコンポーネント間の直接的または間接的な何らかのタイプの関係を指すのに用いられ得、電子的、機械的、流体的、光学的、電磁気的、電気機械的、または他のタイプの接続に適用され得る。加えて、「第１」、「第２」、その他の用語は本明細書において、説明を容易にするためのみに用いられており、異なるように示されていない限り、何ら特定の時間的または時系列的な意味を伝えない。
【００８５】
当業者は上記の説明から、実施形態の幅広い技術が、様々な形態で実装され得ることを理解されよう。したがって、特定の例に関連して実施形態が説明がされてきたが、実施形態の真の態様はそのように限定されるべきではない。なぜなら、当業者が図面、明細書、および以下の請求項を検討することにより、他の修正が明らかとなるからである。
本明細書によれば、以下の各項目に記載の構成もまた開示される。
［項目１］
コンテンツを視覚的に提示するディスプレイと、
メモリロケーションを有するメモリデバイスと、
アトミックデータバッファを有する演算ロジックユニット（ＡＬＵ）と、
前記メモリデバイスと前記ＡＬＵとに結合されたメモリアクセスコントローラと
を備え、
前記メモリアクセスコントローラは、
前記コンテンツに対してアトミックオペレーションを実行するよう要求するリクエストであり、前記メモリロケーションを特定する前記リクエストを受信するリクエストモジュールと、
１または複数のペンディング中のアトミックオペレーションと前記メモリロケーションとの関連に応答して、前記１または複数のペンディング中のアトミックオペレーションのために前記ＡＬＵの実行パイプラインに前記アトミックオペレーションを追加するアトミックコントローラと、
を有し、
前記実行パイプラインの少なくとも一部は、前記メモリロケーションを迂回し、前記アトミックデータバッファを用いる、システム。
［項目２］
前記アトミックコントローラは、前記実行パイプラインに前記アトミックオペレーションを追加すべく、前記アトミックオペレーションに関連する修正を用いてリンクリストをポピュレートするリンクリストモジュールを含み、
前記リンクリストは、前記メモリロケーション専用である、項目１に記載のシステム。
［項目３］
前記メモリアクセスコントローラはさらに、ペンディング中のアトミックオペレーションが前記メモリロケーションに関連していない場合に前記メモリロケーションからの読み取りを開始し、前記メモリロケーションからデータを受信するメモリインタフェースを有し、
前記アトミックコントローラは、前記メモリロケーションのための実行パイプラインを作成するパイプラインモジュールを含み、
前記メモリアクセスコントローラはさらに、前記データを前記ＡＬＵに送信し、前記アトミックオペレーションに関連する修正を実行するよう前記ＡＬＵに命令するデータモジュールを有し、
前記パイプラインモジュールは、前記修正の結果を前記ＡＬＵの前記アトミックデータバッファに格納するよう前記ＡＬＵに命令する、項目１に記載のシステム。
［項目４］
前記メモリアクセスコントローラはさらに、
前記ＡＬＵから前記アトミックオペレーションの結果を受信する結果モジュールと、
前記アトミックオペレーションを実行するよう要求する前記リクエストの発信者へ前記結果を送信する処理応答モジュールと、
を有し、
前記アトミックコントローラは、前記実行パイプラインの次のアトミックオペレーションを特定し、前記次のアトミックオペレーションに関連する後の修正を実行するよう前記ＡＬＵに命令し、前記ＡＬＵにパイプライン処理コマンドを送信するパイプラインモジュールを含み、
前記メモリアクセスコントローラはさらに、前記実行パイプラインの最後のアトミックオペレーションの結果が前記ＡＬＵから受信されるまで、前記メモリロケーションへの書き込みを保留するメモリインタフェースを有する、項目１から３のいずれか一項に記載のシステム。
［項目５］
前記パイプライン処理コマンドは、前記後の修正を実行すべく、前記アトミックデータバッファに格納されているデータを用いるよう前記ＡＬＵに命令する、項目４に記載のシステム。
［項目６］
前記メモリアクセスコントローラはさらに、前記メモリロケーションに対するスヌープを検出するスヌープモニタを有し、
前記アトミックコントローラは、前記スヌープに応答して前記実行パイプラインの形成を中断し、
前記メモリアクセスコントローラはさらに、前記実行パイプラインに関連する全てのリクエストが完了した場合に前記スヌープの発信者に応答を送信するスヌープ応答モジュールを有し、
前記アトミックコントローラは、前記応答が前記スヌープの前記発信者へ送信された後に、前記実行パイプラインの形成を再開する、項目１に記載のシステム。
［項目７］
アトミックオペレーションを実行するよう要求するリクエストを受信する段階と、
１または複数のペンディング中のアトミックオペレーションと前記リクエストで特定されるメモリロケーションとの関連に応答して、前記１または複数のペンディング中のアトミックオペレーションのために演算ロジックユニット（ＡＬＵ）の実行パイプラインに前記アトミックオペレーションを追加する段階と
を備え、
前記実行パイプラインの少なくとも一部は、前記メモリロケーションを迂回する、メモリアクセスコントローラを動作させる方法。
［項目８］
前記実行パイプラインに前記アトミックオペレーションを追加する段階は、前記アトミックオペレーションに関連する修正を用いてリンクリストをポピュレートする段階を有し、
前記リンクリストは、前記メモリロケーション専用である、項目７に記載の方法。
［項目９］
ペンディング中のアトミックオペレーションが前記メモリロケーションに関連していない場合に前記メモリロケーションからの読み取りを開始する段階と、
前記メモリロケーションからデータを受信する段階と、
前記メモリロケーションのための実行パイプラインを作成する段階と、
前記データを前記ＡＬＵに送信する段階と、
前記アトミックオペレーションに関連する修正を実行するよう前記ＡＬＵに命令する段階と、
前記修正の結果を前記ＡＬＵのアトミックデータバッファに格納するよう前記ＡＬＵに命令する段階と
をさらに備える、項目７に記載の方法。
［項目１０］
前記ＡＬＵから前記アトミックオペレーションの結果を受信する段階と、
前記アトミックオペレーションを実行するよう要求する前記リクエストの発信者へ前記結果を送信する段階と、
前記実行パイプラインの次のアトミックオペレーションを特定する段階と、
前記次のアトミックオペレーションに関連する後の修正を実行するよう前記ＡＬＵに命令する段階と、
前記ＡＬＵにパイプライン処理コマンドを送信する段階と、
前記実行パイプラインの最後のアトミックオペレーションの結果が前記ＡＬＵから受信されるまで、前記メモリロケーションへの書き込みを保留する段階と
をさらに備える、項目９に記載の方法。
［項目１１］
前記パイプライン処理コマンドは、前記後の修正を実行すべく、前記アトミックデータバッファに格納されているデータを用いるよう前記ＡＬＵに命令する、項目１０に記載の方法。
［項目１２］
前記メモリロケーションに対するスヌープを検出する段階と、
前記スヌープに応答して前記実行パイプラインの形成を中断する段階と、
前記実行パイプラインに関連する全てのリクエストが完了した場合に前記スヌープの発信者に応答を送信する段階と、
前記応答が前記スヌープの前記発信者へ送信された後に、前記実行パイプラインの形成を再開する段階と
をさらに備える、項目７に記載の方法。
［項目１３］
アトミックオペレーションを実行するよう要求するリクエストを受信する手順と、
１または複数のペンディング中のアトミックオペレーションと前記リクエストで特定されるメモリロケーションとの関連に応答して、前記１または複数のペンディング中のアトミックオペレーションのために演算ロジックユニット（ＡＬＵ）の実行パイプラインに前記アトミックオペレーションを追加する手順と
をメモリアクセスコントローラに実行させ、
前記実行パイプラインの少なくとも一部は、前記メモリロケーションを迂回する、プログラム。
［項目１４］
前記メモリアクセスコントローラに、前記実行パイプラインに前記アトミックオペレーションを追加すべく、前記アトミックオペレーションに関連する修正を用いてリンクリストをポピュレートする手順を実行させ、
前記リンクリストは、前記メモリロケーション専用である、項目１３に記載のプログラム。
［項目１５］
ペンディング中のアトミックオペレーションが前記メモリロケーションに関連していない場合に前記メモリロケーションからの読み取りを開始する手順と、
前記メモリロケーションからデータを受信する手順と、
前記メモリロケーションのための実行パイプラインを作成する手順と、
前記データを前記ＡＬＵに送信する手順と、
前記アトミックオペレーションに関連する修正を実行するよう前記ＡＬＵに命令する手順と、
前記修正の結果を前記ＡＬＵのアトミックデータバッファに格納するよう前記ＡＬＵに命令する手順と
を前記メモリアクセスコントローラに実行させる、項目１３に記載のプログラム。
［項目１６］
前記ＡＬＵから前記アトミックオペレーションの結果を受信する手順と、
前記アトミックオペレーションを実行するよう要求する前記リクエストの発信者へ前記結果を送信する手順と、
前記実行パイプラインの次のアトミックオペレーションを特定する手順と、
前記次のアトミックオペレーションに関連する後の修正を実行するよう前記ＡＬＵに命令する手順と、
前記ＡＬＵにパイプライン処理コマンドを送信する手順と、
前記実行パイプラインの最後のアトミックオペレーションの結果が前記ＡＬＵから受信されるまで、前記メモリロケーションへの書き込みを保留する手順と
を前記メモリアクセスコントローラに実行させる、項目１５に記載のプログラム。
［項目１７］
前記パイプライン処理コマンドは、前記後の修正を実行すべく、前記アトミックデータバッファに格納されているデータを用いるよう前記ＡＬＵに命令する、項目１６に記載のプログラム。
［項目１８］
前記メモリロケーションに対するスヌープを検出する手順と、
前記スヌープに応答して前記実行パイプラインの形成を中断する手順と、
前記実行パイプラインに関連する全てのリクエストが完了した場合に前記スヌープの発信者に応答を送信する手順と、
前記応答が前記スヌープの前記発信者へ送信された後に、前記実行パイプラインの形成を再開する手順と
を前記メモリアクセスコントローラに実行させる、項目１３に記載のプログラム。
［項目１９］
アトミックオペレーションを実行するよう要求するリクエストを受信するリクエストモジュールと、
１または複数のペンディング中のアトミックオペレーションと前記リクエストで特定されるメモリロケーションとの関連に応答して、前記１または複数のペンディング中のアトミックオペレーションのために演算ロジックユニット（ＡＬＵ）の実行パイプラインに前記アトミックオペレーションを追加するアトミックコントローラと、
を備え、
前記実行パイプラインの少なくとも一部は、前記メモリロケーションを迂回する、メモリアクセスコントローラ。
［項目２０］
前記アトミックコントローラは、前記実行パイプラインに前記アトミックオペレーションを追加すべく、前記アトミックオペレーションに関連する修正を用いてリンクリストをポピュレートするリンクリストモジュールを有し、
前記リンクリストは、前記メモリロケーション専用である、項目１９に記載のメモリアクセスコントローラ。
［項目２１］
前記メモリアクセスコントローラはさらに、ペンディング中のアトミックオペレーションが前記メモリロケーションに関連していない場合に前記メモリロケーションからの読み取りを開始し、前記メモリロケーションからデータを受信するメモリインタフェースを備え、
前記アトミックコントローラは、前記メモリロケーションのための実行パイプラインを作成するパイプラインモジュールを有し、
前記メモリアクセスコントローラはさらに、前記データを前記ＡＬＵに送信し、前記アトミックオペレーションに関連する修正を実行するよう前記ＡＬＵに命令するデータモジュールを備え、
前記パイプラインモジュールは、前記修正の結果を前記ＡＬＵのアトミックデータバッファに格納するよう前記ＡＬＵに命令する、項目１９に記載のメモリアクセスコントローラ。
［項目２２］
前記メモリアクセスコントローラはさらに、
前記ＡＬＵから前記アトミックオペレーションの結果を受信する結果モジュールと、
前記アトミックオペレーションを実行するよう要求する前記リクエストの発信者へ前記結果を送信する処理応答モジュールと、
を備え、
前記アトミックコントローラは、前記実行パイプラインの次のアトミックオペレーションを特定し、前記次のアトミックオペレーションに関連する後の修正を実行するよう前記ＡＬＵに命令し、前記ＡＬＵにパイプライン処理コマンドを送信するパイプラインモジュールを有し、
前記メモリアクセスコントローラはさらに、前記実行パイプラインの最後のアトミックオペレーションの結果が前記ＡＬＵから受信されるまで、前記メモリロケーションへの書き込みを保留するメモリインタフェースを備える、項目２１に記載のメモリアクセスコントローラ。
［項目２３］
前記パイプライン処理コマンドは、前記後の修正を実行すべく、前記アトミックデータバッファに格納されているデータを用いるよう前記ＡＬＵに命令する、項目２２に記載のメモリアクセスコントローラ。
［項目２４］
前記メモリアクセスコントローラはさらに、前記メモリロケーションに対するスヌープを検出するスヌープモニタを備え、
前記アトミックコントローラは、前記スヌープに応答して前記実行パイプラインの形成を中断し、
前記メモリアクセスコントローラはさらに、前記実行パイプラインに関連する全てのリクエストが完了した場合に前記スヌープの発信者に応答を送信するスヌープ応答モジュールを備え、
前記アトミックコントローラは、前記応答が前記スヌープの前記発信者へ送信された後に、前記実行パイプラインの形成を再開する、項目１９に記載のメモリアクセスコントローラ。
［項目２５］
項目７から９のいずれか一項に記載の方法を実施するための手段を備えるメモリアクセスコントローラ。
【図１】
0005908957.tif 000002
【図２】
0005908957.tif 000003
【図３】
0005908957.tif 000004
【図４】
0005908957.tif 000005
【図５】
0005908957.tif 000006
【図６】
0005908957.tif 000007
【図７】
0005908957.tif 000008
【図８Ａ】
0005908957.tif 000009
【図８Ｂ】
0005908957.tif 000010
【図８Ｃ】
0005908957.tif 000011