mikroprozesadore

1. Inform.
Ordenagailuaren prozesatzeko unitate zentralaren funtzioak betetzen dituen zirkuitu integratua.

Mikroprozesadorea Edit

Egilea: Olatz Arbelaitz, Izaskun Etxeberria

MIKROPROZESADOREA

Mikroprozesadore hitzak bi hitzen elkarketa du jatorri, prozesadore eta mikrotxip hitzena, hain zuzen, eta esanahia hau da: zirkuitu integratu batean (txip edo mikrotxip batean) prozesadore bat, osorik, eraikita dagoela.

Lehenengo zirkuitu integratua 1958an sortu zen, eta Jack Kilby ingeniariak garatu zuen Texas Instruments konpainian. Hortxe hasi zen zirkuitu integratuen garapena, eta, hala, 1971n, lehenengo mikroprozesadore komertziala eraiki zen, Intel 4004 mikroprozesadorea. Bien artean bide handia zegoen: lehenengo zirkuitu integratuak 6 transistore inguru zituen; lehenengo mikroprozesadoreak, ordea, 2.300 transistore (transistorea edozein zirkuitu digitalen oinarrizko osagaia da; transistore). Mikroprozesadore horren ondoren gertatutako eboluzioa itzela izan da, esaterako, 2005eko Intel etxeko Pentium Extreme prozesadoreak 175 milioi transistore ditu.

Hasierako mikroprozesadoreek eta gaur egungoek oso ezaugarri desberdinak izan arren, kanpoko itxura berdintsua dute. Izan ere, zirkuitu integratu baten kanpoko itxura berdintsua da beti, plastiko beltza eta hankatxo metaliko batzuk besterik ez baitira ikusten kanpotik. Hurrengo irudian, zirkuitu integratu batzuk ageri dira. Zirkuituen barruan, material erdieroalezko plaka txiki bat dago, oro har siliziozkoa, interkonektatutako hainbat transistore integratzen dituena.

grafikoak1

Zirkuitu integratuak

Ez da, ordea, mikroprozesadorea existitzen den zirkuitu integratu bakarra; zirkuitu integratu asko daude, eta oso desberdinak, bai konplexutasun-mailaren eta baita betetzen duten funtzioaren aldetik ere. Oro har, zirkuitu integratu batek sistema digital bat du barnean; sistema digitalen mundua oso zabala da, baina, zalantzarik gabe, prozesadorea izan da 70. hamarkadatik aurrera garapen eta hedapen handiena izan duen sistema digitala. Garapen horren atzean ez dago arrazoi bakarra. Lehenik, teknologiaren arloa dago, zirkuitu integratu batean gero eta transistore gehiago edukitzea lortu baita, eta transistore horien funtzionamendua gero eta azkarragoa izatea. Transistore-kopuruari dagokionean, zirkuitu integratuen eboluzioan beti aipatzen da Mooren legea izenarekin ezagutzen dena; 1965. urtean (lehen mikroprozesadorea baino lehen), Gordon E. Moorek aurreikusi zuen bi urtean behin bikoiztu egingo zela zirkuitu integratu baten transistore-kopurua, hau da, kopuru horren hazkuntza esponentziala izango zela. Eboluzioak  egiaztatu egin du orduan aurreikuspena izan zena. Teknologiaz gain, diseinuaren arloa dago, prozesadorea diseinatzerakoan aldaketak egin baitira aurrerapen teknologikoei ahalik eta etekin handiena ateratzeko. Azken finean, helburu nagusia bakarra da: ahalik eta prozesadore azkarrenak lortzea.

