Architektury komputerów systemy komputerowe i ich klasyfikacja. Tomasz Dziubich



Podobne dokumenty
PROGRAMOWANIE WSPÓŁCZESNYCH ARCHITEKTUR KOMPUTEROWYCH DR INŻ. KRZYSZTOF ROJEK

16. Taksonomia Flynn'a.

Architektura Systemów Komputerowych. Rozwój architektury komputerów klasy PC

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

RDZEŃ x86 x86 rodzina architektur (modeli programowych) procesorów firmy Intel, należących do kategorii CISC, stosowana w komputerach PC,

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

Architektura komputerów

MMX i SSE. Zbigniew Koza. Wydział Fizyki i Astronomii Uniwersytet Wrocławski. Wrocław, 10 marca Zbigniew Koza (WFiA UWr) MMX i SSE 1 / 16

Architektura mikroprocesorów TEO 2009/2010

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Architektura Komputerów

Architektura komputerów

Budowa Mikrokomputera

3.Przeglądarchitektur

Architektura komputerów

Obliczenia Wysokiej Wydajności

3.Przeglądarchitektur

Architektura komputerów

Systemy wieloprocesorowe i wielokomputerowe

Architektury komputerów Architektury i wydajność. Tomasz Dziubich

Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika

Procesory rodziny x86. Dariusz Chaberski

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

Architektura komputerów

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Zapoznanie z technikami i narzędziami programistycznymi służącymi do tworzenia programów współbieżnych i obsługi współbieżności przez system.

Architektura komputerów

Budowa komputera Komputer computer computare

Autor: inż. Wojciech Zatorski Opiekun pracy: dr inż. Krzysztof Małecki

Organizacja typowego mikroprocesora

Programowanie w asemblerze Architektury równoległe

SSE (Streaming SIMD Extensions)

Procesory. Schemat budowy procesora

Mikroprocesory rodziny INTEL 80x86

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1

PAMIĘCI. Część 1. Przygotował: Ryszard Kijanka

Wykorzystanie architektury Intel MIC w obliczeniach typu stencil

Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1

Architektura systemów informatycznych

PRZEWODNIK PO PRZEDMIOCIE

Architektura komputerów egzamin końcowy

Dr inż. hab. Siergiej Fialko, IF-PK,

Wybrane bloki i magistrale komputerów osobistych (PC) Opracował: Grzegorz Cygan 2010 r. CEZ Stalowa Wola

Komputer IBM PC niezależnie od modelu składa się z: Jednostki centralnej czyli właściwego komputera Monitora Klawiatury

Architektura von Neumanna

dr inż. Jarosław Forenc

Klasyfikacja systemów komputerowych. Architektura von Neumanna Architektura harwardzka Zmodyfikowana architektura harwardzka. dr inż.

Wprowadzenie. Klastry komputerowe. Superkomputery. informatyka +

Podstawy Informatyki Systemy sterowane przepływem argumentów

Tworzenie aplikacji bazodanowych

Komputer. Komputer (computer) jest to urządzenie elektroniczne służące do zbierania, przechowywania, przetwarzania i wizualizacji informacji

Klasyfikacje systemów komputerowych, modele złożoności algorytmów obliczeniowych

1. ARCHITEKTURY SYSTEMÓW KOMPUTEROWYCH

Mikroinformatyka. Koprocesory arytmetyczne 8087, 80187, 80287, i387

Wstęp do informatyki. Architektura co to jest? Architektura Model komputera. Od układów logicznych do CPU. Automat skończony. Maszyny Turinga (1936)

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Systemy rozproszone. na użytkownikach systemu rozproszonego wrażenie pojedynczego i zintegrowanego systemu.

Larrabee GPGPU. Zastosowanie, wydajność i porównanie z innymi układami

Spis treúci. Księgarnia PWN: Krzysztof Wojtuszkiewicz - Urządzenia techniki komputerowej. Cz. 1. Przedmowa Wstęp... 11

Wprowadzenie. Co to jest klaster? Podział ze względu na przeznaczenie. Architektury klastrów. Cechy dobrego klastra.

Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy

Mikrokontroler ATmega32. Język symboliczny

Nowoczesne technologie przetwarzania informacji

Wydajność systemów a organizacja pamięci, czyli dlaczego jednak nie jest aż tak źle. Krzysztof Banaś, Obliczenia wysokiej wydajności.

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Systemy operacyjne i sieci komputerowe Szymon Wilk Superkomputery 1

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Parametry wydajnościowe systemów internetowych. Tomasz Rak, KIA

