Uvod. Po čemu se ARM arhitektura razlikuje od x86

Danas postoje dvije najpopularnije procesorske arhitekture. Riječ je o x86, koji je razvijen još 80-ih godina i koristi se u osobnim računalima i ARM-u, koji je moderniji, što omogućuje da procesori budu manji i ekonomičniji. Koristi se u većini mobilnih uređaja ili tableta.

Obje arhitekture imaju svoje prednosti i nedostatke, kao i područja primjene, ali postoje i zajedničke značajke. Mnogi stručnjaci kažu da je ARM budućnost, ali ipak ima neke nedostatke koje x86 nema. U našem današnjem članku ćemo pogledati kako se arm arhitektura razlikuje od x86. Pogledajmo temeljne razlike između ARM-a i x86, a također pokušajmo odrediti što je bolje.

Što je arhitektura?

Procesor je glavna komponenta svakog računalnog uređaja, bilo da se radi o pametnom telefonu ili računalu. Njegova izvedba određuje koliko će brzo uređaj raditi i koliko dugo može raditi na baterijsko napajanje. Jednostavno rečeno, procesorska arhitektura je skup instrukcija koje se mogu koristiti za sastavljanje programa i implementiraju se u hardver koristeći specifične kombinacije procesorskih tranzistora. Oni omogućuju programima interakciju s hardverom i određuju kako će se podaci prenijeti u memoriju i čitati iz memorije.

Na ovaj trenutak Postoje dvije vrste arhitektura: CISC (Complex Instruction Set Computing) i RISC (Reduced Instruction Set Computing). Prvi pretpostavlja da će procesor implementirati upute za sve prilike, drugi, RISC, postavlja programerima zadatak stvaranja procesora sa skupom minimalnih instrukcija potrebnih za rad. RISC upute su manje i jednostavnije.


x86 arhitektura

Arhitektura procesora x86 razvijena je 1978. godine i prvi put se pojavila u Intelovim procesorima i tipa je CISC. Ime mu je preuzeto od modela prvog procesora s ovom arhitekturom - Intel 8086. Tijekom vremena, zbog nedostatka najbolja alternativa Drugi proizvođači procesora, poput AMD-a, također su počeli podržavati ovu arhitekturu. To je sada standard za desktop računala, prijenosna računala, netbook računala, poslužitelji i drugi slični uređaji. Ali ponekad se x86 procesori koriste u tabletima, to je prilično uobičajena praksa.

Prvi procesor Intel 8086 imao je 16-bitni kapacitet, zatim je 2000. godine izašao procesor s 32-bitnom arhitekturom, a još kasnije se pojavila 64-bitna arhitektura. O tome smo detaljno raspravljali u zasebnom članku. Tijekom tog vremena, arhitektura se jako razvila; dodani su novi skupovi instrukcija i proširenja, što može znatno povećati performanse procesora.

x86 ima nekoliko značajnih nedostataka. Prvo, to je složenost naredbi, njihova zamršenost, koja je nastala zbog duge povijesti razvoja. Drugo, takvi procesori troše previše energije i zbog toga stvaraju puno topline. x86 inženjeri u početku su krenuli putem postizanja maksimalnih performansi, a brzina zahtijeva resurse. Prije nego što pogledamo razlike između arm x86, razgovarajmo o ARM arhitekturi.

ARM arhitektura

Ova arhitektura je predstavljena nešto kasnije iza x86 - 1985. godine. Razvila ju je poznata britanska tvrtka Acorn, tada se ta arhitektura zvala Arcon Risk Machine i pripadala je tipu RISC, no tada je izašla njena poboljšana verzija Advanted RISC Machine, koja je danas poznata kao ARM.

Prilikom razvoja ove arhitekture inženjeri su si postavili cilj otkloniti sve nedostatke x86 i stvoriti potpuno novu i najučinkovitiju arhitekturu. ARM čipovi imali su minimalnu potrošnju energije i nisku cijenu, ali su imali niske performanse u usporedbi s x86, tako da u početku nisu stekli veliku popularnost na osobnim računalima.

Za razliku od x86, programeri su u početku pokušali dobiti minimalni troškovi na resursima, imaju manje procesorskih instrukcija, manje tranzistora, ali i, sukladno tome, manje svih vrsta dodatne mogućnosti. Ali performanse ARM procesora se posljednjih godina poboljšavaju. S obzirom na to i malu potrošnju energije, počeli su se vrlo široko koristiti u Mobilni uredaji, kao što su tableti i pametni telefoni.

Razlike između ARM i x86

A sada kada smo pogledali povijest razvoja ovih arhitektura i njihove temeljne razlike, napravimo detaljnu usporedbu ARM-a i x86 na temelju njihovih različitih karakteristika kako bismo utvrdili koja je bolja i točnije razumjeli njihove razlike.

Proizvodnja

Proizvodnja x86 u odnosu na arm je drugačija. Samo dvije tvrtke proizvode x86 procesore: Intel i AMD. U početku je to bila jedna tvrtka, ali to je sasvim druga priča. Samo te tvrtke imaju pravo proizvoditi takve procesore, što znači da će samo one kontrolirati smjer razvoja infrastrukture.

ARM radi vrlo drugačije. Tvrtka koja razvija ARM ne izdaje ništa. Oni jednostavno izdaju dopuštenje za razvoj procesora ove arhitekture, a proizvođači mogu raditi što god žele, na primjer, proizvoditi određene čipove s modulima koji im trebaju.

Broj uputa

Ovo su glavne razlike između arm i x86 arhitekture. x86 procesori su se brzo razvijali kao moćniji i produktivniji. Dodali su programeri veliki broj procesorske upute, a ovdje nema samo osnovnog skupa, već dosta naredbi koje se mogu izostaviti. U početku je to učinjeno kako bi se smanjila količina memorije koju zauzimaju programi na disku. Također su razvijene mnoge opcije za zaštitu i virtualizaciju, optimizaciju i još mnogo toga. Sve to zahtijeva dodatne tranzistore i energiju.

ARM je jednostavniji. Ovdje ima puno manje instrukcija procesora, samo onih koje operacijski sustav treba i koje se stvarno koriste. Ako usporedimo x86, onda se tamo koristi samo 30% svih mogućih instrukcija. Lakše ih je naučiti ako se odlučite ručno pisati programe, a također zahtijevaju manje tranzistora za implementaciju.

Potrošnja energije

Još jedan zaključak proizlazi iz prethodnog paragrafa. Što je više tranzistora na pločici, veća je njena površina i potrošnja energije, a vrijedi i obrnuto.

x86 procesori troše puno više energije nego ARM. Ali na potrošnju energije utječe i veličina samog tranzistora. Na primjer, procesor Intel i7 troši 47 vata, a bilo koji procesor pametnog telefona ARM ne troši više od 3 vata. Prethodno su se proizvodile ploče s veličinom jednog elementa od 80 nm, zatim je Intel postigao smanjenje na 22 nm, a ove godine znanstvenici su uspjeli stvoriti ploču s veličinom elementa od 1 nanometar. To će uvelike smanjiti potrošnju energije bez gubitka performansi.


Posljednjih godina, potrošnja energije x86 procesora se jako smanjila, na primjer, novih procesora Intel Haswell može duže trajati na baterije. Sada razlika između arma i x86 postupno nestaje.

Odvođenje topline

Broj tranzistora utječe na još jedan parametar - stvaranje topline. Moderni uređaji ne može pretvoriti svu energiju u učinkovito djelovanje; dio se raspršuje u obliku topline. Učinkovitost ploča je ista, što znači da što je manje tranzistora i što je njihova veličina manja, to će procesor stvarati manje topline. Ovdje se više ne postavlja pitanje hoće li ARM ili x86 generirati manje topline.

Performanse procesora

ARM nije izvorno dizajniran za maksimalnu izvedbu, ovdje se x86 ističe. Djelomično je to zbog manjeg broja tranzistora. Ali u posljednje vrijeme performanse ARM procesora su u porastu i oni se već mogu u potpunosti koristiti u prijenosnim računalima ili poslužiteljima.

zaključke

U ovom smo članku pogledali kako se ARM razlikuje od x86. Razlike su prilično ozbiljne. Ali u posljednje vrijeme granica između obje arhitekture postala je nejasna. ARM procesori postaju sve produktivniji i brži, a x86 procesori, zahvaljujući smanjenju veličine strukturnog elementa ploče, počinju trošiti manje energije i generirati manje topline. ARM procesore već možete pronaći na poslužiteljima i prijenosnim računalima, a x86 na tabletima i pametnim telefonima.

Što mislite o ovim x86 i ARM-u? Koja je tehnologija budućnost po vašem mišljenju? Pišite u komentarima! Usput, .

Za kraj videa o razvoju ARM arhitekture:

Glavne značajke arhitekture

SSE4 se sastoji od 54 instrukcije, od kojih je 47 klasificirano kao SSE4.1 (nalaze se samo u Penryn procesorima). Kompletan set instrukcija (SSE4.1 i SSE4.2, tj. 47 + preostalih 7 instrukcija) dostupan je u Nehalem procesorima. Nijedna od SSE4 instrukcija ne radi sa 64-bitnim mmx registrima, samo sa 128-bitnim xmm0-15. Nisu objavljeni 32-bitni procesori sa SSE4.

Dodane upute koje ubrzavaju kompenzaciju pokreta u video kodecima, brzo čitanje iz USWC memorije i mnoge upute za pojednostavljenje vektorizacije programa od strane prevoditelja. Dodatno, SSE4.2 je dodao upute za obradu nizova od 8/16 bitnih znakova, izračunavanje CRC32, popcnt. Po prvi put u SSE4, registar xmm0 korišten je kao implicitni argument za neke instrukcije.

Nove instrukcije SSE4.1 uključuju video akceleraciju, vektorske primitive, umetanje/ekstrakciju, vektorsko skalarno množenje, miješanje, provjeru bitova, zaokruživanje i čitanje WC memorije.

Nove instrukcije SSE4.2 uključuju obradu nizova, CRC32 brojanje, jednobitno brojanje populacije i rad s vektorskim primitivima.

SSE5

Novo x86 proširenje instrukcija iz AMD-a pod nazivom SSE5. Ovaj potpuno novi skup SSE instrukcija, kreiran od strane AMD stručnjaka, podržavat će obećavajuće CPU tvrtke počevši od 2009. godine.

SSE5 klasičnoj x86 arhitekturi donosi neke značajke koje su prethodno bile dostupne isključivo u RISC procesorima. Skup instrukcija SSE5 definira 47 novih osnovnih instrukcija dizajniranih da ubrzaju jednonitno računalstvo povećanjem gustoće obrađenih podataka.

Među novim uputama ističu se dvije glavne skupine. Prvi uključuje upute koje akumuliraju rezultate množenja. Ove vrste uputa mogu biti korisne za organiziranje iterativnih računalnih procesa prilikom renderiranja slika ili stvaranja 3D audio efekata. U drugu skupinu novih instrukcija spadaju instrukcije koje rade na dva registra i pohranjuju rezultat u treći. Ova bi inovacija mogla programerima omogućiti izbjegavanje nepotrebnih prijenosa podataka između registara u računalnim algoritmima. SSE5 također sadrži nekoliko novih uputa za usporedbu vektora, za preuređivanje i premještanje podataka, kao i za promjenu preciznosti i zaokruživanje.

AMD vidi računalne zadatke, obradu multimedijskog sadržaja i alate za šifriranje kao glavne aplikacije za SSE5. Očekuje se da u računalnim aplikacijama koje koriste matrične operacije korištenje SSE5 može pružiti povećanje performansi od 30%. Multimedijski zadaci koji zahtijevaju performanse diskretne kosinusne transformacije mogu imati koristi od 20% ubrzanja. A algoritmi šifriranja zahvaljujući SSE5 mogu postići peterostruko povećanje brzine obrade podataka.

AVX

Sljedeći set proširenja je od Intela. Podržana je obrada brojeva s pomičnim zarezom pakiranih u 256-bitne "riječi". Za njih je uvedena podrška za iste naredbe kao u SSE obitelji. 128-bitni SSE registri XMM0 - XMM15 proširuju se na 256-bitni YMM0-YMM15

Procesorska proširenja Intel Post 32nm novi su skup Intelovih instrukcija koje vam omogućuju pretvaranje brojeva polovične preciznosti u brojeve jednostruke i dvostruke preciznosti, dobivanje stvarnih nasumičnih brojeva u hardveru i pristup FS/GS registrima.

AVX2

Daljnji razvoj AVX-a. SSE integer upute počinju raditi s 256-bitnim AVX registrima.

AES

Proširenje skupa AES instrukcija—mikroprocesorska implementacija AES enkripcije.

3DNow!

Skup instrukcija za obradu toka realnih brojeva jednostruke preciznosti. Podržavaju AMD procesori počevši od K6-2. Ne podržavaju Intel procesori.

Upute 3DNow! koristite MMX registre kao operande (dva broja pojedinačne preciznosti smještena su u jedan registar), tako da, za razliku od SSE-a, nema potrebe posebno spremati 3DNow! kontekst prilikom prebacivanja zadataka.

64-bitni način rada

Superskalarno znači da procesor može izvesti više od jedne operacije u jednom taktu. Superpipelinizacija znači da procesor ima više računalnih cjevovoda. Pentium ih ima dva, što mu omogućuje da, na istim frekvencijama, idealno bude dvostruko produktivniji od 486, izvršavajući 2 instrukcije po taktu.

Osim toga, značajka Pentium procesora bila je potpuno redizajnirana i za to vrijeme vrlo moćna FPU jedinica čije su performanse ostale nedostižne konkurenciji sve do kraja 1990-ih.

Pentium OverDrive

Osim toga, jezgri Pentiuma II dodan je MMX blok.

Celeron

Prvi predstavnik ove obitelji temeljio se na arhitekturi Pentium II; bio je to uložak s tiskanom pločicom na kojoj su bili montirani jezgra, predmemorija druge razine i oznaka predmemorije. Montira se u utor 2.

Moderni Xeoni temelje se na arhitekturi Core 2/Core i7.

AMD procesori

Am8086 / Am8088 / Am186 / Am286 / Am386 / Am486

Temeljno novo AMD procesor(travanj 1997.), temeljen na kernelu kupljenom od NexGena. Ovaj procesor imao je dizajn pete generacije, ali je pripadao šestoj generaciji i bio je pozicioniran kao konkurent Pentiumu II. Uključuje MMX blok i blago redizajnirani FPU blok. Međutim, ti su blokovi i dalje radili 15-20% sporije od onih sličnih frekvencija Intel procesori. Procesor je imao 64 KB L1 predmemorije.

Općenito, performanse usporedive s Pentiumom II, kompatibilnost sa starijim matičnim pločama, ranije lansiranje (AMD je predstavio K6 mjesec dana ranije nego što je Intel predstavio P-II) i niža cijena učinili su ga prilično popularnim, ali AMD-ovi proizvodni problemi značajno su pokvarili reputaciju ovog procesora.

K6-2

Daljnji razvoj jezgre K6. Ovi procesori dodali su podršku za specijalizirani 3DNow! . Međutim, ispostavilo se da je stvarna izvedba znatno niža od one kod Pentiuma II sa sličnim taktom (to je zbog činjenice da je povećanje performansi s povećanjem frekvencije u P-II bilo veće zbog unutarnje predmemorije) i K6-2 je mogao konkurirati samo Celeronu. Procesor je imao 64 KB L1 predmemorije.

K6-III

Tehnološki uspješniji od K6-2, pokušaj stvaranja analoga Pentiuma III. Međutim, to nije bio marketinški uspjeh. Ističe se prisutnošću 64 KB predmemorije prve razine i 256 KB predmemorije druge razine u jezgri, što mu je omogućilo da nadmaši Intel Celeron na istoj taktnoj frekvenciji i ne bude značajno inferiorniji od ranog Pentiuma III. .

K6-III+

Analogni K6-III s tehnologijom uštede energije PowerNow! i više visoka frekvencija i proširen skup uputa. Izvorno namijenjen za prijenosna računala. Također je instaliran u stolnim sustavima sa Super 7 procesorskom utičnicom. Koristi se za nadogradnju stolnih sustava s procesorskom utičnicom Socket 7 (Samo na matičnim pločama koje opskrbljuju procesor s dva napona napajanja, prvim za I/O jedinice procesora i drugim za jezgru procesora. Nisu svi proizvođači osigurali dvostruko napajanje na prvi modeli njihovih matičnih ploča s utičnicom Socket 7).

Analogno K6-III+ s predmemorijom druge razine smanjenom na 128 KB.

Athlon

Vrlo uspješan procesor, zahvaljujući kojem je AMD uspio vratiti gotovo izgubljene pozicije na tržištu mikroprocesora. Predmemorija prve razine - 128 KB. U početku se procesor proizvodio u kazeti s predmemorijom druge razine (512 KB) smještenoj na ploči i instaliranoj u utoru A (koji je mehanički, ali nije električni kompatibilan s utorom 1 od Intela). Zatim sam se prebacio na Socket A i imao 256 KB predmemorije druge razine u jezgri. Što se tiče performansi - približan analog Pentiuma III.

Duron

Skraćena verzija Athlona, ​​razlikuje se od svog roditelja po veličini predmemorije druge razine (samo 64 KB, ali integrirana u čip i radi na frekvenciji jezgre).

Konkurent Celeron generacijama Pentiuma III / Pentiuma 4. Performanse su osjetno veće od onih sličnih Celerona i odgovaraju Pentiumu III pri obavljanju mnogih zadataka.

Athlon XP

Nastavak razvoja Athlon arhitekture. Što se tiče performansi, sličan je Pentiumu 4. U usporedbi s običnim Athlonom, dodana je podrška za SSE upute.

Sempron

Jeftinija (zbog smanjene predmemorije druge razine) verzija procesora Athlon XP i Athlon 64.

