Scrigroup - Documente si articole

Username / Parola inexistente      

Home Documente Upload Resurse Alte limbi doc  
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


MODELE DE DATE IN SISTEMELE DE CALCUL

calculatoare



+ Font mai mare | - Font mai mic



MODELE DE DATE IN SISTEMELE DE CALCUL

1 Reprezentarea informatiei

Informatiile prelucrate prin sistemele de calcul sunt de diverse tipuri dar ele sunt reprezentate la nivel elementar sub forma binara. O informatie elementara corespunde deci unei cifre binare (0 sau1) numita bit. O informatie mai complexa (un caracter, un numar etc.) se exprima printr-o multime de biti.



Codificarea unei informatii consta in a stabili o corespondenta intre reprezentarea externa a informatiei (caracterul A sau numarul 33, de exemplu) si reprezentarea sa interna, care este o secventa de biti.

Avantajele reprezentarii binare se refera in special la facilitatea de realizare tehnica cu ajutorul elementelor bistabile (sisteme cu 2 stari de echilibru) precum si la simplitatea efectuarii operatiilor fundamentale sub forma unor circuite logice, utilizand logica simbolica cu doua stari (0, 1).

Informatiile prelucrate in sistemele de calcul sunt de doua tipuri: instructiuni si date.

Instructiunile, scrise in limbaj masina, reprezinta operatiile efectuate in sistemul de calcul si ele sunt compuse din mai multe campuri:

codul operatiei de efectuat;

operanzii implicati in operatie.

Codul operatiei trebuie sa suporte o operatie de decodificare (transformare inversa codificarii) pentru a se putea efectiv executa.

Datele sunt operanzii asupra carora actioneaza operatiile (prelucrarile), sau sunt produse de catre acestea. O adunare, de exemplu, se aplica la doi operanzi, furnizand un rezultat care este suma acestora.

Se pot distinge datele numerice, rezultat al unei operatii aritmetice, sau date nenumerice, de exemplu simbolurile care constituie un text.

Date nenumerice

Datele nenumerice corespund caracterelor alfanumerice: A, B, , Z, a, b, , z, 0, 1, 2, , 9 si caracterelor speciale: ?, !, ', $, ;,

Codificarea se realizeaza pe baza unei tabele de corespondenta specifica fiecarui cod utilizat. Printre cele mai cunoscute coduri putem enumera:

BCD Binary Coded Decimal prin care un caracter este codificat pe 6 biti;

ASCII American Standard Code for Information Interchange (7 biti);

EBCDIC Extended Binary Coded Decimal Internal Code (8 biti).

Tabela de corespondenta intre diferite coduri


caracter BCD ASCII EBCDIC

0 000000 0110000 11110000

1 000001 0110001 11110001

2 000010 0110010 11110010

9 001001 0111001 11111001

A 010001 1000001 11000001

B 010010 1000010 11000010

C 010011 1000011 11000011

(6 biti) (7 biti) (8 biti)

Datele numerice

Datele numerice sunt de urmatoarele tipuri:

a)      numere intregi pozitive sau nule

b)      numere intregi negative

c)      numere fractionare

d)      numere in notatie stiintifica

Codificarea se realizeaza cu ajutorul unui algoritm de conversie asociat tipului de data corespunzator. Operatiile aritmetice (adunare, scadere, inmultire, impartire) care se pot aplica asupra acestor date se efectueaza de regula in aritmetica binara.

Tabele de adunare si inmultire binara

1

1

Numerele intregi pozitive sau nule cuprind: 0, 1, 2, ,N, N + 1

Sisteme de numeratie

Un sistem de numeratie face sa-i corespunda unui numar N, un anumit simbolism scris si oral. intr-un sistem de numeratie cu baza p > 1, numerele 0, 1, 2, , p -1 sunt numite cifre.

Orice numar intreg pozitiv poate fi reprezentat astfel:

N = anpn + an-1pn-1 + + a1p + a0

cu ai I si an ¹

Se utilizeaza de asemenea notatia echivalenta N = anan-1a1a0.

Numerele scrise in sistenul de numeratie cu baza 2 (binar) sunt adesea compuse dintr-un mare numar de biti, si de aceea se prefera exprimarea acestora in sistemele octal (p = 8) si hexazecimal (p = 16), deoarece conversia cu sistemul binar este foarte simpla.

Schimbari de baza

a) binar Þ zecimal:

Conversia se realizeaza prin insumarea puterilor lui 2 corespunzatoare bitilor egali cu 1;

Exemplu

b)      zecimal Þ binar

Conversia se efectueaza prin impartiri intregi succesive cu Testul de oprire corespunde situatiei catului nul. Numarul binar este obtinut considerand resturile in ordinea inversa.

Exemplu: Conversia lui 26:

rest 0

rest 1

6 : 2 = 3 rest 0

3 : 2 = 1 rest 1

1 : 2 = 0 rest 1

Se obtine (de jos in sus): 2610 = 11010

c) octal (hexazecimal) Þ zecimal

Conversia se reduce la insumarea puterilor lui 8 (16).

d)      zecimal Þ octal (hexazecimal)

Conversia se efectueaza prin impartiri intregi succesive prin 8 (16). Testul de oprire corespunde situatiei catului nul. Numarul octal (hexazecimal) este obtinut considerand resturile obtinute de la ultimul catre primul.

e)      Octal (hexazecimal) Þ binar

Conversia corespunde dezvoltarii fiecarei cifre octale (hexazecimale) in echivalentul ei binar pe 3 (4) biti.

Exemplu:

278 = 010'1112 deoarece 28 = 0102 si 78 = 111

3A16 = 0011'10102 deoarece 316= 00112 si A16=1010

f)        binar Þ octal (hexazecimal)

Conversia se realizeaza inlocuind de la dreapta la stanga, grupele de 3 (4) biti prin cifra octala (hexazecimala) corespunzatoare. Daca numarul de biti nu este multiplu de 3 (4) se completeaza configuratia binara la stanga cu zerouri.

Exemplu: 1010112= 538 = 2B16 .

Numere intregi negative

Numerele intregi negative pot fi codificate prin trei metode:

semn si valoare absoluta (SVA)

complement logic sau restrans sau fata de 1 (C1)

complement aritmetic sau adevarat sau fata de 2 (C2)

Prin metoda ' semn si valoare absoluta', numerele se codifica sub forma: valoare absoluta

Prin aceasta reprezentare se sacrifica un bit pentru semn. in mod normal, 0 este codul semnului +, iar 1 este codul semnului -. in aceste conditii, pe un cuvant de k biti se pot reprezenta numere intregi pozitive si negative N, astfel incat: - (2k-1- 1) £ N £ (2k-1- 1).

Aceasta metoda de reprezentare prezinta unele inconveniente:

numarul zero are doua reprezentari distincte: 0000 si 1000, adica +0 si -0;

tabelele de adunare si inmultire sunt complicate din cauza bitului de semn care trebuie tratat separat.

Complement logic si aritmetic

Complementul logic (complement fata de 1) se calculeaza inlocuind, pentru valorile negative, fiecare bit 0 cu 1 si 1 cu 0.

Complementul aritmetic (complement fata de 2) este obtinut adunand o unitate la valoarea complementului logic.

Exemplu: Reprezentarea numarului (-6) pe 4 biti: + 6 = 0110

Semn si valoare absoluta: - 6 = 1110

Complement fata de 1: - 6 = 1001

Complement fata de 2: - 6 = 1010

Se poate usor constata ca intervalul numerelor intregi N care se pot reprezenta in complement fata de 1 este acelasi ca si pentru reprezentarea 'semn si valoare absoluta'.

Pentru reprezentarea in complement fata de 2 exista o valoare in plus, deci pentru k biti vom avea: -2k-1 £ N £ (2k-1-1).

Se poate remarca faptul ca bitul cel mai din stanga (bitul de semn) este intotdeauna 0 pentru numere pozitive si 1 pentru cele negative si aceasta pentru fiecare din cele trei reprezentari.


Tabela de reprezentare, pe 16 biti, a numerelor intregi cu semn

(16 biti Þ 32768 valori posibile)

zecimal semn si valoare complement complement

absoluta fata de 2 fata de 1

+1 000000001 000000001 000000001

+0 000000000 000000000 000000000

-0 100000000 ----- ----- -------- 111111111

-1 100000001 111111111 111111111

Reprezentarea in complement fata de 1 recunoaste doua zerouri (+0 si -0), dar este simetrica, deoarece aceleasi numere pozitive si negative sunt reprezentabile, iar aceasta situatie se poate usor realiza electronic.

in complement fata de 1 sau fata de 2, operatiile aritmetice sunt avantajoase, deoarece operatia de scadere se realizeaza prin adunarea complementului.

intr-o adunare in complement fata de 1, o cifra de transport catre ordinul superior generata de bitul de semn trebuie adaugata la rezultatul obtinut, spre deosebire de complementul fata de 2, cand aceasta cifra de transport se ignora.

in complement fata de 1 sau 2 nu se produce depasire de capacitate decat in cazul in care cifrele de transport generate de bitul de semn si de bitul anterior acestuia sunt diferite.

Numere fractionare

Numerele fractionare sunt numerele subunitare.

Schimbari de baza

a)      binar Þ zecimal

Conversia se face adunand puterile corespunzatoare ale lui

Exemplu: 0.012 = 0

b)      zecimal Þ binar

Conversia se efectueaza prin inmultiri succesive cu 2 a numerelor pur fractionare. Acest algoritm trebuie sa se termine cand se obtine o parte fractionara nula sau cand numarul de biti obtinuti corespunde marimii registrului sau a cuvantului de memorie in care se va stoca valoarea. Numarul binar se obtine citind partile intregi in ordinea calcularii lor.

Exemplu 0.125 = 0 + 0.250

0.25 = 0 + 0.50

0.50

Vom considera partile intregi de sus in jos, deci: 0.2510= 0.001

Pentru numerele fractionare se pot remarca reprezentarile in virgula fixa si virgula mobila.

Virgula fixa (VF)

