23
Výpočetní systémy Základní pojmy - 1bit - 1 slabika = 1B = 8 bitů - 1 slovo = word = několik slabik (2,4,8) typicky 4 - 1 KB = 2 10 slabik = 1024 B - 1 MB = 2 20 = 1 048 576 B - 1 GB = 2 30 = 1 073 741 824 B - 4 GB = 2 32 - dál pak TB (tera), PB (peta), EB (exa), ZB (zetta), YB (yotta) Von Neumann - z hlediska VS - paměť, ALJ, řadič, V/V zařízení - vše je binárně - paměti mají své adresy - ke změně pořadí instrukcí slouží podmíněné a nepodmíněné skoky - zpracování dat je samočinné Číselné soustavy - polyadické o zhuštěný zápis 123 = 1*10 2 + 2*10 1 + 3*10 0 (rozvinutý zápis) - zbytkových tříd Převody mezi polyadickými soustavami - převod z 10 do 2 o celé čísla - dělení dvěma zapisuju zbytky pod sebe poté obráceně přepíšu (slide 18) o desetinné čísla – násobení dvěma … např. 0.2 => 0.4 => 0.8 => 1.6 (0.6*2) => 1.2 (0.2*2) => 0.4 => 0.8 (zacyklilo se) proto bude výsledek 0.0011 periodických - převod z 2 do 10 o 10.01 = 1*2 1 +1*2 -2 = 2,25 Zobrazení čísla v binárním tvaru 1) Přímý kód - se znaménkovým, bez znaménkového bitu, problém dvou nul 2) Inverzní - inverze všech bitů, problém dvou nul zůstává 3) Doplňkový kód - inverze bitů, přičtení 1, odstraněn problém dvou nul, nesymetrický rozsah - se znaménkovým bitem se počítá jako s kterýmkoliv jiným - přenos ze znaménkového bitu se ignoruje - převod zpět => inverze bitů +1 Aritmetika - základní operace – sčítání Součet v doplňkovém kódu - všechny bity se sčítají stejně - vznikne-li přenos ze znaménkového bitu tak jej ignorujeme - přetečení rozsah = přenos ze znaménkového bitu <> přenos na znaménkový bit Součet v inverzním kódu - problém dvou nul - nutnost provádět tzv. kruhový přenos (přičtení přenosu ze znaménkového řádu zpátky k výsledku) tím se řeší problém dvou nul BCD kód (Binary Coded Decimal) - každá desítková číslice je zapsána ve 4 bitech - rychlý převod, horší počítání s čísly o rozvinutý – nepoužívá se k výpočtům 71346 10 = F7F1F3F4C6 16 => C označuje kladné čísla -71346 10 = F7F1F3F4D6 16 => D označuje záporné čísla o zhuštěný zápis – zapisuje se pouze znaménková zóna 71346 10 = 71346C 16 Vnější kódy - pro zobrazování znaků

Výpočetní systémy - fi.muny.czfi.muny.cz/data/PB151/PB151_Zapisky.doc · Web viewVýpočetní systémy Základní pojmy 1bit 1 slabika = 1B = 8 bitů 1 slovo = word = několik

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Výpočetní systémy - fi.muny.czfi.muny.cz/data/PB151/PB151_Zapisky.doc · Web viewVýpočetní systémy Základní pojmy 1bit 1 slabika = 1B = 8 bitů 1 slovo = word = několik

Výpočetní systémyZákladní pojmy

- 1bit- 1 slabika = 1B = 8 bitů- 1 slovo = word = několik slabik (2,4,8) typicky 4- 1 KB = 210 slabik = 1024 B- 1 MB = 220 = 1 048 576 B- 1 GB = 230 = 1 073 741 824 B- 4 GB = 232

- dál pak TB (tera), PB (peta), EB (exa), ZB (zetta), YB (yotta)Von Neumann

- z hlediska VS- paměť, ALJ, řadič, V/V zařízení- vše je binárně- paměti mají své adresy- ke změně pořadí instrukcí slouží podmíněné a nepodmíněné skoky- zpracování dat je samočinné

Číselné soustavy- polyadické

o zhuštěný zápis 123 = 1*102 + 2*101 + 3*100 (rozvinutý zápis)- zbytkových tříd

Převody mezi polyadickými soustavami- převod z 10 do 2

o celé čísla - dělení dvěma zapisuju zbytky pod sebe poté obráceně přepíšu (slide 18)o desetinné čísla – násobení dvěma … např. 0.2 => 0.4 => 0.8 => 1.6 (0.6*2) => 1.2 (0.2*2) => 0.4 => 0.8 (zacyklilo

se) proto bude výsledek 0.0011 periodických- převod z 2 do 10

o 10.01 = 1*21+1*2-2 = 2,25Zobrazení čísla v binárním tvaru

1) Přímý kód- se znaménkovým, bez znaménkového bitu, problém dvou nul2) Inverzní- inverze všech bitů, problém dvou nul zůstává3) Doplňkový kód- inverze bitů, přičtení 1, odstraněn problém dvou nul, nesymetrický rozsah- se znaménkovým bitem se počítá jako s kterýmkoliv jiným- přenos ze znaménkového bitu se ignoruje- převod zpět => inverze bitů +1

Aritmetika- základní operace – sčítání

Součet v doplňkovém kódu- všechny bity se sčítají stejně - vznikne-li přenos ze znaménkového bitu tak jej ignorujeme- přetečení rozsah = přenos ze znaménkového bitu <> přenos na znaménkový bit

Součet v inverzním kódu- problém dvou nul- nutnost provádět tzv. kruhový přenos (přičtení přenosu ze znaménkového řádu zpátky k výsledku) tím se řeší problém dvou

nulBCD kód (Binary Coded Decimal)

- každá desítková číslice je zapsána ve 4 bitech- rychlý převod, horší počítání s čísly

o rozvinutý – nepoužívá se k výpočtům 7134610 = F7F1F3F4C616 => C označuje kladné čísla -7134610 = F7F1F3F4D616 => D označuje záporné čísla

o zhuštěný zápis – zapisuje se pouze znaménková zóna 7134610 = 71346C16

Vnější kódy- pro zobrazování znaků- každý znak má svou hodnotu

ASCII – ISO-7- první systém pro zapisování znaků- zápis znaků na 7 bitech- na začátku 32 znaků řídících pro tiskárny- zbytek pro znaky- 10 Line Fide – posun o žádek- 13 Carriage return – vrácení vozíku- 27 Escape - za tímto znakem následuje netisknutelný povel pro tiskárnu

ISO-8859-2 = ISO-LATIN-2- používané v UNIX systémech

Page 2: Výpočetní systémy - fi.muny.czfi.muny.cz/data/PB151/PB151_Zapisky.doc · Web viewVýpočetní systémy Základní pojmy 1bit 1 slabika = 1B = 8 bitů 1 slovo = word = několik

Windows-1250- 1 bajtový systém ve Windows

UNICODE- vícebajtové kódování (UTF-8, UTF-16, UTF-32)

UTF-8- Nejpoužívanější- Pokud je znak v UTF-7 stačí pro zápis 1 bajt- České znaky jsou vždy ve 2 bajtech

Převod do UNICODE- například písmeno ř

=> znak ř je v UNICODE zapsán jako U+0159Little a Big encián

- big – bajt nejvyššího řádu je uložen na nejnižší adrese 123456- little – bajt nejvyššího řádu je uložen na nejvyšší adrese 563412- modele – bajty jsou uloženy v pořadí 3,4,2,1 nebo 2,1,4,3

Detekční kódy- zavedena nadbytečnost

Parita- sudá, lichá (základní detekční kód)- doplnění jednoho bitu podle lichého (sudého) počtu 1

Kód 2 z 5ti- vždy právě 2 bity z 5ti jsou 1- díky tomu lze provést kontrolu a ošetřit i více chyb

Opravné kódyZtrojení

- jeden bit je zapsán na 3 bitech – platné jsou pouze 111, 000Hamingova kódová vzdálenost

