Научная статья на тему 'АКТИВНЫЙ АППАРАТНЫЙ СТЕК ПРОЦЕССОРА'

АКТИВНЫЙ АППАРАТНЫЙ СТЕК ПРОЦЕССОРА Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
173
35
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
МИКРОПРОЦЕССОРЫ / МИКРОКОНТРОЛЛЕРЫ / АППАРАТНЫЙ СТЕК / RISC-АРХИТЕКТУРА / ПОВЫШЕНИЕ ПРОИЗВОДИТЕЛЬНОСТИ / БЫСТРОДЕЙСТВИЕ / MICROPROCESSORS / MICROCONTROLLERS / SOFTWARE STACK / RISC-ARCHITECTURE / PERFORMANCE INCREASE / SPEED

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Семёнов Андрей Андреевич, Усанов Дмитрий Александрович, Дронкин Алексей Станиславович

При разработке высокопроизводительных микропроцессоров и микроконтроллеров заимствуются характерные черты RISC-архитектуры. Сложные операции, к которым относятся вызовы подпрограмм и обслуживание прерываний, затруднительно реализовать аппаратно за одинаковый со всеми остальными командами интервал времени. Такие операции при выполнении предполагают запись значения адреса перехода в регистр программного счетчика процессора с одновременным сохранением адреса возврата из подпрограммы. В работе предложена специфическая конструкция аппаратного стека процессора, позволяющая выполнять сложные машинные операции за один такт. Установлено, что требуемый технический результат может быть достигнут введением в конструкцию процессора N идентичных программных счетчиков, фактически являющихся аналогами регистров стека. Показано, что указатель стека с логикой выбора регистра, подключенной к блоку программных счетчиков, активирует следующий программный счетчик при вызове подпрограммы или обслуживании прерывания, в то время как предыдущий счетчик сохраняет адрес возврата из подпрограммы. В результате процедуры сохранения адреса возврата из программного счетчика в регистры стека или ячейки оперативной памяти и восстановления его состояния из стека исключены. Это позволяет выполнить вызов подпрограммы или переход по вектору прерывания и осуществить возврат в точку вызова за один такт задающего генератора. Вследствие этого становится возможным увеличить быстродействие процессора при выполнении подобных операций на 30-50 %, а также повысить производительность в целом без увеличения тактовой частоты.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

ACTIVE PROCESSOR SOFTWARE STACK

The problem of improving the performance of microprocessors and microcontrollers is solved by the production technology improvement as well as further development of their architecture. In development of the up-to-date high performance microprocessors and microcontrollers the specific feutures of the RISC-architecture are borrowed complicated operations, which include the calls of the subprograms and maintenance of breaks, are difficult to be realized from the point of view of the software during an equal to all the rest time interval commands. While executing, such operations assume writing down the addresses of transfer to the register of the program counter of the processor with simultaneous storage of the return register from the processor program counter. In the work a specific construction of the processor software stack, allowing executing complicated machine operations during one step has been proposed. It has been determined that the required technical result can be achieved by introducing into the processor construction the N identical software counters, in fact being the analogs of the stack registers. It has been shown that the stack indicator with the logic of the register choice, which is connected with the block of the program counters activates while calling a subprogram or maintaining the break the next counter at the time when the previous counter stores the return address from the subprogram. As the result the procedures of storing the address and the recovery of its state from the stack are excluded. This enables the subprogram call or the transfer by the break vector and execution of the return to the call point during one step of the setting generator. Due to this it becomes possible to increase the processor speed while executing 30-50% of similar operations and to improve its performance as a whole without increasing the clock frequency.

Текст научной работы на тему «АКТИВНЫЙ АППАРАТНЫЙ СТЕК ПРОЦЕССОРА»

ЭЛЕМЕНТЫ ИНТЕГРАЛЬНОЙ ЭЛЕКТРОНИКИ INTEGRATED ELECTRONICS ELEMENTS

