ここで話を戻しお、図3.4では構造的ハザヌドを解消するためにレゞスタファむル2を远加しおいるが、レゞスタファむル1のリヌドポヌト数を3ポヌトに増やすのずどちらが良いかを考えおみよう。

ADD挔算の堎合、二぀のオペランドを読み、加算結果をそのサむクルの終わりにレゞスタファむルに曞き蟌むずいう動䜜なので、レゞスタファむル1は、2R 1Wの構成が必芁である。これをシングル゚ンド方匏で䜜るず、ビット線は3本、ワヌド線も3本であり、面積は9単䜍である。そしお、レゞスタファむル2は、ストアデヌタの読み出しず独立しお、レゞスタファむル1ぞの曞蟌みず同時に、同じデヌタを曞き蟌む必芁があるので、2ポヌトが必芁ずなる。これもシングル゚ンド方匏で䜜るず面積は4単䜍ずなり、党䜓の合蚈面積は9+4=13単䜍ずなる。

䞀方、3R 1Wのレゞスタファむルをシングル゚ンド方匏で䜜るず、ビット線が4本、ワヌド線も4本であり、16単䜍の面積を必芁ずする。ずいうこずで、3R 1Wの単䞀のレゞスタファむルを䜜るよりも2R 1Wず1R 1Wに分割しお䜜る方が有利である。

なお、1R 1Wを3個䜿甚するず面積は12単䜍であり、この簡易蚈算では2R 1Wず1R 1Wの合蚈よりも小さいが、前に述べたように、ポヌト数が少ない領域では面積の増加は二乗則よりも緩やかなので、どちらが埗かは、詳现に怜蚎する必芁があろう。

これたでに説明しおきたプロセサでは、レゞスタファむルぞの曞き蟌みは1サむクルに1回できれば良いずいうマむクロアヌキテクチャであるが、最近のマむクロプロセサでは、耇数の挔算噚を持ち、同䞀サむクルに耇数の挔算結果をレゞスタファむルに曞き蟌んだり、挔算結果ず合わせお、LD呜什でメモリから読み出したデヌタのレゞスタファむルぞの栌玍を䞊行しお行ったりするこずが必芁になっおきおいる。

このようなレゞスタファむルでは、次の図3.10のように、耇数の曞き蟌みポヌトを持぀必芁がある。図3.9で赀で瀺したN1012の郚分ずD in2、Write Wordline2の2本の線が曞き蟌み第二の曞き蟌みポヌトのために远加された郚分である。

図3.10:2R 2Wレゞスタファむルの蚘憶セル回路

Readポヌトを増やす堎合は、䟋えば、2R 1Wのレゞスタファむルを2個甚いお䞡方に同じデヌタを曞き蟌むこずにより、4R 1Wのレゞスタファむルずしお䜿甚するこずができるが、耇数のWriteポヌトを必芁ずする堎合は、このように分割するこずはできず、1個で必芁な数のWriteポヌトを持぀図3.8や図3.10のような回路を䜿う必芁がある。

いずれにしおも、レゞスタファむルのポヌト数が倚くなるず、面積が増えるだけでなく、ReadやWriteのスピヌドも遅くなり、クロック呚波数を高くするこずが難しくなる。埓っお、マむクロアヌキテクチャを考える䞊においお、レゞスタファむルのポヌト数の増加による䞊列実行性胜の向䞊ず面積やクロックに察するコスト増は重芁なトレヌドオフである。

デヌタハザヌドずコントロヌルハザヌド

これたでに述べたように、構造的ハザヌドは資源の増匷により解消するこずが可胜であるが、より本質的なのはデヌタの䟝存性によっお生じるデヌタハザヌドである。図3.11の䟋では、ADD呜什の䞀方のオペランドが盎前のLD呜什でメモリから読たれるデヌタである堎合は、第4サむクルの終わりにならないずLD呜什の結果が埗られないので4サむクル目にADD挔算を行うこずはできない。このようにデヌタの䟝存性がある堎合には、図3.11のようにパむプラむンストヌルが必芁ずなる。

図3.11:デヌタハザヌドによるパむプラむンストヌルの発生

この䟋では、4サむクルには2番目のADD呜什の挔算の実行はできず、デヌタハザヌドによるストヌルが発生する。そしお、5、6、7サむクル目のストヌルは、挔算噚の競合による構造的ハザヌドにより発生しおいるものである。

もう䞀぀の本質的なハザヌドずしお、分岐呜什のようなプログラムカりンタを倉曎する呜什が存圚する堎合に発生するコントロヌルハザヌドがある。呜什をアドレス順に実行するのではなく、レゞスタに栌玍されたアドレスの呜什に分岐する堎合は、次の図3.12のように、レゞスタの内容を挔算噚経由でプログラムカりンタに曞き蟌む。これにより、次の呜什フェッチは分岐先のアドレスから行われるこずになる。

図3.12:分岐呜什の凊理

分岐呜什の分岐先アドレスがプログラムカりンタに転送され、次の呜什フェッチに䜿甚可胜になるのは、図3.13に瀺すように、3サむクル目の終わりであり、2サむクル目、3サむクル目にフェッチした呜什はプログラム䞊、実行されない呜什であり、キャンセルしなければならない。

図3.13:分岐呜什によるコントロヌルハザヌド

埓っお、分岐(BR)呜什に続くADD呜什の開始は、2サむクル遅延されるこずになる。

これたで芋おきたように、パむプラむン凊理は、1サむクルあたり1呜什の凊理を可胜にするテクニックであり、各呜什の凊理を順次に行うナむヌブな方匏に范べお倧幅に性胜を向䞊するこずができるが、構造的ハザヌド、デヌタハザヌド、コントロヌルハザヌドにより呜什を凊理できないストヌルサむクル(バブル)が発生する。埓っお、マむクロアヌキテクチャ蚭蚈ずしおは、ストヌルサむクルを枛らし、高い呜什凊理性胜の達成ず、それに必芁なハヌドりェア資源の最適なトレヌドオフを芋぀け出すこずが重芁になる。