(57)【要約】  特定の実施形態では、超長命令語(VLIW)プロセッサは、VLIW命令を実行するよう動作可能である。VLIW命令のうちの少なくとも1つは、第1のロードまたはストア命令および第2のロードまたはストア命令を含む。第1の命令および第2の命令は、単一のアトミック単位として実行される。第1および第2の命令のうちの少なくとも1つは、条件付きストア命令である。
2014530429.tif 000002
【特許請求の範囲】
【請求項１】
超長命令語(VLIW)命令を実行するよう動作可能なVLIWプロセッサを含み、前記VLIW命令のうちの少なくとも1つは、第1のロードまたはストア命令および第2のロードまたはストア命令を含み、前記第1の命令および前記第2の命令は、単一のアトミック単位として実行され、前記第1および第2の命令のうちの少なくとも1つは、条件付きストア命令である、装置。
【請求項２】
前記条件付きストア命令は、前記条件付きストア命令に対応するアドレス予約レジスタに記憶された有効ビットが有効であると判定される場合のみコミットする、請求項1に記載の装置。
【請求項３】
前記アドレス予約レジスタは、前記条件付きストア命令に関連する予約済みアドレスを記憶するように構成される、請求項2に記載の装置。
【請求項４】
前記条件付きストア命令の実行は、実行成功の指示または実行失敗の指示のうちの1つを提供するように構成される、請求項1に記載の装置。
【請求項５】
前記VLIWプロセッサの少なくとも1つのメモリ位置は、実行成功の前記指示に応答して、前記条件付きストア命令に対応するデータにより更新され、前記VLIWプロセッサの前記少なくとも1つのメモリ位置は、実行失敗の前記指示に応答して、前記条件付きストア命令に対応する前記データによっては更新されない、請求項4に記載の装置。
【請求項６】
前記VLIWプロセッサの前記少なくとも1つのメモリ位置は、先入れ先出し(FIFO)バッファのエントリと、前記FIFOバッファの前記エントリに対応する書込みインデックスとを含む、請求項5に記載の装置。
【請求項７】
前記VLIWプロセッサは、実行失敗の前記指示に応答して少なくとも1つのVLIW命令の実行を再試行するように構成される、請求項5に記載の装置。
【請求項８】
前記第1および第2の命令を単一のアトミック単位としてアトミックに実行することは、前記第1および第2の命令の両方が成功したか、または前記第1および第2の命令の両方が失敗したかのいずれかを判定するステップを含む、請求項1に記載の装置。
【請求項９】
トランザクションメモリ動作を含むプログラムを実行するステップを含むコンピュータで実施される方法であって、前記トランザクションメモリ動作は、第2のメモリ動作にアトミックにリンクされた第1のメモリ動作を含み、前記第1および第2のメモリ動作は、単一の超長命令語(VLIW)パケットによってVLIWプロセッサにおいて実行される、コンピュータで実施される方法。
【請求項１０】
前記第1のメモリ動作は、前記VLIWプロセッサの第1のメモリ位置でデータを読み込むステップを含み、前記第2のメモリ動作は、前記VLIWプロセッサの第2のメモリ位置でデータを読み込むステップを含む、請求項9に記載のコンピュータで実施される方法。
【請求項１１】
前記第1のメモリ位置で前記データを読み込むステップ、および前記第2のメモリ位置で前記データを読み込むステップは、ロードロックされた命令の対を介して実行される、請求項10に記載のコンピュータで実施される方法。
【請求項１２】
前記第1のメモリ動作は、前記VLIWプロセッサの第1のメモリ位置に対応するストア動作を含み、前記第2のメモリ動作は、前記VLIWプロセッサの第2のメモリ位置に対応するストア動作を含む、請求項9に記載のコンピュータで実施される方法。
【請求項１３】
前記第1のメモリ位置における前記ストア動作は、条件付きストア動作である、請求項12に記載のコンピュータで実施される方法。
【請求項１４】
前記第2のメモリ位置における前記ストア動作は、条件なしストア命令である、請求項13に記載のコンピュータで実施される方法。
【請求項１５】
前記プログラムを実行するステップは、前記条件付きストア命令が成功するかどうかを判定するステップをさらに含む、請求項13に記載のコンピュータで実施される方法。
【請求項１６】
前記プログラムを実行するステップは、前記第1の動作に対応する前記VLIWプロセッサの第1のメモリ位置および前記第2の動作に対応する前記VLIWプロセッサの第2のメモリ位置をアトミックに更新すべきと判定するステップをさらに含む、請求項9に記載のコンピュータで実施される方法。
【請求項１７】
ロード/ストアユニットを含むマルチスレッドプロセッサであって、前記ロード/ストアユニットは、各スレッドに割り当てられた複数のアドレス予約レジスタを含み、前記アドレス予約レジスタの各々は、ロードロックされた条件付きストア動作の対に関連する予約済みアドレスを記憶する、マルチスレッドプロセッサ
を含む、装置。
【請求項１８】
前記マルチスレッドプロセッサは、マルチプロセッサアーキテクチャ内の複数のプロセッサのうちの1つであり、前記プロセッサの各々は、複数のアドレス予約レジスタを含む、請求項17に記載の装置。
【請求項１９】
前記ロードロックされた条件付きストア動作の対を完了する前に前記アドレス予約レジスタをチェックすることは、前記アドレス予約レジスタのうちの1つに対応するデータが変化したかどうかを判定することを含む、請求項18に記載の装置。
【請求項２０】
前記ロードロックされた条件付きストア動作の対は、前記アドレス予約レジスタのうちの前記1つだけに対応する前記データが変化したと判定することに応答して失敗となる、請求項19に記載の装置。
【請求項２１】
超長命令語(VLIW)命令を実行するための手段であって、前記VLIW命令のうちの少なくとも1つは、第1のロードまたはストア命令および第2のロードまたはストア命令を含み、前記第1の命令および前記第2の命令は、単一のアトミック単位としてアトミックに実行され、前記第1および第2の命令のうちの少なくとも1つは、条件付きストア命令である、手段と、
VLIW命令を実行するための前記手段に応答する、データを記憶するための手段と
を含む、装置。
【請求項２２】
VLIW命令を実行するための前記手段は、VLIWプロセッサを含む、請求項21に記載の装置。
【請求項２３】
前記VLIWプロセッサは、マルチスレッドVLIWプロセッサであり、前記マルチスレッドVLIWプロセッサの複数のスレッドの各々は、複数のアドレス予約レジスタに割り当てられる、請求項22に記載の装置。
【請求項２４】
データを記憶するための前記手段は、先入れ先出し(FIFO)バッファおよび書込みインデックスを含む、請求項21に記載の装置。
【請求項２５】
前記第1および第2の命令をアトミックに実行することは、前記条件付きストア命令に関連する成功または失敗を示す少なくとも1つの出力を生成するステップを含む、請求項21に記載の装置。
【請求項２６】
VLIW命令を実行するための前記手段は、成功を示す前記少なくとも1つの出力に応答してデータを記憶するための前記手段においてデータを更新するように構成される、請求項25に記載の装置。
【請求項２７】
トランザクションメモリ動作を含むプログラムを実行するためにコンピュータによって実行可能な命令を記憶するコンピュータ可読有形媒体であって、前記トランザクションメモリ動作は、第2のメモリ動作にアトミックにリンクされた第1のメモリ動作を含み、前記第1および第2のメモリ動作は、単一の超長命令語(VLIW)パケットによってVLIWプロセッサにおいて実行される、コンピュータ可読有形媒体。
【請求項２８】
前記第1のメモリ動作および前記第2のメモリ動作は、それぞれの第1および第2のロード/ストアユニットを介して実質的にパラレルに実行される、請求項27に記載のコンピュータ可読有形媒体。
【請求項２９】
前記第1および第2のメモリ動作は、条件付きストアメモリ動作である、請求項28に記載のコンピュータ可読有形媒体。
【請求項３０】
超長命令語(VLIW)プロセッサを含み、
前記超長命令語(VLIW)プロセッサは、
複数のデータエントリを含むバッファと、
前記複数のデータエントリの各々を選択的に指すよう動作可能である書込みインデックスと、
ロードロックされた動作の対を単一のアトミック単位として実行するよう動作可能であり、条件付きストア動作の対を単一のアトミック単位として実行するようさらに動作可能であるロード/ストアユニットと
を含む、装置。
【請求項３１】
前記ロードロックされた動作の対を実行することは、前記データエントリのうちの1つおよび前記書込みインデックスに第1の値を読み込むことを含み、前記条件付きストア命令の対を実行することは、前記1つのデータエントリおよび前記書込みインデックスに第2の値を記憶することを含む、請求項30に記載の装置。
【請求項３２】
前記第1の値が、前記ロードロックされた動作の対を実行することに続いて変更されたかどうかを判定するための論理回路をさらに含む、請求項31に記載の装置。
【請求項３３】
複数のアドレス予約レジスタをさらに含み、前記アドレス予約レジスタは、各々が前記ロードロックされた動作の対に関連する予約済みアドレスと有効ビットとを記憶するように構成される、請求項32に記載の装置。
【請求項３４】
前記VLIWプロセッサは、前記ロードロックされた動作の対および前記条件付きストア命令の対を介してロード・モディファイ・ライト動作の対をアトミックに実行するよう動作可能である、請求項30に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、メモリ動作を実行するよう動作するプロセッサに関する。
【背景技術】
【０００２】
技術の進歩によって、コンピューティングデバイスはより小型にかつより高性能になってきている。たとえば、現在、小型で、軽量で、ユーザが持ち運びやすい、ポータブルワイヤレス電話、携帯情報端末(PDA)、およびページングデバイスなどの、ワイヤレスコンピューティングデバイスを含む、様々な携帯型のパーソナルコンピューティングデバイスが存在する。より具体的には、セルラー電話やインターネットプロトコル(IP)電話などの携帯型のワイヤレス電話は、ボイスおよびデータパケットを、ワイヤレスネットワークを介して通信することができる。さらに、多くのそのようなワイヤレス電話には、内部に他の種類のデバイスが組み込まれている。たとえば、ワイヤレス電話は、デジタルスチルカメラ、デジタルビデオカメラ、デジタルレコーダ、およびオーディオファイルプレーヤも含み得る。また、そのようなワイヤレス電話は、ウェブブラウザアプリケーションなど、インターネットにアクセスするために使用され得るソフトウェアアプリケーションを含む実行可能な命令を処理することができる。したがって、これらのワイヤレス電話は、高いコンピューティング能力を含み得る。
【０００３】
ワイヤレス電話などの電子デバイスは、資源(たとえば、メモリ内のデータ構造)を共有する複数の要求元(たとえば、マルチスレッドプロセッサのスレッドまたは複数のプロセッサ)を含み得る。たとえば、複数の要求元(たとえば、読み手および書き手)は、一時的にデータを蓄えるために先入れ先出し(FIFO)データ構造を使用することができる。書込みインデックスは、(たとえば、FIFOデータ構造において、電子デバイスのスレッドまたはプロセッサがデータをどこに書き込むべきかがわかるように)FIFOデータ構造の次の利用可能なエントリを指すことができる。
【０００４】
しかしながら、データおよびデータに対応する書込みインデックスが別個に更新される際に、問題が起こる可能性がある。たとえば、データが書込みインデックスよりも前に更新される場合、同時に操作する別の書き手は、データ位置を上書きする可能性がある。逆に、書込みインデックスがデータよりも前に更新される場合、同時に発生する読み手は、まだ読み込まれていないデータを読み込もうとする場合がある。したがって、データとその対応する書込みインデックスエントリの両方をアトミックに、すなわち同じメモリトランザクションの一部として更新することが望ましい場合がある。
【発明の概要】
【課題を解決するための手段】
【０００５】
データと書込みインデックスの両方をアトミックに更新することができるように、様々な技法を実装することができる。たとえば、一度に1つの書き手だけがデータ構造を変更することができるように、構造のすべてまたは一部をロックすることができる。しかしながら、ロックは、同時処理を制限し、パフォーマンスのボトルネックをもたらす可能性がある。これらのボトルネックを克服するために、ロックを取得することなく同時にデータ構造を更新するのに、「ロックフリー」アルゴリズムを使用することができる。
【０００６】
プロセッサは、ロックおよび「ロックフリー」アルゴリズムを実装することができる、アトミックなリードモディファイライト(read-modify-write)操作を使用することができる。しかしながら、一部のロックフリーアルゴリズムは、複数の同時メモリ動作のアトミックな実行を必要とする場合がある。一部のアーキテクチャは、複数のメモリ動作がアトミックに発生することを可能にする機構を発展させてきた。たとえば、部分コミット命令は、提案された動作に関する情報を記録し、その後、その動作を完了すべきか否かを決定することができる。(たとえば、例外、別のプロセッサもしくはスレッドによる変更、または失敗の原因になる他のイベントのために)動作を完了すべきでないと決定される場合、すでに実行された動作の一部は、「巻き返される(rewound)」(すなわち、取り消される)可能性がある。動作を完了すべきであると決定される場合、トランザクション内のすべての更新が「コミットされる」(すなわち、メモリに書き込まれる)可能性がある。これは、しばしば、「トランザクションメモリ」と呼ばれる。
【０００７】
トランザクションメモリシステムは、常に望ましいわけではない可能性がある。たとえば、トランザクションメモリは、トランザクションプロトコルをサポートするために、追加のメモリ、バス、キャッシュ、およびプロセッサの複雑性を伴う場合、コストが高くなる場合がある。
【０００８】
メモリ位置のアトミックな更新は、ロードロック動作と呼ばれる、メモリに記憶された値の特定のロードを必要とする可能性がある。値を変更した後、値がロードされてから、他のプロセッサまたはスレッドが値を変更しなかった場合、変更された値を記憶する第2の動作を使用することができる。これは、条件付きストア(store-conditional)と呼ばれることがある。トランザクションメモリ動作は、複数(たとえば、2つ)の条件付きストア動作をアトミックに実行することができる。複数の命令の実行は、動作の成功または失敗のいずれかをもたらす(たとえば、条件付きストアメモリ動作のいずれかが失敗した場合、複数の命令が失敗したと見なされる)。本明細書で使用するように、2つの動作は、オールオアナッシング関係を有する場合、すなわち両動作が成功するか、または両動作が失敗するかのいずれかである場合、「アトミックに実行された」と見なされる場合があることに留意されたい。さらに、本明細書で使用するように、2つの動作は、単一のパケット内にカプセル化され、したがって、同時にかつ不可分に実行される場合があるという点で「アトミックにリンクされる」可能性がある。したがって、「アトミックにリンクされる」動作は、「グループ化される」または「パケット化される」と呼ばれることもある。
【０００９】
別の特定の実施形態では、超長命令語(very long instruction word: VLIW)プロセッサは、VLIW命令を実行するよう動作可能であり、VLIW命令のうちの少なくとも1つは、第1のロードまたはストア命令および第2のロードまたはストア命令を含む。第1の命令および第2の命令は、単一のアトミック単位として実行される。第1および第2の命令のうちの少なくとも1つは、条件付きストア命令である。
【００１０】
別の特定の実施形態では、コンピュータで実施される方法は、トランザクションメモリ動作を含むプログラムを実行するステップを含む。トランザクションメモリ動作は、第2のメモリ動作にアトミックにリンクされた第1のメモリ動作を含む。第1および第2のメモリ動作は、VLIWプロセッサにおいて実行するための単一のVLIWパケットによって識別される。
【００１１】
別の特定の実施形態では、装置は、ロード/ストアユニットを含むマルチスレッドプロセッサを含む。ロード/ストアユニットは、各スレッドに割り当てられた複数のアドレス予約レジスタを含む。アドレス予約レジスタの各々は、ロードロックされた条件付きストア動作の対に関連する予約済みアドレスを記憶し、予約済みアドレスにおけるデータが変化したかどうかを示す有効ビットをさらに含み得る。命令の対に関連する成功または失敗は、命令の対のうちの1つまたは複数に関連するデータが変化したかどうかに基づく(たとえば、データが変化したことを有効ビットが示すかどうかに基づく)可能性がある。
【００１２】
別の特定の実施形態では、装置は、超長命令語(very long instruction word: VLIW)命令を実行するための手段を含み、VLIW命令のうちの少なくとも1つは、第1のロードまたはストア命令および第2のロードまたはストア命令を含み、第1の命令および第2の命令は、単一のアトミック単位としてアトミックに実行され、第1および第2の命令のうちの少なくとも1つは、条件付きストア命令である。本装置は、VLIW命令を実行するための手段に応答する、データを記憶するための手段をさらに含む。
【００１３】
別の特定の実施形態では、コンピュータ可読有形媒体は、トランザクションメモリ動作を含むプログラムを実行するためにコンピュータによって実行可能な命令を記憶する。トランザクションメモリ動作は、第2のメモリ動作にアトミックにリンクされた第1のメモリ動作を含み、第1および第2のメモリ動作は、VLIWプロセッサにおいて単一の超長命令語(VLIW)パケットによって実行される。
【００１４】
別の特定の実施形態では、装置は、VLIWプロセッサを含む。VLIWプロセッサは、複数のデータエントリ、複数のデータエントリの各々を選択的に指すよう動作可能な書込みインデックス、およびロード/ストアユニットを含むバッファを有する。ロード/ストアユニットは、ロードロックされた動作の対を単一のアトミック単位として実行し、また条件付きストア動作の対を単一のアトミック単位として実行する。
【００１５】
開示する実施形態のうちの少なくとも1つによってもたらされる1つの特定の利点は、同時に起こるアトミックなメモリ動作を実行するよう動作するVLIWプロセッサである。たとえば、VLIWプロセッサの複数のスレッドは、資源をロックすることなく、かつスレッドが資源にアクセスするのを妨げることなく、資源(たとえば、データ構造)を共有することができる。したがって、すべてのスレッドが資源を使用することを許可され得るので、資源の使用は、あまり制限されない可能性がある。
【００１６】
開示する実施形態のうちの少なくとも1つによってもたらされる別の特定の利点は、メモリ動作に関する第1の記録用情報なしにメモリ動作を実行するよう動作するVLIWプロセッサである。たとえば、従来のトランザクションメモリは、部分コミット命令を使用することができ、提案されたメモリ動作に関する情報は、提案されたメモリ動作を実行すべきか否かを判定する前に記録される。本開示によるトランザクションメモリは、(たとえば、第1の命令を実行した結果に基づいて第2の命令を実行すべきかどうかを判定することなく)実質的にパラレルに第1および第2の命令を実行することができる。開示する実施形態のうちの少なくとも1つによって提供されるさらに別の利点は、(たとえば、キャッシュ、バス、またはメモリサポートなどの外部回路なしに)コアチップ内でサポートされるトランザクションメモリである。
【００１７】
本開示の他の態様、利点、および特徴は、以下のセクション、すなわち、図面の簡単な説明、発明を実施するための形態、および特許請求の範囲を含む、本出願全体の検討後に明らかになろう。
【図面の簡単な説明】
【００１８】
【図１】単一のアトミック単位として命令を実行する装置の特定の例示的な実施形態のブロック図である。
【図２】図1の装置のロード/ストアユニットの特定の例示的な実施形態のブロック図である。
【図３】図1の装置のロード/ストアユニットの動作の特定の例示的な実施形態の図である。
【図４】VLIW命令の対を実行する方法の特定の例示的な実施形態のフローチャートである。
【図５】図1の装置のロード/ストアユニットを含むプロセッサを含む電子デバイスのブロック図である。
【発明を実施するための形態】
【００１９】
図1を参照すると、単一のアトミック単位として複数の命令を実行するよう動作可能な装置の特定の例示的な実施形態が示され、全体的に100と称される。装置100は、図示するように、命令キャッシュ110、シーケンサ114、メモリ102、第1のロード/ストアユニット118、第2のロード/ストアユニット120、実行ユニット122、試験論理回路124、および汎用レジスタ(複数可)(たとえば、レジスタファイル)126を含む。
【００２０】
装置100は、バスインターフェース108およびデータキャッシュ112をさらに含む。メモリ102は、バスインターフェース108に結合される。加えて、データキャッシュ112は、バスインターフェース108に結合される。データキャッシュ112またはメモリ102にデータを提供することができる。データキャッシュ112内に記憶されたデータは、バスインターフェース108を介してメモリ102に提供され得る。したがって、メモリ102は、バスインターフェース108を介してデータキャッシュ112からデータを取り出すことができる。
【００２１】
装置100は、スーパーバイザ制御レジスタ132およびグローバル制御レジスタ134をさらに含む。シーケンサ114は、スーパーバイザ制御レジスタ132およびグローバル制御レジスタ134に記憶されたデータに応答することが可能である。たとえば、スーパーバイザ制御レジスタ132およびグローバル制御レジスタ134は、汎用割込み116などの割込みを受け入れるかどうかを決定し、命令の実行を制御するためにシーケンサ114内の制御論理回路によってアクセスされ得るビットを記憶することができる。
【００２２】
特定の実施形態では、装置100は、インターリーブ型マルチスレッドプロセッサである。命令キャッシュ110は、インターリーブ型マルチスレッドプロセッサの特定のスレッドに関連し得る複数の現行命令レジスタを介してシーケンサ114に結合され得る。
【００２３】
メモリ102、汎用レジスタ(複数可)126、およびデータキャッシュ112のうちの1つまたは複数は、複数の要求元、たとえばマルチスレッドプロセッサの複数のスレッドまたはマルチプロセッサシステムの複数のプロセッサの間で共有される可能性がある。特定の実施形態では、メモリ102、汎用レジスタ(複数可)126、およびデータキャッシュ112のうちの1つまたは複数は、図3を参照してさらに後述するように、先入れ先出し(FIFO)バッファ、およびFIFOバッファの次の利用可能なデータエントリを指すように構成された書込みインデックスを含む。
【００２４】
動作中、図示されたVLIW命令パケット101などの超長命令語(VLIW)命令パケットは、メモリ102から取り出され、命令キャッシュ110に提供され得る。図1に示すように、VLIW命令パケット101は、条件付きストア命令103およびロードまたはストア命令104を含む。VLIW命令パケット101は、命令キャッシュ110内に記憶することができ、たとえば入力111を介して、シーケンサ114によって取り出し可能である可能性がある。
【００２５】
シーケンサ114は、VLIW命令パケット101を取り出すことに加えて、汎用割込み116および他の入力に応答する可能性がある。シーケンサ114は、命令103および104などの、VLIW命令または個々の命令を実行ユニットにルーティングすることができる。特定の例示的な実施形態によれば、VLIW命令パケット101は、パラレルまたはシリアルの実行のためにVLIW命令パケット101内の各命令をルーティングすべきかどうかをシーケンサ114に指示するデータを含み得る。
【００２６】
たとえば、図1に示すように、VLIW命令パケット101内の条件付きストア命令103は、シーケンサ114によって第1のロード/ストアユニット118にルーティングされ、ロードまたはストア命令104は、シーケンサ114によって第2のロード/ストア実行ユニット120にルーティングされる。2つのロード/ストア実行ユニット118および120が図1に示されるが、装置100は、追加のロード/ストアユニット、および算術論理ユニットなどの他のタイプの実行ユニット、または実行ユニット122などの他の代表的な実行ユニットを含み得ることを理解されたい。
【００２７】
第1のロード/ストアユニット118および第2のロード/ストアユニット120による実行の後、実行された命令の出力は、試験論理回路124に提供される。たとえば、第1のロード/ストアユニット118の出力は、試験論理回路124の第1の入力に提供され、第2のロード/ストアユニット120の出力は、試験論理回路124の第2の入力に提供される。加えて、図示された実行ユニット122などの他の実行ユニットの出力は、追加の入力として受け取られる実行ユニット出力128として汎用レジスタ(複数可)126に提供され得る。
【００２８】
試験論理回路124は、条件付きストア命令103に関連する条件が成功したかどうかを判定するための論理回路を含む。たとえば、試験論理回路124は、条件付きストア命令103が成功したか、または失敗したかどうかを判定するための組込み型論理回路を含み得る。加えて、条件付きストア命令103の成功または失敗の判定に基づいて、ロードまたはストア命令104の出力は、選択的に処分され得るか、または汎用レジスタ(複数可)126への出力として提供され得る。したがって、試験論理回路124は、VLIWパケット101内の複数の命令103および104のアトミックな実行を可能にすることができる。
【００２９】
命令103および104をアトミックに実行することは、両命令を完全に実行するか、または命令をまったく実行しないかのいずれかを含む可能性がある。たとえば、第1のメモリ動作(たとえば、条件付きストア命令103)と第2のメモリ動作(たとえばロードまたはストア命令104)の両方が成功するか、または第1および第2のメモリ動作の両方が失敗するかのいずれかである。加えて、命令をアトミックに実行することは、条件付きストア命令103に関連する成功または失敗を示す少なくとも1つの出力を生成するステップを含み得る。たとえば、試験論理回路124は、試験された条件付きストア命令103の成功または失敗を示す少なくとも1つの出力を生成することができる。特定の例示的な実施形態では、成功または失敗を示す少なくとも1つの出力は、単一ビットである。
【００３０】
条件付きストア命令103の実行が成功すると、試験論理回路124は第1のメモリ命令103と第2のメモリ命令104の両方を実行した結果を示す出力を汎用レジスタ(複数可)126に提供し得る。特定の例示的な実施形態では、マルチスレッド動作の書込みステージの間、汎用レジスタ(複数可)126に書き込まれる。動作の実行の結果は、汎用レジスタ(複数可)126内に記憶され、要求時にメモリ102に提供され得る。したがって、VLIW命令パケット101内の複数の命令は、単一のアトミック単位として、および単一のメモリトランザクションの一部としてアトミックに実行され得る(たとえば、複数の命令の実行は、単一の成功または単一の失敗に関連付けられ得る)。
【００３１】
装置100は、VLIW命令を実行するよう動作可能なVLIWプロセッサを含み得る。たとえば、VLIWプロセッサは、シーケンサ114、実行ユニット118〜122のうちの1つまたは複数、および場合によっては試験論理回路124などの、複数の実行要素を含み得る。加えて、VLIWプロセッサは、実行前に複数のVLIW命令パケットを記憶するように構成された命令キャッシュ110を含み得る。特定の実施形態では、VLIW命令のうちの少なくとも1つは、第1のロードまたはストア命令(たとえば、条件付きストア命令103)および第2のロードまたはストア命令(たとえば、ロード命令またはストア命令104)を含む。第1の命令および第2の命令は、単一のアトミック単位として実行されることが可能であり、第1および第2の命令のうちの少なくとも1つは、条件付きストア命令である。たとえば、図1を参照すると、第1の命令103は、条件付きストア命令である。第1の命令103は、条件付きストア命令として示されているが、第1の命令は、代わりに、ロードまたはストア命令(たとえば、ロード命令、ストア命令、ロードロック命令、または条件付きストア命令)である可能性がある一方、第2の命令は条件付きストア命令であることを理解されたい。
【００３２】
装置100は、VLIW命令を実行するための手段と、VLIW命令を実行するための手段に応答する、データを記憶するための手段とを提供する。たとえば、VLIW命令を実行するための手段は、説明されたVLIWプロセッサを含むことができ、データを記憶するための手段は、汎用レジスタ(複数可)126、メモリ102、およびデータキャッシュ112などの、説明されたメモリ要素のうちの1つまたは複数を含むことができる。
【００３３】
諒解されるように、図1の装置100は、命令に対応するメモリ位置をロックすることなく、条件付きストア命令103およびロードまたはストア命令104などの命令のアトミックな実行を可能にすることができる。具体的には、命令は、単一のアトミック単位として実行され得る。命令を単一のアトミック単位として実行することにより、資源(たとえば、データキャッシュ112によってキャッシュされ得る、メモリ102内の共有されるデータ構造)の複数の要求元(たとえば、マルチスレッドプロセッサのスレッド)は、ロックが解除されるか、またはアクセスが許可される1つまたは複数プロセッササイクルの間、待機することなく、資源を効率的に共有することができる。
【００３４】
図2を参照すると、装置100の第1のロード/ストアユニット118の特定の例示的な実施形態が示されている。ロード/ストアユニット118は、第1のスレッドまたはプロセッサに割り当てられた第1のアドレス予約レジスタ(ARR)204を含む。ロード/ストアユニット118は、追加のARRを含み得る。たとえば、第1のロード/ストアユニット118は、代表的な第2のARR232を含む。
【００３５】
特定のスレッドまたはプロセッサに割り当てられた各ARR(たとえば、第1のARR204)は、1つまたは複数の予約済みアドレスレジスタを含み得る。たとえば、第1のARR204は、代表的な第1の予約済みアドレスレジスタ208および第2の予約済みアドレスレジスタ220を含む。第1の予約済みアドレスレジスタ208は、第1の値212および第1の代表的な有効ビット216を含み得る。同様に、第2の予約済みアドレスレジスタ220は、第2の代表的な値224および第2の代表的な有効ビット228を含み得る。
【００３６】
同様に、第2のARR232は、第1の値240および第1の有効ビット244を含む第1の予約済みアドレスレジスタ236を含み得る。第2のARR232は、第2の値250および第2の有効ビット254を含む第2の予約済みアドレスレジスタ246をさらに含み得る。したがって、特定のスレッドまたはプロセッサに割り当てられたARRの各々は、複数の予約済みアドレスレジスタを含み得る。加えて、予約済みアドレスレジスタの各々は、データ値(たとえば、監視されるメモリ位置のアドレス)と、アドレスレジスタ内に記憶され、データ値に関連する有効ビットとを含み得る。
【００３７】
特定の実施形態では、装置は、ロード/ストアユニットを含むマルチスレッドプロセッサを含む。たとえば、図1に示されるように、装置100は、代表的なロード/ストアユニット118を有するマルチスレッドプロセッサを含む。ロード/ストアユニット118は、各スレッドに割り当てられた複数のアドレス予約レジスタを含む。たとえば、予約済みアドレスレジスタ208および220は、第1のARR204を介して第1の代表的なスレッドに割り当てられる。
【００３８】
各予約済みアドレスレジスタは、ロードロックされた条件付きストア動作の対に関連する予約済みアドレスを記憶するよう動作可能であり得る。たとえば、第1の予約済みアドレスレジスタ208内の値212は、(たとえば、装置100内の)VLIWプロセッサによって実行されるべきロードロックされた条件付きストア動作の対に関連する予約済みアドレスを表す可能性がある。具体的な例として、ロードロックされた条件付きストア動作の対の第1の命令は、条件付き命令である可能性があり、ロードロックされた条件付きストア動作の対の第2の命令は、ロードロックされた命令である可能性がある。動作の対の命令の各々は、第1の命令に関連する値が要求元(たとえば、スレッドまたはプロセッサ)によって予約されるようにロードロックされ得る。
【００３９】
ロードロック動作を実施するために、予約済みアドレスレジスタ208は、値212内に含まれるアドレスによって識別される記憶されたデータ値(たとえば、メモリアドレス)を変化させる前に要求元(たとえば、プロセッサ)によってチェックされ得る第1の有効ビット216を含む。有効ビット216は、値212が第1の予約済みアドレスレジスタ208に設定されてから(たとえば、値212に対応するメモリ位置が要求元によって予約された際)、値212によって識別されるアドレスが書込み動作に使用されてきたか否かを示し得る。
【００４０】
別の特定の実施形態では、プロセッサは、複数のプロセッサアーキテクチャに含まれ、複数のプロセッサの各々は、複数のアドレス予約レジスタを含む。本実施形態では、ARR204、232の各々は、マルチプロセッサアーキテクチャの別個で独立したプロセッサに割り当てられる。そうでない場合、説明するように、ARR204、232の各々は、マルチスレッドアーキテクチャの特定のスレッドに割り当てられ得る。
【００４１】
ARRのチェックは、ロードロックされた条件付きストア動作の対を完了する前に実行され得る。チェックプロセスは、(たとえば、有効ビットの値を判定することによって)ARRのうちの1つに対応するデータが変化したかどうかを判定するステップを含み得る。加えて、ロードロックされた条件付きストア動作の対は、ARRのうちの1つだけに対応するデータが変化したと判定することに応答して失敗となる可能性がある(たとえば、ARRのうちの1つに対応するデータが変化したと判定することは、ロードロックされた条件付きストア動作の対が失敗したと判定するのに十分である可能性がある)。
【００４２】
特定の実施形態では、VLIWプロセッサの少なくとも1つのメモリ位置は、実行成功の指示に応答して、条件付きストア命令に対応するデータにより更新される。VLIWプロセッサの少なくとも1つのメモリ位置は、実行失敗の指示に応答して、条件付きストア命令に対応するデータによっては更新されない。たとえば、試験論理回路124によって出力されたデータを受け入れる書込みステージは、条件付きストア命令の実行に関連する結果をレジスタファイルに選択的に書き込むことができる。実行成功を示すと、汎用レジスタ(複数可)126内の少なくとも1つのメモリ位置を更新することができるが、故障を示すと、汎用レジスタ(複数可)126内のメモリ位置を更新することができない。したがって、試験論理回路124は、条件付きストア命令103の試験論理評価の結果に応じて様々な命令を実行した結果を選択的に書き込むことができる。したがって、試験論理回路124は、汎用レジスタ(複数可)126とともに、単一のVLIW命令パケットによって発された複数のメモリ動作をアトミックに実行するために使用することができ、単一のVLIW命令パケット内の複数のメモリ動作のアトミックな実行は、VLIWマルチスレッドプロセッサアーキテクチャまたはマルチプロセッサアーキテクチャの実行単位のコンテキスト内で行われ得る。
【００４３】
図2のロード/ストアユニット118により、資源の各要求元は、別の要求元が資源を変更したかどうかを判定することができる可能性があることが諒解されよう。具体的には、予約済みアドレスおよび対応する有効ビットは、各要求元に割り当てられたARRに記憶され得る。(たとえば、ARRの値としてメモリ位置のアドレスを記憶することによって)メモリ位置を予約する要求元は、有効ビットを参照することにより別の要求元がメモリ位置を変更した(たとえば、上書きした)か否かを判定することができる。たとえば、メモリ位置が変更された場合、メモリ位置を予約した要求元は、予約済みのメモリ位置が更新済みデータを含み、前のデータがこれ以上有効でないと判定する可能性がある。具体的には、メモリ位置が変化した場合、動作の実行は、失敗したと見なされる可能性があり、後に再試行される可能性がある。したがって、複数の要求元は、資源へのアクセスを制限することなく(たとえば、資源をロックすることなく)、資源へのアクセスを共有することができる。
【００４４】
図3を参照すると、マルチスレッドプロセッサまたはマルチプロセッサアーキテクチャを含む装置300の特定の例示的な実施形態が示されている。装置300は、1つまたは複数の超長命令語(VLIW)プロセッサ、先入れ先出し(FIFO)バッファ370、書込みインデックス360、および少なくとも1つのロード/ストアユニット118を含む。装置300は、図示された第1のロード/ストアユニット118および第2のロード/ストアユニット120などの複数のロード/ストアユニットを含み得る。3つ以上のロード/ストアユニットを装置300内に組み込むことができることを理解されたい。加えて、FIFOバッファ370および書込みインデックス360は、複数の要求元(たとえばマルチスレッドプロセッサのスレッドまたはマルチプロセッサアーキテクチャのプロセッサ)の間で共有されるメモリ資源(たとえば、図1の汎用レジスタ(複数可)126、データキャッシュ112、およびメモリ102のうちの1つまたは複数)に対応する可能性がある。
【００４５】
FIFOバッファ370は、第1のデータエントリ372および第2のデータエントリ374などの複数のデータエントリを含む。書込みインデックス360は、複数のデータエントリの各々を選択的に指すよう動作可能である。たとえば、書込みインデックス値364(図示)は、最初、第2のデータエントリ374を指す(たとえば、関連するアドレスを記憶する)が、第3のデータエントリ376または第4のデータエントリ378などの、FIFOバッファ370の他のデータエントリを選択的に指す可能性がある。特定の例示的な実施形態では、書込みインデックス値364は、FIFOバッファ370の次の利用可能なデータエントリを示す。
【００４６】
図1のロード/ストアユニット118に対応するロード/ストアユニット118は、ロードロックされた動作の対を単一のアトミック単位として実行するよう動作可能であり、条件付きストア動作の対を単一のアトミック単位として実行するようさらに動作可能である。たとえば、ロードロックされた動作の代表的な第1の対381は、第1のスレッドまたはプロセッサ301の実行可能プログラム303内の、ロードロックされた書込みインデックス命令およびロードロックされたデータ命令(すなわち、図3に示されるLL(WriteIndex)命令およびLL(data)命令)を含むものとして示されている。さらなる例として、実行可能プログラム303の条件付きデータストア命令および条件付き書込みインデックスストア命令(すなわち、図3に示されるSC(data)命令およびSC(WriteIndex+1)命令)は、条件付きストア動作の代表的な第1の対382を形成する。
【００４７】
動作時、第1のスレッドまたはプロセッサ301は、ロードロックされた動作の第1の対381を含む実行可能プログラム303を受け取る可能性がある。たとえば、第1のスレッドまたはプロセッサ301は、図1の装置100のメモリ102から実行可能プログラム303を受け取る可能性がある。第1のスレッドまたはプロセッサ301は、応答して、書込みインデックス360をロードロックし、次の利用可能なデータエントリ(たとえば、第2のデータエントリ374)をロードロックすることができる。すなわち、第1のスレッドまたはプロセッサ301に対応し、第1のスレッドまたはプロセッサ301に応答するメモリアドレスを予約することができる第1のARR204および第3のARR304は、第2のデータエントリ374に対応するアドレス、および書込みインデックス360に対応するアドレスを予約することができる(図3に点線で示される)。
【００４８】
ロードロックされた動作の第1の対に関連する有効ビットは、次の利用可能なデータエントリを予約する第1のスレッドまたはプロセッサ301に応答して生成され得る。たとえば、有効ビット216および有効ビット328が、最初は、設定され得る。特定の例示的な実施形態では、図3に示されるように、有効ビットは、最初は、図示するように「1」に設定される。別の特定の例示的な実施形態では、有効ビットは、最初は、「0」に設定される。したがって、図3の特定の例示的な実施形態では、第1のスレッドまたはプロセッサ301は、第1のARR204および第3のARR304を介して次の利用可能なデータエントリを予約することができることが諒解されよう。
【００４９】
特定の例示的な実施形態では、第2のスレッドまたはプロセッサ302は、ロードロックされた動作の第2の対383を含む実行可能プログラム305を受け取ることが可能である。第2のスレッドまたはプロセッサ302は、応答して、書込みインデックス360をロードロックし、次の利用可能なデータエントリ(たとえば、第2のデータエントリ374)をロードロックすることができる。第2のスレッドまたはプロセッサ302に対応し、第2のスレッドまたはプロセッサ302に応答するメモリアドレスを予約することができる第2のARR232および第4のARR332は、第2のデータエントリ374に対応するアドレス、および書込みインデックス360に対応するアドレスを予約することができる。
【００５０】
ロードロックされた動作の第2の対に関連する有効ビットは、(依然として第2のデータエントリ374である可能性がある)次の利用可能なデータエントリを予約する第2のスレッドまたはプロセッサ302に応答して生成され得る。たとえば、有効ビット244および有効ビット354が、最初は、「1」に設定され得る。したがって、第1のスレッドまたはプロセッサ301および第2のスレッドまたはプロセッサ302は各々、FIFOバッファ370の次の利用可能なデータエントリを予約したことが諒解されよう。以下でさらに説明されるように、同じ資源(たとえば、FIFOバッファ370および書込みインデックス360)にアクセスしようとする複数の要求元(たとえば、第1のスレッドまたはプロセッサ301および第2のスレッドまたはプロセッサ302)によってもたらされる潜在的なコンフリクトを回避することができる。
【００５１】
第1のスレッドまたはプロセッサ301は、ロードロックされた動作の第1の対381を実行した後、条件付きストア動作の第1の対382を実行しようとする可能性がある。第1のスレッドまたはプロセッサ301は、条件付きストア動作の第1の対を正常に完了することができるかどうかを判定するために有効ビット216、328を参照することができる。たとえば、ロードロックされた動作の第1の対381が実行されてから、有効ビット216、328のいずれかが値を変更した場合、条件付きストア動作の第1の対は、失敗の可能性があり、応答して、ストア動作の第1の対382の失敗を示す出力が生成され得る。
【００５２】
ロードロックされた動作の第1の対381が実行されてから、有効ビット216、328のどちらも変化しなかった場合、条件付きストア動作の第1の対382は、正常にコミットされる。たとえば、第2のデータエントリ374は、(たとえば図3に示されるData2と書かれた)データで占有される可能性があり、書込みインデックス値364は、FIFOバッファ370の次の利用可能なデータエントリを指すために(たとえば、図3の点線で示される第3のデータエントリ376に)増加する可能性がある。条件付きストア命令の第1の対382の成功を示す出力が生成され得る。特定の例示的な実施形態では、出力は、第1のスレッドまたはプロセッサ301が条件付きストア命令の第1の対382の成功または失敗を判定することができるように第1のスレッドまたはプロセッサ301に提供される単一ビットである。
【００５３】
第2のデータエントリ374を占有し、書込みインデックス値364を更新することに応答して、要求元(すなわち、第1のスレッドまたはプロセッサ301)が第2のデータエントリ374に書き込み、書込みインデックス値364を更新したことを反映するために、有効ビット244、354が変更される可能性がある。たとえば、第1のスレッドまたはプロセッサ301は、ロードロックされた動作の第1の対381に応答して設定されたいずれかの有効ビットをクリアする(たとえば、「0」にリセットする)よう動作可能な回路を含み得る。したがって、有効ビット244、354は、図3に示されるように、「0」値に変更され得る。たとえば、第1のスレッドまたはプロセッサ301は、第2のデータエントリ374に書き込み、FIFOバッファ370の新規の次の利用可能なデータエントリを指すために書込みインデックス値364を更新したことを反映するために有効ビット244、354を「0」値に変更する可能性がある。
【００５４】
装置300の例示的な動作を続けると、第2のスレッドまたはプロセッサ302は、ロードロックされた動作の第2の対383を実行し、第1のスレッドまたはプロセッサ301が条件付きストア動作の第1の対382を実行した後、条件付きストア動作の第2の対384を実行しようとする可能性がある。第2のスレッドまたはプロセッサ302は、条件付きストア動作の第2の対384を正常に完了することができるかどうかを判定するために有効ビット244、354を参照することができる。説明された例示的な動作を参照すると、第2のスレッドまたはプロセッサ302は、ロードロックされた動作の第2の対383を完了してから、有効ビット244、354のうちの1つまたは複数が変化するので、条件付きストア動作の第2の対384が失敗したと判定してよい。
【００５５】
第2のスレッドまたはプロセッサ302は、条件付きストア動作の第2の対384の失敗に応答して、後に、実行可能プログラム305の実行を再試行することができる。たとえば、第2のスレッドまたはプロセッサ302は、後に、ロードロックされた動作の第2の対383および条件付きストア動作の第2の対384を再実行する可能性がある。実行可能プログラム305の後続の実行により、第2のスレッドまたはプロセッサ302は、第1のスレッドまたはプロセッサ301によってFIFOバッファ370に書き込まれたデータ(すなわち、第2のデータエントリ374に書き込まれたData2)を上書きすることなく、FIFOバッファ370にデータを書き込むことができる。
【００５６】
諒解されるように、図3の装置300は、複数の要求元(たとえば、第1のスレッドまたはプロセッサ301および第2のスレッドまたはプロセッサ302)による資源(たとえば、FIFOバッファ370および書込みインデックス360)の共有を容易にすることができる。資源は、別の資源がアクセスされたか否か、または資源を変更したか否かを各要求元が判定することができるので、資源をロックすることなく共有され得る。したがって、装置300は、資源にアクセスするために待機する要求元の事例(たとえば、ボトルネック)を低減することができる。図3の装置300は、(たとえば、キャッシュ、バス、またはメモリサポートなどの外部回路なしに)コアチップ内でサポートされるトランザクションメモリを実現することができることをさらに諒解されたい。
【００５７】
図4を参照すると、コンピュータで実施される方法400の特定の実施形態が示されている。コンピュータで実施される方法400は、404においてロードロックされた命令の対を含む第1のVLIWパケットを受け取るステップと、408においてアドレス予約レジスタの対を使用してロードロックされた命令の対を実行するステップとを含む。たとえば、図1を参照すると、第1のVLIWパケット101は、実行されるべきロードロックされた命令の対を含み得る。さらなる例として、ロードロックされた命令の対は、ロード/ストアユニット118および120内のアドレス予約レジスタ204および304の対を使用して実行され得る。必要とされないが、ロードロックされた命令の対は、自動的にリンクされ得る(たとえば、パラレルまたは実質的にパラレルに実行される)。
【００５８】
方法400は、自動的に実行されるべき命令の第2の対を含む第2のVLIWパケットを受け取るステップをさらに含み、命令の第2の対のうちの少なくとも1つは、412において、条件付きストア命令である。一例として、条件付きストア命令の第2の対は、303および305で示されるスレッドまたはプロセッサのうちの1つによって実行されるSC(Data)およびSC(WriteIndex+1)命令である可能性がある。
【００５９】
方法400は、416において、アドレス予約レジスタが有効であるかどうかを判定するステップをさらに含む。たとえば、少なくとも1つの条件付きストア命令に対応するアドレス予約レジスタ内の状態ビットは、図1の装置100の試験論理モジュール124によって評価され得る。
【００６０】
アドレス予約レジスタが有効でないと判定される場合、422において、条件付きストア命令の実行失敗の指示を提供することができ、(たとえば、実行ステップ408に戻ることによって)ロードロックされた命令の対の実行が再試行され得る。たとえば、命令の第2の対のいずれかの命令が失敗したと判定された場合、命令の第2の対の命令の両方が、失敗したと見なされる(たとえば、命令の第2の対のどちらの命令もコミットされない)。
【００６１】
アドレス予約レジスタが有効であると判定される場合、418において、条件付きストア命令の実行成功の指示を提供することができ、420に示されるように、少なくとも1つのメモリ位置は、条件付きストア命令に対応するデータにより更新され得る。たとえば、試験論理回路124は、動作が成功したと判定することができ、条件付きストア動作の出力を図1の汎用レジスタ(複数可)126に書き込むことができる。さらなる例として、条件付きストア命令を実行した結果は、図3に示されるように、FIFOバッファ370に書き込まれ得る。特定の実施形態によれば、命令の第2の対は、第2の条件付きストア命令をさらに含み、少なくとも1つのメモリ位置を更新することは、第2の条件付きストア命令に対応するメモリ位置を更新する(たとえば、条件付きストア命令の両方が、条件付きストア命令の両方の成功を判定することに応答してコミットされる)ステップをさらに含む。
【００６２】
コンピュータで実施される方法400は、トランザクションメモリ動作を含むプログラムを実行するステップを含む。トランザクションメモリ動作は、自動的に実行されるべき命令を含み得る(たとえば、命令は、単一のアトミック単位として成功するか、または失敗するかのいずれかである)。たとえば、アトミックに実行されるトランザクションメモリ動作は、図3を参照しながら本明細書で説明したように、ロード・モディファイ・ストアシーケンスを含み得る。すなわち、ロード・モディファイ・ストアシーケンスが自動的に実行される場合、ロード・モディファイ・ストアシーケンス全体が失敗するか、またはロード・モディファイ・ストアシーケンス全体が成功するかのいずれかである。ロード・モディファイ・ストアシーケンス全体は、ロード・モディファイ・ストアシーケンス全体の失敗に応答して再試行され得る。
【００６３】
トランザクションメモリ動作は、自動的にリンクされる(たとえば、パラレルまたは実質的にパラレルに実行される)動作を含み得る。自動的にリンクされる第1および第2のメモリ動作は、ともにパケット化されるか、または共有のパケット内でグルーピングされ得る。自動的にリンクされる第1および第2のメモリ動作は、ロードロックされた動作の対または条件付きストア動作の対である可能性がある。条件付きストア動作の自動的にリンクされた対の一例は、図3の実行可能プログラム303の条件付きストア動作の対382によって示されている。
【００６４】
特定の実施形態では第1のロード・モディファイ・ストアシーケンスおよび第2のロード・モディファイ・ストアシーケンスが自動的に実行される(たとえば、シーケンスのいずれかが失敗した場合、両シーケンスが失敗したと見なされる)。自動的に実行されるロード・モディファイ・ストア動作の対の一例は、図3の実行可能プログラム303(すなわち、FIFOバッファ370に対応するロード・モディファイ・ストアシーケンス、および書込みインデックス360に対応するロード・モディファイ・ストアシーケンス)の実行によって示されている。
【００６５】
第1および第2のメモリ動作は、単一の超長命令語(VLIW)パケットによってVLIWプロセッサにおいて自動的に実行され得る。たとえば、装置100内のプロセッサは、本明細書で説明したように、図1のVLIW命令パケット101内の条件付きストア命令103およびロードまたはストア命令104を実行することができる。VLIWプロセッサは、第1および第2のメモリ動作に対応する第1および第2のメモリ位置が自動的に更新されるべきである(たとえば、図3のFIFOバッファ370のデータエントリおよび書込みインデックス値364が自動的に更新されるべきである)と判定するように構成され得る。
【００６６】
特定の例示的な実施形態では、第1のメモリ動作は、VLIWプロセッサの第1のメモリ位置でデータを読み込むことを含み、第2のメモリ動作は、VLIWプロセッサの第2メモリ位置でデータを読み込むことを含む。さらなる一例では、FIFOバッファ内のデータ要素を読み込むことができ、書込みインデックスの書込みインデックス値を読み込むことができる。別の例示的な実施形態では、第1のメモリ動作は、VLIWプロセッサの第1のメモリ位置に対応するストア動作を含み、第2のメモリ動作は、VLIWプロセッサの第2メモリ位置に対応するストア動作を含む。特定の例示的な実施形態では、第1のメモリ位置は、FIFOバッファ370内の位置であり、第2のメモリ位置は、図3の書込みインデックス値364である。特定の例示的な実施形態では、ストア動作の1つまたは複数は、条件付きストア動作である。
【００６７】
特定の例示的な実施形態では、第1のメモリ位置における動作は、条件付きストア動作であり、第2のメモリ位置における動作は、条件なしストア命令である。したがって、条件付きストア命令と条件なしストア命令の両方は、実行することができ、メモリを更新することができる。
【００６８】
図5を参照すると、図1の装置100の第1のロード/ストアユニット118および第2のロード/ストアユニット120を含むプロセッサ510を含む電子デバイスの特定の例示的な実施形態のブロック図が示され、全体的に500と称される。電子デバイス500は、図1〜図3を参照しながら説明した要素を含むことができ、図4の方法またはそれらの任意の組合せに従って動作することができる。
【００６９】
第1のロード/ストアユニット118は、第1のアドレス予約レジスタ(ARR)204および第2のARR232を含み得る。第2のロード/ストアユニット120は、第3のARR304および第4のARR332を含み得る。3つ以上のロード/ストアユニットを提供することができる。
【００７０】
プロセッサ510は、メモリ532に結合され得る。メモリ532は、プロセッサ510によって実行されるべき命令533を含み得る。たとえば、命令533は、図1の条件付きストア命令103およびロードまたはストア命令104を含むVLIW命令パケット101を含み得る。
【００７１】
図5は、プロセッサ510およびディスプレイ528に結合されたディスプレイコントローラ526も示している。コーダ/デコーダ(コーデック)534も、プロセッサ510に結合され得る。スピーカ536およびマイクロフォン538がコーデック534に結合され得る。
【００７２】
図5は、ワイヤレスコントローラ540が、プロセッサ510およびワイヤレスアンテナ542に結合され得ることも示している。特定の実施形態では、プロセッサ510、ディスプレイコントローラ526、メモリ532、コーデック534、およびワイヤレスコントローラ540は、システムインパッケージデバイスすなわちシステムオンチップデバイス522に含まれる。特定の実施形態では、入力デバイス530および電源544が、システムオンチップデバイス522に結合される。さらに、特定の実施形態では、図5に示すように、ディスプレイ528、入力デバイス530、スピーカ536、マイクロフォン538、ワイヤレスアンテナ542、および電源544は、システムオンチップデバイス522の外部にある。しかしながら、ディスプレイ528、入力デバイス530、スピーカ536、マイクロフォン538、ワイヤレスアンテナ542、および電源544の各々は、インターフェースまたはコントローラなどの、システムオンチップデバイス522の構成要素に結合され得る。
【００７３】
さらに、本明細書で開示された実施形態に関して説明された様々な例示的な論理ブロック、構成、モジュール、回路、およびアルゴリズムのステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得ることを、当業者は諒解されよう。上記に、様々な例示的な構成要素、ブロック、構成、モジュール、回路、およびステップについて、それらの機能に関して概略的に説明した。そのような機能をハードウェアとして実装するか、ソフトウェアとして実装するかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本開示の範囲からの逸脱を生じるものと解釈すべきではない。
【００７４】
本明細書で開示した実施形態に関連して説明した方法またはアルゴリズムのステップは、直接ハードウェアで具体化されるか、プロセッサによって実行されるソフトウェアモジュールで具体化されるか、またはその2つの組合せで具体化され得る。ソフトウェアモジュールは、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、プログラマブル読取り専用メモリ(PROM)、消去可能プログラマブル読取り専用メモリ(EPROM)、電気消去可能プログラマブル読取り専用メモリ(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、コンパクトディスク読取り専用メモリ(CD-ROM)、または当技術分野で知られている任意の他の形態の記憶媒体中に存在し得る。例示的な非一時的(たとえば、有形)記憶媒体は、プロセッサが記憶媒体から情報を読み込み、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体はプロセッサと一体であり得る。プロセッサおよび記憶媒体は、特定用途向け集積回路(ASIC)に存在し得る。ASICは、コンピューティングデバイスまたはユーザ端末内に存在し得る。代替として、プロセッサおよび記憶媒体は、コンピューティングデバイスまたはユーザ端末の中に、個別の構成要素として存在し得る。
【００７５】
開示された実施形態の上記の説明は、当業者が、開示された実施形態を作成または使用することができるように与えられる。これらの実施形態に対する様々な修正が、当業者には容易に明らかとなり、本明細書で定義される原理は、本開示の範囲から逸脱することなく、他の実施形態に適用され得る。したがって、本開示は、本明細書に示す実施形態に限定されることは意図されず、以下の特許請求の範囲によって定義されるような、原理および新規の特徴と矛盾しない、可能な最大の範囲を認められるべきである。
【符号の説明】
【００７６】
100  装置
101  VLIW命令パケット
102  メモリ
103  条件付きストア命令
104  ロードまたはストア命令
108  バスインターフェース
110  命令キャッシュ
111  入力
112  データキャッシュ
114  シーケンサ
116  汎用割込み
118  ロード/ストアユニット
120  ロード/ストアユニット
122  実行ユニット
124  試験論理回路
126  汎用レジスタ
128  実行ユニット出力
132  スーパーバイザ制御レジスタ
134  グローバル制御レジスタ
204  スレッド/プロセッサ1アドレス予約レジスタ(ARR)
208  予約済みアドレスレジスタ
212  値(データ)
216  有効ビット
220  予約済みアドレスレジスタ
224  値(データ)
228  有効ビット
232  スレッド/プロセッサnアドレス予約レジスタ(ARR)
236  予約済みアドレスレジスタ
240  値(データ)
244  有効ビット
246  予約済みアドレスレジスタ
250  値(データ)
254  有効ビット
300  装置
301  スレッド/プロセッサ1
302  スレッド/プロセッサ2
303  実行可能プログラム
305  実行可能プログラム
304  スレッド/プロセッサ1 ARR
332  スレッド/プロセッサ2 ARR
360  書込みインデックス
364  書込みインデックス値
370  FIFOバッファ
372  データ1
374  データ2
400  コンピュータで実施される方法
500  電子デバイス
510  プロセッサ
522  システムオンチップデバイス
526  ディスプレイコントローラ
528  ディスプレイ
530  入力デバイス
532  メモリ
533  命令
534  コーデック
536  スピーカ
538  マイクロフォン
540  ワイヤレスコントローラ
542  ワイヤレスアンテナ
544  電源
【図１】
2014530429.tif 000003
【図２】
2014530429.tif 000004
【図３】
2014530429.tif 000005
【図４】
2014530429.tif 000006
【図５】
2014530429.tif 000007
【手続補正書】
【提出日】平成25年12月3日(2013.12.3)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
超長命令語(VLIW)命令を実行するよう動作可能なVLIWプロセッサを含み、特定のVLIW命令は、
第1のメモリ位置をアドレス指定する条件付きストア命令と、
第2のメモリ位置をアドレス指定するストア命令と
を含み、
前記条件付きストア命令および前記ストア命令はアトミックに実行される、装置。
【請求項２】
前記条件付きストア命令は、前記条件付きストア命令に対応するアドレス予約レジスタに記憶された有効ビットが有効であると判定される場合のみコミットする、請求項1に記載の装置。
【請求項３】
前記アドレス予約レジスタは、前記第1のメモリ位置に関連する予約済みアドレスを記憶するように構成される、請求項2に記載の装置。
【請求項４】
前記条件付きストア命令の実行は、実行成功の指示または実行失敗の指示のうちの1つを提供する、請求項1に記載の装置。
【請求項５】
前記VLIWプロセッサの少なくとも1つのメモリ位置は、実行成功の前記指示に応答して、前記条件付きストア命令に対応するデータにより更新され、前記VLIWプロセッサの前記少なくとも1つのメモリ位置は、実行失敗の前記指示に応答して、前記条件付きストア命令に対応する前記データによっては更新されない、請求項4に記載の装置。
【請求項６】
前記VLIWプロセッサの前記少なくとも1つのメモリ位置は、先入れ先出し(FIFO)バッファのエントリと、前記FIFOバッファの前記エントリに対応する書込みインデックスとを含む、請求項5に記載の装置。
【請求項７】
前記VLIWプロセッサは、実行失敗の指示に応答して特定のVLIW命令の実行を再試行するように構成される、請求項1に記載の装置。
【請求項８】
前記条件付きストア命令および前記ストア命令を単一のアトミック単位としてアトミックに実行することは、前記条件付きストア命令と前記ストア命令の両方が成功したか、または前記条件付きストア命令と前記ストア命令の両方が失敗したかのいずれかを判定するステップを含む、請求項1に記載の装置。
【請求項９】
前記ストア命令は、前記特定のVLIW命令を含むVLIWパケット内の前記条件付きストア命令に先行する、請求項1に記載の装置。
【請求項１０】
前記ストア命令は、第2の条件付きストア命令である、請求項1に記載の装置。
【請求項１１】
前記ストア命令は、前記条件付きストア命令の実行が失敗する場合は実行されない、請求項1に記載の装置。
【請求項１２】
トランザクションメモリ動作を含むプログラムを実行するステップを含むコンピュータで実施される方法であって、前記トランザクションメモリ動作は、第2のメモリ動作とともにアトミックに実行される第1のメモリ動作に対応し、前記第1および第2のメモリ動作は、単一の超長命令語(VLIW)パケットによってVLIWプロセッサにおいて実行され、前記第1のメモリ動作は、条件付きストア命令を含み、前記第2のメモリ動作は、ストア命令を含み、前記条件付きストア命令は、第1のメモリ位置をアドレス指定し、前記ストア命令は、第2のメモリ位置をアドレス指定する、コンピュータで実施される方法。
【請求項１３】
前記第1のメモリ動作は、前記第1のメモリ位置でデータを読み込むステップを含み、前記第2のメモリ動作は、前記第2のメモリ位置でデータを読み込むステップを含む、請求項12に記載のコンピュータで実施される方法。
【請求項１４】
前記第1のメモリ位置で前記データを読み込むステップ、および前記第2のメモリ位置で前記データを読み込むステップは、ロードロックされた命令の対を介して実行される、請求項12に記載のコンピュータで実施される方法。
【請求項１５】
前記プログラムを実行することは、前記第1のメモリ動作が成功するかどうかを判定するステップをさらに含む、請求項12に記載のコンピュータで実施される方法。
【請求項１６】
前記プログラムを実行することは、前記第1のメモリ位置および前記第2のメモリ位置をアトミックに更新すべきと判定するステップをさらに含む、請求項12に記載のコンピュータで実施される方法。
【請求項１７】
各々が複数のアドレス予約レジスタを含む複数のロード/ストアユニットを含むマルチスレッドプロセッサ含み、
前記複数のアドレス予約レジスタのうちの第1のアドレス予約レジスタは、アトミックに実行されるロード動作の対のうちの第1のアトミックに実行されるロード動作と、アトミックに実行されるストア動作の対のうちの第1のアトミックに実行されるストア動作とに関連する第1の予約済みアドレスを記憶するように構成され、
前記複数のアドレス予約レジスタのうちの第2のアドレス予約レジスタは、前記アトミックに実行されるロード動作の対のうちの第2のアトミックに実行されるロード動作と、前記アトミックに実行されるストア動作の対のうちの第2のアトミックに実行されるストア動作とに関連する第2の予約済みアドレスを記憶するように構成され、
前記アトミックに実行されるストア動作の対のうちの少なくとも1つは、条件付きストア動作である、装置。
【請求項１８】
前記マルチスレッドプロセッサは、マルチプロセッサアーキテクチャ内の複数のプロセッサのうちの1つであり、前記プロセッサの各々は、複数のアドレス予約レジスタを含む、請求項17に記載の装置。
【請求項１９】
前記マルチスレッドプロセッサは、前記アトミックに実行されるロード動作の対および前記アトミックに実行されるストア動作の対を完了する前に前記第1のアドレス予約レジスタおよび前記第2のアドレス予約レジスタをチェックするように構成され、前記第1のアドレス予約レジスタおよび前記第2のアドレス予約レジスタのうちの少なくとも1つに対応するデータが変化したかどうかを判定するように構成される、請求項17に記載の装置。
【請求項２０】
前記アトミックに実行されるロード動作の対および前記アトミックに実行されるストア動作の対は、前記第1のアドレス予約レジスタおよび前記第2のアドレス予約レジスタのうちの少なくとも1つに対応するデータが変化したと判定することに応答して失敗となる、請求項19に記載の装置。
【請求項２１】
超長命令語(VLIW)命令を実行するための手段であって、特定のVLIW命令は、
第1のメモリ位置をアドレス指定する条件付きストア命令、および
第2のメモリ位置をアドレス指定するロードまたはストア命令
を含み、
前記条件付きストア命令および前記ロードまたはストア命令はアトミックに実行される、手段と、
VLIW命令を実行するための前記手段に応答する、データを記憶するための手段と
を含む、装置。
【請求項２２】
VLIW命令を実行するための前記手段は、VLIWプロセッサを含む、請求項21に記載の装置。
【請求項２３】
前記VLIWプロセッサは、マルチスレッドVLIWプロセッサであり、前記マルチスレッドVLIWプロセッサの複数のスレッドの各々は、複数のアドレス予約レジスタに割り当てられる、請求項22に記載の装置。
【請求項２４】
データを記憶するための前記手段は、先入れ先出し(FIFO)バッファおよび書込みインデックスを含む、請求項21に記載の装置。
【請求項２５】
前記条件付きストア命令および前記ロードまたはストア命令をアトミックに実行することは、前記条件付きストア命令に関連する成功または失敗を示す少なくとも1つの出力を生成することを含む、請求項21に記載の装置。
【請求項２６】
VLIW命令を実行するための前記手段は、成功を示す前記少なくとも1つの出力に応答してデータを記憶するための前記手段においてデータを更新するように構成される、請求項25に記載の装置。
【請求項２７】
トランザクションメモリ動作を含むプログラムを実行するためにコンピュータによって実行可能な命令を記憶するコンピュータ可読有形媒体であって、前記トランザクションメモリ動作は、第2のメモリ動作とともにアトミックに実行されるべき第1のメモリ動作に対応し、前記第1および第2のメモリ動作は、単一の超長命令語(VLIW)パケットによってVLIWプロセッサにおいて実行されるように構成され、前記第1のメモリ動作は、条件付きストア命令を含み、前記第2のメモリ動作は、ストア命令を含み、前記条件付きストア命令は、第1のメモリ位置をアドレス指定し、前記ストア命令は、第2のメモリ位置をアドレス指定する、コンピュータ可読有形媒体。
【請求項２８】
前記第1のメモリ動作および前記第2のメモリ動作は、それぞれの第1および第2のロード/ストアユニットを介して実質的にパラレルに実行される、請求項27に記載のコンピュータ可読有形媒体。
【請求項２９】
前記ストア命令は、第2の条件付きストア命令である、請求項28に記載のコンピュータ可読有形媒体。
【請求項３０】
超長命令語(VLIW)プロセッサを含み、
前記超長命令語(VLIW)プロセッサは、
複数のデータエントリを含むバッファと、
前記複数のデータエントリの各々を選択的に指すよう動作可能な書込みインデックスと、
ロードロックされた動作の対を単一のアトミック単位として実行するよう動作可能であり、条件付きストア動作の対を別の単一のアトミック単位として実行するようさらに動作可能であるロード/ストアユニットと
を含み、
前記条件付きストア動作の対のうちの第1の条件付きストア動作は、前記複数のデータエントリのうちのデータエントリに対応する第1のメモリ位置をアドレス指定し、
前記条件付きストア動作の対のうちの第2の条件付きストア動作は、前記書込みインデックスの位置に対応する第2のメモリ位置をアドレス指定する、装置。
【請求項３１】
前記ロードロックされた動作の対を実行することは、前記データエントリのうちの1つおよび前記書込みインデックスに第1の値を読み込むことを含み、前記条件付きストア動作の対を実行することは、前記1つのデータエントリおよび前記書込みインデックスに第2の値を記憶することを含む、請求項30に記載の装置。
【請求項３２】
前記第1の値が、前記ロードロックされた動作の対を実行することに続いて変更されたかどうかを判定するための論理回路をさらに含む、請求項31に記載の装置。
【請求項３３】
複数のアドレス予約レジスタをさらに含み、前記アドレス予約レジスタは、各々が前記ロードロックされた動作の対に関連する予約済みアドレスと有効ビットとを記憶するように構成される、請求項32に記載の装置。
【請求項３４】
前記VLIWプロセッサは、前記ロードロックされた動作の対および前記条件付きストア動作の対を介してロード・モディファイ・ライト動作の対をアトミックに実行するよう動作可能である、請求項30に記載の装置。
【国際調査報告】
2014530429.tif 000008
2014530429.tif 000009