Architektura počítačů Úvod http://d3s.mff.cuni.cz http://d3s.mff.cuni.cz/teaching/computer_architecture/ Lubomír Bulej bulej@d3s.mff.cuni.cz CHARLES UNIVERSITY IN PRAGUE faculty faculty of of mathematics mathematics and and physics physics
Proč jsou počítače zajímavé? Velmi dynamický obor První digitální elektronické počítače kolem roku 1940 O 60 let později počítače zcela běžné, dnes všudypřítomné Nové technologie jsou nahrazovány dříve, než stačí zestárnout Neuvěřitelný vliv na každodenní život Internet, vestavěné počítače, lidský genom, výpočetní chemie,... Každé řádové snížení ceny, zvýšení výkonu, zmenšení velikosti přináší nové možnosti 2/49
Co je vlastně počítač? V dnešní době velmi široký pojem Řada společných technologií, ale různé uspořádání podle požadavků a využit Hlavní třídy Osobní počítače Optimální poměr cena/výkon (tlak na vývoj) Servery, mainframy, superpočítače Vyšší propustnost, spolehlivost, výpočetní výkon Vědecké výpočty, velké množství požadavků Vestavěné (embedded) počítače Dnes nejrychleji rostoucí trh (nejen mobilní zařízení) Omezené zdroje (paměť, výkon, energie, cena), speciální nároky (fyzická odolnost) 3/49
Sálový počítač (1964) IBM System 360 Použit integrovaných obvodů Revoluční prvky Stavebnicová konstrukce Jednotná struktura dat a instrukcí Jednotný způsob připojování periferií Ochrana dat v paměti Prvky architektury zachovány v mainframech až dodnes [1] 5/49
Sálový počítač (2005) IBM System Z9-109 model S54 60 konfigurovatelných LPARS Special-purpose processors Paměť 512 GB 1 740 kg, 2,49 m2, příkon 18,3 kw Dostupnost, propustnost, bezpečnost [2] 6/49
Méně běžný osobní počítač [3] 7/49
Běžný osobní počítač [4] 8/49
Co je v krabici běžného počítače? Základní deska Procesor Paměť (RAM, ROM) Čipová sada Základní I/O periferie [4] 9/49
Co je v krabici běžného počítače? Základní deska Procesor Paměť (RAM, ROM) Čipová sada Základní I/O periferie Optická mechanika Pevný disk [4] 10/49
Co je v krabici běžného počítače? Základní deska Procesor Paměť (RAM, ROM) Čipová sada Základní I/O periferie Optická mechanika Pevný disk Rozšiřující karty Grafická karta [4] 11/49
Co je v krabici běžného počítače? Základní deska Procesor Paměť (RAM, ROM) Čipová sada Základní I/O periferie Optická mechanika Pevný disk Rozšiřující karty Grafická karta Zdroj [4] 12/49
Základní deska [5] 13/49
Základní deska (2) CPU High-Speed Peripherals High-Speed Bus Clock Generator RAM Front-side Bus North Bridge (memory controller) Memory Bus Internal Bus Peripherals Peripheral Bus South Bridge (I/O controller) SATA USB Ethernet Audio CMOS memory Legacy Bus Flash ROM Super I/O Serial Parallel Floppy Keyboard Mouse 14/49
Procesor Součásti Datová cesta (operace s daty) Řízení (řadič datové cesty) Paměťové prvky (soubor registrů a cache) Intel Core i7-980x 6 jader, 12 MB L3 cache, taktovací frekvence 3,33 GHz 32 nm výrobní proces, 248 mm2, 1,2 mld. tranzistorů Source: intel.com 15/49
Operační paměť Dočasná paměť Běžící programy a data, přímá adresace procesorem Dynamic Random-Access Memory (DRAM) Konstantní doba přístupu (v řádu desítek ns) Bity uloženy jako náboje v integrovaných kondenzátorech (spolu s tranzistorem) Nutnost periodicky občerstvovat obsah (refresh) Typická frekvence 16 Hz Typická kapacita jednotky až desítky GB Source: slashgear.com 16/49
Operační paměť (2) Dočasná paměť Static Random-Access Memory (SRAM) Realizovaná pomocí dvoustavových klopných obvodů (obvykle 4 až 6 tranzistorů na bit) Není potřeba periodické občerstvování Výrazně vyšší rychlost (jednotky ns), ale výrazně nižší hustota záznamu a vyšší cena Při plné rychlosti výrazně vyšší spotřeba Cache procesoru Soubor registrů procesoru Interní paměť procesoru 17/49
Technologie procesorů a pamět Polovodičový tranzistor Základní stavební prvek Typicky použit jako diskrétní elektronický prvek (signálem řízený spínač), ne analogový prvek (zesilovač) Integrovaný obvod Kombinace více tranzistorů na jednom polovodičovém čipu Včetně doplňkových elektronických součástek (kondenzátorů, rezistorů apod.) Lepší výrobní technologie menší rozměry vyšší stupeň integrace vyšší rychlost procesorů a vyšší kapacita pamět 18/49
Technologie procesorů a pamět (2) Source: P&H 19/49
Technologie procesorů a pamět (3) [6] [7] 20/49
Sekundární paměť Permanentní paměť Data uchovávána i po odpojení napájení Datové soubory a spustitelné programy Není přímo adresovatelná procesorem (jedná se o vstupně/výstupní periferii, vyžaduje programové řízení) Pevné disky Magnetické rotační médium Adresace po sektorech (512 B, 4 KB), přístupová doba v řádu jednotek až desítek ms (není konstantní) Solid-State Drive (SSD), Flash paměť Nepohyblivá, tranzistorová permanentní paměť (floating-gate MOSFET) Čtení po bitech, zápis po blocích (asymetrické operace čtení a zápisu), konstantní přístupová doba v řádech desítek až stovek µs 21/49
Základní organizace počítače Počítač vstup výstup paměť procesor datová cesta řízení Nezávisí na technologii pasuje na současné i minulé počítače Zdroj: P&H 22/49
Interakce s okolím Vstupní zařízení klávesnice, myš, tablet, snímač otisků, joystick Výstupní zařízení CRT monitor, LCD panel, grafická karta, tiskárna Vstupně/výstupní zařízení síťová karta, pevný disk, zvuková karta, kamera, volant + pedály se zpětnou vazbou (forcefeedback),... 23/49
Grafický výstup na obrazovku Paměť na grafické kartě (framebuffer) každé místo v paměti (nebo shluk několika míst) odpovídá jednomu obrazovému bodu obsah místa v paměti reprezentuje barvu velikost místa určuje barevné rozlišení Zdroj: P&H 24/49
Základní koncept architektury počítačů Aneb... Co nevidíte na svém (oblíbeném) programu? 25/49
Od zapnut počítače k běžící aplikaci Firmware BIOS (Basic Input/Output System) Zavaděč operačního systému Boot sector Boot loader Operační systém Uživatelské rozhraní Aplikace 26/49
Stovky tisíc řádků kódu Aplikační software Např. textový editor Knihovny pro uživatelské rozhraní Systémový software Operační systém Vstupně/výstupní operace Alokace paměti a úložného prostoru Sdílení prostředků Hardware Firmware Hardware Procesor, paměť, periferie 27/49
Od uživatele k algoritmu Smaž odstavec Nastav písmo... Uživatel 28/49
Od uživatele k algoritmu Smaž odstavec Nastav písmo... document.par[i].value =...; document.set_font(...);... Algoritmus Uživatel 29/49
Od uživatele k algoritmu Smaž odstavec Nastav písmo... document.par[i].value =...; document.set_font(...);... Sémantická mezera Algoritmus Uživatel 30/49
Od algoritmu k programu document.par[i].value =...; document.set_font(...);... Algoritmus 31/49
Od algoritmu k programu MULI $2, $5, 4 ADD $2, $4, $2 LW $16, 0($2)... document.par[i].value =...; document.set_font(...);... Algoritmus Sémantická mezera Program 32/49
Od programu ke strojovému kódu MULI $2, $5, 4 ADD $2, $4, $2 LW $16, 0($2)... Program 33/49
Od programu ke strojovému kódu MULI $2, $5, 4 ADD $2, $4, $2 LW $16, 0($2)... Program 0101001010010 0110101001101 0111010110101... Sémantická mezera Procesor 34/49
Základní koncept architektury počítačů Abstrakce 35/49
Abstrakce Překonávání sémantických mezer Postup od konkrétního (technického) jazyka k abstraktnímu (obecnému) jazyku Ideálně se zachováním přesnosti, ale využit šířeji definovaných pojmů a zapouzdření vnitřních detailů Stručnější a kompaktnější vyjádření An abstraction is one thing that represents several real things equally well. (Edsger Dijkstra) 36/49
Abstrakce (2) Vhodný jazyk pro danou úroveň abstrakce Řídící logika procesoru Pomocí jednotky ALU sečti hodnotu z registru A a hodnotu z registru B, výsledek ulož do registru C Strojový kód: instrukce (slova) nad abecedou {0, 1} 1000110010100000 Assembler: symbolický zápis instrukcí programu add R2, R3, R1 Vyšší programovací jazyk: symbolický zápis algoritmu fruits := apples + oranges 37/49
Abstrakce (3) Vhodný jazyk pro danou úroveň abstrakce Překlad mezi jazyky = překonávání sémantické mezery Jazyk vyšší úrovně = vyšší produktivita člověka Doménově-specifické jazyky Jazyk nižší úrovně = vyšší produktivita stroje Strojový kód Překladač Překlad z vyššího programovacího jazyka do jazyka nižší úrovně (často až do symbolického zápisu instrukcí konkrétního procesoru) Assembler Překlad ze symbolického zápisu instrukcí do binárního kódu vykonatelného konkrétním procesorem 38/49
Příklad: Záměna k. a (k+1). prvku pole Vyšší programovací jazyk void swap(unsigned int array[], unsigned int k) { unsigned int old = array[k]; array[k] = array[k + 1]; array[k + 1] = old; } 39/49
Příklad: Záměna k. a (k+1). prvku pole (2) Symbolický zápis instrukcí pro MIPS swap: sll addu lw lw sw sw jr $a1, $a1, $v0, $v1, $v1, $v0, $ra $a1, 2 $a1, $a0 0($a1) 4($a1) 0($a1) 4($a1) 40/49
Příklad: Záměna k. a (k+1). prvku pole (2) Symbolický zápis instrukcí pro SuperH swap: shll2 mov add mov.l add add mov.l mov.l rts mov.l r5 r4,r1 r5,r1 @r1,r2 #4,r5 r5,r4 @r4,r3 r3,@r1 r2,@r4 41/49
Příklad: Záměna k. a (k+1). prvku pole (3) Symbolický zápis instrukcí pro x86-64 swap: movslq leaq leaq movl movl movl movl retq %esi, %rsi (%rdi, %rsi, 4), %rdx 4(%rdi, %rsi, 4), %rax (%rdx), %ecx (%rax), %esi %esi, (%rdx) %ecx, (%rax) 42/49
Příklad: Záměna k. a (k+1). prvku pole (4) Zápis ve strojovém kódu pro MIPS 00000000000001010010100010000000 00000000101001000010100000100001 10001100101000100000000000000000 10001100101000110000000000000100 10101100101000100000000000000100 10101100101000110000000000000000 00000011111000000000000000001000 43/49
Příklad: Záměna k. a (k+1). prvku pole (4) Zápis ve strojovém kódu pro SuperH 0000100001000101 0100001101100001 0101110000110001 0001001001100010 0000010001110101 0101110000110100 0100001001100011 0011001000100001 0000101100000000 0010001000100100 44/49
Příklad: Záměna k. a (k+1). prvku pole (5) Zápis ve strojovém kódu pro x86-64 010010000110011111110110 01001000100011010001010010110111 0100100010001101010001001011011100000100 1000101100001010 1000101101110000 1000100101110010 1000100100001000 11000111 45/49
Implementace Opačný směr než abstrakce Konkretizace Od architektury počítače ke konkrétnímu fyzickému počítači Vysokoúrovňový jazyk Blokové schéma, logický popis obvodů Nízkoúrovňový jazyk Schéma zapojení elektronických součástek, schéma polovodičových prvků na integrovaném obvodu Strojový kód Samotná fyzická realizace počítače 46/49
Aplikace Sofware Uživatelské rozhraní Výkonné jádro aplikace Aplikační knihovny Operační systém Rozhraní HW/SW Instrukční architektura (ISA) Hardware Úroveň abstrakce Vrstvy abstrakce počítače Datová cesta, řízení Logické obvody Tranzistory 47/49
Pozor: abstrakce je jen nástroj! 48/49
Reference [1] [2] [3] [4] [5] [6] [7] http://upload.wikimedia.org/wikipedia/commons/thumb/a/af/dm_ibm_s360.jpg/800px-dm_ibm_s360.jpg http://upload.wikimedia.org/wikipedia/commons/2/21/front_z9_2094.jpg http://upload.wikimedia.org/wikipedia/commons/3/31/raspberry_pi_2_model_b_v1.1_top_new_%28bg_cut_out%29.jpg http://upload.wikimedia.org/wikipedia/commons/a/ac/computer_from_inside_018.jpg http://upload.wikimedia.org/wikipedia/commons/d/dd/microatx_motherboard_with_amd_athlon_processor_2_digon3.jpg http://upload.wikimedia.org/wikipedia/commons/2/23/monokristalines_silizium_f%c3%bcr_die_waferherstellung.jpg http://upload.wikimedia.org/wikipedia/commons/d/d7/wafer_2_zoll_bis_8_zoll_2.jpg 49/49