Numeryczna algebra liniowa

Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz]

Pamięci półprzewodnikowe w oparciu o książkę : Nowoczesne pamięci. Ptc 2013/

dr inż. Konrad Sobolewski Politechnika Warszawska Informatyka 1

UTK ARCHITEKTURA PROCESORÓW 80386/ Budowa procesora Struktura wewnętrzna logiczna procesora 80386

Programowanie Niskopoziomowe

Układ wykonawczy, instrukcje i adresowanie. Dariusz Chaberski

Wysokowydajna implementacja kodów nadmiarowych typu "erasure codes" z wykorzystaniem architektur wielordzeniowych

Bajt (Byte) - najmniejsza adresowalna jednostka informacji pamięci komputerowej, z bitów. Oznaczana jest literą B.

Tesla. Architektura Fermi

Konsolidacja wysokowydajnych systemów IT. Macierze IBM DS8870 Serwery IBM Power Przykładowe wdrożenia

Budowa i zasada działania komputera. dr Artur Bartoszewski

Systemy operacyjne. Systemy operacyjne. Systemy operacyjne. Zadania systemu operacyjnego. Abstrakcyjne składniki systemu. System komputerowy

LEKCJA TEMAT: Współczesne procesory.

Programowanie współbieżne Wykład 2. Iwona Kochańska

Petabajtowe systemy przechowywania danych dla dostawców treści

Przykładowe pytania DSP 1

PROGRAMOWANIE WSPÓŁCZESNYCH ARCHITEKTUR KOMPUTEROWYCH DR INŻ. KRZYSZTOF ROJEK

Wykład 2. Temat: (Nie)zawodność sprzętu komputerowego. Politechnika Gdańska, Inżynieria Biomedyczna. Przedmiot:

Wydajność programów sekwencyjnych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Systemy rozproszone System rozproszony

OPIS TECHNICZNY PRZEDMIOTU ZAMÓWIENIA

współbieżność - zdolność do przetwarzania wielu zadań jednocześnie

PODSTAWY PRZETWARZANIA RÓWNOLEGŁEGO INFORMACJI

MIKROKONTROLERY I MIKROPROCESORY

Algorytmy i Struktury Danych

Struktura i funkcjonowanie komputera pamięć komputerowa, hierarchia pamięci pamięć podręczna. System operacyjny. Zarządzanie procesami

Programowanie Niskopoziomowe

Architektura komputerów

Architektura Systemów Komputerowych. Jednostka ALU Przestrzeń adresowa Tryby adresowania

System mikroprocesorowy i peryferia. Dariusz Chaberski

Klasyfikacja systemów komputerowych. Architektura von Neumanna. dr inż. Jarosław Forenc

Transkrypt:

Architektury komputerów systemy komputerowe i ich klasyfikacja Tomasz Dziubich

Klasyfikacja Flynna Pojedynczy strumień danych Wiele strumieni danych Pojedynczy strumień instrukcji SISD SIMD Wielokrotny strumień instrukcji MISD MIMD

Systemy SIMD Ściśle powiązane Luźno powiązane Jednostka sterująca (CU) LM LM LM EU EU EU LM LM LM EU EU EU LM LM LM EU EU EU

MMX grupa instrukcji MMX (multimedia extension) przeznaczona jest do wykonywania w sposób równoległy operacji na liczbach 8 i 16 bitowych Pentium 57 instrukcji wprowadzono osiem 64-bitowych rejestrów oznaczonych MM0, MM1,..., MM7, które częściowo pokrywają się z rejestrami koprocesora arytmetycznego w takim przypadku używa się instrukcji EMMS, która przygotowuje do użycia rejestry stosu koprocesora, jeśli wcześniej używane były instrukcje MMX dane MMX przechowywane są wg konwencji mniejsze niżej, tj. mniej znaczący bajt umieszczony jest w lokacji pamięci o niższym adresie (little endian)

MMX 63 56 55 48 47 40 39 32 31 24 23 16 15 8 7 0 upakowany bajt (ang. packed byte) 63 48 47 32 31 16 15 0 upakowane słowo (ang. packed word) 63 32 31 0 upakowane podwójne słowo (ang. packed double word) 63 0 poczwórne słowo (ang. quadword)