Hori guztia, zergatik? Zer berezitasun du prozesadoreak hain sistema garrantzitsua izateko? Arrazoia sinplea da oso: prozesadorea da konputagailuaren (edo ordenagailuaren) osagai nagusia —askotan esan ohi da muina edo bihotza dela, haren garrantzia azaltzeko asmotan— eta, gaur egun, XXI. mendean, gure gizartea eta bizimodua ez lirateke diren modukoak izango konputagailurik gabe. Tresna ez da berria, baina 1980. urtetik aurrera izan duen hedapena izugarria izan da, eta esparru guztietara zabaldu da haren erabilera, hala nola komunikazioetara, hezkuntzara, ikerkuntzara, aisialdira, finantzetara, medikuntzara... Arlo guztietan erabiltzen da, eta horregatik esaten da gaur egungo gizartean oinarrizko tresna dela.

 Hurrengo lerroetan, prozesadoreei buruzko oinarrizko kontzeptu batzuk azalduko dira, betiere konputagailuaren ikuspuntutik, baina esan beharra dago prozesadoreak ez direla soilik konputagailuetan erabiltzen, asko baitira prozesadore bat duten eta egunero erabiltzen diren tresnak: telefono mugikorrak, kamera digitalak, telebistak, autoak...

Bukaeran, laburpen gisa, prozesadore batzuen ezaugarriak emango dira, gertatu den eboluzio izugarriaren adierazgarri.

Prozesadoreen ezaugarri orokorrak

Zer egiten du prozesadoreak konputagailuaren barruan? Zergatik da osagai nagusia? Aipatu denaren arabera, konputagailua oso esparru desberdinetan erabiltzen da, eta oso helburu desberdinak lortzeko. Horren funtsa da konputagailuak programa desberdinak exekutatzeko duen gaitasuna; hala, bilatzen diren emaitzen arabera, programa oso desberdinak diseinatzen eta idazten dira.

Bi alderdi bereizten dira, beraz, konputagailu batean: (a) osagai fisikoak (hardwarea), hau da, prozesadorea, memoria, periferikoak... egitura jakin baten arabera antolatuta —sistemaren arkitektura—; eta (b) programak (softwarea), konputagailuak egin behar duena zehazten dutenak. Programa bat osatzeko, oro har, agindu-sekuentzia bat eta datu batzuk behar dira.

Prozesadorea hardware-atalekoa da, eta haren lana aginduak exekutatzea da. Horrexegatik esaten da atalik garrantzitsuena dela. Ingelesez erabiltzen den terminologian, prozesadoreari CPU deritzo, Central Processing Unit, hots, Prozesu Unitate Zentrala. Badira oso garrantzitsuak eta funtsezkoak diren beste osagai batzuk konputagailuan, hala nola memoria, sarrera/irteerako azpisistema eta busak. Memoriaren lana programak, datuak eta emaitzak gordetzea da; sarrera/irteerako azpisistema, berriz, konputagailua eta kanpoaldearen artean informazioa trukatzeko da, eta hainbat osagai erabiltzen dira horretarako (pantaila, teklatua, sagua...); busak, azkenik, aurreko atal guztiak interkonektatzeko bideak dira. Osagai edo atal horiek antolatzeko, John von Neumann matematikariak 1945. urtean proposatutako “arkitektura” erabiltzen da oraindik, funtsean, oinarrizko egitura gisa. Hurrengo irudian ageri da Von Neumann arkitektura (arkitektura).

Aipatu den bezala, prozesadorea da aginduak exekutatzeko gai den atala. Baina, zein agindu? Prozesadore bakoitzak agindu-multzo (instruction set) jakin eta zehatza exekuta dezake; agindu horiek konputagailuaren makina-lengoaia definitzen dute. Izan ere, sistemaren arkitektura makina-lengoaia jakin bat exekutatzeko diseinatzen da, eta, horregatik, konputagailuaren arkitektura eta makina-lengoaia oso lotuta dauden bi alderdi dira.

Prozesadore batek exekuta ditzakeen aginduak oso sinpleak dira: behe-mailako lengoaia bat osatzen dute agindu horiek. Eskuarki, programa arruntak idazterakoan ez dira agindu horiek erabiltzen, oso sinpleak izanik, programa luze eta bihurriak idatzi beharko bailirateke aplikazio konplexuak sortzeko. Hori dela eta, maila altuagoko lengoaiak erabiltzen dira programak idazteko, hala nola C, ADA, JAVA, FORTRAN... Dena den, exekutatu baino lehen, programak itzuli —konpilatu— egin behar dira konputagailuaren makina-lengoaiara.