Prvi Sempronovi modeli bili su preimenovani u Athlon XP čipove na Thoroughbred i Thorton jezgri, koji su imali 256 KB predmemorije druge razine i radili na 166 (333 DDR) sabirnici. Kasnije su smanjene verzije Athlona 64/Athlona II proizvedene (i jesu) pod markom Sempron, pozicionirane kao konkurencija Intel Celeronu. Svi Semproni imaju smanjenu predmemoriju razine 2; mlađi Socket 754 modeli su blokirali Cool&quiet i x86-64; Socket 939 modeli imali su zaključani dvokanalni način rada memorije.

Opteron

Prvi procesor koji podržava x86-64 arhitekturu.

Athlon 64

Prvi ne-poslužiteljski procesor koji podržava x86-64 arhitekturu.

Athlon 64 X2

Nastavak arhitekture Athlon 64, ima 2 računalne jezgre.

Athlon FX

Bio je na glasu kao "najviše brzi procesor za igračke." Je li, zapravo, poslužiteljski procesor Opteron 1xx na stolnim utičnicama bez podrške za registriranu memoriju. Proizvodi se u malim serijama. Košta znatno više od svojih "masovnih" kolega.

Phenom

Daljnji razvoj arhitekture Athlon 64, dostupan je u verzijama s dvije (Athlon 64 X2 Kuma), tri (Phenom X3 Toliman) i četiri (Phenom X4 Agena) jezgre.

Fenom II

VIA procesori

Cyrix III/VIA C3

Prvi procesor izdan pod markom VIA. Izdano s različitim kernelima različitih razvojnih timova. Socket 370 konektor.

Prvo izdanje temelji se na Joshua kernelu, koji je VIA dobila zajedno s razvojnim timom Cyrixa.

Drugo izdanje je s jezgrom Samuel, razvijenom na temelju nikada objavljenog IDT WinChip -3. Odlikuje ga odsutnost predmemorije druge razine i, sukladno tome, izuzetno niska razina performansi.

Treće izdanje je s jezgrom Samuel-2, poboljšanom verzijom prethodne jezgre, opremljenom predmemorijom druge razine. Procesor je proizveden tanjom tehnologijom i imao je smanjenu potrošnju energije. Nakon izdavanja ove jezgre, marka “VIA Cyrix III” konačno je ustupila mjesto “VIA C3”.

Četvrto izdanje je s jezgrom Ezra. Postojala je i varijanta Ezra-T, prilagođena za rad na sabirnici dizajniranoj za Intelove procesore s jezgrom Tualatin. Daljnji razvoj u smjeru uštede energije.

Peto izdanje je s jezgrom Nehemiah (C5P). Ova je jezgra konačno dobila koprocesor pune brzine, podršku za upute ili .

Procesori temeljeni na V33 jezgri nisu imali način emulacije 8080, ali su ga podržavali pomoću dva dodatne upute, prošireni način adresiranja.

NexGen procesori

Nx586

U ožujku 1994. godine predstavljen je NexGen Nx586 procesor. Bio je postavljen kao konkurent Pentiumu, ali u početku nije imao ugrađeni koprocesor. Korištenje vlastite sabirnice zahtijevalo je korištenje vlastitih skupova čipova, NxVL (VESA lokalna sabirnica) i NxPCI 820C500 (PCI), te nekompatibilnu procesorsku utičnicu. Čipseti su razvijeni zajedno s VLSI i Fujitsu. Nx586 je bio superskalarni procesor i mogao je izvršiti dvije instrukcije po taktu. L1 predmemorija bila je odvojena (16 KB za upute + 16 KB za podatke). L2 cache kontroler bio je integriran u procesor, dok se sam cache nalazio na matična ploča. Baš kao i Pentium Pro, Nx586 je imao RISC procesor. Nedostatak podrške za CPUID instrukcije u ranim modifikacijama ovog procesora doveo je do toga da je softverski definiran kao brzi 386 procesor. Tome je pridonijela i činjenica da se Windows 95 nije htio instalirati na računala s takvim procesorima. Za rješavanje ovog problema korišten je poseban uslužni program (IDON.COM) koji je Nx586 za Windows predstavio kao CPU klase 586. Nx586 je proizveden u IBM pogonima.

Nx587 FPU koprocesor također je razvijen i tvornički montiran na vrhu procesorske matrice. Takvi "sklopovi" su označeni kao Nx586Pf. Prilikom označavanja performansi Nx586 korištena je P-ocjena - od PR75 (70 MHz) do PR120 (111 MHz).

Sljedeća generacija NexGen procesora, koji nikada nisu objavljeni, ali su poslužili kao osnova za AMD K6.

SiS procesori

SiS550

Obitelj SiS550 SoC temelji se na licenciranoj jezgri Rise mP6 i dostupna je s frekvencijama od 166 do 266 MHz. Istovremeno, najbrža rješenja troše samo 1,8 W. Jezgra ima tri cjevovoda cjelobrojnih 8 stupnjeva. L1 odvojena predmemorija, 8+8 KB. Ugrađeni koprocesor je cjevovodan. Uz standardni skup priključaka, SiS550 uključuje 128-bitnu UMA video jezgru AGP 4x, 5.1-kanalni audio i podršku za 2-instrukcije pod nazivom Code Morphing Software. To omogućuje procesoru da se prilagodi bilo kojem skupu instrukcija i poboljšava energetsku učinkovitost, no performanse takvog rješenja očito su niže od onih procesora s izvornim x86 sustavom instrukcija. matematički koprocesor, a varijante s koprocesorom trebale su se zvati U5D, ali nikada nisu objavljene.

Intel je dobio sudsku zabranu prodaje Green CPU-a u Sjedinjenim Državama, tvrdeći da je UMC koristio Intelov mikrokod u svojim procesorima bez licence.

Bilo je i problema sa softverom. Na primjer, igra Doom odbila se pokrenuti na ovom procesoru bez promjene konfiguracije, a Windows 95 se s vremena na vrijeme smrzavao. To je bilo zbog činjenice da su programi pronašli nedostajući koprocesor u U5S i pokušaji da mu pristupe završili su neuspjehom.

Procesori proizvedeni u SSSR-u i Rusiji

KR1810VM86

BLX IC dizajn/ICT procesori

BLX IC dizajn i institut računalna tehnologija Od 2001. Kina razvija procesore temeljene na MIPS-u s hardverskim prijevodom x86 instrukcija. Ove procesore proizvodi STMicroelectronics. Razmatra se partnerstvo sa TSMC-om.

Kumče (Longxin, Loongson, Zmaj)

Godson je 32-bitni RISC procesor temeljen na MIPS-u. Tehnologija - 180 nm. Predstavljen 2002. godine. Frekvencija - 266 MHz, godinu dana kasnije - verzija s frekvencijom od 500 MHz.

Kumče 2

  • Godson 2 je 64-bitni RISC procesor temeljen na MIPS III. 90 nm tehnologija. Na istoj frekvenciji je 10 puta brži od svog prethodnika. Predstavljen 19. travnja 2005.
  • Godson-2E - 500 MHz, 750 MHz, kasnije - 1 GHz. Tehnologija - 90 nm. 47 milijuna tranzistora, potrošnja energije - 5 ... 7,5 W. Prvi Godson s hardverskim prijevodom x86 naredbi, a na njega se troši i do 60% performansi procesora. Predstavljen u studenom 2006.
  • Godson 2F - 1,2 GHz, proizvodi se od ožujka 2007. Deklarirano je povećanje produktivnosti od 20-30% u usporedbi s prethodnikom.
  • Godson 2H - planiran za izlazak 2011. Bit će opremljen ugrađenom video jezgrom i memorijskim kontrolerom te je namijenjen potrošačkim sustavima.
kumče 3
  • Godson 3 - 4 jezgre, 65 nm tehnologija. Potrošnja energije je oko 20 W.
  • Godson 3B - 8 jezgri, 65 nm tehnologija (planirani prijelaz na 28 nm), radni takt unutar 1 GHz. Površina kristala - 300 mm². Performanse s pomičnim zarezom su 128 GigaFLOPS. Potrošnja energije 8-jezgrenog Godsona je 3-40 W. Prijevod u x86 kod izvodi se pomoću skupa od 200 instrukcija; oko 20% performansi procesora troši se na prijevod. Procesor ima 256-bitnu vektorsku SIMD procesorsku jedinicu. Procesor je namijenjen za korištenje u poslužiteljima i ugrađenim sustavima.
  • Struktura proizvoljne instrukcije je sljedeća:

  1. Prefiksi (svaki od njih nije obavezan):
    1. Jednobajtni prefiks za promjenu načina adresiranja AddressSize (vrijednost 67h).
    2. Jednobajtni prefiks promjene segmenta (vrijednosti 26h, 2Eh, 36h, 3Eh, 64h i 65h).
    3. Jednobajtni BranchHint prefiks za označavanje preferirane grane (vrijednosti 2Eh i 3Eh).
    4. Dvobajtni ili trobajtni složeni Vex prefiks (prvi bajt uvijek ima vrijednost C4h za verziju od dva bajta ili C5h za verziju od tri bajta).
    5. Jednobajtni prefiks zaključavanja za sprječavanje modifikacije memorije od strane drugih procesora ili jezgri (vrijednost F0h).
    6. Jednobajtni prefiks OperandsSize za promjenu veličine operanda (vrijednost 66h).
    7. Jednobajtni Obavezni prefiks za pojašnjenje instrukcije (vrijednosti F2h i F3h).
    8. Jednobajtni prefiks Repeat znači ponavljanje (vrijednosti F2h i F3h).
    9. Jednobajtni strukturirani Rex prefiks je potreban za označavanje 64-bitnih ili proširenih registara (ima vrijednosti 40h..4Fh).
    10. Escape prefiks. Uvijek se sastoji od najmanje jednog bajta 0Fh. Iza ovog bajta po izboru slijedi bajt 38h ili 3Ah. Dizajniran za pojašnjenje uputa.
  2. Bajtovi koji precizno definiraju instrukciju su:
    1. Opcode bajt (proizvoljna konstantna vrijednost).
    2. Opcode2 bajt (proizvoljna konstantna vrijednost).
    3. Params bajt (ima složenu strukturu).
    4. ModRm bajt se koristi za operande u memoriji (ima složenu strukturu).
    5. SIB bajt se također koristi za memorijske operande i ima složenu strukturu.
  3. Podaci ugrađeni u upute (opcionalno):
    1. Pomak ili adresa u memoriji. Cijeli broj s predznakom veličine 8, 16, 32 ili 64 bita.
    2. Prvi ili jedini neposredni operand (Immediate). Može biti veličine 8, 16, 32 ili 64 bita.
    3. Drugi neposredni operand (Immediate2). Ako postoji, obično je veličine 8 bita.

