Documente Academic
Documente Profesional
Documente Cultură
Ucp Microprocesoare
Ucp Microprocesoare
ARGUMENT
Aceste gânduri, perindându-mi-se prin minte, m-au determinat să aleg tehnica de calcul
ca domeniu al viitoarei mele cariere. Tehnica de calcul este un element în continuă schimbare,
dar care schimbare aduce şi dezvoltarea; iar odată cu dezvoltarea tehnicii de calcul se dezvoltă
economia la nivel mondial, deoarece acest domeniu este strâns legat de lume. Să ne imaginam ce
ar fi fost lumea fără internet…
După cei 4 ani de liceu, timp în care am studiat tehnica de calcul şi tot ceea ce presupune
acest domeniu, a venit momentul să-mi demonstrez competenţele profesionale. Am ales că temă
„Unitatea centrală. Procesoare” deoarece mi s-a părut un subiect interesant, şi de actualitate şi
mai ales de viitor.
I.1. Generalităţi
Funcţia principală a unui calculator este execuţia programelor. UCP realizează această
funcţie prin execuţia instrucţiunilor specificate de programul aflat în memorie. UCP citeşte
(extrage) câte o instrucţiune din memorie, o execută şi apoi trece la următoarea instrucţiune.
Prelucrarea necesară pentru o singură instrucţiune reprezintă un ciclu de instrucţiune ( figura 1 ).
Fiecare ciclu de instrucţiune constă din două părţi principale: subciclul de extragere şi
subciclul de execuţie. Pe lângă aceste subcicluri, mai poate exista un subciclu de întrerupere şi
un subciclu de indirectare. Procesul de execuţie al instrucţiunilor se opreşte numai la oprirea
calculatorului, la apariţia unei erori sau la întâlnirea unei instrucţiuni de oprire a execuţiei
programului.
CPU este asemenea unui calculator, însă mult mai puternică. Principala funcţie a CPU
este să realizeze operaţii aritmetice şi logice pe baza datelor preluate din memorie sau pe baza
unor informaţii primite prin intermediul unor dispozitive precum tastatură, scanner, sau joystick.
CPU este controlată de o listă de instrucţiuni de software, numite program de calculator.
Instrucţiunile de software care pătrund în CPU îşi au originea în unele forme de stocare de
memorie precum hard disk, floppy disk, CD-ROM, sau benzi magnetice. Aceste instrucţiuni trec
după aceea în memoria RAM (Random Access Memory), unde fiecărei instrucţiuni îi este dată o
adresă, sau locaţie de memorie. CPU poate accesa date specifice în RAM prin specificarea
adresei datei dorite.
În timp ce programul este executat, datele sunt transmise din RAM prin intermediul unei
unităţi de interfaţare prin fire numite bus, care conectează CPU la RAM. Datele sunt după aceea
CPU este condusă de unul sau mai multe circuite repetitive de ceas care trimit un flux
constant de impulsuri de-a lungul setului de circuite ale CPU. CPU utilizează aceste impulsuri de
ceas pentru a-şi sincroniza operaţiile. Cele mai mici incrementări ale muncii CPU sunt realizate
între impulsuri de ceas secvenţiale. Sarcinile mult mai complexe durează câteva perioade de ceas
pentru fi terminate. Impulsurile de ceas sunt măsurate în hertzi, sau numărul de impulsuri pe
secundă. Spre exemplu, un procesor de 100 MHz are 100 de milioane de impulsuri de ceas care-l
străbat pe secundă. Impulsurile de ceas sunt măsura vitezei procesorului.
Pentru a examina structura unităţii centrale de prelucrare (UCP), se prezintă mai întâi
funcţiile principale realizate de această unitate:
• Extragerea instrucţiunilor: UCP trebuie să citească instrucţiunile din memorie.
• Interpretarea instrucţiunilor: Fiecare instrucţiune trebuie decodificată pentru a determina
operaţia care trebuie executată.
• Citirea datelor: Pentru execuţia unor instrucţiuni este necesară citirea datelor din memorie sau
de la un dispozitiv de I/E.
• Prelucrarea datelor: Execuţia unei instrucţiuni poate necesita execuţia unei operaţii aritmetice
sau logice asupra datelor.
• Scrierea datelor: Rezultatele execuţiei trebuie scrise în memorie sau la un dispozitiv de I/E.
Pentru a putea executa aceste funcţii, UCP necesită memorarea temporară a unor date
într-o memorie internă proprie. De exemplu, trebuie memorată adresa ultimei instrucţi uni,
pentru a se cunoaşte adresa de la care se va extrage instrucţiunea următoare.
De asemenea, instrucţiunile şi datele trebuie memorate temporar pe durata execuţiei unei
instrucţiuni.
Figura 2 prezintă structura generală a UCP, cu indicarea conexiunilor cu restul sistemului prin
magistrala sistem.
Figura 3 prezintă o imagine mai detaliată a UCP. Se pune în evidenţă magistrala internă a UCP,
care este necesară pentru transferul datelor între diferite registre ale UAL, deoarece UAL
prelucrează doar datele din memoria internă a UCP. Figura indică de asemenea elemente
componente tipice ale UAL.
I.6.1 Registre
Registre utilizator
Aceste registre sunt accesibile prin instrucţiunile limbajului maşină. Se deosebesc următoarele
categorii de registre utilizator:
• Registre generale;
• Registre de date;
• Registre de adrese;
• Registre ale indicatorilor de condiţii.
Registrele generale pot fi utilizate în scopuri variate de către programe. În unele cazuri,
utilizarea lor în cadrul setului de instrucţiuni este ortogonală. Aceasta înseamnă că oricare
registru general poate conţine operandul oricărei instrucţiuni. În multe cazuri există însă
restricţii, de exemplu pot exista registre dedicate pentru anumite operaţii aritmetice. Uneori,
registrele generale se pot utiliza pentru adresarea operanzilor, prin diferite moduri de adresare.
Registrele de date se pot utiliza numai pentru păstrarea datelor şi nu se pot utiliza pentru
calculul adresei operanzilor.
Registrele de adrese, utilizate pentru adresarea instrucţiunilor sau a datelor, pot avea o
utilizare generală, sau pot fi dedicate unui anumit mod de adresare.
Registrele indicatorilor de condiţii sunt vizibile parţial de către programator.Indicatorii de
condiţii sunt biţi poziţionaţi de către UCP în funcţie de rezultatele diferiteloroperaţii. De
exemplu, o operaţie aritmetică poate produce un rezultat pozitiv, negativ, zero, sau poate rezulta
o depăşire. Pe lângă rezultatul care se memorează într-un registru sau în memorie, se
poziţionează şi unii indicatori de condiţii. Aceşti indicatori pot fi testaţi ulterior, de obicei de
instrucţiunile de salt condiţionat.
Registre de control şi de stare
În general, aceste registre nu sunt vizibile programatorilor, sau unele din ele pot fi vizibile pentru
instrucţiunile maşină executate într-un mod special al UCP, numit mod privilegiat. Diferitele
calculatoare au diferite organizări ale registrelor, şi utilizează terminologii diferite. Totuşi, se pot
deosebi următoarele registre care sunt esenţiale pentru execuţia instrucţiunilor:
• Contorul de program (PC): Conţine adresa următoarei instrucţiuni care se va extrage din
memorie.
• Registrul de instrucţiuni (RI): Conţine ultima instrucţiune extrasă din memorie.
• Registrul de adrese al memoriei (RA): Conţine adresa unei locaţii de memorie.
• Registrul de date al memoriei (RD): Conţine cuvântul de date care se va înscrie în memorie sau
cuvântul citit recent.
Contorul de program conţine adresa instrucţiunii următoare, deoarece de obicei acest
registru este actualizat de UCP imediat după fiecare extragere a unei instrucţiuni.
O instrucţiune de salt va modifica de asemenea contorul de program. Instrucţiunea
extrasă din memorie este depusă în registrul de instrucţiuni, unde ea este analizată (decodificată).
Transferul datelor cu memoria are loc prin utilizarea registrului de adrese şi de date al
memoriei (RA, respectiv RD). Registrul RA este conectat la magistrala de adrese, iar RD la
magistrala de date.
Registrele menţionate sunt utilizate pentru transferul datelor între UCP şi memorie.
În cadrul UCP, datele trebuie aplicate la intrările UAL pentru prelucrare. UAL poate avea
acces direct la registrul RD şi la registrele generale. O altă variantă este cea în care există registre
suplimentare la intrările UAL şi ieşirea acestuia, prin intermediul cărora are loc comunicaţia cu
registrele generale şi registrul de date al memoriei.
UCP conţine un registru numit cuvânt de stare al programului (PSW-Program Status
Word). Acest registru păstrează indicatori de condiţii şi alte informaţii de stare.
Câmpurile principale ale acestui registru sunt:
• Semn: Conţine bitul de semn al rezultatului ultimei operaţii aritmetice.
• Zero: Setat atunci când rezultatul este 0.
• Transport (Carry): Setat dacă a rezultat un transport sau un împrumut la o operaţie aritmetică.
• Egal: Setat dacă rezultă o egalitate în urma unei operaţii de comparare.
• Depăşire (Overflow): Utilizat pentru a indica o depăşire la o operaţie aritmetică.
• Validare întreruperi (Interrupt Enable/Disable): Utilizat pentru validarea sau invalidarea
întreruperilor.
• Supervizor (Supervisor): Arată dacă UCP execută un program în mod supervizor sau în mod
utilizator. Anumite instrucţiuni privilegiate pot fi executate numai în mod supervizor, iar anumite
zone de memorie sunt accesibile numai în acest mod.
Pot exista şi alte registre din această categorie, de exemplu pentru controlul operaţiilor de I/E.
I.6.3 Indicatori
atunci când se efectuează operaţii matematice cu numere a căror reprezentare este pe mai mult de
un octet. Indicatorul mai poate fi modificat şi în cazul operaţiilor de deplasare şi rotire.
Indicatorul de paritate (Parity - PF) este poziţionat dacă rezultatul conţine în reprezentare un
număr par de biţi cu valoarea 1. De obicei este folosit pentru verificarea transmisiilor de date.
Indicatorul de transport auxiliar (Auxiliary Carry - AF) este poziţionat dacă a avut loc un
transport de la un nivel inferior la un nivel superior al semioctetului rezultatului. Este folosit în
operaţiile cu numere reale.
Indicatorul de zero (Zero - ZF) este poziţionat dacă rezultatul operaţiei este 0.
Indicatorul de semn (Sign - SF) este poziţionat dacă cel mai semnificativ bit al
rezultatului este 1.
Indicatorul de depăşire (Overflow - OF) este poziţionat dacă are loc o depăşire aritmetică,
adică dimensiunea rezultatului depăşeşte capacitatea locaţiei de destinaţie.
Aceşti biţi indicatori de stare sunt poziţionaţi de către unitatea de execuţie. Indicatorii de
control permit controlarea unor operaţii ale microprocesorului şi ei pot fi modificaţi prin
program.
Indicatorul de depanare (Trap/Trace - TF) dacă este poziţionat, indică faptul că
programul va fi executat pas cu pas. Unitatea centrală va genera o întrerupere după fiecare
instrucţiune, existând posibilitatea urmăririi execuţiei fiecărei instrucţiuni.
Indicatorul de întrerupere (Interrupt - IF) indică unităţii centrale, în cazul în care este poziţionat,
că trebuie să "reacţioneze" la întreruperile externe mascabile. Dacă acest indicator nu este
poziţionat aceste întreruperi vor fi ignorate. Nu are efect asupra întreruperilor externe
nemascabile sau asupra întreruperilor interne.
Indicatorul de direcţie (Direction - DF) în cazul în care este poziţionat, indică faptul că şirurile
vor fi prelucrate de la adresele mari spre adresele mici (de la dreapta la stânga). În caz contrar
şirurile vor fi prelucrate de la stânga la dreapta.
Începând cu microprocesorul 80286 au fost adăugate încă două indicatoare pentru a acorda mai
multe facilităţi programatorului.
Indicatorul protecţie intrare/ieşire (Input/Output Privilege level flag - IOP) indică nivelul
de protecţie pentru intrare şi ieşire. Trebuie remarcat că pentru acest flag sunt folosiţi 2 biţi.
Indicatorul imbricare (Nested flag - N) controlează înlănţuirea proceselor întrerupte în modul
protejat.
cele interne mai poartă denumirea de întreruperi software. Diferenţa esenţială dintre cele două
tipuri de întreruperi este că cele externe sunt cauzate de dispozitivele externe, iar cele interne
sunt generate prin program, folosindu-se anumite instrucţiuni.
Unitatea de execuţie nu are nici o legătură cu magistrala sistemului, cea care efectuează
toate operaţiile necesare cu magistrala fiind unitatea de interfaţă cu magistrala. În timpul în care
unitatea de execuţie se ocupă cu execuţia instrucţiunilor, unitatea de interfaţă cu magistrala
încarcă instrucţiunile într-o memorie specială de tip RAM (Random Acces Memory) numită
coada fluxului de instrucţiuni. Această memorie are o dimensiune de 4 bytes în cazul
microprocesoarelor 8088 şi 6 bytes în cazul 8086. Unitatea de execuţie preia câte o instrucţiune
din coada fluxului de instrucţiuni; apoi o execută.
În majoritatea cazurilor coada fluxului de instrucţiuni conţine cel puţin un byte al fluxului
de instrucţiuni şi unitatea de execuţie nu mai trebuie să aştepte încărcarea instrucţiunii care
urmează a fi executată. La un moment dat în coada fluxului de instrucţiuni sunt memorate
instrucţiunile care se află în locaţiile de memorie imediat următoare locaţiei de memorie în care
se află instrucţiunea care se execută la acel moment. Dacă este executată o instrucţiune care
transferă controlul unei locaţii de memorie, coada fluxului de instrucţiuni este ştearsă, se încarcă
instrucţiunea de la noua adresă şi unitatea de interfaţă cu magistrala începe reîncărcarea cozii
fluxului de instrucţiuni cu instrucţiunile următoare.
Perifericele sunt conectate la calculator prin intermediul unor module de I/E. Aceste
module pot transfera date direct cu UCP. Aşa cum UCP poate iniţia o operaţie de citire sau
scriere cu memoria, indicând adresa unei locaţii de memorie, UCP poate citi sau scrie date de la
sau la un modul de I/E. În ultimul caz, UCP identifică un anumit periferic controlat de un modul
de I/E.
În multe cazuri, este mai eficientă realizarea transferurilor direct între periferic şi
memorie. În aceste cazuri, UCP acordă unui modul de I/E permisiunea de citire din sau scriere în
memorie, astfel că transferurile pot avea loc fără intervenţiei UCP. Această operaţie se numeşte
acces direct la memorie (DMA).
II.1 Generalităţi
Procesorul este o componentă mică dar vitală pentru orice computer. El poate fi comparat
ca fiind "inima" sistemului, deşi unii îl consideră mai degrabă "creierul". Rolul său este
fundamental, el fiind cel care parcurge programele din computer, instrucţiune cu instrucţiune, şi
le execută coordonînd dispozitivele din sistem, procesînd şi manevrînd datele, şi astfel
controlând toată activitatea sistemului.
Procesorul este un circuit integrat care include echivalentul unui număr foarte mare de
elemente de circuit electronic clasic - tranzistori. El lucrează în strînsă colaborare cu placa de
bază, pe care este montat într-o mică priză (numită şi slot sau socket) specială. În funcţie de tipul
acestei prize, o placă de bază poate suporta numai anumite tipuri de procesoare, care pot fi
montate în acel tip de priză.
Există multe tipuri de procesoare, dar cele mai cunoscute sunt cele produse de firmele
Intel (realizatoarea procesoarelor din familia 80x86, mai popular cunoscute prin codurile 286,
386, 486, şi sub marca Pentium I,II,III sau 4) şi AMD (cu procesoarele din seria K6, iar mai nou
cu seriile Athlon, Duron şi K7, în 2003 aşteptate sunt K8). Numele procesorului dintr-un
computer şi frecvenţa lui de lucru se pot citi, de obicei, în primele rînduri de mesaje afişate la
pornirea computerului.
Performanţele procesorului se măsoară prin mai mulţi parametri, dar cel mai important
este frecvenţa de lucru a procesorului. La ora actuală, cel mai nou procesor lansat de Intel este
Pentium 4, şi el a ajuns să lucreze la frecvenţe de până la 3 GHz. În tabelul I sunt prezentate
Perioada 1993-1998 a fost foarte zbuciumată, marcată de o luptă foarte dură pe piaţa
microprocesoarelor, în care Intel a început să simtă din ce în ce mai mult prezenţa competiţiei
formate din AMD, Cyrix sau NexGen. Tot în aceasta perioadă s-a lansat şi standardul MMX care
său procesor: Nx586. Complexitatea procesorului K5 a dus la frecvenţe destul de mici, ceea ce i-
a făcut pe cei de la AMD să cumpere compania Nexgen care tocmai terminase design-ul noului
lor procesor, NX686. Acest design a fost ulterior folosit de AMD în următoarea sa familie de
procesoare pe care avea să o lanseze in 1997.
Cyrix 6x86
6x86 a fost replica lui Cyrix la procesorul Pentium al lui Intel. Acest chip era produs
iniţial de către IBM dat fiind că Cyrix nu avea unităţi de asamblare de procesoare, însă ulterior,
odată cu achiziţionarea Cyrix de către Naţional Semiconductor a fost produs chiar de către
aceştia. Procesorul a avut un succes destul de mare dat fiind că era mai rapid decât un Intel
Pentium la aceeaşi frecvenţă. De altfel pentru a-l putea compara cu procesoarele de la Intel, cei
de la Cyrix au inventat ceea ce s-a numit ulterior P-Rating. De exemplu procesorul Cyrix 6x86
care funcţiona la 150 de MHz a fost denumit 6x86PR200, ceea ce însemnă că era comparabil ca
viteză cu un Pentium la 200. Unul din marile dezavantaje ale acestui procesor a fost însă viteza
foarte mică a calculelor în virgula mobilă.
Cu toate acestea în aplicaţiile de tip office s-a dovedit cel puţin la fel de rapid ca şi un
Pentium.
Acest procesor a fost una dintre cele mai mari inovaţii tehnice produse de Intel până
acum. Procesorul îngloba pentru prima oară în istorie pe lângă cache-ul Level1 de 8k pentru date
şi 8k pentru instrucţiuni, şi un cache Level2 de 256Kb sau 512Kb. Folosea un sistem complex de
predicţie a ramurii de execuţie (branch prediction) şi execuţie speculativă (speculative execution)
- în momentul în care execuţia programului ajungea la o bifurcaţie ramura corectă nu era ştiută
până în momentul în care se execută instrucţiunea condiţională; pentru ca procesorul să nu
aştepte până în acea clipă, se alegea una din cele două ramuri şi se începea execuţia
instrucţiunilor respective; dacă se dovedea ca ramură aleasă a fost cea corectă aceasta însemnă
un câştig important de viteză. Acest microprocesor transforma instrucţiunile x86 în microoperaţii
care erau mult mai mici şi mai rapide. Acest lucru, cu toate că avea ca rezultat o viteză mult mai
mare a instrucţiunilor de 32 de biţi, a dus la performanţe mult mai slabe în sistemele de operare
care mai conţineau cod pe 16 biţi. Acesta a fost unul din motivele performanţei mai mici
AMD K6
Ca urmare a cumpărării firmei Nexgen, AMD a reuşit să lanseze un nou procesor, K6
care avea viteze de la 166 la 266MHz. Bineînţeles ca politica AMD a fost ca procesoarele sale să
se vândă la aproape jumătate din preţul la care se vindeau procesoarele Intel. K6 încorpora
instrucţiuni MMX (a căror licenţă a cumpărat-o de la Intel) devenind astfel un rival de temut
pentru procesoarele Intel Pentium MMX.
Cyrix 6x86MX
6x86MX a adus nou extensiile MMX precum şi viteze de ceas mai mari decât
precedentele chip-uri de la Cyrix. Astfel cel mai performant model era 6x86MX PR266 care rula
la 233MHz. De asemenea, mărimea memoriei cache Level2 s-a mărit de patru ori faţă de 6x86,
ajungând la 64Kb.
(WB) - ultimul nivel din IU, actualizează setul de registre sau trimite rezultatul unităţii de
interfaţă cu memoria (Load/Store Unit) din MMU.
Unitatea cache
Procesorul Cyrix 5x86 conţine un cache unificat pentru date şi instrucţiuni de 16Ko, set-
asociativ pe patru căi, organizat pe 1024 de linii. Scrierile în cache se fac prin metoda write-
back. Memoria cache este organizată în patru bancuri a câte 256 linii fiecare, cu 16 octeţi pe
linie. Fiecare linie cache are asociat câte un tag pe 21 de biţi şi un bit de valid (arată dacă linia
conţine informaţii valide sau nu). Pe lângă aceşti biţi, fiecare linie mai conţine încă patru biţi care
indică dacă conţinutul liniei a fost modificat (dirty bits), câte unul pentru fiecare dublu-cuvânt
din linie. Aceşti ultimi patru biţi permit marcarea independentă a fiecărui dublu-cuvânt ca fiind
modificat, în loc de a marca întreaga linie ca fiind modificată.
Cyrix 6x86 este un procesor superscalar, deoarece conţine două benzi de asamblare separate ce
permit procesarea mai multor instrucţiuni în acelaşi timp. Folosirea unei tehnologii de procesare
avansate şi creşterea numărului de nivele în benzile de asamblare (superpipelining) permit
procesorului 6x86 să atingă frecvenţe de lucru mai mari de 100MHz.
Prin folosirea caracteristicilor arhitecturale unice, procesorul 6x86 elimină multe dintre
dependenţele între date şi conflictele la accesarea resurselor, rezultând o performanţă optimă atât
pentru programele pe 16 biţi cât şi pentru cele pe 32 de biţi.
Procesorul Cyrix 6x86 conţine două cache-uri: -un cache unificat (pentru date şi pentru
instrucţiuni) de 16Ko dual port, şi -un cache de instrucţiuni de 256 octeţi.
Deoarece cache-ul unificat poate conţine instrucţiuni şi date în orice raport, acesta oferă o
rată a hit-urilor (numărul de accese în cache, raportat la numărul total de accese) mai mare
comparativ cu două cache-uri separate pentru date şi pentru instrucţiuni, având dimensiuni egale.
O creştere a lăţimii de bandă a transferurilor cache-unitatea întreagă este realizată prin
suplimentarea cache-ului unificat cu un mic cache de instrucţiuni foarte rapid, complet asociativ.
Prin includerea acestui cache de instrucţiuni, se evită conflictele excesive între accesele pentru
date şi pentru cod în cache-ul unificat.
Unitatea în virgulă flotantă din procesor permite executarea instrucţiunilor în virgulă
flotantă în paralel cu instrucţiunile întregi. Aceasta conţine o coadă de instrucţiuni pe patru
nivele şi o coadă pentru datele scrise tot pe patru nivele, pentru a facilita execuţia paralelă.
Procesorul 6x86 este alimentat la 3.3V ducând la un consum redus pentru toate frecvenţele de
lucru. În plus, 6x86 mai posedă un mod de suspendare pe nivel scăzut, posibilitatea de a
întrerupe tactul şi modul de management al sistemului (SMM) pentru aplicaţiile sensibile la
alimentare.
Cyrix MII
Această versiune a chip-ului 6x86 a îmbunătăţit puţin performanţa FPU şi a atins viteze mai mari
ajungând la 300MHz (PR433). De asemenea viteza bus-ului a ajuns la 100MHz.
Cyrix MediaGX
MediaGX a reprezentat încercarea lui Cyrix de a produce un chip care să integreze atât
funcţiile de sunet şi video, cât şi controller-ul de memorie şi CPU-ul în sine. Scopul acestui chip
a fost acela de a putea produce computere foarte ieftine şi la vremea aceea deja se vorbea de
calculatoare sub 500$ (ceea ce era foarte puţin la acea dată) construite în jurul lui MediaGX. Cu
toate acestea, nici unul din marii producători de computere nu a adoptat această soluţie, astfel
încât procesorul acesta, deşi revoluţionar, nu a avut deloc succesul scontat.
BIBLIOGRAFIE
www.kappa.ro
www.xf.ro
www.usb.org
CUPRINS
Argument
Bibliografie
Cuprins