• Nie Znaleziono Wyników

Wykład: Architektura komputerów

N/A
N/A
Protected

Academic year: 2021

Share "Wykład: Architektura komputerów"

Copied!
1
0
0

Pełen tekst

(1)

Architektura komputerów

Prowadzący: dr hab. inż. SŁAWOMIR GRYŚ, prof. PCz.

Politechnika Częstochowska, Wydział Elek-tryczny

Konsultacje: p. C 113, Laboratorium: p. B031/B032, tel. (34) 3250883, e-mail:

grys@el.pcz.czest.pl, www.ztmapc.el.pcz.pl forma zaliczenia wykładu: test pisemny z

teorii

i zadań z aryt-metyki komputerowej

proponowana literatura do przedmiotu:

1. Pozycje książkowe (szczególnie zalecane wyróżniono kolorem zielonym – do wykładu lub niebieskim – ćwiczenia tablicowe)

Patterson D., Hennessy J.: Computer Organisation and Design: The

Hardware/Soft-ware Interface, Morgan Kaufmann, 2009.

Parhami B, Computer Arithmetic: Algorithms and Hardware Designs, 2nd edition,

Oxford University Press, New York, 2010.

Baer J.L.: Microprocessor Architecture. From Simple pipelines to Chip

Multiproces-sors, Cambridge University Press, New York, 2010.

Targowski A.: Historia – teraźniejszość – przyszłość informatyki, mon. Politechniki

Łódzkiej, Łódź 2013.

Mano M.: Computer System Architecture, Pearson Education, 2008.

Stallings W.: Computer Organization and Architecture, Designing for performance,

8th edition, Pearson Education, 2008.

Blaauw G.A., Brooks F.P.JR.: Computer Architecture. Concepts and Evolution,

Addi-son–Wesley, 1997.

Hamacher C., Vranesic Z. i in.: Computer Organization, McGraw-Hill, 1996.

Flynn M.J.: Computer Architecture: Pipelined and Parallel Processor Design, Jones

and Bartlett Publishers, Boston–London, 1995.

Weiss S., Smith J.: POWER and PowerPC, Morgan Kaufmann, 1994.

Kai Hwang: Advanced Computer Architecture: Parallelism, Scalability,

Programma-bility, McGraw-Hill, 1993.

Ciminiera L., Valenzano A.: Advanced microprocessor architectures, Addison-Wesley

Publishing Company, Wokingham 1987.

Null L., Lobur J.: Struktura organizacyjna i architektura systemów komputerowych,

Helion, Gliwice 2004.

Komorowski W.: Krótki kurs architektury i organizacji komputerów, Mikom,

Warszawa 2004.

Stallings W.: Organizacja i architektura systemu komputerowego, WNT, Warszawa

2003.

Jakubiec J.: Wprowadzenie do techniki mikroprocesorowej, Wyd. Politechniki

(2)

Gryś S.: Arytmetyka komputerów w praktyce, Wyd. Naukowe PWN, Warszawa 2007 (do-druk 2013).

Pochopień B.: Arytmetyka systemów cyfrowych, Wyd. Politechniki Śląskiej, Gliwice

1997.

Biernat J.: Metody i układy arytmetyki komputerowej, Oficyna Wydawnicza

Politech-niki Wrocławskiej, Wrocław 2001.

Irvin K.: Asembler dla procesorów Intel, Helion, 2003.

Misiurewicz P.: Podstawy techniki mikroprocesorowej, WNT, Warszawa 1991.

Badźmirowski K. i in.: Układy i systemy mikroprocesorowe, Cz. 1 i 2, WNT,

Warszawa 1990. 2. Czasopisma:

IEEE Transactions on ... (np. Computers),IEEE Micro "Hot Chips",

IEEE Computer,

IEEE Parallel and Distributed Technology,

ACM Transactions on ... (np. Architecture and Code Optimization),Komputer Świat,

PC Kurier,

PC World Komputer,Chip.

3. Strony internetowe:

- producentów procesorów i sprzętu komputerowego:

 Intel, Motorola/Freescale, AMD, Siemens, Atmel, Philips, Texas Instruments, NEC,

Zilog, Sharp, SGS Thompson, Toshiba, IBM, DELL, Compaq, HP, (Sun) Oracle, Apple, Silicon Graphics Inc. (SGI), Cray Inc., ARM, Sony, VIA, NVIDIA;

- ośrodków akademickich i branżowe:

 http://www.library.upenn.edu (Library of University of Pensylwania, USA)  http://www.berkeley.edu (University of California, Berkeley, USA)

 web.mit.edu (Masachussets Institute of Technology, USA),  http://www.cam.ac.uk (University of Cambridge, UK)

(3)

Wykład I

Historia komputerów1

„Komputer – urządzenie elektroniczne automatycznie przetwarzające informacje (dane) zapisane cyfrowo, służące do szybkiego wykonywania obliczeń, przechowywania, porządkowania i wyszukiwania danych oraz sterowania pracą innych urządzeń” wg M. Szymczak: Słownik języka polskiego, PWN 1995.

„Komputer – elektroniczna maszyna cyfrowa, urządzenie elektroniczne służące do automatycznego przetwarzania informacji (danych) przedstawionych cyfrowo (tzn. za pomocą odpowiednio zakodowanych liczb). Istotną cechą odróżniającą komputer od innych urządzeń jest jego „programowalność”, tzn. wykonywanie konkretnych zadań (np. obliczeń) jest związane z wykonywaniem zapisanych w pamięci komputera programów” – internetowa encyklopedia PWN 2004.

„Komputer – elektroniczna maszyna cyfrowa, urządzenie elektroniczne przeznaczone do przetwarzania informacji (danych) przedstawionych w postaci cyfrowej, sterowane programem zapisanym w pamięci” – internetowa encyklopedia PWN 2010.

Narzędzia ręczne

abakus – 440 p.n.e - XVIII liczydło XVII-XX

suwak logarytmiczny – 1632-1980

Era maszyn mechanicznych

Blaise Pascal (1623-1662) – konstruktor mechanicznego kalkulatora czterodziałaniowego, pomocnego bankierom i geodetom.

(4)

Rys. I-1. Sumator i subtraktor Pascala

Gottfried von Leibniz (1646-1716) - wtórny, po Chińczykach, odkrywca systemu dwójkowego, udoskonalił mechaniczny kalkulator.

Rys. I-2. Fragment artykułu z 1703 roku

Joseph Jacquard (1752-1834) – zastosował kartę perforowaną do ustalenia kolejności wyboru nici w maszynie tkackiej.

Rys. I-3. Sterownik maszyny tkackiej Jackquard’a

Abraham Stern (1769-1842) – zegarmistrz, konstruktor samouk, stworzył pierwszy polski mechaniczny kalkulator czterodziałaniowy, twórca maszyny potęgującej i pierwiastkującej, członek Warszawskiego Towarzystwa Przyjaciół Nauk.

(5)

Charles Babbage (1791-1871) – najwybitniejszy twórca

mechanicznych maszyn liczących (zrealizowana maszyna różnicowa, projekt maszyny analitycznej do obliczania wielomianów II-go

stopnia).

Rys. I-4 i 5. Maszyna analityczna, rekonstrukcja maszyny różnicowej Babbage’a George Boole (1815-1864) – prekursor logiki formalnej, która znalazła zastosowanie w układach logicznych.

(6)

Wiek XX wiekiem elektryczności (technologia przekaźnikowo -lampowa)

 1930 – John Atanasof z Iowa State University buduje Linear Equation Solver (300

lamp elektronowych, przekaźniki),

 1937 – Alan Turing, abstrakcyjny model maszyny, prace teoretyczne z zakresu

teorii automatów, algorytmów, „każdy zadanie może zostać przedstawione jako ciąg elementarnych czynności”,

 1937 – Claude Shannon, prace teoretyczne z zakresu użycia przekaźników w

mode-lowaniu funkcji logicznych i operacji arytmetycznych na liczbach binarnych,

 1942 – J. Mauchly i J. Eckert z University of Pensylvania konstruują komputer ENIAC

(Electronic Numerical Integrator And Computer): 17468 lamp elektronowych, pobór mocy 140 kW, waga 30 ton, 5 tys. operacji dodawania lub 300 mnożenia na sekundę, program na wymienialnych płytach,

(7)

Rys. II-6. Wymiana lampy w komputerze ENIAC

 1944 – Harvard MARK I: taśma perforowana,

 1946 – prace nad komputerem IAS prowadzone przez zespół J. von Neumanna w

Princeton Institute for Advanced Studies,

 1948 – IBM SSEC: kalkulator złożony z 66 stacji czytających dane z taśmy

perforowanej,

 1950 – UNIVAC: komercyjna wersja ENIAC’a (256 kB RAM z 1200 układów scalonych

MSI Intela),

 1952 – IBM seria 700: pierwsze komputery komercyjne do zastosowań biurowych.

Od tranzystora do ...

 1947 – tranzystor bipolarny (Bell Telephone Laboratories),

 1957 – DEC (Digital Equipment Corporation) komputer PDP-1,

 1958 – Jack Kilby wynalazł układ scalony w technologii TTL,

 1960 – tranzystor w technologii MOS (ang. metal oxide semiconductor),

 1964 – masowa produkcja układów cyfrowych w technologii TTL (Texas Instruments

seria SN74...),

 1964 – IBM seria 7000 i 360, DEC PDP-8: komputery komercyjne,

 1970 – produkcja układów cyfrowych w technologii MOS,

 1970 – pamięć półprzewodnikowa (Fairchild),

--- 1971 – 4-bitowy up 4004 w tech. PMOS (Intel): pierwszy uniwersalny

mikroproce-sor, 60000 rozkazów na sekundę,

 1971 – Fast Digital Processor (Lincoln Laboratories), złożony z 10000 układów

