(57)【要約】二重機能加算器を含むシステムが説明される。一つの実施形態において、該システムは加算器を含む。該加算器は、第１のインストラクションがハードウェア・プリフェッチ・インストラクションである場合に、該第１のインストラクションがハードウェア・プリフェッチのためのアドレスを判定するように構成される。該加算器は、該第１のインストラクションが算術演算インストラクションである場合に、該第１のインストラクションが算術演算からの値を判定するように更に構成される。
2011513858.tif 000002
【特許請求の範囲】
【請求項１】
第１のインストラクションについて、該第１のインストラクションがハードウェア・プリフェッチ・インストラクションであるときのハードウェア・プリフェッチ用アドレス、及び、該第１のインストラクションが算術演算インストラクションであるときの算術演算からの値を判定するように構成される第１の加算器を含むシステム。
【請求項２】
前記第１の加算器に伝達可能に接続された第２の加算器を更に含み、該第２の加算器は、ロード／ストア演算のためのアドレスを判定する請求項１に記載のシステム。
【請求項３】
前記第１の加算器及び前記第２の加算器に伝達可能に接続された制御ロジックを更に含み、該制御ロジックは、前の実行サイクルの間の前記第１の加算器の出力及び現在の実行サイクルの間の前記第２の加算器の出力から選択するように構成される請求項２に記載のシステム。
【請求項４】
前記制御ロジックに伝達可能に接続されたデータキャッシュを更に含み、該制御ロジックは、前記第１の加算器の出力又は前記第２の加算器の出力のうちの一つを使用して、該データキャッシュにアクセスするように更に構成される請求項３のシステム。
【請求項５】
前記第１の加算器は、ポスト・インクリメント・アドレスを判定するように更に構成される請求項１のシステム。
【請求項６】
前記第２の加算器に伝達可能に接続されたバイパスを更に含み、該バイパスは、前の実行サイクルの間に前記第１の加算器により出力された前記ポスト・インクリメント・アドレスを、現在の実行サイクルの間に前記第２の加算器の入力に送るように構成される請求項５のシステム。
【請求項７】
前記第１の加算器及び前記第２の加算器に伝達可能に接続されたレジスタファイルを更に含み、
前記レジスタファイルは、
前記第１の加算器から前記出力を受け、
前記第２の加算器にメモリオペランドを送り、及び、
前記第２の加算器に算術論理ユニット（ＡＬＵ）オペランドを送るように構成される請求項３のシステム。
【請求項８】
前記システムは、マルチスレッド・アーキテクチャーである請求項３のシステム。
【請求項９】
前記システムは、スレッドのための前のクロック・サイクルの間、該スレッドのための現在のクロック・サイクルまで、判定された前記第２の加算器の出力をストアするように構成された請求項８のシステム。
【請求項１０】
第１のインストラクションがハードウェア・プリフェッチ・インストラクションである場合に、第１の加算器によりハードウェア・プリフェッチのためのアドレスを判定することと、
前記第１のインストラクションが算術演算インストラクションである場合に、前記第１の加算器により算術演算からの値を判定することを含む方法。
【請求項１１】
前記第１の加算器に伝達可能に接続された第２の加算器によりロード／ストア演算のためのアドレスを判定することと、
前記第１の加算器及び前記第２の加算器に伝達可能に接続された制御ロジックにより、前の実行サイクルの間の前記第１の加算器の出力及び前記現在の実行サイクルの間の前記第２の加算器の出力から選択することを更に含む請求項１０の方法。
【請求項１２】
前記第１の加算器の出力又は前記第２の加算器の出力のうちの一つを使用して、前記制御ロジックに伝達可能に接続されたデータキャッシュにアクセスすることを更に含む請求項１１の方法。
【請求項１３】
前記第１の加算器によりポスト・インクリメント・アドレスを判定することを更に含む請求項１２の方法。
【請求項１４】
前の実行サイクルの間に前記第１の加算器により出力された前記ポスト・インクリメント・アドレスを、現在の実行サイクルの間に前期第２の加算器の入力に送ることを更に含む請求項１３の方法。
【請求項１５】
前記第１の加算器に伝達可能に接続されたレジスタファイルにより、前記第１の加算器からの受けた出力をストアすることを更に含む請求項１１の方法。
【請求項１６】
第１のインストラクションがハードウェア・プリフェッチ・インストラクションであるときのハードウェア・プリフェッチのためのアドレス、及び、該第１のインストラクションが算術演算インストラクションであるときの算術演算から値を判定するための手段を含むシステム。
【請求項１７】
ロード／ストア演算のためのアドレスを判定するための手段と、
現在の実行サイクルの間に判定されたロード／ストア演算のアドレス及び前の実行の間に判定されたハードウェア・プリフェッチのアドレスから選択するための手段とを更に含む請求項１６のシステム。
【請求項１８】
前記選択されたアドレスを使用して、データキャッシュにアクセスするために手段を更に含む請求項１７のシステム。
【請求項１９】
前記ロード／ストア演算のための前記アドレスを判定するための前記手段は、ポスト・インクリメント・アドレスを判定するための手段を更に含む請求項１７のシステム。
【請求項２０】
前の実行サイクルの間に第１の加算器により出力された前記ポスト・インクリメント・アドレスを、現在の実行サイクルの間に第２の加算器の入力に送るために手段を更に含む請求項１９のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で開示される発明の概念の実施形態は、一般にデータ処理システムの分野に関係する。より詳しくは、本明細書で開示される発明の概念の実施形態は、二重機能加算器（dual function adder）に関係する。
【背景技術】
【０００２】
幾つかの従来のコンピュータ・システムにおいて、プロセッサにより実行される演算（operations）は、ロード／ストア、ハードウェア・プリフェッチ、及び、算術演算（arithmetic operations）を含む。ロード／ストアは、メモリ（例えば、シンクロナス・ダイナミック・ランダム・アクセスメモリ）からレジスタファイルへ値をロードする又はレジスタファイルのレジスタからメモリへ値をストアする演算である。ハードウェア・プリフェッチは、データが要求される前に用意（ready）されるように、メモリからレジスタファイルにデータをプリ・ロードすることである。オペランドがすでにレジスタファイルにプリ・ロードされているならば、プロセッサはオペランドがロードされるのを待たないので、プリフェッチはメモリ・リードに関連するレイテンシーを低減する。算術演算は、例えば２つのオペランドの間の加算及び減算を含む整数演算である。
【０００３】
ロード／ストア演算を実行する際に、プロセッサが、ロード／ストア・アドレスを計算することがある。ロード／ストア・アドレスは、そこから値をロードすべきメモリのアドレス、又は、レジスタファイルからの値をそこへストアすべきメモリのアドレスである。ハードウェア・プリフェッチを実行する際に、プロセッサが、ハードウェア・プリフェッチ・アドレスを計算することがある。ハードウェア・プリフェッチ・アドレスは、スレッド実行で使うために要求される前にデータがそこからプリ・ロードされるメモリ・アドレスである。算術演算を実行する際に、プロセッサが、算術演算値を計算することがある。算術演算値は、算術演算（例えば、オペランドＡとオペランドＢの加算）の結果である。
【０００４】
図１の従来技術の概略図は、従来のシステム１００を示す。図示されるように、従来のシステム１００は、少なくとも３つの加算器（１０６，１１２及び１１４）を含むことがある。１つの加算器は、ロード／ストア・アドレスを計算するためのものであり（アドレス生成加算器１０６）、第２の加算器は、ハードウェア・プリフェッチ・アドレスを計算するためのものであり（ハードウェア・プリフェッチ加算器１１２）、第３の加算器は、算術演算値を計算するためのものである（算術論理ユニット｛ＡＬＵ｝加算器１１４）。図１を参照して、アドレス生成加算器１０６は、ロード／ストア・アドレスの計算において、レジスタファイルからのメモリ・アドレス・オペランド１０２及び即値オペランド１０４（例えば、定数）を受けることがある。即値オペランドは、アドレスをリストするオペランドの代わりに、演算のオペランドによりリストされる一定値であることがある。
【０００５】
加算器１０６は、ロード／ストア・アドレスを生成するために、メモリ・アドレス・オペランド１０２と即値オペランド１０４とを合計する。そして、それは、マルチプレクサ１０８に送られる。ロード／ストア演算が実行される場合には、マルチプレクサ１０８は、マルチプレクサ１１０にロード／ストア・アドレスを送る。他方、算術演算が実行されている場合には、マルチプレクサ１０８は、マルチプレクサ１０８にロード／ストア・アドレスをフォワードする代わりに、第１のＡＬＵオペランド１０２を、レジスタファイルからＡＬＵ加算器１１４にフォワードすることがある。ハードウェア・プリフェッチが、ロード／ストア演算の実行に加えて又はその代わりに実行される場合には、マルチプレクサ１０８は、ハードウェア・プリフェッチ・アドレスを判定するために、ロード／ストア・アドレスを、アドレス生成加算器１０６からハードウェア・プリフェッチ加算器１１２にフォワードすることがある。
【０００６】
図１の概略図で説明されるように、ハードウェア・プリフェッチ加算器１１２は、ポスト・インクリメント・アドレスを判定するように更に構成される。ポスト・インクリメント・アドレスは、前の実行サイクルで使われるメモリ・アドレスに定数を加算した値に等しいアドレスである。例えば、現在の実行サイクルにおける演算の実行後又は実行中に、その演算のオペランドを直接又は間接的に指すアドレスが、ポスト・インクリメント・アドレスをもたらすために、定数によりインクリメントされることがある。ポスト・インクリメント・アドレスは、後続する実行サイクルにおいて処理される演算のオペランドを直接又は間接的に指すことがある。
【０００７】
図１の概略図において、加算器１１２は、ロード／ストア・アドレスとマルチプレクサ１１６の出力とを加算するこよによって、ポスト・インクリメント・アドレスを判定する。ポスト・インクリメント・アドレスの計算のとき、マルチプレクサ１１６は、ポスト・インクリメント定数（pconstant）１１８を選択する。pconstant １１８は、予め定義されてされていても良いし及び／又はハード配線されていてもよいし又はシステム１００によりストアされていても良い。加算器１１２がハードウェア・プリフェッチ・アドレスを判定するとき、マルチプレクサ１１６は、（そのアドレスでロード／ストア・アドレスをインクリメント又はデクリメントする）ハードウェア・プリフェッチ・デクリメント・アドレス１２０及びハードウェア・プリフェッチ・インクリメント・アドレス１２２の間で選択をする。加算器１１２は、ポスト・インクリメント・アドレス又はハードウェア・プリフェッチ・アドレス１２４を出力する。それは、現在の実行サイクルでレジスタファイルに、又は、次の実行サイクルでマルチプレクサ１１０の入力に、送られることがある。次の実行サイクルでマルチプレクサ１１０に入力されるハードウェア・プリフェッチ・アドレス１２４は、メモリ・アドレス１３４の値をプリフェッチするためにデータキャッシュ１３６にアクセスするのに用いられることがある。それゆえに、マルチプレクサ１１０は、ロード／ストア演算が実行されているか又はハードウェア・プリフェッチが実行されているかに応じて、現在の実行サイクルのロード／ストア・アドレスと前の実行サイクルのハードウェア・プリフェッチ・アドレスとの間で選択する。
【０００８】
算術演算が計算される場合には、マルチプレクサ１０８がＡＬＵ加算器１１４の入力に第１のＡＬＵオペランド１０２を送るのに加えて、マルチプレクサ１２６は、算術演算に応じて、レジスタファイルからの第２のＡＬＵオペランド１２８及び即値ＡＬＵオペランド１３０（すなわち、定数）から選択された出力を送る。例えば、算術演算は、レジスタファイルにストアされた２つの値を加算することがある。それゆえに、インストラクションの入力オペランドは、加算される値をストアするレジスタファイルのうちの２つのレジスタを指すことがある。他の例において、１つのオペランドは、レジスタファイルにストアされた値を示し、一方、他のオペランドは、予め定義された定数をリストすることがある。加算器１１４は、算術演算値１３２を出力するために、マルチプレクサ１２６の出力とＡＬＵ第１のオペランド１０２とを加算する。
【０００９】
システム１００に関する一つの問題は、３つの加算器が演算を処理することを要求され、それゆえ、回路の面積及びプロセッサの電力消費を増加させることである。
【発明の概要】
【００１０】
一つの実施形態において、二重機能加算器を含むシステムが説明される。一つの実施形態において、該システムは加算器を含む。該加算器は、第１のインストラクションがハードウェア・プリフェッチ・インストラクションである場合に、該第１のインストラクションがハードウェア・プリフェッチのためのアドレスを判定するように構成される。該加算器は、該第１のインストラクションが算術演算インストラクションである場合に、該第１のインストラクションが算術演算からの値を判定するように更に構成される。
【００１１】
本明細書で開示される１つ又は複数の実施形態の利点は、プロセッサと省電力のためのシリコン上の減少されたエリアを含んでも良い。
【００１２】
この例示的な実施形態は、本明細書で開示される発明の概念を制限又は定義するためではなく、その理解を助ける例を提供するために言及される。本開示の他の態様、利点及び特徴は、以下のセクション（図面の簡単な説明、詳細な説明、クレーム）を含む全体の出願のレビューの後、明らかになる。
【００１３】
これらと本発明の概念の他の特徴、態様及び利点は、以下の詳細な説明が添付図面を参照しながら読まれるとき、より良く理解される。
【図面の簡単な説明】
【００１４】
【図１】図１は、ロード／ストア・アドレス、ハードウェア・プリフェッチ・アドレス及び算術演算値を計算するための従来の回路を説明する従来技術の概略図である。
【図２】図２は、ハードウェア・プリフェッチ・アドレス及び算術演算値を計算するように構成される二重機能加算器を含む例示的なシステムを説明する概略図である。
【図３】図３は、レジスタファイルにアクセスすることなく、図２中の概略図の二重機能加算器により計算されるポスト・インクリメント・アドレスを使うように構成される例示的なシステムを説明する概略図である。
【図４】図４は、ハードウェア・プリフェッチ・アドレス及びロード／ストア値を計算するように構成される二重機能加算器を含む例示的なシステムを説明する概略図である。
【図５】図５は、レジスタファイルにアクセスすることなく、図４中の概略図の二重機能加算器により計算されるポスト・インクリメント・アドレスを使うように構成される例示的なシステムを説明する概略図である。
【図６】図６は、マルチスレッド・プロセッサのためのインストラクション・パイプラインを説明する図である。
【図７】図７は、図２及び３の概略図中に示されるシステムによりハードウェア・プリフェッチ、ロード／ストア又は算術演算を実行するための例示的な方法を説明するフローチャートである。
【図８】図８は、図４及び５の概略図中に示されるシステムによりハードウェア・プリフェッチ、ロード／ストア又は算術演算を実行するための例示的な方法を説明するフローチャートである。
【図９】図９は、図３及び５の概略図中に示されるシステムによりポスト・インクリメント・アドレスを計算し使用するための例示的な方法を説明するフローチャートである。
【図１０】図１０は、二重機能加算器を含んでもよいデジタル・シグナル・プロセッサを組み込んでいる、例であるポータブル通信デバイスを説明する一般的なダイアグラム（general diagram）である。
【図１１】図１１は、二重機能加算器を含んでもよいデジタル・シグナル・プロセッサを組み込んでいる、例である携帯電話を説明する一般的なダイアグラムである。
【図１２】図１２は、二重機能加算器を含んでもよいデジタル・シグナル・プロセッサを組み込んでいる、例である無線ＩＰ電話を説明する一般的なダイアグラムである。
【図１３】図１３は、二重機能加算器を含んでもよいデジタル・シグナル・プロセッサを組み込んでいる、例であるポータブル・デジタル・アシスタントを説明する一般的なダイアグラムである。
【図１４】図１４は、二重機能加算器を含んでもよいデジタル・シグナル・プロセッサを組み込んでいる、例であるオーディオ・ファイル・プレーヤーを説明する一般的なダイアグラムである。
【詳細な説明】
【００１５】
記述を通して、説明のために、多数の特定の細部が、本明細書で開示される発明の概念の完全な理解を提供するために説明される。しかし、本明細書で開示される発明の概念がこれらの特定の細部の一部なしで実施されることができることは、当業者にとって明らかである。他のインスタンスにおいて、周知の構造及びデバイスは、本明細書で開示される発明の概念の根底にある原則を不明瞭にすることを避けるために、ブロック図の形で示される。
【００１６】
本明細書で開示される発明の概念の実施形態は、二重機能加算器に関係する。一つの実施形態において、二重機能加算器は、プロセッサにおいて、システムのために、ハードウェア・プリフェッチのためのハードウェア・プリフェッチ・アドレス及び算術演算の実行からの算術演算値を計算するように構成される。それゆえ、複数の加算器（例えば図１からの加算器１１２，１１４）のうちの一つがシステムから取り除かれて、システムのサイズ及び電力消費を減らすことができる。加算器を取り除くために、２つの加算器１１２及び１１４への入力は、一つの加算器への入力になるように結合される。一つの実施形態において、二重機能加算器は、２つの従来の加算器のうちの一つと同じタイプの加算器である。
【００１７】
ハードウェア・プリフェッチ・アドレス計算及び算術演算値計算について１つの加算器を共有することの利点は、従来のように同一の実行サイクルの間に両方の計算が実行されないということである。例えば、ハードウェア・プリフェッチは、従来は、いかなる算術演算も実行されない実行サイクルで起こる。その結果、加算器は、二重機能加算器による重大な（significant）タイミング・ペナルティーを生じさせることなく、両方のタイプの演算を実行することができる。
【００１８】
システムから加算器を取り除くことに加えて、一つの実施形態において、システムは、ポスト・インクリメント・アドレスをロードするためにレジスタファイルへのアクセスを要求することなく、現在の実行サイクルにおいて、前の実行サイクルからの、計算されたポスト・インクリメント・アドレス（例えば、図１中の加算器１１２により計算される）を使用するように構成される。従来は、ポスト・インクリメント・アドレスは、レジスタファイルにストアされ、それから後で取り出される。前の実行サイクルからのポスト・インクリメント・アドレスは、現在の実行サイクルにおいて実行される演算のオペランドを指すことができる。前に計算されたポスト・インクリメント・アドレスをロードするためのレジスタファイルへのアクセスを要求しないようにするために、システムは、データキャッシュ１３６にアクセスするために現在の実行サイクルで使用するように、前に計算されたポスト・インクリメント・アドレスをマルチプレクサ１０８（図１）に入力するように構成されるフィードバック・パスを含む。その結果、それが現在の実行サイクルのためにシステムへと戻って入力されるので、前の実行サイクルからのポスト・インクリメント・アドレスが利用できる。
【００１９】
レジスタファイルにアクセスすることなくポスト・インクリメント・アドレスを使用することの利点は、プロセッサがポスト・インクリメント・アドレスのためにレジスタファイルをリードすることで実行を停止させるであろう時間が節約されるということである。したがって、システムを含むプロセッサの速度は増加される。
【００２０】
二重機能加算器の例示的な実施形態
図２−５中の概略図は、二重機能加算器を含む回路の例示的な実施形態を示す。図２の概略図は、ハードウェア・プリフェッチ・アドレス２２６を計算するように及び算術演算値２２６を計算するように構成される二重機能加算器２２４を含む例示的なシステム２００を示す。一つの実施形態において、システム２００は、プロセッサの実行ユニット及び／又はロード／ストア・ユニット中にある。図３の概略図は、レジスタファイルにアクセスすることなく二重機能加算器２２４により計算されるポスト・インクリメント・アドレスを使用するように構成される例示的なシステム３００を示す。図４の概略図は、ハードウェア・プリフェッチ・アドレスを計算するように及びロード／ストア・アドレスを計算するように構成される二重機能加算器４１４を含む例示的なシステム４００を説明する。図５の概略図は、レジスタファイルにアクセスすることなく図４中の概略図の加算器４２２により計算されるポスト・インクリメント・アドレスを使用するように構成される例示的なシステム５００を説明する。
【００２１】
図２を参照して、２つの独立した加算器（図１中の１１２と１１４）への入力は、結合されて、１つの加算器２２４に入力される。図１の概略図により説明されるように、両方の加算器１１２，１１４（図１）への１つの入力は、マルチプレクサ１０８から始まる。それゆえに、共有された加算器２２４への第１の入力は、マルチプレクサ２０８の出力に接続される。一つの実施形態において、マルチプレクサ１２６（図１）は、（ｉ）ハードウェア・プリフェッチ・アドレス計算及びポスト・インクリメント・アドレス計算のためのマルチプレクサ２１０の出力と、（ｉｉ）算術演算のためのレジスタファイルからの第２のＡＬＵオペランド２２２又は即値ＡＬＵオペランド２２０との間で切り替えるためのマルチプレクサ２１８と置き換えられる。マルチプレクサ２１８の出力は、共有された加算器２２４の第２の入力に接続される。
【００２２】
図２の概略図において、ロード／ストア・アドレスの計算は、図１の概略図でのものと類似している。システム２００によるハードウェア・プリフェッチ・アドレスの計算のために、システム２００は、ポスト・インクリメント・アドレスを計算するか又はハードウェア・プリフェッチ・アドレスを計算するかに応じて切り替えるように構成されるマルチプレクサ２１０を含んでも良い。マルチプレクサ２１８は、マルチプレクサ２１０の出力を受け、また、ハードウェア・プリフェッチ／ポスト・インクリメント・アドレスが計算されているか又は算術演算値２３４が計算されているかに応じて切り替えるように構成される。どのオペレーションが実行されるかに応じて、共有された加算器２２４へ情報を出力するために、レジスタファイルからの第２のＡＬＵオペランド２２２と即値ＡＬＵオペランド２２０との間で選択するように構成され、さらにマルチプレクサ２１０により出力されるポスト・インクリメント又はハードウェア・プリフェッチ情報を受けるマルチプレクサ２１８以外は、システム２００による算術演算値の計算は、図１の概略図の場合と同じように計算されても良い。
【００２３】
ハードウェア・プリフェッチ又はポスト・インクリメント・アドレス２３４を計算すると、そのアドレスは、フィードバックループ２２６を介し後続する実行サイクルにおいてマルチプレクサ２２８に入力されても良い。マルチプレクサ２２８は、データキャッシュ２３２にアクセスするために、現在の実行サイクルのロード／ストア・アドレス又は前の実行サイクルのハードウェア・プリフェッチ・アドレスの間で選択するための制御ロジックの一つの実施形態である。他の実施形態は、ロード／ストア・アドレス及びハードウェア・プリフェッチ・アドレスの間で選択するためのコンパレータ（comparators）、スイッチ（switches）又は他のデジタル論理を含んでも良い（ただし、これらに限定されるものではない）。
【００２４】
図３を参照して、図２の概略図の場合のように、システム３００は二重機能加算器２２４を含む。システム３００は、前の実行サイクルにおいて計算されたポスト・インクリメント・アドレスの、マルチプレクサ３０２の入力に対するフィードバックループ２２６を更に含む。一つの実施形態において、マルチプレクサ３０２は、第３の入力について、ポスト・インクリメント・アドレス２３４を受けるために、構成される。それゆえに、マルチプレクサ３０２は、プロセッサにより実行されている演算に応じて、ポスト・インクリメント・アドレス２３４、ＡＬＵ第１のオペレーション２０４及び加算器２０６からのロード／ストア・アドレスの間で選択するように構成されても良い。例えば、プロセッサが、一つの値についてデータキャッシュ２３２にアクセスするためにポスト・インクリメント・アドレスを使用する場合には、マルチプレクサ３０２は、データキャッシュ２３２にアクセスするためのメモリ・アドレス２３０を出力するために、ポスト・インクリメント・アドレスを、マルチプレクサ２２８に出力する。
【００２５】
図４を参照して、システム４００は、ハードウェア・プリフェッチ・アドレスを計算するように及びロード／ストア・アドレスを計算するように構成される二重機能加算器４１４を含む。一つの実施形態において、マルチプレクサ４１０は、ロード／ストア・アドレスを計算するための情報（即値オペランド４０８）及びハードウェア・プリフェッチ・アドレスを計算するための情報（マルチプレクサ４０６の出力）の間で選択する。ロード／ストア・アドレスを計算するために、マルチプレクサ４１２は、レジスタファイルからのメモリ・アドレス４３２を二重機能加算器４１４へ出力する。マルチプレクサ４１０は、加算器４１４への第２の入力のために即値オペランド４０８を選択しても良い。それから、ロード／ストア・アドレスは、加算器４１４により計算され、マルチプレクサ４１６に出力されても良い。一つの実施形態において、マルチプレクサ４１６は、加算器４１４からハードウェア・プリフェッチ・アドレスを更に受けても良い。プロセッサがロード／ストア演算を実行している場合に、マルチプレクサ４１６は、ロード／ストア・アドレスを選択しても良い。それから、ロード／ストア・アドレスは、データキャッシュ４２０にアクセスするためのメモリ・アドレス４１８としてマルチプレクサ４１６から出力される。
【００２６】
ハードウェア・プリフェッチ・アドレスを計算するために、最初に、ロード／ストア・アドレスが第１の実行サイクルにおいて加算器４１４により計算され、次に、第１の実行サイクルにおいて計算されたロード／ストア・アドレスが、マルチプレクサ４１２により選択され、第２の実行サイクルにおいてアドレス生成加算器４１４に入力される。ハードウェア・プリフェッチ・アドレスを計算するための加算器４１４へのもう一方の入力は、ハードウェア・プリフェッチ・デクリメント・アドレス４０２又はハードウェア・プリフェッチ・インクリメント・アドレス４０４である。マルチプレクサ４０６は、ハードウェア・プリフェッチ・デクリメント・アドレス４０２及びハードウェア・プリフェッチ・インクリメント・アドレス４０４の間で選択する。
【００２７】
システム４００において、ＡＬＵ加算器４２２は、ポスト・インクリメント・アドレスを計算する。それゆえに、二重機能加算器４１４がポスト・インクリメント・アドレスを計算しないので、マルチプレクサ４０６は、ポスト・インクリメント４２６を要求しない。加算器４１４がハードウェア・プリフェッチ・アドレスを計算しているとき、マルチプレクサ４１０は、マルチプレクサ４０６の出力を選択しても良い。それから、加算器４１４は、ハードウェア・プリフェッチ・アドレスを生成するために、インクリメント／デクリメント・アドレス４０２，４０４及びロード／ストア・アドレスを加算する。そして、ハードウェア・プリフェッチ・アドレスは、マルチプレクサ４１６へ出力される。
【００２８】
ハードウェア・プリフェッチ・アドレス及びロード／ストア・アドレスは、二重機能加算器４１４により計算され、マルチプレクサ４１６により出力されるので、マルチプレクサは、システム４００により、ロード／ストア・アドレス及びハードウェア・プリフェッチ・アドレスの間で選択することを要求されない。一つの実施形態において、マルチプレクサ４１６により出力されるアドレスは、アドレスがハードウェア・プリフェッチであるか又はロード／ストア・アドレスであるかに依存することなく、データキャッシュ４２０へアクセスするためのメモリ・アドレス４１８として使用される。
【００２９】
算術演算値を計算するために、加算器４２２は、第１の入力においてレジスタファイルからの第１のオペランド４３２を受け、また、第２の入力において即値オペランド（すなわち、定数）４２８又はレジスタファイルからの第２のオペランド４３０を受けても良い。レジスタファイルからの第１のオペランド４３２を受けるために、マルチプレクサ４１２は、オペランド４３２をマルチプレクサ４１６に出力する。二重機能加算器４１４は、２つの異なるタイプの入力（すなわち、レジスタファイルからのメモリオペランド４３２又は前に加算器４１４により計算されたロード／ストア・アドレス）を受けることがあるので、システム４００は、マルチプレクサ４１２を含んでいる。このように、マルチプレクサ４１２は、システムが（ｉ）ロード／ストア若しくは算術演算を処理しているか又は（ｉｉ）ハードウェア・プリフェッチを処理しているかに応じて、レジスタファイルからのオペランド（メモリ又はＡＬＵ）４３２又はロード／ストア・アドレスを選択する。
【００３０】
算術演算値を計算することに加えて、ＡＬＵ加算器４２２は、ポスト・インクリメント・アドレスを更に計算しても良い。ポスト・インクリメント・アドレスを計算するために、加算器４２２はまた、ポスト・インクリメント４２６を受けても良い。従って、マルチプレクサ４２４は、加算器４２２がポスト・インクリメント・アドレスを計算しているか又は算術演算値を計算しているかに応じて、ＡＬＵオペランド４２８と４３０とポスト・インクリメント４２６との間で選択する。
【００３１】
図５を参照して、図４の概略図の場合のように、システム５００は二重機能加算器４１４を含む。システム５００は、前の実行サイクルにおいてＡＬＵ加算器４２２により計算されたポスト・インクリメント・アドレスの、マルチプレクサ５０２の入力に対するフィードバックループを更に含む。一つの実施形態において、マルチプレクサ５０２は、第３の入力について、ポスト・インクリメント・アドレスを受けるために、構成される。それゆえに、マルチプレクサ５０２は、プロセッサにより実行されている演算に応じて、ポスト・インクリメント・アドレス、レジスタファイルからのメモリ又はＡＬＵオペランド４１４、及び計算されたロード／ストア・アドレスの間で選択するように構成される。例えば、プロセッサが、一つの値についてデータキャッシュ４２０にアクセスするためにポスト・インクリメント・アドレスを使用する場合には、マルチプレクサ５０２は、データキャッシュ４２０にアクセスするためのメモリ・アドレス４１８として、ポスト・インクリメント・アドレスを出力する。
【００３２】
図２−５の概略図に示される実施形態の各々において、２つの加算器（ここで、一つは、二重機能加算器である）を含むシステムは、ハードウェア・プリフェッチ・アドレス、ロード／ストア・アドレス及び算術演算からの値を計算するように構成される。図２−５の概略図はシングルスレッド・プロセッサ・アーキテクチャーに関して説明されたが、下で説明されるように、マルチスレッド・プロセッサにおいて使用されても良い。
【００３３】
マルチスレッド・プロセッサの例示的な実施形態のオペレーション
例示的な実施形態において、図２−５の概略図に示されるシステム２００，３００，４００，５００は、マルチスレッド・プロセッサ・アーキテクチャーにおいて動作しても良い。図６は、マルチスレッド・プロセッサのためのインストラクション・パイプライン６００を示すダイアグラムである。図６を参照して、ダイアグラムは、６つのスレッド６１８−６２８に関するクロック６０２のサイクルＸ〜Ｘ＋６（６０４−６１６）にわたるパイプライン６００を示す。一つの例において、インストラクションの処理（すなわち、インストラクション・サイクル）は、６つのオペレーション・サイクルに分けられる：デコード（ＤＥ）、レジスタ・ファイル・アクセス（ＲＦ）、第１の実行サイクル（Ｘ１）、第２の実行サイクル（Ｘ２）、第３の実行サイクル（Ｘ３）及びライトバック（ＷＢ）。パイプラインにおいて存在し得るが図示されない他のオペレーション・サイクルは、フェッチされる。一つの例において、各々のオペレーション・サイクルは、１つのクロック・サイクルで実行されても良い。
【００３４】
一つの実施形態において、１つのインストラクション・サイクルは、１つのインストラクションに関するオペレーション・サイクルの各々が完了する時間である。例えば、スレッド０ （６１８）に対する１つのインストラクション・サイクルは、クロック・サイクルＸ（６０４）〜Ｘ＋５（６１４）、すなわち６つのクロック・サイクルであっても良い。パイプラインがフェッチ・オペレーション・サイクルを含むならば、インストラクション・サイクルは、７つのクロック・サイクルであっても良い。それゆえに、システム２００−３００（図２−３）について、１つのインストラクション・サイクルは、パイプラインのオペレーション・サイクルの各々（例えば、デコード（ＤＥ）、レジスタ・ファイル・アクセス（ＲＦ）、第１の実行サイクル（Ｘ１）、第２の実行サイクル（Ｘ２）、第３の実行サイクル（Ｘ３）及びライトバック（ＷＢ））を含んでも良い。
【００３５】
例であるロード命令に関するインストラクション・サイクルに含まれるオペレーション・サイクルの説明において、フェッチ・オペレーション・サイクル（図示せず）は、プロセッサが実行のためのインストラクションを検索しロードするパイプライン・オペレーション・サイクルである場合がある。例えば、図２−３の概略図に示されるシステム２００及び３００について、メモリ・アドレスＡに、ある定数を加算することを実行する、例であるスレッド０ （６１８）のインストラクションは、プロセッサにより実行されるために、フェッチされても良い。ＤＥ（６３０，６４４，６５６，６６６，６７４，６８０）は、プロセッサがロード命令をオペランド中にデコードするオペレーション・サイクルである。それゆえに、前のロード命令の例において、プロセッサは、ＤＥ （６３０）の間に、即値オペランド及び／又はオペランドをストアしているレジスタファイルのレジスタ・ファイル・アドレスを集める（gather）ためのインストラクションを、デコードする。ＲＦ（６３２，６４６，６５８，６６８，６７６，６８２）は、プロセッサがオペランドをレジスタファイルから検索するオペレーション・サイクルである。それゆえに、プロセッサは、メモリオペランド２０４（図２−３）をレジスタファイルから検索しても良い。
【００３６】
Ｘ１、Ｘ２及びＸ３（６３４−６３８，６４８−６５２，６６０−６６４，６７０−６７２，６７８）は、プロセッサが、インストラクションの実行の第１の部分、第２の部分及び第３の部分をそれぞれ完了するオペレーション・サイクルである。ロード・オペレーション・インストラクションについて、オペレーション・サイクルＸ１ （６３４は）、アドレス生成加算器２０６（図２−３）によりロード／ストア・アドレスを計算することを含んでも良い。オペレーション・サイクルＸ２ （６３６）は、マルチプレクサ２０８，３０２及びマルチプレクサ２２８（図２−３）による、データキャッシュ２３２（図２−３）にアクセスするためのメモリ・アドレス２３０としての、ロード／ストア・アドレスの選択を含んでも良い。Ｘ３ （６３８）は、ロードを実行するためにデータキャッシュ２３２にアクセスすることを含んでも良い。ＷＢ（６４０，６５４）は、オペランドがレジスタファイルにライトバックされることがあるオペレーション・サイクルである。例えば、ポスト・インクリメント・アドレス又は算術演算値が計算される場合には、ポスト・インクリメント・アドレス又は算術演算値は、パイプライン・オペレーション・サイクルＷＢの間に、レジスタファイルにライトされる。ロード命令についてに、プロセッサは、該インストラクションのためのＷＢの間に、値をレジスタファイルにライトバックしなくても良い。
【００３７】
再度、図２−３の概略図及び図６のダイアグラムに示されるパイプライン６００を参照して、パイプライン・オペレーション・サイクルＸ１の間、アドレス生成加算器２０６が動作しても良く、パイプライン・オペレーション・サイクルＸ２の間、マルチプレクサ２０８，２１０，２１８，２２８及び３０２が動作しても良く、そして、パイプライン・オペレーション・サイクルＸ３の間、加算器２２４が動作しても良く、及び、データキャッシュ２３２がアクセスされても良い。システム２００（図２）の例について、ハードウェア・プリフェッチ・アドレスを計算するために、ロード／ストア・アドレスが、パイプライン・オペレーション・サイクルＸ１の間に、加算器２０６により計算され、該ロード／ストア・アドレスが、パイプライン・オペレーション・サイクルＸ２の間に、マルチプレクサ２０８により加算器２２４の第１の入力に送られ、ハードウェア・プリフェッチ・デクリメント・アドレス２１２又はハードウェア・プリフェッチ・インクリメント・アドレス２１４が、同様にパイプライン・オペレーション・サイクルＸ２の間に、マルチプレクサ２１０，２１８により加算器２２４の第２の入力に送られ、そして、該ハードウェア・プリフェッチ・アドレスは、パイプライン・オペレーション・サイクルＸ３の間に、加算器２２４により計算される。
【００３８】
マルチスレッド・アーキテクチャーにおいて、異なるパイプライン・オペレーション・サイクルが、異なるスレッドからのインストラクション上で並行して実行されても良い。図示されるように、クロック・サイクルＸ＋２ （６０８）の間、スレッド０ （６１８）は、オペレーション・サイクルＸ１ （６３４）にあっても良く、スレッド１ （６２０）は、オペレーション・サイクルＲＦ （６４６）にあっても良く、スレッド２ （６２２）は、オペレーション・サイクルＤＥ （６５６）にあっても良い。その結果、複数のスレッドのためのデータが、同時に、システム２００，３００，４００，５００中にあっても良い。データは、シングル・スレッドについて、一つのオペレーション・サイクルから他のオペレーション・サイクルまで持続することがあり（例えば、ハードウェア・プリフェッチ・アドレス又はポスト・インクリメント・アドレスは、次のオペレーション・サイクルにおいてもとのシステム中へ入力されることがある）、また、異なるスレッドからの複数のデータがシステム中で共存することがあるので、スレッドの次の実行サイクルまで、スレッドの値をストアするために、システム２００，３００，４００，５００は、システムの異なる位置に一時ストレージ（temporary storage）を含んでも良い。例えば、オペレーション・サイクルＸ３ （６３８）（クロック・サイクルＸ＋４ （６１２））の間に、図３の概略図中の加算器２２４によりスレッド０で計算されるハードウェア・プリフェッチ・アドレスは、マルチプレクサ２２８がデータキャッシュ１３６にアクセスするためにハードウェア・プリフェッチ・アドレスを選択することがある次のオペレーション・サイクルＸ２（例えば、クロック・サイクルＸ＋９）までストアされても良い。一つの実施形態において、フリップ・フロップが、システムに挿入されて、予め定められた数のクロック・サイクルについて、値をストアするように構成される（例えば、ハードウェア・プリフェッチ・アドレスを５つのクロック・サイクルについてストアする）。ストレージの他の実施形態は、バッファ、メモリ又は他のストレージ・デバイスを含む。
【００３９】
その結果、図２−５の概略図中に示されるシステムの例示的な実施形態は、シングル・スレッド・アーキテクチャー及びマルチスレッド・アーキテクチャーにおいて実行するように構成されても良い。
【００４０】
例示的な実施形態のオペレーションの例示的な方法
図７−９は、図２−５の概略図に示されるシステム２００，３００，４００，５００のオペレーションの例示的な方法を示すフローチャートである。図７のフローチャートは、図２及び３の概略図中に示されるシステム２００，３００によりハードウェア・プリフェッチ、ロード／ストア又は算術演算を実行するための例示的な方法７００を示す。図８のフローチャートは、図４及び５の概略図中に示されるシステム４００，５００によりハードウェア・プリフェッチ、ロード／ストア又は算術演算を実行するための例示的な方法８００を示す。図９のフローチャートは、図３及び５の概略図中に示されるシステム３００，５００によりポスト・インクリメント・アドレスを計算し使用するための例示的な方法９００を示す。
【００４１】
図７を参照して、本フローチャートは、ハードウェア・プリフェッチ・アドレス及び算術演算値が二重機能加算器２２４（図２−３）により計算される方法７００を示す。７０２から始まって、プロセッサは、ロード／ストア演算が実行されるかどうか判定する。ロード／ストア演算が実行される場合には、７０４において、加算器２０６は、レジスタファイルからのメモリオペランド２０４を即値オペランド２２０に加算することによって、ロード／ストア・アドレスを計算する。７０４においてロード／ストア・アドレスを計算すると、７０６において、マルチプレクサ２０８及び２２８（図２）又は３０２及び２２８（図３）は、そのロード／ストア・アドレスを、データキャッシュ２３２にアクセスする際のメモリ・アドレス２３０として選択する。
【００４２】
７０２においてロード／ストアは実行されないとプロセッサが判定する場合には、７０８において、プロセッサは、ハードウェア・プリフェッチが実行されるかどうか判定する。ハードウェア・プリフェッチが実行される場合には、７１０において、加算器２０６は、レジスタファイルからのメモリオペランド２０４を即値オペランド２０４に加えることによって、ロード／ストア・アドレスを計算する。ロード／ストア・アドレスを計算すると、７１２において、マルチプレクサ２１０及び２１８は、計算されたロード／ストア・アドレスに加えられるために、ハードウェア・プリフェッチ・デクリメント・アドレス２１２又はハードウェア・プリフェッチ・インクリメント・アドレス２１４を選択する。７１４へ進んで、二重機能加算器２２４は、ハードウェア・プリフェッチ・アドレスを生成するために、７１２からの選択された値を、ロード／ストア・アドレスに加える。７１４においてハードウェア・プリフェッチ・アドレスを計算すると、マルチプレクサ２２８は、７１６においてデータキャッシュ２３２にアクセスするために、ハードウェア・プリフェッチ・アドレスを選択しても良い。先に述べたように、マルチプレクサ２２８によるハードウェア・プリフェッチ・アドレスの選択及びハードウェア・プリフェッチの連続的な実行は、その後の実行サイクルにおいて実行されても良い。
【００４３】
７０８において、ハードウェア・プリフェッチが実行されないとプロセッサが判定する場合には、本処理は７１８へ移動する。７１８において、マルチプレクサ２１８は、レジスタファイルからの第２のＡＬＵオペランド２２２又は即値ＡＬＵオペランド２２０を選択する。一つの実施形態において、オペレーションは、オペランドがレジスタファイルから検索されるべきか（例えば、オペランドのためのレジスタ・ファイル・アドレスをリストすることによって）又は定数か（例えば、オペランドは定数であり、レジスタ・ファイル・アドレスでない）をリストする。マルチプレクサ２０８は、レジスタファイルからの第１のＡＬＵオペランド２０４を選択する。算術演算のために加えられるために異なるオペランドを選択すると、７２０において、二重機能加算器２２４は、算術演算を実行して算術演算値を生成するために、マルチプレクサ２１８からの選択されたオペランドを、レジスタファイルからのオペランド２０４に加える。
【００４４】
図８を参照して、本フローチャートは、ハードウェア・プリフェッチ・アドレス及びロード／ストア・アドレスが二重機能加算器４１４（図４−５）により計算される方法８００を説明する。８０２から始まって、プロセッサは、ロード／ストア演算が実行されるかどうか判定する。ロード／ストア演算が実行される場合には、８０４において、マルチプレクサ４１２は、レジスタファイルからのメモリオペランド４３２を選択し、マルチプレクサ４１０は、即値オペランド４２８を選択する。８０６へ進んで、二重機能加算器４１４は、ロード／ストア・アドレスを作成するために、マルチプレクサ４１２及び４１０の出力（それぞれ、メモリオペランド４３２及び即値オペランド４２８）を加算する。８０６においてロード／ストア・アドレスを計算すると、８０８において、マルチプレクサ４１６（図４）又は５０２（図５）は、そのロード／ストア・アドレスを、データキャッシュ４２０にアクセスする際のメモリ・アドレス４１８として選択する。
【００４５】
８０２においてロード／ストアが実行されないとプロセッサが判定する場合には、８１０において、プロセッサは、ハードウェア・プリフェッチが実行されるかどうか判定する。ハードウェア・プリフェッチが実行される場合には、８１２において、マルチプレクサ４１２は、レジスタファイルからのメモリオペランド４３２を選択し、マルチプレクサ４１０は、即値オペランド４２８を選択する。８１４へ進んで、二重機能加算器４１４は、ロード／ストア・アドレスを生成するために、マルチプレクサ４１２及び４１０の出力（それぞれ、メモリオペランド４３２及び即値オペランド４２８）を加算する。ロード／ストア・アドレスを計算すると、８１６において、マルチプレクサ４０６及び４１０は、計算されたロード／ストア・アドレスに加えられるために、ハードウェア・プリフェッチ・デクリメント・アドレス４０２又はハードウェア・プリフェッチ・インクリメント・アドレス４０４を選択する。一つの実施形態において、マルチプレクサ４１２は、計算されたロード／ストア・アドレスを選択する。ロード／ストア・アドレスの計算の後のマルチプレクサ４１２によるロード／ストア・アドレスの選択及びハードウェア・プリフェッチの連続的な実行は、その後の実行サイクルにおいて実行されても良い。８１８へ進んで、二重機能加算器４１４は、ハードウェア・プリフェッチ・アドレスを生成するために、８１６からの選択されたハードウェア・インクリメント／デクリメント・アドレスを、ロード／ストア・アドレスに加える。８１８においてハードウェア・プリフェッチ・アドレスを計算すると、８２０において、マルチプレクサ４１６（図４）又は５０２（図５）は、データキャッシュ４２０にアクセスするために、ハードウェア・プリフェッチ・アドレスを選択しても良い。
【００４６】
８１０においてハードウェア・プリフェッチが実行されないとプロセッサが判定するならば、本処理は８２２へ移動する。８２２において、マルチプレクサ４２４は、レジスタファイルからの第２のＡＬＵオペランド１２８又は即値ＡＬＵオペランド１３０を選択する。一つの実施形態において、オペレーションは、オペランドがレジスタファイルから検索されるべきか（例えば、オペランドのためのレジスタ・ファイル・アドレスをリストすることによって）又は定数か（例えば、オペランドは定数であり、レジスタ・ファイル・アドレスでない）をリストする。マルチプレクサ４１２及び４１６（図４）又は５０２（図５）は、レジスタファイルからの第１のＡＬＵオペランド１０２を選択する。算術演算のために加えられるために異なるオペランドを選択すると、８２４において、ＡＬＵ加算器４２２は、算術演算を実行して算術演算値を生成するために、マルチプレクサ４２４からの選択されたオペランドを、レジスタファイルからのオペランド１０２に加える。
【００４７】
図９を参照して、本フローチャートは、システム３００（図３）及び５００（図５）が、ポスト・インクリメント・アドレスをリードするためにレジスタファイルにアクセスすることなく、ポスト・インクリメント・アドレスを計算して使用するために、ポスト・インクリメント・アドレスのためにフィードバックループを含む方法９００を示す。９０２から始まって、加算器２２４（図３）又は４２２（図５）は、レジスタファイルにライトされるポスト・インクリメント・アドレスを計算する。そして、プロセッサは、計算されたポスト・インクリメント・アドレスを、レジスタファイルにストアしても良い。ポスト・インクリメント・アドレスを計算すると、９０４において、プロセッサは、ポスト・インクリメント・アドレスが、メモリからロードされる値を指し示しているか又は以降の実行サイクルにおいて使用される値を指し示しているか判定する。例えば、ポスト・インクリメントが、メモリ中の、以降のインストラクションのための入力オペランドを指し示す場合には、該入力オペランドは、以降の実行サイクルの間に使用するためにロードされる値である。
【００４８】
ポスト・インクリメント・アドレスが、ロードされるオペランドを指し示す場合には、９０６において、計算されたポスト・インクリメント・アドレスは、レジスタファイルにアクセスすることなく、データキャッシュ２３２（図３）又は４２０（図５）にアクセスするために用いられる。それゆえに、プロセッサは、システム３００又は５００において存続するポスト・インクリメント・アドレスを用いることによって、レジスタファイルからポスト・インクリメント・アドレスをリードすることをスキップする。システム３００（図３）について、加算器２２４により前の実行サイクルの間に計算されたポスト・インクリメント・アドレスは、望まれるオペランドを検索するためにデータキャッシュ２３２にアクセスするため、マルチプレクサ３０２及び２２８による選択のために、マルチプレクサ３０２に入力される。システム５００（図５）について、前の実行サイクルの間に加算器４２２により計算されたポスト・インクリメント・アドレスは、望まれるオペランドを検索するためにデータキャッシュ４２０にアクセスするため、マルチプレクサ５０２による選択のために、マルチプレクサ５０２に入力される。
【００４９】
９０４において、計算されたポスト・インクリメント・アドレスが、ロードされるオペランドを指し示さない場合には、システム３００（図３）又は５００（図５）は、次の実行サイクルにおいてポスト・インクリメント・アドレスを必要とせず、それゆえ、実行されるオペレーションのタイプに応じて、望まれるオペランドのためにレジスタファイルにアクセスする。
【００５０】
上記の説明された特徴を含む例であるデバイス
二重機能加算器及びポスト・インクリメント・アドレスのフィードバックループを含むシステムは、例えばデジタル・シグナル・プロセッサのような任意のプロセッサの中に含まれても良い。図１０−１４の一般的なダイアグラムは、ロード／ストア演算及びハードウェア・プリフェッチ、ハードウェア・プリフェッチ及び算術演算を実行すること、又は、プロセッサのレジスタファイルにアクセスすることなくポスト・インクリメント・アドレスを使用することを支援するために、二重機能加算器及び／又はポスト・インクリメント・フィードバックループを組み込んでもよい例であるデバイスを示す。ダイアグラムは、例であるデバイスのプロセッサに二重機能加算器を含むものとして示す。
【００５１】
図１０は、ポータブル通信デバイス１０００の例示的な実施形態を示す図である。図１０の一般的なダイアグラム中に示されるように、ポータブル通信デバイスは、デジタル・シグナル・プロセッサ（ＤＳＰ）１００４を含むオンチップ・システム１００２を含む。図１０の一般的なダイアグラムはまた、デジタル・シグナル・プロセッサ１００４及びディスプレイ１００８に接続された、ディスプレイ・コントローラ１００６を示す。さらに、入力デバイス１０１０が、ＤＳＰ１００４に接続される。図示されるように、メモリ１０１２が、ＤＳＰ１００４に接続される。さらに、符号器／復号器（ＣＯＤＥＣ）１０１４が、ＤＳＰ１００４に接続されても良い。スピーカ１０１６及びマイクロフォン１０１８が、ＣＯＤＥＣ１０１４に接続されても良い。
【００５２】
図１０の一般的なダイアグラムは、さらに、デジタル・シグナル・プロセッサ１００４及び無線アンテナ１０２２に接続された、無線コントローラ１０２０を示す。特定の実施形態において、電源１０２４が、オンチップ・システム６０２に接続される。さらに、特定の実施形態において、図６中に示されるように、ディスプレイ６２６、入力デバイス６３０、スピーカ１０１６、マイクロフォン１０１８、無線アンテナ１０２２及び電源１０２４は、オンチップ・システム１００２に外付けされる。しかし、それぞれはオンチップ・システム１００２のコンポーネントに接続される。特定の実施形態において、前述のとおり、ＤＳＰ１００４は、ハードウェア・プリフェッチ・アドレス及び算術演算値の両方又はハードウェア・プリフェッチ・アドレス及びロード／ストア・アドレスの両方を計算する二重機能加算器１０８０を含む。
【００５３】
図１１は、携帯電話１１００の例示的な実施形態を示す図である。図示されるように、携帯電話１１００は、連結されるデジタル・ベースバンド・プロセッサ１１０４及びアナログ・ベースバンド・プロセッサ１１０６を含む、オンチップ・システム１１０２を含む。特定の実施形態において、デジタル・ベースバンド・プロセッサ１１０４は、デジタル・シグナル・プロセッサである。図１１の一般的なダイアグラム中に示されるように、ディスプレイ・コントローラ１１０８及びタッチスクリーン・コントローラ１１１０が、デジタル・ベースバンド・プロセッサ１１０４に接続される。次に、オンチップ・システム１１０２に外付けされるタッチスクリーン・ディスプレイ１１１２が、ディスプレイ・コントローラ１１０８及びタッチスクリーン・コントローラ１１１０に接続される。
【００５４】
図１１の一般的なダイアグラムは、さらに、デジタル・ベースバンド・プロセッサ１１０４に接続された、ビデオ・エンコーダ１１１４、例えば、位相反転線（phase alternating line）（ＰＡＬ）符号器、順次式カラーメモリ（sequential couleur a memoire）（ＳＥＣＡＭ）符号器、又は、全米テレビジョン放送方式標準化委員会（national television system(s) committee）（ＮＴＳＣ）符号器を示す。さらに、ビデオ・アンプ１１１６が、ビデオ・エンコーダ１１１４及びタッチスクリーン・ディスプレイ１１１２に接続される。また、ビデオポート１１１８が、ビデオ・アンプ１１１６に接続される。図１１の一般的なダイアグラム中に表されるように、ユニバーサルシリアルバス（ＵＳＢ）コントローラ１１２０が、デジタル・ベースバンド・プロセッサ１１０４に接続される。また、ＵＳＢポート１１２２が、ＵＳＢコントローラ１１２０に接続される。メモリ１１２４及び加入者識別モジュール（ＳＩＭ）カード１１２６がまた、デジタル・ベースバンド・プロセッサ１１０４に接続されても良い。さらに、図１１の一般的なダイアグラムに示されるように、デジタル・カメラ１１２８が、デジタル・ベースバンド・プロセッサ１１０４に接続されても良い。例示的な実施形態において、デジタル・カメラ１１２８は、電荷結合素子（ＣＣＤ）カメラ又は相補型金属酸化膜半導体（ＣＭＯＳ）カメラである。
【００５５】
図１１の一般的なダイアグラム中に更に示されるように、ステレオ・オーディオＣＯＤＥＣ１１３０が、アナログ・ベースバンド・プロセッサ１１０６に接続されても良い。さらに、オーディオ・アンプ１１３２が、ステレオ・オーディオＣＯＤＥＣ１１３０に接続されても良い。例示的な実施形態では、第１のステレオ・スピーカ１１３４及び第２のステレオ・スピーカ１１３６が、オーディオ・アンプ１１３２に接続される。マイクロフォン・アンプ１１３８がまた、ステレオ・オーディオＣＯＤＥＣ１１３０に接続されても良い。さらに、マイクロフォン１１４０が、マイクロフォン・アンプ１１３８に接続されても良い。特定の実施形態において、周波数変調（ＦＭ）ラジオ・チューナー１１４２が、ステレオ・オーディオＣＯＤＥＣ１１３０に接続されても良い。また、ＦＭアンテナ１１４４が、ＦＭ無線チューナー１１４２に接続される。さらに、ステレオ・ヘッドホン１１４６が、ステレオ・オーディオＣＯＤＥＣ１１３０に接続されても良い。
【００５６】
図１１の一般的なダイアグラムは、更に、無線周波数（ＲＦ）トランシーバ１１４８がアナログ・ベースバンド・プロセッサ１１０６に接続されても良いことを示す。ＲＦスイッチ１１５０が、ＲＦトランシーバ１１４８及びＲＦアンテナ１１５２に接続されても良い。キーパッド１１５４が、アナログ・ベースバンド・プロセッサ１１０６に接続されても良い。また、マイクロフォン付きモノラル・ヘッドセット１１５６が、アナログ・ベースバンド・プロセッサ１１０６に接続されても良い。さらに、バイブレータ・デバイス１１５８が、アナログ・ベースバンド・プロセッサ１１０６に接続されても良い。図１１の一般的なダイアグラムはまた、電源１１６０がオンチップ・システム１１０２に接続されても良いことを示す。特定の実施形態において、電源１１６０は、携帯電話１１００の様々なコンポーネントに電力を供給する直流（ＤＣ）電源である。さらに、特定の実施形態において、電源は、ＡＣ電源ソースに接続された、交流（ＡＣ）・ＤＣ変換から得られる充電式ＤＣバッテリー又はＤＣ電源である。
【００５７】
図１１の一般的なダイアグラム中に表されるように、タッチスクリーン・ディスプレイ１１１２、ビデオポート１１１８、ＵＳＢポート１１２２、カメラ１１２８、第１のステレオ・スピーカ１１３４、第２のステレオ・スピーカ１１３６、マイクロフォン１１４０、ＦＭアンテナ１１４４、ステレオ・ヘッドホン１１４６、ＲＦスイッチ１１５０、ＲＦアンテナ１１５２、キーパッド１１５４、モノラル・ヘッドセット１１５６、バイブレーター１１５８及び電源１１６０は、オンチップ・システム１１０２に外付けされても良い。特定の実施形態において、前述のとおり、デジタル・ベースバンド・プロセッサ１１０４は、ハードウェア・プリフェッチ・アドレス及び算術演算値の両方又はハードウェア・プリフェッチ・アドレス及びロード／ストア・アドレスの両方を計算する二重機能加算器１１８０を含む。
【００５８】
図１２は、無線インターネットプロトコル（ＩＰ）電話１２００の例示的な実施形態を示す図である。図示されるように、無線ＩＰ電話１２００は、デジタル・シグナル・プロセッサ（ＤＳＰ）１２０４を含むオンチップ・システム１２０２を含む。ディスプレイ・コントローラ１２０６が、ＤＳＰ１２０４に接続されても良い。また、ディスプレイ１２０８が、ディスプレイ・コントローラ１２０６に接続される。例示的な実施形態において、ディスプレイ１２０８は、液晶ディスプレイ（ＬＣＤ）である。図１２は、キーパッド１２１０がＤＳＰ１２０４に接続されても良いことを更に示す。
【００５９】
フラッシュメモリ１２１２が、ＤＳＰ１２０４に接続されても良い。シンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）１２１４、スタティックランダムアクセスメモリ（ＳＲＡＭ）１２１６及び電気的消去可能プログラマブルリードオンリーメモリ（ＥＥＰＲＯＭ）１２１８が、ＤＳＰ１２０４に接続されても良い。図１２の一般的なダイアグラムはまた、発光ダイオード（ＬＥＤ）１２２０がＤＳＰ１２０４に接続されても良いことを示す。さらに、特定の実施形態において、ボイスＣＯＤＥＣ１２２２が、ＤＳＰ１２０４に接続されても良い。アンプ１２２４が、ボイスＣＯＤＥＣ１２２２に接続されても良い。また、モノラル・スピーカ１２２６が、アンプ１２２４に接続されても良い。図１２の一般的な図は、さらに、ボイスＣＯＤＥＣ１２２２に接続されるモノラル・ヘッドセット１２２８を示す。特定の実施形態において、モノラル・ヘッドセット１２２８は、マイクロフォンを含む。
【００６０】
無線ローカルエリアネットワーク（ＷＬＡＮ）ベースバンド・プロセッサ１２３０が、ＤＳＰ１２０４に接続されても良い。ＲＦトランシーバ１２３２が、ＷＬＡＮベースバンド・プロセッサ１２３０に接続されても良い。また、ＲＦアンテナ１２３４が、ＲＦトランシーバ１２３２に接続されても良い。特定の実施形態において、Ｂｌｕｅｔｏｏｔｈ（登録商標）コントローラ１２３６がまた、ＤＳＰ１２０４に接続されても良く、また、Ｂｌｕｅｔｏｏｔｈアンテナ１２３８がコントローラ１２３６に接続されても良い。図１２の一般的なダイアグラムはまた、ＵＳＢポート１２４０がＤＳＰ１２０４に接続されてもよいことを示す。さらに、電源１２４２はオンチップ・システム１２０２に接続して、電力を無線ＩＰ電話１２００の様々なコンポーネントへ供給する。
【００６１】
図１２の一般的なダイアグラム中に示されるように、ディスプレイ１２０８、キーパッド１２１０、ＬＥＤ１２２０、モノラル・スピーカ１２２６、モノラル・ヘッドセット１２２８、ＲＦアンテナ１２３４、Ｂｌｕｅｔｏｏｔｈアンテナ１２３８、ＵＳＢポート１２４０及び電源１２４２は、オンチップ・システム１２０２に外付けされても良く、また、オンチップ・システム１２０２の１又は複数のコンポーネントに接続されても良い。特定の実施形態において、前述のとおり、ＤＳＰ１２０４は、ハードウェア・プリフェッチ・アドレス及び算術演算値の両方又はハードウェア・プリフェッチ・アドレス及びロード／ストア・アドレスの両方を計算する二重機能加算器１２８０を含む。
【００６２】
図１３は、ポータブル・デジタル・アシスタント（ＰＤＡ）９００の例示的な実施形態を示す図である。図示されるように、ＰＤＡ１３００は、デジタル・シグナル・プロセッサ（ＤＳＰ）１３０４を含むオンチップ・システム１３０２を含む。タッチスクリーン・コントローラ１３０６及びディスプレイ・コントローラ１３０８が、ＤＳＰ１３０４に接続される。さらに、タッチスクリーン・ディスプレイ１３１０が、タッチスクリーン・コントローラ１３０６に接続され、また、ディスプレイ・コントローラ１３０８に接続される。図１３の一般的なダイアグラムはまた、キーパッド１３１２がＤＳＰ１３０４に接続されてもよいことを示す。
【００６３】
特定の実施形態において、ステレオ・オーディオＣＯＤＥＣ１３２６が、ＤＳＰ１３０４に接続されても良い。第１のステレオ・アンプ１３２８が、ステレオ・オーディオＣＯＤＥＣ１３２６に接続されても良く、また、第１のステレオ・スピーカ１３３０が、第１のステレオ・アンプ１３２８に接続されても良い。さらに、マイクロフォン・アンプ１３３２が、ステレオ・オーディオＣＯＤＥＣ１３２６に接続されても良く、また、マイクロフォン１３３４が、マイクロフォン・アンプ１３３２に接続されても良い。図１３の一般的なダイアグラムは、第２のステレオ・アンプ１３３６がステレオ・オーディオＣＯＤＥＣ１３２６に接続されてもよく、また、第２のステレオ・スピーカ１３３８が第２のステレオ・アンプ１３３６に接続されてもよいことを示す。特定の実施形態において、ステレオ・ヘッドホン１３４０はまた、ステレオ・オーディオＣＯＤＥＣ１３２６に接続されても良い。
【００６４】
図１３の一般的なダイアグラムはまた、８０２．１１コントローラ１３４２がＤＳＰ１３０４に接続されてもよく、また、８０２．１１アンテナ１３４４は、８０２．１１コントローラ１３４２に接続されてもよいことを示す。さらに、Ｂｌｕｅｔｏｏｔｈコントローラ１３４６が、ＤＳＰ１３０４に接続されても良く、また、Ｂｌｕｅｔｏｏｔｈアンテナ１３４８が、Ｂｌｕｅｔｏｏｔｈコントローラ１３４６に接続されても良い。ＵＳＢコントローラ１３５０が、ＤＳＰ１３０４に接続されても良く、また、ＵＳＢポート１３５２が、ＵＳＢコントローラ１３５０に接続されても良い。さらに、スマートカード１３５４（例えば、マルチメディア・カード（ＭＭＣ）又はセキュア・デジタル・カード（ＳＤ））が、ＤＳＰ１３０４に接続されても良い。さらに、電源１３５６は、オンチップ・システム１３０２に接続されても良く、また、ＰＤＡ１３００の様々なコンポーネントに電力を供給しても良い。
【００６５】
図１３の一般的なダイアグラム中に示されるように、ディスプレイ１３１０、キーパッド１３１２、ＩｒＤＡポート１３２２、デジタル・カメラ１３２４、第１のステレオ・スピーカ１３３０、マイクロフォン１３３４、第２のステレオ・スピーカ１３３８、ステレオ・ヘッドホン１３４０、８０２．１１アンテナ１３４４、Ｂｌｕｅｔｏｏｔｈアンテナ１３４８、ＵＳＢポート１３５２及び電源１３５０は、オンチップ・システム１３０２に外付けされても良く、また、オンチップ・システムの上で１又は複数のコンポーネントに接続されても良い。特定の実施形態において、前述のとおり、ＤＳＰ１３０４は、ハードウェア・プリフェッチ・アドレス及び算術演算値の両方又はハードウェア・プリフェッチ・アドレス及びロード／ストア・アドレスの両方を計算する二重機能加算器１３８０を含む。
【００６６】
図１４は、オーディオ・ファイル・プレーヤー（例えば、ＭＰ３プレーヤー）１４００の例示的な実施形態を示す図である。図示されるように、オーディオ・ファイル・プレーヤー１４００は、デジタル・シグナル・プロセッサ（ＤＳＰ）１４０４を含むオンチップ・システム１４０２を含める。ディスプレイ・コントローラ１４０６が、ＤＳＰ１４０４に接続されても良い。また、ディスプレイ１４０８が、ディスプレイ・コントローラ１４０６に接続される。例示的な実施形態において、ディスプレイ１４０８は、液晶ディスプレイ（ＬＣＤ）である。キーパッド１４１０が、ＤＳＰ１４０４に接続されても良い。
【００６７】
図１４の一般的なダイアグラム中に更に表されるように、フラッシュメモリ１４１２及びリードオンリーメモリ（ＲＯＭ）１４１４はＤＳＰ１４０４に接続されても良い。さらに、特定の実施形態において、オーディオＣＯＤＥＣ１４１６が、ＤＳＰ１４０４に接続されても良い。アンプ１４１８が、オーディオＣＯＤＥＣ１４１６に接続されても良く、また、モノラル・スピーカ１４２０が、アンプ１４１８に接続されても良い。図１４の一般的なダイアグラムは、マイクロフォン入力１４２２及びステレオ入力１４２４がまたオーディオＣＯＤＥＣ１４１６に接続されてもよいことを更に示す。特定の実施形態において、ステレオ・ヘッドホン１４２６がまた、オーディオＣＯＤＥＣ１４１６に接続されても良い。
【００６８】
ＵＳＢポート１４２８及びスマートカード１４３０が、ＤＳＰ１４０４に接続されても良い。さらに、電源１４３２は、オンチップ・システム１４０２に接続されても良く、また、オーディオ・ファイル・プレーヤー１４００の様々なコンポーネントに電力を供給しても良い。
【００６９】
図１４の一般的なダイヤグラムに示されるように、ディスプレイ１４０８、キーパッド１４１０、モノラル・スピーカ１４２０、マイクロフォン入力１４２２、ステレオ入力１４２４、ステレオ・ヘッドホン１４２６、ＵＳＢポート１４２８及び電源１４３２は、オンチップ・システム１４０２に外付けされ、また、オンチップ・システム１４０２の上で１又は複数のコンポーネントに接続される。特定の実施形態において、前述のとおり、ＤＳＰ１４０４は、ハードウェア・プリフェッチ・アドレス及び算術演算値の両方又はハードウェア・プリフェッチ・アドレス及びロード／ストア・アドレスの両方を計算する二重機能加算器１４８０を含む。
【００７０】
一般
本明細書で開示される発明の概念の実施形態の前述の説明は、例示及び説明の目的だけのために表されたものであり、また、余すところのないものであることを意図されたものではなく又は開示される発明の概念を本明細書で開示される正確なフォームに制限することを意図されたものではない。多数の修正及び翻案（adaptations）は、本明細書で開示される発明の概念の精神及び範囲から逸脱することなく、当業者にとって明らかである。
【図１】
2011513858.tif 000003
【図２】
2011513858.tif 000004
【図３】
2011513858.tif 000005
【図４】
2011513858.tif 000006
【図５】
2011513858.tif 000007
【図６】
2011513858.tif 000008
【図７】
2011513858.tif 000009
【図８】
2011513858.tif 000010
【図９】
2011513858.tif 000011
【図１０】
2011513858.tif 000012
【図１１】
2011513858.tif 000013
【図１２】
2011513858.tif 000014
【図１３】
2011513858.tif 000015
【図１４】
2011513858.tif 000016
【国際調査報告】
2011513858.tif 000017
2011513858.tif 000018