Računar sa složenim skupom instrukcija

S Vikipedije, slobodne enciklopedije

Računar sa složenim skupom instrukcija (CISC) je računar gde jedna instrukcija može da izvrši nekoliko operacija niskog-nivoa (kao što su učitavanje iz memorije, aritmetičke operacije i memorijsko skladište) i/ili su u stanju da urade operacije sa više koraka ili režime adresiranja unutar pojedinačnih instrukcija. Termin je dat retroaktivno za razliku od računara sa smanjenim skupom instrukcija (RISC).[1][2]

Primeri CISC skupa instrukcija arhitektura su System/360 kroz z/Architecture, PDP-11, VAX, Motorola 68k, i x86.

Istorijski kontekst dizajna[uredi | uredi izvor]

Rasplamsavanje sukoba i prednosti[uredi | uredi izvor]

Pre nego što je RISC filozofija postala istaknuta, mnogi računarski arhitekti pokušali su da premoste tzv semantički jaz, ondosno kreiranje instrukcionih skupova koji direktno podržavaju programske konstrukcije na visokom nivou, kao što su procedure poziva, kontrola petlje i složeni režimi adresiranja, što omogućava da se struktura podataka i pristup nizu kombinuju u pojedinačne instrukcije. Instrukcije su uglavnom visoko kodirane u cilju unapređenja gustine koda. Kompaktna priroda takvog instrukcionog skupa rezultuje u programe manjih veličina i manje (sporije) pristupa glavne memorije, što je u to vreme (početkom 1960-ih u dalje) rezultovalo ogromnim uštedama na troškovima za memoriju računara i skladištenje diskova, kao i brežeg izvršenja. To je značilo dobru produktivnost programiranja čak i u asemblerskom jeziku, kao i u jeziku visokog nivoa kao što su Fortran i Algol gde nisu uvek dostupni ili odgovarajući (mikroprocesori u ovoj kategoriji su i dalje ponekad programirani na asemblerskom jeziku za pojedine vrste kritičnih aplikacija).

Nove instrukcije[uredi | uredi izvor]

U 1970. godini, analiza jezika visokog nivoa pokazala je neke složene implementacije mašinskog jezika i utvrđeno je da nove instrukcije mogu poboljšati performanse. Neke instrukcije su dodate koje nikada nisu bile namenjene da se koriste u asemblerskom jeziku, ali se dobro uklapaju sa kompajlerskim jezicima visokog nivoa. Kompajleri su ažurirani da iskoriste prednosti ovih instrukcija. Prednosti semantički bogatih instrukcija sa kompaktnim kodiranjem može se videti i u novim procesorima, posebno u segmentu visokoh performansi gde su kešovi centralne komponente (za razliku od većine ugrađenih sistema). To je zato što su ove brze, ali složene i skupe, memorije ograničene veličine, čineći kompaktan kod korisnim. Naravno, glavni razlog zašto su potrebne je taj da glavne memorije (tj. danas dinamički RAM) ostaju spore u poređenju sa (visokim performansama) CPU-jezgrom.

Pitanja dizajna[uredi | uredi izvor]

Dok mnogi dizajni postižu cilj visokog protoka po nižoj ceni i takođe omogućavaju da jezičke konstrukcije visokog nivoa budu izražene pomoću manjih instrukcija, primećeno je da to nije uvek slučaj. Na primer, na nižim krajevima verzija kompleksnih arhitektura (tj. koji koriste manje hardver) može da dođe do situacija u kojima je bilo moguće da se poboljšaju perofrmanse bez korišćenja složenih instrukcija (kao što su procedure pozivanja ili ulazna instrikcija), već umesto toga korišćenjem sekvenca jednostavnijih instrukcija.

Čak i u balansiranim dizajnima visokih performansi, visoko kodirane i (relativno) instrukcije na visokom nivou mogu biti komplikovane za dekodovanje i efikasno izvršavanje unutar ograničenog tranzistorskog budžeta. Takve arhitekture su zbog toga zahtevale mnogo rada na delu dizajna procesora u kešovima gde jednostavnije, ali (obično) sporije, rešenje bazirano na dekodovanim tabelama i/ili mikrokod sekvenciranje nije prikladno. U vreme kada su resursi za tranzistore i druge komponenete bili ograničeni, tada je takođe ostalo manje kompenenti i manje mogućnosti za druge vrste optimizacije dizajna.