Lehen aipatu denez, konputagailuen oinarrizko egitura berdintsua da beti, eta antzeko gauza gertatzen da prozesadoreekin: denek dituzte oinarrizko osagai berak, eta haien artean desberdintasun nabarmenena bakoitzaren agindu-multzoan datza. Diseinu-erabakiak desberdinak izanik, prozesadore guztien ezaugarriak ez dira berdinak: batzuk azkarragoak dira kalkulutan, beste batzuk emaitza hobeak lortzen dituzte datu-mota jakin batzuekin...

grafikoak2

Konputagailuen Von Neumann arkitektura

Prozesadore baten oinarrizko osagaiak

Arestian esan den bezala, prozesadorearen funtsezko lana aginduak exekutatzea da. Aginduek programak osatzen dituzte, eta programak, datuekin batera, memorian gordetzen dira. Oro har, honako gailu hauek izango ditugu prozesadore baten barnean:

  • Programaren kontagailua, PC (program counter): osagai honek informazioa gordetzen du programaren aginduak memoriatik eskuratu ahal izateko.

  • Agindu-erregistroa, IR (instruction register): exekutatzen ari den agindua gordetzeko balio du osagai honek.

  • Erregistro-multzoa, RB (register bank): osagai honetan, hainbat datu gordetzen dira, besteak beste, aginduen eragigaiak, aginduen emaitzak eta tarteko emaitzak. Oro har, aginduek erregistroak erabiliko dituzte exekuzioan zehar. Gaur egungo prozesadoreetan, ohikoa da bi erregistro-multzo izatea: bat zenbaki osoak gordetzeko eta, bestea, zenbaki errealak gordetzeko —koma higikorrean adieraziak (zenbaki errealak adierazteko gehien erabiltzen den adierazpide sistema da)—.

  • Unitate aritmetiko/logikoa, UAL (ALU, arithmetic and logic unit): oinarrizko eragiketa aritmetikoak —batuketa, kenketa, biderketa...— zein logikoak —and, or, xor, not...— exekutatzen ditu gailu honek. Osagai honen eboluzioa ere nabarmena izan da: hasierako prozesadoreetan, UAL bakarra zegoen, baina, gaur egun, prozesadore gehienek UAL bat baino gehiago dute, desberdinak, eta unitate funtzional edo UF (FU, functional unit) deitu ohi zaie. Desberdinak izaten dira erabiltzen dituzten datu-motetan edo egiten dituzten eragiketetan.

Aurreko osagaiez gain, gaur egungo mikroprozesadoreetan memoria bat integratzen da txipean prozesadorearekin batera. Esan den moduan, teknologiaren aurrerapen itzelak izugarri handitu du zirkuitu integratu batean integra daitekeen transistore-kopurua, eta, horregatik, konputagailuaren memoria zati bat, cache memoriaren zati bat, alegia, prozesadorearekin batera integratzen da. Hau ez da konputagailuaren memoria-sistema osoa azaltzeko tokirik egokiena, baina oinarrizko ezaugarriak aipatu behar dira. Konputagailu baten memoria-sistema hierarkikoa da, eta hainbat mailatan banatuta dago: erregistro-multzoa, cache memoria (askotan maila bat baino gehiagotan banatua), memoria nagusia eta diskoa. Lehenengoak prozesadoretik gertuago daude eta azkarragoak dira, baina ez oso handiak. Azkenak, motelagoak izanik, informazio asko gordetzeko aukera ematen dute. Mikroprozesadorearekin batea integratzen den cache memoria zati horri on-chip esaten zaio (gutxi gorabehera, cache memoria 90. hamarkadatik aurrerako prozesadoreetan ageri da, eta on-chip ezaugarriarekin, 2000. urtetik aurrerakoetan).

