(57)【要約】  パント回避テーブル(PAT)を使用してコンピュータプロセッサ内のメモリ命令パントを予測することが開示される。一態様では、命令処理回路は、各々がメモリ命令のアドレスを備えるエントリを含むPATにアクセスする。命令ストリーム中でメモリ命令を検出すると、命令処理回路は、PATがメモリ命令のアドレスを有するエントリを含むかどうかを判定する。PATがエントリを含む場合、命令処理回路は、メモリ命令パントをプリエンプトするために、検出されたメモリ命令が検出されたメモリ命令よりも古い少なくとも1つの保留中のメモリ命令の前に実施されることを防止する。いくつかの態様では、命令処理回路は、保留中のメモリ命令の実行時に、検出されたメモリ命令に関連付けられたハザードが発生したかどうかを判定し得る。ハザードが発生した場合、検出されたメモリ命令についてのエントリがPAT内に生成される。
2018523241.tif 000002
【特許請求の範囲】
【請求項１】
アウトオブオーダー(OOO)コンピュータプロセッサ内の命令処理回路であって、
前記命令処理回路は、実行パイプラインのフロントエンド回路に通信可能に結合され、複数のエントリを提供するパント回避テーブル(PAT)を備え、
前記命令処理回路は、検出されたメモリ命令のアドレスが前記PATの前記複数のエントリのうちのエントリに存在するとの判定に応答して、メモリ命令パントをプリエンプトするために、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い少なくとも1つの保留中のメモリ命令の前に実施されることを防止するように構成される、
命令処理回路。
【請求項２】
前記命令処理回路が、前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令のインオーダーディスパッチを実行するように構成されることによって、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令の前に実施されることを防止するように構成される、請求項1に記載の命令処理回路。
【請求項３】
前記命令処理回路が、前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令が完了するまで、前記検出されたメモリ命令によるデータの早期リターンを防止するように構成されることによって、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令の前に実施されることを防止するように構成される、請求項1に記載の命令処理回路。
【請求項４】
前記PATの前記エントリのハザードインジケータに基づいて、前記検出されたメモリ命令に関連付けられたハザードタイプを判定するようにさらに構成され、前記ハザードタイプが、リードアフターライト(RAW)ハザード、リードアフターリード(RAR)ハザード、およびリソース制約ハザードからなるグループから選択される、請求項1に記載の命令処理回路。
【請求項５】
前記PATの前記エントリがRAWハザードに関連付けられているかどうかを判定し、
前記PATの前記エントリが前記RAWハザードに関連付けられているとの判定に応答して、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い任意の保留中のメモリストア命令の前に実施されることを防止する
ように構成されることによって、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令の前に実施されることを防止するようにさらに構成される、請求項1に記載の命令処理回路。
【請求項６】
前記PATの前記エントリがRARハザードに関連付けられているかどうかを判定し、
前記PATの前記エントリが前記RARハザードに関連付けられているとの判定に応答して、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い任意の保留中のメモリロード命令の前に実施されることを防止する
ように構成されることによって、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令の前に実施されることを防止するようにさらに構成される、請求項1に記載の命令処理回路。
【請求項７】
前記PATの前記エントリがリソース制約ハザードに関連付けられているかどうかを判定し、
前記PATの前記エントリが前記リソース制約ハザードに関連付けられているとの判定に応答して、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い任意の保留中のメモリ命令の前に実施されることを防止する
ように構成されることによって、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令の前に実施されることを防止するようにさらに構成される、請求項1に記載の命令処理回路。
【請求項８】
前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令のうちの保留中のメモリ命令の実行時に、前記検出されたメモリ命令に関連付けられたハザードが発生したかどうかを判定し、
前記検出されたメモリ命令に関連付けられた前記ハザードが発生したとの判定に応答して、
前記PAT内に前記エントリを生成することであって、前記エントリが、前記検出されたメモリ命令の前記アドレスを備える、生成することと、
前記検出されたメモリ命令および前記少なくとも1つの保留中のメモリ命令を再実行することと
を行うようにさらに構成される、請求項1に記載の命令処理回路。
【請求項９】
前記PAT内に前記エントリを生成する前に、
前記検出されたメモリ命令の前記アドレスが前記PATの前記エントリに存在するかどうかを判定し、
前記検出されたメモリ命令の前記アドレスが前記エントリに存在するとの判定に応答して、前記エントリのバイアスカウンタフィールドのバイアスカウンタ値を増分し、
前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令の前に実施されることを防止する前に、前記PATの前記エントリの前記バイアスカウンタフィールドの前記バイアスカウンタ値がバイアスしきい値を超えるかどうかを判定する
ようにさらに構成され、
前記命令処理回路が、
前記検出されたメモリ命令の前記アドレスが前記PATの前記エントリに存在しないとの判定に応答して、前記PAT内に前記エントリを生成し、
前記バイアスカウンタ値が前記バイアスしきい値を超えるとの判定に応答して、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令の前に実施されることを防止する
ように構成される、請求項8に記載の命令処理回路。
【請求項１０】
集積回路(IC)に組み込まれる、請求項1に記載の命令処理回路。
【請求項１１】
セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビジョン、チューナー、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、およびポータブルデジタルビデオプレーヤからなるグループから選択されるデバイスに組み込まれる、請求項1に記載の命令処理回路。
【請求項１２】
アウトオブオーダー(OOO)コンピュータプロセッサ内の命令処理回路であって、
パント回避テーブル(PAT)内の複数のエントリを提供するための手段と、
検出されたメモリ命令のアドレスが前記PATの前記複数のエントリのうちのエントリに存在するとの判定に応答して、メモリ命令パントをプリエンプトするために、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い少なくとも1つの保留中のメモリ命令の前に実施されることを防止するための手段と
を備える命令処理回路。
【請求項１３】
メモリ命令パントを予測するための方法であって、
命令ストリーム中でメモリ命令を検出するステップと、
前記検出されたメモリ命令のアドレスがパント回避テーブル(PAT)のエントリに存在するかどうかを判定するステップと、
前記検出されたメモリ命令の前記アドレスが前記エントリに存在するとの判定に応答して、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い少なくとも1つの保留中のメモリ命令の前に実施されることを防止するステップと
を備える方法。
【請求項１４】
前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令の前に実施されることを防止するステップが、前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令のインオーダーディスパッチを実行するステップを備える、請求項13に記載の方法。
【請求項１５】
前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令の前に実施されることを防止するステップが、前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令が完了するまで、前記検出されたメモリ命令によるデータの早期リターンを防止するステップを備える、請求項13に記載の方法。
【請求項１６】
前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令の前に実施されることを防止するステップが、前記検出されたメモリ命令に関連付けられたハザードタイプに基づき、前記ハザードタイプが、リードアフターライト(RAW)ハザード、リードアフターリード(RAR)ハザード、およびリソース制約ハザードからなるグループから選択される、請求項13に記載の方法。
【請求項１７】
前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令の前に実施されることを防止するステップが、
前記PATの前記エントリがRAWハザードに関連付けられているかどうかを判定するステップと、
前記PATの前記エントリが前記RAWハザードに関連付けられているとの判定に応答して、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い任意の保留中のメモリストア命令の前に実施されることを防止するステップと
を備える、請求項13に記載の方法。
【請求項１８】
前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令の前に実施されることを防止するステップが、
前記PATの前記エントリがRARハザードに関連付けられているかどうかを判定するステップと、
前記PATの前記エントリが前記RARハザードに関連付けられているとの判定に応答して、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い任意の保留中のメモリロード命令の前に実施されることを防止するステップと
を備える、請求項13に記載の方法。
【請求項１９】
前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令の前に実施されることを防止するステップが、
前記PATの前記エントリがリソース制約ハザードに関連付けられているかどうかを判定するステップと、
前記PATの前記エントリが前記リソース制約ハザードに関連付けられているとの判定に応答して、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い任意の保留中のメモリ命令の前に実施されることを防止するステップと
を備える、請求項13に記載の方法。
【請求項２０】
前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令のうちの保留中のメモリ命令のディスパッチ時に、前記検出されたメモリ命令に関連付けられたハザードが発生したかどうかを判定するステップと、
前記検出されたメモリ命令に関連付けられた前記ハザードが発生したとの判定に応答して、
前記PAT内に前記エントリを生成するステップであって、前記エントリが、前記検出されたメモリ命令の前記アドレスを備える、ステップと、
前記検出されたメモリ命令および前記少なくとも1つの保留中のメモリ命令を再実行するステップと
をさらに備える、請求項13に記載の方法。
【請求項２１】
前記PAT内に前記エントリを生成する前に、
前記検出されたメモリ命令の前記アドレスが前記PATの前記エントリに存在するかどうかを判定するステップと、
前記検出されたメモリ命令の前記アドレスが前記エントリに存在するとの判定に応答して、前記エントリのバイアスカウンタフィールドのバイアスカウンタ値を増分するステップと、
前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令の前に実施されることを防止する前に、前記PATの前記エントリの前記バイアスカウンタフィールドの前記バイアスカウンタ値がバイアスしきい値を超えるかどうかを判定するステップと
をさらに備え、
前記PAT内に前記エントリを生成するステップが、前記検出されたメモリ命令の前記アドレスが前記PATの前記エントリに存在しないとの判定に応答し、
前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令の前に実施されることを防止するステップが、前記バイアスカウンタ値が前記バイアスしきい値を超えるとの判定に応答する、
請求項20に記載の方法。
【請求項２２】
プロセッサによって実行されると、前記プロセッサに、
命令ストリーム中でメモリ命令を検出することと、
前記検出されたメモリ命令のアドレスがパント回避テーブル(PAT)のエントリに存在するかどうかを判定することと、
前記検出されたメモリ命令の前記アドレスが前記エントリに存在するとの判定に応答して、メモリ命令パントをプリエンプトするために、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い少なくとも1つの保留中のメモリ命令の前に実施されることを防止することと
を行わせるコンピュータ実行可能命令を記憶したコンピュータ可読記憶媒体。
【請求項２３】
前記プロセッサによって実行されると、前記プロセッサに、前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令のインオーダーディスパッチを実行することによって、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令の前に実施されることを防止することをさらに行わせるコンピュータ実行可能命令を記憶した、請求項22に記載のコンピュータ可読記憶媒体。
【請求項２４】
前記プロセッサによって実行されると、前記プロセッサに、前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令が完了するまで、前記検出されたメモリ命令によるデータの早期リターンを防止することによって、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令の前に実施されることを防止することをさらに行わせるコンピュータ実行可能命令を記憶した、請求項22に記載のコンピュータ可読記憶媒体。
【請求項２５】
前記プロセッサによって実行されると、前記プロセッサに、
前記PATの前記エントリがリードアフターライト(RAW)ハザードに関連付けられているかどうかを判定することと、
前記PATの前記エントリが前記RAWハザードに関連付けられているとの判定に応答して、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い任意の保留中のメモリストア命令の前に実施されることを防止することと
によって、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令の前に実施されることを防止することをさらに行わせるコンピュータ実行可能命令を記憶した、請求項22に記載のコンピュータ可読記憶媒体。
【請求項２６】
前記プロセッサによって実行されると、前記プロセッサに、
前記PATの前記エントリがリードアフターリード(RAR)ハザードに関連付けられているかどうかを判定することと、
前記PATの前記エントリが前記RARハザードに関連付けられているとの判定に応答して、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い任意の保留中のメモリロード命令の前に実施されることを防止することと
によって、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令の前に実施されることを防止することをさらに行わせるコンピュータ実行可能命令を記憶した、請求項22に記載のコンピュータ可読記憶媒体。
【請求項２７】
前記プロセッサによって実行されると、前記プロセッサに、
前記PATの前記エントリがリソース制約ハザードに関連付けられているかどうかを判定することと、
前記PATの前記エントリが前記リソース制約ハザードに関連付けられているとの判定に応答して、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い任意の保留中のメモリ命令の前に実施されることを防止することと
によって、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令の前に実施されることを防止することをさらに行わせるコンピュータ実行可能命令を記憶した、請求項22に記載のコンピュータ可読記憶媒体。
【請求項２８】
前記プロセッサによって実行されると、前記プロセッサに、
前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令のうちの保留中のメモリ命令の実行時に、前記検出されたメモリ命令に関連付けられたハザードが発生したかどうかを判定することと、
前記検出されたメモリ命令に関連付けられた前記ハザードが発生したとの判定に応答して、
前記PAT内に前記エントリを生成することであって、前記エントリが、前記検出されたメモリ命令の前記アドレスを備える、生成することと、
前記検出されたメモリ命令および前記少なくとも1つの保留中のメモリ命令を再実行することと
をさらに行わせるコンピュータ実行可能命令を記憶した、請求項22に記載のコンピュータ可読記憶媒体。
【請求項２９】
前記プロセッサによって実行されると、前記プロセッサに、
前記PAT内に前記エントリを生成する前に、
前記検出されたメモリ命令の前記アドレスが前記PATの前記エントリに存在するかどうかを判定することと、
前記検出されたメモリ命令の前記アドレスが前記エントリに存在するとの判定に応答して、前記エントリのバイアスカウンタフィールドのバイアスカウンタ値を増分することと、
前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令の前に実施されることを防止する前に、前記PATの前記エントリの前記バイアスカウンタフィールドの前記バイアスカウンタ値がバイアスしきい値を超えるかどうかを判定することと、
前記検出されたメモリ命令の前記アドレスが前記PATの前記エントリに存在しないとの判定に応答して、前記PAT内に前記エントリを生成することと、
前記バイアスカウンタ値が前記バイアスしきい値を超えるとの判定に応答して、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令の前に実施されることを防止することと
をさらに行わせるコンピュータ実行可能命令を記憶した、請求項28に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権主張
本出願は、その内容全体が参照により本明細書に組み込まれる、2015年8月14日に出願された「PREDICTING MEMORY INSTRUCTION PUNTS IN A COMPUTER PROCESSOR USING A PUNT AVOIDANCE TABLE (PAT)」と題する米国仮特許出願第62/205,400号の優先権を主張する。
【０００２】
本出願はまた、その内容全体が参照により本明細書に組み込まれる、2015年9月24日に出願された「PREDICTING MEMORY INSTRUCTION PUNTS IN A COMPUTER PROCESSOR USING A PUNT AVOIDANCE TABLE (PAT)」と題する米国特許出願第14/863,612号の優先権を主張する。
【０００３】
本開示の技術は、一般に、アウトオブオーダー(OOO)コンピュータプロセッサ内のメモリ命令を処理することに関し、詳細には、ハザードのせいで命令を再フェッチおよび再実行するのを回避することに関する。
【背景技術】
【０００４】
アウトオブオーダー(OOO)プロセッサは、コンピュータプログラム内の命令の出現の順序にかかわらず、各命令の入力オペランドの利用可能性によって決定される順序でコンピュータプログラム命令を実行することが可能なコンピュータプロセッサである。命令をアウトオブオーダーで実行することによって、OOOプロセッサは、データアクセス動作が完了するのをOOOプロセッサが待つ間に通常ならば浪費されることになるプロセッサクロックサイクルを、十分に利用することが可能であり得る。たとえば、より古いプログラム命令について入力データが取り出されている間に「ストールする」(すなわち、意図的に処理遅延を導入する)必要があるのではなく、OOOプロセッサは、直ちに実行可能な、より最近フェッチされた命令の実行を進めることができる。このようにして、プロセッサクロックサイクルは、OOOプロセッサによってより生産的に利用され得、その結果、プロセッサクロックサイクル当たりにOOOプロセッサが処理することが可能な命令の数が増加する。
【０００５】
しかしながら、メモリ命令のアウトオブオーダー実行は、「パント」の発生をもたらす場合がある。パントは、検出されたハザードのせいで1つまたは複数のメモリ命令が再フェッチおよび再実行されなければならない状況である。たとえば、パントは、非限定的な例として、リードアフターライト(RAW:read-after-write)ハザード、リードアフターリード(RAR:read-after-read)ハザード、および/または、利用可能なロードキューエントリもしくはストアキューエントリの欠如などのリソース制約ハザードの発生から生じる場合がある。メモリ命令の再フェッチおよび再実行は、プロセッサ性能を低下させ、より大きい電力消費をもたらす場合がある。
【発明の概要】
【課題を解決するための手段】
【０００６】
発明を実施するための形態で開示する態様は、パント回避テーブル(PAT)を使用してコンピュータプロセッサ内のメモリ命令パントを予測することを含む。この点について、一態様では、コンピュータプロセッサ内の命令処理回路は、メモリ命令パントを予測およびプリエンプトするためにPATにアクセスする。本明細書で使用する「パント」は、メモリ命令のアウトオブオーダー実行に起因するハザード状態に応じて、コンピュータプロセッサ内のメモリ命令および1つまたは複数のより古いメモリ命令を再フェッチおよび再実行するプロセスを指す。PATは、以前にアウトオブオーダーで実行され、メモリ命令パントになったメモリ命令のアドレスを各々が備える、1つまたは複数のエントリを含む。コンピュータプログラムの実行中に、命令処理回路は、命令ストリーム中でメモリ命令を検出し、PATがメモリ命令に対応するアドレスを有するエントリを含むかどうかを判定する。PATがメモリ命令に対応するアドレスを有するエントリを含む場合、命令処理回路は、検出されたメモリ命令が検出されたメモリ命令よりも古い少なくとも1つの保留中のメモリ命令の前に実施されることを防止することによって、パントをプリエンプトすることができる。非限定的な例として、命令処理回路は、いくつかの態様では、検出されたメモリ命令よりも古い少なくとも1つの保留中のメモリ命令のインオーダーディスパッチを実行してもよく、または、検出されたメモリ命令よりも古い少なくとも1つの保留中のメモリ命令が完了するまで、検出されたメモリ命令によるデータの早期リターンを防止してもよい。このようにして、命令処理回路は、メモリ命令パントの発生を低減し、したがって、改善されたプロセッサ実行を実現することができる。
【０００７】
さらに、命令処理回路が遭遇したハザードがリードアフターライト(RAW)ハザードであるいくつかの例示的な態様では、命令処理回路は、検出されたメモリ命令が検出されたメモリ命令よりも古い任意の保留中のメモリストア命令の前に実施されることを防止することができる。別の例示的な態様として、命令処理回路が遭遇したハザードがリードアフターリード(RAR)ハザードであるとき、命令処理回路は、検出されたメモリ命令が検出されたメモリ命令よりも古い任意の保留中のメモリロード命令の前に実施されることを防止することができる。ハザードがリソース制約ハザードである態様の場合、命令処理回路は、検出されたメモリ命令が検出されたメモリ命令よりも古い任意の保留中のメモリ命令の前に実施されることを防止することができる。
【０００８】
別の態様では、OOOコンピュータプロセッサ内の命令処理回路が提供される。命令処理回路は、実行パイプラインのフロントエンド回路に通信可能に結合され、複数のエントリを提供するPATを備える。命令処理回路は、検出されたメモリ命令のアドレスがPATの複数のエントリのうちのエントリに存在するとの判定に応答して、メモリ命令パントをプリエンプトするために、検出されたメモリ命令が検出されたメモリ命令よりも古い少なくとも1つの保留中のメモリ命令の前に実施されることを防止するように構成される。
【０００９】
別の態様では、OOOコンピュータプロセッサ内に命令処理回路が提供される。命令処理回路は、PAT内の複数のエントリを提供するための手段を備える。命令処理回路はまた、検出されたメモリ命令のアドレスがPATの複数のエントリのうちのエントリに存在するとの判定に応答して、メモリ命令パントをプリエンプトするために、検出されたメモリ命令が検出されたメモリ命令よりも古い少なくとも1つの保留中のメモリ命令の前に実施されることを防止するための手段を備える。
【００１０】
別の態様では、メモリ命令パントを予測するための方法が提供される。方法は、命令ストリーム中でメモリ命令を検出するステップを備える。方法は、検出されたメモリ命令のアドレスがPATのエントリに存在するかどうかを判定するステップをさらに備える。方法はまた、検出されたメモリ命令のアドレスがエントリに存在するとの判定に応答して、メモリ命令パントをプリエンプトするために、検出されたメモリ命令が検出されたメモリ命令よりも古い少なくとも1つの保留中のメモリ命令の前に実施されることを防止するステップを備える。
【００１１】
別の態様では、プロセッサによって実行されると、プロセッサに命令ストリーム中でメモリ命令を検出させるコンピュータ実行可能命令を記憶した非一時的コンピュータ可読媒体が提供される。その上に記憶されたコンピュータ実行可能命令はさらに、プロセッサに、検出されたメモリ命令のアドレスがPATのエントリに存在するかどうかを判定させる。その上に記憶されたコンピュータ実行可能命令はまた、プロセッサに、検出されたメモリ命令のアドレスがエントリに存在するとの判定に応答して、メモリ命令パントをプリエンプトするために、検出されたメモリ命令が検出されたメモリ命令よりも古い少なくとも1つの保留中のメモリ命令の前に実施されることを防止させる。
【図面の簡単な説明】
【００１２】
【図１】パント回避テーブル(PAT)を使用してメモリ命令パントを予測するように構成された命令処理回路を含む例示的なアウトオブオーダー(OOO)コンピュータプロセッサのブロック図である。
【図２】図1の命令処理回路の例示的なPATのエントリを示すブロック図である。
【図３Ａ】図1の命令処理回路の例示的な通信フローを示す図である。
【図３Ｂ】図1のPAT内のエントリを確立するための図1の命令処理回路の例示的な通信フローを示す図である。
【図３Ｃ】メモリ命令を検出したことに応答して、続いてメモリ命令パントをプリエンプトするための図1の命令処理回路の例示的な通信フローを示す図である。
【図４Ａ】命令処理回路のPATを使用してメモリ命令パントを予測する、図1の命令処理回路の例示的な動作を示すフローチャートである。
【図４Ｂ】命令処理回路のPATを使用してメモリ命令パントを予測する、図1の命令処理回路の例示的な動作を示すフローチャートである。
【図４Ｃ】命令処理回路のPATを使用してメモリ命令パントを予測する、図1の命令処理回路の例示的な動作を示すフローチャートである。
【図５】PATを使用してメモリ命令パントを予測するように構成された図1の命令処理回路を含むことができる例示的なプロセッサベースシステムのブロック図である。
【発明を実施するための形態】
【００１３】
次に図面を参照しながら、本開示のいくつかの例示的な態様について説明する。「例示的」という語は、本明細書では、「例、事例、または例示として機能すること」を意味するために使用される。「例示的」として本明細書で説明するいずれの態様も、必ずしも他の態様よりも好ましいか、または有利であると解釈されるべきではない。
【００１４】
発明を実施するための形態で開示する態様は、パント回避テーブル(PAT)を使用してコンピュータプロセッサ内のメモリ命令パントを予測することを含む。この点について、図1は、命令処理並列性を高めるために命令のアウトオブオーダー処理を行う例示的なアウトオブオーダー(OOO)コンピュータプロセッサ100のブロック図である。以下でより詳細に説明するように、OOOコンピュータプロセッサ100は、メモリ命令パントを予測するためにPAT104にアクセスする命令処理回路102を含む。本明細書で使用する「メモリ命令」という用語は、一般に、非限定的な例として、メモリロード命令および/またはメモリストア命令を指す。OOOコンピュータプロセッサ100は、数ある要素の中でも、既知のデジタル論理要素、半導体回路、処理コア、および/もしくはメモリ構造のうちのいずれか1つ、またはそれらの組合せを包含し得る。本明細書で説明する態様は、要素の任意の特定の構成に限定されず、開示される技法は、半導体ダイまたはパッケージ上の様々な構造およびレイアウトに容易に拡張され得る。
【００１５】
OOOコンピュータプロセッサ100は、メモリインターフェース回路106と、命令キャッシュ108と、データキャッシュ112およびロード/ストアキュー114を備えるロード/ストアユニット110とを含む。いくつかの態様では、データキャッシュ112は、非限定的な例として、オンチップレベル1(L1)データキャッシュを備え得る。OOOコンピュータプロセッサ100は、命令処理回路102を含む実行パイプライン116をさらに備える。命令処理回路102は、フロントエンド回路118と、実行ユニット120と、完了ユニット122とを備える。OOOコンピュータプロセッサ100は加えて、1つまたは複数の汎用レジスタ(GPR)126と、プログラムカウンタ128と、リンクレジスタ130とを備えるレジスタ124を含む。ARM(登録商標) ARM7(商標)アーキテクチャを用いる態様などのいくつかの態様では、リンクレジスタ130は、図1に示すように、GPR126のうちの1つである。代替的に、IBM(登録商標) PowerPC(登録商標)アーキテクチャを利用する態様などのいくつかの態様は、リンクレジスタ130がGPR126とは別個であることを規定する場合がある(図示せず)。
【００１６】
例示的な動作では、実行パイプライン116のフロントエンド回路118は、命令キャッシュ108から命令(図示せず)をフェッチし、命令キャッシュ108は、いくつかの態様では、非限定的な例として、オンチップレベル1(L1)キャッシュであり得る。フェッチされた命令は、フロントエンド回路118によって復号され、実行ユニット120に発行される。実行ユニット120は発行された命令を実行し、完了ユニット122は実行された命令をリタイアする。いくつかの態様では、完了ユニット122は、レジスタ124のうちの1つまたは複数に実行結果を記憶するライトバック機構(図示せず)を備え得る。実行ユニット120および/または完了ユニット122はそれぞれ、1つまたは複数の順次パイプラインステージを備え得ることを理解されたい。図1の例では、フロントエンド回路118は、複数の命令が同時にフェッチされ、復号されることを可能にする、1つまたは複数のフェッチ/復号パイプラインステージ132を備える。実行ユニット120へのフェッチされた命令の保留中のディスパッチを保持するための命令キュー134は、フェッチ/復号パイプラインステージ132のうちの1つまたは複数に通信可能に結合される。
【００１７】
実行パイプライン116内の命令を処理している間、命令処理回路102は、命令がフェッチされるプログラム順序とは異なる順序で、メモリロード命令および/またはメモリストア命令などのメモリ命令を実行し得る。その結果、いくつかの状況下では、メモリ命令のアウトオブオーダー実行は、検出されたハザードのせいでメモリ命令および1つまたは複数のより古いメモリ命令が再フェッチおよび再実行されなければならない、メモリ命令「パント」の発生をもたらし得る。たとえば、同じメモリアドレスに対してより古いメモリストア命令の前に実行されるより若いメモリロード命令は、RAWハザードをもたらし、それにより、メモリロード命令およびメモリストア命令が再フェッチおよび再実行されることを必要とする場合がある。同様に、同じメモリアドレスに対してより古いメモリロード命令の前に実行されるより若いメモリロード命令は、RARハザードを発生させ、両方のメモリロード命令の再フェッチおよび再実行を必要とする場合がある。いくつかの態様では、より若いメモリロード命令は、利用可能なリソース(たとえば、非限定的な例として、ロードキューエントリ(図示せず)またはストアキューエントリ(図示せず))のすべてを消費して、より古いメモリ命令が実行されることを防止し、それにより、保留中のメモリ命令のすべてが再フェッチおよび再実行されることを必要とする場合がある。これらの状況の各々において、メモリ命令の再フェッチおよび再実行は、プロセッサ性能に悪影響を及ぼす場合があり、より大きい電力消費をもたらす場合がある。
【００１８】
この点について、図1の命令処理回路102は、メモリ命令パントを予測するためのPAT104を含む。命令処理回路102は、実行パイプライン116内で処理されている命令ストリーム(図示せず)中でメモリ命令(図示せず)を検出するように構成される。メモリ命令が命令処理回路102のフロントエンド回路118によってフェッチされるとき、命令処理回路102はPAT104を調べる。PAT104は、1つまたは複数のエントリ(図示せず)を含む。PAT104の各エントリは、そのディスパッチおよび実行がハザードになり、続いてメモリ命令パントになった、以前に検出されたメモリ命令のアドレスを含み得る。
【００１９】
命令処理回路102は、フェッチされているメモリ命令のアドレスがPAT104のエントリに存在するかどうかを判定する。メモリ命令のアドレスがPAT104のエントリに見出される(すなわち、「ヒット」)場合、メモリ命令の以前のアウトオブオーダー実行がパントになっており、再びそうなる可能性があり得ると結論付けられることがある。パントの可能性を先制して排除するために、命令処理回路102は、検出されたメモリ命令が検出されたメモリ命令よりも古い少なくとも1つの保留中のメモリ命令の前に実施されること(すなわち、非限定的な例として、アウトオブオーダーでディスパッチされることおよび/またはデータの早期リターンを行うこと)を防止する。非限定的な例として、命令処理回路102は、いくつかの態様では、検出されたメモリ命令よりも古い少なくとも1つの保留中のメモリ命令のインオーダーディスパッチを実行してもよく、または、検出されたメモリ命令よりも古い少なくとも1つの保留中のメモリ命令が完了するまで、検出されたメモリ命令によるデータの早期リターンを防止してもよい。いくつかの態様によれば、命令処理回路102は、1つまたは複数の属性(図示せず)を検出されたメモリ命令に追加することによって、検出されたメモリ命令によるデータの早期リターンを防止することができる。これらの属性は、検出されたメモリ命令のための(たとえば、データキャッシュ112からの)データの早期リターンがブロックされるべきであることと、その代わりに、検出されたメモリ命令はすべてのより古いメモリ動作ハザードが解決されることを待つべきであることとを示し得る。
【００２０】
上述のように、検出されたメモリ命令が検出されたメモリ命令よりも古い少なくとも1つの保留中のメモリ命令の前に実施されることを防止するための異なる動作は、PAT104のエントリに関連付けられたハザードのタイプに応じて、異なるタイプのメモリ命令に適用され得る。非限定的な例として、メモリ命令の以前のアウトオブオーダー実行がRAWハザードになった場合、命令処理回路102は、検出されたメモリ命令が検出されたメモリ命令よりも古い任意の保留中のメモリストア命令の前に実施されることを防止することができる。RARハザードがメモリ命令の以前のアウトオブオーダー実行から生じた場合、命令処理回路102は、検出されたメモリ命令が検出されたメモリ命令よりも古い任意の保留中のメモリロード命令の前に実施されることを防止することができる。ハザードがリソース制約ハザードである態様の場合、命令処理回路102は、検出されたメモリ命令が検出されたメモリ命令よりも古い任意の保留中のメモリ命令の前に実施されることを防止することができる。
【００２１】
本明細書で開示するいくつかの態様によれば、命令処理回路102がメモリ命令を検出するが、PAT104のエントリにメモリ命令のアドレスを見出さない場合、「ミス」が発生する。この場合、命令処理回路102は、メモリ命令の処理を継続することができる。メモリ命令よりも古い保留中のメモリ命令の実行時に、検出されたメモリ命令に関連付けられたハザードが続いて発生する場合、メモリ命令のアドレスを含むエントリがPAT104内に生成され得る。次いで、メモリ命令および保留中のメモリ命令が再フェッチおよび再実行され得る。
【００２２】
いくつかの態様では図1のPAT104に対応し得る例示的なPAT200を示すために、図2が提供される。明快のために、図2について説明する際に、図1の要素が参照される。図2に見られるように、PAT200は、複数のエントリ202(0)〜202(Y)を含み、エントリの各々は、検出されたメモリ命令に関連付けられたデータを記憶し得る(図示せず)。エントリ202(0)〜202(Y)の各々は、アドレス206などの、関連するメモリ命令のアドレスを記憶するためのアドレスフィールド204を含む。エントリ202(0)などのエントリは、アドレス206に位置するメモリ命令のアウトオブオーダー実行から生じるハザードの発生に応答して、命令処理回路102によって生成され得る。
【００２３】
いくつかの態様によれば、PAT200の各エントリ202(0)〜202(Y)は、ハザードインジケータ210などのハザードインジケータを記憶するための任意選択のハザードインジケータフィールド208も含み得る。ハザードインジケータ210は、いくつかの態様では、関連するメモリ命令に対応するハザードのタイプ(たとえば、非限定的な例として、RAWハザード、RARハザード、またはリソース制約ハザード)の指示を提供する1つまたは複数のビットを備え得る。命令処理回路102は、メモリ命令パントをプリエンプトするために取るべき適切なアクションを決定する際にハザードインジケータ210を用い得る。ハザードインジケータフィールド208を含まないPAT200のいくつかの態様では、PAT200は、単一のタイプのハザードの追跡に専用のものであってもよい。たとえば、PAT200は、非限定的な例として、RAWハザードのみの追跡に専用のものであってもよい。いくつかの態様は、各々が異なるハザードタイプを追跡する複数のPAT200が提供されることを規定する場合がある。
【００２４】
いくつかの態様は、PAT200のエントリ202(0)〜202(Y)の各々がバイアスカウンタ値214を記憶するバイアスカウンタフィールド212をさらに含むことを規定する場合もある。PAT200のエントリ202(0)〜202(Y)は、バイアスしきい値218を記憶するバイアスしきい値フィールド216も含み得る。バイアスカウンタ値214およびバイアスしきい値218は、関連するメモリ命令のアウトオブオーダー実行の結果として発生するメモリ命令パントの相対的尤度を判断するために、命令処理回路102によって使用され得る。次いで、命令処理回路102は、バイアスカウンタ値214およびバイアスしきい値218に基づいて、メモリ命令パントをプリエンプトすべきか、またはメモリ命令の従来の処理を続行すべきかを判定し得る。たとえば、バイアスカウンタ値214は、エントリ202(0)に対応するメモリ命令に関連付けられたハザードが発生するたびに増分され得る。メモリ命令が命令ストリーム中で再び検出された場合、命令処理回路102は、バイアスカウンタ値214がバイアスしきい値218を超える場合にのみ、メモリ命令がそのメモリ命令よりも古い保留中のメモリ命令の前に実施されることを防止することができる。いくつかの態様は、バイアスしきい値218が、バイアスしきい値フィールド216に記憶される代わりに、図1のレジスタ124のうちの1つなどの、PAT200とは別個のロケーションに記憶され得るか、または命令処理回路102によってハードコード化され得ることを規定する場合がある。
【００２５】
いくつかの態様は、PAT200のエントリ202(0)〜202(Y)が、図2に示すフィールド204、208、212、および216に加えて他のフィールドを含み得ることを規定する場合があることを理解されたい。PAT200は、いくつかの態様では、当技術分野で知られている結合性ポリシーおよび置換ポリシーに従って構成されたキャッシュとして実装され得ることをさらに理解されたい。図2の例では、PAT200は、単一のデータ構造として示されている。しかしながら、いくつかの態様では、PAT200は、2つ以上のデータ構造またはキャッシュも備え得る。
【００２６】
図1の命令処理回路102とロード/ストアユニット110との間の例示的な通信フローをより良く示すために、図3A〜図3Cが提供される。図3Aは、メモリ命令のアウトオブオーダー実行のための例示的な通信フローを示し、図3Bは、PAT104内にエントリを確立するための例示的な通信フローを示す。図3Cは、後続のメモリ命令パントの予測の間の例示的な通信フローを示す。
【００２７】
図3A〜図3Cに示すように、命令処理回路102は、3つの命令、すなわち、メモリストア命令(ST)302(0)ならびに2つのメモリロード命令(LD)302(1)および302(2)を備える命令ストリーム300を処理する。メモリストア命令302(0)およびメモリロード命令302(1)、302(2)は、本明細書ではまとめて「メモリ命令302(0)〜302(2)」とも呼ばれる。この例では、メモリストア命令302(0)は、メモリロケーションM(図示せず)に値を記憶するようOOOコンピュータプロセッサ100に指示し、メモリロード命令302(1)、302(2)はそれぞれ、メモリロケーションMから値を読み取るようOOOコンピュータプロセッサ100に指示する。図3A〜図3Cの例では、メモリストア命令302(0)はプログラム順序の点では最も古く、メモリロード命令302(1)は2番目に古く、メモリロード命令302(2)は最も若い。メモリロード命令302(2)はアドレス304に関連付けられ、この例では、アドレス304は16進値0x414である。いくつかの態様では、アドレス304は、たとえば、図1のプログラムカウンタ128から取り出され得ることを理解されたい。
【００２８】
図3A〜図3Cに示すPAT104は、複数のエントリ306(0)〜306(X)を含む。メモリ命令パントの予測を容易にするために、PAT104の各エントリ306(0)〜306(X)は、図2のアドレスフィールド204に対応するアドレスフィールド308を含む。上記で説明したように、各エントリ306(0)〜306(X)のアドレスフィールド308は、命令処理回路102によって検出されたメモリロード命令302(2)のアドレス304を記憶するために使用され得る。図3Aの例には示されていないが、いくつかの態様では、PAT104のエントリ306(0)〜306(X)は、図2のハザードインジケータフィールド208、バイアスカウンタフィールド212、および/またはバイアスしきい値フィールド216に対応するフィールドも含み得る。
【００２９】
次に図3Aを参照すると、この例では、命令処理回路102は、より古いメモリストア命令302(0)およびより古いメモリロード命令302(1)が実行される前に、アウトオブオーダーでメモリロード命令302(2)を実行することを選択する。矢印310で示すように、命令処理回路102は最初に、メモリロード命令302(2)のアドレス304(すなわち、16進値0x414)がエントリ306(0)〜306(X)のうちのいずれかに見出され得るかどうかを判定するために、PAT104をチェックする。命令処理回路102は、エントリ306(0)〜306(X)にアドレス304を見出さず、したがって、「ミス」に応答して、メモリロード命令302(2)の従来の処理を続行する。したがって、メモリロード命令302(2)は、矢印312および314で示すように、データキャッシュ112を読み取り、メモリロケーションMにおいて記憶されたデータを返す。
【００３０】
図3Bでは、命令処理回路102は次に、矢印316で示すように、メモリストア命令302(0)を実行することを選択する。上述のように、メモリストア命令302(0)は、メモリロード命令302(2)よりも古く、メモリロード命令302(2)によって読み取られた同じメモリロケーションMに値を記憶する。したがって、命令処理回路102がメモリストア命令302(0)を実行しようとする試みは、ハザード318(この場合、RAWハザード)の検出をもたらす。ハザード318を検出したことに応答して、命令処理回路102は、矢印320で示すように、PAT104内にエントリ306(0)を生成し、エントリ306(0)のアドレスフィールド308にメモリロード命令302(2)のアドレス304を記憶する。次いで、命令処理回路102は、メモリストア命令302(0)およびメモリロード命令302(2)を再フェッチおよび再実行させ(図示せず)、結果としてメモリ命令パントが生じる。
【００３１】
図3Cを参照すると、メモリストア命令302(0)およびメモリロード命令302(2)を再フェッチすると、命令処理回路102は、より古いメモリストア命令302(0)およびメモリロード命令302(1)が実行される前に、アウトオブオーダーでメモリロード命令302(2)を実行することを再び選択する。矢印322で示すように、命令処理回路102は、メモリロード命令302(2)のアドレス304がエントリ306(0)〜306(X)のうちのいずれかに見出されるかどうかを判定するために、PAT104をチェックし、今回はエントリ306(0)を見つける。応答して、命令処理回路102は、メモリロード命令302(2)がメモリロード命令302(2)よりも古い保留中のメモリ命令302(0)〜302(1)のうちの1つまたは複数の前に実施されることを防止する。この例では、明快のために、PAT104は任意選択のハザードインジケータフィールドを含まず、したがって、PAT104がRAWハザードの追跡のみに関連付けられていると想定されている。したがって、命令処理回路102は、メモリロード命令302(2)が保留中のメモリストア命令302(0)の前に実施されることを防止する。図3Cに見られるように、命令処理回路102は、矢印324で示すように、メモリロード命令302(2)の前にメモリストア命令302(0)のインオーダーディスパッチを実行することによって、メモリロード命令302(2)が保留中のメモリストア命令302(0)の前に実施されることを防止する。いくつかの態様は、命令処理回路102が、メモリロード命令302(2)によるデータの早期リターンを防止することによって、メモリロード命令302(2)が保留中のメモリストア命令302(0)の前に実施されることを防止することができることを規定する場合がある。
【００３２】
ハザード318がRARハザードであるいくつかの態様では、命令処理回路102は、メモリロード命令302(2)が保留中のメモリロード命令302(1)の前に実施されることを防止することができることを理解されたい。ハザード318がリソース制約ハザードである態様によれば、命令処理回路102は、メモリロード命令302(2)がメモリロード命令302(2)よりも古い保留中のメモリ命令302(0)〜302(1)のうちのいずれかの前に実施されることを防止することができる。いくつかの態様は、ハザード318のタイプが図2のハザードインジケータ210などのハザードインジケータに基づいて判定され得ることを規定する場合がある。いくつかの態様では、命令処理回路102は、図2のバイアスカウンタ値214とバイアスしきい値216を比較するなど、バイアスカウンタ値に基づいて、メモリロード命令302(2)が保留中のメモリ命令302(0)〜302(1)の前に実施されることを防止すべきかどうかを判定し得る。
【００３３】
図1のPAT104を使用してメモリ命令パントを予測するための例示的な動作を示すために、図4A〜図4Cが提供される。明快のために、図4A〜図4Cについて説明する際に、図1、図2、および図3A〜図3Cの要素が参照される。図4Aの動作は、図1の命令処理回路102が命令ストリーム300中でメモリロード命令302(2)などのメモリ命令を検出することから始まる(ブロック400)。命令処理回路102は次に、検出されたメモリ命令302(2)のアドレス304がPAT104のエントリ306(0)に存在するかどうかを判定する(ブロック402)。存在しない場合、メモリ命令302(2)は以前のメモリ命令パントに関連付けられず、したがって、命令処理回路102は命令ストリーム300の処理を続行する(ブロック404)。次いで、処理は図4Cのブロック418において再開する。
【００３４】
決定ブロック402において、検出されたメモリ命令302(2)のアドレス304が存在すると判定された場合、命令処理回路102は、いくつかの態様では、PAT104のエントリ306(0)のバイアスカウンタフィールド212のバイアスカウンタ値214がバイアスしきい値218を超えるかどうかをさらに判定し得る(ブロック406)。超えない場合、命令処理回路102は、メモリ命令パントの可能性は比較的低いと結論付けることができる。その場合、命令処理回路102は、命令ストリーム300の従来の処理を続行する(ブロック404)。命令処理回路102が任意選択のバイアスカウンタ値214を利用しない場合、または、任意選択の決定ブロック406において、バイアスカウンタ値214がバイアスしきい値218を超えると命令処理回路102が判定する場合、処理は図4Bのブロック408において再開する。
【００３５】
次に図4Bを参照すると、命令処理回路102は、メモリ命令パントをプリエンプトするために、検出されたメモリ命令302(2)が検出されたメモリ命令302(2)よりも古い少なくとも1つの保留中のメモリ命令302(0)〜302(1)の前に実施されることを防止する(ブロック408)。いくつかの態様では、検出されたメモリ命令302(2)が少なくとも1つの保留中のメモリ命令302(0)〜302(1)の前に実施されることを防止するためのブロック408の動作は、検出されたメモリ命令302(2)よりも古い少なくとも1つの保留中のメモリ命令302(0)〜302(1)のインオーダーディスパッチを実行することを備え得る(ブロック409)。いくつかの態様は、検出されたメモリ命令302(2)が少なくとも1つの保留中のメモリ命令302(0)〜302(1)の前に実施されることを防止するためのブロック408の動作が、検出されたメモリ命令302(2)よりも古い少なくとも1つの保留中のメモリ命令302(0)〜302(1)が完了するまで、検出されたメモリ命令302(2)によるデータの早期リターンを防止することを備え得ることを規定する場合がある(ブロック410)。
【００３６】
いくつかの態様では、検出されたメモリ命令302(2)が少なくとも1つの保留中のメモリ命令302(0)〜302(1)の前に実施されることを防止するためのブロック408の動作は、命令処理回路102がPAT104のエントリ306(0)に関連付けられたハザードのタイプを最初に判定することによって達成され得る(ブロック411)。いくつかの態様は、ハザードのタイプが図2のハザードインジケータ210などのハザードインジケータを使用して確認され得ることを規定する場合がある。いくつかの態様によれば、各々が特定のハザードタイプに関連付けられた複数のPAT104が提供され得る。
【００３７】
決定ブロック411においてPAT104のエントリ306(0)がRAWハザードに関連付けられていると判定された場合、命令処理回路102は、検出されたメモリ命令302(2)が検出されたメモリ命令302(2)よりも古い任意の保留中のメモリストア命令302(0)の前に実施されることを防止することができる(ブロック412)。決定ブロック411においてPAT104のエントリ306(0)がRARハザードに関連付けられていると判定された場合、命令処理回路102は、検出されたメモリ命令302(2)が検出されたメモリ命令302(2)よりも古いすべての保留中のメモリロード命令302(1)の前に実施されることを防止することができる(ブロック414)。PAT104のエントリ306(0)がリソース制約ハザードに関連付けられている場合、命令処理回路102は、検出されたメモリ命令302(2)が検出されたメモリ命令302(2)よりも古いすべての保留中のメモリ命令302(0)〜302(1)の前に実施されることを防止することができる(ブロック416)。次いで、処理は図4Cのブロック418において再開する。
【００３８】
図4Cでは、命令処理回路102は、いくつかの態様では、検出されたメモリ命令302(2)よりも古い少なくとも1つの保留中のメモリ命令302(0)〜302(1)のうちの保留中のメモリ命令302(0)の実行時に、検出されたメモリ命令302(2)に関連付けられたハザード318が発生したかどうかをさらに判定し得る(ブロック418)。発生しなかった場合、命令処理回路102は、命令ストリーム300の処理を続行する(ブロック420)。しかしながら、決定ブロック418においてハザード318が発生したと判定された場合、命令処理回路102は、任意選択のバイアスカウンタ値214が用いられるいくつかの態様によれば、検出されたメモリ命令302(2)のアドレス304がPAT104のエントリ306(0)に存在するかどうかを判定し得る(ブロック422)。存在しない場合、命令処理回路102は、バイアスカウンタ値214を増分し得る(ブロック424)。次いで、命令処理回路102は、検出されたメモリ命令302(2)および少なくとも1つの保留中のメモリ命令302(0)を再実行する(ブロック426)。
【００３９】
決定ブロック422においてアドレス304が存在しないと命令処理回路102が判定した場合、または命令処理回路102が任意選択のバイアスカウンタ値214を使用しない場合、命令処理回路102はPAT104内にエントリ306(0)を生成することができ、エントリ306(0)は、検出されたメモリ命令302(2)のアドレス304を備える(ブロック428)。命令処理回路102は次に、検出されたメモリ命令302(2)および少なくとも1つの保留中のメモリ命令302(0)を再実行する(ブロック426)。次いで、命令処理回路102は、命令ストリーム300の処理を続行する(ブロック420)。
【００４０】
本明細書で開示する態様に従ってPATを使用してメモリ命令パントを予測することは、任意のプロセッサベースデバイスにおいて実現されるか、またはそれに組み込まれ得る。例としては、限定はしないが、セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビジョン、チューナー、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、およびポータブルデジタルビデオプレーヤがある。
【００４１】
この点について、図5は、図1に示す命令処理回路102を用いることができるプロセッサベースシステム500の一例を示す。この例では、プロセッサベースシステム500は、各々が1つまたは複数のプロセッサ504を含む、1つまたは複数の中央処理ユニット(CPU)502を含む。1つまたは複数のプロセッサ504は、図1の命令処理回路(IPC)102を含んでもよく、図4A〜図4Cに示す動作を実行し得る。CPU502は、マスターデバイスであり得る。CPU502は、一時的に記憶されたデータに迅速にアクセスするために、プロセッサ504に結合されたキャッシュメモリ506を有する場合がある。CPU502は、システムバス508に結合され、プロセッサベースシステム500に含まれるマスターデバイスとスレーブデバイスとを相互結合することができる。よく知られているように、CPU502は、システムバス508を介してアドレス情報、制御情報、およびデータ情報を交換することによって、これらの他のデバイスと通信する。たとえば、CPU502は、スレーブデバイスの一例として、メモリコントローラ510にバストランザクション要求を通信することができる。
【００４２】
他のマスターデバイスおよびスレーブデバイスがシステムバス508に接続され得る。図5に示すように、これらのデバイスは、例として、メモリシステム512、1つまたは複数の入力デバイス514、1つまたは複数の出力デバイス516、1つまたは複数のネットワークインターフェースデバイス518、および1つまたは複数のディスプレイコントローラ520を含むことができる。入力デバイス514は、限定はしないが、入力キー、スイッチ、音声プロセッサなどを含む、任意のタイプの入力デバイスを含むことができる。出力デバイス516は、限定はしないが、オーディオインジケータ、ビデオインジケータ、他の視覚インジケータなどを含む、任意のタイプの出力デバイスを含むことができる。ネットワークインターフェースデバイス518は、ネットワーク522との間のデータの交換を可能にするように構成された任意のデバイスとすることができる。ネットワーク522は、限定はしないが、ワイヤードまたはワイヤレスネットワーク、プライベートまたは公衆ネットワーク、ローカルエリアネットワーク(LAN)、ワイドローカルエリアネットワーク(WLAN)、およびインターネットを含む、任意のタイプのネットワークとすることができる。ネットワークインターフェースデバイス518は、任意のタイプの所望の通信プロトコルをサポートするように構成され得る。メモリシステム512は、1つまたは複数のメモリユニット524(0〜N)を含むことができる。
【００４３】
CPU502はまた、1つまたは複数のディスプレイ526に送られる情報を制御するために、システムバス508を介してディスプレイコントローラ520にアクセスするように構成され得る。ディスプレイコントローラ520は、1つまたは複数のビデオプロセッサ528を介して表示されるべき情報をディスプレイ526に送り、1つまたは複数のビデオプロセッサ528は、表示されるべき情報をディスプレイ526に適したフォーマットになるように処理する。ディスプレイ526は、限定はしないが、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイなどを含む、任意のタイプのディスプレイを含むことができる。
【００４４】
当業者は、本明細書で開示する態様に関して説明する様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムが、電子ハードウェア、メモリもしくは別のコンピュータ可読媒体に記憶され、プロセッサもしくは他の処理デバイスによって実行される命令、またはその両方の組合せとして実装され得ることをさらに諒解されよう。本明細書で説明するマスターデバイスおよびスレーブデバイスは、例として、任意の回路、ハードウェア構成要素、集積回路(IC)、またはICチップにおいて用いられてもよい。本明細書で開示するメモリは、任意のタイプおよびサイズのメモリであってもよく、任意のタイプの所望の情報を記憶するように構成されてもよい。この互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップについて、上記では概してそれらの機能に関して説明した。そのような機能がどのように実装されるかは、特定の適用例、設計選択、および/またはシステム全体に課される設計制約によって決まる。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装決定は、本開示の範囲からの逸脱を引き起こすものと解釈されるべきではない。
【００４５】
本明細書で開示する態様に関して説明する様々な例示的な論理ブロック、モジュール、および回路は、プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明する機能を実行するように設計されたそれらの任意の組合せを用いて実装または実行され得る。プロセッサは、マイクロプロセッサであってもよいが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であってもよい。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装されてもよい。
【００４６】
本明細書で開示する態様は、ハードウェアにおいて、また、ハードウェアに記憶された命令において具現化されてもよく、たとえば、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られている任意の他の形態のコンピュータ可読媒体内に存在してもよい。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体はプロセッサと一体であってもよい。プロセッサおよび記憶媒体は、ASIC内に存在してもよい。ASICは、リモート局内に存在してもよい。代替として、プロセッサおよび記憶媒体は、個別構成要素としてリモート局、基地局、またはサーバ内に存在してもよい。
【００４７】
本明細書の例示的な態様のうちのいずれかにおいて説明する動作ステップは、例および説明を提供するために記載されることにも留意されたい。説明した動作は、図示したシーケンス以外の多数の異なるシーケンスにおいて実行される場合がある。さらに、単一の動作ステップにおいて説明した動作は、実際にはいくつかの異なるステップにおいて実行される場合がある。加えて、例示的な態様において説明した1つまたは複数の動作ステップが組み合わされる場合がある。フローチャート図に示した動作ステップは、当業者には容易に明らかであるように、多数の異なる変更を受ける場合があることを理解されたい。当業者は、情報および信号が様々な異なる技術および技法のうちのいずれかを使用して表され得ることも理解されよう。たとえば、上記の説明全体にわたって参照され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁性粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表され得る。
【００４８】
本開示の前述の説明は、いかなる当業者も本開示を作成または使用できるようにするために提供される。本開示に対する様々な変更は、当業者には容易に明らかになり、本明細書で定義する一般原理は、本開示の趣旨または範囲から逸脱することなく、他の変形形態に適用され得る。したがって、本開示は、本明細書で説明する例および設計に限定されるものではなく、本明細書で開示する原理および新規の特徴と一致する最も広い範囲を与えられるべきである。
【符号の説明】
【００４９】
100  アウトオブオーダー(OOO)コンピュータプロセッサ、OOOコンピュータプロセッサ
102  命令処理回路、命令処理回路(IPC)
104  PAT
106  メモリインターフェース回路
108  命令キャッシュ
110  ロード/ストアユニット
112  データキャッシュ
114  ロード/ストアキュー
116  実行パイプライン
118  フロントエンド回路
120  実行ユニット
122  完了ユニット
124  レジスタ
126  汎用レジスタ(GPR)、GPR
128  プログラムカウンタ
130  リンクレジスタ
132  フェッチ/復号パイプラインステージ
134  命令キュー
200  PAT
202(0)〜202(Y)  エントリ
204  アドレスフィールド、フィールド
206  アドレス
208  ハザードインジケータフィールド、フィールド
210  ハザードインジケータ
212  バイアスカウンタフィールド、フィールド
214  バイアスカウンタ値
216  バイアスしきい値フィールド、フィールド
300  命令ストリーム
302(0)  メモリストア命令、メモリ命令
302(1)  メモリロード命令、メモリ命令
302(2)  メモリロード命令、メモリ命令
304  アドレス
306(0)〜306(X)  エントリ
308  アドレスフィールド
310、312、314、316、320、322、324  矢印
318  ハザード
500  プロセッサベースシステム
502  中央処理ユニット(CPU)、CPU
504  プロセッサ
506  キャッシュメモリ
508  システムバス
510  メモリコントローラ
512  メモリシステム
514  入力デバイス
516  出力デバイス
518  ネットワークインターフェースデバイス
520  ディスプレイコントローラ
522  ネットワーク
524(0〜N)  メモリユニット
526  ディスプレイ
528  ビデオプロセッサ
【図１】
2018523241.tif 000003
【図２】
2018523241.tif 000004
【図３Ａ】
2018523241.tif 000005
【図３Ｂ】
2018523241.tif 000006
【図３Ｃ】
2018523241.tif 000007
【図４Ａ】
2018523241.tif 000008
【図４Ｂ】
2018523241.tif 000009
【図４Ｃ】
2018523241.tif 000010
【図５】
2018523241.tif 000011
【手続補正書】
【提出日】平成30年2月15日(2018.2.15)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
アウトオブオーダー(OOO)コンピュータプロセッサ内の命令処理回路であって、
前記命令処理回路は、実行パイプラインのフロントエンド回路に通信可能に結合され、複数のエントリを提供するパント回避テーブル(PAT)を備え、
前記命令処理回路は、検出されたメモリ命令のアドレスが前記PATの前記複数のエントリのうちのエントリに存在するとの判定に応答して、メモリ命令パントをプリエンプトするために、
前記PATの前記エントリが関連付けられたハザードタイプを判定し、
前記PATの前記エントリがリードアフターライト(RAW)ハザードに関連付けられているとの判定に応答して、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い任意の保留中のメモリストア命令の前に実施されることを防止し、
前記PATの前記エントリがリードアフターリード(RAR)ハザードに関連付けられているとの判定に応答して、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い任意の保留中のメモリロード命令の前に実施されることを防止し、
前記PATの前記エントリがリソース制約ハザードに関連付けられているとの判定に応答して、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い任意の保留中のメモリ命令の前に実施されることを防止する
ように構成されることによって、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い少なくとも1つの保留中のメモリ命令の前に実施されることを防止するように構成される、
命令処理回路。
【請求項２】
前記命令処理回路が、前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令のインオーダーディスパッチを実行するように構成されることによって、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令の前に実施されることを防止するように構成される、請求項1に記載の命令処理回路。
【請求項３】
前記命令処理回路が、前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令が完了するまで、前記検出されたメモリ命令によるデータの早期リターンを防止するように構成されることによって、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令の前に実施されることを防止するように構成される、請求項1に記載の命令処理回路。
【請求項４】
前記PATの前記エントリのハザードインジケータに基づいて、前記ハザードタイプを判定するようにさらに構成される、請求項1に記載の命令処理回路。
【請求項５】
前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令のうちの保留中のメモリ命令の実行時に、前記検出されたメモリ命令に関連付けられたハザードが発生したかどうかを判定し、
前記検出されたメモリ命令に関連付けられた前記ハザードが発生したとの判定に応答して、
前記PAT内に前記エントリを生成することであって、前記エントリが、前記検出されたメモリ命令の前記アドレスを備える、生成することと、
前記検出されたメモリ命令および前記少なくとも1つの保留中のメモリ命令を再実行することと
を行うようにさらに構成される、請求項1に記載の命令処理回路。
【請求項６】
前記PAT内に前記エントリを生成する前に、
前記検出されたメモリ命令の前記アドレスが前記PATの前記エントリに存在するかどうかを判定し、
前記検出されたメモリ命令の前記アドレスが前記エントリに存在するとの判定に応答して、前記エントリのバイアスカウンタフィールドのバイアスカウンタ値を増分し、
前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令の前に実施されることを防止する前に、前記PATの前記エントリの前記バイアスカウンタフィールドの前記バイアスカウンタ値がバイアスしきい値を超えるかどうかを判定する
ようにさらに構成され、
前記命令処理回路が、
前記検出されたメモリ命令の前記アドレスが前記PATの前記エントリに存在しないとの判定に応答して、前記PAT内に前記エントリを生成し、
前記バイアスカウンタ値が前記バイアスしきい値を超えるとの判定に応答して、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令の前に実施されることを防止する
ように構成される、請求項5に記載の命令処理回路。
【請求項７】
集積回路(IC)に組み込まれる、請求項1に記載の命令処理回路。
【請求項８】
セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビジョン、チューナー、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、およびポータブルデジタルビデオプレーヤからなるグループから選択されるデバイスに組み込まれる、請求項1に記載の命令処理回路。
【請求項９】
アウトオブオーダー(OOO)コンピュータプロセッサ内の命令処理回路であって、
パント回避テーブル(PAT)内の複数のエントリを提供するための手段と、
検出されたメモリ命令のアドレスが前記PATの前記複数のエントリのうちのエントリに存在するとの判定に応答して、前記PATの前記エントリが関連付けられているハザードタイプを判定するための手段と、
前記PATの前記エントリがリードアフターライト(RAW)ハザードに関連付けられているとの判定に応答して、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い任意の保留中のメモリストア命令の前に実施されることを防止するための手段と、
前記PATの前記エントリがリードアフターリード(RAR)ハザードに関連付けられているとの判定に応答して、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い任意の保留中のメモリロード命令の前に実施されることを防止するための手段と、
前記PATの前記エントリがリソース制約ハザードに関連付けられているとの判定に応答して、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い任意の保留中のメモリ命令の前に実施されることを防止するための手段と
を備える命令処理回路。
【請求項１０】
メモリ命令パントを予測するための方法であって、
命令ストリーム中でメモリ命令を検出するステップと、
前記検出されたメモリ命令のアドレスがパント回避テーブル(PAT)のエントリに存在するかどうかを判定するステップと、
前記検出されたメモリ命令の前記アドレスが前記エントリに存在するとの判定に応答して、
前記PATの前記エントリが関連付けられたハザードタイプを判定し、
前記PATの前記エントリがリードアフターライト(RAW)ハザードに関連付けられているとの判定に応答して、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い任意の保留中のメモリストア命令の前に実施されることを防止し、
前記PATの前記エントリがリードアフターリード(RAR)ハザードに関連付けられているとの判定に応答して、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い任意の保留中のメモリロード命令の前に実施されることを防止し、
前記PATの前記エントリがリソース制約ハザードに関連付けられているとの判定に応答して、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い任意の保留中のメモリ命令の前に実施されることを防止する
ことによって、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い少なくとも1つの保留中のメモリ命令の前に実施されることを防止するステップと
を備える方法。
【請求項１１】
前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令の前に実施されることを防止するステップが、前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令のインオーダーディスパッチを実行するステップを備える、請求項10に記載の方法。
【請求項１２】
前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令の前に実施されることを防止するステップが、前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令が完了するまで、前記検出されたメモリ命令によるデータの早期リターンを防止するステップを備える、請求項10に記載の方法。
【請求項１３】
前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令の前に実施されることを防止するステップが、前記PATの前記エントリのハザードインジケータに基づく、請求項10に記載の方法。
【請求項１４】
前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令のうちの保留中のメモリ命令のディスパッチ時に、前記検出されたメモリ命令に関連付けられたハザードが発生したかどうかを判定するステップと、
前記検出されたメモリ命令に関連付けられた前記ハザードが発生したとの判定に応答して、
前記PAT内に前記エントリを生成するステップであって、前記エントリが、前記検出されたメモリ命令の前記アドレスを備える、ステップと、
前記検出されたメモリ命令および前記少なくとも1つの保留中のメモリ命令を再実行するステップと
をさらに備える、請求項10に記載の方法。
【請求項１５】
前記PAT内に前記エントリを生成する前に、
前記検出されたメモリ命令の前記アドレスが前記PATの前記エントリに存在するかどうかを判定するステップと、
前記検出されたメモリ命令の前記アドレスが前記エントリに存在するとの判定に応答して、前記エントリのバイアスカウンタフィールドのバイアスカウンタ値を増分するステップと、
前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令の前に実施されることを防止する前に、前記PATの前記エントリの前記バイアスカウンタフィールドの前記バイアスカウンタ値がバイアスしきい値を超えるかどうかを判定するステップと
をさらに備え、
前記PAT内に前記エントリを生成するステップが、前記検出されたメモリ命令の前記アドレスが前記PATの前記エントリに存在しないとの判定に応答し、
前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令の前に実施されることを防止するステップが、前記バイアスカウンタ値が前記バイアスしきい値を超えるとの判定に応答する、
請求項14に記載の方法。
【請求項１６】
プロセッサによって実行されると、前記プロセッサに、
命令ストリーム中でメモリ命令を検出することと、
前記検出されたメモリ命令のアドレスがパント回避テーブル(PAT)のエントリに存在するかどうかを判定することと、
前記検出されたメモリ命令の前記アドレスが前記エントリに存在するとの判定に応答して、メモリ命令パントをプリエンプトするために、
前記PATの前記エントリが関連付けられたハザードタイプを判定することと、
前記PATの前記エントリがリードアフターライト(RAW)ハザードに関連付けられているとの判定に応答して、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い任意の保留中のメモリストア命令の前に実施されることを防止することと、
前記PATの前記エントリがリードアフターリード(RAR)ハザードに関連付けられているとの判定に応答して、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い任意の保留中のメモリロード命令の前に実施されることを防止することと、
前記PATの前記エントリがリソース制約ハザードに関連付けられているとの判定に応答して、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い任意の保留中のメモリ命令の前に実施されることを防止することと
を前記プロセッサに行わせることによって、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い少なくとも1つの保留中のメモリ命令の前に実施されることを防止することと
を行わせるコンピュータ実行可能命令を記憶したコンピュータ可読記憶媒体。
【請求項１７】
前記プロセッサによって実行されると、前記プロセッサに、前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令のインオーダーディスパッチを実行することによって、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令の前に実施されることを防止することをさらに行わせるコンピュータ実行可能命令を記憶した、請求項16に記載のコンピュータ可読記憶媒体。
【請求項１８】
前記プロセッサによって実行されると、前記プロセッサに、前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令が完了するまで、前記検出されたメモリ命令によるデータの早期リターンを防止することによって、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令の前に実施されることを防止することをさらに行わせるコンピュータ実行可能命令を記憶した、請求項16に記載のコンピュータ可読記憶媒体。
【請求項１９】
前記プロセッサによって実行されると、前記プロセッサに、
前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令のうちの保留中のメモリ命令の実行時に、前記検出されたメモリ命令に関連付けられたハザードが発生したかどうかを判定することと、
前記検出されたメモリ命令に関連付けられた前記ハザードが発生したとの判定に応答して、
前記PAT内に前記エントリを生成することであって、前記エントリが、前記検出されたメモリ命令の前記アドレスを備える、生成することと、
前記検出されたメモリ命令および前記少なくとも1つの保留中のメモリ命令を再実行することと
をさらに行わせるコンピュータ実行可能命令を記憶した、請求項16に記載のコンピュータ可読記憶媒体。
【請求項２０】
前記プロセッサによって実行されると、前記プロセッサに、
前記PAT内に前記エントリを生成する前に、
前記検出されたメモリ命令の前記アドレスが前記PATの前記エントリに存在するかどうかを判定することと、
前記検出されたメモリ命令の前記アドレスが前記エントリに存在するとの判定に応答して、前記エントリのバイアスカウンタフィールドのバイアスカウンタ値を増分することと、
前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令の前に実施されることを防止する前に、前記PATの前記エントリの前記バイアスカウンタフィールドの前記バイアスカウンタ値がバイアスしきい値を超えるかどうかを判定することと、
前記検出されたメモリ命令の前記アドレスが前記PATの前記エントリに存在しないとの判定に応答して、前記PAT内に前記エントリを生成することと、
前記バイアスカウンタ値が前記バイアスしきい値を超えるとの判定に応答して、前記検出されたメモリ命令が前記検出されたメモリ命令よりも古い前記少なくとも1つの保留中のメモリ命令の前に実施されることを防止することと
をさらに行わせるコンピュータ実行可能命令を記憶した、請求項19に記載のコンピュータ可読記憶媒体。
【国際調査報告】
2018523241.tif 000012
2018523241.tif 000013
2018523241.tif 000014