CISC ideja[uredi | uredi izvor]

Kola koja obavljaju radnje definisane mikrokodom u mnogim (ali ne svim) CISC procesorima je, samo po sebi, procesor koji u mnogo čemu podseća na strukturu ranih CPU dizajna. U ranim 1970-im godinama, to je dovelo do ideje povratka jednostavnijem dizajnu procesora kako bi on mogao da se izbori bez (tada relativno velikih i skupih) ROM tabela i/ili PLA struktura za sekvenciranje i/ili dekodiranje. Prvi (retroaktivni) RISC-označeni procesor (IBM 801 - IBM's Watson Research Center, sredinom 1970-ih godina) bio je čvrsto pipelined jednostavna mašina prvobitno namenjena da se koristi kao interni mikrokod kernela, ili motora, u CISC dizajnu, ali takođe je postao procesor koji je uveo ideju RISC-a u nešto većoj javnosti. Jednostavnost i pravilnost u vidljivom skupu instrukcija olakšali su implementaciju faze preklapanja procesora (pipelining) na mašinskom nivou (tj. na nivou gledanja kompajlerom.) Međutim, pipelining na tom nivou je već korišćen u nekim CISC “superračunarima” visokih performansi u cilju smanjenja vremena ciklusa instrukcija (uprkos komplikacijama implementiranja u okviru ograničenog broja komponeneti i izvodljivosti složenih ožičenja u to vreme). Izvršenje unutrašnjeg mikrokoda u CISC procesorima, s druge strane, može biti više ili manje pipelined u zasvisnosti od određenog dizajna, i stoga više ili manje sličan osnovnoj strukturi RISC procesora.

Superskalar[uredi | uredi izvor]

U savremenijem kontekstu, složene promenljive dužine kodiranja koriste se od strane nekih tipičnih CISC arhitektura koje ih čine koplikovanim, ali ipak izvodljivim, da bi se izgradila superskalarna impelementacija CISC koji programira model direktno; u-redu (in-order) superskalarni prvobitni Pentium i izvan-reda (out-of-order) superskalarni Cyrix 6x86 su dobro poznati primeri. Česti pristup memoriji za operande tipične CISC mašine može ograničiti nivo paralelizma instrukcija koje se mogu izdvojiti iz koda, iako je to jako posredovano brzim keš strukturama korišćenih u modernim dizajnima, kao i drugim merama. Zbog samo po sebi kompaktnim i semantički bogatim instrukcijama, prosečan iznos obavljenog rada po jedinici koda mašine (tj. po bajtu ili bitu) veći je za CISC nego za RISC procesore, što mu može dati značajnu prednost u moderno keš zasnovanoj primeni.

Tranzistori za logiku, PLAs, i mikrokod nisu više oskudni resursi; danas su samo veliki keševi visoke brzine limitirani maksimalnim brojem tranzistora. Iako kompleksan, broj tranzistora CISC dekodera nije eksponencijalno rastao kao ukupan broj tranzistora po procesoru (većina se obično koristi za keš). Zajedno sa boljim alatima i poboljšanoj tehnologiji, došlo se do novih implementacija visoko kodiranih i dizajna promenljive dužine bez ograničenja opterećenja-skladišta (tj. ne-RISC). Ovo reguliše re-implementaciju starijih arhitektura kao što je sveprisutni x86 (vidi dole), kao i novi dizajn za mikrokontrolere za ugrađene sisteme, i za slične upotrebe. Superskalarna složenost u slučaju modernog x86 je rešena konvertovanjem instrukcija u jednoj ili više mikrooperacija, odnosno posrednim i neposrednim superskalarnim izvršavanjem; Pentium Pro i AMD K5 su rani primeri za to. On omugućava da prilično jednostavni superskalarni dizjan da bude lociran posle (relativno složenog) dekodera (i bafera), čineći ga svetski poštovanim.

CISC i RISC termini[uredi | uredi izvor]

Termini CISC i RISC su postali manje značajni sa kontinuiranim razvojem CISC i RISC dizajna i implementacijama. Prva visoko (ili čvrsto) pipelined x86 arhitektura, na 486 dizajnu Intel-a, AMD-a, Cyrix-a, i IBM-a, podržavala je svaku instrukciju koju su njegovi prethodnici uradili, ali su postigli maksimalnu efikasnost samo na prilično jednostavnom x86 podskupu koji je bio samo nešto više od tipičnog RISC skupa instrikcija (tj. bez tipičnih RISC ograničenja opterećenja-skladišta). Intel P5 Pentium generacija bila je superskalarna verzija ovih principa. Međutim, savremeni x86 procesor takođe (tipično) dekodira i deli instrukcije u dinamičkim sekvencama interno baferovanim mikro-operacijama, koje ne samo što pomažu izvršavanju većih podskupova instrukcija u pipelined (preklapanju) obliku, već takođe olakšavaju napredniju ekstrakciju paralelizma izvan strim koda, za još belje performanse.

Nasuprot popularnim pojednostavljenjima (predstavljenim takođe u nekim akademskim tekstovaima), nisu svi CISCs mikrokodovani ili sa “složenim” instrukcijama. Kako je CISC postajao sveobuhvatni termin sa značenjem bilo čega što nije opterećenje-skladište (RISC) arhitektura, to nije broj instrukcija, niti složenost implementacije ili samih instrukcija, koji definišu CISC, već činjenica da aritmetičke instrukcije takođe obavljaju memorijski pristup. U poređenju sa malim 8-bitnim CISC procesorom, RISC sa instrukcijama u pokretnoj tački je složen. CISC čak i ne mora da ima složen način adresiranja; 32 ili 64-bitni RISC procesor meže imati složeniji način adresiranja nego mali 8-bitni CISC procesor.

PDP-10, PDP-8, Intel 386, Intel 4004, Motorola 68000, System z mainframe, Burroughs B5000, VAX, Zilog Z80000, i MOS Technology 6502 sve neravnomerno variraju brojem, veličinama i formatima instrukcija, brojem vrstama i veličinama registara i dostupnim tipovima podataka. Neki imaju hardversku podršku za operacije kao skeniranje za podnit, proizvoljno preciznu BCD aritmetiku, ili transcedentalne funkcije, dok drugi imaju samo 8-bitno sabiranje i oduzimanje. Ali oni su svi u CISC kategoriji jer imaju “opterećenje-radne” instrukcije koja otperećuje i/ili meorijske skladišne sadržaje u okviru iste instrukcije koje obavljaju stvarne kalkulacije. Na primer, PDP-8 koji ima samo 8 fiksne dužine instrukcije i uopšte nema mikrokod, je CISC jer kako instrukcije rade, PowerPC, koji ima više od 320 instrukcija (više nego VAXes) i unutrašnju složenost kao preimenovanje registara i ponovno ređanje bafera je RISC, dok Minimal CISC ima 8 instrukcija, ali je jasan CISC jer kombinuje pristup memoriji i računa u istim instrukcijama.

Neki od problema i protivrečnosti u ovoj terminologiji će možda nestati kao više sistematski termini, kao što su (ne) opterećenje/skladište, postaće popularniji i eventualno zameniti neprecizne i malo kontra-intuitive RISC/CISC termine.

Vidi još[uredi | uredi izvor]

Reference[uredi | uredi izvor]

  1. ^ Patterson, D. A. and Ditzel, D. R. 1980. The case for the reduced instruction set computing. SIGARCH Comput. Archit. News 8, 6 (October 1980), 25-33. doi= http://doi.acm.org/10.1145/641914.641917
  2. ^ Lakhe, Pravin R. (2013). „A Technology in Most Recent Processor is Complex Reduced Instruction Set Computers (CRISC): A Survey” (PDF). International Journal of Innovation Research and Studies. str. 711—715. Arhivirano iz originala (PDF) 14. 07. 2015. g. Pristupljeno 11. 12. 2013. 

Literatura[uredi | uredi izvor]

  • Tanenbaum, Andrew S. (2006) Structured Computer Organization, Fifth Edition, Pearson Education, Inc. Upper Saddle River, NJ.