(57)【要約】開示された発明は、汎用プロセッサが、操作当り面積の適度な増加と、エネルギーのわずかな増加で、典型的なプロセッサ実装の２倍の動作頻度を達成できるようにする、プロセッサ装置及び方法を含む。本発明は、複数の独立した実行ストリームの活用に依存する。レジスタファイルに使用される低面積で低エネルギーのメモリアレイは、適度な頻度で動作する。同じスレッドからの命令間の間隔を、レジスタファイルにアクセスする時間よりも広くすることを保証するロジックを含めることにより、メモリアレイの動作頻度よりも高い頻度で命令を発行することができる。本発明の成果は、長いレイテンシー構造をオーバーラップさせる能力であり、これにより、低いエネルギー構造の使用が可能になり、これにより、動作当たりのエネルギーが削減される。【選択図】図１
2020508534.tif 000002
【特許請求の範囲】
【請求項１】
複数の物理メモリアレイを含む論理レジスタファイルセットと、
複数のハードウェアコンテキストと、
少なくとも１個の実行ユニットをそれぞれが含む複数のパイプラインと、
発行ロジックと、
を備え、
前記複数の物理メモリアレイのそれぞれは、
アクセス時間および複数のアクセスポートを有し、
前記論理レジスタファイルセットに含まれる論理レジスタファイルのそれぞれは、
異なるハードウェアコンテキストに割り当てられ、
前記複数のハードウェアコンテキストのそれぞれは、
前記論理レジスタファイルの１つおよびコンテキストユニットのロウを含み、
前記コンテキストユニットは、
前記異なるハードウェアコンテキストに関連付けられた複数のロウを含み、
前記コンテキストユニットの前記ロウは、
プログラムカウンタストレージと、
１つ又は複数の命令を格納するように構成された命令ブロックストレージと、
キャッシュからの前記１つ又は複数の命令のフェッチングを管理するように構成されたロジックと、
前記ロウから命令を発行する準備ができたときを制御するように構成されたロジックと、
をさらに含み、
前記発行ロジックは、
前記複数のロウのうちから１つのロウを選択し、前記選択されたロウから複数のパイプラインの１つへ命令を発行するように構成され、ロウの選択は、前記選択されたロウの準備完了状態に基づき、
前記発行ロジックは、
同じハードウェアコンテキストからの準備完了命令を、単一のメモリアレイのポートを介して、該メモリアレイにアクセスするために必要とされる最小クロックサイクル数だけ時間的に間隔を空けて、要求することによって、前記論理レジスタファイルセットが、前記単一のメモリアレイの前記アクセス時間で分割されたアクセス頻度よりも高い頻度でアクセスされるように、前記１つのロウを選択するように構成される、
プロセッサシステム。
【請求項２】
前記発行ロジックは、
命令のレジスタが、同じメモリアレイの同じポートにアクセスする、発行準備完了として示される命令を、前記ポートを介して、前記メモリアレイにアクセスするために必要とされる最小クロックサイクル数だけ時間的に間隔を空けて、要求することによって、前記論理レジスタファイルセットが、前記単一のメモリアレイの前記アクセス時間で分割されたアクセス頻度よりも高い頻度でアクセスされるように、前記１つのロウを選択するように構成される、
請求項１に記載のプロセッサシステム。
【請求項３】
前記発行ロジックは、
前記複数のメモリアレイの１つにアクセスするために必要とされる時間内に、前記同じハードウェアコンテキストのロウが２回選択されないように、前記複数のロウのうちから異なるロウを選択的に選択するように構成される、
請求項１に記載のプロセッサシステム。
【請求項４】
前記複数のロウのそれぞれは、
前記複数のパイプラインのうちの１つに発行する準備ができている命令を格納するように構成された準備完了命令ストレージをさらに備える、
請求項１に記載のプロセッサシステム。
【請求項５】
前記発行ロジックは、
前記同じハードウェアコンテキストのロウが、前記複数のパイプラインのうちの１つにより処理される前記ハードウェアコンテキストのロウから発行された最新の命令に必要とされた時間内に、２回選択されないように、前記複数のロウのうちから異なるロウを選択的に選択するように構成される、
請求項１に記載のプロセッサシステム。
【請求項６】
前記命令ブロックストレージは、
少なくとも８つの命令を格納するように構成される、
請求項１に記載のプロセッサシステム。
【請求項７】
前記複数のロウのそれぞれは、
命令が前記それぞれのロウから発行する準備ができていることを示すように構成された準備完了ビットストレージをさらに含み、
発行ロジックは、
前記準備完了ビットストレージに格納されたビットに応答して前記ロウを選択するように構成される、
請求項１に記載のプロセッサシステム。
【請求項８】
前記ロウのそれぞれは、
命令を少なくとも部分的にデコードするように構成されたロジックをさらに含み、
前記発行ロジックは、さらに、
前記デコードされた命令の種類に基づいて、前記ロウを選択するように構成される、
請求項１に記載のプロセッサシステム。
【請求項９】
前記複数のパイプラインのそれぞれは、
異なる命令の種類に基づいて、ロウを選択するように構成された前記発行ロジックの一部に関連付けられる、
請求項１に記載のプロセッサシステム。
【請求項１０】
前記発行ロジックは、
前記選択されたロウに含まれる有限状態マシーンによって示される準備完了状態に応答する、
請求項１に記載のプロセッサシステム。
【請求項１１】
前記有限状態マシーンは、
１）前記複数のパイプラインのメンバーを十分に通過した前の命令と、
２）前記ロウに存在している次に発行される命令に、
応答して、前記準備完了状態を示すように構成される、
請求項１０に記載のプロセッサシステム。
【請求項１２】
前記有限状態マシーンは、
前記次の命令の種類を決定するように構成される、
請求項１０に記載のプロセッサシステム。
【請求項１３】
前記複数のパイプラインは、
異なる種類のパイプラインを含み、
前記それぞれの種類のパイプラインは、
１つ又は複数の種類のデータを処理するように構成される、
請求項１に記載のプロセッサシステム。
【請求項１４】
前記複数のパイプラインのそれぞれは、
命令が、前記ロウのそれぞれの内で発行される準備ができていることを示すように構成されたロジックに、それぞれの状態を報告するように構成される、
請求項１に記載のプロセッサシステム。
【請求項１５】
前記複数のパイプラインのうちの少なくとも１個は、前記命令の種類に基づいて、前記複数のパイプラインのうちの別のパイプラインに命令を転送するように構成される、
請求項１に記載のプロセッサシステム。
【請求項１６】
実行ユニットを含むパイプラインと、
命令キャッシュと、
複数のロウを含むコンテキストユニットと、
発行ロジックと、
を備え、
前記コンテキストユニットの前記複数のロウのそれぞれは、独立したスレッドに割り当てられており、
前記複数のロウのそれぞれは、少なくとも１個のプログラムカウンタを含み、
前記複数のロウのそれぞれは、１つ又は複数の命令を格納するように構成されたストレージを含み、
前記複数のロウのそれぞれは、前記命令キャッシュから、前記１つ又は複数の命令をフェッチするように構成されたロジックを含み、
前記複数のロウのそれぞれは、命令が、それぞれの前記ロウから前記パイプラインへ発行される準備ができたときを決定するように構成されたロジックを含み、
前記発行ロジックは、
前記複数のロウのうちから１つのロウを選択し、命令を、選択された前記ロウから前記パイプラインへ発行するように構成される、
プロセッサシステム。
【請求項１７】
命令の準備ができたときを決定するように構成された前記ロジックは、
前記それぞれのロウにおける過去のアクションの履歴に応答する、
請求項１６に記載のプロセッサシステム。
【請求項１８】
命令の準備ができたときを決定するように構成された前記ロジックは、
前記それぞれのロウにおける過去のアクションの履歴に応答する、
請求項１６に記載のプロセッサシステム。
【請求項１９】
前記複数のロウのそれぞれは、
異なるハードウェアコンテキストに関連付けられ、
前記各ハードウェアコンテキストは、
異なる独立したスレッドを実行するように割り当てられる、
請求項１６に記載のプロセッサシステム。
【請求項２０】
前記発行ロジックは、
命令が前記選択されたロウから最後に発行されてからのクロックサイクル数に応答して、前記ロウを選択するように構成される、
請求項１６に記載のプロセッサシステム。
【請求項２１】
前記発行ロジックは、
命令発行の準備ができていることを示す前記ロウ内のロジックに応答して、前記ロウを選択するように構成される、
請求項１６に記載のプロセッサシステム。
【請求項２２】
一連の計算命令を実行する方法であって、
命令スレッドに関連付けられた命令を、メモリから、前記同じ命令スレッドに関連付けられたハードウェアコンテキストのロウ内へ、移動させるステップと、
命令発行の準備ができている複数のロウのうちから１つのロウを選択し、該ロウから準備完了命令を発行するステップであって、前記準備完了命令を前記パイプラインに移動させることを含むステップと、
前記そのロウから発行される次の命令のアドレスを反映するために、命令を発行したロウのプログラムカウンタを更新するステップと、
前記パイプラインを使用して、前記命令を実行するステップと、
を含み、
プログラムカウンタおよび前記移動させた命令を格納するように構成されたストレージを含み、
前記ハードウェアコンテキストのロウは、複数あり、各ロウは異なる命令スレッドに関連付けられており、そして、各ロウはハードウェアコンテキストの一部を保持し、
前記各ロウは、ビヘイビアが、前記システムへの入力に加えて、過去のアクションの履歴に依存し、少なくとも２つの機能を有する制御ロジックを含み、
このような機能は、命令が、それぞれのロウから発行される準備ができていることを示すように構成された第１の有限状態マシーンを有する有限状態マシーンによって具体化することができ、
前記複数のロウのそれぞれは、ハードウェアコンテキストによって実行される１つ又は複数の次の命令のフェッチング制御をするように構成された第２の有限状態マシーンを含み、
前記命令を移動させるステップは、前記ロウからの命令の前記発行に応答し、
そして、前記命令を移動させるステップは、アクセス時間を要し、
ロウにおける前記第１の有限状態マシーンは、前記ロウからパイプラインへ命令を発行する準備ができていることを決定し、
この決定は、前記同じ使い捨ての内部リソースを使用しようとする、例えば、命令レジスタデータを格納している特定のメモリアレイの前記同じポートに複数アクセスしようとする、進行中の命令をめぐる競合を回避することを含み、
命令は、命令内のレジスタアドレスで示されるデータを格納する物理メモリアレイにアクセスできるよりも速い速度でパイプラインに発行される、
計算命令の実行方法。
【請求項２３】
メモリに格納された命令をそれぞれ選択し、前記選択された命令を、前記ロウに移動させ追加のロウをさらに含む、
請求項２２に記載の実行方法。
【請求項２４】
前記ロジックは、
前記パイプラインを介した命令の実行の進行に応答する、
請求項２２に記載の実行方法。
【請求項２５】
前記命令が前記ロウにある間に前記命令を部分的にデコードし、前記ロウから前記次の命令を無難に発行できるまでのクロックサイクル数を決定するステップをさらに含み、
前記ロジックは、
前記クロックサイクル数に応答する、
請求項２２に記載の実行方法。
【請求項２６】
実行ユニットを含むパイプラインと、
命令キャッシュと、
複数のロウを含むコンテキストユニットと、
発行ロジックと、
を備え、
前記複数のロウのそれぞれは、
独立したスレッドに割り当てられており、
前記複数のロウのそれぞれは、
少なくとも１個のプログラムカウンタを含み、
前記複数のロウのそれぞれは、
命令のキャッシュブロックを格納するように構成されたストレージを含み、
前記複数のロウのそれぞれは、
前記命令キャッシュから、１つ又は複数の命令をフェッチするように構成されたロジックを含み、
前記複数のロウのそれぞれは、
命令が、前記それぞれのロウから前記パイプラインへ発行される準備ができたときを決定するように構成されたロジックを含み、
前記発行ロジックは、
前記複数のロウのうちから１つのロウを選択し、命令を、選択された前記ロウから前記パイプラインへ、発行するように構成される、
プロセッサシステム。
【請求項２７】
前記発行ロジックは、
前記複数のロウのうちの異なるロウを、準備完了ビットにて選択的に選択するように構成される、
請求項３に記載のプロセッサシステム。
【発明の詳細な説明】
【関連出願の相互参照】
【０００１】
本出願は、２０１７年２月２０日に出願された米国仮特許出願第62/460,909号、２０１７年５月５日に出願された米国仮特許出願第62/501,780号、２０１８年１月２２日に出願された米国仮特許出願第62/620,032号の優先権を主張するものであり、これらの仮出願の開示全体を、ここに参照のために取り込む。
【技術分野】
【０００２】
本発明は、コンピュータハードウェアの分野に関する。
【背景技術】
【０００３】
計算命令のマルチスレッド処理には、いくつかのアプローチがある。しかし、これらのアプローチでは、通常、ハードウェア要件に、大きなオーバーヘッドが必要である。追加されたハードウェアは、エネルギー管理の問題および熱の問題の両方を引き起こす。
【図面の簡単な説明】
【０００４】
【図１】本発明の様々な実施形態に係るプロセッサを示す図である。
【図２】本発明の様々な実施形態に係るメモリポートアクセスのタイミングチャートを示す図である。
【図３】図３Ａは、本発明の様々な実施形態に係るコンテキストユニットの詳細を示す図である。図３Ｂは、本発明の様々な実施形態に係るロウの詳細を示す図である。
【図４】本発明の様々な実施形態に係るメモリアレイを示す図である。
【図５】本発明の様々な実施形態に係る複数の独立スレッドを実行する方法を示す図である。
【図６】本発明の様々な実施形態に係る、ロウにおける命令を発行する準備ができていることを確認し、その後、その準備完了を通知するプロセスを示す図である。
【図７】本発明の様々な実施形態に係る命令を実行するプロセスを示す図である。
【発明を実施するための形態】
【０００５】
本発明の様々な実施形態は、プロセッサシステムが、インターリーブ方式で複数の命令スレッドからの命令を実行する複数のハードウェアコンテキストを有しているプロセッサシステム内に、命令フェッチ機構を含んでいる。命令フェッチ機構は、命令キャッシュ又は命令メモリからのキャッシュブロック全体を１つの単位として、フェッチし、それを、複数の一時ストレージ位置のいずれかに格納する。一時ストレージ位置は、特定の実行スレッドにそれぞれ関連付けられている。特定の実行スレッドからの命令を実行するには、そのスレッドに関連付けられているローカルストレージからそれらの命令を取得する。実行される命令がローカルストレージに存在しない場合、ローカルストレージを満たすためにフェッチが開始される。
【０００６】
本発明の様々な実施形態に係るプロセッサシステムは、
複数の物理メモリアレイを含む論理レジスタファイルセットと、
複数のハードウェアコンテキストと、
少なくとも１個の実行ユニットをそれぞれが含む複数のパイプラインと、
発行ロジックと、
を備え、
前記複数の物理メモリアレイのそれぞれは、
アクセス時間および複数のアクセスポートを有し、
前記論理レジスタファイルセットに含まれる論理レジスタファイルのそれぞれは、
異なるハードウェアコンテキストに割り当てられ、
前記複数のハードウェアコンテキストのそれぞれは、
前記論理レジスタファイルの１つおよびコンテキストユニットのロウを含み、
前記コンテキストユニットは、
前記異なるハードウェアコンテキストに関連付けられた複数のロウを含み、
前記コンテキストユニットの前記ロウは、
プログラムカウンタストレージと、
１つ又は複数の命令を格納するように構成された命令ブロックストレージと、
キャッシュからの前記１つ又は複数の命令のフェッチングを管理するように構成されたロジックと、
前記ロウから命令を発行する準備ができたときを制御するように構成されたロジックと、
をさらに含み、
前記発行ロジックは、
前記複数のロウのうちから１つのロウを選択し、前記選択されたロウから複数のパイプラインの１つへ命令を発行するように構成され、ロウの選択は、前記選択されたロウの準備完了状態に基づき、
前記発行ロジックは、
同じハードウェアコンテキストからの準備完了命令を、単一のメモリアレイのポートを介して、該メモリアレイにアクセスするために必要とされる最小クロックサイクル数だけ時間的に間隔を空けて、要求することによって、前記論理レジスタファイルセットが、前記単一のメモリアレイの前記アクセス時間で分割されたアクセス頻度よりも高い頻度でアクセスされるように、前記１つのロウを選択するように構成される、
プロセッサシステム。
【０００７】
本発明の様々な実施形態に係るプロセッサシステムは、
実行ユニットを含むパイプラインと、
命令キャッシュと、
複数のロウを含むコンテキストユニットと、
発行ロジックと、
を備え、
前記コンテキストユニットの前記複数のロウのそれぞれは、独立したスレッドに割り当てられており、
前記複数のロウのそれぞれは、少なくとも１個のプログラムカウンタを含み、
前記複数のロウのそれぞれは、１つ又は複数の命令を格納するように構成されたストレージを含み、
前記複数のロウのそれぞれは、前記命令キャッシュから、前記１つ又は複数の命令をフェッチするように構成されたロジックを含み、
前記複数のロウのそれぞれは、命令が、それぞれの前記ロウから前記パイプラインへ発行される準備ができたときを決定するように構成されたロジックを含み、
前記発行ロジックは、
前記複数のロウのうちから１つのロウを選択し、命令を、選択された前記ロウから前記パイプラインへ発行するように構成される、
プロセッサシステム。
【０００８】
本発明の様々な実施形態に係る一連の計算命令を実行する方法は、
一連の計算命令を実行する方法であって、
命令スレッドに関連付けられた命令を、メモリから、前記同じ命令スレッドに関連付けられたハードウェアコンテキストのロウ内へ、移動させるステップと、
命令発行の準備ができている複数のロウのうちから１つのロウを選択し、該ロウから準備完了命令を発行するステップであって、前記準備完了命令を前記パイプラインに移動させることを含むステップと、
前記そのロウから発行される次の命令のアドレスを反映するために、命令を発行したロウのプログラムカウンタを更新するステップと、
前記パイプラインを使用して、前記命令を実行するステップと、
を含み、
プログラムカウンタおよび前記移動させた命令を格納するように構成されたストレージを含み、
前記ハードウェアコンテキストのロウは、複数あり、各ロウは異なる命令スレッドに関連付けられており、そして、各ロウはハードウェアコンテキストの一部を保持し、
前記各ロウは、ビヘイビアが、前記システムへの入力に加えて、過去のアクションの履歴に依存し、少なくとも２つの機能を有する制御ロジックを含み、
このような機能は、命令が、それぞれのロウから発行される準備ができていることを示すように構成された第１の有限状態マシーンを有する有限状態マシーンによって具体化することができ、
前記複数のロウのそれぞれは、ハードウェアコンテキストによって実行される１つ又は複数の次の命令のフェッチング制御をするように構成された第２の有限状態マシーンを含み、
前記命令を移動させるステップは、前記ロウからの命令の前記発行に応答し、
そして、前記命令を移動させるステップは、アクセス時間を要し、
ロウにおける前記第１の有限状態マシーンは、前記ロウからパイプラインへ命令を発行する準備ができていることを決定し、
この決定は、前記同じ使い捨ての内部リソースを使用しようとする、例えば、命令レジスタデータを格納している特定のメモリアレイの前記同じポートに複数アクセスしようとする、進行中の命令をめぐる競合を回避することを含み、
命令は、命令内のレジスタアドレスで示されるデータを格納する物理メモリアレイにアクセスできるよりも速い速度でパイプラインに発行される、
計算命令の実行方法。
【０００９】
本発明の様々な実施形態は、プロセッサシステムが、インターリーブ方式で複数の命令スレッドからの命令を実行する複数のハードウェアコンテキストを有しているプロセッサシステム内に、命令フェッチ機構を含んでいる。命令フェッチ機構は、命令キャッシュ又は命令メモリからのキャッシュブロック全体を１つの単位として、フェッチし、それを、複数の一時ストレージ位置のいずれかに格納する。一時ストレージ位置は、特定の実行スレッドにそれぞれ関連付けられている。特定の実行スレッドからの命令を実行するには、そのスレッドに関連付けられているローカルストレージからそれらの命令を取得する。実行される命令がローカルストレージに存在しない場合、ローカルストレージを満たすためにフェッチが開始される。オプションで、複数の命令は、物理メモリアレイのアクセス時間を超える頻度で、複数のパイプラインに発行される。物理メモリアレイは、複数の命令内のレジスタアドレスによって示されるデータを格納する。オプションで、第１の有限状態マシーンの状態は、パイプラインを介した命令の実行の進行に応答する。オプションで、命令がロウに存在する間に、命令を部分的にデコードするステップと、ロウから次の命令を発行することが安全になるまでのクロックサイクル数を決定するステップとをさらに含み、第１の有限状態マシーンの状態は、クロックサイクル数に応答する。
【００１０】
（詳細な説明）
本明細書で使用する「独立スレッド」という用語は、複数の命令のそれぞれが互いに依存していない複数組のコンピュータ命令を指すために用いられるが、独立スレッドは汎用メモリを共有してもよい。
【００１１】
本明細書で使用する「ハードウェアコンテキスト」という用語は、独立スレッドの実行専用のハードウェアを指すために用いられる。様々な実施形態において、ハードウェアコンテキストは、論理レジスタファイル、プログラムカウンタストレージ、ハードウェアコンテキストの状態を表すメタデータ、および／又は、１個又は複数の実行ユニットを含むことが可能である。ハードウェアコンテキストは、本明細書の他の箇所において、さらに論じられるように、コンテキストユニットのロウの一部を含んでいてもよい。
【００１２】
本明細書で使用する「制御状態レジスタ」という用語は、命令が、システムの状態に関するメタ情報を取得したり、システムの状態に影響を与えたりする論理機構を指すために用いられる。そのシステムには、プロセッサコアと、割り込みコントローラ、システム内の周辺機器（例えば、オンチップネットワーク）などのような、プロセッサコアを除いた機構との両方が含まれる。制御状態レジスタの機能には、命令ストリームにおける以前に実行された命令の総カウント数、割り込み要求の存在に関する知識、そのような割り込み要求をクリアする能力などのような過去の命令実行に関する知識を追跡すること、および／又は、処理モードを変更したり、コプロセッサを構成したりすることなどが含まれる。
【００１３】
本明細書で使用する「有限状態マシーン」という用語は、システム内の以前のアクティビティにおける特定のシーケンスに基づいて、アクションを選択する制御ロジックを指すために用いられる。このような制御ロジックは、代替可能な先行パスを区別するために、システムの状態を使用する。有限状態マシーンは、以前の複数のイベントに基づいて、現在の状態を表すように構成される。表された現在の状態は、有限の複数の許可された状態の１つである。
【００１４】
図１は、本発明の様々な実施形態に係るプロセッサ１００を示す図である。プロセッサ１００は、ソフトウェアの複数の命令を実行するための回路を含む。プロセッサ１００のうちの１個又は複数の回路は、コンピューティングデバイスに含まれる。様々な実施形態において、プロセッサ１００は、シリコンチップ上に実装されるか、ＦＰＧＡに実装されるか、単一のパッケージ内に配置されるか、あるいは、複数のパッケージに分散される。いくつかの実施形態では、プロセッサ１００のうちの２個以上の回路が、単一のパッケージに含まれる。
【００１５】
いくつかの実施形態では、プロセッサ１００は、論理レジスタファイルセット１５０、複数のパイプライン１３５、レベル１命令キャッシュ１１０、レベル１データキャッシュ１１５、システム制御ロジック１３０、および、コンテキストユニット１２０を備える。論理レジスタファイルセット１５０は、複数の論理レジスタファイル１２５Ａ、１２５Ｂ、１２５Ｃから構成される。複数のパイプライン１３５（１３５Ａ，１３５Ｂ）は、それぞれ、１個の実行ユニット１４５を含む。複数の実行ユニット１４５Ａおよび１４５Ｂは、加算、減算、比較、論理積（ＡＮＤ）、論理和（ＯＲ）などのような計算を実行する。複数の種類の実行ユニットは、浮動小数点、ベクトル、および／又は、これらに似た実行ユニットを含めることが可能である。浮動小数点実行ユニットは、仮数と指数の形式で数値をエンコードするデータを操作する。ベクトル実行ユニットは、複数のデータのグループを、単一のオペランドとして操作する。グループの要素は、浮動小数点形式又は整数形式であるか、あるいは、グラフィカルデータを表すような他の形式か、あるいは、何らかのカスタム形式である。
【００１６】
プロセッサ１００は、複数のセットに整理された計算命令を格納するように構成されたオプションの命令キャッシュ１１０をさらに備える。計算命令は、２つ以上の異なる独立スレッドによって実行される。実行中に、計算命令は、通常、プロセッサ１００の外部のメモリから命令キャッシュ１１０にコピーされる。
【００１７】
プロセッサ１００は、命令キャッシュ１１０に格納された計算命令によって処理されるデータを格納するように構成されたオプションのデータキャッシュ１１５をさらに備える。データキャッシュ１１５に格納されたデータは、プロセッサ１００の外部のメモリとの間でコピーされるデータ、および／又は、プロセッサ１００の内部での命令実行の結果であるデータを含む。
【００１８】
プロセッサ１００は、パイプライン１３５Ａ、パイプライン１３５Ｂなどとして、個別に参照符号を付けた１個、２個、又はそれ以上のパイプライン１３５をさらに備える。複数のパイプライン１３５は、ソフトウェア命令を実行するために構成される。例えば、パイプライン１３５Ａは、新しい命令に対する準備ができたことを示し、命令を受信し、受信した命令をデコードし、受信した命令が作用するデータを取得し、そして、受信した命令およびデータを、実行ユニット１４５Ａに渡すように、構成されてもよい。
【００１９】
それぞれのパイプライン１３５は、実行ユニット１４５Ａ、実行ユニット１４５Ｂなどとして、個別に参照符号を付けた１個又は複数の専用の実行ユニット１４５を含む。実行ユニット１４５は、整数演算および論理演算を行うように構成された算術ロジックユニット、浮動小数点データに作用するように構成された浮動小数点ロジックユニット、ベクトル演算を行うように構成されたベクトルロジックユニット、および／又は、これに類似するロジックユニットを含むことができる。いくつかの実施形態では、１個又は複数の実行ユニット１４５が、パイプライン１３５によって共有される。
【００２０】
プロセッサ１００は、個別にラベル付けされたレジスタファイル１２５Ａ、レジスタファイル１２５Ｂなどのように、２個又は３個以上のレジスタファイル１２５を含むレジスタファイルセットをさらに備える。複数のレジスタファイル１２５のそれぞれは、異なるハードウェアコンテキストに含まれている。複数のレジスタファイル１２５は、様々な異なる方法で、実際の複数の物理メモリアレイにマッピングできる論理構造をしている。例えば、複数の特定のハードウェアコンテキストは、物理メモリにおける複数のアクセスポートを介して、アクセス可能な複数の特定の物理メモリアレイにマッピングすることができる。物理メモリアレイには、個別に使用することができる、１個、２個、３個又はそれ以上のアクセスポートがある。複数のレジスタファイル１２５は、「アクセス時間」によって特徴付けられる。アクセス時間は、複数のレジスタファイル１２５間で、データを読み書きするために必要な時間である。アクセス時間は、クロックサイクル又は絶対時間で測定することができる。
【００２１】
プロセッサ１００は、コンテキストユニット１２０をさらに備える。コンテキストユニット１２０は、本明細書で「ロウ（行）」と呼ばれる複数のデータ構造を含む。「ロウ」は、それぞれが異なるハードウェアコンテキストに関連付けられる。特定のハードウェアコンテキストは、例えば、レジスタファイル１２５Ａのような、少なくとも１つの論理レジスタファイル、および、コンテキストユニット１２０の「ロウ」を含む。
【００２２】
コンテキストユニット１２０は、パイプライン１３５の１個を使用して、複数の命令が実行される準備ができるまで、複数の命令を複数のロウに保持するように構成される。発行ロジック１４０は、コンテキストユニット１２０のロウからパイプライン１３５のメンバーへの命令の発行を制御するように構成される。
【００２３】
図３Ａおよび図３Ｂは、本発明の様々な実施形態に係るコンテキストユニット１２０のさらなる詳細を示す図である。コンテキストユニット１２０は、ロウ３１０Ａ、ロウ３１０Ｂなどのように個別に識別される複数のロウ３１０を含む。複数のロウ３１０のそれぞれは、異なるハードウェアコンテキストに関連付けられている。したがって、複数のロウ３１０のそれぞれは、異なる独立したソフトウェアスレッドの実行に割り当てられる。コンテキストユニット１２０は、少なくとも２つのロウ３１０を含み、例えば、２、４、８、１６、又は、３２のロウ、あるいは、又はこれらの値の間の任意の数のロウを含むことが可能である。いくつかの実施形態では、コンテキストユニット１２０は、３２を超えるロウを含むものとする。複数のロウ３１０は、物理メモリおよび物理ロジックの任意の構成にマッピングすることができる。いくつかの実施形態において、ロウ３１０は、これら複数のロウ３１０からパイプライン１３５へ命令を移動させるのに必要とされる時間および／又は電力を最小化するように、プロセッサ１００内に配置される。
【００２４】
図３Ａは、複数のロウ３１０を含むコンテキストユニット１２０のさらなる詳細を示す図である。コンテキストユニット１２０のロウ３１０は、「ロウ」として称されるが、その内容は、必ずしも、ロウの物理構造に配置される必要はない。それぞれの「ロウ」３１０は、様々な代替構造における物理メモリおよび物理ロジックに、論理マッピングすることができる。
【００２５】
図３Ｂは、様々な実施形態に係る複数のロウ３１０の典型的なメンバーの一例として、コンテキストユニット１２０のロウ３１０Ａのさらなる詳細を示す図である。ロウ３１０Ａは、命令ブロックストレージ３１５を含む。命令ブロックストレージ３１５は、例えば、１、２、４、８、１６、又は他の所望の数の命令を格納するように構成されたメモリを含むことが可能である。複数の命令は、命令キャッシュ１１０又はプロセッサ１００の外部における命令メモリから、命令ブロックストレージ３１５へ転送される。命令ブロックの転送は、命令キャッシュ１１０又はプロセッサ１００の外部における命令メモリのアクセス時間によって制限される。オプションの命令キャッシュ１１０から、又は、直接的にプロセッサ１００の外部における命令メモリから、命令ブロックストレージ３１５への転送は、フェッチ有限状態マシーン３８０としてオプションで構成されるそれぞれのロウ内の履歴依存制御ロジックによって制御される。コンテキストから発行される次の命令が、命令ブロックストレージ３１５に存在しない場合、フェッチ有限状態マシーン３８０は、命令の新しいブロックをフェッチするために、キャッシュ１１０にリクエストを発行する。システム制御ロジック１３０内に含まれる調停ロジックは、キャッシュ１１０がそれぞれのサイクルを開始できる最大数よりも、多い数のアクセスが、所定のサイクルでキャッシュ１１０に提示されないようにする。システム制御ロジック１３０は、キャッシュ１１０からの命令ブロックの転送を管理するように構成される。例えば、システム制御ロジック１３０は、キャッシュ１１０から出てくる命令ブロックを、適切なロウに転送するように構成される。
【００２６】
準備完了命令ストレージ３２０は、次に発行されることが期待される１つの命令に対するストレージとなる論理要素である。あるいは、準備完了命令ストレージ３２０は、命令ブロックストレージ３１５から命令を選択するロジックの出力であってもよい。
【００２７】
フェッチ有限状態マシーン３８０として構成されるロウ３１０Ａ内における履歴依存制御ロジックは、キャッシュ１１０からの命令の転送を要求する。フェッチ有限状態マシーン３８０は、命令ブロックストレージ３１５から発行する次の命令を選択するように、さらに構成される。フェッチ有限状態マシーン３８０は、ロウから発行される次の命令が、ロウに存在するときに、準備完了有限状態マシーン３９０に信号を送信するように、さらに構成される。準備完了有限状態マシーン３９０は、ロウからの命令、例えば、複数の命令が実行される順序を制御可能な命令の制御フローが、パイプラインで実行されていることを示す複数の信号を、パイプラインから受信する。そして、準備完了有限状態マシーン３９０は、命令における制御フローが解決されたときに、例えば、命令の実行順序が決定されたときに、通知を受信する。制御フロー命令が、フローの変更を引き起こした場合、新しい命令のアドレスが、パイプライン１３５Ａから、フェッチ有限状態マシーン３８０へ送信される。ロウから発行する次の命令のアドレスが、命令ブロックストレージ３１５にない場合、フェッチ有限状態マシーン３８０は、発行する次の命令を含む命令のブロックを送信するためのリクエストを、キャッシュ１１０へ送信し、これらの命令を、命令ブロックストレージ３１５内に入れる。それから、フェッチ有限状態マシーン３８０は、次の命令が存在することを、準備完了有限状態マシーン３９０に通知する。
【００２８】
準備完了有限状態マシーン３９０として構成されるロウ３１０Ａ内の履歴依存制御ロジックは、次の命令が、ロウ３１０Ａから発行される準備ができたときを決定する。
準備完了有限状態マシーン３９０は、準備完了有限状態マシーン３９０を含むロウ３１０と同じハードウェアコンテキストに関連付けられたレジスタファイル１２５内の特定の物理メモリアレイポートへのアクセスが、それぞれのメモリアレイのアクセス時間内に複数回発生しないように構成される。具体的には、特定の物理メモリポート４２０Ａのアクセス時間が、Ｘクロックサイクルである場合、準備完了有限状態マシーン３９０は、同じ物理アクセスポート４２０Ａにアクセスする複数の命令の開始中に、少なくともＸクロックサイクルの遅延を必要とするように構成される。
【００２９】
この要件を使用して、パイプライン１３５は、特定の物理メモリアレイのアクセス時間中に、複数回、すなわち、特定の物理メモリアレイのアクセス時間で分割された頻度より大きな頻度で、論理レジスタファイルセット１５０にアクセスするように構成することができる。これは、準備完了有限状態マシーン３９０が、アクセスの実行時に、既に使用されているものとは異なるメモリポートおよび／又はレジスタファイルセット１５０の異なるレジスタファイル１２５にアクセスする、ロウ３１０Ａからの命令の発行のみを、可能にするように構成されるために達成される。
【００３０】
典型的な実施形態は、レジスタファイルセット１５０内に複数のメモリアレイ４１０を含み、準備状態マシーン３９０内における制御ロジックを使用して、２つの命令が同じ物理メモリアレイの同じポートを重複して使用しないようにする。コンテキストユニット１２０からパイプライン１３５へ発行される連続した命令は、それらの読み取りおよび書き込みがマッピングされる特定のレジスタエントリが、時間内に重複する読み取り又は書き込みとは異なるポート４１０にアクセスするように、慎重に選択される。
【００３１】
図２は、本発明の様々な実施形態によるメモリポートアクセスのタイミングチャートを示す図である。水平線は、特定のポートがアクセスされる時間を示す。線の長さは、それぞれのポートのアクセス時間Ｘを表す。図示のポートＡ〜Ｅは、複数のメモリアレイに分割することができる。メモリポートＡは、時刻２１０で最初にアクセスされ、そのアクセスは、時刻２２０で完了する。時刻２１０と時刻２２０との間で、ポートＢ〜Ｅへのアクセスが開始されるが、必ずしも完了するわけではない。制御ロジック１３０の制御のもとで、ポートＡにアクセスしようとする別の試みは、時刻２２０の後の時刻２３０まで、行われない。読み取り操作がメモリポートＡで開始された後、アクセスポートＢは、Ｘクロックサイクル未満でアクセスされ得る。レジスタアクセスに対する、このような、ずらしたアプローチにより、単一のポートのみがアクセスされる場合よりも、より高い頻度で、レジスタの読み取り操作および書き込み操作を並行して実行することができる。
【００３２】
プロセッサ１００は、発行ロジック１４０を、さらに備える。発行ロジック１４０は、コンテキストユニット１２０内からロウ３１０を選択し、選択されたロウから複数のパイプライン１３５の１つへ命令を発行するように構成される。また、発行ロジック１４０は、プログラムカウンタ３４０の値、および、命令の送信元であるロウの番号も発行する。命令が取得されているロウの番号も送信され、命令が属するコンテキストの識別子として機能する。
【００３３】
発行ロジック１４０は、通常、複数のパイプライン１３５のうちの１つからパイプライン１３５が、次の命令に対する準備ができているという指示に応答して、ロウの選択を行うように構成される。その選択は、「準備完了状態」にある選択されたロウに基づいている。本明細書の他の箇所でさらに説明するように、「準備完了状態」は、「準備完了ビット」又は準備完了信号によって、任意選択的に示される。「準備完了状態」である場合、ロウは、関連する独立したソフトウェアスレッドで次の命令を発行する準備ができている。メモリ内におけるその命令の位置は、プログラムカウンタ３４０によって示される。
【００３４】
命令が発行されるハードウェアコンテキストの識別子も、命令およびプログラムカウンタ値と一緒に、パイプラインへ送信される。いくつかの実施形態では、ハードウェアコンテキストの識別子は、命令が発行されるロウの識別子である。
【００３５】
いくつかの実施形態では、パイプライン１３５のそれぞれは、１個の特定の種類の実行ユニット１４５を含む。これらの実施形態では、命令を発行するロウ３１０の選択は、任意選択的に、実行ユニット１４５が処理するように構成される命令の種類と、複数のロウ３１０のうちの特定のメンバーから発行される準備ができている命令の種類との一致に、さらに依存する。このアプローチは、通常、複数の命令が、ロウ３１０に存在する間に、少なくとも部分的にデコードする必要がある。このアプローチでは、準備完了状態マシーン３９０が、部分的なデコードを実行するか、あるいは、発行ロジック１４０が、部分的なデコードを実行する。
【００３６】
代替的な実施形態におけるパイプライン１３５Ａでは、複数の命令は、その特定のパイプラインに関連する実行ユニット１４５Ａの種類に関係なく、パイプライン１３５Ａに発行することができる。この場合、命令をデコードした後に、その命令の種類が、実行ユニット１４５Ａに対して間違っていることが発見される場合がある。その結果、パイプライン１３５Ａは、デコード後の命令を、その命令に対してふさわしい種類の実行ユニット１４５を含んでいる複数のパイプライン１３５のうちの異なるメンバーに転送する。
【００３７】
いくつかの実施形態では、プロセッサ１００は、パイプライン１３５の種類ごとに、発行ロジック１４０の異なるインスタンスを含む。これらの実施形態では、発行ロジックのそれぞれのインスタンスは、発行ロジックが接続されるのにふさわしい種類の１つ以上のパイプラインの命令のみを選択する。任意で、パイプライン１３５のそれぞれは、発行ロジック１４０の独自のインスタンスに関連付けられる。
【００３８】
ロウ３１０Ａは、準備完了ビット３３０をさらに含む。準備完了ビット３３０は、発行ロジック１４０によって使用されて、複数のロウ３１０の中から１つのロウを選択し、そして、選択されたロウ３１０から、複数のパイプライン１３５のうちの１個へ命令を発行するように構成される。それぞれのクロックサイクルにおいて、発行ロジック１４０は、複数のロウ３１０の準備完了ビット３３０をスキャンするように構成され、それらの準備完了ビット３３０の中から論理的に有効な状態とされているものを選択する。選択されたロウは、そのロウの準備完了命令ストレージ３２０から取得され、そして、複数のパイプライン１３５のうちの１つへ送信された準備完了命令を有する。したがって、発行ロジック１４０は、選択されたロウに含まれる準備完了有限状態マシーン３９０によって、論理的に有効な状態とされた準備完了ビット３３０に応答する。全てのパイプラインが、同じオペランドの形式をとらない場合、発行ロジック１４０は、任意で、その命令が、発行先のパイプラインに対して、正しい形式であることを確認できる。
【００３９】
ロウ３１０のそれぞれは、プログラムカウンタ３４０をさらに含む。命令がパイプライン１３５に発行されると、その命令には、メモリアドレス空間内に存在するアドレスが付随する。プログラムカウンタ３４０は、このアドレスを保持するように構成される。有限状態マシーン３８０内に存在する制御ロジックは、命令が発行されたときに内容が正しいことを保証するためにプログラムカウンタ３４０の内容を更新するように構成される。それぞれのプログラムカウンタ３４０の内容（例えば、メモリアドレスなど）は、ロウ３１０のメンバーから発行されたそれぞれの命令と一緒に、パイプライン１３５へ送信される。
【００４０】
複数のロウ３１０のそれぞれは、任意で、制御／状態レジスタ３５０をさらに含む。制御／状態レジスタ３５０は、プロセッサ１００の状態を示すデータを格納するように構成されたメモリを含むことが可能であり、および／又は、プロセッサの操作を制御するポートとして機能することが可能である。制御／状態レジスタ３５０は、命令がシステムに関するメタ情報にアクセスし、システムを操作可能にするインターフェイス機構として機能する。このようなメタ情報には、例えば、割り込み要求の存在、そのような割り込み要求の原因、最後のリセット以降にスレッドによって実行された命令の総数などのような状態情報が含まれる。制御／状態レジスタ３５０上で書き込み操作を実行することは、割り込み要求のクリア、パイプライン又はコプロセッサの操作モードの変更、および／又は、これらに類似するもののために使用されてもよい。制御／状態レジスタ３５０のいくつかは、複数のロウ３１０、例えば、リアルタイムクロックにアクセスするために使用される制御レジスタの間で共有される。しかし、他の制御／状態レジスタ３５０は、複数のロウ３１０の個々のメンバーに固有であり、状態レジスタは、例えば、そのロウ３１０のコンテキストから完了した命令の総数にアクセスするために使用される。
【００４１】
ロウ３１０のそれぞれは、フェッチ有限状態マシーン３８０を、さらに備える。フェッチ有限状態マシーン３８０は、ロウ３１０Ａ内における複数の命令のブロックを管理するように構成される。この管理には、例えば、キャッシュ１１０から複数の命令の新しいブロックをフェッチするための要求を発行すること、受信した命令のブロックを命令ブロックストレージ３１５内に格納すること、命令がロウ３１０Ａから発行されるときに、正しいメモリアドレスを保持するようにするためにプログラムカウンタ３４０を更新すること、準備完了命令ストレージ３２０に命令を配置すること、および、準備完了有限状態マシーン３９０に信号を送信すること、（本明細書の他の箇所で詳細については、さらに説明する）が含まれる。具体的には、フェッチ有限状態マシーン３８０は、ロウから発行する次の命令が命令ブロックストレージ３１５に存在しないときはいつでも、Ｌ１命令キャッシュ１１０から命令のブロックをフェッチするように構成される。このような状況は、命令ブロックストレージ３１５における全ての命令が処理されたとき、又は、命令ブロックストレージ３１５に、まだ存在しない命令に分岐したとき、などを含む様々な方法で発生し得る。フェッチ有限状態マシーン３８０は、複数の命令のブロック内における次の命令が実行されるための次の命令であるか場合、又は、制御フロー命令が命令スレッドに発生している場合に、プログラムカウンタ３４０をインクリメントして、分岐又は飛び越えの計算されたターゲットアドレスを、プログラムカウンタ３４０の中に格納するように構成される。
【００４２】
フェッチ有限状態マシーン３８０は、命令を、準備完了命令ストレージ３２０に配置するように構成される。準備完了命令ストレージ３２０は、それ自体別個のストレージ要素であってもよいし、又は、準備完了命令ストレージ３２０は、命令ブロックストレージ３１５から特定の１個の命令を選択するシステムであってもよい。準備完了命令ストレージ３２０は、命令がロウから発行されたときに、命令発行ロジック１４０がその命令を受け取るポータルとして機能する次の命令が、準備完了命令ストレージ３２０に配置されると、このことは、準備完了有限状態マシーン３９０へと伝えられる。命令を準備完了命令ストレージ３２０に配置し、その命令が存在するということを示すための要求の詳細は、本明細書の他の場所で説明する。例えば、図５および図６を参照されたい。
【００４３】
複数のロウ３１０のそれぞれは、準備完了有限状態マシーン３９０をさらに含む。準備完了有限状態マシーン３９０は、ロウ３１０Ａからパイプライン１３５Ａ又はパイプライン１３５Ｂのメンバーへの命令の発行を制御するように構成される。典型的には、発行される命令は、それぞれのロウ３１０に対する準備完了命令ストレージ３２０に格納されている命令である。いくつかの実施形態では、準備完了有限状態マシーン３９０は、同じスレッドからの、又は任意で、他のスレッドからの以前の命令の実行進捗を追跡するように構成され、以前に発行された命令の種類および次に発行される命令の種類に関する情報を、任意で受け取ってもよい。以前の命令の種類および実行進捗に基づいて、準備完了有限状態マシーン３９０は、準備完了命令ストレージ３２０内における命令が実行のためにパイプラインに発行する準備ができたときを示すように構成される。命令を発行する準備ができているための１つの判断基準は、フェッチ有限状態マシーン３８０が、まず、発行する次の命令は、準備完了命令ストレージ３２０で現在利用可能であるということを示すことである。準備完了有限状態マシーン３９０は、準備完了命令ストレージ３２０内における命令の準備ができていると判断すると、それに応じて、準備完了ビット３３０を設定することにより、このような準備状態を通知する。代替の他の実施形態では、フェッチ有限状態マシーン３８０および準備完了有限状態マシーン３９０における複数の機能は、ロウ３１０Ａにおける、これらの２つの要素間で再分配され得ることに留意されたい。
【００４４】
プロセッサ１００は、システム制御ロジック１３０を、さらに備える。システム制御ロジック１３０は、命令キャッシュ１１０およびデータキャッシュ１１５に対して行われた複数のリクエストの管理を含むシステムレベルの複数の制御操作を管理する。システム制御ロジック１３０は、キャッシュに対して行われた複数のリクエスト間の調停を行う。システム制御ロジック１３０は、命令が発行されたコンテキストの識別子も追跡する。システム制御ロジック１３０は、また、命令実行の状態に関係する、プロセッサ１００の要素間に送信する信号を管理する。例えば、システム制御ロジック１３０は、メモリ操作がデータキャッシュ１１５へのアクセスを完了したときを検出し、命令が来たロウに完了を示す信号を送信し、さらに、どの命令が完了したかを示す識別子を任意で送信する。
【００４５】
図４は、２つのメモリアレイ４１０Ａおよびメモリアレイ４１０Ｂを示す図である。２つのメモリアレイ４１０Ａおよびメモリアレイ４１０Ｂのそれぞれは、メモリアレイロウ４５０Ａからメモリアレイロウ４５０Ｈのコンテンツにアクセスするために、個々に４２０Ａ〜４２０Ｆとラベル付けされた３つのポート４２０を有する。プロセッサ１００は、複数のメモリアレイ４１０Ａ、メモリアレイ４１０Ｂを、さらに備える。複数のメモリアレイ４１０Ａ、メモリアレイ４１０Ｂは、複数のレジスタファイル１２５を実装するために使用され、命令キャッシュ１１０およびデータキャッシュ１１５内および他の場所で使用される。メモリアレイ４１０は、ＳＲＡＭアレイ、複数のフリップフロップのアレイ、複数のラッチのアレイ、又は、レジスタファイルメモリとして使用するために設計された特殊なビットセルのアレイ、として実装することができる。これらのアレイは、任意で、一般的にポート４２０と呼ばれるメモリアレイロウ４５０のコンテンツにアクセスするための物理的手段で実装される。例えば、メモリアレイ４１０Ａは、２つの読み取りポート（ポート４２０Ａおよびポート４２０Ｂ）、および、１つの書き込みポート４２０Ｃを有し、そして、メモリアレイ４１０Ａは、書き込みが行われると同時に読み取りを行うことができる。
【００４６】
図５、図６、図７、および、図８は、本発明の様々な実施形態に係る複数の独立スレッドを実行する方法を示す図である。この方法は、相互作用する複数の並行プロセスを含む。図５は、メモリシステムからロウ３１０へ複数の命令をフェッチするプロセスを示している。図６は、ロウ３１０における命令の準備ができていることを確認し、その準備ができたことを知らせるプロセスを示す図である。図７は、命令を実行し、その命令の進行および結果を知らせるプロセスを示す図である。図８は、メモリ操作を実行し、その状態を通知するプロセスを示す図である。
【００４７】
図５は、メモリシステムからロウ３１０へ複数の命令をフェッチするプロセスを示している。このプロセスは前進試行ステップ５１０で開始し、フェッチ有限状態マシーン３８０が、命令ブロックストレージ３１５内の次の命令への前進を試みる。この前進試行ステップ５１０は、スレッドで次に実行する命令のアドレスが、命令ブロックストレージ３１５内の命令のアドレス範囲の外側にある場合に、失敗となる。
【００４８】
命令有無判定ステップ５２０では、次の命令への前進が成功したか否かに基づいて次のアクションが選択される。成功しない場合、次のステップは、フェッチステップ５３０であり、フェッチ要求が発行される。成功する場合、次のステップは、ＰＣ調整ステップ５６０又は移動ステップ５７０となる。
【００４９】
フェッチステップ５３０は、そのスレッドにおける実行される次の命令が、それぞれのロウ３１０のローカル命令ブロックストレージ３１５に存在しない場合に生じる。この場合、フェッチ有限状態マシーン３８０は、命令キャッシュ１１０に、フェッチ要求を発行する。複数のロウ３１０の多くは、重複した形でフェッチ要求を発行できる。命令キャッシュ１１０は、発行されたフェッチ要求よりも少ないフェッチ要求しか処理できない可能性がある。このような場合に対処するために、システム制御ロジック１３０は、命令キャッシュ１１０に入る一連の要求を整理する調停ロジックを含む。
【００５０】
待機ステップ５３５において、システムは、命令キャッシュ１１０が指示された複数の命令を検索／提供するのを待機する。これには、キャッシュミスが含まれる場合がある。この場合、命令はプロセッサ１００の外部のメモリからフェッチしなければならない。キャッシュミスは、要求を完了するのに、ある程度の時間を必要とする。
【００５１】
受信ステップ５４０では、複数の命令のブロックが、命令キャッシュ１１０から受信される。
【００５２】
命令格納ステップ５５０は、受信された命令のブロックが、それぞれのロウ３１０の命令ブロックストレージ３１５に格納される。命令格納ステップ５５０が完了すると、命令有無判定ステップ５２０へ戻る。
【００５３】
命令有無判定ステップ５２０で、答えがイエスである場合、ＰＣ調整ステップ５６０と移動ステップ５７０とが並行して実施される。
【００５４】
ＰＣ調整ステップ５６０では、プログラムカウンタが準備完了命令ストレージ３２０に存在する命令の正しいアドレスを有するように調整される。
【００５５】
移動ステップ５７０では、スレッドによって実行される次の命令が、準備完了命令ストレージ３２０で利用可能になると、発行ロジック１４０により、命令が、選択されたパイプライン１３５へ、発行される。
【００５６】
準備完了通知ステップ５８０では、フェッチ有限状態マシーン３８０が、準備完了命令ストレージ３２０に命令が存在するという信号を、準備完了有限状態マシーン３９０へ送信する。
【００５７】
待機ステップ５９０では、プロセスは、命令を発行するためにロウが選択されていることを示す発行ロジック１４０からの信号を待機する。この信号が受信されると、フェッチ有限状態マシーン３８０は、ステップ５１０へ戻り、ステップ５１０にループして、命令ストリーム内における次の命令が、準備完了命令ストレージ３２０に存在するように進めることを試みる。
【００５８】
図６は、ロウにおける命令が、発行される準備ができていることを確認し、その準備完了を知らせるプロセスを示す。このプロセスは、オプションで、全てのロウ３１０で、同時におよび／又は並行して行われる。一旦、開始すると、プロセッサシステムがリセットされるまで、又は、オプションで、制御および状態レジスタ３５０などを介して、複数のロウ１３０のうちの１つを無効にする設定が行われるまで、ロウは、このプロセスを無限に続ける。
【００５９】
プロセスは、命令有無判定ステップ６１０で開始し、ここでは、ロウ３１０から発行される次の命令が、準備完了命令ストレージ３２０に存在するか否かを判定するチェックが準備完了有限状態マシーン３９０内で実行される。
【００６０】
命令有無判定ステップ６１０において、命令が存在しない場合、待機ステップ６２０において、準備完了有限状態マシーン３９０は、フェッチ有限状態マシーン３８０が命令の存在を通知してくれるまで待機する。
【００６１】
命令有無判定ステップ６１０において、命令が存在する場合、次のステップは、干渉有無判定ステップ６３０に直接進む。
【００６２】
干渉有無判定ステップ６３０は、複数のロウ１３０のうちの単一のメンバー内で行われ、そのロウ３１０からの複数のメンバーを含む。干渉有無判定ステップ６３０は、準備完了命令ストレージ３２０内の命令と、複数のロウ１３０のうちの同じメンバーから以前に発行された命令と、の間に干渉が存在するか否かをチェックする。このような干渉には、準備完了命令ストレージ３２０内の命令により指定されたレジスタによってアクセスされる物理メモリアレイのポートが、準備完了命令ストレージ３２０内の命令が、次のサイクルで発行される場合に、別の命令で使用されてしまう、といったような状態が含まれる。干渉の別の例は、準備完了命令ストレージ３２０内の命令がメモリアクセス命令であるが、同じロウ３１０からの以前のメモリアクセス命令がまだ実行されている場合である。
【００６３】
干渉がある場合、プロセスは、待機ステップ６４０へ進む。待機ステップ６４０では、準備完了有限状態マシーン３９０が、全ての干渉が解消されるまで待機する。準備完了有限状態マシーン３９０は、プロセッサ１００の他の複数の部分から信号を受信することにより解像度を検出し、これらの信号は以前に発行された命令の状態を示す。そのような信号を発生する例には、Ｌ１データキャッシュ１１５によるアクセス完了時において、命令を発行したロウ３１０に、メモリアクセス命令の完了を示す信号を送信するシステム制御ロジック１３０が含まれる。システム制御ロジック１３０は、各命令が発行されるコンテキストを追跡し、この情報を使用して、信号を正しいロウ３１０に配信する。そして、信号を受信したロウの準備完了有限状態マシーン３９０は、信号の受信により、その状態を更新する。その信号の受信が、準備完了命令ストレージ３２０の命令に関連する全ての干渉を解消すると、準備完了有限状態マシーン３９０は、待機をやめ、プロセスは、信号ステップ６５０へ進む。
【００６４】
信号ステップ６５０では、準備完了ビット３３０がアサートされ、これは、準備完了ビット３３０を含むロウ３１０が、準備完了命令ストレージ３２０に保持された命令を、パイプラインへ発行する準備ができていることを発行ロジック１４０に通知する発行ロジック１４０への信号である。次にステップは、待機ステップ６６０へ進む。
【００６５】
待機ステップ６６０では、フェッチ有限状態マシーン３８０および準備完了有限状態マシーン３９０の両方が、それらを含むロウ１３０のメンバーが、発行ロジック１４０により選択されるのを待機する。発行ロジック１４０は、この発行ロジック１４０が、両方の有限状態マシーンを含んでいる行を選択すると、両方の有限状態マシーンに信号を提供する。待機が終了すると、プロセスは、命令有無判定ステップ６１０へ、ループして戻る。
【００６６】
図７は、命令を実行し、その進捗状況と結果を通知するプロセスを示す。このプロセスは、パイプラインに命令が発行されると、各パイプライン１３５の各サイクルの開始段階で開始する。
【００６７】
命令受信ステップ７０５では、有効な命令がパイプライン１３５Ａに受信される。命令は、発行ロジック１４０によって、ロウ１３０のうちの選択されたメンバーから転送される。プロセスは、次に、オプションで、並行して、レジスタアドレス抽出ステップ７１０およびデコードステップ７１５の両方のステップへ進む。
【００６８】
レジスタアドレス抽出ステップ７１０は、受信した命令からビットが抽出される。命令セットアーキテクチャに含まれるほとんどの命令は、命令への入力を保持する１つ以上のレジスタを指定する。抽出されたビットは、実行ユニットへの入力として使用するデータを保持している論理レジスタを識別する。レジスタを指示するビットは、レジスタファイルセット１５０に送信され、特定のアクセスポートを介して特定のメモリアレイから特定の場所へアクセスするために使用される。次にプロセスは、レジスタコンテンツ受信ステップ７２５へ進む。
【００６９】
デコードステップ７１５では、受信された命令がデコードされ、命令の種類、命令が必要とする実行ユニットの種類などを決定する。命令の種類によって、命令に必要なクロックサイクル数が決まる場合がある。したがって、ストリーム内の次の命令をどれだけ早く発行できるかが決定される。
【００７０】
条件付きロウ通知ステップ７２０では、命令が、接近して続くことができる種類のものである場合、このステップで、パイプライン１３５Ａは、システム制御ロジック１３０に信号を送信し、システム制御ロジック１３０は、命令が発行されたロウ３１０のメンバーに信号を配信する。その信号を受信するロウ１３０のメンバーでは、準備完了有限状態マシーン３９０が、そのロウからの次の命令を発行する準備ができているか否かの判断にその信号を使用する。このステップは、オプションで、このような種類の命令との干渉が、最も早く起こらなくなるまでクロックサイクル数をカウントダウンし、待機しなければならない準備完了有限状態マシーン３９０に、部分デコーダおよびカウンターを配置する、といったような他の方法で実行される。
【００７１】
レジスタコンテンツ受信ステップ７２５では、操作対象のデータをパイプライン１３５Ａによって受信し、そのデータを、パイプライン１３５Ａ内にある実行ユニット１４５Ａへの入力として使用する。
【００７２】
操作実行ステップ７３０では、命令が実行ユニット１４５で実行される。
【００７３】
フロー制御ステップ７３５は、プロセスの決定点である。命令の種類が、制御フローでない場合、次のステップは、ステップ７４０である。命令の種類が、制御フローである場合、次のステップは、ステップ７７５である。フローの種類は、命令の実行順序を制御できる命令の種類である。
【００７４】
メモリ操作命令判定ステップ７４０は、プロセスの決定点である。命令の種類が、ロード命令又はストア命令などのメモリ操作命令ではない場合、次のステップは、結果信号ステップ７４５となる。命令の種類が、ロード命令又はストア命令などのメモリ操作である場合、次のステップは、メモリ操作命令送信ステップ７５５となる。
【００７５】
結果信号ステップ７４５は、非制御フローおよび非メモリ操作のためのものである。このような命令の種類の場合、実行結果は、通常、実行ユニット１４５によって生成され、生成された実行結果は、システム制御ロジック１３０によって、レジスタファイルセット１５０に送信される。次のステップは、結果書き込みステップ７５０である。
【００７６】
結果書き込みステップ７５０では、パイプライン１４５から送信された結果が、物理メモリに書き込まれる。準備完了有限状態マシーン３９０は、結果を書き込むこのステップ中に、競合が発生しない場合にのみ、パイプライン１３５に命令を発行できるように構成されているため、結果が書き込まれるメモリアレイのポートが空いていることが保証される。あるいは、システム制御ロジック１３０は、２つの書き込みが同じ物理メモリアレイにおける同じポートを、重複して占有しないように構成することができる。
【００７７】
メモリ操作命令送信ステップ７５５は、メモリ操作種類の命令のためのものである。このステップでは、実行するメモリ操作、メモリアドレス、および、オプションで書き込むデータを、データキャッシュ１１５にアクセスしようとする多くのパイプライン間で調停するシステム制御ロジック１３０で使用できるようにする。次のステップは、コンテキストユニット通知ステップ７６０である。
【００７８】
コンテキストユニット通知ステップ７６０は、メモリシステムがアクセスされてからメモリ操作が完了するまでの適度な時間を要する。メモリ操作が完了すると、システム制御ロジック１３０は、命令が発行されたロウ３１０に、メモリ操作が完了したことを通知する。準備完了有限状態マシーン３９０は、ロウ３１０が、次の命令を発行する準備ができているか否かを判断する際に、この情報を使用する。次のステップは、格納判定ステップ７６５である。
【００７９】
格納判定ステップ７６５は、プロセスの決定点である。完了したメモリ操作が、ロード命令である場合、次のステップは、結果書き込みステップ７７０である。完了したメモリ操作が、ロード命令でない場合、命令の実行は終了する。
【００８０】
結果書き込みステップ７７０は、ロード命令のためのものである。メモリシステムから検索された結果は、レジスタファイルセット１５０へ送られ、そこで、データが、物理メモリアレイに書き込まれる。これで、この命令の実行は終了する。
【００８１】
フロー判定ステップ７７５は、フロー制御命令のためのものである。フロー判定ステップ７７５は、プロセスの決定点である。実行ユニット１４５による命令の処理が完了すると、フロー制御命令が取得されているか否かがわかる。フロー制御が実行されない場合、次のステップは、コンテキストユニット通知ステップ７８０である。フロー制御が実行される場合、次のステップは、新規アドレス送信ステップ７８５である。
【００８２】
コンテキストユニット通知ステップ７８０は、システム制御ロジック１３０を使用して、命令が発行されたロウ３１０に対して、分岐が行われなかったことを通知する。フェッチ有限状態マシーン３８０は、この情報を使用して、準備完了命令ストレージ３２０に入れる命令を決定する。これで、この命令の実行が終了する。
【００８３】
新規アドレス送信ステップ７８５は、フロー制御の変更が行われるフロー制御命令のためのものである。フロー制御命令の例は、分岐取得命令であり、他の例は、飛び越え命令である。新規アドレス送信ステップ７８５では、システム制御ロジック１３０を使用して、新しい命令アドレスを、フロー制御命令が発行されたロウへ転送する。このアドレスは、フェッチ有限状態マシーン３８０によって受け取られ、どの命令が準備完了命令ストレージ３２０に配置されるかを決定する。これで、この命令の実行が終了する。
【００８４】
本明細書では、いくつかの実施形態が具体的に例示および／又は説明されている。しかし、修正および変形は、その教示および意図された範囲から逸脱することなく、上述の教示によって、添付の特許請求の範囲内で網羅されることが理解されるであろう。例えば、本明細書で使用されるような、物理メモリアレイは、ＳＲＡＭアレイ、又はフリップフロップ又はラッチのアレイ、又は専用レジスタビットセルとして配置されたトランジスタのアレイを含むことができる。
【００８５】
本明細書で説明した実施形態は、本発明の例示である。上述の実施形態は代表的な例として説明したが、本開示の趣旨および範囲内で、多くの変更および置換ができることは当業者に明らかである。したがって、本発明は、上述の実施形態によって制限するものと解するべきではなく、請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【００８６】
本明細書で言及されるコンピューティングシステムは、集積回路、マイクロプロセッサ、パーソナルコンピュータ、サーバ、分散コンピューティングシステム、通信デバイス、ネットワークデバイスなど、およびそれらの様々な組み合わせを含むことができる。コンピューティングシステムは、ランダムアクセスメモリ（RAM）、ダイナミックランダムアクセスメモリ（DRAM）、スタティックランダムアクセスメモリ（SRAM）、磁気媒体、光学媒体、ナノ媒体などの揮発性および／又は不揮発性メモリを備えていてもよい。コンピューティングシステムは、ハードドライブ、コンパクトディスク、デジタル多用途ディスク（DVD）、および／又はデータベースなどのアナログ又はデジタル情報を格納するように構成されたその他のデバイスを備えていてもよい。上述のロジックの様々な例は、コンピュータ可読媒体に保存されたハードウェア、ファームウェア、ソフトウェア、又は、それらの組み合わせを含むことができる。本明細書で使用されるコンピュータ可読媒体は、紙を明示的に除外する。本明細書に記載の方法のコンピュータ実装ステップは、実行されると、コンピューティングシステムにステップを実行させるコンピュータ可読媒体に格納された命令セットを含むことができる。プログラムソフトウェアからの指示に従って特定の機能を実行するようにプログラムされたコンピューティングシステムは、これらの特定の機能を実行するための特別な目的のコンピューティングシステムである。これらの特定の機能を実行しながら、特殊目的のコンピューティングシステムによって操作されるデータは、少なくとも電子的にコンピューティングシステムのバッファーに保存され、保存されたデータが変更されるたびに、特殊な目的のコンピューティングシステムをある状態から次の状態に物理的に変更する。
【００８７】
本明細書で説明するロジックは、コンピュータ可読媒体に格納されたハードウェア、ファームウェアおよび/又はソフトウェアを含むことができる。このロジックを電子デバイスに実装して、特殊用途のコンピューティングシステムを作成することができる。
【図１】
2020508534.tif 000003
【図２】
2020508534.tif 000004
【図３】
2020508534.tif 000005
【図４】
2020508534.tif 000006
【図５】
2020508534.tif 000007
【図６】
2020508534.tif 000008
【図７−１】
2020508534.tif 000009
【図７−２】
2020508534.tif 000010
【手続補正書】
【提出日】平成30年12月20日(2018.12.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の物理メモリアレイを含む論理レジスタファイルセットと、
複数のハードウェアコンテキストと、
少なくとも１個の実行ユニットをそれぞれが含む複数のパイプラインと、
発行ロジックと、
を備え、
前記複数の物理メモリアレイのそれぞれは、
アクセス時間および複数のアクセスポートを有し、
前記論理レジスタファイルセットに含まれる論理レジスタファイルのそれぞれは、
異なるハードウェアコンテキストに割り当てられ、
前記複数のハードウェアコンテキストのそれぞれは、
前記論理レジスタファイルの１つおよびコンテキストユニットのロウを含み、
前記コンテキストユニットは、
前記異なるハードウェアコンテキストに関連付けられた複数のロウを含み、
前記コンテキストユニットの前記ロウは、
プログラムカウンタストレージと、
１つ又は複数の命令を格納するように構成された命令ブロックストレージと、
キャッシュからの前記１つ又は複数の命令のフェッチングを管理するように構成されたロジックと、
前記ロウから命令を発行する準備ができたときを制御するように構成されたロジックと、
をさらに含み、
前記発行ロジックは、
前記複数のロウのうちから１つのロウを選択し、前記選択されたロウから複数のパイプラインの１つへ命令を発行するように構成され、ロウの選択は、前記選択されたロウの準備完了状態に基づき、
前記発行ロジックは、
前記複数のパイプラインのそれぞれに対し、準備完了命令を有している前記複数のロウのうちから１つのロウを選択し、選択された前記ロウから前記パイプラインへ、命令を発行するように構成され、
前記発行ロジックは、
同じハードウェアコンテキストからの準備完了命令を、単一のメモリアレイのポートを介して、該メモリアレイにアクセスするために必要とされる最小クロックサイクル数だけ時間的に間隔を空けて、要求することによって、前記論理レジスタファイルセットが、前記単一のメモリアレイの前記アクセス時間で分割されたアクセス頻度よりも高い頻度でアクセスされるように、前記１つのロウを選択するように構成される、
プロセッサシステム。
【請求項２】
前記発行ロジックは、
命令のレジスタが、同じメモリアレイの同じポートにアクセスする、発行準備完了として示される命令を、前記ポートを介して、前記メモリアレイにアクセスするために必要とされる最小クロックサイクル数だけ時間的に間隔を空けて、要求することによって、前記論理レジスタファイルセットが、前記単一のメモリアレイの前記アクセス時間で分割されたアクセス頻度よりも高い頻度でアクセスされるように、前記１つのロウを選択するように構成される、
請求項１に記載のプロセッサシステム。
【請求項３】
前記発行ロジックは、
前記複数のメモリアレイの１つにアクセスするために必要とされる時間内に、前記同じハードウェアコンテキストのロウが２回選択されないように、前記複数のロウのうちから異なるロウを選択的に選択するように構成される、
請求項１に記載のプロセッサシステム。
【請求項４】
前記複数のロウのそれぞれは、
前記複数のパイプラインのうちの１つに発行する準備ができている命令を格納するように構成された準備完了命令ストレージをさらに備える、
請求項１に記載のプロセッサシステム。
【請求項５】
前記発行ロジックは、
前記同じハードウェアコンテキストのロウが、前記複数のパイプラインのうちの１つにより処理される前記ハードウェアコンテキストのロウから発行された最新の命令に必要とされた時間内に、２回選択されないように、前記複数のロウのうちから異なるロウを選択的に選択するように構成される、
請求項１に記載のプロセッサシステム。
【請求項６】
前記命令ブロックストレージは、
少なくとも８つの命令を格納するように構成される、
請求項１に記載のプロセッサシステム。
【請求項７】
前記複数のロウのそれぞれは、
命令が前記それぞれのロウから発行する準備ができていることを示すように構成された準備完了ビットストレージをさらに含み、
発行ロジックは、
前記準備完了ビットストレージに格納されたビットに応答して前記ロウを選択するように構成される、
請求項１に記載のプロセッサシステム。
【請求項８】
前記ロウのそれぞれは、
命令を少なくとも部分的にデコードするように構成されたロジックをさらに含み、
前記発行ロジックは、さらに、
前記デコードされた命令の種類に基づいて、前記ロウを選択するように構成される、
請求項１に記載のプロセッサシステム。
【請求項９】
前記複数のパイプラインのそれぞれは、
異なる命令の種類に基づいて、ロウを選択するように構成された前記発行ロジックの一部に関連付けられる、
請求項１に記載のプロセッサシステム。
【請求項１０】
前記発行ロジックは、
前記選択されたロウに含まれる有限状態マシーンによって示される準備完了状態に応答する、
請求項１に記載のプロセッサシステム。
【請求項１１】
前記有限状態マシーンは、
１）前記複数のパイプラインのメンバーを十分に通過した前の命令と、
２）前記ロウに存在している次に発行される命令に、
応答して、前記準備完了状態を示すように構成される、
請求項１０に記載のプロセッサシステム。
【請求項１２】
前記有限状態マシーンは、
前記次の命令の種類を決定するように構成される、
請求項１０に記載のプロセッサシステム。
【請求項１３】
前記複数のパイプラインは、
異なる種類のパイプラインを含み、
前記それぞれの種類のパイプラインは、
１つ又は複数の種類のデータを処理するように構成される、
請求項１に記載のプロセッサシステム。
【請求項１４】
前記複数のパイプラインのそれぞれは、
命令が、前記ロウのそれぞれの内で発行される準備ができていることを示すように構成されたロジックに、それぞれの状態を報告するように構成される、
請求項１に記載のプロセッサシステム。
【請求項１５】
前記複数のパイプラインのうちの少なくとも１個は、前記命令の種類に基づいて、前記複数のパイプラインのうちの別のパイプラインに命令を転送するように構成される、
請求項１に記載のプロセッサシステム。
【請求項１６】
実行ユニットを含むパイプラインと、
命令キャッシュと、
複数のロウを含むコンテキストユニットと、
発行ロジックと、
を備え、
前記コンテキストユニットの前記複数のロウのそれぞれは、独立したスレッドに割り当てられており、
前記複数のロウのそれぞれは、少なくとも１個のプログラムカウンタを含み、
前記複数のロウのそれぞれは、１つ又は複数の命令を格納するように構成されたストレージを含み、
前記複数のロウのそれぞれは、前記命令キャッシュから、前記１つ又は複数の命令をフェッチするように構成されたロジックを含み、
前記複数のロウのそれぞれは、命令が、それぞれの前記ロウから前記パイプラインへ発行される準備ができたときを決定するように構成されたロジックを含み、
前記命令を発行するように選択される準備の完了度は、
同じ前記スレッドからの以前の全ての発行済み命令の種類および前記命令の実行完了度に少なくとも部分的に基づき、
前記発行ロジックは、
前記複数のロウのうちから１つのロウを選択し、命令を、選択された前記ロウから前記パイプラインへ発行するように構成される、
プロセッサシステム。
【請求項１７】
命令の準備ができたときを決定するように構成された前記ロジックは、
前記それぞれのロウにおける過去のアクションの履歴に応答する、
請求項１６に記載のプロセッサシステム。
【請求項１８】
命令の準備ができたときを決定するように構成された前記ロジックは、
前記それぞれのロウにおける過去のアクションの履歴に応答する、
請求項１６に記載のプロセッサシステム。
【請求項１９】
前記複数のロウのそれぞれは、
異なるハードウェアコンテキストに関連付けられ、
前記各ハードウェアコンテキストは、
異なる独立したスレッドを実行するように割り当てられる、
請求項１６に記載のプロセッサシステム。
【請求項２０】
前記発行ロジックは、
命令が前記選択されたロウから最後に発行されてからのクロックサイクル数に応答して、前記ロウを選択するように構成される、
請求項１６に記載のプロセッサシステム。
【請求項２１】
前記発行ロジックは、
命令発行の準備ができていることを示す前記ロウ内のロジックに応答して、前記ロウを選択するように構成される、
請求項１６に記載のプロセッサシステム。
【請求項２２】
一連の計算命令を実行する方法であって、
命令スレッドに関連付けられた命令を、メモリから、前記同じ命令スレッドに関連付けられたハードウェアコンテキストのロウ内へ、移動させるステップと、
命令発行の準備ができている複数のロウのうちから１つのロウを選択し、該ロウから準備完了命令を発行するステップであって、前記準備完了命令を前記パイプラインに移動させることを含むステップと、
前記そのロウから発行される次の命令のアドレスを反映するために、命令を発行したロウのプログラムカウンタを更新するステップと、
前記パイプラインを使用して、前記命令を実行するステップと、
を含み、
プログラムカウンタおよび前記移動させた命令を格納するように構成されたストレージを含み、
前記ハードウェアコンテキストのロウは、複数あり、各ロウは異なる命令スレッドに関連付けられており、そして、各ロウはハードウェアコンテキストの一部を保持し、
前記各ロウは、ビヘイビアが、前記システムへの入力に加えて、過去のアクションの履歴に依存し、少なくとも２つの機能を有する制御ロジックを含み、
このような機能は、命令が、それぞれのロウから発行される準備ができていることを示すように構成された第１の有限状態マシーンを有する有限状態マシーンによって具体化することができ、
前記複数のロウのそれぞれは、ハードウェアコンテキストによって実行される１つ又は複数の次の命令のフェッチング制御をするように構成された第２の有限状態マシーンを含み、
前記命令を移動させるステップは、前記ロウからの命令の前記発行に応答し、
そして、前記命令を移動させるステップは、アクセス時間を要し、
ロウにおける前記第１の有限状態マシーンは、前記ロウからパイプラインへ命令を発行する準備ができていることを決定し、
この決定は、前記同じ使い捨ての内部リソースを使用しようとする、例えば、命令レジスタデータを格納している特定のメモリアレイの前記同じポートに複数アクセスしようとする、進行中の命令をめぐる競合を回避することを含み、
命令は、命令内のレジスタアドレスで示されるデータを格納する物理メモリアレイにアクセスできるよりも速い速度でパイプラインに発行される、
計算命令の実行方法。
【請求項２３】
メモリに格納された命令をそれぞれ選択し、前記選択された命令を、前記ロウに移動させ追加のロウをさらに含む、
請求項２２に記載の実行方法。
【請求項２４】
前記ロジックは、
前記パイプラインを介した命令の実行の進行に応答する、
請求項２２に記載の実行方法。
【請求項２５】
前記命令が前記ロウにある間に前記命令を部分的にデコードし、前記ロウから前記次の命令を無難に発行できるまでのクロックサイクル数を決定するステップをさらに含み、
前記ロジックは、
前記クロックサイクル数に応答する、
請求項２２に記載の実行方法。
【請求項２６】
実行ユニットを含むパイプラインと、
命令キャッシュと、
複数のロウを含むコンテキストユニットと、
発行ロジックと、
を備え、
前記複数のロウのそれぞれは、
独立したスレッドに割り当てられており、
前記複数のロウのそれぞれは、
少なくとも１個のプログラムカウンタを含み、
前記複数のロウのそれぞれは、
命令のキャッシュブロックを格納するように構成されたストレージを含み、
前記複数のロウのそれぞれは、
前記命令キャッシュから、１つ又は複数の命令をフェッチするように構成されたロジックを含み、
前記複数のロウのそれぞれは、
命令が、前記それぞれのロウから前記パイプラインへ発行される準備ができたときを決定するように構成されたロジックを含み、
前記命令を発行するように選択される準備の完了度は、
同じ前記スレッドからの以前の全ての発行済み命令の種類および前記命令の実行完了度に少なくとも部分的に基づき、
前記発行ロジックは、
前記複数のロウのうちから１つのロウを選択し、命令を、選択された前記ロウから前記パイプラインへ、発行するように構成される、
プロセッサシステム。
【請求項２７】
前記発行ロジックは、
前記複数のロウのうちの異なるロウを、準備完了ビットにて選択的に選択するように構成される、
請求項３に記載のプロセッサシステム。
【国際調査報告】
2020508534.tif 000011