scalonych S-MSI,

 1972 – 8-bitowy up 8008 w tech. PMOS (Intel),

 1974 – 8-bitowy up 8080 w tech. NMOS (Intel),

 1975 – 8-bitowy up 6800 w tech. NMOS (Motorola),

(8)

 1975-76 – 8-bitowe upry: 2660 (Signetics), 6502 (Rockwell, MOS Technology), Z80 (Zilog),

 1976 – 16-bitowy up TI 9900 w technologii HNMOS (Texas Instruments),

 1978/9 – 16-bitowy up 8086/8088 w technologii HNMOS (Intel)2,

 1979 – 16-bitowe upry: Z8000 (Zilog), NS 16016 (National Semiconductors), i in.,

 1979 – 16/32-bitowy up 68000 (Motorola),

 1981 – DSP: S2811 (AMI), 2920 (Intel), uPD7720 (NEC),

 1982 – TMS 32010 (Texas Instruments),

 1982 – 16-bitowy up 80286 (Intel): praca w trybie chronionym,

 1985 – 32-bitowy up 80386 w technologii HCMOS III (Intel), model maszyny

wirtu-alnej,

 1991 – 32-bitowe upry x386 (AMD, Cyrix),

 1991 – 64-bitowy R4000 (MIPS),

 1992 – 64-bitowy RISC-owy Alpha (DEC),

 1993 – 32-bitowe upry x486 (AMD, Cyrix), 32/64-bitowy up Pentium P5 (Intel),

Power PC (IBM),

 1995 – up Pentium Pro P6 (Intel),

 1996 – up Pentium MMX P55C (Intel),

 199 ? – 32/64-bitowe up 6x86 (Cyrix&IBM&SGS-Thompson), K5 (AMD-1996), Winchip

C6, Winchip 2 (IDT),

 1997 – up Pentium II (Intel),

 1998 – up K6 (AMD),

 1999 – up Pentium III (Intel),

 2000 – up Pentium 4 (Intel),

 2000 – up Athlon 4/Duron (AMD),

 2002 – up Athlon XP (AMD), Pentium IV (0,13 um) (Intel),

 2003 – 64-bitowy up Ultra SPARC (Sun), PowerPC G5 (Apple&IBM),

 2004 – 64-bitowy up Athlon 64 (AMD),

 2005 – 2-rdzeniowy up Pentium D (Intel),

 2006 – 2-rdzeniowy up Athlon (AMD),

2006 – 8-rdzeniowy up T1 (Sun),

 2007 – 4-rdzeniowy up Core 2 Quadro (Intel),

2010 – 16-rdzeniowy up ShenWei SW1600 (JCR - Chiny),

 2010 – 16-rdzeniowy up Opteron 6300 (AMD).

 2013 – 16-rdzeniowy up T5 (Oracle).

 ...?

"Wydaje się, że w zakresie technologii komputerowych osiągnęliśmy, to co było możliwe do uzyskania, ale należy być ostrożnym z takimi stwierdzeniami, ponieważ może się okazać, że za 5 lat zabrzmią naprawdę niemądrze"

John von Neumann, 1949 r.

(9)

Wykład II

Struktura systemu komputerowego

Maszyna von Neumanna (ang. von Neumann machine)

-koncepcja komputera, utrzymującego w pamięci zarówno program jak i dane; możliwość wymiany programu i danych na inne; zarówno program, jak i dane są przechowywane w pamięci w kodzie dwójkowym, a ich przetwarzanie odbywa się w arytmometrze; rozkazy są podzielone na dwie części: polecenie i adresy argumentów (argumentów).

Rys. II-1. Schemat blokowy komputera o architekturze trójmagistralowej

Architektura harwardzka – koncepcja komputera, gdzie w odróżnieniu od maszyny

von Neumanna dostęp do pamięci danych i programu jest niezależny dzięki zastosowaniu osobnych magistral. Procesor w tym samym czasie może dokonywać operacji odczytu z pamięci programu i zapisu lub odczytu z pamięci danych, co zwiększa jego wydajność. Architektura harwardzka stosowana obecnie w procesorach DSP i mikrokontrolerach w wewnętrzną pamięcią danych EEPROM i wewnętrzną pamięcią programu Flash.

Operacje sprzętowe w komputerze:

 odczyt z pamięci programu do procesora,  odczyt z pamięci danych do procesora,

 zapis danych z procesora do pamięci danych,  odczyt z układów wejścia-wyjścia do procesora,

 zapis danych z procesora do układów wejścia-wyjścia,

 bezpośredni odczyt z pamięci danych przez układy wejścia-wyjścia (ang. direct memory access, DMA),

 bezpośredni zapis do pamięci danych przez układy wejścia-wyjścia (ang. direct memory access, DMA),

 operacje na rejestrach wewnętrznych procesora,  obsługa przerwań.

(10)

Elementy składowe komputera:

Szyna, magistrala (ang. bus) - wiązka przewodów lub zespół ścieżek na płytce

obwodu drukowanego, do wzajemnej komunikacji pomiędzy elementami komputera. W definicji szyny, prócz samych przewodów sygnałowych, mieści się ściśle zdefiniowany protokół (standard) precyzujący zbiór komunikatów. Przykłady standardów szyn: ISA, PCI (Express), SCSI, PCMCIA, (S)ATA.

Jednostka centralna (ang. central processing unit, CPU) - element komputera, który

pobiera i wykonuje rozkazy. Składa się z jednostki arytmetyczno-logicznej, jednostki sterującej, rejestrów, dekodera rozkazów. W przypadku komputerów jednoprocesorowych oznacza po prostu procesor. Natomiast, jeśli mówimy o komputerze wieloprocesorowym, CPU oznacza wszystkie procesory lub procesor nadrzędny.

Pamięć danych (ang. data memory) – pamięć do zapisu i odczytu przeznaczona do

przechowywania danych.

Pamięć programu (ang. program memory) – pamięć do odczytu przeznaczona do

przechowywania kodu programu.

Układ wejścia-wyjścia (ang. input-output circuit, I/O) - element komputera, służący

do wymiany informacji między komputerem a urządzeniem zewnętrznym (peryferyjnym).

Elementy składowe procesora:

a) b)

Rys. II-2. Architektura procesora: a) uproszczona, b) AVR8