U gornjem i donjem popisu, za tehničke nazive, prihvaća se naziv "samo latinski, arapski brojevi" i znak minus "-" s podvlakom "_", a velika i mala slova je CamelCase (bilo koja riječ počinje velikim slovom, a zatim samo malim slovima, čak i ako je kratica: “ UTF-8" → "Utf8" - sve riječi zajedno). Prefiksi AddressSize, Segment, BranchHint, Lock, OperandsSize i Repeat mogu se miješati zajedno. Preostali elementi moraju ići točno navedenim redoslijedom. I možete vidjeti da su vrijednosti bajtova nekih prefiksa iste. Njihova svrha i dostupnost određuju se samim uputama. Prefiksi nadjačavanja segmenata mogu se koristiti s većinom uputa, ali prefiksi BranchHint mogu se koristiti samo s uputama uvjetnog grananja. Slična je situacija i s prefiksima Mandatory i Repeat - negdje pojašnjavaju upute, a negdje označavaju ponavljanje. Prefiks OperandSize, zajedno s obaveznim prefiksima, također se klasificiraju kao prefiksi SIMD instrukcija. Zasebno treba reći o prefiksu Vex. Zamjenjuje prefikse Rex, Mandatory, Escape i OperandsSize, zbijajući ih u sebe. Nije dopušteno koristiti prefiks Lock s njim. Sam prefiks zaključavanja može se dodati kada je odredište operand u memoriji.

Pregledni popis svih načina od interesa u smislu kodiranja uputa:

  • 16-bitni ("stvarni način rada", stvarni način rada s adresiranjem segmenata).
  • 32-bitni ("Protected Mode", zaštićeni način rada s ravnim modelom memorije).
  • 64-bitni ("Dugi način rada", poput 32-bitnog zaštićenog s ravnim modelom memorije, ali adrese su već 64-bitne).

U zagradama engleski nazivi modova odgovaraju službenim. Postoje i sintetički modovi kao što je unreal (Unreal x86 Mode), ali svi oni proizlaze iz ova tri (u suštini, to su hibridi koji se razlikuju samo po veličini adrese, operandima itd.). Svaki od njih koristi "nativni" način adresiranja, ali se može promijeniti u alternativni s prefiksom OperandsSize. U 16-bitnom načinu rada bit će omogućen 32-bitni način adresiranja, u 32-bitnom načinu - 16-bitni, au 64-bitnom načinu - 32-bitni. Ali ako to učinite, adresa se proširuje nulama (ako je manja) ili se njeni najvažniji bitovi resetiraju (ako je veća).

4.6. Značajke arhitekture modernih x86 procesora

4.6.1. Arhitektura procesora Intel Pentium(P5/P6)

Procesori obitelji Pentium imaju niz arhitektonskih i strukturalnih značajki u odnosu na prethodne modele Intelovih mikroprocesora. Najkarakterističniji od njih su:

Harvardska arhitektura s odvajanjem tokova naredbi i podataka uvođenjem zasebnih blokova unutarnje predmemorije za pohranu naredbi i podataka, kao i sabirnica za njihov prijenos;

Superskalarna arhitektura, koja osigurava istovremeno izvršavanje nekoliko naredbi u paralelnim operativnim uređajima;

Dinamičko izvršavanje naredbi, koje implementira promjenu niza naredbi, koristeći proširenu datoteku registra (preimenovanje registra) i učinkovito predviđanje grananja;

Dvostruka nezavisna sabirnica koja sadrži zasebnu sabirnicu za pristup L2 predmemorije (koja radi na taktu procesora) i sistemsku sabirnicu za pristup memoriji i vanjski uređaji(radi na taktu matične ploče).

Glavne karakteristike Pentium obitelji procesora su sljedeće:

32-bitna unutarnja struktura;

Korištenje sistemske sabirnice s 36 adresnih bita i 64 podatkovna bita;

Odvojena interna L1 predmemorija za upute i podatke kapaciteta 16 KB;

Podržava dijeljene L2 instrukcije i predmemoriju podataka do 2 MB;

Cjevovodno izvršavanje naredbi;

Predviđanje smjera grananja softvera s visokom točnošću;

Ubrzano izvođenje operacija s pomičnim zarezom;

Kontrola prioriteta pri pristupu memoriji;

Podrška za implementaciju višeprocesorskih sustava;

Dostupnost internih alata koji omogućuju samotestiranje, otklanjanje pogrešaka i praćenje performansi.

Nova mikroarhitektura Pentium procesori (riža. 4.6)a kasnije se temelji na metodi superskalarna obrada .

Pod, ispod superskalarnost podrazumijeva prisutnost više jedan cjevovod za obradu naredbi (za razliku od skalarne - jednocijevne arhitekture).

Slika 4.6 – Blok dijagram arhitekture Pentium MP

U Pentium MP, naredbe su raspoređene preko dva neovisna izvršna cjevovoda (U i V). Transporter U može izvršiti bilo koju IA-32 obitelj naredbi, uključujući naredbe cijelog broja i pomičnog zareza. Pokretna traka V dizajniran za izvršavanje jednostavnih integerskih instrukcija i nekih instrukcija s pomičnim zarezom. Naredbe se mogu slati na svaki od ovih uređaja istovremeno, a kada upravljački uređaj izda par naredbi u jednom taktu, složenija naredba ide u U cjevovod, a manje složena ide u V cjevovod.

Međutim, takva parna obrada naredbi (uparivanje) moguća je samo za ograničeni podskup cjelobrojnih naredbi. Prave aritmetičke instrukcije ne mogu se izvoditi u sprezi s integerima. Istodobno izdavanje dviju naredbi moguće je samo ako ne postoje ovisnosti registra.

Jedna od glavnih značajki šeste generacije mikroprocesora IA-32 arhitekture je dinamičan(spekulativno) izvršenje. Ovaj izraz označava sljedeći skup mogućnosti:

- predviđanje duboke grane(s vjerojatnošću od >90% možete predvidjeti sljedećih 10-15 prijelaza);

- analiza protoka podataka(pogledajte program 20-30 koraka unaprijed i odredite ovisnost naredbi o podacima ili resursima);

- naprijed izvršavanje naredbi(MP P6 može izvršavati naredbe redoslijedom koji se razlikuje od njihovog redoslijeda u programu).

Unutarnja organizacija MP P6 odgovara RISC arhitekturi, dakle blok dohvaćanja instrukcija, čitajući IA-32 tok instrukcija iz L1 predmemorija instrukcija, dekodira ih u niz mikrooperacija. Tijek mikrooperacija spada u međuspremnik za preuređivanje (skup instrukcija). Sadrži i mikrooperacije koje još nisu izvedene i one koje su već izvedene, ali još nisu utjecale na stanje procesora.

Za dekodiranje uputa, tri paralelna dekoder: dva za jednostavne i jedan za složene upute.

Svaka IA-32 instrukcija dekodira se u 1-4 mikrooperacije. Izvode se mikrooperacije pet paralelnih aktuatora: dva za cjelobrojna aritmetika, dva za prava aritmetika I blok memorijskog sučelja. Stoga je moguće izvesti do pet mikrooperacija po taktu.

Blok aktuatora sposobni birati upute iz skupa bilo kojim redoslijedom. Istovremeno, zahvaljujući blok predviđanja grananja moguće je izvršiti instrukcije slijedeći uvjetne grane. Blok redundantnosti stalno prati u bazenu instrukcija one mikrooperacije koje su spremne za izvršenje (izvorni podaci ne ovise o rezultatu drugih neizvršenih instrukcija) i usmjerava ih na slobodni izvršni uređaj odgovarajućeg tipa. Jedan od cjelobrojnih aktuatora dodatno provjerava jesu li predviđanja grana točna. Kada se otkrije pogrešno predviđeno grananje, sve mikrooperacije koje slijede nakon prijelaza uklanjaju se iz skupa i cjevovod naredbi se puni uputama na novoj adresi.

Međusobna ovisnost instrukcija o vrijednosti registara IA-32 arhitekture može zahtijevati čekanje da se registri oslobode. Za rješavanje ovog problema dizajnirani su 40 internih registara opće namjene, koji se koristi u stvarnim izračunima.

Izbriši blok prati rezultat spekulativno izvedenih mikrooperacija. Ako mikrooperacija više ne ovisi o drugim mikrooperacijama, njen rezultat se prenosi u stanje procesora i uklanja se iz međuspremnika za preuređivanje. Blok za brisanje potvrđuje izvršenje instrukcija (do tri mikrooperacije po taktu) redoslijedom kojim se pojavljuju u programu, uzimajući u obzir prekide, iznimke, prijelomne točke i promašaje predviđanja grananja.

Opisana shema prikazana je na sl. 4.7.


Slika 4.7 – Blok dijagram mikroprocesora Pentium Pro

4.6.2. SIMD proširenja MMX-a

Mnogi algoritmi za rad s multimedijskim podacima dopuštaju najjednostavnije elemente paralelizacije, kada se jedna operacija može izvoditi paralelno na nekoliko brojeva. Ovaj pristup se zove SIMD – single-instruction multiple-data (jedna instrukcija – više podataka). Ova tehnologija je prvi put implementirana u P55 generaciji (Pentium MMX mikroprocesor).

MMX (Multi-Media Extension) je SIMD proširenje za tokovnu obradu cjelobrojnih podataka, implementirano na temelju FPU bloka (koristeći FPU registre).

Jedna MMX instrukcija može izvesti aritmetičku ili logičku operaciju na "serijama" cijelih brojeva upakiranih u MMX registre. Na primjer, PADDSB instrukcija dodaje 8 bajtova jednog "paketa" s odgovarajućih osam bajtova drugog paketa, učinkovito izvodeći zbrajanje osam parova brojeva s jednom instrukcijom.

4.6.3. Procesori Pentium Pro, Pentium II, Pentium III

Pentium II procesor kombinira najbolje karakteristike Intel procesora: performanse Pentium Pro procesora i mogućnosti MMX tehnologije. Ova kombinacija osigurava značajno povećanje performansi Pentium II procesora u usporedbi s prethodnim procesorima IA-32 arhitekture.

Procesor sadrži odvojene interne blokove predmemorije instrukcija i podataka od 16 KB i 512 KB zajedničke L2 predmemorije koja ne blokira.

Povećanje performansi IA-32 postignuto je ne samo optimizacijom cjevovoda instrukcija i dodavanjem izvršnih jedinica, već i, primjerice, uvođenjem predmemorije u procesorsku jezgru. Obitelj IA-32 predstavila je L1 predmemoriju od 8 KB na čipu po prvi put u Intel-486 procesorima. U Pentium procesorima veličina predmemorije je udvostručena. Prvi predstavnici P6 (Pentium Pro) sadržavali su i L2 cache od 256 ili 512 KB. Međutim, takvo se rješenje u to vrijeme pokazalo preskupim i neisplativim, pa je tehnologija uvedena u Pentium II Dual Independent Bus (DIB) – dvostruki neovisni autobus. Za pristup predmemoriji i za pristup vanjska memorija korištene su zasebne gume. Isto arhitektonsko rješenje korišteno je u prvim modelima Pentium III. Počevši od 1999. (Pentium III Coppermine), L2 predmemorija ponovno je vraćena unutar procesorskih matrica.

Razvoj ideje o SIMD-u za stvarne brojeve bila je tehnologija SSE (Streamed SIMD Extensions), prvi put predstavljen u procesorima Pentium III. SSE blok nadopunjuje MMX tehnologiju s osam 128-bitnih registara XMM0-XMM7 i 32-bitnim kontrolnim i statusnim registrom MXCSR.

Slika 4.9 - Evolucija obrade podataka u procesorima Intel Pentium

4.6.4. Pentium 4 (P7) – mikroarhitektura Net Burst

Procesor Pentium 4 32-bitni je predstavnik obitelji IA-32, po mikroarhitekturi pripada novoj, sedmoj (prema Intel klasifikaciji) generaciji. Softverski gledano, radi se o IA-32 procesoru s još jednim proširenjem sustava instrukcija - SSE2. Što se tiče skupa softverski dostupnih registara, Pentium 4 ponavlja Pentium III procesor. S vanjske, hardverske strane, radi se o procesoru s novom vrstom sistemske sabirnice, u kojoj su uz povećanje frekvencije takta primijenjeni već poznati principi dvostruke (2x) i četverostruke (4x) sinkronizacije, te se poduzima niz mjera kako bi se osigurao rad na dosad nezamislivim frekvencijama. Mikroarhitektura procesora, nazvana Net Burst, dizajnirana je uzimajući u obzir visoke frekvencije i jezgre (više od 1,4 GHz) i sistemske sabirnice (400 MHz).

Slika 4.10 – NetBurst mikroarhitektura

Procesor Pentium 4 je jednočipni. Osim same računalne jezgre, sadrži dvije razine predmemorije. Sekundarna predmemorija, uobičajena za upute i podatke, veličine je 256 KB i ima širinu sabirnice od 256 bita (32 bajta), kao u najnoviji procesori Pentium III. Sekundarna sabirnica predmemorije radi na frekvenciji jezgre, što joj osigurava propusnost od 32x1,4 = 44,8 GB/s na 1,4 GHz. Sekundarna predmemorija ima ECC kontrolu za otkrivanje i ispravljanje pogrešaka. Primarna predmemorija podataka ima istu visoku propusnost (44,8 GB/s), ali je njena veličina prepolovljena (8 KB naspram 16 u Pentiumu III). Nema primarne predmemorije instrukcija u uobičajenom smislu; zamijenjena je predmemorijom praćenja. Pohranjuje nizove mikrooperacija u koje se dekodiraju upute. Ovdje može stati do 12K mikroinstrukcija.

Sučelje sabirnice procesorskog sustava dizajnirano je samo za jednoprocesorske konfiguracije. Sučelje umnogome podsjeća na P6 sabirnicu, a protokol je također fokusiran na istovremeno izvršavanje više transakcija. Poduzete su brojne mjere kako bi se osigurala visoka propusnost. Procesor Pentium 4 ima frekvenciju sabirnice od 400 MHz s "quad pumped" - frekvencija takta sistemske sabirnice je 100 MHz, ali je frekvencija adrese i prijenosa podataka veća. Nove informacije mogu se prenositi linijama sa zajedničkom sinkronizacijom na svakom taktu s frekvencijom od 100 MHz. Za prijenos 2 i 4 puta koristi se sinkronizacija iz izvora podataka.

MP aktuatori (ALU) rade na dvostrukoj frekvenciji, što omogućuje izvršavanje većine cjelobrojnih instrukcija u pola takta. U usporedbi s prethodnim generacijama IA-32, Pentium 4 sadrži najduži instrukcijski cjevovod, koji se sastoji od 20 stupnjeva i tzv. hiperpipelin. U vezi s ovom značajkom, mnogi stručnjaci napominju da će mikroarhitektura NetBurst imati maksimalne performanse izvršavanje predvidljivih (linearnih i cikličkih) dijelova programa, karakterističnih za aplikacije za koje je namijenjen Pentium 4. Na nepredvidivo razgranatim programima, koji uključuju, na primjer, uredske aplikacije, dugačak hipercjevovod pokazuje se manje učinkovitim od P6 cjevovod, ako bi se mogao overclockati na frekvencije od 1,4 GHz i više. Kako bi se djelomično nadoknadio ovaj nedostatak, mehanizmi spekulativnog izvršenja i predviđanja grana značajno su optimizirani.

Materijal u 4. poglavlju temelji se na sintezi radova.

Odricanje

Vjerojatno najtočniji razlog za pojavu ovog materijala može se formulirati na sljedeći način: "nije toliko nužno da postoji, nego je čudno što još nije postojao." I doista: u komentarima na rezultate testa stalno operiramo s pojmovima kao što su "kapacitet predmemorije", "brzina sabirnice procesora", "podrška za proširene skupove instrukcija", ali na web mjestu nema niti jednog članka koji bi sadržavao objašnjenja svih ovih pojmova . Taj je propust, naravno, trebalo otkloniti. Ovaj članak, s podnaslovom “FAQ o x86 CPU-u,” pokušaj je učiniti upravo to. Naravno, neki od njegovih odjeljaka mogu se pripisati ne samo x86 procesorima, a ne samo njihovim stolnim (namijenjenim za instalaciju u PC) verzijama, ali mi svakako ne ciljamo na takav globalizam. Stoga, imajte na umu da za potrebe ovog materijala, osim ako je drugačije izričito navedeno, riječ "procesor" znači "x86 procesor dizajniran za ugradnju u stolna računala." Možda će se u članku u procesu daljnjeg usavršavanja i proširenja pojaviti odjeljci posvećeni poslužiteljskim procesorima ili čak procesorima drugih arhitektura, ali to je stvar budućnosti...

Uvod

Kod i podaci: osnovni princip procesora

Dakle, ako ne pokušavamo ovdje predstaviti “kratki” tečaj informatike za srednju školu, onda jedino što bih želio podsjetiti je da procesor (uz rijetke iznimke) ne izvršava programe napisane u nekom programiranju jezik (od kojih jedan, vi, možda i znate), već neka vrsta "strojnog koda". Odnosno, naredbe za njega su nizovi bajtova koji se nalaze u memoriji računala. Ponekad naredba može biti jednaka jednom bajtu, ponekad je potrebno nekoliko bajtova. Tu se u glavnoj memoriji (RAM, RAM) nalaze i podaci. Mogu biti u zasebnom području ili mogu biti "pomiješani" s kodom. Razlika između koda i podataka je u tome što su podaci ono što iznad čega Procesor izvodi neke operacije. A kod su naredbe koje mu govore, kakva operacija? on mora proizvoditi. Da pojednostavimo, možemo zamisliti program i njegove podatke kao niz bajtova određene konačne duljine, smještenih kontinuirano (da ne kompliciramo) u zajedničkom memorijskom nizu. Na primjer, imamo memorijski niz dug 1.000.000 bajtova, a naš program (zajedno s podacima) sastoji se od bajtova numeriranih od 1.000 do 20.000. Ostali bajtovi su drugi programi ili njihovi podaci, ili jednostavno slobodna memorija koja nije zauzeta ničim korisnim.

Dakle, "strojni kod" su instrukcije procesora smještene u memoriji. Tu se nalaze i podaci. Da bi izvršio instrukciju, procesor je mora pročitati iz memorije. Da bi izvršio operaciju nad podacima, procesor ih mora pročitati iz memorije, te eventualno, nakon što izvrši određenu radnju nad njima, zapisati natrag u memoriju u ažuriranom (promijenjenom) obliku. Naredbe i podaci identificiraju se svojom adresom, koja je u biti serijski broj memorijske lokacije.

Opća načela interakcije
procesor i RAM

Nekoga bi moglo iznenaditi da je prilično velik odjeljak u FAQ-u posvećen x86 CPU-u posvećen objašnjavanju značajki funkcioniranja memorije u moderni sustavi ah, na temelju ove vrste procesora. Međutim, činjenice su tvrdoglava stvar: sami x86 procesori sada sadrže toliko blokova odgovornih posebno za optimizaciju njihovog rada s RAM-om da bi bilo potpuno smiješno ignorirati ovu blisku vezu. Može se čak reći i ovo: budući da su rješenja koja se odnose na optimizaciju rada s memorijom postala sastavni dio samih procesora, onda se sama memorija može smatrati svojevrsnim "privjeskom", čije funkcioniranje izravno utječe na brzinu CPU-a. Bez razumijevanja osobitosti interakcije između procesora i memorije, nemoguće je razumjeti zašto određeni procesor (ovaj ili onaj sustav) izvršava programe sporije ili brže.

Kontroler memorije

Dakle, ranije smo već govorili o činjenici da i naredbe i podaci ulaze u procesor iz RAM memorija. Zapravo, sve je malo kompliciranije. U većini modernih x86 sustava (odnosno računala temeljenih na x86 procesorima) procesor kao uređaj uopće ne može pristupiti memoriji, budući da nema odgovarajuće čvorove. Stoga se pretvara u "srednji" specijalizirani uređaj koji se zove memorijski kontroler, koji se pak pretvara u RAM čipove koji se nalaze na memorijskim modulima. Vjerojatno ste vidjeli module - to su dugačke, uske tekstolitne "daske" (zapravo male ploče) s nizom mikro krugova na njima, umetnute u posebne konektore na matičnoj ploči. Uloga RAM kontrolera je stoga jednostavna: on služi kao svojevrsni "most"* između memorije i uređaja koji je koriste (usput, to ne uključuje samo procesor, ali o tome malo kasnije). U pravilu je memorijski kontroler dio čipseta - skupa čipova koji je osnova matične ploče. Brzina razmjene podataka između procesora i memorije uvelike ovisi o brzini kontrolera; to je jedna od najvažnijih komponenti koja utječe na ukupne performanse računala.

* - usput, memorijski kontroler fizički se nalazi u čipu čipseta, koji se tradicionalno naziva "sjeverni most".

Sabirnica procesora

Svaki procesor nužno je opremljen procesorskom sabirnicom, koja se u x86 CPU okruženju obično naziva FSB (Front Side Bus). Ova sabirnica služi kao komunikacijski kanal između procesora i svih ostalih uređaja u računalu: memorije, video kartice, tvrdi disk, i tako dalje. Međutim, kao što već znamo iz prethodnog odjeljka, između same memorije i procesora nalazi se memorijski kontroler. Sukladno tome: procesor komunicira preko FSB-a s memorijskim kontrolerom, koji, pak, komunicira putem posebne sabirnice (nazovimo je, bez daljnjega, "memorijska sabirnica") s RAM modulima na ploči. No, ponavljamo: budući da klasični x86 CPU ima samo jednu “vanjsku” sabirnicu, ona služi ne samo za rad s memorijom, već i za komunikaciju između procesora i svih ostalih uređaja.

Razlike između tradicionalnih
x86 CPU arhitektura i K8/AMD64

Revolucionarni pristup AMD-a leži u činjenici da su njegovi procesori s arhitekturom AMD64 (i mikroarhitekturom, koja se konvencionalno naziva "K8") opremljeni mnogim "vanjskim" sabirnicama. U ovom slučaju, jedna ili više HyperTransport sabirnica koristi se za komunikaciju sa svim uređajima osim memorije, a zasebna grupa od jedne ili dvije (u slučaju dvokanalnog kontrolera) sabirnice koristi se isključivo za rad procesora s memorijom. Prednost integriranja memorijskog kontrolera izravno u procesor je očita: "put od jezgre do memorije" postaje osjetno "kraći", što vam omogućuje brži rad s RAM-om. Istina, ovaj pristup ima i nedostataka. Tako, na primjer, ako su prethodno uređaji poput tvrdi disk ili bi video kartice mogle raditi s memorijom putem namjenskog, neovisnog kontrolera - tada su u slučaju arhitekture AMD64 prisiljene raditi s RAM-om preko kontrolera smještenog na procesoru. Budući da je CPU u ovoj arhitekturi jedini uređaj s izravnim pristupom memoriji. De facto, u sukobu “vanjski kontrolor vs. integrirani”, pojavio se paritet: s jedne strane, AMD je trenutno jedini proizvođač stolnih x86 procesora s integriranim memorijskim kontrolerom, s druge strane, čini se da je tvrtka prilično zadovoljna ovim rješenjem i neće ga napustiti . Treće, Intel također neće odustati od vanjskog kontrolera i prilično je zadovoljan "klasičnom shemom", dokazanom tijekom godina.

radna memorija

Širina memorijske sabirnice, N-kanalni memorijski kontroleri

Od danas, sva memorija koja se koristi u modernim x86 stolnim sustavima ima 64-bitnu sabirnicu. To znači da se u jednom ciklusu takta količina informacija koja je višekratnik od 8 bajtova može simultano prenijeti ovom sabirnicom (8 bajtova za SDR sabirnice, 16 bajtova za DDR sabirnice). Jedina stvar koja se ističe je memorija tipa RDRAM, koja se koristila u sustavima temeljenim na Intel Pentium 4 procesorima u zoru NetBurst arhitekture, ali sada je ovaj smjer prepoznat kao slijepa ulica za x86 računala (usput, ista tvrtka Intel imala je ruku u tome, koja je svojedobno aktivno promovirala ovaj tip memorija). Nešto zabune izazivaju samo dvokanalni kontroleri, koji omogućuju istovremeni rad s dvije odvojene 64-bitne sabirnice, zbog čega neki proizvođači tvrde da imaju određenu “128-bitnu” sposobnost. Ovo je, naravno, čista profanacija. Aritmetika na razini 1. razreda, nažalost, u ovom slučaju ne funkcionira: 2x64 uopće nije jednako 128. Zašto? Da, samo zato što čak ni najmoderniji x86 CPU-i (pogledajte odjeljak FAQ “64-bitna proširenja klasične x86 (IA32) arhitekture” u nastavku) ne mogu raditi sa 128-bitnom sabirnicom i 128-bitnim adresiranjem. Grubo govoreći: dvije neovisne paralelne ceste, svaka široka 2 metra, mogu omogućiti istovremeni prolaz dva automobila, široka 2 metra - ali nikako jednog, širokog 4 metra. Na isti način, N-kanalni memorijski kontroler može povećati brzinu rada s podacima N puta (i onda više teoretski nego praktično) - ali ni na koji način ne može povećati bitni kapacitet tih podataka. Širina memorijske sabirnice u svim modernim kontrolerima koji se koriste u x86 sustavima je 64 bita - neovisno o tome nalazi li se taj kontroler u čipsetu ili u samom procesoru. Neki kontroleri opremljeni su s dva neovisna 64-bitna kanala, ali to ni na koji način ne utječe na širinu memorijske sabirnice - samo na brzinu čitanja i pisanja informacija.

Brzina čitanja i pisanja

Brzina čitanja i zapisivanja informacija u memoriju teoretski je ograničena isključivo propusnošću same memorije. Na primjer, dvokanalni DDR400 memorijski kontroler teoretski može osigurati brzine čitanja i pisanja informacija jednake 8 bajtova (širina sabirnice) * 2 (broj kanala) * 2 (DDR protokol, koji osigurava prijenos 2 paketa podataka po ciklus takta) * 200"000"000 (stvarna radna frekvencija memorijske sabirnice je 200 MHz, odnosno 200"000"000 ciklusa takta u sekundi). Vrijednosti dobivene kao rezultat praktičnih testova u pravilu su nešto niže od teoretskih: to je zbog "nesavršenog" dizajna memorijskog kontrolera, plus režijskih troškova (kašnjenja) uzrokovanih radom predmemoriranja podsustava samog procesora (pogledajte odjeljak o predmemorij procesora u nastavku). No, glavna “kvaka” nije čak ni u prekrivačima povezanim s radom kontrolera i podsustava za predmemoriju, već u činjenici da brzina “linearnog” čitanja ili pisanja nije jedina karakteristika koja utječe na stvarnu brzinu procesor s RAM-om. Da bismo razumjeli koje komponente čine stvarnu brzinu procesora i memorije, moramo, uz linearnu brzinu čitanja ili pisanja, također uzeti u obzir takvu karakteristiku kao što je latencija.

Latencija

Latencija nije manja važna karakteristika sa stajališta brzine memorijskog podsustava, nego brzine “pumpanja podataka”, ali potpuno drugačije, u biti. Velika brzina razmjene podataka je dobra kada je njihova veličina relativno velika, ali ako trebamo “malo po malo s raznih adresa”, onda latencija dolazi do izražaja. Što je? Općenito, vrijeme potrebno za početak čitanja informacija s određene adrese. I doista: od trenutka kada procesor pošalje naredbu za čitanje (pisanje) memorijskom kontroleru do trenutka kada se ta operacija izvrši, prođe određeno vrijeme. Štoviše, to uopće nije jednako vremenu potrebnom za prijenos podataka. Primivši naredbu za čitanje ili pisanje od procesora, memorijski kontroler mu "indicira" s kojom adresom želi raditi. Pristup bilo kojoj nasumično odabranoj adresi ne može se ostvariti trenutno; to zahtijeva određeno vrijeme. Dolazi do kašnjenja: adresa je navedena, ali memorija još nije spremna za pristup njoj. Općenito, to se kašnjenje naziva latencija. U različiti tipovi pamćenje je drugačije. Na primjer, DDR2 memorija ima u prosjeku mnogo veće latencije od DDR (pri istoj frekvenciji prijenosa podataka). Kao rezultat toga, ako su podaci u programu smješteni "kaotično" i u "malim komadićima", brzina njihovog čitanja postaje mnogo manje važna od brzine pristupa "početku dijela", jer kašnjenja pri prelasku na sljedeća adresa utječe na performanse sustava mnogo više od brzine čitanja ili pisanja.

"Natjecanje" između brzine čitanja (pisanja) i latencije jedna je od glavnih glavobolja za programere modernih sustava: nažalost, povećanje brzine čitanja (pisanja) gotovo uvijek dovodi do povećanja latencije. Na primjer, memorija tipa SDR (PC66, PC100, PC133) ima u prosjeku bolju (nižu) latenciju od DDR-a. Zauzvrat, DDR2 ima još veću latenciju (tj. goru) od DDR-a.

Treba imati na umu da "ukupna" latencija memorijskog podsustava ne ovisi samo o njemu samom, već i o memorijskom kontroleru i njegovoj lokaciji - svi ti čimbenici također utječu na latenciju. Zato je AMD, u procesu razvoja AMD64 arhitekture, odlučio problem velike latencije riješiti “jednim potezom” integracijom kontrolera izravno u procesor - kako bi se “skratio razmak” između procesorske jezgre i procesora. RAM modula što je više moguće. Ideja je bila uspješna, ali uz visoku cijenu: sada sustav temeljen na specifičnoj procesorskoj jedinici AMD64 arhitekture može raditi samo s memorijom za koju je dizajniran njegov kontroler. Vjerojatno je to razlog zašto se Intel još nije odlučio na tako drastičan korak, već radije djeluje tradicionalnim metodama: poboljšanjem memorijskog kontrolera u čipsetu i Prefetch mehanizma u procesoru (vidi dolje za detalje).

Zaključno, napominjemo da se pojmovi "brzina čitanja / pisanja" i "latencija" općenito primjenjuju na bilo koju vrstu memorije - uključujući ne samo klasični DRAM (SDR, Rambus, DDR, DDR2), već i predmemoriju (vidi ispod).

Procesor: Opće informacije

Koncept arhitekture

Arhitektura kao kompatibilnost koda

Sigurno ste često nailazili na pojam “x86”, ili “Intel-kompatibilan procesor” (ili “IBM PC kompatibilan” - ali to je u vezi s računalom). Ponekad se koristi i izraz "kompatibilan s Pentiumom" (zašto Pentium - shvatit ćete malo kasnije). Što se zapravo krije iza svih ovih imena? U ovom trenutku, sljedeća jednostavna formulacija izgleda najispravnija sa stanovišta autora: moderni x86 procesor je procesor sposoban ispravno izvršavati strojni kod IA32 arhitekture (arhitektura 32-bitnih Intel procesora). U prvoj aproksimaciji, ovo je kod koji izvršava procesor i80386 (popularno poznat kao "386"), ali glavni skup IA32 instrukcija konačno je formiran s izdavanjem procesora Intel Pentium Pro. Što znači "osnovni skup" i koji drugi postoje? Najprije odgovorimo na prvi dio pitanja. "Osnovno" u ovom slučaju znači da se korištenjem isključivo ovog skupa instrukcija može napisati bilo koji program koji se općenito može napisati za x86 procesor (ili IA32, ako vam je draže).

Osim toga, IA32 arhitektura ima "službena" proširenja (dodatne skupove instrukcija) od developera same arhitekture, Intela: MMX, SSE, SSE2 i SSE3. Postoje i "neslužbeni" (ne-Intel) prošireni skupovi naredbi: EMMX, 3DNow! i Prošireni 3DNow! - razvio ih je AMD. Međutim, "službeno" i "neslužbeno" u ovom slučaju su relativni koncept - de facto, sve se svodi na činjenicu da su neke ekstenzije skupa instrukcija priznate od strane Intela, kao developera originalnog skupa, a neke su ne, dok programeri koriste ono što je najbolje za njih sve odgovara. Postoji jedno jednostavno pravilo dobrog bontona kada su u pitanju prošireni skupovi instrukcija: prije njihove uporabe program treba provjeriti podržava li ih procesor. Ponekad dolazi do odstupanja od ovog pravila (i može dovesti do neispravnog rada programa), ali objektivno to je problem neispravno napisanog softvera, a ne procesora.

Čemu služe dodatni skupovi naredbi? Prije svega, za povećanje performansi pri izvođenju određenih operacija. Jedna naredba iz sekundarnog skupa obično izvodi radnju koja bi zahtijevala mali program koji se sastoji od naredbi iz glavnog skupa. Opet, u pravilu, procesor izvršava jednu instrukciju brže od niza koji zamjenjuje. Međutim u 99% slučajeva ništa što se nije moglo učiniti pomoću osnovnih naredbi ne može se učiniti pomoću naredbi iz dodatnog skupa.

Dakle, gore spomenuta provjera programa za podršku dodatnih skupova instrukcija od strane procesora trebala bi obavljati vrlo jednostavnu funkciju: ako, na primjer, procesor podržava SSE, tada ćemo brojati brzo i koristeći instrukcije iz SSE skupa. Ako ne, brojat ćemo sporije, koristeći naredbe iz glavnog skupa. Ispravno napisan program mora tako djelovati. Međutim, sada gotovo nitko ne provjerava podršku procesora za MMX, budući da svi CPU-i izdani u posljednjih 5 godina zajamčeno podržavaju ovaj skup. Za referencu, ovdje je tablica koja sažima informacije o podršci raznih proširenih skupova naredbi od strane različitih stolnih (dizajniranih za stolna računala) procesora.

CPU
Intel Pentium II
Intel Celeron do 533 MHz
Intel Pentium III
Intel Celeron 533-1400 MHz
Intel Pentium 4
Intel Celeron od 1700 MHz
Intel Celeron D
Intel Pentium 4 eXtreme Edition
Intel Pentium eXtreme Edition
Intel Pentium D
AMD K6
AMD K6-2
AMD K6-III
AMD Athlon
AMD Duron do 900 MHz
AMD Athlon XP
AMD Duron od 1000 MHz
AMD Athlon 64 / Athlon FX
AMD Sempron
AMD Athlon 64 X2
PREKO C3

*ovisno o modifikaciji

U ovom trenutku, sve popularne desktop softver(Windows i Linux operativni sustavi, uredski paketi, računalne igrice, itd.) razvija se posebno za x86 procesore. Radi (s izuzetkom programa koji se "loše ponašaju") na bilo kojem x86 procesoru, bez obzira na to tko ga je napravio. Stoga su umjesto izraza “Intel-kompatibilan” ili “Pentium-kompatibilan” usmjerenih na developera originalne arhitekture, počeli koristiti neutralni naziv: “x86-kompatibilan procesor”, “procesor s x86 arhitekturom”. U ovom slučaju, "arhitektura" znači kompatibilnost s određenim skupom instrukcija, odnosno, može se reći, "arhitektura procesora s programerskog gledišta". Postoji još jedno tumačenje istog pojma.

Arhitektura kao karakteristika obitelji procesora

"Zhelezyachniki" - ljudi koji uglavnom ne rade sa softverom, već s hardverom, shvaćaju "arhitekturu" na malo drugačiji način (iako je ispravnije da se ono što oni zovu "arhitektura" zove "mikroarhitektura", ali de facto prefiks " mikro" često se izostavlja). Za njih je "CPU arhitektura" određeni skup svojstava svojstven cijeloj obitelji procesora, koji se obično proizvode godinama (drugim riječima, "unutarnji dizajn", "organizacija" ovih procesora). Tako će vam, na primjer, svaki stručnjak za x86 CPU reći da je procesor s ALU-ovima koji rade na dvostrukoj frekvenciji, QDR sabirnicom, Trace cacheom i mogućom podrškom za tehnologiju Hyper-Threading "procesor arhitekture NetBurst" (ne budite uznemiren nepoznatim pojmovima - svi će biti objašnjeni malo kasnije). A Intel Pentium Pro, Pentium II i Pentium III procesori su “P6 arhitektura”. Stoga je koncept "arhitekture" u odnosu na procesore pomalo dvosmislen: može se shvatiti i kao kompatibilnost s određenim pojedinačnim skupom instrukcija i kao skup hardverskih rješenja svojstvenih određenoj prilično širokoj skupini procesora. Naravno, takav dualizam jednog od temeljnih pojmova nije baš zgodan, ali to je tako i teško da će se nešto promijeniti u skoroj budućnosti...

64-bitna proširenja klasične x86 (IA32) arhitekture

Nedavno su oba vodeća proizvođača x86 CPU-a najavila dvije gotovo identične* tehnologije (međutim, AMD to radije naziva arhitekturom), zahvaljujući kojima su klasični x86 (IA32) CPU-i dobili 64-bitni status. U slučaju AMD-a ovu tehnologiju dobio naziv "AMD64" (64-bitni AMD arhitektura), u slučaju Intela - “EM64T” (poboljšana 64-bitna memorijska tehnologija). Također, ugledni starci koji su upoznati s poviješću problema ponekad koriste naziv “x86-64” - kao opću oznaku za sva 64-bitna proširenja x86 arhitekture, nevezana za registrirane robne marke bilo kojeg proizvođača. De facto, korištenje jednog od tri gore navedena naziva više ovisi o osobnim preferencijama korisnika nego o stvarnim razlikama - jer razlike između AMD64 i EM64T stanu na vrh vrlo tanke igle. Osim toga, sam AMD je uveo "brand" naziv "AMD64" tek nedugo prije najave vlastitih procesora temeljenih na ovoj arhitekturi, a prije toga je sasvim mirno koristio neutralniji "x86-64" u svojim dokumentima. Međutim, na ovaj ili onaj način, sve se svodi na jednu stvar: neki interni registri procesora postali su 64-bitni umjesto 32-bitni, 32-bitne x86 kodne instrukcije dobile su svoje 64-bitne analoge, osim toga, količina adresabilna memorija (uključujući ne samo fizičku, već i virtualnu) višestruko se povećala (zbog činjenice da je adresa dobila 64-bitni format umjesto 32-bitnog). Broj marketinških špekulacija na temu “64-bita” premašio je sve razumne granice, stoga bismo trebali posebno pažljivo razmotriti prednosti ove inovacije. Dakle: što se zapravo promijenilo, a što nije?

* - Argumenti da je Intel "drsko kopirao EM64T iz AMD64" ne izdržavaju kritiku. I to uopće ne zato što nije tako - nego zato što uopće nije "bezobrazno". Postoji takav koncept: "ugovor o unakrsnom licenciranju". Ako do takvog dogovora dođe, to znači da svi razvoji jedne tvrtke na određenom području automatski postaju dostupni drugoj, kao što i razvoji druge automatski postaju dostupni prvoj. Intel je iskoristio unakrsno licenciranje za razvoj EM64T, koristeći AMD64 kao osnovu (što nitko nikada nije zanijekao). AMD je iskoristio isti ugovor za uvođenje podrške za SSE2 i SSE3 dodatne skupove instrukcija koje je razvio Intel u svoje procesore. I u tome nema ničeg sramotnog: budući da smo pristali "dijeliti" razvoj događaja, znači da moramo dijeliti.

Što se nije promijenilo? Prije svega, brzina procesora. Bila bi očigledna glupost pretpostaviti da će isti procesor, kada se prebaci s uobičajenog 32-bitnog na 64-bitni način (a svi trenutni x86 CPU-i nužno podržavaju 32-bitni način), raditi 2 puta brže. Naravno, u nekim slučajevima može doći do nekog ubrzanja korištenjem 64-bitne aritmetike cijelih brojeva - ali broj tih slučajeva je vrlo ograničen i ne utječu na većinu modernog korisničkog softvera. Usput: zašto smo upotrijebili izraz "64-bitna aritmetika cijelog broja"? Ali zato što blokovi operacija s pomičnim zarezom (vidi dolje) u svim x86 procesorima odavno više nisu 32-bitni. Pa čak ni 64-bitni. Klasični x87 FPU (vidi dolje), koji je konačno postao dio CPU-a još u danima dobrog starog 32-bitnog Intel Pentiuma - već je bio 80-bitni. Operandi SSE i SSE2/3 instrukcija su 128-bitni! U tom smislu, arhitektura x86 prilično je paradoksalna: unatoč činjenici da su procesori ove arhitekture formalno ostali 32-bitni dosta dugo vremena - bitni kapacitet onih blokova gdje je “b O“veći bitni kapacitet” je doista bio potreban - povećavan je potpuno neovisno o ostalima. Na primjer, procesori AMD Athlon XP i Intel Pentium 4 “Northwood” kombinirali su jedinice koje su radile s 32-bitnim, 80-bitnim i 128-bitnim operandima. Samo su glavni skup instrukcija (naslijeđen od prvog procesora IA32 arhitekture - Intel 386) i adresiranje memorije (maksimalno 4 gigabajta, ne računajući "perverzije" poput Intel PAE) ostali 32-bitni.

Dakle, činjenica da su AMD i Intel procesori postali “formalno 64-bitni”, u praksi nam je donijela samo tri poboljšanja: pojavu naredbi za rad sa 64-bitnim cijelim brojevima, povećanje broja i/ili bitne dubine registara, i povećanje memorije maksimalnog adresabilnog volumena. Napomena: nitko ne poriče stvarne prednosti ovih inovacija (osobito treće!). Baš kao što nitko ne poriče zasluge AMD-a u promicanju ideje o “modernizaciji” (zbog uvođenja 64-bitnih) x86 procesora. Samo želimo upozoriti na pretjerana očekivanja: ne biste se trebali nadati da će računalo kupljeno "u cjenovnoj klasi VAZ-a" postati "vrlovit Mercedes" bez instaliranja 64-bitnog softvera. Nema čuda na svijetu...

Jezgra procesora

Razlike između jezgri iste mikroarhitekture

"Procesorska jezgra" (obično se jednostavno naziva "jezgra" radi sažetosti) je specifično utjelovljenje [mikro]arhitekture (tj. "arhitekture u hardverskom smislu riječi") koja je standard za cijelu seriju procesora. Na primjer, NetBurst je mikroarhitektura na kojoj se nalaze mnogi današnji Intelovi procesori: Celeron, Pentium 4, Xeon. Mikroarhitektura postavlja opća načela: dugi cjevovod, korištenje određene vrste predmemorije koda prve razine (Trace cache) i druge "globalne" značajke. Jezgra je specifičnije utjelovljenje. Na primjer, procesori mikroarhitekture NetBurst sa sabirnicom od 400 MHz, predmemorijom druge razine od 256 kilobajta i bez Podrška za Hyper-Threading je više-manje potpuni opis jezgre Willamette. Ali jezgra Northwood ima predmemoriju druge razine od 512 kilobajta, iako se također temelji na NetBurstu. Jezgra AMD Thunderbird temelji se na mikroarhitekturi K7, ali ne podržava SSE skup instrukcija, ali jezgra Palomino podržava.

Dakle, možemo reći da je "jezgra" specifično utjelovljenje određene mikroarhitekture "u siliciju", koja ima (za razliku od same mikroarhitekture) određeni skup strogo definiranih karakteristika. Mikroarhitektura je amorfna; ona opisuje opće principe dizajna procesora. Jezgra je, konkretno, mikroarhitektura, “obrasla” svakakvim parametrima i karakteristikama. Vrlo je rijetko da procesori mijenjaju mikroarhitekturu zadržavajući isto ime. I, obrnuto, gotovo svaki naziv procesora je "promijenio" svoju jezgru barem nekoliko puta tijekom svog postojanja. Na primjer, opći naziv serije AMD procesora je "Athlon XP" - ovo je jedna mikroarhitektura (K7), ali čak četiri jezgre (Palomino, Thoroughbred, Barton, Thorton). Različite jezgre izgrađene na istoj mikroarhitekturi mogu imati, između ostalog, različite razine performansi.

revizije

Revizija je jedna od izmjena jezgre koja se vrlo malo razlikuje od prethodne, zbog čega ne zaslužuje naziv “nova jezgra”. U pravilu, proizvođači procesora ne prave veliku stvar oko izdavanja sljedeće revizije; to se događa "u radnom stanju". Dakle, čak i ako kupite isti procesor, potpuno sličnog imena i karakteristika, ali s razmakom od oko šest mjeseci, vrlo je moguće da će zapravo biti malo drugačiji. Izdavanje nove revizije obično je povezano s nekim manjim poboljšanjima. Na primjer, uspjeli smo malo smanjiti potrošnju energije, ili smanjiti napon napajanja, ili optimizirati nešto drugo, ili je otklonjeno nekoliko manjih grešaka. Sa stajališta performansi, ne sjećamo se niti jednog primjera gdje se jedna revizija kernela toliko značajno razlikovala od druge da o tome ima smisla govoriti. Iako je ova opcija čisto teoretski moguća - na primjer, optimiziran je jedan od procesorskih blokova odgovornih za izvršavanje nekoliko naredbi. Ukratko, možemo reći da se najčešće ne isplati zamarati revizijama procesora: u vrlo rijetkim slučajevima promjena revizije čini neke temeljne promjene na procesoru. Dovoljno je samo znati da tako nešto postoji - isključivo za opći razvoj.

Frekvencija jezgre

U pravilu se ovaj parametar kolokvijalno naziva "frekvencija procesora". Iako je u općem slučaju definicija "radne frekvencije jezgre" ipak ispravnija, budući da uopće nije nužno da sve komponente CPU-a rade na istoj frekvenciji kao jezgra (najčešći primjer suprotnog je bio stari “slot” x86 CPU-i - Intel Pentium II i Pentium III za Slot 1, AMD Athlon za Slot A - njihova L2 predmemorija funkcionirala je na 1/2, a ponekad čak i na 1/3 frekvencije jezgre). Druga uobičajena zabluda je uvjerenje da frekvencija jezgre jedinstveno određuje performanse. Zapravo, ovo je dvostruko pogrešno: prvo, svaka specifična procesorska jezgra (ovisno o tome kako je dizajnirana, koliko izvršnih jedinica sadrži različite vrste itd. itd.) mogu izvršiti različiti broj naredbi u jednom ciklusu takta, ali je frekvencija samo broj takvih ciklusa takta u sekundi. Prema tome (usporedba u nastavku je, naravno, vrlo pojednostavljena i stoga vrlo proizvoljna), procesor čija jezgra izvršava 3 instrukcije po taktu može imati trećinu nižu frekvenciju od procesora koji izvršava 2 instrukcije po taktu - i u isto vrijeme imati potpuno sličnu izvedbu.

Drugo, čak i unutar iste jezgre, povećanje frekvencije ne dovodi uvijek do proporcionalnog povećanja performansi. Ovdje će vam znanje koje ste mogli prikupiti iz odjeljka "Opća načela interakcije između procesora i RAM-a" biti vrlo korisno. Činjenica je da brzina izvršavanja naredbi procesorske jezgre nije jedini pokazatelj koji utječe na brzinu izvršavanja programa. Jednako je važna brzina kojom naredbe i podaci stižu do CPU-a. Zamislimo, čisto teoretski, takav sustav: brzina procesora je 10 000 naredbi u sekundi, brzina memorije je 1000 bajtova u sekundi. Pitanje: čak i ako pretpostavimo da jedna naredba ne zauzima više od jednog bajta, a nemamo podataka uopće, kojom brzinom će se program izvršavati u takvom sustavu? Točno: ne više od 1000 naredbi u sekundi, a CPU performanse nemaju apsolutno nikakve veze s tim: nećemo biti ograničeni njome, već brzinom na koje naredbe ulaze u procesor. Dakle, trebali biste razumjeti: nemoguće je kontinuirano povećavati samo jednu frekvenciju jezgre, bez istovremenog ubrzavanja memorijskog podsustava, jer u ovom slučaju, počevši od određene faze, povećanje frekvencije procesora više neće utjecati na povećanje performansi sustava u cjelini.

Značajke formiranja imena procesora

Prije, dok je nebo bilo plavije, pivo je bilo bolje, a djevojke ljepše, prerađivači su se zvali jednostavno: ime proizvođača + naziv asortiman modela+ učestalost. Na primjer: "AMD K6-2 450 MHz". Trenutno su se oba velika proizvođača odmaknula od te tradicije i umjesto učestalosti koriste neke nerazumljive brojke koje označavaju tko zna što. Sljedeća dva odjeljka posvećena su kratkom objašnjenju što ti brojevi zapravo znače.

Ocjene iz AMD-a

Poznat je razlog zašto je AMD iz naziva svojih procesora “izbacio” frekvenciju i zamijenio je nekim apstraktnim brojem: nakon pojave procesora Intel Pentium 4, koji radi na vrlo visokim frekvencijama, AMD-ovi procesori uz njega su počeli “loše izgledati u izlogu” - kupac nije vjerovao da CPU s frekvencijom od, na primjer, 1500 MHz može prestići CPU s frekvencijom od 2000 MHz. Stoga je frekvencija u nazivu zamijenjena ocjenom. Formalno ("de jure", da tako kažemo) tumačenje ove ocjene od strane AMD-a zvučalo je malo drugačije u različitim vremenima, ali nikada nije zvučalo u obliku u kojem su ga korisnici percipirali: AMD procesor s određenom ocjenom trebao bi biti kao barem ne sporiji od procesora Intel Pentium 4 s frekvencijom koja odgovara ovoj ocjeni. Pritom, nikome nije bila posebna tajna da je upravo takva interpretacija bila krajnji cilj uvođenja rejtinga. Općenito, svi su sve savršeno razumjeli, ali AMD se marljivo pretvarao da nema nikakve veze s tim :). Ne treba joj zamjeriti na tome: u natjecanju vrijede sasvim druga pravila nego u viteškim borbama. Štoviše, rezultati neovisnih testova pokazali su: općenito, AMD svojim procesorima dodjeljuje prilično poštene ocjene. Zapravo, sve dok je tako, nema smisla buniti se protiv korištenja ocjene. Istina, jedno pitanje ostaje otvoreno: za što (zanima nas, naravno, de facto stanje, a ne objašnjenja marketinškog odjela) će se vezati ocjena AMD procesora malo kasnije, kada Intel počne proizvoditi neke drugi procesor umjesto Pentiuma 4?