Sistemele de calcul nu poseda virgula la nivelul masinii, deci reprezentarea numerelor fractionare se face ca si cand acestea ar fi intregi, cu o virgula virtuala a carei pozitie este controlata de catre programator.

Datorita dificultatii de gestionare a virgulei de catre programator (pot apare frecvent situatii de depasire a capacitatii de memorare), se prefera solutia aritmeticii in virgula mobila.

Virgula mobila (VM)

Primele sisteme de calcul utilizau doar virgula fixa pentru efectuarea operatiilor aritmetice, iar catre sfarsitul anilor '50, in urma aparitiei logicii cablate s-a introdus pe scara larga reprezentarea in virgula mobila a numerelor fractionare.

in majoritatea sistemelor de calcul actuale destinate in special aplicatiilor de natura tehnico-stiintifica, cele doua metode de reprezentare (virgula fixa si virgula mobila) coexista si sunt foarte utile.

Reprezentarea in virgula mobila consta in a reprezenta numerele sub forma urmatoare:


N = M BE cu: B = baza (2, 8, 10, 16)

M = mantisa

E = exponentul

Exponentul este un numar intreg, mantisa normalizata este un numar pur fractionar (fara cifre semnificative la partea intreaga). Cu exceptia numarului zero (in general reprezentat prin cuvantul 0000), vom avea intotdeauna: 0.12 £ ½ M½ < 12 , sau 0.510 £ ½ M½ <

Exponentul si mantisa trebuie sa poata reprezenta atat numere pozitive cat si negative. Cel mai adesea, mantisa admite o reprezentare sub forma 'semn si valoare absoluta', iar exponentul este fara semn, dar decalat.

Exemplu


SM ED M

unde SM este semnul mantisei, ED este exponentul decalat si M mantisa.

Pentru nu numar de k biti rezervati pentru ED se pot reprezenta fara semn 2k valori, de la 0 la 2k - 1. Decalajul considerat este 2k-1, ceea ce permite ca valorile de la 0 la 2k-1-1 pentru ED sa corespunda unui exponent real (ER) negativ, iar valorile de la 2k-1 la 2k - 1 ale lui ED sa corespunda unui exponent real (ER) pozitiv. Deci domeniul de valori reprezentabile pentru exponentul real este de la -2k-1 la 2k-1-1.

De exemplu, pentru k = 4, pe cei 4 biti putem reprezenta fara semn numere de la 0 la 15 pentru ED. Decalajul considerat este 2k-1 = 23 = 8, deci pentru exponentul real (ER) putem considera valori de la - 2k-1 = -23 = -8 si pana la 2 k-1 - 1 = 23 - 1 = 7.

Relatia existenta se poate scrie astfel: ER = ED - D.

Exponentul determina intervalul de numere reprezentabile in sistemul de calcul, iar numerele prea mari pentru a putea fi reprezentate corespund unei 'depasiri superioare' de capacitate de memorare overflow , iar numerele prea mici corespund unei 'depasiri inferioare' de capacitate de memorare underflow

Marimea mantisei exprima precizia de reprezentare a numerelor.

Avantajul utilizarii virgulei mobile fata de virgula fixa consta in intervalul mult mai extins al valorilor posibile de reprezentat.

Figura urmatoare prezinta schematic tipurile diverse de informatii prelucrate in sistemele de calcul.


INFORMA|II

INSTRUC|IUNI DATE

(diferite formate in cod masina)


Cod op. Operanzi

Numerice Nenumerice

Codificare prin tabele

BCD (6 biti)

ASCII (7 biti)

EBCDIC (8 biti)

Numere intregi pozitive Numere intregi negative

(conversie directa

zecimal binar)

SVA C1 C2

Numere fractionare

VF VM

(mantisa, baza, exponent)

Standardul IEEE 754

Standardul IEEE Institute of Electrical and Electronics Engineers defineste trei formate de reprezentare a numerelor in virgula mobila:

a)      simpla precizie pe 32 de biti (1 bit pentru SM, 8 biti pentru ED si 23 pentru M);

b)      dubla precizie pe 64 biti (1 bit pentru SM, 11 biti pentru ED si 52 biti pentru M);

c)      dubla precizie extinsa pe 96 biti (1 bit pentru SM, 15 biti pentru ED si 80 biti pentru M) .

d)      precizie cvadrupla pe 128 biti (1 bit pentru SM, 15 biti pentru ED si 112 biti pentru M)

Exponentul este decalat cu 128 pentru reprezentarea in simpla precizie si cu 1024 pentru reprezentarea in dubla precizie. Mantisa fiind normalizata, exista siguranta ca primul bit al mantisei are valoarea 1, ceea ce permite omiterea sa (bit ascuns) pentru cresterea preciziei de reprezentare, dar complica prelucrarea informatiei.

Coduri zecimale codificate in binar

Daca aritmetica sistemelor de calcul este de regula binara, ea poate fi de asemenea si zecimala. in cazul calculatoarelor de buzunar si de birou, in sistemele de calcul specifice aplicatiilor comerciale, operatiile se efectueaza direct asupra reprezentarii zecimale a numerelor.

Un numar zecimal, care cuprinde una sau mai multe cifre (de la 0 la 9), este codificat cu ajutorul bitilor utilizand anumite coduri.

Tabela urmatoare prezinta patru exemple de astfel de coduri.

Tabela de corespondenta intre diferite coduri zecimale


zecimal BCD excedent-3 2 din 5 bicvintal

0 0000 0011 00011 01 00001

1 0001 0100 00101 01 00010

2 0010 0101 00110 01 00100

3 0011 0110 01001 01 01000

4 0100 0111 01010 01 10000

5 0101 1000 01100 10 00001

6 0110 1001 10001 10 00010

7 0111 1010 10010 10 00100

8 1000 1011 10100 10 01000

9 1001 1100 11000 10 10000

Exemplu zecimal : 129

binar : 10000001 = 27 +20 = 128 + 1

BCD : 0001'0010'1001

Codul BCD

Codul BCD Binary Coded Decimal este unul dintre cele mai raspandite coduri cu semnificatia 'zecimal codificat in binar', in care fiecare cifra zecimala este codificata in mod individual in echivalentul sau binar pe patru biti.

Orice cifra zecimala se poate reprezenta pe patru biti, dar valorile reprezentabile pe patru biti sunt in numar de 24 = 16, deci vor ramane 6 configuratii neutilizate, de care trebuie sa se tina seama la efectuarea operatiilor aritmetice.

in situatia operatiei de adunare trebuie sa se adauge 6 ori de cate ori rezultatul este superior lui 9, iar pentru operatia de scadere se va extrage 6 daca rezultatul este negativ.

Exemplu zecimal binar BCD

15+ 01111+ 0001'0101+

33 100001 0010'1101 > 9

0110 +6

Operatiile aritmetice sunt deci destul de complicate, dar operatiile de intrare / iesire sunt usor de realizat deoarece fiecare entitate BCD este direct asociata unui caracter. Din aceste motive, codul BCD se gaseste in sistemele de calcul de gestiune, unde operatiile aritmetice sunt mult mai putin numeroase decat operatiile de intrare / iesire.

Codul BCD este un cod ponderat 8 - 4 - 2 - 1, cei patru biti necesari pentru a codifica o cifra au o pondere corespunzatoare cu pozitia lor, respectiv 8 = 23 pentru bitul cu numarul 3, 4 = 22 pentru bitul cu numarul 2, 2 = 21 pentru bitul cu numarul 1 si 1 = 20 pentru bitul cu numarul 0.

Codul 'excedent - 3'

Codul 'excedent - 3' nu este un cod ponderat, fiecare cifra zecimala este codificata separat in echivalentul sau binar + 3.

Exemplu: 12910 = 0100'0101'1100 excedent - 3

Avantajul acestui cod fata de codul BCD este acela ca operatiile aritmetice sunt mai simple.

De exemplu, complementarea fata de 9 (similara in sistemul zecimal cu complementarea fata de 1 in sistemul binar) este imediata: este suficienta complementarea fiecarui bit.

Codul '2 din 5'

Codul '2 din 5' este un cod neponderat in care fiecare cifra zecimala este codificata pe 5 biti, dintre care numai 2 au valoarea 1.

Exemplu: 12910 = 00101'00110'11000 cod '2 din 5'

Avantajul acestui cod este acela de detectare (nu si corectare) a unei erori sau a unui numar impar de erori.

Codul bicvintal

Codul bicvintal este un cod ponderat 50'43210 care permite detectarea erorilor. O cifra zecimala este codificata printr-un numar binar pe 7 biti, avand un singur bit egal cu 1 pe primele 2 pozitii din stanga si un singur bit egal cu 1 pe 5 pozitii cele mai din dreapta.

Exemplu: 12910 = 0100010'0100100'1010000 bicvintal.

2 Coduri de erori

Informatiile pot suferi modificari involuntare in timpul transmisiei sau stocarii lor in memoria calculatorului. Trebuie deci utilizate anumite coduri care permit detectarea sau chiar corectarea erorilor datorate acestor modificari.

Aceste coduri se constituie pe un numar de biti superior celui strict necesar pentru a codifica informatia. Astfel, celor m biti de date li se adauga k biti de control. Deci, in memorie vor fi stocati n m + k biti. Asemenea configuratii definesc codurile redundante.

Unele coduri nu permit decat detectarea erorilor (coduri autoverificatoare), altele permit detectarea si corectarea uneia sau mai multor erori (coduri autocorectoare).

Controlul de paritate este codul autoverificator cel mai simplu. El se compune din m + 1 biti: cei m biti de informatie la care se adauga al (m + 1) - lea bit numit bit de paritate. Valoarea sa este aleasa astfel ca numarul total de biti egali cu 1, calculat pe n + 1 biti sa fie par (in cazul unei paritati pare), sau impar (paritate impara).

Exemplu: Transmiterea de caractere codificate in ASCII pe 7 biti plus un bit de paritate intre un calculator si un terminal.

A 1 1000001

B

E

bit de paritate impara

