Mikroprocesszorok és mikrokontrollerek Programozás és digitális technika ismétlés utolsó frissítés: 2016.VIII.26.

Slides:



Advertisements
Hasonló előadás
A számítógép felépítése
Advertisements

A mikroprocesszor 1. rész.
Az adatábrázolás, adattárolás módja a számítógépekben
Algoritmus és programozás
Racionális számok számítógépi ábrázolása
3. A programozás eszközei, programozás-technikai alapismeretek
Számítógépek felépítése 3. előadás CPU, utasítás ciklus, címzés
Programozás.
Turbo Pascal Változók.
Csernoch Mária Adatábrázolás Csernoch Mária
Csernoch Mária Adatábrázolás Csernoch Mária
A számítógéprendszer.
Alapfogalmak Adat: fogalmak, tények, jelenségek olyan formalizált ábrázolása, amely emberi vagy gépi értelmezésre, feldolgozásra, közlésre alkalmas. Információ:
Az operációs rendszerek
Az információ és kódolása Kovácsné Lakatos Szilvia
Fordítóprogramok FORD01 Programozó matematikus III. évf. Miskolci Egyetem 1 Fordítóprogramok 1 Programozó matematikus szak 2003/2004-es tanév II. félév.
PIC processzor és környezete
CISC - RISC processzor jellemzők
2 tárolós egyszerű logikai gép vázlata („feltételes elágazás”)
Szám - számrendszer 564,2 = 5* * * *10-1
Egy egyszerű gép vázlata
A mikrovezérlők világa
Egy harmadik generációs gép (az IBM 360) felépítése
Fixpontos, lebegőpontos
Címzési módok, utasítások a CPU-ban Címértelmezés műv. kódadat műv. kód 0 1 cím adat cím adat közvetlen (immediat) adatmegadás rejtett (inheritent),
A programozás alapjai A számítógép számára a feladat meghatá- rozását programozásnak nevezzük. Ha a processzor utasításait használjuk a feladat meghatározásához,
Programozási nyelvek Páll Boglárka.
Alapismeretek Számítógépes adatábrázolás
1.4. Fordítás, szerkesztés, az objektumkönyvtár használata.
Programozási nyelvek.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Adatábrázolás, kódrendszerek
Egy második generációs gép (az IBM 7094) felépítése
Egy első generációs gép (az IAS) felépítése
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Fixpontos, lebegőpontos
A központi egység Informatika alapjai Készítette: Senkeiné B. Judit.
Bináris szám-, karakter- és képábrázolás
Mikroprocesszor.
Software - Ismeretek Avagy mitől megy a Hardware.
BIOLÓGUS INFORMATIKA 2008 – 2009 (1. évfolyam/1.félév) 3. Előadás.
Mikroprocesszorok Működés.
IT ALAPFOGALMAK HARDVER.
HEFOP 3.3.1–P /1.0A projekt az Európai Unió társfinanszírozásával, az Európa terv keretében valósul meg. 1 Számítógép architektúrák dr. Kovács.
ifin811/ea1 C Programozás: Hardver alapok áttekintése
Számítógépek felépítése 4. előadás ALU megvalósítása, vezérlő egység
Számítógépek felépítése 2. előadás egyszerű gépek, adatábrázolás
PIC mikrokontroller.
Információ.
INFOÉRA 2006 Nagypontosságú aritmetika III.
1 A számítógépek felépítése jellemzői, működése. 2 A számítógép feladata Az adatok Bevitele Tárolása Feldolgozása Kivitele (eredmény megjelenítése)
kialakulása, fejlődése, generációk
Számítógépek és processzorok Elvek, felépítés, működés utolsó módosítás: 2016.VII.29.
Programok készítése és futtatása. Integrált fejlesztői környezet (IDE) tartalmaz:  szövegszerkesztőt a program forráskódjának szerkesztésére,  fordítóprogramot.
Az alaplap AZ ALAPLAPON TALÁLHATÓ A PROCESSZOR /CPU/, A MEMÓRIA, A VEZÉRLŐ KÁRTYÁK CSATLAKOZÓI ÉS A PERIFÉRIÁK CSATLAKOZÓI.
Operációs rendszerek Az operációs rendszerek működésének alapfogalmai.
Sz&p prof.
kialakulása, fejlődése, generációk
Adatstruktúrák Algoritmusok Objektumok
Programozási alapok.
Számábrázolás.
Az információ.
A Számítógépek felépítése, működési módjai
Egy egyszerű gép vázlata
A Számítógépek felépítése, működési módjai
Számítógép architektúrák
A számítógép működésének alapjai
Mikroprocesszorok és mikrokontrollerek
Fejlett pipeline megoldások IMSC 2019
Előadás másolata:

