315
314
E=2, H=4, M=0, F=2. CQ=1) bez wpisywania wyniku do rejestru (a więc AP=0). Relację między porównywanymi liczbami określają wyjścia sygnalizacyjne ALU, np. jeśli zawartości rejestrów traktuje się jako liczby bez znaku, to:
R2 > R4, gdy Ol i 2=0,
R2 = R4, gdy 2=1, (8.2)
R2 < R4, gdy 00.
Sygnały C i Z (jako składowe wektora XWY - rys.8.4a) są badane przez układ sterujący, który na ich podstawie dokona rozejścia w m i kroprogram i e.
Jak widać z powyższego opisu, o sposobie pracy uniwersalnego procesora mikroprogramowanego decyduje sekwencja słów podawanych na wejścia sterujące S. Sekwencję tę generuje układ sterujący współpracujący z procesorem.
8.3. Przykłady projektowania
Przykład 8.1 (Układ dzielący)
Dzielenie całkowite dwóch liczb bez znaku (z zaokrągleniem wyniku w górę) można formalnie opisać siecią działań z rys.8.7b. Wartość dzielnika jest tylokrotnie odejmowana od wartości dzielnej aż ta ostatnia stanie się mniejsza lub równa zeru (gdy będzie mniejsza od zera, wynik dzielenia zostanie zaokrąglony w górę). Liczba powyższych nikrooperacji typu "odejmij" jest równa wynikowi dzielenia.
Algorytm dzielenia można zrealizować w sposób równoważny, ale być może prostszy z punktu widzenia budowy układu operacyjnego, w sposób przedstawiony na rys.8.7c (sieć działań układu sterującego US). Tymi razem wartość dzielnika jest 'wielokrotnie dodawana do zawartości pomocniczego rejestru R1 (wstępnie wyzerowanego), aż R1 osiągnie wartość równą lub większą od dzielnej. Liczba mikrooperacji typu dodaj jest równa wynikowi dzielenia (również z zaokrągleniem wyniku w gbrę).
Na podstawie sekwencji mikrorozkazów generowanych przez układ sterujący można określić strukturę specjalizowanego układu
operacyjnego. W sieci działań US z rys.8.7c występują zmienne wejściowe A j B oraz zmienne wewnętrzne R1 i C. Zmienne R1 oraz C reprezentują sekwencyjne bloki funkcjonalne (można je nazwać “rejestrami uogólnionymi"), gdyż występują zarówno po prawej jak i po lewej stronie mikroinstrukcji podstawienia :=. Na zmiennej R1 wykonywane są dwie mikrooperacje: Rł := 0 oraz R1 := R1 + 8, odpowiada jej więc rejestr
równoległy z dołączonym do wejścia sumatorem. Na zmiennej C wykonywane są mikrooperacje: C := 0 oraz C := C + 1, odpowiada jej więc licznik.
Zmienne Ri i A muszą być stale ze sobą porównywane, zaś wystąpienie relacji (As Rl) musi być natychmiast zasygnalizowane układowi sterującemu - wykorzystamy do tego komparator. Ostateczny schemat układu operacyjnego (UO) wraz z odpowiadającym mu układem sterującym (US) przedstawiono na rys.8.7c.
Proponujemy Czytelnikowi zaprogramowanie uniwersalnego procesora mi kroprogramowanego z rys.8.4a do współpracy z układem sterującym US z rys. 8.7c.
Przykład 8.2 (Układ mnożący [6])
Istnieją dwa zasadnicze sposoby wykonywania mnożenia dwójkowych liczb całkowitych bez znaku:
a) metoda wielokrotnego dodawania (tzw. mnożenie unitarne):
B
A . B = A + A + ... +A = Z A (8.3)
i=l
B razy
b) metoda mnożenia jednej liczby przez kolejne cyfry drugiej i sumowania przesuniętych iloczynów częściowych (metoda analogiczna do mnożenia "na papierze" - jest to tzw. mnożenie szeregowo-równoległe).
Najlepiej wyjaśni to przykład: