Máté: Architektúrák3. előadás1 Alapvető digitális logikai áramkörök Integrált áramkör (IC, Integrated Circuit, chip, lapka) 5x5 mm 2 szilícium darab kerámia vagy műanyag lapon (tokban), lábakkal (pins). Négy alaptípus: SSI (Small Scale Integrated 1-10 kapu), MSI (Medium Scale..., kapu), LSI (Large Scale..., kapu), VLSI (Very Large Scale..., > kapu).
Máté: Architektúrák3. előadás ábra SSI lapka négy NAND kapuval V cc : feszültség, GND: föld V cc GND Bevágás
Máté: Architektúrák3. előadás3 Kívánalom: sok kapu – kevés láb Kombinációs áramkörök Definíció: A kimeneteket egyértelműen meghatározzák a pillanatnyi bemenetek.
Máté: Architektúrák3. előadás4 Multiplexer: n vezérlő bemenet, 2 n adatbemenet, 1 kimenet. Az egyik adatbemenet kapuzott (gated) a kimenetre ( ábra). C D0D0 D1D1 D2D2 D3D3 D4D4 D5D5 D6D6 D7D7 AB F Sematikus rajza
Máté: Architektúrák3. előadás5 n vezérlő bemenetű multiplexerrel tetszés szerinti n változós Boole-függvény megvalósítható az adatbemenetek megfelelő választásával. Pl. a 3 változós többségi függvény: Párhuzamos-soros átalakítás: vezérlő vonalakon rendre: 000, 001, … 111.
Máté: Architektúrák3. előadás6 multiplexer demultiplexer Demultiplexer: egy egyedi bemenetet irányít az n vezérlő bemenet értékétől függően a 2 n kimenet egyikére
Máté: Architektúrák3. előadás7 dekódoló demultiplexer Dekódoló: n bemenet, 2 n kimenet. Pontosan egy kimeneten lesz 1 (3.13. ábra). Demultiplexerrel: a bemenetet igazra állítjuk.
Máté: Architektúrák3. előadás8 KIZÁRÓ VAGY (XOR eXclusive OR) kapu ABX Igazság tábla: Szimbolikus jelölése A B X Összehasonlító (comparator): (3.14. ábra)
Máté: Architektúrák3. előadás9 Programozható logikai tömbök: PLA (3.15. ábra) (Programmable Logic Array) A B L 12 bemenő jel Ha ezt a biztosítékot kiégetjük, akkor nem jelenik meg B# az 1-es ÉS kapu bemenetén Ha ezt a biztosítékot kiégetjük, akkor az 1-es ÉS kapu kimenete nem jelenik meg az 5-ös VAGY kapu bemenetén 24 bemenő vonal 50 bemenő vonal 6 kimenet
Máté: Architektúrák3. előadás10
Máté: Architektúrák3. előadás11 Aritmetikai áramkörök A kombinációs áramkörökön belül külön csoportot alkotnak. Léptető: C=1: jobbra, C=0: balra léptet.
Máté: Architektúrák3. előadás12 Összeadók: Fél-összeadó (half adder, ábra)
Máté: Architektúrák3. előadás13 Összeadók: Teljes-összeadó (full adder, ábra)
Máté: Architektúrák3. előadás14 Aritmetikai-logikai egység: bitszelet (bit slice, ábra), F0, F1 -től függően ÉS, VAGY, NEGÁCIÓ vagy +
Máté: Architektúrák3. előadás15 átvitel továbbterjesztő összeadó (ripple carry adder):
Máté: Architektúrák3. előadás16 átvitel kiválasztó összeadó (carry select adder) eljárás:
Máté: Architektúrák3. előadás17 Nem kombinációs áramkörök Óra (clock, ábra): ciklusidő (cycle time). Pl.: 500 MHz - 2 nsec. Finomabb felbontás késleltetéssel. Aszimmetrikus óra. késleltetés A B C
Máté: Architektúrák3. előadás18 Memória: „Emlékszik” az utolsó beállításra. Tároló: Szint vezérelt (level triggered). SR tároló (Set Reset latch, ábra). Stabil állapot: a két kimenet 0, 1 vagy 1, 0. S (set), R (reset) bemenet. (Q# ≡ Q)
Máté: Architektúrák3. előadás19 Mindkét SR tároló indeterminisztikussá válna, ha S = R = 1 egyszerre fordulna elő.
Máté: Architektúrák3. előadás20 Az inverternek van egy pici (1-10 ns) késleltetése (Δ).
Máté: Architektúrák3. előadás21 Flip-flop: élvezérelt (edge triggered), D flip-flop: ábra.
Máté: Architektúrák3. előadás ábra: Tárolók és flip-flopok (a) CK=1, (b) CK=0 szint esetén írja be D-t, (c) CK emelkedő, (d) CK lefelé menő élénél. Sokszor S (set, PR preset), R (reset,CLR clear) be- és Q# kimenet is van. D Q CK D Q >CK (a) (b) tárolók (c) (d) flip-flopok D Q CK D Q >CK CK: órajel
Máté: Architektúrák3. előadás ábra: (a) 2 független D flip-flop, D Q >CK Q# CLR PR D Q >CK Q# CLR PR V cc GND
Máté: Architektúrák3. előadás ábra: (b) közös CK-val és CLR-rel vezérelt 8 bites D flip-flop: regiszter GND V cc D Q >CK CLR D Q >CK CLR D Q >CK CLR D Q >CK CLR D Q >CK CLR D Q >CK CLR D Q >CK CLR D Q >CK CLR
Máté: Architektúrák3. előadás25 Memória szervezése Elvárás: szavak címezhetősége ábra: Négy db három bites szó. Bemenetek: három a vezérléshez, –CS (Chip Select): lapka választás, –RD (ReaD): 1: olvasás, 0: írás választása, –OE (Output Enable): kimenet engedélyezése. kettő a címzéshez (dekódoló), három a bemenő adatoknak, három adat kimenet.
Máté: Architektúrák3. előadás ábra. 4 3-as memória
Máté: Architektúrák3. előadás27 Memória szervezése Az igazi memóriáknál a bemenet és kimenet közös (kevesebb lábra van szükség): Nem invertáló és invertáló pufferek (ezek három állapotú eszközök, tri-state device, ábra). adat be adat ki vezérlés adat be adat ki vezérlés nem invertáló puffer invertáló puffer magas alacsony Ha a vezérlő jel magas alacsony Ha a vezérlő jel
Máté: Architektúrák3. előadás28 Memórialapkák Előnyös, ha a szavak száma 2 hatvány. 4 Mbit-es memória kétféle szervezése: ábra. A0 A1... A18 D0 D1... D7 512 K 8 bites memória (4 Mbit) CS WE OE A0 A1... A10 D 4096 K 1 bites memória (4 Mbit) CS WE OE RAS CAS 19 cím, 8 adat vonal 11 cím, 1 adat vonal Row Address Strobe Column Address Strobe
Máté: Architektúrák3. előadás29 Memórialapkák A jel (bemenet) beállított (asserted) vagy negált. CS beállított: 1, de CS# beállított: 0 a)512 K bájtos elrendezés: 19 cím, 8 adat vonal. b)2048*2048 bites elrendezés: 11 cím, 1 adat vonal: Bit kiválasztás sor- (RAS: Row Address Strobe) és oszlopindex CAS (Column...) segítségével. Gyakran alkalmazzák nagyobb memóriáknál, bár a két cím megadása lassíthat. Nagyobb memóriáknál 1, 4, 8, 16 bites kimeneteket is használnak.
Máté: Architektúrák3. előadás30 RAM (Random Access Memory) Statikus RAM (SRAM). D flip-flop elemekből épül fel. Amíg áram alatt van, tartja a tartalmát. Elérési idő: néhány nsec (cache-nek jók). Dinamikus RAM (DRAM): minden bit egy tranzisztor és egy kondenzátor: néhány msec-onként frissíteni kell, de nagyobb adatsűrűség érhető el. Elérési idő: néhány tíz nsec (főmemóriák). -régi: FPM (Fast Page Mode) sor-, oszlopcím. -újabb: EDO (Extended Data Output) lehet új memóriahivatkozás, mielőtt az előző befejeződik. SDRAM (Synchronous DRAM). A központi óra vezérli. Blokkos átvitel. Újabban: DDR (Double Data Rate). Az órajel föl- és lefutó élénél is van adatátvitel.
Máté: Architektúrák3. előadás31 ROM (Read-Only Memory) ROM: gyárilag kialakított tartalom. PROM (Programmable ROM): a tartalom biztosítékok kiégetésével alakul ki (a PLA-khoz hasonlóan, ábra). EPROM (Erasable PROM): a biztosítékok speciális fénnyel kiolvaszthatók és „kijavíthatók”. EEPROM: elektromos impulzusokkal. Flash memória: törlés és újraírás csak blokkonként. Kb használat után „elkopnak”. Ilyen van a legtöbb MP3 lejátszóban, digitális fényképezőgépben …
Máté: Architektúrák3. előadás MB-os flash memória (2006)
Máté: Architektúrák3. előadás33 1 GB-os flash memória (2007)
Máté: Architektúrák3. előadás34 Az I8086/8088 utasítás rendszere Jelőlések : értékadás : felcserélés op, op1, op2: tetszőlegesen választható operandus (közvetlen, memória vagy regiszter). op1 és op2 közül az egyik regiszter kell legyen! reg: általános, bázis vagy index regiszter mem: memória operandus ipr: (8 bites) IP relatív cím port: port cím (8 bites eltolás vagy DX) [op]: az op által mutatott cím tartalma
Máté: Architektúrák3. előadás35 Adat mozgató utasítások Nem módosítják a flag-eket (kivéve POPF és SAHF) MOVop1, op2; op1 op2 (MOVe) XCHGop1, op2; op1 op2 (eXCHanGe), op2 sem ; lehet közvetlen operandus XLAT; AL [BX+AL] (trans(X)LATe), a ; BX által címzett maximum 256 byte- ; os tartomány AL-edik byte-jának ; tartalma lesz AL új tartalma LDSreg, mem; reg mem, mem+1 ; DS mem+2, mem+3 (Load DS) LESreg, mem; reg mem, mem+1 ; ES mem+2, mem+3 (Load ES) LEAreg, mem; reg mem effektív (logikai) címe ; (Load Effective Address)
Máté: Architektúrák3. előadás36 A veremmel (stack-kel) kapcsolatos adat mozgató utasítások: PUSHop; SP SP-2; (SS:SP) op PUSHF; (PUSH Flags) ; SP SP-2; (SS:SP) STATUS POPop; op (SS:SP); SP SP+2 POPF; (POP Flags) ; STATUS (SS:SP); SP SP+2 Az Intel 8080-nal való kompatibilitást célozza az alábbi két utasítás: SAHF; STATUS alsó 8 bitje AH LAHF; AH STATUS alsó 8 bitje
Máté: Architektúrák3. előadás37 Aritmetikai utasítások ADDop1, op2; op1 op1 + op2 (ADD) Pl.: előjeles/előjel nélküli számok összeadása MOVAX, -1; AX=-1 (=0FFFFH) ADDAX, 2; AX=1, C=1, O=0 ADCop1, op2; op1 op1 + op2 + C ; (ADD with Carry) Pl.: két szavas összeadás (előjeles/előjel nélküli) ADDAX, BX ADCDX, CX; (DX:AX) = (DX:AX) + (CX:BX) INCop; op op + 1, C változatlan! (INCrement)
Máté: Architektúrák3. előadás38 SUBop1, op2; op1 op1 - op2 (SUBtraction) CMPop1, op2; flag-ek op1 - op2 szerint (CoMPare) SBBop1, op2; op1 op1 - op2 – C: ; a több szavas kivonást segíti. DECop; op op - 1, C változatlan ; (DECrement) NEGop; op -op (NEGate)
Máté: Architektúrák3. előadás39 Az összeadástól és kivonástól eltérően a szorzás és osztás esetében különbséget kell tennünk, hogy előjeles vagy előjel nélküli számábrázolást alkalmazunk-e. További lényeges eltérés, hogy két 8 bites vagy 16 bites mennyiség szorzata ritkán fér el 8 illetve 16 biten, ezért a szorzás műveletét úgy alakították ki, hogy 8 bites tényezők szorzata 16, 16 biteseké pedig 32 biten keletkezzék: Szorzásnál op nem lehet közvetlen operandus! MULop; előjel nélküli szorzás (MULtiplicate), IMULop; előjeles szorzás (Integer MULtiplicate). Ha op 8 bitesAX AL op. Ha op 16 bites (DX:AX) AX op.
Máté: Architektúrák3. előadás40 Osztásnál op nem lehet közvetlen operandus! DIVop; (DIVide) előjel nélküli osztás, IDIVop; (Integer DIVide) előjeles osztás, ; A nem 0 maradék előjele megegyezik ; az osztóéval. Ha op 8 bites: AL AX/op hányadosa, AH AX/op maradéka. Ha op 16 bites: AX (DX:AX)/op hányadosa, DX (DX:AX)/op maradéka. Osztásnál túlcsordulás azonnal elhal (abortál) a programunk!
Máté: Architektúrák3. előadás41 Ha bájtot bájttal vagy szót szóval akarunk osztani, akkor: Előjel nélküli osztás előkészítése AH illetve DX nullázásával történik. Előjeles osztás előkészítésére szolgál az alábbi két előjel kiterjesztő utasítás: CBW; (Convert Byte to Word) ; AX AL előjel helyesen CWD; (Convert Word to Double word) ; (DX:AX) AX előjel helyesen Pozitív számok esetén (az előjel 0) az előjel kiterjesztés az AH illetve a DX regiszter nullázását, negatív számok esetén (az előjel 1) csupa 1-es bittel való feltöltését jelenti. Az előjel kiterjesztés máskor is alkalmazható.
Máté: Architektúrák3. előadás42 ; Két vektor skalár szorzata. 1. változat codesegment para public ’code’ assume cs:code, ds:data, ss:stack, es:nothing skalarprocfar pushds; visszatérési cím a verembe xorax,ax; ax 0 pushax; visszatérés offset címe movax,data; ds a data szegmensre mutasson mov ds,ax; sajnos „mov ds,data” ; nem megengedett ; A
Máté: Architektúrák3. előadás43 movcl,n; cl n, 0 n 255 xorch,ch; cx = n szavasan xordx,dx; az eredmény ideiglenes helye JCXZkesz; ugrás a kesz címkére, ; ha CX (=n) = 0 xorbx,bx; bx 0, ; bx-et használjuk indexezéshez
Máté: Architektúrák3. előadás44 ism:moval,a[bx]; al a[0], később a[1],... imulb[bx]; ax a[0] b[0], a[1] b[1],... adddx,ax; dx részösszeg incbx; bx bx+1, az index növelése ; B deccx; cx cx-1, (vissza)számlálás JCXZkesz; ugrás a kész címkére, ha cx=0 jmpism; ugrás az ism címkére kesz: movax,dx; a skalár szorzat értéke ax-ben ; C
Máté: Architektúrák3. előadás45 callhexa; az eredmény kiírása ; hexadecimálisan movsi,offset kvse ; kocsi vissza soremelés callkiiro; kiírása ret; vissza az Op. rendszerhez skalarendp; a skalár eljárás vége ; D
Máté: Architektúrák3. előadás46 hexaproc; ax kiírása hexadecimálisan xchgah,al; ah és al felcserélése callhexa_b; al (az eredeti ah) kiírása xchgah,al; ah és al visszacserélése call hexa_b; al kiírása ret; visszatérés hexaendp; a hexa eljárás vége ; hexa_bproc; al kiírása hexadecimálisan pushcx; mentés a verembe movcl,4; 4 bit-es rotálás előkészítése RORal,CL; az első jegy az alsó 4 biten callh_jegy; az első jegy kiírása RORal,CL; a második jegy az alsó 4 biten callh_jegy; a második jegy kiírása popcx; visszamentés a veremből ret; visszatérés hexa_bendp; a hexa_b eljárás vége
Máté: Architektúrák3. előadás47 h_jegyproc; hexadecimális jegy kiírása pushax; mentés a verembe ANDal,0FH; a felső 4 bit 0 lesz, ; a többi változatlan addal,’0’; + 0 kódja cmpal,’9’; 9 ? JLEh_jegy1; ugrás h_jegy1 -hez, ha igen addal,’A’-’0’-0AH; A-F hexadecimális jegyek ; kialakítása h_jegy1: movah,14; BIOS szolgáltatás előkészítése int10H; BIOS hívás: karakter kiírás popax; visszamentés a veremből ret; visszatérés h_jegyendp; a hexa_b eljárás vége
Máté: Architektúrák3. előadás48 kiiroproc ; szöveg kiírás (DS:SI)-től pushax cld ki1:lodsb ; al a következő karakter cmpal, 0; al =? 0 jeki2; ugrás a ki2 címkéhez, ha al=0 movah,14; BIOS rutin paraméterezése int 10H; az AL-ben lévő karaktert ; kiírja a képernyőre jmpki1; a kiírás folytatása ki2:popax ret; visszatérés a hívó programhoz kiiroendp; a kiíró eljárás vége ; codeends; a code szegmens vége
Máté: Architektúrák3. előadás49 datasegment para public ’data’ ndb3 adb1, 2, 3 bdb3, 2, 1 kvsedb13, 10, 0; kocsi vissza, soremelés dataends; a data szegmens vége ; ========================================== stacksegment para stack ’stack’ dw100 dup (?); 100 word legyen a verem stackends; a stack szegmens vége ; ========================================== endskalar; modul vége, ; a program kezdő címe: skalar
Máté: Architektúrák3. előadás50 Vezérlés átadó utasítások Eljárásokkal kapcsolatos utasítások Eljárás hívás: CALLop; eljárás hívás - közeli:push IP, IP op, - távoli:push CS, push IP, (CS:IP) op. Visszatérés az eljárásból: RET; visszatérés a hívó programhoz (RETurn) - közeli:pop IP, - távoli:pop IP, pop CS. RET op;..., SP SP+op ; op csak közvetlen adat lehet!
Máté: Architektúrák3. előadás51 Feltétlen vezérlés átadás (ugrás) JMP op; ha op közeli: IP op, ; ha távoli:(CS:IP) op.
Máté: Architektúrák3. előadás52 Feltételes ugrások, aritmetikai csoport ElőjelesRelációElőjel nélküli JZ ≡ JE= JNZ ≡ JNE≠ JG ≡ JNLE>JA ≡ JNBE JGE ≡ JNL≥JAE ≡ JNB ≡ JNC JL ≡ JNGE<JB ≡ JNAE ≡ JC JLE ≡ JNG≤JBE ≡ JNA A feltételek: Zero, Equal, No (Not), Greater, Less, Above, Below, Carry
Máté: Architektúrák3. előadás53 A feltételek: Zero, Equal, No (Not), Carry, Sign, Overflow, Parity Even, Parity Odd. Feltételes ugrások, logikai csoport a flag igaz (1)flaga flag hamis (0) JZ ≡ JEZeroJNZ ≡ JNE JCCarryJNC JSSignJNS JOOverflowJNO JP ≡ JPEParityJNP ≡ JPO JCXZCX = 0
Máté: Architektúrák3. előadás54 Minden feltételes vezérlés átadás IP relatív címzéssel (SHORT) valósul meg! Pl.: JZMESSZE; Hibás, ha ; MESSZE messze van Megoldás: JNZIDE; Negált feltételű ugrás JMPMESSZE IDE:...
Máté: Architektúrák3. előadás55 Ciklus szervező utasítások IP relatív címzéssel (SHORT) valósulnak meg. LOOPipr; CX CX – 1, ugrás ipr -re, ; ha CX 0 LOOPZipr; CX CX – 1, ugrás ipr -re, ; ha (CX 0 és Z=1) LOOPEipr; ugyanaz mint LOOPZ LOOPNZipr; CX CX – 1, ugrás ipr -re, ; ha (CX 0 és Z=0) LOOPNEipr; ugyanaz mint LOOPNZ
Máté: Architektúrák3. előadás56 Feladatok Mit nevezünk kombinációs áramkörnek? Milyen kombinációs áramköröket ismer? Milyen be- és kimenetei vannak a multiplexernek, a demultiplexernek, a dekódolónak? Mire használható a multiplexer, és hogyan? Mire használható a PLA, és hogyan? Milyen aritmetikai áramköröket ismer? Hogy működik a léptető? Hogy működik a „fél összeadó”? Mi indokolja a „fél összeadó” elnevezést?
Máté: Architektúrák3. előadás57 Feladatok Hogy épül fel a teljes összeadó? Milyen részei vannak az ALU-nak? Milyen be- és kimenetei vannak az 1 bites ALU-nak? Milyen műveletek végezhetők el az ALU-val? Hogy működik az átvitel továbbterjesztő/kiválasztó összeadó?
Máté: Architektúrák3. előadás58 Feladatok Hogy érhetünk el az órajelnél finomabb időzítést? Milyen nem kombinációs áramköröket ismer? Kombinációs áramkör-e az ALU? Hogyan csökkenthető az összeadásnál az átvitelekből származó idő? Hány stabil állapota van az SR tárolónak? Mi a különbség az SR és az időzített SR tároló között? Mi a különbség az SR és D tároló között? Mi a pulzusgenerátor, és mi a működési elve? Mi a különbség a tároló és a flip-flop között?
Máté: Architektúrák3. előadás59 Feladatok Hogy működik az invertáló és a nem invertáló puffer? Miért használnak a memóriáknál invertáló vagy nem invertáló puffert? Hogy címezhető meg n címlábon 2 n nél nagyobb memória? Mit jelent, hogy a CS/CS# bemenet beállított/negált? Mi a RAM? Milyen elemekből épül fel a SRAM? Milyen elemekből épül fel a DRAM? Hogy működik a DRAM?
Máté: Architektúrák3. előadás60 Feladatok Hogy működik az SDRAM? Mit jelent az FPM rövidítés? Mit jelent az EDO rövidítés? Hogy működik a DDR? Mit jelent a ROM rövidítés? Hogy működik az EPROM? Hogy működik az EEPROM? Milyen memória van a legtöbb fényképezőgépben?
Máté: Architektúrák3. előadás61 Feladatok Milyen adat mozgató utasításokat ismer? Hogy működnek? Milyen aritmetikai utasításokat ismer? Hogy működnek? Mit csinál az IDIV utasítás? Mit csinál az CWD utasítás? Miért hibás az imul[di+bx] utasítás?
Máté: Architektúrák3. előadás62 Feladatok Írjon program részletet a/b kiszámítására, feltéve, hogy a és b előjeles/előjel nélküli bájt/word! Írjon program részletet a/b kiszámítására, feltéve, hogy a előjeles és b előjel nélküli bájt/word! Írjon program részletet a/b kiszámítására, feltéve, hogy a előjeles bájt és b előjeles word! Írjon program részletet a/b kiszámítására, feltéve, hogy a előjeles bájt és b előjel nélküli word! Írjon program részletet a/b kiszámítására, feltéve, hogy a előjeles word és b előjel nélküli bájt!
Máté: Architektúrák3. előadás63 Feladatok Melyik az eljárást hívó utasítás? Hova helyezi el a visszatérési címet a CALL utasítás? Mi a különbség a közeli és távoli eljárás hívás között? Meghívható-e egy közeli/távoli eljárás másik szegmensből? Honnan „tudja” a CALL utasítás, hogy közeli vagy távoli a hívott eljárás? Honnan „tudja” a RET utasítás, hogy közeli vagy távoli ugrással kell visszatérni az eljárásból? Mi történik RET 4 hatására? Mi történik CALL FAR 8[BX][SI] hatására?
Máté: Architektúrák3. előadás64 Feladatok Milyen a feltételes ugró utasítások címzési módja? Mi a különbség a JA és JG utasítás között? Sorolja fel az aritmetikai csoportba tartozó feltételes ugró utasításokat! Írjon programrészletet, amely az A, B, C címkéhez ágazik el aszerint, hogy AX 0! Írjon programrészletet, amely az A, B, C címkéhez ágazik el aszerint, hogy X Y! X előjeles, Y előjel nélküli bájt. A program JCXZ A utasítása hibás, mert az A címke túl messze van. Hogy javítható a hiba?
Máté: Architektúrák3. előadás65 Feladatok Milyen ciklus szervező utasításokat ismer? Hogy működnek? Mi a különbség a LOOP és a LOOPZ utasítás között? Írjon programrészletet az 50 elemű, szavakból álló A tömb első 0 elemének megtalálására! Írjon programrészletet az 50 elemű, szavakból álló A tömb utolsó 0 elemének megtalálására! Írjon programrészletet az 50 elemű, bájtokból álló A tömbben található a betűk megszámlálására! Hibás a LOOPNE A utasítás, mert az A címke túl messze van. Hogy javítható a hiba?