ФОРМУЛЬНЫЙ ПРОЦЕССОР С КОМАНДОПОДОБНЫМИ ЛОГИЧЕСКИМИ УПРАВЛЯЮЩИМИ ЭЛЕМЕНТАМИ Российский патент 1999 года по МПК G06F9/00 G06F15/00 

Описание патента на изобретение RU2143726C1

Изобретение относится к вычислительной технике и может быть использовано в устройствах цифровых вычислительных машин, ориентированных на применение достаточно сложных языков программирования или управления.

Известны "Устройство для аппаратурной трансляции" [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≠y))1.

Основной особенностью алгоритмических формул, отличающей их от распространенных языков программирования высокого уровня является минимальность множества языковых ограничителей. Таковыми выступают лишь символы запятой, точки с запятой, открывающих и закрывающих круглых, прямых и фигурных скобок и знаки алгебраических и логических операций. Данная особенность существенно упрощает любую техническую поддержку формализма алгоритмических формул и, в частности, создает возможность их более или менее непосредственного применения в качестве протокола управления процессором (т.е.

1Здесь НОД(x, y) как и x(...) дают пример "понятной" символики (см. ниже) и могут рассматриваться как внешний формализм. С другой стороны, вполне возможно ввести в соответствующий клон функции вида "имя переменной" ("алгоритмическая формула"), возвращающие то значение указанной переменной (если она встречается в данной алгоритмической формуле), которое эта переменная примет после выполнения формулы. системы его команд). При этом сигнальные связи между элементами такого процессора могут более или менее непосредственно формироваться из алгоритма интерпретации алгоритмических формул (см. фиг. 4, 5, содержащие принципиальные блок-схемы интерпретатора алгоритмических формул).

Клонирование алгоритмических формул
Мы рассматриваем алгоритмические формулы как, в принципе, нечто иное, чем язык только для программирования или чем математическая модель такого языка. Мы полагаем в связи с этим, что возможные расширения этого языка могут быть в достаточной степени своеобразными в контексте различных сфер его применения. Так, при "безмашинном" использовании можно допустить любую известную общематематическую символику (знаки кванторов, производных, интегралов - и т.п.), лишь бы при этом формула оставалась "понятной" в той же степени, в какой понятно, например, доказательство какого-либо математического утверждения, обычно не доводимое до уровня "абсолютной" формально-логической строгости. В частности, в связи с этим, мы полагаем естественным принять одним из способов введения переменных (и, возможно, других объектов) в алгоритмических формулах их "первое появление", подобно тому, как это принято в BASIC или FORTRAN, и что соответствует практике использования алгебро-функциональной или иной математической символики "вне компьютера". При том или ином виде компьютерной или иной строгой спецификации (клонировании) алгоритмических формул могут вводится дополнительные ограничители в виде имен выделенных (например, аппаратно реализуемых) функций или операторов. Ниже перечисленны наиболее естественные, с нашей точки зрения, направления и принципы, которых можно придерживаться при таком клонировании.

1) Клонирование операторов по числу и типу аргументов. Число и тип аргументов сами могут выступать как параметры оператора, что используется в некоторых распространенных языках.

2) Операторы выбора (SELECT CASE) воспроизводятся на основе особой переменной "контекст" и являются клоном условных операторов (см. ниже). К таковому же клону следует отнести и различные варианты операторов прерывания (циклов, подпрограмм и т.д., наподобии BREAK).

3) Операторы передачи управления. Условные и цикловые скобки (или соответствующие операторы в распространенных языках высокого уровня) являются средствами элиминации оператора безусловного перехода (GOTO), позволяющими описывать алгоритмы без его использования. Мы полагаем, что в подавляющем большинстве случаев эффективность программы, записанной без использования оператора GOTO не ниже, чем при его использовании, однако сохраняем этот оператор в алгоритмических формулах. Мы используем полускобки Янова, отсылающую - L(M), - для обозначения оператора GOTO М, и принимающую - L(М), -для обозначения метки "М". Сочетание использования условных и цикловых операторных скобок и операторов условного и безусловного перехода, обычное для наиболее распространенных языков высокого уровня, вызывает известные осложнения. В связи с этим мы характеризуем алгоритмические формулы без полускобок как нормализованные по передаче управления. Такие формулы также не должны содержать (помимо операторов-скобок) иных средств, подобных, например, операторам END, EXIT, END DO, BREAK и т.д., которые в принципе допустимы в формулах общего вида. Напротив, формулы, не содержащие никаких средств элиминации GOTO и являющиеся, таким образом, логическими схемами Ляпунова- Янова, также могут характеризоваться как особый отдельный клон алгоритмических формул. Отметим, наконец, что мы выделяем также формулы, никакие операторы которых, кроме оператора присваивания, не изменяют содержимого именованных ячеек памяти (переменных, структур или массивов), характеризуя их как нормализованные по присваиванию.