Daca un bit este schimbat din eroare in timpul transferului, paritatea nu mai este verificata. Daca eroarea este detectata trebuie retransmisa informatia deoarece eroarea nu poate fi localizata pentru a putea fi corectata.

in general, controlul de paritate nu permite decat detectarea unui numar impar de erori, in cazul unui numar par efectele se pot anula.

Controlul de paritate nu poate fi utilizat decat pentru transmisii in care posibilitatea aparitiei erorilor este scazuta (de exemplu, in interiorul unui calculator sau intre calculator si perifericele sale).

Codul dublei paritati

Codificare: consideram exemplul unui cod ASCII (7 biti);

fiecare caracter este codificat pe o linie a unui tablou;

un cod de paritate impara este efectuat pe fiecare linie (transversal);

un cod de paritate impara este efectuat pe fiecare coloana (longitudinal);

Decodificare

controlul transversal permite detectarea erorilor pe linie;

controlul longitudinal permite detectarea erorilor pe coloana;

Exemplu: Se doreste transmiterea mesajului 1968; se detecteaza o eroare la intersectia primei linii cu coloana a 4-a.


bit control

1 2 3 4 5 6 7 paritate transversal


1 0 1 1 1 0 0 1 0 F

9 0 1 1 1 0 0 1 1 A

6 0 1 1 0 1 1 0 1 A

8 0 1 1 1 0 0 0 0 A


bit paritate 1 1 1 1 0 0 1


contr. longit. A A A F A A A


Dubla paritate permite corectarea unei erori, sau in anumite cazuri a unui numar impar de erori (ca de exemplu un numar impar de biti eronati pe aceeasi linie sau coloana). Totusi, in majoritatea cazurilor este posibila numai detectarea unui numar impar de erori (ca de exemplu trei biti repartizati pe linii si coloane diferite).

Principiul dublei paritati este adesea utilizat in stocarea pe banda magnetica a informatiilor. Astfel, pentru o banda cu n piste:

fiecare caracter este stocat transversal pe n -1 piste;

un bit de paritate transversal este stocat pe a n-a pista;

toate cele m caractere (un bloc) suporta un control longitudinal de paritate.

Codul lui Hamming

Codul lui Hamming este un cod autocorector bazat pe teste de paritate. Versiunea cea mai simpla permite corectarea unui bit eronat. Celor m biti de informatie li se adauga k biti de control al paritatii. Deci avem n = m + k biti necesari pentru transmiterea informatiei.

Deoarece trebuie indicate n + 1 posibilitati de eroare (inclusiv absenta erorii) prin cei k biti de control, trebuie ca 2k ³ n + 1. Cele 2k posibilitati de de codificare pe k biti servesc la determinarea pozitiei erorii, apoi se poate corecta bitul eronat.

Tabelul urmator permite determinarea lui k cand se cunoaste n:

m 0 0 1 1 2 3 4 4 5 6 7 8 9 10 120

k 1 2 2 3 3 3 3 4 4 4 4 4 4 4 8

n 1 2 3 4 5 6 7 8 9 10 11 12 13 14 128

De obicei se ia n 2k - 1 in loc de n < 2k - 1.

Daca se numeroteaza bitii de la dreapta spre stanga pornind de la 1, bitii de control (sau de paritate) sunt plasati pe pozitia puterilor lui 2 (bitii cu numarul 1, 2, 4, 8, 16, ). Fiecare bit de control efectueaza control de paritate (para sau impara) asupra unui anumit numar de biti de date. Se determina astfel cei n biti de transmis sau de stocat.

Exemplu: Daca m 4 se poate construi un cod Hamming (CH) pe 7 biti (n 7), adaugand 3 biti de control (k

6 5 4 3 2 1

m4 m3 m2 k3 m1 k2 k1

Cei trei biti de control sunt plasati pe pozitia puterilor lui 2: k1 1; k2 2; k3

Vom vedea acum, pentru fiecare bit al mesajului care sunt bitii de control care permit verificarea paritatii sale.

7 este controlat de k3, k2, k1;

6 este controlat de k3, k2;



5 este controlat de k3, k1;

4 este controlat de k3;

3 este controlat de k2, k1;

2 este controlat de k2;

1 este controlat de k1;

Problema se pune si invers: care sunt pozitiile binare controlate de catre fiecare cod?

k1 controleaza bitii cu numerele 1, 3, 5, 7;

k2 controleaza bitii cu numerele 2, 3, 6, 7;

k3 controleaza bitii cu numerele 4, 5, 6, 7.

Cand se receptioneaza informatia, se efectueaza controlul de paritate. Pentru fiecare bit de control se compara valoarea transmisa cu cea recalculata. Daca cele doua valori sunt identice, se atribuie valoarea 0 unei variabile binare Ai asociata bitului de control ki, altfel, Ai primeste valoarea 1.

Valoarea zecimala a configuratiei binare formata din variabilele Ak, Ak-1, , A1 furnizeaza pozitia bitului eronat, care se poate corecta.

Reluam exemplul precedent:

Presupunem ca: pentru k1, A1 1, pentru k2, A2 1, iar pentru k3, A3 0. Eroarea se gaseste in pozitia (A3A2A1)2

intr-adevar, k1 poate detecta o eroare in pozitiile 1, 3, 5, 7, k2 poate detecta o eroare pe pozitiile 2, 3, 6, 7, iar k3 poate specifica o eroare pe pozitiile 4, 5, 6, 7. O eroare detectata de k 1 si k 2 dar nu si de k3 nu poate proveni decat din bitul 3.

Exemple

(A3A2A1)2 indica absenta unei erori;

(A3A2A1)2 indica eroare pe bitul 1;

(A3A2A1)2 indica eroare pe bitul 6.

Exemplu de receptionare a unui mesaj: (1011100)

}tiind ca s-a utilizat un CH cu paritate para, sa se reconstituie mesajul initial.

n 7, deci k 3, m

numar 7 6 5 4 3 2 1

tip    m4 m3 m2 k3 m1 k2 k1

valoare 1 0 1 1 1 0 0

k1 0 controleaza pozitiile 1, 3, 5, 7, nu se verifica, deci A1

k2 0 controleaza pozitiile 2, 3, 6, 7, se verifica, deci A2

k3 0 controleaza pozitiile 4, 5, 6, 7, nu se verifica, deci A3

Adresa binara a erorii (A3A2A1)2 5. Bitul cu numarul 5, care este egal cu 1 este eronat. Mesajul initial corectat si fara bitii de control este: (1001)

Calculul simplificat al codului lui Hamming (CHS)

Prin metoda lui Hamming, pentru detectarea si corectarea unei singure erori se poate simplifica calculul bitilor de control, astfel:

se transforma pozitiile din mesaj care contin valori egale cu 1 in echivalentul lor binar ;

se insumeaza modulo 2, astfel:

pentru paritate para: un numar par de 1 0, un numar impar de 1 1 (suma modulo 2 directa);

pentru paritate impara: un numar par de 1 1, un numar impar de 1 0 (suma modulo 2 inversata).

Exemplu: Sa codificam mesajul (10101011001)2 cu paritate para: m 11, deci k 4 si n

Numar 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

tip m11 m10 m9 m8 m7 m6 m5 k4 m4 m3 m2 k3 m1 k2 k1

valoare 1 0 1 0 1 0 1 ? 1 0 0 ? 1 ? ?

Bitii cu valoarea 1 se gasesc pe pozitiile 15, 13, 11, 9, 7, 3, deci:

15

13

11

9

7

3

-----------

0 1 0 0 biti de paritate

k4 k3 k2 k1

Mesajul codificat este deci (101010101001100)

Exemplu de receptie a unui mesaj:

S-a primit mesajul urmator: (101000101001100)2, codificat cu paritate impara. Bitii cu valoarea 1 se gasesc pe pozitiile 15, 13, 9, 7, 4, 3.

9

7

4

3

adunare modulo 2 inversata.

A4A3A2A1 eroare pe pozitia 4.

Dupa corectarea erorii si eliminarea codurilor de control, mesajul initial este: (10100011001)

Codul lui Hamming si erorile grupate

Metoda lui Hamming poate corecta in general doar un bit eronat, dar se poate utiliza pentru detectarea si corectarea erorilor multiple pe o secventa de biti aranjand mesajul sub forma matriciala, codificand pe linie dupa metoda HC si transmitand mesajul pe coloane.

De exemplu, pentru transmiterea mesajului 'Hamming' se codifica pe o linie fiecare caracter in cod ASCII, completand cu bitii de control dupa metoda CH.

ASCII    Cod Hamming (pentru fiecare litera)

11 10 9 8 7 6 5 4 3 2 1 (numar)

H

a

m

m

i

n

g

Daca se produc erori grupate, pentru o secventa de biti suficient de scurta, (£ 7 pentru acest caz) atunci, efectuand transmisia pe coloana vom avea un singur bit eronat pe linie, pe care-l putem corecta datorita bitilor de control adaugati potrivit metodei lui Hamming.

in ultimii ani, codurile autocorectoare sunt din ce in ce mai utilizate pentru a asigura integritatea informatiilor stocate in memorie.

Un cod autocorector permite cresterea considerabila a timpului mediu intre doua defectiuni care pot sa apara: erorile nu apar decat atunci cand numarul lor depaseste capacitatea de corectare a codului respectiv. Erorile care nu sunt corectate, cel putin se pot detecta.

Detectarea erorilor grupate

in comunicatiile la distanta, erorile sunt mult mai frecvente decat in interiorul calculatorului. Erorile consecutive pot fi extinse adesea la un bloc intreg de biti de informatie.

Se vor utiliza in acest sens coduri care permit detectarea erorilor grupate, corectarea acestora fiind adesea prea costisitoare.

Metoda codurilor polinomiale (CRC)

CRC Cyclic Redondant Coding este metoda cea mai folosita pentru detectarea erorilor grupate. inaintea transmiterii, informatiei i se adauga biti de control, iar pe baza acestora, daca la receptionarea mesajului se detecteaza erori, atunci acesta trebuie retransmis.

O informatie pe n biti poate fi considerata ca lista coeficientilor binari ai unui polinom cu n termeni, deci de grad n-1.