Intelov broj procesora

Ono što morate odmah zapamtiti: Broj procesora (u daljnjem tekstu PN) za Intel procesore nije ocjena. Ne ocjena izvedbe ili ocjena bilo čega drugog. Zapravo, to je jednostavno "stavka", stavka na popisu inventara čija je jedina svrha osigurati da se linija koja predstavlja jedan procesor razlikuje od linije koja predstavlja drugi. Unutar serije (prva znamenka PN), druge dvije znamenke, u načelu, mogu nešto reći, ali s obzirom na prisutnost tablica koje pokazuju potpunu korespondenciju između PN i stvarnih parametara, ne vidimo puno smisla u memoriranju koji - to su srednje korespondencije. Intelova motivacija za uvođenje PN (umjesto specificiranja CPU frekvencije) je složenija od AMD-ove. Potreba za uvođenjem PN-a (kako to objašnjava sam Intel) prvenstveno je posljedica činjenice da dva glavna konkurenta imaju različite pristupe pitanju jedinstvenosti naziva CPU-a. Na primjer, za AMD naziv "Athlon 64 3200+" može značiti četiri procesora s malo različitim tehničke karakteristike(ali s istom “ocjenom”). Intel je mišljenja da ime procesora mora biti jedinstveno, pa je kompanija ranije morala “izmicati” dodajući različita slova vrijednosti frekvencije u nazivu, što je dovodilo do zabune. U teoriji, PN je trebao eliminirati ovu zabunu. Teško je reći je li cilj postignut: svejedno je raspon Intelovih procesora ostao prilično složen. S druge strane, to je neizbježno, jer je asortiman proizvoda prevelik. No, bez obzira na sve ostalo, jedan de facto učinak je definitivno postignut: sada samo stručnjaci koji se razumiju u problematiku mogu brzo i točno “napamet” po imenu procesora reći kakav je i kakve će njegove performanse biti u usporedbi s drugim procesorima. procesori. Koliko je dobro? Teško je reći. Radije bismo se suzdržali od komentara.

