Architektura počítačů

Podobné dokumenty
Architektury počítačů

Architektura počítačů

C2115 Praktický úvod do superpočítání

Základní principy zobrazení čísla Celá čísla s pevnou řádovou čárkou Zobrazení reálných čísel Aritmetika s binárními čísly

Architektury počítačů

Číselné soustavy v mikroprocesorové technice Mikroprocesorová technika a embedded systémy

Struktura a architektura počítačů (BI-SAP) 6

Architektury počítačů

Čísla v plovoucířádovéčárce. INP 2008 FIT VUT v Brně

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

Struktura a architektura počítačů (BI-SAP) 5

Aritmetické operace a obvody pro jejich realizaci

v aritmetické jednotce počíta

3 Jednoduché datové typy Interpretace čísel v paměti počítače Problémy s matematickými operacemi 5

Pohled do nitra mikroprocesoru Josef Horálek

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Algoritmy I. Číselné soustavy přečíst!!! ALGI 2018/19

35POS 2010 Počítačové systémy 1 Úvod, jazyk C Doc. Ing. Bayer Jiří, Csc. Ing. Pavel Píša

Algoritmy a datové struktury

E. Pohyblivářádováčárka

Čísla a číselné soustavy.

PB002 Základy informačních technologií

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

2.8 Procesory. Střední průmyslová škola strojnická Vsetín. Ing. Martin Baričák. Název šablony Název DUMu. Předmět Druh učebního materiálu

Fz =a z + a z +...+a z +a z =

PROCESOR. Typy procesorů

Přednášky o výpočetní technice. Hardware teoreticky. Adam Dominec 2010

Ahoj mami. Uložení dat v počítači. Příklady kódování dat. IAJCE Přednáška č. 4

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

Y36SAP. Osnova. Číselné soustavy a kódy, převody, aritmetické operace Y36SAP Poziční číselné soustavy a převody.

Principy počítačů I Reprezentace dat

FPGA + mikroprocesorové jádro:

Mikroprocesorová technika (BMPT)

Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus

Technické prostředky počítačové techniky

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

NSWI /2011 ZS. Principy cpypočítačůčů aoperačních systémů ARCHITEKTURA

Zpracování obrazu v FPGA. Leoš Maršálek ATEsystem s.r.o.

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

Číselné soustavy. Binární číselná soustava

Hardware - komponenty počítačů Von Neumannova koncepce počítače. Von Neumannova koncepce počítače

Počítač jako elektronické, Číslicové zařízení

Čísla, reprezentace, zjednodušené výpočty

HW počítače co se nalézá uvnitř počítačové skříně

BI-JPO (Jednotky počítače) Cvičení

Číselné vyjádření hodnoty. Kolik váží hrouda zlata?

Architektura počítačů Logické obvody

Úvod do architektur personálních počítačů

Architektura počítačů

Struktura a architektura počítačů

PJC Cvičení #2. Číselné soustavy a binární reprezentace proměnných

Jak do počítače. aneb. Co je vlastně uvnitř

SYSTÉMY NAČIPU MI-SOC

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

LOGICKÉ OBVODY X36LOB

Architektury počítačů a procesorů

Základní pojmy informačních technologií

Informatika Datové formáty

Y36SAP - aritmetika. Osnova

GPGPU Aplikace GPGPU. Obecné výpočty na grafických procesorech. Jan Vacata

Architektura počítačů Logické obvody

G R A F I C K É K A R T Y

Čísla, reprezentace, zjednodušené výpočty

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

Paměti. Paměť je zařízení, které slouží k ukládání programů a dat, s nimiž počítač pracuje

Profilová část maturitní zkoušky 2014/2015

Identifikátor materiálu: ICT-1-08

Paměti Rambus DRAM (RDRAM) Paměti Flash Paměti SGRAM

Hardware. Příklad převodu čísla: =1*32+0*16+0*8+1*4+0*2+1*1= Převod z dvojkové na desítkovou Sčítání ve dvojkové soustavě

Základní deska (1) Parametry procesoru (2) Parametry procesoru (1) Označována také jako mainboard, motherboard

1 Osobní počítač Obecně o počítačích Technické a programové vybavení... 4

Datové typy a jejich reprezentace v počítači.

Základní pojmy. Program: Algoritmus zapsaný v programovacím jazyce, který řeší nějaký konkrétní úkol. Jedná se o posloupnost instrukcí.

Struktura a architektura počítačů (BI-SAP) 1

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

Představení a vývoj architektur vektorových procesorů

Architektura Intel Atom

Struktura a architektura počítačů

Paměťové prvky. ITP Technika personálních počítačů. Zdeněk Kotásek Marcela Šimková Pavel Bartoš

Hlavní využití počítačů

Obecné výpočty na GPU v jazyce CUDA. Jiří Filipovič

Principy počítačů a operačních systémů

Jan Nekvapil ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická

Úloha 1 Spojte binární obrazy na obrázku s hodnotami, které reprezentují.

pouˇzití USB nebo SPI

Programování v jazyce C pro chemiky (C2160) 12. Specifické problémy při vývoji vědeckého softwaru

Osobní počítač. Zpracoval: ict Aktualizace:

Opakování programování

Y36SAP

Elementární datové typy

VÝUKOVÝ MATERIÁL. 3. ročník učebního oboru Elektrikář Přílohy. bez příloh. Identifikační údaje školy

Metody připojování periferií

VÝUKOVÝ MATERIÁL. 3. ročník učebního oboru Elektrikář Přílohy. bez příloh. Identifikační údaje školy

Procesor Intel Pentium (1) Procesor Intel Pentium (3) Procesor Intel Pentium Pro (1) Procesor Intel Pentium (2)

Metody připojování periferií BI-MPP Přednáška 2

Úvod do programování 7. hodina

