Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00159 008297 11000317 na godz. na dobę w sumie
Strukturalna organizacja systemów komputerowych. Wydanie V - książka
Strukturalna organizacja systemów komputerowych. Wydanie V - książka
Autor: Liczba stron: 864
Wydawca: Helion Język publikacji: polski
ISBN: 83-246-0238-0 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> systemy operacyjne >> inne
Porównaj ceny (książka, ebook, audiobook).

Doskonałe omówienie zasad działania współczesnych komputerów

Dla większości użytkowników komputerów, nawet tych, dla których komputer jest narzędziem pracy, wiedza o tym urządzeniu kończy się na umiejętności instalowania i uruchamiania aplikacji. Współczesne, intuicyjne systemy operacyjne, technologie maksymalnie upraszczające pracę z komputerem, łatwe w obsłudze aplikacje -- wszystko to powoduje, że znajomość zasad funkcjonowania komputerów wydaje się nam niepotrzebna. Tymczasem taka wiedza może okazać się przydatna nie tylko specjaliście, ale również zwykłemu użytkownikowi. Dzięki niej twórcy aplikacji są w stanie zoptymalizować ich działanie i zrozumieć przyczyny błędów, projektanci urządzeń peryferyjnych wybrać najlepszy sposób komunikacji swojego produktu z komputerem, a osoby zainteresowane kupnem nowego sprzętu dokonać świadomego wyboru.

W książce 'Strukturalna organizacja systemów komputerowych. Wydanie V' zaprezentowano system komputerowy w ujęciu hierarchicznym, jako zespół zależnych od siebie warstw. Poznajemy go, poczynając od poziomu 'logiki cyfrowej', poprzez mikroarchitekturę i poziom maszynowy, aż do poziomu systemu operacyjnego i języka asemblera. Książka przedstawia również historię rozwoju komputerów, zadania systemów operacyjnych, zasady programowania w języku maszynowym oraz architektury najpopularniejszych procesorów.

Dowiedz się jak działa Twój komputer.

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