Jednostka arytmetyczno-logiczna zwana również arytmometrem (ang. Arithmetic

(11)

liczbach w formacie stałopozycyjnym i logiczne, pobierającą argumenty działań z rejestrów procesora lub z pamięci oraz określająca znaczniki w rejestrze stanu procesora.

Typowe operacje wykonywane przez ALU:  suma logiczna OR (funkcja alternatywy),  iloczyn logiczny AND (funkcja koniunkcji),

 różnica symetryczna EX-OR (funkcja alternatywy wykluczającej),  negacja logiczna NOT,

 dodawanie i odejmowanie arytmetyczne liczb nieujemnych w naturalnym kodzie dwójkowym (NKD), liczb dziesiętnych kodowanych dwójkowo (BCD) (ang. binary coded decimal) oraz liczb ze znakiem w kodzie uzupełnień do dwóch (U2) (ang. 2’s complement),

 mnożenie i dzielenie arytmetyczne liczb nieujemnych w naturalnym kodzie dwójkowym (NKD) i liczb ze znakiem w U2,

 porównywanie logiczne dwóch sekwencji bitów,  porównywanie arytmetyczne dwóch liczb,  przesunięcia i rotacje,

 zerowanie, ustawianie, negowanie i testowanie bitów.

Nietypowe operacje wykonywane przez ALU (np. Intel Core):

 dodawanie, odejmowanie, mnożenie i dzielenie arytmetyczne liczb dziesiętnych w nieupakowanym kodzie BCD (ang. unpacked binary coded decimal),

 dodawanie i odejmowanie arytmetyczne liczb dziesiętnych w kodzie ASCII (ang. american standard code for information interchange).

Tabela I-1. Typy numeryczne obsługiwane przez ALU

Reprezentacja NKD, U2 DelphiPascal C/C++ MicrosoftVB

Zakres Bajty Nazwa Nazwa Nazwa

-128 ... +127 1 ShortInt Signed Char** SByte

-32768 ... +32767 2 SmallInt Signed Short Int Short -2147483648 ... +2147483647 4 LongInt Signed Long Int Integer

-9223 372 036 854 775 808... ...

+9223372036854775807 8 Int64 Signed Long Long Int Long

0 ... 255 1 Byte Unsigned Char Byte

0 ... 65535 2 Word Unsigned Short Int UShort

0 ... 4 294 967 295 4 LongWord Unsigned Long Int UInteger 0...18446744073709551611 8 - Unsigned Long Long Int ULong Typowe znaczniki (flagi) ustawiane w wyniku operacji logicznych i arytmetycznych:

 zera (ang. zero, Z),

 znaku (ang. sign, S) dla liczb ze znakiem w U2,  znaku (ang. sign, N) liczb bez znak w NKD,  parzystości (ang. parity, P),

 przepełnienia (ang. overflow, OV lub V),  przeniesienia (ang. carry, C lub CY),

(12)

Jednostka sterująca (ang. control unit) - część procesora, która zapewnia przebieg

operacji zdefiniowanej kodem rozkazu, steruje przenoszeniem danych wewnątrz proce-sora oraz wymianą danych i sygnałów sterujących poprzez magistrale zewnętrzne.

Dekoder rozkazu (ang. instruction decoder) – dekoder tłumaczący kod rozkazu na

mikrorozkazy realizowane przez układy wewnętrzne procesora.

Rejestr (ang. register) – część procesora przechowująca dane lub adres.

Podstawowe rejestry procesora:

 akumulator (ang. accumulator A, ACC),

 rejestry robocze (ang. general purpose registers),

 licznik rozkazów (ang. program counter PC lub instruction pointer IP),  rejestr rozkazów (ang. instruction register IR),

 wskaźnik stosu (ang. stack pointer SP),

 rejestr stanu (wskaźników, flag) (ang. flag register F, program status word PSW),  pamięć podręczna (ang. cache memory) - jako zbiór rejestrów,

 rejestry buforowe danych i adresu (ang. bufer registers).

Licznik rozkazów (ang. program counter/instruction pointer) – rejestr procesora;

adresuje pamięć programu, przechowując adres, spod którego należy pobrać kod następnego rozkazu lub argument bieżącego rozkazu (np. rozkaz MOVC A,@A+PC z listy procesora Intel 8051).

Rejestr rozkazów (ang. instruction register) – rejestr przechowujący kod rozkazu

po-brany z pamięci programu.

Wskaźnik stosu (ang. stack pointer) – rejestr procesora; adresuje pamięć o organizacji

typu „stos” (ang. LIFO – last in first out), wskazując tzw. wierzchołek stosu, czyli adres ostatnio zapisanych danych. Stos jest wykorzystywany do:

 tymczasowego zapisu danych przechowywanych w rejestrach (rozkazy połóż na stos, zdejmij ze stosu),

 zapisu zawartości licznika rozkazów PC podczas wykonywania rozkazu wywoływania podprogramu lub obsługi przerwania. Adres przechowywany w PC zostaje zapamię-tany na stosie w celu umożliwienia powrotu do programu głównego po zakończeniu wykonywania podprogramu;

 przechowywania argumentów i wyników cząstkowych wyrażeń algebraicznych lub logicznych wyrażanych za pomocą notacji przyrostkowej, zwanej odwrotną notacją polską lub odwrotną notacją Łukasiewicza (podczas konwersji z notacji wrostkowej oraz przetwarzania wyrażenia w notacji przyrostkowej),

 przechowywania argumentów i wyników cząstkowych wyrażeń algebraicznych przetwarzanych przez jednostkę zmiennoprzecinkową FPU (koprocesor arytmety-czny), kalkulator naukowy lub języki FORTH, Postscript.

Przykład zapisu wyrażenia algebraicznego3:

notacja wrostkowa notacja przyrostkowa

(ang. infix) (ang. postfix)

3

Program konwertujący wyrażenie z postaci wrostkowej na przyrostkową jest dostępny pod

adresem

http://www.ztmapc.el.pcz.pl

(13)

A+B*C+(D-E)*F ABC*+DE-F*+ Cykl pracy komputera:

Cykl rozkazowy (ang. instruction cycle) - ciąg czynności, które wykonuje układ

sterowania jednostki centralnej w czasie realizowania jednego rozkazu. Na cykl rozkazowy składają się: jednakowa dla wszystkich rozkazów faza pobrania, w której pobierany jest kod operacji z komórki pamięci o adresie zapisanym w liczniku rozkazów (zawartość licznika zwiększa się, a kod operacji jest dekodowany) oraz faza wykonania, w której następuje realizacja operacji wskazanej przez rozkaz. Jeżeli w treści wykonywanego rozkazu jest adres lub argument bezpośredni, to w fazie wykonywania może nastąpić kolejne zwiększenie zawartości licznika rozkazów. Na cykl rozkazowy składają się jeden lub kilka cykli maszynowych.

Rys. II-3. Cykl rozkazowy procesora

Cykl maszynowy (ang. machine cycle) - cykl, w którym następuje przesłanie danych

(odczyt lub zapis) między: - jednostką centralną a pamięcią lub układem wejścia– wyjścia, - rejestrami procesora. W zależności od rodzaju przesłania rozróżnia się cykl maszynowy: pobrania kodu operacji, odczytu i zapisu pamięci/rejestrów, odczytu i zapisu wejścia-wyjścia, przyjęcia przerwania. Jeden cykl maszynowy wykonywany jest w czasie jednego lub kilku/kilkunastu (w zależnie od procesora i rodzaju cyklu) taktów zegara systemowego.

Cykl pamięci (ang. memory cycle) - ciąg operacji składających się na jeden dostęp

(odczyt lub zapis) do pamięci. W każdym cyklu maszynowym następuje wysłanie:  adresu na magistralę adresową,

 danych na magistralę danych,

 sygnałów sterujących, informujących o rodzaju cyklu, na magistralę sterującą. Układy pamięci lub wejścia - wyjścia powinny w tym czasie wykonać odpowiednie czynności - zapisać dane lub wysłać je na magistralę danych. Cykl pamięci często jest utożsamiany z cyklem maszynowym.

Zegar systemowy (ang. system clock) – generator impulsów prostokątnych, taktuje

(14)

Rys. II-4. Graf stanów cyklu rozkazowego Przykład operacji na łańcuchu (ang. chain):

Rozkazy Znaczenie

MOV R2, #n; R2  n

MOV [R1],[R3+]; wykonaj n-razy:

{ [R1]  [R3]

R1  R1 + 1 R3  R3 + 1 } R1, R2, R3 – rejestry robocze,

[Rx] – adres komórki pamięci zapisanej w Rx. Przykład operacji na wektorze (ang. vector):

Rozkazy Znaczenie

MOV [R1],[R3]; wykonaj równocześnie: [R1]  [R3]

(15)

Wykład III

Rozkazy procesora – typy i przetwarzanie

Rozkazy maszynowe (ang. instruction) są przetwarzane przez procesor jako dane bina-rne. Każdy rozkaz posiada unikatowy kod operacji oraz opcjonalnie dodatkowe elementy:

 przedrostek (ang. prefix) – warunkuje sposób wykonania rozkazu,

 kod operacji (ang. opcode) – określa operację, jaka ma być przeprowadzona;

 przyrostek (ang. postfix) – określa rodzaj i typ argumentów,

 odniesienie do argumentów źródłowych (ang. source), którymi mogą być: dane

bezpośrednie, adresy pamięci lub układów we-wy, rejestry procesora;

 odniesienie do argumentów przeznaczenia (ang. destination) lub wyniku (ang.

re-sult), którymi mogą być: adresy pamięci lub układów we-wy, rejestry procesora;

 odniesienie do następnego rozkazu – określa adres następnego rozkazu, który będzie

wykonany po rozkazie bieżącym. Przykład 1:

NOP; nic nie rób

NOP – opcode zapisany w języku symbolicznym, tzw. mnemonik, Przykład 2:

ADD A , R1 ;A  A + R1

ADD – opcode,

A, R1 – argumenty źródłowe, A – argument przeznaczenia. Przykład 3:

MOVX A , @R1 ;A  [R1]

MOV – opcode, X – przyrostek, oznacza zewnętrzną pamięć lub układy wejścia-wyjścia, [R1] – argument źródłowy, A – argument przeznaczenia.

Przykład 4:

LJMP adres ;PC  adres

L – przedrostek (ang. long) JMP – opcode,

adres – adres następnego rozkazu.

Typowe rodzaje operacji (rozkazów) wykonywane przez procesor:  transferu (przesłań) danych,

 arytmetyczne,  logiczne,  konwersji (translacji),  wejścia-wyjścia,  sterowania systemowego,  przekazywania sterowania. Opis skrótów:

aź – argument źródłowy (ang. source), ad – argument docelowy (ang. destination),

aźd – argument jednocześnie źródłowy i docelowy.

(16)

eracji acji 8051 Transfer danych Move Store Load Exchange Clear Set Push Pop skopiuj ad  aź zapisz aź w pamięci odczytaj ad z pamięci

aźd1  aźd2 wyzeruj aźd (0...0b)

ustaw aźd (1...1b) zachowaj aź na stosie

załaduj ad ze stosu MOV MOVX MOVC XCH CLR -PUSH POP MOV ST LPM XCH CLR SER PUSH POP Arytmetyczne Add Subtract Multiply Divide Absolute Negate Increment Decrement Compare ad  aź1 + aź2 ad  aź1 – aź2 ad1...2  aź1 * aź2

ad1...2  aź1 / aź2 aźd  |aźd| aźd  - aźd aźd  aźd + 1

aźd  aźd – 1

aź1 – aź2 (flagi OV, Z, C, S)

ADD SUBC MUL DIV -INC DEC -ADIW SUBI MULS FMUL -NEG INC DEC CP Logiczne AND OR NOT EX-OR Test Compare Shift Rotate

aźd  aźd  aź aźd  aźd  aź aźd  neguj aźd

aźd  aźd  aź aź1  aź2, (flaga Z) aź1 – aź2, (flaga Z) przesuń w prawo/lewo aźd

obracaj w prawo/lewo aźd

ANL ORL CPL XRL -CJNE -RRC ANDI OR COM EOR TST CPI LSL ROL

Konwersji TranslateConvert aźdtabela przyporząd.aźdzmiana postaci aźd na inną SWAP- DESLAT

Wejścia-wyjścia Input Output Start I/O Test I/O

odczytaj aź z układu we-wy zapisz ad do układu we-wy

zapisz kod do układu I/O odczytaj kod stanu z układu I/O

-IN OUT -Sterowania syste-mowego Set control bits Clear control bits

ustaw flagi ogólnego przez-naczenia i systemowe zeruj flagi ogólnego

przez-naczenia i systemowe SETB CLR SIE CLI Przekazywania sterowania Jump (branch) Jump condi-tional Jump to Sub-routine Return Execute (Es-cape) Skip Skip condi-tional

skocz pod adres ad, czyli PCad

skocz pod adres ad, jeśli warunek spełniony/nie

spełniony

skocz do podprogramu (za-chowaj na stosie adres

powrotu)

wróć z podprogramu (pobierz ze stosu adres powrotu) pobierz argument i wykonaj jak

rozkaz, PC bez zmiany pomiń następny rozkaz pomiń następny rozkaz, jeśli

SJMP JB/JNB LCALL RET -RJMP BREQ CALL RETI BREAK -SBIS/SBIC

(17)

Halt/Wait (Hold)

No operation

warunek spełniony/nie spełniony zatrzymaj wykonywanie pro-gramu/zatrzymaj wykonywanie

programu, a następnie wznów po spełnieniu warunku nie wykonuj żadnego działania

-NOP

-SLEEP

NOP Obowiązuje znajomość listy rozkazów procesora Intel 80c51 przedstawianej na tablicy w trakcie wykładu i załączonej w pliku „Lista rozkazów 8051.doc”! Tryby adresowania i przykłady realizacji w liście rozkazów mikroprocesora 8051:

- natychmiastowy MOV A,#n,

- bezpośredni MOV 20h,#n, MOV A,#n - rejestrowy MOV ACC,#n,

- pośredni MOV [25h],#n – nie występuje w 8051! - pośredni rejestrowy MOV @R0,#30h,

- z przesunięciem

indeksowy (pośredni rejestrowy) MOVC A,@A+DPTR,

indeksowy (pośredni rejestrowy) względny MOVC A,@A+PC,

względny SJMP przesunięcie (adres=PC+przesunięcie) - stosowy PUSH B, POP ACC.

Wykład IV

Potokowe przetwarzanie rozkazów

Przetwarzanie potokowe (ang. pipelining) - polega na równoczesnym przetwarzaniu

grupy rozkazów, znajdujących się w różnych fazach (ang. stage) cyklu rozkazowego. Wyróżnia się, co najmniej fazę pobierania i wykonania rozkazu.

Przetwarzanie superpotokowe (ang. hyper/superpipelining) – zaawansowane

przetwarzanie potokowe, w którym dwa rozkazy znajdują się w tej samej fazie potoku, lecz w różnych podfazach. Takie rozwiązanie jest możliwe, gdy w obrębie fazy zostaną wyodrębnione dwa nienakładające się zadania (np. MIPS R4000).

Przykładowa dekompozycja rozkazu na 6 faz:  pobranie rozkazu (ang. instruction fetch) – IF,  dekodowanie rozkazu (ang. instruction decoding) – ID,

 obliczanie adresu argumentów (ang. operand computing) – OC,  pobieranie argumentów (ang. operand fetch) – OF,

 wykonanie rozkazu (ang. instruction execution) – IE,  zapisanie argumentów (ang. result writing) – RW.

Założenia przyjęte do rys. IV-1 (czynniki wpływające na efektywność przetwarzania po-tokowego):

 jednakowy czas trwania każdej z faz,

 każdy rozkaz przechodzi przez wszystkie fazy,

 brak konfliktów dostępu do pamięci (fazy IF, OF, RW odwołują się do pamięci),  niezależność rozkazów (rozkaz nie czeka na argument obliczany przez inny rozkaz),

(18)

 brak przerwań lub przerwania zablokowane,  brak rozkazów skoku (rozgałęzień).

czas 

Rys. IV-1. Przetwarzanie potokowe 9 rozkazów

Występowanie co najmniej jednego z ww. czynników skutkuje koniecznością wprowadzenia dodatkowej fazy oczekiwania (ang. stalls) lub rozpoczęcie przetwrzania od innego adresu w przypadku rozkazu skoku lub obsługi przerwania.

Przykład 5:

{Rozkaz 1} MOV R2, #n; R2  #n

{Rozkaz 2} ADD R1, [R2]; R1  R1 + [R2]

{Rozkaz 3} JC adres15; jeśli C=1 to PCadres15

Rysunek IV-2 ilustruje wpływ występowania rozkazu skoku warunkowego na potok rozkazów. Rozkaz 3 jest rozkazem skoku do rozkazu 15. Do zakończenia fazy EI nie ma możliwości przewidzenia, który rozkaz będzie wykonany jako następny. W 8 jednostce czasu rozkaz 15 wchodzi do potoku. Od chwili czasu 9 do 12 nie kończy się wykonywanie żadnego rozkazu – brak fazy WO, co oznacza stratę wydajności przetwarzania rozkazów.

(19)

czas 

Rys. IV-2. Przetwarzanie potokowe 9 rozkazów w przypadku rozkazu skoku warunkowego

RW RN ... RA

kierunek przetwarzania

programu

Rys. IV-3. Adresowanie pamięci programu w wyniku wykonania rozkazu skoku warunk-owego

Opis:

RW – rozkaz wykonywany,

RN – rozkaz następny (wykonany, gdy nie spełniony warunek skoku), RA – rozkaz alternatywny (wykonywany, gdy spełniony warunek skoku)

Metody zwiększania wydajności przetwarzania potokowego w przypadku rozkazu skoku warunkowego:

 zwielokrotnienie strumienia potoków,

 jednoczesne pobieranie adresu alternatywnego RA i rozkazu następnego RN,  buforowanie fragmentu programu,

 zmiana kolejności wykonywania rozkazów,  przewidywanie rozgałęzień.

(20)

Zwielokrotnienie strumienia potoków polega na przetwarzaniu równoległych

po-toków, zapoczątkowanych przez rozkazy RN i RA (np. IBM 370/168, IBM 3033). Wady:  może wystąpić konflikt dostępu do pamięci (np. równoległe fazy IF),

 w równoległych potokach mogą pojawić się kolejne rozkazy skoków warunkowych.

Jednoczesne pobieranie adresu alternatywnego RA i rozkazu następnego RN

jest wariantem metody zwielokrotnienia strumienia potoków ograniczonej do poje-dynczego rozkazu RA (np. IBM 360/91).

Buforowanie fragmentu programu polega na przechowywaniu fragmentu programu

w podręcznej pamięci procesora (ang. program cache memory). Metoda ta jest przydatna przy operowaniu pętlami. Jeśli bufor jest dostatecznie pojemny, aby zmieścić wszystkie rozkazy stanowiące pętlę, to rozkazy te muszą być pobrane tylko raz. Przy kolejnych obie-gach pętli procesor nie odwołuje się do pamięci zewnętrznej (np. Cray-1, Motorola 68310).

RA ... RW RN

kierunek przetwarzania programu

Rys. IV-4. Adresowanie pamięci programu w wyniku realizowania tzw. pętli

Zmiana kolejności wykonywania rozkazów (ang. out-of-order execution) polega na

przetwarzaniu rozkazów w takiej kolejności, aby grupować rozkazy skoków lub umieszczać je poza pętlami. Efekty wykonanych rozkazów oczekują w tzw. zbiorniku in-strukcji (ang. reservation station) na umieszczenie ich w miejscach przeznaczenia wg pierwotnej kolejności rozkazów (ang. re-order bufer).

Przewidywanie rozgałęzień (ang. branch prediction) polega na zgadywaniu, czy

wys-tąpi warunek powodujący skok (wykonywanie kodu od adresu RA), czy też nie (wykony-wanie kodu od adresu RN). Jeśli przewidy(wykony-wanie okaże się błędne rezultat przetwarzania jest odrzucany i przetwarzany jest kod od właściwego adresu, znanego po zakończeniu fazy IE rozkazu RW.

Metody przewidywania dzielą się na statyczne i dynamiczne. Metody statyczne nie bazują na historii skoków warunkowych wykonanych przez program.

Wśród metod statycznych można wyróżnić:

 przyjmowanie, że skok nie nastąpi (np. Motorola 68020, VAX 11/780),

 przyjmowanie, że skok nastąpi; korzystniejsze niż metoda poprzednia, gdy występują rozkazy skoków bezwarunkowych,

 przewidywanie po analizie kodu rozkazu; efektywne w przypadku rozkazów skoków bezwarunkowych i konstrukcji typu „pętla z licznikiem”, np.

SJMP adres ;PC  adres

lub

(21)

Wśród metod dynamicznych można wyróżnić:

 przewidywanie na podstawie bitu skok nastąpił/ nie nastąpił; jeśli ostatnio skok nastąpił to przyjmuje się, że również wystąpi przy kolejnym rozkazie skoku; korzystne w przypadku pętli – błędne przewidywanie wystąpi dwukrotnie, tj. w pierwszym i os-tatnim obiegu pętli (np. IBM 3090/400),

 przewidywanie na podstawie tablicy historii rozgałęzień; wady: wymaga wewnętrznej pamięci procesora oraz rozbudowanych układów wnioskowania (np. Intel Xeon/Core, Power PC 620).

Wykład V

Superskalarne przetwarzanie rozkazów

Przetwarzanie superskalarne (ang. superscalar processing) - polega na

równoczes-nym przetwarzaniu grupy (przynajmniej dwóch) rozkazów, znajdujących się w tych samych fazach (ang. stage) cyklu rozkazowego (np. Intel Core, IBM RS6000).

czas 

Rys. V-1. Porównanie różnych rozwiązań Czynniki wpływające na efektywność potoku superskalarnego:  zależność proceduralna,

 prawdziwa zależność danych,  konflikt zasobów,

 zależność wyjściowa,  antyzależność.

Zależność proceduralna (ang. control hazard) jest związana z rozkazami skoków oraz

(22)

rozgałęzieniu nie mogą być wykonane przed zakończeniem rozgałęzienia. W maszy-nach o architekturze RISC (ang. Reduced Instruction Set Computer) większość rozkazów ma ten sam format i kolejność pól oraz jednakowy czas wykonania każdej fazy (określany przez ilość taktów zegara systemowego).

Prawdziwa zależność danych (ang. data hazard, zależność typu RAW – ang. read

af-ter write) występuje wtedy, gdy drugi rozkaz potrzebuje danych tworzonych za pomocą pierwszego rozkazu. Wykonanie drugiego rozkazu ulega opóźnieniu o tyle faz ile jest wymaganych do usunięcia zależności.

Przykład 6:

{I0} R1  R2 + R3

{I1} R4  R1

Eliminowanie prawdziwej zależności danych polega na optymalizacji kodu programu na etapie kompilacji programu, wprowadzania pustych cykli (ang. wait-state) lub wykony-wanie rozkazów poza kolejnością (ang. out-of-order execution).

czas 

Rys. V-2. Wpływ zależności na superskalarne przetwarzanie rozkazów (I0,I1 – rozkaz 0 i 1)

Konflikt zasobów (ang. structural hazard) polega na jednoczesnym rywalizowaniu dwóch

lub więcej rozkazów o te same zasoby systemowe, np. ALU, rejestry procesora, pamięć po-dręczną, pamięć główną, układy we-wy, magistrale. Rozwiązanie problemu jest możliwe poprzez powielanie zasobów, np. dwie ALU w procesorze, wykonywanie rozkazów poza kole-jnością (ang. out-of-order execution) lub stosowanie rejestrów i/lub pamięci z wielokrotnym dostępem - w przypadku zależności typu RAR – ang. read after read).

Przykład 7:

{I0} R3  R3 + R1

(23)

W przykładzie 8 zilustrowano przypadek tzw. “fałszywy RAR”. Rozwiązanie problemu RAR przez jednoczesny odczyt R1 w rozkazie I1 i I2 spowoduje błędny wynik końcowy R4=R3+n, zamiast spodziewanego R4=R3+R2+n. Rozwiązanie problemu wymaga dzi-ałania jak dla zależności typu RAW, zachodzącej również pomiędzy I2 i I3.

Przykład 8:

{I0} ...

{I1} R1  n

{I2} R1  R1 + R2

{I3} R4  R1 + R3

rozwiązanie RAR – błąd rozwiązanie RAW – OK {I2}

{I3}

IF ID R1R2 + R1 IF ID R1R2 + R1

IF ID R1R3 + R4 IF ID allst allst allst R1R3 + R4

Rys. V-3. Realizacja superskalarności dla przykładu 8

Zależność wyjściowa (zależność typu WAW – ang. write after write) występuje, gdy

wynik działania rozkazu z drugiej pary jest niszczony przez działanie rozkazu z pier-wszej pary (ang. data hazard). Taka sytuacja zachodzi w procesorach o zmiennej dłu-gości trwania rozkazów. W przykładzie 9 zależność wyjściowa występuje pomiędzy rozkazami I0 i I2 i może być usunięta poprzez przemianowanie rejestrów (ang. register renaming). Przykład 9: {I0} R3  R2  R5 {I1} R4  R3 + 1 {I2} R3  R5 - 1 {I3} R7  R3  R4

Antyzależność (zależność typu WAR – ang. write after read) występuje, gdy rozkaz z

drugiej pary (znajdującej się innej fazie potoku) nadpisuje dane używane przez rozkaz z pierwszej pary (ang. data hazard). Taka sytuacja zachodzi w procesorach o zmiennej długości trwania rozkazów. W przykładzie 9 antyzależność występuje pomiędzy rozkazami I1 i I2 i może być usunięta poprzez przemianowanie rejestrów.

Przykład superskalarności w procesorze Intel Core

Zastosowano dynamiczną metodę przewidywania rozgałęzień, opartą na historii wykonań rozkazów rozgałęzienia (dwa bity skok wystąpił/nie wystąpił). W tej metodzie zakłada się tzw. mocne założoenie o skoku, tzn. przewiduje się, że rozgałęzienie nie wys-tąpi tylko wtedy, gdy oba bity historii są zerami.

(24)

Rys. V-5. Graf stanów bufora celu rozgałęzienia procesora Intel Core

Procesor Intel Pentium zawiera dwa niezależne ALU, oznaczane U i V, pracujące na 32-bitowych liczbach zapisanych w formacie stałopozycyjnym. Układ kontroli dobierania parami sprawdza na bieżąco możliwość wykonania kolejnej fazy potoku przez parę rozkazów (sprawdza zachodzenie jednego z ww. rodzajów zależności). W buforze celu rozgałęzienia są przechowywane: adres aktualnie wykonywanego rozkazu rozgałęzienia RW, adres rozkazu alternatywnego RA – patrz rys. IV-3 i IV-4), wykonywanego jako rozkaz kolejny w przypadku rozgałęzienia programu, dwa bity historii H1 i H2 (ang. history bits) oraz bit ważności danych V (ang. valid). Po zaistnieniu warunku czy skok nastąpi, czy też nie, bity historii są aktualizowane. Bufor celu rozgałęzienia (ang. branch target bufer - BTB) jest zorganizowany w pamięci podręcznej procesora. Jeżeli wystąpi brak miejsca do dokonania nowego wpisu wpis najstarszy jest usuwany.

(25)

Rys. V-6. Struktura potoku całkowitoliczbowego procesora Intel Pentium/Core; ele-menty charakterystyczne dla p. skalarnego i potokowego, eleele-menty

(26)

Wykład VI

Przetwarzanie równoległe

Przetwarzanie równoległe (paralelne) - polega na równoczesnym przetwarzaniu

grupy (przynajmniej dwóch) rozkazów, wątków lub programów. Rodzaje paralelności i przykłady implementacji:

 paralelność na poziomie rozkazów (ang. instruction-level parallelism) – przetwarzanie potokowe i/lub superskalarne, architektura VLIW;

 paralelność na poziomie danych – przetwarzanie łańcuchowe, wektorowe (ang. vec-tor computing); efektywne przetwarzanie algorytmów wymagających powtarzania identycznych operacji na wielu danych, np. filtracji cyfrowej, przetwarzanie obrazów;

 paralelność na poziomie sprzętu i/lub programu – przetwarzanie współbieżne, wielowątkowość (ang. multi-threading), tj. wykonywanie równocześnie wielu pro-gramów lub procesów systemowych.

Przykład 10:

a) obliczenia skalarne b) obliczenia wektorowe

C = A + B C = A + B 7 = 3 + 4                                  1 4 8 6 4 2 7 0 6