Základy jazyka C. Základy programování 1 Martin Kauer (Tomáš Kühr)

Sbě b r ě n r i n ce

Transkript:

Architektura počítačů Počítačová aritmetika a úvod Pavel Píša, Michal Štepanovský, Miroslav Šnorek České vysoké učení technické, Fakulta elektrotechnická Ver.2.0 1

Základní cíl předmětu Cíl je porozumět struktuře počítače, abyste mohli lépe využít jeho možností k dosažení jeho vyššího výkonu. Dále je probíraná návaznostech/propojení HW/SW (periferie) Vychází ze světově uznávané knihy autorů Paterson, D., Henessy, V.: Computer Organization and Design, The HW/SW Interface. Elsevier, ISBN: 978-0-12370606-5 Stránky předmětu: https://cw.fel.cvut.cz/wiki/courses/b35apo/start Cílem tohoto předmětu není naučit vás počítač navrhnout (viz B4M35PAP Pokročilé architektury počítačů a B4M38AVS Aplikace vestavných systémů ) 2

Motivační příklad: (neformální uvedení do probíraných témat) Autonomní řízení automobilů Zdroj: http://www.nvidia.com/object/autonomous-cars.html Mnoho úloh z oblasti umělé inteligence založeno na hlubokých neuronových sítích (deep neural networks) Průchod neuronové sítě maticové násobení 3

Průchod neuronové sítě maticové násobení Výsledky jednoho z mnoha experiemntů Naivní algoritmus (3 for) 3.6 s = 0.28 FPS Optimalizace přístupů k paměti 195 ms = 5.13 FPS (bezpodmínečně nutná znalost HW) Čtyři jádra 114 ms = 8.77 FPS (nutnost výběru minimální nutné synchronizace) GPU (256 procesorů) 25 ms = 40 FPS (znalost předávání dat mezi hlavním CPU a koprocesory) Naivním algoritmus, mat. knihovnou Eigen (1 jádro a 4 jádra (2 fyzické) na i7-2520m, kompilace s -O3), GPU na základě měření Joela Matějky ze zkupiny http://industrialinformatics.cz/ kde se v rámci evropských projektů vývojem operačních systémů a budoucích SW platforem pro autonomní řízení zabýváme Jak docílit zrychlení? 4

Optimalizace přístupů k paměti Úprava algoritmu s ohledem na paměťovou hierarchii Data z (vyrovnávací) paměti blízko procesoru lze získat rychleji (rychlé paměti mají ale malou velikost) 5

Predikce skoků / přístupů k paměti Kvůli zvýšení průměrného výkonu je vykonávání instrukcí rozděleno na několik fází => nutnost načítat několik instrukcí / dat dopředu Každý podmínka (if, loop) znamená možný skok špatná predikce je drahá Je dobré mít představu jak predikce fungují a jaké alternativy na daném CPU/HW ke skokům existují. (Např. vektorové/multimediální inst.) Zdroj: https://commons.wikimedia.org/wiki/file:plektita_trakforko_14.jpeg 6

Paralelizace vícejádrový procesor Požadavky na synchronizaci Vzájemné propojení a možnosti komunikace mezi procesory Přesuny mezi úrovněmi paměti jsou velmi drahé Nevhodné sdílení mezi jádry vede k pomalejšímu kódu než na jednom CPU Intel Nehalem Processor, Original Core i7 Zdroj: http://download.intel.com/pressroom/kits/corei7/images/nehalem_die_shot_3.jpg 7

Výpočetní koprocesory GPU Procesor s mnoha jednoduchými jádry (stovky) Některé jednotky sdílené Pro efektivní využití nutno znát základní hardwarové vlastnosti Zdroj: https://devblogs.nvidia.com/parallelforall/inside-pascal/ 8

GPU Maxwell GM204 5200 miliónů tranzistorů 398 mm2 PCIe 3.0 x16 2048 výpočetních jednotek 4096 MB 1126 MHz 7010 MT/s 72.1 GP/s 144 GT/s 224 GB/s Zdroj: http://www.anandtech.com/show/8526/nvidia-geforce-gtx-980-review/3 9

FPGA návrh/prototyp vlastního hardware Programovatelné hradlové pole Umožňuje efektivní naprogramování specifických funkcí (filtry obrazové nebo zvukové, FFT analýzu, vlastní procesor ) Připravené bloky na čipu jsou pospojovány programátorem Zynq 7000 FPGA několik ARM jader propojených s FPGA rychlý a snadný přístup k FPGA/periferiím z programu (setkáte se na cvičeních, ale v rámci APO nebudete programovat FPGA, hardware bude již připravený) 10

Xilinx Zynq 7000 a MicroZed APO MicroZed Zdroj: http://microzed.org/product/microzed Zdroj: https://www.xilinx.com/products/silicon-devices/soc/zynq-7000.html Zdroj: https://cw.fel.cvut.cz/wiki/courses/b35apo/start 11

MZ_APO parametry Základní čip: Zynq-7000 All Programmable SoC Typ: Z-7010, součástka XC7Z010 CPU: Dual ARM Cortex -A9 MPCore @ 866 MHz (NEON & Single / Double Precision Floating Point) 2x L1 32+32 kb, L2 512 KB FPGA: 28K Logic Cells (~430K ASIC logic gates, 35 kbit) Výpočetní jednotky v FPGA: 100 GMACs Paměti v FPGA: 240 KB Paměť na desce MicroZed: 1GB Operační systém: GNU/Linux GNU LIBC (libc6) 2.19-18+deb8u7 Jádro Linux 4.9.9-rt6-00002-ge6c7d1c Distribuce: Debian Jessie 12

MZ_APO Logický návrh v SW Xilinx Vivado 13

