Формульный процессор с командоподобными логическими управляющими элементами
Изобретение относится к вычислительной технике и может быть использовано в устройствах цифровых вычислительных машин, ориентированных на применение сложных языков программирования. Техническим результатом является повышение человеко-машинного взаимодействия и установление зависимости между логическими элементами программы в процессе ее выполнения. Процессор содержит арифметико-логическое устройство, блок регистров арифметико-логического устройства, устройство управления, блок регистров устройства управления, регистр состояния автомата управления, управляющие схемы для выполнения команды управления. 2 табл., 6 ил.
Изобретение относится к вычислительной технике и может быть использовано в устройствах цифровых вычислительных машин, ориентированных на применение достаточно сложных языков программирования или управления.
Известны "Устройство для аппаратурной трансляции" [1] и "Устройство управления цифровой вычислительной машины" [2] , направленные на схемное обеспечение использования в вычислительной системе языка высокого уровня без участия или с минимальным участием загружаемой программы-транслятора или интерпретатора. К недостаткам известных устройств относится то, что они, как правило, представляют собой дополнительные электронные схемы, усложняющие вычислительную систему. При этом, в известных цифровых вычислительных машинах со структурно реализованным языком программирования практически этот язык выбирается единственным образом, и такие устройства не могут считаться в полной мере универсальными, так как не обеспечивают соответствующую гибкость. Окончательным же исполнительным элементом всегда выступает обычный процессор или командный блок, так что сохраняется интерпретация операторов языка командными подпрограммами. Наиболее близким по технической сущности к предполагаемому изобретению "Формульный процессор с командноподобными логическими управляющими элементами" является процессор, состоящий из арифметико-логического устройства, блока центрального управления, являющегося устройством управления, блока местной (регистровой) памяти, являющегося блоком регистров арифметико- логического устройства, блока управляющих регистров, являющегося блоком регистров устройства управления, и функционирующий под управлением программы, хранящийся в оперативном запоминающем устройстве [4]. Недостатком прототипа предполагаемого изобретения является то, что он управляется системами команд, непосредственное использование которых для описания достаточно сложных и разветвленных алгоритмов составляет значительные трудности, так как эти системы команд требуют разложения алгоритма на элементарные операции, реализуемые отдельными командами, связываемыми друг с другом лишь посредством известного слова состояния процессора (ССП), содержащего признаки результата выполнения предыдущей команды, что требует решения при разработке программы таких чисто технических проблем, как организация хранения промежуточных результатов счета в рабочих ячейках, и усложняет отслеживание реализуемого алгоритма. Обычным путем преодоления этих трудностей является использование программ- трансляторов или интерпретаторов, преобразующих описание алгоритма, заданное на более удобном языке программирования высокого уровня, в его описание в машинных командах. Этот процесс трансляции либо интерпретации требует затрат вычислительных ресурсов и создает между машиной и управляющим ей человеком заметный барьер, тем более значительный, что собственно машинный код является трудно воспринимаемым объектом, в связи с чем фактическое содержание памяти компьютера как правило остается "непрозрачным". Задача изобретения - повышение эффективности человеко-машинного взаимодействия. Поставленная задача решается посредством изменения систем трансляции или интерпретации внешних входных языков программирования и управления вычислительной системой на основе установления аналогичности внутреннего языка (системы командных кодов процессора) языкам программирования высокого уровня, обеспечивающий также соответствие качества программ, записанных на этих языках и высвобождение ресурсов для повышения оснащенности операционных, транслирующих и интерпретирующих систем [5]. Достижение указанной задачи в предполагаемом изобретении основано на реорганизации схемы центрального процессора под управление системой командоподобных логических управляющих элементов (псевдокоманд), замещающей обычную систему команд и обеспечивающей внутреннее представление программы алгоритмической формулой того или иного класса (см. Приложения 1 и 2), т.е. в форме, близкой к языку программирования высокого уровня. Технический результат достигается тем, что в формульный процессор с команде подобными логическими управляющими элементами, содержащий арифметико-логическое устройство, устройство управления, блок регистров арифметико-логического устройства и блок регистров устройства управления, причем устройство управления связано с арифметико-логическим устройством и имеет выход, предназначенный для управления оперативным запоминающим устройством, а блок регистров арифметико-логического устройства и блок регистров устройства управления выполнены с возможностью подключения к информационным каналам оперативного запоминающего устройства, дополнительно в блок регистров устройства управления вводят регистр состояния автомата управления, выполненный с возможностью переустановки своих битов в соответствии с кодом очередной команды программы, подсоединенный к управляющим схемам для выполнения 4 команды управления и подключенный к блоку регистров арифметике логического устройства. Сущность предполагаемого изобретения "Формульный процессор с командоподобными логическими управляющими элементами" заключается в установлении большей зависимости между логическими элементами программы в процессе ее выполнения, чем между командами обычного процессора. В результате установления этой зависимости замкнутым и относительно независимым элементом программы становится не отдельная команда, как в обычных процессорах, а, как в языках высокого уровня, оператор - группа командоподобных кодов (псевдокоманд), сложность строения которой ограничена лишь ресурсом оперативной памяти (ОЗУ). Эта дополнительная зависимость обеспечивается устройством процессора, прежде всего, введением в него особого, дополнительного к известному ССП, регистра состояний автомата управления (РСАУ), принципиально аналогично (ССП), но включающего командные функции, порождающие зависимость отработки процессором очередной псевдокоманды от ее положения в структуре оператора, а также органической реорганизацией системы регистров процессора и схемы выработки его устройством управления управляющих сигналов. В связи с этим, вводимый блок регистров устройства управления РСАУ имеет подключения к схемам загрузки регистров арифметико-логического устройства, обеспечивающий переустановку его битов при загрузке этих регистров, и к схеме дешифрации очередной псевдокоманды, также вырабатывающей управляющий сигнал, переустанавливающий биты РСАУ. Формируемое таким образом содержимое РСАУ составляет код очередной команды управления, что обеспечивается подключением выходов этого регистра к схемам выполнения данной команды. - Таким образом, РСАУ с одной стороны подобен ССП, так как переустанавливается при определенных событиях в процессоре, а с другой стороны, он выполняет роль регистра-дешифратора кода операции. Для обеспечения адекватной структуры соответствующей системы команд блок регистров арифметико-логического устройства должен обладать необходимой множественностью регистров хранения кодов операций и операндов. На фиг. 1 представлена блок-схема предполагаемого изобретения "Формульный процессор с командоподобными логическими управляемыми элементами". Устройство содержит арифметико-логическое устройство (АЛУ) 1, блок регистров арифметико-логического устройства (блок регистров АЛУ) 2, устройство управления (УУ) 3 и блок регистров устройства управления (блок регистров УУ) 4. Блок регистров 2 содержит регистры для хранения операндов, кодов арифметико-логических операций, кодов операторов и кодов функций. Блок регистров 4 содержит регистр состояния автомата управления, регистр чтения очередной псевдокоманды, счетчик команд, слово состояния процессора и регистр стека. Подсоединение процессора к оперативному запоминающему устройству (ОЗУ) 5 обеспечивает работу процессора под управлением хранящейся в ОЗУ программы. Стековая область 6 может составлять часть ОЗУ 5, как изображено на фиг. 1, либо представлять собой вид встроенной внутрипроцессорной памяти достаточной емкости с малым временем выборки. На фиг. 2 показано соответствие флагов регистра состояния автомата управления регистрам арифметико-логического устройства, загрузка которых влечет установку соответствующих флагов. На фиг. 3 показаны флаги регистра состояния автомата управления, устанавливаемые в зависимости от кода-определителя псевдокоманды, содержащийся в регистре чтения псевдокоманды. В таблице показаны допустимые сочетания состояний флагов загрузки регистров АЛУ в РСАУ и их преобразование. Так как число возможных состояний РСАУ меньше; чем число состояний слова из 13-ти бит, то этот регистр может быть также решен как иная переключательная схема, без прямого соответствия его битов загрузке регистров АЛУ. Предлагаемый способ процессор функционирует следующим образом. При включении питания либо в начальной фазе отработки очередного оператора РСАУ находится в нулевом состоянии, а счетчик команд указывает на код первого (очередного) оператора в программе. После чтения кода оператора в регистр оператора, входящий в блок регистров АЛУ2 (соответствующий флагу 1 на фиг. 2), счетчик команд автоматически устанавливается на следующую по порядку псевдокоманду, а РСАУ устанавливается по факту загрузки регистра оператора, что указывают на то, что процессор перешел в режим создания в стеке списка аргументов данного оператора. По отработке данного режима в регистре оператора останется код данного оператора, а в стеке должны сформироваться адресно-литеральные псевдокоманды, соответствующие аргументам оператора. Сброс 1-го флага в РСАУ инициирует процесс выполнения оператора. Отметим, что в состав минимального клона алгоритмических формул входят в качестве непосредственно выполняемых АЛУ лишь операторы присваивания (команды загрузки значения в ячейки ОЗУ) и передачи управления (полускобки Янова; см. Приложение 1). Выполнение этих операторов состоит в той или иной перезаписи данных, при присваивании - одного или нескольких (при циклической загрузке) аргументов оператора - в соответствующую область оперативной памяти (ОЗУ), при передаче управления - в счетчик команд. В этом случае все остальные операторы являются вызовами подпрограмм, и соответственно этому содержимое регистра оператора обрабатывается как адресная ссылка на подпрограмму, параметрами которой выступают сформированные в стеке аргументы оператора. Занятая аргументами область стека освобождается при выходе из соответствующей подпрограммы. Аналогичным образом отрабатываются и функции алгоритмической формулы. В расширенных клонах могут присутствовать и иные непосредственно выполняемые АЛУ операторы и функции (например, вычисляющие те или иные стандартные функции). При установленном флаге оператора (1 на фиг. 2) процессор находится в состоянии создания списка аргументов оператора. Совершаемые им действия в этом режиме соответствуют таблице 1. Принципиально, эти действия сводятся к следующим. После завершения очередного цикла (установкой битов 1 - 6 РСАУ по фиг. 2) новый начинается чтением очередной псевдокоманды, установкой признака (дешифрацией) ее кода-определителя, причем установка битов соответствующего поля (разряды 7-13 на фиг. 3) инициирует выполнение команды управления, сформировавшейся таким образом в РСАУ. По этой команде производится загрузка данного из регистра чтения очередной псевдокоманды в один из регистров АЛУ, предваряемая, если необходимо, выгрузкой содержимого регистров в соответствующим образом организуемую запись в стеке, либо, напротив, их восстановлением из снимаемой с верхушки стека записи. При этом, если на предыдущем цикле были собраны все коды, необходимые для выполнения данной арифметической или логической операции и статус очередной прочитанной псевдокоманды не противоречит этому, то перед всеми действиями выдается управляющий сигнал на выполнение этой операции с последующим сбросом флагов освобождающихся регистров в РСАУ. В этом случае вновь формируемое поле 1 - 6 РСАУ соединяется с наличным полем 7- 13 и выполнение полученной таким образом команды управления начинается без перезаписи регистра чтения очередной псевдокоманды, т.е. производится задержка продвижения по выполняемой программе на один цикл, а уже последующий цикл заканчивается формированием содержимого тех регистров арифметико- логического устройства, флаги которых показаны установленными в РСАУ (1-6 биты) в таблице, и выдачей управляющего сигнала на чтение очередной псевдокоманды. Блок регистров АЛУ и блок регистров УУ подключены к информационным каналам ОЗУ. Подсоединение блока регистров АЛУ к ОЗУ 5 обеспечивает чтение данных, над которыми производятся арифметико-логические операции и запись в него результатов вычислений. Подсоединение блока регистров АЛУ к стековой памяти 6 обеспечивает объем данными между ними. Подключение ОЗУ 5 к УУ 3 обеспечивает прохождение командного сигнала на чтение данных из ОЗУ 5 в блок 4 регистров УУ 3. Подключение АЛУ 1 к УУ 3 обеспечивает управление перезаписью данных из блока регистров 4 в блок регистров 2 и прием сигналов (например, отвечающих установке флагов ССП), а также перезапись кодов (например, адресных), вырабатываемых в процессе работы АЛУ 1 в регистры блока 4. АЛУ 1 обеспечивает выполнение арифметико-логических операций над данными. УУ 3 обеспечивает выработку распределенных в пространстве и во времени сигналов, управляющих процессами обмена данными между блоками процессора, и запускающих вычислительные процессы в АЛУ 1. Информационные магистрали формульного процессора могут быть аналогичны таковым для командного процессора с одноадресной системой команд. Это связано с тем, что псевдокоманда (логический управляющий элемент процессора, аналогичный обычной команде) состоит из поля-определителя (которое можно сопоставить коду операции в команде) и, возможно, единственного поля операнда. Псевдокоманды подразделяются на адресно-литеральные псевдокоманды и псевдокоманды - структурные ограничители, причем псевдокоманды - структурные ограничители не содержат поля операнда. Структурные ограничители выполняют роль, соответствующего символам- ограничителям алгоритмических формул (знаки операций, скобки, знаки-разделители), а адресно-литеральные псевдокоманды соответствуют переменным либо именам операторов и функций, т.е. составляют код оператора или функции. При этом после операнда адресно-литеральной псевдокоманды содержит либо сам операнд, либо адресную ссылку того или иного вида на этот операнд. В этих псевдокомандах поле-определитель задает формат (длину) поля операнда и способ адресации операнда, например, содержит ли данное поле непосредственно операнд, либо его абсолютный ("физический") адрес, либо адрес относительно счетчика команд, либо адрес, формируемый с участием базового или индексного регистра, либо иной вид адресной ссылки. Код каждой отдельной арифметической или логической операции и ее операнды не содержатся вместе в одной общей псевдокоманде, а собираются в процессе выполнения программы в регистрах АЛУ из нескольких отдельных псевдокоманд и, возможно, результата выполнения предыдущей части программы, причем частью этого кода можно считать и поле-определитель операнда, содержащее информацию, обеспечивающую предварительное извлечение из ОЗУ по адресной ссылке данного, над которым производится действие. При этом расположение псевдокоманд в оперативной памяти соответствует отвечающих им символов в алгоритмической формуле. Соединение кода операции и ее операндов обеспечивается последовательностью генерации управляющих сигналов УУ 3 процессора и специальным составом регистров процессора. Для этого блок регистров 2 содержит регистры, предназначенные для хранения псевдокоманд, отвечающих коду оператора алгоритмической формулы и коду функции алгоритмической формулы (управляющие регистры блока регистров АЛУ), а также регистры, сохраняющие код одноместной арифметической или логической операции и код двуместной арифметической или логической операции, разрядность которых соответствует разрядности кода-определителя псевдокоманды, и, наконец, регистр для хранения 1-го операнда (непосредственно, либо в форме адресной ссылки) и подобный регистр для хранения 11-го операнда (арифметические регистры блока 2) (см. фиг. 2). Блок регистров 4 содержит отдельный регистр для хранения очередной прочитанной псевдокоманды и особый, упомянутый выше, регистр состояний автомата управления (РСАУ), биты одного из полей которого (1 - 6 на фиг. 2) подключены таким образом, что загрузка любого из вышеперечисленных регистров блока 2 вызывает их автоматическую установку. Эти биты могут непосредственно являться флагами, идентифицирующими событие загрузки соответствующих регистров, как показано на фиг. 2. Другая часть этого регистра содержит поле признаков дешифрации кода-определителя очередной прочитанной псевдокоманды, находящейся в соответствующем регистре блока 4. Это поле также может быть решено как совокупность флагов (фиг. 3), только один из которых устанавливается при принадлежности кода- определителя к соответствующему классу (7-13 на фиг. 3), а остальные при этом сбрасываются. Полное содержимое РСАУ, формирующееся после завершения чтения очередной псевдокоманды в соответствующий регистр блока 4, составляет код команды управления, выполнение которой начинается сразу же после ее формирования и сводится к перезаписи содержимого вышеперечисленных регистров и стековой памяти в другие регистры либо стековую память по своеобразной для каждой из этих команд схеме (см. Таблицу 1). Эта перезапись сопровождается адекватной, в соответствии с кодом очередной команды программы, переустановкой битов РСАУ, формирующей новую команду. При этом может также генерироваться управляющий сигнал, запускающий АЛУ 1 для проведения арифметико- логической операции, код которой храниться в одном из его регистров, над операндами, хранящимися непосредственно либо в форме адресных ссылок в регистрах операндов этого устройства. Блок регистров 4 содержит также обычный регистр ССП и регистр, хранящий адресную ссылку на текущий элемент выполняемой программы (счетчик команд). В процессор могут входить и иные регистры, состав которых определяется спецификой выбираемой конкретной схемой его реализации, а также и иные, необозначенные выше подсистемы, поддерживающие, например, обмен с внешними устройствами и т.п. Предполагаемое изобретение "Формульный процессор с командо- подобными логическими управляемыми элементами" обеспечивает работу процессора под управлением программы состоящей из псевдокоманд, последовательность которых адекватно и непосредственно представляет алгоритмическую формулу. Приложение 1. Алгоритмические формулы В качестве основы для формирования системы псевдокоманд и "ассемблера" формульного процессора предлагается использовать аппарат алгоритмических формул. Известно [6], что "наименьший" универсальный язык программирования высокого уровня может быть сведен к простым переменным, операторам присваивания и условного и безусловного перехода на метку [6, стр 68]. Отметим, что этот набор соответствует языку логических схем Ляпунова-Янова, одной из ранних математических моделей языка программирования [6, 7]. Обширная практика разработки и использования языков высокого уровня привела в настоящее время к выделению достаточно определенного ядра или языковой подсистемы, входящей в большинство из ныне существующих языков высокого уровня (FORTRAN, PASCAL, BASIC, C и т.д.). Это свидетельствует об "объективном" характере данного ядра, более или менее адекватном природе алгоритма как математического объекта. Главное отличие от минимального алгоритмического языка этой языковой подсистемы состоит в наборе наиболее употребительных средств элиминации оператора перехода (GOTO) - операторах циклов, допускающих вложение условных операторах и операторах ветвления и выбора. Алгоритмические формулы представляют собой формальную систему, являющуюся развитием языка логических схем Ляпунова - Янова [6,7] посредством включения в него конструкций, адекватных упомянутому языковому ядру, выделяющемуся в распространенных языках программирования высокого уровня. Главным фактом, лежащим в основе этого формализма, является возможность рассматривать условные операторы и операторы организации циклов как особые скобки, в принципе аналогичные алгебраическим по своим свойствам и функциям. В соответствии с этим "программа" рассматривается как скобочное выражение (строка символов), структура которого оформляется тремя видами скобок: алгебраическими (круглыми), условными (прямыми) и цикловыми (фигурными). Элементом алгоритмической формулы является оператор, состоящий из имени оператора и списка аргументов, заключенного в алгебраические скобки. Аргументы в списке разделяются запятыми. Имя оператора, в соответствии с соглашениями, принятыми в большинстве языков высокого уровня, представляет собой строку алфавитно-цифровых символов неопределенной длины, начинающуюся с буквы. Аргументами являются термы (формульные выражения), представляющие собой последовательность из имен переменных, функциональных символов, знаков алгебраических и логических операций, могущую включать алгебраические скобки, организующие их структуру в соответствии с обычными общепринятыми правилами. Алгоритмическая формула является последовательностью операторов, отделяемых друг от друга знаком-разделителем (точка с запятой). Наиболее важным оператором является безымянный двуместный оператор присваивания. Имя этого оператора состоит из "пустой" строки символов, так что запись (x, у) в алгоритмических формулах эквивалентна x := у в языке ALGOL. Наиболее важные конструкции представляют собой парные условные и цикловые операторы. Открывающая прямая скобка в качестве имени оператора, с логическим условием в качестве единственного аргумента, и парный ей оператор закрывающей скобки, не имеющий аргументов, ограничивают подпоследовательность операторов, выполняющуюся, если выполнено данное логическое условие. Подобные парные операторы, именами которых являются символы фигурных скобок, ограничивают подстроку, выполняющуюся кратное число раз, заданное значением соответствующих аргументов, либо в зависимости от выполнения логического условия, заданного аналогичным образом. В качестве примера приведем алгоритм вычисления наибольшего общего делителя (по [7]) в виде алгоритмической формулы НОД(x, y)=x({;[(x>y); (x, x-y);]; [(y>x); (y, y-x);];}(x
Отличительной особенностью предлагаемой схемы является то, что все ее функции могут поддерживаться на основе единственного общесистемного стека. Это происходит за счет принципиально "скобочной" зависимости в алгоритмических формулах: все что "открывается" внутри данных скобок должно быть закрыто раньше них. Однако при этом отслеживание правильности строения формулы требует фиксации начального для данной фазы состояния указателя стека, с тем, чтобы можно было бы фиксировать нарушение этой границы, идентифицирующие отклонения в строении программы-формулы. Для этого можно автоматически формировать особую запись в стеке, обозначающую данную границу, либо использовать особый регистр в процессоре, либо, наконец, при схемной реализации условных скобок, вводить органическую группу регистров-счетчиков открытых операторных скобок. Литература. 1. Авторское свидетельство СССР N 1144108. 2. Авторское свидетельство СССР N 209040. 3. Компьютеры. Справочное руководство в трех томах. Под ред. Г. Хелмса. М.: Мир, 1986 г. T.1; Т. 3. 4. В.А. Семененко, Ю.В. Ступин. Справочник по электронной вычислительной технике. М.: Машиностроение, 1993 г. 5. Вычислительные машины с развитыми системами интерпретации. Под ред. В.М. Глушкова. Киев, Наукова Думка, 1970 г. 6. Котов В.Е., Сабельфельд В.К. Теория схем программ, М., Наука, 1991. 7. Криницкий Н. А. и др. Программирование и алгоритмические языки, М., Наука, 1975.
Формула изобретения
РИСУНКИ
Рисунок 1, Рисунок 2, Рисунок 3, Рисунок 4, Рисунок 5, Рисунок 6, Рисунок 7