Superskalarnost

S Vikipedije, slobodne enciklopedije
Jednostavna superskalarna protočna obrada. Hvatanjem i slanjem dveju instrukcija u isto vreme, maksimum 2 instrukcije po ciklusu se mogu izvršiti. (IF = Instruction Fetch, ID = Instruction Decode, EX = Execute, MEM = Memory access, WB = Register write back, i = broj instrukcije, t = ciklus kloka [tj., vreme])
Procesorska tabla CRAY T3e superračunara sa 4 superskarna Alpha 21164 procesora

Superskalarnost obuhvata oblik paralelizma pod nazivom paralelizm na nivou naredbe unutar jednog procesora. I zato omogućava brži rad procesora nego što bi to bilo moguće sa određenom brzinom procesorskog kloka. Superskalarni procesor izvršava više od jedne naredbe po taktu istovremeno šaljući višestruke naredbe redundantnim funkcionalnim jedinicama procesora. Svaka funkcionalna jedinica nije posebno procesorsko jezgro već izvršni resurs unutar jednog procesora kao što je aritmetičko-logička jedinica, delom šifter, ili množač.

U Flinovoj podeli, superskalarni procesori sa jednim jezgrom su klasifikovani kao SISD procesori, dok je višejezgarni superskalarni procesor klasifikovan kao MIMD procesor.

Dok superskalarni procesor takođe ima protočnu obradu, protočna obrada i superskalarna arhitektura se razlikuju u poboljšanju učinka.

Superskalarnost se vezuje za više prepoznatljivih karakteristika (unutar datog jezgra):

  • Naredbe se izdaju sa sekvencijalnog protoka naredbi
  • Procesorski hardver dinamički proverava zavisnost podataka između naredbi u vremenu izvršavanja
  • Procesor obrađuje višestruke naredbe po ciklusu

Istorija[uredi | uredi izvor]

CDC 6600 Simora Kreja iz 1965. se često pominje kao prvi superskalarni dizajn. Intel i960CA (1988) i AMD 29000 serija 29050 (1990) mikroprocesora bili su prvi komercijalni superskalarni mikroprocesori sa jednim čipom. RISC (računar sa smanjenim skupom instrukcija) procesori kao ovi bili su prvi mikroprocesori koji su koristili koncept superskalarnosti, zato što RISC dizajn završava u jednostavnom jezgru, dopuštajući, na taj način, uključivanje više funkcionalnih jedinica (kao što su aritmetičko-logičke jedinice) na jednom procesoru u ograničeno isolaniranim vremenskim pravilima (zbog toga su RISC planovi bili brži nego CISC planovi krajem 80-ih i početkom 90-ih godina).

Osim procesora korišćenih za nisko-energetske aplikacije, ugrađene sisteme i uređaje na baterije, suštinski svi procesori opšte namene razvijeni od 1998 su superkalarni.

P5 Pentium bio je prvi superskalarni h86 procesor; Nx586, P6 Pentium Pro i AMD K5 su prvi modeli koji asinhrono pretvaraju h86-instrukcije u dinamički mikrokod kao micro-op sekvence pre izvršenja u superskalarnoj mikroarhitekturi. Ovo dovodi do dinamičkog rasporeda baferovanih parcijalnih instrukcija i paralelizmu daje veću mogućnost ekstraktovanja, za razliku od kutih metoda P5 Pentium-a; takođe pojednostavljuje spekulativna izvršenja i dozvoljava više časovne frekvencije u poređenju sa naprednijim modelima kao što je Cyrix 6x86.

Skalar u Superskalar[uredi | uredi izvor]

Najjednostavniji procesori su skalarni procesori. Svaka instrukcija koju izvrši skalarni procesor kontroliše jednu ili dve stavke podataka u isto vreme, za razliku od vektorskog procesora, koji pri izvršavanju naredbi istovremeno obrađuje više stavki podataka. Analogija je u razlici između skalarne i vektorske aritmetike. Superskalarni procesor je kombinacija ova dva. Svaka instrukcija obrađuje po jednu stavku podataka, međutim postoje više redundantne funkcionalne jedinice unutar svakog procesora, čime više instrukcija može obraditi zasebne stavke podataka u isto vreme.

Superskalarni procesorski dizajn ističe napredovanje, i dozvoljava upotrebu više funkcionalnih jedinica u svakom trenutku. Ovo je dobilo na važnosti s obzirom na porast broja jedinica. Dok prvi supeskalarni procesori sadrže dve aritmetičko-logičke jedinice i samo jedan FPU, moderni modeli kao što je PowerPC 970 poseduju četiri aritmetičko-logičke jedinice, dva FPU-a i dve SIMD jedinice. Ukoliko dispečer ne uspe da održava instrukcije u svim ovim jedinicama, učinak sistema će se smanjiti.

Superskalarni procesor obično održava stopu izvršenja na jednoj instrukciji po mašinskom ciklusu. Ali samo obrađivanje više instrukcija istovremeno ne znači nužno da se radi o superskalarnoj arhitekturi, jer protočna obrada, multiprocesor ili višejezgarna arhitektura postižu isto, služeći se drugim metodama.

U superskalarnom procesoru dispečer čita instrukcije sa memorije i odlučuje koje se mogu pokrenuti paralelno, šaljući ih onda redudantnim funkcionalnim jedinicama koje su sadržane unutar samog procesora. Iz tog razloga, predviđeno je da superskalarni procesor sadrži višestruke paralelne protočne obvrade, od kojih svaka simultano obrađuje instrukcije iz jedne niti instrukcije.

Ograničenja[uredi | uredi izvor]

Poboljšanje učinka superskalarnim tehnikama ograničavaju tri ključne oblasti:

  1. Stepen unutrašnjeg paralelizma u instrukciji protoka (instrukcije koje zahtevaju iste računarske resurse iz procesora)
  2. Kompleksnost i vremenski troškovi slanja i povezane zavisnosti logičkih provera
  3. Grana instrukcija za obradu

Postojeći binarni izvršni programi imaju različite stepene unutrašnjeg paralelizma. U nekim slučajevima instrukcije ne zavise jedne od drugih i mogu se izvršavati simultano. U drugim slučajevima one su inter-zavisne: na instrukciju utiče bilo resurs ili rezultat druge instrukcije. Instrukcije: a = b + c; d = e + f mogu se pokrenuti paralelno zato što ni jedan od rezultata ne zavisi od drugog proračuna. Međutim, instrukcije: a = b + c; b = e + f ne mogu se pokrenuti paralelno, u zavisnosti od reda u kojem se instrukcije završe krećući se kroz jedinice.

Kada se broj izdatih instrukcija istovremeno povećava, troškovi provere zavisnosti rastu izuzetno brzo. Ovo je pogoršano potrebom da se provere zavisnosti u vreme izvršavanja i po taktu centralne procesorske jedinice. Ova cena uključuje dodatna logička kola, potrebna za sprovođenje provera, a vreme usporava kroz ta kola. Istraživanje pokazuje da cena kola u nekim slučajevima može biti , a cena kašnjenja , gde je broj instrukcija u skupu instrukcija procesora, a broj istovremeno poslatih instrukcija.

Iako tok instrukcija ne mora sadržati zavisnosti unutrašnjih instrukcija, superskalarni procesor mora svakako proveriti tu mogućnost, jer ne postoji druga garancija, a propust otkrivanja zavisnost bi proizveo netačne rezultate.

Bez obzira na to koliko je napredan proces poluprovodnika ili kolika je brzina svičovanja, ovo predstavlja ograničenje na broj istovremeno prenošenih podataka. Dok napredak procesa omogućava sve veći broj funkcionalnih jedinica , teret provere instrukcija zavisnosti raste tako brzo da je ostvariva superskalarna granica slanja jako mala, verovatmo po nalogu pet do šest istovremeno poslatih instrukcija.

Međutim, čak i ako nam je data beskonačno brza logika za proveru zavisnosti na inače konvencionalnom superskalarnom procesoru, ako sam stirm instrukcija ima puno zavinosti, to će ograničiti moguće ubrzanje. Time stepen unutrašnjeg paralelizma u kodu strima formira drugo ograničenje.

Alternative[uredi | uredi izvor]

Kolektivno, ova ograničenja dovode istragu do alternativnih arhitektonskih promena, kao što su: Very Long Instruction Word (VLIW), Explicitly Parallel Instruction Computing (EPIC), istovremena višenitna obrada (engl. simultaneous multithreading, SMT), i višejezgarni procesori.

Sa VLIW-om teret zadatka provere zavisnosti hardver logike u vremenu izvršavanja je prebačen na kompajler. EPIC je kao VLIW, sa dodatnim instrukcijama za vraćanje podataka iz keša.

Istovremena višenitna obrada (SMT) je tehnika za poboljšanje ukupne efikasnosti superskalarnih procesora. SMT dozvoljava da više nezavisnih niti izvršavanja bolje iskoriste resurse koje omogućava moderna arhitektura procesora.

Superskalarni procesori se razlikuju od višejezgarnih procesora u tome što njima redudantne funkcionalne jedinice nisu u potpunosti procesori. Jedan procesor se sastavlja od finijih funkcionalnih jedinica kao što je aritmetičko-logička jedinica, jedinica za rad sa celim brojevima, množač, jedinica za rad sa podacima sa pokretnim zarezom, itd. Postoji više načina svake funkcionalne jedinice na koje omogućavaju paralelno izvršavanje. To nije slučaj kod višejezgarnih procesora koji izvršavaju to preko niti i jezgara (jedna nit po jezgru). Takođe, to nije slučaj ni kod procesora sa protočnom obradom gde se višestruke instrukcije mogu nalaziti u više faza izvršvanja konkurentno.

Različite alternativne tehnike se ne isključuju međusobno. Mogu biti (i često jesu) kombinovane u jednom procesoru. Time jezgara višejezgarnih procesora mogu imati svoje paralelne obrade pri čemu svaka paralelna obrada može biti superskalar. Neki procesori takođe uključuju sposobnost vektorskog izvršavanja.

Vidi još[uredi | uredi izvor]

Literatura[uredi | uredi izvor]

  • Mike Johnson (1991). Superscalar Microprocessor Design. Prentice-Hall. ISBN 978-0-13-875634-5. 
  • Sorin Cotofana, Stamatis Vassiliadis, "On the Design Complexity of the Issue Logic of Superscalar Machines", EUROMICRO 1998: 10277-10284
  • Steven McGeady, "The i960CA SuperScalar Implementation of the 80960 Architecture", IEEE (1990). str. 232–240
  • Steven McGeady, et al., "Performance Enhancements in the Superscalar i960MM Embedded Microprocessor," ACM Proceedings of the 1991 Conference on Computer Architecture (Compcon), (1991). str. 4–7

Spoljašnje veze[uredi | uredi izvor]