Mjerenje brzine "u megahercima" - kako je to moguće?

To nikako nije moguće jer se brzina ne mjeri u megahercima, kao što se ni udaljenost ne mjeri u kilogramima. No, gospoda trgovci odavno su shvatili da u verbalnom dvoboju između fizičara i psihologa uvijek pobjeđuje potonji – i bez obzira na to tko je zapravo u pravu. Zato čitamo o "ultra-brzom FSB-u od 1066 MHz", bolno pokušavajući shvatiti kako se brzina može mjeriti pomoću frekvencije. Zapravo, budući da je takav izopačeni trend zaživio, samo vam treba biti jasno što to znači. Ono što mislimo je sljedeće: ako "popravimo" širinu sabirnice na N bitova, tada je njegova propusnost zapravo će ovisiti o frekvenciji na kojoj sabirnica radi i koliko podataka može prenijeti po taktu. Na običnoj procesorskoj sabirnici s “jednom” brzinom (takva je sabirnica bila npr. procesor Intel Pentium III) po taktu se prenosi 64 bita, odnosno 8 bajtova. Prema tome, ako je radna frekvencija sabirnice 100 MHz (100"000"000 ciklusa takta u sekundi), tada će brzina prijenosa podataka biti jednaka 8 bajtova * 100"000"000 herca ~= 763 megabajta u sekundi (i ako se broji u "decimalnim megabajtima" , u kojima je uobičajeno uzeti u obzir tokovi podataka, pa još ljepše - 800 megabajta u sekundi). U skladu s tim, ako DDR sabirnica radi na istih 100 megaherca, sposobna prenijeti dvostruku količinu podataka u jednom taktu, brzina će se povećati točno dva puta. Stoga bi se, prema paradoksalnoj logici gospode trgovaca, ovaj autobus trebao zvati "200 MHz". A ako je to i QDR (Quad Data Rate) sabirnica, onda zapravo ispada da ima "400 MHz", budući da prenosi četiri paketa podataka u jednom taktu. Iako je stvarna radna frekvencija sve tri gore opisane sabirnice ista - 100 megaherca. Tako je "megaherc" postao sinonim za brzinu.

Tako se QDR sabirnica (s "četverostrukom" brzinom), koja radi na stvarnoj frekvenciji od 266 megaherca, čudesno pokazuje na "1066 megaherca". Broj "1066" u ovom slučaju predstavlja činjenicu da je njegova propusnost točno 4 puta veća od "jednobrzinske" sabirnice koja radi na istoj frekvenciji. Jeste li već zbunjeni?.. Naviknite se! Ovo nije nekakva teorija relativnosti, ovdje je sve puno kompliciranije i zanemarenije... Ipak, ovdje je najvažnije upamtiti jedno jednostavno načelo: ako radimo takvu perverziju kao što je usporedba brzine dvaju autobusa s jedan drugoga “u megahercima”, tada moraju biti iste širine. Inače, ispada kao na jednom forumu, gdje je osoba ozbiljno tvrdila da je propusnost AGP2X ("133 MHz", ali 32-bitni sabirnica) - veća od propusnosti FSB-a Pentiuma III 800 (stvarna frekvencija 100 MHz, širina 64 bita).

Nekoliko riječi o nekim pikantnim značajkama DDR i QDR protokola

Kao što je gore spomenuto, u DDR načinu rada dvostruka količina informacija prenosi se sabirnicom u jednom ciklusu takta, au QDR načinu rada učetverostručuje se. Istina, u dokumentima usmjerenim više na veličanje postignuća proizvođača nego na objektivno pokrivanje stvarnosti, iz nekog razloga uvijek zaboravljaju navesti jedno malo "ali": Načini dvostruke i četverostruke brzine omogućeni su samo tijekom paketnog prijenosa podataka. Odnosno, ako smo zatražili par megabajta iz memorije s adrese X na adresu Y, onda da, ta dva megabajta će se prenijeti dvostrukom/četverostrukom brzinom. Ali sam zahtjev za podacima šalje se sabirnicom jednom brzinom - Stalno ! Sukladno tome, ako imamo puno zahtjeva, a veličina podataka koji se šalju nije jako velika, tada će količina podataka koja „putuje“ sabirnicom jednom brzinom (a zahtjev je također podatak) biti gotovo jednaka količini koja se prenosi dvostrukom ili četverostrukom brzinom. Čini se da nam nitko nije otvoreno lagao, čini se da DDR i QDR stvarno rade, ali... kako kaže jedan stari vic: “ili je on nekome ukrao bundu, ili je netko njemu ukrao bundu, ali nešto nije u redu s bundom..." ;)

Veliki blok procesor

Predmemorija

Opći opis i princip rada

Svi moderni procesori imaju predmemoriju (na engleskom - cache). Predmemorija je posebna vrsta memorije (glavna značajka koja bitno razlikuje predmemoriju od RAM-a je brzina rada), koja je neka vrsta "međuspremnika" između memorijskog kontrolera i procesora. Ovaj se međuspremnik koristi za povećanje brzine rada s RAM-om. Kako? Sada pokušajmo objasniti. U isto vrijeme, odlučili smo napustiti usporedbe koje imaju miris dječjeg vrtića, a koje se često nalaze u popularnoj literaturi o temama procesora (bazeni povezani cijevima različitih promjera itd., itd.). Uostalom, osoba koja je pročitala članak do ove točke i nije zaspala vjerojatno može izdržati i "probaviti" čisto tehničko objašnjenje, bez bazena, mačaka i maslačka.

Dakle, zamislimo da imamo puno relativno spore memorije (neka to bude RAM veličine 10.000.000 bajtova) i relativno malo vrlo brze memorije (neka to bude predmemorija veličine samo 1024 bajta). Kako možemo iskoristiti ovaj nesretni kilobajt za povećanje brzine rada sa cjelokupnom memorijom općenito? Ali ovdje treba imati na umu da se podaci tijekom rada programa u pravilu ne bacaju nepromišljeno s mjesta na mjesto - to promijeniti. Očitali su vrijednost neke varijable iz memorije, dodali joj neki broj i zapisali je natrag na isto mjesto. Prebrojali smo niz, sortirali ga uzlaznim redoslijedom i ponovno zapisali u memoriju. To jest, u jednom trenutku program ne radi s cijelom memorijom, već, u pravilu, s relativno malim fragmentom. Koje se rješenje nameće samo po sebi? Tako je: učitajte ovaj fragment u "brzu" memoriju, obradite ga tamo, a zatim ga zapišite natrag u "sporu" memoriju (ili ga jednostavno izbrišite iz predmemorije ako se podaci nisu promijenili). Općenito, to je upravo način na koji radi predmemorija procesora: sve informacije pročitane iz memorije završavaju ne samo u procesoru, već iu predmemorije. A ako je ista informacija (ista adresa u memoriji) potrebna ponovno, procesor prvo provjerava: je li u cacheu? Ako postoji, informacije se preuzimaju od tamo, a pristup memoriji se uopće ne događa. Slično je i s pisanjem: informacije, ako njihov volumen stane u predmemoriju, tamo se zapisuju, a tek onda, kada procesor završi operaciju pisanja i počne izvršavati druge naredbe, podaci se upisuju u predmemoriju. paralelno s radom jezgre procesora“polako istovaruje” u RAM.

Naravno, količina pročitanih i zapisanih podataka tijekom cijelog rada programa puno je veća od veličine predmemorije. Stoga se neke od njih moraju s vremena na vrijeme brisati kako bi nove, relevantnije mogle stati u predmemoriju. Najjednostavniji poznati mehanizam za osiguranje ovog procesa je praćenje vremena zadnjeg pristupa podacima koji se nalaze u predmemorij. Dakle, ako trebamo smjestiti nove podatke u predmemoriju, a ona je već “puna do kraja”, kontroler koji upravlja predmemorijom gleda kojem se fragmentu predmemorije nije pristupalo najdulje vrijeme? Upravo je taj fragment prvi kandidat za “odlazak”, a na njegovom mjestu bilježe se novi podaci s kojima sada treba raditi. Ovo je, općenito govoreći, način na koji funkcionira mehanizam predmemoriranja u procesorima. Naravno, gornje objašnjenje je vrlo primitivno; zapravo, sve je još kompliciranije, ali nadamo se da ste uspjeli dobiti opću ideju o tome zašto procesoru treba predmemorija i kako ona radi.