- počet bitů, v nichž se liší dvě sousední platné kódové kombinace- d = 1 => detekce 0, oprava 0- d = 2 => detekce 1, oprava 0- d = 3 => detekce 2, oprava 1- d = 4 => detekce 3, oprava 1- d = 5 => detekce 4, oprava 2

Boolova algebra- základní operace AND, OR, NOT

Způsoby popisů- Pravdivostní tabulka- Matematický- Vennovy diagramy

Úpravy Boolovy algebry- Matematickými výrazy- Využitím jednotkové krychle- Karnaughova mapa – normalizace Vennova diagramu

Využití Booleho- Spínací kontakt- Rozpínací kontakt

Page 3: Výpočetní systémy - fi.muny.czfi.muny.cz/data/PB151/PB151_Zapisky.doc · Web viewVýpočetní systémy Základní pojmy 1bit 1 slabika = 1B = 8 bitů 1 slovo = word = několik

- Přepínací kontaktZapojení kontaktů

- Sériové- Paralelní- Sérioparalelní- Můstkové

Úprava Boolových výrazů- Matematickými vzorci- Využití jednotkové krychle- Karnaquova mapa (viz. druhák s pedrem)

Sheffrova algebra- vybudována na jedné logické funkci – NAND- lze pomocí ní realizovat všechny Boolovy algebry (hmm)

Piercova algebra- vystavěna na logické funkci NOR- Morganovy pravidla – pro převod do minimalizované formy

Signály- Hladinové (hladina napětí)- Impulsové (přítomnost/nepřítomnost pulsu)

- existuje hodnota 1 (high),0 (low) a zakázané pásmo (místo kde není definována ani jedna hodnota)Technologie TTL

- tranzistor NPN- napájení 5V- low 0,4 – 0,8V- high 2 – 2,4V

Kombinační logické obvody- Ivnentor – invertuje hodnotu- AND – logický součin (konjunkce)- OR – logický součet (disjunkce)- NAND – negace logického součinu- NOR – negace logického součtu- XOR – nonekvivalence (pokud jsou rozdílné tak 1)- NOXOR – ekvivalence (negace XORu)

Logické obvody- Multiplexor – 4 datové vstupy, dva výstupy, podle adresy na vstupu se přiřadí hodnoty adresy na výstupu- Dekodér – dva vstupy, podle hodnot na vstupu se odešle hodnota 1 do jednoho ze 4 výstupů

SčítačkySčítačka MODULO

- má dva vstupy a jeden výstup ve kterém jsou sečteny vstupyPolosčítačka

- dva vstupy, dva výstupy, jeden součet a druhý přenos do vyššího řáduÚplná sčítačka

- tři vstupy (dvě čísla, přenos do vyššího řádu), dva výstupy (součet a přenos do vyššího řádu)Vícemístná sčítačka

- více úplných sčítaček zapojených za sebou, nepoužívá seSekvenční logické obvody, klopný obvod RS

- podobný jako logické členy, pouze s tím že obsahuje zpětnou vazbuKlopný obvod RS

- základní paměťový člen!!!!!!!!!!- R – RESET (nulování), S – SET (nastavení)- RS řízený nulami (nesmí nastat RS 00), jedničkami (nesmí nastat RS 11)- klopný obvod může být řízen – hladinou nebo impulsem

Klopný obvod D (delay)- jednobitová paměť- datový a řídící vstup (impuls pokud chceme překlopit hodnotu)- pokud není impuls tak si paměť drží svůj stav- realizace - pomocí klopného obvodu RS se zapojením negace

Klopný obvod JK- podobný RS obvodu, pouze nemá zakázaný stav- v případě „zakázaného stavu“ se hodnota obvodu invertuje

Přenos informací v systému- sériový – za sebou, musí se dohodnout přenosová rychlost (jak dlouho bude trvat přenos jednoho bitu), synchronní přenos

(společný zdroj taktu), asynchronní (vysílající si sám určuje kde chce vyslat data)- paralelní – používá se uvnitř počítače (sběrnice), většinou s využitím paralelních registrů (zapojení 1 bit pamětí při přenosu dat)

Typické sekvenční obvody v PCSčítačka v BCD kódu

- umožňuje sečíst čísla zapsané v BCD kódu- sestavuje se za pomocí klasické sčítačky a transformační sčítačky- transformační sčítačka

o dokud vychází 1 ciferné čísla tak nemusím provést nic

Page 4: Výpočetní systémy - fi.muny.czfi.muny.cz/data/PB151/PB151_Zapisky.doc · Web viewVýpočetní systémy Základní pojmy 1bit 1 slabika = 1B = 8 bitů 1 slovo = word = několik

o jakmile více ciferné tak musím opět zapsat každou číslici zvlášť do BCD kóduo 2 ciferné například 12 = 11002 = 1!0010BCD … vlastní postup k číslu v BCD kódu přičtu 6 (1100+0110=10010)o přičítám 6 pokud je přenos == 1 nebo pokud jsou dva nejvyšší bity == 1 a nebo je nejvyšší (S3) a třetí nejvyšší

člen (S1) == 1

1 2 7 9   5 4 3 BCD součet

1 7 B C   +     6 korekce jednotek

1 7 C 2       6   korekce desítek 1 8 2 2 + 0 stovky, tisíce bez korekce 1 8 2 2 výsledekSériová sčítačka

- sčítá dva sčítance, jaký výstup je hodnota a přenos do vyššího řádu (sčítačka) kde se přenos z vyššího řádu předává znovu na vlez

- celý tento systém musí být synchronizovaný jinak by to dělalo <>viny- zapojení pouze jedné úplné sčítačky a klopného obvodu D- provede se výpočet, odebere součet a přenos do vyššího řádu se na chvíli zapamatuje v obvodu D a poté spolu s dalšími čísly

sečteParalelní registr = střádač

- střádač – registr do kterého se postupně „střádá“ výsledek výpočtu, například při sčítání řady číselSériový registr = posuvný registr

- používá se jako převod sériového přenosu na paralelní- do tohoto registru se vloží hodnoty (např. 4 bity) a po zaplnění těchto 4 bitů se naráz ze všech výstupů odeberou data- realizovaný pomocí klopného obvodu D-KO- jedním taktem se posunou „hodnoty“ vždy o jednu pozici

Čítač- na vstupu hodinové impulsy- při přivedení sestupné hraně (při přechodu 1=>0) impulsu obvod otevírá a přičítá hodnotu - hodnoty se skládají z každého švába, první šváb má nejvyšší hodnotu

Násobičky- sekvenční násobení (bez znaménka) – provedení pomocí opakovaného sčítání- násobenec se střádá do střádače přitom je v čítači počítán počet provedení

Rotace bitů- doleva- doprava- informace se neztrácí, bity pouze rotují ve směru

Logický posun (logical shift)- dochází ke ztrátě bitů, do uvolněných bitů se vkládá 0- doleva – na konec je vložena 0, první bit se ztrácí- doprava – na začátek je vložena 0, poslední bit se ztrácíAritmetický posun- stejný jako logický posun, pouze zachovává znaménkový bit- doleva – znaménkový bit se nemění, v podstatě dochází k násobení 2, na prázdné místo se dosazuje 0- doprava – znaménkový bit se kopíruje do nižšího řádu, v podstatě dochází k dělení 2, na prázdné místo se kopíruje znaménkový bitBlok operační jednotkyObsahuje:- sčítačka- násobička- dělička- logické operace- posuvy a rotace- komparátor (porovnávání) - realizován pomocí logický součinů

PamětiDruhy:- vnější (HDD)- vnitřní (RAM)- registry

Důležité parametry:- vybavovací doba (čas přístupu do paměti)- rychlost toku dat (počet přenesených bitů za sekundu)- kapacita- cena za bit- přístup – přímý, sekvenční- destruktivnost při čtení (přečtením přicházím o hodnotu)- energetická závislost

Page 5: Výpočetní systémy - fi.muny.czfi.muny.cz/data/PB151/PB151_Zapisky.doc · Web viewVýpočetní systémy Základní pojmy 1bit 1 slabika = 1B = 8 bitů 1 slovo = word = několik