Exemplu x5 + x4 + 1

Pentru a calcula bitii de control se va efectua un anumit numar de operatii cu aceste polinoame cu coeficienti binari. Operatiile se vor efectua modulo 2, adunarea si scaderea nu va tine seama de cifra de transport, deci toate operatiile de adunare si scadere sunt identice cu operatia logica XOR.

Pentru generarea si verificarea bitilor de control atat sursa cat si ddestinatia mesajului utilizeaza un polinom generator G (x).

Daca M (x) este polinomul corespunzator mesajului initial (de transmis), iar r este gradul polinomului generator G (x), atunci algoritmul de construire si verificare a codurilor care se incorporeaza in mesajul de transmis este urmatorul:

se inmulteste M (x) cu xr (se adauga r zerouri la sfarsitul mesajului initial);

se efectueaza impartirea modulo 2:

(M (x) * xr) / G (x) Q (x) + R (x) / G (x);

3) catul Q (x) se ignora, iar restul R (x) contine r biti. Se efectueaza scaderea modulo 2: M (x) * xr - R (x) T (x), iar T (x) este polinomul care reprezinta mesajul de transmis. Polinomul ciclic T (x) Q (x) * G (x) este un multiplu al polinomului generator.

4) La receptionarea mesajului se efectueaza impartirea T (x) /G (x):

a)      daca restul 0 nu sunt erori de transmisie;

b)      altfel, s-au produs erori, deci mesajul trebuie retransmis.

Exemplu de transmitere a unui mesaj. Se doreste transmiterea mesajului 101101 (6 biti) M (x) =x5 + x3 + x2 + 1.

Polinomul generator este: 1011 G (x) = x3 + x + 1 de grad r = 3.

Efectuam inmultirea: M (x) xr = 101101000 (se adauga r = 3 zerouri la M (x).

Realizam impartirea modulo 2: M (x) xr/G (x):

1 0 1 1 0 1 0 0 0

1 0 1 1 ---------

catul Q(x)

0 0 0 0 0 1 0 0 0

1 0 1 1

--------

0 0 1 1 R (x) = 0 1 1

Catul Q (x) este ignorat. Pentru a realiza diferenta modulo 2 M (x) xr - R (x) este suficienta adaugarea celor r biti din R (x) la sfarsitul mesajului M (x) mesajul de transmis este T (x) = 101101011.

Exemplu de receptionare a unui mesaj. S-a primit mesajul urmator: 11010101. G (x) = 1011 (4 biti) G (x) = x3 + x + 1 de grad r = 3.

Se efectueaza impartirea T (x) / G (x).

1 1 0 1 0 1 0 1

1 0 1 1 ---------

0 1 1 0 0

1 0 1 0

--------

0 1 1 1 1

1 0 1 1

--------

0 1 0 0 0

1 0 1 1

--------

0 0 1 1 1 R (x) = 1 1 1

R (x) ¹ 0, s-au detectat erori de transmisie, mesajul se retransmite.

Cele mai utilizate polinoame generatoare G (x) sunt:

CRC - 12 x12 + x11 + x3 + x2 + x + 1;

CRC - 16 x16+ x15 + x2 + 1;

CRC - CCITT x16 + x12 + x5+ 1.

3 Elemente de logica numerica

Logica propozitionala este o algebra al carei obiectiv initial este modelarea rationamentului.

Mai recent aceasta algebra si-a demonstrat utilitatea ca instrument de conceptie (conceptia circuitelor calculatorului).

O a treia utilizare a logicii consta in a servi ca model de calcul pentru limbajele de programare (Prolog).

Logica propozitionala este un model matematic care ne permite sa rationam asupra naturii adevarate sau false a expresiilor logice.

O propozitie este un enunt care poate lua una din cele doua valori de adevar: adevarat sau fals. Simbolurile care pot reprezenta o propozitie se numesc variabile propozitionale.

Expresii logice

O prima multime de expresii logice se defineste recursiv astfel:

sunt operanzi atomici:

variabilele propozitionale;

constantele logice true si false;

Orice operand atomic este expresie logica;

Daca E si F sunt expresii logice atunci E and F este expresie logica;

Daca E si F sunt expresii logice atunci E or F este expresie logica;

Daca E este expresie logica atunci not E este expresie logica;

Prezentam definitia operatorilor logici and, or si not.

and 0 1 or 0 1 not

0 0 0 0 0 1 0 1

1 0 1 1 1 1 1 1

Functii booleene

'Semnificatia' unei expresii logice poate fi descrisa formal ca o functie care da o valoare adevarat sau fals pentru expresia intreaga pornind de la valoarea argumentelor, numita functie logica sau booleana.

Tabele de adevar

O functie booleana poate fi reprezentata in practica printr-o tabela de adevar ale carei linii corespund tuturor combinatiilor de valori de adevar pentru argumente. Exista o coloana pentru fiecare argument si una pentru valoarea functiei.

Figura urmatoare prezinta tabelele de adevar pentru operatiile logice and, or, not, xor.

p q p and q p q p or q p not p p q p xor q

0 0 0 0 0 0 0 1 0 0 1

0 1 0 0 1 1 1 0 0 1 0

1 0 0 1 0 1 1 0 0

1 1 1 1 1 1 1 1 1

Tabela de adevar a unei functii cu k argumente poseda 2k linii. Fiecare linie asigneaza pentru functie valoarea 0 sau 1, deci exista 22k functii cu k argumente.

Operatori logici suplimentari

implicatia ' daca p este adevarat atunci q este adevarat';

echivalenta º ' daca si numai daca';

operatorul nonand ' not (p and q)', notat p nand q;

operatorul nonor ' not (p or q)', notat p nor q.

Figura urmatoare prezinta tabelele de adevar pentru º, nand, nor.

p q p q p q p º q p q p nand q p q p nor q

0 0 1 0 0 1 0 0 1 0 0 1

0 1 1 0 1 0 0 1 1 0 1 0

1 0 0 1 0 0 1 0 1 1 0 0

1 1 1 1 1 1 1 1 0 1 1 0

Asociativitatea si precedenta operatorilor logici

Operatorii logici and si or sunt asociativi si comutativi si vor fi grupati de la stanga la dreapta. Ceilalti operatori nu sunt asociativi.

Precedenta operatorilor logici:

not

nand;

nor;

and;

or;

º

Functii booleene ale expresiilor logice

Vom construi expresii logice pornind de la tabelele de adevar. Desi se pot defini o infinitate de expresii logice, de obicei, se va incerca pe cat posibil sa se gaseasca cea mai simpla expresie logica.

Notatii prescurtate

and se reprezinta prin juxtapunerea operanzilor;

or se reprezinta prin +;

not se reprezinta prin Ø sau prin bararea variabilei.

Constructia unei expresii logice din tabela de adevar

Forma normala disjunctiva este o suma logica de mintermi pentru care functia ia valoarea logica adevarat (1). Un minterm este un produs logic de literale (variabile propozitionale) ale unei linii, astfel: daca p are valoarea 0 in coloana k, se utilizeaza Øp, altfel se utilizeaza p.

Forma normala conjunctiva este un produs logic de maxtermi pentru care functia ia valoarea 0. Un maxterm este o suma logica de literale ale unei linii, astfel: daca p ia valoarea 0 se utilizeaza p, altfel Øp.

Legi algebrice pentru expresii logice

Legi ale echivalentei

Reflexivitate: p º p;

Comutativitate: (p º q) º (q º p);

Tranzitivitate: (p º q) and (q º r) (p º r);

Echivalenta negatiilor: (p º q) Øp º Øq);

Legi analoage aritmeticii

Comutativitate and: pq º qp;

Asociativitate and: p(qr) º (pq)r;

Comutativitate or: (p+q) º (q+p);

Asociativitate or: (p+(q+r)) º ((p+q)+r);

Distributivitate and fata de or: p(q+r) º pq+pr;

1 (true) este identitate pentru and: (p and 1) º p;

0 (false) este identitate pentru or: (p or 0) º p;

0 este adsorbant pentru and: p and 0 º

Eliminare duble negatii: (ØØp) º p.

Diferente fata de legile aritmeticii

Distributivitate or fata de and: (p+qr) º ((p+q)(p+r));

1 este adsorbant pentru or: 1 or p º

Idempotenta operatorului and: pp º p;

Idempotenta operatorului or: p+p º p;

Subsumarea:

a)      (p+pq) º p;

b)      p(p+q) º p.

Eliminarea anumitor relatii:

a)      p(Øp+q) º pq;

b)      p+Øpq º p+q.



Legile lui de Morgan:

a)      Ø(pq) ºØp+Øq;

b)      Ø(p+q) ºØpØq;

c)      Ø(p1p..pn) ºØp1+Øp2++ Øpn;

d)      Ø(p1+p2++pn) ºØp1Øp..Øpn.

Legi ale implicatiei

((p q) and (q p)) º (p º q);

(p º q) (p q);

(p q) and (q r) (p r);

(p q) º Øp+q).

Tautologii si metode de demonstratie

Legea tertului exclus: (p+Øp) º

Analiza de caz: (p q) and (Øp q) º q;

Contrara reciprocei: (p q) º Øq Øp);