MMX na poziomie asemblera instrukcje MMX kodowane są w konwencjonalny sposób prawie wszystkie mnemoniki instrukcji MMX zaczynają się od litery P (packed) instrukcje MMX nie zmieniają rejestru znaczników kody instrukcji MMX są dwubajtowe i zaczynają się od bajtu 0FH; przed kodem może wystąpić przedrostek rozmiaru adresu lub przedrostek chwilowej zmiany segmentu; instrukcje MMX mogą powodować wyjątki

MMX w mnemonikach instrukcji, obok zwykłego skrótu operacji (np. ADD), stosowane są dodatkowe litery: S arytmetyka nasycenia (saturation), U liczby bez znaku (unsigned), L młodsza część (low), H starsza część (high), B bajt (8 bitów) W słowo (16 bitów), D podwójne słowo (32 bity), Q poczwórne słowo (64 bity); 1. arytmetyka przewinięcia PADDB mm, mm/m64 ; dodawanie bajtami PADDW mm, mm/m64 ; dodawanie słowami PADDD mm, mm/m64 ; dodawanie podw. słowami 2. arytmetyka nasycenia dla liczb ze znakiem PADDSB mm, mm/m64 ; dodawanie bajtami PADDSW mm, mm/m64 ; dodawanie słowami 3. arytmetyka nasycenia dla liczb bez znaku PADDUSB mm, mm/m64 ;dodawanie bajtami PADDUSW mm, mm/m64 ; dodawanie słowami

Przykład.686.MMX.data p1 dq 0F7F8F9FAFBFCFDFEH p2 dq 0303030303030303H wynik dq?.code zacznij: movq mm1, p1 ; wpisanie zmiennej p1 ; do rejestru mm1 paddusb mm1, p2 ; dodawanie bajtowe ; (liczb bez znaku) do mm2 movq wynik, mm1 ; przesłanie wyniku ; do zmiennej wynik

MMX Arytmetyka przewinięcia Arytmetyka nasycenia liczby ze znakiem i bez znaku liczby bez znaku liczby ze znak. dodawanie: 9000H + A010H = 3010H dodawanie: 9000H + A010H = FFFFH (nasycenie do górnej granicy) dodawanie: 9000H +A010H = 8000H (nasycenie do dolnej granicy) odejmowanie: 9000H A010H = EFF0H odejmowanie: 9000H - A010H = 0H (nasycenie do dolnej granicy) odejmowanie: 9000H - A010H = EFF0H (nie ma nasycenia)

Przykład Przykład działania instrukcji PADDUSW mm6, mm1 63 48 47 32 31 16 15 0 MM6 A000H A000H A000H 4000H 63 48 47 32 31 16 15 0 MM1 1000H B000H 9000H 6000H 63 48 47 32 31 16 15 0 MM6 B000H FFFFH FFFFH A000H

SSE instrukcje SSE (Streaming SIMD Extensions) - Pentium III (1999) - zestaw instrukcji wykonujących działania na liczbach zmiennoprzecinkowych wykonują równoległe operacje na czterech 32-bitowych liczbach zmiennoprzecinkowych zastosowanie w grafice komputerowej (3D), gdzie występują operacje przetwarzania dużych zbiorów liczb zmiennoprzecinkowych dla potrzeb SSE zdefiniowano 8 nowych 128 bitowych rejestrów (xmm0 - xmm7) każdy rejestr zawiera 4 liczby zmiennoprzecinkowe; rejestry oznaczone są symbolami; zestaw instrukcji SSE obejmuje 70 instrukcji 50 instrukcji operacji zmiennoprzecinkowych 12 instrukcji operacji stałoprzecinkowych 8 instrukcji pomocniczych

SSE Działania na liczbach upakowanych (psxxx) 127 96 95 64 63 32 31 0 a3 a2 a1 a0 op op op op 127 96 95 64 63 32 31 0 b3 b2 b1 b0 127 96 95 64 63 32 31 a3 op b3 a2 op b2 a1 op b1 a0 op b0 0

SSE Działania na liczbach skalarnych (xxxs) 127 96 95 64 63 32 31 0 a3 a2 a1 a0 op 127 96 95 64 63 32 31 0 b3 b2 b1 b0 127 96 95 64 63 32 31 a3 a2 a1 a0 op b0 0

Propozycja klasyfikacji architektur Instruction Level Parallelizm - ILP Thread Level Parallelizm TLP Data Level Parallelizm - DLP