- statická, dynamická (dynamická paměť udrží svou paměť pouze určitou dobu (např. kondenzátor), musí se obnovovat, refreshovat)- spolehlivost – poruchovost (v hodinách, v bitech)Pojmy:- DIMM (Double Inline Memory Module) – oboustranný modul, piny na obou stranách paměťového čipu, opakem je starší SIMM

(Single …)- DRAM (Dynamic Random Access Memory) – dynamická pamět, refreshování- SDRAM (Synchronous DRAM) – synchronizace taktu paměti se sběrnicí- DDR (Double data rate) – data čtena jak na vzestupné tak na sestupné hraně signálu- ECC (Error checking and correction) – nalezení a oprava chyby při čtení- CL (Column Latency) – poměr mezi vnitřním a vnějším časováním paměti- Registered – v paměti navíc registry, používané na serverechVnitřní paměť- adresový a datový registr a vlastní paměťová buňka- adresace – řádky a sloupceFeritové paměti- archaický typ- destruktivní čtení – po čtení bylo nutné zápis obnovitPermanentní paměti- ROM – dioda (nebo jiný polovodičový prvek)- PROM – dioda + tavná pojistka (NiCr) pokud chceme 0 tak se tavná pojistka přepálí, sloupec na kterém je buňka kterou chceme

přepálit uzemníme a na řádek ve kterém je buňka pustíme „vypalovací impuls“- EPROM – mazání UV lampou, paměť má přelepku, pokud chceme mazat, přelepku odlepíme a přes průhled tam pustíme UV, zápis

elektronicky- EEPROM – mazání proudem (RMM – Read Mostly Memory)Asociativní paměť- paměti typu CAM- neadresuje se číslem ale klíčem- paměť obsahuje paměť klíčů ke které jsou přiřazeny jednotlivé obsahy buněk (obsahy ke klíči)- paměť je poté dotazována do paměti klíčů kde obsahuje daný klíč- velká rychlost vyhledávání v paměti za pomocí obvodové logiky

Procesor- CISC (kompletní instrukční sada)- RISC – redukovaná instrukční sada, neprogramuje se již v assembleru, bylo by to složité- Strojový cyklus – čas potřebný k zápisu (čtení) slova z paměti- Instrukční cyklus – čas potřebný pro výběr a provedení instrukce- instrukce se skládá z microinstrukcí (příkazy nutné pro provedení instrukce)- instrukce – operační kód (znak) a operandy (data)Fáze procesoru- výběr operačního kódu z paměti- výběr operandu z paměti (adresy operandu z paměti)- provedení instrukce- přerušeníVýběr instrukce- čítač instrukcí (adres instrukcí)- PC (program counter)- IP (instruction pointer)- po provedení instrukce se posunuje adresa o délku instrukce => jde se na další instrukci v pořadíPočítač pro přednášky- pracuje ve dvojkovém doplňkovém kódu- registr A – střádač (Acumulator), 8bitů- registr PC – čítač instrukcí – 16bitů (Program Counter)- paměť 64 KB- adresovatelná jednotka – slabika – 8 bitůProcesor 8080- 8bitovýZapojení- A0 – A15 – bity na data- D0 – D7 – bity pro adresaci- Napájení 12V- Napájení 5V- Napájení SV- GND- O1, O2 – impuls vnějších hodin (taktování)- WR – řízení zápisu do pamětiInstrukceLDA (Load a Direct)- naplní registr A obsahem slabiky z paměti- obsahuje operační znak (3Ah) a 16bitová adresa paměti rozdělené na dvě 8bitové (nižší a vyšší adresa slabiky)

STA (Store a Direct)

Page 6: Výpočetní systémy - fi.muny.czfi.muny.cz/data/PB151/PB151_Zapisky.doc · Web viewVýpočetní systémy Základní pojmy 1bit 1 slabika = 1B = 8 bitů 1 slovo = word = několik

- uloží registr A do paměti- obsahuje operační znak (32h) a opět 16bitovou adresu (podobně jako LDA)JMP (Jump Unconditional)- nepodmíněný skok na adresu- obsahuje operační znak (0DAh) a 16bitovou adresuPříklady X:=Y- obsah pamětí před provedením (100h – X, 101h – Y)- LDA 101h – načte Y do registru- STA 100h – uloží obsah registru do XInterní registryIR (Instruction registr)- instrukční registr (8 bitů)- napojen na řadič, z paměti se vezme operační znak a vloží se do operačního registru, tím začne výpočetní procesDR (Data registr)- datový registr (8 bitů)- registr na sběrnici napojen na operační paměť- registr pro čtení/zápis z/do paměti- pokud chci uložit nebo přečíst do paměti tak zapisuji (čtu) přes tento registrAR (Adress registr)- adresový registr (8bitů)- adresa pro čtení/zápis do pamětiTA (Temporary Adress)- skládá se ze dvou 8bitových registrů =>16 bitový registr- 8 bitů TA high + 8bitů TA low = TAFáze instrukce LDA- 200 -> PC (počáteční nastavení registru PC)- PC -> AR, 0 -> WR, DR -> IR – výběr operačního znaku … registr PC do registru adres, čtení WR, přečtené data v datovém registru

do instrukčního registru => zahájení instrukce- PC+1 -> AR, 0 -> WR, DR -> TAl – výběr operandu … pc+1 (adresa operandu) do adresového registru, čtení WR, přečtené data do

TA- PC+2 -> AR, 0 -> WR, DR -> TAh – výběr operandu … druhá část- TA -> AR, 0 -> WR – dokončení výběru operandu … přečtené dvě části TA do adresového registru, čtení WR- DR -> A – provedení operace, obsah přečtených dat do registru A (střádač)- PC + 3 -> PC – posunutí registru PC na další instrukciFáze instrukce STA- 200 -> PC – počáteční nastavení registru PC- PC -> AR, 0 -> WR, DR –>IR – výběr operačního znaku (jako u LDA)- PC+1 -> AR, 0 -> WR, DR -> TAl – viz. LDA- PC+2 -> AR, 0 -> WR, DR -> TAh – viz. LDA- A -> DR – provedení operace, obsah ze střádače uložen do datového registru- TA -> AR, 1 -> WR – adresový registr nastaven na TA (adresa operandů), zápis WR- PC + 3 -> PC – posunutí registru PC na další instrukci

Fáze instrukce JMP- PC -> AR, 0 -> WR, DR -> IR – výběr operačního znaku- PC+1 -> AR, 0 -> WR, DR -> TAl – viz. LDA- PC+2 -> AR, 0 -> WR, DR -> TAh – viz. LDA- TA -> PC – vlastní provedení skoku (skočí se na adresu TA tj parametr JMP)WR – na procesoru

- 0 -> WR – čtení z paměti- 1 -> WR – zápis do paměti

Další registry- B, C, D, E, H, L – 8bitovéDalší instrukceMOV- přesunutí mezi registry- MOV R1, R2 (r1, r2 je libovolný z registrů A, B, C, D, E, H, L)- Kódování – vše v 1 slabice, kombinace registrů pro přesun je již v operačním znaku- fáze MOV

o PC -> AR, 0 -> WR, DR -> IR – výběr operačního znakuo R1 -> R2 – provedení operaceo PC+1 -> PC – posun na další instrukci

INR (increment register)- increment, zvýšení +1- fáze INR

o PC -> AR, 0 -> WR, DR -> IR – výběr operačního znakuo R + 1 -> R – provedení navýšenío PC + 1 -> PC – posun na další instrukci

ADD (Add register to A)- přičtení k registru A- fáze ADD

o PC -> AR, 0 -> WR, DR -> IR – výběr operačního znakuo A + R -> A – navýšení A o hodnotu R

Page 7: Výpočetní systémy - fi.muny.czfi.muny.cz/data/PB151/PB151_Zapisky.doc · Web viewVýpočetní systémy Základní pojmy 1bit 1 slabika = 1B = 8 bitů 1 slovo = word = několik

o PC + 1 -> PC – další instrukceCMA (komplement A)- inverze všech bitů- fáze CMA

