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