Vector Memory-Memory vs Maszyna z rejestrami wektorowymi Instrukcje wektorowe pamięć-pamięć utrzymują wszystkie operandy w pamięci operacyjnej Cray-1 (1976) był pierwszą maszyną z rejestrami wektorowymi Kod Vector Memory-Memory Przykład kodu źródłowego ADDV C, A, B SUBV D, A, B for (i=0; i<n; i++) { C[i] = A[i] + B[i]; D[i] = A[i] - B[i]; } Kod dla maszyny z rejestrami wektorowymi LV V1, A LV V2, B ADDV V3, V1, V2 SV V3, C SUBV V4, V1, V2 SV V4, D

Przykładowa architektura komputera wektorowego

Wykonanie instrukcji wektorowych ADDV C,A,B Pojedyncza jednostka wektorowa Wykonanie z czterema jednostkami A[6] B[6] A[24] B[24] A[25] B[25] A[26] B[26] A[27] B[27] A[5] B[5] A[20] B[20] A[21] B[21] A[22] B[22] A[23] B[23] A[4] B[4] A[16] B[16] A[17] B[17] A[18] B[18] A[19] B[19] A[3] B[3] A[12] B[12] A[13] B[13] A[14] B[14] A[15] B[15] C[2] C[8] C[9] C[10] C[11] C[1] C[4] C[5] C[6] C[7] C[0] C[0] C[1] C[2] C[3]

Budowa jednostki wektorowej Jednostka funkcyjna Rejestry wektorowe Elementy 0, 4, 8, Elementy 1, 5, 9, Elementy 2, 6, 10, Elementy 3, 7, 11, Tor (lane) Podsystem pamięci

Zrównoleglenie instrukcji wektorowych Przykład maszyny, która ma 32 elementy na rejestr wektorowy i 8 torów czas load load Load Unit Multiply Unit Add Unit mul mul add add Instruction issue Ukończenie 24 operacji/cykl podczas wykonania 1 instrukcji/cykl

Intel Advanced Vector Extensions (AVX) AVX rozszerza 16 rejestrów XMM do 256 bitów YMM0 XMM0 256 bits (2010) 128 bits (1999) AVX może pracować na Całych 256 bitach Młodszych 128 bitach (instrukcje SSE) Zachowuje wszystkie instrukcje SSE Starsza część jest zerowana Nie jest generowany błąd wyrównania

AVX AVX (Advanced Vector Extensions) 16 256-bitowych rejestrów (YMM) 8x32 bity, 4 x 64 bity Format rozkazu VxxxxPS/PD/SS/SD Np. VMOVUPD ymm1, mem256 VMOVUPS ymm0. mem256 VMOVPAD z wyrównanego adresu (do 32) VADDPD ymm3,ymm2,ymm1 W planach AVX-512 (32 rejestry, ZMM, Xeon Phi)

AVX Prawie wszystkie instrukcje SSE FP zostały wypromowane do 256 bitów VADDPS YMM1, YMM2, [m256] ; dodanie dwóch liczb wektorów i zapis w rejestrze Prawie wszystkie instrukcje mają możliwość kodowania w nowym formacie (za wyjątkiem tych które odwołują się do rejestrów MMX) VADDPS XMM1, XMM2, [m128] VMULSS XMM1, XMM2, [m32] ; mnożenie skalarne dwóch najmłodszych liczb

AVX addps xmm1,xmm2 ; (xmm1 = xmm1 + xmm2) instrukcja SSE dodawanie czterech par liczb pojedynczej precyzji vaddps ymm1, ymm2, ymm3 ; (ymm1 = ymm2 + ymm3) instrukcja AVX dodawanie ośmiu par liczb pojedynczej precyzji Typ asemblerowy YMMWORD Język C VADDPS m256 _mm256_add_ps ( m256 a, m256 b); ADDPS m128 _mm_add_ps ( m128 a, m128 b);

Intel Xeon Phi

Archiektura rdzenia

Intel Xeon Phi - pamięć

Architektura oprogramowania

Wydajność

Systemy MIMD Ze wspólną pamięcią Z pamięcią rozproszoną Z rozproszoną pamięcią wspólną

MIMD z pamięcią wspólną Procesory P1, P2,..., Pn P1 P2 Pn Sieć połączeń Pamięć

MIMD z pamięcią rozproszoną Węzeł 1 Węzeł 2 Węzeł 3 Pamięć lokalna Pamięć lokalna Pamięć lokalna Procesor Procesor Procesor Układy we/wy Układy we/wy Układy we/wy System przesyłania komunikatów

