Opisz cykl DMA w mikrokomputerze 16-bitowym opartym na procesorze 8086/88
Fazy cyklu rozkazu i mikrooperacje
Załóżmy, że rozkazy omawianego procesora są dwuargumentowe, pobierają argument źródłowy i docelowy i umieszczają wynik w argumencie docelowym. Ogólnie cykl rozkazu można podzielić na następujące cztery fazy:
1) Faza pobrania rozkazu z pamięci (ang. fetch)
2) Faza pobrania adresu pośredniego z pamięci
3) Faza pobrania argumentów i wykonania
4) Faza przerwania
Wśród nich faza pobrania adresu pośredniego z pamięci występuje tylko w rozkazach o trybie adresowania pośrednim pamięci, natomiast faza przerwania dotyczy skoku do podprogramu obsługi sytuacji wyjątkowych.
Każda faza składa się z jednego lub kilku cykli maszynowych. Jest to ciąg stanów realizujący jednokrotny dostęp do magistrali (a przez nią do pamięci) w celu odczytu lub zapisu jednostki danych. Liczba cykli maszynowych jakie są wymagane zależy od liczby jednostek danych, jakie mają być przetransferowane, długości tych danych i jednostki transferu (jaka długość danej jest przesyłana za jednym razem). Jeżeli np. mamy rozkaz 16b, a magistralę i pamięć 8 bitową, to w fazie pobrania rozkazu należy wykonać dwa cykle maszynowe realizujące transfer kolejno dwóch bajtów. Jeżeli magistrala jest 32b i rozkazy 32b, to można je pobrać w jednym cyklu maszynowym.
Cykl maszynowy składa się z kilku stanów procesora. Każdy z nich trwa dokładnie jeden cykl zegara i zawiera jedną elementarną operację wykonywaną przez procesor. Nazywamy ją mikrooperacją. Zatem
Cykl rozkazu dzieli się na mikrooperacje, wykonywane w jednym takcie zegara.
Układy (bloki) procesora są tak dobrane i połączone, aby dało się efektywnie realizować wszystkie mikrooperacje niezbędne w cyklach
wszystkich rozkazów danego procesora. Rodzaj i kolejność mikrooperacji jest sterowana przez jednostkę sterującą (CU). W CU
mamy mikroprogram którego kolejne mikroinstrukcje są poleceniami
wykonania jednej mikrooperacji.
Jeżeli procesor ma możliwość wykonywania w danym cyklu tylko
jednej mikrooperacji, wówczas jeden wynik otrzymujemy do pewną liczbę taktów zegara. Jest to dosyć powolne działanie procesora. Lepiej jest, jeśli bloków procesora jest tyle i są one połączone
tak, że na łączących je magistralach nie występują konflikty jednoczesnego dostępu. Wówczas mogą one pracować jednocześnie i niezależnie wykonywać kilka różnych mikrooperacji. Zapewnia to przyspieszenie wykonania cyklu rozkazu, czyli zwiększenie liczby wyników przypadających średnio na jeden cykl zegara.
Typ wymaganych mikrooperacji zależy od konkretnych zasobów procesora, tj. rejestrów i innych układów w jakie jest wyposażony procesor.
Model zasobów procesora
Dla wyjaśnienia mikrooperacji i zasad sterowania nimi przez mikroprogram przyjmijmy pewien model zasobów procesora. Jest to model prosty, pokazany na rys., w którym wszystkie zasoby są dołączone do dwóch magistral wewnętrznych: magistrali danych i adresowej. W tego rodzaju architekturze mikrooperacje obliczenia adresu i mikrooperacje przesyłania danych mogą być wykonywane równocześnie, ale mikrooperacje wykorzystujące tę samą magistralę muszą być wykonywane sekwencyjnie. W systemie tym można w sposób przejrzysty zilustrować, z jakich typowych mikrooperacji powinien składać się cykl rozkazu. Na rysunku strzałkami zaznaczono ścieżki przepływu danych i adresu. Przy ścieżkach zaznaczono otwierające je sygnały sterujące Ci (C1, C2, C3, itd.)generowane przez jednostkę sterującą (CU). Model ten obejmuje:
1) Magistrale wewnętrzne:
· Wewnętrzną magistralę danych
· Wewnętrzną magistralę adresową
2) Zespół rejestrów roboczych, a w nim:
· Rejestr akumulatora AX (zapis C15, odczyt C1,C16),
· Rejestr uniwersalny BX (zapis – C5, odczyt – C4,C27),
· Przesuwnik buforem wejściowym P złożonym z PL i PH (zapis sygnałem C13, odczyt sygna3em C14, rodzaj i wielkość przesunięcia sterowana sygnałem C12)
3) Zespół przetwarzania rozkazu, a w nim:
· Rejestr rozkazu IR (zapis - C8, odczyt pola natychmiastowego -C19, zapis pola natychmiastowego - C20)
· Dekoder rozkazu DI (uruchamianie dekodowania C23),
4) Zespół adresowania
· Generator adresu AG (ustawianie trybu adresowania C26)
· Rejestry segmentowe RS
· Wskaźnik programu IP z układem zwiększania (zapis - C6, odczyt - C7, zwiększenie o 1 – C21)
· Wskaźnik stosu SP z układem zwiększania/ zmniejszania (zapis – C17, odczyt – C18, modyfikacja – C24, rodzaj modyfikacji – C25)
5) Zespół wykonawczy:
· Bufor argumentu pierwszego X (zapis – C9)
· Bufor argumentu drugiego Y (zapis – C10)
· Układ arytmetyczno-logiczny ALU (sterowanie – C22)
· Rejestr znaczników EFLAGS (ustawiany i odczytywany przez ALU)
6) Zespół sterujący:
· Jednostka sterująca CU (generuje sygnały Ci),
· Sygnały sterujące przepływem danych przez procesor: C1-C21
7) Zespół magistrali systemowej:
· Rejestr adresowy pamięci MAR (zapis - C1),
· Rejestr buforowy pamięci MBR (zapis - C2, odczyt - C3),
· Pamięć i urządzenia wejścia / wyjścia
· Sygnały sterujące pamięcią i urządzeniami wejścia-wyjścia: MW - zapis w pamięci, MR - odczyt z pamięci, IOW - zapis na port, IOR - odczyt z portu.
rysunek1
Oto ciąg mikrooperacji wchodzących w skład typowych faz cyklu rozkazu. Wyjaśniając rozkład cyklu rozkazu na mikrooperacje zakładamy, że:
· Mikrooperacja trwa jeden takt zegara procesora i jest wykonywana przez jeden blok procesora (rejestr, układ).
· niektóre mikrooperacje z uwagi na konflikt zasobów (użycie tej samej magistrali lub bloku) nie mogą być wykonane jednocześnie. Inne są bezkonfliktowe i będą wykonywane w tym samym takcie procesora.
· Długość rozkazu i danych jest równa słowu transferowanemu po szynie danych z pamięci tak, że pobranie rozkazu i danej odbywa się w jednym cyklu maszynowym.
· Dekodowanie rozkazu wymaga jednego taktu zegara procesora.
· Pamięć zwraca daną na szynę danych w następnym takcie procesora po wystawieniu adresu, zatem jest to trafienie danej w szybkiej pamięci podręcznej połączonej z procesorem szybką magistralą lokalną taktowaną zegarem procesora.
Rozkład cyklu rozkazu na mikrooperacje
Rozpatrzymy szczegółowo 3 fazy cyklu rozkazu: pobranie rozkazu,
pobrania adresu pośredniego i wykonania. Mikrooperacje wchodzące w skład faz zestawione są w tabelach, podając kolejno: numer taktu zegara, symbol mikrooperacji, opis i sygnały sterujące, które muszą przyjąć poziom aktywny (typowo niski), aby mikrooperacja została zrealizowana.
1. Faza pobrania rozkazu (1 cykl maszynowy, 4 takty zegara)
Faz pobrania rozkazu w 1 cyklu maszynowym zajmującym 4 takty zegara przedstawione są w Tablicy rozłożoną na mikrooperacje.
rysunek2
Przebiegi czasowe tej fazy przedstawione są tym rysunku :
rysunek3_4
W takcie T1 pierwszym zboczem zegara następuje przesłanie adresu rozkazu z PC do MAR. Wówczas z pewnym opóźnieniem adres ten pojawia się na szynie adresowej. Wystawienie rozkazu przez pamięć będzie opóźnione w stosunku do tej chwili o około 1 takt (czas dostępu do pamięci).
W takcie T2 pierwszym zboczem zostaje ustawiony impuls odczytu MR i zwiększony stan rejestru PC, drugim zboczem następuje odczytanie pokazanych na rysunku sygnałów zewnętrznych sterujących procesorem, np. RESET (inicjalizacja procesora), INT (żądanie
przerwania). Pod koniec tego taktu na szynie danych pojawi się wystawiony przez pamięć rozkaz.
W takcie T3 pierwszym zboczem rozkaz zostaje odczytany z szyny i przesłany do IR. Przed końcem tego taktu zanika sygna3 MR i rozkaz na szynie danych.
Takt T4 jest przeznaczony na zdekodowanie rozkazu (sygnał C23). Wtedy też z szyny adresowej zdejmowany jest adres.
Tego rodzaju 4-taktowy cykl maszynowy jest spotykany, np. w komputerach PC. W praktyce szyna adresu i danych bywa multipleksowana. Wówczas taktowanie przebiega jak pokazano na rysunku 2gim W środku taktu T1 adres zostaje zapisany w rejestrze zatrzaskowym pamięci (ang. Address Latch) zboczem opadającym pomocniczego impulsu zezwalającego ALE i na początku taktu T2 zdjęty z szyny. Pod koniec taktu T2 na tą sama szynę pamięć wystawia już odczytany rozkaz
2. Faza pobrania argumentów i wykonania
Niech rozkaz pobrany w omówionej powyżej fazie pobrania będzie
rozkazem dodawania. Rozpatrzymy najprostszy tryb rejestrowy: do zawartości rejestru AX dodajemy zawartość rejestru BX, a wynik umieszczamy w rejestrze AX:
ADD AX , BX
Fazę te pokazuje poniższa Tablica. Nie wymaga ona cyklu maszynowego i składa się z 3 mikrooperacji wykonania, które mogą być wykonane w 3 taktach zegara: załadowanie argumentu 1, załadowanie argumentu drugiego, dodawanie i załadowanie wyniku zgodnie z poprzednia tabelą.
rysunke5
Nieco bardziej skomplikowany będzie cykl wykonania, jeżeli rozkaz zawiera tryb pośredni rejestrowy dostępu do argumentu, np. do zawartości rejestru AX dodamy zawartość komórki pamięci o adresie zapisanym w rejestrze BX, a wynik umieścimy w AX:
ADD [BX] , AX
Fazę wykonania przedstawia poniższa tablica. Faza ta wymaga 6 taktów i 2 cykli maszynowych: 3 taktów pobrania argumentu z pamięci do rejestru BX (1 cykl maszynowy) i 3 taktów dodawania i zapisu wyniku (1 cykl maszynowy).
rysunek6