Technika Cyfrowa (mazurkiewicz) -wyklady, edu, el, pwr, Technika Cyfrowa (mazurkiewicz) -wyklady


Cyfrówka - wykład 1 (24. luty 2003)

Organizacja komputerów:

Elementy komputera:

Elementy te połączone są magistralami (przewodami); rodzaje magistral:

PROCESOR - budowa

0x08 graphic

0x08 graphic

procesor 8051

ALU - 8-bitowa, wykonuje operacje arytmetyczne i logiczne (XOR, inne podstawowe) stałoprzecinkowe, operacje logiczne również na pojedynczych bitach.

PSW - słowo stanu procesora - 8 bitów

D7

D6

D5

D4

D3

D2

D1

D0

CY

AC

F0

RS1

RS0

OV

-

P

D7 (MSB): CY - przepełnienie

D6: AC - przeniesienie połówkowe (przy kodzie BCD)

D5: programowalny

D4, D3: do wyboru jeden z czterech banków rejestru

D2: OV - znacznik nadmiaru (w kodzie U2)

D0: parzystość - parzysta lub nieparzysta liczba jedynek w akumulatorze

PC - 16-bitowy

SP - ograniczony

ACC - akumulator - 8-bitowy, operacje arytmetyczne i logiczne

B - rejestr B - mnożenie i dzielenie (dzielnik albo mnożnik), reszta z dzielenia

R0...R7 - 8-bitowe, rejestry ogólnego przeznaczenia, R0 i R1 mogą służyć do adresowania. Cztery zestawy tych rejestrów, tylko jeden może być aktywny.

Pamięć: 128 komórek RAM, 4k ROM

4 porty: P0, P1, P2, P3 - porty równoległe, P0 jako magistrala danych i część magistrali adresowej (młodsza część), P2 jako starsza część magistrali adresowej.

Dodatkowo rejestry specjalne, układy czasowo-licznikowe (3 sztuki).

LISTA ROZKAZÓW PROCESORA

Jest funkcjonalnie pełna - nie ważna jest budowa listy rozkazów, ile jest rozkazów ani jakie są, ale każdy program da się opisać i wykonać tym procesorem - co byśmy nie wymyślili, da się zrobić, ograniczenia to głównie czas wykonania i brak pamięci.

Podział ze względu na budowę listy rozkazów:

W 8051 jest 111 rozkazów.

GRUPY ROZKAZÓW

Wykonanie rozkazów w procesorze:

0x01 graphic

Ile czasu jest potrzebne na wykonanie rozkazu? Tam, gdzie jest kontakt z pamięcią, I/O - 3*T. W sumie około 14*T.

Jak to przyspieszyć?

S1

S2

S3

S4

S5

S6

S1

S2

S3

S4

S5

S6

rozkaz 1

rozkaz 2

0x08 graphic

0x08 graphic

S1

S2

S3

S4

S5

S6

3T

0x08 graphic

S1

S2

S3

S4

S5

S6

3T

0x08 graphic
S1

S2

S3

S4

S5

S6

18T

Wady - niektóre S trwają T, a inne 3T. Rozwiązanie - wszystko po 3T. Wada - wykonanie po 18T, ale za to kolejne rozkazy są wykonywane po 3T, a to już całkiem nieźle :)

Inny problem - PC jest tylko jeden, skąd wziąć kolejne?

Cyfrówka - wykład 2 (3. marzec 2003)

S1

S2

S3

S4

S5

S6

3T

0x08 graphic
0x08 graphic

S1

S2

S3

S4

S5

S6

3T

0x08 graphic
S1

S2

S3

S4

S5

S6

18T

Rozkaz następny - ten po bieżącym wykonywanym, wtedy 1 licznik PC wystarcza (jeśli program jest wykonywany liniowo). Jest to przetwarzanie potokowe.

Liniowość może być zachwiana - poprzez:

Skoki - kiedy znamy nowe miejsce wykonania? 3. etap - liczenie adresu efektywnego, dla skoku warunkowego - w 5. etapie (wykonanie), najpierw testowanie warunków.

Jeśli wystąpi skok to procesor może:

  1. przeczekać - dla skoku bezwarunkowego czekamy do S3, dla warunkowego do S5 (i tracimy takt procesora jeśli skoku nie ma);

  1. nie martwię się - pobieramy dalsze rozkazy „bez zastanowienia”, bo dla >0,5 przypadków skoków nie ma, poza tym jak jednak będzie skok i kilka taktów pójdzie na marne to nic strasznego się nie stanie. Jednak w tym podejściu następuje przepływ bezużytecznych informacji;

  1. ORMO czuwa :) - wymagana specjalna konstrukcja procesora, procesor wykonuje działania potokowe i jeszcze jak pozna miejsce nowego działania programu to buforuje te rozkazy bez przetwarzania ich. Jeśli skok się wykonał - to już mamy te rozkazy i je dekoduje, itd. - przyspieszone działanie.

Przetwarzanie potokowe - wiele kolejnych rozkazów realizowanych nie do końca równolegle („na zakładkę”).

SYSTEM PRZERWAŃ PROCESORA

System przerwań - „skrzynka pierwszej pomocy”. Zjawiska nieprzewidziane:

  1. zagrożenie natury sprzętowej (awarie elementów);

  2. zagrożenie programowe (np. dzielenie przez zero);

  3. usługi dla użytkownika.

