270
a) b)
Zawartość ROM
A |
K1K0 |
C cx |
Y |
B | |
0: if Xj then go to 2; |
0 |
1 0 |
1 0 |
- |
- |
1: go to 0; |
1 |
0 1 |
— |
- |
0 |
2: execute Y^; |
2 |
0 0 |
— |
1 |
- |
3: if then go to 5; |
3 |
1 0 |
2 1 |
- |
- |
4: go to 10; |
4 |
0 1 |
— |
- |
10 |
5: execute Yg; |
5 |
0 0 |
— |
2 |
- |
6: execute Y^; |
6 |
0 0 |
— |
3 |
- |
7: if ^2 then go to 9; |
7 |
1 0 |
2 1 |
- | |
8: go to 5; |
8 |
0 1 |
— |
- |
5 |
9: go to 14; |
Q |
0 1 |
— |
- |
14 |
10: if then go to 12; |
10 |
1 0 |
3 0 |
- |
- |
11: go to 6; |
u |
0 1 |
— |
- |
S |
12: execute Y^; |
12 |
0 0 |
— |
4 |
- |
13: execute Y^; |
13 |
0 0 |
— |
5 |
- |
14: ... |
14 |
2 3 3 4
bity bity bity bity
Rys. 7.20. Mikroprogram (a) oraz zawartość pamięci ROM (h) dla Zespołu 3* (przykład 7.1)
Wybierając, na koniec, Zespół 3**, sieć działań z rys. 7.14 można posegmentować tak jak to pokazano na rys. 7.21 a. Każdemu stanowi wewnętrznemu związanemu z badaniem pewnego warunku xr są tu przypisane dwa sąsiednie numery. Wynika to ze specyfiki Zespołu 3 , która polega na tym, że przed każdorazowym badaniem warunku Xę musi być wykonana mikrooperacja p: = x^ (patrz (7.51 b, c)), a zatem badanie warunku jest realizowane zawsze przy pomocy dwu mikroinstrukcji (stąd dwa adresy). Podobna sytuacja występuje • przy realizacji skoków bezwarunkowych.
r
Rys.
7.21. Sieć działań (przykład 7.1) z segmentami Zespołu 3** (a)
oraz przykłady nieoptymalnej numeracji stanów wewnętrznych (b)
Każdy z nich jest realizowany przy pomocy pary mikroinstrukcji:
: execute (p: = Xq;
Ai+J: if p then go to A^; (7.56)
1); sytuacji tej odpowiadają adresy 9.
(potrzebne jest oczywiście Xg lc na rys. 7.21 a.