Architektura Komputerów/Wykład 1: Teoria: Różnice pomiędzy wersjami
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwaniaLinia 92: | Linia 92: | ||
|valign="top" width="500px"|[[Grafika:ASK_M1_S14.png]] | |valign="top" width="500px"|[[Grafika:ASK_M1_S14.png]] | ||
|valign="top"| | |valign="top"| | ||
− | ... | + | Tworząc modele w taksonomii Skillicorna przyjmuje się kilak założeń. Liczba hierarchii pamięci jest równa liczbie procesorów. Komputer musi zawierać przynajmniej jeden procesor danych. Dozwolone są połączenia pomiędzy procesorami i hierarchiami pamięci tego samego rodzaju (kodu albo danych) oraz połączenia pomiędzy procesorami. |
|} | |} | ||
<hr width="100%"> | <hr width="100%"> | ||
Linia 98: | Linia 98: | ||
|valign="top" width="500px"|[[Grafika:ASK_M1_S15.png]] | |valign="top" width="500px"|[[Grafika:ASK_M1_S15.png]] | ||
|valign="top"| | |valign="top"| | ||
− | ... | + | Rysunek przedstawia prosty model w taksonomii Skillicorna (jest to model uniprocesora von Neumanna). Procesory są oznaczone symbolicznie kołami, a hierarchie pamięci – trójkątami. Strzałki reprezentują połączenia i kierunki przesyłania informacji. |
+ | |||
+ | Strzałki pionowe z prawej strony procesorów i hierarchii pamięci reprezentują żądania dostępów, a strzałki po prawej stronie – przepływ instrukcji i danych. | ||
+ | Na kolejnych rysunkach podwójne strzałki zostaną zastąpione pojedynczymi, reprezentującymi kierunki przepływu danych i instrukcji, z pominięciem żądań dostępu. | ||
|} | |} | ||
<hr width="100%"> | <hr width="100%"> | ||
Linia 104: | Linia 107: | ||
|valign="top" width="500px"|[[Grafika:ASK_M1_S16.png]] | |valign="top" width="500px"|[[Grafika:ASK_M1_S16.png]] | ||
|valign="top"| | |valign="top"| | ||
− | ... | + | Procesor instrukcji przesyła do hierarchii pamięci instrukcji żądanie pobrania instrukcji. W odpowiedzi otrzymuje instrukcje. instrukcje przesyłane są po zdekodowaniu do procesora danych, który wykonuje operacje na danych. |
+ | |||
+ | Procesor danych przesyła do hierarchii pamięci żądania operacji odczytu i zapisu. Dane pomiędzy procesorem danych i hierarchią pamięci danych przesyłane są w dwóch kierunkach (strzałka po prawej stronie). | ||
+ | |||
+ | Procesor danych przesyła do procesora instrukcji informacje o stanie przetwarzania, umożliwiające procesorowi instrukcji decydowanie o dalszym przebiegu wykonania programu w zależności od wyników przetwarzania danych. | ||
|} | |} | ||
<hr width="100%"> | <hr width="100%"> | ||
Linia 110: | Linia 117: | ||
|valign="top" width="500px"|[[Grafika:ASK_M1_S17.png]] | |valign="top" width="500px"|[[Grafika:ASK_M1_S17.png]] | ||
|valign="top"| | |valign="top"| | ||
− | + | Spośród około 30 możliwych topologicznie modeli tylko 7 reprezentuje realizowalne architektury komputerów. | |
|} | |} | ||
<hr width="100%"> | <hr width="100%"> | ||
Linia 134: | Linia 141: | ||
|valign="top" width="500px"|[[Grafika:ASK_M1_S21.png]] | |valign="top" width="500px"|[[Grafika:ASK_M1_S21.png]] | ||
|valign="top"| | |valign="top"| | ||
− | ... | + | Taksonomia Skillicorna posługuje się pojęciem hierarchii pamięci w miejsce dużo bardziej popularnego pojęcia pamięci. Słowo „hierarchia” dobrze oddaje budowę pamięci współczesnego komputera, w którym znajduje się kilka bloków funkcjonalnych służących do przechowywania programów i danych. |
+ | |||
+ | Idealny komputer powinien mieć jak największą i jak najszybszą pamięć. Pojemność pamięci wpływa na jej fizyczne rozmiary, a te – na czas dostępu. Nie można więc zbudować dowolnie dużej i jednocześnie szybkiej pamięci. | ||
+ | |||
+ | Problem ten rozwiązuje się przez wyodrębnienie wielu warstw o zróżnicowanej pojemności i szybkości, tworzących razem hierarchię pamięci. Kolejne warstwa w miarę oddalania się od procesora mają coraz większe pojemności i coraz dłuższe czasy dostępu. | ||
|} | |} | ||
<hr width="100%"> | <hr width="100%"> | ||
Linia 140: | Linia 151: | ||
|valign="top" width="500px"|[[Grafika:ASK_M1_S22.png]] | |valign="top" width="500px"|[[Grafika:ASK_M1_S22.png]] | ||
|valign="top"| | |valign="top"| | ||
− | ... | + | Hierarchia pamięci współczesnego komputera, z punktu widzenia konstrukcji komputera, składa się z czterech warstw. |
+ | |||
+ | Rejestry fizycznie znajdują się wewnątrz procesora, dzięki czemu dostęp do nich jest bardzo szybki. | ||
+ | |||
+ | Kieszenie, wprowadzone po raz pierwszy około 1968 roku, zapewniają buforowania danych pomiędzy procesorem i pamięcią operacyjną w celu przyspieszenie dostępu do pamięci. | ||
+ | |||
+ | Warstwa pamięci wirtualnej, powstała również około 1968 roku, zapewnia rozszerzenie pamięci operacyjnej. | ||
+ | |||
+ | Z punktu widzenia użytkownika do hierarchii pamięci należy zaliczyć wszelkie zasoby służące przechowywaniu danych. Logiczne staje się więc uzupełnienie rysunku o lokalny system plików komputera oraz o zasoby zdalne, w postaci nośników wymiennych i serwerów sieciowych. | ||
|} | |} | ||
<hr width="100%"> | <hr width="100%"> | ||
Linia 146: | Linia 165: | ||
|valign="top" width="500px"|[[Grafika:ASK_M1_S23.png]] | |valign="top" width="500px"|[[Grafika:ASK_M1_S23.png]] | ||
|valign="top"| | |valign="top"| | ||
− | ... | + | O ile zasada działania hierarchii pamięci dotyczy wszystkich warstw, to mechanizmy sterujące przemieszczaniem danych pomiędzy poszczególnymi warstwami są różne. |
+ | |||
+ | O umieszczeniu danych w rejestrach decyduje programista piszący program w języku asemblerowym lub kompilator języka wysokiego poziomu. | ||
+ | |||
+ | Styk warstwy kieszeni i pamięci operacyjnej jest sterowany na poziomie sprzętu. Stykiem pamięci operacyjnej i wirtualnej steruje system operacyjny przy użyciu jednostki zarządzania pamięcią. | ||
+ | |||
+ | O umieszczeniu danych w pamięci wirtualnej decyduje użytkownik – otwierając plik danych lub uruchamiając program. | ||
+ | |||
+ | Przemieszczaniem danych pomiędzy lokalnym systemem plików i nośnikami wymiennymi lub zasobami sieciowymi steruje użytkownik. | ||
|} | |} | ||
<hr width="100%"> | <hr width="100%"> | ||
Linia 152: | Linia 179: | ||
|valign="top" width="500px"|[[Grafika:ASK_M1_S24.png]] | |valign="top" width="500px"|[[Grafika:ASK_M1_S24.png]] | ||
|valign="top"| | |valign="top"| | ||
− | . | + | Tabela przedstawia orientacyjne parametry poszczególnych warstw hierarchii pamięci. Należy zwrócić uwagę na dużą różnicę czasów dostępu kieszeni i pamięci – czas podany dla pamięci dotyczy pojedynczego, losowego dostępu do pamięci dynamicznej typu DDR. |
|} | |} | ||
<hr width="100%"> | <hr width="100%"> | ||
Linia 158: | Linia 185: | ||
|valign="top" width="500px"|[[Grafika:ASK_M1_S25.png]] | |valign="top" width="500px"|[[Grafika:ASK_M1_S25.png]] | ||
|valign="top"| | |valign="top"| | ||
− | ... | + | Architektura von Neumanna jest określona przez zestaw cech. Model maszyny von Neumanna wprowadza specyficzny mechanizm dostępu do pamięci – poprzez adres. |
+ | |||
+ | Z takiej organizacji pamięci i z faktu przechowywania w niej programu wynika z kolei obecność rejestru licznika instrukcji. | ||
|} | |} | ||
<hr width="100%"> | <hr width="100%"> | ||
Linia 164: | Linia 193: | ||
|valign="top" width="500px"|[[Grafika:ASK_M1_S26.png]] | |valign="top" width="500px"|[[Grafika:ASK_M1_S26.png]] | ||
|valign="top"| | |valign="top"| | ||
− | ... | + | Dwa warianty architektury von Neumanna różnią się sposobem przechowywania instrukcji i danych. Architektura Harvard jest niekiedy uważana za architekturę nie spełniającą postulatów von Neumanna wobec faktu oddzielnego przechowywania instrukcji i danych. |
+ | |||
+ | Kolejne rysunki posługują się symbolami zapożyczonymi z taksonomii Skillicorna w sposób sprzeczny z zasadami budowy modeli wprowadzonymi przez tę taksonomię. | ||
|} | |} | ||
<hr width="100%"> | <hr width="100%"> | ||
Linia 194: | Linia 225: | ||
|valign="top" width="500px"|[[Grafika:ASK_M1_S31.png]] | |valign="top" width="500px"|[[Grafika:ASK_M1_S31.png]] | ||
|valign="top"| | |valign="top"| | ||
− | . | + | Hierarchia pamięci w architekturze Harvard-Princeton charakteryzuje się częściowym rozdzieleniem hierarchii pamięci. Co najmniej jeden poziom kieszeni jest oddzielny dla hierarchii pamięci instrukcji i danych. |
|} | |} | ||
<hr width="100%"> | <hr width="100%"> | ||
Linia 200: | Linia 231: | ||
|valign="top" width="500px"|[[Grafika:ASK_M1_S32.png]] | |valign="top" width="500px"|[[Grafika:ASK_M1_S32.png]] | ||
|valign="top"| | |valign="top"| | ||
− | . | + | Architektura Harvard-Princeton łączy zalety architektury Harvard (wydajność) i Princeton (programowalność). Programowalność nie jest tu jednak dokładnie taka sama, jak w architekturze Princeton. |
|} | |} | ||
<hr width="100%"> | <hr width="100%"> | ||
Linia 206: | Linia 237: | ||
|valign="top" width="500px"|[[Grafika:ASK_M1_S33.png]] | |valign="top" width="500px"|[[Grafika:ASK_M1_S33.png]] | ||
|valign="top"| | |valign="top"| | ||
− | + | Wszystkie produkowane współcześnie procesory do komputerów uniwersalnych mają architekturę Harvard-Princeton, z rozdzielonymi kieszeniami kodu i danych. | |
|} | |} |
Aktualna wersja na dzień 21:49, 5 paź 2006
![]() |
... |
![]() |
... |
![]() |
... |
![]() |
... |
![]() |
... |
![]() |
Rysunek przedstawia oryginalną tabelę taksonomii Flynna. Są w niej umieszczone cztery klasy architektur komputerowych. |
![]() |
... |
![]() |
... |
![]() |
Spośród około 30 możliwych topologicznie modeli tylko 7 reprezentuje realizowalne architektury komputerów. |
![]() |
... |
![]() |
... |
![]() |
... |
![]() |
... |
![]() |
... |
![]() |
... |
![]() |
... |
![]() |
Architektura Harvard-Princeton łączy zalety architektury Harvard (wydajność) i Princeton (programowalność). Programowalność nie jest tu jednak dokładnie taka sama, jak w architekturze Princeton. |
![]() |
Wszystkie produkowane współcześnie procesory do komputerów uniwersalnych mają architekturę Harvard-Princeton, z rozdzielonymi kieszeniami kodu i danych. |