MIMD z rozproszoną pamięcią wspólną

Architektura klastra Klaster Połączenie niezależnych komputerów przy użyciu sieci komputerowej w celu dostarczenia wspólnej usługi Serwery high-end Bazy danych, serwery plików, web serwery, symulacje, itp. Potrzeba wysokiej dostępności, łatwej lokalizacji uszkodzeń i żądanej niezawodności Potrzeba skalowalności

Zalety klastrów Izolacja błędów Oddzielna przestrzeń adresowa ogranicza rozprzestrzenianie się błędów Naprawa Łatwość wymiany uszkodzonego węzła bez konieczności zatrzymywania systemu Łatwa skalowalność Niski koszt Amazon, AOL, Google, Hotmail, and Yahoo

Wady klastrów Koszty administracji (n maszyn a 1) Połączenia za pomocą I/O (a nie szyny pamięci) Klaster potrzebuje N niezależnych pamięci i n kopii OS

Przykład Czas życia klastra ok. 3 lat Twórcy: Larry Page i Sergey Brin (09.98) W swoich bazach Google przechowuje informacje (01/2007) o 8 miliardach obiektów, w tym 4,3 miliarda stron WWW, 880 milionów obrazków oraz 850 milionów wiadomości z grup dyskusyjnych. Większość systemu została napisana w C lub C++ i działa na komputerach wyposażonych w system Linux

Architektura klastra Engine wyszukiwarki wymaga wysokiej liczby obliczeń na pojedyncze żądanie Pojedyncze żądanie w Google (średnio) odczyt rzędu setek MB danych pochłania ok. 10 bilionów cyklów CPU Szczytowe wymagania (peak request) Tysiące żądań w ciągu sekundy Wymagana jest dekompozycja i porównywalny rozmiar z superkomputerami

Systemy Obliczeniowe Wysokiej Wydajności High Performance Computing Techniques Supercomputers Clusters Grid Systems Custom build Shared memory processing (SMP) Not-parallelizable problems Optimized processors Use parallelism Consists of more than one computers Distributed memory processing Internet is the computer No geographical limitations

Architektura klastra Google Połączone ~15,000 zwykłych PC ów Zamiast mniejszej liczby serwerów (high-end) Najważniejsze czynniki brane pod uwagę przy projektowaniu Pobór energii Współczynnik cena/wydajność Aplikacja Google pozwala na łatwe zrównoleglenie Różne zapytania mogą być wykonane na różnych procesorach Pojedyncze pytanie może używać wielu procesorów ponieważ cały index jest podzielony

Wymagania Projektowany pod kątem uzyskania najlepszej średniej przepustowości a nie najkrótszego czasu odpowiedzi Niezawodność Bazuje na poziomie oprogramowania a nie na poziomie sprzętu Możliwe więc wykorzystanie zwykłych PC (niska cena) Budowanie niezawodnego przetwarzania na bazie klastra zawodnych (niewiarygodnych) PC

Wykonanie zapytania Załóżmy zapytanie (żądanie) www.google.com/search?q=zadania+ak Przeglądarka Generuje zapytanie do Systemu Rozwiązywania Nazw - Domain Name System (DNS) aby dokonać mapowania nazwy na konkretny adres IP

Wykonanie zapytania Nadrzędny DNS jest rozproszony pod względem geograficznym i również wykonany w postaci klastrów Zabezpiecza przed wystąpieniem awarii katastroficznej Systemy DNS są to systemy równoważące obciążenie (load-balancing) i wybierają klaster zgodnie z Aproksymacją geograficzną użytkownika Dostępną pojemnością przetwarzania żądań na różnych klastrach Przeglądarka Wysyła zapytanie HTTP do jednego z klastrów google Żądanie trafia do tzw. front-end computer kierującego ruchem zapytań

Ścieżka wykonania zapytania Front-end jest wyposażony w sprzętowy load-balancer Monitoruje dostępne Google Web Servers (GWSs) Dokonuje przekierowanie zapytania do jednego z GWS Maszyna GWS Koordynuje wykonanie zapytania Generuje rezultat w postaci kodu HTML

Schemat blokowy google