Mikroprocesszorok és mikrokontrollerek Programozás és digitális technika ismétlés utolsó frissítés: 2016.VIII.26.

Utasításkészlet

Utasításkészlet (instruction set): a processzor által „hardveresen” ismert utasítások halmaza Gépi kód (machine code): az utasításkészletben található utasítások sorozatából álló program, binárisan tárolva, gyakran hexadecimálisan megjelenítve. Ez a processzor által közvetlenül futtatható program.

Utasításkészlet Assembly: a legalacsonyabb szintű, processzorfüggő programozási nyelv. Lényegében a gépi utasításokhoz egy-egy könnyebben megjegyezhető szót rendelünk (mnemonic), ill. megkönnyítjük az adatábrázolást, behelyettesítéseket (tehát pl. a számadatokat írhatjuk decimálisban, a szöveges adatot ascii-ban, az ugrásoknál név szerint hivatkozhatunk a sorokra stb.).

Utasításkészlet Az eredetileg nem gépi kódban megírt programokat fordítóprogram (compiler) segítségével (régen kézzel!) alakítják gépi kódra. Magasabb szintű (pl. grafikus) nyelveknél ez akár több lépésben (közbenső nyelv használatával) is történhet. Kérdés: milyen nyelven írják a fordítót?

Utasításkészlet microcode: a processzoron belül kétszintű a program végrehajtása: a gépi kódú utasításokat még alacsonyabb szintű utasítások (microinstructions) sorozatára bontja kívülről nem látszik – még assembly szinten sem! a gépi kód így könnyebben változtatható a hardver módosítása nélkül; ill. hasonló processzortípusok gépi kódja is hasonló lehet, míg a microcode különbözik (kód hordozhatóság) akár más processzor emulációja is lehetséges könnyebb hardver (processzor) fejlesztés

Programozás, programozási nyelvek

Assembly (alacsonyszintű) Lényegében az utasításkészlet olvasható formája Nehéz és időigényes benne összetett műveleteket megvalósítani (de lehet előre megírt kódrészleteket felhasználni) Nehezen átlátható, megnő a hibázás valószínűsége, nehezebb megtalálni a hibát Kis, egyszerű programokhoz lehet előnyös, főleg mikrovezérlőkben Gyors ill. kisméretű, hardveroptimalizált kódot lehet készíteni Kihasználható a hardver összes tulajdonsága

Magasszintű nyelvek A magas szintű nyelvekben egyszerű utasításokkal lehet összetett feladatokat elvégezni. Könnyen, gyorsan fejleszthető, könnyebb a hibakeresés (*), átlátható *: kivéve ha a hiba megtalálásához hardver ill. gépi kódú ismeretek szükségesek

Magasszintű nyelvek Közepes szintű nyelvek: pl. C  csak vezérlő utasítások vannak, a többit külső függvénykönyvtárból kell meghívni, ezek sokfélék lehetnek (bár van standard library)  haladó szintű, könnyű elrontani a programot  pl. fordító vagy operációs rendszer készítésére (Unix)

Magasszintű nyelvek Magasabbszintű nyelvek: Basic, Pascal, Python, Perl, PHP,Ruby, C#, Java,... Könnyen megtanulható, programozható, átlátható Gyakran grafikus felület készítéséhez is segítséget adnak (Visual Basic/C, stb) Lefordított program potenciálisan nagyobb és/vagy lassabb, mint C vagy asm forrás esetén Gyakran nagy és erőforrás igényes futtató környezetet (runtime engine) igényelnek (ld.Net, Java) Kevesebb esély algoritmus hibára, több esély a runtime fordító/környezet/oprendszer környékén lévő hibára (?)

Hordozható forráskód (portable source): módosítás nélkül vagy kis módosítással más hardveren (alaplap, processzor stb) is lefordítható ehhez szükséges, hogy adott hardverre legyen kész fordítóprogram nagyon különböző hardvereken miért akarnám teljesen ugyanazt a programot futtatni? ld. win8 – tablet és PC...  másképpen: a program felhasználói oldalról lehet hasonló, míg a forrásoldalról különböző, figyelembe véve a hardver adottságokat... csak hát ugye az nem gazdaságos... Forráskód hordozhatósága

Olvashatóság „Read-only programming language”: könnyen olvasható, nehezen írható „Write only programming language”: könnyen írható, nehezen olvasható Na és van ez:

Programnyelvek értelmezése interpreted compiled  gépi kódra  bytecode vegyes (intermediate) ez még itt fejlesztendő!

Operációs rendszer

Utasításkészlet példák Intel 8085A utasításkészlet 8 bites adatbusz, 16 bites címbusz Néhány MHz órajel

