Architektura komputerów

Transkrypt

Architektura komputerów
Wykład jest przygotowany dla IV semestru
kierunku Elektronika i Telekomunikacja.
Studia I stopnia
Dr inż. Małgorzata Langer
Architektura
komputerów
Prezentacja multimedialna
współfinansowana przez Unię Europejską
w ramach Europejskiego Funduszu Społecznego
w projekcie
„Innowacyjna dydaktyka bez ograniczeń
– zintegrowany rozwój Politechniki Łódzkiej –
zarządzanie Uczelnią,
nowoczesna oferta edukacyjna
i wzmacniania zdolności do zatrudniania
osób niepełnosprawnych”
Zadanie nr 30 – Dostosowanie kierunku Elektronika i Telekomunikacja
do potrzeb rynku pracy i gospodarki opartej na wiedzy
90-924 Łódź, ul. Żeromskiego 116,
tel. 042 631 28 83
www.kapitalludzki.p.lodz.pl
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Podstawowa architektura prostego komputera (ASC)
• Elementy komputera (sprzętu)
Konsola
Rejestr adresów
pamięci (MAR)
Jednostka
sterująca
Licznik programu
(PC)
Jednostka
arytm./
logiczna
Rejestr akumulatora
(ACC)
Pamięć
Rejestr bufora pamięci
Rejestr instrukcji (IR)
Rejestry indeksowe
Rejestr stanu
procesora
Architektura komputerów, część 4
2
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
ORGANIZACJA KOMPUTERA
• Definicja podstawowych funkcji
komputera; dyskusja o formacie i
sposobach wykonywania instrukcji,
adresowaniu, wywoływaniu
powtarzających się podprogramów,
przechowywaniu i dostępie do
danych, wykonywaniu programów
użytkowych i innych; znaczenie
programu operacyjnego
Architektura komputerów, część 4
3
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Zasada działania ASC
• Program jest przechowywany w pamięci
• Instrukcja pobierana jest z pamięci do jednostki sterującej i
wywoływane przez nią operacje są wykonywane
• Licznik programu zawiera adres instrukcji, która ma być pobrana
z pamięci (zwiększany jest przez jednostkę sterującą przy końcu
procedury pobrania instrukcji)
• Instrukcja pobierana jest do Rejestru Instrukcji (IR)
• Układy dołączone do IR (hardware) dekodują instrukcję i generują
odpowiednie sygnały sterujące do wykonania operacji
• ACC (Rejestr akumulatora) zbiera wyniki operacji logicznych i
matematycznych
• Rejestry indeksowe pomagają w manipulacji adresami
• PSR wskazują status ACC, przeniesienie, nadmiar, pozwolenie na
przyjęcie przerwania
Architektura komputerów, część 4
4
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Adresowanie pamięci - słowo
• Słowo pamięci to najczęściej zapisywana i pobierana jednostka
danych.
• Mogą być słowa 8, 16, 32, 64 bitowe; używane są również 6 i 36
bitowe
• Można adresować połówki i ćwiartki słów oraz wielokrotności
(podwójne i poczwórne słowa)
• Długość słowa adresującego pamięć implikuje ilość pojedynczych
słów, które możemy zaadresować, np. przy 16 bitowym słowie,
będzie to 216 = 65536 czyli 64K słów; przy 32 bitowym – 232 ale
przy 8 bitowym – jedynie 28 = 256
Architektura komputerów, część 4
5
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Format danych i instrukcji
• W ASC pamięć jest matrycą słów, np. 16-bitowych, przy czym każde
słowo („wiersz matrycy”) może być albo daną, albo instrukcją.
Interpretacja zależy od kontekstu.
• Format danych – np. stałopozycyjna arytmetyka (sposoby zapisu
były omawiane wcześniej)
• Format instrukcji:
Opcode – flags (indirect, index) – Address
• OPCODE – kod danej operacji, którą „potrafi” wykonać sprzęt (tzw.
primitive)
• Indirect flag – (pośredni wskaźnik) – ustawiony na 1, jeżeli będzie
adresowanie pośrednie, 0, jeżeli bezpośrednie
• Index flags – wybierają jeden z indeksowych rejestrów przy
indeksowanych adresach, lub jeżeli instrukcja przywołuje indeksowy
rejestr
Architektura komputerów, część 4
6
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Format instrukcji
• Ilość bitów w części adresowej instrukcji wyznacza obszar pamięci,
w którym muszą się znaleźć instrukcje programu
• Ze względu na to, czy instrukcje są wykonywane bez pobierania
danych, z pobraniem jednego adresu lub więcej, rozróżnimy trzy
klasy formatów.
• PRZYKŁADY INSTRUKCJI PODAWANE SĄ Z ZAKRESU HDL
• Bez adresu – np. HLT (stop)
W części Opcode jest całkowita instrukcja. HLT wskazuje logiczny
koniec programu i zatrzymuje maszynę przed pobieraniem
następnej instrukcji (nawet, gdyby takie były)
• Inne przykłady, to SHL (shift left), SHR (shift right), TCA –
uzupełnienie do 2; te operacje są wykonywane na zawartości ACC
Architektura komputerów, część 4
7
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Klasy instrukcji – c.d.
• Instrukcje z jednym adresem – podają lokalizację w pamięci, która
zostanie użyta razem z ACC w danej instrukcji, np. LDA (ładuj load); format instrukcji: LDA MEM ACC (z zawartości adresu MEM
pobierz zawartość do ACC; zawartość pamięci nie zmieni się)
• Inne przykłady: STA (zapisz – store – zawartość ACC pod
wskazany adres; nie zmieniaj zawartości ACC), ADD (dodaj
zawartość pamięci do ACC; zawartość pamięci nie zmieni się)
• BRU – instrukcja skoku bezwarunkowego do adresu...
BIP – instrukcja warunkowa (IF - jeżeli)
• Instrukcje z dwoma adresami – typu input/output – RWD – (czytaj
z urządzenia wejściowego i zapisz do ACC – zawartość poprzednia
zostanie utracona), WWD – zapisz do urządzenia wyjściowego,
zawartość ACC (nie zmieni się)
Architektura komputerów, część 4
8
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Tryby adresowania
• Tryby adresowania zależą od języka programowania oraz struktury
danych, które stosowane są w maszynie. Zostaną omówione szerzej
przy omawianiu dostępu do pamięci.
• Adresowanie może być bezpośrednie (Direct), lub indeksowane
(indexed)
• Na przykładzie instrukcji „load” LDA MEM ACC (z zawartości adresu
MEM pobierz zawartość do ACC; zawartość pamięci nie zmieni się)
• LDA Z – pobierz dane z efektywnego adresu Z
LDA Z, 2 – pobierz dane spod adresu: Z + rejestr indeksowany, czyli
z rejestru o numerze 2
Jeżeli w rejestrze nr 2 będzie zapisana np. wartość ‘4’, to do
akumulatora zostanie wpisana wartość spod adresu Z+4
• Zawartość indeksowanego rejestru może rozszerzyć obszar pamięci
Architektura komputerów, część 4
9
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Rozszerzenie obszaru pamięci
• Załóżmy, że długość rejestru Z wynosi 8 bitów; wtedy zakres
adresowania pamięci wynosi 256 możliwych lokalizacji
• Jeżeli offset, czyli rejestr indeksowany będzie miał 16 bitów –
efektywny adres będzie mógł być z zakresu 64K
• Przy programowaniu można zmieniać zawartości indeksowanych
rejestrów, dynamicznie zmieniając adresowanie pamięci
• Tryb indeksowy wykorzystywany jest zawsze przy odwoływaniu się
do elementów tablic (pole adresowe instrukcji wskazuje pierwszy
element, a następne wskazywane są poprzez zwiększanie rejestru
indeksowanego)
Architektura komputerów, część 4
10
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Adresowanie pośrednie
• LDA*Z – gwiazdka po instrukcji wskazuje na adresowanie
pośrednie
• Zawartość pola o adresie Z wskazuje adres, gdzie znajduje się
dana, która ma zostać wpisana do akumulatora
• Również adresowanie pośrednie może służyć do rozszerzenia
zakresu adresowania pamięci
• Przy programowaniu wykorzystywane ze wskaźnikiem (pointer),
który może wskazywać różne zakresy danych
Architektura komputerów, część 4
11
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Jednoczesne użycie adresowania pośredniego i indeksowanego
• LDA*Z,2
• Logicznie:
– można wykonać wpierw indeksowanie (czyli „przesunąć” adres Z)
a potem adresowanie pośrednie
(z obliczonego adresu pobrać adres danej do umieszczenia
w akumulatorze) – tzw.: Preindexed-Indirect
– można wykonać wpierw adresowanie pośrednie (pobrać adres
danej) a później indeksowanie (czyli obliczyć nowy adres) – tzw.:
Postindexed-Indirect
• Dana implementacja umożliwia JEDEN sposób
Architektura komputerów, część 4
12
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Język maszynowy
• Używane są wyłącznie ciągi zer i jedynek. Adresowanie jest
wyłącznie bezpośrednie
• Praktycznie nie jest możliwe (a przynajmniej stosowane)
bezpośrednie pisanie programu w takiej postaci – ale do takiej
postaci program zostanie „przetłumaczony”
• Do tłumaczenia służą asemblery i kompilatory, które
przekształcają programy pisane w asemblerze lub językach
wyższego poziomu na język maszynowy
• W przeszłości były używane języki interpretowane (Basic), gdzie
„Interpretator” przekształcał na język maszynowy linijka po linijce –
podczas wykonywania programu
Architektura komputerów, część 4
13
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Asembler
• Składa się z sekwencji instrukcji kodowanych tzw. Mnemonikami
oraz adresów.
• Każda instrukcja składa się z 3 lub 4 pól:
- label (etykieta)
- mnemonic (standardowy trzyliterowy ciąg liter wskazujący na
instrukcję; gwiazdka, jako czwarty znak wskazuje na pośrednie
adresowanie)
- operand (zawiera absolutny lub symboliczny adres; jeżeli
występuje adresowanie z rejestrem indeksowanym, to umieszcza
się go po przecinku)
- komentarze (pole opcjonalne, zaczyna się od kropki i asembler
ignoruje to pole)
Architektura komputerów, część 4
14
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Etykieta
• Ciąg znaków alfanumerycznych
• Etykieta jest symboliczną nazwą, wskazującą lokalizację w pamięci,
gdzie znajduje się sama instrukcja
• Nie trzeba nadawać etykiety dla każdej instrukcji, tylko dla takich,
które wywoływane są wielokrotnie z wnętrza programu
• Pierwszy znak musi być literą lub gwiazdką
• „*” (gwiazdka) na początku oznacza, że cała instrukcja jest tylko
komentarzem (nie będzie wykonywana)
Architektura komputerów, część 4
15
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Instrukcje i pseudoinstrukcje
• Instrukcja jest wykonywalna (executable instruction); asembler
generuje dla każdej instrukcji w asemblerze – instrukcję w języku
maszynowym
- wszystkie podane wcześniej przykłady instrukcji
• Pseudoinstrukcja, (lub dyrektywa dla asemblera – assembler
directive) służy do sterowania procesem, zarezerwowania pamięci,
ustalenia stałych – nie powstaje dla niej instrukcja w języku
maszynowym; najczęściej umieszcza się pseudoinstrukcje na
początku programu
- np. Z BSS 5 (block storage starting - rezerwuje 5 lokalizacji
poczynając od pierwszego adresu o nazwie Z)
Architektura komputerów, część 4
16
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Proces wykonywany przez asembler
• Asembler musi spełnić dwie funkcje:
- wygenerować adres dla każdej symbolicznej nazwy w programie
źródłowym
- wygenerować ekwiwalent w kodzie binarnym dla każdej instrukcji
• Proces asemblera zwykle dokonywany jest w dwóch przejściach:
- pierwsze przejście dla zabezpieczenia lokalizacji pamięci dla
każdej symbolicznej nazwy użytej w programie
- w drugim przejściu wpisane są rozwiązania dla wszystkich
odwołań do tych nazw
• Jeżeli wszystkie nazwy muszą zostać zadeklarowane przed
odwołaniem – wystarcza jedno przejście
Architektura komputerów, część 4
17
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Ładowanie programu
• Kod wynikowy (object code) musi zostać załadowany do pamięci
maszyny, zanim zostanie wykonany
• Dokonuje tego loader (zapisany na stałe znacznik, wskazujący na
początkowy adres programu, lub inicjujący jego wczytanie
z urządzenia zewnętrznego)
Architektura komputerów, część 4
18
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Podprogramy (subroutines)
• Jest to część kodu większego programu, która wykonuje szczególne
zadanie i jest niezależna od kodu pozostałego
• Niektóre języki (np. Pascal, Fortran) rozróżniają funkcje (zwracają
wartość) i procedury (nie zwracają wartości)
Inne (np. C lub LISP) traktują wszystkie podprogramy jednakowo
• Wywołanie podprogramu oznacza skok do pierwszej instrukcji
podprogramu (instrukcja JMP).
• Zakończenie podprogramu skutkuje powrotnym skokiem do tego
samego punktu w programie, z którego był wywołany podprogram
(powrót)
• Ponieważ ten sam podprogram może być wywoływany w danym
programie wiele razy – adres powrotu (return address) musi być
zapisany w pamięci
Architektura komputerów, część 4
19
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Podprogramy – c.d.
• Możliwe jest zagnieżdżanie podprogramów (nested call) – czyli
podprogram wywołuje kolejny podprogram) – trzeba zabezpieczyć
wtedy pierwotny adres powrotu przed utraceniem; adresy powrotu
składowane są najczęściej na stosie, co umożliwia „odtworzenie”
całej sekwencji zagnieżdżania
• Podprogramy mogą potrzebować dodatkowych danych,
przygotowywanych wcześniej przez główny program oraz
przekazywać przetworzone dane do programu. Należy
zabezpieczyć prawidłowe zawartości akumulatora i rejestrów przed
wywołaniem podprogramu a później przed skokiem powrotnym
(również wykorzystuje się tu stos).
Architektura komputerów, część 4
20
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Makroinstrukcje
• Jest to grupa instrukcji, która zostaje zakodowana tylko raz i później,
w programie, może być używana tyle razy, ile potrzeba
• Inaczej niż podprogramy – wywołanie makro skutkuje
podstawieniem grupy instrukcji, które składają się na makro. Nie ma
skoku.
• Można przekazywać parametry do makro-instrukcji; przy
podstawieniu instrukcji, każdy parametr zostanie zastąpiony
wartością z wywołania
Architektura komputerów, część 4
21
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Przykład makroinstrukcji
• Makroinstrukcja o nazwie DOD, która doda wartości A i B i umieści
je w C (czyli A, B, C – są parametrami)
MACRO
LDA
ADD
STA
ENDM
DOD (A, B, C)
A
B
C
• Wywołanie tej makroinstrukcji w programie będzie miało postać:
DOD(X, Y, Z)
• Asembler zastąpi DOD trzema instrukcjami, które się na tę makroinstrukcję składają; po asemblacji, A, B i C nie są już widoczne
(program widzi tylko X, Y, Z)
Architektura komputerów, część 4
22
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Linker
• W praktyce program będzie się składał z programu głównego i kilku
podprogramów (modułów).
• Moduły mogą pochodzić albo z wcześniej zdefiniowanej biblioteki,
albo być przygotowane dla danej, szczególnej aplikacji
• Moduły tłumaczone są na kod maszynowy niezależnie od głównego
programu
• Podczas asemblacji program łączący (linker) wstawia kod
maszynowy danego modułu do danego pojedynczego programu
głównego
• Linker musi rozwiązać odwołania do symboli i zastąpić je
właściwymi adresami
• Często linker musi również zmienić wartości adresów skoków,
zapamiętywania, ładowania oraz zadbać, aby poszczególne
podprogramy nie nakładały się na siebie
Architektura komputerów, część 4
23
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Łączenie dynamiczne
• Dopiero załadowanie programu będzie dokonywało ostateczego
łączenia. Wcześniej, program będzie zawierał niezdefiniowane
symbole i listę modułów i/lub bibliotek
• Oszczędzamy miejsce (często używane moduły są składowane raz,
nie są częścią zapisanych programów – co znacznie zwiększałoby
ich wielkość)
• Możemy wymieniać poszczególne moduły lub biblioteki (również
poprawiać znajdujące się w nich błędy) i nic nie zmieniać
w programach
• W Microsoft Windows – dynamically linked libraries – to DLL
Architektura komputerów, część 4
24
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Łączenie dynamiczne – c.d.
• Większość systemów opartych na Unixie posiada „search path”,
która podaje katalogi systemowe, w których należy szukać bibliotek
dynamicznych
• Niektóre systemy podają ścieżki w pliku konfiguracji
• W niektórych na trwale zapisane są adresy w programie ładującym
(loader)
• API (application program interface) – linker działający w momencie
wywołania przez aplikację (stosowane we wszystkich
współczesnych systemach operacyjnych)
• Wada łączenia dynamicznego – jeżeli zostanie dokonana
nieodpowiedzialna zmiana w przechowywanych bibliotekach –
programy lub cały system przestaną działać.
Architektura komputerów, część 4
25
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
System operacyjny
• Z perspektywy komputera jest to program najbliżej powiązany ze
sprzętem – dystrybutor zasobów (resource allocator)
• Jest to program sterujący (control program) – nadzorujący
działanie programów uzytkownika oraz obsługą i kontrolą pracy
urządzeń wejścia – wyjścia
• System operacyjny, jest to ten program, który działa w komputerze
przez cały czas i nazywany jest jądrem (kernel)
• W 1998 roku rozpoczął się pierwszy (do dzisiaj było już ich wiele)
proces przeciwko Microsoft o zaliczanie zbyt wielu funkcji
komputera do systemu operacyjnego i uniemożliwienie tym samym
konkurencji ze strony dostawców aplikacji (programów użytkowych)
Architektura komputerów, część 4
26
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
System operacyjny – definicje zadań
• Celem systemu operacyjnego jest wygoda użytkownika
• Celem OS jest zapewnienie wydajnego działania systemu
komputerowego
• Są to często sprzeczne ze sobą wymagania
• Systemy operacyjne i architektura komputerów wywarły i wywierają
na siebie wzajemny wpływ
• Znaczący wpływ na rozwój OS wywarły sieci komputerowe,
wprowadzając sieciowe systemy operacyjne (NOS – network
operating system)
Architektura komputerów, część 4
27
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Program rozruchowy
• Bootstrap program – wstępny program potrzebny, aby komputer
mógł rozpocząć pracę (po włączeniu do zasilania). Określa on stan
początkowy wszystkich elementów systemu, poczynając od
rejestrów jednostki centralnej, poprzez sterowniki urządzeń, aż po
zawartość pamięci
• Musi „wiedzieć”, jak załadować system operacyjny i rozpocząć jego
działanie – musi zlokalizować i wprowadzić do pamięci jądro
systemu operacyjnego; OS rozpoczyna wówczas wykonanie
pierwszego procesu (w Unixie jest to INIT) i zaczyna czekać na
wystąpienie jakiegoś zdarzenia.
• Przechowuje się go w pamięci stałej, tylko do odczytu (ROM – read
only memory), aby nie mógł zostać skasowany
Architektura komputerów, część 4
28
KONIEC CZĘŚCI CZWARTEJ
Prezentacja multimedialna
współfinansowana przez Unię Europejską
w ramach Europejskiego Funduszu Społecznego
w projekcie
Dr inż. Małgorzata Langer
Architektura
komputerów
„Innowacyjna dydaktyka bez ograniczeń
– zintegrowany rozwój Politechniki Łódzkiej –
zarządzanie Uczelnią,
nowoczesna oferta edukacyjna
i wzmacniania zdolności do zatrudniania
osób niepełnosprawnych”
Zadanie nr 30 – Dostosowanie kierunku Elektronika i Telekomunikacja
do potrzeb rynku pracy i gospodarki opartej na wiedzy
90-924 Łódź, ul. Żeromskiego 116,
tel. 042 631 28 83
www.kapitalludzki.p.lodz.pl

Podobne dokumenty