УДК 004.314.6 DOI: 10.24151/1561-5405-2019-24-3-219-229

Активный аппаратный стек процессора

А.А. Семёнов, Д.А. Усанов, А.С. Дронкин

Саратовский национальный исследовательский государственный университет имени Н.Г. Чернышевского, г. Саратов, Россия

semenovaa@info.sgu.ru

При разработке высокопроизводительных микропроцессоров и микроконтроллеров заимствуются характерные черты КВС-архитектуры. Сложные операции, к которым относятся вызовы подпрограмм и обслуживание прерываний, затруднительно реализовать аппаратно за одинаковый со всеми остальными командами интервал времени. Такие операции при выполнении предполагают запись значения адреса перехода в регистр программного счетчика процессора с одновременным сохранением адреса возврата из подпрограммы. В работе предложена специфическая конструкция аппаратного стека процессора, позволяющая выполнять сложные машинные операции за один такт. Установлено, что требуемый технический результат может быть достигнут введением в конструкцию процессора N идентичных программных счетчиков, фактически являющихся аналогами регистров стека. Показано, что указатель стека с логикой выбора регистра, подключенной к блоку программных счетчиков, активирует следующий программный счетчик при вызове подпрограммы или обслуживании прерывания, в то время как предыдущий счетчик сохраняет адрес возврата из подпрограммы. В результате процедуры сохранения адреса возврата из программного счетчика в регистры стека или ячейки оперативной памяти и восстановления его состояния из стека исключены. Это позволяет выполнить вызов подпрограммы или переход по вектору прерывания и осуществить возврат в точку вызова за один такт задающего генератора. Вследствие этого становится возможным увеличить быстродействие процессора при выполнении подобных операций на 30-50 %, а также повысить производительность в целом без увеличения тактовой частоты.

Ключевые слова: микропроцессоры; микроконтроллеры; аппаратный стек; ИБС-архитектура; повышение производительности; быстродействие

© А.А. Семёнов, Д.А. Усанов, А.С. Дронкин, 2019

Для цитирования: Семёнов А.А., Усанов Д.А., Дронкин А.С. Активный аппаратный стек процессора // Изв. вузов. Электроника. - 2019. - Т. 24. - № 3. -С. 219-229. DOI: 10.24151/1561-5405-2019-24-3-219-229

Active Processor Software Stack

A.A. Semenov, D-A. Usanov, A.S. Dronkin

Saratov State University, Saratov, Russia semenovaa@info.sgu.ru

Abstract: The problem of improving the performance of microprocessors and microcontrollers is solved by the production technology improvement as well as further development of their architecture. In development of the up-to-date high performance microprocessors and microcontrollers the specific feutures of the RISC-architecture are borrowed complicated operations, which include the calls of the subprograms and maintenance of breaks, are difficult to be realized from the point of view of the software during an equal to all the rest time interval commands. While executing, such operations assume writing down the addresses of transfer to the register of the program counter of the processor with simultaneous storage of the return register from the processor program counter. In the work a specific construction of the processor software stack, allowing executing complicated machine operations during one step has been proposed. It has been determined that the required technical result can be achieved by introducing into the processor construction the N identical software counters, in fact being the analogs of the stack registers. It has been shown that the stack indicator with the logic of the register choice, which is connected with the block of the program counters activates while calling a subprogram or maintaining the break the next counter at the time when the previous counter stores the return address from the subprogram. As the result the procedures of storing the address and the recovery of its state from the stack are excluded. This enables the subprogram call or the transfer by the break vector and execution of the return to the call point during one step of the setting generator. Due to this it becomes possible to increase the processor speed while executing 30-50% of similar operations and to improve its performance as a whole without increasing the clock frequency.

Keywords: microprocessors; microcontrollers; software stack; RISC-architecture; performance increase, speed

