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” 90-924 Łódź, ul. Żeromskiego 116, tel. 042 631 28 83 www.kapitalludzki.p.lodz.pl Dr inż. Małgorzata Langer Zadanie nr 30 – Dostosowanie kierunku Elektronika i Telekomunikacja do potrzeb rynku pracy i gospodarki opartej na wiedzy Architektura komputerów Wykład jest przygotowany dla IV semestru kierunku Elektronika i Telekomunikacja. Studia I stopnia
29
Embed
Architektura komputerów - eletel.p.lodz.pl · Architektura komputerów, część 4 5 Adresowanie pamięci - słowo • Słowo pamięci to najczęściej zapisywana i pobierana jednostka
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Zadanie nr 30 – Dostosowanie kierunku Elektronika i Telekomunikacja
do potrzeb rynku pracy i gospodarki opartej na wiedzy
Architektura komputerów
Wykład jest przygotowany dla IV semestru
kierunku Elektronika i Telekomunikacja.
Studia I stopnia
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Architektura komputerów, część 4
2
• Elementy komputera (sprzętu)
Podstawowa architektura prostego komputera (ASC)
Konsola
Jednostka
sterująca
Jednostka
arytm./
logiczna
Rejestr adresów
pamięci (MAR)
Licznik programu
(PC)
Rejestr akumulatora
(ACC)
Pamięć
Rejestr bufora pamięci
Rejestry indeksowe Rejestr instrukcji (IR)
Rejestr stanu
procesora
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Architektura komputerów, część 4
3
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
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Architektura komputerów, część 4
4
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
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Architektura komputerów, część 4
5
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
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Architektura komputerów, część 4
6
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
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Architektura komputerów, część 4
7
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
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Architektura komputerów, część 4
8
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ę)
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Architektura komputerów, część 4
9
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
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Architektura komputerów, część 4
10
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)
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Architektura komputerów, część 4
11
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
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Architektura komputerów, część 4
12
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
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Architektura komputerów, część 4
13
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
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Architektura komputerów, część 4
14
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)
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Architektura komputerów, część 4
15
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)
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Architektura komputerów, część 4
16
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)
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Architektura komputerów, część 4
17
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
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Architektura komputerów, część 4
18
Ł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)
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Architektura komputerów, część 4
19
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
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Architektura komputerów, część 4
20
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).
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Architektura komputerów, część 4
21
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
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Architektura komputerów, część 4
22
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 DOD (A, B, C) LDA A ADD B STA C ENDM
• 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ę makro-instrukcję składają; po asemblacji, A, B i C nie są już widoczne (program widzi tylko X, Y, Z)
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Architektura komputerów, część 4
23
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
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Architektura komputerów, część 4
24
Łą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
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Architektura komputerów, część 4
25
Łą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ć.
Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Architektura komputerów, część 4
26
System operacyjny
• Z perspektywy komputera jest to program najbliżej powiązany ze