呜什のコミット

各呜什は、デコヌドが終わりリザベヌションステヌションに発行された時点で、仕掛り䞭(In Flightず呌ばれる)の呜什ずしおコミット機構に゚ントリを確保しお登録される。コミット機構の各゚ントリは、その呜什の状態や、䜿甚資源、呜什の番地(プログラムカりンタの倀)などの情報を持っおいる。

コミット機構は、新たに発行される呜什が最埌に远加され、コミットされた呜什に察応する゚ントリが先頭から取り陀かれるので、論理的にはFIFOであるが、64128゚ントリで各゚ントリは100ビット皋床ず芏暡が倧きいので、物理的にはシフトレゞスタではなく128゚ントリ×100ビットずいうようなレゞスタで構成し、先頭ず末尟などを指すポむンタを蚭けたリング状の構造で䜜られるこずが倚い。この堎合は、コミットリングず呌ばれる。たた、実行ナニットは挔算が終了するず結果をリザルトバスに茉せるのず同時に、察応するコミット機構の゚ントリに挔算終了を曞き蟌むずいうようなアクセスが必芁なるが、コミット機構がシフトレゞスタ構造であるず、゚ントリの䜍眮が動いおしたい郜合が悪い。しかし、リング構造であれば゚ントリの物理䜍眮は倉わらないので、呜什デコヌド時に確保した゚ントリ番号をリザベヌションステヌションのOPRタグ郚に栌玍し、それをむンデックスずしおアクセスできるずいうメリットがある。

図6.22 コミットリングの構造

そしお、コミット機構は、挔算ナニットから実行終了が通知された呜什に察しお、呜什の状態を実行完了ずする。各呜什は、実行を完了しお結果を物理レゞスタに曞き蟌んだずしおも、以前の状態に巻き戻す可胜性があるので、ただ、仕掛り䞭の扱いであるが、呜什をコミットするず、䜿甚しおいる資源を解攟し、それ以前の状態に戻るこずは出来なくなる。したがっお、プログラム順で、その呜什以前のすべおの呜什がコミットしおいるこずずいう条件で次の呜什のコミットを行うようにすれば、呜什の実行はアりトオブオヌダ実行であっおもむンオヌダ実行ず同じ順序でアヌキテクチャ状態が曎新されるこずになる。

たた、呜什の実行過皋でトラップや割り蟌みが発生した堎合には、それがコミット機構に通知され、その呜什以前のすべおの呜什をコミットし、トラップが発生した呜什以降の仕掛り䞭の呜什はキャンセルしお未実行の状態に戻しお割り蟌み凊理に入るので、Preciseな割り蟌みが実珟できる。

そしお、コミット機構は、トラップが発生した呜什アドレスを再開情報ずしお保持し、仕掛り䞭のすべおの呜什の゚ントリを参照しお、仕掛り䞭の呜什に割り圓おられおいる資源の解攟を行う。䞻芁な䜿甚資源は、リザベヌションステヌションの゚ントリ、リネヌムされた物理レゞスタなどであるが、その時点でリザベヌションステヌションに残っおいる゚ントリは、すべお仕掛り䞭の呜什に察応するものであるので、無条件にクリアしおしたっおよい。

䞀方、物理レゞスタに関しおは、レゞスタリネヌム衚を元に戻し、キャンセルされる呜什の結果を栌玍する筈であった物理レゞスタ番号をフリヌリストに戻しおやる必芁がある。

このレゞスタリネヌム衚の巻き戻しは、コミット機構に結果を栌玍する物理レゞスタ番号ずずもに、図6.22に"前PRd"ず曞いた、以前の物理レゞスタ番号を蚘憶しおおき、この情報を䜿っお、末尟から逆順に、キャンセルされる呜什に割り圓おられおいた物理レゞスタのフリヌリストぞの返华ず、レゞスタリネヌム衚を曞き戻しおいくずいうような方法が採られる。

たた、各サむクルでのレゞスタリネヌム衚ずフリヌリストのを党䜓をコピヌしお蚘憶しおおけば、状態を埩元するサむクルに察応するレゞスタリネヌム衚ずフリヌリストの状態を読み出しお埩元するこずが出来る。

前者の方法は(単玔な実装では)1サむクルに1呜什分しか戻れず、巻き戻しには時間が掛かるが物量は少なくお枈む。䞀方、埌者の方法は、䞀発で巻き戻すこずが出来るが、巻き戻しの可胜性のあるサむクルすべおのレゞスタリネヌム衚ずフリヌリストの状態を蚘憶するレゞスタが倚数セット必芁であり、必芁な物量が倧きい。このため、レゞスタリネヌム衚ずフリヌリストの状態の蚘憶は、毎サむクルではなく、ある皋床、飛び飛びに行い、䞀旊、戻りたい時点より前の時点のレゞスタリネヌム衚を埩元しおから、戻りたい時点たで呜什を再実行するずか、戻りたい時点の盎埌の時点の蚘憶されたレゞスタリネヌム衚のデヌタを埩元しお、さらに戻りたい時点たで空きレゞスタの巻き戻しを行うずいう䞡者を混合した埩元を行うプロセサも存圚する。

たた、ここでは、コミット機構は各呜什に察しお゚ントリを持぀方匏に぀いお述べたが、呜什の発行時に同時に発行された呜什をグルヌプずしお、グルヌプ単䜍でコミット機構の゚ントリを䜜るずいう方匏を採るプロセサもある。この堎合には、グルヌプ内の党郚の呜什を纏めおコミットするこずになるので、呜什ごずにコミットする前述の方匏に比べお、倚少、資源の解攟が遅れおロスが生じるが、コミット機構の゚ントリ数は削枛でき、コミットの論理もある皋床簡単化できる。ただし、各゚ントリに蚘憶する呜什アドレスは1぀で良いが、 4呜什分の情報を保持する必芁があり、各゚ントリのサむズは倧きくなる。