Samtidig instruktion hänvisar till förmågan hos ett datorsystem att utföra flera instruktioner samtidigt, eller åtminstone verkar göra det. Det är ett bredare koncept än parallellism, men ofta används omväxlande. Den viktigaste skillnaden ligger i hur instruktionerna hanteras:
* Parallellism: Utför uttryckligen flera instruktioner * samtidigt * med flera bearbetningsenheter (som flera kärnor i en CPU). Detta kräver dedikerade hårdvaruresurser.
* Samtidighet: Behandlar genomförandet av flera instruktioner som * överlappar * i tid, men inte nödvändigtvis på exakt samma ögonblick. Detta kan uppnås genom olika tekniker, inklusive:
* multitasking: Kör flera program till synes samtidigt genom att snabbt växla mellan dem. Den faktiska behandlingen är fortfarande sekventiell, men växlingen är tillräckligt snabb för att ge en illusion av samtidighet.
* Multithreading: Ett enda program som kör flera trådar av instruktioner samtidigt. Dessa trådar kan dela resurser, och en enda kärna kan växla mellan dem snabbt (sammanhangsomkoppling).
* Parallellism på instruktionsnivå (ILP): CPU:s ombeställer och kör flera instruktioner samtidigt inom en enda kärna, utnyttjar pipelining och andra tekniker för att förbättra prestandan. Detta händer på en mycket lägre nivå än multitasking eller multithreading.
* SIMD (enstaka instruktioner, flera data): En enda instruktion fungerar på flera datapunkter samtidigt, ofta används vid vektorbehandling och GPU -beräkningar.
I huvudsak är samtidighet en mer omfattande term. Parallellism är en * typ * av samtidighet där instruktionerna utförs samtidigt på separata hårdvaruenheter. Samtidighet kan också uppnås utan verklig parallellism, bara genom smart schemaläggning och resurshantering. Målet med båda är att förbättra den övergripande systemets prestanda och genomströmning genom att överlappa eller samtidigt utföra olika delar av ett program eller flera program.