Reducere la absurd: (Øp º p;

Demonstratie prin reducere: (p º º p;

Exemple:

Functii de o variabila a:


a z0 z1 z2 z3 z0 = 0 constanta;

0 0 0 1 1 z1 = a identitate;

1 0 1 0 1 z2 = Øa negatie;

z3 = 1 constanta;

Functii logice de 2 variabile a si b:

00 01 10 11 ab


0 0 0 0 F0 = 0

0 0 0 1 F1 = ab

0 0 1 0 F2 = aØb

0 0 1 1 F3 = a

0 1 0 0 F4 = Øab

0 1 0 1 F5 = b

0 1 1 0 F6 = aÅb

0 1 1 1 F7 = a+b

1 0 0 0 F8 = Ø (a+b) = ØaØb

1 0 0 1 F9 = Ø(aÅb)

1 0 1 0 F10 = Øb

1 0 1 1 F11 = a+Øb

1 1 0 0 F12 = Øa

1 1 0 1 F13 = Øa+b

1 1 1 0 F14 = Ø(ab) = Øa+Øb

1 1 1 1 F15 = 1

Tabelele Karnaugh (TK)

Tabelele sau diagramele lui Karnaugh permit simplificarea functiilor logice. Metoda se bazeaza pe inspectarea vizuala a tabelelor judicios construite (metoda este utila cu un numar de variabile £

TK se poate considera ca o transformare a tabelei de adevar.

TK cu 2 variabile

Cele 4 casute ale TK corespund celor 4 linii ale tabelei de adevar:

fiecare variabila logica completeaza o linie sau o coloana;

un produs de 2 variabile completeaza o casuta;

Pentru a completa TK pornind de la tabela de adevar se atribuie valoarea 1 casutelor corespunzatoare starilor din intrare in care functia are valoarea 1. Metoda de simplificare consta din a incadra multimea casutelor ocupate, adiacente pe aceeasi linie sau coloana (suprapunerile sunt permise). Figura urmatoare prezinta o TK cu 2 variabile.

a b z b a 0 1

0 0 0 0 1

0 1 1

1 0 1 1 1 1

1 1 1

in urma reducerii avem vom obtine z = a+b.

TK cu 3 variabile

Tabela de adevar a functiei logice de 3 variabile se transforma intr-o TK cu doua dimensiuni, grupand doua variabile pe linie sau coloana. Trecerea de la o linie (coloana) la alta difera printr-o singura variabila (se considera tabela ca infasuratoarea unui cilindru.

Pentru construirea TK cu 3 variabile:

fiecare variabila completeaza un bloc de 4 casute;

un produs logic de doua variabile completeaza un bloc de 2 casute;

un produs logic de 3 variabile completeaza o casuta.

Exemplu: z (a, b, c) = ØaØbØc+aØbc+aØbØc+abc;

b ac 00 01 11 10

in urma reducerii se obtine z = ac+ØbØc.

TK cu 4 variabile

Se construieste TK, precum infasuratoarea unui cilindru, atat orizontal cat si vertical, astfel:

fiecare variabila completeaza un bloc de 8 casute;

un produs logic de 2 variabile completeaza un bloc de 4 casute;

un produs logic de 3 variabile completeaza un bloc de 2 casute;

un produs logic de 4 variabile completeaza o casuta.

Exemplu:

z(a,b,c,d)=ØaØbØcØd+ØaØbØcd+ØaØbcd+ØabØcd+abØcd+

aØbØcd+aØbØcØd+Øabcd+abcd+aØbcd+ØabcØd.

cd ab 00 01 11 10




Expresia simplificata este z = d+ØbØc+Øabc.

in general, metoda de simplificare a unei functii de 4 variabile prin TK este urmatoarea:

incadrarea casutelor cu 1 care nu sunt adiacente altora cu 1 si deci nu pot forma blocuri de 2 casute;

incadrarea casutelor care pot forma grupe de 2 casute dar nu pot forma blocuri de 4 casute;

incadrarea casutelor care pot forma grupe de 4 casute dar nu pot forma blocuri de 8 casute;

incadrarea grupelor de 8 casute adiacente;

Pentru reducerea functiilor logice cu mai mult de 4 variabile trebuie create mai multe tabele Karnaugh.

4 Memorii

O memorie este un dispozitiv capabil sa inregistreze, sa conserve si sa restituie informatii (codificate in binar in sistemul de calcul).

Ierarhia memoriilor

Elementele diverse al memoriei unui sistem de calcul sunt ordonate in functie de urmatoarele criterii: timp de acces, capacitate si cost pe bit. Figura urmatoare prezinta tipurile de memorie si arata ierarhia existenta intre diferitele nivele de memorie.


registre

CPU


memoria cache


memoria centrala


memoria de sprijin


memorii auxiliare

Se poate constata faptul ca pe masura ce ne indepartam de CPU, timpul de acces si capacitatea memoriei cresc, in timp ce costul pe bit se diminueaza:

a)      registrele sunt elementele de memorie situate in unitatea centrala de prelucrare (CPU) si acestea sunt caracterizate printr-o mare viteza, servind in principal stocarii operanzilor si a rezultatelor intermediare. Vom vorbi mai pe larg despre aceste memorii in subcapitolul urmator.

b)      memoria cache sau antememoria este o memorie rapida, de capacitate redusa (in raport cu memoria centrala) utilizata ca memorie intermediara intre CPU si memoria centrala. Aceasta memorie permite minimizarea numarului de accese la memoria centrala, realizand astfel castig considerabil de timp.

c)      memoria centrala este organul principal de aranjare a informatiilor utilizate de catre CPU. Pentru executia unui program el trebuie sa fie incarcat (instructiuni + date) in memoria centrala. Aceasta este o memorie pe semiconductoare al carei timp de acces este mult mai mare decat cel al registrelor sau memoriei cache.

d)      memoria de sprijin serveste drept memorie intermediara intre memoria centrala si memoriile auxiliare. Memoria de sprijin este prezenta in sistemele de calcul cele mai evoluate si permite cresterea vitezei de schimb a informatiilor intre cele doua nivele.

e)      memoriile auxiliare numite de asemenea si memorii de masa (intre care un loc important il ocupa memoriile de arhivare), sunt memorii periferice de mare capacitate si cost relativ scazut. Ele servesc ca dispozitive de stocare permanenta si utilizeaza pentru aceasta suporturi magnetice (discuri, cartuse, benzi) si suporturi optice (discuri optice) spre deosebire de nivelele mai apropiate de CPU care fac apel la tehnologia semiconductoarelor.

Organizarea informatiilor

Informatiile pe care le prelucreaza un sistem de calcul trebuie sa se adapteze unui anumit format, ale carui caracteristici generale sunt urmatoarele:

a)      Bitul, constituie unitatea de baza a informatiei. intr-o memorie, cel mai mic element de stocare este numit adesea punct de memorie: el memoreaza un bit de informatie.

b)      Octetul, mai cunoscut sub termenul englez de byte, corespunde unei succesiuni de 8 biti.

c)      Caracterul este o grupare de 6, 7, 8, biti, permitand codificarea unui caracter alfanumeric sau a unui caracter special (!, i, $, %, ^, &, *, ', , ) potrivit conventiilor de codificare: ASCII, EBCDIC etc.

d)      Cuvantul word este o grupare de biti constituind unitatea de informatie adresabila in memoria centrala si care variaza de la un sistem de calcul la altul. Valorile 32 si 64 au tendinta de a deveni valori generale pentru lungimea unui cuvant.

e)      inregistrarea record semnifica un bloc de date si constituie unitatea de informatie stocata in memoria auxiliara a sistemului de calcul (disc, banda).

f)        Fisierul file este o multime finita de inregistrari.

Caracterisicile memoriilor

a)      Adresa este valoarea numerica desemnand un element fizic de memorie (de exemplu adresa unui cuvant in memoria centrala).

b)      Capacitatea unei memorii corespunde numarului de instructiuni pe care le poate contine si se poate exprima in functie de numarul de biti, octeti sau cuvinte.

c)      Timpul de acces este timpul care se scurge intre lansarea unei operatii de acces (citire sau scriere) si indeplinirea acesteia.

d)      Ciclul de memorie este timpul minimal care se scurge intre doua accese succesive la memorie. Acesta este mai lung decat timpul de acces deoarece cuprinde si anumite operatii de intretinere, sincronizare, stabilizare de semnale in circuite etc.

e)      Debitul este numarul de informatii citite sau scrise pe secunda.

f)        Volatilitatea caracterizeaza permanenta informatiilor intr-o memorie. O memorie volatila isi pierde continutul la producerea unei intreruperi de curent, deci are nevoie de o alimentare constanta cu energie electrica pentru a-si conserva informatiile. Memoria centrala pe semiconductoare este volatila spre deosebire de memoriile magnetice auxiliare.

Tipuri de acces la memorie

a)      Accesul secvential: este accesul cel mai lent deoarece, pentru a accesa o informatie particulara trebuie parcurse toate informatiile care o preced (de exemplu, benzile magnetice);

b)      Accesul direct: informatiile poseda o adresa proprie care permite accesarea lor in mod direct (de exemplu, memoria centrala, registrele);

c)      Acces semi-secvential: este o combinatie intre accesul direct si cel secvential (de exemplu, pentru un disc magnetic, accesul la cilindru este direct si accesul la un sector este secvential);

d)      Accesul prin continut (memorie asociativa): informatiile sunt identificate printr-o cheie si cautarea se efectueaz simultan pentru toate pozitiile memoriei (de exemplu, memoria cache).

5 Unitatea centrala de prelucrare

Unitatea centrala de prelucrare sau procesorul central Central Processing Unit = CPU , sau mai simplu procesor processor , are rolul de a interpreta si executa instructiunile programului pe un sistem de calcul.

CPU este un adevarat 'creier' al sistemului, direct asociat cu memoria unde sunt stocate instructiunile si datele de prelucrat si in acest context, ansamblul CPU + memoria centrala este adesea specificat prin denumirea de unitate centrala a si temului de calcul.

Unitatea centrala de prelucrare se compune din doua unitati functionale separate: unitatea aritmetica si logica (UAL) si unitatea de comanda si de control control unit

Unitatea aritmetica si logica este acea componenta a unitatii centrale de prelucrare in care sunt executate operatiile aritmetice si logice.

Unitatea de comanda controleaza functionarea tuturor celorlalte unitati (UAL, memorie, intrari/iesiri), furnizandu-le semnale de ritmicitate a functionarii si de comanda.

Functionarea poate fi descrisa in modul urmator: unitatea de comanda cauta in memoria centrala o instructiune transmitand in acest sens spre memorie o adresa si o comanda. Instructiunea, inregistrata sub forma binara la adresa data, este transferata catre unitatea de comanda, unde decodificarea sa permite determinarea operatiei cerute. Aceasta informatie este utilizata pentru a genera semnalele corespunzatoare catre UAL pentru declansarea executiei instructiunii. Datele de prelucrat vor fi de asemenea cautate in memorie de catre unitatea de control si transferate direct unitatii de calcul.

