(58)【調査した分野】(Int.Cl.,DB名)
前記1つ又は複数のリザベーションステーションの1つは、前記所定のエントリの前記並び換えバッファエントリ番号の識別情報とともに、前記所定のロードオペレーションを記憶する、請求項3に記載のプロセッサ。
前記所定のロードオペレーションよりも古いすべてのストアオペレーションが発行されたことに応じて、リザベーションステーションから前記所定のロードオペレーションを発行することを許可する段階を更に含む、請求項11に記載の方法。
【発明を実施するための形態】
【0012】
以下の説明において、多数の特定の詳細内容が明記され、本明細書に示される方法及び機構の完全な理解が可能になっている。当業者であれば、これらの特定の詳細内容がなくても種々の実施形態を実施できることを理解できるはずである。例えば、公知の構造、構成要素、信号、コンピュータプログラム命令、及び技術は、本明細書で説明する手法が不明確になるのを避けるために詳細に示されていない。簡潔かつ明瞭な説明のために、図面に示す要素は、必ずしも縮尺通りに示されていないことを理解されたい。例えば、一部の要素の寸法は、他の要素に比べて誇張されている。
【0013】
本明細書は、「1つの実施形態」という記載を含む。「1つの実施形態において」という語句が異なる文脈で出現する場合は必ずしも同じ 実施形態に言及するものではない。特定の特徴、構成、又は特性は、本開示に適合する任意の適切な方法で組み合わせることができる。更に、本出願全体にわたって使用する場合、用語「〜できる(may)」は、必須の意味(つまり、必要があるという意味)ではなく、許可するという意味(つまり、可能性があるという意味で使用される)。同様に、用語「〜を含む(include、including、includes)」は、包含するという意味であるが限定されるものではない。
【0014】
専門用語
以下に、本開示(請求項を含む)に見出される用語に関する定義及び/又は文脈を提示する。
【0015】
「備える(Comprising)」。この用語は非制限的である。請求項で使用する場合、付加的な構造又はステップを除外するものではない。「ロードストア依存関係予測器を備えるプロセッサ〜」という請求項を考える。このような請求項は、プロセッサが付加的な構成要素(例えば、キャッシュ、フェッチユニット、実行ユニット)を含むことを除外するものではない。
【0016】
「〜ように構成された(Configured To)」。種々のユニット、回路、又は他の構成要素は、1つ又は複数のタスクを遂行するように「構成される」ものとして説明され又は請求される。この点について、「構成される」とは、ユニット/回路/構成要素が動作中に1つ又は複数のタスクを遂行する構造体(例えば、回路)を含むことを指示することにより、構造体を暗示するのに使用される。従って、ユニット/回路/構成要素は、その指定のユニット/回路/構成要素が現在動作していない(例えば、オンでない)ときでも、タスクを遂行するように構成されると言うことができる。「構成される」の言語と共に使用されるユニット/回路/構成要素は、ハードウェア、例えば、回路、動作を具現化するために実行できるプログラム命令を記憶するメモリ、等を含む。ユニット/回路/構成要素が1つ又はそれ以上のタスクを遂行するように「構成された」という表現は、そのユニット/回路/構成要素に関して35U.S.C.§112、第6節を引用しないことが明確に意図される。更に、「構成される」は、問題とするタスクを遂行できるようにソフトウェア及び/又はファームウェア(例えば、ソフトウェアを実行するFPGA又は汎用プロセッサ)を動作することでオペレーションされるジェネリック構造体(例えば、ジェネリック回路)を含む。また、「構成される」は、1つ又はそれ以上のタスクを具現化又は遂行するデバイス(例えば、集積回路)を製造するように製造プロセス(例えば、半導体製造ファシリティ)を適用することも含む。
【0017】
「〜に基づく(Based On)」。ここで使用するこの用語は、決定に影響する1つ以上のファクタを記述するのに使用される。この用語は、決定に影響する付加的なファクタを除外するものではない。即ち、決定は、これらのファクタのみに基づいてもよいし、又はこれらのファクタに少なくとも一部分基づくものでもよい。「Bに基づいてAを決定する(determine A based on B)」という句について考える。Bは、Aの決定に影響するファクタであるが、そのような句は、Aの決定を、Cに基づくことからも除外しない。他の例では、Aは、Bのみに基づいて決定されてもよい。
【0018】
図1を参照すると、集積回路(IC)の一部の1つの実施形態を示すブロック図が示されている。図示の実施形態において、IC10は、プロセッサコンプレックス12、メモリコントローラ22、及びメモリ物理的インタフェース回路(PHY)24及び26を含む。また、IC10は
図1に示されていない多数の他の構成要素を含み得ることに留意されたい。種々の実施形態において、IC10は、システムオンチップ(SoC)、特定用途向け集積回路(ASIC)、又は装置と呼ぶこともができる。
【0019】
プロセッサコンプレックス12は、中央処理装置(CPU)14及び16、レベル2(L2)キャッシュ18、及びバスインタフェースユニット(BIU)20を含むことができる。他の実施形態において、プロセッサコンプレックス12は、他の多数のCPUを含むことができる。また、CPU14及び16は、プロセッサ又はコアと呼ぶことができる。CPU14及び16は、L2キャッシュ18に接続することができる。L2キャッシュ18は、BIU20に接続することができ、BIU20は、メモリコントローラ22に接続することができる。他の実施形態は、さらなるレベルのキャッシュ(レベル3(L3)キャッシュ)を含むことができる。プロセッサコンプレックス12は、
図1に示されていない他の構成要素を含み得ることに留意されたい。
【0020】
CPU14及び16は、命令セットアーキテクチャで定義される命令を実行する回路を含むことができる。特に、命令を含む1つ又はそれ以上のプログラムは、CPU14及び16で実行できる。何らかの命令セットアーキテクチャは、種々の実施形態において実行することができる。例えば、1つの実施形態において、PowerPC(登録商標)命令セットアーキテクチャを実行することができる。他の例示的な命令セットアーキテクチャとしては、ARM(登録商標)命令セット、MIPS(登録商標)命令セット、SPARC(登録商標)命令セット、x86命令セット(IA−32とも呼ばれる)、IA−64命令セット等を挙げることができる。
【0021】
種々の実施形態において、CPU14及び16は、異なる順序で命令を実行することができ、このことは順序付け違反を引き起こす場合がある。例えば、ロード及びストア命令の場合、順序付け違反は、重なっている物理アドレスで古いストアの前に若いロードを実行した場合に発生する。このタイプの順序付け違反の反復を避けるか又は防止するために、種々の技術を用いて、若いロードが依存関係のある古いストアの前に実行されることを防止するようになっている。1つの実施形態において、CPU14及び16の各々は、依存関係があることが予測又は期待され、異なる順序で実行される傾向がある、ロードストアペアを追跡するためのロードストア依存関係予測器を含むことができる。1つの実施形態において、依存関係のロードストアペアは、テーブルに記録することができる。
【0022】
時として予測器はロードストアペアを訓練することができるが、依存関係は例外的とすることができる。このことは、ロード命令とストア命令との間の依存関係がアドレスに基づくことができ、ロード及びストア命令のアドレスが経時的に変わる場合があるので起こる。換言すると、ロードストア依存関係は動的である可能性がある。テーブルの一部のエントリは所定期間後には正確でない可能性があり、不正確なエントリに関する依存関係を実行することは、プロセッサが不必要にロードオペレーションを遅延させることにつながる。
【0023】
陳腐化したエントリがテーブルに蓄積することを防止するために、及び陳腐化したエントリに対応するロードストアペアに対して依存関係が強制されることを防止するために、テーブルの各エントリは、依存関係予測の強度を表すインジケータを含むこともできる。インジケータは、依存関係が所定のロードストアペアに対して有効であるか否かを決めることができる。また、インジケータは、テーブルエントリの置換えポリシーに影響を及ぼすことができ、インジケータ値が低いエントリは、新しいエントリがテーブルに割り振られる際に置換することができる。
【0024】
また、CPU14及び16の各々は、レベル1(L1)キャッシュ(図示せず)を含むことができ、各L1キャッシュは、L2キャッシュ18に接続することができる。1つの実施形態において、L2キャッシュ18は、CPU14及び16による短待ち時間のアクセスに関する命令及びデータをキャッシュするように構成することができる。L2キャッシュ18は、任意の容量及び構成(例えば、ダイレクトマップ方式、セットアソシアティブ方式)を含むことができる。L2キャッシュ18は、BIU20経由でメモリコントローラ22に接続することができる。また、BIU20は、CPU14及び16、並びにL2キャッシュ18を種々の他のデバイス及びブロックに接続するための、種々の他の論理構成を含むことができる。
【0025】
メモリコントローラ22は、任意数のメモリポートを含むことができ、メモリにインタフェース接続するように構成される回路を含むことができる。例えば、メモリコントローラ22は、同期式DRAM(SDRAM)、ダブルデータレート(DDR)SDRAM、DDR2 SDRAM、ラムバスDRAM(RDRAM)等の、ダイナミックランダムアクセスメモリ(DRAM)にインタフェース接続するように構成することができる。また、メモリコントローラ22は、メモリ物理的インタフェース回路(PHY)24及び26に接続することができる。メモリPHY24及び26は、メモリコントローラ22に接続することができる任意数のメモリPHYを表す。メモリPHY24及び26は、メモリ素子(図示せず)にインタフェース接続するように構成することができる。
【0026】
他の実施形態は、
図1及び/又は他の構成要素に示す構成要素のサブセット又は上位セットを含む、他の構成要素の組み合わせを含み得ることに留意されたい。
図1は所定の構成要素の例を示すことができるが、他の実施形態は、2つ又はそれ以上の所定の構成要素の例を示すことができる。同様に、詳細な説明の全体にわたって、所定の構成要素の1つの例だけが示されている場合でも2つ又はそれ以上の例を含むことができ、及び/又は複数の例が示される場合でも1つの例だけを含む実施形態を用いることができる。
【0027】
図2を参照すると、プロセッサコアの1つの実施形態が示されている。コア30は、プロセッサコアの1つの実施例であり、コア30は、
図1のプロセッサコンプレックス12のようなプロセッサコンプレックス内で用いることができる。1つの実施形態において、
図1のCPU14及び16の各々は、コア30の構成要素及び機能を含むことができる。コア30は、フェッチ−デコード(FED)ユニット32、マップ−ディスパッチユニット36、メモリ管理ユニット(MMU)40、コアインタフェースユニット(CIF)42、実行ユニット44、及びロードストアユニット(LSU)46を含むことができる。コア30は、
図2に示されていない他の構成要素及びインタフェースを含み得ることを理解されたい。
【0028】
FEDユニット32は、メモリから命令を読み取りレベル1(L1)命令キャッシュ34に格納するように構成される回路を含むことができる。L1命令キャッシュ34は、コア30が実行することになる命令を記憶するためのキャッシュメモリとすることができる。L1命令キャッシュ34は、任意の容量及び構成(例えば、ダイレクトマップ方式、セットアソシアティブ方式、フルアソシアティブ方式)を有することができる。更に、L1命令キャッシュ34は、任意のキャッシュラインサイズを有することができる。また、FEDユニット32は、分岐命令を予測して予測した経路をフェッチダウンする分岐予測ハードウェアを含むことができる。また、FEDユニット32は、リダイレクトすることができる(例えば、予測ミス、除外、割り込み、フラッシュ等により)。
【0029】
また、FEDユニット32は、命令を命令オペレーション(op)にデコードするように構成することができる。一般に、命令オペレーションは、実行ユニット44及びLSU46に含まれるハードウェアが実行することができるオペレーションとすることができる。各命令は、実行されると、命令セットアーキテクチャによる命令に関して定義されるオペレーションの遂行につながる、1つ又はそれ以上の命令オペレーションに変換することができる。FEDユニット32は、複数の命令を並行にデコードするように構成することができる。
【0030】
いくつかの実施形態において、各命令は、単一の命令オペレーションにデコードすることができる。FEDユニット32は、命令タイプ、ソースオペランド等を特定するように構成することができ、デコードされた命令オペレーションの各々は、いくつかのデコード情報と一緒に命令を含むことができる。命令が単一の命令オペレーションに変換される別の実施形態において、各命令オペレーションは、単純に対応する命令又はその一部とすることができる(例えば、命令の1つ又は複数のオペコード)。いくつかの実施形態において、FEDユニット32は、命令に関する命令オペレーションを発生するための回路及び/又はマイクロコードの任意の組み合わせを含むことができる。例えば、比較的単純な命令オペレーション(例えば、命令ごとに1つ又は2つの命令オペレーション)の生成はハードウェアで処理することができるが、より広範な命令オペレーション(例えば、1つの命令に関して3つ以上の命令オペレーション)の生成はマイクロコードで処理することができる。他の実施形態において、FEDユニット32に含まれる機能性は、フェッチユニット、デコードユニット、及び/又は他のユニットのような2つ又はそれ以上の別個のユニットに分けることができる。
【0031】
デコードされた命令オペレーションは、マップ/ディスパッチユニット36に与えることができる。マップ/ディスパッチユニット36は、命令オペレーション及びアーキテクチャレジスタをコア30の物理レジスタにマッピングするように構成することができる。マップ/ディスパッチユニット36は、レジスタリネームを実行して、命令オペレーションからのマップソースレジスタアドレスを、リネームされたソースレジスタを特定するソースオペランド数にマッピングするようになっている。また、マップ/ディスパッチユニット36は、命令オペレーションを実行ユニット44及びLSU46内のリザベーションステーションにディスパッチするように構成することができる。マップ/ディスパッチユニット36は、ロードストア依存関係(LSD)予測器37及び並び換えバッファ(ROB)38を含むことができる。ディスパッチされる前に、命令オペレーションは、ROB38に書き込むことができる。ROB38は、順序通りに完遂できるまで命令オペレーションを保持するように構成することができる。各命令オペレーションには、ROB38の特定のエントリに対応するROBインデックス(RNUM)を割り当てることができる。RNUMは、コア30で進行中のオペレーションを追跡するために使用することができる。また、マップ/ディスパッチユニット36は、
図2には示されていない他の構成要素(例えば、マッパーアレイ、ディスパッチユニット、ディスパッチバッファ)を含むことができる。更に、他の実施形態において、マップ/ディスパッチユニット36に含まれる機能性は、マップユニット、ディスパッチユニット、及び/又は他のユニットのような、2つ又はそれ以上の別個のユニットに分けることができる。
【0032】
LSD予測器37は、依存関係のロードストア命令ペアを訓練して異なる順序になる可能性を予測するように構成することができる。LSD予測器37は、訓練されたロードストアペアに関するエントリを含むテーブルを備えることができ、各エントリは、ロード及びストア命令、並びに予測強度を特定する情報を含むことができる。1つの実施形態において、訓練イベントは、重なっている物理アドレスで古いストアの前に若いロードを実行することで引き起こされる順序付け違反である。1つの実施形態において、テーブルは、256−エントリが完全に結合した構造とすることができる。他の実施形態において、テーブルは他の数のエントリを有することができる。種々の実施形態において、テーブルは、テーブルの種々のフィールドに関して内容参照可能メモリ(CAM)とすることができる。
【0033】
依存関係のロードオペレーションとストアオペレーションとの間で順序違反がある場合、コア30は、リダイレクト及び再同期することができる。リダイレクトの結果として種々の修正動作を行うことができる。現段階では、再同期が生じた特定のロードストアペアに対して訓練を行うことができる。この特定のペアに関するエントリは、LSD予測器37に割り振ることができ、予測強度は高レベルに設定することができる。次に、コア30のパイプラインを通る次のパスにおいて、ロードストアペアからのストアがユニット36からディスパッチされる場合、ストアに関してLSD予測器37をサーチすることができる。適合するエントリを探して作動可能にすることができる。訓練されたロードストアペアからのロードがユニット36からディスパッチされると、ロードに関するLSD予測器37のサーチを行うことができ、ロードは作動可能になったエントリに適合することになる。次に、ロードは、依存関係を有するリザベーションステーションにディスパッチされることができ、ロードは、リザベーションステーションから発行される前にストア上で待機することになる。
【0034】
LSD予測器37は、エントリを作動可能にしたストアが、該ストアが発行される前に命令パイプラインからフラッシュされる場合、テーブルをクリーンアップするように構成することができる。例えば、故障した場合のような作動可能になったLSD予測器37のエントリを取り除く必要がある場合に、或るシナリオが可能である。ロードオペレーションは、フラッシュアウトされたストアオペレーションに依存してこれを待つことができ、このことはデッドロックしたコア30につながる。この場合、ストアオペレーションがコア30からフラッシュされる場合、フラッシュされたストアに対応する何らかの作動可能なエントリに関してLSD予測器37のテーブルをサーチすることができる。フラッシュされたストアに関して見つかった何らかの適合するエントリを取り除くことができる。1つの実施形態において、LSD予測器37の各エントリは、ロードストアペアの特定のストアを特定するためのストアRNUMを含むことができる。
【0035】
実行ユニット44は、任意数及び任意形式の実行ユニット(例えば、整数、浮動小数点、ベクトル)を含むことができる。また、実行ユニット44の各々は、1つ又はそれ以上のリザベーションステーション(図示せず)を含むことができる。CIF42は、LSU46、FEDユニット32、MMU40、及びL2キャッシュ(図示せず)に接続することができる。CIF42は、コア30とL2キャッシュとの間のインタフェース接続を管理するように構成することができる。MMU40は、アドレス変換及びメモリ管理機能を行うように構成することができる。
【0036】
LSU46は、L1データキャッシュ48、リザベーションステーション50及び52、ストアキュー54、及びロードキュー56を含むことができる。ロード及びストアオペレーションは、マップ/ディスパッチユニット36からリザベーションステーション50及び52にディスパッチすることができる。他の実施形態は、他の複数のリザベーションステーションを含むことができる。オペレーションは、リザベーションステーション50及び52から異なる順序で発行することができる。ストアキュー54は、ストアオペレーションに対応するデータを記憶することができ、ロードキュー56は、ロードオペレーションに関連するデータを記憶することができる。また、LSU46は、CIF42経由でL2キャッシュに接続することができる。また、LSU46は、
図2に示されていない他の構成要素(例えば、レジスタファイル、プリフェッチ、トランスレーション・ルックアサイド・バッファ)を含み得ることに留意されたい。
【0037】
ロードストア順序違反は、古いストアが発行された時点でLSU46が検出することができる。1つの実施形態において、古いストア記憶アドレスは、ロードキュー56内の全ての若いロードと比較することができる。一致が検出された場合、ロードオペレーションは、誤ったデータで完了している。これは、ロード及びストアオペレーションのRNUMを使用して元のマップ/ディスパッチユニット36にリダイレクトする信号を発することで将来修正することができる。マップ/ディスパッチユニット36は、コア30のパイプラインからの命令をフラッシュして、コア30のフロントエンドを元のロードの命令アドレスにリダイレクトすることができ、ロード命令は、リフェッチすることができる。更なるリダイレクトを防止するために、マップ/ディスパッチユニット36は、LSD予測器37においてストアに対するロードの依存関係を予測して記録して、予測した依存関係をリザベーションステーション50及び52に連絡することができる。
【0038】
典型的には、ストアがディスパッチされる場合、ストアは、LSD予測器37をサーチして、ストアに関して適合する場合、テーブルの適合エントリは、作動可能に(つまり、アクティブ)にすることができ、ストアRNUMは、エントリに書き込むことができる。その後、ロードはディスパッチすることができ、テーブル内のロード全体のサーチを行うことができる。1つの実施形態において、LSD予測器37をサーチするために使用される識別値は、少なくともロード及びストアPC値の一部とすることができる。別の実施形態において、サーチを行うために使用されてエントリに記憶される識別値は、少なくともPC値の一部、少なくともアーキテクチャレジスタ値の一部、及び/又は少なくともマイクロオペレーション値の一部から生じるハッシュ値とすることができる。他の識別子を利用することが可能であり想定されている。
【0039】
種々の実施形態において、LSD予測器37において任意数のエントリに適合することができる。1つの実施形態において、適合が生じるように、エントリを作動可能にする必要がある。ロードが1つの作動可能になったエントリに適合する場合、作動可能になったストアRNUMをロードにリンク付けすることで、ストアRNUMへの依存関係を付与することができる。ロードは、リザベーションステーションから発行される特定のストアRNUMを待つようにマーク付けすることができる。リザベーションステーションにおいて、ロードに関する依存関係フィールドがあり、ロードは、リザベーションステーション50又は52から発行される所定のストアに依存するようにマーク付けすることができる。従って、この場合、ロードは、特定のストアRNUMを待つようにマーク付けすること、及びロードは、特定のストアの発行後の1サイクルを発行することができる。
【0040】
ロードが複数の作動可能なストアエントリに適合する場合、これはマルチマッチケースと呼ぶことができる。この場合、ロードは、発行前に全ての古いストアが発行されるまで待つことができる。例えば、1つの実施形態において、或るビットは、ロードが自身の発行前に全ての古いストアが発行されるまで待つことができるように設定することができる。これにより、ロードに先だって全ての古いストアをリザベーションステーション50及び52から発行させることができる。1つの実施形態において、リザベーションステーション50及び52の各々は、含まれる最も古いストアを利用することができる。ロードが、両者のストアよりも古くなるとロードを発行できる。
【0041】
リザベーションステーション50及び52の各々は、有効な何らかのオペレーションを発行するように構成されるピッカを含むことができる。ストアが有効になり、ピックされて発行されると、タグを一斉送信することができ、このストアに依存関係のあるロードは、タグに適合することになる。このことは、ロードをリザベーションステーションから発行する資格があるものとしてマーク付けすることになる。換言すれば、ストアは、ロードで使い果たされるタグを生成する。1つの実施形態において、タグは、ストアRNUMとすることができる。1つの実施形態において、RNUMは9ビット値とすることができるが、他の実施形態において、RNUMの大きさは様々とすることができる。依存関係を有するロードは、リザベーションステーションにおいてロードと一緒に記憶される追加のソースを有することができ、この追加のソースは、LSD予測器37の同じエントリからのストアのRNUMとすることができる。
【0042】
ロードがLSD予測器37のエントリに適合してこのエントリが作動可能な場合、このことはロードが待つ必要がある有効なストアが存在することを意味する。また、エントリは、予測強度に関するインジケータを含むことができる。1つの実施形態において、インジケータはカウンタとすることができ、カウンタ値が閾値以上の場合、エントリは強力で予測の可能性が高いと考えることができ、ロードストア依存関係を設定することができる。閾値の値は、各実施形態で様々とすることができる。ロードが作動可能なエントリに適合して、インジケータが脆弱な場合、予測を使用しないように示唆してロードに関する依存関係を確立できない。ロードストア依存関係が確立される場合には、ロードは、ストアRNUMをピックアップすることができ、RNUMは、エントリを読み出して、ロードがディスパッチされている場合はロードと一緒にリザベーションステーションに転送する。また、ロードは、リザベーションステーションにおいて依存関係があるとしてマーク付けすることができる。
【0043】
1つの実施形態において、リザベーションステーションから発行されるストアは、該ストアが有効なプロデューサであるとマーク付けされる場合にのみ一斉送信されるタグを生成することができる。ストアがLSD予測器37をサーチして適合するものが見つからなかった場合、ストアは、有効なプロデューサとして設定されないことになる。ストアがLSD予測器37において有効なエントリを見出して、予測強度インジケータが、ロードストアペア依存関係予測が閾値以上であることを示す場合(つまり、予測がオン作動する)、エントリは作動可能とすることができる。1つの実施形態において、予測強度インジケータが閾値以下である場合、ストアが当該ストアエントリに適合するとしても、ストアはエントリを作動可能にしないことになる。いくつかの実施形態において、エントリは、ストアが予測強度インジケータの値に関わらず適合するものを見出す場合、作動可能にすることができる。ストアは、複数のエントリに適合することができ、複数のエントリは、単一のストアに関して作動可能にすることができる。
【0044】
ロードがLSD予測器37の作動可能なエントリに適合する場合、ロードは、依存関係があるものとしてマーク付けされ、対応するストアがリザベーションステーションから発行されるまで、ロードはリザベーションステーションから発行されるのを待つことができる。次に、設定された依存関係を有するロードが発行されると、ロードがどこからデータを受信するかを決定することができる。ロードがどこからデータを受信するかに応じて、対応するLSD予測器37のエントリにおいて、予測強度インジケータは、増大、減少、又は現状維持とすることができる。
【0045】
例えば、ロードデータがストアキュー54から送られる場合、LSD予測器37からの予測は良好とすることができる。この場合、ストアからのデータは未だキャッシュ48に到着していないので、ロードがストアを待つことは好都合である。このロードオペレーションのロードデータが未だストアキュー54にある場合、このことは、ロードとストアとの間に実際に真の依存関係があることを示すことができる。換言すると、データは、依存関係のあるロードに関するストアキュー54から送る必要がある。
【0046】
ロードデータに関するストアキュー54でミスがある場合依存関係はもはや有効ではない。過去に依存関係があったが、ロード又はストアのアドレスが変わってロード及びストアがもはや衝突しないという可能性がある。この場合、ストアデータがキャッシュ48から検索されると、データは長時間そこに記憶されている可能性がある。従って、ストアデータがストアキュー54から送られてきたか又はキャッシュ48から送られてきたかを判定することで、予測が正確か否かを示すことができる。更に、この判定に基づいて、LSD予測器37の適合するエントリに記憶される予測強度インジケータを更新することができる。ロードデータがストアキュー54から発行されるような、予測が正確な場合、予測強度インジケータは増大させることができる。ロードデータがキャッシュ48から到来する場合、予測強度インジケータは低減させることができる。他の実施形態において、依存関係予測が正確か否かを判定するために他の技術を利用することができる。
【0047】
図2に示す機能分散は、プロセッサコアで使用することができる、唯一の可能性のあるマイクロアーキテクチャではないことを理解されたい。他のプロセッサコアは、他の構成要素を含むこと、図示の1つ又はそれ以上の構成要素を除外すること、及び/又は各構成要素の機能性の異なる構成を含むことができる。
【0048】
図3を参照すると、マップ/ディスパッチユニット及びリザベーションステーションの1つの実施形態のブロック図が示される。1つの実施形態において、マップ/ディスパッチユニット60は、レジスタマッパー62、並び換えバッファ(ROB)64、ロードストア依存関係(LSD)予測器66、及びディスパッチユニット68を含むことができる。レジスタマッパー62及びLSD予測器66はデコードユニット(図示せず)から命令オペレーションを受信するように接続される。LSD予測器66は、デコードユニットからPCを受信するように接続され、ロードストアユニット(図示せず)から「リダイレクト」及び「カウントアップデート」信号を受信するように接続される。また、LSD予測器66は、新しいエントリが割り振られた場合に廃棄することができるエントリに関してLSD予測器66をサーチする「リプレースメントポインタ」に接続される。
【0049】
レジスタマッパー62は、アーキテクチャレジスタを物理レジスタにマッピングして、命令オペレーション及び物理レジスタアドレスをディスパッチユニット68に提供するように構成することができる。ディスパッチユニット68は、命令オペレーションをリザベーションステーション70A−Nにディスパッチするように構成することができる。ディスパッチユニット68は、リザベーションステーション70A−Nのリザベーションステーションエントリのフリーリストを維持するように構成することができ、エントリを命令オペレーションに全体的に割り当てて、各リザベーションステーション70A−Nの間の負荷をバランスさせるようになっている。
【0050】
LSD予測器66は、命令オペレーションのストア及びロードをチェックするように構成することができ、任意の検出されたストア及びロードを、以前に順序付け違反を起こして訓練テーブルのエントリに割り振られている、ストア及びロードのPCと比較することができる。PCが所定のストに適合する場合、LSD予測器66は、対応する訓練テーブルのエントリを作動可能にするように構成することができる。1つの実施形態において、LSD予測器66は、エントリを作動可能にする前に予測強度のインジケータをチェックすることができる。インジケータが閾値以上の場合、エントリは作動可能になり、さもなければ、インジケータが閾値以下の場合、エントリは作動可能にならない。更に、LSD予測器66は、ストアの識別子としてストアに割り当てられるRNUMを取り込むように構成することができる。
【0051】
作動可能なエントリに適合するロードが検出され、作動可能なエントリに関する予測強度のインジケータが閾値以上の場合、LSD予測器66は、ストア識別子を使用してストアに対するロードの依存関係を生成するように構成することができ、ロードが、ストアの発行が終わるまでリザベーションステーション70から発行されることを防止するようになっている。1つの実施形態において、LSD予測器66は、ロードが依存関係を有するというインジケータと一緒にRNUMを所定のリザベーションステーション70へ送るように構成することができる。更に、ロードに関する複数の適合がある場合、LSD予測器66は、マルチマッチインジケータを所定のリザベーションステーション70へ送ることができる。他の実施形態において、LSD予測器66は、マルチマッチケースにおいて複数のストアRNUMをリザベーションステーション70へ送るように構成することができ、リザベーションステーション70は、ロード毎に2つ以上のストアRNUMを記憶するように構成することができる。他の実施形態では、ストア依存関係を他の様式で示すことができる。
【0052】
リザベーションステーション70A−Nは、ロードストアユニット(図示せず)及び/又は実行ユニット(図示せず)の一部として使用することができる任意の数のリザベーションステーションで表される。リザベーションステーション70A−Nの各々は、オペレーションが対応する機能ユニットで実行されるまでオペレーションを記憶するように構成することができる。
図3には、1つの実施形態によるリザベーションステーション70A内のエントリの実施例が示されている。リザベーションステーション70A−Nの各々は、実施形態に従って種々の数のエントリを含むことができる。各エントリは、依存関係インジケータ、マルチマッチインジケータ、依存関係のストアRNUM、オペレーションがロードか又はストアかを示すロードストア(L/S)インジケータ、及びオペレーションのPCを含むことができる。他の実施形態において、エントリは、他のフィールド(例えば、ソースレジスタ、宛先レジスタ、ソースオペランド)を含むことができ、及び/又は
図3に示す1つ又はそれ以上のフィールドを除外することができる。更に、他の形式のエントリ(例えば、整数、浮動小数点)は、異なるようにフォーマットすることができる。
【0053】
LSD予測器66は、リダイレクト指示に基づいて順序付け違反を引き起こすロードストアペアを識別するように構成することができる。リダイレクト指示は、ロード及びストアPC、又は他のロード及びストア識別子を含むことができる。従って、LSD予測器66は、プロセッサ同じコードシーケンスがリフェッチ及び再実行される場合に、順序付け違反を引き起こすストア又はロードによって訓練して将来的にこのようなイベントを防止することができる。
【0054】
レジスタマッパー62は、各論理レジスタに関するエントリを有するメモリを含むことができる。レジスタマッパー62の各論理レジスタに関するエントリは、最新の命令オペレーションのRNUMを記憶して、論理レジスタを更新することができる。追加のステータスは、リネームマップエントリに記憶することができる。例えば、或るビットは最新の命令オペレーションが実行されたか否かを示すことができる。この実施形態において、レジスタマッパー62は、発行された命令オペレーションを識別する所定のリザベーションステーション70からの信号を受信することができ、これによりレジスタマッパー62は当該ビットを更新することができる。また、最新の命令オペレーションがリタイヤしたか否かを示すビットを含むことができる。
【0055】
図3に示すユニットへの全ての接続が示されておらず、マップ/ディスパッチユニット60は、図示しない他のオペレーションを実行する追加の回路を含み得ることに留意されたい。例えば、レジスタマッパー62及びROB64は、リダイレクト指示を受信して、フラッシュされる命令オペレーションに対処するためのマッピングを調整することができる。更に、レジスタマッパー62及びROB64は、リタイヤする命令オペレーションの指示を受信して、リタイヤの状態を調整することができる(例えば、新しい命令オペレーションへの割り当てのためのエントリの解放、構築されるリネーム状態の更新等)。これらのオペレーションは、LSD予測器66のオペレーションの助けとなるが本明細書では詳細に説明しない。
【0056】
PC及びRNUMをストアに関する識別子として使用し、PCをロードに関する識別子として使用するが、他の実施形態では、プロセッサ内で進行中の命令を独自に識別する任意の識別子を使用できることに留意されたい(例えば、任意の種類のタグ又はシーケンス番号)。
【0057】
図4を参照すると、ロードストア依存関係予測器テーブル1つの実施形態が示されている。テーブル90は、実施形態に応じて種々の数のエントリを含むことができる。各エントリは、重なり合うアドレスを有して、異なる順序で発行されるとして予測されたロードストアペアに対応することができる。エントリは、検出された順序付け違反に応じてテーブル90に割り振ることができる。順序付け違反が起こっているイベントにおいて、ストアキューエントリは、違反を引き起こすロードを含むプロセッサを元のフェッチユニットにフラッシュすることができ、テーブル90は、この違反に対して訓練することができるので、この特定のロードストアペアに関するエントリをテーブル90に追加するようになっている。一般的に、リダイレクトを引き起こすフラッシュされたストアは既に発行されているので、フラッシュされたロードがリフェッチ及びデコードされる場合、テーブル90のエントリは作動可能にならずロードは普通に発行される。PCにおけるストアの将来の実行において、ストアはテーブル90の対応するエントリを作動可能にして、ストアが発行されるまでロードが発行されることを防止することになる。
【0058】
テーブル90は、複数の命令オペレーションによる複数の同時アクセス及び更新を可能にするように構成することができる。更に、テーブル90は統合されたテーブルとして示されているが、異なるフィールドは、別のテーブルのエントリが互いに関連した状態で、別のメモリに対応する別のテーブルとすることができる。例えば、ロードPCは別のテーブルとすること、ストアPCは別のテーブルとすること、及びロードPCエントリは、特定のロードストア順序付け違反が検出されて訓練された、ストアPCエントリに対応することができる。
【0059】
各エントリは、有効インジケータ92を含むことができる。有効インジケータ92は、エントリが有効なエントリであるか否か、及びエントリがエントリで示されたロードとストアとの間の依存関係を強化するために使用すべきか否かを示すことができる。1つの実施形態において、有効インジケータ92は、クリア又はリセットすることができる。また、有効インジケータ92は、置換えポリシーに影響を及ぼすことができ、有効なエントリは、新しいエントリが割り振られた場合に置換される第1のエントリとすることができる。いくつかの実施形態において、有効インジケータ92は、テーブル90のエントリに含まれる必要はない。代わりに、これらの実施形態において、カウンタフィールド102の値を、エントリが有効か否かを示すために使用することができる。他の実施形態では、テーブルのカウンタフィールド102を除いて、有効インジケータ92だけを使用することができる。
【0060】
また、各エントリは、特定のストアオペレーションを識別するためのストアPC値94を含むことができる。いくつかの実施形態において、ストアPC値は、アーキテクチャレジスタと組み合わせること及び/又はハッシュ値とすることができる。ストアがディスパッチされる場合、テーブル90のストアPCはディスパッチされたストアのPCを得るためにサーチすることができる。テーブル90は、ストアPCフィールドに関するCAMとすることができ、メモリの各エントリは、比較を行うための回路を含む。また、ストアPCフィールドは、CAMとして作動されるレジスタ及びコンパレータのセットとすることができる。ディスパッチされたストアが何らかのエントリに適合する場合、これらのエントリは、作動可能ビット98のセットを有することができる。また、ストアのRNUMは、ストアRNUM96のエントリフィールドに書き込むことができる。ストアがリザベーションステーションから発行される場合、作動可能ビット98は、特定のストアによって以前に作動可能になったテーブル90の何らかのエントリからクリアすることができる。
【0061】
ロードがディスパッチされる場合、テーブル90の各エントリのロードPC値100は、ディスパッチされたロードのPCに関してサーチされる。テーブル90は、ロードPCフィールドに関するCAMとすることができる。ディスパッチされたロードが、何らかの作動可能なエントリに適合する場合、依存関係を確立して特定のロードに関して有効とすることができる。ロードが作動可能でないエントリに適合する場合、対応するストアがディスパッチされていないか又は既に発行されているので依存関係は確立されないので、順序付け違反は生じない。ロードが複数の作動可能なエントリに適合する場合、ロードは、ロード自体が発行される前に古いストアが発行されるまで待つことができる。ロードが単一のエントリに適合する場合、ストアRNUMはロードを有するリザベーションステーションに書き込むことができる。また、ロード有効な依存関係を有することを示すための、リザベーションステーションのロードに関する依存関係ビットセットが存在できる。
【0062】
また、各エントリは、カウンタフィールド102を含むことができる。カウンタ102の値は、エントリの特定のロードストアペアに関する予測強度を示すことができる。1つの実施形態において、カウンタ102は2ビットのアップダウンカウンタとすることができる。他の実施形態において、カウンタ102は他のビット数とすることができる。更に、カウンタ102は、最大値及び最小値で飽和するように構成することができる。
【0063】
ストアがエントリに適合する場合、カウンタ値102は、エントリを作動可能にする前にチェックすることができる。カウンタ値102が閾値以下の場合、エントリは作動状態にしないことができる。カウンタ値102が閾値以上の場合、エントリは作動状態にすることができる。いくつかの実施形態において、エントリは、カウンタ値102をチェックすることなく作動状態にすることができる。また、ロードがエントリに適合する場合、カウンタ値102をチェックすることができる。カウンタ値102が閾値以上の場合でのみ依存関係を有効とすることができる。閾値の値は実施形態に応じて様々とすることができ、特定の動作条件に応じて調整することができる。
【0064】
別の実施形態において、テーブル90のエントリに対してエージアウト(age−out)カウンタを利用することができる。各エントリはエージアウトカウンタを含むことができ、エージアウトカウンタは、ントリが最初に割り振られる際に何らかの初期値に設定することができる。また、インターバルカウンタは、プログラム可能な期間をカウントするために使用することができ、インターバルカウンタが満了する場合、テーブル90の各エージアウトカウンタはデクリメントすることができる。その後、インターバルカウンタはゼロから開始されて、プログラム可能な期間をカウントすることができる。期間経過の度に、テーブル90のエージアウトカウンタをデクリメントすることができる。ロードストアペアによってエントリがアクセスされるか又は作動可能にされる度に、エージアウトカウンタは一定量だけインクリメントすることができる。テーブル90のエントリが使用されなくなると、最終的にそのエージアウトカウンタはゼロの状態になることができ、この時点でエントリを新しいエントリに置き換えることができる。
【0065】
他の実施形態において、テーブル90は、追加のフィールドを含むこと及び/又は
図4に示す1つ又はそれ以上のフィールドを省略することができる。更に、テーブル90は、他の実施形態において異なるようにフォーマットすることができる。
【0066】
図5を参照すると、予測器テーブルのロードストアペアエントリに対応するカウンタ値表現の1つの実施形態が示されている。このカウンタ値の割り当ては、テーブル110の2ビットカウンタについて示されている。別の実施形態において、カウンタは他のビット数を使用することができる。
【0067】
1つの実施形態において、カウンタ値「11」つまり「3」は、「強く使用可能(strongly enabled)」を表すことができる。このカウンタ値をもつエントリについて、ロードストアペアに関する依存関係を有効とすることができる。カウンタ値「10」つまり「2」は、「弱く使用可能(weakly enabled)」を表すことができる。エントリが「弱く使用可能」な場合、依存関係は同様に有効であるとすることができる。カウンタ値「01」つまり「1」は、「弱く使用不能(weakly disabled)」を表すことができる。エントリが「弱く使用不能」である場合、対応するロードストアペアに関して依存関係は有効でないとすることができる。カウンタ値「00」つまり「0」は、「強く使用不能(strongly disabled)」と表すことができる。いくつかの実施形態において、「強く使用不能」は同様にエントリが有効でないことを表すことができる。
図5に示す実施形態の閾値は2と1の間である。他の実施形態において、閾値は他の値とすることができる。
【0068】
1つの実施形態において、エントリが最初に割り振られる場合、初期設定により、新しいエントリに関するカウンタは「弱く使用可能」に設定することができる。カウンタが「弱く使用不能」(カウンタ=1)の場合、エントに適合するロードストアペアは、確立された依存関係を有することができない。その代わりに、ロードは依存関係なしに発行することができる。他の実施形態において、他のサイズのカウンタを使用することができ、カウンタ値は異なる表現とすることができる。
【0069】
図6を参照すると、ロードオペレーションを処理する方法の1つの実施形態が示される。説明目的で、本実施形態のステップは順番に示されている。以下に示す方法の種々の実施形態において、記載される1つ又はそれ以上の要素は、同時に、図示とは異なる順番で実行すること、又は完全に削除することができることを理解されたい。また、必要であれば他の追加の要素を実行することができる。更に、フローチャートの一部は、複数のロードオペレーションを同時に処理するために並列に実行することができる。
【0070】
1つの実施形態において、ロードオペレーションはマップ/ディスパッチユニットで受信することができる(ブロック120)。ロードオペレーションは、プロセッサのパイプラインの先の段階でデコードされている。次に、ロードオペレーションとして同じPCを有するエントリに関して、ロードストア依存関係予測器テーブルをサーチすることができる(ブロック122)。サーチの実行後、見つかった適合の数を判定することができる(条件ブロック124)。適合するものがない場合(条件ブロック124)、ロードを依存関係なしでリザベーションステーションにディスパッチすることができる(ブロック126)。ロードは作動可能でないエントリに適合することができるが、これらの作動可能でない適合は、依存関係が有効であることを必要とする可能性がある実際の適合を構成するものではない。同様に、ロードが作動可能なエントリに適合するが、予測インジケータカウンタが閾値以下の場合、これは実際の適合を構成しなので、依存関係は有効ではない可能性がある。いくつかの実施形態において、カウンタは、エントリを作動可能にする前にストアがカウンタを既にチェックしている場合、ロードに関する閾値と比較する必要がない場合もある。
【0071】
ロードが有効とする必要がある依存関係をもたない場合、このことは種々の方法で示すことができる。例えば、1つの実施形態において、依存関係ビットをクリアしてロードが依存関係をもたないことを示すことができるブロック126の後で、ピッカは、何らかの他のオペレーションが発行されることを待つことなく、任意の時間にリザベーションステーションから発行するロードを選択することができる(ブロック132)。
【0072】
作動可能なエントリに関して1つの適合が見つかった場合、ロードは、依存関係のあるリザベーションステーションにディスパッチすることができる(ブロック128)。対応するストアのRNUMは、ロードを有するリザベーションステーションエントリに書き込むことができる。1つの実施形態において、適合すると見なされるエントリに関して、エントリのカウンタフィールドは、閾値以上であることが必要である。例えば、ロードが1つの作動可能なエントリに適合するが、エントリのカウンタフィールドが閾値以下の場合(つまり弱く作動不能又は強く作動不能)、これは実際の適合を構成しない。ブロック128の後で、ロードは、依存関係がある対応するストアが発行されるまで発行を待つことができる(ブロック134)。
【0073】
作動可能なエントリに関して、ロードについて複数の適合が見つかった場合(条件ブロック124)、ロードは、マルチマッチインジケータセットを有するリザベーションステーションにディスパッチすることができる(ブロック130)。次に、ロードは、全ての古いストアが発行されるまで、リザベーションステーションから発行されるのを待つことができる(ブロック136)。ロードストアユニットは、複数のリザベーションステーションを含むことができ、各リザベーションステーションは、そのエントリの中で最も古いストアを追跡するように構成することができる。複数の適合をもつロードがディスパッチされる場合、各リザベーションステーションにおいて最も古いストアを記録することができ、各リザベーションステーションから最も古いストアが発行された後、ロードは1サイクル後に発行されることができる。
【0074】
図7を参照すると、ロードストア依存関係予測強度インジケータを調整するための方法の1つの実施形態が示されている。説明目的で、本実施形態のステップは順番に示されている。以下に示す方法の種々の実施形態において、記載される1つ又はそれ以上の要素は、同時に、図示とは異なる順番で実行すること、又は完全に削除することができることを理解されたい。また、必要であれば他の追加の要素を実行することができる。
【0075】
依存関係のあるロードをリザベーションステーションから発行することができる(ブロック140)。ロードは、対応するストアがロードストアペアから発行されるまで、発行を遅らせることができる。対応するストアは、同じリザベーションステーション又は異なるリザベーションステーションから発行することができる。ロードがリザベーションステーションから発行されて実行された後、ロードデータをどこから取得したかを決定することができる(ブロック142)。
【0076】
ロードデータがストアキューにある場合(条件ブロック144)、この特定のロードストアペアに関する依存関係予測は、良好と判断することができ、ロードストア依存関係予測器の対応するエントリのカウンタは、インクリメントすることができる(ブロック146)。ロードデータに関するストアキューでミスがある場合(条件ブロック144)、ストアの依存関係は、ロードに関して正当ではない場合があり(つまり、依存関係予測はもはや有効ではない)、ロードストア依存関係予測器の対応するエントリのカウンタは、デクリメントすることができる(ブロック148)。本方法は、依存関係にある複数の別のロードに関して並列に実行することができる。
【0077】
図8を参照すると、ロードストア依存関係予測器テーブルのエントリを置き換えるための方法の1つの実施形態が示されている。説明目的で、本実施形態のステップは順番に示されている。以下に示す方法の種々の実施形態において、記載される1つ又はそれ以上の要素は、同時に、図示とは異なる順番で実行すること、又は完全に削除することができることを理解されたい。また、必要であれば他の追加の要素を実行することができる。
【0078】
ポインタは、ロードストア依存関係予測器テーブルの隣接エントリのグループを指し示すことができ、隣接エントリのグループのカウンタ値を解析することができる(ブロック160)。1つの実施形態において、グループは4つのエントリを含むことができる。他の実施形態において、グループは、他の数のエントリを含むことができる。次に、最も小さいカウンタ値のエントリを選択することができる(ブロック162)。2つ以上のエントリが最も小さいカウンタ値をもつ場合、ポインタは、これらのエントリをランダムに選択することができ、又は、ポインタは、何らかの他の値又は評価基準を使用して、これらの最も小さいカウンタ値の各エントリを識別することができる。
【0079】
依存関係をもつ新しい訓練されたロードストアペアに関して、この時点で新しいエントリを割り振る必要がある場合(条件ブロック164)、グループの中で最も小さいカウンタ値を有する選択エントリを廃棄することができ、この場所に新しいエントリを割り振ることができる(ブロック166)。新しいロードストアペアは、信号で伝えられるリダイレクト又はフラッシュに応じて割り振ることができ、リダイレクトは任意の時間に生じることことに留意されたい。従って、条件ブロック164は、
図8のフローチャートの他の場所に配置することができる。新しいエントリが割り振られた後で、ポインタは、次のエントリのグループに移動することができる(ブロック172)。この時点で新しいエントリを割り振る必要がない場合(条件ブロック164)、最も小さいカウンタ値がゼロか否かを決定することができる(条件ブロック168)。
【0080】
最も小さいカウンタ値がゼロの場合(条件ブロック168)、ポインタは、現在の位置に留まり、エントリが割り振られるまで待つことができる(ブロック170)。最も小さいカウンタ値がゼロでない場合(条件ブロック168)、ポインタは、予測器の次のエントリのグループに移動することができる(ブロック172)。1つの実施形態において、ポインタは、ロード又はストアがロードストア依存関係予測器をアクセスするまで、次のエントリグループに移動するのを待つことができる。別の実施形態において、ポインタは、次のクロックサイクルで次のエントリグループに移動することができる。ブロック172の後で、本方法はブロック160に戻りグループのエントリを解析するようになっている。
図8に示す方法は、1つの可能性のある置換えポリシーの実施例であり、別の実施形態において、他の置換えポリシーを利用することができる(例えば、最低使用頻度の)。
【0081】
図9を参照すると、システム180の1つの実施形態のブロック図が示されている。図示のように、システム180は、デスクトップコンピュータ190、ラップトップコンピュータ200、タブレットコンピュータ210、セルラーホン220等のチップ、回路、構成要素等を表わす。例示の実施形態では、システム180は、外部メモリ182に結合されたIC10(
図1)の少なくとも1つのインスタンスを含む。
【0082】
IC10は、1つ又はそれ以上の周辺装置184及び外部メモリ182に結合される。電源186も設けられ、IC10に供給電圧を供給すると共に、メモリ182及び/又は周辺装置184に1つ又はそれ以上の供給電圧を供給する。種々の実施形態において、電源186は、バッテリ(例えば、スマートホン、ラップトップ又はタブレットコンピュータの充電型バッテリ)を表わす。ある実施形態では、2つ以上のIC10が含まれる(且つ2つ以上の外部メモリ182も含まれる)。
【0083】
メモリ182は、ダイナミックランダムアクセスメモリ(DRAM)、同期式DRAM(SDRAM)、ダブルデータレート(DDR、DDR2、DDR3等)SDRAM(mDDR3等のSDRAMの移動バージョン、及び/又はLPDDR2等のSDRAMの低電力バージョンを含む)、RAMBUS DRAM(RDRAM)、スタティックRAM(SRAM)等の任意の形式のメモリとすることができる。1つ以上のメモリ装置が回路板に結合されて、シングルインラインメモリモジュール(SIMM)、デュアルインラインメモリモジュール(DIMM)、等のメモリモジュールを形成する。もしくは、装置は、IC88と共に、チップオンチップ構成、パッケージオンパッケージ構成、又はマルチチップモジュール構成でマウントされてもよい。
【0084】
周辺装置184は、システム180の形式に基づいて望ましい回路を含む。例えば、1つの実施形態では、周辺装置184は、wifi、Bluetooth(登録商標)、セルラー、グローバルポジショニングシステム、等の、種々の形式のワイヤレス通信のための装置を含む。また、周辺装置184は、RAM記憶装置、ソリッドステート記憶装置、又はディスク記憶装置を含む付加的な記憶装置も含む。また、周辺装置1845は、タッチディスプレイスクリーン又はマルチタッチディスプレイスクリーンを含むディスプレイスクリーン、キーボード又は他の入力装置、マイクロホン、スピーカ、等のユーザインターフェイス装置を含む。
【0085】
図10には、IC10(
図1)に含まれる回路を表わす1つ又はそれ以上のデータ構造体を含むコンピュータ読み取り可能な媒体230のブロック図の1つの実施形態が示されている。一般的に述べると、コンピュータ読み取り可能な媒体230は、磁気又は光学的媒体のような非一時的記憶媒体、例えば、ディスク、CD−ROM、又はDVD−ROM、揮発性又は不揮発性メモリ媒体、例えば、RAM(例えば、SDRAM、RDRAM、SRAM、等)、ROM、等、並びにネットワーク及び/又はワイヤレスリンクのような通信媒体を経て搬送される電気、電磁又はデジタル信号のような送信媒体又は信号を経てアクセスできる媒体を含む。
【0086】
一般的に、コンピュータ読み取り可能な媒体230における回路のデータ構造(1つ又は複数)は、プログラムにより読み取られ、そして回路より成るハードウェアを製造するために直接的又は間接的に使用される。例えば、データ構造は、ベリログ又はVHDLのような高レベルデザイン言語(HDL)でのハードウェア機能の1つ以上の振舞いレベル記述又はレジスタ転送レベル(RTL)記述を含む。これら記述は、合成ライブラリからのゲートのリストより成る1つ以上のネットリストを発生するために記述を合成する合成ツールによって読み取られる。ネットリストは、回路より成るハードウェアの機能も表わすゲートのセットを含む。次いで、ネットリストは、マスクに適用される幾何学的形状を記述する1つ以上のデータセットを発生するように配置され、ルーティングされる。次いで、マスクは、種々の半導体製造ステップにおいて、その回路に対応する半導体回路(1つ又は複数)を製造するのに使用される。或いは又、コンピュータ読み取り可能な媒体140におけるデータ構造は、必要に応じて、ネットリスト(合成ライブラリを伴うもの又は伴わないもの)でもデータセットでもよい。更に別の形態では、データ構造は、図式的プログラムの出力、或いはそこから導出されたネットリスト又はデータセットを含む。
【0087】
コンピュータ読み取り可能な媒体230はIC10の表現を含むが、他の実施形態では、IC10の任意の部分又は部分の組み合わせの表現(例えば、LSD予測器37、LSU46)が含まれてもよい。
【0088】
前記実施形態は、具現化の非限定例であることを強調しておく。当業者であれば、前記開示が充分に理解されれば、多数の変更や修正が明らかとなろう。そのような変更や修正は、全て、特許請求の範囲に包含されることが意図される。