(57)【要約】マイクロプロセッサアーキテクチャは、単一命令多重データＳＩＭＤアレイ中に配置され、特定の命令タイプの命令を処理するようにそれぞれ動作可能な複数の処理素子と、複数の実行装置を含み特定の命令タイプの命令を処理するようにそれぞれ動作可能な逐次プロセッサと、複数の命令を受信し、受信された命令の命令タイプにしたがって、受信された命令を実行装置へ分配するように動作可能な命令制御装置とを具備している。逐次プロセッサの実行装置は並列にそれぞれの命令を処理するように動作可能である。【選択図】図２
2008532131.tif 000002
【特許請求の範囲】
【請求項１】
実行装置の単一命令多重データＳＩＭＤアレイ中に配置されている複数の処理素子と、
特定の命令タイプの命令を処理するようにそれぞれ動作可能な複数の実行装置を含んでいる逐次プロセッサと、
複数の命令を受信し、受信された命令の命令タイプにしたがって、受信された命令をＳＩＭＤアレイと逐次プロセッサの実行装置へ分配するように動作可能な命令制御装置とを具備し、
逐次プロセッサの実行装置は並列でそれぞれの命令を処理するように動作可能であるマイクロプロセッサアーキテクチャ。
【請求項２】
各処理素子は複数の実行装置を含み、各処理素子の実行装置は相互に並列にそれぞれの命令を処理するように動作可能である請求項１記載のマイクロプロセッサアーキテクチャ。
【請求項３】
単一命令多重データＳＩＭＤアレイ中に配置され、特定の命令タイプの命令を処理するようにそれぞれ動作可能な複数の実行装置を含んでいる複数の処理素子と、
複数の命令を受信し、受信された命令の命令タイプにしたがって、受信された命令を処理素子の実行装置へ分配するように動作可能な命令制御装置とを具備し、
各処理素子の実行装置は並列でそれぞれの命令を処理するように動作可能であるアーキテクチャ。
【請求項４】
命令タイプはデータ処理及びデータ移動命令を含んでいる請求項１乃至３のいずれか１項記載のアーキテクチャ。
【請求項５】
命令制御装置はそれぞれの処理スレッドに関する複数の命令流を受信し、その並列処理のために少なくとも２つの異なる命令流から実行素子へ命令を分配するように動作可能である請求項１乃至４のいずれか１項記載のアーキテクチャ。
【請求項６】
命令制御装置はそれぞれの処理スレッドに関する複数の命令流を受信し、実行装置へ分配される連続的な命令が異なる命令流からであるように命令を分配するように動作可能である請求項１乃至４のいずれか１項記載のアーキテクチャ。
【請求項７】
実行装置の単一命令多重データＳＩＭＤアレイ中に配置されている複数の処理素子と、
複数の実行装置を含み、特定の命令タイプの命令を処理するように動作可能な逐次プロセッサとを具備し、
逐次プロセッサの実行装置の１つは、逐次プロセッサの少なくとも１つの他の実行装置により処理するためのデータを記憶するように動作するレジスタユニットであり、
そのレジスタユニットは、それぞれの処理スレッドに関連されるレジスタの複数のセットを含んでいるマイクロプロセッサアーキテクチャ。
【請求項８】
各処理素子は、それぞれ特定の命令タイプの命令を処理するように動作可能な複数の実行装置を含み、各処理素子の１つの実行装置は関連される処理素子の少なくとも１つの他の実行装置により処理するためのデータを記憶するように動作するように動作可能なレジスタユニットであり、
レジスタユニットはレジスタの複数のセットを含み、それらのセットはそれぞれの処理スレッドに関連されている請求項７記載のアーキテクチャ。
【請求項９】
逐次プロセッサは複数の実行装置を含み、アーキテクチャはさらに複数の命令を受信し、受信された命令の命令タイプにしたがって、受信された命令を実行装置へ分配するように動作可能な命令制御装置を具備し、実行装置は並列にそれぞれの命令を処理するように動作可能である請求項７または８記載のアーキテクチャ。
【請求項１０】
各処理素子はそれぞれ特定の命令タイプの命令を処理するように動作可能な複数の実行装置を含み、アーキテクチャはさらに複数の命令を受信し、受信された命令の命令タイプにしたがって、受信された命令を処理素子の実行装置へ分配するように動作可能な命令制御装置を具備し、各処理素子の実行装置は並列にそれぞれの命令を処理するように動作可能である請求項７、８または９記載のアーキテクチャ。
【請求項１１】
単一命令多重データＳＩＭＤアレイ中に配置され、それぞれ複数の実行装置を含んでいる複数の処理素子を具備し、実行装置の１つは関連される処理素子の少なくとも１つの他の実行装置により処理するためのデータを記憶するように動作可能なレジスタユニットであり、
レジスタユニットはレジスタの複数のセットを含み、それらのセットはそれぞれの処理スレッドに関連されるマイクロプロセッサアーキテクチャ。
【請求項１２】
各処理素子はそれぞれ特定の命令タイプの命令を処理するように動作可能な複数の実行装置を含み、アーキテクチャはさらに複数の命令を受信し、受信された命令の命令タイプにしたがって、受信された命令を処理素子の実行装置へ分配するように動作可能な命令制御装置を具備し、各処理素子の実行装置は並列にそれぞれの命令を処理するように動作可能である請求項１１記載のアーキテクチャ。
【請求項１３】
命令タイプはデータ処理およびデータ移動命令を含んでいる請求項９、１０、１２または１３記載のアーキテクチャ。
【請求項１４】
命令制御装置は、それぞれの処理スレッドに関連する複数の命令流を受信し、その並列処理のために少なくとも２つの異なる命令流から処理素子の実行素子へ命令を分配するように動作可能である請求項１０、１２、１３または１４のいずれか１項記載のアーキテクチャ。
【請求項１５】
命令制御装置はそれぞれの処理スレッドに関する複数の命令流を受信し、実行装置へ分配される連続的な命令が異なる命令流からのものであるように処理素子へ命令を分配するように動作可能である請求項１０、１２、１３または１４のいずれか１項記載のアーキテクチャ。
【請求項１６】
前記レジスタユニットは関連されるレジスタユニットのレジスタ中に記憶されているデータをアクセスするためのアドレス装置を含んでおり、アドレス装置はレジスタアドレスとスレッドインジケータを受信し、受信されたレジスタアドレスとスレッドインジケータ情報にしたがってレジスタユニットのレジスタにアクセスするように動作可能である請求項７乃至１５のいずれか１項記載のアーキテクチャ。
【請求項１７】
実行装置の単一命令多重データＳＩＭＤアレイ中に配置されている複数の処理素子と、特定の命令タイプの命令を処理するようにそれぞれ動作可能な複数の実行装置を含んでいる逐次プロセッサとを含んでいるプロセッサの実行装置において命令を実行する方法において、
命令流を受信し、
実行装置が相互に並列にそれぞれの命令を処理するように、命令タイプにしたがって、受信された命令を実行装置へ分配するステップを含んでいる方法。
【請求項１８】
各処理素子は複数の実行装置を含み、各処理素子の実行装置は相互に並列にそれぞれの命令を処理するように動作可能である請求項１７記載の方法。
【請求項１９】
単一命令多重データＳＩＭＤアレイ中に配置され、特定の命令タイプの命令を処理するようにそれぞれ動作可能な複数の実行装置をそれぞれ含んでいる複数の処理素子を含むプロセッサの実行装置中で命令を実行する方法において、
命令流を受信し、
実行装置が相互に並列にそれぞれの命令を処理するように、命令タイプにしたがって、受信された命令を実行装置へ分配するステップを含んでいる方法。
【請求項２０】
命令タイプはデータ処理およびデータ移動命令を含んでいる請求項１７乃至１９のいずれか１項記載の方法。
【請求項２１】
命令流はそれぞれの処理スレッドに関係し、命令はその並列処理のために少なくとも２つの異なる処理スレッドから実行素子へ分配される請求項１７乃至２０のいずれか１項記載の方法。
【請求項２２】
命令流はそれぞれの処理スレッドに関係し、命令は実行装置へ分配される連続的な命令が異なる処理スレッドからのものであるように分配される請求項１７乃至２１のいずれか１項記載の方法。
【請求項２３】
各処理素子は複数の実行装置を含んでいる請求項１７乃至２２のいずれか１項記載の方法。
【請求項２４】
プロセッサはさらに複数の実行装置を含む逐次プロセッサを具備している請求項１７乃至２３のいずれか１項記載の方法。
【請求項２５】
命令流は複数の処理スレッドからの命令を含んでいる請求項１７乃至２４のいずれか１項記載の方法。
【請求項２６】
少なくとも２つの実行装置が相互に並列に異なる処理スレッドからの命令を処理するように命令が分配される請求項２５記載の方法。
【請求項２７】
実行装置の単一命令多重データＳＩＭＤアレイ中に配置されている複数の処理素子と、複数の実行装置を含んでいる逐次プロセッサとを具備するマイクロプロセッサアーキテクチャ中のレジスタをアクセスする方法において、前記逐次プロセッサの実行装置の１つは逐次プロセッサの少なくとも１つの他の実行装置により処理するためのデータを記憶するように動作可能なレジスタユニットであり、そのレジスタユニットはレジスタの複数のセットを含んでおり、それらのセットはそれぞれの処理スレッドに関連されており、前記方法は、
スレッド識別子及びレジスタ識別子を含んでいるアクセスリクエストを受信し、
受信されたスレッド識別子及びレジスタ識別子にしたがって、レジスタの１つをアクセスするステップを含んでいる方法。
【請求項２８】
各処理素子は特定の命令タイプの命令を処理するようにそれぞれ動作可能な複数の実行装置を含み、各処理素子の１つの実行装置は関連される処理素子の少なくとも１つの他の実行装置により処理されるためのデータを記憶するように動作可能であるレジスタユニットであり、各レジスタユニットはレジスタの複数のセットを含んでおり、それらのセットはそれぞれの処理スレッドに関連され、レジスタの１つのアクセスは処理素子の実行装置のレジスタのアクセスを含んでいる請求項２７記載の方法。
【請求項２９】
逐次プロセッサは複数の実行装置を含み、方法はさらに、
命令流を受信し、
実行装置が相互に並列にそれぞれの命令を処理するように、命令タイプにしたがって、受信された命令を実行装置へ分配するステップを含んでいる請求項２８または２９記載の方法。
【請求項３０】
各処理素子は特定の命令タイプの命令を処理するようにそれぞれ動作可能な複数の実行装置を含んでいる請求項２７、２８または２９記載の方法。
【請求項３１】
単一命令多重データＳＩＭＤアレイ中に配置されている複数の処理素子を具備しているマイクロプロセッサアーキテクチャ中のレジスタをアクセスする方法において、各処理素子は複数の実行装置を含んでおり、それらの実行装置の１つは関連される処理素子の少なくとも１つの他の実行装置により処理されるためのデータを記憶するように動作可能であるレジスタユニットであり、そのレジスタユニットはレジスタの複数のセットを含み、それらのセットはそれぞれの処理スレッドに関連され、方法は、
スレッド識別子及びレジスタ識別子を含んでいるアクセスリクエストを受信し、
受信されたスレッド識別子及びレジスタ識別子にしたがって、レジスタの１つをアクセスするステップを含んでいる方法。
【請求項３２】
各処理素子は、それぞれ特定の命令タイプの命令を処理するように動作可能である複数の実行装置を含んでおり、方法はさらに、
各処理素子の実行装置が並列でそれぞれの命令を処理するように、受信された命令の命令タイプにしたがって、受信された命令を処理素子の実行装置へ分配するステップを含んでいる請求項３１記載のアーキテクチャ。
【請求項３３】
命令タイプはデータ処理およびデータ移動命令を含んでいる請求項２７乃至３１のいずれか１項記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマイクロプロセッサアーキテクチャに関し、特にＳＩＭＤプロセッサアレイを含むプロセッサのアーキテクチャに関する。
【背景技術】
【０００２】
添付図面の図１は、単一命令多重データ（ＳＩＭＤ）プロセッサアレイを含んでいる従来考えられたマイクロプロセッサアーキテクチャを示している。このプロセッサは、命令を取り出し、ブランチング及び計算を行う非並列命令を処理するように動作可能な逐次プロセッサ10を含んでいる。アーキテクチャはまたアレイ制御装置12により制御される処理素子20のＳＩＭＤアレイ19も含んでいる。アレイ制御装置12は逐次プロセッサ10により制御される。
【０００３】
逐次プロセッサ10は命令キャッシュ（図示せず）から命令流を受信する。逐次プロセッサ10はその後、検索された逐次命令を実行する。逐次プロセッサ10はＳＩＭＤ命令をアレイ制御装置12へ発し、アレイ制御装置12は受信されたＳＩＭＤ命令を復号して優先順位を付け、適切な制御信号を処理素子（ＰＥ）20のＳＩＭＤアレイ19へ送信する。ＳＩＭＤアレイ19は、処理素子が全てＰＥ20に対する特有のデータについて同じ命令を実行する等の既知の方法で動作する。
【０００４】
図１に示されているように、ＳＩＭＤアレイ19は並列動作されるように配置されたプロセッサ素子（ＰＥ）20のアレイを含んでいる。ＳＩＭＤアレイ19の各ＰＥ20は演算論理ユニット（ＡＬＵ）22、レジスタファイル24、ＰＥメモリ26、入力／出力（Ｉ／Ｏ）装置26を含んでいる。ＳＩＭＤアレイ19は同期された状態で動作し、ここでは各ＰＥ20は他のＰＥと同じ時間に同じ命令を実行するが、個々のＰＥに特有のデータを使用する。ＰＥ中におけるこれらの各実行装置は特定のタスクを実行し、即ちＡＬＵ22は演算機能を行い、レジスタファイル24はＡＬＵ22により使用されて内部ＰＥメモリ26へ転送されるデータを記憶し、Ｉ／Ｏ装置26はＰＥメモリ26と外部メモリ（図示せず）との間のデータ転送を処理する。ＰＥデータはＰＥメモリ26中に記憶され、レジスタファイル24を使用してＡＬＵ22へ転送される。アレイ制御装置12はデータをＩ／Ｏ装置28とＰＥメモリ26とレジスタファイル24とＡＬＵ22との間で転送させる命令を発生し、ＡＬＵ22中のデータで動作するための命令をアレイ19へ発生する。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来考えられたアーキテクチャには幾つか欠点が存在する。命令はＰＥにより実行されるように１つの待ち行列中に保持され、これは処理の実質的な遅延を生じさせる可能性がある。また、任意の１つの命令の実行期間中に、各ＰＥ20のただ１つの実行装置が占有される。例えば命令が２つの数字を共に乗算することであるならば、各ＰＥ20のＡＬＵ22が動作している。その代わりに、命令が外部メモリからデータアイテムを取り出すことであるならば、各ＰＥ20のＩ／Ｏ28のみが作動中である。
【０００６】
それ故、これらの欠点を克服できる技術を提供することが望ましい。
【課題を解決するための手段】
【０００７】
本発明の１特徴によれば、マイクロプロセッサアーキテクチャが提供され、それは
実行装置の単一命令多重データＳＩＭＤアレイ中に配置され、特定の命令タイプの命令を処理するようにそれぞれ動作可能な複数の処理素子と、
特定の命令タイプの命令を処理するようにそれぞれ動作可能な複数の実行装置を含む逐次プロセッサと、
複数の命令を受信し、受信された命令の命令タイプに応じて、受信された命令をＳＩＭＤアレイと逐次プロセッサの実行装置へ分配するように動作可能な命令制御装置とを具備し、
逐次プロセッサの実行装置は並列でそれぞれの命令を処理するように動作可能である。
【０００８】
本発明の別の特徴によれば、マイクロプロセッサアーキテクチャが提供され、それは
単一命令多重データＳＩＭＤアレイ中に配置され、特定の命令タイプの命令を処理するようにそれぞれ動作可能な複数の処理素子と、
複数の命令を受信し、受信された命令の命令タイプにしたがって、受信された命令を処理素子の実行装置へ分配するように動作可能な命令制御装置とを具備し、
各処理素子の実行装置は並列にそれぞれの命令を処理するように動作可能である。
【０００９】
本発明の別の特徴によれば、マイクロプロセッサアーキテクチャが提供され、これは
実行装置の単一命令多重データＳＩＭＤアレイ中に配置されている複数の処理素子と、
複数の実行装置を含み、特定の命令タイプの命令を処理するようにそれぞれ動作可能な逐次プロセッサとを具備し、
その逐次プロセッサの実行装置の１つは、逐次プロセッサの少なくとも１つの他の実行装置により処理するためのデータを記憶するように動作するレジスタユニットであり、
そのレジスタユニットは、それぞれの処理スレッドに関連されるレジスタの複数のセットを含んでいる。
【００１０】
本発明のさらに別の特徴によれば、処理素子の単一命令多重データアレイを含んでいるプロセッサの実行装置において命令を実行する方法が提供され、実行装置はそれぞれの命令タイプの命令を処理するように動作可能であり、前記方法は、
命令流を受信し、
実行装置が相互に並列にそれぞれの命令を処理するように動作可能であるように、命令タイプにしたがって、受信された命令を実行装置へ分配するステップを含んでいる。
【発明を実施するための最良の形態】
【００１１】
図２は、本発明を実施するそれぞれのアーキテクチャの主要な素子を示す概略ブロック図である。図２のアーキテクチャは逐次プロセッサ10、並列プロセッサ15、命令制御装置14を含んでいる。命令制御装置14は以下詳細に説明するように、命令を取り出し、復号し、逐次プロセッサ10と並列プロセッサ15へ分配するように動作する。並列プロセッサはＰＥ（プロセッサ素子）20のアレイ19と複数のサブ制御装置を含んでいる。明瞭にする目的で、単一のＰＥだけが図２に示されている。ＳＩＭＤアレイ19は任意の数のＰＥ20を含むことができることが容易に認識されよう。図２の例示的な実施形態では、サブ制御装置はアレイ制御装置16、ロード／記憶制御装置17、Ｉ／Ｏ制御装置18により表されている。命令は命令制御装置から並列プロセッサ15中のサブ制御装置へ、または逐次プロセッサ10へ導かれる。
【００１２】
ＳＩＭＤアレイ19の各ＰＥ20は図２に示されている例では、演算論理ユニット（ＡＬＵ）22、レジスタファイル（Ｒｅｇ）24、Ｉ／Ｏ装置(Ｉ／Ｏ)26を具備している。ＰＥ（ＡＬＵ22、レジスタファイル24およびＩ／Ｏ28）中のこれらの各実行装置はそれぞれのタスクを実行し、即ちＡＬＵ22は演算機能を行い、レジスタファイル24はＡＬＵ22により使用されて内部ＰＥメモリ26へ転送されるデータを記憶し、Ｉ／Ｏ装置28はＰＥメモリ26と外部メモリ（図示せず）との間のデータ転送を処理する。
【００１３】
命令制御装置14はキャッシュ（図示せず）から命令を受信し、これらを以下のカテゴリへ分類する。  
逐次プロセッサ10により実行される命令、
ＳＩＭＤアレイ19中の各ＰＥ20のＡＬＵ22により実行される命令、
ＳＩＭＤアレイ19中の各ＰＥ20のレジスタファイル24により実行される命令、
ＳＩＭＤアレイ19中の各ＰＥ20のＩ／Ｏ装置28により実行される命令。
【００１４】
命令制御装置14はその後、命令の実行位置にしたがって、命令をアレイ制御装置16、ロード／記憶制御装置17、Ｉ／Ｏ制御装置18、または逐次プロセッサ10へ導く。アレイ制御装置16、ロード／記憶制御装置17、Ｉ／Ｏ制御装置18はそれぞれ受信された命令のセットを分類し、それらをＳＩＭＤアレイ中のＰＥの適切な実行装置へ送信する。
【００１５】
図３は、命令制御装置14、逐次プロセッサ10、並列プロセッサ15を含んでいる本発明の一般化された実施形態を示している。図３では、並列プロセッサは処理素子（ＰＥ）36のＳＩＭＤアレイ19を含んでいる。再度述べるが、明瞭にする目的で、単一のＰＥだけが図３に示されている。ＳＩＭＤアレイ19は任意の数のＰＥ20を含むことができることが容易に認識されるであろう。各ＰＥは複数（この例ではＮ個）の実行装置37、38、39を含んでいる。各実行装置はＰＥ中で特別なタスクを実行するが、同じタスクが２以上の実行装置により行われることができる。図３の実施形態では、並列プロセッサ15は命令制御装置からそれぞれの命令タイプを受信するＮ個のサブ制御装置30、32、…34も含んでいる。図３のサブ制御装置の数はＳＩＭＤアレイ19の各ＰＥ36中の実行装置の数に対応している。
【００１６】
図３は、ＡＬＵ、浮遊小数点演算ユニット（ＦＰＵ）、乗算−累算ユニット（ＭＡＣ）、Ｉ／Ｏ制御およびレジスタ記憶装置を含んでいる。他の実行装置が本発明の１実施形態のＰＥで設けられることができることが容易に認識されよう。
【００１７】
逐次プロセッサ10もまた複数の実行装置も具備している。実行装置101、102…10NはＳＩＭＤアレイ中のＰＥ中の実行装置と類似の方法で動作する。逐次プロセッサは適切な実行装置へ命令を分配する制御装置10aを含んでいる。この制御装置10aは単一の制御装置であってもよく、または逐次プロセッサ中のそれぞれの実行装置に対応する複数のサブ制御装置により与えられることもできる。
【００１８】
命令は命令制御装置により受信され、命令のタイプにしたがって逐次プロセッサ10またはサブ制御装置30、32、34の１つへ分配される。各サブ制御装置はその受信された命令を分類し、それらを処理するためにＳＩＭＤアレイ中のＰＥ36の適切な部分へ転送する。
【００１９】
１例では、１つのサブ制御装置は２以上の実行装置へ命令を転送することができる。これは性能の僅かな損失を犠牲にする可能性があるが、ＩＣ上のスペースを節約する利点を有する。
【００２０】
図４は処理素子中で使用するためのレジスタファイル42を示しており、これはレジスタファイル中に記憶されたデータで動作し、多数の命令スレッドを処理できる実行装置を含んでいる。レジスタファイルは逐次プロセッサ10で使用されることもできる。このようなレジスタファイルは本発明の別の特徴を実施する。並列プロセッサ15は予め定められた最大数の命令流（スレッド）を処理することができる。レジスタファイル42にはそれぞれこのようなスレッドに対するレジスタのセットが与えられている。したがって、Ａスレッドを処理することができる並列プロセッサでは、レジスタファイル42はＡグループレジスタを具備している。各グループは予め定められた数ｘのレジスタを含んでいる。ｘ個のレジスタは個々のレジスタデータアイテムを記憶するために設けられる。１つの可能な例では、１２８個のレジスタが各グループに設けられている。レジスタファイル42は、アドレスユニット40を使用してアドレスされるデマルチプレクサ44を介してアクセスされる。アドレスユニット40は入力としてスレッドＩＤとレジスタアドレスを受信し、それによってマルチプレクサの全レジスタアドレスを生成する。このようにして、データ48は出力信号50としてデマルチプレクサ44を介してレジスタ42から転送されることができる。このような拡張されたレジスタ記憶装置は、既存のレジスタ値の出力及び記憶と、次のスレッドに対する新しいレジスタ値の入力とを必要とせずに、処理されているスレッドの高速度の切り替えを可能にすることができる。本発明のこの特徴を実施するレジスタファイルはマルチタスクを可能にする。さらに長いレジスタにより使用されるシリコン領域がレジスタファイルを増加する要因よりも小さいので、このような強化されたレジスタファイルは有効である。例えばレジスタファイルサイズを２倍にするのに対して、シリコン領域の増加は２倍よりも小さい。これはレジスタファイルの容量とは独立して、固定した量の領域が使用される事実によるものである。
【００２１】
図５は命令流が本発明の１実施形態においてどのように分配されるかの１例を示している。示されている例では、それぞれ複数の別々の命令を含む３つの異なる命令スレッドＡ、Ｂ、Ｃが逐次プロセッサ10または並列プロセッサ15へ供給されるように待ち行列されている。例えばスレッドＡは命令Ａ１、Ａ２、Ａ３、Ａ４を含んでいる。１例として、図２を参照して説明されている３つの制御装置16、17、18と逐次プロセッサ10は図５では逐次プロセッサ10に加えて、アレイ制御装置16、ロード／記憶制御装置17、およびＩ／Ｏ制御装置18として示されている。ＳＩＭＤアレイ19中の多数のＰＥのうち１つのＰＥ20のみが明瞭にする目的で示されている。各スレッドからの命令は命令制御装置14に入力される。命令制御装置14は命令が実行される場所にしたがって、命令を各制御装置16、17、18または逐次プロセッサ10へ分配する。図５に示されている例では、命令Ｃ３、Ｂ３、Ａ４は演算命令であり、したがってＡＬＵで実行される。それ故、アレイ制御装置16がＡＬＵ22への命令の供給を制御するので、これらの命令はアレイ制御装置16へ分配される。Ｉ／Ｏ部分28で実行される命令はＩ／Ｏ制御装置18へ送信され、レジスタファイル24で実行される命令はロード／記憶制御装置17へ送信される。各制御装置はその後、その受信された命令の固有の待ち行列の優先順位を定める。同様に、命令Ｃ４は逐次プロセッサへ転送される。
【００２２】
例えば図５に示されているスレッドＣの命令について検討する。命令Ｃ３はＩ／Ｏ命令Ｃ１とＣ２を使用して検索されたオペランドで実行される演算命令を表している。したがって、命令Ｃ３はＩ／Ｏ命令Ｃ１とＣ２が完了するまでＡＬＵ待ち行列中に保持されなければならない。
【００２３】
この場合、最初に命令Ｃ３をＰＥに送信するのではなく、アレイ制御装置は他のＡＬＵ命令を他の命令流から送信できる。この優先順位付けは逆にも適用可能である。例えばＩ／Ｏまたはメモリ（レジスタファイル）動作は、関係する命令流中のＡＬＵ命令の後に行われなければならない可能性がある。そのような場合には、他の命令流のＩ／Ｏ命令は他の命令流のＡＬＵ命令が完了される間に行われることができる。
【００２４】
例えば命令Ｂ３が命令Ｂ１およびＢ２と独立しているならば、これはスレッドＢ中の順序外で処理されることができる。
【００２５】
このような優先順位付けはＰＥ20の各実行ユニット（ＡＬＵ、メモリまたはＩ／Ｏ）が最大の時間量で動作されることを可能にする。このような方式は先に考察したシステムの欠点、即ち他の装置が使用中であるときＰＥの実行装置が十分な時間期間未使用である欠点を克服する。本発明の実施形態は、前述したように命令流からの個々の命令をスケジュール化し、誘導することによって、ＳＩＭＤ環境で効率的なマルチスレッド化能力を与えることができる。
【図面の簡単な説明】
【００２６】
【図１】従来考えられていたＳＩＭＤプロセッサアーキテクチャを示す概略ブロック図。
【図２】本発明を実施するそれぞれのアーキテクチャの主要な素子を示す概略ブロック図。
【図３】本発明を実施するそれぞれのアーキテクチャの主要な素子を示す概略ブロック図。
【図４】図２および３のアーキテクチャの一部の概略ブロック図。
【図５】本発明の１実施形態における命令のフローを示すフロー図。
【図１】
2008532131.tif 000003
【図２】
2008532131.tif 000004
【図３】
2008532131.tif 000005
【図４】
2008532131.tif 000006
【図５】
2008532131.tif 000007
【手続補正書】
【提出日】平成19年10月25日(2007.10.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
単一命令多重データＳＩＭＤアレイ中に配置されており、それぞれ特定の命令タイプの命令を処理するように動作可能な複数の実行装置を含んでいる複数の処理素子と、
命令制御装置とを具備し、その命令制御装置は、
それぞれの処理スレッドに関連され、それぞれが前記特定の命令タイプのうちの１つである複数の命令アイテムを含んでいる複数の命令流を受信し、
前記命令流から命令アイテムを検索し、
任意の命令流から受信された命令アイテムを検索された命令の命令タイプにしたがって、複数の実行装置へ分配するように動作可能であり、
各処理素子の実行装置は相互に並列でそれぞれの命令を処理するように動作可能であるマイクロプロセッサアーキテクチャ。
【請求項２】
命令タイプはデータ処理及びデータ移動命令を含んでいる請求項１記載のアーキテクチャ。
【請求項３】
命令制御装置は、その並列処理のために少なくとも２つの異なる命令流から実行素子へ命令を分配するように動作可能である請求項１または２記載のアーキテクチャ。
【請求項４】
命令制御装置は別の命令アイテムについての命令アイテムまたは関連される命令流中のアイテムの依存性に基づいて、命令流から実行装置へ分配される連続的な命令アイテムの順序の優先順位を定められるように命令を分配するように動作可能である請求項１または２記載のアーキテクチャ。
【請求項５】
ＳＩＭＤアレイ中の各処理素子の１つの実行装置は関連される処理素子の少なくとも１つの他の実行装置により処理するためのデータを記憶するように動作可能なレジスタユニットであり、
レジスタユニットはレジスタの複数のセットを含み、それらのセットはそれぞれの処理スレッドに関連されている請求項１乃至４のいずれか１項記載のマイクロプロセッサアーキテクチャ。
【請求項６】
それぞれ特定の命令タイプの命令を処理するように動作可能な複数の第２の実行装置を含む逐次プロセッサをさらに具備し、前記命令制御装置は受信された命令の命令タイプにしたがって、受信された命令をＳＩＭＤアレイの実行装置と逐次プロセッサの第２の実行装置へ分配するように動作可能であり、第２の実行装置はそれぞれの命令を並列に処理するように動作可能である請求項１乃至５のいずれか１項記載のマイクロプロセッサアーキテクチャ。
【請求項７】
逐次プロセッサの１つの実行装置は逐次プロセッサの実行装置の少なくとも１つの他の実行装置により処理するためのデータを記憶するように動作可能なレジスタユニットであり、
レジスタユニットはレジスタの複数のセットを含み、それらのセットはそれぞれの処理スレッドに関連されている請求項６記載のマイクロプロセッサアーキテクチャ。
【請求項８】
実行装置の単一命令多重データＳＩＭＤアレイ中に配置されている複数の処理素子と、
特定の命令タイプの命令を処理するようにそれぞれ動作可能な複数の実行装置を含んでいる逐次プロセッサとを具備し、
逐次プロセッサの１つの実行装置は逐次プロセッサの実行装置の少なくとも１つの他の実行装置により処理するためのデータを記憶するように動作可能なレジスタユニットであり、
レジスタユニットはレジスタの複数のセットを含み、それらのセットはそれぞれの処理スレッドに関連されているマイクロプロセッサアーキテクチャ。
【請求項９】
各処理素子はそれぞれ特定の命令タイプの命令を処理するように動作可能な複数の実行装置を含み、各処理素子の１つの実行装置は関連される処理素子の少なくとも１つの他の実行装置により処理するためのデータを記憶するように動作可能なレジスタユニットであり、
レジスタユニットはレジスタの複数のセットを含み、それらのセットはそれぞれの処理スレッドに関連されている請求項８記載のアーキテクチャ。
【請求項１０】
逐次プロセッサは複数の実行装置を含み、アーキテクチャはさらに複数の命令流を受信し、その受信された命令の命令タイプにしたがってその受信された命令を実行装置へ分配するように動作可能である命令制御装置を具備し、実行装置は並列にそれぞれの命令を処理するように動作可能である請求項８または９記載のアーキテクチャ。
【請求項１１】
各処理素子はそれぞれ特定の命令タイプの命令を処理するように動作可能な複数の実行装置を含み、アーキテクチャはさらに複数の命令を受信し、受信された命令の命令タイプにしたがって、受信された命令を処理素子の実行装置へ分配するように動作可能な命令制御装置を具備し、各処理素子の実行装置は並列にそれぞれの命令を処理するように動作可能である請求項８、９または１０のいずれか１項記載のアーキテクチャ。
【請求項１２】
単一命令多重データＳＩＭＤアレイ中に配置され、それぞれ複数の実行装置を含んでいる複数の処理素子を具備し、実行装置の１つは関連される処理素子の少なくとも１つの他の実行装置により処理するためのデータを記憶するように動作可能なレジスタユニットであり、
そのレジスタユニットはレジスタの複数のセットを含み、それらのセットはそれぞれの処理スレッドに関連されるマイクロプロセッサアーキテクチャ。
【請求項１３】
各処理素子はそれぞれ特定の命令タイプの命令を処理するように動作可能な複数の実行装置を含み、アーキテクチャはさらに複数の命令を受信し、受信された命令の命令タイプにしたがって、受信された命令を処理素子の実行装置へ分配するように動作可能な命令制御装置を具備し、各処理素子の実行装置は並列にそれぞれの命令を処理するように動作可能である請求項１２記載のアーキテクチャ。
【請求項１４】
命令タイプはデータ処理およびデータ移動命令を含んでいる請求項１０、１１または１３のいずれか１項記載のアーキテクチャ。
【請求項１５】
命令制御装置は、それぞれの処理スレッドに関連する複数の命令流を受信し、その並列処理のために少なくとも２つの異なる命令流から処理素子の実行素子へ命令を分配するように動作可能である請求項１１、１３または１４のいずれか１項記載のアーキテクチャ。
【請求項１６】
命令制御装置はそれぞれの処理スレッドに関する複数の命令流を受信し、実行装置へ分配される連続的な命令が異なる命令流からのものであるように処理素子へ命令を分配するように動作可能である請求項１１、１３、１４または１５のいずれか１項記載のアーキテクチャ。
【請求項１７】
前記レジスタユニットは関連されるレジスタユニットのレジスタ中に記憶されているデータをアクセスするためのアドレス装置を含んでおり、そのアドレス装置はレジスタアドレスとスレッドインジケータを受信し、受信されたレジスタアドレスとスレッドインジケータ情報にしたがってレジスタユニットのレジスタにアクセスするように動作可能である請求項８乃至１６のいずれか１項記載のアーキテクチャ。
【請求項１８】
単一命令多重データＳＩＭＤアレイ中に配置され、特定の命令タイプの命令を処理するようにそれぞれ動作可能な複数の実行装置をそれぞれ含んでいる複数の処理素子を含むプロセッサの実行装置中で命令を実行する方法において、
それぞれの処理スレッドに関連され、それぞれが前記特定の命令タイプのうちの１つである複数の命令アイテムを含んでいる複数の命令流を受信し、
前記命令流から命令アイテムを検索し、
検索された命令アイテムの命令タイプにしたがって、検索された命令を任意の命令流から複数の実行装置へ分配するステップを含み、
各処理素子の実行装置は相互に並列にそれぞれの命令を処理する命令の実行方法。
【請求項１９】
命令タイプはデータ処理およびデータ移動命令を含んでいる請求項１８記載の方法。
【請求項２０】
命令は、その並列処理のために少なくとも２つの異なる処理スレッドから実行素子へ分配される請求項１８記載の方法。
【請求項２１】
さらに別の命令アイテムの命令アイテムまたは関連される命令流のアイテムの依存性に基づいて、命令流から実行装置へ分配される連続的な命令アイテムの順序の優先順位を定めるステップを含んでいる請求項１８記載の方法。
【請求項２２】
命令は単一の処理スレッドからの命令を含んでおり、前記命令はその並列処理のために実行装置へ分配される請求項１８記載の方法。
【請求項２３】
ＳＩＭＤアレイの各処理素子の１つの実行装置は関連される処理素子の少なくとも１つの他の実行装置により処理するためのデータを記憶するように動作可能なレジスタユニットであり、
レジスタユニットはレジスタの複数のセットを含み、それらのセットはそれぞれの処理スレッドに関連されている請求項１８乃至２２のいずれか１項記載の方法。
【請求項２４】
プロセッサはさらにそれぞれ特定の命令タイプの命令を処理するように動作可能な複数の第２の実行装置を含む逐次プロセッサを具備し、第２の実行装置はそれぞれの命令を並列に処理するように動作可能である請求項１８乃至２３のいずれか１項記載の方法。
【請求項２５】
逐次プロセッサの１つの実行装置は、逐次プロセッサの少なくとも１つの他の実行装置により処理するためのデータを記憶するように動作可能なレジスタユニットであり、
そのレジスタユニットはレジスタの複数のセットを含み、それらのセットはそれぞれの処理スレッドに関連されている請求項２４記載の方法。
【請求項２６】
実行装置の単一命令多重データＳＩＭＤアレイ中に配置されている複数の処理素子と、複数の実行装置を含んでいる逐次プロセッサとを具備するマイクロプロセッサアーキテクチャ中のレジスタをアクセスする方法において、
前記逐次プロセッサの実行装置の１つは逐次プロセッサの少なくとも１つの他の実行装置により処理するためのデータを記憶するように動作可能なレジスタユニットであり、そのレジスタユニットはレジスタの複数のセットを含んでおり、それらのセットはそれぞれの処理スレッドに関連されており、前記方法は、
スレッド識別子及びレジスタ識別子を含んでいるアクセスリクエストを受信し、
受信されたスレッド識別子及びレジスタ識別子にしたがって、レジスタの１つをアクセスするステップを含んでいる方法。
【請求項２７】
各処理素子は特定の命令タイプの命令を処理するようにそれぞれ動作可能な複数の実行装置を含み、各処理素子の１つの実行装置は関連される処理素子の少なくとも１つの他の実行装置により処理されるためのデータを記憶するように動作可能であるレジスタユニットであり、各レジスタユニットはレジスタの複数のセットを含んでおり、それらのセットはそれぞれの処理スレッドに関連され、レジスタの１つのアクセスは処理素子の実行装置のレジスタのアクセスを含んでいる請求項２６記載の方法。
【請求項２８】
逐次プロセッサは複数の実行装置を含み、方法はさらに、
命令流を受信し、
実行装置が相互に並列にそれぞれの命令を処理するように、命令タイプにしたがって、受信された命令を実行装置へ分配するステップを含んでいる請求項２６または２７記載の方法。
【請求項２９】
各処理素子は特定の命令タイプの命令を処理するようにそれぞれ動作可能な複数の実行装置を含んでいる請求項２６、２７または２８のいずれか１項記載の方法。
【請求項３０】
単一命令多重データＳＩＭＤアレイ中に配置されている複数の処理素子を具備しているマイクロプロセッサアーキテクチャ中のレジスタをアクセスする方法において、
各処理素子は複数の実行装置を含んでおり、それらの実行装置の１つは関連される処理素子の少なくとも１つの他の実行装置により処理されるためのデータを記憶するように動作可能であるレジスタユニットであり、そのレジスタユニットはレジスタの複数のセットを含み、それらのセットはそれぞれの処理スレッドに関連され、方法は、
スレッド識別子及びレジスタ識別子を含んでいるアクセスリクエストを受信し、
受信されたスレッド識別子及びレジスタ識別子にしたがって、レジスタの１つをアクセスするステップを含んでいる方法。
【請求項３１】
各処理素子は、それぞれ特定の命令タイプの命令を処理するように動作可能である複数の実行装置を含んでおり、方法はさらに、
各処理素子の実行装置が並列でそれぞれの命令を処理するように、受信された命令の命令タイプにしたがって、受信された命令を処理素子の実行装置へ分配するステップを含んでいる請求項３０記載の方法。
【請求項３２】
命令タイプはデータ処理およびデータ移動命令を含んでいる請求項２６乃至３１のいずれか１項記載の方法。
【国際調査報告】
2008532131.tif 000008
2008532131.tif 000009
2008532131.tif 000010