o PC -> AR, 0 -> WR, DR -> IR – výběr operačního znakuo /A-> A – inverzeo PC + 1 -> PC – další instrukce

Příznakový registr F- v něm jsou uloženy jednotlivé příznaky- Z (ZERO) – příznak nulovosti, 1 při nulovém výsledku- S (Sign) – kopie znaménkového bitu výsledku operace (příznak zápornosti)- CY (Carry) – kopie bitu přenášeného z nejvyššího řádu výsledku operace (to co nám přeteklo)- P (Parity) – příznak parity, 1 pokud je parita sudá, 0 při liché- AC (Auxillary carry) – doplňující přenos mezi 3 a 4 bitem (v polovině bajtu) (Příznak se používá při BCD v aritmetice a to při přenosu

z 3. do 4. bitu.)Příznaky- nastavují instrukce – INR, ADD, CMA- nenastavují – LDA, STA, JMP, MOVCMP r (Compare with A)

- nastavení příznaků- fáze CMP

o PC -> AR, 0 -> WR, DR -> IR – výběr operačního znakuo A – r – nastavení příznaků (příznaky se nastaví i když není výsledek nikam uložen)o PC + 1 => PC – další instrukce

Podmíněný skok- skok podle příznaku v příznakovém registru F- vzor instrukce: JPodmínka adresa- příklad jak by to mohlo vypadat

o PC -> AR, 0 -> WR, DR -> IRo If podmínka then

PC+1 -> AR, 0 -> WR, DR -> TAl PC+2 -> AR, 0 -> WR, DR -> TAh TA -> PC

o Else PC+3 => PC

o Fi- Instrukce podmíněného skoku

o JC … CY = 1o JNC … CY = 0o JZ …. Z = 1o JNZ … Z = 0o JP …. S = 0o JM …. S = 1

- Příkladyo X … 100ho Y … 101h

X:= X+Y LDA 100h … do registru A se načte X MOV B,A … obsah registru A se dá do registru B LDA 101h … do registru A se načte Y ADD B … k registru a se přičte registr B STA 100h … obsah registru A se uloží do X

X:= X-Y LDA 100h … načte do A X MOV B, A … do B za A LDA 101h … načte do A Y CMA … inverze registru A (umíme jen sčítat, odečítání = přičítání opačné hodnoty) INR A … přičtení 1 k A (doplňkový kód) ADD B … přičtení (odečtení) STA 100h … uložení

If X=Y then ANO else NE; LDA 100h … načte X MOV B,A … přesune registr A do B LDA 101h … načte Y CMP B … porovná B s registrem A (nastavení příznaků) JZ ANO … podmíněný skok pokud příznak Z (zero) je 1 => pokud X = Y tak jejich rozdíl bude

0 => Zero 1 NE: ….. JMP VEN ANO: ….. VEN: ….

If X<Y then ANO else NE; LDA 101h … načtení Y MOV B,A … přesun A do B

Page 8: Výpočetní systémy - fi.muny.czfi.muny.cz/data/PB151/PB151_Zapisky.doc · Web viewVýpočetní systémy Základní pojmy 1bit 1 slabika = 1B = 8 bitů 1 slovo = word = několik

LDA 100h … načtení X CMP B … porovnání A-B (Y-X) a nastavení příznaků JM ANO … podmíněný skok pokud S = 1 => pokud příznak zápornosti je 1 NE: …. JMP Ven ANO: …. VEN: ….

If X<=Y then ANO else NE; LDA 100h … načtení X do A MOV B,A … přenesení A do B LDA 101h … načtení Y do A CMP B … porování B-A (Y-X) JP ANO … podmíněný skok pokud S = 0 NE: … JMP VEN ANO: … VEN: …

If I>=X do BLOK; Navíc proměnná 102h i OPAKUJ: … blok opakuj

o LDA 100h … načtení Xo MOV B,A … přesun do Bo LDA 102h … načtení io CMP B … porovnání i-Xo JP BLOK … pokud S=0 tak skoč na BLOKo JMP KONEC … nepodmíněný skok na konec

BLOK: … JMP OPAKUJ KONEC: …

For i:=1 to X do Blok; 0FFh: 1 100h: X 102h: i LDA 0FFh … načte 1 STA 102h … uloží do i:=1 CYKLUS:

o MOV B,A … do registru B přesune A (i)o LDA 100h … načte X do Ao CMP B … porovná A-B (X-i)o JM KONEC … pokud S=1 tak skoč na konec

BLOK:….. … příkazy bloku LDA 102h … do registru A přiřaď i INR A … zvetši registr A o 1 STA 102h … registr A ulož do i JMP CYKLUS… KONEC…

Zásobník- struktura typu LIFO – last in, first out- může být umístěn kdekoliv v paměti- zásobník má dno (BOTTOM) a vrchol- zásobník charakterizují dvě operace PUSH (uložení do), POP (vybrání z)- přidává se i bere na vrchol zásobníku- na vrchol zásobníku ukazuje registr SP (Stach Pointer)- zásobník roste od vyšších adres k nižším, data naopak

Registr SP (Stach Pointer)- ukazuje na vrchol zásobníku- je 16ti bitový- plní se instrukcí LXISPInstrukce LXISP (Load Immadiate)- instrukce vezme zadanou hodnotu a uloží ji do registru- fáze instrukce

o PC -> AR, 0 -> WR, DR -> IR … vybrání operačního znakuo PC+1 -> AR, 0 -> WR, DR -> TAlo PC+2 -> AR, 0 -> WR, DR -> TAho TA -> SPo PC + 3 -> PC

Instrukce PUSH- uložení do zásobníku- PSW – Procesor Status Word registr obsahující příznaky- FI (Flags, příznaky uspořádané do registru)- fáze instrukce (194 ??????)

o PC -> AR, 0 -> WR, DR -> IR … výběr operačního znakuo SP-1 -> AR, B D H A -> DR, 1 -> WR… zapsánío SP -2 -> AR, C E L FI-> DR, 1 -> WR … zapsánío SP-2 -> SP … zvýšení (snížení) hodnoty ukazatele SPo PC + 1 -> PC … další instrukce

Page 9: Výpočetní systémy - fi.muny.czfi.muny.cz/data/PB151/PB151_Zapisky.doc · Web viewVýpočetní systémy Základní pojmy 1bit 1 slabika = 1B = 8 bitů 1 slovo = word = několik

Instrukce POP- načtení ze zásobníku- fáze instrukce

o PC -> AR, 0 -> WR, DR -> IR … výběr operačního znakuo SP -> AR, 0 -> WR, DR -> C E L FI… čtenío SP +1 -> AR, 0 -> WR, DR -> B D H A … čtenío SP+2 -> SP … zvýšení (snížení) hodnoty ukazatele SPo PC + 1 -> PC … další instrukce

- pozor zásobník v 8080 nemá žádnou kontrolu podtečeníZásobník a volání podprogramu- CALL adresa – zavolá program- RET – nepodmíněný skok zpátky za instrukci CALL- Instrukce CALL

o PC -> AR, 0 -> WR, DR -> IR … operační znako PC + 3 -> TAo SP – 1 -> AR, TAh -> DR, 1 -> WR … zápiso SP – 2 -> AR, TAl -> DR, 1 -> WR … zápiso SP – 2 -> SPo PC + 1, AR, 0 -> WR, DR -> TAlo PC + 2, AR, 0 -> WR, DR -> TAho TA -> PC

- instrukce RETo PC -> AR, 0 -> WR, DR -> IR … operační znako SP -> AR, 0 -> WR, DR -> TAl … o SP + 1 -> AR, 0 -> WR, DR -> TAh … o SP + 2 -> SPo TA -> PC

Instrukce nepřímého- Zavoláme instrukci LDAX s parametrem 100h, na adrese 100h však je další adresa (tentokrát třeba 200h) => musíme přečíst ještě