Jak sobie poradzić?

  1. wyłączenie sprzętu, zapisanie danych

  2. użytkownik zleca systemowi wykonanie czegoś.

„Recepty” - procedura, procesor porzuca to co robił i ją wykonuje:

Działanie systemu przerwań:

Kiedy jest przerwanie, to:

  1. procesor sprawdza zgłoszenie przerwania;

  1. wyłącznie systemu przerwań (opcjonalnie) - procesor przyjmuje jedno przerwanie do obsługi (i tylko 1), inne nie są realizowane - muszą poczekać. Jest to funkcja opcjonalna, ponieważ jeśli pojawi się sprawa poważniejsza to procesor się nią zajmuje;

  1. zachowanie stanu procesora (zapamiętanie tego co się to tej pory działo):

Zachowanie stanu może być realizowane:

4) identyfikacja przerwania - procesor uaktywnia linie odpowiedzi na przerwanie (Int Ack - interrupt acknowledge).

Do procesora:

ARBITRAŻ PRZERWAŃ (określa kolejność wykonywania przerwań).

0x01 graphic
0x01 graphic
0x01 graphic

1. równoległy 2. szeregowy 3. równoległo - szeregowy

1. - wszystkie urządzenia są przypięte do dekodera przerwań, który ustala kolejność zgłoszenia przerwania do procesora. Numeracja wejść decyduje o priorytecie przerwań. Priorytet może być wędrujący - obsłużony idzie na koniec kolejki

2. - podaj dalej - urządzenia zgłaszające Int Req są łączone w jeden sygnał

3. - połączenie 1. i 2. - dekodery przerwań są przypięte w sposób szeregowy - rozwiązanie dobre dla wielu urządzeń.

  1. skok do procedury obsługi przerwania,

  1. powrót z obsługi przerwania - to co w 2) i 3), tylko w odwrotnej kolejności:

SYSTEM PRZERWAŃ W 8051

  1. 5-6 źródeł przerwań:

  1. przerwania mogą być maskowane (wyłączane) - w 8051 w sposób programowy (w 8-bitowym rejestrze IE)

EA

-

ET2

ES

ET1

EX1

ET0

EX0

Nr bitu

7

6

5

4

3

2

1

0

EA - pozwala zamaskować wszystkie przerwania (1=wszystko włączone, 0=wszystko wyłączone)

ET2 - WŁ/WYŁ #2

ES - port szeregowy

ET1 - #1

EX1 - przerwania zewnętrzne zgłaszane linią INT1

ET0 - #0

EX0 - INTO

Cyfrówka - wykład 3 (10. marzec 2003)

Słowa sterujące i kontrolne SFR

Maska przerwań

Nr bitu (hex)

AF

AE

AD

AC

AB

AA

A9

A8

EA

-

ET2

ES

ET1

EX1

ET0

EX0

MSB

LSB

Przerwania od:

PRIORYTET PRZERWAŃ - dwuetapowy:

  1. użytkownik może ustalić - definiuje programowo posługując się rejestrem IP:

-

-

PT2

PS

PT1

PX1

PT0

PX0

MSB

LSB

PT2, PT1, PT0 - od układów czasowo - licznikowych

PS - od portu szeregowego

PX1 - priorytet przerwania zewnętrznego zgłaszanego linią INT1

PX0 - priorytet przerwania zewnętrznego zgłaszanego linią INT0

Dwa poziomy - wyższy i niższy. Użytkownik może ustawić priorytety dowolnie.

Przyjście przerwania o wyższym priorytecie powoduje przerwanie przerwania o niższym priorytecie :).

Przyjście przerwania o niższym priorytecie nie powoduje przerwania przerwania o wyższym priorytecie :)).

Jak przyjdą 2 przerwania o tym samym priorytecie, to wtedy obowiązuje następująca kolejność:

  1. 0x08 graphic
    INT0

  2. #0

  3. INT1

  4. #1

  5. PS

  6. #2

Ta sekwencja jest niezmienna, spadek priorytetu uaktywnia się wtedy, gdy przychodzi kilka przerwań o tym samym priorytecie.

PROCEDURY OBSŁUGI PRZERWAŃ

Adresy stałe:

INT0 -> 3 hex

INT1 -> 13 hex

#0 -> B hex

#1 -> 1B hex

PS -> 23 hex

#2 -> 2B hex

Gdy był dostęp do rejestrów IE, IP to system nie sprawdza przerwań (dopiero po wykonaniu następnego rozkazu).

Gdy procesor wraca z procedury przerwania - odtwarza swój stan i powraca do wykonania programu zaleconego, wtedy też nie sprawdza przerwań - dopiero po wykonaniu następnej instrukcji w programie.

DMA - układ bezpośredniego dostępu do pamięci (Direct Memory Access)

Kiedy procesor za bardzo zajmuje się obsługą urządzeń WE/WY ,a nie programem, DMA ma odciążyć procesor, czyli pobiera od układu WEJ do pamięci i z pamięci do układu WYJ. Można też skopiować fragment pamięci z jednego miejsca w drugie.

Komunikacja za pomocą magistral -> procesor zarządza magistralami, ale DMA też potrzebuje do nich dostępu na poziomie procesora.

