Razumevanje osnov ILP

ILP izhaja iz globoke analize načina izvajanja programov. Ko podrobno preučimo večino programov, odkrijemo, da vsebujejo številne priložnosti za paralelno izvajanje, ki niso takoj očitne v njihovem zaporednem opisu. Razmislite o preprostem primeru izračuna povprečja več števil. Medtem ko bi bil program lahko napisan kot zaporedje seštevanj, ki mu sledi deljenje, bi jih bilo mogoče izvajati istočasno, saj niso odvisna od rezultatov drugih.

Ta opazka vodi do temeljnega merila v ILP: število ukazov, ki jih je mogoče izvajati istočasno v programu. Vendar to merilo ni tako preprosto, kot se zdi. Sposobnost vzporednega izvajanja ukazov je omejena z različnimi dejavniki, ki se prepletajo med področji strojne opreme in programske opreme. Razumevanje teh omejitev je ključno tako za oblikovalce procesorjev kot za razvijalce programske opreme.

Motivacija za implementacijo ILP izhaja iz kritičnega izziva v računalniški arhitekturi: izboljšanje zmogljivosti brez povečevanja hitrosti takta. Ko so procesorji dosegli višje frekvence takta, so naleteli na pomembne težave z porabo energije in disipacijo toplote. ILP je ponudil drugačen pristop k boljšim zmogljivostim, tako da je učinkovito izkoriščal vsak takt in tako dejansko opravil več dela, ne da bi nujno deloval hitreje.

Tri medsebojno povezane omejitve določajo obseg ILP. Prva je struktura programa, ki lahko omeji priložnosti za paralelno izvajanje zaradi odvisnosti podatkov in toka nadzora. Druga je sposobnost prevajalnika, da prepozna in izkoristi potencialni paralelizem, kar vpliva na to, koliko ILP lahko dosežemo. Tretja so zmogljivosti strojne opreme – vključno s številom in vrstami enot za izvajanje, sofisticiranostjo napovedovanja vej in sposobnostjo obvladovanja odvisnosti – ki postavljajo končne meje za izkoriščanje ILP.

Te omejitve ne delujejo neodvisno, ampak medsebojno vplivajo na zapletene načine. Na primer, struktura programa bi teoretično lahko omogočila pomemben paralelizem, vendar če strojna oprema ne more učinkovito napovedovati izidov vej, bo velik del tega potenciala ostal neizkoriščen. Podobno, tudi s sofisticirano strojno opremo, lahko slabo strukturiran koda ponudi malo priložnosti za paralelno izvajanje.