adresu 200h kde je hodnota => LDAX je čti podle adresy 100h- LDAX, STAX, JMPX- Nový registr TAX = TAXl + TAXh- volání funkce ukládalo návratovou adresu na nejvyšší adresu- JMPX – instrukce nepodmíněného skoku nepřímo (nelze použít JMP protože by procesor hledal na návratové adrese instrukci my tam

ale máme adresu), JMPX 200h říká skoč podle adresy 200h tzn. procesor skočí a začne provádět až podle adresy uložené na adrese 200h

- Nefunguje zde rekurze, protože pokud zavoláme znova funkci CALL tak se znovu uloží návratová adresa na nejvyšší adresu => přepíšeme si hodnotu minulého návratu

Vstup/výstupní operace- instrukce

o OUT – zapíše obsah registru a na V/V sběrnicio IN – přečte obsah V/V sběrnice do registru ao START – zahájí V/V operacio FLAG adresa – skok na adresu, není-li operace ještě hotova

- průběh vstup/výstupní operaceo po sběrnici procesor pošle data do v/v zařízenío pošle instrukci start (pro zahájení operace)o v/v zařízení provede operaci a pošle že je hotovo (FLAG)

- přenos do výstupního zařízenío 1002h LDA 100ho 1003h OUT – pošle data na sběrnicio 1004h START – zahájenío 1005h FLAG 1005h – flag skáče sám na sebe dokud zařízení nepošle že to provedlo

přenos z výstupního zařízení 1000h START 1001h FLAG 1001h 1004h IN 1005h STA 100h

time-out – čas který jsem ochotný čekat na v/v zařízení – po tomto čase se čekání ukončíMultiprogramové zpracování- provádí se pomocí přerušení (IRQ), priorit a přidělování časů procesoruPřerušovací systém (Interrupt Systém) základní pojmy

program (statický), proces (dynamický, zapnutý program) přerušovací systém umožňuje přerušení běžícího procesu a aktivaci rutiny pro obsloužení přerušení

činnosti při přerušení přerušení prováděného procesu úklid registrů provedení obslužné rutiny obnovení registrů, pokračování prováděného procesu

proces lze přerušit pouze mezi instrukcemi, běžící instrukce musí dokončit všechny své akce , z tohoto důvodu se zakazuje přerušení v průběhu provádění instrukce

Page 10: Výpočetní systémy - fi.muny.czfi.muny.cz/data/PB151/PB151_Zapisky.doc · Web viewVýpočetní systémy Základní pojmy 1bit 1 slabika = 1B = 8 bitů 1 slovo = word = několik