Diferitele unitati ale sistemului de calcul sunt interconectate prin sisteme de cablare care transporta semnale electrice. Pentru a se evita legarea unei unitati cu toate celelalte, se utilizeaza linii exploatate in comun de catre toate unitatile sistemului de calcul. Se numeste bus, ansamblul de linii capabile de a transmite semnale corespunzatoare celor trei tipuri de informatii: adrese, date si comenzi.

Exista la ora actuala arhitecturi bazate pe bus unic, pe care sunt conectate toate organele sistemului de calcul. O asemenea structura, specifica microcalculatoarelor, este ilustrata in figura urmatoare:


MEMORIE    CPU


BUS

Adrese Date Comenzi


INTRIRI

in general, interconexiunile sunt asigurate prin bus-uri specializate: bus-memorie, bus de intrare/iesire etc. Bus-ul poate fi utilizat de catre toate unitatile care-i sunt atasate dar nu mai mult decat doua simultan, ceea ce ridica probleme de asteptare si arbitraj al cererilor de utilizare.

Unitatea de comanda

Unitatea de comanda este multimea tuturor dispozitivelor de coordonare a functionarii sistemului de calcul in vederea executarii secventei de operatii specificate prin instructiunile programului.

Principalele dispozitive ale unitatii de comanda care vizeaza cautarea in memorie si decodificarea unei instructiuni (ciclul de cautare), sunt urmatoarele:

a)      contorul ordinal (CO), este un registru care contine adresa din memorie unde este stocata instructiunea de cautat;

b)      registrul instructiune (RI), primeste instructiunea care trebuie sa fie executata;

c)      decodificatorul codului operatiei, care determina ce operatie trebuie sa fie efectuata, dintre toate cele posibile;

d)      secventatorul, care genereaza semnale de comanda;

e)      ceasul intern, sau orologiul, care emite impulsuri electrice uniforme, sincronizand astfel toate actiunile unitatii centrale.

Circulatia informatiilor in timpul unui ciclu de cautare fetch cycle este ilustrata in figura urmatoare:


RA Memorie RC


3



CO RI




4


Decodificator


5 4


Orologiu Secventator

Etapele ciclului de cautare (corespunzand numerelor incercuite in figura de mai sus) pot fi rezumate astfel:

transferul adresei noii instructiuni din CO catre RA, registrul de adresa al memoriei memory adress register

un semnal de citire, generat de catre unitatea de comanda, provoaca transferul instructiunii cautate in RC (registrul cuvant), care functioneaza ca un registru tampon pentru toate informatiile citite (sau scrise in) din memorie;

transferul instructiunii in RI (instructiune = cod operatie + adresa operand);

in timp ce adresa operandului este trimisa catre RA, codul operatiei este transmis decodificatorului care determina tipul operatiei solicitate si-l transmite secventatorului printr-un semnal pe linia de iesire corespunzatoare;

CO este incrementat in vederea ciclului urmator de cautare.

Ciclul de cautare este imediat urmat de ciclul de executie, in timpul caruia operatia specificata prin instructiune este efectuata de catre unitatea de calcul.

Secventa exacta a actiunilor coordonate de catre secventator va depinde de tipul operatiei; in general, in timpul unui ciclu de executie, informatia va circula potrivit schemei urmatoare:


2

RA Memorie RC


Unitate de UAL

comanda 1

Acumulator


Secventator 3


Un ciclu de executie va cuprinde in mod normal urmatoarele etape:

secventatorul incepe sa trimita semnale de comanda catre memorie pentru citirea operandului la adresa deja stocata in RA si realizeaza transferul catre RC;

transferul continutului din RC catre UAL, mai precis catre registrul acumulator, sau oricare alt registru destinat operatiei specificate. in anumite cazuri, de exemplu, memorarea unui rezultat, continutul registrului acumulator se va transfera catre RC, iar daca este vorba despre o instructiune de salt, campul de adresa al instructiunii va trebui transferat in CO;

operatia este efectuata sub controlul secventatorului.

Atunci cand ciclul de executie este incheiat, unitatea de comanda trece imediat la ciclul de cautare urmator, luand in considerare noua instructiune indicata prin adresa continuta in CO.

Nivele de programare

Pentru a scrie un program, utilizatorul poate utiliza unul dintre limbajele de programare cunoscute: Fortran, Pascal, Ada, Asamblor etc. Sistemul de calcul nu poate intelege decat propriul sau limbaj, limbajul masina, cu multimea sa de instructiuni.

in programare, se utilizeaza termenul limbaj pentru a indica o multime de instructiuni si de reguli sintactice care permit scrierea codului sursa al programului. Deoarece sistemul de calcul executa doar programe scrise in cod masina sau cod obiect, apare necesitatea traducerii codului sursa in cod obiect, care se realizeaza automat cu ajutorul compilatoarelor si asambloarelor.

Limbajele de programare se poat prezenta pe mai multe nivele, cele superioare fiind mai apropiate de limbajul utilizatorului, iar cele inferioare fiind mai bine adaptate caracteristicilor sistemului de calcul. Situatia actuala este sintetizata in figura urmatoare:


limbaje evoluate


nivel asamblor


instructiuni masina

micro-instructiuni


nivelul comenzilor

electronice

Structura instructiunilor la nivel masina

Sistemele de calcul sunt capabile sa efectueze un anumit numar de operatii simple, de exemplu adunarea a doua numere, testarea semnului unei valori numerice, copierea continutului unui registru in alt registru, stocarea in memorie a rezultatului unei operatii etc.

O instructiune masina trebuie sa furnizeze pentru CPU toate informatiile pentru declansarea unei operatii elementare. Ea trebuie sa contina un cod al operatiei care este esential pentru specificarea tipului actiunii dorite. in plus, instructiunea mai trebuie sa contina una sau mai multe adrese, de exemplu, adresa operandului (sau operanzilor), adresa unde se depune rezultatul, adresa de cautare a instructiunii urmatoare.

De aceea, o instructiune in formatul unei instructiuni masina va comporta un camp de cod operatie si pana la patru campuri de adresa.

Un sistem de calcul functioneaza pe n adrese, n = 0, 1, 2, 3, 4, daca majoritatea instructiunilor sale contin n adrese in campul de adrese.

Setul si structura instructiunilor masina caracterizeaza arhitectura fundamentala a sistemelor de calcul. in acest context, daca sistemele primei generatii utilizau frecvent formate pe mai multe adrese ale instructiunilor, astazi, datorita cresterii considerabile a capacitatii de memorare, se prefera instructiuni pe o adresa.

Trecerea la instructiunea urmatoare de executat se realizeaza prin utilizarea unui contor ordinal care se incrementeaza cu 1 la fiecare operatie si accepta executia secventiala a instructiunilor.

Pentru a se evita retinerea adresei rezultatului intr-o locatie separata, acesta se poate memora in locul unui operand, utilizand un registru special, acumulatorul: al doilea operand se gaseste deja in registrul acumulator (incarcat prin instructiunea precedenta) si rezultatul operatiei va fi stocat de asemenea in registrul acumulator.

Exemplul urmator, de programare a unei masini pe o adresa, prezinta secventa instructiunilor masina / asamblor pentru evaluarea urmatoarei expresii aritmetice: A = B (C + D E - F / G).

LOAD F (LOAD = incarca in registrul acumulator)

DIV G (DIV = imparte continutul acumulatorului)

STA T1 (STA = stocheaza continutul acumulatorului)

LOAD    D

MPY E (MPY= multiplica continutul acumulatorului)

ADD C (ADD = adauga la continutul acumulatorului)

SUB T1 (SUB = scade din continutul acumulatorului)

MPY B

STA A

Pentru a ilustra utilizarea unei masini pe zero adrese va trebui utilizata o structura de date speciala numita stiva stack (sau memorie LIFO = Last In, First Out), operanzii gasindu-se in cele doua pozitii superioare si rezultatul fiind plasat in varful aceleiasi stive.

Se poate descrie astfel secventa instructiunilor corespunzatoare evaluarii expresiei din exemplul anterior: A = B (C + D E - F / G).

LOAD B Stiva =

LOAD C Stiva =

LOAD D Stiva =

LOAD E Stiva =

MPY Stiva =

ADD Stiva =

LOAD F Stiva =

LOAD G Stiva =

DIV Stiva =

SUB Stiva =

MPY Stiva =

STA A Stiva =

Setul instructiunilor

Fiecare tip de sistem de calcul poseda un set de instructiuni de baza, care variaza de obicei intre 50 si 250. La ora actuala exista doua mari tendinte in ceea ce priveste setul de instructiuni de baza:

a)      Arhitecturile RISC Reduced Instruction Set Computer preconizeaza un numar mic de instructiuni elementare intr-un format fix, usor de realizat din punct de vedere material (hardware) si cu o executie rapida, ceea ce implica un secventator cablat si un compilator capabil sa exploateze bine caracteristicile sistemului (de exemplu, utilizarea pe o scara larga a registrelor si limitarea acceselor la memoria centrala);

b)      Arhitecturile CISC Complex Instruction Set Computer sunt bazate pe un set bogat de instructiuni, de talie variabila, oferind astfel instructiuni compuse, ca de exemplu, calculul radacinii patrate sau inmultire in virgula mobila cu dubla precizie. in general aceste sisteme sunt prevazute cu secventator multiprogramat.

Instructiunile care pot face parte din setul de instructiuni ale oricarui sistem de calcul pot fi clasate in sase grupe, astfel:

a)      transfer de date (Load, Move, Store, transfer de date intre doua registre sau intre memoria principala si un registru);

b)      operatii aritmetice (cele patru operatii in virgula fixa sau mobila, in simpla sau multipla precizie);

c)      operatii logice (AND, OR, NOT, XOR etc.);

d)      control de secventa (salturi conditionate si neconditionate, apel de subprograme etc.);

e)      intrari/iesiri (Read, Write, Print etc.);