Zarządzanie magistralami - tryby pracy DMA:

  1. blokowy

  2. z wykradaniem taktów.

1. Tryb blokowy - jak DMA przejmie magistralę od procesora, to prowadzi transmisję od początku do końca - jest właścicielem magistrali na cały czas trwania transmisji.

DMA upora się tak szybko jak to możliwe - cenne, gdy układ WE przesyła dużo danych (np. skaner).

Procesor nie ma wtedy dostępu do magistrali - nie może pobierać argumentów, nie może wysyłać rezultatów, nie może pobrać następnego rozkazu, itp.

Wniosek - DMA działa sprawnie, procesor nie.

2. Tryb z wykradaniem taktów - właścicielem magistrali jest procesor, DMA dostaje magistralę tylko wtedy, gdy procesor jej nie potrzebuje.

Wniosek - DMA przesyła dane „kawałek po kawałku”, procesor działa bez zakłóceń.

To procesor programuje układy DMA.

Rejestry DMA:

  1. adresowy - RA - procesor zapisuje początek adresu pamięci wykorzystywany przez DMA

  2. licznika - RL - ilość słów, które DMA ma przyjąć albo wysłać, czyli system „początek i ile”

  3. sterujący - RS - definiowane parametry transmisji: czy to odczyt, zapis czy kopiowanie pamięci

  4. statusowy - RStat. - raport z działania DMA. Jeśli DMA zgłosi przerwanie - jak jest błąd lub problem, RStat. podpowie rodzaj błędu.

0x01 graphic
0x01 graphic
0x01 graphic
0x01 graphic

PROCESOR:

RD, WR (aktywne poziomem niskim) - linie odczytu i zapisu

MREQ, IOREQ - linie żądań dostępu do pamięci i układów WE/WY

BUSRQ - żądanie dostępu do magistrali

BUSACK - potwierdzenie zwolnienia magistrali

DMA:

0x08 graphic
Adres bo mamy magistralę, czyli = procesor

0x08 graphic
IOREQ bo układ wejściowy w trybie programowania

0x08 graphic
INT zgłoszenie przerwania do procesora

HOLDRQ - linie WYJ - chce się skontaktować z BUSACK

HOLDACK - kontakt z BUSACK

DMARQ - wejściowa linia

DMAACK - linia wyjściowa

0x08 graphic

Przykład układu DMA - INTEL 8257 (8237A)

- ma 4 niezależne kanały DMA (możliwe są 4 transmisje przez kanały DMA),

- układ wyboru priorytetu (bo są 4 kanały): #0 ma najwyższy priorytet ↑↑ .......... #3 ↓↓; obsłużony na koniec kolejki,

- umożliwia hierarchiczne podłączanie kilku układów DMA,

- układ może pracować w trybie zgodnym z zapotrzebowaniem - np. w deklaracji transmisji „nie więcej niż...”

Cyfrówka - wykład 4 (17. marzec 2003)

Pamięci

Podstawowe parametry:

  1. pojemność - ilość informacji cyfrowej jak może być zgromadzona

  1. długość (szerokość) pamiętanego słowa. Organizacja struktury pamiętającej inf. - ilość bitów możliwych do obsłużenia naraz w procesie zapisu/odczytu. Ilość tych słów wyznacza pojemność

  1. czas dostępu - czas od rozpoczęcia operacji do zakończenia (od odczytu pamięci do zapisania danych na magistrali danych).

Dodatkowe linie:

RAS ← (Row Address Select) - pomagają wybierać wiersz

CAS ← (Column Address Select) - pomagają wybierać kolumnę

Klasyfikacja pamięci:

ROM - Read Only Memory (tylko do odczytu)

RAM - Random Access Memory - dostęp swobodny (zapis/odczyt)

ROM:

  1. Mask ROM

  2. PROM

  3. EPROM

  4. EEPROM

  5. EAPROM

  1. Mask ROM - tylko do odczytu, w niej jest inf. o procesie produkcji, dostęp do inf. zaraz po włączeniu. Dane nie ulegają utracie po wyłączeniu zasilania, duża szybkość, niewielka pojemność

  1. PROM - programowalna - sprzedawana jako czysta, programowanie tylko raz poza układem cyfrowym, w którym ma pracować, działa jak MaskROM, bardzo szybkie, niewielka pojemność

  1. EPROM - Erasable Programmable ROM - możliwy zapis i kasowanie wielokrotne, zmiana struktury poza systemem, na drodze elektrycznej. Tranzystory z pływającą bramką, w stanie czystym same jedynki. Kasowanie - naświetlanie UV - zjawisko fotoelektryczne zewnętrzne w tranzystorach, kasowanie całości. Programowanie - setki/tysiące razy. Mogą mieć duże pojemności, nie są zbyt szybkie

  1. EEPROM - elektrycznie kasowalne EPROMy, własności jak wyżej

  1. EAPROM - możliwość wybiórczego kasowania i programowania, kasowanie elektryczne

RAM:

  1. DRAM

  2. SRAM

  1. DRAM - elementy pamiętające - wartość ładunku na kondensatorach. Samo zasilanie nie wystarczy, kondensatory tracą ładunek - jest konieczne odświeżanie informacji, inaczej na kondensatorach mogą odłożyć się dowolne ładunki

  1. SRAM - przerzutnik - element pamiętający - musi być utrzymana wartość logiczna ⇒ konieczne zasilanie

Odczyt i zapis

Odczyt z ROM (lub SRAM):

  1. ustawienie adresu (odwołanie się do pamięci) - linie adresowe (np. A0 ... A14), ile linii - zależy od tego ile pamięci jest w systemie. Na podstawie adresu zostaną zaktywowane linie MREQ lub im odpowiadające

  1. CE/ (Chip Enable) - linie wyboru określonego układu pamiętającego, aktywne stanem niskim

  1. OE/ albo RD/ - Output Enable/Read - linie odczytu - ustawia akcję odczytu

  1. to wszystko wysyłane do układu pamiętającego na linię adresową (np. D0 ... D7)

Zapis do SRAM

Wybór adresu i układu jak poprzednio, zmiana linii WRITE - dane z pamięci muszą być ustawione przed ustawieniem linii WRITE w stan aktywny (przez procesor lub układ DMA). Procesor lub DMA musi utrzymać dane przez czas wymagany dla pamięci, ale bez zwrotu informacji o tym, że zapis się udał czy nie.

Odczyt z DRAM:

Pojawiają się linie RAS i CAS

  1. na magistrali adresowej jest podawany adres wiersza - jak się adres ustawi, to

  2. linia RAS przechodzi w stan aktywny (poziom niski) - potwierdzenie, że na magistrali jest adres wiersza

  3. na magistrali adresowej przełączanie adresu (stan niestabilny) - żeby pojawił się adres kolumny - linia CAS przechodzi w stan aktywny (poziomem niskim)

Po zakończeniu adresacji - wskazanie linii MREQ.

Gdy RAS i CAS są w stanie aktywnym, linia READ przechodzi w stan aktywny - zaczynamy realizować odczyt.

Na magistrali danych dane są odczytywane (pobierane).

Czas dostępu - od momentu rozpoczęcia adresacji do odczytu danych (tACC) - maksymalny. Można też wymyślać inne, ale po co . Koniec odczytu - linie RAS i CAS przechodzą w stan nieaktywny.

Zapis

Zmiany:

  1. adres wiersza, aktywna linia RAS (do końca procesu zapisu)

  1. adres kolumny, aktywna linia CAS (do końca procesu zapisu)

Ukształtowanie danych na magistrali danych, linia WR uaktywnia się.

Odświeżanie DRAM

  1. w trybie skupionym. Dla każdego elementu odczyt i zapis. Tryb prosty, ale: fragment pamięci zawsze nieaktywny, mocne obciążenie dla systemu - ruch na magistrali, lepsze jest odświeżanie wyrywkowe (pojedynczych komórek), typy:

  1. odświeżanie sygnałem RAS/ (RAS only refresh): - nie jest podawany adres kolumny, tylko adres wiersza. Jest specjalny licznik, który wybiera kolumny - i z tego licznika jest pobierana ta wartość (po upływie timeout-u) i ta komórkę odświeżamy (i tylko tą). Małe obciążenie dla procesora - adres wiersza i odświeżenie tylko jednej kolumny. Procesor musi sensownie wybierać adresy wiersza

  1. odświeżanie ukryte. Odczyt/zapis kończy się kiedy linia RAS jest nieaktywna, ale CAS jest aktywna - mamy adres kolumny, potem RAS znowu aktywna, itd. Zaleta: odświeżanie wyrywkowe, przy okazji odczytu/zapisu, procesor raz podał adresy i sprawa załatwiona, adres sam się wygeneruje. Zawsze zdążymy z odświeżeniem, nic nie będzie pominięte

  1. CAS/ przed RAS/ - najpierw w stan aktywny linia CAS, potem RAS, magistrala adresowa nie transportuje adresu, adresy wybierane z liczników. Na końcu odświeżania przechodzimy do normalnego zapisu/odczytu. Odświeżanie wybiórcze, minimalnie angażuje procesor (musi uaktywnić RAS i CAS, nic poza tym)

  1. Odświeżanie automatyczne - układ pamięci odświeża się sam, procesor nie jest angażowany

Specjalne tryby pracy układów DRAM (kiedy chcemy zminimalizować czasy dostępu)

  1. odczyt - modyfikacja - zapis. Zapis jest w to samo miejsce, co odczyt - jedna operacja, oszczędzamy na adresacji. Wstrzymanie pracy magistrali - np. DMA nie może pracować

  1. tryb stronicowy - ograniczenie ilości adresowania. Adres wiersza jest stały, kolumny odczytywane z jednego wiersza (adres kolumny się zmienia)

  1. tryb półbajtowy, RAS aktywna, CAS się zmienia (następne kolumny z tego samego wiersza)

Cyfrówka - wykład 5 (24. marzec 2003)

Tworzenie bloków pamięciowych

2 akcje:

- zwiększanie szerokości pamiętanego słowa (k-bloków o organizacji 2m słów*n, chcemy zrobić szerokość słowa n*k)

0x01 graphic

wszystkie układy jednocześnie włączone, chcemy odczyt/zapis w każdym z układów

- zwiększanie ilości pamiętanych słów. Linie danych - do każdego z układów pamiętających; linia adresowa - też, ale wyodrębnione (o adresach An ... An+1 - najstarsza część adresu) do dekodera. W danej chwili wybranie 1 układu pamiętającego odczyt/zapis też tylko w tym układzie; wiele układów odczyt/zapis taki jak w pojedynczym układzie

Współadresowanie i adresowanie izolowane pamięci i układów WE/WY

  1. współadresowanie - z punktu widzenia procesora, pamięć + I/O to jeden blok - pamięć;

0x08 graphic

zalety:

- w liście programów danego procesora jest więcej instrukcji odnoszących się do pamięci niż do I/O ⇒ wygodna obsługa I/O

- zanika I/OREQ, MEMRQ - do zaadresowania wystarczą linie adresujące

wady:

- nie możemy użyć max. pamięci operacyjnej - ograniczona przestrzeń związana z pamięcią

- mała szansa reorganizacji

- wolniejszy dostęp (potencjalnie) do układów I/O

podsumowanie:

- układy dedykowane do obsługi określonego zadania (np. w silniku)

- dla komputera ogólnego przeznaczenia to nie ma sensu

  1. adresowanie izolowane - 2 odrębne zasoby, bloki się nie nakładają, ale te same adresy odpowiadają MEM i I/O dla pewnego zakresu

0x08 graphic
wady:

- muszą być linie MEMRQ i I/ORQ - żeby rozgraniczyć

- dostęp do I/O jest nie zawsze wygodny

zalety:

- brak ograniczeń na ilość pamięci i adresów I/O

- brak problemów z rozbudową

podsumowanie:

- sprawdza się w komputerach ogólnego przeznaczenia, tak są zbudowane PC-ty

Konstrukcja pamięci w 8051

0x08 graphic

- architektura harwardzka - odseparowanie pamięci programu od pamięci danych:

  1. MEM kodu - max. 64 kilobajty pamięci

+ pamięć zewnętrzna

+ pamięć wewnętrzna

0x08 graphic

Strony - po 2 kilobajty; odwoływanie do pamięci - PC. Pamięć kodu - adresowanie w sposób rejestrowy pośredni, rejestr pośredni - PC. MOVC - kontakt z pamięcią, zaczerpnięcie danych.

PC 16 bitowy, bity 11-15 (najstarsze) - wskazują stronę (blok 2-kilowy), bity 0-10 - adres.

Pamięć danych

- max. 64 kb

+ wewnętrzna - max. FF (245 bajtów) albo 128 bajtów

+ zewnętrzna - reszta

- odwołania

+R0 i R1 - odwołanie do pamięci danych - adresowanie rejestrowe pośrednie

MOV A,@R0 - pobranie do A z wewn. pamięci danych, zawartość R0 jest adresem wskazującym na wewn. pamięć danych

MOVX A,@R0 - pobranie do A z zewn. pamięci danych, tu 8 bitów nie wystarczy - potrzebny jest rejestr DPTR

DPTR - rejestr. pośrednie przez DPTR, np. MOVX A,@DPTR

- pamięć wewnętrzna:

+ adresy 0 do 31 - zestawy rejestrów od R0 do R7

+ od 32 do 47 - obszar adresowany bitowo

+ od 48 do 127 (7FH)

+ 80H (128) - 255 (FFH) - rejestry specjalnego przeznaczenia - blok SFR

Cała pamięć wewnętrzna może być adresowana w trybie bezpośrednim.

Stos znajduje się pod adresem 07 (po restarcie).

Podsumowanie: obszar pamięci użytkowej: od 0 do 127, rejestry specjalne: od 128 do 255

Dla procesorów 8052 - modyfikacja

SFR - rejestry specjalne, tryb adresowania bezpośredniego0x08 graphic

Blok rejestrów specjalnych - pośredni tryb adresowania

Przyłączanie zewnętrznych pamięci

8 linii adresowych, 8 linii danych. Magistrala danych - linie portu od P00 do P07, linie te pełnią też rolę młodszej części magistrali adresowej (multipleksowana (przełączana) linią ALE).

Port 7: P3.7 - read, P3.6 - write. Wykorzystanie starszej części adresu. P2 - starsza część magistrali adresującej.

Przyłączanie zewnętrznej pamięci programu.

Linia PSEN (budowa - bramka AND razem z READ) - sygnalizuje dostęp do zew. pamięci programu. Można połączyć pamięć programu i danych

Pamięć podręczna - CACHE

Ma lepsze parametry niż zwykła pamięć, niewielka, zawarte są w niej instrukcje często potrzebne procesorowi.

Cechy:

+ współczynnik trafienia (hit ratio) - prawdopodobieństwo, że dana potrzebna procesorowi jest w pamięci cache

+ miss ratio - danej nie ma w cache

0x01 graphic

Które dane usunąć z cache? Algorytmy usuwania danych:

+ uwzględnianie informacji statusowej

- LRU (+)

- MIN (-)

+ bez uwzględniania informacji statusowej

- FIFO (+) (first in first out) - usunięta ta, która jest najdłużej pod względem czasu trwania

- RANDOM (+)

LRU - usuwa się daną, która najdłużej nie była w użyciu

MIN - usuwa tę, która najdłużej w przyszłości nie będzie potrzebna (bardzo fajnie, ale jak to zrobić?)

Cyfrówka - wykład 6 (31. marzec 2003)

Oprócz tych 4 mechanizmów, są jeszcze mechanizmy uaktualniania pamięci podstawowej:

+ każdy zapis do cache automatycznie do pamięci podstawowej - na wypadek awarii cache, ale spada prędkość działania cache => rzadko stosowane

+ dane do pamięci podstawowej - tylko wtedy, gdy mają być skasowane z cache - wydajniejszy sposób

+ kopiowanie danych przed usunięciem i jeszcze dodatkowo badani czy dane uległy zmianom

Organizacja pamięci cache

+ cache o bezpośrednim mapowaniu (direct mapping) - dane z pamięci głównej brane są z pewnym krokiem

0x08 graphic

ZALETA: oszczędność w czasie przeszukiwania pamięci cache

WADA: zapotrzebowanie procesora może być takie, że będzie potrzebował dużo danych z pamięci głównej, a cache jest mała => cache mało przyspiesza działanie procesora

+ cache w pełni asocjacyjna - w danej komórce cache może być dana z dowolnego obszaru pamięci głównej, dane z każdej komórki pamięci podstawowej

0x08 graphic

ZALETA: unikamy poprzedniej wady, można odwzorować duży fragment pamięci głównej w cache

WADA: trudno znaleźć daną w pamięci głównej

+ pamięć cache zbiorowo - asocjacyjna

0x08 graphic

Cache dzielone na mniejsze bloki, które są odpowiedzialne za bloki pamięci głównej. Obszary pamięci są ze sobą powiązane.

ZALETY:

- wstępne uporządkowanie

- dość duża elastyczność

Każde z tych 3 rozwiązań możemy spotkać - nie ma „lidera”

Zarządzanie pamięcią operacyjną

Pamięć główna:

- podrzędna - często tworzona też z innych urządzeń, np. fragmentów dysku

- nadrzędna - zawsze pozostaje pamięcią półprzewodnikową

Pamięć podrzędna - nie powinna być pamięcią, do której system często się odwołuje, raczej do składowania informacji

Pamięć nadrzędna jest dzielona na mniejsze struktury:

- stronicowanie - podział na bloki o jednakowej wielkości. Blok - najmniejsza jednostka jaka może być przydzielona np. programowi. Stronicowanie - wygodniejsze z punktu widzenia sterowania pamięcią, po zakończeniu np. programu nowa strona może zastąpić stare „cegiełki”. Wada - często zadanie nie potrzebuje całego bloku (np. tylko parę bitów)

- segmentacja - zmiana wielkości bloku. Po zakończeniu programu mogą zostać luki po przydzieleniu bloku innemu procesowi

Cechy pamięci:

+ protekcja (zabezpieczenie)

+ udostępnianie (współdzielenie)

Mechanizmy alokacji/relokacji stron (segmentów):

+ sposób statyczny - przydzielenie zasobów w momencie uruchomienia programu, później bez zmian aż do końca

+ dynamiczny - uruchomienie nowego programu powoduje przydzielenie zasobów, natomiast zakończenie programu powoduje analizę rozdzielenia stron/segmentów

Dla mechanizmu dynamicznego:

- lokalność danych:

+ czasowa - warto rozmieścić dane w pobliżu, ale działania na tych danych będą ustawiane w określonym porządku (np. dla pętli niekoniecznie po kolei w komórkach)

+ przestrzenna - warto, żeby dane znalazły się w kolejnych strukturach/komórkach pamięci, np. tablica

Zbiór pracujący - lokalność i czasowa i przestrzenna

Koprocesor arytmetyczny

Jest wyodrębnioną częścią procesora, nie jest w stanie pełnić funkcji procesora podstawowego.

Procesor jest odpowiedzialny za wykonanie programu, koprocesor śledzi wykonanie programu i pozostaje „w gotowości”. Koprocesor posiada własną listę rozkazów, niemożliwych do wykonania przez procesor podstawowy. Koprocesor „wkracza do akcji”, gdy procesor podstawowy napotyka rozkaz koprocesora.

Rozkaz jest pobierany do rejestru IR → dekodowanie rozkazu → wykrycie, że jest to rozkaz dla koproc. → „ciało” rozkazu przesłane do koproc. (do odpowiednika rejestru IR koproc.).

Koproc. jest pozbawiony możliwości:

- pobrania adresu czerpania danych, wysłania rezultatów (wyznaczenie adresu efektywnego)

- pobrania rozkazu.

Koproc. wywalcza dostęp do magistrali i pobiera argumenty rozkazów, które ma wykonać. Oba procesory „walczą” o magistralę - koproc. pracuje w trybie „wykradania taktów”.

0x01 graphic

Rejestr znaczników - 2 bity:

00 - liczba zwykła

01 - liczba zero

10 - zawartość specjalna

11 - rejestr „pusty”

Procesory mogą pracować na liczbach stałoprzecinkowych.

Formaty liczb stałoprzecinkowych:

    1. słowowy całkowity (word integer) - U2, 16 bitów

    2. krótki całkowity (short integer) - U2, 32 bity

    3. długi całkowity (long integer) - U2, 64 bity

    4. BCD upakowany (packed BCD) - 16 bitowy BCD. BCD - 18 cyfr+znak ⇒ zajętych 80 bitów (cały rejestr)

Formaty zmiennoprzecinkowe:

    1. format krótki rzeczywisty (short real). 1 bit na znak, 8 bitów na część wykładniczą, 24 bity na cz. ułamkową

    2. format długi rzeczywisty. 11 bitów na wykładnik, 53 bity na cz. ułamkową - lepsza precyzja

    3. format rzeczywisty rozszerzony - 16 bitów na wykładnik, 64 bity na część ułamkową - maksymalne wykorzystanie 80 bitów

Formaty danych:

znak (0=+)

S

wykładnik

E

ułamek

F

Obiekt

0

MAX

≠0

Plus nieliczba (+NAN)

0

MAX

0

+∞

0

0<E<MAX

≠0

Liczba dodatnia

0

0

≠0

Liczba dodatnia w postaci nieznormalizowanej

0

0

0

+0

1

0

0

-0

1

0

≠0

Liczba ujemna w postaci nieznormalizowanej

1

0<E<MAX

≠0

Liczba ujemna

1

MAX

0

-∞

1

MAX

≠0

Minus nieliczba (-NAN)

Ograniczanie precyzji:

  1. IC (infinity control) - np. możemy ustawić tylko +∞ (-∞ nie ma)

  2. PC (precision control):

    1. 00 24 bity

    2. 10 53 bity

    3. 11 64 bity

    4. 01 zarezerwowane

  3. RC - zaokrąglanie:

    1. 00 - do liczby najbliższej

    2. 01 - w dół

    3. 10 - w górę

    4. 11 - w kierunku zera

Przyczyny przerwania:

PE - precission - utrata dokładności

UE - underflow - niedomiar

OE - overflow - nadmiar

ZE - zero divide

DE - denormalized operand - argument w postaci niunormowanej

IE - invalid operation - błędna operacja

Wszystkie przerwania mogą być maskowane (wyłączone) przez użytkownika

Lista rozkazów:

- przesłań (wymiany danych)

- arytmetyczne

- porównania i testowania

- wykonywanie funkcji przestępnych (new!)

- ładowanie stałych (new!)

- operacje sterujące

Cyfrówka - wykład 7 (7. kwiecień 2003)

Lista rozkazów koprocesora - uzupełnienie:

- rozkazy przesłań

- rozkazy arytmetyczne

- porównywanie i testowanie

- funkcje przestępne - gotowe rozkazy do wyznaczania wartości funkcji, np. trygonometrycznych:

FPTAN FPATAN F2XM1 (2x-1) FYL2X (ylog2x) FYL2XP1 (ylog2(x+1))

- ładowanie stałych - np. dla liczby Π - określona precyzja liczby, np.:

FLD2 (0) FLDPI (Π) FLDL2E (log2e) FLD1 (1) FLDL2T (log210)

- sterowanie

Układy I/O (WE/WY) procesora 8051

Port szeregowy - wprowadzenie i wyprowadzenie danych szeregowo w czasie - w kolejnych taktach zegara, kolejno „bit po bicie”. Co najmniej 3 przewody - we, wy, GND (masa)

0x01 graphic

bufor szyny danych - pośredniczy w wymianie danych (magazynowanie), zamiana postaci danych z równoległej na szeregową

bufor nadajnika - tu jest gromadzone słowo do wysłania i wysyłane bit po bicie przez linię TxD razem z informacją zabezpieczającą

sterowanie nadajnika - powoduje właściwą transmisję

TxC - przebieg taktujący pracę nadajnika

TxE i TxRDY - świadczą o gotowości nadajnika

TxE - Transmiter Empty - ustawia się później, gdy nadajnik skończy pracę

TxRDY - ustawia się wcześniej niż TxE

bufor odbiornika - RxD - dane odbierane poprzez bufor szyny danych do systemu

RxC - taktowanie, RxRDY - gotowość odbiornika, SYNDET - linia nadzorująca transmisję synchroniczną

Tryby pracy:

+ tryb asynchroniczny - nie oznacza braku sygnału taktującego (jest zegar)

+ tryb synchroniczny

Asynchroniczny:

- musi być to samo taktowanie,

- dane obudowywane ramką - wymagana taka sama budowa ramek w nadajniku i odbiorniku

bity startu

(opcja)

bity stopu

1

dane

1, 1 ½, 2

5,6,7,8 bitów

bit parzystości

Między grupami danych mogą wystąpić dowolnie długie przerwy.

0x01 graphic

Strona odbiorcza szuka bitów startu

Tryb synchroniczny

Zmienia się ramka, kształt umowny

słowo synchronizacji

dane (słowo danych)

część kontrolna

Słowo synchronizacji - w odbiorniku i nadajniku musi być ustawione tak samo; jedno - monosynchron., dwa - bisynchron.

Wysłanie słowa, później sygnał, że słowo jest prawidłowo rozpoznane (zgłasza to SYNDET)

Dla trybu synchronicznego dalej są zaczepiane dane, część kontrolna, dane, cz. kontrolna itd.

Dla trybu bisynchronicznego: słowo synchron., dane, cz. kontrolna, słowo synchr.2, dane, cz. kontrolna, itd.

Przez cały czas transmisji danych linia SYNDET jest aktywna - dane przychodzą prawidłowo

Wielomiany - to, co wyjdzie przez dzielenie danych przez ten wielomian to część kontrolna

Np. CRC16 ma wielomian x16+x15+x2+1

W celu zawieszenia transmisji układ wysyła słowo synchronizacji

Port szeregowy w 8051

W 8051 mamy jeden port szeregowy obsługiwany 2 rejestrami:

- SCON - rejestr sterujący, opisuje warunki pracy portu szeregowego

- SBUF - rejestr danych

SCON:

9F

9E

9D

9C

9B

9A

99

98

SM0

SM1

SM2

REN

TB8

RB8

TI

RI

MSB

LSB

SM0, SM1 - definiują tryb pracy portu:

SM0 SM1 = 00 - tryb zerowy transmisji, tryb synchroniczny, znaki 8-bitowe, taktowane fXTAL/12, bez części kontrolnej i słowa synchronizacji, prędkość wysyłania/odbioru danych = 1/12 taktu zegara

SM0 SM1 = 01 - tryb 1, asynchroniczny, znaki 8-bitowe, szybkość określona programowo (za szybkość odpowiada licznik T1), budowa ramki:

bit startu

8 bitów danych

bit stopu

SM0 SM1 = 10 - tryb 2, asynchroniczny, znaki 9-bitowe, szybkość fXTAL/64 lub fXTAL/32, ramka:

TB8/RB8 ↓

bit startu

8 bitów danych

bit stopu

↓ RB8

Bity TB8/RB8 to 9. bit danych, który można ustawić jako bit parzystości

SM0 SM1 = 11 - tryb 3, asynchroniczny, znaki 9-bitowe, licznik T1 określa prędkość transmisji

Bit SM2 - bit sterujący - akceptacja danych z potencjalnym błędem (ustawiony na 1):

- jeśli RB8=0 to ramki odrzucane (SM2=0)

- jeśli SM2=1 - ramki akceptowane, nawet jeśli RB8=0

REN - programowe wł/wył odbiornika

Układ czasowo - licznikowy

Odmierzanie określonego odcinka czasu i sygnalizacja o tym, niezależnie od obciążenia procesora

0x01 graphic

- rejestr słowa sterującego - tu są wpisywane słowa określające zachowania układu

0x08 graphic
- CLK - wejście sygnału zegarowego

- GATE - sygnalizacja upływu czasu te linie pozwalają na programowe sterowanie pracą licznika

- OUT

Liczniki są negatywne - zliczają „w dół” - zmniejszają swój stan o 1

2 tryby: - liczniki binarne

- liczniki dziesiętne (w kodzie BCD)

Stałe definiujące prace liczników są 16-bitowe

Mamy 6 trybów pracy liczników

Cyfrówka - wykład 8 (14. kwiecień 2003)

Tryby pracy liczników

Tryb 0

+ akcja jednokrotna

+ podanie nowej stałej nie powoduje zmiany w procesie odliczania (chyba, że linia GATE się zmieni z 0 na 1)

+ przerwanie po procesie odliczania

+ linia GATE może wstrzymać odliczanie na pewien czas

Tryb 1

+ układ do generowania impulsu o określonej szerokości

+ zapisanie stałej nie powoduje automatycznego włączenia

+ włączenie powoduje przejście linii GATE z 0 na 1, wtedy na OUT pojawia się 0, co inicjuje proces zliczania

+ pod koniec linia OUT =>1 i tak pozostaje

+ tryb jednokrotny

+ linia GATE z 1 na 0 - nic się nie dzieje, z 0 na 1 (powrót) - reset licznika

+ podanie nowej stałej nie powoduje zmiany w procesie odliczania (chyba, że linia GATE się zmieni z 0 na 1)

Tryb 2 (dzielnik częstotliwości)

+ wpisujemy stała, rusz odliczanie (niezależnie od linii GATE). Po zakończeniu zliczania, na OUT jest 0

+ repetycja - stan 0 na OUT na 1 impuls CLK. Opisanie nowej stałej - reakcja od nowego cyklu odliczania

+ w trakcie pracy - GATE z 1 na 0 - wstrzymanie (OUT ⇒ 1), zawieszenie aż GATE ⇒ 1, wtedy wznowienie od bieżącej wartości stałej

Tryb 3 (generator fali prostokątnej - autorepetycja)

+ na podstawie sygnału na WE (CLK) jest generowany przebieg prostokątny o innej częstotliwości. Wartość stałej/2 powoduje wyznaczenie nowego przebiegu. Jeśli stała jest nieparzysta - zero trwa krócej, 1 jest o jednostkę dłuższa

+ linia GATE nie wpływa na pracę

Tryb 4 (generowanie pojedynczego impulsu strobującego)

+ odliczanie do 0 - na jeden takt - koniec

0x01 graphic

+ linia GATE jest niepotrzebna, tryb rusza po wpisaniu stałej

+ linia GATE może ingerować (jeśli zmieni się na 0) - wstrzymanie odliczania. GATE ⇒ 1 - wznowienie odliczania

+ tryb jednokrotny, bez repetycji

Tryb 5 (modyfikacja trybu 4 - inaczej się uruchamia)

+ GATE potrzebna do uruchomienia procesu (z 0 na 1)

+ jeśli GATE później przechodzi z 0 na 1 - reset

0x01 graphic

Układy czasowo - licznikowe w 8051

1

17

PC

?

?

PC



Wyszukiwarka