this dir | view | cards | source | edit | dark top

Principy počítačů

Principy počítačů

self-assessment úlohy – dostaneme ke každé přednášce sadu

1. přednáška

Harvardská architektura počítače

1. přednáška

matematik Charles Babbage vymyslel koncept mechanického počítače – Analytical Engine (v roce 1837), byl plně programovatelný, Turing complete

1. přednáška

budeme se zabývat tím, jak v počítači reprezentovat čísla (všechna ostatní data na ně můžeme převést)

informace (data) → čísla → celá čísla → nezáporná celá čísla

1. přednáška

zaznamenáme libovolné číslo od nuly do milionu

1. přednáška

posledním zjednodušením je přenášení čísel nula/jedna

1. přednáška

sériový digitální přenos

1. přednáška

mocniny dvojky

1. přednáška

diferenciální přenos

1. přednáška

řešení problému se dvěma jedničkama / dlouhou jedničkou

2. přednáška

vodiče

2. přednáška

přijímač se na signál kouká přibližně v polovině bitů

2. přednáška

3-stavová logika – funguje na lince, kde umíme rozlišit floating stav, nulu a jedničku

floating stav bychom mohli požadovat za idle stav

2. přednáška

my ale chceme fungovat na 2-stavové logice (lince)

2. přednáška

může se stát, že se nám vysílání a příjem bitů posune

2. přednáška

synchronizaci je možné řešit i pomocí hodinového signálu (clock) – linka vysílající střídavě nuly a jedničky, jednička značí čas čtení (zajišťuje synchronizaci přijímače a vysílače)

2. přednáška

co když je hodinový vodič kratší než datový vodič?

2. přednáška

linky simplex a duplex

2. přednáška

běžné kódování – 0 = nepravda, 1 = pravda

2. přednáška

hodiny reálného času – RTC

2. přednáška

řadič (controller) – zařízení, které zajišťuje ovládání linky (procesor → linka → řadič → linka → myš)

3. přednáška

sériovou myš také potřebujeme nějak napájet

3. přednáška

po zapnutí myš pošle inicializační packet (init packet) – není přesně definován

3. přednáška

potřebujeme být schopni stisknout klávesu na klávesnici a začít dělat něco jiného

3. přednáška

přijímání dat z myši

3. přednáška

co dělat s informací 738201600

3. přednáška

modifikovaný kód

packet 60 00 00 00 → první byte 01 10 00 00

3. přednáška

proč má první byte v 6. bitu jedničku?

abychom ho poznali od ostatních tří bytů a nedošlo ke špatné synchronizaci snímání komunikace myši

3. přednáška

bitové operace – obvykle dva argumenty (binární operace)

3. přednáška

jak zjistit, jestli je levé tlačítko stisknuté

3. přednáška

pohyb myši

4. přednáška

potřebujeme magickou operaci, která nám umožní posunout bity

4. přednáška

potřebujeme rozlišit posun myši nahoru a doleva → záporná čísla ve formě jedniček a nul

4. přednáška

Python ke každému číslu ukládá počet platných bitů, ukládá je jako znaménková čísla

4. přednáška

převod 8-bit čísla na 4-bit

4. přednáška

převod 4-bit čísla na 8-bit

5. přednáška

Harvardská architektura – CPU čte z kódové paměti, čte z datové paměti a zapisuje do datové paměti

5. přednáška

zařízení

5. přednáška

adresa (address) zařízení na sběrnici (typicky 0 až n)

5. přednáška

zařízení je připojené na sběrnici

5. přednáška

I2CI^2C – Inter Integrated Circuit

5. přednáška

I2CI^2C sestává ze slave address (7-bit) a bitu určujícího směr přenosu R/WˉR/\bar W

5. přednáška

když slave nestíhá, tak může v hodinovém signálu generovat nulu → master ví, že nemůže posílat další data – tomu se říká clock stretching / hold clock low

Ambient Light Sensor (ALS)

5. přednáška

příkazy start integration a stop integration

command register (cmd reg)

5. přednáška

counter register = ADC register (analog digital converter)

5. přednáška

připojení na sběrnici zajišťuje bus interface – skrze něj máme jako programátoři přístup k registrům

6. přednáška

1 kB = 1024 B, 1 MB = 1024 kB, … (pro přehlednost se používají zkratky KiB, MiB, GiB → kibibyte, …)

výrobci disků používají 1 kB = 1 000 B

6. přednáška

bity v registru řadiče: 1 bit → 1 latch (4–6 tranzistorů)

6. přednáška

paměti DRAM

6. přednáška

u naší 256 bytové paměti kódujeme adresu na I2C pomocí tří proměnlivých bitů

pevný začátek adresy, za něj se přidávají hodnoty tří bitů

6. přednáška

1 slovo (1 word) – jednotka přenosu/zpracování

6. přednáška

obsah naší paměti

7. přednáška

Harvardská architektura

7. přednáška

instrukce procesoru

7. přednáška

program v Pythonu

7. přednáška

v programovacím jazyce je proměnná identifikovaná jménem, kdežto ve strojovém kódu adresou

překladač musí zařídit, aby proměnné alokoval na volných pozicích

7. přednáška

jak do paměti uložit vícebytovou hodnotu

7. přednáška

code memory by měla být non-volatile

7. přednáška

von Neumannova architektura

7. přednáška

historie počítačů (prezentace) – všechny architektury jsou von Neumannovské

7. přednáška

instrukce skoku – nastavím IP na konkrétní hodnotu (nepodmíněný skok – unconditional jump)

7. přednáška

je těžké pamatovat si instrukce procesoru a psát přímo strojový kód → pro každý procesor se vymyslí tzv. assembler (assembly code)

je důležité chápat rozdíl mezi textovým zápisem assembleru a samotným strojovým kódem

7. přednáška

registry procesoru

7. přednáška

a = b + c

7. přednáška

dva typy LOAD

7. přednáška

instrukce kopírování mezi registry (transfer)

např. kopírování X → A by se zapsalo jako TXA

8. přednáška

registry

8. přednáška

dva typy registrové architektury

8. přednáška

8bitové sčítání

8. přednáška

instrukce ADC (add with carry)

8. přednáška

odčítání

9. přednáška

taktovací frekvence (clock rate) – dnes v řádu GHz

9. přednáška

v jazycích C/C# může nastat aritmetické přetečení (arithmetic overflow)

9. přednáška

procesory x86 a x64 mají operace násobení a dělení

9. přednáška

shift left funguje jako násobení mocninou dvojky

x SHL n=(x2n)mod2zx\text{ SHL } n = (x \cdot 2^n) \mod 2^z

9. přednáška

reprezentace reálných čísel

10. přednáška

floating-point

11. přednáška

jednočip/microcontroller/\micro\microC/MCU

11. přednáška

von Neumannovská architektura

11. přednáška

pevný disk / hard disk drive (HDD)

11. přednáška

CD/DVD/BluRay

11. přednáška

řadič DVD

11. přednáška

řadič HDD (HDC = Hard Drive Controller)

řadič pevných disků se ovládá podobně jako řadič DVD, dostává LBA adresu

11. přednáška

chceme na disk ukládat soubory

11,5. přednáška

na binárním souboru máme funkci read, které zadáme, kolik bytů chceme přečíst

11,5. přednáška

MIDI soubor – zápis not (není uložen zvuk)

začátky a konce not

12. + 12,5. přednáška

nejjednodušší

12. + 12,5. přednáška

jeden bajt na pixel

12. + 12,5. přednáška

bylo by hezké zaznamenávat obrázky, kde jsou oba extrémy (a u těchto extrémů ukazovat detaily)

12. + 12,5. přednáška

frekvence může být 0,00… (nenulová) až nekonečno

obvykle nás zajímá viditelné světlo

12. + 12,5. přednáška

v oku

12. + 12,5. přednáška

16-bit RGB

12. + 12,5. přednáška

24-bit RGB

12. + 12,5. přednáška

32-bit ARGB

12. + 12,5. přednáška

metadata obrázku

12. + 12,5. přednáška

jak uložit pixel

12. + 12,5. přednáška

formát BMP

12. + 12,5. přednáška

znak

12. + 12,5. přednáška

kódování

12. + 12,5. přednáška

rasterizace textu

převod kód → obrázek (znak)

12. + 12,5. přednáška

kódování

12. + 12,5. přednáška

nejběžnější kódování

12. + 12,5. přednáška

zalomení řádku

12. + 12,5. přednáška

Unicode (v podstatě nepoužívané)

12. + 12,5. přednáška

textový soubor jako posloupnost bytů

12. + 12,5. přednáška

chceme uložit binární soubor s textem (ale také dalšími daty)

13. přednáška

PCIe

13. přednáška

jak oslovovat zařízení na systémové sběrnici?

13. přednáška

zvuková karta

13. přednáška

řadič sběrnice

13. přednáška

grafická karta

13. přednáška

jak dostat kód na von neumannovskou architekturu

13. přednáška

jádro operačního systému (kernel)

Hurá, máš hotovo! 🎉
Pokud ti moje kartičky pomohly, můžeš mi koupit pivo.