wykład-4
Transkrypt
wykład-4
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) Rejestry indeksowe Pamięć Rejestr bufora pamięci Rejestr instrukcji (IR) 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 Ładowanie programu Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego • 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 Łączenie dynamiczne Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego • 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 Łączenie dynamiczne – c.d. Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego • 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