R1 – adres pierwszego elementu wektora A R2 – adres pierwszego elementu wektora B R3 – adres pierwszego elementu wektora C n – liczba wierszy wektorów A, B, C

Zadanie z podpunktu b) zrealizowane przez:

procesor skalarny procesor wektorowy

MOV R0, #n

PETLA: MOV A,[R1] MOV A,[R1]

MOV B,[R2] MOV B,[R2]

ADD A,B ADD A,B

MOV [R3],A MOV [R3] , A

DEC R0

INC R1

INC R2

INC R3

JNZ R0,PETLA

Klasyfikacja systemów z przetwarzaniem równoległym i przykłady implementacji: a) systemy z przepływem rozkazów (ang. instruction flow) wg taksonomii Flynna

(27)

 z pojedynczym strumieniem rozkazów i danych (ang. single instruction single data stream - SISD) - system jednoprocesorowy z przetwarzaniem (super) potokowym i/lub superskalarnym;

 z pojedynczym strumieniem rozkazów i zwielokrotnionym strumieniem danych (ang. single instruction multiple data streams - SIMD) – procesory wektorowe (np. Cray -1, IBM 3090), procesory z technologią MMX, SSE, SSE2, SSE3, SSSE3, SSE4 SSE4.1 (Intel), 3D Now! (AMD), Visual Instruction Set - SPARC (IBM), Vector Floating Point (ARM), procesory graficzne DSP (NVidia, AMD), procesor „hybrydowy” Cell Processor (IBM&Toshiba&Sony), technologia Virtual Vector Architecture (IBM);

 ze zwielokrotnionym strumieniem rozkazów i pojedynczym strumieniem danych (ang. multiple instruction single data stream - MISD) – komputery zredundowane w celu podwyższenia niezawodności, np. komputer pokładowy promu kosmicznego;  ze zwielokrotnionym strumieniem rozkazów i danych (ang. multiply instruction

mul-tiple data streams - MIMD) – system jednoprocesorowy pod kontrolą wielowątkowego systemu operacyjnego, np. Intel Core w trybie wirtualnym proce-sora 8086 (ang. virtual-8086 mode), Intel Virtualization Technology, systemy wielo-procesorowe (systemy wielowielo-procesorowe, w tym „pseudo” dwuwielo-procesorowe, np. Hyper Threading Technology, procesory wielordzeniowe np. Intel Core, AMD Opteron, Sun Ultra Sparc IV/T1) i wielokomputerowe (klastry, systemy gridowe, farmy (stosy) komputerów), superkomputery (IBM, Cray Inc., HP, SGI, NEC):

z pojedynczym programem (procesem) i wieloma danymi (ang. single

program multiple data - SPMD),

z wieloma programami (procesami) i wieloma danymi (ang. multiple

pro-gram multiple data - MPMD).

b) systemy z przepływem danych (ang. data flow) – macierze systoliczne (iWarp sys-tem firmy CMU – 1989 r.), sieci neuronowe, specjalizowane procesory graficzne.

Przykład 11:

obliczanie wartości wielomianu  wg klasycznej formuły:

y = an·xn + an-1·xn-1 + an-2·xn-2+ .... + a1·x + a0

algorytm?

 wg algorytmu Hornera:

y = ((((an·x + an-1) ·x + an-2) ·x + an-3) ·x .... a1) ·x + a0

Zadanie zrealizowane przez procesor skalarny: R1 – adres tablicy współczynników wielomianu, n – stopień wielomianu,

MOV R0,#n MOV A,[R1]

PETLA: MUL A,#x ;A=A*x DEC R1

ADD A,[R1] DEC R0 JNZ R0,PETLA

(28)

Przykład użycia macierzy systolicznej do obliczania wartości wielomianu wg algorytmu Hornera:

Rys. VI-1. Przykład zastosowania macierzy systolicznej Przykład 12:

