CPU
Z MiS
(Rozdíly mezi verzemi)
(Vytvoření stránky.) |
(Přidány architektury ARM a Intel) |
||
(Nejsou zobrazeny 3 mezilehlé verze od 1 uživatele.) | |||
Řádka 25: | Řádka 25: | ||
* instrukční sada (kompatibilita s rodinou procesorů) | * instrukční sada (kompatibilita s rodinou procesorů) | ||
* cena | * cena | ||
+ | |||
+ | |||
+ | == Architektury procesoru == | ||
+ | |||
+ | ; Intel | ||
+ | * Procesory kompatibilní s Intel 8086 (IBM PC). | ||
+ | * Výrobci: Intel, AMD,... | ||
+ | * Obvykle používány ve stolních počítačích a většině notebooků. | ||
+ | |||
+ | ; ARM | ||
+ | * Procesory pro určené mobilní zařízení. | ||
+ | * Výrobci: Qualcomm, Huawei, Apple, Cortex, Intel,... | ||
+ | * Obvykle používány v mobilních telefonech a tabletech. Některé telefony a tablety ale používají i architekturu Intel Atom | ||
+ | |||
== Procesor z pohledu SW == | == 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#Vyšší_a_nižší_programovací_jazyky|Programovací jazyky]]. | |
− | + | === Typy instrukcí === | |
− | *Přesuny | + | * Přesuny |
− | *Aritmetické operace | + | * Aritmetické operace |
− | *Logické operace | + | * Logické operace |
− | *Podmínky | + | * Podmínky |
− | *Skok | + | * Skok |
− | ; | + | === Assembler — ukázka === |
− | * | + | * Programování v assembleru jednoduchého procesoru si můžete vyzkoušet na: <br />[https://schweigi.github.io/assembler-simulator/ Schweigi.github.io → Assembler Simulator]. |
<div class="Priklad"> | <div class="Priklad"> | ||
− | Příklad — | + | Příklad — Výpočet n-tého prvku Fibonacciho posloupnosti. |
− | ; Vypocita | + | ; Vypocita n-ty prvek Fibonacciho posloupnosti |
− | ; -------------------------------- | + | ; -------------------------------------------- |
− | ; Vysledek zustane v registru | + | ; Vysledek zustane v registru B 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 | JMP start ; Skok na zacatek kodu. Nasleduje misto pro | ||
− | + | ; promenne, to chceme preskocit. | |
; Promenne: | ; Promenne: | ||
− | + | poradiPrvku: DB 7 ; Kolikaty prvek Fibonacciho posloupnosti chceme? | |
− | vysledek: | + | vysledek: DB 0 ; Sem zapisi vysledek |
− | start: ; Navesti, na ktere skaceme instrukci JMP | + | start: ; Navesti, na ktere skaceme instrukci JMP |
− | MOV C, | + | MOV C, [poradiPrvku] ; Ukazatel na promennou konecRady |
− | MOV A, [ | + | MOV A, [vysledek] ; Ulozim do registru A hodnotu promenne |
− | + | ; (najdu hodnotu na adrese odkazu) | |
− | MOV B, [ | + | ; Bude to predchozi prvek |
+ | MOV B, [vysledek] ; Totez ulozim do B - bude to aktualni prvek | ||
+ | INC B ; Zvysim B o 1 | ||
+ | |||
+ | CMP C, 1 ; Pokud je C vetsi nebo rovno jedne... | ||
+ | JAE .zacatekCyklu ; ... skoc na zacatek vypoctu... | ||
+ | JMP .vypis ; ... jinak muzes zrovna vypsat vysledek 0 | ||
.zacatekCyklu: | .zacatekCyklu: | ||
− | + | ADD A, B ; Prictu k (A) aktualnimu prvku (B) predchozi, ziskam | |
− | ADD A, B ; | + | ; tim nasledujici prvek (vysledek bude v A) |
− | + | MOV D, A ; Prohodim nasledujici prvek na pozici aktualniho... | |
− | + | MOV A, B ; a aktualni na pozici predchoziho. | |
− | + | MOV B, D ; Jako pomocny registr pouziji D. | |
− | + | DEC C ; Snizim citac C o 1 | |
+ | CMP C, 2 ; Porovnam B s dvojkou | ||
+ | JA .zacatekCyklu ; Pokud je B > 2, pokracuji v cyklu | ||
− | ; | + | .vypis: |
− | MOV [D], | + | MOV D, vysledek ; Do registru D dam adresu promenne |
+ | ; "vysledek" | ||
+ | MOV [D], B ; Vysledek do promenne "vysledek" | ||
− | MOV D, 232 ; Uloz ukazatel na pamet pro vystup | + | MOV D, 232 ; Uloz ukazatel na pamet pro vystup |
− | + | ; (graficka karta) | |
− | MOV [D], | + | MOV [D], B ; Vypisu vysledek na vystup |
− | + | HLT ; Konec programu | |
</div> | </div> | ||
+ | |||
+ | |||
+ | == Související stránky == | ||
+ | * [[Programovací jazyky]] |
Aktuální verze z 27. 1. 2017, 08:42
Obsah |
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
Architektury procesoru
- Intel
- Procesory kompatibilní s Intel 8086 (IBM PC).
- Výrobci: Intel, AMD,...
- Obvykle používány ve stolních počítačích a většině notebooků.
- ARM
- Procesory pro určené mobilní zařízení.
- Výrobci: Qualcomm, Huawei, Apple, Cortex, Intel,...
- Obvykle používány v mobilních telefonech a tabletech. Některé telefony a tablety ale používají i architekturu Intel Atom
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
Assembler — ukázka
- Programování v assembleru jednoduchého procesoru si můžete vyzkoušet na:
Schweigi.github.io → Assembler Simulator.
Příklad — Výpočet n-tého prvku Fibonacciho posloupnosti.
; Vypocita n-ty prvek Fibonacciho posloupnosti ; -------------------------------------------- ; Vysledek zustane v registru B 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: poradiPrvku: DB 7 ; Kolikaty prvek Fibonacciho posloupnosti chceme? vysledek: DB 0 ; Sem zapisi vysledek start: ; Navesti, na ktere skaceme instrukci JMP MOV C, [poradiPrvku] ; Ukazatel na promennou konecRady MOV A, [vysledek] ; Ulozim do registru A hodnotu promenne ; (najdu hodnotu na adrese odkazu) ; Bude to predchozi prvek MOV B, [vysledek] ; Totez ulozim do B - bude to aktualni prvek INC B ; Zvysim B o 1 CMP C, 1 ; Pokud je C vetsi nebo rovno jedne... JAE .zacatekCyklu ; ... skoc na zacatek vypoctu... JMP .vypis ; ... jinak muzes zrovna vypsat vysledek 0 .zacatekCyklu: ADD A, B ; Prictu k (A) aktualnimu prvku (B) predchozi, ziskam ; tim nasledujici prvek (vysledek bude v A) MOV D, A ; Prohodim nasledujici prvek na pozici aktualniho... MOV A, B ; a aktualni na pozici predchoziho. MOV B, D ; Jako pomocny registr pouziji D. DEC C ; Snizim citac C o 1 CMP C, 2 ; Porovnam B s dvojkou JA .zacatekCyklu ; Pokud je B > 2, pokracuji v cyklu .vypis: MOV D, vysledek ; Do registru D dam adresu promenne ; "vysledek" MOV [D], B ; Vysledek do promenne "vysledek" MOV D, 232 ; Uloz ukazatel na pamet pro vystup ; (graficka karta) MOV [D], B ; Vypisu vysledek na vystup HLT ; Konec programu