Explicit parallell instruktionsberäkning

Explicitly parallel instruction computing ( EPIC ) är en term som myntades 1997 av HP–Intel-alliansen för att beskriva ett datorparadigm som forskare hade undersökt sedan början av 1980-talet. Detta paradigm kallas också för självständighetsarkitekturer . Det var grunden för Intels och HP:s utveckling av Intel Itanium- arkitekturen, och HP hävdade senare att "EPIC" bara var en gammal term för Itanium-arkitekturen. EPIC tillåter mikroprocessorer att exekvera programvaruinstruktioner parallellt genom att använda kompilatorn , snarare än komplexa on- die -kretsar, för att kontrollera parallellinstruktionsexekveringen. Detta var avsett att möjliggöra enkel prestandaskalning utan att tillgripa högre klockfrekvenser .

Rötter i VLIW

År 1989 insåg forskare vid HP att RISC-arkitekturer ( Reduced Instruction Set Computer ) nådde en gräns vid en instruktion per cykel . [ förtydligande behövs ] De påbörjade en undersökning av en ny arkitektur, senare kallad EPIC . Grunden för forskningen var VLIW , där flera operationer kodas i varje instruktion och sedan bearbetas av flera exekveringsenheter.

Ett mål med EPIC var att flytta komplexiteten i instruktionsschemaläggning från CPU-hårdvaran till mjukvarukompilatorn, som kan göra instruktionsschemaläggningen statiskt (med hjälp av spårningsåterkopplingsinformation). Detta eliminerar behovet av komplexa schemaläggningskretsar i CPU:n, vilket frigör utrymme och kraft för andra funktioner, inklusive ytterligare exekveringsresurser. Ett lika viktigt mål var att ytterligare utnyttja instruktionsnivåparallellism ( ILP ) genom att använda kompilatorn för att hitta och utnyttja ytterligare möjligheter för parallell exekvering .

VLIW (åtminstone de ursprungliga formerna) har flera brister som hindrade den från att bli mainstream:

EPISK arkitektur utvecklades från VLIW-arkitektur, men behöll många koncept av superskalär arkitektur.

Går bortom VLIW

EPIC- arkitekturer lägger till flera funktioner för att komma runt bristerna med VLIW:

  • Varje grupp av flera programvaruinstruktioner kallas ett paket . Var och en av buntarna har en stoppbit som indikerar om denna uppsättning operationer är beroende av den efterföljande bunten. Med denna förmåga kan framtida implementeringar byggas för att utfärda flera paket parallellt. Beroendeinformationen beräknas av kompilatorn, så hårdvaran behöver inte utföra operandberoendekontroll.
  • En mjukvaruförhämtningsinstruktion används som en typ av dataförhämtning. Denna förhämtning ökar chanserna för en cacheträff för laddningar och kan indikera graden av temporal lokalitet som behövs på olika nivåer av cachen.
  • En spekulativ laddningsinstruktion används för att spekulativt ladda data innan det är känt om det kommer att användas (förbigående kontrollberoenden), eller om det kommer att modifieras innan det används (förbikoppling av databeroende).
  • En kontrollladdningsinstruktion hjälper spekulativa laster genom att kontrollera om en spekulativ last var beroende av en senare butik och därför måste laddas om.

EPIC - arkitekturen innehåller också en väska med arkitektoniska koncept för att öka ILP :

  • Predikerad exekvering används för att minska förekomsten av grenar och för att öka den spekulativa exekveringen av instruktioner. I denna funktion omvandlas grenvillkoren till predikatregister som används för att döda resultat av utförda instruktioner från den sida av grenen som inte tas.
  • Fördröjda undantag, med användning av en bit i de allmänna registren, tillåter spekulativ exekvering förbi möjliga undantag.
  • Mycket stora arkitektoniska registerfiler undviker behovet av registerbyte .
  • Flervägsgreninstruktioner förbättrar grenförutsägelse genom att kombinera många alternativa grenar till en bunt.

Itanium - arkitekturen lade också till roterande registerfiler , ett verktyg som är användbart för programvarupipelining eftersom det undviker att manuellt behöva rulla ut och byta namn på register.

Annan forskning och utveckling

Det har gjorts andra undersökningar av EPIC-arkitekturer som inte är direkt knutna till utvecklingen av Itanium-arkitekturen:

  • IMPACT-projektet vid University of Illinois i Urbana–Champaign , ledd av Wen-mei Hwu , var källan till mycket inflytelserik forskning om detta ämne.
  • PlayDoh-arkitekturen från HP-labs var ett annat stort forskningsprojekt.
  • Gelato var en utvecklingsgemenskap med öppen källkod där akademiska och kommersiella forskare arbetade för att utveckla effektivare kompilatorer för Linux-applikationer som kördes på Itanium-servrar.

Se även

externa länkar