(57)【要約】【課題】  電力消耗を減少させつつ性能も向上させうる同時多重スレッディングプロセッサ回路、コンピュータプログラム製品及びこれらを動作させる方法を提供する。【解決手段】  同時多重スレッディングプロセッサでのスレッドの動作と関連するプロセッシング回路が同時多重スレッディングプロセッサによって現在動作しているスレッドの数に基づいて異なる性能レベルで動作するように構成される。例えば、フローティングポイントユニットまたはデータキャッシュのようなプロセッシング回路が同時多重スレッディングプロセッサによって現在動作しているスレッドの数に基づいて高電力モードまたは低電力モードの一つで動作する。また、同時多重スレッディングプロセッサによって動作するスレッドの数が増加すれば、前記プロセッシング回路の性能レベルが低められる。【選択図】      図２
2004252987.tif 000002
【特許請求の範囲】
【請求項１】
同時多重スレッディング（ＳＭＴ）プロセッサにおいて、
前記ＳＭＴプロセッサでのスレッドの動作と関連して前記ＳＭＴプロセッサによって現在動作しているスレッドの数に基づいて異なる性能レベルで動作するように構成される少なくとも一つのプロセッシング回路を備えることを特徴とする同時多重スレッディングプロセッサ。
【請求項２】
前記少なくとも一つのプロセッシング回路は、前記ＳＭＴプロセッサによって現在動作しているスレッドの数がしきい値より小さいか、または同じである時には第１性能レベルで動作するように構成され、前記ＳＭＴプロセッサによって現在動作しているスレッドの数が前記しきい値より大きい時には第２性能レベルで動作するように構成されることを特徴とする請求項１に記載の同時多重スレッディングプロセッサ。
【請求項３】
前記ＳＭＴプロセッサによって現在動作しているスレッドの数に基づいて前記少なくとも一つのプロセッシング回路に対する性能レベルを提供するように構成される性能レベル制御回路をさらに備えることを特徴とする請求項１に記載の同時多重スレッディングプロセッサ。
【請求項４】
前記性能レベル制御回路は、前記ＳＭＴプロセッサによって現在動作しているスレッドの数がしきい値より小さいか、または同じである時には前記少なくとも一つのプロセッシング回路に提供される性能レベルを第１性能レベルに増加させ、前記ＳＭＴプロセッサによって現在動作しているスレッドの数が前記しきい値を超える時には前記少なくとも一つのプロセッシング回路に提供される性能レベルを前記第１性能レベルより低い第２性能レベルに減少させることを特徴とする請求項３に記載の同時多重スレッディングプロセッサ。
【請求項５】
前記しきい値は第１しきい値を含み、
前記性能レベル制御回路は、前記ＳＭＴプロセッサによって現在動作しているスレッドの数が前記第１しきい値より大きい第２しきい値を超える時には前記少なくとも一つのプロセッシング回路に提供される性能レベルを前記第２性能レベルより低い第３性能レベルにさらに低めることを特徴とする請求項４に記載の同時多重スレッディングプロセッサ。
【請求項６】
前記少なくとも一つのプロセッシング回路は、タグメモリとデータメモリとを含むキャッシュメモリ回路を備え、
前記データメモリは、前記キャッシュメモリ回路が第１性能レベルで動作する時に保存されたデータを前記タグメモリに対するアクセスと同時に提供するように構成され、さらに前記キャッシュメモリ回路が前記第１性能レベルより低い第２性能レベルで動作する時には前記タグメモリでのヒットに応答して保存されたデータを提供するように構成されることを特徴とする請求項１に記載の同時多重スレッディングプロセッサ。
【請求項７】
前記キャッシュメモリは、
命令によって動作するデータを保存するように構成される少なくとも一つのデータキャッシュメモリと、
関連したデータに動作する命令を保存するように構成される命令キャッシュメモリと、を備えることを特徴とする請求項６に記載の同時多重スレッディングプロセッサ。
【請求項８】
前記データメモリは、前記第２性能レベルで動作する時に前記タグメモリでのミスに応答して保存されたデータを提供しないように構成されることを特徴とする請求項６に記載の同時多重スレッディングプロセッサ。
【請求項９】
前記少なくとも一つのプロセッシング回路は、フローティングポイントユニットを備えることを特徴とする請求項１に記載の同時多重スレッディングプロセッサ。
【請求項１０】
前記フローティングポイントユニットは、前記ＳＭＴプロセッサによって動作するスレッドの数がしきい値より小さいか、または同じである時に第１性能レベルで動作するように構成される第１フローティングポイントユニットを備え、
前記ＳＭＴプロセッサは、前記ＳＭＴプロセッサによって動作するスレッドの数が前記しきい値より大きい時に前記第１性能レベルより低い第２性能レベルで動作するように構成される第２フローティングポイントユニットをさらに備えることを特徴とする請求項９に記載の同時多重スレッディングプロセッサ。
【請求項１１】
前記少なくとも一つのプロセッシング回路は、整数レジスタを備えることを特徴とする請求項１に記載の同時多重スレッディングプロセッサ。
【請求項１２】
前記性能レベル制御回路は、前記ＳＭＴプロセッサで各々生成されて完了するスレッドに応答して前記ＳＭＴプロセッサによって現在動作しているスレッドの数を増加または減少させるように構成されることを特徴とする請求項２に記載の同時多重スレッディングプロセッサ。
【請求項１３】
前記少なくとも一つのプロセッシング回路は、しきい値以下に減少する前記ＳＭＴプロセッサで現在動作しているスレッドの数に応答して第１性能レベルで動作するように構成される第１プロセッシング回路を備え、
前記ＳＭＴプロセッサは、前記しきい値よりさらに大きく増加する前記ＳＭＴプロセッサで現在動作しているスレッドの数に応答して前記第１性能レベルより低い第２性能レベルで動作するように構成される第２プロセッシング回路をさらに備えることを特徴とする請求項１に記載の同時多重スレッディングプロセッサ。
【請求項１４】
前記性能レベル制御回路は、前記ＳＭＴプロセッサによって現在動作しているスレッドの数をしきい値より小さいか、または同じ値から前記しきい値よりさらに大きい値まで増加させるための新しいスレッドの生成に応答して前記少なくとも一つのプロセッシング回路に提供される性能レベルを低めるように構成されることを特徴とする請求項１に記載の同時多重スレッディングプロセッサ。
【請求項１５】
前記性能レベル制御回路は、前記ＳＭＴプロセッサによって現在動作しているスレッドの数が複数の上昇するしきい値の各々を超える時に前記少なくとも一つのプロセッシング回路の性能レベルを複数の下降する性能レベルの一つに低めるように構成されることを特徴とする請求項２に記載の同時多重スレッディングプロセッサ。
【請求項１６】
前記性能レベル制御回路は、第１プロセッシング回路に対しては第１性能レベルを維持するが、しきい値より小さいか、または同じ値から前記しきい値よりさらに大きい値まで増加する前記ＳＭＴプロセッサによって現在動作しているスレッドの数に応答して第２プロセッシング回路に前記第１性能レベルより低い第２性能レベルを提供するように構成されることを特徴とする請求項２に記載の同時多重スレッディングプロセッサ。
【請求項１７】
同時多重スレッディング（ＳＭＴ）プロセッサにおいて、
前記ＳＭＴプロセッサによって現在動作しているスレッドの数に基づいて前記ＳＭＴプロセッサ内のプロセッシング回路に性能レベルを提供するように構成される性能レベル制御回路を備えることを特徴とする同時多重スレッディングプロセッサ。
【請求項１８】
前記性能レベル制御回路は、新しい数の動作するスレッドを提供するために新しいスレッドの生成に応答して前記ＳＭＴプロセッサによって現在動作しているスレッドの数を増加させるように構成され、また前記ＳＭＴプロセッサによって動作するスレッドの前記新しい数に基づいて性能レベルを前記プロセッシング回路に提供するように構成されることを特徴とする請求項１７に記載の同時多重スレッディングプロセッサ。
【請求項１９】
前記性能レベル制御回路は、前記ＳＭＴプロセッサによって現在動作しているスレッドの数がしきい値より小さいか、または同じである時に前記プロセッシング回路に提供される前記性能レベルを第１性能レベルに高めるように構成され、前記ＳＭＴプロセッサによって現在動作しているスレッドの数が前記しきい値を超える時には前記プロセッシング回路に提供される前記性能レベルを前記第１性能レベルより低い第２性能レベルに低めるように構成されることを特徴とする請求項１７に記載の同時多重スレッディングプロセッサ。
【請求項２０】
前記性能レベル制御回路は、第１プロセッシング回路に対しては前記第１性能レベルを維持するが、しきい値より小さいか、または同じ値から前記しきい値よりさらに大きい値まで増加する前記ＳＭＴプロセッサによって現在動作しているスレッドの数に応答して第２プロセッシング回路に前記第１性能レベルより低い第２性能レベルを提供するように構成されることを特徴とする請求項１９に記載の同時多重スレッディングプロセッサ。
【請求項２１】
前記プロセッシング回路は、フローティングポイントユニット及びデータキャッシュメモリのうち少なくとも一つを備えることを特徴とする請求項１７に記載の同時多重スレッディングプロセッサ。
【請求項２２】
前記プロセッシング回路は、前記ＳＭＴプロセッサによって現在動作しているスレッドの数がしきい値より小さいか、または同じである時に第１性能レベルで動作するように構成され、前記ＳＭＴプロセッサによって現在動作しているスレッドの数が前記しきい値より大きい時には第２性能レベルで動作するように構成されることを特徴とする請求項１７に記載の同時多重スレッディングプロセッサ。
【請求項２３】
同時多重スレッディング（ＳＭＴ）プロセッサにおいて、
スレッドが生成される時に前記ＳＭＴプロセッサで動作するスレッドに前記ＳＭＴプロセッサと関連したプロセッシング回路を割当てるスレッド管理回路と、
少なくとも一つのしきい値と比較されて前記ＳＭＴプロセッサによって現在動作しているスレッドの数に基づいて複数の性能レベルの一つを前記プロセッシング回路に提供する性能レベル制御回路と、を備えることを特徴とする同時多重スレッディングプロセッサ。
【請求項２４】
前記少なくとも一つのしきい値は、前記ＳＭＴプロセッサによって動作するスレッドの数であることを特徴とする請求項２３に記載の同時多重スレッディングプロセッサ。
【請求項２５】
前記性能レベル制御回路は、前記ＳＭＴプロセッサによって現在動作しているスレッドの数が前記少なくとも一つのしきい値より小さいか、または同じである時に前記プロセッシング回路に提供される性能レベルを第１性能レベルに高め、前記ＳＭＴプロセッサによって現在動作しているスレッドの数が前記少なくとも一つのしきい値を超える時には前記プロセッシング回路に提供される前記性能レベルを前記第１性能レベルより低い第２性能レベルに低めることを特徴とする請求項２３に記載の同時多重スレッディングプロセッサ。
【請求項２６】
前記性能レベル制御回路は、前記少なくとも一つのしきい値より小さいか、または同じ値から前記少なくとも一つのしきい値よりさらに大きい値まで前記ＳＭＴプロセッサによって現在動作しているスレッドの数を増加させるために新しいスレッドの生成に応答して前記プロセッシング回路に提供される性能レベルを低めるように構成されることを特徴とする請求項２３に記載の同時多重スレッディングプロセッサ。
【請求項２７】
前記性能レベル制御回路は、前記ＳＭＴプロセッサによって現在動作しているスレッドの数が複数の上昇するしきい値の各々を超える時に前記プロセッシング回路に提供される前記性能レベルを複数の下降する性能レベルの一つに低めるように構成されることを特徴とする請求項２２に記載の同時多重スレッディングプロセッサ。
【請求項２８】
前記性能レベル制御回路は、第１プロセッシング回路に対しては第１性能レベルを維持するが、前記少なくとも一つのしきい値より小さいか、または同じ値から前記少なくとも一つのしきい値よりさらに大きい値まで前記ＳＭＴプロセッサによって現在動作しているスレッドの数に応答して第２プロセッシング回路に前記第１性能レベルより低い第２性能レベルを提供するように構成されることを特徴とする請求項２３に記載の同時多重スレッディングプロセッサ。
【請求項２９】
ＳＭＴプロセッサと関連するキャッシュメモリにおいて、
タグメモリと、
前記ＳＭＴプロセッサによって現在動作しているスレッドの数に基づいて前記タグメモリと同時にアクセスされるか、または順次にアクセスされるデータメモリと、を備えることを特徴とするキャッシュメモリ。
【請求項３０】
前記タグメモリと前記データメモリとは、しきい値より小さいか、または同じである前記ＳＭＴプロセッサによって現在動作しているスレッドの数に応答して同時にアクセスされることを特徴とする請求項２９に記載のキャッシュメモリ。
【請求項３１】
前記データメモリは、しきい値より大きい前記ＳＭＴプロセッサによって現在動作しているスレッドの数に応答して前記タグメモリでのヒットに応答してアクセスされることを特徴とする請求項２９に記載のキャッシュメモリ。
【請求項３２】
ＳＭＴプロセッサを動作させる方法において、
前記ＳＭＴプロセッサによって現在動作しているスレッドの数に基づいて少なくとも一つのプロセッシング回路に性能レベルを提供する段階を備えることを特徴とする方法。
【請求項３３】
前記提供する段階は、
前記少なくとも一つのプロセッシング回路に前記性能レベルを提供するために、前記ＳＭＴプロセッサによって現在動作しているスレッドの数としきい値とを比較する段階が先行することを特徴とする請求項３２に記載の方法。
【請求項３４】
前記比較する段階は、
前記ＳＭＴプロセッサで始まる新しいスレッドに応答して前記ＳＭＴプロセッサによって現在動作しているスレッドの数を増加させる段階と、
前記ＳＭＴプロセッサで終結されるスレッドに応答してＳＭＴプロセッサによって現在動作しているスレッドの数を減少させる段階とが先行することを特徴とする請求項３２に記載の方法。
【請求項３５】
前記提供する段階は、
前記ＳＭＴプロセッサによって現在動作しているスレッドの数が前記しきい値より小さいか、または同じであれば、第１性能レベルを前記少なくとも一つのプロセッシング回路に提供する段階と、
前記ＳＭＴプロセッサによって現在動作しているスレッドの数が前記しきい値を超えれば、前記第１性能レベルより低い第２性能レベルを前記少なくとも一つのプロセッシング回路に提供する段階と、を備えることを特徴とする請求項３４に記載の方法。
【請求項３６】
増加する追加的なしきい値を超えるように前記ＳＭＴプロセッサによって現在動作しているスレッドの数を増加させる新しいスレッドと関連したプロセッシング回路に対する性能レベルをさらに低める段階をさらに備えることを特徴とする請求項３５に記載の方法。
【請求項３７】
ＳＭＴプロセッサを動作させるコンピュータプログラム製品において、
内部に具現されたコンピュータ読出し可能なプログラムコードを有するコンピュータ読出し可能媒体を備え、
前記コンピュータプログラム製品は、前記ＳＭＴプロセッサによって現在動作しているスレッドの数に基づいて前記ＳＭＴプロセッサ内の少なくとも一つのプロセッシング回路に性能レベルを提供するように構成されるコンピュータ読出し可能プログラムコードを備えることを特徴とするコンピュータプログラム製品。
【請求項３８】
前記少なくとも一つのプロセッシング回路に前記性能レベルを提供するために前記ＳＭＴプロセッサによって現在動作しているスレッドの数としきい値とを比較するように構成されるコンピュータ読出し可能プログラムコードをさらに備えることを特徴とする請求項３７に記載のコンピュータプログラム製品。
【請求項３９】
前記ＳＭＴプロセッサで始まる新しいスレッドに応答して前記ＳＭＴプロセッサによって現在動作しているスレッドの数を増加させるコンピュータ読出し可能プログラムコードと、
前記ＳＭＴプロセッサで終結されるスレッドに応答して前記ＳＭＴプロセッサによって現在動作しているスレッドの数を減少させるコンピュータ読出し可能プログラムコードと、をさらに備えることを特徴とする請求項３７に記載のコンピュータプログラム製品。
【請求項４０】
前記コンピュータ読出し可能プログラムコードは、
前記ＳＭＴプロセッサによって現在動作しているスレッドの数が前記しきい値より小さいか、または同じであれば、第１性能レベルを前記少なくとも一つのプロセッシング回路に提供するように構成されるコンピュータ読出し可能プログラムコードと、
前記ＳＭＴプロセッサによって現在動作しているスレッドの数が前記しきい値を超えれば、前記第１性能レベルより低い第２性能レベルを前記少なくとも一つのプロセッシング回路に提供するように構成されるコンピュータ読出し可能プログラムコードと、を備えることを特徴とする請求項３７に記載のコンピュータプログラム製品。
【請求項４１】
増加する追加的なしきい値を超えるように前記ＳＭＴプロセッサによって現在動作しているスレッドの数を増加させる新しいスレッドと関連したプロセッシング回路に対する性能レベルをさらに低めるように構成されるコンピュータ読出し可能プログラムコードをさらに備えることを特徴とする請求項３８に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータプロセッサ構造に係り、特に同時多重スレッディングコンピュータプロセッサ、関連したコンピュータプログラム製品、及びこれらを動作させる方法に関する。
【背景技術】
【０００２】
同時多重スレッディング（Ｓｉｍｕｌｔａｎｅｏｕｓ Ｍｕｌｔｉ−Ｔｈｒｅａｄｉｎｇ：ＳＭＴ）は、各サイクル間に多数の独立的なスレッドに命令を送出するのを許すハードウェア多重スレッディングを利用するプロセッサ構造である。ある与えられたサイクルでただ一つのハードウェア状況（すなわち、一つのスレッド）だけが活性化される他のハードウェア多重スレッド構造と異なり、ＳＭＴ構造は全てのスレッド状況にプロセッサ資源を同時に共有することを許す。
【０００３】
ＳＭＴプロセッサは、ＳＭＴプロセッサ内で長いレイテンシ動作の効果も減少させうる命令を行うために浪費されたサイクルを活用できる。またスレッドの数の増加によって性能が向上するが、ＳＭＴプロセッサによって消耗される電力が増加する。
【０００４】
従来のＳＭＴプロセッサのブロック図が図１に開示されている。図１の従来のＳＭＴプロセッサの動作は、非特許文献１に詳細に開示されている。従来のＳＭＴプロセッサの構造及び動作は公知なので、ここでの詳細な説明は省略する。
【非特許文献１】Ｄｅａｎ Ｍ．Ｔｕｌｌｓｅｎ，Ｓｕｓａｎ Ｊ．Ｅｇｇｅｒ，Ｈｅｎｒｙ Ｍ．Ｌｅｖｙ，Ｊａｃｋ Ｌ．Ｌｏ，Ｒｅｂｅｃｃａ Ｌ．Ｓｔａｍｍ，“Ｅｘｐｌｏｉｔｉｎｇ Ｃｈｏｉｃｅ：Ｉｎｓｔｒｕｃｔｉｏｎ Ｆｅｔｃｈ ａｎｄ ｉｓｓｕｅ ｏｎ ａｎ Ｉｍｐｌｅｍｅｎｔａｂｌｅ Ｓｉｍｕｌｔａｎｅｏｕｓ Ｍｕｌｔｉｔｈｒｅａｄｉｎｇ Ｐｒｏｃｅｓｓｏｒ”，２３ｒｄ Ａｎｎｕａｌ Ｉｎｔｅｒｎａｔｉｏｎａｌ Ｓｙｍｐｏｓｉｕｍ ｏｎ Ｃｏｍｐｕｔｅｒ Ａｒｃｈｉｔｅｃｔｕｒｅ，ｐｐ.１９１−２０２,１９９６
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明が解決しようとする技術的課題は、電力消耗を減少させつつ性能も向上させうるＳＭＴプロセッサを提供することにある。
【０００６】
本発明が解決しようとする他の技術的課題は、前記ＳＭＴプロセッサを動作させる方法を提供することにある。
【０００７】
本発明が解決しようとするさらに他の技術的課題は、前記ＳＭＴプロセッサを動作させるコンピュータプログラム製品を提供することにある。
【課題を解決するための手段】
【０００８】
本発明では、ＳＭＴプロセッサによって動作するスレッドの数に基づいて異なる性能レベルで動作するプロセッシング回路、コンピュータプログラム製品、及び方法を提供する。
【０００９】
本発明による一具体例では、ＳＭＴプロセッサでのスレッド動作と関連するプロセッシング回路、すなわちフローティングポイントユニットまたはデータキャッシュのようなプロセッシング回路がＳＭＴプロセッサによって現在動作しているスレッドの数に基づいて高電力モード及び低電力モードのうち一つで動作できる。また、前記ＳＭＴプロセッサによって動作するスレッドの数が増加すれば、前記プロセッシング回路の性能レベルが低められる。それにより、前記ＳＭＴプロセッサの構造的利点が提供されてスレッドと関連するプロセッシング回路によって消耗される電力量が減少する。また、前記ＳＭＴプロセッサは、同じ電力で、しかしより高い性能で動作でき、または従来のＳＭＴプロセッサよりさらに多くの電力を消耗するが、さらに高い性能レベルで動作できる。
【００１０】
本発明による一具体例では、前記プロセッシング回路は、前記ＳＭＴプロセッサによって現在動作しているスレッドの数がしきい値より小さいか、または同じである時に第１性能レベルで動作するように構成され、前記ＳＭＴプロセッサによって現在動作しているスレッドの数が前記しきい値より大きい時には第２性能レベルで動作するように構成されうる。
【００１１】
本発明による一具体例では、性能レベル制御回路が前記ＳＭＴプロセッサによって現在動作しているスレッドの数に基づいて前記プロセッシング回路に対する性能レベルを提供するように構成される。本発明による一具体例では、前記性能レベル制御回路は、前記ＳＭＴプロセッサによって現在動作しているスレッドの数がしきい値より小さいか、または同じである時に前記プロセッシング回路に提供される前記性能レベルを第１性能レベルに高めうる。前記性能レベル制御回路は、前記ＳＭＴプロセッサによって現在動作しているスレッドの数が前記しきい値を超える時には前記プロセッシング回路に提供される前記性能レベルを前記第１性能レベルより低い第２性能レベルに低めうる。
【００１２】
本発明による一具体例では、前記性能レベル制御回路は、前記ＳＭＴプロセッサによって現在動作しているスレッドの数が前記第１しきい値より大きい第２しきい値を超える時には前記プロセッシング回路に提供される前記性能レベルを前記第２性能レベルより低い第３性能レベルにさらに低める。
【００１３】
性能レベル可変に対する多様な具体例が本発明によって提供される。例えば、本発明による一具体例では、前記プロセッシング回路は、タグメモリ及びデータメモリを含むキャッシュメモリでありうる。ここで、前記データメモリは、前記キャッシュメモリ回路が第１性能レベルで動作する時に前記タグメモリに対するアクセスと同時に保存されたデータを提供するように構成される。
【００１４】
前記データメモリは、前記キャッシュメモリ回路が前記第１性能レベルより低い第２性能レベルで動作する時に前記タグメモリでのヒットに応答して保存されたデータを提供するように構成される。
【００１５】
本発明による一具体例では、前記キャッシュメモリは、データを保存するように構成されるデータキャッシュメモリ及び命令を保存するように構成される命令キャッシュメモリのうち少なくとも一つである。本発明による一具体例では、前記データメモリは、前記キャッシュメモリ回路が前記第２性能レベルで動作する時には前記タグメモリでのミスに応答して保存されたデータを提供しないように構成される。
【００１６】
本発明による一具体例では、前記プロセッシング回路は、フローティングポイントユニットでありうる。本発明による一具体例では、前記フローティングポイントユニットは、前記ＳＭＴプロセッサによって動作するスレッドの数がしきい値より小さいか、または同じである時に第１性能レベルで動作するように構成される第１フローティングポイントユニットでありうる。そして、前記ＳＭＴプロセッサは、前記ＳＭＴプロセッサによって動作するスレッドの数が前記しきい値より大きい時には前記第１性能レベルより低い第２性能レベルで動作するように構成される第２フローティングポイントユニットをさらに備えうる。
【００１７】
本発明による一具体例では、前記性能レベル制御回路は、前記ＳＭＴプロセッサで各々生成されて完了するスレッドに応答して前記ＳＭＴプロセッサによって現在動作しているスレッドの数を増加または減少させるように構成される。
【００１８】
本発明による一具体例では、第２プロセッシング回路は、前記しきい値よりさらに大きく増加した前記ＳＭＴプロセッサで現在動作しているスレッドの数に応答して前記第１性能レベルより低い第２性能レベルで動作するように構成される。
【００１９】
本発明による一具体例では、前記性能レベル制御回路は、しきい値より小さいか、または同じ値から前記しきい値よりさらに大きい値まで前記ＳＭＴプロセッサによって現在動作しているスレッドの数を増加させるために新しいスレッドの生成に応答して前記少なくとも一つのプロセッシング回路に提供される性能レベルを低めるように構成される。
【００２０】
本発明による一具体例では、前記性能レベル制御回路は、前記ＳＭＴプロセッサによって現在動作しているスレッドの数が複数の上昇するしきい値の各々を超える時、前記プロセッシング回路の性能レベルを複数の下降する性能レベルの一つに低めるように構成される。
【００２１】
本発明による一具体例では、前記性能レベル制御回路は、第１プロセッシング回路に対しては第１性能レベルを維持するが、しきい値より小さいか、または同じ値から前記しきい値よりさらに大きい値まで増加する前記ＳＭＴプロセッサによって現在動作しているスレッドの数に応答して第２プロセッシング回路に前記第１性能レベルより低い第２性能レベルを提供するように構成される。
【００２２】
本発明による他の具体例では、性能レベル制御回路は、前記ＳＭＴプロセッサによって現在動作しているスレッドの数に基づいて前記ＳＭＴプロセッサ内のプロセッシング回路に性能レベルを提供するように構成される。
【００２３】
本発明によるさらに他の具体例では、スレッド管理回路は、スレッドが生成される時に前記ＳＭＴプロセッサで動作するスレッドに前記ＳＭＴプロセッサと関連したプロセッシング回路を割当てるように構成される。性能レベル制御回路は、少なくとも一つのしきい値と比較して前記ＳＭＴプロセッサによって現在動作しているスレッドの数に基づいて複数の性能レベルの一つを前記プロセッシング回路に提供するように構成される。
【００２４】
本発明によるさらに他の具体例では、ＳＭＴプロセッサと関連するキャッシュメモリは、タグメモリと、前記ＳＭＴプロセッサによって現在動作しているスレッドの数に基づいて前記タグメモリと同時にアクセスされるか、または順次にアクセスされるデータメモリとを備える。
【発明の効果】
【００２５】
本発明によれば、ＳＭＴプロセッサでのスレッドの動作と関連したプロセッシング回路を提供しうる。このプロセッシング回路は、ＳＭＴプロセッサによって現在動作しているスレッドの数に基づいて異なる性能レベルで動作するように構成される。例えば、本発明の一具体例では、フローティングポイント回路またはデータキャッシュのようなＳＭＴプロセッサでのスレッドの動作と関連したプロセッシング回路は、ＳＭＴプロセッサによって現在動作しているスレッドの数に基づいて高電力モードまたは低電力モードのうち一つで動作できる。
【００２６】
また、ＳＭＴプロセッサによって動作するスレッドの数が増加すれば、プロセッシング回路の性能レベルが低められ、これによりＳＭＴプロセッサの構造的利点が提供されてスレッドと関連したプロセッシング回路によって消耗される電力量が減少する。例えば、本発明による一具体例ではプロセッシング回路が異なる性能レベルを提供するために異なるクロック速度で動作でき、および／または異なる回路形態を使用しうる。例えば、本発明による一具体例ではフローティングポイント回路またはデータキャッシュのようなＳＭＴプロセッサでのスレッドの動作と関連したプロセッシング回路は、ＳＭＴプロセッサによって現在動作しているスレッドの数に基づいて高クロック速度での高電力モードまたは低クロック速度での低電力モードのうち一つで動作できる。
【発明を実施するための最良の形態】
【００２７】
以下、添付した図面を参照して本発明の望ましい実施形態を詳細に説明する。各図に提示された同じ参照符号は同一部分を表す。
【００２８】
本発明は、回路、コンピュータプログラム製品、及び方法として実施されうる。したがって、本発明はハードウェア実施形態、ソフトウェア実施形態、またはソフトウェアとハードウェアとを結合した実施形態を有する。また、本発明はコンピュータプログラムコードを有するコンピュータ保存媒体上のコンピュータプログラム製品の形態を有することもある。コンピュータ保存媒体としてはハードディスク、ＣＤ−ＲＯＭ、光記憶装置、及び磁気記憶装置が利用される。
【００２９】
本発明による動作を行うためのコンピュータプログラムコードまたは“コード”は、ＪＡＶＡ（登録商標）、ＳｍａｌｌｔａｌｋまたはＣ＋＋、Ｊａｖａ（登録商標）Ｓｃｒｉｐｔ、Ｖｉｓｕａｌ Ｂａｓｉｃ、ＴＱＳＬ、Ｐｅｒｌのような対象指向型プログラム言語または多様な他のプログラム言語で作成される。本発明のソフトウェア実施形態は、特定なプログラム言語を有して具現される必要はない。コードの一部は、仲介サーバによって利用される一つ以上のシステム上で完全に行われる。
【００３０】
コードは、一つ以上のコンピュータシステム上で完全に行われ、またはサーバ上で一部、そしてクライアント装置上で一部が行われることもあり、または通信ネックワークで中間点にある代理サーバ上で行われることもある。クライアント装置は、ＬＡＮまたはＷＡＮ（例えば、インターネット）上のサーバに連結されることもあり、または連結がインターネットを通じても（例えば、インターネットサービス提供者を経由して）なりうる。本発明は、色々な形態のコンピュータネットワーク上で色々なプロトコルを使用して実施されうる。
【００３１】
本発明は、本発明の実施形態による方法、システム、及びコンピュータプログラム製品を表すブロック図及びフローチャートを参照して後述される。ブロック図とフローチャートの各ブロックは、コンピュータプログラム命令によって行われることは明白である。これらコンピュータプログラム命令は、この命令がブロック図及び／またはフローチャートに記述された機能を行うための手段を生成するように、ＳＭＴプロセッサ回路、特定目的コンピュータ、または他のプログラム可能なデータ処理装置に提供される。
【００３２】
これらコンピュータプログラム命令は、コンピュータ読出し可能メモリに保存される。このコンピュータ読出し可能メモリは、このコンピュータ読出し可能メモリに保存された命令がブロック図及び／またはフローチャートに記述された機能を行う命令手段を含む製造品を生成するように、コンピュータまたは他のプログラム可能なデータ処理装置を指示する。
【００３３】
コンピュータプログラム命令は、一連の動作段階がコンピュータ及び／または他のプログラム可能な装置上で行われるように、ＳＭＴプロセッサ回路または他のプログラム可能なデータ処理装置にロードされる。ＳＭＴプロセッサ回路または他のプログラム可能なデータ処理装置にロードされたこの命令は、ブロック図及び／またはフローチャートに記述された機能を行う段階を提供する。
【００３４】
本発明による実施形態は、ＳＭＴプロセッサでのスレッドの動作と関連したプロセッシング回路を提供する。このプロセッシング回路は、前記ＳＭＴプロセッサによって現在動作しているスレッドの数に基づいて異なる性能レベルで動作するように構成される。異なる性能レベルは、回路の異なる動作速度及び／または正確性の異なるレベルを含む。本発明による一部の実施形態では、プロセッシング回路が異なる性能レベルを提供するために異なるクロック速度で動作でき、及び／または異なる回路形態を使用する。例えば、本発明による一部の実施形態では、ＳＭＴプロセッサでのスレッドの動作と関連したフローティングポイントユニットまたはデータキャッシュのようなプロセッシング回路が、ＳＭＴプロセッサによって現在動作しているスレッドの数に基づいて高クロック速度での高電力モードまたは低クロック速度での低電力モードのうち一つで動作する。またＳＭＴプロセッサによって動作するスレッドの数が増加する時、プロセッシング回路の性能レベルが低められ、したがって、ＳＭＴプロセッサの構造的利点が提供されてスレッドと関連したプロセッシング回路によって消耗される電力量が減少する。
【００３５】
本発明による実施形態では、多数のスレッドが互いに並列的に行われることは明白である。ここで使われたように、“スレッド”は、関連した命令及びデータを有する別途のプロセスでありうる。スレッドは、多数のプロセスを有する並列コンピュータプログラムの一部に当るプロセスを意味する。またスレッドは、他のプログラムと独立的に動作する別途のコンピュータプログラムを意味することもある。各スレッドは、例えば、関連した命令、データ、プログラムカウンタ及び／またはレジスタに対するそれぞれの状態によって定義される関連した状態を有する。スレッドに対する関連した状態は、プロセッサによって行われるスレッドに対する十分な情報を含む。
【００３６】
本発明による一部の実施形態では、ＳＭＴプロセッサで生成されたスレッドに割当てられるプロセッシング回路にそれぞれの性能レベルを提供するように性能レベル制御回路が構成される。例えば、性能レベル制御回路は、プロセッシング回路が高電力モードで動作できるように第１性能レベルを提供し、低電力モードで動作できるように第２性能レベルを提供する。本発明によるさらに他の実施形態では、中間の性能レベル（すなわち、高電力と低電力間の性能レベル）が性能レベル制御回路によって提供される。
【００３７】
本発明による一部の実施形態では、異なる性能レベルで動作するプロセッシング回路がタグメモリとデータメモリとを含むキャッシュメモリである。キャッシュメモリが第１性能レベル（すなわち、高電力モード）で動作する時は、タグメモリとデータメモリとはタグメモリに対するアクセスがヒットであるか否かに関係なく同時にアクセスされる。データメモリの同時アクセスは、タグメモリでのヒット率が高められるため、さらに大きい性能を提供する。キャッシュメモリは、データメモリがタグメモリでのヒットに対する応答だけでアクセスされる第２性能レベル（すなわち、低電力モード）で動作できる。したがって、タグミスが生じる場合には、データメモリのアクセスと関連する電力消耗の一部を減らせる。
【００３８】
本発明によるさらに他の実施形態では、スレッドの動作と関連したプロセッシング回路は命令キャッシュであり、あるいは、フローティングポイント回路または整数／ロードストア回路のような他の形態のプロセッシング回路である。その上、これらプロセッシング回路の各々は、異なる性能レベルで動作できる。例えば、本発明による一部の実施形態では、キャッシュメモリ、命令キャッシュ、及びフローティングポイント回路及び整数／ロードストア回路が同時に相異なる性能レベルで動作できる。
【００３９】
本発明によるさらに他の実施形態では、同じ形態のプロセッシング回路（例えばフローティングポイント回路及び整数／ロードストア回路）がこの回路の一部が第１性能レベルで動作し、他の一部は第２性能レベルで動作するように他の性能カテゴリに分離しうる。例えば、本発明による一部の実施形態では、フローティングポイント回路の一部が高電力モードで動作するように構成される一方、他のフローティングポイント回路は低電力モードで動作するように構成される。
【００４０】
図２は、本発明によるＳＭＴプロセッサの一実施形態を示すブロック図である。
図２によれば、新しいスレッドがＳＭＴプロセッサ２００から生成される時、スレッド管理回路２０５は、新しく生成されたスレッドを使用したセットのプロセッシング回路を割当てる。割当てられたプロセッシング回路は、プログラムカウンタ２１５、１セットのフローティングポイントレジスタ２４５、及び１セットの整数レジスタ２５０を含む。また、他のプロセッシング回路も新しく生成されたスレッドに割当てられる。スレッドが完了すれば、割当てられたプロセッシング回路は、順次に生成されるスレッドに再割当てられるように解放される。
【００４１】
フェッチ回路２１０は、割当てられたプログラムカウンタ２１５によって提供される位置に基づいて命令キャッシュ２２０から命令をフェッチし、この命令はデコーダ２２５に提供される。デコーダ２２５は、デコードされた命令をレジスタリネーミング回路２３０に出力する。レジスタリネーミング回路２３０によって提供される命令の形態によって、改名された命令はレジスタリネーミング回路２３０によってフローティングポイント命令キュー２３５または整数命令キュー２４０に提供される。例えば、レジスタリネーミング回路２３０によって提供される命令の形態がフローティングポイント命令であれば、その命令はフローティングポイント命令キュー２３５に保存され、レジスタリネーミング回路２３０によって提供される命令が整数命令であれば、その命令は整数命令キュー２４０に保存される。
【００４２】
フローティングポイント命令キュー２３５または整数命令キュー２４０からの命令は、フローティングポイント回路２５５または整数／ロードストア回路２６０による実行のためにそれぞれの関連レジスタに保存される。特に、フローティングポイント命令は、フローティングポイント命令キュー２３５から１セットのフローティングポイントレジスタ２４５に伝えられる。フローティングポイントレジスタ２４５内の命令は、フローティングポイント回路２５５によってアクセスされうる。またフローティングポイント回路２５５は、フローティングポイント回路２５５によって行われる命令がデータキャッシュ２６５に保存されたデータを参照する時のように、データキャッシュ２６５に保存されたフローティングポイントデータをアクセスできる。
【００４３】
整数命令は、整数命令キュー２４０から整数レジスタ２５０に伝えられる。整数／ロードストア回路２６０は、その命令が行われるように整数レジスタ２５０に保存された整数命令をアクセスできる。整数／ロードストア回路２６０はまた、整数レジスタ２５０に保存された整数命令がデータキャッシュ２６５に保存された整数データを参照する時にデータキャッシュ２６５をアクセスできる。
【００４４】
本発明の実施形態によれば、スレッド管理回路２０５は、データキャッシュ２６５に性能レベルを提供する。特に、性能レベルは、データキャッシュ２６５が第１性能レベルまたは第２性能レベル（すなわち、高電力モードまたは低電力モード）で動作するかを制御しうる。したがって、スレッド管理回路２０５は、データキャッシュ２６５が高電力モードで動作する第１性能レベルを提供でき、またはデータキャッシュ２６５が低電力モードで動作する第２性能レベルを提供できる。本発明による実施形態ではデータキャッシュ２６５の動作が第１性能レベルまたは第２性能レベルのうち何れか一つよりなると説明されたが、さらに多くの性能レベルを使用できることは明白である。
【００４５】
図３は、本発明によるスレッド管理回路の具体例を示すブロック図である。
図３によれば、スレッド管理回路３０５は、動作システムから、またはＳＭＴプロセッサでのスレッドの生成と関連するスレッド発生回路から情報を受信する。スレッド管理回路３０５は、スレッド割当回路３３０を備え、スレッド割当回路３３０はＳＭＴプロセッサによって生成されたスレッドが使用されるようにプロセッシング回路を割当てる。
【００４６】
スレッド管理回路３０５は、ＳＭＴプロセッサによって生成されたスレッドと関連するプロセッシング回路に性能レベルを提供する性能レベル制御回路３４０をさらに備える。性能レベル制御回路３４０は、ＳＭＴプロセッサによって現在動作しているスレッドの数に基づいてプロセッシング回路に性能レベルを提供する。特に、ＳＭＴプロセッサによって動作するスレッドの数が増加すれば、性能レベル制御回路３４０はＳＭＴプロセッサによって動作するスレッドと関連するプロセッシング回路に低める性能レベルを提供する。性能レベル制御回路３４０は、ＳＭＴプロセッサによって動作するスレッドの生成及び完了に応答して内部カウントを増加及び減少させることによってＳＭＴプロセッサによって現在動作しているスレッドの数を決定できる。
【００４７】
本発明によるプロセッシング回路に提供される性能レベルが第１性能レベル（または、高電力モード）のようなデフォルト値を有することは明白である。したがって、スレッドが加えられれば、プロセッシング回路に提供される性能レベルは性能を落としてプロセッシング回路の電力消耗を減らすために低められる。性能レベルは、少なくとも２つの状態、すなわち第１性能レベル及び第２性能レベルを有する信号を伝送できる信号ラインを経由してプロセッシング回路に提供される。例えば、ＳＭＴプロセッサが初期化された後、ＳＭＴプロセッサによって動作するスレッドの数は“０”となる。ここで、プロセッシング回路に提供される性能レベルのデフォルト値は、第１性能レベル（高電力モード）である。スレッドが加えられ、結局しきい値を超えれば、性能レベルは、例えばある性能レベルが使われたかを表す信号の状態を変更させることによって第２性能レベルに変更される。
【００４８】
図４は、本発明による性能レベル制御回路３４０の具体例を示すブロック図である。
図４によれば、カウンタ回路４０５は、ＳＭＴプロセッサによって現在動作しているスレッドの数を決定する動作システム、または図３を参照して説明されたスレッド発生回路から情報を受信する。例えば、カウンタ回路４０５が新しいスレッドの生成に関する情報を受信した時、４つのスレッドがＳＭＴプロセッサによって既に始まっていれば、カウンタ回路４０５は、ＳＭＴプロセッサによって現在５つのスレッドが動作するということを反映するように増加する。
【００４９】
カウンタ回路４０５は、ＳＭＴプロセッサによって現在動作しているスレッドの数を比較回路４１０に提供する。しきい値がＳＭＴプロセッサによって現在動作しているスレッドの数と共に比較回路４１０に提供される。しきい値は、それ以上で性能レベルが変化するスレッドの数を表すプログラム可能な値である。したがって、ＳＭＴプロセッサによって現在動作しているスレッドの数がしきい値より小さいか、または同じである時にはプロセッシング回路に提供される性能モードが高電力モードのような第１性能レベルに維持される。しかし、ＳＭＴプロセッサによって現在動作しているスレッドの数がしきい値を超える時にはＳＭＴプロセッサによって消費される電力を減少させるために性能レベルが低められる。
【００５０】
図５は、本発明による性能レベル制御回路の具体例の動作を示すフローチャートである。
図５によれば、ＳＭＴプロセッサが初期化される時、ＳＭＴプロセッサによって現在動作しているスレッドの数は“０”である（ステップ５００）。ＳＭＴプロセッサからスレッドが生成されて完了すれば、ＳＭＴプロセッサで現在動作しているスレッドの数Ｎは、増加または減少する（ステップ５０５）。例えば、４つのスレッドがＳＭＴプロセッサによって動作する場合に、Ｎの値は４である。新しいスレッドが生成される時、Ｎの値は５に増加し、スレッドの一つがその後に完了すれば、Ｎの値は再び４に減少する。
【００５１】
ＳＭＴプロセッサで現在動作しているスレッドの数は、しきい値と比較される（ステップ５１０）。ＳＭＴプロセッサによって現在動作しているスレッドの数がしきい値より小さいか、または同じであれば、性能レベル制御回路はスレッドに割当てられたプロセッシング回路に第１性能レベルを提供する（ステップ５１５）。例えば、あるスレッドに割当てられたプロセッシング回路が図２を参照して説明されたキャッシュメモリであれば、キャッシュメモリはタグメモリとデータメモリとが同時にアクセスされるように動作できる（高電力モード）。一方、ＳＭＴプロセッサによって現在動作しているスレッドの数がしきい値より大きければ（ステップ５１０）、性能レベル制御回路はスレッドと関連したプロセッシング回路に第２性能レベルを提供する（ステップ５２０）。その結果、例えば図２を参照して前述された実施形態で、キャッシュメモリは第２性能レベルとなり、タグメモリでのヒットに対する応答だけでデータメモリがアクセスされるように動作する（低電力モード）。
【００５２】
図６は、図２に示された本発明によるキャッシュメモリの具体例を示すブロック図である。
図６によれば、タグメモリ６１０は、データメモリ６２０に保存されたデータのアドレスを保存するように構成される。タグメモリ６１０は、ＳＭＴプロセッサによって作用されるデータと関連したアドレスを利用してアクセスされる。タグメモリ６１０の内容は、ＳＭＴプロセッサによって必要なデータがデータメモリ６２０に保存されているか否かを決定するためにタグ比較回路６３０によって前記アドレスと比較される。タグ比較回路６３０が必要なデータがデータメモリ６２０に保存されていると判定すれば、タグヒットが発生する。それ以外では、タグミスが発生する。タグヒットが発生すれば、出力イネーブル回路６５０はデータがデータメモリ６２０から出力されるようにイネーブルさせる。
【００５３】
本発明の実施形態によれば、性能レベル制御回路によって提供される性能レベルは、タグメモリ６１０とデータメモリ６２０とがどのように動作するかを制御するために利用される。特に、第１性能レベルがキャッシュメモリに提供されれば、データメモリイネーブル回路６４０は、タグヒットが発生するか否かに関係なくタグメモリ６１０と同時にアクセスされるようにデータメモリ６２０をイネーブルさせる。一方、第２性能レベルがキャッシュメモリに提供されれば、データメモリイネーブル回路６４０は、タグヒットが発生しなければデータメモリ６２０がアクセスされることを許さない。
【００５４】
したがって、本発明による実施形態では、高電力モードではタグメモリ６１０とデータメモリ６２０とが向上した性能を提供するために同時にアクセスされる。一方、低電力モードでは、データメモリ６２０はタグメモリ６１０がタグヒットが発生したということを表す場合にだけアクセスされ、その結果、キャッシュメモリによって消費される電力が減少する。
【００５５】
図７は、命令キャッシュに利用される本発明による実施形態を示すブロック図である。
図７によれば、スレッド管理回路７００は、命令キャッシュ７２２を新しいスレッドに割当てる。スレッド管理回路７００に含まれた性能レベル制御回路は、命令キャッシュ７２２がどのように動作するかを制御するために性能レベルを命令キャッシュ７２２に提供する。
【００５６】
特に、命令キャッシュ７２２は、第１性能レベルに応答して高電力モードで動作でき、第２性能レベルに応答して低電力モードで動作するように構成される。例えば図５を参照して前述されたように、第１及び第２性能レベルがＳＭＴプロセッサによって現在動作しているスレッドの数に基づいて命令キャッシュ７２２に提供される。また、命令キャッシュ７２２は、データメモリ６２０が低電力モードでタグヒットに対する応答だけでアクセスされる図６を参照して前述された方式と類似した方式で異なる性能レベルで動作される。例えば、連続的なメモリアクセスが同じキャッシュラインにあると判定される時、直接アドレッシングを許すために異なる性能レベルが命令キャッシュに提供される。このような形態の限定は、タグＲＡＭの読出し及びタグ比較が必要でない直接アドレスドキャッシュを使用して適用される。また、直接アドレスドキャッシュでは、仮想アドレスから実際アドレスへの変換も不要である。
【００５７】
図８は、本発明による異なる性能レベルを有する別途のプロセッシング回路の実施形態を示すブロック図である。
図８によれば、第１フローティングポイント回路８０５が第１性能レベルで動作し、第２フローティングポイント回路８１５が第１性能レベルより低い第２性能レベルで動作するように構成される。言い換えれば、第１フローティングポイント回路８０５は、高電力モードで使用され、第２フローティングポイント回路８１５は低電力モードで使用される。
【００５８】
第１整数／ロードストア回路８１０は、第１性能レベルで動作し、第２整数／ロードストア回路８２０は第２性能レベルで動作するように構成される。スレッド管理回路８００は、２つの別途の性能レベルを提供するように構成される。特に、第１性能レベルは、第１フローティングポイント回路８０５及び第１整数／ロードストア回路８１０に提供される。スレッド管理回路８００によって提供される第２性能レベルは、第２フローティングポイント回路８１５及び第２整数／ロードストア回路８２０に提供される。したがって、第１フローティングポイント回路８０５及び第１整数／ロードストア回路８１０は、第１性能レベルで動作するスレッドに割当てられ、第２フローティングポイント回路８１５及び第２整数／ロードストア回路８２０は、第２性能レベルで動作するスレッドに割当てられる。第１及び第２性能レベルは、スレッド管理回路８００によって独立的にまたは同時に提供されうることは明白である。また２つ以上の性能レベルが提供されるように、２つ以上の別途のフローティングポイント回路及び整数／ロードストア回路が提供されることも明白である。
【００５９】
本発明の実施形態によれば、第１フローティングポイント回路８０５及び第１整数／ロードストア回路８１０に提供される第１性能レベルは、ＳＭＴプロセッサで動作するスレッドの数が第１しきい値より小さいか、または同じである時に提供される。第２性能レベルは、ＳＭＴプロセッサによって同時に動作するスレッドの数が第１しきい値を超える時、第２フローティングポイント回路８１５及び第２整数／ロードストア回路８２０に提供される。したがって、ＳＭＴプロセッサによって動作するスレッドの数がしきい値を超える時は、既に存在するスレッド及び新しく生成されたスレッドを含む全てのスレッドがＳＭＴプロセッサによって消耗される電力を減少させるために第２フローティングポイント回路８１５及び第２整数／ロードストア回路８２０を使用する。
【００６０】
本発明によるフローティングポイント回路及び整数／ロードストア回路は、異なる性能レベルを提供するために異なるクロック速度で動作でき、および／または他の回路形態を使用しうる。例えば、本発明による一部の実施形態では、ＳＭＴプロセッサでのスレッドの動作と関連するフローティングポイント回路は、ＳＭＴプロセッサによって現在動作しているスレッドの数に基づいて高クロック速度での高電力モードまたは低クロック速度での低電力モードのうち一つで動作できる。
【００６１】
図９は、スレッド管理回路９００によって提供される別個の性能レベルに応答する複数のプロセッシング回路を含むＳＭＴプロセッサの実施形態を示すブロック図である。特に、スレッド管理回路９００は、３つの別個の性能レベルを命令キャッシュ９３０、データキャッシュ９６５、第１及び第２フローティングポイント回路９０５，９１５、及び第１及び第２整数／ロードストア回路９１０，９２０に提供する。第１及び第２フローティングポイント回路９０５，９１５及び第１及び第２整数／ロードストア回路９１０，９２０に提供された性能レベルは、図８を参照して前述されたように動作することは明白である。また、命令キャッシュ９３０及びデータキャッシュ９６５は、各々図２及び図７を参照して前述されたように動作する。
【００６２】
したがって、プロセッシング回路が異なる性能レベルで動作できるように別個の性能レベルが異なるプロセッシング回路に提供される。これにより、性能と電力消耗間のトレードオフに対する制御が非常によくなされる。例えば、命令キャッシュ９３０は第１性能レベルで動作し、データキャッシュ９６５及び第１及び第２フローティングポイント回路９０５，９１５、及び第１及び第２整数／ロードストア回路９１０，９２０は第２性能レベルで動作できる。さらに性能レベルの他の組合わせを利用することができる。
【００６３】
図１０は、図９のスレッド管理回路９００に含まれる性能レベル制御回路の具体例の動作を示すブロック図である。性能レベル制御回路は、ＳＭＴプロセッサから生成されて完了するスレッドに応答して増加及び減少されるカウンタ１０００を備える。第１ないし第３レジスタ１０１５，１０２０，１０２５の各々は、ＳＭＴプロセッサで現在動作しているスレッド数のしきい値を記憶する。３つの比較回路１０３０，１０３５，１０４０は、レジスタ１０１５，１０２０，１０２５の各々に連結される。特に、第１しきい値を記憶する第１レジスタ１０１５は、第１比較回路１０３０に連結される。第２しきい値を記憶する第２レジスタ１０２０は、第２比較回路１０３５に連結される。第３しきい値を記憶する第３レジスタ１０２５は、第３比較回路１０４０に連結される。
【００６４】
比較回路１０３０，１０３５，１０４０の各々は、ＳＭＴプロセッサによって現在動作しているスレッドの数をそれぞれのレジスタに記憶されたしきい値と比較する。第１比較回路１０３０がＳＭＴプロセッサによって動作するスレッドの現在数が第１レジスタ１０１５に記憶された第１しきい値より大きいと判定すれば、第１比較回路１０３０は図９に示されたようにデータキャッシュ９６５に連結される性能レベル１０４５を発生させる。したがって、ＳＭＴプロセッサによって動作するスレッドの数が第１レジスタ１０１５に記憶されたしきい値を超える時には、データキャッシュ９６５の性能レベルは第１性能レベルから第２性能レベルに変更される（すなわち、高電力モードから低電力モードに）。
【００６５】
第２比較回路１０３５がＳＭＴプロセッサによって現在動作しているスレッドの数が第２レジスタ１０２０に記憶されたしきい値より大きいと判定すれば、第２比較回路１０３５は命令キャッシュ９３０に連結される性能レベル１０５０を発生する。したがって、命令キャッシュ９３０の性能レベルが第１性能レベルから第２性能レベルに変更される（すなわち、高電力モードから低電力モードに）。
【００６６】
第３比較回路１０４０がＳＭＴプロセッサによって現在動作しているスレッドの数が第３レジスタ１０２５に記憶されたしきい値を超えると判定すれば、第３比較回路１０４０は第１及び第２フローティングポイント回路９０５，９１５及び第１及び第２整数／ロードストア回路９１０，９２０に連結される性能レベル１０５５を発生する。したがって、これらプロセッシング回路の性能レベルが第１性能レベルから第２性能レベルに変更される（すなわち、高電力モードから低電力モードに）。第１及び第２フローティングポイント回路９０５，９１５及び第１及び第２整数／ロードストア回路９１０，９２０に連結される性能レベル１０５５は、図８を参照して前述されたように動作するということは明白である。
【００６７】
図１１は、図１０に示された性能レベル制御回路の方法実施形態を示すフローチャートである。
図１１によれば、ＳＭＴプロセッサで現在動作しているスレッドの数は、ＳＭＴプロセッサが初期化される時は“０”である（ステップ１１００）。ＳＭＴプロセッサによってスレッドが生成されて完了すれば、ＳＭＴプロセッサによって現在動作しているスレッドの数Ｎは増加し、かつ減少する（ステップ１１０５）。
【００６８】
ＳＭＴプロセッサによって現在行われるスレッドの数が第１しきい値より小さいか、または同じであれば（ステップ１１１０）、全てのプロセッシング回路が第１（または高）性能レベルで動作し続ける（ステップ１１１５）。一方、ＳＭＴプロセッサによって現在行われるスレッドの数が第１しきい値を超えれば（ステップ１１１０）、性能レベル１０４５に連結されたプロセッシング回路は、第２性能レベル（すなわち、低電力モード）で動作し始める（ステップ１１２０）。
【００６９】
ＳＭＴプロセッサによって現在行われるスレッドの数が第２しきい値より小さいか、または同じであれば（ステップ１１２５）、性能レベル１０５０に（そして、性能レベル１０５５に）連結されるプロセッシング回路が第１性能レベルで動作し始める（または、動作し続ける）。一方、性能レベル１０４５に連結されるプロセッシング回路は（前述されたように）第２性能レベルで動作し続ける。
【００７０】
ＳＭＴプロセッサによって現在行われるスレッドの数が第２しきい値を超えれば（ステップ１１２５）、性能レベル１０５０に連結されるプロセッシング回路は性能レベル１０４５に連結されたプロセッシング回路と共に第２性能レベル（ステップ１１３５）で動作し始める（または、動作し続ける）。一方、性能レベル１０５５に連結されるプロセッシング回路は第１性能レベルで動作し続ける。
【００７１】
ＳＭＴプロセッサによって現在行われるスレッドの数が第３しきい値より小さいか、または同じであれば（ステップ１１４０）、性能レベル１０５５に連結されたプロセッシング回路は第１性能レベルで動作し続け、性能レベル１０４５及び性能レベル１０５０に連結されたプロセッシング回路は第２性能レベルで動作し続ける（ステップ１１４５）。ＳＭＴプロセッサによって現在行われるスレッドの数が第３しきい値を超えれば（ステップ１１４０）、性能レベル１０５５に連結されたプロセッシング回路は第２性能レベル（すなわち、低電力モード）で動作し始める（または、動作し続ける。）（ステップ１１５０）。
【００７２】
以上、最適な実施形態が開示された。ここで特定な用語が使われたが、これは単に本発明を説明するための目的で使われたものであり、意味限定や特許請求の範囲に記載された本発明の範囲を制限するために使われたものではない。したがって、当業者なら、これから多様な変形及び均等な他の実施形態が可能であることが分かる。したがって、本発明の真の技術的保護範囲は、特許請求の範囲の技術的思想によって決まらなければならない。
【産業上の利用可能性】
【００７３】
本発明によるＳＭＴプロセッサ及びこれを動作させる方法では、ＳＭＴプロセッサでのスレッド動作と関連するプロセッシング回路が現在動作しているスレッドの数に基づいて異なる性能レベル、すなわち、高クロック速度での高電力モードまたは低クロック速度での低電力モードのうち一つで選択的に動作できる。したがって、電力消耗が減少しつつ性能も向上する。
【図面の簡単な説明】
【００７４】
【図１】従来のＳＭＴプロセッサ構造を示すブロック図である。
【図２】本発明によるＳＭＴプロセッサの実施形態を示すブロック図である。
【図３】本発明によるスレッド管理回路の具体例を示すブロック図である。
【図４】本発明による性能レベル制御回路の具体例を示すブロック図である。
【図５】本発明による性能レベル制御回路の具体例を示すフローチャートである。
【図６】本発明によるキャッシュメモリの具体例を示すブロック図である。
【図７】本発明によるＳＭＴプロセッサの他の実施形態を示すブロック図である。
【図８】本発明によるＳＭＴプロセッサのさらに他の実施形態を示すブロック図である。
【図９】本発明によるＳＭＴプロセッサのさらに他の実施形態を示すブロック図である。
【図１０】本発明による性能レベル制御回路の他の具体例を示すブロック図である。
【図１１】本発明による性能レベル制御回路の他の具体例を示すフローチャートである。
【符号の説明】
【００７５】
２００    ＳＭＴプロセッサ
２０５    スレッド管理回路
２１０    フェッチ回路
２１５    プログラムカウンタ
２２０    命令キャッシュ
２２５    デコーダ
２３０    レジスタリネーミング回路
２３５    フローティングポイント命令キュー
２４０    整数命令キュー
２４５    フローティングポイントレジスタ
２５０    整数レジスタ
２５５    フローティングポイント回路
２６０    整数／ロードストア回路
２６５    データキャッシュ
【図１】
2004252987.tif 000003
【図２】
2004252987.tif 000004
【図３】
2004252987.tif 000005
【図４】
2004252987.tif 000006
【図５】
2004252987.tif 000007
【図６】
2004252987.tif 000008
【図７】
2004252987.tif 000009
【図８】
2004252987.tif 000010
【図９】
2004252987.tif 000011
【図１０】
2004252987.tif 000012
【図１１】
2004252987.tif 000013