Da bi bilo jasno koliko je predmemorija važna, navedimo jednostavan primjer: brzina razmjene podataka između procesora Pentium 4 i njegovih predmemorija više je od 10 puta (!) veća od brzine njegovog rada s memorijom. Zapravo, moderni procesori sposobni su punim kapacitetom raditi samo s predmemorijom: čim se suoče s potrebom čitanja podataka iz memorije, svi njihovi hvaljeni megaherci jednostavno počnu "grijati zrak". Opet jednostavan primjer: procesor izvrši najjednostavniju instrukciju u jednom taktu, odnosno u sekundi može izvršiti ovoliko jednostavne upute, koja mu je učestalost (zapravo čak i više, ali to ćemo ostaviti za kasnije...). Ali vrijeme čekanja podataka iz memorije može u najgorem slučaju biti više od 200 ciklusa! Što radi procesor dok čeka potrebne podatke? Ali on ne radi ništa. Samo stojim i čekam...

Predmemoriranje na više razina

Specifičan dizajn modernih procesorskih jezgri doveo je do činjenice da sustav predmemoriranja u velikoj većini CPU-a mora biti višerazinski. Predmemorija prve razine (najbliža jezgri) tradicionalno se dijeli na dvije (obično jednake) polovice: predmemorija instrukcija (L1I) i predmemorija podataka (L1D). Ovu podjelu predviđa takozvana “harvardska arhitektura” procesora, koja je danas najpopularniji teorijski razvoj za izgradnju modernih CPU-a. U L1I se, prema tome, akumuliraju samo naredbe (dekoder radi s njim, vidi dolje), au L1D se akumuliraju samo podaci (oni naknadno, u pravilu, završavaju u internim registrima procesora). "Iznad L1" nalazi se predmemorija druge razine - L2. U pravilu je većeg volumena i već je "pomiješan" - tamo se nalaze i naredbe i podaci. L3 (treća razina predmemorije) u pravilu potpuno ponavlja strukturu L2 i rijetko se nalazi u modernim x86 CPU-ima. Najčešće je L3 plod kompromisa: korištenjem sporije i uže sabirnice može se učiniti vrlo velikim, ali u isto vrijeme L3 brzina i dalje ostaje veća od brzine memorije (iako ne tako visoka kao L2 predmemorija ). Međutim, algoritam za rad s predmemorijom na više razina općenito se ne razlikuje od algoritma za rad s predmemorijom s jednom razinom, samo dodaje dodatne iteracije: prvo se informacije traže u L1, ako ih nema - u L2, zatim - u L3, i tek tada, ako se ne pronađe na jednoj razini predmemorije - pristupa se glavnoj memoriji (RAM).

Dekoder

Zapravo, izvršne jedinice svih modernih stolnih x86 procesora... uopće ne rade s kodom u x86 standardu. Svaki procesor ima svoj "unutarnji" sustav naredbi, koji nema ništa zajedničko s onim naredbama (to jest "kodom") koje dolaze izvana. Općenito, naredbe koje izvršava kernel puno su jednostavnije, primitivnije od naredbi x86 standarda. Upravo kako bi procesor "izvana izgledao" kao x86 CPU, postoji takav blok kao što je dekoder: on je odgovoran za pretvaranje "vanjskog" x86 koda u "unutarnje" naredbe koje izvršava kernel (u ovom slučaju, vrlo često se jedna naredba x86 koda pretvara u nešto jednostavniji "interni"). Dekoder je vrlo važan dio modernog procesora: njegova brzina određuje koliko će konstantan biti tok naredbi koje stižu do izvršnih jedinica. Uostalom, ne mogu raditi s x86 kodom, pa hoće li nešto raditi ili biti u stanju mirovanja uvelike ovisi o brzini dekodera. Intel je implementirao prilično neobičan način za ubrzavanje procesa dekodiranja naredbi u procesorima NetBurst arhitekture - pogledajte dolje o Trace cacheu.

Izvršni (funkcionalni) uređaji

Prošavši sve razine predmemorije i dekoder, naredbe konačno stižu do onih blokova zbog kojih je sav ovaj kaos organiziran: izvodeći uređaja. Zapravo, to su sprave za izvršenje jedini nužni element procesor. Možete i bez predmemorije - brzina će se smanjiti, ali programi će raditi. Možete i bez dekodera - izvršni uređaji će postati složeniji, ali procesor će i dalje raditi. Uostalom, rani x86 procesori (i8086, i80186, 286, 386, 486, Am5x86) nekako su uspijevali bez dekodera. Nemoguće je bez izvršnih uređaja, jer oni su ti koji izvršavaju programski kod. U prvoj aproksimaciji, oni se tradicionalno dijele na dva velike skupine: Aritmetičko-logičke jedinice (ALU) i jedinica s pomičnim zarezom (FPU).

Aritmetičko-logički uređaji

ALU-ovi su tradicionalno odgovorni za dvije vrste operacija: aritmetičke operacije (zbrajanje, oduzimanje, množenje, dijeljenje) s cijelim brojevima, logičke operacije s opet cijelim brojevima (logičko "i", logičko "ili", "isključivo ili" i slično). Što, zapravo, proizlazi iz njihovog naziva. U suvremenim procesorima u pravilu postoji nekoliko ALU jedinica. Za što - shvatit ćete kasnije, nakon čitanja odjeljka "Superskalarnost i izvršavanje naredbi izvan reda". Jasno je da ALU može izvršavati samo one instrukcije koje su joj namijenjene. Poseban blok odgovoran je za distribuciju naredbi koje dolaze iz dekodera na različite izvršne uređaje, ali to su, kako kažu, "previše složene stvari" i teško da ih ima smisla objašnjavati u materijalu koji je posvećen samo površnom poznavanju osnovni principi rada modernog x86 CPU-a.

Jedinica s pomičnim zarezom*

FPU je odgovoran za izvršavanje naredbi koje rade s brojevima s pomičnim zarezom, osim toga, tradicionalno "vješaju sve pse" na njega u obliku svih vrsta dodatnih skupova naredbi (MMX, 3DNow!, SSE, SSE2, SSE3.. .) - neovisno o tome rade li s brojevima s pomičnim zarezom ili cijelim brojevima. Kao iu slučaju ALU, u FPU može postojati nekoliko pojedinačnih blokova koji mogu raditi paralelno.

* - prema tradiciji ruske matematičke škole, FPU nazivamo "plutajuća računska jedinica" zarez“, iako doslovno njegovo ime (Plutajući Točka Jedinica) prevodi se kao "...pokretni zarez" - prema američkom standardu za pisanje takvih brojeva.

Registri procesora

Registri su u biti iste memorijske ćelije, ali "geografski" smješteni su izravno u jezgri procesora. Naravno, brzina rada s registrima mnogo je puta veća od brzine rada s memorijskim ćelijama smještenim u glavnom RAM-u (ovdje općenito po redovima veličina...) i s predmemorijama bilo koje razine. Stoga, većina instrukcija u x86 arhitekturi uključuje izvođenje radnji posebno na sadržaju registara, a ne na sadržaju memorije. Međutim, ukupni volumen registara procesora je u pravilu vrlo mali - nije čak ni usporediv s volumenom predmemorije prve razine. Stoga, de facto programski kod (ne u jeziku visoka razina, naime binarno, “stroj”) često sadrži sljedeći slijed operacija: učitavanje informacija iz RAM-a u jedan od registara procesora, učitavanje drugih informacija (također iz RAM-a) u drugi registar, izvođenje neke akcije nad sadržajem tih registara, postavljanje rezultat u trećoj - i zatim ponovno istovariti rezultat iz registra u glavnu memoriju.

Procesor u detalje

Značajke predmemorija

Učestalost i sabirnica predmemorije

U svim modernim x86 CPU-ima, sve razine predmemorije rade na istoj frekvenciji kao i jezgra procesora, ali to nije uvijek bio slučaj (ovo je pitanje već spomenuto gore). Međutim, brzina rada s predmemorijom ne ovisi samo o frekvenciji, već io širini sabirnice kojom je povezana s jezgrom procesora. Kao što se (nadamo se) sjećate iz ranijeg čitanja, brzina prijenosa podataka je u biti umnožak frekvencije sabirnice (broj ciklusa takta u sekundi) puta broja bajtova koji se prenose duž sabirnice u jednom ciklusu takta. Broj bajtova koji se prenose po taktu može se povećati uvođenjem DDR i QDR (Double Data Rate i Quad Data Rate) protokola - ili jednostavno povećanjem širine sabirnice. U slučaju predmemorije, druga je opcija popularnija, ne samo zbog gore opisanih "ukusnih značajki" DDR/QDR-a. Naravno, minimalna razumna širina sabirnice predmemorije je širina vanjske sabirnice samog procesora, odnosno od danas - 64 bita. Upravo to čini AMD, u duhu zdravog minimalizma: u njegovim procesorima širina L1 L2 sabirnice je 64 bita, ali je istovremeno dvosmjerna, odnosno sposobna je istovremeno slati i primati informacije . Intel je ponovno postupio u duhu “zdravog gigantizma”: u svojim procesorima, počevši od Pentiuma III “Coppermine”, L1 L2 sabirnica ima širinu od... 256 bita! Prema principu "ne možete pokvariti kašu s maslacem", kako kažu. Istina, ova sabirnica je jednosmjerna, odnosno u jednom trenutku radi ili samo za prijenos ili samo za prijem. Rasprava o tome koji je pristup bolji (dvosmjerna sabirnica, ali uža, ili jednosmjerna sabirnica) traje do danas... međutim, kao i mnogi drugi sporovi koji se tiču ​​tehničkih rješenja koja koriste dva glavna konkurenta na tržištu x86 CPU-a. .

Ekskluzivna i neekskluzivna predmemorija

Koncepti ekskluzivnog i neekskluzivnog predmemoriranja vrlo su jednostavni: u slučaju neekskluzivnog predmemoriranja, informacije na svim razinama predmemoriranja mogu se duplicirati. Dakle, L2 može sadržavati podatke koji se već nalaze u L1I i L1D, a L3 (ako postoji) može sadržavati potpunu kopiju cjelokupnog sadržaja L2 (i, sukladno tome, L1I i L1D). Ekskluzivna predmemorija, za razliku od neekskluzivne, pruža jasnu razliku: ako je informacija sadržana na nekoj razini predmemorije, tada nije prisutna ni na jednoj drugoj. Prednost ekskluzivne predmemorije je očita: ukupna veličina predmemoriranih informacija u ovom slučaju jednaka je ukupnom volumenu predmemorija svih razina - za razliku od neekskluzivne predmemorije, gdje veličina predmemoriranih informacija (u najgorem slučaju ) jednak je volumenu najveće razine predmemorije. Nedostatak ekskluzivne predmemorije manje je očit, ali postoji: potreban je poseban mehanizam koji nadzire stvarnu "ekskluzivnost" (na primjer, prilikom brisanja informacija iz L1 predmemorije, proces njihovog kopiranja u L2 automatski se pokreće prije toga ).

Neekskluzivnu predmemoriju tradicionalno koristi Intel; ekskluzivnu (od pojave Athlon procesora baziranih na jezgri Thunderbird) koristi AMD. Općenito, ovdje vidimo klasičnu konfrontaciju između volumena i brzine: zbog ekskluzivnosti, s istim L1/L2 volumenima, AMD dobiva veću ukupnu veličinu predmemoriranih informacija - ali zbog toga radi i sporije (kašnjenja uzrokovana prisutnošću mehanizma ekskluzivnosti). Vjerojatno treba napomenuti da Intel odnedavno kompenzira nedostatke neekskluzivnog cachea na jednostavan, glup, ali značajan način: povećanjem njegovog volumena. Za vrhunske procesore ove tvrtke, 2 MB L2 cachea gotovo je postala norma - a AMD sa svojih 128 KB L1C+L1D i maksimalnih 1 MB L2 još nije "nadmašio" ova 2 MB ni zbog ekskluzivnosti .

Osim toga, povećanje ukupnog volumena podataka u predmemoriju uvođenjem ekskluzivne arhitekture predmemorije ima smisla samo ako je dobitak u volumenu prilično velik I m. Za AMD ovo je relevantno jer... njegovi trenutni CPU-i imaju ukupni L1D+L1I volumen od 128 KB. Za Intelove procesore, čiji je L1D volumen maksimalno 32 KB, a L1I ponekad ima potpuno drugačiju strukturu (vidi o Trace cacheu), uvođenje ekskluzivne arhitekture dalo bi mnogo manje koristi.

Također postoji uobičajena zabluda da je arhitektura predmemorije Intel CPU-a "inkluzivna". Ne baš. NIJE ekskluzivno. Uključiva arhitektura to omogućuje na "nižoj" razini predmemorije Ne možete nema toga što nije na onom “višem”. Nije ekskluzivna arhitektura priznaje dupliciranje podataka na različitim razinama.

Predmemorija praćenja

Koncept Trace cachea je pohranjivanje u predmemoriju instrukcija prve razine (L1I) ne onih instrukcija koje se čitaju iz memorije, već već dekodiranih sekvenci (vidi dekoder). Dakle, ako se određena x86 instrukcija ponavlja i još uvijek je u L1I, procesorski dekoder je ne treba ponovno pretvoriti u niz instrukcija "internog koda", budući da L1I sadrži tu sekvencu u već dekodiranom obliku. Koncept Trace cache vrlo se dobro uklapa u opći koncept Intel NetBurst arhitekture, koja je usmjerena na stvaranje procesora s vrlo visokim frekvencijama jezgre. Međutim, korisnost Trace cachea za [relativno] nižefrekventne CPU-e još uvijek je upitna, budući da složenost organiziranja Trace cachea postaje usporediva sa zadatkom dizajniranja konvencionalnog brzog dekodera. Stoga, odajući počast originalnosti ideje, ipak bismo rekli da se Trace cache ne može smatrati univerzalnim rješenjem “za sve prilike”.

Superskalarnost i izvođenje instrukcija izvan reda

Glavna značajka svih modernih procesora je da su sposobni pokrenuti izvršenje ne samo naredbe koja (prema programskom kodu) treba biti izvršena u određenom trenutku, već i drugih koje slijede. Navedimo jednostavan (kanonski) primjer. Izvršimo sljedeći niz naredbi:

1) A = B + C
2) Z = X + Y
3) K = A + Z

Lako je vidjeti da su naredbe (1) i (2) potpuno neovisne jedna o drugoj - ne sijeku se niti u izvornim podacima (varijable B i C u prvom slučaju, X i Y u drugom), niti u mjesto rezultata (varijabla A u prvom slučaju i Z u drugom). Stoga, ako u ovom trenutku imamo više od jednog slobodnog bloka za izvršavanje, ove naredbe se mogu rasporediti među njima i izvršavati istovremeno, a ne sekvencijalno*. Dakle, ako uzmemo vrijeme izvršenja svake naredbe jednako N procesorskih ciklusa, tada bi u klasičnom slučaju izvršenje cijele sekvence trajalo N*3 takta, au slučaju paralelnog izvođenja - samo N*2 takta. (pošto se naredba (3) ne može izvršiti, bez čekanja rezultata prethodne dvije).

* - naravno, stupanj paralelizma nije beskonačan: naredbe se mogu izvršavati paralelno samo ako u određenom trenutku postoji odgovarajući broj slobodnih blokova (FU), i to upravo oni koji “razumiju” dotične naredbe. Najjednostavniji primjer: blok koji pripada ALU fizički ne može izvršiti instrukciju namijenjenu FPU. Vrijedi i obrnuto.

Zapravo, još je kompliciranije. Dakle, ako imamo sljedeći niz:

1) A = B + C
2) K = A + M
3) Z = X + Y

Tada će se promijeniti red čekanja za izvršavanje naredbi procesora! Budući da su naredbe (1) i (3) neovisne jedna o drugoj (ni u izvornim podacima ni u mjestu rezultata), mogu se izvršavati paralelno - i izvršavat će se paralelno. Ali naredba (2) će se izvršiti nakon njih (treće) - jer da bi rezultat izračuna bio točan, potrebno je da se naredba (1) izvrši prije nje. Zato se mehanizam o kojem se govori u ovom odjeljku naziva "izvršenje naredbi izvan reda" (Out-of-Order Execution, ili skraćeno "OoO"): u slučajevima kada redoslijed izvršenja ne može ni na koji način utjecati na rezultat, naredbe se šalju na izvršenje pogrešnim redoslijedom u kojem se nalaze u programskom kodu, ali u onom koji vam omogućuje postizanje maksimalnih performansi.

Sada bi vam konačno trebalo biti jasno zašto moderni CPU-i trebaju toliko izvršnih jedinica istog tipa: one daju mogućnost paralelnog izvršavanja nekoliko naredbi, koje bi se u slučaju “klasičnog” pristupa projektiranju procesora morale izvršavati redoslijedom u kojem su sadržani izvorni kod, jedan za drugim.

Procesori opremljeni mehanizmom za paralelno izvođenje nekoliko uzastopnih instrukcija obično se nazivaju “superskalarnim”. Međutim, ne podržavaju svi superskalarni procesori izvođenje izvan reda. Dakle, u prvom primjeru dovoljna nam je "jednostavna superskalarnost" (izvršavanje dvije uzastopne naredbe istovremeno) - ali u drugom primjeru ne možemo bez preuređivanja naredbi ako želimo dobiti maksimalnu izvedbu. Svi moderni x86 CPU-i imaju obje kvalitete: oni su superskalarni i podržavaju izvođenje instrukcija izvan redoslijeda. U isto vrijeme, u povijesti x86 postojali su i “jednostavni superskalari” koji nisu podržavali OoO. Na primjer, klasični desktop x86 superskalar bez OoO bio je Intel Pentium.

Da budemo pošteni, vrijedno je napomenuti da niti Intel, niti AMD, niti bilo koji drugi (uključujući sada pokojnog) proizvođač x86 CPU-a nema nikakve zasluge u razvoju koncepata superskalarnosti i OoO. Prvo superskalarno računalo koje podržava OoO razvio je Seymour Cray još 60-ih godina 20. stoljeća. Za usporedbu: Intel je svoj prvi superskalarni procesor (Pentium) izdao 1993., prvi superskalar s OoO (Pentium Pro) - 1995.; AMD-ov prvi OoO superskalar (K5) objavljen je 1996. Komentari su, kako kažu, nepotrebni...

Preliminarno (unaprijed) dekodiranje
i predmemoriranje