8085 Utasítás fajták  aritmetikai művelet: add, subtract, increment  logikai művelet: and, or, xor, complement  bitművelet: rotate  adatmozgató utasítások: move, exchange  vezérlésátadás: jump, call, return  feltételes utasítások: jump on condition  egyéb: in, out, push, pop

8085 címzési módok példa mov r1,r2  1 byte, 1 gépi ciklus, r2  r1 mov r,M  1 byte, 2 gépi ciklus, (HL)  r  HL regiszterpár tartalmazza a memóriacímet mov M,r  1 byte, 2 gépi ciklus, r  (HL)  HL regiszterpár tartalmazza a memóriacímet mvi r, data  2 byte (kód+adat), 2 gépi ciklus, data  r mvi M,data  2 byte (kód+adat), 3 gépi ciklus, data  (HL) lxi rp,data  3 byte (kód+2byte adat), 3 gépi ciklus, data  rp (regiszterpár)

lda addr  3 byte (kód+2byte cím), 4 gépi ciklus, (addr)  A  akkumulátorba írja memóriacím tartalmát sta addr  3 byte, 4 gépi ciklus, A  (addr) lhdl addr  3 byte, 5 gépi ciklus, (addr)  HL  addr című memóriaszó (2B) HL regiszterpárba shld addr  3 byte, 5 gépi ciklus, HL  (addr) ldax rp  1 byte, 2 gépi ciklus, (rp)  A  BC vagy DE tartalmával címzett memóriarekeszt A-ba stax rp  1 byte, 2 gépi ciklus, A  (rp) xchg  1 byte, 1 gépi ciklus, HL DE  megcseréli regiszterpárok tartalmát 8085 címzési módok példa

Számábrázolás

Számrendszerek A számítógépek többsége binárisan tárolja és dolgozza fel az adatokat Felhasználói, programozói felületen többnyire decimális és hexadecimális ábrázolást használnak

Számrendszerek Decimális-bináris konverzió: Sorra osztom kettővel, maradékokat alulról felfelé kiolvasom (nb. legalsó számjegy mindig 1 !) Visszafele: kettő hatványaival beszorzom és összeadok

Számrendszerek Hexadecimális (16-os) rendszer: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F számjegyek Egy számjegy (digit) 4 bitre fordítható le, így pl. 8bites szám mindig két hexa számjegy: h 3A=b

Egész számábrázolás Előjel nélküli egész (unsigned integer (int)) Előjeles egész (signed integer)  előjelbites  kettes komplemens (two’s complement)  eltolt (offset binary, excess-K)

Kettes komplemens invertáld és adj hozzá egyet nincs +0 és -0 kivonáshoz össze kell adni nehezebb az összehasonlítás (negatív számok nagyobbak a pozitívaknál) 8 biten: első bit 1: negatív, 0: pozitív vagy nulla

Eltolt egész ábrázolás Számhoz hozzáadunk 2^(n-1) azaz tartomány első fele negatív, felénél van a nulla, felső fele pozitív ua. mint kettes komplemens, csak első bit invertálva összehasonlítás könnyebb

Törtszámok ábrázolása Fixpontos (fixed point) Lebegőpontos (floating point) Hányados, hagyományos tört (fraction)

Fixpontos számábrázolás (fixed point) lényegében egész számként tároljuk (pl. ha nincs FPU) n bit: teljes hossz a törtszám értéke: m: a tárolt „egész” szám f darab kettedes számjegy (törtrész)

Lebegőpontos számábrázolás (floating point) s: előjel b: alap (2) c: értékes jegyek q: kitevő (2-es komplemens vagy eltolt)

IEEE745 (floating point) első értékes jegy mindig 1 -> nem kell eltárolni, így pl. 24b értékesből 23-at tárolunk, a maradékot felhasználjuk előjelnek speciális értékek: +0, -0, +inf, -inf, NaN, subnormal NaN: exp csupa 1, maradék nem 0 inf: exp csupa 1, maradék 0

IEEE745 (floating point) Single precision: 32b (24+8) kb.6..7 decimális jegy pontosság kitevő tárolása: hozzáadunk 127-et, így ig lehet (offset binary) max: (2−2 −23 ) × ≈ × Double precision 64b (53+11) kb. 16 decimális jegy pontosság

Egyéb

Párhuzamos feldolgozás Jelmagyarázat: „Parallel portion”: hány százaléka a kódnak párhuzamosítható Függ. tengely: hányszorosára gyorsítható fel a program futása ideális esetben

Speciális rendszerek OISC: one instruction set computer Transport trigger architecture: különböző regiszterekbe (ugráshoz PC-be) küld mov utasítással, mindegyik más műveletet végez -> MAXQ mikrokontroller Arithmetic: eg. SBNZ a,b,c,d c=a-b és ha c=0 ugorj d-re

Vektor processzorok