(57)【要約】本明細書では、小さなストアオペレーションをフュージョンして、より少なくより大きなストアオペレーションにするストアフュージョンのためのシステム及び方法について説明する。システムは、隣接する一対のオペレーションが連続するストアオペレーションであることを検出する。隣接するマイクロオペレーションは、隣接するディスパッチスロットを流れるマイクロオペレーションを指し、連続するストアマイクロオペレーションは、隣接するマイクロオペレーションの両方がストアマイクロオペレーションであることを指す。次に、連続するストアオペレーションが評価され、データサイズが同じであるかどうか、及び、ストアオペレーションアドレスが連続しているかどうかが判別される。次いで、２つのストアオペレーションがフュージョンされ、２倍のデータサイズを有する１つのストアオペレーションと、１つのストアデータＨＩオペレーションと、が形成される。【選択図】図２
2021504788.tif 000002
【特許請求の範囲】
【請求項１】
ストアマイクロオペレーションをフュージョンするための方法であって、
隣接するマイクロオペレーションが連続するストアマイクロオペレーションであるかどうかを判別することであって、前記隣接するマイクロオペレーションは、隣接するディスパッチスロットを流れるマイクロオペレーションを指し、前記連続するストアマイクロオペレーションは、前記隣接するマイクロオペレーションの両方がストアマイクロオペレーションであることを指す、ことと、
前記連続するストアマイクロオペレーションが同じデータサイズを有するかどうかを判別することと、
前記連続するストアマイクロオペレーションが連続するアドレスにアクセスしているかどうかを判別することと、
前記連続するストアマイクロオペレーションを、２倍の前記データサイズを有するストアマイクロオペレーション及びストアデータオンリーマイクロオペレーションにフュージョンすることと、を含む、
方法。
【請求項２】
前記２倍のデータサイズを有するストアマイクロオペレーション及び前記ストアデータオンリーマイクロオペレーションに同じストアキューエントリ番号を設定することをさらに含む、
請求項１の方法。
【請求項３】
前記ストアデータオンリーマイクロオペレーション内のデータが前記２倍のデータサイズを有するストアマイクロオペレーションに関して上位データ部分であることを示すために、マイクロオペレーションタイプを前記ストアデータオンリーマイクロオペレーションに設定することをさらに含む、
請求項２の方法。
【請求項４】
ストアされる場合に前記データのシフトを容易にするために、少なくとも１つの制御ビットをストアキューに送信することをさらに含む、
請求項３の方法。
【請求項５】
前記２倍のデータサイズを有するストアマイクロオペレーション内のデータがストアデータフィールドの下位部分にストアされ、前記ストアデータオンリーマイクロオペレーション内のデータが前記ストアデータフィールドの上位部分にストアされる、
請求項１の方法。
【請求項６】
前記ストアデータオンリーマイクロオペレーションは、ストアキューエントリ及びアドレス生成キューエントリの使用を抑制する、
請求項１の方法。
【請求項７】
前記連続するマイクロオペレーションの各々のアドレッシングモードを評価することをさらに含む、
請求項１の方法。
【請求項８】
下位アドレスを有する前記連続するストアマイクロオペレーションは、前記２倍のデータサイズを有するストアマイクロオペレーションに変換される、
請求項１の方法。
【請求項９】
上位アドレスを有する前記連続するストアマイクロオペレーションは、前記ストアデータオンリーマイクロオペレーションに変換される、
請求項８の方法。
【請求項１０】
ストアリタイア指標は、前記ストアデータオンリーマイクロオペレーションに関して抑えられる、
請求項１の方法。
【請求項１１】
前記２倍のデータサイズを有するストアマイクロオペレーション及び前記ストアデータオンリーマイクロオペレーションのうち少なくとも一方に関する例外が発生すると、フュージョンを行わずに前記隣接するマイクロオペレーションが再実行される、
請求項１の方法。
【請求項１２】
前記ストアデータオンリーマイクロオペレーションのために上位ストアビットをメモリリネーム追跡構造に設定することと、
前記上位ストアビットを用いて、ストアキューエントリを決定することと、をさらに含む、
請求項１の方法。
【請求項１３】
ストアマイクロオペレーションをフュージョンするプロセッサであって、
マイクロオペレーションをディスパッチするように構成されたディスパッチロジックと、
前記ディスパッチロジックに接続されたストアフュージョン検出ロジックと、を備え、
前記ストアフュージョン検出ロジックは、
隣接するマイクロオペレーションが連続するストアマイクロオペレーションであるかどうかを判別することであって、前記隣接するマイクロオペレーションは、隣接するディスパッチスロットを流れるマイクロオペレーションを指し、前記連続するストアマイクロオペレーションは、前記隣接するマイクロオペレーションの両方がストアマイクロオペレーションであることを指す、ことと、
前記連続するストアマイクロオペレーションが同じデータサイズを有するかどうかを判別することと、
前記連続するストアマイクロオペレーションが連続するアドレスにアクセスしているかどうかを判別することと、
前記連続するストアマイクロオペレーションを、２倍の前記データサイズを有するストアマイクロオペレーション及びストアデータオンリーマイクロオペレーションにフュージョンすることと、
を行うように構成されている、
プロセッサ。
【請求項１４】
前記ディスパッチロジック及び前記ストアフュージョン検出ロジックは、前記２倍のデータサイズを有するストアマイクロオペレーション及び前記ストアデータオンリーマイクロオペレーションに同じストアキューエントリ番号を設定するように構成されている、
請求項１３のプロセッサ。
【請求項１５】
前記ディスパッチロジック及び前記ストアフュージョン検出ロジックは、前記ストアデータオンリーマイクロオペレーション内のデータが前記２倍のデータサイズを有するストアマイクロオペレーションに関して上位データ部分であることを示すために、マイクロオペレーションタイプを前記ストアデータオンリーマイクロオペレーションに設定するように構成されている、
請求項１４のプロセッサ。
【請求項１６】
ストアキューと、
前記ストアキューと通信する演算論理ユニットであって、ストアされる場合に前記データのシフトを容易にするために、少なくとも１つの制御ビットを前記ストアキューに送信するように構成された演算論理ユニットと、をさらに備える、
請求項１５のプロセッサ。
【請求項１７】
前記２倍のデータサイズを有するストアマイクロオペレーション内のデータがストアデータフィールドの下位部分にストアされ、前記ストアデータオンリーマイクロオペレーション内のデータが前記ストアデータフィールドの上位部分にストアされる、
請求項１３のプロセッサ。
【請求項１８】
前記ストアデータオンリーマイクロオペレーションは、ストアキューエントリ及びアドレス生成キューエントリの使用を抑制する、
請求項１３のプロセッサ。
【請求項１９】
下位アドレスを有する前記連続するストアマイクロオペレーションは、前記２倍のデータサイズを有するストアマイクロオペレーションに変換され、上位アドレスを有する前記連続するストアマイクロオペレーションは、前記ストアデータオンリーマイクロオペレーションに変換される、
請求項１３のプロセッサ。
【請求項２０】
ストアリタイア指標は、前記ストアデータオンリーマイクロオペレーションに関して抑えられ、前記２倍のデータサイズを有するストアマイクロオペレーション及び前記ストアデータオンリーマイクロオペレーションのうち少なくとも一方に関する例外が発生すると、フュージョンを行わずに前記隣接するマイクロオペレーションが再実行される、
請求項１３のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本願は、２０１７年１１月２７日に出願された米国特許出願第１５／８２２，５１５号の利益を主張するものであり、この内容は、本明細書に完全に記載されるかのように、引用により本明細書に組み込まれる。
【背景技術】
【０００２】
プロセッサは、一般に、フェッチステージと、デコード（又は、ディスパッチ）ステージと、実行ステージとを含む命令パイプラインに関連している。デコードステージは、フェッチキューから命令を取り出す。フェッチされた命令がストアオペレーションである場合、キューエントリは、演算論理ユニット（ＡＬＵ）スケジューラキュー（ＡＬＳＱ）、アドレス生成スケジューラキュー（ＡＧＳＱ）及びストアキュー（ＳＴＱ）に割り当てられる。従来のプロセッサは、サイクル当たり１つのストアオペレーションを実行する。サイクル当たりの命令数（ＩＰＣ）を増やすために、いくつかのプロセッサは、２ストアコミットアーキテクチャを用いる。これは、ダイ領域上の追加の制御ロジック及び増加した電力使用量を犠牲にして行われる。
【０００３】
添付図面と併せて例として与えられる以下の説明から、より詳細な理解を得ることができる。
【図面の簡単な説明】
【０００４】
【図１】特定の実施形態による、プロセッサのコア処理ユニットのハイレベルブロック及びフロー図である。
【図２】特定の実施形態による、整数スケジューラ及び／又は実行ユニットのハイレベルブロック及びフロー図である。
【図３】特定の実施形態による、ロードストア／データキャッシュ（ＬＳＤＣ）ユニットのハイレベルブロック及びフロー図である。
【図４】特定の実施形態による、ストアフュージョンのための方法のフロー図である。
【図５】１つ以上の開示された実施形態が実施され得る例示的なデバイスのブロック図である。
【発明を実施するための形態】
【０００５】
プロセッサは、一般に、フェッチステージと、デコード（又は、ディスパッチ）ステージと、実行ステージと、を含む命令パイプラインに従って動作する。デコードステージ又はディスパッチステージは、フェッチキューから命令を取り出す。フェッチされた命令がストアマイクロオペレーションである場合、キューエントリは、演算論理ユニット（ＡＬＵ）スケジューラキュー（ＡＬＳＱ）、アドレス生成スケジューラキュー（ＡＧＳＱ）及びストアキュー（ＳＴＱ）に割り当てられる。各ストアマイクロオペレーションは独立に実行され、従来のプロセッサは、サイクル当たり１つのストアマイクロオペレーションを実行する。
【０００６】
本明細書では、小さいストアマイクロオペレーションをフュージョンして、より少数のより大きいストアマイクロオペレーションにするストアフュージョンのためのシステム及び方法について説明する。特に、システムは、隣接するマイクロオペレーションが連続するストアマイクロオペレーションであることを検出する。次に、連続するストアマイクロオペレーションが評価（reviewed）され、データサイズが同じかどうか、及び、ストアマイクロオペレーションのアドレスが連続しているかどうかが判別される。上記の条件が満たされる場合、連続するストアマイクロオペレーションは、２倍のデータサイズを有する１つのストアマイクロオペレーションと、２つのストア毎に１つの、２つのストアデータマイクロオペレーションと、を形成するようにフュージョンされる。これにより、ＳＴＱ及びＡＧＳＱキューエントリを保存することによって性能が向上し、例えば、アドレス生成の回数を減らしたり、ストアパイプフロー（store pipe flows）及びキャッシュに書き込むストアコミット（store commits）の数を減らすことによって、電力を節約する。ストアフュージョンシステム及び方法は、例えば、更なる複雑さ、電力要求の増加、及び、より高い動作周波数を達成することの困難さの追加を含む、２ストアコミットの欠点を無くして、サイクルアーキテクチャ当たり２ストアのＩＰＣゲインの多くを効果的に実現する。
【０００７】
図１は、特定の実施形態による、プロセッサ１００のコア処理ユニット１０５のハイレベルブロック及びフロー図である。コア処理ユニット１０５は、マイクロオペレーション（図１においてマイクロｏｐとして示されている）をスケジューラ及び実行ユニット（ＳＣＥＸ）１１５に提供するデコーダユニット１１０を含む。デコーダユニット１１０は、キャッシュ１２２及びマイクロｏｐキャッシュ１２４に接続された分岐予測器１２０を含む。キャッシュ１２２は、デコーダ１２６に接続されている。デコーダ１２６及びマイクロｏｐキャッシュ１２４は、マイクロｏｐキュー１２８に接続されている。このマイクロｏｐキューは、ディスパッチロジック１２９を介してオペレーションをディスパッチする。ストアフュージョン検出ロジック（ＳＦＤＬ）１２８は、ディスパッチロジック１２９に接続されている。
【０００８】
ＳＣＥＸ１１５は、整数ＳＣＥＸ１３０及び浮動小数点ＳＣＥＸ１３２を含む。これらの両方は、キャッシュ１３４に接続されている。キャッシュ１３４は、さらに、Ｌ２キャッシュ１３６、ＬＤＱ１３８及びＳＴＱ１４０に接続されている。整数ＳＣＥＸ１３０は、スケジューラ１５１に接続された整数リネーマ（integer renamer）１５０を含む。このスケジューラは、演算論理ユニット（ＡＬＵ）スケジューラキュー（ＡＬＳＱ）１５２と、アドレス生成ユニット（ＡＧＵ）スケジューラキュー（ＡＧＳＱ）１５４と、を含む。スケジューラ１５１、特にＡＬＳＱ１５２及びＡＧＳＱ１５４の各々は、ＡＬＵ０〜ＡＬＵ３  １５６及びＡＧＵ０〜ＡＧＵ１  １５８に接続されている。一対のマルチプレクサＭ０，Ｍ１  １５７とストアデータインタフェース１５９とは、ＡＬＵ０及びＡＬＵ１をＳＴＱ１４０に接続し、ＡＬＵ２及びＡＬＵ３をＳＴＱ１４０に接続する。ＬＤＱ１３８及びＳＴＱ１４０は、パス１８０を介してスケジューラ１５１に接続されており、割り当て解除信号を送信する。また、整数ＳＣＥＸ１３０は、整数物理ファイルレジスタ１６０を含む。浮動小数点ＳＣＥＸ１３２は、スケジューラ１７２に接続された浮動小数点リネーマ（floating point renamer）１７０を含む。スケジューラ１７２は、乗算器１７４及び加算器１７６に接続されている。浮動小数点ＳＣＥＸ１３２は、浮動小数点物理ファイルレジスタ１７８も含む。
【０００９】
パイプライン型プロセッサは、命令の安定したストリームがパイプラインに供給されるのを必要とする。分岐予測器１２０は、パイプライン型プロセッサにおいて何れのマイクロオペレーションのセットがフェッチされ、実行されるかを予測する。これらのマイクロオペレーションは、フェッチされ、キャッシュ１２２に記憶（ストア）され、デコーダ１２６によってデコードされる。マイクロｏｐキャッシュ１２４は、デコーダ１２６がキャッシュ１２２からのマイクロオペレーションをデコードする場合に、分岐予測器１２０からマイクロオペレーションをキャッシュする。マイクロｏｐキュー１２８は、ディスパッチロジック１２９を介して、実行されるマイクロオペレーションをディスパッチするために、デコーダ１２６及びマイクロｏｐキャッシュ１２４からのマイクロオペレーションをストアし、キューアップ（queues up）する。
【００１０】
従来のパイプラインアーキテクチャでは、各マイクロオペレーションは、独立してディスパッチされ、処理される。このため、場合によっては、処理が非効率になることがある。例えば、ストアマイクロオペレーションは、３つのコンポーネント（すなわち、ストアキューに向けられるロード／ストアオペレーション、ＡＧＳＱに向けられるアドレス生成オペレーション、及び、ＡＬＳＱに向けられるストアデータオペレーション）を含む。したがって、各ストアマイクロオペレーションは、ストアマイクロオペレーションを完了するために、３つのキューエントリ及び関連する処理を使用する。
【００１１】
実施形態によれば、ＳＦＤＬ１２８は、隣接するマイクロオペレーションが連続するストアマイクロオペレーションであるかどうかを判別する。ＳＦＤＬ１２８は、連続するストアマイクロオペレーションが同じデータサイズを有し、連続するアドレスにアクセスしているかどうかを確認する。実施形態では、ＳＦＤＬ１２８は、ストアマイクロオペレーションの各々のアドレッシングモードを確認する。例えば、４バイトのストアマイクロオペレーションの場合、第１ストアマイクロオペレーションのアドレッシングモードは、＋４の変位を有するベースレジスタＲを使用することができ、第２ストアマイクロオペレーションのアドレッシングモードは、＋８の変位を有するベースレジスタＲを使用することができる。この場合、第１ストアマイクロオペレーションのアドレスと第２ストアマイクロオペレーションのアドレスとが連続している。すなわち、同じレジスタが、連続する定数又は変位のオフセットと共に用いられている。実施形態では、変位は、正又は負とすることができる。
【００１２】
ストアマイクロオペレーションが同じデータサイズを有し、連続するアドレスを使用する場合、ＳＦＤＬ１２８は、連続するストアマイクロオペレーションを、データサイズが２倍の１つのストアマイクロオペレーションにフュージョンする。特に、下位アドレスのストアマイクロオペレーションは、データサイズｘのストアマイクロオペレーションからデータサイズ２ｘのストアマイクロオペレーションに変換され、上位アドレスのストアマイクロオペレーションは、データサイズｘのストアマイクロオペレーションからストアデータＨＩマイクロオペレーションに変換される。ストアデータＨＩマイクロオペレーションは、ロード／ストアマイクロオペレーション及びアドレス生成マイクロオペレーションコンポーネントが抑えられている（suppressed）。すなわち、ストアデータＨＩマイクロオペレーションは、ＡＬＳＱ１５２内のキューエントリのみを使用する。ストアフュージョンは、データサイズ２ｘのストアマイクロオペレーション内のより大きなデータサイズのストアマイクロオペレーションで利用可能な大きなＳＴＱ帯域幅を活用（leverages）するので、ＳＴＱ１４０及びＡＧＳＱ１５４内のキューエントリが必要ない。
【００１３】
エイジオーダー（age-ordered）のオペレーション又はインオーダーキュー（in-order queues）を維持するために、各ストアマイクロオペレーションは、特定のストアキューエントリ又はストアキュー識別子に関連付けられる。そのストアキューエントリは、ディスパッチ時にプログラム順序でストアマイクロオペレーションに割り当てられる（例えば、ストアマイクロオペレーションは、ストアキューエントリ０に割り当てられ、プログラム順序の次のストアマイクロオペレーションは、ストアキューエントリ１に割り当てられ、プログラム順序の次のストアマイクロオペレーションは、ストアキューエントリ２に割り当てられ、以下同様である）。ＳＦＤＬ１２８は、この情報を用いて、データサイズ２ｘのストアマイクロオペレーションとストアデータＨＩマイクロオペレーションとの両方に同じストアキューエントリ番号を設定する。また、ＳＦＤＬ１２８及びディスパッチロジック１２９は、マイクロオペレーションタイプをストアデータＨＩマイクロオペレーションに設定して、このデータが、データサイズ２ｘのストアマイクロオペレーションの上位部分であることを示す。ＡＬＵ０〜ＡＬＵ３  １５６は、マイクロオペレーションタイプを用いて、ストアデータＨＩマイクロオペレーション内のデータを用いて何を行う必要があるかを解釈する。
【００１４】
本明細書で説明するように、ＳＦＤＬ１２８が、連続するストアマイクロオペレーションをフュージョンすると、ディスパッチロジック１２９は、必要に応じて、データサイズ２ｘのストアマイクロオペレーション及びストアデータＨＩマイクロオペレーションを、ＡＬＳＱ１５２及びＡＧＳＱ１５４にディスパッチする。ＡＬＳＱ１５２及びＡＧＳＱ１５４は、必要に応じて、データサイズ２ｘのストアマイクロオペレーション及びストアデータＨＩマイクロオペレーションを、ＡＬＵ０〜ＡＬＵ３  １５６に発行する。ＡＬＵ０〜ＡＬＵ３  １５６は、ストアデータＨＩマイクロオペレーション内のデータがストアデータフィールドの上位又は上位部分に書き込まれることを示すために、制御ビットを、ストアフュージョン制御インタフェース１５９を介してＳＴＱ１４０に送信する。すなわち、制御ビットは、ストアデータＨＩマイクロオペレーション内のデータがストアされる場合にシフトされる必要があることを示す。データサイズ２ｘのストアマイクロオペレーション内のデータは、ストアデータフィールドの下位部分に書き込まれる。ＳＴＱ１４０は、必要な書き込みを実行する。実施形態では、データサイズ２ｘのストアマイクロオペレーションとストアデータＨＩマイクロオペレーションとの両方がデータを配信した後に、ストアロード転送オペレーションを実行することができる。
【００１５】
例として、以下の２つの命令について検討する。
ＭＯＶ［ＲＢＸ＋８］，Ｒ８（６４ｂデータサイズ）
ＭＯＶ［ＲＢＸ＋１６］，Ｒ９（６４ｂデータサイズ）
【００１６】
従来のアーキテクチャでは、上記の２つの命令は、２つのストアマイクロオペレーションになる。
ｍｏｖ．ｑ      ［ｒｂｘ＋８］，ｒ８
ｍｏｖ．ｑ      ［ｒｂｘ＋１６］，ｒ９
【００１７】
ストアフュージョン方法及びシステムによれば、２つのストアマイクロオペレーションは、以下となる。
ｍｏｖ．ｏ      ［ｒｂｘ＋８］，ｒ８
ｓｔｄａｔａｈｉ．ｑ  ｒ９
ここで、第１マイクロオペレーションは、１２８ビットのストアマイクロオペレーションであり、第２マイクロオペレーションは、ストアデータオンリーマイクロオペレーションである。本明細書で説明するように、ＡＬＵからＳＴＱに渡される制御ビットは、ストアデータオンリーマイクロオペレーションからのデータをＳＴＱの上位６４ｂに置くようにＳＴＱに指示する。これは、正の変位の例である。
【００１８】
別の正のアドレス方向の例では、命令は、ＭＯＶ  ｄｗｏｒｄ［ａｄｄｒ］命令の次にＭＯＶ  ｄｗｏｒｄ［ａｄｄｒ＋４］命令を続けたものであってもよい。この場合、第１ストアマイクロオペレーションは、第２ストアマイクロオペレーションよりも下位のアドレスにストアし、２つの４バイトのストアマイクロオペレーションは、１つの８バイトのストアマイクロオペレーションにフュージョンされる。特に、第１ストアマイクロオペレーションは、ＡＧＳＱ、ＳＴＱキューエントリ又はトークンを使用し、６４ビットのデータサイズを有するストアマイクロオペレーションに変換される。第２ストアマイクロオペレーションのストアデータマイクロオペレーションコンポーネントは、フュージョン済みＬＯストアデータであることを示すオペコード値（ｍｏｖと機能的に似ている）を有してもよい。第２ストアマイクロオペレーションは、ＡＧＳＱ、ＳＴＱキューエントリ又はトークンを使用せず、ストアデータオンリーマイクロオペレーションに変換される。ストアデータオンリーマイクロオペレーションは、フュージョン済みＨＩストアデータであることを示すオペコード値（即値が３２の即値左シフト（shift-left-immediate）と機能的に似ている）を有してもよい。
【００１９】
別の例では、負のアドレス方向が用いられてもよい。例えば、ＰＵＳＨ３２ｂ命令の次に別のＰＵＳＨ３２ｂ命令が続く場合、又は、ＭＯＶ  ｄｗｏｒｄ［ａｄｄｒ］の次にＭＯＶ  ｄｗｏｒｄ［ａｄｄｒ−４］命令が続く場合である。この場合、第２ストアマイクロオペレーションは、第１ストアマイクロオペレーションよりも下位のアドレスにストアし、２つの４バイトのストアマイクロオペレーションは、１つの８バイトのストアマイクロオペレーションにフュージョンされる。特に、第１ストアマイクロオペレーションは、ＡＧＳＱ、ＳＴＱキューエントリ又はトークンを使用せず、ストアデータオンリーマイクロオペレーションに変換される。ストアデータオンリーマイクロオペレーションは、フュージョン済みＨＩストアデータであることを示すオペコード値（即値が３２の即値左シフトと機能的に似ている）を有してもよい。第２ストアマイクロオペレーションは、ＡＧＳＱ、ＳＴＱキューエントリ又はトークンを使用し、６４ビットのデータサイズを有するストアマイクロオペレーションに変換される。第２ストアマイクロオペレーションのストアデータマイクロオペレーションコンポーネントは、フュージョン済みＬＯストアデータであることを示すオペコード値（ｍｏｖと機能的に似ている）を有してもよい。別の例では、命令は、ＰＵＳＨ６４ｂ命令の次に別のＰＵＳＨ６４ｂ命令を続けたもの、又は、ＭＯＶ  ｑｗｏｒｄ［ａｄｄｒ］の次にＭＯＶ  ｑｗｏｒｄ［ａｄｄｒ−８］命令を続けたものであってもよい。これは、データサイズが６４ビットから１２８ビットに倍増されることを除いて、同様に動作する。
【００２０】
ストアフュージョンに関するパイプライン処理には、さらなる考慮事項又は変更が存在する。図２のリタイアユニット２０８として示されているリタイアユニットは、ストアデータオンリーオペレーションにおいてストアリタイア指標を送らない。リタイアキュー２０８内のストアは、通常、サイクルにおいてリタイアされた（非投機的になる）ストアの数を示す「ストア」ビットであって、リタイヤハードウェアによって用いられる「ストア」ビットを有する。フュージョン済みストアにおけるストアデータオンリーオペレーションのためにこのストアリタイア指標を抑えることは、そのリタイアキューエントリにおいて単に「ストア」ビットを設定しないことによって実現可能である。
【００２１】
例外ハンドリングも、フュージョン済みストアのために変更される。１つのストアが、ページフォールト又はトラップ等のように、アーキテクチャ的又はマイクロアーキテクチャ的な例外を起こす可能性がある。しかしながら、フュージョン済みストアの場合には、例外ロジックは、単一のフュージョン済みストアでのみ例外を検出できるので、これらのストアを独立したオペレーションとして認識しない。例外ロジックは、何れのストアがアーキテクチャ的に例外を起こす可能性があったかを判別することができない。これは、フュージョン済みストアマイクロオペレーションが、リタイアキュー（例えば、リタイアキュー２０８）内のエクストラビットを有するアトミックグループとしてディスパッチされ、フュージョン済みストアオペレーションを示すことを要求することによって処理される。フュージョン済みストアオペレーションにおいてフォールト又はトラップが発生した場合、例外が再同期フォールトに変換され、命令が再実行される。この再実行では、ストアフュージョンメカニズムは、命令がフュージョンされることなくディスパッチされるように、１回のディスパッチサイクルの間、一時的に無効になる。例外が再発した場合、その例外は、従来の方法で処理される。
【００２２】
メモリリネームを伴うストアフュージョンを実施する場合、さらなる考慮事項が存在する。これらの考慮事項を考慮しない場合、メモリリネームの機会が失われる可能性がある。例えば、ストアフュージョンを使用しない場合、古いストア命令を同じアドレスに正確に一致させるロード命令は、古いストアに正常にメモリリネームすることができる。しかしながら、ストアフュージョンがある場合、古いストアが、フュージョン済みストアのＨＩ部分としてフュージョンされる場合がある。ロードアドレスは、フュージョン済みストアのアドレスと正確に一致せず、通常のメモリリネームロジックが、メモリリネームに失敗するロードを引き起こし、その結果、メモリリネームされたロードが再同期フォールトを発生させ、パフォーマンスが低下する。これは、実施形態では、フュージョン済みストアマイクロオペレーションを、当該マイクロオペレーションがメモリリネーム目的の実際のストアであるかのように動作させることによって解決されるが、フュージョン済みストアのＨＩ部分であることを示すストアデータＨＩマイクロオペレーションのメモリリネーム追跡構造（ｍｅｍｆｉｌｅとして知られる）内の追加のＨＩストアビットを用いて、そのマイクロオペレーションがフュージョン済みストアのＨＩ部分であることを記憶していることによって解決される。ロードが、ＨＩフュージョン済みストアにメモリリネームされると、ｍｅｍｆｉｌｅは、そのＨＩストアビットを、メモリリネームされたＳＴＱ  ＩＤ情報と共にロードに渡す。ロードは、ｍｅｍｆｉｌｅ内の全てのストアのＨＩストアビットを用いて、リネームされたＳＴＱ  ＩＤを、正しいストアを指すように調整する（ＨＩストアがＳＴＱエントリを占有していないため）。また、リネームが確認されると、ロードのＨＩストアビットが使用され、ロードのアドレスが、ストアのアドレス＋ロードデータサイズと正確に一致するのではなく、等しいことがチェックされる。これは、ロードが、フュージョン済みストアの上位半分のアドレスと正確に一致したので、メモリリネームが正しく成功したことを意味する。
【００２３】
図２は、特定の実施形態による、ディスパッチロジック２０１、ＳＦＤＬ  Ｏｐ０／１〜ＳＦＤＬ  Ｏｐ４／５  ２０２、及び、整数スケジューラ／実行ユニット２００の間のインタフェースのハイレベルブロック図である。特に、マイクロオペレーションＯｐ０〜Ｏｐ５は、ディスパッチロジック２０１内の関連するディスパッチスロットを介して整数スケジューラ／実行ユニット２００にディスパッチされ、ＳＦＤＬ  Ｏｐ０／１〜ＳＦＤＬ  Ｏｐ４／５  ２０２は、ストアフュージョン候補を決定するためにディスパッチロジック２０１に接続されている。
【００２４】
整数スケジューラ／実行ユニット２００は、整数リネーマ／マッパ２０３を含む。この整数リネーマ／マッパは、ＡＬＳＱ０〜ＡＬＳＱ３  ２０４、ＡＧＳＱ０〜ＡＧＳＱ１  ２０６及びリタイアキュー２０８に接続されている。ＡＬＳＱ０〜ＡＬＳＱ３  ２０４及びＡＧＳＱ０〜ＡＧＳＱ１  ２０６は、転送マルチプレクサ２１０に接続されている。この転送マルチプレクサは、ＡＬＵ０〜ＡＬＵ３  ２１２及びＡＧＵ０〜ＡＧＵ１  ２１４の各々に接続されている。ＡＬＵ０〜ＡＬＵ３  ２１２は、一対のマルチプレクサＭ０，Ｍ１  ２１３及びストアデータインタフェース２３２を介してＳＴＱ２１８に接続されている。ＡＧＵ０〜ＡＧＵ１  ２１４は、ＬＤＱ２１６、ＳＴＱ２１８及びリタイアキュー２０８に接続されている。整数スケジューラ／実行ユニット２００は、物理ファイルレジスタ２２０も含む。この物理ファイルレジスタ２２０は、ＡＬＵ０〜ＡＬＵ３  ２１２、ＬＤＱ２１６及びＳＴＱ２１８に接続されている。ＬＤＱ２１６及びＳＴＱ２１８は、パス２３０を介してＡＧＳＱ０〜ＡＧＳＱ１  ２０６に接続されており、割り当て解除信号を送信する。
【００２５】
図１と同様に、マイクロオペレーションは、隣接するマイクロオペレーションが連続するストアマイクロオペレーションであるかどうかを判別するために、ＳＦＤＬ  Ｏｐ０／１〜ＳＦＤＬ  Ｏｐ４／５  ２０２によって検査される。隣接するマイクロオペレーションとは、隣接するディスパッチスロットを流れるマイクロオペレーションを指し、連続するストアマイクロオペレーションとは、隣接するマイクロオペレーションの両方がストアマイクロオペレーションであることを指す。特に、ＳＦＤＬ  Ｏｐ０／１は、マイクロオペレーション０及び１からストアフュージョン候補を決定し、ＳＦＤＬ  Ｏｐ１／２は、マイクロオペレーション１及び２からストアフュージョン候補を決定し、ＳＦＤＬ  Ｏｐ２／３は、マイクロオペレーション２及び３からストアフュージョン候補を決定し、ＳＦＤＬ  Ｏｐ３／４は、マイクロオペレーション３及び４からストアフュージョン候補を決定し、ＳＦＤＬ  Ｏｐ４／５は、マイクロオペレーション４及び５からストアフュージョン候補を決定する。ＳＦＤＬ  Ｏｐ０／１〜ＳＦＤＬ  Ｏｐ４／５  ２０２の各々は、本明細書で説明するように、連続するストアマイクロオペレーションが同じデータサイズを有しているかどうか、及び、連続するアドレスにアクセスしているかどうかを確認する。ＳＦＤＬロジックは、殆ど並列に動作し、ストアフュージョンの適格性について、隣接するマイクロオペレーションの対を独立して確認する。しかしながら、優先順位は、最も古いマイクロオペレーションがより高い優先順位でフュージョンされるように適用される。さらに、マイクロオペレーションがフュージョン済みストアの一部になると、当該マイクロオペレーションは、次に古いＳＦＤＬブロックのためのストアフュージョンに関わるのに不適格である。例えば、Ｏｐ０、Ｏｐ１及びＯｐ２でディスパッチされる３つのストアマイクロオペレーションの全てが連続するバイト（連続アドレス）にあると想定する。ＳＦＤＬ  Ｏｐ０／１とＳＦＤＬ  Ｏｐ１／２とは、各々のオペレーションをフュージョンすることができると判別する。ＳＦＤＬ  Ｏｐ０／１が優先され、Ｏｐ０及びＯｐ１をフュージョン済みストアオペレーションにフュージョンする。Ｏｐ１は、古いフュージョン済みストアの一部であったため、Ｏｐ２とフュージョンするには不適格である。そのため、ＳＦＤＬ  Ｏｐ１／２は、Ｏｐ１及びＯｐ２をフュージョンして、フュージョン済みストアオペレーションにすることができない。
【００２６】
ＳＦＤＬ  Ｏｐ０／１〜ＳＦＤＬ  Ｏｐ４／５  ２０２の各々は、適切なストアマイクロオペレーションを、２倍のデータサイズを有するストアマイクロオペレーションと、ストアデータＨＩマイクロオペレーションとにフュージョンする。ストアデータＨＩマイクロオペレーションは、ロード／ストアマイクロオペレーションコンポーネント及びアドレス生成マイクロオペレーションコンポーネントが抑えられ、ＡＬＳＱ０〜ＡＬＳＱ３  ２０４内のキューエントリのみが必要とされる。本明細書で述べるように、各ＳＦＤＬ  Ｏｐ０／１  〜ＳＦＤＬ  Ｏｐ４／５  ２０２は、データサイズ２ｘのストアマイクロオペレーションとストアデータＨＩマイクロオペレーションとの両方に同じＳＴＱ２１８キューエントリ番号を設定し、マイクロオペレーションタイプをストアデータＨＩマイクロオペレーションに設定して、このデータが、データサイズ２ｘのストアマイクロオペレーションの上位部分であることを示す。
【００２７】
各ＳＦＤＬ  Ｏｐ０／１〜ＳＦＤＬ  Ｏｐ４／５  ２０２が、必要に応じて、連続するストアマイクロオペレーションをフュージョンすると、ディスパッチロジック２０１は、必要に応じて、データサイズ２ｘのストアマイクロオペレーション及びストアデータＨＩマイクロオペレーションを、ＡＬＳＱ０〜ＡＬＳＱ３  ２０４及びＡＧＳＱ０〜ＡＧＳＱ１  ２０６にディスパッチする。ＡＬＳＱ０〜ＡＬＳＱ３  ２０４及びＡＧＳＱ０〜ＡＧＳＱ１  ２０６は、データサイズ２ｘのストアマイクロオペレーション及びストアデータＨＩマイクロオペレーションを、ＡＬＵ０〜ＡＬＵ３  ２１２に発行する。ＡＬＵ０〜ＡＬＵ３  ２１２は、ストアデータインタフェース２３２を介して制御ビットＳＴＱ２１８に送信して、ストアデータＨＩマイクロオペレーション内のデータがストアデータフィールドの上位又は上位部分に書き込まれることを示す。ＳＴＱ２１８は、必要な書き込みを実行する。
【００２８】
図３は、図１及び図２について本明細書で説明する特定の実施形態及び機能による、ロードストア／データキャッシュ（ＬＳＤＣ）ユニット３００のハイレベルブロック及びフロー図である。ＬＳＤＣユニット３００は、ＬＤＱ３０２と、ＳＴＱ３０４と、ロード０（Ｌ０）ピッカ（picker）３０６と、ロード１（Ｌ１）ピッカ３０８と、を含む。ＳＴＱ３０４は、ストアデータＨＩマイクロオペレーション内のデータがストアされる場合にシフトされる必要があることを示すストアデータインタフェース３０５を介して、制御ビットと共に、ＡＬＵ（図示省略）からデータを取得する。Ｌ０ピッカ３０６は、トランスレーションルックアサイドバッファ（ＴＬＢ）、マイクロタグアクセスパイプライン０（ＴＬＢ０）３１０、及び、データキャッシュアクセスパイプライン（データパイプ０）３１２に接続されている。Ｌ１ピッカ３０８は、トランスレーションルックアサイドバッファ（ＴＬＢ）、マイクロタグアクセスパイプライン１（ＴＬＢ１）３１４、及び、データキャッシュアクセスパイプライン（データパイプ１）３１６に接続されている。ＴＬＢ０  ３１０及びＴＬＢ１  ３１４は、Ｌ１／Ｌ２  ＴＬＢ３１８、ページウォーカ３２３及びマイクロタグアレイ３１９に接続されている。マイクロタグアレイは、ミスアドレスバッファ（ＭＡＢ）３２０に接続されており、キャッシュ３２２からのデータの読み出しを支援する。データパイプ０  ３１２及びデータパイプ１  ３１６は、キャッシュ３２２に接続されている。ＳＴＱ３０４は、プリフェッチャ３２４及びストアパイプピッカ３２６に接続されている。ストアパイプピッカは、ストアパイプライン（ＳＴＰ）３２８に接続されている。ＳＴＰ３２８は、Ｌ１／Ｌ２  ＴＬＢ３１８及びマイクロタグアレイ３１９にも接続されている。ＳＴＱ３０４は、ストアコミットパイプライン３３０に接続されている。ストアコミットパイプラインは、書き込み結合バッファ（ＷＣＢ）３３２及びキャッシュ３２２に接続されている。
【００２９】
図４は、特定の実施形態による、ストアフュージョンのための方法のフロー図４００である。マイクロオペレーションが、ディスパッチロジックを介してディスパッチされる（ステップ４０２）。ストアフュージョン検出ロジックは、隣接するマイクロオペレーションが連続するストアマイクロオペレーションであるかどうかを検出する（ステップ４０４）。隣接するマイクロオペレーションとは、隣接するディスパッチスロットを流れるマイクロオペレーションを指し、連続するストアマイクロオペレーションとは、隣接するマイクロオペレーションの両方がストアマイクロオペレーションであることを指す。隣接するマイクロオペレーションが連続するストアマイクロオペレーションでない場合には、ディスパッチされたマイクロオペレーションの次のセットが評価される（ステップ４０２）。隣接するマイクロオペレーションが連続するストアマイクロオペレーションである場合、ストアフュージョン検出ロジックは、連続するストアマイクロオペレーションが同じデータサイズを有するかどうかを判別する（ステップ４０６）。連続するストアマイクロオペレーションが同じサイズでない場合、ディスパッチされたマイクロオペレーションの次のセットが評価される（ステップ４０２）。連続するストアマイクロオペレーションが同じサイズである場合、ストアフュージョン検出ロジックは、連続するストアマイクロオペレーションが連続するアドレスにアクセスしているかどうかを判別する（ステップ４０８）。連続するストアマイクロオペレーションが連続するアドレスにアクセスしていない場合、ディスパッチされたマイクロオペレーションの次のセットが評価される（ステップ４０２）。連続するストアマイクロオペレーションが連続するアドレスにアクセスしている場合、ストアフュージョン検出ロジックは、検討中の２つのマイクロオペレーションのうち古いマイクロオペレーションが、古いフュージョン済みストアオペレーションの一部であるかどうかを判別する（ステップ４１０）。古いストアフュージョンの一部である場合、ストアフュージョンが行われず（ステップ４１２）、ディスパッチされたマイクロオペレーションの次のセットが評価される（ステップ４０２）。古いフュージョン済みストアオペレーションの一部でない場合、ストアフュージョン検出ロジックは、連続するストアマイクロオペレーションを、２倍のデータサイズを有するストアマイクロオペレーション及びストアデータＨＩマイクロオペレーションにフュージョンする（ステップ４１４）。
【００３０】
ストアフュージョン検出ロジックは、データサイズ２ｘのストアマイクロオペレーションとストアデータＨＩマイクロオペレーションとの両方に同じストアキューエントリ番号を設定する（ステップ４１６）。ストアフュージョン検出ロジック及びディスパッチロジックは、マイクロオペレーションタイプをストアデータＨＩマイクロオペレーションに設定して、このデータが、データサイズ２ｘのストアマイクロオペレーションの上位部分であることをＡＬＵに示す（ステップ４１８）。ＡＬＵは、ストアデータＨＩマイクロオペレーション内のデータがストアされる場合にシフトされるように、制御ビットをＳＴＱに送信する（ステップ４２０）。データサイズ２ｘのストアマイクロオペレーション内のデータが、ストアデータフィールドの下位部分に書き込まれる（ステップ４２２）。動作の順序は例示に過ぎず、他の順序を使用することもできる。
【００３１】
図５は、１つ以上の開示された例の１つ以上の部分が実装される例示的なデバイス５００のブロック図である。デバイス５００は、例えば、ヘッドマウントデバイス、サーバ、コンピュータ、ゲームデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話、又は、タブレットコンピュータを含む。デバイス５００は、コンピュータノード又はプロセッサ５０２と、メモリ５０４と、ストレージ５０６と、１つ以上の入力デバイス５０８と、１つ以上の出力デバイス５１０と、を含む。デバイス５００は、オプションで入力ドライバ５１２及び出力ドライバ５１４を含む。デバイス５００は、図５に示されていない追加のコンポーネントを含むことを理解されたい。
【００３２】
コンピュータノード又はプロセッサ５０２は、中央処理ユニット（ＣＰＵ）、グラフィックス処理ユニット（ＧＰＵ）、同じダイ上に配置されたＣＰＵ及びＧＰＵ、又は、１つ以上のプロセッサコアを含み、各プロセッサコアは、ＣＰＵ又はＧＰＵであってもよい。メモリ５０４は、コンピュータノード又はプロセッサ５０２と同じダイ上に配置されてもよいし、コンピュータノード又はプロセッサ５０２とは別に配置されてもよい。実施形態では、メモリ５０４は、揮発性又は不揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ若しくはキャッシュ等）を含む。
【００３３】
ストレージ５０６は、固定又は取り外し可能なストレージ（例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク若しくはフラッシュドライブ等）を含む。入力デバイス５０８は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロホン、加速度計、ジャイロスコープ、生体認証スキャナ、又は、ネットワーク接続（例えば、無線ＩＥＥＥ８０２信号の送信及び／若しくは受信のための無線ローカルエリアネットワークカード）を含む。出力デバイス５１０は、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、１つ以上のライト、アンテナ、又は、ネットワーク接続（例えば、無線ＩＥＥＥ８０２信号の送信及び／若しくは受信のための無線ローカルエリアネットワークカード）を含む。
【００３４】
入力ドライバ５１２は、コンピュータノード又はプロセッサ５０２及び入力デバイス５０８と通信し、コンピュータノード又はプロセッサ５０２が入力デバイス５０８から入力を受信するのを可能にする。出力ドライバ５１４は、コンピュータノード又はプロセッサ５０２及び出力デバイス５１０と通信し、プロセッサ５０２が出力デバイス５１０に出力を送信するのを可能にする。入力ドライバ５１２及び出力ドライバ５１４がオプションのコンポーネントであることと、入力ドライバ５１２及び出力ドライバ５１４が存在しない場合にデバイス５００が同様に動作することと、に留意されたい。
【００３５】
概して、ストアマイクロオペレーションをフュージョンするための方法は、隣接するマイクロオペレーションが連続するストアマイクロオペレーションであるかどうかを判別することを含む。隣接するマイクロオペレーションとは、隣接するディスパッチスロットを流れるマイクロオペレーションを指し、連続するストアマイクロオペレーションとは、隣接するマイクロオペレーションの両方がストアマイクロオペレーションであることを指す。連続するストアマイクロオペレーションが同じデータサイズを有しているかどうか、及び、連続するアドレスにアクセスしているかどうかについて判別される。連続するストアマイクロオペレーションは、２倍のデータサイズを有するストアマイクロオペレーション及びストアデータオンリーマイクロオペレーションにフュージョンされる。実施形態では、２倍のデータサイズを有するストアマイクロオペレーション及びストアデータオンリーマイクロオペレーションに同じストアキューエントリ番号が設定される。実施形態では、ストアデータオンリーマイクロオペレーション内のデータが２倍のデータサイズを有するストアマイクロオペレーションに関して上位データ部分であることを示すために、マイクロオペレーションタイプがストアデータオンリーマイクロオペレーションに設定される。実施形態では、ストアされる場合にデータのシフトを容易にするために、少なくとも１つの制御ビットがストアキューに送信される。実施形態では、２倍のデータサイズを有するストアマイクロオペレーション内のデータがストアデータフィールドの下位部分にストアされ、ストアデータオンリーマイクロオペレーション内のデータがストアデータフィールドの上位部分にストアされる。実施形態では、ストアデータオンリーマイクロオペレーションは、ストアキューエントリ及びアドレス生成キューエントリの使用を抑制する。実施形態では、連続するマイクロオペレーションの各々のアドレッシングモードが評価される。実施形態では、下位アドレスを有する連続するストアマイクロオペレーションが、２倍のデータサイズを有するストアマイクロオペレーションに変換される。実施形態では、上位アドレスを有する連続するストアマイクロオペレーションが、ストアデータオンリーマイクロオペレーションに変換される。実施形態では、ストアリタイア指標は、ストアデータオンリーマイクロオペレーションに関して抑えられる。実施形態では、２倍のデータサイズを有するストアマイクロオペレーション及びストアデータオンリーマイクロオペレーションのうち少なくとも一方に関する例外が発生すると、フュージョンを行わずに隣接するマイクロオペレーションが再実行される。実施形態では、ストアデータオンリーマイクロオペレーションのために上位ストアビットがメモリリネーム追跡構造に設定され、上位ストアビットは、ストアキューエントリを決定するために用いられる。
【００３６】
概して、ストアマイクロオペレーションをフュージョンするプロセッサは、マイクロオペレーションをディスパッチするように構成されたディスパッチロジックと、ディスパッチロジックに接続されたストアフュージョン検出ロジックと、を含む。ストアフュージョン検出ロジックは、隣接するマイクロオペレーションが連続するストアマイクロオペレーションであるかどうかを判別することであって、隣接するマイクロオペレーションは、隣接するディスパッチスロットを流れるマイクロオペレーションを指し、連続するストアマイクロオペレーションは、隣接するマイクロオペレーションの両方がストアマイクロオペレーションであることを指す、ことと、連続するストアマイクロオペレーションが同じデータサイズを有するかどうかを判別することと、連続するストアマイクロオペレーションが連続するアドレスにアクセスしているかどうかを判別することと、連続するストアマイクロオペレーションを、２倍のデータサイズを有するストアマイクロオペレーション及びストアデータオンリーマイクロオペレーションにフュージョンすることと、を行うように構成されている。実施形態では、ディスパッチロジック及びストアフュージョン検出ロジックは、２倍のデータサイズを有するストアマイクロオペレーション及びストアデータオンリーマイクロオペレーションに同じストアキューエントリ番号を設定するように構成されている。実施形態では、ディスパッチロジック及びストアフュージョン検出ロジックは、ストアデータオンリーマイクロオペレーション内のデータが２倍のデータサイズを有するストアマイクロオペレーションに関して上位データ部分であることを示すために、マイクロオペレーションタイプをストアデータオンリーマイクロオペレーションに設定するように構成されている。実施形態では、プロセッサは、ストアキューと、ストアキューと通信する演算論理ユニットと、を含む。演算論理ユニットは、ストアされる場合にデータのシフトを容易にするために、少なくとも１つの制御ビットをストアキューに送信するように構成されている。実施形態では、２倍のデータサイズを有するストアマイクロオペレーション内のデータをストアデータフィールドの下位部分にストアし、ストアデータオンリーマイクロオペレーション内のデータをストアデータフィールドの上位部分にストアする。実施形態では、ストアデータオンリーマイクロオペレーションは、ストアキューエントリ及びアドレス生成キューエントリの使用を抑制する。実施形態では、下位アドレスを有する連続するストアマイクロオペレーションは、２倍のデータサイズを有するストアマイクロオペレーションに変換され、上位アドレスを有する連続するストアマイクロオペレーションは、ストアデータオンリーマイクロオペレーションに変換される。実施形態では、ストアリタイア指標は、ストアデータオンリーマイクロオペレーションに関して抑えられ、２倍のデータサイズを有するストアマイクロオペレーション及びストアデータオンリーマイクロオペレーションのうち少なくとも一方に関する例外が発生すると、フュージョンを行わずに隣接するマイクロオペレーションが再実行される。
【００３７】
本明細書の開示に基づいて多くの変形が可能であることを理解されたい。特徴及び要素が特定の組み合わせで上述されているが、各特徴又は要素は、他の特徴及び要素を伴わずに単独で用いられてもよいし、他の特徴及び要素の有無に関わらず様々な組み合わせで用いられてもよい。
【００３８】
提供される方法は、汎用コンピュータ、プロセッサ又はプロセッサコアにおいて実施されてもよい。適切なプロセッサは、例として、汎用プロセッサ、専用プロセッサ、従来型プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、複数のマイクロプロセッサ、ＤＳＰコアに関連する１つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）回路、任意の他のタイプの集積回路（ＩＣ）、及び／又は、ステートマシンを含む。このようなプロセッサは、処理されるハードウェア記述言語（ＨＤＬ）命令の結果及びネットリストを含む他の中間データ（コンピュータ可読媒体に記憶可能なこのような命令）を用いて製造プロセスを構成することによって製造されてもよい。このような処理の結果は、実施形態の態様を実施するプロセッサを製造する半導体製造プロセスにおいて用いられるマスクワークであってもよい。
【００３９】
本明細書で提供される方法又はフローチャートは、汎用コンピュータ又はプロセッサによる実行のために、非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア又はファームウェアで実施されてもよい。非一時的なコンピュータ可読記憶媒体の例としては、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、光磁気媒体、ＣＤ−ＲＯＭディスク及びデジタル多用途ディスク（ＤＶＤ）等の光学媒体が挙げられる。
【図１】
2021504788.tif 000003
【図２】
2021504788.tif 000004
【図３】
2021504788.tif 000005
【図４】
2021504788.tif 000006
【図５】
2021504788.tif 000007
【国際調査報告】
2021504788.tif 000008
2021504788.tif 000009