For citation: Semenov A.A., Usanov D.A., Dronkin A.S. Active processor software stack. Proc. Univ. Electronics, 2019, vol. 24, no. 3, pp. 219-229. DOI: 10.24151/1561-5405-2019-24-3-219-229

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

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

Архитектура RISC (Reduced Instruction Set Computer - компьютер с сокращенным набором команд) является основой современных высокопроизводительных микропроцессоров и микроконтроллеров. Данная архитектура предполагает, что любая операция должна выполняться за один такт; система команд должна содержать минимальное количество наиболее часто используемых команд одинаковой длины; операции обработки данных должны выполняться только в формате регистр-регистр, а обмен между регистрами и памятью - только командами загрузки-записи [3].

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

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

Алгоритмы вызова подпрограмм и обслуживания прерываний. К числу сложных операций относятся вызовы подпрограмм и обслуживание прерываний. При их выполнении предполагается переход на заданный адрес с одновременным сохранением адреса возврата из подпрограммы, т. е. запись значения адреса перехода в регистр программного счетчика (Program Counter, PC) процессора с сохранением текущего значения PC в стеке. Это сложно реализовать аппаратно за одинаковый с остальными командами интервал времени, поскольку число микроопераций, требующееся для выполнения указанных команд, сравнительно больше.

В общем случае стек - это структура данных, представляющая собой список элементов, организованных по принципу последним пришел - первым вышел (Last In -First Out, LIFO). В рамках данного технического решения термин «стек» употребляется применительно к области памяти процессора, организованной по принципу магазина в огнестрельном оружии - стрельба начнется с патрона, заряженного в магазин последним. Память процессора обеспечивает сохранение адресов возврата при вызове подпрограмм и обслуживании прерываний для последующей передачи управления в точку вызова подпрограммы или на адрес, перед которым был выполнен переход к процедуре обслуживания прерывания.

В микропроцессорах принстонской архитектуры стек обычно представляет собой область оперативной памяти, специально выделяемой для временного хранения данных программы. Адрес элемента, записанного в стек последним, называется вершиной стека. Адрес вершины стека хранится в регистре - указателе стека (Stack Pointer, SP).

При выполнении операции вызова подпрограммы (или возникновении прерывания) в таких микропроцессорах приходится считывать адрес перехода во внутренние регистры временного хранения, выводить значение SP на шину адреса для сохранения адреса возврата в оперативной памяти, сдвигать вершину стека и лишь после этого заносить адрес перехода в программный счетчик. При выполнении операции возврата из подпрограммы (или возврата из прерывания) значение SP также выводится на шину адреса для чтения адреса возврата из области оперативной памяти, отведенной под стек. Адрес возврата считывается во внутренние регистры временного хранения, вершина стека изменяет свое положение, а адрес возврата переписывается в программный счетчик [4].

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

Очевидно, что размещение ячеек стека на кристалле микропроцессора или микроконтроллера позволит ускорить данную процедуру. В случае гарвардской архитектуры, по которой выполняется значительное число микроконтроллеров, такое решение может быть единственным из-за невозможности размещения области стека в памяти программ. Подобное техническое решение характерно для микроконтроллеров фирмы Microchip, которые содержат в общем случае #-уровневый аппаратный стек на кристалле. В конкретном аппаратном исполнении микроконтроллера Microchip PIC18(L)F1XK22 стек адресов возврата (Return Address Stack) представляет собой отдельную дополнительную область памяти, содержащую 31 регистр (31-Level Stack) и организованную по магазинному типу. Регистр (ячейка стека), в который производится запись или из которого производится чтение, определяется специальным указателем стека с логикой управления стеком [5]. Область стека этого микроконтроллера не принадлежит ни к программной области, ни к области данных. Текущее значение программного счетчика пересылается в стек, когда выполняется команда вызова подпрограммы или проводится обработка прерывания. При этом указатель стека увеличивается на единицу и указывает на ячейку стека, в которую заносится содержимое PC. В программный счетчик заносится начальный адрес выполняемой процедуры обработки прерывания или подпрограммы. При выполнении процедуры возврата из подпрограммы в программный счетчик загружается содержимое текущей ячейки стека, а указатель стека уменьшается на единицу.