IF – Iterrupt Flag – příznak přerušení STI (přerušení povoleno, IF = 1 CLI (přerušní zakázano, IF = 0 procesor nelze přerušit bezprostředně po zahájení obsluhy předchozího přerušení (musí se počkat na předání procesoru dalšímu

procesu) pokud přijde žádost o přerušení během zakázaného stavu tak se toto přerušení nezahazuje, čeká se až bude přerušení povoleno během zakázaného přerušení je velmi pravděpodobné že přišel další požadavek na přerušení, proto příkaz STI provede ještě jednu

instrukce kódu a až pak povolí přerušení přerušení se vyvolává signálem Interuppt fáze přerušení

PC -> TA SP – 1 -> AR, TAh -> DR, 1 ->WR SP - 2 -> AR, TAl -> DR, 1 -> WR SP – 2 -> SP 0 -> IF adresa programu pro obsloužení přerušení -> PC

příklad obsluhy přerušení PUSH PSW – úklid registru PSW a registru A PUSH B PUSH D PUSH H obsluha přerušení …... POP H POP D POP B POP PSW STI - povolení přerušení RET - návrat do přerušeného procesu

Signál RESET- uvedení do počátečního stavu (definovaného stavu)- nastavení počítače do počátečního stavu a předání řízení programu v permanentní paměti (BIOS)- signál reset se uplatňuje kdykoliv- fáze RESET

o 0 -> IF … zakázání přerušenío 64512 -> PC … skok někam do paměti ROM

činnosti po zapnutí počítače vyčkání (asi 1s) – doba náběhu a ustálení napájení signál RESET

Virtuální paměť operační paměť + odkládací prostor na disku (swap) = virtuální paměť rámce i stránky mají 4 KB stránky jsou na disku, rámce jsou v paměti stránek je víc než rámců rozlišujeme virtuální adresu (používají programy) a reálnou adresu (místo, kde skutečně je virtuální adresa uložena v paměti) musíme proto používat převod z virtuální adresy na reálnou převod adresy

číslo stránky (12-31 bit) se převádí na reálnou adresu pomocí transformační tabulky adresa na stránce (spodních 12 bitů adresy), se netransformují, pouze se přepíší do reálné adresy

transformační tabulka tři sloupce R/V (reálná/virtuální) – příznak zda je konkrétní stránka v reálné nebo virtuální paměti vnější adresa (kde je stránka uložena na disku) číslo rámce (pokud je v paměti je zde adresa rámce

špinavá stránka – stránka ve které se měnila „hodnota“ dat co když jsou všechny stránky obsazené? - vyberu oběť (pomocí nějakého algoritmu vyberu stránku kterou odstarním z paměti a

uvolním tím místo pro jiné data), pokud není stránka špinavá stačí prohlásit prostor za prázdný pokud je špinavá musí se „vylít“ na disk (znovu zapsat)

Realizace LRU (least recently used)- algoritmus, který hledá za oběť obsah rámce který byl nejdéle nepoužívaný- každý rámec s sebou nese informaci o nepoužití, pokud rámec použiji tak vynuluji jeho hodnotu a všem ostatním rámců jejich hodnotu

zvýším o 1- pokud chci následně najít oběť tak je to rámec s nejvyšším číslem- vlastní realizace

o neúplná matice nad hlavní diagonálou (trojúhelník)o při volání i-tého prvku se „jedničkuje“ i-tý řádek a „nuluje“ i-tý sloupeco nejdéle nepoužité paměťové místo má potom v řádku samé nuly a ve sloupci samé jedničky

Vyrovnávací (cache) paměť- používá se na urychlení nějaké činnosti- např. mezi procesorem a pamětí

o urychluje čtení – procesor je napojen na paměť přes cache tzn. pokud požaduje adresu která je jich v cache dostane odpověď hned, nemusí čekat na „pomalou“ operační paměť

Page 11: Výpočetní systémy - fi.muny.czfi.muny.cz/data/PB151/PB151_Zapisky.doc · Web viewVýpočetní systémy Základní pojmy 1bit 1 slabika = 1B = 8 bitů 1 slovo = word = několik

o urychluje zápis – nemusí se vždy přepisovat z VP do OP (opakovaná změna nemusí se psát každá, ale až výsledná hodnota a nebo pokud paměť se hodnota nezměnila tak se nemusí přepisovat)

- problém cache – pokud k jedné paměti přistupují dvě zařízení může nastat situace kdy se v paměti cache ocitnou nevalidní dataProcesor Intel 8086, 8088- 16 bitový- 1978 – 1982- základní procesor řady x86- frekvence max. 10 MHz- 8088 – 16bitový, pro 8bitové prostředí (tlak trhu)Zapojení prosesorů- 16bitů adresace (D0 – D15)- 20bitů na data (sdílené nožičky s adresací, AD0-AD19)- INTR – interrupt (žádost o maskované přerušení)- TEST – signál testovatelný instrukcí WAIT- NMI – nemaskované přerušení- GND – zem- UCC – napájecí napětí- CLK – clock, taktování- RESET – okamžité ukončení činnosti CPU, předání řízení na adresu paměti ROM- LOCK – uzamčení sběrnice pro procesor- M/IO – rozlišuje zda paměť náleží na V/V nebo je v procesoru - WR – signál pro pamětí (write/read)Zpracování dat- 16bitů nativně (čísla)- little-endian data v procesoru- zpracování BCD čísel- bitové řetězce (pole)Adresace paměti- neumí podporu pro virtuální paměť ani pro segmentaci a stránkování- 1MB adresovatelné paměti (20 bitová adresa), v praxi 640 kB (zbytek rezervováno pro zavaděč apod)- tvar adresování segment : offset- jak to funguje

o procesor používá 20bitovou adresu pro paměťo tu získáme ze dvou 16ti bitových adres (segmentu a offsetu)o (16bitů segmentu)0000 + 0000(16bitů offsetu)o segment tedy může být maximálně 1111 1111 1111 1111 0000

- segment = velikost oblasti nad adresou v segmentovém registru (maximálně 64 KB = 216 bitů)- offset – adresa uvnitř segmentu- pro uložení segmentu poskytuje procesor tyto registry

o CS (Coded segment) – určen pro výpočet adresy instrukce (např. výběr operačního znaku nebo operandu)o DS (Data segment) – určen pro výpočet adresy dat (při přístupu k datům, vyjma zásobníku a přímých operandů)o SS (Stach segment) – používá se pro přístup k zásobníkuo ES (Extra segment) – obvykle obsahuje pomocný datový segment

- práce s pamětío do instrukcí se místo adresy vkládá pouze offseto např. LDA offseto segmentovým registrem se poté určuje kde je segment umístěn v pamětí

Page 12: Výpočetní systémy - fi.muny.czfi.muny.cz/data/PB151/PB151_Zapisky.doc · Web viewVýpočetní systémy Základní pojmy 1bit 1 slabika = 1B = 8 bitů 1 slovo = word = několik

- zásobník v pamětio instrukce POP, PUSH mění pouze offset, segment zůstává, zásobník proto nemůže „vytéct“ protože vždy zůstane v 64 KB

Registry všeobecné registry – volné použití

SP – stach pointer (vrchol zásobníku) BP – base pointer (adresa báze – začátku zásobníku) SI – source index (indexování) DI – destination index DX – Data (skládá se ze dvou - Dl, Dh) CX – Counter (skládá se ze dvou - Cl, Ch) BX – Base (skládá se ze dvou – Bl, Bh) AX – Acumulator (skládá se ze dvou – Al, Ah)

segmentové registry viz. o kousek výše

řídící registry – registry příznaků IP – instruction pointer F – flags

Implicitní přiřazení segmentových registrů k registrům SP -> SS BP -> SS BX -> DS SI -> DS DI -> DS (případně ES) BP v kombinaci s SI, DI -> SS BX v kombinaci s SI, DI -> DS

explicitní přiřazení … např. MOV AH,CS:[BX] -> nepřímá adresa CS:BX

příznakové registry CF (Carry Flag) – obsahuje přenos z nejvyššího bitu PF (Parity Flag) – nastaví se na jedničku, pokud dolní osmice bitů výsledku právě provedené operace obsahuje sudý počet 1 (sudá

parita výsledku) AF (Auxilary Flag) – rozšíření CF, přenos na půlbajtu ZF (Zero Flag) – příznak nulovosti SF (Sign Flag) – kopie znaménkového bitu operace OF (Over Flag) – při přetečení (pokud výsledek spadá mimo rozsah zobrazení) TF (Trap Flag) – nenastavuje procesor, ale programátor, definuje se tím chování procesoru – zde je to po každé instrukci dojde

k přerušení (vhodné pro krokování algoritmu) IF (Interrupt Flag) – pokud je nula tak brání nemaskovaným přerušením (signál INTR) DF (Direction Flag) – řídí směr zpracování řetězcových operací (zepředu / zezadu)

Zásobník může být kdekoliv v operační paměti všechny odkazy na zásobník jsou vedeny přes segment SS opět se plní zvrchu dolů ochrana proti přetečení (zásobník nemůže vytéct ze svého segmentu) dno zásobníku – např. SS:01A1 vrchol zásobníku SS:SP PUSH

Page 13: Výpočetní systémy - fi.muny.czfi.muny.cz/data/PB151/PB151_Zapisky.doc · Web viewVýpočetní systémy Základní pojmy 1bit 1 slabika = 1B = 8 bitů 1 slovo = word = několik

1) sníží obsah registru SP o 2 2) na adresu SS:SP uloží obsah 16ti bitového operandu

POP operand naplní 16bitovým obsahem SS:SP zvýší SP o 2

procesor 8086 nemá mechanismus kterým by hlídal maximální mez zaplnění zásobníkuPřerušení procesor má vlastní (interní) očíslování přerušení (celkem 256 různých rozlišitelných přerušení), u každého eviduje adresu kam předat

řízení v případě že přerušení nastane tyto věci jsou uloženy na nejvyšších adresách (0:0000) vždy po 4 bajtech => další 0:0004 vnější – příchází přes signál interrupt (INTR) nebo přes nemaskovatelné přerušení (NMI), do nemaskovatelného přerušení se ukládá

například přerušení kvůli chybě dat z paměti (chybě při čtení) vnitřní – chyby které vznikají při běhu programu (například pokus o dělení nulou) rutiny obsluhující přerušení – jsou uloženy na nejvyšších adresách akce při přerušení

do zásobníku se uloží registr příznaků F vynulují se příznaky IF, TF (zákazáno přerušení) do zásobníku se uloží registr CS registr CS se naplní obsahem adresy n * 4 + 2 (adresa na kterou se má předat řízení) do zásobníku se uloží registr IP registr IP se naplní obsahem adresy n * 4 (přejde se na provádění adresy kam bylo předáno řízení

návrat do přerušeného procesu pomocí funkce IRET ze zásobníku se obnoví registry IP, CS, F

rezervovaná přerušení při signálu přerušení se zároveň s přerušovacím signálem přivede číslo přerušení pokud dojde k přerušení, adresa CS:IP ukazuje na instrukci která jej vyvolala (u 80286 a vyšších se ukazuje NA instrukci která jej

vyvolala) 0 – dělení nulou 1 – krokovací režim 2 - NMI (nemaskovaná přerušení), např. chyba parity paměti apod. 3 - ladící bod (breaking point) 4 - přeplnění (overflow trap)

Počáteční nastavení procesoru základní nastavení po signálu RESET příznakový registr = 0 IP = 0 DS, ES, SS = 0 CS = 0FFFFh tzn. první instrukce kterou bude procesor zpracovávat je na adrese 0FFFF:0000= 0FFFF0h (15 bajtů od konce)Adresovací techniky registry – kopírování mezi registry

např. MOV AH, BL přímý operand – do registru se dá přímá hodnota operandu

např. MOV AH, 50 – do registru se dá konstanta 50 přímá adresa – v instrukci je uložena adresa paměti která má být vybrána

MOV AH, PROM – PROM je návěští, symbolické jméno ukazující na paměť MOV AH,BX používají instrukce LDA, STA

nepřímá adresa používají instrukce LDAX, STAX MOV AH,[BX] – do registru AH dej data které jsou na adrese, která je v registru BX

dále varianty nepřímých adres, adresu adresované paměti mohou tvořit až 3 části (pevná adresa, bázovací registr, indexovaná adresa) bázovaná adresa

MOV AH,[BP+PROM] indexovaná adresa

MOV AH, [PROM+SI] další

báze + indeex přímá + báze + index

segment: přímá adresa + báze + indexInstrukce MOV instrukce MOV nemění příznaky MOV registr, registr MOV registr,[adresa paměti] MOV registr,konstanta MOV r/m16,r16 – přesun mezi 16bitovými registry MOV r/m8,r8 – přesun mezi 8bitovými registry instrukcí MOV nelze plnit segmentový registr CS – změnila by se adresa instrukce, která se má vykonat v násjedujícím kroku MOV SS, … - ukazatel dna zásobníku (SS+SP) lze měnit … po provedení instrukce MOV SS se na domu další instrukce zakáže

přerušení (aby nedošlo k pokažení adresy dna zásobníku například provedením přerušení), tím dostáváme šanci v další instrukci změnit adresu SP tak aby hodnota adresy dna zásobníku byla opět funkční

Page 14: Výpočetní systémy - fi.muny.czfi.muny.cz/data/PB151/PB151_Zapisky.doc · Web viewVýpočetní systémy Základní pojmy 1bit 1 slabika = 1B = 8 bitů 1 slovo = word = několik

Aritmetické instrukce (celočíselné)Rozšíření z 8bitového čísla na 16bitové

znaménkový bit objektu který se má rozšířit se rozkopíruje do všech bitů objektu o který se rozšiřuje např. číslo 01110000 -> 0000000001110000

Instrukce ADD celočíselná instrukce přičítání, k obsahu prvního parametru se přičte obsah druhého parametru ADD registr, registr ADD registr, konstanta instrukce ADD respektuje znaménka -> pokud přičítáme 8bitový registr k 16ti bitovému provede se nejdříve rozšíření na 16bitový

(viz o kousek výš) a až poté se přičte např. ADD CX, 10 => CX = CX+10

Instrukce ADC (ADD with carry) sčítání s přenosem pro čísla větší než je šířka procesoru (v našem případě víc než 16bitů) např. ADC AL,CL => AL = AL+CL+CF (carry flag)

32bitové sčítání nejdříve instrukcí ADD sečteme prvních 16bitů jelikož došlo k přetečení tak z 15bitu je předá příznak CF (Carry Flag) nyní použijeme instrukci ADC kterou sečteme dalších 16bitů a k nim přičteme příznak CF

Instrukce SUB (SUBTRACTION) odčítání SUB AL,CL => AL = AL-CL

Instrukce SBB (Subtraction with borrow) odčítání s přenosem (podobně jako ADC u sčítání) SBB AL,CL => AL = AL – CL – CF

Instrukce CMP (Compare) srovnání CMP AL,CL => nastavení příznaků pro výsledek AL-CL

Instrukce INC (Increment) zvýšení o jedničku INC DX

Instrukce DEC (Decrement) snížení o jedničku DEC DX

Instrukce NEG dvojkový doplňek (změna znaménka) invertace bitů a přičtení jedničky NEG DX => DX=-DX

Instrukce CBW (Convert byte to word) převede byte na slovo

Instrukce CWD (Convert word to doubleword) převede slovo na dvojslovo (vyšší a nižší bity)

Instrukce IMUL (Signed multiplication) má pouze jeden parametr, vždy se násobí registr AL (8bitů) s hodnotou zadanou v parametru násobení s respektováním znaménka 8bitové násobení IMUL BL => AX:= AL * BL 16bitové násobení IMUL CX => DX&AX:= AX * CX

Instrukce MUL (Unsigned multiplication) neuvažuje znaménkový bit, jinak stejné jako IMUL

Page 15: Výpočetní systémy - fi.muny.czfi.muny.cz/data/PB151/PB151_Zapisky.doc · Web viewVýpočetní systémy Základní pojmy 1bit 1 slabika = 1B = 8 bitů 1 slovo = word = několik

Instrukce IDIV (Signed Divide) opět má pouze jeden argument, podobně jako u násobení funkce vrací celočíselné dělení a zbytek po dělené je-li podíl větší než rozsah zobrazení pak se nastaví příznak dělení nulou => INTR 0 8bitové dělení – IDIV BL => AL= AX / BL; AH = AX modulo BL 16bitové dělení – IDIV CX => AX=DX&AX / CX; DX=DX&AX modulo CX

Instrukce DIV (Unsigned divide) stejná jako IDIV pouze neznaménková

Logické instrukceInstrukce AND - logický součin po bitechInstrukce OR – logický součetInstrukce XOR – nonekvivalenceInstrukce NOT – inverze všech bitů (jedničkový doplněk), nemění příznakyInstrukce TEST (Logical compare)

logické strovnání např. TEST AL,7 => F:= AL ^ 7 => nastaví příznaky

Rotace rotace bitů u 8086 neomezený počet rotací => můžem točit furt dokola u 80286 a vyšších omezení počtu rotací na 1Fh

Instrukce ROL (Rotate Left)

rotace doleva ROL objekt, o kolik bitů rotovat CF = bit který odrotoval na nejnižší adresu OF je definováno pouze při rotaci o jeden bit tj. pokud se hodnota CF nerovná novému nejvyššímu bitu OF = CF ⨁ bitn-1

Instrukce ROR (Rotate Right) rotace vpravo OF = bitn-1 ⨁ bitn-2

Intrukce RCL (Rotate Left Through Carry) rozšíření registru o příznak přenosu, rotace vleno

Instrukce RCR (Rotate Right Through Carry) obdoba RCL

PosuvyInstrukce SAL (Shift Aritmetic Left)

aritmeticky posun vlevo „aritmetické“ násobení 2n

provádí tuté akci jako SHL(Shift Logical Left) OF = CF ⨁ bitn-1

Page 16: Výpočetní systémy - fi.muny.czfi.muny.cz/data/PB151/PB151_Zapisky.doc · Web viewVýpočetní systémy Základní pojmy 1bit 1 slabika = 1B = 8 bitů 1 slovo = word = několik

Instrukce SAR (Shift Aritmetic Right) aritmetický posuv vpravo

aritmetické dělení 2 OF = 0

Instrukce SHR (Shift Logical Right) nerespektuje znaménkový bit

Větvení programuJMP – nepodmíněný skok

přímý skok (cílová adresa je v instrukci) vzdálený skok (far jump)

mění CS registr plní CS:IP

blízký skok (near jump) nemění CS sčítá se neznaménkově na vzdálenost <0;65535>

krátký skok (short jump) nemění CS sčítá se znaménkově na vzdálenost <-128;+127>

Page 17: Výpočetní systémy - fi.muny.czfi.muny.cz/data/PB151/PB151_Zapisky.doc · Web viewVýpočetní systémy Základní pojmy 1bit 1 slabika = 1B = 8 bitů 1 slovo = word = několik

o JMP (nepodmíněný skok) Přímý skok

cílová adresa je v instrukci (kam se má předat řízení) mění CS

o vzdálený skoko CS:IP

nemění CSo vzdálenost <0,65535> = blízký skok (bez znaménka)o vzdálenost <-128,127> = krátký skok (se znaménkem)

v instrukci je odkaz na: registr, který obsahuje adresu cílové adresy paměť (segment:offset, offset)

o podmíněný skoky pouze pro krátké skoky <-128,127> EQ == NE <> LT < LE <= GT > GE >=

- Zásobník o PUSHo POP

- Volání a návrat z   podprogramu o CALL (do zásobníku ukládá návratovou adresu a skočí na instrukci v argumentu

Blízký skok CALL r Daleký skok CALL s:r

- RET – návrat do podprogramuo Musí použít blízký/daleký skok podle toho jak skákal CALL

- Přerušení o INT – interrupto Vyvolá přerušení tak jakoby nastalo

- Cykly o LOOP

- Ovládání V/V zařízení o IN – přenos slabiky nebo slova z V/V brány do registru AL/AXo OUT – obráceně

- Další instrukce o XCHG – xChange – zamění obsahy dvou registrů, paměti a registru, paměti a pamětio XCHG AL, AL – neprovede nic podobně jako jednobajtová instrukce NOP (no operation) – operace je vhodná pokud

vím že budu opakovat nějaký cyklus třeba milionkrát. Z paměti procesor bere data po 4 bajtech, tj lze adresovat pouze paměťové místa dělitelné 4mi. Pokud by cyklus s opakováním začínal na paměti která není dělitelná 4mi pak by se z paměti museli načíst bajty které se zahodí, proto je vhodné před takovýto cyklus proložit operace NOP tak aby vlastní cyklus začínal na adrese dělitelné 4 a nemuseli se tak načtené data zahazovat

o HLT – HALT – zastavení procesoru, očekává se přerušení, nemaskované přerušení nebo signál reseto ESC – tato instrukce není určena normálnímu procesoru, ale koprocesoruo WAIT – chci čekat na dokončení instrukce v koprocesoruo LOCK – instrukční prefix „zamykající“ sběrnici po dobu trvání instrukce, přepne chování následující instrukce, pokud třeba

dva procesory šahají do té samé paměti a my nechceme aby si v době vykonávání určité akce uzamkne dalším procesorům přístup ke sběrnici, v případě že je sběrnice zamčená tak příkaz lock zjistí že je zamčeno a čeká až bude možné přistoupit ke sběrnici, jakmile se sběrnice odemkne tak si ji lock zamkne pro sebe a vykoná instrukce

- Řetězcové instrukce o Instrukční prefix REP – provádění instrukce tak dlouho dokud není vynulován registr CX

- Instrukce pro podporu BCD aritmetiky o Připraví čísla v BCD kódu na normální čísla pro provedení běžnou aritmetikou

Procesor 80286- 16bitů- 24bitová sběrnice- dva režimy

o reálný (pro inicializaci procesoru, je slučitelný s 8086 (kompatibilní)o chráněný režim – po přepnutí se nejde vrátit zpátky z chráněného režimu, 4 úrovně ochrany, zapíná se programově

z reálného režimu

Page 18: Výpočetní systémy - fi.muny.czfi.muny.cz/data/PB151/PB151_Zapisky.doc · Web viewVýpočetní systémy Základní pojmy 1bit 1 slabika = 1B = 8 bitů 1 slovo = word = několik

- příznakové registryo IOPL – určuje úroveň oprávnění, vyšší hodnota = nižší úroveň oprávnění (0-3 => 2bitový registr)o NT – určuje režim práce instrukce IRET

- registr MSW (Machina Status Word)o PE – zapíná chráněný režim procesoruo MP – indikuje přítomnost koprocesoru (fyzická přítomnost)o EM – zapíná emulaci koprocesoru (pokud jej nemáme tak se výpočty v reálných číslech provádějí na procesoru – pomocí

upravených výpočtů na celočíselné aritmetice)o TS – nastavuje se vždy přepnutím procesu (v procesu běží proud instrukcí, najednou dojdou instrukce pro koprocesor,

koprocesor začíná počítat, ale procesor není využit proto se provede přerušení a procesor začne počítat jiný proces, mezitím však koprocesor chce vrátit data do cpu, ale tam již běží jiný proces a proto je třeba před vracením hodnot zkontrolovat zda nebylo přepnuto pokud bylo provede se přerušení pokud ne provede se rovnou návrat hodnot

Adresace paměti v   chráněném režimu - segment – je definován – adresou začátku segmentu, délkou segmentu ve slabikách -1, přístupovými právy a typem segmentu- globální adresový prostor – pro celý systém 1 globální adresový prostor- lokální adresový prostor – pro každý proces 1 lokální adresový prostor- virtuální adresa (selektor:offset) vzdálenost od začátku tabulky:ukazatel do tabulky- selektor – 16ti bitový obsahuje úroveň oprávnění, table indicator (zda se ukazuje do globální nebo lokální) a pak index do tabulky

popisovačů segmentůTransformace virtuální paměti- limit segmentu – nepřekročitelná adresa- báze segmentu - - přístupová práva – o jaký typ segmentu jde (data, instrukce apod)- 2 bajty zbývají – nechávají se nulovéÚrovně oprávnění- 4 úrovně (0 – nejvyšší, 3 – nejnižší)- DPL, CPL, RPL, EPL

Procák 80386- 32 bitový – adresa i data- 1986-1994- 16 - 40 Mhz- DX – plnohodnotný- SX – 16bitů datová sb., 24 bitů adresová- i387 – koprocesor- 386SL – pro notesNožičky- D0-D31 – datová sb.- A1-A31 – adresová sb.Registry- původní registry- rozšíření na 32 bitůPříznaky- VM (Virtual 8086 mode) – pouze v chráněném režimu, poté proces běží jako na 8086Adresace- selektor – ukazatel do tabulek (stále 16 bitový)- offset – připočítává se- limit segmentu 4 GB – 1- lineární adresa – adresa vstupující do mechanismu stránkování- stránkování se musí zapnout, pokud není tak lineární = fyzická pokud je zapnuté musí se převést- popisovače segmentů (8 bajtů) – báze segmentu je rozdělená na 3 části (16, 8, 8 bitů)- G (Granularita) – je možné adresovat buď 16 nebo 32 bitů a podle toho je nastaven tento bit, zároveň určuje jednotku limitu (velikost

adresované paměti) u 16 bitů je to 1B u 32 je to 4 kB- B (big) nastavuje 16/32 bitový režimŘídící registry- PE – zapíná chráněný režim- ET (extension type) – sděluje typ instalovaného koprocesoru (287, 387)- PG – zapíná stránkovací jednotkuStránkování- dolních 12 bitů se netransformuje- 12 bitů tabulky (přes stránkovací tabulky)- 12 bitů stránkový adresářcenzurováno (2 hodiny bez zápisu)TLB – onakej bufferCR3 – ukazuje na stránkový adresářTSS tabulka 80386 sem se ukládá stav všech registrů při přerušení aby mohlo dojít k návratu offsetová mapa V/V bran – vzdálenost mapy od začátku segmentuLadící přerušení- 14 – přerušení výpadek stránky

x86-64 architektura- plně zpětně kompatibilní64bitů long mode- 64bit virtuální adresa, 52bitů fyzická

Page 19: Výpočetní systémy - fi.muny.czfi.muny.cz/data/PB151/PB151_Zapisky.doc · Web viewVýpočetní systémy Základní pojmy 1bit 1 slabika = 1B = 8 bitů 1 slovo = word = několik

- zrušena segmentace- stránkování

o podporují 4KB stránky nebo 2MB stránkyo stránková tabulka – 64bitů, dolních 21bitů adresace, další bity jsou adresa

AMD64IA64- od Intel- není kompatibilní s x86, kompatibilní pouze ve velmi omezeném režimu (64bitový RISC procesor a druhý 32bitový obyčejný INTEL)- ItaniumMikroprocesor i860- RISC procesor- není kompatibilní x86- časté ve „vektorových“ tiskárnách- samostatné jednotky (grafická, sčítačka, násobička) u jiných cpu je vše integrované do ALU- moc registrů, 32 32bitových registrů- registr r0 je vždycky 0 … pokud potřebuju např. do r2 přiřadit 1 tak u CISC musím v paměti vyhradit prostor, pojmenovat jej, uložit 1 a

přenést do registru u RISC procesorů se snažíme minimalizovat přístupy do paměti tzn, přesuneme obsah r0 do r2 a uděláme jednu inkrementaci

- Registr Bypassing – nečeká se až data dojdou do registru, ale můžeme data brát přímo od minulé instrukce která data teprve posílá do registru a to přímo se sběrnice

- Delayed Branch – před provedením skoku se provede ještě jedna instrukce za ním, tomu se říká spožděný skok … RISC jednotka rozpracovává instrukce hodně dopředu, tzn. Pokud zjistí že se má skočit je již další instrukce skoro dokončená proto je jí škoda nevykonat, proto se ještě vykoná a až po ní se provede skok, toto musí šéfovat kompilátor

- U RISC procesorů nemohou pracovat instrukce s pamětí, pouze s registry (mimo load a store)- 2 varianty podmíněného skoku, kompilátor vyhodnocuje zda se pravděpodobně skočí nebo neskočí a podle toho začne rozpracovávat

další instrukce (pipelining)(instrukce BCT pravděpodobně se skočí, instrukce BC pravděpodobně se neskočí)Koprocesor- procesor sleduje instrukční tok a jakmile je instrukce určená pro něj tak ji provede- reálné číslo – exponent, mantisa … mantisa x 2^exponentNormalizování mantisy- první nejvyšší bit mantisy se nemusí zobrazovat, protože vždy je 1Normalizovaný tvar mantisy- převedeme si ji do tvaru 1.xxxxxxxx- 100,01 = 1,0001 x 22

- zapisujemeo znaménkoo exponento 0001 (mantisa)

- tento formát je vhodný pro porovnání čísel (je možné nejdříve porovnat exponenty a až poté vlastní mantisy čísliceExponent v   kódu posunuté nuly - číslo 12.5- nejdříve převedeme do dvojkového kódu => 1100.1- upravíme => 1.1001 x 23

- převedeme do kódu posunuté nuly => sečteme 3 ku vyjádřenou v binárním kódu (00000011) a přičteme k temu posun nuly (01111111)Zvláštní čísla podle IEEE 754- 0- 1- kladné nekonečno- záporné nekonečnoRozhraní EPSON- paralelní rozhraní určené pro výstup