Instruction-level parallelism

Atanasoff–Berry-datorn i en monter vid Durhum Center, på Iowa State University.
Atanasoff–Berry-datorn, den första datorn med parallell körning.[1]

Instruction-level parallelism (ILP) är när en sekvens av instruktioner exekveras samtidigt eller parallellt i ett datorprogram. ILP refererar till det genomsnittliga antalet instruktioner som körs per steg i den parallella exekveringen.[2]

Beskrivning

ILP ska ej förväxlas med samtidighet (engelska: concurrency) som hanterar flera processorkärnor. I stället arbetar ILP med en enskild tråd för att exekvera en process. För samtidighet så körs flera trådar per processorkärna särskilda från varandra, och om det finns tillräckligt många kärnor, en kärna per tråd.

Det finns två typer av instruction-level parallelism: för maskinvara och för programvara. För maskinvaran så sker det parallella arbetet dynamiskt, medan det för programvaran sker statiskt. Dynamiskt innebär att processorn bestämmer vilka instruktioner som ska hanteras parallellt under körtiden, och statiskt innebär att kompilatorn avgör detta.[3] Exempelvis så kör Pentium dynamisk exekvering, medan Itanium kör statisk exekvering.

Exempel

Observera följande program:

e = a + b
f = c + d
m = e * f

Operationen på rad 3 är beroende av svaren i operation 1 och 2, så den kan inte beräknas förrän de två är klara. Däremot är operation 1 och 2 inte beroende av någon annan beräkning, vilket medför att de kan räknas ut samtidigt. Om vi antar att varje beräkning tar en tidsenhet, så kommer vi då ha ett program som tar två tidsenheter att köra hela. Resultatet av detta blir då en ILP på 3/2.

Se även

  • Memory-level parallelism

Referenser

  1. ^ ”The History of Computing”. mason.gmu.edu. http://mason.gmu.edu/~montecin/computer-hist-web.htm. Läst 10 januari 2022. 
  2. ^ Goossens, Bernard; Langlois, Philippe; Parello, David; Petit, Eric (2012). Kristján Jónasson. red. ”PerPI: A Tool to Measure Instruction Level Parallelism” (på engelska). Applied Parallel and Scientific Computing (Springer). doi:10.1007/978-3-642-28151-8_27. https://link.springer.com/chapter/10.1007%2F978-3-642-28151-8_27. Läst 10 januari 2022. 
  3. ^ Patterson, David A. (1996). Computer architecture : a quantitative approach. San Francisco : Morgan Kaufmann Publishers. ISBN 978-1-55860-329-5. http://archive.org/details/computerarchitec00patt. Läst 10 januari 2022