obliczanie wartości silni  wg klasycznej formuły: n! = 1 · 2 · 3 · ... · n  wg rekurencyjnej formuły: n!=(n-1)! · n algorytmy? Implementacje MIMD:

Superkomputer - komputer, który ma jedną z największych mocy obliczeniowych na

świecie w danym momencie - pojęcie względne, subiektywne!

Rys. VI-1. Superkomputer Cray model YMP (model muzealny)

Wielokomputer – system wieloprocesorowy, w którym każdy procesor ma dostęp do

wydzielonych zasobów, tj. pamięci, układów we-wy, magistral. Procesory współpracują przez specjalizowane kanały we-wy, dedykowane magistrale lub interfejsy sieciowe (pakietowy przesył danych). Taka organizacja systemu mikroprocesorowego nazywana jest również modelem pamięci rozproszonej (ang. distributed memory). Przykładami rzeczywistych realiazacji są klastry, MPP (ang. Massively Parallel Processing), gridy i farmy.

Wieloprocesor – system wieloprocesorowy, w którym każdy procesor ma dostęp do

wspólnych zasobów, tj. pamięci, układów we-wy, magistral. Taka organizacja systemu

+

y

a

0

+

*

a

n-1

x

+

a

n

*

x

*

x

0

(29)

nazywana jest również modelem pamięci wspólnej (ang. shared memory). Przykładami rzeczywistych realizacji są architektury typu SMP (ang. Symmetric Multi Processing), NUMA (ann. nonuniform memory access), np. Ultra Enterprise (SUN), iSeries i pSeries (IBM), AlphaServer (DEC) oraz procesory wielordzeniowe Core 2/Quad (Intel), Opteron (AMD), T1 (Sun/Oracle).

Klaster komputerowy (ang. cluster) - grupa połączonych komputerów, z zewnątrz

widziana jako jeden komputer. Komputery wchodzące w skład klastra nazywane są węzłami (ang. node). Wyodrębnia się dwie podstawowe klasy wynikające z celów bu-dowy takich rozwiązań:

 klastry wydajnościowe pracujące jako komputery równoległe.

 klastry niezawodnościowe pracujące jako zespół komputerów dublujących

nawzajem swoje funkcje. W razie awarii jednego z nodów, następuje automaty-czne przejęcie jego funkcji przez inne.

W praktyce rozwiązania klastrowe mają charakter mieszany i wykonują dla pewnych aplikacji funkcje wydajnościowe, przy jednoczesnym pełnieniu roli niezawodnościowej. Szczególnie często taki tryb pracy klastra dotyczy serwerów www, pocztowych, plików, itp.

Grid komputerowy - środowisko sprzętowo-programowe umożliwiające dostęp,

współdzielenie i zarządzanie geograficznie rozproszonymi, dynamicznymi zasobami połączonymi zazwyczaj publiczną siecią komputerową, dostarczające użytkownikom jednolitego widoku udostępnianych zasobów. Zasoby gridu mogą być administrowane przez różne organizacje. Udostępnianie zasobów przebiega zgodnie z lokalną polityką zarządzania danej organizacji.

Cechy charakterystyczne systemu gridowego:  każdy węzeł jest niezależny od innych,

 współdzielenie zasobów niewidoczne dla użytkownika końcowego,  rozproszenie geograficzne,

 korzystanie ze standardowych i otwartych protokołów sieciowych,

 heterogeniczność (niejednorodność, zróżnicowanie) sprzętowe i programowe,  dostępność zmienna w czasie,

 potencjalna zawodność,

 posiadanie przez różne organizacje i zarządzanie wg lokalnych polityk dostępu i bezpieczeństwa.

(30)

Rys. VI-2. Przykład krajowej struktury gridowej PL-GRID

Farma komputerowa – połączenie wielu pracujących jednocześnie serwerów i stacji

roboczych. Z zewnątrz jest widziana jako jeden sieciowy organizm. Zadania nie są uruchamiane na konkretnych serwerach czy komputerach, ale dzięki zastosowaniu oprogramowania do dzielenia obciążenia przekazywane są do poszczególnych elemen-tów farmy. Działają tylko te które są aktualnie dostępne.

(31)

Rys. VI-3. Element farmy Google – kontener serwerowy

Ranking superkomputerów na świecie wg zestawienia „TOP500” (listopad2015)4:

1. „Tianhe-2,

- producent National University of Defense Technology, - 3120000 rdzeni Intel Xeon E5 2.2 GHz,

- lokalizacja w National Super Computer Center in Guangzhou (Chiny). 2. „Titan XK-7",

- producent Cray Inc.,

- 560640 rdzeni AMD Opteron 6274 2.2 GHz,

- lokalizacja w Oak Ridge National Laboratory-National Institute for Computational Sciences/University of Tennessee (USA).

3. „Sequoia - BlueGene/Q” - producent IBM,

- 1572864 rdzeni Power BQC 1.6 GHz,

- lokalizacja Lawrence Livermore National Laboratory (USA). 4. „K Computer”

- producent Fujitsu,

- 705024 procesorów SUN/Oracle Ultra SPARC64 2.0 GHz, - lokalizacja RIKEN AICS (Japonia),

---10. „Stampede- PowerEdge C8220", - producent DELL,

- 462462 rdzeni Intel Xeon E5 2.7 GHz,

- lokalizacja Texas Advanced Computing Center/University of Texas (USA).

(32)

Tianhe-2 (MilkyWay-2) (Chiny) 2013-2014 Sequoia (USA) 2012

BlueGene/L: (USA) 2004-2007 CM-5 (USA) 1993

Rys. VI-4. Superkomputery, które zajęły 1 miejsce w wybranych latach

(33)

c)

Site Cyfronet AGH Poland

System Model 2232 Serwerów HP Apollo 8000

Vendor Hewlett-Packard

Application area Academic

Installation Year 2015

Operating

System Linux

Interconnect Infiniband

Processor

Cores Xeon E5-2680v3 12C 2.5GHz (53592 cores)

Operating

memory 279 TB

HDD 10 PB

Rys. VI-5. Superkomputer „Prometheus” (nr 37 na liście “top 500” – listopad 2015): a) widok komputrera, b) serwer HP Apollo 8000, c) specyfikacja

a) b)

Rys. VI-6. Dostawcy superkomputerów wg „top 500” – listopad: a) 2010, b) 2015

(34)

Rys. VI-7. Procesory w ”top 500” – listopad: a) 2010, b) 2015

a) b)

Rys. VI-8. Segment rynku wg ”top 500” ” – listopad: a) 2010, b) 2015

a) b)

Rys. VI-9. Obszar zastosowań wg ”top 500” – listopad: a) 2010, b) 2015

(35)

Rys. VI-10. Liczba systemów w krajach wg ”top 500” – listopad: a) 2010, b) 2015

Tryb wirtualny procesora 8086 (zaimplementowany od wersji Intel 386) – każdy z

uruchomionych pod kontrolą wielowątkowego systemu operacyjnego programów „widzi” pełne zasoby procesora 8086, pracującego w trybie rzeczywistym. System op-eracyjny, wykorzystujący sprzętowe mechanizmy ochrony kontroluje dostęp do za-sobów i przeciwdziała wystąpieniu utraty danych.

Intel Virtualization Technology – umożliwia funkcjonowanie wielu maszyn

wirual-nych na jednej platformie sprzętowej. Każda maszyna daje możliwość uruchamiania systemu operacyjnego i aplikacji na osobnych partycjach przydzielając, m.in. wirtualne ID procesora. Kontrola maszyn wirtualnych jest możliwa dzięki programowalnemu monitorowi (ang. Virtual Machine Monitor).

Hyper-Threading technology (Intel) – technika emulacji dwóch lub więcej

proce-sorów logicznych na bazie jednego rdzenia. Każdy procesor logiczny dysponuje włas-nym kompletem rejestrów, w tym rejestrów ukrytych (ang. Machine Specific Regis-ters), odzwierciedlającym stan architektury oraz lokalny kontroler przerwań, tzw. APIC (ang. Advanced Programmable Interrupt Controller). Iluzja maszyny dwuprocesorowej (dwurdzeniowej) występuje od BIOS’u poprzez system operacyjny do programów; wymaga wsparcia ze strony BIOS’u, układu chipset i systemu operacyjnego.

(36)

Tabela VI-1. Przegląd systemów operacyjnych pod kątem implementacji SMP

System operacyjny Max. CPU

MS-DOS 1

Windows 3.x 1

Windows 95/98/98SE/ME,XP Home Edition 1

Windows NT Workstation 2

Windows 2000 Pro 2

Windows XP Pro 2

Linux/Unix, OS/2, BeOs 2-4

Windows NT Server 4

Windows 2003 Server, Standard Edition 4

.NET Server Standard Edition 4

Windows 2003 Server, Enterprise 8

Windows Datacenter Server 32

Windows .NET Server Ent32/Ent64/Data Center/Data

Cen-ter x64 Edition 8/8/32/64

Windows 7/7 x64 32/256

Windows 8/ 8 x64 32/256

Implementacje SIMD:  VIVA, VIVA-2 (IBM),

 VIS (ang. Visual Instruction Set) (Sun/Oracle),  NEON, VFP (ang. Vector Floating Point) (ARM),  NEON (ARM),

 3D Now!, Enhanced 3D Now!, 3D Now Professional! (AMD)  MMX, SSE, SSE2, SSE3, SSSE3 i SSE4, AVX (Intel).

Rozszerzenie Virtual Vector Architecture (IBM) – technika traktowania 8

dwurdzeniowych procesorów Power5/6 pracujących jako jeden procesor wektorowy; superkomputery IBM, np. NEC Earth Simulator, ASC Purple).

Rozszerzenie MMX (ang. Multi Media Extension) – wprowadzone przez firmę Intel w

