






Studiuj dzięki licznym zasobom udostępnionym na Docsity
Zdobywaj punkty, pomagając innym studentom lub wykup je w ramach planu Premium
Przygotuj się do egzaminów
Studiuj dzięki licznym zasobom udostępnionym na Docsity
Otrzymaj punkty, aby pobrać
Zdobywaj punkty, pomagając innym studentom lub wykup je w ramach planu Premium
Społeczność
Odkryj najlepsze uniwersytety w twoim kraju, według użytkowników Docsity
Bezpłatne poradniki
Pobierz bezpłatnie nasze przewodniki na temat technik studiowania, metod panowania nad stresem, wskazówki do przygotowania do prac magisterskich opracowane przez wykładowców Docsity
Notatki dotyczące tematów z dziedziny informatyki: zagadnienia na egzamin; układowa jednostka sterująca, budowa i zasada działania następujących procesorow.
Typologia: Egzaminy
1 / 12
Ta strona nie jest widoczna w podglądzie
Nie przegap ważnych części!
Najważniejsze fakty związane z mikro-programowalnymi jednostkami sterującymi:
Po pobraniu rozkazu do rejestru rozkazów (instruction register, IR), kiedy układ wyboru adresu (układ szeregujący) zidentyfikuje adres pierwszego mikrorozkazu i przekaże go do licznika mikrorozkazów, zaczyna się dekodowanie. Każdy mikrorozkaz jest zakodowaną reprezentacją mikrooperacji, która w czasie wykonania wysyła sygnały sterujące na ścieżkę danych. Mikrorozkaz także wysyła do układu wyboru adresu sygnały, które są łączone z bitami reprezentującymi stan na ścieżce danych, stając się adresem następnego rozkazu.
Właściwością dołączaną do kilku mikroprogramowalnych jednostek sterujących są mikroprocedury, ponieważ wiele mikroprogramów wymaga jednakowych sekwencji mikrorozkazów, które mogą być umieszczone w jednym miejscu pamięci. Zmniejsza to wielkość pamięci mikroprogramu i pomaga ograniczyć „pole" krzemowe zajmowane przez jednostkę sterującą. Jedną z wad takiego postępowania może być niepotrzebne wykonywanie tych samych operacji, co zwiększa czas wykonania rozkazów.
Układowa jednostka sterująca (RISC) Najważniejsze fakty związane z układowymi jednostkami sterującymi:
Układowa jednostka sterująca jest zasadniczo blokiem logicznym składającym się z bramek, przerzutników i innych układów cyfrowych. Kiedy rozkaz jest wczytywany do rejestru IR, układ bitów w połączeniu z układem bitów licznika sekwencji staje się wejściem do bloku logicznego. Pola kluczowe w rozkazach zawsze odpowiadają ustalonym pozycjom w bloku logicznym na przykład bity kodu operacji mogą zawsze zgadzać się z pozycjami wejściowymi od 0 do 5. Wejściowa
sekwencja bitów zapewnia sygnały sterujące dla ścieżki danych oraz informacje do sterowania sygnałem czasowym generowanym przez licznik sekwencji w czasie następnego cyklu zegarowego. W ten sposób każdy rozkaz powoduje wygenerowanie odpowiedniej sekwencji sygnałów sterujących. Podobnie jak w przypadku mikroprogramowalnych jednostek sterujących, kody warunkowe albo inne informacje uzyskane ze ścieżki danych mogą być wykorzystane do zmiany kolejności sygnałów sterujących.
Układowe jednostki sterujące mogą być zmodyfikowane jedynie przez zmianę połączeń między różnymi elementami logicznymi. Jest to zadanie czasochłonne i zwykle prowadzi do całkowitego przeprojektowania bloku logicznego. Z drugiej strony, układowe jednostki sterujące są szybsze niż ich mikroprogramowalne odpowiedniki. Jest tak dlatego, że unika się w nich operacji odczytywania pamięci mikroprogamu, które są zwykle wolniejsze niż podstawowe operacje logiczne, realizowane przez układy logiczne, oraz dlatego, że są optymalizowane dla wykorzystania stałego formatu rozkazów.
a) procesor potokowy
// Szeliga Bartosz:
Idea procesora potokowego polega na tym żeby zrobić jak najwięcej operacji równocześnie które mogą być wykonywane równocześnie (współbieżnie). Dwuetapowy potok rozkazów (schemat uproszczony):
Jest jasne, że tan proces przyspiesza wykonywanie rozkazów. Jeśli etapy pobierania i wykonywania zajmowałyby tyle samo czasu, czas cyklu rozkazu zmniejszyłby się do połowy. Jeśli jednak przyjrzymy się bliżej przetwarzaniu potokowemu to stwierdzimy, że z dwóch powodów to podwojenie szybkości wykonywania nie jest prawdopodobne.
Dwuetapowy potok rozkazów (schemat rozszerzony):
Zwiększenie liczby etapów potoku pobieranie rozkazu | analiza rozkazów | wyznaczanie adresu | pobieranie danych | wykonywanie rozkazów kierunek przetwarzania rozkazu ->
// Śmierciak Aleksander:
(pipelining processor) – procesor odznaczający się podziałem logiki odpowiedzialnej za proces wykonywania programu (instrukcji procesora) na specjalizowane grupy w taki sposób, aby każda z grup wykonywała część pracy związanej z wykonaniem rozkazu. Grupy te są połączone sekwencyjnie – w formie potoków (pipe) – i wykonują pracę równocześnie, pobierając dane od poprzedniego elementu w sekwencji. W każdej z tych grup rozkaz jest na innym stadium wykonania. Można to porównać do taśmy produkcyjnej. W uproszczeniu, potok wykonania instrukcji procesora może wyglądać następująco:
Uproszczony schemat potokowości. Części rozkazów oznaczone na zielono wykonywane są równocześnie. pobranie instrukcji z pamięci – ang. instruction fetch (IF)
Zdekodowanie instrukcji – ang. instruction decode (ID) Wykonanie instrukcji – ang. execute (EX) Dostęp do pamięci – ang. memory access (MEM) Zapisanie wyników działania instrukcji – ang. store; write back (WB) W powyższym 5-stopniowym potoku, przejście przez wszystkie stopnie potoku (wykonanie jednej instrukcji) zabiera co najmniej 5 cykli zegarowych. Jednak ze względu na jednoczesną pracę wszystkich stopni potoku, jednocześnie wykonywanych jest 5 rozkazów procesora, każdy w innym stadium wykonania. Oznacza to, że taki procesor w każdym cyklu zegara rozpoczyna i kończy wykonanie jednej instrukcji i statystycznie wykonuje rozkaz w jednym cyklu zegara. Każdy ze stopni potoku wykonuje mniej pracy w porównaniu do pojedynczej logiki, dzięki czemu może wykonać ją szybciej – z większą częstotliwością – tak więc dodatkowe zwiększenie liczby stopni umożliwia osiągnięcie coraz wyższych częstotliwości pracy. Podstawowym mankamentem techniki potoku są rozkazy skoku, powodujące w najgorszym wypadku potrzebę przeczyszczenia całego potoku i wycofania rozkazów, które następowały zaraz po instrukcji skoku i rozpoczęcie zapełniania potoku od początku od adresu, do którego następował skok. Taki rozkaz skoku może powodować ogromne opóźnienia w wykonywaniu programu – tym większe, im większa jest długość potoku. Dodatkowo szacuje się, że dla modelu programowego x86 taki skok występuje co kilkanaście rozkazów. Z tego powodu niektóre architektury programowe (np. SPARC) zakładały zawsze wykonanie jednego lub większej ilości rozkazów następujących po rozkazie skoku, tzw. skok opóźniony. Stosuje się także skomplikowane metody predykcji skoku lub metody programowania bez użycia skoków.
b) procesor CISC
// Śmierciak Aleksander:
(Complex Instruction Set Computer) Cechy:
występowanie złożonych, specjalistycznych rozkazów (instrukcji) - które do wykonania wymagają od kilku do kilkunastu cykli zegara,
szeroka gama trybów adresowania,
przeciwnie niż w architekturze RISC rozkazy mogą operować bezpośrednio na pamięci (zamiast przesłania wartości do rejestrów i operowania na nich) Powyższe założenia powodują iż dekoder rozkazów jest skomplikowany. Istotą architektury CISC jest to, iż pojedynczy rozkaz mikroprocesora, wykonuje kilka operacji niskiego poziomu, jak na przykład pobranie z pamięci, operację arytmetyczną i zapisanie do pamięci.
// Szwed Kamil:
Inne cech charakteryzujące nie tylko procesory RISC, to
W procesorach RISC proces dekodowania rozkazów zazwyczaj był jednoetapowy (wszystkie rozkazy
tej samej długości). Dzięki temu można było zastosować przetwarzanie potokowe.
d) procesor wektorowy
(vector processor) Procesory wektorowe są stosowane w superkomputerach, mogą one wykonywać setki operacji zmiennopozycyjnych na sekundę. Wykonywanie operacji jest realizowane za pomocą tablic lub wektorów (kilka jednostek ALU wykonuje operacje jednocześnie).
Istnieją 3 główne kategorie procesorów wektorowych:
Operacje zmiennoprzecinkowe ALU z przetwarzaniem potokowym przebiegają następująco:
Równoległe ALU
e) procesor superskalarny
(superscalar processor) Rozwiązanie pozwalające równolegle wykonywać wiele rozkazów. Paralelizm ma
poziomie rozkazu odnosi się do stopnia przeciętnej możliwości równoleglego wykonywania. Procesor superskalarny zawiera dwa lub więcej potoków. Potoki nie są niezależnymi obiektami - korzystają ze wspólnych zasobów, co ogranicza paralelizm. Kompilatory bądź programiści dbają o dososowanie sekwencji rozkazów do procesorów superskalarnych tak, by istniało jak najmniej zależności między następującymi po sobie rozkazami maszynowymi. Np. instrukcje: a = b + 5 c = a + 10 nie będą mogły zostać wykonane równolegle, ponieważ wartość c zależy od wyliczanego wcześniej a. Jeśliby jednak usunąć zależność i napisać równoważnie : a = b + 5 c = b + 15 Zalety :
a) typy przerwań: (przerwanie programowe, przerwanie zewnętrzne, przerwanie wewnętrzne)
// Szymski Wojciech:
przerwania programowe:
Polega na wykonywaniu zapisanych w programie rozkazów i śledzeniu przez procesor stanu urządzenia zewnętrznego, czekając na ustawienie znacznika (flagi w module sprzęgającym), że można wykonać następne przesłanie danych. Program okresowo sprawdza zawartość rejestru kontrolno-sterującego związanego z każdym urządzeniem i na podstawie ustawienia odpowiednich bitów określa czy urządzenie wymaga obsługi, czy też nie.
W tym typie przerwań obowiązuje obsługa priorytetowa (urządzenie o największym priorytecie jest testowane w każdym cyklu sprawdzania jako pierwsze)
Wada: Komunikacja z urządzeniami zewnętrznymi zajmuje czas procesora.
przerwania zewnętrzne – źródłem przerwania jest urządzenie zewnętrzne
Ten typ przerwań wykorzystuje specjalne polecania dla modułu sprzęgającego, które polecają modułowi zgłosić przerwanie, gdy np. urządzenie zewnętrzne będzie wolne. Moduł zgłasza przerwanie procesorowi, który zatrzymuje wykonywania bieżącego programu i przechodzi do obsługi odpowiedniej procedury, która jest związana z urządzeniem zgłaszającym przerwanie.
c) mechanizm obsługi przerwania
Oczywiście aby zgłoszone przerwanie w ogóle zostało obsłużone procesor musi mieć ustawione odpowiednie falgi zezwalające na obsługę przerwań. W innym wypadku zgłoszone przerwania będą ignorowane.
W obsłudze przerwań istotną rzeczą jest aspekt priorytetu. W przypadku zgłoszenia przerwania przez więcej niż jedno urządzenie wpierw obsługiwane jest to o wyższym priorytecie. Praktyczna realizacja zagadnienia może być różna np. w przypadku metody identyfikacji polegającej na przeglądaniu (patrz metody identyfikacji źródła przerwania) wyraża się kolejnością przeglądania urządzeń.
Następnie gdy konkretne przerwanie zostanie wybrane jako to obsługiwane przez procesor to przed jego obsługą procesor musi na stosie zapamiętać wszelkie dotychczasowe dane potrzebne w aktualnym zadaniu, a w szczególności wartość rejestru PC czyli w tym przypadku adres powrotny z procedury obsługi przerwania. Wszelkie potrzebne dane są odkładane na stos. Zawsze jest to wartość rejestru PC. Mogą to być także wartości i innych rejestrów, jeśli zawarte w nich dane będą potem potrzebne, a mogą zostać utracone w procesie obsługi przerwania.
Następnie do PC jest ładowany adres procedury obsługi przerwania. I skok do tej procedury. Po wykonaniu obsługi przerwania ze stosu są ściągane wcześniej włożone tam dane, a wszczególności wartość rejestru PC. Dalsze wykonywanie programu rozpoczyna się od miejsca na który wskazuje wartość ściągnięta ze stosu do rejestru PC.
Możliwe są 3 typy przesłań danych między centralną częścią komputera, a urządzeniami zewnętrznymi:
a) przesyłanie danych zrealizowane programowo
Polega na programowym przesyłaniu danych w oparciu o funkcje wejścia/wyjścia zawartych w programie. Zmusza to procesor do jałowych iteracji w pętli oczekując na dane z wolniejszych urządzeń zewnetrznych lub w oczekiwaniu na pobranie wszystkich danych od niego przez urządzenie zewnętrzne. Istotną wadą tego podejścia jest marnotrawienie mocy obliczeniowych procesora oraz niemożność jakiejkolwiek innej akcji z jego strony do czasu, gdy operacja wejścia/wyjścia się zakończy.
b) przesyłanie danych inicjowane przerwaniami
Bardziej efektywna metoda polega na wykorzystaniu przerwań, dzięki czemu urządzenia wejścia-wyjścia mogą sygnalizować procesorowi konieczność obsługi. Pozwala to zwolnić większość czasu procesora, który można przeznaczyć na bardziej pożyteczne działania, takie jak wykonywanie programów użytkownika albo zarządzanie zasobami systemowymi.
Przerwania // sprawdzić, na ile opisane przerwania i czy jest sens powtarzać
Niemal wszystkie procesory mają jedną lub więcej końcówek zgłaszania przerwań, służących do wykrywania i rejestrowania nadchodzących żądań przerwań. Gdy interfejs albo inny układ zgłasza przerwanie, jak na rysunku 7.15, wtedy procesor rejestruje żądanie jako oczekujące na obsługę. Przy końcu każdego cyklu rozkazowego procesor sprawdza, czy są jakieś żądania, i decyduje, czy je zaakceptować i obsłużyć, czy zignorować i kontynuować wykonywanie aktualnego programu. Decyzja zależy od ustawienia bitu (albo bitów) maski przerwań w rejestrze stanu procesora. Po zaakceptowaniu przerwania procesor przekazuje sterowanie do programu obsługi przerwania (ang. interrupt handler) albo inaczej procedury obsługi (ang. service routine), która wykonuje niezbędne działania, takie jak np. wysłanie znaku do drukarki.
Zanim sterowanie zostanie przekazane do procedury obsługi, procesor zachowuje zawartości licznika rozkazów PC i rejestru stanu SR, umieszczając je na stosie. Przed załadowaniem adresu procedury obsługi do licznika rozkazów procesor ustawia w rejestrze stanu maskę bitową, aby ustalić poziom priorytetu przerwania.
W przypadku samowektorującej obsługi przerwań adres początkowy jest znajdowany przez wygenerowanie numeru wektora, który związany jest z poziomem priorytetu wskazanym przez końcówki, na które zgłoszone zostało przerwanie. Na tej podstawie wyznaczany jest adres początkowy, czyli wektor w tablicy wektorów przerwań (wyjątków) przechowywanej w ustalonym miejscu pamięci.
Przy zwektoryzowanej obsłudze przerwań procesor po otrzymaniu przerwania wysyła sygnał potwierdzenia przerwania, zaznaczony na rysunku 7.15 linią przerywaną. Urządzenie odpowiada, umieszczając numer wektora na magistrali danych. Procesor czyta ten numer i używa go do indeksowania tablicy wyjątków. Po załadowaniu do licznika rozkazów adresu procedury obsługi wykonywalny jest program obsługi przerwania, który kończy się po napotkaniu rozkazu powrotu z przerwania (ang. ReTurn from Exception; RTE). Rozkaz ten odtwarza ze stosu zawartości rejestrów SR i PC i przekazuje sterowanie do przerwanego programu.
c) przesłanie danych zrealizowane przez bezpośredni dostęp do pamięci
// Stolarczyk Ziemowit:
Samo przesyłanie danych odbywa się z pominięciem procesora. Jedyny wkład procesora polega na zaprogramowani kontrolera DMA oraz na czas przesyłania danych zwolnić magistralę systemową. Pozwala to na bezpośredni dostęp urządzeń zewnętrznych (karty graficzne, karty dźwiękowe, dyski twarde itp.) do pamięci operacyjnej. Znacząc zwiększa to wydajność systemu. Ponieważ przesył danych w stosunku do możliwości procesora jest mizernie wolny. Odciążenie procesora od kontroli nad nim pozwala na wykonywanie w tym czasie innych operacji np. na danych zgromadzonych w pamięci cache (na tych z RAMu nie może gdyż magistrala jest zajęta przez kontroler DMA).
Niejednokrotnie transfer danych za pomocą kontrolera DMA jest szybszy niż zrobiłby to procesor.
// Szeliga Bartosz:
W tym trybie przesyłania CPU inicjuje transmisje sterowaną przez DMA, przesyłając do DMA adres
pamięci oraz liczbę słów do przesłania. Rozpoczynając przesyłanie, DMA najpierw testuje, czy jednostka pamięci nie jest zajęta w związku z operacją wykonywaną przez CPU, a następnie „wkrada” jeden cykl pamięciowy aby uzyskać odstęp do komórki pamięciowy. Tryb z bezpośrednim dostępem do pamięci jest preferowanym sposobem przesyłania danych w przypadku szybkich urządzeń zewnętrznych takich jak np. dyski. DMA jest procesem wykonywanym zupełnie poza