Prozesadore baten ezaugarriak ematerakoan, ohikoa da prozesadorearen bit-kopurua aipatzea: 4 biteko prozesadorea, 8 bitekoa, 32 bitekoa... Eta ezaugarri hori estu lotzen da aipatu berri diren osagaiekin. Prozesadorearen bit-kopuruarekin adierazten da zein datu-tamainarekin egiten duen lan prozesadore horrek, hau da, zenbat bitekoak diren, oro har, barne-erregistroak zein UALa(k). Berriro ere, kontzeptua sinplea da: informazio gehiago prozesa daiteke, baldin eta datu-tamaina handiagoa bada. Ezaugarri guztiak bezala, hori ere hazten joan da denboran zehar teknologiarekin batera. Jadanik aipatutako Intel 4004 prozesadorea (1971) 4 bitekoa zen eta Intel 80386 prozesadorea (1985), berriz, 32 bitekoa.

Prozesadoreen agindu-multzoa

Jadanik aipatu da prozesadore bakoitzak agindu-multzo propioa duela, hots, agindu-multzo zehatz bat exekutatu ahal izateko diseinatua izan dela. Hortaz, agindu-multzoa zehaztea diseinu-erabakia da. Oro har, edozein prozesadoretan izango dira agindu-mota hauek:

  • Agindu aritmetikoak eta logikoak, oinarrizko eragiketak egiteko: batuketak, kenketak, biderketak, batuketa logikoak, desplazamenduak eta abar.

  • Memoriako aginduak, memorian oinarrizko eragiketak egiteko: datu bat irakurri memoriatik edo datu bat idatzi memorian.

  • Aginduak, erregistroen artean datuak mugitzeko.

  • Jauzi-aginduak, programaren sekuentzian jauziak egin ahal izateko: agindu-segida jakin bat berriro exekutatzeko, adibidez.

Prozesadorea sistema digital bat denez, 1ak eta 0ak baino ez ditu ulertzen, eta aginduak, beraz, 1en eta 0en segidak baino ez dira izango. Hala adierazitako aginduei, bitarrean, makina-mailako agindu esaten zaie, baina, bitarrean aritu beharrean, mnemotekniko batzuk erabiltzen dira aginduak eta haien eragigaiak zehazteko; adibidez, add r2, r4, r5. Mnemotekniko horiek konputagailuaren mihiztadura-lengoaia osatzen dute, eta, programak memorian kargatu baino lehen, bitarrera itzuli beharko dira mihiztatzaile deritzon tresna berezi baten bidez.

Agindu-multzoa zein izango den zehazteko prozesuan, erabaki asko hartu behar dira, hala nola agindu guztiak tamaina berekoak izango diren ala ez, eragigaiak non egon daitezkeen eta leku horiek nola adieraziko diren, agindu gehiago edo gutxiago izango diren, agindu sinpleak edo eragiketa gehiago egingo dituzten... Erabaki horiek guztiek ondorioak dituzte gero, oro har, prozesadorearen abiaduran.

Prozesadoreen barne-funtzionamendua eta abiadura

Prozesadorearen lana zertan den aipatu da: aginduak (programak) exekutatzea. Horretarako jarraitzen duen oinarrizko algoritmoa sinplea da: agindu bat eskuratu memoriatik (PC erregistroak adierazten du exekutatu beharrekoa non dagoen); agindu hori aztertu zein den jakiteko, eta eragiketa egokiak bete, aginduaren arabera. Prozesu hori behin eta berriz errepikatuko da ondoz ondoko aginduak exekutatzeko.

Hasierako prozesadoreek aginduak banan-banan exekutatzen zituzten. Gero, hainbat aurrerapeni esker, hainbat agindu aldi berean exekutatzea lortu zen, eta, azkenik, gaur egun, prozesadore bat baino gehiago dituzten konputagailuak diseinatzen dira, exekuzioa oraindik gehiago azkartzeko.