4) Вызовы подпрограмм. В целом алгоритмическая формула может рассматриваться как оператор "коллективный CALL", множественный структуризированный вызов подпрограмм-действий, соответствующих операторам языка, не являющимся его ограничителями. Имя такого оператора интерпретируется как идентификатор вызываемой процедуры или подпрограммы, что на уровне машинной реализации соответствует команде прерывания на подпрограмму.

Основные ограничительные конструкции алгоритмических формул перечислены в таблице 2. Отметим некоторые особенности этих формул, которые, могут остаться неясными из нее.

Так, парной к открывающей контекстной скобке является обычная закрывающая условная скобка и эта парная скобка является обязательной, как и вообще обязательна парность операторов-скобок. Это аналогично парности оператора BREAK оператору CASE в языке C или C++, но не имеет аналогии в BASIC. Отметим при этом, что загрузка контекста в отличие от конструкции SELECT CASE может не быть непосредственно предшествующим оператором для открывающей контекстной условной скобки. Например, выражение ...;(f);...;C[;...;];. эквивалентно ...; [(f);...;];. Аналога оператора END SELECT в алгоритмических формулах нет. Действие контекста прекращается лишь между открывающей контекстной условной скобкой и парной ей закрывающей, либо при выходе из объемлющих контекстных скобок, так что резервирование вложенных контекстов строится по типу стека. Доступ к зарезервированным контекстам может быть организован посредством специальных функций и/или констант, также, как и к цикловым переменным; введение таких констант и функций клонирует формулы. Контекстная else- скобка E[открывается, если: (1) был загружен контекст данного уровня, (2) по этому контексту еще ни одна C[или C[(t) - условная контекстная скобка не была вскрыта. Как можно видеть, при всей аналогичности, формализм условных контекстных скобок является несколько более общим, чем CASE - операторы, и более близким к IF- THEN-ELSE - операторам. В частности, допускается использование обычной условной else-скобки между открывающей контекстной и закрывающей ее условными скобками.

Приложение II. Некоторые замечания относительно различных вариантов реализации формульного процессора
Замечания относительно формата псевдокоманды
При выделении на код-определитель одного байта можно распределить его поля следующим образом. Пусть один из битов идентифицирует структурный ограничитель. Тогда число таких ограничителей может быть до 128, что представляется вполне достаточным, так как собственных ограничителей в алгоритмических формулах всего 8 (скобки и разделители), а остальное придется на коды символов операций1. Соотношение числа возможных форматов и режимов адресации при этом может быть 8:16 или 16:8, что также представляется достаточным во многих случаях. Учитывая же, что способ адресации сам по себе как правило предполагает определенный формат адресного поля, можно получить дополнительный запас кодов для идентификации поля операнда.

Для адресно-литеральных элементов целесообразно зарезервировать "нулевой" адресный режим, при котором псевдокоманда не содержит поля операндов. Это в особенности имеет смысл для оператора циклической загрузки, пересылающего блок данных в поле памяти, начинающееся с адресной ссылки, которую представляет собой первый операнд. Такой оператор
1Так как на одной из стадий выполнения сопоставляется приоритетность арифметико-логических операций, целесообразно, как мы полагаем, одно из подполей кода операции отвести на номер этого приоритета. Тогда сопоставление приоритетов будет простым сравнением этих полей. соответствует присвоению значения целой структуре. Тогда нулевой формат одного из аргументов этого оператора обеспечит пропуск неизменяемого поля, длина которого соответствует формату, указанному в поле-определителе данного нулевого элемента.

Учитывая, что отработка кода оператора (или функции) производится иной схемой, чем остальных псевдокоманд (он прочитывается на другой регистр), можно принять области значений соответствующих полей-определителей перекрывающимися. Иными словами, остаются зарезервированными 128 кодов для операторов, не являющихся прерываниями на подпрограмму, псевдокоманды для которых могут состоять из одного единственного поля-определителя. Как особый блок можно рассматривать и коды операторов с литеральным полем операнда в том плане, что такие коды представляются резервом для набора, например, схемно реализуемых или иным способом аппаратно поддерживаемых операторов. Тоже имеет место и для кодов функций.

Гибридная схема процессора
Во внутреннем представлении список аргументов оператора (но не функции) не только нет необходимости ограничивать скобками, но это даже сопряжено с некоторым усложнением схемы отработки оператора. Алгоритмические формулы содержат подсистему, в принципе изоморфную системе команд командного процессора. Е образуют, в совокупности с полускобками Янова, присваивания вида (x, x*y), где * - некоторая арифметическая или логическая операция. Однако во внутреннем представлении эти операторы содержат некоторое число дополнительных элементов в сравнении с обычной машинной командой (символы-разделители, отдельно знак операции и код оператора), а в их исполнении могут присутствовать лишние циклы (перезаписи из регистров в стек и обратно). Если соответствующая экономия времени для некоторой конкретной реализации процессора принимается как существенная, можно за счет "резервных" кодов (см. замечания относительно формата псевдокоманды) выделить какое-то количество операторов, в представлении которых нет и разделителей (т.е. записываемых как машинные команды; разумеется, что в таких операторах аргументы не могут быть выражениями, а лишь простыми переменными). Для этих операторов было бы естественным использовать те же коды, что и для обозначения арифметических и логических операций. Тогда последовательность псевдокоманд, адекватная формуле *xy, будет по исполнении иметь тот же результат, что и вышеприведенный оператор присваивания, причем сокращается (за счет наращивания управляющих функций арифметического устройства) как память, расходуемая на внутреннее представление, так и время выполнения. Такой "гибридный" клон алгоритмических формул может использоваться как система команд формульного процессора, ориентированного на сочетанную эксплуатацию "не формульных" по своей структурной логике, и притом особо ответственных по занимаемой памяти и времени выполнения программ, с обычными.

Реализация операторов-скобок и полускобок
Наиболее простым в исполнении оператором является полускобка Янова, ее реализация процессором сводится к установке соответствующего адреса в счетчик команд. Условная полускобка требует тестирования значения одного из аргументов. Отметим в связи с этим, что обычное ССП в формульном процессоре затребывается лишь в операторах условного перехода, что может быть учтено при его конструировании. Отметим также, при аппаратной поддержке контекстных условных скобок как соответствующий "контекст" в принципе выступает именно ССП, либо либо таковым может быть еще более развитый регистр признаков данного. Загрузка подобного регистра не может выполняться автоматически при каждом выполнении арифметико-логической операции или перезаписи данного, а лишь по специальной команде (см. пояснения к контектным скобкам в Приложении 1).

Принципиально, нет необходимости в аппаратной поддержке средств элиминации оператора перехода, однако она вполне возможна, и, как представляется, не содержит непреодолимых или чрезмерно сложных препятствий. При этом схемная реализация может в различной степени сочетаться с программной поддержкой.

Для организации отработки оператора открывающей цикловой скобки с аргументами использование стека является естественным. При этом стек не освобождается по выполнении оператора, а реформируется добавлением слота под текущее значение цикловой переменной, в который загружается ее начальное значение, и добавлением возвратной адресной ссылки. Эта запись в стеке в дальнейшем используется оператором закрывающей цикловой скобки, и освобождается лишь по выходе из цикла.

Установление связи между парными условными операторными скобками (как и связи между цикловыми скобками для отработки цикла, который по своему условию не может быть выполнен ни одного раза) может в дополнение к схемной поддержке обеспечиваться на уровне транслятора или интерпретатора способом скрытого аргумента, когда фактически оператор открывающей скобки содержит "невидимый" (или невизуализируемый) аргумент - адрес своей парной скобки. Другой способ - схемное или программное (на этапе загрузки) сканирование формулы для поиска парной скобки. Это сканирование также может использовать скрытый аргумент. Схемное сканирование в варианте с использованием скрытого аргумента может инициироваться сигнальным (например нулевым) значением адреса парной скобки и по завершении устанавливать его действительное значение. При принятие схемного сканирования должно учитываться возможное перекрытие областей значений кодов операторов и функций и кодов-определителей псевдокоманд-структурных ограничителей (см. выше), так что из этой области должны быть исключены коды операторов-скобок. Возможны и иные схемы аппаратной реализации условных скобок.

О соответствии алгоритмических формул и их внутреннего представления
В принципе, каждый символ алгоритмической формулы представляется одной псевдокомандой. При этом имя переменной, функции или оператора рассматривается как единый символ, и представляется также единственной (как правило, адресно-литеральной) псевдокомандой. Однако это общее правило допускает некоторые естественные отклонения. Так, как уже отмечалось выше, в "бумажной" или иной предназначенной для восприятия программистом или оператором форме представления, список аргументов оператора целесообразно заключать в алгебраические скобки. Однако во внутреннем представлении соответствующие псевдокоманды излишни. Подобным образом, в гибридном клоне алгоритмических формул операторы-команды (см. выше) при визуализации целесообразно отделять знаком-разделителем операторов, в котором, опять-таки нет необходимости во внутреннем представлении. При аппаратной поддержке контекстных скобок именам операторов C[и E[целесообразно сопоставлять, конечно, по одному коду-ограничителю, а не по два. И тому подобное - такие отклонения внутреннего представления от его визуализации вполне допустимы, если не вызывают каких-либо затруднений при переходе от одной формы к другой.

Замечание об использовании стека
Отличительной особенностью предлагаемой схемы является то, что все ее функции могут поддерживаться на основе единственного общесистемного стека. Это происходит за счет принципиально "скобочной" зависимости в алгоритмических формулах: все что "открывается" внутри данных скобок должно быть закрыто раньше них. Однако при этом отслеживание правильности строения формулы требует фиксации начального для данной фазы состояния указателя стека, с тем, чтобы можно было бы фиксировать нарушение этой границы, идентифицирующие отклонения в строении программы-формулы. Для этого можно автоматически формировать особую запись в стеке, обозначающую данную границу, либо использовать особый регистр в процессоре, либо, наконец, при схемной реализации условных скобок, вводить органическую группу регистров-счетчиков открытых операторных скобок.

Литература.

1. Авторское свидетельство СССР N 1144108.

2. Авторское свидетельство СССР N 209040.

3. Компьютеры. Справочное руководство в трех томах. Под ред. Г. Хелмса. М.: Мир, 1986 г. T.1; Т. 3.

4. В.А. Семененко, Ю.В. Ступин. Справочник по электронной вычислительной технике. М.: Машиностроение, 1993 г.

5. Вычислительные машины с развитыми системами интерпретации. Под ред. В.М. Глушкова. Киев, Наукова Думка, 1970 г.

6. Котов В.Е., Сабельфельд В.К. Теория схем программ, М., Наука, 1991.

7. Криницкий Н. А. и др. Программирование и алгоритмические языки, М., Наука, 1975.

Похожие патенты RU2143726C1

название год авторы номер документа
ФОРМУЛЬНЫЙ ПРОЦЕССОР С РАСШИРЕННЫМ СЛОВОМ СОСТОЯНИЯ 1999
  • Козлов М.К.
RU2149444C1
Процессор, структурно ориентированный на алгоритмический язык 1975
  • Боярченков Михаил Александрович
  • Зонис Владимир Семенович
  • Кабалевский Александр Николаевич
  • Кабанов Николай Дмитриевич
  • Родионов Владимир Владимирович
  • Тарасов Михаил Николаевич
  • Шумей Александр Сергеевич
SU556445A1
Устройство для синтаксически-управляемого перевода 1982
  • Степанов Алексей Николаевич
SU1062721A1
ПРОЦЕССОР 1990
  • Миль А.А.
  • Макушкин С.А.
  • Кляшторный М.Ю.
  • Дмитриев В.Н.
SU1826787A1
Система для трансляции с проблемноориентированного языка 1976
  • Сентюрин Вячеслав Михайлович
SU674028A1
Устройство генерации тестовых последовательностей для контроля оперативных накопителей 1989
  • Трещановский Александр Кириллович
SU1636858A1
Вычислительная система 1989
  • Бабаян Борис Арташесович
  • Волконский Владимир Юрьевич
  • Горштейн Валерий Яковлевич
  • Ким Александр Киирович
  • Назаров Леонид Николаевич
  • Сахин Юлий Хананович
  • Семенихин Сергей Владимирович
SU1777148A1
Управляющая логическая машина 1974
  • Волков Альберт Федорович
  • Краснопольский Николай Николаевич
  • Лебедев Станислав Владимирович
  • Лукашенко Григорий Афанасьевич
  • Лунеко Кирилл Михайлович
  • Сорокин Генри Клавдиевич
  • Харламов Борис Иванович
SU539301A1
Архитектура параллельной вычислительной системы 2016
  • Ермишин Владимир Викторович
RU2644535C2
Вычислительная система 1977
  • Бурцев В.С.
  • Рыжов В.И.
  • Хайлов И.К.
  • Бабаян Б.А.
  • Сахин Ю.Х.
  • Никитин Ю.В.
  • Лаут В.Н.
  • Горштейн В.Я.
  • Назаров Л.Н.
  • Ялунин Е.В.
  • Жеренов А.И.
  • Пентковский В.М.
SU692400A1

Иллюстрации к изобретению RU 2 143 726 C1

Реферат патента 1999 года ФОРМУЛЬНЫЙ ПРОЦЕССОР С КОМАНДОПОДОБНЫМИ ЛОГИЧЕСКИМИ УПРАВЛЯЮЩИМИ ЭЛЕМЕНТАМИ

Изобретение относится к вычислительной технике и может быть использовано в устройствах цифровых вычислительных машин, ориентированных на применение сложных языков программирования. Техническим результатом является повышение человеко-машинного взаимодействия и установление зависимости между логическими элементами программы в процессе ее выполнения. Процессор содержит арифметико-логическое устройство, блок регистров арифметико-логического устройства, устройство управления, блок регистров устройства управления, регистр состояния автомата управления, управляющие схемы для выполнения команды управления. 2 табл., 6 ил.

Формула изобретения RU 2 143 726 C1

Формульный процессор с командоподобными логическими управляющими элементами, содержащий арифметико-логическое устройство, устройство управления, блок регистров арифметико-логического устройства и блок регистров устройства управления, причем устройство управления связано с арифметико-логическим устройством и имеет выход, предназначенный для управления оперативным запоминающим устройством, а блок регистров арифметико-логического устройства и блок регистров устройства управления выполнены с возможностью подключения к информационным каналам оперативного запоминающего устройства, отличающийся тем, что блок регистров устройства управления содержит регистр состояния автомата управления, выполненный с возможностью переустановки своих битов в соответствие с кодом очередной команды программы, подсоединенный к управляющим схемам для выполнения команды управления и подключенный к блоку регистров арифметико-логического устройства.

Документы, цитированные в отчете о поиске Патент 1999 года RU2143726C1

Семененко В.А., Ступин Ю.В
Справочник по электронной вычислительной технике
- М.: Машиностроение, 1993, с.58-63
Процессор 1976
  • Зверев Евгений Михайлович
  • Кокорин Владимир Сергеевич
  • Костин Александр Егорович
  • Шевкопляс Борис Владимирович
SU602949A1
DE 3202757 A1, 04.08.83
US 4084233 A, 11.04.78
Процессор 1989
  • Грездов Геннадий Иванович
  • Космач Юлий Петрович
  • Логвиненко Юрий Павлович
  • Лобок Георгий Александрович
  • Лещенко Николай Михайлович
SU1725224A1
Процессор микропрограмируемой ЭВМ 1989
  • Кричевский Борис Михайлович
  • Любарский Валерий Федорович
  • Якуба Анатолий Александрович
SU1697082A1
US 4562538 A, 31.12.85
US 4554629 A, 19.11.85
Компьютеры
Справочное руководство в трех томах / Под ред
Г.Хелмса
- М.: Мир, 1986, т.1, с.42-44, т.3, с.65-137, 300-303
Вычислительные машины с развитыми системами интерпретации / Под ред
В.М
Глушкова
- Киев: Наукова Думка, 1970, с.100-115
Устройство для аппаратурной трансляции 1983
  • Мельников Владимир Алексеевич
  • Краснощеков Сергей Николаевич
SU1144108A1
УСТРОЙСТВО УПРАВЛЕНИЯ ЦИФРОВОЙ ВЫЧИСЛИТЕЛЬНОЙМАШИНЫ 0
  • А. А. Барабанов, Л. А. Калиниченко, С. Д. Михновский, Л. Рабинович А. М. Самофалова
  • Институт Кибернетики Усср
SU209040A1

RU 2 143 726 C1

Авторы

Козлов М.К.

Даты

1999-12-27Публикация

1997-07-15Подача