(57)【特許請求の範囲】
【請求項１】
レジスタと、
第1の命令をデコードするための第1のパイプラインであって、前記第1の命令が、実行を完了し次第、値を前記レジスタに書き込み、前記第1のパイプラインがレジスタファイルを読み取ることなく前記第1の命令をデコードするとき、前記値が決定されるか、または利用可能である、第1のパイプラインと、
記憶するための手段であって、前記第1のパイプラインが前記第1の命令をデコードするのに応答して、エントリをキャッシュに記憶し、前記値を前記キャッシュ内のエントリに記憶する、記憶するための手段と、
タグ付けするための手段であって、前記キャッシュ内の各エントリをタグ付けし、タグに基づいて前記キャッシュを検索し、前記エントリを前記レジスタでタグ付けする、タグ付けするための手段と、
設定するための手段であって、前記エントリを有効として設定する、設定するための手段とを備える装置。
【請求項２】
前記エントリを記憶するためのキャッシュであって、各エントリが、タグフィールドを有し、エントリが、前記タグフィールドに従って検索される、キャッシュと、
前記第1のパイプラインが前記第1の命令をデコードするのに応答して前記キャッシュ内の前記エントリに前記値を記憶するためのコントローラであって、前記レジスタを示す前記タグフィールドを前記エントリに設定し、前記エントリが有効であることを示すためにフラグフィールドを前記エントリに設定する、コントローラとを備える、請求項1に記載の装置。
【請求項３】
前記第1の命令が即値移動命令である、請求項1または請求項2に記載の装置。
【請求項４】
前記コントローラが、前記第1のパイプラインがプログラム順序において前記第1の命令の後の消費命令をデコードすることに応答して、
前記レジスタでタグ付けされた前記エントリを探して前記キャッシュを検索し、
前記エントリが見つかるという条件で、および前記エントリの前記フラグフィールドが前記エントリが有効であることを示しているという条件で、前記値を前記第1のパイプラインに転送する、請求項2に記載の装置。
【請求項５】
転送するための手段であって、前記エントリが有効と示されているという条件で、前記値を前記エントリから前記第1のパイプラインに、前記第1のパイプラインにおいてデコードされる第2の命令のオペランドとして転送する転送するための手段であって、前記第2の命令が、プログラム順序において前記第1の命令の後であり、かつ消費命令である、転送するための手段をさらに備える、請求項1に記載の装置。
【請求項６】
レジスタファイルをさらに備え、前記レジスタファイルが前記レジスタを備え、前記設定するための手段が、前記第1のパイプラインが前記レジスタをターゲットとする第3の命令をデコードし次第、前記エントリを無効として設定し、前記第3の命令が、前記レジスタファイルから読み取ることによってその結果を決定する、請求項5に記載の装置。
【請求項７】
レジスタファイルをさらに備え、前記レジスタファイルが前記レジスタを備え、前記設定するための手段が、前記第1のパイプラインが前記レジスタをターゲットとする第2の命令をデコードし次第、前記エントリを無効として設定し、前記第2の命令が、前記レジスタファイルから読み取ることによってその結果を決定する、請求項1に記載の装置。
【請求項８】
第2のパイプラインと、
転送するための手段であって、前記エントリが有効と示されているという条件で、前記値を前記エントリから前記第2のパイプラインに、前記第2のパイプラインにおいてデコードされる第2の命令のオペランドとして転送する転送するための手段であって、前記第2の命令がプログラム順序において前記第1の命令の後であり、かつ消費命令である、転送するための手段とをさらに備える、請求項1に記載の装置。
【請求項９】
レジスタファイルをさらに備え、前記レジスタファイルが前記レジスタを備え、前記設定するための手段が、前記第1のパイプラインが第3の命令をデコードし次第、前記エントリを無効として設定し、前記第3の命令が、前記レジスタをターゲットとし、前記第3の命令が、前記レジスタファイルから読み取ることによってその結果を決定する、請求項8に記載の装置。
【請求項１０】
第2のパイプラインと、
転送するための手段であって、前記第1の命令が実行するとき、前記第1の命令により前記エントリが有効と示されているという条件で、前記値を前記第2のパイプラインに、前記第2のパイプラインにおいてデコードされる第2の命令のオペランドとしてゼロパイプラインサイクル遅延で転送する転送するための手段であって、前記第2の命令がプログラム順序において前記第1の命令の後であり、かつ消費命令である、転送するための手段とをさらに備える、請求項1に記載の装置。
【請求項１１】
携帯電話と基地局とからなる群から選択される、請求項1または請求項2に記載の装置。
【請求項１２】
第1のパイプラインにおいて第1の命令をデコードするステップであって、前記第1の命令が、実行を完了し次第、値をレジスタに書き込み、前記第1のパイプラインがレジスタファイルを読み取ることなく前記第1の命令をデコードするとき、前記値が決定されるか、または利用可能である、デコードするステップと、
前記第1のパイプラインが前記第1の命令をデコードすることに応答して前記値をキャッシュ内のエントリに記憶するステップと、
前記エントリを前記レジスタでタグ付けするステップであって、前記キャッシュが前記タグ付けするステップに従って検索される、タグ付けするステップと、
前記エントリを有効として設定するステップとを含む方法。
【請求項１３】
前記第1の命令が即値移動命令である、請求項12に記載の方法。
【請求項１４】
前記第1のパイプラインにおいて第2の命令をデコードするステップであって、前記第2の命令が、プログラム順序において前記第1の命令の後であり、かつ消費命令である、デコードするステップと、
前記エントリが有効と示されているという条件で、前記値を前記キャッシュ内の前記エントリから前記第1のパイプラインに前記第2の命令のオペランドとして転送するステップとをさらに含む、請求項12に記載の方法。
【請求項１５】
請求項１２〜１４のいずれか一項に記載の方法をプロセッサに実施させるための命令を記憶した非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマイクロプロセッサに関する。
【背景技術】
【０００２】
典型的な中央処理装置(CPU)のパイプラインフローにおいて、パイプラインにおける命令は、まずそのオペランドを取得し、次いで実行してから、最後に結果を書き戻し、場合により、結果を後続の従属消費命令に転送する。CPUマイクロアーキテクチャにより、このプロセスは、性能と周波数とを最適化するように複数のパイプライン段階にわたってしばしば起きる。
【０００３】
複数の実行パイプラインを含むスーパースケーラプロセッサにおいて、1つの命令の結果をパイプライン内の1つまたは複数の消費命令に転送するステップは、効率的に行われない場合、パイプラインストールをもたらし得る性能クリティカル機能であり得る。データ依存ストールは、命令が実行のためにそれぞれのパイプラインにディスパッチしようとすることが関与する、最も一般的なストールであり、その場合、ストールした命令は、オペランドのプロデューサが完了するのを待つ。必要とされるオペランドをそのプロデューサ(producer)からストールした命令の結果に転送するのが遅れると、結果としてCPUの性能が低下する。
【発明の概要】
【課題を解決するための手段】
【０００４】
本発明の実施形態は、定数(リテラルまたは即値)を記憶するためのキャッシュを使用してより効率的にリテラル生成データを従属命令に転送するためのシステムおよび方法を対象とする。
【０００５】
一実施形態においては、プロセッサは、レジスタと、第1のパイプラインと、キャッシュと、コントローラとを含む。コントローラは、第1のパイプラインが命令をデコードするのに応答してキャッシュ内のエントリに値を記憶し、命令は、実行を完了し次第、値をレジスタに書き込み、第1のパイプラインが命令をデコードするとき、値は決定されるかまたは利用可能である。コントローラは、エントリをレジスタでタグ付けするためにエントリにタグフィールドを設定し、エントリが有効であることを示すためにエントリにフラグフィールドを設定する。命令は即値移動命令であり得る。
【０００６】
別の実施形態においては、方法は、第1のパイプラインにおいて第1の命令をデコードするステップを含み、第1の命令は、実行を完了し次第、値をレジスタに書き込み、第1のパイプラインが第1の命令をデコードするとき、値は決定されるかまたは利用可能である。方法は、値をキャッシュ内のエントリに記憶するステップと、エントリをレジスタでタグ付けするステップと、エントリを有効として設定するステップとをさらに含む。
【０００７】
別の実施形態においては、プロセッサは、第1の命令をデコードするための第1のパイプラインを含み、第1の命令は、実行を完了し次第、値をレジスタに書き込み、第1のパイプラインが第1の命令をデコードするとき、値は決定されるかまたは利用可能である。プロセッサは、記憶するための手段であって、値をキャッシュ内のエントリに記憶する記憶するための手段と、タグ付けするための手段であって、エントリをレジスタでタグ付けするタグ付けするための手段と、設定するための手段であって、エントリを有効として設定する設定するための手段とをさらに含む。
【０００８】
別の実施形態においては、非一時的コンピュータ可読媒体が、プロセッサにプロセスを実行させるために命令を記憶している。プロセスは、第1のパイプラインにおいて第1の命令をデコードするステップであって、第1の命令が、実行を完了し次第、値をレジスタに書き込み、第1のパイプラインが第1の命令をデコードするとき値が決定されるかまたは利用可能である、デコードするステップと、値をキャッシュ内のエントリに記憶するステップと、エントリをレジスタでタグ付けするステップと、エントリを有効として設定するステップとを含む。
【０００９】
添付の図面は、本発明の実施形態の説明を助けるために提示され、実施形態の限定のためではなく、その例示のためだけに提供される。
【図面の簡単な説明】
【００１０】
【図１】一実施形態によるプロセッサを例示する図である。
【図２】一実施形態による方法を例示する図である。
【図３】実施形態が応用され得るワイヤレス通信システムを例示する図である。
【発明を実施するための形態】
【００１１】
本発明の態様が、本発明の具体的な実施形態を対象とする以下の説明および関連する図面において開示される。代替の実施形態を本発明の範囲から逸脱することなく考案することができる。さらに、本発明のよく知られた要素は、本発明の関連する詳細を曖昧にしないようにするために、詳細には説明されないし、あるいは省略される。
【００１２】
「例示的な」という単語は、本明細書では「例、事例、または例示として働くこと」を意味するために用いられる。「例示的な」として本明細書に説明する任意の実施形態は、必ずしも、他の実施形態よりも好ましいまたは有利であると解釈されない。同様に、「本発明の実施形態」という用語は、本発明のすべての実施形態が、論じられた動作の特徴、利点または態様を含むことを必要としていない。
【００１３】
本明細書に用いる用語は、特定の実施形態を説明するためだけであり、本発明の実施形態を限定することが意図されていない。本明細書では、単数形「1つの(a)」、「1つの(an)」および「その(the)」は、文脈が明確に他の指示をしていない限り、複数形も含むことが意図されている。「備える(comprises)」、「備える(comprising)」、「含む(includes)」および/または「含む(including)」という用語は、本明細書に用いたとき、記載された特徴、整数、ステップ、動作、要素、および/または構成要素の存在を指定するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、および/またはそれらの群の存在または追加を除外しないことがさらに理解されよう。
【００１４】
さらに、多くの実施形態が、たとえば、コンピューティングデバイスの要素によって実施される動作のシーケンスの観点から説明されている。本明細書に説明する様々な動作が、具体的な回路(たとえば、特定用途向け集積回路(ASIC))によって、1つまたは複数のプロセッサによって実行されるプログラム命令によって、または両方の組合せによって実施できることが認識されよう。さらに、これらの本明細書に説明する動作のシーケンスは、実行し次第、関連付けられたプロセッサに本明細書に説明する機能性を実施させる、対応するコンピュータ命令の組をその中に記憶しているコンピュータ可読記憶媒体の任意の形態内で全体が具現化されるとみなすことができる。したがって、本発明の様々な態様は、いくつかの異なる形態で具現化することができ、そのすべては、特許請求される主題の範囲内にあることが企図されている。さらに、本明細書に説明する実施形態の各々に対して、任意のそのような実施形態の対応する形態は、たとえば、説明された動作を実施する「ように構成されたロジック」として本明細書に説明することができる。
【００１５】
図1は、プロセッサ100の構成要素を例示するが、その場合、例示を容易にするために、すべての構成要素を例示してはいない。多くのプロセッサが、1つより多くのパイプラインを採用した、スーパースケーラプロセッサである。2つのパイプラインが、102aおよび102bとラベル付けされて、図1に例示されるが、実際には、スーパースケーラプロセッサには2つより多くのパイプラインがあり得る。簡単にするために、各パイプラインには3つの段階が示されているが、実際には、3つより多くの段階が使用される可能性がある。
【００１６】
図1のパイプラインに例示されているのは、命令フェッチ段階104aおよび104b、デコード段階106aおよび106b、ならびに実行段階108aおよび108bである。パイプラインは、少し例を挙げると、レジスタフェッチ、ハザードチェッキング、キャッシュヒット検知、データフェッチ、およびロードのための書き戻し、およびレジスタ間動作などの他の段階を含むことができる。110とラベル付けされたコントローラ機能ユニットは、パイプライン102aおよび102bを制御する。
【００１７】
移動命令は、データを1つの位置から別の位置に移動させる(コピーするまたは書き込む)ための一般に使用される命令である。移動命令は、しばしばMOVと書かれ、ここではその規約に従う。移動命令の一般的用法は、作成されたレジスタに定数の値をコピーすることである。コピーされる定数値は、即値またはリテラルと称することがある。定数をレジスタに移動させるための移動命令は、即値移動命令と呼ばれることがあり、MOV Rm #constantと書くことができ、その場合、constantは定数値を表し、Rmは定数値が書き込まれる作成されたレジスタを表す。図1において、レジスタRmは、118とラベル付けされ、レジスタファイル120内のレジスタとして例示される。
【００１８】
即値移動命令をデコードし次第、実施形態は、定数をエントリの一部として、図1に定数キャッシュと称し、112とラベル付けされる、キャッシュに記憶する。定数キャッシュ112内のエントリは、図1に114とラベル付けされ、114aとラベル付けされたタグフィールド、114bとラベル付けされた定数フィールド、および114cとラベル付けされたフラグフィールドの3つのフィールドを備える。その名前が示すように、定数フィールド114bは、エントリに関連付けられた定数値を記憶する。タグフィールド114aは、定数が書き込まれる(移動される)レジスタを識別する。フラグフィールド114cは、エントリ114の状態を示すために1つまたは複数のビットを備える。いくつかの実施形態の場合、フラグフィールド114cは、幅が1ビットでよく、エントリが有効であるかないかを示す。
【００１９】
定数キャッシュ112は、レジスタファイルとしてプロセッサ100で実現することができる。図1の例示において、定数キャッシュ112は、レジスタファイル120とは別個の構造として示される。しかし、定数キャッシュ112は、必ずしもレジスタファイル120とは独立していなくてよい。たとえば、定数キャッシュ112は、レジスタファイル120の一部でよいし、または両方の構造は、より大きなレジスタファイル構造に含めることができる。
【００２０】
即値移動命令は、その結果を計算するための後続の実行を必要としない。典型的には、定数が生成されたとき、直ちに後続の(プログラム順序において)消費命令によって使用される。定数キャッシュ112を利用することによって、後続の消費命令は、定数値が宛先の作成されたレジスタに書き込まれる前に、記憶された定数値にアクセスすることができる。
【００２１】
定数キャッシュ112の内容は、表にまとめられるものとして表示することができ、その場合、エントリに記憶された定数値が即値移動命令によって書かれ、即値移動命令の宛先レジスタに従ってタグ付けされる。定数キャッシュ112に記憶された即値移動命令の結果(定数値)および即値移動命令に依存する後続の(プログラム順序において)命令を検討し、その場合、後続の命令のオペランドは、即値移動命令が宛先レジスタに移動させる定数値である。後続の命令は、消費命令であり、宛先レジスタは移動命令によってターゲットとされるレジスタである。
【００２２】
一実施形態の場合、消費命令の実行は、即値移動命令の結果が転送されるのを待たなくてよいし、即値移動命令が実行を完了するのを待たなくてもよい。むしろ、消費命令は、それが依存する、即値移動命令に関連付けられた定数キャッシュ112内のエントリに記憶された定数値をそのオペランドとして使用することができる。その結果、即値移動命令が完了したかどうか、またはまだパイプライン内にあるかどうかにかかわらず、データ転送は必要とされず、データストールは起きることが必要とされない。
【００２３】
さらに、即値移動命令およびデータ依存消費命令は、異なるパイプライン内の同じ段階であり得るが、それにもかかわらず、いくつかの実施形態の場合、データ依存消費命令は、そのオペランドをゼロパイプラインサイクル遅延で取得することができる。
【００２４】
即値移動命令がデコードされ、その即値(リテラルまたは定数値)が定数キャッシュ内のエントリ114に記憶されたとき、エントリに関連付けられたフラグフィールド114cは、エントリの内容が有効であることを示すように設定される。そのエントリが後で消費命令によってアクセスされたとき、エントリの有効性がチェックされてからエントリに記憶された即値が消費命令に転送される。エントリに関連付けられたフラグフィールドが、エントリに記憶された即値が有効でないことを示している場合、記憶された即値は、消費命令に転送されない。
【００２５】
上記の説明は即値移動命令の文脈内にあるが、実施形態は、定数キャッシュ112を採用したとき即値移動命令に限定されない。コントローラ110は、値を宛先レジスタに書き込む他の種類の命令の場合、エントリは即値移動命令に関して説明したように定数キャッシュ112内に生成することができるように構成することができ、したがって、記憶された値は消費命令に転送することができる。そのような命令の例は、少し挙げると、分岐およびリンク命令、ならびにプログラム制御相対分岐である。
【００２６】
より一般的には、説明される実施形態は、結果をレジスタファイルに書き込む命令に適用することができ、その場合、結果は、命令のデコードに含まれる情報によって決定され得るか、またはデコード時に利用可能な情報によって決定され得るかのいずれかである。そのような命令は、レジスタファイルを読み取らなければならない任意のオペランドを有しない。しかし、議論を容易にするために、本明細書に開示する実施形態は、即値移動命令について説明され、その場合、即値移動命令は、単に、実施形態が有用であり得る命令の例として働くにすぎない。
【００２７】
作成されたレジスタに命令が結果を書き込むとき、その場合、命令が、結果を決定するための実行の前にレジスタファイルから読み取る必要があるが、コントローラ110は、作成されたレジスタに一致するタグを有する定数キャッシュ114内の任意のエントリを無効にする。この場合、コントローラ110は、一致するエントリのフラグフィールドを、エントリに記憶された定数値が有効でないことを示す値に設定する。
【００２８】
コントローラ110は、上記の実施形態により定数キャッシュ114内のエントリを更新する。これらの動作は、全面的にハードウェアによって実施することができる。いくつかの実施形態の場合、たとえば、メモリ116などのメモリに記憶された命令は、上記の動作を実行することができる。メモリ116は、一般に、非一時的コンピュータ可読媒体でよい。
【００２９】
図2は上記の動作を例示する。ステップ202では、命令がデコードされる。ステップ204では、デコードされた命令は、作成されたレジスタRmに定数値Cが移動されることを示すための、MOV Rm #Cと表示される、即値移動命令である。即値移動命令をデコードし次第、ステップ206は、定数値Cが定数キャッシュ112内のエントリに記憶されていることを示し、その場合、エントリはレジスタRmでタグ付けされ、エントリのフラグフィールドは、エントリが有効であることを示すように設定される。
【００３０】
ステップ208で示されるように、デコードされた命令が、作成されたレジスタRmのコンシューマ(consumer)である場合、作成されたレジスタRmに関連付けられた(でタグ付けされた)定数キャッシュ112内に有効なエントリがあるという条件で、ステップ210で示されるように、そのエントリの定数フィールドに記憶された定数値Cがコンシューマに転送される。ステップ212で示されるように、デコードされた命令が実行を完了し、作成されたレジスタRmに定数値を書き込む(またはコピーする)命令である場合、ステップ214で示されるように、コントローラ110が、作成されたレジスタRmに関連付けられた(でタグ付けされた)定数キャッシュ112内のエントリ(1つあるという条件で)を無効にする。
【００３１】
図3は、実施形態が応用され得るワイヤレス通信システムを例示する。図3は、基地局304Aと、304Bと、304Cとを備えた通信ネットワーク302を例示する。図3は、携帯電話(たとえば、スマートフォン)、タブレット、またはコンピュータシステムなどの携帯電話ネットワークに適した他の種類の通信デバイスなど、モバイルセルラー通信デバイスであり得る、306とラベル付けされた通信デバイスを示す。通信デバイス306はモバイルでなくてよい。図3の特定の例においては、通信デバイス306は、基地局304Cに関連付けられたセル内に位置する。矢印308および310は、それぞれ、アップリンクチャネルとダウンリンクチャネルとを図によって表し、それによって、通信デバイス306が基地局304Cと通信する。
【００３２】
実施形態は、たとえば、通信デバイス306、または基地局304C、または両方に関連付けられたデータ処理システムにおいて使用することができる。図3は、本明細書に説明する実施形態を採用することができる、多くのうちの1つの用途だけを例示する。
【００３３】
情報および信号は、様々な異なる技術および技法のいずれかを使用して表すことができることを当業者は理解されよう。たとえば、上記の説明全体を通して参照することができるデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁界もしくは磁性粒子、光場もしくは光学粒子、またはそれらの任意の組合せで表すことができる。
【００３４】
さらに、本明細書に開示する実施形態に関連して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実現できることを当業者は理解されよう。このハードウェアおよびソフトウェアの互換性を明確に例示するために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップが一般にそれらの機能性の観点から上に説明されている。そのような機能性がハードウェアまたはソフトウェアとして実現されるかどうかは、特定の用途および全体のシステムに課される設計上の制約による。当業者は、各特定の用途に対して、説明された機能性を様々なやり方で実現することができるが、そのような実現の決定は、本発明の範囲から逸脱させるものと解釈すべきでない。
【００３５】
本明細書に開示する実施形態に関連して説明した方法、シーケンス、および/またはアルゴリズムは、直接、ハードウェアで、プロセッサによって実行されるソフトウェアモジュールで、または2つの組合せで具現化することができる。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、取外し可能ディスク、CD-ROM、または当技術分野で知られた任意の他の記憶媒体の形態に存在することができる。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるようにプロセッサに結合される。あるいは、記憶媒体はプロセッサと一体でよい。
【００３６】
したがって、本発明の実施形態は、定数キャッシュを使用してより効率的にリテラル生成データを従属命令に転送するための方法を採用したコンピュータ可読媒体を含むことができる。
【００３７】
したがって、本発明は、例示された例に限定されず、本明細書に説明した機能性を実施するための任意の手段は、本発明の実施形態に含まれる。
【００３８】
前述の開示は、本発明の例示的な実施形態を示すが、添付の特許請求の範囲によって定義される本発明の範囲から逸脱することなく本明細書において様々な変更および修正を加えることができることに留意されたい。本明細書に説明した本発明の実施形態による方法の特許請求の範囲の機能、ステップ、および/または動作は、任意の特定の順序で実施しなくてよい。さらに、本発明の要素は、単数で説明しまたは特許請求することができるが、単数への限定が明示的に記載されていない限り、複数が企図されている。
【符号の説明】
【００３９】
100  プロセッサ
102a  パイプライン
102b  パイプライン
104a  フェッチ段階
104b  フェッチ段階
106a  デコード段階
106b  デコード段階
108a  実行段階
108b  実行段階
110  コントローラ
112  定数キャッシュ
114  エントリ
114a  タグフィールド
114b  定数フィールド
114c  フラグフィールド
116  メモリ
118  レジスタ
120  レジスタファイル
302  通信ネットワーク
304A  基地局
304B  基地局
304C  基地局
306  通信デバイス
308  矢印
310  矢印
【図１】
0006352386.tif 000002
【図２】
0006352386.tif 000003
【図３】
0006352386.tif 000004