74b13d35fce04c96e74a1d060051a4ed.ppt
- Количество слайдов: 19
Mechatronika, Optika és Gépészeti Informatika Tanszék Kovács Endre tud. Mts. A Számítógépek felépítése, működési módjai Mikroprocesszoros Rendszerek Felépítése
Buszrendszer CPU OPERATÍV TÁR μ processzor RAM ROM BUS Illesztő egységek I/O Interface 1. 2. Klaviatúra . . . Monitor I/O Interface n. Perif. Egység n. Periféria egységek: Klaviatúra, Monitor, Printer, Egér, Szkenner, …… stb. Mérő perifériák, Ipari folyamatirányító rendszerek perifériái, …. stb.
CÍM BUS A 0 A 1 A 2 A 15 BUS ADAT BUS CONTROL BUS Pld: Operatív tár Írás CPU H 1 L 0 CPU Slave 1 0 1 0 Tápfeszültség Cím érvényes Adat érvényes D 0 D 1 D 7 MR MW I/O R I/O W ACK Address Data MW ACK t [ ns ]
CPU H 1 L 0 CPU Slave 1 0 Address Cím érvényes Adat érvényes 1 Data MW 0 1 ACK 0 t [ ns ] BUSZ CIKLUS BUSZ ciklusok: Operatív tár olvasás Operatív tár írás I/O olvasás I/O írás IT vektor beolvasás DMA ciklusok Memory Read Memory Write I/O Read I/O Write MR MW IOR IOW Handshake jelpár: MW-ACK
Decimális Bináris 27 26 25 24 23 22 21 20 1 1 1 23 22 21 20 18 B 7 3 23 22 21 20 1 1 Hexadecimális 0 1 1 1 B 7 0 0 0 0. . . 1 1 1 1 0. . . 255 0 1 2 3. 9 00. . . FF 0 1 2 3. 9 10 11 12 13 14 15 A B C D E F
Operatív tár Gépi szó hossza A byte egész számú többszöröse. 8, 16, 32, 64, 128 bites gépi szó. (Arithmetika) Címezhető legkisebb egység Külön címmel rendelkező (külön elérhető memória regiszter. Pld. byte Operatív tár mérete Memóriaregiszterek száma byte-ban. RAM Random Access Memory ROM Read-Only Memory Technológia MOS-FET Dinamikus memória 0000 : 00 0001 : B 7 0002 : 3 F 0003 : . . . A 1. . . FFFF : 00 Pld: 64 Kbyte
Mikroprocesszor belső felépítése Központi vezérlő egység Arithmetikai egység CPU fő elemei: • Vezérlő egység: • utasítás számláló (PC, IP), • utasítás regiszter (IR), • akkumulátor (ACC), • vezérlő jelek (órajel, IT, stb. ) • ALU: aritmetikai és logikai műveletek, feltétel vizsgálat • Regiszterek: általános célú, státusz, címzés: szegmens, index, stb. • belső busz, memória címregiszter, memória adatregiszter
BUSZ Meghajtó interface
A μ processzoros rendszer regiszter modellje (részlet) RAM térkép: Regisztertömb : 0200 : LDA /3 A/ 0201 : 0202 : A: 04 00 F: B: 00 C: 00 D: 00 E: 00 H: 00 L: 00 Addr L /00/ Addr H /20/ 0203 : Vezérlő/ Utasítás dekóder ADD /87/ 0204 : Addr L /00/ 0205 : Addr H /30/ 0206 : STA /32/ 0207 : LDA 0203 0202 0201 0200 PC : SP : Addr : /3 A/ 0208 : Addr H /40/ 2000 : . . . 20 Addr L /00/ További 2 db byte 00 3000 : 4000 : . . . 04 . . . 05 . . . -- . . . Regisztermodell: FFFF : - • A: Akkumulátor, • B, C, D, E, H általános célú regiszterek, Fontos !! • PC: utasítás számláló regiszter (IR), Az utasítás felhozatala után a PC a • SP: Stack pointer, soronkövetkező utasítás első byte-jára mutat. ………. .
A gépi kódú program Assembly nyelvű program: …………. . LDA 2000; ADD 3000; Fordítási folyamat gépi kódú program STA 4000; (compiler, linker) …………… Utasításkészlet • Adatmozgató utasítások • Arithmetikai / Logikai utasítások • Vezérlésátadó utasítások (feltétel nélküli és feltételes ugrás) • Szubrutinhívás • I/O utasítások • Különleges utasítások (IT vezérlése, NOP …. . )
1. Utasítás: Utasítás felhozatal: PC=0200 • Buszciklus MR, addr: 0200, data: 3 A • Buszciklus MR, addr: 0201, data: 00 • Buszciklus MR, addr: 0202, data: 20 Utasítás dekódolás [ A (2000) ] Végrehajtás: • Buszciklus MR, addr: 2000, data: 04 PC=0203, Akkumulátor: 04 RAM térkép: 0200 : LDA /3 A/ 0201 : Addr L /00/ 0202 : Addr H /20/ 0203 : ADD 1. utasítás /87/ 2. Utasítás: Utasítás felhozatal: PC=0203 • Buszciklus MR, addr: 0203, data: 87 • Buszciklus MR, addr: 0204, data: 00 • Buszciklus MR, addr: 0205, data: 30 Utasítás dekódolás [ A = A + (3000) ] Végrehajtás: • Buszciklus MR, addr: 3000, data: 05 • ALU A = A + 05 PC=0206, Akkumulátor: 09 0204 : Addr L /00/ 0205 : Addr H /30/ 3. Utasítás: Utasítás felhozatal: PC=0206 • Buszciklus MR, addr: 0206, data: 32 • Buszciklus MR, addr: 0207, data: 00 • Buszciklus MR, addr: 0208, data: 40 Utasítás dekódolás [ A --> (4000) ] Végrehajtás: • Buszciklus MW, addr: 4000, data: 09 PC=0209, Akkumulátor: 09 4000 : 0206 : STA /32/ 0207 : Addr L /00/ 0208 : Addr H /40/ 2000 : 3000 : FFFF : 2. utasítás . . . 04 . . . 05 . . . 09 . . . -- 3. utasítás
Az ugrás (feltétel nélküli ugrás) utasítás végrehajtása Program 025 A : kezdete 0280 : JMP 0281 : 00 0282 : 50 JUMP utasítás 1. Utasítás: Utasítás felhozatal: PC=0280 • Buszciklus MR, addr: 0280, data: „JUMP” • Buszciklus MR, addr: 0281, data: 00 • Buszciklus MR, addr: 0282, data: 50 PC=0283 Utasítás dekódolás [ PC 5000 ] Végrehajtás: • PC=5000 0283 : . Nem tároltuk azt az információt, hogy ‘honnan ugrottunk az új címre !! 5000 : LDA /3 A/ Addr L /00/ Addr H /20/ Program vége Feltételes ugró utasítás
A feltételes ugrás utasítás végrehajtása 027 F : S: Z: AC: P: CY: 00 0282 : 0 1 JIZ 0281 : F: „CMPA” 0280 : A FLAG (állapotjelző) szerepe: 50 0283 : S Z - AC - P - Előjel Zéró Kiegészítő átviteljelző Auxiliary Carry Flag Paritásjelző Átviteljelző Carry Flag Az utasításkészlet leírása meghatározza, hogy mely utasítások melyik FLAG-eket állítják. . CY 5000 : JIZ Utasítás: Utasítás felhozatal: PC=0280 • Buszciklus MR, addr: 0280, data: „JIZ” • Buszciklus MR, addr: 0281, data: 00 • Buszciklus MR, addr: 0282, data: 50 PC=0283 Utasítás dekódolás Ha igaz akkor [ PC < 5000 ] Végrehajtás: • Ha Z=1 PC=5000 • Ha Z=0 PC=0283 NEM VÁLTOZIK!
A STACK Stack kezelő utasítások: PUSH, POP Szükségessége az Elméleti Számítástudomány eredményeiből következik. A stack (verem) a memóriában helyezkedik el, mérete és helye (kezdőcíme) a programból meghatározható. 9000 : 9001: Példa: D 3 C: D 3 A stack kezdőcímét a programban értékadó utasítással állítjuk be. - 9004 : B: 9002 : 9003 F 7 9003 : SP : - - F 7 PUSH BC Végrehajtás előtt: SP=9003, B=D 3, C=F 7 SP=SP-1, B regiszter tartalmának beírása az op. tárba SP=SP-1, C regiszter tartalmának beírása az op. tárba Végrehajtás után: SP=9001, B=D 3, C=F 7, (9002)=D 3, (9001)=F 7
A Szubrutinhívó utasítás végrehajtása (CALL, RET utasítás pár) 025 A : Program • Paraméterátadás: pld: y=f(x) ->hol található x • Címkidolgozás: hol kezdődik az alprogram • Visszatérési lehetőség biztosítása >STACK kezdete 0280 : CALL 0281 : 00 0282 : 50 CALL 5000 0283 : . 5000 : Szubrutin kezdete Szubrutin 503 D : RET 503 E : Program vége CALL Utasítás: Utasítás felhozatal: PC=0280 • Buszciklus MR, addr: 0280, data: „CALL” • Buszciklus MR, addr: 0281, data: 00 • Buszciklus MR, addr: 0282, data: 50 PC=0283 Utasítás dekódolás Végrehajtás: • PC -> Stack (Push jellegű művelet) • PC=5000 RET Utasítás: Utasítás felhozatal: PC=503 D • Buszciklus MR, addr: 503 D, data: „RET” PC=503 E Utasítás dekódolás Végrehajtás: • PC <- Stack (Pop jellegű művelet), PC=0283
ZH !!! • Egy főprogramhoz több szubrutin is tartozhat. • Egy szubrutinon belül meghívhatunk egy másik szubrutint ? • Ebben az esetben STACK tartalma hogyan alakul ? • Elvileg végtelen számú szubrutin ágyazódhat egymásba ?
Az Interrupt (A Program megszakítása)_1 μ processzor IRQ 1 I/O Interface OPERATÍV TÁR . . . IT ok: A Folyamatban rendkívüli esemény történt, azonnal reagálni kell, el kell zárni a gázcsapot. IRQ 1: Interrupt request, (Megszakítás igény) jelentkezése. A BUS egyik Control vezetéke. IT Rutin 1: 1. IT ok 1 Érzékelők: Beavatkozók: Túlnyomas érzékelő Mágnesszelep …………. . IPARI FOLYAMAT Interrupt lekezelő rutin, amelynek haladéktalanul le kell futnia, az I/O interfacen lévő regiszter megfelelő bitjét 0 -ra állítva (az OUT-put rendszervói segítségével el kell zárnia a mágnes szelepet, majd vissza kell térni a főprogramba, oda ahol a megszakítás előtt a programvégrehajtás tartott.
Az Interrupt (A Program megszakítása)_2 • Szükségessége • Címkidolgozás: hol kezdődik az IT kezelő alprogram • Vezérlés: visszatérési lehetőség biztosítása >STACK • Egymásba ágyazódó IT-k • IT Prioritás rendszer kialakítása 025 A : Főprogram kezdete 0280 : LDA /3 A/ 0281 : Az IT jelentkezése: Előre nem tervezhető időpontban. ( A program futásához asszinkron. ) Végrehajtás lépései: • Az éppen végrehajtás alatt álló utasítást befejezni. • A PC ekkor a soron következő utasításra mutat. Ezt az értéket (op. tár címet elmenteni a STACK-be. • Címkidolgozás: • Vezérlés: • Visszatérés a főprogramba. Addr L /00/ 0282 : Főprogram Addr H /20/ 0283 : Főprogram. vége 5000 : IT Rutin 1 kezdete IT Rutin 1 503 D : 503 E : RETURN IT
Az Interrupt (A Program megszakítása)_3 (címkidolgozás, vezérlés) 0000 : IT UGRÁSI IT regiszter IT rutin 1 kezdőcíme PC=5000 00 TÁBLA Program IT vektor 42 PC Az IT ekkor jelentkezik, VEKTOR PC->STACK I/O Interface 1. IT Rutin 1 kezdete IT Rutin 1 PC<-STACK RETURN IT