Predviđanje grane

Svaki više ili manje složen program sadrži naredbe uvjetnog skoka: "Ako je određeni uvjet istinit, idite na izvršenje jednog dijela koda, ako nije, idite na drugi." Sa stajališta brzine izvršavanja programskog koda od strane modernog procesora koji podržava izvršavanje izvan redoslijeda, svaka naredba uvjetnog skoka doista je bič Božji. Uostalom, sve dok ne postane poznato koji će dio koda nakon uvjetnog skoka biti "relevantan", nemoguće je započeti njegovo dekodiranje i izvršavanje (vidi izvođenje izvan reda). Kako bi se nekako pomirio koncept izvršavanja izvan reda s naredbama uvjetnog skoka, namijenjen je poseban blok: blok predviđanja grananja. Kao što mu ime govori, u biti se bavi "proročanstvima": pokušava predvidjeti na koji će dio koda pokazati naredba uvjetnog skoka, čak i prije nego što se izvrši. U skladu s uputama "običnog unutarjezgrenog proroka", procesor izvodi vrlo stvarne radnje: "prorečeni" dio koda učitava se u predmemoriju (ako nije tamo), pa čak počinje dekodirati i izvršavati svoje naredbe . Štoviše, među izvršenim naredbama mogu biti i uvjetne instrukcije skoka, a njihovi se rezultati također predviđaju, što generira cijeli lanac još nije provjereno predviđanja! Naravno, ako je jedinica za predviđanje grananja pogrešna, sav posao obavljen u skladu s njenim predviđanjima jednostavno se poništava.

Zapravo, algoritmi koje koristi jedinica za predviđanje grana uopće nisu remek-djela umjetne inteligencije. Uglavnom su jednostavni...i glupi. Zato što se naredba uvjetnog skoka najčešće nalazi u petljama: određeni brojač uzima vrijednost X, a nakon svakog prolaska petlje, vrijednost brojača se smanjuje za jedan. Prema tome, sve dok je vrijednost brojača veća od nule, provodi se prijelaz na početak petlje, a nakon što postane jednaka nuli, izvršavanje se nastavlja dalje. Blok predviđanja grananja jednostavno analizira rezultat izvršavanja naredbe uvjetnog skoka i vjeruje da ako je N puta zaredom rezultat skok na određenu adresu, tada će u N+1 slučaju biti napravljen skok na istu adresu. Međutim, unatoč svom primitivizmu, ova shema radi sasvim dobro: na primjer, ako brojač ima vrijednost 100, a "prag rada" prediktora grananja (N) jednak je dvama prijelazima u nizu na istu adresu - lako je vidjeti da će 97 prijelaza od 98 biti točno predviđeno!

Naravno, usprkos prilično visokoj učinkovitosti jednostavnih algoritama, mehanizmi predviđanja grananja u modernim CPU-ima i dalje se stalno poboljšavaju i postaju sve složeniji - ali ovdje govorimo o borbi za jedinice postotka: na primjer, za povećanje učinkovitosti jedinica za predviđanje grana s 95 posto na 97, ili čak s 97 posto na 99...

Prethodno dohvaćanje podataka

Blok prethodnog dohvaćanja podataka (Prefetch) po svom je principu rada vrlo sličan bloku predviđanja grananja - jedina razlika je što u ovom slučaju ne govorimo o kodu, već o podacima. Općenito načelo rada je isto: ako ugrađeni sklop za analizu pristupa podacima u RAM-u odluči da će se uskoro pristupiti određenom memorijskom dijelu koji još nije učitan u predmemoriju, daje naredbu za učitavanje tog memorijskog odjeljka u predmemoriju čak i prije nego što bude potrebna izvršnom programu. “Pametno” (učinkovito) radna jedinica za preddohvaćanje može značajno smanjiti vrijeme pristupa potrebnim podacima, a time i povećati brzinu izvršavanja programa. Usput: kompetentan Prefetch vrlo dobro kompenzira visoku latenciju memorijskog podsustava, učitava potrebne podatke u predmemoriju i time izravnava kašnjenja pri pristupu, ako nije u predmemorij, već u glavni RAM .

Međutim, naravno, u slučaju pogreške u jedinici za prethodno dohvaćanje podataka, negativne posljedice su neizbježne: učitavanjem de facto "nepotrebnih" podataka u predmemoriju, Prefetch istiskuje druge iz nje (možda samo one koji su potrebni). Osim toga, “predviđanjem” operacije čitanja stvara se dodatno opterećenje memorijskog kontrolera (de facto, u slučaju greške, potpuno beskoristan).

Algoritmi prethodnog dohvaćanja, kao i algoritmi bloka predviđanja grananja, također ne blistaju inteligencijom: u pravilu, ovaj blok nastoji pratiti jesu li informacije pročitane iz memorije s određenim "korakom" (po adresi), a na temelju te analize , pokušava predvidjeti s koje adrese će se podaci čitati tijekom daljnjeg rada programa. Međutim, kao i u slučaju bloka predviđanja grananja, jednostavnost algoritma uopće ne znači nisku učinkovitost: u prosjeku, blok prethodnog dohvaćanja podataka češće "pogađa" nego što čini pogreške (i to, kao i u prethodnom slučaju , prvenstveno zbog činjenice da se "masivno" čitanje podataka iz memorije, u pravilu, događa tijekom izvođenja različitih ciklusa).

Zaključak

Ja sam onaj zec koji ne može početi žvakati travu dok...
neće razumjeti u svim detaljima kako se odvija proces fotosinteze!
(osobni stav jednog od autorovih bliskih prijatelja)

Sasvim je moguće da se osjećaji koje ste imali nakon čitanja ovog članka mogu opisati otprilike ovako: “Umjesto da prstima objasne koji je procesor bolji, uzeli su i napunili moj mozak hrpom specifičnih informacija koje tek treba razumjeti i razumio, i nema kraja na vidiku!” Sasvim normalna reakcija: vjeruj mi, dobro te razumijemo. Recimo još više (i neka vam kruna padne s glave!): ako mislite da mi sami možemo odgovoriti na ovo jednostavno pitanje ("koji je procesor bolji?") - onda se jako varate. Ne mogu. Za neke zadatke bolji je jedan, za druge - drugi, pa onda drugačija cijena, dostupnost, naklonost pojedinog korisnika određenim markama... Problem nema jasno rješenje. Da jest, sigurno bi ga netko pronašao i postao najpoznatiji promatrač u povijesti neovisnih laboratorija za ispitivanje.

Još jednom želim naglasiti: Čak i nakon što ste u potpunosti usvojili i razumjeli sve informacije predstavljene u ovom materijalu, još uvijek nećete moći predvidjeti koji će od dva procesora biti brži u vašim zadacima, gledajući samo njihove karakteristike. Prvo, jer ovdje nisu uzete u obzir sve karakteristike procesora. Drugo, jer postoje i CPU parametri koji se mogu prikazati samo u numeričkom obliku s vrlo velikom nategom. Pa za koga (i za što) je sve ovo napisano? Uglavnom - za te iste "zečeve" koji svakako žele znati što se događa unutar uređaja koje svakodnevno koriste. Za što? Možda se samo bolje osjećaju kad znaju što se oko njih događa? :)

U bliskoj budućnosti postoje planovi za proširenje FAQ:

  1. Sekcija posvećena višeprocesorskim sustavima: objašnjenje pojma SMP, Hyper-Threading tehnologija, N-procesiranje, N-core.
  2. Odjeljak posvećen fizičke karakteristike CPU: vrste kućišta, utičnice, potrošnja energije itd.

Danas nitko neće biti iznenađen činjenicom da omiljena obiteljska fotografija, pohranjena i zaštićena od podmuklih iznenađenja u obliku, na primjer, vode od nesretnih susjeda na najvišem katu koji su zaboravili zatvoriti slavinu, može predstavljati neku vrstu nerazumljivog skupa brojeva i, u isto vrijeme, ostaju obiteljska fotografija. Kućno računalo postala je uobičajena kao i "kutija" s plavim ekranom. Ne bih se iznenadio da se uskoro kućno računalo bude smatralo ravnopravnim kućanskim električnim uređajima. Usput, "motor napretka", svima poznat, ono je što nam Intel proriče, promičući ideju digitalnog doma.
Dakle, osobno računalo je pronašlo svoju nišu u svim sferama ljudskog života. Njegova pojava i nastanak kao sastavnog elementa načina života već je postala povijest. Kada govorimo o osobnim računalima, mislimo na IBM PC-kompatibilne sustave, i to s pravom. Malo je čitatelja ikada vlastitim očima vidjelo sustav koji nije IBM-ov PC-kompatibilan, a još manje korišten.

Sva IBM PC i kompatibilna računala temelje se na x86 procesorima. Iskreno, ponekad mi se čini da to nije samo arhitektura procesora, već arhitektura cijelog računala, poput ideologije strukture sustava u cjelini. Teško je reći tko je koga povukao za sobom, jesu li se developeri periferne opreme i finalnih proizvoda prilagodili x86 arhitekturi ili su pak izravno ili neizravno krojili razvojni put x86 procesora. Povijest x86 nije glatka asfaltna staza, već skup razvojnih koraka različitih stupnjeva ozbiljnosti i genijalnosti, snažno isprepletenih s ekonomskim čimbenicima. Poznavanje povijesti x86 procesora uopće nije potrebno. Uspoređivati ​​procesor današnje stvarnosti s njegovim davnim precima jednostavno je besmisleno. No, kako bismo pratili opće trendove razvoja i pokušali napraviti prognozu, potreban je izlet u povijesnu prošlost x86 arhitekture. Naravno, ozbiljno povijesno djelo može imati više od jednog sveska i besmisleno je tvrditi da je tema objektivna i široka. Stoga nećemo ulaziti u peripetije “životnog vijeka” svake generacije x86 procesora, već ćemo se ograničiti na najvažnije događaje u cijeloj x86 epopeji.

1968. godine
Četiri zaposlenika tvrtke Fairchild Semiconductor: Bob Noyce, menadžer i izumitelj integriranog sklopa 1959., Gordon Moore, koji je vodio istraživanje i razvoj, Andy Grove, stručnjak za kemijski inženjering, i Arthur Rock, koji je pružio financijsku potporu, osnovali su Intel. Ovo ime potječe od Integral Electronic.



1969. godine
Bivši direktor marketinškog odjela Fairchild Semiconductora Jerry Sanders i nekoliko njegovih istomišljenika osnovali su tvrtku AMD (Advanced Micro Devices) koja je počela proizvoditi mikroelektroničke uređaje.

1971. godine
Prilikom ispunjavanja jedne od narudžbi za RAM čipove, Intelov zaposlenik Ted Hoff predložio je stvaranje univerzalnog "pametnog" IC-a. Razvoj je vodio Federico Fagin. Kao rezultat, rođen je prvi mikroprocesor, Intel 4004.

1978. godine
Čitavo razdoblje prije ovoga je pretpovijest, iako neodvojiva od događaja koji su se dogodili poslije. Ove godine započela je x86 era - Intel je stvorio mikroprocesor i8086, koji je imao frekvencije od 4.77.8 i 10 MHz. Smiješne frekvencije? Da, to su frekvencije modernih kalkulatora, ali ovdje je sve počelo. Čip je proizveden korištenjem 3-μm tehnologije i imao je unutarnji 16-bitni dizajn i 16-bitnu sabirnicu. Odnosno, pojavila se 16-bitna podrška i, posljedično, 16-bitni operativni sustavi i programi.
Nešto kasnije, iste godine, razvijen je i8088, čija je glavna razlika bila 8-bitna vanjska podatkovna sabirnica, osiguravajući kompatibilnost s 8-bitnim hardverom i memorijom koja se ranije koristila. Također, argument u njegovu korist bila je kompatibilnost s i8080/8085 i Z-80, te relativno niska cijena. Bilo kako bilo, IBM je izabrao i8088 kao CPU za svoje prvo računalo. Od tada će Intelov procesor postati sastavni dio osobno računalo, a samo računalo dugo će se zvati IBM PC.

1982. godine
i80286 najavljeno. "Dvjesto osamdeset šesti" postao je prvi x86 procesor koji je prodro u sovjetski i postsovjetski prostor veliki iznos. Frekvencije takta od 6, 8, 10 i 12 MHz, proizvedene 1,5-μm procesnom tehnologijom i sadržavale su oko 130.000 tranzistora. Ovaj čip je imao punu 16-bitnu podršku. Po prvi put, s pojavom i80286, pojavio se takav koncept kao "zaštićeni način rada", ali tada programeri softvera nisu u potpunosti iskoristili njegove mogućnosti. Procesor je mogao adresirati više od 1 MB memorije prebacivanjem u zaštićeni način rada, ali je bilo moguće vratiti se nakon potpunog ponovnog pokretanja, a segmentirana organizacija pristupa memoriji zahtijevala je značajan dodatni napor pri pisanju programskog koda. To je dovelo do činjenice da je i80286 korišten više kao brzi i8086.

Performanse čipa u usporedbi s 8086 (a posebno u usporedbi s i8088) porasle su nekoliko puta i dosegle 2,6 milijuna operacija u sekundi. Tih su godina proizvođači počeli aktivno koristiti otvorenu arhitekturu IBM PC-a. U isto vrijeme počelo je razdoblje kloniranja x86 procesora iz Intela od strane proizvođača trećih strana. Odnosno, čip su proizvele druge tvrtke kao točnu kopiju. Intel 80286 postao je temelj najnovijeg računala po tim standardima, IBM PC/AT, i njegovih brojnih klonova. Glavne prednosti novog procesora bile su povećana produktivnost i dodatni načini adresiranja. I što je najvažnije - kompatibilnost s postojećim softverom. Naravno, procesor je licenciran i od strane trećih proizvođača...
Iste godine AMD je sklopio licencni ugovor s Intelom i na temelju njega započeo proizvodnju klonova x86 procesora.

1985. godine
Ove godine dogodio se možda i najznačajniji događaj u povijesti procesora s x86 arhitekturom - Intel je objavio prvi procesor i80386. Bio je, moglo bi se reći, revolucionaran: 32-bitni multitasking procesor s mogućnošću istovremenog izvršavanja nekoliko programa. U biti, većina modernih procesora nije ništa više od brzih 386 procesora. Moderni softver koristi istu 386 arhitekturu, samo što moderni procesori rade istu stvar, samo brže. Intel 386™ bio je veliki napredak u odnosu na i8086 i i80286. U biti, većina modernih procesora nije ništa više od brzih 386 procesora. Moderni softver koristi istu 386 arhitekturu, samo što moderni procesori rade istu stvar, samo brže. Intel 386™ bio je veliki napredak u odnosu na i8086 i i80286. Intel 386™ je značajno poboljšao upravljanje memorijom u usporedbi s i80286, a ugrađene mogućnosti multitaskinga omogućile su razvoj operacijski sustav Microsoft Windows i OS/2.

Za razliku od i80286, Intel 386™ se mogao slobodno prebacivati ​​iz zaštićenog načina rada u stvarni način rada i natrag i imao je novi način rada - virtualni 8086. U ovom načinu rada procesor je mogao izvršavati nekoliko različitih softverskih niti istovremeno, budući da je svaka od njih radila na izolirani “virtualni” 86. automobil. Procesor je uveo dodatne načine adresiranja memorije s promjenjivom duljinom segmenta, što je uvelike pojednostavilo izradu aplikacija. Procesor je proizveden 1-mikronskim tehnološkim postupkom. Prvi put je Intelov procesor predstavljen u nekoliko modela koji su činili obitelj 386. Tu počinje poznata Intelova marketinška igra koja je kasnije rezultirala podjelom jedne razvijene jezgre u dvije komercijalne varijante, u određenom krugu korisnika i stručnjaka nazvanih: “Pentium za bogate, Celeron za siromašne”. Iako je ovdje loše to što su vukovi dobro uhranjeni, a ovce sigurne.
Izdani su sljedeći modeli:

386DX na 16, 20, 25 i 33 MHz imao je 4 GB adresibilne memorije;
386SX s frekvencijom od 16, 20, 25 i 33 MHz, za razliku od 386DX, imao je 16, a ne 32-bitnu sabirnicu podataka, i sukladno tome 16 MB adresabilne memorije (na sličan način, svojedobno je procesor i8088 bio “stvoren” iz i8086 smanjenjem širine bita vanjske sabirnice kako bi se osigurala kompatibilnost s postojećim vanjskim uređajima);
386SL u listopadu 1990. - mobilna verzija Intel 386SX procesor s frekvencijom od 20 i 25 MHz.

1989. godine
Intel Corporation izdaje svoj sljedeći procesor - Intel 486™ DX s frekvencijama od 25, 33 i 50 MHz. Intel 486™ DX bio je prvi procesor u obitelji 486 i imao je značajno (više od 2x na istoj frekvenciji) povećanje performansi u usporedbi s obitelji 386. Dodao je predmemoriju od 8 KB L1 integriranu u čip i maksimalnu veličinu L2 predmemorija povećana na 512 Kb. i486DX integrirao je jedinicu s pomičnim zarezom (FPU - Floating Point Unit), koji je prije radio kao vanjski matematički koprocesor instaliran na matičnoj ploči. Osim toga, ovo je prvi procesor čija je jezgra sadržavala cjevovod od pet stupnjeva. Dakle, naredba koja je prošla prvu fazu cjevovoda, a nastavila se obrađivati ​​na drugoj, oslobodila je prvu za slijedeći upute. U svojoj srži, procesor Intel 486™DX bio je brzi Intel 386DX™ u kombinaciji s matematičkim koprocesorom i 8 KB predmemorije na jednom čipu. Ova integracija omogućila je povećanje brzine komunikacije između blokova na vrlo visoke vrijednosti.
Intel je pokrenuo reklamnu kampanju sa sloganom “Intel: The Computer Inside”. Vrijeme će proći i pretvorit će se u poznatu reklamnu kampanju "Intel Inside".

