(57)【特許請求の範囲】
【請求項１】
ロードユニット及びストアユニットを有するプロセッサに用いられ、ロード命令とストア命令との間のデータ依存性を確保しつつ、それらのアウトオブオーダーによる実行を可能にするロード／ストア実行コントローラであって、
それぞれがオペレーションシーケンスにおける対応のオペレーションを示しており、古い順に配列されたスケジューラオペレーションエントリと、
前記ロードユニットに接続され、前記ロードユニット内のロードオペレーションに対して相対的に古いストアオペレーションの存在を示すストアオルダ表示を受け取ると、前記ロードユニット内のロードオペレーションの実行を選択的に禁止するロード停止ロジックと、
前記スケジューラオペレーションエントリと前記ロード停止ロジックとに接続され、前記スケジューラオペレーションエントリの配列順に応じた前記ストアオルダ表示を前記ロード停止ロジックに提供するスキャンチェーンロジックと、により構成される、
ロード／ストア実行コントローラ。
【請求項２】
前記スケジューラオペレーションエントリは、オペレーションタイプとオペレーション状態フィールドとを備えており、前記スキャンチェーンロジックは、前記オペレーションタイプとオペレーション状態フィールドとに応じた前記ストアオルダ表示を前記ロード停止ロジックに提供するようになっている、
請求項１記載のロード／ストア実行コントローラ。
【請求項３】
前記ストアオルダ表示は、ストアオペレーション評価の予備段階における古いストアオペレーションの存在を表す第１ストアオルダ表示と、ストアオペレーション評価の第１実行段階における古いストアオペレーションの存在を表す第２ストアオルダ表示とを有しており、
前記スキャンチェーンロジックは、オペレーション状態フィールドを備えたストアオペレーション評価の各段階を区別するように構成される、
請求項２記載のロード／ストア実行コントローラ。
【請求項４】
前記ストアオルダ表示は、ストアオペレーション評価の第２実行段階における古いストアオペレーションの存在を表す第３ストアオルダ表示をさらに含む、
請求項３記載のロード／ストア実行コントローラ。
【請求項５】
前記ロード停止ロジックは、
前記ストアユニットに接続されて、ストアオペレーション評価の前記第１実行段階におけるストアオペレーションに対応する第１ストアターゲットアドレスを受け取る第１アドレスマッチロジックを有しており、
この第１アドレスマッチロジックは、前記ロードオペレーションの前記ターゲットアドレスに前記第１ストアターゲットアドレスを一致させるように構成されており、
前記ロード停止ロジックは、前記第１ストアオルダ表示に応じて前記ロードオペレーションの実行を禁止するように構成されるとともに、前記第１アドレスマッチロジックが、前記第１ストアターゲットアドレスと前記ロードオペレーションに関する前記ターゲットアドレスとが一致を示しているときに、前記第２ストアオルダ表示に応じて前記ロードオペレーションの実行を禁止するように構成される、
請求項３記載のロード／ストア実行コントローラ。
【請求項６】
前記ロード停止ロジックは、
前記ストアユニットに接続されて、ストアオペレーション評価の前記第１実行段階におけるストアオペレーションに対応する第１ストアターゲットアドレスを受け取り、前記ロードオペレーションの前記ターゲットアドレスに対して前記第１ストアターゲットアドレスを一致させる第１アドレスマッチロジックと、
前記ストアユニットに接続されて、ストアオペレーション評価の前記第２実行段階におけるストアオペレーションに対応する第２ストアターゲットアドレスを受け取り、前記ロードオペレーションのための前記ターゲットアドレスに対して前記第２ストアターゲットアドレスを一致させる第２のアドレスマッチロジックとを備えており、
前記ロード停止ロジックは、
前記第１ストアオルダ表示に応じて前記ロードオペレーションの実行を禁止し、
前記第１アドレスマッチロジックが前記第１ストアターゲットアドレスと前記ロードオペレーションのためのターゲットアドレスとの間の一致を表示するときに、前記第２ストアオルダ表示に応じて前記ロードオペレーションの実行を禁止し、
前記第２アドレスマッチロジックは、前記第２ストアターゲットアドレスと前記ロードオペレーションのための前記ターゲットアドレスとの間の一致を示すときに、前記第３ストアオルダ表示に応じて前記ロードオペレーションの実行を禁止するように構成される、
請求項４記載のロード／ストア実行コントローラ。
【請求項７】
前記第１アドレスマッチロジックは、
前記第１ストアターゲットアドレスのビットのサブセットのみを、ロードオペレーションのターゲットアドレスの対応するビットと一致させる部分的アドレスマッチ処理を実行するように構成される、
請求項５記載のロード／ストア実行コントローラ。
【請求項８】
前記第１及び第２アドレスマッチロジックは、
前記第１ストアターゲットアドレス及び前記第２ストアターゲットアドレスのビットのサブセットのみを、前記ロードオペレーションのターゲットアドレスの対応するビットに対して一致させる部分的アドレスマッチ処理を実行するように構成される、
請求項６記載のロード／ストア実行コントローラ。
【請求項９】
ロードユニット及びストアユニットを有するプロセッサに用いられ、ロード命令とストア命令との間のデータ依存性を確保しつつ、それらのアウトオブオーダーによる実行を可能にするロード／ストア実行コントローラであって、
それぞれがオペレーションシーケンスにおける対応のオペレーションを示しており、古い順に配列されたスケジューラオペレーションエントリと、
前記ストアユニットに接続され、前記ストアユニット内のストアオペレーションに対して相対的に古いロードオペレーションの存在を示すロードオルダ表示の受け取りの際に、前記ストアユニット内のストアオペレーションの実行を選択的に禁止するストア停止ロジックと、
前記スケジューラオペレーションエントリ及び前記ストア停止ロジックに接続され、前記スケジューラオペレーションエントリの配列順に応じた前記ロードオルダ表示を前記ストア停止ロジックに提供するスキャンチェーンロジックと、により構成される、
ロード／ストア実行コントローラ。
【請求項１０】
前記スキャンチェーンロジックは、
スケジューラオペレーションエントリの古いものから新しいものまでのスキャンチェーンであって、前記スケジューラオペレーションエントリの状態及びタイプフィールドが、前記ロードユニットにおけるロードオペレーションより古いストアオペレーション評価の予備段階におけるストアオペレーションを表示しているときに、第１ストアオルダ表示を供給する第１伝播−強制終了スキャンチェーンと、
スケジューラオペレーションエントリの古いものから新しいものまでのスキャンチェーンであって、前記スケジューラオペレーションエントリの状態及びタイプフィールドが、前記ロードユニットにおけるロードオペレーションより古いストアオペレーション評価の第１実行段階におけるストアオペレーションを表示しているときに、第２ストアオルダ表示を供給する第２伝播−強制終了スキャンチェーンと、により構成される、
請求項３記載のロード／ストア実行コントローラ。
【請求項１１】
前記スキャンチェーンロジックは、
スケジューラオペレーションエントリの古いものから新しいものまでのスキャンチェーンであって、前記スケジューラオペレーションエントリの状態及びタイプフィールドが、前記ロードユニットにおけるロードオペレーションより古いストアオペレーション評価の予備段階におけるストアオペレーションを表示しているときに、第１ストアオルダ表示を供給する第１伝播−強制終了スキャンチェーンと、
スケジューラオペレーションエントリの古いものから新しいものまでのスキャンチェーンであって、前記スケジューラオペレーションエントリの状態及びタイプフィールドが、前記ロードユニットにおけるロードオペレーションより古いストアオペレーション評価の第１実行段階におけるストアオペレーションを表示しているときに、第２ストアオルダ表示を供給する第２伝播−強制終了スキャンチェーンと、
スケジューラオペレーションエントリの古いものから新しいものまでのスキャンチェーンであって、前記スケジューラオペレーションエントリの状態及びタイプフィールドが、前記ロードユニットにおけるロードオペレーションより古いストアオペレーション評価の第２実行段階におけるストアオペレーションを表示しているときに、第３ストアオルダ表示を供給する第３伝播−強制終了スキャンチェーンと、により構成される、
請求項４記載のロード／ストア実行コントローラ。
【請求項１２】
前記スキャンチェーンロジックは、
スケジューラオペレーションエントリの古いものから新しいものまでのスキャンチェーンであって、ロードオペレーションが関係するスケジューラオペレーションエントリより古いスケジューラオペレーションエントリにおけるストアオペレーションの存在に応じて第１ストアオルダ表示を供給する第１伝播−強制終了スキャンチェーンを備えており、
前記第１伝播−強制終了スキャンチェーンのオペレーションエントリレベル伝播及び強制終了タームが、スケジューラオペレーションエントリの状態及びタイプフィールドの関数であることを特徴とする
請求項１記載のロード／ストア実行コントローラ。
【請求項１３】
前記スキャンチェーンロジックは、
スケジューラオペレーションエントリの古いものから新しいものまでのスキャンチェーンであって、前記スケジューラオペレーションエントリの第１エントリにおける第１のストアオペレーションの存在に応じて第１ストアオルダ表示を供給するための第１伝播−強制終了スキャンチェーンと、
スケジューラオペレーションエントリの古いものから新しいものまでのスキャンチェーンであって、前記スケジューラオペレーションエントリの第２のエントリにおける第２のストアオペレーションの存在に応じて、第２ストアオルダ表示を供給するための第２伝播−強制終了スキャンチェーンと、を有し、
前記スケジューラオペレーションエントリの前記第１のエントリは、状態及びタイプフィールドが、前記第１ストアオペレーションがストアオペレーション評価の予備段階におけるストアオペレーションを含むことを示すとともに、前記ロードオペレーションに関係するスケジューラオペレーションエントリよりも古いものであり、
前記スケジューラオペレーションエントリの前記第２のエントリは、状態及びタイプフィールドが、前記第２ストアオペレーションがストアオペレーション評価の第１実行段階におけるストアオペレーションを含むことを示すとともに、前記ロードオペレーションに関係するスケジューラオペレーションエントリよりも古いものである、
請求項３記載のロード／ストア実行コントローラ。
【請求項１４】
前記スキャンチェーンロジックは、
スケジューラオペレーションエントリの古いものから新しいものまでのスキャンチェーンであって、前記スケジューラオペレーションエントリの第１のエントリにおける第１のストアオペレーションの存在に応じて第１ストアオルダ表示を供給するための第１伝播−強制終了スキャンチェーンと、
スケジューラオペレーションエントリの古いものから新しいものまでのスキャンチェーンであって、前記スケジューラオペレーションエントリの第２のエントリにおける第２のストアオペレーションの存在に応じて、第２ストアオルダ表示を供給するための第２伝播−強制終了スキャンチェーンと、
スケジューラオペレーションエントリの古いものから新しいものまでのスキャンチェーンであって、前記スケジューラオペレーションエントリの第３のエントリにおける第３のストアオペレーションの存在に応じて、第３ストアオルダ表示を供給するための第３伝播−強制終了スキャンチェーンと、を有し、
前記スケジューラオペレーションエントリの前記第１のエントリは、状態及びタイプフィールドが、前記第１ストアオペレーションがストアオペレーション評価の予備段階におけるストアオペレーションを含むことを示すとともに、前記ロードオペレーションに関係するスケジューラオペレーションエントリよりも古いものであり、
前記スケジューラオペレーションエントリの前記第２エントリは、状態及びタイプフィールドが、前記第２ストアオペレーションがストアオペレーション評価の第１実行段階におけるストアオペレーションを含むことを示すとともに、前記ロードオペレーションに関係するスケジューラオペレーションエントリよりも古いものであり、
前記スケジューラオペレーションエントリの前記第３エントリは、状態及びタイプフィールドが、前記第３ストアオペレーションがストアオペレーション評価の第２実行段階におけるストアオペレーションを含むことを示すとともに、前記ロードオペレーションに関係するスケジューラオペレーションエントリよりも古いものである、
請求項４記載のロード／ストア実行コントローラ。
【請求項１５】
前記スキャンチェーンロジックは、
対応するスケジューラオペレーションエントリのオペランドタイプ及びオペランド状態フィールドの関数であるオペレーションエントリレベル伝播信号に応じて複数のキャリーイン信号を供給する、オペレーションエントリレベル伝播信号のＡＮＤツリーと、
前記ＡＮＤツリーに接続されて前記キャリーイン信号を受信し、前記ロードユニットにおけるロードオペレーションが関係するスケジューラオペレーションエントリに対応するキャリーイン信号の特定の１つに選択的に対応する多重化ロジックと、を備える、
請求項１記載のロード／ストア実行コントローラ。
【請求項１６】
前記ＡＮＤツリーは、前記オペレーションエントリレベル伝播信号に応じて、スケジューラオペレーションエントリのグループに対応する複数のグループキャリーイン信号を供給するものであり、
前記多重化ロジックは、
前記スケジューラオペレーションエントリのグループ内のロードオペレーションの存在を表示する複数の選択信号の１つと、対応するグループキャリーイン信号との第１論理積にそれぞれが応答するとともに、１つのオペレーションエントリレベル伝播信号と、対応する前記選択信号の１つとの第２論理積にそれぞれが応答するグループロジックブロックと、
前記グループロジックブロックのそれぞれに接続され、前記ストアオルダ表示の１つを供給するＯＲ構造と、を備える、
請求項１５記載のロード／ストア実行コントローラ。
【請求項１７】
前記スキャンチェーンロジックは、１つのグループにつき３つのオペレーションエントリからなる８つのグループとして構成される、
請求項１５記載のロード／ストア実行コントローラ。
【請求項１８】
前記ＡＮＤツリーは、前半段階及び後半段階を含んでおり、
前記前半段階は、ＮＡＮＤ及びＮＯＲゲートが交互に設けられた段階を含んでおり、
前記後半段階は、ＮＡＮＤインバータの対として実現され、前記インバータが前記後半段階を接続するラインに沿った信号立ち上がり時間特性を改善するために間隔をおいて設けられる、
請求項１６記載のロード／ストア実行コントローラ。
【請求項１９】
前記ＡＮＤツリーは、前記グループキャリーイン信号の経路の所定部分に沿ったディレイエレメントを有しており、
キャリーイン信号の全経路に沿った全体的な遅延を実質的に等しくするように構成される、
請求項１６記載のロード／ストア実行コントローラ。
【請求項２０】
前記スキャンチェーンロジックは、
対応するスケジューラオペレーションエントリのオペランドタイプ及びオペランド状態フィールドの関数であるオペレーションエントリレベル伝播信号に応じて複数のキャリーイン信号を供給する、オペレーションエントリレベル伝播信号のＡＮＤツリーと、
前記ＡＮＤツリーに接続されて前記キャリーイン信号を受信し、前記ストアユニットにおけるストアオペレーションが関係するスケジューラオペレーションエントリに対応するキャリーイン信号の特定の１つに選択的に対応する多重化ロジックと、を備える、
請求項９記載のロード／ストア実行コントローラ。
【請求項２１】
データ及び命令を記憶するメモリサブシステムと、
前記メモリサブシステムに記憶された前記データ及び命令にアクセスするべく動作可能に接続されており、ロードユニットと、ストアユニットと、ロード命令とストア命令との間のデータ依存性を確保しつつ、それらのアウトオブオーダーによる実行を可能にするロード／ストア実行コントローラとを有するプロセッサと、を備え、
前記プロセッサの前記ロード／ストア実行コントローラは、
それぞれがオペレーションシーケンスにおける対応のオペレーションを示しており、古い順に配列されたスケジューラオペレーションエントリと、
前記ロードユニットに接続され、前記ロードユニット内のロードオペレーションに対して相対的に古いストアオペレーションの存在を示すストアオルダ表示を受け取ると、前記ロードユニット内のロードオペレーションの実行を選択的に禁止するロード停止ロジックと、
前記スケジューラオペレーションエントリと前記ロード停止ロジックとに接続され、前記スケジューラオペレーションエントリの配列順に応じた前記ストアオルダ表示を前記ロード停止ロジックに提供するスキャンチェーンロジックと、により構成される、
コンピュータシステム。
【請求項２２】
前記プロセッサ及び前記メモリサブシステムがマザーボードの構成部品である、
請求項２１記載のコンピュータシステム。
【請求項２３】
前記プロセッサに動作可能に接続されたパラレルデバイスインタフェースをさらに備えている、
請求項２１記載のコンピュータシステム。
【請求項２４】
前記パラレルインタフェースを介して前記プロセッサに接続されたプリンタをさらに備えている、
請求項２３記載のコンピュータシステム。
【請求項２５】
前記プロセッサに動作可能に接続されたシリアルデバイスインタフェースをさらに備えている、
請求項２１記載のコンピュータシステム。
【請求項２６】
前記シリアルインタフェースを介して前記プロセッサに接続されたモデムをさらに備えている、
請求項２５記載のコンピュータシステム。
【請求項２７】
前記プロセッサに動作可能に接続されたグラフィックアダプタをさらに備えている、
請求項２１記載のコンピュータシステム。
【請求項２８】
前記グラフィックアダプタを介して前記プロセッサに接続されたビデオディスプレイをさらに備えている、
請求項２７記載のコンピュータシステム。
【請求項２９】
前記プロセッサに動作可能に接続されたローカルエリアネットワークアダプタをさらに備えている、
請求項２１記載のコンピュータシステム。
【請求項３０】
前記ネットワークアダプタを介して前記プロセッサに接続されたデバイスのネットワークをさらに備えている、
請求項２９記載のコンピュータシステム。
【請求項３１】
前記プロセッサに動作可能に接続されたディスクコントローラをさらに備えている、
請求項２１記載のコンピュータシステム。
【請求項３２】
前記ディスクコントローラを介して前記プロセッサに接続されたハードディスクをさらに備えている、
請求項３１記載のコンピュータシステム。
【請求項３３】
前記ディスクコントローラを介して前記プロセッサに接続されたフレキシブルディスクをさらに備えている、
請求項３１記載のコンピュータシステム。
【請求項３４】
アウトオブオーダーによるロードストア実行制御を行うプロセッサを有するネットワークサーバコンピュータシステムであって、
ＬＡＮアダプタと、
前記ＬＡＮアダプタに接続されて、このＬＡＮアダプタとの間で処理データの送受信を行い、ロードユニットと、ストアユニットと、ロード命令とストア命令との間のデータ依存性を確保しつつ、それらのアウトオブオーダーによる実行を可能にするロード／ストア実行コントローラとを有するスーパスケーラプロセッサと、を備え、
前記スーパスケーラプロセッサの前記ロード／ストア実行コントローラは、
それぞれがオペレーションシーケンスにおける対応のオペレーションを示しており、古い順に配列されたスケジューラオペレーションエントリと、
前記ロードユニットに接続され、前記ロードユニット内のロードオペレーションに対して相対的に古いストアオペレーションの存在を示すストアオルダ表示を受け取ると、前記ロードユニット内のロードオペレーションの実行を選択的に禁止するロード停止ロジックと、
前記スケジューラオペレーションエントリと前記ロード停止ロジックとに接続され、前記スケジューラオペレーションエントリの配列順に応じた前記ストアオルダ表示を前記ロード停止ロジックに提供するスキャンチェーンロジックと、を備えている、
ネットワークサーバコンピュータシステム。
【請求項３５】
前記スーパスケーラプロセッサに接続されるハードディスクをさらに備える、
請求項３４記載のネットワークサーバ。
【請求項３６】
前記スーパスケーラプロセッサに接続されるテープユニットをさらに備える、
請求項３４記載のネットワークサーバ。
【請求項３７】
前記スーパスケーラプロセッサに接続されるＣＤ−ＲＯＭをさらに備える、
請求項３４記載のネットワークサーバ。
【請求項３８】
前記スーパスケーラプロセッサに接続されるジュークボックスをさらに備える、
請求項３４記載のネットワークサーバ。
【請求項３９】
前記スーパスケーラプロセッサに接続されるＲＡＩＤをさらに備える、
請求項３４記載のネットワークサーバ。
【請求項４０】
前記スーパスケーラプロセッサに接続されるフラッシュメモリをさらに備える、
請求項３４記載のネットワークサーバ。
【請求項４１】
前記スーパスケーラプロセッサに接続されるモデムをさらに備える、
請求項３４記載のネットワークサーバ。
【請求項４２】
アウトオブオーダーによるロードストア実行制御を行うプロセッサを有するマルチメディアコンピュータシステムであって、
マルチメディア機能デバイスと、
前記マルチメディア機能デバイス及びマルチメディア信号取得デバイスに接続され、マルチメディア信号を合成且つサンプリングするための信号変換インタフェースを有するマルチメディアアダプタと、
前記マルチメディアアダプタに接続され、マルチメディアデータを送受信するための入力／出力バスと、
前記入力／出力バスに接続されて、マルチメディアデータを処理するとともに前記マルチメディアアダプタとの間のマルチメディアデータの通信を制御し、ロードユニットと、ストアユニットと、ロード命令とストア命令との間のデータ依存性を確保しつつ、それらのアウトオブオーダーによる実行を可能にするロード／ストア実行コントローラとを有するスーパスケーラプロセッサと、を備え、
前記スーパスケーラプロセッサの前記ロード／ストア実行コントローラは、
それぞれがオペレーションシーケンスにおける対応のオペレーションを示しており、古い順に配列されたスケジューラオペレーションエントリと、
前記ロードユニットに接続され、前記ロードユニット内のロードオペレーションに対して相対的に古いストアオペレーションの存在を示すストアオルダ表示を受け取ると、前記ロードユニット内のロードオペレーションの実行を選択的に禁止するロード停止ロジックと、
前記スケジューラオペレーションエントリと前記ロード停止ロジックとに接続され、前記スケジューラオペレーションエントリの配列順に応じた前記ストアオルダ表示を前記ロード停止ロジックに提供するスキャンチェーンロジックと、を備えている、
マルチメディアコンピュータシステム。
【請求項４３】
マルチメディア信号取得デバイスをさらに備える、
請求項４２記載のマルチメディアコンピュータシステム。
【請求項４４】
前記入力／出力バスに接続されるＬＡＮアダプタをさらに備える、
請求項４２記載のマルチメディアコンピュータシステム。
【発明の詳細な説明】
技術分野
本発明はプロセッサに関し、特に複数の実行ユニットを有するプロセッサに於けるＯＵＴ−ＯＦ−ＯＲＤＥＲ実行制御に関する。
技術分野
本発明はプロセッサに関し、特に複数の実行ユニットを有するプロセッサに於けるＯＵＴ−ＯＦ−ＯＲＤＥＲ実行制御に関する。
背景技術
ＷＯ−Ａ−９４  ０８２８７にはスーパースケラマイクロプロセッサにおけるロードオペレーションかストアオペレーション、または両方の管理のためのシステム及び方法が開示されている。通常、汎用コンピュータは、順序付けられたマシン命令のシーケンスとして実行可能な形態で提供されるプログラムを実行する。人が読める表現形態のプログラムは、コンパイルとして知られているプロセスにより、所望のターゲットアーキテクチャ用のマシン命令のシーケンス、例えばｘ８６プロセッサアーキテクチャに適合したプロセッサ用のオブジェクトコードに変換される。コンピュータプログラムは、通常、単純化のための仮定、即ち変換の結果得られるオブジェクトがシーケンスの順番に実行されるという仮定に基づいて、デザインされ、コード化され、コンパイルされる。しかしこのような仮定にも関わらず、最近のプロセッサデザイン技術では、マシン命令の同時実行、則ち命令並行実行可能性（instruction parallelism）の利用に努めている。計算の処理能力を最大にするために、命令並行実行を多数の実行ユニットにマップするためのスーパスケーラ技術を用いることができる。これとは対照的に、パイプライン処理技術では、１つの機能的単位、又は実行経路の一段階の中での命令並行実行を採用している。スーパスケーラ技術は、スーパスケーラデザインの分野に於いて知られている技術であり、この技術ではＯＵＴ−ＯＦ−ＯＲＤＥＲ命令発行、ＯＵＴ−ＯＦ−ＯＲＤＥＲ命令完了、及び命令の投機的実行が行われる。
ＯＵＴ−ＯＦ−ＯＲＤＥＲ命令発行では、実行コードに於ける実際の命令の順序とは殆ど無関係な順序で実行ユニットへの命令の発行が行われる。ＯＵＴ−ＯＦ−ＯＲＤＥＲ発行を利用するスーパスケーラプロセッサは、その命令ディスパッチシーケンスのフォーマッティングに於いて、所定の命令の出力（計算結果）と後続の命令の入力（オペランド）との間の依存性によってのみ条件付けられる必要がある。一方、ＯＵＴ−ＯＦ−ＯＲＤＥＲ完了は、プログラムシーケンスの中で先行する命令が完了する前に所定の命令が完了（例えば計算結果を格納すること）できるようにする技術である。最後に投機的実行は、予測された結果（例えば分岐）に基づいて命令シーケンスの実行を行う。投機的実行（則ち分岐が正確に予測されているという仮定のもとでの実行）により、命令を分岐条件が実際に評価されるまで待機することなくプロセッサが命令を実行可能となる。分岐が正しく予測されることが不正確に予測されることより多く、かつ不正確な予測結果を実行しない合理的で効率的な方法が利用可能であると仮定すると、命令並行実行可能性（則ち並行実行が利用可能な命令の数）は、投機的実行により増加することになる（Johnson、Superscalar processor Design, Prentice-Hall, Inc., New Jersey, 1991, pp.63-77 for an analysis参照）。
シーケンスの順番とは異なる順番での命令の実行、則ちシーケンスの順序とは異なる順序で命令を発行及び完了することにより、スーパスケーラプロセッサが多数の実行ユニットを同時並行的に動作させた状態を維持することが可能であるため、スーパスケーラプロセッサの処理能力は高くなる。従って、スーパスケーラプロセッサ用のスケジューラは、ＯＵＴ−ＯＦ−ＯＲＤＥＲ実行される命令が何れであるかを判定し、それらの命令を適当な実行ユニットに供給又はディスパッチすることにより全体の処理能力を改善することができる。スーパスケーラプロセッサ用のスケジューラは、割り込み及びトラップの処理も行わなければならない。ｘ８６プロセッサアーキテクチャを含む多くのプロセッサアーキテクチャでは、命令がエラー、割り込み、またはトラップを発生する直前又は直後にアーキテクチャーの状態を認識している必要がある。これにより命令のＯＵＴ−ＯＦ−ＯＲＤＥＲ実行が困難になる。従って、スケジューラは命令の取り消しや、命令があたかも順序通りに実行されたかのようなシステム状態の再構築ができなければならない。
これらの技術のそれぞれに関連をもつ、命令並行実行可能性を利用するためのアーキテクチャのデザインが様々な文献やテキストにおいて提案されてきた。Johnson pp.127-146（ＯＵＴ−ＯＦ−ＯＲＤＥＲ発行）、pp103-126（ＯＵＴ−ＯＦ−ＯＲＤＥＲ完了及び依存性）pp87-102（誤り分岐予測の回復）を参照されたい。命令並行実行可能性を利用するための２つのアーキテクチャ的なアプローチとして、予約ステーション、及び順序付けをやり直すためのリオーダバッファがある。予約ステーションは、多数の実行ユニットを有するプロセッサ内の所定の実行ユニットのための命令及びオペランド用バッファであるが、命令やオペランドのバッファリングに加えて、予約ステーションは他の実行ユニットからの計算結果を直接受け取るための手段となる。このようにして各オペランドがまた使用できない命令が、そのオペランドが格納されるのを待機することなく所定の実行ユニット用の予約ステーションにディスパッチされ、ついでレジスタから取り出されることが可能となる。Tomasuloによる"An Efficient algorithm for Exploiting Multiple Execution Units, "OBM Journal, vol. 11, January 1967, pp.25-33には、それぞれが予約ステーションを備えている多数の実行ユニットを含む浮動小数点プロセッサの実例が開示されている
リオーダバッファは、多数の実行ユニットを有するプロセッサに於けるレジスタの投機的（則ちＯＵＴ−ＯＦ−ＯＲＤＥＲ）状態を維持する内容のアドレス指定可能な記憶機構（store）である。各命令がデコードされたとき、リオーダバッファエントリは命令の演算結果を格納するために割り当てられ、その演算結果を指定するための一時的指定子またはタグが生成される。通常の命令シーケンスに於いては、所定のレジストに何度も書き込みが行われ、従って命令シーケンスの異なる点に於けるレジスタの状態に対応してリオーダバッファエントリが割り当てられる。オペランドとしてのレジスタ値を必要とする命令がディスパッチされた時、最も新しく振り分けられたリオーダバッファエントリが参照されるか、所望のレジスタロケーションに対応するリオーダバッファエントリが存在しない場合はレジスタファイルに格納された値が使用される。対応するリオーダバッファエントリが割り当てられたと仮定すると、所定の命令により必要とされるオペランドの値が、オペランド値を計算する命令が完了した場合にはリオーダバッファにより供給され、そうでない場合にはタグが供給されて、命令は演算結果をそれが使用可能となったとき認識する。リオーダバッファを組み込んだスーパースケーラプロセッサデザインにより、リオーダバッファエントリの回収（retire）（則ち不要になったエントリ値のレジスタファイルへの格納またはエントリの廃棄）も容易に行えるようになる。
リオーダバッファを実現することによりレジスタリネーム、誤り分岐予測例外処理、命令のＯＵＴ−ＯＦ−ＯＲＤＥＲ完了を含む様々なスーパスケーラ技術を用いることが容易になる。予約ステーション及びリオーダバッファを含むスーパスケーラアーキテクチャーによりリオーダバッファからオペランドを受け取り、リオーダバッファへその演算結果を格納する複数の実行ユニットの間での命令並行実行可能性の利用も容易となる。
スーパスケーラ技術は命令セット及び他のアーキテクチャの機構とは無関係なプロセッサの編成に大きな関連を有する。従って、スーパスケーラ技術の魅力の１つは、例えばｘ８６プロセッサアーキテクチャの様な既存のアーキテクチャと互換性のあるコードのプロセッサを開発することが可能である点である。多くのスーパスケーラアーキテクチャは、ＲＩＳＣ又はＣＩＳＣアーキテクチャのいずれにも同様に適用することができる。しかし、ＲＩＳＣアーキテクチャの多くがもつ規則性のために、スーパスケーラ技術は初めにＲＩＳＣプロセッサデザインに適用された。特に、ＲＩＳＣアーキテクチャ及び命令セットが関係する、３オペランドのロード／ストアアーキテクチャ、固定命令長、制限されたアドレスシングモード、及び固定幅のレジスタにより、多数の実行ユニットに仕事を与えるのに必要な多数の命令の１サイクルデコードが容易になる。
ｘ８６アーキテクチャとの互換性を有するコードであるスーパスケーラプロセッサ開発のための方法の１つは、ｘ８６命令をＲＩＳＣ命令又はオペレーションに動的に翻訳し、それがＲＩＳＣコア又は実行エンジンにより実行され得るようにすることである。このようなスーパスケーラＲＩＳＣプロセッサを設計するための技術はJohnson、Superscalar Processor Designに記載されている。
発明の開示
ロードオペレーション及びストアオペレーション（以下「オペレーション」を省略し単にロード、ストアと表記する）のＯＵＴ−ＯＦ−ＯＲＤＥＲ実行コントローラとなるプロセッサに於いて、ロード及びストアが互いに独立してＯＵＴ−ＯＦ−ＯＲＤＥＲ実行され得ることがわかった。特定のロードに対するストアの相対的古さ（及び特定のストアに対するロードの相対的古さ）追跡するスケジューラロジックにより、本発明に基づいて構築されたロード／ストア実行コントローラが、ロードが完了するまで新しいストアを停止（hold）（及び古いストアが完了するまで新しいロードを停止）させることが可能となる。アドレスマッチングロジックにより、本発明に基づいて構築されたロード／ストア実行コントローラがロード／ストア間の（及びストア／ロード間の）依存性を回避して処理できるようになる。ロードオペレーションを実行するロードユニット及びストアオペレーションを実行するストアユニットを有するプロセッサに於いて、このようなロード／ストア実行コントローラにより、ロード命令及びストア命令を、それらの間のデータ依存性を強制しつつ、それら相互について概ねＯＵＴ−ＯＦ−ＯＲＤＥＲ実行することが可能となる。
本発明の一実施例に於いては、ロード／ストア実行コントローラがスケジューラオペレーションエントリの古さ順の配列、ロード停止ロジック（load hold logic）、及びスキャンチェーンロジックを有する。各スケジューラオペレーションエントリは、オペレーションシーケンスの対応するオペレーションを指定する。ロード停止ロジックは、ロードユニットに接続されており、ストアが古いことを表すストアオルダ表示（store older indication）を受け取った際のロードユニットに於けるロードオペレーションの実行を選択的に抑止する。スキャンチェーンロジックは、オペレーションエントリ及びロード停止ロジックに接続されている。スキャンチェーンロジックは、ロードユニットに於いてロードオペレーションよりも古いストアオペレーションが存在することを表すストアオルダ表示を供給する。更に別の実施例に於いては、スケジューラオペレーションエントリが、オペレーションタイプ及びオペレーション状態フィールドを有し、スキャンチェーンロジックが、オペランドタイプ及びオペランド状態フィールドを受け取るべく接続されている。更に、別の実施例によってはストアオルダ表示が第１ストアオルダ表示及び第２オルダ表示を有する。第１ストアオルダ表示はストアオペレーション評価のオルダストアのオペレーションの存在を表示し、第２ストアオルダ表示はストアオペレーションの第１実行段階における古いストアオペレーションの存在を表示する。スキャンチェーンロジックは、オペレーション状態フィールドを利用してストアオペレーション評価の段階を区別する。更に、別の実施例では、ストアオルダ表示がストアオペレーション評価の第２実行段階での古いストアオペレーションの存在を表示する。
更に、別の実施例に於いては、ロード停止ロジックが第１アドレスマッチロジック及び第２アドレスマッチロジックを有する。第１アドレスマッチロジックはストアユニットに接続され、ストアオペレーション評価の第１実行段階でのストアオペレーションに対応する第１ストアターゲットアドレスを受け取る。第１アドレスマッチロジックは、第１ストアターゲットアドレスをそのロードオペレーションのターゲットアドレスに一致させる。第２アドレスマッチロジックは、ストアユニットに接続され、ストアオペレーション評価の第２実行段階でのストアオペレーションに対応する第２ストアターゲットアドレスを受け取る。第２アドレスマッチロジックは、この第２ストアターゲットアドレスをロードオペレーションのターゲットアドレスに一致させる。このようにして、ロード停止ロジックは、第１ストアオルダ表示に応じてロードオペレーションの実行を抑止する。ロード停止ロジックはまた、第１アドレスマッチロジックが第１ストアターゲットアドレスとロードオペレーションのターゲットアドレスとの間の一致を示しているとき、第２ストアオルダ表示に応じてロードオペレーションを抑止する。更にロード保持ロジックは、第２アドレスマッチロジックが第２ストアターゲットアドレスとロードオペレーションのターゲットアドレスとの一致を示しているとき、第３ストアオルダ表示に応じてオードオペレーションの実行を抑止する。
更に別の実施例に於いては、スキャンチェーンロジックが古いものから新しいものまでのスケジューラオペレーションエントリの第１、２、及び第３伝播−強制終了スキャンチェーン（propagate-kill scan chain）を有する。第１伝播スキャンチェーンは、スケジューラオペレーションエントリの状態フィールド及びタイプフィールドが、ロードユニットに於けるロードオペレーションより古いストアオペレーション評価の予備段階に於けるストアオペレーションを指定しているとき、第１ストアオルダ表示を供給する。第２伝播−強制終了スキャンチェーンは、スケジューラオペレーションエントリの状態フィールド及びタイプフィールドが、ロードユニットに於けるロードオペレーションより古いストアオペレーション評価の第１実行段階にあるストアオペレーションを指定しているとき、第２ストアオルダ表示を供給する。第３伝播−強制終了スキャンチェーンは、スケジューラオペレーションエントリの状態及びタイプフィールドがロードユニットに於けるロードオペレーションより古いストアオペレーション評価の第２実行段階のストアオペレーションを指定しているとき、第３ストアオルダ表示を供給する。
更に別の実施例に於いては、このスキャンチェーンロジックが多重化ロジック及びオペレーションエントリレベル伝播信号のＡＮＤツリーを含む。このＡＮＤツリーは、オペレーションエントリレベル伝播信号に応じて複数のキャリーイン（carry-in）信号を供給するが、これらは対応するスケジューラオペレーションエントリのオペランドタイプ及びオペランド状態の関数である。多重化ロジックは、ＡＮＤツリーに接続され、キャリーイン信号を受け取り、ロードユニットに於けるロードオペレーションに関連するスケジューラオペレーションエントリに対応するキャリーイン信号の特定の１つに対して選択的に対応している。
本発明の別の実施例に於いては、ロード／ストア実行コントローラが、スケジューラオペレーションエントリーの古さ順配列、ストア停止ロジック（store hold logic）、及びスキャンチェーンロジックを有する。各スケジューラオペレーションエントリは、オペレーションシーケンスに於けるオペレーションを指定するものである。ストア停止ロジックは、ストアユニットに接続され、ロードオルダ表示（load older indication）を受け取った際、ストアユニットを選択的に抑止する。スキャンチェーンロジックは、オペレーションエントリ及びストア停止ロジックに接続される。スキャンチェーンロジックは、ストアユニットに於けるストアオペレーションより古いロードオペレーションの存在を示すロードオルダ表示を供給する。
ロード命令及びストア命令を、それらの間のデータ依存性を強制しつつ、それら相互について概ねＯＵＴ−ＯＦ−ＯＲＤＥＲ実行することを可能にする本発明の別の実施例では、スキャンチェーンロジックが多重化ロジック及び伝播信号のＡＮＤツリーを有する。このＡＮＤツリーは伝播信号に応じて複数のキャリーイン信号を供給する。このような伝播信号は、スケジューラ配列に於ける対応するエントリからのオペランドタイプ及びオペランド状態表示の関数である。多重化ロジックは、ＡＮＤツリーに接続され、キャリーイン信号を受け取り、スケジューラ配列に於けるロード／ストアエントリに対応するキャリーイン信号の特定の１つに選択的に対応している。
更に、別の実施例では、ロード／ストアエントリがロードオペレーションに関係し、伝播信号がスケジューラ配列の対応するエントリに於けるロードオペレーションの存在を示す。ＡＮＤツリーは、伝播信号に応じて、複数のキャリーイン信号のグループを供給し、キャリーイン信号のグループは、スケジューラ配列に於けるエントリのグループに対応する。多重化ロジックは、グループロジックブロック及びＯＲ構造である。グループロジックブロックは、それぞれ対応するグループキャリーイン信号と、スケジューラ配列のエントリのグループ内に於けるロードオペレーションの存在を表す複数の選択信号のいずれかとの間の第１論理積にそれぞれが対応する。グループロジックブロックのそれぞれは、伝播信号と対応する選択信号との間の第２論理積にも応答する。ＯＲ構造は、グループロジックブロックのそれぞれに接続され、スケジューラ配列に、ロードオペレーションより古いストアオペレーションが少なくとも１つ存在することを示すストアオルダ表示を供給する。
更に、別の実施例に於いては、ロード／ストアエントリは、ストアオペレーションに関係し、伝播信号が、スケジューラ配列の対応するエントリに於けるストアオペレーションの存在を示す。ＡＮＤツリーは伝達信号に応じて複数のグループキャリーイン信号を供給し、このグループキャリーイン信号は、スケジューラ配列内のエントリのグループに対応する。多重化ロジックは、グループロジックブロック及びＯＲ構造を有する。グループロジックブロックは、それぞれ対応するグループキャリーイン信号と、スケジューラ配列内のエントリのグループ内のストアオペレーションの存在を示す複数の選択信号のいずれかとの間の第１論理積に応答する、各グループロジックブロックは、伝達信号と対応する選択信号との間の第２論理積にも応答する。ＯＲ構造は、各グループロジックブロックに接続され、スケジューラ配列内のストアオペレーションより古い少なくとも１つのロードオペレーションの存在を示すロードオルダ表示を供給する。
【図面の簡単な説明】
以下に説明する添付の図面を参照することにより、本発明はより良く理解され、またその様々な目的、特徴及び利点が当業者には明らかとなろう。
第１図は、本発明の一実施例によるＯＵＴ−ＯＦ−ＯＲＤＥＲ実行コントロールとなるスーパスケーラコンピュータプロセッサのブロック図である。
第２図は、本発明の一実施例によるスケジューラのブロック図である。
第３図は、本発明の一実施例による命令の実行に於けるアーキテクチャーの段階を示すパイプライン処理の段階を示した図である。
第４図は、本発明の一実施例によるロード及びストアＯＵＴ−ＯＦ−ＯＲＤＥＲ実行コントロール要素のブロック図である。
第５図は、本発明の一実施例によるロード停止ロジックの回路図である。
第６図は、本発明の一実施例によるストア停止ロジックの回路図である。
第７Ａ及び第７Ｂ図は、本発明の一実施例によるロード／ストア順序付けロジックのためのスキャンチェーンの回路図である。
第８図は、本発明の一実施例によるロード／ストアＯＵＴ−ＯＦ−ＯＲＤＥＲ実行コントロールを提供するプロセッサを組み込んだコンピュータシステムのブロック図である。
図面全体に於いて同一の又は類似した構成要素には同じ符号を付して示した。
発明の実施の形態
図１はこの発明のスーパスケーラプロセッサ実施例を示す。スーパースケーラプロセッサ１００は限定命令セット計算（ＲＩＳＣ）アーキテクチャを実施する実行エンジン１５０、命令デコーダ１４０、キャッシュ、及びメモリサブシステム１２２に表現されるアドレス空間へのアクセス及びローカルバス（図示しない）上のデバイスへのアクセスを提供するシステムインターフェース１２０を含む。
スーパースケーラプロセッサ１００は、ここに記載の実施例においては別個のデータ及び命令部として構成されたキャッシュを含む。データキャッシュ１７０及び命令キャッシュ１３０は、主メモリを含みかつオプションとして例証的にはＬ２キャッシュである追加的レベルのキャッシュを含むメモリサブシステム１２２に表されるアドレス空間に（キャッシュ制御ロジック１６０を介してかつシステムインターフェース１２０によって）接続される。Ｌ２レベルキャッシュへのアクセス、即ちＬ２キャッシュ制御ロジック及びＬ２データ部（図示しない）へのアクセスはシステムインターフェース１２０を介して提供される。代替的には、Ｌ２キャッシュ制御ロジックは（Ｌ１のための）キャッシュ制御ロジック１６０とシステムインターフェース１２０の間に介装することができる。
キャッシュシステム設計は当業界において周知である。特に、分割、ハーバードアーキテクチャ命令及びデータキャッシュ（符号１７０及び１３０のような）、並びに多重レベルキャッシュ階層構造を実現する適当な設計がキャッシュ技術分野において周知である。多くの点において、スーバースケーラプロセッサ１００のキャッシュサブシステム（即ちデータキャッシュ１７０、命令キャッシュ１３０、キャッシュ制御ロジック１６０、及びオプションであるＬ２キャッシュ）はそのような適当な設計の何れかである。しかしながら、そのキャッシュ性能からは別個の理由により命令キャッシュ１３０はプレデコードロジック（図示しない）と一体にされている。そのように一体化されたプレデコードロジックは取り出された命令ストリーム内のｘ８６命令境界を識別し、命令デコーダ１４０による命令の迅速なデコーディングを促進する。
図１を再び参照するに、命令シーケンスは実行エンジン１５０により予想される実行のためにメモリサブシステムから命令キャッシュ１３０へとロードされる。図１に示されるプロセッサ１００の実施例に従い、命令キャッシュ１３０内の命令はｘ８６プロセッサアーキテクチャに適合するプロセッサによって実施されるｘ８６命令のような複合命令セットから選択されたＣＩＳＣ命令である。命令デコーダ１４０は命令キャッシュ１３０から受け取ったＣＩＳＣ命令を実行エンジン１５０での実行のためのオペレーションへと変換する。図１の実施例において、これらのオペレーションはＲＩＳＣ類似オペレーション（以下「ＯＰｓ」と言う）であり、命令キャッシュ１３０からの単一ｘ８６命令は実行エンジン１５０のための１以上のＯＰｓに復号する。個々のＯＰｓはレジスタオペレーション（ＲｅｇＯｐｓ）、ロード−ストアオペレーション（ＬｄＳｔＯｐｓ）、ロード即値オペレーション（ＬＩＭＭＯｐｓ）、特殊オペレーション（ＳｐｅｃＯｐｓ）、及び浮動小数点オペレーション（ＦｐＯｐｓ）を含む数種の型のグループの１つに分かれる。代替的実施例では異なる命令セットを解読して実行のために異なるオペレーション形式を供給してもよい。
命令デコーダ１４０は分岐予測ロジック１４３と共にハードウェア変換部ＭａｃＤｅｃ１４１及びＲＯＭベース変換部１４２である２個の命令変換部を含む。最も共通的なｘ８６命令はハードウェア変換部１４１内に含まれる多重並列ハードウェアデコーダを使用する１乃至４のＯＰｓの短いシーケンスに変換される。ハードウェア変換部１４１は命令キャッシュ１３０から受け取ったこれらの共通的なｘ８６命令を短いシーケンスに解読しこれは次にスケジューラ１８０に供給される。あまり共通的でないｘ８６命令及び４ＯＰｓよりも長いＯＰシーケンスに変換するこれらのｘ８６命令は変換されるべき特定ｘ８６命令に符号したＯＰｓの変換シーケンスを（ＲＯＭから）取り出すＲＯＭベース変換部１４２によって変換される。何れかのソースからの変換されたＯＰシーケンスは、ハードウェアデコーダによって生成されたかＲＯＭから取り出されたかに係わりなく、実行エンジン１５０による実行のためにスケジューラ１８０に供給される。
図１を再度参照するに、実行エンジン１５０はスケジューラ１８０、レジスタファイル１９０及びスケジューラ１８０によってディスパッチされたＯＰｓを受取り実行する多重実行ユニットを含む。代替的実施例においては実行ユニットのセットに追加しまたはこれから差し引くことが可能であるが、図１の実施例においては実行エンジン１５０はロードユニット１５２、ストアユニット１５３、レジスタユニット１５４及び１５５、浮動小数点ユニット１５６、マルチメディアユニット１５７、並びに分岐ユニット１５８である７つの実行ユニットを含む。例示的実施例においては、浮動小数点ユニット１５６とマルチメディアユニット１５７を省略する。実行エンジン１５０はまたストアユニット１５３とデータキャッシュ１７０の間に介装されるストアキュー１５９を含む。
スケジューラ１８０は記憶エントリとこれに接続するロジックブロックの指定された配列として構成され、この記憶エントリとロジックブロックは協働してＯｐｓの実行ユニットへのＯＵＴ−ＯＦ−ＯＲＤＥＲディスパッチのため且つＯｐ結果の１以上の実行ユニットへの転送のための支援を提供する。記憶エントリとロジックブロックの指定された配列はまた再命令バッファを実施し、レジスタファイル１９０内に形成されたアーキテクチャレジスタの再命名を提供し、投機的実行の回復を提供する。命令デコーダ１４０はスケジューラ１８０に命令ストリームから解読された新規のＯｐｓを供給する。次に、スケジューラ１８０は受け取った新規の各Ｏｐに関連したデータを（記憶エントリ内に）格納し保持する。このようにして、Ｏｐが実行ユニットに発行されかつ実行ユニットによって実行されるに伴いスケジューラ１８０が各Ｏｐの状態とその関連するデータを追跡調査する。与えられたＯｐが完全に実行されかつデータ依存性が明瞭になった後に、それは退避（ｒｅｔｉｒｅ）されそして符合するスケジューラエントリは解除される。
スケジューラ１８０はバス１８９として一括して示される一群のバス及び制御線を介して実行ユニット（即ち、ロードユニット１５２、ストアユニット１５３、レジスタユニット１５４及び１５５、浮動小数点ユニット１５６、マルチメディアユニット１５７並びに分岐ユニット１５８）に接続される。スケジューラ１８０は実行ユニットにＯｐｓ，レジスタオペランド及び制御信号を供給し、例証的にはバス１８９を介して実行ユニットから戻される結果値及び状態表示を受け取る。もちろん、全てのバスと制御線とは完全に接合している必要はなく、バス１８９は実行ユニットに対するスケジューラ１８０の双方向接続の単なる例示である。
ロードユニット１５２とストアユニット１５３は、それぞれアドレス可能なメモリからのロードしたデータとアドレス可能なメモリへの格納したデータであるＬｄＳｔＯｐｓ（即ちＬｄＯｐｓとＳｔＯｐｓ）を実行する。特定のメモリアドレスのキャッシュ状態に依拠して、ＬｄＳｔＯｐはＬ１データキャッシュ１７０、Ｌ２キャッシュ（図示しない）、主メモリ（図示しない）のいずれかにおいて完了する。ストアキュー１５９はストアユニット１５３からのデータを一時的に格納しストアユニット１５３とロードユニット１５２とはデータキャッシュ１７０へのアクセス競合無しに並行して演算することができる。レジスタユニット１５４と１５５はＲｅｇＯｐｓを実行しこのＲｅｇＯｐｓはレジスタファイル１９０のアーキテクチャレジスタに関連したデータに基づいて演算する。
スケジューラの概観
図２は２４個のエントリ（列として示す）を有するスケジューラ１８０の例示的実施例であって、各エントリが継続中のＯｐと関連している例示的実施例を示す。各エントリは継続中のＯｐに関連する静的及び動的データを表すためのスケジューラリザーバ２４０として一括して示される一連のフィールドを含む。付け加えるに、スケジューラ１８０は継続中のＯｐｓに関連したデータを受け取るためにスケジュールリザーバ２４０のエントリに接続された制御ロジック２３０として一括して示される一連の特殊ロジックブロックを提供する。制御ロジック２３０の特殊ロジックブロック（桁２３１、２３２、２３３、２３５及び２３６として示す）はＯｐ実行並びに実行ユニットへのオペランドの供給と実行ユニットからの結果の分配の順序付けを制御する信号を供給する。制御ロジック２３０は発行選択ロジック２３１、オペランド選択ロジック２３２、ロード・ストア命令ロジック２３４、状態フラグ処理ロジック２３５、及び自己修飾コード支援ロジック５３６を含む。
発行選択ロジック２３１は各サイクルの間有効な実行ユニットへの発行のためスケジュールリザーバ２４０からのＯｐｓの選択を制御する。オペランド選択ロジック２３２は実行ユニットに対して発行されたＯｐｓに必要とされるオペランドデータのための適当なソースを識別する。データ依存性と実行エンジン１５０内のＯｐｓの順序付けに依拠して適当なソースはレジスタファイル１９０であり、他の継続中のＯｐエントリ（スケジューラエントリのためのデスティネーション値フィールドは２５０として一括して示される）に関連するデスティネーション値フィールドまたは結果バス（結果バス２７２として一括して示される）の１つに供給される完了Ｏｐの結果がある。発行選択ロジック２３１とオペランド選択ロジック２３２によって供給される制御信号はスケジューラ１８０がスケジュールリザーバ２４０より有効実行ユニットへＯｐｓを発行しかつ発行された各Ｏｐのための適当なオペランドソースを選択するのを可能とする。
スケジューラ１８０は、各スケジューラエントリに関連したデスティネーション値フィールドを含む。これらのデスティネーション値フィールドは２５０として一括的に示されている。オペランド選択ロジック２３２との関係に於いて、デスティネーション値フィールド２５０は、リオーダバッファと暗黙レジスタの再命名を実施する。レジスタファイル１９０のアーキテクチュ配列ジスタに関連するオペランド値は、デスティネーション値フィールド２５０内に表され、典型的には、オペランドバス２７１を介してレジスタオペランド値として実行ユニットに供給される。しかしながら、デスティネーション値フィールド２５０のいずれもより現時点に近いレジスタ状態を表していない場合（すなわち、未だコミットされていないレジスタ状態）には、これに代えてオペランド値をレジスタファイル１９０から供給する事ができる。完了したＯｐｓの結果は結果バス２７２を介して完了したＯｐに関連するスケジューラエントリのデスティネーション値フィールドに供給される。付け加えるに、これらの結果は、また継続中のOpsのためのオペランドとして実行ユニットに供給することができる。結果は、結果バス２７２を介して転送される。
スケジュールリザーバエントリ（例証的にはスケジュールリザーバエントリ２４０．１）のフィールドは、実行を待っているか、実行される過程にあるか、または完了されたか、であるオペレーション（Ｏp）に関する情報を含んでいる。スケジュールリザーバエントリのフィールドの大部分は、命令デコーダ１３０が新規のOpをスケジュールリザーバ２４０にロードしたときに初期化される。しかしながら、他のフィールドは、後にロードされ又は更新される。例えば、状態フィールド（各エントリに対してフィールド２４２として示される）は符合するOpが実行パイプラインの段階を通って進むのに伴って更新される。Opがスケジュールリザーバ２４０内にロードされる時からスケジューラ１８０から退避される時までの値を保持する記憶フィールドは「静的フィールド」として言及される。新規の値によって更新されることのできるフィールドは「動的フィールド」として言及される。静的フィールドデータ及び動的フィールドの初期データ値は命令デコーダ１４０によって供給される。
各スケジュールリザーバエントリ（図２中タイプフィールド２４１として示される）の３ビットフィールド、タイプ〔２：０〕は、スケジュールリザーバエントリに関連したOpのタイプを特定する。Opのタイプは発行選択目的のために特に重要である（例えばLｄOpsは１５０の様なロードユニットに発行しなければならない）；しかしながら、ロード／ストア命令制御はまたタイプフィールド２４１も利用する。下記の信号は、タイプフィールド２４１から解読したものである：
0003714961.tif 000002
各スケジュールリザーバエントリ（図中タイプフィールド２４２として示されている）の４ビットフィールド、状態［３：０］はＯｐ（Ｓ３，Ｓ２，Ｓ１及びＳ０は状態［３：０］の交番信号名である）の現実行状態を示す。タイプフィールド２４２の５つの可能状態は以下の様なシフトフィールドによって符号化される：
0003714961.tif 000003
即時の状態は、タイプフィールドが現れるエントリに符合したＯｐのための現実行段階に符合する。ビットは、Ｏｐが段階の外で支承なく発行され進むのに伴って更新される（実際的には左シフトによって）。状態［３：０］はまた中止サイクルの間に１１１１に設定される。
スケジューラＯｐクワッド構成
スケジューラ１８０はスケジュールリザーバ２４０内の２４個のエントリと、ＦＩＦＯとして扱われるデスティネーション値フィールド２５０を含む。新規のＯｐｓに符号するデータは、最上部にロードされ実行の進行に伴って最下位に向かってシフトされ、スケジューラリザーバ２４０の最下位から退避される。制御の単純化のためにスケジューラ１８０は、スケジュールリザーバ２４０とデスティネーション値フィールド２５０をＯｐクワッドに基づいて処理する。Ｏｐｓは、４つのグループにてスケジュールリザーバ２４０にロードされ、スケジュールリザーバ２４０を通してシフトされ、且つスケジュールリザーバ２４０から退避される。このようにして、スケジューラの細分性が命令デコーダ１４０のエンコードＲＯＭ１４２及びＮａｃＤｅｃ１４１の両者のデコード帯域幅に適合する。スケジューラ１８０は、したがって深さ６幅４のＦＩＦＯ内の６個のＯｐクワッドエントリとして２４個のＯｐエントリを処理する。
スケジューラ１８０をＯｐクワッドにて編成しているが、スケジューラの動作の多くの側面は、スケジューリングリザーバ２４０、デスティネーション値フィールド２５０、及びコントロールロジック２３０を考察することにより良く理解されよう。例示のため、以下の議論は２４エントリスケジューラ１８０について説明しているが、上述の共願の特許出願の明細書に説明されているＯｐクワッドの細分性の利点について、当業者は理解されよう。
オペレーション（Op）のタイミング及び実行段階
スケジューラリザーバ２４０の各エントリは、未定のOpsを記述するフィールドを含む。これらのフィールドは、命令デコーダ１４０によって取り出され又は解読されたOpsから生来的に得られた静的状態情報及びOp実行から結果し、又は、与えられたOpの実行パイプライン状態を特徴づける動的状態情報を格納する。
プロセッサ制御の概観からスケジューラ１８０は、関連する制御ロジック２３０を備えたOp状態情報（スケジュールリザーバ２４０）の命令順序指定配列であって制御ロジック２３０は、配列から各実行ユニットへの発行Ops、パイプライン段階のシーケンスを介する制御Op実行及び最終的にはスケジューラからの退避Opsに対し、制御信号を発生する。図２に示すように、制御ロジック２３０は、制御ロジックの５つの特殊ブロック（発行選択ロジック２３１、オペランド選択ロジック２３２、ロード・ストア命令ロジック２３４、状態フラグ処理ロジック２３５及び自己修飾コード支援ロジック２３６）を含み、その各々は、スケジューラリザーバ２４０の符合するエントリから情報を受け取る部分（ロード・ストア命令ロジック２３４の例証的部分２３４．３）を有する。制御ロジックブロックは、実行ユニットに制御信号を供給する。例えば、ロード・ストア命令ロジック２３４は、２７３として一括して表される制御線を介してロードユニット１５２とストアユニット１５３に制御信号を供給する。
スケジュールリザーバ２４０の制御ロジックブロックによって供給される特定制御信号はOpエントリ内のフィールドの状態に依存する。詳細には、状態〔３：０〕フィールドは、関連オペレーションの実行の進行を表わす。ロジックの概観からスケジューラ内の全ての状態順序付けは性質上単一サイクルである。状態遷移決定はそのサイクルの間の機械状態に基づいて各サイクルごとに行われる。スケジューラ１８０の構成はOp実行のパイプライン特性を反映する。スケジューラ１８０（及び符合する各エントリ）は、その各々がオペレーション又は実行パイプラインの与えられたタイプの特定進行段階に直接関連する多数の別個の、より正確には独立のロジック部に分割することができる。
実行エンジン１５０のパイプラインステージンクすなわち段階配置構成がここで図３を参照して記述される。Opが一旦実行エンジン１５０内にロードされると、そのOpは、３又は４段階パイプラインを通り符号的にそのOpに関連するスケジューラエントリ内のフィールド状態〔３：０〕によって表される４又は５状態の間の遷移を通る。命令フェッチ及び解読は実行エンジン１５０の前に遂行される。従って、第１のスケジューラに関連するパイプライン段階は発行段階である。図３は、RegOps及びLdStObsのためのパイプラインステージングを示す。
スケジューラ１８０は、発行段階及びオペランドフェッチ段階３３０及び３４０の間実行パイプライン上に基本的な制御を加える。発行段階３３０内及びオペランドフェッチ段階３４０内の処理は段階ごとに２個のフェーズに分割することができ、各フェーズは、公式的には半クロックサイクルを占める。発行段階３３０は、発行選択フェーズとブロードキャストフェーズを含み、一方オペランドフェッチ段階３４０は、オペランド選択フェーズとオペランド送りフェーズを含む。
発行段階
発行段階３３０の発行選択フェーズ３３０．１の間に於いて、スケジューラ１８０は、ロードユニット１５２、ストアユニット１５３，レジスタユニットＸ１５４、及びレジスタユニットＹ１５５に関連したパイプラインに入れるための次のOpsを選択する（４つのOp選択が一時に生起する）。発行段階３３０のブロードキャストフェーズ３３０．２の間に於いて、各選択されたOpのためのレジスタオペランドの各々に関する情報が全てのスケジューラエントリ及び外部ロジック（レジスタファイル１９０及び実行ユニットを含む）に同報的に送られる。このようにして、ブロードキャストフェーズ３３０．２は、スケジューラ１８０のデスティネーション値フィールド２５０の１つ又はレジスタフアイル１９０に存在するオペランド値又は結果バス２７２に生成する結果に符合するオペランド値を実行ユニット（例えばロードユニット１５２、ストアユニット１５３又はレジスタユニット１５４と１５５）の１つに位置づけるように設定する。
オペランドフェッチ段階
オペランドフェッチ段階３４０のオペランド選択フェーズ３４０．１の間に於いてスケジューラ１８０は、８までのオペランド値（４Ops*２オペランド／Op）を位置づけ、そして各オペランド値の状態、すなわち指定されたソースからの有効値が実際に利用可能であるかどうかを決定する。この情報に基づいてスケジューラ１８０は、オペランドフェッチ段階０（段階３４０）のどのOpsがオペランド送りフェーズに続いて例えば段階１（段階３５０）であるそれらの各々の実行パイプ内に進むかを決定する。進めることの決定は、各Opのために独立して行われ、オペレーションが実際に実行される順序がオペランド依存性によって拘束されることのみが必要である。そのようなデータ依存性が無い場合には異なる実行ユニットに発行するOpsは一般的に他の実行ユニットに割り当てられたこれらのOpsに関する任意の順序にてそれらの各々のパイプラインを通って処理される。この一般的ルールに対する１つの例外はロード及びストアの個別的指定（すなわちLdOpsとStOps）を含みこれは以下に詳細に説明される。
LdStOp実行段階
第１の２個のスケジューラ関連段階であるオペランド発行段階３３０とオペランドフェッチ段階３４０は、RegOps及びLdStOpsに共通である。後続段階は、実行段階である。RegOpsは、全てのRegOpsが単一サイクルにて実行するので単一実行段階３５０で更に、一旦RegOpが実行段階に入るとそれは常に支障なく完了し、そのクロックサイクルの終わりに於いて段階３５０を出る。一方LdStOpsは、２個の実行段階３５２及び３６０をこの間に於いてアドレス計算、区分及びページ変換（及び記憶保護チェック）並びに（LdOpsの場合に）データキャッシュアクセスの全てが行われる。RegOpsとは異なり、LdStOpsは、任意の長さの時間に亘って段階３６０又は３７０のいずれかに停止せしめることができる。この停止の大部分は、第２の段階３７０に於いてである。最も共通的には段階３７０の停止は、データキャッシュ１７０の失敗、データTLB１７１の欠落及びページフォールトから結果する。段階３６０での停止は、メモリ引用の非整合から結果しまた完了へと進まないLdStOpによって占拠されブロックされた段階３７０から結果する。
オペランドフェッチ段階３４０のオペランド送りフェーズ３４０．２の間において、スケジューラ１８０は指定されたソースからのオペランド値を図２においてバス２７１と２７２として一括して示されるオペランドバス及び／または結果バスを介してロードユニット１５２、ストアユニット１５３、レジスタユニットＸ１５４及びレジスタユニットＹ１５５のような実行ユニットへ転送する。例示的実施例は９個のオペランドバス２７１を含みそのうち８個は段階０でのオペレーションのためのオペランド値を提供する。例示的実施例においてはまた、値が有効であるか否かに関わりなくオペランド転送が生じ、これによって制御ロジックが単純化される。オペランド値が無効の場合には、スケジューラ１８０が関連するオペレーションを段階１へ進めないのでこれは各実行ユニットによって無視される。ＲｅｇＯｐｓのための即値は上述のレジスタオペランドを送る機構の一部として処理される。そのような場合、即値はそのＯｐに関連したスケジューラ１８０エントリのデスティネーション値フィールド２５０の特定の１つから直接送られる。
オペランド送りフェーズ３４０．２の間において変位値もまた変位バス１８９．４を介してロードユニット１５２とストアユニット１５３（各ユニットに独立値）に転送される。これらの変位値は３２ビット値であり常にスケジューラ１８０のエントリから来る。ソースエントリの選択はオペランド選択フェーズ３４０．１の間に生起する。ＬｄＯｐまたはＳｔＯｐが段階１に入った場合にはロードユニット１５２とストアユニット１５３が関連する変位値及びオペランド値をラッチする。
スケジューラ１８０はアドレスオペランドと変位を提供するために（上述したように）４フェーズ制御機構を実施するが、ＳｔＯｐｓはアドレスオペランド及び変位値に加えるにストアデータオペランドを必要とする。スケジューラ１８０はＳｔＯｐのためのストアデータを得るために４フェーズプロセスを遂行する。ＳｔＯｐデータを取得するプロセスは上述したものと類似するが、そのストアデータは実行段階２（３７０）の間に得られる。ストアデータを提供するプロセスはＳｔＯｐの段階１及び２に同期され、実行段階１においてＳｔＯｐを識別する選択フェーズ３９０．１、データオペランドのソースを記述する情報を伝送するブロードキャストフェーズ３９０．２、データオペランド選択フェーズ３９０．３及びデータオペランド送りフェーズ３９０．４を含む。ストアデータはＳｔＯｐ実行により並列に取り出され、実際のデータ値はＳｔＯｐ処理の完了の際に取得されストアキュー１５９に提供される。有効ストアデータ値が利用できない場合にはＳｔＯｐが段階２に停止される。
ロード／ストア順序付けの制約
ある程度の実行順序付けが、（レジスタのリネームを用いてスケジューラ１８０によって回避される、アーキテクチャのレジスタに対して希に発生する競合とは異なる）真のデータ依存性を示すＯｐｓ間で継続されなければならないのと同様に、実行順序付けは同じメモリの場所から読み出される（又は書き込まれる）ＬｄＯｐｓとＳｔＯｐｓとの間でも継続されなければならない。
一般に、ロード及びストアはお互いに対してＯＵＴ−ＯＦ−ＯＲＤＥＲ実行しうるが、メモリの同じ場所に新しいロードと古いストアがアクセスする場合は、古いストアは新しいロードのためのデータを供給すべきである。（即ち、新しいロードは古いストアを待機すべきである）。このような場合、ストアデータはデータキャッシュ１７０により新しいロードに供給される。同様に、新しいストアがメモリの同じ場所に書き込みを許可される前に、古いロードが完了しなくてはならない。このような場合、古いストアは待機しなくてはならない。スケジューラ１８０へのコントロールロジックとロード−ストアユニット１５２、１５３との組み合わせにより、このようなロード−ストア順序付けの制約が強制されている。
ロード−ストア順序付けコントロール
オペレーション（及びオペランドフェッチに関係するスケジューラロジックに加えて、スケジューラ１８０のエントリは、ロード−ストアＯＵＴ−ＯＦ−ＯＲＤＥＲ実行コントロールを提供するロード−ストア順序付けロジック２３４を有する。ロード−ストア順序付けロジック２３４の２つの部分は、それぞれロードユニット１５２及びストアユニット１５３に関係し、ロード順序付けロジック４３４ａ及びストア順序付けロジック４３４ｂとして第４図に示されている。各実行ユニットにおけるロード停止ロジック４０３及びストア停止ロジック４１３と共に、ロード−ストア順序付けロジック２３４はロード−ストア実行順序付け制約を強制する。
ロード停止ロジック
実例としてロードユニット１５２に焦点を合わせると、ロード停止ロジック４０３はロードユニット１５２の段階２（ＬＵ２  ４０２）におけるＬｄＯｐより古い様々なパイプライン処理段階におけるＳｔＯｐｓの存在をチェックする。特に、ロード停止ロジック４０３は、段階０、段階１（ＳＵ１  ４１１）、及び段階２（ＳＵ２  ４１２）、即ち第３図の段階３４０、３５２、及び３６０における古いＳｔＯｐｓの存在をチェックする。３つの信号（ＳＣ＿ＳＵ２ＯＬＤＥＲ，ＳＣ＿ＳＵ１ＯＬＤＥＲ及びＳＣ＿ＳＵ０ＯＬＤＥＲ）は、ロード順序付けロジック４３４ａによりロード停止ロジック４０３に供給され、段階２、段階１、及び段階０それぞれにおける古いＳｔＯｐの損残を信号化している。より正確にいえば、ＳＣ＿ＳＵＯＬＤＥＲは、実行段階１及び２より早い処理の段階（例えばオペランドフェッチ段階０  ３４０又は発行段階３３０）における古いＳｔＯｐの存在を表示する。ロード停止ロジック４０３は、ロードユニット１５２の段階２（ＬＵ２  ４０２）におけるＬｄＯｐに対する部分的なメモリアドレスを受け取り、ここに記述した条件のもと、ＬＵ２  ４０２に対する停止信号（ＬＵ２＿Ｈｏｌｄ）を選択的に供給することも行う。
段階０（又は初期の段階）での古いＳｔＯｐによりロード停止ロジック４０３が、ロードユニット１５２の段階２における現在ＬｄＯｐを無条件に停止させる。一方、段階２又は段階１における古いＳｔＯｐは、段階２におけるＬｄＯｐに対するメモリアドレスと古いＳｔＯｐとの間の一致が存在するときに現在ＬｄＯｐを停止させる。以下のＲＴＬはロード停止ロジック４０３のデザイン及びオペレーションを記述したものである。
0003714961.tif 000004
ロード停止ロジック４０３はＬＵ２  ４０２にＬＵ２＿Ｈｏｌｄ信号を供給し、上述の部分的アドレス一致の組み合わせのいずれか（ＡｄｄｒＭａｔｃｈｌ又はＡｄｄｒＭａｔｃｈ２）及びスケジューラ１０８からの相対的古さ表示（ＳＣ＿ＳＵ２ＯＬＤＥＲ，ＳＣ＿ＳＵ１ＯＬＤＥＲ及びＳＣ＿ＳＵ０ＯＬＤＥＲ）が存在するときに、段階２のＬｄＯｐの実行を抑止する。段階１におけるＳｔＯｐに対してリニアアドレスがまだ計算されてないことから、段階２における新しいＬｄＯｐは古い段階０のＳｔＯｐが終わるのを無条件に待機することになる。古いＳｔＯｐが段階１及び２に進んだとき、部分的アドレス不一致によって、新しいＬｄＯｐと古いＳｔＯｐとのＯＵＴ−ＯＦ−ＯＲＤＥＲ競合により順序付け条件または制約が破られないことが確実となり、ロード停止ロジック４０３はＬＵ２＿Ｈｏｌｄ式に従って停止を解除する。
ここに記述された例では、部分的アドレスマッチオペレーションは、部分的に一致するＬｄＯｐ及びＳｔＯｐのためのリニアアドレスの下側部分に基づいて実行される。部分的マッチは、アドレスマッチ回路のクリティカルパスインパクトとスピードとのバランスをとりつつ、偽のマッチの数を制限するに十分な大きさのビットセットを選択するように設計される。この実施例においては、部分リニアアドレスマッチが各リニアアドレスの下側ビット（即ちＬｉｎＡｄｄｒ（９，３），ＳＵ２＿ＰａｇｅＯｆｆｓｅｔ（９，３）及びＳＵ１＿ＬｉｎＡｄｄｒ（９，３））に基づいており、所望の一致速度と許容範囲内の誤り一致程度とのバランスをとっているが、別の実施例では、より多い又はより少ないアドレスビット数のマッチングがとられ、ベースアドレス、論理アドレス、リニアアドレス、又は物理的アドレスに基づいてマッチ判定オペレーションを実行し得る。
８ビットバイトマーク（ＢｙｔｅＭａｒｋ，ＳＵ１＿Ｂｙｔｅｍａｒｋ及びＳＵ２＿ＢｙｔｅＭａｒｋ）も部分的アドレスマッチに含められる。これらのバイトマークは所定のＬｄＯｐ又はＳｔＯｐが対応する特定のバイトを指定する対応するアドレスビット０、１及び２の拡張された可変部であるが、これはこの実施例（ｘ８６プロセッサアーキテクチャに適合したプロセッサインプリメンテーション）では、１バイト、２バイト、４バイト、及び８バイトのロード及びストアが全てサポートされているからである。この実施例では、これらのバイトマークが比較されて、オーバーラップを同定し、従ってＬｄＯｐが読み出す特定のバイトとＳｔＯｐが書き込む特定のバイトとの間の依存性が同定される。
いくつかの追加のターム（term）がロード停止ロジック４０３を記述するＲＴＬに含められる。例えば、ロード停止ロジック４０３は、非投機的ＬｄＯｐ、即ちＤＴＢ＿ＩｎｈＳｐｔｉｖＬｄに示されているように古いメモリトランザクションにおいて読み出されることを許可されていないＬｄＯｐの実行も抑止する。非投機的ＬｄＯｐｓは、単に古いＳｔＯｐｓだけでなく全ての古いＬｄＳｔＯｐに従った厳格な順序付けを維持する。非投機的ロードの場合は、ロード停止ロジック４０３が、古いメモリトランザクションが未完了の（ペンディングされていない）状態を確保する。スケジューラ１８０が互いの順序付けに従ってロードを発行することから、データキャッシュ１７０にコミット（commit）された古いＳｔＯｐｓが存在しない状態が確保されることになる。スケジューラ１８０は、データキャッシュ１７０へのストアキュー１５９を通してＳｔＯｐｓのステータスを追跡し、データキャッシュ１７０にまだコミットされていない古いＳｔＯｐｓが存在しないことを示すＳＣ＿ＬｄＯｌｄｅｓｔ信号を供給する。
第４図によれば、ロード停止ロジック４０３がロード順序付けロジック４３４ａからロードユニット１５２のＬＵ２４０２におけるＬｄＯｐの相対的古さの表示を受け取る。特に、ロード停止ロジック４０３はロード順序付けロジック４３４ａの各スキャンチェーン（ＳＵ２オルダスキャンチェーン４３４ａ．１、ＳＵ１オルダスキャンチェーン４３４ａ．２、及び
ＳＵ０オルダスキャンチェーン４３４ａ．３）からＳＵ＿ＳＵ２ＯＬＤＥＲ表示、ＳＵ＿ＳＵ１ＯＬＤＥＲ表示、及びＳＵ＿ＳＵ０ＯＬＤＥＲ表示を受け取る。ロード停止ロジック４０３はストアユニット１５３のＳＵ１段階４１１及びＳＵ２段階４１２におけるＳｔＯｐｓに対する部分的アドレス信号、及びロードユニット１５２のＬＵ２４０２におけるＬｄＯＰに対する部分的アドレス信号も受け取る。これらの入力に基づいて、ロード停止ロジック４０３は上述のＲＴＬ記述に従って、ＬＵ２４０２におけるＬｄＯｐ（及び後続のＬｄＯｐｓ）を機能停止する停止信号（ＬＵ２＿Ｈｏｌｄ）を選択的にアサートする。
ＬｄＯｐｓ（Ｏｐｓ、オペランド、変位値、及びコントロール信号を含む）は、共同バス１８９として示されているバス及びラインを介してＬＵ１４０１に達する。ＬＵ２４０２におけるＬｄＯｐｓによりアドレス指定されたメモリロケーションは、ＬＵ２＿Ｈｏｌｄがアンアサート即ちアクティブ状態から解放され、共同バス１８９の結果バス１８９．２（図示せず）を介して実行ユニット及びスケジューラ１８０に供給されたとき、データキャッシュ１７０を介してアクセスされる。ロードユニット１５２の両段階（ＬＵ１  ４０１及びＬＵ２  ４０２）は、データＴＬＢ１７１及びメモリ階層の様々なレベルに存在する（Ｌ１データキャッシュ１７０、Ｌ２キャッシュ１１０、主メモリ等）他のメモリ管理構造とやりとりし、仮想アドレス（又はリニアアドレス）を物理的アドレスに変換する。
当業者は上述のＲＴＬに適合するロード停止ロジック４０３の様々なインプリメンテーションを理解することができるであろう。ロード停止ロジック４０３は適切なものであれば、どのようなインプリメンテーションでもよい。第５図には、ロード停止ロジックの組み合わせ論理回路としての実現形態の一例を示したものである。
ストア停止ロジック
ストアユニット１５３は類似した形態のオペレーション停止ロジック、即ち、ストアユニット１５３の段階２（ＳＵ２  ４１２）におけるＳｔＯｐより古い様々なパイプライン処理の段階におけるＬｄＯｐｓの存在をチェックするストア停止ロジック４１３を有する。ストア停止ロジック４１３のデザインはロード停止ロジック４０３に類似しているが、両者は対称的ではない。ストア停止ロジック４１３は段階１（ＬＵ１  ４０１）及び段階２（ＬＵ２  ４０２）、即ち第３図の段階３５２及び３６０における古いＬｄＯｐｓの存在をチェックする。ストア順序付けロジック４３４ｂによりストア停止ロジック４１３に供給される２つの信号（ＳＣ＿ＬＵ２ＯＬＤＥＲ及びＳＣ＿ＬＵ１ＯＬＤＥＲ）は、段階２及び１におけるそれぞれの古いＬｄＯｐの存在を示す信号である。より正確に言えば、ＳＣ＿ＬＵ１ＯＬＤＥＲは、実行段階２より早い処理の段階（例えば実行段階１３５２、オペランドフェッチ段階０３４０、又は発行段階３３０）における古いＬｄＯｐの存在を表示する。ストア停止ロジック４１３はストアユニット１５３の段階２（ＳＵ２４１２）におけるＳｔＯｐに対する部分的メモリアドレスを受け取り、上述の条件のもと停止信号（ＳＵ２＿Ｈｏｌｄ）を選択的にＳＵ２  ４１２にアサートする。
段階１（又はより早い段階）における古いＬｄＯｐによりストア停止ロジック４１３が、無条件にストアユニット１５３の段階２における現在ＳｔＯｐを停止する。一方、段階２における古いＬｄＯｐは段階２におけるＳｔＯｐに対するメモリアドレスと古いＬｄＯｐとの間の一致がありさえすれば現在ＳｔＯｐを停止する。以下のＲＴＬはストア停止ロジック４１３のデザイン及びオペレーションを記述したものである。
0003714961.tif 000005
ストア停止ロジック４１３は、部分アドレス一致（ＡｄｄｒＭａｔｃｈ２）とスケジューラ１８０からの相対的古さ表示（ＳＣ＿ＬＵ２ＯＬＤＥＲ及びＳＣ＿ＬＵ１ＯＬＤＥＲ）との上に指定した組み合わせのいずれかが存在するとき、ＳＵ２＿Ｈｏｌｄ信号をＳＵ２  ４１２に供給して、段階２ＳｔＯｐの実行を抑止する。段階２における新しいＳｔＯｐは古い段階１（又は早い）ＬｄＯｐを無条件に待機する。古いＬｄＯｐが段階２に進むと、部分アドレス不一致が新しいＳｔＯｐと古いＬｄＯｐのＯＵＴ−ＯＦ−ＯＲＤＥＲ競合により順序付け制約が破られていないことを確定し、ストア停止ロジック４１３はＳＵ２＿Ｈｏｌｄ式に従って停止を解放する。
ロード停止ロジック４０３については、ストア停止ロジック４１３がＳｔＯｐ及びＬｄＯｐｓに対するリニアアドレスの下側部分（即ちＬｉｎＡｄｄｒ（９，３）及びＬＵ２＿ＰａｇｅＯｆｆｓｅｔ（９，３））に基づいて部分的アドレスマッチング処理を実行する。バイトマーク（ＢｙｔｅＭａｒｋ及びＬＵ２＿ＢｙｔｅＭａｒｋ）も部分的アドレスマッチに含められる。
この実施例においては、ロード停止ロジック４０３に類似したストア停止ロジック４１３が、停止を開始（trigger）する条件の組を過剰に含んでいる。しかし、ストア停止ロジック４１３のデザインはロード停止ロジック４０３よりより過剰に包括的である。例えば、ストア停止ロジック４１３はアドレスマッチの存在をチェックする古い段階１のＬｄＯｐに対する新しい段階２のＳｔＯｐを停止する。別の実施例では、一層厳格に（又はより厳格度を小さくして）ストア停止ロジック４１３おける停止か、ストア停止ロジック４１３の動作そのもの、またはその両方を開始する条件の組を限定している。しかし、この実施例では、ストア停止ロジック４１３は一般的な命令プロフィールにおいてＬｄＯｐｓがＳｔＯｐｓに依存していることが多い、又は逆のことが多いという推定に基づいて、停止条件の限定度を緩めている。
第４図を参照すると、ストア停止ロジック４１３がストア順序付けロジック４３４ｂからのストアユニット４５３のＳＵ２  ４１２におけるＬｄＯｐの相対的古さの表示を受け取る。特に、ストア停止ロジック４１３はストア順序付けロジック４３４ｂの各スキャンチェーン（ＬＵ２オルダスキャンチェーン４３４ｂ．１及びＬＵ１オルダスキャンチェーン４３４ｂ．２）からのＳＣ＿ＬＵ１ＯＬＤＥＲ及びＳＣ＿ＬＵ２ＯＬＤＥＲ表示を受け取る。ストア停止ロジック４１３はロードユニット１５２のＬＵ２  ４０２段階におけるＬｄＯｐｓに対する部分的アドレス信号、及びストアユニット１５３のＳＵ２  ４１２におけるＳｔＯｐに対する部分的アドレス信号も受け取る。これらの入力に基づいて、ストア停止ロジック４１３は供述のＲＴＬ記述に従ってＳＵ２  ４１２におけるＳｔＯｐ（及び後続のＳｔＯｐｓ）を機能停止する停止信号（ＳＵ２＿Ｈｏｌｄ）を選択的にアサートする。
ＳｔＯｐｓ（Ｏｐｓ、オペランド、変位値、及びコントロール信号を含む）は、共同バス１８９として図示されている各バス及びラインを介してＳＵ１  ４１１に達する。ＳＵ２  ４１２におけるＳｔＯｐｓに対するメモリアドレス及びストアオペランドは、ＳＵ２＿Ｈｏｌｄが逆アサート（又は解放）されたときストアキュー１５９に供給される。次いで、ストアキュー１５９はストアオペランドをデータキャッシュ１７０を介してアドレス空間に書き込む。ストアユニット１５３の両段階（ＳＵ１  ４１１及びＳＵ２  ４１２）はデータＴＬＢ１７１及びメモリ階層の様々なレベル（Ｌ１データキャッシュ１７０、Ｌ２キャッシュ１１０、主メモリ等）に存在する他のメモリ管理構造とやりとりし、仮想アドレス（又はリニアアドレス）を物理的アドレスに変換する。
当業者は上述のＲＴＬに適合するストア停止ロジック４１３の様々なインプリメンテーションを理解することができるであろう。ストア停止ロジック４１３は適切なものであれば、どのようなインプリメンテーションでもよい。第６図には、ストア停止ロジックの組み合わせ論理回路としての実現形態の一例を示したものである。
スキャンチェーンを含むスケジューラロジック
スケジューラ１８０はＬｄＯｐｓとＳｔＯｐｓとの間の十分な実行順序付けを維持するためのサポートも提供する。この実施例においては、このサポートはロード停止ロジック４０３及びストア停止ロジック４１３へ相対的古さ表示を供給するスキャンチェーンの形態である。上述のように、順序付けはロード及びストアパイプライン処理の段階２（即ちＬＵ２４０２及びＳＵ２４１２）においてオペレーションを停止することにより維持される。実行順序付けは、メモリ位置を参照するＳｔＯｐｓに対して維持される。この実施例では、実際にメモリをアドレス指定しないＬＥＡＳｔＯｐｓ（ロード実行アドレス）に対しては順序付けは強制されていないが、誤りである可能性のあるアドレスを発生するＣＤＡ及びＣＩＡＳｔＯｐｓ（チェックデータ実行アドレス及びチェック命令実行アドレス）は順序付けスキームの中に含められ、回路デザインが単純化されている。ＬｄＯｐｓの中に順序付けスキームから除外されているものはないが、これは全てのＬｄＯｐｓｔがメモリを参照するからである。別の実施例には、ＬＥＡ、ＣＤＡ、及びＣＩＡＳｔＯｐｓのようなＯｐｓを適切なものとして含むものか、除外しているものかの何れかの場合がある。
第２図に戻ると、スケジューラ１８０内のロード−ストア順序付けロジック２３４は、ロード実行ユニット及びストア実行ユニットのそれぞれの段階２における特定のＬｄＯｐｓ及びＳｔＯｐｓに関してＬｄＳｔＯｐｓの相対古さ表示を供給する。ロード−ストア順序付けロジック２３４は、スケジューリングリザーバ２４０における各Ｏｐエントリ（例えばＯｐエントリ２４０．１）のＴｙｐｅ［２：０］フィールド２４１及びＳｔａｔｅ［３：０］フィールド２４２にアクセスし、相対ストア古さ表示（例えばＳＣ＿ＬＵ２ＯＬＤＥＲ、及びＳＣ＿ＬＵ１ＯＬＤＥＲ、及びＳＣ＿ＬＵ０ＯＬＤＥＲ）をロードユニット１５２に図面において１８９．５として示されている共通のラインを介して供給し、相対ロード古さ表示（例えばＳＣ＿ＬＵ２ＯＬＤＥＲ、及びＳＣ＿ＬＵ１ＯＬＤＥＲ）を同様に共通のラインを介してストアユニット１５３に供給する。
第４図には、ロード／ストア順序付けロジック２３４がロード順序付けロジック４３４ａ及びストア順序付けロジック４３４ｂの一部分として示されている。ＬｄＯｐｓの場合にはロード順序付けロジック４３４ａが、ＳＵ２  ４１２に於けるＳｔＯｐｓがあればそれに関連して、ＳＵ１  ４１１に於けるＳｔＯｐｓがあればそれに関連して、また処理の早い段階に於ける他のＳｔＯｐｓに関連して、ＬＵ１  ４０１に於けるＬｄＯｐの相対的古さを決定する。ＳｔＯｐｓについては、ストア順序付けロジック４３４ｂが、ＬＵ２  ４０２に於けるＬｄＯｐがあればそれに関連して、また処理の早い段階に於ける他のＬｄＯｐｓに関連してＳＵ１  ４１１に於けるＳＴＯＰの相対的古さを決定する。
第４図には、３要素スキャンチェーンＳＵ、即ちオルダスキャンチェーン４３４ａ．１、ＳＵ１オルダスキャンチェーン４３４ａ．２、及びＳＵ０オルダスキャンチェーン４３４ａ．３を含むロード順序付けロジック４３４ａが示されている。各要素スキャンチェーンは、スケジューリングリザバ２４０に於けるＯｐエントリのＴｙｐｅ［２：０］フィールド２４１及びＳｔａｔｅ［３：０］フィールド２４２（図示せず）に基づいて各相対的古さ表示を供給する。ＳＵ２オルダスキャンチェーン４３４ａ．１は、ＳＣ＿ＳＵ２ＯＬＤＥＲを供給し、ＳＵ１オルダスキャンチェーン４３４ａ．２は、ＳＣ＿ＳＵ１ＯＬＤＥＲを供給し、ＳＵ０オルダスキャンチェーン４３４ａ．３は、ＳＣ＿ＳＵ０ＯＬＤＥＲを供給する。
ストア順序付けロジック４３４ｂのデザインは、ロード順序付けロジック４３４ａに類似しているが対称的ではない。特に、ストア順序付けロジック４３４ｂは成分スキャンチェーンＬＵ２、オルダスキャンチェーン４３４ｂ．１及びＬＵ１オルダスキャンチェーン４３４ｂ．２を含む。ノード順序付けロジック４３４ａの場合と同様にストア順序付けロジック４３４ｂの各成文スキャンチェーンは、Ｔｙｐｅ［２：０］フィールド２４１及びＳｔａｔｅ［３：０］フィールド２４２を用いて、各相対的古さ表示を供給する。ＬＵ２オルダスキャンチェーン４３４ｂ．１は、ＳＣ＿ＳＵ２ＯＬＤＥＲを供給し、ＬＵ１オルダスキャンチェーン４３４ｂ．２は、ＳＣ＿ＬＵ１ＯＬＤＥＲを供給する。説明のため各スキャンチェーンは独立したスキャンチェーンとして示されているが、当業者は、ロード順序付けロジック４３４ａ及びストア順序付けロジック４３４ｂがロジックを共有し得る、例えばＴｙｐｅ［２：０］及びＳｔａｔｅ［３：０］検出回路を各成分スキャンチェーンの後で共有し得るということを理解できよう。
この実施例に於いては、ロード順序付けロジック４３４ａスキャンチェーン（則ちＳＵ２オルダスキャンチェーン４３４ａ．１、ＳＵ１オルダスキャンチェーン４３４ａ．２及びＳＵ０オルダスキャンチェーン４３４ａ．３）が高速アダーで使用されるもののような、“生成−伝播−強制終了（generate-propagate-kill）”キャリールックアヘッド（先読み）ロジック（carry lookahead logic）を単純化したものである伝搬−強制終了型スキャンチェーンロジックを含む。ストア順序付けロジック４３４ｂのスキャンチェーン（ＬＵ２オルダスキャンチェーン４３４ｂ．１及びＬＵ１オルダスキャンチェーン４３４ｂ．２）も“伝播−強制終了”型スキャンチェーンロジックを含む。従来の“生成−伝播−強制終了”キャリールックアヘッド技術ロジックの単純化は、生成（Ｇ）タームが０であり、伝播（Ｂ）タームが関連する強制終了（Ｋ）タームの補数であるという観察から考え出されたものである。
ロード順序付けロジック４３４ａ及びストア順序付けロジック４３４ｂについて以下第４図を参照しつつ説明する。（１つのＬｄＳｔＯｐについて）段階２の第１フェーズの間、ロード順序付けロジック４３４ａ及びストア順序付けロジック４３４ｂのスキャンチェーンは、“伝播−強制終了”型スキャン（３つはＬｄＯｐｓに対して２つはＳｔＯｐｓに対して）をスケジューラ１０８のエントリの最も古いものから最も新しいものまでに亘って実行する。段階２の第２フェーズの間、多重化ロジックは、段階２のＬｄＳｔＯｐに対応するＣｉｎ信号をサンプリングし、停止ロジック（４０３又は４１３）に相対的古さ表示を供給する。一つのスキャンチェーンに焦点を合わせて説明すると、ＳＵ２オルダスキャンチェーン４３４ａ．１は、段階２の第１フェーズの間にスケジューラ１０８のエントリ全体に亘って“伝播−強制終了”スキャンを実行する。多重化ロジック４３４ａ．４は、その関連するスキャンチェーン（ＳＵ２オルダスキャンチェーン４３４ａ．１）からＬＵ２  ４０２に於けるＬｄＯｐに対するＯｐエントリに対応するＣｉｎ信号をサンプリングする。多重化ロジック４３４ａ．４は、ついでロード停止ロジック４０３に対してＳＣ＿ＳＵ２ＯＬＤＥＲ信号として＜Ｃｉｎの反転＞を供給する。
ロード順序付けロジック４３４ａの、他のスキャンチェーンのデザイン及びオペレーションも類似したものである。例えば、ＳＵ１オルダスキャンチェーン４３４ａ．２は、スケジューラ１０８のエントリをスキャンし、関連する多重化するロジック４３４ａ．５は、ＳＣ＿ＳＵ１ＯＬＤＥＲ信号をロード停止ロジック４０３に供給する。同様にＳＵ０オルダスキャンチェーン４３４ａ．３はスケジューラ１８０のエントリをスキャンし、関連する多重化ロジック４３４ａ．６はＳＣ＿ＳＵ２ＯＬＤＥＲ信号をロード停止ロジック４０３に供給する。
ストア順序付けロジック４３４ｂの各スキャンチェーンは類似したものである。１つのスキャンチェーンに焦点を合わせて説明すると、ＬＵ２オルダスキャンチェーン４３４ｂ．１は、段階２の第１フェーズの間、スケジューラ１０８のエントリ全体に亘って“伝播−強制終了”スキャンを実行する。多重化ロジック４３４ｂ．４は、関連するスキャンチェーンＬＵ２オルダスキャンチェーン４３４ｂ．１から、ＳＵ２  ４１２に於けるＳｔＯｐに対するＯｐエントリについてのＣｉｎ信号をサンプリングする。次いで多重化ロジック４３４ｂ．４は、ＳＣ＿ＳＵ２ＯＬＤＥＲ信号として＜Ｃｉｎの反転＞をストア停止ロジック４１３に供給する。ストア順序付けロジック４３４ｂの、他のスキャンチェーンのデザイン及び動作も類似したものである。例えばＬＵ１オルダスキャンチェーン４３４ｂ．２は、スケジューラ１８０のエントリをスキャンし、関連する多重化ロジック４３４ｂ．５は、ＳＣ＿ＬＵ１ＯＬＤＥＲ信号をストア停止ロジック４１３に供給する。
段階２ＬｄＯｐ（又は位置合わせされていない（misaligned）ロードの前半を実行する段階１のＬｄＯｐ）は、ＳｔＯｐの３つのカテゴリーに対して相対的なＬｄＯｐの古さが求められなければならないことから、３つのスキャンチェーンを必要とする。ロード順序付けロジック４３４ａの各スキャンチェーンは、３つのカテゴリーのなかの１つに於いて、第１の、即ち最も古いＳｔＯｐをスキャンする。ＳＵ２オルダスキャンチェーン４３４ａ．１は、段階２のＳｔＯｐ（又は位置合わせされていないストアの前半を実行する段階１のＳｔＯｐ）を検出する。ＳＵ１オルダスキャンチェーン４３４ａ．２は、段階１のＳｔＯｐを検出し、ＳＵ０オルダスキャンチェーン４３４ａ．３は、予備段階１のＳｔＯｐｓを検出する。スキャンチェーンの任意の点に於ける「キャリー」信号Ｃｉｎの状態は、（スケジューラ１８０に於ける対応するＯｐエントリのＳｔａｔｅ［３：０］によりコード化されたとき、）関連状態のＳｔＯｐが検出されたか否かを反映する。従って、段階２ＬｄＯｐに対するＯｐエントリに対応するＣｉｎは、特定のスキャンチェーンにより検出された状態のＳｔＯｐｓに対するＬｄＯｐの相対的古さを与えるものである。Ｃｉｎ＝１である場合は、キャリー信号がスキャンチェーンを古いものから新しいＯｐエントリまで伝播し、特定の状態の古いＳｔＯｐが存在しないときには、「強制終了（kill）」されない。これらのＣｉｎ表示に基づき、相対的古さ表示（ＳＣ＿ＳＵ２Ｏｌｄｅｒ，ＳＣ＿ＳＵ１Ｏｌｄｅｒ，及びＳＣ＿ＳＵ０Ｏｌｄｅｒ）はロード停止ロジック４０３に供給され、そのロード停止ロジックが、検定するべきＳＵコンパレータ信号（ＡｄｄｒＭａｔｃｈ１，ＡｄｄｒＭａｔｃｈ２）が何れであるかを、より一般的には、段階２ＬｄＯｐを停止するべきか否かを決定する。
段階２ＳｔＯｐ（又は位置合わせされていない（misaligned）ストアの前半を実行する段階１のＳｔＯｐ）は、ＬｄＯｐの２つのカテゴリーに対して相対的なＳｔＯｐの古さが求められなければならないことから、２つのスキャンチェーンを必要とする。ストア順序付けロジック４３４ｂの各スキャンチェーンは、３つのカテゴリーのなかの１つに於いて、第１の、即ち最も古いＬｄＯｐをスキャンする。ＬＵ２オルダスキャンチェーン４３４ｂ．１は、段階２のＬｄＯｐ（又は位置合わせされていないロードの前半を実行する段階１のＬｄＯｐ）を検出する。Ｌｕ１オルダスキャンチェーン４３４ｂ．２は、予備段階２のＬｄＯｐｓを検出する。スキャンチェーンの任意の点に於ける「キャリー」信号Ｃｉｎの状態は、（スケジューラ１８０に於ける対応するＯｐエントリのＳｔａｔｅ［３：０］によりコード化されたとき、）関連状態のＬｄＯｐが検出されたか否かを反映する。従って、段階２ＳｔＯｐに対するＯｐエントリに対応するＣｉｎは、特定のスキャンチェーンにより検出された状態のＬｄＯｐｓに対するＳｔＯｐの相対古さを与えるものである。Ｃｉｎ＝１である場合は、キャリー信号がスキャンチェーンを古いものから新しいＯｐエントリまで伝播し、特定の状態の古いＬｄＯｐが存在しないときには、「強制終了（kill）」されない。これらのＣｉｎ表示に基づき、相対的古さ表示（ＳＣ＿ＬＵ２Ｏｌｄｅｒ及びＳＣ＿ＬＵ１Ｏｌｄｅｒ）はストア停止ロジック４０３に供給され、そのストア停止ロジックが、検定するべきＬＵ段階２アドレスコンパレータ信号（ＡｄｄｒＭａｔｃｈ２）が何れであるかを、より一般的には、段階２ＳｔＯｐを停止すべきか否かを決定する。
各スキャンチェーン（則ちＳＵ２オルダスキャンチェーン４３４ａ．１、ＳＵ１オルダスキャンチェーン４３４ａ．２、ＳＵ２オルダスキャンチェーン４３４ａ．３、ＬＵ２オルダスキャンチェーン４３４ｂ．１、及びＬＵ１オルダスキャンチェーン４３４ｂ．２）は、スケジューラ１８０の最も古いエントリから最も新しいエントリまでの伝播−強制終了チェーンである。次のＲＴＬは、ルックアヘッド方程式（lookahead equation）により各５つのスキャンチェーンを記述したものである。ビットレベルＰ／Ｋタームは、エントリのＳｔａｔｅ［３：０］フィールド（特にＳ１，Ｓ２，Ｓ３ビット）及びＴｙｐｅ［２：０］フィールド（ＳＴまたはＬＵ）にのみ基づいている。これら３つのＬｄＯｐスキャンチェーンについては、ＳＴタイプビットがＳＵビットの代わりに用いられる。これにより論理アドレスの生成のみを行うＬＥＡオペレーションから実際にメモリを参照するＳｔＯｐｓが区別される。
以下に続くＲＴＬは、ロード順序付けロジック４３４ａ及びストア順序付けロジック４３４ｂのオペレーション（多重化ロジック４３４ａ．４、４３４ａ．５、４３４ａ．６、４３４ｂ．４及び４３４ｂ．５）及びスキャンチェーン（４３４ａ．１、４３４ａ．２、４３４ａ．３、４３４ｂ．１及び４３４ｂ．２を含む）を記述したものである。特に、ＬＵｓｔ２、ＬＵｓｔ１、及びＬＵｓｔ０にラベル付けされたＯｐエントリ方程式は、それぞれＳｕ２オルダスキャンチェーン４３４ａ．１、Ｓｕ１オルダスキャンチェーン４３４ａ．２及びＳｕ０オルダスキャンチェーン４３４ａ．３として上に列挙されたスキャンチェーンに対する各Ｏｐエントリに対応するＴ及びＫタームを示す。同様にＳＵｌｄ２及びＳｕｌｄ１と標識付けされたＯｐエントリ方程式は、それぞれＬＵ２オルダスキャンチェーン４３４ｂ．１及びＬＵ１オルダスキャンチェーン４３４ｂ．２として上に列挙されたスキャンチェーンに対する各Ｏｐエントリに対応するＰ及びＫタームを示す。
ビットラベルまたはＯｐエントリ方程式
0003714961.tif 000006
この実施例に於いては、（Ｓ２＋Ｓ１  ＳＵ２＿ＦｉｒｓｔＡｄｄｒＶ）及び（Ｓ２＋Ｓ１  ＬＵ２＿ＦｉｒｓｔＡｄｄｒＶ）タームは、位置合わせされていないメモリアクセスオペレーションの前半を実行する段階１ＬｄＳｔＯｐｓの機能停止を管理するためにＯｐエントリ方程式を拡張する。
ロード順序付けロジック４３４ａ及びストア順序付けロジック４３４ｂのスキャンチェーンは以下のビット及びグループルックアヘッド方程式により記述されたキャリールックアヘッドロジックとして形成される。グループルックアヘッド方程式は、以下のようなものである。
グループルックアヘッド方程式（４ビットグループベース）
0003714961.tif 000007
クワッド（Ｑｕａｄｓ）のなかのルックアヘッド
0003714961.tif 000008
ここでグループは、４ビットグループである。当業者は、異なるグループのコンフィギュレーションを用いたインプリメンテーションを含む様々なインプリメンテーションを理解できるであろう。
相対的古さの決定は、ツリー構造ルックアヘッドロジックを用いることにより更に早く行うことができる。第７Ａ図及び第７Ｂ図は、３ビットグループに基づくこのようなデザインの１つを示した図である。第７Ａ図に示されているのは、スケジューラ１８０の２４個のＯｐエントリのそれぞれに関連するＰ（伝播）タームからの８つのグループ「キャリーイン」信号のうちの７つＣｉｎＧｒｐ１、ＣｉｎＧｒｐ２、ＣｉｎＧｒｐ３、ＣｉｎＧｒｐ４、ＣｉｎＧｒｐ５及びＣｉｎＧｒｐ６を生成するためのＡＮＤツリー７１０である。８番目の「キャリーイン」信号ＣｉｎＧｒｐ７は、論理１である。第７Ａ図の実施例に於いて、ゲートの初めの２つの階層（レベル）は、ＮＡＮＤ及びＮＯＲゲートとして示されており、その下の階層はＡＮＤゲートである。別の実施例では、ＡＮＤゲート、ＮＡＮＤ及びＮＯＲゲートの交代的な階層、またはそれらの組み合わせを用いて標準的（canonical）ＡＮＤツリーをインプリメントする。ＮＡＮＤインバーターペアとして標準ＡＮＤツリーの後ろのレベルをインプリメントすることにより、信号立ち上がり時間を（ゲートの後半レベル同士を接続する一般的に長いラインと共に）改善することができる。好ましくは、追加のゲートディレイ（例えば第７Ａ図に示すバックツーバックインバータ）が例えばＣｉｎＧｒｐ３，ＣｉｎＧｒｐ４、ＣｉｎＧｒｐ５、及びＣｉｎＧｒｐ６信号経路のような信号経路に沿って供給される。このようにしてＡＮＤツリーに於けるファンアウトは、２つ（２）に制限することができ、これによりあるゲートに於けるより大きいファンアウトを有するインプリメンテーションと比較してＡＮＤツリーのクリティカルパスのタイミング特性を改善することができる。第７Ａ図及び第７Ｂ図のロジックに基づくスキャンチェーン４３４ａ．１、４３４ａ．２、４３４ａ．３、４３４ｂ．１及び４３４ｂ．２のインプリメンテーションは、類似したものであるが、それぞれ（例えばＰ０、Ｐ１、Ｐ２．．．Ｐ２３）に関係するＴタームの性質は、Ｏｐエントリ方程式に関連して上述したように異なったものである。
ここでロード順序付けロジック４３４．ａのスキャンチェーン（則ちＬＵｓｔ２、ＬＵｓｔ１及びＬＵｓｔ０方程式により定義したスキャンチェーン）のより一般的なＲＴＬによる記述に戻ると、各Ｏｐエントリに対応するＣｉｎ値（例えば、ＬＵＳＴ２方程式により上に定義されたエントリを有するスキャンチェーン２４個のＬＵｓｔ２Ｃｈａｉｎ．ＣＩＮ値、ＬＵｓｔ１方程式により上に定義されたエントリを有するスキャンチェーンの２４のＬＵｓｔ１Ｃｈａｉｎ．ＣＩＮ値及びＬＵｓｔ０方程式により上に定義されたエントリを有するスキャンチェーンの２４個のＬＵｓｔ０Ｃｈａｉｎ．ＣＩＮ値）は、以下のＲＴＬに従って、結合される。
0003714961.tif 000009
ロード順序付けロジック４３４ａ定義に焦点を合わせると、３つの信号、ＬＵＡｇｅｓ［２：０］は、多重化ロジック４３４ａ．４、多重化ロジック４３４ａ．５、及び多重化ロジック４３４ａ．６のそれぞれの出力である。（ＬＵ〜Ｓ３（Ｓ２＋Ｓ１Ｌ２＿ＦｉｒｓｔＡｄｄｒＶ）タームは、段階２ＬｄＯｐ（又はｍｉｓａｌｉｇｎｅｄロードの前半を実行する段階値ＬｄＯｐ）に対応する特定のＣｉｎ値を選択するマルチプレクサ選択ロジックを表す。
格納順序付けロジック４３４ｂは類似したものである。ストア順序付けロジック４３４ｂの２つのスキャンチェーンのそれぞれに対して、各Ｏｐエントリに対応するＣｉｎ値（則ちＳｕｌｄ２方程式により上に定義されたエントリを有するスキャンチェーンの２４個のＳＵｌｄ２ｃｈａｉｎ．ＣＩＮ値）及びＳＵｌｄ１方程式により上に定義されたエントリを有するスキャンチェーンの２４個のＳＵｌｄ１ｃｈａｉｎ．ＣＩＮ値）は、上述のＲＴＬにより定義されている２４：１多重化ロジックと結合される。信号ＳＵＡｇｅｓ（１：０）は、多重化ロジック４３４ｂ．４及び多重化ロジック４３４ｂ．５のそれぞれの出力である。（ＳＵ〜Ｓ３（Ｓ２＋Ｓ１  ＳＵ２＿ＦｉｒｓｔＡｄｄｒＶ））タームは段階２ＳｔＯｐ（又は、位置合わせされていないストアの前半を実行する段階１ＳｔＯｐ）に対応する特定のＣｉｎ値を選択するマルチプレクサ選択ロジックを表現したものである。
多重化ロジック４３４ａ．４、４３４ａ．５、４３４ａ．６により選択されたキャリー信号は反転され、それぞれＳＣ＿ＳＵ２Ｏｌｄｅｒ、ＳＣ＿ＳＵ１Ｏｌｄｅｒ及びＳＣ＿ＳＵ０Ｏｌｄｅｒとしてロード停止ロジック４０３に供給される。同様に、多重化ロジック４３４ｂ．４及び４３４ｂ．５により選択されたキャリー信号は反転されて、それぞれＳＣ＿ＬＵ２Ｏｌｄｅｒ及びＳＣ＿ＳＵ１Ｏｌｄｅｒとしてストア停止ロジック４１３に供給される。当業者は多重化ロジックの適切なインプリメンテーションには様々な形態があることを理解されよう。
第７Ｂ図には、第７Ａ図のＡＮＤツリーからのグループキャリーイン信号（ＣｉｎＧｒｐ０、ＣｉｎＧｒｐ１、ＣｉｎＧｒｐ２、ＣｉｎＧｒｐ３、ＣｉｎＧｒｐ４、ＣｉｎＧｒｐ５、ＣｉｎＧｒｐ６及びＣｉｎＧｒｐ７）を用いて各ＬｕＡｇｅｓ［２：０］及びＬｕＡｇｅｓ［２：０］信号の生成を早める多重化ロジック４３４ａ．４、４３４ａ．５、４３４ａ．６、４３４ｂ．４及び４３４ａ．５のデザインが示されている。各スキャンチェーン（則ちＳＣ＿ＳＵ２Ｏｌｄｅｒ、ＳＣ＿ＳＵ１Ｏｌｄｅｒ、ＳＣ＿ＳＵ０Ｏｌｄｅｒ、ＳＣ＿ＬＵ２Ｏｌｄｅｒ及びＳＣ＿ＬＵ１Ｏｌｄｅｒ）のインプリメンテーションについては、３つのＯｐエントリのグループに関係する信号が、ロジックブロック７２０として示されている８つの並列ロジックブロックに結合され、この８つの得られた信号は２レベルＯＲ構造（図示せず）に於いて結合されて、関連するＡｇｅｓ（古さ）信号を供給する。ロジックブロックの７２０に於いて、ＣｉｎＧｒｐ０入力は第７Ａ図からのグループ０キャリーイン信号であり、Ｐ［０］、Ｐ［１］及びＰ［２］入力は、３つの所定のグループに関係するＯｐエントリレベル伝播タームを表し、ＳＥＬ［０］、ＳＥＬ［１］、及びＳＥＬ［２］タームは、連携するＯｐエントリ選択タームである。７つの残りの並列ロジックブロック（図示せず）は類似しており、グループキャリーイン信号、Ｏｐエントリレベル伝播ターム、及びＯｐエントリ選択タームのそれぞれを入力として受け取る。
多重化ロジック４３４ａ．５、４３４ａ．６、４３４ｂ．４、４３４ａ．５の第７Ｂ図のロジックに基づくインプリメンテーションは、類似しているがそれぞれに関係するＰ［Ｎ］タームの性質は、ＯｐエントリＲＴＬ方程式に関して記述したように異なっている。更に、ＳＥＬ［Ｎ］のタームの性質は、スキャンチェーンが段階２ＬｄＯｐより古いＳｔＯｐを指定するためのものであるか、又は段階にＳｔＯｐより古いＬｄＯｐを指定するものであるかに応じて異なる。複雑なゲートへのＳＥＬ［Ｎ］入力は、上述のＲＴＬ、即ち（ＬＵｘＯｌｄｅｒスキャンチェーンに対するＬＵ〜Ｓ３（Ｓ２＋Ｓ１ＬＵ２＿ＦｉｒｓｔＡｄｄｒＶ））及びＳＵｘＯｌｄｅｒスキャンチェーンに対する（ＳＵ〜Ｓ３（Ｓ２＋Ｓ１  ＳＵ２＿ＦｉｒｓｔＡｄｄｒＶ））について上述した選択ロジックでインプリメントすることにより形成される。
本発明の様々な実施例について説明したが、これらの実施例は単なる例示であり、本発明の範囲をこれらの実施例に限定しようとするものでないということは理解されよう。ここに開示した実施例の様々な変更、変形、追加及び改善が可能である。例えばスケジューラ１８０に於けるＯｐエントリをスケジューラ１８０に於けるＯｐエントリをＯｐクワッド（quads）として組織したのは単なる例示である。別の実施例には、多重処理かパイプライン処理、またはその両方を行う実行ユニットを有するコンピュータにおけるオペレーションの性質及び状態を表す他の構造か方法、又はその両方を含まれる。更に他の実施例には、例えばＬ１キャッシュ及びＬ２キャッシュのようなキャッシュ及びメモリの異なる階層を含まれ得る。別の実施例は、複数の及び／又はパイプライン処理を行う実行ユニットを有するコンピュータにおけるオペレーションの性質及び状態を表す他の構造及び／又は方法を含む。さらに、他の実施例は、例えばＬ１キャッシュ及びＬ２キャッシュのようなキャッシュ及びメモリの異なる階層を含みうる。
他の実施例には、ロードユニット１５２及びストアユニット１５３内部の構造及び機能性の分配が異なった形態のものが含まれる。例えば、ロードユニット１５２とストアユニット１５３を個別に修飾して、実行段階をより多く、またはより少なくすることができる。アドレス比較のための構造の分配がロードユニット１５２とストアユニット１５３との間で異なるようにしてもよい。更に別の実施例として、ＬｄＯｐｓ及びＳｔＯｐｓを停止するためのスキャンチェーンをより多く、又はより少なくすることができる。より保守的な停止（hold）の方針を採用して、アドレス比較を除去することもできる。更に、この実施例においてハードウェアとして提供されている構造及び機能は、ソフトウェア、ファームウェア、又は別の実施例においてマイクロコードとして実現することができる。
本発明に基づくロード／ストアオペレーションのＯＵＴ−ＯＦ−ＯＲＤＥＲ実行コントロールを実現する様々なコンピュータシステムコンフィギュレーションが考えられる。例えば、このようなコンピュータシステム（例えばコンピュータシステム１０００）は、本発明によるロード／ストアＯＵＴ−ＯＦ−ＯＲＤＥＲ実行コントロールを提供するプロセッサ１００、メモリサブシステム（例えばＲＡＭ１０２０）、ディスプレイアダプタ１０１０、ディスクコントローラ／アダプタ１０３０、様々な入力／出力インタフェース及びアダプタ（例えば並列インタフェース１００９、直列インタフェース１００８、ＬＡＮアダプタ１０７等）、及び対応する外部装置（例えばディスプレイデバイス１００１、プリンタ１００２、モデム１００３、キーボード１００６、及びデータ記憶装置）を含む。データ記憶装置には、例えばハードディスク１０３２、フロッピー（商標）ディスク１０３１、テープユニット、ＣＤ−ＲＯＭ、ジュークボックス、ＲＡＩＤ、フラッシュメモリ等のような装置が含まれる。ここに列挙した、或いは他の変形、修正、付加、及び改良は以下の請求の範囲に定義された本発明の範囲内に収まり得るものである。
【図１】
0003714961.tif 000010
【図２】
0003714961.tif 000011
【図３】
0003714961.tif 000012
【図４】
0003714961.tif 000013
【図５】
0003714961.tif 000014
【図６】
0003714961.tif 000015
【図７Ａ】
0003714961.tif 000016
【図７Ｂ】
0003714961.tif 000017
【図８】
0003714961.tif 000018