31-уровневый аппаратный стек микроконтроллера Microchip PIC18(L)F1XK224 обеспечивает глубину вложений вызовов подпрограмм до 31 с последующим корректным возвратом. При переполнении ограниченного аппаратного стека указатель стека снова указывает на исходную ячейку и микроконтроллер начнет запись в стек «по кольцу», стирая предыдущее содержимое стека. При извлечении может наблюдаться аналогичный процесс: читается содержимое «дна» стека, а указатель перескакивает на его «вершину». В качестве указателя аппаратного стека обычно используется двоичный счетчик соответствующей разрядности с входом установки в начальное состояние по

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

Активный аппаратный стек процессора. Оригинальная конструкция узла программного счетчика работает по принципу стека (или по магазинному принципу), но позволяет в отличие от существующих известных решений выполнять операции перехода к подпрограмме или к процедуре обслуживания прерывания. Также возможен возврат из них за один такт при соблюдении схемотехнической простоты процессора. Требуемый технический результат достигнут введением в конструкцию процессора (микропроцессора, микроконтроллера) N идентичных программных счетчиков. Процессор содержит программный счетчик и характерные узлы реализации аппаратного стека: указатель стека с логикой управления стеком и регистры стека. Программные счетчики фактически заменяют регистры стека, которые из конструкции исключаются. Указатель стека с логикой управления стеком подключается к блоку N+1 программных счетчиков для выбора активного в данный момент времени программного счетчика (рис.1) [6].

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

Рис.1. Активный аппаратный стек процессора: блок-схема IDCU - устройство управления и синхронизации; SP - указатель стека; PC FILE - организованный по магазинному типу файл программных счетчиков; IR - регистр команд; ADDR BUFF - буфер адреса; MEMORY - запоминающее устройство; ADDR - адресные линии; BADDR - буферированные адресные линии; DATA BUS - шина данных; INSTRUCTION CODE - код операции (инструкция); ALU - арифметико-логическое

устройство [6]

Fig.1. Processor active hardware call stack: block diagram IDCU - Instruction Decode and Control Unit; SP - Stack Pointer; PC FILE - Program Counters File; IR - Instruction Register; ADDR BUFF - Address Buffer; MEMORY - storage device; ADDR - Address lines; BADDR - Buffered Address lines; DATA BUS - Data lines; INSTRUCTION CODE - operation code (instruction); ALU - Arithmetic

Logic Unit [6]

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

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

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

Рассмотренное техническое решение по функциональности, конструкции и принципам работы аналогично типичному аппаратному стеку процессора (микропроцессора, микроконтроллера). Отличие заключается в том, что организованные по магазинному принципу программные счетчики не только выполняют пассивную функцию хранения адреса возврата из подпрограммы, но и играют роль активного текущего указателя инструкций в памяти. Поэтому данное техническое решение названо активным аппаратным стеком процессора [6].

