1. CUPRINS
1. Structura generală a unui calculator personal. ........................................... 3
1.1. Ce este un calculator personal ? .................…............................…............ 3
1.2. Structura hardware de principiu a unui calculator personal. ….……........... 5
2. Reprezentarea internă a informaţiei. ............................................................ 10
2.1. Reprezentarea numerelor într-un sistem de numeraţie. ............................... 11
2.2 Conversia numerelor dintr-o bază în alta. ................................................... 13
2.3. Reprezentarea numerelor în calculator. Coduri de reprezentare. ................ 16
3. Logică combinatorică şi secvenţială. ............................................................. 19
3.1. Elemente de logică booleană. Funcţii logice. ............................................. 19
3.2. Implementarea funcţiilor logice. Minimizarea funcţiilor logice. .................. 21
3.3. Materializarea funcţiilor logice. Circuite logice. ........................................ 23
3.4. Structuri logice combinaţionale. ................................................................ 26
3.5. Sisteme logice secvenţiale. ........................................................................ 28
3.5.1. Tipuri de bistabile. ....................................................................... 29
3.5.2. Registre şi numărătoare. .............................................................. 31
4. Microprocesoarele din familia INTEL 80x86. ............................................. 34
4.1. Microprocesorul I80286. .................................................…..................... 34
4.1.1. Caracteristici generale. ................................................................. 34
4.1.2. Arhitectura internă a microprocesorului I80286. ........................... 34
4.1.3. Registrele microprocesorului I80286. ............................................ 36
4.1.4. Operaţiile de bază pe magistrală ale microprocesorului I80286. ..... 40
4.1.5. Modurile de lucru ale microprocesorului I80286. .......................... 54
4.1.6. Adresarea datelor. Moduri de adresare. ......................................... 47
4.1.7. Gestiunea şi protecţia memoriei la microprocesorul I80286.
Conceptul de memorie virtuală. ..................................................... 49
4.1.8. Întreruperile microprocesorului I80286. ......................................... 55
4.2. Microprocesorul I80386. ........................................................................... 58
4.2.1. Caracteristici generale. .................................................................. 58
4.2.2. Registrele microprocesorului I80386. ............................................ 60
4.2.3. Paginarea memoriei. ..................................................................... 62
4.2.4. Modul virtual 8086 ....................................................................... 64
4.2.5. Memorii cache. ............................................................................. 65
4.2.6. Variante de realizare ale microprocesorului I80386. ...................... 67
4.3. Microprocesorul I80486. .......................................................................... 68
4.3.1. Structură internă. .......................................................................... 68
4.3.2. Arhitecturi CISC şi RISC. ..................................................…....... 70
4.3.3. Variante de realizare ale microprocesorului I80486.
Conceptul de "upgrade". ..…….........................................…........ 72
4.4. Pentium. ......................................................................................….…...... 73
5. Structura calculatoarelor personale IBM. ..................................................... 76
5.1. Generalităţi. ...........................................................................................… 76
1
2. 5.2. Calculatoarele IBM PS/2. ......................................................................... 78
5.3. Arhitectura Microchannel. ........................................................................ 81
5.4. Interfaţarea calculatoarelor IBM. Comunicaţia paralelă şi serială. ............. 85
5.5. Tastatura. ................................................................................................ 89
5.6. Mouse. .................................................................................................... 91
5.7. Imprimante. ............................................................................................. 92
5.8. Monitoare şi adaptoare grafice. ................................................................ 94
5.9. Unităti de memorie externă. ..................................................................... 99
5.9.1. Discuri magnetice. ...……………................................................. 101
5.9.2. Discuri optice. ............................................................................. 105
5.10. Alte dispozitive de intrare/ieşire. ......................................….................. 106
6. Arhitecturi paralele de calculatoare. ........................................................... 108
6.1. Evoluţia sistemelor de calcul.Calculatorul de tip von Neumann. .....…...... 108
6.2. Paralelism în sisteme uniprocesor. ............................................................ 111
6.3. Calculatoare pipe-line. ............................................................................. 112
6.4. Clasificarea Flynn a arhitecturilor de calculatoare. .................................... 115
6.5. Calculatoare SIMD. ................................................................................ 116
6.6. Sisteme multiprocesor cu memorie partajată. ........................................... 118
6.7. Sisteme multiprocesor fără memorie partajată. Transputere. .................... 121
6.8. Sisteme multiprocesor orientate pe flux de date. ...................................... 125
7. Sisteme de operare. ....................................................................................... 130
7.1. Generalităţi. .......................... .................................................................. 130
7.1.1. Interfeţe text şi interfeţe grafice. .................................................. 132
7.1.2. Partiţionarea şi formatarea discurilor. ........................................... 136
7.2. Sistemul de operare MS-DOS. .................................………................... 138
7.2.1. Sistemul de fişiere. Structura discului sub MS-DOS. ................... 113
7.2.2. Lansarea sistemului de operare. ..... ............................................ 144
7.2.3. Configurarea sistemului de operare. ............................................ 145
7.2.4. Crearea fişierelor de comenzi. Fişierul AUTOEXEC.BAT. ...….. 151
7.2.5. Procesorul de comenzi COMMAND.COM. ................................ 153
7.2.6. Comenzi interne. ...................................................................….. 154
7.2.7. Comenzi externe. ..................................................................….. 159
7.3. Microsoft WINDOWS 95. ...................................................................… 167
7.3.1. Elemente Windows 95. ................................................................ 167
7.3.1.1. Ferestre. ...................................................................…… 168
7.3.1.2. Meniuri. ...................................................................…… 169
7.3.1.3. Casete de dialog. ......................................................…… 170
7.3.1.4. Desktop. ....................................................................….. 172
7.3.2. Windows Explorer. ..................................................................… 175
7.3.3. Control Panel. ........................................ ..............................….. 178
7.4. Linux. ................................................................................................….. 184
7.4.1. Structura sistemului Linux. ....................................................….. 184
7.4.2. Instalarea sistemului Linux. ....................................................…. 189
Bibliografie. ...................................................................................................…. 191
2
3. 1. STRUCTURA UNUI CALCULATOR PERSONAL
1.1. Ce este un calculator personal ?
Un sistem de calcul, sau un calculator, este destinat prelucrării informaţiei, acceptând,
memorând şi prelucrând datele sau informaţiile de intrare, pentru a produce informaţiile de
ieşire sau rezultatele prelucrării, fiind compus din două părţi principale: hardware şi
software. Hardware este un termen general, utilizat pentru a desemna partea fizică a unui
calculator, alcătuită din componente electronice şi mecanice, împreună cu totalitatea
dispozitivelor folosite de calculator în prelucrarea informaţiei. Software este tot un termen
general, care desemnează totalitatea programelor folosite de un calculator, pentru a
transforma informaţiile sau datele de intrare, în informaţii de ieşire sau rezultate.
Structura hard-soft a unui calculator poate fi reprezentată ca o serie de cercuri sau
nivele concentrice, fiecare nivel exterior implicând existenţa nivelelor interioare, aşa cum
este arătat în figura1.1.
Sistemul de operare este format dintr-un ansamblu de programe, care asigură o interfaţă
între utilizator şi hardware-ul calculatorului, sau, cu alte cuvinte, face posibilă comunicarea
între utilizator şi calculator. De asemenea, sistemul de operare realizează interfaţa între
hardware-ul calculatorului şi restul software-ului, toate celelalte programe utilizând
hardware-ul calculatorului prin intermediul sistemului de operare.
Software-ul utilitar pune la dispoziţia utilizatorului o multitudine de instrumente
software necesare dezvoltării propriilor programe, sau programe de aplicaţie şi, de asemenea,
instrumente software cu ajutorul cărora se poate menţine buna funcţionare a sistemului de
calcul. Programele din cea de-a doua categorie sunt uneori direct invocate de către sistemul
de operare, aşa că pot fi considerate şi componente ale sistemului de operare.
Dacă, până în anii '80, se făcea o distincţie netă între calculatoare mari, calculatoare
medii sau microcalculatoare, în principal pe baza dimensiunii memoriei şi vitezei de
prelucrare a datelor, odată cu apariţia calculatoarelor personale comerciale în 1976, când
Steven Jobs şi Steve Wozniak au fondat firma APPLE, şi odată cu creşterea gradului de
integrare a componentelor electronice, noţiunile de calculatoare mici, medii sau mari nu mai
sunt atât de clare. Astăzi, un calculator personal care poate intra în dotarea oricărei familii,
dar care poate fi folosit cu succes în majoritatea aplicaţiilor întâlnite în practică, are o
capacitate de memorare şi o viteză de prelucrare mult superioară capacităţii de memorare şi
vitezei de prelucrare de la calculatoarele mari din anii '70.
3
4. Figura 1.1. Structura hard-soft a unui calculator
Calculatoarele personale pot fi întâlnite astăzi în birouri, în şcoli, în întreprinderi, la
domiciliu. Întrucât ele au devenit din ce în ce mai puternice, au preluat multe din sarcinile
calculatoarelor mari de acum 20 -30 de ani.
Termenul de calculator personal generează confuzie, deoarece atunci când IBM a
produs primul său calculator personal, în 1981, l-a numit IMB Personal Computer sau IBM
PC. Pentru unii, termenul de calculator personal înseamnă numai calculatoarele IBM sau
compatibile hardware cu acestea. Dar, prin extensie, prin calculator personal se poate înţelege
orice calculator monoutilizator cu destinaţie generală.
Calculatoarele cu destinaţie generală sunt acele calculatoare capabile să rezolve o mare
varietate de probleme, adaptabilitatea la fiecare tip de problemă realizându-se prin
intermediul programelor. Nu toate calculatoarele sunt calculatoare cu destinaţie generală.
Astăzi sunt produse o gamă largă de calculatoare dedicate, destinate rezolvării unor probleme
specifice, un calculator dedicat fiind capabil să ruleze numai programele necesare rezolvării
tipului respectiv de probleme pentru care este dedicat calculatorul. Calculatoare dedicate pot
fi întâlnite în ceasurile electronice, camerele video, pompele de benzină, sistemele de ghidare
ale rachetelor, sistemele de control ale roboţilor industriali etc.
Până acum câţiva ani, termenii de calculator personal (Personal Computer) şi
calculator de birou (Desktop Computer) desemnau unul şi acelaşi lucru. Astăzi, noţiunea de
calculator personal tinde să cuprindă şi acele calculatoare portabile, de mici dimensiuni, şi
care nu pot fi desemnate prin termenul de calculator de birou sau "desktop computer", care
este folosit în continuare numai pentru calculatoarele ce pot fi întâlnite în mod uzual în
birouri, şi care sunt destinate rezolvării problemelor curente dintr-un birou: procesări de
texte, baze de date, dezvoltări de programe etc.
4
5. Un calculator "lap-top" este un calculator personal portabil, suficient de mic şi uşor
(cântărind numai 4-5 kg) astfel încât să încapă într-un geamantan de mici dimensiuni.
Calculatoarele "lap-top" sunt prevăzute cu hard disk, ecran plat realizat pe bază de cristale
lichide (LCD - Liquid Cristal Display), fiind alimentate cu energie electrică de la o baterie
reîncărcabilă. Calculatoarele "lap-top" mai sunt desemnate şi prin termenul de "notebook
computer".
Un alt termen controversat este cel de staţie de lucru ( "workstation" ). O staţie de lucru
este un calculator de birou performant, fiind mai puternic decât calculatoarele personale
uzuale (calculatoarele IBM), şi care este folosit, în principal, de cercetători ştiinţifici,
ingineri, creatori de desene animate şi alţii, care necesită prelucrări intensive de date. Întrucât
staţiile de lucru devin din ce în ce mai ieftine, şi calculatoarele personale din ce în ce mai
puternice, este foarte dificil de trasat o linie de departajare între o staţie de lucru şi cele mai
puternice calculatoare personale.
În afara tipurilor de calculatoare descrise mai sus, şi care sunt în esenţă calculatoare
monoutilizator, deşi pot fi folosite şi ca sisteme multiutilizator, mai pot fi întâlnite astăzi
calculatoare şi mai puternice, care sunt destinate din start lucrului cu mai mulţi utilizatori în
acelaşi timp, în vederea rezolvării unor probleme deosebit de complexe. Asemenea
calculatoare sunt desemnate prin termenul de "mainframe computers", un exemplu de
calculator "mainframe" fiind calculatorul utilizat pentru rezervarea locurilor la o companie de
transport aeriană. Acest calculator permite tuturor agenţilor companiei aeriene dintr-o ţară, să
facă rezervări folosind acelaşi calculator şi aceleaşi informaţii, în acelaşi timp. Agentul
companiei aeriene comunicã cu calculatorul "mainframe" prin intermediul unui terminal, ce
este un ansamblu format din tastatură şi ecran, şi care transferă informaţiile către şi de la
calculatorul "mainframe". Calculatorul "mainframe" se poate afla într-o cameră alăturată sau
într-o altă ţară. Un alt exemplu de calculator "mainframe" este calculatorul dintr-o bancă,
care este implicat în tranzacţii financiare cu diferiţi clienţi.
Rămânând în cadrul definiţiei extensive a calculatorului personal, ca fiind un calculator
monoutilizator cu destinaţie generală, cuprinzând aici şi calculatoarele de birou,
calculatoarele portabile şi chiar staţiile de lucru, în lucrarea de faţă se vor aborda numai
calculatoarele personale IBM sau compatibile cu acestea.
1.2. Structura hardware de principiu a unui
calculator personal
Un calculator personal este un sistem de prelucrare a informaţiei, a cărui unitate
centrală de prelucrare este realizată pe baza unui microprocesor. În general, orice calculator,
şi nu neapărat un calculator personal, are trei elemente constitutive principale:
- unitatea centrală de prelucrare sau UCP ( Central Processing Unit - CPU )
- memoria ( memory )
5
6. - sistemul de intrare / ieşire sau porturi ( Input / Output System or ports )
Figura 1.2. Reprezentarea simplificată a hardware-ului unui calculator
personal
Unitatea centrală de prelucrare realizează prelucrările sau procesările numerice în
conformitate cu o secvenţă de operaţii elementare, sau instrucţiuni, numită program. Deci, o
unitate centrală de prelucrare poate executa un set limitat de operaţii elementare, care
compun repertoriul de instrucţiuni al UCP-ului respectiv. La calculatoarele din generaţiile
anterioare, UCP-ul era compus, din punct de vedere constructiv, din foarte multe
componente. Datorită creşterii gradului de integrare a componentelor electronice, s-a ajuns ca
o unitate centrală de prelucrare să fie condensată într-un singur circuit integrat. O unitate
centrală de prelucrare realizată pe o singură pastilă de siliciu (sau cip) se numeşte
microprocesor.
Programele care sunt executate de microprocesor sunt stocate în memoria internă a
calculatorului personal. Datele procesate de către aceste programe sunt de asemenea stocate
în memoria calculatorului. Dar, memoria internă are o capacitate limitată. Din această cauză,
se folosesc pentru stocarea programelor şi datelor, dispozitivele sau unităţile de memorie
externă. Cele mai utilizate dispozitive de memorie externă sunt dispozitivele magnetice:
discuri flexibile (floppy disks), benzile magnetice, discurile de mare capacitate sau discurile
hard (hard disks), o altã denumire frecvent utilizată pentru acestea din urmă fiind cea de
discuri Winchester. Altă categorie de dispozitive de memorie externă, folosite în prezent,
sunt dispozitivele optice: CD-ROM, DVD (Digital Versatile Disc).
Un program, pentru a fi executat, trebuie să fie adus din memoria externă în memoria
internă. Deci, un microprocesor execută secvenţe de instrucţiuni din memoria internă.
6
7. Pentru a "conversa" cu utilizatorul, un calculator dispune de următoarele dispozitive
periferice de bază: tastatura pentru introducerea programelor sau datelor de prelucrat,
display-ul sau ecranul pentru afişarea informaţiilor din calculator, care pot fi în particular
rezultatele prelucrării, şi imprimanta, pentru tipărirea pe hârtie a acestor informaţii. Unitatea
centrală de prelucrare preia date de la dispozitivele de intrare prin intermediul porturilor de
intrare, şi trimite date către dispozitivele de ieşire, prin intermediul porturilor de ieşire.
Totalitatea porturilor de intrare / ieşire formează sistemul de intrare / ieşire al calculatorului.
UCP este conectată la memorie şi porturile de I/E prin intermediul unor linii paralele,
care alcătuiesc magistrala de comunicaţie a calculatorului. Deci, ca element constitutiv
principal al unui calculator personal, este şi această conectare a tuturor resurselor sale prin
intermediul unei magistrale de comunicaţie.
Această magistrală are 3 secţiuni :
• magistrala de date (Data Bus), pe care microprocesorul citeşte date din memorie sau
porturile de intrare, sau scrie date în memorie sau porturile de ieşire. Datele citite din
memorie pot fi, în particular, instrucţiuni.
• magistrala de adrese (Address Bus), UCP-ul folosind aceste linii pentru a selecta
locaţia de memorie sau portul de I/E, din care se vrea o dată pentru a fi citită, sau în care
se doreşte înscrierea unei date.
• magistrala de control (Control Bus), formată din linii specifice utilizate de
microprocesor pentru controlul transferurilor de date pe magistrală. De exemplu,
printr-o linie se poate specifica dacă microprocesorul citeşte sau scrie date (dacă
microprocesorul ţine linia respectivă în "0", aceasta înseamnă cã procesorul citeşte date
din memorie sau porturile de intrare; dacă microprocesorul pune "1" pe această linie, se
va efectua o scriere în memorie sau porturile de ieşire), prin altă linie dacă se face o
operaţie cu memoria sau cu porturile de I/E etc.
Dimensiunea magistralei de date va da tipul procesorului, respectiv al calculatorului
realizat în jurul procesorului respectiv. Dacă magistrala de date are 16 linii, deci transferurile
de date se pot face numai pe cuvânt (1cuvânt = 2 octeţi), se spune că avem un calculator pe
16 biţi, dacă magistrala de date are 32 linii avem un calculator pe 32 biţi etc.
În mod obişnuit, magistrala unui calculator personal este controlată de microprocesor,
în sensul că microprocesorul este cel care dirijează transferul de date pe magistrală. Însă,
microprocesorul poate ceda controlul magistralei unor alte dispozitive, care pot efectua
transferuri de date pe magistrală. De exemplu, prin utilizarea unui dispozitiv de acces direct
la memorie, sau dispozitiv DMA (Direct Memory Access), procesorul poate ceda magistrala
acestui dispozitiv DMA, care efectuează transferuri de date între dispozitivele periferice şi
memorie, microprocesorul fiind degrevat de sarcina unor astfel de transferuri, şi efectuând în
acest timp alte operaţii, care duc la creşterea gradului de paralelism şi implicit la creşterea
vitezei de calcul. Când transferul DMA s-a terminat, dispozitivul DMA anunţă
7
8. microprocesorul, printr-o linie a magistralei, că poate prelua controlul magistralei, şi deci
poate efectua transferuri de date pe magistrală.
Cele mai frecvent întâlnite familii de microprocesoare sunt: Intel (8088/8086, 80286,
80386, I80486, Pentium), Motorola (Motorola 680xx), AMD, Zilog (Z80, Z8000), Sparc
(Sun Sparc şi UltraSparc pe 32 de biţi), Mips etc. Calculatoarele IBM PC/XT sau AT
utilizau unul din microprocesoarele I8088 sau I8086 ale firmei INTEL, calculatoarele din
familia IBM PS/2 unul din microprocesoarele I8086, I80286, I80386 sau chiar I80486, iar
calculatoarele IBM actuale folosesc procesoare puternice cum ar fi Pentium II sau Pentium
III.
Pentru exemplificare, microprocesorul I8088 are magistrala de date de 8 biţi, magistrala
de adrese de 16 biţi, magistrala de control de 8 biţi, iar microprocesorul I8086 are magistrala
de date de 16 biţi, magistrala de adrese de 20 de biţi şi magistrala de control de 8 biţi.
Celelalte microprocesoare Intel vor fi tratate pe larg în secţiunile următoare.
Un microprocesor poate adresa în mod direct un spaţiu de memorie de 2na locaţii de
memorie, unde na este numărul de linii de adresă ale magistralei microprocesorului. La
calculatoarele personale actuale, unitatea elementară de memorie care poate fi adresată este
octetul. Deci, microprocesorul poate scrie/citi în/din memorie cel puţin octeţi. Dacă
magistrala de date are mai mult de 8 linii, cum este cazul microprocesorului I8086 care are 16
linii de date, se pot face transferuri de date între microprocesor şi memorie atât pe octet cât şi
pe cuvânt (1 cuvânt = 2 octeti = 16 biţi). La microprocesoarele I80386 şi I80486, care au
magistrala de date de 32 de biţi, se pot face transferuri pe octet, pe cuvânt sau pe dublu-
cuvânt (1 dublu-cuvânt = 2 cuvinte = 32 de biţi ).
Totalitatea adreselor fizice de memorie pe care le poate forma un microprocesor,
formează spaţiul de adrese de memorie. De exemplu, la I8086 spaţiul de adrese de memorie
este 0 -- 220-1, adică un spaţiu de adrese de memorie de 1Moctet; microprocesoarele I80386,
I80486 şi Pentium, cu 32 de linii de adresă, având un spaţiu de adrese de memorie de 232,
adică 4Gocteţi. Spaţiul de adrese de memorie se măsoară în octeţi, cu următorii multipli:
1Koctet sau 1Kb(yte) = 210 octeţi (1024 octeţi), 1Moctet sau 1Mb = 210 Kb, 1Goctet sau 1Gb
= 210 Mb.
Analog locaţiilor de memorie, fiecare port de intrare/ieşire are asociată o adresă de
intrare/ieşire. Totalitatea adreselor de I/E formează spaţiul de I/E al unui microprocesor. La
microprocesorul I8086, porturile pot fi pe 8 sau 16 biţi, după cum microprocesorul poate citi
sau scrie date din/în porturile respective (pe octet sau pe cuvânt). Procesoarele din familia
Intel 80x86 pot adresa un spaţiu de I/E de 64Kporturi de 8biţi, sau 32Kporturi de 16 biţi.
Fiecare microprocesor are o intrare de ceas, semnalul de la această intrare fiind folosit
pentru sincronizarea operaţiilor sale interne. Frecvenţa semnalului de ceas determină viteza
cu care microprocesorul procesează datele, şi este important ca această frecvenţă să fie cât
mai mare. De exemplu, dacă microprocesorul Z80 funcţiona la o frecvenţă de 2,5 sau 4MHz,
s-a ajuns ca un procesor Pentium III să poată funcţiona la o frecvenţă de 600MHz.
8
9. Memoria internă a unui calculator personal poate fi realizată cu circuite de două feluri :
• ROM -Read Only Memory - ce sunt memorii din care microprocesorul poate numai
să citească date, şi al căror conţinut nu se pierde la întreruperea alimentării
calculatorului. Memoriile ROM sunt utilizate pentru a stoca programe şi date care
trebuie să existe permanent în sistem. BIOS-ul (Basic Input Output Sistem)
sistemului de operare se află rezident în memoria ROM a calculatorului. Conţinutul
memoriilor de tip ROM poate fi şters cu ajutorul unui fascicul de raze ultraviolete
(memorii EPROM – Erasable Programmable ROM), existând şi variante mai
moderne (memoriile EEPROM – Electrical Erasable Programmable ROM), al căror
conţinut poate fi şters şi rescris cu ajutorul unui program special.
• RAM - Random Access Memory - ce sunt memorii la care microprocesorul poate
atât citi cât şi scrie date, şi al căror conţinut se pierde la întreruperea alimentării.
Sunt folosite pentru stocarea temporară a informaţiei.
Din punctul de vedere al tehnologiei de realizare, memoriile de tip RAM sunt de două
feluri:
• memorii statice (SRAM – Static RAM), care menţin informaţia atât timp cât există
tensiune de alimentare, fără a mai fi necesară reîmprospătarea (refresh-ul) sau
rescrierea informaţiei. Sunt memorii rapide, dar sunt scumpe.
• memorii dinamice (DRAM – Dynamic RAM), la care informaţia se volatilizează în
timp, şi de aceea este necesară reîmprospătarea periodică a acesteia, cu ajutorul unui
circuit specializat. Memoriile dinamice sunt mai lente decât memoriile statice, însă
sunt mai ieftine, şi sunt memoriile cu care se realizează memoria internă de mare
capacitate a calculatoarelor actuale. Există mai multe variante de memorii dinamice
DRAM, mai recente fiind:
- EDO RAM (Extended data Output DRAM) – care, printr-un artificiu, fac
posibilă citirea unor date din circuit în acelaşi timp în care se termină citirea
anterioară, rezultând o creştere a vitezei de acces la aceste memorii.
- SDRAM (Synchronous DRAM) – procesorul accesând aceste memorii la o
viteză sincronă cu viteza de lucru a magistralei calculatorului (plăcii de
bază), mergând până la 100 MHz. Memoriile ESDRAM (Enhanced SDRAM)
sunt variantele mai recente şi îmbunătăţite ale memoriilor SDRAM.
Circuitele de memorie sunt încapsulate în aşa numitele circuite DIPs (Dual Inline
Packages), sub forma unor barete de memorie, în două variante constructive:
• Circuite SIMM (Single Inline Memory Module), cu 30 de pini şi care permit un acces la
date pe 8 biţi, respectiv cu 72 de pini, şi care permit un acces la date pe dublu-cuvânt.
• Circuite DIMM (Double Inline Memory Module) – realizate într-o tehnologie mai
recentă, şi mai performante. Baretele DIMM au 168 de pini şi permit un acces la datele
conţinute pe 64 de biţi.
9
10. 2. REPREZENTAREA INTERNĂ A
INFORMAŢIEI
Este dificil de găsit o definiţie adecvată a noţiunii de informaţie, ea având multe
înţelesuri. Totuşi, în teoria informaţiei, sau mai precis în teoria transmiterii informaţiei,
termenul de informaţie se aplică acelor lucruri care pot fi comunicate, fie că au sau nu o
valoare. Astfel, cuvintele, numerele, imaginile de pe o foaie de hârtie sunt simboluri ce
reprezintă o informaţie .
Un calculator nu poate înţelege cuvinte, imagini sau chiar litere, şi nu poate procesa
informaţie fără să o dividă în unităţi mai mici de informaţie, la fel cum un copil, pentru a
înţelege un cuvânt, trebuie să audă sunetele care compun cuvântul respectiv.
Bitul este unitatea cea mai mică de informaţie. Un bit poate distinge între doua stări,
deci poate avea două valori: 0 sau 1, sau cu alte cuvinte "da" sau "nu", "alb" sau "negru". Un
calculator poate procesa cantităţi mai mari de informaţie, tratând grupurile de biţi ca unităţi de
informaţie. Astfel, o colecţie de 8 biţi numită octet sau "byte", unde fiecare bit poate fi 0 sau
1, poate distinge între 256 de stări diferite ( 28=256 ), deci dacă am vrea să comunicăm cu
cineva folosind un octet, am putea transmite cel mult 256 de mesaje diferite, fiecare mesaj
fiind asociat cu o combinaţie de 0 şi 1 a celor 8 biţi. Celelalte unităţi de masură a informaţiei,
multipli ai octetului, au fost introduse în capitolul precedent.
Ce înseamnă pentru un calculator un şir de biţi de genul 10011010 ?. Un asemenea şir
de biţi poate fi un număr, o literă a alfabetului, o instrucţiune a unui program sau orice alt
lucru. Deoarece calculatoarele reduc orice informaţie la o combinaţie de 0 şi 1, numerele din
calculator sunt reprezentate folosind numai combinaţii ale celor două cifre sau simboluri.
Astăzi, calculatoarele nu lucrează numai cu numere, ci la fel de mult sunt folosite şi
caracterele, calculatorul procesând cuvinte, propoziţii etc. Pentru aceasta, este necesar ca
fiecare caracter să fie reprezentat în mod unic ca o secvenţă de biţi, făcând posibilă
memorarea şi reprezentarea grafică a mesajelor. Cele mai utilizate coduri alfanumerice sunt
ASCII - American Standard Code for Information Interchange - şi EBCDIC - Extended
Binary Coded Decimal Interchange Code. În prezent, marea majoritate a calculatoarelor
acceptă numai codul ASCII, în care fiecărui caracter alfanumeric îi corespunde un cod unic pe
7 biţi, sau pe 8 biţi în cazul codului ASCII extins. Întrucât codul ASCII este intens folosit de
către utilizatori, este necesară menţionarea codurilor ASCII ale celor mai utilizate caractere :
A - 65 a - 97 0 - 48 ' ' - 32 ( blanc )
10
11. B - 66 b - 98 1 - 49 CR - 13 ( Carriage Return )
C - 67 c - 99 2 - 50 LF - 10 (Line Feed )
D - 68 d - 100 3 - 51
ş.a.m.d ş.a.m.d. ş.a.m.d.
De asemenea, instrucţiunile programelor sunt codificate folosind secvenţe de biţi. De
exemplu, secvenţa 10101001 poate determina calculatorul să adune 2 numere, în timp ce altă
secvenţă poate determina calculatorul să execute o altă operaţie.
2.1. Reprezentarea numerelor într-un sistem
de numeraţie.
Se numeşte sistem de numeraţie, o mulţime finită de simboluri (sau cifre) şi de reguli
folosite pentru reprezentarea unui număr. Un sistem de numeraţie poziţional este un sistem de
numeraţie la care aportul unei cifre în valoarea totală a unui număr depinde atât de valoarea
cifrei, cât şi de locul ocupat de cifră în reprezentarea numărului respectiv. Sistemul de
numeraţie arab este un sistem de numeraţie poziţional, spre deosebire de sistemul de
numeraţie roman care nu este un sistem poziţional.
Teorema:
Fie p∈ N, p > 1. Atunci (∀) N∈Z, (∃) m∈N astfel încât să avem în mod unic
egalitatea :
N = xmpm + xm-1pm-1 +.......+ x1p + x0 (1)
unde 0 ≤ xi ≤ p-1 (∀) i = 0,1,...,m şi xm≠0
Demostraţie:
Se poate presupune că N∈ Z + (dacă N∈ Z- demonstraţia se va face identic pentru
numărul -N ∈ Z + ). Împărţind succesiv la p, obţinem egalităţile :
N = N1p + x0, x0 〈 p
N1 = N2p + x1, x1 〈 p
. (2)
.
Nm-1 = Nmp + xm-1, xm-1 〈 p
Nm = 0*p + xm , xm 〈 p
11
12. Deoarece N1 〉 N2 〉 N3 〉 ... ≥ 0, se va ajunge inevitabil după un număr de paşi - m - la un
cât egal cu zero.
Înmulţind cu p0 prima relaţie, cu p1 a doua relaţie ş.a.m.d cu pm ultima relaţie, adunând
membru cu membru şi simplificând, obţinem egalitatea (1). Unicitatea descompunerii
numărului N, într-o sumă ca cea de mai sus, rezultă din unicitatea obţinerii câtului şi restului
în relaţiile (2), conform teoremei de împărţire cu rest a două numere întregi.
Definiţie : Se numeşte reprezentarea în baza p a numărului întreg N, succesiunea de
cifre xmxm-1 ... x1x0, unde xi verifică relaţiile :
a) 0 ≤ xi ≤ p-1 (∀) i = 0,1,...,m şi xm≠0 (3)
b) N= xmpm + xm-1 pm-1 +.......+ x1p + x0
Conform teoremei precedente, reprezentarea (3) este unică.
Definiţie : Se numeşte reprezentarea în baza p a numărului real r, succesiunea de
cifre xmxm-1 ... x1x0,x-1x-2x-3..., unde xi verifică relaţiile :
a) 0 ≤ xi ≤ p-1 (∀) i = ... -2,-1,0,1,...,m şi xm≠0
b) r = xmpm + xm-1pm-1 +.......+ x1p + x0 + x-1p-1 + x-2p-2 + ....
Se demonstrează că reprezentarea de mai sus este unică.
Numărul real r se poate scrie sub forma :
r = ri + rl unde ri = [r] - partea întreagă a lui r
rl = {r} - partea fracţionară a lui r
Conform teoremei demonstrate anterior, numărul întreg ri se scrie în mod unic astfel :
ri = xmpm + xm-1pm-1 +.......+ x1p + x0 ,
unde 0 ≤ xi ≤ p-1 (∀) i = 0,1,...,m şi xm≠0
Înmulţind rl cu p şi reţinând partea întreagă, după care continuând înmulţirea părţilor
fracţionare cu p obţinem :
rl *p = x-1 + rl1
rl1*p = x-2 + rl2 , x-i - partea întreagă (4)
rl2*p = x-3 + rl3 , rli - partea fracţionară
ş.a.m.d.
Înmulţind relaţiile (4) cu p-1, p-2, p-3 ... şi adunând membru cu membru, după
simplificare obţinem: rl = x-1p-1 + x-2p-2 + ... (5)
Evident, reprezentarea (5) este unică.
Deci r = xmpm + xm-1pm-1 +....+ x1p + x0 + x-1p-1 + x-2p-2 + ...
Dacă prin înmulţirea cu p, a părţii fracţionare obţinute într-una din relaţiile (4), obţinem
rezultatul 0, numărul real r are un număr finit de cifre zecimale, altfel va avea un număr
infinit de cifre zecimale.
12
13. În concluzie, conform celor relatate anterior, pentru reprezentarea oricărui număr întreg
sau real, într-o baza oarecare p, se folosesc numai p simboluri sau cifre. Cifrele sistemului
binar sunt 0 şi 1, ale sistemului octal (baza 8) sunt 0,1,2,3,4,5,6,7, iar ale sistemului
hexazecimal (baza 16) sunt 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F.
2.2. Conversia numerelor dintr-o bază în alta
Fie numărul întreg N scris în baza p. Pentru a obţine echivalentul lui în baza q, scris
N(q), va trebui să obţinem o reprezentare de forma ymym-1 ... y1y0, unde N(q) = ymqm + ym-1qm-1
+.......+ y1q + y0 şi 0 ≤ yi ≤ q-1 (∀) i = 0,1,...,m; ym≠0.
Pentru aceasta, se împarte numărul N(p) la q şi apoi succesiv câturile obţinute, până
când se obţine câtul zero. Cifrele reprezentării în baza q sunt resturile împărţirilor succesive
luate în ordinea inversă obţinerii lor.
N(p) = N1(p)*q + y0
N1(p) = N2(p)*q + y2
. 0 ≤ yi ≤ q-1, i = 0,1,2,..,m
.
Nm-1(p) = Nm(p)*q + ym-1
Nm(p) = 0 * q + ym
În acest mod se face conversia unui număr întreg, din baza p în baza q, calculele fiind
efectuate în baza p.
Fie r(p) un număr real scris în baza p. Deci, r(p) se descompune într-o parte întreagă şi o
parte fracţionară astfel : r(p) = ri(p) +rl(p).
Numărul ri(p) fiind un număr întreg, se converteşte în baza q conform procedurii date
mai sus, obţinându-se o reprezentare de forma ymym-1 ... y1y0. Pentru conversia părţii
fracţionare, se înmulţeşte rl(p) cu q, se separă partea întreagă de partea fracţionară, apoi se
continuă înmulţirea părţii fracţionare cu q, repetându-se procedeul până când partea
fracţionară devine zero, sau până când se obţin cifrele părţii fracţionare în baza q, cu o
anumită precizie.
rl(p) *q = y-1 + rl1(p)
rl1(p)*q = y-2 + rl2(p)
rl2(p)*q = y-2 + rl3(p)
ş.a.m.d.
Deci r(q) = ymqm + ym-1qm-1 +....+ y1q + y0 + y-1q-1 + y-2q-2 + ... ,
13
14. ymym-1 ... y1y0,y-1y-2... fiind reprezentarea în baza q a numărului real r
De asemenea, calculele sunt efectuate în baza p. Se pot evidenţia proceduri de conversie
a numerelor întregi sau reale, din baza p în baza q, calculele fiind efectuate în baza q. Se va
exemplifica o astfel de procedură în exemplele următoare, transformând numere din baza 2, 8,
16 în baza 10, calculele fiind efectuate în baza 10.
Sistemele de numeraţie folosite de către utilizatorii de calculatoare, în afară de sistemul
zecimal, sunt: sistemul binar, sistemul octal şi sistemul hexazecimal. Sistemul binar este
sistemul de numeraţie în care lucrează calculatoarele electronice, datorită faptului că nu are
decât două cifre, ceea ce duce la o implementare uşoară a calculelor în hardware. Sistemele de
numeraţie octal şi hexazecimal sunt folosite deoarece comprimă şirurile lungi de biţi din
reprezentarea unui număr în baza 2, iar conversia din baza 2 in baza 8 sau 16, şi invers, se
face foarte uşor, fără calcule laborioase.
Exemple de conversie dintr-o bază în alta :
Exemplu de conversie din baza 10 în baza 2 :
13,725(10) = 13(10) + 0,725(10)
13(10) = 1101(2)
0,725 x 2 = 1,450 = 1 + 0,450
0,450 x 2 = 0,900 = 0 + 0,900
0,900 x 2 = 1,800 = 1 + 0,800
0,800 x 2 = 1,600 = 1 + 0,600
ş.a.m.d.
0,725(10) = 0,1011..(2)
Deci 13,725(10) = 1101,1011..(2)
Exemplu de conversie din baza 10 în baza 16 :
14
15. Deci 418(10) = 1A2(16)
Exemple de conversie din baza 2,8,16 în baza 10:
Fie ymym-1 ... y1y0,y-1y-2... un număr real reprezentat în baza p. Pentru a obţine
reprezentarea acestui număr în baza q, calculele fiind efectuate în baza q, va trebui să
calculăm următoarea sumă: ∑ yix pi (în baza q). În cazul numerelor întregi, se calculează o
sumă asemănătoare, dar din care lipsesc termenii corespunzători puterilor negative ale lui p.
10101(2) = 1x24 + 0x23 + 1x22 + 0x21 + 1x20 = 16 + 0 + 4 + 0 + 1 = 21(10)
1101110(2) = 1x26 + 1x25 + 0x24 + 1x23 + 1x22 + 1x21 + 0x20 = 64 + 32 + 0 + 8 + 4 +
+ 2 + 0 = 110(10)
101,1(2) = 1x22 + 0x21 + 1x20 + 1x2-1 = 4 + 0 + 1 + 0,5 = 5,5(10)
1A2(16) = 1x162 + 10x161 + 2x160 = 256 +160 + 2 = 418(10)
A0B(16) = 10x162 + 0x161 + 11x160 = 2560 + 0 + 11 = 2577(10)
163(8) = 1x82 + 6x81 + 3x80 = 64 + 48 + 3 = 115(10)
Exemple de conversie din baza 2 în baza 16 şi invers:
Pentru a transforma un număr din baza 2 în baza 16, nu este necesar să facem conversia
din baza 2 în baza 10 şi apoi conversia din baza 10 în baza 16, ci se poate face direct
conversia din baza 2 în baza 16 sau invers, utilizând tabela din figura 2.1.
Pentru a realiza conversia unui număr întreg din baza 2 în baza 16, se împarte numărul
binar în grupe de câte 4 cifre binare, începând de la cifra cea mai puţin semnificativă,
înlocuindu-se apoi fiecare grupă de 4 cifre binare cu cifra hexazecimală corespondentă din
tabela de mai jos. În cazul numerelor reale, împărţirea în grupe de câte 4 cifre binare se face
începând de la virgula zecimală spre cele două capete. Pentru conversia inversă, din baza 16
în baza 2, se înlocuieşte fiecare cifră hexazecimală cu grupul corespondent de 4 cifre binare
din tabelă. Zerourile din faţa numărului sunt nesemnificative.
Exemple :
110001010011110(2) = 0110 0010 1001 1110 = 629E(16)
10110,101011(2) = 0001 0110, 1010 1100 = 16,AC(16)
1AE(16) = 0001 1010 1110 = 110101110(2)
15
16. F24A(16) = 1111 0010 0100 1010 = 1111001001001010(2)
baza 10 baza 16 baza 2
0 0 0000
1 1 0001
2 2 0010
3 3 0011
4 4 0100
5 5 0101
6 6 0110
7 7 0111
8 8 1000
9 9 1001
10 A 1010
11 B 1011
12 C 1100
13 D 1101
14 E 1110
15 F 1111
Figura 2.1. Tabela de conversie a cifrelor hexazecimale în baza 2
Într-un mod asemănător, se poate face conversia din baza 2 în baza 8 şi invers, utilizând
o tabelă similară, ce asociază fiecărei cifre octale numărul binar echivalent scris pe 3 biţi.
Împărţirea numărului binar se face, în acest caz, pe grupe de câte 3 cifre.
2.3. Reprezentarea numerelor în calculator. Coduri
de reprezentare.
Ţinând cont de reprezentarea internă a semnului numerelor binare, distingem
următoarele trei coduri de reprezentare:
a) codul direct - în care numărul binar este reprezentat prin modulul numărului
precedat de un bit de semn; 0 dacă este pozitiv, 1 dacă este negativ.
Exemple:
x = +1101 se reprezintă în cod direct astfel : xd = 01101
y = - 11011,101 → yd = 111011,101
b) codul invers sau codul complementar faţă de 1 - în care dacă numărul este pozitiv,
se reprezintă în cod invers la fel ca şi în cod direct, deci precedat de un bit 0. Dacă numărul x
16
17. este negativ (x < 0), se inversează cifrele reprezentării binare în cod direct a numărului -x,
care este un număr pozitiv.
Exemple:
x = +1101 → xi = 01101
y = -1101,011 → yi = 10010,100
c) codul complementar faţă de 2 - În cazul numerelor pozitive, reprezentarea este
aceeaşi ca şi în codul direct. Pentru numerele negative, codul în complement faţă de 2 se
obţine din codul invers, la care se adaugă 1 în rangul cel mai puţin semnificativ.
Exemple:
x = +1101 → xc = 01101
y = -1101 → yi = 10010 +
1
⎯−⎯
yc = 10011
În prezent, codul în complement faţă de 2 este acceptat în exclusivitate la majoritatea
calculatoarelor electronice, şi îl vom folosi în continuare.
La reprezentare internă a unui număr binar, nu se poate face abstracţie de numărul de
biţi pe care se reprezintă numărul binar. Dacă se doreşte reprezentarea numărului binar pe un
număr mai mare de biţi, se face extensia bitului de semn în cei mai semnificativi biţi. De
exemplu, fie numărul zecimal -7, a cărui reprezentare în complement faţă de 2, pe un octet,
este 11111001 (+7 reprezentat în cod direct este 0111, deci -7 în cod complementar faţă de 2
va fi 1001, la care se face extensia bitului de semn până la octet ). Reprezentat în cod
complementar faţă de 2 pe un cuvânt, -7 va fi 1111111111111001 (de exemplu, în urma
execuţiei instrucţiunii MOV AX,-7 registrul AX va conţine valoarea binară
1111111111111001).
Ca o remarcă la reprezentarea în complement faţă de 2, se poate observa că numerele
pozitive vor avea întotdeauna cel mai semnificativ bit 0, în timp ce numerele negative vor
avea 1 în cel mai semnificativ bit.
Relativ la modul de reprezentare a virgulei zecimale, numerele reale pot fi reprezentate
în virgulă fixă sau în virgulă mobilă.
Un număr real reprezentat în virgulă fixă este o succesiune de cifre împărţite de o marcă
zecimală, într-o parte întreagă şi una fracţionară. Astfel, formatul de reprezentare în virgulă
fixă conţine un bit de semn, un câmp format dintr-un număr oarecare de biţi pentru
reprezentarea părţii întregi a numărului real şi un câmp pentru reprezentarea părţii fracţionare.
Aceste câmpuri sunt de lungime constantă.
Exemplu de format în virgulă fixă:
17
18. Reprezentarea în virgulă fixă limitează gama numerelor ce pot fi reprezentate. Astfel,
dacă i este numărul de biţi rezervaţi pentru partea întreagă, f numărul de biţi rezervaţi pentru
partea fracţionară, numărul real maxim ce poate fi reprezentat este rmax = 011.. 1,111...1, ce
conţine i biţi 1 în faţa virgulei zecimale şi f biţi 1 după virgula zecimală.
Dacă în cazul reprezentării în virgulă fixă a numerelor reale, sarcina evidenţei mărcii
zecimale revine programatorului, în cazul reprezentării în virgulă mobilă, această sarcină
revine calculatorului. Pentru a reprezenta un număr real r în virgulă mobilă sau flotantă,
acesta se scrie sub forma :
r = + M* bE ; b∈N, b ≥ 2 şi E∈Z
M se numeşte mantisă, E exponent, iar b este baza de reprezentare a numărului.
Reprezentarea numărului real r de mai sus este unică, dacă 1/b 〈 ⏐M⏐ 〈 1. Operaţia prin care
se modifică mantisa pentru a îndeplini această condiţie, ajustând corespunzător exponentul, se
numeşte normalizare a mantisei. De exemplu, adunând 0,785x101 (7,85) cu 0,625x101 (6,25),
obţinem 1,410x101, iar după normalizare 0,410x102.
Exemplu de format în virgulă mobilă :
Există mai multe formate standard de reprezentare a numerelor reale în virgulă fixă sau
mobilă, dar acestea nu vor fi tratate în secţiunea de faţă. Formatul de virgulă mobilă prezentat
mai sus este formatul IEEE pentru numere reale scurte (pe 32 de biţi). Operaţiile cu numere în
virgulă fixă sunt executate mai repede decât aceleaşi operaţii cu numere în virgulă mobilă,
deoarece în cel de-al doilea caz sunt necesare calcule suplimentare, dar sunt preferate
numerele reprezentate în virgulă mobilă datorită faptului că uşurează munca programatorului.
Procesoarele din familia Intel 80x86 nu au instrucţiuni de prelucrare a numerelor în virgulă
mobilă. Pentru aceasta sunt utilizate coprocesoarele aritmetice din familia 80x87. La 80486 şi
Pentium, coprocesorul arimetic este integrat pe cip împreună cu procesorul principal.
18
19. 3. LOGICĂ COMBINATORICĂ ŞI SECVENŢIALĂ
3.1. Elemente de logică booleană. Funcţii logice.
În practica electronică, cifrele binare se reprezintă prin două niveluri de tensiune.
Astfel, pentru familia de circuite logice integrate TTL - Tranzistor Tranzistor Logic - se
asignează "1" logic pentru un nivel de tensiune mai mare de 2,4V (cuprins între 2,4V şi 5V),
şi un "0" logic pentru un nivel de tensiune mai mic de 0,4V (cuprins între 0 şi 0,4V ). Într-o
manieră simplificată, se poate considera că "1" logic este reprezentat de un nivel de tensiune
apropiat de +5Vcc, iar "0" logic este reprezentat de un nivel de tensiune apropiat de 0Vcc,
majoritatea circuitelor electronice dintr-un calculator fiind alimentate cu o tensiune electrică
continuă între +5Vcc şi 0Vcc.
Algebra care corespunde logicii binare sau bivalente, utilizate până în prezent în
calculatoare, este algebra Boole. Algebra Boole operează pe o mulţime B formată din două
valori: "0" şi "1" (deci B = {0,1}), pe care se definesc trei legi de compoziţie : negaţia,
disjuncţia şi conjuncţia.
Complementarea logică sau negaţia (operatorul NOT) este definită prin următorul tabel
de adevăr :
Simbolul grafic cel mai utilizat pentru reprezentarea operatorului negaţie este
următorul:
Disjuncţia logică sau suma logică (operatorul SAU,OR) şi conjuncţia logică sau
produsul logic (operatorul ŞI, AND ) sunt definite de următoarele tabele de adevăr:
Simbolurile grafice utilizate pentru reprezentarea celor două operaţii logice sunt:
19
20. Elementele mulţimii B satisfac următoarele proprietăţi, (∀) X,Y,Z ∈B:
1. idempotenţa: X+X = X ; X*X = X
2. comutativitate: X+Y = Y+X ; X*Y =Y*X
3. asociativitate: X+(Y+Z) = (X+Y)+Z ; X*(Y*Z) = (X*Y)*Z
4. distributivitate: X*(Y+Z) = X*Y+X*Z ; X+Y*Z = (X+Y)*(X+Z)
5. existenţa elementului neutru: X+0 = X ; X*1 = X
6. existenţa complementului: X+X = 1 ; X*X = 0
7. dubla negaţie: X=X
8. legile lui De Morgan: X*Y = X+Y ; X+Y = X*Y
9. absorbţia: X*(X+Y) = X ; X+X*Y = X
Formulele lui De Morgan ne permit să scriem orice relaţie logică folosind numai doi din
cei trei operatori definiţi anterior; sau numai NOT şi OR, sau numai NOT şi AND. Dacă
combinăm cei doi operatori din fiecare pereche de operatori dată mai sus, obţinem încă doi
noi operatori, cu tabelele de adevăr şi simbolurile următoare:
operatorul NOR (SAU-NU) operatorul NAND (ŞI-NU)
Orice relaţie logică se poate scrie utilizând numai unul din operatorii NAND sau NOR.
O altă operaţie logică, des utilizată, este operaţia sau relaţia logică SAU EXCLUSIV
(XOR), al cărei tabel de adevăr şi simbol grafic sunt date mai jos.
20
21. O funcţie booleană de n variabile este o funcţie f : Bn→B, unde Bn = BxBx....xB de n
ori. Valorile unei funcţii booleene pot fi prezentate într-un tabel, cu 2n linii şi n+1 coloane,
numit tabel de adevăr al funcţiei. În primele n coloane se trec cele 2n combinaţii de valori ale
variabilelor funcţiei, iar în coloana n+1 se trec valorile funcţiei corespunzătoare fiecărei
combinaţii.
Exemplu: f(X,Y,Z) = XYZ + YZ +XZ
O funcţie booleană, sau o expresie booleană, este în forma canonică disjunctivă, dacă se
scrie ca o disjuncţie de mintermeni, şi este în forma canonică conjunctivă, dacă se scrie ca o
conjuncţie de maxtermeni. Un mintermen este un produs logic, conţinând fiecare variabilă o
dată şi numai o dată, fie variabila fie negaţia ei. Un maxtermen este o sumă logică, ce conţine
fiecare variabilă o dată şi numai o dată, fie variabila fie negaţia ei.
Exemple:
f(X,Y,Z) = XYZ +XYZ +XYZ
f(X1,X2,X3) = (X1+X2+X3)(X1+X2+X3)(X1+X2+X3)
Funcţia logică al cărei tabel de adevăr a fost prezentat mai sus se poate scrie
în forma canonică disjunctivă astfel :
f(X,Y,Z) = XYZ +YZ + XZ = XYZ + (X+X)YZ + X(Y+Y)Z = XYZ + XYZ + XYZ +XYZ + XYZ
Forma canonică conjunctivă este mai puţin utilizată în practică decât forma canonică
disjunctivă.
3.2. Implementarea şi minimizarea funcţiilor logice
Porţile logice sunt circuitele care implementează funcţiile logice de bază: NOT,AND,
OR, NAND, NOR, XOR. Prin implementarea unei funcţii logice, se înţelege realizarea ei cu
ajutorul circuitelor fundamentale sau porţilor logice. Costul unei funcţii logice este egal cu
numărul de intrări în circuitele logice elementare ce realizează funcţia dată.
Exemple:
1. Să se implementeze funcţia f(X,Y,Z) = XYZ + XY + XYZ
21
22. 2. Să se implementeze funcţia f(X,Y) = XY + X utilizând întâi porţi AND, OR,
NOT, şi apoi utilizând numai porţi NAND.
Numărul de niveluri al unei structuri sau implementări logice este egal cu numărul
maxim de circuite pe care le parcurge un semnal de la intrare la ieşire. În primul exemplu,
funcţia este implementată pe 3 niveluri logice, în cel de-al doilea exemplu fiind implementată
pe 2 niveluri logice.
Prin minimizarea unei funcţii logice se înţelege metodologia obţinerii unei expresii
logice echivalente cu cost minim, pentru un număr dat de niveluri logice. Funcţia din
exemplul 1, de mai sus, poate fi minimizată şi implementată astfel :
f(X,Y,Z) = XYZ + XY + XYZ = (X + X)YZ +XY = YZ + XY
Costul funcţiei după minimizare este C(f) = 7, spre deosebire de prima implementare, în
care costul funcţiei este C(f) = 13.
Metoda Veitch - Karnaugh de minimizare a unei functii logice:
Se consideră o funcţie de n variabile logice, în forma normală disjunctivă. Se împart
cele n variabile în 2 mulţimi de k şi p elemente, k + p = n. Vom forma o matrice cu 2k linii şi
22
23. 2p coloane, fiecare element al matricii indicând valoarea funcţiei corespunzătoare valorilor
variabilelor ce poziţionează elementul în matrice. În general, putem grupa 21, 22, 23,..., 2p
termeni vecini cu valori 1 ale funcţiei , eliminându-se din termenul rezultant 1,2,3,...,p
variabile, pentru care echivalenţii binari îşi schimbă valoarea în rangurile corespunzătoare
acestor variabile. Pentru ordonarea coloanelor şi liniilor matricei Veitch-Karnaugh, se
folosesc combinaţiile posibile ale valorilor variabilelor de intrare, două coloane sau linii
alăturate schimbând doar un singur bit.
Exemplul 1:
Să se minimizeze următoarea funcţie de 4 variabile : f(X1,X2,X3,X4) = X1X2X3X4+ X1X2X3X4+
+ X1X2X3X4+ X1X2X3X4+ X1X2X3X4+ X1X2X3X4+ X1X2X3X4
Exemplul 2:
Să se minimizeze următoarea funcţie de 3 variabile : f(X1,X2,X3) = X1X2X3+ X1X2X3+
+ X1X2X3+ X1X2X3+ X1X2X3+ X1X2X3
3.3. Materializarea funcţiilor logice. Circuite logice.
Orice poartă logică definită pentru 2 intrări, şi care implementează una din funcţiile
logice de bază descrise mai sus, poate fi gândită şi utilizată cu un număr mai mare de intrări.
Astfel, există porţi logice OR, AND, NAND etc. cu 3, 4 sau chiar 8 intrări. Pe o capsulă de
circuit integrat pot fi implementate una sau mai multe porţi, depinzând de dimensiunea
capsulei (numărul de pini al capsulei) precum şi de numărul de intrări ale porţilor logice. De
23
24. exemplu, pe o capsulă cu 14 pini pot să încapă 6 inversoare, 4 porţi AND cu 2 intrări, 1
poartă NAND cu 8 intrări etc.
Circuitul 7404, reprezentat mai sus, este o capsulă de 14 pini în tehnologie TTL, care
conţine 6 inversoare; circuitul 7400 conţine 4 porţi NAND cu 2 intrări ; circuitul 7432 conţine
4 porţi OR cu 2 intrări etc. Capsulele sunt alimentate la o tensiune de +5Vcc.
În funcţie de tehnologia de realizare, există trei mari categorii de circuite logice :
- TTL - Tranzistor Tranzistor Logic, cu varianta TTL Shottky.
- ECL - Emiter Coupled Logic
- MOS - Metal Oxid Semiconductor, cu cele 3 variante: PMOS, NMOS, CMOS
Caracteristicile principale ale circuitelor logice :
- timpul de propagare, notat cu tp şi măsurat în nsec. Este timpul scurs între momentul
modificării unei variabile la intrare şi momentul când răspunsul este furnizat la ieşirea
circuitului.
- puterea disipată, notată cu P şi măsurată în mW.
- Fan-out, ce reprezintă numărul maxim de intrări ce pot fi conectate la ieşirea unui
circuit logic. La ieşirea unui circuit nu pot fi conectate un număr prea mare de intrări. Astfel,
pentru circuitele TTL, Fan-out = 10, ceea ce înseamnă că la ieşirea unei porţi logice TTL, din
cele prezentate în acest capitol, pot fi conectate maximum 10 intrări ale altor porţi logice.
- valorile tipice ale tensiunilor de intrare şi ieşire. De exemplu, pentru familia de
circuite logice TTL, tensiunea de ieşire minimă garantată în starea "high" (atunci când la
24
25. ieşire trebuie să fie "1" logic) este VOH = 2,4V, iar tensiunea de ieşire maximă în starea "low"
(atunci când la ieşire trebuie să fie "0" logic) este VOL = 0,4V.
În mod obişnuit, ieşirile circuitelor date mai sus nu pot fi conectate împreună. În unele
situaţii, cum este conectarea la magistrală, apare necesitatea conectării împreună a ieşirilor
mai multor circuite logice. În acest caz devin utile circuitele "tri-state", ieşirea circuitului
având trei stări posibile : nivel ridicat ("1"), nivel coborât ("0"), şi deconectat sau starea de
mare impedanţă. Dacă circuitul "tri-state" este activat, ieşirea circuitului va fi în starea "high"
sau "low" în funcţie de intrările circuitului. Dacă circuitul este dezactivat, ieşirea circuitului
va fi deconectată de la magistrală, magistrala sau linia comună fiind controlată de ieşirea altui
circuit logic.
Exemple:
Poartă ŞI-NU cu 2 intrări de date şi o intrare de activare
Obs: Semnalele active pe nivel coborât sunt marcate pe desen printr-un cerculeţ,
denumirea semnalului fiind supraliniată.
Mai jos este prezentat un circuit buffer sau circuit tampon, a cărui ieşire Z va fi egală cu
intrarea X dacă intrarea de activare E este 1, altfel ieşirea Z va fi în starea de mare impedanţă.
Exemplu de cuplare la o linie de magistrală a mai multor semnale (X1,X2,X3), utilizând
circuite buffer:
25
26. 3.4. Structuri logice combinaţionale
O structură logică combinaţională, sau un circuit logic combinaţional, este un circuit cu
n intrări şi m ieşiri, la care ieşirile pot fi exprimate ca funcţii numai de intrările circuitului.
Decodorul este circuitul logic combinaţional cu n variabile de intrare şi cel mult 2n
variabile de ieşire, la care numai o singură ieşire este activă (de regulă în starea "low") la un
moment dat, celelalte ieşiri fiind inactive. Va fi activă ieşirea yk, k=0,1, ...2n-1, unde k
reprezintă corespondentul zecimal al numărului binar XnXn-1...X2X1 existent pe cele n linii de
intrare. Circuitul decodor poate avea una sau mai multe intrări de activare.
Exemple:
Circuitul 7442 este un decodor zecimal, cel mult una din cele 10 ieşiri fiind activă la un
moment dat. Astfel, dacă la intrare avem combinaţia DCBA = 0111, toate ieşirile vor fi în "1"
logic, cu excepţia ieşirii 7 care va fi în "0" logic.
Circuitul 74138 este un decodor octal cu 3 intrări de activare. Circuitul va fi activ dacă
E1=E2=0 şi E3=1. Altfel, toate ieşirile sunt inactive (în starea "high") indiferent de combinaţia
de pe liniile C,B,A. Dacă circuitul este activ, acesta va funcţiona conform următoarei tabele
de adevăr :
26
27. Circuitul multiplexor este unul din principalele circuite combinaţionale, fiind denumit
uneori şi circuit "selector", deoarece este utilizat ca un comutator de selectare a anumitor
intrări. De exemplu, un multiplexor cu 8 intrări selectează şi trimite la ieşire una din cele 8
intrări, în funcţie de un cod de selecţie pe 3 biţi, aflat pe cele 3 intrări de selecţie.
În cazul general, cu ajutorul celor n intrări de selecţie, se selectează una din cele 2n
intrări de date, intrare care este cuplată la ieşire. Uneori, circuitele multiplexoare sunt
prevăzute cu intrări de activare. Un exemplu concret de circuit multiplexor este circuitul
74151, care implementează următoarea funcţie logică:
Y = S(CBAI0+CBAI1+CBAI2+CBAI3+CBAI4+CBAI5+CBAI6+CBAI7)
Dacă S=1 circuitul este inactiv, deci Y=0 indiferent de intrările C,B,A, I0-I7. Circuitul
este activ, funcţionând ca un comutator comandat de intrările de selecţie, numai dacă S=0.
Un alt circuit logic combinaţional este sumatorul, care realizează suma a două numere
binare. De exemplu, circuitul sumator CDB483 adună două numere binare pe 4 biţi astfel :
C4∑3∑2∑1∑0 = X3X2X1X0 +Y3Y2Y1Y0 + C0
27
28. Pentru a aduna două numere pe n biţi, se conectează mai multe circuite CDB483 în
cascadă, ca în figura de mai jos. De regulă, se preferă n = 4k.
Tot circuite combinaţionale sunt şi unităţile aritmetico-logice, care pot efectua diferite
operaţii aritmetice şi logice. De exemplu, ALU74181 este o unitate aritmetico-logică pe 4 biţi,
care poate realiza 16 operaţii logice şi 16 operaţii aritmetice asupra operanzilor pe 4 biţi.
Circuitul are 4 intrări de selecţie a operaţiei şi o intrare de control a modului. Dacă intrarea de
control a modului este "0", circuitul realizează o operaţie aritmetică asupra operanzilor:
adunare, scădere etc., operaţie selectată de cele 4 intrări de selecţie a operaţiei. Dacă intrarea
de control este "1", circuitul va realiza una din cele 16 operaţii logice (produs logic, sumă
logică etc.) selectate de intrările de selecţie a operaţiei. Pentru a realiza operaţii logice sau
aritmetice pe mai mulţi biţi, se conectează mai multe circuite ALU74181 în cascadă. O
asemenea unitate aritmetico-logică, dar mult mai performantă, se găseşte în interiorul oricărui
microprocesor.
3.5. Sisteme logice secvenţiale
Capacitatea de a memora este foarte utilă în soluţionarea unor probleme. Nu toate
problemele pot fi rezolvate într-o manieră pur combinaţională. Funcţia de memorare ne
permite să reţinem datele până în momentul când este necesară prelucrarea lor, împreună cu
alte date de intrare. Dispozitivele secvenţiale sau dispozitivele cu memorie, au o intrare de
ceas (sau intrare de tact), starea lor schimbându-se numai ca urmare a tranziţiei acestui semnal
de ceas.
28
29. Un sistem logic pur combinaţional nu posedă memorie, ieşirile la un moment dat fiind
complet definite de intrări. La un sistem secvenţial, relaţia dintre ieşiri şi intrări este
determinată şi de evoluţia anterioară a intrărilor şi ieşirilor. Un sistem logic secvenţial poate fi
divizat într-un circuit pur combinaţional şi un circuit cu memorie astfel:
Dacă poarta logică este elementul combinaţional de bază al structurilor combinaţionale,
bistabilul este elementul secvenţial de bază al sistemelor secvenţiale. Elementele de
memorare, şi în particular bistabilii, îşi modifică ieşirea în funcţie de intrări numai ca urmare
a tranziţiei semnalului de ceas.
3.5.1. Tipuri de bistabile
Bistabilul de tip D - este elementul fundamental de memorare.
Ieşirea Q la momentul n+1 (la a n+1-a tranziţie a semnalului de ceas) este egală cu
intrarea D la momentul n (intrarea anterioară tranziţiei n+1 a semnalului de ceas). Mai clar,
funcţionarea bistabilului de tip D rezultă din următoarea diagramă de semnale:
29
30. Bistabilul de tip R-S
Intrarea R, numită şi intrare de Reset, aduce ieşirea Q a bistabilului în zero la următorul
front activ al semnalului de ceas, sau altfel spus, resetează ieşirea bistabilului. Dacă intrarea
S, numită şi intrare de Set, este 1, ieşirea bistabilului va trece în 1 la următorul front activ al
ceasului. Dacă R=S=0, ieşirea bistabilului rămâne nemodificată după a n+1-a tranziţie a
semnalului de ceas. R=S=1 determină trecerea bistabilului într-o stare nedeterminată (ieşirea
poate fi atât 0 cât şi 1), fiind necesară evitarea acestei combinaţii. Pot exista bistabile R-S fără
intrare de ceas, bistabilul fiind resetat imediat ce intrarea R=1, şi fiind setat imediat ce
intrarea S=1.
Bistabilele pot fi active pe nivel sau pe front. În cazul bistabilelor active pe nivel,
tranziţia ieşirii bistabilului este determinată de nivelul semnalului de ceas, spre deosebire de
bistabilele active pe front, la care tranziţia ieşirii este determinată de frontul crescător sau
descrescător al semnalului de ceas. Bistabilul de tip D prezentat anterior este un bistabil activ
pe frontul crescător al semnalului de ceas.
Bistabilul de tip J-K
Spre deosebire de bistabilul R-S, în cazul bistabilului J-K, dacă J=K=1, ieşirea Q a
bistabilului la momentul n+1 va fi egală cu ieşirea Q la momentul anterior tranziţiei n+1 a
semnalului de ceas, inversată.
30
31. Bistabilele integrate care pot fi întâlnite pe piaţă sunt puţin mai complicate decât cele
prezentate anterior. Astfel, circuitul 7474 (sau echivalentul său CDB474) conţine 2 bistabile
de tip D pe capsulă, care arată ca în figura 3.1. R şi S sunt intrări asincrone active pe nivel
coborât, care resetează, respectiv setează ieşirea Q a bistabilului, indiferent de semnalul de
ceas. De asemenea, fiecare bistabil mai este prevăzut cu o ieşire Q, ce reprezintă ieşirea Q
inversată. Ceasul este activ pe front crescător. Capsula 7473 (sau CDB473) conţine 2 bistabile
J-K active pe frontul descrecător al semnalului de ceas, cu intrări asincrone de set şi reset.
Figura 3.1. Bistabilele integrate 7474 şi 7473
3.5.2. Registre şi numărătoare
Mai multe bistabile pot fi grupate în configuraţii de registre sau numărătoare. Registrele
folosesc, de obicei, ca dispozitiv de memorare a datelor. Spre deosebire de bistabile, care
memorează o informaţie de un bit, registrele sunt dispozitive care pot stoca cuvinte (mai mulţi
biţi), deci registrele sunt realizate prin alăturare de bistabile, fiecare bistabil memorând un
singur bit. Registrele pot fi cu acces paralel sau cu acces serie. La registrele cu acces paralel,
operaţia de încărcare se realizează simultan în cele n circuite basculante ale registrului, pe
frontul activ al semnalului de ceas.
Exemplu de registru cu acces paralel, implementat cu bistabile de tip D:
În cazul registrelor cu acces serie, încărcarea bistabilelor registrului se face serial, de la
o intrare serială. Exemplu de registru serie, implementat cu bistabile de tip D:
31
32. La fiecare front activ al semnalului de ceas SI→Q1, Q1→Q2, Q2→Q3, Q3→Q4.
Un exemplu concret de registru integrat este circuitul 7495 (sau CDB495) prezentat în
figura 3.2, şi care este un registru de 4 biţi, cu posibilitate de operare sincronă serie sau
paralelă. Funcţionarea circuitului 7495 este următoarea: Dacă S=1, este permisă operarea
paralelă, şi se vor încărca în registru, în paralel, datele de la D0-D3, la o tranziţie din 1 în 0 a
intrării de tact CP2 (ceas activ pe front descrescător). Dacă S=0, este permisă operarea serie, şi
la o tranziţie din 1 în 0 a intrării de ceas CP1, se realizează deplasarea serie dreapta a
informaţiei din registru: DS→Q0, Q0→Q1, Q1→Q2, Q2→Q3.
Figura 3.2. Circuitele 7495 şi 74193
De asemenea, mai multe bistabile pot forma o configuraţie de numărător, o asemenea
configuraţie numărând impulsurile de la intrarea de ceas a bistabilelor. Ieşirile bistabilelor
sunt interpretate, în acest caz, ca un număr binar ce reprezintă starea numărătorului, sau cu
alte cuvinte, ieşirile bistabilelor reprezintă numărul de impulsuri de ceas apărute la intrarea de
tact a bistabilelor. Astăzi nu se mai realizează practic numărătoare cu circuite bistabile
individuale, existând numeroase numărătoare integrate.
Astfel, circuitul 74193 este un numărător binar reversibil de 4 biţi (sau numărător
modulo 16). Circuitul are două intrări de ceas active pe front pozitiv: Cu - pentru
incrementarea numărătorului şi Cd - pentru decrementarea numărătorului. Numărătorul poate
fi resetat (Y3=Y2=Y1=Y0=0), dacă intrarea R=1. PL este o intrare de comandă a încărcării
paralele, deci dacă PL efectuează o tranziţie din "1" în "0", se realizează încărcarea paralelă:
D0→Y0, D1→Y1, D2→Y2, D3→Y3. Numărarea este posibilă dacă PL=1 şi R=0. Circuitul
32
33. incrementează (adună 1) numărul binar Y3Y2Y1Y0 la fiecare front crescător al intrării Cu, şi
decrementează (scade 1) numărul Y3Y2Y1Y0 la fiecare front crescător al intrării Cd. Ieşirile
TCD şi TCU sunt "low" la trecerea prin zero a numărătorului când se numără înapoi, respectiv la
trecerea prin 15 când se numără înainte. Funcţiile logice realizate de cele două ieşiri sunt:
TCU = Y3Y2Y1Y0Cu
TCD = Y3Y2Y1Y0Cd
Aceste două ieşiri sunt necesare pentru cuplarea mai multor numărătoare 74193 în
cascadă, în vederea implementării unor numărătoare pe mai mulţi biţi.
Funcţionarea ca numărător înainte rezultă din următoarea diagramă de semnale:
O diagramă asemănătoare poate fi trasată şi în cazul numărării înapoi.
33
34. 4. MICROPROCESOARELE DIN FAMILIA INTEL 80x86
4.1. Microprocesorul I80286
4.1.1. Caracteristici generale
Microprocesorul IAPX-286, sau I80286, este un microprocesor produs de firma INTEL,
aparţinând familiei IAPX, ce cuprinde microprocesoarele I8088, I8086, I80286, I80386,
I80486, Pentium. I80286 poate funcţiona până la o frecvenţă de 25MHz, fiind perfect
compatibil în jos cu microprocesoarele anterioare din familie: I8088 şi I8086. Are două
moduri de lucru: modul real şi modul protejat. Setul de instrucţiuni al microprocesorului
I8086 a fost lărgit cu instrucţiuni specifice modului de lucru protejat, ce oferă suportul
necesar implementării unor sisteme de operare multitasking, cum este OS/2. Într-un asemenea
sistem de operare, unitatea centrală de prelucrare serveşte pe rând mai multe taskuri, sau
programe, astfel încât utilizatorul are impresia că sunt rulează mai multe programe simultan.
I80286 are magistrala de date de 16 biţi la fel ca şi I8086, dar în schimb are magistrala
de adrese de 24 de biţi, cu care poate adresa în mod direct un spaţiu de memorie de
16Mocteţi. De asemenea, are în compunere o unitate de gestiune a memoriei, prin intermediul
căreia poate adresa o memorie virtuală de 1Goctet. La fel ca şi I8086, poate adresa un spaţiu
de I/E de 64 Kporturi de 8 biţi sau 32 Kporturi de 16 biţi.
I80286 lucrează în conjuncţie cu coprocesorul matematic I80287, care, spre deosebire
de I8087, poate asigura asistenţă microprocesorului I80286, în ce priveşte efectuarea
calculelor matematice, şi în modul protejat.
Microprocesorul I80286 este microprocesorul în jurul căruia sunt realizate
calculatoarele IBM AT sau compatibile, folosind o magistrală de tip ISA - Industrial
Standard Architecture. I80286 este livrat în două moduri diferite: într-o capsulă de plastic de
formă pătrată, cu pini numai pe cele 4 laturi ale capsulei, sau într-o capsulă pătrată ce conţine
o matrice de pini - Pin Grid Array.
4.1.2. Arhitectura internă a microprocesorului I80286
Microprocesorul I80286 este compus din 4 unităţi independente care lucrează în paralel:
- unitatea de interfaţă cu magistrala - BU (Bus Unit);
- unitatea instrucţiunilor - IU (Instrucţion Unit);
- unitatea de execuţie - EU (Execution Unit);
- unitatea de adresare - AU (Adress Unit).
34
35. Unitatea de interfaţă cu magistrala controlează toate operaţiile pe care microprocesorul
le efectuează pe magistrală, generând adresele, datele şi semnalele de control pentru memorie
şi porturile de I/E. BU transferă date între memorie sau porturi, şi microprocesor, la cererea
unităţii de execuţie. Dacă BU nu are o astfel de cerere din partea unităţii de execuţie, va aduce
din memorie următoarea instrucţiune în secvenţă, pe care o plasează într-o coadă de
instrucţiuni. Aceasta presupune că instrucţiunile se execută în secvenţă, una după alta, în
ordinea în care apar în memorie. Dacă survine o ruptură în secvenţă (de exemplu o
instrucţiune de salt), coada de instrucţiuni este resetată şi se reîncepe citirea instrucţiunilor cu
anticipaţie de la noua adresă. Coada de instrucţiuni este o memorie internă de 6 octeţi, care
memorează codurile instrucţiunilor înainte de a fi utilizate de unitatea instrucţiunilor. Acest
mecanism de citire cu anticipaţie a instrucţiunilor permite eliminarea timpilor morţi de citire
din memorie a instrucţiunii următoare.
Figura 4.1.1. Schema bloc internă a microprocesorului I80286
Unitatea instrucţiunilor primeşte instrucţiuni din coada de instrucţiuni, le decodifică, şi
le plasează într-o altă coadă, cu lungimea de 3 octeţi, numită coada instrucţiunilor
decodificate.
Unitatea de execuţie execută instrucţiunile preluate din coada de instrucţiuni
decodificate, şi face apel la unitatea de interfaţă cu magistrala, pentru toate transferurile de
date cu memoria sau cu porturile de I/E. Unitatea de execuţie conţine o unitate aritmetico-
logică - Arithmetical Logical Unit, destinată efectuării calculelor aritmetice şi logice care
intervin în execuţia instrucţiunilor. UAL efectuează calculele manevrând regiştrii generali şi
35
36. operanzii instrucţiunilor, şi totodată gestionează indicatorii de condiţie şi stare conţinuţi în
registrul indicatorilor de condiţie şi stare F.
Unitatea de adresare asigură gestiunea memoriei, mecanismele de protecţie a memoriei
şi translatarea adreselor virtuale (sau logice) în adrese fizice, care sunt apoi utilizate de
unitatea de interfaţă cu magistrala.
Arhitectura microprocesorului I80286 este o arhitectură de tip bandă de asamblare, sau
"pipe- line", cele 4 unităţi lucrând în paralel, astfel că, spre exemplu, în timp ce unitatea de
execuţie este ocupată cu execuţia instrucţiunii curente, unitatea de interfaţă cu magistrala
încarcă instrucţiunea următoare, sau transferă în memorie rezultatul instrucţiunii executate
anterior. În acelaşi timp, unitatea instrucţiunilor decodifică următoarea instrucţiune de
executat, pe care o pune în coada de instrucţiuni decodificate, pentru a fi preluată de unitatea
de execuţie.
4.1.3. Registrele microprocesorului I80286
Microprocesorul I80286 conţine 15 registre interne de 16 biţi.
Aceste registre pot fi grupate în 5 categorii astfel:
- registre generale
- registre indicatoare de adresă şi index
- registre de segment
- registrul pointerului de instrucţiuni
- registre de control şi stare
Figura 4.1.2. Registrele microprocesorului I80286
Registrele generale AX, BX, CX, DX sunt utilizate în majoritatea instrucţiunilor
aritmetice şi logice, şi pot fi folosite atât ca registre pe 16 biţi, cât şi ca registre pe 8 biţi. De
exemplu, registrul AX, registru pe 16 biţi, este compus din registrul AH ce conţine cei 8 biţi
36
37. mai semnificativi din AX, şi din registrul AL, ce conţine cei mai puţin semnificativi 8 biţi din
AX.
Registrele SP şi BP sunt denumite registre indicatoare de adresă (sau pointer) şi sunt
folosite numai ca registre pe 16 biţi. Registrul SP conţine deplasamentul în octeţi al vârfului
stivei, faţă de începutul segmentului de stivă curent. De cele mai multe ori, şi registrul BP
conţine un deplasament în segmentul de stivă curent. Registrele BX şi BP mai sunt denumite
uneori şi registre bază, fiind desemnate să conţină adresa de bază a unei structuri de date din
memorie, cum ar fi adresa de bază a unui tablou.
Registrele index SI şi DI sunt registre numai pe 16 biţi, şi conţin de regulă un index,
care se incrementează sau se decrementează pe măsură ce se examinează o structură de date.
Sunt folosite în special de instrucţiunile de prelucrare a şirurilor de caractere.
Spaţiul de memorie adresabil de 80286 este împărţit în segmente logice cu dimensiunea
maximă de 64Kb. În general, programele sunt constituite din mai multe segmente (module) de
cod, date, sau stivă, numai o parte din acestea fiind utilizate la un moment dat.
Microprocesorul I80286 permite unui program să aibă acces la 4 segmente simultan.
Registrele de segment sunt utilizate pentru a identifica cele 4 segmente curente, fiecare
registru fiind specializat pentru un anumit tip de segmente. Registrele de segment sunt:
- CS - registru de segment de cod
- DS - registru de segment de date
- SS - registru de segment de stivă
- ES - registru de segment de date suplimentare
Toate registrele de segment au 16 biţi. Registrele de segment pot fi modificate prin
program. Conţinutul registrelor de segment este interpretat diferit în funcţie de
modul de lucru al microprocesorului: real sau virtual.
În modul de lucru real, care este modul de lucru compatibil I8086, registrele de segment
conţin cei mai semnificativi 16 biţi ai adresei de bază a segmentelor de memorie. Pentru a
face acces la o dată din memorie, microprocesorul trebuie să cunoască adresa de bază a
segmentului în care se află data ce se doreşte a fi accesată (adresa primului octet din
segment), precum şi adresa relativă în segment a datei respective, sau un deplasament, ce
reprezintă distanţa în octeţi faţă de începutul segmentului.
Astfel, în modul real, CS conţine cei mai semnificativi 16 biţi ai adresei de bază a
segmentului de cod curent, DS conţine cei mai semnificativi 16 biţi ai adresei de bază a
segmentului de date curent ş.a.m.d.
Segmentele de cod ale unui program conţin instrucţiunile programului, segmentele de
date (referite de DS şi ES) conţin date sau variabile pentru programul ce se execută,
segmentele de stivă, referite prin intermediul registrului de segment SS, conţin zone de
memorie organizate pe principiul stivei.
37
38. În modul de lucru protejat, registrele de segment conţin un index într-o tabelă de
descriptori a segmentelor. O intrare în această tabelă conţine un descriptor de segment, care
cuprinde :
- adresa de bază a segmentului,
- dimensiunea segmentului,
- drepturile de acces la segmentul respectiv etc.
Deci, registrul de segment indică o intrare într-o tabelă de descriptori a segmentelor,
unde se găseşte adresa de bază a segmentului în care se doreşte a se efectua accesul. Din
această cauză, în modul de lucru protejat, registrele de segment mai sunt denumite şi selectori
de segment, deoarece selectează un segment dintr-o tabelă ce descrie mai multe segmente.
Registrul pointer de instrucţiuni - IP - este un registru de 16 biţi, care conţine adresa
relativă în raport cu începutul segmentului de cod curent, a următoarei instrucţiuni ce trebuie
executată. Registrul IP este transparent la nivelul programatorului, el fiind actualizat automat
după citirea instrucţiunii curente, astfel încât să indice deplasamentul următoarei instrucţiuni
de executat.
Registrul indicatorilor de stare şi control - F - conţine indicatorii de stare şi control ai
microprocesorului. Indicatorii de stare, în număr de 6, sunt poziţionati de unitatea aritmetico-
logică în urma execuţiei unei instrucţiuni, şi reflectă anumite stări ale rezultatului unei
operaţii aritmetice sau logice. Unele instrucţiuni ale microprocesorului testează aceşti
indicatori şi, în funcţie de cum sunt poziţionaţi (în 0 sau în 1), se execută anumite acţiuni
specifice.
Indicatorii de stare sunt următorii:
- indicatorul de transport - CF (Carry Flag ) - este unu dacă a apărut transport din
bitul cel mai semnificativ în exterior, sau s-a făcut împrumut în exterior din bitul cel mai
semnificativ al rezultatului. Indicatorul CF este afectat şi de instrucţiunile de rotire şi
deplasare.
- indicatorul de paritate -PF (Parity Flag) - este poziţionat (este pus în 1 logic) dacă
rezultatul execuţiei instrucţiunii are octetul cel mai puţin semnificativ cu un număr par de biţi
unu. În caz contrar PF este poziţionat în zero.
- indicatorul de transport auxiliar - AF (Auxiliary Carry Flag) - este unu dacă la
execuţia instrucţiunii a apărut un transport între rangul 3 şi rangul 4 al rezultatului. De
exemplu, presupunând că în registrul AH avem valoarea 58H şi în registrul BH valoarea 29H,
în urma execuţiei instrucţiunii ADD AH,BH, care adună conţinutul registrului AH cu BH şi
pune rezultatul în AH, apare un transport din rangul 3 în rangul 4, ceea ce determină setarea
indicatorului AF.
AH = 01101000 +
BH = 00101001
⎯⎯⎯⎯
38
39. AH = 10010001
- indicatorul de zero - ZF (Zero Flag) - este poziţionat în unu dacă rezultatul
instrucţiunii executate anterior a fost zero.
- indicatorul de semn - SF (Sign Flag) - este unu dacă s-a obţinut un rezultat negativ
(strict mai mic decât zero). Mai precis, SF este identic cu bitul cel mai semnificativ al
rezultatului, dat fiind faptul că, în reprezentarea numerelor în complement faţă de 2, numerele
negative au primul bit 1.
- indicatorul de depăşire - OF (Overflow Flag) - este unu dacă la execuţia instrucţiunii
anterioare a apărut o depăşire, adică dimensiunea rezultatului depăşeşte capacitatea locaţiei de
destinaţie.
Indicatorii de control pot fi poziţionati în unu sau în zero prin program, asigurând prin
aceasta controlul prin program al unor operaţii ale procesorului. Indicatorii de control sunt
următorii:
- indicatorul de direcţie - DF (Direction Flag) - Dacă DF este poziţionat în unu, atunci
şirurile de caractere vor fi prelucrate de la adrese mari spre adrese mici de memorie, sau de la
dreapta la stânga. Ştergând DF (poziţionând în zero), şirurile vor fi prelucrate de la stânga la
dreapta.
- indicatorul de întrerupere - IF (Interrupt Flag) - Dacă IF este poziţionat în unu prin
program, microprocesorul va recunoaşte cererile de întrerupere externă. Ştergând acest
indicator, întreruperile externe vor fi invalidate.
- indicatorul de urmărire - TF (Trap Flag) - Dacă TF este poziţionat în unu,
procesorul intră în modul de execuţie pas cu pas, pentru depanare. În acest mod, după
execuţia unei instrucţiuni se generează o întrerupere internă, ceea ce dă posibilitatea
investigării rezultatului execuţiei fiecărei instrucţiuni dintr-un program.
Indicatorii de stare şi control prezentaţi mai sus sunt aceeaşi cu indicatorii de condiţie şi
stare ai microprocesorului I8086. De fapt, toate registrele prezentate anterior pot fi întâlnite şi
la I8086. În plus faţă de I8086, I80286 mai conţine în registrul indicatorilor de condiţie şi
stare, trei biţi, care sunt folosiţi numai în modul protejat, fiind ignoraţi în modul de lucru real.
Aceştia sunt:
- indicatorul NT (Nested Task) - ce indică dacă instrucţiunea curentă evoluează în
cadrul aceluiaşi task, sau ea provoacă o schimbare de task.
- câmpul IOPL (I/O Priviledge Level) - format din 2 biţi, şi care reprezintă nivelul de
privilegiu cel mai slab, pentru care nivelul taskului în curs de execuţie trebuie să fie superior
sau egal, pentru a putea executa instrucţiuni de I/E. Un nivel de privilegiu este mai slab, dacă
numeric este mai mare. De exemplu, nivelul 3 este mai slab decât nivelul 2.
Registrul indicatorilor de condiţie şi stare are următoarea configuraţie :
39
40. Un registru care nu poate fi întâlnit la I8086, este registrul sau cuvântul de stare masină
-MSW (Machine Status Word), cu următoarea configuraţie:
Microprocesorul I80286 nu foloseşte decât cei mai puţin semnificativi 4 biţi ai acestui
registru de 16 biţi, ceilalţi biţi fiind rezervaţi pentru 80386. Semnificaţia biţilor este
următoarea:
- PE (Protected mode Enable) - Dacă acest bit este poziţionat în unu prin program,
I80286 va intra în modul protejat. Odată poziţionat în unu, numai prin resetarea
microprocesorului acest bit poate fi adus în zero, determinând intrarea microprocesorului
80286 în modul de lucru real. La microprocesorul 80386, acest bit poate fi poziţionat în zero
prin program.
- MP (Monitor Processor extension) - Dacă MP=1 se indică prezenţa unui coprocesor
matematic.
- EM (Coprocessor EMulation) - Dacă EM este setat, toate funcţiile coprocesorului
matematic vor fi emulate. Aceasta înseamnă că, spre exemplu, un logaritm nu este calculat de
coprocesorul matematic I80287, ci de o rutină din biblioteca matematică, folosind numai
instrucţiuni ale microprocesorului I80286.
- TS (Task Switch) - Dacă bitul este setat a avut loc o comutare de task, şi este posibil
să se determine dacă coprocesorul matematic execută încă o instrucţiune a taskului precedent,
sau este pregătit pentru un nou task. Deoarece anumite instrucţiuni ale coprocesorului 80287
necesită până la 1000 de perioade de ceas, este posibil ca I80286 să servească alt task în acest
timp, reîntorcându-se la taskul precedent atunci când coprocesorul a terminat de executat
instrucţiunea.
4.1.4. Operaţiile de bază pe magistrală ale microprocesorului I80286
Activitatea pe magistrală a microprocesorului I80286 diferă mult faţă de activitatea
procesoarelor anterioare, datorită mecanismului de tip "pipe-line" realizat de I80286.
Procesorul I80286 plasează adresele pe magistrala de adrese înaintea sfârşitului ciclului de
magistrală precedent, datele citite sau scrise fiind valide pe magistrala de date şi la începutul
ciclului de magistrală următor. Acest lucru a permis reducerea ciclului de magistrală la numai
doi cicli procesor, în timp ce ar fi fost necesari trei cicli procesor. Se definesc următoarele
noţiuni:
- Ciclul de ceas sistem - este timpul scurs între două fronturi crescătoare ale
semnalului de ceas de la intrarea CLK a microprocesorului (perioada ceasului extern).
40
41. - Ciclul procesor - este format din doi cicli de ceas sistem. Microprocesorul foloseşte
un ceas intern PCLK, format prin divizarea cu doi a ceasului sistem CLK. Ciclul procesor este
perioada ceasului PCLK.
- Ciclul de magistrală - este timpul necesar unui transfer de date pe magistrală (de
exemplu, citirea unui cuvânt din memorie sau porturile de intrare, sau scrierea unui cuvânt în
memorie sau porturile de ieşire ).
- Ciclul instrucţiune - este timpul necesar execuţiei unei instrucţiuni, şi este format din
cicli de magistrală şi din cicli interni ai microprocesorului.
În general, orice microprocesor execută un program prin execuţia repetată a
următorilor paşi:
- aducerea (citirea) instrucţiunii următoare din memorie;
- aducerea sau citirea operanzilor din memorie, dacă instrucţiunea citită anterior
necesită operanzi din memorie;
- efectuarea prelucrărilor numerice asupra operanzilor;
- transferul (scrierea) rezultatului în memorie, dacă instrucţiunea prevede acest lucru.
Ciclul instrucţiune este de fapt timpul de execuţie al celor două mari etape care intervin
în execuţia unei instrucţiuni: citirea instrucţiunii din memorie, şi execuţia propriu-zisă a
instrucţiunii, ce cuprinde citirea operanzilor, efectuarea calculelor şi scrierea rezultatului.
Există patru tipuri de cicli procesor, numite şi stări, fiecare stare fiind caracterizată
printr-o anumită activitate pe magistrală. Cele 4 stări sunt:
- TI (Idle) - stare inactivă;
- TS (Status) - stare de generare a semnalelor de stare;
- TC (Command) - stare de comandă în curs;
- TH (Hold) - stare de abandon a magistralei.
Toate stările durează o perioadă de ceas procesor PCLK, adică 2 perioade de ceas
sistem CLK.
Starea TI indică faptul că nu se solicită nici un transfer de date pe magistrală, procesorul
controlând magistrala ca "master", dar neefectuând transferuri de date pe magistrală.
Starea activă TS este semnalizată prin trecerea pe nivel coborât a liniilor de stare S0
şi/sau S1, care indică tipul operaţiei pe magistrală. Tot în această stare, sunt generate
semnalele de control, semnalele de adresă şi, în cazul unui ciclu de scriere, sunt generate şi
semnalele de date.
Starea TC urmează după o stare TS, şi semnifică o operaţie în curs de execuţie pe
magistrală. În această stare sunt efectuate transferurile de date între memorie sau porturi pe de
o parte, şi procesor pe de altă parte.
Starea TH indică faptul că I80286 a pierdut controlul magistralei. În această stare
magistrala este folosită de un alt dispozitiv, pentru efectuarea transferurilor de date, 80286
41
42. fiind deconectat de la magistrală (toate semnalele de la pinii procesorului sunt în starea de
mare impedanţă).
Microprocesorul poate să execute următoarele operaţii pe magistrală :
- citire / scriere memorie;
- citire / scriere porturi de I / E;
- recunoaştere întrerupere;
- HALT sau blocare ("shutdown").
Figura 4.1.3. Ciclul de citire
În cea de-a doua perioadă de ceas sistem a stării TC a ciclului de magistrală precedent,
procesorul plasează, pe magistrala de adrese, adresa de memorie sau adresa portului de I/E, şi
activează semnalele M/IO şi COD/INTA de pe magistrala de control, pentru a indica o
operaţie cu memoria sau cu porturile de I/E. În starea TS a ciclului de citire, procesorul
activează semnalele de stare S0 şi S1, şi anume: S0 pe nivel ridicat şi S1 pe nivel coborât,
pentru a indica un ciclu de citire.
Semnalul M/IO permite distincţia între un acces la memorie şi un acces la porturile de
I/E astfel:
M/IO = 1 - indică o operaţie cu memoria
M/IO = 0 - indică o operaţie cu porturile de I/E
Semnalul COD/INTA, combinat cu semnalul M/IO, permite distincţia între citirea unui
operand din memorie şi citirea codului unei instrucţiuni când M/IO = 1, sau permite distincţia
între o operaţie de recunoaştere a întreruperii şi o operaţie de citire/scriere port de I/E, astfel :
M/IO = 1 COD/INTA = 1 - citire cod instrucţiune din memorie
COD/INTA = 0 - citire operand / scriere rezultat din/în memorie
M/IO = 0 COD/INTA = 1 - citire/scriere port de I/E
COD/INTA = 0 - recunoaştere întrerupere
42
43. Semnalele S0 şi S1 de pe magistrala de control disting între o operaţie de citire, scriere
sau recunoaştere întrerupere astfel:
S1 S0
0 0 - recunoaştere întrerupere
0 1 - citire port sau memorie
1 0 - scriere port sau memorie
1 1 - neutilizată
În intervalul de timp scurs între furnizarea adreselor pe magistrala de adrese, la sfârşitul
ciclului de magistrală precedent, şi cea de-a doua jumătate a stării TC a ciclului de citire,
memoria sau portul adresat trebuie să furnizeze pe magistrala de date conţinutul locaţiei de
memorie adresate sau conţinutul portului adresat, în vederea citirii de către procesor. Dacă
memoria sau portul nu sunt atât de rapide, se vor lansa alţi cicli TC, până când datele sunt
disponibile pe magistrala de date.
La sfârşitul stării TC a ciclului de citire, procesorul testează semnalul READY, care
este controlat de memorie şi porturile de I/E. Dacă semnalul READY = 0, ceea ce specifică
faptul că datele sunt disponibile pe magistrală, ciclul de magistrală curent se va termina,
procesorul citind (preluând) datele de pe magistrala de date. Dacă READY = 1, se specifică
faptul că memoria sau portul adresat nu a furnizat încă datele pe magistrala de date, şi se va
genera încă o stare TC, la sfârşitul căreia se va testa din nou semnalul READY ş.a.m.d. (se va
prelungi ciclul de citire curent cu încă o stare TC).
Ciclul de scriere este similar cu ciclul de citire, procesorul activând corespunzător A0-
A23, M/IO, COD/INTA la sfârşitul ciclului de magistrală precedent, după care, în starea TS a
ciclului de magistrală curent, pune S1 pe 1, S0 pe 0, indicând o operaţie de scriere, şi pe
magistrala de date pune datele în vederea scrierii în memorie sau portul adresat. Dacă
memoria sau portul nu reuşesc să efectueze operaţia de scriere în timp util, vor ţine semnalul
READY pe 1, ceea ce determină procesorul să prelungească ciclul de magistrală curent cu
stări TC suplimentare.
43
44. Figura 4.1.4. Ciclul de scrire
Ciclii de recunoaştere întrerupere apar în urma apariţiei unei întreruperi externe, când
procesorul execută recunoaşterea întreruperii, pentru a afla adresa rutinei de tratare a
întreruperii unde va transfera controlul.
Ciclii de HALT şi blocare apar fie ca efect al execuţiei instrucţiunii HALT (ce opreşte
procesorul din execuţia normală a instrucţiunilor), fie datorită apariţiei excepţiilor multiple la
execuţia unei instrucţiuni. Procesorul poate fi scos din starea de HALT şi din starea de
blocare fie prin resetarea microprocesorului, fie printr-o întrerupere externă nemascabilă. În
plus, procesorul poate fi scos din starea de HALT şi printr-o întrerupere externă mascabilă,
dacă întreruperile externe mascabile sunt validate.
Resetarea, sau iniţializarea procesorului, se face prin aplicarea unui "1" logic pe intrarea
RESET a procesorului. După reset I80286 intră în modul real, registrul MSW fiind încărcat
cu valoarea FFF0H, cele mai semnificative linii de adresă, A20-A23, fiind tinute în "1" logic,
astfel încât prima instrucţiune executată va fi instrucţiunea de la adresa fizică FFFFF0H, care,
de regulă, este o instrucţiune de salt în zona de memorie de până la 1Mb. Această instrucţiune
de salt determină dezactivarea liniilor A20-A23, care vor trece în zero, procesorul I80286
lucrând în modul real, ca un procesor I8086. Pentru a intra în modul protejat, trebuie setat,
prin program, bitul PE din registrul MSW.
4.1.5. Modurile de lucru ale microprocesorului I80286
Modul de lucru real este modul compatibil I8086, asigurând posibilitatea rulării pe
sisteme cu I80286 a programelor dezvoltate anterior pe microprocesoarele 8086/8088.
Singurul avantaj este faptul că viteza de lucru este mai mare.
În modul de lucru real memoria este adresată folosind un pointer de 32 de biţi, format
din două componente:
44