f)        operatii diverse ( decalari, conversii de format, incrementari de registre etc.).

Registrele CPU

Numarul si tipul registrelor pe care le poseda CPU constituie o caracteristica determinanta a arhitecturii sale si au o influenta importanta asupra programarii.

Desi structura registrelor CPU difera de la un constructor la altul, totusi, functiunile de baza realizate prin diverse registre CPU sunt in general aceleasi. in continuare vom descrie principalele registre CPU:

a)      Contorul ordinal (CO) Program Counter = PC contine adresa de memorie a urmatoarei instructiuni de executat. El este incrementat automat de catre sistem dupa fiecare utilizare (programatorul nu are acces direct la CO). Programul este executat in secventa, cu exceptia situatiilor in care contine o instructiune de modificare a secventei (de exemplu, o instructiune de salt sau de ramificare), caz in care noua adresa va inlocui continutul contorului ordinal.

b)      Acumulatorul (RAc) este un registru foarte important al UAL, care, in majoritatea operatiilor aritmetice si logice contine unul dintre operanzi inainte de executie si rezultatul dupa executie. Registrul acumulator poate fi de asemenea utilizat ca un registru tampon in operatiile de intrare/iesire. in general RAc are aceeasi talie ca si un cuvant-memorie, dar cele mai multe sisteme de calcul admit extinderea registrului acumulator (registrul Q) pentru a contine rezultatul unei inmultiri, catul si restul unei impartiri, sau poate contine bitii cei mai putin semnificativi in cadrul unei operatii in virgula mobila dubla precizie;

c)      Registrele generale general purpose register permit salvarea informatiilor utilizate in mod frecvent de catre program sau a rezultatelor intermediare, ceea ce conduce la accelerarea executiei programului prin reducerea numarului de accese la memoria centrala;

d)      Registrele de index sau de indice (XR) index register se pot utiliza ca registre generale pentru salvari si contorizari, posedand in plus o functie speciala, de mare utilitate in manipularea tablourilor de date. Registrele de index pot fi utilizate pentru manipularea adreselor corespunzator unei forme particulare de adresare numita adresare indexata;

e)      Registrele de baza (Rb) base registers sunt utilizate ca registre de index pentru calculul adreselor efective (adresare bazata) si in acest sens ele sunt concepute sa contina o adresa de referinta care trebuie adaugata la continutul campului de adresa al instructiunii pentru a obtine adresa efectiva;

f)        Registrul de stare PSW = Program Status Word , numit de asemenea registru conditie, contine anumiti biti care indica starea unei conditii particulare in CPU. De exemplu, bitul indicator Z indica daca rezultatul operatiei efectuate este egal cu zero, bitul indicator C indica o depasire de capacitate in RAc etc. Acesti biti pot fi testati prin program pentru determinarea secventei de instructiuni de urmat;

g)      Registrul pointer de stiva SP = Stack Pointer este utilizat pentru a simula o stiva in memoria centrala. Registrul SP functioneaza ca un registru de adresa de memorie (RA) si contine in orice moment adresa corespunzatoare varfului stivei, deci cand se incarca un cuvant in stiva adresa sa se inscrie in SP, iar citirea din stiva se face pornind de la adresa indicata de pointerul SP;

h)      Registrele specializate sunt specifice anumitor sisteme de calcul si sunt destinate operatiilor particulare, de exemplu, registre de decalare shift registers , registre pentru operatii aritmetice in virgula mobila floating point registers etc.

Adresarea operanzilor

Campul de adresa al unei instructiuni nu contine de fiecare data adresa efectiva a unui operand si de aceea, pentru facilitarea activitatii de programare sunt puse la dispozitie mai multe metode de adresare a operanzilor, cunoscute sub numele de moduri de adresare, specificate in formatul instructiunilor printr-un bit care indica modul folosit.

Printre modurile de adresare, cele mai importante sunt:

a)      adresare directa: campul de adresa al instructiunii contine adresa efectiva a operandului;

b)      adresare indirecta: campul de adresa al instructiunii contine adresa la care gaseste adresa efectiva a operandului (pot exista mai multe nivele de indirectare);

c)      adresare imediata: campul de adresa al instructiunii contine chiar operandul;

d)      adresare implicita: codul operatiei indica locul unde se gaseste operandul (de exemplu, masini pe zero adrese);

e)      adresare indexata: adresa efectiva = continutul campului de adresa al instructiunii + continutul registrului de index;

f)        adresare bazata: adresa efectiva = continutul campului de adresa al instructiunii + continutul registrului de baza;

g)      adresare relativa: asemanatoare adresarii bazate, dar utilizeaza continutul registrului CO ca adresa de baza.

Exemple de adresare

Pentru simplificarea scrierii, in exemplele urmatoare vom utiliza simboluri ca: a, b, c, alfa etc. pentru a indica anumite date si prescurtari precum: IMM (adresare imediata), I (adresare indirecta), XR1 (registrul de index nr. 1), B1 (registrul de baza nr. 1). Ne propunem sa aratam care este efectul pe care-l au asupra continutului registrului acumulator diferitele moduri de adresare utilizate. Continutul memoriei si al catorva registre este prezentat in tabela urmatoare:

Starea registrelor si a memoriei

adresa continut adresa continut

100 a 300 alfa

101 b 301 beta

102 c 302 gama

103 d XR1 1

200 300 B1 100

201 302 B2 200

in tabela urmatoare sunt prezentate exemple de operatii care utilizeaza registrul acumulator, modurile de adresare fiind specificate dupa campul de adresa al instructiunii.

Efectul diferitelor moduri de adresare:

Instructiune Continutul RAc

LOAD 100 a

LOAD 100, IMM 100

LOAD 200, I alfa

LOAD 200, XR1 302

LOAD 200, XR1, I gama

LOAD 200, I, XR1 beta

LOAD 3, B1 d

LOAD 1, B2 302

Notam ADR numarul de biti din campul de adresa al unei instructiuni si fie 2n capacitarea memoriei centrale. Pot exista trei situatii:

a)      ADR = n: memoria fizica este accesibila in totalitate si orice metoda de adresare poate fi utilizata;

b)      ADR < n: ADR nu este suficient pentru a adresa toata memoria si in acest caz se poate utiliza metoda de adresare bazata, daca registrul de baza este suficient de mare (n biti). in acest sens, se poate diviza memoria in blocuri de o asemenea marime incat ADR sa poata adresa complet un bloc. Campul de adresa al instructiunii va contine deplasamentul offset in interiorul blocului, iar adresa de inceput a blocului va fi continuta in registrul de baza. Adresa efectiva se va calcula prin insumarea continutului registrului de baza cu continutul campului de adresa al instructiunii.

c)      ADR > n: ADR poate adresa pozitii de memorie care nu exista in memoria fizica, ceea ce ofera posibilitatea extinderii memoriei principale spre memoriile auxiliare, de exemplu, discuri magnetice (notiunea de memorie virtuala).

Unitatea aritmetica si logica (UAL)

Unitatea aritmetica si logica, specifica sistemelor de calcul moderne, este capabila sa realizeze o mare varietate de operatii.

Anumite operatii nu utilizeaza decat un singur registru si un singur operand, de exemplu, complementarea logica, decalarea, incrementarea etc., pe cand alte operatii folosesc doi operanzi, de exemplu, adunarea, scaderea, operatiile logice AND, OR, XOR etc.

Sistemele de calcul specializate pe aplicatii cu caracter tehnico-stiintific ofera o intreaga gama de operatii in virgula mobila in simpla si dubla precizie. Microcalculatoarele poseda un numar mai restrans de instructiuni specifice operatiilor cele mai simple, lasand in seama programarii operatiile mai complexe, ca de exemplu, inmultirea, impartirea, extragerea radacinii patrate, operatiile in virgula mobila etc.

Orice prelucrare de date are loc in cadrul UAL, unde se gasesc toate circuitele capabile sa efectueze operatiile elementare care stau la baza oricarui algoritm. UAL este total subordonata unitatii de comanda care declanseaza, controleaza si sincronizeaza orice activitate a UAL.

6 Unitatile de intrare/iesire

Functiunea de baza a unui sistem de calcul este prelucrarea informatiei. Am vazut cum se realizeaza aceasta functiune la nivelul memoriei centrale si a unitatii centrale de prelucrare.

Vom prezenta in continuare modalitatile prin care sistemul de calcul achizitioneaza informatia furnizata de mediul sau exterior si restituie rezultatele prelucrarii acestei informatii.

Comunicarea sistemului de calcul cu lumea exterioara este realizata prin intermediul unitatilor de intrare/iesire input/output , sau I/O

in ultimii ani, tehnica intrarilor/iesirilor a fost mult dezvoltata, echipamentul intrarilor/iesirilor este astazi mai costisitor chiar si decat unitatea centrala si ocupa mai mult spatiu decat orice alta componenta a sistemului de calcul.

Daca sistemele de calcul din prima generatie utilizau informatii preluate prin manipularea intreruptoarelor sau a benzii de hartie perforata, in continuare se vor utiliza tastaturi alfanumerice, cartele perforate, benzi si cartuse magnetice, discuri si dischete magnetice, discuri optice, ecrane video, mouse-uri, creioane optice, cititoare optice de caractere sau de coduri specializate.

Tehnica iesirilor a fost de asemenea considerabil dezvoltata. S-a trecut astfel de la lampile intermitente ale anilor '50, la ecranele color si imprimantele laser ale sistemelor contemporane.

Terminale interactive

Un terminal interactiv este un echipament periferic permitand utilizatorului o comunicare in ambele sensuri cu sistemul de calcul. Unitatea de intrare este un dispozitiv interactiv precum tastatura keyboard sau mouse-ul, iar unitatea de iesire este un ecran de vizualizare display bazat de obicei pe tehnica tubului catodic CRT

Tastatura este dispozitivul interactiv prin excelenta pentru toate aspectele referitoare la tratarea unui text. Pentru o manipulare mai usoara a obiectelor pe ecran se utilizeaza mouse-ul.

