1
Изобретение относится к вычислительной технике и может применяться в вычислительных машинах, ориентированных на выполнение программ на алгоритмических языках, в качестве устройства преобразования программ.
Программы, записанные на алгоритмических языках (например АЛГОЛ или ФОРТРАН, характеризуются сложными взаимосвязями, определяющими порядок выполнения входящих в них операций, который в большинстве случаев не совпадает с порядком записи этих операций в программе. Непосредственное выполнение программ, записанных на алгоритмических языках, требует переупорядочивания операций, записанных в программе, в соответствии с последовательностью их выполнения.
Известны устройства, которые основаны на использовании стека операций, схемы сравнения приоритетов операций, стека операндов и ряда управляющих схем и регистров Ijt и 23.
Недостатком данных устройств явяяется низкая скорость выполнения программ на алгоритмических языках.
Наиболее близким по технической сущности к изобретению является устройство микропрограммного управления, содержащее блок постоянной памяти, выход которого соединен с регистром микрокоманды, дешифратор микроопера- v ций, выход которого соединен с первым входом формирователя функциональных сигналов, регистр кода операции, выход которого соединен с первым входом регистра адреса, блок синхрог низации, выход которого соединен со вторыми входами формирователя функциональных сигналов и регистра адре- са, с первым входом блока постоянной памяти, причем первый, второй выходы регистра микрокоманды соединены соответственно со входом дешифратора микроопераций и с третьим входом регистра адреса, выход которого соединен со вторым входом блбка постоям ной памяти, а выход формирователя функциональных сигналов является пе .вым выходом устройства, первый и вт рой блоки стековой памяти и блок сравнения приор1 тетов символов, пр чем выход формирователя функциональ ных сигналов соединён с первыми вхо дами .второго блока стековой памяти и блока сравнения приоритетов символов, второй вход и первый и второ выходы которого соединены соответдтвенно с выходом и входом первого блока стековой памяти и со входом регистра кода операций, третий вход блока сравнения приоритетов символов, второй вход и выход второ го блока стековой памяти являются соответственно первым и вторым входами и вторым выходом устройства 3. В этом устройстве выполняется запись операндов в стек операндов, анализ приоритета очередного функционального символа программы и фор мирование последовательности управляющих сигналов.для выполнения операции, если это позволяет приоритет символа. При выполнении операции ре зультат записывается в стек операндов и происходит переход к анализу приоритета очередного функционального символа. Все эти действия выполняются последовательно,что уве чивает время выполнения программы. Цель изобретения - повышение быстродействия устройства и сокраще ние времени выполнения программ, записанных на алгоритмических языках. Поставленная цель достигается тем, что в устройство, содержащее блок сравнения приоритетов, блок стековой памяти операций, первый ре гистр кода операции, первый блок управления и блок стековой памяти операндов, при этом первые вход и выход блока сравнения приоритетов соединены соответственно с выходом и входом блока стековой памяти операций, а второй выход блока сравнения приоритетов подключен к информа ционному входу первого регистра кода операции, выход которого соединен с первым входом первого управления, первый выход которого подключен к первому входу блока стековой памяти операндов, введены блок анализа сим ,волов, второй блок управления, перв и второй регистры операнда, второй регистр кода операции, -первый и второй триггеры управления и блок буферизации команд, причем информационный вход устройства соединен с информационным входом блока анализа символов, первый и второй информационный выходы которого подключены соответственно ко входам второго регистра операнда и второго регистра кода операции, управляющий вход к нулевому выходу второго триггера управления, а первый и второй управляющие выходы - соответственно к единичному входу второго триггера управления и выходу управления приемом символов устройства,первый, второй и третий входы второго блока управления соединены соответственно с единичными выходами первого и второго триггеров управления и третьим выходом блока сравнения приоритетов, а первый, второй, третий, четвертый и пятый выходы второго блока управления подключены соответственно ко вторым входам блока сравнения приоритетов и блока стековой памяти операндов , нулевым входам первого и второго триггеров управления и управляющему входу блока стековой памяти операций, третий вход блока сравнения приоритетов соединен с выходом второго регистра кода операции, выход второго регистра операнда подключен к третьему входу блока стековой памяти операндов, выход которого соединен со входом первого регистра операнда, второй, третий и четвертый входы первого блока управления подключены соответственно к выходу первого регистра операнда, нулевому выходу первого триггера управления и первому управляющему выходу блока буферизации команд, второй, третий, четвертый, пятый и шестой выходы первого блока управления соединены соответственно с единичным входом первого триггера управления, управлящими входами первого регистра операнда и первого регистра кода операций, первйм управлякндим и первым информационным входами блока буферизации команд, второй и третий информационные входь которого подключены соответственно к выходам первого регистра операнда и первого регистра кода операции, вход управления чтением команд устройства соединен со вторым управляющим входом блока буферизации команд, информационный выход и.второй управляю1ЦИЙ выход которого подключены соответственно к информационному выходу и выходу управления выдачей команд устройства. При этом первый блок управления содержит регистр адреса, память микропрограмм, регистр микрокоманды, дешифратор микроопераций, узел элементов И, коммутатор адреса перехода и генератор синхроимпульсов, причем к первому входу блока подключен первый вход регистра адреса, выход кото рого соединен со входом памяти микро программ , вход регистра микрокоманд подключен к выходу памяти микропрограмм, первый выход - ко входу дешифратора микроопераций, а второй выход - к первому входу коммутатора адреса ,а ко второму, третьему и чет вертому входам блока подключены второй, третий и четвертый входы коммутатора адреса перехода, выход генера тора синхроимпульсов соединен с управляющими входами регистра 1адреса памяти микропрограмм и узла элементов И, вход которого подключен к выходу дешифратора микроопераций, а выходы - к первому, второму, треть ему, четвертому, пятому и шестому выходам блока. Второй блок управления также содержит регистр адреса, память микропрограмм, регистр микрокоманды,дешифратор микроопераций, узел элементов И, коммутатор адреса перехода и генератор синхроимпульсов, причем к третьему входу блока подключен первый вход р::;гистра адреса, выход которого соединен со входом памяти микропрограмм, вход регистра микрокоманды подключен к выходу памяти микропрограмм, первый выход - к входу дешифратора микроопераций, а второй выход - к первому входу коммутатора адреса перехода, выход которого соединен со вторым входом регистра адреса, а к первому и второ му входам блока подключены второй и третий входы коммутатора адреса перехода, выход генератора синхроимпульсов соединен с управляющими вхо дами регистра адреса, памяти микропрограмм и узла элементов И, вход которого подключен к выходу дешифратора микроопераций, а выходы - к первому, второму, третьему, четверто му и пятому выходам блока. Кроме того, блок анализа символов содержит входной регистр, дешифратор, два узла элементов И, элемент ИЛИ, триггер анализа, элемент И и три линии задержки, причем информационный вход блока соединен со входом входного регистра, выход которого подключен ко входу дешифратора и первым входам первого и второго узлов элементов И, выходы которых соединены с первым и вторым информационными выходами блока, первый выход дешифрато ра подключен к управляющему входу второго узла элементов И и первому входу элемента ИЛИ,а второй выход дешифратора соединен с управляющим входом первого узла элементов И, вторым входом элемента ИЛИ и первым управляющим выходом блока, единиМный вход триггера анализа подключен к выходу элемента ИЛИ, а единичный выход - к входу первой линии задержки, выход которой соединен с первым входом элемента И, управляющий вход блока подключен к второму входу элемента И, выход которого соединен со входами второй и третьей линий за держки и вторым управляющим выходом блока, выход второй линии задержки подключен к нулевому входу триггера анализа, а третьей линии задержки - к управляющему входу входного регистра. Причем блок буферизации команд содержит регистр команд, память команд, элемент ИЛИ, два узла элементов И, счетчик адреса записи, схему сравнения, счетчик чтения, коммутатор, триггеры блокировки записи и чтения, триггер занятости и выходной регистр, причем пе}&вый, второй и третий информационные входы блока соединены с первым, вторым и третьим входами регистра команд,выход которого подключен к первому входу памяти команд, первый и второй управляющие входы блока соединены с первым и вторым управляющими входами коммутатора, первый и второй управляющие выходы которого подключены к первому и второму управляющим выходам блока, первый, второй, третий и четвертый входы коммутатора соединены соответственно с выходами триггера блокировки записи, триггера блокировки чтения и схемы сравнения, первый, второй, третий,четвертый и пятый выходы коммутатора подключены соответственно ко второ,му и третьему входам памяти команд, входам счетчиков адреса записи и чтения и управляющему входу выходного регистра, выход счетчика адреса записи соединен с первым входом схемы сравнения и первым входом первого узла элементов И, второй вход которого подключен к первому выходу коммутатора, а выход - к первому входу элемента ИЛИ, выход счетчика адреса мтени соединен со вторым входом схемы сравнения и первым входом второго узла элементов И, второй вход которого подключен ко второму выходу коммутатора, а выход ко второму входу элемента ИЛИ, выход которого соединен с четвертым входом памяти команд, вход выходного регистра подключен к выходу памяти команд, а выход - к информационному выходу блока. Кроме того, необходимо,чтобы блок сравнения приоритетов содержал постоянную память и регистр адреса, причем первый, второй V) третий входы блока подключены соответственно к первому информациойному входу, первому управляющему входу и второму инфор мационному входу регистра адреса,первый , второй и третий выходы которого соединены соответственно с первым и вторым выходами блока и адресным входом постоянной памяти, информационный выход которой подключен к третьем выходу блока, а второй вход блока сое динен со входом разрешения считывания постоянной памяти. Введение в устройство дополнительных блоков и элементов позволяет совместить во времени выполняемые им действия и, в частности, анализ приоритета очередного функционального си вола с подготовкой следующего символа и формированием команд для выпол нения действий, определяемых предыду щим символом. Кроме, того, наличие блока буферизации команд обеспечивае совмещение работы данного устройства с работой процессора, выполнякадего заданные программой действия. В рё зультате увеличивается быстродействие устройства и сокращается время выполнения программ. На фиг.1 приведена структурная схема микропрограммного устройства анализа программ; на фиг.2 и 3 примеры реализации первого и второго блоков управления; на фиг.,5,б и И 7 - примеры реализации схемы анализа символов, блока буферизации 9 98 команд блока сравнения приоритетов и коммутатора блока буферизации команд. Устройство содержит блок 1 сравнения приоритетов, блок 2 стековой памяти операций, первый регистр 3 кода операции, первый блок Ц управления и блок 5 стековой памяти операндов (фиг.1) , Первые вход и выход блока 1 соединены соответственно с выходом и входом блока 2, а второй выход блока 1 подключен к информационному входу регистра 3. Выход регистра 3 соединен с первым входом блока , первый выход которого подключен к входу блока 5. Кроме того, устройство содержит блок б анализа символов, второй блок 7 управления, первый регистр 8 операнда, второй регистр 9 операнда, второй регистр 10 кода операции, первый триггер t1 управления, второй триггер 12 управления и блок 13 буферизации команд. Информационный вход I устройства соединен с информационным входом блока б, первый и второй информационные а 1ходы которого подключены соответственно ко входам регистра 9 и регистра 10, управляющий вход - к нулевому выходу триггера 12, а первый и второй управляющие выходы -. соответственно к единичному в соду триггера 12 и выходу 15 управления приемом символов устройства. Первый, второй и третий входы блока 7 соединены соответственно с единичными выходами триггера 11, триггера 12 и третьим выходом блока 1. ПервыЯТ второй, третий, четвертый и пятый выходы блока 7 подключены соответственНО ко вторым входам блока 1 и блока 5, нулевым входам триггера 11 и триггера 12 и управляющему входу блока 2. Третий вход блока 1 соединен с выходом регистра 10, Выход регистра 9 . подключен к третьему входу блока5, выход которого соединен со входом регистра 8, второй, третий и четвертый входы блока k подключены соответственно к выходу регистра 8, нулевому выходу триггера 11 и первому управляющему выходу блока 13. Второй, третий, четвертый, пятый и шестой выходы блока Ц соединены соответственно с единичным входом триггера 11, управляющими входами регистра 3, первым управляющим и первым информационным входами блока 13. Второй и третий информационные входы блока
13 подключены соответственно к выходам регистра 8 и регистра 3. Вход 16 управления чтением команд устройства соединен со вторым управляющим входом блока 13, информационный выход и второй управляющий выход которого подключены соответственно к информационному выходу 17 и выходу 18 управления выдачей команд устройства
Первый блок k управления содержит регистр 19 адреса, память 20 микропрограмм, регистр 21 микропрограммы, дешифратор 22 микроопераций, узел 23 элементов И, коммутатор 2А адреса перехода и генаратор 25 синхроимпульсов .2|. Первый вход регистра 19 подключен к первому входу блока 4, выход регистра 19,соединё со входом памяти 20, Вход регистра 21 подключен к выходу памяти 20, пер вый эыход - ко входу дешифратора 22, а второй выход - к первому входу ком мутатора 2. Выход коммутатора 24 соединен со вторым входом регистра 19, а второй, третий и четвертый вхо ды коммутатора 2k подключены ко втброму, третьему и четвертому входам блока . Выход генератора 25 соедине с управляющими входами регистра 19 памяти 20 и узла 23, вход которого подключен к выходу дешифратора 22, а выходы - к первому, второму,.третьему, четвертому, пятому и шестому выходс1М блока .
второй блок. 7 управления содержит
регистр 26 адреса, память 27 микропрограмм, регистр 28 микрокоманды,дешифратор 29 микроопеарций, узел 30 зле ментов И, коммутатор 31 адреса перехода и генератор 32 синхроимпульсов (фиг.З). Первый вход регистра 26 подключен к третьему входу блока 7, а выход регистра 26 соединен со входом памяти 27. Вход регистра 2.8 подключен к выходу памяти 27 первый выход - ко входу дешифратора 29, а второй выход - к первому входу коммутатора 31, выход которого соединен со вторым входом регистра 26; а второй и третий входы подключены к первому и второму входам блока 7- Выход генератора 32 соединен с управляющими входами регистра 26, памяти 27 и узла 30выход которого подключен к выходу дешифратора 29, а выходы к первому, второму, третьему, четвертому и пятому выходам блока 7Блок 6 анализа символов содержит входной регистр 33, дешифтратор З, два узла 35.36 элементов И, элемент 37 ИЛИ, триггер 38 анализа, элемент И 39 и три линии А0, и k2 задержки {фиг.(). Информационный вход блок 6 соединен со входом регистра 33, выход которого подключен ко входу дешифратора 3 и первым входам узлов 35 и 36. Выходы узлов 35 и 36 соединены с первым и вторым информационными входами блока 6, первый выход дешифратора 3 подключен к управляющему входу узла Зб и первому входу элемента 37, а второй выход дешифратора 3 соединен с управляющим входом узла 35, вторым входом элемента 37 и первым управляющим выходом блока 6. Единичный вход триггера 38 подключен к выходу элемента 37, а единичный выход - ко входу линии ЦО задержки, выход которой соединен с первым входом элемента 39. Управляющий вход блока 6 - подключен ко второму входу элемента 39, выход которого соединен со входами линий 41 и 4задержки и вторым управляющим выхйдо блока 6. Выход линии 41 задержки подключен к нулевому входу триггера 38, а третьей линии 42 задержки - к управляющему входу регистра 33.
Блок 13 буферизации команд содержит регистр 43 команд, память 44 команд, элемент 45 ИЛИ, два узла 46, 47 элементов И, счетчик 48 адреса зэписи, схему 49 сравнения, счетчик 50 адреса чтения, коммутатор 51, триггер 52 блокировки записи, триггер 53 блокировки чтения, триггер ,54 занятости и выходной регистр 55 (фиг.5). Первый, второй и третий информационные входы блока 13 соединены с первым, вторым и третьим вхрдами регистра 43 команд, выход которого подключен к первому входу памяти 44. Первый и второй управляющие входы блока 13 соединены с первым и вторым управляющими входами коммутатора 5 J. Первый и второй управляющие выходы коммутатора 51 подключены к первому и второму управляющим выходам блока 13. Первый,второй, третий и четвертый входы коммутатора 51 соединены соответственно с выходами триггера 52, триггера 53, триггера 54 и схемы 49. Первый, второй, третий, четвертый и пятый выходы коммутатора 51 подключены соответственно ко второму и третьему
входам 4А, входам счетчика 8 и счетчика 50 и управляющему входу регистра 55. Выход счетчика соединен с первым входом схемы 9 и первым входом узла k6, второй вход которого подключен к первому выходу коммутатора 51, выходj - к первому входу элемента 451 Выход счетчика 50 соединен со вторым входом схемы 9 и первым входом узла 47, второй вход которого подключен ко второму выходу коммутатора 51, а выход - ко второму входу элемента 45, выход которого соединен с четвертым входом памяти 44. Вход 56 регистра 55 подключен к выходу памяти 44, а выход 57 - к информационному выходу блЬка 13.
Блок 1 сравнения приоритетов содержит постоянную память 58 и регистр 59 адреса(фиг.6). Первый, второй и третий входы блока 1 подключены соответственно к первому информационному входу, первому управляющему входу и второму информационному входу регистра 59. Первый, второй и третий выходы регистра 59 соединены соответственно с первым и вторым выходами блока 1 и адресным входом памяти 58, информационный выход которой подключен к третьему выходу блока 1, а второй вход блока 1 соединен со входом разрешения считывания памяти 58.
В состав коммутатора 51 входят триггеры 60-67, элементы И 63,64, .69-77, элемент 65 ИЛИ, и генераторы 62,68 тактовых сигналов,Триггеры 60 и и 6t служат для фиксации запросов на чтение и запись в блок 13 на время выполнения предыдущего запроса. Зап-; рос на запись поступает из блока 4 на единичный вход триггера 61, а запрос на чтение - со входа 1б устройства на единичный вход триггера 60, Единичные выходы этих триггеров соединены со входами элементов 63 и 64, которые вырабатывают сигналы разрешения соответственно чтения и записи. Входы элемента 63 соединены также с выходом триггера 53, который соответствует состоянию чтение разрешено выходом триггера 54, который соответствует состоянию свободен, и первым выходом генератора 62, Входы эяeмe+ тa 64 подключены к выходу триггера 52, который соответствует состоянию запись разрешена, выходу триггера 54, который соответствует состоянию свободен, и ко
второму выходу генератора б2. Генератор 62 используется для временной селекции поступающих одновременно запросов на запись и чтение команды. Этот генератор вырабатывает поочередно на одном из двух выходов тактовый сигнал, который разрешает выполнение записи или чтения. Интервал между появлением сигналов на выходах генератора 62 выбирается с учетом времени, необходимого для надежного изменения состояния триггеров 54,60,61,66 и 67.
Устройство работает следующим образом.
Программа, записанная на алгоритмическом языке, последовательно символ за символом подается на вход 14 устройства (см.фиг. 1), При этомочередной символ передается в устройство при появлении разрешающего сигнала на управляющем входе 15 устройства. Предполагается, что программа предварительно подвергается лексической обработке и состоит только из символов четырех типов, которые отличаются значением специального признака: идентификаторов переменных, констант, функциональных символов и разделителей. Символы выполняемой программы поступают из оперативной памяти (не показана) на вход схемы 6 анализа символов, которая выделяет символы двух видов; операнды (идентификаторы переменных и константы) и операции (функциональные символы и разделители. Операнд передается схемой 6 на второй регистр 9 операнда, а операция - на регистр 10, После передачи операции на регистр 10 схема 6 устанавливает в единичное состояние триггер 12 и переходит в режим ожидания, в котором находится до тех пор, пока триггер 12 не установлен в нулевое состояние. Установка этого триггера в нулевое состояние осуще.ствляется блоком7. В режиме ожидания схема 6 не разрещаеГ передачу на вход 14 устройства очередного символа программы, используя управ- ляющ|1Й выход 15 устройства,После установки триггера 12 в нулевое состояние схема 6 выходит из режима ожидания, выдает сигнал на выход 15 для приема очередного символа, принимает этот символ по входу 14 и начинает его обработку. Установка триггера 12 в единичное состояние является условием , 139 аля .начала очередного цикла работы блока 7 при условии окончания преды.дущего цикла его работы. Этот цикл начинается с проверки состояния триг гера П. Если этот триггер находится в нулевом состоянии, то блок 7 переходит в режим ожидания, в котором по стоянно проверяется состояние триггера П. Когда триггер 11 установитс в единичное состояние, блок 7 выдает сигналы,разрешающие запись операнда с р&гистра 9 в блок 5 и прием кода операции из регистра 10 в блок 1. После завершения этих действий блок 7 устанавливает триггер 12 в нулевое состояние, что позволяет схеме 6 начать анализ очередного символа про граммы. Одновременно с этим блок 7 выдает в блок 1 сигнал для сравнения приоритета очередной операции программы на регистре 10 с приоритетом операции в блоке 2 (при начальном включении устройства в блок 2 заносится специальный начальный символ). Результат сравнения приоритетов поступает в блок 7. Если приоритет очередной операции выше приоритета операции в блоке 2, по сигналу из блока 7. ее код записывается в блок 2 и проверяется состояние три1- гера 12. Если он находится в нулевом состоянии, т.е. очередная операция не подготовлена схемой 6, то блок 7 переходит в режим ожидания, в противном случае начинается новый цикл работы блока 7. В том случае, когда приоритет очередной операции ниже или равен приоритету операции в блоке 2, второй блок 7 управления проверяет состояние триггера 11.Если этот триггер находится в нулевом состоянии, то блок 7 переходит в режим ожидания, в котором находится до установки триггера 11 в единичное состояние. После этого блок 7 выдает сигнал для записи кода операции из блока. 2 в регистр 3, устанавливает триггер Ив нулевое состояние и выполняется сравнение приорите тов очередной операции в регистре 10 и следующей операции в блоке 2. Установка триггера П в нулевое состояние служит сигналом для начала работы блока . Этот блок реализует действия ПС формированию команд процессора (не показан), выполняющего заданные в программе действия,определяемые кодом операции,поступившим в регистр 3. 9 Рассмотрим работу блока для случ чая процессора с одноадресной системой команд, использующего блок ств козой памяти для хранения промежуточ-v ных результатов. Выполняемые блоком k действия зависят от числа операндов, необходимых для выполнения операции, код которой находится на регист-ре 3. В случае одноместной опера блок «выдает сигнал чтения операнда из блока 5 в регистр о, а затем производится запись содержимого регистров 3 и 8 в блок 13. Содержимое этих регистров образует соответственно операционную и адресную часть команды процессора.Далее блок k выдает в блок 13 сигнал записи и анализирует вид результата сформированной команды. Если результат является промежуточным, то в блок. 5 выдается сигнал для записи признака промежуточного результата, который указывает, что операнд находится в стеке промежуточных результатов процессора (не показан . После этого триггер 11 устанавливается в единичное состояние, что является сигналом готовности блока k к формированию очередной команды. 8 том случае, когда для выполнения операции требуется более одного операнда, блок k выдает сигнал чтения операнда из блока 5 в регистр 8. После приема операнда нарегистр В блок k анализирует его значение. Если операнд сопровождается признаком промежуточного результата, то блок Ц выдает сигнал на чтение следующего операнда из блока 5. В противном случае содержимое регистра 8 записывается в качестве адресной части очередной команды в блок 13- При этом в качест ве операционной части команды в блоке 13 по сигналу из блока устанавливается код операции засылки операнда в блок стековой памяти промежуточных результатов процессора. После этого блок k выдает сйгна11 записи в 15лок 13 и ожидает конца записи. Далее блок Ц выдает сигнал на чтение следующего операнда из блока 3 Эти действия выполняются для всех операндов операции, кроме последнего. Обработка последнего операнда выполняется как и в случае одноместной операции. Пример реализации первого блока k управления приведен на фиг.2. Этот блок работает следующим образом. На регистр 19 адреса поступает код операции из регистра 3, который интерпретируется как адрес памяти 20 микр программ, начиная с которого записана микропрограмма.обработки данной операции. По этому адресу из памяти. 20выбирается микрокоманда на регист 21,которая дешифрируется дешифратором 22в совокупность микроопераций, для выполнения которых узел 23 формирует управлякщие сигналы. Эти сигналы поступают на управляющие входы регис ра 3i блока 5, регистра 8, блока 13, на единичный вход триггера Т1 и ин формационный вход блока 13 (для задания кода операции). Выборка микропрограмм из памяти 20 осуществляется последовательна. Для изменения этой последовательности используется коммутатор 23 адреса перехода, который формирует адрес очередной микрокоманды в Зависимости от содержимог го регистра 8 и состояния триггера 11 и блока 13f который сигнализирует 06окончании записи команды. Синхронизация элементов блока t обеспечивается reHepafTopoM 25. Второй блок 7управления работает аналогично бло ку . . Схема 6 анализа символов работает следующим образом (фигД).При поступлении на регистр 33 кода операнда вырабатывается сигнал на первом выходе дешифратора 3, который обеспечивает передачу кода операнда из регистра 33 через узел 3$ в регистр Э- Этот же сигнал через элемент 37 поступает на единичный вход триггера 38, единичный выход которого подключен через линию 0 задержки к первому входу элемента 39 второй выход которого соединен с нулевым выходом триггера 12. На выходе элемента 39 вырабатывается сигнал, разр щающий передачу на вход 1 очередного символа программы. Зтот же сигнал разрешает прием информации на регист 33 и установку в нулевое состояние триггера 38. Необходимые при этом задержки обеспечиваются линиями задержки и А2, причем параметры линии 42 задержки определяют время выборки очередного символа из памяти а параметра линии задержки 42 - длительность сигнала на входе 15- При поступлении на Ьегистр 33 кода опера ции вырабатывается сигнал на втором выходе дешифратора 4, который обеспечивает передачу кода операции из регистра 33 через узел 35 в регистр 10. Этот же сигнал поступает на единичный вход триггера 12 и через элемент 37 на единичный вход триггера 38. Задержанный сигнал с единичного выхода триггера 38 поступает на вход элемента 39 после установки триггера 12 в единичное состояние, В результате, разрешающий сигнал на выходе элемента 39 появляется только после установки триггера 12 в нулевое состояние. Это обеспечивает блокировку приёма очередного символа программы после приема кода операции до установки триггера 12 в нулевое состояние. , Блок 13 буферизации команд /фиг.5) имеет кольцевую адресацию, т.е. после записи или чтения в последнюю ячейку памяти 44 команд осуществляется аа пись или чтение а иервую ячейку памяти. Для задания адреса ячейки памяти, а которую должна быть записана команда, используется счетчик 48 адреса записи. Ьри чтении из памяти используется счетчик 50. Для исключения записи информации в занятые ячейки памяти, а также мтемия из пустых ячеек используется схема 49 сравнения. Состояние полного заполнения памяти и отсутствие информации фиксируется триггерами 52 и 53. Триггер 54 занятости используется для разделения во времени действий по записи и чтению информации. Единичное состояние этого триггера разрешает запись или чтение команд а нулевое состояние блокирует обращения к блоку: 13. Необходимые сигналы управления вырабатывает коммутатор 51. Элементы 46, 47 и 45 используются для передачи на адресный вход памяти 44 содержимого одного из счетчиков. При записи информации в блок 13 на pierncTp 43 поступают коды операнда и операции. Регистр 43 разбит на две части: в первую часть записывается код операнда из регистра 8, а во вторую - код операции из регистра 5 или блока 4. В Начальный момент времени регистр 43 устанавливается в нулевое состояние, счетчики 48 и 50 содержат адрес первой ячейки памяти 44, триггер 54в положение свободен, триггер 52 В состояние запись разрешена, триггер 53-8 состояние чтение запрещено. По сигналу из блока 4 запускается коммутатор 51, триггер 54 из положения свободен устанавливается в положение занят. По адресу на счетмике 8 производится запись содержимого регистра ii3 в память 4. Триггер 53 устанавливается в положение чтение разрешено, содер.жимое счетчика 9 увеличивается на единицу, сигнал Конец записи комму татора 51 передается в блок k, три1- гер 5 переводится в состояние свободен. Запись последующих команд произво дится по сигналу из блока при наличии в памяти j свободной ячейки. В противном случае выполнение записи откладывается до изменения состояния триггера 52, которое имеет место при чтении команды. Если в памят имеется свободная ячейка, то следую щим шагом является проверка занятос ти блока 13. В том случае, когда этот блок не занят выполнением чтения, триггер 5 устанавливается в состоя ние занят, что блокирует обрйщение по чтению. Если блок 13 выполняет чтение команды, то запись задер живается до завершения чтения. Последующая запись производится в память по адресу, который указан в счетчике В. Одновременно с записью в память Триггер 53 устанавливается в состояние чтение разрешено и раз решается чтение из блока 13, затем содержимое счетчика 48 увеличивается на единицу. Если после этого зна чтение счетчика 48 совпадает со значением счетчика 50, такое совпадение фиксируется схемой 49 и свидетельствует о полном заполнении 44, при этом триггер 52 устанавливается в состояние запись запрещена, блокируя дальнейшую запись в блок 13. Посл этого, а также если в памяти 4 имеет ся, свободное место, триггер 54 устанавливается в состояние свободен, а блок 4 получает сигнал окончания записи. Чтение команды из блока 13 осуществляется по сигналу из прочее сора, поступающему на вход 16, и воз можно только при наличии команд в памяти 44. Если триггер 53 находится в состоянии чтение запрещено, т выполнение чтения задерживается до изменения состояния триггера 53, которое происходит в результате записи в блок 13 очередной команды. Если в памяти 44 имеются команды, то, как и в случае записи, в начале проверяется состояние триггера 54 и блокируются обращения по записи путем установки этого триггера в сос 918 тояние занят.После этого осуществляется чтение из памяти k по адресу, указанном счетчиком 50. Одновременно с чтением из памяти триггер 52 устанавливается в состояние за.11 пись разрешена , т.е. допускается запись в блок 13- Содержимое счетчика 50 увеличивается на единицу. Если после этого значение счетчика 50 совпадает со значением счетчика , что означает отсутствие информации в памяти , то триггер 53 устанавливается в состояние чтение запрещено, блокируя последующие считыеания из блока 13. После этого, а также, если в памяти 44 имеются команды, триггер 54 устанавливается в состояние свободно. В процессор с выхода 18 выдается сигнал конца чтения. Считанная из памяти 44 команда поступает на регистр 55, а .затем с выхода 17 -в процессор. Блок t сравнения приоритетов содержит постоянную память 58 и регистр 59 адреса (фиг.6) . Постоянная память содержит информацию о взаимном приоритете всех возможных пар операций. Для этого каждой паре операций языка в памяти 58 поставлено в соответствие слово длиной в один бит, в котором указано соотношение приоритетов данных операций. Адрес слова в памяти 58 задается регистром 59. В старшие разряды регистра 59 записывается код очередной операции из регистра 10, а младшие код операции из блока 2, После записи кодов операции в регистр 5Э содержимое этого регистра выдается на адресный вход памяти 58, на управляю11)ии вход которой поступает сигнал разрешения чтения из блока 7. Считанный код, определяющий соотношение приоритетов операций, передается с информационного выхода памяти блок 7. В том случае, когда приоритет очередной операции выше приоритета операции в блоке 2, второй блок 7 управления разрешает запись кода очередной операции в блок 2. Для этого код младших разрядов регистра 59 передается в блок 2,а код старших разрядов регистра 59 записывается в его младшие разряды. Младшие разряды регистра 59 играют в данном случае роль вершины блока 2 стековой памяти one- раций, в которой находится последний записанный в стек код операции. После
этого блок 1 готов к приему очередного кода операции из регистра 10, Есл приоритет очередной операции ниже ил равен приоритету операции в блоке 2. находящейся в младших разрядах регистра 59, блок 7 после проверки необходимых условий разрешает передачу кода операции из блока 2 в регистр 3. Для этого код младших разрядов регистра 59 передается на вход регистра 3, а в младшие разряды регистра 59 записывается очередной код из блока 2. После этого блок 1 готов к сравнению приоритетов очередной пары операций. Действия по приему и выдаче информация произво дится по сигналам блока 7.
Для пояснения работы устройства рассмотрим пример обработки оператора X С + Е; Предположим,мто перед обработкой этого оператора триггер 11 находится в единичном состоянии, а триггер 12-е нулевом состоянии. Последовательность действий, выполняемых под управлением схемы 6 анализа символов, второго блока 7 управления и первого блока k управления при обработке оператора, приведена в таблице. В таблице приняты следующие обозначения: L содержимое вершины блока 2 стековой памяти перед обработкой оператора, ПрПр признак промежуточного результата.
В результате обработки оператора А: В X С + Е; устройство анализа
программ формирует следующую последовательность команд
ЗасылкаС
XВ
+.Е
Приведенный пример показывает, что предлагаемое микропрограммное устройство анализа программ по сравнению с известными устройствами обеспечивает: совмещение подготовки инj формации (кодов операнда и операции} для рчередной операции с обработкой предыдущей операции; совмещение запи-си информации в блок 5 и в блок сравнения приоритетов; совмещение -срав нения приоритетов очередной опера|ции и второй операции из вершины блока 2 стековой памяти операций с формированием команды для первой операции из вершины блока 2, а также запись в блок 2 очередной операции; совмещение подготовки очередных команд с выполнением предыдущих команд процессором.
Анализ работы предложенного устройства при обработке реальных программ на языке высокого уровня показывает, что его применение сокращает время выполнения программ в полтора раза по сравнению с известными устройствами.
название | год | авторы | номер документа |
---|---|---|---|
Устройство для управления параллельным выполнением команд в электронной вычислительной машине | 1982 |
|
SU1078429A1 |
Устройство для обработки выражений языков программирования | 1974 |
|
SU519715A1 |
Устройство для обработки выражений языков программирования | 1981 |
|
SU1016790A1 |
Устройство для интерпретации выражений языков программирования | 1982 |
|
SU1078432A1 |
Устройство для перевода выражений в польскую инверсную запись | 1982 |
|
SU1130879A1 |
Вычислительное устройство | 1987 |
|
SU1430962A1 |
Устройство для лексического анализа метамикроассемблера | 1982 |
|
SU1034043A1 |
Процессор | 1981 |
|
SU962964A1 |
Вычислительное устройство для реализации логических функций | 1983 |
|
SU1269130A1 |
Устройство для синтаксически-управляемого перевода | 1982 |
|
SU1062721A1 |
Запись А во второй регистр 9 операнда
Запись: во второй регистр 10 кода операции
Установка .второго триггера 12 управления в единичное состояние
Проверка состояния первого триггера 11 управления
Запись В во второй регистр 9 операнда
Запись X во второй регистр 10 кода операции
Установка второго триггера 12 управления в единичное состояние
10
11
12
13 Запись С на второй регистр 9 операнда
Запись + на второй
регистр 10 кода операции
15 Установка второго
триггера 12 управления в единичное состояние
Запись А в блок 5 и : в блок 1 сравнения приоритетов
Установка второго триггера 12 управления в нулевое состо яние
Сравнение приоритетов в блоке 1 сравнения приоритетов
Запись : в блок 2
Проверка состояния второго триггера 12 управления
Проверка состояния первого триггера 11 управления
Запись В в блок 5 и X в блок 1 сравнения приоритетов
Установка второго триггера.12 управления в.нулевое состояние
Сравнение приоритетов X и : в блоке 1 сравнения приоритетов
Запись X в блок 2
Проверка состояния второго триггера 12 управления
I
16
Проверка состояния первого триггера 11 управления
17
Запись С в блок 5 и + в блок 1 сравнения приоритетов
18
Установка второго триггера 12 управления в нулевое состояние
Запись Е на второй
Сравнение приоритетов регистр 9 операнда + и X в блоке 1 сравнения приоритетов
Запись на второй
Проверка состояния пер регистр 10 кода вого триггера t1 управоперацииления
Установка второго
Запись X из блока 2 в триггера 12 управпервый регистр 3 кода ления в единичное операции состояние
Установка первого триггера 11 управления в нулевое состояние
Сравнение приоритетов -«- и : в блоке 1 сравнения приоритетов
Запись + в блок 2
25
Проберка состояния второго триггера 12 управления
26
Проверка состояния первого триггера 11 управления
.
Чтение С из блока 5 в первый регистр 8 операнда
Анализ числа в пе{эвом регистре 8 операнда
Запись С из первого регистра 8 операнда и кода операций Засылка в блок 13
Чтение 8 из блока 5 в первый регистр 8 операнда
25
27
Запись Е в блок 5 и ; в блок 1 сравнения приоритетов
Установка второго триггера 12 управления в нулевое состояние
Сравнение приоритетов ; и 4- в блоке 1 сравнения приоритетов
Проверка состояния первого триггера 11 управления
Запись из блока 2 в регистр 3 кода операции .
Установка первого триггера 11 управления в нулевое состояние
Сравнение приоритетов; и:. в блоке 1 сравнения приоритетов
Проверка состояния первого триггера 11 управления
26
Продолжение таблицы
I
4
Запись В из первого регистра 8 операнда и X из первого регистра 3 кода операции в блок 13
Анализ результата операции
Запись ПрПр в блок 5
Установка первого триггера 11 управления в единичное состояние
Чтение ПрПр из блока 5 в пере1ый регистр 8 операнда
Анализ значения в пер- вон регистре 8 операнда
Чтение Е из блока 5 в первый регистр 8 операнда
27
1
ko
k
k2 A3
Запись : из блока
Ai
2в первый регистр
3кода операции
Установка первого триггера 11 управления в нулевое состояние
k6
i
48
Э
50
51
28 Продолжение таблицы
I
Запись Е из первого регистра 8 операнда и 4- из первого регистра 3 кода операции в блок 13
Анализ результата операции
Запись ПрПр в блок 5
Установка первого триггера 11 управления в единичное состояние
Чтение ПрПр из блока 5 в первый регистр 8 операнда
Анализ числа в первом регистре 8 операнда
Чтение А из блока 5 в первый регистр 8 операнда
Запись А из первого о регистра 8 операнда и: из первого регистра 3 кода операции в блок 13
Анализ результата операции
Установка первого триггера 11 управления в единичное состояние 29 Формула изобретения 1, Микропрограммное устройство для анализа программ, содержащее блок сравнения приоритетов, блок стековой памяти операций, первый регистр кода операции, первый блок управления и блок стековой памяти операндов, при этом первые вход и выход блока сравнения приоритетов соединены соответственно с выходом и входом блока стековой памяти операций, а второй выход блока сравнени приоритетов подключен к информацион ному входу первого регистра кода операции, выход которого соединен с первым входом первого блока управ ления, первый, выход которого подклю чен к первому входу.блока стековой памяти операндов, отличающе вся тем, что,с целью увеличения быстродействия устройства, он содер жит блок анализа символов, второй блок, управления, первый и второй регистры операнда, второй регистр кода операции, первый и второй триг геры управления и блок буферизации команд, причем информационный вход устройства- соединен с информационным входом блока анализа символов, первый и второй информационные выходы которого подключены соответственно к входам второго .регистра операнда и второго регистра кода операции, управляющий вход - к нулевому выходу второго триггера управ ления , а первый и второй управляющи выходы - соответственно к единичному входу второго триггера управления и выходу управления приемом символов устройства, первый, второй и третий входы второго блока управления соединены соответственно с единичными выходами первого и второго триггеров управления и третьим выходом блока сравнения приоритетов, а первый,второй, третий, четвертый и пятый выход второго блока управления подключены соответственно к вторым входам блока сравнения приоритетов и блока сте ковой памяти операндов, нулевым входам первого и второго триггеров управления и управляющему входу бло ка стековой памяти операций,третий вход блока сравнения приоритетов сое динен с выходом второго регистра кода операции , выход второго регистра операнда подключен к третьему входу блока стековой памяти операндов, вы9Ход которого соединен с входом первого регистра операнда, второй,третий и четвертый входы первого блока управления подключены соответственно к выходу первого регистра операнда, нулевому выходу первого триггера управления и первому управляющему выходу блока буферизации команд, второй, третий, четвертый, пятый и шес той выходы первого блока управления соединены соответственно с единичным входом первого триггера управления, управляющими входами первого регистра операнда и первого регистра кода операции, первым управляющим и первым информационным входами блока буферизации команд, второй и третий информационные входы которого подключены соответственно к выходам первого регистра операнда и первого регистра кода операции, вход управления чтением команд устройства соединен с вторым управляющим входом блока буферизации команд, информационный выход и второй управляющий выход которого подключены соответственно к информационному выходу и выходу управления выдачей команд устройства. 2.Устройство по П.1, о т л и ч аю щ е ее я тем, что, первый блок управления содержит регистр адреса, память микропрограмм, регистр микрр команды, дешифратор микроопераций, узел элементов И, коммутатор адреса перехода и генератор синхроимпульсов, причем к первому входу блока подключен первый вход регистра адреса, выход которого соединен с входом памяти микропрограмм, вход регистра микрокоманды подключен к выходу памяти микропрограмм, первый выход ко входу дешифратора микроопераций, а второй выход - к первому входу коммутатора адреса перехода, выход которого соединен с вторым входом .регистра адреса, а к второму, третьему и четвертому входам блока подключены второй,третий и четвертый входы коммутатора адреса перехода, выход генератора синхроимпульсов соединен с управляющими входами регистра адреса, памяти микропрограмм и узла элементов И, вход которого подключен к выходу дешифратора микроопераций, а выходы - к первому, второму, третьему, четвертому, пятому и шестому выходам блока. 3.Устройство поп.1,отлича1ю щ е е с я тем, что второй блок управления содержит регистр адреса, рамять микропрограмм, регистр микро,команды, дешифратор микроопераций, узел элементов И, коммутатор адреса перехода и генератор синхроимпульсов, причем к третьему входу блока подключен первый вход регистра адреса , выход которого соединен с вхо|дом памяти микропрограмм, вход регист1)а микрокоманды подключен к выходу памяти микропрограмм, первый выход - к входу коммутатора адреса перехода, выход которого соединен с вторым входом регистра адреса, а к первому и второму входам блока подключены второй и третий входы комму татора адреса перехода, выход генератора синхроимпульсов соединен с управляющими входами регистра адреса, памяти микропрограмм и узла элементов И, вход которого подключен к выходу дешифратора микроопераций, а выходы - к первому, второму, треть ему, четвертому и пятому выходам блока/. k. Устройство по п.1, о т л и ч а Ю щ е е с я тем, что блок анализа символов содержит входной регистр, дешифратор, два узла элементов И, элемент ИЛИ, триггер анализа, элемент .И и три линии задержки, причем информационный вход блока соединен с входом входного регистра, выход которого подключен к входу дешифрато ра и первым входам первого и второго узлов элементов И, выходы которых соединены с первым и вторым информа ционными выходами блока, первый вы- ход дешифратора подключен к управляющему входу второго узла элементов И и первому входу элемента ИЛИ, а второй выход дешифратора соединен с управляющим входом первого узла элементов И,;, вторым входом элемен та ИЛИ и первым управляющим выходом блока, единичный вход триггера анализа подключен к выходу элемента ИЛИ а единичный выход - к входу первой линии задержки, выход которой соединен с первым входом элемента И, управляющий вход блока подключен к второму входу элемента И, выход кото рого соединен с входами второй и третьей линий задержки и вторым управляющим выходом блока, выход вто рой линии задержки подключен к нулевому входу триггера анализа, а треть ей линии задержки - к управляющему входу входного регистра. 5.Устройство поп.1,отлича ю щ е е с я тем, что блок буферизации команд содержит регистр команд,память команд,элемент ИЛИ,два узла элементов И, счетчик адреса записи,схему сравнения, счетчик адреса чтения, коммутатор, триггеры блокировки записи и чтения, триггер занятости и выходной регистр, причем первый, второй и третий информационные входы блока соединены с первым, вторым и третьим входами регистра команд, выход которого подключен к первому входу памяти команд, первый и второй управ- ; ляющие входы блока соединены с первым и вторым управляющими входами коммутатора, первый и второй управляющие .выходы которого подключены к первому и второму управляющим выходам блока, первый, второй, третий и четвертый входы коммутатора соединены соответственно с выходами триггера блокировки записи, триггера блокировки чтения, триггера занятости и схемы сравнения, первый, второй, третий, четвертый и пятый выходы коммутатора подключены соответственно к второму и третьему входам памяти команд, входам счетчиков адреса записи и чтения и управляющему входу выходного регистра, выход счетчика адреса записи соединен с первым вхо- дом схемы сравнения и первым входом первого узла элементов И, второй вход которого подключен к первому выходу коммутатораj а выход - к первому входу элемента ИЛИ, выход счетчика адреса чтения соединен с вторым входом схемы сравнения и первым входом второго узла элементов И, второй вход которого подключен к второму выходу коммутатора, а выход - к второму входу элемента ИЛИ, выход которого соединен с четвертым входом памяти ко;манд, вход выходного рвгистра подключен кВЫХОДУ памяти команд, а к информационному выходу блока. 6.Устройство по П.1, о т л и ц аю щ е е с я тем, что блок сравнения . приоритетов содержит постоянную память и регистр адреса, причем первый, второй и третий входы, блока подключены соответственно первому информационному входу, первому управляющему входу и второму информационному входу регистра адреса, первый, второй и третий выходы которого соединены соответственно с первым и вторым выходами блока и адресным входом постоянной памяти, информационный выход которой подключен к третьему выходу блока, а второй вход блока соединен с входом разрешения считывания посто янной памяти.
Источники информации, принятые во внимание при экспертизе
tt ГУ ff
tti
E
JTT
2,Авторское свидетельство СССР Н 513715, кл. G 06 F 15/0, 1976.
Фм.1
-i 1
Vl.itt.St
fifj.w
HW}
-f
W
-
jj
.f
«
Авторы
Даты
1982-07-15—Публикация
1980-10-15—Подача