Szablon dla tlumaczy
Transkrypt
Szablon dla tlumaczy
Wprowadzenie do Informatyki (WDI), Studia Dzienne Magisterskie mgr inż. Paweł Tadejko Architektura komputera Wiadomości i pojęcia, które należy znać: bit, bajt, procesor, ALU, rejestr, pamięć cache (L1, L2, L3), procesory CISC, RISC, MMX, SSE/SSE2, SIMD Współczesne komputery PC składają się z trzech podstawowych elementów: jednostki centralnej umieszczonej w specjalnej obudowie niezbędnych do pracy z komputerem: monitora i klawiatury dodatkowych urządzeń peryferyjnych podłączanych do jednostki centralnej bit - (Binary digiT) skrótowe określenie pochodzące od angielskiego terminu "binary digit" (liczba binarna); jest najmniejszą jednostką informacji przetwarzanych przez komputer; może przyjmować wartość 0 lub 1; nazwa cyfry dwójkowego systemu liczenia, bit jest stosowany jako jednostka miary dla określenia długości słowa, znaku, pojemności pamięci itp. bajt - (byte) porcja informacji złożona z 8 bitów; podstawowa jednostka pojemności pamięci komputera i wielkości zbiorów danych; fonetyczna transkrypcja nazwy angielskiej "byte"; bajt umożliwia zapamiętanie jednego znaku alfanumerycznego lub dwóch cyfr dziesiętnych; do skrócenia opisu stosuje się większe jednostki miary: Kbajt i Mbajt. Jednostka centralna - Procesor Jest jedną z ważniejszych części komputera. Jest to jedyny element, który przetwarza dane. Z niesamowitą szybkością wykonuje proste operacje arytmetyczne na liczbach binarnych. Pozostałe elementy dostarczają dane do procesora lub odbierają. Procesor przetwarza dane w porcjach 8, 16 obecnie 64 bitowych. Producenci: Intel (Pentium, Celeron), AMD (Athlon, Duron), VIA (Cyrix), Motorolla. Procesory w komputerach osobistych odpowiadają linii procesorów x86. Pierwsze procesory z tej linii to 8086 (XT), następnie 80286 (AT), 80386, 80486. Obecnie używamy procesorów 80585. Nazywają się różnie (Pentium, Athlon) ponieważ nazwy x86 nie były specyficzne i nie można było za ich pomocą rozróżnić producenta. Procesory identyfikujemy za pomocą (poza nazwą) prędkością. Prędkość wyrażamy w Hz (Hercach, czyli ilościach operacji na sekundę) i jednostkach pochodnych kHz, Mhz, GHz. Prędkość ówczesnych procesorów mierzy się głównie w GHz, choć procesory osiągają już prędkość 1GHz (AMD Athlon). Pierwszy procesor Intel 8086 (XT) osiągał prędkość 4,7 MHz. Modele: rodzina x86 8086, AMD, iPentium, iPentium MMX, iPentium Pro iPentium II, Intel Celeron, iPentium III Intel Celeron II, AMD Athlon, AMD Duron, AMD Thunderbird, iPentium IV, Intel Itanium (IA-64), AMD (rodzina Hammer) Łatwo go znaleźć na płycie głównej, gdyż cechuje się sporymi rozmiarami (w stosunku do innych elementów) oraz najczęściej jest zaopatrzony w duży radiator z tzw. coolerem (wiatraczkiem, który go chłodzi). Mimo, iż jest to jeden układ scalony, jego wewnętrzna struktura jest bardzo skomplikowana. Niezależnie od producenta i typu, każdy procesor składa się z kilku podstawowych elementów: - jednostki sterującej, której zadaniem jest wykonywanie instrukcji programu i sterowanie przepływem danych - jednostki arytmetyczno logicznej (ALU – ang. Arithmetic logic unit), która zajmuje się realizowaniem prostych operacji matematycznych (dodawaniem i odejmowaniem liczb całkowitych) oraz porównywaniem prostych formatów danych - zestawu rejestrów, które przechowują dane do których wymagany jest bardzo szybki dostęp - interfejsów magistrali zapewniających łączność procesora ze światem zewnętrznym. Procesor może dodatkowo zawierać pewne dodatkowe elementy: - pamięć cache, w której przechowywane są poprzednie i następne instrukcje, które wykona jednostka sterująca oraz najczęściej używane przez program dane. Pamięć cache dzielimy na cache rozkazów i cache danych. Zwykle mają one rozmiar 32 — 512 KB. Pamięć ta znacznie przyśpiesza działanie programów (łatwo się o tym przekonać Wydział Informatyki, Politechnika Białostocka Strona 1 Wprowadzenie do Informatyki (WDI), Studia Dzienne Magisterskie mgr inż. Paweł Tadejko poprzez jej wyłączenie – można to uzyskać wybierając w BIOS-ie komputera odpowiednią opcję). Wykorzystuje się tu fakt, że większość programów składa się z cyklicznie wykonywanych stosunkowo niewielkich procedur operujących na niewielkiej ilości danych. Dzięki temu wystarczy raz przesłać do procesora potrzebne informacje z wolnej pamięci zewnętrznej (znajdującej się na płycie głównej), następnie jednostka sterująca pobiera potrzebne dane z bardzo szybkiej pamięci cache. Pamięć ta może znajdować się zarówno w procesorze jak i na płycie głównej. Wyróżniamy różne poziomy pamięci cache: L1, L2 i L3. Obecnie praktycznie wykorzystywane są poziomy L1 i L2. - Elementy sterujące poborem mocy procesora. Umożliwiają one wyłączenie części niepotrzebnych układów i spowolnienie zegara procesora, co zmniejsza pobór prądu. Jest to szczególnie ważne w notebookach dzięki czemu można znacznie przedłużyć czas działania komputera bez ładowania baterii. Poniżej opiszemy budowę i działanie procesora. Podział procesorów na dwa podstawowe typy: - procesory RISC (ang. Reduced Instruction Set Computer) - oraz procesory CISC (ang. Complex Instruction Set Computer). Procesory CISC realizują setki instrukcji, dzięki czemu znacznie łatwiej napisać na nie oprogramowanie. Przykładami tego typu procesorów są procesory Intel Pentium, AMD Athlon, Duron itd. Procesory RISC (np. SPARC, MIPS) realizują kilkadziesiąt podstawowych instrukcji. Dzięki temu działają one znacznie szybciej, chociaż są bardziej kłopotliwe w programowaniu. Niektóre mikroprocesory RISC nie zawierają mikrokodu, a rozkazy są bezpośrednio interpretowane przez logikę procesora. Tak naprawdę wspomniane procesory Pentium są procesorami RISC, których program emuluje skomplikowaną listę rozkazów procesorów CISC. Umożliwia to zwiększenie szybkości działania procesora, jednocześnie udostępniając zaawansowaną listę rozkazów ułatwiajacą programowanie. Cechą współczesnych procesorów jest tzw. przetwarzanie potokowe. Ponieważ procesor składa się z kilku niezależnych układów, pewne instrukcje mogą być wykonywane równolegle. Kiedy instrukcja zostanie zdekodowana przez układ kontrolny procesora jej dalszą realizacją zajmuje się inny moduł. W tym czasie jednostka sterująca jest wolna, dzięki przetwarzaniu potokowemu może ona w międzyczasie zająć się interpretacją kolejnej instrukcji. Podobnie w celu zwiększenia mocy obliczeniowej można powielić jednostki ALU. Ponieważ większość operacji matematycznych można przeprowadzać równolegle, w efekcie proces ten zwiększa liniowo moc obliczeniową procesora. Pewnym wyjątkiem są instrukcje warunkowe i skoki. Ponieważ w tym przypadku wykonywanie kolejnych instrukcji zależne jest od wyniku poprzedniej operacji, ich wykonanie jest wstrzymywane do czasu zakończenia realizacji instrukcji warunkowej. Ponieważ instrukcje warunkowe i skoki stanowią ok. 30% instrukcji programu, aby przyśpieszyć działanie po natrafieniu na takie instrukcje procesor realizuje program tak jakby skok nie miał nastąpić. W momencie kiedy to założenie staje się prawdziwe, kolejnych kilka instrukcji jest już wykonywanych nie generując żadnego opóźnienia. W przypadku konieczności wykonania skoku ich rezultaty są po prostu anulowane, a interpretacja instrukcji odbywa się od początku w nowym miejscu. W niektórych procesorach po natrafieniu na instrukcję warunkową mikroprocesor równolegle realizuje obydwie alternatywy. Wynik operacji porównania decyduje, która alternatywa staje się obowiązującą. Oczywiście ten algorytm znacznie komplikuje budowę procesora, ale dzięki temu szybkość realizacji programu wzrasta wielokrotnie. Po tych kilku generalnych uwagach postaramy się opisać bardziej konkretną realizację mikroprocesora. Każdy procesor zawiera pewien zestaw rejestrów — odpowiedników zmiennych w językach wyższego poziomu. Rejestry służą do przechowywania i manipulacji danymi, przy czym nie rozróżniają ich typów. Każda wartość w rejestrze procesora jest po prostu ciągiem bitów. Ich interpretacja zależna jest od programisty. Oczywiście same rejestry nie wystarczą do prawidłowej realizacji programu. Do poprawnej pracy potrzebne są pewne specjalne typy rejestrów — tzw. rejestry sterujące. Przechowują one informacje dotyczące stanu procesora, Wydział Informatyki, Politechnika Białostocka Strona 2 Wprowadzenie do Informatyki (WDI), Studia Dzienne Magisterskie mgr inż. Paweł Tadejko adres wykonywanej instrukcji oraz adresy pewnych struktur o specjalnym znaczeniu. Przykładami takich rejestrów jest rejestr FLAGS zawierający znaczniki związane z ostatnio wykonywanymi instrukcjami. Np. po operacji porównania dwóch liczb na podstawie jego stanu można stwierdzić, jakie były wyniki porównania. Kolejnym rejestrem jest rejestr PC (ang. Program Counter) zawierający adres następnej do wykonania instrukcji. Specjalnym rejestrem jest rejestr stosu SP (ang. Stack Pointer). Stos jest strukturą, w której procesor przechowuje różne dane, np. dotyczące adresów podprogramów. Przedstawiony zestaw rejestrów występuje w każdym procesorze, oprócz niego istnieją także tzw. rejestry danych i adresowe, ale ich omawianie daleko wykracza poza ramy tej książki. Dla uświadomienia sobie, jak w rzeczywistości wygląda praktyczna implementacja przedstawionego powyżej opisu procesora, podajemy schemat bokowy procesora firmy AMD Athlona. Rys 1.1 schemat bokowy procesora Athlon Opisany powyżej zestaw rejestrów wraz z interpretowanymi przez procesor instrukcjami jest wystarczający do realizacji praktycznie każdego zadania. Jednakże dla efektywnego działania procesor musi komunikować się ze światem zewnętrznym, chociażby dla wymiany informacji, wysłania wyników itd. W pierwszych komputerach systemy sprzęgające procesor z pozostałymi elementami komputera były niezwykle proste, ich działanie ograniczało się tylko do prostych elementów sterujących np. dostępem do pamięci. We współczesnych komputerach np. klasy PC za połączenie procesora z resztą odpowiadają wyspecjalizowane układy realizujące funkcje stopniem złożoności podobne do tych jakie realizuje sam procesor. MMX Zestaw 57 instrukcji multimedialnych wbudowanych w serie procesorów Intela oraz w inne procesory x86 kompatybilne. Procesory z MMX mogą wykonywać wiele typowych dla multimediów operacji (np. DSP - Digital Signal Processing), które wcześniej były wykonywane oddzielnie przez kartę muzyczną i kartę graficzną. Jednak tylko oprogramowanie przystosowane do korzystania z instrukcji MMX może wykorzystać przewagę procesorów z MMX. Pierwsza generacja komputerów z procesorami MMX trafiła na rynek w styczniu 1997 Wydział Informatyki, Politechnika Białostocka Strona 3 Wprowadzenie do Informatyki (WDI), Studia Dzienne Magisterskie mgr inż. Paweł Tadejko roku. SSE2 - Nowe strumieniowe rozszerzenia SIMD podwójnej precyzji 133 nowe instrukcje wreszcie umożliwiają to wszystko, czym SSE miało być od samego początku. 128 bitów spakowanych danych, które mogły być jedynie w formie czterech zmiennoprzecinkowych wartości o pojedynczej precyzji pod SSE, teraz mogą być przetwarzane we wszystkich następujących formatach: 4 wartości FP o pojedynczej precyzji (SSE) 2 wartości FP o podwójnej precyzji (SSE2) 16 bajtów (SSE2) 8 słów (SSE2) 4 podwójnych słów (SSE2) 2 poczwórne słowa (SSE2) 1 128-bitowa wartość całkowita (SSE2) Te opcje mają ogromną i niepodważalną wartość użytkową. Intel ma nadzieję, że programiści wkrótce zastąpią stare instrukcje koprocesora zmiennoprzecinkowego x87 instrukcjami zmiennoprzecinkowymi podwójnej precyzji SSE2, tak że aktualnie fałszywe twierdzenie Intela, że Pentium 4 posiada najbardziej potężny koprocesor zmiennoprzecinkowe, wreszcie stanie się prawdą. AMD jest bardzo pod wrażeniem SSE2, dlatego też ogłosiło kilka dni temu, że nadchodząca linia procesorów x86-64 Hammer będzie również zawierała SSE. Osobiście wątpię, aby SSE2 było w stanie zastąpić instrukcje x87 w oprogramowaniu naukowym. Nie powinniśmy zapominać, że oryginalny koprocesor wykorzystuje 80-bitowe wartości zmiennoprzecinkowe, a nie mniej dokładne 64-bitowe wartości zmiennoprzecinkowe oferowane przez SSE2. Wydział Informatyki, Politechnika Białostocka Strona 4