(58)【調査した分野】(Int.Cl.,DB名)
前記第1エントリが選択される準備ができていることを示す段階は、前記第1エントリと連関された従属ベクトルのエントリを整理せず、前記第1エントリが選択される準備ができていることを示す段階を含む請求項6に記載のデータ処理方法。
前記第1エントリと連関された前記カウンターの前記値を初期化する段階は、前記第1エントリの従属ベクトルに応答して前記カウンターの前記値をローディングする段階を含む請求項1に記載のデータ処理方法。
前記コントローラは、取消された前記他のエントリの数だけ前記第2方向に前記カウンターの前記値を変換するようにさらに構成された請求項12に記載のデータ処理装置。
前記コントローラは、閾値に到達した前記カウンターの前記値に応答して前記第1エントリが準備されていることを示すようにさらに構成された請求項12に記載のデータ処理装置。
前記コントローラは、前記第1エントリと連関された従属ベクトルのエントリを整理せず、前記第1エントリが選択される準備ができていることを示すようにさらに構成された請求項17に記載のデータ処理装置。
前記第1エントリと連関されたカウンターは、幅を有し、前記幅は、前記第1エントリが依存する目的地の最大数を示すためのビットの最小数である請求項12に記載のデータ処理装置。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明の目的は向上された動作速度を提供するデータ処理方法を提供することにある。
【課題を解決するための手段】
【0006】
本発明の実施形態によるデータ処理システムのデータ処理方法は第2エントリを選択することに応答して第1エントリと連関されたカウンターを変換する段階と、前記カウンターを閾値と比較する段階と、前記カウンターと前記閾値との比較結果に応答して前記第1エントリが選択される準備ができていることを示す段階を含み、前記第1エントリは前記第2エントリに従属的である。
【0007】
実施形態として、前記カウンターを変換する段階は、前記カウンターを減少させることを含む。
実施形態として、前記閾値は、‘0’である
【0008】
実施形態として、前記カウンターを前記第1エントリが依存する目的地のナンバーにセッティングする段階を含む。
【0009】
実施形態として、前記第1エントリの従属ベクトルに応答して前記カウンターをローディングする段階をさらに含む。
【0010】
実施形態として、前記第1エントリの前記従属ベクトルに応答して前記カウンターをローディングする段階は、前記従属ベクトルのビットに対する論理和演算を実行する段階と、前記従属ベクトルのビットに対する排他的論理和演算を実行する段階と、前記論理和演算と前記排他的論理和演算の結果に応答して前記カウンターをローディングする段階と、を含む。
【0011】
実施形態として、前記第2エントリを取り消すことに応答して前記カウンターを変換する段階をさらに含む。
【0012】
実施形態として、前記第2エントリを取り消すことに応答して前記カウンターを変換することは、前記カウンターを増加させることを含む。
【0013】
実施形態として、前記カウンターは、幅(width)を有し、前記カウンターの幅は、前記第1エントリが依存する目的地の最大数を示すための最小ビットである。
【0014】
実施形態として、前記第1エントリが選択される準備ができていることを示す段階は、前記第1エントリと連関された従属ベクトルのエントリを整理せず、前記第1エントリが選択される準備ができていることを示すことを含む。
【0015】
本発明の実施形態によるデータ処理装置は、複数のエントリを含み、各エントリは少なくとも1つのカウンターを含むメモリと、前記メモリに連結されたコントローラと、を含み、前記コントローラは、前記複数のエントリの第2エントリを選択することに応答して前記複数のエントリの第1エントリと連関された前記カウンターを変換し、前記カウンターを閾値と比較し、前記閾値と前記カウンターの比較結果に応答して前記第1エントリが選択される準備ができていることを示すように制御し、前記第1エントリは、前記第2エントリに従属的である。
【0016】
実施形態として、前記コントローラは、前記カウンターが減少されるように前記カウンターを変換することを特徴とする。
実施形態として、前記閾値は‘0’である
【0017】
実施形態として、前記コントローラは、前記第1エントリが依存する複数のエントリの目的地の数に前記カウンターをセットする。
【0018】
実施形態として、前記コントローラは、前記第1エントリの従属ベクトルに応答して前記カウンターをロードする。
【0019】
実施形態として、前記コントローラは前記従属ベクトルのビットに対する論理和演算を実行し、前記従属ベクトルのビットに対して排他的論理和演算を実行し、前記論理和演算と前記排他的論理和演算の結果に応答して前記カウンターをロードする。
【0020】
実施形態として、前記コントローラは、前記第2エントリを取り消すことに応答して前記カウンターを変換する。
【0021】
実施形態として、前記コントローラは、前記第2エントリを取り消すことに応答して前記カウンターを増加させる。
【0022】
実施形態として、前記カウンターは、幅(width)を有し、前記カウンターの幅は、前記第1エントリが依存する目的地の最大数を示すための最小ビットである。
【0023】
実施形態として、前記コントローラは、前記第1エントリと連関された従属ベクトルのエントリを整理せず、前記第1エントリが選択される準備ができていることを示す。
【0024】
本発明の実施形態によるデータ処理システムのデータ処理方法は、第1エントリが依存する他のエントリの目的地の数を示すように前記第1エントリと連関されたカウンターを初期化する段階と、前記他のエントリの中で第2エントリを選択することに応答して第1方向に前記カウンターを変換する段階と、前記他のエントリの中で第3エントリを取り消すことに応答して前記第1方向と反対になる第2方向に前記カウンターを変換する段階と、を含む。
【0025】
実施形態として、前記第3エントリは、前記第2エントリと同一であることを特徴とする。
【0026】
実施形態として、前記第2エントリは、前記第3エントリと異なることを特徴とする。
【0027】
実施形態として、取り消される前記他のエントリの数にしたがって前記第2方向に前記カウンターを変換することをさらに含む。
【0028】
実施形態として、前記カウンターを前記第1方向に変換することは、前記カウンターを減少させることを含み、前記カウンターを前記第2方向に変換することは、前記カウンターを増加させることを含む。
【0029】
実施形態として、前記カウンターが閾値に到達することに応答して前記第1エントリが準備されたことを示すことをさらに含む。
【0030】
本発明の実施形態によるデータ処理システムは、メモリシステムと、ユーザーインターフェイスと、前記メモリシステム及び前記ユーザーインターフェイスに連結されたプロセッサと、を含み、前記プロセッサは、各々少なくとも1つのカウンターを含む複数のエントリを格納するメモリと、前記メモリに連結されたコントローラと、を含み、前記コントローラは、前記複数のエントリの中で第2エントリを選択することに応答して前記複数のエントリの中で第1エントリと連関された前記カウンターを変換し、前記カウンターを閾値と比較し、前記カウンターを前記閾値と比較した結果に応答して前記第1エントリが選択される準備ができていることを示し、前記第1エントリは、前記第2エントリに従属的である。
【発明の効果】
【0031】
本発明の実施形態によるデータ処理方法は向上された動作速度を提供することができる。
【発明を実施するための形態】
【0033】
本発明の多様な実施形態はプロセッサ(processors)内の命令語のディペンデンシーを整理し、リビルディングすることのように、主にディペンデンシーを整理し、リビルディングすることに関する。ここにはスケジューラー(scheduler)内のプロデューサー(producer)及び従属命令語(dependent instructions)を包含されるが、これに限定されない。以下の説明は本発明の技術分野で通常の技術を有する者が本発明の技術的思想を利用して実施できる程度に詳細に説明される。本発明の実施形態の多様な変形例及びその包括的な原則と特徴が以下ではより詳細に説明される。例示的に、本発明の実施形態は具体的遂行動作での具体的方法及びシステムに対して説明する。
【0034】
しかし、方法とシステムは以下の説明以外の他の遂行動作でも効果的に動作することができる。‘例示的な実施形態’、‘1つの実施形態’、‘他の実施形態’のような用語は複数の実施形態のみでなく、同一であるか、或いは互に異なる実施形態を称し得る。実施形態は特定な構成要素を有するシステム及び/又は装置に対して説明することができる。しかし、システム及び/又は装置は実施形態として説明されたことより多いか、又は少ない構成要素を包含でき、構成要素を多様な方式に配置することもやはり本発明の技術的思想を逸脱しない限度内で可能である。実施形態は特定段階を含む特定方法を利用して説明され得る。しかし、本発明の技術的思想は実施形態で説明される方法と他の段階を有するか、或いは追加的な段階を有するか、或いは他の順序を有する方法でも効果的に動作することができる。したがって、本発明は以下で説明される実施形態に限定されることではなく、実施形態の原理と特徴を含む限度で最大に広い範囲に該当する。
【0035】
本発明の実施形態は図示された特定形態に制限されることではなく、説明を明確するために誇張されたものである。また、明細書全体に掛けて同一の参照番号で表示された部分は同一の構成要素を示す。本明細書で‘及び/又は’という表現は前後に羅列された構成要素の中で少なくとも1つを含む意味に使用される。また、‘連結される/結合される’という表現は他の構成要素と直接的に連結させるか、或いは他の構成要素を通じて間接的に連結されることを含む意味として使用される。本明細書で単数形は文句で特別に言及しない限り、複数形も含む。また、明細書で使用される‘含む’又は‘包含する’と言及された構成要素、段階、動作及び素子は1つ以上の他の構成要素、段階、動作、素子及び装置の存在又は追加を意味する。
【0036】
図1は本発明の技術的思想の実施形態によるエントリ100を説明するための図面である。本実施形態において、エントリ100はカウンター112を含む。エントリは、例えば、スケジューラー又は他のバッファのようなメモリテーブル内に格納されるプロデューサー301、302及び/又は従属エントリ306であり得る(
図3参照)。しかし、エントリ100とカウンター112とは多様な方法に遂行される多様なエントリの中でいずれか1つであり得る。例えば、エントリ100は他の類似なエントリと同様にスケジューラー又は他のバッファのようなメモリ内に格納され得る。他の実施形態として、カウンター112はエントリ100と関連されるレジスターであり得る。エントリ100はまた追加的な情報114を包含する。追加的な情報114は1つ又はその以上の命令語(instruction)、レジスター、従属ベクトル等のような情報を包含することができる。追加的な情報114はエントリ100と関連されたカウンター112と共に格納され得り、共に格納されないこともあり得る。例えば、追加的な情報114はカウンター112と分離されてバッファ内に格納され得る。
【0037】
図2は本発明の技術的思想の他の実施形態によるエントリを説明する図面である。本実施形態において、エントリ200はカウンター212、従属ベクトル216、及び追加的な情報214を含む。エントリ200は、例えばスケジューラー又は他のバッファのようなメモリテーブルに格納された従属エントリ306であり得る(
図3参照)。従属ベクトル216はエントリ200とゼロ(0)又はゼロ(0)以上の他のエントリとの間の関係を示す。例えば、従属ベクトル216はエントリ200と1つ以上の他のエントリとの間の関係を示し得る。また例えば、従属ベクトル216はエントリ200が依存する他のエントリ(例えば、
図3のプロデューサーエントリ301、302)を示し得る。しかし、他の実施形態として、エントリ200はプロデューサーエントリであり得り、従属ベクトル216はエントリ200に依存する他のエントリを示し得る。
【0038】
従属ベクトル216は多様な方式に表現できる。例えば、従属ベクトル216は一連のビット(bits)を包含でき、その各々は特定エントリに対応することができる。特定位置(location)のビット(又はセットビット、set bit)はエントリ200がそのビットによって示されるメモリ位置に格納されたエントリに依存することを示す。他の実施形態として、従属ベクトル216はエントリ200が依存するレジスター、データ等のようなレファレンスを包含することができる。従属ベクトルを具現する多様な追加的な方法が本発明の通常の技術者に自明である。
図3は本発明の技術的思想の実施形態によるエントリを含むメモリを示すブロックダイヤグラムである。
図3を参照すれば、本発明の実施形態によるメモリ300は複数のエントリを含む。
図3ではエントリ301、302、306のみが列挙されたが、他のエントリがメモリ300内に存在することができ、これは簡略な説明をするために省略された。エントリ301、302、306は先に説明されたエントリ200と類似である。例えば、エントリ301、302はプロデューサーエントリであり得り、エントリ306は2つのプロデューサーエントリ301、302に依存する従属エントリであり得る。メモリ構造300はスケジューラー又は他のバッファであり得る。図示していないが、プロデューサーエントリ301、302はエントリ306と類似にカウンター212又は従属ベクトル216を包含することもあり得る。
【0039】
本実施形態において、エントリ306は複数の他のエントリ301、302に依存又は従属する従属エントリである。エントリ306はカウンター312を含み、カウンター312の値はエントリ306が依存するエントリの総数を示すバイナリ数(binary number)にローディングされ得る。本実施形態において、カウンター312は2(即ち、2進数の‘10’)にセッティングされ、これはエントリ306が2つの他のエントリ301、302に依存することを示す。
【0040】
追加的に、本実施形態において、従属ベクトル316はメモリ300内の潜在的なエントリの数と同一な複数のビットを含む。各ビットはエントリの中でいずれか1つと対応する。セットビットはエントリ306が該当ビットに対応するメモリ位置に位置するエントリに依存することを示す。例えば、本実施形態において、従属ベクトル316の値は110(2進数)にセットされている。仮にメモリ300内の潜在的なエントリの数が16であれば、従属ベクトルの幅(width)は16である。したがって、従属ベクトル316は0000000000000110(2進数)である。
図3では簡略に説明するために、さらに多数の有効ビットのゼロ(0)の値は図示されない。従属ベクトル316のビットは1と2とにセットされているので、この従属ベクトル316はエントリ306がエントリ301及びエントリ302に依存することを示す。仮にエントリ306が他のエントリに依存すれば、従属ベクトル316の相応するビットもまたセットされる。
【0041】
上述したように、カウンター312の値はエントリ306が依存するエントリの数にセットされることができる。例えば、一実施形態において、各エントリ301、302は1つの目的地(destination)を有することができる。したがって、エントリ306が依存する目的地の数はエントリの数と同一であり得る。しかし、他の実施形態において、カウンター312の値はエントリ306の目的地(destination)の数にセットされることができる。以下でさらに詳細に説明されるように、各エントリ301、302は1つ又はその以上の目的地を有することができる。カウンター312の値はエントリ306が依存する特有の目的地の総数にセットされることができる。
【0042】
以下でさらに詳細に説明されるように、ディペンデンシーを整理(clearing)し、リビルディング(rebuilding)することは従属ベクトル316のビットを整理することを伴わず、カウンター312を減少させるか、或いは増加させることによって遂行される。たとえ幾つかの実施形態において、選択されたエントリのための従属ベクトル316のディペンデンシーが整理されたとしても、他の実施形態の従属ビット(dependency bit)はセットされたまま維持される。即ち、従属ベクトル316はディペンデンシーを整理し、リビルディングする時に修正されなくとも良い。本発明の技術的思想に従う一実施形態において、ディペンデンシーを整理することはカウンターを減少させることによって簡単に遂行されることができ、ディペンデンシーをリビルディングすることはカウンターを増加させることによって簡単に遂行されることができる。したがって、本発明の技術的思想の実施形態によるディペンデンシーを整理し、リビルディングするシステム及び方法はその構成又は動作の複雑性を相当部分低くすることができ、また面積とパワーとの観点で消耗されるコスト(cost)を減少させ得る。
【0043】
本実施形態において、カウンター312の値を生成する時、その値は従属ベクトル316内の従属ビットのポップカウント(pop−count)によって生成される。例えば、従属ベクトル316内のセットビットの数(例えば、ゼロ(0))がカウントされる。
図3の実施形態で、従属ベクトル316の2つの1はカウンター306の10(2進数)のカウンター値をもたらす。
【0044】
カウンター312はエントリの最大数(maximum number)と同一であるか、或いはそれより大きい値を格納するように充分な幅(width)を有するように提供され得る。例えば、仮に1つのメモリ300が16の深さ(depth)を有し、システムが総4つのメモリ300を有するように構成され、1つのエントリ306が4つのメモリ300の中でいずれか1つのメモリからのいずれか1つのエントリに依存すれば、1つのエントリが依存できるエントリの最大数は63であり、これはその自分のエントリは包含しない値である。本実施形態において、6ビット又はその以上の幅を有するカウンター312がディペンデンシーの総最大数を計算するのに充分な幅を提供するように使用される。
【0045】
他の実施形態において、カウンター312はエントリ306が依存するエントリの最大数(maximum number)を示すのに必要であるビットの最小数(minimum number)と同一であるか、或いは大きい幅を有する。例えば、与えられたエントリが依存するエントリの数が2に制限された場合に、減少された幅を有するカウンター312が使用されることができる。このような場合に、2ビットの幅のカウンター312は最大カウント(maximum count)として2を格納して使用することができる。即ち、潜在的なディペンデンシーの数に関わらず、与えられたエントリに対するディペンデンシーの最大数は2であり、2の幅を有するカウンター312が使用される。
【0046】
本発明の技術的思想に従う他の実施形態において、カウンター316の値は従属ベクトル316の値をカウンティングするよりは論理演算(logical operations)によって生成され得る。最大2のディペンデンシーを有する実施形態を利用して説明すれば、論理和演算(OR operation)と排他的論理和演算(exclusive OR operation、XOR operation)とがカウンターのビットを生成するために使用され得る。例えば、従属ベクトル316のビットの排他的論理和演算は1つの従属ビットがセットされる場合のみに1を生成する。仮に排他的論理和演算の結果が0であれば、従属ビットの数が0又は2であるか否かを決定するために論理和演算が以後遂行されることができる。論理和演算の演算結果0はゼロ0のディペンデンシービットがセットされたことを示し、反面論理和演算の演算結果1は2つ2のビットがセットされたことを示す。ここで、排他的論理和演算結果はカウンター312の最小有効ビット(least−significant−bit、LSB)を形成し、排他的論理和演算の演算結果と論理和演算の演算結果の組合(combination)はカウンター312の最大有効ビット(most−significant−bit、MSB)を形成する。以下の数式1と数式2はカウンター312のMSBとLSBとを生成するのに使用される関数の例を示し、ここで、Xは排他的論理和演算XORの結果を示し、Oは論理和演算ORの結果を示す。
[数式1]
LSB=X
[数式2]
【0048】
上述したようにディペンデンシーの最大数が2である場合にカウンターのビットを生成する論理(logic)の幾つかの例が説明されたが、論理演算はいずれかの数のディペンデンシーに対するカウンター312値を生成するように使用されることができ、例えば、ディペンデンシーの最大数を格納するために2ビット以上が必要である場合にも使用され得る。したがって、従属ビットの数をカウントするカウンターとそのようなカウンターに対応する遅延(delay)は減少され得る。
【0049】
先に説明された従属ベクトル316がメモリ300のエントリを参照することが説明されたが、本発明の技術的思想はこれに限定されず、従属ベクトル316は他のメモリ、テーブル、キュー(queues)を参照でき、又はエントリ、データ、命令語(instructions)、動作(operations)を含むこと又はエントリ306が依存することを参照することもできる。さらに、先に説明された従属ベクトル316は特定構造を有することが説明されたが、従属ベクトル316は多様な構造を有することができる。例えば、従属ベクトル316はレジスター、命令語、エントリ、データ、キャッシュ(caches)等のようなレファレンスを包含することができる。さらに、従属ベクトル316とカウンター312がエントリ−レベル粒度(entry−level granularity)をトラッキング(tracking)することが説明されたが、多様なレベルの粒度(granularity)が使用され得る。例えば、カウンター312がエントリ306が依存するレジスターの数をトラッキングする場合にレジスター−レベル粒度(register−level granularity)が使用され得る。1つのエントリ301はエントリ306が依存する複数のレジスターに連関され得る。したがって、1つのエントリ301は1より大きいカウンター312値の増加をもたらす。
【0050】
本発明の技術的思想にしたがって、従属ベクトル316の構造に関わらず、従属ベクトル316はディペンデンシーが整理されるか、或いはリビルディングされることにしたがって整理されるか、セットされるか、又は修正される必要がない。即ち、カウンター312を使用して解決されたディペンデンシー(resolved dependencies)又は解決されないディペンデンシー(unresolved dependencies)をトラッキングすることは従属ベクトル316それ自体を修正することを代替することができる。
【0051】
図4乃至
図8は本発明の技術的思想の実施形態による
図3のカウンター312を減少させるか、或いは増加させる例を説明するための図面である。
図4を参照すれば、
図4は従属エントリ306が依存するエントリ301が推測的に選択された後に
図3のメモリを示す。ここで、‘選択される(selecting)’又は‘選択された(selected)’等のような用語はメモリ300からエントリを除去するプロセスの一部分を示し得る。例えば、選択(selecting)は遂行のためにエントリ301を選ぶことを包含することができ、エントリ301はスケジューラーのようなプロセッサパイプライン(processor pipeline)内の命令語であり得る。エントリ301は選択(selection)に応答してメモリ300から直ちに除去される必要はない。
【0052】
エントリ301を選択することに応答して、カウンター312はディペンデンシーの数でその減少を示すように変化される。ここで、カウンター312はエントリ301を選択することに応答して1つのより少ないディペンデンシーを示すように減少される。しかし、注意することは、従属ベクトル316は変化しない。これはエントリ301のビットが整理されなかったので、従属ベクトル316は変わらなく、維持されることを示す。
【0053】
カウンター312が変化された後に、カウンター312はエントリ306のディペンデンシーが整理されたか否かを判断するために閾値(threshold)と比較される。仮にカウンター312を閾値と比較した結果がディペンデンシーが整理されたことを示せば、エントリ306は選択される準備ができていることを示す。例えば、閾値が0(zero)であれば、これは0(zero)のディペンデンシーが残っていることを示す。本実施形態で、
図4のカウンター312は0ではないので、エントリ306は未だ選択される準備ができなかった。さらに具体的に、エントリ306が追加的に依存するエントリ302が未だ選択されなかったので、従属エントリ306は未だ選択される準備ができていなかった。
【0054】
図5を参照すれば、
図5は従属エントリ306が依存する第2エントリ302が選択された後の
図4のメモリを説明するための図面である。
図4で説明された動作と類似に、カウンター312はエントリ302の選択に応答して再び1回減少される。減少されたカウンター312の結果が本実施形態の閾値と同一な0(zero)の値を示すので、エントリ306は選択される準備ができている。
【0055】
前記の説明では0の閾値と明確に比較する動作が遂行されたが、必ず明確な比較動作が遂行される必要はない。例えば、カウンター312はカウンター312が0に到達する時、ゼロフラッグ(zero flag)にセットされることができる。エントリ306はゼロフラッグに応答して選択される準備ができていることを示す。
【0056】
上述したように、エントリ306は従属ベクトル316のエントリを整理せず、選択される準備に成り得る。これは、
図4で説明された初期状態の従属ベクトル316が
図3及び
図5の従属ベクトルと同一であるか、或いは実質的に同一であることを意味する。ただカウンター312のみが変化し、従属ベクトル316は変化しない。
【0057】
ディペンデンシーをリビルディング(rebuilding)する動作が
図6乃至
図8を参照して説明される。
図6を参照すれば、
図6はエントリ301が取り消された(cancelled)後の
図5のメモリを示す。本実施形態で、取消し(cancelling)はエントリ301と関連された動作が該当動作を完了する前に該当動作を中止(stopping)させることを含む。例えば、仮にエントリ301が命令語(instruction)であれば、エントリ301はローディングミス(load miss)、誤謬(fault)、ハザード(hazard)等のような多様な原因によって取り消され得る。
図6に示したように、カウンター312はエントリ306が依存するエントリ301の取消しに応答して変化する。ここで、カウンター312は1の数だけ増加された。
【0058】
図7を参照すれば、
図7は他のエントリ302が取り消された後に
図5のメモリを示す図面である。
図6に図示されたのとは異なるエントリ302が取り消されたとしても、カウンター12は推測的に整理されたディペンデンシーの中でいずれか1つが取り消されたことを示すように相変わらず、1の数だけ増加される。したがって、いずれのエントリが取り消されたか否かに関わらず、いずれか1つのエントリが取り消される時、従属エントリ306の変化は実質的に同一である。
【0059】
本発明の技術的思想に従う実施形態において、取り消されたエントリのアイデンティティ情報(identity information)は記録される必要がない。言い換えれば、カウンター312は残っているディペンデンシーの数を追跡することができ、特定ディペンデンシーが残っているかに対する情報を維持する必要はない。エントリ306が選択される前にすべてのディペンデンシーが整理されなければならないので、このような方法は従属ベクトル316のビットを整理することに関連された複雑な手続を伴わなくともエントリ306が選択される準備ができているか否かを判断する効果的な手段を提供する。
【0060】
図8を参照すれば、
図8はプロデューサーエントリ301、302が全て取り消された後の
図5のメモリを示す図面である。例えば、エントリ301は
図7と類似にエントリ302が取り消された後に取り消され得り、エントリ302は
図6と類似にエントリ301が取り消された後に取り消され得る。いずれのエントリが先ず取り消されたか否かに関わらず、エントリ306が依存するエントリの各取消し動作はカウンター312が追加されたカウンター値の数だけ増加されることをもたらす。本実施形態で、エントリ306が依存する2つのエントリ301、302が全て取り消されたので、カウンター312は本来の値である2に戻っていくように増加された。
【0061】
図8のメモリ300はまた実質的に同時に取り消された複数のエントリに起因し得る。例えば、メモリ300は
図5で説明された状態であり得る。仮に2つのエントリ301、302が実質的に同時に取り消されれば、カウンター312はこれに応答して2の数だけ増加される。これはカウンター312が取消しのタイミングや順序に関わらず、取り消されたエントリの数にしたがって増加されることを意味する。結果的に、カウンター312の値は相変わらずエントリ306の解決されないディペンデンシー(unresolved dependencies)を追跡することができる。
【0062】
上述したように、エントリは選択されるか、或いは取り消され得る。本発明の技術的思想の実施形態において、従属ベクトル316をリビルディングすることはディペンデンシービットが整理されることにしたがって要求されることではない。むしろ、カウンター312はエントリ306が依存するエントリが選択されるか、或いは取消されることにしたがって減少するか、或いは増加され得る。
【0063】
ディペンデンシーを追跡メカニズムとしてカウンター312を増加させるか、或いは減少させることが先に詳細に説明されたが、カウンター312を変化させる方向(direction)は異なり得る。例えば、本実施形態において、カウンター312はエントリ301、302のために−2のような負の数にローディングされ得り、符号化された数としてカウンター312内にエンコーディングされ得る。カウンター312はエントリが選択されることにしたがって増加され、エントリが取消されることにしたがって減少される。一旦、カウンター312が0の閾値に到達すれば、エントリ306は選択される準備ができていることを示され得る。
【0064】
また、0が閾値として使用されたが、他の値が閾値として使用され得る。例えば、一実施形態において、カウンター312は初期に0にセットされ、閾値はエントリ306のディペンデンシーの数にセットされることができる。カウンター312はエントリが選択されることにしたがって増加でき、エントリが取消されることにしたがって減少され得る。例えば、2つのディペンデンシーを有する先に説明された実施形態において、閾値は2に設定され得る、一旦カウンター312の値が2に到達すれば、エントリ306は選択される準備ができていることを示され得る。
【0065】
1つのメモリ300が実施形態として説明されたが、複数のメモリ300が使用されることもあり得る。さらに、複数のメモリ300は同一の機能の一部である必要もない。例えば、1つ又はそれ以上のメモリ300は複数命令語スケジューラー(multiple instruction schedulers)の一部であり得り、反面に1つ又はその以上のメモリ300はリプレイキュー(replay queue)の一部であり得る。さらに、何らかのエントリも何らかのメモリ300のエントリに依存することができる。さらに、エントリを取消すことは、そのエントリがその本来のメモリ300に戻っていくようにする結果をもたらすようにする必要もない。例えば、スケジューラーのためのメモリ300からの命令語はリプレイキューのための他のメモリ300に移動することができる。
【0066】
図9は本発明の技術的思想の実施形態による複数の目的地(destinations)を伴う複数のエントリと複数の従属エントリの例を含むメモリ900を示す図面である。本実施形態において、エントリ901は目的地A、Bを含む。エントリ902は目的地C、D、Eを含む。
【0067】
本実施形態において、従属ベクトル906、910、914は目的地に対応するビットを含む。ここで、最小有効ビットLSBから始めて、ビットは目的地A、B、C、D、Eに対応する。他の目的地が存在することができる。しかし、簡略な説明のために、ただA〜Eの目的地のみが図示されている。他の実施形態において、従属ベクトルはこれとは異なる方式に示されることもある。
【0068】
エントリ904、908、912はエントリ901、902に依存する。具体的に、エントリ904、908、912各々はエントリ901、902の目的地に依存するソースを有している。エントリ904はソース907−1、907−2を含む。ソース907−1は目的地Bに依存し、反面ソース907−2は目的地Cに依存する。ここで、従属ベクトル906の00110(2進数)はエントリ904が目的地B、Cに依存することを示す。カウンター905はエントリ904が依存する目的地の数を示す。ここで、カウンター905はエントリ904が互に異なる目的地に依存することにしたがって10(2進数)に設定されている。
【0069】
エントリ908はソース911−1、911−2、911−3を含む。ソース911−1、911−2は各々目的地Aに依存し、反面ソース911−3は目的地Cに依存する。ここで、従属ベクトル910の00101(2進数)はエントリ908が目的地A、Cに依存することを示す。カウンター909はエントリ908が依存する目的地の数にセットされている。ここで、カウンター909はエントリ908が互に異なる目的地A、Cに依存することにしたがって10(2進数)にセットされている。注意する点はエントリ908が3つのソース911を包含するとしても、エントリ908は単なる2つの目的地に依存することである。
【0070】
エントリ912はソース915−1、915−2、915−3を含む。ソース915−1は目的地Aに依存し、ソース915−2は目的地Bに依存し、ソース915−3は目的地Cに依存する。ここで、従属ベクトル914の00111(2進数)はエントリ912が目的地A、B、Cに依存することを示す。カウンター913はエントリ912が依存する目的地の数にセットされている。ここで、カウンター913はエントリ912が互に異なる3つの目的地A、B、Cに依存することにしたがって11(2進数)にセットされている。注意する点はエントリ912がエントリ901、902に依存するとしても、カウンター913はエントリ912がエントリ901の2つの目的地及びエントリ902の1つの目的地に依存することにしたがって3にセットされることである。
【0071】
上述したように、カウンター905、909、913はエントリ901、902を選択することに応答して変わられる。例えば、エントリ901を選択することに応答して、カウンター905はエントリ904がエントリ901からただ1つの目的地Bに依存することにしたがって1の数だけ減少される。カウンター909はまた、エントリ908がエントリ901からただ1つの目的地Aのみに依存することにしたがって、たとえ複数のソース911−1、911−2が目的地Aに依存するとしても1の数だけ減少される。しかし、カウンター913はエントリ912がエントリ901から2つの目的地A、Bに依存することにしたがって2の数だけ減少される。
【0072】
本実施形態において、各エントリ904、908、912は単なるエントリ902の目的地Cに依存する。したがって、カウンター905、909、913はエントリ902を選択することに応答して1の数だけ減少される。しかし、他の実施形態において、エントリ904、908、912はエントリ901と類似にエントリ902の複数の目的地に対応することができ、対応するカウンターはこれによって変化することができる。
【0073】
エントリ901、902を選択することに応答してカウンター905、909、913を変更することが説明されたが、カウンター905、909、913は先に説明されたようにエントリ901、902を取り消すことに応答して変化され得る。例えば、仮にエントリ901が取り消されれば、カウンター905、909、913は各々1、1、2の数だけ増加される。さらに、たとえカウンターを増加させ、減少させることがカウンター905、909、913を変化させる例として使用されたが、カウンター905、909、913は説明されたことと異なる方式に変化されることもある。
【0074】
一実施形態として、先に説明されたソースと目的地は命令語のレジスター(registers)であり得る。例えば、目的地A〜Eは互に異なる5つのレジスターに対応することができる。ソース907、911、915は他のレジスターを参照することができる。レジスターがソース及び目的地の例として使用されたが、他の技術が使用され得る。例えば、ソースと目的地はメモリ位置、ルックアップテーブル(lookup table)に対するタグ、他のデータ格納位置等を参照することができる。
【0075】
エントリ901、902がエントリ904、908、912に比べて他の構成要素を有することが説明されたが、追加的な構成要素は簡略に説明するために説明されない。これは、エントリ901、902もやはりカウンター、ソース、従属ベクトルを有し得り、エントリ904、908、912は目的地を有し得ることを言う。
【0076】
一実施形態において、先に説明された目的地とソースは、命令語の目的地(instruction destinations)と命令語のソース(instruction sources)であり得る。例えば、以下で説明されるように、メモリ900はプロセッサ又はシステムの一部であり得り、スケジューラー等の一部であり得る。したがって、エントリは命令語と関連され得り、したがって目的地とソースは対応する命令語の目的地とソースであり得る。
【0077】
図10は本発明の技術的思想の実施形態による装置1000を示すブロック図である。本実施形態において、メモリ1002は先に説明されたメモリ300と類似に複数のエントリを格納することができる。したがって、各従属エントリはカウンターを包含することができる。コントローラ1004はメモリ1002に連結され得る。コントローラ1004は先に説明された動作を遂行することができる。例えば、コントローラ1004は従属エントリが依存する他のエントリが選択されるか、或いは取消されることにしたがって従属エントリと関連されたカウンターを変化させる。
【0078】
先に説明されたように、複数のメモリが存在することができる。したがって、コントローラ1004は1つ又はそれ以上の他のメモリ1002に連結され得る。コントローラ1004は各メモリ1002に対して先に説明されたような動作を遂行することができる。他の実施形態において、図示していないが、各メモリ1002は互に異なるコントローラに連結され得る。
【0079】
図11は本発明の技術的思想の実施形態による命令語パッチ(instruction path)の一部分を示すブロック図である。本実施形態において、ディスパッチャー(dispatcher)1102によって受信された命令語は、1つ又はそれ以上のスケジューラー1106に転送され得る。スケジューラー1106は命令語が遂行ユニット1108に転送されたか否かを判断することができる。各スケジューラー1106は先に説明されたようにメモリ300を含む。メモリ300のエントリはスケジューラー1106内で待機(waiting)する命令語に対応することができる。
【0080】
したがって、命令語は遂行ユニット1108で遂行のために選択され得る。命令語が選択されることにしたがって、いずれかの従属命令語(dependent instruction)と関連されたカウンターが、先に説明されたことと類似な方式に変化され得る。これと類似に、遂行ユニット1108で命令語が取り消されることにしたがって、いずれかの従属命令語と関連されたカウンターは、再び先に説明されたことと類似な方式に変化され得る。結果的に、命令語が取り消される時、いずれかの従属命令語の従属ベクトルは対応する従属命令語のカウンターが変化されることにしたがって、未だ解決されないディペンデンシーを反映するためにリビルディングされる必要がなく、従属ベクトルは修正されない。
【0081】
一実施形態において、システムは従属ベクトル内の従属命令語の従属ビットを整理することに依存する必要がない。代わりにシステムは従属命令語のために予めローディングされたカウンター値(pre−loaded counter value)をプロデューサーのウェークアップ(wakeup)に応答して減少させ得る。結果的に、プロデューサーが取り消された時、ディペンデンシーを再び生成することはカウンターをその元の値に戻らせることによって遂行されることができる。このような技術の長所は従属ベクトルをリビルディングすることが相対的に簡単であり、費用消耗が少なく、面積とパワー側面で有利である。
【0082】
システムはマトリックススケジューラー(matrix scheduler)に基づいたスケジューラーエントリ数を使用する1つ又はその以上のスケジューラー1106を包含することができる。マトリックススケジューリングスキーム(matrix scheduler scheme)に基づいたスケジューラーエントリ数において、従属ベクトルは、スケジューラー内の命令語ごとに又はエントリごとに格納され得る。ベクトルはスケジューラーの深さ(depth)だけの広さ(width)を有し得り、ソースディペンデンシー(source dependency)ごとにビットを設定することによって命令語のすべてのディペンデンシーをキャプチャ(capture)することができる。ここで、ソースはプロデューサー命令語であり得る。セットされたビットの位置はソースデータのプロデューサーのエントリ数を示す。注意する点は命令語のすべてのソースが同一のプロデューサーに依存すれば、単なる1ビットセットが在ることである。言い換えれば、ビット数のセットはディペンデンシーを有するソースの数よりは命令語が依存する他のプロデューサーの数を示す。
【0083】
実施形態として、32エントリスケジューラー1106を使用すれば、前記32エントリスケジューラー1106はエントリを含み各エントリは1つの命令語に対応する。各エントリはそのソースのディペンデンシーを示す32ビット従属ベクトルを有する。仮にこのような32ビットベクトルのN番目ビットがセットされれば、それは1つ又はその以上のソースがエントリNのプロデューサーに対するディペンデンシーを有することを示す。
【0084】
各スケジューラーエントリは予めローディングされたカウンター(pre−loaded counter)を有し得り、該当カウンターの値は命令語が依存するプロデューサーの総数を示し得る。このカウント値は従属ベクトル内の32ディペンデンシービットのポップカウント(pop−count)によって生成され得る。しかし、1つの命令語に属するソースの数は1桁の数より小さく、したがって、フル32ビットポップカウント(full 32 bit pop−count)は恐らく必要としない。例えば、仮に命令語が単なる最大2つのソースを有すれば、従属ベクトル内のビットの最大数セットは単なる2であり得る。このような場合に、ポップカウントの代わりに従属ビットの排他的論理和XOR及び従属ビットの論理和ORを使用してカウントする方法が選択され得る。仮に排他的論理和XORの結果が1であれば、これは単なる1従属ビットがセットされたことを示す。仮に排他的論理和XORの結果が0であれば、これは2従属ビットがあるか、或いはセットされた従属ビットがないことの中でいずれか1つを示す。2ビット又はいずれのビットも選択されなかったか否かを決定するために、ビットの論理和ORを実行することもある。仮にその結果が1であれば、これは2ビットがセットされたことを示し、結果が0であれば、これはセットされたビットがないことを示す。したがって、排他的論理和XORと論理和ORの組合せは効果的なポップカウントを提供する。また、すべての32ビットのフルポップカウント(full pop−count)を遂行しなくとも、予めローディングされたカウンター値を得る多様な方法があり得る。
【0085】
プロデューサーが従属ソースをウェークアップする時、従属ビットを整理することの代わりに従属カウンター値が減少される。カウンター値が0(zero)に到達する時、命令語は選択される準備ができている。
【0086】
仮にプロデューサーが推測的にそれの従属ソースをウェークアップし、以後、例えばローディングミス、誤謬、ハザード等のような多様な理由で最小になれば、従属カウンター値は1の数だけ後に増加される。仮にプロデューサーが実質的に概ね同時に取り消されれば、カウンター値は取り消されたプロデューサーの数と同一な値の数だけ増加される。
【0087】
一実施形態において、命令語当たり従属カウンターは消費者命令語(consumer instruction)が依存する特定プロデューサー命令語の数を追跡するのに使用される。
【0088】
他の実施形態において、スケジューラー1106に命令語が割当される時、従属カウンター値が各命令語のためにセットされる。
【0089】
他の実施形態において、従属命令語のための従属カウンター値はプロデューサー命令語が従属命令語をウェークアップする時、1の数だけ減少される。
【0090】
他の実施形態において、命令語のためのすべてのディペンデンシーが合致する時、言い換えれば従属命令語のすべてのプロデューサーがウェークアップを発生させる時、命令語の従属カウンター値は0になり、選択される準備ができている。
【0091】
他の実施形態において、プロデューサー命令語によって発生したウェークアップが推測的であり、プロデューサー命令語が取り消される時、従属命令語の従属カウンター値は1の数だけ増加する。
【0092】
他の実施形態において、命令語ソース従属ビットはプロデューサー命令語によって発生されたウェークアップによって整理されない。
【0093】
他の実施形態において、プロデューサーが取り消された場合の命令語従属ビット(instruction dependency)のリビルディングは命令語従属ビットが整理されないことにしたがって、要求されず、単なるカウンター値がリビルディングされる必要がある。
【0094】
たとえ多様なエントリに対してプロデューサーという用語が前記使用されたが、エントリは何も生産(pruduce)しないことがあり得る。一実施形態として、プロデューサーエントリはレジスターがその動作の結果を格納するプロデューサー命令語であり得る。従属エントリ又は従属命令語はレジスターの値を使用することができる。他の実施形態において、第1エントリは第2エントリの順序に概ね依存しない。即ち、第1エントリは第2エントリの出力を利用せず、単なる第2エントリの後に遂行される必要のみがある。
【0095】
図12は本発明の技術的思想の実施形態によるプロセッサを含むシステム1200を示すブロック図である。電子システム1200はコンピューターのような多様であり、広範囲である電子機器に使用でき、また携帯可能であるノートブック型コンピューターコンピューター、ウルトラモバイルPC(UMPC)、タブレットPC、サーバー、ワークステーション、モバイルコミニュケ−ション装置、衛星、セットトップボックス(set top box)、TV等に使用され得る。例えば、電子システム1200はバス1220を利用してデータ通信を遂行するメモリシステム1212、プロデューサー1214、RAM1216、ユーザーインターフェイス1218を包含することができる。
【0096】
プロセッサ1214はマイクロプロセッサ又はモバイルプロセッサAPであり得る。プロセッサ1214はフローティングポイントユニット(floating point unit、FPU)、アルゴリズムロジックユニット(ALU)、グラフィックプロセシングユニット(GPU)、及びデジタル信号プロセシングコア(DSP Core)又はこれらの間の結合を包含することができるプロセッサコア(processor core)を有することができる。プロセッサ1214はプログラムを遂行することができ、電子システム1200を制御することができる。プロセッサ1214は先に説明されたようにメモリ300、900、1002、コントローラ2004を包含することができる。
【0097】
RAM1216はプロセッサ1214の動作メモリ(operating memory)として使用され得る。例えば、プロセッサ1214又はRAM1216は先に説明された本発明の実施形態によるメモリを包含することができる。一実施形態として、プロセッサ1214とRAM1216とは1つのパッケージボディー(package body)に実装され得る。
【0098】
ユーザーインターフェイス1218はデータを電子システム1200に入力するか、或いは電子システム1200から出力するのに使用され得る。メモリシステム1212はプロセッサ1214を動作するためのコード、プロセッサ1214によって処理されたデータ、又は外部入力データを格納することができる。メモリシステム1212はメモリコントローラとメモリとを含む。
【0099】
本説明において、全体的に言及された‘1つの実施形態’又は‘一実施形態’等の用語は該当実施形態と関連された具体的特徴、構造、特性が本発明の少なくとも1つの実施形態に含まれることを意味する。
【0100】
したがって、本説明での‘1つの実施形態’又は‘一実施形態’は同一の実施形態を意味することと理解される必要はない。さらに、具体的な特性、構造、特徴等は1つ又はその以上の実施形態が結合されることもあり得ることと理解しなければならない。
【0101】
たとえ本発明の実施形態にしたがって構造、方法、システム等がある説明されたが、本発明の技術的思想はこれに限定されず、多様に適用及び応用されることができることが理解できる。したがって、本発明の技術的思想の範囲内で多様な構造、方法、システムを具現することが可能であることもやはり理解できる。結局、本発明の技術的思想に対する権利範囲は先に説明された具体的な実施形態及び以下の請求項に記載された内容のみでなく、本発明の技術的思想に従う本発明の実施形態の可能である変形、応用、適用例を包含することが理解できる。