|
Konfliktid ressursside nõudmisel
|
bet | 3/11 | Sana | 25.09.2020 | Hajmi | 0,86 Mb. | | #11657 |
Konfliktid ressursside nõudmisel
Kõige sagedamini tekib konflikt, kui mitu erinevat konveieri osa pöörduvad korraga mälu poole (näiteks üks käsu lugemiseks ja teine operandide lugemiseks).
Olgu konveier kolmeosaline:
aeg
t1
|
1.käsu lugemine
|
|
|
t2
|
2.käsu lugemine
|
1.käsu dekodeerimine
|
|
t3
|
3.käsu lugemine
|
2.käsu dekodeerimine
|
1.käsu operandide
lugemine
|
Ajahetkel t3 pöörduvad nii esimene kui ka kolmas seade mälu poole, et sealt lugeda. Probleem laheneb, kui kasutatakse mitut erinevat mälumoodulit, siis näiteks 3.käsk ja 1.käsu operandid asuvad erinevates mälu moodulites ja konflikti ei teki.
Hargnemiskäsud
Konveieri töö on kõige efektiivsem siis, kui täidetakse üksteisele järgnevaid võimalikult ühesuguse pikkusega käske. Tingimusliku hargnemiskäsu puhul pole teada, milline kahest võimalikust käsust järgmisena täidetakse, sest see sõltub parajasti täidetava käsu tulemusest. Kui hargnemiskäsu tulemusena ei täideta enam järgmist käsku, siis tuleb kogu konveier tühjendada ja uuesti initsialiseerida (s.t. uus esimene käsk sisse lugeda). Mida pikem on konveier, seda rohkem kaotatakse aega. Ajakulu vähendamiseks hargnemiskäskude puhul kasutatakse põhiliselt kolme erinevat strateegiat:
käsupuhvrid;
loogika kõige tõenäolisemalt täidetava käsu lugemiseks;
viitega hargnemiskäsud.
Käsupuhvrid
Käsupuhvreid kasutatakse selleks, et lugeda mälust mõlemad võimalikud täidetavad käsud. Käsupuhvrid moodustavad osa konveierist ja suurendavad konveieri pikkust.
Probleem tekib siis, kui programmis on järjestikku mitu hargnemiskäsku. Kahe järjestikulise hargnemiskäsu puhul on siis juba neli erinevat haru, 3 puhul 8, jne.
Kõige tõenäolisemalt täidetava käsu lugemine
Kasutatakse spetsiaalset loogikat, et ennustada, milline hargnemiskäsu harudest kõige tõenäolisemalt täidetakse. Selleks on mitmeid erinevaid meetodeid. Kõige lihtsam ja sagedamini kasutatav on strateegia kus sama hargnemiskäsu järjekordsel täitmisel eeldatakse, et täidetakse sama haru, mis eelmine kordki.
Viitega hargnemiskäsud
Hargnemiskäsku ei täideta mitte kohe, vaid paari-kolme hargnemiskäsule järgneva käsu järel. Siis ei ole vaja konveierit vahepeal tühjendada. Olgu näiteks kahest seadmest koosnev konveier (eraldi seadmed käsu lugemiseks ja käsu täitmiseks):
aeg käsu lugemine käsu täitmine
t1
|
hargnemiskäsu lugemine
|
|
t2
|
järgmise käsu lugemine
|
|
t3
|
hargnemine
|
järgmise käsu täitmine
|
|
| |