Rodomi pranešimai su žymėmis 5.Komandų sistemos. Rodyti visus pranešimus
Rodomi pranešimai su žymėmis 5.Komandų sistemos. Rodyti visus pranešimus

2013 m. sausio 12 d., šeštadienis

5.12. Procesorių gamyba pagal užsakovo reikalavimus


Gaminio kūrimo pagal užsakovo reikalavimus tendencija jau gyvuoja žemesnėse mikroprocesorių pramonės nišose. Lustų pagrindu kuriami gaminiai yra modulinės struktūros; jie projektuojami iš atskirų nekintamų blokų, atliekančių tam tikras funkcijas (šie blokai dar vadinami intelektinės nuosavybės blokais - intelectual property blocks, toliau - IP).
Esami IP gaminiai firmas skatina daugiau sutelkti dėmesį į sistemų kūrimą iš gatavų blokų, o ne kaskart projektuoti naujus gaminius. Norint sukurti originalų specialios paskirties gaminį ar jo komponentą, tereikia išsirinkti reikiamus procesorius ar kitokio tipo branduolius ir juos sujungti į visumą.
Neseniai kelios kompanijos šią blokų išrankos ir jų integracijos metodiką ėmė plėtoti toliau - pradėjo kurti specializuotų mikroprocesorių branduolius. Naudodami specialias projektavimo priemones, inžinieriai tokį mikroprocesorių gali suprojektuoti labai greitai - per kelias savaites.
Pagrindinės šioje specializuotų branduolių kūrimo veikloje dalyvaujančios kompanijos yra Tensilica, ARC Cores, Hewlett Packard ir STMicroelectronics. Jų veiklos "ideologija" panaši, bet skirtingi uždaviniai ir rinka. Pavyzdžiui, kompanija Tensilica, gaminanti "Xtensa" serijos specializuotus procesorius, išsiverčia su paprastais mikroprocesoriniais branduoliais. O vartotojas šiai įmonei gali ir pats apibrėžti savo keliamus reikalavimus atitinkamame tinklalapyje, vartodamas aukštojo lygmens kalbą, pvz., "Verilog".
ARC Core kompanijos "ARCtangent" serijos gaminiai taikosi į skaitmeninių signalų procesorių rinką. Kaip ir Tensilica, ji užsakovams leidžia patiems apibrėžti norimo procesoriaus savybes - linijų grupės plotį, operatyviosios buferinės atminties talpą ir t.t. Hewlett Packard kompanijos HP/ST Lx gaminių serijos paskirtis - spartinti daugialypės informacijos (garso, vaizdo) apdorojimą taikant labai ilgų žodžių komandų metodiką. Vartotojui leidžiama pasirinkti lygiagrečių komandų rinkinį - pasirenkamas reikiamas skaičius įrenginių, kuriais vienu metu atliekamos kelios operacijos.

2013 m. sausio 9 d., trečiadienis

5.3. Mikroprocesoriaus komandų sistema