Tastatura unui sistem de calcul este asemanatoare cu cea a unei masini de scris care realizeaza imprimarea pe o foaie de hartie a caracterelor in urma apasarii tastelor.

Prin actionarea unei taste este lansat un semnal electronic care este codificat in mod specific de exemplu in cod ASCII , iar caracterul corespunzator tastei este afisat pe ecranul sistemului de calcul.

Ecrane alfanumerice

Un ecran alfanumeric se limiteaza la afisarea caracterelor distribuite pe un anumit numar de linii, fiecare linie fiind compusa din mai multe sute de puncte.

Fiecare caracter este format dintr-o configuratie de puncte alese conform unei anumite grile, generand astfel o matrice de puncte.

Ecranul contine in general o pagina de text organizata in 24 de linii si 80 de coloane.

Ecrane grafice

Ecranele grafice permit atat afisarea caracterelor cat si afisare de imagini sau desene.

Prin aparitia si dezvoltarea interfetelor utilizatori - ecrane grafice bazate pe folosirea ferestrelor si pictogramelor, ecranele grafice au inlocuit ecranele alfanumerice. Cele mai cunoscute ecrane grafice sunt:

a)      Ecrane cu baleiaj TV la care ecranul este divizat in mici domenii elementare (pixeli) care formeaza un anumit numar de linii si de coloane. Evolutia ecranelor cu baleiaj a cunoscut urmatoarele etape:

ecranele monocrome, care afiseaza imagini binare (bitmap), unde fiecare element este reprezentat printr-un bit;

ecranele cu nivele de gri, care pot afisa imagini pixmap, in care fiecare element de imagine poate avea un anumit nivel de gri (8 biti pot reprezenta 256 nivele de gri);

ecranele color, permit afisarea imaginilor in culori, dar pentru aceasta sunt necesare memorii-imagine mai mari, deoarece pentru fiecare element de imagine trebuie indicate valorile celor trei culori de baza (bleu, verde si rosu).

b)      Ecrane vectoriale, care realizeaza vizualizarea prin adresarea punctuala a ecranului in locul unui baleiaj sistematic. Se utilizeaza un fascicol ca 'stilou' pentru trasare curbe conform unui parcurs definit printr-o secventa de comenzi stocate intr-o memorie locala. Ecranele grafice sunt adaptate aplicatiilor unde domina liniile, structurile filiforme, desenele prin trasaj (contur), fara o eficienta deosebita in reproducerea imaginilor pline (fotografii);

c)      Ecrane plate. Miniaturizarea produselor electronice a antrenat realizarea si dezvoltarea afisajelor pe ecrane plate, mai mici, mai lejere si mai putin fragile decat tuburile catodice. Tehnici, ca de exemplu, cristalele lichide sau ecrane cu plasma sunt aproape de a deveni competitive.

Imprimante

Tehnicile de imprimare au evoluat considerabil, la ora actuala exista o mare varietate de imprimante, acoperind un interval extins de preturi si de performante. Imprimarea poate fi alb-negru sau color, principalele procedee de imprimare color fiind jetul de cerneala, transfer termic sau sublimare termica.

Imprimantele color utilizeaza trei culori primare galben, cyan, magenta, ca si negru, ceea ce permite crearea unei vaste palete de culori.

Putem prezenta o varianta de clasificare a imprimantelor:

a)      Imprimante cu impact, inca utilizate in administratie datorita posibilitatii de a realiza copii carbon:

teleimprimatoarele: capul mecanismului de imprimare are forma unui cilindru pe care sunt gravate caracterele; intre cilindru si hartia de imprimat se gaseste o banda imbibata de cerneala;

imprimantele Boole: caracterele sunt inscrise pe o sfera;

imprimantele matriciale (prin puncte): caracterele sunt compuse pornind de la punctele unei grile (matrice) de 7 9 sau 9 13, potrivit calitatii de imprimare alese;

b)      Imprimantele fara impact, unde calitatea de imprimare este data de densitatea punctelor imprimate, care se exprima in dpi dots per inch

imprimante termice: se aseamana cu imprimantele matriciale dar in locul lovirii unei benzi, se realizeaza incalzirea unei suprafete de hartie speciala, sensibila la caldura. Functionarea este silentioasa, iar in ceea ce priveste imprimarea termica color, sunt cunoscute doua tehnologii: transfer termic si sublimare termica, ambele utilizand un rulou de celofan acoperit de o cerneala in stare solida, compusa dintr-o succesiune de regiuni de culoare galbena, cyan, magenta;

imprimante cu jet de cerneala: sunt silentioase si au viteza de imprimare comparabila cu cea a imprimantelor termice, putand imprima orice simbol sau grafism. Principiul de functionare consta in crearea unui fascicol de picaturi de cerneala dirijate asupra hartiei cu o mare precizie. Calitatea de imprimare este foarte buna, rezolutia variaza intre 200 dpi si 400 dpi;

imprimante laser: utilizeaza metode si procedee electrostatice. Se formeaza o imagine electrostatica pe un tambur fotoconductor, tamburul trece prin fata statiei de dezvoltare unde cerneala incarcata electric este atrasa numai de punctele precedent incarcate. Imaginea este transferata pe hartie prin frecarea acesteia pe tambur. Aceasta tehnica nu necesita hartie de calitate superioara, rezolutia variaza intre 300 si 2000 dpi (standard 600 dpi).

Digitalizoare

Digitalizoarele scanners sunt echipamente periferice care permit 'numerizarea' unei imagini pornind de la o copie pe suport solid (hartie). Rezultatul digitalizarii este o imagine digitala stocata intr-un fisier.

Arhitecturi si proceduri de intrare/iesire

Unitatea centrala comunica cu unitatile periferice prin intermediul subsistemului de intrare/iesire.

Pentru a efectua o operatie de intrare/iesire, in CPU se executa o instructiune de intrare/iesire. CPU preia initiativa realizarii oricarei intrari sau iesiri, si in functie de natura legaturii intre CPU si echipamentul periferic implicat, se stabileste o legatura directa CPU-periferic sau se atribuie sarcina schimbului unui dispozitiv subordonat dar capabil sa lucreze de maniera autonoma, ca de exemplu, canal de intrare/iesire sau acces direct la memorie DMA: Direct Memory Access

in cazul legaturii directe intre CPU si periferic apare problema enormei diferente intre vitezele de lucru ale celor doua dispozitive, CPU ramane blocat pe toata durata transferului de informatie.

in vederea utilizarii rationale a CPU, se utilizeaza tehnica intreruperii programului. Metoda consta in introducerea unui semnal numit intrerupere interrupt trimis spre CPU de catre perifericul gata sa efectueze un schimb elementar, de exemplu, transferul unui octet. Acest semnal provoaca intreruperea programului in curs de executie, CPU se ocupa de transfer prin activarea unui program special (program de serviciu de intrerupere), iar dupa efectuarea transferului, CPU reia programul intrerupt.

Abordarea cea mai economica consta in suspendarea programului in executie timp de un ciclu-memorie, fara un efect deosebit asupra timpului de executie. Aceasta metoda se materializeaza prin utilizarea canalelor de intrare/iesire sau acces direct la memorie DMA

Sistemul de intreruperi

intreruperea este un semnal electronic generat de catre o unitate functionala, de exemplu, canal sau controler de periferice, si acest semnal este transmis spre CPU pentru a provoca o ruptura de secventa in vederea executiei unui program prioritar, care trateaza cauza intreruperii.

Sistemul de intrerupere, incorporat in CPU la nivelul secventatorului, este dispozitivul care inregistreaza semnalele de intrerupere trimise catre CPU, ale caror cauze pot fi:

a)      interne in raport cu CPU, de exemplu: depasire de capacitate (overflow), coduri de operatii inexistente, erori de adresare, utilizare abuziva a instructiunilor privilegiate, pana de curent.

b)      externe in raport cu CPU, de exemplu: starea unei unitati periferice, sfarsitul unui transfer de date.

Tratarea unei intreruperi se realizeaza prin urmatoarele actiuni:

a)      oprirea executiei programului in curs;

b)      salvarea starii sistemului;

c)      executarea programului de serviciu de intrerupere;

d)      restaurarea starii sistemului;

e)      reluarea executiei programului intrerupt.

Diversele cauze ale intreruperilor sunt afisate intr-un vector de indicatori asociat sistemului de intrerupere, iar programul care trateaza intreruperea trebuie sa testeze acesti indicatori.

in sistemele evoluate, fiecare intrerupere are asociata o adresa in memoria centrala, iar ruptura de secventa este realizata prin transferul in contorul ordinal a adresei unde se gaseste programul de serviciu.

Majoritatea sistemelor de calcul moderne sunt prevazute cu sisteme de intrerupere ierarhizate priority interrupt systems , acestea fiind sistemele cu nivele de prioritate.

Problemele care trebuiesc rezolvate sunt urmatoarele:

sosirea mai multor semnale de intrerupere in timpul executiei unei instructiuni;

sosirea unui semnal de intrerupere in timpul executiei unui program de prelucrare a unei intreruperi anterioare.

in aceste sisteme, fiecare nivel este asociat unui anumit numar de intreruperi, fiecarui nivel ii corespunde un anumit nivel de prioritate, iar orice program poate fi intrerupt in vederea realizarii unei intreruperi mai prioritare.

Sistemele de intrerupere cele mai elaborate sunt cele care fac parte din sistemele de calcul orientate catre aplicatii de conducere a proceselor industriale process control sau de achizitionare de date data acquisition

Un sistem de intrerupere modern trebuie sa permita programatorului urmatoarele actiuni:

invalidarea/activarea disable/enable sistemului de intrerupere;

mascarea/demascarea individuala a intreruperilor;

stabilirea unei ierarhii in multimea cauzelor intreruperilor si definirea mai multor nivele de prioritate, de preferinta dinamic;

asocierea unui program specific fiecarei intreruperi, permitand actiuni elementare realizabile intr-o singura instructiune;

posibilitatea de utilizare a tuturor registrelor care caracterizeaza starea masinii si refacerea acestora la sfarsitul programului de intrerupere.





Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1809
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved