Entry tags:
Что такое микропрограммное управление
Разработка цифровых схем с микропрограммным управлением была модной в 60-70-е годы прошлого века. Выпускались даже специальные серии микросхем, типа Am2900 (передранные в Советском Союзе под именем КМ1804) и другие. Многие первые компьютеры и микропроцессоры были микропрограммно управляемыми, такие как IBM/360, PDP-11, VAX, 6502. С изобретением RISC микропрограммный подход перестал быть популярным, но тем не менее может иметь свою область применения.
Опишу здесь простейший вариант цифровой управляющей системы с микропрограммным управлением.
Предположим, у нас есть некий внешний объект, которым можно управлять с помощью трёх цифровых (двоичных) сигналов P, Q, R. Своё состояние объект сообщает в виде трёх тругих цифровых сигналов X, Y, Z.

Построим схему, которая будет управлять сигналами P Q R, в зависимости от сигналов X Y Z. От тактового генератора, на каждом следующей положительном фронте синхросигнала значения управляющих сигналов будут изменяться.
Введём регистр PC, хранящий текущий адрес микрокоманды. Ориентировочно прикинем, что тысячи команд нам хватит, и сделаем регистр 10-битным. Добавим память программы, по сути ПЗУ, принимающее на вход адрес PC и выдающее одно слово - текущую микрокоманду.

Теперь определим формат микрокоманды. Для каждого управляющего сигнала P Q R делаем однобитовое поле, определяющее значение этого сигнала. Чтобы программа могла ветвиться, добавляем поле логического условия, зависящего от входов X Y Z, при котором происходит переход по заданному адресу (иначе переходим к следующей команде). И последнее поле команды - адрес для перехода.
Вычислим размер команды. Для трёх входных переменных существует 2^2^3 = 256 возможных логических условий, то есть надо 8 бит для поля условия. С адресом мы уже определились: 10 бит. Всего получается 3 + 8 + 10 = 21 бит для команды. Итого подребуется ПЗУ размером 1024*21 = 21504 бит.

Рисуем полную схему. Перед регистром PC добавляем мультиплексор, который выбирает значение адреса следующей команды и управляется блоком проверки условия. Выбирается либо следующий адрес PC+1, либо адрес перехода из поля текущей команды.

По такой схеме устроены практически все микропрограммные системы, с небольшими усложнениями. Дальше попробуем применить её для процессора МЭСМ-6.
Литература по теме: "Bit-Slice Microprocessor Design", русский перевод Мик Дж., Брик Дж. "Проектирование микропроцессорных устройств с разрядно-модульной организацией".
Опишу здесь простейший вариант цифровой управляющей системы с микропрограммным управлением.
Предположим, у нас есть некий внешний объект, которым можно управлять с помощью трёх цифровых (двоичных) сигналов P, Q, R. Своё состояние объект сообщает в виде трёх тругих цифровых сигналов X, Y, Z.

Построим схему, которая будет управлять сигналами P Q R, в зависимости от сигналов X Y Z. От тактового генератора, на каждом следующей положительном фронте синхросигнала значения управляющих сигналов будут изменяться.
Введём регистр PC, хранящий текущий адрес микрокоманды. Ориентировочно прикинем, что тысячи команд нам хватит, и сделаем регистр 10-битным. Добавим память программы, по сути ПЗУ, принимающее на вход адрес PC и выдающее одно слово - текущую микрокоманду.

Теперь определим формат микрокоманды. Для каждого управляющего сигнала P Q R делаем однобитовое поле, определяющее значение этого сигнала. Чтобы программа могла ветвиться, добавляем поле логического условия, зависящего от входов X Y Z, при котором происходит переход по заданному адресу (иначе переходим к следующей команде). И последнее поле команды - адрес для перехода.
Вычислим размер команды. Для трёх входных переменных существует 2^2^3 = 256 возможных логических условий, то есть надо 8 бит для поля условия. С адресом мы уже определились: 10 бит. Всего получается 3 + 8 + 10 = 21 бит для команды. Итого подребуется ПЗУ размером 1024*21 = 21504 бит.

Рисуем полную схему. Перед регистром PC добавляем мультиплексор, который выбирает значение адреса следующей команды и управляется блоком проверки условия. Выбирается либо следующий адрес PC+1, либо адрес перехода из поля текущей команды.

По такой схеме устроены практически все микропрограммные системы, с небольшими усложнениями. Дальше попробуем применить её для процессора МЭСМ-6.
Литература по теме: "Bit-Slice Microprocessor Design", русский перевод Мик Дж., Брик Дж. "Проектирование микропроцессорных устройств с разрядно-модульной организацией".
no subject
nope
no subject
None of these chips (likewise 6800 and 6502) use microcode the same way as it's used today. The decoding isn't as strictly separated from execution logic.
Example 1: 6502
The 6502, for example, has a 'rather' simple structure built from a timing circuit counting instruction cycle and an instruction register, followed by a decoder PLA where instruction plus timing information is transformed into control signals which are fed into the execution units.
The cycle counter starts at 0 and shifts (!) through the maximum 7 states. When an instruction ends, it gets reset to zero for the next one. The 6502 PLA is essentially a one-dimensional decoder transforming the combined instruction plus state into one or more control signals for the execution units. Since the PLA allows partial decoding, one entry can fire on different instructions. For example, all instructions loading the second byte as immediate share one single PLA entry (microcode line). In comparison with textbook microcode engines, this is equivalent to a kind of compressed microcode.