1996; rozkazy pracują na danych stałopozycyjnych umieszczonych w 64 bitowych re-jestrach MM0-MM7 (ulokowanych w 80 bitowych rere-jestrach jednostki zmiennopozy-cyjnej FPU).

Schemat budowy mnemonika rozkazu z listy MMX:

przedrostek (ang. prefix) lub jego brak - p oznacza packed,

kod operacji (ang. opcode),

przyrostek lub jego brak (ang. suffix).

Możliwe rodzaje przyrostka:

b – typ danych Packed Byte,

(37)

d – typ danych Packed Doubleword,

q – typ danych Quadword,

us – tryb nasycenia bez znaku Unsigned Saturation,

s – tryb nasycenia ze znakiem Signed Saturation.

Porównanie inkrementacji/dekrementacji 8-bitowego rejestru w różnych trybach:

Wrap-Around (w klasycznych procesorach np. 8051) FFh+1h00h, 00h–

1hFFh, 7Fh+1h?,

 Unsigned Saturation FFh+1hFFh, 00h–1h00h, 80h–1h?

 Signed Saturation 7Fh+1h7Fh, 80h–1h80h, FFh+1?, 00h-1h?

Znaczenie przykładowych rozkazów MMX:

MOVD MM1 , EAX ; EAX > MM1

PSLLQ MM0 , 32 ; przesuń logicznie MM0

; w lewo o 32 pozycje

POR MM0, MM1 ; MM0 or MM1

PADDSW MM0,MM3 ;dodaj arytmetycznie z saturacją dane typu Signed Word, czyli z zakresu 8000h÷7FFFh (-32768 do + 32767). 63 48 47 32 31 16 15 0 MM0 A1 B1 C1 D1 MM3 A2 B2 C2 D2 + MM0’ A1+A2 B1+B2 C1+C2 D1+D2

Rozszerzenie 3D Now! – wprowadzone przez firmę AMD; zestaw rozkazów

uzupełni-ających funkcje MMX w odniesieniu do liczb zmiennopozycyjnych pojedynczej precyzji. Rozkazy operują na danych 64-bitowych, czyli dw óch liczbach pojedynczej precyzji.

Rozszerzenia SSE, SSE2, SSE3, SSSE3, SSE4, SSE4.1, SSE4.2 – (ang. Streaming

SIMD Extensions) wprowadzone przez firmę Intel; poszerzona technika MMX o rozkazy pracujące na danych zmiennopozycyjnych pojedynczej i podwójnej precyzji wg normy IEEE-754, umieszczonych w 64-bitowych rejestrach MM0-MM7 i nowych 128-bitowych rejestrach XMM0-XMM15.

Rozszerzenie Enhanced 3D Now! i 3D Now Professional! – wprowadzone przez

firmę AMD jako odpowiedź na SSE Intela.

Rozszerzenie SSE5 – wprowadzene w roku 2009 przez firmę AMD jako kolejna

odpowiedź na SS4 Intela.

Rozszerzenie AVX (ang. Advanced Vector Extensions) – wprowadzone w roku 2009

przez firmę Intel jako kolejne rozszerzenie SSE; nowe 128-bitowe rejestry YMM.

Rozszerzenie AVX-512 – zapowiedziane na rok 2015 przez firmę Intel jako kolejne

(38)

AVX

(39)

Wykład VII

Format zmiennoprzecinkowy – norma IEEE-P754 / FPU Intel x87

Przykład 13:

Liczba dziesiętna 2.5DEC zapisana w:

- formacie stałoprzecinkowym (stałopozycyjnym) 10.1NKD

- formacie zmiennoprzecinkowym (zmiennopozycyjnym, wykładniczym) MpE 0.101E10

= 0.101p10, gdzie M – mantysa, p – podstawa systemu, tu p=2,

E – wykładnik.

Format zmiennoprzecinkowy (wykładniczy) użyteczny do wyrażania bardzo dużych liczb całkowitych lub małych ułamków, np.:

Stałe fizyczne i chemiczne:

5.98*1024 kg masa Ziemi

6.02 *1023 mol-1 stała Avogadra (liczba cząstek materii w jednym molu substancji)

Przelicznik jednostek 1 eV=1.6*10-19 J

Przykłady wczesnych implementacji formatu zmiennoprzecinkowego:

a) Odra 1003/1013 (1962) - format 39 bitowy Mu2*2Eu2,

b) DEC VAX - 4 formaty, tj. 32/64/64/128 bitów, mantysa w znak-moduł i wykładnik w kodzie z przesunięciem,

c) IBM 360/370 – 32/64 bitów, podstawa=16 a nie 2!, mantysa w znak-moduł, wykładnik w kodzie z przesunięciem.

Norma IEEE-754 (rok 1985) określa sposób reprezentacji liczb binarnych w formacie zmi-ennoprzecinkowym (zmiennopozycyjnym) (ang. floating-point-standard) i jest światowym standardem (np. Matlab, gcc (free C, C++ compiler), C#).

W ww. normie liczba jest reprezentowana w formacie wykładniczym “znak-moduł” a jej wartość wylicza się ze wzoru:

Liczba = (-1)S · M · 2E-przesunięcie gdzie:

S (ang. sign) – bit znaku, jeśli S=1 – liczba ujemna, S=0 – liczba nieujemna, M (ang. significand) – mantysa,

E (ang. exponent) – wykładnik (cecha).

Część ułamkowa mantysy jest nazywana frakcją (ang. fraction). Przesunięcie (ang. bias):

27-1=127 dla pojedynczej precyzji,

210-1=1023 dla podwójnej precyzji,

214-1=16383 dla podwójnej rozszerzonej precyzji.

  

k 1 i i 2 2 1 1 0

m

2

m

2

...

1

m

2

m

M

, 1≤M<2

m0 = 1 – podaje się tylko przy reprezentacji podwójnej rozszerzonej,

k = 23,52,63+1 (długość mantysy zależnie od precyzji – patrz tabela VII-1).

Tabela VII-1. Właściwości liczb znormalizowanych w formacie zmiennopozycyjnym wg IEEE 754 (* dotyczy implementacji w Intel x87)

(40)

Precyzja Długość słowa [bity] Znak „S” [bity]

Mantysa „M” Wykładnik „E”

Długość [bity] Dokładność przy podstawie 10 [cyfry znaczące] Długość [bity] Zakres Pojedyncza (ang. single) 32 1 23 7 8 2±127≈10±38 Pojedyncza rozszerzona (ang. single extended) ≥43 1 ≥31 ≥10 ≥11 ≥2±1023≈10±308 Podwójna (ang. double) 64 1 52 16 11 2±1023≈10±308 Podwójna rozszerzona (ang. double extended) ≥79 1 ≥63 ≥19 ≥15 ≥2±16383≈10±4932 Podwójna rozszerzona* (ang. double extended) 80 1 63+1 19 15 2±16383≈10±4932 zmiany w 2008 (IEEE P-754:2008): 1. wprowadzono synonimy:

„single” – binary32, „double” – „binary64”, „extended” – „binary128”. 2. zastąpiono „double extended” – „extended”

Rozszerzona (ang.

ex-tended)

128 1 63 34 15 2±16383≈10±4932

3. wprowadzono „binary16” dla wymiany danych

binary16 16 1 10 3 5 2±16383≈10±4932

Tabela VII-2. Typy numeryczne obsługiwane przez FPU

Typy rzeczywiste (format zmiennoprzecinkowy) DelphiPascal C++

Micros oft VB

Zakres znaczące BajtyCyfry

Odpowiednik w normie

IEEE-P754 Nazwa Nazwa Nazwa

±(2.9e-39...1.7e38) 11-12 6 - Real*** -

-±(1.5e-45...3.4e38) 7-8 4 Single Single Float Single

±(5.0e-324...1.7e308) 15-16 8 Double Double Double Double ±(3.4e-4932...1.1e4932) 19-20 10 ExtendedDouble Extended

Long Double*

(41)

-Rys VII-2. Typy danych obsługiwane przez jednostkę FPU (ang. Floating Point Unit) zgodną z Intel x87

Tabela VII-3. Wartości specjalne Pole znaku Wykładnik Mantysa Wartość m0 m1…mk 1 1…1 1* 0…0 – ∞ 0 1…1 1* 0…0 + ∞

? 1…1 1* ≠0 QNaN (ang. quiet not a number)

? 1…1 1* ≠0 SNaN (ang. signaling not a num-ber)

1 0…0 0* 0…0 – 0

0 0…0 0* 0…0 + 0

1 0…0 0 ≠0 – liczba zdenormalizowana

0 0…0 0 ≠0 + liczba zdenormalizowana

QNaN nie powodują zgłaszania wyjątku I propagują się przez wiekszość operacji arytmetycznych. SNaNs są używane do prowokowania konieczności obsługi wyjątku (ang. trap) – wykorzystywane w fazie testowania oprogramowania do analizy kodu i danych (ang. debugging). SNaN muszą być przypisane do zmiennej, gdyż procesor nigdy nie generuje SNaN jako wynik operacji zmiennopozycyjnej.

Przykład 14 (Matlab):

>>x=4 >>x=4

>>y=3 >>y=0

>> z=x/y >> z=x/y

(42)

z=Inf >>w=z*0 >>w=z*0 w=0 w=NaN”

>>x=-3

>>x=realmax

>>sqrt(x)

>>y=x*2

0 + 1.7321i

Inf

Sytuacje generujące wyjątek (ang. exception) zgodnie z IEEE 754 i Intel x87: • niewłaściwa operacja arytmetyczna (zwraca QNaN):

 operacja, której argumentem jest SNaN,

 dodawanie lub odejmowanie typu (+∞)+(-∞),

 mnożenie lub dzielenie: 0*∞, 0/0, ∞/∞,

 reszta z dzielenia x/y, gdy x=∞ lub y=0,

 pierwiastek kwadratowy z x, gdy x<0;

 niemożność konwersji liczby z formatu zmiennopozycyjnego do całkowitego lub BCD,

 niemożność porównania dwóch liczb, gdy co najmniej jedna z nich jest typu

NaN,

• dzielenie przez zero (zwraca ∞),

• nadmiar numeryczny (liczba za duża – zwraca ∞),

• niedomiar numeryczny (liczba za mała – zdenormalizowy wynik≈0),

• przybliżony rezultat operacji (wystąpiło zaokrąglenie lub obcięcie wyniku),

• zdenormalizowany operand (operand nie jest prawidłową liczbą typu single lub dou-ble)*,

• nadmiar/niedomiar stosu (stos poza R7 lub R0 – niebezpieczeństwo nadpisania danych)*,

---* rozwiązanie rozpowszechnione przez Intel’a, mimo że norma IEEE 754 nie specyfikuje.

Przykład 15: liczby zdenormalizowane

Niech najmniejsza liczba znormalizowana jest równa 1,0*2-3. Porównanie dwóch liczb

x=1,1*2-3 i y=1,0*2-3 zwraca niezerowy wynik w postaci liczby zdenormalizowane,

gdyż x-y=0,1*2-3! Zaokrąglenie do zera może spowodować błędne zachowanie

programu, gdyż FPU zwraca wynik x-y=0, czyli x=y. Podstawowe rejestry koprocesora x87:

Stos rejestrów (ang. register stack) – zbiór 80-bitowych rejestrów roboczych R7-R0,

w którym jest zorganizowany stos ST. Z każdym rejestrem Rx jest związane dwubitowe pole (ang. tag) wskazujące na rodzaj danych: liczba znormalizowana, zero, wartość specjalna (NaN, NaN nieokreślona, Inf, liczba zdenormalizowana), rejestr pusty.

Rejestr stanu (znaczników) (ang. status register) – określa aktualny stan FPU i

zaw-iera: znaczniki wystąpienia wyjątku (ang. exception flags), flagę zajętości (ang. busy), numer rejestru R7-0 skojarzony z wierzchołkiem stosu ST(0) (ang. TOP), flagi C3-0 o znaczeniu zależnym od instrukcji, np. jako flagi CF (przeniesienia), ZF (zera), PF (parzystości).

Rejestr kontrolny (ang. control register) – konfiguruje FPU i określa precyzję

(43)

Tryby zaokrąglania: w górę, w dół, w kierunku zera (obetnij), do najbliższej. Przykład 15: -2,751 obetnij -> -2 w górę -> -2 w dól -> -3 do najbliższej -> -3

Rys. VII-3. Przykład fragmentu kodu i pracy stosu x87

Przykłady rozkazów FPU Intel x87:

Opis skrótów: float – liczba zmiennopozycyjna, int – liczba całkowita ze znakiem w U2. Instrukcje arytmetyczne

FADD/FADDP float+float/i pobierz ze stosu FIADD int+float

FSUB/FSUBP float–float /i pobierz ze stosu FISUB float–int

FSUBR/FSUBRP float–float (z zamianą argumentów) /i pobierz ze stosu FISUBR inf–float (z zamianą argumentów)

FMUL/FMULP float*float /i pobierz ze stosu FIMUL float*int

FDIV/FDIVP float/float/i pobierz ze stosu FIDIV float/int

FDIVR/FDIVRP float/float (z zamianą argumentów)/i pobierz ze stosu FIDIVR int/float (z zamianą argumentów)

FABS wartość bezwzględna FCHS zmiana znaku

FSQRT pierwiastek kwadratowy

(44)

FXTRACT wyodrębnij wykładnik i mantysę i zapisz każdą jako float FPREM reszta z dzielenia (x-yobetnij(x/y))

FPREM1 reszta z dzielenia zgodnie z normą IEEE 754 (x-y-zaokrąglij do najbliższej (x/y))

Przykład 16:

Intel 286 FPREM(7.1,2) =7.1-2*trunc(7.1/2)=1.1 Intel Core FPREM1(7.1,2)=7.1-2*round(7.1/2)=-0.9

Różnice pomiędzy rozkazem prostym a z zamianą argumentów „R - reversed”: FSUB: ST(1)  ST(1) - ST(0) FSUB mem: ST(0)  ST(0) – mem FSUBR: ST(1) ST(0) - ST(1) FSUBR mem): ST(0)  mem - ST(0)

