Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

AU – Addresing Unit MMU – Memory Management Unit (np.. stronicowanie) BU Bus Unit adres dane Kontrola i sterowanie PaO Prefetch (oczekiwanie) Kod programu.

Podobne prezentacje


Prezentacja na temat: "AU – Addresing Unit MMU – Memory Management Unit (np.. stronicowanie) BU Bus Unit adres dane Kontrola i sterowanie PaO Prefetch (oczekiwanie) Kod programu."— Zapis prezentacji:

1

2 AU – Addresing Unit MMU – Memory Management Unit (np.. stronicowanie) BU Bus Unit adres dane Kontrola i sterowanie PaO Prefetch (oczekiwanie) Kod programu – rozkazy IU (Instruction Unit)dekoder ROM słownik ALU EU – execution unit dane ALU CU Control Unit ALUFPUALU AU MMU

3 Realizacja programu przez taki układ przebiega następująco: Kod rozkazów jest odczytywany z pamięci RAM i umieszczany w kolejce rozkazów. Poszczególne instrukcje (słowa binarne) trafiają z kolejki do dekodera IU, który rozkodowuje rozkazy przeznaczone do wykonania - sposób kodowania rozkazów zawarty w pamięci stałej ROM (w strukturze procesora). Wydzielenie z kodu instrukcji argumentów operacji adresów danych Są one przesyłane odpowiednio do bloku wykonującego instrukcje EU i bloku adresowego AU.

4 Blok adresowy AU i zarządzania pamięcią MMU wytwarzaodpowiednie sygnały dane przekazywane do bloku zarządzania magistralami BU adres na magistrali adresowej - odczyt danych z pamięci - układ pamięci wystawia dane na magistrali danych. Dane przekazywane do bloku wykonawczego lub do kolejki rozkazów. Blok wykonujący instrukcje EU (zawierający jednostkę arytmetyczno-logiczną ALU) dokonuje porównań lub działań matematycznych na argumentach stałoprzecinkowych (argumenty zmiennoprzecinkowe są przetwarzane w FPU) Wyniki przetwarzania blok wykonujący instrukcje przekazuje do bloku zarządzania pamięcią i bloku sterującego magistralami - zapisw pamięci pod określonym adresem

5 Wszystko odpowiednio synchronizowane w czasie Układ wykonujący instrukcje EU wytwarza sygnały sterujące, przez które ma możliwość wpływu na pracę innych bloków. Układ wykonawczy EU często też przechowuje wyniki pośrednie przetwarzania danych we własnych rejestrach.

6 Rejestry procesora Na przykładzie 16 bitowych rejestrów procesorów 8086 i prostsze

7 Czym są rejestry ? Rejestry są to bardzo szybkie elementy elektroniczne posiadające zdolność zapamiętywania informacji Rozciągają się na obszarze 28 bajtów i są one w stanie czasowo przechowywać dane, adresy pamięci, wskaźniki rozkazów i stanów oraz znaczniki sterujące

8 Podział rejestrów rejestry powszechnego stosowania –w tym rejestry wskaźnikowe i indeksowe rejestry segmentowe rejestr znaczników - FLAGS i wskaźnik rozkazów SR– rejestr statusu (znaczników) IR – rejestr rozkazów MAR – rejestr adresów pamięci SPR – rejestry indeksowe GPR – rejestry robocze PC – licznik rozkazów

9 Rejestry powszechnego stosowania DLDH CLCH BLBH ALAH SI DI BP SP AX BX CX DX 0715 Rejestry wskaźnikowe i indeksowe Rejestry segmentowe CS DS ES SS 150 FLAGS IP Rejestry stanu/kontrolne 015

10 Rejestry statusu- kontrolne

11 Rejestry stanu/kontrolne FLAGS IP Rejestry stanu/kontrolne OFOF DFDF IFIF TFTF SFSF ZFZF AFAF PFPF CFCF Bity rejestru flagowego 150 0

12 rejestr przeznaczony do przechowywania dodatkowych cech wyniku operacji (np. znak, przekroczenie zakresu, znak parzystości wyniku operacji w postaci tzw. flagi (znacznika). Każdy znacznik jest bitem w rejestrze, który wskazuje czy określony stan wystąpił. Znaczniki mogą być wykorzystywane przez procesor lub programistę na dwa sposoby: ustawienie znacznika dla zapamiętania określonego stanu po wykonaniu rozkazu testowanie znacznika celem umożliwienia decyzji o sposobie dalszego postępowania (przetwarzania danych) Rejestr znaczników (flagowy) SR (status registry) lub FLAGS

13 Najważniejsze znaczniki statusu: – CF - flaga przeniesienia lub pożyczki, ustawiana przy przekroczeniu zakresu długości słowa, w którym zapisywany jest wynik (1 wystąpiło przeniesienie) – SF - flaga znaku, ustawiana gdy najstarszy bit wyniku jest równy 1 (operacje liczb ze znakiem - kod U2) – ZF - flaga zera - sygnalizująca, że wynikiem ostatnio wykonywanej operacji jest zero – OF - flaga przepełnienia, sygnalizująca przekroczenie zakresu dla operacji arytmetycznych (operacje liczb ze znakiem - kod U2) – PF - flaga parzystości (1) wskazuje na parzystą lub nieparzystą liczbę bitów o wartości jedynki – PF - flaga przeniesienia pomocniczego jest wykorzystywana przy działaniach na liczbach w kodzie BCD. Ustawiana jest gdy następuje przeniesienie lub pożyczka z najstarszego bitu pierwszej tetrady wyniku

14 – TF- znacznik pracy krokowej - ustawienie 1 pozwala na wykonanie przez procesor po wykonaniu każdego rozkazu przerwania i przejście do specjalnych procedur obsługi – IF- znacznik zezwolenia na przerwanie - ustawienie 1 powoduje odblokowanie systemu przerwań w procesorze (0 - procesor ignoruje przerwania) – DF - znacznik kierunku - umożliwia realizacje przetwarzania łańcuchów (ciągu słów) przy rosnących adresach (1) lub malejących adresach (0) Dodatkowe znaczniki kontrolne:

15 rejestry przeznaczone do przechowywania dowolnych danych i wykonywania operacji (arytmetycznych i logicznych), ale jednocześnie spełniające pewne funkcje specjalne. Szczególną funkcję pełni akumulator: Rejestry ogólnego przeznaczenia Akumulator - rejestr przeznaczony do przechowywania jednego z operandów (argumentów) wykonywanej operacji oraz wyniku wykonywanej operacji (czasami wynik może być umieszczany w innym rejestrze)

16 - są rejestrami wykorzystywanymi do adresowania pamięci operacyjnej. Rejestry te zawierają adresy początkowe segmentów: – CS rejestr segmentowy programu - wskazuje segment programu, z którego aktualnie są pobierane kolejne rozkazy do wykonania, – DS rejestr segmentowy stosu - wskazuje segment, w którym zapamiętane są zmienne używane w programie, – ES rejestr segmentowy dodatkowy - wskazuje dodatkowy segment danych, – SS rejestr segmentowy stosu wskazuje segment pamięci, w którym z definiowany jest stos. Rejestry segmentowe

17 - posiadają dwa rejestry wskaźnikowe i dwa rejestry indeksowe. Rejestry wskaźnikowe (SP, BP) są stosowane do adresowania danych w obrębie wydzielonego obszaru pamięci (stosu). Rejestry indeksowe (SI, DI) służą do adresowania danych w obszarze pamięci zwanym segmentem danych. Wszystkie rejestry mogą być wykorzystywane jako argumenty większości rozkazów arytmetycznych i logicznych. Rejestry wskaźnikowe i indeksowe

18 Wskaźnik rozkazów IP (wskaźnik instrukcji) - łącznie z rejestrem segmentowym CS adresuje kolejne rozkazy przeznaczone do wykonania. Wskazuje adres względem początku segmentu programu

19 Stos Stos jest to taka struktura danych, która stosuje metodę FILO (first-in-last-out). Stos służy do chwilowego przechowywania informacji. Podstawową cechą stosu jest to, że mamy dostęp jedynie do elementu leżącego na jego szczycie, czyli element odłożony jako ostatni będziemy zdejmować jako pierwszy. Stos jest nieodłącznie związany z rejestrami SS (segmentowy) i SP (wskaźnikowy)

20 Architektura stosu - STACK Procesor ma wskaźnik stosu i operacje są wykonywane na szczycie. STOS to specjalne rejestry: np.. A[1], A[2] do A[n]. Na początku żadne dane nie są związane ze stosem i specjalny rejestr wskaźnika stosu SP ma wartość 0 Odczyt - kopiowana wartość z pamięci do A[SP]. 1: if SP = n, stack overflow 2: else SP = SP + 1 3: A[SP] = dane Zapis - najpierw sprawdza czy rejestr zawiera użyteczną informację (jeżeli SP > 0). Jeśli nie to stack underflow, jeśli tak A[SP] jest kopiowany do pamięci i SP zmniejszane o 1.

21 Operacje arytmetyczne są wykonywane na dwóch rejestrach (A[SP] i A[SP-1]) i rezultat zapisywany do A[SP-1]. Gdy obie wartości są usunięte SP jest pomniejszane o 1.

22 Przykład operacji E = A * B + C * D Założenie: A=3, B=4, C=5, D=2 są zapisane w pamięci pod adresami od $50 do $53 Program: LOAD 50 LOAD 51 MUL LOAD 52 LOAD 53 MUL ADD

23 Instrukcja LOAD 50 A[1] = 3 SP = 1 Instrukcja LOAD 51 A[1] = 3 A[2] = 4 SP = 2 Instrukcja MUL A[1] = 12 SP = 1 Instrukcja LOAD 52 A[1] = 12 A[2] = 5 SP = 2

24 Instrukcja LOAD 53 A[1] = 12 A[2] = 5 A[3] = 2 SP = 3 Instrukcja MUL A[1] = 12 A[2] = 10 SP = 2 Instrukcja ADD A[1] = 22 SP = 1

25 Instrukcje przesyłania danych między rejestrami MOV rejestr, wartość Przykład: MOV AX,10 – umieść 10 w AX MOV CX, AX – umieść w CX wartość z AX MOV AX, [CX] – umieść w AX wartość z komórki, której adres jest w CX

26 Instrukcje wprowadzania i odbierania danych ze stosu Do wstawienia wartości na stos służy instrukcja PUSH Przykład : PUSH AX Do zdejmowania danych ze stosu służy instrukcja POP Przykład : POP AX

27 Przykład zastosowania stosu ? ? ? ? AX = ? CX = ? DX = ? BX = ? SP

28 ? ? 1 ? AX = 1 CX = ? DX = ? BX = ? SP Po wykonaniu instrukcji : MOV AX,1 PUSH AX

29 ? 2 1 ? AX = 2 CX = ? DX = ? BX = ? SP Po wykonaniu instrukcji : MOV AX,2 PUSH AX

30 3 2 1 ? AX = 3 CX = ? DX = ? BX = ? SP Po wykonaniu instrukcji : MOV AX,3 PUSH AX

31 ? 2 1 ? AX = 3 CX = ? DX = ? BX = SP Po wykonaniu instrukcji : POP BX

32 ? ? 1 ? AX = 3 CX = 2 DX = ? BX = SP Po wykonaniu instrukcji : POP CX

33 ? ? ? ? AX = 3 CX = 2 DX = 1 BX = SP Po wykonaniu instrukcji : POP DX

34 Uwagi dotyczące działań na stosie Przykład fragmentu programu zawierającego błąd :... PUSH AX;zachowaj ax PUSH BX;zachowaj bx ADD SP, 1000;dodaj 1000 do SP(wskaźnik stosu) POP BX;zdejmij bx POP AX;zdejmij cx...

35 CYKL ROZKAZOWY PROCESORA Realizując program, system mikroprocesorowy wykonuje pewne powtarzające czynności, polegające na cyklicznym pobieraniu kodów rozkazów z pamięci i wczytywaniu ich do układu sterowania, a następnie realizacji rozkazu Czas potrzebny na odczytanie kodu rozkazu z pamięci, na pobranie argumentów, na wykonanie rozkazu i przesłanie wyniku operacji nazywa się cyklem rozkazowym (instrukcyjnym) Cykl rozkazowy składa się z faz pobierania (kodu rozkazu, pobierania argumentu) i wykonania rozkazu.

36 zawartość rejestru segmentowego *16 podaje adres początku segmentu od tego początku odsuwamy się o liczbę komórek podaną w adresie efektywnym adres efektywny jest 16 bitowy to pozwala zaadresować 65536B=64kB pamięć jest widziana przez procesor jako okno O wielkości 64kB okno to można przesuwać przeładowując rejestry segmentowe Interpretacja adresu fizycznego

37

38 Rejestry ALU Cache PaO Rejestry ALU Cache Dwa procesory fizyczne Rejestry1 Wspólne ALU Wspólny Cache Rejestry2 PaO Dwa procesory logiczne

39 Już w Pentium I były 2 potoki 3 mikrooperacje / cykl zegara Czyli procesor 3GHz ok. 9 mln mikrooperacji/s Ale nie jest 100 % bo są przestoje (uzależnienia, błędne spekulacje, odwołania do pamięci) Jeśli czegoś nie ma w cache L1 L2 L3 to odwołania do PaO zajmują wiele cykli zegara Poza tym PaO jest kilka razy wolniejsza – obecnie kilka ns

40

41

42 PIPELINE – przetwarzanie potokowe Jak taśma produkcyjna (Ford) – jednocześnie kilka rozkazów

43 Schemat przetwarzania potokowego 4 podstawowe czynności (niektóre jeszcze rozpisane na mniejsze) : 1.Pobranie – PREFECH, PF – zapełnianie kolejki w pamięci podręcznej L1, ewentualnie pośredniej L2 2.Dekodowanie – DECODE, DE – analiza kodu rozkazu (przedrostki i argumenty), obliczenie efektywnego adresu argumentów 3.Wykonanie – EXECUTE, EX - pobranie argumentów i akcje na nich 4.Zakończenie i zapis wyników – WRITE BACK, WB – wynik do pamięci lub rejestrów

44 Adres fizyczny= 16 x Segment +Offset Przykładowy rozkaz: add ax, [bx] Dodaj zawartość AX do komórki, której adres jest w BX, wynik do AX 1. PF pobranie kodu instrukcji 2. DE (16xDX)+BX 3. EX – dostęp do komórki o adresie (16xDX)+BX, operacja dodawania do AX 4. WB – umieszczenie wyniku w AX Dostęp do pamięci

45 Hyper-threading (simultaneous multitherading) ang. THREAD - WĄTEK Równoczesna wielowątkowość Wieloprocesorowość logiczna Wykorzystanie? Internet, MPEG lub MP3 Rozpisanie na wątki – wątek to ciąg operacji mogący być wykonany niezależnie od innych


Pobierz ppt "AU – Addresing Unit MMU – Memory Management Unit (np.. stronicowanie) BU Bus Unit adres dane Kontrola i sterowanie PaO Prefetch (oczekiwanie) Kod programu."

Podobne prezentacje


Reklamy Google