Przetwarzanie zapytania w klastrze Fazy wykonania zapytania Serwer indeksowy wyznacza odpowiednie dokumenty Korzysta z tzw. Odwróconego indeksu Wyzwanie w połączeniu z dużą ilością danych Surowe dokumenty -> kilka dziesiątek TB danych Inverted index -> również rzędu TB of data Szukając w sposób wysoce równoległy Podział zbioru indeksów na części - udziały (index shards) Dla każdego udziału, przepytanie dokonane przez inną maszynę Serwer dokumentów określa faktyczne adresy URL i generuje odpowiedz na udział

Zasady projektowania klastrów google Zapewnienie niezawodności przez oprogramowanie Bez wsparcia sprzętowego dodatkowych zasilaczy. Lepszych pamięci czy macierzy dyskowych RAID. Użycie replikacji Price/performance a nie peak performance Użycie zwykłych PC zmniejsza koszty przetwarzania

Pierwszy sewer google Computer History Museum (od 1999) Każdy tray zawierał 8x22GB HDD i jeden zasilacz

Budowa Google s racks Od 40 do 80 serwerów klasy x86 Serwery zbliżone do desktopowych PC ze średniej półki za wyjątkiem dużej przestrzeni dyskowej Zakres (2003) od 533-MHz Intel-Celeron do dual 1.4-GHz Intel Pentium III Połączenia w rack ach przez 100 Mbps Ethernet Wszystkie rack i połączone przez gigabit switch

Koszt Zestawienie kosztów klastra i komputera klasy mainframe Rack -> 176 2-GHz Xeon CPUs + 176 Gbytes RAM + 7 Tbytes of disk space = $278,000 Server -> 8 2-GHz Xeon CPUs + 64 Gbytes RAM + 8 Tbytes of disk space = $758,000

Problemy energetyczne Serwery z dwoma procesorami 1.4- GHz Pentium III 90 W 55 W 2 CPUs 10 W - HDD 25 W DRAM i płyta główna Wydajność zasilacza (typowa) 75% 120 W zasilacz per server ok 10 kw per rack

Problemy energetyczne Szafa (rack) Zajmuje 25 ft2 (2,32 m2) Oznacza to oddaną moc rzędu 400 W/ ft2 Dla lepszych procesorów 700 W/ft2 Zalecana moc oddana dla komercyjnych składnic danych 70-150 W/ft2 Konieczność dodatkowego chłodzenia i klimatyzacja Można użyć procesorów z redukcją mocy ale nie można zauważyć spadku wydajności i wzrostu kosztów

Charakterystyka sprzętowa Umiarkowanie wysoki CPI Pentium III ma możliwość wykonania 3 instrukcji/cykl Jednak występuje znacząca liczba trudnych do przewidzenia skoków Trawersowanie po dynamicznych strukturach danych Kontrola sterowania zależna od danych W nowszych procesor Pentium 4 To samo obciążenie, CPI jest zbliżone lub mniejsze Pomimo, że Pentium 4 Ma możliwość wykonywania większej liczby instrukcji równolegle i dysponuje lepszą logiką predykcji Google (oprogramowanie) nie wykorzystują możliwości instrukcji równoległych

Charakterystyka sprzętowa Zrównoleglenie uzyskuje się w sposób programowy Kolejkując procesy żądań i przypisując je do węzłów w klastrze Wykorzystując zrównoleglenie wątków i procesów na poziomie sprzętowym Procesory z Simultaneous multithreading (SMT) 30% wzrostu wydajności Architektury wielordzeniowe (multicore)

Pamięć podręczna Dobra wydajność dla pamięci podręcznej instrukcji i TLB instrukcji w związku z relatywnie małymi rozmiarami pętli kodu Bloki danych indeksowanych Brak lokalności czasowej ze względu na rozmiar danych i nieprzewidywalny wzorzec wyszukiwanych danych Korzyści lokalność przestrzennej możliwość użycia dłuższego wiersza w cache u

Pamięć RAM Przepustowość pamięci RAM nie jest tutaj wąskim gardłem Odpowiednia pamięć dla odczytu Relatywnie mały rozmiar L2 cache Krótkie CL przy dostępie do L2 cache i RAM Dłuższe (od 128 bajtów) wiersze (linie) w pamięci cache

Podsumowanie Infrastruktura Google Rozproszone systemy MIMD Ogromnej wielkości klaster tanich maszyn Indeksacja danych pozwala na zmniejszenie liczby komunikatów przesyłanych przez sieć łatwe zarządzanie równoważeniem obciążenia Łatwiejsze zarządzanie systemem i mniejsze koszty ewentualnej awarii Oprogramowanie zostało wyprodukowane przez studentów