Instrukcje ładowania stałych (66 bitów) FLDZ zapisz na stosie +0.0

FLD1 zapisz na stosie +1.0 FLDPI zapisz na stosie 

FLDL2T zapisz na stosie log2(10)

FLDL2E zapisz na stosie log2(e)

FLDLG2 zapisz na stosie log10(2)

FLDLN2 zapisz na stopsie loge(2)

Instrukcje transferu

FLD/FILD zapisz argument na stosie jako liczbę zmiennopozycyjną/całkowitą

FST/FSTP zapisz wartość z wierzchołka stosu we wskazanej lokalizacji/ i pobierz ze stosu

FIST/FISTP1 zapisz wartość z wierzchołka stosu we wskazanej lokalizacji/ i pobierz ze stosu

FBLD zapisz argument na stosie jako liczbę BCD

FBSTP zapisz wartość z wierzchołka stosu we wskazanej lokalizacji jako BCD i pobierz ze stosu

FXCH zamiana dwóch rejestrów FCMOVE skok warunkowy jeśli równe FCMOVNE skok warunkowy jeśli nie równe FCMOVB skok warunkowy jeśli mniejszy

FCMOVBE skok warunkowy jeśli mniejszy lub równy FCMOVNB skok warunkowy jeśli nie mniejszy

FCMOVNBE skok warunkowy jeśli nie mniejszy lub równy Instrukcje porównania

FCOM/FCOMI porównaj float z float i ustaw rejestr znaczników FPU/ALU (rejestr EFLAGS)

(45)

FCOMI/FCOMIP porównaj float z float i ustaw rejestr znaczników ALU (rejestr EFLAGS) /i pobierz ze stosu

FTST porównaj float ze stałą 0.0 ustaw rejestr znaczników FPU FXAM sprawdź klasę argumentu (float, Nan, 0 czy Inf).

Instrukcje trygonometryczne FSIN sin(float)

FCOS cos(float)

FSINCOS sin(float) i cos(float) FPTAN tan(float)

FPATAN arctan(float)

Instrukcje arytmetyczne (pozostałe) i skalowania

FYL2X y*log2(x)

FYL2XP1 y*log2(x+1)

F2XM1 oblicz 2x-1

FSCALE skaluj (mnóż/dziel przez potęgę 2)

Przykład 17:

Których rozkazów należy użyć do realizacji poniższych działań?

a) xy = (2log2(x))y=2y*log2(x) dla x=e  ey = 2y*log2(e)

b) logy(x) = log2(x)/log2(y)

Wykład VIII

Pamięć

Hierarchia pamięci opiera się na „oddaleniu” od procesora, gdzie odległość określa czas dostępu do danych.

(46)

Rys. VIII-1. Hierarchia pamięci

Pamięć podręczna (ang. cache memory) – wielopoziomowa, tj. L1, L2, L3, szybka

pamięć półprzewodnikowa typu SRAM (ang. static random access memory), tymczasowo przechowująca dane, względnie niewielkiej pojemności (do kilku MB), zwykle zintegrowana w strukturze jednostki centralnej.

Pamięć główna (ang. main memory) – pamięć półprzewodnikowa typu DRAM (ang.

dynamic random access memory) najczęściej synchroniczna SDRAM lub DDR (ang. double data rate) SDRAM, tymczasowo przechowująca dane, zwykle pobierane z pamięci masowej.

Pamięć masowa (ang. mass storage) – pamięć trwała dużej pojemności, z

wykorzystaniem różnych typów nośników, np. dysk twardy, dysk optyczny, taśma magnetyczna.

Pamięć wirtualna (ang. virtual memory) – pamięć widziana przez procesor jako

pamięć operacyjna, złożona ze stosunkowo niewielkiej pamięci głównej i dużej pamięci dyskowej.

Rys. VIII-2. Hierarchia pamięci procesora Intel Core Współpraca pamięci podręcznej z pamięcią główną

Cytaty

Powiązane dokumenty

W memuarach dowódców wojskowych działalność sądów wojennych pojawia się zdawkowo lub nie ma jej wcale. Wytłumaczenie tej absencji jest proste, choć nikt się do tego

• Gry komputerowe – nie przedstawiamy piksel po pikslu tego co mamy pokazać, tylko opisujemy obiekty, które znajdują się na scenie wydarzeń, a komputer je odtwarza z

talionu wyrazić za walki, przeprowadzone z wielkim rozmachem nad Koprzywianką, w imieniu Najwyższej służby moje najpełniejsze i najpiękniejsze uznanie. Nie

• Będzie dotyczył posługiwania się podstawowymi mechanizmami arkusza (zastosowanie formuł, funkcji, poleceń), wykorzystywanymi w czasie realizacji projektów.

• zdekodowanie rozkazu - interpretacja wczytanego kodu rozkazu (zazwyczaj bajtu) jako polecenia z listy rozkazów procesora1. • wykonanie rozkazu - wczytanie kolejnych

Adres komórki z której pobierany będzie następny rozkaz przechowywany jest w specjalnym rejestrze procesora – liczniku rozkazów.. Schemat

W zasadzie każdy rozkaz powinien podawać adresy 3 operandów (dwa adresy argumentów danego rozkazu i jeden adres wyniku operacji) oraz adres następnego rozkazu.. Komputery,

Źródło: https://pclab.pl/art23133-2.. Scalable Link Interface) rozwiązanie firmy NVIDIA, w którym obraz generowany jest przez co najmniej dwie karty graficzne połączone