MZ_ZPO propojení sběrnic canbench_cc_gpio_0 CAN1_RXD processing_system7_0 GPIO_O[63:0] GPIO_0 GPIO_I[63:0] GPIO_O[63:0] DDR FIXED_IO KEY[3:0] SW[7:0] GPIO_I[63:0] LED[7:0] canbench_cc_gpio_v1_0 DDR FIXED_IO CAN_0 CAN0_PHY_TX S_AXI_GP0 CAN1_TXD CAN0_PHY_RX M_AXI_GP0_ACLK CAN_1 S_AXI_GP0_ACLK CAN1_PHY_TX IRQ_F2P[1:0] CAN1_PHY_RX CAN2_TXD USBIND_0 M_AXI_GP0 TTC0_WAVE0_OUT TTC0_WAVE1_OUT TTC0_WAVE2_OUT FCLK_CLK0 FCLK_RESET0_N ZYNQ7 Processing System CAN2_RXD axi_pwm_coprocessor_0 axi_mem_intercon S00_AXI m00_axi_aclk M00_AXI m00_axi_aresetn s00_axi_aclk m00_axi_error m00_axi_txn_done s00_axi_aresetn processing_system7_0_axi_periph axi_pwm_coprocessor_v1.0 (Pre Production) S00_ARESETN[0:0] M00_ACLK M00_ARESETN[0:0] S00_ACLK S01_ACLK M01_ACLK M01_AXI M01_ARESETN[0:0] M02_AXI M02_ACLK M03_AXI M02_ARESETN[0:0] M04_AXI M03_ACLK M05_AXI M03_ARESETN[0:0] M06_AXI audio_single_pwm_0 m00_axi_aclk M06_ACLK M06_ARESETN[0:0] peripheral_aresetn[0:0] AXI Interconnect s00_axi_aclk M00_AXI speaker_pwm_out irq_rq_out m00_axi_aresetn audio_single_pwm_v1.0 (Pre Production) In0[0:0] m00_axi_aresetn LCD_WR lcd_data[15:0] LCD_RS LCD_D[15:0] irq_rq_out display_16bit_cmd_data_bus_v1.0 (Pre Production) Concat spi_leds_and_enc_0 S00_AXI spi_led_reset RESET spi_led_encin spi_led_clk LEDCLK s00_axi_aclk spi_led_cs LEDCS s00_axi_aresetn ENCDATA LCD_CS lcd_dc dout[1:0] In1[0:0] LCD_RST lcd_cs_n lcd_wr_n lcd_rd_n m00_axi_aclk xlconcat_0 S00_AXI s00_axi_aresetn M05_ARESETN[0:0] lcd_res_n S00_AXI s00_axi_aresetn M04_ARESETN[0:0] M05_ACLK M00_AXI AXI Interconnect s00_axi_aclk peripheral_reset[0:0] Processor System Reset S02_ARESETN[0:0] M04_ACLK bus_struct_reset[0:0] interconnect_aresetn[0:0] display_16bit_cmd_data_bus_0 S02_ACLK M00_AXI aux_reset_in dcm_locked M00_AXI S01_ARESETN[0:0] M00_ARESETN[0:0] ext_reset_in mb_debug_sys_rst S00_ACLK ARESETN[0:0] M00_ACLK mb_reset S02_AXI ARESETN[0:0] ACLK S00_ARESETN[0:0] slowest_sync_clk S01_AXI ACLK S00_AXI rst_processing_system7_0_100m S00_AXI spi_led_data LEDDATA spi_leds_and_enc_v1.0 (Pre Production) SPEAKER servo_led_ps2_0 S00_AXI s00_axi_aclk s00_axi_aresetn SERVO1 SERVO1 SERVO2 SERVO2 SERVO3 SERVO3 SERVO4 SERVO4 servo_led_ps2_v1.0 (Pre Production) 14

Operační systém GNU/Linux od trpaslíků... 15

Linux od trpaslíků po superpočítače TOP500 https://www.top500.org/ (https://en.wikipedia.org/wiki/top500 ) Současný první: Sunway TaihuLight, Sunway MPP, SW26010 Sunway, NRCPC (Čína) Příklad parametrů: IBM Roadrunner, Los Alamos National Laboratory Majitel: National Nuclear Security Administration, USA LINPACK/BLAS (Basic Linear Algebra Subprograms) systém Architectura: 12,960 IBM PowerXCell 8i CPUs, 6,480 AMD Opteron dual-core processors, Infiniband, Linux Systém: Red Hat Enterprise Linux a Fedora Napájení: 2.35 MW Velikost: 296 stojanů 560 m2 Pamět: 103.6 TiB Výkon 1.042 petaflops Cena: USD $125M SGI SSI (single system image) Linux, 2048 Itanium CPU a 4TiB RAM 16

Linux kernel a open-source Projekt jádra Linux od roku 2005 přispělo 13,500 vývojářů přidáno 10,000 řádek kódu deně 8,000 zrušeno a 1,500 až 1,800 změněno Správa kódu verzovací systém GIT Úspěšných projektů s otevřeným zdojovým kódem je mnoho Zapojit se může každý Google Summer of Code pro studenty univerzit https://developers.google.com/open-source/gsoc/ Zdroj: https://www.theregister.co.uk/2017/02/15/think_different_shut_up_and_work_harder_says_linus_torvalds/ 17

Zpět k motivačnímu příkladu autonomního řízení Výsledek dobré znalosti hardware Zrychlení (v našem případě 18 při využití stejného počtu jader) Snížení potřebného výkonu Úspora energie Možnost zmenšení aktuálních řešení 18

Aplikovatelnost znalostí a postupů probíraných v předmětu Aplikace nejen v autonomním řízení V jakémkoli embedded zařízení znížení velikosti, spotřeby, spolehlivosti V datových vědách značné zkrácení doby běhu a úspora energie při výpočtech V uživatelském rozhraní zlepšení odezvy aplikace Prakticky všude 19