Abiadura handitzeko prozesuan ezaugarri askok hartzen dute parte. Alderdi teknologikotik, transistoreek gero eta azkarrago funtzionatzen dute, eta, mikroprozesadoreen ezaugarrien artean, badago bat abiadura horrekin zuzenean lotuta dagoena: maiztasuna; esaterako, 100 MHz-eko mikroprozesadorea, 250 MHz-ekoa, 1GHz-ekoa. Berez, maiztasuna ez dagokio prozesadoreari, bere barne-seinale bati baizik, erloju-seinaleari, hain zuzen. Seinale hori transistoreen erantzun-denborarekin erlazionatzen da: erloju-seinaleak zenbat eta maiztasun handiagoa izan, periodoa txikiagoa izango du, hau da, denbora gutxiago izango dute transistoreek haien erantzuna emateko. Transistore azkarragoak lortu diren heinean, erlojuaren maiztasuna handitu egin da.

Maiztasunaz gain, beste faktore askok izango dute eragina prozesadore baten abiaduran, eta, horregatik, badira beste irizpide batzuk abiadura-neurketa horietarako. Hala, ohikoa izan da prozesadore baten abiadura neurtzeko segundoko exekuta ditzakeen agindu-kopurua aztertzea. Adibidez, 100 agindu segundoko, 1.000 agindu segundoko. Horrekin lotuta, urtetan MIPS unitatea (Million Instructions Per Second) erabili da, hau da, segundoko zenbat milioi agindu. Ez da oso unitate zehatza prozesadoreen artean konparazioak egiteko, agindu guztiek ez baitute denbora bera behar. Egokiagoa da FLOPS unitatea erabiltzea (Floating point Operations per Second), hau da, segundoko koma higikorreko zenbat eragiketa. Gehienetan, ahaltsuak diren prozesadoreetan, MFLOPS (M = mega, 106), GFLOPS (G = giga, 109) edo TFLOPS (T = tera, 1012) multiploak erabiltzen dira.

Aurreko lerroetan, mikroprozesadoreei buruzko oinarrizko kontzeptu batzuk azaldu dira: osagaiak, agindu-multzoa, abiadura... Prozesadore bat diseinatzerakoan, alderdi asko hartu behar dira kontuan, eta erabaki asko hartu behar dira. Askotan, ez da sinplea esatea zein den erabakirik egokiena, izan ere, maiz suertatzen da ezaugarri bat ona dela ikuspuntu batetik baina txarra bestetik. Horregatik, prozesadore baten diseinuan zehar, ongi doitu behar da ezaugarri bakoitzarekin irabazten dena eta galtzen dena, eta neurketa eta simulazio asko egin behar dira erabaki horiek sendoak izan daitezen, ez baitu ezertarako balio oso prozesadore ahaltsua eraikitzeak (agindu-kopuru handia, helbideratze-modu asko eta abar) gero programak abiadura egokian exekutatzen ez baditu. Dena den, ez da soilik prozesadorea diseinatu behar ongi, inguruko beste osagaiek ere —memoriak, sarrera/irteerako azpisistemak eta busek— garrantzi handia izango baitute konputagailu osoaren eraginkortasunean.

Laburpen gisa, hona hemen taula pare bat, non mikroprozesadore batzuen transistore-kopurua eta erlojuaren maiztasuna ageri diren. Taula hauek agerian uzten dute, adibide gutxi batzuen bitartez, nolako aldea dagoen oinarrizko ezaugarri batzuetan, hasierako prozesadoreen eta hainbat urte beranduagokoen artean. Hala ere, bi prozesadore konparatzerakoan, askoz gauza gehiago hartu beharko lirateke kontuan, diseinu aldetik ere aldea oso garrantzitsua baita. Dena den, diseinuaren kontzeptuak sakonagoak dira, eta ezin dira taula batean bildu.

Intel etxeko mikroprozesadore batzuen oinarrizko ezaugarriak

grafikoak3

Taulan ageri diren datuak, mikroprozesadore bakoitzaren lehen bertsioari dagozkio, ondorengo bertsioek ezaugarri aurreratuagoak baitituzte.

MIPS (Microprocessor without Interlocked Pipeline Stages) arkitekturako mikroprozesadore batzuen oinarrizko ezaugarriak

grafikoak4

Mikroprozesadore hauen diseinuan aldaketa oso garrantzitsuak egin ziren eraginkortasuna irabazteko. Sortzailea John L. Hennesy ikerlari eta irakaslea izan zen.