Arhitectura Calculatoarelor
1
Arhitectura Calculatoarelor Introducere
Un calculator numeric este constituit dintr-un ansamblu de resurse fizice (hardware) şi de programe de sistem (software de sistem) care asigură prelucrarea automată a informaţiilor !n conformitate cu algoritmii specificaţi de utilizator prin programele de aplicaţii (software utilizator)" Arhitectura calculatorului cuprinde două componente principale# a) arh arhite itectu ctura ra setulu setuluii de instruc instrucţiu ţiuni ni (A$%)& (A$%)& b) implementarea maşinii maşinii cu cele două sub - componente# componente# −
organizare&
−
hardware"
Arhitectura setului de instrucţiuni este ceea ce trebuie să ştie un programator pentru a scrie programe !n limba' de asamblare respecti pentru a concepe şi construi un program de tip compilator sau rutine destinate sistemului de operare" ermenul organizare include aspectele de niel !nalt ale unui proiect de calculator ca de e*emplu struct str uctura ura int intern ernăă a UC+ (un (unita itatea tea cen centra trală lă de pro proce cesar sare e mic microp roproc roceso esor) r) str struct uctura ura şi org organi aniza zarea rea magistralelor organizarea organizarea sistemului de memorie" ,oţiunea de hardware (resurse fizice) e utilizată pentru a ne referi la aspectele specifice ale implementării calculatorului" Acestea includ proiectul logic de detaliu şi tehnologia de realizare a maşinii de calcul" 1. Reprezentare Reprezentarea a funcțională a unui calculator calculator
Un calculator poate fi descris att sub aspect funcţional ct şi structural" Circuitele electronice ale unui calculator recunosc şi e*ecută doar un set limitat de instrucţiuni elementare codificate !n formă binară" Aceste instrucţiuni sunt doar succesiuni de biţi (1 şi .) pe care procesorul le !nţelege - decodifică şi le e*ecută" %ndiferent de tipul de maşină instrucţiunile recunoscute sunt rareori mai complicate dect /anenbaum0# − adună două numere& − erifică dacă un număr este egal cu zero& − copiază date dintr-o zonă a memoriei calculatorului !n altă zonă" e e*emplu la procesoarele %ntel din seria 2.*23 codul binar al instrucţiunii următoare# .... .1.. .... .11. comandă adunarea conţinutului unui registru intern de 2 biţi (numit registrul al) cu aloarea imediată 3" Adesea cnd utilizatorul este obligat să lucreze cu alori numerice binare se foloseşte reprezentarea !n he*aze he*azecim cimal al care care este este ma maii compac compactă tă şi ma maii uşor uşor de citit" citit" Codul Codul !n he*az he*azeci ecima mall al instru instrucţi cţiuni uniii corespunzătoare succesiunii binare de mai sus este .4 .3 he*" 5i acest mod de scriere a instrucţiunilor este !nsă complicat pentru programator" programator" $crierea instrucţiunilor se poate realiza la !nceput !nceput !n limba' natural transpunndu-se transpunndu-se apoi apoi !ntrun limba' artificial numit limbaj de programare" Limbajul de programare reprezintă un set de instrucţiuni !mpreună cu regulile de organizare ale acestora !ntr-un program" otalitatea regulilor de scriere ale instrucţiunilor reprezintă sintaxa limba'ului iar totalitatea regulilor prin care se asociază o semnificaţie instrucţiunilor reprezintă semantica limba'ului" Calculatorul poate e*ecuta numai instrucţiuni e*primate intern sub forma unor şiruri de cifre binare" +rogramele !n care instrucţiunile sunt scrise sub această formă se numesc programe !n limbaj maşină" 6imba'ul maşină este caracteristic fiecărui tip de calculator" $crierea şi introducerea programelor sub această formă este dificilă" +entru simplificarea scrierii programelor au fost create limba'e !n care fiecărui cod de instrucţiune i s-a ataşat un nume mnemonic" Acest mod de reprezentare a instrucţiunilor maşin ma şinăă se numeşt numeştee limba limbajj simb simboli olicc sau limbaj de asamblare" Acest limba' permite utilizatorului să realizeze codificări simbolice ale instrucţiunilor şi ale adreselor de memorie" +entru a se e*ecuta un program !n limba' de asamblare acesta trebuie translatat !n prealabil !n limba' maşină printr-un proces numit asamblare" +rogramul care se translatează se numeşte program
Arhitectura Calculatoarelor sursă iar iar cel cel rezu rezult ltat at
7
!n urma urma tran transl slat atăr ării ii se num numeşte eşte program obiect " 8p 8per eraţ aţia ia de tran transl slat atar aree a programului sursă !n program obiect este e*ecutată de un un program special special numit asamblor " 8 instrucţiune !n limba' de asamblare corespunde corespunde unei instrucţiuni !n limba' maşină deosebirea deosebirea dintre ele const constnd nd num numai ai !n mo modul dul de reprez reprezent entare are"" eci eci fieca fiecare re instru instrucţi cţiune une !n limba' limba' de asambl asamblare are este este translatată !ntr-o singură instrucţiune !n limba' maşină" Un limba limba'' de asam asambl blar aree este este spec specifi ificc unui unui calc calcul ulat ator or astf astfel el !nc !nctt treb trebui uiee să secu secuno noas ască că instrucţiunile şi organizarea internă a acelui calculator" in acest moti s-au elaborat limba'e pentru programe care se pot e*ecuta pe orice calculator" Acestea Acestea sunt limba'e orientate pe probleme sau limbaje de nivel înalt spre deosebire de limba'ele de asamblare care sunt limba'e orientate pe calculator sau limbaje de nivel scăzut " Asemenea limba'e de niel !nalt sunt +ascal C 6%$+ +9868: etc" Unei instrucţiuni !ntr-un limba' de niel !nalt !i corespunde o succesiune de instrucţiuni !n limba' maşină" ranslatarea !n limba'ul maşină se poate realiza cu a'utorul unui compilator care generează din programul sursă un program executabil acesta fiind e*ecutat după ce !ntregul program a fost compilat" 8 altă posibilitate este utilizarea unui interpretor care translatează fiecare instrucţiune !n limba'ul de niel !nalt !ntr-o succesiune de instrucţiuni maşină acestea fiind e*ecutate imediat . ;n acest caz nu se generează un program e*ecutabil"
Un model posibil al unui calculator numeric modern reprezintă o ierarhie de maşini irtuale pe mai multe niele (=igura 1"1)"
=igura 1"1 - %erarhia de niele a unui calculator calculator modern ,ielul . numit nivelul logicii digitale este reprezentat de componentele hardware ale calculatorului (maşina fizică)" Circuitele acestui niel e*ecută instrucţiunile maşină ale nielului 1" >lementele de bază ale acestor acestor circuite circuite sunt porţile logice fiecare poartă fiind formată la rndul ei dintr-un număr de
Arhitectura Calculatoarelor
?
tranzistoa tranzistoare" re" 8 poartă poartă logică are una sau mai multe intrări digitale (semnale (semnale reprezentnd reprezentnd . logic sau 1 logic) şi are ca ieşire o funcţie simplă a acestor intrări de e*emplu 5% logic $AU logic" ,ielul 1 numit nivelul de microprogram interpretează instrucţiunile nielului 7 pentru fiecare instrucţiune a acestui niel e*istnd cte un microprogram" =iecare microprogram defineşte !n mod implicit un limba' de niel 7 şi o maşină irtuală" e obicei e*istă multe similarităţi !ntre maşinile irtuale de niel 7 chiar şi !n cazul calculatoarelor diferiţilor producători" Acest niel se numeşte nivelul maşinii convenţionale (@ardware abstraction laer B @A6)" Atunci cnd se descrie setul de instrucţiuni al unui calculator se descrie de fapt maşina irtuală de niel 7 şi nu maşina reală de niel 1" $unt descrise deci instrucţiunile interpretate de către microprogram şi nu instrucţiunile e*ecutate direct prin hardware" e menţionat că la anumite calculatoare nielul de microprogram lipseşte" 6a aceste calculatoare instrucţiunile maşinii conenţionale sunt e*ecutate direct de circuitele electronice ale nielului ." ,ielul ? este de obicei un niel hibrid (anenbaum) deoarece multe din instrucţiunile limba'ului său sunt prezente !n cadrul instrucţiunilor instrucţiunilor nielului 7" >*istă !n plus un set de noi instrucţiuni o organizare organizare diferită a memoriei posibilitatea de e*ecuţie a mai multor programe !n paralel şi alte facilităţi" ,oile facilităţi adăugate la nielul ? sunt realizate cu a'utorul unui interpretor numit sistem de operare iar instrucţiunile identice identice cu cele ale nielului nielului 7 sunt e*ecutate e*ecutate direct direct prin microprogra microprogram" m" ,ielul ? este numit nivelul sistemului de operare oper are" Un sistem de operare reprezintă un ansamblu de programe care asigură e*ploatarea optimă a resurselor hardware şi software ale unui sistem de calcul" $istemele de operare au fost create pentru simplificarea actiităţii de programare utilizarea optimă a posibilităţilor de lucru ale echipamentelor şi reducerea interenţiei utilizatorilor !n cursul e*ecuţiei programelor" programelor" ,ielele .-? nu sunt destinate utilizării directe de către programatorii obişnuiţi ci pentru rulare rulareaa transl translato atoare arelor lor şi interp interpret retoar oarelo elorr scrise scrise de progra programa mator torii ii de sistem sistem"" ,ielu ,ielull 4 şi niele nielele le superioare sunt destinate programatorilor de aplicaţii" ,ielul 4 este nivelul limbajului de asamblare" +rogramele scrise !n limba' de asamblare sunt translatate !n limba'ul nielului 1 7 sau ? şi apoi interpretate de către maşina irtuală corespunzătoare" ,ielul D constă din limba'ele destinate programatorilor de aplicaţie fiind numit nivelul limbajelor de nivel înalt " +rogramele scrise !n aceste limba'e sunt translatate !n limba'ele nielului ? sau 4 cu a'utorul aplicaţiilor " Constă din colecţii de compilato compilatoarelo arelorr sau interpreto interpretoarelo arelor" r" ,ielul 3 reprezintă reprezintă nivelul aplicaţiilor programe destinate unor domenii specializate de e*emplu pentru administraţie economie proiectare asistată de calculator grafică etc" =iecare niel reprezintă o abstractizare distinctă cu diferite obiecte şi operaţii" $etul tipurilor de date a operaţiilor şi facilităţilor fiecărui niel reprezintă arhitectura nielului respecti" Arhitectura tratează acele aspecte care sunt izibile utilizatorului nielului respecti ca de e*emplu dimensiunea memo me mori riei ei disp dispon onib ibil ile" e" Aspec specte tele le de impl implem emen enta tare re ca de e*em e*empl pluu tehn tehnol olog ogia ia util utiliz izat atăă pent pentru ru implem implement entare areaa mem memorie orieii nu fac parte parte din arhite arhitectu ctură" ră" Arhitectura calculatorului reprezint reprezintăă studiul studiul proiectării acelor părţi ale unui sistem de calcul calcul care sunt izibile izibile pentru programatori" programatori" 2 Arhitectura Intel8086. 2.1 Noțiuni generale generale.. Modelul Modelul program. program.
; n Ass Assem emble bler r cal calcu culat latoru orull es este te ăz ăzut ut la ni nielu elull har hardwa dware# re# adr adrese ese fiz fizice ice de mem memori orie e reg regist istre re !ntreruperi etc" $unt necesare unele noţiuni pregătitoare" Unitatea de bază a informaţiei memorate !n calculator este bitul. Un bit reprezintă o cifră binară (de aici şi numele care e o prescurtare de la binar digit) deci poate aea alorile . sau 1" Eodelul hardware corespun core spunzăto zătorr este acela acela de bi bitab tabil. il. Un bistabil este deci un circuit electronic cu două stări stabile codificate . şi 1 capabil să memoreze un bit de informaţie" Un grup de bistabili formează un regitru. e e*emplu 2 bistabili formează un registru de 2 biţi" %nformaţia care se poate memora !ntr-un asemenea registru poate fi codificată !n binar de la aloarea ........ (toţi biţii egali cu .) pnă la aloarea 11111111 (toţi biţii egali cu 1)" >ste uşor de ăzut că numărul combinaţiilor care pot fi memorate este 7D3 (7 la puterea a 2-a)" ;n general un registru de n biţi octe!i e!i sau b"t b"te e (dacă n F 2) a putea memora 7 n com combinaţ binaţii ii disti distincte ncte"" Ac Aceste este com combinaţ binaţii ii se nume numesc sc oct respecti cu#inte (dacă n F 13 ?7 etc)" Eemoria unui calculator este ăzută ca o succesiune de octeţi" =iecare octet are asociată o adresă de memorie" +entru a putea adresa memoria e neoie de un registru de adrese a cărui lungime determină dimensiunea ma*imă a memoriei" acă aem un regsitru de adrese de 2 biţi atunci om putea adresa 7 2
Arhitectura Calculatoarelor
7.
4
octeţi de memorie" +rocesorul 2.23 are un registru de adrese de 7. de biţi deci poate adresa 7 octeţi de memorie mem orie (sa (sauu 1 me megao gaocte ctett de mem memori orie)" e)" Arh Arhite itectu ctura ra pro proce cesor sorulu uluii 2.2 2.23 3 din pun punctu ctull de ed edere ere al programului utilizator este ilustrată schematic !n figura 7"1" $unt figurate registrele accesibile prin program"
=igura 7"1 - 9egistrele procesorului 2.23 oate registrele sunt de 13 biţi" 8 serie de registre (AG HG CG G) sunt disponibile şi la niel de octet oate părţile mai semnificatie fiind A@ H@ C@ şi @ iar cele mai puţin semnificatie A6 H6 C6 şi 6" enumirile registrelor sunt# AG - registru acumulator HG - registru de bază general CG - registru contor G - registru de date H+ - registru de bază pentru stiă (base pointer) $+ - registru indicator de stiă (stacI pointer) $% - registru inde* sursă % - registru inde* destinaţie 9egistrul notat =6A:$ cuprinde flagurile procesorului sau bistabililor de condiţie iar registrul %+ (instruction pointer) pointer) este registrul registrul de instrucțiuni" enumirile registrelor de segment sunt# C$ - registru r egistru de segment de cod (code segment) $ - registru de segment de date (data segment) $$ - registru de segment de stiă (stacI segment) >$ - registru de segment de date suplimentar (e*tra segment) $e ob obser seră ă că den denumi umirile rile reg regist istrel relor or de seg segme ment nt cor coresp espund und zo zonel nelor or pri princi ncipal palee ale unu unuii pro progra gram m e*ecutabil" Astfel perechea de registre (C$#%+) a indica totdeauna adresa următoarei instrucţiuni care se a e*ecuta iar perechea ($$#$+) indică totdeauna adresa rfului stiei" 9egistrele $ şi >$ sunt folosite pentru a accesa accesa date" 9egistrul de flaguri (bistabili de condiţie) al procesorului 2.23 are configuraţia din =igura 7"7" 8 serie de flaguri flaguri sunt flaguri flaguri de stare# acestea acestea sunt poziţion poziţionate ate la . sau la 1 ca urmare a unor operaţii operaţii aritmetice sau logice" Celelalte flaguri controlează anumite operaţii ale procesorului" $emnificaţia flagurilor este următoarea# C= (Carr =lag bistabil de transport) - semnifică un transport sau un !mprumut dinJ!n bitul cel mai semnificati al rezultatului de e*emplu la operaţii de adunare sau de scădere"
Arhitectura Calculatoarelor
D
=igura 7"7 - 9egistrul de flaguri al procesorului 2.23 += (+arit =lag flag de paritate) - este poziţionat !n aşa fel !nct numărul de biţi egali cu 1 din octetul cel mai puţin semnificati al rezultatului !mpreună cu flagul += să fie impar& altfel formulat suma modulo 7 (G89) a tuturor biţilor din octetul c"m"p"s" şi a lui += să fie 1" A= (Au*iliarr Carr =lag bistabil de transport au*iliar) - indică un transport sau un !mprumut dinJ!n bitul 4 al rezultatului" K= (Kero =lag bistabil de zero) - este poziţionat la 1 dacă rezultatul operaţiei este ." $= ($ign =lag bistabil de semn) - este poziţionat la 1 dacă b"c"m"s" al rezultatului (bitul de semn) este 1" 8= (8erflow =lag bistabil de depăşire) - este poziţionat la 1 dacă operaţia a condus la o depăşire de domeniu a rezultatului (la operaţii cu sau fără semn)" = (rap =lag bistabil de urmărire) - dacă este poziţionat la 1 se forţează o !ntrerupere pe un niel predefinit la e*ecuţia fiecărei instrucţiuni& acest fapt este util !n programele de depanare !n care este posibilă rularea pas cu pas a unui program" %= (%nterrupt =lag bistabil de !ntreruperi) - dacă este poziţionat la 1 procesorul ia !n consideraţie !ntreruperile hardware e*terne& altfel acestea sunt ignorate" = (irection =lag bistabil de direcţie) - precizează sensul (crescător sau descrescător) de ariaţie a adreselor la operaţiile cu şiruri de octeţi sau de cuinte" =lagurile C= += A= K= $= şi 8= sunt numite flaguri de stare (aritmetice)" =lagurile = %= şi = sunt numite flaguri de control" +rocesorul 2.23 dispune de adrese pe 7. de biţi fiind capabil să adreseze 1 megaoctet de memorie 7. (7 )" $e pune problema cum se formează adresa fizică pe 7. de biţi (deci pe D cifre he*a) deoarece toate registrele procesorului sunt de 13 biţi putnd codifica adrese !n domeniul ....""".====@ (pe 4 cifre he*a) deci !ntr-un spaţiu de ma*im 34 L8" Eemoria unui sistem cu procesor 2.23 este diizată !n segmente" Un segment este o zonă continuă de memorie de lungime ma*imă de 34 L8 care !ncepe la o adresă fizică multiplu de 4" Acest fapt !nseamnă că ultima cifră he*a a adresei de !nceput a unui segment este totdeauna ." Ca atare această cifră se poate omite şi adresa de segment se poate reprezenta tot pe 13 biţi" Adresele de !nceput ale segmentelor se or găsi !ntotdeauna !ntr-unui din cele 4 registre de segment" Adresarea !n interiorul unui segment se realizează printr-un deplasament (offset) relati la !nceputul segmentului" eoarece un segment nu poate depăşi 34 L8 deplasamentul se poate memora tot pe 13 biţi" eplasamentul poate fi o constantă sau conținutul unui registru care permite adresarea memoriei" ;n concluzie pentru adresarea unui octet de memorie se folosesc două entităţi pe 13 biţi# o adresă de segment (conţinută obligatoriu !ntr-un registru de segment) şi un deplasament" eoarece ambele entităţi sunt pe 13 biţi se orbeşte de adrese (sau pointeri) de ?7 de biţi deşi adresa fizică este doar pe 7. de biţi" =ormarea adresei fizice (pe 7. de biţi) este realizată automat (prin hardware) de către o componentă a procesorului conform =igurii 7"?" Concret adresa fizică se obţine prin deplasarea adresei de segment cu 4 biţi la stnga şi prin adunarea deplasamentului" +entru specificarea unei adrese complete (de ?7 de biţi) se foloseşte notaţia (segment#offset) sau (registruMsegment#offset)" e e*emplu putem specifica o adresă prin (12A?#DH7N) sau prin ($#DH7N)"
Arhitectura Calculatoarelor
3
=igura 7"? - =ormarea adresei fizice rebuie remarcat faptul că asocierea (segment#offset) - adresă fizică nu este biuniocă deoarece la o aceeaşi adresă fizică pot să corespundă mai multe perechi (segment#offset)" e e*emplu perechile (12A?#DH7N) şi (12A7#DH?N) reprezintă aceeaşi adresă fizică" !n situaţia !n care deplasamentul este redus la minim adică !n domeniul ."""= corespondenţa deine biuniocă" 8 adresă completă de ?7 de biţi este memorată cu offsetul la adrese mici şi cu adresa de segment la adrese mari" Adresele complete se pot obţine cu directia (efine ouble-Oord)" 2.2 $efinirea egmentelor. %tructura programelor
$egmentele logice conțin cele trei componente ale unui program# cod date si stiă" Eodul in care pot fi specificate segmentele sunt# definirea simplificata& definirea completa a segmentelor" Definirea simplificată a segmentelor
efinirea simplificata ascunde multe detalii ale definirii segmentelor si utilizează aceleași conenții implementate de Eicrosoft in limba'ele de niel !nalt" +entru a scrie un program A$E !ntr-o formă simplă se folosesc directiele simplificate de definire a segmentelor" Acestea sunt# .model mall (precizează un model de memorie) .code (definire de segment de cod) .tac& n (definire de segment de stiă) .data (definire de segment de date) end etichetă (sfrşit logic al programului) ;n principiu segmentul de cod a cuprinde programul e*ecutabil (instrucţiuni) iar segmentul de date a cuprinde date definite de utilizator" $egmentul de stiă nu este folosit e*plicit" Comentariile se scriu folosind simbolul '" Ceea ce urmează după ' pnă la sfrşitul liniei curente este considerat comentariu" Utiliznd directie simplificate de segmentare e*cluznd abuzul de limba' aşa-zisul stil A$E structura este# "E8>6 small "$ACL D17 "AA definirea datelor
"C8>
Arhitectura Calculatoarelor
N
declarare i definire proceduri
start# mo a*Pdata mo dsa* program principal
end start irectia .tac& alocă o zonă and lungimea n (.tac& n) zonă fiind definită ca stiă (e*# "stacI 7..h a aloca un segment de lungime D17 octe ți)" irectia rezeră (nu si ini țializează) zona dedicată stiei" Acțiunea de inițializare este opțională" +utem scrie si "stacI D17" irectia .code precede segmentul de program" ;ncărcarea acestui segment este realizata automat de ctre 8$" %n schimb registrul d a trebui !ncărcat de ctre programator" $imbolul *data a primi adresa segmentului de date abia după momentul editării legăturilor" ate pot e*ista si in cadrul segmentului de cod" 9egistrele de segment nu sunt niciodată !ncărcate cu alori absolute" $e lasă in seama sistemului de operare sarcina amplasării in memorie a segmentelor" 8rdinea este asigurata tot de ctre componentele sistemului de operare" irectia .model defineşte modul de dispunere in memoria 9AE a segmentelor care alcătuiesc un program" $istemul 8$ admite 3 modele" $istemul 8$J7 mai admite si modelele +,AR- si /RA$" Modele de memorie pot fi tin small medium large sau huge" $emnificaţia acestor tipuri este# tin" - toate segmentele (date cod stiă) se pot genera !ntr-un spaţiu de 34L8 şi formează un singur grup de segmente" $e foloseşte la programele de tip C8E" oate salturile apelurile şi definiţiile de proceduri sunt implicit de tip ,>A9" Adresarea simbolurilor situate la distanta (=A9) spre deosebire de cele situate in apropiere (,>A9) a dura mai multe cicluri maşină deoarece este orba de !ncărcarea celor 7 componente segment si respecti deplasament" mall - datele şi stia sunt grupate !ntr-un singur segment iar codul !n alt segment" =iecare din acestea nu trebuie să depăşească 34L8" oate salturile apelurile şi definiţiile de proceduri sunt implicit de tip ,>A9& medium - datele şi stia sunt grupate !ntr-un singur segment (cel mult egal cu 34L8) dar codul poate fi !n mai multe segmente separate (nu se grupează) deci poate depăşi 34L8" $alturile şi apelurile sunt implicit tip =A9 iar definiţiile de proceduri sunt implicit de tip far" compact - codul generat ocupă cel mult 34L8 (se grupează) dar datele şi stia sunt !n segmente separate (pot depăşi 34L8)" Apelurile şi salturile sunt implicit de tip ,>A9" $e utilizează adrese complete (segment şi offset) atunci cnd se accesează date definite !n alte segmente" large - att datele ct şi codul generat pot depăşi 34L8" huge - este asemănător modelului large dar structurile de date pot depăşi 34L8& se utilizează adrese complete normalizate !n care offsetul este redus la minim (!n domeniul . - 1D) ceea ce face ca o adresă fizică să fie descrisă de o unică pereche (segment offset)" Definirea completă a segmentelor
efinirea completa a segmentelor utilizează sinta*a# numeMsegment $>:E>, QQQ numeMsegment >,$ acă !n modulul de program codul datele si stia nu depășesc fiecare !n parte 34Iocte ți atunci structura generală a unui modul de program cu ? segmente logice (de cod (program) date și stiă) este# $egment $tiă
$$>: $>:E>, O 1.. U+()
Arhitectura Calculatoarelor
2
$$>: >,$ $egment de date
$>: $>:E>, definirea datelor
$>: >,$
$egment de cod
C$>: $>:E>, A$$UE> cs#C$>:ds#$>:ss#$$>:es#$>: declarare i definire proceduri
start# mo a*$>: & iniţializarea registrelor segment se face numai in mo dsa* & modulul principal mo esa* & dses ←$>: programul principal
C$>: >,$ >, start
& sfrşitul modulului & adresa tart se include numai in modulul principal
irectia A$$UE> realizează o cone*iune simbolică (logică) !ntre definirea instrucţiunilor şi datelor !n segmente logice (cuprinse !ntre $>:E>, şi >,$) la momentul asamblării şi accesul la e*ecuţie la instrucţiuni şi date prin registrele de segment" >tichetele sunt nume simbolice de adrese ce identifică instruc țiunile" >tichetele pot fi referite !n alte instrucțiuni pentru e*ecutarea salturilor !n program" acă referirile la o etichetă sunt făcute !n cadrul segmentului !n care ea este definită atunci se spune ca ea are atributul NAR . +entru declararea etichetelor in segmentul de program (etichete adree de intruc!iuni ) se utilizează operatorul (e*# $A9#) irectia >, marchează sfrşitul logic al unui modul de program şi e obligatorie !n toate modulele" ot ce se găseşte !n fişierul sursă după această directiă este ignorat la asamblare" =orma generală este# >, /punctMdeMstart0 !n care punctMdeMstart este o etichetă sau un nume de procedură care marchează punctul !n care se a da controlul după !ncărcarea programului !n memorie" 2. /ipuri de date Bitul
Cel mai mic element de memorare a unei informații este bitul !n care se poate memora o cifra binara . sau 1" e obicei informația de prelucrat se reprezintă pe segmente contigue de bi ți denumite tetrade octeți cuinte dublu cuinte Ruadwords si tenbtes" Tetrada
etrada este o secen ță de 4 bi ți numerota ți .17? de la dreapta la stnga bitul . fiind cel mai puţin semnificati iar bitul ? cel mai semnificati# 1 ? Octetul (Byte)
. 7
1 1
1 .
8ctetul sau bte este un element de numerotare ce cuprinde o secenţa de 2 biţi" 8ctetul este unul dintre cele mai importante elemente (celule ) de memorare adresabile" Cei 2 biţi ai unui octet sunt numerotaţi cu .17"""N de la dreapta la stnga#
Arhitectura Calculatoarelor
S
. 1 1 1 . 1 . 1 N 3 D 4 ? 7 1 . 8ctetul este format din 7 tetrade tetradă inferioara (din dreapta) conţine biţii . 1 7 ? iar cea superioara (din stnga) conţine biţii 4 D 3 N ai octetului" Cuvântul(Word)
Cuntul este o secenţa de 7 octeţi respecti 13 biţi numerotaţi de la dreapta spre stnga astfel . 1 7 """"""14 1D" Hitul cel mai semnificati este bitul 1D" +rimul octet(inferior) din cunt conţine biţii . 1 7 ? 4 D 3 N iar al doilea octet(superior) biţii N 2 S 1. 11 17 1? 14 1D" 1 1 1 . . . . 1 1 . . 1 1 . . 1 1D 14 1? 17 11 1. S 2 N 3 D 4 ? 7 1 . Cuntul poate fi reprezentat printr-un registru de 13 biţi sau !n doi octeţi de memorie" %n memorie octetul inferior (biţii .-N) este memorat la adresa mai mică iar octetul superior (biţii 2-1D) la adresa cea mai mare" e e*emplu cuntul 4D3Nh se reprezintă intr-un registru de 13 biţi sub forma 4D3Nh iar !n memorie la adresa 1... sub forma 3N4D (octetul 3N la adresa 1... iar octetul 4D la adresa 1..1)" Dublu cuvânt (Double Word)
8 succesiune de 7 cuinte (4 octeţi ?7 bi ți) reprezintă un dublu cunt" Cei ?7 de biţi ai unui dublu cunt sunt numerotați de la dreapta la stnga prin . 1 7 """"""?. ?1" Hitul cel mai semnificati este bitul ?1 octetul cel mai puțin semnificati conține biții .-N iar cel mai semnificati octet (octetul 4) conține biții 7?-?1" Un dublu cunt poate fi reprezentat !ntr-un registru de ?7 biți sau pe 4 octe ți consecutii de memorie" %n memorie octetul 1-cel mai pu țin semnificati este memorat la adresa cea mai mica iar octetul 4-cel mai semnificati la adresa cea mai mare" e e*emplu dublul cunt 17 ?4 D3 N2h aflat la adresa 7... a fi memorat astfel N2 D3 ?4 17 cu octetul N2h la adresa 7... iar octetul 17h la adresa 7..?" Quadord
Tuadword (Rword) este format din 7 dublu cuinte(4 cuinte respecti 2 octeţi succesii de memorie)" Cei 34 biţi ai unui Rword sunt numerotați de la dreapta la stnga astfel# . 1 7 """"""37 3?" Hitul cel mai semnificati este bitul 3?" %n memorie octetul 1 se reprezintă la adresa cea mai mica iar octetul 2 la adresa cea mai mare" Tenbyte (!" octeț i)
8 succesiune de 1. octeți formează un tenbte (tb)" Cei 2. de biți ai elementului sunt numerotați de la dreapta la stnga cu . 1 7""""""N2 NS" %n memorie octetul cel mai pu țin semnificati (bi ții .-N) se reprezintă la adresa cea mai mica iar octetul 1. ( biții N?-2.) la adresa cea mai mare" 2.3 $efinirea datelor
;n limba'ele de asamblare 2.*23 se poate opera cu anumite tipuri de date recunoscute de procesor acesta dispunnd de directie (pseudoinstructiuni) specifice pentru definirea lor" a) 4"te (octet).
Acest tip de date ocupa 2 bi ți adică un octet(bte)" %nformaţia dintr-un octet poate fi# un întreg fără semn cuprins intre . si 77D un întreg cu semn cuprins intre B172 si 17N sau un caracter A$C%%" efinirea datelor de tip bte se face cu a'utorul directiei H( Define !te) care are sinta*a# 5#ariabila $4 lita 7 epreii
unde -ariabila opţională este un identificator asociat adresei efectie a primului octet de memorie generat corespunzător primei e*presii din lista de e*presii -lista-e*presii cuprinde e*presii constante(calculabile in momentul asamblării) si separate prin irgula" =ie directiele#
Arhitectura Calculatoarelor
1.
alfa
H 3D N7h NDo 11.11b 11h77h .ach H -3D VaV VabcV %n memorie !ncepnd de la adresa simbolica alfa se a genera secenţa de octe ți reprezentata in he*azecimal # 41 N7 ?d 1b ?? ac bf alfa . 1 7 ? 4
31
31
37
3?
b) 9:R$ (cu#;nt).
Un cunt ocupa doi octeți (13 biți) si poate fi reprezentat intr-un registru de 13 biți sau in 7 octeți consecutii de memorie" ,umerotarea bi ților in cadrul unui cunt se face de la . la 1D (bitul 1D e bitul cel mai semnificati al cuntului iar bitul . este bitul cel mai puțin semnificati) numerotarea se face de la dreapta la stnga# %nformaţia memorata intr-un cunt poate fi # -un !ntreg pe 13 biți cu semn (bitul 1D este bitul de semn) cuprins intre -71D si 71D B1 - un !ntreg pe 13 biți fără semn cuprins intre . si 713 -sau o adresa de memorie de 13 biți" 9eprezentarea celor 7 octeți ai cuntului in memorie se face astfel !nct octetul cel mai puțin semnificati este memorat la adresa cea mai mica" e e*emplu# daca aloarea 7?4Dh este memorata la adresa 7...h atunci octetul 4Dh se a afla la adresa 7...h iar octetul 7?h la adresa 7..1h" :enerarea datelor de tip cunt se poate face folosind directia de tip O( Define "ord ) a cărei sinta*a este # 5#ariabila $9
lita de epreii
unde# ariabilă opţională este un identificator asociat adresei efectie a primului cunt de memorie generat corespunzător primei e*presii din lista de e*presii" lista de e*presii este o lista de e*presii constante separate prin irgula" =ie secenţa de directie# beta O 4D3Nh .bc4ah 111.111.11b 74N3o O -N32? N32? VabV %n memorie de la adresa WbetaX se or genera octeții# 3N 4D 4a bc bb .? ?e .D fd e1 .? e1 37 31 beta 7 4 3 2 1. 17 14 Constanta octala 74N3o este generată de la adresa beta 3" c) $ouble 9:R$(dublu cunt) Un dublu cunt ocupa 7 cuinte sau 4 octe ți ( ?7 bi ți ) si poate fi reprezentat in memorie pe 4 octeți consecutii !ntr-o pereche de registre de 13 biți sau !ntr-un registru de ?7 biți (la procesoarele de ?7 biți)" %nformaţia memorata intr-un dublu cunt poate fi# un !ntreg pe ?7 biți cu sau fără semn& un număr real in simplă precizie& sau o adresă fizică de memorie de ?7 biți" :enerarea datelor de tip dublu cunt se poate face folosind directia ( Define Double "ord ) a cărei sinta*a este# 5#ariabilă $$
lita 7 epreii
unde# - ariabilă opţională este un identificator asociat adresei efectie primului dublu cunt de memorie generat corespunzător primei e*presii din lista de e*presii& - lista de e*presii este o lista de e*presii constante separate prin irgula" 9eprezentarea celor doua cuinte a unui dublu cunt de memorie se face astfel !nct cuntul cel mai puțin semnificati este memorat la adresa cea mai mica" e e*emplu dublul cunt 17?4D3N2 h aflat la adresa 7...h se memorează astfel# cuntul D3N2h se memorează la adresa 7...h iar cuntul 17?4h la adresa 7..7h adică adresa de segment este memorata la adrese mari iar deplasamentul (offsetul) la adrese mici"
Arhitectura Calculatoarelor
11
$ecenţa de directie # gama 17?4D3N2h 1 -1 1". -1". gama presupunnd că memorarea se face de la adresa 4D17#?43N a conduce la generarea următoarei secenţe de octeți# N2
D3
?4
gama
17
.1
..
..
4 ..
..
..
ff
ff
ff
2 2.
bf 3N ?4 17 gama13 7. Constanta reala -1". se asamblează la adresa gama 13"
ff 17
..
.. 2. 13
?f
4D
d) <=A$ 7 9:R$ (8 octeți)
ipul Tuad B word (Rword) ocupa 2 octeți și este reprezentat in memorie pe 34 bi ți sau !ntr-o pereche de registre de ?7 biți (!n cazul procesoarelor de ?7 biți)" %nformaţia stocata intr-un Rword poate fi# un !ntreg cu sau fără semn pe 34 biți sau un număr real in dublă precizie" :enerarea unor date de tip Rword se face cu a'utorul directiei T ( Define #uad $ %ord ) a cărei sinta*a este# 5#ariabila $<
lita de epreii
unde# - ariabila opţională este un identificator asociat adresei efectie primului Rword de memorie generat corespunzător primei e*presii din lista de e*presii& - lista de e*presii este o lista de e*presii constante separate prin irgula" 9eprezentarea in memorie a celor 2 octeți ai unui Rword se face astfel !nct octetul cel mai pu țin semnificati este memorat la adresa cea mai mica" =ie secenţa # R T 7 -7 7"D -7"D care a fi reprezentată in memorie astfel# .7
..
..
..
..
..
R ..
..
..
..
..
..
..
.. fe 2
.4 4. 74
..
ff
ff
ff
ff
ff
ff
ff 13
..
..
..
..
..
.4
c.
e) /en 4"te
lita de epreii
unde# - ariabila opţională este un identificator asociat adresei efectie primului tbte de memorie generat corespunzător primei e*presii din lista de e*presii& - lista de e*presii este o lista de e*presii constante separate prin irgula" ;n format HC !mpachetat fiecare cifra zecimală se reprezintă pe o tetradă (4 bi ți) deci 7 cifre HC pe octet" Un !ntreg HC se poate reprezenta cu ma*im 1S cifre zecimale care ar ocupa N3 bi ți" Ultima tetradă aflată la adresa cea mai mare este destinată memorării semnului" $emnul se memorează doar in bitul cel mai semnificati al numărului deci următorii ? biți ai tetradei ce conţine semnul pot fi biți ai numărului" Astfel !ntregii HC pot fi cuprinşi intre#
Arhitectura Calculatoarelor
17
-NSSSS SSSSS SSSSS SSSSS și
NSSSS SSSSS SSSSS SSSSS cifra cea mai semnificatiă fiind reprezentată doar pe ? biți" irectia# tb
$/
3>6?123>6?8@0123>6 B3>6?123>6?8@0123>6
a conduce la generarea următoarei secenţe de octe ți# D3 ?4 17 S. N2 D3 ?4 17 3N 4D D3 ?4 tb 1.
17
S.
N2
D3
?4
17
3N
cD
2.> %etul de intruc!iuni 8086
;n cadrul acestui capitol sunt prezentate !n detaliu instrucţiunile de bază ale familiei de procesoare %ntel" Acolo unde este cazul se specifică tipurile interzise de adresare" $etul de instrucţiuni este grupat !n 3 clase# intruc!iuni de tranfer care deplasează date !ntre memorie sau porturi de intrareJieşire şi registrele procesorului fără a e*ecuta nici un fel de prelucrare a datelor& intruc!iuni aritmetice Ci logice care prelucrează date !n format numeric& intruc!iuni pentru Ciruri specifice operaţiilor cu date alfanumerice& intruc!iuni pentru controlul programului care !n esenţă se reduc la salturi şl la apeluri de proceduri& intruc!iuni specifice Dntreruperilor hard Ci oft& intruc!iuni pentru controlul proceorului " Această !mpărţire este realizată după criterii funcţionale" e e*emplu instrucţiunile +U$@ şi +8+ sunt considerate ca instrucţiuni de transfer deşi ia prima edere ar putea fi considerate instrucţiuni specifice procedurilor" Acelaşi lucru despre instrucţiunile %, şi 8U care interfaţează procesorul cu lumea e*terioară# ele sunt considerate instrucţiuni de transfer deşi ar putea fi considerate instrucţiuni de intrareJieşire" %ntrările şi ieşirile sunt !nsă cazuri particulare de transfer" =iecare categorie de instrucţiuni este !nsoţită de specificarea e*plicită a indicatorilor de condiţie care sunt modificaţi !n urma e*ecuţiei" 2.>.1 Intruc!iuni pentru tranferuri de date aritmetica 4E$. Noțiuni teoretice
intruc!iuni Dn aritmetica binara și Dn
%nstrucţiunile de transfer permit copierea unui octet sau cunt de la sursa la destinaţie" estinaţia poate fi un registru locaţie de memorie sau un port de ieşire iar sursa poate fi un registru o locaţie de memorie constante sau port de intrare" Ca regula generală destinaţia și sursa nu pot fi ambele locaţii de memorie" ;n specificarea sursei și destinaţiei se or folosi notaţiile# segment# offset pentru adrese fizice& (*) paranteze rotunde pentru a desemna Wconţinutul lui *X" 8H$" %nstrucţiunea de transfer nu modifica indicatorii de condiţie (flagurile) cu e*cepţia instrucţiunilor $A@= și +8+=" #nstruc$iuni de transfer a) Intruc!iunea M:F (Mo#e $ata).
=orma generală a instrucţiunii Eo este# mov dest' sursa ( (dest) ← (sursa) realizează transferul informaţiei de la adresa efectia data de sursa la dest. >*emplu# mo a* alfa& transfera conţinutul adresei alfa !n a* mo b* offset alfa& transfera adresa efectia alfa !n b* mo al NDh& transfera NDh !n al mo c* /1..0& transfera conţinutul adresei 1.. !n c* mo /di0 b*& transfera conţinutul lui b* la adresa conţinuta !n di mo bte ptr alfa /b*0& pune conţinutul octetului de la adresa &dată de b* la adresa alfa
Arhitectura Calculatoarelor
1?
b) Intruc!iunea +E- ( change $ata )
%nterschimbă sursa cu destinaţia" =orma generală# )*+,
dest' sursa
9estricţii# registrele de segment nu pot apărea ca operanzi& cel puţin un operand trebuie sa fie un registru general" >*emple# *chg al ah *chg alfa a* *chg sir /si0 b* *chg cs# /b*0/si0 a* %nterschimbarea conţinutului a doi operanzi din memorie op1 și op7 se poate face prin secenţa de instrucţiuni# mo reg op1 *chg reg op7 mo op7 reg c) Intruc!iunea +,A/ (/ranlate)
=orma generală# G6A %nstrucţiunea nu are operanzi semnificaţia fiind# (al)← ds# ((b*)(al)) adică se transfera !n al conţinutul octetului de la adresa efectia # -bx/-al. %nstrucţiunea se folosește la conersia unor tipuri de date folosind tabele de conersie adresa acestor tabele se introduce !n bx iar !n al se introduce poziţia elementului din tabel" e e*emplu# conersia unei alori numerice cuprinsă intre . și 1D !n cifrele he*azecimale corespunzătoare se poate face prin# tabel H V.17?4D3N2SabcdefVV """""""""" lea b* tabel mo al11 *lat ;n al se a depune cifra he*azecimala b" d) Intruc!iunea IN (Input $ata)
>*ecută o citire de la portul de intrare specificat 2 sau 13 biţi după cum se specifica registrul al sau a* sau alte registre generale pentru noile procesoare" =orma generală# IN dest port unde# dest este registrul al sau a* (noile procesoare acceptă și alte registre !n locul lui al respecti a*)& port este o constantă cuprinsă intre . și 7DD sau registrul d*" e) Intruc!iunea :=/ (:utput $ata)
>*ecută o scriere la portul de iesire specificat de 2 sau 13 biţi după cum se specifică registrul al sau a*" =orma generală # :=/ dest port unde# destinaţie este registrul al sau a*& port este o constantă cuprinsă intre . și 7DD sau registrul d*" f) Intruc!iunea ,A (,oad ffecti#e Addre)
Are ca efect !ncarcărea adresei efectie (offsetul) intr-un registru general"
Arhitectura Calculatoarelor
14
=orma generală# ,A reg sursa unde# sursa - este un operand aflat !n memorie specificat printr-un mod de adresare & reg - este un registru general" >*emplu# lea b* alfa lea si alfa /b*0/si0 Acelaşi efect se obţine folosind operandul 8==$> !n %nstrucţiunea E8<# mo b* offset alfa mo si offset alfa /b*0/si0 g) Intruc!iunea ,$%G ,% (,oad $ata %egmentG ,oad tra %egment)
=orma generală# 6$ reg sursa unde# reg -este un registru general de 13 biti& sursa -este un operand de tip double B word aflat !n memorie care conţine o adresă completă de ?7 biţi" Are ca efect transferul unei adrese complete !n perechea de registre ds și reg specificat !n instrucţiune adică# (reg) ← ((sursa)) (ds) ← ((sursa) 7) >*emplu# alfa db 7D adrMalfa dd alfa " " " " " " "" " "" " " " lds si adr-alfa & !n registru si se transferă offset-ul &iar !n ds adresa de segment a celulei alfa mo bte ptr /si0 ND " " " " "" " " "" " " " " " " " i) Intruc!iunea ,AH (,oad A ith H,A-%)
%nstrucţiunea !ncarcă !n registrul A@ octetul dat de partea cea mai puţin semnificatia a registrului =6A:$ ce conţine indicatorii" %nstrucţiunea nu are operanzi" A@ ← =6A:$ . N ÷
J) Intruc!iunea %AH (%tore A into H,A-%)
%nstrucţiunea !ncarcă !n registrul =6A:$ !n octetul cel mai puţin semnificati conţinutul registrului A@ adică# =6A:$ ← (A@) . N %nstrucţiunea nu are operanzi" ÷
%&'&% ritmetica binara
Aceste instrucțiuni modifica conţinutul registrului =6A:$" a) Intruc!iunea A$$ (Add)
=orma generală# A$$ dest sursa & (dest) ← (dest) (sursa) unde# dest poate fi un registru general sau o locaţie de memorie& sursa poate fi un registru general o locaţie de memorie sau o constantă" Cei doi operanzi nu pot fi simultan locaţii de memorie" 8peraţia se poate efectua pe octet sau pe cunt" Cei doi operanzi trebuie sa aibă aceeaşi dimensiune (acelaşi tip)" ;n caz de ambiguitate se a folosi operatorul +9"
Arhitectura Calculatoarelor
1D
%ndicatorii afectaţi sunt# A= C= += $= K= și 8= >*emple# add a* D add bl D add a* b* add word ptr /b*0 ND add alfa a* add alfa D add bte ptr /si0 ND add bte ptr alfa ND b) Intruc!iunea A$E (Add ith Earr")
=orma generală# A$E dest sursa & (dest) ← (dest) (sursa) (C=) Unde dest și sursa au aceeasi semnificaţie ca la instrucţiunea A iar C= este Carr =lag" %nstrucţiunea adună conţinutul dest cu conţinutul sursei și cu bitul de transport C=" %ndicatorii afectaţi sunt aceeaşi de la instrucţiunea A" 8peraţia AC se folosește la adunări de operanzi pe mai multe cuinte operaţie !n care poate apărea transport de care trebuie sa se țină seama" 0xemplu. $ă se adune doua numere op1 op7 !n dubla precizie (pe 7 cuinte)" op1 dd 17?4D3N2h op7 dd .abcdefgh rez dd """"""""""""""""""""""""""""""""""" mo a* word ptr op1 add a* word ptr op7 mo word ptr rez a* mo a* word ptr op17 adc a* word ptr op77& se considera eentualul transport mo word ptr rez7 a* c) Intruc!iunea %=4 (%ubtrat)
=orma generală# %=4 dest sursa & (dest) ← (dest) B (sursa) unde dest și sursa au aceeaşi semnificaţie ca la instrucţiunea A" %ndicatorii afectaţi sunt cei specificaţi
la A" d) Intruc!iunea %44 (%ubtrat ith 4orro)
=orma generală# %44 dest sursa & (det) ← (dest) B (sursa) B (C=) unde semnificația dest sursa și C= sunt cele prezentate la AC" %nstrucţiunea $HH ia !n considerare
eentualul !mprumut" >*emplu# 8p1 dd 17?4D3N2h 8p7 dd .abcdefghS.h 9ez dd """"""""""""" mo a* word ptr op1 sub a* word ptr op7 mo word ptr rez a* mo a* word ptr op1 7 sbb a* word ptr op7 7 & se considera eentualul !mprumut mo word ptr rez 7 a* e) Intruc!iunea INE (Increment)
=orma generală#
Arhitectura Calculatoarelor INE dest & (dest) ← (dest) 1 unde dest este un registru general un operand din memorie de tip octet sau cunt" operandul dest este incrementat cu unu" %ndicatorii afectaţi sunt A= += $= K= 8="
13
$emnificația fiind
>*emple# inc inc inc
alfa bl word ptr /b*0 /si0
f) Intruc!iunea $E (decrement)
=orma generală#
$E dest
& (dest) ← (dest) B 1 unde dest are aceeaşi semnificaţie ca dest de la %nstrucţiunea %,C" Aceeaşi indicatori ca la %,C sunt afectaţi" g) Intruc!iunea N- (Negate)
=orma generală# N- dest
# (dest) ← . B (dest) schimbare de semn unde dest este un operand pe 2 sau 13 biţi ce poate fi un registru general sau o locaţie de memorie" %nstrucţiunea afectează indicatorii A= C= += $= 8= și K=" >*emplu# alfa db ND """""""""""" mo al alfa neg al mo alfa al & la adresa alfa aem - ND sau neg alfa h) Intruc!iunea EMK (Eompare)
=orma generală#
EMK dest sursa
& (dest) B (sursa) %nstrucţiunea realizează o operaţie de scădere intre cei doi operanzi fără a modifica operandul dest sau sursa cu poziţionarea indicatorilor de condiţie" %ndicatorii afectaţi sunt# A= C= += $= K= și 8=" Aceasta instrucţiune se folosește !mpreuna cu instrucţiunea de salt condiţionat" >*emple# cmp a* alfa/b*0/si0 cmp /si0 . i) Intruc!iunea E49 (Eon#ert 4"te to 9ord)
Are ca efect e*tinderea bitului de semn (A6 N) din A6 la !ntreg registru A@ adică# daca bitul de semn A6N F . atunci (ah) ← ..h altfel (ah) ← .ffh" %nstrucţiunea nu are operanzi și nu afectează indicatorii de condiţie" 0xemplu. $e cere să se adune un număr !ntreg cu semn reprezentat pe octet cu un număr !ntreg cu semn pe cunt" a db -ND b dw -122 c dw """"""""" mo al a cbw & conerteşte octetul la cunt add a* b mo c a* """"""""""
Arhitectura Calculatoarelor
1N
J) Intruc!iunea E9$ (Eon#ert 9ord to $ouble 9ord)
Are ca efect e*tinderea bitului de semn din AG (AG 1D) la !ntreg registrul G obţinndu-se astfel AG pe ?7 de biţi adică# daca (AG1D) F . atunci (d*) ← ....h altfel (d*) ← .ffffh" %nstrucţiunea nu are operanzi și nu afectează indicatorii de condiţie" 0xemplu. $e cere diferenţa dintre un operand reprezentat pe 7 cuinte (8) și unul reprezentat pe cunt ($8) do dd 17?4D3N2h so dw .abcdh rez dd """""""""""""""" mo a* so cwd a* & operandul so reprezentat !n G # AG mo b* a* & salează a* !n b* mo a* word ptr do sub a* b* mo word ptr rez a* mo a* word ptr do 7 sbb a* d* & ia !n considerare eentualul transport mo word ptr rez 7 &) Intruc!iunea M=, (Multipl")
=orma generală#
M=, sursa
unde sursa poate fi un registru sau o locaţie de memorie de 2 sau 13 biţi" 9ezultatul se obţine pe un număr dublu de biţi (13 sau ?7)" 8peraţia realizată este produsul intre acumulator și sursa cu depunerea rezultatului !n acumulatorul e*tins (a* pe octet sau d*#a* pe cunt)" Cei doi operanzi se consideră numere fără semn" acă sursa este pe octet aem# (AG) ← (A6) Y (sursa) iar dacă sursa este pe cunt aem# (G # AG) ← (AG )Y (sursa) Afectează indicatorii C= și 8= ceilalţi sunt nedefiniţi" >*emplu" a db 1.h b dw 1..h c dw d dd """"""""""""""""""""""""""""""""""""""""""""""""""""""""" mo al 7.h mul a & (a*)←(al)Ya mo c a*& depune rezultatul pe cunt mo a* 1.h mul b & (d*#a*) ←(a*)Yb mo word ptr d a*& depune rezultatul pe dublu cunt mo word ptr d7 d* """"""""""""""""""""""""""""""""""""""""""""""""""""""""" l) Intruc!iunea IM=, (Integer Multipl")
=orma generală# IM=, sursa
Arhitectura Calculatoarelor
12
%nstrucţiunea este similara cu EU6 deosebirea constnd !n faptul ca cei doi operanzi se consideră numere cu semn" Afectează indicatorii C= și 8= restul sunt nedefiniţi" 0xemplu1
alfa db B S? beta dw 14? rez dd """"""""""""""""""""""""""""""""""""""""""""""""""""""""" mo al alfa cbw & e*tensia de semn !n ah imul beta (d*#a*) ←(a*)Y(beta) mo word ptr rez a* mo word ptr rez7 d* m) Intructiunea $IF ($i#ide)
=orma generală# $IF sursa unde sursa este un registru sau o locaţie de memorie reprezentata pe octet sau cunt" %nstrucţiunea realizează !mpărțirea fără semn intre de!mpărţit și !mpărţitor" aca !mpărţitorul (sursa) este reprezentat pe octet atunci de!mpărţitul este AG și rezultatul este# ctul !n al iar restul !n ah adică# $IF sursa
& (al) ←(a*)J(sursa) & (ah) ←restul !mpărţirii (a*)J(sursa)
aca !mpărţitorul (sursa) este reprezentat pe cunt atunci de!mpărţitul este considerat !n G și AG ctul se obţine !n AG iar restul !n G adică $IF sursa & (a*) ←ctul !mpărţirii (d*#a*)J(sursa) & (d*) ←restul !mpărţirii (d*#a*)J(sursa) oţi indicatorii nu sunt definiţi" 8peraţia de !mpărţire poate conduce la depăsiri dacă ctul depășe ște aloarea ma*imă reprezentabilă pe 2 respecti pe 13 biţi sau daca !mpărţitorul este ." n) Intruc!iunea I$IF (Integer $i#ide)
=orma generală# I$IF sursa $emnificația instrucțiunii și a operandului sursa este aceeasi ca la %nstrucţiunea %< cu diferenţa că operanzii sunt consideraţi numere cu semn deci !mpărţirea se face cu semn" %ndicatorii sunt nedefiniţi" 8peraţia poate conduce la depăsiri" %&'& ritmetica BCD a) Intruc!iunea AAA (A%EII AdJut for Addition)
%nstrucţiunea nu are operanzi și e*ecuta corecţia acumulatorului AG după operaţii de adunare cu numere !n format HC despachetaţi" $emnificația este# daca (A6.#?) Z S sau (A=) F 1 atunci [ (A6) ← (A6) 3 (A@) ← (A@)1 (A=) ←1 (C=) ←1 (A6) ← (A6) A, .=@ \ %ndicatorii afectaţi # A= C= restul nedefiniţi" >*emplu# mo a* 4.2h mo d* 7.Sh add a* d* & (a*)F.311h
Arhitectura Calculatoarelor
AAA
1S
&
(a*)F.N.Nh
b) Intruc!iunea AA%(A%EII AdJut for %ubtraction)
%nstrucţiunea nu are operanzi și e*ecută corecţia acumulatorului AG după operaţii de scădere cu numere !n format HC despachetaţi" $emnificația este# daca (A6.#?) Z S sau (A=) F 1 atunci [ (A6) ← (A6) - 3 (A@) ← (A@) - 1 (A=) ←1 (C=) ←1 (A6) ← (A6) A, .=@ \ %ndicatorii afectaţi # A= C= restul nedefiniţi" >*emplu# mo a* 4.2h mo d* 7.Sh sub a* d* & (a*)F.1ffh AA$ & (a*)F.1.Sh c) Intruc!iunea $A% ($ecimal AdJut for %ubtraction)
%nstrucţiunea nu are operanzi și e*ecuta corecţia zecimala a acumulatorului A6 după operaţii de scădere cu numere !n format HC !mpachetat" $emnificația este# daca (A6.#?) Z S sau (A=) F 1 atunci [ (A6) ← (A6) - 3 (A=) ← 1 \ daca acum (A64#N) Z S sau C= F 1 atunci [ (A6) ← (A6) - 3.@ (C=) ← 1 \ %ndicatorii afectaţi # A= C= += $= K=" %ndicatorul 8= este nedefinit" e e*emplu !n urma secenţei# E8< A6 D7@ $UH A6 74@ & A6 F 7>@ A$ & A6 F 72@ se obţine !n A6 rezultatul corect 72@" d) Intruc!iunea AAM (A%EII AdJunct for Multipl")
%nstrucţiunea nu are operanzi și efectuează o corecţie a acumulatorului AG după o !nmulţire pe 2 biţi cu operanzi !n format HC despachetaţi" $emnificația este următoarea# (A@) ← (A6) J 1. (A6) ← (A6) E8 1. %ndicatori afectaţi# += $= K= restul nedefinite" e e*emplu mo al N mo bl S mul bl & ..?fh AAE & .3.?h e) Intruc!iunea AA$ (A%EII AdJunct for $i#iion)
%nstrucţiunea nu are operanzi și efectuează o corecţie a acumulatorului AG !naintea unei !mpărţiri a doi operanzi !n format HC despachetaţi" $emnificația este următoarea#
Arhitectura Calculatoarelor
7.
(A6) ← (A@) Y 1. (A6) (A@) ← . %ndicatori afectaţi# += $= K= restul nedefinite" e e*emplu mo a* ?.Dh mo bl 7 AA & (a*)F7?h di bl & (al)F11h (ah)F1 %&'&* +,emple programe
>*emplul 1" Acest e*emplu prezintă ctea tehnici de adresare specifice procesoarelor din familia 2.23J22# %6> e*emplulM1 "E8>6 $EA66 "$ACL 1.h "AA alfa O ? U+() "C8> begin# mo a*PAA mo dsa* mo a*1N & Adresare imediata a operandului & sursa care este o constantă & zecimala mo a*1...1b & $ursa este o constantă binara mo a*11h & $ursa este o constantă he*a mo alfaa* & Adresare directa a operandului & destinaţie mo c*a* & %nterschimbă conţinuturile mo a*b* & registrelor ax și bx mo b*c* *chg a*b* & Acelasi efect cu secenţa & anterioara mo si7 mo alfa/si0a* & Adresare relatia cu registrul & și a operandului destinaţie mo si7 mo b*8==$> alfa& Adresare imediată a operandului & sursă (adresa ariabilei alfa) & datorită operatorului 8==$> lea b*alfa & Aceasta instrucţiune are acelasi & efect cu cea anterioară cu toate & că sursa este adresată direct mo c*/b*0/si0 & Adresare bazată inde*ată a sursei mo c*alfa7 & Această instrucţiune are acelasi & efect cu cea anterioară sursa & fiind !nsă adresată direct mo c*alfa/70 & ,otaţii echialente pentru mo c*/alfa70 & %nstrucţiunea anterioară mo di4 mo /b*0/di0DDh & $e a semnala eroare deoarece nu & s-a precizat tipul destinaţiei & care este o ariabila anonima mo H]> +9 /b*0/di0DDh& $e a folosi această
Arhitectura Calculatoarelor
71
& ariantă cnd se doreşte o & adresare la niel de octet mo H]> +9 alfa4DDh& Această instrucţiune are & acelasi efect cu cea anterioară & destinaţia fiind !nsă adresată & direct" esi alfa este definit cu & O operaţia este realizata la & niel de octet mo si7 mo b*? mo alfa/b*0/si0??h& Adresare bazata inde*ata & relatia a operandului destinaţie mo alfa/b*si0??h& ,otaţii echialente pentru mo /alphab*si0??h& %nstrucţiunea anterioara mo /b*0/si0"alfa??h mo /b*0/si0alfa??h >, begin +entru e*emplificări s-a folosit %nstrucţiunea mov !n diferite ariante de adresare# registru la registru din memorie !n registru și din registru !n memorie" >*emplul 7" $e consideră un ector de trei componente fiecare componentă and dimensiunea de un cunt" $a se permute circular elementele ectorului cu o poziţie la stnga# %6> e*emplulM7 "E8>6 $EA66 "$ACL 1.h "AA ect O 1..h7..h?..h "C8> start# mo a*PAA& %niţializarea registrului mo dsa* & de segment ds mo d*ect & $alare !n dx a primei & componente a ectorului mo a*ect7& ransferă a doua mo ecta* & componentă !n prima mo a*ect4& ransferă a treia mo ect7a*& componentă !n a doua mo ect4d*& ransferă prima & componentă !n ultima >, start >*emplul ?" $a se !ncarce intr-o ariabila pointer aloarea propriei adrese sub forma de offset și segment" %6> e*emplulM? "E8>6 $EA66 "$ACL 1.h "AA arMptr & irectia are ca efect generarea sau & rezerarea unor entităţi pe ?7 de biţi "C8> begin# mo a*PAA mo dsa* mo a*8==$> arMptr mo O89 +9 arMptra* & 8peratorul 8==$> selectează componenta de & offset a adresei unei ariabile
Arhitectura Calculatoarelor
77
mo a*$>: arMptr mo O89 +9 arMptr7 a* & 8peratorul $>: selectează componenta de & segment a adresei unei ariabile >, begin >*emplul 4" $a se efectueze operatia# dp2 344 dp54sp5/sp2 stiind ca sp5 si sp2 sint intregi cu semn reprezentati in simpla precizie pe un cuint si dp2 este un intreg cu semn in dubla precizie pe doua cuinte" %6> e*emplulMN "E8>6 $EA66 "$ACL 1.h "AA dp1 17?4D3N2h sp1 O 1N.h sp7 O 12.h dp7 "C8> begin# mo a*PAA mo dsa* mo siO89 +9 dp1 & +erechea (si#di) mo diO89 +9 dp17& este folosită ca & acumulator pe ?7 de biţi deoarece (a*#d*) & se folosește pentru conersii din simpla in & dubla precizie mo a*sp1 cwd & $e conerteşte conţinutul registrului & ax considerat ca un număr !ntreg fără & semn porţiunea cea mai & semnificatia depunndu-se !n registrul dx sub sia* sbb did* mo a*sp7 cwd add sia* adc did* mo O89 +9 dp7si mo O89 +9 dp77di >, begin >*emplu6 D" $a se elaboreze un program pentru implementarea operaţiei# z 34 4 --%4 x6578!2 unde x ! z % sunt !ntregi cu semn reprezentaţi pe cte un cunt"
%6> e*emplulMS "E8>6 $EA66 "$ACL 1.h "AA w O 7.. * O 1.. O -1 z O "C8> begin# mo a*PAA mo dsa* mo a*w & $e folosește ax ca & acumulator
Arhitectura Calculatoarelor
sub mo idi cbw imul imul mo >,
7?
a** bl1. bl & !mpărțire !ntreagă a* za* begin
>*emplul 3" $a se genereze 2 numere a cte 9 cifre zecimale reprezentate !n format HC !mpachetat (adică fiecare grup de doua cifre zecimale este memorat intr-un octet) și să se scrie o secenţa de program pentru calculul sumei și diferenţei lor" %6> e*emplulM11 "E8>6 $EA66 "$ACL 1.h "AA bcd1 H ?4h12h& 12?4 !n format HC & !mpachetat bcd7 H 2Sh7Nh& 7N2S !n format HC & !mpachetat sum H 7 U+() dif H 7 U+() begin# mo a*PAA mo dsa* mo albcd1 add albcd7 daa mo sumal mo albcd11 adc albcd71 daa mo sum1al mo albcd1 sub albcd7 das mo difal mo albcd11 sbb albcd71 das mo sum1al >, begin >*emplul N" $ă se scrie un program pentru !nmulţirea unui număr !ntreg poziti de doua cifre zecimale reprezentat !n format HC ne!mpachetat cu o cifra zecimala# %6> e*emplulM1D "E8>6 $EA66 "$ACL 1.h "AA dgt H .Sh & S !n format HC & ne!mpachetat num H .?h.7h& 7? !n format HC & ne!mpachetat rez H ? U+() "C8> begin# mo a*PAA mo dsa*
Arhitectura Calculatoarelor
74
mo dldgt mo alnum mul dl & a* - ..1bh aam & a*- .7.Nh mo dhah mo rezal mo alnum1 mul dl & a* B ..17h aam & a* B .1.2h add aldh & a*- .1.Ah aaa & a* B .7..h mo rez1al mo rez7ah & .N...7 >, begin >*emplul 2" $ă se scrie un program de conersie a unui număr zecimal de doua cifre sub forma a doua caractere zecimale și sa se afişeze cele doua caractere pe ecran" +entru afişare se a utiliza funcţia 8$ cu codul 72h !n registrul dl aflndu-se codul A$C%% al caracterului care se rea afişat" 6a apelul unei funcţii 8$ !n registrul al se a transmite codul funcţiei" %6> e*emplulM13 "E8>6 $EA66 "$ACL 1.h "AA oct H 7D "C8> start# mo a*PAA mo dsa* mo aloct aam & a* B .7.Dh add ahV.V add alV.V mo d*a* *chg dldh mo ah7 & =uncţia 8$ cu codul .7h int 71h & se utilizează pentru mo dldh& afişarea unui caracter pe int 71h & ecran !n dl & transmiţndu-se codul A$C%% al & caracterului de afişat mo a*4C..h& %esire normala la int 71h & sistemul de operare >, start >*emplul S" Conersia unui !ntreg fără semn reprezentat pe 13 biţi la un sir de caractere (cifre) !n baza 1." Algoritmul de conersie daca n este numărul și sir este ariabila unde se depun cifrele numărului descris !n C este# adresa F sir& do[ rest F n^1.& n F nJ1.& Ysir F rest _.`& \while (nF.)& Ysir F .& inerseaza (adrsir)& 9estul furnizează cifra curenta căreia i se adăuga codul A$C%% al cifrei ." =uncţia inersează ordinea caracterelor din şirul generat de algoritm"
Arhitectura Calculatoarelor
7D
%mplementarea !n asamblare arata astfel# data segment n dw N3D4h sir db D dup ()VV data ends cod segment assume ds# data cs#cod start# mo a*data mo dsa* mo a*n conert# mo c*. mo b*1. diide# mo d*. di b* & ctul !n AG restul !n G (6) add d*V.V push d* inc c* cmp a*. 'nz diide reerse# pop a* mo sir/di0al add di1 dec c* cmp c*. 'nz reerse mo d* offset sir mo ahS int 71h& ?.7S7 mo a* 4c..h int 71h cod ends end start %&'&' #nstruc$iuni de salt și ciclare a)#nstruc$iunea de salt necondi$ionat -./
=orma generala #
-./ operand
unde operand este adresa de salt necondiţionat" >*ista următoarele tipuri de instrucţiuni E+# − de tip $@89 - cnd operandul specifica o adresa in domeniul -172 17N fa ță de (%+) actualizat − de tip ,>A9 - operandul specifica o adresa din acelaşi segment de cod& − de tip =A9 - operandul specifica o adresa din alt segment de cod" b)#nstruc$iuni de salt condi$ionat
Aceste instrucţiuni implementează salturile condiţionate de indicatorii de condiţie" =orma generala# -cond operand
unde# - cond este condiţia de salt și este reprezentată de una sau doua litere (ezi tabelul de mai 'os)& - operand este un offset cuprins intre -172 si 172" acă condiţia este !ndeplinită are loc saltul la adresa dată de operand dacă nu - se continuă !n secenţă"
Arhitectura Calculatoarelor
73
$e obsera ca e*ista 7 categorii de instrucţiuni pentru _mai mic` si _mai mare` cele care conţin cuintele _aboe` sau _bellow` si cele care conţin cuintele _less` sau _greater`" +rimele se folosesc in situaţia comparării a doua alori fără semn iar ultimele in situaţia comparării a doua alori cu semn" =ie secenţele de program# mo a*.===>h mo b* 7 cmp a* b* 'a alfa și
mo a* .===>h mo b* 7 cmp a* b* 'g alfa !n care se compară pe cunt .===>h si 7" $e obsera ca (AG) Z (HG) daca cele doua alori se considera reprezentate fără semn si ca (AG) (HG) daca cele doua alori se considera cu semn" (-7 este mai mic decat 7)" Ca atare in primul caz saltul la eticheta alfa are loc pe cand in cel de-al doilea caz nu are loc" =iecare mnemonică din tabel se referă la iniţialele cuintelor următoare ce indică condiţia !n limba engleză# Aboe (peste mai mare) Helow (sub mai mic) >Rual (egal) ,ot (nu) :reater (mai mare) 6ess (mai mic) Carr (transport) Kero 8erflow (depăşire de capacitate) +arit (+>en - paritate pară +8dd - paritate impară) $ign (semn)" %nstrucţiune (mnemonica) > K 6 ,:> 6>,: H ,A> C H> ,A + +> 8 $ ,> ,K ,6 :> ,6> : ,H A> ,C ,H> A ,+ +8 ,8 ,$
Condiţie de salt
%nterpretare
K= F 1 $= ≠ 8= $= ≠ 8= sau K= F 1 C= F 1 C= F 1 sau K= F 1 += F 1 8= F 1 $= F 1 K= F . $= F 8= $= F 8= si K= F . C= F . C= F . si K= F . += F . 8= F . $= F .
Kero >Rual 6ess ,ot :reater or >Rual 6ess or >Rual ,ot :reater Helow ,ot Aboe or >Rual Carr Helow or >Rual ,ot Aboe +arit +arit >en 8erflow $ign ,ot Kero ,ot >Rual ,ot 6ess :reater or >Rual ,ot 6ess or >Rual :reater ,ot Helow Aboe or >Rual ,ot Carr ,ot Helow or >Rual Aboe ,ot +arit +arit 8dd ,ot 8erflow ,ot $ign
( 0xemplu de citire1 :;0 < jump if not belo% or e=ual' salt -: d acă nu -; e mai mic - sau egal -0)" c) Intructiunea LE+ (L=MK if E+ i ero)
%nstructiunea realizeaza salt la etcheta specificata daca continutul registrului CG este zero" =orma generala# -C01 etic2eta unde eticheta este o eticheta aflata in domeniul -172 si 17N fata de (%+) d) Intructiunea ,::K
=orma generala# 3OO/ etic2eta
Are ca efect# c* ← c* -1 daca c* F . atunci
Arhitectura Calculatoarelor
7N
(%+) ← (%+) 2 adica se decrementeaza CG si daca acesta este diferit de zero se sare la eticheta specificata in caz contrar se continua cu instructiunea urmatoare" 2 este un deplasament pe 2 biti si reprezinta diferenta intre offset-ul instructiunii urmatoare instructiunii 688+ si offset-ul etichetei" >*# $uma celor n octeti de la adresa sir" "data sir db N S 1D 7D -12 ?? 11 n eRu ( - sir)Jtpe sir suma db "code begin# mo a* Pdata mo ds a* *or al al mo c* n *or si si repeta# add al sir/si0 inc si 688+ repeta mo suma al mo a* 4c..h int 71h end begin e) Intructiunea ,::KG,::K (,::K 9hile eroGual) =orma generala 3OO/1 etic2eta
sau
3OO/+ etic2eta
$emnificatia# c* ← c* - 1 daca c* F . si K= F 1 atunci (%+) ← (%+) 2 $e decrementeaza c* si daca acesta este diferit de zero si indicatorul K= este 1 (rezultatul ultimei operatii aritmetice a fost zero) se sare la eticheta specificata" f) Intructiunea ,::KNG,::KN (,oop 9hile Not eroGNot ual)
=orma generala# sau
3OO/41 etic2eta 3OO/4+ etic2eta
$emnificatia# c* ←c* - 1 daca c* ≠ . si K= F . atunci (%+) ← (%+) 2 >fectul este ca se cicleaza cat timp rezultatul ultimei operatii aritmetice este diferit de zero dar nu de mai multe ori cat este continutul initial a lui c*" %&'&5 #nstruc$iuni de deplasare (6738 638 6798 69) si de rotatie (9O38 9C38 9O98 9C9)&
Acest grup de instructiuni realizeaza operatii de deplasare si de rotatie la niel de bit" %nstructiunile au doi operanzi# primul este operandul propriu-zis iar al doilea este numarul de biti cu care se deplaseaza sau se roteste primul operand" Ambele operatii se pot face la dreapta sau la stinga" eplasarea inseamna translatarea tuturor bitilor din operand la stingaJdreapta cu completarea unei alori fi*e in dreaptaJstinga si cu pierderea bitilor din stingaJdreapta" eplasarea cu un bit la stinga este
Arhitectura Calculatoarelor
72
echialenta cu inmultirea operandului cu 7 iar deplasarea la dreapta cu impartirea operandului la 7" 9otatie inseamna translatarea tuturor bitilor din operand la stingaJdreapta cu completarea in dreaptaJstinga cu bitii care se pierd in partea opusa" Ambele operatii se fac cu modificarea bistabilului C= care poate chiar participa la operatiile de rotatie" =orma generala a instructiunilor este# O/+9T#+ operand8 contor in care operand este un registru sau o locatie de memorie de 2 sau 13 biti iar contor (numarul de biti) este
fie constanta 1 fie registrul C6 care contine numarul de biti cu care se deplaseazaJroteste operandul" +rocesoarele mai aansate (2.723 si peste) accepta un numar oarecare de biti specificat si printr-o constanta intreaga" 6a operatiile de deplasare se modifica toate flagurile conform rezultatului in afara de A= care este nedefinit" 6a operatiile de rotatie se modifica numai C= si 8=" 6a instructiunile de deplasare se considera deplasari logice si aritmetice care se pot utiliza dupa natura operanzilor" a) Intructiunea %,G%A, (%hift ,ogicGArithmetic ,eft)
Are forma generala# 673:63 operand8
contor
esi e*ista doua mnemonice ($@6 si $A6) in fapt este orba de o unica instructiune" Hitul cel mai semnificati al operandului trece in C= dupa care toti bitii se deplaseaza la stanga cu o pozitie" 8peratia se repeta de atitea ori de cat este aloarea lui contor (1 sau continutul registrului C6)" b) Intructiunea %R (%hift ,ogic Right)
Are forma generala# 679
operand8 contor
Hitul cel mai putin semnificati din operand trece in C= dupa care se deplaseaza toti bitii cu o pozitie la dreapta (impartire la 7)" =aptul ca operatia de impartire se e*ecuta fara semn inseamna ca se completeaza cu un bit . dinspre stinga" 8peratia se repeta de atitea ori cit este aloarea lui contor (1 sau continutul registrului C6)" c) Intructiunea %AR (%hift Arithmetic Right)
Are forma generala# 69
operand8
contor
Hitul de semn ramine nemodificat" Hitul cel mai putin semnificati din operand trece in C= dupa care se deplaseaza toti bitii cu o pozitie la dreapta " =aptul ca operatia de deplasare se e*ecuta cu semn inseamna ca se completeaza toti bitii eliberati cu bitul de semn" 8peratia se repeta de atitea ori cit este aloarea lui contor (1 sau continutul registrului C6)" d) Intructiunea R:, (Rotate ,eft)
Are forma generala# 9O3
operand8
contor
Hitul cel mai semnificati din operand trece atit in C= cat si in bitul cel mai putin semnificati din operand dupa ce toti bitii acestuia s-au deplasat la stanga cu o pozitie" 8peratia se repeta de atitea ori cit este aloarea lui contor (1 sau continutul registrului C6)"
Arhitectura Calculatoarelor
7S
e) Intructiunea R:R (Rotate Right)
Are forma generala# 9O9
operand8
contor
Hitul cel mai putin semnificati din operand trece atit in C= cat si in bitul cel mai semnificati din operand dupa ce toti bitii acestuia s-au deplasat la dreapta cu o pozitie" 8peratia se repeta de atitea ori cit este aloarea lui contor (1 sau continutul registrului C6)" f) Intructiunea RE, (Rotate ,eft through Earr")
Are forma generala# 9C3
operand8
contor
Hitul cel mai semnificati din operand trece in C= se deplaseaza toti bitii din operand cu o pozitie la stinga iar C= initial trece in bitul cel mai putin semnificati din operand" 8peratia se repeta de atitea oricit este aloarea lui contor (1 sau continutul registrului C6)" f) Intructiunea RER (Rotate ight through Earr")
Are forma generala# 9C9
operand8
contor
Hitul cel mai putin semnificati din operand trece in C= se deplaseaza toti bitii din operand cu o pozitie la dreapta iar C= initial trece in bitul cel mai semnificati din operand" 8peratia se repeta de atitea ori cit este aloarea lui contor (1 sau continutul registrului C6)" %&'&; #nstuctiuni logice
%nstuctiunile logice realizeaza functiile logice de baza pe octet sau pe cuant" 8peratiile se fac la niel de bit" a) Intuctiunea N:/ (Not)
=orma generala #
4OT dest
in care dest poate fi un registru sau o locatie de memorie" %nstructiunea prooaca negarea tuturor bitilor operandului adica se face complementul fata de unu" b) Intuctiunea AN$ (And)
=orma generala # 4D dest8 sursa
in care dest poate fi un registru sau o locatie de memorie iar sursa un registru sau o locatie de memorie sau o constanta" %nstructiunea depune in dest si-logic la niel de bit intre dest si sursa" %ndicatori afectati# $= K= += C=F. 8=F. A= nedefinit" c) Intuctiunea :R (:r)
=orma generala #
O9 dest8 sursa
in care dest poate fi un registru sau o locatie de memorie iar sursa un registru sau o locatie de memorie sau o constanta" %nstructiunea depune in dest sau-logic la niel de bit intre dest si sursa" %ndicatori afectati# $= K= += C=F. 8=F. A= nedefinit" d) Intuctiunea +:R (clui#e :r)
Arhitectura Calculatoarelor
?.
=orma generala # 0O9 dest8sursa
in care dest poate fi un registru sau o locatie de memorie iar sursa un registru sau o locatie de memorie sau o constanta" %nstructiunea depune in dest *or-logic la niel de bit intre dest si sursa" %ndicatori afectati# $= K= += C=F. 8=F. A= nedefinit" e) Intuctiunea /%/ (/et)
=orma generala # /%/ detura
in care dest poate fi un registru sau o locatie de memorie iar sursa un registru sau o locatie de memorie sau o constanta" %nstructiunea realizeaza and-logic la niel de bit intre dest si sursa cu pozitionarea indicatorilor" %ndicatori afectati# $= K= += C=F. 8=F. A= nedefinit" +,emple programe
[Cautare secentiala\ $a se scrie un program pentru cautarea primului blanc din sirul incepind de la adresa ir" 6a iesirea din program a a contine aloarea . daca sirul nu contine blancuri altfel a contine aloarea pozitiei din sir a primului blanc gasit" $e presupune ca sirul ir are l caractere" %6> e*emplulM1 "E8>6 $EA66 "$ACL 1.h "AA sir H VAcesta este un sirV l >TU -sir "C8> begin# mo a*PAA mo dsa* mo c*l mo si-1 mo alV V urm# inc si cmp alsir/si0 loopne urm 'ne nuMgasit mo a*l sub a*c* 'mp iesire nuMgasit# mo a*. iesire# nop >, begin %&'&< #nstruc$iuni pentru controlul procesorului
$unt instrucţiuni care controlează anumite funcţii ale procesorului ce acţionează fie prin intermediul unor indicatori de control (sau registre de control) fie prin introducerea unor stări sau semnale necesare pentru sincronizarea cu eenimentele e*terne" >*emple# CEC &complementarea alorii indicatorului C= C6C &poziţionarea pe . a indicatorului C= $C &poziţionarea pe . a indicatorului C= ,8+ &,ici o operaţie dar consumă ? perioade de ceas" C6 &poziţionarea pe . a indicatorului = $ &poziţionarea pe 1 a indicatorului = C6% &poziţionarea pe . a indicatorului %= dezactiare !ntreruperi mascabile $% &poziţionarea pe 1 a indicatorului %= @6 &8prire microprocesor pnă la 9>$> ,E% sau %, (dacă sunt actiate) OA% &aşteptare pnă cnd ine semnalul e*terior testF.
Arhitectura Calculatoarelor
?1
>$C &operaţie destinată coprocesorului 68CL &prefi* care actiează semnalul e*tern JlocI astfel că microprocesorul anunţă &că nu a răspunde la o cerere de cedare a controlului magistralelor" %&'&= #nstruc$iuni pentru lucrul cu >iruri
;n afară de tipurile de bază amintite mai sus e*istă şi posibilitatea efectuării unor operaţii de transfer sau operaţii aritmetice şi logice cu şiruri de date (cu informaţii aflate !n zone continue de memorie)" 8peraţiile pe şiruri pot fi efectuate indiidual pentru fiecare cunt din şir sau automat - cu repetare numărul de repetări al instrucţiunii fiind dictat de conţinutul unui registru contor" 8peraţiile tipic efectuate sunt# − transferul unui şir din zonă sursa !n zonă destinaţie − comparare !ntre două şiruri − căutarea unei alori !ntr-un şir − !ncărcarea acumulatorului cu elementele unui şir" − citirea unui şir de la un port de intrare − scrierea unui şir la un port de ieşire >*emple # E8<$H(O) &transfer pe 2 (13) biţi /$#$%0/>$#%0 &$%$%1& %%1 (decrementare pentru =F1) CE+$H(O) &comparare pe 2(13) biţi /$#$%0 cu />$#%0 &$%$%1& %%1 (decrementare pentru =F1) $CA$H(O) &comparare pe 2(13) biţi intre A6(AG) şi />$#%0 &%%1 (decrementare pentru =F1) 68$H(O) &se !ncarcă A6(AG) de la /$#$%0 &$%$%1 (decrementare pentru =F1) $8$H(O) &se stochează A6(AG) la />$#%0 &%%1 (decrementare pentru =F1) 9>+ &prefi* de repetare" Contorul este CG"
AA $>:E>, sir1 H 1.. U+(N) sir7 H 1.. U+() AA >,$ C8> $>:E>, A$$UE> cs#C8>ds#AAes#AA start# mo a*AA mo dsa* mo esa* mo si8==$> sir1 mo di8==$> sir7 mo c*6>,:@ sir1 cld muta# mos sir1sir7 loop muta C8> >,$ >, start
Utilizind prefi*ul rep bucla# muta# mos sir1sir7 loop muta din e*emplu se poate rescrie astfel# rep mos sir1sir7 %&'&!" +c2ivalari
>chialarile reprezinta niste alori constante de tip constanta numerica sau sir de caractere atribuite unor nume simbolice simbolurile putind fi inlocuite in locul alorilor respectie"
Arhitectura Calculatoarelor
?7
a) >chialarile numerice sint folosite pentru a atribui o constanta numerica unui simbol" Acestea pot fi# - redefinibile# aloarea unui simbol poate fi redefinita in orice moment in timpul asamblarii& $inta*a unei echialari numerice redefinite este# nume F epreie unde# epreie poate fi un intreg o e*presie constanta o constanta de tip sir de caractere sau doua constante sau o e*presie ealuata la o adresa" nume este un nume de simbol unic sau un nume de simbol definit anterior cu F" - neredefinibile# aloarea simbolului nu poate fi redefinita in timpul asamblarii" $inta*a unei echialari numerice neredefinibile este# nume >TU epreie parametrii aind semnificatiile# nume este un nume de simbol unic& $imbolurile definite prin echialari numerice pot fi folosite in constructii ulterioare ca operanzi imediati" Acestor simboluri nu li se aloca memorie" 8peratorii admisi in cazul folosiri e*presiilor constante sunt# 1"operatori aritmetici# si - unari si - binari Y si J(impartire intreaga) mod(rest)" 8peraorii binari si - se pot folosi si cind un operad este o constanta si celalalt o adresa rezultatul fiind o adresa" 8peratorul binar se poate folosi si cind ambii operanzi sint adrese cu restrictia de a fi plasati in acelasi segment rezultatul fiind o constanta" 7"operatori de deplasare# $@9 si $@6 realizeaza deplasarea logica dreapta stinga" $inta*a este e*presie $@9J$@6 cant unde cant reprezinta numarul de biti deplasati" ?"operatori logici la niel de biti# Acestia sint# ,8 A, 89 G89" 4"]+> intoarce un numar ce reprezinta tipul unei e*presii& D"$%K> intoarce numarul total de octeti alocati pentru un tablou sau (ariabila definita cu U+)& 3"@%:@ 68O selecteaza octetii cel mai semnificati respecti cel mai putin semnificati ai unei e*presii& >*emplificare echialari # AA $>:E>, O89 VAAV intgr F 14Y? &F47 intgr F intgrJ4 &1. intgr F intgr mod 4 &7 intgr F intgr4 &3 intgr F intgr-? &? 89: 1..h a H &aduna 1..h b H &aduna 1.1h mem1 >TU aD &mem1F1.Dh mem7 >TU a-D &mem7F.=Hh const >TU b-a &constF1 al F .111.111b depls F al $@6 ? &F.111.111...b depld F al $@9 ? &F.1111b offMa >TU 8==$> a highMoffMa >TU @%:@ offMa segMb >TU $>: b
Arhitectura Calculatoarelor
??
ect O 3. U+() sMect >TU $%K> ect &3. Y 7 F 17. lMect >TU 6>,:@ ect &3. tMect >TU ]+> ect &7 erif >TU tMectYlMect &F7Y3. AA >,$ >, %n general echialarile sint pastrate in fisiere separate de includere fiind incluse intr-un program prin intermediul directiei %,C6U>" %&5 6ubprograme și macroinstruț iuni
;n general definirea unui subprogram se face cu directia >?@* !n maniera următoare# nume >?@* [ ;0A? =A9\ corp ?0& [constanta\ nume 0;D> atributul ;0A? şi A? lipsesc
acă !n cazul utilizării definiţiilor complete se consideră implicit ;0A? iar !n cazul definiţiilor simplificate se folosesc alorile implicite !n funcţie de modelul de memorie utilizat" ehnicile de transfer a parametrilor combină diersele modalităţi de alegere a tipurilor de locaţii fizice pentru păstrarea parametrilor transmişi# registre locaţii de memorie fi*ate codul apelant stia procesorului tehnica blocurilor (tabelelor) de parametri cu ceea ce se transmite efecti referitor la un anumit parametru# adresa sau aloarea acestuia" #nstructiunea C33 (apel de procedura)
+oate aparea sub una din formele#
*ALL numeBproc *ALL ;0A? >&? numeBproc *ALL A? >&? numeBproc
ipul apelului poate fi dedus din tipul procedurii (primul caz) sau specificat e*plicit prin ,>A9 si =A9" ipul apelului trebuie sa coincida cu tipul procedurii si cu tipul instructiunii 9>U9, din interiorul procedurii" #nstructiunea 9+T (9+T?94 )
=orma generală#
?0& Cn
unde n este o constanta intreaga optionala" aca instructiunea 9> este de tip ,>A9 semnificatia sa este# (%+) ← $$# (($+) 1#($+)) ($+) ← ($+) 7 /($+) ← ($+) n0 adica se reface (%+) prin copierea continutului arfului stiei si incrementarea cu 7 a lui ($+)" aca in instructiunea 9> apare si constanta n atunci aceasta constanta se aduna la ($+) adica se descarca stia" >*emplu# AA $>:E>, a DDDDDh b NNNNNh s AA >,$ C8 $>:E>, """ & incarca primul numar in G#AG mo a*O89 +9 a/.0
Arhitectura Calculatoarelor
?4
mo d*O89 +9 a/70 & incarca al doilea number in %#$% mo siO89 +9 b/.0 mo diO89 +9 b/70 & incarca adresa rezultatului in HG mo b*8==$> s & apeleaza procedura call proMad """ & codul procedurii proMad +98C ,>A9 add a*si adc d*di mo /b*0a* mo /b*70d* ret proMad >,+ """ C8 >,$ : macroinrtuctiune reprezinta o secenta de cod sursa careia i se atribuie un nume simbolic continutul
acastei secente putind fi repetat ori de cite ori in cadrul unui program prin simpla referire la numele simbolic respecti" Utilizarea unei macroinstructiuni necesita parcurgerea a doi pasi# 1"efinirea macroinstructiunii care se marcheaza printr-o macrodefinitie" Aceasta cuprinde o secenta de cod intre directiele EAC98 si >,E" $inta*a este# nume EAC98 [parametrii \ cod
>,E unde# − −
nume reprezinta numele simbolic dat macroinstructiunii & parametrii reprezita parametrii formali optionali ai macroinstructiunii separati prin irgula blancuri
sau AH-uri" 6a apelul macroinstructiunii acesti parametri formali sint inlocuiti te*tual cu parametrii actuali" 7"Apelul macroinstructiunii care se realizeaza printr-un macroapel cu sinta*a# nume [argumente\ unde# nume reprezinta numele simbolic al macroinstructiunii apelate& − − argumente reprezinta lista parametrilor actuali separati prin irgula blancuri sau AH-uri" Apelul macroinstructiunii are ca efect includerea te*tuala a codului din definitia macroinstructiunii in corpul programului" >*emplu # Adunarea a ? cuinte cu depunerea rezultatului in a*"
%6> e*emplu addup EAC98 ad1ad7ad? mo a*ad1 add a*ad7 add a*ad? >,E a O 1 b O 7 c O ?
Arhitectura Calculatoarelor
?D
d O begin#mo a*PAA mo dsa* addup abc mo d*a* addup d*d*d* mo da* addup dd*c >, begin +entru definirea unor simboluri in cadrul unei macroinstructiuni care la fiecare apel al macroinstructiunii respectie or fi inlocuite cu nume unice de simboluri gesionate de asamblor se utilizeaza directia 68CA6 cu sinta*a# ,:EA, nume [nume\ """ irectia 68CA6 daca este prezenta intr-o macrodefinitie trebuie sa urmeze imediat directiei EAC98" >*emplu# 9idicarea unui numar la o putere" power EAC98 factore*ponent 68CA6 againgotzero *or d*d* mo a*e*ponent mo a*1 again# 'c*z gotzero mul b* loop again gotzero# >,E
Arhitectura Calculatoarelor
?3
. %tructura calculatoarelor &! Componentele func$ionale și clasificarea
,oţiunea de la care pornim este aceea de calculator& acesta este un sistem programabil de prelucrare a informaţiei care are două componente esenţiale inseparabile şi definitorii# hard%are şi soft%are. A. in punct de edere hard%are' calculatorul are trei componente funcţionale legate !ntr-un mod specific (=igura ?"1)" Hlocurile funcţionale sunt# 1" Enitatea centrală de prelucrare (UC+) are două funcţii esenţiale# − prelucrarea datelor& − controlul actiităţii !ntregului calculator" 8 unitate centrală de prelucrarea informaţiei and funcţiile enunţate mai sus care coordonează un sistem structurat funcţional ca !n =igura ?"1 şi care fizic se prezintă sub forma unui singur cip (circuit integrat) se numeşte microprocesor " Această accepţiune standard a noţiunii a fi folosită !n continuare pentru detalierea conceptelor care stau la baza funcţionării !ntregului calculator" 7" F0F@?GA este din punctul de edere al sistemului pe care !l definim o secenţă de locaţii pentru stocarea informaţiei" =iecare locaţie este definită prin două entităţi informaţionale# *onţinutul' reprezentat de o !nşiruie de cifre binare . sau 1 (biţi)& se a obsera că nu am − folosit noţiunea de număr binar pentru că informaţia stocată !ntr-o locaţie de memorie poate aea dierse semnificaţii" ,umărul de cifre binare conţinute !ntr-o locaţie depinde de modul !n care microprocesorul organizează informaţia !n memorie& mărimea unei locaţii a fi denumită formatul memoriei' e*primat !n număr de biţi (de regulă 2 sau 13 biţi)" =ormatul memoriei nu are nici-o legătură cu organizarea fizica a cipurilor de memorie &
E>E89] Eagistrala date
C+U
Eagistrala adrese
Egistrala control
%J8 =igura ?"1 −
reprezentnd numărul de ordine al locaţiei care permite identificarea sa !n cadrul secenţei de locaţii (e*istă o corespondenţă biuniocă !ntre fiecare locaţie de memorie şi adresa
Adresă'
Arhitectura Calculatoarelor
?N
sa)" − ;n priinţa memoriei unui calculator om folosi ctea noţiuni# − H+arta memorieiH' definită ca fiind totalitatea locaţiilor de memorie pe care le poate adresa un microprocesor" − H>aginiH şiJsau HsegmenteH sunt subdiiziuni logice ale hărţii memoriei ale căror dimensiuni fi*e sau dinamice sunt specifice modului !n care un microprocesor anume organizează memoria" $ubliniem din nou că aceste moduri de organizare nu au nici-o legătură cu structura fizică a memoriei unui calculator" ?" Dispozitivele de intrare6 ieș ire (%J8 sunt constituite din circuitele prin care se realizează legătura !ntre calculator şi lumea e*terioară" 8 unitate elementară de conersaţie cu e*teriorul poartă numele de Hport de intrare6ieşireH. ;ntre porturi şi locaţiile din memorie e*istă nişte similitudini# − +orturile sunt !n esenţă tot locaţii de memorare a informaţiei adresabile& desigur informaţia care se foloseşte uzual aici este alcătuită din operanziJrezultate (date)" − >*istă o Hhartă a porturilorH care aşa cum om arăta !n capitolele următoare poate sau nu să facă parte din harta memoriei" $ingura deosebire esenţială faţă de locaţiile de memorie este legătura fizică pe care porturile o asigură cu e*teriorul( pentru microprocesor de multe ori această legătură fizică este transparentă şi nesemnificatiă" ;n sfrşit componenţa hardware a calculatorului comportă un set de legături specifice& acestea se realizează printr-o aşa numită magistrală# un set de cone*iuni fizice !ntre blocuri prin care informaţia care circulă are o semnificaţie prestabilită" $istemele la care ne referim au o magistrală unică ce le caracterizează& din punct de edere funcţional e*istă trei componente ale acestei magistrale indiidualizate şi !n =igura ?"1# 1" Fagistrala de date' bidirecţională permite circulaţia datelor (operanziJrezultate) a instrucţiunilor şi chiar a adreselor" 7" Fagistrala de adrese' unidirecţională permite microprocesorului să localizeze informaţia !n Eemorie sau !n ispozitiele de intrareJieşire& deci pe această magistrală circulă numai adrese" ?" Fagistrala de control permite circulaţia bidirecţională a semnalelor de comandă şi control de laJla microprocesor !n calitatea sa de Unitate centrală" 4. in punct de edere oftare 8 a doua componentă definitorie a calculatorului definirea rezultă practic din considerentele anterioare# o serie de programe organizate !n moduri specifice" +rezentarea acestor noţiuni şi definirea lor ne permit ctea concluzii care să facă o primă delimitare asupra conceptului de microprocesor aşa cum este el !nţeles !n olumul de faţă# − Eicroprocesorul constituie Unitatea centrală de prelucrare a unui sistem and schema bloc funcţională din =igura ?"1" %mportant este că el concentrează şi funcţia de prelucrare şi pe cea de comandă" − oate celelalte componente ale sistemului nu au putere de decizie" Eemoria de pildă nu controlează şi nici nu e necesar să controleze semnificaţia informaţiei pe care o deţine şi modul !n care este organizată logic . − 6egătura dintre blocuri este asigurată de o magistrală unică cu trei componente funcţionale& pe magistrala de date circulă toate tipurile de informaţii" − =uncţionarea sistemului se face pe baza unor programe alcătuite din secenţe de instrucţiuni" Acestea sunt citite din memorie de către microprocesor recunoscute şi apoi e*ecutate" Calculatoarele deseori se caracterizează prin # a)
Arhitectura Calculatoarelor
?2 1.
?
1LiloHte F 7 Hte j 1. Hte − 1EegaHte F 77. Hte j 1.3 Hte − 1:igaHte F 7?. Hte j 1.S Hte − 1erraHte F 74. Hte j 1.17Hte Clasificarea calculatoarelor conform caracteristicilor menționate este neactuală" +rezentăm ctea clasificări moderne" −
%ndustria modernă produce o mare arietate de calculatoare" in această arietate om clasifica orientati calculatoarele ( >" anenbaum 8rganizarea structurată a calculatoarelor)# − circuitul integrat sau calculatoare one-off domeniul de utilizare B de e*" felicitările (cărț i poștale)& − calculatoare integrate (microcontrolere) - ceasuri maşini diferite dispozitie& − console de 'ocuri B 'ocuri la domiciliu& − calculatoare personale +C B ariantele desItop și laptop-uri& − serere - serere de rețea & − grupe (clastere) de staţii de lucru (C8O- Cluster 8f OorIstations) B multicalculatoare conectate !n rețele& − Eainframe - prelucrarea a bazelor de date !ntr-o bancă" Circuite integrate >le mai sunt numite calculatoare one-off" Aceste circuite pot fi lipite pe cărți poștale și interpretează melodii cu tematica specifică anumitor sărbători J aniersari de tipul k@app Hirthda" +robabil cea mai semnificatiă realizare !n acest domeniu a fost apariția circuitelor 9=% (9adio =reRuenc %dentification ehnologia identificării prin radiofrecenţă)" Această tehnologie presupune stocarea informaţiilor nu prin codurile de bare ci prin intermediul unor cipuri electronice integrate de e*" !n etichete ecusoane ambala'e de marfă corpurile animalelor etc" Aceste informaţii ce reprezintă un cod unic din 172 biți pot fi citite de la distanţă de cţia metri prin unde radio" imensiunea acestor circuite este mai mică de .Dmm costul fiind de cția cen ți" Circuitele nu utilizează surse de alimentare și pot stoca informația mult timp" %nformația detaliată o puteți găsi pe site-ul www"rfid"org" Eicrocontrolere 6a modul general un microcontroler este actualmente o structură electronică destinată controlului (destul de eident) unui proces sau mai general unei interacțiuni caracteristice cu mediul e*terior fără să fie necesară interenția operatorului uman" >l reprezintă un microcircuit care incorporează o unitate centrală (C+U) și o memorie !mpreună cu resurse care-i permit interacțiunea cu mediul e*terior" oate aplicațiile !n care se utilizează microcontrolere fac parte din categoria a șa ziselor sisteme !ncapsulateintegrate (Wembedded sstemsX) la care e*istența unui sistem de calcul incorporat este (aproape) transparentă pentru utilizator" +rintre multele domenii unde utilizarea lor este practic un standard industrial se pot menționa# !n industria de automobile (controlul aprinderiiJmotorului climatizare diagnoză sisteme de alarmă etc") !n a șa zisa electronică de consum (sisteme audio teleizoare camere ideo și ideocasetofoane telefonie mobilă :+$-uri etc") !n aparatura electrocasnică (mașini de spălat frigidere cuptoare cu microunde aspiratoare) !n controlul mediului și climatizare (sere locuințe hale industriale) !n industria aerospațială !n mi'loacele moderne de măsurare (aparate de măsurare senzori și traductoare inteligente) la realizarea de periferice pentru calculatoare !n medicină" Ca un e*emplu din industria de automobile unde numai la nielul anului 1SSS un HEO seria N utiliza 3D de microcontrolere iar un Eercedes din clasa $ utiliza 3? de microcontrolere& iar un aion peste 7.." +ractic este foarte greu de găsit un domeniu de aplica ții !n care să nu se utilizeze microcontrolerele" Console de 'ocuri" 8 consolă de 'ocuri este un sistem dedicat 'ocurilor ideo ce reprezintă de fapt un calculator interacti pentru distracții" eseori constă din 7 unități# un controller - cu a'utorul căruia utilizatorul poate introduce date sau interacționa cu obiectele de pe ecran și un bloc ce conține un procesor 9AE și un coprocesor pentru audio-ideo incorporate intr-o carcasă la care se conectează
Arhitectura Calculatoarelor
?S
teleizorul și controlerul" +rezentăm caracteristicile principale ale $on +la$tation4" ,oua consolă a aea un procesor AE aguar cu 2 nuclee și un :+U AE 9adeon de 124 teraflopi alături de memorie 9AE :9D de 2:H și spatiu de stocare @ pnă 34. :H" $pecificațiile +$4 includ și Hlu-ra dries cu un olum de 7D. :H alături de conectiitate U$H ?". Hluetooth 4". @E% Oi-=i și >thernet" Calculatoare personale Calculatoare personale (+C) se diizează !n 7 grupe# ariantele desItop și portabile (laptop notebooI palmtop (+A)" ;n structura lor de regulă intră# microprocesoare module de memorie de gigabtes hard discuri de terabtes C-98EJ< dries modemuri plăci ideo audio de rețea monitoare ș"a" sisteme de operare comple*e instalate" $erere Un serer este o un calculator care operează continuu !n rețeaua sa și a șteaptă solicitări din partea altor calculatoare din rețea pentru a asigura accesul la toată paleta de forme de conectare și sericii" Eulte componente de hardware sunt identice cu cele ce le găsim !ntr-un calculator personal" otu și sererele rulează sisteme de operare și programe specializate care sunt diferite fa ță de cele folosite pe calculatoare personale" $ererele deseresc resurse hardware care sunt parta'ate și pot uneori fi comandate de către calculatoarele-client cum ar fi imprimante (atunci sererul se numește print server ) sau sisteme de fișiere (atunci el se numește file server )" Această parta'are permite un acces și o securitate mai bune" Cu toate că sererele pot fi construite din comoditate din componente obi șnuite de calculatoare este necesar ca pentru operații rapide și de mare amploare sererele să folosească configura ții hardware optimizate pentru aceste cerințe" Cu toate că sererele oferă mult spa țiu pe disc pentru mărirea siguran ței !n funcționare sunt folosite hard-discuri de capacitate redusă numeroase interconectate !n mod special" =olosirea mai multor microprocesoare duce la o mai mare fiabilitate !n comparație cu un singur microprocesor" e asemenea se folosesc Eninterruptible >o%er Iupplies (U+$-uri) pentru a fi siguri de continuitatea de alimentare cu energie electrică astfel ca penele din re țeaua publică de curent să nu prooace stricăciuni ireparabile" iferența ma'oră !ntre computerele personale și serere nu este partea hardware ci partea de software" +e serere rulează sisteme de operare care sunt special proiectate pentru acestea" e asemenea ele rulează aplicații special proiectate pentru procesele dorite" ;n lumea sererelor cele mai populare sistem de operare sunt =reeH$ $un $olaris și :,UJ6inu* B care deriă și sunt asemănătoare cu sistemul de operare U,%G" U,%G a fost o alegere logică și eficientă ca sistem de operare pentru serere" :rupe (clastere) de staţii de lucru (C8O- Cluster 8f OorIstations) Clasterele constau din zeci sute mii de +C-uri sau statii de lucru conectate in retea prin placi de retea de larg consum" $istemele C8O sunt gestionate de soft specializat ce permite să direcționeze resursele lor pentru a rezola diferite probleme inginerești și științifice" acă frecența accesărilor la paginile web-site-ului se estimează la mii zeci de mii pe secundă este conenabil ca sererele să fie organizate !n clastere de sta ții de lucru" Calculatoarele Eainframe Calculatoarele mainframe sunt calculatoare ce pot e*ploata olume imense de date şi pot suporta lucrul a mii de utilizatori simultan" Un calculator mainframe se distinge mai ales prin capacitatea de stocare şi memoria internă" >l poate rula ani !ntregi fără !ntrerupere Unele calculatoare pot rula mai multe sisteme de operare simultan opernd astfel ca o mulţime de Wmaşini irtualeX" +reţul unui astfel de calculator este de ordinul sutelor de mii de dolari" >ste solicitat de companiile care ehiculează şi prelucrează un olum foarte mare de informaţie" +rincipala diferenţă !ntre supercalculatoare şi mainframe este că primele se folosesc pentru operaţii ce necesită calcule intense !n timp ce mainframe efectuează operaţii de comple*itate redusă asupra unor olume mari de date" $upercalculatorul posedă resurse hardware şi software deosebite" $e utilizează !n industria de apărare !n cercetarea ştiinţifică !n ctea uniersităţi !n industria aeronautică şi spaţială" epartamentul >nergiei $UA deţine un supercomputer din lume &he ?oadrunner " Acesta are o putere de calcul de 1 petaflop (1... trilioane operaţii pe secundă)" 8cupă o suprafaţă de 11.. m7 şi a fost construit din N.. de procesoare AE 8pteron" ;n anul 7.1? compania Cra a realiza pentru epartamentul >nergiei al $UA un supercomputer cu o putere de calcul de 7. peta operaţii de secundă (7. petaflops) numit itan" Astfel !n scurt timp (anul
Arhitectura Calculatoarelor
7.
4.
7.7D) se a realiza un supercomputer cu o putere de calcul de 1. e*aflops (1. flops) care a fi capabil să simuleze actiitatea creierului uman" ;n studiul arhitecturilor de calcul este foarte utilă e*istenţa unei metode de comparare a diferitelor arhitecturi fără a fi necesară compararea specificaţiilor detaliate ale fiecărei arhitecturi" Astfel că arhitecturile de calcul sunt clasificate pe baza unui set mai restrns de caracteristici" Elaificarea lui Hl"nn
Cea mai cunoscută clasificare a arhitecturilor de calcul este cea propusă de =lnn (profesor la $tanford Uniersit) !n 1S33" Această clasificare nu e*aminează structura e*plicită a sistemelor ci urmăreşte flu*ul de date şi de instrucţiuni prin acestea" +rin flu* de instrucţiuni se !nţelege secenţa de instrucţiuni e*ecutată de o maşină sau unitate de e*ecuţie& iar prin flu* de date se !nţelege secenţa de date apelate de flu*ul de instrucţiuni" upă =lnn arhitecturile de calcul se !mpart !n următoarele patru categorii# − cu un flu* de instrucţiuni şi un flu* de date ($%$)& − cu un flu* de instrucţiuni şi mai multe flu*uri de date ($%E)& − cu mai multe flu*uri de instrucţiuni şi un flu* de date (E%$)& − cu mai multe flu*uri de instrucţiuni şi mai multe flu*uri de date (E%E)" %I%$ ($ingle %nstruction $ingle ata)#
in această categorie fac parte calculatoarele conenţionale care e*ecută un singur flu* de instrucţiuni asupra unui singur flu* de date" Aceste siteme de calcul se mai numesc şi calculatoare on ,eumann"
=igura ?"7 Arhitectura on ,eumann %nstrucţiunile sunt e*ecutate secenţial !nsă pot e*ista suprapuneri !ntre acestea dacă este implementat conceptul de bandă de asamblare (pipeline) B ma'oritatea sistemelor $%$ actuale utilizează conceptul de bandă de asamblare" Calculatoarele $%$ pot aea mai multe unităţi funcţionale (e*# coprocesor matematic procesor grafic procesor de intrareJieşire etc") !nsă acestea sunt ăzute ca o singură unitate de e*ecuţie"
=igura ?"? Arhitectura $%$ UC B unitate de comandă& U> B unitate de e*ecuţie element de procesare procesor& EE B modul de memorie& $% B flu* (şir) de instrucţiuni& $ B flu* (şir) de date" >*emple de calculatoare $%$# CC 33.. CC N3.. Amdhal 4N.J3 Cra-1" %IM$ ($ingle %nstruction Eultiple ata)
Această categorie de arhitecturi cuprinde sistemele de calcul compuse din mai multe unităţi de e*ecuţie identice aflate sub comanda unei singure unităţi de control" Unitatea de control transmite acelaşi flu* de instrucţiuni simultan tuturor unităţilor de e*ecuţie" oate unităţile de e*ecuţie e*ecută simultan aceeaşi instrucţiune asupra datelor din memoria proprie (e*istă sisteme ce au şi o memorie parta'ată pentru comunicaţii)" Unitatea de control trebuie să permită tuturor elementelor de procesare să-şi termine instrucţiunea curentă !nainte de iniţierea unei noi instrucţiuni astfel că e*ecuţia instrucţiunilor trebuie
Arhitectura Calculatoarelor
41
sincronizată !ntre toate unităţile de e*ecuţie" Ca şi ordin de mărime numărul procesoarelor implicate !ntr-o structură $%E este de ctea mii" Aplicabilitate# calculatoarele $%E sunt folosite !n cazul aplicaţiilor paralele ce necesită un control fin asupra datelor" >*emplu# reţele neuronale" >*emple de implementări $%E# %66%AC-%< +>+> H$+ $A9A, E++ A+ Connection Eachine CE-1 CE-7 (de la hinIing Eachines Corporation) Eass+ar E+-1 E+-7"
=igura ?"4 Arhitectura $%E opologia reţelei de interconectare nu apare !n clasificarea lui =lnn" MI%$ (Eultiple %nstruction $ingle ata) Arhitecturile E%$ au mai multe elemente de procesare fiecare e*ecutnd un set diferit de instrucţiuni asupra unui singur flu* de date" Acest lucru este realizabil !n două moduri# − acelaşi element din flu*ul de date este prelucrat de toate procesoarele fiecare e*ecutnd propriile operaţii asupra respectiei date& − un element din flu*ul de date este prelucrat de primul procesor rezultatul obţinut este pasat mai departe celui de-al doilea procesor ş"a"m"d" formndu-se astfel o macro-bandă de asamblare" $ingurul e*emplu de implementare pentru acest tip de arhitecturi este C"mmp (calculator multimicroprocesor) construit la Carnegie-Eellon Uniersit" Acest calculator este reconfigurabil şi poate opera !n modurile $%E E%$ şi E%E"
=igura ?"D Arhitectura E%$ MIM$ (Eultiple %nstruction Eultiple ata)
Ea'oritatea sistemelor multiprocesor se pot !ncadra !n această categorie" Un sistem de calcul E%E are mai multe elemente de procesare interconectate fiecare and propria unitate de control" +rocesoarele lucrează fiecare asupra propriilor date e*ecutnd asupra lor propriile instrucţiuni" $istemele E%E pot aea şi memorie parta'ată" 8peraţiile e*ecutate de fiecare procesor sunt independente intre ele deci
Arhitectura Calculatoarelor
47
modul lor de operare este asincron" Acest tip de arhitecturi sunt aplicabile !n cazul aplicaţiilor paralele (calcul paralel)" >*emple de implementare# C"mmp Hurroughs 27D Cra-7 $1 Cra G-E+ $:%JCra +ower Challenge Arra $:%JCra 8rigin-7... @+JCone* $++-7... +luribus %HE ?N.J132 E+ Uniac 11..J2. andemJ13 %HE ?.21J?.24 HH, Hutterfl EeiIo Computing $urface (C$-1) =+$ J4.... i+$C"
=igura ?"3 Arhitectura E%E 8 ariantă !ntre $%E şi E%E sunt arhitecturile %KM$ ($ingle +rogram Eultiple ata) !n care unităţile de procesare e*ecută acelaşi segment de cod asupra unor date diferite independent unul de celălalt (!n mod asincron)" $%E $+E E%E /re@entare generală a microprocesoarelor #ntel
+rimele microprocesoare sunt produse la firma %ntel !n 1SN1# ele se numeau 4..4 şi 2..2 pe patru şi respecti 2 biţi" +rimul microprocesor considerat standard care impune chiar o definire a termenului şi a unor concepte legate de această modalitate de prelucrare a informaţiei este !nsă 2.2. produs tot de firma %ntel" ot firma %ntel este cea care lansează primul microprocesor care lucrează pe 13 biţi - %ntel 2.23 (1SN2)" ;n 1SNS %ntel face aparent un pas !napoi# lansează 2.22 care este identic !n interior cu 2.23 dar !n e*terior lucrează pe 2 biţi" $trategia firmei este limpede# mulţi fabricanţi nu sunt pregătiţi să schimbe toate celelalte componente ale sistemelor de prelucrare pe 13biţi aşa că or prefera !ncă microprocesoarele compatibile cu magistrala de 2 biţi" ;n tabelul de mai 'os sunt prezentate generaţiile şi carateristicile de bază ale microprocesoarelor %ntel" abelul 1 - :eneraţiile şi carateristicile de bază ale microprocesoarelor %ntel =recenţa 6ăţimea Cache =recenţa de tact a magistralei %nterior de tact ipJgeneraţie Anul magistralei ateJAdrese (61) (interioară) de memorie Hiţi IH (Ehz) (Ehz) 2.22J=irst 1SNS 2J7. ,one 4"NN-2 4"NN-2 2.23J=irst 1SN2 13J7. ,one 4"NN-2 4"NN-2 2.723J$econd 1S27 13J74 ,one 3-7. 3-7. 2.?23GJhird 1S2D ?7J?7 ,one 13-?? 13-?? 2.?23$GJhird 1S22 13J?7 ,one 13-?? 13-?? 2.423GJ=ourth 1S2S ?7J?7 2 7D-D. 7D-D. 2.423$GJ=ourth 1S2S ?7J?7 2 7D-D. 7D-D. 2.423G7J=ourth 1SS7 ?7J?7 2 7D-4. D.-2. 2.423G4J=ourth 1SS4 ?7J?7 22 7D-4. ND-17. +entiumJ=ifth 1SS? 34J?7 22 3.-33 3.-7.. +entium 1SSN 34J?7 1313 33 133-7?? EEGJ=ifth
Arhitectura Calculatoarelor
4?
+entium +roJ$i*th 1SSD 34J?3 22 33 1D.-7.. +entium %%J$i*th 1SSN 34J?3 1313 33 7??-?.. +entium 1SSS 34J?3 ?7L?7L 1.. 3D.-14.. %%%J$i*th +entium4J 7... 34J?3 34L34L 1.. 1?..-?2.. $eenth Consacrarea definitiă a produselor %ntel o face firma %HE care !n 1S21 anunţă primele calculatoare personale %HE +C-G care folosesc 2.22J2.23" Aceste procesoare au introdus conceptul de segmentare a memoriei# memoria este !mpărţită !n zone numite segmente de ma*im 34 LH iar cele patru registre de segment pot păstra adresele de bază ale segmentelor actie" Aceste procesoare pot funcţiona numai !n modul real care este un mod uniproces !n care se e*ecută un singur proces (program sau tasI) la un moment dat" ;n 1S27 %ntel lansează microprocesorul 2.723 (ignorăm că !ntre timp multe firme ca ,ational =airchild 9CA $ignetics etc" produc componente similare)& acesta deşi tot pe 13 biţi introduce o serie de noi concepte fundamentale care tind să schimbe chiar noţiunea de microprocesor" +rocesorul 2.723 poate funcţiona !n modul real al procesoarelor precedente dar dispune şi de un mod de adresare irtual sau mod protejat" Acest mod utilizează conţinutul registrelor de segment ca selectori sau pointeri !n tabele ale descriptorilor de segment" +rocesorul dispune de o unitate de gestiune a memoriei irtuale" ;n modul prote'at procesorul poate funcţiona !n regim multi-proces -multitasJing) !n care pot fi e*ecutate mai multe procese !n mod concurent" ;n acest mod se realizează o comutare prin hardware !ntre procesele care se e*ecută concurent" =irma %HE lansează şi ea o nouă generaţie de calculatoare personale# +C-A (Adanced echnolog) care foloseşte %ntel 2.723" +rocesorul 2.?23 a introdus !n cadrul arhitecturii Gntel registre de ?7 de biţi utilizate att pentru păstrarea datelor ct şi pentru adresare" +entru compatibilitate cu procesoarele anterioare aceste registre s-au obţinut prin e*tinderea registrelor de 13 biţi fiind posibilă utilizarea !n continuare a echilor registre acestea constituind 'umătatea de ordin inferior a registrelor de ?7 de biţi" A fost introdus un nou mod de funcţionare numit mod virtual K7K3" %nstrucţiunile originale au fost e*tinse cu noi forme care utilizează operanzi şi adrese de ?7 de biţi şi au fost introduse instrucţiuni complet noi ca de e*emplu instrucţiuni pentru operaţii la niel de bit" +rocesorul 2.?23 a introdus de asemenea mecanismul de paginare ca metodă de gestiune a memoriei irtuale" >l a fost primul din cadrul familiei 2.*23 care a utilizat o formă de prelucrare paralelă şi o memorie !ncorporată cache cu informaţii despre pnă la ?7 de pagini cel mai recent accesate" +rocesorul 2.423 a fost primul din familia 2.*23 la care unitatea de calcul !n irgulăl mobilă a fost integrată !n acelaşi circuit cu unitatea centrală" +rocesorului i s-a adăugat o memorie cache de niel 1 (61 B Level 1) de 2 LH" Au fost adăugaţi de asemenea noi pini şi noi instrucţiuni care permit realizarea unor sisteme mai comple*e# sisteme multiprocesor şi sisteme care conţin o memorie cache de niel 7 (67 B Level 7)" Au fost dezoltate ersiuni ale procesorului 2.423 !n care au fost incluse facilităţi pentru reducerea consumului de putere ca şi alte facilităţi de gestiune a sistemului" Una din aceste facilităţi este noul mod de gestiune a sistemului -I!stem Fanagement Fode B $EE) pentru care s-a preăzut un pin dedicat de !ntrerupere" Acest mod permite operaţii comple*e de gestiune a sistemului (ca de e*emplu gestiunea puterii consumate de diferitele subsisteme ale calculatorului) !ntr-un mod transparent pentru sistemul de operare şi pentru programele de aplicaţii" =acilităţile numite Itop *locJM şi Auto +alt >o%er do%nM permit funcţionarea unităţii centrale la o frecenţă redusă a tactului pentru reducerea puterii consumate sau chiar oprirea funcţionării (cu memorarea stării)" ;n 1SS? se lansează primul microprocesor al generaţiei a cincea numit din acest moti +entium" +rocesorul >entium a adăugat o nouă linie de e*ecuţie de tip pipeline a instrucţiunilor pentru a se obţine performanţe superscalare" Cele două linii de e*ecuţie a instrucţiunilor numite U şi < permit e*ecuţia a două instrucţiuni pe durata unei perioade de tact" Capacitatea memoriei cache 61 a fost de asemenea dublat fiind alocaţi 2 LH pentru instrucţiuni şi 2 LH pentru date" Eemoria cache pentru date utilizează protocolul E>$% care permite gestiunea memoriei cache att prin metoda mai eficientă %rite4bacJ X ct şi prin metoda %rite4throughM utilizată de procesorul 2.423" +rocesorul >entium utilizează predicţia salturilor pentru a creşte performanţele construcţiilor care utilizează bucle de program" 9egistrele generale sunt tot de ?7 de biţi dar s-au adăugat magistrale interne de date de 172 şi 7D3 de biţi pentru a creşte iteza transferurilor interne iar magistrala e*ternă de date a fost e*tinsă la 34 de biţi" +rocesorului i s-a adăugat un controler aansat de !ntreruperi -Advanced >rogrammable Gnterrupt *ontroller B A+%C)
Arhitectura Calculatoarelor
44
pentru a permite realizarea sistemelor cu mai multe procesoare >entium fiind adăugate de asemenea noi pini şi un mod special de procesare dual pentru sistemele cu două procesoare" +rocesorul >entium >ro este primul din cadrul familiei de procesoare +3" Acest procesor are o arhitectură superscalară !mbunătăţită care permite e*ecuţia a trei instrucţiuni !ntr-o perioadă de tact" +rocesorul >entium >r o ca şi următoarele procesoare din familia +3 se caracterizează prin e*ecuţia dinamică a instrucţiunilor care constă din analiza flu*ului de date e*ecuţia instrucţiunilor !ntr-o altă ordine dect cea secenţială o predicţie !mbunătăţită a salturilor şi e*ecuţia speculatiă" +e lngă cele două memorii cache 61 de cte 2 LH prezente şi la procesorul >entium procesorul >entium >ro dispune şi de o memorie cache 67 de 7D3 LH aflat !n acelaşi circuit cu unitatea centrală conectat cu aceasta printr-o magistrală dedicată de 34 de biţi" +rocesorul >entium >ro are o magistrală de adrese e*tinsă la ?3 de biţi astfel !nct spaţiul adreselor fizice este de pnă la 34 :H" +rocesorul >entium %% se bazează pe arhitectura >entium >r o la care s-au adăugat e*tensiile EEG -Fultimedia 0xtensions)" Eemoria cache 67 a fost mutată !n afara capsulei procesorului" Att memoria cache 61 pentru date ct şi memoria cache 61 pentru instrucţiuni au fost e*tinse la 13 LH fiecare" imensiunea memoriei cache 67 poate fi de 7D3 LH D17 LH 1 EH sau 7 EH" +rocesorul >entium %% utilizează diferite stări cu consum redus de putere ca de e*emplu Auto+AL& X IleepM şi Deep IleepX pentru reducerea puterii consumate !n perioadele de inactiitate" +entium %%% este ultimul din cadrul familiei +3 şi se bazează pe arhitecturile procesoarelor >entium >ro şi >entium %%" Au fost adăugate N. de noi instrucţiuni la setul de instrucţiuni e*istent" Acestea sunt destinate att unităţilor funcţionale e*istente la procesoarele precedente ct şi noii unităţi de calcul !n irgulă mobilă de tip $%E -Iingle Gnstruction' Fultiple Dat a)" +rimul din familia +N numit +entium 4 a primit şi o nouă arhitectură cu o iteză de procesare mai performantă" ;n ersiunea microprocesorului cu frecenţa de tact de ?.3 :hz a fost realizată o nouă tehnologie B hperthreading" Această tehnologie permite ca procesele (programele) să fie diizate !n două flu*uri de program pentru a fi procesate !n paralel de microprocesor ce măreşte iteza de procesare" +entru creşterea itezei de prelucrare a datelor audio şi ideo a fost introdus un set suplimentar din $$> instrucţiuni" ;n noembrie 7..4 firma %ntel a renunţat la producerea !n serie a microprocesorului +entium 4 cu frecenţa de 4 :hz din cauza dificultăţilor apărute la răcirea lui" Actualmente firma %ntel !ncapsulează două şi mai multe nuclee de microprocesor cu frecenţe reduse !n circuitul unui microprocesor ce e*clud dificultăţile cu răcirea lor" >oluţia dispozitielor pe care am descris-o pnă !n acest moment se referă e*clusi la microprocesoarele ale căror caracteristici esenţiale şi arii de aplicaţii posibile s-au dezoltat de la tipurile de bază lansate !n anii N." ,oi om denumi aceste dispozitie microprocesoare şi le om defini !n acest capitol& om detalia !n eoluţia lor conceptele esenţiale care stau la baza funcţionării lor !n capitole următoare" >*istă !nsă şi alte direcţii de dezoltare a dispozitielor de prelucrare a informaţiei& un e*emplu sunt aşa numitele procesoare cu set redus de instrucţiuni (9%$C) a!nd ca reprezentanţi procesoarele $+A9C (produse de diferite firme) i23. (%ntel) E22... (Eotorola) etc" e asemenea e*istă procesoare specializate pentru anumite tipuri de prelucrări specifice cum sunt procesoarele digitale de semnal ($+) şi altele" ;n olumul de faţă ne om ocupa de ceea ce este cunoscut sub numele de microproceor" Eotiul pentru care am insistat pe reprezentanţii familiei %ntel este acela că după părerea noastră această firmă oferă reperele importante ale implementării conceptelor de bază care caracterizează aceste dispozitie" &% .icroprocesoarele C#6C:9#6C
Eulte microprocesoare au seturi de instrucţiuni ce includ mai mult de 1.. B 7.. instrucţiuni" >le folosesc o arietate de tipuri de date şi un mare număr de moduri de adresare" endinţa aceasta de a mări numărul de instrucţiuni a fost influenţată de mai mulţi factori dintre care amintim# − perfecţionarea unor modele de procesoare e*istente anterior pentru a pune la dispoziţia utilizatorilor (programelor utilizator) ct mai multe funcţii& − adăugarea de instrucţiuni care să faciliteze translatarea din limba'ele de niel !nalt !n programe cod e*ecutabil (limba' maşină)& Așa arhitecturi de microprocesoare au fost numite arhitecturi C%$C - Comple* %nstruction $et Computer - calculator cu set comple* de instrucţiuni" Ctea din caracteristici sunt# − Eulte instrucţiuni care prelucrează operanzi din memorie&
Arhitectura Calculatoarelor − =ormat de lungime variabilă pentru instrucţiuni&
4D
Unitate de control microprogramată (micro-codată) aanta'oasa din punctul de edere al fle*ibilităţii implementării dar lentă& − $et comple* (e*tins) de instrucţiuni şi o mare arietate de moduri de adresare& − Un număr relati mic de registre !n interiorul UC+" − Utilizarea compilatoarelor optimizatoare - pentru a optimiza performanţele codului obiect& %deea simplificării setului de instrucţiuni !n scopul măririi performanţelor procesorului proine din proiectele realizate la uniersităţile americane din HerIele (9%$C % 9%$C %% şi $8A9) şi $tanford (proiectul E%+$)" +roiectele 9%$C (9educed %nstruction $et Computer - Calculator cu set redus de instrucţiuni) au urmărit ca instrucţiunile procesorului să fie de aceeaşi lungime instrucţiunile să se e*ecute !ntr-o singură perioadă de ceas (cu a'utorul tehnicii de tip pipeline)" 6a 9%$C se urmăreşte de asemenea ca accesările la memorie (consumatoare de timp) să se efectueze doar pentru operaţiile de !ncărcare şi stocare (arhitectura fiind numită !n consecinţă# loadJstore) iar celelalte operaţii să se efectueze cu operanzi stocaţi !n registrele interne ale UC+" Unele din proiectele de arhitecturi 9%$C folosesc un set mare de ferestre de registre pentru a accelera operaţiile de apel al subrutinelor" 9ezumnd putem enumera ctea din elementele caracteristice pentru maşinile 9%$C# − Acces la memorie limitat doar prin instrucţiuni de încărcare -load şi stocare -store& − =ormat de lungime fixă pentru instrucţiuni deci uşor de decodificat& caracteristică care contribuie la simplificarea structurii unităţii de control& − structură simplă a unităţii de control deci cu iteză mare de funcţionare& − 9elati puţine tipuri de instrucţiuni (tipic sub 1.. de instrucţiuni) şi puţine moduri de adresare (din nou această caracteristică contribuie şi la simplificarea structurii unităţii de control)& − ehnica de tip pipeline este utilizată şi la arhitecturile C%$C dar la 9%$C tehnica este mai eficientă şi mai uşor de implementat datorită lungimii constante a instrucţiunilor& − Un număr relati mare de registre !n interiorul UC+& Asa cum s-a arătat mai sus arhitecturile 9%$C restricţionează numărul de instrucţiuni care accesează direct memoria principală" Cele mai multe instrucţiuni ale 9%$C presupun doar operaţii !ntre registrele interne UC+" +entru că instrucţiunile comple*e nu e*istă !n setul de instrucţiuni dacă este neoie de ele acestea se implementează prin rutine cu a'utorul instrucţiunilor e*istente" ;n final !ntr-un program e*ecutabil or fi mai multe instrucţiuni dect la C%$C dar e*ecuţia pe ansamblu a fi mai rapidă" =ormal toate microprocesoarele *23 erau microprocesoare de tip C%$C dar microprocesoarele noi !ncepnd de la %ntel 423G sunt microprocesoare C%$C cu un nucleu 9%$C" %nstrucțiunile microprocesoarelor *23 de tip C%$C !nainte de e*ecutarea lor sunt transformate !ntr-un set simplu de instrucțiuni interne de tip 9%$C"" Eulte microprocesoare moderne !ncorporează arhitecturi 9%$C ca de e*emplu A9E >C Alpha $+A9C A<9 E%+$ +8O>9 +ower+C" −
& Banda de asamblare (pipeline) %ntroducem noțiunea de arhitectura suprascalară. +entru a e*plica această noțiune urmărim utilizarea
microinstrucţiunilor e*ecutate !n paralel (tehnica pipeline) folosite de microprocesoarele moderne" ;ncepnd cu microprocesorul i423 (fig" ?"N ) %ntel a introdus o bandă de asamblare numită tehnica XpipelineX care constă din D segmente# Unitate de e*ecuţie !n irgulă mobilă
Unitate pentru segmentare
Unitate pentru paginare Unitate de interfaţă cu magistrala Eemoria cache
Unitate de e*ecuţie
Unitate pentru decodificare instrucţiuni
Unitate pentru WprefetchX
Arhitectura Calculatoarelor
43
=igura ?"N − Ciclul maşină fetchX(Citirea instrucţiunii din cache sau din memoria internă)& − ecodificarea instrucţiunii B decodifică !n microinstrucțiuni& − :enerarea adresei pentru localizarea operanzilor !n memorie& − +relucrarea instrucţiunii !n UA6& − ;nscrierea rezultatului ( unde a fi !nscris rezultatul depinde de formatul instucţiunii)" oate aceste segmente sunt e*ecutate !n paralel" in unitatea prefetchX instrucţiunea se transferă !n unitatea pentru decodificarea instrucţiuni şi unitatea prefetchX este liberă şi poate citi următoarea instrucţiune" eci !n interiorul microprocesorului se află D instrucţiuni !n diferite segmente de e*ecuţie" Aceste segmente formează o Handă de asamblare (pipeline)" =igura ?"2 ilustrează o bandă de asamblare cu D unitati numite si stages (segmente etape)" $egmentul 1 e*trage instructiunea din memorie si o plaseaza !ntr-un registru tampon" $egmentul 7 o decodifica determinndu-i tipul si operanzii" $egmentul ? localizeaza si e*trage operanzii fie din registri fie din memorie" $egmentul 4 e*ecuta instructiunea de obicei rulnd operanzii prin calea de date iar segmentul D scrie rezultatul !n registri"
=igura ?"2 - 8 banda de asamblare de D segmente (a) $tarea fiecarui segment !n functie de timp (b)" ;n figura ?"2 Bb edem cum opereaza o banda de asamblare !n functie de timp" ;n ciclul 1 segmentul $1 lucreaza asupra instructiunii 1 (o e*tragere din memorie)" ;n ciclul 7 $7 decodifica instructiunea 1" ot !n ciclul 7 $1 e*trage instructiunea 7" ;n ciclul ? $? e*trage operanzii pentru instructiunea 1 $7 decodifica instructiunea 7 si $1 e*trage instructiunea ?" Eicroprocesoarele ce includ o Handă de asamblare se numesc microprocesoare cu arhitectura scalară' cele ce includ două şi mai multe - microprocesoare cu arhitectura suprascalară. Eicroprocesorul +entium include două Henzi de asamblare şi poate e*ecuta 7 instrucţiuni pe durata unei perioade de ceas (clocI stare)" ate fiind aanta'ele benzii de asamblare ar fi de dorit mai multe din acestea" ;n figura ?"S este prezentată o posibilă proiectare a unui UC+ !n bandă de ansamblare duala" +entru a putea lucra !n paralel cele 7 instructiuni nu trebuie să-și dispute resursele (de e*emplu registrele) și nici una nu trebuie să depindă de rezultatul celeilalte" =ie compilatorul trebuie să garanteze că ipoteza anterioara e respectată fie conflictele sunt detectate și eliminate pe parcursul e*ecuției cu a'utorul unui hardware suplimentar"