Реализация активного аппаратного стека процессора. Оригинальное техническое решение реализовано в процессе разработки микроконтроллера на ПЛИС EPM3256ATC144-10N [7]. Узел активного аппаратного стека (рис. 2) обеспечивал глубину вложений вызовов подпрограмм до 15. Это обусловлено применением в конструкции модели счетчика DD7 (функционального аналога 74193 из библиотеки элементов программного обеспечения фирмы ALTERA [8]), выполняющего функцию указателя стека. Наличие у данной модели счетчика входов инкремента и декремента позволило реализовать микропрограммные операции инкремента и декремента SP. Счетчики такого типа являются синхронными и позволяют при необходимости увеличения глубины вложения вызовов подпрограмм с минимальной задержкой, примерно равной задержке срабатывания одного триггера, осуществить наращивание разрядности указателя стека. В данном случае это определяется емкостью счетчика - коэффициентом пересчета при каскадировании. Логика управления стеком реализована на основе двух дешифраторов типа «код-позиция» DD8 и DD9 (функциональных аналогов 74138), подключенных к выходам счетчика-указателя стека DD7. Образуя дешифратор 4-16, элементы DD8 и DD9 позволяют низким логическим уровнем на своих выходах активизировать один из элементов 16-разрядного стека: SP0...SP15. Каждый из этих элементов фактически представляет собой 12-разрядный программный счетчик, образованный каскадированием элементов DD2, DD3, DD4 (функциональные аналоги 74193). Триста-бильные шинные формирователи DD5, DD6.1 (функциональные аналоги 74LS244), подключенные к выходам каждого из 12-разрядных программных счетчиков, позволяют отключать неактивные счетчики от входов буферного регистра адреса и подключать

IDCU

Рис. 2. Схема электрическая принципиальная активного аппаратного стека процессора Fig.2. Processor active hardware call stack schematic diagram

соответственно активный счетчик по низкому уровню на одном из выходов дешифраторов DD8 и DD9 логики управления активным стеком. Элемент DD1.4 инвертирует активный низкий логический уровень с выхода дешифратора логики управления стеком. Высоким логическим уровнем данный элемент разрешает прохождение управляющих сигналов инкремента и декремента (INC PC, DEC PC), а также параллельной загрузки (PE) на входы выбранного активного программного счетчика через вентили DD1.1-DD1.3 соответственно. Аналогичные вентили в остальных программных счетчиках, которые неактивны в данный момент, блокируют прохождение этих управляю-

щих сигналов, обеспечивая режим хранения значения в счетчиках. Входы сброса (RES) всех элементов 16-разрядного стека SP0...SP15 объединены, что позволяет в момент начальной инициализации процессора привести все их 12-разрядные программные счетчики к исходному нулевому значению сигналом RES PC. Процедура начальной инициализации процессора также приводит к нулевому значению счетчик-указатель стека DD7 по входу R сигналом RES SP, тем самым выбирается активный узел SP0 16-разрядного активного стека.

В процессе линейного выполнения программы содержимое программного счетчика DD2-DD4 активного узла SP0 переписывается через прозрачные тристабильные шинные формирователи DD5, DD6.1 в буфер адреса ADDR BUFF во время цикла выборки кода операции (FETCH) и увеличивается на единицу по сигналу INC PC, проходящему через прозрачный вентиль DD1.1. К началу цикла исполнения текущей инструкции программный счетчик DD2-DD4 указывает на следующую команду. Этот процесс повторяется до тех пор, пока не возникнет сигнал прерывания INT или не встретится код вызова подпрограммы. В этом случае устройство управления и синхронизации IDCU выдает активный сигнал INC SP по фронту тактового импульса CLK. Это увеличивает на единицу содержимое счетчика-указателя стека DD7. Логика управления стеком, реализованная на основе двух дешифраторов DD8 и DD9 и подключенная к выходам указателя стека DD7, низким логическим уровнем на своем выходе с номером, соответствующим содержимому указателя стека, активизирует следующий элементов 16-разрядного стека - SP1. В это время элемент SP0, который до этого был активным, переводится в неактивное состояние хранения записанного в нем адреса возврата. По спаду тактового импульса CLK устройство управления и синхронизации IDCU выдает 12-разрядному программному счетчику активного в данный момент элемента стека SP1 управляющий сигнал разрешения параллельной загрузки PE. По активному уровню управляющего сигнала происходит запись адреса перехода с шины данных DATA BUS через входы D0 ... D11 во внутренние триггеры счетчиков. Адрес перехода к подпрограмме через прозрачные тристабильные шинные формирователи выдается в буфер адреса ADDR BUFF. После этого программа выполняется линейно, так же как это происходило при активном элементе стека SP0. В случае нового вызова подпрограммы указатель стека DD7 вновь увеличится на единицу, а логика управления стеком переведет в неактивное состояние хранения записанного адреса возврата текущий элемент стека SP1 и активизирует следующий элемент стека SP2 и т.д. В случае возврата из подпрограммы или процедуры обслуживания прерывания устройство управления и синхронизации IDCU выдает активный сигнал DEC SP по фронту тактового импульса CLK. Это уменьшает содержимое счетчика-указателя стека DD7 на единицу. Логика управления стеком, подключенная к выходам указателя стека DD7 низким уровнем на выходе, переводит в активное состояние предыдущий элемент стека (SP0, если был активен SP1). Поскольку предыдущий элемент стека содержит адрес возврата, то исполнение программы продолжится с адреса, перед которым была вызвана подпрограмма или случилось прерывание.

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

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

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

Заключение. Представленное оригинальное техническое решение при соблюдении схемотехнической простоты процессора позволяет повысить его быстродействие на 30-50 %. При этом выполняются операции вызова подпрограмм или обслуживания прерывания, а также возврата из них. Количество тактов, необходимых для аппаратной реализации таких операций, уменьшается, поскольку из их алгоритма исключаются процедуры сохранения адреса возврата из программного счетчика в стек и его извлечения из стека в программный счетчик.

В распространенных микропроцессорных системах преобладающая часть аппаратных средств обслуживается по прерываниям, а по имеющейся статистике [9, 10] инструкции вызова подпрограмм и возврата из них могут составлять от 3 до 7% кода программ. С учетом этого представленное техническое решение позволяет повысить производительность процессора в целом без увеличения тактовой частоты.

Литература

1. Айзек Р. Будущее технологии КМОП // Открытые системы. СУБД. - 2000. - №10. - С. 8-18.

2. Цветов В. Развитие классической микроэлектроники. Ожидаемые физико-технические пределы // Электроника: наука, технология, бизнес. - 2010. - №3. - С. 2-6.

3. Цилькер Б.Я., Орлов С.А. Организация ЭВМ и систем: учебник для вузов. - 2-е изд. - СПб.: Питер, 2011. - 688 с.

4. Stallings W. Computer organization and architecture: designing for performance. - 10th Ed. - Pearson Education, Inc., 2016. - 864 p.

5. Microchip PIC18(L)F1XK22 Data Sheet, 20-Pin Flash Microcontrollers with nanoWatt XLP Technology. © 2009-2011 Microchip Technology Incorporated. DS41365E. -

URL: http://ww1.microchip.com/downloads/en/DeviceDoc/40001365F.pdf (дата обращения: 03.01.2019).

6. Семенов А.А., Усанов Д.А. Активный аппаратный стек процессора // Патент России № 2530285. 2014. Бюл. № 28.

7. ALTERA. MAX 3000A Programmable Logic Device Family Data Sheet. -

URL: https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/ds/m3000a.pdf (дата обращения: 10.11.2018).

8. MAX+PLUS II Software. - URL: https://www.intel.com/content/www/us/en/programmable/ support/support-resources/download/legacy/maxplus2/mp2-index.html (дата обращения: 10.11.2018).

9. Analysis of x86 Instruction Set Usage for DOS/Windows Applications and Its Implication on Superscalar Design. - URL: https://www33.online-convert.com/dl/web1/download-file/64c3379f-38e2-41f7-a54b-c057a3f8ec0dZab7db4fd488e47630671efa39f818d106a06.pdf (дата обращения: 03.01.2019).

10. x86 Machine Code Statistics. - URL: https://www.strchr.com/x86_machine_code_statistics (дата обращения: 03.01.2019).

Поступила в редакцию 07.12.2018 г.; после доработки 25.02.2019 г.; принята к публикации 19.03.2019 г.