Komandų sistemą sudaro šios komandų grupės:
Ø   aritmetinės loginės,
Ø   16 bitų duomenų apdorojimo,
Ø   8 bitų duomenų siuntimo,
Ø   nukreipimo (duomenų srautų valdymo),
Ø   kreiptis į paprogramę,
Ø   grįžimo iš paprogramės,
Ø   pagalbinės.
Pilna komandų lentelė su paaiškinimais yra priede A.
Žymenys ir santrumpos
Aprašant komandų sistemą, vartojami šie žymenys ir santrumpos:
Ø   ADR     - 16 bitų duomenų arba komandos adresas (ADRH, ADRL);
Ø   D8        - 8 bitų duomenys;
Ø   D16      - 16 bitų duomenys (D16H, D16L);
Ø   PORT   - 8 bitų prievado adresas;
Ø   OP       - viena iš galimų operacijų;
Ø   R, Rl, R2    - vienas iš galimų 8 skilčių registrų;
Ø   M [     ]- atmintinės ląstelė; laužtiniuose skliaustuose nurodomas jo adresas [ADR] ar registrų pora [RP], kurioje yra ląstelė adresas;
Ø   RP        - registrų pora: RP1 - pirmasis poros registras, pavyzdžiui, vienas
iš registrų B, D ar H, RP2 - antrasis - C, E ar L;
Ø   SP        - 16 skilčių dėklo rodyklė (SPH, SPL)
Siuntimo komandos
Šios grupės komandos naudojamos duomenims persiųsti tarp registrų arba tarp registrų ir atmintinės. Požymiai nekinta.
MOV (Move) - naudojama duomenims persiųsti;MOV                R1, R2              ; R1 ←   R2,
MOV                R, M                 ; R ←   M[HL],
MOV                M, R                 ; M[HL] ←   R.
Tuo pat metu abu operandai negali būti atmintinėje (M), t.y. duomenų negalima persiųsti tarp dviejų atmintinės ląstelių.
MVI (Movė immediate) - naudojama tiesioginiam operandui (antram komandos baitui) siųsti į registrą arba atmintinę; adresuojama tiesioginiu operandu (mnemonikoje tai rodo raidė I -iš angl. immediate):
MVI                 R, D8                ;  R   ← D8,
MVI                 M, D8               ; M[HL] ←   D8.
LDA (Load accumulator direct) - naudojama atmintinės ląstelės, kurios adresas nurodytas antrame ir trečiame komandos baituose, turiniui siųsti į kaupiklį A (tiesioginis adresavimas):
LDA                  ADR                 ; A    ← M[ADR].
STA (Store accumulator direct) - naudojama registro A turiniui įrašyti į atmintinės ląstelę, kurios adresas nurodytas antrame ir trečiame komandos baituose:
STA                  ADR                 ; M[ADR] ← A
LDAX (Load accumulator indirect) - naudojama atmintinės ląstelės, kurios adresą nurodo registrų poros BC ar DE, turiniui siųsti į registrą A (šalutinis - registrinis adresavimas):
LDAX               RP                    ; A   ← M[RP].
STAX (Store accumulator indirect) - naudojama kaupiančiojo registro A turiniui įrašyti į atmintinės ląstelę, kurios adresą nurodo registrų poros BC ar DE:
STAX               RP                    ; M[RP] ←   A.

Dviejų baitų operandų komandos
LXI (Load register pair immediate) - naudojama tiesioginiam operandui (antram ir trečiam komandos baitui) siųsti į nurodytą registrų porą:
                         LXI                   RP,D16           ; RP1← D16H, RP2  ← D16L.

XCHG (Exchange HL with DE) - naudojama registrų porų HL ir DE turiniams sukeisti.

Aritmetinės komandos
Visoms pagrindinėms šios grupės komandoms būdinga tai, kad pirmasis operandas išrenkamas iš kaupiklio, 2-asis-iš bendrojo registro, atmintinės ląstelės ar 2-ojo komandos baito. Operacijos rezultatas lieka kaupiklyje.
Pvz.: Komanda ADD M prisumuoja prie kaupiklio turinio atmintinės ląstelės turinį. Komandoje naudojamas neaiškiai išreikštas adresavimo režimas. Į atmintinę kreipiamasi tuo adresu, kuris yra HL registrų poroje. Šios grupės komandos keičia žymes.

ADD (Add\ ADI (Add immediate) - naudojama sudėti vieno baito operandams arba žemiausiems baitams, jei operandai yra kelių baitų:
                           ADD              R                     ; A←A+R,
                           ADD              M                    ; A←A+M[HL],
                           ADI                D8                   ; A←A+D8.
Komanda ADD A padvigubina registro A turinį - tai atitinka loginį postūmį į kairę per vieną skiltį.
ADC (Add with Carry), - analogiška ADD, tik prie žemiausios skilties pridedama požymio C Y reikšmė. Ši komanda naudojama kelių baitų ilgio operandams, antram ir tolesniems baitams sudėti:
ADC               R          ; A←A+R+CY,
ADC               M         ; A←A+M[HL]+CY,
ACI                D8        ; A←A+D8+CY.
SUB (Subtract) \ SUI(Subtract immediate)  - naudojama operandui (R, M, D8) atimti (sudėti papildomuoju kodu) iš registro A turinio.
Atmintinės operacijoje kitaip formuojamas požymis CY. Jis įgauna kėlimo signalo iš aukščiausios skilties inversinę reikšmę. Todėl, jei CY=O, tai rodo, kad rezultatas yra teigiamas, o CY=1 rodo, kad rezultatas neigiamas ir yra pateiktas papildomu kodu.
Požymio C Y formavimu ir skiriasi ši operacija nuo ADD. Pavyzdžiui, sudedant 12 ir (-15) rezultatas bus (-3) ir C = O, nes vieneto perkelti nereikėjo. Tačiau, jei iš 12 atimsime 15, rezultatas taip pat bus ( -3), bet CY=1.
SUB                  R                      ; A ←  A -R,
SUB                 M                     ; A   ←   r A-M[HL],
SUI                    D8                    ; A   ←  r   A-D8.
Komandą SUB A galima naudoti registro A turiniui ištrinti ir CY nuslopinti.
SBB (Subtract with borrow), SBI - atimti, atsižvelgiant į skolintinę pernašą CY (atmintinės operacijoje požymis C Y vadinamas paskola). Požymio bitas C Y pridedamas prie operando, o šis po to atimamas iš registro A. Požymis C Y formuojamas kaip ir operacijoje SUB. Ši komanda naudojama veiksmams su kelių baitų ilgio operandais:
                                              SBB                      R                       ;  A   ←  A -(R+CY),
SBB                  M                     ; A   ←  A - (M[HL]+Cy),
SBI                    D8                    ; A  ←  A-(D8+CY).
             
Loginės komandos
ANA (And), ANI - naudojama registro A turiniui ir operandui logiškai sudauginti:
                         ANA
                R             ; A    ←   AVR
                                        ANA              M                          ; A   ←   AVM[HL],
ANI                  D8                          ; A   ←  AVD8.
Komanda ANA A nustato CY=0, išsaugodama registro A turinį.
ORA (Or), ORI - naudojama registro A turiniui ir operandui logiškai sudėti, kai reikia įrašyti vienetus į bitų grupę.
                                       ORA                 R                  ; A    ←   R
                                        ORA             M                   ; A    ←   AVM[HL],
   ORI                D8                                ;  A    ←  AVD8.
Komanda ORA A, kaip ir ANA A, nustato CY=0, išsaugodama registro A turinį. XRA (Exclusive OR), XRI - naudojama registro A turiniui ir operandui sudėti moduliu 2.
•  Nagrinėkite kitas šios grupės komandas ir bandykite nustatyti, kokie jų rezultatai.
Kaip ištrinti registrų turinius?
Moduliu 2 sudedant operandą su tuo pačiu operandu gaunamas nulis. Todėl XRA A galima naudoti registro A turiniui ištrinti ir požymiui CY slopinti. Pavyzdžiui, registrų A, B ir C turiniams ištrinti naudojamos komandos:
XRA      A
MOV    B, A
MOV    C, A
Jei registre A yra skaičius OFFH (visi vienetai), tai, įvykdžius komandą XRA B, registre A bus registro B turinio inversija.

Dviejų baitų duomenų apdorojimo komandos

Šios grupės komandos skirtos dviejų baitų duomenims persiųsti ar sukeisti. Mnemonikoje raidė X (eXtended) parodo, kad būtent kalba eina apie dviejų baitų duomenis.
LXI   RP,            B3B2               ; RP  ←  [B3], [B2]
Šiai grupei priskiriamos ir komandos įkeliančios registrų porų turinius į dėklą (PUSH) bei atstatančios iš dėklo registrų porų turinius (POP).
                        PUSH   RP             ; {SP-1} ←  [RP1]; [SP-2] ← [RP2]                                   POP     RP              ; [RP]1 ← [SP-1];  [RP2]  ← [SP-2 ]   

Sulyginimo komandos
CMP  (Compare  CPI)  - naudojama registro A turiniui  ir operandui palyginti. Palyginama atimant, bet rezultatas niekur neįrašomas, o formuojamos tik požymių reikšmės. Požymis Z=l, jei abu dydžiai lygūs; požymis OI, jei nėra kėlimo signalo iš aukščiausios skilties (formuojamas kaip ir komandoje SUB)Jis rodo, kad registre A yra mažesnis dydis. Kaip formuojamos žymės, matome iš šio pavyzdžio: Registre A saugomas kodas 74H. Vykdant komandą CPI su skirtingais operandais , formuojamos tokios žymės:
CPI 74H       ;C = 0, Z 1
CPI 23H    ;C =0,Z0
CPI Al     C =1, Z =0

Nukreipimo ir kreiptis į paprogrames komandos
Šios komandos keičia įprastinę komandų vykdymo tvarką.
Nukreipimo komandos JMP (jump) naudojamos skaičiavimų eigai nukreipti
Besąlyginio nukreipimo komandos pakeičia komandų skaitiklio turinį (įrašo naują reikšmę iš antrojo ir trečiojo komandos baito).
JMP       B3:B2 ; PC      ←        [B3], [B2]
Sąlyginio nukreipimo komandos pakeičia komandų skaitiklio turinį (įrašo naują reikšmę iš antrojo ir trečiojo komandos baito), jei nukreipimo sąlyga įvykdyta. Priešingu atveju komandų skaitiklio turinys didinamas, kaip ir vykdant apdorojimo ar pan. komandas, pvz.:.
JNZ       B3:B2   ; PC      ←        [B3], {B2], jei Z =0

Nukreipimas gali būti vykdomas pagal visas F registre formuojamas žymes C, Z, P, S (tiek atsižvelgiant į jų būvimą, tiek nebūvimą. Žr. Komandų lentelę.
Kreiptis į paprogrames komandos CALL (Call) t.p. nukreipia skaičiavimų eigą ir papildomai
įrašo į dėklą komandų skaitiklio turinį.
CALL      B3:B2         ; [SP-1] [SP-2] ← PC     ;  PC <-[B3], {B2];
Besąlyginės  kreipties į paprogramę komandos pakeičia komandų skaitiklio turinį (įrašo naują reikšmę iš antrojo ir trečiojo komandos baito) bei įsimena dėkle komandų skaitiklio PC turinį. Tą būtina padaryti, nes įvykdžius paprogramę būtina sugrįžti į nutrauktą programos vietą ir pratęsti jos darbą.
Sąlyginės nukreipimo  ir kreiptis į paprogrames komandos keičia komandų skaitiklio
parodymą, tik esant įvykdytai t.t. sąlygai.
CC          B3:B2  ; PC    [B3], {B2],  jei C =1
Išsaugotą komandų skaitiklio turinį panaudoja grįžimo iš paprogramės komanda RET.
RET                   ; PC←SP
RET komanda yra vieno baito beadresinė  besąlyginė komanda, atstatanti iš dėklo komandų skaitiklio turini. Ja paprasta užbaigiamos paprogramės.
Panašiai, kaip nukreipimo ir kreipties į paprogrames RET komandos t.p. gali būti sąlyginės.  Sąlygos formuojamos pagal tas pačias F registro žymes.
            RC  B3:B2         ; PC← SP,  jei C =1
Sąlyginės grįžimo iš paprogramės komandos grįžimą į programą vykdo, tik sąlygos pagal atitinkamą žymę fiksavimo atveju.

5.2. MP 8080 Komandų sistema



Šios temos tikslas -išmokti programavimo asembleriu principų.
Siekdami šio tikslo, Jūs turėsite susipažinti su MP 8080 komandų formatais, adresavimo režimais, komandų sistema, išmokti asemblerio sintaksės ir įgyti programų sudarymo įgūdžių.
5.2.1. Mikroprocesoriaus komandų formatai
MP 8080 naudojami 1-o, 2-jų, 3-jų baitų komandų formatai. Operacijos kodui skiriama nuo 2 iki 8 vieno baito skilčių. Vieno baito komandose be operacijos kodo gali būti nurodyti:
Ø   bendros paskirties registrų adresai,
Ø   registrų poros adresas,
Ø   nukreipimo sąlygos kodas.
Dviejų baitų komandų  antruose  baituose  teikiami  betarpiški  operandai,  dalyvaujantys operacijose arba įvesties – išvesties prievadų adresai.
Trijų baitų formatuose antras ir trečias komandų baitai skirti operatyviosios atmintinės ląstelės adresui nurodyti.
5.2.3. Asemblerio sintaksė
Bet kokia programa kompiuteriui vykdoma tik pervedus ją į mašininių kodų kalbą.
Programos tekstas mašinos kalba vadinamas objektine programa. Artimiausias mašininių
kodų kalbai yra asembleris. Jame kiekviena kompiuterio komanda užrašoma simboliniais
kodais.
Asemblerio komandos aprašą sudaro 4 dalys:
Ø   Žymė - vardas, vartojamas komandos adresui žymėti
Ø   Operacijos kodas - simbolinis operacijos pavadinimas
Ø   Operandas - duomens adresas arba pats duomuo, su kuriuo atliekama operacija
Ø   Komentarai - informacija, kuria programuotojas paaiškina operacijas.
Asemblerio skyrikliai:
Ø   :           - po žymės
Ø   -           - tarpas tarp operacijos kodo ir operando
Ø   ,           - tarp operandų
Ø   ;           - prieš komentarus.

5.1. Pagrindiniai komandų sistemų tipai



Projektuojant procesorių, pirmiausiai parenkama komandų sistema.
Komandų sistemas galima klasifikuoti pagal šiuos pagrindinius požymius
Ø    Operando saugojimo vieta
Ø    Operandų tipas ir dydis 
Ø    Komandoje aiškiai nurodomų operandų skaičius
Ø    Operacijų tipai
Vidinės CPU atminties tipas yra pagrindinis skiriamasis požymis. Čia yra 3 alternatyvos: dėklas, kaupiklis ir registrų grupė.
Lentelė 5.1. Pagrindiniai komandų sistemų tipai
Vidinės atminties tipas
Pavyzdžiai
Aiškiai nurodomas operandų skaičius ALU komandose
Rezultato talpinimo vieta
Operandų išrinkimo procedūra
Dėklas
B5500
0
Dėklas
PUSH, POP
Kaupiklis
PDP-8,Motorola 6809
1
Kaupiklis
Kaupiklio įkrovimas, įrašymas į atmintį (load, store)
Registrų grupė
IBM  370, DEC VAX
2 arba 3
Registrai arba atmintis
Registrų/atminties įkrovimas, įrašymas (load, store)
Procesorius nebūtinai naudoja vieno tipo architektūros komandas. Dažniausiai jame rasime bent dviejų tipų komandas. Pavyzdžiui, Intel 80x86 procesoriai - kaupiklio ir bendrųjų registrų tipo architektūrų junginys. Dėklo architektūroje operandai yra dėklo viršuje, o kaupiklio tipo komandų sistemose  vienas iš operandų yra kaupiklyje.
Čia paminėti neišreikšti operandai, t.y. žinoma, kad jie ten yra, ir jokių nuorodų į tai komandoje nėra. Tuo tarpu registrų architektūroje visi operandai aiškiai nurodomi komandoje - tai registrai arba atminties ląstelės. Operandai gali būti imami tiesiai iš atminties arba gali būti pirma įkraunami į registrus, jei to reikalauja komandų specifika.
Lentelė 5.2 Pagrindiniai komandų sistemų tipai. Jų privalumai ir trūkumai
Tipas
Privalumai
Trūkumai
Dėklo
Trumpos komandos, kompaktiškas kodas. Paprastas išraiškų paskaičiavimo modelis.
Negalimas laisvas išrinkimas iš dėklo, todėl sunku generuoti efektyvų kodą
Kaupiklio
Komandos gana trumpos. Jos minimizuoja vidinį procesoriaus valdymo įtaisą.
Kadangi kaupiklis - laikino saugojimo priemonė, tenka vykdyti nemažai mainų su atmintimi
Bendrųjų registrų
Paprastas kodo generavimas
Visi operandai turi būti įvardyti, todėl komandos ilgesnės
Pirmieji kompiuteriai (įskaitant UNIVAC 1, EDSAC) buvo kaupiklio tipo. Pirmasis bendrosios paskirties registrų tipo kompiuteris buvo Pegasus (Ferranti, 1956 m.). Jame buvo 8 bendrosios paskirties registrai. Šie registrai buvo įkraunami, persiunčiant duomenų bloką iš būgno. Registro R0 turinys visuomet buvo lygus 0.
Pastaruoju metu vyrauja bendrosios paskirties registrų tipo architektūra.Tai paaiškinama tuo, kad:
Ø  Registrai, kaip ir kiti CPU mazgai, greitesni, nei atmintis;
Ø   Kompiliatoriai juos panaudoja kodo generavimui efektyviau, nei kitas vidines CPU atminties formas (pvz., dėklą);
Ø   Saugant operandus ir tarpinius rezultatus registruose, sumažėja kreipinių į atmintį skaičius, tuo atlaisvinant ją kitiems tikslams (pvz., įvedimui ar išvedimui);
Ø   Generuojamas kompaktiškesnis kodas, nes registrams nurodyti reikia mažiau vietos.

Yra dvi pagrindinės charakteristikos, kurios skiria bendrosios paskirties registrų architektūras:
Ø   aritmetinių komandų operandų skaičius - 2 ar 3; pirmu atveju rezultatas talpinamas į vieno iš operandų vietą);
Ø  kiek operandų komandoje gali būti atmintyje; šis skaičius gali būti nuo 0 iki 3.

Lentelė 5.3. Pagrindiniai komandų sistemų tipai. Adresų ir operandų skaičius
Atminties adresų skaičius
 tipinėje ALU komandoje
Maksimalus operandų
skaičius
Pavyzdžiai
0
2
3
IBM RT-PC
SPARC, MIPS
1
2
3
MC68000, dalis IBM 360
dalis IBM 360 (RS)
2
2
3
PDP-11,
dalis IBM 360 (SS)
3
3
VAX
Taigi, yra 7 galimos kombinacijos. Trys iš jų būdingesnės ir naudojamos klasifikuojant daugumą egzistuojančių kompiuterių:
Ø    registras-registras,
Ø    registras-atmintis,
Ø    atmintis-atmintis.
Lentelė 5.4. Pagrindiniai komandų tipai.
Tipas
Privalumai
Trūkumai
Registras-registras(0,3)
Paprastos, fiksuoto ilgio komandos. Paprastas kodo generavimo modelis. Komandų vykdymo trukmė maždaug vienoda
Didesnis komandų skaičius programoje. Trumpų komandų kodavimas perteklinis
Registras-atmintis(1,2)
Duomenis galima panaudoti be išankstinio jų įkrovimo į registrus. Komandų formatai nesudėtingi, pakankamai kompaktiškas kodas
Operandai ne ekvivalentiški. Vienas iš šaltinių pakeičiamas rezultatu, todėl jis prarandamas. Komandų vykdymo trukmė priklauso nuo operandų vietos
Atmintis-atmintis(3,3)
Kompaktiškiausia programa. Nereikia registrų tarpiniams rezultatams saugoti
Labai įvairus komandų ilgis, ypač 3 operandų komandų. Daug kreipinių į atmintį, todėl ji labai apkrauta
Jei komandoje nėra nė vieno adreso, reiškia, kad abu operandai turi būti iš anksto sutartoje vietoje. Paprastai tai būna dvi "viršutinės" dėklo ląstelės, todėl 0 adresų kompiuteris dar vadinamas dėklo tipo architektūros kompiuteriu.

Etiketės