Proč je potřeba studovat i nízkoúrovňovou konstrukci počítače Pro návrh nové počítačové/procesorové architektury Pro implementaci vybrané architektury v integrovaném obvodu/fpga Pro obvodový návrh hardware/systému (velké nebo vestavné systémy) Pro porozumění obecným otázkám a problémům ohledně počítačů, jejich architektur a výkonnosti Pro to jak efektivně využívat existující hardware (to znamená, jak psát kvalitní software) Bez přehledu a pochopení chování, možností, omezení a limitace zdrojů není možné efektivně využít žádný hardware (pro moderní HW s více jádry a výpočetními subsystému to platí dvojnásob) Určitě lze vytvořit dobře placené programy i bez těchto znalostí, ale budou vyžadovat mnohonásobně silnější hardware a budou plýtvat zdroji. Není však takto možné vytvořit žádné náročné aplikace ať již na výkon nebo pro ušetření energie. Přitom to je oblast kde probíhá skutečný vývoj a mají z dlouhodobějšího technologického a i vědeckého pohledu smysl. 20

Další motivace a příklady Předkládané znalosti jsou nutné pro každého programátora, jehož aplikace pracují i jen s větším ovšem dnes běžným množstvím dat nebo vyžadují netriviální výpočetní výkon Žádná práce s multimédii nemůže být vykonána dobře bez takovýchto znalostí 1/3 našeho kurzu je zaměřená i na přístup k periferiím Další příklady Facebook HipHop for PHP -> C++/GCC -> machine code RedHat JAVA JIT for ARM for future servers generation Multimedia and CUDA computations Photoshop, GIMP (organizace dat v paměti) Knot-DNS (RCU, Copy on write, Cuckoo hashing) 21

Architektura dnešního PC??? 22

PC Blokový diagram propojení sběrnic RAM RAM RAM Microprocessor End point Root complex End point End point End point End point End point End point Switch End point End point End point 23

PC Blokový diagram propojení sběrnic RAM RAM RAM Microprocessor End point End point Root complex End point End point End point Switch GPU End point End point End point End point End point 24 24

PC Blokový diagram propojení sběrnic Další USB porty Wi-fi? RAM RAM RAM Microprocessor End point End point Root complex End point End point End point Switch GPU End point End point End point End point End point 25 25

John von Neumann, maďarský fyzik Architektura počítače podle JvN + Paměť Procesor řadič Vstup Princeton Institute for Advanced Studies 28. 12. 1903 8. 2. 1957 ALU Výstup 5 funkčních jednotek řídicí jednotka (řadič), aritmeticko-logická jednotka, paměť, vstupní zařízení, výstupní zařízení Nezávislost struktury počítače na zpracovávaných problémech. Musí se zavést program a musí se uložit do paměti. Ten řídí činnost počítače. Programy a výsledky (data) se ukládají do téže paměti. Ta je rozdělena na stejně velké části (buňky), které jsou průběžně očíslované adresa. Po sobě jdoucí instrukce se ukládají do po sobě jdoucích buněk. Existují instrukce aritmetické, logické, přenosu, skokové a ostatní. 26

Fyzický adresní prostor a jeho význam 0xFFFF FFFF Fyzický adresní prostor je prostor, který přímo adresuje samotný procesor. motherboard BIOS, PnP, ACPI, 0xFEC0 0000 Paměťově mapovaný V/V prostor - RAM Tento prostor může procesor adresovat na jeho adresní sběrnici. 4 GB Rozšířená paměť - RAM 0x000F FFF0 Motheboard BIOS - ROM Video BIOS - ROM 1 MB Video paměť - video RAM BIOS data area - RAM 0x0000 0000 Real-mode interrupt vector table 27

Fyzický adresní prostor a jeho význam Adresa z CPU motherboard BIOS, PnP, ACPI, Paměťově mapovaný V/V prostor Rozšířená paměť - RAM Motheboard BIOS - ROM Video BIOS - ROM Video paměť - video RAM BIOS data area - RAM Real-mode interrupt vector table 28

Jak vypadá uvnitř smartphone? Samsung Galaxy S4 Android 5.0 (Lollipop) Linux 3.5.4 (2012/2014) Android Runtime (ART) 2 GB RAM 16 GB pro uživatele 1920 x 1080 display 8-jádrový CPU (čip Exynos 5410): čtyři 1.6 GHz ARM Cortex-A15 čtyři 1.2 GHz ARM Cortex-A7 29

Samsung Galaxy S4 Mechanická konstrukce Zdroj: http://www.techinsights.com/about-techinsights/overview/blog/samsung-galaxy-s4-teardown/ 30

Samsung Galaxy S4 Hlavní deska plošného spoje Power management Wi-fi (broadcom BCM4335) DSP procesor pro zpracování hlasu, audio codec Exynos 5410 (8-core CPU + 2GB DRAM) Multichip memory: 64 MB DDR SDRAM, 16GB NAND Flash, Controler Intel PMB9820 baseband processor (funkce rádia přes anténu - EDGE, WCDMA, HSDPA/HSUPA) Zdroj: http://www.techinsights.com/about-techinsights/overview/blog/samsung-galaxy-s4-teardown/ 31

Samsung Galaxy S4 Exynos 5410 paměť Rentgenový snímek paměťového modulu PoP (Package on Package), který je přiletovaný na vlastní čip CPU Čtyři 4Gb(it) čipy propojené dohromady do kapacity 2GB(yte) QDP Quad die package čtyři vrstvy nad sebou Zdroj: http://gamma0burst.tistory.com/m/600 32

Samsung Galaxy S4 Exynos 5410 Paměť DRAM při pohledu shora Zdroj: http://www.embedded-vision.com/platinum-members/embedded-vision-alliance/embedded-visiontraining/documents/pages/computational-photography-part-2 33

Samsung Galaxy S4 Exynos 5410 procesory Řez čipem Exynos 5410 (v jiné úrovni) Všimněte si rozdílných velikostí 4 jáder A7 a 4 jáder A15 Na čipu jsou mimo vlastního procesoru integrovány i další součásti: GPU, Video coder a decoder a další. Jedná se tedy o SoC (System on Chip) Zdroj: http://www.embedded-vision.com/platinum-members/embedded-vision-alliance/embedded-visiontraining/documents/pages/computational-photography-part-2, http://gamma0burst.tistory.com/m/600 34

Samsung Galaxy S4 propojení komponent NAND flash (16GB) Accelerometer Memory I/F (LPDDR3, emmc, SD) CPU Cortex A15 Quad core Camera CPU Cortex A7 Quad core Display GPS Peripheral I/F GPU SGX544 Tri core High speed I/F (HSIC/ USB) Baseband processor Wi-fi Application processor: Exynos ISP Audio DSP procesor pro audio 35

Společný koncept Paměť Procesor řadič Vstup ALU Výstup Procesor vykonává instrukce uložené v paměti (ROM, RAM) tak, aby obsluhoval periferie reagoval na vnější události a zpracovával data. 36

Přehled témat přednášek 3. přednáška: Paměťový subsystém hierarchie pamětí. Statická a dynamická paměť 2. přednáška: Návrh jednoduchého CPU, Vykonávání instrukcí, Funkce řadiče 4. přednáška: Paměťový subsystém virtuální paměť 7. přednáška: Vstupně/výstupní podsystém. SW pohled. RAM RAM RAM Microprocessor 5. přednáška: Princip zřetězeného zpracování instrukcí, Řešení hazardů uvnitř CPU End point End point Root complex End point End point End point End point End point Switch End point End point End point 6. přednáška: Vstupně/výstupní podsystém. HW pohled. Sběrnice PCI, propojení PCIe, USB, SerialATA, HyperTransport, QuickPath interconnect 37 37

Přehled témat přednášek 8. Předávání parametrů funkcím a virtuálním instrukcím operačního systému 9. Technické a organizační prostředky (vnější události, výjimky, reálný čas) 10.Sítě procesorů a počítačů 11.Klasická registrově orientované architektury CISC 12.Procesorová rodina INTEL x86, Od 8086 k EMT64 13.Přehled vývoje architektury a koncepcí CPU (RISC/CISC) 14.Víceúrovňový model počítače, virtualizace 38

Co je to architektura počítače? Application Algorithm Programming Language Original domain of the computer architect ( 50s- 80s ) Operating System/Virtual Machine Instruction Set Architecture (ISA) Microarchitecture Gates/Register-Transfer Level (RTL) Circuits Devices Physics Reference: John Kubiatowicz: EECS 252 Graduate Computer Architecture, Lecture 1. University of California, Berkeley 39

Co je to architektura počítače? Application Algorithm Programming Language Original domain of the computer architect ( 50s- 80s ) Operating System/Virtual Machine Instruction Set Architecture (ISA) Microarchitecture Gates/Register-Transfer Level (RTL) Circuits Devices Parallel computing, security, Domain of recent computer architecture ( 90s -???) Reliability, power, Physics Reference: John Kubiatowicz: EECS 252 Graduate Computer Architecture, Lecture 1. University of California, Berkeley 40

Co je to architektura počítače? Application Algorithm Programming Language Original domain of the computer architect ( 50s- 80s ) Operating System/Virtual Machine Instruction Set Architecture (ISA) Microarchitecture Gates/Register-Transfer Level (RTL) Circuits Devices Parallel computing, security, Domain of recent computer architecture ( 90s -???) Náš záběr v rámci APO Reliability, power, Physics Reference: John Kubiatowicz: EECS 252 Graduate Computer Architecture, Lecture 1. University of California, Berkeley 41

Hodnocení a podmínky absolvování Zápočet: Kategorie Body Nutné minimum 4 domácí úkoly 24 10 Hlavní test 20 10 Týmový projekt 20 5 Celkem Známka 64 Zkouška: Kategorie Body Písemná část zkoušky Ústní část zkoušky 30 +/- 10 Nutné minimum 15 0 A B C D E F Bodové rozmezí 90 a více 80-89 70-79 60-69 50-59 méně než 50 42

První cvičení fyzický adresní prostor na MZ_APO Adresa z CPU Paměťově mapovaný V/V prostor Rozšířená paměť - RAM 43

Přístup k LED diodám z C programu na MZ_APO int main(int argc, char *argv[]) { unsigned char *mem_base; /* virtuální adresa oblasti registrů */ volatile unsigned char *led_port; /* adresa portu s diodou*/ mem_base = map_phys_address(led_reg_base_phys, SPILED_REG_SIZE, 0); led_port = mem_base + SPILED_REG_LED_LINE_o; } While(1) { *led_port = 1; /* rozsviť diodu */ sleep(1); *led_port = 0; /* zhasni diodu */ sleep(1); } return 0; 44

Obsah látky 1. přednášky Jak se v počítači ukládají Čísla typu INTEGER, bez i se znaménkem, Čísla typu REAL, Hodnoty typu LOGICAL? Jak se realizují základní operace Sčítání, odčítání, Posuny, Násobení, dělení 45

MOTIVACE: Co program vytiskne? int main() { int a = -200; printf("hodnota: %u = %d = %f = %c \n", a, a, *((float*)(&a)), a); return 0; } hodnota: 4294967096 = -200 = nan = 8 0x38 0xff 0xff 0xff 46