1991. godine
Stvoren je AMD-ov vlastiti procesor - Am386™. Ovaj je izrađen dijelom prema licenci, a dijelom prema vlastitom dizajnu i radio je na maksimalnoj frekvenciji od 40 MHz, što je bilo više od frekvencije Intelovog procesora.
Nešto ranije je došlo do prvog sudskog spora između Intela i AMD-a u vezi s namjerom AMD-a da proda svoj Intel 386™ klon. Nakon što je čvrsto ojačao svoju poziciju, Intel više nije trebao distribuirati licence trećim proizvođačima i nije namjeravao ni s kim dijeliti vlastiti kolač. Kao rezultat toga, AMD je prvi put ušao na tržište x86 procesora kao konkurent. Druge tvrtke slijedile su primjer. Tako je započeo veliki sukob između dva diva koji traje do danas (ostali su konkurenti odustali), koji je svijetu dao puno dobra. Neizgovoreni slogan Intelovi konkurenti postao izraz: "isto kao Intel, ali po nižoj cijeni."
U isto vrijeme, Intel izdaje i486SX, u kojem, kako bi se smanjio trošak proizvoda, nema FPU jedinice (integrirani koprocesor), što je, naravno, imalo negativan utjecaj na performanse. Nije bilo drugih razlika u odnosu na i486DX.

1992. godine
Izlaskom procesora Intel 486DX2 prvi je put korišten faktor množenja frekvencije sabirnice. Do ove točke je interna frekvencija jezgre bila jednaka frekvenciji vanjske podatkovne sabirnice (FSB), ali pojavio se problem njezinog povećanja, budući da su lokalne periferne sabirnice (u to vrijeme VESA VL-sabirnica), pa čak i periferije pokazao nestabilnost na frekvencijama većim od 33 MHz. Sada, s frekvencijom FSB sabirnice od 33 MHz, frekvencija takta jezgre bila je 66 MHz zbog množenja s 2. Ova tehnika je dugo ušla u povijest i koristi se danas, samo množitelj u modernim CPU-ima može premašiti 20. Intel 486™ DX2 dugo je postao popularan procesor i prodavao se u ogromnim količinama, međutim, kao i njegovi klonovi od konkurenata (AMD, Cyrix i drugi), koji su sada već imali neke razlike od “Intelovog originala”.

1993. godine
Izdan je prvi superskalarni x86 procesor, koji može izvršavati više od jedne instrukcije po taktu - Pentium (kodnog naziva P5). To je postignuto s dva neovisna paralelna transportera. Prvi procesori imali su frekvencije od 60 i 66 MHz i dobili su 64-bitnu sabirnicu podataka. Po prvi put L1 predmemorija podijeljena je u dva dijela: odvojeni za upute i podatke. Ali jedna od najznačajnijih inovacija bila je potpuno ažurirana jedinica s pomičnim zarezom (FPU). Zapravo, prije toga nikada nije postojao tako moćan FPU na x86 platformi, a tek mnogo godina nakon izdavanja Intel Pentiuma konkurenti su uspjeli dosegnuti njegovu razinu performansi. Također, prvi put je u procesor uključen blok za predviđanje grananja, koji su od tada inženjeri aktivno razvijali.

Suština je sljedeća: u bilo kojem programu postoji mnogo uvjetnih prijelaza, kada, ovisno o stanju, izvršavanje programa mora ići duž jedne ili druge staze. Samo jedna od nekoliko grana prijelaza može se postaviti u cjevovod, a ako završi ispunjen kodom iz pogrešne grane, tada se mora očistiti i ponovno napuniti nekoliko ciklusa takta (ovisno o broju stupnjeva cjevovoda) . Za rješavanje ovog problema koriste se mehanizmi predviđanja grananja. Procesor je sadržavao 3,1 milijun tranzistora i proizveden je postupkom od 0,8 μm. Sve te promjene omogućile su podizanje performansi novog procesora na nedostižne visine. U stvarnosti, optimizacija koda "za procesor" isprva je bila rijetka i zahtijevala je upotrebu posebnih prevoditelja. Dugo je vremena najnoviji procesor morao pokretati programe dizajnirane za procesore obitelji 486 i 386.
Iste godine pojavila se druga generacija Pentiuma na jezgri P54, u kojoj su uklonjeni svi nedostaci P5. U proizvodnji su korišteni novi tehnološki postupci od 0,6, a kasnije 0,35-μm. Novi procesor je do 1996. pokrivao taktne frekvencije od 75 do 200 MHz.
Prvi Pentium odigrao je važnu ulogu u prijelazu na nove razine performansi osobnih računala, dao poticaj i postavio smjernice razvoja za budućnost. No unatoč velikom skoku u performansama, nije donio nikakve temeljne promjene u x86 arhitekturi.

1994. godine
Novi Intel 486™DX4, AMD Am486DX4 i Cyrix 4x86 nastavili su liniju 486 i korištenje množenja frekvencije sabirnice podataka. Procesori su imali utrostručene frekvencije. Intelovi DX4 procesori radili su na 75 i 100 MHz, a AMD-ov Am486DX4 dosegao je 120 MHz. Sustavi upravljanja energijom postali su široko korišteni u procesorima. Nije bilo drugih temeljnih razlika u odnosu na 486DX2.

1995. godine
Najavljen Pentium Pro (jezgra P6). Nova procesorska sabirnica, tri neovisna cjevovoda, optimizacija za 32-bitni kod, od 256 Kb do 1 Mb L2 predmemorije integrirane u procesor, rade na frekvenciji jezgre, poboljšani mehanizam za predviđanje grananja - prema broju inovacija novi procesor gotovo oborio rekorde koje je prethodno postavio Intel Pentium.

Procesor je bio pozicioniran za korištenje u poslužiteljima i imao je vrlo visoku cijenu. Najznačajnija stvar je da računalna jezgra Pentium Pro zapravo nije bila jezgra x86 arhitekture. Strojni kodovi x86 koji ulaze u CPU bili su interno dekodirani u mikrokod sličan RISC-u, a to je ono što je izvršila jezgra procesora. CISC skup instrukcija, kao i skup instrukcija x86 procesora, podrazumijevao je promjenjivu duljinu instrukcija, što je određivalo teškoće pronalaženja svake pojedine instrukcije u toku i samim time stvaralo poteškoće u razvoju programa. CISC timovi su složeni i složeni. RISC naredbe su pojednostavljene, kratke, zahtijevaju znatno manje vremena za izvršenje naredbe fiksne duljine. Korištenje RISC instrukcija omogućuje vam značajno povećanje paralelizacije izračuna procesora, odnosno korištenje više cjevovoda i stoga smanjenje vremena izvršavanja instrukcija. Jezgra P6 bila je osnova sljedeća tri Intelova procesora - Pentium II, Celeron, Pentium III.
Ove godine također je zabilježen značajan događaj - AMD je kupio NexGen, koji je do tada imao napredan razvoj arhitekture. Spajanje dvaju inženjerskih timova kasnije će svijetu donijeti x86 procesore s mikroarhitekturom različitom od Intelove i dati poticaj novom krugu oštre konkurencije.
Novi procesor MediaGX iz Cyrixa premijerno je predstavljen na Microprocessor Forumu, a prepoznatljivost mu je integrirani memorijski kontroler, grafički akcelerator, sučelje PCI sabirnice i performanse usporedive s onima Pentiuma. Ovo je bio prvi pokušaj tako uske integracije uređaja.

1996. godine
Pojavio se novi AMD K5 procesor sa superskalarnom RISC jezgrom. Međutim, RISC jezgra i njezin skup instrukcija (ROP instrukcije) skriveni su od softvera i krajnjeg korisnika, a x86 instrukcije se pretvaraju u RISC instrukcije. Inženjeri AMD-a koristili su jedinstveno rješenje - x86 instrukcije se djelomično konvertiraju dok se smještaju u predmemoriju procesora. U idealnom slučaju, procesor K5 može izvršiti do četiri x86 instrukcije po ciklusu takta, ali u praksi se u prosjeku obrađuju samo 2 instrukcije po ciklusu takta.

Osim toga, promjene u redoslijedu izračuna, preimenovanje registara i drugi "trikovi" tradicionalni za RISC procesore mogu povećati performanse. Procesor K5 bio je zamisao zajedničkog tima inženjera iz tvrtki AMD i NexGen. Maksimalna brzina takta nikada nije premašila 116 MHz, ali performanse K5 bile su veće od performansi Pentium procesora s istom brzinom takta. Stoga je u marketinške svrhe po prvi put u praksi označavanja CPU-a korišten Performance Rating, koji je bio u jasnom kontrastu s radnim taktom Pentiuma, koji je bio jednak u performansama. Ali procesor se još uvijek nije mogao adekvatno natjecati s njim, jer je Pentium već dosegao frekvenciju od 166 MHz.
Iste godine izdan je Intel Pentium MMX. Glavna inovacija procesora P55C su dodatne MXX instrukcije u skupu instrukcija, koje nisu pretrpjele gotovo nikakve promjene od stvaranja procesora treće generacije. MMX tehnologija je korištenje naredbi usmjerenih na rad s multimedijskim podacima. Poseban skup SIMD (Single Instruction - Multiple Data) naredbi poboljšava performanse prilikom izvršavanja vektorskih, cikličkih naredbi i obrade velikih količina podataka - prilikom primjene grafičkih filtara i raznih specijalnih efekata.

U biti ovo je 57 novih uputa osmišljenih da ubrzaju video i audio obradu. Ostatak promjena u jezgri odnosio se na tipično povećanje cache memorije, poboljšanje rada cache memorije i drugih blokova. Procesor je proizveden postupkom od 0,35 mikrona, 4,5 milijuna tranzistora. Maksimalna frekvencija 233 MHz.
Započela je proizvodnja superskalarnih procesora Cyrix 6x86 na jezgri M1, koja je zapravo bila procesor 5. generacije, čija su posebnost bili “duboki” cjevovodi i korištenje klasičnih x86 instrukcija bez dodatnih skupova instrukcija.
Krajem godine, dok je Intel razvijao PentiumII, AMD se ponovno oglasio izdavanjem šeste generacije procesora K6. AMD-K6 temelji se na jezgri koju su razvili inženjeri NexGena za procesor Nx686 i koju je AMD značajno modificirao. Kao i K5, jezgra K6 nije radila s x86 uputama, već s mikrokodom sličnim RISC-u. Procesor je podržavao MMX naredbe i sistemsku sabirnicu od 100 MHz i imao je L1 predmemoriju povećanu na 64 KB. Ubrzo je postalo jasno da bi PentiumII bio pretvrd za K6.

od 1997 do danas...
Do 1997. smjerovi inženjerskog razvoja x86 arhitekture vodećih proizvođača već su bili razvijeni. Sljedeća faza u razvoju x86 procesora može se okarakterizirati kao sukob između arhitektura, koji traje do danas. U utrku je u velikoj mjeri ušao Intel koji je zauzeo 90% tržišta, AMD se tvrdoglavo bori s njime, višestruko gubi na proizvodnim kapacitetima, te Cyrix, kojeg će kasnije kupiti VIA, a onda, ne mogavši ​​izdržati natjecanja, potonut će u mrak. Ostali proizvođači neće se moći adekvatno natjecati i bit će prisiljeni tražiti druge niše na tržištu. Planiran je prijelaz s CISC na mikroinstrukcije slične RISC-u, u manjoj mjeri za Intel, a više za AMD. Štoviše, CISC naredbe i dalje dolaze na ulaz i izlaz x86 procesora. Zašto su, zapravo, počeli uvoditi internu RISC arhitekturu u x86 procesore s njezinom izvornom CISC arhitekturom, koja omogućuje dublju paralelizaciju izvršavanja naredbi? Da, samo iz CISC x86 arhitekture unatrag četvrta generacija sve je istisnuto i više nije bilo načina za poboljšanje performansi na razini osnovnih skupova instrukcija.

Od tada nije bilo suštinski novih promjena ili proboja u razvoju arhitekture, iako su moderni procesori stotinama puta brži, na primjer, 386. Inženjeri bruse i poboljšavaju postojeće osnovne mikroarhitekture, a nove su samo prerađene stare. Sva poboljšanja i pokušaji povećanja performansi svode se na optimizaciju postojećih rješenja, uvođenje raznih popravaka i "štaka" za slabe FPU-ove, sustave organizacije cjevovoda i predmemorije. Otrcano, ali još uvijek učinkovito sredstvo je stalno povećavanje veličine predmemorije i frekvencije FSB sabirnice. Moderni procesori imaju do 2 MB predmemorije koja radi na frekvenciji jezgre i frekvencijama sistemske sabirnice dosegnuti 800 MHz, a zatim koristiti množitelj, budući da je stvarna generirana frekvencija samo 200 MHz. Tijekom proteklih 7 godina, sljedeće "podrške inovacije" uvedene su u x86 procesore: predmemorija se konačno preselila na procesorski čip i prenijela na frekvenciju jezgre, jedinice za predviđanje grananja su uvedene i stalno se poboljšavaju kao kompenzacija za povećanje duljine (broja faza) cjevovoda, mehanizam dinamičke promjene redoslijeda izvršavanja instrukcija, smanjenje broja ciklusa mirovanja, mehanizam prethodnog dohvaćanja podataka za racionalnije korištenje predmemorije. Dodatni skupovi naredbi se povećavaju: SSE, SSE2, SSE3, 3DNow!, 3DNow Professional. Ako se MMX još uvijek može nazvati, uz rastezanje, dodatnim skupom x86 instrukcija, onda su svi sljedeći skupovi malo vjerojatni, budući da se više nema što dodati x86 instrukcijama. Poanta pojave ovih skupova je nastojanje da se što manje koristi jedinica s pomičnim zarezom (FPU) u obliku u kojem jest, budući da, iako ima visoke performanse, karakterizira je niska prilagodljivost za visoku preciznost izračune, hirovitost unutarnje arhitekture i njezinu nepredvidljivost, što otežava život programerima. To jest, zapravo su uveli specijaliziranu jedinicu za izračun, usmjerenu ne na izračune općenito, već na stvarne, često susrećene zadatke, za koje se predlaže da se izvode zaobilazeći klasični FPU.

Nekako više izgleda kao borba s posljedicama integracije matematičkog koprocesora u CPU davne 1989. godine. U svakom slučaju, ako razmislite o tome i računate, procesor većinu vremena troši "na sebe" - na sve vrste transformacija, predviđanja i još mnogo toga, a ne na izvršavanje programskog koda.
Gledajući unatrag, jasno je da nije sve bilo glatko. Uvođenje faktora množenja i rezultirajuća asinkronija, kao i povećanje broja stupnjeva cjevovoda, dvosjekli su mačevi. S jedne strane, to je omogućilo povećanje takta procesora na gotovo 4 GHz (i to nije granica), s druge strane, dobili smo usko grlo u obliku FSB sabirnice i problem s uvjetnim granama . No, sve ima svoje vrijeme, a onda su to, očito, bile razumne odluke, jer uvijek je prisutan jako zao ekonomski faktor.
Valja napomenuti da su posljednjih godina u području proizvodnje poluvodiča postignuti doista briljantni uspjesi. Već je savladan 90-nanometarski tehnološki proces za proizvodnju x86 procesora, koji omogućuje dostizanje blizu mikrovalnog raspona taktne frekvencije, a broj tranzistora u kristalu doseže 170 milijuna (Pentium 4 EE).
Navikli smo misliti da je procesor glavni uređaj u računalu i da daje ton globalnoj informatizaciji. Ali pobjednički marš arhitekture x86, koji je trajao više od četvrt stoljeća, nije započeo konkretno s procesorom, već s krajnjim korisničkim uređajem u cjelini - IBM PC-om. U to vrijeme IBM nije imao pojma kakva briljantna budućnost čeka ovo računalo i, ne pridajući nikakvu važnost projektu, učinili su ga otvorenim za sve. Za uspjeh IBM PC-a zaslužna je otvorenost koncepta, uspjeh softvera i MS DOS-a. A procesor u njemu mogao je biti bilo koje arhitekture, ali slučajno je IBM odabrao i8088 i i8086, a onda se sve vrtjelo i vrtjelo... Ali x86 procesor na kraju nije ispao nekakav univerzalno računalo za sve prilike ili “pametni” uređaj, sveprisutan i sposoban učiniti sve, o kakvom smo prije sanjali. A “zakon” Gordona Moorea (svake 2 godine udvostručit će se broj tranzistora u procesorskom čipu) postao je zakon samo za Intel, koji ga je stavio na čelo svoje marketinške politike, i očito mu je nezgodno odbijati tu riječ .

Danas možemo čvrsto reći da je x86 arhitektura zašla u slijepu ulicu. Njezin doprinos popularizaciji računala kao uređaja je ogroman i nitko se s tim ne osporava. Međutim, ne možete biti relevantni zauvijek. Nekoć mlad i jak pastuh postao je stari gnjavac koji se i dalje upregne u kola. Apetiti korisnika su nezasitni i uskoro ih x86 arhitektura neće moći zadovoljiti. Naravno, tranzicija je povezana s herkulovskim naporima zbog činjenice da svjetska višemilijunska PC flota u svojoj gotovo apsolutnoj većini koristi procesore x86 arhitekture, i što je najvažnije, koristi softver za x86 kod. Ne možete sve preokrenuti u jednom danu; potrebne su godine. No, razvoj 64-bitnih procesora i programa uzima zavidnom brzinom, Intel je predstavio Itanium2, a AMD već gotovo godinu dana izbacuje svoj Athlon 64 koji uopće nemaju x86 arhitekturu, iako su potpuno kompatibilan s njim i još uvijek može pokretati sve stare programe. Dakle, možemo reći da je AMD Athlon 64 označio početak odstupanja od x86 arhitekture i time otvorio prijelazno razdoblje.
Kao što vidite, tvrdnje da je procesor najbrže rastuća komponenta osobnog računala daleko su od neutemeljenih. Zamislite kakvim će procesorima biti opremljena računala naše djece. Strašno je i pomisliti!

U Odnoklassniki