CPU
Z MiS
				
				
				
				
																
				
				
								
				
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