Семёнов Андрей Андреевич - доктор физико-математических наук, профессор кафедры физики твердого тела Саратовского национального исследовательского государственного университета имени Н.Г. Чернышевского (Россия, 410012, г. Саратов, ул. Астраханская, д. 83, корп. 3), semenovaa@info.sgu.ru

Усанов Дмитрий Александрович - доктор физико-математических наук, профессор, заслуженный деятель науки Российской Федерации, заведующий кафедрой физики твердого тела Саратовского национального исследовательского государственного университета имени Н.Г. Чернышевского (Россия, 410012, г. Саратов, ул. Астраханская, д. 83, корп. 3), usanovda@info.sgu.ru

Дронкин Алексей Станиславович - магистрант кафедры физики твердого тела Саратовского национального исследовательского государственного университета имени Н.Г. Чернышевского (Россия, 410012, г. Саратов, ул. Астраханская, д. 83, корп. 3), dronkin.alexei@mail.ru

References

1. Isaac R.D. The future of CMOS technology. IBM Technical Journals Journal of Research and Development. Special Issue = Directions in information technology, 2000, vol. 44, no. 3, pp. 369-378. (In Russian).

2. Cvetov V. The development of classical microelectronics. Expected Physical and Technical Limits. Elektronika: Nauka, Tekhnologiya, Biznes = Electronics: Science, Technology, Business, 2010, no. 3, pp. 2-6. (In Russian).

3. Cil'ker B.Ya., S.A. Orlov. Computer Organization and Systems: a textbook. 2-nd ed. Saint-Petersburg, Piter Publ., 2011. 688 p. (In Russian).

4. Stallings W. Computer Organization and Architecture: Designing for Performance. 10th Edition. Pearson Education, Inc., 2016. 864 p.

5. Microchip PIC18(L)F1XK22 Data Sheet, 20-Pin Flash Microcontrollers with nanoWattXLP Technology. © 2009-2011 Microchip Technology Incorporated. DS41365E. Available at: http://ww1.microchip.com/ downloads/en/DeviceDoc/40001365F.pdf (accessed: 10.11.2018).

6. Semenov A.A., Usanov D.A. Processor active hardware call stack. Patent RU2530285C1. 2014. Bulletin № 28. (In Russian).

7. ALTERA. MAX 3000A Programmable Logic Device Family Data Sheet. Available at: https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/ds/m3000a.pdf (accessed: 10.11.2018).

8. MAX+PLUS II Software. Available at: https://www.intel.com/content/www/us/en/programmable/ support/support-resources/download/legacy/maxplus2/mp2-index.html (accessed:10.11.2018).

9. Analysis of x86 Instruction Set Usage for DOS/Windows Applications and Its Implication on Superscalar Design. Available at: https://www33.online-convert.com/dl/web1/download-file/64c3379f-38e2-41f7-a54b-c057a3f8ec0dZab7db4fd488e47630671efa39f818d106a06.pdf (accessed:3.01.2019).

10. x86 Machine Code Statistics. Available at: https://www.strchr.com/x86_machine_code_statistics (accessed: 03.01.2019).

Received 07.12.2018; Revised 25.02.2019; Accepted 19.03.2019. Information about the authors:

Andrey A. Semenov - Dr. Sci. (Phys.-Math.), Prof. of the Solid State Physics Department, Saratov State University (Russia, 410012, Saratov, Astrahanskaya st. 83, bld. 3), semenovaa@info.sgu.ru

Dmitry A. Usanov - Dr. Sci. (Phys.-Math.), Prof., Honored Scientist of the Russian Federation, Head of the Solid State Physics Department, Saratov State University (Russia, 410012, Saratov, Astrahanskaya st. 83, bld. 3), usanovda@info.sgu.ru

Alexey S. Dronkin - Master Degree Student of the Solid State Physics Department, Saratov State University (Russia, 410012, Saratov, Astrahanskaya st. 83, bld. 3), dronkin.alexei@mail.ru

i Надоели баннеры? Вы всегда можете отключить рекламу.