Organizacja i Architektura Komputerów Literatura Literatura
Transcription
Organizacja i Architektura Komputerów Literatura Literatura
Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Organizacja i Architektura Komputerów prof. dr hab. in . Ryszard Pe!ka e-mail: rpelka@wsisiz.edu.pl Wprowadzenie 1 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Literatura [1] W. Stallings, Organizacja i architektura komputerów, WNT, 2004 (t!um. wydania 4) [2] B.S. Chalk, Organizacja i architektura komputerów, WNT, 1998 Literatura uzupe niaj!ca [1] D.A. Patterson, J.L. Hennessy, Computer Organization and Design: The Hardware/Software Interface, Morgan Kaufmann, 3rd edition, 2005 [3] P. Metzger, Anatomia PC, Helion, 2007 [4] A. Kowalczyk, Asembler, Croma, 1999 [2] [5] A. Skorupski, Podstawy budowy i dzia ania komputerów, WK#, 2005 J.P. Hayes, Computer Architecture Organization, McGraw-Hill, 4th edition, 2002 [3] W. Stallings, Computer Organization and Architecture, Prentice Hall, 6th edition, 2003 4 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Internet [1] Plan przedmiotu Computer Architecture WWW Home Page http://www.cs.wisc.edu/~arch/www strona Uniwersytetu Wisconsin Wprowadzenie – [2] – AMD web site http://www.amd.com – – [3] – Intel Developer’s Site http://developer.intel.com 5 6 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Plan przedmiotu (cd.) Plan przedmiotu (cd.) Historia i ewolucja komputerów – – – Procesor (CPU) wp!yw technologii na rozwój komputerów wydajno%& komputerów programy testuj"ce wydajno%& (benchmarki) – – – Arytmetyka komputerów – – – – kody liczbowe, konwersja kodów operacje arytmetyczne arytmetyka zmiennopozycyjna – – – – – standardowa architektura procesora jednostka wykonawcza i steruj"ca cykl wykonania rozkazu stos przerwania Architektury wspó!czesnych procesorów Uk!ady i bloki cyfrowe 7 Podstawowe poj$cia, terminologia Co to jest architektura komputerów? Co to jest organizacja komputerów? Bloki funkcjonalne komputerów Podstawowe zasady wspó!pracy bloków funkcjonalnych – bramki, przerzutniki, rejestry, liczniki, multipleksery pó!sumator i sumator jednostka arytmetyczno-logiczna ALU uk!ady mno enia i dzielenia – – 8 ogólna architektura procesorów IA-32 i IA-64 rejestry segmentacja pami$ci Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Plan przedmiotu (cd.) Plan przedmiotu (cd.) J$zyk asemblera Pami$& j$zyk asemblera i wysokiego poziomu tryby adresowania argumentów formaty instrukcji lista instrukcji (ISA), grupy instrukcji – – – – – – – – instrukcje przes!a' operacje arytmetyczne operacje logiczne, operacje na bitach skoki, p$tle, instrukcje steruj"ce – – – przyk!ady programów makroasemblery debugery – – – Pami$& cache – – – 9 technologie wytwarzania pami$ci pami$ci RAM, SRAM, DRAM pami$ci ROM, PROM, EEPROM i Flash wspó!praca procesora z pami$ciami bezpo%redni dost$p do pami$ci (DMA) segmentacja i stronicowanie pami$& wirtualna hierarchia systemu pami$ci metody odwzorowywania pami$ci cache spójno%& pami$ci cache 10 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Plan przedmiotu (cd.) Plan przedmiotu (cd.) Architektura RISC Potok instrukcji (pipeline) – – – – – dzia!anie przetwarzania potokowego przewidywanie skoków optymalizacja potoku instrukcji przyk!ady implementacji – – – – Architektura superskalarna – Podstawowe w!asno%ci Banki i okna rejestrów Przetwarzanie potokowe w architekturze RISC Przyk!ady procesorów Porównanie architektur RISC i CISC Architektura VLIW Zagadnienia fakultatywne: przyk!ady procesorów – – Przetwarzanie równoleg!e, systemy wieloprocesorowe Architektury wielordzeniowe Podsumowanie 11 12 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Egzamin Wyniki i obecno"# na wyk adach 100 90 80 70 60 50 40 30 20 10 0 pisemny test – – – – oko!o 10 zada' sprawdzaj"cych znajomo%& g!ównych zagadnie' poruszanych na wyk!adach zadania koncepcyjne i rachunkowe tematyka w ca!o%ci zwi"zana z wyk!adem szczegó!owe zagadnienia egzaminacyjne i przyk!ady zada' – w trakcie wyk!adu pozytywnie negatywnie Obecno"# >75% Obecno"# < 30% Dane z roku akademickiego 2006/2007 – dla wybranych grup studentów poddanych ankietyzacji 13 14 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Architektura i organizacja (1) Architektura i organizacja cd. ... the attributes of a [computing] system as seen by the programmer, i.e. the conceptual structure and functional behavior, as distinct from the organization of the data flows and controls the logic design, and the physical implementation. Architektura to atrybuty komputera „widoczne” dla programisty: – – lista instrukcji, liczba bitów stosowana do reprezentacji danych, mechanizm I/O, techniki adresowania np. czy dost$pna jest operacja mno enia? – Amdahl, Blaaw, and Brooks, 1964 Organizacja oznacza sposób implementacji architektury – – 15 (...atrybuty systemu komputerowego widziane przez programist$, tzn. koncepcyjna struktura i zachowanie funkcjonalne, w odró nieniu od organizacji przep!ywu danych, sterowania uk!adami logicznymi i fizycznej implementacji) sygna!y steruj"ce, interfejsy, technologia wykonania pami$ci itp. np. czy mno enie jest realizowane sprz$towo, czy przez sekwencj$ dodawa'? 16 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Architektura i organizacja cd. Architektura i organizacja cd. wszystkie procesory Intel x86 maj" podobn" podstawow" architektur$ to zapewnia zgodno%& programow" – przynajmniej w dó! (backward compatibility) organizacja poszczególnych wersji procesorów Intel x86 jest ró na Software Design Hardware Design 17 18 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Architektura i organizacja cd. Ewolucja poj$cia „architektura” 1950s to 1960s: Computer Architecture Course: Computer Arithmetic 1970s to mid 1980s: Computer Architecture Course: Instruction Set Design, especially ISA appropriate for compilers 1990s: Computer Architecture Course: Design of CPU, memory system, I/O system, Multiprocessors, Networks 2010s: Computer Architecture Course: Self adapting systems? Self organizing structures? DNA Systems/Quantum Computing? Architektura komputera = architektura listy instrukcji + ... John Kubiatowicz, Berkeley University 19 20 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Przyk ady ISA (Instruction Set Architecture) Digital Alpha v1, v3 ... 1992 HP PA-RISC v1.1, v2.0 1986 Sun Sparc v8, v9 1987 MIPS / ARM MIPS I, II, III, IV, V, 10k, 20k, 1986 ARM7, ARM9, ARM11, Cortex Funkcje i g ówne bloki komputera Funkcje – Intel / AMD 8086,80286,80386, 80486,Pentium, MMX, Pentium II, III, IV, ... – – – Bloki funkcjonalne 1978 – – – – 21 przechowywanie danych przesy!anie danych przetwarzanie danych funkcje steruj"ce pami$& podsystem I/O procesor (arytmometr) procesor (uk!ad steruj"cy) 22 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Bloki funkcjonalne komputera ... ale ró%ni! si$ wydajno"ci! Od 1946 r. komputery niezmiennie sk!adaj" si$ z 5 tych samych bloków: Procesor Wej"cie Sterowanie Pami ! Arytmometr Wyj"cie http://hrst.mit.edu/hrs/apollo/public/index.htm 23 24 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Komputer statku Apollo Komputer statku Apollo cd. 25 26 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Komputer statku Apollo cd., &ród o: M.I.T. Struktura komputera Apollo Guidance Computer (AGC) ! Word length: 16 bits (15 bits data + parity bit) ! First computer using integrated circuits (ICs) ! Magnetic core memory ! Fixed memory (ROM): ! Erasable memory (RAM): 36,864 words 2,048 words ! Number of instructions: 34 ! Cycle time: 11.7 sec ! Clock frequency: 85 kHz (!) ! Number of logic gates: 5,600 (2,800 packages) ! Weight: 30 kg ! Power consumption: 70 W 27 28 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Operacja 1 – przesy anie danych Operacja 2 – pami$tanie danych (I/O) Przyk!ad: Przyk!ad: MOV port_x, port_y MOV port_x, [mem] MOV [mem], port_y 29 30 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Przetwarzanie z pami$ci do I/O Przetwarzanie z/do pami$ci 31 Przyk!ad: Przyk!ad: ADD [mem], data ADD [mem], port_x 32 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Struktura komputera – wysoki poziom Struktura CPU CPU Computer Computer Peripherals Registers I/O Main Memory Central Processing Unit System Bus CPU Internal CPU Interconnection Memory Systems Interconnection Computer Arithmetic and Logic Unit Control Unit Input Output Communications lines 33 34 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Struktura uk adu sterowania Przyk adowa organizacja TI SuperSPARCtm TMS390Z50 in Sun SPARCstation20 Control Unit MBus Module SuperSPARC CPU Floating-point Unit Sequencing Logic ALU Internal Bus Control Unit Registers and Decoders Registers L2 Integer Unit Control Unit Inst Cache Ref MMU CC MBus Data Cache L64852 MBus control M-S Adapter DRAM Controller STDIO SBus Control Memory Store Buffer Bus Interface 35 DMA SBus Cards serial kbd mouse audio RTC Boot PROM Floppy 36 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Podstawowe poj$cia Podstawowe poj$cia Pami$# – – – – – pami$& o niewielkiej pojemno%ci (najcz$%ciej 8, 16, 32 lub 64 bitów) wbudowana do procesora lub innego uk!adu cyfrowego VLSI, wykonana zwykle jako SRAM (zbiór przerzutników) – 37 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Podstawowe poj$cia Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Podstawowe poj$cia cd. – – j$zyk programowania operuj"cy z!o onymi instrukcjami, niezrozumia!ymi dla procesora; program przed wykonaniem musi by& przet!umaczony na j$zyk asemblera – – zbiór linii przesy!aj"cych sygna!y mi$dzy blokami cyfrowymi systemu (adresy, dane, sygna!y steruj"ce) I/O – input/output – Complex Instruction Set Computer procesor wykorzystuj"cy bogaty zestaw (list$) instrukcji i liczne sposoby adresowania argumentów; charakterystyczn" cech" jest zró nicowana d!ugo%& instrukcji (w bajtach) i czas ich wykonania Architektura RISC (np. PowerPC, MIPS, ARM) Szyna, magistrala – cd. Architektura CISC (np. Pentium) j$zyk programowania operuj"cy elementarnymi instrukcjami zrozumia!ymi dla procesora J$zyk wysokiego poziomu (C, C++, C#, Python, Java) – generator impulsów taktuj"cych bloki funkcjonalne systemu cyfrowego 38 J$zyk asemblera – procesor z wieloma potokami instrukcji i wieloma uk!adami wykonawczymi (arytmometrami) Zegar – zmiennoprzecinkowy zapis liczb (znak, mantysa, wyk!adnik) ci"g instrukcji (zwykle kilku lub kilkunastu) pobranych przez procesor i wykonywanych etapami, tak jak na ta%mie produkcyjnej Procesor superskalarny arytmometr, g!ówny element bloku wykonawczego procesora zdolny do realizacji podstawowych operacji arytmetycznych i logicznych FP (floating-point) – nazywana podr$czn" lub kieszeniow" – dodatkowa pami$& buforowa umieszczona mi$dzy g!ówn" pami$ci" komputera (operacyjn") a procesorem; jej zadaniem jest przyspieszenie komunikacji procesora z pami$ci" g!ówn" Potok instrukcji (pipeline) ALU (arithmetic-logic unit) – cd. Pami$# cache w ogólnym znaczeniu – blok funkcjonalny do przechowywania informacji na okre%lonym no%niku (zwykle magnetycznym lub pó!przewodnikowym) pami$& RAM – pami$& pó!przewodnikowa zbudowana z przerzutników (SRAM) lub tranzystorów MOS (DRAM) Rejestr 39 SCSI Ethernet SBus uk!ady wej%cia/wyj%cia do komunikacji z otoczeniem 40 Reduced Instruction Set Computer procesor wykorzystuj"cy niewielki zbiór elementarnych rozkazów o zunifikowanej d!ugo%ci i takim samym czasie wykonania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Podsumowanie Architektura komputera oznacza jego w!a%ciwo%ci „widziane” przez programist$ (struktura rejestrów, lista instrukcji itp..) Organizacja komputera oznacza konkretn" implementacj$ (realizacj$) architektury przy u yciu okre%lonych uk!adów i bloków cyfrowych Komputer sk!ada si$ z 5 podstawowych elementów: uk!adu wykonawczego, uk!adu sterowania, pami$ci, uk!adów wej%cia i wyj%cia Uk!ad wykonawczy i steruj"cy tworz" jednostk$ centraln" (CPU) 41 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania ENIAC – pierwszy komputer Electronic Numerical Integrator And Computer konstruktorzy: Eckert and Mauchly University of Pennsylvania obliczenia trajektorii pocisków (balistyka) pocz"tek projektu: 1943 zako#czenie projektu: 1946 Organizacja i Architektura Komputerów Ewolucja komputerów i ich architektury – za pó$no by wykorzysta% ENIAC w II wojnie &wiatowej u ywany do 1955 1 2 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania ENIAC Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania ENIAC – programowanie Eckert and Mauchly 1st working electronic computer (1946) 18,000 Vacuum tubes 1,800 instructions/sec 3,000 ft3 3 4 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania ENIAC – serwis Testowanie komputera Wymiana uszkodzonej lampy wymaga!a sprawdzenia 18 000 mo liwo&ci g!ównym narz'dziem jest oscyloskop stosuje si' specjalne matryce do generowania testowych sekwencji bitów 5 6 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania ENIAC – parametry techniczne EDSAC 1 - 1949 Maurice Wilkes arytmetyka dziesi'tna (nie dwójkowa) 20 akumulatorów po 10 cyfr w ka dym programowany r'cznie prze!"cznikami 18,000 lamp, 70,000 rezystorów, 10,000 kondensatorów, 6,000 prze!"czników masa 30 ton powierzchnia 1,500 stóp2, (30 x 50 stóp) pobór mocy 140 kW 5,000 operacji dodawania na sekund' (0,005 MIPS) 1st store program computer 650 instructions/sec 1,400 ft3 http://www.cl.cam.ac.uk/UoCCL/misc/EDSAC99/ 7 8 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Architektura von Neumanna John von Neumann program przechowywany w pami'ci program i dane rezyduj" we wspólnej pami'ci ALU pracuje na danych dwójkowych jednostka steruj"ca interpretuje i wykonuje rozkazy pobierane z pami'ci jednostka steruj"ca zarz"dza systemem I/O Princeton Institute for Advanced Studies – 1903 – 1957 matematyk ameryka#ski pochodzenia w'gierskiego od 1933 profesor ISA w Princeton od 1937 cz!onek Akademii Nauk w Waszyngtonie od 1954 cz!onek Komisji do Spraw Energii Atomowej USA 1945 – 1955: dyrektor Biura Projektów Komputerów Cyfrowych w USA IAS (tak samo nazwano prototypowy komputer) zako#czenie projektu: 1952 9 10 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Architektura von Neumanna IAS – parametry 1000 s!ów po 40 bitów – – arytmetyka dwójkowa format instrukcji 2 x 20 bitów Zbiór rejestrów (zawarty w CPU) – – – – – – – 11 Memory Buffer Register (MBR - rejestr bufora pami'ci) Memory Address Register (MAR - rejestr adresowy) Instruction Register (IR - rejestr instrukcji) Instruction Buffer Register (IBR - rejestr bufora instrukcji) Program Counter (PC - licznik rozkazów) Accumulator (A - akumulator) Multiplier Quotient (MQ - rejestr ilorazu) 12 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania IAS – struktura Pierwsze komputery komercyjne Central Processing Unit 1947 - Eckert-Mauchly Computer Corporation UNIVAC I (Universal Automatic Computer) Arithmetic and Logic Unit Accumulator MQ – Arithmetic & Logic Circuits MBR Input Output Instructions & Data 1950 - US Bureau of Census, obliczenia biurowe powstaje Sperry-Rand Corporation koniec lat 50-tych - UNIVAC II Main Memory – – wi'ksza szybko&% wi'ksza pami'% PC IBR MAR IR Control Circuits Program Control Unit Address 13 14 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania IBM Pami ! ferrytowa produkcja urz"dze# do perforowania kart 1953 - model 701 – – radykalna poprawa niezawodno&ci brak ruchomych cz'&ci pami'% nieulotna relatywnie niski koszt wi'ksze pojemno&ci pierwszy komputer IBM oferowany na rynku obliczenia naukowe 1955 - model 702 – zastosowania biurowe (banki, administracja) pocz"tek serii komputerów 700/7000 15 16 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Tranzystor 2 generacja komputerów nast'pca lamp znacznie mniejszy ta#szy mniejszy pobór mocy wykonany z pó!przewodnika wynaleziony w 1947 w Bell Labs William Shockley et al. podstawowym elementem jest tranzystor NCR & RCA – „ma!e” komputery IBM 7000 DEC - 1957 – model PDP-1 Raytheon CK722 1954 17 18 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Minikomputery – IBM 360 DEC PDP – 8 1964 IBM 360 zast'puje seri' 7000 – 1964 pierwszy minikomputer klimatyzacja pomieszczenia nie jest wymagana mie&ci si' na biurku cena $16,000 brak kompatybilno&ci pierwsza rodzina popularnych komputerów – – – – – – podobne lub identyczne listy instrukcji podobny lub taki sam OS rosn"ca szybko&% wzrost liczby uk!adów I/O (terminali) wzrost pojemno&ci pami'ci kolejne modele kosztuj" coraz wi'cej IBM 360/40 • 1964 rok • 1.6 MHz CPU • 32 – 256 KB RAM • $ 225 000 – wbudowane aplikacje & OEM nowatorska struktura szyn (OMNIBUS) pojawiaj" si' emulatory dla serii 7000 - /1400 19 dla porównania IBM 360 kosztuje $100k+ 20 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Pmi ! pó"przewodnikowa Rozwój mikroelektroniki 1970 Fairchild rozmiar pojedynczego rdzenia ferrytowego – podstawowy element – uk!ad scalony uk!ady SSI, potem MSI, wreszcie LSI i VLSI seryjna produkcja uk!adów scalonych na bazie krzemu ca!a pami'% ma teraz taki rozmiar jak wcze&niej komórka 1-bitowa pojemno&% 256 bitów odczyt nie niszczy zawarto&ci znacznie wi'ksza szybko&% ni dla pami'ci ferrytowych pojemno&% podwaja si' co rok 21 22 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Generacje uk"adów elektronicznych lampa – 1946 -1957 tranzystor – 1958 -1964 uk!ady scalone ma!ej skali integracji (SSI) – od 1965 – do 100 elementów w uk!adzie &rednia skala integracji (MSI) - od 1971 – 100 - 3,000 elementów w uk!adzie wielka skala integracji (LSI) – 1971 - 1977 – 3,000 - 100,000 elementów w uk!adzie bardzo wielka skala integracji (VLSI) - 1978 do dzi& – 100,000 - 100,000,000 elementów w uk!adzie ultra wielka skala integracji (UVLSI) – koniec lat 90’ – 23 ponad 100,000,000 elementów w uk!adzie 24 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Prawo Moore’a Prawo Moore’a opisuje tempo wzrostu liczby elementów w uk!adzie Gordon Moore – wspó!za!o yciel Intela liczba tranzystorów w uk!adzie podwaja si' co roku od roku 1970 wzrost zosta! nieco zahamowany – liczba tranzystorów podwaja si' co 18 miesi'cy koszt uk!adu pozostaje niemal bez zmian wi'ksza g'sto&% upakowania elementów skraca po!"czenia, przez co wzrasta szybko&% uk!adów zmniejsza si' rozmiar uk!adów zmniejszaj" si' wymagania na moc zasilania i ch!odzenie mniejsza liczba po!"cze# w systemie cyfrowym poprawia niezawodno&% 25 26 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Prawo Moore’a 2 prawo Moore’a Koszt wdro#enia produkcji uk"adu w mln $ Koszt uruchomienia produkcji nowego uk!adu CPU UVLSI wzrasta wyk!adniczo 27 28 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wzrost pojemno$ci DRAM Rozwój mikroprocesorów i DRAM Rok Rozmiar 1980 64 Kb 10000 256 Kb 1 Mb 4 Mb 16 Mb 64 Mb 256 Mb 1 Gb ? 29 Performance 1983 1986 1989 1992 1996 1999 2002 2010 100000 1000 100 10 1 1980 1985 1990 CPU 1995 2005 Memory 30 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Szybko$! DRAM i CPU Rozwi%zania (DRAM vs. CPU) zwi'kszy% liczb' bitów odczytywanych w jednym cyklu Szybko&% procesorów ros!a pr'dzej ni szybko&% pami'ci RAM – DRAM powinna by% „szersza” a nie „g!'bsza” zmieni% interfejs DRAM Jakie problemy wynikaj" st"d dla konstruktorów komputerów? – pami'% cache zmniejszy% cz'sto&% dost'pów do pami'ci – bardziej skomplikowana pami'% cache umieszczona w CPU zwi'kszy% przep!ywno&% szyn – – 31 2000 32 szyny typu high-speed szyny hierarchiczne Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wzrost z"o#ono$ci procesorów Post p technologii Procesor – – z!o ono&% uk!adowa: 30% na rok cz'stotliwo&% zegara: 20% na rok Pami'% – – – DRAM pojemno&%: oko!o 60% na rok (4x co 3 lata) szybko&% pami'ci: oko!o 10% na rok koszt za 1 bit: maleje o 25% na rok Dysk – pojemno&%: 60% na rok Przep!ywno&% w sieciach – 33 wzrost o wi'cej ni 100% na rok! 34 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Post p technologii Koszt procesorów (Intel) Inne uj'cie, wed!ug prof. Tyagi (2003) Pojemno&% Szybko&% Uk!ady cyfrowe 2x / 3 lata 2x / 3 lata DRAM 4x / 3 lata 2x / 10 lat Dyski 4x / 3 lata 2x / 10 lat 35 36 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Koszt pami ci Intel – pierwsze procesory 1971 – uk!ad 4004 – – – uwa any za pierwszy microprocessor na &wiecie wszystkie elementy CPU w jednym uk!adzie 4 – bitowy format danych Zast"piony w 1972 przez uk!ad 8008 – – 8 – bitowy format danych obydwa uk!ady zaprojektowano do specjalistycznych zastosowa# 1974 – uk!ad 8080 pierwszy mikroprocesor Intel ogólnego przeznaczenia 37 38 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Ewolucja Pentium Ewolucja Pentium cd. 8080 – – – 80486 pierwszy mikroprocesor ogólnego przeznaczenia 8-bitowa szyna danych zastosowany w pierwszym komputerze osobistym Altair – – Pentium 8086 – – – – – znacznie wi'ksza moc obliczeniowa, u yty w IMB PC XT 16-bitowa szyna danych, przestrze# adresowa 1MB pami'% cache programu, pobieranie kilku instrukcji na zapas wersja 8088 (8-bitowa zewn'trzna szyna danych) – – – przestrze# adresowa 16 MB – 80386 – – 39 architektura superskalarna równocze&nie wykonuje si' wiele instrukcji Pentium Pro 80286 – zaawansowana pami'% cache i potok instrukcji wbudowany koprocesor arytmetyczny – architektura 32-bitowa wielozadaniowo&% (multitasking) – 40 ulepszona architektura superskalarna technika przemianowywania rejestrów przewidywanie skoków analiza przep!ywu danych spekulacyjne wykonywanie instrukcji Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Ewolucja Pentium cd. Granice technologii ? Pentium II – – Dzi& (2008) Intel i AMD stosuj" technologi' 90 / 65 nm, trwaj" prace nad wdro eniem technologii 45 nm technologia MMX przetwarzanie grafiki, audio & video Pentium III – dodatkowe instrukcje zmiennoprzecinkowe dla grafiki 3D Pentium 4 – – uwaga – pierwsze oznaczenie cyfr" arabsk", a nie rzymsk" ! dalsze ulepszenia FPU i operacji multimedialnych Itanium / Itanium 2 – – – – architektura 64-bitowa EPIC – Explicit Paralell Instruction Computing rejestry 128-bitowe Instrukcje 41-bitowe w pakietach 128-bitowych (3 instr. + 5 bitów pokazuj"cych typ i wspó!zale no&ci) 41 42 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Granice technologii ? 43 44 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Trend rozwoju technologii Wspó"czesny procesor Intel Core 2 Duo: Courtesy: Intel Corp. P4HT: Courtesy: Intel Corp. 45 46 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Technologia wielowarstwowa Technologia wielowarstwowa cd.. Fragment procesora UVLSI, zdj'cie z mikroskopu elektronowego Courtesy IBM Corp. 47 48 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Prognozy bywaj% niedok"adne Prognozy bywaj% niedok"adne cd.. Twój PC w 2005 roku wed ug J. Breechera, Clarc University, 2002 zegar procesora 8 GHz pojemno&% pami'ci RAM 1 GB pojemno&% dysku 240 GB (0,24 TB) Potrzebujemy kolejnych jednostek miar: Mega Giga Tera !!! YEAR 2002 TECHNOLOGY 130 nm 2008 100 nm 600 mm 2011 70 nm 2 750 mm 800 mm ITRS International Technology Roadmap for Semiconductors 2014 50 nm 2 35 nm 2 900 mm 2 CHIP SIZE 400 mm NUMBER OF TRANSISTORS (LOGIC) 400 M 1 Billion 3 Billion 6 Billion 16 Billion DRAM CAPACITY 2 Gbits 10 Gbits 25 Gbits 70 Gbits 200 Gbits MAXIMUM CLOCK FREQUENCY 1.6 GHz 2.0 GHz 2.5 GHz 3.0 GHz 3.5 GHz MINIMUM SUPPLY VOLTAGE 1.5 V 1.2 V 0.9 V 0.6 V 0.6 V MAXIMUM POWER DISSIPATION 130 W 160 W 170 W 175 W 180 W 2500 4000 4500 5500 6000 MAXIMUM NUMBER OF I/O PINS 49 2005 2 prognoza z 1999 roku 50 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania 50 lat rozwoju komputerów Systemy „desktop” i wbudowane 51 52 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Rynek procesorów RISC 2001 PowerPC SPARC 1% 3% SHx 8% &a'cuch pokarmowy 2007 SPARC 1% Other 1% Other 2% PowerPC 8% MIPS 11% MIPS 14% SHx 10% Big Fishes Eating Little Fishes ARM 66% ARM 75% 53 54 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania 1988 Computer Food Chain 2008 Computer Food Chain MiniMinisupercomputer computer Mainframe MPPs, clusters Supercomputer MiniMinisupercomputer computer Work- PC station Mainframe Server Massively Parallel Processors 55 Supercomputer 56 Work- PC station Now who is eating whom? Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Komputery przysz"o$ci Podsumowanie pierwszy komputer – ENIAC architektura von Neumanna – IAS prawo Moore’a generacje uk!adów cyfrowych i komputerów szybko&% procesorów ro&nie w wi'kszym tempie ni szybko&% pami'ci – konsekwencje i rozwi"zania ewolucja procesorów x86 granice technologii komputery przysz!o&ci • Molecular Computing • http://www.nytimes.com/2002/10/25/technology/25COMP.html?ex= 1036558800&en=10e57e62ea60c115&ei=5062 • http://pcquest.ciol.com/content/technology/10004402.asp • http://www.ddj.com/articles/2000/0013/0013b/0013b.htm • DNA Computing • http://arstechnica.com/reviews/2q00/dna/dna-1.html • http://www.englib.cornell.edu/scitech/w96/DNA.html • Quantum Computing • http://www.qtc.ecs.soton.ac.uk/lecture1/lecture1a.html • http://www.mills.edu/ACAD_INFO/MCS/CS/S01MCS125/QuantumComputing/ concepts.html • http://www.cs.caltech.edu/~westside/quantum-intro.html 57 58 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Metryki marketingowe MIPS – Organizacja i Architektura Komputerów – Millions Instructions Per Second (liczba instrukcji / 106) / czas CPU MFLOPS – – Millions Float Point Operations Per Second (liczba operacji FP / 106) / czas CPU Zalety MIPS, MFLOPS i innych MOPS – Wydajno#$ komputerów Prosta i zrozumia!a dla laików definicja, !atwo#$ okre#lenia Wady – – – 1 Metryki MIPS i MFLOPS zale " od architektury ISA tote porównanie ró nych architektur jest niemo liwe Dla ró nych programów wykonywanych przez ten sam komputer otrzymuje si% ró ne warto#ci metryk W skrajnych przypadkach metryki MIPS i MFLOPS mog" dawa$ odwrotne wyniki ni metryki oparte na pomiarach CPU time 2 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Przyk ady metryki MIPS (Intel) Procesor Data Liczba tranzystorów MIPS 4004 11/71 2300 0.06 8008 4/72 3500 0.06 8080 4/74 6000 0.1 8086 6/78 29000 0.3 8088 6/79 29000 0.3 286 2/82 134000 0.9 386 10/85 275000 5 486 4/89 1.2M 20 Pentium 3/93 3.1M 100 Pentium Pro 3/95 5.5M 300 Pentium III (Xeon) Pentium 4 HT 2/99 10/2002 10M 108M 500 >1000 3 Czas w systemie komputerowym polecenie time w systemie UNIX Przyk!ad: 90.7u 12.9s 2:39 65% user CPU time = 90.7 s system CPU time elapsed time user CPU/elapsed = 12.9 s = 2 min 39 s (159 s) = 65 % = (90.7 + 12.9)/159 4 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wydajno!" komputera Wydajno!" cd. Metryki wydajno#ci procesora Wydajno#$ - Computer Performance – czas oczekiwania na wynik CPU execution time ! CPU clock cycles/pgm clock cycle time CPU clock cycles/pgm ! Instructions/pgm avg. clock cycles per instruction(CPI) Response time (latency) – przepustowo#$ systemu Throughput Przedmiotem uwagi OAK jest szczególnie – CPI (cycles per instruction) – #rednia liczba cykli procesora potrzebna do wykonania instrukcji wi" e si% z: czas CPU wykorzystany przez u ytkownika – User CPU time czas zu yty przez CPU na wykonanie programu 5 – 6 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wydajno!" cd. Wydajno!" cd. Definicja wydajno#ci Aby okre#li$ wydajno#$ komputera nale y: 1 Performancex ! Execution timex – zmierzy$ czas wykonania programu testowego (benchmark) Aby obliczy$ czas wykonania nale y zna$: Maszyna X jest n razy szybsza od maszynyY je#li – – Performancex !n Performance y czas trwania cyklu CPU (z danych katalogowych CPU) !"czn" liczb% cykli CPU dla danego programu Aby oszacowa$ liczb% cykli CPU w programie nale y zna$: – – 7 architektur" listy instrukcji (ISA) implementacj" ISA 8 liczb% instrukcji w programie przeci%tn" warto#$ CPI (average CPI) Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wydajno!" cd. Wydajno!" cd. Cz%stotliwo#$ zegara CPU (CPU clock rate) – – Liczba cykli zegara CPU w programie liczba cykli na sekund% (1 Hz = 1 cykl / s) CPU cycle time = 1/CPU clock rate liczba cykli = liczba instrukcji ? b!"d ! ró ne instrukcje wymagaj" ró nej liczby cykli dla ró nych komputerów – – – Przyk!ad: Pentium4 2.4 GHz CPU CPU cycle time ! Wa na uwaga: 1 zmiana czasu cyklu CPU (cz%stotliwo#ci zegara) cz%sto powoduje zmian% liczby cykli potrzebnych do wykonania ró nych instrukcji – 9 ! 2.4 10 0.4167 10 "9 s ! 0.4167 ns 9 10 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Definicja CPI Przyk ad wykorzystania CPI &rednia liczba cykli na instrukcj% CPI (average cycles per instruction) Za!ó my, e typowy program wykonywany przez CPU analizowanego systemu komputerowego ma nast%puj"c" charakterystyk%: n # CPI CPI ! i i !1 IC IC i n ! # CPI i !1 i ) ICi & n ' $ ! # CPI i ( IC % i !1 Fi – – gdzie: – – – – – CPIi – liczba cykli potrzebnych do wykonania instrukcji typu i ICi – liczba instrukcji typu i w programie IC – ogólna liczba instrukcji w programie Fi - wzgl%dna cz%sto#$ wyst%powania instrukcji typu i w programie 11 – – cz%sto#$ wyst%powania operacji FP = 25% CPI operacji FP = 4.0 CPI innych instrukcji = 1.33 cz%sto#$ wyst%powania operacji FPSQR = 2% CPI operacji FPSQR = 20 12 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Przyk ad wykorzystania CPI cd. Przyk ad wykorzystania CPI cd. Rozwi"zanie: Nale y zauwa y$, e zmienia si% tylko CPI, natomiast liczba instrukcji cz%stotliwo#$ zegara pozostaje bez zmiany. Obliczamy CPIorg przed dokonaniem zmian w procesorze: Konstruktorzy chc" zwi%kszy$ wydajno#$ systemu przez przeprojektowanie CPU. Maj" dwa alternatywne rozwi"zania: 1. Zmniejszy$ CPI operacji FPSQR z 20 do 2 2. Zmniejszy$ CPI wszystkich operacji FP do 2 CPIorg = (4 x 25%) + (1.33 x 75%) = 2.0 Obliczamy CPInew FPSQR dla procesora z ulepszonym uk!adem obliczania pierwiastka odejmuj"c od CPIorg zysk spowodowany ulepszeniem: Które z tych rozwi"za' jest lepsze w sensie metryki (CPU time) ? 13 CPInewFPSQR = CPIorg – 2% x (CPIoldFPSQR – CPIof new FPSQR) = 2.0 – 2% x (20 – 2) = 1.64 14 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Przyk ad wykorzystania CPI cd. Przyk ad wykorzystania CPI doko#czenie Obliczmy wzrost wydajno#ci systemu po ulepszeniu uk!adu FPU Obliczamy CPI new FP dla procesora z ulepszonym ca!ym blokiem FPU CPI new FP = (75% x 1.33) + (25% x 2.0) = 1.5 Speedup new FP ! Odpowied(: ulepszenie ca!ego bloku FP jest lepszym rozwi"zaniem ni ulepszenie samego uk!adu obliczania FPSQR, poniewa ! CPI new FP = 1.5 < CPI new FPSQR = 1.64 15 16 CPU timeorg CPU timenew FP CPI org CPI new FP ! IC Clock cycle CPI org IC Clock cycle CPI new FP ! 2.0 / 1.5 ! 1.33 ! Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Problem Wydajno!" - wspó zale$no!ci Je#li dwa komputery maj" tak" sam" architektur% ISA, to które z wymienionych wielko#ci b%d" w obu przypadkach identyczne? Program Kompilator Lista instrukcji Organizacja Technologia cz%stotliwo#$ zegara CPI czas wykonania programu (CPU time) liczba instrukcji (IC) MIPS – – – – – Liczba instrukcji X X X CPI Cykl zegara X X X X X Odpowied(: CPI i liczba instrukcji (IC) 17 18 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Prawo Amdahla Prawo Amdahla – przyk ad Okre#la wspó!czynnik poprawy wydajno#ci Speed up w rezultacie ulepszenia systemu komputerowego Dla wcze#niej analizowanego przyk!adu dotycz"cego ulepszenia bloków realizuj"cych obliczenia FP i FPSQR otrzymujemy nast%puj"ce wyniki: 2 Frac enh / 0*1 " Frac enh + , Speedupenh . 1 CPUtimenew ! CPUtimeold Speedup FPSQR ! Speedupoverall ! 19 CPUtimeold ! CPUtimenew 1 *1 " Fracenh + , Frac enh Speedupenh Gdzie: Fracenh – wspó!czynnik wykorzystania ulepszonej cz%#ci systemu (w sensie czasu), np. Fracenh = 0.3 oznacza, e ulepszona cz%#$ jest wykorzystywana przez 30% czasu wykonania programu Speedupenh – wspó!czynnik poprawy wydajno#ci ulepszonej cz%#ci systemu Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Speedup FP ! ! 1 ! 1.33 0.75 W profesjonalnych badaniach wydajno#ci komputerów wykorzystuje si% pomiar czasu wykonania rzeczywistych programów – – najlepiej jest u y$ typowych aplikacji, które b%d" wykonywane przez system podczas normalnej eksploatacji lub wykorzysta$ klasy aplikacji, np. kompilatory, edytory, programy oblicze' numerycznych, programy graficzne itp. Krótkie programy testowe (benchmarks) – % czasu pracy cache *1 " % czasu pracy cache+ , Speedup z zastosowania cache *1 " 0.9 + , 0.9 10 ! Pomiary wydajno!ci 1 1 *1 " 0.5+ , 0.5 2.0 1 ! 1.22 0.82 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Proste zastosowanie prawa Amdahla ! 1 ! 20 Za!ó my, e dost%p do pami%ci cache jest 10 razy szybszy ni dost%p do pami%ci operacyjnej. Za!ó my ponadto, e pami%$ cache jest wykorzystywana przez 90% czasu. Obliczy$ wspó!czynnik wzrostu wydajno#ci systemu spowodowany dodaniem pami%ci cache. Speedup ! *1 " 0.2+ , 0.2 10 ten sam wynik co uzyskany wcze#niej przy u yciu analizy CPI Jeszcze jeden przyk ad – 1 – 1 ! 5.3 0.19 wygodne dla architektów i projektantów !atwe w standaryzacji testów SPEC (System Performance Evaluation Cooperative) – – – 21 22 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania http:// www.spec.org producenci sprz%tu uzgodnili zestawy programów testowych (benchmarków) warto#ciowe wyniki do oceny wydajno#ci komputerów i jako#ci kompilatorów Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania SPEC benchmarks SPEC benchmarks cd. SPEC89 – 1989 Druga runda – 1992 10 krótkich testów 800 – 700 – wynik w postaci jednej liczby, #redniej wa onej 600 500 400 – SPECint92 – zestaw 6 programów testowych operuj"cych na liczbach ca!kowitych (integer) SPECfp92 – zestaw 14 programów testowych operuj"cych na liczbach zmiennoprzecinkowych SPECbase 300 Trzecia runda – 1995 200 100 – fpppp – tomcatv matrix300 li eqntott nasa7 spice doduc gcc epresso 0 – Benchmark 23 24 SPECint95 – zestaw 8 programów (integer) SPECfp95 – zestaw 10 programów (FP) SPECint_base95 i SPECfp_base95 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania SPEC’95 – zestaw testów 25 SPECint95 - przyk ad 26 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania SPEC’2000 SPEC_2006 zestaw testów CFP 2006 CINT 2006 27 28 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania 29 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania 30 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania SYSmark 2002 Raporty CFP - przyk ady 1 2.8 GHz 31 32 Intel's advanced 0.13 micron process and 512K L2 Cache, 400-MHz system bus, PC800-40 RDRAM 2 Intel's advanced 0.13 micron process and 512K L2 Cache, 533-MHz system bus, PC1066-32 RDRAM 3 Intel® Pentium® 4 Processor 3.06 GHz supporting HyperThreading Technology Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania SYSmark 2002 cd. SYSmark 2002 Office Productivity: Internet Content Creation: • • • • • • • • • • • • • • 33 Dragon* Naturally Speaking* Preferred v5 McAfee* VirusScan 5.13 Microsoft* Access 2002 Microsoft Excel* 2002 Microsoft Outlook 2002 Microsoft PowerPoint* 2002 Microsoft Word* 2002 Netscape* Communicator* 6.0 WinZip* 8.0 Adobe* Photoshop* 6.01 Adobe Premiere* 6.0 Macromedia Dreamweaver 4 Macromedia Flash 5 Microsoft Windows Media Encoder* 7.1 34 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Benchmarki dla amatorów Architektury superkomputerów Karty graficzne – 3DMark SE Dyski – – HDTach WinBench Procesory – – SPECcpu2006 SYSmark 2002 Pami#ci – ScienceMark 1.0 Kompletny system komputerowy – PCMark 35 36 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Procesory w superkomputerach 37 Procesory w superkomputerach 38 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Moc obliczeniowa - przewidywania 39 Wydajno ! i architektura 40 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Podsumowanie Metryki wydajno$ci komputera – – CPU time, CPI metryki komercyjne MIPS, MFLOPS Prawo Amdahla – wp!yw ulepsze% systemu na wydajno$& Benchmarki – – – – – 41 SPEC’89 SPEC’92 SPEC’95 SPEC’2000 i 2006 SYSmark 2002 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Alfabet: 0, 1 Dane w komputerach s" reprezentowane wy!"cznie przy u yciu alfabetu dwójkowego (binarnego) Organizacja i Architektura Komputerów Arytmetyka komputerów 1 2 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Bity, bajty, s owa Kody liczbowe Bity s" grupowane w wi#ksze zespo!y o d!ugo$ci b#d"cej pot#g" liczby 2: tetrada: 4 bity (nibble) – bajt: 8 bitów – s!owo: 16, 32, 64 lub 128 bitów – podwójne s!owo (doubleword) – pó!s!owo (halfword) radix)) baza ((radix – D!ugo$% s!owa zale y od organizacji komputera 3 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 dwó dwójkowy (binarny) 10100111100 1211122 110330 Podstawy u ywane w 20330 10112 systemach cyfrowych 3623 oktalny talny 2474 1748 dziesi# dziesi#tny 1340 1009 938 7C1 6BA 5E5 szesnastkowy, heksadecymalny, 53C ‘hex’ hex’ 4 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Konwersja HEX – radix 10 Kod szesnastkowy HEX Powszechnie u ywany przez programistów programuj"cych w j#zyku asemblera Skraca d!ugo$% notacji liczby &atwa konwersja na kod NKB i odwrotnie Ka da tetrada reprezentuje cyfr# szesnastkow" Cyfra HEX kod binarny 0 1 2 3 4 5 6 7 8 9 A B C D E F 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 5 6 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Konwersja binarna – HEX Kod BCD BCD (binary coded decimal) – ka da cyfra dziesi#tna jest reprezentowana jako 4 bity – kod opracowany dla wczesnych kalkulatorów – przyk!ad: 35910 = – kod !atwy do zrozumienia przez cz!owieka, niewygodny dla komputerów = 0011 0101 1001bcd cyfra dziesi#tna 0 1 2 3 4 5 6 7 8 9 BCD 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 Kody od 1010 do 1111 nie s! u"ywane 7 8 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Porz!dek bajtów w pami#ci Kolejno$% bajtów w pami#ci Problem – – Rozwi"zanie Pami#% jest zwykle adresowana bajtami Jak zapisa% w pami#ci s!owo 32-bitowe ? – – podziel s!owo na bajty zapisz kolejne bajty w kolejnych komórkach 8 bitó bitów 8 bitów ... 0x13579BDF ... 0x13579BCF 1 bajt tutaj 1248 ? 1250 1251 ... 9 ka"da cyfra HEX reprezentuje tertad#, zatem dwie cyfry tworz! bajt 1249 kolejny bajt tutaj 1250 ostatni bajt tutaj 1251 adresy adresy 1249 adresy adresy s owo 3232bitowe w kodzie HEX 1248 nast#pny bajt tutaj ... 10 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Kolejno$% bajtów cd. Kolejno$% bajtów cd. W jakiej kolejno$ci zapisywa% bajty? – W jakiej kolejno$ci zapisywa% bajty? Zaczynaj"c od najbardziej znacz"cego (“big” end)? – Zaczynaj"c od najmniej znacz"cego (“little” end)? ... 1250 0x13579BDF 1251 kierunek analizy ... 11 0xDF 0x9B 0x57 0x13 1248 1249 1250 adresy kierunek analizy 1249 adresy 0x13579BDF 0x13 0x57 0x9B 0xDF ... 1248 1251 ... 12 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Kolejno$% bajtów cd. Kolejno$% bajtów cd. Wybór wersji kolejno$ci zapisu bajtów zale y od konstruktorów procesora Stosuje si# dwa sposoby zapisu s!ów w pami#ci Big Endian – – – most significant byte in lowest address store least significant byte in highest address Motorola 680x0 (Amiga/Atari ST/Mac) IBM/Motorola PowerPC (Macintosh) MIPS (SGI Indy/Nintendo 64) Motorola 6800 Little Endian – – – Little Endian Intel 80x86/Pentium (IBM PC) Rockwell 6502 (Commodore 64) MIPS (Sony Playstation/Digital DECstation) store least significant byte in lowest address store most significant byte in highest address – 13 Big Endian Niektóre procesory (np. MIPS) mo na konfigurowa% zarówno w trybie Big Endian jak i Little Endian 14 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania ALU ALU – wej$cia i wyj$cia Jednostka arytmetyczno-logiczna (ALU – arithmetic-logic unit) wykonuje operacje arytmetyczne na liczbach w kodzie dwójkowym ALU jest centralnym blokiem komputera; wszystkie inne bloki funkcjonalne s!u " do w!a$ciwej obs!ugi ALU Proste ALU wykonuje operacje na liczbach ca!kowitych (integer) Bardziej z!o one ALU mo e wykonywa% operacje zmiennoprzecinkowe FP na liczbach rzeczywistych Najcz#$ciej ALU_INT i ALU_FP (FPU – Floating Point Unit) s" wykonane jako dwa osobne bloki cyfrowe 15 – FPU mo e by% wykonane jako osobny uk!ad scalony (koprocesor) – FPU mo e by% wbudowane do procesora • CU – uk!ad sterowania (Control Unit) • Registers – rejestry wbudowane do CPU • Flags – wska'niki, znaczniki stanu, flagi, warunki: zespó! wska'ników bitowych okre$laj"cych specyficzne w!a$ciwo$ci wyniku operacji (zero, znak, przeniesienie itp.) 16 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania ALU – symbol logiczny Kod operacji pochodzi z uk!adu sterowania (CU) Liczba bitów wyniku jest taka sama jak liczba bitów argumentów (operandów) – w tym przyk!adzie wynosi 32 ALU nie tylko generuje bity wska'ników, ale tak e uwzgl#dnia poprzedni stan wska'ników operacja a 32 Wieloznaczno$% informacji ALU wynik operacji 32 Co oznacza poni szy zapis? 10010111 • Liczb ca!kowit" bez znaku: 151 • Liczb ca!kowit" w kodzie znak-modu!: - 23 • Liczb ca!kowit" w kodzie uzupe!nie# do dwóch: - 105 • Znak w rozszerzonym kodzie ASCII (IBM Latin 2): $ • Kod operacji procesora x86: XCHG AX,DI b To zale%y od kontekstu 32 wska&niki 17 18 Wy%sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy%sza Szko!a Informatyki Stosowanej i Zarz"dzania Liczby ca kowite bez znaku Kod znak-modu (ZM) Najbardziej znacz"cy bit oznacza znak 0 oznacza liczb dodatni" 1 oznacza liczb ujemn" A$ Przyk!ad +18 = 00010010 #18 = 10010010 Problemy Uk!ady arytmetyczne musz" osobno rozpatrywa& bit znaku i modu! Wyst puj" dwie reprezentacje zera: +0 = 00000000 #0 = 10000000 u%ywane s" tylko cyfry 0 i 1 A $ a n #1 a n # 2 . . . a1 a 0 ai % 0, 1 ! n #1 A $ " 2 i ai Przyk!ady: i $0 kod ten bywa nazywany NKB (naturalny kod binarny) zakres reprezentacji liczb dla s!owa n-bitowego wynosi: <0, 2 i – 1> dla n = 8: <0, 255> dla n = 16: <0, 65 535> 00000000 = 0 00000001 = 1 00101001 = 41 10000000 = 128 11111111 = 255 19 gdy a n #1 $ 0 gdy a n #1 $ 1 20 Wy%sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy%sza Szko!a Informatyki Stosowanej i Zarz"dzania Kod uzupe nie! do 2 (U2) Najbardziej znacz"cy bit oznacza znak liczby 0 – liczba dodatnia 1 – liczba ujemna Tylko jedna reprezentacja zera: +0 = 00000000 Ogólna posta& U2: n#2 A $ #2 n #1 a n #1 * " 2 i ai Konwersja NKB – U2 Przyk!ady: +3 +2 +1 +0 -1 -2 -3 = = = = = = = liczba binarna ujemna 00000011 00000010 00000001 00000000 11111111 11111110 11111101 dodatnia liczba U2 i $0 21 uzupe nienie 0 1 1 0 +1 22 Wy%sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy%sza Szko!a Informatyki Stosowanej i Zarz"dzania Zalety kodu U2 Kod U2 – ilustracja geometryczna Jedna reprezentacja zera Uk!ady arytmetyczne (ALU) maj" prostsz" budow (wyka%emy to pó'niej) Negacja (zmiana znaku liczby) jest bardzo prosta: 3 = 00000011 uzupe!nienie do 1(negacja boolowska) dodanie 1 11111100 11111101 #3 = 11111101 23 ) n#2 i & " 2 ai & i $0 ( n#2 &# 2 i a i &' " i $0 24 Wy%sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy%sza Szko!a Informatyki Stosowanej i Zarz"dzania Wada kodu U2 Negacja w U2 – przypadki specjalne Zakres reprezentowanych liczb jest niesymetryczny 0= 00000000 negacja bitowa 11111111 dodaj 1 do LSB +1 wynik 1 00000000 przepe!nienie jest ignorowane wi c 0=0+ najmniejsza liczba: #2n#1 (minint) najwi ksza liczba: 2n#1#1 (maxint) dla n=8 najmniejsza liczba: #128 najwi ksza liczba: +127 128 = 10000000 negacja bitowa 01111111 dodaj 1 do LSB +1 wynik 10000000 wi c ( 128) = 128 X dla n=16 najmniejsza liczba: #32 768 najwi ksza liczba: +32 767 25 Wniosek: nale%y sprawdza& bit znaku po negacji (powinien si zmieni&) 26 Wy%sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy%sza Szko!a Informatyki Stosowanej i Zarz"dzania Konwersja d ugo"ci s owa w U2 Dodawanie i odejmowanie w U2 Liczby dodatnie uzupe!nia si wiod"cymi zerami Obydwie operacje wykonuje si u%ywaj"c zwyk!ego dodawania liczb dwójkowych Nale%y sprawdza& bit znaku, aby wykry& nadmiar (overflow) +18 = 00010010 +18 = 00000000 00010010 Liczby ujemne uzupe!nia si wiod"cymi jedynkami Odejmowanie wykonuje si przez negowanie odjemnej i dodawanie: a b = a + ( b) 18 = 10010010 18 = 11111111 10010010 Do realizacji dodawania i odejmowania potrzebny jest zatem tylko uk!ad negacji bitowej i sumator Ogólnie bior"c, powiela si bit MSB (bit znaku) 27 28 Wy%sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy%sza Szko!a Informatyki Stosowanej i Zarz"dzania Uk ad dodawania i odejmowania U2 Mno#enie Mno%enie liczb dwójkowych jest znacznie bardziej z!o%one od dodawania i odejmowania Podstawowy algorytm jest taki sam jak przy pi(miennym mno%eniu liczb: 29 okre(la si iloczyny cz"stkowe dla ka%dej cyfry mno%nika – kolejne iloczyny cz"stkowe nale%y umieszcza& z przesuni ciem o jedn" pozycj (kolumn ) w lewo – nale%y doda& do siebie iloczyny cz"stkowe 30 Wy%sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy%sza Szko!a Informatyki Stosowanej i Zarz"dzania Przyk ad mno#enia (liczby bez znaku) 1011 Uk ad mno#enia liczb bez znaku mno%na (11 w kodzie dziesi tnym) x 1101 1011 0000 1011 1011 10001111 mno%nik (13 w kodzie dziesi tnym) iloczyny cz"stkowe Uwaga: je(li bit mno%nika jest równy 1, iloczyn cz"stkowy jest równy mno%nej, w przeciwnym przypadku jest równy 0 wynik mno%enia (143 w kodzie dziesi tnym) Uwaga #1: wynik ma podwójn" d!ugo(&; potrzebujemy s!owa o podwójnej precyzji powy%szy algorytm funkcjonuje tylko dla liczb bez znaku; je(li przyj"& kod U2 mno%na = 5, mno%nik = 3, natomiast iloraz wynosi!by 113, co oczywi(cie jest nieprawd" Uwaga #2: 31 – 32 Wy%sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy%sza Szko!a Informatyki Stosowanej i Zarz"dzania Przyk ad mno#enia liczb bez znaku Mno#enie liczb bez znaku cd. wynik mno%enia 33 34 Wy%sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy%sza Szko!a Informatyki Stosowanej i Zarz"dzania Mno#enie liczb ze znakiem Algorytm Booth’sa Q-1 dodatkowy bit (przerzutnik) pami taj"cy najmniej znacz"cy bit rejestru Q opuszczaj"cy ten rejestr przy przesuni ciu w prawo Prosty algorytm podany wcze(niej nie dzia!a Rozwi"zanie 1 – – – zamieni& czynniki ujemne na dodatnie pomno%y& liczby korzystaj"c z podanego wcze(niej algorytmu je(li znaki czynników (przed wykonaniem negacji) by!y ró%ne, zanegowa& iloczyn Przesuni cie arytmetyczne w prawo – przesuni cie z powieleniem bitu znaku Rozwi"zanie 2 – algorytm Booth’sa 35 36 Wy%sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy%sza Szko!a Informatyki Stosowanej i Zarz"dzania Przyk ad dzia ania metody Booth’sa Algorytm Booth’sa (znak dowolny) iloczyn: 3 x 7 = 21 testowane bity: 10 A:=A-M 01 A:=A+M 37 38 Wy%sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy%sza Szko!a Informatyki Stosowanej i Zarz"dzania Dzielenie Liczby rzeczywiste Dzielenie liczb dwójkowych jest znacznie bardziej skomplikowane od mno%enia Liczby ujemne sprawiaj" spore k!opoty (Stallings, s. 341-342) Podstawowy algorytm podobny do dzielenia liczb na papierze: kolejne operacje przesuwania, dodawania lub odejmowania Przyk!ad: dzielenie liczb bez znaku: Iloraz (Quotient) 00001101 Dzielnik Dzielna 1011 10010011 (Divisor) (Dividend) Reszty cz"stkowe (Partial Remainders) 39 1011 001110 1011 001111 1011 100 Liczby z cz (ci" u!amkow" Mo%na je zapisa& korzystaj"c z kodu NKB i dodatkowo znaków ‘-’ oraz ‘.’ 1001.1010 = 24 + 20 +2-1 + 2-3 =9.625 Problem: gdzie znajduje si kropka dziesi tna? W sta!ym miejscu? – rozwi"zanie niedobre z punktu widzenia metod numerycznych Na zmiennej pozycji? Reszta (Remainder) – 40 jak poda& informacj o miejscu po!o%enia kropki? Wy%sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy%sza Szko!a Informatyki Stosowanej i Zarz"dzania Liczby zmiennoprzecinkowe (FP) FP – mantysa bit znaku Mantysa jest zapisana w kodzie U2 przesuni$ty wyk adnik (exponent) mantysa (significand or mantissa) Wyk!adnik jest zapisany z przesuni ciem (excess or biased notation) – Warto(& liczby: +/- 1. mantysa x 2 wyk!adnik – Podstawa 2 jest ustalona i nie musi by& przechowywana Po!o%eniu punktu dziesi tnego jest ustalone: na lewo od najbardziej znacz"cego bitu mantysy – – – 41 np. przesuni cie równe 127 oznacza: 8-bitowe pole wyk!adnika zakres liczb 0-255 od przesuni tego wyk!adnika nale%y odj"& 127 aby otrzyma& prawdziw" warto(& zakres warto(ci wyk!adnika -127 to +128 42 Wy%sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy%sza Szko!a Informatyki Stosowanej i Zarz"dzania FP – normalizacja FP – przyk ad Liczby FP s" zwykle normalizowane, tzn. wyk!adnik jest tak dobierany, aby najbardziej znacz"cy bit (MSB) mantysy by! równy 1 Poniewa% bit ten jest zawsze równy 1, nie musi by& przechowywany. Dlatego 23-bitowe pole mantysy w rzeczywisto(ci odpowiada mantysie 24-bitowej, z cyfr" 1 na najbardziej znacz"cej pozycji (mantysa mie(ci si zatem w przedziale od 1 do 2 1,1010001 x 210100 = - 1,1010001 x 210100 = 1,1010001 x 2-10100 = - 1,1010001 x 2-10100 = Uwaga: w notacji naukowej FP (Scientific notation) liczby s" normalizowane inaczej, tak aby mantysa mia!a jedn" znacz"c" cyfr przed kropk" dziesi tn", np. 3.123 x 103 43 0 10010011 10100010000000000000000 1 10010011 10100010000000000000000 0 01101011 10100010000000000000000 1 01101011 10100010000000000000000 pozycje mantysy uzupe niane s% zerami 44 Wy%sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy%sza Szko!a Informatyki Stosowanej i Zarz"dzania Zakres reprezentacji liczb FP Zakresy liczb FP i U2 (format 32-bitowy) Dla formatu 32-bitowego 8-bitowy wyk!adnik +/- 2256 , 1.5 x 1077 Dok!adno(& – – – efekt nierównomiernego pokrycia osi liczb rzeczywistych (zmienna warto(& LSB mantysy) 23-bitowa mantysa: 2-23 , 1.2 x 10-7 oko!o 6 pozycji dziesi tnych 45 46 Wy%sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy%sza Szko!a Informatyki Stosowanej i Zarz"dzania ANSI/IEEE Standard Floating-Point Format (IEEE 754) Standard IEEE 754 Revision (IEEE 754R) is being considered by a committee Dwa warianty: 32- i 64-bitowy format liczb 8- lub 11-bitowy wyk!adnik (bias = 127 lub 1023) IEEE 754 dopuszcza ponadto tzw. formaty rozszerzone (extended formats) dla oblicze# po(rednich w systemach cyfrowych Short (32-bit) format 8 bits, bias = 127, 23 bits for fractional part (plus hidden 1 in integer part) Short exponent range is –127 to 128 but the two extreme values are reserved for special operands (similarly for the long format) –126 to 127 Sign Exponent 11 bits, bias = 1023, –1022 to 1023 Significand 52 bits for fractional part (plus hidden 1 in integer part) Long (64-bit) format The two ANSI/IEEE standard floating-point formats. 47 48 Wy%sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy%sza Szko!a Informatyki Stosowanej i Zarz"dzania Standard IEEE 754 Some features of ANSI/IEEE standard floating-point formats W rzeczywisto(ci standard IEEE 754 jest bardziej skomplikowany: – – – – – dodatkowe dwa bity: guard i round cztery warianty zaokr"glania liczba dodatnia podzielona przez 0 daje niesko#czono(& niesko#czono(& dzielona przez niesko#czono(& daje NaN (not a number) niektóre procesory nie s" w pe!ni zgodne z IEEE 754, skutki s" na ogó! niedobre (Pentium bug) 49 Feature Single/Short Double/Long Word width in bits 32 64 Significand in bits 23 + 1 hidden 52 + 1 hidden Significand range [1, 2 – 2–23] [1, 2 – 2–52] Exponent bits 8 11 Exponent bias 127 1023 Zero (±0) Denormal e + bias = 0, f = 0 e + bias = 0, f 0 represents ±0.f - 2–126 e + bias = 0, f = 0 e + bias = 0, f 0 represents ±0.f - 2–1022 Infinity (.!) e + bias = 255, f = 0 e + bias = 2047, f = 0 Not-a-number (NaN) Ordinary number e + bias = 255, f 0 e + bias % [1, 254] e % [–126, 127] represents 1.f - 2e e + bias = 2047, f 0 e + bias % [1, 2046] e % [–1022, 1023] represents 1.f - 2e min 2–126 / 1.2 - 10–38 2–1022 / 2.2 - 10–308 max / 2128 / 3.4 - 1038 / 21024 / 1.8 - 10308 50 Wy%sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy%sza Szko!a Informatyki Stosowanej i Zarz"dzania Arytmetyka FP +/- Arytmetyka FP x / 0 W arytmetyce FP dodawanie i odejmowanie s" bardziej z!o%onymi operacjami ni% mno%enie i dzielenie (powodem jest konieczno(& tzw. wyrównywania sk!adników) Etapy mno%enia i dzielenia – – – – – Etapy dodawania i odejmowania – – – – – Sprawdzenie zer Wyrównanie mantys (i korekcja wyk!adników) Dodawanie lub odj cie mantys Normalizowanie wyniku 51 52 Wy%sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy%sza Szko!a Informatyki Stosowanej i Zarz"dzania Mno#enie FP 53 Dzielenie FP 54 Wy%sza Szko!a Informatyki Stosowanej i Zarz"dzania Podsumowanie Zapis s!ów w pami ci (Endian) Reprezentacje liczb: NKB, ZM, U2, BCD, HEX Ogólna charakterystyka ALU Operacje na liczbach ca!kowitych bez znaku Operacje na liczbach ca!kowitych ze znakiem Mno%enie – algorytm Booth’sa Liczby zmiennoprzecinkowe FP Formaty liczb FP, IEEE 754 Operacje na liczbach FP 55 sprawdzenie zer dodawanie/odejmowanie wyk!adników mno%enie/dzielenie mantys (uwaga na znak) normalizacja zaokr"glanie Uwaga: wszystkie wyniki oblicze# po(rednich powinny by& wykonywane w podwójnej precyzji Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Bloki kombinacyjne Przyk!ady: elementy 32-bitowego procesora Organizacja i Architektura Komputerów Select CarryIn A Suma 32 B Carry 32 sumator 1 ALU B 32 32 32 ALU Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Bramki logiczne Dekoder binarny Dowolny blok kombinacyjny mo na zbudowa# z bramek n wej$#, 2n wyj$# tylko jedno wyj$cie jest w stanie ‘1’ dla danej kombinacji stanów na wej$ciu (funkcja ‘1 z n’) Symbol prostok"tny ANSI/IEEE Symbol tradycyjny IEC & • • • • • • iloczyn logiczny AND zanegowany iloczyn logiczny NAND suma logiczna OR zanegowana suma logiczna NOR negator (inwerter) NOT suma modulo 2 (exclusive OR) XOR n wej ! 3 2n wyj ! dekoder binarny 4 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Dekoder binarny – implementacja 2+2=3? Prosty dekoder 2-bitowy: X0 X1 X0 & Y0 & Y1 & Y2 & Y0 Y1 Y2 Y3 dekoder 2-bitowy X1 NOT X2 Y4 Y5 Y6 Y7 dekoder 2-bitowy Y3 Enable (zezwolenie) 5 Dwa dekodery 2-bitowe tworz" dekoder 3-bitowy 6 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Multiplekser Koder kodu ‘1 z n” na kod NKB Dzia!a jak prze!"cznik; nazywany multiplekserem lub w skrócie MUX X0 X1 NC s1 s2 Y0 Tablica prawdy a X2 X3 b Y1 multiplekser (MUX) c X4 ... X7 y d Y2 s a b suma logiczna 7 Y Wynik 32 2 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania 32 multiplekser OP A 32 MUX Elementy i bloki cyfrowe Sum. B A 32 8 y symbol alternatywny (dla dwubitowego MUX) s2 s1 y _______ 0 0 a 0 1 b 1 0 c 1 1 d Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Multiplekser – implementacja s1 Multiplekser grupowy S s0 s1 s2 A dekoder B a0 b0 c0 d0 & a S 2 y & c A a3 b3 c3 d3 & d 9 Y D & b B y3 MUX C D 4 4 4 MUX 4 Y 4 10 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania J"zyk VHDL – przyk#ad entity MUX32X2 is generic (output_delay : TIME := 4 ns); port(A,B: in vlbit_1d(31 downto 0); DOUT: out vlbit_1d(31 downto 0); SEL: in vlbit); end MUX32X2; Pó#sumator – HA (half adder) • VHDL – Very (High Speed Integrated Circuit) Hardware Description Language Sum " (a ! b) # (a ! b ) " (a # b ) ! (a # b) Carry " a ! b • Opracowany w latach 80-tych przez Departament Obrony USA architecture behavior of MUX32X2 is begin mux32x2_process: process(A, B, SEL) begin if (vlb2int(SEL) = 0) then DOUT <= A after output_delay; else DOUT <= B after output_delay; end if; end process; end behavior; • Norma IEEE Standard 1076 (1987, 1993, 2001) 11 a b HA a b & Sum cout a b 0 0 1 1 0 1 0 1 Sum Carry 0 1 1 0 0 0 0 1 cout & Sum 12 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Sumator: HA + HA = A (adder) Sumator wielobitowy, szeregowy a7 b7 a b cin a b a b cin Sum 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 a7 b6 a1 b1 cout Sum sumator cout pó#sumator 0 1 1 0 1 0 0 1 0 0 0 1 0 1 1 1 cout cin $ sum7 c7 $ c6 .... c2 $ .... sum6 sum1 a0 b0 c1 $ c0 sum0 • Szeregowa propagacja przeniesie% (ripple-carry) cout pó#sumator • Wada: d!ugi czas ustalania wyniku; sygna! przeniesienia propaguje przez wszystkie stopnie sumatora Sum 13 14 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Sumator równoleg#y (4-bitowy) Sumator równoleg#y cd. Okre$lamy funkcj& gi generuj"c" przeniesienie i funkcj& pi okre$laj"c" propagacj& przeniesienia a nast&pnie, po dokonaniu podstawie%, w postaci: ci #1 " g i # pi ci g i " ai bi ci # 2 " g i #1 # pi #1 g i # pi #1 pi ci pi " ai % bi ci #3 " g i # 2 # pi # 2 g i #1 # pi # 2 pi #1 g i # pi # 2 pi #1 pi ci ci # 4 " g i #3 # pi #3 g i # 2 # pi #3 pi # 2 g i #1 # pi #3 pi # 2 pi #1 g i # pi #3 pi # 2 pi #1 pi ci Kolejne przeniesienia mo na teraz zapisa# w postaci: ci #1 " g i # pi ci wprowadzaj"c oznaczenia: g (i ,i #3) " g i #3 # pi #3 g i # 2 # pi #3 pi # 2 g i #1 # pi #3 pi # 2 pi #1 g i ci # 2 " g i #1 # pi #1ci #1 p (i ,i #3) " pi #3 pi # 2 pi #1 pi ci # 3 " g i # 2 # p i # 2 ci # 2 otrzymujemy ostatecznie: ci # 4 " g i # 3 # p i # 3 ci # 3 15 MUX C y0 MUX c i # 4 " g ( i ,i # 3 ) # p ( i , i # 3 ) c i 16 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Sumator równoleg#y cd. Sumator równoleg#y cd. Równanie z poprzedniego slajdu okre$laj" metod& nazywan" CLA – carry-look-ahead, w której przeniesienia s" generowane przez blok CLA: Budujemy z bramek zmodyfikowany sumator 1-bitowy: g i #3 pi #3 g i # 2 pi # 2 g i #1 pi #1 ai g i pi ai bi bi & ci $ ci # 4 =1 = ci ci CLA =1 11 bramek AND + 5 bramek OR sumi g i pi ci # 3 g ( i ,i # 3 ) p ( i ,i # 3 ) 17 pi gi ci #1 ci # 2 sumi =1 bramka XOR 18 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Sumator równoleg#y cd. Sumator równoleg#y doko$czenie 4-bitowy sumator z równoleg!" generacj" przeniesie% ai # 2 bi # 2 ai #3 bi #3 ci # 3 $ g i #3 pi #3 sumi #3 ci # 2 $ g i#2 ai #1 bi #1 ci #1 $ sumi # 2 g i #1 pi # 2 pi #1 Ustalanie wyniku oraz propagacja przeniesie% w metodzie CLA s" znacznie szybsze ni w metodzie ripple-carry: ai bi sumi #1 $ gi propagacja c1 do ci+1 c1 do ci+2 c1 do ci+3 c1 do ci+4 ci sumi pi ripple 4.8 9.6 14.4 19.2 CLA 4.8 5.6 6.4 4.8 czas propagacji w ns ci # 4 U ywaj"c 4-bitowego sumatora CLA z poprzedniego slajdu mo na budowa# sumatory 8-, 12-, 16-, b"d' ogólnie 4 x n bitowe Sumatory CLA mo na !"czy# tak, by przeniesienia mi&dzy nimi propagowa!y szeregowo (ripple), lub wprowadzi# uk!ad CLA drugiego poziomu, zbudowany na takiej samej zasadzie jak uk!ad CLA pierwszego poziomu CLA p ( i ,i # 3 ) g ( i ,i # 3 ) 19 20 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Krok 1 Budujemy ALU Za!o enia projektowe – – – 4-bitowe argumenty A i B 4-bitowy wynik operacji Operacje arytmetyczne A B 4 4 dekrementacja A inkrementacja A dodawanie A+B odejmowanie A–B – Operacje logiczne Funkcja Opis 0 1 A+B A+B’+1 Dodawanie Odejmowanie a2 b3 $ F a1 b2 a0 b1 b0 4 =1 =1 =1 =1 f(A,B) c4 $ Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania $ f3 22 $ f2 $ f1 f0 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Krok 2 Krok 3 – projekt AE Wniosek z kroku 1: sumator z ekstenderem mo e realizowa# wi&cej funkcji ni samo dodawanie Ogólna koncepcja ALU: a3 b3 LE c4 S c4 S Wska'niki: przeniesienie i nadmiar x3 B Wska%niki 21 AE y3 $ f3 a2 b2 LE x2 AE y2 $ f2 a1 b1 LE x1 AE y1 $ f1 a0 b0 LE x0 AE y0 c0 $ f0 LE – logic extender, AE – arithmetic extender 23 S a3 ALU Sterowanie negacja A (uzupe!nienie do 1) iloczyn logiczny A and B to samo$# A suma logiczna A or B – A Sumator z funkcj" odejmowania 24 M S1 S0 Funkcja F X 1 1 1 1 dekrementacja dodawanie odejmowanie inkrementacja A–1 A+B A+B’+1 A+1 A A A A 0 0 1 1 0 1 0 1 M S1 S0 bi yi 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 Y 1...11 B B’ 0...00 c0 0 0 1 1 Tablica prawdy M wybór funkcji: 1 – arytmetyczne, 0 – logiczne S1, S0 wybór operacji yi stan na wyj$ciu i-tego bloku AE Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Krok 4 – realizacja AE S1S0 00 bi 0 01 11 1 1 S0 10 NOT 1 1 Krok 5 – projekt LE bi NOT S1 M S1 S0 Funkcja F X Y c0 0 0 0 0 negacja bitowa iloczyn logiczny to samo$# suma logiczna A’ A and B A A or B A’ A and B A A or B 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 NOT 1 M y i " M S1bi # M S 0 b i & & AE yi 25 ai zbudowa# map& Karnaugh’a dla tablicy prawdy LE z poprzedniego slajdu i sprawdzi#, e: S1 M a’i aibi ai ai+bi ai 0 0 1 1 x 0 1 0 1 x Tablica prawdy M wybór funkcji: 1 – arytmetyczne, 0 – logiczne wybór operacji stan na wyj$ciu i-tego bloku LE S1, S0 xi Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Krok 6 – LE S0 xi 0 0 0 0 1 26 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania (wiczenie domowe: M S1 S0 Krok 7 – projekt ko$cowy bi NOT a3 b3 a2 b2 a1 b1 a0 b0 LE AE LE AE LE AE LE AE y3 x2 y2 x1 y1 x0 S0 NOT S1 M NOT NOT xi " M S1 S 0 ai # M S1 S 0 bi # x3 & # S 0 ai bi # S1 a1 # Mai & & & & c4 $ c3 f3 =1 LE $ $ f2 y0 $ f1 c0 & f0 nadmiar (overflow) xi 27 28 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Rozwi zanie alternatywne ALU Rozwi zanie alternatywne cd. Operation CarryIn Komórka ALU wzbogacona o funkcj# odejmowania Komórka ALU zbudowana przy u yciu multipleksera oraz schemat 32-bitowego ALU a0 b0 CarryIn Result0 ALU0 Binvert Operation CarryOut CarryIn O peration CarryIn a1 b1 a CarryIn a Result1 ALU1 0 CarryOut 0 1 1 a2 R esult b2 Result2 ALU2 CarryOut 0 b 2 2 1 b a31 C arryO ut b31 Operacje: +, and, or CarryIn CarryOut Result31 ALU31 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Elementy i bloki sekwencyjne Przerzutniki cd. Przerzutnik D – schemat logiczny i tablica stanów Przerzutnik – podstawowy element sekwencyjnych bloków funkcjonalnych komputerów S R S R Q Q 0 1 1 0 1 0 1 0 1 0 0 1 stan niedozwol. S D Q Clk Q D Q Q Q D PR Q R 31 Result CarryIn Q Clk Q CLR 32 Clock Q 0 0 1 1 Przerzutnik D z asynchronicznymi wej$ciami do ustawiania (PR – preset) i zerowania (CLR – clear) Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Przerzutniki cd. Rejestry Przerzutnik J-K – schemat logiczny J K 0 0 1 1 0 1 0 1 Clock Q Data In J PR Q >Clk K Q CLR bez zmian 0 1 stan przeciwny J > K Q J > K J > K Q Q J > K • Je$li WE = 1, stan Data In zostaje wraz z opadaj"cym zboczem zegara wpisany do rejestru i przeniesiony na wyj$cie Data Out n Clk • W technice komputerowej najcz#$ciej wykorzystuje si# rejestry przesuwaj"ce, które oprócz zapami#tywania n-bitowego s!owa mog" je przesuwa% Vcc X2 X1 Data Out n 4-bitowy licznik binarny z przeniesieniami szeregowymi X0 • Najcz#$ciej zbudowany z zatrzaskowych przerzutników typu D (latch) Write Enable • Najprostsze rejestry przesuwaj"ce przesuwaj" swoj" zawarto$% tylko w jednym kierunku o 1 pozycj# (1 bit) X3 • Bardziej z!o one rejestry przesuwaj" dane w obu kierunkach (SL – shift left, SR – shift right) Q • Na wyj$ciu ALU znajduje si# zwykle szybki rejestr przesuwaj"cy (barrel shifter) 33 34 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Plik (bank) rejestrów Pami!" Przyk!adowy plik rejestrów pokazany obok sk!ada si# z 32 rejestrów: Szyny – – dwie 32-bitowe szyny wyj$ciowe busA i busB – jedna 32-bitowa szyna wej$ciowa: busW sygna! zegara ma znaczenie tylko przy zapisie; przy odczycie uk!ad dzia!a jak uk!ad kombinacyjny – RW RA RB WE 5 5 5 busA busW 32 32 32-bit 32 Registers busB Clk – – 32 – RA – numer rejestru wyprowadzanego na szyn# busA – RB – numer rejestru wyprowadzanego na szyn# busB – RW – numer rejestru zapisywanego z szyny busW je$li WE=1 35 DataIn – – DataOut n Clk adres o d!ugo$ci zale nej od pojemno$ci pami#ci sygna! WE = 1 Schemat logiczny bloku pami#ci n-bitowej (wyidealizowany) Sygna! zegara Clock (CLK) Przyk!ad pliku rejestrów o organizacji 32 x 32 bity Adres n S!owo n-bitowe zapisane w pami#ci jest wybierane przez: Rejestry s" wybierane przez: – WE jedna szyna wej$ciowa: Data In jedna szyna wyj$ciowa: Data Out sygna! CLK ma znaczenie tylko przy zapisie przy odczycie uk!ad zachowuje si# jak kombinacyjny 36 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Multiplikator Elementy trzystanowe W systemach komputerowych cz#sto zachodzi potrzeba !"czenia wyj$% ró nych uk!adów cyfrowych na wspólnej szynie. Wygodnym rozwi"zaniem s" wyj$cia trzystanowe. W trzecim stanie (wysokiej impedancji) wyj$cie stanowi wysok" impedancj# umo liwiaj"c" traktowanie po!"czenia jako rozwarcie. enablein Szyna Uk!ad enableout Inwertery i bufory z wyj$ciem trzystanowym s" cz#sto u ywane do po!"czenia uk!adów z szynami (bus drivers) – – dwa drivery umo liwiaj" realizacj# po!"czenia dwukierunkowego dodatkowym zadaniem driverów jest wzmocnienie sygna!u, dzi#ki czemu szyny mog" by% d!u sze 37 38 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Przyk#ad mno$enia Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania 1101 (13) Stan pocz"tkowy Qo =1: dodaj mno$n x1011 (11) Counter 1 1 0 1 0 C 1 39 0 0 0 0 1 C Reg A 0 1 0 1 1 40 0 1 1 1 0 1 0 Reg A 0 1 1 3 1 1 0 1 3 1 1 0 1 1 0 1 1 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Przesu% wynik cz stkowy Qo =1: dodaj mno$n dekrementuj licznik 1 1 0 1 2 0 1 1 1 2 0 1 0 C Reg A 0 1 0 1 1 0 C 1 1 0 1 Reg A 1 0 0 wynik cz"stkowy 1 1 1 1 0 1 wynik cz"stkowy 41 42 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Przesu% wynik cz stkowy Qo=0: przesu% (nie dodawaj) po przesuni#ciu: 1 1 0 1 1 1 1 0 0 1 Qo =0 0 0 0 C Reg A 0 1 1 0 0 1 C 1 1 1 0 Reg A 0 0 1 0 wynik cz"stkowy 43 0 1 1 1 44 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Qo=1: dodaj mno$n Przesu% (koniec, Z=1) 1 1 0 1 0 1 C C Reg A 0 0 0 1 1 1 1 1 45 Podsumowanie Elementy i bloki kombinacyjne – bramki, bufory (w tym trzystanowe) kodery i dekodery multipleksery Synteza pó!sumatora i sumatora (look-ahead) Synteza ALU Elementy i bloki sekwencyjne – – – – – przerzutniki liczniki rejestry pliki rejestrów pami#ci Metody opisu bloków cyfrowych (j#zyk VHDL) Synteza uk!adu mno enia 1 0 0 0 1 1 1 1 wynik ko&cowy 46 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Reg A 0 wynik cz"stkowy – 0 1 1 1 – 1 1 0 1 47 0 wynik cz"stkowy Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Budowa mikrokomputera Organizacja i Architektura Komputerów Struktura i dzia!anie jednostki centralnej 1 2 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Struktura CPU Zadania CPU CPU wykonuje nast#puj"ce zadania: – – – – – pobiera instrukcje programu z pami#ci (instruction fetch) interpretuje (dekoduje) instrukcje pobiera dane (data fetch) przetwarza dane zapisuje dane 3 4 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Standardowa architektura CPU Rejestr wska ników Przyk!adowa struktura rejestru wska$ników: procesor 80C51 XA (Philips) 5 6 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Bit Z - przyk!ad Bit C - przyk!ad Przyk!ad operacji dodawania z uwzgl#dnieniem bitu przeniesienia C Przyk!ad wykorzystania bitu Z do organizacji p#tli w programie; p#tla jest powtarzana 10 razy, a zawarto%& akumulatora stanie si# równa zeru 7 adc ax,71h 8 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Stos – operacja zapisu Stos – operacja odczytu • typowa notacja w j#zyku asemblera: • typowa notacja w j#zyku asemblera: push x pop • w podanym przyk!adzie stos rozbudowuje si# w stron# wzrastaj"cych adresów pami#ci (np. Intel x51) x • w podanym przyk!adzie stos rozbudowuje si# w stron# wzrastaj"cych adresów pami#ci • wiele innych procesorów wykorzystuje stos rozbudowywany w stron# malej"cych adresów, np. Intel Pentium, Motorola 68HC16 9 10 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Funkcje i w!a"ciwo"ci stosu Stos – wywo!anie podprogramu Stos jest pami#ci" typu LIFO (last-in-first-out) Ilustracja wykorzystania stosu do zapami#tania adresu powrotu (zawarto%ci licznika rozkazów IP) przy wywo!aniu podprogramu (asembler Pentium) Typowe zastosowania stosu – przy wywo!aniu podprogramu zapami#tuje adres powrotu do programu g!ównego – przy przej%ciu do programu obs!ugi przerwania zapami#tuje adres powrotu do przerwanego programu Program g!ówny: – s!u y do chwilowego przechowywania zawarto%ci rejestrów w celu uwolnienia ich do innych zada' – mo e by& u yty do przekazywania parametrów do podprogramów ... ... call read_key ... ... Programista musi dba& o zbilansowanie liczby operacji zapisu i odczytu oraz o zachowanie w!a%ciwej kolejno%ci zapisu i odczytu (odczyt warto%ci przebiega w odwrotnej kolejno%ci ni przy zapisie) 11 Programista musi dba& o to, by stos nie rozrós! si# nadmiernie i nie przekroczy! limitu pami#ci (stack overflow) – cz#sty b!"d w przypadku programów rekurencyjnych lub przy wyst"pieniu niesko'czonej p#tli Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania – Rejestry adresowe – mniej rejestrów GP – cz#stsze odwo!ania do pami#ci – znaczne zwi#kszenie liczby rejestrów GP nie wp!ywa znacz"co na zmniejszenie liczby odwo!a' do pami#ci – wystarczaj"cy do przechowywania adresu – wystarczaj"cy do przechowywania pe!nego s!owa danych Cz#sto mo na !"czy& ze sob" dwa rejestry, dzi#ki czemu mo na !atwo reprezentowa& typowe formaty danych w j#zykach wysokiego poziomu, np. w C: Architektura oparta na specjalizowanych rejestrach upraszcza budow# procesora i przyspiesza wykonanie rozkazu, ale ogranicza programist# – double int a – long int a 14 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Rejestry cd. Rejestry cd. Przyk!ad architektury pliku rejestrów: procesor Motorola 68HC12 15 – Rozmiar rejestru Architektura oparta na rejestrach GP jest bardzie elastyczna przy programowaniu, ale procesor jest bardziej z!o ony a czas wykonania rozkazu d!u szy Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania near Typowa liczba rejestrów GP w CPU: 8 – 32 Rejestr wska$ników (stanu, warunków, flag) 13 read_key proc ... ... ret endp Rejestry cd. Rejestry mog" pe!ni& rozmaite funkcje: Rejestry danych (np. akumulator) read_key Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Liczba rejestrów i ich funkcje ró ni" si# dla ró nych procesorów Rejestry ogólnego przeznaczenia (GP – general purpose) Podprogram: 12 Niewielka pami#& robocza CPU do przechowywania tymczasowych wyników oblicze' – zapisz IP na stos odczytaj IP ze stosu Rejestry – Uwaga: rejestr IP (instruction pointer) bywa w wielu innych procesorach nazywany PC (program counter) Rejestr wska$ników w procesorze Motorola 68HC12 16 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Rejestry cd. Przyk!ad architektury rejestrów GP: Philips 80C51 XA Rejestry cd. rejestry GP Przyk!ad architektury pliku rejestrów: rejestry indeksowe procesor Intel Pentium rejestr bazowy wska$nik stosu rejestry segmentów rejestr wska$ników licznik rozkazów 17 18 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Cykl wykonania rozkazu Format rozkazu W procesorach o architekturze CISC rozkazy maj" niejednolit" posta& (format): • instrukcja zapisana binarnie mo e mie& ró n" d!ugo%& • stosuje si# ró ne sposoby adresowania argumentów Przyk!ad (Pentium): mov fetch – pobranie binarnego kodu rozkazu z pami#ci 10001011 11000001 W celu przyspieszenia wykonywania rozkazu stosuje si# niekiedy cykl prefetch – pobieranie kodu rozkazu jeszcze przed zako'czeniem wykonania poprzedniego rozkazu. Rozwój tej koncepcji doprowadzi! do cachingu i pipeliningu 19 ax,cx mov kod operacji ax,[e42d] 10100001 00101101 11100100 argument lub adres little endian! 20 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Cykl wykonania rozkazu cd. Pobranie rozkazu MEMR 21 22 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wykonanie rozkazu Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Ri Wykonanie rozkazu cd. A A Przyk!ad wykonania rozkazu przes!ania zawarto%ci rejestru Ri do akumulatora 23 M ( R0, R1) Przyk!ad: wykonanie rozkazu przes!ania zawarto%ci akumulatora A do komórki pami#ci o adresie zawartym w parze rejestrów R0 i R1 24 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wykonanie rozkazu cd. Wykonanie rozkazu cd. Przebiegi w trakcie pobrania i wykonania rozkazu: A M ( R 0, R1) Analizowane poprzednio rozkazy w prostych procesorach 8-bitowych zajmuj" tylko 1 bajt zawieraj"cy kod operacji 25 – informacja o rejestrach bior"cych udzia! w operacji mie%ci si# na kilku bitach w kodzie operacji – wymagany jest tylko jeden cykl dost#pu do pami#ci w fazie fetch – w przypadku rozkazu Ri przy zapisie wyniku – M ( R 0, R1) potrzebny jest jeden cykl w przypadku rozkazu A dost#pu do pami#ci przy zapisie wyniku A nie trzeba dost#pu do pami#ci 26 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wykonanie rozkazu cd. Wykonanie rozkazu cd. Przyk!ad rozkazu wielobajtowego Przyk!ad rozkazu wielobajtowego: add a,7bh ;dodaj do akumulatora liczb ;zapisan! w kodzie hex 7b add a,[1c47h] ;dodaj do A zawarto#$ komórki ;o adresie 1c47 w kodzie hex wykonanie wykonanie IR PC Temp PC A M(PC) PC+1 M(PC) PC+1 ALU+ IR PC RAH PC RAL PC Temp A ;pobierz kod operacji do IR ;inkrementuj licznik programu PC ;za"aduj do Temp argument z pami ci ;inkrementuj PC ;prze#lij wynik dodawania A+Temp do A 27 M(PC) PC+1 M(PC) PC+1 M(PC) PC+1 M(RA) ALU+ ;pobierz kod operacji do IR ;inkrementuj licznik programu PC ;"aduj bardziej znacz!cy bajt adresu ;inkrementuj PC ;"aduj mniej znacz!cy bajt adresu ;inkrementuj PC ;"aduj dodajnik do rejestru Temp ;prze#lij wynik dodawania do A 28 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Cykl rozkazowy – wnioski Instrukcje i mikrooperacje Wykonanie programu polega na wykonaniu ci"gu cykli rozkazowych Cykl rozkazowy sk!ada si# z dwóch podstawowych faz: cyklu pobrania rozkazu i wykonania rozkazu W zale no%ci od d!ugo%ci kodu rozkazu i sposobu adresowania argumentów wykonanie rozkazu zajmuje ró n" liczb# elementarnych cykli maszynowych realizowanych przez jednostk# steruj"c" Elementarne operacje sk!adaj"ce si# na wykonanie rozkazu s" nazywane mikrooperacjami (!OP) 29 30 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Uk!ad sterowania Sterowanie w prostym CPU Zadaniem jednostki steruj"cej jest wygenerowanie sekwencji sygna!ów steruj"cych, które spowoduj" wykonanie sekwencji mikrooperacji realizuj"cej dany rozkaz 31 32 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Mikrooperacje i sterowanie Uk!ad sterowania cd. Przyk!ad realizacji prostej operacji dla CPU z poprzedniego rysunku: add cykl mikrooperacja t1 t2 MAR MBR PC IR MAR MBR AC t3 t4 t5 t6 Zastosowanie dekodera upraszcza budow# uk!adu sterowania ac,[adres] sygna"y steruj!ce PC memory PC+1 MBR IR(adres) memory AC+MBR C2 C5 C4 C8 C5 C6,C7,C9 33 34 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Warianty realizacji CU Mikroprogramowanie Mikroprogramowana jednostka CU (M.V. Wilkes, 1951): Stosuje si# dwa sposoby realizacji jednostki steruj"cej: Sekwencje sygna!ów steruj"cych s" przechowywane w wewn#trznej pami#ci CU i tworz" mikroprogram; ka dy rozkaz CPU ma w!asny kod mikroprogramu • w postaci typowego uk!adu sekwencyjnego (hardwired CU) • z wykorzystaniem mikroprogramowania (microprogrammed CU) Praca CU polega na sekwencyjnym odczytywaniu kolejnych s!ów mikroprogramu • Jednostka CU typu hardwired : • Zaprojektowana jako uk!ad sekwencyjny – automat o sko'czonej liczbie stanów (FSM – finite state machine), z wykorzystaniem klasycznych metod syntezy uk!adów sekwencyjnych Zalety: • Zalety: du a szybko%& dzia!ania, zoptymalizowana liczba elementów logicznych – przejrzysta, usystematyzowana budowa CU – !atwo%& modyfikacji pami#ci mikroprogramu Wady: – mniejsza szybko%& dzia!ania w porównaniu z jednostk" CU typu hardwired – wi#ksza liczba elementów logicznych (w tym pami#ciowych) • Wada: trudna modyfikacja w razie konieczno%ci zmiany projektu • Jednostki CU typu hardwired s" preferowane w architekturze RISC 35 36 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Kodowanie mikrorozkazów Mikroprogramowanie cd. kodowanie poziome Schemat funkcjonalny mikroprogramowanej jednostki steruj"cej kodowanie pionowe 37 38 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Przerwanie Koncepcja systemu przerwa# Program g!ówny Przerwanie (Interrupt) Program obs!ugi przerwania (Interrupt handler) 39 40 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Przerwania – zysk czasu CPU Przerwania zewn$trzne Przerwania zewn$trzne (interrupts) spowodowane zdarzeniem poza CPU, sygnalizowane sygna!em doprowadzonym do odpowiedniego wej%cia procesora 1,2,3 – program g!ówny 4 – inicjacja operacji I/O 5 – obs!uga przerwania z przerwaniami bez przerwa' 41 – Maskowane – sygnalizowane przez wej%cie INTR; CPU reaguje na przerwanie maskowane je%li bit zezwolenia na przerwanie IF w rejestrze wska$ników (w Pentium EFLAGS) jest ustawiony – Niemaskowane – sygnalizowane przez wej%cie NMI; CPU zawsze reaguje na takie przerwanie 42 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Przerwania wewn$trzne - wyj%tki Cykl rozkazu a przerwania Wyj%tki (exceptions) powoduj" takie same efekty jak przerwania zewn#trzne, ale s" wynikiem realizacji programu – B!$dy – w przypadku wykrycia b!#du uniemo liwiaj"cego wykonanie instrukcji CPU generuje wyj"tek – Wyj%tki programowane – generowane celowo przez programist# przy u yciu specjalnych instrukcji (INTO, INT3, INT, BOUND – Pentium) 43 44 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Przerwania – problemy projektowe Przerwania – handler (problem 1) Przyk!ad realizacji wspó!pracy programu g!ównego z handlerem (Pentium) 1. Jak zapobiec interferencji programu g!ównego i handlera (obydwa dzia!aj" na tych samych zasobach CPU) ? program g!ówny 2. W jakim obszarze pami#ci nale y umie%ci& programy obs!ugi przerwa' (handlery) ? instrukcja instrukcja instrukcja instrukcja ... ... 3. Je%li w systemie jest wiele $róde! przerwa', jak rozpozna&, które z urz"dze' zg!osi!o przerwanie ? 4. Co zrobi&, je%li jednocze%nie wyst"pi wi#cej ni jedno "danie przerwania ? 1 2 3 4 handler hand_1 (1) (2) hand_1 proc push push ... ... pop pop iret endp far ax bp bp ax (1) EFLAGS stos I,T flags = 0 CS stos IP stos IP:CS hand_1 (2) IP stos CS stos EFLAGS stos • czynno%ci (1) i (2) s" wykonywane automatycznie przez CPU • ochron# rejestrów w handlerze (w tym przypadku ax i bp) programista musi zorganizowa& samodzielnie 46 45 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Adresy handlerów (problem 2) Przerwania wielokrotne (problemy 3 i 4) • Sposób rozmieszczenia adresów handlerów przerwa' i wyj"tków jest w wi#kszo%ci procesorów ustalony na sta!e przez producenta CPU – u ytkownik mo e definiowa& cz#%& adresów, reszta jest ustalona przez system • Najcz#%ciej adresy handlerów s" umieszczone na samej górze (Motorola) lub na samym dole przestrzeni adresowej (Intel) Zablokowanie (maskowanie przerwa') – CPU ignoruje kolejne sygna!y przerwa' i wykonuje aktualny handler – zg!oszenia przerwa' s" pami#tane; CPU zacznie je obs!ugiwa& w kolejno%ci zg!oszenia, po zako'czeniu wykonywania aktualnego handlera Przyk!ad: adresy handlerów przerwa' w MC68HC12 Przerwania priorytetowe – obs!uga przerwa' o ni szym priorytecie mo e by& przerywana przez przerwania o wy szym priorytecie – po zako'czeniu obs!ugi przerwania o wy szym priorytecie CPU wraca do obs!ugi przerwania o ni szym priorytecie watchdog NMI NMI 59 x NMI 47 48 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Przerwania wielokrotne - sekwencyjne Przerwania wielokrotne - zagnie&d&one 49 50 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Cykl rozkazu Identyfikacja ród!a przerwa" (1) Organizacja prostego systemu identyfikacji przerwa przez programowe przegl!danie (polling) Diagram cyklu rozkazowego z uwzgl#dnieniem obs!ugi wyj"tków i przerwa' 51 52 Wy"sza Szko#a Informatyki Stosowanej i Zarz!dzania Wy"sza Szko#a Informatyki Stosowanej i Zarz!dzania Identyfikacja ród!a przerwa" (2) 53 Organizacja systemu identyfikacji $ród#a przerwa z #a cuchowaniem urz!dze I/O (daisy-chain) Wy"sza Szko#a Informatyki Stosowanej i Zarz!dzania Podsumowanie Struktura i dzia#anie CPU – – – rejestr wska$ników plik rejestrów segmentacja pami%ci Stos Budowa i dzia#anie jednostki steruj!cej – – – cykl wykonania rozkazu warianty realizacji jednostki steruj!cej mikroprogramowana jednostka steruj!ca Przerwania – – – – 55 koncepcja systemu przerwa , przerwania i wyj!tki handlery i ich adresy, przerwania wektoryzowane przerwania wielokrotne identyfikacja $ród#a przerwania Identyfikacja ród!a przerwa" (3) Prosty uk#ad realizuj!cy przerwania wektoryzowane 54 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wydajno !: CPU i pami"! 10 6 Relative performance Organizacja i Architektura Komputerów Pami#$ cache Processor 10 3 Memory 1 1980 1990 2000 2010 Calendar year Memory density and capacity have grown along with the CPU power and complexity, but memory speed has not kept pace. 1 2 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Pami"! cache – koncepcja Pami"! cache – koncepcja niewielka, ale szybka pami#$ RAM umieszczona mi#dzy CPU a pami#ci" g!ówn" (operacyjn") mo e by$ umieszczona w jednym uk!adzie scalonym z CPU lub poza CPU 3 Cache is transparent to user; transfers occur automatically CPU Main (slow) memory Cache (fast) memory Reg file 4 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Hierarchiczny system pami"ci Capacity Access latency 100s B ns 10s KB a few ns MBs 10s ns 100s MB 100s ns 10s GB 10s ms TBs min+ Cache 2 Main Secondary CPU registers CPU $Millions Cache 1 Speed gap Po#$czenie CPU z cache Cost per GB Reg’s Cleaner and easier to analyze CPU CPU registers $100s Ks $10s Ks Level-1 cache Level-2 cache Main memory Level-2 cache Level-1 cache Main memory $1000s $10s Tertiary (a) Level 2 between level 1 and main (b) Level 2 connected to “backside” bus $1s Cache memories act as intermediaries between the superfast processor and the much slower main memory. Names and key characteristics of levels in a memory hierarchy. 5 6 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Dzia#anie pami"ci cache Zasady lokalno ci CPU "da odczytu pami#ci sprawdza si#, czy potrzebne dane znajduj" si# w cache je%li tak, nast#puje szybki odczyt z cache je%li nie, przesy!a si# potrzebny blok danych z pami#ci g!ównej do cache nast#pnie "dane dane s" przesy!ane do CPU pami#$ cache jest wyposa ona w znaczniki (tags) pozwalaj"ce ustali$, które bloki pami#ci g!ównej s" aktualnie dost#pne w pami#ci cache 7 Line Word Lokalno%$ w sensie czasu: je%li CPU odwo!uje si# do okre%lonej komórki pami#ci, jest prawdopodobne, e w najbli szej przysz!o%ci nast"pi kolejne odwo!anie do tej komórki Lokalno%$ w sensie przestrzeni adresowej: je%li CPU odwo!uje si# do okre%lonej komórki pami#ci, jest prawdopodobne, e w najbli szej przysz!o%ci nast"pi odwo!anie do s"siednich komórek pami#ci 8 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Terminologia Terminologia cd. cache hit (trafienie): sytuacja, gdy "dana informacja znajduje si# w pami#ci cache wy szego poziomu cache miss (chybienie, brak trafienia): sytuacja, gdy "danej informacji nie ma w pami#ci cache wy szego poziomu line, slot (linijka, wiersz, blok): najmniejsza porcja (kwant) informacji przesy!anej mi#dzy pami#ci" cache, a pami#ci" wy szego poziomu. Najcz#%ciej stosuje si# linijki o wielko%ci 32 bajtów 9 hit rate (wspó!czynnik trafie&): stosunek liczby trafie& do !"cznej liczby odwo!a& do pami#ci miss rate (wspó!czynnik chybie&): 1 – hit rate hit time (czas dost#pu przy trafieniu): czas dost#pu do "danej informacji w sytuacji gdy wyst"pi!o trafienie. Czas ten sk!ada si# z dwóch elementów: – – 10 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Terminologia cd. Problemy W jaki sposób ustali$, czy "dana informacja znajduje si# w pami#ci cache? Je%li ju ustalimy, e potrzebna informacja jest w pami#ci cache, w jaki sposób znale'$ j" w tej pami#ci (jaki jest jej adres?) Je%li informacji nie ma w pami#ci cache, to do jakiej linijki j" wpisa$ z pami#ci g!ównej? Je%li cache jest pe!na, to wed!ug jakiego kryterium usuwa$ linijki aby zwolni$ miejsce na linijki sprowadzane z pami#ci g!ównej? W jaki sposób inicjowa$ zawarto%$ pami#ci cache? miss penalty (kara za chybienie): czas potrzebny na wymian# wybranej linijki w pami#ci cache i zast"pienie jej tak" linijk" z pami#ci g!ównej, która zawiera "dan" informacj# czas hit time jest znacznie krótszy od czasu miss penalty (w przeciwnym przypadku stosowanie pami#ci cache nie mia!oby sensu!) 11 12 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Odwzorowanie bezpo rednie Funkcja odwzorowuj$ca direct-mapped cache Najprostsza metoda odwzorowania polega na wykorzystaniu najmniej znacz"cych bitów adresu Na przyk!ad, wszystkie linijki w pami#ci g!ównej, których adresy ko&cz" si# sekwencj" 000 b#d" odwzorowane na t" sam" linijk# w pami#ci cache Powy sza metoda wymaga, by rozmiar pami#ci cache (wyra ony w linijkach) by! pot#g" liczby 2 ka dy blok (linijka) w pami#ci g!ównej jest odwzorowywana (przyporz"dkowana) tylko jednej linijce w pami#ci cache poniewa cache jest znacznie mniejsza od pami#ci g!ównej, wiele ró nych linijek pami#ci g!ównej jest odwzorowanych na t" sam" linijk# w cache 13 14 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Co znajduje si" w linijce 000? Odwzorowanie bezpo rednie Cache Wci" nie wiemy, która linijka z pami#ci g!ównej (z wielu mo liwych) znajduje si# aktualnie w konkretnej linijce pami#ci cache Musimy zatem zapami#ta$ adres linijki przechowywanej aktualnie w linijkach pami#ci cache Nie trzeba zapami#tywa$ ca!ego adresu linijki, wystarczy zapami#ta$ tylko t# jego cz#%$, która nie zosta!a wykorzystana przy odwzorowaniu T# cz#%$ adresu nazywa si# znacznikiem (tag) Znacznik zwi"zany z ka d" linijk" pami#ci cache pozwala okre%li$, która linijka z pami#ci g!ównej jest aktualnie zapisana w danej linijce cache 000 001 010 011 100 101 110 111 00001 15 czasu potrzebnego do ustalenia, czy "dana informacja jest w pami#ci cache czasu potrzebnego do przes!ania informacji z pami#ci cache do procesora 00101 01001 01101 10001 Memory 10101 11001 11101 16 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Znaczniki – ilustracja Inicjalizacja cache Pami"! g#ówna Pocz"tkowo pami#$ cache jest pusta 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Dane – Znaczniki wszystkie bity w pami#ci cache (w!"cznie z bitami znaczników) maj" losowe warto%ci Po pewnym czasie pracy systemu pewna cz#%$ znaczników ma okre%lon" warto%$, jednak pozosta!e s" nadal wielko%ciami losowymi Jak ustali$, które linijki zawieraj" rzeczywiste dane, a które nie zosta!y jeszcze zapisane? 17 18 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Bit wa%no ci (valid bit) Rewizyta w cache Nale y doda$ przy ka dej linijce pami#ci cache dodatkowy bit, który wskazuje, czy linijka zawiera wa ne dane, czy te jej zawarto%$ jest przypadkowa Na pocz"tku pracy systemu bity wa no%ci s" zerowane, co oznacza, e pami#$ cache nie zawiera wa nych danych Przy odwo!aniach CPU do pami#ci, w trakcie sprawdzania czy potrzebne dane s" w cache nale y ignorowa$ linijki z bitem wa no%ci równym 0 Przy zapisie danych z pami#ci g!ównej do pami#ci cache nale y ustawi$ bit wa no%ci linijki 19 Memory Valid 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Tags Data 20 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Prosta symulacja cache Za#o%enie: sekwencja odwo#a& CPU do pami"ci U yjemy prostej struktury z pami#ci" cache L1 zbudowan" tylko z czterech linijek, podobn" do opisanej wcze%niej Za!o ymy, e na pocz"tku bity wa no%ci zosta!y wyzerowane 21 Adres binarny Linijka hit / miss 3 8 3 2 4 8 0011 1000 0011 0010 0100 1000 11 (3) 00 (0) 11 (3) 10 (2) 00 (0) 00 (0) miss miss hit miss miss miss 22 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Address Binary Address Slot hit or miss Address Binary Address Slot hit or miss 3 0011 11 (3) miss 3 0011 11 (3) miss 8 1000 00 (0) miss 8 1000 00 (0) miss 3 0011 11 (3) hit 3 0011 11 (3) hit 2 0010 10 (2) miss 2 0010 10 (2) miss 4 0100 00 (0) miss 4 0100 00 (0) miss 8 1000 00 (0) miss 8 1000 00 (0) miss Slot V Tag Data Inicjalizacja bitów wa no%ci 00 Slot V Tag 00 0 01 01 0 10 10 0 11 0 11 23 Adres 24 Data Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Address Binary Address Slot hit or miss Address Binary Address Slot hit or miss 3 0011 11 (3) miss 3 0011 11 (3) miss 8 1000 00 (0) miss 8 1000 00 (0) miss 3 0011 11 (3) hit 3 0011 11 (3) hit 2 0010 10 (2) miss 2 0010 10 (2) miss 4 0100 00 (0) miss 4 0100 00 (0) miss 8 1000 00 (0) miss 8 1000 00 (0) miss First Access Slot V Tag Data 2nd Access V Tag 00 0 00 1 01 0 01 0 10 0 10 0 11 1 11 1 00 Mem[3] 25 Data 10 Mem[8] 00 Mem[3] 26 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Address Binary Address Slot hit or miss Address Binary Address Slot hit or miss 3 0011 11 (3) miss 3 0011 11 (3) miss 8 1000 00 (0) miss 8 1000 00 (0) miss 3 0011 11 (3) hit 3 0011 11 (3) hit 2 0010 10 (2) miss 2 0010 10 (2) miss 4 0100 00 (0) miss 4 0100 00 (0) miss 8 1000 00 (0) miss 8 1000 00 (0) miss 3rd Access Slot V Tag 00 1 01 Data 4th Access Slot V Tag 00 1 0 01 0 10 0 10 11 1 11 10 Mem[8] 00 Mem[3] 27 Data 10 Mem[8] 1 00 Mem[2] 1 00 Mem[3] 28 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Address Binary Address Slot hit or miss Address Binary Address Slot hit or miss 3 0011 11 (3) miss 3 0011 11 (3) miss 8 1000 00 (0) miss 8 1000 00 (0) miss 3 0011 11 (3) hit 3 0011 11 (3) hit 2 0010 10 (2) miss 2 0010 10 (2) miss 4 0100 00 (0) miss 4 0100 00 (0) miss 8 1000 00 (0) miss 8 1000 00 (0) miss 5th Access Slot V Tag Data 00 1 01 0 10 1 00 Mem[2] 11 1 00 Mem[3] 10 01 6th Access Mem[8] Mem[4] 29 Slot V Tag 00 1 01 0 10 11 Data 01 10 Mem[4] Mem[8] 1 00 Mem[2] 1 00 Mem[3] 30 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Problem Rozwi$zanie Pami#$ zawiera 230 s!ów Cache zawiera 16K = 214 linijek (s!ów). Ka da linijka mo e przechowywa$ jedn" z 230/214 = 216 linijek pami#ci g!ównej, st"d znacznik musi mie$ 16 bitów 216 linijek w pami#ci g!ównej ma !"czn" pojemno%$ równ" 64K linijek – taki obszar jest przyporz"dkowany ka dej linijce w pami#ci cache ("czna pojemno%$ pami#ci cache wyra ona w bitach wynosi 214 x (32+16+1) = 49 x 16K = 784 Kb (98 KB!) Za!o enia projektowe: – – – (232 230 32-bitowe adresy bajtów w pami#ci g!ównej, s!ów 4-bajtowych) 64 KB cache (16 K s!ów). Ka da linijka przechowuje 1 s!owo Odwzorowanie bezpo%rednie (Direct Mapped Cache) Ile bitów b#dzie mia! ka dy znacznik? Ile ró nych linijek z pami#ci g!ównej b#dzie odwzorowanych na t# sam" linijk# w pami#ci cache? Ile bitów b#dzie zajmowa$ !"cznie kompletna linijka w pami#ci cache? (data + tag + valid). 31 Slot 32 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Problem z zapisem Zapis jednoczesny (write through) Write through – zapis jednoczesny: dane s" zapisywane jednocze%nie do cache i pami#ci g!ównej. Zaleta: zapewnienie sta!ej aktualno%ci danych w pami#ci g!ównej (memory consistency) Wada: du y przep!yw danych do pami#ci – – W metodzie write through procesor zapisuje dane jednocze%nie do cache i do pami#ci g!ównej – – – – 33 w zapisie do pami#ci g!ównej po%redniczy bufor przepisywanie danych z bufora do pami#ci g!ównej obs!uguje specjalizowany kontroler Bufor jest niewielk" pami#ci" FIFO (first-in-first-out) Zaleta: mniejszy przep!yw danych do pami#ci Wada: problemy ze spójno%ci" danych w pami#ci – DRAM Write Buffer Write back – zapis opó'niony: aktualizuje si# tylko pami#$ cache. Fakt ten odnotowuje si# w specjalnym dodatkowym bicie (dirty, updated). Przy usuwaniu linijki z cache nast#puje sprawdzenie bitu i ewentualna aktualizacja linijki w pami#ci g!ównej. – Cache Procesor typowo zawiera 4 pozycje metoda dzia!a dobrze, je%li czesto%$ operacji zapisu jest znacznie mniejsza od 1 / DRAM write cycle 34 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Projekt cache - przyk#ad Projekt cache - rozwi$zanie Address (showing bit positions) 31 Za!o enia projektowe: – Hit 4 s!owa w linijce 4 32 1 0 12 2 Byte offset Tag Data Index do przeprowadzenia odwzorowania pami#ci u ywamy adresów linijek adres linijek jest okre%lany jako adres/4. przy odwo!aniu ze strony CPU potrzebne jest pojedyncze s!owo, a nie ca!a linijka (mo na wykorzysta$ multiplekser sterowany dwoma najmniej znacz"cymi bitami adresu) – 16 15 16 V Block offset 16 bits 128 bits Tag Data 4K entries Cache 64KB 16 16 Bajtów w linijce 4K linijek 32 32 32 32 Mux 32 35 36 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wielko ! linijki a wydajno ! Czy du%a linijka jest lepsza? Przyk!ad: DecStation 3100 cache z linijk" o rozmiarze 1 lub 4 s!ów Rozmiar Program Zwi#kszanie rozmiaru linijki (przy ustalonym rozmiarze pami#ci cache) oznacza, e liczba linijek przechowywanych w pami#ci jest mniejsza Miss Rate linijki Instrukcje Dane Instr. + Dane – 5.4% – gcc 1 6.1% 2.1% gcc 4 2.0% 1.7% 1.9% spice 1 1.2% 1.3% 1.2% spice 4 0.3% 0.6% 0.4% 37 Prosz# rozwa y$ skrajny przypadek, gdy ca!a pami#$ cache tworzy jedn" du " linijk#! 38 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Rozmiar linijki a miss rate Miss Rate Rozmiar linijki a miss penalty Im wi#kszy jest rozmiar linijki, tym wi#cej czasu potrzeba na przes!anie linijki mi#dzy pami#ci" g!ówn" a pami#ci" cache Rozmiar cache (bajty) 25% 20% 1K 15% 4K W przypadku chybienia czas sprowadzenia linijki wzrasta (parametr miss penalty ma wi#ksz" warto%$) Mo na budowa$ pami#ci zapewniaj"ce transfer wielu bajtów w jednym cyklu odczytu, ale tylko dla niewielkiej liczby bajtów (typowo 4) 16K 10% Przyk!ad: hipotetyczne parametry dost#pu do pami#ci g!ównej: 64K 5% 256K – 1 cykl CPU na wys!anie adresu – 15 cykli na inicjacj# ka dego dost#pu – 1 cykl na transmisj# ka dego s!owa Parametr miss penalty dla linijki z!o onej z 4 s!ów: 256 128 64 32 16 0% 1 + 4x15 + 4x1 = 65 cykli. Rozmiar linijki (bajty) 39 konkurencja o miejsce w pami#ci cache jest wi#ksza parametr miss rate wzrasta 40 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wydajno ! cache Wydajno ! cache Wydajno%$ cache zale y g!ównie od dwóch czynników: )redni czas dost#pu do pami#ci AMAT – average memory access time – Poprawa wydajno%ci pami#ci cache polega na skróceniu czasu AMAT przez: 1. ograniczenie chybie& (zmniejszenie miss rate, zwi#kszenie hit rate) 2. zmniejszenie miss penalty 3. – miss penalty Zale y tylko od organizacji komputera (organizacji pami#ci i czasu dost#pu do pami#ci) Je%li podwoimy cz#stotliwo%$ zegara nie zmienimy adnego z tych parametrów (czas dost#pu do pami#ci pozostanie taki sam) zmniejszenie hit time 41 miss rate Zale y od organizacji procesora (hardware) i od przetwarzanego programu (miss rate mo e si# zmienia$). AMAT = Hit time + Miss rate x Miss penalty Dlatego parametr speedup wzro%nie mniej ni dwukrotnie 42 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wydajno ! cache - przyk#ad Jak zmniejszy! miss rate? Za!ó my, e w pami#ci cache z odwzorowaniem bezpo%rednim co 64 element pami#ci jest odwzorowany w tej samej linijce. Rozwa my program: Oczywi%cie zwi#kszenie pami#ci cache spowoduje ograniczenie chybie&, czyli zmniejszenie parametru miss rate Mo na te zmniejszy$ miss rate ograniczaj"c konkurencj# przy obsadzie linijek pami#ci cache for (i=0;i<10000;i++) { a[i] = a[i] + a[i+64] + a[i+128]; a[i+64] = a[i+64] + a[i+128]; } – Trzeba pozwoli$ linijkom z pami#ci g!ównej na rezydowanie w dowolnej linijce pami#ci cache a[i], a[i+64] i a[i+128] u ywaj" tej samej linijki Pami#$ cache jest w powy szym przyk!adzie bezu yteczna 43 44 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Odwzorowanie skojarzeniowe Odwzorowanie skojarzeniowe Fully associative mapping Zamiast odwzorowania bezpo%redniego zezwalamy na lokacj# linijek w dowolnym miejscu pami#ci cache Teraz sprawdzenie czy dane s" w pami#ci cache jest trudniejsze i zajmie wi#cej czasu (parametr hit time wzro%nie) Potrzebne s" dodatkowe rozwi"zania sprz#towe (komparator dla ka dej linijki pami#ci cache) Ka dy znacznik jest teraz kompletnym adresem linijki w pami#ci g!ównej 45 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Dane Znaczniki 46 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Rozwi$zanie kompromisowe Set Associative Mapping Odwzorowanie skojarzeniowe jest bardziej elastyczne, dlatego parametr miss rate ma mniejsz" warto%$ Odwzorowanie bezpo%rednie jest prostsze sprz#towo, czyli ta&sze w implementacji – Ka da linijka z pami#ci g!ównej mo e by$ ulokowana w pewnym dozwolonym podzbiorze linijek pami#ci cache Poj#cie n-way set associative mapping (odwzorowanie n-dro ne sekcyjnoskojarzeniowe) oznacza, e istnieje n miejsc (linijek) w pami#ci cache, do których mo e trafi$ dana linijka z pami#ci g!ównej placed. Pami#$ cache jest zatem podzielona na pewn" liczb# podzbiorów linijek, z których ka dy zawiera n linijek Ponadto lokalizacja danych w pami#ci cache jest szybsza (parametr hit time ma mniejsz" warto%$) Szukamy kompromisu mi#dzy miss rate a hit time. Rozwi"zanie po%rednie: odwzorowanie sekcyjno-skojarzeniowe (set associative) 47 Bit wa%no ci Pami"! 48 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Porównanie odwzorowa& Wydajno ! a n-dro%no ! cache Przyk!ad: cache sk!ada si# z 8 linijek, rozpatrujemy lokalizacj# linijki z pami#ci g!ównej o adresie 12 Direct mapped Block # 0 1 2 3 4 5 6 7 Data Set associative Set # 0 1 2 1 2 Search Tag Data 1 2 Search 49 0.2 Fully associative 3 Data Tag 0.3 Linijka 12 mo e si# znale'$ w dowolnej linijce cache Miss rate Linijka 12 mo e si# znale'$ tylko w linijce 4 Linijka 12 mo e si# znale'$ w jednej z dwóch linijek zbioru 0 Tag 0 Direct 1 2 Search Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania 4-way 8-way 16-way 32-way 64-way Performance improvement of caches with increased associativity. 50 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Algorytm wymiany linijek Odwzorowanie bezpo%rednie jest szczególnym przypadkiem n-dro nego odwzorowania sekcyjnoskojarzeniowego przy n = 1 (1 linijka w zbiorze) Odwzorowanie skojarzeniowe jest szczególnym przypadkiem n-dro nego odwzorowania sekcyjnoskojarzeniowego przy n równym liczbie linijek w pami#ci cache Poprzedni przyk!ad pokazuje, e odwzorowanie 4-dro ne mo e nie dawa$ zauwa alnej poprawy wydajno%ci cache w porównaniu z odwzorowaniem 2-dro nym. 51 2-way Associativity Odwzorowanie n-dro%ne W metodzie odwzorowania bezpo%redniego nie mamy wyboru przy zast#powaniu linijek – problem strategii wymiany linijek nie istnieje W metodzie odwzorowania sekcyjnoskojarzeniowego nale y okre%li$ strategi# wyboru linijek, które maj" by$ usuni#te przy wprowadzaniu do cache nowych linijek 52 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Algorytm LRU Implementacja LRU LRU: Least recently used. – system zarz"dzania pami#ci" cache rejestruje histori# ka dej linijki – je%li trzeba wprowadzi$ do cache now" linijk#, a w dopuszczalnym zbiorze linijek nie ma wolnego miejsca, usuwana jest najstarsza linijka. – przy ka dym dost#pie do linijki (hit) wiek linijki jest ustawiany na 0 – przy ka dym dost#pie do linijki wiek wszystkich pozosta!ych linijek w danym zbiorze linijek jest zwi#kszany o 1 53 Realizacja algorytmu LRU jest wykonywana sprz#towo Obs!uga LRU w pami#ciach 2-dro nych jest !atwa – wystarczy tylko 1 bit aby zapami#ta$, która linijka (z dwóch) w zbiorze jest starsza Algorytm LRU w pami#ciach 4-dro nych jest znacznie bardziej z!o ony, ale stosowany w praktyce W przypadku pami#ci 8-dro nych sprz#towa realizacja LRU staje si# kosztowna i skomplikowana. W praktyce u ywa si# prostszego algorytmu aproksymuj"cego dzia!anie LRU 54 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy$sza Szko%a Informatyki Stosowanej i Zarz#dzania Wielopoziomowa pami"! cache Wspólna a rozdzielona cache We wspólnej pami"ci cache dane i instrukcje s# przechowywane razem (architektura von Neumanna) W rozdzielonej pami"ci cache dane i instrukcje s# przechowywane w osobnych pami"ciach (architektura harwardzka) Dlaczego pami"! cache przechowuj#ca instrukcje ma znacznie mniejszy wspó%czynnik miss rate? Wielko ! pami"ci cache wbudowanej do procesora jest ograniczona ze wzgl"dów technologicznych Ekonomicznym rozwi#zaniem jest zastosowanie zewn"trznej pami"ci cache L2 Zwykle zewn"trzna pami"! cache jest szybk# pami"ci# SRAM (czas miss penalty jest znacznie mniejszy ni$ w przypadku pami"ci g%ównej) Size 1 KB 2 KB 4 KB 8 KB 16 KB 32 KB 64 KB 128 KB Dodanie pami"ci cache L2 wp%ywa na projekt pami"ci cache L1 – d#$y si" do tego, by parametr hit time dla pami"ci L1 by% jak najmniejszy 55 0.1 56 Instruction Cache Data Cache Unified Cache 3.06% 2.26% 1.78% 1.10% 0.64% 0.39% 0.15% 0.02% 24.61% 20.57% 15.94% 10.19% 6.47% 4.82% 3.77% 2.88% 13.34% 9.78% 7.24% 4.57% 2.87% 2.48% 1.35% 0.95% Wy$sza Szko%a Informatyki Stosowanej i Zarz#dzania Wy$sza Szko%a Informatyki Stosowanej i Zarz#dzania Wspólna a rozdzielona cache Wspólna a rozdzielona cache Które rozwi#zanie zapewnia krótszy czas dost"pu AMAT? – – AMAT = %instr x (instr hit time + instr miss rate x instr miss penalty) + %data x (data hit time + data miss rate x data miss penalty) pami"! rozdzielona: 16 KB instrukcje + 16 KB dane pami"! wspólna: 32 KB instrukcje + dane Dla rozdzielonej pami"ci cache: Za%o$enia: – – – – – AMAT = 75% x (1 + 0.64%x 50) + 25% x (1 + 6.47% x 50) = 2.05 nale$y u$y! danych statystycznych dotycz#cych miss rate z poprzedniego slajdu zak%adamy, $e 75% dost"pów do pami"ci dotyczy odczytu instrukcji, a 25% dost"pów dotyczy danych miss penalty = 50 cykli hit time = 1 cykl operacje odczytu i zapisu zajmuj# dodatkowo 1 cykl, poniewa$ jest tylko jeden port dla instrukcji i danych 57 Dla wspólnej pami"ci cache: AMAT = 75% x (1 + 2.48%x 50) + 25% x (1 + 2.48% x 50) = 2.24 W rozwa$anym przyk%adzie lepsz# wydajno ! (krótszy czas dost"pu AMAT) zapewnia rozdzielona pami"! cache 58 Wy$sza Szko%a Informatyki Stosowanej i Zarz#dzania Wy$sza Szko%a Informatyki Stosowanej i Zarz#dzania Przyk ad – cache w Pentium Regs. L1 Data 1 cycle latency 16KB 4-way assoc Write-through 32B lines L1 Instruction 16KB, 4-way 32B lines Podsumowanie Zasada lokalno ci Hierarchiczny system pami"ci Koncepcja budowy i dzia%ania pami"ci cache Metody odwzorowania pami"ci g%ównej i pami"ci cache L2 Unified 128KB--2 MB 4-way assoc Write-back 32B lines – Main Memory Up to 4GB – – Zapis danych i problem spójno ci zawarto ci pami"ci Wydajno ! pami"ci cache, metody optymalizacji, ograniczenia Wymiana linijek w pami"ci cache - algorytm LRU Przyk%ady organizacji i architektury pami"ci cache Wspólna a rozdzielona pami"! cache Processor Chip 59 odwzorowanie bezpo rednie (mapowanie bezpo rednie) odwzorowanie asocjacyjne (pe%na asocjacja) cz" ciowa asocjacja 60 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Pipelining – wprowadzenie Pipelining: technika wykonywania ci"gu instrukcji, w której kilka kolejnych instrukcji jest wykonywanych równolegle A Przyk!ad: pralnia Ania, Basia, Celina i Dorota maj" po kompletnym !adunku odzie y, do prania, wysuszenia i wyprasowania Pranie trwa 30 minut Suszenie zajmuje 40 minut Prasowanie trwa 20 minut Organizacja i Architektura Komputerów Przetwarzanie potokowe. Architektury superskalarne 1 B C D 2 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wersja 1 – pralnia sekwencyjna 6 7 8 9 10 11 Wersja 2 – pralnia potokowa pó noc 6 7 8 9 10 11 pó noc czas czas 30 40 A Kolejno ! zada" Kolejno ! zada" 30 40 20 30 40 20 30 40 20 30 40 20 B C D 40 40 40 20 A • Metoda „start ASAP” B • Pranie 4 !adunków zajmuje 3,5 godziny C • Speedup 6/3,5 = 1,7 D Sekwencyjne pranie 4 !adunków zajmuje 6 godzin 3 4 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Pipelining – wnioski Wnioski cd. Architektura RISC zapewnia lepsze wykorzystanie mo liwo$ci przetwarzania potokowego ni architektura CISC. W architekturze RISC: Pipelining nie zmienia czasu wykonania pojedynczej instrukcji (latency), wp!ywa natomiast na czas wykonania ci"gu instrukcji (throughput) Cz#sto$% z jak" pracuje potok jest ograniczona przez czas pracy najwolniejszego stopnia w potoku (slowest pipeline stage) Wiele instrukcji jest wykonywanych równolegle (instruction level parallelism) Potencjalne zwi#kszenie wydajno$ci jest tym wi#ksze, im wi#ksza jest liczba stopni w potoku Du e zró nicowanie czasu trwania operacji w poszczególnych stopniach ogranicza wzrost wydajno$ci wi#kszo$% operacji dotyczy rejestrów – odwo!ania do pami#ci, które mog" ewentualnie powodowa% kolizje s" rzadsze i wyst#puj" tylko w przypadku specjalnie do tego celu u ywanych instrukcji load i store 6 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Cykl prefetch Prefetch cd. Najprostsza wersja przetwarzania potokowego Pobranie kolejnej instrukcji (cykl fetch) wymaga dost#pu do pami#ci Wykonanie instrukcji zazwyczaj nie wymaga dost#pu do pami#ci Wniosek: mo na pobra% nast#pn" instrukcj# z pami#ci podczas wykonywania poprzedniej instrukcji Metoda nazywana „pobraniem wst#pnym” instruction prefetch 7 instrukcje maj" tak" sam" d!ugo$% – W architekturze CISC instrukcje maj" ró n" d!ugo$%, wyst#puje bogactwo sposobów adresowania danych w pami#ci Czas potrzebny na nape!nienie potoku i opró nienie go ogranicza wzrost wydajno$ci 5 – Wprowadzenie cyklu prefetch poprawia wydajno$% (ale nie podwaja): – pobranie kodu operacji trwa zwykle krócej ni faza wykonania – ka dy rozkaz skoku powoduje utrat# korzy$ci z fazy prefetch mo e pobiera% wi#cej ni jeden rozkaz w fazie prefetch? Wnioski s" niejednoznaczne: 8 – z jednej strony korzystnie by!oby zwi#kszy% liczb# stopni w potoku – z drugiej jednak d!ugi potok w przypadku skoku musi by% opró niony i nape!niony od nowa Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Punkt wyj!cia – brak potoku System bez potoku (przyk ad) 300ps 30ps Uk!ad kombinacyjny R E G Potok 3-stopniowy latency = 330ps throughput = 3.12 GOPS 100ps 20ps 100ps 20ps 100ps uk!ad komb. R E G uk!ad komb. R E G uk!ad komb. Clock Op1 Op2 Clock Op3 – Op1 ?? – Op2 Czas – Op3 – – Op4 Ka da operacja musi by% zako&czona zanim zacznie si# wykonywanie nast#pnej operacji W podanym przyk!adzie czas wykonania operacji wynosi 330ps ?? Czas 9 20ps R E latency = 360ps G throughput = 8.33 GOPS Wykonanie kolejnych instrukcji zaczyna si# co120ps 3 instrukcje s" wykonywane równolegle Czas oczekiwania na wykonanie instrukcji wzrós! z 330ps do 360ps, ale przepustowo$% wzros!a z 3.12 do 8.33 GOPS 10 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Diagramy czasowe Ograniczenie – ró"nice opó#nie$ Bez potoku OP1 OP2 20 ps 150 ps 20 ps 100 ps Comb. logic R e g Comb. logic B R e g Comb. logic C A OP3 – 50 ps Kolejna operacja nie mo e si# zacz"% przed zako&czeniem poprzedniej A OP1 OP2 B C A B A OP3 OP1 OP2 A B B A C B – C – – Do 3 instrukcji wykonuje si# równolegle 11 Przepustowo$% ograniczona przez najwolniejszy stopie& Pozosta!e (szybsze) stopnie s" przez znaczny czas bezczynne Nale y d" y% do budowy potoku o zbli onych czasach operacji w poszczególnych stopniach 12 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania G %boki potok – problemy Cykl wykonania instrukcji 50 ps 20 ps 50 ps 20 ps 50 ps 20 ps 50 ps 20 ps 50 ps 20 ps 50 ps 20 ps R e g Comb. logic R e g Comb. logic R e g Clock – – R e g Comb. logic R e g Comb. logic R e g latency = 420 ps, throughput = 14.29 GOPS W miar# wyd!u ania (zwi#kszania g!#boko$ci) potoku opó'nienia rejestrów staj" si# coraz bardziej znacz"ce Procentowy udzia! czasu opó'nienia rejestrów w potoku: 1-stopie&: 3-stopnie: 6-stopni: – Comb. logic 6.25% 16.67% 28.57% Problem ma du e znaczenie, poniewa wspó!czesne procesory o du ej wydajno$ci maj" coraz g!#bsze potoki 13 14 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Potok 6-stopniowy Typowe 6 stopni potoku Pobranie instrukcji (fetch instruction - FI) Dekodowanie instrukcji (decode instruction - DI) Obliczenie adresu argumentu (calculate operand – CO) Pobranie argumentu (fetch operand – FO) Wykonanie instrukcji (execute instruction - EI) Zapis wyniku (write - WO) 15 C Time A, B, C – fazy wykonania instrukcji C B Clock C A OP3 Time Comb. logic R latency = 510 ps e throughput = 5.88 GOPS g Time 3-stopniowy potok – 20 ps 16 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Instrukcja skoku Skoki a potok Warianty przetwarzania potokowego w przypadku instrukcji skoków (branch): – Rozkaz 3 – rozga!#zienie warunkowe do rozkazu 15 – Zawarto$% potoku, która musi by% usuni#ta – 17 Multiple Streams – dwa potoki; w przypadku rozga!#zienia ka dy z potoków jest !adowany kodem odpowiadaj"cym wykonaniu b"d' niewykonaniu skoku; metoda zawodna w przypadku skoków wielokrotnych Prefetch Branch Target – kod z obu dróg rozga!#zienia jest !adowany do potoku i przechowywany a do chwili wykonania skoku; metoda zastosowana w IBM 360/91 Loop buffer – instrukcje s" pobierane do ma!ej szybkiej pami#ci dzia!aj"cej podobnie jak cache, ale sterowanej przez uk!ad sterowania potokiem; metoda efektywna w przypadku p#tli obejmuj"cych niewiele instrukcji; zastosowana w Cray-1 18 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Skoki a potok cd. Opó#nianie skoków - przyk ad Adres 100 101 102 103 104 105 106 Warianty przetwarzania potokowego w przypadku instrukcji skoków (branch): – – Delayed Branching – opó'nianie skoku; metoda szeregowania instrukcji poprzedzaj"cych i nast#puj"cych po skoku wykonywana w trakcie kompilacji; kompilator stara si# przenie$% instrukcje poprzedzaj"ce skok i umie$ci% je za skokiem; dzi#ki temu w przypadku skoku potok nie musi by% opró niany i instrukcje mog" by% wykonywane nadal; w takim przypadku wykonanie skoku jest wstrzymywane a do zako&czenia wykonania przestawionych instrukcji Branch Prediction – przewidywanie skoków; najbardziej popularna i najbardziej efektywna metoda stosowana we wspó!czesnych procesorach 19 20 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Delayed LOAD A,X ADD A,1 JUMP 106 NOP ADD B,A SUB B,C STORE Z,A • W tym przyk!adzie kompilator wstawia po rozkazie skoku JUMP jedn" instrukcj# pust" (one delay slot). Jest ni" instrukcja NOP (no operation – nic nie rób) • Wykorzystano j#zyk asemblera hipotetycznego procesora, dla uproszczenia za!o ono, e ka da instrukcja zajmuje 1 s!owo W porównaniu z normalnym szeregowaniem rozkazów nic nie tracimy, a mo emy zyska% Dobry kompilator zapewnia nast#puj"c" efektywno$% przy opó'nianiu skoków: – oko!o 60% slotów zostaje wype!nionych – oko!o 80% instrukcji umieszczonych w slotach jest przydatnych w dalszym wykonywaniu programu – !"cznie 48% (60% x 80%) wszystkich slotów jest wykorzystanych z korzy$ci" dla wydajno$ci systemu Zalety i wady metody opó'niania skoków – Zaleta: optymalizacja kompilatora ma wp!yw na prac# pipeliningu – Wada: w nowoczesnych procesorach z g!#bokim potokiem (deep pipeline) metoda opó'niania skoków jest ma!o skuteczna Optimized LOAD A,X JUMP 105 ADD A,1 ADD B,A SUB B,C STORE Z,A 21 22 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Przewidywanie skoków Przewidywanie skoków Metody statyczne – Metody dynamiczne Zak!adamy, e skok nie b#dzie nigdy wykonany Metoda – branch never will be taken – Prognoza skoku jest ustalana dynamicznie, w trakcie wykonania programu – Przewidywanie jest wykonywane na podstawie historii ka dego skoku zapisanej w tablicy historii skoków BTB (branch target buffer) – BTB sk!ada si# zwykle z 128 – 1024 rekordów o postaci: Do potoku pobiera si# zawsze instrukcj# nast#puj"c" po skoku Metoda stosowana w procesorach Motorola 68020 i VAX 11/780 – Zak!adamy, e skok b#dzie zawsze wykonany Metoda – branch always will be taken Do potoku pobiera si# instrukcj# wskazywan" przez adres skoku (branch target) – O tym czy skok b#dzie, czy te nie b#dzie wykonany wnioskujemy na podstawie rodzaju skoku (kodu operacji) Przes!ank" metody jest spostrze enie, e pewne rodzaje skoków s" wykonywane z du ym, a inne z ma!ym prawdopodobie&stwem Adres instrukcji Badania pokazuj", e mo na uzyska% nawet 75% sukcesów 23 one delay slot Efektywno!& opó#niania skoków Mo na ulepszy% program z poprzedniego slajdu dokonuj"c przestawienia instrukcji. Nale y zauwa y%, e ADD A,1 zawsze dodaje 1 do akumulatora A, zatem instrukcja ta mo e by% przesuni#ta przez kompilator i u yta w miejsce NOP Normal LOAD A,X ADD A,1 JUMP 105 ADD B,A SUB B,C STORE Z,A Delayed LOAD A,X ADD A,1 JUMP 106 NOP ADD B,A SUB B,C STORE Z,A Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Opó#nianie skoków cd. Adres 100 101 102 103 104 105 106 Normal LOAD A,X ADD A,1 JUMP 105 ADD B,A SUB B,C STORE Z,A 24 Adres skoku (target) Stan Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Predykcja skoków – diagram BTB Rozmiar BTB Przyk!adowe kodowanie stanów: Stan: 10 Stan: 11 Stan: 01 Stan: 00 Im wi#kszy jest rozmiar BTB (czyli im wi#cej rekordów mie$ci tablica), tym bardziej trafne jest przewidywanie skoków 00 – mocna hipoteza o braku skoku 01 – s!aba hipoteza o braku skoku 10 – s!aba hipoteza o skoku 11 – mocna hipoteza o skoku 25 Rozmiar BTB (rednia liczba trafnych prognoz [%] 16 32 64 128 256 512 1024 2048 40 50 65 72 78 80 85 87 26 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania G %boko!& potoku G %boko!& potoku cd. Liczba stopni przetwarzania danych typu integer w potokach popularnych procesorów Wyniki bada& pokazuj", e istnieje teoretyczna optymalna warto$% g!#boko$ci potoku równa oko!o 8 stopni – – CPU z jednej strony im g!#bszy potok, tym lepiej dzia!a równoleg!e przetwarzanie instrukcji z drugiej strony g!#boki potok w przypadku 'le przewidzianego skoku powoduje du " strat# czasu (branch penalty) P MMX P-Pro P-II P-III P-4 M1-2 K5 K6 K7 W nowych procesorach stosuje si# ulepszone warianty przetwarzania potokowego (hyperpipeline) dostosowane do pracy z bardzo szybkim zegarem – w takich procesorach optymalna g!#boko$% potoku jest wi#ksza i dochodzi nawet do 20 (przyk!ad – Pentium 4) 27 liczba stopni w potoku 5 6 12 12 10 20 7 7 6 11 28 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Zjawisko hazardu Zjawisko hazardu cd. Równoleg!e przetwarzanie instrukcji w potoku prowadzi cz#sto do niekorzystnych zjawisk nazywanych hazardem. Hazard polega na braku mo liwo$ci wykonania instrukcji w przewidzianym dla niej cyklu. Wyró nia si# trzy rodzaje hazardu: 1. Hazard zasobów (structural hazard) – kiedy dwie instrukcje odwo!uj" si# do tych samych zasobów Podstawowym sposobem rozwi"zywania problemów wynikaj"cych z hazardu jest chwilowe zatrzymanie potoku na jeden lub wi#cej cykli zegara. W tym celu do potoku wprowadza si# tzw. przegrody (stalls), które s" faktycznie operacjami pustymi („bubbles”) 2. Hazard danych (data hazard) – kiedy wykonanie instrukcji zale y od wyniku wcze$niejszej, nie zako&czonej jeszcze instrukcji znajduj"cej si# w potoku Przegrody wp!ywaj" oczywi$cie na zmniejszenie wydajno$ci CPU 3. Hazard sterowania (control hazard) – przy przetwarzaniu instrukcji skoków i innych instrukcji zmieniaj"cych stan licznika rozkazów (np. wywo!ania podprogramów) Ze wzgl#du na wyst#powanie zjawisk hazardu rzeczywista wydajno$% CPU jest zawsze mniejsza od wydajno$ci teoretycznej, obliczonej przy za!o eniu e hazardy nie wyst#puj" Hazard sterowania zosta! omówiony ju wcze$niej – teraz zajmiemy si# hazardem zasobów i danych 29 30 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Hazard zasobów Hazard zasobów - przyk ad czas (cykle zegara) Nazywany te hazardem strukturalnym lub konfliktem zasobów (resource conflict) !danie odczytu z pami"ci Kolejne instrukcje Reg Mem Reg Mem Reg Mem Reg Mem Reg Mem Reg Mem Reg Mem Instr 3 Instr 4 32 Reg ALU Instr 2 Mem Mem ALU Rozwi"zanie polega na wprowadzeniu jednej (lub kilku przegród). W efekcie wzrasta CPI i spada wydajno$% procesora Instr 1 Reg ALU Typowy hazard zasobów wyst#puje, gdy jedna z instrukcji wykonuje !adowanie danych z pami#ci podczas gdy inna ma by% w tym samym cyklu !adowana (instruction fetch) Mem ALU Load ALU Powodem hazardu tego typu jest jednoczesne "danie dost#pu do tego samego zasobu (zwykle pami#ci) przez dwa ró ne stopnie potoku 31 P – Pentium M – Cyrix K – AMD Cykl IF instr 3 Reg Wy#sza Szko$a Informatyki Stosowanej i Zarz!dzania Wy#sza Szko$a Informatyki Stosowanej i Zarz!dzania Hazard zasobów – przyk ad cd. Hazard danych czas (cykle zegara) Kolejne instrukcje Reg Reg Mem Reg Mem Reg ALU Instr 2 Mem Mem ALU Instr 1 Reg ALU Load Mem Mem Hazard danych wyst"puje, poniewa# potok zmienia kolejno%& operacji odczytu/zapisu argumentów w stosunku do kolejno%ci, w jakiej te operacje wyst"puj! w sekwencyjnym zapisie programu Reg Przyk$ad: stall Reg ALU Mem Instr 3 Mem mov cx,ax 34 Wy#sza Szko$a Informatyki Stosowanej i Zarz!dzania Wy#sza Szko$a Informatyki Stosowanej i Zarz!dzania Hazard typu RAW Hazard typu WAR Hazard WAR (write after read) wyst"puje gdy pojawi si" #!danie zapisu danych przed zako'czeniem ich odczytu Przyk$ad: Wyró#nia si" trzy typy (rodzaje) hazardu danych: RAW, WAR i WAW: Hazard RAW (read after write) wyst"puje gdy pojawi si" #!danie odczytu danych przed zako'czeniem ich zapisu Przyk$ad (taki sam jak na poprzednim slajdzie) add ax,bx mov cx,ax 35 mov bx,ax add ax,cx CPU chce zapisa& do akumulatora ax now! warto%& równ! sumie ax+cx, podczas gdy instrukcja przes$ania mov jeszcze nie odczyta$a starej zawarto%ci ax i nie przes$a$a jej do rejestru bx 36 Wy#sza Szko$a Informatyki Stosowanej i Zarz!dzania Wy#sza Szko$a Informatyki Stosowanej i Zarz!dzania Hazard typu WAW Problem Hazard WAW (write after write) wyst"puje gdy pojawi si" #!danie zapisu danych przed zako'czeniem wcze%niejszej operacji zapisu Przyk$ad: mov ax,[mem] add ax,bx Czy mo#e powsta& hazard danych RAR (read after read) ? Przyk$ad: 37 add bx,ax mov cx,ax Odpowied(: taka sytuacja nie powoduje hazardu danych, poniewa# zawarto%& rejestru ax nie zmienia si". Mo#e natomiast wyst!pi& konflikt równoczesnego dost"pu (hazard zasobów). Problem mo#na rozwi!za& stosuj!c rejestry typu dual-port CPU chce zapisa& do akumulatora ax now! warto%& równ! sumie ax+bx, podczas gdy poprzednia instrukcja nie zd!#y$a jeszcze pobra& do ax zawarto%ci komórki pami"ci [mem] 38 Wy#sza Szko$a Informatyki Stosowanej i Zarz!dzania Wy#sza Szko$a Informatyki Stosowanej i Zarz!dzania Zapobieganie hazardom danych Szeregowanie statyczne Najprostsz! metod! jest, jak poprzednio, zatrzymywanie potoku (stalls) – Przyk$ad: Kod oryginalny add ax,15 mov cx,ax mov [mem],bx metoda ta obni#a wydajno%& CPU i jest stosowana w ostateczno%ci Szeregowanie statyczne (static scheduling) 39 ax,bx Instrukcja mov cx,ax ma pobra& zawarto%& akumulatora ax, podczas gdy potok jeszcze nie okre%li$ tej zawarto%ci w poprzedniej instrukcji dodawania Reg 33 add – wykonywane programowo podczas kompilacji – polega na zmianie kolejno%ci instrukcji, tak aby zlikwidowa& hazardy – likwidacja hazardów nie zawsze jest mo#liwa – dobre kompilatory potrafi! usun!& znaczn! cz"%& potencjalnych hazardów danych Kod po uszeregowaniu add ax,15 mov [mem],bx mov cx,ax Zmiana kolejno%ci instrukcji nie wp$ywa na dzia$anie programu Hazard RAW zosta$ zlikwidowany, poniewa# instrukcja dodawania zd!#y by& wykonana przed pobraniem argumentu przez instrukcj" przes$ania ax do cx 40 Wy#sza Szko$a Informatyki Stosowanej i Zarz!dzania Wy#sza Szko$a Informatyki Stosowanej i Zarz!dzania Szeregowanie dynamiczne Procesory superskalarne Dynamic scheduling – wspólna nazwa technik polegaj!cych na usuwaniu problemów z hazardem danych w trakcie wykonywania programu, a nie w fazie kompilacji Procesory, które wykonuj! równolegle wi"cej ni# jeden rozkaz (paralelizm na poziomie rozkazu) Podstawowe bloki funkcjonalne CPU s! zwielokrotnione: – realizacja sprz"towa w CPU – dwa potoki (lub wi"cej) – najwa#niejsze techniki: – kilka jednostek ALU (zwykle osobne ALU dla operacji integer i FP) wyprzedzanie argumentów (operand forwarding) Termin „superskalarny” u#yty po raz pierwszy w 1987 roku oznacza, #e CPU przetwarza w danej chwili kilka argumentów skalarnych (liczb), a nie tylko jedn! wielko%& skalarn! wyprzedzanie wyników operacji (result forwarding) – w procesorach superskalarnych stosuje si" ponadto notowanie (scorebording) przemianowywanie rejestrów (register renaming) 41 42 Wy#sza Szko$a Informatyki Stosowanej i Zarz!dzania Wy#sza Szko$a Informatyki Stosowanej i Zarz!dzania Procesor superskalarny - koncepcja 43 Superskalar – koncepcja cd. 44 Wy#sza Szko$a Informatyki Stosowanej i Zarz!dzania Wy#sza Szko$a Informatyki Stosowanej i Zarz!dzania Superskalar cd. Superskalar - problemy Porównanie koncepcji CPU: Zagadnienie wspó$zale#no%ci instrukcji w procesorach superskalarnych jest jeszcze trudniejsze ni# problem hazardów w pojedynczym potoku 1) z potokiem instrukcji 2) z superpotokiem 3) superskalarnej Superpotok jest taktowany podwójn! czesto%ci! zegara Rozwi!zanie superskalarne zapewnia najwi"ksz! wydajno%& 45 46 Wy#sza Szko$a Informatyki Stosowanej i Zarz!dzania Wy#sza Szko$a Informatyki Stosowanej i Zarz!dzania Superskalar – problemy cd. Superskalar – przyk ad W celu odpowiedniego wykorzystania zalet architektury superskalarnej stosuje si" rozmaite techniki: Przemianowywanie rejestrów – metoda usuwania uzale#nie' mi"dzy instrukcjami przy u#yciu zbioru pomocniczych rejestrów Uproszczony schemat blokowy procesora superskalarnego UltraSparc IIi (Sun) Okna rejestrów – parametry s! przekazywane w bloku rejestrów nazywanym oknem; zmiana bloku (i tym samym parametrów) wymaga zmiany samego wska(nika okna Statyczna optymalizacja kodu (w fazie kompilacji) Zaawansowane dynamiczne metody szeregowania instrukcji (parowanie, technika zmiany kolejno%ci wykonywania rozkazów – out-of-order completion) Ze wzgl"du na swoje cechy architektura RISC znacznie lepiej sprzyja technice superskalarnej ni# architektura CISC 47 48 Wy#sza Szko$a Informatyki Stosowanej i Zarz!dzania Podsumowanie Koncepcja przetwarzania potokowego – – – g$"boko%& potoku potok a skoki – przewidywanie skoków zjawisko hazardu sterowania danych zasobów – szeregowanie statyczne i dynamiczne Architektura superskalarna – – – – 49 metody zwi"kszania wydajno%ci przemianowywanie rejestrów okna rejestrów statyczne i dynamiczne szeregowanie rozkazów Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Architektura IA-32 Intel Architecture 32 – Organizacja i Architektura Komputerów – pierwszy procesor IA-32 – 8086 (1978) podstawowa architektura utrzymana do 1993 r (pierwszy procesor Pentium – superskalar, 2 potoki) Architektura P6 – pierwszy procesor – Pentium Pro (1995) 3-potokowy superskalar 5 jednostek wykonawczych 8+8KB L1 cache, 256 KB L2 cache Architektury IA-32 i IA-64 – Pentium III (1999) 16+16 KB L1 cache, 256 lub 512 L2 cache Streaming SIMD Extension (SSE) – równoleg!e operacje na spakowanych 32-bitowych liczbach FP w rejestrach SSE o rozmiarze 128 bitów – 1 Pentium III Xeon – ulepszona pami#$ cache 2 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Pentium CPU (1993) Mikroarchitektura P6 • dwa potoki U i V • instrukcje s" dobierane parami Zapocz"tkowana w Pentium Pro (1995) – – U ywana w procesorach Intel wcze%niejszych od P4 Mieszana architektura CISC-RISC lista instrukcji typu CISC translacja kodu programu na ci"g mikrooperacji RISC – 3 potokowy superskalar, out-of-order execution – Potok sk!ada si# z 3 cz#%ci: 14-stopniowy potok instrukcji wydawanie instrukcji: in-order wykonanie instrukcji: out-of-order (RISC core) ko&czenie instrukcji (retire): in-order 3 4 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Mikroarchitektura P6 cd. Mikroarchitektura P6 cd. 5 6 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania P6 – Pentium III Xeon Pentium 4 Nazwa projektu: Willamette Architektura NetBurst G!#boki potok – 20 stopni – – zaprojektowany do pracy z szybkim zegarem >1,5 GHz ró ne cz#%ci CPU pracuj" z ró n" cz#stotliwo%ci" zagara Trzy sekcje: – – – wydawanie instrukcji (dispatch) – in-order wykonanie instrukcji – out-of-order ko&czenie instrukcji – in-order Technologia SSE2 – 7 8 ulepszone technologie MMX i SSE Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Intel NetBurst Pentium 4 – trace cache IA32 Instrs. L2 Cache uops Instruct. Decoder Trace Cache Operations Trace Cache – – – 9 zast#puje tradycyjn" pami#$ cache instrukcje s" przechowywane w zdekodowanej postaci (jako mikrooperacje) zmniejsza wymagania dotycz"ce szybko%ci pracy dekodera 10 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Ulepszenia w NetBurst wobec P6 Pentium 4 – uk ady wykonawcze Trace cache – 12K mikrooperacji 8 KB L1 cache, czas dost#pu 2 cykle 256 KB L2 cache, czas dost#pu 7 cykli ALU taktowane podwójn" cz#stotliwo%ci" zegara 20-stopniowy potok, cz#stotliwo%$ > 1,5 GHz Poczwórna przep!ywno%$ szyny (400 MHz) – quad-pumped Technologia SSE2 11 12 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Hyper-Threading 13 Rejestry P4 14 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Rejestry P4 cd. 15 Rejestry P4 cd. 16 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Modele pami!ci • Flat Model p!aski model pami#ci – bez podzia!u na segmenty Segmentacja pami!ci Rejestry segmentów Segment kodu programu Segment danych Segment stosu • Segmented Model pami#$ podzielona na segmenty Dodatkowe segmenty danych • Real-Address-Model segmentacja typu x86 17 18 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Segmentacja pami!ci cd. 19 Segmentacja 20 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Segmentacja cd. 21 Segmentacja cd. 22 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Segmentacja cd. 23 Segmentacja cd. 24 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Segmentacja cd. 25 Segmentacja cd. 26 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Protekcja 27 Wska"niki P4 28 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Koncepcja IA-64 29 Koncepcja IA-64 30 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Koncepcja IA-64 cd. 31 Architektura IA-64 32 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Rejestry IA-64 33 Format instrukcji IA-64 34 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Predykaty IA-64 35 Predykaty IA-64 36 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Spekulacja IA-64 37 Spekulacja IA-64 38 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Licznik p!tli IA-64 39 Obroty rejestrów IA-64 40 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Pami!# IA-64 – proces Pami!# IA-64 – proces 41 42 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Pami!# IA-64 – system 43 Pami!# IA-64 – regiony 44 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Architektura IA-64 Podsumowanie Mikroarchitektura P6 Architektura Pentium 4 Itanium – – opracowany w 2000 roku oko!o 10 mln tranzystorów – – – Modele pami#ci Segmentacja pami#ci Protekcja Architektura IA-64 (Itanium) Itanium 2 – – – – opracowany w 2002 roku cache L3 on chip 6 jednostek ALU linijka L1 – 64 bajty – – – – 45 NetBurst trace cache Hyper-Threading 46 EPIC (wariant VLIW) predykaty spekulacja organizacja pami#ci (regiony) Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Lista instrukcji Zbiór polece# (instrukcji) zrozumia!ych dla CPU – Organizacja i Architektura Komputerów Instrukcje s" zapisywane w postaci binarnej – Architektura listy instrukcji – ISA ka da instrukcja ma swój unikatowy kod binarny (kod operacji) W programach %ród!owych zapisanych w j&zyku asemblera zamiast kodów binarnych stosuje si& zapis symboliczny operacji – 1 lista instrukcji powinna by$ funkcjonalnie pe!na, tzn. umo liwia$ zapis dowolnego algorytmu np. add, mov 2 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Elementy instrukcji 1. 2. 3. 4. Reprezentacja instrukcji Kod operacji (op code), okre'la czynno'$ wykonywan" przez instrukcj& Wskazanie na argument %ród!owy (source operand) Wskazanie na argument docelowy (destination operand) Wskazanie na kolejn" instrukcj& programu, która ma by$ wykonana jako nast&pna Przyk!ad: mov Mnemonik (rodzaj operacji) ax,cx Posta$ symboliczna (j&zyk asemblera) mov Zapis funkcjonalny ax cx Posta$ binarna w pami&ci programu 10001011 11000001 ;prze lij cx do ax Argument docelowy ax,cx Argument %ród!owy w postaci binarnej kod operacji jest zapisywany jako pierwszy, dalej nast&puj" argumenty Element 1) jest obligatoryjny, elementy 2) – 4) s" opcjonalne 3 4 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Reprezentacja instrukcji cd. Liczba argumentów Istotnym czynnikiem przy projektowaniu ISA jest liczba argumentów (lub odniesie# do argumentów) zawartych w instrukcji Typowy format instrukcji z odniesieniami do dwóch argumentów Kod operacji Argument 1 – Argument 2 – wp!yw na d!ugo'$ s!owa instrukcji oraz z!o ono'$ CPU du a liczba argumentów wymaga d!ugiego s!owa instrukcji Rozwa my, ile argumentów wymaga instrukcja dodawania ADD Binarny kod operacji okre'laj"cy jednoznacznie rodzaj rozkazu; zdeterminowany przez mnemonik instrukcji (np. MOV, ADD itp.) Odniesienie do argumentu nr. 1 • jawnie (wprost) podana warto'$ argumentu lub • adres lub • inne wskazanie na argument Odniesienie do argumentu nr. 2 • jawnie (wprost) podana warto'$ argumentu lub • adres lub • inne wskazanie na argument 5 – – – zwykle domy'lnie przyjmuje si&, e b&dzie to kolejna instrukcja w programie, ale czasem chcemy wykona$ skok w inne miejsce programu do wskazania miejsca skoku potrzebny jest czwarty adres 6 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Liczba argumentów cd. Przyk ad – procesor 3–adresowy Je'li mamy procesor 3 – adresowy, mo emy okre'li$ adresy dwóch argumentów i adres wyniku. Poni ej podano sekwencj& instrukcji obliczaj"c" warto'$ wyra enia: Y = (A - B) / (C + (D * E)) W praktyce procesory czteroadresowe nie s" stosowane – – – zbyt skomplikowana budowa CPU d!ugie s!owo instrukcji nie zawsze instrukcja wymaga a czterech adresów Wi&kszo'$ instrukcji wymaga jednego, dwóch lub najwy ej trzech adresów – SUB MUL ADD DIV adres kolejnej instrukcji w programie jest okre'lany przez inkrementacj& licznika rozkazów (z wyj"tkiem instrukcji skoków) Rozwa my ci"g instrukcji hipotetycznego procesora wykonuj"cego obliczenie warto'ci wyra enia: R1, R2, R2, R1, A, B D, E R2, C R1, R2 ; ; ; ; Rejestr Rejestr Rejestr Rejestr R1 R2 R2 R1 ! ! ! ! A – B D * E R2 + C R1 / R2 Instrukcje 3-adresowe s" wygodne w u yciu, bowiem mo na wskaza$ adres wyniku. Nale y zauwa y$, e w podanym przyk!adzie oryginalne zawarto'ci komórek A, B, C, D i E nie zosta!y zmienione Y = (A - B) / (C + (D * E)) 7 je'li chcemy doda$ do siebie zawarto'$ dwóch komórek pami&ci potrzebujemy dwóch adresów gdzie umie'ci$ wynik dodawania? Potrzebny jest trzeci adres która instrukcja w programie ma by$ wykonana jako nast&pna? 8 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Procesor 2–adresowy Przyk ad – procesor 2–adresowy Jak zmniejszy$ liczb& adresów? – Przy za!o eniu, e argumenty znajduj" si& w rejestrach, podana sekwencja instrukcji oblicza warto'$ wyra enia: d" ymy do skrócenia s!owa instrukcji i uproszczenia budowy CPU Typowa metoda polega na domy'lnym za!o eniu odno'nie adresu wyniku operacji – – Y = (A-B) / (C + (D * E)) wynik jest umieszczany w miejscu, sk"d pobrano jeden z argumentów %ród!owych taka metoda oczywi'cie niszczy (zamazuje) pierwotn" warto'$ argumentu SUB MUL ADD DIV Najcz&'ciej przyjmuje si&, e wynik jest umieszczany w miejscu, sk"d pobrano pierwszy argument (np. Pentium) – ; ; ; ; Rejestr Rejestr Rejestr Rejestr A D D A ! ! ! ! A D D A * + / B E C D 10 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Przyk ad – procesor 2–adresowy cd. Procesor 1–adresowy Je'li chcemy zachowa$ oryginaln" zawarto'$ rejestrów, musimy skopiowa$ j" do innych rejestrów: MOV MOV SUB MUL ADD DIV R1, R2, R1, R2, R2, R1, A D B E C R2 ; ; ; ; ; ; W instrukcji jawnie wskazany jest tylko jeden argument Drugi argument znajduje si& w domy'lnym miejscu Kopiuj A do rejestru R1 Kopiuj D do rejestru R2 Rejestr R1 ! R1-B Rejestr R2 ! R2*E Rejestr R2 ! R2+C Rejestr R1 ! R1 / R2 11 – zwykle w akumulatorze – akumulator w ró nych j&zykach asemblera ma ró ne oznaczenie, najcz&'ciej A, AX, ACC Wynik jest umieszczany równie w domy'lnym miejscu, typowo w akumulatorze – Teraz wszystkie rejestry A-E zostaj" zachowane, ale kosztem kilku dodatkowych instrukcji warto'$ drugiego argumentu zostaje zniszczona (zamazana przez wynik operacji) 12 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Przyk ad – procesor 1–adresowy Procesor 0–adresowy W skrajnym przypadku mo na stosowa$ instrukcje nie zawieraj"ce adresów Obliczenia s" wykonywane na stosie Obliczamy warto'$ wyra enia: Y = (A-B) / (C + (D * E)) LDA MUL ADD STO LDA SUB DIV D E C R1 A B R1 ; ; ; ; ; ; ; Load ACC with D Acc ! Acc * E Acc ! Acc + C Store Acc to R1 Acc ! A Acc ! Acc-B Acc ! Acc / R1 – – – argumenty umieszcza si& w odpowiedniej kolejno'ci na stosie operacje s" wykonywane na szczytowych komórkach stosu wynik umieszcza si& na szczycie stosu Koncepcj& przetwarzania 0-adresowego poda! po raz pierwszy polski logik i filozof Jan (ukasiewicz (1878-1956) W wielu wczesnych komputerach stosowano procesory 1-adresowe, poniewa maj" one prostsz" konstrukcj& – Jak wida$ z powy szego przyk!adu, architektura 1-adresowa wymaga jednak d!u szych programów – 13 – – notacja beznawiasowa RPN – Reverse Polish Notation, odwrotna notacja polska stosowana w niektórych komputerach i kalkulatorach (np. HP) korzystaj"c z metody RPN opracowano ciekawe j&zyki programowania, np. FORTH 14 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Przyk ad – procesor 0–adresowy Liczba adresów – wnioski Wi&cej adresów Obliczamy wyra enie: Y = (A-B) / (C + (D * E)) – PUSH PUSH SUB PUSH PUSH MUL PUSH ADD DIV 15 B E C D Otrzymujemy ten sam wynik co wcze'niej, ale teraz zawarto'$ rejestrów A i D uleg!a zmianie pierwszy argument mo e si& znajdowa$ w rejestrze, komórce pami&ci itp. 9 A, D, D, A, B A E D C ; ; ; ; ; ; ; ; ; B B, A (A-B) (A-B), E (A-B), E, D (A-B), (E*D) (A-B), (E*D), C (A-B), (E*D+C) (A-B) / (E*D+C) – – bardziej skomplikowane, ale te wygodne w u yciu instrukcje d!u sze s!owo instrukcji wi&ksza liczba rejestrów operacje na rejestrach s" szybsze ni operacje na zawarto'ci pami&ci – krótsze programy (w sensie liczby instrukcji) Mniej adresów – – – 16 mniej skomplikowane instrukcje d!u sze programy (w sensie liczby instrukcji) krótszy cykl pobrania instrukcji Wi&kszo'$ wspó!czesnych procesorów stosuje architektur& 2-adresow" lub 3-adresow" Szczególne koncepcje ISA (RISC, VLIW, EPIC) Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Rodzaje argumentów Format danych – Pentium 8 bit byte 16 bit word 32 bit double word 64 bit quad word adresowanie pami&ci odbywa si& bajtami (ka dy kolejny bajt w pami&ci ma swój adres) dane 32-bitowe (double word) musz" by$ ulokowane pocz"wszy od adresu podzielnego przez 4 Adresy (addresses) Liczby (numbers) – Integer/floating point Znaki (characters) – ASCII Dane logiczne (logical data) – Bits or flags 17 18 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Interpretacja (kodowanie) danych Typy instrukcji Data Transfer – przesy!anie danych (np. MOV) Arithmetic – operacje arytmetyczne (np. ADD) Logical – operacje logiczne (np. OR) Conversion – konwersja danych, np. liczb binarnych na BCD I/O – operacje wej'cia/wyj'cia System Control General – dowolna liczba binarna Integer – liczba binarna ze znakiem (U2) Ordinal – liczba ca!kowita bez znaku (NKB) Unpacked BCD – jedna cyfra BCD na bajt Packed BCD – 2 cyfry BCD na bajt Near Pointer – 32-bitowy offset w segmencie Bit field – pole bitowe, ci"g bitów Byte String – ci"g bajtów Floating Point – liczba zmiennoprzecinkowa 19 – Transfer of Control (np. JMP) – skoki, wywo!anie podprogramów itp.. 20 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Tryby adresowania Adresowanie rejestrowe Argumenty operacji znajduj" si& w rejestrach procesora Przyk!ad: Sposoby wskazywania na argumenty instrukcji Podstawowe tryby adresowania u ywane we wspó!czesnych procesorach: – – – – – – – mov inc dec sub Register – rejestrowy, wewn&trzny Immediate – natychmiastowy Direct – bezpo'redni Register indirect – rejestrowy po'redni Base + Index – bazowo-indeksowy Register relative – wzgl&dny Stack addressing – adresowanie stosu 21 al,bl bx al dx,cx ;prze lij bl do al ;zwi!ksz bx o 1 ;zmniejsz al o 1 ;odejmij cx od dx Poniewa procesory zawieraj" niewiele rejestrów GP, wystarczy tylko kilka bitów do wskazania rejestrów w instrukcji; ich kody s" zwykle umieszczone w kodzie instrukcji Zalety: krótki kod binarny instrukcji, szybkie wykonanie 22 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Adresowanie rejestrowe cd. Adresowanie natychmiastowe Argument operacji znajduje si& w postaci jawnej w instrukcji, zaraz po kodzie operacji Przyk!ady: W procesorach RISC stosuje si& zwykle zasad& pe!nej symetrii, która oznacza, e instrukcje mog" operowa$ na dowolnych rejestrach W procesorach CISC niektóre kombinacje instrukcji i rejestrów nie s" dozwolone: Przyk!ad (x86): 23 specjalne operacje systemowe, np. sterowanie stanem procesora, zarz"dzanie protekcj" itp. mov cs,ds mov bl,bx mov mov mov add bl,44 ah,44h di,2ab4h ax,867 ;prze lij 44 (dziesi!tnie) do bl ;prze lij 44 (hex) do ah ;prze lij 2ab4 (hex) do di ;dodaj 867 (dec) do ax Argument natychmiastowy jest pobierany przez procesor razem z kodem operacji, dlatego nie jest potrzebny osobny cykl pobrania argumentu (data fetch) Tryb natychmiastowy mo na stosowa$ tylko w odniesieniu do sta!ych, których warto'ci s" znane w trakcie pisania programu ;nie mo"na przesy#a$ ;rejestrów segmentów ;rozmiary rejestrów ;musz% by$ takie same ;bl – 8 bitów, bx – 16 bitów 24 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Adresowanie bezpo!rednie Adresowanie bezpo!rednie cd. Instrukcje stosuj"ce adresowanie bezpo'rednie odwo!uj" si& do argumentów umieszczonych w pami&ci Adres argumentu w architekturze x86 sk!ada si& z dwóch elementów: selektora segmentu i ofsetu (offset) i jest zapisywany w postaci: Zwykle w instrukcjach podaje si& tylko ofset, natomiast wskazanie na segment znajduje si& w domy'lnym rejestrze – – segment:offset – Przyk!ad Je'li jest taka potrzeba, mo na zastosowa$ inny rejestr segmentu ni domy'lny, wtedy adres trzeba poprzedzi$ tzw. prefiksem podaj"cym rejestr segmentu Przyk!ad: mov ax,[di] ;domy'lny adres ds:di mov ax,es:[di] ;adres es:di 1045h:a4c7h oznacza komórk& o adresie a4c7h w segmencie 1045h Ofset bywa nazywany równie przesuni&ciem (ang. displacement, w skrócie disp) 25 26 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Adresowanie bezpo!rednie cd. Adresowanie bezpo!rednie cd. W trybie segmentacji standardowej obliczanie adresu efektywnego na przebiega nast&puj"co: Obliczanie adresu efektywnego (EA) na podstawie wskazania segmentu i ofsetu odbywa si& na dwa ró ne sposoby, w zale no'ci od zastosowanego modelu pami&ci. Wyró nia si& dwa podstawowe rodzaje segmentacji: – – – – Standardow" (segmented mode) stosowan" powszechnie przez aplikacje 32-bitowe IA-32 Tryb adresów rzeczywistych (real-address mode) stosowan" w starych aplikacjach 16-bitowych – 27 16-bitowy rejestr segmentu zawiera selektor segmentu, który wskazuje pewien deskryptor segmentu w tablicy deskryptorów segmentów Z deskryptora segmentu pobiera si& 32-bitowy adres bazowy segmentu Adres efektywny oblicza si& jako sum& 32-bitowego adresu bazowego i 32-bitowego ofestu podanego w instrukcji Przyk!ad – w trakcie wyk!adu 28 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Adresowanie bezpo!rednie cd. Adresowanie bezpo!rednie cd. W trybie adresów rzeczywistych obliczanie adresu efektywnego na przebiega nast&puj"co: – – Argument jest umieszczony w komórce pami&ci; adres tej komórki jest podany w instrukcji Przyk!ady: 16-bitowy rejestr segmentu po pomno eniu przez 16 daje bezpo'rednio adres bazowy segmentu (nie stosuje si& deskryptorów segmentów) Adres efektywny oblicza si& jako sum& adresu bazowego i 16bitowego ofsetu Adres ds:offset jest zatem przekszta!cany na adres efektywny wed!ug zale no'ci: Przyk!ad – al,DANA mov ax,news ;prze lij bajt z komórki ;pami!ci o adresie DS:DANA ;do rejestru al. ;prze lij ax do adresu DS:NEWS kod operacji 02 10 w trakcie wyk!adu 29 mov Uwaga: x86 stosuje konwencj& little-endian, dlatego je'li za!o ymy, e offset DANA=1002h, pierwsza z powy szych przyk!adowych instrukcji b&dzie w pami&ci zapisana jako ci"g bajtów: EA = 16*ds + offset 30 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Adresowanie bezpo!rednie cd. Adresowanie po!rednie rejestrowe Zamiast ofsetu w postaci nazwy symbolicznej mo na poda$ ofset w postaci liczbowej (dziesi&tnie lub szesnastkowo): Przyk!ad: mov al,[1234h] Nawias u yty w powy szym przyk!adzie wskazuje kompilatorowi, e zastosowano adresowanie bezpo'rednie Je'liby nawias zosta! pomini&ty, kompilator zinterpretowa!by argument jako natychmiastowy – 31 Instrukcje operuj"ce na danych w pami&ci u ywaj" domy'lnie rejestru DS. Instrukcje operuj"ce na stosie u ywaj" domy'lnie rejestru SS Instrukcje skoków u ywaj" domy'lnie segmentu CS Adresowanie po'rednie rejestrowe dzia!a podobnie jak adresowanie bezpo'rednie, z t" ró nic", e ofset jest podany w rejestrze, a nie bezpo'rednio w instrukcji – eby uzyska$ ofset trzeba zatem wykona$ dodatkowy, po'redni krok polegaj"cy na si&gni&ciu do zawarto'ci rejestru W procesorach x86 do adresowania rejestrowego po'redniego mo na wykorzystywa$ rejestry: bx, bp, si, di Nale y pami&ta$, e rejestry bx, si, di domy'lnie wspó!pracuj" z rejestrem segmentu ds, natomiast rejestr bp wspó!pracuje domy'lnie z rejestrem segmentu ss w powy szym przyk!adzie liczba 1234h zosta!aby potraktowana jako gotowy argument natychmiastowy, a nie ofset adresu argumentu znajduj"cego si& w pami&ci 32 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Adresowanie po!rednie rejestrowe Adresowanie bazowo-indeksowe Podobne do adresowania rejestrowego po'redniego Ró nica polega na tym, e ofset jest obliczany jako suma zawarto'ci dwóch rejestrów Przyk!ad: mov dx,[bx+di] Adresowanie bazowo-indeksowe jest przydatne przy dost&pie do tablic Przyk!ady: mov – mov – [bp],dl bajt z dl jest kopiowany do segmentu stosu pod adres podany w rejestrze bp mov – cx,[bx] 16-bitowe s!owo z komórki adresowanej przez ofset w rejestrze bx w segmencie danych (ds) jest kopiowane do rejestru cx – – Jako rejestr bazowy mo na wykorzysta$ rejestry bp lub bx (uwaga: bx wspó!pracuje z ds, natomiast bp wspó!pracuje z ss) Jako rejestry indeksowe mo na wykorzysta$ rejestry di lub si [di],[bx] przes!ania typu pami&$-pami&$ nie s" dozwolone (z wyj"tkiem szczególnych instrukcji operuj"cych na !a#cuchach znaków – stringach) 33 Rejestr bazowy wskazuje adres pocz"tku tablicy Rejestr indeksowy wskazuje okre'lony element tablicy 34 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Adresowanie rejestrowe wzgl"dne Adresowanie rejestrowe wzgl"dne cd. Adresowanie rejestrowe wzgl&dne jest alternatywnym (w stosunku do adresowania bazowo-indeksowego) sposobem dost&pu do elementów tablic Przyk!ady: mov array[si],bl bajt z rejestru bl jest zapami&tany w segmencie danych, w tablicy o adresie pocz"tkowym (podanym przez nazw& symboliczn") array, w elemencie o numerze podanym w si mov di,set[bx] rejestr di jest za!adowany s!owem 16-bitowym z segmentu danych, z tablicy set, z elementu o numerze podanym w bx Podobne do adresowania bazowo-indeksowego Ofset jest obliczany jako suma zawarto'ci rejestru bazowego lub indeksowego (bp, bx, di lub si) oraz liczby okre'laj"cej baz& Przyk!ad: mov ax,[di+100h] powy sza instrukcja przesy!a do ax s!owo z komórki pami&ci w segmencie ds o adresie równym sumie zawarto'ci rejestru di i liczby 100h Podobnie jak w innych trybach adresowych, rejestry bx, di oraz si wspó!pracuj" domy'lnie z rejestrem segmentu danych ds, natomiast rejestr bp wspó!pracuje z rejestrem segmentu stosu ss 35 36 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Adr. wzgl"dne bazowo-indeksowe Adresowanie stosu Adresowanie wzgl&dne bazowo-indeksowe jest kombinacj" dwóch trybów: – – Jest u ywane przy dost&pie do stosu Przyk!ady bazowo-indeksowego rejestrowego wzgl&dnego popf pushf push ax pop bx push ds pop cs push [bx] Przyk!ady: mov dh,[bx+di+20h] rejestr dh jest !adowany z segmentu danych, z komórki o adresie równym sumie bx+di+20h mov ax,file[bx+di] rejestr ax jest !adowany z segmentu danych, z komórki o adresie równym sumie adresu pocz"tkowego tablicy file, rejestru bx oraz rejestru di mov list[bp+di],cl rejestr cl jest zapami&tany w segmencie stosu, w komórce o adresie równym sumie adresu pocz"tkowego tablicy list, rejestru bp oraz rejestru di 37 ;pobierz s!owo wska%ników (flagi) ze stosu ;wy'lij s!owo wska%ników na stos ;wy'lij ax na stos ;odczytaj bx ze stosu ;wy'lij rejestr segmentu ds na stos ;odczytaj rejestr segmentu ze stosu ;zapisz komórk& pami&ci o adresie podanym ;w bx na stos 38 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Adresowanie danych – uwaga Adresowanie w instrukcjach skoku Adres w instrukcjach skoków mo e mie$ ró n" posta$: We wszystkich przyk!adach z kilkunastu ostatnich plansz ilustruj"cych tryby adresowania argumentów u yto dla uproszczenia wy!"cznie rejestrów 8-bitowych (np. al, ah, bl) lub 16-bitowych (np. ax, bx, cx) – – – krótk" (short) blisk" (near) dalek" (far) Adresy mog" by$ podane w ró ny sposób: W ogólnym przypadku, w architekturze IA-32 mo na równie u ywa$ rejestrów 32-bitowych. Wówczas w podanych przyk!adach mog!yby wyst"pi$ rejestry eax, ebx itd. 39 – – – 40 Wprost w cz&'ci adresowej instrukcji – tryb bezpo'redni (direct) W rejestrze W komórce pami&ci adresowanej przez rejestr Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Skoki krótkie (short) Skoki bliskie (near) Adres jest jednobajtow" liczb" w kodzie U2 Skok polega na dodaniu tej liczby do rejestru IP Krótki skok ma zakres od –128 do +127 bajtów w stosunku do aktualnej warto'ci IP i odbywa si& w obr&bie tego samego segmentu wskazanego przez cs Przyk!ad: label2 label1 Skok mo e by$ wykonany do dowolnej instrukcji w obr&bie segmentu wskazanego przez aktualn" warto'$ w rejestrze cs W trybie adresów rzeczywistych adres skoku jest 16-bitowy, natomiast segment ma rozmiar 64 kB W trybie segmentowym IA-32 adres jest 32-bitowy Ogólna posta$ skoku: jmp short label1 .... jmp label2 jmp near ptr etykieta_docelowa Przyk!ad: Uwaga: w pierwszej instrukcji skoku trzeba u y$ s!owa short aby wskaza$ kompilatorowi, e skok jest krótki, poniewa podczas kompilacji w tym miejscu nie wiadomo jeszcze jaka jest jego d!ugo'$. W drugiej instrukcji skoku s!owo short jest zb&dne. Kompilator sam zoptymalizuje kod i zastosuje skok krótki, poniewa znana jest ju odleg!o'$ do etykiety label2 41 jmp near ptr dalej .... .... dalej ... 42 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Skoki dalekie (far) Skoki – przyk ady jmp ax Skok mo e by$ wykonany do dowolnej instrukcji w obr&bie dowolnego innego segmentu W rozkazie skoku nale y poda$ nie tylko adres skoku tak jak w przypadku skoków bliskich, ale ponadto równie now" warto'$ rejestru segmentu cs jmp near ptr [bx] ; skocz w obr&bie tego samego segmentu ; do adresu wskazanego w komórce pami&ci ; w segmencie danych wskazanej przez bx Ogólna posta$ skoku: jmp far ptr etykieta_docelowa jmp table[bx] ; skocz w obr&bie tego samego segmentu ; do adresu wskazanego w wektorze table, ; przechowywanym w segmencie danych, ; w elemencie o numerze podanym w bx etykieta docelowa znajduje si& w innym segmencie kodu programu ni instrukcja skoku Elementy instrukcji skoku dalekiego s" w zakodowanej instrukcji przechowywane w nast&puj"cej kolejno'ci: kod operacji skoku, ofset (adres skoku), nowa zawarto'$ cs. Ofset i cs s" przechowywane w postaci little-endian 43 44 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Tryby adresowania – podsumowanie Tryby adresowania – podsumowanie Pentium Adresowanie pami&ci Adresy 16-bitowe Pentium Adresy 32-bitowe 45 46 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania 47 ; skocz w obr&bie tego samego segmentu ; do adresu podanego w ax Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Tryby adresowania – podsumowanie Tryby adresowania – podsumowanie Pentium – adresy 32-bitowe Pentium – ró nice adresowania 32- i 16-bitowego 48 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Tryby adresowania – podsumowanie Tryby adresowania – podsumowanie Przyk!ad: niech domy'lnym trybem b&dzie tryb 16-bitowy • Sk"d procesor Pentium wie czy adres jest 32- czy 16-bitowy? • Wykorzystuje si& bit D w deskryptorze segmentu CS Przyk ad 1: zmiana rozmiaru argumentu D=0 » domy'lny rozmiar argumentów i adresów – 16 bitów D=1 » domy'lny rozmiar argumentów i adresów – 32 bity mov ax,123 ==> b8 007b mov eax,123 ==> 66 | b8 0000007b • Programista mo e zmieni$ warto'ci domy'lne • W Pentium instrukcj& mo na poprzedzi$ tzw. Prefiksem (jednobajtowym przedrostkiem, który zmienia domy'lne d!ugo'ci argumentów i adresów) Przyk ad 2: zmiana d!ugo'ci adresu mov ax,[ebx*esi+2] ==> 67 | 8b0473 Przyk ad 3: zmiana rozmiaru argumentu i d!ugo'ci adresu 66H prefiks zmiany d!ugo'ci argumentu 67H prefiks zmiany d!ugo'ci adresu mov eax,[ebx*esi+2] ==> 66 | 67 | 8b0473 • Stosuj"c prefiksy mo na miesza$ ze sob" tryby 32- i 16-bitowe 49 50 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Podsumowanie Sposób zapisu instrukcji – mnemonik, argumenty – zapis w j&zyku asemblera, zapis funkcjonalny, zapis binarny Liczba adresów instrukcji – procesory 3-, 2-, 1- i 0-adresowe Tryby adresowania argumentów (danych) Tryby adresowania programu w instrukcjach skoków 51 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Asembler i j zyki wysokiego poziomu Niektóre instrukcje j#zyka C mo na zast"pi$ pojedynczymi instrukcjami w j#zyku asemblera Organizacja i Architektura Komputerów J#zyk asemblera (Pentium) 1 2 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Program w j zyku asemblera Asembler i j zyki wysokiego poziomu Trzy rodzaje polece& Wi#kszo%$ instrukcji j#zyka C jest jednak równowa na wi#kszej liczbie instrukcji w j#zyku asemblera – Instrukcje Mówi" procesorowi co ma robi$ S" wykonywane przez CPU, rodzaj instrukcji jest okre%lony przez kod operacji (Opcode) – Dyrektywy (pseudo-ops) Wskazówki dla kompilatora (asemblera) dotycz"ce procesu t!umaczenia Nie s" wykonywane przez CPU, nie generuj" instrukcji w kodzie wynikowym programu – Macro Sposób skróconego zapisu grupy instrukcji Technika podobna do podprogramów, ale realizowana na poziomie kompilacji, a nie w trakcie wykonania podprogramu 3 4 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Linia programu asemblera Linia programu asemblera cd. Format linii programu w j#zyku asemblera: [label] – – mnemonic [operands] – Komentarze, zaczynaj" si# od znaku %rednika Mog" by$ umieszczone w tej samej linii co instrukcja lub tworzy$ osobn" lini# [;comment] Pola w nawiasach [ ] s" opcjonalne Etykieta s!u y do dwóch celów: Przyk!ad Oznacza instrukcje, do których s" wykonywane skoki Oznacza identyfikatory zmiennych i sta!ych, do których mo na w programie odwo!ywa$ si# przez nazw# etykiety repeat: CR – Mnemonik okre%la rodzaj operacji, np. add, or – – Operandy (argumenty) oznaczaj" dane wykorzystywane przez instrukcj# – inc equ result 0dh ;zwi ksz zmienn! result o 1 ;znak powrotu karetki (CR) W powy szym przyk!adzie etykieta repeat umo liwia wykonanie skoku do instrukcji inc Etykieta CR oznacza sta!" o nazwie CR i o warto%ci 0dh nadanej przez dyrektyw# equ W Pentium instrukcje mog" mie$ 0, 1, 2 lub 3 operandy 5 6 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Alokacja danych Alokacja danych cd. Deklaracja zmiennych w j#zyku wysokiego poziomu, np. w j#zyku C: char int float double W j#zyku asemblera do alokacji danych u ywa si# dyrektywy define response value total average_value – – – Dyrektywa define nie okre%la typu danej Okre%la – – – – Wymagany rozmiar pami#ci (1 bajt, 2 bajty, ...) Nazw# (etykiet#) identyfikuj"c" zmienn" (response, value, ...) Typ zmiennej (int, char, ... ) – 7 Interpretacja typu danej jest zale na od programu, który operuje na danej Dyrektywy define s" lokalizowane w cz#%ci .DATA programu Ogólny format dyrektywy define: Ta sama liczba binarna mo e by$ interpretowana w ró ny sposób, np. 1000 1101 1011 1001 oznacza – Rezerwuje miejsce w pami#ci Etykietuje miejsce w pami#ci Inicjalizuje dan" [var-name] Liczb# –29255 (signed integer) Liczb# 36281 (unsigned) 8 d? init-value [,init-value], ... Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Alokacja danych cd. Alokacja danych cd. Wielokrotne definicje mog" by$ zapisane w postaci skróconej Przyk!ad Mamy 5 rodzajów dyrektywy define: db dw dd dq dt definiuj bajt (alokacja 1 bajtu) definiuj s!owo (alokacja 2 bajtów) definiuj podwójne s!owo (alokacja 4 bajtów) definiuj poczwórne s!owo (alokacja 8 bajtów) definiuj 10 bajtów (alokacja 10 bajtów) message db db db db db Przyk!ady: sorted response value float1 db db dw dq ‘y’ ? ;brak inicjalizacji 25159 1.234 mo na zapisa$ jako: message db ‘B’,’y’,’e’,0dh,0ah lub w jeszcze bardziej skróconej postaci: message 9 ‘B’ ‘y’ ‘e’ 0dh 0ah db ‘Bye’,0dh,0ah 10 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Alokacja danych cd. Alokacja danych cd. Wielokrotna inicjalizacja – – Dyrektywa DUP mo e by$ zagnie d ana Dyrektywa DUP umo liwia nadanie tej samej warto%ci wielu obiektom (bajtom, s!owom. itd.) Tablica o nazwie marks z!o ona z 8 s!ów mo e by$ zadeklarowania i wst#pnie wyzerowana w nast#puj"cy sposób: marks dw 8 DUP (0) Przyk!ad stars rezerwuje 40 bajtów i nadaje im warto%$: ***??!!!!!***??!!!!!***??!!!!!***??!!!!! Przyk!ady: table dw message db name1 db 10 DUP (?) 3 DUP (‘Bye!’) 30 DUP (‘?’) Przyk!ad ;10 s"ów, bez ;inicjalizacji ;12 bajtów ;zainicjowanych jako ;‘Bye!Bye!Bye!’ ;30 bajtów, ka#dy ;zainicjowany jako ;znak ‘?’ 11 db 4 DUP(3 DUP (‘*’),2 DUP (‘?’),5 DUP (‘!’)) matrix – – dw 10 DUP (5 DUP (0)) definiuje macierz 10 x 5 i wst#pnie zeruje jej elementy t# sam" deklaracj# mo na zapisa$ jako: matrix dw 50 DUP (0) 12 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Alokacja danych cd. Alokacja danych cd. Podczas kompilacji asembler buduje tablic# symboli, w której umieszcza napotkane w programie etykiety, w tym etykiety oznaczaj"ce dane Rozmiary danych w j#zyku asemblera i odpowiadaj"ce im typy danych w j#zyku C Przyk!ad: 13 14 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Alokacja danych cd. Alokacja danych cd. Dyrektywa label – Jest innym sposobem nadania nazwy danym umieszczonym w pami#ci – Ogólny format: – Dost#pnych jest pi#$ typów danych name label Dyrektywa label Przyk!ad .DATA count label word Lo_count db 0 Hi_count db 0 .CODE ... mov Lo_count,al mov Hi_count,cl type byte 1 bajt word dword qword tword 2 bajty 4 bajty 8 bajtów 10 bajtów – – – 15 16 count oznacza warto%$ 16-bitow" (dwa bajty) Lo_count oznacza mniej znacz"cy bajt Hi_count oznacza bardziej znacz"cy bajt Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Adresowanie argumentów Adresowanie argumentów cd. Adresowanie natychmiastowe (immediate) Adresowanie rejestrowe (register) – – – Argumenty znajduj" si# w wewn#trznych rejestrach CPU Najbardziej efektywny tryb adresowania – – Przyk!ady mov eax,ebx mov bx,cx – – Przyk!ad mov al,75 – Instrukcja mov mov destination, source Kopiuje dane z source do destination 17 – Liczba 75 (dziesi#tna) jest !adowana do rejestru al (8-bitowego) Powy sza instrukcja u ywa trybu rejestrowego do wskazania argumentu docelowego oraz trybu natychmiastowego do wskazania argumentu 'ród!owego 18 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Adresowanie argumentów cd. Adresowanie argumentów cd. Adresowanie bezpo%rednie Przyk!ad Adresowanie bezpo%rednie (direct) – Dane znajduj" si# w segmencie danych – Adres ma dwa elementy: segment:offset – Ofset w adresowaniu bezpo%rednim jest podawany w instrukcji, natomiast wskazanie na segment odbywa si# z wykorzystaniem domy%lnego rejestru segmentu (DS), chyba e w instrukcji zastosowano prefiks zmiany segmentu na inny mov – Asembler oblicza ofset na podstawie warto%ci liczbowej etykiety – W tym celu wykorzystywana jest tablica symboli 19 al,response Asembler zast#puje symbol response przez jego liczbow" wato%$ (ofset) z tablicy symboli mov table1,56 Za!ó my, e obiekt table1 jest zadeklarowany jako table1 dw 20 DUP (0) Instrukcja mov odnosi si# w tym przypadku do pierwszego elementu wektora table1 (elementu o numerze 0) W j#zyku C równowa ny zapis jest nast#puj"cy: table1[0] = 56 Je%li w programie u ywamy etykiet przy dyrektywach db, dw, label, .... 20 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Adresowanie argumentów cd. Adresowanie argumentów cd. Adresowanie po%rednie (indirect) Adresowanie bezpo%rednie – problemy – Tryb bezpo%redni jest wygodny tylko przy adresowaniu prostych zmiennych – Przy adresowaniu tablic powstaj" powa ne k!opoty – – – Jako przyk!ad warto rozwa y$ dodawanie elementów tablic – Adresowanie bezpo%rednie nie nadaje si# do u ycia w p#tlach programowych z iteracyjnie zmienianym wska'nikiem elementów tablic – Ofset jest okre%lony po%rednio, z wykorzystaniem rejestru Tryb ten czasem jest nazywany po%rednim rejestrowym (register indirect) Przy adresowaniu 16-bitowym ofset znajduje si# w jednym z rejestrów: bx, si lub di Przy adresowaniu 32-bitowym ofset mo e znajdowa$ si# w dowolnym z 32-bitowych rejestrów GP procesora Przyk!ad Rozwi"zaniem jest zastosowanie adresowania po%redniego (indirect) 21 – mov ax,[bx] Nawiasy [ ] oznaczaj", e rejestr bx zawiera ofset, a nie argument 22 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Adresowanie argumentów cd. Adresowanie argumentów cd. U ywaj"c adresowania po%redniego mo na przetwarza$ tablice przy pomocy p#tli programowej Przyk!ad: sumowanie elementów tablicy – – (adowanie ofsetu do rejestru Za!ó my, e chcemy za!adowa$ do bx ofset tablicy o nazwie table1 – Nie mo emy zapisa$: – Dwa sposoby za!adowania ofsetu do bx bx,table1 Z wykorzystaniem dyrektywy offset Powtarzaj nast#puj"ce czynno%ci w p#tli – – mov Za!aduj adres pocz"tkowy tablicy (czyli ofset) do rejestru bx – Pobierz element z tablicy u ywaj"c ofsetu z bx Operacja zostanie wykonana podczas kompilacji Z wykorzystaniem instrukcji lea (load effective address) Wykorzystaj adresowanie po%rednie – Dodaj element do bie "cej sumy cz#%ciowej Zmie& ofset w bx aby wskazywa! kolejny element w tablicy 23 Argument jest zapisany w instrukcji jako jej cz#%$ Tryb jest efektywny, poniewa nie jest potrzebny osobny cykl !adowania argumentu U ywany w przypadku danych o sta!ej warto%ci 24 Operacja zostanie wykonana przez CPU w trakcie realizacji programu Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Adresowanie argumentów cd. Adresowanie argumentów cd. Co lepiej zastosowa$ – offset czy lea ? Wykorzystanie dyrektywy offset – – Poprzedni przyk!ad mo na rozwi"za$ pisz"c mov Nale y stosowa$ dyrektyw# offset je%li tylko jest to mo liwe Dyrektywa offset wykonuje si# podczas kompilacji Instrukcja lea wykonuje si# w trakcie realizacji programu bx,offset table1 – Wykorzystanie instrukcji lea Czasem u ycie instrukcji lea jest konieczne Je%li dana jest dost#pna tylko w trakcie wykonywania programu – – Ogólny format instrukcji lea np. gdy dost#p do danej jest przez indeks podany jako parametr podprogramu Mo emy zapisa$ lea – register,source lea Zastosowanie lea w poprzednim przyk!adzie lea bx,table1 25 bx,table[si] aby za!adowa$ bx adresem elementu tablicy table1, którego indeks jest podany w rejestrze si W tym przypadku nie mo na u y$ dyrektywy offset 26 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Instrukcje przes!a" danych Instrukcje przes!a" danych cd. Najwa niejsze instrukcje tego typu w asemblerze Pentium to: mov (move) – kopiuj dan" xchg (exchange) – zamie& ze sob" dwa argumenty xlat (translate) – transluje bajt u ywaj"c tablicy translacji Instrukcja mov – Format mov destination,source – Kopiuje warto%$ z source do destination – Argument 'ród!owy source pozostaje niezmieniony – Obydwa argumenty musz" mie$ ten sam rozmiar (np. bajt, s!owo itp.) – Source i destination nie mog" równocze%nie oznacza$ adresu pami#ci W instrukcji mov mo na stosowa$ 5 ró nych kombinacji trybów adresowania: Tryby te mo na stosowa$ równie we wszystkich innych instrukcjach Pentium z dwoma argumentami Jest to cecha wi#kszo%ci instrukcji Pentium Pentium ma specjalne instrukcje, które u!atwiaj" kopiowanie bloków danych z pami#ci do pami#ci 27 28 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Instrukcje przes!a" danych cd. Instrukcje przes!a" danych cd. Niejednoznaczno%$ operacji mov Za!ó my nast#puj"c" sekwencj# deklaracji: . DATA table1 status dw db Niejednoznaczno%$ instrukcji mov z poprzedniego przyk!adu mo na usun"$ u ywaj"c dyrektywy ptr Ostatnie dwie instrukcje mov z poprzedniej planszy mo na zapisa$ jako: 20 DUP (0) 7 DUP (1) mov word ptr [bx],100 mov byte ptr [si],100 – S!owa word i byte s" nazywane specyfikacj" typu W podanej ni ej sekwencji instrukcji przes!a& dwie ostatnie sa niejednoznaczne: mov mov mov mov bx,offset table1 si,offset status [bx],100 [si],100 Mo na u ywa$ ponadto nast#puj"cych specyfikacji typu: – – Nie jest jasne, czy asembler ma u y$ bajtu czy s!owa do reprezentacji liczby 100 29 – 30 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Instrukcje przes!a" danych cd. Instrukcje przes!a" danych cd. Instrukcja xchg Instrukcja xchg jest przydatna przy konwersji 16-bitowych danych mi#dzy formatami littleendian i big-endian Przyk!ad Ogólny format xchg operand1,operand2 Zamienia warto%ci argumentów operand1 i operand2 Przyk!ady xchg xchg xchg xchg al,ah Zamienia dane w ax na przeciwny format endian eax,edx response,cl total,dx Pentium ma podobn" instrukcj# bswap do konwersji danych 32-bitowych: Bez instrukcji xchg operacja zamiany argumentów wymaga!aby dwóch instrukcji mov i pomocniczego rejestru 31 dword – dla warto%ci typu doubleword qword – dla warto%ci typu quadword tword – dla warto%ci z!o onych z 10 bajtów bswap 32-bit_register Instrukcja bswap dzia!a tylko na rejestrach 32-bitowych 32 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Instrukcje przes!a" danych cd. Instrukcje przes!a" danych cd. Przyk!ad dzia!ania instrukcji xlat – szyfrowanie Instrukcja xlat transluje bajty – Format – xlatb Przed u yciem instrukcji xlat nale y: – – – – Tablica translacji mo e mie$ najwy ej 256 elementów (rejestr al jest 8-bitowy) 34 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Instrukcje asemblera - przegl#d Instrukcje arytmetyczne Instrukcje inc oraz dec Format: Oprócz omówionych instrukcji przes!a& danych procesor Pentium realizuje wiele innych operacji. Najwa niejsze grupy operacji w Pentium: – – – – – – inc dec Instrukcje arytmetyczne Instrukcje skoków Instrukcje p#tli Instrukcje logiczne Instrukcje przesuni#$ logicznych (shift) Instrukcje przesuni#$ cyklicznych (rotate) destination destination Dzia!anie destination = destination +/– 1 Argument destination mo e by$ 8-, 16- lub 32bitowy, w pami#ci lub w rejestrze – W dalszej cz#%ci wyk!adu s" omówione najwa niejsze instrukcje z tych grup, które pozwalaj" napisa$ wiele prostych, ale bardzo u ytecznych programów w j#zyku asemblera 35 Nie mo na stosowa$ trybu natychmiastowego Przyk!ady inc dec bx value ; bx = bx + 1 ; value = value – 1 36 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Instrukcje arytmetyczne cd. Instrukcje arytmetyczne cd. Instrukcja dodawania add Instrukcja odejmowania sub Format Format add destination,source sub Dzia!anie destination = destination + source add add destination = destination - source Przyk!ady ebx,eax value,35 U ycie inc destination,source Dzia!anie Przyk!ady eax sub sub jest lepsze ni add ebx,eax value,35 U ycie dec eax,1 eax jest lepsze ni sub eax,1 – Instrukcja inc jest krótsza w kodzie binarnym – Instrukcja dec jest krótsza w kodzie binarnym – Obydwie instrukcje wykonuj" si# w tym samym czasie – Obydwie instrukcje wykonuj" si# w tym samym czasie 37 38 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Instrukcje arytmetyczne cd. Instrukcje skoków Instrukcja porównania cmp Format cmp Skok bezwarunkowy jmp Format destination,source jmp Dzia!anie label Dzia!anie destination – source – zarówno destination jak i source nie ulegaj" zmianie, CPU wykonuje jedynie wirtualne odejmowanie by porówna$ argumenty (zbada$ relacj# mi#dzy nimi: >, =) – CPU przechodzi do realizacji instrukcji oznaczonej etykiet" label Przyk!ad – niesko&czona p#tla mov eax,1 inc_again: inc eax jmp inc_again mov ebx,eax Przyk!ady cmp ebx,eax cmp count,100 Instrukcja cmp jest u ywana razem z instrukcjami skoków warunkowych do realizacji rozga!#zie& w programie uzale nionych od relacji mi#dzy argumentami cmp 39 0 1 2 3 4 5 6 7 8 9 4 6 9 5 0 3 1 8 7 2 .DATA xlat_table db ‘4695031872’ ... .CODE mov bx,offset xlat_table getCh al sub al,’0’ ;konwersja cyfry (ASCII) na indek xlatb putCh al W rejestrze bx umie%ci$ adres pocz"tkowy tablicy translacji al Musi zawiera$ indeks do tablicy (indeksowanie zaczyna si# od warto%ci równej 0) Instrukcja xlat odczytuje z tablicy translacji bajt wskazany przez indeks i zapisuje go w al Warto%$ w al zostaje utracona 33 Cyfry na wej%ciu: Cyfry na wyj%ciu: 40 ; ta instrukcja nigdy si ; nie wykona Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Instrukcje skoków cd. Instrukcje skoków cd. Skoki warunkowe Format j<cond> Wybrane instrukcje skoków warunkowych – label Dzia!anie – CPU przechodzi do realizacji instrukcji oznaczonej etykiet" label je%li warunek <cond> jest spe!niony skocz gdy równe (equal) skocz gdy wi#ksze (greater) skocz gdy mniejsze (less) skocz gdy wi#ksze lub równe (greater or equal) skocz gdy mniejsze lub równe (less or equal) skocz gdy ró ne (not equal) je jg jl jge jle jne Przyk!ad – testowanie wyst"pienia znaku powrotu karetki CR getCh al cmp al,0dh ; 0dh = ASCII CR je CR_received inc cl ... CR_received: ... 41 Argumenty w poprzedzaj"cej instrukcji cmp sa traktowane jako liczby ze znakiem 42 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Instrukcje skoków cd. Instrukcje skoków cd. Instrukcja p#tli loop Format Skoki warunkowe mog" równie testowa$ stan poszczególnych bitów w rejestrze wska'ników (eflags) loop – jz jnz jc jnc skocz gdy zero (jump if ZF = 1) skocz gdy nie zero (jump if ZF = 0) skocz gdy przeniesienie (jump if CF = 1) skocz gdy brak przeniesienia (jump if CF = 0) – 44 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania and or not destination,source destination,source destination Dzia!anie – – Wykonuje odpowiedni" operacj# logiczn" na bitach Wynik jest umieszczany w destination Instrukcja test jest odpowiednikiem instrukcji and, ale nie niszczy destination (podobnie jak cmp) tylko testuje argumenty Nieco zaskakuj"cy jest fakt, e para instrukcji dec oraz jnz wykonuje si# szybciej ni instrukcja loop z przyk!adu na poprzedniej planszy test destination,source 46 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Instrukcje logiczne cd. Instrukcje przesuni $ logicznych Przyk!ad – testowanie, czy w rejestrze al jest liczba parzysta, czy nieparzysta Format test al,01h ; testuj najmniej znacz!cy bit al jz liczba_parzysta liczba_nieparzysta: ... ; przetwarzaj przypadek liczby ; nieparzystej jmp skip liczba_parzysta: ... ; przetwarzaj przypadek liczby ; parzystej skip: ... 47 licznik p tli = 50 etykieta pocz!tku p tli instrukcje stanowi!ce tre$% p tli koniec p tli Format licznik p tli = 50 etykieta pocz!tku p tli instrukcje stanowi!ce tre$% p tli dekrementuj licznik 45 ; ; ; ; ; Instrukcje logiczne Poprzedni przyk!ad jest równowa ny zapisowi ; ; ; ; ; mov cx,50 repeat: ... ... loop repeat ... Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Instrukcje skoków cd. mov cx,50 repeat: ... ... dec cx jnz repeat ... Dekrementuje cx i skacze do etykiety target je%li cx nie jest zerem Przed wej%ciem w p#tl# do rejestru cx nale y wpisa$ liczb# powtórze& p#tli Przyk!ad Instrukcja jz jest synonimem je Instrukcja jnz jest synonimem jne 43 target Dzia!anie – Przesuni#cia w lewo shl destination,count shl destination,cl – Przesuni#cia w prawo shr destination,count shr destination,cl Dzia!anie – – 48 Wykonuje przesuni#cie argumentu destination w lewo lub w prawo o liczb# bitów podan" w count lub w rejestrze cl Zawarto%$ rejestru cl nie ulega zmianie Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Instrukcje przesuni $ logicznych Instrukcje przesuni $ logicznych Liczba count jest argumentem natychmiastowym Bit opuszczaj"cy przesuwany obiekt trafia do bitu przeniesienia w rejestrze wska'ników Na woln" pozycj# wprowadzany jest bit równy zero – Przyk!ad shl ax,5 Specyfikacja count o warto%ci wi#kszej ni 31 jest niedozwolona – Je%li podana liczba count jest wi#ksza ni 31 instrukcja u yje tylko 5 najmniej znacz"cych bitów count Wersja instrukcji z u yciem rejestru cl jest przydatna, je eli liczba bitów, o które nale y przesun"$ argument jest znana dopiero w czasie wykonania programu 49 50 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Instrukcje przesuni $ cyklicznych Instrukcje przesuni $ cyklicznych Dwa typy instrukcji rotate – Przesuni#cie cykliczne przez bit przeniesienia rcl (rotate through carry left) rcr (rotate through carry right) – Przesuniu#cie cykliczne bez pitu przeniesienia rol (rotate left) ror (rotate right) Instrukcje przesuni#$ cyklicznych z wy!"czeniem bitu przeniesienia dzia!aj" wed!ug poni szego diagramu: Format instruckji rotate jest taki sam jak instrukcji shift – Mo na stosowa$ natychmiastowy argument count lub podawa$ liczb# pozycji, o które ma nast"pi$ rotacja u ywaj"c rejestru cl 51 52 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Instrukcje przesuni $ cyklicznych Definiowanie sta!ych Asembler przewiduje dwa sposoby definiowania sta!ych: Instrukcje przesuni#$ cyklicznych z udzia!em bitu przeniesienia dzia!aj" wed!ug poni szego diagramu: – Dyrektywa equ Definicja nie mo e by$ zmieniona Mo na definiowa$ !a&cuchy (strings) – Dyrektywa = Definicja mo e by$ zmieniona Nie mo na definiowa$ !a&cuchów Definiowanie sta!ych zamiast podawanie ich w instrukcjach w postaci natychmiastowej ma dwie wa ne zalety: – – 53 54 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Definiowanie sta!ych Definiowanie sta!ych Dyrektywa equ Sk!adnia Dyrektywa = Sk!adnia name equ expression – Przypisuje warto%$ wyra enia expression sta!ej o nazwie name – Wyra enie jest obliczane podczas kompilacji name = expression – Dzia!anie podobne dzia!anie jak dla dyrektywy equ – Dwie zasadnicze ró nice Redefiniowanie jest dozwolone count = 0 ... count = 99 jest legalnym zapisem Podobne dzia!anie jak #define w j#zyku C Przyk!ady NUM_OF_ROWS NUM_OF_COLS ARRAY_SIZE equ equ equ 50 10 NUM_OFROWS * NUM_OF_COLS – Mo na tak e definiowa$ !a&cuchy znaków, np. JUMP 55 Poprawia czytelno%$ programu U!atwia dokonywanie zmian w programie (wystarczy zmieni$ definicj# i przekompilowa$ program, zamiast zmienia$ wszystkie wyst"pienia sta!ych liczbowych) equ – jmp Nie mo na definiowa$ sta!ych !a&cuchów i przedefiniowywa$ s!owa kluczowe asemblera lub mnemoniki instrukcji Przyk!ad Zapis JUMP = jmp jest nielegalny 56 Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Wy sza Szko!a Informatyki Stosowanej i Zarz"dzania Przyk!ady programów Podsumowanie W za!"czonym pliku programy_asm.pdf znajduj" si# teksty 'ród!owe kilku prostych programów napisanych w j#zyku asemblera procesora Pentium: – – – – – 57 Linie programu asemblerowego Alokacja danych Tryby adresowania argumentów BINCHAR.ASM – konwersja tekstu ASCII na reprezentacj# binarn" HEXI1CHAR.ASM – konwersja tekstu ASCII na kod szesnastkowy HEX2CHAR.ASM – konwersja tekstu ASCII na kod szesnastkowy z wykorzystaniem instrukcji xlat – rejestrowy, natychmiastowy, bezpo%redni, po%redni Instrukcje przes!a& danych Przegl"d najwa niejszych instrukcji asemblera Pentium – TOUPPER.ASM – konwersja ma!ych liter na du e litery przez manipulacj# znakami ADDIGITS.ASM – sumowanie poszczególnych cyfr w liczbie instrukcje arytmetyczne, skoki bezwarunkowe i warunkowe, instrukcje logiczne, przesuni#cia logiczne i cykliczne Definiowanie sta!ych Przyk!ady programów 58