(57)【要約】簡潔に述べると、本発明の実施例に従うと、マルチスレッドされたコンピュータ処理を提供する装置および方法が提供される。本装置は、マルチバンク・キャッシュ・メモリ、命令プリデコード・ユニット、乗加算ユニット、コプロセッサおよび／または変換索引バッファ（ＴＬＢ）を共有するために適合した第１および第２演算処理ユニットを含む。本方法は、少なくとも２つのトランザクション開始者間でマルチバンク・キャッシュ・メモリの共有使用を含む。
2006522385.tif 000002
【特許請求の範囲】
【請求項１】
第１演算処理ユニットと、
第２演算処理ユニットと、
前記第１および第２演算処理ユニットに結合された第１キャッシュ・メモリと、
前記第１および第２演算処理ユニットに結合された第２キャッシュ・メモリと、
を含むことを特徴とする装置。
【請求項２】
前記第１演算処理ユニットは１またはそれ以上のソフトウェア・スレッドを処理するために適合し、前記第２演算処理ユニットは１またはそれ以上のソフトウェア・スレッドを処理するために適合していることを特徴とする請求項１記載の装置。
【請求項３】
前記第１演算処理ユニットは、
命令キャッシュと、
レジスタ・ファイルと、
算術論理演算ユニット（ＡＬＵ）と、
変換索引バッファ（ＴＬＢ）と、
を含むことを特徴とする請求項１記載の装置。
【請求項４】
前記変換索引バッファは、１００未満のエントリを格納するために適合していることを特徴とする請求項３記載の装置。
【請求項５】
前記第１および第２演算処理ユニットに結合されたコプロセッサをさらに含むことを特徴とする請求項１記載の装置。
【請求項６】
前記第１および第２演算処理ユニットに結合された変換索引バッファ（ＴＬＢ）をさらに含むことを特徴とする請求項１記載の装置。
【請求項７】
前記変換索引バッファは、少なくとも１００のエントリを格納するために適合していることを特徴とする請求項６記載の装置。
【請求項８】
前記第１および第２演算処理ユニットに結合された乗加算ユニットをさらに含み、前記乗加算ユニットは乗算および加算動作を実行することを特徴とする請求項１記載の装置。
【請求項９】
前記第１および第２演算処理ユニットに結合された命令プリデコード・ユニットをさらに含むことを特徴とする請求項１記載の装置。
【請求項１０】
前記第１キャッシュ・メモリは、第１キャッシュ・メモリ・バンクであり、前記第２キャッシュ・メモリは、前記第１キャッシュ・メモリ・バンクから独立した第２キャッシュ・メモリ・バンクであることを特徴とする請求項１記載の装置。
【請求項１１】
前記第１キャッシュ・メモリは、
第１のレベル１（Ｌ１）のキャッシュ・メモリと、
前記第１のレベル１のキャッシュ・メモリに結合された第１のレベル２（Ｌ２）のキャッシュ・メモリと、
をさらに含むことを特徴とする請求項１記載の装置。
【請求項１２】
前記第２キャッシュ・メモリは、
第２のレベル１（Ｌ１）のキャッシュ・メモリと、
前記第２のレベル１のキャッシュ・メモリに結合された第２のレベル２（Ｌ２）のキャッシュ・メモリと、
をさらに含むことを特徴とする請求項１１記載の装置。
【請求項１３】
前記第２のレベル２のキャッシュ・メモリは、前記第１のレベル２のキャッシュ・メモリから独立していることを特徴とする請求項１２記載の装置。
【請求項１４】
前記第１キャッシュ・メモリおよび前記第２キャッシュ・メモリに結合された別のメモリをさらに含むことを特徴とする請求項１記載の装置。
【請求項１５】
前記別のメモリは、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、フラッシュ・メモリ、または、ディスク・メモリであることを特徴とする請求項１記載の装置。
【請求項１６】
前記第１キャッシュ・メモリおよび前記第２キャッシュ・メモリに結合されたバス・マスタ装置をさらに含むことを特徴とする請求項１記載の装置。
【請求項１７】
前記バス・マスタ装置は、ダイレクト・メモリ・アクセス（ＤＭＡ）制御装置であることを特徴とする請求項１６記載の装置。
【請求項１８】
前記第１キャッシュ・メモリは、クロスバ回路によって前記第１および第２演算処理ユニットに結合されることを特徴とする請求項１記載の装置。
【請求項１９】
１またはそれ以上のソフトウェア・スレッドを処理するために適合した第１演算処理ユニットと、
１またはそれ以上のソフトウェア・スレッドを処理するために適合した第２演算処理ユニットと、
前記第１および第２演算処理ユニットに結合された第１変換索引バッファ（ＴＬＢ）と、
を含むことを特徴とする装置。
【請求項２０】
前記第１および第２演算処理ユニットに結合された第１キャッシュ・メモリ・バンクと、
前記第１および第２演算処理ユニットに結合された第２キャッシュ・メモリ・バンクと、
をさらに含むことを特徴とする請求項１９記載の装置。
【請求項２１】
前記第１演算処理ユニットは、
命令キャッシュと、
レジスタ・ファイルと、
算術論理演算ユニット（ＡＬＵ）と、
前記第１変換索引バッファに結合された第２変換索引バッファ（ＴＬＢ）と、
を含むことを特徴とする請求項１９記載の装置。
【請求項２２】
前記第１ＴＬＢは、少なくとも１００のエントリを格納するために適合し、前記第２ＴＬＢは１００未満のエントリを格納するために適合していることを特徴とする請求項２１記載の装置。
【請求項２３】
第１演算処理ユニットと、
第２演算処理ユニットと、
前記第１および第２演算処理ユニットに結合された乗加算ユニットと、
含むことを特徴とする装置。
【請求項２４】
前記第１および第２演算処理ユニットに結合された第１キャッシュ・メモリ・バンクと、
前記第１および第２演算処理ユニットに結合された第２キャッシュ・メモリ・バンクと、をさらに含み、
前記第１キャッシュ・メモリ・バンクは、
第１のレベル１（Ｌ１）のキャッシュ・メモリ、および、
前記第１のレベル１のキャッシュ・メモリに結合された第１のレベル２（Ｌ２）のキャッシュ・メモリ、を含み、
前記第２キャッシュ・メモリ・バンクは、
第２のレベル１（Ｌ１）のキャッシュ・メモリ、および、
前記第２のレベル１のキャッシュ・メモリに結合された第２のレベル２（Ｌ２）のキャッシュ・メモリ、
をさらに含むことを特徴とする請求項２３記載の装置。
【請求項２５】
前記第１演算処理ユニットは１またはそれ以上のソフトウェア・プロセスを処理するために適合し、前記第２演算処理ユニットは１またはそれ以上のソフトウェア・プロセスを処理するために適合していることを特徴とする請求項２３記載の装置。
【請求項２６】
第１演算処理ユニットと、
第２演算処理ユニットと、
前記第１および第２演算処理ユニットに結合された命令プリデコード・ユニットと、
を含むことを特徴とする装置。
【請求項２７】
前記第１演算処理ユニットは１またはそれ以上のソフトウェア・プロセスを処理するために適合し、前記第２演算処理ユニットは１またはそれ以上のソフトウェア・プロセスを処理するために適合していることを特徴とする請求項２６記載の装置。
【請求項２８】
前記第１および第２演算処理ユニットに結合された第１キャッシュ・メモリ・バンクと、
前記第１および第２演算処理ユニットに結合された第２キャッシュ・メモリ・バンクと、を含み、
前記第１キャッシュ・メモリ・バンクは、
第１のレベル１（Ｌ１）のキャッシュ・メモリ、および、
前記第１のレベル１のキャッシュ・メモリに結合された第１レベル２（Ｌ２）のキャッシュ・メモリ、を含み、
前記第２キャッシュ・メモリ・バンクは、
第２のレベル１（Ｌ１）のキャッシュ・メモリ、および、
前記第２のレベル１のキャッシュ・メモリに結合された第２のレベル２（Ｌ２）のキャッシュ・メモリ、
をさらに含むことを特徴とする請求項２６記載の装置。
【請求項２９】
第１演算処理ユニットと、
第２演算処理ユニットと、を含み、前記第１および第２演算処理ユニットは、マルチバンク・キャッシュ・メモリ、命令プリデコード・ユニット、乗加算ユニット、コプロセッサ、または、変換索引バッファ（ＴＬＢ）を共有するために適合していることを特徴とする装置。
【請求項３０】
前記第１および第２演算処理ユニットは、１またはそれ以上のソフトウェア・スレッドを処理するために各々適合していることを特徴とする請求項２９記載の装置。
【請求項３１】
ワイヤレス・トランシーバと、
前記ワイヤレス・トランシーバに結合された第１演算処理ユニットと、
第２演算処理ユニットと、
前記第１および第２演算処理ユニットに結合された第１キャッシュ・メモリと、
前記第１および第２演算処理ユニットに結合された第２キャッシュ・メモリと、
を含むことを特徴とするシステム。
【請求項３２】
前記ワイヤレス・トランシーバに結合されたダイポール・アンテナをさらに含むことを特徴とする請求項３１記載のシステム。
【請求項３３】
前記第１演算処理ユニットは１またはそれ以上のソフトウェア・スレッドを処理するために適合し、前記第２演算処理ユニットは１またはそれ以上のソフトウェア・スレッドを処理するために適合していることを特徴とする請求項３１記載のシステム。
【請求項３４】
マルチスレッドされたコンピュータ処理を提供する方法において、
少なくとも２つのトランザクション開始者間でマルチバンク・キャッシュ・メモリの使用を共有する段階と、
を含むことを特徴とする方法。
【請求項３５】
前記少なくとも２つのトランザクション開始者は、２つの演算処理ユニットであり、前記２つの演算処理ユニットの各々は１またはそれ以上のソフトウェア・スレッドを処理するために適合していることを特徴とする請求項３４記載の方法。
【請求項３６】
前記少なくとも２つのトランザクション開始者間の変換索引バッファ（ＴＬＢ）の使用を共有する段階と、
前記少なくとも２つのトランザクション開始者間の命令プリデコード・ユニットの使用を共有する段階と、
前記少なくとも２つのトランザクション開始者間のコプロセッサの使用を共有する段階と、
前記少なくとも２つのトランザクション開始者間の乗加算ユニットの使用を共有する段階と、
をさらに含むことを特徴とする請求項３４記載の方法。
【請求項３７】
前記マルチバンク・キャッシュ・メモリに結合されたクロック信号の単一クロック・サイクル中に、前記少なくとも２つのトランザクション開始者によって開始された少なくとも２つのメモリ動作を実行する段階をさらに含むことを特徴とする請求項３４記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチスレッドのコンピュータ処理を提供する装置および方法に関する。
【背景技術】
【０００２】
マルチスレッディングは、高スループットおよびレイテンシ（待ち時間）許容のあるアーキテクチャを提供する。特別のシステムでのマルチスレッドのアーキテクチャを実現するための適切な方法および装置を決定するためには、例えばシリコン・エリアの効率的な使用、電力消散および／またはパフォーマンスというような多くの要因を含む。システム設計者は、マルチスレッドのコンピュータ処理を提供するために、絶えず代替の方法を模索している。
【０００３】
本発明と考えられる主題は、本明細書の結論部分で明確に指摘されクレームされる。しかしながら、本発明は、動作の構成および方法の両方に関して、その目的、特徴および利点とともに、次の詳細な説明を図面とともに参照することによって最もよく理解されるであろう。
【０００４】
図示の単純化および明瞭化のために、図示された要素は実寸どおりに必ずしも描かれていないことが認識されるであろう。例えば、いくつかの要素の寸法は、明瞭化のために他の要素に比べて誇張されている。さらに、適切であると考えられた場合、参照数字は、対応または類似した要素を示すために図面間で繰り返されている。
【発明の開示】
【０００５】
以下の詳細な説明では、特定の多くの詳細事項が、本発明の完全な理解を提供するために述べられる。しかしながら、本発明は、これらの特定の詳細事項がなくても当技術の当業者によって実施されることが理解されるであろう。他の実施例では、周知の方法、手順、コンポーネント、および、回路は、本発明を不明瞭にしないように詳細に説明されていない。
【０００６】
以下の説明および請求項において、用語「結合される」、「接続された」は、それらの派生語と共に、使用される。これらの用語が互いに同義語として意図されていないことが理解されるに違いない。むしろ、特定の実施例では、「接続された」は、２つ以上の要素が互いに直接の物理的または電気的な接触中にあることを示すために使用される。「結合される」は、２つ以上の要素が直接の物理的または電気的な接触中にあることを意味してもよい。しかしながら、「結合される」は、さらに２つ以上の要素が互いに直接の接触状態にないが、互いに協動関係にあるか、または相互に影響し合う関係にあることを意味することもある。
【０００７】
図１に進んで、計算システム１００の部分実施例が図示される。システム１００は、クロスバ(crossbar)回路１３０を使用して、システム１００の他のコンポーネントに結合される演算処理ユニット１１０，１２０を含めてもよい。クロスバ回路１３０によって、あらゆるトランザクション開始者はあらゆるトランザクション・ターゲットに話しかけることができる。ある実施例において、クロスバ回路１３０は、システム１００のある部分から他の部分へデータを送信するための１またはそれ以上のスイッチおよびデータ経路を含むことがある。以下の説明および請求項においては、用語「データ」は、データと命令の両方に言及するために使用されてもよい。さらに、用語「情報」が、データと命令に言及するために使用されてもよい。
【０００８】
システム１００は、プリデコード・ユニット１４０、コプロセッサ(coprocessor)１５０、乗加算ユニット１６０、および、クロスバ回路１３０を介して演算処理ユニット１１０，１２０に結合される変換索引バッファ（ＴＬＢ）１６５を含む。さらに、システム１００は、クロスバ回路１３０を介して演算処理ユニット１１０，１２０に結合されるバス・インターフェイス２０５を含むことがある。バス・インターフェイス２０５は、バス・インターフェイス・ユニット（ＢＩＵ）と呼ばれることもある。バス・インターフェイスは、プロセッサのコアに外部の装置とインターフェイスするために適合されてもよい。
【０００９】
システム１００は、バス・マスタまたはバス・マスタ周辺機器２１０、および、バス・インターフェイス２０５へ結合されるスレーブ周辺機器２１５を含む。様々な実施例において、バス・マスタ周辺機器２１０は、ダイレクト・メモリ・アクセス（ＤＭＡ）制御器、グラフィック制御器、ネットワーク。インターフェイス装置またはデジタル信号プロセッサ（ＤＳＰ）のような他のプロセッサであってよい。スレーブ周辺機器２１５は、汎用非同期受信／送信回路（ＵＡＲＴ）、表示制御装置、リード・オンリ・メモリ（ＲＯＭ）、ランダム・アクセス・メモリ（ＲＡＭ）またはフラッシュ・メモリであってもよいが、本発明の範囲はこの点に制限されるものではない。
【００１０】
システム１００は、クロスバ回路１３０に結合される複数の独立したキャッシュ・バンクを含むマルチバンク・キャッシュ・メモリ１６８を含む。例えば、システム１００は、バンク０とラベルされたキャッシュ・メモリの第１バンクを含み、それは、レベル２（Ｌ２）のキャッシュ・メモリ・バンク１７５へ結合されるレベル１（Ｌ１）のキャッシュ・メモリ・バンク１７０を含む。システム１００は、さらにバンクＮとラベルされたキャッシュ・メモリの追加のＮバンクを含み、各Ｎバンクは、レベル２（Ｌ２）のキャッシュ・メモリ・バンク１８５へ結合されるレベル１（Ｌ１）のキャッシュ・メモリ・バンク１８０を含む。様々な実施例において、２つを越えるキャッシュ・メモリのバンクが使用され、例えば、システム１００は４つのキャッシュ・メモリのバンクを含むことがあるが、本発明の範囲はこの点に制限されることはない。キャッシュ・メモリ１６８のキャッシュ・バンクは、命令とデータの両方を格納することができるキャッシュに統一されてもよい。
【００１１】
キャッシュ・メモリ１６８は、ソフトウェア命令および／またはデータを格納することができる揮発性または不揮発性メモリである。ある実施例において、キャッシュ・メモリ１６８は、例えばスタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）のような揮発性メモリであってよいが、本発明の範囲はこの点に制限されることはない。
【００１２】
キャッシュ・メモリ１６８のキャッシュ・メモリ・バンクは、メモリ・インターフェイス１９５を介して記憶装置またはメモリ１９０に結合される。メモリ・インターフェイス１９５はメモリ制御器と呼ばれてもよく、メモリ１９０間で情報の転送を制御するために適合している。メモリ１９０は、揮発性または不揮発性メモリであってよい。メモリ１９０は、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、フラッシュ・メモリ（セル当たり複数ビットを含む、ＮＡＮＤタイプおよびＮＯＲタイプ）、ディスク・メモリ、または、これらのメモリの任意の組合せであってもよいが、本発明の範囲はこの点に制限されることはない。
【００１３】
演算処理ユニット１１０，１２０は、各々、コンピュータを動作させるソフトウェア命令を処理するために適合した論理回路を含めてもよい。ある実施例において、演算処理ユニット１１０，１２０は、少なくとも算術論理演算ユニット（ＡＬＵ）および命令を順番付けるプログラムカウンタを含む。演算処理ユニット１１０，１２０は、各々、プロセッサ、処理コア、中央処理装置（ＣＰＵ）、マイクロコントローラ、または、マイクロプロセッサと呼ばれる。演算処理ユニット１１０，１２０は、一般にクライアントまたはトランザクション開始者と呼ばれてもよい。
【００１４】
ある実施例において、演算処理ユニット１１０は、１またはそれ以上のソフトウェア・プロセスを実行するために適合している。換言すれば、演算処理ユニット１１０は、ソフトウェア・プログラムの１以上のスレッドまたはタスクを処理（つまり、実行）するのに適合している。同様に、演算処理ユニット１２０は、１以上のスレッドを処理するために適合している。演算処理ユニット１１０，１２０は、スレッド処理ユニット（ＴＰＵ）と呼ばれてもよい。システム１００は１を超えるスレッドを処理するのに適合しているので、マルチスレッド・コンピュータ処理システムと呼ばれることもある。
【００１５】
図１には示されていないが、ある実施例において、演算処理ユニット１１０，１２０は、各々、命令キャッシュ、レジスタ・ファイル、算術論理演算ユニット（ＡＬＵ）、および、変換索引バッファ（ＴＬＢ）を含む。代替の実施例では、演算処理ユニット１１０，１２０は、データ・キャッシュを含む。システム１００には２つの演算処理ユニットのみが図示されているが、これは本発明を制限するものではないことに注目されるべきである。代替の実施例では、２を越える演算処理ユニットがシステム１００に使用されてもよい。ある実施例において、６個の演算処理ユニットがシステム１００の中で使用される。
【００１６】
演算処理ユニット１１０，１２０内のＴＬＢは、仮想メモリの物理メモリへの変換を支援し、するのを支援することがあり、ページ・テーブル・ウォーク(page table walk)のための結果キャッシュとして役立てることができる。演算処理ユニット１１０，１２０内のＴＬＢは、１００未満のエントリ、例えばある実施例において１２のエントリ、を格納するために適合しているが、本発明の範囲はこの点に制限されるものではない。演算処理ユニット１１０，１２０内のＴＬＢは、「マイクロＴＬＢ」と呼ばれる。各演算処理ユニットの独立したマイクロＴＬＢは、より大きなＴＬＢの使用を共有することがあり、あるいはより大きなＴＬＢ、例えばＴＬＢ１６５と協動して使用される。例えば、結果が最初マイクロＴＬＢに見つからない場合、比較的大きなＴＬＢ１６５への探索が仮想メモリの物理メモリへの変換中に行なわれる。ＴＬＢ１６５は少なくとも１００のエントリを格納することができ、ある実施例においては、例えば２５６のエントリを格納するために適合させることができるが、本発明の範囲はこの点に制限されるものではない。
【００１７】
ある実施例において、演算処理ユニットのマイクロＴＬＢは、演算処理ユニット上で走る１つまたはそれ以上のスレッドのためにデータおよびアドレス変換の両方を提供することができる。結果がマイクロＴＬＢで見つからない場合、つまり、「ミス」が発生するときには、システム１００（例えば、１１０および１２０）の演算処理ユニット中で共有されるＴＬＢ１６５は、変換を提供することができる。ＴＬＢの使用は、仮想メモリの物理メモリへの変換中に行なわれる必要があるページテーブル・ウォークの数を減少させる。
【００１８】
図１に示される実施例で図示されるように、演算処理ユニット１１０，１２０は、クロスバー回路１３０によって共用資源(リソース)に結合される。これらの共用資源は、マルチバンク・キャッシュ・メモリ１６８、ＴＬＢ１６５、バス・インターフェイス２０５、コプロセッサ１５０、乗加算ユニット１６０、および、プリデコード・ユニット１４０を含む。資源の共有は、マルチスレッドの処理量に関し比較的高い処理能力を提供することができ、シリコン・エリアおよび電力消費を効率的にすることができる。
【００１９】
ＴＬＢ１６５は、ページ・テーブル・ウォークを行なうためにハードウェアを含めてもよく、ページ・テーブル・ウォークの結果を格納する比較的大きなキャッシュを含む。ＴＬＢ１６５は、システム１００の演算処理ユニット上で走るすべてのプロセス中で共有される。演算処理ユニット１１０，１２０は、ＴＬＢ１６５へのエントリをロックすることを含んで、ＴＬＢ１６５中のエントリ管理のための制御ロジックを含む。さらに、ＴＬＢ１６５は、メモリ動作がコアのメモリ階層または外部バス上の装置を目標とするかどうか決めるための情報を演算処理ユニット１１０，１２０に提供することができる。
【００２０】
コプロセッサ１５０は、特定のタスクを実行するために適合したロジックを含んでもよい。例えば、コプロセッサ１５０は、デジタル・ビデオ圧縮、デジタル・オーディオ圧縮または浮動小数点演算を行なうために適合しているが、本発明の範囲はこの点に制限されるものではない。１つのコプロセッサのみがシステム１００に図示されるが、これは本発明を制限するものではない。代替の実施例では、１を越えるコプロセッサがシステム１００に使用される。
【００２１】
乗加算ユニット１６０は、メディア命令セットのための乗算動作を含み、乗算を含むすべての動作を実行することができる。乗加算ユニット１６０は、さらにいくつかの命令セット中で指定される加算機能を実行することができる。
【００２２】
プリデコード・ユニット１４０は、命令プリデコード・ユニットと呼ばれてもよいが、あるタイプの命令セットから別のタイプの命令セットへ命令を変換または置き換えることができる。例えば、プリデコード・ユニット１４０は、Ｔｈｕｍｂ（商標）およびＡＲＭ（商標）命令セットを演算処理ユニット１１０，１２０によって使用できる内部命令形式に変換することができる。命令フェッチに応答して、キャッシュ・メモリ１６８またはメモリ１９０からの命令フェッチの結果は、プリデコード・ユニット１４０を通って経路付けられる。その後、変換された命令は、命令フェッチを開始した演算処理ユニットの命令キャッシュへ送信される。
【００２３】
システム１００のいくつかのコンポーネントは共に集積（「オンチップ」）される一方、他のコンポーネントはシステム１００の他のコンポーネントに対して外部（「オフチップ」）の置かれてもよい。ある実施例において、演算処理ユニット１１０，１２０、プリデコード・ユニット１４０、乗加算ユニット１６０、ＴＬＢ１６５、キャッシュ・メモリ１６８、クロスバ回路１３０、メモリ・インターフェイス１９５、および、バス・インターフェイス２０５は、共に集積（「オンチップ」）される一方、コプロセッサ１５０、メモリ１９０、バス・マスタ周辺機器２１０、および、スレーブ周辺機器２１５は、「オフチップ」にさせる。
【００２４】
ある実施例において、動作中、命令は、キャッシュ・メモリ１６８の適切なキャッシュ・バンクを使用して、演算処理ユニット１１０，１２０によって供給される物理アドレスを用いてフェッチされる。その後、これらの命令は、プリデコード・ユニット１４０を通って経路付けられ、適切な演算処理ユニット内の命令キャッシュに置かれる。
【００２５】
ある実施例において、共通に実行されるデータ操作動作（例えば、算術および論理演算、比較、分岐およびいくつかのコプロセッサ動作）は、演算処理ユニット１１０，１２０内で完全に実行される。複雑でめったに用いられないデータ操作動作（例えば、乗算）は演算処理ユニット１１０，１２０によって次のように処理される、すなわち、レジスタ・ファイルからオペランドを読み、次に、オペランドとコマンドを乗加算ユニット１６０のような共有実行ユニットへ送り、その後その結果が準備されるとそれらは（もしあれば）演算処理ユニットへ戻される。
【００２６】
ある実施例において、メモリを読むか書き込む命令は演算処理ユニット中でそれらの許可と物理アドレスを決定させ、その後読取りまたは書き込み命令を適切なキャッシュ・バンクへ送る。仮想から物理アドレスへの変換は、演算処理ユニットのマイクロＴＬＢによって演算処理ユニット内で扱われ、エントリを比較的大きな共有ＴＬＢ１６５からキャッシュする。
【００２７】
ある実施例において、外部バスまたはバス上の装置を読むか書く込む命令は演算処理ユニット１１０，１２０中でそれらの許可と物理アドレスを決定させてもよく、その後読取りまたは書き込み命令を適切な外部バス制御装置へ送る。コプロセッサ命令は、演算処理ユニット１１０，１２０内で実行されるか、またはオンまたはオフ−コア・コプロセッサへ（もし必要ならそれらのオペランドと共）に送られてもよく、その結果が準備されると、それらは（もしあれば）演算処理ユニット１１０，１２０へ戻される。
【００２８】
いくつかの実施例では、上述されたアーキテクチャは、頻繁に使用されない資源（例えばキャッシュ・メモリ、ＴＬＢ、乗加算ユニット、コプロセッサ）を共有することにより、より高速で走ることができ、シリコンをより効率的に利用することができ、そして電力消費の削減を可能にする。従って、いくつかの実施例は、システム１００の資源をスレッドによって共有される資源およびスレッドによって共有されない資源に分割してもよい。
【００２９】
バンキング・キャッシュ・メモリ１６８は、スレッドすべてに対応するために比較的高い帯域幅を提供する。マルチバンク・キャッシュ・メモリ１６８は、各クロック・サイクル中に複数のメモリ要求を処理する能力を提供することができる。例えば、４つのバンク・メモリシステムは、各クロックで４つまでのメモリ動作をさばくことができる。
【００３０】
バンクされた格納装置は、メモリをシステム１００の異なる演算処理ユニットまたは他のコンポーネントによって同じクロック・サイクル中に同時にアクセスされる独立したバンク分けされた領域に分割することを意味する。バンクされたキャッシュは、同時アクセスの形式をしている「並列処理(parallelism)」を許容する。例えば、キャッシュ・メモリ、例えばバンクＡ，Ｂの２つのバンクに対して、ある演算処理ユニットがキャッシュ・バンクＡ中のアドレスｘを探索する一方、別の演算処理ユニットはキャッシュ・バンクＢ中のアドレスｙを探索することができる。ある実施例において、少なくとも２つのメモリ動作（読み取りまたは書き込み）が演算処理ユニット１１０，１２０によって開始され、また、これらのメモリ動作はマルチバンク・キャッシュ・メモリ１６８に結合されたクロック信号の単一クロック・サイクル中に達成される。
【００３１】
いくつかの実施例では、キャッシュ・バンクをすべて含むシステム１００のすべてのメモリマップされた装置は、演算処理ユニット中のすべてのスレッドへ、すべてのバス・マスタ装置へ、および、オフ−チップ・バスに結合された装置へ、アクセス可能であることに注目されるべきである。
【００３２】
ある実施例において、キャッシュ・メモリのバンキングは、メモリアドレス空間を、独立したサブ・スペースの２の累乗の数に分割することにより達成でき、その各々は他方に依存しない。論理上独立であることに加えて、キャッシュ・メモリの異なるバンクはさらに物理的に無関係か個別のキャッシュ・メモリであってもよい。
【００３３】
各バンクが対応するアドレス空間のサブセットは、他のバンクによって対応付けられる他のサブセットと完全に依存しておらず、各バンク間の通信の必要はない。このように、本実施例はキャッシュ・メモリ１６８のためにソフトウェアによる干渉管理(coherency management)を用いることはない。
【００３４】
バンクの中へのキャッシュ・メモリ１６８スペースをＬ１キャッシュからスタートするバンクへの分割は、図１の中で示される実施例で図示されるように、Ｌ２キャッシュへ続く。もし所望なら、分割またはバンキングは、メモリ１９０へさらに継続されてもよく、それは情報の長期的な格納に使用されてもよい。ある実施例において、あらゆるＬ１キャッシュ・バンクは、単に関連するＬ１キャッシュ・バンクによってアクセス可能な専用Ｌ２キャッシュ・バンクを有していてもよい。さらに、各バンクのＬ２キャッシュは、単一の共有メモリ・システム（例えば、メモリ１９０）と通信することができる。あるいは、メモリ１９０はバンクされたメモリであってもよく、各Ｌ２バンクはメモリ１９０中の指定されたバンクと通信することができる。
【００３５】
ある実施例において、メモリ要求に応答して、Ｌ１キャッシュ・バンクが最初に探索される。Ｌ１「ヒット」がある場合、その結果はトランザクション開始者に返される。Ｌ１「ミス」がある場合、Ｌ１キャッシュ・バンクに関連した専用Ｌ２キャッシュ・バンクが要求された情報を求めて探索される。Ｌ２ミスがある場合、その要求はメモリ１９０に送信されてもよい。
【００３６】
アドレスはメモリ中の特定の位置から情報にアクセスするために使用される。このアドレスの１又はそれ以上のビットはメモリ空間を個別のバンクへ分割するために使用されてもよい。例えば、ある実施例において、アドレスは３２ビット・アドレスであり、３２ビット・アドレスのたとえばビット１１から６、つまり、ビット［１１：６］の１またはそれ以上はメモリ空間を分割するために使用される。
【００３７】
ある実施例において、各バンクのＬ１およびＬ２キャッシュは、物理的にアドレスされており、このメモリ空間の分割は、上述したようなアクセスの物理アドレスからのビットを使用して行われる。バンク分割のための実際の最低の細分(granularity)はキャッシュ・ラインであり、それは６４バイトである。
【００３８】
バンクＬ１およびＬ２のキャッシュはしっかりと結合され、それはＬ２キャッシュ・アクセスのレイテンシを改善する。さらに、Ｌ２はＬ１のための「犠牲キャッシュ(victim cache)」として実行され、例えば、データは、一度に完全なキャッシュ・ラインでＬ１とＬ２との間で移動できる。このようにする動機は、Ｌ１データ・キャッシュではなくＬ２データ・キャッシュ上で使用されるエラー訂正コード（ＥＣＣ）保護であり、その代わりにバイト−パリティ保護を有していてもよい。Ｌ２へのアクセスがすべて完全なラインであることを保証することは、Ｌ２キャッシュ中のＲｅａｄ−Ｍｏｄｉｆｙ−ＥＣＣ−Ｗｒｉｔｅサイクルを実行する必要をなくし、それはその設計を単純化する。第２の利点として、たとえあるとしてもラインがＬ１およびＬ２のレベルで複写されることは少ないので、犠牲キャッシュとしてＬ２キャッシュをＬ１キャッシュのために使用することはキャッシュ効率を改善する。Ｌ１／Ｌ２は「排他的(exclusive)」であるために実行される。
【００３９】
ある実施例において、キャッシュ・バンクは少なくとも６４ビットのロードおよびストア動作をサポートする。より広いデータ転送は、外部バス・マスタのために、および、補助メモリ・システム（例えばメモリ１９０）から返送するフィル(fill)のためにサポートされる。補助メモリ・システムへの還流は、補助メモリ・インターフェイスの幅で提供され、それはある実施例において少なくとも６４ビットである。
【００４０】
ある実施例において、キャッシュ・バンクは、キャッシュ・ラインの間隔に非整列データ転送動作をサポートすることができ、また、それはキャッシュ・ラインをまたぐ非整列アクセスをサポートしない。システム１００の演算処理ユニットおよびバス・インターフェイスは、キャッシュへ送られるデータ転送動作すべてがこの制限に適合することを保証する。
【００４１】
キャッシュは、ミス下のヒット(hit-under-miss)およびミス下のミス(miss-under-miss)動作をサポートしてもよい。キャッシュは、さらにキャッシュへのラインの固定をサポートすることがあり、それらが受け取る各処理に「低い参照の局所性(Low Locality of Reference)」タグを受理してもよく、それはある状況下においてキャッシュ汚染を減少させるために使用される。キャッシュはプリロード動作を受理する。
【００４２】
図２は、本発明の実施例に従ってワイヤレス装置３００の一部のブロック図である。ワイヤレス装置３００は、個人用携帯型情報機器（ＰＤＡ）、ワイヤレス能力を備えるラップトップまたはポータブル・コンピュータ、ウェブ・タブレット、無線電話、ページャ、インスタント・メッセージ装置、デジタル音楽プレーヤ、ディジタル・カメラ、または情報を無線で送信／または受信するのに適合した他の装置であってよい。ワイヤレス装置３００は、次のシステムのいずれかで使用することができるが、本発明の範囲はこの点に制限されるものではない、すなわち、ワイヤレス・ローカル・エリア・ネットワーク（ＷＬＡＮ）システム、ワイヤレス・パーソナル・エリア・ネットワーク（ＷＰＡＮ）システム、または、セルラー・ネットワーク。
【００４３】
図２に示されるように、ある実施例において、ワイヤレス装置３００は、計算システム１００、ワイヤレス・インターフェイス３１０、および、アンテナ３２０を含む。ここで議論されるように、ある実施例において、計算システム１００は、マルチスレッドのコンピュータ処理を提供し、演算処理ユニット１１０および演算処理ユニット１２０を含み、ここで演算処理ユニット１１０，１２０はマルチバンク・キャッシュ・メモリ１６８、命令プリデコード・ユニット１４０、乗加算ユニット１６０、コプロセッサ１５０、および／または、変換索引バッファ（ＴＬＢ）１６５を共有するのに適合している。
【００４４】
様々な実施例において、アンテナ３２０は、ダイポール・アンテナ、ヘリカル・アンテナ、移動通信（ＧＳＭ）のためのグローバル・システム、符号分割多重接続（ＣＤＭＡ）、または、無線で情報を通信するために適合した別のアンテナであってもよい。ワイヤレス・インターフェイス３１０はワイヤレス・トランシーバである。
【００４５】
計算システム１００はワイヤレス装置の中で使用されるものとして図示されているが、これは本発明を制限するものではない。代替の実施例では、計算システム１００は、非ワイヤレス装置、例えばサーバ、デスクトップ、または、無線で情報を通信するためには適合していない埋込み装置で使用されてもよい。
【００４６】
本発明の機能がここに図示され説明されたが、一方多くの修正、代替、変更および均等が当業者に想起されるであろう。したがって、添付の請求項は本発明の真の思想に包含される全ての修正および変更をカバーするものとして理解することが意図される。‘
【図面の簡単な説明】
【００４７】
【図１】本発明の実施例に従って、計算システムを図示するブロック図である。
【図２】本発明の実施例に従って、ワイヤレス装置の一部を図示するブロック図である。
【図１】
2006522385.tif 000003
【図２】
2006522385.tif 000004
【国際調査報告】
2006522385.tif 000005
2006522385.tif 000006
2006522385.tif 000007
2006522385.tif 000008
2006522385.tif 000009
2006522385.tif 000010