Základní terminologie Číselná soustava: Nepoziční číselná soustava - hodnota číslice není dána jejím umístěním v dané sekvenci číslic, ale jejím vzhledem (zápisem/symbolem) http://diameter.si/sciquest/e1.htm Hodnota čísla může být dána prostým součtem hodnot jednotlivých číslic (Egyptské číslice) nebo je zapotřebí použít nějaká pravidla (Římské číslice) 47

Poziční číselná soustava Hodnota čísla tedy je: 1 333 331 48

Základní terminologie Číselná soustava: Poziční číselná soustava - hodnota každé číslice je dána její pozicí v sekvenci symbolů Množina všech symbolů (číslic) se nazývá abeceda Celá část je oddělena od zlomkové speciálním znakem (řádová čárka/tečka) abeceda - Například {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} pro desítkovou soustavu z základ (radix) soustavy obvykle přirozené číslo >1 a - číslice 49

Poziční číselná soustava Například dekadické číslo 348,31 má hodnotu 3*102 + 4*101 + 8*100 + 3*10-1 + 1*10-2 Pokud si zvolíme fixně počet pozic pro celočíselnou část (n+1) a počet pozic pro zlomkovou část (m), bude: n 0-1 -m an an-1 a0 a-1 a-m řádová čárka Nejmenší zobrazitelné číslo: ɛ = z-m, Modul - nejmenší hodnota, kterou již neumíme zobrazit: M=z n+1 Zobrazitelná čísla tedy leží v rozsahu: 0 A < M 50

Uložení čísel typu INTEGER bez znaménka Zvolme si tedy celkově například 8 pozic, z toho všechny pro celočíselnou část a základ soustavy roven z = 2. Binární hodnota Neznaménková reprezentace 00000000 0(10) 00000001 1(10) 01111101 125(10) 01111110 126(10) 28 = 256D (desítkově). Rozsah je příliš malý 01111111 127(10) 10000000 128(10) Řešení: proč nepoužít více bajtů? 10000001 129(10) 4B = 232 = 4 294 976 296D, 11111101 253(10) 11111110 254(10) 11111111 255(10) n 0 an an-1 a0 řádová čárka Rozsah tedy je: <0, 2-1>, nebo pokud N bude počet bitů: <0, 2N-1> n+1 51

Uložení čísel typu INTEGER bez znaménka Pořadové číslo kombinace bitů Binární reprezentace čísla N bitů A(X) Binární hodnota Neznaménková reprezentace 00000000 0(10) 00000001 1(10) 1 00..000 11..111 01111101 125(10) 01111110 126(10) 00..100 00..011 00..010 00..001 00..000 01111111 127(10) 10000000 128(10) 10000001 129(10) 11111101 253(10) 11111110 254(10) 11111111 255(10) X 0 M Vyjadřovaná hodnota Její matematický význam 52

Uložení čísel typu INTEGER se znaménkem n 0 s an an-1 a0 řádová čárka Přímý kód +0(10) 00000001 1(10) Znaménko a hodnota. Jde o přímý kód. 01111101 125(10) 01111110 Běžně dodržovaná dohoda: 126(10) 01111111 127(10) 10000000-0(10) Nevýhoda: jinak se musí při aritmetických operacích pracovat se znaménkovým bitem, jinak s bity hodnoty. 10000001-1(10) 10000010-2(10) 11111101-125(10) Jiná nevýhoda: máme 2 různá vyjádření nuly. 11111110-126(10) 11111111-127(10) Binární hodnota 00000000 0 +, 1 -. 53

Uložení čísel typu INTEGER se znaménkem Přímý kód pokračování Pokud N bude počet bitů: <-2N-1-1, 2N-1-1> A(X) M X -M/2 0 M/2 Binární hodnota 00000000 Přímý kód +0(10) 00000001 1(10) 01111101 125(10) 01111110 126(10) 01111111 127(10) 10000000-0(10) 10000001-1(10) 10000010-2(10) 11111101-125(10) 11111110-126(10) 11111111-127(10) 54

Propojení hardware, signálů a software V programovacím jazyce C se celým číslům bez znaménka říká unsigned integers a v programu se deklarují jako unsigned int. Těm se znaménkem se říká integers a v programu se deklarují jako signed int. 55