IDZ DO IDZ DO PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ SPIS TREŒCI SPIS TREŒCI KATALOG KSI¥¯EK KATALOG KSI¥¯EK KATALOG ONLINE KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK TWÓJ KOSZYK DODAJ DO KOSZYKA DODAJ DO KOSZYKA CENNIK I INFORMACJE CENNIK I INFORMACJE ZAMÓW INFORMACJE ZAMÓW INFORMACJE O NOWOŒCIACH O NOWOŒCIACH ZAMÓW CENNIK ZAMÓW CENNIK CZYTELNIA CZYTELNIA FRAGMENTY KSI¥¯EK ONLINE FRAGMENTY KSI¥¯EK ONLINE Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl Strukturalna organizacja systemów komputerowych. Wydanie V Autor: Andrew S. Tanenbaum T³umaczenie: Andrzej Gra¿yñski (rozdz. 6–9, dod. A– C), Pawe³ Koronkiewicz (przedmowa, rozdz. 1–5) ISBN: 83-246-0238-0 Tytu³ orygina³u: Structured Computer Organization (5th Edition) Format: B5, stron: 864 Doskona³e omówienie zasad dzia³ania wspó³czesnych komputerów (cid:129) Dowiedz siê, jak dzia³aj¹ procesory i magistrale (cid:129) Poznaj regu³y algebry logiki (cid:129) Odkryj tajemnice wspó³czesnych systemów operacyjnych Dla wiêkszoœci u¿ytkowników komputerów, nawet tych, dla których komputer jest narzêdziem pracy, wiedza o tym urz¹dzeniu koñczy siê na umiejêtnoœci instalowania i uruchamiania aplikacji. Wspó³czesne, intuicyjne systemy operacyjne, technologie maksymalnie upraszczaj¹ce pracê z komputerem, ³atwe w obs³udze aplikacje — wszystko to powoduje, ¿e znajomoœæ zasad funkcjonowania komputerów wydaje siê nam niepotrzebna. Tymczasem taka wiedza mo¿e okazaæ siê przydatna nie tylko specjaliœcie, ale równie¿ zwyk³emu u¿ytkownikowi. Dziêki niej twórcy aplikacji s¹ w stanie zoptymalizowaæ ich dzia³anie i zrozumieæ przyczyny b³êdów, projektanci urz¹dzeñ peryferyjnych wybraæ najlepszy sposób komunikacji swojego produktu z komputerem, a osoby zainteresowane kupnem nowego sprzêtu dokonaæ œwiadomego wyboru. W ksi¹¿ce „Strukturalna organizacja systemów komputerowych. Wydanie V” zaprezentowano system komputerowy w ujêciu hierarchicznym, jako zespó³ zale¿nych od siebie warstw. Poznajemy go, poczynaj¹c od poziomu „logiki cyfrowej”, poprzez mikroarchitekturê i poziom maszynowy, a¿ do poziomu systemu operacyjnego i jêzyka asemblera. Ksi¹¿ka przedstawia równie¿ historiê rozwoju komputerów, zadania systemów operacyjnych, zasady programowania w jêzyku maszynowym oraz architektury najpopularniejszych procesorów. (cid:129) Procesory i pamiêæ operacyjna (cid:129) Wykonywanie rozkazów jêzyka maszynowego (cid:129) Operacje wejœcia i wyjœcia (cid:129) Arytmetyka cyfrowa (cid:129) Magistrale ISA, PCI oraz PCI Express (cid:129) Przetwarzanie danych przez procesory (cid:129) Programowanie w jêzyku asemblera (cid:129) Dzia³anie systemów operacyjnych (cid:129) Przetwarzanie rozproszone i obliczenia równoleg³e Dowiedz siê jak dzia³a Twój komputer SPIS TREŚCI O autorze ..............................................................................................................13 Przedmowa do wydania polskiego .....................................................................15 Przedmowa ..........................................................................................................19 1. Wprowadzenie .....................................................................................................23 1.1. Strukturalna organizacja komputera .......................................................................................................24 1.1.1. Języki, poziomy i maszyny wirtualne .......................................................................................24 1.1.2. Współczesne komputery wielopoziomowe ...............................................................................26 1.1.3. Ewolucja komputerów wielopoziomowych ..............................................................................29 1.2. Kamienie milowe architektury komputerów ..........................................................................................34 1.2.1. Generacja 0 — komputery mechaniczne (1642 – 1945) ...........................................................36 1.2.2. Pierwsza generacja — lampy próżniowe (1945 – 1955) ...........................................................38 1.2.3. Druga generacja — tranzystory (1955 – 1965) .........................................................................40 1.2.4. Trzecia generacja — układy scalone (1965 – 1980) .................................................................43 1.2.5. Czwarta generacja — bardzo duża skala integracji (1980 – ?) .................................................44 1.2.6. Piąta generacja — niewidzialne komputery ..............................................................................47 1.3. Komputerowe zoo ..................................................................................................................................48 1.3.1. Siły techniczne i ekonomiczne .................................................................................................48 1.3.2. Rodzaje komputerów ................................................................................................................50 1.3.3. Komputery jednorazowego użytku ...........................................................................................50 1.3.4. Mikrosterowniki .......................................................................................................................52 1.3.5. Komputery do gier ....................................................................................................................54 1.3.6. Komputery osobiste ..................................................................................................................55 1.3.7. Serwery .....................................................................................................................................56 1.3.8. Grupy stacji roboczych .............................................................................................................56 1.3.9. Komputery mainframe ..............................................................................................................56 1.4. Rodziny komputerów — przykłady .......................................................................................................57 1.4.1. Pentium 4 ..................................................................................................................................58 1.4.2. UltraSPARC III ........................................................................................................................63 1.4.3. 8051 ..........................................................................................................................................64 1.5. Komputerowe jednostki miar .................................................................................................................66 1.6. Układ książki ..........................................................................................................................................67 6 SPIS TREŚCI 2. Organizacja systemów komputerowych ...........................................................71 2.1. Procesory ................................................................................................................................................71 2.1.1. Organizacja jednostki centralnej ...............................................................................................72 2.1.2. Wykonanie rozkazu ..................................................................................................................73 2.1.3. RISC i CISC .............................................................................................................................77 2.1.4. Reguły projektowania współczesnych komputerów .................................................................78 2.1.5. Równoległość na poziomie rozkazów ......................................................................................80 2.1.6. Równoległość na poziomie procesorów ...................................................................................84 2.2. Pamięć główna .......................................................................................................................................88 2.2.1. Bity ...........................................................................................................................................88 2.2.2. Adresowanie pamięci ...............................................................................................................89 2.2.3. Porządek bajtów .......................................................................................................................90 2.2.4. Kody korekcji błędów ..............................................................................................................92 2.2.5. Pamięć podręczna .....................................................................................................................96 2.2.6. Obudowy i typy pamięci ...........................................................................................................99 2.3. Pamięć pomocnicza ..............................................................................................................................100 2.3.1. Hierarchie pamięci ..................................................................................................................100 2.3.2. Dyski magnetyczne .................................................................................................................101 2.3.3. Dyskietki ................................................................................................................................104 2.3.4. Dyski IDE ...............................................................................................................................105 2.3.5. Dyski SCSI .............................................................................................................................107 2.3.6. Macierze RAID ......................................................................................................................108 2.3.7. Dyski CD-ROM ......................................................................................................................112 2.3.8. Nagrywalne dyski CD ............................................................................................................116 2.3.9. Dyski CD wielokrotnego zapisu .............................................................................................118 2.3.10. Dyski DVD .............................................................................................................................118 2.3.11. Blu-Ray ..................................................................................................................................120 2.4. Urządzenia wejścia-wyjścia .................................................................................................................121 2.4.1. Magistrale ...............................................................................................................................121 2.4.2. Terminale ................................................................................................................................124 2.4.3. Myszy .....................................................................................................................................128 2.4.4. Drukarki ..................................................................................................................................130 2.4.5. Wyposażenie telekomunikacyjne ............................................................................................135 2.4.6. Cyfrowe aparaty fotograficzne ...............................................................................................143 2.4.7. Kody znakowe ........................................................................................................................145 2.5. Podsumowanie .....................................................................................................................................149 3. Poziom układów logicznych .............................................................................153 3.1. Bramki i algebra Boole’a .....................................................................................................................153 3.1.1. Bramki ....................................................................................................................................154 3.1.2. Algebra Boole’a ......................................................................................................................156 3.1.3. Implementacja funkcji logicznych ..........................................................................................158 3.1.4. Równoważność układów logicznych ......................................................................................160 3.2. Podstawowe układy cyfrowe ................................................................................................................163 3.2.1. Układy scalone .......................................................................................................................163 3.2.2. Układy kombinacyjne .............................................................................................................165 3.2.3. Układy arytmetyczne ..............................................................................................................170 3.2.4. Zegary .....................................................................................................................................174 SPIS TREŚCI 7 3.3. Pamięć ..................................................................................................................................................175 3.3.1. Zatrzaski .................................................................................................................................176 3.3.2. Przerzutniki ............................................................................................................................178 3.3.3. Rejestry ...................................................................................................................................180 3.3.4. Organizacja pamięci ...............................................................................................................182 3.3.5. Układy pamięci .......................................................................................................................184 3.3.6. Pamięci ROM i RAM .............................................................................................................187 3.4. Układy procesorów i magistrale ...........................................................................................................190 3.4.1. Układy procesorów .................................................................................................................190 3.4.2. Magistrale ...............................................................................................................................192 3.4.3. Szerokość magistrali ...............................................................................................................195 3.4.4. Taktowanie magistrali ............................................................................................................196 3.4.5. Arbitraż magistrali ..................................................................................................................201 3.4.6. Operacje magistrali .................................................................................................................204 3.5. Przykładowe układy procesorów ..........................................................................................................206 3.5.1. Pentium 4 ................................................................................................................................206 3.5.2. UltraSPARC III ......................................................................................................................212 3.5.3. 8051 ........................................................................................................................................216 3.6. Przykładowe magistrale .......................................................................................................................218 3.6.1. Magistrala ISA ........................................................................................................................219 3.6.2. Magistrala PCI ........................................................................................................................220 3.6.3. PCI Express ............................................................................................................................228 3.6.4. Universal Serial Bus ...............................................................................................................233 3.7. Interfejs wejścia-wyjścia ......................................................................................................................236 3.7.1. Układy wejścia-wyjścia ..........................................................................................................237 3.7.2. Dekodowanie adresów ............................................................................................................238 3.8. Podsumowanie .....................................................................................................................................241 4. Poziom mikroarchitektury ...............................................................................247 4.1. Przykładowa mikroarchitektura ...........................................................................................................247 4.1.1. Ścieżka danych .......................................................................................................................249 4.1.2. Mikrorozkazy .........................................................................................................................254 4.1.3. Wykonywanie mikroprogramów: Mic-1 ................................................................................257 4.2. Przykładowy poziom maszynowy: IJVM ................................................................................................262 4.2.1. Stosy .......................................................................................................................................262 4.2.2. Model pamięci maszyny IJVM ...............................................................................................264 4.2.3. Lista rozkazów IJVM .............................................................................................................266 4.2.4. Kompilowanie języka Java do postaci IJVM ..........................................................................269 4.3. Przykładowy poziom realizacji ............................................................................................................271 4.3.1. Notacja mikrorozkazów ..........................................................................................................271 4.3.2. Implementacja IJVM w architekturze Mic-1 ..........................................................................276 4.4. Projektowanie poziomu mikroarchitektury ..........................................................................................288 4.4.1. Szybkość a koszt .....................................................................................................................288 4.4.2. Skracanie ścieżki wykonania ..................................................................................................291 4.4.3. Wstępne pobieranie rozkazów: Mic-2 ....................................................................................297 4.4.4. Konstrukcja potokowa: Mic-3 ................................................................................................301 4.4.5. Potok siedmiostopniowy: Mic-4 .............................................................................................306 4.5. Poprawianie wydajności mikroarchitektury .........................................................................................309 4.5.1. Pamięć podręczna ...................................................................................................................310 4.5.2. Przewidywanie rozgałęzień ....................................................................................................316 4.5.3. Wykonywanie rozkazów poza kolejnością i przemianowywanie rejestrów ...........................321 4.5.4. Wykonanie spekulatywne .......................................................................................................327 8 SPIS TREŚCI 4.6. Przykłady mikroarchitektury ................................................................................................................329 4.6.1. Mikroarchitektura procesora Pentium 4 ..................................................................................330 4.6.2. Mikroarchitektura procesora UltraSPARC III Cu ...................................................................335 4.6.3. Mikroarchitektura procesora 8051 ..........................................................................................340 4.7. Porównanie przykładowych mikroarchitektur ......................................................................................342 4.8. Podsumowanie .....................................................................................................................................344 5. Konwencjonalny poziom maszynowy (ISA) ...................................................349 5.1. Ogólny przegląd poziomu ISA .............................................................................................................351 5.1.1. Własności konwencjonalnego poziomu maszynowego ..........................................................351 5.1.2. Modele pamięci ......................................................................................................................353 5.1.3. Rejestry ...................................................................................................................................355 5.1.4. Rozkazy ..................................................................................................................................357 5.1.5. Poziom maszynowy procesora Pentium 4 ..............................................................................357 5.1.6. Poziom maszynowy procesora UltraSPARC III .....................................................................359 5.1.7. Konwencjonalny poziom maszynowy procesora 8051 ...........................................................363 5.2. Typy danych .........................................................................................................................................366 5.2.1. Dane numeryczne ...................................................................................................................366 5.2.2. Dane nienumeryczne ..............................................................................................................367 5.2.3. Typy danych procesora Pentium 4 ..........................................................................................368 5.2.4. Typy danych procesora UltraSPARC III ................................................................................369 5.2.5. Typy danych procesora 8051 ..................................................................................................369 5.3. Formaty rozkazów ................................................................................................................................370 5.3.1. Kryteria projektowania formatu rozkazów .............................................................................371 5.3.2. Rozszerzalne kody operacji ....................................................................................................373 5.3.3. Formaty rozkazów procesora Pentium 4 .................................................................................375 5.3.4. Formaty rozkazów procesora UltraSPARC III .......................................................................376 5.3.5. Formaty rozkazów procesora 8051 .........................................................................................377 5.4. Adresowanie .........................................................................................................................................378 5.4.1. Tryby adresowania .................................................................................................................378 5.4.2. Adresowanie natychmiastowe ................................................................................................379 5.4.3. Adresowanie bezpośrednie .....................................................................................................379 5.4.4. Adresowanie rejestrowe ..........................................................................................................379 5.4.5. Adresowanie pośrednie rejestrowe .........................................................................................380 5.4.6. Adresowanie indeksowe .........................................................................................................381 5.4.7. Adresowanie indeksowe z wartością bazową .........................................................................383 5.4.8. Adresowanie stosowe .............................................................................................................383 5.4.9. Tryby adresowania w rozkazach rozgałęzień .........................................................................386 5.4.10. Ortogonalność kodów operacji i trybów adresowania ............................................................387 5.4.11. Tryby adresowania procesora Pentium 4 ................................................................................389 5.4.12. Tryby adresowania procesora UltraSPARC III ......................................................................391 5.4.13. Tryby adresowania procesora 8051 ........................................................................................391 5.4.14. Porównanie trybów adresowania ............................................................................................392 5.5. Typy rozkazów .....................................................................................................................................393 5.5.1. Rozkazy do przenoszenia danych ...........................................................................................393 5.5.2. Operacje dwuargumentowe ....................................................................................................394 5.5.3. Operacje jednoargumentowe ..................................................................................................395 5.5.4. Porównania i skoki warunkowe ..............................................................................................398 5.5.5. Rozkazy wywoływania procedur ............................................................................................399 5.5.6. Sterowanie wykonywaniem pętli ............................................................................................400 SPIS TREŚCI 9 5.5.7. Wejście-wyjście ......................................................................................................................402 5.5.8. Rozkazy procesora Pentium 4 .................................................................................................405 5.5.9. Rozkazy procesora UltraSPARC III .......................................................................................410 5.5.10. Rozkazy procesora 8051 .........................................................................................................413 5.5.11. Porównanie zestawów rozkazów ............................................................................................416 5.6. Sterowanie ............................................................................................................................................417 5.6.1. Sterowanie sekwencyjne i skoki .............................................................................................417 5.6.2. Procedury ................................................................................................................................419 5.6.3. Współprogramy ......................................................................................................................424 5.6.4. Pułapki ....................................................................................................................................426 5.6.5. Przerwania ..............................................................................................................................427 5.7. Szczegółowy przykład — rozwiązanie problemu wież z Hanoi w języku asemblera ..........................431 5.7.1. Rozwiązanie problemu wież z Hanoi w języku asemblera Pentium 4 ....................................432 5.7.2. Rozwiązanie problemu wież z Hanoi w języku asemblera UltraSPARC III ...........................434 5.8. Architektura IA-64 i procesor Itanium 2 ..............................................................................................437 5.8.1. Problemy związane z architekturą Pentium 4 .........................................................................437 5.8.2. Model IA-64: jawne zrównoleglenie rozkazów (EPIC) ..........................................................439 5.8.3. Redukowanie liczby odwołań do pamięci ..............................................................................439 5.8.4. Szeregowanie rozkazów .........................................................................................................440 5.8.5. Redukcja skoków warunkowych — predykcja .......................................................................442 5.8.6. Spekulatywne wykonywanie rozkazów LOAD ......................................................................445 5.9. Podsumowanie .....................................................................................................................................445 6. Poziom systemu operacyjnego .........................................................................453 6.1. Pamięć wirtualna ..................................................................................................................................454 6.1.1. Stronicowanie .........................................................................................................................455 6.1.2. Implementacja stronicowania .................................................................................................458 6.1.3. Stronicowanie na żądanie i koncepcja zbioru roboczego ........................................................462 6.1.4. Taktyka wymiany stron ..........................................................................................................463 6.1.5. Rozmiar strony a fragmentacja ...............................................................................................465 6.1.6. Segmentacja ............................................................................................................................466 6.1.7. Implementacja segmentacji ....................................................................................................469 6.1.8. Pamięć wirtualna procesora Pentium 4 ...................................................................................473 6.1.9. Pamięć wirtualna komputera UltraSPARC III ........................................................................479 6.1.10. Pamięć wirtualna a cache’owanie ...........................................................................................482 6.2. Wirtualne instrukcje wejścia-wyjścia ...................................................................................................483 6.2.1. Pliki ........................................................................................................................................484 6.2.2. Implementacja wirtualnych instrukcji wejścia-wyjścia ..........................................................485 6.2.3. Instrukcje zarządzania katalogami plików ..............................................................................489 6.3. Wirtualne instrukcje przetwarzania równoległego ...............................................................................491 6.3.1. Tworzenie procesów ...............................................................................................................492 6.3.2. Problem wyścigu ....................................................................................................................492 6.3.3. Synchronizacja procesów za pomocą semaforów ...................................................................497 6.4. Przykłady systemów operacyjnych ......................................................................................................502 6.4.1. Wprowadzenie ........................................................................................................................502 6.4.2. Przykłady pamięci wirtualnych ..............................................................................................511 6.4.3. Przykłady wirtualnych operacji wejścia-wyjścia ....................................................................515 6.4.4. Przykłady zarządzania procesami ...........................................................................................527 6.5. Podsumowanie .....................................................................................................................................534 10 SPIS TREŚCI 7. Poziom języka asemblera .................................................................................543 7.1. Wprowadzenie do języka asemblera ....................................................................................................544 7.1.1. Czym jest język asemblera? ....................................................................................................544 7.1.2. Dlaczego w ogóle używa się asemblerów? .............................................................................545 7.1.3. Format instrukcji asemblerowych ...........................................................................................548 7.1.4. Pseudoinstrukcje .....................................................................................................................552 7.2. Makra ...................................................................................................................................................555 7.2.1. Definicja, wywołanie i rozwijanie makra ...............................................................................555 7.2.2. Makra z parametrami ..............................................................................................................557 7.2.3. Zaawansowane wykorzystywanie makr ..................................................................................558 7.2.4. Implementacja mechanizmu makr w asemblerach ..................................................................560 7.3. Proces asemblacji .................................................................................................................................561 7.3.1. Asemblery dwuprzebiegowe ...................................................................................................561 7.3.2. Przebieg pierwszy ...................................................................................................................562 7.3.3. Przebieg drugi .........................................................................................................................567 7.3.4. Tablica symboli ......................................................................................................................569 7.4. Konsolidacja i ładowanie programu .....................................................................................................570 7.4.1. Zadania wykonywane przez konsolidator ...............................................................................572 7.4.2. Struktura modułu wynikowego ...............................................................................................575 7.4.3. Czas wiązania i relokacja dynamiczna ....................................................................................576 7.4.4. Łączenie dynamiczne .............................................................................................................579 7.5. Podsumowanie .....................................................................................................................................583 8. Architektury komputerów równoległych .......................................................587 8.1. Zrównoleglenie na poziomie układu scalonego ...................................................................................588 8.1.1. Zrównoleglone wykonywanie rozkazów ................................................................................589 8.1.2. Wielowątkowość na poziomie układu scalonego ...................................................................597 8.1.3. Wieloprocesory jednoukładowe .............................................................................................603 8.2. Koprocesory .........................................................................................................................................609 8.2.1. Procesory sieciowe .................................................................................................................609 8.2.2. Procesory multimedialne ........................................................................................................617 8.2.3. Kryptoprocesory .....................................................................................................................623 8.3. Wieloprocesory ze współdzieloną pamięcią .........................................................................................624 8.3.1. Wieloprocesory a wielokomputery .........................................................................................624 8.3.2. Semantyka współdzielenia pamięci ........................................................................................632 8.3.3. Architektura UMA wieloprocesora symetrycznego ................................................................636 8.3.4. Wieloprocesory NUMA ..........................................................................................................646 8.3.5. Wieloprocesory COMA ..........................................................................................................654 8.4. Wielokomputery przekazujące komunikaty .........................................................................................656 8.4.1. Sieci połączeniowe .................................................................................................................658 8.4.2. MPP — masywnie zrównoleglone procesory .........................................................................661 8.4.3. Obliczenia klastrowe ..............................................................................................................671 8.4.4. Oprogramowanie komunikacyjne dla wielokomputerów .......................................................677 8.4.5. Szeregowanie zadań ...............................................................................................................680 8.4.6. Implementacja współdzielonej pamięci na poziomie aplikacji ...............................................681 8.4.7. Wydajność ..............................................................................................................................689 8.5. Obliczenia siatkowe .............................................................................................................................696 8.6. Podsumowanie .....................................................................................................................................699 SPIS TREŚCI 11 9. Literatura uzupełniająca i bibliografia ...........................................................703 9.1. Propozycje dotyczące dalszej lektury ......................................................................................................703 9.1.1. Wprowadzenie i zagadnienia ogólne ......................................................................................703 9.1.2. Organizacja systemów komputerowych .................................................................................705 9.1.3. Poziom układów logicznych ...................................................................................................706 9.1.4. Poziom mikroarchitektury ......................................................................................................707 9.1.5. Konwencjonalny poziom maszynowy ....................................................................................708 9.1.6. Poziom systemu operacyjnego ................................................................................................709 9.1.7. Poziom języka asemblera .......................................................................................................710 9.1.8. Architektury komputerów równoległych ................................................................................710 9.1.9. Liczby binarne i zmiennopozycyjne .......................................................................................712 9.1.10. Programowanie w języku asemblera ......................................................................................713 9.2. Alfabetyczny wykaz cytowanej literatury ............................................................................................713 A Liczby dwójkowe ...............................................................................................727 A.1. Liczby o skończonej precyzji ..............................................................................................................727 A.2. Pozycyjne systemy liczbowe ...............................................................................................................730 A.3. Transformacje liczb między systemami pozycyjnymi .........................................................................731 A.4. Ujemne liczby dwójkowe ....................................................................................................................735 A.5. Arytmetyka dwójkowa ........................................................................................................................737 B Liczby zmiennopozycyjne ................................................................................741 B.1. Zasady arytmetyki zmiennopozycyjnej ...................................................................................................741 B.2. Standard arytmetyki zmiennopozycyjnej IEEE-754 ............................................................................745 C Programowanie w języku asemblera ..............................................................751 C.1. Wprowadzenie .....................................................................................................................................752 C.1.1. Język asemblera .....................................................................................................................752 C.1.2. Prosty program w języku asemblera ......................................................................................753 C.2. Procesor 8088 ......................................................................................................................................754 C.2.1. Cykl procesora .......................................................................................................................755 C.2.2. Rejestry uniwersalne ..............................................................................................................755 C.2.3. Rejestry wskaźnikowo-indeksowe .........................................................................................757 C.3. Pamięć i jej adresowanie .....................................................................................................................760 C.3.1. Organizacja pamięci i segmenty ............................................................................................760 C.3.2. Adresowanie ..........................................................................................................................762 C.4. Zestaw instrukcji procesora 8088 ........................................................................................................767 C.4.1. Instrukcje przesyłania danych i instrukcje arytmetyczne .......................................................770 C.4.2. Operacje logiczne, bitowe i przesunięcia ...............................................................................773 C.4.3. Instrukcje pętli i iterowane instrukcje łańcuchowe ................................................................774 C.4.4. Skoki i wywołania podprogramów ........................................................................................776 C.4.5. Wywołania podprogramów ....................................................................................................777 C.4.6. Wywołania systemowe i procedury systemu .........................................................................779 C.4.7. Dodatkowe uwagi na temat instrukcji procesora 8088 ...........................................................782 12 SPIS TREŚCI C.5. Asembler .............................................................................................................................................783 C.5.1. Wprowadzenie .......................................................................................................................783 C.5.2. Asembler as88 (ACK) ............................................................................................................784 C.5.3. Asembler as88 a inne asemblery dla procesora 8088 .............................................................788 C.6. Program śledzący ................................................................................................................................790 C.6.1. Polecenia programu śledzącego .............................................................................................792 C.7. Zaczynamy! .........................................................................................................................................794 C.8. Przykłady .............................................................................................................................................795 C.8.1. Hello World ...........................................................................................................................796 C.8.2. Wykorzystanie rejestrów uniwersalnych ................................................................................799 C.8.3. Instrukcja CALL i rejestry wskaźnikowe ...............................................................................800 C.8.4. Debugowanie programu drukującego elementy wektora .......................................................804 C.8.5. Manipulowanie łańcuchami i instrukcje łańcuchowe .............................................................807 C.8.6. Tablice sterujące ....................................................................................................................811 C.8.7. Buforowany i swobodny dostęp do plików ............................................................................813 Skorowidz ..........................................................................................................819 5 8 Architektury komputerów równoległych Chociaż komputery wciąż stają się coraz szybsze, stawiane przed nimi wymagania rosną jeszcze szybciej — apetyt zwiększa się w miarę jedzenia. Astronomowie pragną poznać — poprzez symulację — całą historię wszechświata, od Wielkiego Wybuchu aż do chwil ostatecznych; w badaniach farmaceutycznych, w dążeniu do wynajdywania leków na wszelkie dolegliwości, z pewnością bardziej humanitarne jest drenowanie procesorów niż poświęcanie co rusz kolejnych legionów szczurów, myszy i innych przemiłych zwierzątek. W badaniach nad coraz bardziej ekonomicznymi silnikami do samolotów (i rakiet) modelowanie komputerowe jest szybsze i tańsze niż budowanie wymyślnych tuneli aerodynamicznych. A fizycy różnych specjalności potrafią „zarżnąć” każdy komputer… Mimo iż szybkość procesorów z roku na rok staje się ewidentnie coraz większa, nie może ona przecież rosnąć nieograniczenie: skończona prędkość światła stanowi nieubłaganą granicę, a chłodzenie nowoczesnych procesorów staje się stopniowo dziedziną sztuki inżynierskiej. W dodatku na drodze do zmniejszania rozmiarów tran- zystora (do wielkości porównywalnych z rozmiarami atomów) coraz wyraźniejszą przeszkodą okazują się zjawiska kwantowe, z zasadą nieoznaczoności Heisenberga na czele. W dążeniu do zapewnienia coraz większej szybkości obliczeń należy zatem się- gnąć po alternatywę, jaką jest konstruowanie komputerów równoległych. Choć trudno wyobrazić sobie dziś procesor o cyklu rozkazowym 0,001 nanosekundy, całkiem realne jest zbudowanie komputera złożonego z tysiąca procesorów o cyklu 1 nanosekundy, tańszego i dającego porównywalną moc obliczeniową. Zrównoleglenie może być wprowadzane na różnych poziomach konstrukcyj- nych. Na najniższym poziomie — układu scalonego procesora (on-chip) — realizo- wane jest ono bądź to w sposób ukryty, za pomocą pracy potokowej (pipelining) i technik superskalarnych z wieloma podzespołami funkcjonalnymi, bądź też w sposób jawny, przez pakowanie wielu rozkazów w długie słowa maszynowe. Ponadto, w procesory można wbudowywać specjalne mechanizmy umożliwiające realizację kilku wątków 588 ROZDZIAŁ 8. (cid:122) ARCHITEKTURY KOMPUTERÓW RÓWNOLEGŁYCH równocześnie, bądź nawet umieszczać kilka kompletnych procesorów w ramach pojedynczego układu scalonego. W chwili obecnej techniki te pozwalają na uzyski- wanie wydajności dziesięciokrotnie (w przybliżeniu) większej od tej oferowanej przez rozwiązania czysto sekwencyjne. Kolejny poziom realizacji zrównoleglenia to różnej maści układy rozszerzające, wykonujące rozmaite funkcje specjalizowane: przetwarzanie pakietów sieciowych, szyfrowanie i deszyfracja, obsługa strumieni multimedialnych itp. Układy takie umoż- liwiają pięcio-, a nawet dziesięciokrotne zwiększenie wydajności1. Pięć czy dziesięć razy szybciej — to swoją drogą i tak interesujące; jeśli jednak rozważamy „prawdziwe” zrównoleglenie zdolne poprawić wydajność przetwarzania setki, tysiące a nawet miliony razy, konieczne jest zwielokrotnienie kompletnych pro- cesorów i zapewnienie ich efektywnej współpracy. Pomysł ten realizowany jest w po- staci komputerów wieloprocesorowych oraz systemów wielokomputerowych (klastrów). Nie trzeba dodawać, że zapewnienie efektywnego współdziałania kilku tysięcy proce- sorów samo z siebie jest niebagatelnym wyzwaniem rodzącym mnóstwo problemów do rozwiązania. Upowszechnienie się internetu stwarza kolejną okazję w postaci możliwości tworzenia olbrzymich sieci połączonych ze sobą komputerów. Pełne wykorzystanie tej możliwości to jednak melodia bliższej i dalszej przyszłości. W opisanych wariantach zrównoleglenia poszczególne elementy systemu w różny sposób muszą być ze sobą powiązane. Jeśli elementy te znajdują się blisko siebie, są od siebie wysoce uzależnione obliczeniowo, a komunikacja między nimi odbywa się z dużą prędkością i małymi opóźnieniami, mamy do czynienia z powiązaniem ści- słym (tight couple); dla odmiany, duże oddalenie geograficzne, wąskie pasmo trans- misji, stosunkowo duże opóźnienie i ograniczona zależność obliczeniowa to znamiona powiązania luźnego (loose couple). W niniejszym rozdziale zajmiemy się analizą rozmaitych rozwiązań zarówno realizujących w pełni opisane cechy, jak i reprezen- tujących koncepcje pośrednie między tymi dwiema skrajnościami, jak pokazano to schematycznie na rysunku 8.1: rozpoczniemy od systemów najbardziej ściśle powią- zanych, realizujących zrównoleglenie ma poziomie układu scalonego, przechodząc stopniowo do systemów powiązanych coraz luźniej, a na obliczeniach siatkowych (grid computing) kończąc. 8.1. ZRÓWNOLEGLENIE NA POZIOMIE UKŁADU SCALONEGO Oczywistym sposobem przyspieszania wszelkich działań jest wykonywanie kilku rze- czy równocześnie. W niniejszym podrozdziale pokażemy, jak pomysł ten realizowany jest na poziomie konstrukcji układu scalonego, poprzez (między innymi) zrównole- glenie wykonywania rozkazów, wielowątkowość i integrowanie kilku (wielu) proce- sorów w pojedynczym układzie scalonym. Techniki te, jakkolwiek różnią się między sobą, wszystkie stanowią wariant wykonywania kilku rzeczy w tym samym czasie. 1 W porównaniu z implementacjami czysto programowymi — przyp. tłum. 8.1. ZRÓWNOLEGLENIE NA POZIOMIE UKŁADU SCALONEGO 589 RYSUNEK 8.1. Różne stopnie powiązań komponentów systemów równoległych: (a) zrównoleglenie na poziomie układu scalonego; (b) koprocesor; (c) komputer wieloprocesorowy; (d) wielokomputer; (e) siatka obliczeniowa 8.1.1. Zrównoleglone wykonywanie rozkazów Jednym ze sposobów osiągnięcia równoległego przetwarzania na najniższym pozio- mie jest wykonywanie kilku rozkazów maszynowych w jednym cyklu zegara. Zadanie to zrealizowane zostało w praktyce na dwa sposoby: w postaci architektury superska- larnej oraz przez użycie długiego słowa rozkazowego. Wspominaliśmy już o tym wcze- śniej w niniejszej książce, nie zaszkodzi jednak dla przypomnienia powrócić w tym miejscu do faktów najważniejszych. Architekturę procesora superskalarnego widzieliśmy już na rysunku 2.5. W więk- szości przypadków, na pewnym stopniu potoku rozkaz jest gotowy do wykonania. Procesory superskalarne posiadają możliwość jednoczesnego realizowania kilku roz- kazów, każdego na innym etapie obróbki; liczba rozkazów znajdujących się jednocze- śnie w „obróbce” zależy zarówno od cech projektowych konkretnego procesora, jak i bieżących uwarunkowań. Maksymalna liczba jednocześnie realizowanych rozkazów zdeterminowana jest przez sprzęt i zazwyczaj waha się w granicach od dwóch do sze- ściu; oczywiście, wykonywanie rozkazu nie może być kontynuowane, jeśli musi on skorzystać z niedostępnego aktualnie bloku funkcjonalnego bądź też wykorzystać wynik poprzednich obliczeń, który to wynik nie jest jeszcze gotowy. Inny wariant równoległego wykonywania rozkazów zrealizowany został pod po- stacią architektury opartej na długich słowach rozkazowych, oznaczanej skrótem VLIW (Very Long Instruction Word — bardzo długie słowo rozkazowe). W swej oryginalnej formie komputery VLIW faktycznie posiadają długie słowa rozkazowe zawierające rozkazy odwołujące się do wielu różnych bloków funkcjonalnych. Spójrzmy dla przykładu na potok, przedstawiony na rysunku 8.2 (a), gdzie komputer posiada pięć bloków funkcjonalnych i wykonywać może jednocześnie dwie operacje stałopozycyjne, jedną zmiennopozycyjną, jeden odczyt i jeden zapis. Rozkaz tego komputera powinien więc zawierać pięć kodów operacji i pięć operandów — po jednej parze „kod-operand” 590 ROZDZIAŁ 8. (cid:122) ARCHITEKTURY KOMPUTERÓW RÓWNOLEGŁYCH RYSUNEK 8.2. Architektura VLIW: (a) potok procesora; (b) sekwencja rozkazów VLIW; (c) strumień rozkazów ze znacznikami paczek dla każdej jednostki funkcjonalnej. Jeśli przeznaczymy po 6 bitów na każdy kod operacji, po 5 na numer rejestru i po 32 bity na każdy adres pamięci, potrzebujemy ni mniej ni więcej tylko 134 bitów, by to wszystko pomieścić — słowo rozkazowe jest więc istotnie bardzo długie. Projekt ten okazuje się jednak zbyt prymitywny, często się bowiem zdarza, że rozkaz nie jest w stanie skorzystać ze wszystkich potrzebnych bloków funkcjonal- nych, co w praktyce prowadzi do wielu stanów bezczynności, pełniących rolę „wy- pełniaczy”, jak zilustrowano to na rysunku 8.2 (b). W konsekwencji nowoczesne pro- cesory VLIW dysponują funkcją grupowania rozkazów w paczki, przy czym koniec paczki zaznaczany jest explicite np. za pomocą specjalnego bitu, jak na rysunku 8.2 (c); procesor pobiera do wykonania całą paczkę równocześnie. Sama funkcja grupowania „kompatybilnych” rozkazów w paczki zrzucona została na barki kompilatorów, co nie tylko przyczyniło się do uproszczenia sprzętu i zwięk- szenia jego wydajności, lecz także otworzyło drogę do znacznie lepszego grupowania rozkazów w paczki: wszak kompilator optymalizujący może wykonywać swą pracę tak długo, jak będzie to konieczne, w przeciwieństwie do sprzętu, którego operacje są silnie uwarunkowane czasowo. Tak się niestety składa, że radykalne zmiany w archi- tekturze procesorów z trudem torują sobie drogę na rynku, czego jednym z przejawów jest stosunkowo chłodne przyjęcie nowego procesora Itanium. 8.1. ZRÓWNOLEGLENIE NA POZIOMIE UKŁADU SCALONEGO 591 Należy w tym miejscu zaznaczyć, że równoległe wykonywanie rozkazów nie jest bynajmniej jedynym wariantem zrównoleglenia niskopoziomowego; inny wariantem jest zrównoleglenie pamięciowe, w ramach którego wykonywanych jest jednocześnie kilka operacji pamięciowych (Chou i in., 2004). Przykład architektury VLIW — procesor TriMedia W rozdziale piątym poznaliśmy już jeden procesor o architekturze VLIW — Itanium-2; obecnie zaprezentujemy zupełnie inny przykład tej architektury — procesor TriMedia, zaprojektowany i wyprodukowany przez holenderską firmę Philips, słynącą m.in. z wy- nalezienia płyty kompaktowej i dysku CD-ROM. Procesor TriMedia przeznaczony jest do pracy głównie w warunkach intensywnego przetwarzania masowych sygnałów audio i wideo, a więc przede wszystkim w odtwarzaczach CD, DVD i MP3, nagry- warkach CD-R(W) i DVD, kamerach cyfrowych, kamkoderach i systemach telewizji interaktywnej. Nic więc dziwnego, że konstrukcyjnie różni się w sposób zasadniczy od procesora Itanium-2, zaprojektowanego przede wszystkim jako procesor uniwer- salny, na potrzeby wydajnych serwerów. Każdy rozkaz procesora TriMedia zawiera do pięciu operacji; w szczególnie sprzyjających warunkach możliwe jest przekazanie do wykonania jednego rozkazu i równoległa realizacja czterech innych w jednym cyklu zegara. Częstotliwość zegara taktującego wynosi 266 lub 300 MHz, lecz ze względu na opisane zwielokrotnienie rzeczywista wydajność procesora może być nawet pięciokrotnie większa. W dalszym opisie posłużymy się modelem TM3260 procesora TriMedia; inne modele różnią się od niego stosunkowo niewiele. Format typowego rozkazu procesora pokazano na rysunku 8.3. Rozkazy są zróż- nicowane, od 8-, 16- i 32-bitowych rozkazów całkowitoliczbowych, poprzez rozkazy zmiennopozycyjne zgodne ze standardem IEEE 754, aż do równoległych rozkazów multimedialnych. W konsekwencji przy pięciu równolegle wykonywanych rozkazach i zrównolegleniu operacji multimedialnych procesor TriMedia jest wystarczająco szybki do programowego dekodowania cyfrowego strumienia wideo kamkodera z pełną częstotliwością i przy pełnym rozmiarze ramki. RYSUNEK 8.3. Typowy rozkaz procesora TriMedia, z pięcioma możliwymi operacjami Procesor TriMedia stosuje bajtowe adresowanie pamięci, z rejestrami wejścia- wyjścia mapowanymi w adresy pamięciowe. Adresy półsłów (16-bitowych) i słów (32-bitowych) muszą być wyrównane na naturalnych granicach — odpowiednio wielokrotności 2 i wielokrotności 4 bajtów. Jeśli chodzi o kolejność („starszeństwo”) bajtów w słowie wielobajtowym, to procesor pracować może zarówno w konwencji little-endian, jak i big-endian, zależnie od ustawienia stosownego bitu w słowie PSW, modyfikowalnego jedynie przez system operacyjny. Rozróżnienie między little- endian a big-endian istotne jest tylko dla rozkazów pobierających dane z pamięci do 592 ROZDZIAŁ 8. (cid:122) ARCHITEKTURY KOMPUTERÓW RÓWNOLEGŁYCH rejestrów i zapisujących zawartość rejestrów w pamięci. Procesor wspomagany jest 8-kanałową pamięcią podręczną o organizacji zespołowej (8-way associative-set cache) osobno dla kodu (64 KB) i danych (16 KB); w obydwu przypadkach długość wiersza pamięci wynosi 64 bajty. Procesor posiada 128 rejestrów 32-bitowych ogólnego przeinaczenia. Rejestr R0 ma ustaloną zawartość 0, której zmienić nie można, podobnie rejestr R1 ma ustaloną zawartość 1. Pozostałe rejestry (126) są funkcjonalnie równoważne i mogą być wyko- rzystywane do rozmaitych celów. Dodatkowo w procesorze istnieją cztery specjalne rejestry 32-bitowe: licznik rozkazów, słowo stanu programu (PSW — Program Status Word) i dwa rejestry związane z przerwaniami. Ponadto w specjalnym 64-bitowym rejestrze zliczane są zegarowe cykle pracy procesora od jego ostatniego zresetowania; przy częstotliwości zegara 300 MHz potrzeba prawie 1950 lat, by rejestr ten przepełnić. Procesor TriMedia TM3260 posiada 11 różnych jednostek funkcjonalnych wy- konujących operacje arytmetyczne i logiczne, organizujących przepływ sterowania i nadzorujących cache’owanie zawartości (tej ostatniej funkcji nie będziemy tu oma- wiać). Jednostki te scharakteryzowane zostały pokrótce w tabeli 8.1. Pierwsze dwie kolumny zawierają nazwy2 i krótkie opisy jednostek, w trzeciej wymieniono liczbę sprzętowych egzemplarzy każdej jednostki, w czwartej podano natomiast wartość opóź- nienia (w cyklach zegara), jakiego dana jednostka wymaga do wykonania swej funkcji: należy bowiem pamiętać, że wszystkie wymienione jednostki (oprócz FP sqrt/div) są jednostkami potokowymi i podana wartość jest odstępem czasowym między wprowa- dzeniem informacji do potoku a uzyskaniem wyniku. Niezależnie od opóźnień po- szczególnych jednostek funkcjonalnych, w każdym cyklu zegara może być inicjowane wykonywanie nowego rozkazu, tak więc na przykład każdy z trzech kolejnych rozkazów może zawierać dwie operacje odczytu, w rezultacie czego w danej chwili może być równolegle wykonywanych sześć operacji odczytu, każda na innym etapie realizacji. Pięć ostatnich kolumn tabeli zawiera informację o tym, które ze slotów rozkazu (patrz rysunek 8.3) mogą mieć związek z poszczególnymi jednostkami funkcjonal- nymi — przykładowo operacja porównywania zmiennopozycyjnego może być kodo- wana wyłącznie w slocie nr 3. Jednostka Constant zajmuje się operacjami natychmiastowymi, między innymi pobieraniem stałych kodowanych w rozkazach jako argumenty natychmiastowe (im- mediate). Jednostka Integer ALU wykonuje dodawanie i odejmowanie całkowitolicz- bowe, podstawowe operacje boolowskie oraz operacje pakowania i rozpakowywania operandów. Jednostka Shifter odpowiedzialna jest za przesuwanie zawartości reje- strów we wskazanym kierunku, o wskazaną liczbę bitów. Operacje pobierania danych z pamięci do rejestrów i zapisywania zawartości re- jestrów w pamięci spoczywają w gestii jednostki Load/Store. Pod względem kon- strukcyjnym TriMedia jest rozbudowanym procesorem RISC, w związku z czym wszelkie operacje wykonywane są na rejestrach, zaś jedynymi operacjami pamięcio- wymi są operacje odczytu i zapisu — operacje arytmetyczne i logiczne nie odwołują się do pamięci. Dane wymieniane między rejestrami a pamięcią mogą być przesyłane w porcjach 8-, 16- lub 32-bitowych. W jednostce Int/FP Mul wykonywane jest mnożenie, zarówno całkowitolicz- bowe jak i zmien
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Strukturalna organizacja systemów komputerowych. Wydanie V
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: