wykład 1 (11)


Wiadomości wstępne, definicje, podziały.

Mikroprocesor (μP) jest automatem sekwencyjnym, synchronicznym wykonującym dołączony z zewnątrz program. Częstotliwość zegara μP. decydująca m.in. o szybkości pracy jest ograniczona zawsze od góry i przeważnie od dołu. Wykonywany program składa się z tzw. rozkazów (instrukcji), są to niepodzielne dla programisty czynności, które może wykonać μP. Zwykle występują μP. z tzw. stałą listą instrukcji narzuconą przez projektanta μP. która może być albo uniwersalna albo zorientowana (np. w kierunku przetwarzania danych, sterowania, przetwarzania sygnałów analogowych w postaci cyfrowej). Ponadto występują także rozwiązania w których wykorzystujący μP. definiuje własną listę rozkazów, składając je z czynności prostych. Sekwencje tych czynności są zawarte w dołączonej zewnętrznie, tzw. stałej pamięci mikroprogramu. W μP. o stałej liście instrukcji pamięć taka znajduje się wewnątrz struktury. Namiastką własnych rozkazów są tak zwane emulatory, tj. Instrukcje wywołujące zdefiniowaną wcześniej sekwencję rozkazów nie na zasadzie instrukcji CALL, lecz posiłkując się numerem emulatora (adres znajduje się w tabeli stanów wyjątkowych). W zależności od tego ile bitów może równolegle przetwarzać μP. mówimy o układach 4, 8, 12, 16, 32, 64-bitowych. Aby powstał system μP. musimy doń dołączyć pamięć programu, pamięć danych i niezbędne układy peryferyjne (wejścia / wyjścia). Częstokroć w jednej strukturze scalone jest μP. oraz wszystkie komponenty systemu. Są to przeważnie mikrokontrolery jednoukładowe zorientowane funkcjonalnie w stronę układów sterowania. W skład typowego μP. wchodzą następujące podzespoły:

  1. Licznik programu PC (program counter). Służy do adresacji pobieranego przez μP. kodu programu z dołączonej pamięci. Jeżeli nie występują instrukcje typu skoki, wywołania, powroty oraz jeśli nie pojawiają się przerwania bądź wewnętrzne stany wyjątkowe to program jest pobierany sekwencyjnie, PC jest inkrementowany tyle razy z ilu bajtów składa się instrukcja. Następny rozkaz znajduje się w lokacji kolejnej. Każda instrukcja zaczyna się tzw. kodem operacyjnym KO, który jest numerem porządkowym rozkazu bądź jego wersji na liście. Rozkaz może składać się wyłącznie z KO, ale także za KO mogą być umieszczone dane natychmiastowe bądź adresy bezpośrednie, czy inne bajty z tym rozkazem związane. Należy pamiętać że aby przekonać się czy dany bajt jest KO, czy inna informacją należy prześledzić, bądź wykonać program począwszy od samego początku. Wszelkie skoki czy wywołania muszą wskazywać na lokację KO odpowiedniego rozkazu, a nie mogą z oczywistych względów wskazywać na dane czy adresy. W tej sytuacji μP. potraktuje daną jako KO, wykona ...itd... co spowoduje oczywiście błędne działanie systemu.

  1. Układ arytmetyczno-logiczny ALU. Z tym układem wykonawczym związany jest rejestr tzw. bitów warunkowych (statusowy, flagowy), którego poszczególne bity informują o efekcie przeprowadzonej w ALU operacji (zerowość, przeniesienie, itp.). Stan tych bitów wykorzystuje μP. w tzw. rozkazach warunkowych(skoki, wywołania, powroty).

  2. Wskaźnik stosu SP (stack pointer). Podstawowym zastosowaniem SP jest zapamiętywanie adresu powrotnego przy wywołaniu z różnych miejsc tej samej procedury. Na stosie μP. umieszcza adres następnej instrukcji za rozkazem wywołania. Adres ten załaduje do PC instrukcję powrotu kończąca procedurę. Poza niewielkimi wyjątkami każdy zapis na stos jest poprzedzany dekrementacją adresującego stos rejestru SP (predekrement). Zaś po każdym odczycie ze stosu SP jest zwiększany (postinkrement). Tak więc stos (pamięć RAM) narasta w kierunku malejących adresów. Oprócz pamiętania adresu powrotnego stos jest tez wykorzystywany do zachowywania stanu μP. Na początku podprogramu znajdują się rozkazy przenoszące stany rejestrów na stos, a przed końcem procedury instrukcje odtwarzające stany rejestrów ze stosu (w kolejności odwrotnej ). Dostęp mamy wyłącznie do wierzchołka stosu. Stos może być także używany jako pamięć chwilowa oraz do przekazywania parametrów pomiędzy programem głównym a procedurami Posługując się stosem musimy pamiętać aby sumaryczna ilość zapisów zmniejszających SP i odczytów zwiększających SP była wyrównana, gdyż w przeciwnym przypadku nastąpi nałożenie obszaru stosu na obszar zmiennych systemowych i innych ważnych danych. Zwykle wielkość SP jest tożsama z PC i tzw. szerokością szyny adresowej. Choć są tutaj wyjątki: 6502 posiada 8-bitowy wskaźnik stosu, a 8086 aż do 80286 dysponowały 16-bitowym SP mimo możliwości adresacji od 1MB do 16MB.

  3. Rejestry. Rejestry wewnętrzne dostępne software'owo służą do chwilowego przechowywania danych, adresów, tzw. przesunięć, Bądź wartości indeksujących co związane jest z różnymi trybami adresacji argumentów. W zależności od architektury mogą występować pojedynczo, w połączeniu z innym .................... można wykorzystywać poszczególne bity . Generalnie μP. który dysponuje większą ilością rejestrów wewnętrznych pozwala na napisanie bardzo efektywnego i szybkiego programu, gdyż zmniejsza się ilość odwołań do pamięci po dane i adresy. Przeznaczenie rejestrów może być sztywno określone (np. w Intel), mogą występować zespoły równoprawnych (symetrycznych) rejestrów (Motorola). Większa ilość rejestrów powoduje że przy wywołaniu podprogramu i przy powrocie należy zachowywać i odtwarzać na stosie większą ilość bajtów. We współczesnych μP. występują stosunkowo duże ilości wewnętrznych rejestrów (maks. 32-bitowe dla obliczeń stałoprzecinkowych i 64 do 80-bitowe w przypadku argumentów zmiennoprzecinkowych).

  4. Układy sterowania, synchronizacji, zegarowe, multipleksery, bufory szyn zewnętrznych, dekodery instrukcji, które zapewniają właściwe działanie μP., układy te z oczywistych względów nie występują w zapisie kodu programów. μP. łączy się z pamięciami i układami we. / wy. Za pomocą szeregu sygnałów (jedno-, dwukierunkowe, trójstanowe, typu otwarty kolektor OC). Sygnały te łączymy w zespoły funkcjonalne tzw. szyny. Wyróżniamy szyny:

(Wykład 20.02. Tekst Pawła. Sprawdzony, poprawiony i dołączony do całości. Jest w nim tylko jedna niejasność zaznaczona. Niech Witek i Tyson sprawdzą u siebie. Bogdan)

Linie szyny adresowej ( od A0 w górę ) określają poprzez odpowiednie kombinacje binarne kolejne lokacje adresowe. Każdy układ ( pamięć, we/wy ) ma w systemie przyporządkowany swój własny niepowtarzalny adres. Oznacza to, że pod jednym adresem może zgłosić się maksymalnie jeden układ ( mogą też wystąpić lokacje nie obsadzone ). Wielkość przestrzeni adresowej ( 2 ilość lini ) podajemy zawsze w bajtach niezależnie od tego, ile bajtów może μP. naraz przesłać przez szynę danych. Przy dwubajtowej szynie danych linia A0 zostaje wyeliminowana ponieważ μP. może przesyłać naraz dane spod dwóch kolejnych lokacji adresowych. Zamiast lini A0 pojawiają się natomiast sygnały informujące, który bajt ( bajty ) są wykorzystane. Przy czterobitowej szynie danych redukcji ulega również A1, a przy 64-bitowej również A2

Działanie poszczególnych rozkazów możemy rozbić na tzw. cykle maszynowe. Większość cykli maszynowych jest związana z cyklem magistrali. Przez cykl magistrali definiujemy jednokrotny kontakt μP. z pamięcią, względnie z układami we/wy. Wykonanie rozkazu rozpoczyna się zawsze od cyklu magistrali w którym μP. pobiera KO instrukcji. W zależności od długości instrukcji μp. odczytuje ewentualne dane bądź adresy związane z tym rozkazem. Oprócz tego na działanie rozkazu składają się także dodatkowe cykle w których μP. odczytuje argumenty lub odsyła wyniki obliczeń. Tak więc dla μP. o bajtowej szynie danych możemy podać następującą relację: ilość cykli magistrali przy realizacji danego programu jest równa lub większa............( sprawdźcie ten zapis. Ja mam w zeszycie mniejsza lub równa. Bogdan)............ od ilości bajtów wykonywanego kodu programu. Naturalną dążnością jest zwiększenie prędkości pracy μP. co można osiągnąć przez odpowiednie zagospodarowanie czasu pracy magistral i przez zminimalizowanie dostępu do pamięci.

W klasycznym μP. szyna adresowa jest jednokierunkowa, skierowana na zewnątrz, a szyna danych ma możliwość pracy w obu kierunkach. W większości μP. istnieje możliwość, aby dany układ mógł się odłączyć na żądanie od magistrali. Dokonuje się tego poprzez wprowadzenie szyn adresowej, danych i sterującej przeważnie w stan wysokiej impedancji.

Aby przyśpieszyć pacę μP. można w czasie trwania pracochłonnych rozkazów, kiedy μP. nie potrzebuje korzystać z magistral można pobrać niejako na zapas do wewnętrznej „kolejki” następne rozkazy do wykonania. Kolejka działa sekwencyjnie ( bezmyślnie zresztą ) gdyż nie rozróżnia i analizuje pobieranych rozkazów. Jeżeli więc w kolejce znajdzie się np. rozkaz skoku to jeśli zostanie on skierowany do wykonania będzie to jednoznaczne z anulowaniem stanu całej kolejki, którą trzeba będzie uzupełnić od innej lokacji programu. Widzimy więc, że przyśpieszenie pracy związane jest z ubocznym efektem wzrostu ilości cykli magistrali. Radykalne przyśpieszenie pracy i istotną redukcję (czasochłonnych ) cykli magistrali uzyskujemy po zainstalowaniu w μP. tzw. pamięci podręcznej w której μP. zapisuje ostatnio pobierane rozkazy i odczytywane dane. Jeżeli teraz w programie znajdzie się często powtarzana pętla bądź używana procedura to ich kody będą odczytywane tylko za pierwszym razem, a przy każdym powtórzeniu μP. będzie wykorzystywał jego kopię zapisaną w pamięci podręcznej. Tak więc pamięć podręczna jest tak jakby częścią ( kopią) wybranych lokacji pamięci zewnętrznych. W związku z tym istnieje problem zachowania koherencji pomiędzy pamięcią podręczną, a pamięcią główną. Problem ten występuje szczególnie przy systemach wieloprocesorowych. Przykładowo jeśli danemu μP. została zabrana magistrala to inny μP. może zmienić zawartość lokacji zawartej w pamięci podręcznej. zawieszonego μP. Aby nie dopuścić do takich sytuacji zawieszony μP. przełącza szynę adresową do wewnątrz i po stwierdzeniu zapisu do lokacji którą ma odwzorowaną w pamięci podręcznej dokonuje jej unieważnienia.

Jeśli μP. dysponuje wspólną przestrzenią dla programu i danych to mówimy o klasycznej strukturze Von-Neymana. Jeśli natomiast obszar programu i danych są rozdzielone a μP. może sięgać równocześnie do kodów i danych to mówimy wtedy o tzw. strukturze Harwardzkiej. Strukturę tą w pewnym przybliżeniu posiada μP. posiadający oddzielne pamięci podręczne dla kodu i danych o odpowiednio dużych pojemnościach. Takie ewentualne konflikty wynikające z konieczności dostępu do programu i danych zewnętrznych ( równocześnie ) występują sporadycznie. Struktura Harwardzka występuje często w μP sygnałowych.

W skład szyny sterującej wchodzą sygnały definiujące kierunek transmisji, rodzaj przestrzeni adresowej , synchronizujące dane oraz potwierdzające ważność adresu. Ponadto μP. musi mieć możliwość dopasowania swojego cyklu magistrali do wolniejszych pamięci, a szczególnie do wolniejszych układów we/wy. W tym celu definiowana jest specjalna linia wejściowa której poszczególne karty sterują bramki typu otwarty kolektor. Linia ta może mieć działanie wydłużania cyklu lub potwierdzenia transmisji.

Linia niegotowości jest zdefiniowana w μP. Intela które z natury swej są przystosowane w systemach tzw. normalnie gotowych. Linie potwierdzenia transmisji występują natomiast w μP. Motoroli które umożliwiają pracę systemu w trybie normalnie niegotowym.

W systemie normalnie niegotowym każda karta jest zobowiązana do wysterowania ( poprzez bramkę OC ) linii potwierdzającej transmisję. Karty szybkie potwierdzają natychmiast, karty wolniejsze z pewnym opóźnieniem. Do czasu potwierdzenia μP. wydłuża cykl magistrali. W związku z powyższym możemy przy μP. bądź w jego wnętrzu zainstalować układ przeterminowania, który nastawiony na czas dłuższy od czasu reakcji najwolniejszej karty zgłosi fakt tzw. błędu magistrali w przypadku kiedy nikt nie potwierdzi transmisji, a ma to miejsce wówczas gdy μP. zaadresuje nie obsadzoną lokację. Wykrycie lokacji nie obsadzonych jest niemożliwe w systemie normalnie gotowym. Lokacje te zachowują się jak szybkie karty nie ingerujące w linie niegotowości, w efekcie czego następuje utrata danych przy zapisie, a przy odczycie μP. odczytuje same jedynki.

Układ błędu magistrali przeterminowania jest zainstalowany wewnętrznie. mP pracujące w systemach normalnie gotowych i niegotowych charakteryzują się asynchroniczną pracą magistrali (możliwe wydłużenie cyklu).

Oprócz tego występują rozwiązania w których czas cyklu nie zależy od sygnałów zewnętrznych (niegotowości, potwierdzenia). Zaliczane są do nich układy mP 6800, mP 8051, procesory sygnałowe. W tych ostatnich np. istnieje możliwość softwarowego programowania czasu trwania cyklu w poszczególnych obszarach przestrzeni adresowej.

Praktycznie każdy mP dysponuje sygnałem zewnętrznym powodującym zawieszenie mP tj. oddaniem magistral. Może to nastąpić dopiero po zakończeniu bieżącego cyklu magistrali. Wyjątkiem jest 84188 i następne w którym linia BOF powoduje natychmiastowy zwrot, ale rozerwany w ten sposób cykl musi zostać powtórzony..

Istnieje możliwość wykonania przez mP podprogramu obsługi, na zewnętrzne żądanie . Są to tzw. sygnały przerwań. Ponieważ mP przechodzi do innego ciągu instrukcji, w celu ewentualnej akceptacji przerwania musi zakończyć rozkaz aktualnie wykonywany - przerwanie zewnętrzne może być zaakceptowane tylko po zakończeniu rozkazu. W przypadku równoczesnego wystąpienia w czasie ostatniego cyklu magistrali żądania zawieszenia i przerwania mP zawsze jako pierwsze zaakceptuje żądanie zwrotu magistrali.

Kolejnym czynnikiem który może odsunąć w czasie akceptację przerwania to aktywny stan linii niegotowości. Należy pamiętać, że mP nie limituje czasu wydłużenia cyklu i czasu w którym oddał magistralę.

W różnych mP w różny sposób rozwiązano logikę sygnałów na magistrali. Gdy ich ilość jest większa, jeśli dany mP dysponuje wydzielonym obszarem dla ukł. we/wy możemy wyróżnić 6 podstawowych typów cykli magistral, które wraz z sygnałami sterującymi dla poszczególnych μP zostały zebrane w poniższej tabeli.

8080 8086

Z 80

6800 6502

Wyższe

INTELE

od 386

______

sygnały M/W

___

D/C

___

W/R

Pobranie

______________

MEMR

_____________ _______

M1, MREQ, RD

____

R/W=1 E=1 ϕ2

0x08 graphic
Odczyt pomiaru

______________

MEMR

__ ___________ ______

MREQ, RD

R/W=1 E=1

0x08 graphic
Zapis pomiaru

________________

MEMW

____________ _______

MREQ, WR

R/W=0 E=1

0x08 graphic
Odczyt wejścia

_________

I/OR

___________ ______

IORQ, RD

Zapis wyjścia

__________

I/OW

___________ ______

IORQ, WR

Akceptacja, przerwanie

___________

INTA

__________

M1, IORQ

DMA w 2 podcyklach

DMA w jednym cyklu

DMA w dwóch podcyklach

Można zauważyć, że w cyklach magistral INTELA aktywny jest zawsze jeden indywidualny sygnał sterujący ( kod 1 z 5), natomiast w cyklach magistral Z80 mP aktywuje 2 lub 3 sygnały z 5. Organizacja sygnałów sterujących ma konsekwencje przy tzw. bezpośrednim dostępie do pamięci ( „ za plecami” mP po jego uprzednim zawieszeniu).

Typowy transfer DMA (Direct Memory Acces) to transfer pomiędzy pamięcią a układem we/wy. W 8086 może być on przeprowadzony w jednym cyklu ( adres dla pamięci akceptuje zawieszenie mP ) dla układu we/wy, MEMR względnie MEMW dla pamięci i odpowiednio IOW lub IOR dla karty we/wy.

Dla Z80 powyższy transfer można zrealizować dopiero w dwóch podcyklach, gdyż podanie zestawu sygnałów np. MREQ i RD dla pamięci oraz IORQ i WR dla układu wyjścia jest z oczywistych względów niejednoznaczny. Bezpośredni transfer do pamięci DMA w przypadku 6800, 6502 i w ogóle wszystkich mP dysponujących jednolitą przestrzenią adresową może być wykonany wyłącznie w dwóch podcyklach.

0x08 graphic

Analizując zestawy funkcjonalne sygnałów omawianych 8 bitowych mP stwierdzamy :

  1. A0 do A15 adresacja 64 kB. Szyny adresowe skierowane na zewnątrz z możliwością przejścia w stan wysokiej impedancji po odebraniu magistrali, jedynie 6800 dysponuje linią VMA (jak to w każdej MOTOROLI) potwierdzającą ważność adresu. W 6800 linia ta jest istotna ze względu na tzw. jałowe cykle magistrali ( tylko odczytu). Odbierane dane nie są wykorzystywane przez mP.

  1. Szyna danych D0 - D7 ( DB0 - DB7 ) dwukierunkowa z możliwością przejścia w trzeci stan po zabraniu mP magistral. W 6800 istnieje możliwość wprowadzenia jej w trzeci stan linią DBE ( Data Base Enable). Jeśli DBE jest niesterowana to mP aktywuje wyjście BA.

  1. Sygnały sterujące zgodnie z tabelą dla 6800 i 6502 sygnałem zezwolenia E jest druga faza zegara to jest F2.

Sygnałem wydłużenia cyklu jest linia WAIT dla Z80 i RDY dla 6502, w 6800 - praca synchroniczna magistrali.

Żądanie zawieszenia mP (oddanie magistrali) dla Z80 BUSREQ, jeśli mP zakończy cykl to oddaje magistralę i aktywuje wyjście BUSACK.

W 6800 zwrot magistrali może nastąpić po każdym cyklu na czas nie dłuższy niż kilka mP gdyż odbywa się to przy wykorzystaniu zamrożenia sygnałów zegarowych. Oprócz tego przy aktywnej wyjściowej linii HALT mP po zakończeniu rozkazu oddaje magistralę na czas nielimitowany.

6502 nie ma możliwości zwrotu magistral.

  1. W Z80 i 6502 istnieje możliwość rozpoznania cyklu pobrania KO. Do tego celu w Z80 służy sygnał sterujący M1 a w 6502 linie SYNC. ( Ponieważ Z80 dysponuje rozkazami o jedno lub dwu bajtowym KO, stan aktywny M1 może pojawić się jedno lub dwukrotnie na początku danych rozkazów).

  2. Za wyjątkiem 6502 pozostałe omawiane mP mogą zatrzymać wykonywanie programu.
    Jedynie Z80 informuje o tym fakcie linią wyjściową HALT. Po zatrzymaniu softwarowym mP może ( jeśli potrafi ) oddać magistralę po jej zwrocie wraca do stanu zatrzymania. Ze stanu zatrzymania można wyprowadzić mP sygnałem zerującym, lecz efektywną metodą jest zastosowanie przerwania zewnętrznego. Istnieje zasada, że mP przechodząc do obsługi przerwania składa na stosie adres powrotu instrukcji leżącej za rozkazem zatrzymania ( aby do nich nie powrócić ). Rozkaz zatrzymania, Z80 nie wykonuje żadnej dodatkowej czynności. Jego odpowiednik 6800, instrukcja (WAI) przed zatrzymaniem mP przeprowadza zapis na stos wszystkich rejestrów wewnętrznych. Powoduje to, że procedura obsługi przerwania nie musi na początku zachowywać na stosie zastanego stanu wewnętrznych rejestrów.

Po zaakceptowaniu rozkazu przerwania jeśli mP był w stanie zatrzymania softwarowego na stosie zostanie zapisana powrotna wartość PC wskazująca na następny rozkaz za instrukcją zatrzymania. Zachowując stan mP na stosie nie umieszczamy tam oczywiście rejestru adresującego stos to jest SP. Powracając z obsługi nie trafiamy teraz do rozkazu zatrzymania tylko mP przechodzi do następnego rozkazu.

Gdy mP nie dysponuje rozkazem zatrzymania można do tego użyć skoku bezwarunkowego (do samego siebie). Należy jednak pamiętać, że po zaakceptowaniu przerwania mP położy na stosie adres rozkazu który byłby wykonany gdyby nie przerwanie tj. z powrotem skoku do samego siebie . Powracając z obsługi wchodzimy ponownie w tak zrealizowane zatrzymanie. Aby efektywnie opuścić to miejsce po powrocie z obsługi należy w jej trakcie poprawić adres powrotny na stosie PC o tyle bajtów ile wynosi długość instrukcji skoku.

Analizując architekturę omawianych mP stwierdzamy :

  1. Zgodnie z przewidywaniem wszystkie mP posiadają PC, SP. W 6502 wskaźnik stosu jest 8 bitowy tzn. że stos może zajmować obszar 256 bajtów. Przy dalszym zapisie na stos wrócimy na początek.

  1. W zestawie rejestrów wewnętrznych wszystkie mP posiadają akumulator natomiast 6800 dwa akumulatory. mP ten nie dysponuje innymi rejestrami ogólnego przeznaczenia. Zamiast tego wprowadzono w nim tryb strony zerowej pierwsze 256 lokacji, które są wykorzystywane przy krótkiej jedno bajtowej adresacji. Ten sam mechanizm występuje w 6502.

  1. Rejestry ogólnego przeznaczenia posiada Z80. Są to rejestry BC, DC, HL (występują głównie indywidualnie dla danych, a w parach BC DC HL gdy są źródłami adresów). Każdy mP dysponuje rejestrem bitów warunkowych. Jedynie w Z80 bit zezwolenia na przerwanie nie znajduje się w tym rejestrze co rodzi określone konsekwencje.

  1. We wszystkich mP występują rejestry przeznaczone do rejestracji indeksowej IX, IY w Z80, IX w 6800 oraz XY w 6502 ( tutaj jest możliwa indeksacja w zakresie + - 128 ). Możliwa jest indeksacja w zakresie dla wszystkich μP.

  1. Jedynie Z80 posiada alternatywny zestaw rejestrów ogólnego przeznaczenia co np. zwalnia nas od zachowywania ich stanów na stosie podczas obsługi przerwania (program główny korzysta ze stanu podstawowego, obsługa ze stanu alternatywnego).

Jedynie w Z80 występuje wektorowy system przerwań. W związku z tym w rejestrze I ( pierwszym ) zapisywany jest adres startowy, w 256 bajtowej tablicy zawierającej 128 adresów początkowych obsługi dla różnych źródeł przerwań. W pozostałych mP rozróżniane jest tylko jedno źródło, co czyni zbędnym istnienie tablicy, a także samego cyklu akceptacji przerwania ( rejestru to samo )

Analizując zestawy bitów warunkowych, stwierdzamy obecność podstawowego zestawu :

Ponadto, za wyjątkiem 6502 występuje bit przeniesienia pomocniczego H ( pomiędzy trzecim a czwartym bitem ). Jest on wykorzystywany przy rozkazach korekcji dziesiętnej jeśli dodawane argumenty były podawane w kodzie BCD. Ponieważ 6502 umożliwia przełączenie ALU na pracę dziesiętną ( ustawienie bitu D ) bit H staje się zbędny. Sporadycznie występuje natomiast bit P ( parzystość ) dla Z80, bit N rozróżniający pomiędzy dodawaniem a odejmowaniem w Z80 i bit B służący do rozróżnienia czy wystąpił rozkaz BREAK czy przerwanie zewnętrzne, ponieważ w obu przypadkach obsługa startuje od identycznego adresu.

Przez tryb adresacji rozróżniamy sposób wyznaczania adresu argumentu (operandu) w obszarze pamięci, bądź adresu następnej instrukcji w przypadku rozkazu rozgałęzień. ( zaburzających sekwencyjność pobierania instrukcji )

Im procesor dysponuje większą liczbą trybów, tym programy mogą być bardziej zwięzłe i wykonywać się szybciej. Wprawdzie kilka podstawowych trybów może zastąpić następne bardziej rozbudowane, ale musimy wtedy zamiast jednego rozkazu wstawiać ich kilka lub całą sekwencję. W rozwoju mP nastąpiła ciągła rozbudowa trybów adresacji, reakcją na niekontrolowany wzrost co powodowało, że program nie korzystał z większości trybów. Były procesory o zredukowanej liczbie rozkazów ( RISC ).

Poniższa tabela podaje tryby adresacji w omawianych 8 bitowych mP

Nazwa

8080

Z80

6800

6502

1

Implikacyjne

+

+

+

+

2

Natychmiastowe

+

+

+

+

3

Rejestrowe

+

+

4

Rejestrowe pośrednie

+

+

5

Bezpośrednie

Krótkie

+

+

Pełne

+

+

+

6

Względne

Krótkie

+

+

+

Pełne

7

Indeksowe

Krótkie

+

Pełne

+

+

+

8

Pośrednie

Krótkie

+

Pełne

+

9

Indeksowe

pośrednie

Krótkie

+

Pełne

+

10

Pośrednie

indeksowe

Krótkie

+

Pełne

11

Bitowe

+

Wykład 3 z 27.02.99 - sprawdzony z nagraniem i poprawiony. Sprawdźcie tylko rysunki)

Wprawdzie rozbudowane tryby adresacji możemy zastąpić przy pomocy kilku innych instrukcji z adresacją prostą, jednakże rozwiązanie takie generuje dłuższy kod i dłużej trwa realizacja. Na podkreślenie zasługuje tryb adresacji względnej. W trybie tym adresy wyznaczone są w odniesieniu do bieżącej zawartości licznika programu. Jeśli w procedurze zastosujemy wyłącznie taką adresację dla instrukcji skoków i wywołań to uzyskane kody spełniają warunki bezpośredniej relokowalności. W omawianych 8-bitowych μP. adresacja względna nie dotyczy jednakże danych, tryb taki pojawia się w 16-bitowych μP. i umożliwia przesuniecie programu wraz a dołączonym do niego blokiem danych.

W trybie implikacyjnym argument wynika z kontekstu instrukcji ( np. negacja akumulatora ). Jeśli argument jest za KO to mamy do czynienia z trybem natychmiastowym. Przy trybie rejestrowym pośrednim w rejestrze nie znajduje się dana lecz tylko jej adres. Tryb bezpośredni - adres za KO. W omawianym μP. w trybie względnym umożliwiają przeniesienie w zakresie -127 -128. Jeśli bajt przesunięcia względnego wynosi FE to skoczymy do samego siebie. FF skoczymy do drugiego bajtu ( nie ma to sensu ) natomiast przy przesunięciu 00 działanie takiego skoku jest identyczne z instrukcją pustą NO.

Rys.

Wersje krótkie powyższych adresacji dotyczą za wyjątkiem trybu względnego i indeksowego mechanizmu tzw. strony zerowej. Jest to pierwsze 256 lokacji (w 6800, 6502 ) dostępne przy pomocy krótkiego bajtowego adresu.

Uwaga : Typowe pytanie egzaminacyjne :

Losuje się rozkaz procesora, co to za rozkaz, ile ma bajtów, w ilu cyklach magistrali ten rozkaz się wykonuje

10

0x01 graphic



Wyszukiwarka

Podobne podstrony:
wyklad 11
WYKŁAD 11 SPS 2 regulatory 0
wyklad 11 toksyczno niemetali
BUD OG wykład 11 3 Geosyntetyki
Psychometria 2009, Wykład 11, Inwentarz MMPI
BUD OG wykład 11 1 Tworzywa sztuczne
Wyklad 11 2010
Wyklad 2 11
F II wyklad 11 30 04 12
chem wykład 11
Chemia fizyczna wykład 11
6 Miedzynarodowy transfer wyklad 11 04 2012 id 43355
Socjologia - wykład 11, geografia UJ, socjologia, wykłady 2010
Wykład 11.01.15 - Audiologia, Logopedia - podyplomowe, I sem - Audiologia
005 Historia sztuki wczesnochrześcijańskiej i bizantyjskiej, wykład, 11 09
wyklad 6 z R 11

więcej podobnych podstron