Terminologiaa

Flynnin klassinen taksonomia

  • Flynnin taksonomia luokittelee tietokoneet / prosessorit neljään ryhmään:
D\I Single Instruction Multiple Instruction
Single Data SISD MISD
Multiple Data SIMD MIMD

Single Instruction, Single Data (SISD)

  • Yksi käskyvirta / jono järjestyksessä suoritettavia komentoja (deterministinen)
  • Yksi prosessointielementti suorittaa yhden komennon kerrallaan
  • Prosessointielementti operoi yksittäistä tietovirtaa / data-alkiota
  • Esimerkiksi vanha PC (ei ihan)

Esimerkki SISD-laitteistosta
Esimerkki SISD-laitteistosta

Single Instruction, Multiple Data (SIMD)

  • Yksi käskyvirta
  • Useampi prosessointielementti suorittaa samanaikaisesti saman komennon
  • Eri prosessointielementit voivat operoida eri tietovirtoja
  • Esimerkiksi vektoriprosessorit (ja useat GPU:t)

Esimerkki SIMD-laitteistosta
Esimerkki SIMD-laitteistosta

Multiple Instruction, Multiple Data (MIMD)

  • Useampi käskyvirta (mahdollisesti epädeterministinen)
  • Useampi prosessointielementti, joista jokainen voi suorittaa eri käskyvirtaa
  • Eri prosessointielementit voivat operoida eri tietovirtoja
  • Esimerkiksi modernit moniydinprosessorit

Esimerkki MIMD-laitteistosta
Esimerkki MIMD-laitteistosta

Multiple Instruction, Single Data (MISD)

  • Useampi käskyvirta
  • Useampi prosessointielementti, joista jokainen voi suorittaa eri käskyvirtaa
  • Kaikki prosessointielementtit operoivat samaa tietovirtaa
  • Esimerkin keksiminen hankalaa

Esimerkki MISD-laitteistosta
Esimerkki MISD-laitteistosta

Lisää Flynnin taksonomiasta

  • Flynnin taksonomia auttaa luokittelussa, mutta ei kerro koko totuutta
  • Modernit suoritinytimet osaavat suorittaa useamman komennon saman kellojakson aikana (ei siis puhdas SIxx)
  • Modernit suoritinytimet osaavat myöskin optimoida käskyvirran järjestystä
  • Tärkeintä on, että suoritinydin käyttäytyy ulospäin kuten SISD
  • Modernit suoritinytimet osaavat myöskin SIMD-temppuja (AVX)

Muista luokitteluja

  • MIMD voidaan jakaa edelleen Single Program, Multiple Data (SPMD) ja Multiple Programs, Multiple Data (MPMD) luokkiin
  • SPMD: Useampi itsenäinen prosessori suorittaa samanaikaisesti samaa ohjelmaa eri kohdista (yleisin tapaus)
  • MPMD: Useammat itsenäiset prosessorit suorittavat eri ohjelmia samanaikaisesti (IMB Cell, CPU+GPU)
  • Single instruction, Multiple Thread (SIMT): SIMD + multithreading; useampi säie suorittaa yhdessä samaa käskyvirtaa (Nvidian termi)

Terminologiaa

  • Tehtävä (task): Loogisesti erillinen joukko laskennallisia komentoja, ohjelma tai osa ohjelmaa.
  • Rinnakkainen / rinnakkaistuva tehtävä (parallel task): Tehtävä, joka voidaan suorittaa useammalla prosessorilla turvallisesti (laskenta tuottaa oikean tuloksen)
  • Sarjalaskenta (serial execution): Ohjelman suorittaminen sarjamuotoisesti (yksi käsky kerrallaan)
  • Rinnakkaislaskenta (parallel execution): Useammasta tehtävästä koostuvan ohjelman suorittaminen siten, että eri tehtäviä käsitellään samanaikaisesti

  • Prosessi (process): Ajossa oleva ohjelma. Sisältää ohjelmakoodin, muistin ja erilaiset resurssit.
  • Säie (thread): Pienin mahdollinen laskentaa suorittava yksikkö, jolla on oma tila. Säie voi siis suorittaa tehtävää. Prosessi voi koostua useasta säikeestä ja säikeet jakavat prosessin resurssit keskenään.
  • Vuorotus (scheduling): Käytössä olevien resurssien (prosessoriajan) jakaminen tehtävien kesken

  • Single threading: Yhdellä säikeellä tehtävä laskenta.
  • Multithreading: Useammalla säikeellä tehtävä laskenta.
  • Käskytason rinnakkaisuus (instruction level parallelism): Laitteistotasolla tapahtuva toisistaan riippumattomien konekäskyjen samanaikainen suoritus.

  • Jaettu muisti (shared memory): Tietokonearkkitehtuuri, jossa kaikilla prosessoreilla on pääsy samaan yhteiseen muistiin. Ohjelmoijan näkökulmasta kyseessä on ohjelmointimalli, jossa jokainen rinnakkainen tehtävä näkee muistin samalla tavalla ja voi suoraan viitata mihin tahansa muistipaikkaan riippumatta muistin fyysisestä sijainnista.
  • Hajautettu muisti (distributed memory): Tietokonearkkitehtuuri, jossa muisti on hajautettu siten, että prosessorilla ei välttämättä ole suoraa pääsyä kaikkeen käytössä olevaan muistiin. Ohjelmoijan näkökulmasta kyseessä on ohjelmointimalli, jossa rinnakkainen tehtävä näkee loogisesti vain osan käytössä olevasta muistista ja joutuu turvautumaan eksplisiittiseen kommunikointiin muissa tilanteissa.

  • Kommunikointi (communication): Rinnakkaisten tehtävien välistä datan siirtoa kutsutaan kommunikoinniksi riippumatta siitä miten se käytännössä tapahtuu.
  • Synkronointi (syncronization): Synkronointia käytetään rinnakkaisten tehtävien suoritusten koordinointiin reaaliajassa. Tyypilllisesti tehtävä saavuttaa erityisen synkronointipisteen, jossa se joutuu odottamaan muita tehtäviä.

  • Prosessoriaika (cpu time, process time): Prosessorin laskentaan käyttämä aika
  • Seinäkelloaika (wall clock time): Laskentaan käytetty todellinen aika


  • Hienojakoisuus (granularity): Laskennan ja kommunikoinnin määrän välinen suhde
  • Nopeutus (speedup): Mittaa kuinka paljon nopeammin rinnakkainen algoritmi voi ratkaista saman ongelman kuin (paras mahdollinen) sarjamuotoinen algoritmi.
  • Skaalautuvuus (scalability): Laitteiston tai ohjelmiston kyky osoittaa suhteellista nopeutuksen kasvua laskentaresurssien (prosessorien) määrän kasvaessa
  • Parallel overhead: Rinnakkaisten tehtävien hallintaan kuluva aika. Yleisemmin "ei oleellisten asioiden" tekemiseen kuluvat resurssit.

  • Laskentasolmu (node): Hajautetut laskentaresurssit esitetään usein verkkona, jossa solmut vastaavat laskentaa suorittavia yksiköitä (esim. PC) ja linkit kommunikointiin käytettävää verkkoa. Solmu voi olla
    • laiha (thin) eli sisältää suhteessa vähän laskentaresusseja tai
    • paksu (fat) eli sisältää suhteessa paljon laskentaresusseja.
  • Massiivisesti rinnakkainen (massively parallel): Laitteisto, joka koostuu erittäin suuresta määrästä prosessoreita.

  • Latenssi (latency): Tapahtuman (esim. muistista lukeminen tai kirjoittaminen) käsittelyyn kuluva aika. Lasketaan usein (milli- tai mikro-) sekunneissa tai kellojaksoissa.
  • Kaistanleveys (bandwidth): Ajanjakson aikana teoreettisesti siirrettävissä oleva tietomäärä. Lasketaan usein tavuina sekunnissa.
  • I/O (Input and Output): Ohjelman syöte (data) ja tuloste (tulos). Levyltä tai verkosta lukeminen ja kirjoittaminen.

  • Heterogeeninen alusta (heterogeneous platform): Laskenta-alusta, joka koostuu usean tyyppisistä laskentaa suorittavista elementeistä
  • Homogeeninen alusta (homogenous platform): Laskenta-alusta, jonka kaikki laskentaa suorittavat elementit ovat samanlaisia

  • Synkroninen (synchronous): Samanaikaisesti tapahtuva
  • Epäsynkroninen (asynchronous): Tapahtumat voivat tapahtua eri aikoina
  • Blocking: Prosessi voi olla kerrallaan vain yhdessä tilassa. Tapahtuma, joka estää muut samanaikaiset tapahtumat.
  • Non-blocking: Prosessi voi olla kerralla useammassa tilassa. Tapahtumat eivät estä muita samanaikaisia tapahtumia.

  • Flop: (Liukuluku)laskentaoperaatio
  • Mop (Memory operation): Muistioperaatio
  • Deadlock: Kaksi kilpailevaa tehtävää odottaa toistensa valmistumista, mutta kumpikaan ei saa omaa laskentaansa valmiiksi ilman toiselta tarvittavaa laskentatulosta.
  • Livelock: Samankaltainen tilanne kuin deadlock, mutta tehtävien tilat vaihtelevat
  • Race condition: Kaksi kilpailevaa tehtävää yrittävät käyttää samaa resurssia, mutta epäonnistuvat

These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.