(57)【特許請求の範囲】
【請求項１】
コンピュータ命令を処理するための方法であって、
命令ストリーム中で命令を検出するステップと、
前記命令が少なくとも1つのソースレジスタを指定するかどうかを判断するステップと、
前記命令が少なくとも1つのソースレジスタを指定すると判断すると、
パイプライン発行テーブルに格納された前記少なくとも1つのソースレジスタに関連付けられた少なくとも1つのパイプラインインジケータに基づいて、前記命令のための少なくとも1つの実行パイプラインを決定するステップと、
前記少なくとも1つの実行パイプラインに基づいて、前記命令を実行パイプラインに発行するステップと、
前記命令が少なくとも1つのソースレジスタを指定しないと判断すると、
デフォルトの実行パイプライン発行論理に基づいて、前記命令を前記実行パイプラインに発行するステップと、
前記命令が少なくとも1つのターゲットレジスタを指定するかどうかを判断するステップと、
前記命令が少なくとも1つのターゲットレジスタを指定すると判断すると、
前記命令を、複数の実行パイプラインのうちのいずれかに発行することにより性能が向上するとして検出するステップと、
前記命令が発行される先の前記実行パイプラインに基づいて、前記パイプライン発行テーブル中の前記少なくとも1つのターゲットレジスタに関連付けられた少なくとも1つのパイプラインインジケータを更新するステップであって、前記少なくとも1つのターゲットレジスタと、前記命令が発行される先の前記実行パイプラインとに関連付けられた、前記パイプライン発行テーブル中のパイプラインインジケータを設定するステップを含む、ステップと
を含む、方法。
【請求項２】
コンピュータ命令を処理するための方法であって、
命令ストリーム中で命令を検出するステップと、
前記命令が少なくとも1つのソースレジスタを指定するかどうかを判断するステップと、
前記命令が少なくとも1つのソースレジスタを指定すると判断すると、
パイプライン発行テーブルに格納された前記少なくとも1つのソースレジスタに関連付けられた少なくとも1つのパイプラインインジケータに基づいて、前記命令のための少なくとも1つの実行パイプラインを決定するステップと、
前記少なくとも1つの実行パイプラインに基づいて、前記命令を実行パイプラインに発行するステップと、
前記命令が少なくとも1つのソースレジスタを指定しないと判断すると、
デフォルトの実行パイプライン発行論理に基づいて、前記命令を前記実行パイプラインに発行するステップと、
前記命令が少なくとも1つのターゲットレジスタを指定するかどうかを判断するステップと、
前記命令が少なくとも1つのターゲットレジスタを指定すると判断すると、
前記命令を、複数の実行パイプラインのいずれに発行しても性能が変わらないとして検出するステップと、
前記命令が発行される先の前記実行パイプラインに基づいて、前記パイプライン発行テーブル中の前記少なくとも1つのターゲットレジスタに関連付けられた少なくとも1つのパイプラインインジケータを更新するステップであって、前記パイプライン発行テーブル中の前記少なくとも1つのターゲットレジスタに関連付けられたすべてのパイプラインインジケータをクリアするステップを含む、ステップと
を含む、方法。
【請求項３】
前記命令を前記実行パイプラインに発行するステップが、前記命令を、前記少なくとも1つの実行パイプラインによって示された優先実行パイプラインに発行するステップを含む、請求項1または2に記載の方法。
【請求項４】
前記命令を前記実行パイプラインに発行するステップが、前記少なくとも1つの実行パイプラインと、他の実行パイプライン発行論理とに基づいて、前記命令を、前記少なくとも1つの実行パイプラインによって示された優先実行パイプライン以外の実行パイプラインに発行するステップを含む、請求項1または2に記載の方法。
【請求項５】
前記少なくとも1つの実行パイプラインを決定するステップが、そのために前記少なくとも1つのソースレジスタに関連付けられた前記少なくとも1つのパイプラインインジケータが設定される、少なくとも1つの実行パイプラインを示すステップを含む、請求項1または2に記載の方法。
【請求項６】
前記パイプライン発行テーブル中の前記少なくとも1つのターゲットレジスタに関連付けられた前記少なくとも1つのパイプラインインジケータを更新するステップが、複数の実行パイプラインのうちのそれぞれの1つに対応する複数のフラグのうちの1つを更新するステップを含む、請求項1または2に記載の方法。
【請求項７】
前記パイプライン発行テーブル中の前記少なくとも1つのターゲットレジスタに関連付けられた前記少なくとも1つのパイプラインインジケータを更新するステップが、複数の実行パイプラインのうちの1つの識別情報を記憶するステップを含む、請求項1または2に記載の方法。
【請求項８】
命令処理回路を備えるプロセッサであって、
前記命令処理回路は、
命令ストリーム中で命令を検出するように構成された命令検出回路と、
パイプライン発行テーブルと、
ソースレジスタ検出回路であって、
前記命令が少なくとも1つのソースレジスタを指定するかどうかを判断すること、および
前記命令が前記少なくとも1つのソースレジスタを指定すると判断すると、
パイプライン発行テーブル中の少なくとも1つのソースレジスタに関連付けられた少なくとも1つのパイプラインインジケータに基づいて、前記命令のための少なくとも1つの実行パイプラインを決定すること
を行うように構成されたソースレジスタ検出回路と、
ターゲットレジスタ検出回路であって、
前記命令が少なくとも1つのターゲットレジスタを指定するかどうかを判断すること、および
前記命令が前記少なくとも1つのターゲットレジスタを指定すると判断することに応答して、
前記命令を、複数の実行パイプラインのうちのいずれかに発行することにより性能が向上するとして検出することと、
前記命令が発行される先の実行パイプラインに基づいて、前記パイプライン発行テーブル中の前記少なくとも1つのターゲットレジスタに関連付けられた少なくとも1つのパイプラインインジケータを更新することであって、前記少なくとも1つのターゲットレジスタと、前記命令が発行される先の前記実行パイプラインとに関連付けられた、前記パイプライン発行テーブル中のパイプラインインジケータを設定することを含む、更新することと
を行うように構成されたターゲットレジスタ検出回路と
を備え、
前記プロセッサは、
前記少なくとも1つの実行パイプラインに基づいて、前記命令を前記実行パイプラインに発行し、
前記命令が少なくとも1つのソースレジスタを指定しないと判断すると、
デフォルトの実行パイプライン発行論理に基づいて、前記命令を前記実行パイプラインに発行する
ように構成される、プロセッサ。
【請求項９】
命令処理回路を備えるプロセッサであって、
前記命令処理回路は、
命令ストリーム中で命令を検出するように構成された命令検出回路と、
パイプライン発行テーブルと、
ソースレジスタ検出回路であって、
前記命令が少なくとも1つのソースレジスタを指定するかどうかを判断すること、および
前記命令が前記少なくとも1つのソースレジスタを指定すると判断すると、
パイプライン発行テーブル中の少なくとも1つのソースレジスタに関連付けられた少なくとも1つのパイプラインインジケータに基づいて、前記命令のための少なくとも1つの実行パイプラインを決定すること
を行うように構成されたソースレジスタ検出回路と、
ターゲットレジスタ検出回路であって、
前記命令が少なくとも1つのターゲットレジスタを指定するかどうかを判断すること、および
前記命令が前記少なくとも1つのターゲットレジスタを指定すると判断することに応答して、
前記命令を、複数の実行パイプラインのいずれに発行しても性能が変わらないとして検出することと、
前記命令が発行される先の実行パイプラインに基づいて、前記パイプライン発行テーブル中の前記少なくとも1つのターゲットレジスタに関連付けられた少なくとも1つのパイプラインインジケータを更新することであって、前記パイプライン発行テーブル中の前記少なくとも1つのターゲットレジスタに関連付けられたすべてのパイプラインインジケータをクリアすることを含む、更新することと
を行うように構成されたターゲットレジスタ検出回路と
を備え、
前記プロセッサは、
前記少なくとも1つの実行パイプラインに基づいて、前記命令を前記実行パイプラインに発行し、
前記命令が少なくとも1つのソースレジスタを指定しないと判断すると、
デフォルトの実行パイプライン発行論理に基づいて、前記命令を前記実行パイプラインに発行する
ように構成される、プロセッサ。
【請求項１０】
前記命令を、前記少なくとも1つの実行パイプラインによって示された優先実行パイプラインに発行することによって、前記命令を前記実行パイプラインに発行するように構成される、請求項8または9に記載のプロセッサ。
【請求項１１】
前記パイプライン発行テーブルは、複数の実行パイプラインのうちのそれぞれの1つに対応する複数のフラグを記憶するか、または、複数の実行パイプラインのうちの1つの識別情報を記憶するように構成された、請求項10に記載のプロセッサ。
【請求項１２】
命令フェッチ回路と、命令解読回路と、命令キューとからなるグループから構成された回路中に配設された、前記命令処理回路を備える、請求項8〜11のいずれか一項に記載のプロセッサ。
【請求項１３】
半導体ダイに組み込まれた前記命令処理回路を備える、請求項8〜12のいずれか一項に記載のプロセッサ。
【請求項１４】
前記命令処理回路が組み込まれるデバイスをさらに備え、前記デバイスは、セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビ、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、およびポータブルデジタルビデオプレーヤからなるグループから選択される、請求項8〜13のいずれか一項に記載のプロセッサ。
【請求項１５】
処理モジュールにより実行されたとき請求項1〜7のいずれか一項に記載の方法を実施するコンピュータ実行可能命令を記憶した、非一時的コンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の技術は、一般に、中央処理装置(CPU)ベースのシステムにおけるパイプラインコンピュータ命令の処理に関する。本出願は、2012年6月5日に出願された米国仮特許出願第61/655,655号の優先権を主張する。
【背景技術】
【０００２】
現代のコンピュータアーキテクチャにおける「命令パイプライン」の出現は、CPUリソースの利用を改善し、コンピュータアプリケーションの実行時間をより高速にしている。命令パイプラインは、各命令の処理を一連のステップに分割することによって、CPUによって処理されている命令のスループットが増大され得る処理技法である。命令は、複数のステージから構成される「実行パイプライン」において実行され、各ステージは、一連の命令の各々のために、ステップのうちの1つを実行する。結果として、各CPUクロックサイクルにおいて、複数の命令のためのステップが並列に評価され得る。CPUは、場合によっては、複数の実行パイプラインを採用して、性能をさらに高めることができる。
【０００３】
時々、ある命令が実行パイプラインにおいてその指定されたCPUクロックサイクル中に実行できない状況が、生じることがある。たとえば、データ依存性が、最初の命令と後続の命令との間に存在することがある(すなわち、後続の命令が、最初の命令によって行われた動作によって生成されたデータを必要とすることがある)。後続の命令が実行を開始する前に、最初の命令が完全に実行していない場合、後続の命令が実行するとき、後続の命令によって必要とされるデータがまだ利用可能ではないことがあり、したがって、パイプライン「ハザード」(具体的には、「リードアフターライトハザード」)が生じることになる。このハザードを解決するために、CPUは、最初の命令が完全に実行するまで、後続の命令の実行を「ストール」または遅延させ得る。後続の命令をストールせざるを得ない状態を回避する助けとするために、CPUは、「パイプライン転送(pipeline forwarding)」として知られる技法を代替的に採用することがある。パイプライン転送は、最初に実行された命令の結果がレジスタに書き込まれ、次いで後続の命令によってレジスタからリードバックされることを必要とせずに、後続の命令がその結果にアクセスすることを可能にすることによって、後続の命令の実行をストールさせる必要がないようにすることができる。
【０００４】
パイプライン転送は、同じ実行パイプライン内で実行する命令間で行われることがあり、より具体的には「パイプライン内転送(intra-pipeline forwarding)」と呼ばれ得るプロセスである。加えて、パイプライン転送は、別々の実行パイプライン中で実行する命令間で起こることがあり、このプロセスは、従来「パイプライン間転送(inter-pipeline forwarding)」と呼ばれるものである。CPUは、2つの別々の実行パイプライン間のパイプライン間転送よりも効率的に、かつより多くのアクセスポイントから、単一の実行パイプライン内でパイプライン内転送を行うように構成され得る。パイプライン間転送の性能は、より多くのアクセスポイントを有効に追加するようにCPUの転送回路を拡張することによって向上し得るが、CPUアーキテクチャの複雑さが増す形で、トレードオフが存在し得る。
【発明の概要】
【課題を解決するための手段】
【０００５】
本開示の実施形態は、レジスタ関連優先度に基づく、実行パイプラインへの命令の発行を提供する。関係する命令処理回路、プロセッサシステム、方法、およびコンピュータ可読媒体もまた開示される。この点について、一実施形態では、コンピュータ命令を処理するための方法が提供される。方法は、命令ストリーム中で命令を検出するステップを含む。命令が少なくとも1つのソースレジスタを指定すると判断すると、命令のための少なくとも1つの実行パイプライン優先度が、パイプライン発行テーブル中の少なくとも1つのソースレジスタに関連付けられた少なくとも1つのパイプラインインジケータに基づいて決定され、命令が、少なくとも1つの実行パイプライン優先度に基づいて、実行パイプラインに発行される。方法は、命令が少なくとも1つのターゲットレジスタを指定すると判断すると、命令が発行される先の実行パイプラインに基づいて、パイプライン発行テーブル中の少なくとも1つのターゲットレジスタに関連付けられた少なくとも1つのパイプラインインジケータを更新するステップをさらに含む。このようにして、命令の最適な転送を可能にし、したがって、プロセッサの性能を向上させることができる。
【０００６】
別の実施形態では、命令処理回路を備えるプロセッサが提供される。命令処理回路は、命令ストリーム中で命令を検出するように構成された命令検出回路と、パイプライン発行テーブルとを備える。命令処理回路は、ソースレジスタ検出回路とターゲットレジスタ検出回路とをさらに備える。ソースレジスタ検出回路は、命令が少なくとも1つのソースレジスタを指定するかどうかを判断するように構成される。命令が少なくとも1つのソースレジスタを指定すると判断することに応答して、ソースレジスタ検出回路は、パイプライン発行テーブル中の少なくとも1つのソースレジスタに関連付けられた少なくとも1つのパイプラインインジケータに基づいて、命令のための少なくとも1つの実行パイプライン優先度を決定するように構成される。ターゲットレジスタ検出回路は、命令が少なくとも1つのターゲットレジスタを指定するかどうかを判断するように構成される。命令が少なくとも1つのターゲットレジスタを指定すると判断することに応答して、ターゲットレジスタ検出回路は、命令が発行される先の実行パイプラインに基づいて、パイプライン発行テーブル中の少なくとも1つのターゲットレジスタに関連付けられた少なくとも1つのパイプラインインジケータを更新するように構成される。プロセッサは、ソースレジスタ検出回路が、命令が少なくとも1つのソースレジスタを指定すると判断することに応答して、少なくとも1つの実行パイプライン優先度に基づいて、命令を実行パイプラインに発行するように構成される。
【０００７】
別の実施形態では、命令処理回路を備えるプロセッサが提供される。命令処理回路は、命令ストリーム中で命令を検出するための手段を備える。命令処理回路は、命令が少なくとも1つのソースレジスタを指定すると判断することに応答して、パイプライン発行テーブル中の少なくとも1つのソースレジスタに関連付けられた少なくとも1つのパイプラインインジケータに基づいて、命令のための少なくとも1つの実行パイプライン優先度を決定するための手段をさらに備える。命令処理回路はまた、命令が少なくとも1つのソースレジスタを指定すると判断することに応答して、少なくとも1つの実行パイプライン優先度に基づいて、命令を実行パイプラインに発行するための手段を備える。命令処理回路は、命令が少なくとも1つのターゲットレジスタを指定すると判断することに応答して、命令が発行される先の実行パイプラインに基づいて、パイプライン発行テーブル中の少なくとも1つのターゲットレジスタに関連付けられた少なくとも1つのパイプラインインジケータを更新するための手段をさらに備える。
【０００８】
別の実施形態では、命令ストリーム中で命令を検出するための方法をプロセッサに実施させるためのコンピュータ実行可能命令を記憶した、非一時的コンピュータ可読媒体が提供される。コンピュータ実行可能命令によって実施される方法はまた、命令が少なくとも1つのソースレジスタを指定すると判断すると、パイプライン発行テーブル中の少なくとも1つのソースレジスタに関連付けられた少なくとも1つのパイプラインインジケータに基づいて、命令のための少なくとも1つの実行パイプライン優先度を決定するステップと、少なくとも1つの実行パイプライン優先度に基づいて、命令を実行パイプラインに発行するステップとを含む。コンピュータ実行可能命令によって実施される方法は、命令が少なくとも1つのターゲットレジスタを指定すると判断すると、命令が発行される先の実行パイプラインに基づいて、パイプライン発行テーブル中の少なくとも1つのターゲットレジスタに関連付けられた少なくとも1つのパイプラインインジケータを更新するステップをさらに含む。
【図面の簡単な説明】
【０００９】
【図１】レジスタ関連優先度に基づいて、命令を1つまたは複数の実行パイプラインに発行するように構成された例示的な命令処理回路を含む、1つまたは複数の実行パイプラインに入れられるべきコンピュータ命令を取り出し、処理するための、プロセッサベースシステム中に設けられた例示的な構成要素のブロック図である。
【図２】最初の命令を実行パイプラインに発行すること、実行パイプラインに基づいて、パイプライン発行テーブル中のパイプラインインジケータを更新すること、および、パイプラインインジケータに基づいて、後続の命令を実行パイプラインに優先的に発行することを含む、プロセッサベースシステムにおける例示的なシーケンスを示す図である。
【図３】1つまたは複数のソースレジスタに基づいて、命令のための少なくとも1つの実行パイプライン優先度を決定すること、少なくとも1つの実行パイプライン優先度に基づいて、命令を実行パイプラインに発行すること、および、命令が発行される先の実行パイプラインに基づいて、1つまたは複数のターゲットレジスタのための1つまたは複数のパイプラインインジケータを更新することを行うための、命令処理回路の例示的なプロセスを示すフローチャートである。
【図４Ａ】レジスタ関連優先度に基づいて、命令を実行パイプラインに発行するための、命令処理回路のより詳細な例示的なプロセスを示すフローチャートである。
【図４Ｂ】レジスタ関連優先度に基づいて、命令を実行パイプラインに発行するための、命令処理回路のより詳細な例示的なプロセスを示すフローチャートである。
【図５】フラグベースのパイプライン発行テーブルに記憶されたレジスタ関連優先度に基づいて、命令を実行パイプラインに発行することを含む、例示的なシーケンスを示す図である。
【図６】識別情報ベースのパイプライン発行テーブルに記憶されたレジスタ関連優先度に基づいて、命令を実行パイプラインに発行することを含む、例示的なシーケンスを示す図である。
【図７】レジスタ関連優先度に基づいて、命令を実行パイプラインに発行するように構成された、図1の命令処理回路を含む、命令処理回路を含み得る、例示的なプロセッサベースシステムのブロック図である。
【発明を実施するための形態】
【００１０】
ここで図面を参照して、本開示のいくつかの例示的な実施形態を説明する。「例示的な」という言葉は、「例、事例、または例示として機能すること」を意味するように本明細書で使用される。「例示的な」として本明細書で説明する任意の実施形態は、必ずしも他の実施形態よりも好ましいか、または有利であると解釈されるべきではない。
【００１１】
本開示の実施形態は、レジスタ関連優先度に基づく、実行パイプラインへの命令の発行を提供する。関係する命令処理回路、プロセッサシステム、方法、およびコンピュータ可読媒体もまた開示される。この点について、一実施形態では、コンピュータ命令を処理するための方法が提供される。方法は、命令ストリーム中で命令を検出することを含む。命令が少なくとも1つのソースレジスタを指定すると判断すると、命令のための少なくとも1つの実行パイプライン優先度が、パイプライン発行テーブル中の少なくとも1つのソースレジスタに関連付けられた少なくとも1つのパイプラインインジケータに基づいて決定され、命令が、少なくとも1つの実行パイプライン優先度に基づいて、実行パイプラインに発行される。方法は、命令が少なくとも1つのターゲットレジスタを指定すると判断すると、命令が発行される先の実行パイプラインに基づいて、パイプライン発行テーブル中の少なくとも1つのターゲットレジスタに関連付けられた少なくとも1つのパイプラインインジケータを更新することをさらに含む。このようにして、命令の最適な転送を可能にし、したがって、プロセッサの性能を向上させることができる。
【００１２】
この点について、図1は、レジスタ関連優先度に基づいて、命令を実行パイプライン12(0〜Q)(本明細書でそれぞれP0〜PQと呼ぶ)に発行するための、例示的なプロセッサベースシステム10のブロック図である。以下でより詳細に説明するように、プロセッサベースシステム10は、命令のための実行パイプライン優先度を決定するように構成される、命令処理回路14を設ける。いくつかの実施形態では、命令処理回路は、命令検出回路15と、ソースレジスタ検出回路16と、ターゲットレジスタ検出回路17とを含み得る。命令検出回路14によって処理された命令は、プロセッサベースシステム10によってアクセス可能なローカルの高速ストレージを提供する、レジスタ18(0〜X)(本明細書でそれぞれR0〜RXと呼ぶ)からデータを読み取り、かつ/またはレジスタ18(0〜X)へデータを書き込むための動作を示すことができる。本明細書で説明するように、「命令」は、指定された1つまたは複数のタスクを実行するようにコンピュータプロセッサに指示する、命令セットアーキテクチャによって定義されたビットの組合せを指し得る。例示的な命令セットアーキテクチャには、限定はしないが、ARMアーキテクチャ、Thumbアーキテクチャ、およびA64アーキテクチャが含まれる。
【００１３】
引き続き図1を参照すると、命令は、命令ストリーム19によって表された連続フローで、プロセッサベースシステム10において処理される。プロセッサベースシステム10が動作中であり、命令を実行中である間、命令ストリーム19は、連続的に進むことができる。この図示の例では、命令ストリーム19は、命令メモリ20から開始し、命令メモリ20は、コンピュータ実行可能プログラム中の命令のための永続ストレージを提供する。命令フェッチ回路22は、命令メモリ20から、および/または場合によっては命令キャッシュ24から命令を読み取り、レジスタ18(0〜X)のうちの1つに記憶され得るプログラムカウンタを増分することができる。
【００１４】
命令が命令フェッチ回路22によってフェッチされると、命令は命令解読回路26へ進み、命令解読回路26は、命令をプロセッサ固有のマイクロ命令に変換する。本実施形態では、命令解読回路26は、解読するために同時に複数の命令28(0〜N)のグループを保持する。命令がフェッチおよび解読された後、命令は、場合によっては命令キュー30(すなわち、命令を記憶するためのバッファ)に発行され、または、命令は、実行のために実行パイプライン12(0〜Q)のうちの1つに発行され得る。いくつかの実施形態では、特定の実行パイプライン12(0〜Q)は、その特定の実行パイプライン内で実行され得る動作のタイプを限定し得る。たとえば、パイプラインP0は、レジスタ18(0〜X)へのリードアクセスを可能にしないことがあり、したがって、レジスタR0を読み取るための動作を示す命令は、実行パイプラインP1〜PQのうちの1つにのみ発行され得る。
【００１５】
引き続き図1を参照すると、命令処理回路14は、少なくとも1つのソースレジスタのための少なくとも1つのパイプラインインジケータに基づいて、命令のための少なくとも1つの実行パイプライン優先度を決定するように構成され、少なくとも1つのターゲットレジスタが指定される場合、命令が発行される先の実行パイプライン12(0〜Q)のうちの1つに基づいて、少なくとも1つのターゲットレジスタのためのパイプラインインジケータを更新するように構成される。命令処理回路14は、任意のタイプのデバイスまたは回路でもよく、プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明する機能を実行するように設計されたそれらの任意の組合せで実装または実行され得る。いくつかの実施形態では、命令処理回路14は、命令フェッチ回路22、命令解読回路26、および/または任意の命令キュー30に組み込まれる。命令処理回路14はまた、1つまたは複数のパイプラインインジケータを記憶するように構成されたパイプライン発行テーブル32を採用してもよく、パイプラインインジケータは、レジスタ18(0〜X)の各々を、レジスタ18(0〜X)の各々が直近に書き込まれた実行パイプライン12(0〜Q)のうちの1つに関連付ける。パイプライン発行テーブル32は、複数の行を含み、各行は、レジスタ18(0〜X)のうちの1つに対応し、少なくとも1つのパイプラインインジケータを含む。本明細書で説明するいくつかの実施形態によれば、少なくとも1つのパイプラインインジケータは、実行パイプライン12(0〜Q)のうちのそれぞれの1つに対応するブールフラグであり、いくつかの実施形態では、少なくとも1つのパイプラインインジケータは、実行パイプライン12(0〜Q)のうちの1つの識別情報を記憶するデータ値である。
【００１６】
図1のプロセッサベースシステム10における例示的な処理シーケンスの例示を提供するために、図2を提供する。図2は、図1の命令処理回路14が、検出された命令ストリーム34を処理することを示す。処理は、レジスタ関連優先度に基づいて、命令を実行パイプライン12(0〜Q)のうちの1つに発行することを含む。検出された命令ストリーム34は、命令ストリーム19からフェッチされ、図1の命令処理回路14によって検出された、一連の命令を表す。
【００１７】
命令36(この例では、WRITE命令)が、検出された命令ストリーム34から最初にフェッチされる。命令36は、図1のレジスタ18(0〜X)のうちの1つ(この例では、ソースレジスタR2)の内容を、同じくレジスタ18(0〜X)のうちの1つであるターゲットレジスタR1に書き込むための動作を示す。パイプライン発行矢印38によって示すように、命令36は、この例ではパイプラインP1と呼ぶ、実行パイプライン12(0〜Q)のうちの1つに発行される。
【００１８】
命令36が実行パイプラインP1に発行された後、ターゲットレジスタR1と実行パイプラインP1とに対応するパイプラインインジケータ40が、命令処理回路14によって(矢印42によって示すように)パイプライン発行テーブル32中で更新される。パイプライン発行テーブル32は、書込みのためにレジスタ18(0〜X)のうちの所与の1つをターゲットにするための直近の命令が発行された先の、実行パイプライン12(0〜Q)のうちの1つを追跡するために使用される。この例では、パイプライン発行テーブル32は、レジスタ18(0〜X)のうちの各々に対応する行を含み、各行は、各々が実行パイプライン12(0〜Q)のうちの1つに対応する複数のパイプラインインジケータ(たとえば、パイプラインインジケータ40)を含む。したがって、パイプライン発行テーブル32中の各パイプラインインジケータは、レジスタ18(0〜X)のうちの1つと、実行パイプライン12(0〜Q)のうちの1つとに厳密に関連付けられる。図2に示す実施形態では、ただ1つのパイプラインインジケータが、所与の時間にレジスタ18(0〜X)のうちの所与の1つに対して設定され得る。ただし、レジスタ18(0〜X)のうちの2つ以上が、それぞれ、実行パイプライン12(0〜Q)のうちの同じ1つのためのパイプラインインジケータセットを有してもよい。したがって、この例では、ターゲットレジスタR1に関連付けられた行44中のすべてのパイプラインインジケータをクリアすること、および、書込みのためのターゲットレジスタR1への直近の命令である命令36が、実行パイプラインP1に発行されたことを示すように、パイプラインインジケータ40を設定することによって、パイプラインインジケータ40が更新される。
【００１９】
命令処理回路14は、次に、検出された命令ストリーム34中で命令46(この例では、別のWRITE命令)を検出する。命令46は、レジスタR1をソースレジスタとして指定し、ソースレジスタR1の内容をターゲットレジスタR0(レジスタ18(0〜X)のうちの1つ)に書き込むための動作を示す。命令46は、検出された命令ストリーム34中で命令36の直後にフェッチされてもよく、または、命令36および命令46は、他の介在する命令によって、検出された命令ストリーム34中で分離されてもよいことを理解されたい。
【００２０】
命令46が検出された後、パイプライン発行テーブル32が、命令処理回路14によって(矢印42によって示すように)アクセスされて、パイプラインインジケータがソースレジスタR1のための行44中で設定されているかどうかが判断される。この例では、パイプライン発行テーブル32中でパイプラインインジケータ40が設定されており、書込みのためにソースレジスタR1をターゲットにするための直近の命令(ここでは、命令36)が実行パイプラインP1に発行されたことを示す。パイプラインインジケータ40に基づいて、命令処理回路14は、命令46が実行パイプラインP1に優先的に発行されるべきであることを示す、実行パイプライン優先度48を決定する。いくつかの実施形態では、命令46は、命令46のための複数のソースレジスタに対応する複数のパイプラインインジケータに基づいて、複数の実行パイプライン優先度48に関連付けられ得ることを理解されたい。いくつかの実施形態では、命令46が、実行パイプライン優先度48によって示すように、実際に実行パイプラインP1に発行される保証がなくてもよいことをさらに理解されたい。むしろ、実行パイプライン優先度48は、実行パイプライン12(0〜Q)のうちのどの1つに命令46が発行されることになるかを判断する際に、いくつかのファクタのうちの1つとして考慮され得る。
【００２１】
命令46が、(実行パイプラインP1であるか、実行パイプライン12(0〜Q)のうちの別の1つであるかにかかわらず)実行パイプライン12(0〜Q)のうちの1つに発行されると、命令36に関して上記で説明した例示的なプロセスが、命令46に対して繰り返され得る。この例では、命令46は、パイプライン発行矢印50によって示すように、優先実行パイプラインP1に発行される。ターゲットレジスタR0と実行パイプラインP1とに対応するパイプラインインジケータ52が、パイプライン発行テーブル32中で更新される。レジスタR0をソースレジスタとして指定する、検出された命令ストリーム34中の後続の命令54(この例では、別のWRITE命令)について、命令処理回路14は、パイプライン発行テーブル32にアクセスして、パイプラインインジケータがソースレジスタR0のための行56中で設定されているかどうかを判断することができる。パイプラインインジケータ52に基づいて、命令処理回路14は、命令54の発行のための実行パイプラインP1のための優先度を示す、実行パイプライン優先度58を決定する。
【００２２】
レジスタ関連優先度に基づいて、命令を実行パイプラインに発行するプロセスをさらに説明するために、実行パイプライン優先度を決定し、パイプラインインジケータを更新するように構成された、命令処理回路のための例示的な一般化されたプロセスを、図1および図2をさらに参照しながら図3に示す。この例では、図1の命令処理回路14(図示せず)が、ターゲットレジスタR0への書込み動作を示す図2の命令46を検出するとき、プロセスが開始する(ブロック60)。いくつかの実施形態では、命令46を検出することは、図1の命令検出回路15などの命令検出回路によって遂行され得る。
【００２３】
命令処理回路14が、次に、命令46が少なくとも1つのソースレジスタを指定するかどうかを判断する(ブロック62)。いくつかの実施形態は、この判断が、図1のソースレジスタ検出回路16など、命令処理回路14のソースレジスタ検出回路によって行われることを規定し得る。命令46が少なくとも1つのソースレジスタを指定しない場合、命令46が、デフォルトの実行パイプライン発行論理に基づいて、実行パイプライン(たとえば、実行パイプラインP0〜PQのうちの1つ)に発行される(ブロック64)。命令46が少なくとも1つのソースレジスタを指定する場合、図2に記載のように、命令処理回路14が、パイプライン発行テーブル32中の少なくとも1つのソースレジスタのためのパイプラインインジケータに基づいて、少なくとも1つの実行パイプライン優先度48を決定する(ブロック66)。図2に示した例では、実行パイプライン優先度48は、パイプライン発行テーブル32中のソースレジスタR1のためのパイプラインインジケータ40に基づく。次いで、命令46が、少なくとも1つの実行パイプライン優先度48に基づいて、実行パイプライン(図2では、実行パイプラインP1)に発行される(ブロック68)。
【００２４】
命令46が実行パイプラインに発行されると、ブロック64に記載のように、デフォルトの実行パイプライン発行論理に基づくか、ブロック68に記載のように、少なくとも1つの実行パイプライン優先度48に基づくかにかかわらず、命令処理回路14が、命令46が少なくとも1つのターゲットレジスタを指定するかどうかを判断する(ブロック70)。いくつかの実施形態では、この判断は、図1のターゲットレジスタ検出回路17など、命令処理回路14のターゲットレジスタ検出回路によって行われ得る。命令46が少なくとも1つのターゲットレジスタを指定しない場合、処理が図3のブロック60に戻る。命令46が少なくとも1つのターゲットレジスタを指定する場合、命令処理回路14が、命令46が発行される先の実行パイプラインに基づいて、パイプライン発行テーブル32中で少なくとも1つのターゲットレジスタのための少なくとも1つのパイプラインインジケータを更新する(ブロック72)。図2では、命令46が実行パイプラインP1に発行されることに基づいて、ターゲットレジスタR0のためのパイプラインインジケータ52が、パイプライン発行テーブル32中で更新される。次いで、処理が図3のブロック60で再開する。
【００２５】
図4A〜図4Bは、命令ストリーム(たとえば、図1の命令ストリーム19)中で命令を検出し、レジスタ関連優先度に基づいて、命令を実行パイプライン(図1の実行パイプライン12(0〜Q)など)に発行するための、命令処理回路(たとえば、図1のプロセッサベースシステム10における命令処理回路14)のより詳細な例示的なプロセスを示す。図4Aは、検出された命令が少なくとも1つのソースレジスタを指定するかどうかを判断し、命令のための少なくとも1つの実行パイプライン優先度を決定するためのプロセスを詳述する。図4Bは、パイプライン発行テーブル(たとえば、図1のパイプライン発行テーブル32)中でパイプラインインジケータ(図2のパイプラインインジケータ40、52など)を更新するための動作を示す。
【００２６】
この例のプロセスは、図4Aにおいて、命令処理回路が、処理されるべきさらなる命令が残っているかどうかを検出することから開始する(図4Aのブロック74)。いくつかの実施形態では、この検出は、命令フェッチ回路および/または命令解読回路(それぞれ、図1の命令フェッチ回路22および/または命令解読回路26など)において、未処理の命令の存在を検出することによって遂行される。残っている命令が検出されない場合、命令処理回路が、パイプライン発行テーブル(たとえば、図1のパイプライン発行テーブル32)に記憶された任意のパイプラインインジケータの検証を実行する(図4Aのブロック75)。検証は、対応するレジスタのための実行パイプライン優先度を決定するために、記憶されたパイプラインインジケータが有効のままであることを検証すること、および、それに応じて(たとえば、パイプラインインジケータのための有効性ビットを更新することによって)パイプライン発行テーブルを更新することを含み得る。次いで、処理が図4Aのブロック74に戻る。
【００２７】
残っている命令が検出される場合、命令処理回路が、検出された命令が、少なくとも1つのソースレジスタ(図1のレジスタ18(0〜X)のうちの1つなど)を指定する命令であるかどうかを判断する(図4Aのブロック76)。そのような命令の検出は、命令処理回路が、その命令のための少なくとも1つの実行パイプライン優先度を決定することが可能であり得ることを示す。検出された命令が、少なくとも1つのソースレジスタを指定する命令ではない場合、検出された命令が、デフォルトの実行パイプライン発行論理に基づいて、実行パイプラインに発行され(図4Aのブロック78)、処理が図4Bのブロック88へ進む。
【００２８】
図4Aのブロック76の決定ポイントに戻ると、検出された命令が、少なくとも1つのソースレジスタを指定する命令である場合、命令処理回路が、次に、指定されたソースレジスタに基づいて、命令が、そのための実行パイプライン優先度が決定されるべき命令であるかどうかを判断する(図4Aのブロック80)。いくつかの実施形態では、少なくとも1つのソースレジスタを指定する命令のサブセットのみが、実行パイプライン優先度を決定するために解析され得る。命令が、そのための実行パイプライン優先度が決定されるべき命令ではない場合、命令が、デフォルトの実行パイプライン発行論理に基づいて、実行パイプラインに発行され(図4Aのブロック78)、処理が図4Bのブロック88へ進む。
【００２９】
実行パイプライン優先度がその命令のために決定されるべきである場合、パイプライン発行テーブルが命令処理回路によってアクセスされて、少なくとも1つのソースレジスタに関連付けられたいずれかのパイプラインインジケータが設定されているかどうかが判断される(図4Aのブロック82)。少なくとも1つのソースレジスタに関連付けられたパイプラインインジケータが設定されていない場合、命令が、デフォルトの実行パイプライン発行論理に基づいて、実行パイプラインに発行され(図4Aのブロック78)、処理が図4Bのブロック88へ進む。少なくとも1つのソースレジスタに関連付けられた少なくとも1つのパイプラインインジケータが設定されている場合、命令処理回路が、パイプライン発行テーブルに設定された少なくとも1つのパイプラインインジケータに基づいて、命令のための少なくとも1つの実行パイプライン優先度を決定する(図4Aのブロック84)。図4Aのブロック84で決定された少なくとも1つの実行パイプライン優先度に基づいて、次いで、命令が実行パイプラインに発行され(図4Aのブロック86)、処理が図4Bのブロック88で続く。
【００３０】
次に図4Bを参照すると、命令処理回路が、次に、命令が少なくとも1つのターゲットレジスタを指定するかどうかを判断する(図4Bのブロック88)。そうでない場合、命令の通常の処理が図4Aのブロック90で続く。それ以外は、命令処理回路が、命令のターゲットレジスタに基づいて、パイプライン発行テーブルが更新されるべきであるかどうかを判断する(図4Bのブロック92)。いくつかの実施形態では、パイプライン発行テーブルは、命令のサブセットについてのみ更新され得る。命令が、そのためにパイプライン発行テーブルが更新されるべきである命令ではない場合、命令の通常の処理が続く(図4Aのブロック90)。
【００３１】
命令が、そのためにパイプライン発行テーブルが更新されるべきである命令である場合、命令処理回路が、次に、命令がすべてのパイプラインについて等しい転送リソースを有するかどうかを判断する(図4Bのブロック94)。いくつかの実施形態では、いくつかの命令の結果は、それらの命令および後続の命令が発行される先の実行パイプラインにかかわらず、後続の命令へ転送するために等しく利用可能であり得る。したがって、そのような命令は、すべてのパイプラインについて等しい転送リソースを有すると言うことができる。検出された命令の転送リソースが制限されている場合(すなわち、検出された命令が、すべてのパイプラインについて等しい転送リソースを有するのではない場合)、プロセッサベースシステムの性能は、検出された命令のターゲットレジスタをソースレジスタとして指定する後続の命令を、検出された命令と同じ実行パイプラインに優先的に発行することによって、向上し得る。したがって、命令処理回路が、検出された命令が発行された先の実行パイプラインに基づいて、パイプライン発行テーブル中の少なくとも1つのターゲットレジスタに関連付けられたパイプラインインジケータを設定する(図4Bのブロック96)。次いで、処理が図4Aのブロック90で再開する。
【００３２】
ここで、図4Bのブロック94の決定ポイントに戻ると、命令が、すべてのパイプラインについて等しい転送リソースを有する場合、後続の命令を、検出された命令と同じ実行パイプラインに優先的に発行することで、性能の利点は得られず、実際には、命令を実行パイプラインに発行する際の柔軟性が制約され得る。したがって、そのシナリオでは、命令処理回路が、パイプライン発行テーブル中の検出された命令のターゲットレジスタに関連付けられたすべてのパイプラインインジケータをクリアして、すべてのパイプラインが等しい優先度を有することを示す(図4Bのブロック98)。次いで、処理が図4Aのブロック90で再開する。
【００３３】
図1に関して上述したように、パイプライン発行テーブル32は、複数の行を含み、各行は、レジスタ18(0〜X)のうちの1つに対応し、少なくとも1つのパイプラインインジケータを含む。本明細書で説明するいくつかの実施形態では、各パイプラインインジケータは、実行パイプライン12(0〜Q)のうちの1つに対応するブールフラグである。この点について、図5は、フラグベースのパイプライン発行テーブル100に記憶されたレジスタ関連優先度に基づいて、命令を実行パイプライン12(0〜Q)のうちの1つに発行することを含む、例示的なシーケンスを示す。図5では、図1の命令処理回路14は、命令ストリーム19からフェッチされ、図1の命令処理回路14によって検出された一連の命令を表す、検出された命令ストリーム102を処理する。最初に検出された命令は、ARMアーキテクチャのADD命令104である。ADD命令104は、図1に示すレジスタ18(0〜X)のうちの2つ(この例では、レジスタR2およびR3)の内容を合計し、結果を、同じくレジスタ18(0〜X)のうちの1つであるターゲットレジスタR1に書き込むための動作を示す。パイプライン発行矢印106によって示すように、ADD命令104は、この例ではパイプラインP1と呼ぶ、実行パイプライン12(0〜Q)のうちの1つに発行される。
【００３４】
ADD命令104が実行パイプラインP1に発行された後、ターゲットレジスタR1と実行パイプラインP1とに対応するパイプラインインジケータ108が、命令処理回路14によって(矢印110によって示すように)フラグベースのパイプライン発行テーブル100中で更新される。フラグベースのパイプライン発行テーブル100中の各パイプラインインジケータは、レジスタ18(0〜X)のうちの1つと、実行パイプライン12(0〜Q)のうちの1つとに厳密に関連付けられたブールフラグである。図5に示す例では、ただ1つのパイプラインインジケータが、所与の時間にレジスタ18(0〜X)のうちの所与の1つに対して設定され得るが、レジスタ18(0〜X)のうちの2つ以上が、それぞれ、実行パイプライン12(0〜Q)のうちの同じ1つのためのパイプラインインジケータセットを有してもよい。したがって、ターゲットレジスタR1に関連付けられた行112中のすべてのパイプラインインジケータをクリアすること、および、書込みのためのターゲットレジスタR1への直近の命令であるADD命令104が、実行パイプラインP1に発行されたことを示すように、パイプラインインジケータ108を設定することによって、パイプラインインジケータ108が更新される。
【００３５】
命令処理回路14は、次に、検出された命令ストリーム102中でARMアーキテクチャのMOV命令114を検出する。MOV命令114は、レジスタR1をソースレジスタとして指定し、ソースレジスタR1の内容をターゲットレジスタR0(レジスタ18(0〜X)のうちの1つ)に書き込むための動作を示す。いくつかの実施形態では、MOV命令114は、検出された命令ストリーム102中でADD命令104の直後にフェッチされ得るが、いくつかの実施形態によれば、ADD命令104およびMOV命令114は、他の介在する命令によって、検出された命令ストリーム102中で分離され得る。
【００３６】
MOV命令114が検出された後、フラグベースのパイプライン発行テーブル100が、命令処理回路14によって(矢印110によって示すように)アクセスされて、パイプラインインジケータがソースレジスタR1のための行112中で設定されているかどうかが判断される。この例では、フラグベースのパイプライン発行テーブル100中のパイプラインインジケータ108が、書込みのためにソースレジスタR1をターゲットにするための直近の命令(ここでは、ADD命令104)が実行パイプラインP1に発行されたことを示す。パイプラインインジケータ108に基づいて、命令処理回路14は、MOV命令114が実行パイプラインP1に優先的に発行されるべきであることを示す、パイプラインP1のための実行パイプライン優先度116を決定する。
【００３７】
上述したように、いくつかの実施形態では、MOV命令114が、実行パイプライン優先度116によって示された実行パイプライン12(0〜Q)のうちの特定の1つに実際に発行される保証がなくてもよく、その理由は、命令が発行される先の実行パイプライン12(0〜Q)のうちの最も適切な1つを決定する際に、他のファクタを考慮に入れることができるからである。この例では、MOV命令114は、パイプライン発行矢印118によって示すように、優先実行パイプラインP1ではなく、実行パイプラインP2に発行される。MOV命令114が実行パイプラインP2に発行されると、次いで、ターゲットレジスタR0とパイプラインP2とに対応するパイプラインインジケータ120が、フラグベースのパイプライン発行テーブル100中で更新される。
【００３８】
レジスタR0をソースレジスタとして指定する、検出された命令ストリーム102中の後続のMOV命令122について、命令処理回路14は、フラグベースのパイプライン発行テーブル100にアクセスして、パイプラインインジケータがソースレジスタR0のための行124中で設定されているかどうかを判断することができる。パイプラインインジケータ120に基づいて、命令処理回路14は、MOV命令122の発行のためのパイプラインP2のための優先度を示す、実行パイプライン優先度126を決定する。MOV命令122のターゲットレジスタに基づく、MOV命令122の発行、およびフラグベースのパイプライン発行テーブル100の更新は、次いで、ADD命令104およびMOV命令114に関して上記で説明したように進む。
【００３９】
いくつかの実施形態は、図1のパイプライン発行テーブル32に記憶された各パイプラインインジケータが、実行パイプライン12(0〜Q)のうちの1つの識別情報を記憶するデータ値を含むことを規定し得る。この点について、図6は、識別情報ベースのパイプライン発行テーブル128に記憶されたレジスタ関連優先度に基づいて、命令を実行パイプライン12(0〜Q)のうちの1つに発行することを含む、例示的なシーケンスを示す。図6では、図1の命令処理回路14は、命令ストリーム19からフェッチされ、図1の命令処理回路14によって検出された一連の命令を表す、検出された命令ストリーム130を処理する。最初に検出された命令は、ARMアーキテクチャのMOV命令132である。MOV命令132は、図1に示すレジスタ18(0〜X)のうちの1つ(この例では、ソースレジスタRX)の内容を、レジスタ18(0〜X)のうちの別の1つ(ここでは、ターゲットレジスタR0)にコピーするための動作を示す。この例では、ソースレジスタRXは、識別情報ベースのパイプライン発行テーブル128に設定されたパイプラインインジケータを有しておらず、したがって、いかなる特定の実行パイプライン12(0〜Q)にも関連付けられていない。したがって、パイプライン発行矢印134によって示すように、MOV命令132は、デフォルトの実行パイプライン発行論理に基づいて、実行パイプライン12(0〜Q)のうちの1つ(この例では、パイプラインP0)に発行される。
【００４０】
MOV命令132がパイプラインP0に発行された後、識別情報ベースのパイプライン発行テーブル128が、命令処理回路14によって(矢印136によって示すように)更新されて、ターゲットレジスタR0と実行パイプラインP0とに対応するパイプラインインジケータ138が設定される。識別情報ベースのパイプライン発行テーブル128中の各パイプラインインジケータは、レジスタ18(0〜X)のうちの1つに関連付けられ、実行パイプライン12(0〜Q)のうちの1つを識別する、データ値である。この例では、書込みのためのターゲットレジスタR0への直近の命令であるMOV命令132が、実行パイプラインP0に発行されたことを示すように、実行パイプラインP0の識別情報を記憶することによって、パイプラインインジケータ138が更新される。いくつかの実施形態では、パイプラインインジケータを設定することはまた、対応するレジスタのための実行パイプライン優先度を決定する際に使用するために、パイプラインインジケータが有効であるかどうかを示すように、各パイプラインインジケータのための有効性ビットを設定することを含み得る。したがって、この例では、ターゲットレジスタR0のための実行パイプライン優先度を決定する際に使用するために、パイプラインインジケータ138が有効であることを示すように、パイプラインインジケータ138に対応する有効性ビット139が、命令処理回路14によって設定される。
【００４１】
命令処理回路14は、次に、検出された命令ストリーム130中で、後続のARMアーキテクチャのMOV命令140を検出する。MOV命令140は、ソースレジスタRXを、レジスタ18(0〜X)のうちの別の1つ(ここでは、ターゲットレジスタR1)にコピーするための動作を示す。いくつかの実施形態では、MOV命令140は、検出された命令ストリーム130中でMOV命令132の直後にフェッチされ得るが、いくつかの実施形態によれば、MOV命令132およびMOV命令140は、他の介在する命令によって、検出された命令ストリーム130中で分離され得る。前述のように、ソースレジスタRXは、識別情報ベースのパイプライン発行テーブル128に設定されたパイプラインインジケータを有しておらず、したがって、パイプライン発行矢印142によって示すように、MOV命令140は、デフォルトの実行パイプライン発行論理に基づいて、実行パイプライン12(0〜Q)のうちの1つ(ここでは、パイプラインP1)に発行される。次いで、識別情報ベースのパイプライン発行テーブル128が更新されて、ターゲットレジスタR1と実行パイプラインP1とに対応するパイプラインインジケータ144が設定される。この点について、パイプラインインジケータ144は、書込みのためのターゲットレジスタR1への直近の命令であるMOV命令140が、実行パイプラインP1に発行されたことを示すように、実行パイプラインP1の識別情報を記憶する。パイプラインインジケータ144に対応する有効性ビット145もまた、ターゲットレジスタR1のための実行パイプライン優先度を決定する際に使用するために、パイプラインインジケータ144が有効であることを示すように、設定される。
【００４２】
命令処理回路14は、次に、検出された命令ストリーム130中でARMアーキテクチャのADD命令146を検出する。ADD命令146は、ソースレジスタR0およびR1の内容を合計し、結果をターゲットレジスタR2に記憶するための動作を示す。いくつかの実施形態では、ADD命令146は、検出された命令ストリーム130中でMOV命令140の直後にフェッチされ得るが、いくつかの実施形態によれば、MOV命令140およびADD命令146は、他の介在する命令によって、検出された命令ストリーム130中で分離され得る。
【００４３】
ADD命令146が検出された後、識別情報ベースのパイプライン発行テーブル128が、命令処理回路14によって(矢印136によって示すように)アクセスされて、パイプラインインジケータが、ソースレジスタR0に対応する行148とソースレジスタR1に対応する行150のいずれかまたは両方に設定されているかどうかが判断される。この例では、識別情報ベースのパイプライン発行テーブル128中のパイプラインインジケータ138が、書込みのためにソースレジスタR0をターゲットにするための直近の命令(ここでは、MOV命令132)が実行パイプラインP0に発行されたことを示す。加えて、識別情報ベースのパイプライン発行テーブル128中のパイプラインインジケータ144が、書込みのためにソースレジスタR1をターゲットにするための直近の命令(この例では、MOV命令140)が実行パイプラインP1に発行されたことを示す。パイプラインインジケータ138およびパイプラインインジケータ144に基づいて、命令処理回路14は、ADD命令146が実行パイプラインP0または実行パイプラインP1のいずれかに優先的に発行されるべきであることを示す、2つの実行パイプライン優先度152を決定する。
【００４４】
上述したように、いくつかの実施形態では、ADD命令146が、実行パイプライン優先度152によって示された実行パイプライン12(0〜Q)のうちの特定のもののいずれかに発行される保証がなくてもよく、その理由は、命令のための実行パイプライン12(0〜Q)のうちの最も適切な1つを決定する際に、他のファクタを考慮に入れることができるからである。同様に、いくつかの実施形態は、2つ以上の実行パイプライン優先度が命令処理回路によって決定されるとき、複数の優先実行パイプラインの中から選択するために、追加の実行パイプライン発行論理を適用してもよい。この例では、ADD命令146は、パイプライン発行矢印154によって示すように、優先実行パイプラインP1に発行される。次いで、ターゲットレジスタR2と実行パイプラインP1とに対応する、パイプラインインジケータ156および有効性ビット157が、識別情報ベースのパイプライン発行テーブル128中で更新される。
【００４５】
本明細書で開示する実施形態による、レジスタ関連優先度に基づいて、命令を実行パイプラインに発行するように動作可能な命令処理回路は、任意のプロセッサベースデバイス中に設けられ、または組み込まれてもよい。例として、限定されないが、セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビ、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、およびポータブルデジタルビデオプレーヤが含まれる。
【００４６】
この点について、図7は、図1に示す命令処理回路14を採用することができる、プロセッサベースシステム158の一例を示す。この例では、プロセッサベースシステム158は、1つまたは複数のプロセッサ162を各々が含む1つまたは複数の中央処理装置(CPU)160を含む。プロセッサ162は、命令処理回路(IPC)14を含み得る。CPU160は、一時記憶データへの高速アクセスのためにプロセッサ162に結合されたキャッシュメモリ164を有し得る。CPU160は、システムバス166に結合され、プロセッサベースシステム158中に含まれるマスタデバイスとスレーブデバイスとを相互結合することができる。よく知られているように、CPU160は、システムバス166を通じてアドレス情報、制御情報、およびデータ情報を交換することによって、これらの他のデバイスと通信する。たとえば、CPU160は、スレーブデバイスの一例として、メモリコントローラ168にバストランザクション要求を通信することができる。図7に示されていないが、複数のシステムバス166が設けられ得る。
【００４７】
他のマスタデバイスおよびスレーブデバイスが、システムバス166に接続され得る。図7に示されるように、これらのデバイスは、例として、メモリシステム170、1つまたは複数の入力デバイス172、1つまたは複数の出力デバイス174、1つまたは複数のネットワークインターフェースデバイス176、ならびに1つまたは複数のディスプレイコントローラ178を含み得る。入力デバイス172は、限定はしないが、入力キー、スイッチ、音声プロセッサなどを含む任意のタイプの入力デバイスを含み得る。出力デバイス174は、限定はしないが、オーディオ、ビデオ、他の視覚インジケータなどを含む、任意のタイプの出力デバイスを含み得る。ネットワークインターフェースデバイス176は、ネットワーク180との間でデータの交換を可能にするように構成された任意のデバイスであってよい。ネットワーク180は、限定はしないが、ワイヤードネットワークまたはワイヤレスネットワーク、プライベートネットワークまたは公衆ネットワーク、ローカルエリアネットワーク(LAN)、ワイドローカルエリアネットワーク(WLAN)、およびインターネットを含む、任意のタイプのネットワークであってよい。ネットワークインターフェースデバイス176は、所望の任意のタイプの通信プロトコルをサポートするように構成され得る。メモリシステム170は、1つまたは複数のメモリユニット182(0〜N)を含むことができる。
【００４８】
CPU160はまた、システムバス166を通じてディスプレイコントローラ178にアクセスして、1つまたは複数のディスプレイ184に送られる情報を制御するようにも構成され得る。ディスプレイコントローラ178は、1つまたは複数のビデオプロセッサ186を介して表示されるべき情報を、ディスプレイ184に送り、ビデオプロセッサ186は、表示されるべき情報を、ディスプレイ184に適切なフォーマットとなるように処理する。ディスプレイ184は、限定はしないが、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイなどを含む、任意のタイプのディスプレイを含み得る。
【００４９】
本明細書で開示する実施形態に関して説明する様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムは、電子的なハードウェアとして、メモリもしくは別のコンピュータ可読媒体に記憶されプロセッサもしくは他の処理デバイスにより実行される命令として、またはこれら両方の組合せとして実装され得ることが、当業者にはさらに諒解されよう。本明細書で説明するマスタデバイスおよびスレーブデバイスは、例として、任意の回路、ハードウェア構成要素、集積回路(IC)、ICチップ、または半導体ダイにおいて採用され得る。本明細書で開示するメモリは、任意のタイプおよびサイズのメモリであってもよく、所望の任意のタイプの情報を記憶するように構成され得る。この互換性を明確に示すために、上記では、様々な例示的構成要素、ブロック、モジュール、回路、およびステップは全般的に、それらの機能に関して説明されている。そのような機能がどのように実装されるかは、特定の適用例、設計選択、および/または全体的なシステムに課された設計制約により決まる。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本発明の範囲からの逸脱を生じるものと解釈すべきではない。
【００５０】
本明細書で開示する実施形態に関して説明する様々な例示的な論理ブロック、モジュール、および回路は、プロセッサ、DSP、特定用途向け集積回路(ASIC)、FPGAもしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明する機能を実行するように設計されたそれらの任意の組合せで実装または実行することができる。プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つまたは複数のマイクロプロセッサ、あるいは任意の他のそのような構成として実装され得る。
【００５１】
本明細書で開示する実施形態は、ハードウェアで具現化されてよく、ハードウェアに記憶される命令で具現化されてよく、たとえば、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または、当技術分野で知られている任意の他の形態のコンピュータ可読媒体に、存在し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体はプロセッサと一体であり得る。プロセッサおよび記憶媒体はASIC中に存在し得る。ASICは遠隔局に存在し得る。代替として、プロセッサおよび記憶媒体は、遠隔局、基地局、またはサーバの中に、個別の構成要素として存在し得る。
【００５２】
本明細書の例示的な実施形態のいずれかで説明した動作ステップは、例および考察を提供するために説明したものであることにも、留意されたい。説明された動作は、例示された順序以外の多くの異なる順序で実行されてもよい。さらに、単一の動作ステップで説明される動作は、実際には、いくつかの異なるステップで実行され得る。加えて、例示的な実施形態において論じられた1つまたは複数の動作ステップは、組み合わされてもよい。フローチャート図において例示される動作ステップは、当業者に容易に明らかとなるような多くの異なる修正を受けてもよいことを、理解されたい。情報および信号は、多種多様な技術および技法のいずれかを使用して表され得ることも、当業者には理解されよう。たとえば、上記の説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁界または磁性粒子、光場または光学粒子、あるいはそれらの任意の組合せによって表され得る。
【００５３】
本開示の上記の説明は、当業者が本開示を構成または使用できるようにするために提供される。本開示への様々な修正は当業者には容易に明らかであり、本明細書で定義した一般原理は、本開示の趣旨または範囲から逸脱することなく他の変形形態に適用できる。したがって、本開示は、本明細書で説明する例および設計に限定されるものではなく、むしろ、本明細書で開示する原理および新規の特徴に一致する最大の範囲を与えられるものである。
【符号の説明】
【００５４】
10、158  プロセッサベースシステム
12(0〜Q)、P0〜PQ  実行パイプライン
14  命令処理回路、IPC
15  命令検出回路
16  ソースレジスタ検出回路
17  ターゲットレジスタ検出回路
18(0〜X)、R0〜RX  レジスタ
19  命令ストリーム
20  命令メモリ
22  命令フェッチ回路
24  命令キャッシュ
26  命令解読回路
28(0〜N)、36、46、54  命令
30  命令キュー
32  パイプライン発行テーブル
34、102、130  検出された命令ストリーム
38、50、106、118、134、142、154  パイプライン発行矢印
40、52、108、120、138、144、156  パイプラインインジケータ
42、110、136  矢印
44、56、112、124、148、150  行
48、58、116、126、152  実行パイプライン優先度
100  フラグベースのパイプライン発行テーブル
104、146  ARMアーキテクチャのADD命令、ADD命令
114、132、140  ARMアーキテクチャのMOV命令、MOV命令
122  MOV命令
128  識別情報ベースのパイプライン発行テーブル
139、145、157  有効性ビット
160  中央処理装置(CPU)
162  プロセッサ
164  キャッシュメモリ
166  システムバス
168  メモリコントローラ
170  メモリシステム
172  入力デバイス
174  出力デバイス
176  ネットワークインターフェースデバイス
178  ディスプレイコントローラ
180  ネットワーク
182(0〜N)  メモリユニット
184  ディスプレイ
186  ビデオプロセッサ
P0、P2  パイプライン
P1  パイプライン、優先実行パイプライン
R0、R1  ソースレジスタ、ターゲットレジスタ
R2、RX  ソースレジスタ
【図１】
0006317339.tif 000002
【図２】
0006317339.tif 000003
【図３】
0006317339.tif 000004
【図４Ａ】
0006317339.tif 000005
【図４Ｂ】
0006317339.tif 000006
【図５】
0006317339.tif 000007
【図６】
0006317339.tif 000008
【図７】
0006317339.tif 000009