Čísla INTEGER se znaménkem II. Inverzní kód jedničkový doplněk (one's complement): Výhodnější varianta něž přímý kód Proč výhodnější? Úspora v HW! Jedničkový doplněk záporného čísla se (ve dvojkové soustavě) vytvoří bitovou negací čísla kladného => inverze všech bitů (jedničkový doplněk) Dekadická hodnota Reprezentace v inverzím kódu na 4 bity 6 0110-6 1001 56

Uložení čísel typu INTEGER se znaménkem II. Inverzní kód pokračování Pokud N bude počet bitů: <-2N-1-1, 2N-1-1> A(X) M-1 M/2 X -M/2 0 M/2 Binární hodnota 00000000 Inverzní kód 0(10) 00000001 1(10) 01111101 125(10) 01111110 126(10) 01111111 127(10) 10000000-127(10) 10000001-126(10) 10000010-125(10) 11111101-2(10) 11111110-1(10) 11111111-0(10) 57

Čísla INTEGER se znaménkem III. Dvojkový doplněk (two's complement): Výhodnější varianta něž inverzní kód Proč výhodnější? Úspora v HW! Často se označuje nepřesně jako doplňkový kód Dvojkový doplněk záporného čísla se (ve dvojkové soustavě) připočtením 1 k nejnižšímu bitu záporného čísla reprezentovaného v inverzním kódu Jedničkový se od dvojkového doplňku se liší málo, jen o jedničku Na rozdíl od jednotkového inverzního kódu nevyžaduje přičítat horkou jedničku (Hot-One) při přechodu ze záporné na kladnou hodnotu. Stejná binární sčítačka je použitelná pro signed a unsigned. Dekadická hodnota Reprezentace v dvojkovém doplňku na 4 bity 6 0110-6 1010 58

Čísla INTEGER se znaménkem III. Dvojkový doplněk pokračování Pokud N bude počet bitů: <-2N-1, 2N-1-1> A(X) M M/2 X -M/2 0 M/2 Binární hodnota Dvojkový doplněk 00000000 0(10) 00000001 1(10) 01111101 125(10) 01111110 126(10) 01111111 127(10) 10000000-128(10) 10000001-127(10) 10000010-126(10) 11111101-3(10) 11111110-2(10) 11111111-1(10) 59

Doplňkový kód - příklady Příklady reprezentací: 0D = 00000000H 1D = 00000001H -1D = FFFFFFFFH 2D = 00000002H -2D = FFFFFFFEH 3D = 00000003H -3D = FFFFFFFDH Analogii dvojkového doplňku se v soustavě s jiným základem říká doplněk do modulu. Stejně se postupuje třeba v soustavě desítkové (doplněk do 10 ). Všimněte si: součet dvou opačných čísel se stejnou absolutní hodnotou je 00000000H. Přenos do vyššího řádu (bit 32) ignorujeme. Sčítáme vlastně mod 2 32. Jak je to vlastně v tomto kódování s přeplněním (přetečením) rozsahu? Budeme diskutovat později 60

Čísla INTEGER se znaménkem IV. Je i jiná možnost pro zobrazení čísel se znaménkem? Ano, dokonce často používaná (viz dále): kód aditivní (jinak zvaný s posunutou nulou ) A(X) M Obvykle volíme K=½M nebo K=½M 1 K -K 0 2N-1-K X -K 0 M-K -K 0 M-K-1 Připomenutí: M je modul 61

Sčítání a odčítání v aditivním kódu Platí: Detekce přeplnění sčítání: stejná znaménka sčítanců a jiné znaménko výsledku, odčítání: znaménka menšence a menšitele se liší a liší se znaménka menšence a výsledku. 62

Jak se v počítači zobrazují čísla typu REAL? Vědecká, neboli semilogaritmická notace. Dvojice: EXPONENT (E), ZLOMKOVÁ část (nazývaná též mantisa M). Mantisa x zakladexponent Notace je normalizovaná. Zlomková část vždy začíná binární číslicí 1, Obecně: nenulovou číslicí <1, z - 1>. Dekadicky: 7,26478 x 103 Binárně: 1,010011 x 21001 63

Propojení hardware, signálů a software Reprezentace je definovaná normou IEEE754 ve verzích jednoduchá (32 bitů) dvojnásobná přesnost (64 bitů) Nově (IEEE 754-2008) i poloviční (16 bitů především pro hry a barvy), a čtyřnásobná (128 bitů) a osminásobná přesnost (256 bitů) pro speciální vědecké výpočty V programovacím jazyce C se proměnné s jednoduchou a dvojnásobnou přesností deklarují jako float a double. 64

(De)normalizovaná čísla v desítkové a dvojkové soustavě binárně Sign of M Poloha řádové čárky (tečky) pro E i M 65

Reprezentace/kódování čísla v pohyblivé řádové čárce Kód mantisy: přímý kód znaménko a absolutní hodnota Kód exponentu: aditivní kód (s posunutou nulou) (K=127 pro jednoduchou přesnost) Implicitní počáteční jednička může být pro normalizovanou mantisu vynechaná m 1, 2) rozlišení 23+1 implicitní bit pro jednoduchou přesnost X = -1s 2A(E)-127 m znaménko M kde m 1, 2) m = 1 + 2-23 M Poloha řádové čárky (tečky) pro E i M 66

Implicitní (skrytá) počáteční jednička Pro každé normalizované číslo je nejvýznamnější bit mantisy jedna a není ho potřeba ukládat (rezervovat pro něj místo) Pokud je reprezentace exponentu 0 (-K) nebo pokud je číslo denormalizované, tak je prostor pro uložení mantisy využitý pro hodnotu včetně počáteční jedničky nebo nuly Denormalizovaná čísla umožňují zachovat rozlišení v rozsahu od nejmenšího normalizovaného čísla směrem k nule oblast - - podtečení - normalizovaných čísel 0 denormalizované normalizované - nejmenší kladné vyjádřitelné číslo 67

ANSI/IEEE Std 754-1985 (2008) 32b a 64b formát ANSI/IEEE Std 754-1985 jednoduchý formát 32b ANSI/IEEE Std 754-1985 dvojnásobný formát 64b g... 11b f... 52b 68

Příklady reprezentace některých důležitých hodnot Nula kladná 0 00000000 00000000000000000000000 +0.0 záporná 1 00000000 00000000000000000000000-0.0 Nekonečno kladné 0 11111111 00000000000000000000000 +Inf záporné 1 11111111 00000000000000000000000 -Inf Hraniční hodnoty pro jednoduchý formát Největší normalizované (2-2-23)2127 0 11111110 11111111111111111111111 +3.4028 10+38 Nejmenší normalizované (1-127) ±2 * 00000001 00000000000000000000000 ±1.1755 10-38 Největší * 00000000 11111111111111111111111 ±(1-2-23)2-126 denormalizované 2-23 2-126 Nejmenší * 00000000 00000000000000000000001 ±1.4013 10-45 denormalizované 69

Speciální hodnoty NaN, +Inf a -Inf Pokud není výsledek matematické operace pro daný vstup definovaný (log -1) nebo je výsledek nejednoznačný 0/0, +Inf - +Inf tak je uložena hodnota NaN (Not-a-Number) exponent nastavený na samé jedničky, mantisa nenulová Výsledkem operací, které pouze přetečou z rozsahu 1/0 (=+Inf), +Inf + +Inf (= +Inf) atd., je reprezentovaný hodnotou nekonečno (+Inf nebo -Inf) exponent samé jedničky, mantisa nuly 70

