Micro-Op кодиране
Има 3 метода на кодиране:
1) Унарно кодиране (хоризонтално)
Всеки бит от микроинструкция е свързан с конкретна микрооперация. Ако тази микрооперация присъства в микроинструкцията, тогава битът е настроен на 1, ако липсва, той е настроен на 0.
Предимства: 1) лекота на кодиране; 2) при еднофазно тактоване блокът за генериране на управляващи сигнали може да отсъства и съдържанието на микроинструкцията може да бъде управляващи сигнали. При многофазно тактиране BFUS ще представлява набор от логически схеми "И". Недостатъкът е неефективното използване на микропрограмната памет поради изключително дългата работна част на микроинструкцията.
2) Неизлишно кодиране (вертикално). На всяка микроинструкция се присвоява двоичен код n=[log2(M)], където M е броят на използваните микроинструкции. В този случай блокът за генериране на управляващи сигнали ще стане по-сложен. На входа е поставен декодер. Всеки вход на декодера ще съответства на микроинструкция. Всеки енкодер съдържа толкова изхода, колкото са микрооперациите, реализирани в дадената микроинструкция. Ако се използва многофазно синхронизиране, тогава всеки изходен сигнал трябва да бъде свързан с ti, както в предишното число за всеки декодер.
Колкото повече микрооперации има в една микроинструкция, толкова по-малък е броят на микроинструкциите, дължината на микроинструкциите се намалява и BFU става по-сложна. Но за всяка микроинструкция може да има само една микрооперация, тогава дължината на микроинструкциите се увеличава, но FUS става по-проста. Микрокомандите, съдържащи само една микрооперация, преди се наричаха миникоманди.
3) Смесено кодиране на микрооперации (кодиране със структура на поле). Целият набор V от микрооперации е разделен на K подмножества. V->V1,V2,...,Vk. Във всяка такаваподмножеството включва несъвместими микрооперации (те не могат да се появят едновременно в микроинструкция). Има: 1) хардуерна несъвместимост (например, когато трябва да запишете число в един регистър и да преместите съдържанието му); 2) алгоритмична несъвместимост (те могат да се изпълняват заедно, но никога не се срещат заедно в разработените алгоритми). Несъвместимите микрооперации се разпределят в отделно поле Fi, където на всяка микрооперация се присвоява собствен код. В този случай е необходимо да се предостави кодова стойност, при която всички микрооперации отсъстват в това поле (празна микро поръчка). Ако някое поле Vi съдържа n микрооперации, тогава дължината на полето е Ln=[log2(n+2)]. Възниква проблемът с оптималното кодиране.
Разделяне на полета на микрооперации в случай на смесено кодиране.
Задачата на оптималното кодиране е да раздели целия набор от микрооперации на минимален брой полета с максимален брой микрооперации във всяко поле.
Помислете за метода за изключване на съвместими микрооперации, предложен от Volkovysky V.L. пример стъпка по стъпка.
1) Нека V= е набор от микрооперации.
2) За този набор от микрооперации ние съставяме матрицата за съвместимост S:
4) Ако приемем, че y1=V=2,3,4,5,6,7,8,9,10> необходимо е да се изберат несъвместими микрооперации. Започваме с Z1 (в този случай просто минаваме през списъка): изберете 2. Разгледайте Z3, Z4: изберете 5, 6, 9; Z7 : разпределете 8; Z10. От тук получаваме полето на несъвместимите микрооперации: V1= n1=3 цифри. y2=6,8,9> -> V2= n2=2 цифри. y3= -> V3= n3=2 цифри.
5) Ние съставяме структурата на оперативната част на микроинструкцията:
6) Кодиране на поле за V1
празна операция |
y1 |
y3 |
y4 |
y7 |
y10 |
Полетата за V2 и V3 са кодирани по подобен начин.
следваща лекция ==> | ||
Автомати за управление | адресиране на микроинструкции |