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

Podobne dokumenty