Shrnutí čísla a výjimky pro jednoduchou přesnost s-bit obraz exponentu m 0 0 < e < 255 1 m <2 * normalizované kladné číslo 1 0 < e < 255 1 m <2 * normalizované záporné číslo 0 0 m>0 0 denormalizované kladné (blízko nuly) 1 0 m>0 0 denormalizované záporné (blízko nuly) 0 0 0 0 kladná nula 1 0 0 0 záporná nula 0 255 =0 kladné nekonečno 1 255 =0 záporné nekonečno 0 255 0 NaN nečíselná/nevyjádřitelná hodnota 1 255 0 NaN nečíselná/nevyjádřitelná hodnota M význam 71

Porovnání dvou čísel ve FP Porovnání: je-li A B A B 0. Obrazy čísel A a B se odečtou jako čísla v přímém kódu a v pevné řádová čárce. To je výhodou zvoleného zobrazení čísel. Nebo je ještě jiný způsob? 72

Algoritmus sčítání v pohyblivé řádové čárce Ma x 2Ea + Mb x 2Eb Odečteme exponenty. Mantisu čísla s menším exponentem posuneme doprava o počet bitů, který je roven rozdílu exponentů. Sečteme mantisy obou čísel. Určíme počet nul mezi řádovou čárkou a první platnou číslicí součtu mantis. Posuneme součet doleva o tolik míst, kolik nul bylo nalezeno za řádovou čárkou. Zmenšíme původní exponent o počet nalezených nul. Zaokrouhlíme. 73

Hardware sčítačky v pohyblivé řádové čárce 74

Násobení čísel v pohyblivé řádové čárce Exponenty sečteme. Mantisy vynásobíme. Normalizujeme. Zaokrouhlíme. HW FP násobičky je srovnatelně složitý, jako FP sčítačky. Jen má namísto sčítačky násobičku. 75

Iterační dělička - Goldschmidt en m N en ed N mn 2 Q= = = 2 ed D m 2 md D Pokud jsou čísla v normalizovaném tvaru, pak platí: mn = 1.???????...? a m D = 1.???????...? tzn. 1 mn, md < 2 pokud uvažujeme celou mantisu, nebo 0,5 mn, md < 1 pokud bereme pouze zlomkovou část. Uvažujme pouze zlomkovou část (za desetinnou čárkou). Zřejmě můžeme md přepsat do tvaru: md =1-x, kde 0 < x 0,5 Jakou hodnotu má x? Spočítejme ji: x=1- m D Zvolme F0= 1+x. Všimněme si jakou vlastnost bude mít m D*F0 76

Iterační dělička - Goldschmidt Pokud F0=1+x. Potom md*f0 = (1-x)*(1+x) = 1-x2 N mn 2eN mn en ed mn F0 en ed Q 2 2 ed D md 2 md md F0 Pokud budeme volit Fi tak, aby jmenovatel konvergoval k 1, bude čitatel konvergovat k podílu mantis. Zvolme F1=1+x2. Potom md*f0*f1 = (1-x2)*(1+x2) = 1-x4 mn mn F0 F1 F2 F3... mn F0 F1 F2 F3... 2 2i mn (1 x)(1 x )...(1 x ) md md F0 F1 F2 F3... 1 77

Iterační dělička Goldschmidt vylepšená verze S rostoucím x (0 < x 0,5) se konvergence zhoršuje. Pokud x == 0.5 je nejhorší. Jinými slovy, pro fixní počet iterací se snižuje přesnost výsledku. Modifikace Goldschmidtova algoritmu spočívá v odhadu (nepřesném) převrácené hodnoty K hodnoty md z look-up tabulky podle několika málo prvních bitů ( 10). Místo původního x=1- md počítáme s x=1- KmD mn 2 2i mn K (1 x)(1 x )...(1 x ) md Tato dělička se používá v moderních CPU. Kontrolní otazka: Můžeme tuto deličku použít i pro INTEGER? 78

Zjednodušený přehled operací v plovoucí řádové čárce Sčítání: A za, B zb, b < a sjednocení exponentů B zb = (B zb-a) zb-(b-a) posunem mantisy A za + B zb = [A+(B zb-a)] za sečtení + normalizace Odčítání: sjednocení exponentů, odečtení a normalizace Násobení: A za B zb = A B za+b A B - normalizace je-li třeba A B za+b = A B z za+b-1 posunem doleva Dělení A za/b zb = A/B za-b A/B - případná normalizace A/B za-b = A/B z za-b+1 - posunem doprava 79

Najdete všechny chyby v programu? Chceme napsat program pro zjištění součtu: N 1 2 i 1 i #include <stdio.h> int main() { int i, sum=0; for(i=1; i<= 10^10; i++) sum += 1/i*i; printf( Soucet je: %d,sum); return 0; } 80

Najdete všechny chyby v programu? Který způsob je nejvýhodnější? N 1 N 1 1 1 2 2 2 i i ( N i 1 ) i 1 i N i 1 10 10 i 1 1 1.6449340578301865, 2 i 1 1 10 i 2 1.6449340667482264 i 10 typ double pro oba případy.. Proč se liší? 81

Překvapení na závěr??? #include <stdio.h> int main() { float x; x = 116777215.0; x = 116777216.0; x = 116777217.0; x = 116777218.0; x = 116777219.0; x = 116777220.0; x = 116777221.0; return 0; } printf("%.3lf\n", printf("%.3lf\n", printf("%.3lf\n", printf("%.3lf\n", printf("%.3lf\n", printf("%.3lf\n", printf("%.3lf\n", x); x); x); x); x); x); x); 82