CPU
Z MiS
(Rozdíly mezi verzemi)
(Vytvoření stránky.) |
m (→Procesor z pohledu SW: Opraven odkaz na Programovací jazyky.) |
||
| Řádka 39: | Řádka 39: | ||
** Programovací jazyk, který vznikne tak, že instrukcím strojového kódu přiřadíme písmenné zkratky a doplníme o vytváření proměnných a návěští pro skok a další nezbytné produkty. | ** Programovací jazyk, který vznikne tak, že instrukcím strojového kódu přiřadíme písmenné zkratky a doplníme o vytváření proměnných a návěští pro skok a další nezbytné produkty. | ||
** Každý typ procesoru má svůj strojový kód a assembler. Některé typy procesorů ale mohou být kompatibilní. Dnes jsou například procesory Intel a AMD z větší části kompatibilní s procesorem Intel 8080 původního počítače IBM PC. | ** Každý typ procesoru má svůj strojový kód a assembler. Některé typy procesorů ale mohou být kompatibilní. Dnes jsou například procesory Intel a AMD z větší části kompatibilní s procesorem Intel 8080 původního počítače IBM PC. | ||
| − | ** Viz také [[Programovací_jazyky# | + | ** Viz také [[Programovací_jazyky#Vyšší_a_nižší_programovací_jazyky|Programovací jazyky]]. |
; Typy instrukcí | ; Typy instrukcí | ||
| Řádka 60: | Řádka 60: | ||
JMP start ; Skok na zacatek kodu. Nasleduje misto pro | JMP start ; Skok na zacatek kodu. Nasleduje misto pro | ||
| − | + | ; promenne, to chceme preskocit. | |
; Promenne: | ; Promenne: | ||
konecRady: DB 7 ; Cislo, kterym aritmeticka rada konci | konecRady: DB 7 ; Cislo, kterym aritmeticka rada konci | ||
| − | vysledek: DB | + | vysledek: DB 0 ; Sem zapisi vysledek |
| − | start: ; Navesti, na ktere skaceme instrukci JMP | + | start: ; Navesti, na ktere skaceme instrukci JMP |
| − | MOV C, | + | MOV C, konecRady ; Ukazatel na promennou konecRady |
| − | MOV A, [C] ; Ulozim do registru A hodnotu promenne | + | MOV A, [C] ; Ulozim do registru A hodnotu promenne |
| − | + | ; (najdu hodnotu na adrese odkazu) | |
| − | MOV B, [C] ; Totez ulozim do B - bude to citac | + | MOV B, [C] ; Totez ulozim do B - bude to citac |
.zacatekCyklu: | .zacatekCyklu: | ||
| − | DEC B ; Snizim B (citac) o jednicku | + | DEC B ; Snizim B (citac) o jednicku |
| − | ADD A, B ; Vynasobim cislo v A cislem v B | + | ADD A, B ; Vynasobim cislo v A cislem v B |
| − | + | ; Vysledek bude v A | |
| − | CMP B, 0 ; Porovnam B s nulou | + | CMP B, 0 ; Porovnam B s nulou |
| − | JA .zacatekCyklu ; Pokud je B > 0, pokracuji v cyklu | + | JA .zacatekCyklu ; Pokud je B > 0, pokracuji v cyklu |
| − | MOV D, vysledek ; Do registru D dam adresu promenne | + | MOV D, vysledek ; Do registru D dam adresu promenne |
| + | ; "vysledek" | ||
| + | MOV [D], A ; Vysledek do promenne "vysledek" | ||
| − | ; | + | MOV D, 232 ; Uloz ukazatel na pamet pro vystup |
| − | MOV [D], A ; | + | ; (graficka karta) |
| + | MOV [D], A ; Vypisu vysledek na vystup | ||
| − | + | HLT ; Konec programu | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
</div> | </div> | ||
Verze z 17. 11. 2016, 21:45
Co je CPU?
- Jedná se o procesor, který je hlavní výpočetní jednotkou počítače.
- Běžně se používá i prosté označení procesor, i když pojem procesor může odkazovat i na řídící procesor pevného disku, procesor grafické karty a další typy procesorů.
Parametry procesoru
- Technické parametry
- počet jader
- taktovací frekvence (Hz) — dnes řádově GHz
- CPU throttling... Snižování taktovací frekvence, pokud procesor není využitý. Vede k úspoře energie.
- tepelný výkon (TDP)(W)
- typ patice (socket)
- výkon v testech
- zaměřených na mat. operace,
- na zpracování grafiky,...)
- cache (vyrovnávací paměť — L1, L2, L3)
- typ jádra (generace)
- použitá technologie (rozměr mřížky — 22 nm, 14 nm)
- Další parametry
- je integrovaný?
- kompatibilita se základní deskou
- instrukční sada (kompatibilita s rodinou procesorů)
- cena
Procesor z pohledu SW
- Základní pojmy
- Registry
- Paměťové buňky, do kterých se ukládají operandy (hodnoty), se kterými procesor právě počítá.
- Velikost v řádu desítek byte (typicky stejné, jako šířka datové sběrnice nebo kratší).
- Některé mají speciální funkci, jiné obecné.
- Instrukční sada
- Jaké instrukce umí procesor zpracovat a jaké binární kódy (posloupnosti nul a jedniček) tyto instrukce označují.
- Strojový kód
- Instrukce procesoru a přiřazené kódy
- Assembler
- Programovací jazyk, který vznikne tak, že instrukcím strojového kódu přiřadíme písmenné zkratky a doplníme o vytváření proměnných a návěští pro skok a další nezbytné produkty.
- Každý typ procesoru má svůj strojový kód a assembler. Některé typy procesorů ale mohou být kompatibilní. Dnes jsou například procesory Intel a AMD z větší části kompatibilní s procesorem Intel 8080 původního počítače IBM PC.
- Viz také Programovací jazyky.
- Typy instrukcí
- Přesuny
- Aritmetické operace
- Logické operace
- Podmínky
- Skok
- Strojový kód (ukázka)
- Ukázku programování v assembleru jednoduchého procesoru si můžete vyzkoušet na: Schweigi.github.io → Assembler Simulator.
Příklad — Součet aritmetické řady postupným sčítáním
; Vypocita soucet aritmeticke rady
; --------------------------------
; Vysledek zustane v registru A a bude na prvnim miste v pameti vystupu.
; Bylo by lepsi cislo prevest na ASCII tvar, ale to by chtelo dalsi
; proceduru... ;)
JMP start ; Skok na zacatek kodu. Nasleduje misto pro
; promenne, to chceme preskocit.
; Promenne:
konecRady: DB 7 ; Cislo, kterym aritmeticka rada konci
vysledek: DB 0 ; Sem zapisi vysledek
start: ; Navesti, na ktere skaceme instrukci JMP
MOV C, konecRady ; Ukazatel na promennou konecRady
MOV A, [C] ; Ulozim do registru A hodnotu promenne
; (najdu hodnotu na adrese odkazu)
MOV B, [C] ; Totez ulozim do B - bude to citac
.zacatekCyklu:
DEC B ; Snizim B (citac) o jednicku
ADD A, B ; Vynasobim cislo v A cislem v B
; Vysledek bude v A
CMP B, 0 ; Porovnam B s nulou
JA .zacatekCyklu ; Pokud je B > 0, pokracuji v cyklu
MOV D, vysledek ; Do registru D dam adresu promenne
; "vysledek"
MOV [D], A ; Vysledek do promenne "vysledek"
MOV D, 232 ; Uloz ukazatel na pamet pro vystup
; (graficka karta)
MOV [D], A ; Vypisu vysledek na vystup
HLT ; Konec programu