(57)【要約】【課題】向上された動作速度を提供するデータ処理方法が提供される。【解決手段】本発明は電子アプリケーションにおいて、ディペンデンシーを整理し、リビルディングするデータ処理方法に関する。本発明の実施形態によるデータ処理方法は、第２エントリを選択することに応答して第１エントリと連関されたカウンターを変換する段階と、前記カウンターを閾値と比較する段階と、前記カウンターと前記閾値との比較結果に応答して前記第１エントリが選択される準備ができていることを示す段階と、を含み、前記第１エントリは、前記第２エントリに従属的である。本発明によるデータ処理方法は、向上された動作速度を提供することができる。【選択図】図３
2014179101.tif 000002
【特許請求の範囲】
【請求項１】
第２エントリを選択することに応答して第１エントリと連関されたカウンターを変換する段階と、
前記カウンターを閾値と比較する段階と、
前記カウンターと前記閾値との比較結果に応答して前記第１エントリが選択される準備ができていることを示す段階と、を含み、
前記第１エントリは、前記第２エントリに従属的である、データ処理システムのデータ処理方法。
【請求項２】
前記カウンターを変換する段階は、前記カウンターを減少させることを含む請求項１に記載のデータ処理システムのデータ処理方法。
【請求項３】
前記閾値は、‘０’である請求項１に記載のデータ処理システムのデータ処理方法。
【請求項４】
前記カウンターを前記第１エントリが依存する目的地のナンバーにセッティングする段階を含む請求項１に記載のデータ処理システムのデータ処理方法。
【請求項５】
前記第１エントリの従属ベクトルに応答して前記カウンターをローディングする段階をさらに含む請求項１に記載のデータ処理システムのデータ処理方法。
【請求項６】
前記第１エントリの前記従属ベクトルに応答して前記カウンターをローディングする段階は、
前記従属ベクトルのビットに対する論理和演算を実行する段階と、
前記従属ベクトルのビットに対する排他的論理和演算を実行する段階と、
前記論理和演算と前記排他的論理和演算の結果に応答して前記カウンターをローディングする段階と、を含む請求項５に記載のデータ処理システムのデータ処理方法。
【請求項７】
前記第２エントリを取り消すことに応答して前記カウンターを変換する段階をさらに含む請求項１に記載のデータ処理システムのデータ処理方法。
【請求項８】
前記第２エントリを取り消すことに応答して前記カウンターを変換することは、前記カウンターを増加させることを含む請求項７に記載のデータ処理システムのデータ処理方法。
【請求項９】
前記カウンターは、幅（ｗｉｄｔｈ）を有し、前記カウンターの幅は、前記第１エントリが依存する目的地の最大数を示すための最小ビットである請求項１に記載のデータ処理システムのデータ処理方法。
【請求項１０】
前記第１エントリが選択される準備ができていることを示す段階は、前記第１エントリと連関された従属ベクトルのエントリを整理せず、前記第１エントリが選択される準備ができていることを示すことを含む請求項１に記載のデータ処理システムのデータ処理方法。
【請求項１１】
複数のエントリを含み、各エントリは、少なくとも１つのカウンターを含むメモリと、
前記メモリに連結されたコントローラと、を含み、
前記コントローラは、前記複数のエントリの第２エントリを選択することに応答して前記複数のエントリの第１エントリと連関された前記カウンターを変換し、前記カウンターを閾値と比較し、前記閾値と前記カウンターの比較結果に応答して前記第１エントリが選択される準備ができていることを示すように制御し、前記第１エントリは、前記第２エントリに従属的である、データ処理装置。
【請求項１２】
前記コントローラは、前記カウンターが減少されるように前記カウンターを変換することを特徴とする請求項１１に記載のデータ処理装置。
【請求項１３】
前記閾値は、‘０’である請求項１１に記載のデータ処理装置。
【請求項１４】
前記コントローラは、前記第１エントリが依存する複数のエントリの目的地の数に前記カウンターをセットする請求項１１に記載のデータ処理装置。
【請求項１５】
前記コントローラは、前記第１エントリの従属ベクトルに応答して前記カウンターをロードする請求項１１に記載のデータ処理装置。
【請求項１６】
前記コントローラは、前記従属ベクトルのビットに対する論理和演算を実行し、前記従属ベクトルのビットに対する排他的論理和演算を実行し、前記論理和演算と前記排他的論理和演算との結果に応答して前記カウンターをロードする請求項１５に記載のデータ処理装置。
【請求項１７】
前記コントローラは、前記第２エントリを取り消すことに応答して前記カウンターを変換する請求項１１に記載のデータ処理装置。
【請求項１８】
前記コントローラは、前記第２エントリを取り消すことに応答して前記カウンターを増加させる請求項１７に記載のデータ処理装置。
【請求項１９】
前記カウンターは、幅（ｗｉｄｔｈ）を有し、前記カウンターの幅は、前記第１エントリが依存する目的地の最大数を示すための最小ビットである請求項１１に記載のデータ処理装置。
【請求項２０】
前記コントローラは、前記第１エントリと連関された従属ベクトルのエントリを整理せず、前記第１エントリが選択される準備ができていることを示す請求項１１に記載のデータ処理装置。
【請求項２１】
第１エントリが依存する他のエントリの目的地の数を示すように前記第１エントリと連関されたカウンターを初期化する段階と、
前記他のエントリの中で第２エントリを選択することに応答して第１方向に前記カウンターを変換する段階と、
前記他のエントリの中で第３エントリを取り消すことに応答して前記第１方向と反対になる第２方向に前記カウンターを変換する段階と、を含むデータ処理システムのデータ処理方法。
【請求項２２】
前記第３エントリは、前記第２エントリと同一であることを特徴とする請求項２１に記載のデータ処理システムのデータ処理方法。
【請求項２３】
前記第２エントリは、前記第３エントリと異なることを特徴とする請求項２１に記載のデータ処理システムのデータ処理方法。
【請求項２４】
取り消される前記他のエントリの数にしたがって前記第２方向に前記カウンターを変換することをさらに含む請求項２１に記載のデータ処理システムのデータ処理方法。
【請求項２５】
前記カウンターを前記第１方向に変換することは、前記カウンターを減少させることを含み、
前記カウンターを前記第２方向に変換することは、前記カウンターを増加させることを含む請求項２１に記載のデータ処理システムのデータ処理方法。
【請求項２６】
前記カウンターが閾値に到達することに応答して前記第１エントリが準備されたことを示すことをさらに含む請求項２１に記載のデータ処理システムのデータ処理方法。
【請求項２７】
メモリシステムと、
ユーザーインターフェイスと、
前記メモリシステム及び前記ユーザーインターフェイスに連結されたプロセッサと、を含み、
前記プロセッサは、
各々少なくとも１つのカウンターを含む複数のエントリを格納するメモリと、
前記メモリに連結されたコントローラと、を含み、
前記コントローラは、
前記複数のエントリの中で第２エントリを選択することに応答して前記複数のエントリの中で第１エントリと連関された前記カウンターを変換し、
前記カウンターを閾値と比較し、
前記カウンターを前記閾値と比較した結果に応答して前記第１エントリが選択される準備ができていることを示し、
前記第１エントリは、前記第２エントリに従属的である、データ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は電子アプリケーション（ｅｌｅｃｔｒｏｎｉｃ  ａｐｐｌｉｃａｔｉｏｎ）において、ディペンデンシー（ｄｅｐｅｎｄｅｎｃｙ）を整理し、リビルディングするシステム及び方法に関し、さらに具体的にはスケジューラー、バッファ、又は他のメモリ構造のように、プロセス内のディペンデンシーを整理し、リビルディングするシステム及び方法に関する。
【背景技術】
【０００２】
現在のプロセッサ（ｐｒｏｃｅｓｓｏｒ）は推論的な命令語（ｓｐｅｃｕｌａｔｉｖｅ  ｉｎｓｔｒｕｃｔｉｏｎｓ）が従属命令語（ｄｅｐｅｎｄｅｎｔ  ｉｎｓｔｒｕｃｔｉｏｎｓ）のためにディペンデンシーを推測的に整理（ｃｌｅａｒ）することを許容する。ディペンデンシーを整理することは、例えば、従属命令語の従属ベクトル（ｄｅｐｅｎｄｅｎｃｙ  ｖｅｃｔｏｒ）内の推測的な命令語に対応する従属ビット（ｄｅｐｅｎｄｅｎｃｙ  ｂｉｔ）を整理することによって遂行される。
【０００３】
しかし、命令語の遂行は単なる推測的なことだけであるので、ローディングミス（ｌｏａｄ  ｍｉｓｓ）、誤謬（ｆａｕｌｔ）、ハザード（ｈａｚａｒｄ）のように多くの場合において、推測的な命令語の遂行の取消しをもたらすことができる。このような場合に、従属命令語の従属ベクトルは整理されたディペンデンシーを再び生成するために必ずリビルディング（ｒｅｂｕｉｌｄ）されなければならない。残念ながら、これはソースタグ（ｓｏｕｒｃｅ  ｔａｇｓ）を取り消された目的地タグ（ｄｅｓｔｉｎａｔｉｏｎ  ｔａｇｓ）に対して再び比較し、従属ビットを再びセッティングする複雑な過程を必要とする。このようなリビルディング過程はプロセッサの資源とパワーとの側面で高費用を要求する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許公開第２００７／００４３９３２号公報
【特許文献２】米国特許公開第２０１２／００２３３１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の目的は向上された動作速度を提供するデータ処理方法を提供することにある。
【課題を解決するための手段】
【０００６】
本発明の実施形態によるデータ処理システムのデータ処理方法は第２エントリを選択することに応答して第１エントリと連関されたカウンターを変換する段階と、前記カウンターを閾値と比較する段階と、前記カウンターと前記閾値との比較結果に応答して前記第１エントリが選択される準備ができていることを示す段階を含み、前記第１エントリは前記第２エントリに従属的である。
【０００７】
実施形態として、前記カウンターを変換する段階は、前記カウンターを減少させることを含む。
実施形態として、前記閾値は、‘０’である
【０００８】
実施形態として、前記カウンターを前記第１エントリが依存する目的地のナンバーにセッティングする段階を含む。
【０００９】
実施形態として、前記第１エントリの従属ベクトルに応答して前記カウンターをローディングする段階をさらに含む。
【００１０】
実施形態として、前記第１エントリの前記従属ベクトルに応答して前記カウンターをローディングする段階は、前記従属ベクトルのビットに対する論理和演算を実行する段階と、前記従属ベクトルのビットに対する排他的論理和演算を実行する段階と、前記論理和演算と前記排他的論理和演算の結果に応答して前記カウンターをローディングする段階と、を含む。
【００１１】
実施形態として、前記第２エントリを取り消すことに応答して前記カウンターを変換する段階をさらに含む。
【００１２】
実施形態として、前記第２エントリを取り消すことに応答して前記カウンターを変換することは、前記カウンターを増加させることを含む。
【００１３】
実施形態として、前記カウンターは、幅（ｗｉｄｔｈ）を有し、前記カウンターの幅は、前記第１エントリが依存する目的地の最大数を示すための最小ビットである。
【００１４】
実施形態として、前記第１エントリが選択される準備ができていることを示す段階は、前記第１エントリと連関された従属ベクトルのエントリを整理せず、前記第１エントリが選択される準備ができていることを示すことを含む。
【００１５】
本発明の実施形態によるデータ処理装置は、複数のエントリを含み、各エントリは少なくとも１つのカウンターを含むメモリと、前記メモリに連結されたコントローラと、を含み、前記コントローラは、前記複数のエントリの第２エントリを選択することに応答して前記複数のエントリの第１エントリと連関された前記カウンターを変換し、前記カウンターを閾値と比較し、前記閾値と前記カウンターの比較結果に応答して前記第１エントリが選択される準備ができていることを示すように制御し、前記第１エントリは、前記第２エントリに従属的である。
【００１６】
実施形態として、前記コントローラは、前記カウンターが減少されるように前記カウンターを変換することを特徴とする。
実施形態として、前記閾値は‘０’である
【００１７】
実施形態として、前記コントローラは、前記第１エントリが依存する複数のエントリの目的地の数に前記カウンターをセットする。
【００１８】
実施形態として、前記コントローラは、前記第１エントリの従属ベクトルに応答して前記カウンターをロードする。
【００１９】
実施形態として、前記コントローラは前記従属ベクトルのビットに対する論理和演算を実行し、前記従属ベクトルのビットに対して排他的論理和演算を実行し、前記論理和演算と前記排他的論理和演算の結果に応答して前記カウンターをロードする。
【００２０】
実施形態として、前記コントローラは、前記第２エントリを取り消すことに応答して前記カウンターを変換する。
【００２１】
実施形態として、前記コントローラは、前記第２エントリを取り消すことに応答して前記カウンターを増加させる。
【００２２】
実施形態として、前記カウンターは、幅（ｗｉｄｔｈ）を有し、前記カウンターの幅は、前記第１エントリが依存する目的地の最大数を示すための最小ビットである。
【００２３】
実施形態として、前記コントローラは、前記第１エントリと連関された従属ベクトルのエントリを整理せず、前記第１エントリが選択される準備ができていることを示す。
【００２４】
本発明の実施形態によるデータ処理システムのデータ処理方法は、第１エントリが依存する他のエントリの目的地の数を示すように前記第１エントリと連関されたカウンターを初期化する段階と、前記他のエントリの中で第２エントリを選択することに応答して第１方向に前記カウンターを変換する段階と、前記他のエントリの中で第３エントリを取り消すことに応答して前記第１方向と反対になる第２方向に前記カウンターを変換する段階と、を含む。
【００２５】
実施形態として、前記第３エントリは、前記第２エントリと同一であることを特徴とする。
【００２６】
実施形態として、前記第２エントリは、前記第３エントリと異なることを特徴とする。
【００２７】
実施形態として、取り消される前記他のエントリの数にしたがって前記第２方向に前記カウンターを変換することをさらに含む。
【００２８】
実施形態として、前記カウンターを前記第１方向に変換することは、前記カウンターを減少させることを含み、前記カウンターを前記第２方向に変換することは、前記カウンターを増加させることを含む。
【００２９】
実施形態として、前記カウンターが閾値に到達することに応答して前記第１エントリが準備されたことを示すことをさらに含む。
【００３０】
本発明の実施形態によるデータ処理システムは、メモリシステムと、ユーザーインターフェイスと、前記メモリシステム及び前記ユーザーインターフェイスに連結されたプロセッサと、を含み、前記プロセッサは、各々少なくとも１つのカウンターを含む複数のエントリを格納するメモリと、前記メモリに連結されたコントローラと、を含み、前記コントローラは、前記複数のエントリの中で第２エントリを選択することに応答して前記複数のエントリの中で第１エントリと連関された前記カウンターを変換し、前記カウンターを閾値と比較し、前記カウンターを前記閾値と比較した結果に応答して前記第１エントリが選択される準備ができていることを示し、前記第１エントリは、前記第２エントリに従属的である。
【発明の効果】
【００３１】
本発明の実施形態によるデータ処理方法は向上された動作速度を提供することができる。
【図面の簡単な説明】
【００３２】
【図１】本発明の技術的思想の実施形態によるエントリを説明するための図面である。
【図２】本発明の技術的思想の他の実施形態によるエントリを説明する図面である。
【図３】本発明の技術的思想の実施形態によるエントリを含むメモリを示すブロックダイヤグラムである。
【図４】本発明の技術的思想の実施形態による図３のカウンターを減少させるか、或いは増加させる例を説明するための図面である。
【図５】本発明の技術的思想の実施形態による図３のカウンターを減少させるか、或いは増加させる例を説明するための図面である。
【図６】本発明の技術的思想の実施形態による図３のカウンターを減少させるか、或いは増加させる例を説明するための図面である。
【図７】本発明の技術的思想の実施形態による図３のカウンターを減少させるか、或いは増加させる例を説明するための図面である。
【図８】本発明の技術的思想の実施形態による図３のカウンターを減少させるか、或いは増加させる例を説明するための図面である。
【図９】本発明の技術的思想の実施形態による複数の目的地を伴う複数のエントリと複数の従属エントリの例を含むメモリとを示す図面である。
【図１０】本発明の技術的思想の実施形態による装置を示すブロック図である。
【図１１】本発明の技術的思想の実施形態による命令語パッチの一部分を示すブロック図である。
【図１２】本発明の技術的思想の実施形態によるプロセッサを含むシステムを示すブロック図である。
【発明を実施するための形態】
【００３３】
本発明の多様な実施形態はプロセッサ（ｐｒｏｃｅｓｓｏｒｓ）内の命令語のディペンデンシーを整理し、リビルディングすることのように、主にディペンデンシーを整理し、リビルディングすることに関する。ここにはスケジューラー（ｓｃｈｅｄｕｌｅｒ）内のプロデューサー（ｐｒｏｄｕｃｅｒ）及び従属命令語（ｄｅｐｅｎｄｅｎｔ  ｉｎｓｔｒｕｃｔｉｏｎｓ）を包含されるが、これに限定されない。以下の説明は本発明の技術分野で通常の技術を有する者が本発明の技術的思想を利用して実施できる程度に詳細に説明される。本発明の実施形態の多様な変形例及びその包括的な原則と特徴が以下ではより詳細に説明される。例示的に、本発明の実施形態は具体的遂行動作での具体的方法及びシステムに対して説明する。
【００３４】
しかし、方法とシステムは以下の説明以外の他の遂行動作でも効果的に動作することができる。‘例示的な実施形態’、‘１つの実施形態’、‘他の実施形態’のような用語は複数の実施形態のみでなく、同一であるか、或いは互に異なる実施形態を称し得る。実施形態は特定な構成要素を有するシステム及び／又は装置に対して説明することができる。しかし、システム及び／又は装置は実施形態として説明されたことより多いか、又は少ない構成要素を包含でき、構成要素を多様な方式に配置することもやはり本発明の技術的思想を逸脱しない限度内で可能である。実施形態は特定段階を含む特定方法を利用して説明され得る。しかし、本発明の技術的思想は実施形態で説明される方法と他の段階を有するか、或いは追加的な段階を有するか、或いは他の順序を有する方法でも効果的に動作することができる。したがって、本発明は以下で説明される実施形態に限定されることではなく、実施形態の原理と特徴を含む限度で最大に広い範囲に該当する。
【００３５】
本発明の実施形態は図示された特定形態に制限されることではなく、説明を明確するために誇張されたものである。また、明細書全体に掛けて同一の参照番号で表示された部分は同一の構成要素を示す。本明細書で‘及び／又は’という表現は前後に羅列された構成要素の中で少なくとも１つを含む意味に使用される。また、‘連結される／結合される’という表現は他の構成要素と直接的に連結させるか、或いは他の構成要素を通じて間接的に連結されることを含む意味として使用される。本明細書で単数形は文句で特別に言及しない限り、複数形も含む。また、明細書で使用される‘含む’又は‘包含する’と言及された構成要素、段階、動作及び素子は１つ以上の他の構成要素、段階、動作、素子及び装置の存在又は追加を意味する。
【００３６】
図１は本発明の技術的思想の実施形態によるエントリ１００を説明するための図面である。本実施形態において、エントリ１００はカウンター１１２を含む。エントリは、例えば、スケジューラー又は他のバッファのようなメモリテーブル内に格納されるプロデューサー３０１、３０２及び／又は従属エントリ３０６であり得る（図３参照）。しかし、エントリ１００とカウンター１１２とは多様な方法に遂行される多様なエントリの中でいずれか１つであり得る。例えば、エントリ１００は他の類似なエントリと同様にスケジューラー又は他のバッファのようなメモリ内に格納され得る。他の実施形態として、カウンター１１２はエントリ１００と関連されるレジスターであり得る。エントリ１００はまた追加的な情報１１４を包含する。追加的な情報１１４は１つ又はその以上の命令語（ｉｎｓｔｒｕｃｔｉｏｎ）、レジスター、従属ベクトル等のような情報を包含することができる。追加的な情報１１４はエントリ１００と関連されたカウンター１１２と共に格納され得り、共に格納されないこともあり得る。例えば、追加的な情報１１４はカウンター１１２と分離されてバッファ内に格納され得る。
【００３７】
図２は本発明の技術的思想の他の実施形態によるエントリを説明する図面である。本実施形態において、エントリ２００はカウンター２１２、従属ベクトル２１６、及び追加的な情報２１４を含む。エントリ２００は、例えばスケジューラー又は他のバッファのようなメモリテーブルに格納された従属エントリ３０６であり得る（図３参照）。従属ベクトル２１６はエントリ２００とゼロ（０）又はゼロ（０）以上の他のエントリとの間の関係を示す。例えば、従属ベクトル２１６はエントリ２００と１つ以上の他のエントリとの間の関係を示し得る。また例えば、従属ベクトル２１６はエントリ２００が依存する他のエントリ（例えば、図３のプロデューサーエントリ３０１、３０２）を示し得る。しかし、他の実施形態として、エントリ２００はプロデューサーエントリであり得り、従属ベクトル２１６はエントリ２００に依存する他のエントリを示し得る。
【００３８】
従属ベクトル２１６は多様な方式に表現できる。例えば、従属ベクトル２１６は一連のビット（ｂｉｔｓ）を包含でき、その各々は特定エントリに対応することができる。特定位置（ｌｏｃａｔｉｏｎ）のビット（又はセットビット、ｓｅｔ  ｂｉｔ）はエントリ２００がそのビットによって示されるメモリ位置に格納されたエントリに依存することを示す。他の実施形態として、従属ベクトル２１６はエントリ２００が依存するレジスター、データ等のようなレファレンスを包含することができる。従属ベクトルを具現する多様な追加的な方法が本発明の通常の技術者に自明である。図３は本発明の技術的思想の実施形態によるエントリを含むメモリを示すブロックダイヤグラムである。図３を参照すれば、本発明の実施形態によるメモリ３００は複数のエントリを含む。、図３ではエントリ３０１、３０２、３０６のみが列挙されたが、他のエントリがメモリ３００内に存在することができ、これは簡略な説明をするために省略された。エントリ３０１、３０２、３０６は先に説明されたエントリ２００と類似である。例えば、エントリ３０１、３０２はプロデューサーエントリであり得り、エントリ３０６は２つのプロデューサーエントリ３０１、３０２に依存する従属エントリであり得る。メモリ構造３００はスケジューラー又は他のバッファであり得る。図示していないが、プロデューサーエントリ３０１、３０２はエントリ３０６と類似にカウンター２１２又は従属ベクトル２１６を包含することもあり得る。
【００３９】
本実施形態において、エントリ３０６は複数の他のエントリ３０１、３０２に依存又は従属する従属エントリである。エントリ３０６はカウンター３１２を含み、カウンター３１２の値はエントリ３０６が依存するエントリの総数を示すバイナリ数（ｂｉｎａｒｙ  ｎｕｍｂｅｒ）にローディングされ得る。本実施形態において、カウンター３１２は２（即ち、２進数の‘１０’）にセッティングされ、これはエントリ３０６が２つの他のエントリ３０１、３０２に依存することを示す。
【００４０】
追加的に、本実施形態において、従属ベクトル３１６はメモリ３００内の潜在的なエントリの数と同一な複数のビットを含む。各ビットはエントリの中でいずれか１つと対応する。セットビットはエントリ３０６が該当ビットに対応するメモリ位置に位置するエントリに依存することを示す。例えば、本実施形態において、従属ベクトル３１６の値は１１０（２進数）にセットされている。仮にメモリ３００内の潜在的なエントリの数が１６であれば、従属ベクトルの幅（ｗｉｄｔｈ）は１６である。したがって、従属ベクトル３１６は０００００００００００００１１０（２進数）である。図３では簡略に説明するために、さらに多数の有効ビットのゼロ(０)の値は図示されない。従属ベクトル３１６のビットは１と２とにセットされているので、この従属ベクトル３１６はエントリ３０６がエントリ３０１及びエントリ３０２に依存することを示す。仮にエントリ３０６が他のエントリに依存すれば、従属ベクトル３１６の相応するビットもまたセットされる。
【００４１】
上述したように、カウンター３１２の値はエントリ３０６が依存するエントリの数にセットされることができる。例えば、一実施形態において、各エントリ３０１、３０２は１つの目的地（ｄｅｓｔｉｎａｔｉｏｎ）を有することができる。したがって、エントリ３０６が依存する目的地の数はエントリの数と同一であり得る。しかし、他の実施形態において、カウンター３１２の値はエントリ３０６の目的地（ｄｅｓｔｉｎａｔｉｏｎ）の数にセットされることができる。以下でさらに詳細に説明されるように、各エントリ３０１、３０２は１つ又はその以上の目的地を有することができる。カウンター３１２の値はエントリ３０６が依存する特有の目的地の総数にセットされることができる。
【００４２】
以下でさらに詳細に説明されるように、ディペンデンシーを整理（ｃｌｅａｒｉｎｇ）し、リビルディング（ｒｅｂｕｉｌｄｉｎｇ）することは従属ベクトル３１６のビットを整理することを伴わず、カウンター３１２を減少させるか、或いは増加させることによって遂行される。たとえ幾つかの実施形態において、選択されたエントリのための従属ベクトル３１６のディペンデンシーが整理されたとしても、他の実施形態の従属ビット（ｄｅｐｅｎｄｅｎｃｙ  ｂｉｔ）はセットされたまま維持される。即ち、従属ベクトル３１６はディペンデンシーを整理し、リビルディングする時に修正されなくとも良い。本発明の技術的思想に従う一実施形態において、ディペンデンシーを整理することはカウンターを減少させることによって簡単に遂行されることができ、ディペンデンシーをリビルディングすることはカウンターを増加させることによって簡単に遂行されることができる。したがって、本発明の技術的思想の実施形態によるディペンデンシーを整理し、リビルディングするシステム及び方法はその構成又は動作の複雑性を相当部分低くすることができ、また面積とパワーとの観点で消耗されるコスト（ｃｏｓｔ）を減少させ得る。
【００４３】
本実施形態において、カウンター３１２の値を生成する時、その値は従属ベクトル３１６内の従属ビットのポップカウント（ｐｏｐ−ｃｏｕｎｔ）によって生成される。例えば、従属ベクトル３１６内のセットビットの数（例えば、ゼロ（０））がカウントされる。図３の実施形態で、従属ベクトル３１６の２つの１はカウンター３０６の１０（２進数）のカウンター値をもたらす。
【００４４】
カウンター３１２はエントリの最大数（ｍａｘｉｍｕｍ  ｎｕｍｂｅｒ）と同一であるか、或いはそれより大きい値を格納するように充分な幅（ｗｉｄｔｈ）を有するように提供され得る。例えば、仮に１つのメモリ３００が１６の深さ（ｄｅｐｔｈ）を有し、システムが総４つのメモリ３００を有するように構成され、１つのエントリ３０６が４つのメモリ３００の中でいずれか１つのメモリからのいずれか１つのエントリに依存すれば、１つのエントリが依存できるエントリの最大数は６３であり、これはその自分のエントリは包含しない値である。本実施形態において、６ビット又はその以上の幅を有するカウンター３１２がディペンデンシーの総最大数を計算するのに充分な幅を提供するように使用される。
【００４５】
他の実施形態において、カウンター３１２はエントリ３０６が依存するエントリの最大数（ｍａｘｉｍｕｍ  ｎｕｍｂｅｒ）を示すのに必要であるビットの最小数（ｍｉｎｉｍｕｍ  ｎｕｍｂｅｒ）と同一であるか、或いは大きい幅を有する。例えば、与えられたエントリが依存するエントリの数が２に制限された場合に、減少された幅を有するカウンター３１２が使用されることができる。このような場合に、２ビットの幅のカウンター３１２は最大カウント（ｍａｘｉｍｕｍ  ｃｏｕｎｔ）として２を格納して使用することができる。即ち、潜在的なディペンデンシーの数に関わらず、与えられたエントリに対するディペンデンシーの最大数は２であり、２の幅を有するカウンター３１２が使用される。
【００４６】
本発明の技術的思想に従う他の実施形態において、カウンター３１６の値は従属ベクトル３１６の値をカウンティングするよりは論理演算（ｌｏｇｉｃａｌ  ｏｐｅｒａｔｉｏｎｓ）によって生成され得る。最大２のディペンデンシーを有する実施形態を利用して説明すれば、論理和演算（ＯＲ  ｏｐｅｒａｔｉｏｎ）と排他的論理和演算（ｅｘｃｌｕｓｉｖｅ  ＯＲ  ｏｐｅｒａｔｉｏｎ、ＸＯＲ  ｏｐｅｒａｔｉｏｎ）とがカウンターのビットを生成するために使用され得る。例えば、従属ベクトル３１６のビットの排他的論理和演算は１つの従属ビットがセットされる場合のみに１を生成する。仮に排他的論理和演算の結果が０であれば、従属ビットの数が０又は２であるか否かを決定するために論理和演算が以後遂行されることができる。論理和演算の演算結果０はゼロ０のディペンデンシービットがセットされたことを示し、反面論理和演算の演算結果１は２つ２のビットがセットされたことを示す。ここで、排他的論理和演算結果はカウンター３１２の最小有効ビット（ｌｅａｓｔ−ｓｉｇｎｉｆｉｃａｎｔ−ｂｉｔ、ＬＳＢ）を形成し、排他的論理和演算の演算結果と論理和演算の演算結果の組合（ｃｏｍｂｉｎａｔｉｏｎ）はカウンター３１２の最大有効ビット（ｍｏｓｔ−ｓｉｇｎｉｆｉｃａｎｔ−ｂｉｔ、ＭＳＢ）を形成する。以下の数式１と数式２はカウンター３１２のＭＳＢとＬＳＢとを生成するのに使用される関数の例を示し、ここで、Ｘは排他的論理和演算ＸＯＲの結果を示し、Ｏは論理和演算ＯＲの結果を示す。
［数式１］
ＬＳＢ＝Ｘ
［数式２］
【００４７】
【数１】
2014179101.tif 000003
【００４８】
上述したようにディペンデンシーの最大数が２である場合にカウンターのビットを生成する論理（ｌｏｇｉｃ）の幾つかの例が説明されたが、論理演算はいずれかの数のディペンデンシーに対するカウンター３１２値を生成するように使用されることができ、例えば、ディペンデンシーの最大数を格納するために２ビット以上が必要である場合にも使用され得る。したがって、従属ビットの数をカウントするカウンターとそのようなカウンターに対応する遅延（ｄｅｌａｙ）は減少され得る。
【００４９】
先に説明された従属ベクトル３１６がメモリ３００のエントリを参照することが説明されたが、本発明の技術的思想はこれに限定されず、従属ベクトル３１６は他のメモリ、テーブル、キュー（ｑｕｅｕｅｓ）を参照でき、又はエントリ、データ、命令語（ｉｎｓｔｒｕｃｔｉｏｎｓ）、動作（ｏｐｅｒａｔｉｏｎｓ）を含むこと又はエントリ３０６が依存することを参照することもできる。さらに、先に説明された従属ベクトル３１６は特定構造を有することが説明されたが、従属ベクトル３１６は多様な構造を有することができる。例えば、従属ベクトル３１６はレジスター、命令語、エントリ、データ、キャッシュ（ｃａｃｈｅｓ）等のようなレファレンスを包含することができる。さらに、従属ベクトル３１６とカウンター３１２がエントリ−レベル粒度（ｅｎｔｒｙ−ｌｅｖｅｌ  ｇｒａｎｕｌａｒｉｔｙ）をトラッキング（ｔｒａｃｋｉｎｇ）することが説明されたが、多様なレベルの粒度（ｇｒａｎｕｌａｒｉｔｙ）が使用され得る。例えば、カウンター３１２がエントリ３０６が依存するレジスターの数をトラッキングする場合にレジスター−レベル粒度（ｒｅｇｉｓｔｅｒ−ｌｅｖｅｌ  ｇｒａｎｕｌａｒｉｔｙ）が使用され得る。１つのエントリ３０１はエントリ３０６が依存する複数のレジスターに連関され得る。したがって、１つのエントリ３０１は１より大きいカウンター３１２値の増加をもたらす。
【００５０】
本発明の技術的思想にしたがって、従属ベクトル３１６の構造に関わらず、従属ベクトル３１６はディペンデンシーが整理されるか、或いはリビルディングされることにしたがって整理されるか、セットされるか、又は修正される必要がない。即ち、カウンター３１２を使用して解決されたディペンデンシー（ｒｅｓｏｌｖｅｄ  ｄｅｐｅｎｄｅｎｃｉｅｓ）又は解決されないディペンデンシー（ｕｎｒｅｓｏｌｖｅｄ  ｄｅｐｅｎｄｅｎｃｉｅｓ）をトラッキングすることは従属ベクトル３１６それ自体を修正することを代替することができる。
【００５１】
図４乃至図８は本発明の技術的思想の実施形態による図３のカウンター３１２を減少させるか、或いは増加させる例を説明するための図面である。図４を参照すれば、図４は従属エントリ３０６が依存するエントリ３０１が推測的に選択された後に図３のメモリを示す。ここで、‘選択される（ｓｅｌｅｃｔｉｎｇ）’又は‘選択された（ｓｅｌｅｃｔｅｄ）’等のような用語はメモリ３００からエントリを除去するプロセスの一部分を示し得る。例えば、選択（ｓｅｌｅｃｔｉｎｇ）は遂行のためにエントリ３０１を選ぶことを包含することができ、エントリ３０１はスケジューラーのようなプロセッサパイプライン（ｐｒｏｃｅｓｓｏｒ  ｐｉｐｅｌｉｎｅ）内の命令語であり得る。エントリ３０１は選択（ｓｅｌｅｃｔｉｏｎ）に応答してメモリ３００から直ちに除去される必要はない。
【００５２】
エントリ３０１を選択することに応答して、カウンター３１２はディペンデンシーの数でその減少を示すように変化される。ここで、カウンター３１２はエントリ３０１を選択することに応答して１つのより少ないディペンデンシーを示すように減少される。しかし、注意することは、従属ベクトル３１６は変化しない。これはエントリ３０１のビットが整理されなかったので、従属ベクトル３１６は変わらなく、維持されることを示す。
【００５３】
カウンター３１２が変化された後に、カウンター３１２はエントリ３０６のディペンデンシーが整理されたか否かを判断するために閾値（ｔｈｒｅｓｈｏｌｄ）と比較される。仮にカウンター３１２を閾値と比較した結果がディペンデンシーが整理されたことを示せば、エントリ３０６は選択される準備ができていることを示す。例えば、閾値が０（ｚｅｒｏ）であれば、これは０（ｚｅｒｏ）のディペンデンシーが残っていることを示す。本実施形態で、図４のカウンター３１２は０ではないので、エントリ３０６は未だ選択される準備ができなかった。さらに具体的に、エントリ３０６が追加的に依存するエントリ３０２が未だ選択されなかったので、従属エントリ３０６は未だ選択される準備ができていなかった。
【００５４】
図５を参照すれば、図５は従属エントリ３０６が依存する第２エントリ３０２が選択された後の図４のメモリを説明するための図面である。図４で説明された動作と類似に、カウンター３１２はエントリ３０２の選択に応答して再び１回減少される。減少されたカウンター３１２の結果が本実施形態の閾値と同一な０（ｚｅｒｏ）の値を示すので、エントリ３０６は選択される準備ができている。
【００５５】
前記の説明では０の閾値と明確に比較する動作が遂行されたが、必ず明確な比較動作が遂行される必要はない。例えば、カウンター３１２はカウンター３１２が０に到達する時、ゼロフラッグ（ｚｅｒｏ  ｆｌａｇ）にセットされることができる。エントリ３０６はゼロフラッグに応答して選択される準備ができていることを示す。
【００５６】
上述したように、エントリ３０６は従属ベクトル３１６のエントリを整理せず、選択される準備に成り得る。これは、図４で説明された初期状態の従属ベクトル３１６が図３及び図５の従属ベクトルと同一であるか、或いは実質的に同一であることを意味する。ただカウンター３１２のみが変化し、従属ベクトル３１６は変化しない。
【００５７】
ディペンデンシーをリビルディング（ｒｅｂｕｉｌｄｉｎｇ）する動作が図６乃至図８を参照して説明される。図６を参照すれば、図６はエントリ３０１が取り消された（ｃａｎｃｅｌｌｅｄ）後の図５のメモリを示す。本実施形態で、取消し（ｃａｎｃｅｌｌｉｎｇ）はエントリ３０１と関連された動作が該当動作を完了する前に該当動作を中止（ｓｔｏｐｐｉｎｇ）させることを含む。例えば、仮にエントリ３０１が命令語（ｉｎｓｔｒｕｃｔｉｏｎ）であれば、エントリ３０１はローディングミス（ｌｏａｄ  ｍｉｓｓ）、誤謬（ｆａｕｌｔ）、ハザード（ｈａｚａｒｄ）等のような多様な原因によって取り消され得る。図６に示したように、カウンター３１２はエントリ３０６が依存するエントリ３０１の取消しに応答して変化する。ここで、カウンター３１２は１の数だけ増加された。
【００５８】
図７を参照すれば、図７は他のエントリ３０２が取り消された後に図５のメモリを示す図面である。図６に図示されたのとは異なるエントリ３０２が取り消されたとしても、カウンター１２は推測的に整理されたディペンデンシーの中でいずれか１つが取り消されたことを示すように相変わらず、１の数だけ増加される。したがって、いずれのエントリが取り消されたか否かに関わらず、いずれか１つのエントリが取り消される時、従属エントリ３０６の変化は実質的に同一である。
【００５９】
本発明の技術的思想に従う実施形態において、取り消されたエントリのアイデンティティ情報（ｉｄｅｎｔｉｔｙ  ｉｎｆｏｒｍａｔｉｏｎ）は記録される必要がない。言い換えれば、カウンター３１２は残っているディペンデンシーの数を追跡することができ、特定ディペンデンシーが残っているかに対する情報を維持する必要はない。エントリ３０６が選択される前にすべてのディペンデンシーが整理されなければならないので、このような方法は従属ベクトル３１６のビットを整理することに関連された複雑な手続を伴わなくともエントリ３０６が選択される準備ができているか否かを判断する効果的な手段を提供する。
【００６０】
図８を参照すれば、図８はプロデューサーエントリ３０１、３０２が全て取り消された後の図５のメモリを示す図面である。例えば、エントリ３０１は図７と類似にエントリ３０２が取り消された後に取り消され得り、エントリ３０２は図６と類似にエントリ３０１が取り消された後に取り消され得る。いずれのエントリが先ず取り消されたか否かに関わらず、エントリ３０６が依存するエントリの各取消し動作はカウンター３１２が追加されたカウンター値の数だけ増加されることをもたらす。本実施形態で、エントリ３０６が依存する２つのエントリ３０１、３０２が全て取り消されたので、カウンター３１２は本来の値である２に戻っていくように増加された。
【００６１】
図８のメモリ３００はまた実質的に同時に取り消された複数のエントリに起因し得る。例えば、メモリ３００は図５で説明された状態であり得る。仮に２つのエントリ３０１、３０２が実質的に同時に取り消されれば、カウンター３１２はこれに応答して２の数だけ増加される。これはカウンター３１２が取消しのタイミングや順序に関わらず、取り消されたエントリの数にしたがって増加されることを意味する。結果的に、カウンター３１２の値は相変わらずエントリ３０６の解決されないディペンデンシー（ｕｎｒｅｓｏｌｖｅｄ  ｄｅｐｅｎｄｅｎｃｉｅｓ）を追跡することができる。
【００６２】
上述したように、エントリは選択されるか、或いは取り消され得る。本発明の技術的思想の実施形態において、従属ベクトル３１６をリビルディングすることはディペンデンシービットが整理されることにしたがって要求されることではない。むしろ、カウンター３１２はエントリ３０６が依存するエントリが選択されるか、或いは取消されることにしたがって減少するか、或いは増加され得る。
【００６３】
ディペンデンシーを追跡メカニズムとしてカウンター３１２を増加させるか、或いは減少させることが先に詳細に説明されたが、カウンター３１２を変化させる方向（ｄｉｒｅｃｔｉｏｎ）は異なり得る。例えば、本実施形態において、カウンター３１２はエントリ３０１、３０２のために−２のような負の数にローディングされ得り、符号化された数としてカウンター３１２内にエンコーディングされ得る。カウンター３１２はエントリが選択されることにしたがって増加され、エントリが取消されることにしたがって減少される。一旦、カウンター３１２が０の閾値に到達すれば、エントリ３０６は選択される準備ができていることを示され得る。
【００６４】
また、０が閾値として使用されたが、他の値が閾値として使用され得る。例えば、一実施形態において、カウンター３１２は初期に０にセットされ、閾値はエントリ３０６のディペンデンシーの数にセットされることができる。カウンター３１２はエントリが選択されることにしたがって増加でき、エントリが取消されることにしたがって減少され得る。例えば、２つのディペンデンシーを有する先に説明された実施形態において、閾値は２に設定され得る、一旦カウンター３１２の値が２に到達すれば、エントリ３０６は選択される準備ができていることを示され得る。
【００６５】
１つのメモリ３００が実施形態として説明されたが、複数のメモリ３００が使用されることもあり得る。さらに、複数のメモリ３００は同一の機能の一部である必要もない。例えば、１つ又はそれ以上のメモリ３００は複数命令語スケジューラー（ｍｕｌｔｉｐｌｅ  ｉｎｓｔｒｕｃｔｉｏｎ  ｓｃｈｅｄｕｌｅｒｓ）の一部であり得り、反面に１つ又はその以上のメモリ３００はリプレイキュー（ｒｅｐｌａｙ  ｑｕｅｕｅ）の一部であり得る。さらに、何らかのエントリも何らかのメモリ３００のエントリに依存することができる。さらに、エントリを取消すことは、そのエントリがその本来のメモリ３００に戻っていくようにする結果をもたらすようにする必要もない。例えば、スケジューラーのためのメモリ３００からの命令語はリプレイキューのための他のメモリ３００に移動することができる。
【００６６】
図９は本発明の技術的思想の実施形態による複数の目的地（ｄｅｓｔｉｎａｔｉｏｎｓ）を伴う複数のエントリと複数の従属エントリの例を含むメモリ９００を示す図面である。本実施形態において、エントリ９０１は目的地Ａ、Ｂを含む。エントリ９０２は目的地Ｃ、Ｄ、Ｅを含む。
【００６７】
本実施形態において、従属ベクトル９０６、９１０、９１４は目的地に対応するビットを含む。ここで、最小有効ビットＬＳＢから始めて、ビットは目的地Ａ、Ｂ、Ｃ、Ｄ、Ｅに対応する。他の目的地が存在することができる。しかし、簡略な説明のために、ただＡ〜Ｅの目的地のみが図示されている。他の実施形態において、従属ベクトルはこれとは異なる方式に示されることもある。
【００６８】
エントリ９０４、９０８、９１２はエントリ９０１、９０２に依存する。具体的に、エントリ９０４、９０８、９１２各々はエントリ９０１、９０２の目的地に依存するソースを有している。エントリ９０４はソース９０７−１、９０７−２を含む。ソース９０７−１は目的地Ｂに依存し、反面ソース９０７−２は目的地Ｃに依存する。ここで、従属ベクトル９０６の００１１０（２進数）はエントリ９０４が目的地Ｂ、Ｃに依存することを示す。カウンター９０５はエントリ９０４が依存する目的地の数を示す。ここで、カウンター９０５はエントリ９０４が互に異なる目的地に依存することにしたがって１０（２進数）に設定されている。
【００６９】
エントリ９０８はソース９１１−１、９１１−２、９１１−３を含む。ソース９１１−１、９１１−２は各々目的地Ａに依存し、反面ソース９１１−３は目的地Ｃに依存する。ここで、従属ベクトル９１０の００１０１（２進数）はエントリ９０８が目的地Ａ、Ｃに依存することを示す。カウンター９０９はエントリ９０８が依存する目的地の数にセットされている。ここで、カウンター９０９はエントリ９０８が互に異なる目的地Ａ、Ｃに依存することにしたがって１０（２進数）にセットされている。注意する点はエントリ９０８が３つのソース９１１を包含するとしても、エントリ９０８は単なる２つの目的地に依存することである。
【００７０】
エントリ９１２はソース９１５−１、９１５−２、９１５−３を含む。ソース９１５−１は目的地Ａに依存し、ソース９１５−２は目的地Ｂに依存し、ソース９１５−３は目的地Ｃに依存する。ここで、従属ベクトル９１４の００１１１（２進数）はエントリ９１２が目的地Ａ、Ｂ、Ｃに依存することを示す。カウンター９１３はエントリ９１２が依存する目的地の数にセットされている。ここで、カウンター９１３はエントリ９１２が互に異なる３つの目的地Ａ、Ｂ、Ｃに依存することにしたがって１１（２進数）にセットされている。注意する点はエントリ９１２がエントリ９０１、９０２に依存するとしても、カウンター９１３はエントリ９１２がエントリ９０１の２つの目的地及びエントリ９０２の１つの目的地に依存することにしたがって３にセットされることである。
【００７１】
上述したように、カウンター９０５、９０９、９１３はエントリ９０１、９０２を選択することに応答して変わられる。例えば、エントリ９０１を選択することに応答して、カウンター９０５はエントリ９０４がエントリ９０１からただ１つの目的地Ｂに依存することにしたがって１の数だけ減少される。カウンター９０９はまた、エントリ９０８がエントリ９０１からただ１つの目的地Ａのみに依存することにしたがって、たとえ複数のソース９１１−１、９１１−２が目的地Ａに依存するとしても１の数だけ減少される。しかし、カウンター９１３はエントリ９１２がエントリ９０１から２つの目的地Ａ、Ｂに依存することにしたがって２の数だけ減少される。
【００７２】
本実施形態において、各エントリ９０４、９０８、９１２は単なるエントリ９０２の目的地Ｃに依存する。したがって、カウンター９０５、９０９、９１３はエントリ９０２を選択することに応答して１の数だけ減少される。しかし、他の実施形態において、エントリ９０４、９０８、９１２はエントリ９０１と類似にエントリ９０２の複数の目的地に対応することができ、対応するカウンターはこれによって変化することができる。
【００７３】
エントリ９０１、９０２を選択することに応答してカウンター９０５、９０９、９１３を変更することが説明されたが、カウンター９０５、９０９、９１３は先に説明されたようにエントリ９０１、９０２を取り消すことに応答して変化され得る。例えば、仮にエントリ９０１が取り消されれば、カウンター９０５、９０９、９１３は各々１、１、２の数だけ増加される。さらに、たとえカウンターを増加させ、減少させることがカウンター９０５、９０９、９１３を変化させる例として使用されたが、カウンター９０５、９０９、９１３は説明されたことと異なる方式に変化されることもある。
【００７４】
一実施形態として、先に説明されたソースと目的地は命令語のレジスター（ｒｅｇｉｓｔｅｒｓ）であり得る。例えば、目的地Ａ〜Ｅは互に異なる５つのレジスターに対応することができる。ソース９０７、９１１、９１５は他のレジスターを参照することができる。レジスターがソース及び目的地の例として使用されたが、他の技術が使用され得る。例えば、ソースと目的地はメモリ位置、ルックアップテーブル（ｌｏｏｋｕｐ  ｔａｂｌｅ）に対するタグ、他のデータ格納位置等を参照することができる。
【００７５】
エントリ９０１、９０２がエントリ９０４、９０８、９１２に比べて他の構成要素を有することが説明されたが、追加的な構成要素は簡略に説明するために説明されない。これは、エントリ９０１、９０２もやはりカウンター、ソース、従属ベクトルを有し得り、エントリ９０４、９０８、９１２は目的地を有し得ることを言う。
【００７６】
一実施形態において、先に説明された目的地とソースは、命令語の目的地（ｉｎｓｔｒｕｃｔｉｏｎ  ｄｅｓｔｉｎａｔｉｏｎｓ）と命令語のソース（ｉｎｓｔｒｕｃｔｉｏｎ  ｓｏｕｒｃｅｓ）であり得る。例えば、以下で説明されるように、メモリ９００はプロセッサ又はシステムの一部であり得り、スケジューラー等の一部であり得る。したがって、エントリは命令語と関連され得り、したがって目的地とソースは対応する命令語の目的地とソースであり得る。
【００７７】
図１０は本発明の技術的思想の実施形態による装置１０００を示すブロック図である。本実施形態において、メモリ１００２は先に説明されたメモリ３００と類似に複数のエントリを格納することができる。したがって、各従属エントリはカウンターを包含することができる。コントローラ１００４はメモリ１００２に連結され得る。コントローラ１００４は先に説明された動作を遂行することができる。例えば、コントローラ１００４は従属エントリが依存する他のエントリが選択されるか、或いは取消されることにしたがって従属エントリと関連されたカウンターを変化させる。
【００７８】
先に説明されたように、複数のメモリが存在することができる。したがって、コントローラ１００４は１つ又はそれ以上の他のメモリ１００２に連結され得る。コントローラ１００４は各メモリ１００２に対して先に説明されたような動作を遂行することができる。他の実施形態において、図示していないが、各メモリ１００２は互に異なるコントローラに連結され得る。
【００７９】
図１１は本発明の技術的思想の実施形態による命令語パッチ（ｉｎｓｔｒｕｃｔｉｏｎ  ｐａｔｈ）の一部分を示すブロック図である。本実施形態において、ディスパッチャー（ｄｉｓｐａｔｃｈｅｒ）１１０２によって受信された命令語は、１つ又はそれ以上のスケジューラー１１０６に転送され得る。スケジューラー１１０６は命令語が遂行ユニット１１０８に転送されたか否かを判断することができる。各スケジューラー１１０６は先に説明されたようにメモリ３００を含む。メモリ３００のエントリはスケジューラー１１０６内で待機（ｗａｉｔｉｎｇ）する命令語に対応することができる。
【００８０】
したがって、命令語は遂行ユニット１１０８で遂行のために選択され得る。命令語が選択されることにしたがって、いずれかの従属命令語（ｄｅｐｅｎｄｅｎｔ  ｉｎｓｔｒｕｃｔｉｏｎ）と関連されたカウンターが、先に説明されたことと類似な方式に変化され得る。これと類似に、遂行ユニット１１０８で命令語が取り消されることにしたがって、いずれかの従属命令語と関連されたカウンターは、再び先に説明されたことと類似な方式に変化され得る。結果的に、命令語が取り消される時、いずれかの従属命令語の従属ベクトルは対応する従属命令語のカウンターが変化されることにしたがって、未だ解決されないディペンデンシーを反映するためにリビルディングされる必要がなく、従属ベクトルは修正されない。
【００８１】
一実施形態において、システムは従属ベクトル内の従属命令語の従属ビットを整理することに依存する必要がない。代わりにシステムは従属命令語のために予めローディングされたカウンター値（ｐｒｅ−ｌｏａｄｅｄ  ｃｏｕｎｔｅｒ  ｖａｌｕｅ）をプロデューサーのウェークアップ（ｗａｋｅｕｐ）に応答して減少させ得る。結果的に、プロデューサーが取り消された時、ディペンデンシーを再び生成することはカウンターをその元の値に戻らせることによって遂行されることができる。このような技術の長所は従属ベクトルをリビルディングすることが相対的に簡単であり、費用消耗が少なく、面積とパワー側面で有利である。
【００８２】
システムはマトリックススケジューラー（ｍａｔｒｉｘ  ｓｃｈｅｄｕｌｅｒ）に基づいたスケジューラーエントリ数を使用する１つ又はその以上のスケジューラー１１０６を包含することができる。マトリックススケジューリングスキーム（ｍａｔｒｉｘ  ｓｃｈｅｄｕｌｅｒ  ｓｃｈｅｍｅ）に基づいたスケジューラーエントリ数において、従属ベクトルは、スケジューラー内の命令語ごとに又はエントリごとに格納され得る。ベクトルはスケジューラーの深さ（ｄｅｐｔｈ）だけの広さ（ｗｉｄｔｈ）を有し得り、ソースディペンデンシー（ｓｏｕｒｃｅ  ｄｅｐｅｎｄｅｎｃｙ）ごとにビットを設定することによって命令語のすべてのディペンデンシーをキャプチャ（ｃａｐｔｕｒｅ）することができる。ここで、ソースはプロデューサー命令語であり得る。セットされたビットの位置はソースデータのプロデューサーのエントリ数を示す。注意する点は命令語のすべてのソースが同一のプロデューサーに依存すれば、単なる１ビットセットが在ることである。言い換えれば、ビット数のセットはディペンデンシーを有するソースの数よりは命令語が依存する他のプロデューサーの数を示す。
【００８３】
実施形態として、３２エントリスケジューラー１１０６を使用すれば、前記３２エントリスケジューラー１１０６はエントリを含み各エントリは１つの命令語に対応する。各エントリはそのソースのディペンデンシーを示す３２ビット従属ベクトルを有する。仮にこのような３２ビットベクトルのＮ番目ビットがセットされれば、それは１つ又はその以上のソースがエントリＮのプロデューサーに対するディペンデンシーを有することを示す。
【００８４】
各スケジューラーエントリは予めローディングされたカウンター（ｐｒｅ−ｌｏａｄｅｄ  ｃｏｕｎｔｅｒ）を有し得り、該当カウンターの値は命令語が依存するプロデューサーの総数を示し得る。このカウント値は従属ベクトル内の３２ディペンデンシービットのポップカウント（ｐｏｐ−ｃｏｕｎｔ）によって生成され得る。しかし、１つの命令語に属するソースの数は１桁の数より小さく、したがって、フル３２ビットポップカウント（ｆｕｌｌ  ３２  ｂｉｔ  ｐｏｐ−ｃｏｕｎｔ）は恐らく必要としない。例えば、仮に命令語が単なる最大２つのソースを有すれば、従属ベクトル内のビットの最大数セットは単なる２であり得る。このような場合に、ポップカウントの代わりに従属ビットの排他的論理和ＸＯＲ及び従属ビットの論理和ＯＲを使用してカウントする方法が選択され得る。仮に排他的論理和ＸＯＲの結果が１であれば、これは単なる１従属ビットがセットされたことを示す。仮に排他的論理和ＸＯＲの結果が０であれば、これは２従属ビットがあるか、或いはセットされた従属ビットがないことの中でいずれか１つを示す。２ビット又はいずれのビットも選択されなかったか否かを決定するために、ビットの論理和ＯＲを実行することもある。仮にその結果が１であれば、これは２ビットがセットされたことを示し、結果が０であれば、これはセットされたビットがないことを示す。したがって、排他的論理和ＸＯＲと論理和ＯＲの組合せは効果的なポップカウントを提供する。また、すべての３２ビットのフルポップカウント（ｆｕｌｌ  ｐｏｐ−ｃｏｕｎｔ）を遂行しなくとも、予めローディングされたカウンター値を得る多様な方法があり得る。
【００８５】
プロデューサーが従属ソースをウェークアップする時、従属ビットを整理することの代わりに従属カウンター値が減少される。カウンター値が０（ｚｅｒｏ）に到達する時、命令語は選択される準備ができている。
【００８６】
仮にプロデューサーが推測的にそれの従属ソースをウェークアップし、以後、例えばローディングミス、誤謬、ハザード等のような多様な理由で最小になれば、従属カウンター値は１の数だけ後に増加される。仮にプロデューサーが実質的に概ね同時に取り消されれば、カウンター値は取り消されたプロデューサーの数と同一な値の数だけ増加される。
【００８７】
一実施形態において、命令語当たり従属カウンターは消費者命令語（ｃｏｎｓｕｍｅｒ  ｉｎｓｔｒｕｃｔｉｏｎ）が依存する特定プロデューサー命令語の数を追跡するのに使用される。
【００８８】
他の実施形態において、スケジューラー１１０６に命令語が割当される時、従属カウンター値が各命令語のためにセットされる。
【００８９】
他の実施形態において、従属命令語のための従属カウンター値はプロデューサー命令語が従属命令語をウェークアップする時、１の数だけ減少される。
【００９０】
他の実施形態において、命令語のためのすべてのディペンデンシーが合致する時、言い換えれば従属命令語のすべてのプロデューサーがウェークアップを発生させる時、命令語の従属カウンター値は０になり、選択される準備ができている。
【００９１】
他の実施形態において、プロデューサー命令語によって発生したウェークアップが推測的であり、プロデューサー命令語が取り消される時、従属命令語の従属カウンター値は１の数だけ増加する。
【００９２】
他の実施形態において、命令語ソース従属ビットはプロデューサー命令語によって発生されたウェークアップによって整理されない。
【００９３】
他の実施形態において、プロデューサーが取り消された場合の命令語従属ビット（ｉｎｓｔｒｕｃｔｉｏｎ  ｄｅｐｅｎｄｅｎｃｙ）のリビルディングは命令語従属ビットが整理されないことにしたがって、要求されず、単なるカウンター値がリビルディングされる必要がある。
【００９４】
たとえ多様なエントリに対してプロデューサーという用語が前記使用されたが、エントリは何も生産（ｐｒｕｄｕｃｅ）しないことがあり得る。一実施形態として、プロデューサーエントリはレジスターがその動作の結果を格納するプロデューサー命令語であり得る。従属エントリ又は従属命令語はレジスターの値を使用することができる。他の実施形態において、第１エントリは第２エントリの順序に概ね依存しない。即ち、第１エントリは第２エントリの出力を利用せず、単なる第２エントリの後に遂行される必要のみがある。
【００９５】
図１２は本発明の技術的思想の実施形態によるプロセッサを含むシステム１２００を示すブロック図である。電子システム１２００はコンピューターのような多様であり、広範囲である電子機器に使用でき、また携帯可能であるノートブック型コンピューターコンピューター、ウルトラモバイルＰＣ（ＵＭＰＣ）、タブレットＰＣ、サーバー、ワークステーション、モバイルコミニュケ−ション装置、衛星、セットトップボックス（ｓｅｔ  ｔｏｐ  ｂｏｘ）、ＴＶ等に使用され得る。例えば、電子システム１２００はバス１２２０を利用してデータ通信を遂行するメモリシステム１２１２、プロデューサー１２１４、ＲＡＭ１２１６、ユーザーインターフェイス１２１８を包含することができる。
【００９６】
プロセッサ１２１４はマイクロプロセッサ又はモバイルプロセッサＡＰであり得る。プロセッサ１２１４はフローティングポイントユニット（ｆｌｏａｔｉｎｇ  ｐｏｉｎｔ  ｕｎｉｔ、ＦＰＵ）、アルゴリズムロジックユニット（ＡＬＵ）、グラフィックプロセシングユニット（ＧＰＵ）、及びデジタル信号プロセシングコア（ＤＳＰ  Ｃｏｒｅ）又はこれらの間の結合を包含することができるプロセッサコア（ｐｒｏｃｅｓｓｏｒ  ｃｏｒｅ）を有することができる。プロセッサ１２１４はプログラムを遂行することができ、電子システム１２００を制御することができる。プロセッサ１２１４は先に説明されたようにメモリ３００、９００、１００２、コントローラ２００４を包含することができる。
【００９７】
ＲＡＭ１２１６はプロセッサ１２１４の動作メモリ（ｏｐｅｒａｔｉｎｇ  ｍｅｍｏｒｙ）として使用され得る。例えば、プロセッサ１２１４又はＲＡＭ１２１６は先に説明された本発明の実施形態によるメモリを包含することができる。一実施形態として、プロセッサ１２１４とＲＡＭ１２１６とは１つのパッケージボディー（ｐａｃｋａｇｅ  ｂｏｄｙ）に実装され得る。
【００９８】
ユーザーインターフェイス１２１８はデータを電子システム１２００に入力するか、或いは電子システム１２００から出力するのに使用され得る。メモリシステム１２１２はプロセッサ１２１４を動作するためのコード、プロセッサ１２１４によって処理されたデータ、又は外部入力データを格納することができる。メモリシステム１２１２はメモリコントローラとメモリとを含む。
【００９９】
本説明において、全体的に言及された‘１つの実施形態’又は‘一実施形態’等の用語は該当実施形態と関連された具体的特徴、構造、特性が本発明の少なくとも１つの実施形態に含まれることを意味する。
【０１００】
したがって、本説明での‘１つの実施形態’又は‘一実施形態’は同一の実施形態を意味することと理解される必要はない。さらに、具体的な特性、構造、特徴等は１つ又はその以上の実施形態が結合されることもあり得ることと理解しなければならない。
【０１０１】
たとえ本発明の実施形態にしたがって構造、方法、システム等がある説明されたが、本発明の技術的思想はこれに限定されず、多様に適用及び応用されることができることが理解できる。したがって、本発明の技術的思想の範囲内で多様な構造、方法、システムを具現することが可能であることもやはり理解できる。結局、本発明の技術的思想に対する権利範囲は先に説明された具体的な実施形態及び以下の請求項に記載された内容のみでなく、本発明の技術的思想に従う本発明の実施形態の可能である変形、応用、適用例を包含することが理解できる。
【符号の説明】
【０１０２】
ｉｎｓｔｒｕｃｔｉｏｎ・・・命令語
ｐｒｏｄｕｃｅｒ：プロデューサー
ｓｐｅｃｕｌａｔｉｖｅ  ｉｎｓｔｒｕｃｔｉｏｎ・・・推論的な命令語
ｄｅｐｅｎｄｅｎｃｙ  ｖｅｃｔｏｒ・・・従属ベクトル
ｄｅｐｅｎｄｅｎｃｙ  ｂｉｔ・・・従属ビット
ｄｅｐｅｎｄｅｎｃｙ・・・ディペンデンシー
ＯＲ  ｏｐｅｒａｔｉｏｎ・・・論理和演算
ＸＯＲ  ｏｐｅｒａｔｉｏｎ・・・排他的論理和演算
ｅｎｔｒｙ・・・エントリ
ｃｏｕｎｔｅｒ・・・カウンター
ｔｈｒｅｓｈｏｌｄ・・・閾値
ｕｓｅｒ  ｉｎｔｅｒｆａｃｅ・・・ユーザーインターフェイス
１００，２００  エントリ
１１２，２１２  カウンター
１１４，２１４  追加的な情報
２１６  属性ベクトル
３０１，３０２  プロデューサー
３０６  属性エントリ
３１２  カウンター
３１６  従属ベクトル
【図１】
2014179101.tif 000004
【図２】
2014179101.tif 000005
【図３】
2014179101.tif 000006
【図４】
2014179101.tif 000007
【図５】
2014179101.tif 000008
【図６】
2014179101.tif 000009
【図７】
2014179101.tif 000010
【図８】
2014179101.tif 000011
【図９】
2014179101.tif 000012
【図１０】
2014179101.tif 000013
【図１１】
2014179101.tif 000014
【図１２】
2014179101.tif 000015